Built motion from commit (unavailable).|2.2.3 2.2.3
authorAndrea Bianco <andrea.bianco@xcally.com>
Fri, 9 Aug 2019 16:04:09 +0000 (18:04 +0200)
committerAndrea Bianco <andrea.bianco@xcally.com>
Fri, 9 Aug 2019 16:04:09 +0000 (18:04 +0200)
1034 files changed:
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/login/i18n/lv.json
public/app/main/apps/analytics/i18n/lv.json
public/app/main/apps/callysquare/i18n/lv.json
public/app/main/apps/chat/i18n/lv.json
public/app/main/apps/contactmanager/i18n/lv.json
public/app/main/apps/dashboards/i18n/lv.json
public/app/main/apps/fax/i18n/lv.json
public/app/main/apps/integrations/i18n/lv.json
public/app/main/apps/jscripty/i18n/lv.json
public/app/main/apps/mail/i18n/lv.json
public/app/main/apps/motiondialer/i18n/lv.json
public/app/main/apps/openchannel/i18n/lv.json
public/app/main/apps/settings/i18n/lv.json
public/app/main/apps/sms/i18n/lv.json
public/app/main/apps/staff/i18n/lv.json
public/app/main/apps/tools/i18n/lv.json
public/app/main/apps/voice/i18n/lv.json
public/app/quick-panel/i18n/lv.json
public/app/reset/i18n/lv.json
public/app/toolbar/i18n/lv.json
public/index.html
public/scripts/app.c8387533.js [moved from public/scripts/app.e5ed3624.js with 55% similarity]
public/styles/app.59a8ca15.css [moved from public/styles/app.b6d79618.css with 72% 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/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/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/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/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/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/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/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/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/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/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/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/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/index.js
server/migrations/2.2.3.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/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.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/freshdesk.js
server/services/ami/rpc/integrations/salesforce.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/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/freshdesk.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.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/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/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/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/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/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 5254ad3..eb00a7f 100644 (file)
@@ -1 +1 @@
-define({\r  "name": "xCALLY Motion API",\r  "version": "2.2.2",\r  "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.",\r  "title": "xCALLY MOTION API",\r  "header": {\r    "title": "Introduction",\r    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre><code class=\"language-sh\">GET /api/users\n</code></pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre><code class=\"language-sh\">https://motion.xcally.com/api/users\n</code></pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre><code class=\"language-sh\">GET  /api/users/{id}\n</code></pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or a xCALLY API token.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre><code class=\"language-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</code></pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre><code class=\"language-sh\">curl -H &quot;Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo&quot; https://motion.xcally.com/api/users\n</code></pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"\r  },\r  "template": {\r    "withGenerator": false,\r    "withCompare": false,\r    "forceLanguage": "en"\r  },\r  "sampleUrl": false,\r  "defaultVersion": "0.0.0",\r  "apidoc": "0.3.0",\r  "generator": {\r    "name": "apidoc",\r    "time": "2019-08-07T16:31:08.020Z",\r    "url": "http://apidocjs.com",\r    "version": "0.17.7"\r  }\r});
+define({\r  "name": "xCALLY Motion API",\r  "version": "2.2.3",\r  "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.",\r  "title": "xCALLY MOTION API",\r  "header": {\r    "title": "Introduction",\r    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre><code class=\"language-sh\">GET /api/users\n</code></pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre><code class=\"language-sh\">https://motion.xcally.com/api/users\n</code></pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre><code class=\"language-sh\">GET  /api/users/{id}\n</code></pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or a xCALLY API token.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre><code class=\"language-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</code></pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre><code class=\"language-sh\">curl -H &quot;Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo&quot; https://motion.xcally.com/api/users\n</code></pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"\r  },\r  "template": {\r    "withGenerator": false,\r    "withCompare": false,\r    "forceLanguage": "en"\r  },\r  "sampleUrl": false,\r  "defaultVersion": "0.0.0",\r  "apidoc": "0.3.0",\r  "generator": {\r    "name": "apidoc",\r    "time": "2019-08-09T15:58:58.045Z",\r    "url": "http://apidocjs.com",\r    "version": "0.17.7"\r  }\r});
index d9af0d6..4f0a2f0 100644 (file)
@@ -1 +1 @@
-{\r  "name": "xCALLY Motion API",\r  "version": "2.2.2",\r  "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.",\r  "title": "xCALLY MOTION API",\r  "header": {\r    "title": "Introduction",\r    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre><code class=\"language-sh\">GET /api/users\n</code></pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre><code class=\"language-sh\">https://motion.xcally.com/api/users\n</code></pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre><code class=\"language-sh\">GET  /api/users/{id}\n</code></pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or a xCALLY API token.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre><code class=\"language-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</code></pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre><code class=\"language-sh\">curl -H &quot;Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo&quot; https://motion.xcally.com/api/users\n</code></pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"\r  },\r  "template": {\r    "withGenerator": false,\r    "withCompare": false,\r    "forceLanguage": "en"\r  },\r  "sampleUrl": false,\r  "defaultVersion": "0.0.0",\r  "apidoc": "0.3.0",\r  "generator": {\r    "name": "apidoc",\r    "time": "2019-08-07T16:31:08.020Z",\r    "url": "http://apidocjs.com",\r    "version": "0.17.7"\r  }\r}
+{\r  "name": "xCALLY Motion API",\r  "version": "2.2.3",\r  "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.",\r  "title": "xCALLY MOTION API",\r  "header": {\r    "title": "Introduction",\r    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre><code class=\"language-sh\">GET /api/users\n</code></pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre><code class=\"language-sh\">https://motion.xcally.com/api/users\n</code></pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre><code class=\"language-sh\">GET  /api/users/{id}\n</code></pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or a xCALLY API token.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre><code class=\"language-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</code></pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre><code class=\"language-sh\">curl -H &quot;Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo&quot; https://motion.xcally.com/api/users\n</code></pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"\r  },\r  "template": {\r    "withGenerator": false,\r    "withCompare": false,\r    "forceLanguage": "en"\r  },\r  "sampleUrl": false,\r  "defaultVersion": "0.0.0",\r  "apidoc": "0.3.0",\r  "generator": {\r    "name": "apidoc",\r    "time": "2019-08-09T15:58:58.045Z",\r    "url": "http://apidocjs.com",\r    "version": "0.17.7"\r  }\r}
index 6ef44a7..ae8772f 100644 (file)
@@ -1,6 +1,6 @@
 {
     "name": "motion",
-    "version": "2.2.2",
+    "version": "2.2.3",
     "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
     "main": "server/app.js",
     "engines": {
         "Innocenzo Biondo <innocenzo.biondo@xcally.com>",
         "Massimiliano Bungaro <massimiliano.bungaro@xcally.com>",
         "Andrea Bianco <andrea.bianco@xcally.com>",
-        "Fabio Lodato <fabio.lodato@xcally.com>"
+        "Fabio Lodato <fabio.lodato@xcally.com>",
+        "Andrea Cuccaro <andrea.cuccaro@xcally.com>",
+        "Donatella Soldi <donatella.soldi@xcally.com>",
+        "Afnan Imtiaz <afnan.imtiaz@xcally.com>"
     ],
     "private": true,
     "license": "EULA",
index 7b79692..5f573fa 100644 (file)
@@ -6,7 +6,7 @@
             "PASSWORD_REQUIRED": "Obligāts lauks",
             "USERNAME_REQUIRED": "Obligāts lauks"
         },
-        "TITLE": "Piesakieties savā kontā",
+        "TITLE": "Pieteikšanās sistēmā",
         "EMAIL": "E-pasts",
         "USERNAME": "Lietotājvārds",
         "PASSWORD": "Parole",
@@ -14,8 +14,8 @@
         "FORGOT_PASSWORD": "Aizmirsāt paroli?",
         "LOG_IN": "PIESLĒGTIES",
         "OR": "VAI",
-        "WITH_GOOGLE": "Piesakieties ar \"Google\" kontu",
-        "WITH_FACEBOOK": "Piesakieties ar \"Facebook\" kontu",
+        "WITH_GOOGLE": "Pieteikšanās ar Google",
+        "WITH_FACEBOOK": "Pieteikšanās ar Facebook",
         "DONT_HAVE_ACCOUNT": "Nav konta?",
         "CREATE_ACCOUNT": "Izveidot kontu",
         "CANCEL": "Atcelt",
index 4020558..446d78b 100644 (file)
@@ -40,7 +40,7 @@
         "COPY_REPORT": "Kopēt pārskatu",
         "PREVIEW_REPORT": "Priekšskatījuma pārskats",
         "RUN_REPORT": "Palaist pārskatu",
-        "DOWNLOAD_JSON_REPORT": "Eksportēt <i>JSON</i> pārskatu",
+        "DOWNLOAD_JSON_REPORT": "Eksportēt JSON pārskatu",
         "EDIT_REPORT": "Rediģēt pārskatu",
         "DELETE_REPORT": "Dzēst pārskatu",
         "CREATE": "Izveidot mapi",
         "CONDITION": "Nosacījums",
         "OPERATOR": "Operators",
         "GROUP": "Grupa",
-        "COLUMN": "Sleja",
+        "COLUMN": "Kolonna",
         "VALUE": "Vērtība",
         "PREVIEW": "Priekšskatījums",
         "LIMITED_RESULT": "*Ierobežoti rezultāti",
-        "NO_DATA": "Nav datu rezultātu",
+        "NO_DATA": "Nav datu",
         "CONDITIONS": "Nosacījumi",
         "ALIAS": "Segvārds",
         "FUNCTION": "Funkcija",
@@ -79,7 +79,7 @@
         "EDIT_EXTRACTEDREPORT": "Rediģēt iegūto pārskatu",
         "DOWNLOAD_EXTRACTEDREPORT": "Lejupielādēt iegūto pārskatu",
         "PAGE": "Lappuse",
-        "ROWSPERPAGE": "Rindas lappusē",
+        "ROWSPERPAGE": "Ieraksti lappusē",
         "OF": "no",
         "DELETE": "Dzēst",
         "REPORTNAME": "Pārskata nosaukums",
index 5f2246a..06ef27b 100644 (file)
@@ -3,7 +3,7 @@
         "SESTEKASR": "Sestek ASR",
         "SESTEKNDA": "Sestek NDA",
         "SESTEKTTS": "Sestek TTS",
-        "AWSLEX": "\"Amazon Lex\"",
+        "AWSLEX": "Amazon Lex",
         "ERRORS": {
             "NAME_REQUIRED": "Obligāts lauks",
             "DSN_REQUIRED": "Obligāts lauks",
         },
         "SMS_ACCOUNT_ID": "Konts",
         "NAME": "Nosaukums",
-        "ODBC": "<i>ODBC</i>",
-        "TEST_ODBC": "Pārbaudīt <i>ODBC</i>",
+        "ODBC": "ODBC",
+        "TEST_ODBC": "Pārbaudīt ODBC",
         "SEARCH_FOR_ANYONE": "Meklēt",
         "BACK": "Atpakaļ",
         "SELECTED": "Atlasīts",
         "SELECT_ALL": "Atlasīt visus",
         "SELECT_NONE": "Neizvēlēties nevienu",
-        "DSN": "<i>DSN</i>",
+        "DSN": "DSN",
         "DESCRIPTION": "Apraksts",
-        "ADD_ODBC": "Pievienot <i>ODBC</i>",
-        "EDIT_ODBC": "Rediģēt <i>ODBC</i>",
-        "DELETE_ODBC": "Dzēst <i>ODBC</i>",
+        "ADD_ODBC": "Pievienot ODBC",
+        "EDIT_ODBC": "Rediģēt ODBC",
+        "DELETE_ODBC": "Dzēst ODBC",
         "SAVE": "Saglabāt",
         "PROJECTS": "Projekti",
         "ADD_PROJECT": "Pievienot projektu",
         "EDIT_PROJECT": "Rediģēt projektu",
         "DELETE_PROJECT": "Dzēst projektu",
-        "CALLYSQUARE": "\"Cally Square\"",
+        "CALLYSQUARE": "Cally Square",
         "ID": "ID",
-        "NEW_ODBC": "Jauns <i>ODBC</i> savienojums",
+        "NEW_ODBC": "Jauns ODBC savienojums",
         "SQUARERECORDINGS": "Ieraksti",
         "PROJECT": "Projekts",
         "UNIQUEID": "Unikāls ID",
         "PHONE": "Tālrunis",
-        "EXTEN": "\"Exten\"",
+        "EXTEN": "Exten",
         "AUDIO": "Audio",
         "CREATED_AT": "Izveidots",
         "NOTES": "Piezīmes",
@@ -52,7 +52,7 @@
         "LABEL": "Etiķete",
         "ANSWER": "Atbilde",
         "TIMEOUT": "Noildze",
-        "SIP_ID": "\"SIP\"",
+        "SIP_ID": "SIP",
         "OPTS": "Iespējas",
         "URL": "Tīmekļa adrese",
         "TRUNK_NAME": "Maģistrāle",
         "FINALLY": "Visbeidzot",
         "END": "Beigt",
         "HANGUP": "Nolikt klausuli",
-        "DIAL": "Skala",
-        "EXT_DIAL": "Ārējā skala",
+        "DIAL": "Zvans",
+        "EXT_DIAL": "Ārējais zvans",
         "QUEUE": "Rinda",
         "QUEUE_ID": "Rinda",
         "FILE_ID": "Audio",
-        "AGI": "<i>AGI</i>",
+        "AGI": "AGI",
         "MACRO": "Makro",
-        "GOSUB": "<i>GoSub</i>",
+        "GOSUB": "GoSub",
         "POSITION": "Pozīcija",
         "VOICEMAIL": "Balss pasts",
         "MAILBOX": "Pastkaste",
@@ -82,7 +82,7 @@
         "DIGIT": "Maks. ciparu skaits",
         "RETRY": "Atkārtoti mēģinājumi",
         "DIGITS": "Cipari",
-        "ESCAPE_DIGITS": "Izbēgšanas cipari",
+        "ESCAPE_DIGITS": "Izbeigšanas cipari",
         "MENU": "Izvēlne",
         "SAYDIGITS": "Nosaukt ciparus",
         "SAYNUMBER": "Nosaukt skaitli",
@@ -90,8 +90,8 @@
         "SAYPHONETIC": "Izrunāt fonētiski",
         "TEXT": "Teksts",
         "GOOGLE_TTS_LANGUAGE": "Valoda",
-        "TTS": "\"Google\" teksta pārvēršana runā",
-        "ISPEECHTTS": "<i>iSpeech</i> teksta pārvēršana runā",
+        "TTS": "Google teksta pārvēršana runā",
+        "ISPEECHTTS": "iSpeech teksta pārvēršana runā",
         "KEY": "Atslēga",
         "ISPEECH_TTS_LANGUAGE": "Valoda",
         "SPEED": "Ātrums",
         "FILE": "Datnes nosaukums",
         "RECORDINGFORMAT": "Ieraksta formāts",
         "DATABASE": "Datu bāze",
-        "ODBC_ID": "<i>ODBC</i> savienojums",
+        "ODBC_ID": "ODBC savienojums",
         "QUERY": "Vaicājums",
         "MODEL": "Modelis",
         "ISPEECH_ASR_LANGUAGE": "Valoda",
         "BEEP": "Pīkstiens",
-        "ISPEECHASR": "<i>iSpeech</i> automātiskā runas atpazīšana",
+        "ISPEECHASR": "iSpeech automātiskā runas atpazīšana",
         "SENDSMS": "Sūtīt īsziņu",
         "ACCOUNT_ID": "Konts",
         "TO": "Uz",
         "SMS_TEXT": "Teksts",
         "SENDMAIL": "Sūtīt e-pastu",
         "TEMPLATE_ID": "Veidne",
-        "CC": "<i>CC</i> (kopija)",
-        "BCC": "<i>BCC</i> (diskrētā kopija)",
+        "CC": "CC (kopija)",
+        "BCC": "BCC (diskrētā kopija)",
         "SUBJECT": "Temats",
-        "GOTOC": "<i>GoTo</i>",
+        "GOTOC": "GoTo",
         "CONTEXT": "Konteksts",
         "EXTENSION": "Paplašinājums",
         "PRIORITY": "Prioritāte",
-        "GOTOIF": "<i>GoToIf</i>",
+        "GOTOIF": "GoToIf",
         "CONDITION": "Nosacījums",
-        "GOTOIFTIME": "<i>GoToIfTime</i>",
+        "GOTOIFTIME": "GoToIfTime",
         "INTERVAL_ID": "Intervāls",
         "VSWITCH": "Mainīgā nomaiņa",
         "GOAL": "Mērķis",
         "GOALNAME": "Mērķa nosaukums",
-        "NOOP": "<i>NoOp</i>",
+        "NOOP": "NoOp",
         "OUTPUT": "Izvaddati",
         "SYSTEM": "Sistēma",
         "COMMAND": "Komanda",
         "NEW_VARIABLE": "Jauns mainīgais",
         "ADD_VARIABLE": "Pievienot mainīgo",
         "UPDATE_DESCRIPTION": "Atjaunināt aprakstu",
-        "EDIT_XML": "Rediģēt <i>XML</i>",
-        "IMPORT_XML": "Importēt <i>XML</i>",
+        "EDIT_XML": "Rediģēt XML",
+        "IMPORT_XML": "Importēt XML",
         "IMPORT": "Importēt",
         "DROP_TO_UPLOAD": "PĀRVELCIET ŠEIT, LAI AUGŠUPIELĀDĒTU",
-        "DROP_TO_UPLOAD_MESSAGE": "Varat arī pārvilkt datnes šeit, lai tās augšupielādētu. Tikai <i>XML</i> – maks. 5 MB",
+        "DROP_TO_UPLOAD_MESSAGE": "Varat arī pārvilkt datnes šeit, lai tās augšupielādētu. Tikai XML – maks. 5 MB",
         "CLOSE": "Aizvērt",
         "NO_AVAILABLE_INFO": "Nav pieejama informācija",
         "GO_TO_PROJECTS": "Iet uz projektiem",
         "ATTACHMENT_TYPE": "Pielikuma veids",
         "ATTACHMENT_PATH": "Pielikuma ceļš",
         "SENDFAX": "Sūtīt faksu",
-        "DELETE_SQUARERECORDING": "Dzēst \"Square\" ierakstu",
-        "DOWNLOAD_SQUARERECORDING": "Lejupielādēt \"Square\" ierakstu",
+        "DELETE_SQUARERECORDING": "Dzēst Square ierakstu",
+        "DOWNLOAD_SQUARERECORDING": "Lejupielādēt Square ierakstu",
         "FILENAME": "Datnes nosaukums",
-        "EDIT_SQUARERECORDING": "Rediģēt \"Square\" ierakstu",
+        "EDIT_SQUARERECORDING": "Rediģēt Square ierakstu",
         "DELETE": "Dzēst",
         "PAGE": "Lappuse",
         "ROWSPERPAGE": "Rindas lappusē",
         "OF": "no",
         "CALLBACK_PRIORITY": "Prioritāte",
         "GOOGLE_ASR_LANGUAGE": "Valoda",
-        "GOOGLEASR": "\"GoogleASR\"",
-        "AWSPOLLY": "\"AWS Polly\"",
+        "GOOGLEASR": "GoogleASR",
+        "AWSPOLLY": "AWS Polly",
         "AWS_ACCESS_KEY_ID": "Piekļuves atslēgas ID",
         "AWS_SECRET_ACCESS_KEY": "Slēptā piekļuves atslēga",
         "AWS_POLLY_REGION": "Reģions",
         "AWS_POLLY_VOICE": "Balss",
-        "LUMENVOXTTS": "\"Lumenvox\" teksta pārvēršana runā",
-        "LUMENVOXASR": "\"Lumenvox\" automātiskā runas atpazīšana",
+        "LUMENVOXTTS": "Lumenvox teksta pārvēršana runā",
+        "LUMENVOXASR": "Lumenvox automātiskā runas atpazīšana",
         "GRAMMAR": "Gramatika",
-        "TILDEASR": "\"Tilde\" automātiskā runas atpazīšana",
-        "APPID": "Lietojumprogrammas ID",
-        "APPSECRET": "Lietojumprogrammas parole",
+        "TILDEASR": "Tilde automātiskā runas atpazīšana",
+        "APPID": "Aplikācijas ID",
+        "APPSECRET": "Aplikācijas parole",
         "FINDBY": "Atrast pēc",
         "LOGIN": "Pieteikšanās",
         "LOGOUT": "Atteikšanās",
         "PAUSE": "Pauze",
         "PAUSE_ID": "Pauzes veids",
         "UNPAUSE": "Pārtraukt pauzi",
-        "URI": "<i>URI</i>",
+        "URI": "URI",
         "AWS_TEXT_TYPE": "Teksta veids",
-        "DIALOGFLOW": "\"Dialogflow\"",
+        "DIALOGFLOW": "Dialogflow",
         "DIALOGFLOW_LANGUAGE": "Valoda",
         "ADDUSER_PROJECTS": "Pievienot lietotājus projektam",
         "ALL_USERS": "Visi lietotāji",
index fffa3c0..03b8fc2 100644 (file)
@@ -1,24 +1,24 @@
 {
     "CHAT": {
-        "AMAZONLEX": "\"Amazon Lex\"",
+        "AMAZONLEX": "Amazon Lex",
         "ERRORS": {
-            "TEXT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "TEXT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "VALUE_REQUIRED": "Obligāts lauks",
-            "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "OFFLINEMESSAGEBODY_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "PLACEHOLDERMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "NOTETITLE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "CLOSINGQUESTION_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "HEADER_OFFLINE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "OFFLINEMESSAGEBODY_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "PLACEHOLDERMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "NOTETITLE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "CLOSINGQUESTION_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "HEADER_OFFLINE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "TEXT_REQUIRED": "Obligāts lauks",
             "SENDUNMANAGED_REQUIRED": "Obligāts lauks",
-            "SENDUNMANAGED_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "SKIPUNMANAGED_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "UNMANAGEDMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "WEBSITEALIAS_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "SENDUNMANAGED_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "SKIPUNMANAGED_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "UNMANAGEDMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "WEBSITEALIAS_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "AGENT_REQUIRED": "Obligāts lauks",
             "QUEUE_REQUIRED": "Obligāts lauks",
             "CONDITION_REQUIRED": "Obligāts lauks",
             "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Vērtībai jābūt lielākai vai vienādai ar",
             "WAITINGMESSAGE_REQUIRED": "Obligāts lauks",
             "WAITINGTITLE_REQUIRED": "Obligāts lauks",
-            "KEY_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "KEY_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "KEY_REQUIRED": "Obligāts lauks",
-            "WAITINGMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "WAITINGTITLE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "WAITINGMESSAGE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "WAITINGTITLE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
             "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
             "FONTSIZE_REQUIRED": "Obligāts lauks",
@@ -64,7 +64,7 @@
             "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
             "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
             "VERTICALPOSITION_REQUIRED": "Obligāts lauks",
-            "CUSTOMERALIAS_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "CUSTOMERALIAS_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "TAG_REQUIRED": "Obligāts lauks",
             "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
             "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
             "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
             "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
             "QUEUETRANSFERTIMEOUT_REQUIRED": "Obligāts lauks",
-            "SYSTEMALIAS_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "SYSTEMALIAS_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "SYSTEMALIAS_REQUIRED": "Obligāts lauks",
             "ACCESSKEYID_REQUIRED": "Obligāts lauks",
             "BOTNAME_REQUIRED": "Obligāts lauks",
             "SECRETACCESSKEY_REQUIRED": "Obligāts lauks"
         },
         "HELP": {
-            "KEY": "Tīmekļa vietnes īss nosaukums (piecas rakstzīmes), kas ir attēlots cilnē \"Aģenti\"",
+            "KEY": "Tīmekļa vietnes īss nosaukums (piecas rakstzīmes), kas ir attēlots cilnē Aģenti",
             "TOKEN": "Automātiski radīts marķieris, ko izmanto norakstā",
             "INTEVAL": "Jāizvēlas no pieejamo intervālu saraksta",
             "TIMEZONE": "Atlasiet vienu no saraksta (noklusējums = vietējā laika josla)",
         "DELETE_CHATCANNEDANSWER": "Dzēst",
         "OFFLINEMESSAGESUBJECT": "Ziņojuma tēma",
         "OFFLINEMESSAGEBODY": "Ziņojuma teksts",
-        "FORMSUBMITSUCCESSMESSAGE": "Ziņojums \"Veidlapa iesniegta veiksmīgi\"",
-        "FORMSUBMITFAILUREMESSAGE": "Ziņojums \"Veidlapa iesniegta neveiksmīgi\"",
+        "FORMSUBMITSUCCESSMESSAGE": "Ziņojums Veidlapa iesniegta veiksmīgi",
+        "FORMSUBMITFAILUREMESSAGE": "Ziņojums Veidlapa iesniegta neveiksmīgi",
         "PLACEHOLDERMESSAGE": "Ziņojuma vietturis",
         "NOTETITLE": "Piezīmes nosaukums",
         "CLOSINGQUESTION": "Noslēguma jautājums",
         "CHAT": "Tērzēšana",
         "MAIL": "E-pasts",
         "SMS": "Īsziņa",
-        "OPENCHANNEL": "\"Openchannel\"",
+        "OPENCHANNEL": "Openchannel",
         "FAX": "Fakss",
         "PAUSE": "Pauze",
         "REALTIME": "Reāllaika",
         "CLOSINGMESSAGE": "Noslēguma ziņojums",
         "CLOSINGMESSAGEBUTTON": "Noslēguma ziņojuma poga",
         "RATINGSTARSNUMBER": "Novērtējuma zvaigžņu skaits",
-        "EDIT_GOTOIF": "Rediģēt <i>GotoIf</i>",
+        "EDIT_GOTOIF": "Rediģēt GotoIf",
         "CONDITION": "Nosacījums",
         "TRUEPRIORITY": "Patiesa prioritāte",
         "FALSEPRIORITY": "Aplama prioritāte",
         "VALUE": "Vērtība",
         "WEBSITEALIAS": "Tīmekļa vietnes segvārds",
-        "CM_FIELD": "Lauks \"Sazināties ar pārvaldnieku\"",
+        "CM_FIELD": "Kontaktu pārvaldnieka lauks",
         "CHATPROACTIVEACTIONS": "Proaktīvas darbības",
         "NEW_CHATPROACTIVEACTION": "Jauna proaktīva darbība",
         "EDIT_CHATPROACTIVEACTION": "Rediģēt proaktīvo darbību",
         "TYPE": "Tips",
         "SELECTOR": "Atlasītājs",
         "AGENT": "Aģents",
-        "GOTO": "\"Goto\"",
-        "GOTOIF": "\"GotoIf\"",
-        "NOOP": "\"Noop\"",
+        "GOTO": "Goto",
+        "GOTOIF": "GotoIf",
+        "NOOP": "Noop",
         "QUEUE": "Rinda",
         "BUILDER": "Veidotājs",
         "PREVIEW": "Priekšskatījums",
         "EDIT_AGENT": "Rediģēt aģentu",
         "EDIT_QUEUE": "Rediģēt rindu",
-        "EDIT_GOTO": "Rediģēt <i>Goto</i>",
-        "EDIT_GOTOIf": "Rediģēt <i>GotoIf</i>",
-        "EDIT_NOOP": "Rediģēt <i>Noop</i>",
+        "EDIT_GOTO": "Rediģēt Goto",
+        "EDIT_GOTOIf": "Rediģēt GotoIf",
+        "EDIT_NOOP": "Rediģēt Noop",
         "ADD_CHATQUEUE": "Pievienot tērzēšanas rindu",
         "EDIT_CHATQUEUE": "Rediģēt tērzēšanas rindu",
         "DELETE_CHATQUEUE": "Dzēst tērzēšanas rindu",
         "NOTES": "Piezīmes",
         "NO_INTERACTION_AVAILABLE": "Nav pieejama saziņa",
         "SELECTED_WEBSITE": "Izvēlieties vietni",
-        "GOTOP": "\"Gotop\"",
-        "EDIT_GOTOP": "Rediģēt <i>Gotop</i>",
+        "GOTOP": "Gotop",
+        "EDIT_GOTOP": "Rediģēt Gotop",
         "SELECT_WEBSITE": "Izvēlieties vietni",
         "INFO": "Informācija",
         "OFFLINEMESSAGES_CHATWEBSITE": "Doties uz bezsaistes ziņojumiem",
         "MESSAGEFONTSIZE": "Ziņu fonta lielums",
         "AGENTTRANSFER": "Aģenta nodošana",
         "AGENTTRANSFERTIMEOUT": "Aģenta nodošanas noildze",
-        "DIALOGFLOW": "\"Dialogflow\"",
-        "EDIT_DIALOGFLOW": "Rediģēt \"Dialogflow\"",
+        "DIALOGFLOW": "Dialogflow",
+        "EDIT_DIALOGFLOW": "Rediģēt Dialogflow",
         "LANGUAGE": "Valoda",
         "QUEUETRANSFER": "Rindas nodošana",
         "QUEUETRANSFERTIMEOUT": "Rindas nodošanas noildze",
         "PAUSE_TIME": "Pārtraukuma ilgums",
         "ACCESSKEYID": "Piekļuves atslēgas ID",
         "BOTNAME": "Robotprogrammatūras nosaukums",
-        "EDIT_AMAZONLEX": "Rediģēt \"Amazon Lex\"",
+        "EDIT_AMAZONLEX": "Rediģēt Amazon Lex",
         "LEXREGION": "Reģions",
         "SECRETACCESSKEY": "Slēptā piekļuves atslēga",
         "TEAMS_ASSOCIATION": "Komandu asociācija"
index 72bbb3e..b78fa95 100644 (file)
@@ -7,13 +7,13 @@
             "ALIAS_REQUIRED": "Obligāts lauks",
             "VALUE_REQUIRED": "Obligāts lauks",
             "EMAIL_MUST_VALID": "Nepareizs formāts",
-            "PHONEBAR_API": "Pārbaudiet, vai darbojas \"MotionBar\" un ir ieslēgts aģenta tālvadības slēdzis"
+            "PHONEBAR_API": "Pārbaudiet, vai darbojas MotionBar un ir ieslēgts aģenta tālvadības slēdzis"
         },
         "HELP": {
-            "PHONEBAR_API_MESSAGE": "Lai iespējotu opciju \"Noklikšķināt, lai piezvanītu\", ievadiet tālruņa numuru un pārbaudiet, vai ir ieslēgts aģenta tālvadības slēdzis",
-            "PHONEBAR_API": "Lai iespējotu opciju \"Noklikšķināt, lai piezvanītu\", ievadiet tālruņa numuru un pārbaudiet, vai ir ieslēgts aģenta tālvadības slēdzis"
+            "PHONEBAR_API_MESSAGE": "Lai iespējotu opciju Click to Call, ievadiet tālruņa numuru un pārbaudiet, vai ir ieslēgts aģenta tālvadības slēdzis",
+            "PHONEBAR_API": "Lai iespējotu opciju Click to Call, ievadiet tālruņa numuru un pārbaudiet, vai ir ieslēgts aģenta tālvadības slēdzis"
         },
-        "VOICEQUEUEID": "\"VoiceQueue\" ID",
+        "VOICEQUEUEID": "Zvanu rindas ID",
         "CAMPAIGNID": "Kampaņas ID",
         "STATE": "Valsts",
         "NAME": "Nosaukums",
         "STATUS": "Statuss",
         "STARTTIME": "Sākuma laiks",
         "ENDTIME": "Beigu laiks",
-        "MOTION_BULL": "\"Motion Bull\"",
-        "HOPPER": "\"Hopper\"",
-        "FINAL": "\"Hopper Final\"",
-        "HISTORY": "\"Hopper\" vēsture",
+        "MOTION_BULL": "Motion Bull",
+        "HOPPER": "Hopper",
+        "FINAL": "Hopper Final",
+        "HISTORY": "Hopper vēsture",
         "SCHEDULEDAT": "Ieplānots",
         "SEARCH_FOR_ANYONE": "Meklēt",
         "EDIT_LIST": "Rediģēt sarakstu",
-        "EDIT_HOPPER": "Rediģēt \"Hopper\"",
+        "EDIT_HOPPER": "Rediģēt Hopper",
         "DELETE_LIST": "Dzēst sarakstu",
-        "DELETE_HOPPER": "Dzēst \"Hopper\"",
+        "DELETE_HOPPER": "Dzēst Hopper",
         "RELOAD": "Pārlādēt",
         "NO_COMPANIES": "Nav uzņēmuma",
         "NO_AVAILABLE_ITEMS": "Nav pieejamu vienumu",
         "PHONE": "Tālrunis",
         "EMAIL": "E-pasts",
         "ADD_COMPANY": "Pievienot uzņēmumu",
-        "CONTACTS": "Kontaktpersonas",
+        "CONTACTS": "Kontakti",
         "NEW_LIST": "Jauns saraksts",
         "FIRSTNAME": "Vārds",
         "LASTNAME": "Uzvārds",
         "LIST": "Saraksts",
         "COMPANY": "Uzņēmums",
-        "ADD_CONTACT": "Pievienot kontaktpersonu",
-        "EDIT_CONTACT": "Rediģēt kontaktpersonu",
-        "MERGE_CONTACT": "Apvienot kontaktpersonas",
-        "DUPLICATE_CONTACT": "Dublēt kontaktpersonu",
-        "DELETE_CONTACT": "Dzēst kontaktpersonu",
+        "ADD_CONTACT": "Pievienot kontaktu",
+        "EDIT_CONTACT": "Rediģēt kontaktu",
+        "MERGE_CONTACT": "Apvienot kontaktus",
+        "DUPLICATE_CONTACT": "Dublēt kontaktu",
+        "DELETE_CONTACT": "Dzēst kontaktu",
         "CREATED_AT": "Izveidots",
         "SAVE": "Saglabāt",
         "DETAIL": "Sīka informācija",
@@ -79,7 +79,7 @@
         "POSTALCODE": "Pasta indekss",
         "DELETE": "Dzēst",
         "DELETE_ALL": "Dzēst visu",
-        "CONTACTMANAGER": "Kontaktpersonu pārvaldnieks",
+        "CONTACTMANAGER": "Kontaktu pārvaldnieks",
         "ID": "ID",
         "SETTINGS": "Iestatījumi",
         "GENERAL": "Vispārīgi",
         "EDIT_CUSTOMFIELD": "Rediģēt pielāgoto lauku",
         "DELETE_CUSTOMFIELD": "Dzēst pielāgoto lauku",
         "NEW_COMPANY": "Jauns uzņēmums",
-        "NEW_CONTACT": "Jauna kontaktpersona",
+        "NEW_CONTACT": "Jauns kontakts",
         "NEW_TAG": "Jauna atzīme",
-        "UPLOAD_CONTACTS": "Augšupielādēt kontaktpersonas",
+        "UPLOAD_CONTACTS": "Augšupielādēt kontaktus",
         "FINISH": "Pabeigt",
         "SUCCESS": "Panākumi",
         "FAILURE": "Kļūme",
-        "ALL_CONTACTS": "Visas kontaktpersonas",
+        "ALL_CONTACTS": "Visi kontakti",
         "NEW_CUSTOMFIELD": "Jauns pielāgots lauks",
         "NO_VOICEDISPOSITION_AVAILABLE": "Nav pieejami balss statusi",
         "ADD_VOICEDISPOSITION": "Pievienot balss statusu",
         "ADDRESS": "Adrese",
         "POSTAL_CODE": "Pasta indekss",
         "SHIPMENTADDRESS": "Sūtījuma adrese",
-        "COPY_CONTACT": "Kopēt kontaktpersonu",
-        "GOTOCONTACTS_LIST": "Rādīt kontaktpersonas",
-        "GOTOCONTACTS_COMPANY": "Rādīt kontaktpersonas",
+        "COPY_CONTACT": "Kopēt kontaktus",
+        "GOTOCONTACTS_LIST": "Rādīt kontaktus",
+        "GOTOCONTACTS_COMPANY": "Rādīt kontaktus",
         "ADD_AGENT_TO_LIST": "Pievienot aģentu sarakstam",
         "AGENTADD_LIST": "Pievienot aģentus sarakstam",
         "NO_AVAILABLE_INFO": "Nav pieejama informācija",
         "FULLNAME": "Vārds un uzvārds",
         "CHECK_DUPLICATES": "Pārbaudīt dublikātus",
         "DUPLICATES": "Dublikāti",
-        "UPLOAD_CSV": "Augšupielādēt <i>CSV</i>",
+        "UPLOAD_CSV": "Augšupielādēt CSV",
         "TAG": "Atzīme",
         "UPLOAD": "Augšupielādēt",
         "ALL_AGENTS": "Visi aģenti",
         "DATE_OF_BIRTH": "Dzimšanas datums",
         "DATEOFBIRTH": "Dzimšanas datums",
         "NOTES": "Piezīmes",
-        "EXPORTCSVCONTACTS_LIST": "Eksportēt uz <i>CSV</i>",
-        "GOTO_LIST": "Rādīt kontaktpersonas",
-        "GOTO_COMPANY": "Rādīt kontaktpersonas",
+        "EXPORTCSVCONTACTS_LIST": "Eksportēt uz CSV",
+        "GOTO_LIST": "Rādīt kontaktus",
+        "GOTO_COMPANY": "Rādīt kontaktus",
         "REQUIRED": "Nepieciešams",
         "GLOBALCUSTOMFIELDS": "Globāli pielāgotie lauki",
         "NEW_GLOBALCUSTOMFIELD": "Jauni pielāgoti lauki",
         "ADD_GLOBALCUSTOMFIELD": "Pievienot pielāgotu lauku",
         "EDIT_GLOBALCUSTOMFIELD": "Rediģēt pielāgoto lauku",
         "DELETE_GLOBALCUSTOMFIELD": "Dzēst pielāgoto lauku",
-        "JSCRIPTY": "<i>Jscripty</i>",
+        "JSCRIPTY": "Jscripty",
         "SESSIONS": "Sesijas",
         "AGENT": "Aģents",
         "PROJECT": "Projekts",
         "UPLOAD_COMPLETED": "Augšupielāde pabeigta",
         "STOP": "Pārtraukt",
         "SELECT_FILE": "Atlasīt datni",
-        "IMPORT_CONTACTS": "Importēt kontaktpersonas",
-        "MOTIONDIALER": "\"Motion Bull\"",
-        "PREFIX": "Zvana priekšējie cipari",
+        "IMPORT_CONTACTS": "Importēt kontaktus",
+        "MOTIONDIALER": "Motion Bull",
+        "PREFIX": "Zvana prefikss",
         "PRIORITY": "Prioritāte",
         "USERID": "Atzvanīt aģenta ID",
         "CUSTOMER_JOURNEY": "Klienta ceļojums",
index 64560e5..37f7de4 100644 (file)
         "DROPPED": "Atvienots",
         "DROPPED_TEXT": "Atvienotie zvani rindā",
         "DETAIL": "Sīka informācija",
-        "MOTION_BULL": "\"Motion Bull\"",
+        "MOTION_BULL": "Motion Bull",
         "LIMITED": "Ierobežots",
         "LIMITED_TEXT": "Interaktīvās balss atbildes kampaņas zvani/ierobežojumi",
         "DASHBOARDS": "Informācijas paneļi",
         "ORIGINATED_TEXT": "Rindas zvanu izcelsme",
         "UPDATE": "Atjaunināt",
         "MORE": "Vairāk",
-        "MOTIONDIALER": "\"Motion Bull\"",
+        "MOTIONDIALER": "Motion Bull",
         "DISPOSE": "Beigt",
         "QUEUES": "Rindas",
         "DIALER_CALL": "Zvanītāja zvans",
         "TOT_DURATION": "Kopējais ilgums",
         "AVG_DURATION": "Vidējais ilgums",
         "NO_AVAILABLE_INFO": "Nav pieejama informācija",
-        "WELCOME_TO_MOTION": "Laipni lūdzam \"Motion\"",
+        "WELCOME_TO_MOTION": "Laipni lūdzam Motion",
         "WELCOME_MESSAGE": "Izmantojiet kreiso sānu joslu, lai pārvietotos pa pieejamajām sadaļām",
         "ADD": "Pievienot",
-        "CONTACTMANAGER": "Kontaktpersonu pārvaldnieks",
+        "CONTACTMANAGER": "Kontaktu pārvaldnieks",
         "DASHBOARD": "Informācijas panelis",
-        "EDIT_CONTACT": "Rediģējiet kontaktu",
+        "EDIT_CONTACT": "Rediģēt kontaktu",
         "EMAIL": "E-pasts",
         "FULLNAME": "Vārds un uzvārds",
         "LIST": "Saraksts",
-        "NEW_CONTACT": "Jauna kontaktpersona",
+        "NEW_CONTACT": "Jauns kontakts",
         "PHONE": "Tālrunis",
         "SAVE": "Saglabāt",
         "INBOUND_WAITING_CALLS": "Ienākošie gaidīšanas zvani",
-        "CONTACTS": "Kontaktpersonas",
-        "MYCONTACTS": "Manas kontaktpersonas",
-        "ADD_CONTACT": "Pievienot kontaktpersonu",
+        "CONTACTS": "Kontakti",
+        "MYCONTACTS": "Mani kontakti",
+        "ADD_CONTACT": "Pievienot kontaktu",
         "RELOAD": "Pārlādēt",
         "WAITING_TEXT": "Gaida saziņu",
         "TALKING_TEXT": "Aktīvie rindas zvani",
         "PAGE": "Lappuse",
         "ROWSPERPAGE": "Rindas lappusē",
         "OF": "no",
-        "REPLY_PLACEHOLDER": "Ierakstiet un nospiediet \"Enter\", lai nosūtītu ziņu",
+        "REPLY_PLACEHOLDER": "Ierakstiet un nospiediet Enter, lai nosūtītu ziņu",
         "CONTACT_INFO": "Kontaktinformācija",
         "CLOSE_AND_DISPOSE": "Aizvērt un izbeigt",
         "DISPOSITIONS": "Statusi",
         "ACCEPT_ELSEWHERE": "Pieņemts citur",
         "ATTENTION": "Uzmanību",
         "SOCIAL": "Sociāli",
-        "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Nav pieejami \"Jscripty\" projekti",
+        "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Nav pieejami Jscripty projekti",
         "OPENED": "Atvērts",
         "FILTER": "Filtrs",
         "SELECT_STATUS": "Izvēlieties statusu",
         "MARK_AS_UNREAD": "Atzīmēt kā nelasītu",
         "SELECT_AGENT": "Izvēlieties aģentu",
         "READ": "Izlasīts",
-        "SELECT_READ_UNREAD": "Izvēlieties \"Lasīts/nelasīts\"",
-        "SELECT_SUBSTATUS": "Izvēlieties apakšstatusu",
+        "SELECT_READ_UNREAD": "Izvēlēties \"Lasīts/nelasīts\"",
+        "SELECT_SUBSTATUS": "Izvēlēties apakšstatusu",
         "UNREAD": "Nelasīts",
         "ABANDONAT": "Pamests",
         "ABANDONEDQUEUECALLS": "Pamesti rindas zvani",
         "RESERVED": "Rezervēts",
         "SELECT_CAMPAIGN": "Izvēlieties rindu",
         "ASSIGNTO": "Piešķirt",
-        "CLICKRELOAD": "Jauni pamesti zvani! Lūdzu, pārlādējiet",
+        "CLICKRELOAD": "Jauni neatbildēti zvani! Lūdzu, pārlādējiet",
         "NOTAVAILABLE": "Nav pieejams",
         "CURRENTLY_IN_USE_BY": "Pašlaik izmanto",
         "CUSTOMER_JOURNEY": "Klienta ceļojums",
         "AVG_MANAGED_TIME_TEXT": "Vidējais saziņas pārvaldības laiks",
         "MANAGED": "Pārvaldīts",
         "MANAGED_RATE": "Pārvaldīšanas koeficients",
-        "MANAGED_RATE_TEXT": "Pārvaldīto mijiedarbību koeficients ",
-        "MANAGED_TEXT": "Pārvaldītās mijiedarbības",
-        "OPENED_TEXT": "Atvērtas mijiedarbības",
-        "TODAY_INTERACTIONS_STATS": "Mijiedarbību dienas statistika",
+        "MANAGED_RATE_TEXT": "Pārvaldīto saziņu koeficients ",
+        "MANAGED_TEXT": "Pārvaldītās saziņas",
+        "OPENED_TEXT": "Atvērtas saziņas",
+        "TODAY_INTERACTIONS_STATS": "Saziņu dienas statistika",
         "UNMANAGED_RATE": "Nepārvaldīšanas koeficients",
-        "UNMANAGED_RATE_TEXT": "Nepārvaldīto mijiedarbību koeficients",
+        "UNMANAGED_RATE_TEXT": "Nepārvaldīto saziņu koeficients",
         "VOICE_ABANDONED": "PAMESTS",
         "VOICE_ABANDONED_TEXT": "PAMESTIE RINDAS ZVANI",
         "VOICE_ABANDON_RATE": "PAMEŠANAS KOEFICIENTS",
index 2b5db75..f88cdae 100644 (file)
@@ -28,7 +28,7 @@
             "HEADERINFO_REQUIRED": "Obligāts lauks",
             "TRUNK_REQUIRED": "Obligāts lauks",
             "LIST_REQUIRED": "Obligāts lauks",
-            "KEY_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "KEY_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "KEY_REQUIRED": "Obligāts lauks",
             "COMMAND_REQUIRED": "Obligāts lauks",
             "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
@@ -53,7 +53,7 @@
             "GATEWAY": "T.38 Faksa vārteja ar izvēles faksa darbības noildzi sekundēs (yes/no/[timeout])",
             "FAXDETECT": "Iespējot faksa noteikšanu ar papildu noildzi sekundēs (yes/t38/cng/[timeout]/no)",
             "T38TIMEOUT": "T.38 sarunām izmantotā noildze (minimālā vērtība = 1000)",
-            "ECM": "Kļūdas savienojuma režīms <i>(ECM)</i>",
+            "ECM": "Kļūdas savienojuma režīms (ECM)",
             "MINRATE": "Minimālais pārsūtīšanas ātrums, kas ir noteikts pirms pārraides",
             "MAXRATE": "Maksimālais pārsūtīšanas ātrums, kas ir noteikts pirms pārraides",
             "NAME": "Tiek atbalstīti tikai numuri, burti un atsevišķas rakstzīmes (._)"
         "VALUE": "Vērtība",
         "EDIT_FAXQUEUE": "Rediģēt faksa rindu",
         "EDIT_AGENT": "Rediģēt aģentu",
-        "EDIT_GOTO": "Rediģēt <i>Goto</i>",
-        "EDIT_NOOP": "Rediģēt <i>Noop</i>",
-        "EDIT_GOTOP": "Rediģēt <i>GotoP</i>",
-        "EDIT_GOTOIF": "Rediģēt <i>GotoIf</i>",
+        "EDIT_GOTO": "Rediģēt Goto",
+        "EDIT_NOOP": "Rediģēt Noop",
+        "EDIT_GOTOP": "Rediģēt GotoP",
+        "EDIT_GOTOIF": "Rediģēt GotoIf",
         "EDIT_QUEUE": "Rediģēt faksa rindu",
         "EDIT_CLOSE": "Rediģēt aizvēršanu",
         "QUEUE": "Rinda",
-        "GOTOIF": "\"GotoIf\"",
-        "GOTOP": "<i>GotoP</i>",
-        "NOOP": "\"Noop\"",
+        "GOTOIF": "GotoIf",
+        "GOTOP": "GotoP",
+        "NOOP": "Noop",
         "AGENT": "Aģents",
         "NOTES": "Piezīmes",
         "CLOSEDAT": "Aizvērts",
         "TRUNK": "Maģistrāle",
         "LOCALSTATIONID": "Vietējās stacijas identifikators",
         "ADVANCED": "Paplašināts",
-        "ECM": "\"ECM\"",
+        "ECM": "ECM",
         "MINRATE": "Minimālais koeficients",
         "MAXRATE": "Maksimālais koeficients",
         "MODEM": "Modems",
index 96c611b..9566f72 100644 (file)
             "VTIGER_USER_NAME_REQUIRED": "Obligāts lauks"
         },
         "HELP": {
-            "MOTIONPROXYADDRESS": "Kustības (starpnieka) adrese: tā ir nepieciešama, ja vēlaties aizpildīt biļešu korpusu ar ieraksta tīmekļa adresi. Ievadiet adresi šādā formātā: <protocol> : //<ipaddress>[:<port>]. Piemērs: https://XYZW"
+            "MOTIONPROXYADDRESS": "Motion (starpnieka) adrese: tā ir nepieciešama, ja vēlaties aizpildīt ticket saturu ar ieraksta tīmekļa adresi. Ievadiet adresi šādā formātā: <protocol> : //<ipaddress>[:<port>]. Piemērs: https://XYZW"
         },
-        "ADVANCED": "Paplašināts",
+        "ADVANCED": "Paplašināti",
         "MODULE_SEARCH": "Moduļa meklēšana",
         "MODULE_CREATE": "Izveidot moduli",
         "INTEGRATIONS": "Integrācijas",
-        "ZENDESKACCOUNTS": "\"Zendesk\" konti",
+        "ZENDESKACCOUNTS": "Zendesk konti",
         "ID": "ID",
         "NAME": "Nosaukums",
         "USERNAME": "Lietotājvārds",
         "SELECTED": "Atlasīts",
         "SELECT_ALL": "Atlasīt visus",
         "SELECT_NONE": "Neizvēlēties nevienu",
-        "EDIT_ZENDESKACCOUNT": "Rediģēt \"Zendesk\" kontu",
-        "DELETE_ZENDESKACCOUNT": "Dzēst \"Zendesk\" kontu",
-        "NEW_ZENDESKACCOUNT": "Jauns \"Zendesk\" konts",
+        "EDIT_ZENDESKACCOUNT": "Rediģēt Zendesk kontu",
+        "DELETE_ZENDESKACCOUNT": "Dzēst Zendesk kontu",
+        "NEW_ZENDESKACCOUNT": "Jauns Zendesk konts",
         "AUTHTYPE": "Autentifikācijas veids",
         "PASSWORD": "Parole",
         "CONFIRM_PASSWORD": "Apstiprināt paroli",
         "TOKEN": "Marķieris",
-        "MOTIONPROXYADDRESS": "Kustības vai starpnieka IP adrese",
+        "MOTIONPROXYADDRESS": "Motion vai starpnieka IP adrese",
         "DESCRIPTION": "Apraksts",
-        "ADD_ZENDESKACCOUNT": "Pievienot \"Zendesk\" kontu",
+        "ADD_ZENDESKACCOUNT": "Pievienot Zendesk kontu",
         "ACCOUNT": "Konts",
-        "ZENDESKCONFIGURATIONS": "\"Zendesk\" konfigurācijas",
-        "SALESFORCECONFIGURATIONS": "\"Salesforce\" konfigurācijas",
-        "SUGARCRMCONFIGURATIONS": "\"SugarCRM\" konfigurācijas",
-        "FRESHDESKCONFIGURATIONS": "\"Freshdesk\" konfigurācijas",
+        "ZENDESKCONFIGURATIONS": "Zendesk konfigurācijas",
+        "SALESFORCECONFIGURATIONS": "Salesforce konfigurācijas",
+        "SUGARCRMCONFIGURATIONS": "SugarCRM konfigurācijas",
+        "FRESHDESKCONFIGURATIONS": "Freshdesk konfigurācijas",
         "GENERAL": "Vispārīgi",
         "CREATED_AT": "Izveidots",
         "SAVE": "Saglabāt",
-        "NO_ZENDESKCONFIGURATION_AVAILABLE": "\"Zendesk\" konfigurācijas nav pieejamas",
-        "NEW_ZENDESKCONFIGURATION": "Jauna \"Zendesk\" konfigurācija",
-        "ADD_ZENDESKCONFIGURATION": "Pievienot \"Zendesk\" konfigurāciju",
-        "EDIT_ZENDESKCONFIGURATION": "Rediģēt \"Zendesk\" konfigurāciju",
-        "DELETE_ZENDESKCONFIGURATION": "Dzēst \"Zendesk\" konfigurāciju",
-        "NO_SALESFORCECONFIGURATION_AVAILABLE": "\"Salesforce\" konfigurācijas nav pieejamas",
-        "NEW_SALESFORCECONFIGURATION": "Jauna \"Salesforce\" konfigurācija",
-        "ADD_SALESFORCECONFIGURATION": "Pievienot \"Salesforce\" konfigurāciju",
-        "EDIT_SALESFORCECONFIGURATION": "Rediģēt \"Salesforce\" konfigurāciju",
-        "DELETE_SALESFORCECONFIGURATION": "Dzēst \"Salesforce\" konfigurāciju",
-        "NO_SUGARCRMCONFIGURATION_AVAILABLE": "\"SugarCRM\" konfigurācijas nav pieejamas",
-        "NEW_SUGARCRMCONFIGURATION": "Jauna \"SugarCRM\" konfigurācija",
-        "ADD_SUGARCRMCONFIGURATION": "Pievienot \"SugarCRM\" konfigurāciju",
-        "EDIT_SUGARCRMCONFIGURATION": "Rediģēt \"SugarCRM\" konfigurāciju",
-        "DELETE_SUGARCRMCONFIGURATION": "Dzēst \"SugarCRM\" konfigurāciju",
-        "NO_FRESHDESKCONFIGURATION_AVAILABLE": "\"Freshdesk\" konfigurācijas nav pieejamas",
-        "NEW_FRESHDESKCONFIGURATION": "Jauna \"Freshdesk\" konfigurācija",
-        "ADD_FRESHDESKCONFIGURATION": "Pievienot \"Freshdesk\" konfigurāciju",
-        "EDIT_FRESHDESKCONFIGURATION": "Rediģēt \"Freshdesk\" konfigurāciju",
-        "DELETE_FRESHDESKCONFIGURATION": "Dzēst \"Freshdesk\" konfigurāciju",
-        "SALESFORCEACCOUNTS": "\"Salesforce\" konti",
-        "EDIT_SALESFORCEACCOUNT": "Rediģēt \"Salesforce\" kontu",
-        "DELETE_SALESFORCEACCOUNT": "Dzēst \"Salesforce\" kontu",
-        "NEW_SALESFORCEACCOUNT": "Jauns \"Salesforce\" konts",
-        "ADD_SALESFORCEACCOUNT": "Pievienot \"Salesforce\" kontu",
+        "NO_ZENDESKCONFIGURATION_AVAILABLE": "Zendesk konfigurācijas nav pieejamas",
+        "NEW_ZENDESKCONFIGURATION": "Jauna Zendesk konfigurācija",
+        "ADD_ZENDESKCONFIGURATION": "Pievienot Zendesk konfigurāciju",
+        "EDIT_ZENDESKCONFIGURATION": "Rediģēt Zendesk konfigurāciju",
+        "DELETE_ZENDESKCONFIGURATION": "Dzēst Zendesk konfigurāciju",
+        "NO_SALESFORCECONFIGURATION_AVAILABLE": "Salesforce konfigurācijas nav pieejamas",
+        "NEW_SALESFORCECONFIGURATION": "Jauna Salesforce konfigurācija",
+        "ADD_SALESFORCECONFIGURATION": "Pievienot Salesforce konfigurāciju",
+        "EDIT_SALESFORCECONFIGURATION": "Rediģēt Salesforce konfigurāciju",
+        "DELETE_SALESFORCECONFIGURATION": "Dzēst Salesforce konfigurāciju",
+        "NO_SUGARCRMCONFIGURATION_AVAILABLE": "SugarCRM konfigurācijas nav pieejamas",
+        "NEW_SUGARCRMCONFIGURATION": "Jauna SugarCRM konfigurācija",
+        "ADD_SUGARCRMCONFIGURATION": "Pievienot SugarCRM konfigurāciju",
+        "EDIT_SUGARCRMCONFIGURATION": "Rediģēt SugarCRM konfigurāciju",
+        "DELETE_SUGARCRMCONFIGURATION": "Dzēst SugarCRM konfigurāciju",
+        "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Freshdesk konfigurācijas nav pieejamas",
+        "NEW_FRESHDESKCONFIGURATION": "Jauna Freshdesk konfigurācija",
+        "ADD_FRESHDESKCONFIGURATION": "Pievienot Freshdesk konfigurāciju",
+        "EDIT_FRESHDESKCONFIGURATION": "Rediģēt Freshdesk konfigurāciju",
+        "DELETE_FRESHDESKCONFIGURATION": "Dzēst Freshdesk konfigurāciju",
+        "SALESFORCEACCOUNTS": "Salesforce konti",
+        "EDIT_SALESFORCEACCOUNT": "Rediģēt Salesforce kontu",
+        "DELETE_SALESFORCEACCOUNT": "Dzēst Salesforce kontu",
+        "NEW_SALESFORCEACCOUNT": "Jauns Salesforce konts",
+        "ADD_SALESFORCEACCOUNT": "Pievienot Salesforce kontu",
         "CLIENTID": "Klienta ID",
         "CLIENTSECRET": "Klienta parole",
         "SECURITYTOKEN": "Drošības marķieris",
         "SEARCH_FOR_ANYONE": "Meklēt",
         "APIKEY": "Lietojumprogrammas saskarnes atslēga",
-        "FRESHDESKACCOUNTS": "\"Freshdesk\" konti",
-        "EDIT_FRESHDESKACCOUNT": "Rediģēt \"Freshdesk\" kontu",
-        "DELETE_FRESHDESKACCOUNT": "Dzēst \"Freshdesk\" kontu",
-        "NEW_FRESHDESKACCOUNT": "Jauns \"Freshdesk\" konts",
-        "ADD_FRESHDESKACCOUNT": "Pievienot \"Freshdesk\" kontu",
-        "SUGARCRMACCOUNTS": "\"SugarCRM\" konti",
-        "EDIT_SUGARCRMACCOUNT": "Rediģēt \"SugarCRM\" kontu",
-        "DELETE_SUGARCRMACCOUNT": "Dzēst \"SugarCRM\" kontu",
-        "NEW_SUGARCRMACCOUNT": "Jauns \"SugarCRM\" konts",
-        "ADD_SUGARCRMACCOUNT": "Pievienot \"SugarCRM\" kontu",
+        "FRESHDESKACCOUNTS": "Freshdesk konti",
+        "EDIT_FRESHDESKACCOUNT": "Rediģēt Freshdesk kontu",
+        "DELETE_FRESHDESKACCOUNT": "Dzēst Freshdesk kontu",
+        "NEW_FRESHDESKACCOUNT": "Jauns Freshdesk konts",
+        "ADD_FRESHDESKACCOUNT": "Pievienot Freshdesk kontu",
+        "SUGARCRMACCOUNTS": "SugarCRM konti",
+        "EDIT_SUGARCRMACCOUNT": "Rediģēt SugarCRM kontu",
+        "DELETE_SUGARCRMACCOUNT": "Dzēst SugarCRM kontu",
+        "NEW_SUGARCRMACCOUNT": "Jauns SugarCRM konts",
+        "ADD_SUGARCRMACCOUNT": "Pievienot SugarCRM kontu",
         "CONFIGURATIONS": "Konfigurācijas",
         "NO_CONFIGURATION_AVAILABLE": "Nav pieejamu konfigurāciju",
         "NEW_CONFIGURATION": "Jauna konfigurācija",
         "CHANNEL": "Kanāls",
         "DELETE": "Dzēst",
         "NO_AVAILABLE_INFO": "Nav pieejama informācija",
-        "TEST_ZENDESKACCOUNT": "Pārbaudīt \"Zendesk\" kontu",
-        "TEST_FRESHDESKACCOUNT": "Pārbaudīt \"Freshdesk\" kontu",
-        "TEST_SUGARCRMACCOUNT": "Pārbaudīt \"SugerCRM\" kontu",
-        "TEST_SALESFORCEACCOUNT": "Pārbaudīt \"Salesforce\" kontu",
+        "TEST_ZENDESKACCOUNT": "Pārbaudīt Zendesk kontu",
+        "TEST_FRESHDESKACCOUNT": "Pārbaudīt Freshdesk kontu",
+        "TEST_SUGARCRMACCOUNT": "Pārbaudīt SugarCRM kontu",
+        "TEST_SALESFORCEACCOUNT": "Pārbaudīt Salesforce kontu",
         "INTEGRATION_TAB": "Integrācijas cilne",
         "NEW_TAB": "Jauna cilne",
         "DESKACCOUNTS": "Darbvirsmas konti",
         "ADD_DESKCONFIGURATION": "Pievienot darbvirsmas konfigurāciju",
         "NEW_DESKCONFIGURATION": "Jauna darbvirsmas konfigurācija",
         "DELETE_DESKCONFIGURATION": "Dzēst darbvirsmas konfigurāciju",
-        "ZOHOACCOUNTS": "\"Zoho\" konti",
-        "EDIT_ZOHOACCOUNT": "Rediģēt \"Zoho\" kontu",
-        "TEST_ZOHOACCOUNT": "Pārbaudīt \"Zoho\" kontu",
-        "DELETE_ZOHOACCOUNT": "Dzēst \"Zoho\" kontu",
-        "ADD_ZOHOACCOUNT": "Pievienot \"Zoho\" kontu",
-        "NEW_ZOHOACCOUNT": "Jauns \"Zoho\" konts",
-        "ADD_ZOHOCONFIGURATION": "Pievienot \"Zoho\" konfigurāciju",
-        "NEW_ZOHOCONFIGURATION": "Jauna \"Zoho\" konfigurācija",
+        "ZOHOACCOUNTS": "Zoho konti",
+        "EDIT_ZOHOACCOUNT": "Rediģēt Zoho kontu",
+        "TEST_ZOHOACCOUNT": "Pārbaudīt Zoho kontu",
+        "DELETE_ZOHOACCOUNT": "Dzēst Zoho kontu",
+        "ADD_ZOHOACCOUNT": "Pievienot Zoho kontu",
+        "NEW_ZOHOACCOUNT": "Jauns Zoho konts",
+        "ADD_ZOHOCONFIGURATION": "Pievienot Zoho konfigurāciju",
+        "NEW_ZOHOCONFIGURATION": "Jauna Zoho konfigurācija",
         "AUTHTOKEN": "Atļaujas marķieris",
-        "HOST": "Saimnieks",
-        "DELETE_ZOHOCONFIGURATION": "Dzēst \"Zoho\" konfigurāciju",
+        "HOST": "Serveris",
+        "DELETE_ZOHOCONFIGURATION": "Dzēst Zoho konfigurāciju",
         "PAGE": "Lappuse",
-        "ROWSPERPAGE": "Rindas lappusē",
+        "ROWSPERPAGE": "Ieraksti lappusē",
         "OF": "no",
-        "ACCESS_KEY": "\"vTiger\" piekļuves atslēga",
-        "ADD_VTIGERACCOUNT": "Pievienot jaunu \"vTiger\" kontu",
-        "ADD_VTIGERCONFIGURATION": "Pievienot \"vTiger\" konfigurāciju",
-        "DELETE_VTIGERACCOUNT": "Dzēst \"vTiger\" kontu",
-        "DELETE_VTIGERCONFIGURATION": "Dzēst \"vTiger\" konfigurāciju",
-        "EDIT_VTIGERACCOUNT": "Rediģēt \"vTiger\" kontu",
-        "MODULE_NAME": "\"vTiger\" moduļa nosaukums",
-        "NEW_VTIGERACCOUNT": "Jauns \"vTiger\" konts",
-        "NEW_VTIGERCONFIGURATION": "Izveidot \"vTiger\" konfigurāciju",
-        "TEST_VTIGERACCOUNT": "Pārbaudīt \"vTiger\" kontu",
-        "VTIGERACCOUNTS": "\"vTiger\" konti",
-        "VTIGER_USER_NAME": "\"vTiger\" lietotājvārds"
+        "ACCESS_KEY": "vTiger piekļuves atslēga",
+        "ADD_VTIGERACCOUNT": "Pievienot jaunu vTiger kontu",
+        "ADD_VTIGERCONFIGURATION": "Pievienot vTiger konfigurāciju",
+        "DELETE_VTIGERACCOUNT": "Dzēst vTiger kontu",
+        "DELETE_VTIGERCONFIGURATION": "Dzēst vTiger konfigurāciju",
+        "EDIT_VTIGERACCOUNT": "Rediģēt vTiger kontu",
+        "MODULE_NAME": "vTiger moduļa nosaukums",
+        "NEW_VTIGERACCOUNT": "Jauns vTiger konts",
+        "NEW_VTIGERCONFIGURATION": "Izveidot vTiger konfigurāciju",
+        "TEST_VTIGERACCOUNT": "Pārbaudīt vTiger kontu",
+        "VTIGERACCOUNTS": "vTiger konti",
+        "VTIGER_USER_NAME": "vTiger lietotājvārds"
     }
 }
\ No newline at end of file
index 68417e1..24447c9 100644 (file)
@@ -23,7 +23,7 @@
         "ADD_PROJECT": "Pievienot projektu",
         "EDIT_PROJECT": "Rediģēt projektu",
         "DELETE_PROJECT": "Dzēst projektu",
-        "JSCRIPTY": "<i>Jscripty</i>",
+        "JSCRIPTY": "Jscripty",
         "ID": "ID",
         "PROJECT": "Projekts",
         "CREATED_AT": "Izveidots",
@@ -50,7 +50,7 @@
         "NO_RESULTS_AVAILABLE": "Rezultāti nav pieejami",
         "TOTAL": "Kopā",
         "ANSWER": "Atbilde",
-        "EXPORT_TO_CSV": "Eksportēt uz <i>CSV</i>",
+        "EXPORT_TO_CSV": "Eksportēt uz CSV",
         "NO_ANSWERS_AVAILABLE": "Atbildes nav pieejamas",
         "DELETE_SESSION": "Dzēst sesiju",
         "RESET_SESSION": "Atjaunot sesiju",
index 29558eb..75c8f09 100644 (file)
@@ -1,7 +1,7 @@
 {
     "MAIL": {
         "ERRORS": {
-            "TEXT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "TEXT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "VALUE_REQUIRED": "Obligāts lauks",
             "TEXT_REQUIRED": "Obligāts lauks",
             "NAME_REQUIRED": "Obligāts lauks",
@@ -61,7 +61,7 @@
             "NAME": "Tiek atbalstīti tikai numuri, burti un atsevišķas rakstzīmes (._)",
             "USERNAME": "Autentifikācijai izmantotais lietotājvārds",
             "PASSWORD": "Parole, ko izmanto autentifikācijai",
-            "SECURE": "Ja tā ir patiesa, savienojumā ar serveri tiks izmantots <i>TLS</i> protokols",
+            "SECURE": "Ja tā ir patiesa, savienojumā ar serveri tiks izmantots TLS protokols",
             "FONT_FAMILY": "Noklusējuma fontu saime",
             "FONT_SIZE": "Noklusējuma fonta izmērs",
             "MARK_AS_UNREAD": "Iespējot/atspējot aģentu, lai atzīmētu kā nelasītu pēdējo mijiedarbības ziņojumu"
         "TOTAL": "Kopā",
         "IN": "Iekš",
         "OUT": "Ārpus",
-        "IMAP_STATUS": "<i>IMAP</i> statuss",
-        "SMTP_STATUS": "<i>SMTP</i> statuss",
+        "IMAP_STATUS": "IMAP statuss",
+        "SMTP_STATUS": "SMTP statuss",
         "DISABLED": "Atspējots",
         "CONNECTED": "Savienots",
         "NEVER_VERIFIED": "Nekad nav apstiprināts",
         "ERROR": "Kļūda",
         "EDIT_ACCOUNT": "Rediģēt kontu",
-        "VERIFY_SMTP": "Pārbaudīt <i>SMTP</i> protokolu",
+        "VERIFY_SMTP": "Pārbaudīt SMTP protokolu",
         "VERIFIED": "Verificēts",
-        "VERIFYSMTP_MAILACCOUNT": "Pārbaudīt <i>SMTP</i> protokolu",
+        "VERIFYSMTP_MAILACCOUNT": "Pārbaudīt SMTP protokolu",
         "GOTOREALTIME_MAILACCOUNT": "Doties uz reāllaika e-pasta kontu",
         "GOTO_MAILACCOUNT": "Doties uz reāllaika e-pasta kontu",
         "TEXT": "Teksts",
         "TO": "Uz",
         "FROM": "No",
         "DATE": "Datums",
-        "CC": "<i>CC</i> (kopija)",
+        "CC": "CC (kopija)",
         "REPLY": "Atbildēt",
         "REPLY_ALL": "Atbildēt visiem",
         "FORWARD": "Pārsūtīt",
         "SUBJECT": "Temats",
-        "BCC": "<i>BCC</i> (diskrētā kopija)",
+        "BCC": "BCC (diskrētā kopija)",
         "SEND": "Nosūtīt",
         "ATTACHMENT": "Pielikums",
         "ATTACHMENTS": "Pielikumi",
         "CONNTIMEOUT": "Savienojuma noildze (sekundēs)",
         "AUTHTIMEOUT": "Autentifikācijas noildze (sekundēs)",
         "DELETE": "Dzēst e-pastu no servera",
-        "SSL": "Standarts <i>SSL</i>",
+        "SSL": "Standarts SSL",
         "KEEPALIVE": "Darbojas",
         "POLLING": "Aptauja",
-        "SMTP": "<i>SMTP</i> protokols",
+        "SMTP": "SMTP protokols",
         "SELECTED": "Atlasīts",
         "SELECT_ALL": "Atlasīt visus",
         "SELECT_NONE": "Neizvēlēties nevienu",
         "EDIT_AGENT": "Rediģēt aģentu",
         "EDIT_CLOSE": "Rediģēt aizvēršanu",
         "DISPOSITION": "Statuss",
-        "GOTOIF": "\"GotoIf\"",
-        "EDIT_GOTOIF": "Rediģēt <i>GotoIf</i>",
+        "GOTOIF": "GotoIf",
+        "EDIT_GOTOIF": "Rediģēt GotoIf",
         "CONDITION": "Nosacījums",
         "TRUEPRIORITY": "Patiesa prioritāte",
         "FALSEPRIORITY": "Aplama prioritāte",
-        "GOTOP": "<i>GotoP</i>",
-        "EDIT_GOTOP": "Rediģēt <i>GotoP</i>",
+        "GOTOP": "GotoP",
+        "EDIT_GOTOP": "Rediģēt GotoP",
         "PRIORITY": "Prioritāte",
-        "NOOP": "\"Noop\"",
-        "EDIT_NOOP": "Rediģēt <i>Noop</i>",
+        "NOOP": "Noop",
+        "EDIT_NOOP": "Rediģēt Noop",
         "VALUE": "Vērtība",
         "QUEUE": "Rinda",
         "EDIT_QUEUE": "Rediģēt rindu",
         "ACTIVE": "Aktīvs",
         "SECURE": "Drošs",
         "AUTHENTICATION": "Autentifikācija",
-        "SMTP_HOST": "<i>SMTP</i> resursdators",
-        "SMTP_PORT": "<i>SMTP</i> pieslēgvieta",
-        "IMAP_HOST": "<i>IMAP</i> resursdators",
-        "IMAP_PORT": "<i>IMAP</i> pieslēgvieta",
+        "SMTP_HOST": "SMTP resursdators",
+        "SMTP_PORT": "SMTP pieslēgvieta",
+        "IMAP_HOST": "IMAP resursdators",
+        "IMAP_PORT": "IMAP pieslēgvieta",
         "CONFIRM_PASSWORD": "Apstiprināt paroli",
         "SELECT_STATUS": "Izvēlieties statusu",
         "OPENED": "Atvērt",
         "ACCOUNT": "Konts",
         "OPEN": "Atvērt",
         "KEY": "Atslēga",
-        "SMTPSERVICE": "<i>SMTP</i> pakalpojums",
+        "SMTPSERVICE": "SMTP pakalpojums",
         "UNKNOWN": "Nezināms",
         "UNREGISTERED": "Nereģistrēts",
         "UNAVAILABLE": "Nav pieejams",
index 69faf0f..fa7ea32 100644 (file)
@@ -1,7 +1,7 @@
 {
     "MOTIONDIALER": {
         "LEGEND": {
-            "CUSTOM_APPLICATION": "(*) – Pielāgots pieteikums."
+            "CUSTOM_APPLICATION": "(*) – Pielāgota aplikācija."
         },
         "ERRORS": {
             "EMAIL_REQUIRED": "Obligāts lauks",
@@ -89,7 +89,7 @@
             "CALLYSQUAREPROJECTPREVIEW2": "Izvēloties interaktīvās balss atbildes projektu, zvanītājs pārsūta zvanu uz interaktīvās balss atbildi, kad klients noliek klausuli vai ir nesasniedzams (interaktīvās balss atbilde tiks novirzīta aģentam)",
             "RUNIFHANGUPAGENT": "Palaist \"Cally Square\" projektu pat tad, ja aģents noliek klausuli",
             "CALLYSQUAREPROJECT2": "Izvēloties interaktīvās balss atbildes projektu, zvanītājs pārsūta zvanu uz interaktīvās balss atbildi pēc rindas (ja rinda beidzas ar noildzi)",
-            "DIALORDERBYSCHEDULEDAT": "Saņemt kontaktus no \"Hopper\" (dilstošā vai augošā secībā).",
+            "DIALORDERBYSCHEDULEDAT": "Saņemt kontaktus no Hopper (dilstošā vai augošā secībā).",
             "DIALRECALLINQUEUE": "Zvana atjaunošanas aicinājums aģentiem rindā",
             "DIALRECALLMETIMEOUT": "Laika intervāls (minūtēs) atzvanīšanas spēkā esamības termiņam",
             "PRIORITY": "Prioritāte sarakstā",
             "AMDBETWEENWORDSSILENCE": "Minimālais klusuma ilgums pēc vārda, lai ņemtu vērā audio, kas seko kā jauns vārds",
             "AMDMAXIMUMNUMBEROFWORDS": "Maksimālais vārdu skaits sasveicināšanās laikā. Ja SASNIEGTS, tiek konstatēts kā mašīna",
             "CALLYSQUAREPROJECT": "Izvēloties interaktīvās balss atbildes projektu, zvanītājs pārsūta zvanu uz interaktīvās balss atbildi pirms rindas",
-            "PREFIX": "Tālruņa priedēklis",
+            "PREFIX": "Prefikss",
             "ACTIVE": "Aktīvs",
             "AGENTTIMEOUT": "Cik ilgi (sekundēs) zvanīt aģenta ierīcei",
             "MAXLENGTH": "Maksimālais zvanītāju skaits, kam ir atļauts gaidīt rindā (0 = neierobežots)",
         },
         "NO_AVAILABLE_INFO": "Nav pieejama informācija",
         "TIMEOUT": "Noildze",
-        "CALLYSQUAREPROJECTPREVIEW": "\"Cally Square\" projekta priekšskatījums",
-        "CALLYSQUAREPROJECTPREVIEW2": "\"Cally Square\" projekts pēc priekšskatījuma",
-        "RUNIFHANGUPAGENT": "Palaist \"Cally Square\" projektu pat tad, ja aģents noliek klausuli",
-        "CALLYSQUAREPROJECT2": "\"Cally Square\" projekts pēc rindas",
+        "CALLYSQUAREPROJECTPREVIEW": "Cally Square projekta priekšskatījums",
+        "CALLYSQUAREPROJECTPREVIEW2": "Cally Square projekts pēc priekšskatījuma",
+        "RUNIFHANGUPAGENT": "Palaist Cally Square projektu pat tad, ja aģents noliek klausuli",
+        "CALLYSQUAREPROJECT2": "Cally Square projekts pēc rindas",
         "NO_AGENT_ONLINE": "Nav aģenta tiešsaistē",
         "PARTIALPAUSE": "Daļēja pauze",
         "ALL": "Visi",
         "RESTORECONTACTS": "Atjaunot kontaktpersonas",
         "NO_SUCH_NUMBER": "Nav šāda numura",
         "DIALORDERBYSCHEDULEDAT": "Kārtot pēc datuma",
-        "ASC": "<i>ASC</i>",
+        "ASC": "ASC",
         "DESC": "Apraksts",
         "RECALLAGENT": "Atzvanošais aģents",
         "DIALRECALLINQUEUE": "Atzvanīt rindā",
         "RECALLFAILEDTIMEOUT": "Atzvanīšana neizdevās",
         "PREVIEW_CAMPAIGN": "Kampaņu priekšskatīšana",
         "PREVIEW_CAMPAIGNS": "Kampaņu priekšskatīšana",
-        "AMD": "\"Asterisk\" automātiskā atbildētāja noteikšana <i>(AMD)</i>",
+        "AMD": "\"Asterisk\" automātiskā atbildētāja noteikšana (AMD)",
         "AMDTOTALANALYSISTIME": "Kopējais analīzes laiks",
-        "AMDACTIVE": "<i>AMD</i>",
+        "AMDACTIVE": "AMD",
         "AMDINITIALSILENCE": "Sākotnējais klusums",
         "AMDGREETING": "Sasveicināšanās",
         "AMDAFTERGREETINGSILENCE": "Klusums pēc sasveicināšanās",
         "EDIT_CAMPAIGN": "Rediģēt kampaņu",
         "LIMITED": "Ierobežots",
         "IVR_CAMPAIGNS": "Interaktīvās balss atbildes kampaņas",
-        "MOTIONDIALER": "\"Motion Bull\"",
+        "MOTIONDIALER": "Motion Bull",
         "QUEUECAMPAIGNS": "Rindas kampaņas",
         "IVRCAMPAIGNS": "Interaktīvās balss atbildes kampaņas",
         "MANAGED": "Pārvaldīts",
         "AVAILABLE_CONTACTS_FINISHED": "Pieejamie kontakti ir pabeigti",
         "HISTORY": "Vēsture",
         "SCHEDULEDAT": "Ieplānots",
-        "HOPPERBLACKS": "\"Hopper\" melnais saraksts",
+        "HOPPERBLACKS": "Hopper melnais saraksts",
         "NO_HOPPERBLACK_AVAILABLE": "Nav pieejami vienumi",
-        "HOPPERFINALS": "\"Hopper Final\"",
+        "HOPPERFINALS": "Hopper Final",
         "NO_HOPPERFINAL_AVAILABLE": "Nav pieejami vienumi",
         "HOPPERHISTORIES": "Zvanu vēsture",
         "NO_HOPPERHISTORY_AVAILABLE": "Nav pieejami vienumi",
         "RESPONSETIME": "Reakcijas laiks",
         "ENDTIME": "Beigu laiks",
         "STATUS": "Statuss",
-        "HOPPERS": "\"Hopper\"",
+        "HOPPERS": "Hopper",
         "NO_HOPPER_AVAILABLE": "Nav pieejami vienumi",
-        "EDIT_HOPPER": "Rediģēt \"Hopper\"",
-        "DELETE_HOPPER": "Dzēst \"Hopper\"",
+        "EDIT_HOPPER": "Rediģēt Hopper",
+        "DELETE_HOPPER": "Dzēst Hopper",
         "FINAL": "Galīgais",
         "BLACKLIST": "Melnais saraksts",
         "NAME": "Nosaukums",
         "EDIT_VOICEDISPOSITION": "Rediģēt balss statusu",
         "EDIT_VOICEQUEUE": "Rediģēt balss rindu",
         "DELETE_VOICEQUEUE": "Dzēst balss rindu",
-        "MOHSOUNDS": "<i>Moh</i> skaņas",
+        "MOHSOUNDS": "Moh skaņas",
         "STRATEGY": "Stratēģija",
         "DESCRIPTION": "Apraksts",
         "INTERVAL": "Laika intervāls",
         "ORIGINATETIMEOUT": "Izcelsmes noildze",
         "QUEUEOPTIONS": "Rindas iespējas",
         "QUEUETIMEOUT": "Rindas noildze",
-        "CALLYSQUAREPROJECT": "\"Cally Square\" projekts",
+        "CALLYSQUAREPROJECT": "Cally Square projekts",
         "RETRYANDFREQUENCY": "Atkārtota mēģinājuma iestatījumi",
         "GLOBAL": "Globāls",
         "GLOBALMAXRETRY": "Maksimālais atkārtojumu skaits",
         "DIRECTORY": "Katalogs",
         "AUDIOFILES": "Audiodatnes",
         "RECORDINGS": "Ieraksti",
-        "CHANSPY": "\"ChanSpy\"",
+        "CHANSPY": "ChanSpy",
         "PREFIX": "Priedēklis",
         "OPTIONS": "Iespējas",
         "AUTH": "Autorizācija",
-        "ADD_CHANSPY": "Pievienot \"ChanSpy\"",
-        "EDIT_CHANSPY": "Rediģēt \"ChanSpy\"",
-        "DELETE_CHANSPY": "Dzēst \"ChanSpy\"",
+        "ADD_CHANSPY": "Pievienot ChanSpy",
+        "EDIT_CHANSPY": "Rediģēt ChanSpy",
+        "DELETE_CHANSPY": "Dzēst ChanSpy",
         "AGENTS": "Aģenti",
         "TELEPHONES": "Tālruņi",
         "QUEUES": "Rindas",
         "QUEUE_PARAMETERS": "Rindas parametri",
         "ABANDONED_CALLS": "Pamesti zvani",
         "OUTBOUND_CALLS": "Izejošie zvani",
-        "AGI": "<i>AGI</i>",
+        "AGI": "AGI",
         "DIAL": "Skala",
         "INTERNALDIAL": "Iekšējais zvans",
         "EXTERNALDIAL": "Ārējā skala",
         "QUEUE": "Rinda",
         "SET": "Iestatīt",
         "VOICEMAIL": "Balss pasts",
-        "GOTO": "<i>GoTo</i>",
+        "GOTO": "GoTo",
         "HANGUP": "Nolikt klausuli",
         "CUSTOM": "Pielāgots",
-        "PROJECT": "\"Cally-Square\" projekts",
+        "PROJECT": "Cally-Square projekts",
         "TECHNOLOGY/RESOURCE": "Tehnoloģija/resurss",
         "URL": "Tīmekļa adrese",
         "EDIT_APP": "Rediģēt lietojumprogrammu",
         "AUDIO_FILES": "Audiodatnes",
         "ANNOUNCE_OVERRIDES": "Paziņot par ignorēšanu",
         "MACRO": "Makro",
-        "GOSUB": "<i>GoSub</i>",
+        "GOSUB": "GoSub",
         "RULE": "Noteikums",
         "POSITION": "Pozīcija",
         "ANSWER": "Atbilde",
         "VALUE": "Vērtība",
-        "MAILBOX@CONTEXT": "<i>Mailbox@Context</i>",
+        "MAILBOX@CONTEXT": "Mailbox@Context",
         "EXTENSION": "Paplašinājums",
         "PRIORITY": "Prioritāte",
         "HANGUP_CAUSE": "Klausules nolikšanas iemesls",
         "NO_MESSAGE_AVAILABLE": "Nav pieejams neviens ziņojums",
         "NO_SOUND_AVAILABLE": "Nav skaņu",
         "VOICERECORDINGS": "Balss ieraksti",
-        "CHANSPIES": "\"ChanSpy\"",
+        "CHANSPIES": "ChanSpy",
         "VOICE": "Balss",
         "REALTIME": "Reāllaika",
         "ID": "ID",
         "VOICEMAIL_CONTEXT": "Konteksts",
         "NO_MOHSOUND_AVAILABLE": "Nav pieejama noturēšanas mūzika",
-        "FILE": "Datne",
+        "FILE": "Fails",
         "ADD_MOHSOUND": "Pievienot noturēšanas mūziku",
         "DOWNLOAD_MOHSOUND": "Lejupielādēt noturēšanas mūziku",
         "DELETE_MOHSOUND": "Dzēst noturēšanas mūziku",
         "NEW_CONTEXT": "Jauns konteksts",
         "NEW_VOICEMAIL": "Jauns balss pasts",
         "NEW_MUSICONHOLD": "Jauna noturēšanas mūzika",
-        "NEW_CHANSPY": "Jauns \"ChanSpy\"",
-        "PENALTY": "Sods",
+        "NEW_CHANSPY": "Jauns ChanSpy",
+        "PENALTY": "Prioritāte",
         "ADD_TEAM_TO_VOICEQUEUE": "Pievienot komandu balss rindai",
         "ADD_AGENT_TO_VOICEQUEUE": "Pievienot aģentu balss rindai",
         "EDIT_DIAL": "Rediģēt numuru",
-        "EDIT_AGI": "Rediģēt <i>AGI</i>",
+        "EDIT_AGI": "Rediģēt AGI",
         "EDIT_INTERNALDIAL": "Rediģēt iekšējo numuru",
         "EDIT_EXTERNALDIAL": "Rediģēt ārējo numuru",
         "EDIT_RINGGROUP": "Rediģēt zvana grupu",
         "TRUNKS": "Maģistrāles",
         "REGISTRY": "Reģistrs",
         "NO_REGISTRY": "Nav reģistra",
-        "LOGGED_IN": "Pierakstījies (<i>SIP</i> savienots)",
+        "LOGGED_IN": "Pierakstījies (SIP savienots)",
         "PAUSED": "Apturēts",
         "DISPOSITION": "Statuss",
         "WAITING": "Gaida",
         "TALKING": "Runāšana",
-        "DID": "<i>DID</i>",
+        "DID": "DID",
         "CALLER": "Zvanītājs",
         "TOTAL": "Kopā",
         "ANSWERED": "Atbildēts",
index d50e0ab..3e1ec31 100644 (file)
@@ -1,7 +1,7 @@
 {
     "OPENCHANNEL": {
         "ERRORS": {
-            "TEXT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "TEXT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "VALUE_REQUIRED": "Obligāts lauks",
             "TEXT_REQUIRED": "Lauka teksts ir nepieciešams",
             "NAME_REQUIRED": "Obligāts lauks",
@@ -45,7 +45,7 @@
             "QUEUETRANSFERTIMEOUT_REQUIRED": "Obligāts lauks"
         },
         "HELP": {
-            "RECEIVEURI": "Automātiski ģenerēta <i>API</i> virkne, kas ir jāizmanto, lai saņemtu ziņojumus atvērtajā kanālā no ārējās lietojumprogrammas (izmantojot <i>POST</i> metodi). Noklikšķiniet uz starpliktuves pogas, lai to kopētu ",
+            "RECEIVEURI": "Automātiski ģenerēta API virkne, kas ir jāizmanto, lai saņemtu ziņojumus atvērtajā kanālā no ārējās lietojumprogrammas (izmantojot POST metodi). Noklikšķiniet uz starpliktuves pogas, lai to kopētu ",
             "REPLYURI": "Tīmekļa adrese, ar ko sazināsies atvērtais kanāls, nosūtot vai atbildot uz ziņojumu. Plašāku informāciju skatiet dokumentā <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">šeit</a>",
             "NAME": "Tiek atbalstīti tikai numuri, burti un atsevišķas rakstzīmes (._)",
             "LIST": "Kontaktpersonu pārvaldnieka saraksts, ko izmanto, lai saistītu kontaktpersonas",
@@ -61,7 +61,7 @@
         "TAGS": "Atzīmes",
         "SPYINTERACTION": "Spiegot",
         "NO_AGENT_ONLINE": "Nav aģenta tiešsaistē",
-        "GOTOREALTIME_OPENCHANNELQUEUE": "Iet uz reāllaika \"Open Channel\" rindu",
+        "GOTOREALTIME_OPENCHANNELQUEUE": "Iet uz reāllaika Open Channel rindu",
         "PARTIALPAUSE": "Daļēja pauze",
         "BUSY": "Aizņemts",
         "TIMER": "Taimers",
         "EDIT_AUTOREPLY": "Rediģēt automātisko atbildi",
         "AUTOREPLY": "Automātiskā atbilde",
         "NAME": "Nosaukums",
-        "OPENCHANNELQUEUES": "\"Open Channel\" rindas",
+        "OPENCHANNELQUEUES": "Open Channel rindas",
         "SEARCH_FOR_ANYONE": "Meklēt",
         "STRATEGY": "Stratēģija",
         "AGENT": "Aģents",
-        "GOTO": "\"Goto\"",
-        "GOTOIF": "\"Gotoif\"",
-        "NOOP": "\"Noop\"",
+        "GOTO": "Goto",
+        "GOTOIF": "Gotoif",
+        "NOOP": "Noop",
         "QUEUE": "Rinda",
         "EDIT_AGENT": "Rediģēt aģentu",
-        "EDIT_GOTO": "Rediģēt <i>Goto</i>",
-        "EDIT_NOOP": "Rediģēt <i>Noop</i>",
-        "EDIT_GOTOIF": "Rediģēt \"Gotoif\"",
+        "EDIT_GOTO": "Rediģēt Goto",
+        "EDIT_NOOP": "Rediģēt Noop",
+        "EDIT_GOTOIF": "Rediģēt Gotoif",
         "EDIT_QUEUE": "Rediģēt rindu",
         "CONDITION": "Nosacījums",
         "TRUEPRIORITY": "Patiesa prioritāte",
         "PRIORITY": "Prioritāte",
         "AGENT_TIMEOUT": "Aģenta noildze",
         "DESCRIPTION": "Apraksts",
-        "ADD_OPENCHANNELQUEUE": "Pievienot \"Open Channel\" rindu",
-        "EDIT_OPENCHANNELQUEUE": "Rediģēt \"Open Channel\" rindu",
-        "DELETE_OPENCHANNELQUEUE": "Dzēst \"Open Channel\" rindu",
+        "ADD_OPENCHANNELQUEUE": "Pievienot Open Channel rindu",
+        "EDIT_OPENCHANNELQUEUE": "Rediģēt Open Channel rindu",
+        "DELETE_OPENCHANNELQUEUE": "Dzēst Open Channel rindu",
         "PENALTY": "Sods",
-        "TEAMADD_OPENCHANNELQUEUE": "Pievienot komandu \"Open Channel\" rindai",
-        "AGENTADD_OPENCHANNELQUEUE": "Pievienot aģentu \"Open Channel\" rindai",
+        "TEAMADD_OPENCHANNELQUEUE": "Pievienot komandu Open Channel rindai",
+        "AGENTADD_OPENCHANNELQUEUE": "Pievienot aģentu Open Channel rindai",
         "ALL_AGENTS": "Visi aģenti",
         "SELECTED_AGENTS": "Atlasītie aģenti",
         "CREATED_AT": "Izveidots",
         "SAVE": "Saglabāt",
         "SETTINGS": "Iestatījumi",
         "GENERAL": "Vispārīgi",
-        "OPENCHANNELACCOUNTS": "\"Open Channel\" konti",
+        "OPENCHANNELACCOUNTS": "Open Channel konti",
         "MOTIONADDRESS": "Kustības adrese",
-        "ADD_OPENCHANNELACCOUNT": "Pievienot \"Open Channel\" kontu",
-        "EDIT_OPENCHANNELACCOUNT": "Rediģēt \"Open Channel\" kontu",
-        "DELETE_OPENCHANNELACCOUNT": "Dzēst \"Open Channel\" kontu",
-        "API": "<i>API</i>",
+        "ADD_OPENCHANNELACCOUNT": "Pievienot Open Channel kontu",
+        "EDIT_OPENCHANNELACCOUNT": "Rediģēt Open Channel kontu",
+        "DELETE_OPENCHANNELACCOUNT": "Dzēst Open Channel kontu",
+        "API": "API",
         "DISPOSITIONS": "Statusi",
         "WEBHOOKS": "Tīmekļa aizķeres",
         "ACTIONS": "Darbības",
         "OPENCHANNEL": "Atvērt kanālu",
         "ID": "ID",
         "TIMEOUT": "Noildze",
-        "OPENCHANNELDISPOSITIONS": "\"Open Channel\" statusi",
-        "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Nav pieejami \"Open Channel\" statusi",
-        "NEW_OPENCHANNELDISPOSITION": "Jauns \"Open Channel\" statuss",
-        "ADD_OPENCHANNELDISPOSITION": "Pievienot \"Open Channel\" statusu",
-        "EDIT_OPENCHANNELDISPOSITION": "Rediģēt \"Open Channel\" statusu",
-        "DELETE_OPENCHANNELDISPOSITION": "Dzēst \"Open Channel\" statusu",
-        "NEW_OPENCHANNELQUEUE": "Jauna \"Open Channel\" rinda",
+        "OPENCHANNELDISPOSITIONS": "Open Channel statusi",
+        "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Nav pieejamo Open Channel statusi",
+        "NEW_OPENCHANNELDISPOSITION": "Jauns Open Channel statuss",
+        "ADD_OPENCHANNELDISPOSITION": "Pievienot Open Channel statusu",
+        "EDIT_OPENCHANNELDISPOSITION": "Rediģēt Open Channel statusu",
+        "DELETE_OPENCHANNELDISPOSITION": "Dzēst Open Channel statusu",
+        "NEW_OPENCHANNELQUEUE": "Jauna Open Channel rinda",
         "NEW_OPENCHANNELACCOUNT": "Jauns atvērto kanālu konts",
         "NO_AVAILABLE_INFO": "Nav pieejama informācija",
         "ALL_TEAMS": "Visas komandas",
         "NO_INTERACTION_AVAILABLE": "Nav pieejama saziņa",
         "SELECT_ACCOUNT": "Atlasīt kontu",
         "GOTOP": "\"Gotop\"",
-        "EDIT_GOTOP": "Rediģēt <i>Gotop</i>",
+        "EDIT_GOTOP": "Rediģēt Gotop",
         "EDIT_CLOSE": "Rediģēt aizvēršanu",
         "INFO": "Informācija",
         "KEY": "Atslēga",
         "PHONE_STATUS": "Tālruņa statuss",
         "PAUSE": "Pauze",
         "LOGOUT": "Atteikšanās",
-        "AGENTADD_QUEUE": "Pievienot aģentu \"Open Channel\" rindai",
+        "AGENTADD_QUEUE": "Pievienot aģentu Open Channel rindai",
         "UNPAUSE": "Pārtraukt pauzi",
         "DEFAULT_PAUSE": "Noklusējuma pauze",
         "LOGGED_IN": "Pieteicies",
         "MAIL": "E-pasts",
         "SMS": "Īsziņa",
         "FAX": "Fakss",
-        "AGENTSADD_QUEUE": "Pievienot aģentus \"Open Channel\" rindai",
+        "AGENTSADD_QUEUE": "Pievienot aģentus Open Channel rindai",
         "INTERACTIONS_OPENCHANNELACCOUNT": "Doties uz saziņu",
         "REFRESH_INTERACTIONS": "Pārlādēt saziņu",
         "DELETE_INTERACTION": "Dzēst saziņu",
         "TOKEN": "Marķieris",
         "EDIT_TAG": "Rediģēt atzīmi",
         "TAG": "Atzīme",
-        "AGENTADD_OPENCHANNELACCOUNT": "Pievienot aģentu \"Openchannel\" kontam",
+        "AGENTADD_OPENCHANNELACCOUNT": "Pievienot aģentu Openchannel kontam",
         "CANNED_ANSWER_NOT_FOUND": "Netika atrastas standarta atbildes",
         "CANNED_ANSWER_SEARCH": "Ievadiet tekstu, lai meklētu standarta atbildi",
         "MAPKEY": "Kartes atslēga",
index b948af6..96f9e05 100644 (file)
@@ -2,7 +2,7 @@
     "SETTINGS": {
         "PREFERRED": "Vēlamais logotips",
         "DEFAULT_PREFERRED": "Noklusētais logotips",
-        "MOTIONBAR": "\"Motionbar\"",
+        "MOTIONBAR": "Motionbar",
         "ERRORS": {
             "ADDRESS_REQUIRED": "Obligāts lauks",
             "MIN_INTERNAL_REQUIRED": "Obligāts lauks",
         "HELP": {
             "ADDRESS": "Ārējā (publiskā) IP adrese",
             "LOCALNETADDRESS": "Vietējā IP adrese/apakštīkls",
-            "SMTP_SECURE": "Ja tā ir patiesa, savienojumā ar serveri tiks izmantots <i>TLS</i> protokols",
+            "SMTP_SECURE": "Ja tā ir patiesa, savienojumā ar serveri tiks izmantots TLS protokols",
             "SMTP_USERNAME": "Autentifikācijai izmantotais lietotājvārds",
             "SMTP_PASSWORD": "Parole, ko izmanto autentifikācijai",
             "EMAILADDRESS": "Ziņojuma izcelsme \"E-pasta adrese (no)\"",
             "SECURITY_SUITE": "Iespējo drošās paroles formātu, obligāto paroles atiestatīšanu pēc pirmās pieteikšanās un paroles termiņa beigas pēc 90 dienām",
-            "MOTIONBARREMEMBERME": "Aktivizēt/atspējot \"Atcerēties mani\" iespēju \"Motion\" tālruņa joslā."
+            "MOTIONBARREMEMBERME": "Aktivizēt/atspējot \"Atcerēties mani\" iespēju Motion tālruņa joslā."
         },
-        "SMTP_SSL": "Protokola <i>SMTP</i> standarts <i>SSL</i>",
+        "SMTP_SSL": "Protokola SMTP standarts SSL",
         "CALL_RECORDING_ENCRYPTION": "Balss ieraksta šifrēšana",
-        "TURNADDR": "<i>TURN</i> adrese",
-        "TURN_USERNAME": "<i>TURN</i> lietotājvārds",
-        "TURN_PASSWORD": "<i>TURN</i> parole",
-        "WEBRTC": "\"WebRTC\"",
-        "CALLYSQUARE": "\"Cally Square\"",
+        "TURNADDR": "TURN adrese",
+        "TURN_USERNAME": "TURN lietotājvārds",
+        "TURN_PASSWORD": "TURN parole",
+        "WEBRTC": "WebRTC",
+        "CALLYSQUARE": "Cally Square",
         "ENABLED": "Iespējots",
         "DISABLED": "Atspējots",
         "UNLIMITED_CHANNELS": "Neierobežoti kanāli",
         "MAIL": "E-pasts",
         "MESSAGING": "Īsziņa",
         "FAX": "Fakss",
-        "OPENCHANNEL": "Atvērt kanālu",
+        "OPENCHANNEL": "Open channel",
         "AGENTS": "Aģenti",
         "USERS": "Lietotāji",
         "TELEPHONES": "Tālruņi",
         "STAFF": "Personāls",
         "CHANNELS": "Kanāli",
         "MODULES": "Moduļi",
-        "CM": "Kontaktpersonu pārvaldnieks",
+        "CM": "Kontaktu pārvaldnieks",
         "DIALER": "Zvanītājs",
-        "JSCRIPTY": "<i>Jscripty</i>",
+        "JSCRIPTY": "Jscripty",
         "CUSTOM": "Pielāgošana",
         "UPDATE": "Atjaunināt",
         "OTHERS": "Citi",
         "SETTINGS": "Iestatījumi",
         "GENERAL": "Vispārīgi",
-        "SMTP": "<i>SMTP</i> protokols",
+        "SMTP": "SMTP protokols",
         "NETWORKS": "Tīkli",
         "UPDATES": "Atjauninājumi",
         "LICENSE": "Licence",
         "PM2_LOGS": "Straumēt visas procesu žurnāldatnes, ja vien nav sniegts konkrēts procesa ID vai nosaukums",
         "PASSWORD": "Parole",
         "NO_AVAILABLE_INFO": "Nav pieejama informācija",
-        "STUNADDR": "<i>STUN </i>adrese",
+        "STUNADDR": "STUN adrese",
         "CHANGELOG": "Izmaiņu žurnāls",
         "CURRENT_VERSION": "Pašreizējā versija",
         "CUSTOMIZATIONS": "Pielāgojumi",
-        "LOCALNETADDRESS": "\"Localnet\" adrese",
+        "LOCALNETADDRESS": "Lokālā tīkla adrese",
         "NEW_VERSION": "Jauna versija",
         "TRIAL_VERSION": "Izmēģinājuma versija",
         "TOKEN": "Marķieris",
         "ANNUALLY": "Katru gadu",
         "MOTIONBARAUTOUPDATER": "Automātiskais atjaunotājs",
         "MOTIONBARAUTOUPDATERURL": "Automātiskās atjaunināšanas tīmekļa adrese",
-        "JAWS": "\"Jaws\"",
+        "JAWS": "JAWS",
         "ENABLEEMAILPREVIEW": "Iespējot e-pasta priekšskatījumu",
         "REPORT": "Ziņojums",
         "SPLIT": "Dalītais pārskats",
-        "SPLITSIZECSV": "Dalītā pārskata izmērs (<i>CSV</i> formāts)",
-        "SPLITSIZEPDF": "Dalītā pārskata izmērs (<i>PDF</i> formāts)",
-        "SPLITSIZEXLSX": "Dalītā pārskata izmērs (<i>XLSX</i> formāts)",
-        "AGENTOMNIDESKTOPINTERFACE": "Aģenta \"Omni Desktop\" saskarne",
+        "SPLITSIZECSV": "Dalītā pārskata izmērs (CSV formāts)",
+        "SPLITSIZEPDF": "Dalītā pārskata izmērs (PDF formāts)",
+        "SPLITSIZEXLSX": "Dalītā pārskata izmērs (XLSX formāts)",
+        "AGENTOMNIDESKTOPINTERFACE": "Aģenta Omni Desktop saskarne",
         "MESSAGESALIGNMENT": "Ziņojumu izlīdzināšana",
         "ENTER_LICENSE": "Ievadiet savas licences datus",
-        "EXPIRATION_CHANGED_ADVISE": "Sazinieties ar \"xCALLY Motion Licence\" komandu, nosūtot gan savu veco, gan jauno lietotāja ID.",
+        "EXPIRATION_CHANGED_ADVISE": "Sazinieties ar xCALLY Motion komandu, nosūtot gan savu veco, gan jauno lietotāja ID.",
         "EXPIRATION_REASON_MESSAGE_DISABLED": "Jūsu licence ir atspējota.",
         "UPDATE_LICENSE_MANUALLY": "Vai vēlaties manuāli atjaunināt savu licenci?",
         "ADDONS": "Papildinājumi",
index 348fb8d..cde4e1a 100644 (file)
@@ -1,15 +1,15 @@
 {
     "SMS": {
         "ERRORS": {
-            "TEXT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "TEXT_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "TEXT_REQUIRED": "Obligāts lauks",
             "VALUE_REQUIRED": "Obligāts lauks",
-            "SENDERSTRING_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "SENDERSTRING_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "SENDERSTRING_MUST_VALID_PATTERN": "Nepareizs formāts",
             "METHOD_REQUIRED": "Obligāts lauks",
             "MOTIONPROXY_REQUIRED": "Obligāts lauks",
             "MOTIONPROXY_MUST_VALID_URL": "Nepareizs formāts",
-            "KEY_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "KEY_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "KEY_REQUIRED": "Obligāts lauks",
             "NAME_REQUIRED": "Obligāts lauks",
             "AGENT_TIMEOUT_REQUIRED": "Obligāts lauks",
@@ -58,8 +58,8 @@
             "MOTIONPROXY": "Laukam ir jābūt formatētam šādi: <protocol>: //<ipaddress>[:<port>]. Piemērs: https://XYZW",
             "NAME": "Tiek atbalstīti tikai numuri, burti un atsevišķas rakstzīmes (._)",
             "LIST": "Kontaktpersonu pārvaldnieku saraksts tiek izmantots, lai saistītu kontaktpersonas",
-            "RECEIVEURL": "Šī ir automātiski ģenerētā <i>API </i>virkne, kas ir jāizmanto, lai saņemtu īsziņas jūsu konta ietvaros no īsziņu pakalpojumu sniedzēja (jāizmanto <i>POST</i> metode): noklikšķiniet uz starpliktuves pogas, lai to kopētu",
-            "DELIVERYREPORTURL": "Šī ir automātiski ģenerētā <i>API</i> virkne, kas ir jāizmanto, lai saņemtu īsziņu piegādes ziņojumu no jūsu īsziņu pakalpojumu sniedzēja (jāizmanto <i>POST</i> metode): noklikšķiniet uz starpliktuves pogas, lai to kopētu"
+            "RECEIVEURL": "Šī ir automātiski ģenerētā API virkne, kas ir jāizmanto, lai saņemtu īsziņas jūsu konta ietvaros no īsziņu pakalpojumu sniedzēja (jāizmanto POST metode): noklikšķiniet uz starpliktuves pogas, lai to kopētu",
+            "DELIVERYREPORTURL": "Šī ir automātiski ģenerētā API virkne, kas ir jāizmanto, lai saņemtu īsziņu piegādes ziņojumu no jūsu īsziņu pakalpojumu sniedzēja (jāizmanto POST metode): noklikšķiniet uz starpliktuves pogas, lai to kopētu"
         },
         "NO_SMSDISPOSITIONS_AVAILABLE": "Nav pieejams īsziņu statuss",
         "NO_SMSCANNEDANSWER_AVAILABLE": "Nav pieejamas standarta atbildes",
         "DELETE_SMSACCOUNT": "Dzēst īsziņu kontu",
         "LIST": "Saraksts",
         "FIDELITY": "Uzticība",
-        "API": "<i>API</i>",
+        "API": "API",
         "DISPOSITIONS": "Statusi",
         "WEBHOOKS": "Tīmekļa aizķeres",
         "ACTIONS": "Darbības",
         "CLOSEDAT": "Aizvērts",
         "DISPOSITION": "Statuss",
         "NOTES": "Piezīmes",
-        "GOTO": "\"Goto\"",
-        "GOTOIF": "\"Gotoif\"",
-        "NOOP": "\"Noop\"",
+        "GOTO": "Goto",
+        "GOTOIF": "Gotoif",
+        "NOOP": "Noop",
         "QUEUE": "Rinda",
         "TIMEOUT": "Noildze",
         "VALUE": "Vērtība",
         "EDIT_AGENT": "Rediģēt aģentu",
-        "EDIT_GOTO": "Rediģēt <i>Goto</i>",
-        "EDIT_NOOP": "Rediģēt <i>Noop</i>",
-        "EDIT_GOTOIF": "Rediģēt \"Gotoif\"",
+        "EDIT_GOTO": "Rediģēt Goto",
+        "EDIT_NOOP": "Rediģēt Noop",
+        "EDIT_GOTOIF": "Rediģēt Gotoif",
         "EDIT_QUEUE": "Rediģēt rindu",
         "CONDITION": "Nosacījums",
         "TRUEPRIORITY": "Patiesa prioritāte",
         "FALSEPRIORITY": "Aplama prioritāte",
         "PRIORITY": "Prioritāte",
-        "GOTOP": "\"Gotop\"",
-        "EDIT_GOTOP": "Rediģēt <i>Gotop</i>",
+        "GOTOP": "Gotop",
+        "EDIT_GOTOP": "Rediģēt Gotop",
         "EDIT_CLOSE": "Rediģēt aizvēršanu",
         "FILTER": "Filtrs",
         "SELECT_STATUS": "Izvēlieties statusu",
index bc6054e..733a885 100644 (file)
@@ -1,7 +1,7 @@
 {
     "STAFF": {
         "ERRORS": {
-            "ENCRYPTION": "<i>SRTP</i> (droša reāllaika protokola) šifrēšana",
+            "ENCRYPTION": "SRTP (droša reāllaika protokola) šifrēšana",
             "DTLSCERTFILE_REQUIRED": "Obligāts lauks",
             "DTLSPRIVATEKEY_REQUIRED": "Obligāts lauks",
             "FULLNAME_REQUIRED": "Obligāts lauks",
         },
         "HELP": {
             "LAST_PASSWORD_RESET_AT": "Pēdējais datums un laiks, kad parole ir mainīta. Ja ir iespējots vispārējais iestatījums, paroles derīguma termiņš beidzas pēc 90 dienām.",
-            "DTLSCERTFILE": "Saite uz derīgo <i>TLS</i> sertifikātu (<i>.crt</i> datni). Noklusējuma vērtība: '/etc/pki/tls/certs/motion.crt'.",
-            "DTLSPRIVATEKEY": "Saite uz sertifikāta privāto atslēgu (.<i>key</i> datne). Noklusējuma vērtība: '/etc/pki/tls/private/motion.key'.",
+            "DTLSCERTFILE": "Saite uz derīgo TLS sertifikātu (.crt datni). Noklusējuma vērtība: '/etc/pki/tls/certs/motion.crt'.",
+            "DTLSPRIVATEKEY": "Saite uz sertifikāta privāto atslēgu (.key datne). Noklusējuma vērtība: '/etc/pki/tls/private/motion.key'.",
             "ALLOWCODECS": "Atļautie kodeki pēc izvēles",
             "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",
             "SIPPORT": "Noklusējums: 5060",
-            "TYPE": "Nosaka <i>SIP</i> 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",
+            "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)",
             "MAILCAPACITY": "Maksimālais vienlaicīgu kanālu mijiedarbību skaits vienam aģentam (0 = neierobežots)",
             "FAXCAPACITY": "Maksimālais vienlaicīgu kanālu mijiedarbību skaits vienam aģentam (0 = neierobežots)",
             "CALLGROUP": "Aģenta zvanu grupa",
             "PICKUPGROUP": "Grupas, kurās aģents var atbildēt uz zvaniem",
             "USERNAME": "Tiek atbalstīti tikai numuri, burti un atsevišķas rakstzīmes (._)",
-            "ENCRYPTION": "<i>SRTP</i> (droša reāllaika protokola) šifrēšana",
+            "ENCRYPTION": "SRTP (droša reāllaika protokola) šifrēšana",
             "SAVE_PERMISSIONS": "Katra sadaļa, kurā ir visas nepabeigtās izmaiņas, tiks saglabāta"
         },
         "NO_PASSWORD_CHANGE": "Nav paroles maiņas",
         "SECURITY_SUITE": "Drošības komplekts",
         "LAST_PASSWORD_RESET_AT": "Pēdējā paroles atiestatīšana",
-        "SIP_WEBRTC": "<i>SIP</i>",
+        "SIP_WEBRTC": "SIP",
         "SETTINGS_WEBRTC": "Iestatījumi",
-        "WEBRTC": "\"WebRTC\"",
-        "DTLSCERTFILE": "<i>TLS</i> sertifikāts",
-        "DTLSPRIVATEKEY": "<i>TLS</i> sertifikāta privātā atslēga",
+        "WEBRTC": "WebRTC",
+        "DTLSCERTFILE": "TLS sertifikāts",
+        "DTLSPRIVATEKEY": "TLS sertifikāta privātā atslēga",
         "CONTEXT": "Konteksts",
         "RINGINUSE": "Izmantotais zvans",
         "USERS": "Lietotāji",
         "CHANGEPASSWORD_TELEPHONE": "Mainīt paroli",
         "LOGININPAUSE": "Pieteikšanās pauze",
         "HOST": "Saimnieks",
-        "NAT": "standarts <i>NAT</i>",
-        "CHANSPY": "\"ChanSpy\"",
+        "NAT": "standarts NAT",
+        "CHANSPY": "ChanSpy",
         "OTHER_CHANNELS": "Citi kanāli",
         "CHATCAPACITY": "Tērzēšanas jauda",
         "MAILCAPACITY": "E-pasta kapacitāte",
         "FAXCAPACITY": "Faksa jauda",
         "SMSCAPACITY": "Īsziņas ietilpība",
         "OPENCHANNELCAPACITY": "Atvērta kanāla ietilpība",
-        "MOTIONBAR": "\"Motion Bar\"",
+        "MOTIONBAR": "Motion Bar",
         "SETTINGS": "Iestatījumi",
         "AUTOANSWER": "Automātiskā atbilde",
         "ENABLESETTINGS": "Iespējot iestatījumus",
         "REMOTE_CONTROL": "Tālvadība",
         "REMOTECONTROL": "Tālvadība",
         "REMOTECONTROLPORT": "Tālvadības pults",
-        "SIP": "\"SIP\"",
-        "SIPEXPIRES": "<i>SIP</i> pārstāj būt spēkā (sek.)",
-        "SIPPORT": "<i>SIP</i> pieslēgvieta",
+        "SIP": "SIP",
+        "SIPEXPIRES": "SIP pārstāj būt spēkā (sek.)",
+        "SIPPORT": "SIP pieslēgvieta",
         "PENALTY": "Sods",
         "ACCOUNTNAME": "Konta nosaukums",
         "ADD_TELEPHONE": "Pievienot tālruni",
         "SELECTED_QUEUES_MAIL_INBOUND": "Atlasītās e-pasta rindas",
         "ALL_QUEUES_SMS_INBOUND": "Visas īsziņu rindas",
         "SELECTED_QUEUES_SMS_INBOUND": "Atlasītās īsziņu rindas",
-        "ALL_QUEUES_OPENCHANNEL_INBOUND": "Visas \"Open Channel\" rindas",
+        "ALL_QUEUES_OPENCHANNEL_INBOUND": "Visas Open Channel rindas",
         "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Atlasītās atvērto kanālu rindas",
         "ALL_QUEUES_FAX_INBOUND": "Visas faksa rindas",
         "SELECTED_QUEUES_FAX_INBOUND": "Atlasītās faksa rindas",
         "CALLFORWARDING": "Zvanu pāradresācija",
         "DND": "Netraucēt pauzes laikā",
         "UNANSWEREDCALLBADGE": "Rādīt neatbildētos zvanus",
-        "ENABLEDTMFTONE": "Iespējot <i>DTMF</i> toņus",
+        "ENABLEDTMFTONE": "Iespējot DTMF toņus",
         "AUTOANSWERDELAY": "Automātiskās atbildes aizkave (s)",
         "ENCRYPTION": "Šifrēšana",
         "CHANNELS": "Kanāli",
         "PHONE": "Tālrunis",
         "MOBILE": "Mobilais",
         "ALIAS": "Segvārds",
-        "ENABLEJAWSINTEGRATION": "Iespējot \"Jaws\" integrāciju",
+        "ENABLEJAWSINTEGRATION": "Iespējot JAWS integrāciju",
         "PREFIXREQUIRED": "Nepieciešams priedēklis",
         "ENABLEVIDEORECORDING": "Iespējot videoierakstīšanu",
         "OLD_PASSWORD": "Vecā parole",
         "ALL_FAXQUEUES": "Visas faksa rindas",
         "ALL_MAILACCOUNTS": "Visi e-pasta konti",
         "ALL_MAILQUEUES": "Visas e-pasta rindas",
-        "ALL_OPENCHANNELACCOUNTS": "Visi \"Open Channel\" konti",
-        "ALL_OPENCHANNELQUEUES": "Visas \"Open Channel\" rindas",
-        "ALL_PROJECTS": "Visi \"Cally Square\" projekti",
+        "ALL_OPENCHANNELACCOUNTS": "Visi Open Channel konti",
+        "ALL_OPENCHANNELQUEUES": "Visas Open Channel rindas",
+        "ALL_PROJECTS": "Visi Cally Square projekti",
         "ALL_QUEUECAMPAIGNS": "Visas rindas kampaņas",
         "ALL_SMSACCOUNTS": "Visi īsziņu konti",
         "ALL_SMSQUEUES": "Visas īsziņu rindas",
         "SELECTED_MAILQUEUES": "Atlasītās tērzēšanas rindas",
         "SELECTED_OPENCHANNELACCOUNTS": "Atlasītie atvērto kanālu konti",
         "SELECTED_OPENCHANNELQUEUES": "Atlasītās atvērto kanālu rindas",
-        "SELECTED_PROJECTS": "Atlasītie \"Cally Square\" projekti",
+        "SELECTED_PROJECTS": "Atlasītie Cally Square projekti",
         "SELECTED_QUEUECAMPAIGNS": "Atlasītās rindas kampaņas",
         "SELECTED_SMSACCOUNTS": "Atlasītie īsziņu konti",
         "SELECTED_SMSQUEUES": "Atlasītās īsziņu rindas",
         "USERADD_FAXQUEUES": "Pievienot faksa rindu lietotājam",
         "USERADD_MAILACCOUNTS": "Pievienot e-pasta kontu lietotājam",
         "USERADD_MAILQUEUES": "Pievienot e-pasta rindu lietotājam",
-        "USERADD_OPENCHANNELACCOUNTS": "Pievienot \"Open Channel\" kontu lietotājam",
-        "USERADD_OPENCHANNELQUEUES": "Pievienot \"Open Channel\" rindu lietotājam",
-        "USERADD_PROJECTS": "Pievienot \"Cally Square\" projektu lietotājam",
+        "USERADD_OPENCHANNELACCOUNTS": "Pievienot Open Channel kontu lietotājam",
+        "USERADD_OPENCHANNELQUEUES": "Pievienot Open Channel rindu lietotājam",
+        "USERADD_PROJECTS": "Pievienot Cally Square projektu lietotājam",
         "USERADD_QUEUECAMPAIGNS": "Pievienot rindas kampaņu lietotājam",
         "USERADD_SMSACCOUNTS": "Pievienot īsziņu kontu lietotājam",
         "USERADD_SMSQUEUES": "Pievienot īsziņu rindu lietotājam",
         "USERADD_VOICEQUEUES": "Pievienot balss rindu lietotājam",
-        "HOTDESK": "\"Karstais galds\"",
+        "HOTDESK": "Hotdesk režīms",
         "ADD_USERPROFILE": "Pievienojiet lietotāja profilu",
         "CANCEL": "Atcelt",
         "CLONE_USERPROFILE": "Klona lietotāja profils",
index a4224e0..19cdf01 100644 (file)
             "LOCATION_REQUIRED": "Obligāts lauks",
             "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
             "REFRESH_REQUIRED": "Obligāts lauks",
-            "TITLE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
-            "NAME_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{maks.}}",
+            "TITLE_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
+            "NAME_MAX_LENGTH": "Vērtībai jābūt ar maksimālo garumu {{max}}",
             "OUTPUT_REQUIRED": "Obligāts lauks",
             "REPORTFOLDER_REQUIRED": "Obligāts lauks",
             "REPORTSUBFOLDER_REQUIRED": "Obligāts lauks",
             "REPORTTYPE_REQUIRED": "Obligāts lauks"
         },
         "HELP": {
-            "T38PT_UDPTL": "<i>Es: yes,redundancy,maxdatagram=400</i>",
+            "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
             "SECRET": "Autentifikācijas parole",
             "HOST": "Domēna vai resursdatora nosaukums",
             "DEFAULTUSER": "Autentifikācijas lietotājvārds",
             "CALLERID": "Zvanītāja ID, formātā \"Name\" <number>",
             "REGISTRY": "Reģistra virkne, ja to pieprasa pakalpojumu sniedzējs, parasti defaultuser:secret@ host",
-            "FROMDOMAIN": "Iestatiet noklusēto no:domēnu <i>SIP</i> ziņojumos, darbojoties kā <i>SIP ua</i> (klients). Dažiem galamērķiem var būt nepieciešams obligāts identitātes nosaukums, nevis tikai IP adrese",
-            "FROMUSER": "Kā jūsu pakalpojumu sniedzējs jūs pazīst. Tas norāda, kuru lietotāju izvēlēties lietotāja ID vietā, kad tiek veikti zvani biedram (citam <i>SIP</i> starpniekam). Derīgs tikai veidam = biedrs.",
-            "OUTBOUNDPROXY": "IP_adress vai <i>DNS SRV</i> nosaukums (izņemot _sip._udp priedēkli): <i>SRV</i> nosaukums, resursdatora nosaukums vai izejošā <i>SIP</i> starpniekservera IP adrese. Sūtīt izejošo signālu uz šo starpniekserveri, nevis tieši ierīcēm. Derīgs tikai veidam = biedrs.",
-            "PORT": "<i>SIP</i> pieslēgvietas numurs",
+            "FROMDOMAIN": "Iestatiet noklusēto no:domēnu SIP ziņojumos, darbojoties kā SIP ua (klients). Dažiem galamērķiem var būt nepieciešams obligāts identitātes nosaukums, nevis tikai IP adrese",
+            "FROMUSER": "Kā jūsu pakalpojumu sniedzējs jūs pazīst. Tas norāda, kuru lietotāju izvēlēties lietotāja ID vietā, kad tiek veikti zvani biedram (citam SIP starpniekam). Derīgs tikai veidam = biedrs.",
+            "OUTBOUNDPROXY": "IP_adress vai DNS SRV nosaukums (izņemot _sip._udp priedēkli): SRV nosaukums, resursdatora nosaukums vai izejošā SIP starpniekservera IP adrese. Sūtīt izejošo signālu uz šo starpniekserveri, nevis tieši ierīcēm. Derīgs tikai veidam = biedrs.",
+            "PORT": "SIP pieslēgvietas numurs",
             "CONTEXT": "Maģistrāles konteksts",
-            "TYPE": "Nosakiet <i>SIP</i> 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.",
-            "DTMFMODE": "Kā tiek nosūtīts <i>DTMF</i> (divtoņu daudzfrekvenču signalizācija). RFC2833: noklusējuma režīms, <i>DTMF</i> tiek nosūtīts ar <i>RTP</i>, bet ārpus audioplūsmas. VIENJOSLAS: <i>DTMF</i> tiek nosūtīts pašreizējās sarunas audiostraumē, kļūstot dzirdams no skaļruņiem. Nepieciešama augsta <i>CPU</i> slodze. INFORMĀCIJA: lai gan šī metode ir ļoti uzticama, to neatbalsta visas <i>PBX</i> ierīces un daudzas <i>SIP</i> maģistrāles.",
+            "TYPE": "Nosakiet SIP lomu Asterisk ietvaros. User: izmanto, lai autentificētu ienākošo – Peer: izejošajiem zvaniem – Friend: iekļauj abas iepriekš minētās īpašības.",
+            "DTMFMODE": "Kā tiek nosūtīts DTMF (divtoņu daudzfrekvenču signalizācija). RFC2833: noklusējuma režīms, DTMF tiek nosūtīts ar RTP, bet ārpus audioplūsmas. VIENJOSLAS: DTMF tiek nosūtīts pašreizējās sarunas audiostraumē, kļūstot dzirdams no skaļruņiem. Nepieciešama augsta CPU slodze. INFORMĀCIJA: lai gan šī metode ir ļoti uzticama, to neatbalsta visas PBX ierīces un daudzas SIP maģistrāles.",
             "NAT": "Mainiet \"Asterisk\" darbību klientiem aiz ugunsmūra. Ja kāda no opcijām, kas ir atdalīta ar komatiem, ir \"Nē\", \"Asterisk\" ignorēs citus iestatījumus un iestatīs nat = no.",
-            "QUALIFY": "Nosakiet, kad <i>SIP</i> ir sasniedzams",
+            "QUALIFY": "Nosakiet, kad SIP ir sasniedzams",
             "ALLOWCODECS": "Atļautie kodeki secībā pēc izvēles",
-            "INSECURE": "Norādiet, kā apstrādāt savienojumus ar biedru, ļaujot nedrošus iestatījumus",
+            "INSECURE": "Norādiet, kā apstrādāt savienojumus ar peer, ļaujot nedrošus iestatījumus",
             "CALL_LIMIT": "Ienākošo un izejošo zvanu ierobežojumu skaits",
-            "DIRECTMEDIA": "\"Asterisk\" pēc noklusējuma mēģina novirzīt protokola <i>RTP</i> multivides plūsmu, lai tā pārietu tieši no zvanītāja zvanāmajam. Dažas ierīces to neatbalsta (īpaši, ja viena no tām ir aiz <i>NAT</i>). Noklusējuma iestatījums ir \"JĀ\". Ja jums ir visi klienti aiz standarta <i>NAT</i> vai citu iemeslu dēļ vēlaties, lai \"Asterisk\" paliktu audioceļā, varat to izslēgt.",
+            "DIRECTMEDIA": "\"Asterisk\" pēc noklusējuma mēģina novirzīt protokola RTP multivides plūsmu, lai tā pārietu tieši no zvanītāja zvanāmajam. Dažas ierīces to neatbalsta (īpaši, ja viena no tām ir aiz NAT). Noklusējuma iestatījums ir \"JĀ\". Ja jums ir visi klienti aiz standarta NAT vai citu iemeslu dēļ vēlaties, lai \"Asterisk\" paliktu audioceļā, varat to izslēgt.",
             "CALLCOUNTER": "Iespējot zvanu skaitītājus ierīcēs",
             "ADD_PHONE_TO_URI": "Definējiet, vai pakalpojuma sniedzējam tīmekļa adresē ir nepieciešams ';user=phone'",
             "TRUST_REMOTE_PARTY_ID": "Definējiet, vai ir jāuzticas attālās puses ID",
             "SEND_REMOTE_PARTY_ID_HEADER": "Definējiet, vai jānosūta attālās puses ID (noklusējuma vērtība ir \"Nav\")",
-            "ENCRYPTION": "Vai piedāvājiet <i>SRTP</i> šifrētu saturu (un tikai <i>SRTP</i> šifrētu saturu) izejošajos zvanos biedriem. Zvani neizdosies ar \"HANGUPCAUSE\" = 58, ja biedrs neatbalsta <i>SRTP</i>. Noklusējuma vērtība ir \"Nē\"",
+            "ENCRYPTION": "Vai piedāvājiet SRTP šifrētu saturu (un tikai SRTP šifrētu saturu) izejošajos zvanos biedriem. Zvani neizdosies ar \"HANGUPCAUSE\" = 58, ja biedrs neatbalsta SRTP. Noklusējuma vērtība ir \"Nē\"",
             "TRANSPORT": "Iestatiet noklusējuma transportēšanu kārtībā pēc izvēles",
             "OTHERFIELDS": "Citi lauki, kas ir jāpievieno maģistrāles konfigurācijas datnēm. Ievērojiet standarta \"Asterisk\" formātu (taustiņš = vērtība), katru lauku vienā rindā",
             "EMAILADDRESS": "Pievienojiet vienu vai vairākas adreses, kas ir atdalītas ar komatiem (piemēram, john.doe@xcally.com, jane.miller@xcally.com)",
         "FAX": "Fakss",
         "INTERACTION": "Saziņa",
         "MESSAGE": "Ziņojums",
-        "T38PT_UDPTL": "<i>T38pt Udptl</i>",
+        "T38PT_UDPTL": "T38pt Udptl",
         "CALL": "Zvans",
         "NAME": "Nosaukums",
         "TRUNKS": "Maģistrāles",
         "CONTEXT": "Konteksts",
         "CALLERID": "Zvanītāja ID",
         "TYPE": "Tips",
-        "DTMFMODE": "<i>DTMF</i> režīms",
-        "NAT": "standarts <i>NAT</i>",
+        "DTMFMODE": "DTMF režīms",
+        "NAT": "standarts NAT",
         "QUALIFY": "Kvalificēties",
         "ALLOWCODECS": "Atļautie kodeki",
         "INSECURE": "Nedrošs",
         "WEEKDAYS": "Nedēļas dienas",
         "HOUR": "Stunda",
         "DEFAULT": "Noklusējums",
-        "CSV": "<i>CSV</i>",
-        "PDF": "<i>PDF</i>",
+        "CSV": "CSV",
+        "PDF": "PDF",
         "15MIN": "15 minūtes",
         "30MIN": "30 minūtes",
         "1H": "1 stunda",
         "CONTACT_MANAGER": "Kontaktpersonu pārvaldnieks",
         "INTEGRATIONS": "Integrācijas",
         "MOTION_BAR": "\"Motion Bar\"",
-        "JSCRIPTY": "<i>Jscripty</i>",
+        "JSCRIPTY": "Jscripty",
         "URL_FORWARD": "Pārsūtīt tīmekļa adresi",
         "WEB_POPUP": "Tīmekļa uznirstošais logs",
         "LIST": "Saraksts",
         "WEEK_DAYS": "Nedēļas dienas",
         "MONTH_DAYS": "Mēneša dienas",
         "MONTHS": "Mēneši",
-        "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet audiodatnes šeit, lai augšupielādētu. Tikai <i>MP3</i>, <i>WAV</i>, <i>GSM</i> – maks. 15 MB",
+        "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet audiodatnes šeit, lai augšupielādētu. Tikai MP3, WAV, GSM – maks. 15 MB",
         "POLLING_INTERVAL": "Aptaujas intervāls (sekundēs)",
         "DASHBOARD": "Informācijas panelis",
         "NEW_DASHBOARDITEM": "Jauns informācijas paneļa logrīks",
         "COUNTER": "Skaitītājs",
-        "IFRAME": "\"IFrame\"",
+        "IFRAME": "IFrame",
         "CLOCK": "Pulkstenis",
         "ADD_DASHBOARDITEM": "Pievienot vadības paneļa logrīku",
         "EDIT_WIDGET": "Rediģēt logrīku",
         "PROJECT": "Projekts",
         "GOTOREALTIME_TRUNK": "Doties uz reāllaika maģistrāli",
         "GOTO_TRUNK": "Doties uz maģistrāli",
-        "CRON": "\"Cron\"",
+        "CRON": "Cron",
         "MINUTES": "Minūtes",
         "HOURLY": "Katru stundu",
         "YEARLY": "Ik gadu",
         "WEEK": "Nedēļa",
         "YEAR": "Gads",
         "ON": "Ieslēgts",
-        "PAI": "<i>P-Asserted-Identity</i>",
+        "PAI": "P-Asserted-Identity",
         "PAGE": "Lappuse",
         "ROWSPERPAGE": "Rindas lappusē",
         "EVENTVARIABLES": "Notikumu mainīgie",
         "SENDIFEMPTY": "Nosūtīt, ja tukšs",
         "CANCEL": "Atcelt",
         "UPLOADING": "Augšupielāde",
-        "EMAILBCCADDRESS": "<i>BCC</i> (diskrētā kopija)",
-        "EMAILCCADDRESS": "<i>CC</i> (kopija)",
+        "EMAILBCCADDRESS": "BCC (diskrētā kopija)",
+        "EMAILCCADDRESS": "CC (kopija)",
         "RUN_SCHEDULE": "Palaist grafiku",
         "ADD_DISPOSITION": "Pievienot statusu",
         "DELETE_DISPOSITION": "Dzēst statusu",
index 720acae..6e43ced 100644 (file)
@@ -1,7 +1,7 @@
 {
     "VOICE": {
         "LEGEND": {
-            "CUSTOM_APPLICATION": "(*) – Pielāgots pieteikums"
+            "CUSTOM_APPLICATION": "(*) – Pielāgota aplikācija"
         },
         "ERRORS": {
             "NAME_REQUIRED": "Obligāts lauks",
@@ -95,7 +95,7 @@
         },
         "WAITING_FOR_AGENTS": "Gaida aģentus",
         "ACTIVE": "Aktīvs",
-        "NO_AGENT_ONLINE": "Nav aģenta tiešsaistē",
+        "NO_AGENT_ONLINE": "Nav aģentu tiešsaistē",
         "PARTIALPAUSE": "Daļēja pauze",
         "STATUS": "Statuss",
         "TIMER": "Taimers",
         "EDIT_VOICEDISPOSITION": "Rediģēt balss statusu",
         "EDIT_VOICEQUEUE": "Rediģēt balss rindu",
         "DELETE_VOICEQUEUE": "Dzēst balss rindu",
-        "MOHSOUNDS": "<i>Moh</i> skaņas",
+        "MOHSOUNDS": "Moh skaņas",
         "STRATEGY": "Stratēģija",
         "DESCRIPTION": "Apraksts",
         "ADD_VOICEQUEUE": "Pievienot balss rindu",
         "CREATED_AT": "Izveidots",
-        "CANT_PLAY_GSM_AUDIO_FILES": "Nevar atskaņot <i>gsm</i> vai <i>wav49</i> audiodatnes",
-        "APPLICATIONS_LIST": "Lietojumprogrammu saraksts",
+        "CANT_PLAY_GSM_AUDIO_FILES": "Nevar atskaņot gsm vai wav49 audiodatnes",
+        "APPLICATIONS_LIST": "Aplikāciju saraksts",
         "GENERAL": "Vispārīgi",
         "TIMEOUT": "Noildze",
         "MAXLENGTH": "Maksimālais garums",
         "DIRECTORY": "Katalogs",
         "AUDIOFILES": "Audiodatnes",
         "RECORDINGS": "Ieraksti",
-        "CHANSPY": "\"ChanSpy\"",
-        "PREFIX": "Priedēklis",
+        "CHANSPY": "ChanSpy",
+        "PREFIX": "Prefikss",
         "OPTIONS": "Iespējas",
         "AUTH": "Autorizācija",
-        "ADD_CHANSPY": "Pievienot \"ChanSpy\"",
-        "EDIT_CHANSPY": "Rediģēt \"ChanSpy\"",
-        "DELETE_CHANSPY": "Dzēst \"ChanSpy\"",
+        "ADD_CHANSPY": "Pievienot ChanSpy",
+        "EDIT_CHANSPY": "Rediģēt ChanSpy",
+        "DELETE_CHANSPY": "Dzēst ChanSpy",
         "AGENTS": "Aģenti",
         "TELEPHONES": "Tālruņi",
         "QUEUES": "Rindas",
         "QUEUE_PARAMETERS": "Rindas parametri",
         "ABANDONED_CALLS": "Pamesti zvani",
         "OUTBOUND_CALLS": "Izejošie zvani",
-        "AGI": "<i>Agi</i>",
-        "DIAL": "Skala",
-        "CALLYSQUARE": "\"CallySquare\"",
+        "AGI": "AGI",
+        "DIAL": "Zvans",
+        "CALLYSQUARE": "CallySquare",
         "INTERNALDIAL": "Iekšējais zvans",
-        "EXTERNALDIAL": "Ārējā skala",
+        "EXTERNALDIAL": "Ārējais zvans",
         "RINGGROUP": "Zvana signāla grupa",
         "PLAYBACK": "Atskaņošana",
         "QUEUE": "Rinda",
         "SET": "Iestatīt",
         "VOICEMAIL": "Balss pasts",
-        "GOTO": "<i>GoTo</i>",
+        "GOTO": "GoTo",
         "HANGUP": "Nolikt klausuli",
         "CUSTOM": "Pielāgots",
-        "PROJECT": "\"Cally-Square\" projekts",
+        "PROJECT": "Cally-Square projekts",
         "TECHNOLOGY/RESOURCE": "Tehnoloģija/resurss",
         "URL": "Tīmekļa adrese",
-        "EDIT_APP": "Rediģēt lietojumprogrammu",
+        "EDIT_APP": "Rediģēt aplikāciju",
         "EDIT_INTERVAL": "Rediģēt intervālu",
-        "DELETE_APP": "Dzēst lietojumprogrammu",
+        "DELETE_APP": "Dzēst aplikāciju",
         "INTERVALS": "Intervāli",
         "USER": "Lietotājs",
         "TRUNK": "Maģistrāle",
         "PHONE": "Tālrunis",
-        "AUDIO_FILES": "Audiodatnes",
+        "AUDIO_FILES": "Audiofaili",
         "ANNOUNCE_OVERRIDES": "Paziņot par ignorēšanu",
         "MACRO": "Makro",
-        "GOSUB": "<i>GoSub</i>",
+        "GOSUB": "GoSub",
         "RULE": "Noteikums",
         "POSITION": "Pozīcija",
         "ANSWER": "Atbilde",
         "VALUE": "Vērtība",
-        "MAILBOX@CONTEXT": "<i>Mailbox@Context</i>",
+        "MAILBOX@CONTEXT": "Mailbox@Context",
         "EXTENSION": "Paplašinājums",
         "PRIORITY": "Prioritāte",
         "HANGUP_CAUSE": "Klausules nolikšanas iemesls",
         "NO_MESSAGE_AVAILABLE": "Nav pieejams neviens ziņojums",
         "NO_SOUND_AVAILABLE": "Nav skaņu",
         "VOICERECORDINGS": "Balss ieraksti",
-        "CHANSPIES": "\"ChanSpy\"",
+        "CHANSPIES": "ChanSpy",
         "VOICE": "Balss",
         "REALTIME": "Reāllaika",
         "ID": "ID",
         "NEW_CONTEXT": "Jauns konteksts",
         "NEW_VOICEMAIL": "Jauns balss pasts",
         "NEW_MUSICONHOLD": "Jauna noturēšanas mūzika",
-        "NEW_CHANSPY": "Jauns \"ChanSpy\"",
-        "PENALTY": "Sods",
+        "NEW_CHANSPY": "Jauns ChanSpy",
+        "PENALTY": "Prioritāte",
         "ADD_TEAM_TO_VOICEQUEUE": "Pievienot komandu balss rindai",
         "ADD_AGENT_TO_VOICEQUEUE": "Pievienot aģentu balss rindai",
         "EDIT_DIAL": "Rediģēt numuru",
-        "EDIT_AGI": "Rediģēt <i>AGI</i>",
+        "EDIT_AGI": "Rediģēt AGI",
         "EDIT_INTERNALDIAL": "Rediģēt iekšējo numuru",
         "EDIT_EXTERNALDIAL": "Rediģēt ārējo numuru",
         "EDIT_RINGGROUP": "Rediģēt zvana grupu",
         "EDIT_PLAYBACK": "Rediģēt atskaņošanu",
         "EDIT_QUEUE": "Rediģēt rindu",
         "EDIT_SET": "Rediģēt kopu",
-        "EDIT_GOTO": "Rediģēt \"GoTo\"",
+        "EDIT_GOTO": "Rediģēt GoTo",
         "EDIT_HANGUP": "Rediģēt klausules nolikšanu",
         "EDIT_CUSTOM": "Rediģēt pielāgojamību",
         "DURATION": "Ilgums",
         "HANGUPCAUSE_41": "41 = Pagaidu kļūme",
         "RANDOM": "Nejaušs",
         "ALPHABETICAL": "Alfabētiski",
-        "NO_APPS_AVAILABLE": "Neviena lietojumprogramma nav pieejama",
+        "NO_APPS_AVAILABLE": "Neviena aplikācija nav pieejama",
         "DOWNLOAD_VOICERECORDING": "Lejupielādēt balss ierakstu",
         "DELETE_VOICERECORDING": "Dzēst balss ierakstu",
         "INTERNAL": "Iekšējais",
         "TRUNKS": "Maģistrāles",
         "REGISTRY": "Reģistrs",
         "NO_REGISTRY": "Nav reģistra",
-        "LOGGED_IN": "Pieteicies (<i>SIP</i> savienots)",
+        "LOGGED_IN": "Pieteicies (SIP savienots)",
         "PAUSED": "Apturēts",
         "WAITING": "Gaida",
         "TALKING": "Runāšana",
-        "DID": "<i>DID</i>",
+        "DID": "DID",
         "CALLER": "Zvanītājs",
         "TOTAL": "Kopā",
         "ANSWERED": "Atbildēts",
         "CONNECTED": "Savienots",
         "NO_RATING": "Nav novērtējuma",
         "EDIT_VOICERECORDING": "Rediģēt balss ierakstu",
-        "APPLICATION_NAME": "Lietojumprogrammas nosaukums",
+        "APPLICATION_NAME": "Aplikācijas nosaukums",
         "ARGUMENTS": "Argumenti",
         "NO_AVAILABLE_INFO": "Nav pieejama informācija",
         "ADD_AGENT_TO_QUEUE": "Pievienot aģentu rindai",
-        "DEFAULT_PAUSE": "NOKLUSĒJUMA PAUZE",
+        "DEFAULT_PAUSE": "NOKLUSĒTĀ PAUZE",
         "PAUSE": "Pauze",
         "UNPAUSE": "Pārtraukt pauzi",
         "REDIRECT_TO_NUMBER": "Novirzīt uz numuru",
         "REDIRECT_TO_AGENT": "Novirzīt uz aģentu",
         "AGENTADD_VOICEQUEUE": "Pievienot pārstāvi balss rindai",
-        "APPLICATION": "Lietojumprogramma",
+        "APPLICATION": "Aplikācija",
         "FILES": "Datnes",
         "FORMAT": "Formāts",
         "MODE": "Režīms",
         "SELECT_DATE": "Izvēlieties sākuma datumu",
         "SELECT_TYPE": "Izvēlēties veidu",
         "ABANDONEDCALLS": "Pamesti rindas zvani",
-        "ADD_VOICEPREFIX": "Pievienot priedēkli",
-        "AGENTADD_VOICEPREFIX": "Pievienot aģentu priedēklim",
-        "DELETE_VOICEPREFIX": "Dzēst priedēkli",
-        "EDIT_VOICEPREFIX": "Rediģēt priedēkli",
-        "NEW_VOICEPREFIX": "Jauns priedēklis",
-        "VOICEPREFIXES": "Ārējie priedēkļi",
+        "ADD_VOICEPREFIX": "Pievienot prefiksu",
+        "AGENTADD_VOICEPREFIX": "Pievienot aģentu prefiksam",
+        "DELETE_VOICEPREFIX": "Dzēst prefiksu",
+        "EDIT_VOICEPREFIX": "Rediģēt prefiksu",
+        "NEW_VOICEPREFIX": "Jauns prefikss",
+        "VOICEPREFIXES": "Ārējie prefiksi",
         "CALLERIDALL": "Zvanītāja ID",
         "OUTBOUNDROUTE": "Izejošais maršruts",
         "LOGIN_TIME": "Pieteikšanās laiks",
index 5bfcafc..b1f4208 100644 (file)
@@ -12,7 +12,7 @@
         "MEMBERS": "Dalībnieki",
         "ENABLE_WRITING": "Iespējot rakstīšanu",
         "GROUPS": "Grupas",
-        "YOU": "Jūs + {{dalībnieki}}",
+        "YOU": "Jūs + {{participants}}",
         "NEW_INTERNAL_MESSAGE": "Jauns iekšējais ziņojums",
         "DELETE": "Dzēst",
         "SEARCH": "Meklēt",
@@ -55,7 +55,7 @@
         "MORE": "Vairāk",
         "SEND_MESSAGE": "Sūtīt ziņu",
         "REPLY_PLACEHOLDER": "Ierakstiet un nospiediet \"Enter\", lai nosūtītu ziņu",
-        "CONTACT_XCALLY_MOTION_SUPPORT": "Sazinieties ar \"xCALLY Motion\" atbalstu",
+        "CONTACT_XCALLY_MOTION_SUPPORT": "Sazinieties ar xCALLY Motion atbalstu",
         "EXPIRATION_DATE": "Derīguma termiņš",
         "EXPIRATION_REASON": "Derīguma termiņa beigu iemesls",
         "LICENSE": "Licence",
         "OLD_TOKEN": "Vecais marķieris",
         "SEND_EMAIL_TO": "Sūtīt e-pastu uz",
         "TOKEN": "Marķieris",
-        "EXPIRATION_REASON_MESSAGE": "Jūsu licence ir beigusies vai jūsu ierīces unikālais ID ir atjaunināts jūsu sistēmas maiņas dēļ. Sazinieties ar \"xCALLY Motion\" atbalsta komandu, nosūtot gan savu veco, gan jauno lietotāja ID.",
+        "EXPIRATION_REASON_MESSAGE": "Jūsu licence ir beigusies vai jūsu ierīces unikālais ID ir atjaunināts jūsu sistēmas maiņas dēļ. Sazinieties ar xCALLY Motion atbalsta komandu, nosūtot gan savu veco, gan jauno lietotāja ID.",
         "GRAY_PERIOD_EXPIRATION": "Perioda beigas",
-        "EXPIRATION_REASON_MESSAGE_GRAY": "Jūsu licence ir beigusies vai ir atspējota. Sazinieties ar \"xCALLY Motion\" atbalsta komandu.",
-        "EXPIRATION_REASON_MESSAGE_CHANGED": "Jūsu ierīces unikālais ID ir atjaunināts, jo sistēma ir mainījusies. Sazinieties ar \"xCALLY Motion\" atbalsta komandu, nosūtot gan savu veco, gan jauno lietotāja ID.",
+        "EXPIRATION_REASON_MESSAGE_GRAY": "Jūsu licence ir beigusies vai ir atspējota. Sazinieties ar xCALLY Motion atbalsta komandu.",
+        "EXPIRATION_REASON_MESSAGE_CHANGED": "Jūsu ierīces unikālais ID ir atjaunināts, jo sistēma ir mainījusies. Sazinieties ar xCALLY Motion atbalsta komandu, nosūtot gan savu veco, gan jauno lietotāja ID.",
         "MESSENGER_DISABLED": "Iekšējā ziņojumapmaiņa šim aģentam ir atspējota!",
         "WARNING": "Brīdinājums"
     }
index f6e2e4c..baed591 100644 (file)
@@ -10,7 +10,7 @@
         "TITLE": "Atiestatīt paroli",
         "EMAIL_ADRESS": "E-pasta adrese",
         "PASSWORD": "Parole",
-        "PASSWORD_CONFIRM": "Parole (apstiprināt)",
+        "PASSWORD_CONFIRM": "Paroles apstiprināšana",
         "UPDATE_PASSWORD": "ATIESTATĪT MANU PAROLI",
         "GO_BACK": "Dodieties atpakaļ uz pieteikšanos",
         "PASSWORD_RESET": "Paroles atiestatīšana",
index a93003a..127fe00 100644 (file)
@@ -8,23 +8,23 @@
         },
         "RESETPASSWORD": "Atiestatīt paroli",
         "PASSWORD_EXPIRE_REMAINING_DAYS": "Atlikušās dienas pirms jūsu paroles derīguma termiņa beigām",
-        "BROWSER_COMPATIBILITY": "Pārlūkprogrammas saderība (\"Chrome\", \"Opera\", \"Safari\")",
+        "BROWSER_COMPATIBILITY": "Pārlūkprogrammas saderība (Chrome, Opera, Safari)",
         "RECORDING": "Ieraksts",
         "INVALID_LICENSE": "Nederīga licence",
         "BROWSER": "Pārlūks",
         "OS": "Operētājsistēma",
         "REQUIREMENTS": "Prasības",
         "LICENSE": "Licence",
-        "HTTPS": "<i>HTTPS</i>",
-        "WEBRTCSUPPORT": "\"WebRTC\" atbalsts",
+        "HTTPS": "HTTPS",
+        "WEBRTCSUPPORT": "WebRTC atbalsts",
         "REGISTERED": "Reģistrēts",
         "NOT_REGISTERED": "Nav reģistrēts",
-        "WEBRTC_LICENSE_NOT_ENABELD": "\"WebRTC\" licence nav iespējota",
-        "ATTENDED_TRANSFER": "Apmeklēja nodošanu",
+        "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC licence nav iespējota",
+        "ATTENDED_TRANSFER": "Zvana pārvirzīšana ar pieteikumu",
         "TRANSFER": "Nodošana",
         "TARGET": "Mērķis",
         "CANCEL": "Atcelt",
-        "FILENAME": "Datnes nosaukums",
+        "FILENAME": "Faila nosaukums",
         "STATUS": "Statuss",
         "ACTIONS": "Darbības",
         "SPEAKER": "Skaļrunis",
@@ -48,8 +48,8 @@
         "SEARCH": "Meklēt",
         "USER_SETTINGS": "Lietotāja iestatījumi",
         "TOGGLE_QUICK_PANEL": "Pārslēgt ātro paneli",
-        "SOMEONE_LOGGED_YOU_OUT": "Kāds ir atteicies, vai vēlaties palikt reģistrēts?",
-        "STAY_LOGGED": "Palieciet reģistrēts",
+        "SOMEONE_LOGGED_YOU_OUT": "Kāds ir izlogojis Jūs, vai vēlaties palikt reģistrēts?",
+        "STAY_LOGGED": "Palikt reģistrēts",
         "WARNING": "Brīdinājums",
         "ENGLISH": "Angļu valoda",
         "ITALIAN": "Itāļu valoda",
         "TRIAL_VERSION": "Izmēģinājuma versija",
         "PAUSE": "Pauze",
         "RESUME": "Pārtraukt pauzi",
-        "NO_PAUSES_AVAILABLE": "Nav pārtraukumu",
+        "NO_PAUSES_AVAILABLE": "Nav pieejamo paužu",
         "INDONESIAN": "Indonēziešu valoda",
         "ARABIC": "Arābu valoda",
         "CALL": "Zvans",
-        "PREFIXES": "Priedēkļi",
+        "PREFIXES": "Prefiksi",
         "HEBREW": "Ebreju valoda",
         "ESTONIAN": "Igauņu",
         "CZECH": "Čehu valodā",
index 27046e2..13df103 100644 (file)
@@ -12,7 +12,7 @@
 
     <link rel="stylesheet" href="styles/vendor.e1f66bb9.css">
 
-    <link rel="stylesheet" href="styles/app.b6d79618.css">
+    <link rel="stylesheet" href="styles/app.59a8ca15.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'> -->
@@ -58,7 +58,7 @@
 
     <script src="scripts/vendor.d7c1518f.js"></script>
 
-    <script src="scripts/app.e5ed3624.js"></script>
+    <script src="scripts/app.c8387533.js"></script>
 
     <!-- CKEDITOR -->
     <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 55%
rename from public/scripts/app.e5ed3624.js
rename to public/scripts/app.c8387533.js
index de0064b..470e7b9 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","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,t){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"}),t.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,t){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"}),t.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,t){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"}),t.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.help","app.motiondialer","app.jscripty","app.marketplace","app.plugins","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,t){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"}),t.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,t,n,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,t){return t.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:t.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),t.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,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:t.id}).then(function(e){var t=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var n=0;n<s.joins.length;n+=1)t.push(i.getColumns(s.joins[n].foreignTable))}catch(e){console.log(e)}return a.all(t)}).then(function(e){for(var t=0;t<e.length;t+=1)s.joins[t].foreignTableFields=_.difference(_.keys(e[t]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),t.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,t){return t.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("squareProject@get",{id:t.id})}],users:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,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,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.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,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,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("chatQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ChatQueues",channel:"chat",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getChatQueues")}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,t,n,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,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),t.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,t,n){return t.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},n)):e.resolve("userProfile@getResources",_.merge({id:t.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},n))}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",limit:10,offset:0})}],listsMap:["lists",function(e){for(var t={},n=0;n<e.rows.length;n++)t[e.rows[n].id]=e.rows[n].name;return t}],companies:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var t={},n=0;n<e.rows.length;n++)t[e.rows[n].id]=e.rows[n].name;return t}],tags:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("cmContact@get",{id:t.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,t){return e.resolve("cmContact@getHoppers",{id:t.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,t){return e.resolve("cmContact@getHopperFinals",{id:t.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,t){return e.resolve("cmContact@getHopperHistories",{id:t.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,t){return e.resolve("cmContact@getJscriptySessions",{id:t.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,t){return t.ListId?e.resolve("cmList@getCustomFields",{id:t.ListId}):null}],tags:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("tag@get"):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),t.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(t,e){var a;return(e.hasRole("admin")?t.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):t.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,t.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var t,n=0;n<e.rows.length;n+=1)(t=_.find(a.rows,{id:e.rows[n].id}))&&_.merge(t,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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",data:{selectedTab:0},views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,t,n){var a=n.getCurrentUser();return a&&"agent"===a.role?t.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):t.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){var t=e.getCurrentUser();return t&&"agent"===t.role?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,t){return e.resolve("user@getLists",{id:t.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver","Auth",function(e,t){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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],chatWebsites:["apiResolver","Auth",function(e,t){return t.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:t.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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],mailAccounts:["apiResolver","Auth",function(e,t){return t.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:t.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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],smsAccounts:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],openchannelAccounts:["apiResolver","Auth",function(e,t){return t.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:t.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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],faxAccounts:["apiResolver","Auth",function(e,t){return t.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:t.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"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("faxQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"FaxQueues",channel:"fax",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:901})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getFaxQueues")}]},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,t){return t.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,a){e.state("app.help",{abstract:!0,url:"/help"}),t.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,t,n,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,t){return t.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,authToken,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,authToken,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,authToken,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}),t.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,t,n,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,t){return t.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,description,formData",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("mailQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"MailQueues",channel:"mail",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:601})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getMailQueues")}]},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,t){return t.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),t.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,t,n,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,t){return t.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,description",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.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,description",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,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:t.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,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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("openchannelQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"OpenchannelQueues",channel:"openchannel",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:801})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getOpenchannelQueues")}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,t,n,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),t.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,t,n,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,stunaddr,turnaddr,turnusername,turnpassword,phoneBarAutoUpdater,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,messagesAlignment,phoneBarRememberMeEnabled",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",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,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),t.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,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("smsQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SmsQueues",channel:"sms",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:701})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getSmsQueues")}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,t,n,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,t){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,videosupport",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,videosupport",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,faxCapacity,smsCapacity,openchannelCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,phoneBarEnableVideoRecording",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.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,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,faxCapacity,smsCapacity,openchannelCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,phoneBarEnableVideoRecording",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,faxCapacity,smsCapacity,openchannelCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,phoneBarEnableVideoRecording",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).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,t){return t.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,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,t){return t.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).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,t){return t.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:t.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),t.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"]).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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.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",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.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",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,recordingFormat,cutdigits,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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",function(e,t){return t.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),t.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";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,t){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,t){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"}),t.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,n,t,a){e.$on("$stateChangeStart",function(e,t){return t.hasOwnProperty("authenticate")&&t.authenticate&&!a.isLoggedIn()?(e.preventDefault(),n.go("app.login",{},{reload:!0,notify:!0})):a.isLoggedIn()&&t.hasOwnProperty("permissionId")&&t.permissionId&&!a.hasRole("admin")?a.reloadPermissions().then(function(){if(!a.hasPermission(t.permissionId))return e.preventDefault(),n.go("app.dashboards.general",{},{reload:!0,notify:!0})}).catch(function(){return e.preventDefault(),n.go("app.dashboards.general",{},{reload:!0,notify:!0})}):void 0})}e.$inject=["$rootScope","$state","$window","Auth"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,s,o,t,r){var l,d=["id","role","fullname","name","internal","email","userpic","permissions","md5secret","phoneBarAutoAnswer","phoneBarAutoAnswerDelay","phoneBarEnableRecording","phoneBarEnableDtmfTone","voicePause","chatPause","mailPause","faxPause","smsPause","openchannelPause","phoneBarEnableSettings","phoneBarExpires","pauseType","showWebBar","phoneBarRemoteControlPort","phoneBarRemoteControl","lastLoginAt","lastPauseAt","crudPermissions","allowmessenger","passwordResetAt","alias","phoneBarPrefixRequired","hotdesk","userProfileId"];function c(e){var t=s.defer();return m("agent")&&0!==l.showWebBar?o.user.login({id:l.id,device:"web",intrf:e}).$promise.then(function(){console.log("AGENT LOGGED IN"),t.resolve()}).catch(function(e){console.error(e),t.reject(e)}):m("admin")||m("user")?o.user.update({id:l.id},{online:!0,lastLoginAt:moment().format("YYYY-MM-DD HH:mm:ss")}).$promise.catch(function(e){console.error(e)}).finally(function(){t.resolve()}):t.resolve(),t.promise}function n(){if(i.remove("motion.user"),i.remove("motion.token"),l&&l.id){var e=l.id;l=null,t.localStorage.removeItem("motion.user:"+e)}}function m(e){return!!l&&l.role===e}function u(e){return!!l&&_.includes(l.permissions,e)}function e(){return i.get("motion.token")}function p(e){return l=_.assign(l,_.pick(e,d)),i.put("motion.user",JSON.stringify(l)),m("user")&&g().then(function(e){l.permissions=e}),l}function g(){var i=[];return s(function(t,n){var a=[];return l||t(a),o.userProfileSection.get({userProfileId:l.userProfileId}).$promise.then(function(e){return i=e&&e.rows?e.rows:[],_.isEmpty(i)||(a=_.map(_.filter(i,function(e){return e.enabled}),function(e){return e.sectionId})),a}).then(function(t){if(_.includes(t,100)){var e=_.find(i,{sectionId:100});return e.autoAssociation?(t.push(101),t):o.userProfileResource.get({sectionId:e.id}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)&&t.push(101),t})}return t}).then(function(t){if(_.includes(t,1003)){var e=_.find(i,{sectionId:1003});return e.autoAssociation?o.dashboard.get().$promise.then(function(e){return(e&&e.rows?e.rows:[]).forEach(function(e){t.push(e.id+99999)}),t}):o.userProfileResource.get({sectionId:e.id}).$promise.then(function(e){return(e&&e.rows?e.rows:[]).forEach(function(e){t.push(e.resourceId+99999)}),t})}return t}).then(function(t){if(_.includes(t,1801)){var e=_.find(i,{sectionId:1801});return e.autoAssociation?o.plugin.get().$promise.then(function(e){return(e&&e.rows?e.rows:[]).forEach(function(e){t.push(e.id+88888)}),t}):o.userProfileResource.get({sectionId:e.id}).$promise.then(function(e){return(e&&e.rows?e.rows:[]).forEach(function(e){t.push(e.resourceId+88888)}),t})}return t}).then(function(e){t(e)}).catch(function(e){n("Error retrieving user profile permissions",e)})})}function v(){return s(function(t,n){g().then(function(e){l.permissions=e,t()}).catch(function(e){n(e)})})}return function(){if(i.get("motion.user"))l=JSON.parse(i.get("motion.user")),o.user.get({id:l.id,fields:d.join(",")}).$promise.then(function(e){if(e)return p(e)}).catch(function(e){console.log("Error retrieving user",e)})}(),{login:function(e){var t,n=s.defer();return o.auth.local(e).$promise.then(function(e){return t=e,i.put("motion.token",e.token),o.user.get({id:e.id,fields:d.join(",")}).$promise}).then(function(e){(l=e).lastLoginAt=moment(),i.put("motion.user",JSON.stringify(e))}).then(function(){if(m("agent")&&1==l.showWebBar&&l.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver","Auth",function(e,t){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return c(e)}).catch(function(e){n.reject(e.data)}).finally(function(){o.user.get({id:t.id,fields:d.join(",")}).$promise.then(function(e){l=e,m("user")&&g().then(function(e){l.permissions=e}),n.resolve()}).catch(function(e){console.log("Error update user login",e),n.reject(e.data)})}),n.promise},logout:function(e){var t;return s.defer(),e?(n(),s.resolve()):(t=s.defer(),m("agent")&&0!==l.showWebBar?o.user.logout({id:l.id,device:"web"}).$promise.then(function(){console.log("AGENT LOGGED OUT")}).catch(function(e){console.error(e)}).finally(function(){t.resolve()}):m("admin")||m("user")?o.user.update({id:l.id},{online:!1}).$promise.catch(function(e){console.error(e)}).finally(function(){t.resolve()}):t.resolve(),t.promise).then(n).catch(function(e){console.error(e)})},queueLogin:c,isLoggedIn:function(){return!(!l||!e())},getPermissions:g,reloadPermissions:v,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return u(e)})},hasModulePermissions:function(i){return s(function(a,t){m("admin")?a(!0):o.userProfileSection.get({userProfileId:l.userProfileId}).$promise.then(function(e){var t=e&&e.rows?e.rows:[];if(_.isEmpty(t))a(!1);else{var n=_.filter(t,function(e){return e.enabled});a(_.some(n,["category",i]))}}).catch(function(e){t(e)})})},hasModulesPermissions:function(i){return s(function(n,t){var a={};m("admin")?(i.forEach(function(e){a[e]=!0}),n(a)):o.userProfileSection.get({userProfileId:l.userProfileId}).$promise.then(function(e){var t=e&&e.rows?e.rows:[];_.isEmpty(t)?n({}):(_(t).filter(function(e){return e.enabled&&_.includes(i,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value().forEach(function(e){a[e]=!0}),n(a))}).catch(function(e){t(e)})})},hasRole:m,hasPermission:u,hasSectionPermissions:function(a){return s(function(e,t){var n={};return v().then(function(){_.includes(l.permissions,a)&&(n[a]=!0),e(n)}).catch(function(e){t(e)})})},hasSectionsPermissions:function(a){return s(function(e,t){var n={};if(!m("admin"))return v().then(function(){a.forEach(function(e){_.includes(l.permissions,e)&&(n[e]=!0)}),e(n)}).catch(function(e){t(e)});a.forEach(function(e){n[e]=!0}),e(n)})},getToken:e,getCurrentUser:function(){return l},parseCrudPermissions:function(e){return m("admin")?{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}},updateCurrentUser:p,removeCookies:n}}e.$inject=["$mdDialog","$cookies","$q","api","$window","$document"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(t,e){this.telephones=e,this.closeDialog=function(e){t.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,t,n,a,i){var s;return{request:function(e){var t=n.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&t&&(e.headers.Authorization="Bearer "+t),e},responseError:function(e){switch(e.status){case 401:n.remove("motion.user"),n.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return t.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(t){var n={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var t=document.createElement("a");return t.href=e,""===t.host&&(t.href=t.href),t},isSameOrigin:function(i,e){return i=n.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(n.urlParse)).push(t.location),1<=(e=e.filter(function(e){var t=i.hostname===e.hostname,n=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return t&&n&&a})).length}};return n}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var n={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(n[e]))return!1;return n[e]},setConfig:function(e,t){n[e]=t}};return e}})}(),function(){"use strict";function e(e,t,n,a){t.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),n.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,t,n){(t.generate(),n.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(o,l,d){return{restrict:"E",compile:function(e,t){var s;return t.code||(s=e.html(),e.empty()),function(n,a,r){r.code&&(s=n.$eval(r.code));var i=n.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(n));var t=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(t),o(function(){!function(e,t){var n=t.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/>",""),n.append(o.value).addClass("highlight")}(e,t)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),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,t){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",t)}}}}})}(),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(n,t,a,i,s,o,e,r,l){function d(e){switch(n.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(n.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return t.$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")})})}n.currentUser=e.getCurrentUser(),n.showMenu=function(){return n.target&&n.target.indexOf("@")<0&&n.target!=n.currentUser.internal&&n.target!=n.currentUser.name&&(0==n.currentUser.showWebBar&&n.currentUser.phoneBarRemoteControl||2==n.currentUser.showWebBar&&n.license.webrtc)&&!n.disabled},n.call=function(e){return 2!==n.currentUser.showWebBar?(t=e,l.user.getVoicePrefixes({id:n.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:n.currentUser.phoneBarPrefixRequired}})}).then(function(e){n.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+t):e&&-1!==e?d(e+t):e||d(t)})):d(e);var t},n.transfer=function(e){switch(n.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(n.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:t.$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,t,n,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var t={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){t=angular.extend({},t,e)},this.$get=function(){return t}}).directive("msDatepickerFix",e)}(),function(){"use strict";angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"="},controller:["$scope",function(o){o.canTransfer=function(e,t,n){if(!t.readOnly)return void 0!==e.isValid&&e.isValid?n?o.transfer(t.selectedItems,t.items,t.selectedItems.indexOf(e),n):o.transfer(t.items,t.selectedItems,t.items.indexOf(e),n):void 0},o.transfer=function(e,t,n,a){var i=[];if(0<=n)i.push(e[n]),t.push(e[n]),e.splice(n,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&t.push(e[s]);for(var s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=t}o.options.transferCallback&&o.options.transferCallback(i,a)},o.getLine=function(e,t){var n="";if(_.isNil(t))return n;if(_.isArray(t)){for(var a=0;a<t.length;a++)n+=" "+(e[t[a]]?e[t[a]]:"");return n}return e[t]?e[t]:""}}],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(n,e){var t=e.emojioneArea({pickerPosition:n.pickerPosition,search:n.search,recentEmojis:n.recentEmojis,placeholder:a.instant(n.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,t){n.ngModel=this.getText(),n.onReply({event:t,body:this.getText()})},emojibtn_click:function(){n.ngModel=this.getText()}}});n.ngModel&&t[0].emojioneArea.setText(n.ngModel),n.internalControl=n.ctrlMethods||{},n.internalControl.setText=function(e){t[0].emojioneArea.setText(e)},n.internalControl.getText=function(){return t[0].emojioneArea.getText()},n.$watch("ngModel",function(e){e||t[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:"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 t=this;function e(){return t.forms.length}function n(){return 0===t.selectedIndex}function a(){return t.selectedIndex===e()-1}t.forms=[],t.selectedIndex=0,t.registerForm=function(e){t.forms.push(e)},t.previousStep=function(){if(n())return;t.selectedIndex--},t.nextStep=function(){if(a())return;t.selectedIndex++},t.firstStep=function(){t.selectedIndex=0},t.lastStep=function(){t.selectedIndex=e()-1},t.totalSteps=e,t.isFirstStep=n,t.isLastStep=a,t.currentStepInvalid=function(){return angular.isDefined(t.forms[t.selectedIndex])&&t.forms[t.selectedIndex].$invalid},t.previousStepInvalid=function(){return 0<t.selectedIndex&&angular.isDefined(t.forms[t.selectedIndex-1])&&t.forms[t.selectedIndex-1].$invalid},t.formsIncomplete=function(){for(var e=0;e<t.forms.length;e++)if(t.forms[e].$invalid)return!0;return!1},t.resetForm=function(){for(var e=t.selectedIndex=0;e<t.forms.length;e++)t.forms[e].$setPristine(),t.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,t,n,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,t){var n=i.find("ms-info-bar-active"),a="ms-info-bar-active";n.addClass(a),e.removeInfoBar=function(){n.removeClass(a),t.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,t={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},n=!0;function i(){n&&e.cancel(n),n=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}),t=0;t<d.items.length;t++){var n,a,i,s,o=d.items[t];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=t%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,n=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+n+"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(t,d.options):t,r.$watch(function(){return d.container.width()},function(e,t){e!==t&&i()})},d.waitImagesLoaded=function(e,t){if("undefined"!=typeof imagesLoaded){var n=a.imagesLoaded(e);n.on("done",function(){t()})}else t()},r.$on("msMasonry:relayout",function(){i()})}function t(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,t,n,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,t,n,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],t.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",t).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,t,n,a){a.waitImagesLoaded(t,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return t.height()},function(e,t){e!==t&&a.reLayout()})}),t.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(n,e,a,i){var s=this;function o(e,t){s.selectedPalette=e,s.selectedHues=t}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,t){s.selectedColor={palette:e,hue:t,class:"md-"+e+"-"+t+"-bg",bgColorValue:i.rgba(s.palettes[e][t].value),fgColorValue:i.rgba(s.palettes[e][t].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),n.$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,n.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,t){l(e,t),d(),a.hide()},s.removeColor=r,n.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,t;if("class"===s.msModelType){var n=s.modelCtrl.$viewValue.split("-");t=5<=n.length?(e=n[1]+"-"+n[2],n[3]):(e=n[1],n[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,t=s.modelCtrl.$viewValue.hue||500);l(e,t)})}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,t,n,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,t){return 1===t.nodeType})).length&&t.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,t,n){var a="true"===n.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=t.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),t.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"),t.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"),t.off("mouseenter mouseleave")}v.setFoldable(e,t,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"),t.off("mouseenter mouseleave")})}}}function t(n,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){n.$broadcast("msNav::expandMatchingToggles");var t=n.$on("$stateChangeSuccess",function(){n.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){t()})}}}}function n(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,t){return e.addClass("ms-nav-toggle"),angular.isUndefined(t.collapsed)&&(t.collapsed=!0),e.attr("collapsed",t.collapsed),function(a,i,e,n){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},t=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 t=angular.element(i.find("ms-nav-toggle-items")[0]);t.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=t[0].offsetHeight;return t.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(t,{display:"block",height:"0px"},{height:n+"px"},s.expandAnimation).then(function(){t.addClass(s.expanded),t.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 t=angular.element(i.find("ms-nav-toggle-items")[0]),n=t[0].offsetHeight;return a.$evalAsync(function(){p.animate(t,{height:n+"px"},{height:"0px"},s.collapseAnimation).then(function(){t.removeClass(s.expanded),t.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(t,function(e){var t=angular.element(e).attr("ui-sref");angular.isUndefined(t)||(t=t.replace(r,""),o.push(t))}),n.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(n.isDisabled())return;n.disable(),l()?(n.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){n.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=n.getLockedItems(),t=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(t=!0)}),t||c().then(function(){n.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){n.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var t=g.current.name,n=!1;angular.forEach(o,function(e){t===e&&(n=!0)}),n?d():c()}),a.$on("msNav::pushToLockedList",function(){n.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],t.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],n.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var n={};return{setFoldable:function(e,t){n={scope:e,element:t}},isNavFoldedOpen:function(){return n.scope.isNavFoldedOpen()},toggleFold:function(){n.scope.toggleFold()},openFolded:function(){n.scope.openFolded()},closeFolded:function(){n.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,t=!1,n=[],a=[];e.isDisabled=function(){return t},e.enable=function(){t=!1},e.disable=function(){t=!0},e.setToggleItem=function(e,t){n.push({element:e,scope:t})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,t){a.push({element:e,scope:t})},e.clearLockedItems=function(){a=[]}}).directive("msNav",t).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",n)}(),function(){"use strict";function e(e,t){e.root?this.navigation=t.getNavigation(e.root):this.navigation=t.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},t.sort()}function t(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,t){var n=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"),n.addClass("ms-navigation-folded"),r();else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched"),n.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){t.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched"),n.addClass("ms-navigation-folded-open"),a.remove(),n.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),n.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")}),n.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,t){if(!angular.isUndefined(e)&&!angular.equals(e,t)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,t){angular.isUndefined(e)||angular.equals(e,t)||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 n(n,e,a,i,t,s){var o=this;o.element=e,o.node=n.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"),t=e[0].offsetHeight;n.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:t+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),n.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),n.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:t+"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===t.current.name||t.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(t.params)&&!angular.equals(o.node.stateParams,t.params))return;n.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,n)}n.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&n.$evalAsync(function(){o.collapsed=!1})}),n.$on("msNavigation::collapse",function(e,t){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(t))o.collapse();else{var n=t.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<n.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),n.$on("$stateChangeSuccess",function(){if(o.node.state===t.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(t.params)&&!angular.equals(o.node.stateParams,t.params))return;s.setActiveItem(o.node,n),a.$broadcast("msNavigation::collapse",o.node._path)}if(t.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(t.params)&&!angular.equals(o.node.stateParams,t.params))return;n.$emit("msNavigation::stateMatched")}})}()}function a(t){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){t.setNavigationScope(e)}}}}function i(n,e,t,a,i){var s=this;s.element=e,s.node=n.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;n.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,n)}n.$on("msNavigation::stateMatched",function(){s.hasChildren&&n.$evalAsync(function(){s.isActive=!0})}),n.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],t=i.getActiveItem();t&&(e=t.node._path.split(".")),-1<e.indexOf(s.node._id)?n.$evalAsync(function(){s.isActive=!0}):n.$evalAsync(function(){s.isActive=!1})}}),n.$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,n),t.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,t,n,a){t.on("click",function(){if(!a.hasChildren||i("gt-md"))return;t.toggleClass("expanded")}),e.$on("$destroy",function(){t.off("click")})}}}}e.$inject=["$scope","msNavigationService"],t.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],n.$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,t){if(angular.isString(e)){for(var n=e.split("."),a=n[n.length-1],i=function(e){var t=l;if(1===e.length)return t;e.pop();for(var n=0;n<e.length;n++){for(var a=e[n],i=!0,s=0;s<t.length;s++)if(t[s]._id===a){t=t[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};t.push(o),t=o.children}}return t}(n),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,t),s.uisref=m(s)):(t.children=[],!angular.isUndefined(t.weight)&&angular.isNumber(t.weight)||(t.weight=1),t._id=a,t._path=e,t.uisref=m(t),i.push(t))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){if(angular.isString(e)){for(var t=l,n=e.split("."),a=0;a<n.length;a++)for(var i=n[a],s=0;s<t.length;s++)if(t[s]._id===i){if(t[s]._path===e)return t.splice(s,1),!0;t=t[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 t=0;t<e.length;t++){var n=e[t].children;1<n.length&&n.sort(a),0<n.length&&c(n)}}function a(e,t){return parseInt(e.weight)-parseInt(t.weight)}function m(e){var t="";return angular.isDefined(e.state)&&(t=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(t=t+"("+angular.toJson(e.stateParams)+")")),t}this.saveItem=o,this.deleteItem=d,this.sortByWeight=c,this.$get=function(){var n=null,t=null,a=null,i=null,e={saveItem:o,deleteItem:d,sort:c,clearNavigation:function(){l=[],t&&(t.vm.navigation=l)},setActiveItem:function(e,t){n={node:e,scope:t}},getActiveItem:function(){return n},getNavigation:s,getFlatNavigation:function(e){return function e(t){var n=[];for(var a=0;a<t.length;a++){var i=angular.copy(t[a]);i.children=[],n.push(i),0<t[a].children.length&&(n=n.concat(e(t[a].children)))}return n}(s(e))},setNavigationScope:function(e){t=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){t.toggleFolded()}};return e;function s(e){if(e){for(var t=0;t<l.length;t++)if(l[t]._id===e)return[l[t]];return null}return l}}}).controller("MsNavigationController",e).directive("msNavigation",t).controller("MsNavigationNodeController",n).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,t,n,a){t.addClass(a.getClass()),a.group&&t.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,t,n,a){a.collapsable&&t.on("click",a.toggleCollapsed),e.$on("$destroy",function(){t.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,t,n,a){t.addClass(a.getClass()),a.group&&t.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(i,n,s,e,a,o,t,r,l,d,c){var m=this,u=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],p=JSON.parse(t.localStorage.getItem("motion2.user:"+m.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function g(e){switch(e){case"ringing":m.conf.ringingMute?m.soundPlayer.muted=!0:m.soundPlayer.muted=!1,m.conf.ringingId&&m.soundPlayer.setSinkId(m.conf.ringingId).then(function(){m.soundPlayer.volume=m.conf.ringingVolume}).then(f).catch(function(e){console.info(e.message,m.conf.ringingId)});break;case"speaker":m.conf.speakerMute?m.remotePlayer.muted=!0:m.remotePlayer.muted=!1,m.conf.speakerId&&m.remotePlayer.setSinkId(m.conf.speakerId).then(function(){m.remotePlayer.volume=m.conf.speakerVolume}).then(f).catch(function(e){console.info(e.message,m.conf.speakerId)});break;case"microphone":for(var t=0;t<m.sessions.length;t+=1)m.conf.microphoneMute?m.sessions[t].mute():m.sessions[t].unmute();f();break;default:console.log("unknown device")}}function v(e,t,n){m.calls.unshift({target:e,fullname:n||e,inbound:t,time:moment().format("HH:mm")}),50<m.calls.length&&m.calls.pop()}function h(){return m.conf.license&&m.conf.isWebRTCSupported&&m.conf.hasMicrophone&&m.conf.hasSpeakers&&"https"===m.conf.protocol&&("chrome"===m.conf.browserName.toLowerCase()||"opera"===m.conf.browserName.toLowerCase()||"safari"===m.conf.browserName.toLowerCase())}function f(){p.webrtc=_.pick(m.conf,u),t.localStorage.setItem("motion2.user:"+m.conf.id,JSON.stringify(p))}function b(e){this.remotePlayer.srcObject=e.stream}function A(e){var t,n,a=e.session;switch(e.originator){case"local":a.outgoing=!0,a.name=e.request.ruri.user,a.user=e.request.ruri.user,v(a.user,!1);break;case"remote":a.incoming=!0,a.name=e.request.from.display_name,a.user=e.request.from.uri.user,t=e.session,n=t.name?t.name+" <"+t.user+">":t.user,c.create("Incoming call from: ",n,null,function(){t.answer(m.sessionConf)},function(){t.terminate()}).then(function(e){t.notification=e}).catch(function(e){console.error(e)}),v(e.session.user,!0),m.conf.autoAnswer&&s(function(){a.isInProgress()&&(a.autoAnswer=!0,m.conf.microphoneId?m.sessionConf.mediaConstraints.audio={deviceId:m.conf.microphoneId}:m.sessionConf.mediaConstraints.audio=!0,a.answer(m.sessionConf))},m.conf.autoAnswerDelay?1e3*m.conf.autoAnswerDelay:0)}a.call_id=e.request.call_id,a.connection&&(a.connection.onaddstream=b.bind(this)),a.on("progress",function(e,t){var n=!1;switch(t.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),n=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),n=!0}n&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)}))}.bind(this,a)),a.on("confirmed",function(n,e){return n.confirmed=!0,"remote"===e.originator&&n.connection&&(n.connection.onaddstream=b.bind(this),_.head(n.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(n.connection.getRemoteStreams()))),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(n),g("speaker"),g("microphone"),n.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log(e.message)})),d.rpc.getVoiceChannels().$promise.then(function(e){var t=_.find(e.rows,function(e){return e.sipcalllinkedid===n.call_id?e:e.sipcalluniqueid===n.call_id?e:null});t&&(n.monitor=t.monitor,n.uniqueid=t.uniqueid,n.monitors=t.monitors)}).catch(function(e){console.error(e)})}.bind(this,a)),a.on("hold",function(e,t){"local"===t.originator&&(e.localHold=!0)}.bind(this,a)),a.on("unhold",function(e,t){"local"===t.originator&&(e.localHold=!1)}.bind(this,a)),a.on("ended",function(e,t){_.remove(this.sessions,{id:e.id})}.bind(this,a)),a.on("failed",function(e,t){this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),_.remove(this.sessions,{id:e.id})}.bind(this,a)),this.sessions.push(a)}function E(){m.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",i.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function y(e,t,n,a){return function(){o.show(o.simple().textContent(t).position(n).hideDelay(a)),e.terminate()}}function S(t){return d.user.getVoicePrefixes({id:m.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(n.body),clickOutsideToClose:!0,locals:{prefixes:e,required:m.conf.phoneBarPrefixRequired}})}).then(function(e){if(m.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+t}else{if(e&&-1!==e)return e+t;if(!e)return t}})}e(function(){},999),m.direction="right",m.selectedMode="md-scale",m.target="",m.showDialpad=!1,m.soundPlayer=document.createElement("audio"),m.remotePlayer=document.getElementById(m.conf.remotePlayerId),m.soundPlayer.volume=1,m.sessionConf={mediaConstraints:{audio:!0,video:!1}},m.sessions=[],m.calls=[],m.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+m.conf.host+":8089/ws")],uri:new JsSIP.URI("sip",m.conf.name,m.conf.host,5060,null,null).toString(),authorization_user:m.conf.name,ha1:m.conf.ha1,realm:m.conf.realm,user_agent:m.conf.ua,session_timers_refresh_method:"invite",register_expires:m.conf.phoneBarExpires||60,register:!0}),m.conf=_.merge(p.webrtc,m.conf),n.bind("keyup",function(e){switch(e.keyCode){case 27:s(function(){m.showDialpad=!1})}}),m.$onInit=function(){g("ringing"),g("speaker"),this.ua.on("registered",function(){console.log("registered"),this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){console.log("unregistered"),this.registered=!1}.bind(this)),this.ua.on("newRTCSession",A.bind(this)),DetectRTC.load(function(){this.conf.hasMicrophone=DetectRTC.hasMicrophone,this.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,this.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,this.conf.osName=DetectRTC.osName,this.conf.osVersion=DetectRTC.osVersion,this.conf.browserName=DetectRTC.browser.name,this.conf.browserVersion=DetectRTC.browser.version,h()?this.ua.start():this.conf.license||l.warning({title:r.instant("TOOLBAR.WARNING"),msg:r.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))}.bind(this),m.type=function(e,t){var n=e;switch(m.target||(m.target=""),t&&(m.target+=e,i.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",m.target)),e){case"*":n="asterisk";break;case"#":n="pound"}m.conf.enableDtmfTone&&(m.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+n+".ogg"),m.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<m.sessions.length;a+=1)m.sessions[a].isEstablished()&&!m.sessions[a].isOnHold().local&&m.sessions[a].sendDTMF(e)},m.call=function(){if(m.target&&m.target!==m.conf.name&&m.target!==m.conf.internal){m.conf.microphoneId?m.sessionConf.mediaConstraints.audio={deviceId:m.conf.microphoneId}:m.sessionConf.mediaConstraints.audio=!0;var e=m.target.replace(/ /g,"");return S(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&m.ua.call(e,m.sessionConf)}).then(function(){E()})}},m.hold=function(e){e.hold({useUpdate:!1})},m.refer=function(t){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 S(e)}).then(function(e){t.refer(e,{eventHandlers:{requestSucceeded:y(t,"requestSucceeded","top right",3e3),requestFailed:y(t,"requestFailed","top right",3e3)}})})},m.record=function(e){a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{session:e,sessions:m.sessions}})},m.unhold=function(e){e.unhold({useUpdate:!1}),m.putOtherCallsOnHold(e)},m.answer=function(e){m.conf.microphoneId?m.sessionConf.mediaConstraints.audio={deviceId:m.conf.microphoneId}:m.sessionConf.mediaConstraints.audio=!0,e.answer(m.sessionConf)},m.terminate=function(e){e.terminate()},m.selectSession=function(e){e.unhold({useUpdate:!1}),m.putOtherCallsOnHold(e)},m.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"#":m.type(e.key);break;case"enter":m.call()}},m.toggleDialpad=function(){m.showDialpad=!m.showDialpad},m.referAttended=function(e){a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(m.sessions,{id:e.id})}})},m.closeDialpad=function(){m.showDialpad=!1},m.initDevice=g,m.putOtherCallsOnHold=function(e){if(1<m.sessions.length)for(var t=0;t<m.sessions.length;t+=1)m.sessions[t].id===e.id||m.sessions[t].isOnHold().remote||m.sessions[t].hold({useUpdate:!1})},m.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|\-)*$/.test(e)?(m.target=e,i.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",m.target)):m.target?i.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",m.target):E():E()},m.targetSelected=function(e){e&&(m.target=e.originalObject.target,m.call(),E())},i.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:m.conf}}).then(function(e){e&&(m.conf=e,g("ringing"),g("speaker"))})}),i.$on("webrtc::logout",function(){m.ua.stop()}),i.$on("webrtc::call",function(e,t){t.target&&(m.target=t.target,m.call())}),i.$on("webrtc::transfer",function(e,t){if(t.target)for(var n=0;n<m.sessions.length;n+=1)if(m.sessions[n].isEstablished()&&!m.sessions[n].isOnHold().local)return S(t.target).then(function(e){e&&m.sessions[n].refer(e,{eventHandlers:{requestSucceeded:y(m.sessions[n],"requestSucceeded","top right",3e3),requestFailed:y(m.sessions[n],"requestFailed","top right",3e3)}})})})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","toasty","api","motNotification"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(t,e,n){var a=this;a.prefixes=e,a.required=n,a.closeDialog=function(e){t.hide(e)},a.call=function(){t.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,t){function n(){t.css("display","inline"),i(a,1e3)}function a(){t.css("display","none"),i(n,1e3)}n()}],replace:!0}}function t(t,i,s,e,n){var o=this;function a(t,e){console.log("startMonitor");var n=i.defer(),a=(e||t.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){t.filename=a+".wav",t.mixmonitorid=e.mixmonitorid,t.status="rec",o.session.monitor=!0,n.resolve(t)}).catch(function(e){n.reject(e)}),n.promise}o.title="Record",o.sessions=e,o.session=n,o.closeDialog=function(){t.hide()},o.addRecording=function(){var e=t.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");t.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(t){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:t.mixmonitorid}).$promise.then(function(e){t.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],t.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",t)}(),function(){"use strict";function e(t,a,i,e){var s=this;function o(e){t.hide(e)}s.title="Refer Attended",s.sessions=i,s.session=e,s.sessionTarget=null,i.length&&(s.target=i[0].user),s.closeDialog=o,s.transfer=function(){var e,t,n=_.find(i,function(e){if(e.user===s.target)return e});t=n.outgoing?(e=n,s.session):(e=s.session,n);t.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:function(e){a.show(a.simple().textContent("requestSucceeded").position("top right").hideDelay(3e3)),o(),t.terminate()},requestFailed:function(e){a.show(a.simple().textContent("requestFailed").position("top right").hideDelay(3e3)),o(),t.terminate()}}})}}e.$inject=["$mdDialog","$mdToast","sessions","session"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,t){var n=this;function a(e,t,n){var a;if(s[n]){if(a=_.find(e,function(e){return e.deviceId===s[n]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===t});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===t}))&&(s[n]=a.deviceId);return s[n]||null}s.ringingId=a(t,"audiooutput","ringingId"),s.speakerId=a(t,"audiooutput","speakerId"),s.microphoneId=a(t,"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,n.conf=angular.copy(s),n.devices=t,n.saveSettings=function(){e.hide(n.conf)},n.closeDialog=function(){e.hide()},n.isCompatibleBrowser=function(){return"chrome"===n.conf.browserName.toLowerCase()||"opera"===n.conf.browserName.toLowerCase()||"safari"===n.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,t){var n=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];t.addClass(n)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(t,e){var n=!1,a=document.createElement("audio");t.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){n||(n=!0,e.preventDefault(),i[t.model||"voiceRecording"].download({id:t.id}).$promise.then(function(e){var t=[e.buffer],n=new Blob(t,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(n)),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,t){var n=angular.element('<div class="ms-responsive-table-wrapper"></div>');t.after(n),n.append(t)}}})}(),function(){"use strict";function e(s,o,t,n){return{restrict:"AE",compile:function(e){if(!(n.getConfig("disableCustomScrollbars")||n.getConfig("disableCustomScrollbarsOnMobile")&&t.isMobile()))return e.addClass("ms-scroll"),function(e,t,n){var a={};function i(){PerfectScrollbar.update(t[0])}n.msScroll&&(a=e.$eval(n.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(t[0],a)},0),t.on("mouseenter",i),e.$watch(function(){return t.prop("scrollHeight")},function(e,t){angular.isUndefined(e)||angular.equals(e,t)||i()}),e.$watch(function(){return t.prop("scrollWidth")},function(e,t){angular.isUndefined(e)||angular.equals(e,t)||i()}),e.$on("$destroy",function(){t.off("mouseenter"),PerfectScrollbar.destroy(t[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var t={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){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(){return t}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(s,i,e){var o=this;o.collapsed=!0,o.query="",o.queryOptions={debounce:o.debounce||0};var t=!(!o.collapseOnBlur||"true"!=o.collapseOnBlur);o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.populateResults=function(e){if(o.collapsed)return;var t=angular.isArray(e),n=null===e;if(!t&&!n)return;o.selectedResultIndex=0,o.results=e},o.expand=function(){o.collapsed=!1,s.expand(),o.onExpand&&angular.isFunction(o.onExpand)&&o.onExpand()},o.collapse=function(){o.query="",o.populateResults(null),o.collapsed=!0,s.collapse(),o.onCollapse&&angular.isFunction(o.onCollapse)&&o.onCollapse()},o.blurCollapse=function(){if(!t)return;o.collapse()},o.absorbEvent=function(e){e.preventDefault()},o.handleKeydown=function(e){var t=e.keyCode;-1<[27,38,40].indexOf(t)&&e.preventDefault();switch(t){case 13:if(!o.results)return;o.handleResultClick(o.results[o.selectedResultIndex]);break;case 27:o.collapse();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,o.ensureSelectedResultIsVisible());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,o.ensureSelectedResultIsVisible())}},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.temporarilyIgnoreMouseEvents=function(){o.ignoreMouseEvents=!0,e.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=e(function(){o.ignoreMouseEvents=!1},250)},o.handleResultClick=function(e){o.onResultClick&&o.onResultClick({item:e});o.collapse()},o.ensureSelectedResultIsVisible=function(){var e=i.find(".ms-search-bar-results"),t=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&t){var n=t.position().top-8,a=t.position().top+t.outerHeight()+8;o.temporarilyIgnoreMouseEvents(),e.scrollTop()>n&&e.scrollTop(n),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},s.$watch("MsSearchBar.query",function(e,t){if(!angular.isUndefined(e)&&!angular.equals(e,t)&&!o.collapsed){var n=s.$parent.$eval(o.onSearch,{query:e}),a=angular.isArray(n),i=n&&!!n.then;a&&o.populateResults(n),i&&(o.resultsLoading=!0,n.then(function(e){o.populateResults(e)},function(){o.populateResults([])}).finally(function(){o.resultsLoading=!1}))}})}function t(i){return{restrict:"E",scope:{},require:"msSearchBar",controller:"MsSearchBarController as MsSearchBar",bindToController:{debounce:"=?",onSearch:"@",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"@"},templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),function(e,t){var n,a=i.find("body");e.collapse=function(){t.removeClass("expanded"),a.removeClass("ms-search-bar-expanded")},e.expand=function(){t.addClass("expanded"),a.addClass("ms-search-bar-expanded"),n.focus()},n=t.find("#ms-search-bar-input")}}}}e.$inject=["$scope","$element","$timeout"],t.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",t)}(),function(){"use strict";function e(e,n,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=[],t=l.getFlatNavigation(),n=r.defer(),a=0;a<t.length;a++)t[a].uisref&&e.push(t[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(){n.resolve(e)},250),n.promise},d.loadShortcuts=function(){var e=r.defer(),t=angular.fromJson(n.get("motion.shortcuts"));angular.isUndefined(t)&&(t=[{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}],n.put("motion.shortcuts",angular.toJson(t)));return e.resolve(t),e.promise},d.saveShortcuts=function(){var e=r.defer();return n.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 t=0;t<d.shortcuts.length;t++)d.shortcuts[t]._id===e._id&&(d.shortcuts.splice(t,1),d.query||(0===d.shortcuts.length?d.results=null:t>=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 t=e.keyCode;-1<[38,40].indexOf(t)&&e.preventDefault();switch(t){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"),t=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&t){var n=t.position().top-8,a=t.position().top+t.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>n&&e.scrollTop(n),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,t){angular.isUndefined(e)||angular.equals(e,t)||(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,t){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,t,n,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(t.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,t){var n=e.$on("msSplashScreen::remove",function(){a.leave(t).then(function(){n(),e=t=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function t(){i.setCurrentStep(1)}function n(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)?!!n(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,t,n){var a={element:e,scope:t,form:n,stepNumber:t.step||i.steps.length+1,stepTitle:t.stepTitle,stepTitleTranslate:t.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,t){return e.stepNumber-t.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(),t()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].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,t=e;1<=t;t--)if(!a(t)){e=t;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,t=e;t<=i.steps.length;t++)if(!a(t)){e=t;break}i.setCurrentStep(e)},i.gotoFirstStep=t,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 t=!1,n=1;n<e;n++)if(!s(n)){t=!0;break}return t},i.isStepOptional=n,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 t(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,t,n,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],t.$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,t,n,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,t,n,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(n.optionalStep),s.registerStep(t,e,i),t.hide()}}}}).directive("msVerticalStepper",t).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,t,n,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(n.optionalStep),e.stepInfo=s.registerStep(t,e,i),e.MsStepper=s,t.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,t){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function t(){var e=document.getElementById("bar-container"),t=document.getElementById("tab-container");return t.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==t.scrollLeft?"right":t.scrollWidth>e.scrollWidth&&t.scrollLeft>e.scrollLeft&&e.scrollWidth+t.scrollLeft>=t.scrollWidth?"left":t.scrollWidth>e.scrollWidth&&t.scrollLeft>e.scrollLeft&&e.scrollWidth+t.scrollLeft<t.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(t()){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,n,t,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){n.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,t){var n=angular.element(t[0]);d(n).then(function(){m(function(){s=!0})})}):d(n).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,t){angular.equals(e,t)||e&&(n.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var t=u.defer(),n=e.find("img");return 0<n.length?n.on("load",function(){t.resolve("Image is loaded")}):t.resolve("No images"),t.promise}function c(){r.scrollTop()+r.height()>n.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var t=this;t.scrollEl=void 0,t.setScrollEl=function(e){t.scrollEl=e},t.getScrollEl=function(){return t.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,t,n,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');t.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().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,t,n,i,s,o,r,l){function d(){a.timeoutId&&clearTimeout(a.timeoutId)}function c(){void 0!==o.startTime&&(a.millis=moment().diff(moment(a.startTime))),a.maxTimeUnit&&"day"!==a.maxTimeUnit?"second"===a.maxTimeUnit?(a.seconds=Math.floor(a.millis/1e3),a.minutes=0,a.hours=0,a.days=0,a.months=0,a.years=0):"minute"===a.maxTimeUnit?(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4),a.hours=0,a.days=0,a.months=0,a.years=0):"hour"===a.maxTimeUnit?(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4%60),a.hours=Math.floor(a.millis/36e5),a.days=0,a.months=0,a.years=0):"month"===a.maxTimeUnit?(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4%60),a.hours=Math.floor(a.millis/36e5%24),a.days=Math.floor(a.millis/36e5/24%30),a.months=Math.floor(a.millis/36e5/24/30),a.years=0):"year"===a.maxTimeUnit&&(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4%60),a.hours=Math.floor(a.millis/36e5%24),a.days=Math.floor(a.millis/36e5/24%30),a.months=Math.floor(a.millis/36e5/24/30%12),a.years=Math.floor(a.millis/36e5/24/365)):(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4%60),a.hours=Math.floor(a.millis/36e5%24),a.days=Math.floor(a.millis/36e5/24),a.months=0,a.years=0),a.secondsS=1===a.seconds||0===a.seconds?"":"s",a.minutesS=1===a.minutes||0===a.minutes?"":"s",a.hoursS=1===a.hours||0===a.hours?"":"s",a.daysS=1===a.days||0===a.days?"":"s",a.monthsS=1===a.months||0===a.months?"":"s",a.yearsS=1===a.years||0===a.years?"":"s",a.sseconds=a.seconds<10?"0"+a.seconds:a.seconds,a.mminutes=a.minutes<10?"0"+a.minutes:a.minutes,a.hhours=a.hours<10?"0"+a.hours:a.hours,a.ddays=a.days<10?"0"+a.days:a.days,a.mmonths=a.months<10?"0"+a.months:a.months,a.yyears=a.years<10?"0"+a.years:a.years}"function"!=typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),a.autoStart=o.autoStart||o.autostart,0===r.html().trim().length?r.append(l("<span>{{millis}}</span>")(a)):r.append(l(r.contents())(a)),a.interval=a.intervalAttr||1e3,a.startTime=null,a.endTime=null,a.timeoutId=null,a.countdown=a.countdownAttr&&0<=parseInt(a.countdownAttr,10)?parseInt(a.countdownAttr,10):void 0,a.isRunning=!1,a.$watch("startTimeAttr",function(e,t){e!==t&&a.isRunning&&a.start()}),a.$on("timer-start",function(){a.start()}),a.$on("timer-resume",function(){a.resume()}),a.$on("timer-stop",function(){a.stop()}),a.$on("timer-clear",function(){a.clear()}),a.$on("timer-set-countdown",function(e,t){a.countdown=t}),a.start=r[0].start=function(){var e=moment(),t=a.startTimeAttr?moment(a.startTimeAttr):null;a.startTime=!t||e<t?e:t;var n=a.endTimeAttr?moment(a.endTimeAttr):null;a.endTime=!n||n<e?null:n,a.countdown||(a.countdown=a.countdownAttr&&0<parseInt(a.countdownAttr,10)?parseInt(a.countdownattr,10):void 0),d(),m(),a.isRunning=!0},a.resume=r[0].resume=function(){d(),a.countdownAttr&&(a.countdown+=1),a.startTime=moment().diff(moment(a.stoppedTime).diff(moment(a.startTime))),m(),a.isRunning=!0},a.stop=a.pause=r[0].stop=r[0].pause=function(){a.clear(),a.$emit("timer-stopped",{timeoutId:a.timeoutId,millis:a.millis,seconds:a.seconds,minutes:a.minutes,hours:a.hours,days:a.days})},a.clear=r[0].clear=function(){a.stoppedTime=moment(),d(),a.timeoutId=null,a.isRunning=!1},r.bind("$destroy",function(){d(),a.isRunning=!1});var m=function(){a.millis=moment().diff(a.startTime);var e=a.millis%1e3;if(a.endTimeAttr&&(a.millis=moment(a.endTime).diff(moment()),e=a.interval-a.millis%1e3),a.countdownAttr&&(a.millis=1e3*a.countdown),a.millis<0)return a.stop(),a.millis=0,c(),void(a.finishCallback&&a.$eval(a.finishCallback));c(),a.timeoutId=setTimeout(function(){m(),a.$digest()},a.interval-e),a.$emit("timer-tick",{timeoutId:a.timeoutId,millis:a.millis}),0<a.countdown?a.countdown--:a.countdown<=0&&(a.stop(),a.finishCallback&&a.$eval(a.finishCallback))};void 0!==a.autoStart&&!0!==a.autoStart||a.start()}e.$inject=["$scope","$document","$timeout","$interval","$window","$translate","$attrs","$element","$compile"],angular.module("app.core").controller("MsTimerController",e).directive("timer",function(){return{restrict:"EA",replace:!1,scope:{intervalAttr:"=interval",startTimeAttr:"=startTime",endTimeAttr:"=endTime",countdownAttr:"=countdown",autoStart:"&autoStart",maxTimeUnit:"="},controller:"MsTimerController"}})}(),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 t=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 n=0;n<e.voiceQueues.rows.length;n+=1)_.includes(a.filter,e.voiceQueues.rows[n].id)&&(t+=e.voiceQueues.rows[n][e.attrs[0].value]?parseInt(e.voiceQueues.rows[n][e.attrs[0].value]):0)}return t}})}(),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 t=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,t),r.multiBarChart.data.splice(0,t)}for(var n=0;n<r.properties.length;n+=1){if(r.multiBarChart.series[n]=o.instant("TOOLS."+r.properties[n].toUpperCase()),_.isNil(r.multiBarChart.data[n])&&(r.multiBarChart.data[n]=[]),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[n].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[n][s]=e.voiceQueues.rows[i][r.properties[n]]?parseInt(e.voiceQueues.rows[i][r.properties[n]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.xAxes.length;t+=1)r.multiBarChart.options.scales.xAxes[t].ticks.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.yAxes.length;n+=1)r.multiBarChart.options.scales.yAxes[n].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 t=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,t),o.pieChart.data.splice(0,t)}for(var n=0,a=0;n<o.properties.length;n+=1){o.pieChart.labels[n]=s.instant("TOOLS."+o.properties[n].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[n]]?parseInt(e.voiceQueues.rows[i][o.properties[n]]):0);o.pieChart.data[n]=a,a=0}}(e),e.foreground&&(t=e,o.pieChart.options.legend.fontColor=t.foreground));var t}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,n,a,i){var s=this;function t(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,t).$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(t){t&&t.attrs&&(t.attrs[0]&&t.attrs[0].value&&(s.query.id=t.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===t.attrs[0].type?t.attrs[0].value:void 0,CustomReportId:"custom"===t.attrs[0].type?t.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),t.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:t.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),t.attrs[1]&&t.attrs[1].value&&(s.refresh=parseInt(t.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(t.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=n(function(){s.interval&&a.cancel(s.interval),e(t)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&n.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,t){moment(t,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(t=moment(t,"").format("YYYY-MM-DD HH:mm:ss"));return t},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&n.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,t){this.getTrustedURL=function(e){return t.trustAsResourceUrl(e)}}function t(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"],t.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",t)}(),function(){"use strict";function e(e,t){var n=this;n.flipped=!1,n.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;n.flipped=!n.flipped,t.toggleClass("flipped",n.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,t,n,a,i){i(function(e){t.empty(),t.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,t,n,a,i){i(function(e){t.empty(),t.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,t,n,a,i){i(function(e){t.empty(),t.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var t=Date.now()-new Date(e);return t<36e5?moment(e).fromNow():t<864e5?moment(e).format("HH:mm"):t<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(t){return function(e){return t.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("filterByIds",function(){return function(e,t){if(0===e.length||!t)return e;if(0===t.length)return[];for(var n=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<t.length;o++){var r=t[o];if(i.id===r){s=!0;break}}s&&n.push(i)}return n}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,t,n){if(0===e.length||!n||0===n.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<n.length;r++){var l=n[r];if(-1<s[t].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,n){if(0===e.length||0===n.length)return e;var a=[];return e.forEach(function(e){var t=n.every(function(t){var n=!1;return e.tags.forEach(function(e){e.name!==t.name||(n=!0)}),n});t&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,t){if(0!==e.length&&0!==t.length){if(e.length<t.length)return[];var n=[],a=t.every(function(t){var n=!1;return e.forEach(function(e){e.name!==t.name||(n=!0)}),n});return a&&n.push(e),n}}})}(),function(){"use strict";function c(e,t,n,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=t,this.accept=n,this.reject=a,this.close=i}function m(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var n=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var t=_.find(e,function(e){return e.data.id===n.id});t&&t.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var l,n,d=[];"serviceWorker"in navigator&&m()?navigator.serviceWorker.register("notification.js").then(function(e){(l=e).update(),l.installing?n=l.installing:l.waiting?n=l.waiting:l.active&&(n=l.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===n){var t=_.find(d,{id:e.data.id});if(t)switch(e.data.action){case"accept":t.accept&&t.accept();break;case"reject":t.reject&&t.reject()}}}),{create:function(e,i,s,o,r){return new Promise(function(t,n){var a;m()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new c(e||"MyTitle",i||"MyBody",o,r),d.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return l.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){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,t){var n=e.split("@"),a=n[0],i=n[1],s=t||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var t=e.split("."),n=c,a=0;a<t.length;a++){if(angular.isUndefined(n[t[a]])){d.error('Resource part "'+t[a]+'" is not defined!'),n=!1;break}n=n[t[a]]}return n||!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";angular.module("app.core").provider("msApi",function(){var n=angular.injector(["ng"]).get("$log"),a="",v=[];function t(e){a=e}function i(){return a}function s(e,t){angular.isString(e)?angular.isArray(t)?v[e]={url:a+(t[0]||""),paramDefaults:t[1]||[],actions:t[2]||[],options:t[3]||{}}:n.error('"resource" must be an array and it must follow $resource definition'):n.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=t,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:t,getBaseUrl:i,register:s,resolve:function(e,t){g.$broadcast("msApi::resolveStart");var n=e.split("@"),a=n[0],i=n[1],s=t||{};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,t,n,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=t||{};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(n)&&angular.isFunction(n)&&n(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,t){return-1<t.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"}],t=[{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 n(e){for(var t=0;t<e.length;t++){var n=e[t].string,a=e[t].prop;if(i=e[t].versionSearch||e[t].identity,n){if(-1!==n.indexOf(e[t].subString))return e[t].identity}else if(a)return e[t].identity}}function a(e){var t=e.indexOf(i);if(-1!==t)return parseInt(e.substring(t+i.length+1))}var s=n(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=n(t)||"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,t){-1===t.indexOf(e)?t.push(e):t.splice(t.indexOf(e),1)}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,t){var n=this;n.themes=t.themes,n.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],n.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"}],n.layoutMode="wide",n.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",n.setActiveTheme=function(e){t.setActiveTheme(e)},n.getActiveTheme=function(){return t.themes.active},n.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===n.layoutMode)},n.updateLayoutStyle=function(){e.put("motion.layoutStyle",n.layoutStyle),location.reload()}}function t(t){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(){t("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],t.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",t)}(),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(n){o[n.name]={},angular.forEach(n.colors,function(e,t){o[n.name][t]={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 t=angular.copy(e);angular.forEach(t,function(n){angular.forEach(n,function(e,t){n[t]=e.levels,n[t].color=e.levels.default.color,n[t].contrast1=e.levels.default.contrast1,n[t].contrast2=e.levels.default.contrast2,n[t].contrast3=e.levels.default.contrast3,n[t].contrast4=e.levels.default.contrast4,delete n[t].default})}),s.setThemesList(t);var n=i.get("motion.selectedTheme");n?s.setActiveTheme(n):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,t){var n,a,i,s,o;(r={})["@themeName"]=t,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,n){angular.forEach(e,function(e,t){r["@"+a+d(n)+d(t)]=e})})}),n=r,a=new RegExp(Object.keys(n).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 n[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,t){var n=t||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),n&&(e=function(e,t){var n={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]=n.white[t]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=n.black[t]);return e}(e,n)),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(n,e,t){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(t.custom=i),n.alwaysWatchTheme(!0),angular.forEach(e,function(e){n.definePalette(e.name,e.options)}),angular.forEach(t,function(e,t){n.theme(t).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(t,n,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 n.error('You must have at least one theme named "default"'):(n.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 t.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],t.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(t,s,o,r){this.search=function(t){for(var e=[],n=r.getFlatNavigation(),a=o.defer(),i=0;i<n.length;i+=1)n[i].uisref&&e.push(n[i]);t&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(t)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?t.go(e.state,e.stateParams):t.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,t){var n=this;n.code="",n.send=!1,n.error=e.params,n.sendReport=function(){t.post("/api/jira",n.error).then(function(e){n.send=!0,e.data&&(n.code=e.data.id)},function(e){n.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,t){var n=this;n.currentUser=e.getCurrentUser(),n.cookieAlertHide=t.get("motion.cookieAlertHide:"+n.currentUser.id)||!1,n.cookieAlertOnClose=function(){t.put("motion.cookieAlertHide:"+n.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,t,n,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){t.success({title:n.instant("FORGOTPASSWORD.LINK_SENT"),msg:n.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&t.error({title:n.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,t){var n=this;n.currentUser=e.getCurrentUser(),n.newsAlertHide=t.get("motion.newsAlertHide:"+n.currentUser.id)||!1,n.newsAlertOnClose=function(){t.put("motion.newsAlertHide:"+n.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e){var t={baseUrl:"api/"};return t.auth=e(t.baseUrl+"auth/local",{},{local:{method:"post",url:t.baseUrl+"auth/local"},forgot:{method:"post",url:t.baseUrl+"auth/local/forgot"},reset:{method:"post",url:t.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},google:{method:"post",url:t.baseUrl+"auth/google"}}),t.jira=e(t.baseUrl+"jira"),t.rpc=e(t.baseUrl+"rpc",{},{startMonitor:{method:"get",url:t.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:t.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:t.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:t.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:t.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:t.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:t.baseUrl+"rpc/sms/queues"},getOpenchannelQueues:{method:"get",url:t.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:t.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:t.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:t.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:t.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:t.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:t.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:t.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:t.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:t.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:t.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:t.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:t.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:t.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:t.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:t.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/fax/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:t.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:t.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:t.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:t.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:t.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:t.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),t.version=e(t.baseUrl+"version",{},{fetch:{method:"get",url:t.baseUrl+"version/fetch"},reset:{method:"get",url:t.baseUrl+"version/reset"},pull:{method:"get",url:t.baseUrl+"version/pull"},restart:{method:"get",url:t.baseUrl+"version/restart"},migrations:{method:"get",url:t.baseUrl+"version/migrations"}}),t.system=e(t.baseUrl+"system",{},{killProcess:{method:"get",url:t.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),t.pm2=e(t.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),t.user=e(t.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"users/describe"},clone:{method:"post",url:t.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:t.baseUrl+"users/create_many",isArray:!0},addContacts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/contacts"},changePassword:{isArray:!1,method:"put",url:t.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/avatar"},getContacts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/recordings"},getChatInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/fax/interactions"},login:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/openchannel_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/chat_websites"},getSquareProjects:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/scheduled_calls"}}),t.voiceChanSpy=e(t.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:t.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceContext=e(t.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:t.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceExtension=e(t.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:t.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"voice/extensions/:id/applications"}}),t.voiceMusicOnHold=e(t.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:t.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:t.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:t.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:t.baseUrl+"voice/mohs/:id/sounds"}}),t.voiceQueue=e(t.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/queues/describe"},clone:{method:"post",url:t.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:t.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:t.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:t.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:t.baseUrl+"voice/queues/:id/blacklists"}}),t.voiceRecording=e(t.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:t.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:t.baseUrl+"voice/recordings/:id/downloads"}}),t.voiceMail=e(t.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/mails/describe"},clone:{method:"post",url:t.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"voice/mails/:id/messages"}}),t.voiceMailMessage=e(t.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:t.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.voiceCallReport=e(t.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceDialReport=e(t.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceAgentReport=e(t.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceQueueReport=e(t.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/reports/index"}}),t.memberReport=e(t.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"members/reports/describe"},clone:{method:"post",url:t.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.trunk=e(t.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"trunks/describe"},clone:{method:"post",url:t.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceTransferReport=e(t.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.mailServerOut=e(t.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:t.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),t.mailAccount=e(t.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:t.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/users"}}),t.mailQueue=e(t.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/queues/describe"},clone:{method:"post",url:t.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"mail/queues/:id/users"}}),t.mailSubstatus=e(t.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:t.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),t.mailInteraction=e(t.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:t.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.mailMessage=e(t.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/messages/describe"},clone:{method:"post",url:t.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:t.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.mailApplication=e(t.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/applications/describe"},clone:{method:"post",url:t.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.mailQueueReport=e(t.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.dashboard=e(t.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"dashboards/describe"},clone:{method:"post",url:t.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:t.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:t.baseUrl+"dashboards/:id/items"}}),t.dashboardItem=e(t.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:t.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),t.faxAccount=e(t.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:t.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/users"}}),t.faxApplication=e(t.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/applications/describe"},clone:{method:"post",url:t.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.faxInteraction=e(t.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:t.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.faxMessage=e(t.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/messages/describe"},clone:{method:"post",url:t.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:t.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.faxQueue=e(t.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/queues/describe"},clone:{method:"post",url:t.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"fax/queues/:id/users"}}),t.faxQueueReport=e(t.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.smsAccount=e(t.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:t.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/users"}}),t.smsApplication=e(t.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/applications/describe"},clone:{method:"post",url:t.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.smsInteraction=e(t.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:t.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.smsMessage=e(t.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/messages/describe"},clone:{method:"post",url:t.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:t.baseUrl+"sms/messages/:id/status"}}),t.smsQueue=e(t.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/queues/describe"},clone:{method:"post",url:t.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"sms/queues/:id/users"}}),t.openchannelAccount=e(t.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/send"}}),t.openchannelApplication=e(t.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.openchannelInteraction=e(t.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.openchannelMessage=e(t.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"openchannel/messages/:id/reject"}}),t.openchannelQueue=e(t.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/queues/:id/users"}}),t.chatWebsite=e(t.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/websites/describe"},clone:{method:"post",url:t.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/users"}}),t.openchannelQueueReport=e(t.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatApplication=e(t.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/applications/describe"},clone:{method:"post",url:t.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatInteraction=e(t.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:t.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},customUpdate:{isArray:!1,method:"put",url:t.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:t.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:t.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:t.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:t.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:t.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.chatMessage=e(t.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/messages/describe"},clone:{method:"post",url:t.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"chat/messages/:id/reject"}}),t.chatOfflineMessage=e(t.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:t.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatQueue=e(t.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/queues/describe"},clone:{method:"post",url:t.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"chat/queues/:id/users"}}),t.chatGroup=e(t.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/groups/describe"},clone:{method:"post",url:t.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:t.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:t.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:t.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"chat/groups/:id/messages"}}),t.chatProactiveAction=e(t.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:t.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),t.cmCompany=e(t.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/companies/describe"},clone:{method:"post",url:t.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:t.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:t.baseUrl+"cm/companies/:id/contacts"}}),t.cmContact=e(t.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:t.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:t.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/upload/:id"}}),t.cmHopper=e(t.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:t.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:t.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:t.baseUrl+"cm/hopper/opencontacts"}}),t.cmHopperBlack=e(t.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:t.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),t.cmHopperFinal=e(t.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:t.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:t.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:t.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:t.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:t.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:t.baseUrl+"cm/hopper_final/checkContactHopper"}}),t.cmHopperHistory=e(t.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:t.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),t.cmCustomField=e(t.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:t.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.action=e(t.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"actions/describe"},clone:{method:"post",url:t.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),t.automation=e(t.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"automations/describe"},clone:{method:"post",url:t.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:t.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:t.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:t.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:t.baseUrl+"automations/:id/actions"}}),t.cannedAnswer=e(t.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"canned_answers/describe"},clone:{method:"post",url:t.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),t.disposition=e(t.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"dispositions/describe"},clone:{method:"post",url:t.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),t.condition=e(t.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"conditions/describe"},clone:{method:"post",url:t.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),t.interval=e(t.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"intervals/describe"},clone:{method:"post",url:t.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:t.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:t.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:t.baseUrl+"intervals/:id/sub_intervals/create_many"}}),t.pause=e(t.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"pauses/describe"},clone:{method:"post",url:t.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),t.cdr=e(t.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cdr/describe"},clone:{method:"post",url:t.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceQueuesLog=e(t.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:t.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),t.schedule=e(t.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"schedules/describe"},clone:{method:"post",url:t.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:t.baseUrl+"schedules/:id/run"}}),t.sound=e(t.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sounds/describe"},clone:{method:"post",url:t.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:t.baseUrl+"sounds/:id"}}),t.tag=e(t.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"tags/describe"},clone:{method:"post",url:t.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),t.template=e(t.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"templates/describe"},clone:{method:"post",url:t.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),t.trigger=e(t.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"triggers/describe"},clone:{method:"post",url:t.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:t.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:t.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:t.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:t.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:t.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:t.baseUrl+"triggers/:id/actions"}}),t.variable=e(t.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"variables/describe"},clone:{method:"post",url:t.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),t.integration=e(t.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),t.integrationReport=e(t.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:t.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.analyticCustomReport=e(t.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:t.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:t.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:t.baseUrl+"analytics/custom_reports/:id/query"}}),t.analyticDefaultReport=e(t.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:t.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:t.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:t.baseUrl+"analytics/default_reports/:id/query"}}),t.analyticExtractedReport=e(t.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.analyticMetric=e(t.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:t.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),t.analyticFieldReport=e(t.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:t.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:t.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:t.baseUrl+"analytics/field_reports/:id/create_many"}}),t.analyticTreeReport=e(t.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.intSalesforceAccount=e(t.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),t.intSalesforceConfiguration=e(t.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),t.intSalesforceField=e(t.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intSugarcrmAccount=e(t.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),t.intSugarcrmConfiguration=e(t.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),t.intSugarcrmField=e(t.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intDeskAccount=e(t.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/accounts/:id/fields"}}),t.intDeskConfiguration=e(t.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:t.baseUrl+"integrations/desk/configurations/:id/tags"}}),t.intDeskField=e(t.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intZohoAccount=e(t.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/accounts/:id/fields"}}),t.intZohoConfiguration=e(t.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),t.intZohoField=e(t.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intZendeskAccount=e(t.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),t.intZendeskConfiguration=e(t.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:t.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),t.intZendeskField=e(t.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intFreshdeskAccount=e(t.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),t.intFreshdeskConfiguration=e(t.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:t.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),t.intFreshdeskField=e(t.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intVtigerAccount=e(t.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),t.intVtigerConfiguration=e(t.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),t.intVtigerField=e(t.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.network=e(t.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"networks/describe"},clone:{method:"post",url:t.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatQueueReport=e(t.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatInternalMessage=e(t.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:t.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:t.baseUrl+"chat/internal/messages/users"}}),t.jscriptyAnswerReport=e(t.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:t.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.jscriptyQuestionReport=e(t.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:t.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.jscriptySessionReport=e(t.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:t.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:t.baseUrl+"jscripty/sessions/reports/:id/questions"}}),t.smsQueueReport=e(t.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.squareReport=e(t.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/reports/describe"},clone:{method:"post",url:t.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.squareReportDetail=e(t.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:t.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.jscriptyProject=e(t.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:t.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:t.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:t.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.setting=e(t.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"settings/describe"},clone:{method:"post",url:t.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:t.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:t.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:t.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:t.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:t.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:t.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:t.baseUrl+"settings/:id/preferred"}}),t.squareOdbc=e(t.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/odbc/describe"},clone:{method:"post",url:t.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:t.baseUrl+"square/odbc/:id/test"}}),t.squareProject=e(t.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/projects/describe"},clone:{method:"post",url:t.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:t.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:t.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:t.baseUrl+"square/projects/:id/users"}}),t.squareRecording=e(t.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/recordings/describe"},clone:{method:"post",url:t.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.squareMessage=e(t.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/messages/describe"},clone:{method:"post",url:t.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),t.team=e(t.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"teams/describe"},clone:{method:"post",url:t.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:t.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:t.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:t.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"teams/:id/users"}}),t.license=e(t.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"license/describe"},clone:{method:"post",url:t.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),t.campaign=e(t.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"campaigns/describe"},clone:{method:"post",url:t.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:t.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:t.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:t.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:t.baseUrl+"campaigns/:id/blacklists"}}),t.migration=e(t.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"migrations/describe"},clone:{method:"post",url:t.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),t.attachment=e(t.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"attachments/describe"},clone:{method:"post",url:t.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.plugin=e(t.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"plugins/describe"},clone:{method:"post",url:t.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:t.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:t.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:t.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:t.baseUrl+"plugins/webhook"}}),t.mailTransferReport=e(t.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatTransferReport=e(t.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.faxTransferReport=e(t.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.openchannelTransferReport=e(t.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.smsTransferReport=e(t.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.cmList=e(t.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/lists/describe"},clone:{method:"post",url:t.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:t.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:t.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:t.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:t.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:t.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"cm/lists/:id/users"}}),t.voicePrefix=e(t.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:t.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"voice/prefixes/:id/users"}}),t.userProfile=e(t.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"userProfiles/describe"},clone:{method:"post",url:t.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:t.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:t.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:t.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:t.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:t.baseUrl+"userProfiles/:id/resources"}}),t.userProfileSection=e(t.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:t.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),t.userProfileResource=e(t.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:t.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),t}e.$inject=["$resource"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,t){t.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,t,n){this.themes=e.themes;var a=n.get("motion.language");a&&t.use(a)}e.$inject=["motionTheming","$translate","$cookies"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var t=new Date,n=new Date(e);return n.getDate()===t.getDate()&&n.getMonth()===t.getMonth()&&n.getFullYear()===t.getFullYear()?a("date")(n.getTime(),"shortTime"):n.getDate()===t.getDate()-1&&n.getMonth()===t.getMonth()&&n.getFullYear()===t.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(n.getTime(),"shortTime"):a("date")(n.getTime(),"MMM d, y h:mm a")}}function t(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"],t.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,t,n){var a,i={},s=0;for(a in e)if(n<=s&&(i[a]=e[a]),++s===n+t)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"}],t=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],n=[{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 t},getDaysOfWeek:function(){return n},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",t).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,t,n){var a;n.html5Mode(!0),t.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",function(e){return e.resolve("setting@get",{id:1})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,t,n){var a=e.$on("$stateChangeStart",function(){e.loadingProgress=!0}),i=e.$on("$stateChangeSuccess",function(){t(function(){e.loadingProgress=!1})});e.state=n,e.$on("$destroy",function(){a(),i()})}e.$inject=["$rootScope","$timeout","$state"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i;function s(){i=io({query:"id="+e.getCurrentUser().id,transports:["websocket","polling"]})}return{connect:s,on:function(e,t){t=t||angular.noop,i||s(),i.on(e,function(){var e=arguments;a.$apply(function(){t.apply(i,e)})})},onWithoutApply:function(e,t){t=t||angular.noop,i||s(),i.on(e,function(){t.apply(i,arguments)})},emit:function(e,t,n){n=n||angular.noop,i||s(),i.emit(e,t,function(){var e=arguments;a.$apply(function(){n.apply(i,e)})})},removeAllListeners:function(e){i||s(),i.removeAllListeners(e)},removeListener:function(e,t){i||s(),i.removeListener(e,t)},disconnect:function(){i||s(),i.disconnect()}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(t,n,e,a,i,s){var o=this;o.progresslogin=!1,o.login=function(){return o.progresslogin=!0,o.message="",s.login(o.form).then(function(){return t.go("app.dashboards.general")}).catch(function(e){o.message=e.message}).finally(function(){o.progresslogin=!1})},o.loginOauth=function(e){o.message="",n.location.href="/api/auth/"+e},o.onInit=function(){{if(t.params.token&&t.params.userId)return s.removeCookies(),o.progresslogin=!0,e.put("motion.token",t.params.token),i.user.get({id:t.params.userId}).$promise.then(function(e){e&&(s.updateCurrentUser(e),t.go("app.dashboards.general"))}).finally(function(){o.progresslogin=!1});s.isLoggedIn()&&t.go("app.dashboards.general")}},o.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth"],angular.module("app.login").controller("LoginController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.extractedReports,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.extractedReports=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="extractedReports",b.listOrder="",b.listOrderAsc=null,b.selectedExtractedReports=[],b.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:b.extractedReports.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getExtractedReports=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.analyticExtractedReport.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ExtractedReports",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditExtractedReport=function(e,t){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:t,extractedReports:b.extractedReports.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteExtractedReport=S,b.exportSelectedExtractedReports=function(){var e=angular.copy(b.selectedExtractedReports);return b.selectedExtractedReports=[],e},b.deleteSelectedExtractedReports=function(e){var t=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+b.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedExtractedReports.forEach(function(e){S(e)}),b.selectedExtractedReports=[]})},b.deselectExtractedReports=function(){b.selectedExtractedReports=[]},b.selectAllExtractedReports=function(){b.selectedExtractedReports=b.extractedReports.rows};var A=!0,E=1;function y(e){b.extractedReports=e||{count:0,rows:[]}}function S(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(b.extractedReports.rows,{id:e.id}),b.extractedReports.count-=1,b.extractedReports.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.analytics").controller("ExtractedReportsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.metrics,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.metrics=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="metrics",b.listOrder="",b.listOrderAsc=null,b.selectedMetrics=[],b.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},b.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Integration Report",value:"'report_integration'"},{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:"Queue Report",value:"'report_queue'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editdialog=function(e,t){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{metric:e,metrics:b.metrics.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getMetrics=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.analyticMetric.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Metrics",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMetric=function(e,t){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:t,metrics:b.metrics.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMetric=S,b.exportSelectedMetrics=function(){var e=angular.copy(b.selectedMetrics);return b.selectedMetrics=[],e},b.deleteSelectedMetrics=function(e){var t=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+b.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMetrics.forEach(function(e){S(e)}),b.selectedMetrics=[]})},b.deselectMetrics=function(){b.selectedMetrics=[]},b.selectAllMetrics=function(){b.selectedMetrics=b.metrics.rows};var A=!0,E=1;function y(e){b.metrics=e||{count:0,rows:[]}}function S(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(b.metrics.rows,{id:e.id}),b.metrics.count-=1,b.metrics.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){t.hide()}r.errors=[],r.report=angular.copy(n),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,t){r.currentNode=t.node}},r.copyReport=function(){var n;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){n=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var t={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return t["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(t).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:n.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,t,n,a,i,s,o,r,l,d){var c=this;function m(){t.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:"outer_join",value:"Outer 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),n.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 t=0;t<e.data.errors.length;t++)n.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else n.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 t=_.find(c.reports,{id:e.id});t&&_.merge(t,e),n.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 t=0;t<e.data.errors.length;t++)n.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else n.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=t.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);t.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),n.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(t,n,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){t[n]=_.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,t){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1};for(var n=0;n<r.report.condition.group.rules.length;n++)if(r.report.condition.group.rules[n].field){var a=r.report.condition.group.rules[n].field.split(".");1===a.length&&(r.report.condition.group.rules[n].field=r.report.table+"."+r.report.condition.group.rules[n].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,t,n){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(t,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(t){var a={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"};return{getMap:function(){var n=[];return _.forIn(a,function(e,t){n.push({name:t,api:e})}),n},getColumns:function(e){return t[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,t,n,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(){n.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 t=_.find(u.reportFields,{id:e.id});t&&_.merge(t,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 t=n.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);n.show(t).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,t,n,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,t){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==t?t:{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,t){var n=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(t).ok("OK").cancel("CANCEL");a.show(n).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,t){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:t,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var t=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(t).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var t=_.find(c.metrics,{id:e});return t?t.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var t=_.find(c.metrics,{id:e});return t?t.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()})})}t.$watch("vm_rf.query.filter",function(e,t){m?n(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,t,n,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")},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),n.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){t.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){t.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,n.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],n.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"},t.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",n.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"},t.error(o.error)})},o.mapArray=function(e,t){if(r(e))return _.map(e,t).join(",");return""},o.isArray=r,o.valueReplacer=function(e,t){moment(t,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(t=moment(t,"").format("YYYY-MM-DD HH:mm:ss"));return t}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,t){moment(t,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(t=moment(t,"").format("YYYY-MM-DD HH:mm:ss"));return t},o.closeDialog=function(){t.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"},n.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,n,a,i,s,o,t,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,t){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,t){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,t){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,t){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:t,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 t={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return t["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(t).$promise}).then(function(e){for(var t=0;t<e.rows.length;t+=1)e.rows[t].MetricId&&(e.rows[t].field=i[e.rows[t].MetricId].metric,e.rows[t].custom=!0),delete e.rows[t].MetricId;var n=o.document.createElement("a");n.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})),n.download=a.name+".json",n.target="_self",n.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,t){var n=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,t){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:t,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,t,n){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var n=atob(e.target.result.split(",")[1]);n=angular.fromJson(n),d.analyticCustomReport.save({name:n.name,description:n.description,table:n.table,conditions:n.conditions,joins:n.joins,parent:p.currentNode.id}).$promise.then(function(t){p.reports.rows.unshift(t),m.success({title:"Report saved!",msg:t.name?t.name+" has been saved!":""});var e=_.map(n.fields,function(e){return _.extend({},e,{CustomReportId:t.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 t=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(t).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 t=e&&e.rows?e.rows:[];if(0<t.length){var n=[];return a.forEach(function(e){_.find(t,["resourceId",e.id])&&n.push(e)}),h({count:n.length,rows:n})}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 t=0;t<e.data.errors.length;t++)m.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=t.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=t.node.id,f()}function E(e,t){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=t.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=t.node.id,f()}function y(e,t){var n=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:n}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=n),m.success({title:"Node Updated",msg:t.node.text?t.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(n){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:t.instant("ANALYTICS.CREATE"),action:function(){n=p.treeCustomInstance.jstree(!0).create_node(n),p.treeCustomInstance.jstree(!0).edit(n)}},rename:{_disabled:"#"===n.parent,label:t.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(n)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===n.parent,label:t.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(n.text?n.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,t=p.treeCustomInstance.jstree(!0).get_parent(n);t=p.treeCustomInstance.jstree(!0).get_node(t),p.treeCustomInstance.jstree(!0).delete_node(n),e=[n.id].concat(n.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(t)})}}}),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,t){g?n(function(){g=!1}):(t||(v=p.query.page),e!==t&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,t){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,n,a,t,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(){n.hide()}l.errors=[],l.report=angular.copy(t),l.export={},l.runReport=function(t){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?n.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:t,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var t={fields:"field,alias",nolimit:!0};return t["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",t)}]}}):(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,t,n,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=n[s].run(o,l).$promise},r.valueReplacer=function(e,t){moment(t,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(t=moment(t,"").format("YYYY-MM-DD HH:mm:ss"));return t}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.odbcs,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.odbcs=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="odbcs",b.listOrder="",b.listOrderAsc=null,b.selectedODBC=[],b.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{odbc:e,odbcs:b.odbcs.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.testtestOdbc=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getODBC=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.squareOdbc.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ODBC",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditOdbc=function(e,t){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:t,odbcs:b.odbcs.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteOdbc=S,b.exportSelectedODBC=function(){var e=angular.copy(b.selectedODBC);return b.selectedODBC=[],e},b.deleteSelectedODBC=function(e){var t=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+b.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedODBC.forEach(function(e){S(e)}),b.selectedODBC=[]})},b.deselectODBC=function(){b.selectedODBC=[]},b.selectAllODBC=function(){b.selectedODBC=b.odbcs.rows};var A=!0,E=1;function y(e){b.odbcs=e||{count:0,rows:[]}}function S(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(b.odbcs.rows,{id:e.id}),b.odbcs.count-=1,b.odbcs.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(t,n,a,i,s,e,o,r,l,d){var c=this;function m(e){t.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?n.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 t=0;t<e.data.errors.length;t++)s.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(c.projects,{id:e.id});t&&_.merge(t,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 t=0;t<e.data.errors.length;t++)s.error({title:e.data.errors[t].type,msg:e.data.errors[t].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=t.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);t.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 t=[],n=e.rows,a=0;a<n.length;a++)t.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(t)}).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(t,a,i,e,n,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,C,I,x,w,O,R){var N=this,D={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"],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"]},P={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},L={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function k(e,t,n,a){return _.map(e,function(e){return{value:e[t],option:e[n],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function M(){var e=_.find(N.attributes,{name:"sip_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(l,{id:Number(e.value)}))return a.user.get({id:_.find(N.attributes,{name:"sip_id"}).value,fields:"id,fullname,role"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,l.push(t),N.values.sip_id=k(l,"id","fullname","role")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.sip_id=k(l,"id","fullname","role")}}function U(){var e=_.find(N.attributes,{name:"list_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(A,{id:Number(e.value)}))return a.cmList.get({id:_.find(N.attributes,{name:"list_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,A.push(t),N.values.list_id=k(A,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.list_id=k(A,"id","name")}}function F(n){var e=_.find(N.attributes,{name:n});if(!_.some(N.attributes,{id:e.value})){if(!_.some(d,{id:Number(e.value)}))return a.trunk.get({id:_.find(N.attributes,{name:n}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,d.push(t),N.values[n]=k(d,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values[n]=k(d,"id","name")}}function $(){var e=_.find(N.attributes,{name:"queue_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(c,{id:Number(e.value)}))return a.voiceQueue.get({id:_.find(N.attributes,{name:"queue_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,c.push(t),N.values.queue_id=k(c,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.queue_id=k(c,"id","name")}}function q(){var e=_.find(N.attributes,{name:"file_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(m,{id:Number(e.value)}))return a.sound.get({id:_.find(N.attributes,{name:"file_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,m.push(t),N.values.file_id=k(m,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.file_id=k(m,"id","name")}}function G(){var e=_.find(N.attributes,{name:"variable_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(u,{id:Number(e.value)}))return a.variable.get({id:_.find(N.attributes,{name:"variable_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,u.push(t),N.values.variable_id=k(u,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.variable_id=k(u,"id","name")}}function H(){var e=_.find(N.attributes,{name:"odbc_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(p,{id:Number(e.value)}))return a.squareOdbc.get({id:_.find(N.attributes,{name:"odbc_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,p.push(t),N.values.odbc_id=k(p,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.odbc_id=k(p,"id","name")}}function V(){var e=_.find(N.attributes,{name:"project_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(g,{id:Number(e.value)}))return a.squareProject.get({id:_.find(N.attributes,{name:"project_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,g.push(t),N.values.project_id=k(g,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.project_id=k(g,"id","name")}}function Q(){var e=_.find(N.attributes,{name:"context"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(v,{id:Number(e.value)}))return a.voiceContext.get({id:_.find(N.attributes,{name:"context"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,v.push(t),N.values.context=k(v,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.context=k(v,"id","name")}}function B(){var e=_.find(N.attributes,{name:"interval_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(h,{id:Number(e.value)}))return a.interval.get({id:_.find(N.attributes,{name:"interval_id"}).value,fields:"id,name,IntervalId"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,h.push(t),N.values.interval_id=k(h,"id","name","IntervalId")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.interval_id=k(h,"id","name","IntervalId")}}function W(){var e=_.find(N.attributes,{name:"account_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(f,{id:Number(e.value)}))return a.mailAccount.get({id:_.find(N.attributes,{name:"account_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,f.push(t),N.values.account_id=k(f,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.account_id=k(f,"id","name")}}function Y(){var e=_.find(N.attributes,{name:"sms_account_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(C,{id:Number(e.value)}))return a.smsAccount.get({id:_.find(N.attributes,{name:"sms_account_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,C.push(t),N.values.sms_account_id=k(C,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.sms_account_id=k(C,"id","name")}}function j(){var e=_.find(N.attributes,{name:"template_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(b,{id:Number(e.value)}))return a.template.get({id:_.find(N.attributes,{name:"template_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,b.push(t),N.values.template_id=k(b,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.template_id=k(b,"id","name")}}function z(){var e=_.find(N.attributes,{name:"pause_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(I,{id:Number(e.value)}))return a.pause.get({id:_.find(N.attributes,{name:"pause_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,I.push(t),N.values.pause_id=k(I,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.pause_id=k(I,"id","name")}}N.cellName=E.tagName,N.attributes=_.map(E.attributes,function(e){return{name:e.name,value:e.value,defaultValue:P[N.cellName]&&_.includes(P[N.cellName],e.name),required:D[N.cellName]&&_.includes(D[N.cellName],e.name),help:L[N.cellName]&&_.includes(L[N.cellName],e.name)}}),N.values={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:n,ispeech_tts_language:o,google_tts_language:r,google_asr_language:s,aws_polly_region:T,aws_polly_voice:S,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:x,aws_lex_region:w},N.crudPermissions=R,N.onInit=function(){O.hasRole("admin")?(e={sip_id:k(l,"id","fullname","role"),trunk_name:k(d,"name","name"),trunk_id:k(d,"id","name"),queue_id:k(c,"id","name"),file_id:k(m,"id","name"),variable_id:k(u,"id","name"),odbc_id:k(p,"id","name"),project_id:k(g,"id","name"),context:k(v,"id","name"),interval_id:(n=h,a="id",i="name",s="IntervalId",o=_.filter(n,function(e){return null===e[s]}),r=[],_.forEach(o,function(t){r.push({value:t[a],option:t[i]});var e=_.filter(n,function(e){return e[s]===t.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:k(f,"id","name"),template_id:k(b,"id","name"),list_id:k(A,"id","name"),sms_account_id:k(C,"id","name"),pause_id:k(I,"id","name")},t=_.merge(N.values,e),N.values=t):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"],t=0;t<N.attributes.length;t++)if(_.includes(e,N.attributes[t].name))switch(N.attributes[t].name){case"sip_id":M();break;case"trunk_name":case"trunk_id":F(N.attributes[t].name);break;case"queue_id":$();break;case"file_id":q();break;case"variable_id":G();break;case"odbc_id":H();break;case"project_id":V();break;case"context":Q();break;case"interval_id":B();break;case"account_id":W();break;case"template_id":j();break;case"list_id":U();break;case"sms_account_id":Y();break;case"pause_id":z()}}();var e,t,n,a,i,s,o,r},N.closeDialog=function(e){e&&y(N.attributes),t.hide()},N.getMap=k}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","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,t,n,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("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)"}]})}(),function(){"use strict";function e(t,e,n,a){var i=this;i.project={preproduction:n},i.closeDialog=function(e){e?(a(i.project.preproduction),t.hide(i.project.preproduction)):t.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(t,n){var a=this;function i(e){e?(n(e),t.hide(e)):t.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 t=new FileReader;t.onload=function(e){i(e.target.result)},t.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(t,n,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){t.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){n.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),t.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(t,e,n,a,i){var s=this;s.projects=n,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(t.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):t.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,n,a,t,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){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=t,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={readOnly:!1,items:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,t){a.squareProject[t?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){n.success({title:"Project properly "+(t?"removed":"added"),msg:"Project has been "+(t?"removed":"added")+"!"}),t||l()}).catch(function(e){n.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(t,n,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(){t.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){n.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),t.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,n,a,i,s,o,r,t,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var C=this;C.currentUser=T.getCurrentUser(),C.project=t||{},C.userProfileSection=S&&1==S.count?S.rows[0]:null,C.crudPermissions=T.parseCrudPermissions(C.userProfileSection?C.userProfileSection.crudPermissions:null),C.onInit=function(){new EditorUi(C,new Editor,document.getElementById("geEditor")).openString(C.project.preproduction,C.project.name,C.project)},C.saveOrPublishProject=function(e,t){var n={preproduction:e};t&&(n.production=e);r.squareProject.update({id:C.project.id},n).$promise.then(function(e){o.success({title:"Project "+(t?"published":"saved")+"!",msg:C.project.name?C.project.name+" has been "+(t?"published":"saved")+"!":""}),C.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()})})},C.openDialog=function(e,t){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(n.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:t,crudPermissions:C.crudPermissions}})},C.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:C.crudPermissions}})},C.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},C.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{project:C.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},C.newVariable=function(t){return i(function(a,t){return r.userProfileSection.get({userProfileId:C.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var t=e.rows?e.rows[0]:null,n=T.parseCrudPermissions(t?t.crudPermissions:null);a(n)}).catch(function(e){t(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(n.body),clickOutsideToClose:!0,locals:{variable:t,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()})})},C.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:C.project}}).then(function(e){e&&_.merge(C.project,e)})},C.editXML=function(e,t){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:t}}).then(function(e){e&&(C.project.preproduction=e)})},C.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(C.project.preproduction=e)})},C.gotoProjects=function(){e.go("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,n,t,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,t){n.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,t){var n=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(t).ok("OK").cancel("CANCEL");l.show(n).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="Projects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,t){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:t,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 t=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(t).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 t=0;t<e.data.errors.length;t++)m.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){g?c(function(){g=!1}):(t||(v=p.query.page),e!==t&&(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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.squareRecordings,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.squareRecordings=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="squareRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedSquareRecordings=[],b.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio",sort:"-updatedAt",limit:10,page:1},b.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=s.uniqueid+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSquareRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.squareRecording.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SquareRecordings",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSquareRecording=function(e,t){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:t,squareRecordings:b.squareRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSquareRecording=S,b.exportSelectedSquareRecordings=function(){var e=angular.copy(b.selectedSquareRecordings);return b.selectedSquareRecordings=[],e},b.deleteSelectedSquareRecordings=function(e){var t=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+b.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSquareRecordings.forEach(function(e){S(e)}),b.selectedSquareRecordings=[]})},b.deselectSquareRecordings=function(){b.selectedSquareRecordings=[]},b.selectAllSquareRecordings=function(){b.selectedSquareRecordings=b.squareRecordings.rows};var A=!0,E=1;function y(e){b.squareRecordings=e||{count:0,rows:[]}}function S(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.squareRecordings.rows,{id:e.id}),b.squareRecordings.count-=1,b.squareRecordings.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.chatQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="chatQueues",b.listOrder="",b.listOrderAsc=null,b.selectedChatQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:b.chatQueues?b.chatQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:b.chatQueues?b.chatQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.chat.realtime.queues",{})}},b.success=y,b.getChatQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.chatQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ChatQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditChatQueue=function(e,t){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:t,chatQueues:b.chatQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteChatQueue=S,b.exportSelectedChatQueues=function(){var e=angular.copy(b.selectedChatQueues);return b.selectedChatQueues=[],e},b.deleteSelectedChatQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+b.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedChatQueues.forEach(function(e){S(e)}),b.selectedChatQueues=[]})},b.deselectChatQueues=function(){b.selectedChatQueues=[]},b.selectAllChatQueues=function(){b.selectedChatQueues=b.chatQueues.rows};var A=!0,E=1;function y(e){b.chatQueues=e||{count:0,rows:[]}}function S(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.chatQueues.rows,{id:e.id}),b.chatQueues.count-=1,b.chatQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.chat").controller("ChatQueuesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.chatQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("CHAT.ALL_TEAMS"),labelSelected:n.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.chatWebsites=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="chatWebsites",b.listOrder="",b.listOrderAsc=null,b.selectedChatWebsites=[],b.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,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:b.crudPermissions})},b.interactionsgoto=function(e,t){n.go("app.chat.chatWebsites.edit",{id:e.id,tab:9})},b.offlinemessagesgoto=function(e,t){n.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},b.agentadddialog=function(e,t){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:b.chatWebsites?b.chatWebsites.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getChatWebsites=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.chatWebsite.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ChatWebsites",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditChatWebsite=function(e,t){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:t,chatWebsites:b.chatWebsites.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteChatWebsite=S,b.exportSelectedChatWebsites=function(){var e=angular.copy(b.selectedChatWebsites);return b.selectedChatWebsites=[],e},b.deleteSelectedChatWebsites=function(e){var t=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+b.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedChatWebsites.forEach(function(e){S(e)}),b.selectedChatWebsites=[]})},b.deselectChatWebsites=function(){b.selectedChatWebsites=[]},b.selectAllChatWebsites=function(){b.selectedChatWebsites=b.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.chatWebsite&&(a=_.find(b.lists,{id:Number(b.chatWebsite.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.chatWebsite&&(a=_.find(b.lists,{id:Number(b.chatWebsite.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.chatWebsite&&(a=_.find(b.interval,{id:Number(b.chatWebsite.IntervalId)}));for(var i=0;i<b.interval.length;i++){_.some(t,{resourceId:b.interval[i].id})?(b.interval[i].canSelect=!0,n.push(b.interval[i])):a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]))}b.interval=n})}else{var n=[],a=null;b.chatWebsite&&(a=_.find(b.interval,{id:Number(b.chatWebsite.IntervalId)}));for(var i=0;i<b.interval.length;i++)a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]));b.interval=n}}).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 A=!0,E=1;function y(e){b.chatWebsites=e||{count:0,rows:[]}}function S(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(b.chatWebsites.rows,{id:e.id}),b.chatWebsites.count-=1,b.chatWebsites.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.chat").controller("ChatWebsitesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),t.params.id&&(g.chatWebsite.ChatWebsiteId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.chatWebsites,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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||[],g.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],g.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++){_.some(t,{resourceId:g.interval[i].id})?(g.interval[i].canSelect=!0,n.push(g.interval[i])):a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,n.push(g.interval[i]))}g.interval=n})}else{var n=[],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,n.push(g.interval[i]));g.interval=n}}).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 t(e,t){if(r.chatWebsiteApps.rows.length){var n=r.chatWebsiteApps.rows[t]?r.chatWebsiteApps.rows[t]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:n,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[t]=e:r.chatWebsiteApps.rows.splice(t,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,t=[],n=0;n<r.chatWebsiteApps.rows.length;n++,0){var a=r.chatWebsiteApps.rows[n],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,t=_.concat(t,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(t,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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:"1"},{option:"Always",value:"0"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",maxlength:255,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:"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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.chatWebsite=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,n).$promise},r.editChatWebsiteApp=t,r.editInterval=function(e,t){if(r.chatWebsiteApps.rows.length){var n=r.chatWebsiteApps.rows[t]?r.chatWebsiteApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==t?t:{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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("chat")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteChatCannedAnswers={count:0,rows:[]},c.selectedChatWebsiteChatCannedAnswers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.query.ChatWebsiteId=c.chatWebsite.id,c.getChatWebsiteChatCannedAnswers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getChatWebsiteChatCannedAnswers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getAnswers(c.query,p).$promise},c.createOrEditChatWebsiteChatCannedAnswer=function(e,t){s.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,chatCannedAnswer:t,chatCannedAnswers:c.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(c.selectedChatWebsiteChatCannedAnswers);return c.selectedChatWebsiteChatCannedAnswers=[],e},c.deleteChatWebsiteChatCannedAnswer=g,c.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var t=s.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+c.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),c.selectedChatWebsiteChatCannedAnswers=[]})};var m=!0,u=1;function p(e){c.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function g(e){l.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteChatCannedAnswers.rows,{id:e.id}),c.chatWebsiteChatCannedAnswers.count-=1,c.chatWebsiteChatCannedAnswers.rows.length||c.getChatWebsiteChatCannedAnswers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteChatCannedAnswers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.chatCannedAnswer.ChatWebsiteId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.chatCannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteChatDispositions={count:0,rows:[]},c.selectedChatWebsiteChatDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.query.ChatWebsiteId=c.chatWebsite.id,c.getChatWebsiteChatDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the chatDisposition?").htmlContent("<b>"+(e.name||"chatDisposition")+"</b> will be deleted.").ariaLabel("delete chatDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getChatWebsiteChatDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getDispositions(c.query,p).$promise},c.createOrEditChatWebsiteChatDisposition=function(e,t){s.show({controller:"CreateOrEditChatDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,chatDisposition:t,chatDispositions:c.chatWebsiteChatDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedChatWebsiteChatDispositions=function(){var e=angular.copy(c.selectedChatWebsiteChatDispositions);return c.selectedChatWebsiteChatDispositions=[],e},c.deleteChatWebsiteChatDisposition=g,c.deleteSelectedChatWebsiteChatDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected chatDispositions?").htmlContent("<b>"+c.selectedChatWebsiteChatDispositions.length+" selected</b> will be deleted.").ariaLabel("delete chatDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteChatDispositions.forEach(function(e){g(e)}),c.selectedChatWebsiteChatDispositions=[]})};var m=!0,u=1;function p(e){c.chatWebsiteChatDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteChatDispositions.rows,{id:e.id}),c.chatWebsiteChatDispositions.count-=1,c.chatWebsiteChatDispositions.rows.length||c.getChatWebsiteChatDispositions(),r.success({title:"ChatDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteChatDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_CHATDISPOSITION",g.chatDisposition=angular.copy(l),g.chatDispositions=r,g.newChatDisposition=!1,g.chatDisposition||(g.chatDisposition={},g.title="CHAT.NEW_CHATDISPOSITION",g.newChatDisposition=!0),t.params.id&&(g.chatDisposition.ChatWebsiteId=t.params.id),g.addNewChatDisposition=function(){g.errors=[],d.disposition.save(g.chatDisposition).$promise.then(function(e){g.chatDispositions.unshift(e.toJSON()),o.success({title:"ChatDisposition properly created",msg:g.chatDisposition.name?g.chatDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatDisposition=function(){g.errors=[],d.disposition.update({id:g.chatDisposition.id},g.chatDisposition).$promise.then(function(e){var t=_.find(g.chatDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"ChatDisposition properly saved!",msg:g.chatDisposition.name?g.chatDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The chatDisposition will be deleted.").ariaLabel("Delete ChatDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.chatDisposition.id}).$promise.then(function(){_.remove(g.chatDispositions,{id:g.chatDisposition.id}),o.success({title:"ChatDisposition properly deleted!",msg:(g.chatDisposition.name||"chatDisposition")+" has been deleted!"}),v(g.chatDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatDispositions","chatDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatDispositionDialogController",e)}(),function(){"use strict";function e(n,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"}],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 t=0;t<e.rows.length;t++)i.customFields.push({key:"cf_"+e.rows[t].id,value:e.rows[t].alias});return a.cmContact.describe().$promise}).then(function(e){for(var t=_.keys(e),n=0;n<t.length;n++)_.includes(i.uselessFields,t[n])||_.startsWith(t[n],"cf_")||i.fields.unshift({key:t[n],value:t[n]});return a.variable.get().$promise}).then(function(e){i.variables=e.rows}).catch(function(e){console.error(e)})},i.up=function(e,t){if(0!==t){var n=i.chatWebsite.offlineForm.items[t-1];i.chatWebsite.offlineForm.items[t]=n,i.chatWebsite.offlineForm.items[t-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===t?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===t-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,t){if(t!==i.chatWebsite.offlineForm.items.length-1){var n=i.chatWebsite.offlineForm.items[t+1];i.chatWebsite.offlineForm.items[t]=n,i.chatWebsite.offlineForm.items[t+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===t?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===t+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 t=n.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");n.show(t).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})}}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(n,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 t=0;t<e.rows.length;t++)i.customFields.push({key:"cf_"+e.rows[t].id,value:e.rows[t].alias});return a.cmContact.describe().$promise}).then(function(e){for(var t=_.keys(e),n=0;n<t.length;n++)_.includes(i.uselessFields,t[n])||_.startsWith(t[n],"cf_")||i.fields.unshift({key:t[n],value:t[n]});return a.variable.get().$promise}).then(function(e){i.variables=e.rows}).catch(function(e){console.error(e)})},i.up=function(e,t){if(0!==t){var n=i.chatWebsite.onlineForm.items[t-1];i.chatWebsite.onlineForm.items[t]=n,i.chatWebsite.onlineForm.items[t-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===t?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===t-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,t){if(t!==i.chatWebsite.onlineForm.items.length-1){var n=i.chatWebsite.onlineForm.items[t+1];i.chatWebsite.onlineForm.items[t]=n,i.chatWebsite.onlineForm.items[t+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===t?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===t+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 t=n.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");n.show(t).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)})}}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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==t?t:{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,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteInteractions={count:0,rows:[]},c.selectedChatWebsiteInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,UserId,ContactId,ChatWebsiteId,id,closedAt,Contact.firstName,Owner.name,disposition,ratingValue,ratingType,note,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.getChatWebsiteInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.chatInteractionDownload=function(s,e,t){return l.chatInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getChatWebsiteInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getInteractions(c.query,p).$promise},c.createOrEditChatWebsiteInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,interaction:t,interactions:c.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spychatInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"chat",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(c.selectedChatWebsiteInteractions);return c.selectedChatWebsiteInteractions=[],e},c.deleteChatWebsiteInteraction=g,c.deleteSelectedChatWebsiteInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),c.selectedChatWebsiteInteractions=[]})};var m=!0,u=1;function p(e){c.chatWebsiteInteractions=e||{count:0,rows:[]}}function g(e){l.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteInteractions.rows,{id:e.id}),c.chatWebsiteInteractions.count-=1,c.chatWebsiteInteractions.rows.length||c.getChatWebsiteInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==t?t:{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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteOfflineMessages={count:0,rows:[]},c.selectedChatWebsiteOfflineMessages=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,ContactId",sort:"-createdAt",limit:10,page:1},c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.getChatWebsiteOfflineMessages()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getChatWebsiteOfflineMessages=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getOfflineMessages(c.query,p).$promise},c.createOrEditChatWebsiteOfflineMessage=function(e,t){s.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,offlineMessage:t,offlineMessages:c.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.showOfflineMessageChatWebsiteOfflineMessage=function(e,n){s.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,t){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:n.id})}]}})},c.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(c.selectedChatWebsiteOfflineMessages);return c.selectedChatWebsiteOfflineMessages=[],e},c.deleteChatWebsiteOfflineMessage=g,c.deleteSelectedChatWebsiteOfflineMessages=function(e){var t=s.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+c.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),c.selectedChatWebsiteOfflineMessages=[]})},l.cmContact.get({fields:"id,firstName,lastName",nolimit:"true"}).$promise.then(function(e){c.contacts=e.rows||[],c.contacts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontacts",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function g(e){l.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteOfflineMessages.rows,{id:e.id}),c.chatWebsiteOfflineMessages.count-=1,c.chatWebsiteOfflineMessages.rows.length||c.getChatWebsiteOfflineMessages(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteOfflineMessages())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(t,e){this.title="CHAT.OFFLINE_MESSAGE",this.message=e,this.closeDialog=function(e){t.hide(e)}}e.$inject=["$mdDialog","message"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteProactiveActions={count:0,rows:[]},c.selectedChatWebsiteProactiveActions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},c.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.query.ChatWebsiteId=c.chatWebsite.id,c.getChatWebsiteProactiveActions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getChatWebsiteProactiveActions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getProactiveActions(c.query,p).$promise},c.createOrEditChatWebsiteChatProactiveAction=function(e,t){s.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,chatProactiveAction:t,proactive:c.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(c.selectedChatWebsiteProactiveActions);return c.selectedChatWebsiteProactiveActions=[],e},c.deleteChatWebsiteChatProactiveAction=g,c.deleteSelectedChatWebsiteProactiveActions=function(e){var t=s.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+c.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),c.selectedChatWebsiteProactiveActions=[]})};var m=!0,u=1;function p(e){c.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function g(e){l.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteProactiveActions.rows,{id:e.id}),c.chatWebsiteProactiveActions.count-=1,c.chatWebsiteProactiveActions.rows.length||c.getChatWebsiteProactiveActions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteProactiveActions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.chatProactiveAction.ChatWebsiteId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.proactive,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=this;t.chatWebsite={},t.init=function(e){t.chatWebsite=e,t.start="\n\x3c!-- START Motion Chat Script --\x3e",t.script='\n    <script src="'+t.chatWebsite.remote+"/api/chat/websites/"+t.chatWebsite.id+"/snippet?token="+t.chatWebsite.token+'"><\/script>',t.end="\n\x3c!-- START Motion Chat Script --\x3e"},t.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){t.script='\n    <script src="'+t.chatWebsite.remote+"/api/chat/websites/"+t.chatWebsite.id+"/snippet?token="+t.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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==t?t:{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,t,n,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=t.protocol()+"://"+t.host(),u.chatWebsite=c||e.params.chatWebsite||{},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.agentadddialog=function(e,t){n.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:u.chatWebsites?u.chatWebsites.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatWebsites=function(){e.go("app.chat.chatWebsites")},u.saveChatWebsite=function(){r.chatWebsite.update({id:u.chatWebsite.id},u.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:u.chatWebsite.name?u.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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.chatWebsite&&(a=_.find(u.lists,{id:Number(u.chatWebsite.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.chatWebsite&&(a=_.find(u.lists,{id:Number(u.chatWebsite.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).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.template.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.templates=e.rows||[],u.templates.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.templates=e.rows||[],u.templates.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(u.templates,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});u.templates=t})}else u.templates=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",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||[],u.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],u.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.chatWebsite&&(a=_.find(u.interval,{id:Number(u.chatWebsite.IntervalId)}));for(var i=0;i<u.interval.length;i++){_.some(t,{resourceId:u.interval[i].id})?(u.interval[i].canSelect=!0,n.push(u.interval[i])):a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,n.push(u.interval[i]))}u.interval=n})}else{var n=[],a=null;u.chatWebsite&&(a=_.find(u.interval,{id:Number(u.chatWebsite.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,n.push(u.interval[i]));u.interval=n}}).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","chatWebsite","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.chatQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].ChatQueueId].paused++,g.queues[e[t].rows[n].ChatQueueId].loggedInDb++,g.queues[e[t].rows[n].ChatQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].ChatQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"chat",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.chatQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="ChatQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditChatQueue=function(e,t){a.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:t,chatQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:t,chatQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.chatQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.ChatQueueId]&&g.queues[e.ChatQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.ChatQueueId]&&g.queues[e.ChatQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.ChatQueueId]&&(g.queues[e.ChatQueueId].loggedInDb+=1,g.queues[e.ChatQueueId].agents[e.UserId]=e.ChatQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.ChatQueueId]&&0<g.queues[e.ChatQueueId].loggedInDb&&(g.queues[e.ChatQueueId].loggedInDb-=1,delete g.queues[e.ChatQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("chat_queue:save",g.onSave),d.on("userChatQueue:save",g.onSaveMember),d.on("userChatQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("chat_queue:save"),d.removeAllListeners("userChatQueue:remove"),d.removeAllListeners("userChatQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,n.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.chat.realtime.agents");break;case 1:n.go("app.chat.realtime.queues");break;default:n.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.companies=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="companies",b.listOrder="",b.listOrderAsc=null,b.selectedCompanies=[],b.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},b.editstate=function(e,t){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:b.crudPermissions})},b.gotocontactsgoto=function(n,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?a.go("app.contactmanager.contacts",{CompanyId:n.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:n.id})}},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getCompanies=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.cmCompany.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Companies",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditCompany=function(e,t){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:t,companies:b.companies.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteCompany=S,b.exportSelectedCompanies=function(){var e=angular.copy(b.selectedCompanies);return b.selectedCompanies=[],e},b.deleteSelectedCompanies=function(e){var t=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+b.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedCompanies.forEach(function(e){S(e)}),b.selectedCompanies=[]})},b.deselectCompanies=function(){b.selectedCompanies=[]},b.selectAllCompanies=function(){b.selectedCompanies=b.companies.rows};var A=!0,E=1;function y(e){b.companies=e||{count:0,rows:[]}}function S(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(b.companies.rows,{id:e.id}),b.companies.count-=1,b.companies.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.contactmanager").controller("CompaniesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.companies,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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(n,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?a.go("app.contactmanager.contacts",{CompanyId:n.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:n.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("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(t,i,n,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,t){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){I(e)})},A.success=C,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,C).$promise:(A.query.id=A.userProfile.id,A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,C).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){for(var t=[],n=0;n<e.length;n++)t.push(d.cmCompany.get({id:e[n].id,fields:"id,name"}).$promise);o.all(t).then(function(e){e.forEach(function(e){var t=e.toJSON();t.canSelect=!1,A.companies.rows.push(t);var n={};n[t.id]=t.name,A.companiesMap=_.assignIn(A.companiesMap,n)})}).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,t){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:t.id})}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,t){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:t.id})}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,t){t&&t.dateOfBirth&&(t.dateOfBirth=new Date(t.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:t,contacts:A.contacts.rows,setting:null,crudPermissions:A.crudPermissions},resolve:{lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}],companies:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Companies",fields:"id,name"})}]}})},A.deleteContact=I,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var t=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(t).then(function(){A.selectedContacts.forEach(function(e){I(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var t=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(t).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 t=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(t).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 t=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(t).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,t,n){var a=JSON.parse(t);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 t=["csv"];if(!_.includes(t,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.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),t.$watch("vm.options.isOpen",function(e){e?n(function(){t.tooltipVisible=A.options.isOpen},600):t.tooltipVisible=A.options.isOpen});var S=!0,T=1;function C(e){A.contacts=e||{count:0,rows:[]}}function I(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 t=0;t<e.data.errors.length;t++)h.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})}t.$watch("vm.query.filter",function(e,t){S?n(function(){S=!1}):(t||(T=A.query.page),e!==t&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),t.$watch("vm.selectedList",function(e,t){e!==t&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),t.$watch("vm.selectedCompany",function(e,t){e!==t&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),t.$watch("vm.selectedTags",function(e,t){(e.length||t.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(n,a,e,t,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=t||{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 t=0;t<e.data.errors.length;t++)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(c.contacts,{id:e.id});t&&_.merge(t,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 t=0;t<e.data.errors.length;t++)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=n.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);n.show(t).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){e&&(c.customFields=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,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],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),t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,t,n,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 t=_.find(d.hoppers,{id:e.id});t&&_.merge(t,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,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){var E=this;E.currentUser=b.getCurrentUser(),E.license=f,E.journey=[],E.contact=r||{},E.hoppers=l||{rows:[],count:0},E.finals=d||{rows:[],count:0},E.histories=c||{rows:[],count:0},E.companies=u||{rows:[],count:0},E.lists=p||{rows:[],count:0},E.customFields=g||{rows:[],count:0},E.tags=v||{rows:[],count:0},E.jscriptySessions=h||{rows:[],count:0},E.timelineOptions={scrollEl:"#interaction-content"},E.userProfileSection=A&&1==A.count?A.rows[0]:null,E.crudPermissions=b.parseCrudPermissions(E.userProfileSection?E.userProfileSection.crudPermissions:null),E.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"),"")}),E.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},E.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},E.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},E.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},E.selectedTab=t.params.tab||0,E.onInit=function(){b.hasRole("admin")||(function(){if(!_.some(E.companies.rows,{id:E.contact.CompanyId}))o.cmCompany.get({id:E.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,E.companies.rows.push(t)}).catch(function(e){s.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(E.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var t=0;t<e.length;t++)_.some(E.tags.rows,{id:e.id})||(e[t].canSelect=!1,E.tags.rows.push(e[t]))}());return o.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){E.users=e||{count:0,rows:[]},E.usersMap=_.mapValues(_.keyBy(E.users.rows,"id"),"fullname"),E.Tags=_.map(E.contact.Tags,"id")}).then(function(e){var t=["mail","chat","sms","openchannel","fax"];if(e&&e.id){for(var n=0;n<t.length;n++)o[t[n]+"Interaction"].get({ContactId:e.id,includeAll:!0}).$promise.then(C);o.voiceCallReport.get({fields:"id,uniqueid,type,source,destination,callerid,starttime,endtime,duration,disposition,amaflags,note,UserId,ContactId",ContactId:e.id,includeAll:!0}).$promise.then(C).catch(function(e){console.error(e)})}}(r))},E.gotoContacts=function(){t.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},E.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,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:E.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:m.rows,contact:r}})},E.saveContact=function(){o.cmContact.update({id:E.contact.id},E.contact).$promise.then(function(){s.success({title:"Contact updated!",msg:E.contact.name?E.contact.name+" has been updated!":""})}).then(function(){return o.cmContact.setTags({id:E.contact.id,ids:E.Tags}).$promise}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},E.editCompany=function(e,t){var n=_.find(E.companies.rows,{id:t});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===n.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:o.userProfileSection.get({userProfileId:E.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var t=e.rows?e.rows[0]:null;return b.parseCrudPermissions(t?t.crudPermissions:null)}).catch(function(e){s.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:t})}]}})},E.onSelectList=function(e){if(E.contact.ListId){var t=i.confirm().title("You are selecting the list number: "+E.contact.ListId).textContent("Warning! You won't select a different list for the contact "+E.contact.firstName||E.contact.lastName||E.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(t).then(E.onSelectListSuccess).catch(function(){E.contact.ListId=null})}},E.onSelectListSuccess=function(){return o.cmList.getCustomFields({id:E.contact.ListId}).$promise.then(function(e){E.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},E.getDateFromString=function(e){return null===e?void 0:new Date(e)},E.getHoppers=function(){E.queryHopper.offset=(E.queryHopper.page-1)*E.queryHopper.limit,E.queryHopper.id=E.contact.id,E.promise=o.cmContact.getHoppers(E.queryHopper,T("hoppers")).$promise},E.getFinals=function(){E.queryFinal.offset=(E.queryFinal.page-1)*E.queryFinal.limit,E.queryFinal.id=E.contact.id,E.promise=o.cmContact.getHopperFinals(E.queryFinal,T("finals")).$promise},E.getHistories=function(){E.queryHistory.offset=(E.queryHistory.page-1)*E.queryHistory.limit,E.queryHistory.id=E.contact.id,E.promise=o.cmContact.getHopperHistories(E.queryHistory,T("histories")).$promise},E.getJscriptySessions=function(){E.queryJscriptySession.offset=(E.queryJscriptySession.page-1)*E.queryJscriptySession.limit,E.queryJscriptySession.id=E.contact.id,E.promise=o.cmContact.getJscriptySessions(E.queryJscriptySession,T("jscriptySessions")).$promise},E.deleteconfirm=function(t,e){var n=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(t.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){var e;e=t,o.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(E.hoppers.rows,{id:e.id}),E.hoppers.count--,E.hoppers.rows.length||E.getHoppers(),s.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},E.editHopper=function(e,t){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:t,hoppers:E.hoppers.rows,license:null,setting:null,crudPermissions:E.crudPermissions}})},E.createOrEditIvrCampaignHopper=function(e,t){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:t,hoppers:E.hoppers.rows,license:null,setting:null,crudPermissions:E.crudPermissions}})},E.getColorByItem=function(e){var t="";e.FaxAccountId?t="fax":e.OpenchannelAccountId?t="openchannel":e.SmsAccountId?t="sms":e.MailAccountId?t="mail":e.ChatWebsiteId?t="chat":e.amaflags&&(t="voice");return 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";default:return"blue-A700"}}(t)};var y=!0,S=1;function T(t){return function(e){E[t]=e||{count:0,rows:[]}}}function C(e){e&&e.count&&e.rows.length&&(E.journey=_.concat(E.journey,e.rows))}e.$watch("vm.queryHopper.filter",function(e,t){y?n(function(){y=!1}):(t||(S=E.queryHopper.page),e!==t&&(E.queryHopper.page=1),e||(E.queryHopper.page=S),E.getHoppers())}),e.$watch("vm.queryFinal.filter",function(e,t){y?n(function(){y=!1}):(t||(S=E.queryFinal.page),e!==t&&(E.queryFinal.page=1),e||(E.queryFinal.page=S),E.getFinals())}),e.$watch("vm.queryHistory.filter",function(e,t){y?n(function(){y=!1}):(t||(S=E.queryHistory.page),e!==t&&(E.queryHistory.page=1),e||(E.queryHistory.page=S),E.getHistories())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,t,n,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),t.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=[],t=0;t<g.result.errors.length;t+=1){var n=g.result.errors[t].row;n.contact_import_error=g.result.errors[t].message,e.push(n)}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(n){i(function(){if(g.result.rows=n.rows,n.errors)for(var e=0;e<n.errors.length;e++)g.result.errors.push(n.errors[e]);if(n.finish){g.result.finish=!0,g.result.affectedRows=n.affectedRows,g.result.failedRows=g.result.errors.length;var t=g.result.rows-g.result.affectedRows-g.result.errors.length;t&&0<t&&(g.duplicates.length?g.result.duplicatedRows=t:g.result.failedRows+=t),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,t,o,n,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(t),a.lists=n||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:t.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,t,n){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+n.id+" will be overwritten by the fields of the contact #"+t.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:n.id,from:t.id}).$promise}).then(function(e){i.hide({new:e,to:n,from:t}),_.remove(o,{id:n.id}),_.remove(o,{id:t.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,t,n,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,t){if(e!==t)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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.globalCustomFields,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=n.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);n.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){e.splice(t,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var t=e.length,n=0;n<t;n++)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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.globalCustomFields=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="globalCustomFields",b.listOrder="",b.listOrderAsc=null,b.selectedGlobalCustomFields=[],b.query={fields:"createdAt,updatedAt,id,alias,type,values,required",sort:"-updatedAt",ListId:"null",limit:10,page:1},b.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"),"")}),b.editdialog=function(e,t){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:b.globalCustomFields.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getGlobalCustomFields=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.cmCustomField.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="GlobalCustomFields",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditGlobalCustomField=function(e,t){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:t,globalCustomFields:b.globalCustomFields.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteGlobalCustomField=S,b.exportSelectedGlobalCustomFields=function(){var e=angular.copy(b.selectedGlobalCustomFields);return b.selectedGlobalCustomFields=[],e},b.deleteSelectedGlobalCustomFields=function(e){var t=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+b.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedGlobalCustomFields.forEach(function(e){S(e)}),b.selectedGlobalCustomFields=[]})},b.deselectGlobalCustomFields=function(){b.selectedGlobalCustomFields=[]},b.selectAllGlobalCustomFields=function(){b.selectedGlobalCustomFields=b.globalCustomFields.rows};var A=!0,E=1;function y(e){b.globalCustomFields=e||{count:0,rows:[]}}function S(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(b.globalCustomFields.rows,{id:e.id}),b.globalCustomFields.count-=1,b.globalCustomFields.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.lists,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserList?"penalty "+e.UserList.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.list=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.list={},c.listCustomFields={count:0,rows:[]},c.selectedListCustomFields=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,alias,type,values,required",limit:10,page:1},c.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"),"")}),c.init=function(e,t){c.list=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.list.id,c.query.ListId=c.list.id,c.getListCustomFields()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getListCustomFields=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.cmList.getCustomFields(c.query,p).$promise},c.createOrEditListCustomField=function(e,t){s.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:c.list,customField:t,customFields:c.listCustomFields.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedListCustomFields=function(){var e=angular.copy(c.selectedListCustomFields);return c.selectedListCustomFields=[],e},c.deleteListCustomField=g,c.deleteSelectedListCustomFields=function(e){var t=s.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+c.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedListCustomFields.forEach(function(e){g(e)}),c.selectedListCustomFields=[]})};var m=!0,u=1;function p(e){c.listCustomFields=e||{count:0,rows:[]}}function g(e){l.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(c.listCustomFields.rows,{id:e.id}),c.listCustomFields.count-=1,c.listCustomFields.rows.length||c.getListCustomFields(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getListCustomFields())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,t,n,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,t){if(e!==t)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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.customFields,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=n.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);n.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){e.splice(t,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var t=e.length,n=0;n<t;n++)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,n,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,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(n,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?a.go("app.contactmanager.contacts",{ListId:n.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:n.id})}},u.agentadddialog=function(e,t){n.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.list={},c.listVoiceDispositions={count:0,rows:[]},c.selectedListVoiceDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.list=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.list.id,c.query.ListId=c.list.id,c.getListVoiceDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the voiceDisposition?").htmlContent("<b>"+(e.name||"voiceDisposition")+"</b> will be deleted.").ariaLabel("delete voiceDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getListVoiceDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.cmList.getDispositions(c.query,p).$promise},c.createOrEditListVoiceDisposition=function(e,t){s.show({controller:"CreateOrEditVoiceDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/voiceDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:c.list,voiceDisposition:t,voiceDispositions:c.listVoiceDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedListVoiceDispositions=function(){var e=angular.copy(c.selectedListVoiceDispositions);return c.selectedListVoiceDispositions=[],e},c.deleteListVoiceDisposition=g,c.deleteSelectedListVoiceDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected voiceDispositions?").htmlContent("<b>"+c.selectedListVoiceDispositions.length+" selected</b> will be deleted.").ariaLabel("delete voiceDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedListVoiceDispositions.forEach(function(e){g(e)}),c.selectedListVoiceDispositions=[]})};var m=!0,u=1;function p(e){c.listVoiceDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.listVoiceDispositions.rows,{id:e.id}),c.listVoiceDispositions.count-=1,c.listVoiceDispositions.rows.length||c.getListVoiceDispositions(),r.success({title:"VoiceDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getListVoiceDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListVoiceDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_VOICEDISPOSITION",g.voiceDisposition=angular.copy(l),g.voiceDispositions=r,g.newVoiceDisposition=!1,g.voiceDisposition||(g.voiceDisposition={},g.title="CONTACTMANAGER.NEW_VOICEDISPOSITION",g.newVoiceDisposition=!0),t.params.id&&(g.voiceDisposition.ListId=t.params.id),g.addNewVoiceDisposition=function(){g.errors=[],d.disposition.save(g.voiceDisposition).$promise.then(function(e){g.voiceDispositions.unshift(e.toJSON()),o.success({title:"VoiceDisposition properly created",msg:g.voiceDisposition.name?g.voiceDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceDisposition=function(){g.errors=[],d.disposition.update({id:g.voiceDisposition.id},g.voiceDisposition).$promise.then(function(e){var t=_.find(g.voiceDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"VoiceDisposition properly saved!",msg:g.voiceDisposition.name?g.voiceDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The voiceDisposition will be deleted.").ariaLabel("Delete VoiceDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.voiceDisposition.id}).$promise.then(function(){_.remove(g.voiceDispositions,{id:g.voiceDisposition.id}),o.success({title:"VoiceDisposition properly deleted!",msg:(g.voiceDisposition.name||"voiceDisposition")+" has been deleted!"}),v(g.voiceDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceDispositions","voiceDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditVoiceDispositionDialogController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.lists=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="lists",b.listOrder="",b.listOrderAsc=null,b.selectedLists=[],b.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,t){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:b.crudPermissions})},b.gotocontactsgoto=function(n,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?a.go("app.contactmanager.contacts",{ListId:n.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:n.id})}},b.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var t=[e.buffer],n=new Blob(t,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(n)),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()})})},b.agentadddialog=function(e,t){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{list:e,lists:b.lists?b.lists.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getLists=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.cmList.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Lists",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditList=function(e,t){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:t,lists:b.lists.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteList=S,b.exportSelectedLists=function(){var e=angular.copy(b.selectedLists);return b.selectedLists=[],e},b.deleteSelectedLists=function(e){var t=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+b.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedLists.forEach(function(e){S(e)}),b.selectedLists=[]})},b.deselectLists=function(){b.selectedLists=[]},b.selectAllLists=function(){b.selectedLists=b.lists.rows};var A=!0,E=1;function y(e){b.lists=e||{count:0,rows:[]}}function S(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(b.lists.rows,{id:e.id}),b.lists.count-=1,b.lists.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,t,n,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=t(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 t=_.find(d.voiceQueues.rows,{id:e.id});t&&_.merge(t,_.pick(e,_.keys(t)))}),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 t=0;t<e.rows.length;t+=1)e.rows[t].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[t].type+"/ms-widget-engine."+e.rows[t].type+".html",e.rows[t].voiceQueues=d.voiceQueues,e.rows[t].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[t])}).catch(function(e){d.customDashboard=void 0}),n.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&t.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,n,a,o,i,t,l,s,r,d,c,m,u,p,g,v,h){var f=this;f.license=p,f.setting=g;function b(e){var t={};for(var n in f.tabs)f.tabs.hasOwnProperty(n)&&(t[n]=f.tabs[n],f.tabs[n].interaction&&(t[n].interaction=_.pick(f.tabs[n].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","closed","draft"])));a.localStorage.setItem("motion2.user:"+f.user.id,JSON.stringify({tabs:t,currentTab:f.currentTab})),A(e)}function A(e){if(_.isNil(e)||e&&"interaction"===e.type){var t={id:f.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],openchannel:[],chat:[]}};for(var n in f.tabs)f.tabs.hasOwnProperty(n)&&t.capacity.hasOwnProperty(f.tabs[n].channel)&&f.tabs[n].interaction&&!f.tabs[n].interaction.closed&&(t.capacity[f.tabs[n].channel]+=1,t.interaction[f.tabs[n].channel].push(f.tabs[n].interaction.id));if(!_.isEqual(f.agentCapacity,t.capacity))return f.agentCapacity=t.capacity,l.rpc.setAgentCapacity(t)}}function E(t){if(f.tabs[t.id]&&(function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:f.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(f.tabs[t.id]),delete f.tabs[t.id],f.currentTab=0,b(t),"interaction"===t.type))return l[t.channel+"Interaction"].get({id:t.interaction.id}).$promise.then(function(e){return l.user["remove"+_.upperFirst(t.channel)+"Interactions"]({id:f.user.id,ids:[e.id]}).$promise}).catch(function(e){console.error(e)})}function y(e){e.id=_.random(1e10),e.openedAt=new Date,e.saved=!1,e.badges=0,f.tabs[e.id]=e,f.currentTab=e.id,b(e)}function S(t,n){var e={type:"interaction",title:t?t.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";default:return"icon-hangouts"}}(t),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";default:return"grey"}}(t),channel:t,interaction:n},a=_.find(f.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===n.id&&e.channel===t});a?f.currentTab=a.id:y(e)}function T(e){e&&e.uniqueid&&f.notifications[e.uniqueid]&&(r.clear(f.notifications[e.uniqueid]),delete f.notifications[e.uniqueid])}function C(e,t){return 0<=t&&(e.calls[t].disposedAt=new Date,s.removeAllListeners("voice_queue_channel:remove"),s.removeAllListeners("voice_outbound_channel:remove"),!0)}function I(){return function(e){if(404===e.status)r.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}f.detectBrowser=h.detectBrowser(),f.user=t.getCurrentUser(),f.currentTab=0,f.notifications={},f.tabs={},f.agentCapacity={},f.globalUserLists=d||{count:0,rows:[]},f.globalLists=c||{count:0,rows:[]},f.globalCompanies=m||{count:0,rows:[]},f.globalTags=u||{count:0,rows:[]},f.onContactManager=function(t){var e={ListId:t.ListId,limit:1,offset:0,sort:"-updatedAt"},n=!1,a=t.calleridname&&"<unknown>"!==t.calleridname?t.calleridname:t.calleridnum||t.uniqueid,i=t.calleridnum;_.isNil(t["xmd-contactid"])?_.isNil(t.routeId)?e.phone=t.calleridnum:(e.phone=t.destcalleridnum,a=t.destcalleridname&&"<unknown>"!==t.destcalleridname?t.destcalleridname:t.destcalleridnum||t.uniqueid,i=t.destcalleridnum):(e.id=t["xmd-contactid"],n=!0,_.isNil(t["xmd-listid"])||parseInt(t["xmd-listid"],10)===t.ListId||t["xmd-contactid2"]&&(e.id=t["xmd-contactid2"]));return l.cmContact.get(e).$promise.then(function(e){n?e&&f.addContactTab(e,t):e.count&&e.rows[0]?f.addContactTab(e.rows[0],t):f.addContactTab({firstName:a,ListId:t.ListId,phone:i},t)}).catch(I())},f.onJscripty=function(n){return l.jscriptyProject.get({id:n.ProjectId}).$promise.then(function(t){if(t){if(!_.isUndefined(n["xmd-contactid"]))return l.cmContact.get({id:n["xmd-contactid"]}).$promise.then(function(e){try{t.formData=Mustache.render(t.formData,_.merge(n,{user:f.user,contact:e}))}catch(e){console.error(e)}y({type:"jscripty",title:t.name,icon:"icon-script",color:"grey",project:t,call:n,contact:e})}).catch(I());try{t.formData=Mustache.render(t.formData,_.merge(n,{user:f.user}))}catch(e){console.error(e)}y({type:"jscripty",title:t.name,icon:"icon-script",color:"grey",project:t,call:n})}}).catch(I())},f.onBot=function(t){var n=t.calleridname&&"<unknown>"!==t.calleridname?t.calleridname:t.calleridnum,a=t.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:t.uniqueid}).$promise.then(function(e){e.count&&y({type:"bot",title:n+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:t.uniqueid}})})},f.onBrowserUrl=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":a.open(e.uri);break;case"1":a.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;default:a.open(e.uri)}else a.open(e.uri)},f.onBrowserPopup=function(e){e&&e.html&&y({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})},f.onNotificationSave=function(e){if(e&&e.uniqueid){n=e,v.isSupported()?v.requestPermission().then(function(){var e,t;t={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=n).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},v.show(e.title,t)},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 t=f.alreadyExistsTab(e);if(t){if(l[e.channel+"Message"])return f.currentTab!==t.id&&(t.badges+=1),l[e.channel+"Message"].accept({id:e.id,UserId:f.user.id}).$promise.catch(I())}else r.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){f.notifications[e.uniqueid]=this.id},onAccept:function(){if(T(e),l[e.channel+"Message"])return l[e.channel+"Message"].accept({id:e.id,UserId:f.user.id,manual:!0}).$promise.then(function(e){S(e.channel,e.interaction),r.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(I())},onReject:function(){if(T(e),l[e.channel+"Message"])return l[e.channel+"Message"].reject({id:e.id,UserId:f.user.id}).$promise.then(function(e){r.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(I())}})}var n},f.onNotificationRemove=T,f.onVoiceChannelRemove=function(t){var e=f.currentTab?f.tabs[f.currentTab]:null;e||(e=_.find(f.tabs,{calls:[{uniqueid:t.uniqueid}]}));var n=_.findLastIndex(e.calls,function(e){return e.uniqueid===t.uniqueid});if(!C(e,n)){var a=_.find(f.tabs,{calls:[{uniqueid:t.uniqueid}]});if(a){var i=_.findLastIndex(a.calls,function(e){return e.uniqueid===t.uniqueid});C(a,i)}}f.contact&&f.contact.id&&$timeout((s=t.uniqueid,o=f.contact.id,r=e,function(){var e=_.find(r.calls,function(e){return e.uniqueid===s});if(e)return l.voiceCallReport.update({id:s,ContactId:o}).$promise.catch(function(e){console.error(e)})}),1e3);var s,o,r},f.onClickTab=function(e){f.currentTab=e,b(f.tabs[e])},f.isActiveTab=function(e){return e===f.currentTab},f.alreadyExistsTab=function(t){return _.find(f.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==t.interactionId&&e.channel==t.channel})},f.addContactTab=function(t,n){var a={type:"contact",title:t?function(e){var t="";e&&(e.firstName||e.lastName?(e.firstName&&(t+=e.firstName+" "),e.lastName&&(t+=e.lastName)):e.phone&&(t=e.phone));return t}(t):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:t,userLists:d,lists:c,companies:m,tags:u,calls:n?[n]:[],autoCreate:n?n.autoCreate:0};if(n){if(n["xmd-cdrtype"]&&"dialer"===n["xmd-cdrtype"])n.answeredAt=n.agentcalledAt?moment(n.agentcalledAt,"YYYY-MM-DD HH:mm:ss").toDate():new Date;else if(n.uniqueid){var e=n.uniqueid.split(".")[0];n.answeredAt=e?new Date(1e3*parseInt(e)):new Date}(n.agentcompleteAt||n.endtime)&&(n.disposedAt=new Date)}if(t){var i=_.find(f.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==t.id:"contact"===e.type&&e.contact&&e.contact.phone==t.phone});if(i){if(n)if(i.calls){var s=_.find(i.calls,function(e){return e.uniqueid===n.uniqueid});s||i.calls.push(n)}else i.calls=[n];f.currentTab=i.id}else{if(t.ListId)return l.disposition.get({ListId:t.ListId}).$promise.then(function(e){return a.dispositions=e,l.cmList.getCustomFields({id:t.ListId}).$promise}).then(function(e){a.customFields=e}).catch(I()).finally(function(){y(a)});y(a)}}else y(a)},f.addInteractionTab=S,f.addTab=y,f.removeTab=E,f.updateLocalStorage=b,f.closeTab=function(e){var t=n.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)return n.show(t).then(function(){"interaction"===e.type&&n.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!0,locals:{user:f.user,channel:e.channel,interaction:e.interaction}}),E(e)}).catch(function(){"interaction"===e.type&&E(e)});if("contact"===e.type&&0<e.calls.length)return t._options.textContent="There is a call that hasn't been disposed yet.",n.show(t).then(function(){E(e)});E(e)}},s.on("trigger:contactmanager",f.onContactManager),s.on("trigger:jscripty",f.onJscripty),s.on("trigger:bot",f.onBot),s.on("trigger:browser:url",f.onBrowserUrl),s.on("trigger:browser:popup",f.onBrowserPopup),s.on("notification:save",f.onNotificationSave),s.on("notification:remove",f.onNotificationRemove),function(){var e=a.localStorage.getItem("motion2.user:"+f.user.id);if(e)try{e=JSON.parse(e),f.tabs=e.tabs?e.tabs:{},f.currentTab=e.currentTab?e.currentTab:0,A(f.tabs[f.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in f.notifications)f.notifications.hasOwnProperty(e)&&T({uniqueid:e});s.removeAllListeners("trigger:contactmanager"),s.removeAllListeners("trigger:jscripty"),s.removeAllListeners("trigger:browser:url"),s.removeAllListeners("trigger:browser:popup"),s.removeAllListeners("notification:save"),s.removeAllListeners("notification:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils"],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 t in e)f.hasOwnProperty(t)&&null!=e[t]&&(f[t]=e[t])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,t,p){var g=t.Notification||t.mozNotification||t.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var n=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?n.resolve(e):n.reject(e)}):g.requestPermission(function(e,t){p.GRANTED===e?n.resolve(e):n.reject(e)});return n.promise},show:function(e,t){if(t=t||{},!v()||(n=e,a=t,i=angular.isString(n),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)}(t.showOnPageHidden)||h()!==p.GRANTED)return;var n,a,i,s;var o=new g(e,t),r=t.duration||f.duration,l=void 0===t.autoClose?f.autoClose:t.autoClose;o.onclick=function(){t.onClick&&t.onClick(),t.focusOnclick&&window.focus(),t.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 t(e,t){if(angular.isString(e)){for(var n=e.split("."),a=n[n.length-1],i=function(e){var t=l;if(1===e.length)return t;e.pop();for(var n=0;n<e.length;n++){for(var a=e[n],i=!0,s=0;s<t.length;s++)if(t[s]._id===a){t=t[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};t.push(o),t=o.children}}return t}(n),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,t),s.uisref=d(s)):(t.children=[],!angular.isUndefined(t.weight)&&angular.isNumber(t.weight)||(t.weight=1),t._id=a,t._path=e,t.uisref=d(t),i.push(t))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var t="";return angular.isDefined(e.state)&&(t=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(t=t+"("+angular.toJson(e.stateParams)+")")),t}this.saveItem=t,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var t=l,n=e.split("."),a=0;a<n.length;a++)for(var i=n[a],s=0;s<t.length;s++)if(t[s]._id===i){if(t[s]._path===e)return t.splice(s,1),!0;t=t[s].children;break}return!1},this.$get=function(){var e={saveItem:t,getNavigation:function(e){if(e){for(var t=0;t<l.length;t++)if(l[t]._id===e)return[l[t]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(n){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,t){{if(a.setting=t,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return n.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(o,r,n,l,d,c,t,e,a,i){var m=this;function s(e){e&&e.count&&e.rows.length&&(m.journey=_.concat(m.journey,e.rows))}m.user=t.getCurrentUser(),m.detectBrowser=i.detectBrowser(),m.journey=[],m.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},m.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,page:1},m.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},m.hoppers={rows:[],count:0},m.finals={rows:[],count:0},m.histories={rows:[],count:0},m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){return m.contact.id=e.id,m.newContact=!1,m.tab.title=e.firstName||e.phone,m.tab.contact=m.contact,d.user.addContacts({id:t.getCurrentUser().id,ids:[e.id]})}).then(function(){m.detailForm.$pristine=!0,m.customFieldsForm.$pristine=!0,c.success({title:"Contact properly created",msg:m.contact.firstName?m.contact.firstName+" has been created!":""})}).then(function(){return d.cmContact.setTags({id:m.contact.id,ids:m.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){return m.tab.title=e.firstName||e.phone,m.tab.contact=m.contact,l.$parent.vm.updateLocalStorage(),d.user.addContacts({id:t.getCurrentUser().id,ids:[e.id]})}).then(function(){return d.cmContact.setTags({id:m.contact.id,ids:m.tab.Tags}).$promise}).then(function(){m.detailForm.$pristine=!0,m.customFieldsForm.$pristine=!0,c.success({title:"Contact properly updated!",msg:m.contact.name?m.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getCustomFields=function(e){return d.cmList.getCustomFields({id:e}).$promise.then(function(e){m.tab.customFields=e}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.call=l.$parent.vm.call,m.disposeCall=function(e,t){if(m.newContact)return void c.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});o.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(r.body),targetEvent:t,clickOutsideToClose:!1,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null"})}]},locals:{dispositions:m.tab.dispositions,contact:m.contact,call:t}}).then(function(e){e&&("BLACKLIST"===e?c.success({title:a.instant("DASHBOARDS.INFO"),msg:a.instant("DASHBOARDS.CALL_DISPOSED")+" "+e}):"RECALLME"===e||"RESCHEDULE"===e||c.success({title:a.instant("DASHBOARDS.INFO"),msg:a.instant("DASHBOARDS.CALL_SAVED")})),_.remove(m.tab.calls,function(e){return e.uniqueid==t.uniqueid})})},m.duplicateContact=function(e){o.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:m.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:t.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},m.mergeContact=function(e){o.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:m.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:t.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var t in l.$parent.$parent.$parent.vm.tabs)if(l.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var n=l.$parent.$parent.$parent.vm.tabs[t];n&&n.contact&&(e.from&&e.from.id&&e.from.id===n.contact.id&&l.$parent.$parent.$parent.vm.removeTab(n),e.to&&e.to.id&&e.to.id===n.contact.id&&l.$parent.$parent.$parent.vm.removeTab(n))}e.new&&l.$parent.$parent.$parent.vm.addContactTab(e.new)}})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:m.contact,user:m.user})}catch(e){console.error(e)}try{l.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:m.contact})}catch(e){c.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},m.getHoppers=function(){m.contact&&m.contact.id&&(m.queryHopper.ContactId=m.contact.id,m.queryHopper.offset=(m.queryHopper.page-1)*m.queryHopper.limit,m.promise=d.cmHopper.get(m.queryHopper,g("hoppers")).$promise)},m.getFinals=function(){m.contact&&m.contact.id&&(m.queryFinal.ContactId=m.contact.id,m.queryFinal.offset=(m.queryFinal.page-1)*m.queryFinal.limit,m.promise=d.cmHopperFinal.get(m.queryFinal,g("finals")).$promise)},m.getHistories=function(){m.contact&&m.contact.id&&(m.queryHistory.ContactId=m.contact.id,m.queryHistory.offset=(m.queryHistory.page-1)*m.queryHistory.limit,m.promise=d.cmHopperHistory.get(m.queryHistory,g("histories")).$promise)},m.getJscriptyProjects=function(){d.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){m.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.jscripty.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscripty.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getMailAccounts=function(){d.user.getMailAccounts({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.mailAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.mail.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mail.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getFaxAccounts=function(){d.user.getFaxAccounts({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.faxAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.fax.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.fax.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getSmsAccounts=function(){d.user.getSmsAccounts({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.smsAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.sms.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sms.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getOpenchannelAccounts=function(){d.user.getOpenchannelAccounts({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.openchannelAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.sms.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannel.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getChatWebsites=function(){d.user.getChatWebsites({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.chatAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.chatAccounts.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatAccounts.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getLists=function(){d.user.getLists({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.lists=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.cm.lists"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cm.lists",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.composeInteraction=function(e,i,t,n){var s=i.toLowerCase();o.show({controller:"Compose"+i+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose"+i+"/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{account:t,message:{to:"mail"==s?n:n.split(",")},type:"new",interaction:{Contact:m.contact}},fullscreen:!0}).then(function(a){return d[s+"Account"].send({id:t.id},a).$promise.then(function(e){if("Mail"===i){var t=e;if(t&&t.Messages&&t.Messages.length){if(a.attachments&&a.attachments.length)for(var n=0;n<a.attachments.length;n+=1)d.attachment.update({id:a.attachments[n].id},{MailMessageId:_.head(t.Messages).id});c.success({title:"Message properly sent!",msg:"Message has been sent!"}),t.closed?(t.disposition=null,o.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!0,locals:{user:m.user,channel:"mail",interaction:t}})):l.$parent.vm.addInteractionTab("mail",t)}}else c.success({title:"Message properly sent!",msg:"Message has been sent!"}),l.$parent.vm.addInteractionTab(s,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else"fax"===s?c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):c.error({title:e.status?"API:"+e.status+" - "+e.statusText:i.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.init=function(e,t){m.tab=e,l.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){m.tab.saved=e[0]&&e[1]}),m.license=t,m.contact=m.tab.contact,m.newContact=!1,m.currentTab=0,m.contact&&m.contact.id?(d.user.addContacts({id:m.user.id,ids:[m.contact.id]}),m.contact.ListId&&(m.tab.userLists.rows=_.unionBy(m.tab.userLists.rows,_.filter(m.tab.lists.rows,{id:m.contact.ListId}),"id"),m.list=_.find(m.tab.userLists.rows,{id:m.contact.ListId})),m.getHoppers(),m.getFinals(),m.getHistories(),m.getMailAccounts(),m.getFaxAccounts(),m.getSmsAccounts(),m.getOpenchannelAccounts(),m.getChatWebsites(),m.getLists()):(m.newContact=!0,e.autoCreate&&(console.log("autoCreate"),m.addNewContact()));d.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){m.users=e||{count:0,rows:[]},m.usersMap=_.mapValues(_.keyBy(m.users.rows,"id"),"fullname")}).then(function(){if(m.contact&&m.contact.id)return d.cmContact.getTags({id:m.contact.id}).$promise}).then(function(e){e&&(m.tab.Tags=_.map(e.rows,"id"))}).then(function(e){var t=["mail","chat","sms","openchannel","fax"];if(e&&e.id){for(var n=0;n<t.length;n++)d[t[n]+"Interaction"].get({ContactId:e.id,includeAll:!0}).$promise.then(s);d.voiceCallReport.get({ContactId:e.id,includeAll:!0}).$promise.then(s).catch(function(e){console.error(e)})}}(m.contact))},m.hasPermission=function(e){return t.hasPermission(e)},m.openInteraction=function(e,t){try{if(t.MailAccountId)return l.$parent.$parent.$parent.vm.addInteractionTab("mail",t);if(t.ChatWebsiteId)return l.$parent.$parent.$parent.vm.addInteractionTab("chat",t);if(t.SmsAccountId)return l.$parent.$parent.$parent.vm.addInteractionTab("sms",t);if(t.OpenchannelAccountId)return l.$parent.$parent.$parent.vm.addInteractionTab("openchannel",t);if(t.FaxAccountId)return l.$parent.$parent.$parent.vm.addInteractionTab("fax",t)}catch(e){c.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},m.getColorByItem=function(e){var t="";e.FaxAccountId?t="fax":e.OpenchannelAccountId?t="openchannel":e.SmsAccountId?t="sms":e.MailAccountId?t="mail":e.ChatWebsiteId?t="chat":e.amaflags&&(t="voice");return 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";default:return"blue-A700"}}(t)},m.isMyAccount=function(e){{if(e.FaxAccountId)return _.includes(_.map(m.faxAccounts?m.faxAccounts.rows:[],"id"),e.FaxAccountId);if(e.OpenchannelAccountId)return _.includes(_.map(m.openchannelAccounts?m.openchannelAccounts.rows:[],"id"),e.OpenchannelAccountId);if(e.SmsAccountId)return _.includes(_.map(m.smsAccounts?m.smsAccounts.rows:[],"id"),e.SmsAccountId);if(e.MailAccountId)return _.includes(_.map(m.mailAccounts?m.mailAccounts.rows:[],"id"),e.MailAccountId);if(e.ChatWebsiteId)return _.includes(_.map(m.chatAccounts?m.chatAccounts.rows:[],"id"),e.ChatWebsiteId);if(e.amaflags)return!0}return!1},e.on("voice_queue_channel:remove",l.$parent.vm.onVoiceChannelRemove),e.on("voice_outbound_channel:remove",l.$parent.vm.onVoiceChannelRemove),m.getJscriptyProjects(),l.$watch("currentTab",function(e,t){1===m.currentTab&&(m.getHoppers(),m.getFinals(),m.getHistories())});var u=!0,p=1;function g(t){return function(e){m[t]=e||{count:0,rows:[]}}}l.$watch("queryHopper.filter",function(e,t){u?n(function(){u=!1}):(t||(p=m.queryHopper.page),e!==t&&(m.queryHopper.page=1),e||(m.queryHopper.page=p),m.getHoppers())}),l.$watch("queryFinal.filter",function(e,t){u?n(function(){u=!1}):(t||(p=m.queryFinal.page),e!==t&&(m.queryFinal.page=1),e||(m.queryFinal.page=p),m.getFinals())}),l.$watch("queryHistory.filter",function(e,t){u?n(function(){u=!1}):(t||(p=m.queryHistory.page),e!==t&&(m.queryHistory.page=1),e||(m.queryHistory.page=p),m.getHistories())}),l.$on("$destroy",function(){})}e.$inject=["$mdDialog","$document","$timeout","$scope","api","toasty","Auth","socket","$translate","msUtils"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(t,i,s,o,e,n,a,r,l,d){var c=this;function m(){var e=c.choice?c.choice.toLowerCase():void 0;return{id:c.call.uniqueid,disposition:c.choice,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}}c.choice=null,c.isReschedule=!1,c.recallme=!1,c.queueCampaigns={count:0,rows:[]},c.queueCampaign=void 0,c.dispositions=e,c.globalDispositions=n,c.contact=r,c.call=a,c.note=c.call.note||void 0,c.dialerCall=!1,c.hasBlackLists=!1,c.hopper={minDate:new Date,dateTime:new Date},c.call&&c.call.variables&&c.call.variables["xmd-voicequeueid"]?(c.dialerCall=!0,o.voiceQueue.getBlackLists({id:c.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(c.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){c.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),c.saveDisposition=function(e){c.choice=_.isNil(e)?c.choice:e,c.call.note=c.note,o.voiceCallReport.update({id:c.call.uniqueid,userDisposition:c.choice,note:c.note,UserId:l.getCurrentUser().id,ContactId:c.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:c.call.uniqueid}).$promise.then(function(e){if(e)for(var t=0;t<e.rows.length;t+=1)o.voiceRecording.update({id:e.rows[t].id,userDisposition:c.choice}).$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()})}),c.dialerCall&&(o.cmHopperFinal.update(m()).$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(m()).$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(c.choice))t.hide(c.choice?c.choice.toUpperCase():"");else switch(c.choice.toLowerCase()){case"blacklist":c.call&&c.call.variables&&c.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var t=[];if(e&&0<e.count){for(var n=0;n<e.rows.length;n+=1){var a=angular.copy(c.contact);delete a.id,a.ListId=e.rows[n].id,t.push(o.cmContact.save(a).$promise)}return i.all(t)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+c.choice}),c.choice=void 0}).then(function(e){e&&t.hide(c.choice?c.choice.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()}),t.hide(c.choice?c.choice.toUpperCase():"")})}(c.call.variables["xmd-voicequeueid"]);break;case"reschedule":c.isReschedule=!0,c.recallme=!1;break;case"recallme":c.isReschedule=!0,c.recallme=!0;break;default:t.hide(c.choice?c.choice.toUpperCase():"")}},c.closeDialog=function(){t.cancel()},c.saveReschedule=function(){return c.disable=!0,o.cmHopper.save({phone:c.contact.phone,UserId:c.recallme?l.getCurrentUser().id:null,ContactId:c.contact.id,ListId:c.contact.ListId,VoiceQueueId:c.dialerCall?Number(c.call["xmd-voicequeueid"]):c.queueCampaign?c.queueCampaign.id:null,scheduledat:moment(c.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){c.dialerCall&&o.cmHopperFinal.update({id:c.call.uniqueid,rescheduled:!0,rescheduledat:moment(c.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){t.hide(c.choice?c.choice.toUpperCase():"")}).finally(function(){c.disable=!1,t.hide(c.choice?c.choice.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,t,n,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,t){var n=t(function(){},999);e.$on("$destroy",function(){n&&(t.cancel(n),n=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this,u=!0;function p(){var e=i.localStorage.getItem("motion2.home.abandoned.bull.contacts:"+m.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(m.query=_.merge(e.query,_.omit(m.query,["sort","limit","page"])),m.query=_.omit(m.query,"filter")),o.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null"}).$promise.then(function(e){m.disposition=e?e.rows:[]}).catch(function(e){console.log(e)}),o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){m.queues=e||{count:0,rows:[]},m.queuesMap=_.mapValues(_.keyBy(m.queues.rows,"name"),"name"),m.defaultQueues=m.queues.rows?_.map(m.queues.rows,"name").join(","):void 0}).catch(function(e){console.error(e)}).finally(function(){m.getContacts()})}function g(e){m.contacts=e||{count:0,rows:[]},u=!1,m.refresh=!0}m.showTooltip=!1,m.refresh=!0,m.disable=[],m.disposition={count:0,rows:[]},m.currentUser=r.getCurrentUser(),m.localizationMap=c,m.pickerModel={dateStart:null,dateEnd:null},m.queues={},m.contacts={count:0,rows:[]},m.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},m.clearAll=function(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel={dateStart:null,dateEnd:null},m.getContacts()},m.getContacts=function(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&!u&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd);m.query.queue=m.query.queue||m.defaultQueues,m.query.offset=(m.query.page-1)*m.query.limit,i.localStorage.setItem("motion2.home.abandoned.bull.contacts:"+m.currentUser.id,JSON.stringify({query:_.omit(m.query,"queue")})),m.promise=o.voiceQueueReport.getVoiceQueuesReport(m.query,g).$promise},m.refreshContacts=function(){m.showTooltip=!1,m.getContacts()},m.onInit=p,m.reserved=function(e,t){e&&(m.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?m.currentUser.name:null,assigned:e.assigned,disposition:t||null}).$promise.catch(function(e){console.log(e)}).finally(function(){m.disable[e.id]=!1}))},m.onSavevoiceQueueReport=function(e){m.queuesMap&&"outbound"===e.type&&m.queuesMap[e.queue]&&(m.showTooltip=!0)},m.onUpdatevoiceQueueReport=function(e){if(e){var t=_.findIndex(m.contacts.rows,["id",e.id]);0<=t&&_.merge(m.contacts.rows[t],e)}},m.call=e.$parent.$parent.$parent.$parent.vm.call,m.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,m.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,m.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",m.onSavevoiceQueueReport),l.onWithoutApply("voiceQueueReport:update",m.onUpdatevoiceQueueReport),p();var v=!0,h=1;e.$watch("vm_bull.query.filter",function(e,t){v?n(function(){v=!1}):(t||(h=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=h),m.getContacts())}),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this,u=!0;function p(){var e=i.localStorage.getItem("motion2.home.abandoned.voice.contacts:"+m.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(m.query=_.merge(e.query,_.omit(m.query,["sort","limit","page"])),m.query=_.omit(m.query,"filter")),o.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null"}).$promise.then(function(e){m.disposition=e?e.rows:[]}).catch(function(e){console.log(e)}),o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){m.queues=e||{count:0,rows:[]},m.queuesMap=_.mapValues(_.keyBy(m.queues.rows,"name"),"name"),m.defaultQueues=m.queues.rows?_.map(m.queues.rows,"name").join(","):void 0}).catch(function(e){console.error(e)}).finally(function(){m.getContacts()})}function g(e){m.contacts=e||{count:0,rows:[]},u=!1,m.refresh=!0}m.showTooltip=!1,m.refresh=!0,m.disable=[],m.disposition={count:0,rows:[]},m.currentUser=r.getCurrentUser(),m.localizationMap=c,m.pickerModel={dateStart:null,dateEnd:null},m.queues={},m.contacts={count:0,rows:[]},m.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},m.clearAll=function(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel={dateStart:null,dateEnd:null},m.getContacts()},m.getContacts=function(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&!u&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd);m.query.queue=m.query.queue||m.defaultQueues,m.query.offset=(m.query.page-1)*m.query.limit,i.localStorage.setItem("motion2.home.abandoned.voice.contacts:"+m.currentUser.id,JSON.stringify({query:_.omit(m.query,"queue")})),m.promise=o.voiceQueueReport.getVoiceQueuesReport(m.query,g).$promise},m.refreshContacts=function(){m.showTooltip=!1,m.getContacts()},m.onInit=p,m.reserved=function(e,t){e&&(m.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?m.currentUser.name:null,assigned:e.assigned,disposition:t||null}).$promise.catch(function(e){console.log(e)}).finally(function(){m.disable[e.id]=!1}))},m.onSavevoiceQueueReport=function(e){m.queuesMap&&"inbound"===e.type&&m.queuesMap[e.queue]&&(m.showTooltip=!0)},m.onUpdatevoiceQueueReport=function(e){if(e){var t=_.findIndex(m.contacts.rows,["id",e.id]);0<=t&&_.merge(m.contacts.rows[t],e)}},m.call=e.$parent.$parent.$parent.$parent.vm.call,m.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,m.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,m.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",m.onSavevoiceQueueReport),l.onWithoutApply("voiceQueueReport:update",m.onUpdatevoiceQueueReport),p();var v=!0,h=1;e.$watch("vm_voice.query.filter",function(e,t){v?n(function(){v=!1}):(t||(h=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=h),m.getContacts())}),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o){var r=this;r.user=i.getCurrentUser(),r.license={},r.plugin={},r.setting={},r.sidebar="dashboard",r.navigation=o.getNavigation(),r.addContactTab=t.$parent.vm.addContactTab,r.addInteractionTab=t.$parent.vm.addInteractionTab,r.init=function(e,t){r.license=e,r.setting=t;var n=a.localStorage.getItem("motion2.home:"+r.user.id);if(n)try{n=JSON.parse(n),r.sidebar=n.currentSidebarTab?n.currentSidebarTab:"dashboard"}catch(e){console.error(e),r.sidebar="dashboard"}},r.changeSidebarTab=function(e){r.sidebar=e.view,"plugin"===r.sidebar&&(r.plugin=e.stateParams,r.pluginId=e.id,t.$broadcast("pluginUpdated",{plugin:r.plugin}));a.localStorage.setItem("motion2.home:"+r.user.id,JSON.stringify({currentSidebarTab:e.view}))},r.hasPermission=function(e){return i.hasPermission(e)}}e.$inject=["$scope","$timeout","$window","api","Auth","socket","msNavigationAgentService"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(n,a,e,t,i,s,o,r,l,d){var c=this;function m(e){c.chatInteractions=e||{count:0,rows:[]};for(var t=0;t<c.chatInteractions.rows.length;t+=1)p(c.chatInteractions.rows[t])}function u(){c.query.dateStart=void 0,c.query.dateEnd=void 0,c.pickerModel.dateStart&&(c.query.dateStart=c.pickerModel.dateStart,c.query.dateEnd=c.pickerModel.dateEnd),c.chatAccounts.rows.length?(_.includes(_.map(c.chatAccounts.rows,"id"),c.query.account)||(c.query.account=null),c.query.ChatWebsiteId=c.query.account||_.map(c.chatAccounts.rows,"id").join()):c.query.ChatWebsiteId=-1,c.query.offset=(c.query.page-1)*c.query.limit,i.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify({query:c.query})),c.promise=o.chatInteraction.get(c.query,m).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}c.user=r.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,account:null},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,t){n.$parent.vm.addInteractionTab("chat",t)},c.downloadChatInteraction=function(e,s,t){o.chatInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="chat-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.getContactLabel=function(e){if(e.Contact){var t="";t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||"");var n=e.Account?e.Account.mapKey:void 0;return t+=n&&e.Contact[n]?" <"+e.Contact[n]+">":""}return s.instant("DASHBOARDS.UNKNOWN")},c.getUserLabel=function(e){if(e.UserId)return e.UserId===r.getCurrentUser().id?s.instant("DASHBOARDS.ME"):c.usersByKey[e.UserId].fullname+" <"+c.usersByKey[e.UserId].internal+">";return s.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return s.instant("DASHBOARDS.UNKNOWN")},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.clearAll=function(){c.calendarModel={dateStart:null},c.pickerModel={dateStart:null},c.serviceModel={dateStart:null},c.getChatInteractions()},c.onInit=function(e,t){return c.license=e,c.setting=t,o.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},o.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){return o.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){c.usersByKey=_.keyBy(e.rows,"id")}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),c.query=_.omit(c.query,"filter"),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0)}catch(e){console.error(e)}l.on("chatInteraction:save",c.onChatInteractionSave),l.on("chatInteraction:update",c.onChatInteractionSave),l.on("chatInteractionTags:save",c.onChatInteractionTagsSave),l.on("chatMessage:save",c.onChatMessageSave),l.on("chatMessage:update",c.onChatMessageSave),l.on("user_has_chat_interactions:save",c.onChatInteractionOpen),l.on("user_has_chat_interactions:remove",c.onChatInteractionClose),c.getChatInteractions()})},c.onChatInteractionSave=function(e){if(e){var t=_.find(c.chatInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},c.onChatInteractionTagsSave=function(e){if(e){var t=_.find(c.chatInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},c.onChatMessageSave=function(e){if(e&&!e.secret){var t=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},c.onChatInteractionOpen=function(e){var t=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},c.onChatInteractionClose=function(e){var t=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},c.localizationMap={Today:s.instant("DASHBOARDS.TODAY"),Yesterday:s.instant("DASHBOARDS.YESTERDAY"),"This Week":s.instant("DASHBOARDS.THIS_WEEK"),"Last Week":s.instant("DASHBOARDS.LAST_WEEK"),"This Month":s.instant("DASHBOARDS.THIS_MONTH"),"Last Month":s.instant("DASHBOARDS.LAST_MONTH"),"This Year":s.instant("DASHBOARDS.THIS_YEAR"),"Last Year":s.instant("DASHBOARDS.LAST_YEAR"),January:s.instant("DASHBOARDS.JANUARY"),February:s.instant("DASHBOARDS.FEBRUARY"),March:s.instant("DASHBOARDS.MARCH"),April:s.instant("DASHBOARDS.APRIL"),May:s.instant("DASHBOARDS.MAY"),June:s.instant("DASHBOARDS.JUNE"),July:s.instant("DASHBOARDS.JULY"),August:s.instant("DASHBOARDS.AUGUST"),September:s.instant("DASHBOARDS.SEPTEMBER"),October:s.instant("DASHBOARDS.OCTOBER"),November:s.instant("DASHBOARDS.NOVEMBER"),December:s.instant("DASHBOARDS.DECEMBER"),Mon:s.instant("DASHBOARDS.MON"),Tue:s.instant("DASHBOARDS.TUE"),Wed:s.instant("DASHBOARDS.WED"),Thu:s.instant("DASHBOARDS.THU"),Fri:s.instant("DASHBOARDS.FRI"),Sat:s.instant("DASHBOARDS.SAT"),Sun:s.instant("DASHBOARDS.SUN")},c.pickerModel={dateStart:null};var g=!0,v=1;n.$watch("vm.query.filter",function(e,t){g?a(function(){g=!1}):(t||(v=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=v),c.getChatInteractions())}),n.$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")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;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.getContacts=function(){l.query.ListId=l.getListId(),l.query.offset=(l.query.page-1)*l.query.limit,r.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify({query:l.query})),l.promise=o.cmContact.get(l.query,m).$promise},l.refreshContacts=function(){l.getContacts()},l.mergeContact=function(e,t){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:t.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,t){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:t.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){t.$parent.vm.addContactTab(e)})},l.call=t.$parent.vm.call,l.onInit=u,l.getListId=function(){var e=_.toString(l.query.ListId);if(e){var t=e.split(","),n=l.defaultLists.split(",");_.isEqual(t,n)||(1<t.length?e=l.defaultLists:_.indexOf(n,t[0])<0&&(e=l.defaultLists))}else e=l.defaultLists;return e},u();var d=!0,c=1;function m(e){l.contacts=e||{count:0,rows:[]}}function u(){var e=r.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(l.query=_.merge(l.query,e.query),l.query=_.omit(l.query,"filter")),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"),l.defaultLists=l.lists.rows?_.map(l.lists.rows,"id").join(","):void 0,o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}).finally(function(){l.getContacts()})}t.$watch("vm.query.filter",function(e,t){d?a(function(){d=!1}):(t||(c=l.query.page),e!==t&&(l.query.page=1),e||(l.query.page=c),l.getContacts())})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,t){var n=t(function(){},999);e.$on("$destroy",function(){n&&(t.cancel(n),n=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,n,t,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,t){c.rpcVoiceQueues[t]&&(c.voiceQueues[t].waiting=c.rpcVoiceQueues[t].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,t){p?n(function(){p=!1}):(t||(g=c.query.page),e!==t&&(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,n,t,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,t){c.rpcChatQueues[t]&&(c.chatQueues[t].waiting=c.rpcChatQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("chatQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcFaxQueues[t]&&(c.faxQueues[t].waiting=c.rpcFaxQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("faxQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcMailQueues[t]&&(c.mailQueues[t].waiting=c.rpcMailQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("mailQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcOpenchannelQueues[t]&&(c.openchannelQueues[t].waiting=c.rpcOpenchannelQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcSmsQueues[t]&&(c.smsQueues[t].waiting=c.rpcSmsQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("smsQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcVoiceQueues[t]&&(c.voiceQueues[t].waiting=c.rpcVoiceQueues[t].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 t=e.rows,n=_.keyBy(t,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=n[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,t){p?n(function(){p=!1}):(t||(g=c.query.page),e!==t&&(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(n,a,i,s,o,r,l,t,d,c){var m=this;function e(e){m.faxInteractions=e||{count:0,rows:[]};for(var t=0;t<m.faxInteractions.rows.length;t+=1)p(m.faxInteractions.rows[t])}function u(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd),m.faxAccounts.rows.length?(_.includes(_.map(m.faxAccounts.rows,"id"),m.query.account)||(m.query.account=null),m.query.FaxAccountId=m.query.account||_.map(m.faxAccounts.rows,"id").join()):m.query.FaxAccountId=-1,m.query.offset=(m.query.page-1)*m.query.limit,o.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify({query:m.query})),m.promise=l.faxInteraction.get(m.query,e).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}m.user=t.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,account:null},m.success=e,m.getFaxInteractions=u,m.showFaxInteraction=function(e,t){n.$parent.vm.addInteractionTab("fax",t)},m.downloadFaxInteraction=function(e,s,t){l.faxInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="fax-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getContactLabel=function(e){if(e.Contact){var t="";return t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||""),t+=" <"+(e.Contact.fax||"unknown")+">"}return r.instant("DASHBOARDS.UNKNOWN")},m.getUserLabel=function(e){if(e.UserId)return e.UserId===t.getCurrentUser().id?r.instant("DASHBOARDS.ME"):m.usersByKey[e.UserId].fullname+" <"+m.usersByKey[e.UserId].internal+">";return r.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return r.instant("DASHBOARDS.UNKNOWN")},m.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},m.clearAll=function(){m.calendarModel={dateStart:null},m.pickerModel={dateStart:null},m.serviceModel={dateStart:null},m.getFaxInteractions()},m.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:t.id},e).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},m.onInit=function(e,t){return m.license=e,m.setting=t,l.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},l.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return l.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){m.usersByKey=_.keyBy(e.rows,"id")}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),m.query=_.omit(m.query,"filter"),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0)}catch(e){console.error(e)}d.on("faxInteraction:save",m.onFaxInteractionSave),d.on("faxInteraction:update",m.onFaxInteractionSave),d.on("faxInteractionTags:save",m.onFaxInteractionTagsSave),d.on("faxMessage:save",m.onFaxMessageSave),d.on("faxMessage:update",m.onFaxMessageSave),d.on("user_has_fax_interactions:save",m.onFaxInteractionOpen),d.on("user_has_fax_interactions:remove",m.onFaxInteractionClose),m.getFaxInteractions()})},m.onFaxInteractionSave=function(e){if(e){var t=_.find(m.faxInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},m.onFaxInteractionTagsSave=function(e){if(e){var t=_.find(m.faxInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},m.onFaxMessageSave=function(e){if(e&&!e.secret){var t=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},m.onFaxInteractionOpen=function(e){var t=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},m.onFaxInteractionClose=function(e){var t=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},m.localizationMap={Today:r.instant("DASHBOARDS.TODAY"),Yesterday:r.instant("DASHBOARDS.YESTERDAY"),"This Week":r.instant("DASHBOARDS.THIS_WEEK"),"Last Week":r.instant("DASHBOARDS.LAST_WEEK"),"This Month":r.instant("DASHBOARDS.THIS_MONTH"),"Last Month":r.instant("DASHBOARDS.LAST_MONTH"),"This Year":r.instant("DASHBOARDS.THIS_YEAR"),"Last Year":r.instant("DASHBOARDS.LAST_YEAR"),January:r.instant("DASHBOARDS.JANUARY"),February:r.instant("DASHBOARDS.FEBRUARY"),March:r.instant("DASHBOARDS.MARCH"),April:r.instant("DASHBOARDS.APRIL"),May:r.instant("DASHBOARDS.MAY"),June:r.instant("DASHBOARDS.JUNE"),July:r.instant("DASHBOARDS.JULY"),August:r.instant("DASHBOARDS.AUGUST"),September:r.instant("DASHBOARDS.SEPTEMBER"),October:r.instant("DASHBOARDS.OCTOBER"),November:r.instant("DASHBOARDS.NOVEMBER"),December:r.instant("DASHBOARDS.DECEMBER"),Mon:r.instant("DASHBOARDS.MON"),Tue:r.instant("DASHBOARDS.TUE"),Wed:r.instant("DASHBOARDS.WED"),Thu:r.instant("DASHBOARDS.THU"),Fri:r.instant("DASHBOARDS.FRI"),Sat:r.instant("DASHBOARDS.SAT"),Sun:r.instant("DASHBOARDS.SUN")},m.pickerModel={dateStart:null};var g=!0,v=1;n.$watch("vm.query.filter",function(e,t){g?a(function(){g=!1}):(t||(v=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=v),m.getFaxInteractions())}),n.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(a,n,i,s,o,r,l,t,d,c){var m=this;function e(e){m.mailInteractions=e||{count:0,rows:[]};for(var t=0;t<m.mailInteractions.rows.length;t+=1)p(m.mailInteractions.rows[t])}function u(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd),m.mailAccounts.rows.length?(_.includes(_.map(m.mailAccounts.rows,"id"),m.query.account)||(m.query.account=null),m.query.MailAccountId=m.query.account||_.map(m.mailAccounts.rows,"id").join()):m.query.MailAccountId=-1,m.query.offset=(m.query.page-1)*m.query.limit,o.localStorage.setItem("motion2.home.mail:"+m.user.id,JSON.stringify({query:m.query})),m.promise=l.mailInteraction.get(m.query,e).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}m.user=t.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.mailInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,account:null},m.success=e,m.getMailInteractions=u,m.showMailInteraction=function(e,t){a.$parent.vm.addInteractionTab("mail",t)},m.downloadMailInteraction=function(e,s,t){l.mailInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="mail-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getContactLabel=function(e){if(e.Contact){var t="";return t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||""),e.to&&e.Account&&e.to.indexOf(e.Account.email)<0?t=e.to:t+=" <"+(e.Contact.email||"unknown")+">",t}return r.instant("DASHBOARDS.UNKNOWN")},m.getUserLabel=function(e){if(e.UserId)return e.UserId===t.getCurrentUser().id?r.instant("DASHBOARDS.ME"):m.usersByKey[e.UserId].fullname+" <"+m.usersByKey[e.UserId].internal+">";return r.instant("DASHBOARDS.NOT_ASSIGNED")},m.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return r.instant("DASHBOARDS.UNKNOWN")},m.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},m.clearAll=function(){m.calendarModel={dateStart:null},m.pickerModel={dateStart:null},m.serviceModel={dateStart:null},m.getMailInteractions()},m.composeMailInteraction=function(e,t){i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(n){return l.mailAccount.send({id:t.id},n).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(n.attachments&&n.attachments.length)for(var t=0;t<n.attachments.length;t+=1)l.attachment.update({id:n.attachments[t].id},{MailMessageId:_.head(e.Messages).id});c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed?(e.disposition=null,i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{user:m.user,channel:"mail",interaction:e}})):a.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})})},m.onInit=function(e,t){return m.license=e,m.setting=t,l.user["get"+_.upperFirst("mailAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.mailAccounts=e||{count:0,rows:[]},l.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return l.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){m.usersByKey=_.keyBy(e.rows,"id")}).then(function(){return l.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){m.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mail:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),m.query=_.omit(m.query,"filter"),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0)}catch(e){console.error(e)}d.on("mailInteraction:save",m.onMailInteractionSave),d.on("mailInteraction:update",m.onMailInteractionSave),d.on("mailInteractionTags:save",m.onMailInteractionTagsSave),d.on("mailMessage:save",m.onMailMessageSave),d.on("mailMessage:update",m.onMailMessageSave),d.on("user_has_mail_interactions:save",m.onMailInteractionOpen),d.on("user_has_mail_interactions:remove",m.onMailInteractionClose),m.getMailInteractions()})},m.onMailInteractionSave=function(e){if(e){var t=_.find(m.mailInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},m.onMailInteractionTagsSave=function(e){if(e){var t=_.find(m.mailInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},m.onMailMessageSave=function(e){if(e&&!e.secret){var t=_.find(m.mailInteractions.rows,{id:e.MailInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},m.onMailInteractionOpen=function(e){var t=_.find(m.mailInteractions.rows,{id:e.MailInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},m.onMailInteractionClose=function(e){var t=_.find(m.mailInteractions.rows,{id:e.MailInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},m.localizationMap={Today:r.instant("DASHBOARDS.TODAY"),Yesterday:r.instant("DASHBOARDS.YESTERDAY"),"This Week":r.instant("DASHBOARDS.THIS_WEEK"),"Last Week":r.instant("DASHBOARDS.LAST_WEEK"),"This Month":r.instant("DASHBOARDS.THIS_MONTH"),"Last Month":r.instant("DASHBOARDS.LAST_MONTH"),"This Year":r.instant("DASHBOARDS.THIS_YEAR"),"Last Year":r.instant("DASHBOARDS.LAST_YEAR"),January:r.instant("DASHBOARDS.JANUARY"),February:r.instant("DASHBOARDS.FEBRUARY"),March:r.instant("DASHBOARDS.MARCH"),April:r.instant("DASHBOARDS.APRIL"),May:r.instant("DASHBOARDS.MAY"),June:r.instant("DASHBOARDS.JUNE"),July:r.instant("DASHBOARDS.JULY"),August:r.instant("DASHBOARDS.AUGUST"),September:r.instant("DASHBOARDS.SEPTEMBER"),October:r.instant("DASHBOARDS.OCTOBER"),November:r.instant("DASHBOARDS.NOVEMBER"),December:r.instant("DASHBOARDS.DECEMBER"),Mon:r.instant("DASHBOARDS.MON"),Tue:r.instant("DASHBOARDS.TUE"),Wed:r.instant("DASHBOARDS.WED"),Thu:r.instant("DASHBOARDS.THU"),Fri:r.instant("DASHBOARDS.FRI"),Sat:r.instant("DASHBOARDS.SAT"),Sun:r.instant("DASHBOARDS.SUN")},m.pickerModel={dateStart:null};var g=!0,v=1;a.$watch("vm.query.filter",function(e,t){g?n(function(){g=!1}):(t||(v=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=v),m.getMailInteractions())}),a.$on("$destroy",function(){d.removeAllListeners("mailMessage:save"),d.removeAllListeners("mailMessage:update"),d.removeAllListeners("mailInteraction:save"),d.removeAllListeners("mailInteractionTags:save"),d.removeAllListeners("mailInteraction:update"),d.removeAllListeners("user_has_mail_interactions:save"),d.removeAllListeners("user_has_mail_interactions:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(n,a,i,s,e,t,o){var r=this;r.currentUser=e.getCurrentUser(),r.lists={},r.contacts={count:0,rows:[]},r.tags={count:0,rows:[]},r.query={includeAll:!0,id:r.currentUser.id,sort:"-updatedAt",limit:10,page:1},r.getContacts=function(){r.query.ListId=r.getListId(),r.query.offset=(r.query.page-1)*r.query.limit,o.localStorage.setItem("motion2.home.mycontacts:"+r.currentUser.id,JSON.stringify({query:r.query})),r.promise=t.user.getContacts(r.query,c).$promise},r.refreshContacts=function(){r.getContacts()},r.mergeContact=function(e,t){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:t.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:r.currentUser.id,fields:"id,name"})}]},locals:{contacts:r.contacts.rows}})},r.duplicateContact=function(e,t){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:t.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:r.currentUser.id,fields:"id,name"})}]},locals:{contacts:r.contacts.rows}})},r.openContact=function(e,t){a.$parent.vm.addContactTab(t)},r.call=a.$parent.vm.call,r.onInit=function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+r.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(r.query=_.omit(e.query,"filter"))}catch(e){console.error(e)}t.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return r.lists=e||{count:0,rows:[]},r.listsMap=_.keyBy(r.lists.rows,"id"),r.defaultLists=r.lists.rows?_.map(r.lists.rows,"id").join(","):void 0,t.tag.get().$promise}).then(function(e){r.tags=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}).finally(function(){r.getContacts()})},r.getListId=function(){var e=_.toString(r.query.ListId);if(e){var t=e.split(","),n=r.defaultLists.split(",");_.isEqual(t,n)||(1<t.length?e=r.defaultLists:_.indexOf(n,t[0])<0&&(e=r.defaultLists))}else e=r.defaultLists;return e};var l=!0,d=1;function c(e){r.contacts=e||{count:0,rows:[]}}a.$watch("vm.query.filter",function(e,t){l?i(function(){l=!1}):(t||(d=r.query.page),e!==t&&(r.query.page=1),e||(r.query.page=d),r.getContacts())})}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(n,a,i,s,o,r,l,t,d,c){var m=this;function e(e){m.openchannelInteractions=e||{count:0,rows:[]};for(var t=0;t<m.openchannelInteractions.rows.length;t+=1)p(m.openchannelInteractions.rows[t])}function u(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd),m.openchannelAccounts.rows.length?(_.includes(_.map(m.openchannelAccounts.rows,"id"),m.query.account)||(m.query.account=null),m.query.OpenchannelAccountId=m.query.account||_.map(m.openchannelAccounts.rows,"id").join()):m.query.OpenchannelAccountId=-1,m.query.offset=(m.query.page-1)*m.query.limit,o.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify({query:m.query})),m.promise=l.openchannelInteraction.get(m.query,e).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}m.user=t.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,account:null},m.success=e,m.getOpenchannelInteractions=u,m.showOpenchannelInteraction=function(e,t){n.$parent.vm.addInteractionTab("openchannel",t)},m.downloadOpenchannelInteraction=function(e,s,t){l.openchannelInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="openchannel-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getContactLabel=function(e){if(e.Contact){var t="";return t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||""),e.from&&(t=e.from),t}return r.instant("DASHBOARDS.UNKNOWN")},m.getUserLabel=function(e){if(e.UserId)return e.UserId===t.getCurrentUser().id?r.instant("DASHBOARDS.ME"):m.usersByKey[e.UserId].fullname+" <"+m.usersByKey[e.UserId].internal+">";return r.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return r.instant("DASHBOARDS.UNKNOWN")},m.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},m.clearAll=function(){m.calendarModel={dateStart:null},m.pickerModel={dateStart:null},m.serviceModel={dateStart:null},m.getOpenchannelInteractions()},m.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){return l.openchannelAccount.send({id:t.id},e).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.onInit=function(e,t){return m.license=e,m.setting=t,l.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},l.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return l.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){m.usersByKey=_.keyBy(e.rows,"id")}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),m.query=_.omit(m.query,"filter"),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0)}catch(e){console.error(e)}d.on("openchannelInteraction:save",m.onOpenchannelInteractionSave),d.on("openchannelInteraction:update",m.onOpenchannelInteractionSave),d.on("openchannelInteractionTags:save",m.onOpenchannelInteractionTagsSave),d.on("openchannelMessage:save",m.onOpenchannelMessageSave),d.on("openchannelMessage:update",m.onOpenchannelMessageSave),d.on("user_has_openchannel_interactions:save",m.onOpenchannelInteractionOpen),d.on("user_has_openchannel_interactions:remove",m.onOpenchannelInteractionClose),m.getOpenchannelInteractions()})},m.onOpenchannelInteractionSave=function(e){if(e){var t=_.find(m.openchannelInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},m.onOpenchannelInteractionTagsSave=function(e){if(e){var t=_.find(m.openchannelInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},m.onOpenchannelMessageSave=function(e){if(e&&!e.secret){var t=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},m.onOpenchannelInteractionOpen=function(e){var t=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},m.onOpenchannelInteractionClose=function(e){var t=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},m.localizationMap={Today:r.instant("DASHBOARDS.TODAY"),Yesterday:r.instant("DASHBOARDS.YESTERDAY"),"This Week":r.instant("DASHBOARDS.THIS_WEEK"),"Last Week":r.instant("DASHBOARDS.LAST_WEEK"),"This Month":r.instant("DASHBOARDS.THIS_MONTH"),"Last Month":r.instant("DASHBOARDS.LAST_MONTH"),"This Year":r.instant("DASHBOARDS.THIS_YEAR"),"Last Year":r.instant("DASHBOARDS.LAST_YEAR"),January:r.instant("DASHBOARDS.JANUARY"),February:r.instant("DASHBOARDS.FEBRUARY"),March:r.instant("DASHBOARDS.MARCH"),April:r.instant("DASHBOARDS.APRIL"),May:r.instant("DASHBOARDS.MAY"),June:r.instant("DASHBOARDS.JUNE"),July:r.instant("DASHBOARDS.JULY"),August:r.instant("DASHBOARDS.AUGUST"),September:r.instant("DASHBOARDS.SEPTEMBER"),October:r.instant("DASHBOARDS.OCTOBER"),November:r.instant("DASHBOARDS.NOVEMBER"),December:r.instant("DASHBOARDS.DECEMBER"),Mon:r.instant("DASHBOARDS.MON"),Tue:r.instant("DASHBOARDS.TUE"),Wed:r.instant("DASHBOARDS.WED"),Thu:r.instant("DASHBOARDS.THU"),Fri:r.instant("DASHBOARDS.FRI"),Sat:r.instant("DASHBOARDS.SAT"),Sun:r.instant("DASHBOARDS.SUN")},m.pickerModel={dateStart:null};var g=!0,v=1;n.$watch("vm.query.filter",function(e,t){g?a(function(){g=!1}):(t||(v=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=v),m.getOpenchannelInteractions())}),n.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this;function c(e,t,n){d.license=e,d.setting=t,d.plugin=n}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),t.$on("pluginUpdated",function(e,t){d.plugin=t.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,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.voiceRecordings=e||{count:0,rows:[]}}p.currentUser=c.getCurrentUser(),p.voiceRecordings={},p.localizationMap=u,p.pickerModel={dateStart:null},p.table="voiceRecordings",p.query={UserId:p.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,UserId",sort:"-updatedAt",limit:10,page:1,type:null},p.downloadfile=function(i,e){return r.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var t=[e.buffer],n=new Blob(t,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(n)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.success=g,p.getVoiceRecordings=function(){p.query.dateStart=void 0,p.query.dateEnd=void 0,p.pickerModel.dateStart&&(p.query.dateStart=p.pickerModel.dateStart,p.query.dateEnd=p.pickerModel.dateEnd);p.query.offset=(p.query.page-1)*p.query.limit,t.localStorage.setItem("motion2.home.recordings:"+p.currentUser.id,JSON.stringify({query:p.query})),p.promise=r.voiceRecording.get(p.query,g).$promise},p.onInit=function(){var e=t.localStorage.getItem("motion2.home.recordings:"+p.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(p.query=_.omit(e.query,["filter","id"]),p.query.fields="createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,UserId",p.query.UserId=p.currentUser.id)}catch(e){console.error(e)}p.getVoiceRecordings()},p.clearAll=function(){p.pickerModel={dateStart:null},p.getVoiceRecordings()};var v=!0,h=1;e.$watch("vm.query.filter",function(e,t){v?o(function(){v=!1}):(t||(h=p.query.page),e!==t&&(p.query.page=1),e||(p.query.page=h),p.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","api","msUtils","toasty","Auth","$translate","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this;function c(e){d.scheduledCalls=e||{count:0,rows:[]}}d.currentUser=r.getCurrentUser(),d.priorities=["Lowest","Low","Medium","High","Highest"],d.localizationMap=l,d.pickerModel={dateStart:null},d.scheduledCalls={},d.query={id:d.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},d.queueCampaigns={rows:[],count:0},d.success=c,d.getScheduledCalls=function(){d.query.dateStart=void 0,d.query.dateEnd=void 0,d.pickerModel.dateStart&&(d.query.dateStart=d.pickerModel.dateStart,d.query.dateEnd=d.pickerModel.dateEnd);d.query.id=d.currentUser.id,d.query.includeAll=!0,d.query.offset=(d.query.page-1)*d.query.limit,t.localStorage.setItem("motion2.home.scheduled:"+d.currentUser.id,JSON.stringify({query:d.query})),d.promise=o.user.getScheduledCalls(d.query,c).$promise},d.onInit=function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+d.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(d.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){d.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}).finally(function(){d.getScheduledCalls()})},d.clearAll=function(){d.pickerModel={dateStart:null},d.getScheduledCalls()},d.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},d.createOrEditQueueCampaignHopper=function(e,t){a.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:t,hoppers:d.scheduledCalls.rows,license:null,setting:null}})},d.deleteConfirm=function(t,e){var n=a.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");a.show(n).then(function(){var e;e=t,o.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(d.scheduledCalls.rows,{id:e.id}),d.scheduledCalls.count-=1,d.scheduledCalls.rows.length||d.getScheduledCalls(),s.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){d.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var t=0;t<e.data.errors.length;t++)s.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else s.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 m=!0,u=1;e.$watch("vm.query.filter",function(e,t){m?n(function(){m=!1}):(t||(u=d.query.page),e!==t&&(d.query.page=1),e||(d.query.page=u),d.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(n,a,i,s,o,r,l,t,d,c){var m=this;function e(e){m.smsInteractions=e||{count:0,rows:[]};for(var t=0;t<m.smsInteractions.rows.length;t+=1)p(m.smsInteractions.rows[t])}function u(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd),m.smsAccounts.rows.length?(_.includes(_.map(m.smsAccounts.rows,"id"),m.query.account)||(m.query.account=null),m.query.SmsAccountId=m.query.account||_.map(m.smsAccounts.rows,"id").join()):m.query.SmsAccountId=-1,m.query.offset=(m.query.page-1)*m.query.limit,o.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify({query:m.query})),m.promise=l.smsInteraction.get(m.query,e).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}m.user=t.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,account:null},m.success=e,m.getSmsInteractions=u,m.showSmsInteraction=function(e,t){n.$parent.vm.addInteractionTab("sms",t)},m.downloadSmsInteraction=function(e,s,t){l.smsInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="sms-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getContactLabel=function(e){if(e.Contact){var t="";return t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||""),t+=" <"+(e.Contact.mobile||"unknown")+">"}return r.instant("DASHBOARDS.UNKNOWN")},m.getUserLabel=function(e){if(e.UserId)return e.UserId===t.getCurrentUser().id?r.instant("DASHBOARDS.ME"):m.usersByKey[e.UserId].fullname+" <"+m.usersByKey[e.UserId].internal+">";return r.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return r.instant("DASHBOARDS.UNKNOWN")},m.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},m.clearAll=function(){m.calendarModel={dateStart:null},m.pickerModel={dateStart:null},m.serviceModel={dateStart:null},m.getSmsInteractions()},m.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){return l.smsAccount.send({id:t.id},e).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.onInit=function(e,t){return m.license=e,m.setting=t,l.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},l.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return l.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){m.usersByKey=_.keyBy(e.rows,"id")}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),m.query=_.omit(m.query,"filter"),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0)}catch(e){console.error(e)}d.on("smsInteraction:save",m.onSmsInteractionSave),d.on("smsInteraction:update",m.onSmsInteractionSave),d.on("smsInteractionTags:save",m.onSmsInteractionTagsSave),d.on("smsMessage:save",m.onSmsMessageSave),d.on("smsMessage:update",m.onSmsMessageSave),d.on("user_has_sms_interactions:save",m.onSmsInteractionOpen),d.on("user_has_sms_interactions:remove",m.onSmsInteractionClose),m.getSmsInteractions()})},m.onSmsInteractionSave=function(e){if(e){var t=_.find(m.smsInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},m.onSmsInteractionTagsSave=function(e){if(e){var t=_.find(m.smsInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},m.onSmsMessageSave=function(e){if(e&&!e.secret){var t=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},m.onSmsInteractionOpen=function(e){var t=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},m.onSmsInteractionClose=function(e){var t=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},m.localizationMap={Today:r.instant("DASHBOARDS.TODAY"),Yesterday:r.instant("DASHBOARDS.YESTERDAY"),"This Week":r.instant("DASHBOARDS.THIS_WEEK"),"Last Week":r.instant("DASHBOARDS.LAST_WEEK"),"This Month":r.instant("DASHBOARDS.THIS_MONTH"),"Last Month":r.instant("DASHBOARDS.LAST_MONTH"),"This Year":r.instant("DASHBOARDS.THIS_YEAR"),"Last Year":r.instant("DASHBOARDS.LAST_YEAR"),January:r.instant("DASHBOARDS.JANUARY"),February:r.instant("DASHBOARDS.FEBRUARY"),March:r.instant("DASHBOARDS.MARCH"),April:r.instant("DASHBOARDS.APRIL"),May:r.instant("DASHBOARDS.MAY"),June:r.instant("DASHBOARDS.JUNE"),July:r.instant("DASHBOARDS.JULY"),August:r.instant("DASHBOARDS.AUGUST"),September:r.instant("DASHBOARDS.SEPTEMBER"),October:r.instant("DASHBOARDS.OCTOBER"),November:r.instant("DASHBOARDS.NOVEMBER"),December:r.instant("DASHBOARDS.DECEMBER"),Mon:r.instant("DASHBOARDS.MON"),Tue:r.instant("DASHBOARDS.TUE"),Wed:r.instant("DASHBOARDS.WED"),Thu:r.instant("DASHBOARDS.THU"),Fri:r.instant("DASHBOARDS.FRI"),Sat:r.instant("DASHBOARDS.SAT"),Sun:r.instant("DASHBOARDS.SUN")},m.pickerModel={dateStart:null};var g=!0,v=1;n.$watch("vm.query.filter",function(e,t){g?a(function(){g=!1}):(t||(v=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=v),m.getSmsInteractions())}),n.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r,l,d){var c=this;function m(e){c.voiceCalls=e||{count:0,rows:[]}}c.currentUser=i.getCurrentUser(),c.voiceCalls={},c.localizationMap=d,c.pickerModel={dateStart:null},c.table="voiceCalls",c.query={UserId:c.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},c.success=m,c.getVoiceCalls=function(){c.query.dateStart=void 0,c.query.dateEnd=void 0,c.pickerModel.dateStart&&(c.query.dateStart=c.pickerModel.dateStart,c.query.dateEnd=c.pickerModel.dateEnd);c.query.offset=(c.query.page-1)*c.query.limit,o.localStorage.setItem("motion2.home.voice:"+c.currentUser.id,JSON.stringify({query:c.query})),c.promise=e.voiceCallReport.get(c.query,m).$promise},c.onInit=function(){return e.tag.get().$promise.then(function(e){c.tags=e||{count:0,rows:[]}}).catch(function(e){a.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),c.tags={count:0,rows:[]}}).finally(function(){var e=o.localStorage.getItem("motion2.home.voice:"+c.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.omit(e.query,"filter"))}catch(e){console.error(e)}c.getVoiceCalls()})},c.showDetails=function(e){t.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{call:e}})},c.clearAll=function(){c.pickerModel={dateStart:null},c.getVoiceCalls()};var u=!0,p=1;r.$watch("vm.query.filter",function(e,t){u?l(function(){u=!1}):(t||(p=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=p),c.getVoiceCalls())})}e.$inject=["$mdDialog","$document","api","toasty","Auth","$translate","$window","$scope","$timeout","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,t){this.call=t,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this,g=25,v=1024*g*1024;function h(){i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{user:p.user,channel:p.tab.channel,interaction:p.tab.interaction}}).then(function(e){p.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(p.tab)})}function f(e,t){p.tab.message||(p.tab.message=t),i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!1,locals:{account:p.account,message:p.tab.message,type:e,interaction:p.interaction},fullscreen:!0,skipHide:Boolean(p.tab.spy)}).then(function(t){t&&A(t),t.Interaction&&p.interaction&&p.interaction.id&&(t.Interaction.id=p.interaction.id,l.mailInteraction.update(t.Interaction).$promise.then(function(e){e&&e.closed?(p.tab.saved=!0,p.interaction.closed=!0,p.interaction.closedAt=e.closedAt,h()):null!==t.Interaction.substatus&&(p.tab.saved=!0,p.tab.interaction.substatus=t.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(p.tab))}).catch(function(e){console.error(e)}))})}function b(){"mail"!==p.tab.channel&&t(function(){var e=angular.element(n.find("md-content[name*='interaction-content-"+p.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function A(n){if(n)return n["chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId"]=p.interaction["chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId"],n[_.capitalize(p.tab.channel)+"InteractionId"]=p.interaction.id,n.UserId=p.user.id,n.ContactId=p.interaction.ContactId,n.direction="out",n.secret=Boolean(p.tab.spy||n.secret),l[p.tab.channel+"Message"].save(n).$promise.then(function(e){if(e&&e.id&&n.attachments&&n.attachments.length)for(var t=0;t<n.attachments.length;t+=1)l.attachment.update({id:n.attachments[t].id},{MailMessageId:e.id})}).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(){p.tab.areaText="",b()})}function E(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";default:return"blue-A700"}}function y(e){e&&e.count&&e.rows.length&&(p.journey=_.concat(p.journey,e.rows))}p.showFooter=!1,p.showInteraction=!1,p.user=c.getCurrentUser(),p.detectBrowser=u.detectBrowser(),p.journey=[],p.acceptedMessages=[],p.omniChannels=["mail","chat","sms","openchannel","fax"],p.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:v,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},p.ngFlow={flow:{}},p.selectedMailShowDetails={},p.selectedMailShowSystemMessage={},p.setting={},p.ctrlMethods={},p.init=function(e,t){p.tab=e,p.tab.saved=!0,p.tab.badges=0,p.setting=t||{},p.tab&&p.tab.channel&&p.tab.interaction&&(p.interaction=p.tab.interaction,l[p.tab.channel+"Interaction"].get({id:p.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(p.interaction=e,p.tab.interaction=e),p.tab.saved=p.interaction.closed,p.queryMessage={id:p.interaction.id,includeAll:!0},"mail"===p.tab.channel?(p.queryMessage.sort="-id",p.queryMessage.offset=0,p.queryMessage.limit=3):(p.queryMessage.sort="id",p.queryMessage.nolimit=!0),l[p.tab.channel+"Interaction"].getMessages(p.queryMessage).$promise}).then(function(e){return p.messages=e||{count:0,rows:[]},l["chat"===p.tab.channel?"chatWebsite":p.tab.channel+"Account"].get({id:p.interaction["chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(p.account=e,p.tab.title=p.account.key||p.account.name,p.interaction.ContactId)return l.cmContact.get({id:p.interaction.ContactId}).$promise}).then(function(e){return e&&(p.contact=e),p.showInteraction=!0,p.contact?(!function(e){if(e&&e.id){for(var t=0;t<p.omniChannels.length;t++)l[p.omniChannels[t]+"Interaction"].get({ContactId:e.id,includeAll:!0}).$promise.then(y);l.voiceCallReport.get({ContactId:e.id,includeAll:!0}).$promise.then(y)}}(p.contact),p.tab.title+=" - "+p.contact.firstName):p.tab.title+=" - "+r.instant(p.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){p.users=e||{count:0,rows:[]},p.usersMap=_.mapValues(_.keyBy(p.users.rows,"id"),"fullname")}).then(function(){if(p.tab.channel&&p.interaction)return l.user["add"+_.upperFirst(p.tab.channel)+"Interactions"]({id:p.user.id,ids:[p.interaction.id]})}).then(function(){return l.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){p.subStatuses=e||{count:0,rows:[]}}).then(function(){return p.getMailAccounts()}).then(function(){return p.getFaxAccounts()}).then(function(){return p.getSmsAccounts()}).then(function(){return p.getOpenchannelAccounts()}).then(function(){return p.getChatWebsites()}).then(function(){return p.getLists()}).catch(function(e){console.error(e),p.showInteraction=!0}).finally(function(){!function(){if(!p.tab.spy)for(var e=0;e<p.messages.rows.length;e+=1)"in"!==p.messages.rows[e].direction||p.messages.rows[e].read||(l[p.tab.channel+"Message"].accept({id:p.messages.rows[e].id,UserId:p.user.id}),p.acceptedMessages.push(p.messages.rows[e].id))}(),b(),m.on(p.tab.channel+"Message:save",p.onMessageSave),m.on(p.tab.channel+"Message:update",p.onMessageSave),m.on(p.tab.channel+"Interaction:save",p.onInteractionSave),m.on(p.tab.channel+"Interaction:update",p.onInteractionSave),m.on("user_has_"+p.tab.channel+"_interactions:save",p.onInteractionOpen),m.on("user_has_"+p.tab.channel+"_interactions:remove",p.onInteractionClose),p.showFooter=!0}))},p.getLabelByMessage=function(e){var t="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":t:e.UserId?p.usersMap?p.usersMap[e.UserId]:t:"System"},p.openContact=function(e,t){try{p.tab&&!p.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(t||p.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},p.openInteraction=function(e,t){try{if(t.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",t);if(t.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",t);if(t.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",t);if(t.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",t);if(t.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",t)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},p.disposeInteraction=h,p.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,skipHide:Boolean(p.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{nolimit:!0,fields:"id,name,color"})}]},locals:{channel:p.tab.channel,interaction:p.tab.interaction}})},p.composeMailInteraction=function(t,e){if(e.inReplyTo){var n=_.find(p.messages.rows,{messageId:e.inReplyTo});if(!n)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){f(t,e&&e.count?e.rows[0]:void 0)}).catch(function(e){console.error(e),f(t,void 0)});f(t,n)}else f(t,e)},p.composeFaxInteraction=function(e){var t={to:[]};t.to.push(p.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!1,locals:{account:p.account,message:t,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:p.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 t=0;t<e.data.errors.length;t++)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},p.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!1,locals:{account:p.account,message:t,type:e},fullscreen:!0,skipHide:Boolean(p.tab.spy)}).then(function(e){e&&A(e)})},p.transferLastMessage=function(){if(p.interaction){var e=_.findLast(p.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(n.body),clickOutsideToClose:!1,locals:{account:p.account,interaction:p.interaction,message:e,channel:p.tab.channel}}).then(function(e){p.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(p.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},p.downloadMessage=function(s,e){p.tab.channel&&s.id&&l[p.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=p.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},p.downloadInteraction=function(s,e){p.tab.channel&&s.id&&l[p.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var t=[e.buffer],n=p.tab.channel+"-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},p.getMailAccounts=function(){l.user.getMailAccounts({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.mailAccounts=e||{count:0,rows:[]}})},p.getFaxAccounts=function(){l.user.getFaxAccounts({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.faxAccounts=e||{count:0,rows:[]}})},p.getSmsAccounts=function(){l.user.getSmsAccounts({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.smsAccounts=e||{count:0,rows:[]}})},p.getOpenchannelAccounts=function(){l.user.getOpenchannelAccounts({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.openchannelAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.mail.account"}];for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mail.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.getChatWebsites=function(){l.user.getChatWebsites({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.chatAccounts=e||{count:0,rows:[]}})},p.getLists=function(){l.user.getLists({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.voiceAccounts=e||{count:0,rows:[]}})},p.reply=function(e,t){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===t.trim())return;A(function(e){var t={},n="chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId";t[n]=p.interaction[n].toString(),t[_.capitalize(p.tab.channel)+"InteractionId"]=p.interaction.id,"sms"===p.tab.channel&&(t.phone=p.interaction.phone);e&&(t.UserId=p.user.id,t.ContactId=p.interaction.ContactId,t.body=e,t.createdAt=Date.now());return t}(t.replace(/\n$/,"")))},p.upload=function(){p.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},p.ngFlow.flow.upload()},p.fileAdded=function(e){if(e.size>v)return d.error({title:"File too big",msg:"The max allowed size is "+g+"MB"}),!1;return!0},p.fileSuccess=function(e,t){var n=JSON.parse(t),a=n.name;"chat"===p.tab.channel&&(a='<a href="'+(p.account.remote?p.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+p.interaction.id+"/attachment_download?attachId="+n.id+"&token="+p.account.token+'" target="_self">'+n.name+"</a>");A({body:a,AttachmentId:n.id})},p.onMessageSave=function(e){if(e&&p.interaction.id!=e[_.capitalize(p.tab.channel)+"InteractionId"])return;var t=!1;p.messages?t=_.find(p.messages.rows,{id:e.id}):p.messages={rows:[],count:0};t?_.merge(t,e):("mail"===p.tab.channel?p.messages.rows.unshift(e):p.messages.rows.push(e),b())},p.onInteractionSave=function(e){if(e&&p.interaction.id!==e.id)return;e.closed&&(p.tab.saved=!0);_.merge(p.interaction,e)},p.searchTextChange=function(t){var n=s.defer(),a=[],e={},i="chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId";return e.filter=t,e[i]=p.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:t}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),n.resolve(a)}).catch(function(e){n.reject(e)}),n.promise},p.selectedItemChange=function(t){if(t){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(t.value),n={user:p.user,account:p.account,interaction:p.interaction,contact:p.interaction&&p.interaction.Contact?p.interaction.Contact:{}};p.tab.areaText+=" "+e(n),p.ctrlMethods.setText(p.tab.areaText)}catch(e){p.tab.areaText+=" "+t.value,p.ctrlMethods.setText(p.tab.areaText)}p.selectedItem=null,p.changeDisplayCannedAnswerInputValue()}},p.getIconByChannel=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";default:return"icon-hangouts"}},p.getColorByChannel=E,p.getColorByItem=function(e){var t="";e.FaxAccountId?t="fax":e.OpenchannelAccountId?t="openchannel":e.SmsAccountId?t="sms":e.MailAccountId?t="mail":e.ChatWebsiteId?t="chat":e.amaflags&&(t="voice");return E(t)},p.getMessagesAlignment=function(e){if(e.secret&&p.user.id!=e.UserId)return"in";switch(p.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}},p.displayCannedAnswerInput=!1,p.changeDisplayCannedAnswerInputValue=function(){p.displayCannedAnswerInput=!p.displayCannedAnswerInput},p.setAs=function(e){p.tab.channel&&p.interaction&&p.interaction.id&&l[p.tab.channel+"Interaction"].update({id:p.interaction.id,substatus:e,substatusAt:Date.now()}).$promise.catch(function(e){console.error(e)})},p.markAsUnread=function(){if(p.tab.channel&&p.interaction&&p.interaction.id)if(p.acceptedMessages.length)for(var e=0;e<p.acceptedMessages.length;e+=1)l[p.tab.channel+"Message"].update({id:p.acceptedMessages[e],read:!1,UserId:null});else for(var t=0;t<p.messages.rows.length;t+=1)if("in"===p.messages.rows[t].direction){p.messages.rows[t].UserId===p.user.id?l[p.tab.channel+"Message"].update({id:p.messages.rows[t].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}p.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(p.tab)},p.isMyAccount=function(e){{if(e.FaxAccountId)return _.includes(_.map(p.faxAccounts?p.faxAccounts.rows:[],"id"),e.FaxAccountId);if(e.OpenchannelAccountId)return _.includes(_.map(p.openchannelAccounts?p.openchannelAccounts.rows:[],"id"),e.OpenchannelAccountId);if(e.SmsAccountId)return _.includes(_.map(p.smsAccounts?p.smsAccounts.rows:[],"id"),e.SmsAccountId);if(e.MailAccountId)return _.includes(_.map(p.mailAccounts?p.mailAccounts.rows:[],"id"),e.MailAccountId);if(e.ChatWebsiteId)return _.includes(_.map(p.chatAccounts?p.chatAccounts.rows:[],"id"),e.ChatWebsiteId);if(e.amaflags)return!0}return!1},p.getAttachments=function(t){return l.attachment.get({MailMessageId:t.id}).$promise.then(function(e){e&&e.rows&&(t.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()})})},p.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var t=new Blob([e.buffer],{type:e.type}),n=document.createElement("a"),a=window.URL.createObjectURL(t);n.href=a,n.target="_self",n.download=i.name,document.body.appendChild(n),n.click(),setTimeout(function(){document.body.removeChild(n),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()})})},p.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},p.onInteractionOpen=function(e){var t;p.interaction.id==e[_.upperFirst(p.tab.channel)+"InteractionId"]&&(p.interaction.Users&&(t=_.find(p.interaction.Users,{id:e.UserId})),t||p.interaction.Users.push({id:e.UserId}))},p.onInteractionClose=function(e){p.interaction.id==e[_.upperFirst(p.tab.channel)+"InteractionId"]&&p.interaction.Users&&_.remove(p.interaction.Users,{id:e.UserId})},p.loadNextPage=function(){var n=s.defer();if(p.queryMessage)return p.queryMessage.offset=p.messages.rows.length,l[p.tab.channel+"Interaction"].getMessages(p.queryMessage).$promise.then(function(e){for(var t=0;t<e.rows.length;t+=1)p.messages.rows.push(e.rows[t]),"in"!==e.rows[t].direction||e.rows[t].read||(l[p.tab.channel+"Message"].accept({id:e.rows[t].id,UserId:p.user.id}),p.acceptedMessages.push(e.rows[t].id));return n.resolve(e)}).catch(function(e){return n.reject(e)});return n.reject()},p.timelineOptions={scrollEl:"#interaction-content"},a.$on("$destroy",function(){m.removeAllListeners(p.tab.channel+"Message:save"),m.removeAllListeners(p.tab.channel+"Message:update"),m.removeAllListeners(p.tab.channel+"Interaction:save"),m.removeAllListeners(p.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+p.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+p.tab.channel+"_interactions:remove")})}function t(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(n){n.updateView=function(){var e,t=_.replace(n.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"');n.trustedHtml=a.trustAsHtml(t)},n.$watch("ngBindHtmlUnsafe",function(e,t){n.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils"],t.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",t).filter("getChannelByItem",function(){return function(e,t,n,a){for(var i=[],s=0;s<e.length;s+=1){var o=!0;switch(t){case"voice":o=Boolean(e[s].uniqueid);break;case"chat":o=Boolean(e[s].ChatWebsiteId);break;case"mail":o=Boolean(e[s].MailAccountId);break;case"sms":o=Boolean(e[s].SmsAccountId);break;case"fax":o=Boolean(e[s].FaxAccountId);break;case"openchannel":o=Boolean(e[s].OpenchannelAccountId);break;default:o=!0}o&&n&&a&&(o=moment(e[s].createdAt).isBetween(n,a)),o&&i.push(e[s])}return i}}).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,t,n,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,n.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,t){try{(t=JSON.parse(t)).size=e.size,c.message.attachments.push(t)}catch(e){console.error(e)}},c.fileAdded=function(e){var t=["pdf","tif"];if(!_.includes(t,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+t.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 t="";e.firstName&&e.firstName!==e.fax&&(t+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(t+=e.lastName+" ");return t+="<"+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 t=e;if(_.isObject(e))return e.fax;if(n=t,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(n))return t;var n;return l.error("Fax "+t+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,n.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(t,e,i,n,s,o,a,r,l,d,c,m){var u=this,p=25,g=1024*p*1024;switch(u.currentUser=c.getCurrentUser(),u.secret="note"===a,u.hiddenCC=!0,u.hiddenBCC=!0,u.verifySmtp=!0,u.errors=[],u.separatorKeys=[n.KEY_CODE.ENTER,n.KEY_CODE.COMMA,n.KEY_CODE.TAB],u.searchTextChange=function(t){var n=d.defer(),a=[];return r.cannedAnswer.get({filter:t,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),r.cannedAnswer.get({filter:t}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),n.resolve(a)}).catch(function(e){n.reject(e)}),n.promise},u.selectedItemChange=function(t){if(t&&t.value&&u.ckEditorInstance)try{var e=_.template(t.value),n={user:u.currentUser,account:s,interaction:m,contact:m&&m.Contact?m.Contact:{}};u.ckEditorInstance.insertHtml(e(n))}catch(e){console.error(e),u.ckEditorInstance.insertHtml(t.value)}document.getElementById("html-area").focus(),u.selectedItem=null},u.onReadyEditor=function(e){try{u.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,u.fromTemplate=_.template("{{ name }} <{{ email }}>"),u.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),u.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 }}"),u.message={from:u.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:f(),type:a,attachments:[],showLastMessage:!0},u.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:u.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"},u.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:g,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},u.ngFlow={flow:{}},u.reply=function(e){angular.isDefined(o)&&(u.message.type="reply",u.message.to="in"===o.direction?o.from.split(","):o.to.split(","),u.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,u.message.inReplyTo=o.messageId,u.message.body=o.draft&&o.draft.inReplyTo?o.draft.body:f(),u.message.attachments=o.draft?o.draft.attachments:[],e&&o.cc&&(u.hiddenCC=!1,u.message.cc=o.cc.split(",")),u.message.showLastMessage=!!o.draft&&o.draft.showLastMessage)},u.newMail=function(){angular.isDefined(o)&&(u.message.type="new",u.message.to=o.to?o.to.split(","):[])},u.forward=function(){if(angular.isDefined(o)){if(u.message.type="forward",u.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,u.message.body=o.draft&&!o.draft.inReplyTo?o.draft.body:f(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)u.message.attachments.push(o.Attachments[e]);u.message.showLastMessage=!!o.draft&&o.draft.showLastMessage}},u.send=function(e,t,n){if(u.message.to&&u.message.body)if(u.message.to.length)if(o.draft=void 0,_.isEmpty(u.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(){v(t,n)})}else v(t,n);else l.error("To is mandatory")},u.note=function(){u.type="note",u.secret=!0,u.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'px"><p></p></div>'},u.addNote=function(){u.message.body&&(u.message.draft=void 0,i.hide({secret:!0,body:u.message.body,attach:u.message.attachments.length,attachments:u.message.attachments}))},u.upload=function(e){u.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+t.get("motion.token")},u.ngFlow.flow.upload()},u.fileSuccess=function(e,t){try{(t=JSON.parse(t)).size=e.size,u.message.attachments.push(t)}catch(e){console.error(e)}},u.deleteAttachment=function(e){u.message.attachments=_.reject(u.message.attachments,{id:e.id}),r.attachment.delete({id:e.id}).$promise.then(function(){l.success({title:"Attachment deleted!",msg:e.name?e.name+" has been deleted!":""})})},u.fileAdded=function(e){if(e.size>g)return l.error({title:"File too big",msg:"The max allowed size is "+p+"MB"}),!1;return!0},u.getContact=function(e){var t="";e.firstName&&e.firstName!==e.email&&(t+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(t+=e.lastName+" ");return t+="<"+e.email+">"},u.contactSearch=function(e){return s&&s.ListId?r.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},u.transformContact=function(e,t){if(_.isObject(e))return e.email;if(_.isString(e)){if(h(e))return e;for(var n=e.split(","),a=0;a<n.length;a+=1)h(n[a])?_.isArray(t)&&_.indexOf(t,n[a])<0&&t.push(n[a]):l.error("Email "+n[a]+" is not valid");return null}return l.error("Email field is not valid"),null},u.closeDialog=function(){angular.isDefined(o)&&(o.draft=u.message);i.cancel()},u.loadLastMessage=function(){u.message.body+=b(u.message.type)},a){case"reply":u.reply(!1);break;case"replyAll":u.reply(!0);break;case"forward":u.forward();break;case"new":u.newMail();break;case"note":u.note()}function v(e,t){var n={from:u.message.from,to:u.message.to.join(","),cc:u.message.cc.join(","),bcc:u.message.bcc.join(","),subject:u.message.subject,body:u.message.showLastMessage?u.message.body:u.message.body+b(u.message.type),inReplyTo:u.message.inReplyTo,attach:u.message.attachments.length,attachments:u.message.attachments,Interaction:{lastMsgAt:moment().format("YYYY-MM-DD HH:mm:ss"),lastMsgDirection:"out",lastMsgBody:u.message.body,substatus:t,substatusAt:moment().format("YYYY-MM-DD HH:mm:ss")}};n.html='<div id="xm-mail-content">'+_.replace(n.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(n.Interaction.closed=!0,n.Interaction.closedAt=moment().format("YYYY-MM-DD HH:mm:ss")),i.hide(n)}function h(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 f(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'px">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:u.currentUser,account:s,interaction:m,contact:m&&m.Contact?m.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function b(e){var t,n,a='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":a+=u.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":a+=u.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)||""})}return a+="<br><br>",a+=(t=o.body?_.replace(o.body,'<div id="xm-mail-content"',"<div"):"",(n=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?n[1]:t),a+="</blockquote></div>",e?a:""}r.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){u.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.secret||r.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){u.verifySmtp=!1,u.errors.push({message:e.data,type:e.status}),u.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","Auth","interaction"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,t,n,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(t){var n=c.defer(),a=[];return l.cannedAnswer.get({filter:t,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:t}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),n.resolve(a)}).catch(function(e){n.reject(e)}),n.promise},p.selectedItemChange=function(t){if(t){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(t.value),n={user:p.currentUser,account:s};p.message.body+=" "+e(n),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+t.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?(t=p.message.body,a.hide({to:p.message.to.join(","),body:t})):d.error("To is mandatory"));var t},p.getContact=function(e){var t="";e.firstName&&e.firstName!==e[s.mapKey]&&(t+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(t+=e.lastName+" ");return t+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var t="firstName,lastName,phone,mobile";return s.mapKey&&(t+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:t}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var t=e;if(_.isObject(t))return e[s.mapKey];return t},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,t,n,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(t){var n=c.defer(),a=[];return l.cannedAnswer.get({filter:t,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:t}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),n.resolve(a)}).catch(function(e){n.reject(e)}),n.promise},p.selectedItemChange=function(t){if(t){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(t.value),n={user:p.currentUser,account:s};p.message.body+=" "+e(n),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+t.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?(t=p.message.body,a.hide({to:p.message.to.join(","),body:t})):d.error("To is mandatory"));var t},p.getContact=function(e){var t="";e.firstName&&e.firstName!==e.mobile&&(t+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(t+=e.lastName+" ");return t+="<"+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 t=e;if(_.isObject(t))return e.mobile;if(n=t,/^(\+|\d)[0-9]{7,16}$/.test(n))return t;var n;return d.error("Mobile "+t+" 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(t,n,a,i,s,o){var r=this;function l(e){t.hide(e)}r.errors=[],r.interaction=angular.copy(i),r.dispositions={count:0,rows:[]},r.globalDispositions={count:0,rows:[]},r.channel=s,r.interactionMethod=r.channel+"Interaction",r.interaction.disposition||(r.interaction.disposition=null),r.saveDisposition=function(e){r.errors=[],r.interaction.closed||(r.interaction.closedAt=Date.now());r.interaction.UserId=o.id,r.interaction.closed=!0,r.interaction.closeReason="agent",a[r.interactionMethod]?a[r.interactionMethod].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","ChatWebsiteId","OpenchannelId","closed","closedAt","closeReason","disposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,n.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"}),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 t=0;t<e.data.errors.length;t++)n.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else n.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,function(){var e={fields:"id,name",sort:"name",nolimit:!0};switch(s){case"chat":e.ChatWebsiteId=i.ChatWebsiteId;break;case"mail":case"sms":case"fax":case"openchannel":var t=_.capitalize(s)+"AccountId";e[t]=i[t]}a.disposition.get(e).$promise.then(function(e){r.dispositions=e}).catch(function(e){console.error(e)}),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null"}).$promise.then(function(e){r.globalDispositions=e}).catch(function(e){console.error(e)})}()}e.$inject=["$mdDialog","toasty","api","interaction","channel","user"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(t,n,e,a,i,s){var o=this;function r(e){t.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.interactionMethod])return e[o.interactionMethod].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){n.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 t=0;t<e.data.errors.length;t+=1)n.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else n.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.interactionMethod=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=n.getCurrentUser(),l.channel=s.toLowerCase(),l.message=o,l.account=r,l.transfer={id:0,type:"queue"},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 t=0;t<e.data.errors.length;t++)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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",nolimit:!0}).$promise.then(function(e){return l.agents=e||{count:0,rows:[]},a[l.queueMethod].get({fields:"id,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,s,o,e,l,d,t,n,a,r,c){var m=this;function u(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){d.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function p(n,e){var r=t.getCurrentUser();l.jscriptySessionReport.save({starttime:m.starttime,membername:m.call&&m.call.membername?m.call.membername:r.name,calleridname:m.call&&m.call.calleridname?m.call.calleridname:void 0,calleridnum:m.call&&m.call.calleridnum?m.call.calleridnum:void 0,queue:m.call&&m.call.queue?m.call.queue:void 0,uniqueid:m.call&&m.call.uniqueid?m.call.uniqueid:void 0,VoiceQueueId:m.call&&m.call["xmd-voicequeueid"]?m.call["xmd-voicequeueid"]:void 0,ProjectId:m.project&&m.project.id?m.project.id:void 0,projectname:m.project&&m.project.name?m.project.name:void 0,ContactId:m.contact&&m.contact.id?m.contact.id:void 0,completed:e}).$promise.then(function(e){if(e)for(var t=m.getResponseSheetHeaders(),n=m.getResponseSheetRow(),a=m.getQuestionWithResponseList(),i=0;i<t.length;i+=1)if(!_.isEmpty(n[i])){l.jscriptyQuestionReport.save({question:t[i],answer:n[i],questionId:a[i].id,membername:m.call&&m.call.membername?m.call.membername:r.name,calleridname:m.call&&m.call.calleridname?m.call.calleridname:void 0,calleridnum:m.call&&m.call.calleridnum?m.call.calleridnum:void 0,queue:m.call&&m.call.queue?m.call.queue:void 0,uniqueid:m.call&&m.call.uniqueid?m.call.uniqueid:void 0,SessionId:e.id,ProjectId:m.project.id,projectname:m.project.name});for(var s=n[i].toString().split(";"),o=0;o<s.length;o+=1)l.jscriptyAnswerReport.save({question:t[i],questionId:a[i].id,answer:s[o].trim(),membername:m.call&&m.call.membername?m.call.membername:r.name,calleridname:m.call&&m.call.calleridname?m.call.calleridname:void 0,calleridnum:m.call&&m.call.calleridnum?m.call.calleridnum:void 0,queue:m.call&&m.call.queue?m.call.queue:void 0,uniqueid:m.call&&m.call.uniqueid?m.call.uniqueid:void 0,SessionId:e.id,ProjectId:m.project.id,projectname:m.project.name})}return e}).then(function(e){e?n.resolve(!0):n.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});n.reject()})}m.formViewer={},m.showResetButton=!0,m.showIncompleteSubmitButton=!1,m.detectBrowser=c.detectBrowser(),m.onSubmit=function(e,t){var n=s.defer();if(t){var a=o.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");o.show(a).then(function(){p(n,!1)},function(){n.resolve()})}else p(n,!0);return n.promise.then(function(e){e&&(d.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){d.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(m.tab))}).catch(function(e){d.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},m.openContact=function(e,t){try{i.$parent.$parent.$parent.vm.addContactTab(t)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},m.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},m.getResponseSheet=function(){return e.getResponseSheet(m.project.formData,m.project.responseData,!1)},m.getResponseSheetRow=function(){return e.getResponseSheetRow(m.project.formData,m.project.responseData)},m.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(m.project.formData,!1)},m.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(m.project.formData,m.project.responseData)},m.init=function(e){m.tab=e,m.tab&&(m.call=m.tab.call,m.starttime=m.tab.openedAt,m.contact=m.tab.contact,m.project=m.tab.project,m.project&&(_.isObjectLike(m.project.formData)?m.project.formData=m.project.formData:m.isJsonString(m.project.formData)?m.project.formData=JSON.parse(m.project.formData):m.project.formData=void 0,m.project.responseData=m.project.responseData||{},void 0!==m.project.currentPage&&r(function(){a.$broadcast("mwForm.pageEvents.changePage",{page:m.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,t){if(t.currentPage&&(m.project.currentPage=t.currentPage.number-1,u(),m.project.enableUncompleteSave&&(1<=t.currentPage.number&&t.currentPage.number<m.project.formData.pages.length?m.showIncompleteSubmitButton=!0:m.showIncompleteSubmitButton=!1),m.project.formData&&m.project.formData.pages))for(var n=0,a=m.project.formData.pages.length;n<a;n++)if(t.currentPage.number<n+1&&m.project.formData.pages[n].elements)for(var i=0,s=m.project.formData.pages[n].elements.length;i<s;i++)"question"===m.project.formData.pages[n].elements[i].type&&m.project.formData.pages[n].elements[i].question&&delete m.project.responseData[m.project.formData.pages[n].elements[i].question.id]})))},m.resetViewer=function(e){if(m.formViewer.reset){var t=o.confirm().title(n.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(n.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(n.instant("JSCRIPTY.YES")).cancel(n.instant("JSCRIPTY.NO"));o.show(t).then(function(){m.showIncompleteSubmitButton=!1,m.project.currentPage=void 0,u(),m.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(n,a,e,t,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:n.instant("DASHBOARDS.ATTENTION"),msg:n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(t[s.notification.channel+"Message"])return t[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(t[s.notification.channel+"Message"])return t[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 t=this;t.init=function(e){t.tab=e,t.tab&&(t.tab.saved=!0,t.html=t.tab.html)}})}(),function(){"use strict";function e(e,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),t&&(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:e.ChatWebsiteId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("chatInteraction:save",i.onSaveChatInteraction),t.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("chatInteraction:save"),t.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,t,n,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)},n.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=t(function(){d(),c()},999),n.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){n.removeAllListeners("voice_queue:save"),n.removeAllListeners("campaign:save"),l.interval&&t.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,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),t&&(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:e.FaxAccountId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("faxInteraction:save",i.onSaveFaxInteraction),t.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("faxInteraction:save"),t.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),t&&(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:e.MailAccountId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("mailInteraction:save",i.onSaveMailInteraction),t.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("mailInteraction:save"),t.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),t&&(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:e.OpenchannelAccountId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),t.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("openchannelInteraction:save"),t.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),t&&(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:e.SmsAccountId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("smsInteraction:save",i.onSaveSmsInteraction),t.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("smsInteraction:save"),t.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(n){var i=[],s=function(){var n=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(n.queues,function(e,t){n.rpcQueues[t]&&(a.waiting+=n.rpcQueues[t].waiting||0,a.talking+=(n.rpcQueues[t].talking||0)+(n.rpcQueues[t].pTalking||0),a.answered+=n.rpcQueues[t].answered||0,a.abandoned+=n.rpcQueues[t].abandoned||0,a.sumHoldTime+=n.rpcQueues[t].sumHoldTime||0,a.sumBillable+=n.rpcQueues[t].sumBillable||0,a.total+=n.rpcQueues[t].total||0,a.originated+=n.rpcQueues[t].originated||0,a.outboundDropCallsDayCallersExit+=n.rpcQueues[t].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=n.rpcQueues[t].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(),n.defer.resolve(a),0<i.length&&s()};return function(e){var t=n.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:t}),1===i.length&&s(),t.promise}}function t(n){var i=[],s=function(){var n=i[0],a={originated:0,limitCalls:0};_.forIn(n.rpcCampaigns,function(e,t){n.rpcCampaigns[t]&&(a.originated+=n.rpcCampaigns[t].originated||0,a.limitCalls+=n.rpcCampaigns[t].limitCalls||0)}),i.shift(),n.defer.resolve(a),0<i.length&&s()};return function(e){var t=n.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:t}),1===i.length&&s(),t.promise}}function n(e,o,t,n){var r=this;r.hasPermission=function(){return t.hasPermission(101)||t.hasRole("admin")},r.license=n,e.$on("$stateChangeSuccess",function(e,t,n,a,i){var s=[];r.license.voice&&s.push("app.dashboards.general.voice"),r.license.dialer&&s.push("app.dashboards.general.dialer"),r.license.chat&&s.push("app.dashboards.general.chat"),r.license.mail&&s.push("app.dashboards.general.mail"),r.license.messaging&&s.push("app.dashboards.general.sms"),r.license.openchannel&&s.push("app.dashboards.general.openchannel"),r.license.fax&&s.push("app.dashboards.general.fax"),r.selectedTab=_.indexOf(s,t.name),r.selectedTab<0&&(r.selectedTab=0)<s.length&&o.go(_.first(s))})}e.$inject=["$q"],t.$inject=["$q"],n.$inject=["$scope","$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",t).controller("UserDashboardGeneralController",n)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=n?_.keyBy(n.rows?n.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},t.on("voice_queue:save",o.onSaveQueue),t.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){t.removeAllListeners("voice_queue:save"),t.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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.faxAccount.FaxAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.faxAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++){_.some(t,{resourceId:g.trunks[i].id})?(g.trunks[i].canSelect=!0,n.push(g.trunks[i])):a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,n.push(g.trunks[i]))}g.trunks=n})}else{var n=[],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,n.push(g.trunks[i]));g.trunks=n}}).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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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 t(e,t){if(r.faxAccountApps.rows.length){var n=r.faxAccountApps.rows[t]?r.faxAccountApps.rows[t]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:n,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[t]=e:r.faxAccountApps.rows.splice(t,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,t=[],n=0;n<r.faxAccountApps.rows.length;n++,0){var a=r.faxAccountApps.rows[n],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,t=_.concat(t,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(t,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.faxAccount=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,n).$promise},r.editFaxAccountApp=t,r.editInterval=function(e,t){if(r.faxAccountApps.rows.length){var n=r.faxAccountApps.rows[t]?r.faxAccountApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(t,e,n,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(",");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(",");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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("fax")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.faxAccount={},c.faxAccountFaxDispositions={count:0,rows:[]},c.selectedFaxAccountFaxDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.faxAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.faxAccount.id,c.query.FaxAccountId=c.faxAccount.id,c.getFaxAccountFaxDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the faxDisposition?").htmlContent("<b>"+(e.name||"faxDisposition")+"</b> will be deleted.").ariaLabel("delete faxDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getFaxAccountFaxDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.faxAccount.getDispositions(c.query,p).$promise},c.createOrEditFaxAccountFaxDisposition=function(e,t){s.show({controller:"CreateOrEditFaxDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/faxDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:c.faxAccount,faxDisposition:t,faxDispositions:c.faxAccountFaxDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedFaxAccountFaxDispositions=function(){var e=angular.copy(c.selectedFaxAccountFaxDispositions);return c.selectedFaxAccountFaxDispositions=[],e},c.deleteFaxAccountFaxDisposition=g,c.deleteSelectedFaxAccountFaxDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected faxDispositions?").htmlContent("<b>"+c.selectedFaxAccountFaxDispositions.length+" selected</b> will be deleted.").ariaLabel("delete faxDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedFaxAccountFaxDispositions.forEach(function(e){g(e)}),c.selectedFaxAccountFaxDispositions=[]})};var m=!0,u=1;function p(e){c.faxAccountFaxDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.faxAccountFaxDispositions.rows,{id:e.id}),c.faxAccountFaxDispositions.count-=1,c.faxAccountFaxDispositions.rows.length||c.getFaxAccountFaxDispositions(),r.success({title:"FaxDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getFaxAccountFaxDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountFaxDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_FAXDISPOSITION",g.faxDisposition=angular.copy(l),g.faxDispositions=r,g.newFaxDisposition=!1,g.faxDisposition||(g.faxDisposition={},g.title="FAX.NEW_FAXDISPOSITION",g.newFaxDisposition=!0),t.params.id&&(g.faxDisposition.FaxAccountId=t.params.id),g.addNewFaxDisposition=function(){g.errors=[],d.disposition.save(g.faxDisposition).$promise.then(function(e){g.faxDispositions.unshift(e.toJSON()),o.success({title:"FaxDisposition properly created",msg:g.faxDisposition.name?g.faxDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxDisposition=function(){g.errors=[],d.disposition.update({id:g.faxDisposition.id},g.faxDisposition).$promise.then(function(e){var t=_.find(g.faxDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"FaxDisposition properly saved!",msg:g.faxDisposition.name?g.faxDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The faxDisposition will be deleted.").ariaLabel("Delete FaxDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.faxDisposition.id}).$promise.then(function(){_.remove(g.faxDispositions,{id:g.faxDisposition.id}),o.success({title:"FaxDisposition properly deleted!",msg:(g.faxDisposition.name||"faxDisposition")+" has been deleted!"}),v(g.faxDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxDispositions","faxDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxDispositionDialogController",e)}(),function(){"use strict";function e(e,a,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.faxAccount={},c.faxAccountInteractions={count:0,rows:[]},c.selectedFaxAccountInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,Contact.firstName,Owner.name,closedAt,disposition,note,UserId,ContactId,FaxAccountId,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.faxAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.faxAccount.id,c.getFaxAccountInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.faxInteractionDownload=function(s,e,t){return l.faxInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getFaxAccountInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.faxAccount.getInteractions(c.query,p).$promise},c.createOrEditFaxAccountInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:c.faxAccount,interaction:t,interactions:c.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spyfaxInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"fax",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(c.selectedFaxAccountInteractions);return c.selectedFaxAccountInteractions=[],e},c.deleteFaxAccountInteraction=g,c.deleteSelectedFaxAccountInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedFaxAccountInteractions.forEach(function(e){g(e)}),c.selectedFaxAccountInteractions=[]})};var m=!0,u=1;function p(e){c.faxAccountInteractions=e||{count:0,rows:[]}}function g(e){l.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.faxAccountInteractions.rows,{id:e.id}),c.faxAccountInteractions.count-=1,c.faxAccountInteractions.rows.length||c.getFaxAccountInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getFaxAccountInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(n,e,a,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.faxAccount=c||n.params.faxAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=n.params.tab||0,u.gotogoto=function(e,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.fax.realtime.accounts",{})}},u.agentadddialog=function(e,t){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:u.faxAccounts?u.faxAccounts.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxAccounts=function(){n.go("app.fax.faxAccounts")},u.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(u.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:u.faxAccount.name?u.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){u.trunks=e.rows||[],u.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.faxAccount&&(a=_.find(u.trunks,{id:Number(u.faxAccount.TrunkId)}));for(var i=0;i<u.trunks.length;i++){_.some(t,{resourceId:u.trunks[i].id})?(u.trunks[i].canSelect=!0,n.push(u.trunks[i])):a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,n.push(u.trunks[i]))}u.trunks=n})}else{var n=[],a=null;u.faxAccount&&(a=_.find(u.trunks,{id:Number(u.faxAccount.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,n.push(u.trunks[i]));u.trunks=n}}).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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.faxAccount&&(a=_.find(u.lists,{id:Number(u.faxAccount.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.faxAccount&&(a=_.find(u.lists,{id:Number(u.faxAccount.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.faxAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="faxAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedFaxAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.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"),"")}),b.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"),"")}),b.editstate=function(e,t){n.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:b.crudPermissions})},b.interactionsgoto=function(e,t){n.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.fax.realtime.accounts",{})}},b.agentadddialog=function(e,t){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:b.faxAccounts?b.faxAccounts.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getFaxAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.faxAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="FaxAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditFaxAccount=function(e,t){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:t,faxAccounts:b.faxAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteFaxAccount=S,b.exportSelectedFaxAccounts=function(){var e=angular.copy(b.selectedFaxAccounts);return b.selectedFaxAccounts=[],e},b.deleteSelectedFaxAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+b.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedFaxAccounts.forEach(function(e){S(e)}),b.selectedFaxAccounts=[]})},b.deselectFaxAccounts=function(){b.selectedFaxAccounts=[]},b.selectAllFaxAccounts=function(){b.selectedFaxAccounts=b.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],b.faxAccounts.rows.forEach(function(e){var t=_.find(b.trunks,{id:Number(e.TrunkId)});a.push(t)});for(var i=0;i<b.trunks.length;i++){if(_.some(t,{resourceId:b.trunks[i].id}))b.trunks[i].canSelect=!0,n.push(b.trunks[i]);else _.some(a,{id:b.trunks[i].id})&&(b.trunks[i].canSelect=!1,n.push(b.trunks[i]))}b.trunks=n})}else{var n=[],a=[];b.faxAccounts.rows.forEach(function(e){var t=_.find(b.trunks,{id:Number(e.TrunkId)});a.push(t)});for(var i=0;i<b.trunks.length;i++){_.some(a,{id:b.trunks[i].id})&&(b.trunks[i].canSelect=!1,n.push(b.trunks[i]))}b.trunks=n}}).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){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.faxAccount&&(a=_.find(b.lists,{id:Number(b.faxAccount.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.faxAccount&&(a=_.find(b.lists,{id:Number(b.faxAccount.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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 A=!0,E=1;function y(e){b.faxAccounts=e||{count:0,rows:[]}}function S(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.faxAccounts.rows,{id:e.id}),b.faxAccounts.count-=1,b.faxAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.fax").controller("FaxAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.faxQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("FAX.ALL_TEAMS"),labelSelected:n.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.faxQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="faxQueues",b.listOrder="",b.listOrderAsc=null,b.selectedFaxQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:b.faxQueues?b.faxQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:b.faxQueues?b.faxQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.fax.realtime.queues",{})}},b.success=y,b.getFaxQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.faxQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="FaxQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditFaxQueue=function(e,t){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:t,faxQueues:b.faxQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteFaxQueue=S,b.exportSelectedFaxQueues=function(){var e=angular.copy(b.selectedFaxQueues);return b.selectedFaxQueues=[],e},b.deleteSelectedFaxQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+b.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedFaxQueues.forEach(function(e){S(e)}),b.selectedFaxQueues=[]})},b.deselectFaxQueues=function(){b.selectedFaxQueues=[]},b.selectAllFaxQueues=function(){b.selectedFaxQueues=b.faxQueues.rows};var A=!0,E=1;function y(e){b.faxQueues=e||{count:0,rows:[]}}function S(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.faxQueues.rows,{id:e.id}),b.faxQueues.count-=1,b.faxQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,t){p.rpcFaxAccounts[t]&&_.merge(e,p.rpcFaxAccounts[t])}),_.forIn(p.faxAccounts,function(t,e){var n={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss")};s.faxAccount.getMessages(n).$promise.then(function(e){return e&&(t.in=e.count||0,t.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),n.direction="out",s.faxAccount.getMessages(n).$promise}).then(function(e){e&&(t.out=e.count||0,t.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,t){i.go("app.fax.faxAccounts.edit",{id:t.id,faxAccount:t})},p.order=[],_.forIn(p.faxAccounts,function(e,t){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 t=0;t<e.rows.length;t++)p.order.push(e.rows[t].id)}g()}e.$watch("vm.query.filter",function(e,t){v?n(function(){v=!1}):(t||(h=p.query.page),e!==t&&(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,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.faxQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].FaxQueueId].paused++,g.queues[e[t].rows[n].FaxQueueId].loggedInDb++,g.queues[e[t].rows[n].FaxQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].FaxQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"fax",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.faxQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="FaxQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditFaxQueue=function(e,t){a.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:t,faxQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:t,faxQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.faxQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.FaxQueueId]&&g.queues[e.FaxQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.FaxQueueId]&&g.queues[e.FaxQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.FaxQueueId]&&(g.queues[e.FaxQueueId].loggedInDb+=1,g.queues[e.FaxQueueId].agents[e.UserId]=e.FaxQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.FaxQueueId]&&0<g.queues[e.FaxQueueId].loggedInDb&&(g.queues[e.FaxQueueId].loggedInDb-=1,delete g.queues[e.FaxQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("fax_queue:save",g.onSave),d.on("userFaxQueue:save",g.onSaveMember),d.on("userFaxQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("fax_queue:save"),d.removeAllListeners("userFaxQueue:remove"),d.removeAllListeners("userFaxQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.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,n.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.fax.realtime.agents");break;case 1:n.go("app.fax.realtime.trunks");break;case 2:n.go("app.fax.realtime.queues");break;case 3:n.go("app.fax.realtime.accounts");break;default:n.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,n,t,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,t=0;t<u.trunks.length;t+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[t].id]))&&_.merge(u.trunks[t],_.pick(u.rpcTrunks[e],p))}function v(e,t,n){0<=t&&_.merge(e[t],_.pick(n,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){t.show(t.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,t){l.go("app.tools.trunks.edit",{id:t.id})},u.onSave=function(e){var t=_.findIndex(u.trunks,["id",e.id]),n=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,t,e),v(u.rpcTrunks,n,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,t){h?n(function(){h=!1}):(t||(f=u.query.page),e!==t&&(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,t){this.info=e,this.license=t}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.deskAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.deskAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="deskAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedDeskAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",limit:10,page:1},b.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDeskAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intDeskAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="DeskAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditDeskAccount=function(e,t){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:t,deskAccounts:b.deskAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDeskAccount=S,b.exportSelectedDeskAccounts=function(){var e=angular.copy(b.selectedDeskAccounts);return b.selectedDeskAccounts=[],e},b.deleteSelectedDeskAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+b.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedDeskAccounts.forEach(function(e){S(e)}),b.selectedDeskAccounts=[]})},b.deselectDeskAccounts=function(){b.selectedDeskAccounts=[]},b.selectAllDeskAccounts=function(){b.selectedDeskAccounts=b.deskAccounts.rows};var A=!0,E=1;function y(e){b.deskAccounts=e||{count:0,rows:[]}}function S(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.deskAccounts.rows,{id:e.id}),b.deskAccounts.count-=1,b.deskAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,n,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,t){o.deskAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(t.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intDeskConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"DeskConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.deskConfiguration.id},o.deskConfiguration).$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.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,t){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.freshdeskAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,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,t){o.freshdeskAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(t.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intFreshdeskConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.freshdeskConfiguration.id},o.freshdeskConfiguration).$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.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,t){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.freshdeskAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="freshdeskAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedFreshdeskAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",limit:10,page:1},b.editstate=function(e,t){n.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getFreshdeskAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intFreshdeskAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="FreshdeskAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditFreshdeskAccount=function(e,t){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:t,freshdeskAccounts:b.freshdeskAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteFreshdeskAccount=S,b.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(b.selectedFreshdeskAccounts);return b.selectedFreshdeskAccounts=[],e},b.deleteSelectedFreshdeskAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+b.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedFreshdeskAccounts.forEach(function(e){S(e)}),b.selectedFreshdeskAccounts=[]})},b.deselectFreshdeskAccounts=function(){b.selectedFreshdeskAccounts=[]},b.selectAllFreshdeskAccounts=function(){b.selectedFreshdeskAccounts=b.freshdeskAccounts.rows};var A=!0,E=1;function y(e){b.freshdeskAccounts=e||{count:0,rows:[]}}function S(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.freshdeskAccounts.rows,{id:e.id}),b.freshdeskAccounts.count-=1,b.freshdeskAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("FreshdeskAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.salesforceAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,i,s,e){var o=this;function r(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 l(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 d(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,t){o.salesforceAccount=e,o.crudPermissions=void 0!==t?t:{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.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,t){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(t.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intSalesforceConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"SalesforceConfiguration deleted!",msg:t.name?t.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(){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()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,t){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.salesforceAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="salesforceAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedSalesforceAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",limit:10,page:1},b.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSalesforceAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intSalesforceAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SalesforceAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSalesforceAccount=function(e,t){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:t,salesforceAccounts:b.salesforceAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSalesforceAccount=S,b.exportSelectedSalesforceAccounts=function(){var e=angular.copy(b.selectedSalesforceAccounts);return b.selectedSalesforceAccounts=[],e},b.deleteSelectedSalesforceAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+b.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSalesforceAccounts.forEach(function(e){S(e)}),b.selectedSalesforceAccounts=[]})},b.deselectSalesforceAccounts=function(){b.selectedSalesforceAccounts=[]},b.selectAllSalesforceAccounts=function(){b.selectedSalesforceAccounts=b.salesforceAccounts.rows};var A=!0,E=1;function y(e){b.salesforceAccounts=e||{count:0,rows:[]}}function S(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.salesforceAccounts.rows,{id:e.id}),b.salesforceAccounts.count-=1,b.salesforceAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("SalesforceAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.sugarcrmAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,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,t){o.sugarcrmAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(t.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intSugarcrmConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.sugarcrmConfiguration.id},o.sugarcrmConfiguration).$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,t){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.sugarcrmAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="sugarcrmAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedSugarcrmAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",limit:10,page:1},b.editstate=function(e,t){n.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSugarcrmAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intSugarcrmAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SugarcrmAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSugarcrmAccount=function(e,t){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:t,sugarcrmAccounts:b.sugarcrmAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSugarcrmAccount=S,b.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(b.selectedSugarcrmAccounts);return b.selectedSugarcrmAccounts=[],e},b.deleteSelectedSugarcrmAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+b.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSugarcrmAccounts.forEach(function(e){S(e)}),b.selectedSugarcrmAccounts=[]})},b.deselectSugarcrmAccounts=function(){b.selectedSugarcrmAccounts=[]},b.selectAllSugarcrmAccounts=function(){b.selectedSugarcrmAccounts=b.sugarcrmAccounts.rows};var A=!0,E=1;function y(e){b.sugarcrmAccounts=e||{count:0,rows:[]}}function S(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.sugarcrmAccounts.rows,{id:e.id}),b.sugarcrmAccounts.count-=1,b.sugarcrmAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("SugarcrmAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.vtigerAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,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,t){o.vtigerAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(t.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intVtigerConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"VtigerConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.vtigerConfiguration.id},o.vtigerConfiguration).$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,t){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.vtigerAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="vtigerAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedVtigerAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",limit:10,page:1},b.editstate=function(e,t){n.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVtigerAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intVtigerAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="VtigerAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVtigerAccount=function(e,t){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:t,vtigerAccounts:b.vtigerAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVtigerAccount=S,b.exportSelectedVtigerAccounts=function(){var e=angular.copy(b.selectedVtigerAccounts);return b.selectedVtigerAccounts=[],e},b.deleteSelectedVtigerAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+b.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVtigerAccounts.forEach(function(e){S(e)}),b.selectedVtigerAccounts=[]})},b.deselectVtigerAccounts=function(){b.selectedVtigerAccounts=[]},b.selectAllVtigerAccounts=function(){b.selectedVtigerAccounts=b.vtigerAccounts.rows};var A=!0,E=1;function y(e){b.vtigerAccounts=e||{count:0,rows:[]}}function S(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.vtigerAccounts.rows,{id:e.id}),b.vtigerAccounts.count-=1,b.vtigerAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("VtigerAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.zendeskAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,n,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,t){o.zendeskAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:t,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(t.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intZendeskConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:t.id}),s.success({title:"ZendeskConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.zendeskConfiguration.id},o.zendeskConfiguration).$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.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,t){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.zendeskConfigurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.zendeskAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="zendeskAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedZendeskAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",limit:10,page:1},b.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getZendeskAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intZendeskAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ZendeskAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditZendeskAccount=function(e,t){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:t,zendeskAccounts:b.zendeskAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteZendeskAccount=S,b.exportSelectedZendeskAccounts=function(){var e=angular.copy(b.selectedZendeskAccounts);return b.selectedZendeskAccounts=[],e},b.deleteSelectedZendeskAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+b.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedZendeskAccounts.forEach(function(e){S(e)}),b.selectedZendeskAccounts=[]})},b.deselectZendeskAccounts=function(){b.selectedZendeskAccounts=[]},b.selectAllZendeskAccounts=function(){b.selectedZendeskAccounts=b.zendeskAccounts.rows};var A=!0,E=1;function y(e){b.zendeskAccounts=e||{count:0,rows:[]}}function S(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.zendeskAccounts.rows,{id:e.id}),b.zendeskAccounts.count-=1,b.zendeskAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("ZendeskAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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",serverUrl:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.zohoAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,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,t){o.zohoAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(t.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intZohoConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"ZohoConfiguration deleted!",msg:t.name?t.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(){return i.intSalesforceConfiguration.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,t){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.zohoAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="zohoAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedZohoAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,host,authToken,serverUrl,description",limit:10,page:1},b.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getZohoAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intZohoAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ZohoAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditZohoAccount=function(e,t){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:t,zohoAccounts:b.zohoAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteZohoAccount=S,b.exportSelectedZohoAccounts=function(){var e=angular.copy(b.selectedZohoAccounts);return b.selectedZohoAccounts=[],e},b.deleteSelectedZohoAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+b.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedZohoAccounts.forEach(function(e){S(e)}),b.selectedZohoAccounts=[]})},b.deselectZohoAccounts=function(){b.selectedZohoAccounts=[]},b.selectAllZohoAccounts=function(){b.selectedZohoAccounts=b.zohoAccounts.rows};var A=!0,E=1;function y(e){b.zohoAccounts=e||{count:0,rows:[]}}function S(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.zohoAccounts.rows,{id:e.id}),b.zohoAccounts.count-=1,b.zohoAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("ZohoAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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},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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.projects,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s){var o=this;o.project={},o.localizationMap=s;var r=new Date;r.setHours(0,0,0,0),o.pickerModel={dateStart:r,dateEnd:null,selectedTemplate:"TD"},o.init=function(e){o.project=e,o.getAnswers()},o.getSummary=function(){return a.jscriptyProject.getSummary({id:o.project.id,dateStart:moment(o.pickerModel.dateStart).format("YYYY-MM-DD HH:mm:ss"),dateEnd:moment(o.pickerModel.dateEnd).format("YYYY-MM-DD HH:mm:ss"),nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var t=[e.buffer],n=new Blob(t,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(n)),a.setAttribute("download","jscriptyProjectSummary_"+o.project.id+".csv"),a.click()}else i.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getAnswers=function(){return o.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:o.project.id,sort:"-createdAt,questionId",dateStart:o.pickerModel.dateStart,dateEnd:o.pickerModel.dateEnd,nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){o.answers={};for(var t=0,n=e.count;t<n;t++)e.rows[t].questionId&&(o.hasIdAnswers=!0,o.answers.hasOwnProperty(e.rows[t].questionId)||(o.answers[e.rows[t].questionId]={question:e.rows[t].question,answers:{},sum:0}),""===e.rows[t].answer&&(e.rows[t].answer="NO_ANSWER"),o.answers[e.rows[t].questionId].answers[e.rows[t].answer]?o.answers[e.rows[t].questionId].answers[e.rows[t].answer]+=1:o.answers[e.rows[t].questionId].answers[e.rows[t].answer]=1,o.answers[e.rows[t].questionId].sum+=1)}}).catch(function(e){i.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","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var t=this;t.project={},t.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},t.init=function(e){t.project=e,_.isObjectLike(e.formData)?t.project.formData=e.formData:t.isJsonString(e.formData)?t.project.formData=JSON.parse(e.formData):t.project.formData={}},t.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,t.$on("mwForm.pageEvents.pageCurrentChanged",function(e,t){if(t.currentPage&&o.project.formData&&o.project.formData.pages)for(var n=0,a=o.project.formData.pages.length;n<a;n++)if(t.currentPage.number<n+1&&o.project.formData.pages[n].elements)for(var i=0,s=o.project.formData.pages[n].elements.length;i<s;i++)"question"===o.project.formData.pages[n].elements[i].type&&o.project.formData.pages[n].elements[i].question&&delete o.responseData[o.project.formData.pages[n].elements[i].question.id]})},o.onSubmit=function(e){var t=a.defer(),n=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(n).then(function(){t.resolve(!0)},function(){t.reject()}),t.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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.project={},c.projectSessions={count:0,rows:[]},c.selectedProjectSessions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},c.init=function(e,t){c.project=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.project.id,c.getProjectSessions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getProjectSessions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.jscriptyProject.getSessions(c.query,p).$promise},c.createOrEditProjectSession=function(e,t){s.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:c.project,session:t,sessions:c.projectSessions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.showQuestionsProjectSession=function(e,n){s.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,t){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:n.id})}]},locals:{project:c.project,session:n}})},c.exportSelectedProjectSessions=function(){var e=angular.copy(c.selectedProjectSessions);return c.selectedProjectSessions=[],e},c.deleteProjectSession=g,c.deleteSelectedProjectSessions=function(e){var t=s.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+c.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedProjectSessions.forEach(function(e){g(e)}),c.selectedProjectSessions=[]})};var m=!0,u=1;function p(e){c.projectSessions=e||{count:0,rows:[]}}function g(e){l.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(c.projectSessions.rows,{id:e.id}),c.projectSessions.count-=1,c.projectSessions.rows.length||c.getProjectSessions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getProjectSessions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,t,n,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,t,n,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=t.protocol()+"://"+t.host(),u.project=c||e.params.project||{},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.clonedialog=function(e,t){n.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{project:e,projects:u.projects?u.projects.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoProjects=function(){e.go("app.jscripty.projects")},u.saveProject=function(){r.jscriptyProject.update({id:u.project.id},u.project).$promise.then(function(){l.success({title:"Project updated!",msg:u.project.name?u.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","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.projects=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="projects",b.listOrder="",b.listOrderAsc=null,b.selectedProjects=[],b.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,description,formData",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,t){n.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{project:e,projects:b.projects?b.projects.rows:[],crudPermissions:b.crudPermissions}})},b.sessionsgoto=function(e,t){n.go("app.jscripty.projects.edit",{id:e.id,tab:3})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getProjects=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.jscriptyProject.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Projects",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditProject=function(e,t){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:t,projects:b.projects.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteProject=S,b.exportSelectedProjects=function(){var e=angular.copy(b.selectedProjects);return b.selectedProjects=[],e},b.deleteSelectedProjects=function(e){var t=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+b.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedProjects.forEach(function(e){S(e)}),b.selectedProjects=[]})},b.deselectProjects=function(){b.selectedProjects=[]},b.selectAllProjects=function(){b.selectedProjects=b.projects.rows};var A=!0,E=1;function y(e){b.projects=e||{count:0,rows:[]}}function S(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(b.projects.rows,{id:e.id}),b.projects.count-=1,b.projects.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("JscriptyProjectsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.mailAccount.MailAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mailAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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 t(e,t){if(r.mailAccountApps.rows.length){var n=r.mailAccountApps.rows[t]?r.mailAccountApps.rows[t]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:n,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[t]=e:r.mailAccountApps.rows.splice(t,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,t=[],n=0;n<r.mailAccountApps.rows.length;n++,0){var a=r.mailAccountApps.rows[n],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,t=_.concat(t,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(t,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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:"1"},{option:"Always",value:"0"}],required:!0,param:0},{title:"Text",name:"text",type:"html",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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.mailAccount=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,n).$promise},r.editMailAccountApp=t,r.editInterval=function(e,t){if(r.mailAccountApps.rows.length){var n=r.mailAccountApps.rows[t]?r.mailAccountApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(t,e,n,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(",");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(",");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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("mail")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.mailAccount={},c.mailAccountInteractions={count:0,rows:[]},c.selectedMailAccountInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,UserId,ContactId,MailAccountId,id,Contact.firstName,Owner.name,closedAt,disposition,note,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.mailAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.mailAccount.id,c.getMailAccountInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.mailInteractionDownload=function(s,e,t){return l.mailInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getMailAccountInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.mailAccount.getInteractions(c.query,p).$promise},c.createOrEditMailAccountInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:c.mailAccount,interaction:t,interactions:c.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spymailInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"mail",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedMailAccountInteractions=function(){var e=angular.copy(c.selectedMailAccountInteractions);return c.selectedMailAccountInteractions=[],e},c.deleteMailAccountInteraction=g,c.deleteSelectedMailAccountInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedMailAccountInteractions.forEach(function(e){g(e)}),c.selectedMailAccountInteractions=[]})};var m=!0,u=1;function p(e){c.mailAccountInteractions=e||{count:0,rows:[]}}function g(e){l.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.mailAccountInteractions.rows,{id:e.id}),c.mailAccountInteractions.count-=1,c.mailAccountInteractions.rows.length||c.getMailAccountInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getMailAccountInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.mailAccount={},c.mailAccountMailCannedAnswers={count:0,rows:[]},c.selectedMailAccountMailCannedAnswers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},c.init=function(e,t){c.mailAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.mailAccount.id,c.query.MailAccountId=c.mailAccount.id,c.getMailAccountMailCannedAnswers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getMailAccountMailCannedAnswers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.mailAccount.getAnswers(c.query,p).$promise},c.createOrEditMailAccountMailCannedAnswer=function(e,t){s.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:c.mailAccount,mailCannedAnswer:t,mailCannedAnswers:c.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(c.selectedMailAccountMailCannedAnswers);return c.selectedMailAccountMailCannedAnswers=[],e},c.deleteMailAccountMailCannedAnswer=g,c.deleteSelectedMailAccountMailCannedAnswers=function(e){var t=s.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+c.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),c.selectedMailAccountMailCannedAnswers=[]})};var m=!0,u=1;function p(e){c.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function g(e){l.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(c.mailAccountMailCannedAnswers.rows,{id:e.id}),c.mailAccountMailCannedAnswers.count-=1,c.mailAccountMailCannedAnswers.rows.length||c.getMailAccountMailCannedAnswers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getMailAccountMailCannedAnswers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.mailCannedAnswer.MailAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mailCannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.mailAccount={},c.mailAccountMailDispositions={count:0,rows:[]},c.selectedMailAccountMailDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.mailAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.mailAccount.id,c.query.MailAccountId=c.mailAccount.id,c.getMailAccountMailDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the mailDisposition?").htmlContent("<b>"+(e.name||"mailDisposition")+"</b> will be deleted.").ariaLabel("delete mailDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getMailAccountMailDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.mailAccount.getDispositions(c.query,p).$promise},c.createOrEditMailAccountMailDisposition=function(e,t){s.show({controller:"CreateOrEditMailDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:c.mailAccount,mailDisposition:t,mailDispositions:c.mailAccountMailDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedMailAccountMailDispositions=function(){var e=angular.copy(c.selectedMailAccountMailDispositions);return c.selectedMailAccountMailDispositions=[],e},c.deleteMailAccountMailDisposition=g,c.deleteSelectedMailAccountMailDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected mailDispositions?").htmlContent("<b>"+c.selectedMailAccountMailDispositions.length+" selected</b> will be deleted.").ariaLabel("delete mailDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedMailAccountMailDispositions.forEach(function(e){g(e)}),c.selectedMailAccountMailDispositions=[]})};var m=!0,u=1;function p(e){c.mailAccountMailDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.mailAccountMailDispositions.rows,{id:e.id}),c.mailAccountMailDispositions.count-=1,c.mailAccountMailDispositions.rows.length||c.getMailAccountMailDispositions(),r.success({title:"MailDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getMailAccountMailDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_MAILDISPOSITION",g.mailDisposition=angular.copy(l),g.mailDispositions=r,g.newMailDisposition=!1,g.mailDisposition||(g.mailDisposition={},g.title="MAIL.NEW_MAILDISPOSITION",g.newMailDisposition=!0),t.params.id&&(g.mailDisposition.MailAccountId=t.params.id),g.addNewMailDisposition=function(){g.errors=[],d.disposition.save(g.mailDisposition).$promise.then(function(e){g.mailDispositions.unshift(e.toJSON()),o.success({title:"MailDisposition properly created",msg:g.mailDisposition.name?g.mailDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailDisposition=function(){g.errors=[],d.disposition.update({id:g.mailDisposition.id},g.mailDisposition).$promise.then(function(e){var t=_.find(g.mailDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"MailDisposition properly saved!",msg:g.mailDisposition.name?g.mailDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The mailDisposition will be deleted.").ariaLabel("Delete MailDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.mailDisposition.id}).$promise.then(function(){_.remove(g.mailDispositions,{id:g.mailDisposition.id}),o.success({title:"MailDisposition properly deleted!",msg:(g.mailDisposition.name||"mailDisposition")+" has been deleted!"}),v(g.mailDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailDispositions","mailDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailDispositionDialogController",e)}(),function(){"use strict";function e(n,e,a,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.mailAccount=c||n.params.mailAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=n.params.tab||0,u.gotogoto=function(e,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.mail.realtime.accounts",{})}},u.agentadddialog=function(e,t){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:u.mailAccounts?u.mailAccounts.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailAccounts=function(){n.go("app.mail.mailAccounts")},u.saveMailAccount=function(){r.mailAccount.update({id:u.mailAccount.id},u.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:u.mailAccount.name?u.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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.mailAccount&&(a=_.find(u.lists,{id:Number(u.mailAccount.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.mailAccount&&(a=_.find(u.lists,{id:Number(u.mailAccount.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.mailAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="mailAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedMailAccounts=[],b.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,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b["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"),"")}),b["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"),"")}),b.editstate=function(e,t){n.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:b.crudPermissions})},b.verifysmtpverifysmtp=function(e,t){{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"})}},b.interactionsgoto=function(e,t){n.go("app.mail.mailAccounts.edit",{id:e.id,tab:6})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.mail.realtime.accounts",{})}},b.agentadddialog=function(e,t){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:b.mailAccounts?b.mailAccounts.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getMailAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.mailAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="MailAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMailAccount=function(e,t){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:t,mailAccounts:b.mailAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMailAccount=S,b.exportSelectedMailAccounts=function(){var e=angular.copy(b.selectedMailAccounts);return b.selectedMailAccounts=[],e},b.deleteSelectedMailAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+b.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMailAccounts.forEach(function(e){S(e)}),b.selectedMailAccounts=[]})},b.deselectMailAccounts=function(){b.selectedMailAccounts=[]},b.selectAllMailAccounts=function(){b.selectedMailAccounts=b.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.mailAccount&&(a=_.find(b.lists,{id:Number(b.mailAccount.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.mailAccount&&(a=_.find(b.lists,{id:Number(b.mailAccount.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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 A=!0,E=1;function y(e){b.mailAccounts=e||{count:0,rows:[]}}function S(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(b.mailAccounts.rows,{id:e.id}),b.mailAccounts.count-=1,b.mailAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.mail").controller("MailAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mailQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.startingAllowedItems=angular.copy(l.allowedItems),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MAIL.ALL_TEAMS"),labelSelected:n.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.mailQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="mailQueues",b.listOrder="",b.listOrderAsc=null,b.selectedMailQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:b.mailQueues?b.mailQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:b.mailQueues?b.mailQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.mail.realtime.queues",{})}},b.success=y,b.getMailQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.mailQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="MailQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMailQueue=function(e,t){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:t,mailQueues:b.mailQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMailQueue=S,b.exportSelectedMailQueues=function(){var e=angular.copy(b.selectedMailQueues);return b.selectedMailQueues=[],e},b.deleteSelectedMailQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+b.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMailQueues.forEach(function(e){S(e)}),b.selectedMailQueues=[]})},b.deselectMailQueues=function(){b.selectedMailQueues=[]},b.selectAllMailQueues=function(){b.selectedMailQueues=b.mailQueues.rows};var A=!0,E=1;function y(e){b.mailQueues=e||{count:0,rows:[]}}function S(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.mailQueues.rows,{id:e.id}),b.mailQueues.count-=1,b.mailQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.mail").controller("MailQueuesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mailSubtatuses,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.mailSubtatuses=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="mailSubtatuses",b.listOrder="",b.listOrderAsc=null,b.selectedMailSubstatuses=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:b.mailSubtatuses.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getMailSubstatuses=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.mailSubstatus.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="MailSubstatuses",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMailSubstatus=function(e,t){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:t,mailSubtatuses:b.mailSubtatuses.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMailSubstatus=S,b.exportSelectedMailSubstatuses=function(){var e=angular.copy(b.selectedMailSubstatuses);return b.selectedMailSubstatuses=[],e},b.deleteSelectedMailSubstatuses=function(e){var t=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+b.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMailSubstatuses.forEach(function(e){S(e)}),b.selectedMailSubstatuses=[]})},b.deselectMailSubstatuses=function(){b.selectedMailSubstatuses=[]},b.selectAllMailSubstatuses=function(){b.selectedMailSubstatuses=b.mailSubtatuses.rows};var A=!0,E=1;function y(e){b.mailSubtatuses=e||{count:0,rows:[]}}function S(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(b.mailSubtatuses.rows,{id:e.id}),b.mailSubtatuses.count-=1,b.mailSubtatuses.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,t){p.rpcMailAccounts[t]&&_.merge(e,p.rpcMailAccounts[t])}),_.forIn(p.mailAccounts,function(t,e){var n={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss")};s.mailAccount.getMessages(n).$promise.then(function(e){return e&&(t.in=e.count||0,t.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),n.direction="out",s.mailAccount.getMessages(n).$promise}).then(function(e){e&&(t.out=e.count||0,t.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,t){i.go("app.mail.mailAccounts.edit",{id:t.id,mailAccount:t})},p.verifySmtp=function(e,t){{if(t&&t.id)return s.mailAccount.verifySmtp({id:t.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,t){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 t=0;t<e.rows.length;t++)p.order.push(e.rows[t].id)}g()}e.$watch("vm.query.filter",function(e,t){v?n(function(){v=!1}):(t||(h=p.query.page),e!==t&&(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,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.mailQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].MailQueueId].paused++,g.queues[e[t].rows[n].MailQueueId].loggedInDb++,g.queues[e[t].rows[n].MailQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].MailQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"mail",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.mailQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="MailQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditMailQueue=function(e,t){a.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:t,mailQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:t,mailQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.mailQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.MailQueueId]&&g.queues[e.MailQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.MailQueueId]&&g.queues[e.MailQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.MailQueueId]&&(g.queues[e.MailQueueId].loggedInDb+=1,g.queues[e.MailQueueId].agents[e.UserId]=e.MailQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.MailQueueId]&&0<g.queues[e.MailQueueId].loggedInDb&&(g.queues[e.MailQueueId].loggedInDb-=1,delete g.queues[e.MailQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("mail_queue:save",g.onSave),d.on("userMailQueue:save",g.onSaveMember),d.on("userMailQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("mail_queue:save"),d.removeAllListeners("userMailQueue:remove"),d.removeAllListeners("userMailQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.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,n.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.mail.realtime.agents");break;case 1:n.go("app.mail.realtime.queues");break;case 2:n.go("app.mail.realtime.accounts");break;default:n.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.plugins,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.plugins=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="plugins",b.listOrder="",b.listOrderAsc=null,b.selectedPlugins=[],b.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"name",limit:10,page:1},b.installing=!1,b.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"),"")}),b.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){b.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})});b.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(){b.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){b.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})}},b.editstate=function(e,t){n.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:b.crudPermissions})},b.stopplugin=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){var n;n=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var t=_.find(e.rows,{name:n.scriptName});if(!t)throw new Error("No corresponding process found");m.pm2.update({id:t.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){b.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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")})},b.restartplugin=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){var n;n=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var t=_.find(e.rows,{name:n.scriptName});if(!t)throw new Error("No corresponding process found");m.pm2.update({id:t.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){b.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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")})},b.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},b.uninstallplugin=function(e,t){var n=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){!function(n){"script"===n.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var t=_.find(e.rows,{name:n.scriptName});if(!t)throw new Error("No corresponding process found");m.pm2.delete({id:t.pm_id,name:n.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()})});n.active=!1,m.plugin.update({id:n.id},n).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:n.name?n.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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")})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getPlugins=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.plugin.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Plugins",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditPlugin=function(e,t){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:t,plugins:b.plugins.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deletePlugin=S,b.exportSelectedPlugins=function(){var e=angular.copy(b.selectedPlugins);return b.selectedPlugins=[],e},b.deleteSelectedPlugins=function(e){var t=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+b.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedPlugins.forEach(function(e){S(e)}),b.selectedPlugins=[]})},b.deselectPlugins=function(){b.selectedPlugins=[]},b.selectAllPlugins=function(){b.selectedPlugins=b.plugins.rows},b.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:b.plugins.rows}})};var A=!0,E=1;function y(e){b.plugins=e||{count:0,rows:[]}}function S(n){n.active&&"script"==n.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 t=_.find(e.rows,{name:n.scriptName});t?m.pm2.delete({id:t.pm_id,name:n.scriptName}).$promise:console.log("No '%s' process found",n.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:n.id}).$promise.then(function(){_.remove(b.plugins.rows,{id:n.id}),b.plugins.count-=1,b.plugins.rows.length||b.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,t,n,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 t=["zip"];if(!_.includes(t,e.getExtension()))return n.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(e.size>l)return n.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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result}}})},o.uploadError=function(e,t){o.ngFlow.flow.cancel(),n.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",n.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){t.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.ivrCampaigns,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(g.trunks,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});g.trunks=t})}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||[],g.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",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||[],g.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++){_.some(t,{resourceId:g.projects[i].id})?(g.projects[i].canSelect=!0,n.push(g.projects[i])):a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,n.push(g.projects[i]))}g.projects=n})}else{var n=[],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,n.push(g.projects[i]));g.projects=n}}).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||[],g.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],g.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++){_.some(t,{resourceId:g.interval[i].id})?(g.interval[i].canSelect=!0,n.push(g.interval[i])):a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,n.push(g.interval[i]))}g.interval=n})}else{var n=[],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,n.push(g.interval[i]));g.interval=n}}).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,t,n,o,r,l){var d=this;function c(){return a(function(n,t){return a(function(t,n){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:d.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return d.allowedItems=_.map(t,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 t=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];d.selectedItems=_.map(t,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"),n()}).catch(function(e){t(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=t,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={readOnly:!d.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,t){var n=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.ivrCampaign={},c.ivrCampaignHopperBlacks={count:0,rows:[]},c.selectedIvrCampaignHopperBlacks=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},c.init=function(e,t){c.ivrCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.ivrCampaign.id,c.query.CampaignId=c.ivrCampaign.id,c.getIvrCampaignHopperBlacks()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIvrCampaignHopperBlacks=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.campaign.getHopperBlacks(c.query,p).$promise},c.createOrEditIvrCampaignHopperBlack=function(e,t){s.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:c.ivrCampaign,hopperBlack:t,hopperBlacks:c.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(c.selectedIvrCampaignHopperBlacks);return c.selectedIvrCampaignHopperBlacks=[],e},c.deleteIvrCampaignHopperBlack=g,c.deleteSelectedIvrCampaignHopperBlacks=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+c.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),c.selectedIvrCampaignHopperBlacks=[]})};var m=!0,u=1;function p(e){c.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function g(e){l.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(c.ivrCampaignHopperBlacks.rows,{id:e.id}),c.ivrCampaignHopperBlacks.count-=1,c.ivrCampaignHopperBlacks.rows.length||c.getIvrCampaignHopperBlacks(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIvrCampaignHopperBlacks())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.contacts={},c.ivrCampaign={},c.ivrCampaignHopperFinals={count:0,rows:[]},c.selectedIvrCampaignHopperFinals=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},c.init=function(e,t){c.ivrCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.ivrCampaign.id,c.query.CampaignId=c.ivrCampaign.id,c.getIvrCampaignHopperFinals()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIvrCampaignHopperFinals=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.campaign.getHopperFinals(c.query,p).$promise},c.createOrEditIvrCampaignHopperFinal=function(e,t){s.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:c.ivrCampaign,hopperFinal:t,hopperFinals:c.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(c.selectedIvrCampaignHopperFinals);return c.selectedIvrCampaignHopperFinals=[],e},c.deleteIvrCampaignHopperFinal=g,c.deleteSelectedIvrCampaignHopperFinals=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+c.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),c.selectedIvrCampaignHopperFinals=[]})},c.moveIvrCampaignHopperFinal=v,c.moveContactsIvrCampaignHopperFinal=function(e){l.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:c.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?r.info({title:"Restored Contacts",msg:"0"}):r.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},c.countContactsIvrCampaignHopperFinal=function(e){l.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(c.contacts,e[0])}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},c.moveConfirm=function(e,t){var n=s.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){v(e)},function(){console.log("CANCEL")})},c.moveSelectedIvrCampaignHopperFinals=function(e){var t=s.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");s.show(t).then(function(){c.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),c.selectedIvrCampaignHopperFinals=[]})};var m=!0,u=1;function p(e){c.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function g(e){l.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(c.ivrCampaignHopperFinals.rows,{id:e.id}),c.ivrCampaignHopperFinals.count-=1,c.ivrCampaignHopperFinals.rows.length||c.getIvrCampaignHopperFinals(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.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){l.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){r.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var t,n;"Not Found"===e.data?l.cmHopper.save((t=a,n={},n.phone=t.calleridnum,n.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),n.countbusyretry=0,n.countcongestionretry=0,n.countnoanswerretry=0,n.countglobal=0,n.ContactId=t.ContactId,n.ListId=t.ListId,n.UserId=t.deleted?null:t.UserId,n.VoiceQueueId=t.VoiceQueueId,n.CampaignId=t.CampaignId,n.priority=t.recallme?3:2,n.recallme=!!t.recallme,n)).$promise.then(function(e){var t,n;r.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&l.cmHopperHistory.save(((n={}).calleridnum=(t=a).calleridnum,n.calleridname=t.calleridname,n.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),n.countbusyretry=t.countbusyretry,n.countcongestionretry=t.countcongestionretry,n.countnoanswerretry=t.countnoanswerretry,n.countglobal=t.countglobal,n.ContactId=t.ContactId,n.ListId=t.ListId,n.UserId=d.getCurrentUser().id,n.VoiceQueueId=t.VoiceQueueId,n.CampaignId=t.CampaignId,n.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),n.edited=!0,n.state=25,n.statedesc="Restored",n.campaign=t.campaign,n.campaigntype=t.VoiceQueueId?"queue":"ivr",n))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):r.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIvrCampaignHopperFinals())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.ivrCampaign={},c.ivrCampaignHopperHistories={count:0,rows:[]},c.selectedIvrCampaignHopperHistories=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},c.init=function(e,t){c.ivrCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.ivrCampaign.id,c.query.CampaignId=c.ivrCampaign.id,c.getIvrCampaignHopperHistories()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIvrCampaignHopperHistories=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.campaign.getHopperHistories(c.query,p).$promise},c.createOrEditIvrCampaignHopperHistory=function(e,t){s.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:c.ivrCampaign,hopperHistory:t,hopperHistories:c.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(c.selectedIvrCampaignHopperHistories);return c.selectedIvrCampaignHopperHistories=[],e},c.deleteIvrCampaignHopperHistory=g,c.deleteSelectedIvrCampaignHopperHistories=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+c.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),c.selectedIvrCampaignHopperHistories=[]})};var m=!0,u=1;function p(e){c.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function g(e){l.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(c.ivrCampaignHopperHistories.rows,{id:e.id}),c.ivrCampaignHopperHistories.count-=1,c.ivrCampaignHopperHistories.rows.length||c.getIvrCampaignHopperHistories(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIvrCampaignHopperHistories())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.ivrCampaign={},c.ivrCampaignHoppers={count:0,rows:[]},c.selectedIvrCampaignHoppers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},c.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"),"")}),c.init=function(e,t){c.ivrCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.ivrCampaign.id,c.query.CampaignId=c.ivrCampaign.id,c.getIvrCampaignHoppers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIvrCampaignHoppers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.campaign.getHoppers(c.query,p).$promise},c.createOrEditIvrCampaignHopper=function(e,t){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:c.ivrCampaign,hopper:t,hoppers:c.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(c.selectedIvrCampaignHoppers);return c.selectedIvrCampaignHoppers=[],e},c.deleteIvrCampaignHopper=g,c.deleteSelectedIvrCampaignHoppers=function(e){var t=s.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+c.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),c.selectedIvrCampaignHoppers=[]})},d.hasRole("admin")?l.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){c.agents=e.rows||[],c.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){c.agents=e.rows||[],c.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(c.agents,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});c.agents=t})}else c.agents=[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.ivrCampaignHoppers=e||{count:0,rows:[]}}function g(e){l.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(c.ivrCampaignHoppers.rows,{id:e.id}),c.ivrCampaignHoppers.count-=1,c.ivrCampaignHoppers.rows.length||c.getIvrCampaignHoppers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIvrCampaignHoppers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.hopper.CampaignId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 n,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){n=_.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:n,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 t=_.find(g.hoppers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[],g.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(g.agents,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});g.agents=t})}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(n,a){var i=this;i.ivrCampaign={},i.init=function(t){i.ivrCampaign=t,n.cmHopper.get({limit:0,CampaignId:t.id}).$promise.then(function(e){return i.total=e.count||0,n.cmHopper.get({limit:0,CampaignId:t.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,n.cmHopperFinal.get({limit:0,CampaignId:t.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,t,n,o,r,l){var d=this;function c(){return a(function(n,t){return a(function(t,n){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:d.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return d.allowedItems=_.map(t,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 t=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];d.selectedItems=_.map(t,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"),n()}).catch(function(e){t(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=t,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={readOnly:!d.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,t){var n=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,a,i,s,n,o,r){var l=this;function d(){t.hide()}function c(e,t){var n=t.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:n}).$promise.then(function(){return i.campaign.addLists({id:e,ids:n,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+t.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=n||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,t){return-1<t.indexOf(e)},l.toggle=function(e,t){var n=t.indexOf(e);-1<n?t.splice(n,1):t.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,t){for(var n=0;n<l.selected.length;n+=1)c(s.id,l.selected[n]);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(n,e,i,s,a,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||n.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=n.params.tab||0,u.clonedialog=function(e,t){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,t){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,t){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(t,n){r.campaign.getLists({id:t.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(n).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,t,n;e=u.ivrCampaign.id,t=a.rows[0],n=t.id,r.campaign.removeLists({id:e,ids:n}).$promise.then(function(){return r.campaign.addLists({id:e,ids:n,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+t.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:n,clickOutsideToClose:!1,locals:{ivrCampaign:t,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,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){n.go("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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(u.trunks,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});u.trunks=t})}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||[],u.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",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||[],u.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++){_.some(t,{resourceId:u.projects[i].id})?(u.projects[i].canSelect=!0,n.push(u.projects[i])):a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,n.push(u.projects[i]))}u.projects=n})}else{var n=[],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,n.push(u.projects[i]));u.projects=n}}).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||[],u.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],u.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++){_.some(t,{resourceId:u.interval[i].id})?(u.interval[i].canSelect=!0,n.push(u.interval[i])):a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,n.push(u.interval[i]))}u.interval=n})}else{var n=[],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,n.push(u.interval[i]));u.interval=n}}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.ivrCampaigns=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="ivrCampaigns",b.listOrder="",b.listOrderAsc=null,b.selectedIvrCampaigns=[],b.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,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:b.ivrCampaigns?b.ivrCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.listadddialog=function(e,t){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:b.ivrCampaigns?b.ivrCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.blacklistadddialog=function(e,t){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:b.ivrCampaigns?b.ivrCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.motiondialer.realtime.ivr_campaigns",{})}},b.success=y,b.getIvrCampaigns=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.campaign.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="IvrCampaigns",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditIvrCampaign=function(e,t){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:t,ivrCampaigns:b.ivrCampaigns.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteIvrCampaign=S,b.exportSelectedIvrCampaigns=function(){var e=angular.copy(b.selectedIvrCampaigns);return b.selectedIvrCampaigns=[],e},b.deleteSelectedIvrCampaigns=function(e){var t=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+b.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedIvrCampaigns.forEach(function(e){S(e)}),b.selectedIvrCampaigns=[]})},b.deselectIvrCampaigns=function(){b.selectedIvrCampaigns=[]},b.selectAllIvrCampaigns=function(){b.selectedIvrCampaigns=b.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(b.trunks,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});b.trunks=t})}else b.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){b.projects=e.rows||[],b.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.projects=e.rows||[],b.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],b.ivrCampaigns.rows.forEach(function(e){var t=_.find(b.projects,{id:Number(e.SquareProjectId)});a.push(t)});for(var i=0;i<b.projects.length;i++){if(_.some(t,{resourceId:b.projects[i].id}))b.projects[i].canSelect=!0,n.push(b.projects[i]);else _.some(a,{id:b.projects[i].id})&&(b.projects[i].canSelect=!1,n.push(b.projects[i]))}b.projects=n})}else{var n=[],a=[];b.ivrCampaigns.rows.forEach(function(e){var t=_.find(b.projects,{id:Number(e.SquareProjectId)});a.push(t)});for(var i=0;i<b.projects.length;i++){_.some(a,{id:b.projects[i].id})&&(b.projects[i].canSelect=!1,n.push(b.projects[i]))}b.projects=n}}).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){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.ivrCampaign&&(a=_.find(b.interval,{id:Number(b.ivrCampaign.IntervalId)}));for(var i=0;i<b.interval.length;i++){_.some(t,{resourceId:b.interval[i].id})?(b.interval[i].canSelect=!0,n.push(b.interval[i])):a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]))}b.interval=n})}else{var n=[],a=null;b.ivrCampaign&&(a=_.find(b.interval,{id:Number(b.ivrCampaign.IntervalId)}));for(var i=0;i<b.interval.length;i++)a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]));b.interval=n}}).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 A=!0,E=1;function y(e){b.ivrCampaigns=e||{count:0,rows:[]}}function S(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(b.ivrCampaigns.rows,{id:e.id}),b.ivrCampaigns.count-=1,b.ivrCampaigns.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.motiondialer").controller("IvrCampaignsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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},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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.queueCampaigns,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++){_.some(t,{resourceId:g.trunks[i].id})?(g.trunks[i].canSelect=!0,n.push(g.trunks[i])):a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,n.push(g.trunks[i]))}g.trunks=n})}else{var n=[],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,n.push(g.trunks[i]));g.trunks=n}}).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||[],g.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],g.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++){_.some(t,{resourceId:g.interval[i].id})?(g.interval[i].canSelect=!0,n.push(g.interval[i])):a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,n.push(g.interval[i]))}g.interval=n})}else{var n=[],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,n.push(g.interval[i]));g.interval=n}}).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,t,n,i,s,o,r){var c=this;function m(){return l(function(n,t){return l(function(t,n){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=t,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(n,t){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});return(n=e,l(function(e,t){_.isEmpty(n)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else{for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!i,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,t){t?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var n=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r,l){var d=this;function c(){return a(function(n,t){return a(function(t,n){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:d.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return d.allowedItems=_.map(t,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 t=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];d.selectedItems=_.map(t,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"),n()}).catch(function(e){t(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=t,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={readOnly:!d.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,t){var n=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.queueCampaign={},c.queueCampaignHopperBlacks={count:0,rows:[]},c.selectedQueueCampaignHopperBlacks=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},c.init=function(e,t){c.queueCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.queueCampaign.id,c.query.VoiceQueueId=c.queueCampaign.id,c.getQueueCampaignHopperBlacks()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getQueueCampaignHopperBlacks=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceQueue.getHopperBlacks(c.query,p).$promise},c.createOrEditQueueCampaignHopperBlack=function(e,t){s.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:c.queueCampaign,hopperBlack:t,hopperBlacks:c.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(c.selectedQueueCampaignHopperBlacks);return c.selectedQueueCampaignHopperBlacks=[],e},c.deleteQueueCampaignHopperBlack=g,c.deleteSelectedQueueCampaignHopperBlacks=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+c.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),c.selectedQueueCampaignHopperBlacks=[]})};var m=!0,u=1;function p(e){c.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function g(e){l.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(c.queueCampaignHopperBlacks.rows,{id:e.id}),c.queueCampaignHopperBlacks.count-=1,c.queueCampaignHopperBlacks.rows.length||c.getQueueCampaignHopperBlacks(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getQueueCampaignHopperBlacks())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.contacts={},c.queueCampaign={},c.queueCampaignHopperFinals={count:0,rows:[]},c.selectedQueueCampaignHopperFinals=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},c.init=function(e,t){c.queueCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.queueCampaign.id,c.query.VoiceQueueId=c.queueCampaign.id,c.getQueueCampaignHopperFinals()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getQueueCampaignHopperFinals=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceQueue.getHopperFinals(c.query,p).$promise},c.createOrEditQueueCampaignHopperFinal=function(e,t){s.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:c.queueCampaign,hopperFinal:t,hopperFinals:c.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(c.selectedQueueCampaignHopperFinals);return c.selectedQueueCampaignHopperFinals=[],e},c.deleteQueueCampaignHopperFinal=g,c.deleteSelectedQueueCampaignHopperFinals=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+c.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),c.selectedQueueCampaignHopperFinals=[]})},c.moveQueueCampaignHopperFinal=v,c.moveContactsQueueCampaignHopperFinal=function(e){l.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:c.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?r.info({title:"Restored Contacts",msg:"0"}):r.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},c.countContactsQueueCampaignHopperFinal=function(e){l.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(c.contacts,e[0])}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},c.moveConfirm=function(e,t){var n=s.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){v(e)},function(){console.log("CANCEL")})},c.moveSelectedQueueCampaignHopperFinals=function(e){var t=s.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");s.show(t).then(function(){c.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),c.selectedQueueCampaignHopperFinals=[]})};var m=!0,u=1;function p(e){c.queueCampaignHopperFinals=e||{count:0,rows:[]}}function g(e){l.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(c.queueCampaignHopperFinals.rows,{id:e.id}),c.queueCampaignHopperFinals.count-=1,c.queueCampaignHopperFinals.rows.length||c.getQueueCampaignHopperFinals(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.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){l.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){r.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var t,n;"Not Found"===e.data?l.cmHopper.save((t=a,n={},n.phone=t.calleridnum,n.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),n.countbusyretry=0,n.countcongestionretry=0,n.countnoanswerretry=0,n.countglobal=0,n.ContactId=t.ContactId,n.ListId=t.ListId,n.UserId=t.deleted?null:t.UserId,n.VoiceQueueId=t.VoiceQueueId,n.CampaignId=t.CampaignId,n.priority=t.recallme?3:2,n.recallme=!!t.recallme,n)).$promise.then(function(e){var t,n;r.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&l.cmHopperHistory.save(((n={}).calleridnum=(t=a).calleridnum,n.calleridname=t.calleridname,n.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),n.countbusyretry=t.countbusyretry,n.countcongestionretry=t.countcongestionretry,n.countnoanswerretry=t.countnoanswerretry,n.countglobal=t.countglobal,n.ContactId=t.ContactId,n.ListId=t.ListId,n.UserId=d.getCurrentUser().id,n.VoiceQueueId=t.VoiceQueueId,n.CampaignId=t.CampaignId,n.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),n.edited=!0,n.state=25,n.statedesc="Restored",n.campaign=t.campaign,n.campaigntype=t.VoiceQueueId?"queue":"ivr",n))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):r.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getQueueCampaignHopperFinals())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.queueCampaign={},c.queueCampaignHopperHistories={count:0,rows:[]},c.selectedQueueCampaignHopperHistories=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},c.init=function(e,t){c.queueCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.queueCampaign.id,c.query.VoiceQueueId=c.queueCampaign.id,c.getQueueCampaignHopperHistories()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getQueueCampaignHopperHistories=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceQueue.getHopperHistories(c.query,p).$promise},c.createOrEditQueueCampaignHopperHistory=function(e,t){s.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:c.queueCampaign,hopperHistory:t,hopperHistories:c.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(c.selectedQueueCampaignHopperHistories);return c.selectedQueueCampaignHopperHistories=[],e},c.deleteQueueCampaignHopperHistory=g,c.deleteSelectedQueueCampaignHopperHistories=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+c.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),c.selectedQueueCampaignHopperHistories=[]})};var m=!0,u=1;function p(e){c.queueCampaignHopperHistories=e||{count:0,rows:[]}}function g(e){l.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(c.queueCampaignHopperHistories.rows,{id:e.id}),c.queueCampaignHopperHistories.count-=1,c.queueCampaignHopperHistories.rows.length||c.getQueueCampaignHopperHistories(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getQueueCampaignHopperHistories())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.queueCampaign={},c.queueCampaignHoppers={count:0,rows:[]},c.selectedQueueCampaignHoppers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},c.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"),"")}),c.init=function(e,t){c.queueCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.queueCampaign.id,c.query.VoiceQueueId=c.queueCampaign.id,c.getQueueCampaignHoppers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getQueueCampaignHoppers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceQueue.getHoppers(c.query,p).$promise},c.createOrEditQueueCampaignHopper=function(e,t){s.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:c.queueCampaign,hopper:t,hoppers:c.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(c.selectedQueueCampaignHoppers);return c.selectedQueueCampaignHoppers=[],e},c.deleteQueueCampaignHopper=g,c.deleteSelectedQueueCampaignHoppers=function(e){var t=s.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+c.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),c.selectedQueueCampaignHoppers=[]})},d.hasRole("admin")?l.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){c.agents=e.rows||[],c.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){c.agents=e.rows||[],c.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.queueCampaign&&(a=_.find(c.agents,{id:Number(c.queueCampaign.UserId)}));for(var i=0;i<c.agents.length;i++){_.some(t,{resourceId:c.agents[i].id})?(c.agents[i].canSelect=!0,n.push(c.agents[i])):a&&c.agents[i].id===a.id&&(c.agents[i].canSelect=!1,n.push(c.agents[i]))}c.agents=n})}else{var n=[],a=null;c.queueCampaign&&(a=_.find(c.agents,{id:Number(c.queueCampaign.UserId)}));for(var i=0;i<c.agents.length;i++)a&&c.agents[i].id===a.id&&(c.agents[i].canSelect=!1,n.push(c.agents[i]));c.agents=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.queueCampaignHoppers=e||{count:0,rows:[]}}function g(e){l.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(c.queueCampaignHoppers.rows,{id:e.id}),c.queueCampaignHoppers.count-=1,c.queueCampaignHoppers.rows.length||c.getQueueCampaignHoppers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getQueueCampaignHoppers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.hopper.VoiceQueueId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 n,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){n=_.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:n,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 t=_.find(g.hoppers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[],g.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++){_.some(t,{resourceId:g.agents[i].id})?(g.agents[i].canSelect=!0,n.push(g.agents[i])):a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,n.push(g.agents[i]))}g.agents=n})}else{var n=[],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,n.push(g.agents[i]));g.agents=n}}).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(n,a){var i=this;i.queueCampaign={},i.init=function(t){i.queueCampaign=t,n.cmHopper.get({limit:0,VoiceQueueId:t.id}).$promise.then(function(e){return i.total=e.count||0,n.cmHopper.get({limit:0,VoiceQueueId:t.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,n.cmHopperFinal.get({limit:0,VoiceQueueId:t.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,t,n,o,r,l){var d=this;function c(){return a(function(n,t){return a(function(t,n){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:d.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return d.allowedItems=_.map(t,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 t=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];d.selectedItems=_.map(t,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"),n()}).catch(function(e){t(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=t,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={readOnly:!d.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,t){var n=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,a,i,s,n,o,r){var l=this;function d(){t.hide()}function c(e,t){var n=t.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:n}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:n,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+t.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=n||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,t){return-1<t.indexOf(e)},l.toggle=function(e,t){var n=t.indexOf(e);-1<n?t.splice(n,1):t.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,t){for(var n=0;n<l.selected.length;n+=1)c(s.id,l.selected[n]);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,l,a,d,t,n,i,s){var c=this;function o(){return l(function(n,t){return l(function(t,n){return d.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],i.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,function(e){return _.find(c.items,{id:i.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.items.forEach(function(e){var t=_.find(c.allowedItems,{id:e.id});i.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){return d.voiceQueue.getTeams({id:c.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){return _.find(c.items,{id:e.id})}),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=i.getCurrentUser(),c.queueCampaign=t,c.crudPermissions=s,c.penalty=0,c.items=[],c.allowedItems=[],c.selectedItems=[],c.addedItems=[],c.removedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,t){t?c.removedItems=_.unionBy(e,c.removedItems,"id"):(e.forEach(function(e){e.penalty="penalty "+c.penalty}),c.addedItems=_.unionBy(e,c.addedItems,"id")),c.pendingChanges=!0}},c.onInit=function(){return i.hasRole("admin")?o().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(function(n,t){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(e)})}).then(function(e){return c.section=e,o()}).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()})})},c.saveTeams=function(){var e=c.removedItems,t=c.addedItems;return(n=e,l(function(e,t){_.isEmpty(n)?e():d.voiceQueue.removeTeams({id:c.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else{for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.voiceQueue.addTeams({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty ")}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(e)})}});var r}).then(function(){c.pendingChanges=!1,c.addedItems=[],c.removedItems=[],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 n},c.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(n,e,i,s,a,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||n.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=n.params.tab||0,u.clonedialog=function(e,t){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,t){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,t){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,t){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(t,n){r.voiceQueue.getLists({id:t.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(n).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,t,n;e=u.queueCampaign.id,t=a.rows[0],n=t.id,r.voiceQueue.removeLists({id:e,ids:n}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:n,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+t.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:n,clickOutsideToClose:!1,locals:{queueCampaign:t,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,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){n.go("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||[],u.musiconholds.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",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||[],u.musiconholds.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.queueCampaign&&(a=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold}));for(var i=0;i<u.musiconholds.length;i++){_.some(t,{resourceId:u.musiconholds[i].id})?(u.musiconholds[i].canSelect=!0,n.push(u.musiconholds[i])):a&&u.musiconholds[i].id===a.id&&(u.musiconholds[i].canSelect=!1,n.push(u.musiconholds[i]))}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[],u.musiconholds.forEach(function(e){e.canSelect=!0})})}).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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++){_.some(t,{resourceId:u.trunks[i].id})?(u.trunks[i].canSelect=!0,n.push(u.trunks[i])):a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,n.push(u.trunks[i]))}u.trunks=n})}else{var n=[],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,n.push(u.trunks[i]));u.trunks=n}}).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||[],u.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",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||[],u.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++){_.some(t,{resourceId:u.projects[i].id})?(u.projects[i].canSelect=!0,n.push(u.projects[i])):a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,n.push(u.projects[i]))}u.projects=n})}else{var n=[],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,n.push(u.projects[i]));u.projects=n}}).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||[],u.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],u.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++){_.some(t,{resourceId:u.interval[i].id})?(u.interval[i].canSelect=!0,n.push(u.interval[i])):a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,n.push(u.interval[i]))}u.interval=n})}else{var n=[],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,n.push(u.interval[i]));u.interval=n}}).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","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.queueCampaigns=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="queueCampaigns",b.listOrder="",b.listOrderAsc=null,b.selectedQueueCampaigns=[],b.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,description",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},b.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"),"")}),b.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.editstate=function(e,t){n.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.listadddialog=function(e,t){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.blacklistadddialog=function(e,t){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.teamadddialog=function(e,t){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.motiondialer.realtime.queues",{})}},b.success=y,b.getQueueCampaigns=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="QueueCampaigns",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditQueueCampaign=function(e,t){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:t,queueCampaigns:b.queueCampaigns.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteQueueCampaign=S,b.exportSelectedQueueCampaigns=function(){var e=angular.copy(b.selectedQueueCampaigns);return b.selectedQueueCampaigns=[],e},b.deleteSelectedQueueCampaigns=function(e){var t=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+b.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedQueueCampaigns.forEach(function(e){S(e)}),b.selectedQueueCampaigns=[]})},b.deselectQueueCampaigns=function(){b.selectedQueueCampaigns=[]},b.selectAllQueueCampaigns=function(){b.selectedQueueCampaigns=b.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],b.queueCampaigns.rows.forEach(function(e){var t=_.find(b.trunks,{id:Number(e.TrunkId)});a.push(t)});for(var i=0;i<b.trunks.length;i++){if(_.some(t,{resourceId:b.trunks[i].id}))b.trunks[i].canSelect=!0,n.push(b.trunks[i]);else _.some(a,{id:b.trunks[i].id})&&(b.trunks[i].canSelect=!1,n.push(b.trunks[i]))}b.trunks=n})}else{var n=[],a=[];b.queueCampaigns.rows.forEach(function(e){var t=_.find(b.trunks,{id:Number(e.TrunkId)});a.push(t)});for(var i=0;i<b.trunks.length;i++){_.some(a,{id:b.trunks[i].id})&&(b.trunks[i].canSelect=!1,n.push(b.trunks[i]))}b.trunks=n}}).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){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.queueCampaign&&(a=_.find(b.interval,{id:Number(b.queueCampaign.IntervalId)}));for(var i=0;i<b.interval.length;i++){_.some(t,{resourceId:b.interval[i].id})?(b.interval[i].canSelect=!0,n.push(b.interval[i])):a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]))}b.interval=n})}else{var n=[],a=null;b.queueCampaign&&(a=_.find(b.interval,{id:Number(b.queueCampaign.IntervalId)}));for(var i=0;i<b.interval.length;i++)a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]));b.interval=n}}).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 A=!0,E=1;function y(e){b.queueCampaigns=e||{count:0,rows:[]}}function S(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.queueCampaigns.rows,{id:e.id}),b.queueCampaigns.count-=1,b.queueCampaigns.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=!0;function f(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.contacts:"+v.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(v.query=_.merge(e.query,_.omit(v.query,["sort","limit","page"])),v.query=_.omit(v.query,"filter")),d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queues=e||{count:0,rows:[]},v.queuesMap=_.mapValues(_.keyBy(v.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){v.getContacts()}):o.userProfile.getResources({id:v.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){v.queues=e||{count:0,rows:[]},v.queuesMap=_.mapValues(_.keyBy(v.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){v.getContacts()})}function b(e){v.contacts=e||{count:0,rows:[]},h=!1,v.refresh=!0}v.showTooltip=!1,v.refresh=!0,v.disable=[],v.agents=p||[],v.currentUser=d.getCurrentUser(),v.localizationMap=u,v.pickerModel={dateStart:null,dateEnd:null},v.queues={},v.contacts={count:0,rows:[]},v.dispositions=g,v.userProfile=r,v.userProfileSection=l&&1==l.count?l.rows[0]:null,v.crudPermissions=d.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},v.clearAll=function(){v.query.dateStart=void 0,v.query.dateEnd=void 0,v.pickerModel={dateStart:null,dateEnd:null},v.getContacts()},v.getContacts=function(){v.refresh=!1,v.query.dateStart=void 0,v.query.dateEnd=void 0,v.pickerModel.dateStart&&!h&&(v.query.dateStart=v.pickerModel.dateStart,v.query.dateEnd=v.pickerModel.dateEnd);v.query.queue=v.query.queue,v.query.offset=(v.query.page-1)*v.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.contacts:"+v.currentUser.id,JSON.stringify({query:_.omit(v.query,"queue")})),v.promise=o.voiceQueueReport.getVoiceQueuesReport(v.query,b).$promise},v.refreshContacts=function(){v.showTooltip=!1,v.getContacts()},v.onInit=f,v.assignedA=function(e,t){e&&(v.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:t?t.name:null,assigned:!!t}).$promise.catch(function(e){console.log(e)}).finally(function(){v.disable[e.id]=!1}))},v.disposed=function(e,t){e&&o.voiceQueueReport.update({id:e.id,disposition:t||null}).$promise.catch(function(e){console.log(e)})},v.onSavevoiceQueueReport=function(e){e&&v.queuesMap&&"outbound"===e.type&&v.queuesMap[e.queue]&&(v.showTooltip=!0)},v.onUpdatevoiceQueueReport=function(e){if(e){var t=_.findIndex(v.contacts.rows,["id",e.id]);0<=t&&_.merge(v.contacts.rows[t],e)}},c.onWithoutApply("voiceQueueReport:save",v.onSavevoiceQueueReport),c.on("voiceQueueReport:update",v.onUpdatevoiceQueueReport),f();var A=!0,E=1;e.$watch("vm.query.filter",function(e,t){A?n(function(){A=!1}):(t||(E=v.query.page),e!==t&&(v.query.page=1),e||(v.query.page=E),v.getContacts())}),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","dateFilterLocalizationFactory","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,i,t,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,t){u.rpcCampaigns[t]&&_.merge(e,_.pick(u.rpcCampaigns[t],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,t){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:t,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=t(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,t){v?n(function(){v=!1}):(t||(h=u.query.page),e!==t&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&t.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,t,a,n,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.agents=n||{count:0,rows:[]},p.queues=i?_.keyBy(i.rows?i.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=s?_.keyBy(s.rows?_.filter(s.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.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,t){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[t]=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(t){return o.rpc.getVoiceQueuesChannelHangup({uniqueid:t}).$promise.then(function(e){d.success({title:"Channel "+t+" 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(t,e,n){return o.rpc.getVoiceQueuesChannelRedirect({uniqueid:t,exten:e,context:n}).$promise.then(function(e){d.success({title:"Channel "+t+" 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,t){var n=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(n).then(function(e){return o.rpc.getVoiceQueuesChannelRedirect({uniqueid:t,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+t+" properly redirect!",msg:e.message||""})}).catch(function(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,n,t,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,t){c.rpcQueues[t]&&_.merge(e,_.pick(c.rpcQueues[t],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="MotionDialerQueues",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=t(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,t){p?n(function(){p=!1}):(t||(g=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&t.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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.voiceQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].VoiceQueueId].paused++,g.queues[e[t].rows[n].VoiceQueueId].loggedInDb++,g.queues[e[t].rows[n].VoiceQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].VoiceQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"outbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"voice",type:"outbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.voiceQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="MotionDialerQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditMotionDialerQueue=function(e,t){a.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:t,queueCampaigns:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:t,queueCampaigns:g.queues?g.queues.rows:[],realtime:!0,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.voiceQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.MotionDialerQueueId]&&g.queues[e.MotionDialerQueueId].loggedInDb++},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.VoiceQueueId]&&(g.queues[e.VoiceQueueId].loggedInDb+=1,g.queues[e.VoiceQueueId].agents[e.UserId]=e.VoiceQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.VoiceQueueId]&&0<g.queues[e.VoiceQueueId].loggedInDb&&(g.queues[e.VoiceQueueId].loggedInDb-=1,delete g.queues[e.VoiceQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.onWithoutApply("voice_queue:save",g.onSave),g.interval=s(function(){},999),d.on("userVoiceQueueRt:save",g.onSaveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("voice_queue:save"),g.interval&&s.cancel(g.interval),d.removeAllListeners("userVoiceQueueRt:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.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,n.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.motiondialer.realtime.agents");break;case 1:n.go("app.motiondialer.realtime.queues");break;case 2:n.go("app.motiondialer.realtime.queue_calls");break;case 3:n.go("app.motiondialer.realtime.abandonedcalls");break;case 4:n.go("app.motiondialer.realtime.queue_params");break;case 5:n.go("app.motiondialer.realtime.ivr_campaigns");break;default:n.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.openchannelAccount.OpenchannelAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.openchannelAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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 t(e,t){if(r.openchannelAccountApps.rows.length){var n=r.openchannelAccountApps.rows[t]?r.openchannelAccountApps.rows[t]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:n,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[t]=e:r.openchannelAccountApps.rows.splice(t,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,t=[],n=0;n<r.openchannelAccountApps.rows.length;n++,0){var a=r.openchannelAccountApps.rows[n],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,t=_.concat(t,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(t,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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:"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:"1"},{option:"Always",value:"0"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",maxlength:255,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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.openchannelAccount=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,n).$promise},r.editOpenchannelAccountApp=t,r.editInterval=function(e,t){if(r.openchannelAccountApps.rows.length){var n=r.openchannelAccountApps.rows[t]?r.openchannelAccountApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(t,e,n,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(",");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(",");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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("openChannel")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.openchannelAccount={},c.openchannelAccountInteractions={count:0,rows:[]},c.selectedOpenchannelAccountInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,Contact.firstName,Owner.name,closedAt,disposition,note,UserId,ContactId,OpenchannelAccountId,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.openchannelAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.openchannelAccount.id,c.getOpenchannelAccountInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.openchannelInteractionDownload=function(s,e,t){return l.openchannelInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getOpenchannelAccountInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.openchannelAccount.getInteractions(c.query,p).$promise},c.createOrEditOpenchannelAccountInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:c.openchannelAccount,interaction:t,interactions:c.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spyopenchannelInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"openchannel",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(c.selectedOpenchannelAccountInteractions);return c.selectedOpenchannelAccountInteractions=[],e},c.deleteOpenchannelAccountInteraction=g,c.deleteSelectedOpenchannelAccountInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),c.selectedOpenchannelAccountInteractions=[]})};var m=!0,u=1;function p(e){c.openchannelAccountInteractions=e||{count:0,rows:[]}}function g(e){l.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.openchannelAccountInteractions.rows,{id:e.id}),c.openchannelAccountInteractions.count-=1,c.openchannelAccountInteractions.rows.length||c.getOpenchannelAccountInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getOpenchannelAccountInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.openchannelAccount={},c.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},c.selectedOpenchannelAccountOpenchannelCannedAnswers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},c.init=function(e,t){c.openchannelAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.openchannelAccount.id,c.query.OpenchannelAccountId=c.openchannelAccount.id,c.getOpenchannelAccountOpenchannelCannedAnswers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getOpenchannelAccountOpenchannelCannedAnswers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.openchannelAccount.getAnswers(c.query,p).$promise},c.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,t){s.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:c.openchannelAccount,openchannelCannedAnswer:t,openchannelCannedAnswers:c.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(c.selectedOpenchannelAccountOpenchannelCannedAnswers);return c.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},c.deleteOpenchannelAccountOpenchannelCannedAnswer=g,c.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var t=s.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+c.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),c.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})};var m=!0,u=1;function p(e){c.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function g(e){l.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(c.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),c.openchannelAccountOpenchannelCannedAnswers.count-=1,c.openchannelAccountOpenchannelCannedAnswers.rows.length||c.getOpenchannelAccountOpenchannelCannedAnswers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getOpenchannelAccountOpenchannelCannedAnswers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.openchannelCannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.openchannelAccount={},c.openchannelAccountOpenchannelDispositions={count:0,rows:[]},c.selectedOpenchannelAccountOpenchannelDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.openchannelAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.openchannelAccount.id,c.query.OpenchannelAccountId=c.openchannelAccount.id,c.getOpenchannelAccountOpenchannelDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the openchannelDisposition?").htmlContent("<b>"+(e.name||"openchannelDisposition")+"</b> will be deleted.").ariaLabel("delete openchannelDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getOpenchannelAccountOpenchannelDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.openchannelAccount.getDispositions(c.query,p).$promise},c.createOrEditOpenchannelAccountOpenchannelDisposition=function(e,t){s.show({controller:"CreateOrEditOpenchannelDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:c.openchannelAccount,openchannelDisposition:t,openchannelDispositions:c.openchannelAccountOpenchannelDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedOpenchannelAccountOpenchannelDispositions=function(){var e=angular.copy(c.selectedOpenchannelAccountOpenchannelDispositions);return c.selectedOpenchannelAccountOpenchannelDispositions=[],e},c.deleteOpenchannelAccountOpenchannelDisposition=g,c.deleteSelectedOpenchannelAccountOpenchannelDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected openchannelDispositions?").htmlContent("<b>"+c.selectedOpenchannelAccountOpenchannelDispositions.length+" selected</b> will be deleted.").ariaLabel("delete openchannelDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedOpenchannelAccountOpenchannelDispositions.forEach(function(e){g(e)}),c.selectedOpenchannelAccountOpenchannelDispositions=[]})};var m=!0,u=1;function p(e){c.openchannelAccountOpenchannelDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.openchannelAccountOpenchannelDispositions.rows,{id:e.id}),c.openchannelAccountOpenchannelDispositions.count-=1,c.openchannelAccountOpenchannelDispositions.rows.length||c.getOpenchannelAccountOpenchannelDispositions(),r.success({title:"OpenchannelDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getOpenchannelAccountOpenchannelDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_OPENCHANNELDISPOSITION",g.openchannelDisposition=angular.copy(l),g.openchannelDispositions=r,g.newOpenchannelDisposition=!1,g.openchannelDisposition||(g.openchannelDisposition={},g.title="OPENCHANNEL.NEW_OPENCHANNELDISPOSITION",g.newOpenchannelDisposition=!0),t.params.id&&(g.openchannelDisposition.OpenchannelAccountId=t.params.id),g.addNewOpenchannelDisposition=function(){g.errors=[],d.disposition.save(g.openchannelDisposition).$promise.then(function(e){g.openchannelDispositions.unshift(e.toJSON()),o.success({title:"OpenchannelDisposition properly created",msg:g.openchannelDisposition.name?g.openchannelDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelDisposition=function(){g.errors=[],d.disposition.update({id:g.openchannelDisposition.id},g.openchannelDisposition).$promise.then(function(e){var t=_.find(g.openchannelDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"OpenchannelDisposition properly saved!",msg:g.openchannelDisposition.name?g.openchannelDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The openchannelDisposition will be deleted.").ariaLabel("Delete OpenchannelDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.openchannelDisposition.id}).$promise.then(function(){_.remove(g.openchannelDispositions,{id:g.openchannelDisposition.id}),o.success({title:"OpenchannelDisposition properly deleted!",msg:(g.openchannelDisposition.name||"openchannelDisposition")+" has been deleted!"}),v(g.openchannelDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelDispositions","openchannelDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelDispositionDialogController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.host(),u.openchannelAccount=c||e.params.openchannelAccount||{},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.agentadddialog=function(e,t){n.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:u.openchannelAccounts?u.openchannelAccounts.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts")},u.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:u.openchannelAccount.id},u.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:u.openchannelAccount.name?u.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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.openchannelAccount&&(a=_.find(u.lists,{id:Number(u.openchannelAccount.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.openchannelAccount&&(a=_.find(u.lists,{id:Number(u.openchannelAccount.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).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:u.openchannelAccount.ListId}).$promise.then(function(e){u.fields=[];e=_.values(e.toJSON());for(var t=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],n=0;n<e.length;n++)_.includes(t,e[n].columnName)||u.fields.push(e[n]);u.fields.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfields",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.openchannelAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="openchannelAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedOpenchannelAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,t){n.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:b.crudPermissions})},b.interactionsgoto=function(e,t){n.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},b.agentadddialog=function(e,t){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:b.openchannelAccounts?b.openchannelAccounts.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getOpenchannelAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.openchannelAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="OpenchannelAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditOpenchannelAccount=function(e,t){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:t,openchannelAccounts:b.openchannelAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteOpenchannelAccount=S,b.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(b.selectedOpenchannelAccounts);return b.selectedOpenchannelAccounts=[],e},b.deleteSelectedOpenchannelAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+b.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedOpenchannelAccounts.forEach(function(e){S(e)}),b.selectedOpenchannelAccounts=[]})},b.deselectOpenchannelAccounts=function(){b.selectedOpenchannelAccounts=[]},b.selectAllOpenchannelAccounts=function(){b.selectedOpenchannelAccounts=b.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.openchannelAccount&&(a=_.find(b.lists,{id:Number(b.openchannelAccount.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.openchannelAccount&&(a=_.find(b.lists,{id:Number(b.openchannelAccount.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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 A=!0,E=1;function y(e){b.openchannelAccounts=e||{count:0,rows:[]}}function S(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.openchannelAccounts.rows,{id:e.id}),b.openchannelAccounts.count-=1,b.openchannelAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.openchannel").controller("OpenchannelAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.openchannelQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:n.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.openchannelQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="openchannelQueues",b.listOrder="",b.listOrderAsc=null,b.selectedOpenchannelQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:b.openchannelQueues?b.openchannelQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:b.openchannelQueues?b.openchannelQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.openchannel.realtime.queues",{})}},b.success=y,b.getOpenchannelQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.openchannelQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="OpenchannelQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditOpenchannelQueue=function(e,t){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:t,openchannelQueues:b.openchannelQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteOpenchannelQueue=S,b.exportSelectedOpenchannelQueues=function(){var e=angular.copy(b.selectedOpenchannelQueues);return b.selectedOpenchannelQueues=[],e},b.deleteSelectedOpenchannelQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+b.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedOpenchannelQueues.forEach(function(e){S(e)}),b.selectedOpenchannelQueues=[]})},b.deselectOpenchannelQueues=function(){b.selectedOpenchannelQueues=[]},b.selectAllOpenchannelQueues=function(){b.selectedOpenchannelQueues=b.openchannelQueues.rows};var A=!0,E=1;function y(e){b.openchannelQueues=e||{count:0,rows:[]}}function S(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.openchannelQueues.rows,{id:e.id}),b.openchannelQueues.count-=1,b.openchannelQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.openchannelQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].OpenchannelQueueId].paused++,g.queues[e[t].rows[n].OpenchannelQueueId].loggedInDb++,g.queues[e[t].rows[n].OpenchannelQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].OpenchannelQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"openchannel",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.openchannelQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="OpenchannelQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditOpenchannelQueue=function(e,t){a.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:t,openchannelQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:t,openchannelQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.openchannelQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.OpenchannelQueueId]&&g.queues[e.OpenchannelQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.OpenchannelQueueId]&&g.queues[e.OpenchannelQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.OpenchannelQueueId]&&(g.queues[e.OpenchannelQueueId].loggedInDb+=1,g.queues[e.OpenchannelQueueId].agents[e.UserId]=e.OpenchannelQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.OpenchannelQueueId]&&0<g.queues[e.OpenchannelQueueId].loggedInDb&&(g.queues[e.OpenchannelQueueId].loggedInDb-=1,delete g.queues[e.OpenchannelQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("openchannel_queue:save",g.onSave),d.on("userOpenchannelQueue:save",g.onSaveMember),d.on("userOpenchannelQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("openchannel_queue:save"),d.removeAllListeners("userOpenchannelQueue:remove"),d.removeAllListeners("userOpenchannelQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,n.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.openchannel.realtime.agents");break;case 1:n.go("app.openchannel.realtime.queues");break;default:n.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return n.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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.customizations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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?t.setting.update({id:s.customization.id},s.customization).$promise.then(function(){n.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):t.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),n.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){n.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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:10,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0},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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.generals,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,t,n,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]),s.saveGeneral=function(){s.general.id?t.setting.update({id:s.general.id},s.general).$promise.then(function(){n.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):t.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),n.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(t,n,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"}],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"}],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){n.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(t.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){n.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(t.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,t,n,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(n),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)&&(n[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==n[e]?n[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==n[e]?n[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){t.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,t,n,a,i){var s=this;s.errors=[],s.license=angular.copy(n),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?t.error({title:"License update failed!",msg:"Invalid license key"}):t.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){t.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,t,n,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(p.networks,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;h.license=p,h.setting=g,h.currentUser=u.getCurrentUser(),h.networks=l||{count:0,rows:[]},h.table="networks",h.listOrder="",h.listOrderAsc=null,h.selectedNetworks=[],h.query={fields:"createdAt,updatedAt,id,type,value",sort:"-updatedAt",limit:10,page:1},h.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),h.editdialog=function(e,t){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{network:e,networks:h.networks.rows,license:h.license,setting:null,crudPermissions:h.crudPermissions}})},h.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){E(e)},function(){console.log("CANCEL")})},h.success=A,h.getNetworks=function(){h.query.offset=(h.query.page-1)*h.query.limit,u.hasRole("admin")?h.promise=d.network.get(h.query,A).$promise:(h.query.id=h.userProfile.id,h.query.section="Networks",h.promise=d.userProfile.getResources(h.query,A).$promise)},h.createOrEditNetwork=function(e,t){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:t,networks:h.networks.rows,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}})},h.deleteNetwork=E,h.exportSelectedNetworks=function(){var e=angular.copy(h.selectedNetworks);return h.selectedNetworks=[],e},h.deleteSelectedNetworks=function(e){var t=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+h.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){h.selectedNetworks.forEach(function(e){E(e)}),h.selectedNetworks=[]})},h.deselectNetworks=function(){h.selectedNetworks=[]},h.selectAllNetworks=function(){h.selectedNetworks=h.networks.rows};var f=!0,b=1;function A(e){h.networks=e||{count:0,rows:[]}}function E(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(h.networks.rows,{id:e.id}),h.networks.count-=1,h.networks.rows.length||h.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){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var t=0;t<e.data.errors.length;t++)m.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){f?o(function(){f=!1}):(t||(b=h.query.page),e!==t&&(h.query.page=1),e||(h.query.page=b),h.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.settings").controller("NetworksController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.smtps,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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?t.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){n.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):t.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),n.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){n.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&&t.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){n.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){n.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,t,n,a,o,r){var l,d=this;d.system=n||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=t.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,t,n){var a=s.confirm().title("Would you like to change the status of the process #"+t+"?").textContent("The status will be changed to: "+n.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:t,status:n})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+n})})},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,t,n,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=t(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){n.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(t.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(n,e,a,t,i){this.version=t||{},this.updateConfirm=function(e){var t=n.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");n.show(t).then(function(){n.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,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.smsQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].SmsQueueId].paused++,g.queues[e[t].rows[n].SmsQueueId].loggedInDb++,g.queues[e[t].rows[n].SmsQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].SmsQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"sms",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.smsQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="SmsQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditSmsQueue=function(e,t){a.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:t,smsQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:t,smsQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.smsQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.SmsQueueId]&&g.queues[e.SmsQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.SmsQueueId]&&g.queues[e.SmsQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.SmsQueueId]&&(g.queues[e.SmsQueueId].loggedInDb+=1,g.queues[e.SmsQueueId].agents[e.UserId]=e.SmsQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.SmsQueueId]&&0<g.queues[e.SmsQueueId].loggedInDb&&(g.queues[e.SmsQueueId].loggedInDb-=1,delete g.queues[e.SmsQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("sms_queue:save",g.onSave),d.on("userSmsQueue:save",g.onSaveMember),d.on("userSmsQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("sms_queue:save"),d.removeAllListeners("userSmsQueue:remove"),d.removeAllListeners("userSmsQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,n.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.sms.realtime.agents");break;case 1:n.go("app.sms.realtime.queues");break;default:n.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),t.params.id&&(g.smsAccount.SmsAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.smsAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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 t(e,t){if(r.smsAccountApps.rows.length){var n=r.smsAccountApps.rows[t]?r.smsAccountApps.rows[t]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:n,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[t]=e:r.smsAccountApps.rows.splice(t,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,t=[],n=0;n<r.smsAccountApps.rows.length;n++,0){var a=r.smsAccountApps.rows[n],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,t=_.concat(t,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(t,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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:"1"},{option:"Always",value:"0"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",maxlength:255,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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.smsAccount=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,n).$promise},r.editSmsAccountApp=t,r.editInterval=function(e,t){if(r.smsAccountApps.rows.length){var n=r.smsAccountApps.rows[t]?r.smsAccountApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(t,e,n,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(",");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(",");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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("sms")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.smsAccount={},c.smsAccountInteractions={count:0,rows:[]},c.selectedSmsAccountInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,Contact.firstName,Owner.name,closedAt,disposition,note,UserId,ContactId,SmsAccountId,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.smsAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.smsAccount.id,c.getSmsAccountInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.smsInteractionDownload=function(s,e,t){return l.smsInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getSmsAccountInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.smsAccount.getInteractions(c.query,p).$promise},c.createOrEditSmsAccountInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:c.smsAccount,interaction:t,interactions:c.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spysmsInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"sms",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(c.selectedSmsAccountInteractions);return c.selectedSmsAccountInteractions=[],e},c.deleteSmsAccountInteraction=g,c.deleteSelectedSmsAccountInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedSmsAccountInteractions.forEach(function(e){g(e)}),c.selectedSmsAccountInteractions=[]})};var m=!0,u=1;function p(e){c.smsAccountInteractions=e||{count:0,rows:[]}}function g(e){l.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.smsAccountInteractions.rows,{id:e.id}),c.smsAccountInteractions.count-=1,c.smsAccountInteractions.rows.length||c.getSmsAccountInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getSmsAccountInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.smsAccount={},c.smsAccountSmsCannedAnswers={count:0,rows:[]},c.selectedSmsAccountSmsCannedAnswers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},c.init=function(e,t){c.smsAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.smsAccount.id,c.query.SmsAccountId=c.smsAccount.id,c.getSmsAccountSmsCannedAnswers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getSmsAccountSmsCannedAnswers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.smsAccount.getAnswers(c.query,p).$promise},c.createOrEditSmsAccountSmsCannedAnswer=function(e,t){s.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:c.smsAccount,smsCannedAnswer:t,smsCannedAnswers:c.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(c.selectedSmsAccountSmsCannedAnswers);return c.selectedSmsAccountSmsCannedAnswers=[],e},c.deleteSmsAccountSmsCannedAnswer=g,c.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var t=s.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+c.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),c.selectedSmsAccountSmsCannedAnswers=[]})};var m=!0,u=1;function p(e){c.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function g(e){l.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(c.smsAccountSmsCannedAnswers.rows,{id:e.id}),c.smsAccountSmsCannedAnswers.count-=1,c.smsAccountSmsCannedAnswers.rows.length||c.getSmsAccountSmsCannedAnswers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getSmsAccountSmsCannedAnswers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.smsCannedAnswer.SmsAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.smsCannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.smsAccount={},c.smsAccountSmsDispositions={count:0,rows:[]},c.selectedSmsAccountSmsDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.smsAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.smsAccount.id,c.query.SmsAccountId=c.smsAccount.id,c.getSmsAccountSmsDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the smsDisposition?").htmlContent("<b>"+(e.name||"smsDisposition")+"</b> will be deleted.").ariaLabel("delete smsDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getSmsAccountSmsDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.smsAccount.getDispositions(c.query,p).$promise},c.createOrEditSmsAccountSmsDisposition=function(e,t){s.show({controller:"CreateOrEditSmsDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:c.smsAccount,smsDisposition:t,smsDispositions:c.smsAccountSmsDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedSmsAccountSmsDispositions=function(){var e=angular.copy(c.selectedSmsAccountSmsDispositions);return c.selectedSmsAccountSmsDispositions=[],e},c.deleteSmsAccountSmsDisposition=g,c.deleteSelectedSmsAccountSmsDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected smsDispositions?").htmlContent("<b>"+c.selectedSmsAccountSmsDispositions.length+" selected</b> will be deleted.").ariaLabel("delete smsDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedSmsAccountSmsDispositions.forEach(function(e){g(e)}),c.selectedSmsAccountSmsDispositions=[]})};var m=!0,u=1;function p(e){c.smsAccountSmsDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.smsAccountSmsDispositions.rows,{id:e.id}),c.smsAccountSmsDispositions.count-=1,c.smsAccountSmsDispositions.rows.length||c.getSmsAccountSmsDispositions(),r.success({title:"SmsDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getSmsAccountSmsDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_SMSDISPOSITION",g.smsDisposition=angular.copy(l),g.smsDispositions=r,g.newSmsDisposition=!1,g.smsDisposition||(g.smsDisposition={},g.title="SMS.NEW_SMSDISPOSITION",g.newSmsDisposition=!0),t.params.id&&(g.smsDisposition.SmsAccountId=t.params.id),g.addNewSmsDisposition=function(){g.errors=[],d.disposition.save(g.smsDisposition).$promise.then(function(e){g.smsDispositions.unshift(e.toJSON()),o.success({title:"SmsDisposition properly created",msg:g.smsDisposition.name?g.smsDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsDisposition=function(){g.errors=[],d.disposition.update({id:g.smsDisposition.id},g.smsDisposition).$promise.then(function(e){var t=_.find(g.smsDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"SmsDisposition properly saved!",msg:g.smsDisposition.name?g.smsDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The smsDisposition will be deleted.").ariaLabel("Delete SmsDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.smsDisposition.id}).$promise.then(function(){_.remove(g.smsDispositions,{id:g.smsDisposition.id}),o.success({title:"SmsDisposition properly deleted!",msg:(g.smsDisposition.name||"smsDisposition")+" has been deleted!"}),v(g.smsDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsDispositions","smsDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsDispositionDialogController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.host(),u.smsAccount=c||e.params.smsAccount||{},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.agentadddialog=function(e,t){n.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:u.smsAccounts?u.smsAccounts.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts")},u.saveSmsAccount=function(){r.smsAccount.update({id:u.smsAccount.id},u.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:u.smsAccount.name?u.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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.smsAccount&&(a=_.find(u.lists,{id:Number(u.smsAccount.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.smsAccount&&(a=_.find(u.lists,{id:Number(u.smsAccount.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.smsAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="smsAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedSmsAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.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:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:b.crudPermissions})},b.interactionsgoto=function(e,t){n.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},b.agentadddialog=function(e,t){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:b.smsAccounts?b.smsAccounts.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSmsAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.smsAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SmsAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSmsAccount=function(e,t){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:t,smsAccounts:b.smsAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSmsAccount=S,b.exportSelectedSmsAccounts=function(){var e=angular.copy(b.selectedSmsAccounts);return b.selectedSmsAccounts=[],e},b.deleteSelectedSmsAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+b.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSmsAccounts.forEach(function(e){S(e)}),b.selectedSmsAccounts=[]})},b.deselectSmsAccounts=function(){b.selectedSmsAccounts=[]},b.selectAllSmsAccounts=function(){b.selectedSmsAccounts=b.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.smsAccount&&(a=_.find(b.lists,{id:Number(b.smsAccount.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.smsAccount&&(a=_.find(b.lists,{id:Number(b.smsAccount.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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 A=!0,E=1;function y(e){b.smsAccounts=e||{count:0,rows:[]}}function S(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.smsAccounts.rows,{id:e.id}),b.smsAccounts.count-=1,b.smsAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.sms").controller("SmsAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.smsQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.startingAllowedItems=angular.copy(l.allowedItems),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("SMS.ALL_TEAMS"),labelSelected:n.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.smsQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="smsQueues",b.listOrder="",b.listOrderAsc=null,b.selectedSmsQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:b.smsQueues?b.smsQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:b.smsQueues?b.smsQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.sms.realtime.queues",{})}},b.success=y,b.getSmsQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.smsQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SmsQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSmsQueue=function(e,t){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:t,smsQueues:b.smsQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSmsQueue=S,b.exportSelectedSmsQueues=function(){var e=angular.copy(b.selectedSmsQueues);return b.selectedSmsQueues=[],e},b.deleteSelectedSmsQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+b.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSmsQueues.forEach(function(e){S(e)}),b.selectedSmsQueues=[]})},b.deselectSmsQueues=function(){b.selectedSmsQueues=[]},b.selectAllSmsQueues=function(){b.selectedSmsQueues=b.smsQueues.rows};var A=!0,E=1;function y(e){b.smsQueues=e||{count:0,rows:[]}}function S(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.smsQueues.rows,{id:e.id}),b.smsQueues.count-=1,b.smsQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.agents=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="agents",b.listOrder="",b.listOrderAsc=null,b.selectedAgents=[],b.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,faxCapacity,smsCapacity,openchannelCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,phoneBarEnableVideoRecording",role:"agent",sort:"-updatedAt",limit:10,page:1},b.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.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"),"")}),b.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.editstate=function(e,t){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:b.agents?b.agents.rows:[],crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getAgents=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.user.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Agents",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditAgent=function(e,t){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:t,agents:b.agents.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteAgent=S,b.exportSelectedAgents=function(){var e=angular.copy(b.selectedAgents);return b.selectedAgents=[],e},b.deleteSelectedAgents=function(e){var t=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+b.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedAgents.forEach(function(e){S(e)}),b.selectedAgents=[]})},b.deselectAgents=function(){b.selectedAgents=[]},b.selectAllAgents=function(){b.selectedAgents=b.agents.rows};var A=!0,E=1;function y(e){b.agents=e||{count:0,rows:[]}}function S(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(b.agents.rows,{id:e.id}),b.agents.count-=1,b.agents.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("AgentsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.agents,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.agent=angular.copy(e),i.crudPermissions=void 0!==t?t:{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(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.currentUser=s.getCurrentUser(),o.errors=[],o.setting=i,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",o.agent=a,o.password="",o.oldPassword="",o.savePassword=function(){o.errors=[];var e={id:o.agent.id,newPassword:o.password};o.currentUser.id==o.agent.id&&(e.oldPassword=o.oldPassword);n.user.changePassword(e).$promise.then(function(){t.success({title:"Agent password properly updated!"}),r()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),o.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,t,i,n,s){var o=this;o.agent={},o.navigation=n.getNavigation(),o.crudPermissions,o.init=function(e,t){o.agent=e,o.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(t,n){if((n||t).enabled){if(n)n.enabled=!0,o.agent.permissions.push(n.id);else for(var e=0;e<t.children.length;e++)t.children[e].enabled=!0,o.agent.permissions.push(t.children[e].id);t.enabled=!0,o.agent.permissions.push(t.id)}else if(n)n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}),_.filter(t.children,{enabled:!1}).length===t.children.length&&(t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}));else{t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e});for(var a=0;a<t.children.length;a++)t.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return t.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,t,n,i,s,o,r){var c=this;function m(){return l(function(n,t){return l(function(t,n){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){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){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){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return"voice"===c.channel&&(t.penalty=void 0!==t&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=o.getCurrentUser(),c.agent=t,c.crudPermissions=r,c.penalty=0,c.channel=n,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={readOnly:!c.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,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,t){t?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var n=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});c.pendingChanges=!_.isEmpty(n)}},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(n,t){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 t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});return(n=e,l(function(e,t){_.isEmpty(n)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(n,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){t(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 n},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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.startingAllowedItems=angular.copy(l.allowedItems),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.agent=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("STAFF.ALL_TEAMS"),labelSelected:n.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.user.addTeams({id:l.agent.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,i,s,n,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=t.protocol()+"://"+t.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,t,n,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:t,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,t){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,t){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoAgents=function(){e.go("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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.agent&&(a=_.find(u.contexts,{name:u.agent.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.teams,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.team=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.team.removeAgents({id:c.team.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.team.addAgents({id:c.team.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.teams=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="teams",b.listOrder="",b.listOrderAsc=null,b.selectedTeams=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{team:e,teams:b.teams.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{team:e,teams:b.teams?b.teams.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTeams=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.team.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Teams",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTeam=function(e,t){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:t,teams:b.teams.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTeam=S,b.exportSelectedTeams=function(){var e=angular.copy(b.selectedTeams);return b.selectedTeams=[],e},b.deleteSelectedTeams=function(e){var t=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+b.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTeams.forEach(function(e){S(e)}),b.selectedTeams=[]})},b.deselectTeams=function(){b.selectedTeams=[]},b.selectAllTeams=function(){b.selectedTeams=b.teams.rows};var A=!0,E=1;function y(e){b.teams=e||{count:0,rows:[]}}function S(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(b.teams.rows,{id:e.id}),b.teams.count-=1,b.teams.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("TeamsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.telephones,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.currentUser=s.getCurrentUser(),o.errors=[],o.setting=i,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",o.telephone=a,o.password="",o.oldPassword="",o.savePassword=function(){o.errors=[];var e={id:o.telephone.id,newPassword:o.password};o.currentUser.id==o.telephone.id&&(e.oldPassword=o.oldPassword);n.user.changePassword(e).$promise.then(function(){t.success({title:"Telephone password properly updated!"}),r()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),o.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:t,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")},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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.telephone&&(a=_.find(u.contexts,{name:u.telephone.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.telephones=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="telephones",b.listOrder="",b.listOrderAsc=null,b.selectedTelephones=[],b.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},b.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"),"")}),b.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"),"")}),b.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"),"")}),b.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTelephones=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.user.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Telephones",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTelephone=function(e,t){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:t,telephones:b.telephones.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTelephone=S,b.exportSelectedTelephones=function(){var e=angular.copy(b.selectedTelephones);return b.selectedTelephones=[],e},b.deleteSelectedTelephones=function(e){var t=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+b.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTelephones.forEach(function(e){S(e)}),b.selectedTelephones=[]})},b.deselectTelephones=function(){b.selectedTelephones=[]},b.selectAllTelephones=function(){b.selectedTelephones=b.telephones.rows};var A=!0,E=1;function y(e){b.telephones=e||{count:0,rows:[]}}function S(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(b.telephones.rows,{id:e.id}),b.telephones.count-=1,b.telephones.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("TelephonesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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"]},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var t,n;n=[],(t=e).crudPermissions.forEach(function(e){var t;switch(e){case"r":t="READ_PERMISSION";break;case"e":t="EDIT_PERMISSION";break;case"d":t="DELETE_PERMISSION"}n.push(s.instant("STAFF."+t))}),t.selectedcrudPermissions=n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.userProfiles,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(t,a,i,e,n,s,o){var r=this;function l(e){t.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(n),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),n&&n.name&&(r.title+=": "+n.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:n.id},r.userProfile).$promise.then(function(e){var t,n;n=[],(t=e).crudPermissions.forEach(function(e){var t;switch(e){case"r":t="READ_PERMISSION";break;case"e":t="EDIT_PERMISSION";break;case"d":t="DELETE_PERMISSION"}n.push(o.instant("STAFF."+t))}),t.selectedcrudPermissions=n.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 t=0;t<e.data.errors.length;t+=1)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(n,o,r,l,d,e,t,c){var m=this;function u(e,t){switch(e.allResourcesEnabled="full"===t,t){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(t,n){var i,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(t,n){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){t(e)}).catch(function(e){n(e)})})).then(function(e){t(e)}).catch(function(e){n(e)}):(i=e,l(function(a,t){switch(i.route){case"voiceExtension":var e;switch(i.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"user":var n;switch(i.title){case"Agents":n="agent";break;case"Telephones":n="telephone";break;case"Users":n="user"}}if("Reports"===i.title){if(!i.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(n){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var t=_.union(n.rows,e.rows);a({count:t.length,rows:t.rows})})}).catch(function(e){t(e)});switch(i.reportType){case"default":i.route="analyticDefaultReport";break;case"custom":i.route="analyticCustomReport"}}return d[i.route].get({role:n||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){t(e)})})).then(function(e){t(e)}).catch(function(e){n(e)})})}function g(e,t,n){var a=e&&0<e.length?e[0]:null;if(!a)return n;var i,s,o=_.find(t,["sectionId",a.id]);return o?(t=_.remove(t,["sectionId",a.id]),(i=a,s=o.id,l(function(t,n){d.userProfileResource.get({sectionId:s}).$promise.then(function(t){return p(i).then(function(e){return _.differenceBy(t.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?t():n()}).catch(function(e){n(e)})})).then(function(){return n="full",g(e.shift(),t,n)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var n="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:n}).$promise.then(function(e){var t=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(t)?"disabled":t[0].autoAssociation?"full":d.userProfileResource.get({sectionId:t[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var n=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return t.length!==n.length?0===t.length?"disabled":"partial":_.every(t,["autoAssociation",!0])?"full":g(_.filter(n,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),t,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var t=e?"unknown":"partial";a.status=u(a,t),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+n.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 t=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,t)}):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,t){m.userProfile=e,m.license=t},m.onChangeEnableAllResources=function(t){var e=void 0!==t.permissions&&!t.permissions.association,a="Marketplace"===t.title?"AppZone":t.title;if("Fully Enabled"!==t.status.name){var i=[];if(e)return i.push({category:a,sectionId:t.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){t.status=u(t,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(t.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(t.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 n=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(t.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(n).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(t.children,function(e){var t=!(void 0===e.permissions||!e.permissions.hidden);if(!t){var n=e.title;switch(a){case"CallySquare":n="Projects"===n?"SquareProjects":n}i.push({category:a,sectionId:e.id,name:n,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){t.status=u(t,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(t.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(t.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()}):t.status=u(t,t.status.tag)})}else if("Fully Enabled"===t.status.name){t.status=u(t,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[t.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(t.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(t.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(t.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,t){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(n.body),targetEvent:t,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,s,t,o,e,a,r,i,l){var d=this;function c(){var a=void 0!==d.selectedSection.pending&&d.selectedSection.pending;return s(function(n,t){o.userProfileSection.get({userProfileId:d.userProfile.id,sectionId:d.selectedSection.id}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;a||(d.selectedSection.enabled=!!t&&!!t.enabled,d.selectedSection.autoAssociation=!!t&&!!t.autoAssociation,d.selectedSection.crudPermissions=p(t?t.crudPermissions:d.userProfile.crudPermissions)),n(t)}).catch(function(e){t(e)})})}function m(){return s(function(t,n){void 0!==d.selectedSection.channel&&_.includes(d.selectedSection.route,"Queue")?s(function(t,n){var e=void 0!==d.selectedSection.channel&&"bull"===d.selectedSection.channel?"outbound":"inbound";return o[d.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===d.selectedSection.channel?"voice":d.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){t(e)}).catch(function(e){n(e)}):s(function(t,n){var e,a;if("voiceExtension"===d.selectedSection.route)switch(d.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===d.selectedSection.route)switch(d.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===d.selectedSection.route)var i=!0;if("Reports"===d.selectedSection.title)switch(d.selectedSection.reportType){case"default":d.selectedSection.route="analyticDefaultReport";break;case"custom":d.selectedSection.route="analyticCustomReport"}if("Dashboards"!==d.selectedSection.title)return o[d.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)});t({count:1,rows:[{id:101,name:r.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){t(e)}).catch(function(e){n(e)})})}function u(){var a=void 0!==d.selectedSection.pending&&d.selectedSection.pending,i=[];return s(function(t,n){d.loadedSection?o.userProfileResource.get({sectionId:d.loadedSection.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)}):t(null)}).then(function(e){return i=e&&e.rows?e.rows:[],"Reports"===d.selectedSection.title&&(d.associatedReports=d.associatedReports?d.associatedReports:i,i=function(e){var t=[];switch(d.selectedSection.reportType){case"default":t=_.filter(e,{type:"DefaultReports"});break;case"custom":t=_.filter(e,{type:"CustomReports"})}return t}(d.associatedReports)),void 0===d.selectedSection.permissions||d.selectedSection.permissions.association?m():{rows:[]}}).then(function(e){d.items=e.rows?_.map(e.rows,function(e){var t,n;return"Reports"===d.selectedSection.title&&(e.fullPath=(t=e.parent,n=d.treeStructure[0].text,n=function e(t,n,a){if(!a||_.isEmpty(a.children))return t;var a=_.find(a.children,function(e){return _.includes(n,e.id)?e:void 0});return t+=a?"/"+a.text:"",e(t,n,a)}(n,t,d.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],a||(d.selectedSection.selectedItems=_.map(i,function(e){return _.find(d.items,{id:e.resourceId})}));var t=_.differenceBy(d.selectedSection.selectedItems,d.items,"id");switch(_.isEmpty(t)||(d.selectedSection.selectedItems=_.pullAllBy(d.selectedSection.selectedItems,t,"id")),d.selectedSection.title){case"Contexts":d.selectedSection.selectedItems=_.filter(d.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(i,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":d.selectedSection.selectedItems=_.filter(d.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(i,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var n=function(e){var t=[];switch(d.selectedSection.reportType){case"default":t=_.filter(e,function(e){return _.startsWith(e.parent,"motion")});break;case"custom":t=_.filter(e,function(e){return _.startsWith(e.parent,"custom")})}return t}(d.allReportsSelected);d.selectedSection.selectedItems=h(d.selectedSection.selectedItems),d.selectedSection.selectedItems=_.unionBy(d.selectedSection.selectedItems,n,"parent")}d.dualMultiselectOptions.selectedItems=d.selectedSection.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.items,d.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+d.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function p(e){return e&&(d.selectedSection.allowEdit=!!_.includes(e,"e"),d.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(d.selectedSection.allowEdit)e.push("e");else{var t=_.indexOf(e,["e"]);0<t&&d.selectedSection.crudPermissions.replace("e","")}if(d.selectedSection.allowDelete)e.push("d");else{var t=_.indexOf(e,["d"]);0<t&&d.selectedSection.crudPermissions.replace("d","")}return e}()}function g(e){var t=_.findIndex(d.subsections,function(e){return e.id==d.selectedSection.id});d.subsections[t].pending=e,v()}function v(){return d.pendingChanges=_.some(d.subsections,["pending",!0])}function h(e){var t=[];switch(d.selectedSection.reportType){case"default":t=_.remove(e,function(e){return _.startsWith(e.parent,"motion")});break;case"custom":t=_.remove(e,function(e){return _.startsWith(e.parent,"custom")})}return t}d.userProfile=e,d.penalty=0,d.section=angular.copy(l),d.title=r.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:r.instant(d.section.translate)}),d.items=[],d.selectedItems=[],d.subsections=_.filter(d.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),d.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],d.dashboardItems=[],"Dashboards"===d.section.title&&(d.dashboardItems=d.subsections,d.subsections=d.dashboardSections),d.selectedSection=null,d.loadedSection=null,d.closeDialog=function(e){if(d.pendingChanges){var t=n.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(r.instant("STAFF.CLOSE")).cancel(r.instant("STAFF.CANCEL"));n.show(t).then(function(){n.hide()})}else n.hide()},d.onChangeSection=function(){return c().then(function(e){if(d.loadedSection=e,"Reports"===d.selectedSection.title)return s(function(t,n){o.analyticTreeReport.get({}).$promise.then(function(e){d.treeReports=e.rows||[],t(d.treeReports)}).catch(function(e){n(e)})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});u()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+d.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},d.onChangeVisibility=function(){d.selectedSection.enabled=!d.selectedSection.enabled,g(!0)},d.onChangeAutoAssociation=function(){if(!d.selectedSection.autoAssociation){for(var e=[],t=0;t<d.dualMultiselectOptions.items.length;t++)e.push(d.dualMultiselectOptions.items[t]),d.dualMultiselectOptions.selectedItems.push(d.dualMultiselectOptions.items[t]);d.dualMultiselectOptions.items=[],d.dualMultiselectOptions.transferCallback(e,!1)}g(!0)},d.onChangeReportType=function(){d.treeStructure=function(){var e={};switch(d.selectedSection.reportType){case"default":e=d.treeReports[0]?angular.fromJson(d.treeReports[0].tree):[];break;case"custom":e=d.treeReports[1]?angular.fromJson(d.treeReports[1].tree):[]}return e}(),d.selectedSection.selectedItems&&(d.allReportsSelected=h(d.allReportsSelected),d.allReportsSelected=_.unionBy(d.allReportsSelected,d.selectedSection.selectedItems,"parent"));u()},d.setPermission=function(e){switch(e){case"edit":d.selectedSection.allowEdit=!d.selectedSection.allowEdit;break;case"delete":d.selectedSection.allowDelete=!d.selectedSection.allowDelete}d.selectedSection.crudPermissions=p(),g(!0)},d.saveSection=function(){var n="Marketplace"===d.section.title?"AppZone":d.section.title,e=_.map(_.filter(d.subsections,{pending:!0}),function(e){var t=e.selectedItems,a=e.title;switch("Reports"===a&&(t=_.unionBy(d.allReportsSelected,e.selectedItems,"parent")),n){case"CallySquare":a="Projects"===a?"SquareProjects":a;break;case"Integrations":e.autoAssociation=!0}return{category:n,sectionId:e.id,name:a,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:t?_.map(t,function(e){return{name:e.name,resourceId:e.id,type:(t=a,n=e,"Reports"!==t?t:(_.startsWith(n.parent,"motion")?"Default":"Custom")+t)};var t,n}):[]}});return o.userProfile.addSections({id:d.userProfile.id},e).$promise.then(function(){d.subsections.forEach(function(e){e.pending=void 0}),d.allReportsSelected=[],d.associatedReports=null,v(),t.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:r.instant(n.translate)}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return c().then(function(e){d.loadedSection=e})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.dualMultiselectOptions={readOnly:!1,items:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:r.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:r.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),labelSearch:r.instant("STAFF.PERMISSIONS_PLACEHOLDER_SEARCH"),transferCallback:function(e,t){g(!0),t?(d.selectedSection.selectedItems=_.pullAllBy(d.selectedSection.selectedItems,e,"id"),d.selectedSection.autoAssociation=!1):d.selectedSection.selectedItems=_.unionBy(d.selectedSection.selectedItems,e,"id")}}}e.$inject=["$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,t){n.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.userProfiles=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="userProfiles",b.listOrder="",b.listOrderAsc=null,b.selectedUserProfiles=[],b.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b.userProfiles&&0<b.userProfiles.count&&b.userProfiles.rows.forEach(function(e){var t=[];e.crudPermissions.forEach(function(e){t.push(b.arraycrudPermissions[e].option)});var n=[];t.forEach(function(e){n.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=n.join(", ")}),b.editstate=function(e,t){n.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:b.userProfiles?b.userProfiles.rows:[],crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getUserProfiles=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.userProfile.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="UserProfiles",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditUserProfile=function(e,t){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:t,userProfiles:b.userProfiles.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteUserProfile=S,b.exportSelectedUserProfiles=function(){var e=angular.copy(b.selectedUserProfiles);return b.selectedUserProfiles=[],e},b.deleteSelectedUserProfiles=function(e){var t=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+b.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedUserProfiles.forEach(function(e){S(e)}),b.selectedUserProfiles=[]})},b.deselectUserProfiles=function(){b.selectedUserProfiles=[]},b.selectAllUserProfiles=function(){b.selectedUserProfiles=b.userProfiles.rows};var A=!0,E=1;function y(e){b.userProfiles=e||{count:0,rows:[]}}function S(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(b.userProfiles.rows,{id:e.id}),b.userProfiles.count-=1,b.userProfiles.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("UserProfilesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.users,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.userProfiles.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfiles",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,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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.user=angular.copy(e),i.crudPermissions=void 0!==t?t:{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(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.currentUser=s.getCurrentUser(),o.errors=[],o.setting=i,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",o.user=a,o.password="",o.oldPassword="",o.savePassword=function(){o.errors=[];var e={id:o.user.id,newPassword:o.password};o.currentUser.id==o.user.id&&(e.oldPassword=o.oldPassword);n.user.changePassword(e).$promise.then(function(){t.success({title:"User password properly updated!"}),r()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),o.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.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.changepassworddialog=function(e,t){n.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:t,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")},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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.userProfiles.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfiles",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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.users=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="users",b.listOrder="",b.listOrderAsc=null,b.selectedUsers=[],b.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,videosupport",role:"admin,user",sort:"-updatedAt",limit:10,page:1},b.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.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"),"")}),b.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"),"")}),b.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getUsers=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.user.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Users",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditUser=function(e,t){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:t,users:b.users.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteUser=S,b.exportSelectedUsers=function(){var e=angular.copy(b.selectedUsers);return b.selectedUsers=[],e},b.deleteSelectedUsers=function(e){var t=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+b.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedUsers.forEach(function(e){S(e)}),b.selectedUsers=[]})},b.deselectUsers=function(){b.selectedUsers=[]},b.selectAllUsers=function(){b.selectedUsers=b.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.userProfiles=e.rows||[],b.userProfiles.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfiles",msg:e.data?JSON.stringify(e.data):e.toString()})});var A=!0,E=1;function y(e){b.users=e||{count:0,rows:[]}}function S(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(b.users.rows,{id:e.id}),b.users.count-=1,b.users.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.cannedAnswers=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="cannedAnswers",b.listOrder="",b.listOrderAsc=null,b.selectedCannedAnswers=[],b.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:b.cannedAnswers.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getCannedAnswers=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.cannedAnswer.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="CannedAnswers",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditCannedAnswer=function(e,t){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:t,cannedAnswers:b.cannedAnswers.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteCannedAnswer=S,b.exportSelectedCannedAnswers=function(){var e=angular.copy(b.selectedCannedAnswers);return b.selectedCannedAnswers=[],e},b.deleteSelectedCannedAnswers=function(e){var t=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+b.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedCannedAnswers.forEach(function(e){S(e)}),b.selectedCannedAnswers=[]})},b.deselectCannedAnswers=function(){b.selectedCannedAnswers=[]},b.selectAllCannedAnswers=function(){b.selectedCannedAnswers=b.cannedAnswers.rows};var A=!0,E=1;function y(e){b.cannedAnswers=e||{count:0,rows:[]}}function S(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(b.cannedAnswers.rows,{id:e.id}),b.cannedAnswers.count-=1,b.cannedAnswers.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("CannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.cannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.customDashboards,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.customDashboards=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="customDashboards",b.listOrder="",b.listOrderAsc=null,b.selectedCustomDashboards=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,t){n.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:b.customDashboards?b.customDashboards.rows:[],crudPermissions:b.crudPermissions}})},b.gotodashboardgoto=function(e,t){n.go("app.dashboards.custom",{id:e.id})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getCustomDashboards=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.dashboard.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="CustomDashboards",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditCustomDashboard=function(e,t){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:t,customDashboards:b.customDashboards.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteCustomDashboard=S,b.exportSelectedCustomDashboards=function(){var e=angular.copy(b.selectedCustomDashboards);return b.selectedCustomDashboards=[],e},b.deleteSelectedCustomDashboards=function(e){var t=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+b.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedCustomDashboards.forEach(function(e){S(e)}),b.selectedCustomDashboards=[]})},b.deselectCustomDashboards=function(){b.selectedCustomDashboards=[]},b.selectAllCustomDashboards=function(){b.selectedCustomDashboards=b.customDashboards.rows};var A=!0,E=1;function y(e){b.customDashboards=e||{count:0,rows:[]}}function S(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(b.customDashboards.rows,{id:e.id}),b.customDashboards.count-=1,b.customDashboards.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(n,a,e,i,s){var o=this;function r(e,t,n){return s.dashboardItem.update(n).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,t){return o.crudPermissions=void 0!==t?t:{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 t=0;t<e.rows.length;t+=1)e.rows[t].voiceQueues=o.voiceQueues,e.rows[t].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[t].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[t].type+"/ms-widget-engine."+e.rows[t].type+".html",o.customDashboard.widgets.push(e.rows[t])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var t=0;t<e.attrs.length;t+=1)"attrReport"===e.attrs[t].name&&(e.reportType=e.attrs[t].type),e[e.attrs[t].name]=e.attrs[t].value;n.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 t=0;t<o.customDashboard.widgets.length;t+=1)o.customDashboard.widgets[t].id===e.id&&(o.customDashboard.widgets[t].attrs=e.attrs,o.customDashboard.widgets[t].voiceQueues=o.voiceQueues,o.customDashboard.widgets[t].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[t].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[t].type+"/ms-widget-engine."+o.customDashboard.widgets[t].type+".html")})},o.deleteWidget=function(t){var e=n.confirm().title("Would you like to delete "+t.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");n.show(e).then(function(){return s.dashboardItem.delete({id:t.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:t.id}),i.success({title:"Widget deleted!",msg:t.name?t.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 t=0;t<e.data.errors.length;t++)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(t,e,n,a,s,i,o,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",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()),o.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.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.dashboardItem.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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 t=_.find(g.dashboard,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.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.dashboardItem.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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 t=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),o.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),T(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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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.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))}t.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=(t={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,t}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):t),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!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 t},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[],g.treeReports.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtreeReports",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,t){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=t.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=t.node.id,y()}function b(e,t){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=t.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=t.node.id,y()}function A(){if(!g.newDashboardItem&&"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.newDashboardItem&&"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 t=e&&e.rows?e.rows:[];if(0<t.length){var n=[];return a.forEach(function(e){_.find(t,["resourceId",e.id])&&n.push(e)}),S({count:n.length,rows:n})}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.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(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||[],g.voiceQueues.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[],g.voiceQueues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<v.length;t++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<v.length;a++){var i=_.find(t,["sectionId",v[a].id]);i?i.autoAssociation?g.voiceQueues.forEach(function(e){e.type===v[a].type&&(e.canSelect=!0)}):n.push(d.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:g.voiceQueues,count:g.voiceQueues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;g.dashboarditem&&(a=_.find(g.voiceQueues,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<v.length;i++)g.voiceQueues.forEach(function(e){e.type===v[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});g.voiceQueues=n}).catch(function(e){o.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(n,e,a,i,t,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||n.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=n.params.tab||0,u.clonedialog=function(e,t){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,t){n.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){n.go("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(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_DISPOSITION",g.disposition=angular.copy(l),g.dispositions=r,g.newDisposition=!1,g.disposition||(g.disposition={},g.title="TOOLS.NEW_DISPOSITION",g.newDisposition=!0),g.addNewDisposition=function(){g.errors=[],d.disposition.save(g.disposition).$promise.then(function(e){g.dispositions.unshift(e.toJSON()),o.success({title:"Disposition properly created",msg:g.disposition.name?g.disposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDisposition=function(){g.errors=[],d.disposition.update({id:g.disposition.id},g.disposition).$promise.then(function(e){var t=_.find(g.dispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"Disposition properly saved!",msg:g.disposition.name?g.disposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The disposition will be deleted.").ariaLabel("Delete Disposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.disposition.id}).$promise.then(function(){_.remove(g.dispositions,{id:g.disposition.id}),o.success({title:"Disposition properly deleted!",msg:(g.disposition.name||"disposition")+" has been deleted!"}),v(g.disposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dispositions","disposition","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.dispositions=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dispositions",b.listOrder="",b.listOrderAsc=null,b.selectedDispositions=[],b.query={fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{disposition:e,dispositions:b.dispositions.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=i.confirm().title("Are you sure want to delete the "+_.startCase("disposition")+"?").htmlContent("<b>"+(e.name||"disposition")+"</b> will be deleted.").ariaLabel("delete disposition").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDispositions=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.disposition.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dispositions",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditDisposition=function(e,t){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:t,dispositions:b.dispositions.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDisposition=S,b.exportSelectedDispositions=function(){var e=angular.copy(b.selectedDispositions);return b.selectedDispositions=[],e},b.deleteSelectedDispositions=function(e){var t=i.confirm().title("Are you sure want to delete the selected dispositions?").htmlContent("<b>"+b.selectedDispositions.length+" selected</b> will be deleted.").ariaLabel("delete Dispositions").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedDispositions.forEach(function(e){S(e)}),b.selectedDispositions=[]})},b.deselectDispositions=function(){b.selectedDispositions=[]},b.selectAllDispositions=function(){b.selectedDispositions=b.dispositions.rows};var A=!0,E=1;function y(e){b.dispositions=e||{count:0,rows:[]}}function S(e){m.disposition.delete({id:e.id}).$promise.then(function(){_.remove(b.dispositions.rows,{id:e.id}),b.dispositions.count-=1,b.dispositions.rows.length||b.getDispositions(),p.success({title:_.startCase("Disposition")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getDispositions())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("DispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.intervals,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.interval={},c.intervalIntervals={count:0,rows:[]},c.selectedIntervalIntervals=[],c.crudPermissions,c.sortableTable={animation:100,onSort:function(e){l.interval.addIntervals({id:c.interval.id},e.models).$promise.then(function(e){c.intervalIntervals.rows=e}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},c.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},c.init=function(e,t){c.interval=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,c.query.id=c.interval.id,c.getIntervalIntervals()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIntervalIntervals=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.interval.getIntervals(c.query,p).$promise},c.createOrEditIntervalInterval=function(e,t){s.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:c.interval,interval:t,intervals:c.intervalIntervals.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIntervalIntervals=function(){var e=angular.copy(c.selectedIntervalIntervals);return c.selectedIntervalIntervals=[],e},c.deleteIntervalInterval=g,c.deleteSelectedIntervalIntervals=function(e){var t=s.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+c.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIntervalIntervals.forEach(function(e){g(e)}),c.selectedIntervalIntervals=[]})};var m=!0,u=1;function p(e){c.intervalIntervals=e||{count:0,rows:[]}}function g(e){l.interval.delete({id:e.id}).$promise.then(function(){_.remove(c.intervalIntervals.rows,{id:e.id}),c.intervalIntervals.count-=1,c.intervalIntervals.rows.length||c.getIntervalIntervals(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIntervalIntervals())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.intervals,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.intervals=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="intervals",b.listOrder="",b.listOrderAsc=null,b.selectedIntervals=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},b.editstate=function(e,t){n.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getIntervals=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.interval.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Intervals",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditInterval=function(e,t){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:t,intervals:b.intervals.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteInterval=S,b.exportSelectedIntervals=function(){var e=angular.copy(b.selectedIntervals);return b.selectedIntervals=[],e},b.deleteSelectedIntervals=function(e){var t=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+b.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedIntervals.forEach(function(e){S(e)}),b.selectedIntervals=[]})},b.deselectIntervals=function(){b.selectedIntervals=[]},b.selectAllIntervals=function(){b.selectedIntervals=b.intervals.rows};var A=!0,E=1;function y(e){b.intervals=e||{count:0,rows:[]}}function S(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(b.intervals.rows,{id:e.id}),b.intervals.count-=1,b.intervals.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("IntervalsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.pauses,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.pauses=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="pauses",b.listOrder="",b.listOrderAsc=null,b.selectedPauses=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{pause:e,pauses:b.pauses.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getPauses=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.pause.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Pauses",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditPause=function(e,t){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:t,pauses:b.pauses.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deletePause=S,b.exportSelectedPauses=function(){var e=angular.copy(b.selectedPauses);return b.selectedPauses=[],e},b.deleteSelectedPauses=function(e){var t=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+b.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedPauses.forEach(function(e){S(e)}),b.selectedPauses=[]})},b.deselectPauses=function(){b.selectedPauses=[]},b.selectAllPauses=function(){b.selectedPauses=b.pauses.rows};var A=!0,E=1;function y(e){b.pauses=e||{count:0,rows:[]}}function S(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(b.pauses.rows,{id:e.id}),b.pauses.count-=1,b.pauses.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,t,n,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,t){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=t.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=t.node.id,y()}function b(e,t){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=t.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=t.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 t=e&&e.rows?e.rows:[];if(0<t.length){var n=[];return a.forEach(function(e){_.find(t,["resourceId",e.id])&&n.push(e)}),S({count:n.length,rows:n})}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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.schedules,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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.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=(t={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,t}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):t),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 t},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[],g.treeReports.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtreeReports",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||[],g.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",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||[],g.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++){_.some(t,{resourceId:g.mailAccounts[i].id})?(g.mailAccounts[i].canSelect=!0,n.push(g.mailAccounts[i])):a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,n.push(g.mailAccounts[i]))}g.mailAccounts=n})}else{var n=[],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,n.push(g.mailAccounts[i]));g.mailAccounts=n}}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.schedules=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="schedules",b.listOrder="",b.listOrderAsc=null,b.selectedScheduler=[],b.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},b.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.editdialog=function(e,t){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{schedule:e,schedules:b.schedules.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.runconfirm=function(e,t){var n=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getScheduler=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.schedule.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Scheduler",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSchedule=function(e,t){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:t,schedules:b.schedules.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSchedule=S,b.exportSelectedScheduler=function(){var e=angular.copy(b.selectedScheduler);return b.selectedScheduler=[],e},b.deleteSelectedScheduler=function(e){var t=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+b.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedScheduler.forEach(function(e){S(e)}),b.selectedScheduler=[]})},b.deselectScheduler=function(){b.selectedScheduler=[]},b.selectAllScheduler=function(){b.selectedScheduler=b.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){b.treeReports=e.rows||[],b.treeReports.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtreeReports",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.mailAccounts=e.rows||[],b.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.mailAccounts=e.rows||[],b.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.schedule&&(a=_.find(b.mailAccounts,{id:Number(b.schedule.MailAccountId)}));for(var i=0;i<b.mailAccounts.length;i++){_.some(t,{resourceId:b.mailAccounts[i].id})?(b.mailAccounts[i].canSelect=!0,n.push(b.mailAccounts[i])):a&&b.mailAccounts[i].id===a.id&&(b.mailAccounts[i].canSelect=!1,n.push(b.mailAccounts[i]))}b.mailAccounts=n})}else{var n=[],a=null;b.schedule&&(a=_.find(b.mailAccounts,{id:Number(b.schedule.MailAccountId)}));for(var i=0;i<b.mailAccounts.length;i++)a&&b.mailAccounts[i].id===a.id&&(b.mailAccounts[i].canSelect=!1,n.push(b.mailAccounts[i]));b.mailAccounts=n}}).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 A=!0,E=1;function y(e){b.schedules=e||{count:0,rows:[]}}function S(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(b.schedules.rows,{id:e.id}),b.schedules.count-=1,b.schedules.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("SchedulesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.sounds,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.sounds=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="sounds",b.listOrder="",b.listOrderAsc=null,b.selectedSounds=[],b.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{sound:e,sounds:b.sounds.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=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",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSounds=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.sound.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Sounds",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSound=function(e,t){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:t,sounds:b.sounds.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSound=S,b.exportSelectedSounds=function(){var e=angular.copy(b.selectedSounds);return b.selectedSounds=[],e},b.deleteSelectedSounds=function(e){var t=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+b.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSounds.forEach(function(e){S(e)}),b.selectedSounds=[]})},b.deselectSounds=function(){b.selectedSounds=[]},b.selectAllSounds=function(){b.selectedSounds=b.sounds.rows},b.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:b.sounds.rows}})};var A=!0,E=1;function y(e){b.sounds=e||{count:0,rows:[]}}function S(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(b.sounds.rows,{id:e.id}),b.sounds.count-=1,b.sounds.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,t,n,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 t=["wav","mp3","gsm"];if(!_.includes(t,e.getExtension()))return n.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(e.size>l)return n.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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result}}})},o.uploadError=function(e,t){o.ngFlow.flow.cancel(),n.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",n.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){t.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.tags,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.tags=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="tags",b.listOrder="",b.listOrderAsc=null,b.selectedTags=[],b.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{tag:e,tags:b.tags.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTags=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.tag.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Tags",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTag=function(e,t){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:t,tags:b.tags.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTag=S,b.exportSelectedTags=function(){var e=angular.copy(b.selectedTags);return b.selectedTags=[],e},b.deleteSelectedTags=function(e){var t=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+b.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTags.forEach(function(e){S(e)}),b.selectedTags=[]})},b.deselectTags=function(){b.selectedTags=[]},b.selectAllTags=function(){b.selectedTags=b.tags.rows};var A=!0,E=1;function y(e){b.tags=e||{count:0,rows:[]}}function S(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(b.tags.rows,{id:e.id}),b.tags.count-=1,b.tags.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("TagsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.templates,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.templates=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="templates",b.listOrder="",b.listOrderAsc=null,b.selectedTemplates=[],b.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{template:e,templates:b.templates.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTemplates=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.template.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Templates",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTemplate=function(e,t){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:t,templates:b.templates.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTemplate=S,b.exportSelectedTemplates=function(){var e=angular.copy(b.selectedTemplates);return b.selectedTemplates=[],e},b.deleteSelectedTemplates=function(e){var t=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+b.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTemplates.forEach(function(e){S(e)}),b.selectedTemplates=[]})},b.deselectTemplates=function(){b.selectedTemplates=[]},b.selectAllTemplates=function(){b.selectedTemplates=b.templates.rows};var A=!0,E=1;function y(e){b.templates=e||{count:0,rows:[]}}function S(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(b.templates.rows,{id:e.id}),b.templates.count-=1,b.templates.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("TemplatesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_TRIGGER",g.trigger=angular.copy(l),g.triggers=r,g.newTrigger=!1,g.trigger||(g.trigger={channel:"voice"},g.title="TOOLS.NEW_TRIGGER",g.newTrigger=!0),g.addNewTrigger=function(){g.errors=[],d.trigger.save(g.trigger).$promise.then(function(e){g.triggers.unshift(e.toJSON()),o.success({title:"Trigger properly created",msg:g.trigger.name?g.trigger.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrigger=function(){g.errors=[],d.trigger.update({id:g.trigger.id},g.trigger).$promise.then(function(e){var t=_.find(g.triggers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"Trigger properly saved!",msg:g.trigger.name?g.trigger.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrigger=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The trigger will be deleted.").ariaLabel("Delete Trigger").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.trigger.delete({id:g.trigger.id}).$promise.then(function(){_.remove(g.triggers,{id:g.trigger.id}),o.success({title:"Trigger properly deleted!",msg:(g.trigger.name||"trigger")+" has been deleted!"}),v(g.trigger)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.trigger={},c.triggerActions={count:0,rows:[]},c.selectedTriggerActions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,action,data1,data2,data7,data3,data4,data5,data6",limit:10,page:1},c.arrayaction=_.keyBy([{option:"CONTACT_MANAGER",value:"'contactManager'",ngIf:"vm.trigger.channel == 'voice'"},{option:"INTEGRATIONS",value:"'integration'",ngIf:"vm.trigger.channel == 'voice' && ((vm.newAction && vm.hasModulePermissions.Integrations) || !vm.newAction)"},{option:"MOTION_BAR",value:"'motionbar'"},{option:"JSCRIPTY",value:"'jscripty'"},{option:"URL_FORWARD",value:"'urlForward'"},{option:"BROWSER",value:"'browser'"},{option:"BOT",value:"'bot'",ngIf:"vm.trigger.channel == 'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.browserValues=_.keyBy([{option:"Popup",value:"'0'"},{option:"CTI URL",value:"'1'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.autoCreateContact=_.keyBy([{option:"yes",value:"'1'"},{option:"no",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.urlForwardValues=_.keyBy([{option:"GET",value:"'GET'"},{option:"POST",value:"'POST'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.integrationValues=_.keyBy([{option:"Zendesk",value:"'zendesk'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1301])"},{option:"Salesforce",value:"'salesforce'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1302])"},{option:"SugarCRM",value:"'sugarcrm'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1305])"},{option:"Freshdesk",value:"'freshdesk'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1303])"},{option:"Desk",value:"'desk'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1306])"},{option:"Zoho",value:"'zoho'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1307])"},{option:"vTiger",value:"'vtiger'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1308])"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.motionbarValues=_.keyBy([{option:"Popup",value:"'0'"},{option:"CTI URL",value:"'1'"},{option:"Windows App",value:"'2'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.eventVariables=_.keyBy([{option:"yes",value:"'1'"},{option:"no",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.location=_.keyBy([{option:"NEW_TAB",value:"'0'"},{option:"NEW_WINDOW",value:"'1'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.init=function(e,t){c.trigger=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.trigger.id,c.query.ActionId=c.trigger.id,c.getTriggerActions(),n=[1301,1302,1303,1305,1306,1307,1308],d.hasModulesPermissions(["Integrations"]).then(function(e){c.hasModulePermissions=_.merge(c.hasModulePermissions,e)}).then(function(){d.hasSectionsPermissions(n).then(function(e){c.hasSectionPermissions=_.merge(c.hasSectionPermissions,e)})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTEGRATIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})});var n},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the action?").htmlContent("<b>"+(e.name||"action")+"</b> will be deleted.").ariaLabel("delete action").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getTriggerActions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.trigger.getActions(c.query,p).$promise},c.createOrEditTriggerAction=function(e,t){s.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:c.trigger,action:t,actions:c.triggerActions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedTriggerActions=function(){var e=angular.copy(c.selectedTriggerActions);return c.selectedTriggerActions=[],e},c.deleteTriggerAction=g,c.deleteSelectedTriggerActions=function(e){var t=s.confirm().title("Are you sure want to delete the selected actions?").htmlContent("<b>"+c.selectedTriggerActions.length+" selected</b> will be deleted.").ariaLabel("delete actions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedTriggerActions.forEach(function(e){g(e)}),c.selectedTriggerActions=[]})},d.hasRole("admin")?l.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){c.lists=e.rows||[],c.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){c.lists=e.rows||[],c.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var t=_.find(c.lists,{id:Number(e.data1)});a.push(t)}});for(var i=0;i<c.lists.length;i++){if(_.some(t,{resourceId:c.lists[i].id}))c.lists[i].canSelect=!0,n.push(c.lists[i]);else _.some(a,{id:c.lists[i].id})&&(c.lists[i].canSelect=!1,n.push(c.lists[i]))}c.lists=n})}else{var n=[],a=[];c.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var t=_.find(c.lists,{id:Number(e.data1)});a.push(t)}});for(var i=0;i<c.lists.length;i++){_.some(a,{id:c.lists[i].id})&&(c.lists[i].canSelect=!1,n.push(c.lists[i]))}c.lists=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){c.projects=e.rows||[],c.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){c.projects=e.rows||[],c.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var t=_.find(c.projects,{id:Number(e.data1)});a.push(t)}});for(var i=0;i<c.projects.length;i++){if(_.some(t,{resourceId:c.projects[i].id}))c.projects[i].canSelect=!0,n.push(c.projects[i]);else _.some(a,{id:c.projects[i].id})&&(c.projects[i].canSelect=!1,n.push(c.projects[i]))}c.projects=n})}else{var n=[],a=[];c.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var t=_.find(c.projects,{id:Number(e.data1)});a.push(t)}});for(var i=0;i<c.projects.length;i++){_.some(a,{id:c.projects[i].id})&&(c.projects[i].canSelect=!1,n.push(c.projects[i]))}c.projects=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intZendeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.zendeskAccounts=e.rows||[],c.zendeskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzendeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intDeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.deskAccounts=e.rows||[],c.deskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intZohoAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.zohoAccounts=e.rows||[],c.zohoAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzohoAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intSalesforceAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.salesforceAccounts=e.rows||[],c.salesforceAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsalesforceAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intSugarcrmAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.sugarcrmAccounts=e.rows||[],c.sugarcrmAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsugarcrmAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intFreshdeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.freshdeskAccounts=e.rows||[],c.freshdeskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfreshdeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intVtigerAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.vtigerAccounts=e.rows||[],c.vtigerAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvtigerAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intZendeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.zendeskConfigurations=e.rows||[],c.zendeskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzendeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intDeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.deskConfigurations=e.rows||[],c.deskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intZohoConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.zohoConfigurations=e.rows||[],c.zohoConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzohoConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intSalesforceConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.salesforceConfigurations=e.rows||[],c.salesforceConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsalesforceConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intSugarcrmConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.sugarcrmConfigurations=e.rows||[],c.sugarcrmConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsugarcrmConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intFreshdeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.freshdeskConfigurations=e.rows||[],c.freshdeskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfreshdeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intVtigerConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.vtigerConfigurations=e.rows||[],c.vtigerConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvtigerConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.templates=e.rows||[],c.templates.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.templates=e.rows||[],c.templates.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerActions.rows.forEach(function(e){if("motionbar"===e.action){var t=_.find(c.templates,{id:Number(e.data2)});a.push(t)}});for(var i=0;i<c.templates.length;i++){if(_.some(t,{resourceId:c.templates[i].id}))c.templates[i].canSelect=!0,n.push(c.templates[i]);else _.some(a,{id:c.templates[i].id})&&(c.templates[i].canSelect=!1,n.push(c.templates[i]))}c.templates=n})}else{var n=[],a=[];c.triggerActions.rows.forEach(function(e){if("motionbar"===e.action){var t=_.find(c.templates,{id:Number(e.data2)});a.push(t)}});for(var i=0;i<c.templates.length;i++){_.some(a,{id:c.templates[i].id})&&(c.templates[i].canSelect=!1,n.push(c.templates[i]))}c.templates=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.triggerActions=e||{count:0,rows:[]}}function g(e){l.action.delete({id:e.id}).$promise.then(function(){_.remove(c.triggerActions.rows,{id:e.id}),c.triggerActions.count-=1,c.triggerActions.rows.length||c.getTriggerActions(),r.success({title:"Action deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getTriggerActions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="TOOLS.EDIT_ACTION",v.action=angular.copy(l),v.actions=r,v.newAction=!1,v.trigger=angular.copy(d),v.action||(v.action={data3:"0",data4:"0",data5:"800",data6:"600"},v.title="TOOLS.NEW_ACTION",v.newAction=!0),t.params.id&&(v.action.ActionId=t.params.id),v.addNewAction=function(){v.errors=[],c.trigger.addAction({id:t.params.id},v.action).$promise.then(function(e){v.actions.unshift(e.toJSON()),o.success({title:"Action properly created",msg:v.action.name?v.action.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveAction=function(){v.errors=[],c.action.update({id:v.action.id},v.action).$promise.then(function(e){var t=_.find(v.actions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"Action properly saved!",msg:v.action.name?v.action.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteAction=function(e){v.errors=[];var t=a.confirm().title("Are you sure?").content("The action will be deleted.").ariaLabel("Delete Action").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){c.action.delete({id:v.action.id}).$promise.then(function(){_.remove(v.actions,{id:v.action.id}),o.success({title:"Action properly deleted!",msg:(v.action.name||"action")+" has been deleted!"}),h(v.action)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.onActionInit=function(){m.hasModulesPermissions(["Integrations"]).then(function(e){v.hasModulePermissions=_.merge(v.hasModulePermissions,e)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULES_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})},v.onIntegrationInit=function(){m.hasSectionsPermissions([1301,1302,1303,1305,1306,1307,1308]).then(function(e){v.hasSectionPermissions=_.merge(v.hasSectionPermissions,e)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})},v.closeDialog=h,m.hasRole("admin")?c.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){v.lists=e.rows||[],v.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){v.lists=e.rows||[],v.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.action&&(a=_.find(v.lists,{id:Number(v.action.data1)}));for(var i=0;i<v.lists.length;i++){_.some(t,{resourceId:v.lists[i].id})?(v.lists[i].canSelect=!0,n.push(v.lists[i])):a&&v.lists[i].id===a.id&&(v.lists[i].canSelect=!1,n.push(v.lists[i]))}v.lists=n})}else{var n=[],a=null;v.action&&(a=_.find(v.lists,{id:Number(v.action.data1)}));for(var i=0;i<v.lists.length;i++)a&&v.lists[i].id===a.id&&(v.lists[i].canSelect=!1,n.push(v.lists[i]));v.lists=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){v.projects=e.rows||[],v.projects.forEach(function(e){e.canSelect=!0})}).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.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){v.projects=e.rows||[],v.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.action&&(a=_.find(v.projects,{id:Number(v.action.data1)}));for(var i=0;i<v.projects.length;i++){_.some(t,{resourceId:v.projects[i].id})?(v.projects[i].canSelect=!0,n.push(v.projects[i])):a&&v.projects[i].id===a.id&&(v.projects[i].canSelect=!1,n.push(v.projects[i]))}v.projects=n})}else{var n=[],a=null;v.action&&(a=_.find(v.projects,{id:Number(v.action.data1)}));for(var i=0;i<v.projects.length;i++)a&&v.projects[i].id===a.id&&(v.projects[i].canSelect=!1,n.push(v.projects[i]));v.projects=n}}).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.intZendeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.zendeskAccounts=e.rows||[],v.zendeskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzendeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.deskAccounts=e.rows||[],v.deskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.zohoAccounts=e.rows||[],v.zohoAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzohoAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.salesforceAccounts=e.rows||[],v.salesforceAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsalesforceAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.sugarcrmAccounts=e.rows||[],v.sugarcrmAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsugarcrmAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.freshdeskAccounts=e.rows||[],v.freshdeskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfreshdeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.vtigerAccounts=e.rows||[],v.vtigerAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvtigerAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.zendeskConfigurations=e.rows||[],v.zendeskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzendeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.deskConfigurations=e.rows||[],v.deskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.zohoConfigurations=e.rows||[],v.zohoConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzohoConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.salesforceConfigurations=e.rows||[],v.salesforceConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsalesforceConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.sugarcrmConfigurations=e.rows||[],v.sugarcrmConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsugarcrmConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.freshdeskConfigurations=e.rows||[],v.freshdeskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfreshdeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.vtigerConfigurations=e.rows||[],v.vtigerConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvtigerConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.templates=e.rows||[],v.templates.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.templates=e.rows||[],v.templates.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.action&&(a=_.find(v.templates,{id:Number(v.action.data2)}));for(var i=0;i<v.templates.length;i++){_.some(t,{resourceId:v.templates[i].id})?(v.templates[i].canSelect=!0,n.push(v.templates[i])):a&&v.templates[i].id===a.id&&(v.templates[i].canSelect=!1,n.push(v.templates[i]))}v.templates=n})}else{var n=[],a=null;v.action&&(a=_.find(v.templates,{id:Number(v.action.data2)}));for(var i=0;i<v.templates.length;i++)a&&v.templates[i].id===a.id&&(v.templates[i].canSelect=!1,n.push(v.templates[i]));v.templates=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,t,n,s,a,i,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.trigger={},c.triggerAllConditions={count:0,rows:[]},c.selectedTriggerAllConditions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,field,operator,value",limit:10,page:1},c.arrayfield=_.keyBy([{option:"Queue",value:"'queue'",ngIf:"vm.trigger.channel == 'voice'"},{option:"Call_Status",value:"'lastevent'",ngIf:"vm.trigger.channel == 'voice'"},{option:"OutboundRoute",value:"'routeId'",ngIf:"vm.trigger.channel == 'voice'"},{option:"Account",value:"'account'",ngIf:"vm.trigger.channel != 'voice'"},{option:"Interaction",value:"'interaction'",ngIf:"vm.trigger.channel != 'voice'"},{option:"Message",value:"'message'",ngIf:"vm.trigger.channel != 'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.arrayoperator=_.keyBy([{option:"Equals",value:"'equals'"},{option:"Not_Equals",value:"'not_equals'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.callStatusValues=_.keyBy([{option:"Abandon",value:"'abandoned'"},{option:"Hangup",value:"'complete'"},{option:"Reject",value:"'rejected'"},{option:"Ring",value:"'called'"},{option:"Answer",value:"'connect'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.interactionStatusValues=_.keyBy([{option:"Opened",value:"'opened'"},{option:"Closed",value:"'closed'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.messageStatusValues=_.keyBy([{option:"Incoming",value:"'in'"},{option:"Outgoing",value:"'out'"},{option:"Accepted",value:"'accept'"},{option:"Rejected",value:"'reject'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.init=function(e,t){c.trigger=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.trigger.id,c.query.TriggerAllId=c.trigger.id,c.getTriggerAllConditions()},c.deleteConfirm=function(e,t){var n=i.confirm().title("Are you sure want to delete the allCondition?").htmlContent("<b>"+(e.name||"allCondition")+"</b> will be deleted.").ariaLabel("delete allCondition").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){v(e)},function(){console.log("CANCEL")})},c.success=g,c.getTriggerAllConditions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.trigger.getAllConditions(c.query,g).$promise},c.createOrEditTriggerAllCondition=function(e,t){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:c.trigger,allCondition:t,allconditions:c.triggerAllConditions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedTriggerAllConditions=function(){var e=angular.copy(c.selectedTriggerAllConditions);return c.selectedTriggerAllConditions=[],e},c.deleteTriggerAllCondition=v,c.deleteSelectedTriggerAllConditions=function(e){var t=i.confirm().title("Are you sure want to delete the selected allconditions?").htmlContent("<b>"+c.selectedTriggerAllConditions.length+" selected</b> will be deleted.").ariaLabel("delete allconditions").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){c.selectedTriggerAllConditions.forEach(function(e){v(e)}),c.selectedTriggerAllConditions=[]})},d.hasRole("admin")?l.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.chatAccounts=e.rows||[],c.chatAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.chatAccounts=e.rows||[],c.chatAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.chatAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.chatAccounts.length;i++){if(_.some(t,{resourceId:c.chatAccounts[i].id}))c.chatAccounts[i].canSelect=!0,n.push(c.chatAccounts[i]);else _.some(a,{id:c.chatAccounts[i].id})&&(c.chatAccounts[i].canSelect=!1,n.push(c.chatAccounts[i]))}c.chatAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.chatAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.chatAccounts.length;i++){_.some(a,{id:c.chatAccounts[i].id})&&(c.chatAccounts[i].canSelect=!1,n.push(c.chatAccounts[i]))}c.chatAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.mailAccounts=e.rows||[],c.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.mailAccounts=e.rows||[],c.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.mailAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.mailAccounts.length;i++){if(_.some(t,{resourceId:c.mailAccounts[i].id}))c.mailAccounts[i].canSelect=!0,n.push(c.mailAccounts[i]);else _.some(a,{id:c.mailAccounts[i].id})&&(c.mailAccounts[i].canSelect=!1,n.push(c.mailAccounts[i]))}c.mailAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.mailAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.mailAccounts.length;i++){_.some(a,{id:c.mailAccounts[i].id})&&(c.mailAccounts[i].canSelect=!1,n.push(c.mailAccounts[i]))}c.mailAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.smsAccounts=e.rows||[],c.smsAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.smsAccounts=e.rows||[],c.smsAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.smsAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.smsAccounts.length;i++){if(_.some(t,{resourceId:c.smsAccounts[i].id}))c.smsAccounts[i].canSelect=!0,n.push(c.smsAccounts[i]);else _.some(a,{id:c.smsAccounts[i].id})&&(c.smsAccounts[i].canSelect=!1,n.push(c.smsAccounts[i]))}c.smsAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.smsAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.smsAccounts.length;i++){_.some(a,{id:c.smsAccounts[i].id})&&(c.smsAccounts[i].canSelect=!1,n.push(c.smsAccounts[i]))}c.smsAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.faxAccounts=e.rows||[],c.faxAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.faxAccounts=e.rows||[],c.faxAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.faxAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.faxAccounts.length;i++){if(_.some(t,{resourceId:c.faxAccounts[i].id}))c.faxAccounts[i].canSelect=!0,n.push(c.faxAccounts[i]);else _.some(a,{id:c.faxAccounts[i].id})&&(c.faxAccounts[i].canSelect=!1,n.push(c.faxAccounts[i]))}c.faxAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.faxAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.faxAccounts.length;i++){_.some(a,{id:c.faxAccounts[i].id})&&(c.faxAccounts[i].canSelect=!1,n.push(c.faxAccounts[i]))}c.faxAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.openchannelAccounts=e.rows||[],c.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.openchannelAccounts=e.rows||[],c.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.openchannelAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.openchannelAccounts.length;i++){if(_.some(t,{resourceId:c.openchannelAccounts[i].id}))c.openchannelAccounts[i].canSelect=!0,n.push(c.openchannelAccounts[i]);else _.some(a,{id:c.openchannelAccounts[i].id})&&(c.openchannelAccounts[i].canSelect=!1,n.push(c.openchannelAccounts[i]))}c.openchannelAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.openchannelAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.openchannelAccounts.length;i++){_.some(a,{id:c.openchannelAccounts[i].id})&&(c.openchannelAccounts[i].canSelect=!1,n.push(c.openchannelAccounts[i]))}c.openchannelAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];d.hasRole("admin")?l.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){c.queues=e.rows||[],c.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){c.queues=e.rows||[],c.queues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?c.queues.forEach(function(e){e.type===m[a].type&&(e.canSelect=!0)}):n.push(l.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:c.queues,count:c.queues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("queue"===e.field){var t=_.find(c.queues,{name:e.value});a.push(t)}});for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)c.queues.forEach(function(e){e.type===m[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):_.some(a,{id:e.id})&&(e.canSelect=!1,n.push(e)))});c.queues=n}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){c.outboundRoutes=e.rows||[],c.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){c.outboundRoutes=e.rows||[],c.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var t=_.find(c.outboundRoutes,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.outboundRoutes.length;i++){if(_.some(t,{resourceId:c.outboundRoutes[i].id}))c.outboundRoutes[i].canSelect=!0,n.push(c.outboundRoutes[i]);else _.some(a,{id:c.outboundRoutes[i].id})&&(c.outboundRoutes[i].canSelect=!1,n.push(c.outboundRoutes[i]))}c.outboundRoutes=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var t=_.find(c.outboundRoutes,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.outboundRoutes.length;i++){_.some(a,{id:c.outboundRoutes[i].id})&&(c.outboundRoutes[i].canSelect=!1,n.push(c.outboundRoutes[i]))}c.outboundRoutes=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var u=!0,p=1;function g(e){c.triggerAllConditions=e||{count:0,rows:[]}}function v(e){l.condition.delete({id:e.id}).$promise.then(function(){_.remove(c.triggerAllConditions.rows,{id:e.id}),c.triggerAllConditions.count-=1,c.triggerAllConditions.rows.length||c.getTriggerAllConditions(),r.success({title:"AllCondition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){u?a(function(){u=!1}):(t||(p=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=p),c.getTriggerAllConditions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,n,a,s,i,o,r,l,d,c,m,u,p,g){var v=this;v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="TOOLS.EDIT_ALLCONDITION",v.allCondition=angular.copy(l),v.allconditions=r,v.newAllCondition=!1,v.trigger=angular.copy(d),v.allCondition||(v.allCondition={field:"queue",operator:"equals",value:"abandoned",value:"opened",value:"in"},v.title="TOOLS.NEW_ALLCONDITION",v.newAllCondition=!0),t.params.id&&(v.allCondition.TriggerAllId=t.params.id),v.addNewAllCondition=function(){v.errors=[],c.trigger.addAllCondition({id:t.params.id},v.allCondition).$promise.then(function(e){v.allconditions.unshift(e.toJSON()),o.success({title:"AllCondition properly created",msg:v.allCondition.name?v.allCondition.name+" has been created!":""}),f(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveAllCondition=function(){v.errors=[],c.condition.update({id:v.allCondition.id},v.allCondition).$promise.then(function(e){var t=_.find(v.allconditions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"AllCondition properly saved!",msg:v.allCondition.name?v.allCondition.name+" has been saved!":""}),f(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteAllCondition=function(e){v.errors=[];var t=a.confirm().title("Are you sure?").content("The allCondition will be deleted.").ariaLabel("Delete AllCondition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){c.condition.delete({id:v.allCondition.id}).$promise.then(function(){_.remove(v.allconditions,{id:v.allCondition.id}),o.success({title:"AllCondition properly deleted!",msg:(v.allCondition.name||"allCondition")+" has been deleted!"}),f(v.allCondition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=f,m.hasRole("admin")?c.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.chatAccounts=e.rows||[],v.chatAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.chatAccounts=e.rows||[],v.chatAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.chatAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.chatAccounts.length;i++){_.some(t,{resourceId:v.chatAccounts[i].id})?(v.chatAccounts[i].canSelect=!0,n.push(v.chatAccounts[i])):a&&v.chatAccounts[i].id===a.id&&(v.chatAccounts[i].canSelect=!1,n.push(v.chatAccounts[i]))}v.chatAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.chatAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.chatAccounts.length;i++)a&&v.chatAccounts[i].id===a.id&&(v.chatAccounts[i].canSelect=!1,n.push(v.chatAccounts[i]));v.chatAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.mailAccounts=e.rows||[],v.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.mailAccounts=e.rows||[],v.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.mailAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.mailAccounts.length;i++){_.some(t,{resourceId:v.mailAccounts[i].id})?(v.mailAccounts[i].canSelect=!0,n.push(v.mailAccounts[i])):a&&v.mailAccounts[i].id===a.id&&(v.mailAccounts[i].canSelect=!1,n.push(v.mailAccounts[i]))}v.mailAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.mailAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.mailAccounts.length;i++)a&&v.mailAccounts[i].id===a.id&&(v.mailAccounts[i].canSelect=!1,n.push(v.mailAccounts[i]));v.mailAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.smsAccounts=e.rows||[],v.smsAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.smsAccounts=e.rows||[],v.smsAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.smsAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.smsAccounts.length;i++){_.some(t,{resourceId:v.smsAccounts[i].id})?(v.smsAccounts[i].canSelect=!0,n.push(v.smsAccounts[i])):a&&v.smsAccounts[i].id===a.id&&(v.smsAccounts[i].canSelect=!1,n.push(v.smsAccounts[i]))}v.smsAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.smsAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.smsAccounts.length;i++)a&&v.smsAccounts[i].id===a.id&&(v.smsAccounts[i].canSelect=!1,n.push(v.smsAccounts[i]));v.smsAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.faxAccounts=e.rows||[],v.faxAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.faxAccounts=e.rows||[],v.faxAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.faxAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.faxAccounts.length;i++){_.some(t,{resourceId:v.faxAccounts[i].id})?(v.faxAccounts[i].canSelect=!0,n.push(v.faxAccounts[i])):a&&v.faxAccounts[i].id===a.id&&(v.faxAccounts[i].canSelect=!1,n.push(v.faxAccounts[i]))}v.faxAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.faxAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.faxAccounts.length;i++)a&&v.faxAccounts[i].id===a.id&&(v.faxAccounts[i].canSelect=!1,n.push(v.faxAccounts[i]));v.faxAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.openchannelAccounts=e.rows||[],v.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.openchannelAccounts=e.rows||[],v.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.openchannelAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.openchannelAccounts.length;i++){_.some(t,{resourceId:v.openchannelAccounts[i].id})?(v.openchannelAccounts[i].canSelect=!0,n.push(v.openchannelAccounts[i])):a&&v.openchannelAccounts[i].id===a.id&&(v.openchannelAccounts[i].canSelect=!1,n.push(v.openchannelAccounts[i]))}v.openchannelAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.openchannelAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.openchannelAccounts.length;i++)a&&v.openchannelAccounts[i].id===a.id&&(v.openchannelAccounts[i].canSelect=!1,n.push(v.openchannelAccounts[i]));v.openchannelAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var h=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];function f(e){a.hide(e)}m.hasRole("admin")?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){v.queues=e.rows||[],v.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){v.queues=e.rows||[],v.queues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<h.length;t++)e.push(c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:h[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<h.length;a++){var i=_.find(t,["sectionId",h[a].id]);i?i.autoAssociation?v.queues.forEach(function(e){e.type===h[a].type&&(e.canSelect=!0)}):n.push(c.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:v.queues,count:v.queues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;v.allCondition&&(a=_.find(v.queues,{name:v.allCondition.value}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<h.length;i++)v.queues.forEach(function(e){e.type===h[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});v.queues=n}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){v.outboundRoutes=e.rows||[],v.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",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){v.outboundRoutes=e.rows||[],v.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.outboundRoutes,{id:Number(v.allCondition.value)}));for(var i=0;i<v.outboundRoutes.length;i++){_.some(t,{resourceId:v.outboundRoutes[i].id})?(v.outboundRoutes[i].canSelect=!0,n.push(v.outboundRoutes[i])):a&&v.outboundRoutes[i].id===a.id&&(v.outboundRoutes[i].canSelect=!1,n.push(v.outboundRoutes[i]))}v.outboundRoutes=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.outboundRoutes,{id:Number(v.allCondition.value)}));for(var i=0;i<v.outboundRoutes.length;i++)a&&v.outboundRoutes[i].id===a.id&&(v.outboundRoutes[i].canSelect=!1,n.push(v.outboundRoutes[i]));v.outboundRoutes=n}}).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","allconditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,t,n,s,a,i,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.trigger={},c.triggerAnyConditions={count:0,rows:[]},c.selectedTriggerAnyConditions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,field,operator,value",limit:10,page:1},c.arrayfield=_.keyBy([{option:"Queue",value:"'queue'",ngIf:"vm.trigger.channel == 'voice'"},{option:"Call_Status",value:"'lastevent'",ngIf:"vm.trigger.channel == 'voice'"},{option:"OutboundRoute",value:"'routeId'",ngIf:"vm.trigger.channel == 'voice'"},{option:"Account",value:"'account'",ngIf:"vm.trigger.channel != 'voice'"},{option:"Interaction",value:"'interaction'",ngIf:"vm.trigger.channel != 'voice'"},{option:"Message",value:"'message'",ngIf:"vm.trigger.channel != 'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.arrayoperator=_.keyBy([{option:"Equals",value:"'equals'"},{option:"Not_Equals",value:"'not_equals'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.callStatusValues=_.keyBy([{option:"Abandon",value:"'abandoned'"},{option:"Hangup",value:"'complete'"},{option:"Reject",value:"'rejected'"},{option:"Ring",value:"'called'"},{option:"Answer",value:"'connect'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.interactionStatusValues=_.keyBy([{option:"Opened",value:"'opened'"},{option:"Closed",value:"'closed'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.messageStatusValues=_.keyBy([{option:"Incoming",value:"'in'"},{option:"Outgoing",value:"'out'"},{option:"Accepted",value:"'accept'"},{option:"Rejected",value:"'reject'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.init=function(e,t){c.trigger=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.trigger.id,c.query.TriggerAnyId=c.trigger.id,c.getTriggerAnyConditions()},c.deleteConfirm=function(e,t){var n=i.confirm().title("Are you sure want to delete the anyCondition?").htmlContent("<b>"+(e.name||"anyCondition")+"</b> will be deleted.").ariaLabel("delete anyCondition").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){v(e)},function(){console.log("CANCEL")})},c.success=g,c.getTriggerAnyConditions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.trigger.getAnyConditions(c.query,g).$promise},c.createOrEditTriggerAnyCondition=function(e,t){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:c.trigger,anyCondition:t,anyconditions:c.triggerAnyConditions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedTriggerAnyConditions=function(){var e=angular.copy(c.selectedTriggerAnyConditions);return c.selectedTriggerAnyConditions=[],e},c.deleteTriggerAnyCondition=v,c.deleteSelectedTriggerAnyConditions=function(e){var t=i.confirm().title("Are you sure want to delete the selected anyconditions?").htmlContent("<b>"+c.selectedTriggerAnyConditions.length+" selected</b> will be deleted.").ariaLabel("delete anyconditions").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){c.selectedTriggerAnyConditions.forEach(function(e){v(e)}),c.selectedTriggerAnyConditions=[]})},d.hasRole("admin")?l.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.chatAccounts=e.rows||[],c.chatAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.chatAccounts=e.rows||[],c.chatAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.chatAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.chatAccounts.length;i++){if(_.some(t,{resourceId:c.chatAccounts[i].id}))c.chatAccounts[i].canSelect=!0,n.push(c.chatAccounts[i]);else _.some(a,{id:c.chatAccounts[i].id})&&(c.chatAccounts[i].canSelect=!1,n.push(c.chatAccounts[i]))}c.chatAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.chatAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.chatAccounts.length;i++){_.some(a,{id:c.chatAccounts[i].id})&&(c.chatAccounts[i].canSelect=!1,n.push(c.chatAccounts[i]))}c.chatAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.mailAccounts=e.rows||[],c.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.mailAccounts=e.rows||[],c.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.mailAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.mailAccounts.length;i++){if(_.some(t,{resourceId:c.mailAccounts[i].id}))c.mailAccounts[i].canSelect=!0,n.push(c.mailAccounts[i]);else _.some(a,{id:c.mailAccounts[i].id})&&(c.mailAccounts[i].canSelect=!1,n.push(c.mailAccounts[i]))}c.mailAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.mailAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.mailAccounts.length;i++){_.some(a,{id:c.mailAccounts[i].id})&&(c.mailAccounts[i].canSelect=!1,n.push(c.mailAccounts[i]))}c.mailAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.smsAccounts=e.rows||[],c.smsAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.smsAccounts=e.rows||[],c.smsAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.smsAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.smsAccounts.length;i++){if(_.some(t,{resourceId:c.smsAccounts[i].id}))c.smsAccounts[i].canSelect=!0,n.push(c.smsAccounts[i]);else _.some(a,{id:c.smsAccounts[i].id})&&(c.smsAccounts[i].canSelect=!1,n.push(c.smsAccounts[i]))}c.smsAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.smsAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.smsAccounts.length;i++){_.some(a,{id:c.smsAccounts[i].id})&&(c.smsAccounts[i].canSelect=!1,n.push(c.smsAccounts[i]))}c.smsAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.faxAccounts=e.rows||[],c.faxAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.faxAccounts=e.rows||[],c.faxAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.faxAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.faxAccounts.length;i++){if(_.some(t,{resourceId:c.faxAccounts[i].id}))c.faxAccounts[i].canSelect=!0,n.push(c.faxAccounts[i]);else _.some(a,{id:c.faxAccounts[i].id})&&(c.faxAccounts[i].canSelect=!1,n.push(c.faxAccounts[i]))}c.faxAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.faxAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.faxAccounts.length;i++){_.some(a,{id:c.faxAccounts[i].id})&&(c.faxAccounts[i].canSelect=!1,n.push(c.faxAccounts[i]))}c.faxAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.openchannelAccounts=e.rows||[],c.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.openchannelAccounts=e.rows||[],c.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.openchannelAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.openchannelAccounts.length;i++){if(_.some(t,{resourceId:c.openchannelAccounts[i].id}))c.openchannelAccounts[i].canSelect=!0,n.push(c.openchannelAccounts[i]);else _.some(a,{id:c.openchannelAccounts[i].id})&&(c.openchannelAccounts[i].canSelect=!1,n.push(c.openchannelAccounts[i]))}c.openchannelAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.openchannelAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.openchannelAccounts.length;i++){_.some(a,{id:c.openchannelAccounts[i].id})&&(c.openchannelAccounts[i].canSelect=!1,n.push(c.openchannelAccounts[i]))}c.openchannelAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];d.hasRole("admin")?l.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){c.queues=e.rows||[],c.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){c.queues=e.rows||[],c.queues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?c.queues.forEach(function(e){e.type===m[a].type&&(e.canSelect=!0)}):n.push(l.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:c.queues,count:c.queues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("queue"===e.field){var t=_.find(c.queues,{name:e.value});a.push(t)}});for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)c.queues.forEach(function(e){e.type===m[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):_.some(a,{id:e.id})&&(e.canSelect=!1,n.push(e)))});c.queues=n}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){c.outboundRoutes=e.rows||[],c.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){c.outboundRoutes=e.rows||[],c.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("routeId"===e.field){var t=_.find(c.outboundRoutes,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.outboundRoutes.length;i++){if(_.some(t,{resourceId:c.outboundRoutes[i].id}))c.outboundRoutes[i].canSelect=!0,n.push(c.outboundRoutes[i]);else _.some(a,{id:c.outboundRoutes[i].id})&&(c.outboundRoutes[i].canSelect=!1,n.push(c.outboundRoutes[i]))}c.outboundRoutes=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("routeId"===e.field){var t=_.find(c.outboundRoutes,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.outboundRoutes.length;i++){_.some(a,{id:c.outboundRoutes[i].id})&&(c.outboundRoutes[i].canSelect=!1,n.push(c.outboundRoutes[i]))}c.outboundRoutes=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var u=!0,p=1;function g(e){c.triggerAnyConditions=e||{count:0,rows:[]}}function v(e){l.condition.delete({id:e.id}).$promise.then(function(){_.remove(c.triggerAnyConditions.rows,{id:e.id}),c.triggerAnyConditions.count-=1,c.triggerAnyConditions.rows.length||c.getTriggerAnyConditions(),r.success({title:"AnyCondition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){u?a(function(){u=!1}):(t||(p=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=p),c.getTriggerAnyConditions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,n,a,s,i,o,r,l,d,c,m,u,p,g){var v=this;v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="TOOLS.EDIT_ANYCONDITION",v.anyCondition=angular.copy(l),v.anyconditions=r,v.newAnyCondition=!1,v.trigger=angular.copy(d),v.anyCondition||(v.anyCondition={field:"queue",operator:"equals",value:"abandoned",value:"opened",value:"in"},v.title="TOOLS.NEW_ANYCONDITION",v.newAnyCondition=!0),t.params.id&&(v.anyCondition.TriggerAnyId=t.params.id),v.addNewAnyCondition=function(){v.errors=[],c.trigger.addAnyCondition({id:t.params.id},v.anyCondition).$promise.then(function(e){v.anyconditions.unshift(e.toJSON()),o.success({title:"AnyCondition properly created",msg:v.anyCondition.name?v.anyCondition.name+" has been created!":""}),f(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveAnyCondition=function(){v.errors=[],c.condition.update({id:v.anyCondition.id},v.anyCondition).$promise.then(function(e){var t=_.find(v.anyconditions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"AnyCondition properly saved!",msg:v.anyCondition.name?v.anyCondition.name+" has been saved!":""}),f(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteAnyCondition=function(e){v.errors=[];var t=a.confirm().title("Are you sure?").content("The anyCondition will be deleted.").ariaLabel("Delete AnyCondition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){c.condition.delete({id:v.anyCondition.id}).$promise.then(function(){_.remove(v.anyconditions,{id:v.anyCondition.id}),o.success({title:"AnyCondition properly deleted!",msg:(v.anyCondition.name||"anyCondition")+" has been deleted!"}),f(v.anyCondition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=f,m.hasRole("admin")?c.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.chatAccounts=e.rows||[],v.chatAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.chatAccounts=e.rows||[],v.chatAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.chatAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.chatAccounts.length;i++){_.some(t,{resourceId:v.chatAccounts[i].id})?(v.chatAccounts[i].canSelect=!0,n.push(v.chatAccounts[i])):a&&v.chatAccounts[i].id===a.id&&(v.chatAccounts[i].canSelect=!1,n.push(v.chatAccounts[i]))}v.chatAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.chatAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.chatAccounts.length;i++)a&&v.chatAccounts[i].id===a.id&&(v.chatAccounts[i].canSelect=!1,n.push(v.chatAccounts[i]));v.chatAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.mailAccounts=e.rows||[],v.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.mailAccounts=e.rows||[],v.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.mailAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.mailAccounts.length;i++){_.some(t,{resourceId:v.mailAccounts[i].id})?(v.mailAccounts[i].canSelect=!0,n.push(v.mailAccounts[i])):a&&v.mailAccounts[i].id===a.id&&(v.mailAccounts[i].canSelect=!1,n.push(v.mailAccounts[i]))}v.mailAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.mailAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.mailAccounts.length;i++)a&&v.mailAccounts[i].id===a.id&&(v.mailAccounts[i].canSelect=!1,n.push(v.mailAccounts[i]));v.mailAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.smsAccounts=e.rows||[],v.smsAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.smsAccounts=e.rows||[],v.smsAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.smsAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.smsAccounts.length;i++){_.some(t,{resourceId:v.smsAccounts[i].id})?(v.smsAccounts[i].canSelect=!0,n.push(v.smsAccounts[i])):a&&v.smsAccounts[i].id===a.id&&(v.smsAccounts[i].canSelect=!1,n.push(v.smsAccounts[i]))}v.smsAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.smsAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.smsAccounts.length;i++)a&&v.smsAccounts[i].id===a.id&&(v.smsAccounts[i].canSelect=!1,n.push(v.smsAccounts[i]));v.smsAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.faxAccounts=e.rows||[],v.faxAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.faxAccounts=e.rows||[],v.faxAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.faxAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.faxAccounts.length;i++){_.some(t,{resourceId:v.faxAccounts[i].id})?(v.faxAccounts[i].canSelect=!0,n.push(v.faxAccounts[i])):a&&v.faxAccounts[i].id===a.id&&(v.faxAccounts[i].canSelect=!1,n.push(v.faxAccounts[i]))}v.faxAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.faxAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.faxAccounts.length;i++)a&&v.faxAccounts[i].id===a.id&&(v.faxAccounts[i].canSelect=!1,n.push(v.faxAccounts[i]));v.faxAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.openchannelAccounts=e.rows||[],v.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.openchannelAccounts=e.rows||[],v.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.openchannelAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.openchannelAccounts.length;i++){_.some(t,{resourceId:v.openchannelAccounts[i].id})?(v.openchannelAccounts[i].canSelect=!0,n.push(v.openchannelAccounts[i])):a&&v.openchannelAccounts[i].id===a.id&&(v.openchannelAccounts[i].canSelect=!1,n.push(v.openchannelAccounts[i]))}v.openchannelAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.openchannelAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.openchannelAccounts.length;i++)a&&v.openchannelAccounts[i].id===a.id&&(v.openchannelAccounts[i].canSelect=!1,n.push(v.openchannelAccounts[i]));v.openchannelAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var h=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];function f(e){a.hide(e)}m.hasRole("admin")?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){v.queues=e.rows||[],v.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){v.queues=e.rows||[],v.queues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<h.length;t++)e.push(c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:h[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<h.length;a++){var i=_.find(t,["sectionId",h[a].id]);i?i.autoAssociation?v.queues.forEach(function(e){e.type===h[a].type&&(e.canSelect=!0)}):n.push(c.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:v.queues,count:v.queues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;v.anyCondition&&(a=_.find(v.queues,{name:v.anyCondition.value}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<h.length;i++)v.queues.forEach(function(e){e.type===h[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});v.queues=n}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){v.outboundRoutes=e.rows||[],v.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",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){v.outboundRoutes=e.rows||[],v.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.outboundRoutes,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.outboundRoutes.length;i++){_.some(t,{resourceId:v.outboundRoutes[i].id})?(v.outboundRoutes[i].canSelect=!0,n.push(v.outboundRoutes[i])):a&&v.outboundRoutes[i].id===a.id&&(v.outboundRoutes[i].canSelect=!1,n.push(v.outboundRoutes[i]))}v.outboundRoutes=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.outboundRoutes,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.outboundRoutes.length;i++)a&&v.outboundRoutes[i].id===a.id&&(v.outboundRoutes[i].canSelect=!1,n.push(v.outboundRoutes[i]));v.outboundRoutes=n}}).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","anyconditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.host(),u.trigger=c||e.params.trigger||{},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.gotoTriggers=function(){e.go("app.tools.triggers")},u.saveTrigger=function(){r.trigger.update({id:u.trigger.id},u.trigger).$promise.then(function(){l.success({title:"Trigger updated!",msg:u.trigger.name?u.trigger.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.triggers=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="triggers",b.listOrder="",b.listOrderAsc=null,b.selectedTriggers=[],b.query={fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,page:1},b.arraychannel=_.keyBy([{option:"Voice",value:"'voice'"},{option:"Openchannel",value:"'openchannel'",ngIf:"vm.license.openchannel"},{option:"Chat",value:"'chat'",ngIf:"vm.license.chat"},{option:"Mail",value:"'mail'",ngIf:"vm.license.mail"},{option:"Sms",value:"'sms'",ngIf:"vm.license.messaging"},{option:"Fax",value:"'fax'",ngIf:"vm.license.fax"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=i.confirm().title("Are you sure want to delete the "+_.startCase("trigger")+"?").htmlContent("<b>"+(e.name||"trigger")+"</b> will be deleted.").ariaLabel("delete trigger").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTriggers=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.trigger.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Triggers",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTrigger=function(e,t){i.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:t,triggers:b.triggers.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTrigger=S,b.exportSelectedTriggers=function(){var e=angular.copy(b.selectedTriggers);return b.selectedTriggers=[],e},b.deleteSelectedTriggers=function(e){var t=i.confirm().title("Are you sure want to delete the selected triggers?").htmlContent("<b>"+b.selectedTriggers.length+" selected</b> will be deleted.").ariaLabel("delete Triggers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTriggers.forEach(function(e){S(e)}),b.selectedTriggers=[]})},b.deselectTriggers=function(){b.selectedTriggers=[]},b.selectAllTriggers=function(){b.selectedTriggers=b.triggers.rows};var A=!0,E=1;function y(e){b.triggers=e||{count:0,rows:[]}}function S(e){m.trigger.delete({id:e.id}).$promise.then(function(){_.remove(b.triggers.rows,{id:e.id}),b.triggers.count-=1,b.triggers.rows.length||b.getTriggers(),p.success({title:_.startCase("Trigger")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTriggers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("TriggersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.trunks,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(n,e,a,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||n.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=n.params.tab||0,u.gotogoto=function(e,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,t){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){n.go("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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.trunk&&(a=_.find(u.contexts,{name:u.trunk.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.trunks=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="trunks",b.listOrder="",b.listOrderAsc=null,b.selectedTrunks=[],b.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},b.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.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"),"")}),b.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{trunk:e,trunks:b.trunks?b.trunks.rows:[],crudPermissions:b.crudPermissions}})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.voice.realtime.trunks",{})}},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTrunks=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.trunk.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Trunks",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTrunk=function(e,t){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:t,trunks:b.trunks.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTrunk=S,b.exportSelectedTrunks=function(){var e=angular.copy(b.selectedTrunks);return b.selectedTrunks=[],e},b.deleteSelectedTrunks=function(e){var t=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+b.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTrunks.forEach(function(e){S(e)}),b.selectedTrunks=[]})},b.deselectTrunks=function(){b.selectedTrunks=[]},b.selectAllTrunks=function(){b.selectedTrunks=b.trunks.rows};var A=!0,E=1;function y(e){b.trunks=e||{count:0,rows:[]}}function S(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(b.trunks.rows,{id:e.id}),b.trunks.count-=1,b.trunks.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("TrunksController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.variables,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.variables=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="variables",b.listOrder="",b.listOrderAsc=null,b.selectedVariables=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{variable:e,variables:b.variables.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVariables=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.variable.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Variables",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVariable=function(e,t){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:t,variables:b.variables.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVariable=S,b.exportSelectedVariables=function(){var e=angular.copy(b.selectedVariables);return b.selectedVariables=[],e},b.deleteSelectedVariables=function(e){var t=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+b.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVariables.forEach(function(e){S(e)}),b.selectedVariables=[]})},b.deselectVariables=function(){b.selectedVariables=[]},b.selectAllVariables=function(){b.selectedVariables=b.variables.rows};var A=!0,E=1;function y(e){b.variables=e||{count:0,rows:[]}}function S(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(b.variables.rows,{id:e.id}),b.variables.count-=1,b.variables.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.chanSpies=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="chanSpies",b.listOrder="",b.listOrderAsc=null,b.selectedChanSpies=[],b.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editdialog=function(e,t){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:b.chanSpies.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getChanSpies=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceChanSpy.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ChanSpies",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditchanSpy=function(e,t){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:t,chanSpies:b.chanSpies.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deletechanSpy=S,b.exportSelectedChanSpies=function(){var e=angular.copy(b.selectedChanSpies);return b.selectedChanSpies=[],e},b.deleteSelectedChanSpies=function(e){var t=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+b.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedChanSpies.forEach(function(e){S(e)}),b.selectedChanSpies=[]})},b.deselectChanSpies=function(){b.selectedChanSpies=[]},b.selectAllChanSpies=function(){b.selectedChanSpies=b.chanSpies.rows};var A=!0,E=1;function y(e){b.chanSpies=e||{count:0,rows:[]}}function S(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(b.chanSpies.rows,{id:e.id}),b.chanSpies.count-=1,b.chanSpies.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("ChanSpiesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.chanSpies,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.contexts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="contexts",b.listOrder="",b.listOrderAsc=null,b.selectedContexts=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{context:e,contexts:b.contexts.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getContexts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceContext.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Contexts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditContext=function(e,t){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:t,contexts:b.contexts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteContext=S,b.exportSelectedContexts=function(){var e=angular.copy(b.selectedContexts);return b.selectedContexts=[],e},b.deleteSelectedContexts=function(e){var t=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+b.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedContexts.forEach(function(e){S(e)}),b.selectedContexts=[]})},b.deselectContexts=function(){b.selectedContexts=[]},b.selectAllContexts=function(){b.selectedContexts=b.contexts.rows};var A=!0,E=1;function y(e){b.contexts=e||{count:0,rows:[]}}function S(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(b.contexts.rows,{id:e.id}),b.contexts.count-=1,b.contexts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("ContextsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.contexts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.inboundroutes,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The inboundroute will be deleted.").ariaLabel("Delete InboundRoute").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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"}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.inboundroute&&(a=_.find(g.contexts,{name:g.inboundroute.context}));for(var i=0;i<g.contexts.length;i++){_.some(t,{resourceId:g.contexts[i].id})?(g.contexts[i].canSelect=!0,n.push(g.contexts[i])):a&&g.contexts[i].id===a.id&&(g.contexts[i].canSelect=!1,n.push(g.contexts[i]))}g.contexts=n}):d.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})})}).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 t(e,t){if(u.inboundrouteApps.rows.length){var n=u.inboundrouteApps.rows[t]?u.inboundrouteApps.rows[t]:u.inboundrouteApps.rows[0];i.show({controller:"EditInboundApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundroutes/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundrouteApp:n,inboundroute:u.inboundroute,crudPermissions:u.crudPermissions}}).then(function(e){e&&(e.id?u.inboundrouteApps.rows[t]=e:u.inboundrouteApps.rows.splice(t,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"],t=2,n=[];n.push({type:"inbound",app:"Set",appdata:"CDR(type)=inbound",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:t++,VoiceExtensionId:u.inboundroute.id}),n.push({type:"inbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:t++,VoiceExtensionId:u.inboundroute.id}),n.push({type:"inbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:t++,VoiceExtensionId:u.inboundroute.id}),n.push({type:"inbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:t++,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+t+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+t+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+t+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+t+i++,VoiceExtensionId:u.inboundroute.id})));for(var l=0;l<s.intervals.length;l++){var d=t+s.intervals.length,c=l===s.intervals.length-1?t+o.length+r.length+2:t+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:t+l,VoiceExtensionId:u.inboundroute.id})}s.priority=o.length?_.last(o).priority+1:t,t=(r.length?_.last(r).priority:s.priority)+1,n=_.concat(n,o,[s],r)}n.push({type:"inbound",app:"Hangup",exten:u.inboundroute.exten,context:u.inboundroute.context,priority:t,VoiceExtensionId:u.inboundroute.id}),m.voiceExtension.addApplications({id:u.inboundroute.id},_.sortBy(n,"priority")).$promise.then(function(e){u.inboundrouteApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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"},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"},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"},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"},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"},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"},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"},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"},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"},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){t(e,e.newIndex)},onSort:function(e){o()}},u.init=function(e,t){u.inboundroute=e,u.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){u.inboundrouteApps.rows.splice(t,1),o()},function(){console.log("CANCEL")})},u.getInboundRouteApps=function(){u.promise=m.voiceExtension.get(u.query,n).$promise},u.editInboundRouteApp=t,u.editInterval=function(e,t){if(u.inboundrouteApps.rows.length){var n=u.inboundrouteApps.rows[t]?u.inboundrouteApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:u.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.projects=e.rows||[],l.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.projects=e.rows||[],l.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agi&&(a=_.find(l.projects,{name:l.agi.project}));for(var i=0;i<l.projects.length;i++){_.some(t,{resourceId:l.projects[i].id})?(l.projects[i].canSelect=!0,n.push(l.projects[i])):a&&l.projects[i].id===a.id&&(l.projects[i].canSelect=!1,n.push(l.projects[i]))}l.projects=n})}else{var n=[],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,n.push(l.projects[i]));l.projects=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.externaldial&&(a=_.find(l.trunks,{name:l.externaldial.trunk}));for(var i=0;i<l.trunks.length;i++){_.some(t,{resourceId:l.trunks[i].id})?(l.trunks[i].canSelect=!0,n.push(l.trunks[i])):a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,n.push(l.trunks[i]))}l.trunks=n})}else{var n=[],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,n.push(l.trunks[i]));l.trunks=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.goto&&(a=_.find(l.contexts,{name:l.goto.context}));for(var i=0;i<l.contexts.length;i++){_.some(t,{resourceId:l.contexts[i].id})?(l.contexts[i].canSelect=!0,n.push(l.contexts[i])):a&&l.contexts[i].id===a.id&&(l.contexts[i].canSelect=!1,n.push(l.contexts[i]))}l.contexts=n}):s.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})})}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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(t,s,n,e,a,o,i,r){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=r,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(",");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(",");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(",")}u(l.internaldial)},l.closeDialog=u;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}];function u(e){t.hide(e)}i.hasRole("admin")?o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?l.users.forEach(function(e){e.role===m[a].role&&(e.canSelect=!0)}):n.push(o.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:l.users,count:l.users.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;l.internaldial&&(a=_.find(l.users,{name:l.internaldial.user}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)l.users.forEach(function(e){e.role===m[i].role&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});l.users=n}).catch(function(e){n.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.playback&&(a=_.find(l.sounds,{save_name:l.playback.sound}));for(var i=0;i<l.sounds.length;i++){_.some(t,{resourceId:l.sounds[i].id})?(l.sounds[i].canSelect=!0,n.push(l.sounds[i])):a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,n.push(l.sounds[i]))}l.sounds=n})}else{var n=[],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,n.push(l.sounds[i]));l.sounds=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.sounds,{save_name:l.queue.sound}));for(var i=0;i<l.sounds.length;i++){_.some(t,{resourceId:l.sounds[i].id})?(l.sounds[i].canSelect=!0,n.push(l.sounds[i])):a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,n.push(l.sounds[i]))}l.sounds=n})}else{var n=[],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,n.push(l.sounds[i]));l.sounds=n}}).catch(function(e){n.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:401}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,s,n,e,a,o,i,r){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=r,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(",");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(",");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(",")}u(l.ringgroup)},l.closeDialog=u;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}];function u(e){t.hide(e)}i.hasRole("admin")?o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?l.users.forEach(function(e){e.role===m[a].role&&(e.canSelect=!0)}):n.push(o.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:l.users,count:l.users.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;l.ringgroup&&(a=_.find(l.users,{name:l.ringgroup.multipleUsers}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)l.users.forEach(function(e){e.role===m[i].role&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});l.users=n}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.variables=e.rows||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.variables=e.rows||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.set&&(a=_.find(l.variables,{name:l.set.name}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.voiceMails=e.rows||[],l.voiceMails.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMails",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceMail.get({fields:"id,mailbox",sort:"mailbox"}).$promise.then(function(e){l.voiceMails=e.rows||[],l.voiceMails.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:406}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.voicemail&&(a=_.find(l.voiceMails,{mailbox:l.voicemail.voiceMail}));for(var i=0;i<l.voiceMails.length;i++){_.some(t,{resourceId:l.voiceMails[i].id})?(l.voiceMails[i].canSelect=!0,n.push(l.voiceMails[i])):a&&l.voiceMails[i].id===a.id&&(l.voiceMails[i].canSelect=!1,n.push(l.voiceMails[i]))}l.voiceMails=n})}else{var n=[],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,n.push(l.voiceMails[i]));l.voiceMails=n}}).catch(function(e){n.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,t,n,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=t.protocol()+"://"+t.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")},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"}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.inboundroute&&(a=_.find(u.contexts,{name:u.inboundroute.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.inboundroutes=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="inboundroutes",b.listOrder="",b.listOrderAsc=null,b.selectedInboundRoutes=[],b.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},b.editstate=function(e,t){n.go("app.voice.inboundroutes.edit",{id:e.id,inboundroute:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getInboundRoutes=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceExtension.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="InboundRoutes",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditInboundRoute=function(e,t){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:t,inboundroutes:b.inboundroutes.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteInboundRoute=S,b.exportSelectedInboundRoutes=function(){var e=angular.copy(b.selectedInboundRoutes);return b.selectedInboundRoutes=[],e},b.deleteSelectedInboundRoutes=function(e){var t=i.confirm().title("Are you sure want to delete the selected inboundroutes?").htmlContent("<b>"+b.selectedInboundRoutes.length+" selected</b> will be deleted.").ariaLabel("delete InboundRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedInboundRoutes.forEach(function(e){S(e)}),b.selectedInboundRoutes=[]})},b.deselectInboundRoutes=function(){b.selectedInboundRoutes=[]},b.selectAllInboundRoutes=function(){b.selectedInboundRoutes=b.inboundroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.inboundroute&&(a=_.find(b.contexts,{name:b.inboundroute.context}));for(var i=0;i<b.contexts.length;i++){_.some(t,{resourceId:b.contexts[i].id})?(b.contexts[i].canSelect=!0,n.push(b.contexts[i])):a&&b.contexts[i].id===a.id&&(b.contexts[i].canSelect=!1,n.push(b.contexts[i]))}b.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})})}).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 A=!0,E=1;function y(e){b.inboundroutes=e||{count:0,rows:[]}}function S(e){m.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(b.inboundroutes.rows,{id:e.id}),b.inboundroutes.count-=1,b.inboundroutes.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getInboundRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","inboundroutes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("InboundRoutesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.internalroutes,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The internalroute will be deleted.").ariaLabel("Delete InternalRoute").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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"}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.internalroute&&(a=_.find(g.contexts,{name:g.internalroute.context}));for(var i=0;i<g.contexts.length;i++){_.some(t,{resourceId:g.contexts[i].id})?(g.contexts[i].canSelect=!0,n.push(g.contexts[i])):a&&g.contexts[i].id===a.id&&(g.contexts[i].canSelect=!1,n.push(g.contexts[i]))}g.contexts=n}):d.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})})}).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 t(e,t){if(u.internalrouteApps.rows.length){var n=u.internalrouteApps.rows[t]?u.internalrouteApps.rows[t]:u.internalrouteApps.rows[0];i.show({controller:"EditInternalApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalroutes/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalrouteApp:n,internalroute:u.internalroute,crudPermissions:u.crudPermissions}}).then(function(e){e&&(e.id?u.internalrouteApps.rows[t]=e:u.internalrouteApps.rows.splice(t,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"],t=2,n=[];n.push({type:"internal",app:"Set",appdata:"CDR(type)=internal",context:u.internalroute.context,exten:u.internalroute.exten,priority:t++,VoiceExtensionId:u.internalroute.id}),n.push({type:"internal",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:u.internalroute.context,exten:u.internalroute.exten,priority:t++,VoiceExtensionId:u.internalroute.id}),n.push({type:"internal",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:u.internalroute.context,exten:u.internalroute.exten,priority:t++,VoiceExtensionId:u.internalroute.id}),n.push({type:"internal",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:u.internalroute.context,exten:u.internalroute.exten,priority:t++,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+t+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+t+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+t+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+t+i++,VoiceExtensionId:u.internalroute.id})));for(var l=0;l<s.intervals.length;l++){var d=t+s.intervals.length,c=l===s.intervals.length-1?t+o.length+r.length+2:t+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:t+l,VoiceExtensionId:u.internalroute.id})}s.priority=o.length?_.last(o).priority+1:t,t=(r.length?_.last(r).priority:s.priority)+1,n=_.concat(n,o,[s],r)}n.push({type:"internal",app:"Hangup",exten:u.internalroute.exten,context:u.internalroute.context,priority:t,VoiceExtensionId:u.internalroute.id}),m.voiceExtension.addApplications({id:u.internalroute.id},_.sortBy(n,"priority")).$promise.then(function(e){u.internalrouteApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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"},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"},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"},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"},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"},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"},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"},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"},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"},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){t(e,e.newIndex)},onSort:function(e){o()}},u.init=function(e,t){u.internalroute=e,u.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){u.internalrouteApps.rows.splice(t,1),o()},function(){console.log("CANCEL")})},u.getInternalRouteApps=function(){u.promise=m.voiceExtension.get(u.query,n).$promise},u.editInternalRouteApp=t,u.editInterval=function(e,t){if(u.internalrouteApps.rows.length){var n=u.internalrouteApps.rows[t]?u.internalrouteApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:u.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.projects=e.rows||[],l.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.projects=e.rows||[],l.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agi&&(a=_.find(l.projects,{name:l.agi.project}));for(var i=0;i<l.projects.length;i++){_.some(t,{resourceId:l.projects[i].id})?(l.projects[i].canSelect=!0,n.push(l.projects[i])):a&&l.projects[i].id===a.id&&(l.projects[i].canSelect=!1,n.push(l.projects[i]))}l.projects=n})}else{var n=[],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,n.push(l.projects[i]));l.projects=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.externaldial&&(a=_.find(l.trunks,{name:l.externaldial.trunk}));for(var i=0;i<l.trunks.length;i++){_.some(t,{resourceId:l.trunks[i].id})?(l.trunks[i].canSelect=!0,n.push(l.trunks[i])):a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,n.push(l.trunks[i]))}l.trunks=n})}else{var n=[],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,n.push(l.trunks[i]));l.trunks=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.goto&&(a=_.find(l.contexts,{name:l.goto.context}));for(var i=0;i<l.contexts.length;i++){_.some(t,{resourceId:l.contexts[i].id})?(l.contexts[i].canSelect=!0,n.push(l.contexts[i])):a&&l.contexts[i].id===a.id&&(l.contexts[i].canSelect=!1,n.push(l.contexts[i]))}l.contexts=n}):s.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})})}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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(t,s,n,e,a,o,i,r){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=r,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(",");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(",");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(",")}u(l.internaldial)},l.closeDialog=u;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}];function u(e){t.hide(e)}i.hasRole("admin")?o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?l.users.forEach(function(e){e.role===m[a].role&&(e.canSelect=!0)}):n.push(o.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:l.users,count:l.users.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;l.internaldial&&(a=_.find(l.users,{name:l.internaldial.user}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)l.users.forEach(function(e){e.role===m[i].role&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});l.users=n}).catch(function(e){n.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.playback&&(a=_.find(l.sounds,{save_name:l.playback.appdata}));for(var i=0;i<l.sounds.length;i++){_.some(t,{resourceId:l.sounds[i].id})?(l.sounds[i].canSelect=!0,n.push(l.sounds[i])):a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,n.push(l.sounds[i]))}l.sounds=n})}else{var n=[],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,n.push(l.sounds[i]));l.sounds=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.sounds,{save_name:l.queue.sound}));for(var i=0;i<l.sounds.length;i++){_.some(t,{resourceId:l.sounds[i].id})?(l.sounds[i].canSelect=!0,n.push(l.sounds[i])):a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,n.push(l.sounds[i]))}l.sounds=n})}else{var n=[],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,n.push(l.sounds[i]));l.sounds=n}}).catch(function(e){n.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:401}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,s,n,e,a,o,i,r){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=r,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(",");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(",");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(",")}u(l.ringgroup)},l.closeDialog=u;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}];function u(e){t.hide(e)}i.hasRole("admin")?o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?l.users.forEach(function(e){e.role===m[a].role&&(e.canSelect=!0)}):n.push(o.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:l.users,count:l.users.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;l.ringgroup&&(a=_.find(l.users,{name:l.ringgroup.multipleUsers}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)l.users.forEach(function(e){e.role===m[i].role&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});l.users=n}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.variables=e.rows||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.variables=e.rows||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.set&&(a=_.find(l.variables,{name:l.set.name}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.voiceMails=e.rows||[],l.voiceMails.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMails",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceMail.get({fields:"id,mailbox",sort:"mailbox"}).$promise.then(function(e){l.voiceMails=e.rows||[],l.voiceMails.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:406}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.voicemail&&(a=_.find(l.voiceMails,{mailbox:l.voicemail.voiceMail}));for(var i=0;i<l.voiceMails.length;i++){_.some(t,{resourceId:l.voiceMails[i].id})?(l.voiceMails[i].canSelect=!0,n.push(l.voiceMails[i])):a&&l.voiceMails[i].id===a.id&&(l.voiceMails[i].canSelect=!1,n.push(l.voiceMails[i]))}l.voiceMails=n})}else{var n=[],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,n.push(l.voiceMails[i]));l.voiceMails=n}}).catch(function(e){n.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,t,n,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=t.protocol()+"://"+t.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")},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"}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.internalroute&&(a=_.find(u.contexts,{name:u.internalroute.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.internalroutes=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="internalroutes",b.listOrder="",b.listOrderAsc=null,b.selectedInternalRoutes=[],b.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},b.editstate=function(e,t){n.go("app.voice.internalroutes.edit",{id:e.id,internalroute:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getInternalRoutes=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceExtension.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="InternalRoutes",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditInternalRoute=function(e,t){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:t,internalroutes:b.internalroutes.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteInternalRoute=S,b.exportSelectedInternalRoutes=function(){var e=angular.copy(b.selectedInternalRoutes);return b.selectedInternalRoutes=[],e},b.deleteSelectedInternalRoutes=function(e){var t=i.confirm().title("Are you sure want to delete the selected internalroutes?").htmlContent("<b>"+b.selectedInternalRoutes.length+" selected</b> will be deleted.").ariaLabel("delete InternalRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedInternalRoutes.forEach(function(e){S(e)}),b.selectedInternalRoutes=[]})},b.deselectInternalRoutes=function(){b.selectedInternalRoutes=[]},b.selectAllInternalRoutes=function(){b.selectedInternalRoutes=b.internalroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.internalroute&&(a=_.find(b.contexts,{name:b.internalroute.context}));for(var i=0;i<b.contexts.length;i++){_.some(t,{resourceId:b.contexts[i].id})?(b.contexts[i].canSelect=!0,n.push(b.contexts[i])):a&&b.contexts[i].id===a.id&&(b.contexts[i].canSelect=!1,n.push(b.contexts[i]))}b.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})})}).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 A=!0,E=1;function y(e){b.internalroutes=e||{count:0,rows:[]}}function S(e){m.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(b.internalroutes.rows,{id:e.id}),b.internalroutes.count-=1,b.internalroutes.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getInternalRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","internalroutes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("InternalRoutesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.musiconholds,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.musiconhold={},c.musiconholdMohSounds={count:0,rows:[]},c.selectedMusicOnHoldMohSounds=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},c.init=function(e,t){c.musiconhold=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.musiconhold.id,c.query.VoiceMusicOnHoldId=c.musiconhold.id,c.getMusicOnHoldMohSounds()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.voiceMusicOnHoldDownload=function(s,e,t){return l.sound.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="mohSound"+s.id,a=new Blob(t,{type:e.type});n=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",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getMusicOnHoldMohSounds=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceMusicOnHold.getSounds(c.query,p).$promise},c.createOrEditMusicOnHoldMohSound=function(e,t){s.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:c.musiconhold,mohSound:t,mohSounds:c.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(c.selectedMusicOnHoldMohSounds);return c.selectedMusicOnHoldMohSounds=[],e},c.deleteMusicOnHoldMohSound=g,c.deleteSelectedMusicOnHoldMohSounds=function(e){var t=s.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+c.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),c.selectedMusicOnHoldMohSounds=[]})},d.hasRole("admin")?l.sound.get({fields:"id,name",sort:"name"}).$promise.then(function(e){c.sounds=e.rows||[],c.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.sound.get({fields:"id,name",sort:"name"}).$promise.then(function(e){c.sounds=e.rows||[],c.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.musiconhold&&(a=_.find(c.sounds,{id:Number(c.musiconhold.id)}));for(var i=0;i<c.sounds.length;i++){_.some(t,{resourceId:c.sounds[i].id})?(c.sounds[i].canSelect=!0,n.push(c.sounds[i])):a&&c.sounds[i].id===a.id&&(c.sounds[i].canSelect=!1,n.push(c.sounds[i]))}c.sounds=n})}else{var n=[],a=null;c.musiconhold&&(a=_.find(c.sounds,{id:Number(c.musiconhold.id)}));for(var i=0;i<c.sounds.length;i++)a&&c.sounds[i].id===a.id&&(c.sounds[i].canSelect=!1,n.push(c.sounds[i]));c.sounds=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.musiconholdMohSounds=e||{count:0,rows:[]}}function g(e){l.voiceMusicOnHold.removeSound({id:n.params.id,id2:e.id}).$promise.then(function(){_.remove(c.musiconholdMohSounds.rows,{id:e.id}),c.musiconholdMohSounds.count-=1,c.musiconholdMohSounds.rows.length||c.getMusicOnHoldMohSounds(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getMusicOnHoldMohSounds())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.mohSound.VoiceMusicOnHoldId=t.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mohSounds,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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"}).$promise.then(function(e){g.sounds=e.rows||[],g.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.sounds=e.rows||[],g.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++){_.some(t,{resourceId:g.sounds[i].id})?(g.sounds[i].canSelect=!0,n.push(g.sounds[i])):a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,n.push(g.sounds[i]))}g.sounds=n})}else{var n=[],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,n.push(g.sounds[i]));g.sounds=n}}).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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.musiconholds=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="musiconholds",b.listOrder="",b.listOrderAsc=null,b.selectedMusicOnHolds=[],b.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},b.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getMusicOnHolds=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceMusicOnHold.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="MusicOnHolds",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMusicOnHold=function(e,t){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:t,musiconholds:b.musiconholds.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMusicOnHold=S,b.exportSelectedMusicOnHolds=function(){var e=angular.copy(b.selectedMusicOnHolds);return b.selectedMusicOnHolds=[],e},b.deleteSelectedMusicOnHolds=function(e){var t=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+b.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMusicOnHolds.forEach(function(e){S(e)}),b.selectedMusicOnHolds=[]})},b.deselectMusicOnHolds=function(){b.selectedMusicOnHolds=[]},b.selectAllMusicOnHolds=function(){b.selectedMusicOnHolds=b.musiconholds.rows};var A=!0,E=1;function y(e){b.musiconholds=e||{count:0,rows:[]}}function S(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(b.musiconholds.rows,{id:e.id}),b.musiconholds.count-=1,b.musiconholds.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,h,d,c,m,u){var f=this;function p(){var e=2,t=[];t.push({type:"outbound",app:"Set",appdata:"CDR(type)=outbound",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.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}),t.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.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&&(t.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.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 n=0,a=0;n<f.outboundrouteApps.rows.length;n++,a=0){var i=f.outboundrouteApps.rows[n],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,t=_.concat(t,s,[i],o)}t.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(t,"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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(f.outboundroutes,{id:e.id});t&&(_.merge(t,_.pick(e.toJSON(),_.keys(t))),h.voiceExtension.get({sort:"priority",VoiceExtensionId:t.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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(n){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 t=a.confirm().title("Are you sure?").content("The outboundroute will be deleted.").ariaLabel("Delete OutboundRoute").ok("Delete").cancel("Cancel").targetEvent(n);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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"}).$promise.then(function(e){f.contexts=e.rows||[],f.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):h.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.contexts=e.rows||[],f.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return h.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:h.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;f.outboundroute&&(a=_.find(f.contexts,{name:f.outboundroute.context}));for(var i=0;i<f.contexts.length;i++){_.some(t,{resourceId:f.contexts[i].id})?(f.contexts[i].canSelect=!0,n.push(f.contexts[i])):a&&f.contexts[i].id===a.id&&(f.contexts[i].canSelect=!1,n.push(f.contexts[i]))}f.contexts=n}):h.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){f.contexts=e.rows||[],f.contexts.forEach(function(e){e.canSelect=!0})})}).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,n,e,t){var A=this;function o(e,t){if(A.outboundrouteApps.rows.length){var n=A.outboundrouteApps.rows[t]?A.outboundrouteApps.rows[t]:A.outboundrouteApps.rows[0];i.show({controller:"EditoutboundApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundroutes/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundrouteApp:n,outboundroute:A.outboundroute,crudPermissions:A.crudPermissions}}).then(function(e){e&&(e.id?A.outboundrouteApps.rows[t]=e:A.outboundrouteApps.rows.splice(t,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 t=2,n=[];n.push({type:"outbound",app:"Set",appdata:"CDR(type)=outbound",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.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:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"CDR(routeid)="+A.outboundroute.id,context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id});var a=t++;n.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}),n.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:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"outboundrouteid="+A.outboundroute.id,context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),A.outboundroute.hasOwnProperty("recordingFormat")&&"none"!==A.outboundroute.recordingFormat&&(n.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_FORMAT="+A.outboundroute.recordingFormat||"wav",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,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+t+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+t+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+t+s++,VoiceExtensionId:A.outboundroute.id});for(var d=0;d<o.intervals.length;d++){var c=t+o.intervals.length,m=d===o.intervals.length-1?t+r.length+l.length+2:t+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:t+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:t,t=(l.length?_.last(l).priority:o.priority)+1,n=_.concat(n,r,[o],l)}n.push({type:"outbound",app:"Hangup",exten:A.outboundroute.exten,context:A.outboundroute.context,priority:t,VoiceExtensionId:A.outboundroute.id}),b.voiceExtension.addApplications({id:A.outboundroute.id},_.sortBy(n,"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=t.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"},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,t){A.outboundroute=e,A.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},A.applications.disabled=!A.crudPermissions.canEdit,n.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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){A.outboundrouteApps.rows.splice(t,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,t){if(A.outboundrouteApps.rows.length){var n=A.outboundrouteApps.rows[t]?A.outboundrouteApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:A.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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(){n.removeAllListeners("voiceExtension:update")})}e.$inject=["api","$mdDialog","$document","toasty","socket","$scope","Auth"],angular.module("app.voice").controller("OutboundRouteActionsController",e)}(),function(){"use strict";function e(t,e,n,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(",");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(",");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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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(",");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(",");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){t.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"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.outbounddial&&(a=_.find(l.trunks,{name:l.outbounddial.trunk}));for(var i=0;i<l.trunks.length;i++){_.some(t,{resourceId:l.trunks[i].id})?(l.trunks[i].canSelect=!0,n.push(l.trunks[i])):a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,n.push(l.trunks[i]))}l.trunks=n})}else{var n=[],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,n.push(l.trunks[i]));l.trunks=n}}).catch(function(e){n.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.outbounddial&&(a=_.find(l.tags,{name:l.outbounddial.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,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=t.protocol()+"://"+t.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")},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"}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.outboundroute&&(a=_.find(u.contexts,{name:u.outboundroute.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.outboundroutes=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="outboundroutes",b.listOrder="",b.listOrderAsc=null,b.selectedOutboundRoutes=[],b.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,recordingFormat,cutdigits,description",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},b.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"),"")}),b.editstate=function(e,t){n.go("app.voice.outboundroutes.edit",{id:e.id,outboundroute:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getOutboundRoutes=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceExtension.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="OutboundRoutes",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditOutboundRoute=function(e,t){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:t,outboundroutes:b.outboundroutes.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteOutboundRoute=S,b.exportSelectedOutboundRoutes=function(){var e=angular.copy(b.selectedOutboundRoutes);return b.selectedOutboundRoutes=[],e},b.deleteSelectedOutboundRoutes=function(e){var t=i.confirm().title("Are you sure want to delete the selected outboundroutes?").htmlContent("<b>"+b.selectedOutboundRoutes.length+" selected</b> will be deleted.").ariaLabel("delete OutboundRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedOutboundRoutes.forEach(function(e){S(e)}),b.selectedOutboundRoutes=[]})},b.deselectOutboundRoutes=function(){b.selectedOutboundRoutes=[]},b.selectAllOutboundRoutes=function(){b.selectedOutboundRoutes=b.outboundroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.outboundroute&&(a=_.find(b.contexts,{name:b.outboundroute.context}));for(var i=0;i<b.contexts.length;i++){_.some(t,{resourceId:b.contexts[i].id})?(b.contexts[i].canSelect=!0,n.push(b.contexts[i])):a&&b.contexts[i].id===a.id&&(b.contexts[i].canSelect=!1,n.push(b.contexts[i]))}b.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})})}).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 A=!0,E=1;function y(e){b.outboundroutes=e||{count:0,rows:[]}}function S(t){m.voicePrefix.get({VoiceExtensionId:t.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:t.id}).$promise.then(function(){_.remove(b.outboundroutes.rows,{id:t.id}),b.outboundroutes.count-=1,b.outboundroutes.rows.length||b.getOutboundRoutes(),p.success({title:_.startCase("OutboundRoute")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getOutboundRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","outboundroutes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=!0;function f(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.contacts:"+v.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(v.query=_.merge(e.query,_.omit(v.query,["sort","limit","page"])),v.query=_.omit(v.query,"filter")),d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){v.queues=e||{count:0,rows:[]},v.queuesMap=_.mapValues(_.keyBy(v.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){v.getContacts()}):o.userProfile.getResources({id:v.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){v.queues=e||{count:0,rows:[]},v.queuesMap=_.mapValues(_.keyBy(v.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){v.getContacts()})}function b(e){v.contacts=e||{count:0,rows:[]},h=!1,v.refresh=!0}v.showTooltip=!1,v.refresh=!0,v.disable=[],v.agents=p||[],v.currentUser=d.getCurrentUser(),v.localizationMap=u,v.pickerModel={dateStart:null,dateEnd:null},v.queues={},v.contacts={count:0,rows:[]},v.dispositions=g,v.userProfile=r,v.userProfileSection=l&&1==l.count?l.rows[0]:null,v.crudPermissions=d.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},v.clearAll=function(){v.query.dateStart=void 0,v.query.dateEnd=void 0,v.pickerModel={dateStart:null,dateEnd:null},v.getContacts()},v.getContacts=function(){v.refresh=!1,v.query.dateStart=void 0,v.query.dateEnd=void 0,v.pickerModel.dateStart&&!h&&(v.query.dateStart=v.pickerModel.dateStart,v.query.dateEnd=v.pickerModel.dateEnd);v.query.queue=v.query.queue,v.query.offset=(v.query.page-1)*v.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.contacts:"+v.currentUser.id,JSON.stringify({query:_.omit(v.query,"queue")})),v.promise=o.voiceQueueReport.getVoiceQueuesReport(v.query,b).$promise},v.refreshContacts=function(){v.showTooltip=!1,v.getContacts()},v.onInit=f,v.assignedA=function(e,t){e&&(v.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:t?t.name:null,assigned:!!t}).$promise.catch(function(e){console.log(e)}).finally(function(){v.disable[e.id]=!1}))},v.disposed=function(e,t){e&&o.voiceQueueReport.update({id:e.id,disposition:t||null}).$promise.catch(function(e){console.log(e)})},v.onSavevoiceQueueReport=function(e){e&&v.queuesMap&&"inbound"===e.type&&v.queuesMap[e.queue]&&(v.showTooltip=!0)},v.onUpdatevoiceQueueReport=function(e){if(e){var t=_.findIndex(v.contacts.rows,["id",e.id]);0<=t&&_.merge(v.contacts.rows[t],e)}},c.onWithoutApply("voiceQueueReport:save",v.onSavevoiceQueueReport),c.on("voiceQueueReport:update",v.onUpdatevoiceQueueReport),f();var A=!0,E=1;e.$watch("vm.query.filter",function(e,t){A?n(function(){A=!1}):(t||(E=v.query.page),e!==t&&(v.query.page=1),e||(v.query.page=E),v.getContacts())}),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","dateFilterLocalizationFactory","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,t,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 t=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",t?_.merge(t,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var t=_.findIndex(o.calls.rows,{channel:e.channel});0<=t&&(o.calls.rows[t].status="hangup");n(function(){o.calls.rows.splice(t,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,t,a,n,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.agents=n||{count:0,rows:[]},p.queues=i?_.keyBy(i.rows?i.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=s?_.keyBy(s.rows?_.filter(s.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.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,t){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[t]=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(t){return o.rpc.getVoiceQueuesChannelHangup({uniqueid:t}).$promise.then(function(e){d.success({title:"Channel "+t+" 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(t,e,n){return o.rpc.getVoiceQueuesChannelRedirect({uniqueid:t,exten:e,context:n}).$promise.then(function(e){d.success({title:"Channel "+t+" 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,t){var n=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(n).then(function(e){return o.rpc.getVoiceQueuesChannelRedirect({uniqueid:t,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+t+" properly redirect!",msg:e.message||""})}).catch(function(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,n,t,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,t){c.rpcQueues[t]&&_.merge(e,_.pick(c.rpcQueues[t],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=t(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,t){p?n(function(){p=!1}):(t||(g=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&t.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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.voiceQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].VoiceQueueId].paused++,g.queues[e[t].rows[n].VoiceQueueId].loggedInDb++,g.queues[e[t].rows[n].VoiceQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].VoiceQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"voice",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.voiceQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="VoiceQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditVoiceQueue=function(e,t){a.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:t,voiceQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:t,voiceQueues:g.queues?g.queues.rows:[],realtime:!0,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.voiceQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.VoiceQueueId]&&(g.queues[e.VoiceQueueId].loggedInDb+=1,g.queues[e.VoiceQueueId].agents[e.UserId]=e.VoiceQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.VoiceQueueId]&&0<g.queues[e.VoiceQueueId].loggedInDb&&(g.queues[e.VoiceQueueId].loggedInDb-=1,delete g.queues[e.VoiceQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.onWithoutApply("voice_queue:save",g.onSave),g.interval=s(function(){},999),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("voice_queue:save"),g.interval&&s.cancel(g.interval),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){var a=this;switch(t.disconnect(),t.connect(),a.selectedTab=0,n.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,n.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.voice.realtime.agents");break;case 1:n.go("app.voice.realtime.telephones");break;case 2:n.go("app.voice.realtime.trunks");break;case 3:n.go("app.voice.realtime.queues");break;case 4:n.go("app.voice.realtime.queue_calls");break;case 5:n.go("app.voice.realtime.abandonedcalls");break;case 6:n.go("app.voice.realtime.queue_params");break;case 7:n.go("app.voice.realtime.outbound_calls");break;default:n.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,t){m.rpcTelephones[t]&&_.merge(e,_.pick(m.rpcTelephones[t],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){t.show(t.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,t){g?n(function(){g=!1}):(t||(v=m.query.page),e!==t&&(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,n,t,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,t=0;t<u.trunks.length;t+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[t].id]))&&_.merge(u.trunks[t],_.pick(u.rpcTrunks[e],p))}function v(e,t,n){0<=t&&_.merge(e[t],_.pick(n,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){t.show(t.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,t){l.go("app.tools.trunks.edit",{id:t.id})},u.onSave=function(e){var t=_.findIndex(u.trunks,["id",e.id]),n=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,t,e),v(u.rpcTrunks,n,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,t){h?n(function(){h=!1}):(t||(f=u.query.page),e!==t&&(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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.voicemails,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.voicemail={},c.voicemailMessages={count:0,rows:[]},c.selectedVoicemailMessages=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},c.init=function(e,t){c.voicemail=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.voicemail.id,c.getVoicemailMessages()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.voiceMailMessageDownload=function(s,e,t){return l.voiceMailMessage.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="message"+s.id,a=new Blob(t,{type:e.type});n=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getVoicemailMessages=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceMail.getMessages(c.query,p).$promise},c.createOrEditVoicemailMessage=function(e,t){s.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:c.voicemail,message:t,messages:c.voicemailMessages.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedVoicemailMessages=function(){var e=angular.copy(c.selectedVoicemailMessages);return c.selectedVoicemailMessages=[],e},c.deleteVoicemailMessage=g,c.deleteSelectedVoicemailMessages=function(e){var t=s.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+c.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedVoicemailMessages.forEach(function(e){g(e)}),c.selectedVoicemailMessages=[]})};var m=!0,u=1;function p(e){c.voicemailMessages=e||{count:0,rows:[]}}function g(e){l.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(c.voicemailMessages.rows,{id:e.id}),c.voicemailMessages.count-=1,c.voicemailMessages.rows.length||c.getVoicemailMessages(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getVoicemailMessages())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.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")},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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.voicemail&&(a=_.find(u.contexts,{name:u.voicemail.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voicemails=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voicemails",b.listOrder="",b.listOrderAsc=null,b.selectedVoicemails=[],b.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},b.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVoicemails=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceMail.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Voicemails",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVoicemail=function(e,t){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:t,voicemails:b.voicemails.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoicemail=S,b.exportSelectedVoicemails=function(){var e=angular.copy(b.selectedVoicemails);return b.selectedVoicemails=[],e},b.deleteSelectedVoicemails=function(e){var t=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+b.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVoicemails.forEach(function(e){S(e)}),b.selectedVoicemails=[]})},b.deselectVoicemails=function(){b.selectedVoicemails=[]},b.selectAllVoicemails=function(){b.selectedVoicemails=b.voicemails.rows};var A=!0,E=1;function y(e){b.voicemails=e||{count:0,rows:[]}}function S(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(b.voicemails.rows,{id:e.id}),b.voicemails.count-=1,b.voicemails.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("VoicemailsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.voicePrefixes,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",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||[],g.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++){_.some(t,{resourceId:g.outboundRoutes[i].id})?(g.outboundRoutes[i].canSelect=!0,n.push(g.outboundRoutes[i])):a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,n.push(g.outboundRoutes[i]))}g.outboundRoutes=n})}else{var n=[],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,n.push(g.outboundRoutes[i]));g.outboundRoutes=n}}).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voicePrefixes=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voicePrefixes",b.listOrder="",b.listOrderAsc=null,b.selectedVoicePrefixes=[],b.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:b.voicePrefixes.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:b.voicePrefixes?b.voicePrefixes.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVoicePrefixes=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voicePrefix.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="VoicePrefixes",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditvoicePrefix=function(e,t){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:t,voicePrefixes:b.voicePrefixes.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deletevoicePrefix=S,b.exportSelectedVoicePrefixes=function(){var e=angular.copy(b.selectedVoicePrefixes);return b.selectedVoicePrefixes=[],e},b.deleteSelectedVoicePrefixes=function(e){var t=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+b.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVoicePrefixes.forEach(function(e){S(e)}),b.selectedVoicePrefixes=[]})},b.deselectVoicePrefixes=function(){b.selectedVoicePrefixes=[]},b.selectAllVoicePrefixes=function(){b.selectedVoicePrefixes=b.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){b.outboundRoutes=e.rows||[],b.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",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){b.outboundRoutes=e.rows||[],b.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.voicePrefix&&(a=_.find(b.outboundRoutes,{id:Number(b.voicePrefix.VoiceExtensionId)}));for(var i=0;i<b.outboundRoutes.length;i++){_.some(t,{resourceId:b.outboundRoutes[i].id})?(b.outboundRoutes[i].canSelect=!0,n.push(b.outboundRoutes[i])):a&&b.outboundRoutes[i].id===a.id&&(b.outboundRoutes[i].canSelect=!1,n.push(b.outboundRoutes[i]))}b.outboundRoutes=n})}else{var n=[],a=null;b.voicePrefix&&(a=_.find(b.outboundRoutes,{id:Number(b.voicePrefix.VoiceExtensionId)}));for(var i=0;i<b.outboundRoutes.length;i++)a&&b.outboundRoutes[i].id===a.id&&(b.outboundRoutes[i].canSelect=!1,n.push(b.outboundRoutes[i]));b.outboundRoutes=n}}).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 A=!0,E=1;function y(e){b.voicePrefixes=e||{count:0,rows:[]}}function S(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(b.voicePrefixes.rows,{id:e.id}),b.voicePrefixes.count-=1,b.voicePrefixes.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("VoicePrefixesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.voiceQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,i,s,o,r){var c=this;function m(){return l(function(n,t){return l(function(t,n){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=t,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(n,t){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});return(n=e,l(function(e,t){_.isEmpty(n)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else{for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!i,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,t){t?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var n=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});c.pendingChanges=!_.isEmpty(n)}}}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,l,a,d,t,n,i,s){var c=this;function o(){return l(function(n,t){return l(function(t,n){return d.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],i.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,function(e){return _.find(c.items,{id:i.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.items.forEach(function(e){var t=_.find(c.allowedItems,{id:e.id});i.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){return d.voiceQueue.getTeams({id:c.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){return _.find(c.items,{id:e.id})}),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=i.getCurrentUser(),c.voiceQueue=t,c.crudPermissions=s,c.penalty=0,c.items=[],c.allowedItems=[],c.selectedItems=[],c.addedItems=[],c.removedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("VOICE.ALL_TEAMS"),labelSelected:n.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,t){t?c.removedItems=_.unionBy(e,c.removedItems,"id"):(e.forEach(function(e){e.penalty="penalty "+c.penalty}),c.addedItems=_.unionBy(e,c.addedItems,"id")),c.pendingChanges=!0}},c.onInit=function(){return i.hasRole("admin")?o().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(function(n,t){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(e)})}).then(function(e){return c.section=e,o()}).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()})})},c.saveTeams=function(){var e=c.removedItems,t=c.addedItems;return(n=e,l(function(e,t){_.isEmpty(n)?e():d.voiceQueue.removeTeams({id:c.voiceQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else{for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.voiceQueue.addTeams({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty ")}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(e)})}});var r}).then(function(){c.pendingChanges=!1,c.addedItems=[],c.removedItems=[],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 n},c.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(n,e,a,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||n.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=n.params.tab||0,u.teamadddialog=function(e,t){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){n.go("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||[],u.musiconholds.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",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||[],u.musiconholds.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.voiceQueue&&(a=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold}));for(var i=0;i<u.musiconholds.length;i++){_.some(t,{resourceId:u.musiconholds[i].id})?(u.musiconholds[i].canSelect=!0,n.push(u.musiconholds[i])):a&&u.musiconholds[i].id===a.id&&(u.musiconholds[i].canSelect=!1,n.push(u.musiconholds[i]))}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[],u.musiconholds.forEach(function(e){e.canSelect=!0})})}).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||[],u.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",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||[],u.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(u.sounds,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});u.sounds=t})}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()})})}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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceQueues",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceQueues=[],b.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",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},b.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"),"")}),b.arrayjoinempty=_.keyBy([{option:"no",value:"'no'"},{option:"yes",value:"'yes'"},{option:"strict",value:"'strict'"},{option:"loose",value:"'loose'"},{option:"paused",value:"'paused'"},{option:"penalty",value:"'penalty'"},{option:"inuse",value:"'inuse'"},{option:"ringing",value:"'ringing'"},{option:"unavailable",value:"'unavailable'"},{option:"invalid",value:"'invalid'"},{option:"unknoww",value:"'unknown'"},{option:"wrapup",value:"'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'"},{option:"yes",value:"'yes'"},{option:"strict",value:"'strict'"},{option:"loose",value:"'loose'"},{option:"paused",value:"'paused'"},{option:"penalty",value:"'penalty'"},{option:"inuse",value:"'inuse'"},{option:"ringing",value:"'ringing'"},{option:"unavailable",value:"'unavailable'"},{option:"invalid",value:"'invalid'"},{option:"unknoww",value:"'unknown'"},{option:"wrapup",value:"'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:b.voiceQueues?b.voiceQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:b.voiceQueues?b.voiceQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.voice.realtime.queues",{})}},b.success=y,b.getVoiceQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVoiceQueue=function(e,t){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:t,voiceQueues:b.voiceQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceQueue=S,b.exportSelectedVoiceQueues=function(){var e=angular.copy(b.selectedVoiceQueues);return b.selectedVoiceQueues=[],e},b.deleteSelectedVoiceQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+b.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVoiceQueues.forEach(function(e){S(e)}),b.selectedVoiceQueues=[]})},b.deselectVoiceQueues=function(){b.selectedVoiceQueues=[]},b.selectAllVoiceQueues=function(){b.selectedVoiceQueues=b.voiceQueues.rows};var A=!0,E=1;function y(e){b.voiceQueues=e||{count:0,rows:[]}}function S(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceQueues.rows,{id:e.id}),b.voiceQueues.count-=1,b.voiceQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("VoiceQueuesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.voiceRecordings,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition",sort:"-updatedAt",limit:10,page:1},b.localizationMap=f,b.pickerModel={dateStart:null},b.downloadfile2=function(s,e){return m.voiceRecording.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVoiceRecordings=function(){b.query.dateStart=void 0,b.query.dateEnd=void 0,b.pickerModel.dateStart&&(b.query.dateStart=b.pickerModel.dateStart,b.query.dateEnd=b.pickerModel.dateEnd);b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVoiceRecording=function(e,t){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:t,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=S,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);return b.selectedVoiceRecordings=[],e},b.deleteSelectedVoiceRecordings=function(e){var t=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVoiceRecordings.forEach(function(e){S(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.clearDateFilter=function(){b.pickerModel={dateStart:null},b.getVoiceRecordings()};var A=!0,E=1;function y(e){b.voiceRecordings=e||{count:0,rows:[]}}function S(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(t,n,s,a,o,e,i,r){var l=this;function d(e,t){return{id:e,title:t.name||"NONAME",state:"app.dashboards.custom",stateParams:t,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function c(e,t){return{id:e,title:t.name||"NONAME",state:"app.plugins.plugin",stateParams:t,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function m(e,t){a.saveItem("apps.home.plugin_"+e,{id:e,title:t.name,translate:t.name,state:"plugin_"+t.id,stateParams:t,view:"plugin",icon:t.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function u(e){return _.map(e.children,function(e){return e.id})}l.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),i.version.get().$promise.then(function(e){l.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){l.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+l.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(i.dashboard.get().$promise.then(function(e){for(var t=0,n=0;n<e.rows.length;n+=1)t=99999+e.rows[n].id,s.saveItem("apps.dashboards.custom_"+t,d(t,e.rows[n]))}),i.plugin.get({active:!0}).$promise.then(function(e){var t=0;if(e.count){var n=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<n.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(u(this))&&!o.hasRole("admin")}});for(var a=0;a<n.length;a+=1)t=88888+n[a].id,s.saveItem("apps.plugins.plugin_"+t,c(t,n[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)m(t=88888+i[a].id,i[a])}})),e.custom&&!r.defaultPageTitle&&r.pageTitle&&angular.element("#pageTitle").html(r.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(u(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(u(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!e.cm||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.voice||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.chat||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.mail||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.fax||o.hasRole("agent")||!o.hasChildrenPermissions(u(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:13,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(u(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.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.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.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.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.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:11,hidden:function(){return!e.voice||o.hasRole("agent")||!o.hasChildrenPermissions(u(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:14,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(u(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",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:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(u(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:1,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:1,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:1,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:1,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:1,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:1,badge:{content:"beta",color:"orange"},hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:18,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),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!e.custom||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!e.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.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:19,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.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!e.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(u(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.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:12,hidden:function(){return!e.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(u(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:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(u(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.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.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:2,hidden:function(){return!e.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:3,hidden:function(){return!e.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:3,hidden:function(){return!e.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:4,hidden:function(){return!e.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:5,hidden:function(){return!e.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:6,hidden:function(){return!e.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:7,hidden:function(){return!e.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:8,hidden:function(){return!e.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:9,hidden:function(){return!e.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-A200-fg",weight:10,hidden:function(){return!e.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:11,hidden:function(){return!e.fax||!o.hasPermission(109)}}),t.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===t.$id&&n.$broadcast("msSplashScreen::remove")})}e.$inject=["$scope","$rootScope","msNavigationService","msNavigationAgentService","Auth","license","api","setting"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,t,n,a,o,r){var i=this;function s(e){if(e&&e.id){var t=99999+e.id;o.saveItem("apps.dashboards.custom_"+t,{id:t,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(t)&&!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 t=88888+e.id;o.saveItem("apps.plugins.plugin_"+t,{id:t,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(t)&&!r.hasRole("admin")}}),o.sort()}}else{t=88888+e.id;n=1900,a=t,i=o.getNavigation(),(s=_.find(i[0].children,{id:n}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+t),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var n,a,i,s}function d(e){var t=o.getNavigation(),n=_.find(t[0].children,{id:e});return!!(n&&0<n.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=n,i.$onInit=function(){i.folded="true"===t.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,t.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 t=99999+e.id;o.deleteItem("apps.dashboards.custom_"+t)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var t=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+t),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,t,n,s,o,r){var l=this;function d(n){o.isSupported()?o.requestPermission().then(function(){var e,t;t={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=n).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),t)},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=t.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--},n.on("chatInternalMessage:save",l.onMessageSave),n.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 t=[],n=e.rows,a=0;a<n.length;a++)t.push(s.chatGroup.getUnread({id:n[a].id}).$promise);return i.all(t)}).then(function(e){for(var t=0;t<e.length;t++)l.unreadTotalGroupMessages+=e[t].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){n.removeAllListeners("chatInternalMessage:save"),n.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,t,n,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var t=angular.element("#chat-dialog");a(function(){t.animate({scrollTop:t[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){t.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){t.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 t.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",n.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 t=0;t<u.user.messages.rows.length;t+=1)!1===u.user.messages.rows[t].read&&u.user.messages.rows[t].ToId===u.currentUser.id&&n.chatInternalMessage.update({id:u.user.messages.rows[t].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="",n.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),n.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var t=_.find(u.users.rows,{id:e.FromId});t&&(t.lastMessageAt=e.createdAt,t.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var t=_.find(u.user.messages.rows,{id:e.id});t&&_.merge(t,e)}var n=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});n&&n.lastMessage&&_.merge(n.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var t=_.find(u.users.rows,{id:e.id});t&&(_.isNil(e.online)||t.online===e.online||(t.online=e.online),_.isNil(e.allowmessenger)||t.allowmessenger===e.allowmessenger||(t.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}),n.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){}),n.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,t,n,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 n;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var t=_.map(d.group.members,"id");return t.unshift(d.currentUser.id),n=e,s.chatGroup.addMembers({id:n.id,ids:t}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:n.name+" has been saved!"}),c(n)}).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((t=e,n=angular.lowercase(t),function(e){var t=e.name.toLowerCase();return-1!=t.indexOf(n)})):[];var t,n}}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,n,a,s,t,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var t=angular.element("#chat-group-dialog");a(function(){t.animate({scrollTop:t[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 t=0,n=[];t<e.rows.length;t++)e.rows[t].unreadGroupMessages=0,c.groups[e.rows[t].id]=e.rows[t],n.push(r.chatGroup.getUnread({id:e.rows[t].id}).$promise);return o.all(n)}).then(function(e){for(var t=0;t<e.length;t++)c.groups[e[t].id].unreadGroupMessages+=e[t].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,t){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(n.body),targetEvent:t,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,t){var n=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(t).ok("OK").cancel("CANCEL");s.show(n).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(n.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 t=[];a.messages=e.rows,a.messages.unshift(i);for(var n=0;n<a.messages.length;n++)t.push(r.user.get({id:a.messages[n].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(t)}).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(t){c.group={id:t.id,write:t.write,messages:{}},r.chatGroup.getMembers({id:t.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:t.id,nolimit:!0}).$promise}).then(function(e){for(var t,n=0,a=[];n<e.count;n++)e.rows[n].ToId===c.currentUser.id&&(t=e.rows[n],c.group.messages[t.id]=t,e.rows[n].ToId!=c.currentUser.id||e.rows[n].FromId===c.currentUser.id||t.read||a.push(r.chatInternalMessage.update({id:t.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 n={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(n).$promise.then(function(e){n.read=!1,n.ChatInternalMessageId=e.id;for(var t=0;t<c.group.members.length;t++)c.group.members[t].id!==c.currentUser.id&&(n.ToId=c.group.members[t].id,a.push(r.chatGroup.addMessage(angular.copy(n)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(t){if(!c.group&&t.ToId===c.currentUser.id&&t.FromId!==c.currentUser.id&&!t.read&&t.ChatGroupId){var e=c.groups[t.ChatGroupId];if(!e)return r.chatGroup.get({id:t.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&t.ChatGroupId===c.group.id&&t.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:t.id,read:!0}).$promise.then(function(){var e;e=t,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]}),t("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,t,n,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,t,n,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(){t.success({title:n.instant("RESETPASSWORD.PASSWORD_RESET"),msg:n.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&t.error({title:n.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&&t.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.user=a,o.setting=i,o.reset=s,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",o.savePassword=function(){o.errors=[],n.user.changePassword({id:o.user.id},{oldPassword:o.oldPassword,newPassword:o.password}).$promise.then(function(){t.show(t.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),r()}).catch(function(e){console.error(e),o.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},o.closeDialog=r}e.$inject=["$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var t=0;t<e.data.errors.length;t+=1)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var t=0;t<e.data.errors.length;t+=1)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else l.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()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.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"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.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 t=0;t<e.data.errors.length;t+=1)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.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)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(e,t,s,n,o,a,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E){var y,S=this;function T(e){S.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function C(){S.promise=f.user.getQueues(S.query,T).$promise}function I(e){return v.logout(e).then(function(){return h.disconnect(),t.$broadcast("webrtc::logout"),n.go("app.login")}).catch(function(e){console.error(e)})}function x(e,t){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!t,locals:{user:S.user,setting:A,reset:t}})}S.voiceQueues={},S.polling=!0,t.global={search:""},S.pauses=[],S.license=b,S.currentUser=v.getCurrentUser(),S.unreadTotalMessages=0,S.unreadTotalGroupMessages=0,S.contcts=0,"agent"===S.currentUser.role&&(y=E(function(){_.some(S.voiceQueues,{dialMethod:"preview",dialActive:!0})&&S.license.dialer&&S.polling?(S.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(S.contacts=e.contacts)}).finally(function(){S.polling=!0})):S.contacts=0},14999)),S.setting=A,S.bodyEl=angular.element("body"),S.conf={realm:"asterisk",host:a.host(),protocol:a.protocol(),remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:S.license.webrtc,phoneBarExpires:S.currentUser.phoneBarExpires,phoneBarPrefixRequired:S.currentUser.phoneBarPrefixRequired},S.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},S.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"}],S.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"}},S.toggleSidenav=function(e){i(e).toggle()},S.logout=I,S.changeLanguage=function(e){if(!S.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"})}S.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===n.current.name&&d.location.reload()},S.setUserStatus=function(e){S.userStatus=e},S.toggleHorizontalMobileMenu=function(){S.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},S.toggleMsNavigationFolded=function(){g.toggleFolded()},S.search=function(t){for(var e=[],n=g.getFlatNavigation(),a=s.defer(),i=0;i<n.length;i++)n[i].uisref&&e.push(n[i]);t&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(t)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},S.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))},S.openSettings=function(e){t.$broadcast("webrtc::settings")},S.changePassword=x,S.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},S.onUserUpdate=function(e){if(e.id===S.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==S.user.showWebBar){var t=c.confirm().title(r.instant("TOOLBAR.WARNING")+"!").textContent(r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")).ariaLabel(r.instant("TOOLBAR.WARNING")+"!").ok(r.instant("TOOLBAR.STAY_LOGGED")).cancel("Logout");c.show(t).then(function(){v.queueLogin()}).catch(function(e){I(!0)}).finally(function(){_.merge(S.user,e),v.updateCurrentUser(S.user)})}else I(!0),_.merge(S.user,e),v.updateCurrentUser(S.user);else _.merge(S.user,e),v.updateCurrentUser(S.user)},S.onUserCalled=function(e){2===S.currentUser.showWebBar&&"agent"===S.currentUser.role&&S.currentUser.name===e.membername&&p.info({title:"WebRTC Popup",msg:"<div>                    <span>Call from: "+e.calleridnum+"</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})},S.pause=function(e){return f.user.pause({id:S.user.id,type:e||"DEFAULT PAUSE"}).$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()})})},S.unpause=function(){return f.user.unpause({id:S.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()})})},S.preview=function(t){return S.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:t,clickOutsideToClose:!0,locals:{preview:e},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){S.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var t=0;t<e.data.errors.length;t+=1)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(){S.disable=!1})},S.getLogo=function(){return S.setting.defaultHeaderWhiteLabel?"xCALLY Motion":S.setting.headerWhiteLabel},S.userIsNotPhonebar=function(){return"admin"===S.currentUser.role||"user"===S.currentUser.role||"agent"===S.currentUser.role&&0!==S.currentUser.showWebBar},S.onInternalMessageSave=function(e){e.ToId!==S.currentUser.id||e.ChatGroupId||(S.unreadTotalMessages+=1);e.ToId===S.currentUser.id&&e.FromId!==S.currentUser.id&&!e.read&&e.ChatGroupId&&S.unreadTotalGroupMessages++},S.onInternalMessageUpdate=function(e){e.ToId===S.currentUser.id&&e.read&&0<S.unreadTotalMessages&&!e.ChatGroupId&&(S.unreadTotalMessages-=1);e.ToId===S.currentUser.id&&e.read&&e.ChatGroupId&&0<S.unreadTotalGroupMessages&&S.unreadTotalGroupMessages--},S.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&C()},S.onVoiceQueue=function(e){C()},h.connect(),h.on("user:update",S.onUserUpdate),h.on("user:called",S.onUserCalled),h.on("chatInternalMessage:save",S.onInternalMessageSave),h.on("chatInternalMessage:update",S.onInternalMessageUpdate),h.on("userVoiceQueue:save",S.onUserVoiceQueue),h.on("voiceQueue:save",S.onVoiceQueue),h.on("userVoiceQueue:remove",S.onUserVoiceQueue),h.on("voiceQueue:remove",S.onVoiceQueue),h.on("voiceQueue:update",S.onVoiceQueue),function(){S.user=v.getCurrentUser(),S.conf.ha1=S.user.md5secret,S.conf.id=S.user.id,S.conf.name=S.user.name,S.conf.fullname=S.user.fullname,S.conf.internal=S.user.internal,S.conf.recording=S.user.phoneBarEnableRecording,S.conf.autoAnswer=S.user.phoneBarAutoAnswer,S.conf.enableSettings=S.user.phoneBarEnableSettings,S.conf.enableDtmfTone=S.user.phoneBarEnableDtmfTone,S.conf.autoAnswerDelay=S.user.phoneBarAutoAnswerDelay,S.userStatus=S.userStatusOptions[0];var e=u.get("motion.language");e&&S.languages.hasOwnProperty(e)?S.selectedLanguage=S.languages[e]:S.selectedLanguage=S.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){S.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()})}),S.setting.securePassword)if(S.user.passwordResetAt){var t=moment(S.user.passwordResetAt).add(S.setting.passwordExpiresDays||90,"day");moment().isAfter(t)?x(null,!0):moment().add(15,"day").isAfter(t)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(t.diff(moment(),"days",!0)),timeout:2e4})}else x(null,!0)}(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:S.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){S.unreadTotalMessages=e.rows.length}),e.$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"),y&&(E.cancel(y),y=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var t=new Object,n=e.lastIndexOf("?");if(0<n)for(var a=e.substring(n+1).split("&"),i=0;i<a.length;i++)0<(n=a[i].indexOf("="))&&(t[a[i].substring(0,n)]=a[i].substring(n+1));return t}(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-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,t,n){if(n=n||document,mxClient.IS_IE6)n.write('<link rel="'+e+'" href="'+t+'" charset="ISO-8859-1" type="text/css"/>');else{var a=n.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",t),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),n.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,t=document.createElement("table");t.setAttribute("width","100%"),t.setAttribute("height","100%");var n=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),n.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),n.appendChild(a),t.appendChild(n),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=n=0,a="number"==typeof window.innerWidth?(n=window.innerHeight,window.innerWidth):(n=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,t,Math.max(0,a-320),Math.max(0,n-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,t){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,t){var n=document.createElement("button");mxUtils.write(n,e),mxEvent.addListener(n,"click",t),mxLog.td.appendChild(n)},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,t){if(mxLog.TRACE){var n=0!=t?" ("+((new Date).getTime()-t)+" ms)":"";mxLog.writeln("Leaving "+e+n)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",t=0;t<arguments.length;t++)e+=arguments[t],t<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="",t=0;t<arguments.length;t++)e+=arguments[t],t<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 t=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=t+"#"+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,t){var n=mxObjectIdentity.get(e),a=this.map[n];return this.map[n]=t,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var t=this.map[e];return delete this.map[e],t},mxDictionary.prototype.getKeys=function(){var e,t=[];for(e in this.map)t.push(e);return t},mxDictionary.prototype.getValues=function(){var e,t=[];for(e in this.map)t.push(this.map[e]);return t},mxDictionary.prototype.visit=function(e){for(var t in this.map)e(t,this.map[t])};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,t){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(t)?e+mxResources.extension:null},getSpecialBundle:function(e,t){if(null==mxClient.languages||!this.isLanguageSupported(t)){var n=t.indexOf("-");0<n&&(t=t.substring(0,n))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(t)&&t!=mxClient.defaultLanguage?e+"_"+t+mxResources.extension:null},add:function(e,t){if((t=null!=t?t:mxClient.language.toLowerCase())!=mxConstants.NONE){var n=mxResources.getDefaultBundle(e,t);if(null!=n)try{var a=mxUtils.load(n);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(n=mxResources.getSpecialBundle(e,t)))try{(a=mxUtils.load(n)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var t=0;t<e.length;t++)if("#"!=e[t].charAt(0)){var n=e[t].indexOf("=");if(0<n){var a=e[t].substring(0,n),i=e[t].length;13==e[t].charCodeAt(i-1)&&i--,n=e[t].substring(n+1,i),this.resourcesEncoded?(n=n.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(n)):mxResources.resources[a]=n}}}},get:function(e,t,n){if(null==(e=mxResources.resources[e])&&(e=n),null!=e&&null!=t){n=[];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<t.length&&n.push(t[a]),a=null):null!=a?a+=s:n.push(s)}e=n.join("")}return e}};function mxPoint(e,t){this.x=null!=e?e:0,this.y=null!=t?t:0}function mxRectangle(e,t,n,a){mxPoint.call(this,e,t),this.width=null!=n?n: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,t,n,a){this.x=e,this.y=t,this.width=n,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 t=Math.min(this.x,e.x),n=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=t,this.y=n,this.width=a-t,this.height=e-n}},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,t=0;t<d.length;t++){var n=d[t];if(n instanceof mxGeometryChange||n instanceof mxTerminalChange||n instanceof mxValueChange||n instanceof mxChildChange||n instanceof mxStyleChange){var a=l.getView().getState(n.cell||n.child,!1);if(null!=a)if(e=!0,n.constructor!=mxGeometryChange||l.model.isEdge(n.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(n.geometry.x-n.previous.x)*i,o=(n.geometry.y-n.previous.y)*i,r=(n.geometry.width-n.previous.width)*i;i=(n.geometry.height-n.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,n.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,t,n){for(var a=e.model.getChildCount(t),i=0;i<a;i++){var s=e.model.getChildAt(t,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,n),mxEffects.cascadeOpacity(e,s,n))}if(null!=(t=e.model.getEdges(t)))for(i=0;i<t.length;i++)null!=(a=e.getView().getState(t[i]))&&mxUtils.setOpacity(a.shape.node,n)},fadeOut:function(e,t,n,a,i,s){a=a||40,i=i||30;var o=t||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",n&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",n&&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 t=e.length,n=0;n<t;n+=1)mxUtils.removeCursors(e[n])},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,t){return function(){return t.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,t,n){var a=e.getAttribute(t);if(null!=a&&a==n)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,t,n)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,t,n){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(t)==n)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,t,n),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,t,n){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+t+"='"+n+"']")}:function(e,t,n){return null==e?null:e.ownerDocument.evaluate("//*[@"+t+"='"+n+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var t=null;if(null!=e)if(null!=e.name)t=e.name;else{for(e=e.toString(),t=9;" "==e.charAt(t);)t++;var n=e.indexOf("(",t);t=e.substring(t,n)}return t},indexOf:function(e,t){if(null!=e&&null!=t)for(var n=0;n<e.length;n++)if(e[n]==t)return n;return-1},remove:function(e,t){var n=null;if("object"==typeof t)for(var a=mxUtils.indexOf(t,e);0<=a;)t.splice(a,1),n=e,a=mxUtils.indexOf(t,e);for(var i in t)t[i]==e&&(delete t[i],n=e);return n},isNode:function(e,t,n,a){return!(null==e||isNaN(e.nodeType)||null!=t&&e.nodeName.toLowerCase()!=t.toLowerCase())&&(null==n||e.getAttribute(n)==a)},getChildNodes:function(e,t){t=t||mxConstants.NODETYPE_ELEMENT;for(var n=[],a=e.firstChild;null!=a;)a.nodeType==t&&n.push(a),a=a.nextSibling;return n},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 t=mxUtils.createXmlDocument();return t.async="false",t.loadXML(e),t}: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,t,n){var a=[];if(null!=e)if(t=t||"  ",n=n||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(n+"<"+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,t,n+t)),i=i.nextSibling;a.push(n+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,t){for(var n=t?e.previousSibling:e.nextSibling;null!=n&&n.nodeType==mxConstants.NODETYPE_TEXT;){var a=t?n.previousSibling:n.nextSibling,i=mxUtils.getTextContent(n);0==mxUtils.trim(i).length&&n.parentNode.removeChild(n),n=a}},htmlEntities:function(e,t){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==t||t)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,t){var n="";return null!=e&&(n=null==(n=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):n.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),n.replace(/\n/g,t||"&#xa;")},getTextContent:function(e){var t="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),t=e.nodeValue||""),t},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 t=[];t.push("<"+e.nodeName);var n=e.attributes;if(null!=n)for(var a=0;a<n.length;a++){var i=n[a].nodeValue;null!=i&&0<i.length&&(t.push(" "),t.push(n[a].nodeName),t.push('="'),t.push(i),t.push('"'))}return 0==e.innerHTML.length?t.push("/>"):(t.push(">"),t.push(e.innerHTML),t.push("</"+e.nodeName+">")),t.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,t){var n=e.ownerDocument.createTextNode(t);return null!=e&&e.appendChild(n),n},writeln:function(e,t){var n=e.ownerDocument.createTextNode(t);return null!=e&&(e.appendChild(n),e.appendChild(document.createElement("br"))),n},br:function(e,t){t=t||1;for(var n=null,a=0;a<t;a++)null!=e&&(n=e.ownerDocument.createElement("br"),e.appendChild(n));return n},button:function(e,t,n){return n=(n=null!=n?n:document).createElement("button"),mxUtils.write(n,e),mxEvent.addListener(n,"click",function(e){t(e)}),n},para:function(e,t){var n=document.createElement("p");return mxUtils.write(n,t),null!=e&&e.appendChild(n),n},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,t,n,a,i){return mxUtils.link(e,t,function(){n.execute(a)},i)},linkInvoke:function(e,t,n,a,i,s){return mxUtils.link(e,t,function(){n[a](i)},s)},link:function(e,t,n,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",n),mxUtils.write(i,t),null!=e&&e.appendChild(i),i},fit:function(e){var t=parseInt(e.offsetLeft),n=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<t+n&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-n)+"px"),t=parseInt(e.offsetTop),n=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<t+n&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-n)+"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 t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return t.initWithPath(e),t.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(t,1,4,null),(t=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),t.read(t.available())):(mxUtils.alert("File not found."),"")}return e=(t=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),t.close(),e},save:function(e,t){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);n.initWithPath(e),n.exists()||n.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(n,34,4,null),a.write(t,t.length),a.flush(),a.close()}else(n=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(t),n.Close()},saveAs:function(e){var t=document.createElement("iframe");t.setAttribute("src",""),t.style.visibility="hidden",document.body.appendChild(t);try{if(mxClient.IS_NS){var n=t.contentDocument;n.open(),n.write(e),n.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),t.focus(),saveDocument(n)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(n=t.contentWindow.document).write(e),n.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(t)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var t=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(t){var n=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(n){n.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,n.setTransferData("text/unicode",a,2*e.length),t.setData(n,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,t,n){return new mxXmlRequest(e,null,"GET").send(t,n)},post:function(e,t,n,a){return new mxXmlRequest(e,t).send(n,a)},submit:function(e,t,n,a){return new mxXmlRequest(e,t).simulate(n,a)},loadInto:function(e,t,n){mxClient.IS_IE?t.onreadystatechange=function(){4==t.readyState&&n()}:t.addEventListener("load",n,!1),t.load(e)},getValue:function(e,t,n){return null==(e=null!=e?e[t]:null)&&(e=n),e},getNumber:function(e,t,n){return null==(e=null!=e?e[t]:null)&&(e=n||0),Number(e)},getColor:function(e,t,n){return null==(e=null!=e?e[t]:null)?e=n:e==mxConstants.NONE&&(e=null),e},clone:function(e,t,n){n=null!=n&&n;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==t||mxUtils.indexOf(t,i)<0)&&(a[i]=n||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,t){if(null==e&&null!=t||null!=e&&null==t||null!=e&&null!=t&&e.length!=t.length)return!1;if(null!=e&&null!=t)for(var n=0;n<e.length;n++)if(e[n]==t[n]||null!=e[n]&&!e[n].equals(t[n]))return!1;return!0},equalEntries:function(e,t){if(null==e&&null!=t||null!=e&&null==t||null!=e&&null!=t&&e.length!=t.length)return!1;if(null!=e&&null!=t)for(var n in e)if(e[n]!=t[n])return!1;return!0},extend:function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e},toString:function(e){var t,n="";for(t in e)try{if(null==e[t])n+=t+" = [null]\n";else if("function"==typeof e[t])n+=t+" => [Function]\n";else if("object"==typeof e[t])n=n+(t+" => [")+mxUtils.getFunctionName(e[t].constructor)+"]\n";else n+=t+" = "+e[t]+"\n"}catch(e){n+=t+"="+e.message}return n},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,t,n,a,i,s,o,r,l){if(r-=e,l-=t,0===n||0===a)return h;n=Math.abs(n),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=n*n)+(p=d*d)/(A=a*a))?(n*=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))))*n*d/a)-h*(p=-1*s*a*i/n)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/n)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/n)-Math.atan2((d-p)/a,(i-c)/n))?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*n,m*=a,n*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(n*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=n*u+m*b+l,-d*(c*b+a*u));u=-d*(n*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+t),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+t),h[b+4]=Number(A+e),h[b+5]=Number(v+t),p=A+E,g=v+u}return h},getBoundingBox:function(e,t){var n=null;if(null!=e&&null!=t&&0!=t){var a=mxUtils.toRadians(t),i=(n=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,n,i,s),a=mxUtils.getRotatedPoint(a,n,i,s),r=mxUtils.getRotatedPoint(r,n,i,s),l=mxUtils.getRotatedPoint(l,n,i,s);(n=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),n.add(new mxRectangle(r.x,r.y,0,0)),n.add(new mxRectangle(l.x,l.y,0,0))}return n},getRotatedPoint:function(e,t,n,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*t-(e=e.y-a.y)*n+a.x,e*t+i*n+a.y)},getPortConstraints:function(e,t,n,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,t,n){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,t,n);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,t,n){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=t.x;var r=n.x;if(t.x>n.x&&(e=n.x,r=t.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=t.y,o=n.y;var l=n.x-t.x;return 1e-7<Math.abs(l)&&(i=(n=(n.y-t.y)/l)*e+(t=t.y-n*t.x),o=n*r+t),o<i&&(t=o,o=i,i=t),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,t,n){return e.x<=t&&e.x+e.width>=t&&e.y<=n&&e.y+e.height>=n},intersects:function(e,t){var n=e.width,a=e.height,i=t.width,s=t.height;if(i<=0||s<=0||n<=0||a<=0)return!1;var o=e.x,r=e.y,l=t.x,d=t.y;s+=d,n+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(n<o||l<n)&&(a<r||d<a)},intersectsHotspot:function(e,t,n,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()),t=(e=mxUtils.getRotatedPoint(new mxPoint(t,n),i,s,o)).x,n=e.y),mxUtils.contains(a,t,n)}return!0},getOffset:function(e,t){var n=0,a=0;if(null!=t&&t){var i=document.body,s=document.documentElement;n=n+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)n+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(n,a)},getScrollOrigin:function(e){for(var t=document.body,n=document.documentElement,a=new mxPoint(t.scrollLeft||n.scrollLeft,t.scrollTop||n.scrollTop);null!=e&&e!=t&&e!=n;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,t,n){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(t-e.x,n-e.y)},ltrim:function(e,t){return e.replace(RegExp("^["+(t||"\\s")+"]+","g"),"")},rtrim:function(e,t){return e.replace(RegExp("["+(t||"\\s")+"]+$","g"),"")},trim:function(e,t){return mxUtils.ltrim(mxUtils.rtrim(e,t),t)},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,t){return(e%t+t)%t},intersection:function(e,t,n,a,i,s,o,r){var l=(r-s)*(n-e)-(o-i)*(a-t);return o=((o-i)*(t-s)-(r-s)*(e-i))/l,i=((n-e)*(t-s)-(a-t)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(n-e),t+o*(a-t)):null},ptSegDistSq:function(e,t,n,a,i,s){return n=(i-=e)*(n-=e)+(s-=t)*(a-=t)<=0?0:(e=(i=n-i)*n+(s=a-s)*a)<=0?0:e*e/(n*n+a*a),(i=i*i+s*s-n)<0&&(i=0),i},relativeCcw:function(e,t,n,a,i,s){return 0==(e=(i-=e)*(a-=t)-(s-=t)*(n-=e))&&(0<(e=i*n+s*a)&&((e=(i-n)*n+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,t){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,t,n){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,t,n,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,t){mxUtils.isVml(e)?e.style.filter=100<=t?null:"alpha(opacity="+t/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=t?null:"alpha(opacity="+t+")":e.style.opacity=t/100},createImage:function(e){var t=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((t=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),t.style.borderStyle="none"):((t=document.createElement("img")).setAttribute("src",e),t.setAttribute("border","0")),t},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,t){var n=s.get(e);null==n&&(n=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,n));var a=s.get(t);return null==a&&(a=mxCellPath.create(t).split(mxCellPath.PATH_SEPARATOR),s.put(t,a)),0==(n=mxCellPath.compare(n,a))?0:0<n==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var t=[];if(null!=e){e=e.split(";");for(var n=0;n<e.length;n++)e[n].indexOf("=")<0&&t.push(e[n])}return t},indexOfStylename:function(e,t){if(null!=e&&null!=t)for(var n=e.split(";"),a=0,i=0;i<n.length;i++){if(n[i]==t)return a;a+=n[i].length+1}return-1},addStylename:function(e,t){return mxUtils.indexOfStylename(e,t)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=t),e},removeStylename:function(e,t){var n=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=t&&n.push(a[i]);return n.join(";")},removeAllStylenames:function(e){var t=[];if(null!=e){e=e.split(";");for(var n=0;n<e.length;n++)0<=e[n].indexOf("=")&&t.push(e[n])}return t.join(";")},setCellStyles:function(e,t,n,a){if(null!=t&&0<t.length){e.beginUpdate();try{for(var i=0;i<t.length;i++)if(null!=t[i]){var s=mxUtils.setStyle(e.getStyle(t[i]),n,a);e.setStyle(t[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,t,n){var a=null!=n&&(void 0===n.length||0<n.length);if(null==e||0==e.length)a&&(e=t+"="+n);else{var i=e.indexOf(t+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+t+"="+n):(t=a?t+"="+n:"",n=e.indexOf(";",i),a||n++,e=e.substring(0,i)+t+(i<n?e.substring(n):""))}return e},setCellStyleFlags:function(e,t,n,a,i){if(null!=t&&0<t.length){e.beginUpdate();try{for(var s=0;s<t.length;s++)if(null!=t[s]){var o=mxUtils.setStyleFlag(e.getStyle(t[s]),n,a,i);e.setStyle(t[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,t,n,a){if(null==e||0==e.length)e=a||null==a?t+"="+n:t+"=0";else{var i=e.indexOf(t+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+t+"="+n:e+i+t+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+t.length+1):e.substring(i+t.length+1,s),o=null==a?parseInt(o)^n:a?parseInt(o)|n:parseInt(o)&~n;e=e.substring(0,i)+t+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,t){var n=0,a=0;return e==mxConstants.ALIGN_CENTER?n=-.5:e==mxConstants.ALIGN_RIGHT&&(n=-1),t==mxConstants.ALIGN_MIDDLE?a=-.5:t==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(n,a)},getSizeForString:function(e,t,n){t=null!=t?t:mxConstants.DEFAULT_FONTSIZE,n=null!=n?n:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=n,a.style.fontSize=Math.round(t)+"px",a.style.lineHeight=Math.round(t*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,t,n,a,i){a=null!=a?a:0,i=null!=i?i:0,t=null!=t?t:1,null==n&&(n=[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),t=new mxTemporaryCellStates(e.getView(),t,n);try{o=(new mxCodec).encode(e.getView())}finally{t.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,t,n,a){if(e<1)return 1;a=null!=a?a:0;var i=(n=null!=n?n:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;n=n.height-2*a,a=t.getGraphBounds().clone(),t=t.getView().getScale(),a.width/=t,a.height/=t,n=(t=a.width)/a.height/(i/n),a=Math.sqrt(e);var s=Math.sqrt(n);if(n=a*s,a/=s,n<1&&e<a){var o=a/e;a=e,n/=o}for(a<1&&e<n&&(o=n/e,n=e,a/=o),o=Math.ceil(n)*Math.ceil(a),s=0;e<o;){o=Math.floor(n)/n;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(n-1)/n),1==r&&(r=Math.floor(a-1)/a),n*=o=r<o?o:r,a*=o,o=Math.ceil(n)*Math.ceil(a),10<++s)break}return i*n/t*.99999},show:function(e,t,n,a){if(n=null!=n?n:0,a=null!=a?a:0,null==t?t=window.open().document:t.open(),n=-(i=e.getGraphBounds()).x+n,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>",t.writeln(i),t.close(),null!=(e=t.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=n+"px",e.style.top=a+"px")}else{for(t.writeln("<html"),t.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)t.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)t.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)t.writeln(mxUtils.getOuterHtml(s[o]));for(t.writeln("</head>"),t.writeln("</html>"),t.close(),null==t.body&&t.documentElement.appendChild(t.createElement("body")),t.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),t.body.appendChild(o),e=e.nextSibling;null!=(e=t.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+n+","+a+")"),(n=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),n.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(t.body),t},printScreen:function(e){var t=window.open();mxUtils.show(e,t.document),e=function(){t.focus(),t.print(),t.close()},mxClient.IS_GC?t.setTimeout(e,500):e()},popup:function(e,t){if(t){var n=document.createElement("div");n.style.overflow="scroll",n.style.width="636px",n.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),n.appendChild(a),(n=new mxWindow("Popup Window",n,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),n.setVisible(!0)}else mxClient.IS_NS?((n=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),n.document.close()):((a=(n=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),n.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,t){return prompt(e,t)},confirm:function(e){return confirm(e)},error:function(e,t,n,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-t)/2,a/4,t,null,!1,!0);return n&&(mxUtils.br(i),t=document.createElement("p"),n=document.createElement("button"),mxClient.IS_IE?n.style.cssText="float:right":n.setAttribute("style","float:right"),mxEvent.addListener(n,"click",function(e){o.destroy()}),mxUtils.write(n,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),t.appendChild(n),i.appendChild(t),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,t,n,i,a,s,o,r,l,d){return(e=new mxDragSource(e,n)).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 t?t(e):t},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var t=i.cloneNode(!0),n=parseInt(t.style.width),a=parseInt(t.style.height);return t.style.width=Math.round(n*e.view.scale)+"px",t.style.height=Math.round(a*e.view.scale)+"px",t})),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 t=1;t<arguments.length;t+=2)null!=arguments[t+1]&&(this.properties[arguments[t]]=arguments[t+1])}function mxMouseEvent(e,t){this.evt=e,this.state=t}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 t=this.getSource();null!=t;){if(t==e.node)return!0;t=t.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,t){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(t)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var t=0;t<this.eventListeners.length;)this.eventListeners[t+1]==e?this.eventListeners.splice(t,2):t+=2},mxEventSource.prototype.fireEvent=function(e,t){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==t&&(t=this.getEventSource()),null==t&&(t=this);for(var n=[t,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,n)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,t,n){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:t,f:n})};return window.addEventListener?function(e,t,n){e.addEventListener(t,n,!1),a(e,t,n)}:function(e,t,n){e.attachEvent("on"+t,n),a(e,t,n)}}(),removeListener:function(){var a=function(e,t,n){if(null!=e.mxListenerList){t=e.mxListenerList.length;for(var a=0;a<t;a++)if(e.mxListenerList[a].f==n){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,t,n){e.removeEventListener(t,n,!1),a(e,t,n)}:function(e,t,n){e.detachEvent("on"+t,n),a(e,t,n)}}(),removeAllListeners:function(e){var t=e.mxListenerList;if(null!=t)for(;0<t.length;){var n=t[0];mxEvent.removeListener(e,n.name,n.f)}},addGestureListeners:function(e,t,n,a){null!=t&&mxEvent.addListener(e,"mousedown",t),null!=n&&mxEvent.addListener(e,"mousemove",n),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=t&&mxEvent.addListener(e,"touchstart",t),null!=n&&mxEvent.addListener(e,"touchmove",n),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,t,n,a){null!=t&&mxEvent.removeListener(e,"mousedown",t),null!=n&&mxEvent.removeListener(e,"mousemove",n),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=t&&mxEvent.removeListener(e,"touchstart",t),null!=n&&mxEvent.removeListener(e,"touchmove",n),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,n,t,a,i,s,o){var r=function(e){return"function"==typeof t?t(e):t};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||n.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||n.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||n.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 t=r(e);n.dblClick(e,null!=t?t.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var t=e.length,n=0;n<t;n+=1)mxEvent.release(e[n])},addMouseWheelListener:function(n){if(null!=n){var e=function(e){null==e&&(e=window.event);var t=0;0!=(t=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&n(e,0<t)};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,t,n){n=null==n||n,(null==t||t)&&(e.preventDefault?(n&&e.stopPropagation(),e.preventDefault()):n&&(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,t,n,a,i,s){this.url=e,this.params=t,this.method=n||"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,t){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,t){null!=t&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,t){var n=null;(e=e||document)==document&&(n=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=t&&a.setAttribute("target",t),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!=n&&(window.onbeforeunload=n)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,t){return t=mxClipboard.copy(e,t),mxClipboard.insertCount=0,mxClipboard.removeCells(e,t),t},removeCells:function(e,t){e.removeCells(t)},copy:function(e,t){t=t||e.getSelectionCells();var n=e.getExportableCells(t);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(n),n},paste:function(e){if(null!=mxClipboard.cells){var t=e.getImportableCells(mxClipboard.cells),n=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();t=e.importCells(t,n,n,a);mxClipboard.insertCount++,e.setSelectionCells(t)}}};function mxWindow(e,t,n,a,i,s,o,r,l,d){null!=t&&(o=null==o||o,this.content=t,this.init(n,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,t,n){this.src=e,this.width=t,this.height=n}function mxDivResizer(e,t){if("div"==e.nodeName.toLowerCase()){null==t&&(t=window),this.div=e;var n=mxUtils.getCurrentStyle(e);null!=n&&(this.resizeWidth="auto"==n.width,this.resizeHeight="auto"==n.height),mxEvent.addListener(t,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,t){this.element=e,this.dropHandler=t,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(t,e,n,a){this.model=t,this.urlInit=e,this.urlPoll=n,this.urlNotify=a,null!=t&&(this.codec=new mxCodec,this.codec.lookup=function(e){return t.getCell(e)}),t.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,t){var n=t.getProperty("edit");(null!=n&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(n.changes,n.undone)+"</edit>")}))}function mxUndoableEdit(e,t){this.source=e,this.changes=[],this.significant=null==t||t}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,t,n,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=t+"px",this.table=document.createElement("table"),this.table.className=i,null!=n&&(mxClient.IS_IE||(this.div.style.width=n+"px"),this.table.style.width=n+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),t=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",t.appendChild(this.title),e.appendChild(t),t=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),t.appendChild(this.td),e.appendChild(t),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 t=this.title.firstChild;null!=t;){var n=t.nextSibling;t.nodeType==mxConstants.NODETYPE_TEXT&&t.parentNode.removeChild(t),t=n}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 t=mxWindow.activeWindow.getElement();null!=t&&null!=t.style&&(t.style.zIndex=e)}t=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",t))}},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,t=mxUtils.bind(this,function(e){var t=mxEvent.getClientX(e)-a,n=mxEvent.getClientY(e)-i;this.setSize(s+t,o+n),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),n=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,t,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,t,n),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,t){e=Math.max(this.minimumSize.width,e),t=Math.max(this.minimumSize.height,t),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=t+"px"),this.table.style.width=e+"px",this.table.style.height=t+"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 n=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),n)n=!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{n=!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 t=this.getMinimumSize();0<t.height&&(mxClient.IS_IE||(this.div.style.height=t.height+"px"),this.table.style.height=t.height+"px"),0<t.width&&(mxClient.IS_IE||(this.div.style.width=t.width+"px"),this.table.style.width=t.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 n=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(n)n=!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"!=(t=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(n=!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 t=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=t.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(),t=mxUtils.bind(this,function(e){var t=mxEvent.getClientX(e)-a,n=mxEvent.getClientY(e)-i;this.setLocation(s+t,o+n),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),n=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,t,n),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,t,n),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,t){this.div.style.left=e+"px",this.div.style.top=t+"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,t){var n=document.createElement("tr"),a=document.createElement("td");n.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(){t()}),n.appendChild(a),this.body.appendChild(n)},mxForm.prototype.addText=function(e,t){var n=document.createElement("input");return n.setAttribute("type","text"),n.value=t,this.addField(e,n)},mxForm.prototype.addCheckbox=function(e,t){var n=document.createElement("input");return n.setAttribute("type","checkbox"),this.addField(e,n),t&&(n.checked=!0),n},mxForm.prototype.addTextarea=function(e,t,n){var a=document.createElement("textarea");return mxClient.IS_NS&&n--,a.setAttribute("rows",n||2),a.value=t,this.addField(e,a)},mxForm.prototype.addCombo=function(e,t,n){var a=document.createElement("select");return null!=n&&a.setAttribute("size",n),t&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,t,n,a){var i=document.createElement("option");mxUtils.writeln(i,t),i.setAttribute("value",n),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,t){var n=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),n.appendChild(a),(a=document.createElement("td")).appendChild(t),n.appendChild(a),this.body.appendChild(n),t},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(),t=this.getDocumentHeight(),n=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(n)&&!isNaN(a)&&0<=n&&0<=a&&0<e-a-n&&(this.div.style.width=e-a-n+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<t-i-s&&(this.div.style.height=t-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,t,n){return e.getCellAt(t,n)},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,t){var n=mxEvent.getClientX(t),a=mxEvent.getClientY(t),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return n>=i.x-s.x&&a>=i.y-s.y&&n<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(t=this.getGraphForEvent(e))&&!this.graphContainsEvent(t,e)&&(t=null),t!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=t,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 t=mxEvent.getClientX(e),n=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(t+=this.dragOffset.x,n+=this.dragOffset.y),t+=document.body.scrollLeft||document.documentElement.scrollLeft,n+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=t+"px",this.dragElement.style.top=n+"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 t=this.currentGraph.view.scale,n=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/t-n.x,this.currentPoint.y/t-n.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,t){var n=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(t)-n.x+a.x;n=mxEvent.getClientY(t)-n.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,n,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,n),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(t);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(t))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),n=new mxPoint(i,n),n=this.currentGuide.move(s,n,a),s=!1,i=n.x,n=n.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,n=(e.snap(n/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,n+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(n)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,n)},mxDragSource.prototype.drop=function(e,t,n,a,i){this.dropHandler(e,t,n,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,t,n,a,i,s){var o=document.createElement(null!=t?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",t),null!=e&&(null!=t?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=n&&(mxEvent.addListener(o,"click",n),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",n)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",t):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 t=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),t!=o&&(this.currentImg=o,this.menu.factoryMethod=s,t=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(t.x,t.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 t=document.createElement("div");t.style.display="inline",t.className="mxToolbarComboContainer";var n=document.createElement("select");return n.className=e||"mxToolbarCombo",t.appendChild(n),this.container.appendChild(t),n},mxToolbar.prototype.addActionCombo=function(e,t){var n=document.createElement("select");return n.className=t||"mxToolbarCombo",this.addOption(n,e,null),mxEvent.addListener(n,"change",function(e){var t=n.options[n.selectedIndex];n.selectedIndex=0,null!=t.funct&&t.funct(e)}),this.container.appendChild(n),n},mxToolbar.prototype.addOption=function(e,t,n){var a=document.createElement("option");return mxUtils.writeln(a,t),"function"==typeof n?a.funct=n:a.setAttribute("value",n),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,t,n,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",t),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)),n()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),n()),s},mxToolbar.prototype.addMode=function(e,t,n,a,i,s){s=null==s||s;var o=document.createElement(null!=t?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",t),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,n),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,n),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=n,this.selectMode(o,n))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,t){if(this.selectedMode!=e){if(null!=this.selectedMode){var n=this.selectedMode.altIcon;null!=n?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",n)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(n=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",n)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",t))}},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,t,n){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,t,n){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,t,n))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(n,a,t){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=t?t(e):this.stop(e)});mxUtils.get(n,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",n,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var t=e.getDocumentElement();null==t?i("Invalid response: "+e.getText()):this.receive(t)}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,t){for(var n="",a=t?-1:1,i=t?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);n=n+mxUtils.getXml(s,this.linefeed)}return n},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var t=e.getAttribute("namespace");for(null!=t&&(this.model.prefix=t+"-"),t=e.firstChild;null!=t;){var n=t.nodeName.toLowerCase();"state"==n?this.processState(t):"delta"==n&&this.processDelta(t),t=t.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 t=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",t,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",t))}},mxSession.prototype.createUndoableEdit=function(e){var t=new mxUndoableEdit(this.model,this.significantRemoteChanges);return t.changes=e,t.notify=function(){t.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",t,"changes",t.changes)),t.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",t,"changes",t.changes))},t},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var t=[];for(e=e.firstChild;null!=e;){var n=this.decodeChange(e);null!=n&&t.push(n),e=e.nextSibling}return t},mxSession.prototype.decodeChange=function(e){var t=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(t="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(t.model=this.model,t.execute(),"mxChildChange"==e.nodeName&&null==t.parent&&this.cellRemoved(t.child))),t},mxSession.prototype.cellRemoved=function(e,t){this.codec.putObject(e.getId(),e);for(var n=this.model.getChildCount(e),a=0;a<n;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 t=this.changes[e];null!=t.execute?t.execute():null!=t.undo&&t.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}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,t=0;t<e;t++){var n=this.changes[t];null!=n.execute?n.execute():null!=n.redo&&n.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}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 t=this.history[this.indexOfNextAdd++];if(t.redo(),t.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",t));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),t=0;t<e.length;t++)e[t].die()};var mxUrlConverter=function(e){var n=!0,a=null,i=null;return{isEnabled:function(){return n},setEnabled:function(e){n=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(n&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var t=(a=i+location.pathname).lastIndexOf("/");0<t&&(a=a.substring(0,t+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,t){},mouseMove:function(e,t){},mouseUp:mxUtils.bind(this,function(e,t){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),t=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,t),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,t,n,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!=n?n: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=t+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=t-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,t=s.panDy;0==e&&0==t||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+t/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,t){this.isEnabled()&&this.graphModelChanged(t.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,t,n,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=t?t:6,this.ease=null!=n?n: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,t){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=t&&t;var n=null;if(e.ownerDocument!=document)for(n=e;null!=n&&"svg"!=n.nodeName;)n=n.parentNode;null!=n&&(0<n.getElementsByTagName("defs").length&&(this.defs=n.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=n.firstChild?n.insertBefore(this.defs,n.firstChild):n.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,t,n,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!=t?((i=document.createElement("img")).src=t,r.appendChild(i)):null!=i&&((t=document.createElement("div")).className=i,r.appendChild(t)),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!=n&&n(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 t=document.createElement("img");t.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(t)},mxPopupMenu.prototype.showSubmenu=function(e,t){if(null!=t.div){t.div.style.left=e.div.offsetLeft+t.offsetLeft+t.offsetWidth-1+"px",t.div.style.top=e.div.offsetTop+t.offsetTop+"px",document.body.appendChild(t.div);var n=parseInt(t.div.offsetLeft),a=parseInt(t.div.offsetWidth),i=document.body,s=document.documentElement;n+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(t.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(t.div)}},mxPopupMenu.prototype.addSeparator=function(e,t){if(e=e||this,this.smartSeparators&&!t)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var n=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",n.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),n.appendChild(a),e.tbody.appendChild(n)}},mxPopupMenu.prototype.popup=function(e,t,n,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=t+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,n,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 t=0;t<this.cells.length;t++)this.animateCell(cells[t],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,t,n){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,t.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(n&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),t,n)},mxMorphing.prototype.stopRecursion=function(e,t){return null!=t&&(0!=t.x||0!=t.y)},mxMorphing.prototype.getDelta=function(e){var t=this.getOriginForCell(e.cell),n=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-n.x,e.y/a-n.y),new mxPoint((t.x-e.x)*a,(t.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var t=null;return null!=e&&(t=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(t.x+=e.x,t.y+=e.y)),null==t&&(t=new mxPoint(-(t=this.graph.view.getTranslate()).x,-t.y)),t},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,t,n){this.images[e]={value:t,fallback:n}},mxImageBundle.prototype.getImage=function(e){var t=null;return null!=e&&(null!=(e=this.images[e])&&(t=this.alt?e.fallback:e.value)),t},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,t){null!=e&&(this.visitStatesRecursive(e,t,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,t,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,t,n){if(null!=e){n(e,t);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,t,n)}}},mxImageExport.prototype.drawCellState=function(e,t){e.shape instanceof mxShape&&(t.save(),e.shape.paint(t),t.restore()),null!=e.text&&(t.save(),e.text.paint(t),t.restore())},mxImageExport.prototype.drawOverlays=function(e,n){null!=e.overlays&&e.overlays.visit(function(e,t){t instanceof mxShape&&t.paint(n)})},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,t=2;t<arguments.length;t+=2)this.lastX=arguments[t-1],this.lastY=arguments[t],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,t,n,a,i){return n*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,t),Math.cos(n),Math.sin(n),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,t){this.state.dx+=e,this.state.dy+=t},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,t,n,a,i,s,o,r,l){(n=this.state).fillColor=e,n.fillAlpha=null!=r?r:1,n.gradientColor=t,n.gradientAlpha=null!=l?l:1,n.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,t){this.state.shadowDx=e,this.state.shadowDy=t},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,t){this.addOp(this.moveOp,e,t)},mxAbstractCanvas2D.prototype.lineTo=function(e,t){this.addOp(this.lineOp,e,t)},mxAbstractCanvas2D.prototype.quadTo=function(e,t,n,a){this.addOp(this.quadOp,e,t,n,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,t,n,a,i,s){this.addOp(this.curveOp,e,t,n,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,t,n,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,t,n,a,i,s,o),t=0;t<e.length;t+=6)this.curveTo(e[t],e[t+1],e[t+2],e[t+3],e[t+4],e[t+5])},mxAbstractCanvas2D.prototype.close=function(e,t,n,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 t=this.createElement("scale");t.setAttribute("scale",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.translate=function(e,t){var n=this.createElement("translate");n.setAttribute("dx",this.format(e)),n.setAttribute("dy",this.format(t)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.rotate=function(e,t,n,a,i){var s=this.createElement("rotate");(0!=e||t||n)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",t?"1":"0"),s.setAttribute("flipV",n?"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 t=this.createElement("alpha");t.setAttribute("alpha",this.format(e)),this.root.appendChild(t)},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 t=this.createElement("fillcolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setGradient=function(e,t,n,a,i,s,o,r,l){if(null!=e&&null!=t){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",t),d.setAttribute("x",this.format(n)),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 t=this.createElement("strokecolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var t=this.createElement("strokewidth");t.setAttribute("width",this.format(e)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var t=this.createElement("dashed");t.setAttribute("dashed",e?"1":"0"),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var t=this.createElement("dashpattern");t.setAttribute("pattern",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var t=this.createElement("linecap");t.setAttribute("cap",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var t=this.createElement("linejoin");t.setAttribute("join",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var t=this.createElement("miterlimit");t.setAttribute("limit",e),this.root.appendChild(t)},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 t=this.createElement("fontcolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)}},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 t=this.createElement("fontbackgroundcolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)}},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 t=this.createElement("fontbordercolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var t=this.createElement("fontsize");t.setAttribute("size",e),this.root.appendChild(t)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var t=this.createElement("fontfamily");t.setAttribute("family",e),this.root.appendChild(t)}},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 t=this.createElement("fontstyle");t.setAttribute("style",e),this.root.appendChild(t)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var t=this.createElement("shadow");t.setAttribute("enabled",e?"1":"0"),this.root.appendChild(t)},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 t=this.createElement("shadowcolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var t=this.createElement("shadowalpha");t.setAttribute("alpha",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,t){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==t)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var n=this.createElement("shadowoffset");n.setAttribute("dx",e),n.setAttribute("dy",t),this.root.appendChild(n)},mxXmlCanvas2D.prototype.rect=function(e,t,n,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(t)),i.setAttribute("w",this.format(n)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,t,n,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(t)),o.setAttribute("w",this.format(n)),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,t,n,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(t)),i.setAttribute("w",this.format(n)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,t,n,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(t)),l.setAttribute("w",this.format(n)),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,t){var n=this.createElement("move");n.setAttribute("x",this.format(e)),n.setAttribute("y",this.format(t)),this.root.appendChild(n),this.lastX=e,this.lastY=t},mxXmlCanvas2D.prototype.lineTo=function(e,t){var n=this.createElement("line");n.setAttribute("x",this.format(e)),n.setAttribute("y",this.format(t)),this.root.appendChild(n),this.lastX=e,this.lastY=t},mxXmlCanvas2D.prototype.quadTo=function(e,t,n,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(t)),i.setAttribute("x2",this.format(n)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=n,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,t,n,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(t)),o.setAttribute("x2",this.format(n)),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,t,n,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(t)),u.setAttribute("w",this.format(n)),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,t){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(t||mxConstants.NS_SVG,e);var n=this.root.ownerDocument.createElement(e);return null!=t&&n.setAttribute("xmlns",t),n},mxSvgCanvas2D.prototype.createGradientId=function(e,t,n,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==t.charAt(0)&&(t=t.substring(1)),e=e.toLowerCase()+"-"+n,t=t.toLowerCase()+"-"+a,(n=null)==i||i==mxConstants.DIRECTION_SOUTH?n="s":i==mxConstants.DIRECTION_EAST?n="e":(a=e,e=t,t=a,i==mxConstants.DIRECTION_NORTH?n="s":i==mxConstants.DIRECTION_WEST&&(n="e")),"mx-gradient-"+e+"-"+t+"-"+n},mxSvgCanvas2D.prototype.getSvgGradient=function(e,t,n,a,i){var s=this.createGradientId(e,t,n,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,t,n,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,t,n,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%"),n=n<1?";stop-opacity:"+n:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+n),s.appendChild(i),n=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+t+n),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,t){var n=this.node,a=this.state;if(null!=n){if("path"==n.nodeName){if(!(null!=this.path&&0<this.path.length))return;n.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=n.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?n.setAttribute("fill","none"):n.setAttribute("fill","transparent"),e=!1),t&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||n.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&n.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(n)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(n)),this.pointerEvents&&("path"!=n.nodeName||this.path[this.path.length-1]==this.closeOp)&&n.setAttribute("pointer-events","all"),this.root.appendChild(n)}},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 t=Math.max(1,this.format(e.strokeWidth*e.scale));1!=t&&this.node.setAttribute("stroke-width",t),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(t))},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 t=e.lineCap;"flat"==t&&(t="butt"),"butt"!=t&&this.node.setAttribute("stroke-linecap",t)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var t=this.state.dashPattern.split(" "),n=[];if(0<t.length)for(var a=0;a<t.length;a++)n[a]=Number(t[a])*e;return n.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var t=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",t),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var t=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",t.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",t.shadowColor),e.setAttribute("transform","translate("+this.format(t.shadowDx*t.scale)+","+this.format(t.shadowDy*t.scale)+")"+(t.transform||"")),e.setAttribute("opacity",t.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,t,n,a,i){if(0!=e||t||n){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",t&&n)e+=180;else if(t^n){var o=t?a:0,r=t?-1:1,l=n?i:0,d=n?-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)+")"}(t?!n:n)&&(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,t,n,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((t+i.dy)*i.scale)),s.setAttribute("width",this.format(n*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,t,n,a,i,s){this.rect(e,t,n,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,t,n,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+n/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((t+a/2+i.dy)*i.scale)),s.setAttribute("rx",n/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,t,n,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,t+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(t*l.scale)),d.setAttribute("width",this.format(n*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=-n-2*e),r&&(c=-1,u=-a-2*t),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(t*l.scale)),d.setAttribute("width",this.format(n*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,t,n,a,i){return n=this.state,a="display:inline-block;font-size:"+Math.round(n.fontSize)+"px;font-family:"+n.fontFamily+";color:"+n.fontColor+";line-height:"+Math.round(n.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),t==mxConstants.ALIGN_CENTER?a+="text-align:center;":t==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),t="",null!=n.fontBackgroundColor&&(t+="background-color:"+n.fontBackgroundColor+";"),null!=n.fontBorderColor&&(t+="border:1px solid "+n.fontBorderColor+";"),mxUtils.isNode(e)||((n=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=n.value,i?a+=t:0<t.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+t+'">'+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,t,n,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,t+=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<n&&(p+="width:"+Math.round(n)+"px;")):d&&(p+="width:"+Math.round(n)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<n&&(p+="width:"+Math.round(n)+"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);n=d?Math.max(n,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=n/2:s==mxConstants.ALIGN_RIGHT&&(i-=n),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),t+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+n/2+","+a/2+")",e=(t=this.rotatePoint((e+n/2)*u.scale,(t+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-n*u.scale/2,t=t.y-a*u.scale/2):(e*=u.scale,t*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(t)+")"+s),l.setAttribute("width",Math.round(Math.max(1,n))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,t,n,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,t,n,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(t=Math.round(t))+"-"+(n=Math.round(n))+"-"+(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",t),i.setAttribute("width",n),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,t,n,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(t*r.scale)+")"),d&&0<n&&0<a){var g=e;c=t,s==mxConstants.ALIGN_CENTER?g-=n/2:s==mxConstants.ALIGN_RIGHT&&(g-=n),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,n*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=t+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,t,n,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var t=this.state;e.setAttribute("fill",t.fontColor),(!this.styleEnabled||t.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",t.fontFamily),(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,t,n,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?n-=i/2:o==mxConstants.ALIGN_RIGHT&&(n-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((n+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),t=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(t?0:1),c.width,c.height+(t?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"),t=mxUtils.htmlEntities(t,!1),c.innerHTML=t.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?n-=i/2:o==mxConstants.ALIGN_RIGHT&&(n-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((n+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((t=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),t.setAttribute("stroke",d.fontBorderColor||"none"),t.setAttribute("x",Math.floor(c.x-1)),t.setAttribute("y",Math.floor(c.y-1)),t.setAttribute("width",Math.ceil(c.width+2)),t.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,t.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&t.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(t,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,t){this.graph=e,this.setStates(t)}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,t){var n=this.node,a=this.state;if(null!=n){if("shape"==n.nodeName){if(!(null!=this.path&&0<this.path.length))return;n.path=this.path.join(" ")+" e",n.style.width=this.root.style.width,n.style.height=this.root.style.height,n.coordsize=parseInt(n.style.width)+" "+parseInt(n.style.height)}n.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(n,e&&null!=a.fillColor,t&&null!=a.strokeColor)),t&&null!=a.strokeColor?(n.stroked="true",n.strokecolor=a.strokeColor):n.stroked="false",n.appendChild(this.createStroke()),e&&null!=a.fillColor?n.appendChild(this.createFill()):!this.pointerEvents||"shape"==n.nodeName&&this.path[this.path.length-1]!=this.closeOp?n.filled="false":n.appendChild(this.createTransparentFill()),this.root.appendChild(n)}},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,t=document.createElement(mxClient.VML_PREFIX+":fill");if(t.color=e.fillColor,null!=e.gradientColor){t.type="gradient",t.method="none",t.color2=e.gradientColor;var n=180-e.rotation;n=e.gradientDirection==mxConstants.DIRECTION_WEST?n-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?n+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?n-(180+("y"==this.root.style.flip?-180:0)):n+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(n*=-1),t.angle=mxUtils.mod(n,360),t.opacity=100*e.alpha*e.fillAlpha+"%",t.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(t.opacity=100*e.alpha+"%");return t},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,t=document.createElement(mxClient.VML_PREFIX+":stroke");return t.endcap=e.lineCap||"flat",t.joinstyle=e.lineJoin||"miter",t.miterlimit=e.miterLimit||"10",e.alpha<1&&(t.opacity=100*e.alpha+"%"),e.dashed&&(t.dashstyle=this.getVmlDashStyle()),t},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var t=this.state.dashPattern.split(" ");0<t.length&&1==t[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,t,n){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))),n?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",t?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,t,n,a,i){t&&n?e+=180:t?this.root.style.flip="x":n&&(this.root.style.flip="y"),(t?!n:n)&&(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,t,n,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*((t=(t+i.dy)*i.scale)-o);var r=(n=(n+i.dx)*i.scale)+2/3*(e-n);t=(a=(a+i.dy)*i.scale)+2/3*(t-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(t)+" "+this.format(n)+" "+this.format(a)),this.lastX=n/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,t,n,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((t+s.dx)*s.scale)+"px",e.style.top=this.format((n+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,t,n,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,t,n,a)},mxVmlCanvas2D.prototype.roundrect=function(e,t,n,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,t,n,a),this.node.setAttribute("arcsize",Math.max(100*i/n,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,t,n,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,t,n,a)},mxVmlCanvas2D.prototype.image=function(e,t,n,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,t,n,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,t,n,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,t,n,a){n=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)?n.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,n.appendChild(a)):(n.style.cssText=s,n.innerHTML=e),(e=n.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=t||"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"),n},mxVmlCanvas2D.prototype.text=function(e,t,n,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=(t=this.rotatePoint(e,t,u.rotation,u.rotationCx,u.rotationCy)).x,t=t.y),8==document.documentMode?(e+=u.dx,t+=u.dy):(e*=u.scale,t*=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(t)+"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<n&&(i.style.width=Math.round(n)+"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<n&&(i.style.width=Math.round(n)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=n+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){n=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(n)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-n)).toFixed(8)),(n%=2*Math.PI)<0&&(n+=2*Math.PI),(n%=Math.PI)>Math.PI/2&&(n=Math.PI-n),o=Math.cos(n);var h=Math.sin(n);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),n=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+n*-h)/2-m*n*(g+.5)+r*a*(v+.5),d=(n-n*o+a*-h)/2+r*n*(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-n/2)*u.scale)+"px",g.style.top=this.format(t+(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-n/2)*u)+"px",l.style.top=this.format(t+(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),n=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+n*g*this.state.scale)+"px",l.style.top=this.format(t+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,t,n,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,t,n,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,t=(t+a.dy)*a.scale,(n=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",n.style.height="1px",n.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",n.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),n.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=(n.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),n.appendChild(d),n.style.left=this.format(e-i)+"px",n.style.top=this.format(t+s)+"px",this.root.appendChild(n)},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,t){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var n=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 t=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),t=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),t=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),t=!0),t){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 n=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,n.scrollHeight-3-this.graph.panDy)]}r=r||t};for(var f=function(e){e+=this.graph.panDy;var t=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),t=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),t=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),t=!0),t){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 n=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(n.scrollWidth-3-this.graph.panDx,e)]}l=l||t},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",t&&(r||(t=a.x-(this.graph.snap(a.x/i-n.x)+n.x)*i,s=this.graph.snap(s/i)*i-t),l||(n=a.y-(this.graph.snap(a.y/i-n.y)+n.y)*i,o=this.graph.snap(o/i)*i-n)),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 t=0;t<e.length;t++)this.constraints.push(this.parseConstraint(e[t]))}},mxStencil.prototype.parseConstraint=function(e){var t=Number(e.getAttribute("x")),n=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(t,n),e)},mxStencil.prototype.evaluateTextAttribute=function(e,t,n){return t=this.evaluateAttribute(e,t,n),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(t=mxResources.get(t)),t},mxStencil.prototype.evaluateAttribute=function(e,t,n){return null==(t=e.getAttribute(t))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(t=e(n)))),t},mxStencil.prototype.drawShape=function(e,t,n,a,i,s){this.drawChildren(e,t,n,a,i,s,this.bgNode,!1),this.drawChildren(e,t,n,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,t,n,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(t.style,mxConstants.STYLE_DIRECTION,null);for(n=this.computeAspect(t.style,n,a,i,s,l),a=Math.min(n.width,n.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(t.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,t,o,n,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,t,n,a,i,s){e=t,t=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,t=i/this.w0;var r=(a-i)/2;e+=r,n-=r}return"fixed"==this.aspect&&(t=o=Math.min(t,o),s?(e+=(i-this.w0*t)/2,n+=(a-this.h0*o)/2):(e+=(a-this.w0*t)/2,n+=(i-this.h0*o)/2)),new mxRectangle(e,n,t,o)},mxStencil.prototype.drawNode=function(e,t,n,a,i){var s=n.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(),n=n.firstChild;null!=n;)n.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,t,n,a,i),n=n.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(n.getAttribute("x1"))*l,r+Number(n.getAttribute("y1"))*d,o+Number(n.getAttribute("x2"))*l,r+Number(n.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(n.getAttribute("x1"))*l,r+Number(n.getAttribute("y1"))*d,o+Number(n.getAttribute("x2"))*l,r+Number(n.getAttribute("y2"))*d,o+Number(n.getAttribute("x3"))*l,r+Number(n.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(n.getAttribute("rx"))*l,Number(n.getAttribute("ry"))*d,Number(n.getAttribute("x-axis-rotation")),Number(n.getAttribute("large-arc-flag")),Number(n.getAttribute("sweep-flag")),o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,Number(n.getAttribute("w"))*l,Number(n.getAttribute("h"))*d);else if("roundrect"==s)0==(t=n.getAttribute("arcsize"))&&(t=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(n.getAttribute("w"))*l,a=Number(n.getAttribute("h"))*d,t=Number(t)/100,t=Math.min(c*t,a*t),e.roundrect(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,c,a,t,t);else if("ellipse"==s)e.ellipse(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,Number(n.getAttribute("w"))*l,Number(n.getAttribute("h"))*d);else if("image"==s)t=this.evaluateAttribute(n,"src",t),e.image(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,Number(n.getAttribute("w"))*l,Number(n.getAttribute("h"))*d,t,!1,"1"==n.getAttribute("flipH"),"1"==n.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(n,"str",t),a="1"==n.getAttribute("vertical")?-90:0,"0"==n.getAttribute("align-shape")){var m=t.rotation,u=1==mxUtils.getValue(t.style,mxConstants.STYLE_FLIPH,0);t=1==mxUtils.getValue(t.style,mxConstants.STYLE_FLIPV,0),a=u&&t?a-m:u||t?a+m:a-m}a-=n.getAttribute("rotation"),e.text(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,0,0,c,n.getAttribute("align")||"left",n.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(n.getAttribute("name")))&&(o+=Number(n.getAttribute("x"))*l,r+=Number(n.getAttribute("y"))*d,c=Number(n.getAttribute("w"))*l,a=Number(n.getAttribute("h"))*d,m.drawShape(e,t,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(n.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==n.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(n=n.getAttribute("pattern"))){for(n=n.split(" "),l=[],d=0;d<n.length;d++)0<n[d].length&&l.push(Number(n[d])*c);n=l.join(" "),e.setDashPattern(n)}}else"strokecolor"==s?e.setStrokeColor(n.getAttribute("color")):"linecap"==s?e.setLineCap(n.getAttribute("cap")):"linejoin"==s?e.setLineJoin(n.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(n.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(n.getAttribute("color")):"alpha"==s?e.setAlpha(n.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(n.getAttribute("color")):"fontstyle"==s?e.setFontStyle(n.getAttribute("style")):"fontfamily"==s?e.setFontFamily(n.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(n.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 t=1;t<this.points.length;t++)null!=e[t]&&this.bounds.add(new mxRectangle(Number(e[t].x),Number(e[t].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,t=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!=(t=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+t+","+t+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var n=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));t=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(t,!1);""!=t.tagUrn&&(t.coordsize=n*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),t=this.scale,e.translate(-Math.round(this.bounds.x/t),-Math.round(this.bounds.y/t))}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)),t=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=t+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var t in e.gradients){var n=e.gradients[t];n.mxRefCount=(n.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var t=this.scale,n=this.bounds.x/t,a=this.bounds.y/t,i=this.bounds.width/t,s=this.bounds.height/t;if(this.isPaintBoundsInverted()){n=n+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,n,a,i,s),this.configureCanvas(e,n,a,i,s),null!=this.stencil)this.paintStencilShape(e,n,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(n=[],a=0;a<this.points.length;a++)n.push(new mxPoint(this.points[a].x/t,this.points[a].y/t));this.paintEdgeShape(e,n)}else this.paintVertexShape(e,n,a,i,s)},mxShape.prototype.configureCanvas=function(e,t,n,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?(t=this.getGradientBounds(e,t,n,a,i),e.setGradient(this.fill,this.gradient,t.x,t.y,t.width,t.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,t,n,a,i){return new mxRectangle(t,n,a,i)},mxShape.prototype.updateTransform=function(e,t,n,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,t+a/2,n+i/2)},mxShape.prototype.paintStencilShape=function(e,t,n,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,t,n,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,t,n,a,i)},mxShape.prototype.paintVertexShape=function(e,t,n,a,i){this.paintBackground(e,t,n,a,i),e.setShadow(!1),this.paintForeground(e,t,n,a,i)},mxShape.prototype.paintBackground=function(e,t,n,a,i){},mxShape.prototype.paintForeground=function(e,t,n,a,i){},mxShape.prototype.paintEdgeShape=function(e,t){},mxShape.prototype.getArcSize=function(e,t){var n=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*n,t*n)},mxShape.prototype.paintGlassEffect=function(e,t,n,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",t,n,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(t-o+s,n-o),e.quadTo(t-o,n-o,t-o,n-o+s),e.lineTo(t-o,n+.4*i),e.quadTo(t+.5*a,n+.7*i,t+a+o,n+.4*i),e.lineTo(t+a+o,n-o+s),e.quadTo(t+a+o,n-o,t+a+o-s,n-o)):(e.moveTo(t-o,n-o),e.lineTo(t-o,n+.4*i),e.quadTo(t+.5*a,n+.7*i,t+a+o,n+.4*i),e.lineTo(t+a+o,n-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 t=this.getShapeRotation();0!=t&&(e=mxUtils.getBoundingBox(e,t)),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 t=(e.width-e.height)/2;e.x+=t,e.y-=t,t=e.width,e.width=e.height,e.height=t}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 t=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(t/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,t,n,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",t),e.setAttribute("y",n),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 t in e){var n=e[t];n.mxRefCount=(n.mxRefCount||0)-1,0==n.mxRefCount&&null!=n.parentNode&&n.parentNode.removeChild(n)}},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,t){mxStencilRegistry.stencils[e]=t},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,t){mxMarker.markers[e]=t},createMarker:function(e,t,n,a,i,s,o,r,l,d){var c=mxMarker.markers[n];return null!=c?c(e,t,n,a,i,s,o,r,l,d):null}};function mxActor(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxCloud(e,t,n,a){mxActor.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxEllipse(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxRhombus(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxPolyline(e,t,n){mxShape.call(this),this.points=e,this.stroke=t,this.strokewidth=null!=n?n:1}function mxArrow(e,t,n,a,i,s,o){mxShape.call(this),this.points=e,this.fill=t,this.stroke=n,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,t,n,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=t,this.color=null!=i?i:"black",this.align=null!=n?n:"",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,t,n){mxShape.call(this),this.bounds=e,this.stroke=t,this.strokewidth=null!=n?n:1}function mxImageShape(e,t,n,a,i){mxShape.call(this),this.bounds=e,this.image=t,this.fill=n,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,t,n,a){mxRectangleShape.call(this,e,t,n,a)}function mxCylinder(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxConnector(e,t,n){mxPolyline.call(this,e,t,n)}function mxSwimlane(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,t,n,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==t||t,this.spacing=null!=n?n:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,t,n,a){mxGraphLayout.call(this,e),this.horizontal=null==t||t,this.spacing=n||0,this.border=a||0}function mxCompactTreeLayout(e,t,n){mxGraphLayout.call(this,e),this.horizontal=null==t||t,this.invert=null!=n&&n}function WeightedCellSorter(e,t){this.cell=e,this.weightedValue=t}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,t){mxGraphLayout.call(this,e),this.radius=null!=t?t:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,t,n){mxGraphLayout.call(this,e),this.layouts=t,this.master=n}function mxEdgeLabelLayout(e,t){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,t,n,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=n,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,n=[],null==t&&(t=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,t,n),a=0;a<t.length;a++){i=n[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];n[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&n[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}n[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,t,n,a,i,s){this.layout=e,this.intraCellSpacing=t,this.interRankCellSpacing=n,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,t,n,a,i,s,o,r,l,d){t=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=t,c.y-=r,o=n!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-t,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),n==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 t(e,t,n,a,i,s,o,r,l,d){r=n==mxConstants.ARROW_DIAMOND?.7071:.9862,t=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=t,c.y-=r,a.x+=-i-t,a.y+=-s-r;var m=n==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,t,n,a,i,s,o,r,l,d){t=1.118*i*l,n=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=t,c.y-=n,a.x+=2*-t,a.y+=2*-n,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,t,n,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",t),mxMarker.addMarker("diamondThin",t)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,t,n,a,i){e.translate(t,n),e.begin(),this.redrawPath(e,t,n,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,t,n,a,i){t=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-t,2*i/5,a/2-t,0,a/2,0),e.curveTo(a/2+t,0,a/2+t,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,t,n,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,t,n,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(t,n,a,i,s,s)}else e.rect(t,n,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,t,n,a,i){this.glass&&this.paintGlassEffect(e,t,n,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 t=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,t)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-t/2)+"px",e.style.top=Math.round(this.bounds.y-t/2)+"px","CSS1Compat"==document.compatMode&&(t=-t),e.style.width=Math.round(Math.max(0,this.bounds.width+t))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+t))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var t=this.stroke;null!=t&&t!=mxConstants.NONE?(e.style.borderColor=t,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!=(t=this.fill)&&t!=mxConstants.NONE?(e.style.backgroundColor=t,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 t="";if(this.opacity<100&&(t+="alpha(opacity="+this.opacity+")"),this.isShadow&&(t+="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 n=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=n,n=a,a=s):2==o?(s=n,n=a,a=s):3==o&&(i="1"),t+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+n+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=t},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,t,n,a,i){e.ellipse(t,n,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,t,n,a,i){e.ellipse(t,n,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,t,n,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(t+s,n+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,t,n,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(t+s,n),e.lineTo(t+a,n+o),e.lineTo(t+s,n+i),e.lineTo(t,n+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,t){this.paintLine(e,t,this.isRounded)},mxPolyline.prototype.paintLine=function(e,t,n){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=t[0],s=t[t.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<t.length-1;o++){var r=t[o],l=i.x-r.x;i=i.y-r.y;if(n&&o<t.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=t[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,t){var n=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=t[0],o=t[t.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*n-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+n*r)+c),u=(s=s.y-a/2+n*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-n*r,o.y-n*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 t=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 n=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,n=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(t=e.getBBox()).width&&0==t.height)return;this.boundingBox=new mxRectangle(t.x,t.y,t.width,t.height),t=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(n=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:(n=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=n),n=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(n=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=n&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*n,this.bounds.y+this.margin.y*a,n,a))}null!=this.boundingBox&&(0!=t&&(t=mxUtils.getBoundingBox(this.boundingBox,t),this.boundingBox.x=t.x,this.boundingBox.y=t.y,mxClient.IS_QUIRKS||(this.boundingBox.width=t.width,this.boundingBox.height=t.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,t,n,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 t=this.scale,n=this.bounds.x/t,a=this.bounds.y/t,i=this.bounds.width/t;t=this.bounds.height/t;this.updateTransform(e,n,a,i,t),this.configureCanvas(e,n,a,i,t);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(n,a,i,t,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(),t=this.node.style,n=this.margin.x,a=this.margin.y;0!=e?(t[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-n+"% "+100*-a+"%",t[mxClient.CSS_PREFIX+"Transform"]="translate("+100*n+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(t[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",t[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*n+"%,"+100*a+"%)"),t.left=Math.round(this.bounds.x)+"px",t.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,t=this.margin.x,n=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*(t=r*-(t+.5))-s*(n=o*-(n+.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*t-l*n)-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 t=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,n=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=t||null!=n)if("fill"==this.overflow)null!=t&&(this.node.style.backgroundColor=t),null!=n&&(this.node.style.border="1px solid "+n);else{var a="";null!=t&&(a+="background-color:"+t+";"),null!=n&&(a+="border:1px solid "+n+";"),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 t=Math.round(this.bounds.width/this.scale),n=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<n&&(e.maxHeight=n+"px"),0<t&&(e.width=t+"px")):"fill"==this.overflow&&(e.width=t+"px",0<n&&(e.maxHeight=n+"px")),this.wrap?(!this.clipped&&0<t&&(e.width=t+"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,t,n,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,t,n,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,t,n,a,i){n+=i/2,e.begin(),e.moveTo(t,n),e.lineTo(t+a,n),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,t,n,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(t,n,a,i),e.fillAndStroke()),e.image(t,n,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 t=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=t,this.flipH&&this.flipV?t+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?t+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(t+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=t&&(e.style.filter=t),"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,t,n,a,i){this.paintImage(e,t,n,a,i),this.paintIndicator(e,t,n,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,t,n,a,i){null!=this.image&&(t=this.getImageBounds(t,n,a,i),e.image(t.x,t.y,t.width,t.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,t,n,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+(n-o)/2:i==mxConstants.ALIGN_RIGHT?e+(n-o-l):e+l,t=s==mxConstants.ALIGN_TOP?t+l:s==mxConstants.ALIGN_BOTTOM?t+(a-r-l):t+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,t,n,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(t,n,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(t=this.getIndicatorBounds(t,n,a,i),e.image(t.x,t.y,t.width,t.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,t,n,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+(n-o-l):i==mxConstants.ALIGN_CENTER?e+(n-o)/2:e+l,t=s==mxConstants.ALIGN_BOTTOM?t+(a-r-l):s==mxConstants.ALIGN_TOP?t+l:t+(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 t=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);t.x-=this.bounds.x,t.y-=this.bounds.y,e.style.left=Math.round(t.x)+"px",e.style.top=Math.round(t.y)+"px",e.style.width=Math.round(t.width)+"px",e.style.height=Math.round(t.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,t,n,a,i){e.translate(t,n),e.begin(),this.redrawPath(e,t,n,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,t,n,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,t,n,a,i,s){t=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,t),e.curveTo(0,2*t,a,2*t,a,t),s||(e.stroke(),e.begin())),s||(e.moveTo(0,t),e.curveTo(0,-t/3,a,-t/3,a,t),e.lineTo(a,i-t),e.curveTo(a,i+t/3,0,i+t/3,0,i-t),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,t){var n=this.createMarker(e,t,!0),a=this.createMarker(e,t,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,t,this.isRounded):this.paintCurvedLine(e,t),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=n&&n(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,t){e.begin();var n=t[0],a=t.length;for(e.moveTo(n.x,n.y),n=1;n<a-2;n++){var i=t[n],s=t[n+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=t[a-2],s=t[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,t,n){var a=t.length,i=n?t[1]:t[a-2],s=(a=(t=n?t[0]:t[a-1]).x-i.x,t.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,n?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,n?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,t,i,a,s,n,this.strokewidth,0!=this.style[n?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var t=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(t=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(t=Math.max(t,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(t*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,t,n,a,i){return new mxRectangle(t,n,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,t,n){return 3*n*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,t,n,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(t,n),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,t,n,a,i,s,l,o,r)):this.paintSwimlane(e,t,n,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(t,s,a,i),e.image(i.x-t,i.y-n,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,t,n,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,t,n,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,t,n,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(t,n),e.lineTo(t,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,t,n,a){return new mxRectangle(e+n-this.imageSize,t,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,t,n){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,t,n,a){return null!=(t=null!=(n=this.graph.view.getState(t))?n.style:this.graph.getCellStyle(t))?t[e]:null},mxGraphLayout.traverse=function(e,t,n,a,i){if(null!=n&&null!=e){t=null==t||t,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=n(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;t&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,t,n,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 t=this.graph.getModel();return!t.isEdge(e)||!this.graph.isCellVisible(e)||null==t.getTerminal(e,!0)||null==t.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,t){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,t?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,t){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,t?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var t=new mxPoint;if(null!=e&&e!=this.parent){var n=this.graph.getModel();if(n.isAncestor(this.parent,e))for(var a=n.getGeometry(e);e!=this.parent;)t.x+=a.x,t.y+=a.y,e=n.getParent(e),a=n.getGeometry(e)}return t},mxGraphLayout.prototype.setEdgePoints=function(e,t){if(null!=e){var n=this.graph.model,a=n.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=t)for(var i=n.getParent(e),s=(i=this.getParentOffset(i),0);s<t.length;s++)t[s].x-=i.x,t[s].y-=i.y;a.points=t,n.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,t,n){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(t,n,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&&(t+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(n+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(t-=(o=this.getParentOffset(o)).x,n-=o.y)),i.x==t&&i.y==n||((i=i.clone()).x=t,i.y=n,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var t=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var n=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/n,s=Math.max(r.y-a.y,0)/n,o=Math.max(a.x+a.width-(r.x+r.width),0)/n,r=Math.max(a.y+a.height-(r.y+r.height),0)/n;t=new mxRectangle(t.x-i,t.y-s,t.width+i+o,t.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),t=t.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),t.x+=e.x,t.y+=e.y)),new mxRectangle(t.x,t.y,t.width,t.height)},mxGraphLayout.prototype.arrangeGroups=function(e,t){this.graph.getModel().beginUpdate();try{for(var n=e.length-1;0<=n;n--){var a=e[n],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-t-r,o.y=o.y+s.y-t-l,o.width=s.width+2*t+r,o.height=s.height+2*t+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,t+r-s.x,t+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,t,n){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(t=s?t:n,null!=(o=this.graph.getView().getState(i))&&(t-=s?o.x:o.y),o=0;o<l;o++)if((n=a.getChildAt(i,o))!=e&&null!=(n=a.getGeometry(n))){if(n=s?n.x+n.width/2:n.y+n.height/2,r<t&&t<n)break;r=n}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var t=this.graph.getModel(),n=t.getGeometry(e);return null!=this.graph.container&&(null==n&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(n=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),n},mxStackLayout.prototype.execute=function(e){if(null!=e){var t=this.isHorizontal(),n=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=t?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);t==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),t?o+=l:s+=l}n.beginUpdate();try{l=0,r=null;for(var d=n.getChildCount(e),c=0;c<d;c++){var m=n.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=n.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(t&&r.x+r.width+u.width+2*this.spacing>this.wrap||!t&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,t?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,t?u.height:u.width),null!=r?t?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(t?u.x=s:u.y=o),t?u.y=o:u.x=s,this.fill&&0<i&&(t?u.height=i:u.width=i),n.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),t?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,n.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(t?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{n.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,t,n){var a=(n=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=n.getChildCount(a);for(i=0;i<o;i++){var r=n.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<t&&t<r)break;s=r}}t=a.getIndex(e),t=Math.max(0,i-(t<i?1:0)),n.add(a,e,t)}},mxPartitionLayout.prototype.execute=function(e){var t=this.isHorizontal(),n=this.graph.getModel(),a=n.getGeometry(e);if(null!=this.graph.container&&(null==a&&n.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=n.getChildCount(e),o=0;o<s;o++){var r=n.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=t?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=t?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=t?(a.width-l-e)/s:(a.height-d-e)/s)){n.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=n.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,t?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),n.setGeometry(r,m))}}finally{n.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,t){this.parent=e;var n=this.graph.getModel();if(null==t)if(0<this.graph.getEdges(e,n.getParent(e),this.invert,!this.invert,!1).length)t=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){t=o[a];break}}if(null!=t){this.parentsChanged=this.resizeParent?{}:null,n.beginUpdate();try{var i=this.dfs(t,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(t);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{n.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,t,n){for(e.x+=t,e.y+=n,this.apply(e),e=e.child;null!=e;)this.moveNode(e,t,n),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,t,n){n=null!=n?n:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==n[a]&&!this.isVertexIgnored(e)){n[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,t,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,t,n))&&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 t=e.child;null!=t;)this.layout(t),t=t.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,t,n,a){if(e.x+=t+e.offsetX,e.y+=n+e.offsetY,a=this.apply(e,a),null!=(t=e.child)){a=this.horizontalLayout(t,e.x,e.y,a),n=e.y+t.offsetY;for(var i=t.next;null!=i;)a=this.horizontalLayout(i,e.x+t.offsetX,n,a),n+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,t,n,a,i){if(e.x+=n+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(t=e.child))for(i=this.verticalLayout(t,e,e.x,e.y,i),n=e.x+t.offsetY,a=t.next;null!=a;)i=this.verticalLayout(a,e,n,e.y+t.offsetX,i),n+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,t){var n=this.nodeDistance+this.levelDistance,a=(t-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-t;e.child.offsetX=n+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(n,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(n,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var t=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+t,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-t),e.contour.lowerHead=this.createLine(e.height+t,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var t=2*this.nodeDistance,n=e.child;e.contour=n.contour;var a=n.width+t,i=a;for(n=n.next;null!=n;){var s=this.merge(e.contour,n.contour);n.offsetY=s+a,n.offsetX=0,i+=s+(a=n.width+t),n=n.next}return i},mxCompactTreeLayout.prototype.merge=function(e,t){for(var n=0,a=0,i=0,s=e.lowerHead,o=t.upperHead;null!=o&&null!=s;){var r=this.offset(n,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;n+o.dx<=s.dx?(n+=o.dx,a+=o.dy,o=o.next):(n-=s.dx,a-=s.dy,s=s.next)}return null!=o?(n=this.bridge(e.upperTail,0,0,o,n,a),e.upperTail=null!=n.next?t.upperTail:n,e.lowerTail=t.lowerTail):null==(n=this.bridge(t.lowerTail,n,a,s,0,0)).next&&(e.lowerTail=n),e.lowerHead=t.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,t,n,a,i,s){var o;return i<=e||e+n<=0?0:0<(o=0<i*a-n*s?e<0?e*a/n-t:0<e?e*s/i-t:-t:i<e+n?s-(t+(i-e)*a/n):e+n<i?(n+e)*s/i-(t+a):s-(t+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,t,n,a,i,s){return t=i+a.dx-t,i=i=0,0==a.dx?i=a.dy:(i=t*a.dy,i/=a.dx),t=this.createLine(t,i,a.next),e.next=this.createLine(0,s+a.dy-i-n,t),t},mxCompactTreeLayout.prototype.createNode=function(e){var t={};return t.cell=e,t.x=0,t.y=0,t.width=0,t.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(t.width=e.height,t.height=e.width):(t.width=e.width,t.height=e.height)),t.offsetX=0,t.offsetY=0,t.contour={},t},mxCompactTreeLayout.prototype.apply=function(e,t){var n=this.graph.getModel(),a=e.cell,i=n.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(n=n.getParent(a),a=mxCellPath.create(n),null==this.parentsChanged[a]&&(this.parentsChanged[a]=n))),t=null==t?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(t.x,i.x),Math.min(t.y,i.y),Math.max(t.x+t.width,i.x+i.width),Math.max(t.y+t.height,i.y+i.height))),t},mxCompactTreeLayout.prototype.createLine=function(e,t,n){var a={};return a.dx=e,a.dy=t,a.next=n,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,t=[];for(e in this.parentsChanged)t.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(t,!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 t=e.child,n=e.cell,a=0,i=[];null!=t;){a++;var s=t.x;this.horizontal&&(s=t.y),i.push(new WeightedCellSorter(t,s)),t=t.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),t=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(t+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(n),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(n,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+t,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+t,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),t+=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,t){return null!=e&&null!=t?t.weightedValue>e.weightedValue?1:t.weightedValue<e.weightedValue?-1:t.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 t=this.graph.getModel();this.vertexArray=[];for(var n=this.graph.getChildVertices(e),a=0;a<n.length;a++)this.isVertexIgnored(n[a])||this.vertexArray.push(n[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]}t.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);n=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<n.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(n[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=n=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),n=null==n?m:Math.min(n,m),e=null==e?u:Math.min(e,u)));a=1-(n||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{t.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(n=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(n=.001);var t=this.dispX[e]/n*Math.min(n,this.temperature),n=this.dispY[e]/n*Math.min(n,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=t,this.cellLocation[e][1]+=n}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var t=0;t<this.neighbours[e].length;t++){var n=this.neighbours[e][t];if(e!=n&&this.isMoveable[e]&&this.isMoveable[n]){(a=(s=this.cellLocation[e][0]-this.cellLocation[n][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[n][1])*o-this.radiusSquared[e]-this.radiusSquared[n])<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[n]+=s,this.dispY[n]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,t=0;t<e;t++)for(var n=t;n<e;n++){if(!this.allowedToRun)return;if(n!=t&&this.isMoveable[t]&&this.isMoveable[n]){var a=this.cellLocation[t][0]-this.cellLocation[n][0],i=this.cellLocation[t][1]-this.cellLocation[n][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[t]-this.radius[n];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[t]+=a,this.dispY[t]+=i,this.dispX[n]-=a,this.dispY[n]-=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 t=this.graph.getModel();t.beginUpdate();try{for(var n=0,a=null,i=null,s=[],o=t.getChildCount(e),r=0;r<o;r++){var l=t.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),n=Math.max(n,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,n);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{t.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,t){return Math.max(e*t/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,t,n,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],n+t+t*Math.sin(o*s),a+t+t*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 t in e){var n=e[t];1<n.length&&this.layout(n)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var t=this.graph.getModel(),n=[],a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==n[o]&&(n[o]=[]),n[o].push(s))}}return n},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var t=this.graph.getView(),n=t.getState(e),a=null!=n?n.getVisibleTerminal(!0):t.getVisibleTerminal(e,!0);return e=null!=n?n.getVisibleTerminal(!1):t.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 t=e[0];if((o=(n=this.graph.getModel()).getGeometry(n.getTerminal(t,!0)))==(s=n.getGeometry(n.getTerminal(t,!1)))){t=o.x+o.width+this.spacing;for(var n=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],t,n),t+=this.spacing}else if(null!=o&&null!=s){t=o.x+o.width/2,n=o.y+o.height/2,a=s.x+s.width/2-t;var i=s.y+s.height/2-n,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,t=t+a/2+o*(e.length-1)/2,n=n+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],t,n),t-=o,n+=s}},mxParallelEdgeLayout.prototype.route=function(e,t,n){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(t,n)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,t,n){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 t=this.graph.getModel();t.beginUpdate();try{for(var n=0;n<this.layouts.length;n++)this.layouts[n].execute.apply(this.layouts[n],arguments)}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var t=this.graph.view,n=this.graph.getModel(),a=[],i=[],s=n.getChildCount(e),o=0;o<s;o++){var r=n.getChildAt(e,o),l=t.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,t){var n=this.graph.getModel();n.beginUpdate();try{for(var a=0;a<t.length;a++){var i=t[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{n.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,t){var n=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,t)){var i=-a.y-a.height+t.y,s=-a.y+t.y+t.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+t.x,a=-a.x+t.x+t.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=n.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),n.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,t){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,t){this.isVertex()?this.x[0]=t:this.isEdge()&&(this.x[e-this.minRank-1]=t)},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,t){this.isVertex()?this.y[0]=t:this.isEdge()&&(this.y[e-this.minRank-1]=t)},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 t=0;t<this.connectsAsTarget.length;t++){var n=this.connectsAsTarget[t];-1==n.maxRank||n.maxRank==e+1?this.nextLayerConnectedCells[0].push(n.source):this.nextLayerConnectedCells[0].push(n)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var t=0;t<this.connectsAsSource.length;t++){var n=this.connectsAsSource[t];-1==n.minRank||n.minRank==e-1?this.previousLayerConnectedCells[0].push(n.target):this.previousLayerConnectedCells[0].push(n)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,t){this.temp[0]=t},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 t=0;t<this.hashCode.length;t++)if(this.hashCode[t]!=e.hashCode[t])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 t=0;t<this.temp.length;t++)this.nextLayerConnectedCells[t]=[],t==this.temp.length-1?this.nextLayerConnectedCells[t].push(this.source):this.nextLayerConnectedCells[t].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var t=0;t<this.temp.length;t++)this.previousLayerConnectedCells[t]=[],0==t?this.previousLayerConnectedCells[t].push(this.target):this.previousLayerConnectedCells[t].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,t){this.temp[e-this.minRank-1]=t},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,t,n){for(var a=e.getGraph(),i=0;i<t.length;i++){n[i]=new mxGraphHierarchyNode(t[i]);var s=mxCellPath.create(t[i]);this.vertexMapper[s]=n[i],s=e.getEdges(t[i]),n[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=t[i]&&d!=t[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(t[i],d,!1),l=e.getEdgesBetween(t[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=n[i],mxUtils.indexOf(n[i].connectsAsSource,l)<0&&n[i].connectsAsSource.push(l)}}}n[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var t=0;t<this.roots.length;t++){var n=mxCellPath.create(this.roots[t]);null!=(n=this.vertexMapper[n])&&e.push(n)}for(var a in this.vertexMapper)(n=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(n=e[0]).connectsAsTarget,o=n.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(t=0;t<s.length;t++){var d=s[t];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(n.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(t=0;t<o.length;t++)(d=o[t]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(t=e.shift(),e.push(n),t==n&&1==e.length)break}for(a in this.vertexMapper)(n=this.vertexMapper[a]).temp[0]-=this.maxRank;for(t=0;t<i.length;t++)for(e=0,s=(n=i[t]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,n.temp[0]=Math.max(e,d.temp[0]+1),e=n.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 t=null;if(null!=this.roots){var n=this.roots;for(t=[],e=0;e<n.length;e++){var a=mxCellPath.create(n[e]);t[e]=this.vertexMapper[a]}}this.visit(function(e,t,n,a,i){if(0==i&&t.maxRank<0&&t.minRank<0&&(s[t.temp[0]].push(t),t.maxRank=t.temp[0],t.minRank=t.temp[0],t.temp[0]=s[t.maxRank].length-1),null!=e&&null!=n&&1<e.maxRank-t.maxRank)for(n.maxRank=e.maxRank,n.minRank=t.maxRank,n.temp=[],n.x=[],n.y=[],e=n.minRank+1;e<n.maxRank;e++)s[e].push(n),n.setGeneralPurposeVariable(e,s[e].length-1)},t,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,t,n,a){if(null!=t){for(var i=0;i<t.length;i++){var s=t[i];null!=s&&(null==a&&(a={}),n?(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,t,n,a,i,s){if(null!=t){var o=mxCellPath.create(t.cell);if(null==i[o])for(a(e,i[o]=t,n,s,0),e=t.connectsAsSource.slice(),n=0;n<e.length;n++)o=e[n],this.dfs(t,o.target,o,a,i,s+1);else a(e,t,n,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,t,n,a,i,s,o,r){if(null!=t)if(null==e||null!=t.hashCode&&t.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,t.hashCode=e.hashCode.slice(),t.hashCode[s-1]=o),null==i[o=mxCellPath.create(t.cell)])for(a(e,i[o]=t,n,r,0),e=t.connectsAsSource.slice(),n=0;n<e.length;n++)o=e[n],this.extendedDfs(t,o.target,o,a,i,t.hashCode,n,r+1);else a(e,t,n,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 t=0;t<e.ranks.length;t++)this.nestedBestRanks[t]=e.ranks[t].slice();var n=0,a=this.calculateCrossings(e);for(t=0;t<this.maxIterations&&n<this.maxNoImprovementIterations;t++){this.weightedMedian(t,e),this.transpose(t,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=n=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(n++,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(n=[],a=[],t=0;t<e.maxRank+1;t++)a[t]=[],n[t]=a[t];for(t=0;t<this.nestedBestRanks.length;t++)for(i=0;i<this.nestedBestRanks[t].length;i++)a[t].push(this.nestedBestRanks[t][i]);e.ranks=n},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var t=e.ranks.length,n=0,a=1;a<t;a++)n+=this.calculateRankCrossing(a,e);return n},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,t){for(var n=0,a=t.ranks[e],i=a.length,s=t.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]&&n++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&n++}return n/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,t){for(var n=!0,a=0;n&&a++<10;)for(var i=1==e%2&&1==a%2,s=(n=!1,0);s<t.ranks.length;s++){for(var o=t.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||(n=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,t){var n=0==e%2;if(n)for(var a=t.maxRank-1;0<=a;a--)this.medianRank(a,n);else for(a=1;a<t.maxRank;a++)this.medianRank(a,n)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,t){for(var n=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<n;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=t?e+1:e-1,null!=(o=t?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<n;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,t){for(var n=[],a=0,i=0;i<e.length;i++){var s=e[i];n[a++]=s.getGeneralPurposeVariable(t)}return n.sort(function(e,t){return e-t}),1==a%2?n[Math.floor(a/2)]:2==a?(n[0]+n[1])/2:(s=n[(i=a/2)-1]-n[0],a=n[a-1]-n[i],(n[i-1]*a+n[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,t){return null!=e&&null!=t?t.medianValue>e.medianValue?-1:t.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var t=this.layout.getModel(),s={},o=mxUtils.clone(t.vertexMapper,null,!0),n=null;if(null!=t.roots){var a=t.roots;n=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);n[e]=t.vertexMapper[i]}}if(t.visit(function(e,t,n,a,i){t.isAncestor(e)&&(n.invert(),mxUtils.remove(n,e.connectsAsSource),e.connectsAsTarget.push(n),mxUtils.remove(n,t.connectsAsTarget),t.connectsAsSource.push(n)),e=mxCellPath.create(t.cell),s[e]=t,delete o[e]},n,!0,null),n=null,0<o.lenth&&(n=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),t.visit(function(e,t,n,a,i){t.isAncestor(e)&&(n.invert(),mxUtils.remove(n,e.connectsAsSource),t.connectsAsSource.push(n),e.connectsAsTarget.push(n),mxUtils.remove(n,t.connectsAsTarget)),e=mxCellPath.create(t.cell),s[e]=t,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=n&&0<n.length)for(t=t.roots,e=0;e<n.length;e++)i=n[e].cell,0==a.getIncomingEdges(i).length&&t.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,t){this.cell=e,this.weightedValue=t}function mxHierarchicalLayout(e,t,n){mxGraphLayout.call(this,e),this.orientation=null!=t?t:mxConstants.DIRECTION_NORTH,this.deterministic=null==n||n}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,t){this.model=e,this.previous=this.root=t}function mxChildChange(e,t,n,a){this.model=e,this.previous=this.parent=t,this.child=n,this.previousIndex=this.index=a}function mxTerminalChange(e,t,n,a){this.model=e,this.cell=t,this.previous=this.terminal=n,this.source=a}function mxValueChange(e,t,n){this.model=e,this.cell=t,this.previous=this.value=n}function mxStyleChange(e,t,n){this.model=e,this.cell=t,this.previous=this.style=n}function mxGeometryChange(e,t,n){this.model=e,this.cell=t,this.previous=this.geometry=n}function mxCollapseChange(e,t,n){this.model=e,this.cell=t,this.previous=this.collapsed=n}function mxVisibleChange(e,t,n){this.model=e,this.cell=t,this.previous=this.visible=n}function mxCellAttributeChange(e,t,n){this.cell=e,this.attribute=t,this.previous=this.value=n}function mxCell(e,t,n){this.value=e,this.setGeometry(t),this.setStyle(n),null!=this.onInit&&this.onInit()}function mxGeometry(e,t,n,a){mxRectangle.call(this,e,t,n,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 t=0;t<e.ranks.length;t++){mxLog.write("Rank ",t," : ");for(var n=e.ranks[t],a=0;a<n.length;a++)mxLog.write(n[a].getGeneralPurposeVariable(t),"  ");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 t=1e8;if(this.fineTuning)for(var n=0;n<this.maxIterations;n++){if(0!=n&&(this.medianPos(n,e),this.minNode(e)),this.currentXDelta<t){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))}t=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 t=[],n=[],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,t.push(r),n[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*t.length,s=0;0<t.length&&s<=e;){i=(r=t.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=n[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,t.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=n[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,t.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,t){if(0==e%2)for(var n=t.maxRank;0<n;n--)this.rankMedianPosition(n-1,t,n);else for(n=0;n<t.maxRank-1;n++)this.rankMedianPosition(n+1,t,n)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,t,n){t=t.ranks[e];for(var a=[],i=[],s=0;s<t.length;s++){var o=t[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=n<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=n<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,n):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(t[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(t[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,t){for(var n=0,a=0;a<t.length;a++){var i=t[a];e.isVertex()&&i.isVertex()?n++:n=e.isEdge()&&i.isEdge()?n+8:n+2}return n},mxCoordinateAssignment.prototype.medianXValue=function(e,t){if(0==e.length)return 0;for(var n=[],a=0;a<e.length;a++)n[a]=e[a].getGeneralPurposeVariable(t);return n.sort(function(e,t){return e-t}),1==e.length%2?n[Math.floor(e.length/2)]:(n[(a=e.length/2)-1]+n[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,t){this.calculateWidestRank(e,t);for(var n=this.widestRank;0<=n;n--)n<t.maxRank&&this.rankCoordinates(n,e,t);for(n=this.widestRank+1;n<=t.maxRank;n++)0<n&&this.rankCoordinates(n,e,t)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,t,n){t=n.ranks[e],n=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<t.length;s++){var o=t[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,n=Math.max(n,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,t){var n=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=t.maxRank;0<=i;i--){for(var s=0,o=t.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]=n,r=s/2+a/2+this.interRankCellSpacing,a=s,n=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?n+r:n-r,d=0;d<o.length;d++)o[d].setY(i,n)}},mxCoordinateAssignment.prototype.minPath=function(e,t){var n,a=t.edgeMapper;for(n in a){var i=a[n];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(t,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(t,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,t,n,a){e=e.ranks[n];for(var i=-1,s=0;s<e.length;s++)if(t==e[s]){i=s;break}if(i<0)return!1;if(a<(s=t.getGeneralPurposeVariable(n))){if(0==i)return!0;if(!((n=(n=(e=e[i-1]).getGeneralPurposeVariable(n))+e.width/2+this.intraCellSpacing+t.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(n=(n=(e=e[i+1]).getGeneralPurposeVariable(n))-e.width/2-this.intraCellSpacing-t.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,t){this.rankTopY=[],this.rankBottomY=[];for(var n=0;n<t.ranks.length;n++)this.rankTopY[n]=Number.MAX_VALUE,this.rankBottomY[n]=0;n=null,this.layout.resizeParent&&(n={});var a,i=t.edgeMapper,s=t.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==n[r]&&(n[r]=o)}}for(a in this.layout.resizeParent&&null!=n&&this.adjustParents(n),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(t),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var t,n=[];for(t in e)n.push(e[t]);this.layout.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var t=0;t<e.ranks.length;t++)for(var n=e.ranks[t],a=0;a<n.length;a++){var i=n[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(t),o=t-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(t),o=t+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var t=0;if(101207!=e.temp[0]){var n=e.maxRank,a=e.minRank;n==a&&(n=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[n],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]+t;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[n]: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),t=0==t?this.parallelEdgeSpacing:0<t?-t:-t+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var t=e.cell,n=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(t,n,a):this.layout.setVertexLocation(t,a,n),this.limitX=Math.max(this.limitX,n+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,t){},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,t){return null!=e&&null!=t?t.weightedValue>e.weightedValue?-1:t.weightedValue<e.weightedValue?1:t.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,t){this.parent=e;var n=this.graph.model;if(this.edgesCache={},null!=t||null!=e){if(null!=t&&null!=e){for(var a=[],i=0;i<t.length;i++)n.isAncestor(e,t[i])&&a.push(t[i]);this.roots=a}else this.roots=t;n.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{n.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,t){var n=[];if(null!=e&&null!=t){var a,i=this.graph.model,s=null,o=-1e5;for(a in t){var r=t[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&&n.push(r),o<(l=d-c)&&(o=l,s=r)}}0==n.length&&null!=s&&n.push(s)}return n},mxHierarchicalLayout.prototype.getEdges=function(e){var t=mxCellPath.create(e);if(null!=this.edgesCache[t])return this.edgesCache[t];for(var n=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=n.getChildCount(e),o=0;o<s;o++){var r=n.getChildAt(e,o);this.isPort(r)?a=a.concat(n.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(n.getEdges(r,!0,!0)))}for(a=a.concat(n.getEdges(e,!0,!0)),n=[],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))))&&n.push(a[o]);return this.edgesCache[t]=n},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,t){var n=null!=(n=this.graph.view.getState(e))?n.getVisibleTerminal(t):this.graph.view.getVisibleTerminal(e,t);return this.isPort(n)&&(n=this.graph.model.getParent(n)),n},mxHierarchicalLayout.prototype.run=function(e){var t=[],n=[];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=[];t.push(r),this.traverse(o[s],!0,null,n,r,t,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=[],t.push(r),traverse(roots.get(s),!0,null,n,r,t,null);for(s=n=0;s<t.length;s++){for(i in a=[],r=t[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),n=this.placementStage(n,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,t){var n=this.graph.model;if(n.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(t[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,t)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,t,n){n=null!=n&&n;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==t||!n&&o==t&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,t,n,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(n=0;n<s.length;n++)if(null!=(e=s[n])[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(n=0;n<l.length;n++)r=this.getVisibleTerminal(l[n],!0)==e,(!t||r)&&(r=this.getVisibleTerminal(l[n],!r),i=this.traverse(r,t,l[n],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,t){var n=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return n.fineTuning=this.fineTuning,n.execute(t),n.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,t){var n=null;if(null!=e){n=[];for(var a=0;a<e.length;a++)t(e[a])&&n.push(e[a])}return n},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,t){var n=[];t=t||this.getRoot(),(null==e||e(t))&&n.push(t);for(var a=this.getChildCount(t),i=0;i<a;i++){var s=this.getChildAt(t,i);n=n.concat(this.filterDescendants(e,s))}return n},mxGraphModel.prototype.getRoot=function(e){var t=e||this.root;if(null!=e)for(;null!=e;)t=e,e=this.getParent(e);return t},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var t=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),t},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,t){for(;null!=t&&t!=e;)t=this.getParent(t);return t==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,t,n){if(t!=e&&null!=e&&null!=t){null==n&&(n=this.getChildCount(e));var a=e!=this.getParent(t);this.execute(new mxChildChange(this,e,t,n)),this.maintainEdgeParent&&a&&this.updateEdgeParents(t)}return t},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((t=this.getCell(e.getId()))!=e){for(;null!=t;)e.setId(this.createId(e)),t=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 t=this.getChildCount(e),n=0;n<t;n++)this.cellAdded(this.getChildAt(e,n))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,t){t=t||this.getRoot(e);for(var n=this.getChildCount(e),a=0;a<n;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,t)}for(i=this.getEdgeCount(e),n=[],a=0;a<i;a++)n.push(this.getEdgeAt(e,a));for(a=0;a<n.length;a++)i=n[a],this.isAncestor(t,i)&&this.updateEdgeParent(i,t)},mxGraphModel.prototype.updateEdgeParent=function(e,t){for(var n=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=n&&!this.isEdge(n)&&null!=n.geometry&&n.geometry.relative;)n=this.getParent(n);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(t,n)&&this.isAncestor(t,a)&&(null!=(i=n==a?this.getParent(n):this.getNearestCommonAncestor(n,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(n=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(n=n.clone()).translate(-a,-s),this.setGeometry(e,n)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var t=null;return null!=e?(t=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(t.x+=e.x,t.y+=e.y)):t=new mxPoint,t},mxGraphModel.prototype.getNearestCommonAncestor=function(e,t){if(null!=e&&null!=t&&(null!=(s=mxCellPath.create(t))&&0<s.length)){var n=e,a=mxCellPath.create(n);if(s.length<a.length){n=t;var i=a,s=(a=s,i)}for(;null!=n;){if(i=this.getParent(n),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return n;a=mxCellPath.getParentPath(a),n=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 t=this.getChildCount(e)-1;0<=t;t--)this.cellRemoved(this.getChildAt(e,t));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,t,n){var a=this.getParent(e);return null!=t?(t!=a||a.getIndex(e)!=n)&&t.insert(e,n):null!=a&&(n=a.getIndex(e),a.remove(n)),this.contains(a)||null==t?null==t&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,t){return null!=e?e.getChildAt(t):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,t,n){t=null!=t&&t,n=null!=n&&n;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!n&&!t||n&&this.isEdge(o)||t&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,t){return null!=e?e.getTerminal(t):null},mxGraphModel.prototype.setTerminal=function(e,t,n){var a=t!=this.getTerminal(e,n);return this.execute(new mxTerminalChange(this,e,t,n)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),t},mxGraphModel.prototype.setTerminals=function(e,t,n){this.beginUpdate();try{this.setTerminal(e,t,!0),this.setTerminal(e,n,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,t,n){var a=this.getTerminal(e,n);return null!=t?t.insertEdge(e,n):null!=a&&a.removeEdge(e,n),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,t){return null!=e?e.getEdgeAt(t):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,t,n){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=n&&this.getTerminal(o,t)==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,t,n,a){t=null==t||t,n=null==n||n,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&&(t&&d==e||n&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,t,n){n=null!=n&&n;var a=this.getEdgeCount(e),i=this.getEdgeCount(t),s=e,o=a;for(i<a&&(o=i,s=t),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==t||!n&&(d==e&&l==t))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,t,n,a){n=null==n||n,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==t&&null!=r&&r!=t&&a?i.push(r):r==t&&null!=o&&o!=t&&n&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var t=[],n=0;n<e.length;n++){for(var a=e[n],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&t.push(a)}return t},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,t){return this.execute(new mxValueChange(this,e,t)),t},mxGraphModel.prototype.valueForCellChanged=function(e,t){return e.valueChanged(t)},mxGraphModel.prototype.getGeometry=function(e,t){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,t){return t!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,t)),t},mxGraphModel.prototype.geometryForCellChanged=function(e,t){var n=this.getGeometry(e);return e.setGeometry(t),n},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,t){return t!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,t)),t},mxGraphModel.prototype.styleForCellChanged=function(e,t){var n=this.getStyle(e);return e.setStyle(t),n},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,t){return t!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,t)),t},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,t){var n=this.isCollapsed(e);return e.setCollapsed(t),n},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,t){return t!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,t)),t},mxGraphModel.prototype.visibleStateForCellChanged=function(e,t){var n=this.isVisible(e);return e.setVisible(t),n},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,t,n){n=null==n||n,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,t,n,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,t,n,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)&&n?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=t.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,n,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var t=[];if(null!=e)for(var n={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==n[s]&&(n[s]=i,t.push(i))}}return t},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,t){for(var n={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],n,t)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],n);return a},mxGraphModel.prototype.cloneCellImpl=function(e,t,n){var a=this.cellCloned(e);if(t[mxObjectIdentity.get(e)]=a,n){n=this.getChildCount(e);for(var i=0;i<n;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),t,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,t,n){null!=(a=this.getTerminal(t,!0))&&(null!=(a=n[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(t,!1))&&(null!=(a=n[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(t,i),n)},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),t=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=t},mxChildChange.prototype.connect=function(e,t){t=null==t||t;var n=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=n&&(t?this.model.terminalForCellChanged(e,n,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(t?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(n,!0),e.setTerminal(a,!1),n=this.model.getChildCount(e),a=0;a<n;a++)this.connect(this.model.getChildAt(e,a),t)},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 t=this.getValue();return this.setValue(e),t},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,t){return t?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,t){return null!=e&&(null==t&&(t=this.getChildCount(),e.getParent()==this&&t--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(t,0,e)),e},mxCell.prototype.remove=function(e){var t=null;return null!=this.children&&0<=e&&(null!=(t=this.getChildAt(e))&&(this.children.splice(e,1),t.setParent(null))),t},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,t){return null!=e&&(e.removeFromTerminal(t),e.setTerminal(this,t),null==this.edges||e.getTerminal(!t)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,t){if(null!=e){if(e.getTerminal(!t)!=this&&null!=this.edges){var n=this.getEdgeIndex(e);0<=n&&this.edges.splice(n,1)}e.setTerminal(null,t)}return e},mxCell.prototype.removeFromTerminal=function(e){var t=this.getTerminal(e);null!=t&&t.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,t){var n=this.getValue();return(null!=n&&n.nodeType==mxConstants.NODETYPE_ELEMENT?n.getAttribute(e):null)||t},mxCell.prototype.setAttribute=function(e,t){var n=this.getValue();null!=n&&n.nodeType==mxConstants.NODETYPE_ELEMENT&&n.setAttribute(e,t)},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,t){return t?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,t){if(this.clone(),this.relative||(this.x+=e,this.y+=t),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=t),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=t),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var n=this.points.length,a=0;a<n;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=t)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var t="";if(null!=e)for(var n=e.getParent();null!=n;)t=n.getIndex(e)+mxCellPath.PATH_SEPARATOR+t,n=(e=n).getParent();return 1<(e=t.length)&&(t=t.substring(0,e-1)),t},getParentPath:function(e){if(null!=e){var t=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=t)return e.substring(0,t);if(0<e.length)return""}return null},resolve:function(e,t){var n=e;if(null!=t)for(var a=t.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)n=n.getChildAt(parseInt(a[i]));return n},compare:function(e,t){for(var n=Math.min(e.length,t.length),a=0,i=0;i<n;i++)if(e[i]!=t[i]){a=0==e[i].length||0==t[i].length?e[i]==t[i]?0:e[i]>t[i]?1:-1:(n=parseInt(e[i]))==(i=parseInt(t[i]))?0:i<n?1:-1;break}return 0==a&&((n=e.length)!=(i=t.length)&&(a=i<n?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,t,n,a){t=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(n.y-i,n.x-t),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=t-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=t+e.height*Math.tan(l)/2),a&&(n.x>=e.x&&n.x<=e.x+e.width?o.x=n.x:n.y>=e.y&&n.y<=e.y+e.height&&(o.y=n.y),n.x<e.x?o.x=e.x:n.x>e.x+e.width&&(o.x=e.x+e.width),n.y<e.y?o.y=e.y:n.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,t,n,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;t=n.x,n=n.y;var c=parseInt(t-l),m=parseInt(n-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(t,n);if(a){if(s<=n&&n<=s+e.height)return e=n-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,t<=i&&(e=-e),new mxPoint(l+e,n);if(i<=t&&t<=i+e.width)return e=t-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,n<=s&&(e=-e),new mxPoint(t,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-t,2)+Math.pow(l-n,2)),t=Math.sqrt(Math.pow(r-t,2)+Math.pow(d-n,2)),s=n=0,s=i<t?(n=o,l):(n=r,d),new mxPoint(n,s)},RhombusPerimeter:function(e,t,n,a){t=e.x;var i=e.y,s=e.width,o=t+s/2,r=i+(e=e.height)/2,l=n.x;if(n=n.y,o==l)return new mxPoint(o,n<r?i:i+e);if(r==n)return new mxPoint(l<o?t:t+s,r);var d=o,c=r;return a&&(t<=l&&l<=t+s?d=l:i<=n&&n<=i+e&&(c=n)),l<o?n<r?mxUtils.intersection(l,n,d,c,o,i,t,r):mxUtils.intersection(l,n,d,c,o,i+e,t,r):n<r?mxUtils.intersection(l,n,d,c,o,i,t+s,r):mxUtils.intersection(l,n,d,c,o,i+e,t+s,r)},TrianglePerimeter:function(e,t,n,a){var i=(t=null!=t?t.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||t==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);t==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):t==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):t==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=n.x-l,g=n.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=t==mxConstants.DIRECTION_NORTH||t==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&n.x>=c.x&&n.x<=u.x||!i&&n.y>=c.y&&n.y<=u.y)?i?new mxPoint(n.x,c.y):new mxPoint(c.x,n.y):t==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):t==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):t==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),n.y>=o&&n.y<=o+e?(a.x=i?l:t==mxConstants.DIRECTION_WEST?s+r:s,a.y=n.y):n.x>=s&&n.x<=s+r&&(a.x=n.x,a.y=i?t==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&n.x<=s+r/2||!i&&n.y<=o+e/2?mxUtils.intersection(n.x,n.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(n.x,n.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,t,n,a,i,s,o,r,l){this.graph=e,this.scale=null!=t?t:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=n?n: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,t,n){this.view=e,this.cell=t,this.style=n,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,t,n){this.selectionModel=e,this.added=null!=t?t.slice():null,this.removed=null!=n?n.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 t=this.graph.cellRenderer.initializeOverlay,n=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,t){t.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 t=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){t()}),mxEvent.addListener(this.wnd,"resize",function(e){t()})}}});if(e=function(e,t){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",t&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),t){var n=a.createElement("hr");n.className="mxPageBreak",a.body.appendChild(n)}},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;(n=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(n,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!=n&&null!=n.parentNode&&n.parentNode.removeChild(n)}finally{this.graph.cellRenderer.initializeOverlay=t}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,t){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!=t&&e.writeln(t),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,t){var n=this.wnd.document,a=n.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=n.createElement("tbody"),s=0;s<e;s++){for(var o=n.createElement("tr"),r=0;r<t;r++){var l=s*t+r+1,d=n.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=n.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,n),d.appendChild(c)}else mxUtils.write(d,l,n);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,t,n){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=t+"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=t-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),n(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,t,n,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,t),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,n,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(n=i.firstChild;null!=n;)p=n.nextSibling,"svg"==(t=n.nodeName.toLowerCase())?(n.setAttribute("width",parseInt(i.style.width)),n.setAttribute("height",parseInt(i.style.height))):"default"!=n.style.cursor&&"table"!=t&&n.parentNode.removeChild(n),n=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,t){this.styles[e]=t},mxStylesheet.prototype.getCellStyle=function(e,t){var n=t;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(n=null!=n&&";"!=e.charAt(0)?mxUtils.clone(n):{},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 n[r]:mxUtils.isNumeric(o)?n[r]=parseFloat(o):n[r]=o}else if(null!=(o=this.styles[o]))for(r in o)n[r]=o[r]}return n},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,t){if(e=e||0,t=null!=t?t:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var n=this.shape.stencil.computeAspect(this.style,t.x,t.y,t.width,t.height);t.x=n.x,t.y=n.y,t.width=this.shape.stencil.w0*n.width,t.height=this.shape.stencil.h0*n.height}return 0!=e&&t.grow(e),t},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,t){t?(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,t){t?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 t=0;t<this.absolutePoints.length;t++)e.absolutePoints[t]=this.absolutePoints[t].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 t=[],n=0;n<e.length;n++)this.graph.isCellSelectable(e[n])&&t.push(e[n]);this.changeSelection(t,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var t=0;t<e.length;t++)if(this.graph.isCellSelectable(e[t]))return e[t];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var t=null;this.singleSelection&&(t=this.cells,e=[this.getFirstSelectableCell(e)]);for(var n=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&n.push(e[a]);this.changeSelection(n,t)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var t=[],n=0;n<e.length;n++)this.isSelected(e[n])&&t.push(e[n]);this.changeSelection(null,t)}},mxGraphSelectionModel.prototype.changeSelection=function(e,t){if(null!=e&&0<e.length&&null!=e[0]||null!=t&&0<t.length&&null!=t[0]){var n=new mxSelectionChange(this,e,t);n.execute();var a=new mxUndoableEdit(this,!1);a.add(n),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 t=0;t<this.removed.length;t++)this.selectionModel.cellRemoved(this.removed[t]);if(null!=this.added)for(t=0;t<this.added.length;t++)this.selectionModel.cellAdded(this.added[t]);t=this.added,this.added=this.removed,this.removed=t,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),t=this.graph.isLabelClipped(e.cell),n=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),n?(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);t&&(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&&(!t&&n||(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"),!t&&n||(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,t){null==this.textarea&&this.init(),this.stopEditing(!0);var n=this.graph.getView().getState(e);if(null!=n){this.editingCell=e,this.trigger=t,(this.textNode=null)!=n.text&&this.isHideLabel(n)&&(this.textNode=n.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(n.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(n.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(n.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(n.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(n.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(n.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(n.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(n),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==(n=this.getInitialValue(n,t))||0==n.length?(n=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=n,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"),t=e.style;return t.position="absolute",t.whiteSpace="nowrap",t.visibility="hidden",t.display=mxClient.IS_QUIRKS?"inline":"inline-block",t.zoom="1",t.verticalAlign="top",t.lineHeight=this.textarea.style.lineHeight,t.fontSize=this.textarea.style.fontSize,t.fontFamily=this.textarea.style.fontFamily,t.fontWeight=this.textarea.style.fontWeight,t.textAlign=this.textarea.style.textAlign,t.fontStyle=this.textarea.style.fontStyle,t.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,t){return this.graph.getEditingValue(e.cell,t)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var t=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*t+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var t=this.graph.getModel().isEdge(e.cell),n=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*n,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*n+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*n+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*n+s;n=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*n+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-n-r),Math.max(i,e.height-o-l));return t?(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+=n,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(t?(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)&&((t=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:t==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(t=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:t==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,t){mxCellRenderer.prototype.defaultShapes[e]=t},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,t){var n=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(n.isVertex(e.cell)||n.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=t&&!t||(this.initializeShape(e),e.view.graph.ordered||n.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,t){for(var n=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==n;)n=this.findPreviousStateInContainer(a,o,s,t),s=o,o=i.getParent(s);return n},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,t,n,a){var i=null,s=e.getModel();for(n=null!=n?t.getIndex(n)-1:s.getChildCount(t)-1;0<=n&&null==i;n--)i=this.findPreviousStateInContainer(e,s.getChildAt(t,n),null,a);return null!=i||(null==(i=e.view.getState(t))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var t=e.shape.node.parentNode,n=this.getPreviousStateInContainer(e,t),a=t.firstChild;null!=n&&(a=n.shape.node,null!=n.text&&null!=n.text.node&&n.text.node.parentNode==t&&(a=n.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var t=(n=e.view).graph.getModel();if(n.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(n.graph.keepEdgesInBackground){var n,a=e.shape.node,i=a.parentNode;t=t.getParent(e.cell);null!=(i=null!=(n=n.getState(t))&&null!=n.shape&&null!=n.shape.node?n.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,t){e.shape.node.parentNode.insertBefore(e.shape.node,t),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 t=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=t?e.shape=new mxShape(t):(t=this.getShapeConstructor(e),e.shape=new t),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 t=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==t&&(t=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),t},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,t,n){var a=e.shape[t],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),n=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[t]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[t]=null)!=a&&(e.shape[t]=null!=a.shape&&"indicatorColor"!=t?a.shape[t]:a.style[n]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(n,e){var a=n.view.graph;if(a.getModel().isEdge(n.cell),0<n.style[mxConstants.STYLE_FONTSIZE]||null==n.style[mxConstants.STYLE_FONTSIZE]){var t=a.isHtmlLabel(n.cell)||null!=e&&mxUtils.isNode(e);n.text=new this.defaultTextShape(e,new mxRectangle,n.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(n),n.style[mxConstants.STYLE_FONTCOLOR],n.style[mxConstants.STYLE_FONTFAMILY],n.style[mxConstants.STYLE_FONTSIZE],n.style[mxConstants.STYLE_FONTSTYLE],n.style[mxConstants.STYLE_SPACING],n.style[mxConstants.STYLE_SPACING_TOP],n.style[mxConstants.STYLE_SPACING_RIGHT],n.style[mxConstants.STYLE_SPACING_BOTTOM],n.style[mxConstants.STYLE_SPACING_LEFT],n.style[mxConstants.STYLE_HORIZONTAL],n.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],n.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(n.cell)&&a.isHtmlLabel(n.cell),a.isLabelClipped(n.cell),n.style[mxConstants.STYLE_OVERFLOW],n.style[mxConstants.STYLE_LABEL_PADDING]),n.text.opacity=mxUtils.getValue(n.style,mxConstants.STYLE_TEXT_OPACITY,100),n.text.dialect=t?mxConstants.DIALECT_STRICTHTML:n.view.graph.dialect,n.text.state=n,this.initializeLabel(n);var i=!1,s=function(e){var t=n;return(mxClient.IS_TOUCH||i)&&(t=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,t,e),t=a.view.getState(a.getCellAt(e.x,e.y))),t};mxEvent.addGestureListeners(n.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(n,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(n,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(n,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(n.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(n,e)&&(a.dblClick(e,n.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var t=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(t.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 t=e.view.graph.getCellOverlays(e.cell),n=null;if(null!=t){n=new mxDictionary;for(var a=0;a<t.length;a++){var i=null!=e.overlays?e.overlays.remove(t[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,t[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=t[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,t[a],i),null!=t[a].cursor&&(i.node.style.cursor=t[a].cursor)),n.put(t[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,t){t.destroy()}),e.overlays=n},mxCellRenderer.prototype.initializeOverlay=function(e,t){t.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(t,n,e){var a=t.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),n.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",t.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,t))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){n.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",t.cell))})},mxCellRenderer.prototype.createControl=function(n){var a=n.view.graph,e=a.getFoldingImage(n);if(a.foldingEnabled&&null!=e){if(null==n.control){var t=new mxRectangle(0,0,e.width,e.height);n.control=new mxImageShape(t,e.src),n.control.preserveImageAspect=!1,n.control.dialect=a.dialect,this.initControl(n,n.control,!0,function(e){if(a.isEnabled()){var t=!a.isCellCollapsed(n.cell);a.foldCells(t,!1,[n.cell]),mxEvent.consume(e)}})}}else null!=n.control&&(n.control.destroy(),n.control=null)},mxCellRenderer.prototype.initControl=function(t,e,n,a){var i=t.view.graph;return i.isHtmlLabel(t.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(t.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),n&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,t))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,t){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,t){return!0},mxCellRenderer.prototype.installListeners=function(n){var a=n.view.graph,t=function(e){var t=n;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(t=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,t,e),t=a.view.getState(a.getCellAt(e.x,e.y))),t},i=!1;mxEvent.addListener(n.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(n.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(n,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=n.shape&&mxEvent.getSource(e)==n.shape.content?null:n)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(n,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=n.shape&&mxEvent.getSource(e)==n.shape.content?null:t(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(n,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=n.shape&&mxEvent.getSource(e)==n.shape.content?null:t(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(n.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(n,e),mxEvent.consume(e))):this.isShapeEvent(n,e)&&(a.dblClick(e,null!=n.shape&&mxEvent.getSource(e)==n.shape.content?null:n.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,t){var n=this.getLabelValue(e);if(null==e.text&&null!=n&&(mxUtils.isNode(n)||0<n.length)?this.createLabel(e,n):null==e.text||null!=n&&0!=n.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);!t&&e.text.value==n&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=n,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 t=e.view.graph,n=e.view.scale,a=t.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*n,i.y+=a.y*n,null!=(t=t.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*t.width*n-e.text.spacingLeft*n-e.text.spacingRight*n),i.height=Math.max(0,e.text.margin.y*t.height*n-e.text.spacingTop*n-e.text.spacingBottom*n))):(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),t.isSwimlane(e.cell)&&(0<(t=t.getStartSize(e.cell)).width?(a=Math.min(i.width,t.width*n),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<t.height&&(a=Math.min(i.height,t.height*n),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,t){if(e.text.isPaintBoundsInverted()){var n=(e.width-e.height)/2;t.x+=n,t.y-=n,n=t.width,t.width=t.height,t.height=n}if(t.x-=e.text.margin.x*t.width,t.y-=e.text.margin.y*t.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){n=e.view.scale;var a=e.text.getSpacing();t.x+=a.x*n,t.y+=a.y*n,t.width=Math.max(0,t.width-e.text.spacingLeft*n-e.text.spacingRight*n),t.height=Math.max(0,t.height-e.text.spacingTop*n-e.text.spacingBottom*n)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(n=e.getCenterX(),a=e.getCenterY(),t.x!=n||t.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(t.x,t.y),Math.cos(i),Math.sin(i),new mxPoint(n,a)),t.x=pt.x,t.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,t){var n=t.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=n.getCenterX(),i=n.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;n.x=Math.round(a-n.width/2),n.y=Math.round(i-n.height/2)}!o&&null!=t.bounds&&t.scale==s.view.scale&&t.bounds.equals(n)||(t.bounds=n,t.scale=s.view.scale,t.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,t){if(null!=e.control){var n=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!t&&e.control.scale==i&&e.control.bounds.equals(n)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=n,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var t=e.control.scale,n=e.control.bounds.width/t,a=(t=e.control.bounds.height/t,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+n*a,s=e.y+t*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-n/2*a),Math.round(s-t/2*a),Math.round(n*a),Math.round(t*a))},mxCellRenderer.prototype.redraw=function(e,t,n){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=t&&t,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),t=!0),delete e.invalidOrder,delete e.orderChanged,!t&&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==n||n?e.shape.redraw():e.shape.updateBoundingBox()),(null==n||n)&&(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,t){t.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,t,n,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)(t=new mxCellState).x=r.x,t.y=r.y;else{if(null==t)return;var c=mxUtils.getPortConstraints(t,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(t.cell)).relative?d=r.x<=.5:null!=n&&(d=n.x+n.width<t.x)}r=!0,null!=l?((n=new mxCellState).x=l.x,n.y=l.y):null!=n&&((c=mxUtils.getPortConstraints(n,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(n.cell)).relative?r=e.x<=.5:null!=t&&(r=t.x+t.width<n.x)),null!=t&&null!=n&&(e=d?t.x:t.x+t.width,t=s.getRoutingCenterY(t),o=r?n.x:n.x+n.width,n=s.getRoutingCenterY(n),s=new mxPoint(e+(d?-a:a),t),l=new mxPoint(o+(r?-a:a),n),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,t)),i.push(new mxPoint(a,n))):(s.x<l.x==d?(a=t+(n-t)/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,t,n,a,i){if(null!=t){var s=(n=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=n.transformControlPoint(e,a),mxUtils.contains(t,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)*n.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=n.getRoutingCenterX(t),r=s):(l=n.getRoutingCenterY(t),d=s),null==a||a.x<t.x||a.x>t.x+t.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=t.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=t.y+t.height+2*r:o=e==mxConstants.DIRECTION_EAST?t.x-2*d:t.x+t.width+2*d:null!=a&&(o=n.getRoutingCenterX(t),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,t,n,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=t&&null!=n)if(null!=s){var l=Math.min(t.x,n.x),d=Math.max(t.x+t.width,n.x+n.width),c=(r=Math.min(t.y,n.y),Math.max(t.y+t.height,n.y+n.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(t.x,n.x))==(d=Math.min(t.x+t.width,n.x+n.width)))||(r=(r=Math.max(t.y,n.y))==(c=Math.min(t.y+t.height,n.y+n.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,t,n,a,i):mxEdgeStyle.TopToBottom(e,t,n,a,i)},SideToSide:function(e,t,n,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&&((t=new mxCellState).x=o.x,t.y=o.y),null!=r&&((n=new mxCellState).x=r.x,n.y=r.y),null!=t&&null!=n&&(e=Math.max(t.x,n.x),o=Math.min(t.x+t.width,n.x+n.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(t),s=s.getRoutingCenterY(n),null!=a&&(a.y>=t.y&&a.y<=t.y+t.height&&(o=a.y),a.y>=n.y&&a.y<=n.y+n.height&&(s=a.y)),!mxUtils.contains(n,e,o)&&!mxUtils.contains(t,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(n,e,s)&&!mxUtils.contains(t,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(n,e,a.y)&&!mxUtils.contains(t,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(t.y,n.y),t=Math.min(t.y+t.height,n.y+n.height),i.push(new mxPoint(e,s+(t-s)/2)))))},TopToBottom:function(e,t,n,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&&((t=new mxCellState).x=o.x,t.y=o.y),null!=r&&((n=new mxCellState).x=r.x,n.y=r.y),null!=t&&null!=n&&(o=Math.max(t.y,n.y),r=Math.min(t.y+t.height,n.y+n.height),e=s.getRoutingCenterX(t),null!=a&&a.x>=t.x&&a.x<=t.x+t.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(n,e,o)&&!mxUtils.contains(t,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=n.x&&a.x<=n.x+n.width?a.x:s.getRoutingCenterX(n),!mxUtils.contains(n,e,o)&&!mxUtils.contains(t,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(n,a.x,o)&&!mxUtils.contains(t,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(t.x,n.x),t=Math.min(t.x+t.width,n.x+n.width),i.push(new mxPoint(s+(t-s)/2,o)))))},SegmentConnector:function(e,t,n,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=t?l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t)):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=t,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=n,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!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=t&&(r.x<t.x||r.x>t.x+t.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!=n&&(l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=n)for(;1<i.length&&mxUtils.contains(n,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,t,n,a,i){var s=e.view.graph,o=null!=t&&s.getModel().isEdge(t.cell);s=null!=n&&s.getModel().isEdge(n.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,t,n,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=t?t.x:r.x;o=null!=t?t.y:r.y;var d=null!=t?t.width:1,c=null!=t?t.height:1,m=null!=n?n.x:l.x,u=null!=n?n.y:l.y,p=null!=n?n.width:1,g=null!=n?n.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=t&&(v[0]=mxUtils.getPortConstraints(t,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=n&&(v[1]=mxUtils.getPortConstraints(n,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)!=t&&(c=r),t=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(t[d][0]=(c.x-a[d][0])/a[d][2],t[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<t[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),t[d][1]=(c.y-a[d][1])/a[d][3],t[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<t[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=n&&(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),n=[],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]),n[d]=u[d][0]&v[d],n[d]|=(u[d][1]&v[d])<<8,n[d]|=(u[1-d][d]&v[d])<<16,n[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&n[d])&&(n[d]<<=8),0==(3840&n[d])&&(n[d]=15&n[d]|n[d]>>8),0==(983040&n[d])&&(n[d]=65535&n[d]|(251658240&n[d])>>8),e[d]=15&n[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]+=t[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=t[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]+=t[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=t[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=n=(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)!=n&&(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]+t[p][0]*a[p][2]:u?a[p][1]+t[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--:n=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,t,n,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=t)<1&&(i+=4),(e-=t)<1&&(e+=4),t=routePatterns[i-1][e-1],0!=n&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(t=inlineRoutePatterns[i-1][e-1]),t}},mxStyleRegistry={values:[],putValue:function(e,t){mxStyleRegistry.values[e]=t},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var t in mxStyleRegistry.values)if(mxStyleRegistry.values[t]==e)return t;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,t){if(this.view=e,this.previous=this.root=t,this.isUp=null==t,!this.isUp)for(var n=this.view.currentRoot,a=this.view.graph.getModel();null!=n;){if(n==t){this.isUp=!0;break}n=a.getParent(n)}}function mxGraph(e,t,n,a){this.mouseListeners=null,this.renderHint=n,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:n==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:n==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:n==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=t?t: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,t){this.graphModelChanged(t.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,t,n,a,i,s){this.image=e,this.tooltip=t,this.align=null!=n?n: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,t){this.source=e,null!=t&&this.init(t)}function mxMultiplicity(e,t,n,a,i,s,o,r,l,d){this.source=e,this.type=t,this.attr=n,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,t){this.isEnabled()&&this.beforeUndo(t.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.cellsMoved(t.getProperty("cells"),t.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,t,n,a){this.resizeHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.cellsResized(t.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.cellsResized(t.getProperty("cells"))}),this.shiftRightwards=null==t||t,this.shiftDownwards=null==n||n,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,t,n,a){this.horizontal=null==t||t,this.addEnabled=null==n||n,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(t.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(t.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,t,n){if(this.view=e,t=null!=t?t:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(t),null!=n){t=e.createState(new mxCell);for(var a=0;a<n.length;a++)e.validateBounds(t,n[a]);var i=null;for(a=0;a<n.length;a++){var s=e.validatePoints(t,n[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,t){this.point=e,this.perimeter=null==t||t}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,t){null!=e&&(this.graph=e,this.factoryMethod=t,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,t,n,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=t?t:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=t?n: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,t){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,t){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=t,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,t){null!=e&&(this.graph=e,this.target=t||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,t){null!=e&&(this.graph=e,this.delay=t||500,this.graph.addMouseListener(this))}function mxCellTracker(e,t,n){mxCellMarker.call(this,e,t),this.graph.addMouseListener(this),null!=n&&(this.getCell=n),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,t,n,a){null!=e&&(this.graph=e,this.highlightColor=null!=t?t:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=n?n: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(t){if(null!=t){this.editor=t,this.handler=new mxKeyHandler(t.graph);var n=this.handler.escape;this.handler.escape=function(e){n.apply(this,arguments),t.hideProperties(),t.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,t){this.editor=t,null!=e&&null!=t&&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 t=null;if(null!=e&&0<e.length)for(var n=this.graph.getModel(),a=0;a<e.length;a++)if(n.isVertex(e[a])||n.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i))}return t},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var t=new mxCurrentRootChange(this,e);t.execute();var n=new mxUndoableEdit(this,!1);n.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,t,n){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==t&&this.translate.y==n||(this.scale=e,this.translate.x=t,this.translate.y=n,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 t=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",t))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,t){var n=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==t||(this.translate.x=e,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",n))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,t,n){var a=this.graph.getModel();if(e=e||a.getRoot(),t=null!=t&&t,n=null==n||n,this.removeState(e),n&&(t||e!=this.currentRoot)){n=a.getChildCount(e);for(var i=0;i<n;i++)this.clear(a.getChildAt(e,i),t)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,t,n,a){var i=this.graph.getModel();if(e=e||i.getRoot(),t=null==t||t,n=null==n||n,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),t)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,t,n,a)}if(n)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),t,n)},mxGraphView.prototype.validate=function(e){var t=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var n=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){n=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!=n&&(this.canvas.style.display=n,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",t)},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 t=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(t,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?(t=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(t),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=t,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,t=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*t,e.height*t)},mxGraphView.prototype.redrawBackgroundImage=function(e,t){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*t.width,e.bounds.height=this.scale*t.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,t){var n=this.graph.getModel(),a=this.getState(t,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(t)){if(t!=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(t))){if(!n.isEdge(t)){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,n.isVertex(t)){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(t);null!=(i=this.graph.getChildOffsetForCell(t))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(t)||t==this.currentRoot))for(s=n.getChildCount(t),i=0;i<s;i++)o=n.getChildAt(t,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var t=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:t==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(t=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:t==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,t){var n=this.graph.getModel(),a=this.getState(t),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(t);if(null!=s&&n.isEdge(t)){var o=this.getState(this.getVisibleTerminal(t,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&n.isEdge(o.cell)&&!n.isAncestor(o.cell,t)){var r=this.getState(n.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(t,!1));a.setVisibleTerminalState(l,!1),null!=l&&n.isEdge(l.cell)&&!n.isAncestor(l.cell,t)&&(r=this.getState(n.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&&n.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,t!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(n.isEdge(t)||n.isVertex(t))&&(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(t)||t==this.currentRoot))for(s=n.getChildCount(t),o=0;o<s;o++)r=n.getChildAt(t,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,t){var n=t.cell;if(!this.graph.isCellCollapsed(n)||n==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(n),s=0;s<i;s++)this.validateBounds(t,a.getChildAt(n,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,t,n){this.updateFixedTerminalPoint(e,t,!0,this.graph.getConnectionConstraint(e,t,!0)),this.updateFixedTerminalPoint(e,n,!1,this.graph.getConnectionConstraint(e,n,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,t,n,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(t,a)),null==i&&null==t){t=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(n))&&(i=new mxPoint(t*(a.x+i.x+s.x),t*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,n)},mxGraphView.prototype.updatePoints=function(e,t,n,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,t,n,a);if(null!=s)s(e,n=this.getTerminalPort(e,n,!0),a=this.getTerminalPort(e,a,!1),t,i);else if(null!=t)for(s=0;s<t.length;s++)null!=t[s]&&(a=mxUtils.clone(t[s]),i.push(this.transformControlPoint(e,a)));t=e.absolutePoints,i.push(t[t.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,t){var n=e.origin;return new mxPoint(this.scale*(t.x+this.translate.x+n.x),this.scale*(t.y+this.translate.y+n.y))},mxGraphView.prototype.getEdgeStyle=function(e,t,n,a){return"string"==typeof(e=null!=n&&n==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==(t=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(t=mxUtils.eval(e)),e=t),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,t,n){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!1),null==i&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,t,n,a){t=this.getTerminalPort(e,t,a);var i=this.getNextPoint(e,n,a),s=this.graph.isOrthogonal(e);n=mxUtils.toRadians(Number(t.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(t.getCenterX(),t.getCenterY());if(0!=n){var r=Math.cos(-n),l=Math.sin(-n);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),t=this.getPerimeterPoint(t,i,0==n&&s,r),0!=n&&(r=Math.cos(n),l=Math.sin(n),t=mxUtils.getRotatedPoint(t,r,l,o)),e.setAbsoluteTerminalPoint(t,a)},mxGraphView.prototype.getTerminalPort=function(e,t,n){return null!=(e=mxUtils.getValue(e.style,n?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(t=e)),t},mxGraphView.prototype.getPerimeterPoint=function(e,t,n,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=t&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,t,n)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var t=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+t*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var t=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+t*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,t){return t=null!=t?t:0,null!=e&&(t+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(t*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var t=mxStyleRegistry.getValue(e);null==t&&this.isAllowEval()&&(t=mxUtils.eval(e)),e=t}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,t,n){var a=null;return null!=(e=e.absolutePoints)&&(n||2<e.length||null==t)&&(a=e.length,a=e[n?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=t&&(a=new mxPoint(t.getCenterX(),t.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,t){for(var n=this.graph.getModel(),a=n.getTerminal(e,t),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=n.getParent(a);return n.getParent(i)==n.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var t=e.absolutePoints;if(e.length=0,null!=t&&0<t.length){var n=t[0],a=t[t.length-1];if(null==n||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(n.x!=a.x||n.y!=a.y){var i=a.x-n.x,s=a.y-n.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=n)){n=s.x;for(var r=s.y,l=n,d=r,c=1;c<t.length;c++){var m=t[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,n=Math.min(s.x,n),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=n,e.y=r,e.width=Math.max(1,l-n),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,t){var n=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=t&&!t.relative)null!=t&&(null!=(d=t.offset)&&(n+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=t?t.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=n=a=0,null!=t){a=t.y;var d=t.offset;null!=d&&(n=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,n=s.x+d*i+((0==o?0:l/o)*a+n)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(n,a)},mxGraphView.prototype.getRelativePoint=function(e,t,n){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,t,n),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,t,n))<=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=t-l))*e+(s=(d=o.y-s)-(s=n-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,t,n)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,t,n)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var t=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=t&&0<t.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(n=this.getPoint(e,i))&&(e.absoluteOffset=n)}else{var n=t[0],a=t[t.length-1];if(null!=n&&null!=a){t=a.x-n.x;var i,s=a.y-n.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=n.y+s/2+o*this.scale,e.absoluteOffset.x=n.x+t/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,t){t=t||!1;var n=null;return null!=e&&(n=this.states.get(e),this.graph.isCellVisible(e)&&(null==n&&t&&this.graph.isCellVisible(e)?(n=this.createState(e),this.states.put(e,n)):t&&null!=n&&this.updateStyle&&(n.style=this.graph.getCellStyle(e)))),n},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 t=[],n=0;n<e.length;n++){var a=this.getState(e[n]);null!=a&&t.push(a)}return t},mxGraphView.prototype.removeState=function(e){var t=null;return null!=e&&(null!=(t=this.states.remove(e))&&(this.graph.cellRenderer.destroy(t),t.destroy())),t},mxGraphView.prototype.createState=function(e){var t=this.graph.getCellStyle(e);return e=new mxCellState(this,e,t),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 t=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-t.x,e.clientY-t.y);t=this.graph.container.offsetWidth;var n=this.graph.container.clientWidth;return n<t&&e.x>n+2&&e.x<=t||(t=this.graph.container.offsetHeight,(n=this.graph.container.clientHeight)<t&&e.y>n+2&&e.y<=t)},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,t){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var t,n;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(t=e,n=null,mxClient.IS_TOUCH&&(n=mxEvent.getClientX(t),t=mxEvent.getClientY(t),t=mxUtils.convertPoint(i,n,t),n=a.view.getState(a.getCellAt(t.x,t.y))),n)))}),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,t){if(null!=this.graph.container){var n=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=n<t?t+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,t){var n=document.createElement("DIV");return null!=e&&null!=t?(n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.width=e,n.style.height=t):n.style.position="relative",n},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var t=e.offsetWidth,n=e.offsetHeight;this.canvas=this.createVmlPane(t,n),this.backgroundPane=this.createVmlPane(t,n),this.drawPane=this.createVmlPane(t,n),this.overlayPane=this.createVmlPane(t,n),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,t){var n=document.createElement(mxClient.VML_PREFIX+":group");return n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.width=e+"px",n.style.height=t+"px",n.setAttribute("coordsize",e+","+t),n.setAttribute("coordorigin","0,0"),n},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 t=document.createElementNS(mxConstants.NS_SVG,"svg");t.style.width="100%",t.style.height="100%",t.style.display="block",t.appendChild(this.canvas),null!=e&&(e.appendChild(t),"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 t=[],n=0;n<e.length;n++){var a=e[n];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(t,i)<0&&t.push(i)}}return this.getModel().getTopmostCells(t)},mxGraph.prototype.graphModelChanged=function(e){for(var t=0;t<e.length;t++)this.processChange(e[t]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var t=[],n=0;n<e.length;n++){var a=e[n];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(t=t.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(t=t.concat(this.model.getDescendants(a.cell)))}return t},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 t=this.model.getParent(e.child);null!=t?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),t!=e.previous&&(null!=t&&this.view.invalidate(t,!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 t=this.model.getChildCount(e),n=0;n<t;n++)this.removeStateForCell(this.model.getChildAt(e,n));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,t){null==e.overlays&&(e.overlays=[]),e.overlays.push(t);var n=this.view.getState(e);return null!=n&&this.cellRenderer.redraw(n),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",t)),t},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,t){if(null==t)this.removeCellOverlays(e);else{var n=mxUtils.indexOf(e.overlays,t);0<=n?(e.overlays.splice(n,1),0==e.overlays.length&&(e.overlays=null),null!=(n=this.view.getState(e))&&this.cellRenderer.redraw(n),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",t))):t=null}return t},mxGraph.prototype.removeCellOverlays=function(e){var t=e.overlays;if(null!=t){e.overlays=null;var n=this.view.getState(e);for(null!=n&&this.cellRenderer.redraw(n),n=0;n<t.length;n++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",t[n]))}return t},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var t=this.model.getChildCount(e),n=0;n<t;n++){var a=this.model.getChildAt(e,n);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(n,e,t,a){return null!=e&&0<e.length?(e=new mxCellOverlay(t=null!=t?t:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,t){this.isEnabled()&&this.setSelectionCell(n)})),this.addCellOverlay(n,e)):(this.removeCellOverlays(n),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,t){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",t)),this.cellEditor.startEditing(e,t))},mxGraph.prototype.getEditingValue=function(e,t){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,t,n){this.model.beginUpdate();try{this.cellLabelChanged(e,t,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",t,"event",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,t,n){this.model.beginUpdate();try{this.model.setValue(e,t),n&&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 t=0;t<e.length;t++){var n=this.view.getState(e[t]);null!=n&&null!=n.handler&&n.handler.reset()}},mxGraph.prototype.click=function(e){var t=e.getEvent(),n=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",t,"cell",n);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(t)&&!a.isConsumed()&&(null!=n?this.selectCellForEvent(n,t):(n=null,this.isSwimlaneSelectionEnabled()&&(n=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=n?this.selectCellForEvent(n,t):this.isToggleEvent(t)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),this.isEnabled()&&!mxEvent.isConsumed(e)&&!n.isConsumed()&&null!=t&&this.isCellEditable(t)&&this.startEditingAtCell(t,e)},mxGraph.prototype.scrollPointToVisible=function(e,t,n,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,t+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&t>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&t<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,n&&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-t)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&n&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,t=this.container.scrollHeight+a-s):(t=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=t+"px",i.scrollTop+=a-s)):(s=t-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var t=0;t="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(t)&&(t=0),t}var t=mxUtils.getCurrentStyle(this.container),n=new mxRectangle;return n.x=e(t.borderLeftWidth)+parseInt(t.paddingLeft||0),n.y=e(t.borderTopWidth)+parseInt(t.paddingTop||0),n.width=e(t.borderRightWidth)+parseInt(t.paddingRight||0),n.height=e(t.borderBottomWidth)+parseInt(t.paddingBottom||0),n},mxGraph.prototype.getPreferredPageSize=function(e,t,n){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 t=this.pageBreaksVisible?Math.ceil(t/i.width):1,n=this.pageBreaksVisible?Math.ceil(n/i.height):1,new mxRectangle(0,0,t*i.width+2+a.x/e,n*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var t=this.getBorder(),n=Math.max(0,e.x+e.width+1+t);t=Math.max(0,e.y+e.height+1+t);if(null!=this.minimumContainerSize&&(n=Math.max(n,this.minimumContainerSize.width),t=Math.max(t,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(n,t),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,n,t);null!=a&&(n=a.width,t=a.height)}null!=this.minimumGraphSize&&(n=Math.max(n,this.minimumGraphSize.width*this.view.scale),t=Math.max(t,this.minimumGraphSize.height*this.view.scale)),n=Math.ceil(n-1),t=Math.ceil(t-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,n)+"px",a.style.minHeight=Math.max(1,t)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,n),Math.max(1,t)):(this.view.canvas.style.minWidth=Math.max(1,n)+"px",this.view.canvas.style.minHeight=Math.max(1,t)+"px"),this.updatePageBreaks(this.pageBreaksVisible,n-1,t-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,t){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var n=this.getBorderSizes();e+=Math.max(2,n.x+n.width+1),t+=Math.max(2,n.y+n.height+1)}else 9<=document.documentMode?(e+=3,t+=5):(e+=1,t+=1);else t+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),t=Math.min(this.maximumContainerSize.height,t)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(t)+"px"},mxGraph.prototype.updatePageBreaks=function(e,t,n){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((t-i.x)/i.width):0,e=e?Math.ceil((n-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,n)];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(t,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 t=this.model.getStyle(e),n=null;n=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=t&&(n=this.postProcessCellStyle(this.stylesheet.getCellStyle(t,n))),null==n&&(n=mxGraph.prototype.EMPTY_ARRAY),n},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var t=e[mxConstants.STYLE_IMAGE],n=this.getImageFromBundles(t);null!=n?e[mxConstants.STYLE_IMAGE]=n:n=t,null!=n&&"data:image/"==n.substring(0,11)&&(0<(t=n.indexOf(","))&&(n=n.substring(0,t)+";base64,"+n.substring(t+1)),e[mxConstants.STYLE_IMAGE]=n)}return e},mxGraph.prototype.setCellStyle=function(e,t){if(null!=(t=t||this.getSelectionCells())){this.model.beginUpdate();try{for(var n=0;n<t.length;n++)this.model.setStyle(t[n],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,t,n){n=n||this.getSelectionCell(),this.toggleCellStyles(e,t,[n])},mxGraph.prototype.toggleCellStyles=function(e,t,n){var a;(t=null!=t&&t,null!=(n=n||this.getSelectionCells())&&0<n.length)&&(null!=(a=null!=(a=this.view.getState(n[0]))?a.style:this.getCellStyle(n[0]))&&(t=mxUtils.getValue(a,e,t)?0:1,this.setCellStyles(e,t,n)))},mxGraph.prototype.setCellStyles=function(e,t,n){n=n||this.getSelectionCells(),mxUtils.setCellStyles(this.model,n,e,t)},mxGraph.prototype.toggleCellStyleFlags=function(e,t,n){this.setCellStyleFlags(e,t,null,n)},mxGraph.prototype.setCellStyleFlags=function(e,t,n,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==n)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(n=(parseInt(i[e]||0)&t)!=t);mxUtils.setCellStyleFlags(this.model,a,e,t,n)}},mxGraph.prototype.alignCells=function(e,t,n){if(null==t&&(t=this.getSelectionCells()),null!=t&&1<t.length){if(null==n)for(var a=0;a<t.length;a++){var i=this.getCellGeometry(t[a]);if(null!=i&&!this.model.isEdge(t[a]))if(null==n){if(e==mxConstants.ALIGN_CENTER){n=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)n=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)n=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){n=i.y+i.height/2;break}n=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else n=e==mxConstants.ALIGN_RIGHT?Math.max(n,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(n,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(n,i.y+i.height):Math.min(n,i.x)}if(null!=n){this.model.beginUpdate();try{for(a=0;a<t.length;a++)null!=(i=this.getCellGeometry(t[a]))&&!this.model.isEdge(t[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=n-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=n-i.width:e==mxConstants.ALIGN_TOP?i.y=n:e==mxConstants.ALIGN_MIDDLE?i.y=n-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=n-i.height:i.x=n,this.model.setGeometry(t[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",t))}finally{this.model.endUpdate()}}}return t},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var t=this.model.getStyle(e);null==t||0==t.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 t=[],n=0;n<this.imageBundles.length;n++)this.imageBundles[n]!=e&&t.push(this.imageBundles[n]);this.imageBundles=t},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var t=0;t<this.imageBundles.length;t++){var n=this.imageBundles[t].getImage(e);if(null!=n)return n}return null},mxGraph.prototype.orderCells=function(e,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(t,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsOrdered=function(e,t){if(null!=e){this.model.beginUpdate();try{for(var n=0;n<e.length;n++){var a=this.model.getParent(e[n]);t?this.model.add(a,e[n],n):this.model.add(a,e[n],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",t,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,t,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),n=this.getCellsForGroup(n),null==e&&(e=this.createGroupCell(n));var a=this.getBoundsForGroup(e,n,t);if(0<n.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(n[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(n,e,s,null,null,!1,!1),this.cellsMoved(n,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",t,"cells",n))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var t=[];if(null!=e&&0<e.length){var n=this.model.getParent(e[0]);t.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==n&&t.push(e[a])}return t},mxGraph.prototype.getBoundsForGroup=function(e,t,n){return null!=(t=this.getBoundingBoxFromGeometry(t))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),t.x-=e.width,t.y-=e.height,t.width+=e.width,t.height+=e.height),t.x-=n,t.y-=n,t.width+=2*n,t.height+=2*n),t},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var t=[];if(null==e){e=this.getSelectionCells();for(var n=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&n.push(e[a]);e=n}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),t=t.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return t},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var t=this.getDefaultParent(),n=this.model.getChildCount(t);this.cellsAdded(e,t,n,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,t,n){null==e&&(e=this.getSelectionCells()),t=null!=t?t:0,n=null!=n&&n,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();n&&(r.x+=s.x-o.width-t,r.y+=s.y-o.height-t),r.width=s.width+o.width+2*t,r.height=s.height+o.height+2*t,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+t,-s.y+o.height+t)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,t){t=null==t||t;var n=null;if(null!=e){for(var a={},i=(n=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],n.push(e[i])}if(0<n.length){var s=this.view.scale,o=this.view.translate;for(n=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!t&&this.model.isEdge(n[i])&&null!=this.getEdgeValidationError(n[i],this.model.getTerminal(n[i],!0),this.model.getTerminal(n[i],!1)))n[i]=null;else{var r=this.model.getGeometry(n[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(n[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 n=[]}return n},mxGraph.prototype.insertVertex=function(e,t,n,a,i,s,o,r,l){return t=this.createVertex(e,t,n,a,i,s,o,r,l),this.addCell(t,e)},mxGraph.prototype.createVertex=function(e,t,n,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(n=new mxCell(n,e,r)).setId(t),n.setVertex(!0),n.setConnectable(!0),n},mxGraph.prototype.insertEdge=function(e,t,n,a,i,s){return t=this.createEdge(e,t,n,a,i,s),this.addEdge(t,e,a,i)},mxGraph.prototype.createEdge=function(e,t,n,a,i,s){return(e=new mxCell(n,new mxGeometry,s)).setId(t),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,t,n,a,i){return this.addCell(e,t,i,n,a)},mxGraph.prototype.addCell=function(e,t,n,a,i){return this.addCells([e],t,n,a,i)[0]},mxGraph.prototype.addCells=function(e,t,n,a,i){null==t&&(t=this.getDefaultParent()),null==n&&(n=this.model.getChildCount(t)),this.model.beginUpdate();try{this.cellsAdded(e,t,n,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",t,"index",n,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,t,n,a,i,s,o){if(null!=e&&null!=t&&null!=n){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(t):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])n--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=t&&t!=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)}}t==c&&n+d>this.model.getChildCount(t)&&n--,this.model.add(t,e[d],n+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",t,"index",n,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,t){t=null==t||t,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),t&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var t=this.view.scale,n=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/t-n.x,m[u].y/t-n.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,t,n,a,i){a=a||0,i=i||0,null==n&&(n=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(t,a,i,!1,!1),this.cellsAdded(t,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([n],s,this.model.getChildCount(s),o,t[0],!1),this.cellConnected(e,t[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",t,"newEdge",n,"dx",a,"dy",i))}finally{this.model.endUpdate()}return n},mxGraph.prototype.toggleCells=function(e,t,n){null==t&&(t=this.getSelectionCells()),n&&(t=this.addAllEdges(t)),this.model.beginUpdate();try{this.cellsToggled(t,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",t,"includeEdges",n))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsToggled=function(e,t){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var n=0;n<e.length;n++)this.model.setVisible(e[n],t)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,t,n,a){t=null!=t&&t,null==n&&(n=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(n,e,t,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",t,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsFolded=function(e,t,n,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],t))&&t!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],t),this.swapBounds(e[i],t),this.isExtendParent(e[i])&&this.extendParent(e[i]),n)){var s=this.model.getChildren(e[i]);this.foldCells(s,t,n)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",t,"recurse",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,t){if(null!=e){var n=this.model.getGeometry(e);null!=n&&(n=n.clone(),this.updateAlternateBounds(e,n,t),n.swap(),this.model.setGeometry(e,n))}},mxGraph.prototype.updateAlternateBounds=function(e,t,n){if(null!=e&&null!=t){if(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e),null==t.alternateBounds){var a=t;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(n,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),t.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=t.alternateBounds){t.alternateBounds.x=t.x,t.alternateBounds.y=t.y;var i=mxUtils.toRadians(n[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=t.alternateBounds.getCenterX()-t.getCenterX(),n=t.alternateBounds.getCenterY()-t.getCenterY(),a=Math.cos(i),i=Math.sin(i),t.alternateBounds.x+=a*e-i*n-e,t.alternateBounds.y+=i*e+a*n-n)}}},mxGraph.prototype.addAllEdges=function(e){var t=e.slice();return t.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var t=[];if(null!=e)for(var n=0;n<e.length;n++){for(var a=this.model.getEdgeCount(e[n]),i=0;i<a;i++)t.push(this.model.getEdgeAt(e[n],i));a=this.model.getChildren(e[n]),t=t.concat(this.getAllEdges(a))}return t},mxGraph.prototype.updateCellSize=function(e,t){t=null!=t&&t,this.model.beginUpdate();try{this.cellSizeUpdated(e,t),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,t){if(null!=e){this.model.beginUpdate();try{var n=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=n&&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,n.height+8),i&&(a.height=n.height+8),a.width=n.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,n.width+8),i&&(a.width=n.width+8),a.height=n.height),this.model.setStyle(e,r)}else a.width=n.width,a.height=n.height;if(!t&&!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 t=null;if(null!=e){var n=this.view.getState(e),a=null!=n?n.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;t=0;null==this.getImage(n)&&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&&(t+=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,t+=2*(a[mxConstants.STYLE_SPACING]||0),t+=a[mxConstants.STYLE_SPACING_TOP]||0,t+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(n=this.getFoldingImage(n))&&(s+=n.width+8),t=null!=(n=this.getLabel(e))&&0<n.length?(this.isHtmlLabel(e)||(n=n.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(n,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,t=i.height+t,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=t,t=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),t=this.snap(t+this.gridSize/2)),new mxRectangle(0,0,e,t)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return t},mxGraph.prototype.handleGesture=function(e,t){if(.2<Math.abs(1-t.scale)){var n=this.view.scale,a=this.view.translate,i=e.width*t.scale,s=e.height*t.scale,o=e.y-(s-e.height)/2;n=new mxRectangle(this.snap((e.x-(i-e.width)/2)/n)-a.x,this.snap(o/n)-a.y,this.snap(i/n),this.snap(s/n));this.resizeCell(e.cell,n)}},mxGraph.prototype.resizeCell=function(e,t){return this.resizeCells([e],[t])[0]},mxGraph.prototype.resizeCells=function(e,t){this.model.beginUpdate();try{this.cellsResized(e,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,t){if(null!=e&&null!=t&&e.length==t.length){this.model.beginUpdate();try{for(var n=0;n<e.length;n++){var a=t[n],i=this.model.getGeometry(e[n]);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[n])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[n],i),this.isExtendParent(e[n])&&this.extendParent(e[n])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var t=this.model.getParent(e),n=this.model.getGeometry(t);null!=t&&null!=n&&!this.isCellCollapsed(t)&&(null!=(e=this.model.getGeometry(e))&&(n.width<e.x+e.width||n.height<e.y+e.height))&&((n=n.clone()).width=Math.max(n.width,e.x+e.width),n.height=Math.max(n.height,e.y+e.height),this.cellsResized([t],[n]))}},mxGraph.prototype.importCells=function(e,t,n,a,i){return this.moveCells(e,t,n,!0,a,i)},mxGraph.prototype.moveCells=function(e,t,n,a,i,s){if(t=null!=t?t:0,n=null!=n?n:0,a=null!=a&&a,null!=e&&(0!=t||0!=n||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,t,n,!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",t,"dy",n,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,t,n,a,i){if(null!=e&&(0!=t||0!=n)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],t,n),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",n,"dy",n,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,t,n){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(t,n),!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(t,n):(a.offset.x+=t,a.offset.y+=n)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var t=this.model.getParent(e);if(t==this.getDefaultParent()||t==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=t&&t!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(t))){var n=e=0,a=i.width,i=i.height;return this.isSwimlane(t)&&(e=(t=this.getStartSize(t)).width,a-=t.width,n=t.height,i-=t.height),new mxRectangle(e,n,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var t=this.model.getGeometry(e),n=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=t&&null!=n&&!t.relative&&(t.x<n.x||t.y<n.y||n.width<t.x+t.width||n.height<t.y+t.height)&&(e=this.getOverlap(e),0<n.width&&(t.x=Math.min(t.x,n.x+n.width-(1-e)*t.width)),0<n.height&&(t.y=Math.min(t.y,n.y+n.height-(1-e)*t.height)),t.x=Math.max(t.x,n.x-t.width*e),t.y=Math.max(t.y,n.y-t.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var t={},n=0;n<e.length;n++){var a=mxCellPath.create(e[n]);t[a]=e[n]}this.model.beginUpdate();try{for(n=0;n<e.length;n++){var i=this.model.getEdges(e[n]);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==t[l]||null==t[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[n]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var t=this.model.getGeometry(e);return null!=t&&null!=t.points&&0<t.points.length&&((t=t.clone()).points=[],this.model.setGeometry(e,t)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,t){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,t,n){t=null;var a=e.style[n?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[n?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(t=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=t&&(a=mxUtils.getValue(e.style,n?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(t,a)},mxGraph.prototype.setConnectionConstraint=function(e,t,n,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(n?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(n?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(n?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(n?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(n?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(n?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(n?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,t){var n=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!=t.point){var l=n=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&&(n=-1,d=-a.width),u&&(l=-1,c=-a.height)}n=new mxPoint(a.x+t.point.x*a.width*n-d,a.y+t.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,t.perimeter?(0!=o&&null!=n&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),n=mxUtils.getRotatedPoint(n,a,r,i)),null!=n&&t.perimeter&&(n=this.view.getPerimeterPoint(e,n,!1))):s+=o,0!=s&&null!=n&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),n=mxUtils.getRotatedPoint(n,a,r,i))}return n},mxGraph.prototype.connectCell=function(e,t,n,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,n);this.cellConnected(e,t,n,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",t,"source",n,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,t,n,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,n);this.setConnectionConstraint(e,t,n,a),this.isPortsEnabled()&&(a=null,this.isPort(t)&&(a=t.getId(),t=this.getTerminalForPort(t,n)),this.setCellStyles(n?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,t,n),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",t,"source",n,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var t=this.view.scale,n=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/t-n.x+l,c[0].y/t-n.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/t-n.x+l,c[v].y/t-n.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,t){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(),t=this.getCurrentRoot();if(null!=t){for(var n=this.model.getParent(t);n!=e&&!this.isValidRoot(n)&&this.model.getParent(n)!=e;)n=this.model.getParent(n);n==e||this.model.getParent(n)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(n),null!=this.view.getState(t)&&this.setSelectionCell(t)}},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,t,n){var a=[e];if(t&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),n){n=this.model.getChildCount(e);for(var i=0;i<n;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),t,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,t){t=null!=t&&t;var n=null;if(null!=e)for(var a=0;a<e.length;a++)if(t||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==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i)}}return n},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,t){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-t;else{var n=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==t){if(mxClient.IS_IE?n.setAttribute("transform","translate("+e+","+t+")"):n.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(n.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(n.setAttribute("transform","translate("+e+","+t+")"),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!=n.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,n.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=t+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=t+"px"}else n.style.left=e+"px",n.style.top=t+"px";this.panDx=e,this.panDy=t,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,t){this.zoom(e/this.view.scale,t)},mxGraph.prototype.zoom=function(e,t){t=null!=t?t:this.centerZoom;var n=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=n,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(n));else if(t&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*n);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(n,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(n),mxUtils.hasScrollbars(this.container)&&(i=a=0,t&&(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 t=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 n=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=n-e.x,e.height=a-e.y,t<1?(n=((t=e.height/t)-e.height)/2,e.height=t,t=Math.min(e.y,n),e.y-=t,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(n=((t*=e.width)-e.width)/2,e.width=t,t=Math.min(e.x,n),e.x-=t,n=Math.min(this.container.scrollWidth,e.x+e.width),e.width=n-e.x),t=this.container.clientWidth/e.width,n=this.view.scale*t,mxUtils.hasScrollbars(this.container)?(this.view.setScale(n),this.container.scrollLeft=Math.round(e.x*t),this.container.scrollTop=Math.round(e.y*t)):this.view.scaleAndTranslate(n,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,t){if(null!=this.container){e=null!=e?e:0,t=null!=t&&t;var n=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();t&&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=t?e:2*e;n=Math.floor(100*Math.min(n/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(n=Math.max(n,this.minFitScale)),null!=this.maxFitScale&&(n=Math.min(n,this.maxFitScale)),t?this.view.scale!=n&&this.view.setScale(n):mxUtils.hasScrollbars(this.container)?(this.view.setScale(n),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*n-e-Math.max(0,(this.container.clientWidth-o*n)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*n-e-Math.max(0,(this.container.clientHeight-r*n)/2))):this.view.scaleAndTranslate(n,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,t){var n=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(n=new mxRectangle(n+i.x,a+i.y,i.width,i.height),t&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,n.x=n.getCenterX()-a/2,n.width=a,n.y=n.getCenterY()-i/2,n.height=i),this.scrollRectToVisible(n)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var t=!1;if(null!=e){var n=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(n,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){n=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=n.scrollLeft-e.x;a=Math.max(o-n.scrollLeft,0);0<o?n.scrollLeft-=o+2:0<(o=e.x+i-n.scrollLeft-n.clientWidth)&&(n.scrollLeft+=o+2),i=n.scrollTop-e.y,o=Math.max(0,i-n.scrollTop),0<i?n.scrollTop-=i+2:0<(i=e.y+s-n.scrollTop-n.clientHeight)&&(n.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+n&&(this.view.translate.x-=(e.x+i-n-o)/l,t=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,t=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,t=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,t=!0),t&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return t},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 t=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=t?t:(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 t=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=t&&t==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,t,n){return null==this.getEdgeValidationError(e,t,n)},mxGraph.prototype.getEdgeValidationError=function(e,t,n){if(null!=e&&!this.isAllowDanglingEdges()&&(null==t||null==n))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&t==n&&null!=t||!this.isValidConnection(t,n))return"";if(null==t||null==n)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(t,n,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(t,!0,e),s=this.model.getDirectedEdgeCount(n,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,t,n,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,t,n))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,t,n){return null},mxGraph.prototype.validateGraph=function(e,t){e=null!=e?e:this.model.getRoot(),t=null!=t?t:{};for(var n=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=t;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),n=n&&null==o}return a="",this.isCellCollapsed(e)&&!n&&(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,t))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!n?a:null},mxGraph.prototype.getCellValidationError=function(e){var t=this.model.getDirectedEdgeCount(e,!0),n=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<t||1==s.min&&0==t||1==s.max&&1<t)?a+=s.countError+"\n":!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")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,t){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 t=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!t))return t?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 t="";if(this.labelsVisible&&null!=e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);mxUtils.getValue(n,mxConstants.STYLE_NOLABEL,!1)||(t=this.convertValueToString(e))}return t},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 t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,n,t,a){var i=null;return null!=e&&(null==e.control||n!=e.control.node&&n.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,t){null!=i||n!=t.node&&n.parentNode!=t.node||(i=t.overlay.toString())}),null==i&&(null!=(t=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof t.getTooltipForNode&&(i=t.getTooltipForNode(n))),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 t=new mxRectangle,n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&(n=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?t.height=n:t.width=n),t},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 t;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return t[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 t=this.model.getGeometry(e);return this.isCellsLocked()||null!=t&&this.model.isVertex(e)&&t.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 t=this.view.getState(e);return e=null!=t?t.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 t=this.view.getState(e);return e=null!=t?t.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 t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=t[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 t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=t[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,t){return!0},mxGraph.prototype.isCellBendable=function(e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=t[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=t[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,t,n){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,t){return this.isValidSource(e)&&this.isValidTarget(t)},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 t=this.cellEditor.getEditingCell();return null==e?null!=t:e==t},mxGraph.prototype.isAutoSizeCell=function(e){var t=this.view.getState(e);return e=null!=t?t.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,t){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,t)}))},mxGraph.prototype.isCellFoldable=function(e,t){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=n[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,t,n){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,t,n)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,t,n){return!(!this.model.isEdge(e)||null==t||1!=t.length||!this.isCellConnectable(t[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),t[0]))&&(n=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(t[0],n)&&!this.model.isAncestor(t[0],e))},mxGraph.prototype.getDropTarget=function(e,t,n){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(t),mxEvent.getClientY(t))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==n)n=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=n;)i=this.model.getParent(i);i==n&&(n=a)}for(;null!=n&&!this.isValidDropTarget(n,e,t)&&!this.model.isLayer(n);)n=this.model.getParent(n);return!this.model.isLayer(n)&&mxUtils.indexOf(e,n)<0?n: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,t,n){if(null!=(n=n||this.getDefaultParent()))for(var a=this.model.getChildCount(n),i=0;i<a;i++){var s=this.model.getChildAt(n,i),o=this.getSwimlaneAt(e,t,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,t)))return s}return null},mxGraph.prototype.getCellAt=function(e,t,n,a,i){if(a=null==a||a,i=null==i||i,null!=(n=null!=n?n:this.getDefaultParent()))for(var s=this.model.getChildCount(n)-1;0<=s;s--){var o=this.model.getChildAt(n,s),r=this.getCellAt(e,t,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,t)))return o}return null},mxGraph.prototype.intersects=function(e,t,n){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,t,n)<=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()),t=(i=mxUtils.getRotatedPoint(new mxPoint(t,n),a,i,s)).x,n=i.y),mxUtils.contains(e,t,n))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,t,n){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(t-=a.x,n-=a.y,0<e.width&&0<t&&t>e.width*i||0<e.height&&0<n&&n>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,t,n){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=t&&t,null!=n&&n),t=[],n=0;n<e.length;n++)this.isCellVisible(e[n])&&t.push(e[n]);return t},mxGraph.prototype.getConnections=function(e,t){return this.getEdges(e,t,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,t){return this.getEdges(e,t,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,t){return this.getEdges(e,t,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,t,n,a,i,s){n=null==n||n,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,n,a)))}for(o=o.concat(this.model.getEdges(e,n,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&&(n&&c==e&&(null==t||this.isValidAncestor(l,t,s))||a&&l==e&&(null==t||this.isValidAncestor(c,t,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,t,n){return n?this.model.isAncestor(t,e):this.model.getParent(e)==t},mxGraph.prototype.getOpposites=function(e,t,n,a){n=null==n||n,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==t&&null!=l&&l!=t&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==t&&null!=r&&r!=t&&n&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,t,n){n=null!=n&&n;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==t||!n&&o==t&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,t){var n=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=t?this.gridSize/2:0;return n.x=this.snap(n.x/a-i.x-s),n.y=this.snap(n.y/a-i.y-s),n},mxGraph.prototype.getCells=function(e,t,n,a,i,s){if(s=null!=s?s:[],0<n||0<a){var o=e+n,r=t+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>=t&&u.x+u.width<=o?s.push(c):this.getCells(e,t,n,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,t,n,a,i){var s=[];if((a||i)&&(null==n&&(n=this.getDefaultParent()),null!=n))for(var o=this.model.getChildCount(n),r=0;r<o;r++){var l=this.model.getChildAt(n,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=t)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,t,n){t=null!=t&&t,n=null!=n&&n;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,t?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(n&&0==m&&0<u||!n&&0==u&&0<m)&&a.push(d),r<(c=n?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,t,n,a,i){if(null!=n&&null!=e){t=null==t||t,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=n(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;t&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,t,n,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,t){var n=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(n,t),n},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,t,n){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&&!t||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&n?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(t=i.getIndex(a),e=e?(t++,this.model.getChildAt(i,t%s)):(t--,this.model.getChildAt(i,t<0?s-1:t)),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(t,n,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)&&t||this.model.isEdge(e)&&n)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,t){var n=this.isCellSelected(e);this.isToggleEvent(t)?n?this.removeSelectionCell(e):this.addSelectionCell(e):(!n||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,t){this.isToggleEvent(t)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var t=null;return null!=e&&(t=this.model.isEdge(e.cell)?(t=this.view.getEdgeStyle(e),this.isLoop(e)||t==mxEdgeStyle.ElbowConnector||t==mxEdgeStyle.SideToSide||t==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):t==mxEdgeStyle.SegmentConnector||t==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),t},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 t=0;t<this.mouseListeners.length;t++)if(this.mouseListeners[t]==e){this.mouseListeners.splice(t,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var t=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=t.x-this.panDx,e.graphY=t.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,t,n){if(null==n&&(n=this),this.updateMouseEvent(t),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-t.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-t.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(t.getEvent(),t.getCell()),t.getEvent().cancelBubble=!0):(this.lastTouchX=t.getX(),this.lastTouchY=t.getY(),this.lastTouchTime=a)}if(a=2!=t.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-t.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-t.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=t.getX(),this.lastMouseY=t.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||t.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(t.getGraphX(),t.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(n=[n,t],t.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,n):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,n):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,n)}e==mxEvent.MOUSE_UP&&this.click(t)}}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 t=e.view.graph.getModel().isEdge(e.cell),n=e.view.scale,a=null,i=this.image.width,s=this.image.height;return t?a=1==(t=e.absolutePoints).length%2?t[Math.floor(t.length/2)]:(e=t[(a=t.length/2)-1],t=t[a],new mxPoint(e.x+(t.x-e.x)/2,e.y+(t.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)*n),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*n),i*n,s*n)},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 t=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&t.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,t){!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 t=this.source.view.scale,n=new mxRectangle((n=this.source.getGraphBounds()).x/t+this.source.panDx,n.y/t+this.source.panDy,n.width/t,n.height/t),a=new mxRectangle(0,0,this.source.container.clientWidth/t,this.source.container.clientHeight/t);(s=n.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/t,s.width),t=Math.max(i.height/t,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/t))){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=(t=this.source.view.translate).x+this.source.panDx;var o=t.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),n.x<0&&(i-=n.x),n.y<0&&(o-=n.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);n=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((n.x-t.x-this.source.panDx)/o,(n.y-t.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,(n=this.selectionBorder.bounds).x==this.bounds.x&&n.y==this.bounds.y&&n.width==this.bounds.width&&n.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),n=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-n.width/2,this.bounds.y+this.bounds.height-n.height/2,n.width,n.height),n.x==a.x&&n.y==a.y&&n.width==a.width&&n.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,t){this.enabled&&this.showViewport&&(this.zoom=t.isSource(this.sizer),this.startX=t.getX(),this.startY=t.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),t.consume()},mxOutline.prototype.mouseMove=function(e,t){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var n=t.getX()-this.startX,a=t.getY()-this.startY,i=null;if(this.zoom)a=n/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+n),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+n,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),n=n/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-n-this.dx0,-a-this.dy0)}n=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-n.width/2,i.y+i.height-n.height/2,n.width,n.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),t.consume()}},mxOutline.prototype.mouseUp=function(e,t){if(this.active){var n=t.getX()-this.startX,a=t.getY()-this.startY;if(0<Math.abs(n)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-n*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),n/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-n,i.y-a));this.update(),t.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,t,n,a,i,s){var o="";return(this.source&&this.checkTerminal(e,n,t)||!this.source&&this.checkTerminal(e,a,t))&&(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,t,n,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,t,n,a){t=e.model.getValue(n),a=e.model.getValue(a),n=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){n=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,t,i[s])){n=this.validNeighborsAllowed;break}}return n},mxMultiplicity.prototype.checkTerminal=function(e,t,n){return t=e.model.getValue(t),this.checkType(e,t,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,t,n,a,i){return null!=t&&(isNaN(t.nodeType)?t==n:mxUtils.isNode(t,n,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 t=this.graph.getModel();t.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((t=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 t=this.getGraph().getModel();if(this.isBubbling())for(var n=t.getParents(e);0<n.length;)e=e.concat(n),n=t.getParents(n);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,t){if(null!=e&&null!=t)for(var n=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(t),mxEvent.getClientY(t)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],n.x,n.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var t=[],n={},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==n[o]&&(n[o]=i[s],t.push(i[s]))}}return t},mxLayoutManager.prototype.getCellsForChange=function(e){var t=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,t.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,t.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var t=this.getGraph().getModel();t.beginUpdate();try{for(var n=null,a=0;a<e.length;a++)e[a]!=t.getRoot()&&e[a]!=n&&(n=e[a],this.executeLayout(this.getLayout(n),n));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{t.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,t){null!=e&&null!=t&&e.execute(t)},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 t=this.graph.getModel();t.beginUpdate();try{for(var n=0;n<e.length;n++)if(!this.isCellIgnored(e[n])){this.cellResized(e[n]);break}}finally{t.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var t=this.getGraph(),n=t.getView(),a=t.getModel(),i=n.getState(e),s=n.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=n.translate,d=n.scale,c=(n=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+n-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,n,s,l,c,p,i,this.isExtendParents()&&t.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,t,n,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(-t,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,-n);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 t=this.getGraph(),n=t.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return t.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),n,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 t=this.graph.view.getState(e);return e=null!=t?t.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 t=this.getGraph().getModel();t.beginUpdate();try{for(var n=0;n<e.length;n++)this.isSwimlaneIgnored(e[n])||this.swimlaneAdded(e[n])}finally{t.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var t=this.getGraph().getModel(),n=t.getParent(e),a=t.getChildCount(n),i=null,s=0;s<a;s++){var o=t.getChildAt(n,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=t.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var t=this.getGraph().getModel();t.beginUpdate();try{for(var n=0;n<e.length;n++)if(!this.isSwimlaneIgnored(e[n])){var a=t.getGeometry(e[n]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[n];null!=s;){var o=s,r=(s=t.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{t.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,t,n){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!=n||!i&&r.width!=t)&&(r=r.clone(),i?r.height=n:r.width=t,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;t-=s.width,n-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,t,n)}}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,t,n,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(t,n),this.deltas[s]=o,this.count++):a?(o.X+=t,o.Y+=n):(o.X=t,o.Y=n),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var t,n=this.graph.getModel(),a=n.getRoot();for(t in this.deltas){var i=mxCellPath.resolve(a,t),s=this.graph.view.getState(i),o=this.deltas[t];i=this.graph.view.getState(n.getParent(i));this.translateState(i,s,o.x,o.y)}for(t in this.deltas)i=mxCellPath.resolve(a,t),s=this.graph.view.getState(i),o=this.deltas[t],i=this.graph.view.getState(n.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,t,n,a){if(null!=t){var i=this.graph.getModel();if(i.isVertex(t.cell)){t.invalid=!0,this.graph.view.validateBounds(e,t.cell),e=i.getGeometry(t.cell);var s=mxCellPath.create(t.cell);0==n&&0==a||null==e||e.relative&&null==this.deltas[s]||(t.x+=n,t.y+=a)}for(e=i.getChildCount(t.cell),s=0;s<e;s++)this.translateState(t,this.graph.view.getState(i.getChildAt(t.cell,s)),n,a)}},mxCellStatePreview.prototype.revalidateState=function(e,t,n,a,i){if(null!=t){t.invalid=!0,this.graph.view.validatePoints(e,t.cell);var s=mxCellPath.create(t.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(t.cell);for(0==n&&0==a||null==r||!r.relative||!o.isVertex(t.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(t.x+=n,t.y+=a,this.graph.cellRenderer.redraw(t)),null!=i&&i(t),e=o.getChildCount(t.cell),s=0;s<e;s++)this.revalidateState(t,this.graph.view.getState(o.getChildAt(t.cell,s)),n,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var t=this.graph.getModel(),n=t.getEdgeCount(e.cell),a=0;a<n;a++){var i=this.graph.view.getState(t.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,t){if(!t.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(t.getEvent())&&null!=t.getState()){var n=this.getInitialCellForEvent(t);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(n),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(n,t.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(n);this.graph.isCellMovable(n)&&(!a.isEdge(n)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(n,!0)||null==a.getTerminal(n,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(t.getEvent())&&this.graph.isCellsCloneable())&&this.start(n,t.getX(),t.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=t.getSource().nodeName?t.consume():mxClient.IS_SF&&"SELECT"==t.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),t=this.graph.getModel(),n=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&t.isVertex(e)&&null!=t.getGeometry(e)&&!t.getGeometry(e).relative});return this.graph.view.getCellStates(t.filterDescendants(n,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 t=null;if(null!=e&&0<e.length)for(var n=this.graph.getModel(),a=0;a<e.length;a++)if(n.isVertex(e[a])||n.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;n.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==t?t=new mxRectangle(s.x,s.y,s.width,s.height):t.add(s)}}return t},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,t,n){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,t,n),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 t=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/t)*t,e.y=this.graph.snap(e.y/t)*t,e},mxGraphHandler.prototype.mouseMove=function(e,t){var n=this.graph;if(!t.isConsumed()&&n.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(n.container,t.getX(),t.getY())).x-this.first.x,i=s.y-this.first.y,s=n.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=n.isGridEnabledEvent(t.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(t))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=n.getView().translate,l=n.getView().scale;o=this.bounds.x-(n.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(n.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(),n.isConstrainedEvent(t.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=t.getCell(),n.isDropEnabled()&&this.highlightEnabled&&(s=n.getDropTarget(this.cells,t.getEvent(),i)),o=s,r=n.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=n.isCloneEvent(t.getEvent())&&n.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=n.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&n.getModel().isVertex(i)&&n.isCellConnectable(i)&&(null!=(a=n.getView().getState(i))&&(n=null==n.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(n),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()}t.consume(),mxEvent.consume(t.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||t.isConsumed()||null==t.getState()||n.isMouseDown||(null==(a=n.getCursorForCell(t.getCell()))&&n.isEnabled()&&n.isCellMovable(t.getCell())&&(a=n.getModel().isEdge(t.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),t.getState().setCursor(a),t.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,t){if(!t.isConsumed()){var n=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=n.getView().scale,i=n.isCloneEvent(t.getEvent())&&n.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,t.getCell());this.connectOnDrop&&null==this.target&&null!=o&&n.getModel().isVertex(o)&&n.isCellConnectable(o)&&n.isEdgeValid(null,this.cell,o)?n.connectionHandler.connect(this.cell,o,t.getEvent()):(o=this.target,n.isSplitEnabled()&&n.isSplitTarget(o,this.cells,t.getEvent())?n.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,t.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(t)}this.cellWasClicked&&t.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,t,n){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());n=mxUtils.getRotatedPoint(n,t,a,i)}return null!=e&&!mxUtils.contains(e,n.x,n.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,t,n,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,t-this.graph.panDx/this.graph.view.scale,n-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 t=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(t)||mxEvent.isControlDown(t)&&mxEvent.isShiftDown(t)||this.usePopupTrigger&&mxEvent.isPopupTrigger(t)},mxPanningHandler.prototype.mouseDown=function(e,t){if(!t.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var n=mxUtils.convertPoint(this.graph.container,t.getX(),t.getY());this.triggerX=n.x,this.triggerY=n.y,this.popupTrigger=this.isPopupTrigger(t),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(t),this.startX=t.getX(),this.startY=t.getY(),this.panningTrigger&&this.consumePanningTrigger(t)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,t){var n=t.getX()-this.startX,a=t.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(n=this.graph.snap(n),a=this.graph.snap(a)),this.graph.panGraph(n+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",t)),t.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(n)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",t))}},mxPanningHandler.prototype.mouseUp=function(e,t){var n=Math.abs(t.getX()-this.startX),a=Math.abs(t.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){n=t.getX()-this.startX,a=t.getY()-this.startY,this.useGrid&&(n=this.graph.snap(n),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+n/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",t)),t.consume()}else this.popupTrigger&&n<this.graph.tolerance&&a<this.graph.tolerance&&(n=this.getCellForPopupEvent(t),this.graph.isEnabled()&&this.selectOnPopup&&null!=n&&!this.graph.isCellSelected(n)?this.graph.setSelectionCell(n):this.clearSelectionOnBackground&&null==n&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(t.getX()+a.x,t.getY()+a.y),this.popup(a.x+1,a.y+1,n,t.getEvent()),t.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,t){this.graph.getView().setTranslate(e,t)},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 t=null;if(this.isEnabled()){var n=null!=(t=this.getState(e))&&this.isValidState(t);e=this.getMarkerColor(e.getEvent(),t,n),this.validState=n?t:null,t==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=t&&null!=this.currentColor?(this.markedState=t,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return t},mxCellMarker.prototype.markCell=function(e,t){var n=this.graph.getView().getState(e);null!=n&&(this.currentColor=null!=t?t:this.validColor,this.markedState=n,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,t,n){return n?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var t=this.graph.getView();return cell=this.getCell(e),null!=(t=this.getStateToMark(t.getState(cell)))&&this.intersects(t,e)?t:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,t){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,t.getGraphX(),t.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,t){t.reset.apply(t)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var t=this.graph.getSelectionCells(),n=0;n<t.length;n++){var a=this.graph.view.getState(t[n]);if(null!=a){var i=e.remove(t[n]);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(t[n],i)}}e.visit(mxUtils.bind(this,function(e,t){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",t.state)),t.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,t){if(this.graph.isEnabled()&&this.isEnabled()){var n=[e,t];this.handlers.visit(function(e,t){t.mouseDown.apply(t,n)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,t){if(this.graph.isEnabled()&&this.isEnabled()){var n=[e,t];this.handlers.visit(function(e,t){t.mouseMove.apply(t,n)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,t){if(this.graph.isEnabled()&&this.isEnabled()){var n=[e,t];this.handlers.visit(function(e,t){t.mouseUp.apply(t,n)})}},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 t=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,t)}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,t){return t=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(t)?(null!=t?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,t),null!=this.error&&0==this.error.length&&(t=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(t)||(t=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),t):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,t,n){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,t){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,t,n,a){this.previous=e,this.first=new mxPoint(t,n),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,t){return this.isValidTarget(t)?this.graph.getEdgeValidationError(null,e,t):""},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 t=[],n=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);n.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(n.dialect=mxConstants.DIALECT_STRICTHTML,n.init(this.graph.container)):(n.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,n.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=n.node.previousSibling&&n.node.parentNode.insertBefore(n.node,n.node.parentNode.firstChild)),n.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=n,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(n.node,this.graph,a,i),t.push(n),this.redrawIcons(t,this.iconState),t},mxConnectionHandler.prototype.redrawIcons=function(e,t){if(null!=e&&null!=e[0]&&null!=t){var n=this.getIconPosition(e[0],t);e[0].bounds.x=n.x,e[0].bounds.y=n.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,t){var n=this.graph.getView().scale,a=t.getCenterX(),i=t.getCenterY();if(this.graph.isSwimlane(t.cell)){a=0!=(s=this.graph.getStartSize(t.cell)).width?t.x+s.width*n/2:a,i=0!=s.height?t.y+s.height*n/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(s);var s=Math.sin(s),o=new mxPoint(t.getCenterX(),t.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),n,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 t=0;t<e.length;t++)e[t].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,t){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!t.isConsumed()&&!this.isConnecting()&&this.isStartEvent(t)){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(t.getGraphX(),t.getGraphY()),this.edgeState=this.createEdgeState(t),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var n=this.graph.getPointForEvent(t.getEvent());this.edgeState.cell.geometry.setTerminalPoint(n,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),t.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=t.getX(),this.initialTouchY=t.getY();var a=this.graph.view.getState(this.marker.getCell(t));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(t,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,t){null!=t&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=t,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=t,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 t=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=t},mxConnectionHandler.prototype.convertWaypoint=function(e){var t=this.graph.getView().getScale(),n=this.graph.getView().getTranslate();e.x=e.x/t-n.x,e.y=e.y/t-n.y},mxConnectionHandler.prototype.mouseMove=function(e,t){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-t.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-t.getY())<this.tapAndHoldTolerance),t.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(t),null!=this.first){var n=this.graph.getView().scale,a=null,i=n=new mxPoint(this.graph.snap(t.getGraphX()/n)*n,this.graph.snap(t.getGraphY()/n)*n);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(t.getGraphX()+this.connectIconOffset.x,t.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,t))&&(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,t))&&(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(n.x-this.first.x),o=Math.abs(n.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(t)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(n=[s],null!=this.waypoints&&(n=n.concat(this.waypoints)),n.push(i),this.shape.points=n),this.drawPreview()),mxEvent.consume(t.getEvent()),t.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),t.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&t.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(n=!1,s=t.getSource(),i=0;i<this.icons.length&&!n;i++)n=s==this.icons[i].node||s.parentNode==this.icons[i].node;n||this.updateIcons(this.currentState,this.icons,t)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,t){var n=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))&&(n=i)}else n=new mxPoint(e.getCenterX(),e.getCenterY());return n},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,t,n){n=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&&(t=mxUtils.getRotatedPoint(new mxPoint(t.x,t.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,t,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),n=e)}else n=s;return n},mxConnectionHandler.prototype.updateIcons=function(e,t,n){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var t=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),n=Math.abs(t.x-this.first.x);t=Math.abs(t.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(n>this.graph.tolerance||t>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),n=this.graph.view.scale,t=new mxPoint(this.graph.snap(e.getGraphX()/n)*n,this.graph.snap(e.getGraphY()/n)*n),this.waypoints.push(t))},mxConnectionHandler.prototype.mouseUp=function(e,t){if(!t.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(t))return this.addWaypointForEvent(t),void t.consume();if(null==this.error){var n=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(n,a,t.getEvent(),t.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),t.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,t,n,a){if(null!=t||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==t&&this.isCreateTarget()&&null!=(t=this.createTargetVertex(n,e))){if(null!=(a=this.graph.getDropTarget([t],n,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(t);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(t,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=t&&i.getParent(e)==i.getParent(t)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=t.geometry&&t.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,t,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,t,!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==t&&((u=this.graph.getPointForEvent(n,!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",n,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,t)}},mxConnectionHandler.prototype.selectCells=function(e,t){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,t,n,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,t,n,a,i,s):(t=this.createEdge(n,a,i,s),this.graph.addEdge(t,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,t){for(var n=this.graph.getCellGeometry(t);null!=n&&n.relative;)t=this.graph.getModel().getParent(t),n=this.graph.getCellGeometry(t);var a=this.graph.cloneCells([t])[0];if(null!=(n=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(n.x=this.graph.snap(i.x-n.width/2)-this.graph.panDx/this.graph.view.scale,n.y=this.graph.snap(i.y-n.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(t);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?n.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(n.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,t,n,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(t,n,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,t,n){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,t){return!1},mxConstraintHandler.prototype.update=function(e,t){if(this.isEnabled()&&!this.isEventIgnored(e)){var n=this.getTolerance(),a=new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n),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(),t):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(n)}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],(n=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(n.width-=1,n.height-=1),null==this.focusHighlight?((n=new mxRectangleShape(n,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,n.init(this.graph.getView().getOverlayPane()),this.focusHighlight=n,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(n.node,this.graph,r)):(this.focusHighlight.bounds=n,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,t){if(!t.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(t.getEvent())||null==t.getState())){var n=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=n.x,a.y-=n.y,this.start(t.getX()+a.x,t.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 t=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=t.x,e.graphY=t.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)}t.consume(!1)}},mxRubberband.prototype.start=function(e,t){this.first=new mxPoint(e,t)},mxRubberband.prototype.mouseMove=function(e,t){if(!t.isConsumed()&&null!=this.first){var n=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);n.x-=a.x,n.y-=a.y;a=t.getX()+n.x,n=t.getY()+n.y;var i=this.first.x-a,s=this.first.y-n,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,n),t.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,t){var n=null!=this.div;this.reset(),n&&(n=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(n,t.getEvent()),t.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,t){this.currentX=e,this.currentY=t,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,t=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,t),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,t)-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 t=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",t++)),this.sizers.push(this.createSizer("n-resize",t++)),this.sizers.push(this.createSizer("ne-resize",t++)),this.sizers.push(this.createSizer("w-resize",t++)),this.sizers.push(this.createSizer("e-resize",t++)),this.sizers.push(this.createSizer("sw-resize",t++)),this.sizers.push(this.createSizer("s-resize",t++))),this.sizers.push(this.createSizer("se-resize",t++))),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,t,n,a){return n=new mxRectangle(0,0,n=n||mxConstants.HANDLE_SIZE,n),(a=this.createSizerShape(n,t,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(t)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,t,n){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):t==mxEvent.ROTATION_HANDLE?new mxEllipse(e,n||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,n||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,t,n){null!=e&&(e.bounds.x=Math.round(t-e.bounds.width/2),e.bounds.y=Math.round(n-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 t=this.tolerance,n=(t=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<t)?new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t):null,0);n<this.sizers.length;n++)if(e.isSource(this.sizers[n])||null!=t&&mxUtils.intersects(this.sizers[n].bounds,t))return n;return null},mxVertexHandler.prototype.mouseDown=function(e,t){if(!t.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(t.getEvent())&&(0<this.tolerance||t.getState()==this.state)){var n=this.getHandleForEvent(t);null!=n&&(this.start(t.getX(),t.getY(),n),t.consume())}},mxVertexHandler.prototype.start=function(e,t,n){e=mxUtils.convertPoint(this.graph.container,e,t),this.startX=e.x,this.startY=e.y,this.index=n,this.selectionBorder.node.style.display=n==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,t){if(t.isConsumed()||null==this.index)null!=this.getHandleForEvent(t)&&t.consume(!1);else{var n=new mxPoint(t.getGraphX(),t.getGraphY()),a=this.graph.isGridEnabledEvent(t.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(n.x=this.graph.snap(n.x/i)*i,n.y=this.graph.snap(n.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],n.x,n.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-n.x,o=this.state.y+this.state.height/2-n.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=n.x-this.state.getCenterX(),o=n.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=n.x-this.startX,o=n.y-this.startY,n=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,n),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()}t.consume()}},mxVertexHandler.prototype.mouseUp=function(e,t){if(!t.isConsumed()&&null!=this.index&&null!=this.state){var n=new mxPoint(t.getGraphX(),t.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(t.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(n=o*(r=n.x-this.startX)+s*(l=n.y-this.startY),s*r-o*l),l=n,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),t.consume()}},mxVertexHandler.prototype.rotateCell=function(e,t){var n=this.graph.getModel();if(n.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)+t,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=t){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(t),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,n.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,n.setGeometry(e,s);for(s=n.getChildCount(e),a=0;a<s;a++)this.rotateCell(n.getChildAt(e,a),t)}},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,t,n,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,t=(this.labelShape.bounds.getCenterX()-this.startX)/a,n=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(t,n):(s.offset.x+=t,s.offset.y+=n),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,t,n,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){t=a.getCenterX()-s.getCenterX(),n=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*t-o*n-t;t=o*t+i*n-n,n=a.x-s.x;var l=a.y-s.y,d=i*n-o*l;i=o*n+i*l,a.x+=r,a.y+=t,this.graph.isCellCollapsed(e)||0==r&&0==t||(n=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,n,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,t,n){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+=t,r.y+=n,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,t,n,a,i,s,o){if(this.singleSizer){o=e.x+e.width+t;var r=e.y+e.height+n;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+=n,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=n,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=t,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=t,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 t=e.x+e.width,n=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],t,n);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=t,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=t,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=n,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=n,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=t,l.y=n,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 t=this.state.cell;if(null!=this.index){var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));t=this.graph.getCellAt(n.x,n.y);this.graph.isSwimlane(t)&&this.graph.hitsSwimlaneContent(t,n.x,n.y)&&(t=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(t)))}),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 t=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(t))return null;var n=a.graph.getModel();return(t==a.state.cell||null!=t&&!a.graph.connectableEdges&&n.isEdge(t))&&(t=null),t},e.isValidState=function(e){var t=a.graph.getModel();t=null!=(t=a.graph.view.getTerminalPort(e,a.graph.view.getState(t.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?t.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:t,a.isSource?t:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,t){return this.graph.getEdgeValidationError(this.state.cell,e,t)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,t=[],n=0;n<this.abspoints.length;n++)if(this.isHandleVisible(n)){var a=n==this.abspoints.length-1;if((a=0==n||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(n);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(n))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);t.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return t},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 t=this.tolerance,n=(t=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<t)?new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t):null,0);n<this.bends.length;n++)if((e.isSource(this.bends[n])||null!=t&&mxUtils.intersects(this.bends[n].bounds,t))&&"hidden"!=this.bends[n].node.style.visibility)return n;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,t){var n=null;null!=(n=this.getHandleForEvent(t))&&!t.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(t.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(t.getEvent())?this.removePoint(this.state,n):(n!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(t.getCell()))&&this.start(t.getX(),t.getY(),n),t.consume())},mxEdgeHandler.prototype.start=function(e,t,n){this.startX=e,this.startY=t,this.isSource=null!=this.bends&&0==n,this.isTarget=null!=this.bends&&n==this.bends.length-1,this.isLabel=n==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(t=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=t&&this.graph.isCellDisconnectable(e,t,this.isSource))&&(this.index=n)):this.index=n},mxEdgeHandler.prototype.clonePreviewState=function(e,t){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var n=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),t=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var t=e.x;Math.abs(n.x-t)<a&&(n.x=t,i=!0),e=e.y,Math.abs(n.y-e)<a&&(n.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(t.getRoutingCenterX(e),t.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=t.scale,r=t.translate,i||(n.x=(this.graph.snap(n.x/e-r.x)+r.x)*e),s||(n.y=(this.graph.snap(n.y/e-r.y)+r.y)*e)),n},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var t=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?t=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(t=this.constraintHandler.currentFocus),t},mxEdgeHandler.prototype.getPreviewPoints=function(e){var t=null!=(t=this.graph.getCellGeometry(this.state.cell)).points?t.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(t=null):(this.convertPoint(e,!1),null==t?t=[e]:t[this.index-1]=e),t},mxEdgeHandler.prototype.updatePreviewState=function(e,t,n){var a=this.isSource?n:this.state.getVisibleTerminalState(!0),i=this.isTarget?n: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==n&&(e.setAbsoluteTerminalPoint(t,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,t){if(null!=this.index&&null!=this.marker){var n=this.getPointForEvent(t);if(this.isLabel)this.label.x=n.x,this.label.y=n.y;else{this.points=this.getPreviewPoints(n);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(t):null,i=this.clonePreviewState(n,null!=a?a.cell:null);this.updatePreviewState(i,n,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(t.getEvent()),t.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(t)&&t.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,t){if(null!=this.index&&null!=this.marker){var n=this.state.cell;if(t.getX()!=this.startX||t.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)n=this.connect(n,a,this.isSource,this.graph.isCloneEvent(t.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),t);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(n));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(n,a,this.isSource)}}else this.active?this.changePoints(n,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),n!=this.state.cell&&this.graph.setSelectionCell(n)),t.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,t){var n=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return t&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/n-a.x),e.y=Math.round(e.y/n-a.y),null!=(n=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=n.origin.x,e.y-=n.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,t,n){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,t,n);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((t-s.x)/o,(n-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,t,n,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,!n);this.graph.connectCell(o,r,!n),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,t,n,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,t,n){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(t,n),a.setGeometry(e,i),this.graph.connectCell(e,null,n,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,t){var n=this.graph.getModel(),a=n.getGeometry(e);null!=a&&((a=a.clone()).points=t,n.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,t){var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),a=this.graph.isGridEnabledEvent(t);this.convertPoint(n,a),this.addPointAt(e,n.x,n.y),mxEvent.consume(t)},mxEdgeHandler.prototype.addPointAt=function(e,t,n){var a=this.graph.getCellGeometry(e.cell);if(t=new mxPoint(t,n),null!=a){a=a.clone(),n=this.graph.view.translate;var i=this.graph.view.scale;n=mxUtils.findNearestSegment(e,(t.x+n.x)*i,(t.y+n.y)*i),null==a.points?a.points=[t]:a.points.splice(n,0,t),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,t){if(0<t&&t<this.abspoints.length-1){var n=this.graph.getCellGeometry(this.state.cell);null!=n&&null!=n.points&&((n=n.clone()).points.splice(t-1,1),this.graph.getModel().setGeometry(e.cell,n),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var t=this.state.cell,n=this.graph.getModel().getTerminal(t,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=n&&!this.graph.isCellDisconnectable(t,n,e)||null==n&&!this.graph.isTerminalPointMovable(t,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=n&&this.graph.isCellDisconnectable(t,n,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,t=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-t/2),Math.round(this.label.y-t/2),t,t),this.labelShape.redraw(),null!=(t=this.graph.getLabel(e))&&0<t.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 n=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);t=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-t.width/2),Math.round(a-t.height/2),t.width,t.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[n];var i=this.abspoints[n].x,s=(n=this.abspoints[n].y,this.bends.length-1);t=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-t.width/2),Math.round(n-t.height/2),t.width,t.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,t){var n=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=n){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]=n[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=[],t=this.createHandleShape(0);return this.initBend(t),t.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(t.node,this.graph,this.state),e.push(t),mxClient.IS_TOUCH&&t.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),t=this.createHandleShape(2),this.initBend(t),t.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(t.node,this.graph,this.state),e.push(t),mxClient.IS_TOUCH&&t.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var t=this.getCursorForBend();return e.node.style.cursor=t,t=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,t),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 t=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(t=this.doubleClickOrientationResource,t=mxResources.get(t)||t),t},mxElbowEdgeHandler.prototype.convertPoint=function(e,t){var n=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;t&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/n-a.x-i.x),e.y=Math.round(e.y/n-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,t){var n=null==(n=null!=(n=this.graph.getModel().getGeometry(this.state.cell).points)?n[0]:null)?new mxPoint(e.x+(t.x-e.x)/2,e.y+(t.y-e.y)/2):new mxPoint(this.graph.getView().scale*(n.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(n.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(n.x-a/2),Math.round(n.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(n.x-a/2),Math.round(n.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 t=this.state.absolutePoints,n=t[0].clone();this.convertPoint(n,!1);for(var a=[],i=1;i<t.length;i++){var s=t[i].clone();this.convertPoint(s,!1),i==this.index&&(n.x==s.x?(n.x=e.x,s.x=e.x):(n.y=e.y,s.y=e.y)),i<t.length-1&&a.push(s),n=s}if(1==a.length){if(n=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)?t[1].y==t[2].y?a[0].y=n.getRoutingCenterY(i)-r:a[0].x=n.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(t[1].y==t[0].y?a[0].y=n.getRoutingCenterY(s)-r:a[0].x=n.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],t=this.createHandleShape(0);this.initBend(t),t.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(t.node,this.graph,this.state),e.push(t),mxClient.IS_TOUCH&&t.node.setAttribute("pointer-events","none");var n=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<n.length-1;a++)t=this.createVirtualBend(),e.push(t),t.node.style.cursor=0==n[a].x-n[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&t.node.setAttribute("pointer-events","none")}return t=this.createHandleShape(n.length),this.initBend(t),t.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(t.node,this.graph,this.state),e.push(t),mxClient.IS_TOUCH&&t.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,t){if(this.graph.isCellBendable(this.state.cell)){var n=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],t=a[i+1];var s=new mxPoint(e.x+(t.x-e.x)/2,e.y+(t.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-n/2),Math.round(s.y-n/2),n,n),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,t){t=[];var n=this.abspoints;if(1<n.length)for(var a=n[0],i=n[1],s=2;s<n.length;s++){var o=n[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),t.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,t){this.normalKeys[e]=t},mxKeyHandler.prototype.bindShiftKey=function(e,t){this.shiftKeys[e]=t},mxKeyHandler.prototype.bindControlKey=function(e,t){this.controlKeys[e]=t},mxKeyHandler.prototype.bindControlShiftKey=function(e,t){this.controlShiftKeys[e]=t},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 t=this.getFunction(e);null!=t&&(t(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,t){this.reset(t,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,t){t.getX()==this.lastX&&t.getY()==this.lastY||(this.reset(t,!0),(this.isHideOnHover()||t.getState()!=this.state||t.getSource()!=this.node&&(!this.stateSource||null!=t.getState()&&this.stateSource==(t.isSource(t.getState().shape)||!t.isSource(t.getState().text))))&&this.hideTooltip()),this.lastX=t.getX(),this.lastY=t.getY()},mxTooltipHandler.prototype.mouseUp=function(e,t){this.reset(t,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,t){if(this.resetTimer(),t&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var n=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(n.shape)||e.isSource(n.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(n,a,i,s);this.show(e,i,s),this.state=n,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,t,n){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=t+a.x+"px",this.div.style.top=n+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,t){},mxCellTracker.prototype.mouseMove=function(e,t){this.isEnabled()&&this.process(t)},mxCellTracker.prototype.mouseUp=function(e,t){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,t,n){var a=mxUtils.bind(this,function(){this.editor.execute(t)});n?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,t,n,a){if(null!=this.config){var i=this.createConditions(e,n,a);this.addItems(e,t,n,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,t,n,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&&(t.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(t,e,l,m,d,c,n,o,u),this.addItems(e,t,n,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,t,n,a,i,s,o,r,l){return e.addItem(n,a,function(e){"function"==typeof i&&i.call(t,t,o,e),null!=s&&t.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,t,n){var a=e.graph.getModel(),i=a.getChildCount(t),s=[];for(s.nocell=null==t,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=t,a=null!=t&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(t,!1),s.collapsable=a&&e.graph.isCellFoldable(t,!0),s.validRoot=a&&e.graph.isValidRoot(t),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(t),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,t,n))}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,t){var n=t.getProperty("function");this.editor.insertFunction=null!=n?mxUtils.bind(this,function(){n.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,t,n,a){var i=mxUtils.bind(this,function(){null!=n&&0<n.length&&this.editor.execute(n)});return this.toolbar.addItem(e,t,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,t,n){var a=mxUtils.bind(this,function(){this.editor.execute(n)});this.addOption(e,t,a)},mxDefaultToolbar.prototype.addOption=function(e,t,n){return this.toolbar.addOption(e,t,n)},mxDefaultToolbar.prototype.addMode=function(e,t,n,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(n),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,t,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,t,n,a,i,s){var o=function(){return"function"==typeof n?n():null!=n?n.clone():null},r=mxUtils.bind(this,function(e,t){"function"==typeof i?i(this.editor,o(),e,t):this.drop(o(),e,t),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,t,r,a,null,s),this.installDropHandler(e,function(e,t,n){r(t,n)}),e},mxDefaultToolbar.prototype.drop=function(e,t,n){var a=this.editor.graph,i=a.getModel();if(null!=n&&!i.isEdge(n)&&this.connectOnDrop&&a.isCellConnectable(n))this.connect(e,t,n);else{for(;null!=n&&!a.isValidDropTarget(n,[e],t);)n=i.getParent(n);this.insert(e,t,n)}},mxDefaultToolbar.prototype.insert=function(e,t,n){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(t),s=mxEvent.getClientY(t);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(n,[e],t)?a.splitEdge(n,[e],null,i.x,i.y):this.editor.addVertex(n,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,t,n){var a=(t=this.editor.graph).getModel();if(null!=n&&t.isCellConnectable(e)&&t.isEdgeValid(null,n,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(n),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*t.gridSize,l=20*a.getDirectedEdgeCount(n,!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(n);if(t.addCell(e,d),t.constrainChild(e),i=this.editor.createEdge(n,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}t.addEdge(i,d,n,e)}finally{a.endUpdate()}t.setSelectionCells([e,i]),t.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(t,n){var a=document.createElement("img");a.setAttribute("src",t.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*t.offsetWidth+"px",a.style.height=2*t.offsetHeight+"px",mxUtils.makeDraggable(t,this.editor.graph,n,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 t=e.getUrlImage();if(null==t||mxClient.IS_LOCAL)e.execute("show");else{var n=mxUtils.getViewXml(e.graph,1);n=mxUtils.getXml(n,"\n");mxUtils.submit(t,e.postParameterName+"="+encodeURIComponent(n),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,t){e.showProperties(t)}),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,t){e.graph.isEnabled()&&e.graph.isCellEditable(t)&&e.graph.startEditingAtCell(t)}),this.addAction("toBack",function(e,t){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,t){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,t){e.graph.enterGroup(t)}),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 t=e.graph.getChildVertices();e.graph.foldCells(!0,!1,t)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var t=e.graph.getChildVertices();e.graph.foldCells(!1,!1,t)}}),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 t=100*e.graph.getView().scale;t=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,t))/100;isNaN(t)||e.graph.getView().setScale(t)}),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,t){this.actions[e]=t},mxEditor.prototype.execute=function(t,e,n){var a=this.actions[t];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+t+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+t,280,!0)},mxEditor.prototype.addTemplate=function(e,t){this.templates[e]=t},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,t,n){return this.createPopupMenu(e,t,n)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,t){return this.createEdge(e,t)}),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 t=null,n=i.graph.getModel();return null!=n.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),t=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==n.getParent(n.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),t=i.diagramLayout)),t},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,t){var n=t.getProperty("cell");null!=n&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,n),t.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,t){var n=t.getProperty("edit");this.undoManager.undoableEditHappened(n)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,t){var n=t.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(n))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var t=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,t),e.getView().addListener(mxEvent.UP,t)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,t){this.setModified(!0),1==this.validating&&s.validateGraph();for(var n=t.getProperty("edit").changes,a=0;a<n.length;a++){var i=n[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 n=this;e.addMouseListener({mouseDown:function(e,t){null==n.insertFunction||t.isPopupTrigger()||!n.forcedInserting&&null!=t.getState()||(n.graph.clearSelection(),n.insertFunction(t.getEvent(),t.getCell()),this.isActive=!0,t.consume())},mouseMove:function(e,t){this.isActive&&t.consume()},mouseUp:function(e,t){this.isActive&&(this.isActive=!1,t.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,t=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return t.isVertexIgnored=function(e){return!t.graph.isSwimlane(e)},t},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(t){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){t.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(t)},mxEditor.prototype.treeLayout=function(e,t){null!=e&&new mxCompactTreeLayout(this.graph,t).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",t=this.graph,n=t.getCurrentRoot();null!=n&&null!=t.getModel().getParent(t.getModel().getParent(n));)t.isValidRoot(n)&&(e=" > "+t.convertValueToString(n)+e),n=t.getModel().getParent(n);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 t=mxUtils.load(e).getXml();this.readGraphModel(t.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,t){if(null!=(e=e||this.getUrlPost())&&0<e.length){var n=this.writeGraphModel(t);this.postDiagram(e,n),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(t,n){this.escapePostData&&(n=encodeURIComponent(n)),mxUtils.post(t,this.postParameterName+"="+n,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",t,"data",n))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var t=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(t,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,t,n,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,t,n)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,t){null!=t.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,t){var n=this.graph.getStylesheet().styles[t];this.graph.getView().getStylesheet().putCellStyle(t,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,n),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 t=(n=mxUtils.getOffset(this.graph.container)).x+10,n=n.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(t+=a.x+Math.min(200,a.width),n+=a.y)}else t=this.properties.getX(),n=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,t,n,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(n){var a=this.graph.getModel(),e=a.getValue(n);if(mxUtils.isNode(e)){var t=new mxForm("properties");t.addText("ID",n.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(n)&&(null!=(i=a.getGeometry(n))&&(s=t.addText("top",i.y),o=t.addText("left",i.x),r=t.addText("width",i.width),l=t.addText("height",i.height)));var d=a.getStyle(n),c=t.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=t.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(n,i)),0<c.value.length?a.setStyle(n,c.value):a.setStyle(n,null);for(var e=0;e<m.length;e++){var t=new mxCellAttributeChange(n,m[e].nodeName,u[e].value);a.execute(t)}this.graph.isAutoSizeCell(n)&&this.graph.updateCellSize(n)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),t.addButtons(e,d),t.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 t=document.createElement("div");t.style.padding="4px",t.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,t,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var n=mxUtils.bind(this,function(e){mxEvent.release(t),t.innerHTML="",this.createTasks(t)});this.graph.getModel().addListener(mxEvent.CHANGE,n),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,n),this.graph.addListener(mxEvent.ROOT,n),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(t)}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 t=document.createElement("iframe");t.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),t.setAttribute("height","100%"),t.setAttribute("width","100%"),t.setAttribute("frameBorder","0"),t.style.backgroundColor="white",e=document.body.clientWidth;var n=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,t,(e-this.helpWidth)/2,(n-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){t.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 t=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),n=new mxOutline(this.graph,e);t.setClosable(!0),t.setResizable(!0),t.destroyOnClose=!1,t.addListener(mxEvent.RESIZE_END,function(){n.update()}),this.outline=t,this.outline.outline=n}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,t,n){this.popupHandler.createMenu(this,e,t,n)},mxEditor.prototype.createEdge=function(e,t){var n=null;if(null!=this.defaultEdge)n=this.graph.getModel().cloneCell(this.defaultEdge);else{(n=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,n.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&n.setStyle(a),n},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 t=this.consumeCycleAttribute(e);null!=t&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+t)}},mxEditor.prototype.addVertex=function(e,t,n,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(n,a);var s=this.graph.getView().scale,o=i.getGeometry(t),r=i.getGeometry(e);if(this.graph.isSwimlane(t)&&!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(n-=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<n+r&&(n-=n+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(n-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(n/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),t.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(t),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",t,"parent",e)),i.beginUpdate();try{null!=(t=this.graph.addCell(t,e))&&(this.graph.constrainChild(t),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",t)))}finally{i.endUpdate()}return null!=t&&(this.graph.setSelectionCell(t),this.graph.scrollCellToVisible(t),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",t))),t},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 t=e.getName();mxCodecRegistry.codecs[t]=e;var n=mxUtils.getFunctionName(e.template.constructor);n!=t&&mxCodecRegistry.addAlias(n,t)}return e},addAlias:function(e,t){mxCodecRegistry.aliases[e]=t},getCodec:function(e){var t=null;if(null!=e){t=mxUtils.getFunctionName(e);var n=mxCodecRegistry.aliases[t];if(null!=n&&(t=n),null==(t=mxCodecRegistry.codecs[t]))try{t=new mxObjectCodec(new e),mxCodecRegistry.register(t)}catch(e){}}return t}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,t,n,a){for(var i in this.template=e,this.exclude=null!=t?t:[],this.idrefs=null!=n?n:[],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,t){return this.objects[e]=t},mxCodec.prototype.getObject=function(e){var t=null;return null!=e&&(null==(t=this.objects[e])&&(null==(t=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(t=this.decode(e))))),t},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,t){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=t?t:"id",e)},mxCodec.prototype.getId=function(e){var t=null;return null!=e&&(null==(t=this.reference(e))&&e instanceof mxCell&&(null==(t=e.getId())&&(0==(t=mxCellPath.create(e)).length&&(t="root")))),t},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var t=null;if(null!=e&&null!=e.constructor){var n=mxCodecRegistry.getCodec(e.constructor);null!=n?t=n.encode(this,e):mxUtils.isNode(e)?t=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return t},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,t,n){if(t.appendChild(this.encode(e)),null==n||n){n=e.getChildCount();for(var a=0;a<n;a++)this.encodeCell(e.getChildAt(a),t)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,t){t=null==t||t;var n=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(n=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(n))for(var a=e.firstChild;null!=a&&!this.isCellCodec(n);)n=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(n)||(n=mxCodecRegistry.getCodec(mxCell)),n=n.decode(this,e),t&&this.insertIntoGraph(n)}return n},mxCodec.prototype.insertIntoGraph=function(e){var t=e.parent,n=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=t&&t.insert(e),null!=n&&n.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,t,n){null!=t&&null!=n&&e.setAttribute(t,n)},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 t=this.reverse[e];null!=t&&(e=t)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var t=this.mapping[e];null!=t&&(e=t)}return e},mxObjectCodec.prototype.isExcluded=function(e,t,n,a){return t==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,t)},mxObjectCodec.prototype.isReference=function(e,t,n,a){return 0<=mxUtils.indexOf(this.idrefs,t)},mxObjectCodec.prototype.encode=function(e,t){var n=e.document.createElement(this.getName());return t=this.beforeEncode(e,t,n),this.encodeObject(e,t,n),this.afterEncode(e,t,n)},mxObjectCodec.prototype.encodeObject=function(e,t,n){for(var a in e.setAttribute(n,"id",e.getId(t)),t){var i=a,s=t[i];null!=s&&!this.isExcluded(t,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,t,i,s,n))}},mxObjectCodec.prototype.encodeValue=function(e,t,n,a,i){if(null!=a){if(this.isReference(t,n,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+n+"="+a);a=s}s=this.template[n],(null==n||e.encodeDefaults||s!=a)&&(n=this.getAttributeName(n),this.writeAttribute(e,t,n,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,t,n,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,t,n,a,i):this.writeComplexAttribute(e,t,n,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,t,n,a,i){a=this.convertValueToXml(a),null==n?(t=e.document.createElement("add"),"function"==typeof a?t.appendChild(e.document.createTextNode(a)):e.setAttribute(t,"value",a),i.appendChild(t)):"function"!=typeof a&&e.setAttribute(i,n,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,t,n,a,i){null!=(e=e.encode(a))?(null!=n&&e.setAttribute("as",n),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+n+": "+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,t,n){return t},mxObjectCodec.prototype.afterEncode=function(e,t,n){return n},mxObjectCodec.prototype.decode=function(e,t,n){var a=t.getAttribute("id"),i=e.objects[a];return null==i&&(i=n||this.cloneTemplate(),null!=a&&e.putObject(a,i)),t=this.beforeDecode(e,t,i),this.decodeNode(e,t,i),this.afterDecode(e,t,i)},mxObjectCodec.prototype.decodeNode=function(e,t,n){null!=t&&(this.decodeAttributes(e,t,n),this.decodeChildren(e,t,n))},mxObjectCodec.prototype.decodeAttributes=function(e,t,n){if(null!=(t=t.attributes))for(var a=0;a<t.length;a++)this.decodeAttribute(e,t[a],n)},mxObjectCodec.prototype.decodeAttribute=function(e,t,n){var a=t.nodeName;if("as"!=a&&"id"!=a){t="value"==a?t.nodeValue:this.convertValueFromXml(t.nodeValue);var i=this.getFieldName(a);if(this.isReference(n,i,t,!1)){if(null==(e=e.getObject(t)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+t);t=e}this.isExcluded(n,a,t,!1)||(n[a]=t)}},mxObjectCodec.prototype.decodeChildren=function(e,t,n){for(t=t.firstChild;null!=t;){var a=t.nextSibling;t.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,t,n)&&this.decodeChild(e,t,n),t=a}},mxObjectCodec.prototype.decodeChild=function(e,t,n){var a=this.getFieldName(t.getAttribute("as"));if(null==a||!this.isExcluded(n,a,t,!1)){var i=this.getFieldTemplate(n,a,t),s=null;"add"==t.nodeName?null==(s=t.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(t))):s=e.decode(t,i),this.addObjectValue(n,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,t,n){return(e=e[t])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,t,n,a){null!=n&&n!=a&&(null!=t&&0<t.length?e[t]=n:e.push(n))},mxObjectCodec.prototype.processInclude=function(e,t,n){if("include"!=t.nodeName)return!1;if(null!=(t=t.getAttribute("name")))try{var a=mxUtils.load(t).getDocumentElement();null!=a&&e.decode(a,n)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,t,n){return t},mxObjectCodec.prototype.afterDecode=function(e,t,n){return n},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,t,n,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==t&&n.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,t,n){if(null!=t.value&&t.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=n;(n=mxClient.IS_IE?t.value.cloneNode(!0):e.document.importNode(t.value,!0)).appendChild(a),e=a.getAttribute("id"),n.setAttribute("id",e),a.removeAttribute("id")}return n},e.beforeDecode=function(e,t,n){var a=t,i=this.getName();if(t.nodeName!=i?(null!=(a=t.getElementsByTagName(i)[0])&&a.parentNode==t?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,n.value=t.cloneNode(!0),null!=(t=n.value.getAttribute("id"))&&(n.setId(t),n.value.removeAttribute("id"))):n.setId(t.getAttribute("id")),null!=a)for(t=0;t<this.idrefs.length;t++){i=this.idrefs[t];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))),n[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,t,n){var a=e.document.createElement("root");e.encodeCell(t.getRoot(),a),n.appendChild(a)},e.decodeChild=function(e,t,n){"root"==t.nodeName?this.decodeRoot(e,t,n):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,t,n){var a=null;for(t=t.firstChild;null!=t;){var i=e.decodeCell(t);null!=i&&null==i.getParent()&&(a=i),t=t.nextSibling}null!=a&&n.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,t,n){return e.encodeCell(t.root,n),n},e.beforeDecode=function(e,t,n){if(null!=t.firstChild&&t.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(t=t.cloneNode(!0)).firstChild;for(n.root=e.decodeCell(a,!1),n=a.nextSibling,a.parentNode.removeChild(a),a=n;null!=a;)n=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=n}return t},e.afterDecode=function(e,t,n){return n.previous=n.root,n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,t,n,a){return!("child"!=t||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,t)},e.afterEncode=function(e,t,n){return this.isReference(t,"child",t.child,!0)?n.setAttribute("child",e.getId(t.child)):e.encodeCell(t.child,n),n},e.beforeDecode=function(e,t,n){if(null!=t.firstChild&&t.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(t=t.cloneNode(!0)).firstChild;for(n.child=e.decodeCell(a,!1),n=a.nextSibling,a.parentNode.removeChild(a),a=n;null!=a;){if(n=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=n}}else a=t.getAttribute("child"),n.child=e.getObject(a);return t},e.afterDecode=function(e,t,n){return n.child.parent=n.previous,n.previous=n.parent,n.previousIndex=n.index,n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,t,n){return n.previous=n.terminal,n},e}());var mxGenericChangeCodec=function(e,a){var t=new mxObjectCodec(e,["model","previous"],["cell"]);return t.afterDecode=function(e,t,n){return mxUtils.isNode(n.cell)&&(n.cell=e.decodeCell(n.cell,!1)),n.previous=n[a],n},t};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,t){return this.encodeCell(e,t,t.graph.getModel().getRoot())},e.encodeCell=function(e,t,n){var a=t.graph.getModel(),i=t.getState(n),s=a.getParent(n);if(null==s||null!=i){var o=a.getChildCount(n),r=t.graph.getCellGeometry(n),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(n)?l="edge":0<o&&null!=r?l="group":a.isVertex(n)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=t.graph.getLabel(n)&&(d.setAttribute("label",t.graph.getLabel(n)),t.graph.isHtmlLabel(n)&&d.setAttribute("html",!0)),null==s){var c=t.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",t.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,t,a.getChildAt(n,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,t){var n,a=e.document.createElement(this.getName());for(n in t.styles){var i=t.styles[n],s=e.document.createElement("add");if(null!=n){for(var o in s.setAttribute("as",n),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,t){var n=typeof t;return"function"==n?t=mxStyleRegistry.getName(style[j]):"object"==n&&(t=null),t},e.decode=function(e,t,n){n=n||new this.template.constructor;var a=t.getAttribute("id");for(null!=a&&(e.objects[a]=n),t=t.firstChild;null!=t;){if(!this.processInclude(e,t,n)&&"add"==t.nodeName&&null!=(a=t.getAttribute("as"))){var i=t.getAttribute("extend"),s=null!=i?mxUtils.clone(n.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=t.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}n.putCellStyle(a,s)}t=t.nextSibling}return n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,t){return null},e.decode=function(e,t,n){if(null!=n)for(t=t.firstChild;null!=t;){if(!this.processInclude(e,t,n)&&"add"==t.nodeName){var a=t.getAttribute("as"),i=t.getAttribute("action"),s=t.getAttribute("control");n.bindAction(a,i,s)}t=t.nextSibling}return n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,t){return null},e.decode=function(e,t,n){if(null!=n){var a=n.editor;for(t=t.firstChild;null!=t;){if(t.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,t,n))if("separator"==t.nodeName)n.addSeparator();else if("br"==t.nodeName)n.toolbar.addBreak();else if("hr"==t.nodeName)n.toolbar.addLine();else if("add"==t.nodeName){var i=t.getAttribute("as"),s=(i=mxResources.get(i)||i,t.getAttribute("icon")),o=t.getAttribute("pressedIcon"),r=t.getAttribute("action"),l=t.getAttribute("mode"),d=t.getAttribute("template"),c="0"!=t.getAttribute("toggle"),m=mxUtils.getTextContent(t),u=null;if(null!=r)u=n.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=n.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=t.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=n.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(t)).length)if(null==s)for(d=n.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?n.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),n.addActionOption(d,s,c));else{var g=null,v=n.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),t=g.options[g.selectedIndex].cellStyle;return null!=t&&e.setStyle(t),e},null,null,c);g=n.addCombo();for(mxEvent.addListener(g,"change",function(){n.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)}),n.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?n.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),n.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=t.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}t=t.nextSibling}}return n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,t){return null},e.decode=function(e,t,n){var a=t.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,n):null!=n&&(n.config=t),n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,t,n){return null!=(e=t.getAttribute("defaultEdge"))&&(t.removeAttribute("defaultEdge"),n.defaultEdge=n.templates[e]),null!=(e=t.getAttribute("defaultGroup"))&&(t.removeAttribute("defaultGroup"),n.defaultGroup=n.templates[e]),n},e.decodeChild=function(e,t,n){if("Array"==t.nodeName){if("templates"==t.getAttribute("as"))return void this.decodeTemplates(e,t,n)}else if("ui"==t.nodeName)return void this.decodeUi(e,t,n);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,t,n){for(e=t.firstChild;null!=e;){if("add"==e.nodeName){t=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(t)||t,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==t?n.setGraphContainer(s):"toolbar"==t?n.setToolbarContainer(s):"title"==t?n.setTitleContainer(s):"status"==t?n.setStatusContainer(s):"map"==t&&n.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,t,n){null==n.templates&&(n.templates=[]),t=mxUtils.getChildNodes(t);for(var a=0;a<t.length;a++){for(var i=t[a].getAttribute("as"),s=t[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(n.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,t,n){this.projectDesignController=e,this.editor=t||new Editor,this.container=n||document.body;var a=t.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("+t.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,t,n){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","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[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"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","awslex","sesteknda","sestekasr"],[[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"]]),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,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),mxEvent.isConsumed(e)||t.isConsumed()||(this.getModel().isEdge(n)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(n.source.value.tagName)&&this.startEditingAtCell(n):this.getModel().isVertex(n)&&i.projectDesignController.openDialog(n.getValue(),function(e){for(var t=0;t<e.length;t+=1)n.setAttribute(e[t].name,e[t].value);a.refresh(n)}),t.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,t,n){this.isEditingEnabled()&&this.menus.createPopupMenu(e,t,n)}),t.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(t):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"),t=function(){e.setEnabled(!mxClipboard.isEmpty())},n=mxClipboard.cut;mxClipboard.cut=function(){n.apply(this,arguments),t()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),t()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var t=window.document.createElement("a");t.href="data:attachment/text;charset=utf-8,"+encodeURI(e),t.download=this.editor.filename+".xml",t.target="_self",t.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,t){try{var n=mxUtils.parseXml(e);this.editor.setGraphXml(n.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=t&&(this.editor.filename=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,t,n){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=t&&(this.editor.filename=t),null!=n&&(this.editor.data=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,t){for(var n=this.editor.graph,a=(e=null!=e?e:n.model.getRoot(),t=null!=t?t:{},!0),i=n.model.getChildCount(e),s=0;s<i;s++){var o=n.model.getChildAt(e,s),r=t;n.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?n.setCellWarning(o,r.replace(/\n/g,"<br>")):n.setCellWarning(o,null),a=a&&null==r}if(i="",n.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"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";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"}if(n.model.isEdge(e))switch(n.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 n.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(n.containsValidationErrorsResource)||n.containsValidationErrorsResource)+"\n"),i=n.model.isEdge(e)?i+(n.getEdgeValidationError(e,n.model.getTerminal(e,!0),n.model.getTerminal(e,!1))||""):i+(n.getCellValidationError(e)||""),null!=(s=n.validateCell(e,t))&&(i+=s),null==n.model.getParent(e)&&n.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(t){var n=this.editor.graph,e=n.getDefaultParent(),a=0;return e.children.forEach(function(e){n.model.isVertex(e)&&e.value.nodeName==t&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var t=null!=e?e:window.location.pathname,n=0<t.indexOf("?")?1:0;for(var a in urlParams)t+=0==n?"?":"&",t+=a+"="+urlParams[a],n++;return t},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),t=this.actions.get("redo"),n=this.editor.undoManager,a=function(){e.setEnabled(n.canUndo()),t.setEnabled(n.canRedo())};n.addListener(mxEvent.ADD,a),n.addListener(mxEvent.UNDO,a),n.addListener(mxEvent.REDO,a),n.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,t=!e.isSelectionEmpty(),n=!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)&&(n=!0),a&&n)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(t);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(n),this.actions.get("wordWrap").setEnabled(n),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=n&&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(t);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(n||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),t=this.container.clientWidth+390,n=this.container.clientHeight+190;this.container==document.body&&(t=document.body.clientWidth||document.documentElement.clientWidth,n=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,t-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,n-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=t+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=n-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=t-a-this.splitSize+"px";var r=n-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 t=document.createElement("div");return t.className=e,t},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var t=document.createElement("form");return t.className=e,t},EditorUi.prototype.addSplitHandler=function(t,n,a,i){var s=null,o=null;function r(e){if(null!=s){var t=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(n?t.x-s.x:s.y-t.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(t,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(n?t.style.left:t.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,t,n){var a=this.editor.graph,i=a.getSelectionCell();t=null!=this.animate?this.animate:t,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(t&&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 t(e){if(!a.isSelectionEmpty()){var t=0,n=0;37==e?t=-1:38==e?n=-1:39==e?t=1:40==e&&(n=1),a.moveCells(a.getSelectionCells(),t,n),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var n=mxUtils.bind(this,function(e,t,n,a){var i=this.actions.get(n);if(null!=i){var s=function(){i.enabled&&i.funct()};t?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(){t(37)}),o.bindKey(38,function(){t(38)}),o.bindKey(39,function(){t(39)}),o.bindKey(40,function(){t(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),n(46,!1,"delete"),n(82,!0,"tilt"),n(83,!0,"save"),n(83,!0,"saveAs",!0),n(107,!1,"zoomIn"),n(109,!1,"zoomOut"),n(65,!0,"selectAll"),n(86,!0,"selectVertices",!0),n(69,!0,"selectEdges",!0),n(69,!0,"export"),n(66,!0,"toBack"),n(70,!0,"toFront"),n(68,!0,"duplicate"),n(90,!0,"undo"),n(89,!0,"redo"),n(88,!0,"cut"),n(67,!0,"copy"),n(81,!0,"connect"),n(86,!0,"paste"),n(71,!0,"group"),n(71,!0,"grid",!0),n(85,!0,"ungroup"),n(112,!1,"about"),n(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,t,n,a){for(var i=0;i<t.length;i++)e.push(new mxMultiplicity(!0,t[i],null,null,n[i][0],n[i][1],null,mxResources.get(t[i])+mxResources.get("musthave")+n[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,t[i],null,null,a[i][0],a[i][1],null,mxResources.get(t[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,t){this.editorUi=e,this.container=t,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 t=mxEvent.getSource(e);null!=t;){if(t==this.currentElt)return;t=t.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(t,"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,t,n,a,i){mxEventSource.call(this),this.label=e,this.funct=t,this.enabled=null==n||n,this.iconCls=a,this.shortcut=i}function Menubar(e,t){this.editorUi=e,this.container=t,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,t){mxEventSource.call(this),this.funct=e,this.enabled=null==t||t}function Toolbar(e,t){this.editorUi=e,this.container=t,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var t=document.createElement("input");return t.setAttribute("type","checkbox"),e&&t.setAttribute("checked",!0),t}function createDropdownFromApi(e,n,a,i,t,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+t.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(t){r&&t[a]==r||((m=document.createElement("option")).text=t[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",t[e])}),m.selected=m.value==n):(m.value=t[i],m.selected=t[i]==n),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,t,n,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[n],d.value=e[a],d.selected=e[a]==t,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,t,n,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[n].toUpperCase(),d.value=e[a],d.selected=e[a]==t,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[n]),d.value=e[a],d.selected=e[a]==t,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,t){var n=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<t||""!=t)&&(i.selected=t===a),n.appendChild(i)}return n.className="form-control select2",n}function createDropdownFromTigerDialList(e){var t=document.createElement("select"),n=[],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)n[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in n){var l=document.createElement("option");l.text=n[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),t.appendChild(l)}return t.className="form-control select2",t}function Dialog(e,t,n,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),n+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-n)/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(t),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(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("import")+" XML");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");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 t=e.target.files[0];if(console.log(t),t)if("text/xml"===t.type){var n=new FileReader;n.onload=function(e){var t=e.target.result;mxUtils.write(d,t)},n.readAsText(t)}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 t=mxUtils.parseXml(d.value);n.editor.setGraphXml(t.documentElement),n.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function SaveDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function NewDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function DescriptionDialog(e){console.log(e.editor.data);var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function VariableDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function OpenDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function RenameDialog(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("rename"));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-4"),d=n.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=n.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 t=new XMLHttpRequest;t.open("PUT",SAVE_URL+n.editor.data.id,!0),t.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),t.setRequestHeader("Authorization","Bearer "+n.editor.data.token),t.send("name="+u.value),t.onload=function(e){200===t.status?(n.editor.setStatus("Project successfully renamed"),n.editor.filename=u.value):(console.log(t.response),n.editor.setStatus(JSON.parse(t.response).errors[0].message))},t.onerror=function(e){mxUtils.alert(t.statusText)},n.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(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("edit"));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");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(t.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 t=e.dataTransfer.files[0],n=new FileReader;n.onload=function(e){d.value=e.target.result},n.readAsText(t)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);t.editor.setGraphXml(e.documentElement),t.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body form"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("form-horizontal form-row-seperated"),l=t.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",t.editor.getOrCreateFilename()),c.className="form-control";var m=t.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){t.save(!1);encodeURIComponent(mxUtils.getXml(t.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+t.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),t.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(n),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"),t=i.createDiv("md-toolbar"),n=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",t.appendChild(l),t.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)}n.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var t=0;t<s.value.attributes.length;t++){var n="_"+s.value.attributes[t].name,a=s.value.attributes[t].name;s.setAttribute(a,document.getElementById(n).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(t),e.appendChild(n),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 t=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 n=e.getAttribute("pageScale");this.graph.pageScale=null!=n?n: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),t.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,t=this.outline;if(null!=e.container&&null!=t.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="",t.outline.container.style.backgroundColor=e.container.style.backgroundColor,t.outline.pageVisible==e.pageVisible&&t.outline.pageScale==e.pageScale||(t.outline.pageScale=e.pageScale,t.outline.pageVisible=e.pageVisible,t.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 n=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":n,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 n=e.apply(this,arguments);return n.intersects=mxUtils.bind(this,function(e,t){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(n,arguments)}),n},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(),t=0<e.width?e.x/this.scale-this.translate.x:0,n=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,t)/r),c=Math.floor(Math.min(0,n)/l),m=Math.ceil(Math.max(1,t+a)/r)-d,u=Math.ceil(Math.max(1,n+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 n=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,t){n.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=t+"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 t=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(t,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){t=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(t),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=t,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,t,n){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();t=r.width,n=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(t/l.width)-1:0,c=e?Math.ceil(n/l.height)-1:0,m=r.x+t,u=r.y+n;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,t,n){for(var a=0;a<t.length;a++)if(this.graph.getModel().isVertex(t[a])){var i=this.graph.getCellGeometry(t[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,t,n,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 t=this.graph.getModel(),n=t.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=t.getParent(a);if(null==n||n!=a&&n!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&t.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 t=l.apply(this,arguments),n=this.graph.getModel(),a=n.getParent(this.graph.getSelectionCell()),i=n.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!n.isVertex(i)||this.graph.isValidRoot(i)||(t=!0)),t},mxGraphHandler.prototype.selectDelayed=function(e){var t=e.getCell();null==t&&(t=this.cell);for(var n=this.graph.getModel(),a=n.getParent(t);this.graph.isCellSelected(t)&&n.isVertex(a)&&!this.graph.isValidRoot(a);)t=a,a=n.getParent(t);this.graph.selectCellForEvent(t,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var t=e.getCell(),n=this.graph.getModel(),a=n.getParent(t);n.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(t=a),a=n.getParent(a);return t}},Editor.prototype.createUndoManager=function(){var s=this.graph,n=new mxUndoManager,e=function(e,t){n.undoableEditHappened(t.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var t=function(e,t){for(var n=s.getSelectionCellsForChanges(t.getProperty("edit").changes),a=[],i=1;i<n.length;i++)null!=s.view.getState(n[i])&&a.push(n[i]);s.setSelectionCells(a)};return n.addListener(mxEvent.UNDO,t),n.addListener(mxEvent.REDO,t),n},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var t=mxStencilRegistry.stencils[e];if(null==t){var n=mxStencilRegistry.getBasenameForStencil(e);if(null!=n){var a=mxStencilRegistry.libraries[n];if(null!=a){if(null==mxStencilRegistry.packages[n]){mxStencilRegistry.packages[n]=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+"/"+n+".xml",null);t=mxStencilRegistry.stencils[e]}}return t},mxStencilRegistry.getBasenameForStencil=function(e){var t=e.split("."),n=null;if(0<t.length&&"mxgraph"==t[0]){n=t[1];for(var a=2;a<t.length-1;a++)n+="/"+t[a]}return n},mxStencilRegistry.loadStencilSet=function(e,t,n){n=null!=n&&n;var a=mxStencilRegistry.packages[e];if(n||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,t,i)}},mxStencilRegistry.parseStencilSet=function(e,t,n){n=null==n||n;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(n&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=t){var l=i.getAttribute("w"),d=i.getAttribute("h");t(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,t){this.data=e,this.filename=t,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",["tts","ispeechtts","awspolly","lumenvoxtts","sestektts"],["GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","awslex","sesteknda"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","AWSLex","SestekNDA"]),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(),t=e.width+2*this.tooltipBorder+4,n=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(n+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=t+"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;n+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(n-=6,this.tooltipTitle.style.top=n-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=n+"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-n/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+n/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,t){if(null!=this.taglist&&null!=e&&0<e.length)for(var n=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<n.length;a++)if(n[a]=n[a].replace(/\.*\d*$/,""),1<n[a].length){var i=this.taglist[n[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[n[a]]=i),null==i.dict.get(t)&&(i.dict.put(t,t),i.entries.push(t))}return t},Sidebar.prototype.searchEntries=function(e,t,n,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(n+1)*t,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(n*t,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(n*t,(n+1)*t),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var t=e.split(" "),n=[],a={},i=0;i<t.length;i++)null==a[t[i]]&&(a[t[i]]="1",n.push(t[i]));return n.join(" ")},Sidebar.prototype.cloneCell=function(e,t){var n=e.clone();return null!=t&&(n.value=t),n},Sidebar.prototype.addSearchPalette=function(e){var t=document.createElement("div");t.style.visibility="hidden",this.container.appendChild(t);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 n=document.createElement("div");n.style.whiteSpace="nowrap",n.style.textOverflow="clip",n.style.paddingBottom="8px",n.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",n.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+"')",n.appendChild(s),r.appendChild(n);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 t=e.nextSibling;e!=n&&e!=l&&e.parentNode.removeChild(e),e=t}});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,t,n){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(n?(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=[t,o]},Sidebar.prototype.createTitle=function(e){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.setAttribute("title",mxResources.get("sidebarTooltip")),t.className="geTitle",mxUtils.write(t,e),t},Sidebar.prototype.createThumb=function(e,t,n,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((t-2*this.thumbBorder)/c.width,(n-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((t-c.width*m)/2/m-c.x),Math.floor((n-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=t+"px",u.style.height=n+"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(t,n,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(t,this.thumbWidth,this.thumbHeight,r,n,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<t.length||t[0].vertex){var c=this.createDragSource(r,this.createDropHandler(t,!0,o,d),this.createDragPreview(i,s),t,d);this.addClickHandler(r,c,t),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=t[0]&&t[0].edge){c=this.createDragSource(r,this.createDropHandler(t,!1,o,d),this.createDragPreview(i,s),t,d);this.addClickHandler(r,c,t)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,t,d.width,d.height,n,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,t,n,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=n&&e.isValidDropTarget(n,g,t),o=null;if(null==n||s||(n=null),!e.isCellLocked(n||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(n,g,t)){var r=e.cloneCells(g);e.splitEdge(n,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,n));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(n);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(t)}})},Sidebar.prototype.createDragPreview=function(e,t){var n=document.createElement("div");return n.style.border="1px dashed black",n.style.width=e+"px",n.style.height=t+"px",n},Sidebar.prototype.createDragSource=function(e,t,n){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,t,n,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,t,n){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 t=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=t&&Math.abs(s.y-mxEvent.getClientY(e))<=t){var n=i.getGridSize();a.drop(i,e,null,n,n)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,t,n,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,t,n,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,t,n,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",t),n.forEach(function(e,t){i.setAttribute(e,a[t]?a[t]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,t,n,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"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;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,t,n),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,t,n,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,t,n,a,i,s,o){return this.createItem(e,a,i,s,t,n,o)},Sidebar.prototype.createEdgeTemplate=function(e,t,n,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,t,n),e);return r.geometry.setTerminalPoint(new mxPoint(0,n),!0),r.geometry.setTerminalPoint(new mxPoint(t,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],t,n,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,t,n,a,i,s){return this.createItem(e,a,i,!0,t,n,s)},Sidebar.prototype.addPaletteFunctions=function(e,t,n,a){this.addPalette(e,t,n,mxUtils.bind(this,function(e){for(var t=0;t<a.length;t++)e.appendChild(a[t](e))}))},Sidebar.prototype.addPalette=function(e,t,n,a){var i=this.createTitle(t);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")})),n?(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(n,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(n.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="0% 50%",mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){n.style.cursor="wait";var t=n.innerHTML;n.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",n.style.cursor="",n.innerHTML=t},0)}else a.style.display="block";n.style.backgroundImage="url('"+this.expandedImage+"')"}else n.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,t,s,o,r,n,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,t,n){if(null==n){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");n=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;labelBackgroundColor=#ffffff;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],t,!1,!0,this.filterTags(n)))})(r[d],null!=n?n[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,t,!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,t,n,a){mxGraph.call(this,e,t,n,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 t=this.view.getState(e),n=null!=t?t.style:this.getCellStyle(e);return"1"==n.html||"wrap"==n.whiteSpace},this.cellRenderer.getLabelValue=function(e){var t=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(t=mxUtils.htmlEntities(t,!1)),t},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,t){null==t?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(t.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(t.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 t=this.view.getState(e),n=null!=t?t.style:this.getCellStyle(e);if(null!=n){var a=mxUtils.getValue(n,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 t=this.getModel().cloneCells([e])[0];null!=t.geometry&&(t.geometry.points=null);var n=t.getStyle();n=mxUtils.setStyle(n,mxConstants.STYLE_ENTRY_X,null),n=mxUtils.setStyle(n,mxConstants.STYLE_ENTRY_Y,null),n=mxUtils.setStyle(n,mxConstants.STYLE_EXIT_X,null),n=mxUtils.setStyle(n,mxConstants.STYLE_EXIT_Y,null),t.setStyle(n),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(t)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([t])[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 t="";return this.getModel().isVertex(e)?t+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(t=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),t},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,t,n){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",t),t=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,t){var n=null;null!=e.value&&"object"==typeof e.value?n=e.value.cloneNode(!0):(n=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=t&&0<t.length?n.setAttribute("link",t):n.removeAttribute("link"),this.model.setValue(e,n)},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,t){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var t=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(t)&&(e.state=this.view.getState(t),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,t,n){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=t.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(t.getEvent()),i=mxEvent.getClientY(t.getEvent());this.panningHandler.popup(a+16,i,o,t.getEvent())}return s=!1,o=null,void t.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&t.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 t=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(t)&&mxEvent.isShiftDown(t)||this.usePopupTrigger&&mxEvent.isPopupTrigger(t)});var n=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,t){n.apply(this,arguments),this.graph.isCellSelected(t.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,t){touchStyle&&null!=t?this.graph.setSelectionCell(t):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,t){if(null==t){var n=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));t=this.getCellAt(n.x,n.y)}a.call(this,e,t)};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 t=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(t),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 t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,t.x,t.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,t){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=t}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 t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,t.x,t.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,t){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var t=this.editorUi,l=t.editor,d=l.graph;this.addAction("new",function(){t.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){t.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){t.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),t.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){t.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){t.editor.setStatus(""),null===t.validate()?(t.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),t.editor.modified=!1):(t.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){t.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){t.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){t.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){t.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){t.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(),t=d.getLinkForCell(e);null==t&&(t=""),null!=(t=mxUtils.prompt(mxResources.get("enterValue"),t))&&d.setLinkForCell(e,t)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),t=d.getLinkForCell(e);null!=t&&window.open(t)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var t=0;t<e.length;t++){var n=e[t];d.getModel().getChildCount(n)?d.updateGroupBounds([n],20):d.updateCellSize(n)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),t="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(t=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,t)}),this.addAction("rotation",function(){var e="0",t=d.getView().getState(d.getSelectionCell());null!=t&&(e=t.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 t=0;t<e.length;t++){var n=e[t];if(d.getModel().isVertex(n)&&0==d.getModel().getChildCount(n)){var a=d.getCellGeometry(n);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(n,a);var s=d.view.getState(n);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,[n])}}}}}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,t=d.pageScale,n=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(n/e.width/t,a/e.height/t))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*t*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*t*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,t=d.pageScale,n=d.container.clientWidth-20,a=Math.floor(100*n/e.width/t)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*t*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*t*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,t=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(t*d.view.scale)}else{var n=d.view.translate;d.view.setTranslate(n.x-d.container.scrollLeft/d.view.scale,n.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 n=mxUtils.bind(this,function(e,t){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,t)})});n("bold",mxConstants.FONT_BOLD),n("italic",mxConstants.FONT_ITALIC),n("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 t=d.getModel(),n=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",t.getStyle(e[0])||"");null!=n&&d.setCellStyle(n,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 t=l.graph.selectionCellsHandler.getHandler(e);if(t instanceof mxEdgeHandler){var n=d.view.translate,a=d.view.scale,i=n.x,s=n.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),t.addPointAt(t.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=t.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",t=d.getView().getState(d.getSelectionCell());if(null!=t&&(e=t.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var n=new Image;n.onload=function(){!function(e,t,n){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,t,n)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=t&&null!=n){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=t,r.height=n,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,n.width,n.height)},n.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},n.src=e}})},Actions.prototype.addAction=function(e,t,n,a,i){return this.put(e,new Action(mxResources.get(e),t,n,a,i))},Actions.prototype.put=function(e,t){return this.actions[e]=t},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,t){for(var n=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<n.length;a++){this.styleChange(e,n[a],[mxConstants.STYLE_FONTFAMILY],[n[a]],null,t).firstChild.nextSibling.style.fontFamily=n[a]}e.addSeparator(t),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,t)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,t){for(var n=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<n.length;a++)this.styleChange(e,n[a],[mxConstants.STYLE_FONTSIZE],[n[a]],null,t);e.addSeparator(t),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,t)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,t){for(var n=[1,2,3,4,8,12,16,24],a=0;a<n.length;a++)this.styleChange(e,n[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[n[a]],null,t);e.addSeparator(t),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,t)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,t),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,t),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,t),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,t)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,t),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,t),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,t),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,t),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,t),e.addSeparator(t),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},t,null,!0),e.addSeparator(t),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,t)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,t),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,t),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,t),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,t),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,t),e.addSeparator(t),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},t,null,!0),e.addSeparator(t),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,t)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,t){var n=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(n||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,t,n),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,t,n),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,t,n),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,t,n),e.addSeparator(t),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,t,n),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,t,n)),(a||e.showDisabled)&&(e.addSeparator(t),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,t,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,t,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItem(e,"style",t)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,t){var n=this.get("text").enabled;e.addSeparator(t),this.addSubmenu("fontFamily",e,t),this.addSubmenu("fontSize",e,t),this.addMenuItems(e,["-","bold","italic","underline","-"],t),this.addSubmenu("alignment",e,t),this.addMenuItem(e,"wordWrap",t),e.addSeparator(t),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,t,n),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},t,null,n)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,t),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,t),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,t),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,t),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,t),e.addSeparator(t),this.addSubmenu("position",e,t),this.addSubmenu("spacing",e,t),e.addSeparator(t);var n=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},t,null,n)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,t),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,t),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,t),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,t),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,t)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,t){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},t),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},t),this.addMenuItems(e,["-","tilt","rotation"],t)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,t){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},t),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},t),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},t),e.addSeparator(t),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},t),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},t),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},t)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,t){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),t),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),t)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],t)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["toFront","toBack","-"],t),this.addSubmenu("layout",e,t),e.addSeparator(t),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],t)}))),this.put("view",new Menu(mxUtils.bind(this,function(t,n){this.addMenuItems(t,["actualSize"],n),t.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){t.addItem(100*e+"%",null,function(){i.zoomTo(e)},n)}(e[a]);this.addMenuItems(t,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],n)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],t)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,t){this.menus[e]=t},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,t,n){var a=this.get(e).enabled;if(t.showDisabled||a){var i=t.addItem(mxResources.get(e),null,null,n,null,a);this.addMenu(e,t,i)}},Menus.prototype.addMenu=function(e,t,n){var a=this.get(e);null!=a&&(t.showDisabled||a.enabled)&&this.get(e).execute(t,n)},Menus.prototype.styleChange=function(e,t,n,a,i,s){return e.addItem(t,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var t=0;t<n.length;t++)e.setCellStyles(n[t],a[t])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,t,a,i,s,n,o){return e.addItem(t,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,t=i,n=e.getView().getState(e.getSelectionCell());null!=n&&(t=n.style[s]||t),null!=(t=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),t))&&0<t.length&&e.setCellStyles(s,t)}),n,null,o)},Menus.prototype.addMenuItem=function(e,t,n){var a=this.editorUi.actions.get(t);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,n,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,t){if(null!=t.shortcut){var n=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,t.shortcut),n.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var t=e.firstChild.nextSibling;t.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,t,n){for(var a=0;a<t.length;a++)"-"==t[a]?e.addSeparator(n):this.addMenuItem(e,t[a],n)},Menus.prototype.createPopupMenu=function(e,t,n){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!=(t=a.getSelectionCell())&&a.getModel().isEdge(t)){var s=a.selectionCellsHandler.getHandler(t);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(n)),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 t=new Menubar(this.editorUi,e),n=[];n=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<n.length;a++)t.addMenu(mxResources.get(n[a]),this.get(n[a]).funct);return t},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,t){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.className="geItem",mxUtils.write(n,e),this.addMenuHandler(n,t),this.container.appendChild(n),n},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,t=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var t=new mxPopupMenu(s);t.div.className+=" geMenubarMenu",t.smartSeparators=!0,t.showDisabled=!0,t.autoExpand=!0,t.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(t,arguments),t.destroy(),this.currentMenu=null,this.currentElt=null});var n=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;t.popup(n,a,null,e),this.currentMenu=t,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(),t(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",t)}},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,t){this.funct(e,t)},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,t,n,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,t,n,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,t,n,a){var i=n?this.createLabel(e):this.createButton(e);return this.initElement(i,t),this.addMenuHandler(i,n,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 t=0;t<e.length;t++){var n=e[t];"-"==n?this.addSeparator():this.addItem("geSprite-"+n.toLowerCase(),n)}},Toolbar.prototype.addItem=function(e,t){var n=this.editorUi.actions.get(t),a=null;return null!=n&&((a=this.addButton(e,n.label,n.funct)).setEnabled(n.enabled),n.addListener("stateChanged",function(){a.setEnabled(n.enabled)})),a},Toolbar.prototype.addButton=function(e,t,n){var a=this.createButton(e);return this.initElement(a,t),this.addClickHandler(a,n),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(n){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),t=0;t<n.length;t++)n[t].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 t=i.getSelectionCells(),n=0;n<t.length;n++)if(i.getModel().isEdge(t[n])){e=!0;break}for(n=0;n<a.length;n++)a[n].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,t){e.setAttribute("tabindex","0"),null!=t&&e.setAttribute("title",t),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(t){var n=t.className;t.setEnabled=function(e){t.enabled=e,t.className=e?n:n+" geDisabled"},t.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(t,n){null!=n&&mxEvent.addListener(t,"click",function(e){t.enabled&&n(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var t=document.createElement("a");t.setAttribute("href","javascript:void(0);"),t.className="geButton";var n=document.createElement("div");return n.className="geSprite "+e,t.appendChild(n),t},Toolbar.prototype.createLabel=function(e,t){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.className="geLabel",mxUtils.write(n,e),n},Toolbar.prototype.addMenuHandler=function(t,n,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){(null==t.enabled||t.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=n,o.autoExpand=!0,o.popup(t.offsetLeft,t.offsetTop+t.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/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()">{{target}}</span>\n\n    <md-menu ng-if="showMenu()">\n        <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n            <span ng-if="prefix">{{prefix}}-</span>{{target}}\n        </a>\n\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}} ({{prefix ? prefix + \'-\' + target : target}})\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}} ({{prefix ? prefix + \'-\' + target : target}})\n                </md-button>\n            </md-menu-item>\n        </md-menu-content>\n    </md-menu>\n</section>\n\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\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\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}} ({{prefix ? prefix + \'-\' + target : target}})\n                </md-button>\n            </md-menu-item>\n            <md-menu-item>\n                <md-button ng-click="transfer(target)">\n'+"                    {{'DASHBOARDS.TRANSFER_NUMBER' | translate}} ({{prefix ? prefix + '-' + target : target}})\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="{{options.labelSearch || \'Search...\'}}">\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="options.readOnly ? \'read-only-mode\' : \'\'" ng-disabled="options.readOnly" ng-repeat="item in options.items | filter: query | orderBy: options.orderBy" ng-click="canTransfer(item, options, false)">\n                    <div class="md-list-item-text" layout="column">\n                        <h3 ng-if="options.line1">{{getLine(item, options.line1)}}</h3>\n                        <h4 ng-if="options.line2">{{getLine(item, options.line2)}}</h4>\n                        <p ng-if="options.line3">{{getLine(item, options.line3)}}</p>\n                        <p class="ms-dual-multiselect-line-xs" ng-if="options.line4">{{getLine(item, options.line4)}}\n                        </p>\n                    </div>\n                    <md-icon ng-show="!options.readOnly" md-font-icon="icon-arrow-right-bold" aria-label="swap"></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>{{options.labelAll || \'All Items\'}} ({{options.items.length}})</span>\n            <md-icon ng-show="options.showSelectAndDeselectAll && !options.readOnly" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="transfer(options.items, 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="{{options.labelSearch || \'Search...\'}}">\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="options.readOnly || !item.isValid ? \'read-only-mode\' : \'\'" ng-disabled="options.readOnly" ng-repeat="item in options.selectedItems | filter: selectedQuery | orderBy: options.orderBy" ng-click="canTransfer(item, options, true)">\n                    <md-icon ng-class="options.readOnly || !item.isValid ? \'hidden\' : \'\'" 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="options.line1">{{getLine(item, options.line1)}}</h3>\n                        <h4 ng-if="options.line2">{{getLine(item, options.line2)}}</h4>\n                        <p ng-if="options.line3">{{getLine(item, options.line3)}}</p>\n                        <p class="ms-dual-multiselect-line-xs" ng-if="options.line4">{{getLine(item, 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-show="options.showSelectAndDeselectAll && !options.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" flex ng-click="transfer(options.selectedItems, options.items, -1, true)"></md-icon>\n            <span class="h4">{{options.labelSelected || \'Selected Items\'}} ({{options.selectedItems.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 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 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\')" 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\')" 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\')" 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" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                </span>\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 Area --\x3e\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 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">{{ (session.user == session.name) ? session.user : (session.name + \' \' + session.user) }}</span>\n            <span class="session-info" layout="row" layout="start center">\n                <timer interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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="Hold" 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" 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" 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"></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="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 tranlsate="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-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n    <label for="ms-search-bar-input">\n        <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="MsSearchBar.expand()" ng-if="!MsSearchBar.resultsLoading || MsSearchBar.collapsed">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n        </md-button>\n        <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="MsSearchBar.resultsLoading && !MsSearchBar.collapsed">\n            <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n        </div>\n    </label>\n    <input id="ms-search-bar-input" type="text" placeholder="Search" flex ng-model="MsSearchBar.query" ng-model-options="MsSearchBar.queryOptions" ng-blur="MsSearchBar.blurCollapse()" ng-keydown="MsSearchBar.handleKeydown($event)">\n    <md-button class="ms-search-bar-collapser md-icon-button" ng-click="MsSearchBar.collapse()" aria-label="Collapse Search Bar">\n        <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n    </md-button>\n\n    <div class="ms-search-bar-results" ng-if="MsSearchBar.results" ms-scroll>\n        <div class="no-results" ng-if="MsSearchBar.results.length === 0">No Results!</div>\n\n        <div class="result" ng-repeat="result in MsSearchBar.results" ng-click="MsSearchBar.handleResultClick(result)" ng-mouseenter="MsSearchBar.handleMouseenter($index)" ng-mousedown="MsSearchBar.absorbEvent($event)" ng-class="{\'selected\': $index == MsSearchBar.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}" 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</md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">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 class="separator">\n                <span class="text" translate="LOGIN.OR">OR</span>\n            </div>\n\n            <md-button 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="icon-google-plus" 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="EXTRACTEDREPORTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="EXTRACTEDREPORTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(extractedReport, $event)" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                                                    Edit ExtractedReport\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.downloadfile2(extractedReport, $event)" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                                                    Download ExtractedReport\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(extractedReport, $event)" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                                                    Delete ExtractedReport\n                                                </md-button>\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.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="\'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="\'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="\'report_integration\'">Integration Report</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="\'report_queue\'">Queue Report</md-option>\n                    <md-option ng-value="\'users\'">Users</md-option>\n                    <md-option ng-value="\'voice_recordings\'">Voice Recordings</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="METRICS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="METRICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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="ANALYTICS.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.editdialog(metric, $event)" translate="ANALYTICS.EDIT_METRIC">\n                                                    Edit Metric\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(metric, $event)" translate="ANALYTICS.DELETE_METRIC">\n                                                    Delete Metric\n                                                </md-button>\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.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">\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 tranlsate="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.PREVIEW_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="ODBC.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="ODBC.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.editdialog(odbc, $event)" translate="CALLYSQUARE.EDIT_ODBC">\n                                                    Edit Odbc\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestOdbc(odbc, $event)" translate="CALLYSQUARE.TEST_ODBC">\n                                                    Test Odbc\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(odbc, $event)" translate="CALLYSQUARE.DELETE_ODBC">\n                                                    Delete Odbc\n                                                </md-button>\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.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_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" 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-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" 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" 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                \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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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 tranlsate="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="SQUARERECORDINGS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SQUARERECORDINGS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 md-order-by="audio">{{ \'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 ">\n                                    \x3c!-- audio recording directive --\x3e\n                                    <ms-recording id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                                    \x3c!-- / audio recording directive --\x3e\n                                </td>\n                                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.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="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>\n                                                <md-button ng-click="vm.downloadfile2(squareRecording, $event)" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                                                    Download SquareRecording\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(squareRecording, $event)" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                                                    Delete SquareRecording\n                                                </md-button>\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.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="CHATQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CHATQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(chatQueue, $event)" translate="CHAT.EDIT_CHATQUEUE">\n                                                    Edit ChatQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(chatQueue, $event)" translate="CHAT.TEAMADD_CHATQUEUE">\n                                                    teamadd ChatQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(chatQueue, $event)" translate="CHAT.AGENTADD_CHATQUEUE">\n                                                    agentadd ChatQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(chatQueue, $event)" translate="CHAT.DELETE_CHATQUEUE">\n                                                    Delete ChatQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event)" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                                                    goToRealtime ChatQueue\n                                                </md-button>\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.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" 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"></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"></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                        <span ng-if="vm.chatQueue.exten">{{vm.chatQueue.exten}}</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" 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="CHATWEBSITES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CHATWEBSITES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(chatWebsite, $event)" translate="CHAT.EDIT_CHATWEBSITE">\n                                                    Edit ChatWebsite\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(chatWebsite, $event)" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                                                    Interactions ChatWebsite\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event)" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                                                    OfflineMessages ChatWebsite\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(chatWebsite, $event)" translate="CHAT.AGENTADD_CHATWEBSITE">\n                                                    AgentAdd ChatWebsite\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(chatWebsite, $event)" translate="CHAT.DELETE_CHATWEBSITE">\n                                                    Delete ChatWebsite\n                                                </md-button>\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.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" 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-if="!vm.newChatWebsite || (vm.newChatWebsite && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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-if="!vm.newChatWebsite || (vm.newChatWebsite && IntervalId.canSelect)" ng-disabled="!IntervalId.canSelect">{{ 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"></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">{{ 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" 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="1">One Time</md-option>\n                    <md-option ng-value="0">Always</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" md-maxlength="255" 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 ng-message="md-maxlength">\n                        <span translate="CHAT.ERRORS.TEXT_MAX_LENGTH" translate-values=\'{max: 255}\'>Text 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/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/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">{{ 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" 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">{{ 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">{{ 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/chatDispositions/dialog.html",'<md-dialog class="chatDisposition-dialog" aria-label="New ChatDisposition">\n    <form name="chatDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.chatDisposition.name" md-maxlength="255" ng-required="true" autofocus>\n\n                <div ng-messages="chatDispositionForm[\'name\'].$error" ng-show="chatDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatDisposition" ng-click="vm.saveChatDisposition()" class="send-button md-accent md-raised" ng-disabled="chatDispositionForm.$invalid || chatDispositionForm.$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.newChatDisposition" ng-click="vm.addNewChatDisposition()" class="send-button md-accent md-raised" ng-disabled="chatDispositionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATDISPOSITION" translate-attr-aria-label="CHAT.ADD_CHATDISPOSITION">\n                    ADD CHATDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatDisposition" ng-click="vm.deleteChatDisposition($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>{{vm.message.body}}</pre>\n    </md-content>\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                        <span ng-if="vm.chatWebsite.exten">{{vm.chatWebsite.exten}}</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) || (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) || (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">{{ 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" 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, 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" 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" 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">{{ 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">\n                                    < <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span>\n                    </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    </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" 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 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\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.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="interactionForm[\'noteTitle\'].$error" ng-show="interactionForm[\'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                    <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.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\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                                        \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">\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\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)">\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="CHATWEBSITES.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.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">{{ \'CHAT.ID\' | translate }}</th>\n                                    <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="type">{{ \'CHAT.TYPE\' | translate }}</th>\n                                    <th md-column md-order-by="selector">{{ \'CHAT.SELECTOR\' | translate }}</th>\n                                    <th md-column md-order-by="timeout">{{ \'CHAT.TIMEOUT\' | translate }}</th>\n                                    <th md-column md-order-by="createdAt">{{ \'CHAT.CREATED_AT\' | translate }}</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>{{chatProactiveAction.id}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{chatProactiveAction.name}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{chatProactiveAction.selector}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{chatProactiveAction.timeout}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{chatProactiveAction.createdAt | date:\'medium\'}}</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                                        <span class="text-boxed-ligth" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\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 class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp">\n                <div ng-controller="ChatWebsiteChatDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n                    <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatDispositions.length">\n                        <div class="md-toolbar-tools">\n                            <span class="md-subhead" translate="CHAT.CHATDISPOSITIONS">ChatDispositions</span>\n                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                            <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatDisposition($event)" aria-label="add chatDisposition" translate translate-attr-label="CHAT.ADD_CHATDISPOSITION">\n                                <md-icon md-font-icon="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.selectedChatWebsiteChatDispositions.length">\n                        <div class="md-toolbar-tools">\n                            <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatDispositions.length}} {{vm_dc.selectedChatWebsiteChatDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                            <div flex></div>\n                            <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatDispositions" 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.deleteSelectedChatWebsiteChatDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHATWEBSITES.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.selectedChatWebsiteChatDispositions" md-progress="vm_dc.promise">\n                            <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatDispositions">\n                                <tr md-row>\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="createdAt">{{ \'CHAT.CREATED_AT\' | translate }}</th>\n                                    <th md-column width="10px"></th>\n                                </tr>\n                            </thead>\n                            <tbody md-body>\n                                <tr md-row md-select="chatDisposition" md-select-id="id" ng-repeat="chatDisposition in vm_dc.chatWebsiteChatDispositions.rows">\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatDisposition($event, chatDisposition)" md-cell>{{chatDisposition.id}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatDisposition($event, chatDisposition)" md-cell>{{chatDisposition.name}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatDisposition($event, chatDisposition)" md-cell>{{chatDisposition.createdAt | date:\'medium\'}}</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.createOrEditChatWebsiteChatDisposition($event, chatDisposition)" translate="CHAT.EDIT_CHATDISPOSITION">\n                                                        Edit ChatDisposition\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(chatDisposition, $event)" translate="CHAT.DELETE_CHATDISPOSITION">\n                                                        Delete ChatDisposition\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.chatWebsiteChatDispositions.rows.length">\n                                    <td md-cell colspan="5">\n                                        <span class="text-boxed-ligth" translate="CHAT.NO_CHATDISPOSITION_AVAILABLE">No chatdisposition available</span>\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.chatWebsiteChatDispositions.count}}" md-on-paginate="vm_dc.getChatWebsiteChatDispositions" 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.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)">\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="CHATWEBSITES.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.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">{{ \'CHAT.ID\' | translate }}</th>\n                                    <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                                    <th md-column md-order-by="value">{{ \'CHAT.VALUE\' | translate }}</th>\n                                    <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                                    <th md-column md-order-by="createdAt">{{ \'CHAT.CREATED_AT\' | translate }}</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>{{chatCannedAnswer.id}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>{{chatCannedAnswer.key}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>{{chatCannedAnswer.value}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>{{chatCannedAnswer.description}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>{{chatCannedAnswer.createdAt | date:\'medium\'}}</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                                        <span class="text-boxed-ligth" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\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.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-ligth" 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)">\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="CHATWEBSITES.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.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">{{ \'CHAT.ID\' | translate }}</th>\n                                    <th md-column md-order-by="createdAt">{{ \'CHAT.STARTEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="closedAt">{{ \'CHAT.CLOSEDAT\' | translate }}</th>\n                                    <th md-column>{{ \'CHAT.CONTACT\' | translate }}</th>\n                                    <th md-column>{{ \'CHAT.AGENT\' | translate }}</th>\n                                    <th md-column md-order-by="disposition">{{ \'CHAT.DISPOSITION\' | translate }}</th>\n                                    <th md-column md-order-by="ratingValue">{{ \'CHAT.RATING\' | translate }}</th>\n                                    <th md-column md-order-by="note">{{ \'CHAT.NOTES\' | translate }}</th>\n                                    <th md-column md-order-by="tag">{{ \'CHAT.TAGS\' | translate }}</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">\n                                    <td md-cell>{{interaction.id}}</td>\n                                    <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                    <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                    <td md-cell>{{interaction.Contact.firstName}}</td>\n                                    <td md-cell>{{interaction.Owner.name}}</td>\n                                    <td md-cell>{{interaction.disposition}}</td>\n                                    <td md-cell>\n                                        <md-icon md-font-icon="icon-star" style="color:red" ng-show="interaction.ratingValue != null && (!interaction.ratingType || interaction.ratingType == \'star\')" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:interaction.ratingValue"></md-icon>\n                                        <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="interaction.ratingValue != null && interaction.ratingType && interaction.ratingType == \'thumb\' && interaction.ratingValue == 1"></md-icon>\n                                        <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="interaction.ratingValue != null && interaction.ratingType && interaction.ratingType == \'thumb\' && interaction.ratingValue == 0"></md-icon><span ng-show="interaction.ratingValue == null" translate="CHAT.NO_RATINGVALUE">No ratingValue</span>\n                                    </td>\n                                    <td md-cell>{{interaction.note}}</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"></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>\n                                                    <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_INTERACTION">\n                                                        Download Interaction\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="15">\n                                        <span class="text-boxed-ligth" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\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)">\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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="CHATWEBSITES.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.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">{{ \'CHAT.ID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'CHAT.CONTACT\' | translate }}</th>\n                                    <th md-column md-order-by="createdAt">{{ \'CHAT.CREATED_AT\' | translate }}</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>{{offlineMessage.id}}</td>\n                                    <td md-cell>{{ (vm_dc.contacts | filter : {\'id\':offlineMessage.ContactId})[0].firstName }}</td>\n                                    <td md-cell>{{offlineMessage.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="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="5">\n                                        <span class="text-boxed-ligth" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'CHAT.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'CHAT.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'CHAT.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditChatQueue($event, vm.queues[value])" translate="CHAT.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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="COMPANIES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="COMPANIES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(company, $event)" translate="CONTACTMANAGER.EDIT_COMPANY">\n                                                    Edit Company\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotocontactsgoto(company, $event)" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                                                    goToContacts Company\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(company, $event)" translate="CONTACTMANAGER.DELETE_COMPANY">\n                                                    Delete Company\n                                                </md-button>\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.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                        <span ng-if="vm.company.exten">{{vm.company.exten}}</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">\n                                    <md-optgroup label="Lists">\n                                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                                        <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                                    </md-optgroup>\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 companie" flex="100" ng-model="vm.selectedCompany">\n                                    <md-optgroup label="Companies">\n                                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                                        <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                                    </md-optgroup>\n                                </md-select>\n                            </md-input-container>\n\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 placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()" multiple>\n                                    <md-optgroup label="Tags">\n                                        <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                                    </md-optgroup>\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="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 tranlsate="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">{{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">{{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">{{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="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"></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>\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">\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">\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">\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">\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">\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]"></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-optgroup label="Companies">\n                        <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                    </md-optgroup>\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 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"></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 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</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">\n\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">\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">\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">\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">\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 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">\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</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}}</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]"></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}}</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="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | 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="4">\n                                                <div layout="row" layout-align="center center">\n                                                    <span tranlsate="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>{{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 tranlsate="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>{{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 tranlsate="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>{{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 tranlsate="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="interaction-content">\n                        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'"></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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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="GLOBALCUSTOMFIELDS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="GLOBALCUSTOMFIELDS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(globalCustomField, $event)" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                                                    Edit GlobalCustomField\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(globalCustomField, $event)" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                                                    Delete GlobalCustomField\n                                                </md-button>\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.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"></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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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                        <span ng-if="vm.list.exten">{{vm.list.exten}}</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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="LISTS.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.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">{{ \'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 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>{{customField.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>{{customField.alias}}</td>\n                                            <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>{{ vm_dc.arraytype[customField.type].option }}</td>\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="7">\n                                                <span class="text-boxed-ligth" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\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 class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="ListVoiceDispositionsController 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.selectedListVoiceDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="CONTACTMANAGER.VOICEDISPOSITIONS">VoiceDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListVoiceDisposition($event)" aria-label="add voiceDisposition" translate translate-attr-label="CONTACTMANAGER.ADD_VOICEDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedListVoiceDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedListVoiceDispositions.length}} {{vm_dc.selectedListVoiceDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListVoiceDispositions" 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.deleteSelectedListVoiceDispositions($event)" aria-label="delete selected" translate translate-attr-label="LISTS.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.selectedListVoiceDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListVoiceDispositions">\n                                        <tr md-row>\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="createdAt">{{ \'CONTACTMANAGER.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="voiceDisposition" md-select-id="id" ng-repeat="voiceDisposition in vm_dc.listVoiceDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditListVoiceDisposition($event, voiceDisposition)" md-cell>{{voiceDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditListVoiceDisposition($event, voiceDisposition)" md-cell>{{voiceDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditListVoiceDisposition($event, voiceDisposition)" md-cell>{{voiceDisposition.createdAt | date:\'medium\'}}</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.createOrEditListVoiceDisposition($event, voiceDisposition)" translate="CONTACTMANAGER.EDIT_VOICEDISPOSITION">\n                                                                Edit VoiceDisposition\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(voiceDisposition, $event)" translate="CONTACTMANAGER.DELETE_VOICEDISPOSITION">\n                                                                Delete VoiceDisposition\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.listVoiceDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="CONTACTMANAGER.NO_VOICEDISPOSITION_AVAILABLE">No voicedisposition available</span>\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.listVoiceDispositions.count}}" md-on-paginate="vm_dc.getListVoiceDispositions" 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/contactmanager/views/lists/edit/voiceDispositions/dialog.html",'<md-dialog class="voiceDisposition-dialog" aria-label="New VoiceDisposition">\n    <form name="voiceDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.voiceDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="voiceDispositionForm[\'name\'].$error" ng-show="voiceDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceDisposition" ng-click="vm.saveVoiceDisposition()" class="send-button md-accent md-raised" ng-disabled="voiceDispositionForm.$invalid || voiceDispositionForm.$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.newVoiceDisposition" ng-click="vm.addNewVoiceDisposition()" class="send-button md-accent md-raised" ng-disabled="voiceDispositionForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_VOICEDISPOSITION" translate-attr-aria-label="CONTACTMANAGER.ADD_VOICEDISPOSITION">\n                    ADD VOICEDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceDisposition" ng-click="vm.deleteVoiceDisposition($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/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="LISTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="LISTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(list, $event)" translate="CONTACTMANAGER.EDIT_LIST">\n                                                    Edit List\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotocontactsgoto(list, $event)" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                                                    goToContacts List\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.exportcsvcontactsexport(list, $event)" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                                                    exportCsvContacts List\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(list, $event)" translate="CONTACTMANAGER.AGENTADD_LIST">\n                                                    AgentAdd List\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(list, $event)" translate="CONTACTMANAGER.DELETE_LIST">\n                                                    Delete List\n                                                </md-button>\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.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.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/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" 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\'"></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" 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)"></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                            \x3c!-- <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40"\n                                    ng-if="!vm.interaction.closed">\n                                    <timer start-time="vm.interaction.createdAt" interval="1000">{{ days > 0 ? days + \'d\' :\n                                        \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                                    <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n                                </div> --\x3e\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                    \x3c!-- MS-CARD --\x3e\n                    <md-card class="template-7" layout="row" layout-align="space-between" ng-repeat="call in vm.tab.calls track by call.uniqueid">\n                        <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n                            <div layout="row">\n                                <span ng-if="call.answeredAt" class="text-boxed indigo-100-bg">\n                                    <timer start-time="call.answeredAt" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                                </span>\n                                <div flex></div>\n                                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                                    <timer start-time="call.disposedAt" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                                </span>\n                            </div>\n                            <div class="p-16">\n                                <div class="title h1">\n                                    <md-icon ng-if="!call.routeId" md-font-icon="icon-phone-incoming"></md-icon>\n                                    <md-icon ng-if="call.routeId" md-font-icon="icon-phone-outgoing"></md-icon>\n                                    {{ call.routeId ? call.destcalleridnum : call.calleridnum }}\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: {{ call.calleridname }}\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                        </div>\n                    </md-card>\n                    \x3c!-- / MS-CARD --\x3e\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">PERSONAL_INFO</div>\n                            <div class="subtitle secondary-text">\n                                <span translate="CONTACTMANAGER.CREATED_AT"></span> <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>\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 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)" aria-label="jscripty">\n                                                    <md-icon md-font-icon="icon-script"></md-icon>\n                                                </md-button>\n\n                                                <md-menu-content>\n                                                    <md-menu-item ng-if="vm.jscriptyProjects && vm.jscriptyProjects.rows.length" 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> {{project.name}}\n                                                        </md-button>\n                                                    </md-menu-item>\n                                                    <md-menu-item ng-if="!vm.jscriptyProjects || !vm.jscriptyProjects.rows.length">\n                                                        <md-button disabled="disabled" translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                                                            <md-icon md-font-icon="icon-script"></md-icon> No jscripty projects available\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">\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">\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">\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)" aria-label="sms">\n                                                    <md-icon md-font-icon="icon-message-text"></md-icon>\n                                                </md-button>\n\n                                                <md-menu-content>\n                                                    <md-menu-item ng-if="vm.smsAccounts && vm.smsAccounts.rows.length" 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> {{account.name}}\n                                                        </md-button>\n                                                    </md-menu-item>\n                                                    <md-menu-item ng-if="!vm.smsAccounts || !vm.smsAccounts.rows.length">\n                                                        <md-button disabled="disabled" translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                                                            <md-icon md-font-icon="icon-message-text"></md-icon> No sms accounts available\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">\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 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)" aria-label="email">\n                                                    <md-icon md-font-icon="icon-email"></md-icon>\n                                                </md-button>\n\n                                                <md-menu-content>\n                                                    <md-menu-item ng-if="vm.mailAccounts && vm.mailAccounts.rows.length" 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> {{account.name}}\n                                                        </md-button>\n                                                    </md-menu-item>\n                                                    <md-menu-item ng-if="!vm.mailAccounts || !vm.mailAccounts.rows.length">\n                                                        <md-button disabled="disabled" translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                                                            <md-icon md-font-icon="icon-email"></md-icon> No email accounts available\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">\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)" aria-label="fax">\n                                                    <md-icon md-font-icon="icon-deskphone"></md-icon>\n                                                </md-button>\n\n                                                <md-menu-content>\n                                                    <md-menu-item ng-if="vm.faxAccounts && vm.faxAccounts.rows.length" 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> {{account.name}}\n                                                        </md-button>\n                                                    </md-menu-item>\n                                                    <md-menu-item ng-if="!vm.faxAccounts || !vm.faxAccounts.rows.length">\n                                                        <md-button disabled="disabled" translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                                                            <md-icon md-font-icon="icon-deskphone"></md-icon> No fax accounts available\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="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\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}}</md-option>\n                                            <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em></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">{{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></form>\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 FIELDS</div>\n                            <form name="vm.customFieldsForm" novalidate>\n\n                                \x3c!-- START INPUT LIST --\x3e\n                                <md-input-container class="md-block" ng-if="!vm.contact.ListId">\n                                    <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                                    <md-select name="list" 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.tab.userLists.rows">#{{list.id}} - {{list.name}}</md-option>\n                                        </md-optgroup>\n                                    </md-select>\n                                </md-input-container>\n                                <md-input-container class="md-block" ng-if="vm.contact.ListId">\n                                    <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                                    <md-select ng-disabled="!vm.newContact" name="list" ng-model="vm.contact.ListId" required>\n                                        <md-optgroup label="Lists">\n                                            <md-option ng-value="list.id" ng-repeat="list in vm.tab.lists.rows">#{{list.id}} - {{list.name}}</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]"></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]"></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">{{value.value}}</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}}<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                                        <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                                </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="interaction-content">\n                <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'"></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()">\n                    <md-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.DISPOSITIONS">Dispositions</label>\n                    <md-select name="disposition" ng-model="vm.choice" required>\n                        <md-option ng-value="g.name" ng-repeat="g in vm.dispositions.rows">{{ g.name }}</md-option>\n                        <md-option ng-value="gd.name" ng-repeat="gd in vm.globalDispositions.rows">{{ gd.name }}</md-option>\n                    </md-select>\n                </md-input-container>\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\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">{{ 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()">\n                {{(vm.choice ? \'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/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="Voice">\n                <div ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\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\'" class="md-padding">\n                    </md-content>\n                </div>\n            </md-tab>\n            <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="Bull">\n                <div ng-controller="AgentHomeAbandonedBullController as vm_bull">\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\'" class="md-padding">\n                    </md-content>\n                </div>\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 ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header blue-bg">\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.query.filter = query" on-collapse="vm_bull.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm_bull.pickerModel.dateStart" ng-click="vm_bull.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm_bull.localizationMap" ng-model="vm_bull.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_bull.getContacts()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm_bull.query.lastAssignedTo" ng-change="vm_bull.getContacts()">\n                    <md-option ng-value="vm_bull.currentUser.name" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div ng-if="vm_bull.queues.count" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm_bull.query.queue" ng-change="vm_bull.getContacts()">\n                    <md-option ng-value="vm_bull.defaultQueues" ng-if="vm_bull.queues.count > 1"><em translate="DASHBOARDS.ALL">All</em></md-option>\n                    <md-option ng-value="queue.name" ng-repeat="queue in vm_bull.queues.rows">{{queue.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button interaction-reload" ng-click="vm_bull.refresh && vm_bull.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n                <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">{{\'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.getContacts">\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="disposition">{{\'DASHBOARDS.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.contacts.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="contact in vm_bull.contacts.rows">\n                    <td md-cell class="id">{{contact.id}}</td>\n                    <td md-cell class="firstName">{{contact.calleridname}}</td>\n                    <td md-cell class="phone">\n                        \x3c!-- click to call directive --\x3e\n                        <ms-click-to-call target="contact.calleridnum" license="vm_home.license" disabled="contact.lastAssignedTo !== vm_bull.currentUser.name"></ms-click-to-call>\n                        \x3c!--  / click to call directive --\x3e\n                    </td>\n                    <td md-cell class="list">{{vm_bull.queuesMap[contact.queue]}}</td>\n                    <td md-cell class="list">{{contact.queuecallerabandonAt ? (contact.queuecallerabandonAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.queuecallerexitAt ? (contact.queuecallerexitAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.queuecallerexitreason}}</td>\n                    <td md-cell class="list">{{contact.disposition}}</td>\n                    <td md-cell class="actions">\n                        <md-switch no-margin ng-if="contact.lastAssignedTo === vm_bull.currentUser.name || !contact.lastAssignedTo" ng-disabled="vm_bull.disable[contact.id]" ng-model="contact.assigned" aria-label="reserved" ng-change="vm_bull.reserved(contact, contact.disposition)">\n                            \x3c!-- <span>{{ contact.assigned ? \'DASHBOARDS.RESERVED\' : \'DASHBOARDS.FREE\' | translate }}</span> --\x3e\n                        </md-switch>\n                    </td>\n                    <td md-cell class="list">{{contact.lastAssignedTo}}</td>\n                    <td md-cell class="actions">\n                        <md-menu ng-if="contact.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-menu>\n                                        <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="vm_bull.disposition.length" ng-repeat="disposition in vm_bull.disposition">\n                                                <md-button ng-click="vm_bull.reserved(contact, disposition.name)">{{disposition.name}}</md-button>\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\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.contacts.count}}" md-on-paginate="vm_bull.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header blue-bg">\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.query.filter = query" on-collapse="vm_voice.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm_voice.pickerModel.dateStart" ng-click="vm_voice.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm_voice.localizationMap" ng-model="vm_voice.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_voice.getContacts()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm_voice.query.lastAssignedTo" ng-change="vm_voice.getContacts()">\n                    <md-option ng-value="vm_voice.currentUser.name" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div ng-if="vm_voice.queues.count" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm_voice.query.queue" ng-change="vm_voice.getContacts()">\n                    <md-option ng-value="vm_voice.defaultQueues" ng-if="vm_voice.queues.count > 1"><em translate="DASHBOARDS.ALL">All</em></md-option>\n                    <md-option ng-value="queue.name" ng-repeat="queue in vm_voice.queues.rows">{{queue.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button interaction-reload" ng-click="vm_voice.refresh && vm_voice.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n                <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">{{\'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.getContacts">\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="disposition">{{\'DASHBOARDS.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.contacts.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="contact in vm_voice.contacts.rows">\n                    <td md-cell class="id">{{contact.id}}</td>\n                    <td md-cell class="firstName">{{contact.calleridname}}</td>\n                    <td md-cell class="phone">\n                        \x3c!-- click to call directive --\x3e\n                        <ms-click-to-call target="contact.calleridnum" license="vm_home.license" disabled="contact.lastAssignedTo !== vm_voice.currentUser.name"></ms-click-to-call>\n                        \x3c!--  / click to call directive --\x3e\n                    </td>\n                    <td md-cell class="list">{{vm_voice.queuesMap[contact.queue]}}</td>\n                    <td md-cell class="list">{{contact.queuecallerabandonAt ? (contact.queuecallerabandonAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.disposition}}</td>\n                    <td md-cell class="actions">\n                        <md-switch no-margin ng-if="contact.lastAssignedTo === vm_voice.currentUser.name || !contact.lastAssignedTo" ng-disabled="vm_voice.disable[contact.id]" ng-model="contact.assigned" aria-label="reserved" ng-change="vm_voice.reserved(contact, contact.disposition)">\n                            \x3c!-- <span>{{ contact.assigned ? \'DASHBOARDS.RESERVED\' : \'DASHBOARDS.FREE\' | translate }}</span> --\x3e\n                        </md-switch>\n                    </td>\n                    <td md-cell class="list">{{contact.lastAssignedTo}}</td>\n                    <td md-cell class="actions">\n                        <md-menu ng-if="contact.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-menu>\n                                        <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="vm_voice.disposition.length" ng-repeat="disposition in vm_voice.disposition">\n                                                <md-button ng-click="vm_voice.reserved(contact, disposition.name)">{{disposition.name}}</md-button>\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\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.contacts.count}}" md-on-paginate="vm_voice.getContacts" md-page-select></md-table-pagination>\n\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" 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></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 ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\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\'"></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\'"></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\'"></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\'"></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\'"></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\'"></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)"></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\'"></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)"></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\'"></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)"></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\'"></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)"></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\'"></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)"></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\'"></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\'"></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\'"></div>\n    </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'chat\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getChatInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getChatInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getChatInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_WEBSITE">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getChatInteractions()">\n                    <md-option ng-value="chatAccount.id" ng-repeat="chatAccount in vm.chatAccounts.rows">{{chatAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getChatInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getChatInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-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.getChatInteractions">\n                <tr md-row>\n                    <th md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.WEBSITE\' | 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.chatInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="chatInteraction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': chatInteraction.unread}">\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{chatInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!chatInteraction.closed && chatInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in chatInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!chatInteraction.closed && chatInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'chat\')" layout-margin>{{chatInteraction.unread}}</span>\n                                <md-icon ng-if="chatInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(chatInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{chatInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell>\n                        <div layout="row" ng-if="chatInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{chatInteraction.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="font-size-10 text-truncate">{{chatInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!chatInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell>\n                        <span ng-if="chatInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="chatInteraction.disposition">- {{chatInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="chatInteraction.closed">{{chatInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!chatInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="chatInteraction.substatus"> - {{chatInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(chatInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell class="chatAccount">\n                        {{ vm.getChatWebsiteLabel(chatInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="chatInteraction.Tags.length">\n                            <div ng-if="chatInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': chatInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{chatInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="chatInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in chatInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showChatInteraction($event, chatInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Chat\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadChatInteraction($event, chatInteraction)" translate="DASHBOARDS.DOWNLOAD">\n                                        Download Chat\n                                    </md-button>\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: \'{{\'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>\n    <md-toolbar class="md-table-toolbar md-default table-header red-bg">\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.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div layout="column">\n                <span class="font-size-10" translate="CONTACTMANAGER.SELECT_LIST">Select a list</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.ListId" ng-change="vm.getContacts()">\n                    <md-option ng-value="vm.defaultLists" ng-if="vm.lists.count > 1"><em translate="CONTACTMANAGER.ALL_CONTACTS">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            </div>\n            <div layout="column">\n                <span class="font-size-10" translate="CONTACTMANAGER.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getContacts()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button interaction-reload" ng-click="vm.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button interaction-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    </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">ID</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="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 tranlsate="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">{{contact.firstName}} {{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($event, 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">{{contact.fax}}</td>\n                    <td ng-click="vm.openContact(contact.id)" md-cell class="email">{{contact.email}}</td>\n                    <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{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">, </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="Voice">\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="Bull">\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="Chat">\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="Email">\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="Sms">\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="Open Channel">\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="Fax">\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-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" ngCloak>\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 tranlsate="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 tranlsate="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>{{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></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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_chat.getSize(vm_chat.chatQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_fax.getSize(vm_fax.faxQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_mail.getSize(vm_mail.mailQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_openchannel.getSize(vm_openchannel.openchannelQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_sms.getSize(vm_sms.smsQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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 tranlsate="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 tranlsate="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>{{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></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 ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'fax\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getFaxInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getFaxInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getFaxInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_ACCOUNT">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getFaxInteractions()">\n                    <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.faxAccounts.rows">{{faxAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getFaxInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getFaxInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-button>\n            </div>\n            <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n                <md-button class="md-icon-button interaction-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)">{{ 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>\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 md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.ACCOUNT\' | 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.faxInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="faxInteraction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': faxInteraction.unread}">\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{faxInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!faxInteraction.closed && faxInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in faxInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!faxInteraction.closed && faxInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'fax\')" layout-margin>{{faxInteraction.unread}}</span>\n                                <md-icon ng-if="faxInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(faxInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{faxInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell>\n                        <div layout="row" ng-if="faxInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{faxInteraction.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="font-size-10 text-truncate">{{faxInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!faxInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell>\n                        <span ng-if="faxInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="faxInteraction.disposition">- {{faxInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="faxInteraction.closed">{{faxInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!faxInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="faxInteraction.substatus"> - {{faxInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(faxInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell class="faxAccount">\n                        {{ vm.getFaxAccountLabel(faxInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="faxInteraction.Tags.length">\n                            <div ng-if="faxInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': faxInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{faxInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="faxInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in faxInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showFaxInteraction($event, faxInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Fax\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadFaxInteraction($event, faxInteraction)" translate="DASHBOARDS.DOWNLOAD">\n                                        Download Fax\n                                    </md-button>\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: \'{{\'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 ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'mail\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getMailInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getMailInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getMailInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column" ng-if="vm.query.closed == 0">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_SUBSTATUS">Select a sub status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.substatus" ng-change="vm.getMailInteractions()">\n                    <md-option ng-repeat="subStatus in vm.subStatuses.rows" ng-value="subStatus.name">{{subStatus.name}}</md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NONE"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_ACCOUNT">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getMailInteractions()">\n                    <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.mailAccounts.rows">{{mailAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getMailInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getMailInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-button>\n            </div>\n            <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n                <md-button class="md-icon-button interaction-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)">{{ 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>\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 md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n                    <th md-column md-order-by="subject" style="width:200px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.ACCOUNT\' | 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.mailInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="mailInteraction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': mailInteraction.unread}">\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{mailInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!mailInteraction.closed && mailInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in mailInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!mailInteraction.closed && mailInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'mail\')" layout-margin>{{mailInteraction.unread}}</span>\n                                <md-icon ng-if="mailInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(mailInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <div ng-if="vm.setting.enableEmailPreview && mailInteraction.lastMsgBody" class="tooltip-preview">\n                            <span class="text-truncate font-size-12" style="width:200px">{{mailInteraction.subject}}</span>\n                            <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                                <md-card-content>{{mailInteraction.lastMsgBody}}<br>...</md-card-content>\n                            </md-card>\n                        </div>\n                        <span ng-if="!mailInteraction.lastMsgBody || !vm.setting.enableEmailPreview" class="text-truncate font-size-12" style="width:200px">{{mailInteraction.subject}}</span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{mailInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <div layout="row" ng-if="mailInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{mailInteraction.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="font-size-10 text-truncate">{{mailInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!mailInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <span ng-if="mailInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="mailInteraction.disposition">- {{mailInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="mailInteraction.closed">{{mailInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!mailInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="mailInteraction.substatus"> - {{mailInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(mailInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell class="mailAccount">\n                        {{ vm.getMailAccountLabel(mailInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="mailInteraction.Tags.length">\n                            <div ng-if="mailInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': mailInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{mailInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="mailInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in mailInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showMailInteraction($event, mailInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Mail\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadMailInteraction($event, mailInteraction, 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.downloadMailInteraction($event, mailInteraction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                        Download without attachments\n                                    </md-button>\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: \'{{\'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 red-bg">\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.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div layout="column">\n                <span class="font-size-10" translate="CONTACTMANAGER.SELECT_LIST">Select a list</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.ListId" ng-change="vm.getContacts()">\n                    <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                    <md-option ng-value="vm.defaultLists" ng-if="vm.lists.count > 1"><em translate="CONTACTMANAGER.ALL_CONTACTS">All</em></md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <span class="font-size-10" translate="CONTACTMANAGER.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getContacts()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button interaction-reload" ng-click="vm.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n            </md-button>\n            <md-button class="md-icon-button interaction-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    </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">ID</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="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 tranlsate="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">{{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">{{contact.fax}}</td>\n                    <td ng-click="vm.openContact($event, contact)" md-cell class="email">{{contact.email}}</td>\n                    <td ng-click="vm.openContact($event, contact)" md-cell class="list">{{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">, </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\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 ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'openchannel\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getOpenchannelInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getOpenchannelInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getOpenchannelInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_ACCOUNT">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getOpenchannelInteractions()">\n                    <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">{{openchannelAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getOpenchannelInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getOpenchannelInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-button>\n            </div>\n            <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n                <md-button class="md-icon-button interaction-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)">{{ 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>\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 md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.ACCOUNT\' | 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.openchannelInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="openchannelInteraction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': openchannelInteraction.unread}">\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{openchannelInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!openchannelInteraction.closed && openchannelInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in openchannelInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!openchannelInteraction.closed && openchannelInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'openchannel\')" layout-margin>{{openchannelInteraction.unread}}</span>\n                                <md-icon ng-if="openchannelInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(openchannelInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{openchannelInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell>\n                        <div layout="row" ng-if="openchannelInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{openchannelInteraction.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="font-size-10 text-truncate">{{openchannelInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!openchannelInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell>\n                        <span ng-if="openchannelInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="openchannelInteraction.disposition">- {{openchannelInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="openchannelInteraction.closed">{{openchannelInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!openchannelInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="openchannelInteraction.substatus"> - {{openchannelInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(openchannelInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell class="openchannelAccount">\n                        {{ vm.getOpenchannelAccountLabel(openchannelInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="openchannelInteraction.Tags.length">\n                            <div ng-if="openchannelInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': openchannelInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{openchannelInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="openchannelInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in openchannelInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Openchannel\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadOpenchannelInteraction($event, openchannelInteraction)" translate="DASHBOARDS.DOWNLOAD">\n                                        Download Openchannel\n                                    </md-button>\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: \'{{\'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/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">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="VOICE.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'VOICE.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getVoiceRecordings()" placeholder="{{ \'VOICE.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="VOICE.SELECT_TYPE">Select a type</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.type" ng-change="vm.getVoiceRecordings()">\n                    <md-option value="internal" translate="VOICE.INTERNAL">Internal</md-option>\n                    <md-option value="inbound" translate="VOICE.INBOUND">Inbound</md-option>\n                    <md-option value="outbound" translate="VOICE.OUTBOUND">Outbound</md-option>\n                    <md-option value="dialer" translate="VOICE.DIALER">Dialer</md-option>\n                    <md-option ng-value="null" translate="VOICE.ALL">All</md-option>\n                </md-select>\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.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"></th>\n                </tr>\n            </thead>\n            <tbody md-body>\n                <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="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"></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"></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">\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-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></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">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n            \x3c!-- <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar> --\x3e\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="MOTIONDIALER.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'VOICE.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getScheduledCalls()" placeholder="{{ \'MOTIONDIALER.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div ng-if="vm.queueCampaigns.count" layout="column">\n                <span class="font-size-10" translate="MOTIONDIALER.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.VoiceQueueId" ng-change="vm.getScheduledCalls()">\n                    <md-option ng-value="undefined"><em translate="MOTIONDIALER.ALL">All</em></md-option>\n                    <md-option ng-value="queueCampaign.id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">{{queueCampaign.name}}</md-option>\n                </md-select>\n            </div>\n            \x3c!-- <div layout="column">\n                        <span class="font-size-10" translate="MOTIONDIALER.SELECT_TYPE">Select type</span>\n                        <md-select class="font-size-12 no-margin" ng-model="vm.query.recallme" ng-change="vm.getScheduledCalls()">\n                            <md-option ng-value="undefined"><em translate="MOTIONDIALER.ALL">All</em></md-option>\n                            <md-option ng-value="1" translate="MOTIONDIALER.RECALLME">Recall me</md-option>\n                            <md-option ng-value="0" translate="MOTIONDIALER.INQUEUE">Recall in queue</md-option>\n                        </md-select>\n                    </div> --\x3e\n            <md-button class="md-icon-button" ng-click="vm.getScheduledCalls()" aria-label="refresh scheuled 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 tranlsate="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>{{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\' }}"></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></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'sms\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getSmsInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getSmsInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getSmsInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_ACCOUNT">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getSmsInteractions()">\n                    <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.smsAccounts.rows">{{smsAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getSmsInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getSmsInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-button>\n            </div>\n            <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n                <md-button class="md-icon-button interaction-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)">{{ 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>\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 md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.ACCOUNT\' | 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.smsInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="smsInteraction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': smsInteraction.unread}">\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{smsInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!smsInteraction.closed && smsInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in smsInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!smsInteraction.closed && smsInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'sms\')" layout-margin>{{smsInteraction.unread}}</span>\n                                <md-icon ng-if="smsInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(smsInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{smsInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell>\n                        <div layout="row" ng-if="smsInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{smsInteraction.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="font-size-10 text-truncate">{{smsInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!smsInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell>\n                        <span ng-if="smsInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="smsInteraction.disposition">- {{smsInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="smsInteraction.closed">{{smsInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!smsInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="smsInteraction.substatus"> - {{smsInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(smsInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell class="smsAccount">\n                        {{ vm.getSmsAccountLabel(smsInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="smsInteraction.Tags.length">\n                            <div ng-if="smsInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': smsInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{smsInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="smsInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in smsInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showSmsInteraction($event, smsInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Sms\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadSmsInteraction($event, smsInteraction)" translate="DASHBOARDS.DOWNLOAD">\n                                        Download Sms\n                                    </md-button>\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: \'{{\'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">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="VOICE.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'VOICE.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getVoiceCalls()" placeholder="{{ \'VOICE.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="VOICE.SELECT_TYPE">Select a type</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.type" ng-change="vm.getVoiceCalls()">\n                    <md-option value="internal" translate="VOICE.INTERNAL">Internal</md-option>\n                    <md-option value="inbound" translate="VOICE.INBOUND">Inbound</md-option>\n                    <md-option value="outbound" translate="VOICE.OUTBOUND">Outbound</md-option>\n                    <md-option value="dialer" translate="VOICE.DIALER">Dialer</md-option>\n                    <md-option ng-value="null" translate="VOICE.ALL">All</md-option>\n                </md-select>\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.getVoiceCalls">\n                <tr md-row>\n                    <th md-column md-order-by="id">ID</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>{{ \'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="8">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="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">{{voiceCall.type}}</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="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\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>{{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>{{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="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/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 }} </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\'"></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\'"></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\'"></div>\n                    </div>\n                </div>\n            </md-content>\n            \x3c!-- / CONTENT --\x3e\n\n            \x3c!-- FOOTER --\x3e\n            <div ng-if="!vm.interaction.closed && vm.tab.channel != \'mail\' && vm.tab.channel !== \'fax\' && (vm.tab.channel != \'sms\' || !vm.tab.spy)" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'"></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\'"></md-card>\n    </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),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" 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" 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" 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" 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">\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.deleteAttachment(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">\n                <md-item-template>\n                    <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16"></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 }} - {{ 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/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\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()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.DISPOSITIONS">Dispositions</label>\n                <md-select name="disposition" ng-model="vm.interaction.disposition" required>\n                    \x3c!-- <md-select ng-disabled="vm.interaction.closed && vm.interaction.disposition" name="disposition" ng-model="vm.interaction.disposition" required> --\x3e\n                    <md-option ng-value="null">NONE</md-option>\n                    <md-option ng-value="d.name" ng-repeat="d in vm.dispositions.rows">{{ d.name }}</md-option>\n                    <md-option ng-value="gd.name" ng-repeat="gd in vm.globalDispositions.rows">{{ gd.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\n            <md-input-container class="md-block">\n                <label translate="DASHBOARDS.NOTE">Note</label>\n                \x3c!-- <textarea ng-disabled="vm.interaction.closed && vm.interaction.disposition" ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea> --\x3e\n                <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></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        \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.saveDisposition(true)" class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && vm.interaction.disposition" 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)" class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.interaction.disposition" 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(false)" class="send-button md-accent md-raised" ng-if="vm.interaction.closed" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n                    DISPOSE\n                </md-button>\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            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <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="DASHBOARDS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.transfer.type" required>\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                <div ng-messages="transferForm.type.$error" ng-show="transferForm.type.$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="DASHBOARDS.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.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">{{ 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" 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">Customer IP</p>\n            <h4>{{item.customerIp}}</h4>\n        </div>\n    </md-list-item>\n    <md-divider></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>\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>\n                    </md-input-container>\n\n                    <md-input-container ng-if="vm.tab.channel != \'fax\'" 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>\n                    </md-input-container>\n\n                    <md-input-container ng-if="vm.tab.channel == \'fax\'" 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>\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}} - <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\'"></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\'"></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\'"></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-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\'"></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\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\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\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\n    <div ng-if="item.ChatWebsiteId">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'"></div>\n    </div>\n    <div ng-if="item.MailAccountId">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'"></div>\n    </div>\n\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-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\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <md-list-item ng-if="item.Tags.length">\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",'<md-content layout="column" layout-align="end center">\n    <div layout-margin>\n        <md-input-container>\n            <md-select ng-model="vm.channel" placeholder="Channel">\n                <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n                <md-option ng-value="\'voice\'" translate="DASHBOARDS.VOICE">Voice</md-option>\n                <md-option ng-value="\'chat\'">Chat</md-option>\n                <md-option ng-value="\'mail\'">Mail</md-option>\n                <md-option ng-value="\'sms\'">Sms</md-option>\n                <md-option ng-value="\'fax\'">Fax</md-option>\n                <md-option ng-value="\'openchannel\'">Openchannel</md-option>\n            </md-select>\n        </md-input-container>\n    </div>\n    <div layout-margin layout="row" layout-align="space-between center">\n        <div flex-gt-xs>\n            <md-datepicker ng-model="vm.dateFrom" md-placeholder="Enter date"></md-datepicker>\n        </div>\n\n        <div flex-gt-xs>\n            <md-datepicker ng-model="vm.dateTo" md-placeholder="Enter date"></md-datepicker>\n        </div>\n    </div>\n</md-content>\n\n<div id="timeline" ms-timeline="vm.timelineOptions" layout="column" ng-if="vm.journey && vm.journey.length">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey | getChannelByItem:vm.channel:vm.dateFrom:vm.dateTo | orderBy:\'-createdAt\'">\n        <div class="timeline-card">\n            <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n                <div class="header p-6" layout="row" layout-align="space-between center">\n\n                    <md-button class="md-fab md-mini" aria-label="icon-channel" ng-class="vm.getColorByItem(item) + \'-bg\'">\n                        <md-icon ng-if="item.FaxAccountId" md-font-icon="icon-deskphone"></md-icon>\n                        <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-google-earth"></md-icon>\n                        <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text"></md-icon>\n                        <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email"></md-icon>\n                        <md-icon ng-if="item.ChatWebsiteId" md-font-icon="icon-hangouts"></md-icon>\n                        <md-icon ng-if="item.amaflags" md-font-icon="icon-phone"></md-icon>\n                    </md-button>\n\n                    <div class="info" layout="column" ng-init="item.showMore = false">\n                        <span class="font-size-12 text-truncate">#{{item.id}} - {{ item.Account.key || item.destination }}</span>\n                        <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                        <span>\n                            <a class="toggle-details md-accent-color" ng-hide="item.showMore" ng-click="item.showMore = !item.showMore" translate="DASHBOARDS.SHOW_DETAILS">\n                                Show Details\n                            </a>\n                            <a class="toggle-details md-accent-color" ng-show="item.showMore" ng-click="item.showMore = !item.showMore" translate="DASHBOARDS.HIDE_DETAILS">\n                                Hide Details\n                            </a>\n                        </span>\n                    </div>\n\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\n                </div>\n\n                <div ng-if="item.showMore">\n                    <div ng-if="!item.amaflags" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'"></div>\n                    <div ng-if="item.amaflags" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'"></div>\n                </div>\n\n                <md-divider></md-divider>\n\n                <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n                    <div ng-if="item.closed && !amaflags" class="text-truncate white-fg">\n                        <span class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.CLOSED\' | translate}} ({{ item.disposition || (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate)}})">{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.CLOSED\' | translate}} ({{ item.disposition || (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }})</span>\n                    </div>\n                    <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && !item.amaflags" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}<span ng-if="item.substatus"> - {{ item.substatus }}</span></span>\n                    <span ng-if="item.amaflags" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.DISPOSITION\' | translate}}: {{ item.userDisposition || \'No Dispose\'}}">{{ \'DASHBOARDS.DISPOSITION\' | translate}}: {{ item.userDisposition || (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate)}}</span>\n                    <div flex></div>\n                    <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && vm.isMyAccount(item)" ng-disabled="item.amaflags" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction($event, item)">\n                        <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n                    </md-button>\n\n                </div>\n            </md-card>\n        </div>\n    </div>\n    \x3c!-- / TIMELINE ITEM --\x3e\n</div>\n<div ng-if="!vm.journey || !vm.journey.length" 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>{{item.source ? item.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="DASHBOARDS.DESTINATION">Destination</p>\n            <h4>{{item.destination ? item.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="DASHBOARDS.CALLERID">Caller Id</p>\n            <h4>{{item.callerid ? item.callerid : \'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="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.UNIQUEID">Uniqueid</p>\n            <h4>{{item.uniqueid ? item.uniqueid : \'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="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 ng-if="item.threadId" translate="DASHBOARDS.PUBLIC">Public</h4>\n            <h4 ng-if="!item.threadId" translate="DASHBOARDS.PRIVATE">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                    {{ vm.getLabelByMessage(message) }} - {{message.createdAt | date: \'medium\'}}\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                {{ vm.getLabelByMessage(message) }} - {{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                    {{ vm.getLabelByMessage(message) }} - {{message.createdAt | date: \'medium\'}}\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 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>\n        <div ng-if="!message.AttachmentId" 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'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.timelineOptions" 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">\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></md-tooltip>\n                        <div layout="row" layout-align="start center">\n                            <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon><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)">{{ 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]">[{{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)"><strong>{{message.from}}</strong>\n                                        <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16"></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">{{ message.originTo || message.to }}</span></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"><em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are registered as a</span> <span class="blue-grey">CC</span></em></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"><em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are registered as a</span> <span class="red-fg">BCC</span></em></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">{{message.from}}</span>\n                                    <span class="detail">{{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">{{ message.originCc }}</span>\n                                    <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">{{ message.cc }}</span>\n                                    <span class="detail" ng-if="message.direction === \'out\' && message.cc">{{ message.cc }}</span>\n                                    \x3c!-- End retrocompatibility --\x3e\n                                    <span class="detail" ng-if="message.bcc">{{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\'">{{message.from.indexOf(vm.contact.email) >= 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 || 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                            \x3c!-- <md-button 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> --\x3e\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                            <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></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></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" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span></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" 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></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>\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">\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><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)">{{ 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>\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 interaction...</span>'),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>'),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"> - {{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" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\'"></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\'"></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\'"></div>\n            </div>\n        </div>\n        <md-button ng-if="vm.tab.channel !== \'mail\'" class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)">\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>\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                <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",'<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>\n<md-menu 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></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>\n            <md-button ng-click="vm.downloadInteraction(vm.interaction, 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.downloadInteraction(vm.interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                Download without attachments\n            </md-button>\n        </md-menu-item>\n    </md-menu-content>\n</md-menu>'),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>'),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" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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" 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            \x3c!--  NOTE: aggoiungere nel controller ng-if="vm.hasPermission()" --\x3e\n            <md-tabs ng-if="vm.hasPermission()" 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-tabs>\n        </div>\n        \x3c!-- END CONTENT --\x3e\n\n        <md-content ng-if="!vm.hasPermission()" 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>\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/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-if="!vm.newFaxAccount || (vm.newFaxAccount && TrunkId.canSelect)" ng-disabled="!TrunkId.canSelect">{{ 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-if="!vm.newFaxAccount || (vm.newFaxAccount && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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"></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">{{ 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" 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">{{ 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" 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">{{ 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">{{ 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/faxDispositions/dialog.html",'<md-dialog class="faxDisposition-dialog" aria-label="New FaxDisposition">\n    <form name="faxDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.faxDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="faxDispositionForm[\'name\'].$error" ng-show="faxDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxDisposition" ng-click="vm.saveFaxDisposition()" class="send-button md-accent md-raised" ng-disabled="faxDispositionForm.$invalid || faxDispositionForm.$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.newFaxDisposition" ng-click="vm.addNewFaxDisposition()" class="send-button md-accent md-raised" ng-disabled="faxDispositionForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXDISPOSITION" translate-attr-aria-label="FAX.ADD_FAXDISPOSITION">\n                    ADD FAXDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxDisposition" ng-click="vm.deleteFaxDisposition($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/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                        <span ng-if="vm.faxAccount.exten">{{vm.faxAccount.exten}}</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) || (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">{{ 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">{{ 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" 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, 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" 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" 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                </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 class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="FaxAccountFaxDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountFaxDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="FAX.FAXDISPOSITIONS">FaxDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event)" aria-label="add faxDisposition" translate translate-attr-label="FAX.ADD_FAXDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedFaxAccountFaxDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedFaxAccountFaxDispositions.length}} {{vm_dc.selectedFaxAccountFaxDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountFaxDispositions" 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.deleteSelectedFaxAccountFaxDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAXACCOUNTS.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.selectedFaxAccountFaxDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountFaxDispositions">\n                                        <tr md-row>\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="createdAt">{{ \'FAX.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="faxDisposition" md-select-id="id" ng-repeat="faxDisposition in vm_dc.faxAccountFaxDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event, faxDisposition)" md-cell>{{faxDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event, faxDisposition)" md-cell>{{faxDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event, faxDisposition)" md-cell>{{faxDisposition.createdAt | date:\'medium\'}}</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\n                                                    <md-menu-content width="3">\n                                                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                                            <md-button ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event, faxDisposition)" translate="FAX.EDIT_FAXDISPOSITION">\n                                                                Edit FaxDisposition\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(faxDisposition, $event)" translate="FAX.DELETE_FAXDISPOSITION">\n                                                                Delete FaxDisposition\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.faxAccountFaxDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="FAX.NO_FAXDISPOSITION_AVAILABLE">No faxdisposition available</span>\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.faxAccountFaxDispositions.count}}" md-on-paginate="vm_dc.getFaxAccountFaxDispositions" 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="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-ligth" 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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="FAXACCOUNTS.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.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">{{ \'FAX.ID\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'FAX.STARTEDAT\' | translate }}</th>\n                                            <th md-column>{{ \'FAX.CONTACT\' | translate }}</th>\n                                            <th md-column>{{ \'FAX.AGENT\' | translate }}</th>\n                                            <th md-column md-order-by="closedAt">{{ \'FAX.CLOSEDAT\' | translate }}</th>\n                                            <th md-column md-order-by="disposition">{{ \'FAX.DISPOSITION\' | translate }}</th>\n                                            <th md-column md-order-by="note">{{ \'FAX.NOTES\' | translate }}</th>\n                                            <th md-column md-order-by="tag">{{ \'FAX.TAGS\' | translate }}</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">\n                                            <td md-cell>{{interaction.id}}</td>\n                                            <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.Contact.firstName}}</td>\n                                            <td md-cell>{{interaction.Owner.name}}</td>\n                                            <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.disposition}}</td>\n                                            <td md-cell>{{interaction.note}}</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"></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>\n                                                            <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                                                Download Interaction\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="13">\n                                                <span class="text-boxed-ligth" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\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="FAXACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="FAXACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(faxAccount, $event)" translate="FAX.EDIT_FAXACCOUNT">\n                                                    Edit FaxAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(faxAccount, $event)" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                                                    Interactions FaxAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event)" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                                                    goToRealtime FaxAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(faxAccount, $event)" translate="FAX.AGENTADD_FAXACCOUNT">\n                                                    AgentAdd FaxAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(faxAccount, $event)" translate="FAX.DELETE_FAXACCOUNT">\n                                                    Delete FaxAccount\n                                                </md-button>\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.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" 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"></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"></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                        <span ng-if="vm.faxQueue.exten">{{vm.faxQueue.exten}}</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" 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="FAXQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="FAXQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(faxQueue, $event)" translate="FAX.EDIT_FAXQUEUE">\n                                                    Edit FaxQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(faxQueue, $event)" translate="FAX.TEAMADD_FAXQUEUE">\n                                                    teamadd FaxQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(faxQueue, $event)" translate="FAX.AGENTADD_FAXQUEUE">\n                                                    agentadd FaxQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(faxQueue, $event)" translate="FAX.DELETE_FAXQUEUE">\n                                                    Delete FaxQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event)" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                                                    goToRealtime FaxQueue\n                                                </md-button>\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.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.query.filter = 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 tranlsate="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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'FAX.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'FAX.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'FAX.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'FAX.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'FAX.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditFaxQueue($event, vm.queues[value])" translate="FAX.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n        \x3c!-- <md-button class="md-icon-button" ng-click="vm.showInfo($event)">\n      <i class="icon-information-outline grey-600-fg">\n        <md-tooltip>{{\'FAX.INFO\' | translate}}</md-tooltip>\n      </i>\n    </md-button> --\x3e\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 tranlsate="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="http://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">\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="DESKACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="DESKACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(deskAccount, $event)" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                                                    Edit DeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event)" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                                                    Test DeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(deskAccount, $event)" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                                                    Delete DeskAccount\n                                                </md-button>\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: \'{{\'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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.deskAccount.exten">{{vm.deskAccount.exten}}</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" 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/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">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.freshdeskAccount.exten">{{vm.freshdeskAccount.exten}}</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" 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="FRESHDESKACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="FRESHDESKACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(freshdeskAccount, $event)" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                                                    Edit FreshdeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event)" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                                                    Test FreshdeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event)" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                                                    Delete FreshdeskAccount\n                                                </md-button>\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: \'{{\'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/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">\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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.salesforceAccount.exten">{{vm.salesforceAccount.exten}}</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" 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">ADVANCED</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: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">{{ 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\'}]">{{ 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.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="SALESFORCEACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SALESFORCEACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(salesforceAccount, $event)" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                                                    Edit SalesforceAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event)" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                                                    Test SalesforceAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event)" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                                                    Delete SalesforceAccount\n                                                </md-button>\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: \'{{\'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/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">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.sugarcrmAccount.exten">{{vm.sugarcrmAccount.exten}}</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" 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="SUGARCRMACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SUGARCRMACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(sugarcrmAccount, $event)" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                                                    Edit SugarcrmAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event)" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                                                    Test SugarcrmAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event)" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                                                    Delete SugarcrmAccount\n                                                </md-button>\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: \'{{\'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">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.vtigerAccount.exten">{{vm.vtigerAccount.exten}}</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" 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="VTIGERACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VTIGERACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(vtigerAccount, $event)" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                                                    Edit VtigerAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event)" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                                                    Test VtigerAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event)" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                                                    Delete VtigerAccount\n                                                </md-button>\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: \'{{\'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">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.zendeskAccount.exten">{{vm.zendeskAccount.exten}}</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" 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="ZENDESKACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="ZENDESKACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(zendeskAccount, $event)" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                                                    Edit ZendeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event)" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                                                    Test ZendeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event)" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                                                    Delete ZendeskAccount\n                                                </md-button>\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: \'{{\'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.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.zohoAccount.authToken" ng-required="true">\n\n                <div ng-messages="zohoAccountForm[\'authToken\'].$error" ng-show="zohoAccountForm[\'authToken\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="INTEGRATIONS.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="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.zohoAccount.exten">{{vm.zohoAccount.exten}}</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.AUTHTOKEN">AuthToken</label>\n                                <input type="text" name="authToken" ng-model="vm.zohoAccount.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="INTEGRATIONS.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="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" 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\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="ZOHOACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="ZOHOACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 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="4">\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 md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(zohoAccount, $event)" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                                                    Edit ZohoAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event)" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                                                    Test ZohoAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(zohoAccount, $event)" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                                                    Delete ZohoAccount\n                                                </md-button>\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: \'{{\'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-ligth" 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                        <span ng-if="vm.project.exten">{{vm.project.exten}}</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                                <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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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="PROJECTS.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.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">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                                            <th md-column md-order-by="starttime">{{ \'JSCRIPTY.STARTTIME\' | translate }}</th>\n                                            <th md-column md-order-by="endtime">{{ \'JSCRIPTY.ENDTIME\' | translate }}</th>\n                                            <th md-column md-order-by="membername">{{ \'JSCRIPTY.MEMBERNAME\' | translate }}</th>\n                                            <th md-column md-order-by="calleridnum">{{ \'JSCRIPTY.CALLERIDNUM\' | translate }}</th>\n                                            <th md-column md-order-by="completed">{{ \'JSCRIPTY.COMPLETE\' | translate }}</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>{{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.calleridnum}}</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                                                <span class="text-boxed-ligth" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\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)">\n                            <div class="pb-16" layout="row" layout-align="space-between center">\n                                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS">Answers</div>\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-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 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-ligth" 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="PROJECTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="PROJECTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(project, $event)" translate="JSCRIPTY.EDIT_PROJECT">\n                                                    Edit Project\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(project, $event)" translate="JSCRIPTY.CLONE_PROJECT">\n                                                    clone Project\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.sessionsgoto(project, $event)" translate="JSCRIPTY.SESSIONS_PROJECT">\n                                                    Sessions Project\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(project, $event)" translate="JSCRIPTY.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: \'{{\'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-if="!vm.newMailAccount || (vm.newMailAccount && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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" 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" 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"></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">{{ 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" 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="1">One Time</md-option>\n                    <md-option ng-value="0">Always</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            <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, 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">{{ 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" 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">{{ 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">{{ 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, 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/mailDispositions/dialog.html",'<md-dialog class="mailDisposition-dialog" aria-label="New MailDisposition">\n    <form name="mailDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.mailDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="mailDispositionForm[\'name\'].$error" ng-show="mailDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailDisposition" ng-click="vm.saveMailDisposition()" class="send-button md-accent md-raised" ng-disabled="mailDispositionForm.$invalid || mailDispositionForm.$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.newMailDisposition" ng-click="vm.addNewMailDisposition()" class="send-button md-accent md-raised" ng-disabled="mailDispositionForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILDISPOSITION" translate-attr-aria-label="MAIL.ADD_MAILDISPOSITION">\n                    ADD MAILDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailDisposition" ng-click="vm.deleteMailDisposition($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                        <span ng-if="vm.mailAccount.exten">{{vm.mailAccount.exten}}</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) || (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">{{ 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" 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, 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" 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, 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" 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" 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" 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" 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" 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" 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.DISPOSITIONS">DISPOSITIONS</span>\n                </md-tab-label>\n                <md-tab-body>\n                    <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="MailAccountMailDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="MAIL.MAILDISPOSITIONS">MailDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailDisposition($event)" aria-label="add mailDisposition" translate translate-attr-label="MAIL.ADD_MAILDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedMailAccountMailDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedMailAccountMailDispositions.length}} {{vm_dc.selectedMailAccountMailDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailDispositions" 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.deleteSelectedMailAccountMailDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAILACCOUNTS.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.selectedMailAccountMailDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailDispositions">\n                                        <tr md-row>\n                                            <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'MAIL.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="mailDisposition" md-select-id="id" ng-repeat="mailDisposition in vm_dc.mailAccountMailDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailDisposition($event, mailDisposition)" md-cell>{{mailDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailDisposition($event, mailDisposition)" md-cell>{{mailDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailDisposition($event, mailDisposition)" md-cell>{{mailDisposition.createdAt | date:\'medium\'}}</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.createOrEditMailAccountMailDisposition($event, mailDisposition)" translate="MAIL.EDIT_MAILDISPOSITION">\n                                                                Edit MailDisposition\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(mailDisposition, $event)" translate="MAIL.DELETE_MAILDISPOSITION">\n                                                                Delete MailDisposition\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.mailAccountMailDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="MAIL.NO_MAILDISPOSITION_AVAILABLE">No maildisposition available</span>\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.mailAccountMailDispositions.count}}" md-on-paginate="vm_dc.getMailAccountMailDispositions" 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.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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="MAILACCOUNTS.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.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">{{ \'MAIL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'MAIL.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'MAIL.CREATED_AT\' | translate }}</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>{{mailCannedAnswer.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.key}}</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>{{mailCannedAnswer.description}}</td>\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.createdAt | date:\'medium\'}}</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                                                <span class="text-boxed-ligth" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\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-ligth" 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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="MAILACCOUNTS.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.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">{{ \'MAIL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'MAIL.STARTEDAT\' | translate }}</th>\n                                            <th md-column>{{ \'MAIL.CONTACT\' | translate }}</th>\n                                            <th md-column>{{ \'MAIL.AGENT\' | translate }}</th>\n                                            <th md-column md-order-by="closedAt">{{ \'MAIL.CLOSEDAT\' | translate }}</th>\n                                            <th md-column md-order-by="disposition">{{ \'MAIL.DISPOSITION\' | translate }}</th>\n                                            <th md-column md-order-by="note">{{ \'MAIL.NOTES\' | translate }}</th>\n                                            <th md-column md-order-by="tag">{{ \'MAIL.TAGS\' | translate }}</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">\n                                            <td md-cell>{{interaction.id}}</td>\n                                            <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.Contact.firstName}}</td>\n                                            <td md-cell>{{interaction.Owner.name}}</td>\n                                            <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.disposition}}</td>\n                                            <td md-cell>{{interaction.note}}</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"></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>\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>\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                                                <span class="text-boxed-ligth" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\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="MAILACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="MAILACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                                                    Edit MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                                                    verifysmtp MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                                                    Interactions MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event)" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                                                    goToRealtime MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                                                    AgentAdd MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                                                    Delete MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                        </md-menu-content>\n                                    </md-menu>\n                                </td>\n                            </tr>\n                        </tbody>\n                    </table>\n                </md-table-container>\n\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n            </md-card>\n            \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" 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"></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"></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                        <span ng-if="vm.mailQueue.exten">{{vm.mailQueue.exten}}</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" 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="MAILQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="MAILQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(mailQueue, $event)" translate="MAIL.EDIT_MAILQUEUE">\n                                                    Edit MailQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(mailQueue, $event)" translate="MAIL.TEAMADD_MAILQUEUE">\n                                                    teamadd MailQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(mailQueue, $event)" translate="MAIL.AGENTADD_MAILQUEUE">\n                                                    agentadd MailQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(mailQueue, $event)" translate="MAIL.DELETE_MAILQUEUE">\n                                                    Delete MailQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event)" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                                                    goToRealtime MailQueue\n                                                </md-button>\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.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="MAILSUBSTATUSES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="MAILSUBSTATUSES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(mailSubstatus, $event)" translate="MAIL.EDIT_MAILSUBSTATUS">\n                                                    Edit MailSubstatus\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event)" translate="MAIL.DELETE_MAILSUBSTATUS">\n                                                    Delete MailSubstatus\n                                                </md-button>\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.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.query.filter = 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 tranlsate="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 | 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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'MAIL.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'MAIL.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'MAIL.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditMailQueue($event, vm.queues[value])" translate="MAIL.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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                        <span ng-if="vm.plugin.exten">{{vm.plugin.exten}}</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="PLUGINS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="PLUGINS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n                                                <md-button ng-click="vm.installplugin(plugin, $event)" translate="MARKETPLACE.INSTALL_PLUGIN">\n                                                    Install Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(plugin, $event)" translate="MARKETPLACE.EDIT_PLUGIN">\n                                                    Edit Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n                                                <md-button ng-click="vm.stopplugin(plugin, $event)" translate="MARKETPLACE.STOP_PLUGIN">\n                                                    Stop Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n                                                <md-button ng-click="vm.restartplugin(plugin, $event)" translate="MARKETPLACE.RESTART_PLUGIN">\n                                                    Restart Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.downloadfile2(plugin, $event)" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                                                    Download Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n                                                <md-button ng-click="vm.uninstallplugin(plugin, $event)" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                                                    Uninstall Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(plugin, $event)" translate="MARKETPLACE.DELETE_PLUGIN">\n                                                    Delete Plugin\n                                                </md-button>\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: \'{{\'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-if="!vm.newIvrCampaign || (vm.newIvrCampaign && TrunkId.canSelect)" ng-disabled="!TrunkId.canSelect">{{ 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-if="!vm.newIvrCampaign || (vm.newIvrCampaign && IntervalId.canSelect)" ng-disabled="!IntervalId.canSelect">{{ 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-if="!vm.newIvrCampaign || (vm.newIvrCampaign && SquareProjectId.canSelect)" ng-disabled="!SquareProjectId.canSelect">{{ 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" 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"></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"></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                        <span ng-if="vm.ivrCampaign.exten">{{vm.ivrCampaign.exten}}</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) || (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">{{ 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">{{ 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">{{ 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" 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">{{ 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" 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" 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" 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+$/" 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" 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" 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" 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" 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" 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" 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" 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                </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" 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">\n                                    < <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span>\n                    </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" 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" 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" 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" 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" 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" 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" 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" 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" 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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="IVRCAMPAIGNS.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.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">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="countcongestionretry">{{ \'MOTIONDIALER.CONGESTION\' | translate }}</th>\n                                    <th md-column md-order-by="countbusyretry">{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n                                    <th md-column md-order-by="countnoanswerretry">{{ \'MOTIONDIALER.NOANSWER\' | translate }}</th>\n                                    <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</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>{{hopper.ContactId}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.phone}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.countcongestionretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.countbusyretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.countnoanswerretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{ vm_dc.arraypriority[hopper.priority].option }}</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.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="10">\n                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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>\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">{{ \'MOTIONDIALER.UNIQUEID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="calleridnum">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="calleridname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="statedesc">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                                    <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="starttime">{{ \'MOTIONDIALER.STARTTIME\' | translate }}</th>\n                                    <th md-column md-order-by="endtime">{{ \'MOTIONDIALER.ENDTIME\' | translate }}</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>{{hopperHistory.uniqueid}}</td>\n                                    <td md-cell>{{hopperHistory.ContactId}}</td>\n                                    <td md-cell>{{hopperHistory.calleridnum}}</td>\n                                    <td md-cell>{{hopperHistory.calleridname}}</td>\n                                    <td md-cell>{{hopperHistory.statedesc}}</td>\n                                    <td md-cell>{{hopperHistory.scheduledat | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperHistory.starttime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperHistory.endtime | date:\'medium\'}}</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                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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-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="IVRCAMPAIGNS.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>\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">{{ \'MOTIONDIALER.UNIQUEID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="calleridnum">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="calleridname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="statedesc">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                                    <th md-column md-order-by="countcongestionretry">{{ \'MOTIONDIALER.CONGESTION\' | translate }}</th>\n                                    <th md-column md-order-by="countbusyretry">{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n                                    <th md-column md-order-by="countnoanswerretry">{{ \'MOTIONDIALER.NOANSWER\' | translate }}</th>\n                                    <th md-column md-order-by="starttime">{{ \'MOTIONDIALER.STARTTIME\' | translate }}</th>\n                                    <th md-column md-order-by="endtime">{{ \'MOTIONDIALER.ENDTIME\' | translate }}</th>\n                                    <th md-column md-order-by="disposition">{{ \'MOTIONDIALER.DISPOSITION\' | translate }}</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>{{hopperFinal.uniqueid}}</td>\n                                    <td md-cell>{{hopperFinal.ContactId}}</td>\n                                    <td md-cell>{{hopperFinal.calleridnum}}</td>\n                                    <td md-cell>{{hopperFinal.calleridname}}</td>\n                                    <td md-cell>{{hopperFinal.statedesc}}</td>\n                                    <td md-cell>{{hopperFinal.countcongestionretry}}</td>\n                                    <td md-cell>{{hopperFinal.countbusyretry}}</td>\n                                    <td md-cell>{{hopperFinal.countnoanswerretry}}</td>\n                                    <td md-cell>{{hopperFinal.starttime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperFinal.endtime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperFinal.disposition}}</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="23">\n                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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>\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">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</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>{{hopperBlack.ContactId}}</td>\n                                    <td md-cell>{{hopperBlack.phone}}</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                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\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="IVRCAMPAIGNS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="IVRCAMPAIGNS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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})[0].name }}</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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(ivrCampaign, $event)" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                                                    Edit IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(ivrCampaign, $event)" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                                                    clone IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.listadddialog(ivrCampaign, $event)" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                                                    listadd IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event)" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                                                    blacklistadd IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event)" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                                                    Delete IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event)" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                                                    goToRealtime IvrCampaign\n                                                </md-button>\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.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-if="!vm.newQueueCampaign || (vm.newQueueCampaign && TrunkId.canSelect)" ng-disabled="!TrunkId.canSelect">{{ 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-if="!vm.newQueueCampaign || (vm.newQueueCampaign && IntervalId.canSelect)" ng-disabled="!IntervalId.canSelect">{{ 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">\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">\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">\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" 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" 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" 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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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"></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-if="!vm.newHopper || (vm.newHopper && UserId.canSelect)" ng-disabled="!UserId.canSelect">{{ 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"></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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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                        <span ng-if="vm.queueCampaign.exten">{{vm.queueCampaign.exten}}</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) || (advancedForm.$invalid) || (advancedpreviewForm.$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">{{ 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">{{ 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">{{ 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" 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">\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">\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">\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" 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" 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" 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" 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" 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" 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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" 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" 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+$/" 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" 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" 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" 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" 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" 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" 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" 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                </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\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\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" 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">\n                                    < <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span>\n                    </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" 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" 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" 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" 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" 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" 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" 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" 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" 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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="QUEUECAMPAIGNS.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.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">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="countcongestionretry">{{ \'MOTIONDIALER.CONGESTION\' | translate }}</th>\n                                    <th md-column md-order-by="countbusyretry">{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n                                    <th md-column md-order-by="countnoanswerretry">{{ \'MOTIONDIALER.NOANSWER\' | translate }}</th>\n                                    <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                                    <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLAGENT\' | translate }}</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>{{hopper.ContactId}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.phone}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.countcongestionretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.countbusyretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.countnoanswerretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{ vm_dc.arraypriority[hopper.priority].option }}</td>\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="12">\n                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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>\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">{{ \'MOTIONDIALER.UNIQUEID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="calleridnum">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="calleridname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="statedesc">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                                    <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="starttime">{{ \'MOTIONDIALER.STARTTIME\' | translate }}</th>\n                                    <th md-column md-order-by="endtime">{{ \'MOTIONDIALER.ENDTIME\' | translate }}</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>{{hopperHistory.uniqueid}}</td>\n                                    <td md-cell>{{hopperHistory.ContactId}}</td>\n                                    <td md-cell>{{hopperHistory.calleridnum}}</td>\n                                    <td md-cell>{{hopperHistory.calleridname}}</td>\n                                    <td md-cell>{{hopperHistory.statedesc}}</td>\n                                    <td md-cell>{{hopperHistory.scheduledat | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperHistory.starttime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperHistory.endtime | date:\'medium\'}}</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                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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-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="QUEUECAMPAIGNS.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>\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">{{ \'MOTIONDIALER.UNIQUEID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="calleridnum">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="calleridname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="statedesc">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                                    <th md-column md-order-by="countcongestionretry">{{ \'MOTIONDIALER.CONGESTION\' | translate }}</th>\n                                    <th md-column md-order-by="countbusyretry">{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n                                    <th md-column md-order-by="countnoanswerretry">{{ \'MOTIONDIALER.NOANSWER\' | translate }}</th>\n                                    <th md-column md-order-by="starttime">{{ \'MOTIONDIALER.STARTTIME\' | translate }}</th>\n                                    <th md-column md-order-by="endtime">{{ \'MOTIONDIALER.ENDTIME\' | translate }}</th>\n                                    <th md-column md-order-by="disposition">{{ \'MOTIONDIALER.DISPOSITION\' | translate }}</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>{{hopperFinal.uniqueid}}</td>\n                                    <td md-cell>{{hopperFinal.ContactId}}</td>\n                                    <td md-cell>{{hopperFinal.calleridnum}}</td>\n                                    <td md-cell>{{hopperFinal.calleridname}}</td>\n                                    <td md-cell>{{hopperFinal.statedesc}}</td>\n                                    <td md-cell>{{hopperFinal.countcongestionretry}}</td>\n                                    <td md-cell>{{hopperFinal.countbusyretry}}</td>\n                                    <td md-cell>{{hopperFinal.countnoanswerretry}}</td>\n                                    <td md-cell>{{hopperFinal.starttime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperFinal.endtime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperFinal.disposition}}</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="23">\n                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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>\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">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</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>{{hopperBlack.ContactId}}</td>\n                                    <td md-cell>{{hopperBlack.phone}}</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                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\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="QUEUECAMPAIGNS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="QUEUECAMPAIGNS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(queueCampaign, $event)" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                                                    Edit QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(queueCampaign, $event)" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                                                    clone QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.listadddialog(queueCampaign, $event)" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                                                    listadd QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event)" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                                                    blacklistadd QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(queueCampaign, $event)" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                                                    teamadd QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(queueCampaign, $event)" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                                                    agentadd QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(queueCampaign, $event)" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                                                    Delete QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event)" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                                                    goToRealtime QueueCampaign\n                                                </md-button>\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.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.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 black-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getContacts()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.lastAssignedTo" ng-change="vm.getContacts()">\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                    <md-option ng-value="agent.name" ng-repeat="agent in vm.agents.rows">{{agent.name}}</md-option>\n                </md-select>\n            </div>\n            <div ng-if="vm.queues.count" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.queue" ng-change="vm.getContacts()">\n                    <md-option ng-value="undefined" ng-if="vm.queues.count > 1"><em translate="DASHBOARDS.ALL">All</em></md-option>\n                    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows">{{queue.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n                <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | 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.getContacts">\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 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 tranlsate="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 md-cell class="id">{{contact.id}}</td>\n                    <td md-cell class="firstName">{{contact.calleridname}}</td>\n                    <td md-cell class="list">{{contact.calleridnum}}</td>\n                    <td md-cell class="list">{{vm.queuesMap[contact.queue]}}</td>\n                    <td md-cell class="list">{{contact.queuecallerabandonAt ? (contact.queuecallerabandonAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.queuecallerexitAt ? (contact.queuecallerexitAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.queuecallerexitreason}}</td>\n                    <td md-cell class="list">{{contact.lastAssignedTo}}</td>\n                    <td md-cell class="list">{{contact.disposition}}</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">Assigned a</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="contact.lastAssignedTo">\n                                                <md-button ng-click="vm.assignedA(contact)"><em translate="DASHBOARDS.NONE">Not Assigned</em></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.assignedA(contact,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-menu>\n                                        <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="vm.dispositions.length > 0" ng-repeat="disposition in vm.dispositions">\n                                                <md-button ng-click="vm.disposed(contact, disposition.name)">{{disposition.name}}</md-button>\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\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>'),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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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.query.filter = 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 tranlsate="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        \x3c!-- <div flex></div>\n    <ms-search-bar on-search="vm.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar> --\x3e\n    </div>\n</md-toolbar>\n\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 tranlsate="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>{{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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                    </span>\n                </td>\n                <td md-cell>\n                    <span class="text-boxed">\n                        <timer start-time="channel.queuecallerjoinAt" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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\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>\n                                    <md-button ng-click="$mdMenu.open()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">Redirect to Agent</md-button>\n                                    <md-menu-content>\n                                        <md-menu-item ng-repeat="agent in vm.agents.rows">\n                                            <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">{{agent.name}}</md-button>\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\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.query.filter = 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 tranlsate="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/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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.READY\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.ORIGINATED\' | 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">\n                <td md-cell colspan="12">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{(vm.queues[value].talking || 0)  +  (vm.queues[value].pTalking || 0)}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].originated || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].message ? (\'MOTIONDIALER.\'+vm.queues[value].message | translate) : \'--\'}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].dialMethod || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].Trunk ? vm.queues[value].Trunk.name : \'--\'}}</span>\n                </td>\n                <td md-cell>\n                    <md-icon md-colors="{color: {{vm.queues[value].dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{vm.queues[value].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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditMotionDialerQueue($event, vm.queues[value])" translate="MOTIONDIALER.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n        <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.AGENTS">Agents</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.QUEUES">Queues</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n                </md-tab-label>\n            </md-tab>\n        </md-tabs>\n\n        <md-card ui-view></md-card>\n\n    </div>\n    \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n    <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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-if="!vm.newOpenchannelAccount || (vm.newOpenchannelAccount && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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"></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">{{ 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" 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/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="1">One Time</md-option>\n                    <md-option ng-value="0">Always</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" md-maxlength="255" 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 ng-message="md-maxlength">\n                        <span translate="OPENCHANNEL.ERRORS.TEXT_MAX_LENGTH" translate-values=\'{max: 255}\'>Text 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/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/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">{{ 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" 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">{{ 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">{{ 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/openchannelDispositions/dialog.html",'<md-dialog class="openchannelDisposition-dialog" aria-label="New OpenchannelDisposition">\n    <form name="openchannelDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.openchannelDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="openchannelDispositionForm[\'name\'].$error" ng-show="openchannelDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelDisposition" ng-click="vm.saveOpenchannelDisposition()" class="send-button md-accent md-raised" ng-disabled="openchannelDispositionForm.$invalid || openchannelDispositionForm.$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.newOpenchannelDisposition" ng-click="vm.addNewOpenchannelDisposition()" class="send-button md-accent md-raised" ng-disabled="openchannelDispositionForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELDISPOSITION" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELDISPOSITION">\n                    ADD OPENCHANNELDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelDisposition" ng-click="vm.deleteOpenchannelDisposition($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                        <span ng-if="vm.openchannelAccount.exten">{{vm.openchannelAccount.exten}}</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) || (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">{{ 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" 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">{{ 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">{{ 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, 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" 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" 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                </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 class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="OpenchannelAccountOpenchannelDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELDISPOSITIONS">OpenchannelDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelDisposition($event)" aria-label="add openchannelDisposition" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedOpenchannelAccountOpenchannelDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelDispositions.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelDispositions" 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.deleteSelectedOpenchannelAccountOpenchannelDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNELACCOUNTS.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.selectedOpenchannelAccountOpenchannelDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelDispositions">\n                                        <tr md-row>\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="createdAt">{{ \'OPENCHANNEL.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="openchannelDisposition" md-select-id="id" ng-repeat="openchannelDisposition in vm_dc.openchannelAccountOpenchannelDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelDisposition($event, openchannelDisposition)" md-cell>{{openchannelDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelDisposition($event, openchannelDisposition)" md-cell>{{openchannelDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelDisposition($event, openchannelDisposition)" md-cell>{{openchannelDisposition.createdAt | date:\'medium\'}}</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.createOrEditOpenchannelAccountOpenchannelDisposition($event, openchannelDisposition)" translate="OPENCHANNEL.EDIT_OPENCHANNELDISPOSITION">\n                                                                Edit OpenchannelDisposition\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(openchannelDisposition, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELDISPOSITION">\n                                                                Delete OpenchannelDisposition\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.openchannelAccountOpenchannelDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="OPENCHANNEL.NO_OPENCHANNELDISPOSITION_AVAILABLE">No openchanneldisposition available</span>\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.openchannelAccountOpenchannelDispositions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelDispositions" 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.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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="OPENCHANNELACCOUNTS.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.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">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'OPENCHANNEL.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'OPENCHANNEL.CREATED_AT\' | translate }}</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>{{openchannelCannedAnswer.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>{{openchannelCannedAnswer.key}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>{{openchannelCannedAnswer.value}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>{{openchannelCannedAnswer.description}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>{{openchannelCannedAnswer.createdAt | date:\'medium\'}}</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                                                <span class="text-boxed-ligth" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\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-ligth" 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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="OPENCHANNELACCOUNTS.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.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">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'OPENCHANNEL.STARTEDAT\' | translate }}</th>\n                                            <th md-column>{{ \'OPENCHANNEL.CONTACT\' | translate }}</th>\n                                            <th md-column>{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n                                            <th md-column md-order-by="closedAt">{{ \'OPENCHANNEL.CLOSEDAT\' | translate }}</th>\n                                            <th md-column md-order-by="disposition">{{ \'OPENCHANNEL.DISPOSITION\' | translate }}</th>\n                                            <th md-column md-order-by="note">{{ \'OPENCHANNEL.NOTES\' | translate }}</th>\n                                            <th md-column md-order-by="tag">{{ \'OPENCHANNEL.TAGS\' | translate }}</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">\n                                            <td md-cell>{{interaction.id}}</td>\n                                            <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.Contact.firstName}}</td>\n                                            <td md-cell>{{interaction.Owner.name}}</td>\n                                            <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.disposition}}</td>\n                                            <td md-cell>{{interaction.note}}</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"></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>\n                                                            <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_INTERACTION">\n                                                                Download Interaction\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="13">\n                                                <span class="text-boxed-ligth" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\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="OPENCHANNELACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="OPENCHANNELACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(openchannelAccount, $event)" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                                                    Edit OpenchannelAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event)" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                                                    Interactions OpenchannelAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(openchannelAccount, $event)" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                                                    AgentAdd OpenchannelAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                                                    Delete OpenchannelAccount\n                                                </md-button>\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.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" 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"></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"></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                        <span ng-if="vm.openchannelQueue.exten">{{vm.openchannelQueue.exten}}</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" 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="OPENCHANNELQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="OPENCHANNELQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(openchannelQueue, $event)" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                                                    Edit OpenchannelQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(openchannelQueue, $event)" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                                                    teamadd OpenchannelQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(openchannelQueue, $event)" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                                                    agentadd OpenchannelQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                                                    Delete OpenchannelQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event)" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                                                    goToRealtime OpenchannelQueue\n                                                </md-button>\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.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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'OPENCHANNEL.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditOpenchannelQueue($event, vm.queues[value])" translate="OPENCHANNEL.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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/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.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) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$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.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>\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            <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" ng-required="true" autofocus>\n\n                <div ng-messages="generalForm[\'min_internal\'].$error" ng-show="generalForm[\'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                <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.CHATTIMEOUT">chatTimeout</label>\n                <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" ng-required="true">\n\n                <div ng-messages="generalForm[\'chatTimeout\'].$error" ng-show="generalForm[\'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                <label translate="SETTINGS.STUNADDR">Stunaddr</label>\n                <input type="text" name="stunaddr" ng-model="vm.general.stunaddr">\n\n                <div ng-messages="generalForm[\'stunaddr\'].$error" ng-show="generalForm[\'stunaddr\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="SETTINGS.ERRORS.STUNADDR_REQUIRED">Stunaddr field is required</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n                <label translate="SETTINGS.TURNADDR">Turnaddr</label>\n                <input type="text" name="turnaddr" ng-model="vm.general.turnaddr">\n\n                <div ng-messages="generalForm[\'turnaddr\'].$error" ng-show="generalForm[\'turnaddr\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="SETTINGS.ERRORS.TURNADDR_REQUIRED">Turnaddr field is required</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n                <label translate="SETTINGS.TURN_USERNAME">Turn_Username</label>\n                <input type="text" name="turnusername" ng-model="vm.general.turnusername">\n\n                <div ng-messages="generalForm[\'turnusername\'].$error" ng-show="generalForm[\'turnusername\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="SETTINGS.ERRORS.TURN_USERNAME_REQUIRED">Turn_Username field is required</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n                <label translate="SETTINGS.TURN_PASSWORD">Turn_Password</label>\n                <input type="text" name="turnpassword" ng-model="vm.general.turnpassword">\n\n                <div ng-messages="generalForm[\'turnpassword\'].$error" ng-show="generalForm[\'turnpassword\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="SETTINGS.ERRORS.TURN_PASSWORD_REQUIRED">Turn_Password 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.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">\n\n                <div ng-messages="generalForm[\'splitSizeCsv\'].$error" ng-show="generalForm[\'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">\n\n                <div ng-messages="generalForm[\'splitSizePdf\'].$error" ng-show="generalForm[\'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">\n\n                <div ng-messages="generalForm[\'splitSizeXlsx\'].$error" ng-show="generalForm[\'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            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$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" 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                        <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.CHATTIMEOUT">chatTimeout</label>\n                        <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" 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                        <label translate="SETTINGS.STUNADDR">Stunaddr</label>\n                        <input type="text" name="stunaddr" ng-model="vm.general.stunaddr">\n\n                        <div ng-messages="globalForm[\'stunaddr\'].$error" ng-show="globalForm[\'stunaddr\'].$touched" role="alert">\n                            <div ng-message="required">\n                                <span translate="SETTINGS.ERRORS.STUNADDR_REQUIRED">Stunaddr field is required</span>\n                            </div>\n                        </div>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                        <label translate="SETTINGS.TURNADDR">Turnaddr</label>\n                        <input type="text" name="turnaddr" ng-model="vm.general.turnaddr">\n\n                        <div ng-messages="globalForm[\'turnaddr\'].$error" ng-show="globalForm[\'turnaddr\'].$touched" role="alert">\n                            <div ng-message="required">\n                                <span translate="SETTINGS.ERRORS.TURNADDR_REQUIRED">Turnaddr field is required</span>\n                            </div>\n                        </div>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                        <label translate="SETTINGS.TURN_USERNAME">Turn_Username</label>\n                        <input type="text" name="turnusername" ng-model="vm.general.turnusername">\n\n                        <div ng-messages="globalForm[\'turnusername\'].$error" ng-show="globalForm[\'turnusername\'].$touched" role="alert">\n                            <div ng-message="required">\n                                <span translate="SETTINGS.ERRORS.TURN_USERNAME_REQUIRED">Turn_Username field is required</span>\n                            </div>\n                        </div>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                        <label translate="SETTINGS.TURN_PASSWORD">Turn_Password</label>\n                        <input type="text" name="turnpassword" ng-model="vm.general.turnpassword">\n\n                        <div ng-messages="globalForm[\'turnpassword\'].$error" ng-show="globalForm[\'turnpassword\'].$touched" role="alert">\n                            <div ng-message="required">\n                                <span translate="SETTINGS.ERRORS.TURN_PASSWORD_REQUIRED">Turn_Password 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 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" 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">\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">\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">\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                        <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\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        <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>\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>\n                                <a href="https://www.xcally.com/en/index.html#pricing-table2-h" 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" 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\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" 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                    <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" 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-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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\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="NETWORKS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="NETWORKS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.editdialog(network, $event)" translate="SETTINGS.EDIT_NETWORK">\n                                                    Edit Network\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(network, $event)" translate="SETTINGS.DELETE_NETWORK">\n                                                    Delete Network\n                                                </md-button>\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: \'{{\'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" 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" 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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'SMS.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'SMS.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'SMS.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'SMS.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'SMS.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditSmsQueue($event, vm.queues[value])" translate="SMS.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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" 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-if="!vm.newSmsAccount || (vm.newSmsAccount && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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="\'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\'" 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\'">\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\'" 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 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"></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">{{ 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" 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/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="1">One Time</md-option>\n                    <md-option ng-value="0">Always</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" md-maxlength="255" 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 ng-message="md-maxlength">\n                        <span translate="SMS.ERRORS.TEXT_MAX_LENGTH" translate-values=\'{max: 255}\'>Text 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/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/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">{{ 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" 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">{{ 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">{{ 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/smsDispositions/dialog.html",'<md-dialog class="smsDisposition-dialog" aria-label="New SmsDisposition">\n    <form name="smsDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.smsDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="smsDispositionForm[\'name\'].$error" ng-show="smsDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsDisposition" ng-click="vm.saveSmsDisposition()" class="send-button md-accent md-raised" ng-disabled="smsDispositionForm.$invalid || smsDispositionForm.$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.newSmsDisposition" ng-click="vm.addNewSmsDisposition()" class="send-button md-accent md-raised" ng-disabled="smsDispositionForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSDISPOSITION" translate-attr-aria-label="SMS.ADD_SMSDISPOSITION">\n                    ADD SMSDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsDisposition" ng-click="vm.deleteSmsDisposition($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                        <span ng-if="vm.smsAccount.exten">{{vm.smsAccount.exten}}</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) || (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">{{ 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="\'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\'" 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\'">\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\'" 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 == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || 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" 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" 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, 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" 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" 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" 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                </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 class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="SmsAccountSmsDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="SMS.SMSDISPOSITIONS">SmsDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsDisposition($event)" aria-label="add smsDisposition" translate translate-attr-label="SMS.ADD_SMSDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedSmsAccountSmsDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsDispositions.length}} {{vm_dc.selectedSmsAccountSmsDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsDispositions" 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.deleteSelectedSmsAccountSmsDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMSACCOUNTS.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.selectedSmsAccountSmsDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsDispositions">\n                                        <tr md-row>\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="createdAt">{{ \'SMS.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="smsDisposition" md-select-id="id" ng-repeat="smsDisposition in vm_dc.smsAccountSmsDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsDisposition($event, smsDisposition)" md-cell>{{smsDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsDisposition($event, smsDisposition)" md-cell>{{smsDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsDisposition($event, smsDisposition)" md-cell>{{smsDisposition.createdAt | date:\'medium\'}}</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.createOrEditSmsAccountSmsDisposition($event, smsDisposition)" translate="SMS.EDIT_SMSDISPOSITION">\n                                                                Edit SmsDisposition\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(smsDisposition, $event)" translate="SMS.DELETE_SMSDISPOSITION">\n                                                                Delete SmsDisposition\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.smsAccountSmsDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="SMS.NO_SMSDISPOSITION_AVAILABLE">No smsdisposition available</span>\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.smsAccountSmsDispositions.count}}" md-on-paginate="vm_dc.getSmsAccountSmsDispositions" 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.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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="SMSACCOUNTS.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.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">{{ \'SMS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'SMS.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'SMS.CREATED_AT\' | translate }}</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>{{smsCannedAnswer.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>{{smsCannedAnswer.key}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>{{smsCannedAnswer.value}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>{{smsCannedAnswer.description}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>{{smsCannedAnswer.createdAt | date:\'medium\'}}</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                                                <span class="text-boxed-ligth" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\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-ligth" 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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="SMSACCOUNTS.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.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">{{ \'SMS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'SMS.STARTEDAT\' | translate }}</th>\n                                            <th md-column>{{ \'SMS.CONTACT\' | translate }}</th>\n                                            <th md-column>{{ \'SMS.AGENT\' | translate }}</th>\n                                            <th md-column md-order-by="closedAt">{{ \'SMS.CLOSEDAT\' | translate }}</th>\n                                            <th md-column md-order-by="disposition">{{ \'SMS.DISPOSITION\' | translate }}</th>\n                                            <th md-column md-order-by="note">{{ \'SMS.NOTES\' | translate }}</th>\n                                            <th md-column md-order-by="tag">{{ \'SMS.TAGS\' | translate }}</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">\n                                            <td md-cell>{{interaction.id}}</td>\n                                            <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.Contact.firstName}}</td>\n                                            <td md-cell>{{interaction.Owner.name}}</td>\n                                            <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.disposition}}</td>\n                                            <td md-cell>{{interaction.note}}</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"></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>\n                                                            <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                                                Download Interaction\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="13">\n                                                <span class="text-boxed-ligth" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\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="SMSACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SMSACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(smsAccount, $event)" translate="SMS.EDIT_SMSACCOUNT">\n                                                    Edit SmsAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(smsAccount, $event)" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                                                    Interactions SmsAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(smsAccount, $event)" translate="SMS.AGENTADD_SMSACCOUNT">\n                                                    AgentAdd SmsAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(smsAccount, $event)" translate="SMS.DELETE_SMSACCOUNT">\n                                                    Delete SmsAccount\n                                                </md-button>\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.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" 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"></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"></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                        <span ng-if="vm.smsQueue.exten">{{vm.smsQueue.exten}}</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" 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="SMSQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SMSQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(smsQueue, $event)" translate="SMS.EDIT_SMSQUEUE">\n                                                    Edit SmsQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(smsQueue, $event)" translate="SMS.TEAMADD_SMSQUEUE">\n                                                    teamadd SmsQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(smsQueue, $event)" translate="SMS.AGENTADD_SMSQUEUE">\n                                                    agentadd SmsQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(smsQueue, $event)" translate="SMS.DELETE_SMSQUEUE">\n                                                    Delete SmsQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event)" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                                                    goToRealtime SmsQueue\n                                                </md-button>\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.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="AGENTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="AGENTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 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="8">\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 md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(agent, $event)" translate="STAFF.EDIT_AGENT">\n                                                    Edit Agent\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(agent, $event)" translate="STAFF.TEAMADD_AGENT">\n                                                    teamadd Agent\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(agent, $event)" translate="STAFF.DELETE_AGENT">\n                                                    Delete Agent\n                                                </md-button>\n                                            </md-menu-item>\n                                        </md-menu-content>\n                                    </md-menu>\n                                </td>\n                            </tr>\n                        </tbody>\n                    </table>\n                </md-table-container>\n\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" 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.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>\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                    <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\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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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"></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                        <span ng-if="vm.agent.exten">{{vm.agent.exten}}</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-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) || (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\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">{{ 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.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.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\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" 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" class="md-block">\n                                <md-switch ng-model="vm.agent.phoneBarEnableVideoRecording" aria-label="EnableVideoRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEVIDEORECORDING">EnableVideoRecording</span></md-switch>\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" 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                                <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" 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\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 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"></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="TEAMS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TEAMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(team, $event)" translate="STAFF.EDIT_TEAM">\n                                                    Edit Team\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(team, $event)" translate="STAFF.AGENTADD_TEAM">\n                                                    AgentAdd Team\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(team, $event)" translate="STAFF.DELETE_TEAM">\n                                                    Delete Team\n                                                </md-button>\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: \'{{\'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.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>\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                    <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\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                        <span ng-if="vm.telephone.exten">{{vm.telephone.exten}}</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">{{ 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="TELEPHONES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TELEPHONES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(telephone, $event)" translate="STAFF.EDIT_TELEPHONE">\n                                                    Edit Telephone\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(telephone, $event)" translate="STAFF.DELETE_TELEPHONE">\n                                                    Delete Telephone\n                                                </md-button>\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: \'{{\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\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="padding-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>\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                        <span ng-if="vm.userProfile.exten">{{vm.userProfile.exten}}</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)" 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\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="2:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="8px" gt-md-gutter="8px" 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-icon>\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-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="USERPROFILES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="USERPROFILES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 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="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="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 md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(userProfile, $event)" translate="STAFF.EDIT_USERPROFILE">\n                                                    Edit UserProfile\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(userProfile, $event)" translate="STAFF.CLONE_USERPROFILE">\n                                                    clone UserProfile\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(userProfile, $event)" translate="STAFF.DELETE_USERPROFILE">\n                                                    Delete UserProfile\n                                                </md-button>\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: \'{{\'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-if="!vm.newUser || (vm.newUser && userProfileId.canSelect)" ng-disabled="!userProfileId.canSelect">{{ 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/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.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>\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                    <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\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                        <span ng-if="vm.user.exten">{{vm.user.exten}}</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.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">{{ 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\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">{{ 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.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="USERS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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 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="9">\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})[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 md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(user, $event)" translate="STAFF.EDIT_USER">\n                                                    Edit User\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(user, $event)" translate="STAFF.DELETE_USER">\n                                                    Delete User\n                                                </md-button>\n                                            </md-menu-item>\n                                        </md-menu-content>\n                                    </md-menu>\n                                </td>\n                            </tr>\n                        </tbody>\n                    </table>\n                </md-table-container>\n\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="CANNEDANSWERS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CANNEDANSWERS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(cannedAnswer, $event)" translate="TOOLS.EDIT_CANNEDANSWER">\n                                                    Edit CannedAnswer\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event)" translate="TOOLS.DELETE_CANNEDANSWER">\n                                                    Delete CannedAnswer\n                                                </md-button>\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: \'{{\'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="CUSTOMDASHBOARDS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CUSTOMDASHBOARDS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(customDashboard, $event)" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                                                    Edit CustomDashboard\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(customDashboard, $event)" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                                                    clone CustomDashboard\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event)" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                                                    goToDashboard CustomDashboard\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(customDashboard, $event)" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                                                    Delete CustomDashboard\n                                                </md-button>\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: \'{{\'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 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" 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" 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" 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-if="!vm.newDashboardItem || (vm.newDashboardItem && attrVoiceQueues.canSelect)" ng-disabled="!attrVoiceQueues.canSelect">{{ 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" 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                        <span ng-if="vm.customDashboard.exten">{{vm.customDashboard.exten}}</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 tranlsate="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 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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.disposition.name" md-maxlength="255" ng-required="true" autofocus>\n\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 equal to 255</span>\n                    </div>\n                </div>\n            </md-input-container>\n\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\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\n    \x3c!-- HEADER --\x3e\n    <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n        \x3c!-- APP TITLE --\x3e\n        <div layout="row" layout-align="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\n        <div layout="row">\n            \x3c!-- SEARCH --\x3e\n            <div class="search-input-wrapper" layout="row" layout-align="start center">\n                <label for="search">\n                    <md-icon md-font-icon="icon-magnify"></md-icon>\n                </label>\n                <md-input-container md-no-float class="m-0">\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.selectedDispositions.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.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\n        <div flex layout="row" layout-align="space-between center">\n\n            <div>\n                <span class="selected-dispositions-count">\n                    <span>{{vm.selectedDispositions.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="DISPOSITIONS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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\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="DISPOSITIONS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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!-- DISPOSITION TABLE --\x3e\n            <md-card>\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 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 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="3">\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}}</td>\n                                <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">{{disposition.name}}</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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(disposition, $event)" translate="TOOLS.EDIT_DISPOSITION">\n                                                    Edit Disposition\n                                                </md-button>\n                                            </md-menu-item>\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\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></md-table-pagination>\n            </md-card>\n            \x3c!-- / DISPOSITION TABLE --\x3e\n            \x3c!-- NO RESULTS --\x3e\n\n            \x3c!-- / NO RESULTS --\x3e\n        </div>\n        \x3c!-- / MAIN --\x3e\n\n    </div>\n    \x3c!-- / CONTENT --\x3e\n\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                        <span ng-if="vm.interval.exten">{{vm.interval.exten}}</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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="INTERVALS.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.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">{{ \'TOOLS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                                            <th md-column md-order-by="interval">{{ \'TOOLS.INTERVAL\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'TOOLS.CREATED_AT\' | translate }}</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>{{interval.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>{{interval.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>{{interval.interval}}</td>\n                                            <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>{{interval.createdAt | date:\'medium\'}}</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                                                <span class="text-boxed-ligth" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\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="INTERVALS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="INTERVALS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(interval, $event)" translate="TOOLS.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.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                        </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="PAUSES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="PAUSES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(pause, $event)" translate="TOOLS.EDIT_PAUSE">\n                                                    Edit Pause\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(pause, $event)" translate="TOOLS.DELETE_PAUSE">\n                                                    Delete Pause\n                                                </md-button>\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: \'{{\'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" 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-if="!vm.newSchedule || (vm.newSchedule && MailAccountId.canSelect)" ng-disabled="!MailAccountId.canSelect">{{ 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 tranlsate="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="SCHEDULER.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SCHEDULER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(schedule, $event)" translate="TOOLS.EDIT_SCHEDULE">\n                                                    Edit Schedule\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.runconfirm(schedule, $event)" translate="TOOLS.RUN_SCHEDULE">\n                                                    Run Schedule\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(schedule, $event)" translate="TOOLS.DELETE_SCHEDULE">\n                                                    Delete Schedule\n                                                </md-button>\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: \'{{\'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="SOUNDS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SOUNDS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(sound, $event)" translate="TOOLS.EDIT_SOUND">\n                                                    Edit Sound\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.downloadfile2(sound, $event)" translate="TOOLS.DOWNLOAD_SOUND">\n                                                    Download Sound\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(sound, $event)" translate="TOOLS.DELETE_SOUND">\n                                                    Delete Sound\n                                                </md-button>\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: \'{{\'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="TAGS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TAGS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(tag, $event)" translate="TOOLS.EDIT_TAG">\n                                                    Edit Tag\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(tag, $event)" translate="TOOLS.DELETE_TAG">\n                                                    Delete Tag\n                                                </md-button>\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: \'{{\'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, 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="TEMPLATES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TEMPLATES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(template, $event)" translate="TOOLS.EDIT_TEMPLATE">\n                                                    Edit Template\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(template, $event)" translate="TOOLS.DELETE_TEMPLATE">\n                                                    Delete Template\n                                                </md-button>\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: \'{{\'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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.trigger.name" ng-required="true" autofocus>\n\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\n                    <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n                    <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n                    <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n\n                    <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n                    <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | 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></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\n                <div ng-messages="triggerForm[\'description\'].$error" ng-show="triggerForm[\'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.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\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/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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.ACTION">Action</label>\n                <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" autofocus required ng-disabled="!vm.newAction">\n\n                    <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n\n                    <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasModulePermissions.Integrations) || !vm.newAction)"> {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n\n                    <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTION_BAR\' | translate }} </md-option>\n\n                    <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n\n                    <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n\n                    <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n\n                    <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | 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-if="!vm.newAction || (vm.newAction && data1.canSelect)" ng-disabled="!data1.canSelect">{{ 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" 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" required>\n                    <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-if="!vm.newAction || (vm.newAction && data1.canSelect)" ng-disabled="!data1.canSelect">{{ 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.AUTOCREATECONTACT">AutoCreateContact</label>\n                <md-select name="data2" ng-model="vm.action.data2" required>\n\n                    <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\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 == \'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-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\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\' && vm.action.data1 == \'POST\'" 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 == \'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()" required>\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="\'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="\'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="\'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="\'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="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</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-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 == \'zendesk\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1301])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.zendeskAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'desk\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1306])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.deskAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'zoho\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1307])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.zohoAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'salesforce\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1302])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.salesforceAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'sugarcrm\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1305])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.sugarcrmAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'freshdesk\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1303])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.freshdeskAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'vtiger\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1308])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.vtigerAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'zendesk\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1301])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.zendeskConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'desk\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1306])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.deskConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'zoho\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1307])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.zohoConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'salesforce\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1302])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.salesforceConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'sugarcrm\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1305])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.sugarcrmConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'freshdesk\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1303])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.freshdeskConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'vtiger\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1308])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.vtigerConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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" 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\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\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\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-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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\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\n                    <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\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>\n\n                    <md-option ng-value="\'0\'"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n\n                    <md-option ng-value="\'1\'"> {{ \'TOOLS.NEW_WINDOW\' | 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\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\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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\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/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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.FIELD">Field</label>\n                <md-select name="field" ng-model="vm.allCondition.field" autofocus required>\n\n                    <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }} </md-option>\n\n                    <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }} </md-option>\n\n                    <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n\n                    <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }} </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\n                    <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n\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\' && vm.trigger.channel == \'chat\'" 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" ng-repeat="value in vm.chatAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'mail\'" 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" ng-repeat="value in vm.mailAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'sms\'" 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" ng-repeat="value in vm.smsAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'fax\'" 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" ng-repeat="value in vm.faxAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'openchannel\'" 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" ng-repeat="value in vm.openchannelAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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" ng-repeat="value in vm.outboundRoutes" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'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="\'abandoned\'">Abandon</md-option>\n                    <md-option ng-value="\'complete\'">Hangup</md-option>\n                    <md-option ng-value="\'rejected\'">Reject</md-option>\n                    <md-option ng-value="\'called\'">Ring</md-option>\n                    <md-option ng-value="\'connect\'">Answer</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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\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/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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.FIELD">Field</label>\n                <md-select name="field" ng-model="vm.anyCondition.field" autofocus required>\n\n                    <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }} </md-option>\n\n                    <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }} </md-option>\n\n                    <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n\n                    <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }} </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\n                    <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n\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\' && vm.trigger.channel == \'chat\'" 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" ng-repeat="value in vm.chatAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'mail\'" 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" ng-repeat="value in vm.mailAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'sms\'" 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" ng-repeat="value in vm.smsAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'fax\'" 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" ng-repeat="value in vm.faxAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'openchannel\'" 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" ng-repeat="value in vm.openchannelAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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" ng-repeat="value in vm.outboundRoutes" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'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="\'abandoned\'">Abandon</md-option>\n                    <md-option ng-value="\'complete\'">Hangup</md-option>\n                    <md-option ng-value="\'rejected\'">Reject</md-option>\n                    <md-option ng-value="\'called\'">Ring</md-option>\n                    <md-option ng-value="\'connect\'">Answer</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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\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\n    \x3c!-- HEADER --\x3e\n    <div class="header md-accent-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\n            <div layout="row" layout-align="start center">\n\n                <div class="trigger-image" hide-xs>\n                    <img ng-src="assets/images/business/triggers.jpg">\n                </div>\n\n                <div layout="column" layout-align="start start">\n                    <div class="h2">\n                        #{{vm.trigger.id}}\n                        <span ng-if="vm.trigger.name">{{vm.trigger.name}}</span>\n                        <span ng-if="vm.trigger.exten">{{vm.trigger.exten}}</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\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="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" 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.CHANNEL">Channel</label>\n                                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n\n                                    <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </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"><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\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.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">\n                        <div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.init(vm.trigger, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerAllConditions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">AllConditions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAllCondition($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.selectedTriggerAllConditions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedTriggerAllConditions.length}} {{vm_dc.selectedTriggerAllConditions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerAllConditions" 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.deleteSelectedTriggerAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.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.selectedTriggerAllConditions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerAllConditions">\n                                        <tr md-row>\n                                            <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="field">{{ \'TOOLS.FIELD\' | translate }}</th>\n                                            <th md-column md-order-by="operator">{{ \'TOOLS.OPERATOR\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'TOOLS.CREATED_AT\' | translate }}</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.triggerAllConditions.rows">\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{allCondition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayfield[allCondition.field].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayoperator[allCondition.operator].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>{{allCondition.value}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.chatAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.mailAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.smsAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.faxAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.openchannelAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>{{ (vm_dc.queues | filter : {\'name\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>{{ (vm_dc.outboundRoutes | filter : {\'id\':allCondition.value})[0].exten }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>{{ vm_dc.callStatusValues[allCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>{{ vm_dc.interactionStatusValues[allCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>{{ vm_dc.messageStatusValues[allCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{allCondition.createdAt | date:\'medium\'}}</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.createOrEditTriggerAllCondition($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.triggerAllConditions.rows.length">\n                                            <td md-cell colspan="17">\n                                                <span class="text-boxed-ligth" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No allcondition available</span>\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.triggerAllConditions.count}}" md-on-paginate="vm_dc.getTriggerAllConditions" md-page-select></md-table-pagination>\n                        </div>\n\n                    </div>\n                    <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.init(vm.trigger, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerAnyConditions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAnyCondition($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.selectedTriggerAnyConditions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedTriggerAnyConditions.length}} {{vm_dc.selectedTriggerAnyConditions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerAnyConditions" 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.deleteSelectedTriggerAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.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.selectedTriggerAnyConditions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerAnyConditions">\n                                        <tr md-row>\n                                            <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="field">{{ \'TOOLS.FIELD\' | translate }}</th>\n                                            <th md-column md-order-by="operator">{{ \'TOOLS.OPERATOR\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'TOOLS.CREATED_AT\' | translate }}</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.triggerAnyConditions.rows">\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{anyCondition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayfield[anyCondition.field].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayoperator[anyCondition.operator].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>{{anyCondition.value}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.chatAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.mailAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.smsAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.faxAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.openchannelAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>{{ (vm_dc.queues | filter : {\'name\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>{{ (vm_dc.outboundRoutes | filter : {\'id\':anyCondition.value})[0].exten }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>{{ vm_dc.callStatusValues[anyCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>{{ vm_dc.interactionStatusValues[anyCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>{{ vm_dc.messageStatusValues[anyCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{anyCondition.createdAt | date:\'medium\'}}</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.createOrEditTriggerAnyCondition($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.triggerAnyConditions.rows.length">\n                                            <td md-cell colspan="17">\n                                                <span class="text-boxed-ligth" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition available</span>\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.triggerAnyConditions.count}}" md-on-paginate="vm_dc.getTriggerAnyConditions" md-page-select></md-table-pagination>\n                        </div>\n\n                    </div>\n                    <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.init(vm.trigger, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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">\n                                        <md-icon md-font-icon="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.selectedTriggerActions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedTriggerActions.length}} {{vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" 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.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.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.selectedTriggerActions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\n                                        <tr md-row>\n                                            <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="action">{{ \'TOOLS.ACTION\' | translate }}</th>\n                                            <th md-column md-order-by="data1">{{ \'TOOLS.TYPE\' | translate }}</th>\n                                            <th md-column md-order-by="data2">{{ \'TOOLS.INFO\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'TOOLS.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{action.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayaction[action.action].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>{{ (vm_dc.projects | filter : {\'id\':action.data1})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>{{ vm_dc.browserValues[action.data1].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>{{ (vm_dc.lists | filter : {\'id\':action.data1})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>{{ \'TOOLS.\' + vm_dc.autoCreateContact[action.data2].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>{{ vm_dc.urlForwardValues[action.data1].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>{{action.data1}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\' && action.data1 == \'POST\'" md-cell>{{action.data7}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>{{ vm_dc.integrationValues[action.data1].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>{{ (vm_dc.zendeskAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>{{ (vm_dc.deskAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>{{ (vm_dc.zohoAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>{{ (vm_dc.salesforceAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>{{ (vm_dc.sugarcrmAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>{{ (vm_dc.freshdeskAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>{{ (vm_dc.vtigerAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>{{ vm_dc.motionbarValues[action.data1].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 == \'1\'" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 == \'2\'" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 == \'0\'" md-cell>{{ (vm_dc.templates | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 == \'0\'" md-cell>{{ (vm_dc.templates | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 == \'1\'" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{action.createdAt | date:\'medium\'}}</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.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\n                                                                Edit Action\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(action, $event)" translate="TOOLS.DELETE_ACTION">\n                                                                Delete Action\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.triggerActions.rows.length">\n                                            <td md-cell colspan="40">\n                                                <span class="text-boxed-ligth" translate="TOOLS.NO_ACTION_AVAILABLE">No action available</span>\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.triggerActions.count}}" md-on-paginate="vm_dc.getTriggerActions" 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/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n\n    \x3c!-- HEADER --\x3e\n    <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n        \x3c!-- APP TITLE --\x3e\n        <div layout="row" layout-align="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\n        <div layout="row">\n            \x3c!-- SEARCH --\x3e\n            <div class="search-input-wrapper" layout="row" layout-align="start center">\n                <label for="search">\n                    <md-icon md-font-icon="icon-magnify"></md-icon>\n                </label>\n                <md-input-container md-no-float class="m-0">\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.selectedTriggers.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.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\n        <div flex layout="row" layout-align="space-between center">\n\n            <div>\n                <span class="selected-triggers-count">\n                    <span>{{vm.selectedTriggers.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="TRIGGERS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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\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="TRIGGERS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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!-- 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 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="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 md-cell ng-if="trigger.userpic"><img class="avatar" alt="{{trigger.name}}" ng-src="api/users/{{trigger.id}}/avatar" /></td>\n                                <td md-cell ng-if="!trigger.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trigger.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{trigger.id}}</td>\n                                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{trigger.name}}</td>\n                                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">{{ \'TOOLS.\' + vm.arraychannel[trigger.channel].option | uppercase | translate }}</td>\n                                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : 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.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : vm.createOrEditTrigger($event, trigger)" md-cell class="description ">{{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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(trigger, $event)" translate="TOOLS.EDIT_TRIGGER">\n                                                    Edit Trigger\n                                                </md-button>\n                                            </md-menu-item>\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\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\n            \x3c!-- / NO RESULTS --\x3e\n        </div>\n        \x3c!-- / MAIN --\x3e\n\n    </div>\n    \x3c!-- / CONTENT --\x3e\n\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                        <span ng-if="vm.trunk.exten">{{vm.trunk.exten}}</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">{{ 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" 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="TRUNKS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TRUNKS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(trunk, $event)" translate="TOOLS.EDIT_TRUNK">\n                                                    Edit Trunk\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(trunk, $event)" translate="TOOLS.CLONE_TRUNK">\n                                                    clone Trunk\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(trunk, $event)" translate="TOOLS.GOTOREALTIME_TRUNK">\n                                                    goToRealtime Trunk\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(trunk, $event)" translate="TOOLS.DELETE_TRUNK">\n                                                    Delete 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: \'{{\'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="VARIABLES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VARIABLES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(variable, $event)" translate="TOOLS.EDIT_VARIABLE">\n                                                    Edit Variable\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(variable, $event)" translate="TOOLS.DELETE_VARIABLE">\n                                                    Delete Variable\n                                                </md-button>\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: \'{{\'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/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="CHANSPIES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CHANSPIES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editdialog(chanSpy, $event)" translate="VOICE.EDIT_CHANSPY">\n                                                    Edit chanSpy\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(chanSpy, $event)" translate="VOICE.DELETE_CHANSPY">\n                                                    Delete chanSpy\n                                                </md-button>\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.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="CONTEXTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CONTEXTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editdialog(context, $event)" translate="VOICE.EDIT_CONTEXT">\n                                                    Edit Context\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(context, $event)" translate="VOICE.DELETE_CONTEXT">\n                                                    Delete Context\n                                                </md-button>\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.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-if="!vm.newInboundRoute || (vm.newInboundRoute && context.canSelect)" ng-disabled="!context.canSelect">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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                        <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\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">{{ 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-ligth" 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="INBOUNDROUTES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="INBOUNDROUTES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(inboundroute, $event)" 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(inboundroute, $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\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-if="!vm.newInternalRoute || (vm.newInternalRoute && context.canSelect)" ng-disabled="!context.canSelect">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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                        <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\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">{{ 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-ligth" 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="INTERNALROUTES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="INTERNALROUTES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(internalroute, $event)" 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(internalroute, $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\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-if="!vm.newMohSound || (vm.newMohSound && id.canSelect)" ng-disabled="!id.canSelect">{{ 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                        <span ng-if="vm.musiconhold.exten">{{vm.musiconhold.exten}}</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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="MUSICONHOLDS.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.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">{{ \'VOICE.ID\' | translate }}</th>\n                                            <th md-column md-order-by="audio">{{ \'VOICE.AUDIO\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'VOICE.CREATED_AT\' | translate }}</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>{{mohSound.id}}</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>{{mohSound.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="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 class="md-primary" ng-click="vm_dc.voiceMusicOnHoldDownload(mohSound, $event)" translate="VOICE.DOWNLOAD_MOHSOUND">\n                                                                Download MohSound\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(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                                                <span class="text-boxed-ligth" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\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="MUSICONHOLDS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="MUSICONHOLDS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(musiconhold, $event)" translate="VOICE.EDIT_MUSICONHOLD">\n                                                    Edit MusicOnHold\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(musiconhold, $event)" translate="VOICE.DELETE_MUSICONHOLD">\n                                                    Delete MusicOnHold\n                                                </md-button>\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.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-if="!vm.newOutboundRoute || (vm.newOutboundRoute && context.canSelect)" ng-disabled="!context.canSelect">{{ 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">{{ 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">{{ 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                        <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\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">{{ 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-ligth" 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="OUTBOUNDROUTES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="OUTBOUNDROUTES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(outboundroute, $event)" 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(outboundroute, $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\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.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 black-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getContacts()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.lastAssignedTo" ng-change="vm.getContacts()">\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                    <md-option ng-value="agent.name" ng-repeat="agent in vm.agents.rows">{{agent.name}}</md-option>\n                </md-select>\n            </div>\n            <div ng-if="vm.queues.count" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.queue" ng-change="vm.getContacts()">\n                    <md-option ng-value="undefined" ng-if="vm.queues.count > 1"><em translate="DASHBOARDS.ALL">All</em></md-option>\n                    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows">{{queue.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n                <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | 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.getContacts">\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 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 tranlsate="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 md-cell class="id">{{contact.id}}</td>\n                    <td md-cell class="firstName">{{contact.calleridname}}</td>\n                    <td md-cell class="list">{{contact.calleridnum}}</td>\n                    <td md-cell class="list">{{vm.queuesMap[contact.queue]}}</td>\n                    <td md-cell class="list">{{contact.queuecallerabandonAt ? (contact.queuecallerabandonAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.lastAssignedTo}}</td>\n                    <td md-cell class="list">{{contact.disposition}}</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">Assigned a</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="contact.lastAssignedTo">\n                                                <md-button ng-click="vm.assignedA(contact)"><em translate="DASHBOARDS.NONE">Not Assigned</em></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.assignedA(contact,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-menu>\n                                        <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="vm.dispositions.length > 0" ng-repeat="disposition in vm.dispositions">\n                                                <md-button ng-click="vm.disposed(contact, disposition.name)">{{disposition.name}}</md-button>\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\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>'),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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'VOICE.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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 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>\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 tranlsate="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>\n                    {{call.calleridname}}, {{call.calleridnum}} <span class="text-boxed" ng-if="call.answered">\n                        <timer ng-if="call.answertime" start-time="call.answertime" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                    </span>\n                </td>\n                <td md-cell>{{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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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        \x3c!-- <div flex></div>\n    <ms-search-bar on-search="vm.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar> --\x3e\n    </div>\n</md-toolbar>\n\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 tranlsate="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>{{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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                    </span>\n                </td>\n                <td md-cell>\n                    <span class="text-boxed">\n                        <timer start-time="channel.queuecallerjoinAt" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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\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>\n                                    <md-button ng-click="$mdMenu.open()" translate="VOICE.REDIRECT_TO_AGENT">Redirect to Agent</md-button>\n                                    <md-menu-content>\n                                        <md-menu-item ng-repeat="agent in vm.agents.rows">\n                                            <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">{{agent.name}}</md-button>\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\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.query.filter = 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 tranlsate="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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'VOICE.READY\' | translate }}</th>\n                <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.TALKING\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{(vm.queues[value].talking || 0) }}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditVoiceQueue($event, vm.queues[value])" translate="VOICE.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n        <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.AGENTS">Agents</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.TELEPHONES">Telephones</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.TRUNKS">Trunks</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.QUEUES">Queues</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n                </md-tab-label>\n            </md-tab>\n        </md-tabs>\n\n        <md-card ui-view></md-card>\n\n    </div>\n    \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n        <div flex></div>\n        <ms-search-bar on-search="vm.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n        \x3c!-- <md-button class="md-icon-button" ng-click="vm.showInfo($event)">\n            <i class="icon-information-outline grey-600-fg">\n              <md-tooltip>{{\'VOICE.INFO\' | translate}}</md-tooltip>\n            </i>\n        </md-button> --\x3e\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 tranlsate="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.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n        \x3c!-- <md-button class="md-icon-button" ng-click="vm.showInfo($event)">\n      <i class="icon-information-outline grey-600-fg">\n        <md-tooltip>{{\'FAX.INFO\' | translate}}</md-tooltip>\n      </i>\n    </md-button> --\x3e\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 tranlsate="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                        <span ng-if="vm.voicemail.exten">{{vm.voicemail.exten}}</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">{{ 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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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="VOICEMAILS.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.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">{{ \'VOICE.ID\' | translate }}</th>\n                                            <th md-column md-order-by="callerid">{{ \'VOICE.CALLER_ID\' | translate }}</th>\n                                            <th md-column md-order-by="duration">{{ \'VOICE.DURATION\' | translate }}</th>\n                                            <th md-column md-order-by="audio">{{ \'VOICE.AUDIO\' | translate }}</th>\n                                            <th md-column md-order-by="stamp">{{ \'VOICE.RECEIVED_AT\' | translate }}</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>{{message.id}}</td>\n                                            <td md-cell>{{message.callerid}}</td>\n                                            <td md-cell>{{message.duration}}</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>{{message.stamp | 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="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 class="md-primary" ng-click="vm_dc.voiceMailMessageDownload(message, $event)" translate="VOICE.DOWNLOAD_MESSAGE">\n                                                                Download Message\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(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                                                <span class="text-boxed-ligth" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\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="VOICEMAILS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VOICEMAILS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(voicemail, $event)" translate="VOICE.EDIT_VOICEMAIL">\n                                                    Edit Voicemail\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(voicemail, $event)" translate="VOICE.DELETE_VOICEMAIL">\n                                                    Delete Voicemail\n                                                </md-button>\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.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-if="!vm.newvoicePrefix || (vm.newvoicePrefix && VoiceExtensionId.canSelect)" ng-disabled="!VoiceExtensionId.canSelect">{{ 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"></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="VOICEPREFIXES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VOICEPREFIXES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(voicePrefix, $event)" translate="VOICE.EDIT_VOICEPREFIX">\n                                                    Edit voicePrefix\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(voicePrefix, $event)" translate="VOICE.AGENTADD_VOICEPREFIX">\n                                                    AgentAdd voicePrefix\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(voicePrefix, $event)" translate="VOICE.DELETE_VOICEPREFIX">\n                                                    Delete voicePrefix\n                                                </md-button>\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.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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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                        <span ng-if="vm.voiceQueue.exten">{{vm.voiceQueue.exten}}</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" 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" 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\'">no</md-option>\n                                    <md-option ng-value="\'yes\'">yes</md-option>\n                                    <md-option ng-value="\'strict\'">strict</md-option>\n                                    <md-option ng-value="\'loose\'">loose</md-option>\n                                    <md-option ng-value="\'paused\'">paused</md-option>\n                                    <md-option ng-value="\'penalty\'">penalty</md-option>\n                                    <md-option ng-value="\'inuse\'">inuse</md-option>\n                                    <md-option ng-value="\'ringing\'">ringing</md-option>\n                                    <md-option ng-value="\'unavailable\'">unavailable</md-option>\n                                    <md-option ng-value="\'invalid\'">invalid</md-option>\n                                    <md-option ng-value="\'unknown\'">unknoww</md-option>\n                                    <md-option ng-value="\'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\'">no</md-option>\n                                    <md-option ng-value="\'yes\'">yes</md-option>\n                                    <md-option ng-value="\'strict\'">strict</md-option>\n                                    <md-option ng-value="\'loose\'">loose</md-option>\n                                    <md-option ng-value="\'paused\'">paused</md-option>\n                                    <md-option ng-value="\'penalty\'">penalty</md-option>\n                                    <md-option ng-value="\'inuse\'">inuse</md-option>\n                                    <md-option ng-value="\'ringing\'">ringing</md-option>\n                                    <md-option ng-value="\'unavailable\'">unavailable</md-option>\n                                    <md-option ng-value="\'invalid\'">invalid</md-option>\n                                    <md-option ng-value="\'unknown\'">unknoww</md-option>\n                                    <md-option ng-value="\'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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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\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="VOICEQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VOICEQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(voiceQueue, $event)" translate="VOICE.EDIT_VOICEQUEUE">\n                                                    Edit VoiceQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(voiceQueue, $event)" translate="VOICE.TEAMADD_VOICEQUEUE">\n                                                    teamadd VoiceQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(voiceQueue, $event)" translate="VOICE.AGENTADD_VOICEQUEUE">\n                                                    agentadd VoiceQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(voiceQueue, $event)" translate="VOICE.DELETE_VOICEQUEUE">\n                                                    Delete VoiceQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event)" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                                                    goToRealtime VoiceQueue\n                                                </md-button>\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.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/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            \x3c!-- DATE FILTER --\x3e\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE_RANGE">Select Date Range</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearDateFilter()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.CLEAR\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getVoiceRecordings()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            \x3c!-- /DATE FILTER --\x3e\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="VOICERECORDINGS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICERECORDINGS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 md-order-by="audio">{{ \'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 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="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 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.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum ">{{voiceRecording.calleridnum}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten ">{{voiceRecording.exten}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum ">{{voiceRecording.connectedlinenum}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername ">{{voiceRecording.membername}}</td>\n                                <td ng-click="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"></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.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</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                                        <md-menu-content width="3">\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.downloadfile2(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                                                    Download VoiceRecording\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(voiceRecording, $event)" translate="VOICE.DELETE_VOICERECORDING">\n                                                    Delete VoiceRecording\n                                                </md-button>\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.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/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" <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.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>\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>\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() | 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" 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"></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">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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 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">{{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">\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","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,t){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"}),t.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,t){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"}),t.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,t){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"}),t.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.help","app.motiondialer","app.jscripty","app.marketplace","app.plugins","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,t){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"}),t.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,t,n,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,t){return t.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:t.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),t.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,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:t.id}).then(function(e){var t=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var n=0;n<s.joins.length;n+=1)t.push(i.getColumns(s.joins[n].foreignTable))}catch(e){console.log(e)}return a.all(t)}).then(function(e){for(var t=0;t<e.length;t+=1)s.joins[t].foreignTableFields=_.difference(_.keys(e[t]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),t.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,t){return t.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("squareProject@get",{id:t.id})}],users:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,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,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.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,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,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("chatQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ChatQueues",channel:"chat",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getChatQueues")}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,t,n,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,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),t.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,t,n){return t.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},n)):e.resolve("userProfile@getResources",_.merge({id:t.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},n))}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",limit:10,offset:0})}],listsMap:["lists",function(e){for(var t={},n=0;n<e.rows.length;n++)t[e.rows[n].id]=e.rows[n].name;return t}],companies:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var t={},n=0;n<e.rows.length;n++)t[e.rows[n].id]=e.rows[n].name;return t}],tags:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("cmContact@get",{id:t.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,t){return e.resolve("cmContact@getHoppers",{id:t.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,t){return e.resolve("cmContact@getHopperFinals",{id:t.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,t){return e.resolve("cmContact@getHopperHistories",{id:t.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,t){return e.resolve("cmContact@getJscriptySessions",{id:t.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,t){return t.ListId?e.resolve("cmList@getCustomFields",{id:t.ListId}):null}],tags:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("tag@get"):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),t.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(t,e){var a;return(e.hasRole("admin")?t.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):t.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,t.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var t,n=0;n<e.rows.length;n+=1)(t=_.find(a.rows,{id:e.rows[n].id}))&&_.merge(t,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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",data:{selectedTab:0},views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,t,n){var a=n.getCurrentUser();return a&&"agent"===a.role?t.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):t.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){var t=e.getCurrentUser();return t&&"agent"===t.role?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,t){return e.resolve("user@getLists",{id:t.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver","Auth",function(e,t){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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],chatWebsites:["apiResolver","Auth",function(e,t){return t.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:t.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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],mailAccounts:["apiResolver","Auth",function(e,t){return t.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:t.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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],smsAccounts:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],openchannelAccounts:["apiResolver","Auth",function(e,t){return t.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:t.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",{dateStart:moment().startOf("day").toString(),dateEnd:moment().endOf("day").toString()})}],faxAccounts:["apiResolver","Auth",function(e,t){return t.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:t.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"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("faxQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"FaxQueues",channel:"fax",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:901})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getFaxQueues")}]},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,t){return t.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,a){e.state("app.help",{abstract:!0,url:"/help"}),t.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,t,n,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,t){return t.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,authToken,serverUrl,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,authToken,serverUrl,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,authToken,serverUrl,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}),t.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,t,n,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,t){return t.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,description,formData",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("mailQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"MailQueues",channel:"mail",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:601})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getMailQueues")}]},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,t){return t.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),t.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,t,n,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,t){return t.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,description",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.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,description",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,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:t.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,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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("openchannelQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"OpenchannelQueues",channel:"openchannel",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:801})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getOpenchannelQueues")}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,t,n,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),t.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,t,n,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,stunaddr,turnaddr,turnusername,turnpassword,phoneBarAutoUpdater,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,messagesAlignment,phoneBarRememberMeEnabled",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",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,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),t.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,t){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("smsQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"SmsQueues",channel:"sms",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:701})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getSmsQueues")}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,t,n,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,t){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,videosupport",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,videosupport",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,faxCapacity,smsCapacity,openchannelCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,phoneBarEnableVideoRecording",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.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,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,faxCapacity,smsCapacity,openchannelCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,phoneBarEnableVideoRecording",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,faxCapacity,smsCapacity,openchannelCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,phoneBarEnableVideoRecording",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),t.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,t,n,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).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,t){return t.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,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,t){return t.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).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,t){return t.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:t.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),t.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"]).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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,mailPause,pauseType,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",limit:10,page:1})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t,n,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,t){return t.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",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.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",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,recordingFormat,cutdigits,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("voiceExtension@get",{fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){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:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:t.id})}],userProfileSection:["apiResolver","Auth",function(e,t){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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",function(e,t){return t.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.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:t.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,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.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,t){return t.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:t.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:t.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),t.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";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,t){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,t){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"}),t.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,n,t,a){e.$on("$stateChangeStart",function(e,t){return t.hasOwnProperty("authenticate")&&t.authenticate&&!a.isLoggedIn()?(e.preventDefault(),n.go("app.login",{},{reload:!0,notify:!0})):a.isLoggedIn()&&t.hasOwnProperty("permissionId")&&t.permissionId&&!a.hasRole("admin")?a.reloadPermissions().then(function(){if(!a.hasPermission(t.permissionId))return e.preventDefault(),n.go("app.dashboards.general",{},{reload:!0,notify:!0})}).catch(function(){return e.preventDefault(),n.go("app.dashboards.general",{},{reload:!0,notify:!0})}):void 0})}e.$inject=["$rootScope","$state","$window","Auth"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,s,o,t,r){var l,d=["id","role","fullname","name","internal","email","userpic","permissions","md5secret","phoneBarAutoAnswer","phoneBarAutoAnswerDelay","phoneBarEnableRecording","phoneBarEnableDtmfTone","voicePause","chatPause","mailPause","faxPause","smsPause","openchannelPause","phoneBarEnableSettings","phoneBarExpires","pauseType","showWebBar","phoneBarRemoteControlPort","phoneBarRemoteControl","lastLoginAt","lastPauseAt","crudPermissions","allowmessenger","passwordResetAt","alias","phoneBarPrefixRequired","hotdesk","userProfileId"];function c(e){var t=s.defer();return m("agent")&&0!==l.showWebBar?o.user.login({id:l.id,device:"web",intrf:e}).$promise.then(function(){console.log("AGENT LOGGED IN"),t.resolve()}).catch(function(e){console.error(e),t.reject(e)}):m("admin")||m("user")?o.user.update({id:l.id},{online:!0,lastLoginAt:moment().format("YYYY-MM-DD HH:mm:ss")}).$promise.catch(function(e){console.error(e)}).finally(function(){t.resolve()}):t.resolve(),t.promise}function n(){if(i.remove("motion.user"),i.remove("motion.token"),l&&l.id){var e=l.id;l=null,t.localStorage.removeItem("motion.user:"+e)}}function m(e){return!!l&&l.role===e}function u(e){return!!l&&_.includes(l.permissions,e)}function e(){return i.get("motion.token")}function p(e){return l=_.assign(l,_.pick(e,d)),i.put("motion.user",JSON.stringify(l)),m("user")&&g().then(function(e){l.permissions=e}),l}function g(){var i=[];return s(function(t,n){var a=[];return l||t(a),o.userProfileSection.get({userProfileId:l.userProfileId}).$promise.then(function(e){return i=e&&e.rows?e.rows:[],_.isEmpty(i)||(a=_.map(_.filter(i,function(e){return e.enabled}),function(e){return e.sectionId})),a}).then(function(t){if(_.includes(t,100)){var e=_.find(i,{sectionId:100});return e.autoAssociation?(t.push(101),t):o.userProfileResource.get({sectionId:e.id}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)&&t.push(101),t})}return t}).then(function(t){if(_.includes(t,1003)){var e=_.find(i,{sectionId:1003});return e.autoAssociation?o.dashboard.get().$promise.then(function(e){return(e&&e.rows?e.rows:[]).forEach(function(e){t.push(e.id+99999)}),t}):o.userProfileResource.get({sectionId:e.id}).$promise.then(function(e){return(e&&e.rows?e.rows:[]).forEach(function(e){t.push(e.resourceId+99999)}),t})}return t}).then(function(t){if(_.includes(t,1801)){var e=_.find(i,{sectionId:1801});return e.autoAssociation?o.plugin.get().$promise.then(function(e){return(e&&e.rows?e.rows:[]).forEach(function(e){t.push(e.id+88888)}),t}):o.userProfileResource.get({sectionId:e.id}).$promise.then(function(e){return(e&&e.rows?e.rows:[]).forEach(function(e){t.push(e.resourceId+88888)}),t})}return t}).then(function(e){t(e)}).catch(function(e){n("Error retrieving user profile permissions",e)})})}function v(){return s(function(t,n){g().then(function(e){l.permissions=e,t()}).catch(function(e){n(e)})})}return function(){if(i.get("motion.user"))l=JSON.parse(i.get("motion.user")),o.user.get({id:l.id,fields:d.join(",")}).$promise.then(function(e){if(e)return p(e)}).catch(function(e){console.log("Error retrieving user",e)})}(),{login:function(e){var t,n=s.defer();return o.auth.local(e).$promise.then(function(e){return t=e,i.put("motion.token",e.token),o.user.get({id:e.id,fields:d.join(",")}).$promise}).then(function(e){(l=e).lastLoginAt=moment(),i.put("motion.user",JSON.stringify(e))}).then(function(){if(m("agent")&&1==l.showWebBar&&l.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver","Auth",function(e,t){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return c(e)}).catch(function(e){n.reject(e.data)}).finally(function(){o.user.get({id:t.id,fields:d.join(",")}).$promise.then(function(e){l=e,m("user")&&g().then(function(e){l.permissions=e}),n.resolve()}).catch(function(e){console.log("Error update user login",e),n.reject(e.data)})}),n.promise},logout:function(e){var t;return s.defer(),e?(n(),s.resolve()):(t=s.defer(),m("agent")&&0!==l.showWebBar?o.user.logout({id:l.id,device:"web"}).$promise.then(function(){console.log("AGENT LOGGED OUT")}).catch(function(e){console.error(e)}).finally(function(){t.resolve()}):m("admin")||m("user")?o.user.update({id:l.id},{online:!1}).$promise.catch(function(e){console.error(e)}).finally(function(){t.resolve()}):t.resolve(),t.promise).then(n).catch(function(e){console.error(e)})},queueLogin:c,isLoggedIn:function(){return!(!l||!e())},getPermissions:g,reloadPermissions:v,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return u(e)})},hasModulePermissions:function(i){return s(function(a,t){m("admin")?a(!0):o.userProfileSection.get({userProfileId:l.userProfileId}).$promise.then(function(e){var t=e&&e.rows?e.rows:[];if(_.isEmpty(t))a(!1);else{var n=_.filter(t,function(e){return e.enabled});a(_.some(n,["category",i]))}}).catch(function(e){t(e)})})},hasModulesPermissions:function(i){return s(function(n,t){var a={};m("admin")?(i.forEach(function(e){a[e]=!0}),n(a)):o.userProfileSection.get({userProfileId:l.userProfileId}).$promise.then(function(e){var t=e&&e.rows?e.rows:[];_.isEmpty(t)?n({}):(_(t).filter(function(e){return e.enabled&&_.includes(i,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value().forEach(function(e){a[e]=!0}),n(a))}).catch(function(e){t(e)})})},hasRole:m,hasPermission:u,hasSectionPermissions:function(a){return s(function(e,t){var n={};return v().then(function(){_.includes(l.permissions,a)&&(n[a]=!0),e(n)}).catch(function(e){t(e)})})},hasSectionsPermissions:function(a){return s(function(e,t){var n={};if(!m("admin"))return v().then(function(){a.forEach(function(e){_.includes(l.permissions,e)&&(n[e]=!0)}),e(n)}).catch(function(e){t(e)});a.forEach(function(e){n[e]=!0}),e(n)})},getToken:e,getCurrentUser:function(){return l},parseCrudPermissions:function(e){return m("admin")?{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}},updateCurrentUser:p,removeCookies:n}}e.$inject=["$mdDialog","$cookies","$q","api","$window","$document"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(t,e){this.telephones=e,this.closeDialog=function(e){t.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,t,n,a,i){var s;return{request:function(e){var t=n.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&t&&(e.headers.Authorization="Bearer "+t),e},responseError:function(e){switch(e.status){case 401:n.remove("motion.user"),n.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return t.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(t){var n={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var t=document.createElement("a");return t.href=e,""===t.host&&(t.href=t.href),t},isSameOrigin:function(i,e){return i=n.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(n.urlParse)).push(t.location),1<=(e=e.filter(function(e){var t=i.hostname===e.hostname,n=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return t&&n&&a})).length}};return n}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var n={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(n[e]))return!1;return n[e]},setConfig:function(e,t){n[e]=t}};return e}})}(),function(){"use strict";function e(e,t,n,a){t.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),n.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,t,n){(t.generate(),n.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(o,l,d){return{restrict:"E",compile:function(e,t){var s;return t.code||(s=e.html(),e.empty()),function(n,a,r){r.code&&(s=n.$eval(r.code));var i=n.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(n));var t=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(t),o(function(){!function(e,t){var n=t.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/>",""),n.append(o.value).addClass("highlight")}(e,t)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),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,t){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",t)}}}}})}(),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(n,t,a,i,s,o,e,r,l){function d(e){switch(n.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(n.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return t.$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")})})}n.currentUser=e.getCurrentUser(),n.showMenu=function(){return n.target&&n.target.indexOf("@")<0&&n.target!=n.currentUser.internal&&n.target!=n.currentUser.name&&(0==n.currentUser.showWebBar&&n.currentUser.phoneBarRemoteControl||2==n.currentUser.showWebBar&&n.license.webrtc)&&!n.disabled},n.call=function(e){return 2!==n.currentUser.showWebBar?(t=e,l.user.getVoicePrefixes({id:n.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:n.currentUser.phoneBarPrefixRequired}})}).then(function(e){n.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+t):e&&-1!==e?d(e+t):e||d(t)})):d(e);var t},n.transfer=function(e){switch(n.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(n.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:t.$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,t,n,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var t={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){t=angular.extend({},t,e)},this.$get=function(){return t}}).directive("msDatepickerFix",e)}(),function(){"use strict";angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"="},controller:["$scope",function(o){o.canTransfer=function(e,t,n){if(!t.readOnly)return void 0!==e.isValid&&e.isValid?n?o.transfer(t.selectedItems,t.items,t.selectedItems.indexOf(e),n):o.transfer(t.items,t.selectedItems,t.items.indexOf(e),n):void 0},o.transfer=function(e,t,n,a){var i=[];if(0<=n)i.push(e[n]),t.push(e[n]),e.splice(n,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&t.push(e[s]);for(var s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=t}o.options.transferCallback&&o.options.transferCallback(i,a)},o.getLine=function(e,t){var n="";if(_.isNil(t))return n;if(_.isArray(t)){for(var a=0;a<t.length;a++)n+=" "+(e[t[a]]?e[t[a]]:"");return n}return e[t]?e[t]:""}}],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(n,e){var t=e.emojioneArea({pickerPosition:n.pickerPosition,search:n.search,recentEmojis:n.recentEmojis,placeholder:a.instant(n.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,t){n.ngModel=this.getText(),n.onReply({event:t,body:this.getText()})},emojibtn_click:function(){n.ngModel=this.getText()}}});n.ngModel&&t[0].emojioneArea.setText(n.ngModel),n.internalControl=n.ctrlMethods||{},n.internalControl.setText=function(e){t[0].emojioneArea.setText(e)},n.internalControl.getText=function(){return t[0].emojioneArea.getText()},n.$watch("ngModel",function(e){e||t[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:"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 t=this;function e(){return t.forms.length}function n(){return 0===t.selectedIndex}function a(){return t.selectedIndex===e()-1}t.forms=[],t.selectedIndex=0,t.registerForm=function(e){t.forms.push(e)},t.previousStep=function(){if(n())return;t.selectedIndex--},t.nextStep=function(){if(a())return;t.selectedIndex++},t.firstStep=function(){t.selectedIndex=0},t.lastStep=function(){t.selectedIndex=e()-1},t.totalSteps=e,t.isFirstStep=n,t.isLastStep=a,t.currentStepInvalid=function(){return angular.isDefined(t.forms[t.selectedIndex])&&t.forms[t.selectedIndex].$invalid},t.previousStepInvalid=function(){return 0<t.selectedIndex&&angular.isDefined(t.forms[t.selectedIndex-1])&&t.forms[t.selectedIndex-1].$invalid},t.formsIncomplete=function(){for(var e=0;e<t.forms.length;e++)if(t.forms[e].$invalid)return!0;return!1},t.resetForm=function(){for(var e=t.selectedIndex=0;e<t.forms.length;e++)t.forms[e].$setPristine(),t.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,t,n,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,t){var n=i.find("ms-info-bar-active"),a="ms-info-bar-active";n.addClass(a),e.removeInfoBar=function(){n.removeClass(a),t.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,t={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},n=!0;function i(){n&&e.cancel(n),n=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}),t=0;t<d.items.length;t++){var n,a,i,s,o=d.items[t];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=t%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,n=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+n+"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(t,d.options):t,r.$watch(function(){return d.container.width()},function(e,t){e!==t&&i()})},d.waitImagesLoaded=function(e,t){if("undefined"!=typeof imagesLoaded){var n=a.imagesLoaded(e);n.on("done",function(){t()})}else t()},r.$on("msMasonry:relayout",function(){i()})}function t(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,t,n,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,t,n,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],t.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",t).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,t,n,a){a.waitImagesLoaded(t,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return t.height()},function(e,t){e!==t&&a.reLayout()})}),t.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(n,e,a,i){var s=this;function o(e,t){s.selectedPalette=e,s.selectedHues=t}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,t){s.selectedColor={palette:e,hue:t,class:"md-"+e+"-"+t+"-bg",bgColorValue:i.rgba(s.palettes[e][t].value),fgColorValue:i.rgba(s.palettes[e][t].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),n.$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,n.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,t){l(e,t),d(),a.hide()},s.removeColor=r,n.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,t;if("class"===s.msModelType){var n=s.modelCtrl.$viewValue.split("-");t=5<=n.length?(e=n[1]+"-"+n[2],n[3]):(e=n[1],n[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,t=s.modelCtrl.$viewValue.hue||500);l(e,t)})}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,t,n,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,t){return 1===t.nodeType})).length&&t.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,t,n){var a="true"===n.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=t.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),t.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"),t.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"),t.off("mouseenter mouseleave")}v.setFoldable(e,t,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"),t.off("mouseenter mouseleave")})}}}function t(n,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){n.$broadcast("msNav::expandMatchingToggles");var t=n.$on("$stateChangeSuccess",function(){n.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){t()})}}}}function n(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,t){return e.addClass("ms-nav-toggle"),angular.isUndefined(t.collapsed)&&(t.collapsed=!0),e.attr("collapsed",t.collapsed),function(a,i,e,n){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},t=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 t=angular.element(i.find("ms-nav-toggle-items")[0]);t.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=t[0].offsetHeight;return t.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(t,{display:"block",height:"0px"},{height:n+"px"},s.expandAnimation).then(function(){t.addClass(s.expanded),t.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 t=angular.element(i.find("ms-nav-toggle-items")[0]),n=t[0].offsetHeight;return a.$evalAsync(function(){p.animate(t,{height:n+"px"},{height:"0px"},s.collapseAnimation).then(function(){t.removeClass(s.expanded),t.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(t,function(e){var t=angular.element(e).attr("ui-sref");angular.isUndefined(t)||(t=t.replace(r,""),o.push(t))}),n.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(n.isDisabled())return;n.disable(),l()?(n.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){n.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=n.getLockedItems(),t=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(t=!0)}),t||c().then(function(){n.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){n.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var t=g.current.name,n=!1;angular.forEach(o,function(e){t===e&&(n=!0)}),n?d():c()}),a.$on("msNav::pushToLockedList",function(){n.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],t.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],n.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var n={};return{setFoldable:function(e,t){n={scope:e,element:t}},isNavFoldedOpen:function(){return n.scope.isNavFoldedOpen()},toggleFold:function(){n.scope.toggleFold()},openFolded:function(){n.scope.openFolded()},closeFolded:function(){n.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,t=!1,n=[],a=[];e.isDisabled=function(){return t},e.enable=function(){t=!1},e.disable=function(){t=!0},e.setToggleItem=function(e,t){n.push({element:e,scope:t})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,t){a.push({element:e,scope:t})},e.clearLockedItems=function(){a=[]}}).directive("msNav",t).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",n)}(),function(){"use strict";function e(e,t){e.root?this.navigation=t.getNavigation(e.root):this.navigation=t.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},t.sort()}function t(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,t){var n=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"),n.addClass("ms-navigation-folded"),r();else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched"),n.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){t.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched"),n.addClass("ms-navigation-folded-open"),a.remove(),n.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),n.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")}),n.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,t){if(!angular.isUndefined(e)&&!angular.equals(e,t)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,t){angular.isUndefined(e)||angular.equals(e,t)||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 n(n,e,a,i,t,s){var o=this;o.element=e,o.node=n.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"),t=e[0].offsetHeight;n.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:t+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),n.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),n.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:t+"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===t.current.name||t.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(t.params)&&!angular.equals(o.node.stateParams,t.params))return;n.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,n)}n.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&n.$evalAsync(function(){o.collapsed=!1})}),n.$on("msNavigation::collapse",function(e,t){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(t))o.collapse();else{var n=t.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<n.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),n.$on("$stateChangeSuccess",function(){if(o.node.state===t.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(t.params)&&!angular.equals(o.node.stateParams,t.params))return;s.setActiveItem(o.node,n),a.$broadcast("msNavigation::collapse",o.node._path)}if(t.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(t.params)&&!angular.equals(o.node.stateParams,t.params))return;n.$emit("msNavigation::stateMatched")}})}()}function a(t){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){t.setNavigationScope(e)}}}}function i(n,e,t,a,i){var s=this;s.element=e,s.node=n.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;n.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,n)}n.$on("msNavigation::stateMatched",function(){s.hasChildren&&n.$evalAsync(function(){s.isActive=!0})}),n.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],t=i.getActiveItem();t&&(e=t.node._path.split(".")),-1<e.indexOf(s.node._id)?n.$evalAsync(function(){s.isActive=!0}):n.$evalAsync(function(){s.isActive=!1})}}),n.$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,n),t.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,t,n,a){t.on("click",function(){if(!a.hasChildren||i("gt-md"))return;t.toggleClass("expanded")}),e.$on("$destroy",function(){t.off("click")})}}}}e.$inject=["$scope","msNavigationService"],t.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],n.$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,t){if(angular.isString(e)){for(var n=e.split("."),a=n[n.length-1],i=function(e){var t=l;if(1===e.length)return t;e.pop();for(var n=0;n<e.length;n++){for(var a=e[n],i=!0,s=0;s<t.length;s++)if(t[s]._id===a){t=t[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};t.push(o),t=o.children}}return t}(n),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,t),s.uisref=m(s)):(t.children=[],!angular.isUndefined(t.weight)&&angular.isNumber(t.weight)||(t.weight=1),t._id=a,t._path=e,t.uisref=m(t),i.push(t))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){if(angular.isString(e)){for(var t=l,n=e.split("."),a=0;a<n.length;a++)for(var i=n[a],s=0;s<t.length;s++)if(t[s]._id===i){if(t[s]._path===e)return t.splice(s,1),!0;t=t[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 t=0;t<e.length;t++){var n=e[t].children;1<n.length&&n.sort(a),0<n.length&&c(n)}}function a(e,t){return parseInt(e.weight)-parseInt(t.weight)}function m(e){var t="";return angular.isDefined(e.state)&&(t=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(t=t+"("+angular.toJson(e.stateParams)+")")),t}this.saveItem=o,this.deleteItem=d,this.sortByWeight=c,this.$get=function(){var n=null,t=null,a=null,i=null,e={saveItem:o,deleteItem:d,sort:c,clearNavigation:function(){l=[],t&&(t.vm.navigation=l)},setActiveItem:function(e,t){n={node:e,scope:t}},getActiveItem:function(){return n},getNavigation:s,getFlatNavigation:function(e){return function e(t){var n=[];for(var a=0;a<t.length;a++){var i=angular.copy(t[a]);i.children=[],n.push(i),0<t[a].children.length&&(n=n.concat(e(t[a].children)))}return n}(s(e))},setNavigationScope:function(e){t=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){t.toggleFolded()}};return e;function s(e){if(e){for(var t=0;t<l.length;t++)if(l[t]._id===e)return[l[t]];return null}return l}}}).controller("MsNavigationController",e).directive("msNavigation",t).controller("MsNavigationNodeController",n).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,t,n,a){t.addClass(a.getClass()),a.group&&t.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,t,n,a){a.collapsable&&t.on("click",a.toggleCollapsed),e.$on("$destroy",function(){t.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,t,n,a){t.addClass(a.getClass()),a.group&&t.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(i,n,s,e,a,o,t,r,l,d,c){var m=this,u=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],p=JSON.parse(t.localStorage.getItem("motion2.user:"+m.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function g(e){switch(e){case"ringing":m.conf.ringingMute?m.soundPlayer.muted=!0:m.soundPlayer.muted=!1,m.conf.ringingId&&m.soundPlayer.setSinkId(m.conf.ringingId).then(function(){m.soundPlayer.volume=m.conf.ringingVolume}).then(f).catch(function(e){console.info(e.message,m.conf.ringingId)});break;case"speaker":m.conf.speakerMute?m.remotePlayer.muted=!0:m.remotePlayer.muted=!1,m.conf.speakerId&&m.remotePlayer.setSinkId(m.conf.speakerId).then(function(){m.remotePlayer.volume=m.conf.speakerVolume}).then(f).catch(function(e){console.info(e.message,m.conf.speakerId)});break;case"microphone":for(var t=0;t<m.sessions.length;t+=1)m.conf.microphoneMute?m.sessions[t].mute():m.sessions[t].unmute();f();break;default:console.log("unknown device")}}function v(e,t,n){m.calls.unshift({target:e,fullname:n||e,inbound:t,time:moment().format("HH:mm")}),50<m.calls.length&&m.calls.pop()}function h(){return m.conf.license&&m.conf.isWebRTCSupported&&m.conf.hasMicrophone&&m.conf.hasSpeakers&&"https"===m.conf.protocol&&("chrome"===m.conf.browserName.toLowerCase()||"opera"===m.conf.browserName.toLowerCase()||"safari"===m.conf.browserName.toLowerCase())}function f(){p.webrtc=_.pick(m.conf,u),t.localStorage.setItem("motion2.user:"+m.conf.id,JSON.stringify(p))}function b(e){this.remotePlayer.srcObject=e.stream}function A(e){var t,n,a=e.session;switch(e.originator){case"local":a.outgoing=!0,a.name=e.request.ruri.user,a.user=e.request.ruri.user,v(a.user,!1);break;case"remote":a.incoming=!0,a.name=e.request.from.display_name,a.user=e.request.from.uri.user,t=e.session,n=t.name?t.name+" <"+t.user+">":t.user,c.create("Incoming call from: ",n,null,function(){t.answer(m.sessionConf)},function(){t.terminate()}).then(function(e){t.notification=e}).catch(function(e){console.error(e)}),v(e.session.user,!0),m.conf.autoAnswer&&s(function(){a.isInProgress()&&(a.autoAnswer=!0,m.conf.microphoneId?m.sessionConf.mediaConstraints.audio={deviceId:m.conf.microphoneId}:m.sessionConf.mediaConstraints.audio=!0,a.answer(m.sessionConf))},m.conf.autoAnswerDelay?1e3*m.conf.autoAnswerDelay:0)}a.call_id=e.request.call_id,a.connection&&(a.connection.onaddstream=b.bind(this)),a.on("progress",function(e,t){var n=!1;switch(t.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),n=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),n=!0}n&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)}))}.bind(this,a)),a.on("confirmed",function(n,e){return n.confirmed=!0,"remote"===e.originator&&n.connection&&(n.connection.onaddstream=b.bind(this),_.head(n.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(n.connection.getRemoteStreams()))),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(n),g("speaker"),g("microphone"),n.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log(e.message)})),d.rpc.getVoiceChannels().$promise.then(function(e){var t=_.find(e.rows,function(e){return e.sipcalllinkedid===n.call_id?e:e.sipcalluniqueid===n.call_id?e:null});t&&(n.monitor=t.monitor,n.uniqueid=t.uniqueid,n.monitors=t.monitors)}).catch(function(e){console.error(e)})}.bind(this,a)),a.on("hold",function(e,t){"local"===t.originator&&(e.localHold=!0)}.bind(this,a)),a.on("unhold",function(e,t){"local"===t.originator&&(e.localHold=!1)}.bind(this,a)),a.on("ended",function(e,t){_.remove(this.sessions,{id:e.id})}.bind(this,a)),a.on("failed",function(e,t){this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),_.remove(this.sessions,{id:e.id})}.bind(this,a)),this.sessions.push(a)}function E(){m.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",i.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function y(e,t,n,a){return function(){o.show(o.simple().textContent(t).position(n).hideDelay(a)),e.terminate()}}function S(t){return d.user.getVoicePrefixes({id:m.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(n.body),clickOutsideToClose:!0,locals:{prefixes:e,required:m.conf.phoneBarPrefixRequired}})}).then(function(e){if(m.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+t}else{if(e&&-1!==e)return e+t;if(!e)return t}})}e(function(){},999),m.direction="right",m.selectedMode="md-scale",m.target="",m.showDialpad=!1,m.soundPlayer=document.createElement("audio"),m.remotePlayer=document.getElementById(m.conf.remotePlayerId),m.soundPlayer.volume=1,m.sessionConf={mediaConstraints:{audio:!0,video:!1}},m.sessions=[],m.calls=[],m.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+m.conf.host+":8089/ws")],uri:new JsSIP.URI("sip",m.conf.name,m.conf.host,5060,null,null).toString(),authorization_user:m.conf.name,ha1:m.conf.ha1,realm:m.conf.realm,user_agent:m.conf.ua,session_timers_refresh_method:"invite",register_expires:m.conf.phoneBarExpires||60,register:!0}),m.conf=_.merge(p.webrtc,m.conf),n.bind("keyup",function(e){switch(e.keyCode){case 27:s(function(){m.showDialpad=!1})}}),m.$onInit=function(){g("ringing"),g("speaker"),this.ua.on("registered",function(){console.log("registered"),this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){console.log("unregistered"),this.registered=!1}.bind(this)),this.ua.on("newRTCSession",A.bind(this)),DetectRTC.load(function(){this.conf.hasMicrophone=DetectRTC.hasMicrophone,this.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,this.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,this.conf.osName=DetectRTC.osName,this.conf.osVersion=DetectRTC.osVersion,this.conf.browserName=DetectRTC.browser.name,this.conf.browserVersion=DetectRTC.browser.version,h()?this.ua.start():this.conf.license||l.warning({title:r.instant("TOOLBAR.WARNING"),msg:r.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))}.bind(this),m.type=function(e,t){var n=e;switch(m.target||(m.target=""),t&&(m.target+=e,i.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",m.target)),e){case"*":n="asterisk";break;case"#":n="pound"}m.conf.enableDtmfTone&&(m.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+n+".ogg"),m.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<m.sessions.length;a+=1)m.sessions[a].isEstablished()&&!m.sessions[a].isOnHold().local&&m.sessions[a].sendDTMF(e)},m.call=function(){if(m.target&&m.target!==m.conf.name&&m.target!==m.conf.internal){m.conf.microphoneId?m.sessionConf.mediaConstraints.audio={deviceId:m.conf.microphoneId}:m.sessionConf.mediaConstraints.audio=!0;var e=m.target.replace(/ /g,"");return S(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&m.ua.call(e,m.sessionConf)}).then(function(){E()})}},m.hold=function(e){e.hold({useUpdate:!1})},m.refer=function(t){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 S(e)}).then(function(e){t.refer(e,{eventHandlers:{requestSucceeded:y(t,"requestSucceeded","top right",3e3),requestFailed:y(t,"requestFailed","top right",3e3)}})})},m.record=function(e){a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{session:e,sessions:m.sessions}})},m.unhold=function(e){e.unhold({useUpdate:!1}),m.putOtherCallsOnHold(e)},m.answer=function(e){m.conf.microphoneId?m.sessionConf.mediaConstraints.audio={deviceId:m.conf.microphoneId}:m.sessionConf.mediaConstraints.audio=!0,e.answer(m.sessionConf)},m.terminate=function(e){e.terminate()},m.selectSession=function(e){e.unhold({useUpdate:!1}),m.putOtherCallsOnHold(e)},m.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"#":m.type(e.key);break;case"enter":m.call()}},m.toggleDialpad=function(){m.showDialpad=!m.showDialpad},m.referAttended=function(e){a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(m.sessions,{id:e.id})}})},m.closeDialpad=function(){m.showDialpad=!1},m.initDevice=g,m.putOtherCallsOnHold=function(e){if(1<m.sessions.length)for(var t=0;t<m.sessions.length;t+=1)m.sessions[t].id===e.id||m.sessions[t].isOnHold().remote||m.sessions[t].hold({useUpdate:!1})},m.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|\-)*$/.test(e)?(m.target=e,i.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",m.target)):m.target?i.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",m.target):E():E()},m.targetSelected=function(e){e&&(m.target=e.originalObject.target,m.call(),E())},i.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:m.conf}}).then(function(e){e&&(m.conf=e,g("ringing"),g("speaker"))})}),i.$on("webrtc::logout",function(){m.ua.stop()}),i.$on("webrtc::call",function(e,t){t.target&&(m.target=t.target,m.call())}),i.$on("webrtc::transfer",function(e,t){if(t.target)for(var n=0;n<m.sessions.length;n+=1)if(m.sessions[n].isEstablished()&&!m.sessions[n].isOnHold().local)return S(t.target).then(function(e){e&&m.sessions[n].refer(e,{eventHandlers:{requestSucceeded:y(m.sessions[n],"requestSucceeded","top right",3e3),requestFailed:y(m.sessions[n],"requestFailed","top right",3e3)}})})})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","toasty","api","motNotification"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(t,e,n){var a=this;a.prefixes=e,a.required=n,a.closeDialog=function(e){t.hide(e)},a.call=function(){t.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,t){function n(){t.css("display","inline"),i(a,1e3)}function a(){t.css("display","none"),i(n,1e3)}n()}],replace:!0}}function t(t,i,s,e,n){var o=this;function a(t,e){console.log("startMonitor");var n=i.defer(),a=(e||t.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){t.filename=a+".wav",t.mixmonitorid=e.mixmonitorid,t.status="rec",o.session.monitor=!0,n.resolve(t)}).catch(function(e){n.reject(e)}),n.promise}o.title="Record",o.sessions=e,o.session=n,o.closeDialog=function(){t.hide()},o.addRecording=function(){var e=t.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");t.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(t){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:t.mixmonitorid}).$promise.then(function(e){t.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],t.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",t)}(),function(){"use strict";function e(t,a,i,e){var s=this;function o(e){t.hide(e)}s.title="Refer Attended",s.sessions=i,s.session=e,s.sessionTarget=null,i.length&&(s.target=i[0].user),s.closeDialog=o,s.transfer=function(){var e,t,n=_.find(i,function(e){if(e.user===s.target)return e});t=n.outgoing?(e=n,s.session):(e=s.session,n);t.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:function(e){a.show(a.simple().textContent("requestSucceeded").position("top right").hideDelay(3e3)),o(),t.terminate()},requestFailed:function(e){a.show(a.simple().textContent("requestFailed").position("top right").hideDelay(3e3)),o(),t.terminate()}}})}}e.$inject=["$mdDialog","$mdToast","sessions","session"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,t){var n=this;function a(e,t,n){var a;if(s[n]){if(a=_.find(e,function(e){return e.deviceId===s[n]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===t});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===t}))&&(s[n]=a.deviceId);return s[n]||null}s.ringingId=a(t,"audiooutput","ringingId"),s.speakerId=a(t,"audiooutput","speakerId"),s.microphoneId=a(t,"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,n.conf=angular.copy(s),n.devices=t,n.saveSettings=function(){e.hide(n.conf)},n.closeDialog=function(){e.hide()},n.isCompatibleBrowser=function(){return"chrome"===n.conf.browserName.toLowerCase()||"opera"===n.conf.browserName.toLowerCase()||"safari"===n.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,t){var n=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];t.addClass(n)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(t,e){var n=!1,a=document.createElement("audio");t.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){n||(n=!0,e.preventDefault(),i[t.model||"voiceRecording"].download({id:t.id}).$promise.then(function(e){var t=[e.buffer],n=new Blob(t,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(n)),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,t){var n=angular.element('<div class="ms-responsive-table-wrapper"></div>');t.after(n),n.append(t)}}})}(),function(){"use strict";function e(s,o,t,n){return{restrict:"AE",compile:function(e){if(!(n.getConfig("disableCustomScrollbars")||n.getConfig("disableCustomScrollbarsOnMobile")&&t.isMobile()))return e.addClass("ms-scroll"),function(e,t,n){var a={};function i(){PerfectScrollbar.update(t[0])}n.msScroll&&(a=e.$eval(n.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(t[0],a)},0),t.on("mouseenter",i),e.$watch(function(){return t.prop("scrollHeight")},function(e,t){angular.isUndefined(e)||angular.equals(e,t)||i()}),e.$watch(function(){return t.prop("scrollWidth")},function(e,t){angular.isUndefined(e)||angular.equals(e,t)||i()}),e.$on("$destroy",function(){t.off("mouseenter"),PerfectScrollbar.destroy(t[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var t={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){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(){return t}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(s,i,e){var o=this;o.collapsed=!0,o.query="",o.queryOptions={debounce:o.debounce||0};var t=!(!o.collapseOnBlur||"true"!=o.collapseOnBlur);o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.populateResults=function(e){if(o.collapsed)return;var t=angular.isArray(e),n=null===e;if(!t&&!n)return;o.selectedResultIndex=0,o.results=e},o.expand=function(){o.collapsed=!1,s.expand(),o.onExpand&&angular.isFunction(o.onExpand)&&o.onExpand()},o.collapse=function(){o.query="",o.populateResults(null),o.collapsed=!0,s.collapse(),o.onCollapse&&angular.isFunction(o.onCollapse)&&o.onCollapse()},o.blurCollapse=function(){if(!t)return;o.collapse()},o.absorbEvent=function(e){e.preventDefault()},o.handleKeydown=function(e){var t=e.keyCode;-1<[27,38,40].indexOf(t)&&e.preventDefault();switch(t){case 13:if(!o.results)return;o.handleResultClick(o.results[o.selectedResultIndex]);break;case 27:o.collapse();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,o.ensureSelectedResultIsVisible());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,o.ensureSelectedResultIsVisible())}},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.temporarilyIgnoreMouseEvents=function(){o.ignoreMouseEvents=!0,e.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=e(function(){o.ignoreMouseEvents=!1},250)},o.handleResultClick=function(e){o.onResultClick&&o.onResultClick({item:e});o.collapse()},o.ensureSelectedResultIsVisible=function(){var e=i.find(".ms-search-bar-results"),t=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&t){var n=t.position().top-8,a=t.position().top+t.outerHeight()+8;o.temporarilyIgnoreMouseEvents(),e.scrollTop()>n&&e.scrollTop(n),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},s.$watch("MsSearchBar.query",function(e,t){if(!angular.isUndefined(e)&&!angular.equals(e,t)&&!o.collapsed){var n=s.$parent.$eval(o.onSearch,{query:e}),a=angular.isArray(n),i=n&&!!n.then;a&&o.populateResults(n),i&&(o.resultsLoading=!0,n.then(function(e){o.populateResults(e)},function(){o.populateResults([])}).finally(function(){o.resultsLoading=!1}))}})}function t(i){return{restrict:"E",scope:{},require:"msSearchBar",controller:"MsSearchBarController as MsSearchBar",bindToController:{debounce:"=?",onSearch:"@",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"@"},templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),function(e,t){var n,a=i.find("body");e.collapse=function(){t.removeClass("expanded"),a.removeClass("ms-search-bar-expanded")},e.expand=function(){t.addClass("expanded"),a.addClass("ms-search-bar-expanded"),n.focus()},n=t.find("#ms-search-bar-input")}}}}e.$inject=["$scope","$element","$timeout"],t.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",t)}(),function(){"use strict";function e(e,n,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=[],t=l.getFlatNavigation(),n=r.defer(),a=0;a<t.length;a++)t[a].uisref&&e.push(t[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(){n.resolve(e)},250),n.promise},d.loadShortcuts=function(){var e=r.defer(),t=angular.fromJson(n.get("motion.shortcuts"));angular.isUndefined(t)&&(t=[{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}],n.put("motion.shortcuts",angular.toJson(t)));return e.resolve(t),e.promise},d.saveShortcuts=function(){var e=r.defer();return n.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 t=0;t<d.shortcuts.length;t++)d.shortcuts[t]._id===e._id&&(d.shortcuts.splice(t,1),d.query||(0===d.shortcuts.length?d.results=null:t>=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 t=e.keyCode;-1<[38,40].indexOf(t)&&e.preventDefault();switch(t){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"),t=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&t){var n=t.position().top-8,a=t.position().top+t.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>n&&e.scrollTop(n),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,t){angular.isUndefined(e)||angular.equals(e,t)||(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,t){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,t,n,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(t.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,t){var n=e.$on("msSplashScreen::remove",function(){a.leave(t).then(function(){n(),e=t=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function t(){i.setCurrentStep(1)}function n(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)?!!n(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,t,n){var a={element:e,scope:t,form:n,stepNumber:t.step||i.steps.length+1,stepTitle:t.stepTitle,stepTitleTranslate:t.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,t){return e.stepNumber-t.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(),t()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].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,t=e;1<=t;t--)if(!a(t)){e=t;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,t=e;t<=i.steps.length;t++)if(!a(t)){e=t;break}i.setCurrentStep(e)},i.gotoFirstStep=t,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 t=!1,n=1;n<e;n++)if(!s(n)){t=!0;break}return t},i.isStepOptional=n,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 t(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,t,n,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],t.$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,t,n,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,t,n,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(n.optionalStep),s.registerStep(t,e,i),t.hide()}}}}).directive("msVerticalStepper",t).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,t,n,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(n.optionalStep),e.stepInfo=s.registerStep(t,e,i),e.MsStepper=s,t.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,t){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function t(){var e=document.getElementById("bar-container"),t=document.getElementById("tab-container");return t.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==t.scrollLeft?"right":t.scrollWidth>e.scrollWidth&&t.scrollLeft>e.scrollLeft&&e.scrollWidth+t.scrollLeft>=t.scrollWidth?"left":t.scrollWidth>e.scrollWidth&&t.scrollLeft>e.scrollLeft&&e.scrollWidth+t.scrollLeft<t.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(t()){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,n,t,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){n.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,t){var n=angular.element(t[0]);d(n).then(function(){m(function(){s=!0})})}):d(n).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,t){angular.equals(e,t)||e&&(n.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var t=u.defer(),n=e.find("img");return 0<n.length?n.on("load",function(){t.resolve("Image is loaded")}):t.resolve("No images"),t.promise}function c(){r.scrollTop()+r.height()>n.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var t=this;t.scrollEl=void 0,t.setScrollEl=function(e){t.scrollEl=e},t.getScrollEl=function(){return t.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,t,n,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');t.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().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,t,n,i,s,o,r,l){function d(){a.timeoutId&&clearTimeout(a.timeoutId)}function c(){void 0!==o.startTime&&(a.millis=moment().diff(moment(a.startTime))),a.maxTimeUnit&&"day"!==a.maxTimeUnit?"second"===a.maxTimeUnit?(a.seconds=Math.floor(a.millis/1e3),a.minutes=0,a.hours=0,a.days=0,a.months=0,a.years=0):"minute"===a.maxTimeUnit?(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4),a.hours=0,a.days=0,a.months=0,a.years=0):"hour"===a.maxTimeUnit?(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4%60),a.hours=Math.floor(a.millis/36e5),a.days=0,a.months=0,a.years=0):"month"===a.maxTimeUnit?(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4%60),a.hours=Math.floor(a.millis/36e5%24),a.days=Math.floor(a.millis/36e5/24%30),a.months=Math.floor(a.millis/36e5/24/30),a.years=0):"year"===a.maxTimeUnit&&(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4%60),a.hours=Math.floor(a.millis/36e5%24),a.days=Math.floor(a.millis/36e5/24%30),a.months=Math.floor(a.millis/36e5/24/30%12),a.years=Math.floor(a.millis/36e5/24/365)):(a.seconds=Math.floor(a.millis/1e3%60),a.minutes=Math.floor(a.millis/6e4%60),a.hours=Math.floor(a.millis/36e5%24),a.days=Math.floor(a.millis/36e5/24),a.months=0,a.years=0),a.secondsS=1===a.seconds||0===a.seconds?"":"s",a.minutesS=1===a.minutes||0===a.minutes?"":"s",a.hoursS=1===a.hours||0===a.hours?"":"s",a.daysS=1===a.days||0===a.days?"":"s",a.monthsS=1===a.months||0===a.months?"":"s",a.yearsS=1===a.years||0===a.years?"":"s",a.sseconds=a.seconds<10?"0"+a.seconds:a.seconds,a.mminutes=a.minutes<10?"0"+a.minutes:a.minutes,a.hhours=a.hours<10?"0"+a.hours:a.hours,a.ddays=a.days<10?"0"+a.days:a.days,a.mmonths=a.months<10?"0"+a.months:a.months,a.yyears=a.years<10?"0"+a.years:a.years}"function"!=typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")}),a.autoStart=o.autoStart||o.autostart,0===r.html().trim().length?r.append(l("<span>{{millis}}</span>")(a)):r.append(l(r.contents())(a)),a.interval=a.intervalAttr||1e3,a.startTime=null,a.endTime=null,a.timeoutId=null,a.countdown=a.countdownAttr&&0<=parseInt(a.countdownAttr,10)?parseInt(a.countdownAttr,10):void 0,a.isRunning=!1,a.$watch("startTimeAttr",function(e,t){e!==t&&a.isRunning&&a.start()}),a.$on("timer-start",function(){a.start()}),a.$on("timer-resume",function(){a.resume()}),a.$on("timer-stop",function(){a.stop()}),a.$on("timer-clear",function(){a.clear()}),a.$on("timer-set-countdown",function(e,t){a.countdown=t}),a.start=r[0].start=function(){var e=moment(),t=a.startTimeAttr?moment(a.startTimeAttr):null;a.startTime=!t||e<t?e:t;var n=a.endTimeAttr?moment(a.endTimeAttr):null;a.endTime=!n||n<e?null:n,a.countdown||(a.countdown=a.countdownAttr&&0<parseInt(a.countdownAttr,10)?parseInt(a.countdownattr,10):void 0),d(),m(),a.isRunning=!0},a.resume=r[0].resume=function(){d(),a.countdownAttr&&(a.countdown+=1),a.startTime=moment().diff(moment(a.stoppedTime).diff(moment(a.startTime))),m(),a.isRunning=!0},a.stop=a.pause=r[0].stop=r[0].pause=function(){a.clear(),a.$emit("timer-stopped",{timeoutId:a.timeoutId,millis:a.millis,seconds:a.seconds,minutes:a.minutes,hours:a.hours,days:a.days})},a.clear=r[0].clear=function(){a.stoppedTime=moment(),d(),a.timeoutId=null,a.isRunning=!1},r.bind("$destroy",function(){d(),a.isRunning=!1});var m=function(){a.millis=moment().diff(a.startTime);var e=a.millis%1e3;if(a.endTimeAttr&&(a.millis=moment(a.endTime).diff(moment()),e=a.interval-a.millis%1e3),a.countdownAttr&&(a.millis=1e3*a.countdown),a.millis<0)return a.stop(),a.millis=0,c(),void(a.finishCallback&&a.$eval(a.finishCallback));c(),a.timeoutId=setTimeout(function(){m(),a.$digest()},a.interval-e),a.$emit("timer-tick",{timeoutId:a.timeoutId,millis:a.millis}),0<a.countdown?a.countdown--:a.countdown<=0&&(a.stop(),a.finishCallback&&a.$eval(a.finishCallback))};void 0!==a.autoStart&&!0!==a.autoStart||a.start()}e.$inject=["$scope","$document","$timeout","$interval","$window","$translate","$attrs","$element","$compile"],angular.module("app.core").controller("MsTimerController",e).directive("timer",function(){return{restrict:"EA",replace:!1,scope:{intervalAttr:"=interval",startTimeAttr:"=startTime",endTimeAttr:"=endTime",countdownAttr:"=countdown",autoStart:"&autoStart",maxTimeUnit:"="},controller:"MsTimerController"}})}(),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 t=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 n=0;n<e.voiceQueues.rows.length;n+=1)_.includes(a.filter,e.voiceQueues.rows[n].id)&&(t+=e.voiceQueues.rows[n][e.attrs[0].value]?parseInt(e.voiceQueues.rows[n][e.attrs[0].value]):0)}return t}})}(),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 t=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,t),r.multiBarChart.data.splice(0,t)}for(var n=0;n<r.properties.length;n+=1){if(r.multiBarChart.series[n]=o.instant("TOOLS."+r.properties[n].toUpperCase()),_.isNil(r.multiBarChart.data[n])&&(r.multiBarChart.data[n]=[]),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[n].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[n][s]=e.voiceQueues.rows[i][r.properties[n]]?parseInt(e.voiceQueues.rows[i][r.properties[n]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.xAxes.length;t+=1)r.multiBarChart.options.scales.xAxes[t].ticks.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.yAxes.length;n+=1)r.multiBarChart.options.scales.yAxes[n].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 t=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,t),o.pieChart.data.splice(0,t)}for(var n=0,a=0;n<o.properties.length;n+=1){o.pieChart.labels[n]=s.instant("TOOLS."+o.properties[n].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[n]]?parseInt(e.voiceQueues.rows[i][o.properties[n]]):0);o.pieChart.data[n]=a,a=0}}(e),e.foreground&&(t=e,o.pieChart.options.legend.fontColor=t.foreground));var t}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,n,a,i){var s=this;function t(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,t).$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(t){t&&t.attrs&&(t.attrs[0]&&t.attrs[0].value&&(s.query.id=t.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===t.attrs[0].type?t.attrs[0].value:void 0,CustomReportId:"custom"===t.attrs[0].type?t.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),t.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:t.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),t.attrs[1]&&t.attrs[1].value&&(s.refresh=parseInt(t.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(t.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=n(function(){s.interval&&a.cancel(s.interval),e(t)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&n.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,t){moment(t,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(t=moment(t,"").format("YYYY-MM-DD HH:mm:ss"));return t},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&n.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,t){this.getTrustedURL=function(e){return t.trustAsResourceUrl(e)}}function t(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"],t.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",t)}(),function(){"use strict";function e(e,t){var n=this;n.flipped=!1,n.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;n.flipped=!n.flipped,t.toggleClass("flipped",n.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,t,n,a,i){i(function(e){t.empty(),t.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,t,n,a,i){i(function(e){t.empty(),t.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,t,n,a,i){i(function(e){t.empty(),t.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var t=Date.now()-new Date(e);return t<36e5?moment(e).fromNow():t<864e5?moment(e).format("HH:mm"):t<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(t){return function(e){return t.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("filterByIds",function(){return function(e,t){if(0===e.length||!t)return e;if(0===t.length)return[];for(var n=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<t.length;o++){var r=t[o];if(i.id===r){s=!0;break}}s&&n.push(i)}return n}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,t,n){if(0===e.length||!n||0===n.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<n.length;r++){var l=n[r];if(-1<s[t].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,n){if(0===e.length||0===n.length)return e;var a=[];return e.forEach(function(e){var t=n.every(function(t){var n=!1;return e.tags.forEach(function(e){e.name!==t.name||(n=!0)}),n});t&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,t){if(0!==e.length&&0!==t.length){if(e.length<t.length)return[];var n=[],a=t.every(function(t){var n=!1;return e.forEach(function(e){e.name!==t.name||(n=!0)}),n});return a&&n.push(e),n}}})}(),function(){"use strict";function c(e,t,n,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=t,this.accept=n,this.reject=a,this.close=i}function m(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var n=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var t=_.find(e,function(e){return e.data.id===n.id});t&&t.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var l,n,d=[];"serviceWorker"in navigator&&m()?navigator.serviceWorker.register("notification.js").then(function(e){(l=e).update(),l.installing?n=l.installing:l.waiting?n=l.waiting:l.active&&(n=l.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===n){var t=_.find(d,{id:e.data.id});if(t)switch(e.data.action){case"accept":t.accept&&t.accept();break;case"reject":t.reject&&t.reject()}}}),{create:function(e,i,s,o,r){return new Promise(function(t,n){var a;m()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new c(e||"MyTitle",i||"MyBody",o,r),d.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return l.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){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,t){var n=e.split("@"),a=n[0],i=n[1],s=t||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var t=e.split("."),n=c,a=0;a<t.length;a++){if(angular.isUndefined(n[t[a]])){d.error('Resource part "'+t[a]+'" is not defined!'),n=!1;break}n=n[t[a]]}return n||!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";angular.module("app.core").provider("msApi",function(){var n=angular.injector(["ng"]).get("$log"),a="",v=[];function t(e){a=e}function i(){return a}function s(e,t){angular.isString(e)?angular.isArray(t)?v[e]={url:a+(t[0]||""),paramDefaults:t[1]||[],actions:t[2]||[],options:t[3]||{}}:n.error('"resource" must be an array and it must follow $resource definition'):n.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=t,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:t,getBaseUrl:i,register:s,resolve:function(e,t){g.$broadcast("msApi::resolveStart");var n=e.split("@"),a=n[0],i=n[1],s=t||{};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,t,n,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=t||{};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(n)&&angular.isFunction(n)&&n(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,t){return-1<t.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"}],t=[{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 n(e){for(var t=0;t<e.length;t++){var n=e[t].string,a=e[t].prop;if(i=e[t].versionSearch||e[t].identity,n){if(-1!==n.indexOf(e[t].subString))return e[t].identity}else if(a)return e[t].identity}}function a(e){var t=e.indexOf(i);if(-1!==t)return parseInt(e.substring(t+i.length+1))}var s=n(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=n(t)||"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,t){-1===t.indexOf(e)?t.push(e):t.splice(t.indexOf(e),1)}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,t){var n=this;n.themes=t.themes,n.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],n.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"}],n.layoutMode="wide",n.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",n.setActiveTheme=function(e){t.setActiveTheme(e)},n.getActiveTheme=function(){return t.themes.active},n.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===n.layoutMode)},n.updateLayoutStyle=function(){e.put("motion.layoutStyle",n.layoutStyle),location.reload()}}function t(t){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(){t("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],t.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",t)}(),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(n){o[n.name]={},angular.forEach(n.colors,function(e,t){o[n.name][t]={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 t=angular.copy(e);angular.forEach(t,function(n){angular.forEach(n,function(e,t){n[t]=e.levels,n[t].color=e.levels.default.color,n[t].contrast1=e.levels.default.contrast1,n[t].contrast2=e.levels.default.contrast2,n[t].contrast3=e.levels.default.contrast3,n[t].contrast4=e.levels.default.contrast4,delete n[t].default})}),s.setThemesList(t);var n=i.get("motion.selectedTheme");n?s.setActiveTheme(n):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,t){var n,a,i,s,o;(r={})["@themeName"]=t,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,n){angular.forEach(e,function(e,t){r["@"+a+d(n)+d(t)]=e})})}),n=r,a=new RegExp(Object.keys(n).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 n[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,t){var n=t||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),n&&(e=function(e,t){var n={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]=n.white[t]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=n.black[t]);return e}(e,n)),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(n,e,t){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(t.custom=i),n.alwaysWatchTheme(!0),angular.forEach(e,function(e){n.definePalette(e.name,e.options)}),angular.forEach(t,function(e,t){n.theme(t).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(t,n,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 n.error('You must have at least one theme named "default"'):(n.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 t.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],t.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(t,s,o,r){this.search=function(t){for(var e=[],n=r.getFlatNavigation(),a=o.defer(),i=0;i<n.length;i+=1)n[i].uisref&&e.push(n[i]);t&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(t)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?t.go(e.state,e.stateParams):t.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,t){var n=this;n.code="",n.send=!1,n.error=e.params,n.sendReport=function(){t.post("/api/jira",n.error).then(function(e){n.send=!0,e.data&&(n.code=e.data.id)},function(e){n.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,t){var n=this;n.currentUser=e.getCurrentUser(),n.cookieAlertHide=t.get("motion.cookieAlertHide:"+n.currentUser.id)||!1,n.cookieAlertOnClose=function(){t.put("motion.cookieAlertHide:"+n.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,t,n,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){t.success({title:n.instant("FORGOTPASSWORD.LINK_SENT"),msg:n.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&t.error({title:n.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,t){var n=this;n.currentUser=e.getCurrentUser(),n.newsAlertHide=t.get("motion.newsAlertHide:"+n.currentUser.id)||!1,n.newsAlertOnClose=function(){t.put("motion.newsAlertHide:"+n.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e){var t={baseUrl:"api/"};return t.auth=e(t.baseUrl+"auth/local",{},{local:{method:"post",url:t.baseUrl+"auth/local"},forgot:{method:"post",url:t.baseUrl+"auth/local/forgot"},reset:{method:"post",url:t.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},google:{method:"post",url:t.baseUrl+"auth/google"}}),t.jira=e(t.baseUrl+"jira"),t.rpc=e(t.baseUrl+"rpc",{},{startMonitor:{method:"get",url:t.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:t.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:t.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:t.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:t.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:t.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:t.baseUrl+"rpc/sms/queues"},getOpenchannelQueues:{method:"get",url:t.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:t.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:t.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:t.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:t.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:t.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:t.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:t.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:t.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:t.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:t.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:t.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:t.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:t.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:t.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:t.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:t.baseUrl+"rpc/fax/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:t.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:t.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:t.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:t.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:t.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:t.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),t.version=e(t.baseUrl+"version",{},{fetch:{method:"get",url:t.baseUrl+"version/fetch"},reset:{method:"get",url:t.baseUrl+"version/reset"},pull:{method:"get",url:t.baseUrl+"version/pull"},restart:{method:"get",url:t.baseUrl+"version/restart"},migrations:{method:"get",url:t.baseUrl+"version/migrations"}}),t.system=e(t.baseUrl+"system",{},{killProcess:{method:"get",url:t.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),t.pm2=e(t.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),t.user=e(t.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"users/describe"},clone:{method:"post",url:t.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:t.baseUrl+"users/create_many",isArray:!0},addContacts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/contacts"},changePassword:{isArray:!1,method:"put",url:t.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/avatar"},getContacts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/recordings"},getChatInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/fax/interactions"},login:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:t.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/openchannel_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/chat_websites"},getSquareProjects:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:t.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:t.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:t.baseUrl+"users/:id/scheduled_calls"}}),t.voiceChanSpy=e(t.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:t.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceContext=e(t.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:t.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceExtension=e(t.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:t.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"voice/extensions/:id/applications"}}),t.voiceMusicOnHold=e(t.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:t.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:t.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:t.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:t.baseUrl+"voice/mohs/:id/sounds"}}),t.voiceQueue=e(t.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/queues/describe"},clone:{method:"post",url:t.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:t.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:t.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:t.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:t.baseUrl+"voice/queues/:id/blacklists"}}),t.voiceRecording=e(t.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:t.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:t.baseUrl+"voice/recordings/:id/downloads"}}),t.voiceMail=e(t.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/mails/describe"},clone:{method:"post",url:t.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"voice/mails/:id/messages"}}),t.voiceMailMessage=e(t.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:t.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.voiceCallReport=e(t.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceDialReport=e(t.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceAgentReport=e(t.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceQueueReport=e(t.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:t.baseUrl+"voice/queues/reports/index"}}),t.memberReport=e(t.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"members/reports/describe"},clone:{method:"post",url:t.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.trunk=e(t.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"trunks/describe"},clone:{method:"post",url:t.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceTransferReport=e(t.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:t.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.mailServerOut=e(t.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:t.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),t.mailAccount=e(t.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:t.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:t.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"mail/accounts/:id/users"}}),t.mailQueue=e(t.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/queues/describe"},clone:{method:"post",url:t.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"mail/queues/:id/users"}}),t.mailSubstatus=e(t.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:t.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),t.mailInteraction=e(t.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:t.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.mailMessage=e(t.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/messages/describe"},clone:{method:"post",url:t.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:t.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.mailApplication=e(t.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/applications/describe"},clone:{method:"post",url:t.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.mailQueueReport=e(t.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.dashboard=e(t.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"dashboards/describe"},clone:{method:"post",url:t.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:t.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:t.baseUrl+"dashboards/:id/items"}}),t.dashboardItem=e(t.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:t.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),t.faxAccount=e(t.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:t.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:t.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"fax/accounts/:id/users"}}),t.faxApplication=e(t.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/applications/describe"},clone:{method:"post",url:t.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.faxInteraction=e(t.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:t.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.faxMessage=e(t.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/messages/describe"},clone:{method:"post",url:t.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:t.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.faxQueue=e(t.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/queues/describe"},clone:{method:"post",url:t.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"fax/queues/:id/users"}}),t.faxQueueReport=e(t.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.smsAccount=e(t.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:t.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:t.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"sms/accounts/:id/users"}}),t.smsApplication=e(t.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/applications/describe"},clone:{method:"post",url:t.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.smsInteraction=e(t.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:t.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.smsMessage=e(t.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/messages/describe"},clone:{method:"post",url:t.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:t.baseUrl+"sms/messages/:id/status"}}),t.smsQueue=e(t.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/queues/describe"},clone:{method:"post",url:t.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"sms/queues/:id/users"}}),t.openchannelAccount=e(t.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/accounts/:id/send"}}),t.openchannelApplication=e(t.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.openchannelInteraction=e(t.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.openchannelMessage=e(t.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"openchannel/messages/:id/reject"}}),t.openchannelQueue=e(t.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"openchannel/queues/:id/users"}}),t.chatWebsite=e(t.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/websites/describe"},clone:{method:"post",url:t.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:t.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:t.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"chat/websites/:id/users"}}),t.openchannelQueueReport=e(t.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatApplication=e(t.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/applications/describe"},clone:{method:"post",url:t.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatInteraction=e(t.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:t.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},customUpdate:{isArray:!1,method:"put",url:t.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:t.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:t.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:t.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:t.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:t.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:t.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:t.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:t.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.chatMessage=e(t.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/messages/describe"},clone:{method:"post",url:t.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:t.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:t.baseUrl+"chat/messages/:id/reject"}}),t.chatOfflineMessage=e(t.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:t.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatQueue=e(t.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/queues/describe"},clone:{method:"post",url:t.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:t.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:t.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:t.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"chat/queues/:id/users"}}),t.chatGroup=e(t.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/groups/describe"},clone:{method:"post",url:t.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:t.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:t.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:t.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:t.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:t.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:t.baseUrl+"chat/groups/:id/messages"}}),t.chatProactiveAction=e(t.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:t.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),t.cmCompany=e(t.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/companies/describe"},clone:{method:"post",url:t.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:t.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:t.baseUrl+"cm/companies/:id/contacts"}}),t.cmContact=e(t.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:t.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:t.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:t.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:t.baseUrl+"cm/contacts/upload/:id"}}),t.cmHopper=e(t.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:t.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:t.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:t.baseUrl+"cm/hopper/opencontacts"}}),t.cmHopperBlack=e(t.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:t.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),t.cmHopperFinal=e(t.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:t.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:t.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:t.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:t.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:t.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:t.baseUrl+"cm/hopper_final/checkContactHopper"}}),t.cmHopperHistory=e(t.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:t.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),t.cmCustomField=e(t.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:t.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.action=e(t.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"actions/describe"},clone:{method:"post",url:t.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),t.automation=e(t.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"automations/describe"},clone:{method:"post",url:t.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:t.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:t.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:t.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:t.baseUrl+"automations/:id/actions"}}),t.cannedAnswer=e(t.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"canned_answers/describe"},clone:{method:"post",url:t.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),t.disposition=e(t.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"dispositions/describe"},clone:{method:"post",url:t.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),t.condition=e(t.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"conditions/describe"},clone:{method:"post",url:t.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),t.interval=e(t.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"intervals/describe"},clone:{method:"post",url:t.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:t.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:t.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:t.baseUrl+"intervals/:id/sub_intervals/create_many"}}),t.pause=e(t.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"pauses/describe"},clone:{method:"post",url:t.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),t.cdr=e(t.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cdr/describe"},clone:{method:"post",url:t.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),t.voiceQueuesLog=e(t.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:t.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),t.schedule=e(t.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"schedules/describe"},clone:{method:"post",url:t.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:t.baseUrl+"schedules/:id/run"}}),t.sound=e(t.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sounds/describe"},clone:{method:"post",url:t.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:t.baseUrl+"sounds/:id"}}),t.tag=e(t.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"tags/describe"},clone:{method:"post",url:t.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),t.template=e(t.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"templates/describe"},clone:{method:"post",url:t.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),t.trigger=e(t.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"triggers/describe"},clone:{method:"post",url:t.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:t.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:t.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:t.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:t.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:t.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:t.baseUrl+"triggers/:id/actions"}}),t.variable=e(t.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"variables/describe"},clone:{method:"post",url:t.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),t.integration=e(t.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),t.integrationReport=e(t.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:t.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.analyticCustomReport=e(t.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:t.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:t.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:t.baseUrl+"analytics/custom_reports/:id/query"}}),t.analyticDefaultReport=e(t.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:t.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:t.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:t.baseUrl+"analytics/default_reports/:id/query"}}),t.analyticExtractedReport=e(t.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.analyticMetric=e(t.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:t.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),t.analyticFieldReport=e(t.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:t.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:t.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:t.baseUrl+"analytics/field_reports/:id/create_many"}}),t.analyticTreeReport=e(t.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:t.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.intSalesforceAccount=e(t.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),t.intSalesforceConfiguration=e(t.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),t.intSalesforceField=e(t.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intSugarcrmAccount=e(t.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),t.intSugarcrmConfiguration=e(t.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),t.intSugarcrmField=e(t.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intDeskAccount=e(t.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/accounts/:id/fields"}}),t.intDeskConfiguration=e(t.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:t.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:t.baseUrl+"integrations/desk/configurations/:id/tags"}}),t.intDeskField=e(t.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intZohoAccount=e(t.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/accounts/:id/fields"}}),t.intZohoConfiguration=e(t.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),t.intZohoField=e(t.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intZendeskAccount=e(t.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),t.intZendeskConfiguration=e(t.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:t.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:t.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),t.intZendeskField=e(t.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intFreshdeskAccount=e(t.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),t.intFreshdeskConfiguration=e(t.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:t.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:t.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),t.intFreshdeskField=e(t.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.intVtigerAccount=e(t.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:t.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:t.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),t.intVtigerConfiguration=e(t.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:t.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:t.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),t.intVtigerField=e(t.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:t.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),t.network=e(t.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"networks/describe"},clone:{method:"post",url:t.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatQueueReport=e(t.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatInternalMessage=e(t.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:t.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:t.baseUrl+"chat/internal/messages/users"}}),t.jscriptyAnswerReport=e(t.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:t.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.jscriptyQuestionReport=e(t.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:t.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.jscriptySessionReport=e(t.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:t.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:t.baseUrl+"jscripty/sessions/reports/:id/questions"}}),t.smsQueueReport=e(t.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:t.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),t.squareReport=e(t.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/reports/describe"},clone:{method:"post",url:t.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.squareReportDetail=e(t.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:t.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),t.jscriptyProject=e(t.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:t.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:t.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:t.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:t.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.setting=e(t.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"settings/describe"},clone:{method:"post",url:t.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:t.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:t.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:t.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:t.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:t.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:t.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:t.baseUrl+"settings/:id/preferred"}}),t.squareOdbc=e(t.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/odbc/describe"},clone:{method:"post",url:t.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:t.baseUrl+"square/odbc/:id/test"}}),t.squareProject=e(t.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/projects/describe"},clone:{method:"post",url:t.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:t.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:t.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:t.baseUrl+"square/projects/:id/users"}}),t.squareRecording=e(t.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/recordings/describe"},clone:{method:"post",url:t.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.squareMessage=e(t.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"square/messages/describe"},clone:{method:"post",url:t.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),t.team=e(t.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"teams/describe"},clone:{method:"post",url:t.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:t.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:t.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:t.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"teams/:id/users"}}),t.license=e(t.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"license/describe"},clone:{method:"post",url:t.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),t.campaign=e(t.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"campaigns/describe"},clone:{method:"post",url:t.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:t.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:t.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:t.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:t.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:t.baseUrl+"campaigns/:id/blacklists"}}),t.migration=e(t.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"migrations/describe"},clone:{method:"post",url:t.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),t.attachment=e(t.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"attachments/describe"},clone:{method:"post",url:t.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}}}),t.plugin=e(t.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"plugins/describe"},clone:{method:"post",url:t.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:t.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:t.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:t.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:t.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:t.baseUrl+"plugins/webhook"}}),t.mailTransferReport=e(t.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.chatTransferReport=e(t.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.faxTransferReport=e(t.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.openchannelTransferReport=e(t.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.smsTransferReport=e(t.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:t.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),t.cmList=e(t.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"cm/lists/describe"},clone:{method:"post",url:t.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:t.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:t.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:t.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:t.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:t.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:t.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,t){var n=t();return{type:n["content-type"],length:n["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:t.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:t.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"cm/lists/:id/users"}}),t.voicePrefix=e(t.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:t.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:t.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:t.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:t.baseUrl+"voice/prefixes/:id/users"}}),t.userProfile=e(t.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"userProfiles/describe"},clone:{method:"post",url:t.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:t.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:t.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:t.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:t.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:t.baseUrl+"userProfiles/:id/resources"}}),t.userProfileSection=e(t.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:t.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),t.userProfileResource=e(t.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:t.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:t.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),t}e.$inject=["$resource"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,t){t.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,t,n){this.themes=e.themes;var a=n.get("motion.language");a&&t.use(a)}e.$inject=["motionTheming","$translate","$cookies"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var t=new Date,n=new Date(e);return n.getDate()===t.getDate()&&n.getMonth()===t.getMonth()&&n.getFullYear()===t.getFullYear()?a("date")(n.getTime(),"shortTime"):n.getDate()===t.getDate()-1&&n.getMonth()===t.getMonth()&&n.getFullYear()===t.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(n.getTime(),"shortTime"):a("date")(n.getTime(),"MMM d, y h:mm a")}}function t(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"],t.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,t,n){var a,i={},s=0;for(a in e)if(n<=s&&(i[a]=e[a]),++s===n+t)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"}],t=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],n=[{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 t},getDaysOfWeek:function(){return n},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",t).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,t,n){var a;n.html5Mode(!0),t.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",function(e){return e.resolve("setting@get",{id:1})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,t,n){var a=e.$on("$stateChangeStart",function(){e.loadingProgress=!0}),i=e.$on("$stateChangeSuccess",function(){t(function(){e.loadingProgress=!1})});e.state=n,e.$on("$destroy",function(){a(),i()})}e.$inject=["$rootScope","$timeout","$state"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i;function s(){i=io({query:"id="+e.getCurrentUser().id,transports:["websocket","polling"]})}return{connect:s,on:function(e,t){t=t||angular.noop,i||s(),i.on(e,function(){var e=arguments;a.$apply(function(){t.apply(i,e)})})},onWithoutApply:function(e,t){t=t||angular.noop,i||s(),i.on(e,function(){t.apply(i,arguments)})},emit:function(e,t,n){n=n||angular.noop,i||s(),i.emit(e,t,function(){var e=arguments;a.$apply(function(){n.apply(i,e)})})},removeAllListeners:function(e){i||s(),i.removeAllListeners(e)},removeListener:function(e,t){i||s(),i.removeListener(e,t)},disconnect:function(){i||s(),i.disconnect()}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(t,n,e,a,i,s){var o=this;o.progresslogin=!1,o.login=function(){return o.progresslogin=!0,o.message="",s.login(o.form).then(function(){return t.go("app.dashboards.general")}).catch(function(e){o.message=e.message}).finally(function(){o.progresslogin=!1})},o.loginOauth=function(e){o.message="",n.location.href="/api/auth/"+e},o.onInit=function(){{if(t.params.token&&t.params.userId)return s.removeCookies(),o.progresslogin=!0,e.put("motion.token",t.params.token),i.user.get({id:t.params.userId}).$promise.then(function(e){e&&(s.updateCurrentUser(e),t.go("app.dashboards.general"))}).finally(function(){o.progresslogin=!1});s.isLoggedIn()&&t.go("app.dashboards.general")}},o.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth"],angular.module("app.login").controller("LoginController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.extractedReports,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.extractedReports=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="extractedReports",b.listOrder="",b.listOrderAsc=null,b.selectedExtractedReports=[],b.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:b.extractedReports.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getExtractedReports=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.analyticExtractedReport.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ExtractedReports",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditExtractedReport=function(e,t){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:t,extractedReports:b.extractedReports.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteExtractedReport=S,b.exportSelectedExtractedReports=function(){var e=angular.copy(b.selectedExtractedReports);return b.selectedExtractedReports=[],e},b.deleteSelectedExtractedReports=function(e){var t=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+b.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedExtractedReports.forEach(function(e){S(e)}),b.selectedExtractedReports=[]})},b.deselectExtractedReports=function(){b.selectedExtractedReports=[]},b.selectAllExtractedReports=function(){b.selectedExtractedReports=b.extractedReports.rows};var A=!0,E=1;function y(e){b.extractedReports=e||{count:0,rows:[]}}function S(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(b.extractedReports.rows,{id:e.id}),b.extractedReports.count-=1,b.extractedReports.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.analytics").controller("ExtractedReportsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.metrics,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.metrics=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="metrics",b.listOrder="",b.listOrderAsc=null,b.selectedMetrics=[],b.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},b.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Integration Report",value:"'report_integration'"},{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:"Queue Report",value:"'report_queue'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editdialog=function(e,t){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{metric:e,metrics:b.metrics.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getMetrics=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.analyticMetric.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Metrics",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMetric=function(e,t){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:t,metrics:b.metrics.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMetric=S,b.exportSelectedMetrics=function(){var e=angular.copy(b.selectedMetrics);return b.selectedMetrics=[],e},b.deleteSelectedMetrics=function(e){var t=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+b.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMetrics.forEach(function(e){S(e)}),b.selectedMetrics=[]})},b.deselectMetrics=function(){b.selectedMetrics=[]},b.selectAllMetrics=function(){b.selectedMetrics=b.metrics.rows};var A=!0,E=1;function y(e){b.metrics=e||{count:0,rows:[]}}function S(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(b.metrics.rows,{id:e.id}),b.metrics.count-=1,b.metrics.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){t.hide()}r.errors=[],r.report=angular.copy(n),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,t){r.currentNode=t.node}},r.copyReport=function(){var n;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){n=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var t={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return t["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(t).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:n.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,t,n,a,i,s,o,r,l,d){var c=this;function m(){t.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:"outer_join",value:"Outer 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),n.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 t=0;t<e.data.errors.length;t++)n.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else n.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 t=_.find(c.reports,{id:e.id});t&&_.merge(t,e),n.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 t=0;t<e.data.errors.length;t++)n.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else n.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=t.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);t.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),n.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(t,n,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){t[n]=_.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,t){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1};for(var n=0;n<r.report.condition.group.rules.length;n++)if(r.report.condition.group.rules[n].field){var a=r.report.condition.group.rules[n].field.split(".");1===a.length&&(r.report.condition.group.rules[n].field=r.report.table+"."+r.report.condition.group.rules[n].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,t,n){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(t,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(t){var a={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"};return{getMap:function(){var n=[];return _.forIn(a,function(e,t){n.push({name:t,api:e})}),n},getColumns:function(e){return t[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,t,n,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(){n.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 t=_.find(u.reportFields,{id:e.id});t&&_.merge(t,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 t=n.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);n.show(t).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,t,n,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,t){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==t?t:{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,t){var n=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(t).ok("OK").cancel("CANCEL");a.show(n).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,t){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:t,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var t=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(t).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var t=_.find(c.metrics,{id:e});return t?t.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var t=_.find(c.metrics,{id:e});return t?t.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()})})}t.$watch("vm_rf.query.filter",function(e,t){m?n(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,t,n,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")},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),n.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){t.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){t.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,n.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],n.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"},t.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",n.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"},t.error(o.error)})},o.mapArray=function(e,t){if(r(e))return _.map(e,t).join(",");return""},o.isArray=r,o.valueReplacer=function(e,t){moment(t,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(t=moment(t,"").format("YYYY-MM-DD HH:mm:ss"));return t}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,t){moment(t,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(t=moment(t,"").format("YYYY-MM-DD HH:mm:ss"));return t},o.closeDialog=function(){t.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"},n.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,n,a,i,s,o,t,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,t){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,t){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,t){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,t){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:t,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 t={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return t["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(t).$promise}).then(function(e){for(var t=0;t<e.rows.length;t+=1)e.rows[t].MetricId&&(e.rows[t].field=i[e.rows[t].MetricId].metric,e.rows[t].custom=!0),delete e.rows[t].MetricId;var n=o.document.createElement("a");n.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})),n.download=a.name+".json",n.target="_self",n.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,t){var n=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,t){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:t,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,t,n){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var n=atob(e.target.result.split(",")[1]);n=angular.fromJson(n),d.analyticCustomReport.save({name:n.name,description:n.description,table:n.table,conditions:n.conditions,joins:n.joins,parent:p.currentNode.id}).$promise.then(function(t){p.reports.rows.unshift(t),m.success({title:"Report saved!",msg:t.name?t.name+" has been saved!":""});var e=_.map(n.fields,function(e){return _.extend({},e,{CustomReportId:t.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 t=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(t).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 t=e&&e.rows?e.rows:[];if(0<t.length){var n=[];return a.forEach(function(e){_.find(t,["resourceId",e.id])&&n.push(e)}),h({count:n.length,rows:n})}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 t=0;t<e.data.errors.length;t++)m.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=t.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=t.node.id,f()}function E(e,t){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=t.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=t.node.id,f()}function y(e,t){var n=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:n}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=n),m.success({title:"Node Updated",msg:t.node.text?t.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(n){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:t.instant("ANALYTICS.CREATE"),action:function(){n=p.treeCustomInstance.jstree(!0).create_node(n),p.treeCustomInstance.jstree(!0).edit(n)}},rename:{_disabled:"#"===n.parent,label:t.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(n)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===n.parent,label:t.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(n.text?n.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,t=p.treeCustomInstance.jstree(!0).get_parent(n);t=p.treeCustomInstance.jstree(!0).get_node(t),p.treeCustomInstance.jstree(!0).delete_node(n),e=[n.id].concat(n.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(t)})}}}),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,t){g?n(function(){g=!1}):(t||(v=p.query.page),e!==t&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,t){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,n,a,t,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(){n.hide()}l.errors=[],l.report=angular.copy(t),l.export={},l.runReport=function(t){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?n.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:t,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var t={fields:"field,alias",nolimit:!0};return t["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",t)}]}}):(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,t,n,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=n[s].run(o,l).$promise},r.valueReplacer=function(e,t){moment(t,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(t=moment(t,"").format("YYYY-MM-DD HH:mm:ss"));return t}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.odbcs,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.odbcs=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="odbcs",b.listOrder="",b.listOrderAsc=null,b.selectedODBC=[],b.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{odbc:e,odbcs:b.odbcs.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.testtestOdbc=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getODBC=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.squareOdbc.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ODBC",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditOdbc=function(e,t){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:t,odbcs:b.odbcs.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteOdbc=S,b.exportSelectedODBC=function(){var e=angular.copy(b.selectedODBC);return b.selectedODBC=[],e},b.deleteSelectedODBC=function(e){var t=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+b.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedODBC.forEach(function(e){S(e)}),b.selectedODBC=[]})},b.deselectODBC=function(){b.selectedODBC=[]},b.selectAllODBC=function(){b.selectedODBC=b.odbcs.rows};var A=!0,E=1;function y(e){b.odbcs=e||{count:0,rows:[]}}function S(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(b.odbcs.rows,{id:e.id}),b.odbcs.count-=1,b.odbcs.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(t,n,a,i,s,e,o,r,l,d){var c=this;function m(e){t.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?n.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 t=0;t<e.data.errors.length;t++)s.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(c.projects,{id:e.id});t&&_.merge(t,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 t=0;t<e.data.errors.length;t++)s.error({title:e.data.errors[t].type,msg:e.data.errors[t].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=t.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);t.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 t=[],n=e.rows,a=0;a<n.length;a++)t.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(t)}).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(t,a,i,e,n,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,C,I,x,w,O,R){var N=this,D={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"],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"]},P={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},L={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function k(e,t,n,a){return _.map(e,function(e){return{value:e[t],option:e[n],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function M(){var e=_.find(N.attributes,{name:"sip_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(l,{id:Number(e.value)}))return a.user.get({id:_.find(N.attributes,{name:"sip_id"}).value,fields:"id,fullname,role"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,l.push(t),N.values.sip_id=k(l,"id","fullname","role")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.sip_id=k(l,"id","fullname","role")}}function U(){var e=_.find(N.attributes,{name:"list_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(A,{id:Number(e.value)}))return a.cmList.get({id:_.find(N.attributes,{name:"list_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,A.push(t),N.values.list_id=k(A,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.list_id=k(A,"id","name")}}function F(n){var e=_.find(N.attributes,{name:n});if(!_.some(N.attributes,{id:e.value})){if(!_.some(d,{id:Number(e.value)}))return a.trunk.get({id:_.find(N.attributes,{name:n}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,d.push(t),N.values[n]=k(d,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values[n]=k(d,"id","name")}}function $(){var e=_.find(N.attributes,{name:"queue_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(c,{id:Number(e.value)}))return a.voiceQueue.get({id:_.find(N.attributes,{name:"queue_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,c.push(t),N.values.queue_id=k(c,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.queue_id=k(c,"id","name")}}function q(){var e=_.find(N.attributes,{name:"file_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(m,{id:Number(e.value)}))return a.sound.get({id:_.find(N.attributes,{name:"file_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,m.push(t),N.values.file_id=k(m,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.file_id=k(m,"id","name")}}function G(){var e=_.find(N.attributes,{name:"variable_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(u,{id:Number(e.value)}))return a.variable.get({id:_.find(N.attributes,{name:"variable_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,u.push(t),N.values.variable_id=k(u,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.variable_id=k(u,"id","name")}}function H(){var e=_.find(N.attributes,{name:"odbc_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(p,{id:Number(e.value)}))return a.squareOdbc.get({id:_.find(N.attributes,{name:"odbc_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,p.push(t),N.values.odbc_id=k(p,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.odbc_id=k(p,"id","name")}}function V(){var e=_.find(N.attributes,{name:"project_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(g,{id:Number(e.value)}))return a.squareProject.get({id:_.find(N.attributes,{name:"project_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,g.push(t),N.values.project_id=k(g,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.project_id=k(g,"id","name")}}function Q(){var e=_.find(N.attributes,{name:"context"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(v,{id:Number(e.value)}))return a.voiceContext.get({id:_.find(N.attributes,{name:"context"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,v.push(t),N.values.context=k(v,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.context=k(v,"id","name")}}function B(){var e=_.find(N.attributes,{name:"interval_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(h,{id:Number(e.value)}))return a.interval.get({id:_.find(N.attributes,{name:"interval_id"}).value,fields:"id,name,IntervalId"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,h.push(t),N.values.interval_id=k(h,"id","name","IntervalId")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.interval_id=k(h,"id","name","IntervalId")}}function W(){var e=_.find(N.attributes,{name:"account_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(f,{id:Number(e.value)}))return a.mailAccount.get({id:_.find(N.attributes,{name:"account_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,f.push(t),N.values.account_id=k(f,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.account_id=k(f,"id","name")}}function Y(){var e=_.find(N.attributes,{name:"sms_account_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(C,{id:Number(e.value)}))return a.smsAccount.get({id:_.find(N.attributes,{name:"sms_account_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,C.push(t),N.values.sms_account_id=k(C,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.sms_account_id=k(C,"id","name")}}function j(){var e=_.find(N.attributes,{name:"template_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(b,{id:Number(e.value)}))return a.template.get({id:_.find(N.attributes,{name:"template_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,b.push(t),N.values.template_id=k(b,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.template_id=k(b,"id","name")}}function z(){var e=_.find(N.attributes,{name:"pause_id"});if(!_.some(N.attributes,{id:e.value})){if(!_.some(I,{id:Number(e.value)}))return a.pause.get({id:_.find(N.attributes,{name:"pause_id"}).value,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,I.push(t),N.values.pause_id=k(I,"id","name")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});N.values.pause_id=k(I,"id","name")}}N.cellName=E.tagName,N.attributes=_.map(E.attributes,function(e){return{name:e.name,value:e.value,defaultValue:P[N.cellName]&&_.includes(P[N.cellName],e.name),required:D[N.cellName]&&_.includes(D[N.cellName],e.name),help:L[N.cellName]&&_.includes(L[N.cellName],e.name)}}),N.values={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:n,ispeech_tts_language:o,google_tts_language:r,google_asr_language:s,aws_polly_region:T,aws_polly_voice:S,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:x,aws_lex_region:w},N.crudPermissions=R,N.onInit=function(){O.hasRole("admin")?(e={sip_id:k(l,"id","fullname","role"),trunk_name:k(d,"name","name"),trunk_id:k(d,"id","name"),queue_id:k(c,"id","name"),file_id:k(m,"id","name"),variable_id:k(u,"id","name"),odbc_id:k(p,"id","name"),project_id:k(g,"id","name"),context:k(v,"id","name"),interval_id:(n=h,a="id",i="name",s="IntervalId",o=_.filter(n,function(e){return null===e[s]}),r=[],_.forEach(o,function(t){r.push({value:t[a],option:t[i]});var e=_.filter(n,function(e){return e[s]===t.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:k(f,"id","name"),template_id:k(b,"id","name"),list_id:k(A,"id","name"),sms_account_id:k(C,"id","name"),pause_id:k(I,"id","name")},t=_.merge(N.values,e),N.values=t):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"],t=0;t<N.attributes.length;t++)if(_.includes(e,N.attributes[t].name))switch(N.attributes[t].name){case"sip_id":M();break;case"trunk_name":case"trunk_id":F(N.attributes[t].name);break;case"queue_id":$();break;case"file_id":q();break;case"variable_id":G();break;case"odbc_id":H();break;case"project_id":V();break;case"context":Q();break;case"interval_id":B();break;case"account_id":W();break;case"template_id":j();break;case"list_id":U();break;case"sms_account_id":Y();break;case"pause_id":z()}}();var e,t,n,a,i,s,o,r},N.closeDialog=function(e){e&&y(N.attributes),t.hide()},N.getMap=k}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","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,t,n,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("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)"}]})}(),function(){"use strict";function e(t,e,n,a){var i=this;i.project={preproduction:n},i.closeDialog=function(e){e?(a(i.project.preproduction),t.hide(i.project.preproduction)):t.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(t,n){var a=this;function i(e){e?(n(e),t.hide(e)):t.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 t=new FileReader;t.onload=function(e){i(e.target.result)},t.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(t,n,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){t.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){n.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),t.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(t,e,n,a,i){var s=this;s.projects=n,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(t.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):t.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,n,a,t,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){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=t,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={readOnly:!1,items:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,t){a.squareProject[t?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){n.success({title:"Project properly "+(t?"removed":"added"),msg:"Project has been "+(t?"removed":"added")+"!"}),t||l()}).catch(function(e){n.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(t,n,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(){t.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){n.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),t.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,n,a,i,s,o,r,t,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var C=this;C.currentUser=T.getCurrentUser(),C.project=t||{},C.userProfileSection=S&&1==S.count?S.rows[0]:null,C.crudPermissions=T.parseCrudPermissions(C.userProfileSection?C.userProfileSection.crudPermissions:null),C.onInit=function(){new EditorUi(C,new Editor,document.getElementById("geEditor")).openString(C.project.preproduction,C.project.name,C.project)},C.saveOrPublishProject=function(e,t){var n={preproduction:e};t&&(n.production=e);r.squareProject.update({id:C.project.id},n).$promise.then(function(e){o.success({title:"Project "+(t?"published":"saved")+"!",msg:C.project.name?C.project.name+" has been "+(t?"published":"saved")+"!":""}),C.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()})})},C.openDialog=function(e,t){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(n.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:t,crudPermissions:C.crudPermissions}})},C.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:C.crudPermissions}})},C.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},C.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{project:C.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},C.newVariable=function(t){return i(function(a,t){return r.userProfileSection.get({userProfileId:C.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var t=e.rows?e.rows[0]:null,n=T.parseCrudPermissions(t?t.crudPermissions:null);a(n)}).catch(function(e){t(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(n.body),clickOutsideToClose:!0,locals:{variable:t,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()})})},C.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:C.project}}).then(function(e){e&&_.merge(C.project,e)})},C.editXML=function(e,t){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:t}}).then(function(e){e&&(C.project.preproduction=e)})},C.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(C.project.preproduction=e)})},C.gotoProjects=function(){e.go("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,n,t,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,t){n.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,t){var n=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(t).ok("OK").cancel("CANCEL");l.show(n).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="Projects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,t){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:t,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 t=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(t).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 t=0;t<e.data.errors.length;t++)m.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){g?c(function(){g=!1}):(t||(v=p.query.page),e!==t&&(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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.squareRecordings,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.squareRecordings=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="squareRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedSquareRecordings=[],b.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio",sort:"-updatedAt",limit:10,page:1},b.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=s.uniqueid+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSquareRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.squareRecording.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SquareRecordings",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSquareRecording=function(e,t){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:t,squareRecordings:b.squareRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSquareRecording=S,b.exportSelectedSquareRecordings=function(){var e=angular.copy(b.selectedSquareRecordings);return b.selectedSquareRecordings=[],e},b.deleteSelectedSquareRecordings=function(e){var t=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+b.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSquareRecordings.forEach(function(e){S(e)}),b.selectedSquareRecordings=[]})},b.deselectSquareRecordings=function(){b.selectedSquareRecordings=[]},b.selectAllSquareRecordings=function(){b.selectedSquareRecordings=b.squareRecordings.rows};var A=!0,E=1;function y(e){b.squareRecordings=e||{count:0,rows:[]}}function S(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.squareRecordings.rows,{id:e.id}),b.squareRecordings.count-=1,b.squareRecordings.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.chatQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="chatQueues",b.listOrder="",b.listOrderAsc=null,b.selectedChatQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:b.chatQueues?b.chatQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:b.chatQueues?b.chatQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.chat.realtime.queues",{})}},b.success=y,b.getChatQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.chatQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ChatQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditChatQueue=function(e,t){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:t,chatQueues:b.chatQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteChatQueue=S,b.exportSelectedChatQueues=function(){var e=angular.copy(b.selectedChatQueues);return b.selectedChatQueues=[],e},b.deleteSelectedChatQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+b.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedChatQueues.forEach(function(e){S(e)}),b.selectedChatQueues=[]})},b.deselectChatQueues=function(){b.selectedChatQueues=[]},b.selectAllChatQueues=function(){b.selectedChatQueues=b.chatQueues.rows};var A=!0,E=1;function y(e){b.chatQueues=e||{count:0,rows:[]}}function S(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.chatQueues.rows,{id:e.id}),b.chatQueues.count-=1,b.chatQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.chat").controller("ChatQueuesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.chatQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("CHAT.ALL_TEAMS"),labelSelected:n.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.chatWebsites=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="chatWebsites",b.listOrder="",b.listOrderAsc=null,b.selectedChatWebsites=[],b.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,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,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,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:b.crudPermissions})},b.interactionsgoto=function(e,t){n.go("app.chat.chatWebsites.edit",{id:e.id,tab:9})},b.offlinemessagesgoto=function(e,t){n.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},b.agentadddialog=function(e,t){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:b.chatWebsites?b.chatWebsites.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getChatWebsites=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.chatWebsite.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ChatWebsites",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditChatWebsite=function(e,t){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:t,chatWebsites:b.chatWebsites.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteChatWebsite=S,b.exportSelectedChatWebsites=function(){var e=angular.copy(b.selectedChatWebsites);return b.selectedChatWebsites=[],e},b.deleteSelectedChatWebsites=function(e){var t=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+b.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedChatWebsites.forEach(function(e){S(e)}),b.selectedChatWebsites=[]})},b.deselectChatWebsites=function(){b.selectedChatWebsites=[]},b.selectAllChatWebsites=function(){b.selectedChatWebsites=b.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.chatWebsite&&(a=_.find(b.lists,{id:Number(b.chatWebsite.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.chatWebsite&&(a=_.find(b.lists,{id:Number(b.chatWebsite.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.chatWebsite&&(a=_.find(b.interval,{id:Number(b.chatWebsite.IntervalId)}));for(var i=0;i<b.interval.length;i++){_.some(t,{resourceId:b.interval[i].id})?(b.interval[i].canSelect=!0,n.push(b.interval[i])):a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]))}b.interval=n})}else{var n=[],a=null;b.chatWebsite&&(a=_.find(b.interval,{id:Number(b.chatWebsite.IntervalId)}));for(var i=0;i<b.interval.length;i++)a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]));b.interval=n}}).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 A=!0,E=1;function y(e){b.chatWebsites=e||{count:0,rows:[]}}function S(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(b.chatWebsites.rows,{id:e.id}),b.chatWebsites.count-=1,b.chatWebsites.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.chat").controller("ChatWebsitesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),t.params.id&&(g.chatWebsite.ChatWebsiteId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.chatWebsites,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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||[],g.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],g.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++){_.some(t,{resourceId:g.interval[i].id})?(g.interval[i].canSelect=!0,n.push(g.interval[i])):a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,n.push(g.interval[i]))}g.interval=n})}else{var n=[],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,n.push(g.interval[i]));g.interval=n}}).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 t(e,t){if(r.chatWebsiteApps.rows.length){var n=r.chatWebsiteApps.rows[t]?r.chatWebsiteApps.rows[t]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:n,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[t]=e:r.chatWebsiteApps.rows.splice(t,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,t=[],n=0;n<r.chatWebsiteApps.rows.length;n++,0){var a=r.chatWebsiteApps.rows[n],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,t=_.concat(t,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(t,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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:"1"},{option:"Always",value:"0"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",maxlength:255,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:"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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.chatWebsite=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,n).$promise},r.editChatWebsiteApp=t,r.editInterval=function(e,t){if(r.chatWebsiteApps.rows.length){var n=r.chatWebsiteApps.rows[t]?r.chatWebsiteApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==t?t:{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(t,e,n,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"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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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"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){t.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(t,e,n,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"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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("chat")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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"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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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"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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteChatCannedAnswers={count:0,rows:[]},c.selectedChatWebsiteChatCannedAnswers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.query.ChatWebsiteId=c.chatWebsite.id,c.getChatWebsiteChatCannedAnswers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getChatWebsiteChatCannedAnswers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getAnswers(c.query,p).$promise},c.createOrEditChatWebsiteChatCannedAnswer=function(e,t){s.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,chatCannedAnswer:t,chatCannedAnswers:c.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(c.selectedChatWebsiteChatCannedAnswers);return c.selectedChatWebsiteChatCannedAnswers=[],e},c.deleteChatWebsiteChatCannedAnswer=g,c.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var t=s.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+c.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),c.selectedChatWebsiteChatCannedAnswers=[]})};var m=!0,u=1;function p(e){c.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function g(e){l.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteChatCannedAnswers.rows,{id:e.id}),c.chatWebsiteChatCannedAnswers.count-=1,c.chatWebsiteChatCannedAnswers.rows.length||c.getChatWebsiteChatCannedAnswers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteChatCannedAnswers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.chatCannedAnswer.ChatWebsiteId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.chatCannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteChatDispositions={count:0,rows:[]},c.selectedChatWebsiteChatDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.query.ChatWebsiteId=c.chatWebsite.id,c.getChatWebsiteChatDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the chatDisposition?").htmlContent("<b>"+(e.name||"chatDisposition")+"</b> will be deleted.").ariaLabel("delete chatDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getChatWebsiteChatDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getDispositions(c.query,p).$promise},c.createOrEditChatWebsiteChatDisposition=function(e,t){s.show({controller:"CreateOrEditChatDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,chatDisposition:t,chatDispositions:c.chatWebsiteChatDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedChatWebsiteChatDispositions=function(){var e=angular.copy(c.selectedChatWebsiteChatDispositions);return c.selectedChatWebsiteChatDispositions=[],e},c.deleteChatWebsiteChatDisposition=g,c.deleteSelectedChatWebsiteChatDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected chatDispositions?").htmlContent("<b>"+c.selectedChatWebsiteChatDispositions.length+" selected</b> will be deleted.").ariaLabel("delete chatDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteChatDispositions.forEach(function(e){g(e)}),c.selectedChatWebsiteChatDispositions=[]})};var m=!0,u=1;function p(e){c.chatWebsiteChatDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteChatDispositions.rows,{id:e.id}),c.chatWebsiteChatDispositions.count-=1,c.chatWebsiteChatDispositions.rows.length||c.getChatWebsiteChatDispositions(),r.success({title:"ChatDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteChatDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_CHATDISPOSITION",g.chatDisposition=angular.copy(l),g.chatDispositions=r,g.newChatDisposition=!1,g.chatDisposition||(g.chatDisposition={},g.title="CHAT.NEW_CHATDISPOSITION",g.newChatDisposition=!0),t.params.id&&(g.chatDisposition.ChatWebsiteId=t.params.id),g.addNewChatDisposition=function(){g.errors=[],d.disposition.save(g.chatDisposition).$promise.then(function(e){g.chatDispositions.unshift(e.toJSON()),o.success({title:"ChatDisposition properly created",msg:g.chatDisposition.name?g.chatDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatDisposition=function(){g.errors=[],d.disposition.update({id:g.chatDisposition.id},g.chatDisposition).$promise.then(function(e){var t=_.find(g.chatDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"ChatDisposition properly saved!",msg:g.chatDisposition.name?g.chatDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The chatDisposition will be deleted.").ariaLabel("Delete ChatDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.chatDisposition.id}).$promise.then(function(){_.remove(g.chatDispositions,{id:g.chatDisposition.id}),o.success({title:"ChatDisposition properly deleted!",msg:(g.chatDisposition.name||"chatDisposition")+" has been deleted!"}),v(g.chatDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatDispositions","chatDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatDispositionDialogController",e)}(),function(){"use strict";function e(n,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"}],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 t=0;t<e.rows.length;t++)i.customFields.push({key:"cf_"+e.rows[t].id,value:e.rows[t].alias});return a.cmContact.describe().$promise}).then(function(e){for(var t=_.keys(e),n=0;n<t.length;n++)_.includes(i.uselessFields,t[n])||_.startsWith(t[n],"cf_")||i.fields.unshift({key:t[n],value:t[n]});return a.variable.get().$promise}).then(function(e){i.variables=e.rows}).catch(function(e){console.error(e)})},i.up=function(e,t){if(0!==t){var n=i.chatWebsite.offlineForm.items[t-1];i.chatWebsite.offlineForm.items[t]=n,i.chatWebsite.offlineForm.items[t-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===t?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===t-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,t){if(t!==i.chatWebsite.offlineForm.items.length-1){var n=i.chatWebsite.offlineForm.items[t+1];i.chatWebsite.offlineForm.items[t]=n,i.chatWebsite.offlineForm.items[t+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===t?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===t+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 t=n.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");n.show(t).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})}}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(n,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 t=0;t<e.rows.length;t++)i.customFields.push({key:"cf_"+e.rows[t].id,value:e.rows[t].alias});return a.cmContact.describe().$promise}).then(function(e){for(var t=_.keys(e),n=0;n<t.length;n++)_.includes(i.uselessFields,t[n])||_.startsWith(t[n],"cf_")||i.fields.unshift({key:t[n],value:t[n]});return a.variable.get().$promise}).then(function(e){i.variables=e.rows}).catch(function(e){console.error(e)})},i.up=function(e,t){if(0!==t){var n=i.chatWebsite.onlineForm.items[t-1];i.chatWebsite.onlineForm.items[t]=n,i.chatWebsite.onlineForm.items[t-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===t?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===t-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,t){if(t!==i.chatWebsite.onlineForm.items.length-1){var n=i.chatWebsite.onlineForm.items[t+1];i.chatWebsite.onlineForm.items[t]=n,i.chatWebsite.onlineForm.items[t+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===t?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===t+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 t=n.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");n.show(t).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)})}}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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==t?t:{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,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteInteractions={count:0,rows:[]},c.selectedChatWebsiteInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,UserId,ContactId,ChatWebsiteId,id,closedAt,Contact.firstName,Owner.name,disposition,ratingValue,ratingType,note,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.getChatWebsiteInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.chatInteractionDownload=function(s,e,t){return l.chatInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getChatWebsiteInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getInteractions(c.query,p).$promise},c.createOrEditChatWebsiteInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,interaction:t,interactions:c.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spychatInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"chat",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(c.selectedChatWebsiteInteractions);return c.selectedChatWebsiteInteractions=[],e},c.deleteChatWebsiteInteraction=g,c.deleteSelectedChatWebsiteInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),c.selectedChatWebsiteInteractions=[]})};var m=!0,u=1;function p(e){c.chatWebsiteInteractions=e||{count:0,rows:[]}}function g(e){l.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteInteractions.rows,{id:e.id}),c.chatWebsiteInteractions.count-=1,c.chatWebsiteInteractions.rows.length||c.getChatWebsiteInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==t?t:{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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteOfflineMessages={count:0,rows:[]},c.selectedChatWebsiteOfflineMessages=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,ContactId",sort:"-createdAt",limit:10,page:1},c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.getChatWebsiteOfflineMessages()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getChatWebsiteOfflineMessages=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getOfflineMessages(c.query,p).$promise},c.createOrEditChatWebsiteOfflineMessage=function(e,t){s.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,offlineMessage:t,offlineMessages:c.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.showOfflineMessageChatWebsiteOfflineMessage=function(e,n){s.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,t){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:n.id})}]}})},c.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(c.selectedChatWebsiteOfflineMessages);return c.selectedChatWebsiteOfflineMessages=[],e},c.deleteChatWebsiteOfflineMessage=g,c.deleteSelectedChatWebsiteOfflineMessages=function(e){var t=s.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+c.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),c.selectedChatWebsiteOfflineMessages=[]})},l.cmContact.get({fields:"id,firstName,lastName",nolimit:"true"}).$promise.then(function(e){c.contacts=e.rows||[],c.contacts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontacts",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function g(e){l.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteOfflineMessages.rows,{id:e.id}),c.chatWebsiteOfflineMessages.count-=1,c.chatWebsiteOfflineMessages.rows.length||c.getChatWebsiteOfflineMessages(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteOfflineMessages())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(t,e){this.title="CHAT.OFFLINE_MESSAGE",this.message=e,this.closeDialog=function(e){t.hide(e)}}e.$inject=["$mdDialog","message"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.chatWebsite={},c.chatWebsiteProactiveActions={count:0,rows:[]},c.selectedChatWebsiteProactiveActions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},c.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.init=function(e,t){c.chatWebsite=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.chatWebsite.id,c.query.ChatWebsiteId=c.chatWebsite.id,c.getChatWebsiteProactiveActions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getChatWebsiteProactiveActions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.chatWebsite.getProactiveActions(c.query,p).$promise},c.createOrEditChatWebsiteChatProactiveAction=function(e,t){s.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:c.chatWebsite,chatProactiveAction:t,proactive:c.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(c.selectedChatWebsiteProactiveActions);return c.selectedChatWebsiteProactiveActions=[],e},c.deleteChatWebsiteChatProactiveAction=g,c.deleteSelectedChatWebsiteProactiveActions=function(e){var t=s.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+c.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),c.selectedChatWebsiteProactiveActions=[]})};var m=!0,u=1;function p(e){c.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function g(e){l.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(c.chatWebsiteProactiveActions.rows,{id:e.id}),c.chatWebsiteProactiveActions.count-=1,c.chatWebsiteProactiveActions.rows.length||c.getChatWebsiteProactiveActions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getChatWebsiteProactiveActions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.chatProactiveAction.ChatWebsiteId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.proactive,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=this;t.chatWebsite={},t.init=function(e){t.chatWebsite=e,t.start="\n\x3c!-- START Motion Chat Script --\x3e",t.script='\n    <script src="'+t.chatWebsite.remote+"/api/chat/websites/"+t.chatWebsite.id+"/snippet?token="+t.chatWebsite.token+'"><\/script>',t.end="\n\x3c!-- START Motion Chat Script --\x3e"},t.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){t.script='\n    <script src="'+t.chatWebsite.remote+"/api/chat/websites/"+t.chatWebsite.id+"/snippet?token="+t.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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==t?t:{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,t,n,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=t.protocol()+"://"+t.host(),u.chatWebsite=c||e.params.chatWebsite||{},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.agentadddialog=function(e,t){n.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:u.chatWebsites?u.chatWebsites.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatWebsites=function(){e.go("app.chat.chatWebsites")},u.saveChatWebsite=function(){r.chatWebsite.update({id:u.chatWebsite.id},u.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:u.chatWebsite.name?u.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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.chatWebsite&&(a=_.find(u.lists,{id:Number(u.chatWebsite.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.chatWebsite&&(a=_.find(u.lists,{id:Number(u.chatWebsite.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).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.template.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.templates=e.rows||[],u.templates.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.templates=e.rows||[],u.templates.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(u.templates,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});u.templates=t})}else u.templates=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",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||[],u.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],u.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.chatWebsite&&(a=_.find(u.interval,{id:Number(u.chatWebsite.IntervalId)}));for(var i=0;i<u.interval.length;i++){_.some(t,{resourceId:u.interval[i].id})?(u.interval[i].canSelect=!0,n.push(u.interval[i])):a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,n.push(u.interval[i]))}u.interval=n})}else{var n=[],a=null;u.chatWebsite&&(a=_.find(u.interval,{id:Number(u.chatWebsite.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,n.push(u.interval[i]));u.interval=n}}).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","chatWebsite","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.chatQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].ChatQueueId].paused++,g.queues[e[t].rows[n].ChatQueueId].loggedInDb++,g.queues[e[t].rows[n].ChatQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].ChatQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"chat",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.chatQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="ChatQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditChatQueue=function(e,t){a.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:t,chatQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:t,chatQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.chatQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.ChatQueueId]&&g.queues[e.ChatQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.ChatQueueId]&&g.queues[e.ChatQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.ChatQueueId]&&(g.queues[e.ChatQueueId].loggedInDb+=1,g.queues[e.ChatQueueId].agents[e.UserId]=e.ChatQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.ChatQueueId]&&0<g.queues[e.ChatQueueId].loggedInDb&&(g.queues[e.ChatQueueId].loggedInDb-=1,delete g.queues[e.ChatQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("chat_queue:save",g.onSave),d.on("userChatQueue:save",g.onSaveMember),d.on("userChatQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("chat_queue:save"),d.removeAllListeners("userChatQueue:remove"),d.removeAllListeners("userChatQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,n.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.chat.realtime.agents");break;case 1:n.go("app.chat.realtime.queues");break;default:n.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.companies=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="companies",b.listOrder="",b.listOrderAsc=null,b.selectedCompanies=[],b.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},b.editstate=function(e,t){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:b.crudPermissions})},b.gotocontactsgoto=function(n,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?a.go("app.contactmanager.contacts",{CompanyId:n.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:n.id})}},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getCompanies=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.cmCompany.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Companies",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditCompany=function(e,t){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:t,companies:b.companies.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteCompany=S,b.exportSelectedCompanies=function(){var e=angular.copy(b.selectedCompanies);return b.selectedCompanies=[],e},b.deleteSelectedCompanies=function(e){var t=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+b.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedCompanies.forEach(function(e){S(e)}),b.selectedCompanies=[]})},b.deselectCompanies=function(){b.selectedCompanies=[]},b.selectAllCompanies=function(){b.selectedCompanies=b.companies.rows};var A=!0,E=1;function y(e){b.companies=e||{count:0,rows:[]}}function S(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(b.companies.rows,{id:e.id}),b.companies.count-=1,b.companies.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.contactmanager").controller("CompaniesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.companies,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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(n,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?a.go("app.contactmanager.contacts",{CompanyId:n.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:n.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("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(t,i,n,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,t){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){I(e)})},A.success=C,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,C).$promise:(A.query.id=A.userProfile.id,A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,C).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){for(var t=[],n=0;n<e.length;n++)t.push(d.cmCompany.get({id:e[n].id,fields:"id,name"}).$promise);o.all(t).then(function(e){e.forEach(function(e){var t=e.toJSON();t.canSelect=!1,A.companies.rows.push(t);var n={};n[t.id]=t.name,A.companiesMap=_.assignIn(A.companiesMap,n)})}).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,t){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:t.id})}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,t){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:t.id})}],lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,t){t&&t.dateOfBirth&&(t.dateOfBirth=new Date(t.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:t,contacts:A.contacts.rows,setting:null,crudPermissions:A.crudPermissions},resolve:{lists:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}],companies:["apiResolver","Auth",function(e,t){return t.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:t.getCurrentUser().userProfileId,section:"Companies",fields:"id,name"})}]}})},A.deleteContact=I,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var t=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(t).then(function(){A.selectedContacts.forEach(function(e){I(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var t=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(t).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 t=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(t).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 t=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(t).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,t,n){var a=JSON.parse(t);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 t=["csv"];if(!_.includes(t,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.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),t.$watch("vm.options.isOpen",function(e){e?n(function(){t.tooltipVisible=A.options.isOpen},600):t.tooltipVisible=A.options.isOpen});var S=!0,T=1;function C(e){A.contacts=e||{count:0,rows:[]}}function I(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 t=0;t<e.data.errors.length;t++)h.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})}t.$watch("vm.query.filter",function(e,t){S?n(function(){S=!1}):(t||(T=A.query.page),e!==t&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),t.$watch("vm.selectedList",function(e,t){e!==t&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),t.$watch("vm.selectedCompany",function(e,t){e!==t&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),t.$watch("vm.selectedTags",function(e,t){(e.length||t.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(n,a,e,t,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=t||{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 t=0;t<e.data.errors.length;t++)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(c.contacts,{id:e.id});t&&_.merge(t,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 t=0;t<e.data.errors.length;t++)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=n.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);n.show(t).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){e&&(c.customFields=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,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],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),t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,t,n,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 t=_.find(d.hoppers,{id:e.id});t&&_.merge(t,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,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){var E=this;E.currentUser=b.getCurrentUser(),E.license=f,E.journey=[],E.contact=r||{},E.hoppers=l||{rows:[],count:0},E.finals=d||{rows:[],count:0},E.histories=c||{rows:[],count:0},E.companies=u||{rows:[],count:0},E.lists=p||{rows:[],count:0},E.customFields=g||{rows:[],count:0},E.tags=v||{rows:[],count:0},E.jscriptySessions=h||{rows:[],count:0},E.timelineOptions={scrollEl:"#interaction-content"},E.userProfileSection=A&&1==A.count?A.rows[0]:null,E.crudPermissions=b.parseCrudPermissions(E.userProfileSection?E.userProfileSection.crudPermissions:null),E.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"),"")}),E.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},E.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},E.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},E.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},E.selectedTab=t.params.tab||0,E.onInit=function(){b.hasRole("admin")||(function(){if(!_.some(E.companies.rows,{id:E.contact.CompanyId}))o.cmCompany.get({id:E.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var t=e.toJSON();t.canSelect=!1,E.companies.rows.push(t)}).catch(function(e){s.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(E.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var t=0;t<e.length;t++)_.some(E.tags.rows,{id:e.id})||(e[t].canSelect=!1,E.tags.rows.push(e[t]))}());return o.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){E.users=e||{count:0,rows:[]},E.usersMap=_.mapValues(_.keyBy(E.users.rows,"id"),"fullname"),E.Tags=_.map(E.contact.Tags,"id")}).then(function(e){var t=["mail","chat","sms","openchannel","fax"];if(e&&e.id){for(var n=0;n<t.length;n++)o[t[n]+"Interaction"].get({ContactId:e.id,includeAll:!0}).$promise.then(C);o.voiceCallReport.get({fields:"id,uniqueid,type,source,destination,callerid,starttime,endtime,duration,disposition,amaflags,note,UserId,ContactId",ContactId:e.id,includeAll:!0}).$promise.then(C).catch(function(e){console.error(e)})}}(r))},E.gotoContacts=function(){t.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},E.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,t){return t.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:E.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:m.rows,contact:r}})},E.saveContact=function(){o.cmContact.update({id:E.contact.id},E.contact).$promise.then(function(){s.success({title:"Contact updated!",msg:E.contact.name?E.contact.name+" has been updated!":""})}).then(function(){return o.cmContact.setTags({id:E.contact.id,ids:E.Tags}).$promise}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},E.editCompany=function(e,t){var n=_.find(E.companies.rows,{id:t});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===n.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:o.userProfileSection.get({userProfileId:E.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var t=e.rows?e.rows[0]:null;return b.parseCrudPermissions(t?t.crudPermissions:null)}).catch(function(e){s.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:t})}]}})},E.onSelectList=function(e){if(E.contact.ListId){var t=i.confirm().title("You are selecting the list number: "+E.contact.ListId).textContent("Warning! You won't select a different list for the contact "+E.contact.firstName||E.contact.lastName||E.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(t).then(E.onSelectListSuccess).catch(function(){E.contact.ListId=null})}},E.onSelectListSuccess=function(){return o.cmList.getCustomFields({id:E.contact.ListId}).$promise.then(function(e){E.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},E.getDateFromString=function(e){return null===e?void 0:new Date(e)},E.getHoppers=function(){E.queryHopper.offset=(E.queryHopper.page-1)*E.queryHopper.limit,E.queryHopper.id=E.contact.id,E.promise=o.cmContact.getHoppers(E.queryHopper,T("hoppers")).$promise},E.getFinals=function(){E.queryFinal.offset=(E.queryFinal.page-1)*E.queryFinal.limit,E.queryFinal.id=E.contact.id,E.promise=o.cmContact.getHopperFinals(E.queryFinal,T("finals")).$promise},E.getHistories=function(){E.queryHistory.offset=(E.queryHistory.page-1)*E.queryHistory.limit,E.queryHistory.id=E.contact.id,E.promise=o.cmContact.getHopperHistories(E.queryHistory,T("histories")).$promise},E.getJscriptySessions=function(){E.queryJscriptySession.offset=(E.queryJscriptySession.page-1)*E.queryJscriptySession.limit,E.queryJscriptySession.id=E.contact.id,E.promise=o.cmContact.getJscriptySessions(E.queryJscriptySession,T("jscriptySessions")).$promise},E.deleteconfirm=function(t,e){var n=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(t.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){var e;e=t,o.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(E.hoppers.rows,{id:e.id}),E.hoppers.count--,E.hoppers.rows.length||E.getHoppers(),s.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},E.editHopper=function(e,t){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:t,hoppers:E.hoppers.rows,license:null,setting:null,crudPermissions:E.crudPermissions}})},E.createOrEditIvrCampaignHopper=function(e,t){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:t,hoppers:E.hoppers.rows,license:null,setting:null,crudPermissions:E.crudPermissions}})},E.getColorByItem=function(e){var t="";e.FaxAccountId?t="fax":e.OpenchannelAccountId?t="openchannel":e.SmsAccountId?t="sms":e.MailAccountId?t="mail":e.ChatWebsiteId?t="chat":e.amaflags&&(t="voice");return 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";default:return"blue-A700"}}(t)};var y=!0,S=1;function T(t){return function(e){E[t]=e||{count:0,rows:[]}}}function C(e){e&&e.count&&e.rows.length&&(E.journey=_.concat(E.journey,e.rows))}e.$watch("vm.queryHopper.filter",function(e,t){y?n(function(){y=!1}):(t||(S=E.queryHopper.page),e!==t&&(E.queryHopper.page=1),e||(E.queryHopper.page=S),E.getHoppers())}),e.$watch("vm.queryFinal.filter",function(e,t){y?n(function(){y=!1}):(t||(S=E.queryFinal.page),e!==t&&(E.queryFinal.page=1),e||(E.queryFinal.page=S),E.getFinals())}),e.$watch("vm.queryHistory.filter",function(e,t){y?n(function(){y=!1}):(t||(S=E.queryHistory.page),e!==t&&(E.queryHistory.page=1),e||(E.queryHistory.page=S),E.getHistories())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,t,n,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),t.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=[],t=0;t<g.result.errors.length;t+=1){var n=g.result.errors[t].row;n.contact_import_error=g.result.errors[t].message,e.push(n)}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(n){i(function(){if(g.result.rows=n.rows,n.errors)for(var e=0;e<n.errors.length;e++)g.result.errors.push(n.errors[e]);if(n.finish){g.result.finish=!0,g.result.affectedRows=n.affectedRows,g.result.failedRows=g.result.errors.length;var t=g.result.rows-g.result.affectedRows-g.result.errors.length;t&&0<t&&(g.duplicates.length?g.result.duplicatedRows=t:g.result.failedRows+=t),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,t,o,n,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(t),a.lists=n||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:t.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,t,n){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+n.id+" will be overwritten by the fields of the contact #"+t.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:n.id,from:t.id}).$promise}).then(function(e){i.hide({new:e,to:n,from:t}),_.remove(o,{id:n.id}),_.remove(o,{id:t.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,t,n,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,t){if(e!==t)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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.globalCustomFields,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=n.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);n.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){e.splice(t,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var t=e.length,n=0;n<t;n++)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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.globalCustomFields=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="globalCustomFields",b.listOrder="",b.listOrderAsc=null,b.selectedGlobalCustomFields=[],b.query={fields:"createdAt,updatedAt,id,alias,type,values,required",sort:"-updatedAt",ListId:"null",limit:10,page:1},b.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"),"")}),b.editdialog=function(e,t){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:b.globalCustomFields.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getGlobalCustomFields=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.cmCustomField.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="GlobalCustomFields",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditGlobalCustomField=function(e,t){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:t,globalCustomFields:b.globalCustomFields.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteGlobalCustomField=S,b.exportSelectedGlobalCustomFields=function(){var e=angular.copy(b.selectedGlobalCustomFields);return b.selectedGlobalCustomFields=[],e},b.deleteSelectedGlobalCustomFields=function(e){var t=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+b.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedGlobalCustomFields.forEach(function(e){S(e)}),b.selectedGlobalCustomFields=[]})},b.deselectGlobalCustomFields=function(){b.selectedGlobalCustomFields=[]},b.selectAllGlobalCustomFields=function(){b.selectedGlobalCustomFields=b.globalCustomFields.rows};var A=!0,E=1;function y(e){b.globalCustomFields=e||{count:0,rows:[]}}function S(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(b.globalCustomFields.rows,{id:e.id}),b.globalCustomFields.count-=1,b.globalCustomFields.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.lists,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserList?"penalty "+e.UserList.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.list=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.list={},c.listCustomFields={count:0,rows:[]},c.selectedListCustomFields=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,alias,type,values,required",limit:10,page:1},c.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"),"")}),c.init=function(e,t){c.list=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.list.id,c.query.ListId=c.list.id,c.getListCustomFields()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getListCustomFields=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.cmList.getCustomFields(c.query,p).$promise},c.createOrEditListCustomField=function(e,t){s.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:c.list,customField:t,customFields:c.listCustomFields.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedListCustomFields=function(){var e=angular.copy(c.selectedListCustomFields);return c.selectedListCustomFields=[],e},c.deleteListCustomField=g,c.deleteSelectedListCustomFields=function(e){var t=s.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+c.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedListCustomFields.forEach(function(e){g(e)}),c.selectedListCustomFields=[]})};var m=!0,u=1;function p(e){c.listCustomFields=e||{count:0,rows:[]}}function g(e){l.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(c.listCustomFields.rows,{id:e.id}),c.listCustomFields.count-=1,c.listCustomFields.rows.length||c.getListCustomFields(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getListCustomFields())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,t,n,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,t){if(e!==t)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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.customFields,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=n.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);n.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){e.splice(t,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var t=e.length,n=0;n<t;n++)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,n,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,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(n,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?a.go("app.contactmanager.contacts",{ListId:n.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:n.id})}},u.agentadddialog=function(e,t){n.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.list={},c.listVoiceDispositions={count:0,rows:[]},c.selectedListVoiceDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.list=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.list.id,c.query.ListId=c.list.id,c.getListVoiceDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the voiceDisposition?").htmlContent("<b>"+(e.name||"voiceDisposition")+"</b> will be deleted.").ariaLabel("delete voiceDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getListVoiceDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.cmList.getDispositions(c.query,p).$promise},c.createOrEditListVoiceDisposition=function(e,t){s.show({controller:"CreateOrEditVoiceDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/voiceDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:c.list,voiceDisposition:t,voiceDispositions:c.listVoiceDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedListVoiceDispositions=function(){var e=angular.copy(c.selectedListVoiceDispositions);return c.selectedListVoiceDispositions=[],e},c.deleteListVoiceDisposition=g,c.deleteSelectedListVoiceDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected voiceDispositions?").htmlContent("<b>"+c.selectedListVoiceDispositions.length+" selected</b> will be deleted.").ariaLabel("delete voiceDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedListVoiceDispositions.forEach(function(e){g(e)}),c.selectedListVoiceDispositions=[]})};var m=!0,u=1;function p(e){c.listVoiceDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.listVoiceDispositions.rows,{id:e.id}),c.listVoiceDispositions.count-=1,c.listVoiceDispositions.rows.length||c.getListVoiceDispositions(),r.success({title:"VoiceDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getListVoiceDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListVoiceDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_VOICEDISPOSITION",g.voiceDisposition=angular.copy(l),g.voiceDispositions=r,g.newVoiceDisposition=!1,g.voiceDisposition||(g.voiceDisposition={},g.title="CONTACTMANAGER.NEW_VOICEDISPOSITION",g.newVoiceDisposition=!0),t.params.id&&(g.voiceDisposition.ListId=t.params.id),g.addNewVoiceDisposition=function(){g.errors=[],d.disposition.save(g.voiceDisposition).$promise.then(function(e){g.voiceDispositions.unshift(e.toJSON()),o.success({title:"VoiceDisposition properly created",msg:g.voiceDisposition.name?g.voiceDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceDisposition=function(){g.errors=[],d.disposition.update({id:g.voiceDisposition.id},g.voiceDisposition).$promise.then(function(e){var t=_.find(g.voiceDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"VoiceDisposition properly saved!",msg:g.voiceDisposition.name?g.voiceDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The voiceDisposition will be deleted.").ariaLabel("Delete VoiceDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.voiceDisposition.id}).$promise.then(function(){_.remove(g.voiceDispositions,{id:g.voiceDisposition.id}),o.success({title:"VoiceDisposition properly deleted!",msg:(g.voiceDisposition.name||"voiceDisposition")+" has been deleted!"}),v(g.voiceDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceDispositions","voiceDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditVoiceDispositionDialogController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.lists=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="lists",b.listOrder="",b.listOrderAsc=null,b.selectedLists=[],b.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,t){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:b.crudPermissions})},b.gotocontactsgoto=function(n,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?a.go("app.contactmanager.contacts",{ListId:n.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:n.id})}},b.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var t=[e.buffer],n=new Blob(t,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(n)),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()})})},b.agentadddialog=function(e,t){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{list:e,lists:b.lists?b.lists.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getLists=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.cmList.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Lists",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditList=function(e,t){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:t,lists:b.lists.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteList=S,b.exportSelectedLists=function(){var e=angular.copy(b.selectedLists);return b.selectedLists=[],e},b.deleteSelectedLists=function(e){var t=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+b.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedLists.forEach(function(e){S(e)}),b.selectedLists=[]})},b.deselectLists=function(){b.selectedLists=[]},b.selectAllLists=function(){b.selectedLists=b.lists.rows};var A=!0,E=1;function y(e){b.lists=e||{count:0,rows:[]}}function S(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(b.lists.rows,{id:e.id}),b.lists.count-=1,b.lists.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,t,n,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=t(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 t=_.find(d.voiceQueues.rows,{id:e.id});t&&_.merge(t,_.pick(e,_.keys(t)))}),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 t=0;t<e.rows.length;t+=1)e.rows[t].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[t].type+"/ms-widget-engine."+e.rows[t].type+".html",e.rows[t].voiceQueues=d.voiceQueues,e.rows[t].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[t])}).catch(function(e){d.customDashboard=void 0}),n.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&t.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,n,a,o,i,t,l,s,r,d,c,m,u,p,g,v,h){var f=this;f.license=p,f.setting=g;function b(e){var t={};for(var n in f.tabs)f.tabs.hasOwnProperty(n)&&(t[n]=f.tabs[n],f.tabs[n].interaction&&(t[n].interaction=_.pick(f.tabs[n].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","closed","draft"])));a.localStorage.setItem("motion2.user:"+f.user.id,JSON.stringify({tabs:t,currentTab:f.currentTab})),A(e)}function A(e){if(_.isNil(e)||e&&"interaction"===e.type){var t={id:f.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],openchannel:[],chat:[]}};for(var n in f.tabs)f.tabs.hasOwnProperty(n)&&t.capacity.hasOwnProperty(f.tabs[n].channel)&&f.tabs[n].interaction&&!f.tabs[n].interaction.closed&&(t.capacity[f.tabs[n].channel]+=1,t.interaction[f.tabs[n].channel].push(f.tabs[n].interaction.id));if(!_.isEqual(f.agentCapacity,t.capacity))return f.agentCapacity=t.capacity,l.rpc.setAgentCapacity(t)}}function E(t){if(f.tabs[t.id]&&(function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:f.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(f.tabs[t.id]),delete f.tabs[t.id],f.currentTab=0,b(t),"interaction"===t.type))return l[t.channel+"Interaction"].get({id:t.interaction.id}).$promise.then(function(e){return l.user["remove"+_.upperFirst(t.channel)+"Interactions"]({id:f.user.id,ids:[e.id]}).$promise}).catch(function(e){console.error(e)})}function y(e){e.id=_.random(1e10),e.openedAt=new Date,e.saved=!1,e.badges=0,f.tabs[e.id]=e,f.currentTab=e.id,b(e)}function S(t,n){var e={type:"interaction",title:t?t.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";default:return"icon-hangouts"}}(t),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";default:return"grey"}}(t),channel:t,interaction:n},a=_.find(f.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===n.id&&e.channel===t});a?f.currentTab=a.id:y(e)}function T(e){e&&e.uniqueid&&f.notifications[e.uniqueid]&&(r.clear(f.notifications[e.uniqueid]),delete f.notifications[e.uniqueid])}function C(e,t){return 0<=t&&(e.calls[t].disposedAt=new Date,s.removeAllListeners("voice_queue_channel:remove"),s.removeAllListeners("voice_outbound_channel:remove"),!0)}function I(){return function(e){if(404===e.status)r.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}f.detectBrowser=h.detectBrowser(),f.user=t.getCurrentUser(),f.currentTab=0,f.notifications={},f.tabs={},f.agentCapacity={},f.globalUserLists=d||{count:0,rows:[]},f.globalLists=c||{count:0,rows:[]},f.globalCompanies=m||{count:0,rows:[]},f.globalTags=u||{count:0,rows:[]},f.onContactManager=function(t){var e={ListId:t.ListId,limit:1,offset:0,sort:"-updatedAt"},n=!1,a=t.calleridname&&"<unknown>"!==t.calleridname?t.calleridname:t.calleridnum||t.uniqueid,i=t.calleridnum;_.isNil(t["xmd-contactid"])?_.isNil(t.routeId)?e.phone=t.calleridnum:(e.phone=t.destcalleridnum,a=t.destcalleridname&&"<unknown>"!==t.destcalleridname?t.destcalleridname:t.destcalleridnum||t.uniqueid,i=t.destcalleridnum):(e.id=t["xmd-contactid"],n=!0,_.isNil(t["xmd-listid"])||parseInt(t["xmd-listid"],10)===t.ListId||t["xmd-contactid2"]&&(e.id=t["xmd-contactid2"]));return l.cmContact.get(e).$promise.then(function(e){n?e&&f.addContactTab(e,t):e.count&&e.rows[0]?f.addContactTab(e.rows[0],t):f.addContactTab({firstName:a,ListId:t.ListId,phone:i},t)}).catch(I())},f.onJscripty=function(n){return l.jscriptyProject.get({id:n.ProjectId}).$promise.then(function(t){if(t){if(!_.isUndefined(n["xmd-contactid"]))return l.cmContact.get({id:n["xmd-contactid"]}).$promise.then(function(e){try{t.formData=Mustache.render(t.formData,_.merge(n,{user:f.user,contact:e}))}catch(e){console.error(e)}y({type:"jscripty",title:t.name,icon:"icon-script",color:"grey",project:t,call:n,contact:e})}).catch(I());try{t.formData=Mustache.render(t.formData,_.merge(n,{user:f.user}))}catch(e){console.error(e)}y({type:"jscripty",title:t.name,icon:"icon-script",color:"grey",project:t,call:n})}}).catch(I())},f.onBot=function(t){var n=t.calleridname&&"<unknown>"!==t.calleridname?t.calleridname:t.calleridnum,a=t.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:t.uniqueid}).$promise.then(function(e){e.count&&y({type:"bot",title:n+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:t.uniqueid}})})},f.onBrowserUrl=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":a.open(e.uri);break;case"1":a.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;default:a.open(e.uri)}else a.open(e.uri)},f.onBrowserPopup=function(e){e&&e.html&&y({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})},f.onNotificationSave=function(e){if(e&&e.uniqueid){n=e,v.isSupported()?v.requestPermission().then(function(){var e,t;t={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=n).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},v.show(e.title,t)},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 t=f.alreadyExistsTab(e);if(t){if(l[e.channel+"Message"])return f.currentTab!==t.id&&(t.badges+=1),l[e.channel+"Message"].accept({id:e.id,UserId:f.user.id}).$promise.catch(I())}else r.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){f.notifications[e.uniqueid]=this.id},onAccept:function(){if(T(e),l[e.channel+"Message"])return l[e.channel+"Message"].accept({id:e.id,UserId:f.user.id,manual:!0}).$promise.then(function(e){S(e.channel,e.interaction),r.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(I())},onReject:function(){if(T(e),l[e.channel+"Message"])return l[e.channel+"Message"].reject({id:e.id,UserId:f.user.id}).$promise.then(function(e){r.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(I())}})}var n},f.onNotificationRemove=T,f.onVoiceChannelRemove=function(t){var e=f.currentTab?f.tabs[f.currentTab]:null;e||(e=_.find(f.tabs,{calls:[{uniqueid:t.uniqueid}]}));var n=_.findLastIndex(e.calls,function(e){return e.uniqueid===t.uniqueid});if(!C(e,n)){var a=_.find(f.tabs,{calls:[{uniqueid:t.uniqueid}]});if(a){var i=_.findLastIndex(a.calls,function(e){return e.uniqueid===t.uniqueid});C(a,i)}}f.contact&&f.contact.id&&$timeout((s=t.uniqueid,o=f.contact.id,r=e,function(){var e=_.find(r.calls,function(e){return e.uniqueid===s});if(e)return l.voiceCallReport.update({id:s,ContactId:o}).$promise.catch(function(e){console.error(e)})}),1e3);var s,o,r},f.onClickTab=function(e){f.currentTab=e,b(f.tabs[e])},f.isActiveTab=function(e){return e===f.currentTab},f.alreadyExistsTab=function(t){return _.find(f.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==t.interactionId&&e.channel==t.channel})},f.addContactTab=function(t,n){var a={type:"contact",title:t?function(e){var t="";e&&(e.firstName||e.lastName?(e.firstName&&(t+=e.firstName+" "),e.lastName&&(t+=e.lastName)):e.phone&&(t=e.phone));return t}(t):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:t,userLists:d,lists:c,companies:m,tags:u,calls:n?[n]:[],autoCreate:n?n.autoCreate:0};if(n){if(n["xmd-cdrtype"]&&"dialer"===n["xmd-cdrtype"])n.answeredAt=n.agentcalledAt?moment(n.agentcalledAt,"YYYY-MM-DD HH:mm:ss").toDate():new Date;else if(n.uniqueid){var e=n.uniqueid.split(".")[0];n.answeredAt=e?new Date(1e3*parseInt(e)):new Date}(n.agentcompleteAt||n.endtime)&&(n.disposedAt=new Date)}if(t){var i=_.find(f.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==t.id:"contact"===e.type&&e.contact&&e.contact.phone==t.phone});if(i){if(n)if(i.calls){var s=_.find(i.calls,function(e){return e.uniqueid===n.uniqueid});s||i.calls.push(n)}else i.calls=[n];f.currentTab=i.id}else{if(t.ListId)return l.disposition.get({ListId:t.ListId}).$promise.then(function(e){return a.dispositions=e,l.cmList.getCustomFields({id:t.ListId}).$promise}).then(function(e){a.customFields=e}).catch(I()).finally(function(){y(a)});y(a)}}else y(a)},f.addInteractionTab=S,f.addTab=y,f.removeTab=E,f.updateLocalStorage=b,f.closeTab=function(e){var t=n.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)return n.show(t).then(function(){"interaction"===e.type&&n.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(i.body),clickOutsideToClose:!0,locals:{user:f.user,channel:e.channel,interaction:e.interaction}}),E(e)}).catch(function(){"interaction"===e.type&&E(e)});if("contact"===e.type&&0<e.calls.length)return t._options.textContent="There is a call that hasn't been disposed yet.",n.show(t).then(function(){E(e)});E(e)}},s.on("trigger:contactmanager",f.onContactManager),s.on("trigger:jscripty",f.onJscripty),s.on("trigger:bot",f.onBot),s.on("trigger:browser:url",f.onBrowserUrl),s.on("trigger:browser:popup",f.onBrowserPopup),s.on("notification:save",f.onNotificationSave),s.on("notification:remove",f.onNotificationRemove),function(){var e=a.localStorage.getItem("motion2.user:"+f.user.id);if(e)try{e=JSON.parse(e),f.tabs=e.tabs?e.tabs:{},f.currentTab=e.currentTab?e.currentTab:0,A(f.tabs[f.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in f.notifications)f.notifications.hasOwnProperty(e)&&T({uniqueid:e});s.removeAllListeners("trigger:contactmanager"),s.removeAllListeners("trigger:jscripty"),s.removeAllListeners("trigger:browser:url"),s.removeAllListeners("trigger:browser:popup"),s.removeAllListeners("notification:save"),s.removeAllListeners("notification:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils"],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 t in e)f.hasOwnProperty(t)&&null!=e[t]&&(f[t]=e[t])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,t,p){var g=t.Notification||t.mozNotification||t.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var n=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?n.resolve(e):n.reject(e)}):g.requestPermission(function(e,t){p.GRANTED===e?n.resolve(e):n.reject(e)});return n.promise},show:function(e,t){if(t=t||{},!v()||(n=e,a=t,i=angular.isString(n),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)}(t.showOnPageHidden)||h()!==p.GRANTED)return;var n,a,i,s;var o=new g(e,t),r=t.duration||f.duration,l=void 0===t.autoClose?f.autoClose:t.autoClose;o.onclick=function(){t.onClick&&t.onClick(),t.focusOnclick&&window.focus(),t.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 t(e,t){if(angular.isString(e)){for(var n=e.split("."),a=n[n.length-1],i=function(e){var t=l;if(1===e.length)return t;e.pop();for(var n=0;n<e.length;n++){for(var a=e[n],i=!0,s=0;s<t.length;s++)if(t[s]._id===a){t=t[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};t.push(o),t=o.children}}return t}(n),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,t),s.uisref=d(s)):(t.children=[],!angular.isUndefined(t.weight)&&angular.isNumber(t.weight)||(t.weight=1),t._id=a,t._path=e,t.uisref=d(t),i.push(t))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var t="";return angular.isDefined(e.state)&&(t=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(t=t+"("+angular.toJson(e.stateParams)+")")),t}this.saveItem=t,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var t=l,n=e.split("."),a=0;a<n.length;a++)for(var i=n[a],s=0;s<t.length;s++)if(t[s]._id===i){if(t[s]._path===e)return t.splice(s,1),!0;t=t[s].children;break}return!1},this.$get=function(){var e={saveItem:t,getNavigation:function(e){if(e){for(var t=0;t<l.length;t++)if(l[t]._id===e)return[l[t]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(n){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,t){{if(a.setting=t,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return n.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(o,r,n,l,d,c,t,e,a,i){var m=this;function s(e){e&&e.count&&e.rows.length&&(m.journey=_.concat(m.journey,e.rows))}m.user=t.getCurrentUser(),m.detectBrowser=i.detectBrowser(),m.journey=[],m.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},m.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,page:1},m.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},m.hoppers={rows:[],count:0},m.finals={rows:[],count:0},m.histories={rows:[],count:0},m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){return m.contact.id=e.id,m.newContact=!1,m.tab.title=e.firstName||e.phone,m.tab.contact=m.contact,d.user.addContacts({id:t.getCurrentUser().id,ids:[e.id]})}).then(function(){m.detailForm.$pristine=!0,m.customFieldsForm.$pristine=!0,c.success({title:"Contact properly created",msg:m.contact.firstName?m.contact.firstName+" has been created!":""})}).then(function(){return d.cmContact.setTags({id:m.contact.id,ids:m.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){return m.tab.title=e.firstName||e.phone,m.tab.contact=m.contact,l.$parent.vm.updateLocalStorage(),d.user.addContacts({id:t.getCurrentUser().id,ids:[e.id]})}).then(function(){return d.cmContact.setTags({id:m.contact.id,ids:m.tab.Tags}).$promise}).then(function(){m.detailForm.$pristine=!0,m.customFieldsForm.$pristine=!0,c.success({title:"Contact properly updated!",msg:m.contact.name?m.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getCustomFields=function(e){return d.cmList.getCustomFields({id:e}).$promise.then(function(e){m.tab.customFields=e}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.call=l.$parent.vm.call,m.disposeCall=function(e,t){if(m.newContact)return void c.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});o.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(r.body),targetEvent:t,clickOutsideToClose:!1,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null"})}]},locals:{dispositions:m.tab.dispositions,contact:m.contact,call:t}}).then(function(e){e&&("BLACKLIST"===e?c.success({title:a.instant("DASHBOARDS.INFO"),msg:a.instant("DASHBOARDS.CALL_DISPOSED")+" "+e}):"RECALLME"===e||"RESCHEDULE"===e||c.success({title:a.instant("DASHBOARDS.INFO"),msg:a.instant("DASHBOARDS.CALL_SAVED")})),_.remove(m.tab.calls,function(e){return e.uniqueid==t.uniqueid})})},m.duplicateContact=function(e){o.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:m.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:t.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},m.mergeContact=function(e){o.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:m.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:t.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var t in l.$parent.$parent.$parent.vm.tabs)if(l.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var n=l.$parent.$parent.$parent.vm.tabs[t];n&&n.contact&&(e.from&&e.from.id&&e.from.id===n.contact.id&&l.$parent.$parent.$parent.vm.removeTab(n),e.to&&e.to.id&&e.to.id===n.contact.id&&l.$parent.$parent.$parent.vm.removeTab(n))}e.new&&l.$parent.$parent.$parent.vm.addContactTab(e.new)}})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:m.contact,user:m.user})}catch(e){console.error(e)}try{l.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:m.contact})}catch(e){c.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},m.getHoppers=function(){m.contact&&m.contact.id&&(m.queryHopper.ContactId=m.contact.id,m.queryHopper.offset=(m.queryHopper.page-1)*m.queryHopper.limit,m.promise=d.cmHopper.get(m.queryHopper,g("hoppers")).$promise)},m.getFinals=function(){m.contact&&m.contact.id&&(m.queryFinal.ContactId=m.contact.id,m.queryFinal.offset=(m.queryFinal.page-1)*m.queryFinal.limit,m.promise=d.cmHopperFinal.get(m.queryFinal,g("finals")).$promise)},m.getHistories=function(){m.contact&&m.contact.id&&(m.queryHistory.ContactId=m.contact.id,m.queryHistory.offset=(m.queryHistory.page-1)*m.queryHistory.limit,m.promise=d.cmHopperHistory.get(m.queryHistory,g("histories")).$promise)},m.getJscriptyProjects=function(){d.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){m.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.jscripty.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscripty.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getMailAccounts=function(){d.user.getMailAccounts({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.mailAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.mail.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mail.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getFaxAccounts=function(){d.user.getFaxAccounts({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.faxAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.fax.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.fax.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getSmsAccounts=function(){d.user.getSmsAccounts({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.smsAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.sms.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sms.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getOpenchannelAccounts=function(){d.user.getOpenchannelAccounts({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.openchannelAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.sms.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannel.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getChatWebsites=function(){d.user.getChatWebsites({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.chatAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.chatAccounts.account"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatAccounts.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getLists=function(){d.user.getLists({id:m.user.id,nolimit:!0}).$promise.then(function(e){m.lists=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.cm.lists"}];for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cm.lists",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.composeInteraction=function(e,i,t,n){var s=i.toLowerCase();o.show({controller:"Compose"+i+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose"+i+"/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{account:t,message:{to:"mail"==s?n:n.split(",")},type:"new",interaction:{Contact:m.contact}},fullscreen:!0}).then(function(a){return d[s+"Account"].send({id:t.id},a).$promise.then(function(e){if("Mail"===i){var t=e;if(t&&t.Messages&&t.Messages.length){if(a.attachments&&a.attachments.length)for(var n=0;n<a.attachments.length;n+=1)d.attachment.update({id:a.attachments[n].id},{MailMessageId:_.head(t.Messages).id});c.success({title:"Message properly sent!",msg:"Message has been sent!"}),t.closed?(t.disposition=null,o.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!0,locals:{user:m.user,channel:"mail",interaction:t}})):l.$parent.vm.addInteractionTab("mail",t)}}else c.success({title:"Message properly sent!",msg:"Message has been sent!"}),l.$parent.vm.addInteractionTab(s,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else"fax"===s?c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):c.error({title:e.status?"API:"+e.status+" - "+e.statusText:i.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.init=function(e,t){m.tab=e,l.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){m.tab.saved=e[0]&&e[1]}),m.license=t,m.contact=m.tab.contact,m.newContact=!1,m.currentTab=0,m.contact&&m.contact.id?(d.user.addContacts({id:m.user.id,ids:[m.contact.id]}),m.contact.ListId&&(m.tab.userLists.rows=_.unionBy(m.tab.userLists.rows,_.filter(m.tab.lists.rows,{id:m.contact.ListId}),"id"),m.list=_.find(m.tab.userLists.rows,{id:m.contact.ListId})),m.getHoppers(),m.getFinals(),m.getHistories(),m.getMailAccounts(),m.getFaxAccounts(),m.getSmsAccounts(),m.getOpenchannelAccounts(),m.getChatWebsites(),m.getLists()):(m.newContact=!0,e.autoCreate&&(console.log("autoCreate"),m.addNewContact()));d.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){m.users=e||{count:0,rows:[]},m.usersMap=_.mapValues(_.keyBy(m.users.rows,"id"),"fullname")}).then(function(){if(m.contact&&m.contact.id)return d.cmContact.getTags({id:m.contact.id}).$promise}).then(function(e){e&&(m.tab.Tags=_.map(e.rows,"id"))}).then(function(e){var t=["mail","chat","sms","openchannel","fax"];if(e&&e.id){for(var n=0;n<t.length;n++)d[t[n]+"Interaction"].get({ContactId:e.id,includeAll:!0}).$promise.then(s);d.voiceCallReport.get({ContactId:e.id,includeAll:!0}).$promise.then(s).catch(function(e){console.error(e)})}}(m.contact))},m.hasPermission=function(e){return t.hasPermission(e)},m.openInteraction=function(e,t){try{if(t.MailAccountId)return l.$parent.$parent.$parent.vm.addInteractionTab("mail",t);if(t.ChatWebsiteId)return l.$parent.$parent.$parent.vm.addInteractionTab("chat",t);if(t.SmsAccountId)return l.$parent.$parent.$parent.vm.addInteractionTab("sms",t);if(t.OpenchannelAccountId)return l.$parent.$parent.$parent.vm.addInteractionTab("openchannel",t);if(t.FaxAccountId)return l.$parent.$parent.$parent.vm.addInteractionTab("fax",t)}catch(e){c.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},m.getColorByItem=function(e){var t="";e.FaxAccountId?t="fax":e.OpenchannelAccountId?t="openchannel":e.SmsAccountId?t="sms":e.MailAccountId?t="mail":e.ChatWebsiteId?t="chat":e.amaflags&&(t="voice");return 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";default:return"blue-A700"}}(t)},m.isMyAccount=function(e){{if(e.FaxAccountId)return _.includes(_.map(m.faxAccounts?m.faxAccounts.rows:[],"id"),e.FaxAccountId);if(e.OpenchannelAccountId)return _.includes(_.map(m.openchannelAccounts?m.openchannelAccounts.rows:[],"id"),e.OpenchannelAccountId);if(e.SmsAccountId)return _.includes(_.map(m.smsAccounts?m.smsAccounts.rows:[],"id"),e.SmsAccountId);if(e.MailAccountId)return _.includes(_.map(m.mailAccounts?m.mailAccounts.rows:[],"id"),e.MailAccountId);if(e.ChatWebsiteId)return _.includes(_.map(m.chatAccounts?m.chatAccounts.rows:[],"id"),e.ChatWebsiteId);if(e.amaflags)return!0}return!1},e.on("voice_queue_channel:remove",l.$parent.vm.onVoiceChannelRemove),e.on("voice_outbound_channel:remove",l.$parent.vm.onVoiceChannelRemove),m.getJscriptyProjects(),l.$watch("currentTab",function(e,t){1===m.currentTab&&(m.getHoppers(),m.getFinals(),m.getHistories())});var u=!0,p=1;function g(t){return function(e){m[t]=e||{count:0,rows:[]}}}l.$watch("queryHopper.filter",function(e,t){u?n(function(){u=!1}):(t||(p=m.queryHopper.page),e!==t&&(m.queryHopper.page=1),e||(m.queryHopper.page=p),m.getHoppers())}),l.$watch("queryFinal.filter",function(e,t){u?n(function(){u=!1}):(t||(p=m.queryFinal.page),e!==t&&(m.queryFinal.page=1),e||(m.queryFinal.page=p),m.getFinals())}),l.$watch("queryHistory.filter",function(e,t){u?n(function(){u=!1}):(t||(p=m.queryHistory.page),e!==t&&(m.queryHistory.page=1),e||(m.queryHistory.page=p),m.getHistories())}),l.$on("$destroy",function(){})}e.$inject=["$mdDialog","$document","$timeout","$scope","api","toasty","Auth","socket","$translate","msUtils"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(t,i,s,o,e,n,a,r,l,d){var c=this;function m(){var e=c.choice?c.choice.toLowerCase():void 0;return{id:c.call.uniqueid,disposition:c.choice,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}}c.choice=null,c.isReschedule=!1,c.recallme=!1,c.queueCampaigns={count:0,rows:[]},c.queueCampaign=void 0,c.dispositions=e,c.globalDispositions=n,c.contact=r,c.call=a,c.note=c.call.note||void 0,c.dialerCall=!1,c.hasBlackLists=!1,c.hopper={minDate:new Date,dateTime:new Date},c.call&&c.call.variables&&c.call.variables["xmd-voicequeueid"]?(c.dialerCall=!0,o.voiceQueue.getBlackLists({id:c.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(c.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){c.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),c.saveDisposition=function(e){c.choice=_.isNil(e)?c.choice:e,c.call.note=c.note,o.voiceCallReport.update({id:c.call.uniqueid,userDisposition:c.choice,note:c.note,UserId:l.getCurrentUser().id,ContactId:c.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:c.call.uniqueid}).$promise.then(function(e){if(e)for(var t=0;t<e.rows.length;t+=1)o.voiceRecording.update({id:e.rows[t].id,userDisposition:c.choice}).$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()})}),c.dialerCall&&(o.cmHopperFinal.update(m()).$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(m()).$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(c.choice))t.hide(c.choice?c.choice.toUpperCase():"");else switch(c.choice.toLowerCase()){case"blacklist":c.call&&c.call.variables&&c.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var t=[];if(e&&0<e.count){for(var n=0;n<e.rows.length;n+=1){var a=angular.copy(c.contact);delete a.id,a.ListId=e.rows[n].id,t.push(o.cmContact.save(a).$promise)}return i.all(t)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+c.choice}),c.choice=void 0}).then(function(e){e&&t.hide(c.choice?c.choice.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()}),t.hide(c.choice?c.choice.toUpperCase():"")})}(c.call.variables["xmd-voicequeueid"]);break;case"reschedule":c.isReschedule=!0,c.recallme=!1;break;case"recallme":c.isReschedule=!0,c.recallme=!0;break;default:t.hide(c.choice?c.choice.toUpperCase():"")}},c.closeDialog=function(){t.cancel()},c.saveReschedule=function(){return c.disable=!0,o.cmHopper.save({phone:c.contact.phone,UserId:c.recallme?l.getCurrentUser().id:null,ContactId:c.contact.id,ListId:c.contact.ListId,VoiceQueueId:c.dialerCall?Number(c.call["xmd-voicequeueid"]):c.queueCampaign?c.queueCampaign.id:null,scheduledat:moment(c.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){c.dialerCall&&o.cmHopperFinal.update({id:c.call.uniqueid,rescheduled:!0,rescheduledat:moment(c.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){t.hide(c.choice?c.choice.toUpperCase():"")}).finally(function(){c.disable=!1,t.hide(c.choice?c.choice.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,t,n,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,t){var n=t(function(){},999);e.$on("$destroy",function(){n&&(t.cancel(n),n=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this,u=!0;function p(){var e=i.localStorage.getItem("motion2.home.abandoned.bull.contacts:"+m.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(m.query=_.merge(e.query,_.omit(m.query,["sort","limit","page"])),m.query=_.omit(m.query,"filter")),o.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null"}).$promise.then(function(e){m.disposition=e?e.rows:[]}).catch(function(e){console.log(e)}),o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){m.queues=e||{count:0,rows:[]},m.queuesMap=_.mapValues(_.keyBy(m.queues.rows,"name"),"name"),m.defaultQueues=m.queues.rows?_.map(m.queues.rows,"name").join(","):void 0}).catch(function(e){console.error(e)}).finally(function(){m.getContacts()})}function g(e){m.contacts=e||{count:0,rows:[]},u=!1,m.refresh=!0}m.showTooltip=!1,m.refresh=!0,m.disable=[],m.disposition={count:0,rows:[]},m.currentUser=r.getCurrentUser(),m.localizationMap=c,m.pickerModel={dateStart:null,dateEnd:null},m.queues={},m.contacts={count:0,rows:[]},m.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},m.clearAll=function(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel={dateStart:null,dateEnd:null},m.getContacts()},m.getContacts=function(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&!u&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd);m.query.queue=m.query.queue||m.defaultQueues,m.query.offset=(m.query.page-1)*m.query.limit,i.localStorage.setItem("motion2.home.abandoned.bull.contacts:"+m.currentUser.id,JSON.stringify({query:_.omit(m.query,"queue")})),m.promise=o.voiceQueueReport.getVoiceQueuesReport(m.query,g).$promise},m.refreshContacts=function(){m.showTooltip=!1,m.getContacts()},m.onInit=p,m.reserved=function(e,t){e&&(m.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?m.currentUser.name:null,assigned:e.assigned,disposition:t||null}).$promise.catch(function(e){console.log(e)}).finally(function(){m.disable[e.id]=!1}))},m.onSavevoiceQueueReport=function(e){m.queuesMap&&"outbound"===e.type&&m.queuesMap[e.queue]&&(m.showTooltip=!0)},m.onUpdatevoiceQueueReport=function(e){if(e){var t=_.findIndex(m.contacts.rows,["id",e.id]);0<=t&&_.merge(m.contacts.rows[t],e)}},m.call=e.$parent.$parent.$parent.$parent.vm.call,m.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,m.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,m.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",m.onSavevoiceQueueReport),l.onWithoutApply("voiceQueueReport:update",m.onUpdatevoiceQueueReport),p();var v=!0,h=1;e.$watch("vm_bull.query.filter",function(e,t){v?n(function(){v=!1}):(t||(h=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=h),m.getContacts())}),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this,u=!0;function p(){var e=i.localStorage.getItem("motion2.home.abandoned.voice.contacts:"+m.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(m.query=_.merge(e.query,_.omit(m.query,["sort","limit","page"])),m.query=_.omit(m.query,"filter")),o.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null"}).$promise.then(function(e){m.disposition=e?e.rows:[]}).catch(function(e){console.log(e)}),o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){m.queues=e||{count:0,rows:[]},m.queuesMap=_.mapValues(_.keyBy(m.queues.rows,"name"),"name"),m.defaultQueues=m.queues.rows?_.map(m.queues.rows,"name").join(","):void 0}).catch(function(e){console.error(e)}).finally(function(){m.getContacts()})}function g(e){m.contacts=e||{count:0,rows:[]},u=!1,m.refresh=!0}m.showTooltip=!1,m.refresh=!0,m.disable=[],m.disposition={count:0,rows:[]},m.currentUser=r.getCurrentUser(),m.localizationMap=c,m.pickerModel={dateStart:null,dateEnd:null},m.queues={},m.contacts={count:0,rows:[]},m.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},m.clearAll=function(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel={dateStart:null,dateEnd:null},m.getContacts()},m.getContacts=function(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&!u&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd);m.query.queue=m.query.queue||m.defaultQueues,m.query.offset=(m.query.page-1)*m.query.limit,i.localStorage.setItem("motion2.home.abandoned.voice.contacts:"+m.currentUser.id,JSON.stringify({query:_.omit(m.query,"queue")})),m.promise=o.voiceQueueReport.getVoiceQueuesReport(m.query,g).$promise},m.refreshContacts=function(){m.showTooltip=!1,m.getContacts()},m.onInit=p,m.reserved=function(e,t){e&&(m.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?m.currentUser.name:null,assigned:e.assigned,disposition:t||null}).$promise.catch(function(e){console.log(e)}).finally(function(){m.disable[e.id]=!1}))},m.onSavevoiceQueueReport=function(e){m.queuesMap&&"inbound"===e.type&&m.queuesMap[e.queue]&&(m.showTooltip=!0)},m.onUpdatevoiceQueueReport=function(e){if(e){var t=_.findIndex(m.contacts.rows,["id",e.id]);0<=t&&_.merge(m.contacts.rows[t],e)}},m.call=e.$parent.$parent.$parent.$parent.vm.call,m.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,m.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,m.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",m.onSavevoiceQueueReport),l.onWithoutApply("voiceQueueReport:update",m.onUpdatevoiceQueueReport),p();var v=!0,h=1;e.$watch("vm_voice.query.filter",function(e,t){v?n(function(){v=!1}):(t||(h=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=h),m.getContacts())}),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o){var r=this;r.user=i.getCurrentUser(),r.license={},r.plugin={},r.setting={},r.sidebar="dashboard",r.navigation=o.getNavigation(),r.addContactTab=t.$parent.vm.addContactTab,r.addInteractionTab=t.$parent.vm.addInteractionTab,r.init=function(e,t){r.license=e,r.setting=t;var n=a.localStorage.getItem("motion2.home:"+r.user.id);if(n)try{n=JSON.parse(n),r.sidebar=n.currentSidebarTab?n.currentSidebarTab:"dashboard"}catch(e){console.error(e),r.sidebar="dashboard"}},r.changeSidebarTab=function(e){r.sidebar=e.view,"plugin"===r.sidebar&&(r.plugin=e.stateParams,r.pluginId=e.id,t.$broadcast("pluginUpdated",{plugin:r.plugin}));a.localStorage.setItem("motion2.home:"+r.user.id,JSON.stringify({currentSidebarTab:e.view}))},r.hasPermission=function(e){return i.hasPermission(e)}}e.$inject=["$scope","$timeout","$window","api","Auth","socket","msNavigationAgentService"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(n,a,e,t,i,s,o,r,l,d){var c=this;function m(e){c.chatInteractions=e||{count:0,rows:[]};for(var t=0;t<c.chatInteractions.rows.length;t+=1)p(c.chatInteractions.rows[t])}function u(){c.query.dateStart=void 0,c.query.dateEnd=void 0,c.pickerModel.dateStart&&(c.query.dateStart=c.pickerModel.dateStart,c.query.dateEnd=c.pickerModel.dateEnd),c.chatAccounts.rows.length?(_.includes(_.map(c.chatAccounts.rows,"id"),c.query.account)||(c.query.account=null),c.query.ChatWebsiteId=c.query.account||_.map(c.chatAccounts.rows,"id").join()):c.query.ChatWebsiteId=-1,c.query.offset=(c.query.page-1)*c.query.limit,i.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify({query:c.query})),c.promise=o.chatInteraction.get(c.query,m).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}c.user=r.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,account:null},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,t){n.$parent.vm.addInteractionTab("chat",t)},c.downloadChatInteraction=function(e,s,t){o.chatInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="chat-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.getContactLabel=function(e){if(e.Contact){var t="";t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||"");var n=e.Account?e.Account.mapKey:void 0;return t+=n&&e.Contact[n]?" <"+e.Contact[n]+">":""}return s.instant("DASHBOARDS.UNKNOWN")},c.getUserLabel=function(e){if(e.UserId)return e.UserId===r.getCurrentUser().id?s.instant("DASHBOARDS.ME"):c.usersByKey[e.UserId].fullname+" <"+c.usersByKey[e.UserId].internal+">";return s.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return s.instant("DASHBOARDS.UNKNOWN")},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.clearAll=function(){c.calendarModel={dateStart:null},c.pickerModel={dateStart:null},c.serviceModel={dateStart:null},c.getChatInteractions()},c.onInit=function(e,t){return c.license=e,c.setting=t,o.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},o.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){return o.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){c.usersByKey=_.keyBy(e.rows,"id")}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),c.query=_.omit(c.query,"filter"),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0)}catch(e){console.error(e)}l.on("chatInteraction:save",c.onChatInteractionSave),l.on("chatInteraction:update",c.onChatInteractionSave),l.on("chatInteractionTags:save",c.onChatInteractionTagsSave),l.on("chatMessage:save",c.onChatMessageSave),l.on("chatMessage:update",c.onChatMessageSave),l.on("user_has_chat_interactions:save",c.onChatInteractionOpen),l.on("user_has_chat_interactions:remove",c.onChatInteractionClose),c.getChatInteractions()})},c.onChatInteractionSave=function(e){if(e){var t=_.find(c.chatInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},c.onChatInteractionTagsSave=function(e){if(e){var t=_.find(c.chatInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},c.onChatMessageSave=function(e){if(e&&!e.secret){var t=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},c.onChatInteractionOpen=function(e){var t=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},c.onChatInteractionClose=function(e){var t=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},c.localizationMap={Today:s.instant("DASHBOARDS.TODAY"),Yesterday:s.instant("DASHBOARDS.YESTERDAY"),"This Week":s.instant("DASHBOARDS.THIS_WEEK"),"Last Week":s.instant("DASHBOARDS.LAST_WEEK"),"This Month":s.instant("DASHBOARDS.THIS_MONTH"),"Last Month":s.instant("DASHBOARDS.LAST_MONTH"),"This Year":s.instant("DASHBOARDS.THIS_YEAR"),"Last Year":s.instant("DASHBOARDS.LAST_YEAR"),January:s.instant("DASHBOARDS.JANUARY"),February:s.instant("DASHBOARDS.FEBRUARY"),March:s.instant("DASHBOARDS.MARCH"),April:s.instant("DASHBOARDS.APRIL"),May:s.instant("DASHBOARDS.MAY"),June:s.instant("DASHBOARDS.JUNE"),July:s.instant("DASHBOARDS.JULY"),August:s.instant("DASHBOARDS.AUGUST"),September:s.instant("DASHBOARDS.SEPTEMBER"),October:s.instant("DASHBOARDS.OCTOBER"),November:s.instant("DASHBOARDS.NOVEMBER"),December:s.instant("DASHBOARDS.DECEMBER"),Mon:s.instant("DASHBOARDS.MON"),Tue:s.instant("DASHBOARDS.TUE"),Wed:s.instant("DASHBOARDS.WED"),Thu:s.instant("DASHBOARDS.THU"),Fri:s.instant("DASHBOARDS.FRI"),Sat:s.instant("DASHBOARDS.SAT"),Sun:s.instant("DASHBOARDS.SUN")},c.pickerModel={dateStart:null};var g=!0,v=1;n.$watch("vm.query.filter",function(e,t){g?a(function(){g=!1}):(t||(v=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=v),c.getChatInteractions())}),n.$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")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;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.getContacts=function(){l.query.ListId=l.getListId(),l.query.offset=(l.query.page-1)*l.query.limit,r.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify({query:l.query})),l.promise=o.cmContact.get(l.query,m).$promise},l.refreshContacts=function(){l.getContacts()},l.mergeContact=function(e,t){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:t.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,t){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:t.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){t.$parent.vm.addContactTab(e)})},l.call=t.$parent.vm.call,l.onInit=u,l.getListId=function(){var e=_.toString(l.query.ListId);if(e){var t=e.split(","),n=l.defaultLists.split(",");_.isEqual(t,n)||(1<t.length?e=l.defaultLists:_.indexOf(n,t[0])<0&&(e=l.defaultLists))}else e=l.defaultLists;return e},u();var d=!0,c=1;function m(e){l.contacts=e||{count:0,rows:[]}}function u(){var e=r.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(l.query=_.merge(l.query,e.query),l.query=_.omit(l.query,"filter")),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"),l.defaultLists=l.lists.rows?_.map(l.lists.rows,"id").join(","):void 0,o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}).finally(function(){l.getContacts()})}t.$watch("vm.query.filter",function(e,t){d?a(function(){d=!1}):(t||(c=l.query.page),e!==t&&(l.query.page=1),e||(l.query.page=c),l.getContacts())})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,t){var n=t(function(){},999);e.$on("$destroy",function(){n&&(t.cancel(n),n=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,n,t,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,t){c.rpcVoiceQueues[t]&&(c.voiceQueues[t].waiting=c.rpcVoiceQueues[t].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,t){p?n(function(){p=!1}):(t||(g=c.query.page),e!==t&&(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,n,t,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,t){c.rpcChatQueues[t]&&(c.chatQueues[t].waiting=c.rpcChatQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("chatQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcFaxQueues[t]&&(c.faxQueues[t].waiting=c.rpcFaxQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("faxQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcMailQueues[t]&&(c.mailQueues[t].waiting=c.rpcMailQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("mailQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcOpenchannelQueues[t]&&(c.openchannelQueues[t].waiting=c.rpcOpenchannelQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcSmsQueues[t]&&(c.smsQueues[t].waiting=c.rpcSmsQueues[t].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"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.onSaveVoiceQueue),l.onWithoutApply("smsQueue:update",c.onUpdateVoiceQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveVoiceQueue),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 t=_.filter(e.rows,function(e){return _.includes(c.myQueues,{id:e.queue_id})});e.rows=t,e.count=t.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,t){h?n(function(){h=!1}):(t||(f=c.query.page),e!==t&&(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,n,t,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,t){c.rpcVoiceQueues[t]&&(c.voiceQueues[t].waiting=c.rpcVoiceQueues[t].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 t=e.rows,n=_.keyBy(t,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=n[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,t){p?n(function(){p=!1}):(t||(g=c.query.page),e!==t&&(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(n,a,i,s,o,r,l,t,d,c){var m=this;function e(e){m.faxInteractions=e||{count:0,rows:[]};for(var t=0;t<m.faxInteractions.rows.length;t+=1)p(m.faxInteractions.rows[t])}function u(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd),m.faxAccounts.rows.length?(_.includes(_.map(m.faxAccounts.rows,"id"),m.query.account)||(m.query.account=null),m.query.FaxAccountId=m.query.account||_.map(m.faxAccounts.rows,"id").join()):m.query.FaxAccountId=-1,m.query.offset=(m.query.page-1)*m.query.limit,o.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify({query:m.query})),m.promise=l.faxInteraction.get(m.query,e).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}m.user=t.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,account:null},m.success=e,m.getFaxInteractions=u,m.showFaxInteraction=function(e,t){n.$parent.vm.addInteractionTab("fax",t)},m.downloadFaxInteraction=function(e,s,t){l.faxInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="fax-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getContactLabel=function(e){if(e.Contact){var t="";return t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||""),t+=" <"+(e.Contact.fax||"unknown")+">"}return r.instant("DASHBOARDS.UNKNOWN")},m.getUserLabel=function(e){if(e.UserId)return e.UserId===t.getCurrentUser().id?r.instant("DASHBOARDS.ME"):m.usersByKey[e.UserId].fullname+" <"+m.usersByKey[e.UserId].internal+">";return r.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return r.instant("DASHBOARDS.UNKNOWN")},m.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},m.clearAll=function(){m.calendarModel={dateStart:null},m.pickerModel={dateStart:null},m.serviceModel={dateStart:null},m.getFaxInteractions()},m.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:t.id},e).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},m.onInit=function(e,t){return m.license=e,m.setting=t,l.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},l.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return l.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){m.usersByKey=_.keyBy(e.rows,"id")}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),m.query=_.omit(m.query,"filter"),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0)}catch(e){console.error(e)}d.on("faxInteraction:save",m.onFaxInteractionSave),d.on("faxInteraction:update",m.onFaxInteractionSave),d.on("faxInteractionTags:save",m.onFaxInteractionTagsSave),d.on("faxMessage:save",m.onFaxMessageSave),d.on("faxMessage:update",m.onFaxMessageSave),d.on("user_has_fax_interactions:save",m.onFaxInteractionOpen),d.on("user_has_fax_interactions:remove",m.onFaxInteractionClose),m.getFaxInteractions()})},m.onFaxInteractionSave=function(e){if(e){var t=_.find(m.faxInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},m.onFaxInteractionTagsSave=function(e){if(e){var t=_.find(m.faxInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},m.onFaxMessageSave=function(e){if(e&&!e.secret){var t=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},m.onFaxInteractionOpen=function(e){var t=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},m.onFaxInteractionClose=function(e){var t=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},m.localizationMap={Today:r.instant("DASHBOARDS.TODAY"),Yesterday:r.instant("DASHBOARDS.YESTERDAY"),"This Week":r.instant("DASHBOARDS.THIS_WEEK"),"Last Week":r.instant("DASHBOARDS.LAST_WEEK"),"This Month":r.instant("DASHBOARDS.THIS_MONTH"),"Last Month":r.instant("DASHBOARDS.LAST_MONTH"),"This Year":r.instant("DASHBOARDS.THIS_YEAR"),"Last Year":r.instant("DASHBOARDS.LAST_YEAR"),January:r.instant("DASHBOARDS.JANUARY"),February:r.instant("DASHBOARDS.FEBRUARY"),March:r.instant("DASHBOARDS.MARCH"),April:r.instant("DASHBOARDS.APRIL"),May:r.instant("DASHBOARDS.MAY"),June:r.instant("DASHBOARDS.JUNE"),July:r.instant("DASHBOARDS.JULY"),August:r.instant("DASHBOARDS.AUGUST"),September:r.instant("DASHBOARDS.SEPTEMBER"),October:r.instant("DASHBOARDS.OCTOBER"),November:r.instant("DASHBOARDS.NOVEMBER"),December:r.instant("DASHBOARDS.DECEMBER"),Mon:r.instant("DASHBOARDS.MON"),Tue:r.instant("DASHBOARDS.TUE"),Wed:r.instant("DASHBOARDS.WED"),Thu:r.instant("DASHBOARDS.THU"),Fri:r.instant("DASHBOARDS.FRI"),Sat:r.instant("DASHBOARDS.SAT"),Sun:r.instant("DASHBOARDS.SUN")},m.pickerModel={dateStart:null};var g=!0,v=1;n.$watch("vm.query.filter",function(e,t){g?a(function(){g=!1}):(t||(v=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=v),m.getFaxInteractions())}),n.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(a,n,i,s,o,r,l,t,d,c){var m=this;function e(e){m.mailInteractions=e||{count:0,rows:[]};for(var t=0;t<m.mailInteractions.rows.length;t+=1)p(m.mailInteractions.rows[t])}function u(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd),m.mailAccounts.rows.length?(_.includes(_.map(m.mailAccounts.rows,"id"),m.query.account)||(m.query.account=null),m.query.MailAccountId=m.query.account||_.map(m.mailAccounts.rows,"id").join()):m.query.MailAccountId=-1,m.query.offset=(m.query.page-1)*m.query.limit,o.localStorage.setItem("motion2.home.mail:"+m.user.id,JSON.stringify({query:m.query})),m.promise=l.mailInteraction.get(m.query,e).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}m.user=t.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.mailInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,account:null},m.success=e,m.getMailInteractions=u,m.showMailInteraction=function(e,t){a.$parent.vm.addInteractionTab("mail",t)},m.downloadMailInteraction=function(e,s,t){l.mailInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="mail-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getContactLabel=function(e){if(e.Contact){var t="";return t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||""),e.to&&e.Account&&e.to.indexOf(e.Account.email)<0?t=e.to:t+=" <"+(e.Contact.email||"unknown")+">",t}return r.instant("DASHBOARDS.UNKNOWN")},m.getUserLabel=function(e){if(e.UserId)return e.UserId===t.getCurrentUser().id?r.instant("DASHBOARDS.ME"):m.usersByKey[e.UserId].fullname+" <"+m.usersByKey[e.UserId].internal+">";return r.instant("DASHBOARDS.NOT_ASSIGNED")},m.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return r.instant("DASHBOARDS.UNKNOWN")},m.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},m.clearAll=function(){m.calendarModel={dateStart:null},m.pickerModel={dateStart:null},m.serviceModel={dateStart:null},m.getMailInteractions()},m.composeMailInteraction=function(e,t){i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(n){return l.mailAccount.send({id:t.id},n).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(n.attachments&&n.attachments.length)for(var t=0;t<n.attachments.length;t+=1)l.attachment.update({id:n.attachments[t].id},{MailMessageId:_.head(e.Messages).id});c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed?(e.disposition=null,i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{user:m.user,channel:"mail",interaction:e}})):a.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})})},m.onInit=function(e,t){return m.license=e,m.setting=t,l.user["get"+_.upperFirst("mailAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.mailAccounts=e||{count:0,rows:[]},l.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return l.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){m.usersByKey=_.keyBy(e.rows,"id")}).then(function(){return l.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){m.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mail:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),m.query=_.omit(m.query,"filter"),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0)}catch(e){console.error(e)}d.on("mailInteraction:save",m.onMailInteractionSave),d.on("mailInteraction:update",m.onMailInteractionSave),d.on("mailInteractionTags:save",m.onMailInteractionTagsSave),d.on("mailMessage:save",m.onMailMessageSave),d.on("mailMessage:update",m.onMailMessageSave),d.on("user_has_mail_interactions:save",m.onMailInteractionOpen),d.on("user_has_mail_interactions:remove",m.onMailInteractionClose),m.getMailInteractions()})},m.onMailInteractionSave=function(e){if(e){var t=_.find(m.mailInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},m.onMailInteractionTagsSave=function(e){if(e){var t=_.find(m.mailInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},m.onMailMessageSave=function(e){if(e&&!e.secret){var t=_.find(m.mailInteractions.rows,{id:e.MailInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},m.onMailInteractionOpen=function(e){var t=_.find(m.mailInteractions.rows,{id:e.MailInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},m.onMailInteractionClose=function(e){var t=_.find(m.mailInteractions.rows,{id:e.MailInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},m.localizationMap={Today:r.instant("DASHBOARDS.TODAY"),Yesterday:r.instant("DASHBOARDS.YESTERDAY"),"This Week":r.instant("DASHBOARDS.THIS_WEEK"),"Last Week":r.instant("DASHBOARDS.LAST_WEEK"),"This Month":r.instant("DASHBOARDS.THIS_MONTH"),"Last Month":r.instant("DASHBOARDS.LAST_MONTH"),"This Year":r.instant("DASHBOARDS.THIS_YEAR"),"Last Year":r.instant("DASHBOARDS.LAST_YEAR"),January:r.instant("DASHBOARDS.JANUARY"),February:r.instant("DASHBOARDS.FEBRUARY"),March:r.instant("DASHBOARDS.MARCH"),April:r.instant("DASHBOARDS.APRIL"),May:r.instant("DASHBOARDS.MAY"),June:r.instant("DASHBOARDS.JUNE"),July:r.instant("DASHBOARDS.JULY"),August:r.instant("DASHBOARDS.AUGUST"),September:r.instant("DASHBOARDS.SEPTEMBER"),October:r.instant("DASHBOARDS.OCTOBER"),November:r.instant("DASHBOARDS.NOVEMBER"),December:r.instant("DASHBOARDS.DECEMBER"),Mon:r.instant("DASHBOARDS.MON"),Tue:r.instant("DASHBOARDS.TUE"),Wed:r.instant("DASHBOARDS.WED"),Thu:r.instant("DASHBOARDS.THU"),Fri:r.instant("DASHBOARDS.FRI"),Sat:r.instant("DASHBOARDS.SAT"),Sun:r.instant("DASHBOARDS.SUN")},m.pickerModel={dateStart:null};var g=!0,v=1;a.$watch("vm.query.filter",function(e,t){g?n(function(){g=!1}):(t||(v=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=v),m.getMailInteractions())}),a.$on("$destroy",function(){d.removeAllListeners("mailMessage:save"),d.removeAllListeners("mailMessage:update"),d.removeAllListeners("mailInteraction:save"),d.removeAllListeners("mailInteractionTags:save"),d.removeAllListeners("mailInteraction:update"),d.removeAllListeners("user_has_mail_interactions:save"),d.removeAllListeners("user_has_mail_interactions:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(n,a,i,s,e,t,o){var r=this;r.currentUser=e.getCurrentUser(),r.lists={},r.contacts={count:0,rows:[]},r.tags={count:0,rows:[]},r.query={includeAll:!0,id:r.currentUser.id,sort:"-updatedAt",limit:10,page:1},r.getContacts=function(){r.query.ListId=r.getListId(),r.query.offset=(r.query.page-1)*r.query.limit,o.localStorage.setItem("motion2.home.mycontacts:"+r.currentUser.id,JSON.stringify({query:r.query})),r.promise=t.user.getContacts(r.query,c).$promise},r.refreshContacts=function(){r.getContacts()},r.mergeContact=function(e,t){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:t.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:r.currentUser.id,fields:"id,name"})}]},locals:{contacts:r.contacts.rows}})},r.duplicateContact=function(e,t){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:t.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:r.currentUser.id,fields:"id,name"})}]},locals:{contacts:r.contacts.rows}})},r.openContact=function(e,t){a.$parent.vm.addContactTab(t)},r.call=a.$parent.vm.call,r.onInit=function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+r.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(r.query=_.omit(e.query,"filter"))}catch(e){console.error(e)}t.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return r.lists=e||{count:0,rows:[]},r.listsMap=_.keyBy(r.lists.rows,"id"),r.defaultLists=r.lists.rows?_.map(r.lists.rows,"id").join(","):void 0,t.tag.get().$promise}).then(function(e){r.tags=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}).finally(function(){r.getContacts()})},r.getListId=function(){var e=_.toString(r.query.ListId);if(e){var t=e.split(","),n=r.defaultLists.split(",");_.isEqual(t,n)||(1<t.length?e=r.defaultLists:_.indexOf(n,t[0])<0&&(e=r.defaultLists))}else e=r.defaultLists;return e};var l=!0,d=1;function c(e){r.contacts=e||{count:0,rows:[]}}a.$watch("vm.query.filter",function(e,t){l?i(function(){l=!1}):(t||(d=r.query.page),e!==t&&(r.query.page=1),e||(r.query.page=d),r.getContacts())})}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(n,a,i,s,o,r,l,t,d,c){var m=this;function e(e){m.openchannelInteractions=e||{count:0,rows:[]};for(var t=0;t<m.openchannelInteractions.rows.length;t+=1)p(m.openchannelInteractions.rows[t])}function u(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd),m.openchannelAccounts.rows.length?(_.includes(_.map(m.openchannelAccounts.rows,"id"),m.query.account)||(m.query.account=null),m.query.OpenchannelAccountId=m.query.account||_.map(m.openchannelAccounts.rows,"id").join()):m.query.OpenchannelAccountId=-1,m.query.offset=(m.query.page-1)*m.query.limit,o.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify({query:m.query})),m.promise=l.openchannelInteraction.get(m.query,e).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}m.user=t.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,account:null},m.success=e,m.getOpenchannelInteractions=u,m.showOpenchannelInteraction=function(e,t){n.$parent.vm.addInteractionTab("openchannel",t)},m.downloadOpenchannelInteraction=function(e,s,t){l.openchannelInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="openchannel-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getContactLabel=function(e){if(e.Contact){var t="";return t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||""),e.from&&(t=e.from),t}return r.instant("DASHBOARDS.UNKNOWN")},m.getUserLabel=function(e){if(e.UserId)return e.UserId===t.getCurrentUser().id?r.instant("DASHBOARDS.ME"):m.usersByKey[e.UserId].fullname+" <"+m.usersByKey[e.UserId].internal+">";return r.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return r.instant("DASHBOARDS.UNKNOWN")},m.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},m.clearAll=function(){m.calendarModel={dateStart:null},m.pickerModel={dateStart:null},m.serviceModel={dateStart:null},m.getOpenchannelInteractions()},m.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeOpenchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){return l.openchannelAccount.send({id:t.id},e).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.onInit=function(e,t){return m.license=e,m.setting=t,l.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},l.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return l.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){m.usersByKey=_.keyBy(e.rows,"id")}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),m.query=_.omit(m.query,"filter"),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0)}catch(e){console.error(e)}d.on("openchannelInteraction:save",m.onOpenchannelInteractionSave),d.on("openchannelInteraction:update",m.onOpenchannelInteractionSave),d.on("openchannelInteractionTags:save",m.onOpenchannelInteractionTagsSave),d.on("openchannelMessage:save",m.onOpenchannelMessageSave),d.on("openchannelMessage:update",m.onOpenchannelMessageSave),d.on("user_has_openchannel_interactions:save",m.onOpenchannelInteractionOpen),d.on("user_has_openchannel_interactions:remove",m.onOpenchannelInteractionClose),m.getOpenchannelInteractions()})},m.onOpenchannelInteractionSave=function(e){if(e){var t=_.find(m.openchannelInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},m.onOpenchannelInteractionTagsSave=function(e){if(e){var t=_.find(m.openchannelInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},m.onOpenchannelMessageSave=function(e){if(e&&!e.secret){var t=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},m.onOpenchannelInteractionOpen=function(e){var t=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},m.onOpenchannelInteractionClose=function(e){var t=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},m.localizationMap={Today:r.instant("DASHBOARDS.TODAY"),Yesterday:r.instant("DASHBOARDS.YESTERDAY"),"This Week":r.instant("DASHBOARDS.THIS_WEEK"),"Last Week":r.instant("DASHBOARDS.LAST_WEEK"),"This Month":r.instant("DASHBOARDS.THIS_MONTH"),"Last Month":r.instant("DASHBOARDS.LAST_MONTH"),"This Year":r.instant("DASHBOARDS.THIS_YEAR"),"Last Year":r.instant("DASHBOARDS.LAST_YEAR"),January:r.instant("DASHBOARDS.JANUARY"),February:r.instant("DASHBOARDS.FEBRUARY"),March:r.instant("DASHBOARDS.MARCH"),April:r.instant("DASHBOARDS.APRIL"),May:r.instant("DASHBOARDS.MAY"),June:r.instant("DASHBOARDS.JUNE"),July:r.instant("DASHBOARDS.JULY"),August:r.instant("DASHBOARDS.AUGUST"),September:r.instant("DASHBOARDS.SEPTEMBER"),October:r.instant("DASHBOARDS.OCTOBER"),November:r.instant("DASHBOARDS.NOVEMBER"),December:r.instant("DASHBOARDS.DECEMBER"),Mon:r.instant("DASHBOARDS.MON"),Tue:r.instant("DASHBOARDS.TUE"),Wed:r.instant("DASHBOARDS.WED"),Thu:r.instant("DASHBOARDS.THU"),Fri:r.instant("DASHBOARDS.FRI"),Sat:r.instant("DASHBOARDS.SAT"),Sun:r.instant("DASHBOARDS.SUN")},m.pickerModel={dateStart:null};var g=!0,v=1;n.$watch("vm.query.filter",function(e,t){g?a(function(){g=!1}):(t||(v=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=v),m.getOpenchannelInteractions())}),n.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this;function c(e,t,n){d.license=e,d.setting=t,d.plugin=n}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),t.$on("pluginUpdated",function(e,t){d.plugin=t.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,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.voiceRecordings=e||{count:0,rows:[]}}p.currentUser=c.getCurrentUser(),p.voiceRecordings={},p.localizationMap=u,p.pickerModel={dateStart:null},p.table="voiceRecordings",p.query={UserId:p.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,UserId",sort:"-updatedAt",limit:10,page:1,type:null},p.downloadfile=function(i,e){return r.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var t=[e.buffer],n=new Blob(t,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(n)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.success=g,p.getVoiceRecordings=function(){p.query.dateStart=void 0,p.query.dateEnd=void 0,p.pickerModel.dateStart&&(p.query.dateStart=p.pickerModel.dateStart,p.query.dateEnd=p.pickerModel.dateEnd);p.query.offset=(p.query.page-1)*p.query.limit,t.localStorage.setItem("motion2.home.recordings:"+p.currentUser.id,JSON.stringify({query:p.query})),p.promise=r.voiceRecording.get(p.query,g).$promise},p.onInit=function(){var e=t.localStorage.getItem("motion2.home.recordings:"+p.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(p.query=_.omit(e.query,["filter","id"]),p.query.fields="createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,UserId",p.query.UserId=p.currentUser.id)}catch(e){console.error(e)}p.getVoiceRecordings()},p.clearAll=function(){p.pickerModel={dateStart:null},p.getVoiceRecordings()};var v=!0,h=1;e.$watch("vm.query.filter",function(e,t){v?o(function(){v=!1}):(t||(h=p.query.page),e!==t&&(p.query.page=1),e||(p.query.page=h),p.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","api","msUtils","toasty","Auth","$translate","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this;function c(e){d.scheduledCalls=e||{count:0,rows:[]}}d.currentUser=r.getCurrentUser(),d.priorities=["Lowest","Low","Medium","High","Highest"],d.localizationMap=l,d.pickerModel={dateStart:null},d.scheduledCalls={},d.query={id:d.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},d.queueCampaigns={rows:[],count:0},d.success=c,d.getScheduledCalls=function(){d.query.dateStart=void 0,d.query.dateEnd=void 0,d.pickerModel.dateStart&&(d.query.dateStart=d.pickerModel.dateStart,d.query.dateEnd=d.pickerModel.dateEnd);d.query.id=d.currentUser.id,d.query.includeAll=!0,d.query.offset=(d.query.page-1)*d.query.limit,t.localStorage.setItem("motion2.home.scheduled:"+d.currentUser.id,JSON.stringify({query:d.query})),d.promise=o.user.getScheduledCalls(d.query,c).$promise},d.onInit=function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+d.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(d.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){d.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}).finally(function(){d.getScheduledCalls()})},d.clearAll=function(){d.pickerModel={dateStart:null},d.getScheduledCalls()},d.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},d.createOrEditQueueCampaignHopper=function(e,t){a.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:t,hoppers:d.scheduledCalls.rows,license:null,setting:null}})},d.deleteConfirm=function(t,e){var n=a.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");a.show(n).then(function(){var e;e=t,o.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(d.scheduledCalls.rows,{id:e.id}),d.scheduledCalls.count-=1,d.scheduledCalls.rows.length||d.getScheduledCalls(),s.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){d.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var t=0;t<e.data.errors.length;t++)s.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else s.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 m=!0,u=1;e.$watch("vm.query.filter",function(e,t){m?n(function(){m=!1}):(t||(u=d.query.page),e!==t&&(d.query.page=1),e||(d.query.page=u),d.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(n,a,i,s,o,r,l,t,d,c){var m=this;function e(e){m.smsInteractions=e||{count:0,rows:[]};for(var t=0;t<m.smsInteractions.rows.length;t+=1)p(m.smsInteractions.rows[t])}function u(){m.query.dateStart=void 0,m.query.dateEnd=void 0,m.pickerModel.dateStart&&(m.query.dateStart=m.pickerModel.dateStart,m.query.dateEnd=m.pickerModel.dateEnd),m.smsAccounts.rows.length?(_.includes(_.map(m.smsAccounts.rows,"id"),m.query.account)||(m.query.account=null),m.query.SmsAccountId=m.query.account||_.map(m.smsAccounts.rows,"id").join()):m.query.SmsAccountId=-1,m.query.offset=(m.query.page-1)*m.query.limit,o.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify({query:m.query})),m.promise=l.smsInteraction.get(m.query,e).$promise}function p(e){e&&e.Messages?e.unread=_.filter(e.Messages||[],{direction:"in",read:!1}).length:e.unread=0}m.user=t.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,account:null},m.success=e,m.getSmsInteractions=u,m.showSmsInteraction=function(e,t){n.$parent.vm.addInteractionTab("sms",t)},m.downloadSmsInteraction=function(e,s,t){l.smsInteraction.download({id:s.id,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="sms-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.getContactLabel=function(e){if(e.Contact){var t="";return t+=(e.Contact.firstName||"")+""+(e.Contact.lastName||""),t+=" <"+(e.Contact.mobile||"unknown")+">"}return r.instant("DASHBOARDS.UNKNOWN")},m.getUserLabel=function(e){if(e.UserId)return e.UserId===t.getCurrentUser().id?r.instant("DASHBOARDS.ME"):m.usersByKey[e.UserId].fullname+" <"+m.usersByKey[e.UserId].internal+">";return r.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return r.instant("DASHBOARDS.UNKNOWN")},m.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},m.clearAll=function(){m.calendarModel={dateStart:null},m.pickerModel={dateStart:null},m.serviceModel={dateStart:null},m.getSmsInteractions()},m.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){return l.smsAccount.send({id:t.id},e).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)c.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.onInit=function(e,t){return m.license=e,m.setting=t,l.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},l.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return l.user.get({nolimit:!0,fields:"id,fullname,userpic,internal"}).$promise}).then(function(e){m.usersByKey=_.keyBy(e.rows,"id")}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),m.query=_.omit(m.query,"filter"),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0)}catch(e){console.error(e)}d.on("smsInteraction:save",m.onSmsInteractionSave),d.on("smsInteraction:update",m.onSmsInteractionSave),d.on("smsInteractionTags:save",m.onSmsInteractionTagsSave),d.on("smsMessage:save",m.onSmsMessageSave),d.on("smsMessage:update",m.onSmsMessageSave),d.on("user_has_sms_interactions:save",m.onSmsInteractionOpen),d.on("user_has_sms_interactions:remove",m.onSmsInteractionClose),m.getSmsInteractions()})},m.onSmsInteractionSave=function(e){if(e){var t=_.find(m.smsInteractions.rows,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):u(),p(e)}},m.onSmsInteractionTagsSave=function(e){if(e){var t=_.find(m.smsInteractions.rows,{id:e.id});t&&(t.Tags=e.tags||[],_.merge(t,_.pick(e,_.keys(t))))}},m.onSmsMessageSave=function(e){if(e&&!e.secret){var t=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(t){var n=_.find(t.Messages,{id:e.id});n?_.merge(n,_.pick(e,_.keys(n))):(_.isNil(t.Messages)&&(t.Messages=[]),t.Messages.push(e)),p(t)}}},m.onSmsInteractionOpen=function(e){var t=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});t&&t.Users&&(_.find(t.Users,{id:e.UserId})||t.Users.push({id:e.UserId}))},m.onSmsInteractionClose=function(e){var t=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});t&&t.Users&&_.remove(t.Users,{id:e.UserId})},m.localizationMap={Today:r.instant("DASHBOARDS.TODAY"),Yesterday:r.instant("DASHBOARDS.YESTERDAY"),"This Week":r.instant("DASHBOARDS.THIS_WEEK"),"Last Week":r.instant("DASHBOARDS.LAST_WEEK"),"This Month":r.instant("DASHBOARDS.THIS_MONTH"),"Last Month":r.instant("DASHBOARDS.LAST_MONTH"),"This Year":r.instant("DASHBOARDS.THIS_YEAR"),"Last Year":r.instant("DASHBOARDS.LAST_YEAR"),January:r.instant("DASHBOARDS.JANUARY"),February:r.instant("DASHBOARDS.FEBRUARY"),March:r.instant("DASHBOARDS.MARCH"),April:r.instant("DASHBOARDS.APRIL"),May:r.instant("DASHBOARDS.MAY"),June:r.instant("DASHBOARDS.JUNE"),July:r.instant("DASHBOARDS.JULY"),August:r.instant("DASHBOARDS.AUGUST"),September:r.instant("DASHBOARDS.SEPTEMBER"),October:r.instant("DASHBOARDS.OCTOBER"),November:r.instant("DASHBOARDS.NOVEMBER"),December:r.instant("DASHBOARDS.DECEMBER"),Mon:r.instant("DASHBOARDS.MON"),Tue:r.instant("DASHBOARDS.TUE"),Wed:r.instant("DASHBOARDS.WED"),Thu:r.instant("DASHBOARDS.THU"),Fri:r.instant("DASHBOARDS.FRI"),Sat:r.instant("DASHBOARDS.SAT"),Sun:r.instant("DASHBOARDS.SUN")},m.pickerModel={dateStart:null};var g=!0,v=1;n.$watch("vm.query.filter",function(e,t){g?a(function(){g=!1}):(t||(v=m.query.page),e!==t&&(m.query.page=1),e||(m.query.page=v),m.getSmsInteractions())}),n.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r,l,d){var c=this;function m(e){c.voiceCalls=e||{count:0,rows:[]}}c.currentUser=i.getCurrentUser(),c.voiceCalls={},c.localizationMap=d,c.pickerModel={dateStart:null},c.table="voiceCalls",c.query={UserId:c.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},c.success=m,c.getVoiceCalls=function(){c.query.dateStart=void 0,c.query.dateEnd=void 0,c.pickerModel.dateStart&&(c.query.dateStart=c.pickerModel.dateStart,c.query.dateEnd=c.pickerModel.dateEnd);c.query.offset=(c.query.page-1)*c.query.limit,o.localStorage.setItem("motion2.home.voice:"+c.currentUser.id,JSON.stringify({query:c.query})),c.promise=e.voiceCallReport.get(c.query,m).$promise},c.onInit=function(){return e.tag.get().$promise.then(function(e){c.tags=e||{count:0,rows:[]}}).catch(function(e){a.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),c.tags={count:0,rows:[]}}).finally(function(){var e=o.localStorage.getItem("motion2.home.voice:"+c.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.omit(e.query,"filter"))}catch(e){console.error(e)}c.getVoiceCalls()})},c.showDetails=function(e){t.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{call:e}})},c.clearAll=function(){c.pickerModel={dateStart:null},c.getVoiceCalls()};var u=!0,p=1;r.$watch("vm.query.filter",function(e,t){u?l(function(){u=!1}):(t||(p=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=p),c.getVoiceCalls())})}e.$inject=["$mdDialog","$document","api","toasty","Auth","$translate","$window","$scope","$timeout","dateFilterLocalizationFactory"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,t){this.call=t,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this,g=25,v=1024*g*1024;function h(){i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,locals:{user:p.user,channel:p.tab.channel,interaction:p.tab.interaction}}).then(function(e){p.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(p.tab)})}function f(e,t){p.tab.message||(p.tab.message=t),i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeMail/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!1,locals:{account:p.account,message:p.tab.message,type:e,interaction:p.interaction},fullscreen:!0,skipHide:Boolean(p.tab.spy)}).then(function(t){t&&A(t),t.Interaction&&p.interaction&&p.interaction.id&&(t.Interaction.id=p.interaction.id,l.mailInteraction.update(t.Interaction).$promise.then(function(e){e&&e.closed?(p.tab.saved=!0,p.interaction.closed=!0,p.interaction.closedAt=e.closedAt,h()):null!==t.Interaction.substatus&&(p.tab.saved=!0,p.tab.interaction.substatus=t.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(p.tab))}).catch(function(e){console.error(e)}))})}function b(){"mail"!==p.tab.channel&&t(function(){var e=angular.element(n.find("md-content[name*='interaction-content-"+p.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function A(n){if(n)return n["chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId"]=p.interaction["chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId"],n[_.capitalize(p.tab.channel)+"InteractionId"]=p.interaction.id,n.UserId=p.user.id,n.ContactId=p.interaction.ContactId,n.direction="out",n.secret=Boolean(p.tab.spy||n.secret),l[p.tab.channel+"Message"].save(n).$promise.then(function(e){if(e&&e.id&&n.attachments&&n.attachments.length)for(var t=0;t<n.attachments.length;t+=1)l.attachment.update({id:n.attachments[t].id},{MailMessageId:e.id})}).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(){p.tab.areaText="",b()})}function E(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";default:return"blue-A700"}}function y(e){e&&e.count&&e.rows.length&&(p.journey=_.concat(p.journey,e.rows))}p.showFooter=!1,p.showInteraction=!1,p.user=c.getCurrentUser(),p.detectBrowser=u.detectBrowser(),p.journey=[],p.acceptedMessages=[],p.omniChannels=["mail","chat","sms","openchannel","fax"],p.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:v,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},p.ngFlow={flow:{}},p.selectedMailShowDetails={},p.selectedMailShowSystemMessage={},p.setting={},p.ctrlMethods={},p.init=function(e,t){p.tab=e,p.tab.saved=!0,p.tab.badges=0,p.setting=t||{},p.tab&&p.tab.channel&&p.tab.interaction&&(p.interaction=p.tab.interaction,l[p.tab.channel+"Interaction"].get({id:p.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(p.interaction=e,p.tab.interaction=e),p.tab.saved=p.interaction.closed,p.queryMessage={id:p.interaction.id,includeAll:!0},"mail"===p.tab.channel?(p.queryMessage.sort="-id",p.queryMessage.offset=0,p.queryMessage.limit=3):(p.queryMessage.sort="id",p.queryMessage.nolimit=!0),l[p.tab.channel+"Interaction"].getMessages(p.queryMessage).$promise}).then(function(e){return p.messages=e||{count:0,rows:[]},l["chat"===p.tab.channel?"chatWebsite":p.tab.channel+"Account"].get({id:p.interaction["chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(p.account=e,p.tab.title=p.account.key||p.account.name,p.interaction.ContactId)return l.cmContact.get({id:p.interaction.ContactId}).$promise}).then(function(e){return e&&(p.contact=e),p.showInteraction=!0,p.contact?(!function(e){if(e&&e.id){for(var t=0;t<p.omniChannels.length;t++)l[p.omniChannels[t]+"Interaction"].get({ContactId:e.id,includeAll:!0}).$promise.then(y);l.voiceCallReport.get({ContactId:e.id,includeAll:!0}).$promise.then(y)}}(p.contact),p.tab.title+=" - "+p.contact.firstName):p.tab.title+=" - "+r.instant(p.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){p.users=e||{count:0,rows:[]},p.usersMap=_.mapValues(_.keyBy(p.users.rows,"id"),"fullname")}).then(function(){if(p.tab.channel&&p.interaction)return l.user["add"+_.upperFirst(p.tab.channel)+"Interactions"]({id:p.user.id,ids:[p.interaction.id]})}).then(function(){return l.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){p.subStatuses=e||{count:0,rows:[]}}).then(function(){return p.getMailAccounts()}).then(function(){return p.getFaxAccounts()}).then(function(){return p.getSmsAccounts()}).then(function(){return p.getOpenchannelAccounts()}).then(function(){return p.getChatWebsites()}).then(function(){return p.getLists()}).catch(function(e){console.error(e),p.showInteraction=!0}).finally(function(){!function(){if(!p.tab.spy&&!p.interaction.closed)for(var e=0;e<p.messages.rows.length;e+=1)"in"!==p.messages.rows[e].direction||p.messages.rows[e].read||(l[p.tab.channel+"Message"].accept({id:p.messages.rows[e].id,UserId:p.user.id}),p.acceptedMessages.push(p.messages.rows[e].id))}(),b(),m.on(p.tab.channel+"Message:save",p.onMessageSave),m.on(p.tab.channel+"Message:update",p.onMessageSave),m.on(p.tab.channel+"Interaction:save",p.onInteractionSave),m.on(p.tab.channel+"Interaction:update",p.onInteractionSave),m.on("user_has_"+p.tab.channel+"_interactions:save",p.onInteractionOpen),m.on("user_has_"+p.tab.channel+"_interactions:remove",p.onInteractionClose),p.tab.areaText=p.tab.areaText?p.tab.areaText:"",p.showFooter=!0}))},p.getLabelByMessage=function(e){var t="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":t:e.UserId?p.usersMap?p.usersMap[e.UserId]:t:"System"},p.openContact=function(e,t){try{p.tab&&!p.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(t||p.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},p.openInteraction=function(e,t){try{if(t.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",t);if(t.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",t);if(t.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",t);if(t.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",t);if(t.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",t)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},p.disposeInteraction=h,p.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!0,skipHide:Boolean(p.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{nolimit:!0,fields:"id,name,color"})}]},locals:{channel:p.tab.channel,interaction:p.tab.interaction}})},p.composeMailInteraction=function(t,e){if(e.inReplyTo){var n=_.find(p.messages.rows,{messageId:e.inReplyTo});if(!n)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){f(t,e&&e.count?e.rows[0]:void 0)}).catch(function(e){console.error(e),f(t,void 0)});f(t,n)}else f(t,e)},p.composeFaxInteraction=function(e){var t={to:[]};t.to.push(p.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeFax/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!1,locals:{account:p.account,message:t,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:p.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 t=0;t<e.data.errors.length;t++)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},p.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/composeSms/dialog.html",parent:angular.element(n.body),clickOutsideToClose:!1,locals:{account:p.account,message:t,type:e},fullscreen:!0,skipHide:Boolean(p.tab.spy)}).then(function(e){e&&A(e)})},p.transferLastMessage=function(){if(p.interaction){var e=_.findLast(p.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(n.body),clickOutsideToClose:!1,locals:{account:p.account,interaction:p.interaction,message:e,channel:p.tab.channel}}).then(function(e){p.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(p.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},p.downloadMessage=function(s,e){p.tab.channel&&s.id&&l[p.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=p.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},p.downloadInteraction=function(s,e){p.tab.channel&&s.id&&l[p.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var t=[e.buffer],n=p.tab.channel+"-interaction"+s.id+".zip",a=new Blob(t,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},p.getMailAccounts=function(){l.user.getMailAccounts({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.mailAccounts=e||{count:0,rows:[]}})},p.getFaxAccounts=function(){l.user.getFaxAccounts({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.faxAccounts=e||{count:0,rows:[]}})},p.getSmsAccounts=function(){l.user.getSmsAccounts({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.smsAccounts=e||{count:0,rows:[]}})},p.getOpenchannelAccounts=function(){l.user.getOpenchannelAccounts({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.openchannelAccounts=e||{count:0,rows:[]}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.mail.account"}];for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mail.account",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.getChatWebsites=function(){l.user.getChatWebsites({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.chatAccounts=e||{count:0,rows:[]}})},p.getLists=function(){l.user.getLists({id:p.user.id,nolimit:!0}).$promise.then(function(e){p.voiceAccounts=e||{count:0,rows:[]}})},p.reply=function(e,t){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===t.trim())return;A(function(e){var t={},n="chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId";t[n]=p.interaction[n].toString(),t[_.capitalize(p.tab.channel)+"InteractionId"]=p.interaction.id,"sms"===p.tab.channel&&(t.phone=p.interaction.phone);e&&(t.UserId=p.user.id,t.ContactId=p.interaction.ContactId,t.body=e,t.createdAt=Date.now());return t}(t.replace(/\n$/,"")))},p.upload=function(){p.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},p.ngFlow.flow.upload()},p.fileAdded=function(e){if(e.size>v)return d.error({title:"File too big",msg:"The max allowed size is "+g+"MB"}),!1;return!0},p.fileSuccess=function(e,t){var n=JSON.parse(t),a=n.name;"chat"===p.tab.channel&&(a='<a href="'+(p.account.remote?p.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+p.interaction.id+"/attachment_download?attachId="+n.id+"&token="+p.account.token+'" target="_self">'+n.name+"</a>");A({body:a,AttachmentId:n.id})},p.onMessageSave=function(e){if(e&&p.interaction.id!=e[_.capitalize(p.tab.channel)+"InteractionId"])return;var t=!1;p.messages?t=_.find(p.messages.rows,{id:e.id}):p.messages={rows:[],count:0};t?_.merge(t,e):("mail"===p.tab.channel?p.messages.rows.unshift(e):p.messages.rows.push(e),b())},p.onInteractionSave=function(e){if(e&&p.interaction.id!==e.id)return;e.closed&&(p.tab.saved=!0);_.merge(p.interaction,e)},p.searchTextChange=function(t){var n=s.defer(),a=[],e={},i="chat"===p.tab.channel?"ChatWebsiteId":_.capitalize(p.tab.channel)+"AccountId";return e.filter=t,e[i]=p.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:t}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),n.resolve(a)}).catch(function(e){n.reject(e)}),n.promise},p.selectedItemChange=function(t){if(t){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(t.value),n={user:p.user,account:p.account,interaction:p.interaction,contact:p.interaction&&p.interaction.Contact?p.interaction.Contact:{}};p.tab.areaText+=" "+e(n),p.ctrlMethods.setText(p.tab.areaText)}catch(e){p.tab.areaText+=" "+t.value,p.ctrlMethods.setText(p.tab.areaText)}p.selectedItem=null,p.changeDisplayCannedAnswerInputValue()}},p.getIconByChannel=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";default:return"icon-hangouts"}},p.getColorByChannel=E,p.getColorByItem=function(e){var t="";e.FaxAccountId?t="fax":e.OpenchannelAccountId?t="openchannel":e.SmsAccountId?t="sms":e.MailAccountId?t="mail":e.ChatWebsiteId?t="chat":e.amaflags&&(t="voice");return E(t)},p.getMessagesAlignment=function(e){if(e.secret&&p.user.id!=e.UserId)return"in";switch(p.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}},p.displayCannedAnswerInput=!1,p.changeDisplayCannedAnswerInputValue=function(){p.displayCannedAnswerInput=!p.displayCannedAnswerInput},p.setAs=function(e){p.tab.channel&&p.interaction&&p.interaction.id&&l[p.tab.channel+"Interaction"].update({id:p.interaction.id,substatus:e,substatusAt:Date.now()}).$promise.catch(function(e){console.error(e)})},p.markAsUnread=function(){if(p.tab.channel&&p.interaction&&p.interaction.id)if(p.acceptedMessages.length)for(var e=0;e<p.acceptedMessages.length;e+=1)l[p.tab.channel+"Message"].update({id:p.acceptedMessages[e],read:!1,UserId:null});else for(var t=0;t<p.messages.rows.length;t+=1)if("in"===p.messages.rows[t].direction){p.messages.rows[t].UserId===p.user.id?l[p.tab.channel+"Message"].update({id:p.messages.rows[t].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}p.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(p.tab)},p.isMyAccount=function(e){{if(e.FaxAccountId)return _.includes(_.map(p.faxAccounts?p.faxAccounts.rows:[],"id"),e.FaxAccountId);if(e.OpenchannelAccountId)return _.includes(_.map(p.openchannelAccounts?p.openchannelAccounts.rows:[],"id"),e.OpenchannelAccountId);if(e.SmsAccountId)return _.includes(_.map(p.smsAccounts?p.smsAccounts.rows:[],"id"),e.SmsAccountId);if(e.MailAccountId)return _.includes(_.map(p.mailAccounts?p.mailAccounts.rows:[],"id"),e.MailAccountId);if(e.ChatWebsiteId)return _.includes(_.map(p.chatAccounts?p.chatAccounts.rows:[],"id"),e.ChatWebsiteId);if(e.amaflags)return!0}return!1},p.getAttachments=function(t){return l.attachment.get({MailMessageId:t.id}).$promise.then(function(e){e&&e.rows&&(t.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()})})},p.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var t=new Blob([e.buffer],{type:e.type}),n=document.createElement("a"),a=window.URL.createObjectURL(t);n.href=a,n.target="_self",n.download=i.name,document.body.appendChild(n),n.click(),setTimeout(function(){document.body.removeChild(n),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()})})},p.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},p.onInteractionOpen=function(e){var t;p.interaction.id==e[_.upperFirst(p.tab.channel)+"InteractionId"]&&(p.interaction.Users&&(t=_.find(p.interaction.Users,{id:e.UserId})),t||p.interaction.Users.push({id:e.UserId}))},p.onInteractionClose=function(e){p.interaction.id==e[_.upperFirst(p.tab.channel)+"InteractionId"]&&p.interaction.Users&&_.remove(p.interaction.Users,{id:e.UserId})},p.loadNextPage=function(){var n=s.defer();if(p.queryMessage)return p.queryMessage.offset=p.messages.rows.length,l[p.tab.channel+"Interaction"].getMessages(p.queryMessage).$promise.then(function(e){for(var t=0;t<e.rows.length;t+=1)p.messages.rows.push(e.rows[t]),p.interaction.closed||"in"!==e.rows[t].direction||e.rows[t].read||(l[p.tab.channel+"Message"].accept({id:e.rows[t].id,UserId:p.user.id}),p.acceptedMessages.push(e.rows[t].id));return n.resolve(e)}).catch(function(e){return n.reject(e)});return n.reject()},p.timelineOptions={scrollEl:"#interaction-content"},a.$on("$destroy",function(){m.removeAllListeners(p.tab.channel+"Message:save"),m.removeAllListeners(p.tab.channel+"Message:update"),m.removeAllListeners(p.tab.channel+"Interaction:save"),m.removeAllListeners(p.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+p.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+p.tab.channel+"_interactions:remove")})}function t(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(n){n.updateView=function(){var e,t=_.replace(n.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"');n.trustedHtml=a.trustAsHtml(t)},n.$watch("ngBindHtmlUnsafe",function(e,t){n.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils"],t.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",t).filter("getChannelByItem",function(){return function(e,t,n,a){for(var i=[],s=0;s<e.length;s+=1){var o=!0;switch(t){case"voice":o=Boolean(e[s].uniqueid);break;case"chat":o=Boolean(e[s].ChatWebsiteId);break;case"mail":o=Boolean(e[s].MailAccountId);break;case"sms":o=Boolean(e[s].SmsAccountId);break;case"fax":o=Boolean(e[s].FaxAccountId);break;case"openchannel":o=Boolean(e[s].OpenchannelAccountId);break;default:o=!0}o&&n&&a&&(o=moment(e[s].createdAt).isBetween(n,a)),o&&i.push(e[s])}return i}}).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,t,n,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,n.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,t){try{(t=JSON.parse(t)).size=e.size,c.message.attachments.push(t)}catch(e){console.error(e)}},c.fileAdded=function(e){var t=["pdf","tif"];if(!_.includes(t,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+t.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 t="";e.firstName&&e.firstName!==e.fax&&(t+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(t+=e.lastName+" ");return t+="<"+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 t=e;if(_.isObject(e))return e.fax;if(n=t,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(n))return t;var n;return l.error("Fax "+t+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,n.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(t,e,i,n,s,o,a,r,l,d,c,m){var u=this,p=25,g=1024*p*1024;switch(u.currentUser=c.getCurrentUser(),u.secret="note"===a,u.hiddenCC=!0,u.hiddenBCC=!0,u.verifySmtp=!0,u.errors=[],u.separatorKeys=[n.KEY_CODE.ENTER,n.KEY_CODE.COMMA,n.KEY_CODE.TAB],u.searchTextChange=function(t){var n=d.defer(),a=[];return r.cannedAnswer.get({filter:t,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),r.cannedAnswer.get({filter:t}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),n.resolve(a)}).catch(function(e){n.reject(e)}),n.promise},u.selectedItemChange=function(t){if(t&&t.value&&u.ckEditorInstance)try{var e=_.template(t.value),n={user:u.currentUser,account:s,interaction:m,contact:m&&m.Contact?m.Contact:{}};u.ckEditorInstance.insertHtml(e(n))}catch(e){console.error(e),u.ckEditorInstance.insertHtml(t.value)}document.getElementById("html-area").focus(),u.selectedItem=null},u.onReadyEditor=function(e){try{u.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,u.fromTemplate=_.template("{{ name }} <{{ email }}>"),u.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),u.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 }}"),u.message={from:u.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:f(),type:a,attachments:[],showLastMessage:!0},u.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:u.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"},u.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:g,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},u.ngFlow={flow:{}},u.reply=function(e){angular.isDefined(o)&&(u.message.type="reply",u.message.to="in"===o.direction?o.from.split(","):o.to.split(","),u.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,u.message.inReplyTo=o.messageId,u.message.body=o.draft&&o.draft.inReplyTo?o.draft.body:f(),u.message.attachments=o.draft?o.draft.attachments:[],e&&o.cc&&(u.hiddenCC=!1,u.message.cc=o.cc.split(",")),u.message.showLastMessage=!!o.draft&&o.draft.showLastMessage)},u.newMail=function(){angular.isDefined(o)&&(u.message.type="new",u.message.to=o.to?o.to.split(","):[])},u.forward=function(){if(angular.isDefined(o)){if(u.message.type="forward",u.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,u.message.body=o.draft&&!o.draft.inReplyTo?o.draft.body:f(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)u.message.attachments.push(o.Attachments[e]);u.message.showLastMessage=!!o.draft&&o.draft.showLastMessage}},u.send=function(e,t,n){if(u.message.to&&u.message.body)if(u.message.to.length)if(o.draft=void 0,_.isEmpty(u.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(){v(t,n)})}else v(t,n);else l.error("To is mandatory")},u.note=function(){u.type="note",u.secret=!0,u.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'px"><p></p></div>'},u.addNote=function(){u.message.body&&(u.message.draft=void 0,i.hide({secret:!0,body:u.message.body,attach:u.message.attachments.length,attachments:u.message.attachments}))},u.upload=function(e){u.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+t.get("motion.token")},u.ngFlow.flow.upload()},u.fileSuccess=function(e,t){try{(t=JSON.parse(t)).size=e.size,u.message.attachments.push(t)}catch(e){console.error(e)}},u.deleteAttachment=function(e){u.message.attachments=_.reject(u.message.attachments,{id:e.id}),r.attachment.delete({id:e.id}).$promise.then(function(){l.success({title:"Attachment deleted!",msg:e.name?e.name+" has been deleted!":""})})},u.fileAdded=function(e){if(e.size>g)return l.error({title:"File too big",msg:"The max allowed size is "+p+"MB"}),!1;return!0},u.getContact=function(e){var t="";e.firstName&&e.firstName!==e.email&&(t+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(t+=e.lastName+" ");return t+="<"+e.email+">"},u.contactSearch=function(e){return s&&s.ListId?r.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},u.transformContact=function(e,t){if(_.isObject(e))return e.email;if(_.isString(e)){if(h(e))return e;for(var n=e.split(","),a=0;a<n.length;a+=1)h(n[a])?_.isArray(t)&&_.indexOf(t,n[a])<0&&t.push(n[a]):l.error("Email "+n[a]+" is not valid");return null}return l.error("Email field is not valid"),null},u.closeDialog=function(){angular.isDefined(o)&&(o.draft=u.message);i.cancel()},u.loadLastMessage=function(){u.message.body+=b(u.message.type)},a){case"reply":u.reply(!1);break;case"replyAll":u.reply(!0);break;case"forward":u.forward();break;case"new":u.newMail();break;case"note":u.note()}function v(e,t){var n={from:u.message.from,to:u.message.to.join(","),cc:u.message.cc.join(","),bcc:u.message.bcc.join(","),subject:u.message.subject,body:u.message.showLastMessage?u.message.body:u.message.body+b(u.message.type),inReplyTo:u.message.inReplyTo,attach:u.message.attachments.length,attachments:u.message.attachments,Interaction:{lastMsgAt:moment().format("YYYY-MM-DD HH:mm:ss"),lastMsgDirection:"out",lastMsgBody:u.message.body,substatus:t,substatusAt:moment().format("YYYY-MM-DD HH:mm:ss")}};n.html='<div id="xm-mail-content">'+_.replace(n.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(n.Interaction.closed=!0,n.Interaction.closedAt=moment().format("YYYY-MM-DD HH:mm:ss")),i.hide(n)}function h(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 f(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'px">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:u.currentUser,account:s,interaction:m,contact:m&&m.Contact?m.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function b(e){var t,n,a='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":a+=u.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":a+=u.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)||""})}return a+="<br><br>",a+=(t=o.body?_.replace(o.body,'<div id="xm-mail-content"',"<div"):"",(n=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?n[1]:t),a+="</blockquote></div>",e?a:""}r.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){u.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.secret||r.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){u.verifySmtp=!1,u.errors.push({message:e.data,type:e.status}),u.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","Auth","interaction"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,t,n,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(t){var n=c.defer(),a=[];return l.cannedAnswer.get({filter:t,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:t}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),n.resolve(a)}).catch(function(e){n.reject(e)}),n.promise},p.selectedItemChange=function(t){if(t){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(t.value),n={user:p.currentUser,account:s};p.message.body+=" "+e(n),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+t.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?(t=p.message.body,a.hide({to:p.message.to.join(","),body:t})):d.error("To is mandatory"));var t},p.getContact=function(e){var t="";e.firstName&&e.firstName!==e[s.mapKey]&&(t+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(t+=e.lastName+" ");return t+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var t="firstName,lastName,phone,mobile";return s.mapKey&&(t+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:t}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var t=e;if(_.isObject(t))return e[s.mapKey];return t},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,t,n,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(t){var n=c.defer(),a=[];return l.cannedAnswer.get({filter:t,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:t}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),n.resolve(a)}).catch(function(e){n.reject(e)}),n.promise},p.selectedItemChange=function(t){if(t){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(t.value),n={user:p.currentUser,account:s};p.message.body+=" "+e(n),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+t.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?(t=p.message.body,a.hide({to:p.message.to.join(","),body:t})):d.error("To is mandatory"));var t},p.getContact=function(e){var t="";e.firstName&&e.firstName!==e.mobile&&(t+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(t+=e.lastName+" ");return t+="<"+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 t=e;if(_.isObject(t))return e.mobile;if(n=t,/^(\+|\d)[0-9]{7,16}$/.test(n))return t;var n;return d.error("Mobile "+t+" 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(t,n,a,i,s,o){var r=this;function l(e){t.hide(e)}r.errors=[],r.interaction=angular.copy(i),r.dispositions={count:0,rows:[]},r.globalDispositions={count:0,rows:[]},r.channel=s,r.interactionMethod=r.channel+"Interaction",r.interaction.disposition||(r.interaction.disposition=null),r.saveDisposition=function(e){r.errors=[],r.interaction.closed||(r.interaction.closedAt=Date.now());r.interaction.UserId=o.id,r.interaction.closed=!0,r.interaction.closeReason="agent",a[r.interactionMethod]?a[r.interactionMethod].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","ChatWebsiteId","OpenchannelId","closed","closedAt","closeReason","disposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,n.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"}),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 t=0;t<e.data.errors.length;t++)n.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else n.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,function(){var e={fields:"id,name",sort:"name",nolimit:!0};switch(s){case"chat":e.ChatWebsiteId=i.ChatWebsiteId;break;case"mail":case"sms":case"fax":case"openchannel":var t=_.capitalize(s)+"AccountId";e[t]=i[t]}a.disposition.get(e).$promise.then(function(e){r.dispositions=e}).catch(function(e){console.error(e)}),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null"}).$promise.then(function(e){r.globalDispositions=e}).catch(function(e){console.error(e)})}()}e.$inject=["$mdDialog","toasty","api","interaction","channel","user"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(t,n,e,a,i,s){var o=this;function r(e){t.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.interactionMethod])return e[o.interactionMethod].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){n.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 t=0;t<e.data.errors.length;t+=1)n.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else n.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.interactionMethod=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=n.getCurrentUser(),l.channel=s.toLowerCase(),l.message=o,l.account=r,l.transfer={id:0,type:"queue"},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 t=0;t<e.data.errors.length;t++)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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",nolimit:!0}).$promise.then(function(e){return l.agents=e||{count:0,rows:[]},a[l.queueMethod].get({fields:"id,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,s,o,e,l,d,t,n,a,r,c){var m=this;function u(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){d.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function p(n,e){var r=t.getCurrentUser();l.jscriptySessionReport.save({starttime:m.starttime,membername:m.call&&m.call.membername?m.call.membername:r.name,calleridname:m.call&&m.call.calleridname?m.call.calleridname:void 0,calleridnum:m.call&&m.call.calleridnum?m.call.calleridnum:void 0,queue:m.call&&m.call.queue?m.call.queue:void 0,uniqueid:m.call&&m.call.uniqueid?m.call.uniqueid:void 0,VoiceQueueId:m.call&&m.call["xmd-voicequeueid"]?m.call["xmd-voicequeueid"]:void 0,ProjectId:m.project&&m.project.id?m.project.id:void 0,projectname:m.project&&m.project.name?m.project.name:void 0,ContactId:m.contact&&m.contact.id?m.contact.id:void 0,completed:e}).$promise.then(function(e){if(e)for(var t=m.getResponseSheetHeaders(),n=m.getResponseSheetRow(),a=m.getQuestionWithResponseList(),i=0;i<t.length;i+=1)if(!_.isEmpty(n[i])){l.jscriptyQuestionReport.save({question:t[i],answer:n[i],questionId:a[i].id,membername:m.call&&m.call.membername?m.call.membername:r.name,calleridname:m.call&&m.call.calleridname?m.call.calleridname:void 0,calleridnum:m.call&&m.call.calleridnum?m.call.calleridnum:void 0,queue:m.call&&m.call.queue?m.call.queue:void 0,uniqueid:m.call&&m.call.uniqueid?m.call.uniqueid:void 0,SessionId:e.id,ProjectId:m.project.id,projectname:m.project.name});for(var s=n[i].toString().split(";"),o=0;o<s.length;o+=1)l.jscriptyAnswerReport.save({question:t[i],questionId:a[i].id,answer:s[o].trim(),membername:m.call&&m.call.membername?m.call.membername:r.name,calleridname:m.call&&m.call.calleridname?m.call.calleridname:void 0,calleridnum:m.call&&m.call.calleridnum?m.call.calleridnum:void 0,queue:m.call&&m.call.queue?m.call.queue:void 0,uniqueid:m.call&&m.call.uniqueid?m.call.uniqueid:void 0,SessionId:e.id,ProjectId:m.project.id,projectname:m.project.name})}return e}).then(function(e){e?n.resolve(!0):n.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var t=0;t<e.data.errors.length;t+=1)d.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});n.reject()})}m.formViewer={},m.showResetButton=!0,m.showIncompleteSubmitButton=!1,m.detectBrowser=c.detectBrowser(),m.onSubmit=function(e,t){var n=s.defer();if(t){var a=o.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");o.show(a).then(function(){p(n,!1)},function(){n.resolve()})}else p(n,!0);return n.promise.then(function(e){e&&(d.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){d.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(m.tab))}).catch(function(e){d.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},m.openContact=function(e,t){try{i.$parent.$parent.$parent.vm.addContactTab(t)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},m.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},m.getResponseSheet=function(){return e.getResponseSheet(m.project.formData,m.project.responseData,!1)},m.getResponseSheetRow=function(){return e.getResponseSheetRow(m.project.formData,m.project.responseData)},m.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(m.project.formData,!1)},m.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(m.project.formData,m.project.responseData)},m.init=function(e){m.tab=e,m.tab&&(m.call=m.tab.call,m.starttime=m.tab.openedAt,m.contact=m.tab.contact,m.project=m.tab.project,m.project&&(_.isObjectLike(m.project.formData)?m.project.formData=m.project.formData:m.isJsonString(m.project.formData)?m.project.formData=JSON.parse(m.project.formData):m.project.formData=void 0,m.project.responseData=m.project.responseData||{},void 0!==m.project.currentPage&&r(function(){a.$broadcast("mwForm.pageEvents.changePage",{page:m.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,t){if(t.currentPage&&(m.project.currentPage=t.currentPage.number-1,u(),m.project.enableUncompleteSave&&(1<=t.currentPage.number&&t.currentPage.number<m.project.formData.pages.length?m.showIncompleteSubmitButton=!0:m.showIncompleteSubmitButton=!1),m.project.formData&&m.project.formData.pages))for(var n=0,a=m.project.formData.pages.length;n<a;n++)if(t.currentPage.number<n+1&&m.project.formData.pages[n].elements)for(var i=0,s=m.project.formData.pages[n].elements.length;i<s;i++)"question"===m.project.formData.pages[n].elements[i].type&&m.project.formData.pages[n].elements[i].question&&delete m.project.responseData[m.project.formData.pages[n].elements[i].question.id]})))},m.resetViewer=function(e){if(m.formViewer.reset){var t=o.confirm().title(n.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(n.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(n.instant("JSCRIPTY.YES")).cancel(n.instant("JSCRIPTY.NO"));o.show(t).then(function(){m.showIncompleteSubmitButton=!1,m.project.currentPage=void 0,u(),m.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(n,a,e,t,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:n.instant("DASHBOARDS.ATTENTION"),msg:n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(t[s.notification.channel+"Message"])return t[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(t[s.notification.channel+"Message"])return t[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 t=this;t.init=function(e){t.tab=e,t.tab&&(t.tab.saved=!0,t.html=t.tab.html)}})}(),function(){"use strict";function e(e,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),t&&(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:e.ChatWebsiteId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("chatInteraction:save",i.onSaveChatInteraction),t.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("chatInteraction:save"),t.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,t,n,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)},n.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=t(function(){d(),c()},999),n.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){n.removeAllListeners("voice_queue:save"),n.removeAllListeners("campaign:save"),l.interval&&t.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,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),t&&(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:e.FaxAccountId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("faxInteraction:save",i.onSaveFaxInteraction),t.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("faxInteraction:save"),t.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),t&&(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:e.MailAccountId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("mailInteraction:save",i.onSaveMailInteraction),t.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("mailInteraction:save"),t.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),t&&(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:e.OpenchannelAccountId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),t.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("openchannelInteraction:save"),t.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,t,n,a){var i=this,s=[];function o(e,t){e.closed||e.UserId||!t||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!t&&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,!t&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!t&&i.inbound.waiting&&(i.inbound.waiting-=1)),t&&(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:e.SmsAccountId})}function d(e){return moment(e).isBetween(moment().startOf("day").toString(),moment().endOf("day").toString())}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())},t.on("smsInteraction:save",i.onSaveSmsInteraction),t.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<n.rows.length;e+=1)if(l(n.rows[e])){var t=n.rows[e];o(t,!0),r()}}(),e.$on("$destroy",function(){t.removeAllListeners("smsInteraction:save"),t.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(n){var i=[],s=function(){var n=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(n.queues,function(e,t){n.rpcQueues[t]&&(a.waiting+=n.rpcQueues[t].waiting||0,a.talking+=(n.rpcQueues[t].talking||0)+(n.rpcQueues[t].pTalking||0),a.answered+=n.rpcQueues[t].answered||0,a.abandoned+=n.rpcQueues[t].abandoned||0,a.sumHoldTime+=n.rpcQueues[t].sumHoldTime||0,a.sumBillable+=n.rpcQueues[t].sumBillable||0,a.total+=n.rpcQueues[t].total||0,a.originated+=n.rpcQueues[t].originated||0,a.outboundDropCallsDayCallersExit+=n.rpcQueues[t].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=n.rpcQueues[t].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(),n.defer.resolve(a),0<i.length&&s()};return function(e){var t=n.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:t}),1===i.length&&s(),t.promise}}function t(n){var i=[],s=function(){var n=i[0],a={originated:0,limitCalls:0};_.forIn(n.rpcCampaigns,function(e,t){n.rpcCampaigns[t]&&(a.originated+=n.rpcCampaigns[t].originated||0,a.limitCalls+=n.rpcCampaigns[t].limitCalls||0)}),i.shift(),n.defer.resolve(a),0<i.length&&s()};return function(e){var t=n.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:t}),1===i.length&&s(),t.promise}}function n(e,o,t,n){var r=this;r.hasPermission=function(){return t.hasPermission(101)||t.hasRole("admin")},r.license=n,e.$on("$stateChangeSuccess",function(e,t,n,a,i){var s=[];r.license.voice&&s.push("app.dashboards.general.voice"),r.license.dialer&&s.push("app.dashboards.general.dialer"),r.license.chat&&s.push("app.dashboards.general.chat"),r.license.mail&&s.push("app.dashboards.general.mail"),r.license.messaging&&s.push("app.dashboards.general.sms"),r.license.openchannel&&s.push("app.dashboards.general.openchannel"),r.license.fax&&s.push("app.dashboards.general.fax"),r.selectedTab=_.indexOf(s,t.name),r.selectedTab<0&&(r.selectedTab=0)<s.length&&o.go(_.first(s))})}e.$inject=["$q"],t.$inject=["$q"],n.$inject=["$scope","$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",t).controller("UserDashboardGeneralController",n)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=n?_.keyBy(n.rows?n.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},t.on("voice_queue:save",o.onSaveQueue),t.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){t.removeAllListeners("voice_queue:save"),t.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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.faxAccount.FaxAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.faxAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++){_.some(t,{resourceId:g.trunks[i].id})?(g.trunks[i].canSelect=!0,n.push(g.trunks[i])):a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,n.push(g.trunks[i]))}g.trunks=n})}else{var n=[],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,n.push(g.trunks[i]));g.trunks=n}}).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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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 t(e,t){if(r.faxAccountApps.rows.length){var n=r.faxAccountApps.rows[t]?r.faxAccountApps.rows[t]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:n,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[t]=e:r.faxAccountApps.rows.splice(t,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,t=[],n=0;n<r.faxAccountApps.rows.length;n++,0){var a=r.faxAccountApps.rows[n],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,t=_.concat(t,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(t,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.faxAccount=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,n).$promise},r.editFaxAccountApp=t,r.editInterval=function(e,t){if(r.faxAccountApps.rows.length){var n=r.faxAccountApps.rows[t]?r.faxAccountApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(t,e,n,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"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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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"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){t.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(t,e,n,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"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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("fax")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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"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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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"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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.faxAccount={},c.faxAccountFaxDispositions={count:0,rows:[]},c.selectedFaxAccountFaxDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.faxAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.faxAccount.id,c.query.FaxAccountId=c.faxAccount.id,c.getFaxAccountFaxDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the faxDisposition?").htmlContent("<b>"+(e.name||"faxDisposition")+"</b> will be deleted.").ariaLabel("delete faxDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getFaxAccountFaxDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.faxAccount.getDispositions(c.query,p).$promise},c.createOrEditFaxAccountFaxDisposition=function(e,t){s.show({controller:"CreateOrEditFaxDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/faxDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:c.faxAccount,faxDisposition:t,faxDispositions:c.faxAccountFaxDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedFaxAccountFaxDispositions=function(){var e=angular.copy(c.selectedFaxAccountFaxDispositions);return c.selectedFaxAccountFaxDispositions=[],e},c.deleteFaxAccountFaxDisposition=g,c.deleteSelectedFaxAccountFaxDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected faxDispositions?").htmlContent("<b>"+c.selectedFaxAccountFaxDispositions.length+" selected</b> will be deleted.").ariaLabel("delete faxDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedFaxAccountFaxDispositions.forEach(function(e){g(e)}),c.selectedFaxAccountFaxDispositions=[]})};var m=!0,u=1;function p(e){c.faxAccountFaxDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.faxAccountFaxDispositions.rows,{id:e.id}),c.faxAccountFaxDispositions.count-=1,c.faxAccountFaxDispositions.rows.length||c.getFaxAccountFaxDispositions(),r.success({title:"FaxDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getFaxAccountFaxDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountFaxDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_FAXDISPOSITION",g.faxDisposition=angular.copy(l),g.faxDispositions=r,g.newFaxDisposition=!1,g.faxDisposition||(g.faxDisposition={},g.title="FAX.NEW_FAXDISPOSITION",g.newFaxDisposition=!0),t.params.id&&(g.faxDisposition.FaxAccountId=t.params.id),g.addNewFaxDisposition=function(){g.errors=[],d.disposition.save(g.faxDisposition).$promise.then(function(e){g.faxDispositions.unshift(e.toJSON()),o.success({title:"FaxDisposition properly created",msg:g.faxDisposition.name?g.faxDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxDisposition=function(){g.errors=[],d.disposition.update({id:g.faxDisposition.id},g.faxDisposition).$promise.then(function(e){var t=_.find(g.faxDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"FaxDisposition properly saved!",msg:g.faxDisposition.name?g.faxDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The faxDisposition will be deleted.").ariaLabel("Delete FaxDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.faxDisposition.id}).$promise.then(function(){_.remove(g.faxDispositions,{id:g.faxDisposition.id}),o.success({title:"FaxDisposition properly deleted!",msg:(g.faxDisposition.name||"faxDisposition")+" has been deleted!"}),v(g.faxDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxDispositions","faxDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxDispositionDialogController",e)}(),function(){"use strict";function e(e,a,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.faxAccount={},c.faxAccountInteractions={count:0,rows:[]},c.selectedFaxAccountInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,Contact.firstName,Owner.name,closedAt,disposition,note,UserId,ContactId,FaxAccountId,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.faxAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.faxAccount.id,c.getFaxAccountInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.faxInteractionDownload=function(s,e,t){return l.faxInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getFaxAccountInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.faxAccount.getInteractions(c.query,p).$promise},c.createOrEditFaxAccountInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:c.faxAccount,interaction:t,interactions:c.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spyfaxInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"fax",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(c.selectedFaxAccountInteractions);return c.selectedFaxAccountInteractions=[],e},c.deleteFaxAccountInteraction=g,c.deleteSelectedFaxAccountInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedFaxAccountInteractions.forEach(function(e){g(e)}),c.selectedFaxAccountInteractions=[]})};var m=!0,u=1;function p(e){c.faxAccountInteractions=e||{count:0,rows:[]}}function g(e){l.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.faxAccountInteractions.rows,{id:e.id}),c.faxAccountInteractions.count-=1,c.faxAccountInteractions.rows.length||c.getFaxAccountInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getFaxAccountInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(n,e,a,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.faxAccount=c||n.params.faxAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=n.params.tab||0,u.gotogoto=function(e,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.fax.realtime.accounts",{})}},u.agentadddialog=function(e,t){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:u.faxAccounts?u.faxAccounts.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxAccounts=function(){n.go("app.fax.faxAccounts")},u.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(u.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:u.faxAccount.name?u.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){u.trunks=e.rows||[],u.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.faxAccount&&(a=_.find(u.trunks,{id:Number(u.faxAccount.TrunkId)}));for(var i=0;i<u.trunks.length;i++){_.some(t,{resourceId:u.trunks[i].id})?(u.trunks[i].canSelect=!0,n.push(u.trunks[i])):a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,n.push(u.trunks[i]))}u.trunks=n})}else{var n=[],a=null;u.faxAccount&&(a=_.find(u.trunks,{id:Number(u.faxAccount.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,n.push(u.trunks[i]));u.trunks=n}}).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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.faxAccount&&(a=_.find(u.lists,{id:Number(u.faxAccount.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.faxAccount&&(a=_.find(u.lists,{id:Number(u.faxAccount.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.faxAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="faxAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedFaxAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.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"),"")}),b.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"),"")}),b.editstate=function(e,t){n.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:b.crudPermissions})},b.interactionsgoto=function(e,t){n.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.fax.realtime.accounts",{})}},b.agentadddialog=function(e,t){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:b.faxAccounts?b.faxAccounts.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getFaxAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.faxAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="FaxAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditFaxAccount=function(e,t){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:t,faxAccounts:b.faxAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteFaxAccount=S,b.exportSelectedFaxAccounts=function(){var e=angular.copy(b.selectedFaxAccounts);return b.selectedFaxAccounts=[],e},b.deleteSelectedFaxAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+b.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedFaxAccounts.forEach(function(e){S(e)}),b.selectedFaxAccounts=[]})},b.deselectFaxAccounts=function(){b.selectedFaxAccounts=[]},b.selectAllFaxAccounts=function(){b.selectedFaxAccounts=b.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],b.faxAccounts.rows.forEach(function(e){var t=_.find(b.trunks,{id:Number(e.TrunkId)});a.push(t)});for(var i=0;i<b.trunks.length;i++){if(_.some(t,{resourceId:b.trunks[i].id}))b.trunks[i].canSelect=!0,n.push(b.trunks[i]);else _.some(a,{id:b.trunks[i].id})&&(b.trunks[i].canSelect=!1,n.push(b.trunks[i]))}b.trunks=n})}else{var n=[],a=[];b.faxAccounts.rows.forEach(function(e){var t=_.find(b.trunks,{id:Number(e.TrunkId)});a.push(t)});for(var i=0;i<b.trunks.length;i++){_.some(a,{id:b.trunks[i].id})&&(b.trunks[i].canSelect=!1,n.push(b.trunks[i]))}b.trunks=n}}).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){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.faxAccount&&(a=_.find(b.lists,{id:Number(b.faxAccount.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.faxAccount&&(a=_.find(b.lists,{id:Number(b.faxAccount.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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 A=!0,E=1;function y(e){b.faxAccounts=e||{count:0,rows:[]}}function S(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.faxAccounts.rows,{id:e.id}),b.faxAccounts.count-=1,b.faxAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.fax").controller("FaxAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.faxQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("FAX.ALL_TEAMS"),labelSelected:n.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.faxQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="faxQueues",b.listOrder="",b.listOrderAsc=null,b.selectedFaxQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:b.faxQueues?b.faxQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:b.faxQueues?b.faxQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.fax.realtime.queues",{})}},b.success=y,b.getFaxQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.faxQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="FaxQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditFaxQueue=function(e,t){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:t,faxQueues:b.faxQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteFaxQueue=S,b.exportSelectedFaxQueues=function(){var e=angular.copy(b.selectedFaxQueues);return b.selectedFaxQueues=[],e},b.deleteSelectedFaxQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+b.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedFaxQueues.forEach(function(e){S(e)}),b.selectedFaxQueues=[]})},b.deselectFaxQueues=function(){b.selectedFaxQueues=[]},b.selectAllFaxQueues=function(){b.selectedFaxQueues=b.faxQueues.rows};var A=!0,E=1;function y(e){b.faxQueues=e||{count:0,rows:[]}}function S(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.faxQueues.rows,{id:e.id}),b.faxQueues.count-=1,b.faxQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,t){p.rpcFaxAccounts[t]&&_.merge(e,p.rpcFaxAccounts[t])}),_.forIn(p.faxAccounts,function(t,e){var n={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss")};s.faxAccount.getMessages(n).$promise.then(function(e){return e&&(t.in=e.count||0,t.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),n.direction="out",s.faxAccount.getMessages(n).$promise}).then(function(e){e&&(t.out=e.count||0,t.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,t){i.go("app.fax.faxAccounts.edit",{id:t.id,faxAccount:t})},p.order=[],_.forIn(p.faxAccounts,function(e,t){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 t=0;t<e.rows.length;t++)p.order.push(e.rows[t].id)}g()}e.$watch("vm.query.filter",function(e,t){v?n(function(){v=!1}):(t||(h=p.query.page),e!==t&&(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,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.faxQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].FaxQueueId].paused++,g.queues[e[t].rows[n].FaxQueueId].loggedInDb++,g.queues[e[t].rows[n].FaxQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].FaxQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"fax",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.faxQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="FaxQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditFaxQueue=function(e,t){a.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:t,faxQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:t,faxQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.faxQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.FaxQueueId]&&g.queues[e.FaxQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.FaxQueueId]&&g.queues[e.FaxQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.FaxQueueId]&&(g.queues[e.FaxQueueId].loggedInDb+=1,g.queues[e.FaxQueueId].agents[e.UserId]=e.FaxQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.FaxQueueId]&&0<g.queues[e.FaxQueueId].loggedInDb&&(g.queues[e.FaxQueueId].loggedInDb-=1,delete g.queues[e.FaxQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("fax_queue:save",g.onSave),d.on("userFaxQueue:save",g.onSaveMember),d.on("userFaxQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("fax_queue:save"),d.removeAllListeners("userFaxQueue:remove"),d.removeAllListeners("userFaxQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.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,n.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.fax.realtime.agents");break;case 1:n.go("app.fax.realtime.trunks");break;case 2:n.go("app.fax.realtime.queues");break;case 3:n.go("app.fax.realtime.accounts");break;default:n.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,n,t,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,t=0;t<u.trunks.length;t+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[t].id]))&&_.merge(u.trunks[t],_.pick(u.rpcTrunks[e],p))}function v(e,t,n){0<=t&&_.merge(e[t],_.pick(n,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){t.show(t.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,t){l.go("app.tools.trunks.edit",{id:t.id})},u.onSave=function(e){var t=_.findIndex(u.trunks,["id",e.id]),n=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,t,e),v(u.rpcTrunks,n,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,t){h?n(function(){h=!1}):(t||(f=u.query.page),e!==t&&(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,t){this.info=e,this.license=t}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.deskAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.deskAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="deskAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedDeskAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",limit:10,page:1},b.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDeskAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intDeskAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="DeskAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditDeskAccount=function(e,t){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:t,deskAccounts:b.deskAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDeskAccount=S,b.exportSelectedDeskAccounts=function(){var e=angular.copy(b.selectedDeskAccounts);return b.selectedDeskAccounts=[],e},b.deleteSelectedDeskAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+b.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedDeskAccounts.forEach(function(e){S(e)}),b.selectedDeskAccounts=[]})},b.deselectDeskAccounts=function(){b.selectedDeskAccounts=[]},b.selectAllDeskAccounts=function(){b.selectedDeskAccounts=b.deskAccounts.rows};var A=!0,E=1;function y(e){b.deskAccounts=e||{count:0,rows:[]}}function S(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.deskAccounts.rows,{id:e.id}),b.deskAccounts.count-=1,b.deskAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,n,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,t){o.deskAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(t.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intDeskConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"DeskConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.deskConfiguration.id},o.deskConfiguration).$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.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,t){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.freshdeskAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,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,t){o.freshdeskAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(t.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intFreshdeskConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.freshdeskConfiguration.id},o.freshdeskConfiguration).$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.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,t){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.freshdeskAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="freshdeskAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedFreshdeskAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",limit:10,page:1},b.editstate=function(e,t){n.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getFreshdeskAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intFreshdeskAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="FreshdeskAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditFreshdeskAccount=function(e,t){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:t,freshdeskAccounts:b.freshdeskAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteFreshdeskAccount=S,b.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(b.selectedFreshdeskAccounts);return b.selectedFreshdeskAccounts=[],e},b.deleteSelectedFreshdeskAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+b.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedFreshdeskAccounts.forEach(function(e){S(e)}),b.selectedFreshdeskAccounts=[]})},b.deselectFreshdeskAccounts=function(){b.selectedFreshdeskAccounts=[]},b.selectAllFreshdeskAccounts=function(){b.selectedFreshdeskAccounts=b.freshdeskAccounts.rows};var A=!0,E=1;function y(e){b.freshdeskAccounts=e||{count:0,rows:[]}}function S(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.freshdeskAccounts.rows,{id:e.id}),b.freshdeskAccounts.count-=1,b.freshdeskAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("FreshdeskAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.salesforceAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,i,s,e){var o=this;function r(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 l(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 d(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,t){o.salesforceAccount=e,o.crudPermissions=void 0!==t?t:{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.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,t){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(t.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intSalesforceConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"SalesforceConfiguration deleted!",msg:t.name?t.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(){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()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,t){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.salesforceAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="salesforceAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedSalesforceAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",limit:10,page:1},b.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSalesforceAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intSalesforceAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SalesforceAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSalesforceAccount=function(e,t){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:t,salesforceAccounts:b.salesforceAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSalesforceAccount=S,b.exportSelectedSalesforceAccounts=function(){var e=angular.copy(b.selectedSalesforceAccounts);return b.selectedSalesforceAccounts=[],e},b.deleteSelectedSalesforceAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+b.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSalesforceAccounts.forEach(function(e){S(e)}),b.selectedSalesforceAccounts=[]})},b.deselectSalesforceAccounts=function(){b.selectedSalesforceAccounts=[]},b.selectAllSalesforceAccounts=function(){b.selectedSalesforceAccounts=b.salesforceAccounts.rows};var A=!0,E=1;function y(e){b.salesforceAccounts=e||{count:0,rows:[]}}function S(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.salesforceAccounts.rows,{id:e.id}),b.salesforceAccounts.count-=1,b.salesforceAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("SalesforceAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.sugarcrmAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,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,t){o.sugarcrmAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(t.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intSugarcrmConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.sugarcrmConfiguration.id},o.sugarcrmConfiguration).$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,t){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.sugarcrmAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="sugarcrmAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedSugarcrmAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",limit:10,page:1},b.editstate=function(e,t){n.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSugarcrmAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intSugarcrmAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SugarcrmAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSugarcrmAccount=function(e,t){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:t,sugarcrmAccounts:b.sugarcrmAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSugarcrmAccount=S,b.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(b.selectedSugarcrmAccounts);return b.selectedSugarcrmAccounts=[],e},b.deleteSelectedSugarcrmAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+b.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSugarcrmAccounts.forEach(function(e){S(e)}),b.selectedSugarcrmAccounts=[]})},b.deselectSugarcrmAccounts=function(){b.selectedSugarcrmAccounts=[]},b.selectAllSugarcrmAccounts=function(){b.selectedSugarcrmAccounts=b.sugarcrmAccounts.rows};var A=!0,E=1;function y(e){b.sugarcrmAccounts=e||{count:0,rows:[]}}function S(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.sugarcrmAccounts.rows,{id:e.id}),b.sugarcrmAccounts.count-=1,b.sugarcrmAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("SugarcrmAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.vtigerAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,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,t){o.vtigerAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(t.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intVtigerConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"VtigerConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.vtigerConfiguration.id},o.vtigerConfiguration).$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,t){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.vtigerAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="vtigerAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedVtigerAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",limit:10,page:1},b.editstate=function(e,t){n.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVtigerAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intVtigerAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="VtigerAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVtigerAccount=function(e,t){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:t,vtigerAccounts:b.vtigerAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVtigerAccount=S,b.exportSelectedVtigerAccounts=function(){var e=angular.copy(b.selectedVtigerAccounts);return b.selectedVtigerAccounts=[],e},b.deleteSelectedVtigerAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+b.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVtigerAccounts.forEach(function(e){S(e)}),b.selectedVtigerAccounts=[]})},b.deselectVtigerAccounts=function(){b.selectedVtigerAccounts=[]},b.selectAllVtigerAccounts=function(){b.selectedVtigerAccounts=b.vtigerAccounts.rows};var A=!0,E=1;function y(e){b.vtigerAccounts=e||{count:0,rows:[]}}function S(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.vtigerAccounts.rows,{id:e.id}),b.vtigerAccounts.count-=1,b.vtigerAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("VtigerAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.zendeskAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,n,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,t){o.zendeskAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:t,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(t.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intZendeskConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:t.id}),s.success({title:"ZendeskConfiguration deleted!",msg:t.name?t.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.selectChangedAdvanced=function(){return i.intSalesforceConfiguration.update({id:o.zendeskConfiguration.id},o.zendeskConfiguration).$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.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,t){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.zendeskConfigurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.zendeskAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="zendeskAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedZendeskAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",limit:10,page:1},b.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getZendeskAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intZendeskAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ZendeskAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditZendeskAccount=function(e,t){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:t,zendeskAccounts:b.zendeskAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteZendeskAccount=S,b.exportSelectedZendeskAccounts=function(){var e=angular.copy(b.selectedZendeskAccounts);return b.selectedZendeskAccounts=[],e},b.deleteSelectedZendeskAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+b.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedZendeskAccounts.forEach(function(e){S(e)}),b.selectedZendeskAccounts=[]})},b.deselectZendeskAccounts=function(){b.selectedZendeskAccounts=[]},b.selectAllZendeskAccounts=function(){b.selectedZendeskAccounts=b.zendeskAccounts.rows};var A=!0,E=1;function y(e){b.zendeskAccounts=e||{count:0,rows:[]}}function S(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.zendeskAccounts.rows,{id:e.id}),b.zendeskAccounts.count-=1,b.zendeskAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("ZendeskAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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",serverUrl:n.protocol()+"://"+n.host()+(n.port()?":"+n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.zohoAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,n,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,t){o.zohoAccount=e,o.crudPermissions=void 0!==t?t:{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,t){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:t,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,t){var n=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(t.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){i.intZohoConfiguration.delete({id:t.id}).$promise.then(function(){_.remove(o.configurations,{id:t.id}),s.success({title:"ZohoConfiguration deleted!",msg:t.name?t.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(){return i.intSalesforceConfiguration.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,t){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:t,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,t){var n=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(n).then(function(){r(t)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var t=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(t).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,t){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:t,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,t){var n=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(n).then(function(){l(t)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var t=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(t).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,t){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:t,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,t){var n=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(n).then(function(){d(t)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var t=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(t).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.configurations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=_.find(p.items,{id:e.id});t&&_.merge(t,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 t=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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}).$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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.zohoAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="zohoAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedZohoAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,host,authToken,serverUrl,description",limit:10,page:1},b.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,t){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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getZohoAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.intZohoAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ZohoAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditZohoAccount=function(e,t){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:t,zohoAccounts:b.zohoAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteZohoAccount=S,b.exportSelectedZohoAccounts=function(){var e=angular.copy(b.selectedZohoAccounts);return b.selectedZohoAccounts=[],e},b.deleteSelectedZohoAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+b.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedZohoAccounts.forEach(function(e){S(e)}),b.selectedZohoAccounts=[]})},b.deselectZohoAccounts=function(){b.selectedZohoAccounts=[]},b.selectAllZohoAccounts=function(){b.selectedZohoAccounts=b.zohoAccounts.rows};var A=!0,E=1;function y(e){b.zohoAccounts=e||{count:0,rows:[]}}function S(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.zohoAccounts.rows,{id:e.id}),b.zohoAccounts.count-=1,b.zohoAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.integrations").controller("ZohoAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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},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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.projects,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s){var o=this;o.project={},o.localizationMap=s;var r=new Date;r.setHours(0,0,0,0),o.pickerModel={dateStart:r,dateEnd:null,selectedTemplate:"TD"},o.init=function(e){o.project=e,o.getAnswers()},o.getSummary=function(){return a.jscriptyProject.getSummary({id:o.project.id,dateStart:moment(o.pickerModel.dateStart).format("YYYY-MM-DD HH:mm:ss"),dateEnd:moment(o.pickerModel.dateEnd).format("YYYY-MM-DD HH:mm:ss"),nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var t=[e.buffer],n=new Blob(t,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(n)),a.setAttribute("download","jscriptyProjectSummary_"+o.project.id+".csv"),a.click()}else i.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getAnswers=function(){return o.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:o.project.id,sort:"-createdAt,questionId",dateStart:o.pickerModel.dateStart,dateEnd:o.pickerModel.dateEnd,nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){o.answers={};for(var t=0,n=e.count;t<n;t++)e.rows[t].questionId&&(o.hasIdAnswers=!0,o.answers.hasOwnProperty(e.rows[t].questionId)||(o.answers[e.rows[t].questionId]={question:e.rows[t].question,answers:{},sum:0}),""===e.rows[t].answer&&(e.rows[t].answer="NO_ANSWER"),o.answers[e.rows[t].questionId].answers[e.rows[t].answer]?o.answers[e.rows[t].questionId].answers[e.rows[t].answer]+=1:o.answers[e.rows[t].questionId].answers[e.rows[t].answer]=1,o.answers[e.rows[t].questionId].sum+=1)}}).catch(function(e){i.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","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var t=this;t.project={},t.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},t.init=function(e){t.project=e,_.isObjectLike(e.formData)?t.project.formData=e.formData:t.isJsonString(e.formData)?t.project.formData=JSON.parse(e.formData):t.project.formData={}},t.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,t.$on("mwForm.pageEvents.pageCurrentChanged",function(e,t){if(t.currentPage&&o.project.formData&&o.project.formData.pages)for(var n=0,a=o.project.formData.pages.length;n<a;n++)if(t.currentPage.number<n+1&&o.project.formData.pages[n].elements)for(var i=0,s=o.project.formData.pages[n].elements.length;i<s;i++)"question"===o.project.formData.pages[n].elements[i].type&&o.project.formData.pages[n].elements[i].question&&delete o.responseData[o.project.formData.pages[n].elements[i].question.id]})},o.onSubmit=function(e){var t=a.defer(),n=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(n).then(function(){t.resolve(!0)},function(){t.reject()}),t.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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.project={},c.projectSessions={count:0,rows:[]},c.selectedProjectSessions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},c.init=function(e,t){c.project=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.project.id,c.getProjectSessions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getProjectSessions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.jscriptyProject.getSessions(c.query,p).$promise},c.createOrEditProjectSession=function(e,t){s.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:c.project,session:t,sessions:c.projectSessions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.showQuestionsProjectSession=function(e,n){s.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,t){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:n.id})}]},locals:{project:c.project,session:n}})},c.exportSelectedProjectSessions=function(){var e=angular.copy(c.selectedProjectSessions);return c.selectedProjectSessions=[],e},c.deleteProjectSession=g,c.deleteSelectedProjectSessions=function(e){var t=s.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+c.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedProjectSessions.forEach(function(e){g(e)}),c.selectedProjectSessions=[]})};var m=!0,u=1;function p(e){c.projectSessions=e||{count:0,rows:[]}}function g(e){l.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(c.projectSessions.rows,{id:e.id}),c.projectSessions.count-=1,c.projectSessions.rows.length||c.getProjectSessions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getProjectSessions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,t,n,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,t,n,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=t.protocol()+"://"+t.host(),u.project=c||e.params.project||{},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.clonedialog=function(e,t){n.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{project:e,projects:u.projects?u.projects.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoProjects=function(){e.go("app.jscripty.projects")},u.saveProject=function(){r.jscriptyProject.update({id:u.project.id},u.project).$promise.then(function(){l.success({title:"Project updated!",msg:u.project.name?u.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","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.projects=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="projects",b.listOrder="",b.listOrderAsc=null,b.selectedProjects=[],b.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,description,formData",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,t){n.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{project:e,projects:b.projects?b.projects.rows:[],crudPermissions:b.crudPermissions}})},b.sessionsgoto=function(e,t){n.go("app.jscripty.projects.edit",{id:e.id,tab:3})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getProjects=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.jscriptyProject.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Projects",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditProject=function(e,t){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:t,projects:b.projects.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteProject=S,b.exportSelectedProjects=function(){var e=angular.copy(b.selectedProjects);return b.selectedProjects=[],e},b.deleteSelectedProjects=function(e){var t=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+b.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedProjects.forEach(function(e){S(e)}),b.selectedProjects=[]})},b.deselectProjects=function(){b.selectedProjects=[]},b.selectAllProjects=function(){b.selectedProjects=b.projects.rows};var A=!0,E=1;function y(e){b.projects=e||{count:0,rows:[]}}function S(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(b.projects.rows,{id:e.id}),b.projects.count-=1,b.projects.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("JscriptyProjectsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.mailAccount.MailAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mailAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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 t(e,t){if(r.mailAccountApps.rows.length){var n=r.mailAccountApps.rows[t]?r.mailAccountApps.rows[t]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:n,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[t]=e:r.mailAccountApps.rows.splice(t,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,t=[],n=0;n<r.mailAccountApps.rows.length;n++,0){var a=r.mailAccountApps.rows[n],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,t=_.concat(t,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(t,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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:"1"},{option:"Always",value:"0"}],required:!0,param:0},{title:"Text",name:"text",type:"html",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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.mailAccount=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,n).$promise},r.editMailAccountApp=t,r.editInterval=function(e,t){if(r.mailAccountApps.rows.length){var n=r.mailAccountApps.rows[t]?r.mailAccountApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(t,e,n,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"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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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"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){t.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.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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"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){t.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(t,e,n,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"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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("mail")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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"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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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"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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.mailAccount={},c.mailAccountInteractions={count:0,rows:[]},c.selectedMailAccountInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,UserId,ContactId,MailAccountId,id,Contact.firstName,Owner.name,closedAt,disposition,note,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.mailAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.mailAccount.id,c.getMailAccountInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.mailInteractionDownload=function(s,e,t){return l.mailInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getMailAccountInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.mailAccount.getInteractions(c.query,p).$promise},c.createOrEditMailAccountInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:c.mailAccount,interaction:t,interactions:c.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spymailInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"mail",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedMailAccountInteractions=function(){var e=angular.copy(c.selectedMailAccountInteractions);return c.selectedMailAccountInteractions=[],e},c.deleteMailAccountInteraction=g,c.deleteSelectedMailAccountInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedMailAccountInteractions.forEach(function(e){g(e)}),c.selectedMailAccountInteractions=[]})};var m=!0,u=1;function p(e){c.mailAccountInteractions=e||{count:0,rows:[]}}function g(e){l.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.mailAccountInteractions.rows,{id:e.id}),c.mailAccountInteractions.count-=1,c.mailAccountInteractions.rows.length||c.getMailAccountInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getMailAccountInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.mailAccount={},c.mailAccountMailCannedAnswers={count:0,rows:[]},c.selectedMailAccountMailCannedAnswers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},c.init=function(e,t){c.mailAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.mailAccount.id,c.query.MailAccountId=c.mailAccount.id,c.getMailAccountMailCannedAnswers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getMailAccountMailCannedAnswers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.mailAccount.getAnswers(c.query,p).$promise},c.createOrEditMailAccountMailCannedAnswer=function(e,t){s.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:c.mailAccount,mailCannedAnswer:t,mailCannedAnswers:c.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(c.selectedMailAccountMailCannedAnswers);return c.selectedMailAccountMailCannedAnswers=[],e},c.deleteMailAccountMailCannedAnswer=g,c.deleteSelectedMailAccountMailCannedAnswers=function(e){var t=s.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+c.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),c.selectedMailAccountMailCannedAnswers=[]})};var m=!0,u=1;function p(e){c.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function g(e){l.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(c.mailAccountMailCannedAnswers.rows,{id:e.id}),c.mailAccountMailCannedAnswers.count-=1,c.mailAccountMailCannedAnswers.rows.length||c.getMailAccountMailCannedAnswers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getMailAccountMailCannedAnswers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.mailCannedAnswer.MailAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mailCannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.mailAccount={},c.mailAccountMailDispositions={count:0,rows:[]},c.selectedMailAccountMailDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.mailAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.mailAccount.id,c.query.MailAccountId=c.mailAccount.id,c.getMailAccountMailDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the mailDisposition?").htmlContent("<b>"+(e.name||"mailDisposition")+"</b> will be deleted.").ariaLabel("delete mailDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getMailAccountMailDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.mailAccount.getDispositions(c.query,p).$promise},c.createOrEditMailAccountMailDisposition=function(e,t){s.show({controller:"CreateOrEditMailDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:c.mailAccount,mailDisposition:t,mailDispositions:c.mailAccountMailDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedMailAccountMailDispositions=function(){var e=angular.copy(c.selectedMailAccountMailDispositions);return c.selectedMailAccountMailDispositions=[],e},c.deleteMailAccountMailDisposition=g,c.deleteSelectedMailAccountMailDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected mailDispositions?").htmlContent("<b>"+c.selectedMailAccountMailDispositions.length+" selected</b> will be deleted.").ariaLabel("delete mailDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedMailAccountMailDispositions.forEach(function(e){g(e)}),c.selectedMailAccountMailDispositions=[]})};var m=!0,u=1;function p(e){c.mailAccountMailDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.mailAccountMailDispositions.rows,{id:e.id}),c.mailAccountMailDispositions.count-=1,c.mailAccountMailDispositions.rows.length||c.getMailAccountMailDispositions(),r.success({title:"MailDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getMailAccountMailDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_MAILDISPOSITION",g.mailDisposition=angular.copy(l),g.mailDispositions=r,g.newMailDisposition=!1,g.mailDisposition||(g.mailDisposition={},g.title="MAIL.NEW_MAILDISPOSITION",g.newMailDisposition=!0),t.params.id&&(g.mailDisposition.MailAccountId=t.params.id),g.addNewMailDisposition=function(){g.errors=[],d.disposition.save(g.mailDisposition).$promise.then(function(e){g.mailDispositions.unshift(e.toJSON()),o.success({title:"MailDisposition properly created",msg:g.mailDisposition.name?g.mailDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailDisposition=function(){g.errors=[],d.disposition.update({id:g.mailDisposition.id},g.mailDisposition).$promise.then(function(e){var t=_.find(g.mailDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"MailDisposition properly saved!",msg:g.mailDisposition.name?g.mailDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The mailDisposition will be deleted.").ariaLabel("Delete MailDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.mailDisposition.id}).$promise.then(function(){_.remove(g.mailDispositions,{id:g.mailDisposition.id}),o.success({title:"MailDisposition properly deleted!",msg:(g.mailDisposition.name||"mailDisposition")+" has been deleted!"}),v(g.mailDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailDispositions","mailDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailDispositionDialogController",e)}(),function(){"use strict";function e(n,e,a,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.mailAccount=c||n.params.mailAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=n.params.tab||0,u.gotogoto=function(e,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.mail.realtime.accounts",{})}},u.agentadddialog=function(e,t){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:u.mailAccounts?u.mailAccounts.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailAccounts=function(){n.go("app.mail.mailAccounts")},u.saveMailAccount=function(){r.mailAccount.update({id:u.mailAccount.id},u.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:u.mailAccount.name?u.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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.mailAccount&&(a=_.find(u.lists,{id:Number(u.mailAccount.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.mailAccount&&(a=_.find(u.lists,{id:Number(u.mailAccount.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.mailAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="mailAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedMailAccounts=[],b.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,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b["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"),"")}),b["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"),"")}),b.editstate=function(e,t){n.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:b.crudPermissions})},b.verifysmtpverifysmtp=function(e,t){{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"})}},b.interactionsgoto=function(e,t){n.go("app.mail.mailAccounts.edit",{id:e.id,tab:6})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.mail.realtime.accounts",{})}},b.agentadddialog=function(e,t){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:b.mailAccounts?b.mailAccounts.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getMailAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.mailAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="MailAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMailAccount=function(e,t){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:t,mailAccounts:b.mailAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMailAccount=S,b.exportSelectedMailAccounts=function(){var e=angular.copy(b.selectedMailAccounts);return b.selectedMailAccounts=[],e},b.deleteSelectedMailAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+b.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMailAccounts.forEach(function(e){S(e)}),b.selectedMailAccounts=[]})},b.deselectMailAccounts=function(){b.selectedMailAccounts=[]},b.selectAllMailAccounts=function(){b.selectedMailAccounts=b.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.mailAccount&&(a=_.find(b.lists,{id:Number(b.mailAccount.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.mailAccount&&(a=_.find(b.lists,{id:Number(b.mailAccount.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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 A=!0,E=1;function y(e){b.mailAccounts=e||{count:0,rows:[]}}function S(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(b.mailAccounts.rows,{id:e.id}),b.mailAccounts.count-=1,b.mailAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.mail").controller("MailAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mailQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.startingAllowedItems=angular.copy(l.allowedItems),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MAIL.ALL_TEAMS"),labelSelected:n.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.mailQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="mailQueues",b.listOrder="",b.listOrderAsc=null,b.selectedMailQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:b.mailQueues?b.mailQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:b.mailQueues?b.mailQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.mail.realtime.queues",{})}},b.success=y,b.getMailQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.mailQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="MailQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMailQueue=function(e,t){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:t,mailQueues:b.mailQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMailQueue=S,b.exportSelectedMailQueues=function(){var e=angular.copy(b.selectedMailQueues);return b.selectedMailQueues=[],e},b.deleteSelectedMailQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+b.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMailQueues.forEach(function(e){S(e)}),b.selectedMailQueues=[]})},b.deselectMailQueues=function(){b.selectedMailQueues=[]},b.selectAllMailQueues=function(){b.selectedMailQueues=b.mailQueues.rows};var A=!0,E=1;function y(e){b.mailQueues=e||{count:0,rows:[]}}function S(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.mailQueues.rows,{id:e.id}),b.mailQueues.count-=1,b.mailQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.mail").controller("MailQueuesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mailSubtatuses,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.mailSubtatuses=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="mailSubtatuses",b.listOrder="",b.listOrderAsc=null,b.selectedMailSubstatuses=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:b.mailSubtatuses.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getMailSubstatuses=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.mailSubstatus.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="MailSubstatuses",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMailSubstatus=function(e,t){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:t,mailSubtatuses:b.mailSubtatuses.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMailSubstatus=S,b.exportSelectedMailSubstatuses=function(){var e=angular.copy(b.selectedMailSubstatuses);return b.selectedMailSubstatuses=[],e},b.deleteSelectedMailSubstatuses=function(e){var t=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+b.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMailSubstatuses.forEach(function(e){S(e)}),b.selectedMailSubstatuses=[]})},b.deselectMailSubstatuses=function(){b.selectedMailSubstatuses=[]},b.selectAllMailSubstatuses=function(){b.selectedMailSubstatuses=b.mailSubtatuses.rows};var A=!0,E=1;function y(e){b.mailSubtatuses=e||{count:0,rows:[]}}function S(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(b.mailSubtatuses.rows,{id:e.id}),b.mailSubtatuses.count-=1,b.mailSubtatuses.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,t){p.rpcMailAccounts[t]&&_.merge(e,p.rpcMailAccounts[t])}),_.forIn(p.mailAccounts,function(t,e){var n={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss")};s.mailAccount.getMessages(n).$promise.then(function(e){return e&&(t.in=e.count||0,t.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),n.direction="out",s.mailAccount.getMessages(n).$promise}).then(function(e){e&&(t.out=e.count||0,t.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,t){i.go("app.mail.mailAccounts.edit",{id:t.id,mailAccount:t})},p.verifySmtp=function(e,t){{if(t&&t.id)return s.mailAccount.verifySmtp({id:t.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,t){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 t=0;t<e.rows.length;t++)p.order.push(e.rows[t].id)}g()}e.$watch("vm.query.filter",function(e,t){v?n(function(){v=!1}):(t||(h=p.query.page),e!==t&&(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,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.mailQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].MailQueueId].paused++,g.queues[e[t].rows[n].MailQueueId].loggedInDb++,g.queues[e[t].rows[n].MailQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].MailQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"mail",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.mailQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="MailQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditMailQueue=function(e,t){a.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:t,mailQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:t,mailQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.mailQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.MailQueueId]&&g.queues[e.MailQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.MailQueueId]&&g.queues[e.MailQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.MailQueueId]&&(g.queues[e.MailQueueId].loggedInDb+=1,g.queues[e.MailQueueId].agents[e.UserId]=e.MailQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.MailQueueId]&&0<g.queues[e.MailQueueId].loggedInDb&&(g.queues[e.MailQueueId].loggedInDb-=1,delete g.queues[e.MailQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("mail_queue:save",g.onSave),d.on("userMailQueue:save",g.onSaveMember),d.on("userMailQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("mail_queue:save"),d.removeAllListeners("userMailQueue:remove"),d.removeAllListeners("userMailQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.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,n.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.mail.realtime.agents");break;case 1:n.go("app.mail.realtime.queues");break;case 2:n.go("app.mail.realtime.accounts");break;default:n.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.plugins,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.plugins=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="plugins",b.listOrder="",b.listOrderAsc=null,b.selectedPlugins=[],b.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"name",limit:10,page:1},b.installing=!1,b.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"),"")}),b.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){b.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})});b.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(){b.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){b.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})}},b.editstate=function(e,t){n.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:b.crudPermissions})},b.stopplugin=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){var n;n=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var t=_.find(e.rows,{name:n.scriptName});if(!t)throw new Error("No corresponding process found");m.pm2.update({id:t.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){b.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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")})},b.restartplugin=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){var n;n=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var t=_.find(e.rows,{name:n.scriptName});if(!t)throw new Error("No corresponding process found");m.pm2.update({id:t.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){b.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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")})},b.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},b.uninstallplugin=function(e,t){var n=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){!function(n){"script"===n.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var t=_.find(e.rows,{name:n.scriptName});if(!t)throw new Error("No corresponding process found");m.pm2.delete({id:t.pm_id,name:n.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()})});n.active=!1,m.plugin.update({id:n.id},n).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:n.name?n.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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")})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getPlugins=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.plugin.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Plugins",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditPlugin=function(e,t){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:t,plugins:b.plugins.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deletePlugin=S,b.exportSelectedPlugins=function(){var e=angular.copy(b.selectedPlugins);return b.selectedPlugins=[],e},b.deleteSelectedPlugins=function(e){var t=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+b.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedPlugins.forEach(function(e){S(e)}),b.selectedPlugins=[]})},b.deselectPlugins=function(){b.selectedPlugins=[]},b.selectAllPlugins=function(){b.selectedPlugins=b.plugins.rows},b.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:b.plugins.rows}})};var A=!0,E=1;function y(e){b.plugins=e||{count:0,rows:[]}}function S(n){n.active&&"script"==n.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 t=_.find(e.rows,{name:n.scriptName});t?m.pm2.delete({id:t.pm_id,name:n.scriptName}).$promise:console.log("No '%s' process found",n.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:n.id}).$promise.then(function(){_.remove(b.plugins.rows,{id:n.id}),b.plugins.count-=1,b.plugins.rows.length||b.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,t,n,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 t=["zip"];if(!_.includes(t,e.getExtension()))return n.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(e.size>l)return n.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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result}}})},o.uploadError=function(e,t){o.ngFlow.flow.cancel(),n.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",n.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){t.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.ivrCampaigns,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(g.trunks,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});g.trunks=t})}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||[],g.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",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||[],g.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++){_.some(t,{resourceId:g.projects[i].id})?(g.projects[i].canSelect=!0,n.push(g.projects[i])):a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,n.push(g.projects[i]))}g.projects=n})}else{var n=[],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,n.push(g.projects[i]));g.projects=n}}).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||[],g.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],g.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++){_.some(t,{resourceId:g.interval[i].id})?(g.interval[i].canSelect=!0,n.push(g.interval[i])):a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,n.push(g.interval[i]))}g.interval=n})}else{var n=[],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,n.push(g.interval[i]));g.interval=n}}).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,t,n,o,r,l){var d=this;function c(){return a(function(n,t){return a(function(t,n){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:d.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return d.allowedItems=_.map(t,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 t=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];d.selectedItems=_.map(t,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"),n()}).catch(function(e){t(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=t,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={readOnly:!d.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,t){var n=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.ivrCampaign={},c.ivrCampaignHopperBlacks={count:0,rows:[]},c.selectedIvrCampaignHopperBlacks=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},c.init=function(e,t){c.ivrCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.ivrCampaign.id,c.query.CampaignId=c.ivrCampaign.id,c.getIvrCampaignHopperBlacks()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIvrCampaignHopperBlacks=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.campaign.getHopperBlacks(c.query,p).$promise},c.createOrEditIvrCampaignHopperBlack=function(e,t){s.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:c.ivrCampaign,hopperBlack:t,hopperBlacks:c.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(c.selectedIvrCampaignHopperBlacks);return c.selectedIvrCampaignHopperBlacks=[],e},c.deleteIvrCampaignHopperBlack=g,c.deleteSelectedIvrCampaignHopperBlacks=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+c.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),c.selectedIvrCampaignHopperBlacks=[]})};var m=!0,u=1;function p(e){c.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function g(e){l.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(c.ivrCampaignHopperBlacks.rows,{id:e.id}),c.ivrCampaignHopperBlacks.count-=1,c.ivrCampaignHopperBlacks.rows.length||c.getIvrCampaignHopperBlacks(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIvrCampaignHopperBlacks())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.contacts={},c.ivrCampaign={},c.ivrCampaignHopperFinals={count:0,rows:[]},c.selectedIvrCampaignHopperFinals=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},c.init=function(e,t){c.ivrCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.ivrCampaign.id,c.query.CampaignId=c.ivrCampaign.id,c.getIvrCampaignHopperFinals()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIvrCampaignHopperFinals=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.campaign.getHopperFinals(c.query,p).$promise},c.createOrEditIvrCampaignHopperFinal=function(e,t){s.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:c.ivrCampaign,hopperFinal:t,hopperFinals:c.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(c.selectedIvrCampaignHopperFinals);return c.selectedIvrCampaignHopperFinals=[],e},c.deleteIvrCampaignHopperFinal=g,c.deleteSelectedIvrCampaignHopperFinals=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+c.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),c.selectedIvrCampaignHopperFinals=[]})},c.moveIvrCampaignHopperFinal=v,c.moveContactsIvrCampaignHopperFinal=function(e){l.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:c.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?r.info({title:"Restored Contacts",msg:"0"}):r.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},c.countContactsIvrCampaignHopperFinal=function(e){l.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(c.contacts,e[0])}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},c.moveConfirm=function(e,t){var n=s.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){v(e)},function(){console.log("CANCEL")})},c.moveSelectedIvrCampaignHopperFinals=function(e){var t=s.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");s.show(t).then(function(){c.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),c.selectedIvrCampaignHopperFinals=[]})};var m=!0,u=1;function p(e){c.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function g(e){l.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(c.ivrCampaignHopperFinals.rows,{id:e.id}),c.ivrCampaignHopperFinals.count-=1,c.ivrCampaignHopperFinals.rows.length||c.getIvrCampaignHopperFinals(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.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){l.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){r.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var t,n;"Not Found"===e.data?l.cmHopper.save((t=a,n={},n.phone=t.calleridnum,n.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),n.countbusyretry=0,n.countcongestionretry=0,n.countnoanswerretry=0,n.countglobal=0,n.ContactId=t.ContactId,n.ListId=t.ListId,n.UserId=t.deleted?null:t.UserId,n.VoiceQueueId=t.VoiceQueueId,n.CampaignId=t.CampaignId,n.priority=t.recallme?3:2,n.recallme=!!t.recallme,n)).$promise.then(function(e){var t,n;r.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&l.cmHopperHistory.save(((n={}).calleridnum=(t=a).calleridnum,n.calleridname=t.calleridname,n.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),n.countbusyretry=t.countbusyretry,n.countcongestionretry=t.countcongestionretry,n.countnoanswerretry=t.countnoanswerretry,n.countglobal=t.countglobal,n.ContactId=t.ContactId,n.ListId=t.ListId,n.UserId=d.getCurrentUser().id,n.VoiceQueueId=t.VoiceQueueId,n.CampaignId=t.CampaignId,n.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),n.edited=!0,n.state=25,n.statedesc="Restored",n.campaign=t.campaign,n.campaigntype=t.VoiceQueueId?"queue":"ivr",n))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):r.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIvrCampaignHopperFinals())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.ivrCampaign={},c.ivrCampaignHopperHistories={count:0,rows:[]},c.selectedIvrCampaignHopperHistories=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},c.init=function(e,t){c.ivrCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.ivrCampaign.id,c.query.CampaignId=c.ivrCampaign.id,c.getIvrCampaignHopperHistories()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIvrCampaignHopperHistories=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.campaign.getHopperHistories(c.query,p).$promise},c.createOrEditIvrCampaignHopperHistory=function(e,t){s.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:c.ivrCampaign,hopperHistory:t,hopperHistories:c.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(c.selectedIvrCampaignHopperHistories);return c.selectedIvrCampaignHopperHistories=[],e},c.deleteIvrCampaignHopperHistory=g,c.deleteSelectedIvrCampaignHopperHistories=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+c.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),c.selectedIvrCampaignHopperHistories=[]})};var m=!0,u=1;function p(e){c.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function g(e){l.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(c.ivrCampaignHopperHistories.rows,{id:e.id}),c.ivrCampaignHopperHistories.count-=1,c.ivrCampaignHopperHistories.rows.length||c.getIvrCampaignHopperHistories(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIvrCampaignHopperHistories())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.ivrCampaign={},c.ivrCampaignHoppers={count:0,rows:[]},c.selectedIvrCampaignHoppers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},c.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"),"")}),c.init=function(e,t){c.ivrCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.ivrCampaign.id,c.query.CampaignId=c.ivrCampaign.id,c.getIvrCampaignHoppers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIvrCampaignHoppers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.campaign.getHoppers(c.query,p).$promise},c.createOrEditIvrCampaignHopper=function(e,t){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:c.ivrCampaign,hopper:t,hoppers:c.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(c.selectedIvrCampaignHoppers);return c.selectedIvrCampaignHoppers=[],e},c.deleteIvrCampaignHopper=g,c.deleteSelectedIvrCampaignHoppers=function(e){var t=s.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+c.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),c.selectedIvrCampaignHoppers=[]})},d.hasRole("admin")?l.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){c.agents=e.rows||[],c.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){c.agents=e.rows||[],c.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(c.agents,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});c.agents=t})}else c.agents=[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.ivrCampaignHoppers=e||{count:0,rows:[]}}function g(e){l.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(c.ivrCampaignHoppers.rows,{id:e.id}),c.ivrCampaignHoppers.count-=1,c.ivrCampaignHoppers.rows.length||c.getIvrCampaignHoppers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIvrCampaignHoppers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.hopper.CampaignId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 n,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){n=_.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:n,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 t=_.find(g.hoppers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[],g.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(g.agents,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});g.agents=t})}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(n,a){var i=this;i.ivrCampaign={},i.init=function(t){i.ivrCampaign=t,n.cmHopper.get({limit:0,CampaignId:t.id}).$promise.then(function(e){return i.total=e.count||0,n.cmHopper.get({limit:0,CampaignId:t.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,n.cmHopperFinal.get({limit:0,CampaignId:t.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,t,n,o,r,l){var d=this;function c(){return a(function(n,t){return a(function(t,n){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:d.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return d.allowedItems=_.map(t,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 t=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];d.selectedItems=_.map(t,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"),n()}).catch(function(e){t(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=t,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={readOnly:!d.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,t){var n=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,a,i,s,n,o,r){var l=this;function d(){t.hide()}function c(e,t){var n=t.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:n}).$promise.then(function(){return i.campaign.addLists({id:e,ids:n,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+t.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=n||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,t){return-1<t.indexOf(e)},l.toggle=function(e,t){var n=t.indexOf(e);-1<n?t.splice(n,1):t.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,t){for(var n=0;n<l.selected.length;n+=1)c(s.id,l.selected[n]);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(n,e,i,s,a,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||n.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=n.params.tab||0,u.clonedialog=function(e,t){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,t){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,t){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(t,n){r.campaign.getLists({id:t.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(n).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,t,n;e=u.ivrCampaign.id,t=a.rows[0],n=t.id,r.campaign.removeLists({id:e,ids:n}).$promise.then(function(){return r.campaign.addLists({id:e,ids:n,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+t.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:n,clickOutsideToClose:!1,locals:{ivrCampaign:t,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,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){n.go("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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(u.trunks,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});u.trunks=t})}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||[],u.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",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||[],u.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++){_.some(t,{resourceId:u.projects[i].id})?(u.projects[i].canSelect=!0,n.push(u.projects[i])):a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,n.push(u.projects[i]))}u.projects=n})}else{var n=[],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,n.push(u.projects[i]));u.projects=n}}).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||[],u.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],u.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++){_.some(t,{resourceId:u.interval[i].id})?(u.interval[i].canSelect=!0,n.push(u.interval[i])):a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,n.push(u.interval[i]))}u.interval=n})}else{var n=[],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,n.push(u.interval[i]));u.interval=n}}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.ivrCampaigns=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="ivrCampaigns",b.listOrder="",b.listOrderAsc=null,b.selectedIvrCampaigns=[],b.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,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:b.ivrCampaigns?b.ivrCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.listadddialog=function(e,t){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:b.ivrCampaigns?b.ivrCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.blacklistadddialog=function(e,t){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:b.ivrCampaigns?b.ivrCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.motiondialer.realtime.ivr_campaigns",{})}},b.success=y,b.getIvrCampaigns=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.campaign.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="IvrCampaigns",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditIvrCampaign=function(e,t){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:t,ivrCampaigns:b.ivrCampaigns.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteIvrCampaign=S,b.exportSelectedIvrCampaigns=function(){var e=angular.copy(b.selectedIvrCampaigns);return b.selectedIvrCampaigns=[],e},b.deleteSelectedIvrCampaigns=function(e){var t=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+b.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedIvrCampaigns.forEach(function(e){S(e)}),b.selectedIvrCampaigns=[]})},b.deselectIvrCampaigns=function(){b.selectedIvrCampaigns=[]},b.selectAllIvrCampaigns=function(){b.selectedIvrCampaigns=b.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(b.trunks,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});b.trunks=t})}else b.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){b.projects=e.rows||[],b.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.projects=e.rows||[],b.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],b.ivrCampaigns.rows.forEach(function(e){var t=_.find(b.projects,{id:Number(e.SquareProjectId)});a.push(t)});for(var i=0;i<b.projects.length;i++){if(_.some(t,{resourceId:b.projects[i].id}))b.projects[i].canSelect=!0,n.push(b.projects[i]);else _.some(a,{id:b.projects[i].id})&&(b.projects[i].canSelect=!1,n.push(b.projects[i]))}b.projects=n})}else{var n=[],a=[];b.ivrCampaigns.rows.forEach(function(e){var t=_.find(b.projects,{id:Number(e.SquareProjectId)});a.push(t)});for(var i=0;i<b.projects.length;i++){_.some(a,{id:b.projects[i].id})&&(b.projects[i].canSelect=!1,n.push(b.projects[i]))}b.projects=n}}).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){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.ivrCampaign&&(a=_.find(b.interval,{id:Number(b.ivrCampaign.IntervalId)}));for(var i=0;i<b.interval.length;i++){_.some(t,{resourceId:b.interval[i].id})?(b.interval[i].canSelect=!0,n.push(b.interval[i])):a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]))}b.interval=n})}else{var n=[],a=null;b.ivrCampaign&&(a=_.find(b.interval,{id:Number(b.ivrCampaign.IntervalId)}));for(var i=0;i<b.interval.length;i++)a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]));b.interval=n}}).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 A=!0,E=1;function y(e){b.ivrCampaigns=e||{count:0,rows:[]}}function S(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(b.ivrCampaigns.rows,{id:e.id}),b.ivrCampaigns.count-=1,b.ivrCampaigns.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.motiondialer").controller("IvrCampaignsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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},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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.queueCampaigns,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],g.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++){_.some(t,{resourceId:g.trunks[i].id})?(g.trunks[i].canSelect=!0,n.push(g.trunks[i])):a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,n.push(g.trunks[i]))}g.trunks=n})}else{var n=[],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,n.push(g.trunks[i]));g.trunks=n}}).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||[],g.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],g.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++){_.some(t,{resourceId:g.interval[i].id})?(g.interval[i].canSelect=!0,n.push(g.interval[i])):a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,n.push(g.interval[i]))}g.interval=n})}else{var n=[],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,n.push(g.interval[i]));g.interval=n}}).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,t,n,i,s,o,r){var c=this;function m(){return l(function(n,t){return l(function(t,n){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=t,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(n,t){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});return(n=e,l(function(e,t){_.isEmpty(n)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else{for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!i,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,t){t?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var n=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r,l){var d=this;function c(){return a(function(n,t){return a(function(t,n){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:d.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return d.allowedItems=_.map(t,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 t=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];d.selectedItems=_.map(t,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"),n()}).catch(function(e){t(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=t,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={readOnly:!d.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,t){var n=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.queueCampaign={},c.queueCampaignHopperBlacks={count:0,rows:[]},c.selectedQueueCampaignHopperBlacks=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},c.init=function(e,t){c.queueCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.queueCampaign.id,c.query.VoiceQueueId=c.queueCampaign.id,c.getQueueCampaignHopperBlacks()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getQueueCampaignHopperBlacks=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceQueue.getHopperBlacks(c.query,p).$promise},c.createOrEditQueueCampaignHopperBlack=function(e,t){s.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:c.queueCampaign,hopperBlack:t,hopperBlacks:c.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(c.selectedQueueCampaignHopperBlacks);return c.selectedQueueCampaignHopperBlacks=[],e},c.deleteQueueCampaignHopperBlack=g,c.deleteSelectedQueueCampaignHopperBlacks=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+c.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),c.selectedQueueCampaignHopperBlacks=[]})};var m=!0,u=1;function p(e){c.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function g(e){l.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(c.queueCampaignHopperBlacks.rows,{id:e.id}),c.queueCampaignHopperBlacks.count-=1,c.queueCampaignHopperBlacks.rows.length||c.getQueueCampaignHopperBlacks(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getQueueCampaignHopperBlacks())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.contacts={},c.queueCampaign={},c.queueCampaignHopperFinals={count:0,rows:[]},c.selectedQueueCampaignHopperFinals=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},c.init=function(e,t){c.queueCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.queueCampaign.id,c.query.VoiceQueueId=c.queueCampaign.id,c.getQueueCampaignHopperFinals()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getQueueCampaignHopperFinals=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceQueue.getHopperFinals(c.query,p).$promise},c.createOrEditQueueCampaignHopperFinal=function(e,t){s.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:c.queueCampaign,hopperFinal:t,hopperFinals:c.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(c.selectedQueueCampaignHopperFinals);return c.selectedQueueCampaignHopperFinals=[],e},c.deleteQueueCampaignHopperFinal=g,c.deleteSelectedQueueCampaignHopperFinals=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+c.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),c.selectedQueueCampaignHopperFinals=[]})},c.moveQueueCampaignHopperFinal=v,c.moveContactsQueueCampaignHopperFinal=function(e){l.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:c.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?r.info({title:"Restored Contacts",msg:"0"}):r.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},c.countContactsQueueCampaignHopperFinal=function(e){l.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(c.contacts,e[0])}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},c.moveConfirm=function(e,t){var n=s.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){v(e)},function(){console.log("CANCEL")})},c.moveSelectedQueueCampaignHopperFinals=function(e){var t=s.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");s.show(t).then(function(){c.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),c.selectedQueueCampaignHopperFinals=[]})};var m=!0,u=1;function p(e){c.queueCampaignHopperFinals=e||{count:0,rows:[]}}function g(e){l.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(c.queueCampaignHopperFinals.rows,{id:e.id}),c.queueCampaignHopperFinals.count-=1,c.queueCampaignHopperFinals.rows.length||c.getQueueCampaignHopperFinals(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.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){l.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){r.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var t,n;"Not Found"===e.data?l.cmHopper.save((t=a,n={},n.phone=t.calleridnum,n.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),n.countbusyretry=0,n.countcongestionretry=0,n.countnoanswerretry=0,n.countglobal=0,n.ContactId=t.ContactId,n.ListId=t.ListId,n.UserId=t.deleted?null:t.UserId,n.VoiceQueueId=t.VoiceQueueId,n.CampaignId=t.CampaignId,n.priority=t.recallme?3:2,n.recallme=!!t.recallme,n)).$promise.then(function(e){var t,n;r.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&l.cmHopperHistory.save(((n={}).calleridnum=(t=a).calleridnum,n.calleridname=t.calleridname,n.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),n.countbusyretry=t.countbusyretry,n.countcongestionretry=t.countcongestionretry,n.countnoanswerretry=t.countnoanswerretry,n.countglobal=t.countglobal,n.ContactId=t.ContactId,n.ListId=t.ListId,n.UserId=d.getCurrentUser().id,n.VoiceQueueId=t.VoiceQueueId,n.CampaignId=t.CampaignId,n.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),n.edited=!0,n.state=25,n.statedesc="Restored",n.campaign=t.campaign,n.campaigntype=t.VoiceQueueId?"queue":"ivr",n))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):r.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getQueueCampaignHopperFinals())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.queueCampaign={},c.queueCampaignHopperHistories={count:0,rows:[]},c.selectedQueueCampaignHopperHistories=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},c.init=function(e,t){c.queueCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.queueCampaign.id,c.query.VoiceQueueId=c.queueCampaign.id,c.getQueueCampaignHopperHistories()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getQueueCampaignHopperHistories=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceQueue.getHopperHistories(c.query,p).$promise},c.createOrEditQueueCampaignHopperHistory=function(e,t){s.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:c.queueCampaign,hopperHistory:t,hopperHistories:c.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(c.selectedQueueCampaignHopperHistories);return c.selectedQueueCampaignHopperHistories=[],e},c.deleteQueueCampaignHopperHistory=g,c.deleteSelectedQueueCampaignHopperHistories=function(e){var t=s.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+c.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),c.selectedQueueCampaignHopperHistories=[]})};var m=!0,u=1;function p(e){c.queueCampaignHopperHistories=e||{count:0,rows:[]}}function g(e){l.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(c.queueCampaignHopperHistories.rows,{id:e.id}),c.queueCampaignHopperHistories.count-=1,c.queueCampaignHopperHistories.rows.length||c.getQueueCampaignHopperHistories(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getQueueCampaignHopperHistories())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.queueCampaign={},c.queueCampaignHoppers={count:0,rows:[]},c.selectedQueueCampaignHoppers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},c.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"),"")}),c.init=function(e,t){c.queueCampaign=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.queueCampaign.id,c.query.VoiceQueueId=c.queueCampaign.id,c.getQueueCampaignHoppers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getQueueCampaignHoppers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceQueue.getHoppers(c.query,p).$promise},c.createOrEditQueueCampaignHopper=function(e,t){s.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:c.queueCampaign,hopper:t,hoppers:c.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(c.selectedQueueCampaignHoppers);return c.selectedQueueCampaignHoppers=[],e},c.deleteQueueCampaignHopper=g,c.deleteSelectedQueueCampaignHoppers=function(e){var t=s.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+c.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),c.selectedQueueCampaignHoppers=[]})},d.hasRole("admin")?l.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){c.agents=e.rows||[],c.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){c.agents=e.rows||[],c.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.queueCampaign&&(a=_.find(c.agents,{id:Number(c.queueCampaign.UserId)}));for(var i=0;i<c.agents.length;i++){_.some(t,{resourceId:c.agents[i].id})?(c.agents[i].canSelect=!0,n.push(c.agents[i])):a&&c.agents[i].id===a.id&&(c.agents[i].canSelect=!1,n.push(c.agents[i]))}c.agents=n})}else{var n=[],a=null;c.queueCampaign&&(a=_.find(c.agents,{id:Number(c.queueCampaign.UserId)}));for(var i=0;i<c.agents.length;i++)a&&c.agents[i].id===a.id&&(c.agents[i].canSelect=!1,n.push(c.agents[i]));c.agents=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.queueCampaignHoppers=e||{count:0,rows:[]}}function g(e){l.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(c.queueCampaignHoppers.rows,{id:e.id}),c.queueCampaignHoppers.count-=1,c.queueCampaignHoppers.rows.length||c.getQueueCampaignHoppers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getQueueCampaignHoppers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.hopper.VoiceQueueId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 n,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){n=_.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:n,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 t=_.find(g.hoppers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[],g.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++){_.some(t,{resourceId:g.agents[i].id})?(g.agents[i].canSelect=!0,n.push(g.agents[i])):a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,n.push(g.agents[i]))}g.agents=n})}else{var n=[],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,n.push(g.agents[i]));g.agents=n}}).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(n,a){var i=this;i.queueCampaign={},i.init=function(t){i.queueCampaign=t,n.cmHopper.get({limit:0,VoiceQueueId:t.id}).$promise.then(function(e){return i.total=e.count||0,n.cmHopper.get({limit:0,VoiceQueueId:t.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,n.cmHopperFinal.get({limit:0,VoiceQueueId:t.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,t,n,o,r,l){var d=this;function c(){return a(function(n,t){return a(function(t,n){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:d.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return d.allowedItems=_.map(t,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 t=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];d.selectedItems=_.map(t,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"),n()}).catch(function(e){t(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=t,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={readOnly:!d.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,t){var n=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,a,i,s,n,o,r){var l=this;function d(){t.hide()}function c(e,t){var n=t.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:n}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:n,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+t.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=n||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,t){return-1<t.indexOf(e)},l.toggle=function(e,t){var n=t.indexOf(e);-1<n?t.splice(n,1):t.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,t){for(var n=0;n<l.selected.length;n+=1)c(s.id,l.selected[n]);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,l,a,d,t,n,i,s){var c=this;function o(){return l(function(n,t){return l(function(t,n){return d.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],i.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,function(e){return _.find(c.items,{id:i.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.items.forEach(function(e){var t=_.find(c.allowedItems,{id:e.id});i.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){return d.voiceQueue.getTeams({id:c.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){return _.find(c.items,{id:e.id})}),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=i.getCurrentUser(),c.queueCampaign=t,c.crudPermissions=s,c.penalty=0,c.items=[],c.allowedItems=[],c.selectedItems=[],c.addedItems=[],c.removedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:n.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,t){t?c.removedItems=_.unionBy(e,c.removedItems,"id"):(e.forEach(function(e){e.penalty="penalty "+c.penalty}),c.addedItems=_.unionBy(e,c.addedItems,"id")),c.pendingChanges=!0}},c.onInit=function(){return i.hasRole("admin")?o().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(function(n,t){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(e)})}).then(function(e){return c.section=e,o()}).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()})})},c.saveTeams=function(){var e=c.removedItems,t=c.addedItems;return(n=e,l(function(e,t){_.isEmpty(n)?e():d.voiceQueue.removeTeams({id:c.queueCampaign.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else{for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.voiceQueue.addTeams({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty ")}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(e)})}});var r}).then(function(){c.pendingChanges=!1,c.addedItems=[],c.removedItems=[],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 n},c.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(n,e,i,s,a,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||n.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=n.params.tab||0,u.clonedialog=function(e,t){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,t){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,t){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,t){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(t,n){r.voiceQueue.getLists({id:t.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(n).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,t,n;e=u.queueCampaign.id,t=a.rows[0],n=t.id,r.voiceQueue.removeLists({id:e,ids:n}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:n,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+t.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:n,clickOutsideToClose:!1,locals:{queueCampaign:t,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,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){n.go("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||[],u.musiconholds.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",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||[],u.musiconholds.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.queueCampaign&&(a=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold}));for(var i=0;i<u.musiconholds.length;i++){_.some(t,{resourceId:u.musiconholds[i].id})?(u.musiconholds[i].canSelect=!0,n.push(u.musiconholds[i])):a&&u.musiconholds[i].id===a.id&&(u.musiconholds[i].canSelect=!1,n.push(u.musiconholds[i]))}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[],u.musiconholds.forEach(function(e){e.canSelect=!0})})}).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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",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||[],u.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++){_.some(t,{resourceId:u.trunks[i].id})?(u.trunks[i].canSelect=!0,n.push(u.trunks[i])):a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,n.push(u.trunks[i]))}u.trunks=n})}else{var n=[],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,n.push(u.trunks[i]));u.trunks=n}}).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||[],u.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",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||[],u.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++){_.some(t,{resourceId:u.projects[i].id})?(u.projects[i].canSelect=!0,n.push(u.projects[i])):a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,n.push(u.projects[i]))}u.projects=n})}else{var n=[],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,n.push(u.projects[i]));u.projects=n}}).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||[],u.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",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||[],u.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++){_.some(t,{resourceId:u.interval[i].id})?(u.interval[i].canSelect=!0,n.push(u.interval[i])):a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,n.push(u.interval[i]))}u.interval=n})}else{var n=[],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,n.push(u.interval[i]));u.interval=n}}).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","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.queueCampaigns=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="queueCampaigns",b.listOrder="",b.listOrderAsc=null,b.selectedQueueCampaigns=[],b.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,description",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},b.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"),"")}),b.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.editstate=function(e,t){n.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.listadddialog=function(e,t){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.blacklistadddialog=function(e,t){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.teamadddialog=function(e,t){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:b.queueCampaigns?b.queueCampaigns.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.motiondialer.realtime.queues",{})}},b.success=y,b.getQueueCampaigns=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="QueueCampaigns",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditQueueCampaign=function(e,t){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:t,queueCampaigns:b.queueCampaigns.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteQueueCampaign=S,b.exportSelectedQueueCampaigns=function(){var e=angular.copy(b.selectedQueueCampaigns);return b.selectedQueueCampaigns=[],e},b.deleteSelectedQueueCampaigns=function(e){var t=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+b.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedQueueCampaigns.forEach(function(e){S(e)}),b.selectedQueueCampaigns=[]})},b.deselectQueueCampaigns=function(){b.selectedQueueCampaigns=[]},b.selectAllQueueCampaigns=function(){b.selectedQueueCampaigns=b.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.trunks=e.rows||[],b.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],b.queueCampaigns.rows.forEach(function(e){var t=_.find(b.trunks,{id:Number(e.TrunkId)});a.push(t)});for(var i=0;i<b.trunks.length;i++){if(_.some(t,{resourceId:b.trunks[i].id}))b.trunks[i].canSelect=!0,n.push(b.trunks[i]);else _.some(a,{id:b.trunks[i].id})&&(b.trunks[i].canSelect=!1,n.push(b.trunks[i]))}b.trunks=n})}else{var n=[],a=[];b.queueCampaigns.rows.forEach(function(e){var t=_.find(b.trunks,{id:Number(e.TrunkId)});a.push(t)});for(var i=0;i<b.trunks.length;i++){_.some(a,{id:b.trunks[i].id})&&(b.trunks[i].canSelect=!1,n.push(b.trunks[i]))}b.trunks=n}}).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){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){b.interval=e.rows||[],b.interval.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.queueCampaign&&(a=_.find(b.interval,{id:Number(b.queueCampaign.IntervalId)}));for(var i=0;i<b.interval.length;i++){_.some(t,{resourceId:b.interval[i].id})?(b.interval[i].canSelect=!0,n.push(b.interval[i])):a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]))}b.interval=n})}else{var n=[],a=null;b.queueCampaign&&(a=_.find(b.interval,{id:Number(b.queueCampaign.IntervalId)}));for(var i=0;i<b.interval.length;i++)a&&b.interval[i].id===a.id&&(b.interval[i].canSelect=!1,n.push(b.interval[i]));b.interval=n}}).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 A=!0,E=1;function y(e){b.queueCampaigns=e||{count:0,rows:[]}}function S(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.queueCampaigns.rows,{id:e.id}),b.queueCampaigns.count-=1,b.queueCampaigns.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=!0;function f(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.contacts:"+v.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(v.query=_.merge(e.query,_.omit(v.query,["sort","limit","page"])),v.query=_.omit(v.query,"filter")),d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queues=e||{count:0,rows:[]},v.queuesMap=_.mapValues(_.keyBy(v.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){v.getContacts()}):o.userProfile.getResources({id:v.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){v.queues=e||{count:0,rows:[]},v.queuesMap=_.mapValues(_.keyBy(v.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){v.getContacts()})}function b(e){v.contacts=e||{count:0,rows:[]},h=!1,v.refresh=!0}v.showTooltip=!1,v.refresh=!0,v.disable=[],v.agents=p||[],v.currentUser=d.getCurrentUser(),v.localizationMap=u,v.pickerModel={dateStart:null,dateEnd:null},v.queues={},v.contacts={count:0,rows:[]},v.dispositions=g,v.userProfile=r,v.userProfileSection=l&&1==l.count?l.rows[0]:null,v.crudPermissions=d.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},v.clearAll=function(){v.query.dateStart=void 0,v.query.dateEnd=void 0,v.pickerModel={dateStart:null,dateEnd:null},v.getContacts()},v.getContacts=function(){v.refresh=!1,v.query.dateStart=void 0,v.query.dateEnd=void 0,v.pickerModel.dateStart&&!h&&(v.query.dateStart=v.pickerModel.dateStart,v.query.dateEnd=v.pickerModel.dateEnd);v.query.queue=v.query.queue,v.query.offset=(v.query.page-1)*v.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.contacts:"+v.currentUser.id,JSON.stringify({query:_.omit(v.query,"queue")})),v.promise=o.voiceQueueReport.getVoiceQueuesReport(v.query,b).$promise},v.refreshContacts=function(){v.showTooltip=!1,v.getContacts()},v.onInit=f,v.assignedA=function(e,t){e&&(v.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:t?t.name:null,assigned:!!t}).$promise.catch(function(e){console.log(e)}).finally(function(){v.disable[e.id]=!1}))},v.disposed=function(e,t){e&&o.voiceQueueReport.update({id:e.id,disposition:t||null}).$promise.catch(function(e){console.log(e)})},v.onSavevoiceQueueReport=function(e){e&&v.queuesMap&&"outbound"===e.type&&v.queuesMap[e.queue]&&(v.showTooltip=!0)},v.onUpdatevoiceQueueReport=function(e){if(e){var t=_.findIndex(v.contacts.rows,["id",e.id]);0<=t&&_.merge(v.contacts.rows[t],e)}},c.onWithoutApply("voiceQueueReport:save",v.onSavevoiceQueueReport),c.on("voiceQueueReport:update",v.onUpdatevoiceQueueReport),f();var A=!0,E=1;e.$watch("vm.query.filter",function(e,t){A?n(function(){A=!1}):(t||(E=v.query.page),e!==t&&(v.query.page=1),e||(v.query.page=E),v.getContacts())}),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","dateFilterLocalizationFactory","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,i,t,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,t){u.rpcCampaigns[t]&&_.merge(e,_.pick(u.rpcCampaigns[t],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,t){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:t,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=t(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,t){v?n(function(){v=!1}):(t||(h=u.query.page),e!==t&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&t.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,t,a,n,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.agents=n||{count:0,rows:[]},p.queues=i?_.keyBy(i.rows?i.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=s?_.keyBy(s.rows?_.filter(s.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.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,t){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[t]=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(t){return o.rpc.getVoiceQueuesChannelHangup({uniqueid:t}).$promise.then(function(e){d.success({title:"Channel "+t+" 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(t,e,n){return o.rpc.getVoiceQueuesChannelRedirect({uniqueid:t,exten:e,context:n}).$promise.then(function(e){d.success({title:"Channel "+t+" 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,t){var n=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(n).then(function(e){return o.rpc.getVoiceQueuesChannelRedirect({uniqueid:t,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+t+" properly redirect!",msg:e.message||""})}).catch(function(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,n,t,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,t){c.rpcQueues[t]&&_.merge(e,_.pick(c.rpcQueues[t],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="MotionDialerQueues",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=t(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,t){p?n(function(){p=!1}):(t||(g=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&t.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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.voiceQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].VoiceQueueId].paused++,g.queues[e[t].rows[n].VoiceQueueId].loggedInDb++,g.queues[e[t].rows[n].VoiceQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].VoiceQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"outbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"voice",type:"outbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.voiceQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="MotionDialerQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditMotionDialerQueue=function(e,t){a.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:t,queueCampaigns:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:t,queueCampaigns:g.queues?g.queues.rows:[],realtime:!0,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.voiceQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.MotionDialerQueueId]&&g.queues[e.MotionDialerQueueId].loggedInDb++},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.VoiceQueueId]&&(g.queues[e.VoiceQueueId].loggedInDb+=1,g.queues[e.VoiceQueueId].agents[e.UserId]=e.VoiceQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.VoiceQueueId]&&0<g.queues[e.VoiceQueueId].loggedInDb&&(g.queues[e.VoiceQueueId].loggedInDb-=1,delete g.queues[e.VoiceQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.onWithoutApply("voice_queue:save",g.onSave),g.interval=s(function(){},999),d.on("userVoiceQueueRt:save",g.onSaveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("voice_queue:save"),g.interval&&s.cancel(g.interval),d.removeAllListeners("userVoiceQueueRt:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.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,n.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.motiondialer.realtime.agents");break;case 1:n.go("app.motiondialer.realtime.queues");break;case 2:n.go("app.motiondialer.realtime.queue_calls");break;case 3:n.go("app.motiondialer.realtime.abandonedcalls");break;case 4:n.go("app.motiondialer.realtime.queue_params");break;case 5:n.go("app.motiondialer.realtime.ivr_campaigns");break;default:n.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.openchannelAccount.OpenchannelAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.openchannelAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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 t(e,t){if(r.openchannelAccountApps.rows.length){var n=r.openchannelAccountApps.rows[t]?r.openchannelAccountApps.rows[t]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:n,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[t]=e:r.openchannelAccountApps.rows.splice(t,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,t=[],n=0;n<r.openchannelAccountApps.rows.length;n++,0){var a=r.openchannelAccountApps.rows[n],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,t=_.concat(t,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(t,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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:"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:"1"},{option:"Always",value:"0"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",maxlength:255,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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.openchannelAccount=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,n).$promise},r.editOpenchannelAccountApp=t,r.editInterval=function(e,t){if(r.openchannelAccountApps.rows.length){var n=r.openchannelAccountApps.rows[t]?r.openchannelAccountApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(t,e,n,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"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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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"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){t.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(t,e,n,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"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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("openChannel")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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"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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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"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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.openchannelAccount={},c.openchannelAccountInteractions={count:0,rows:[]},c.selectedOpenchannelAccountInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,Contact.firstName,Owner.name,closedAt,disposition,note,UserId,ContactId,OpenchannelAccountId,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.openchannelAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.openchannelAccount.id,c.getOpenchannelAccountInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.openchannelInteractionDownload=function(s,e,t){return l.openchannelInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getOpenchannelAccountInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.openchannelAccount.getInteractions(c.query,p).$promise},c.createOrEditOpenchannelAccountInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:c.openchannelAccount,interaction:t,interactions:c.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spyopenchannelInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"openchannel",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(c.selectedOpenchannelAccountInteractions);return c.selectedOpenchannelAccountInteractions=[],e},c.deleteOpenchannelAccountInteraction=g,c.deleteSelectedOpenchannelAccountInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),c.selectedOpenchannelAccountInteractions=[]})};var m=!0,u=1;function p(e){c.openchannelAccountInteractions=e||{count:0,rows:[]}}function g(e){l.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.openchannelAccountInteractions.rows,{id:e.id}),c.openchannelAccountInteractions.count-=1,c.openchannelAccountInteractions.rows.length||c.getOpenchannelAccountInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getOpenchannelAccountInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.openchannelAccount={},c.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},c.selectedOpenchannelAccountOpenchannelCannedAnswers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},c.init=function(e,t){c.openchannelAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.openchannelAccount.id,c.query.OpenchannelAccountId=c.openchannelAccount.id,c.getOpenchannelAccountOpenchannelCannedAnswers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getOpenchannelAccountOpenchannelCannedAnswers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.openchannelAccount.getAnswers(c.query,p).$promise},c.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,t){s.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:c.openchannelAccount,openchannelCannedAnswer:t,openchannelCannedAnswers:c.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(c.selectedOpenchannelAccountOpenchannelCannedAnswers);return c.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},c.deleteOpenchannelAccountOpenchannelCannedAnswer=g,c.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var t=s.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+c.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),c.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})};var m=!0,u=1;function p(e){c.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function g(e){l.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(c.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),c.openchannelAccountOpenchannelCannedAnswers.count-=1,c.openchannelAccountOpenchannelCannedAnswers.rows.length||c.getOpenchannelAccountOpenchannelCannedAnswers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getOpenchannelAccountOpenchannelCannedAnswers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.openchannelCannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.openchannelAccount={},c.openchannelAccountOpenchannelDispositions={count:0,rows:[]},c.selectedOpenchannelAccountOpenchannelDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.openchannelAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.openchannelAccount.id,c.query.OpenchannelAccountId=c.openchannelAccount.id,c.getOpenchannelAccountOpenchannelDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the openchannelDisposition?").htmlContent("<b>"+(e.name||"openchannelDisposition")+"</b> will be deleted.").ariaLabel("delete openchannelDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getOpenchannelAccountOpenchannelDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.openchannelAccount.getDispositions(c.query,p).$promise},c.createOrEditOpenchannelAccountOpenchannelDisposition=function(e,t){s.show({controller:"CreateOrEditOpenchannelDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:c.openchannelAccount,openchannelDisposition:t,openchannelDispositions:c.openchannelAccountOpenchannelDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedOpenchannelAccountOpenchannelDispositions=function(){var e=angular.copy(c.selectedOpenchannelAccountOpenchannelDispositions);return c.selectedOpenchannelAccountOpenchannelDispositions=[],e},c.deleteOpenchannelAccountOpenchannelDisposition=g,c.deleteSelectedOpenchannelAccountOpenchannelDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected openchannelDispositions?").htmlContent("<b>"+c.selectedOpenchannelAccountOpenchannelDispositions.length+" selected</b> will be deleted.").ariaLabel("delete openchannelDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedOpenchannelAccountOpenchannelDispositions.forEach(function(e){g(e)}),c.selectedOpenchannelAccountOpenchannelDispositions=[]})};var m=!0,u=1;function p(e){c.openchannelAccountOpenchannelDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.openchannelAccountOpenchannelDispositions.rows,{id:e.id}),c.openchannelAccountOpenchannelDispositions.count-=1,c.openchannelAccountOpenchannelDispositions.rows.length||c.getOpenchannelAccountOpenchannelDispositions(),r.success({title:"OpenchannelDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getOpenchannelAccountOpenchannelDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_OPENCHANNELDISPOSITION",g.openchannelDisposition=angular.copy(l),g.openchannelDispositions=r,g.newOpenchannelDisposition=!1,g.openchannelDisposition||(g.openchannelDisposition={},g.title="OPENCHANNEL.NEW_OPENCHANNELDISPOSITION",g.newOpenchannelDisposition=!0),t.params.id&&(g.openchannelDisposition.OpenchannelAccountId=t.params.id),g.addNewOpenchannelDisposition=function(){g.errors=[],d.disposition.save(g.openchannelDisposition).$promise.then(function(e){g.openchannelDispositions.unshift(e.toJSON()),o.success({title:"OpenchannelDisposition properly created",msg:g.openchannelDisposition.name?g.openchannelDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelDisposition=function(){g.errors=[],d.disposition.update({id:g.openchannelDisposition.id},g.openchannelDisposition).$promise.then(function(e){var t=_.find(g.openchannelDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"OpenchannelDisposition properly saved!",msg:g.openchannelDisposition.name?g.openchannelDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The openchannelDisposition will be deleted.").ariaLabel("Delete OpenchannelDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.openchannelDisposition.id}).$promise.then(function(){_.remove(g.openchannelDispositions,{id:g.openchannelDisposition.id}),o.success({title:"OpenchannelDisposition properly deleted!",msg:(g.openchannelDisposition.name||"openchannelDisposition")+" has been deleted!"}),v(g.openchannelDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelDispositions","openchannelDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelDispositionDialogController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.host(),u.openchannelAccount=c||e.params.openchannelAccount||{},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.agentadddialog=function(e,t){n.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:u.openchannelAccounts?u.openchannelAccounts.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts")},u.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:u.openchannelAccount.id},u.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:u.openchannelAccount.name?u.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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.openchannelAccount&&(a=_.find(u.lists,{id:Number(u.openchannelAccount.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.openchannelAccount&&(a=_.find(u.lists,{id:Number(u.openchannelAccount.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).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:u.openchannelAccount.ListId}).$promise.then(function(e){u.fields=[];e=_.values(e.toJSON());for(var t=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],n=0;n<e.length;n++)_.includes(t,e[n].columnName)||u.fields.push(e[n]);u.fields.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfields",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.openchannelAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="openchannelAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedOpenchannelAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,t){n.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:b.crudPermissions})},b.interactionsgoto=function(e,t){n.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},b.agentadddialog=function(e,t){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:b.openchannelAccounts?b.openchannelAccounts.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getOpenchannelAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.openchannelAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="OpenchannelAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditOpenchannelAccount=function(e,t){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:t,openchannelAccounts:b.openchannelAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteOpenchannelAccount=S,b.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(b.selectedOpenchannelAccounts);return b.selectedOpenchannelAccounts=[],e},b.deleteSelectedOpenchannelAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+b.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedOpenchannelAccounts.forEach(function(e){S(e)}),b.selectedOpenchannelAccounts=[]})},b.deselectOpenchannelAccounts=function(){b.selectedOpenchannelAccounts=[]},b.selectAllOpenchannelAccounts=function(){b.selectedOpenchannelAccounts=b.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.openchannelAccount&&(a=_.find(b.lists,{id:Number(b.openchannelAccount.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.openchannelAccount&&(a=_.find(b.lists,{id:Number(b.openchannelAccount.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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 A=!0,E=1;function y(e){b.openchannelAccounts=e||{count:0,rows:[]}}function S(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.openchannelAccounts.rows,{id:e.id}),b.openchannelAccounts.count-=1,b.openchannelAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.openchannel").controller("OpenchannelAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.openchannelQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:n.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.openchannelQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="openchannelQueues",b.listOrder="",b.listOrderAsc=null,b.selectedOpenchannelQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:b.openchannelQueues?b.openchannelQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:b.openchannelQueues?b.openchannelQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.openchannel.realtime.queues",{})}},b.success=y,b.getOpenchannelQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.openchannelQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="OpenchannelQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditOpenchannelQueue=function(e,t){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:t,openchannelQueues:b.openchannelQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteOpenchannelQueue=S,b.exportSelectedOpenchannelQueues=function(){var e=angular.copy(b.selectedOpenchannelQueues);return b.selectedOpenchannelQueues=[],e},b.deleteSelectedOpenchannelQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+b.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedOpenchannelQueues.forEach(function(e){S(e)}),b.selectedOpenchannelQueues=[]})},b.deselectOpenchannelQueues=function(){b.selectedOpenchannelQueues=[]},b.selectAllOpenchannelQueues=function(){b.selectedOpenchannelQueues=b.openchannelQueues.rows};var A=!0,E=1;function y(e){b.openchannelQueues=e||{count:0,rows:[]}}function S(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.openchannelQueues.rows,{id:e.id}),b.openchannelQueues.count-=1,b.openchannelQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.openchannelQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].OpenchannelQueueId].paused++,g.queues[e[t].rows[n].OpenchannelQueueId].loggedInDb++,g.queues[e[t].rows[n].OpenchannelQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].OpenchannelQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"openchannel",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.openchannelQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="OpenchannelQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditOpenchannelQueue=function(e,t){a.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:t,openchannelQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:t,openchannelQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.openchannelQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.OpenchannelQueueId]&&g.queues[e.OpenchannelQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.OpenchannelQueueId]&&g.queues[e.OpenchannelQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.OpenchannelQueueId]&&(g.queues[e.OpenchannelQueueId].loggedInDb+=1,g.queues[e.OpenchannelQueueId].agents[e.UserId]=e.OpenchannelQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.OpenchannelQueueId]&&0<g.queues[e.OpenchannelQueueId].loggedInDb&&(g.queues[e.OpenchannelQueueId].loggedInDb-=1,delete g.queues[e.OpenchannelQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("openchannel_queue:save",g.onSave),d.on("userOpenchannelQueue:save",g.onSaveMember),d.on("userOpenchannelQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("openchannel_queue:save"),d.removeAllListeners("userOpenchannelQueue:remove"),d.removeAllListeners("userOpenchannelQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,n.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.openchannel.realtime.agents");break;case 1:n.go("app.openchannel.realtime.queues");break;default:n.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return n.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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.customizations,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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?t.setting.update({id:s.customization.id},s.customization).$promise.then(function(){n.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):t.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),n.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){n.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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:10,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0},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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.generals,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,t,n,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]),s.saveGeneral=function(){s.general.id?t.setting.update({id:s.general.id},s.general).$promise.then(function(){n.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):t.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),n.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(t,n,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"}],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"}],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){n.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(t.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){n.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(t.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,t,n,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(n),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)&&(n[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==n[e]?n[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==n[e]?n[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){t.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,t,n,a,i){var s=this;s.errors=[],s.license=angular.copy(n),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?t.error({title:"License update failed!",msg:"Invalid license key"}):t.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){t.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,t,n,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(p.networks,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;h.license=p,h.setting=g,h.currentUser=u.getCurrentUser(),h.networks=l||{count:0,rows:[]},h.table="networks",h.listOrder="",h.listOrderAsc=null,h.selectedNetworks=[],h.query={fields:"createdAt,updatedAt,id,type,value",sort:"-updatedAt",limit:10,page:1},h.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),h.editdialog=function(e,t){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{network:e,networks:h.networks.rows,license:h.license,setting:null,crudPermissions:h.crudPermissions}})},h.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){E(e)},function(){console.log("CANCEL")})},h.success=A,h.getNetworks=function(){h.query.offset=(h.query.page-1)*h.query.limit,u.hasRole("admin")?h.promise=d.network.get(h.query,A).$promise:(h.query.id=h.userProfile.id,h.query.section="Networks",h.promise=d.userProfile.getResources(h.query,A).$promise)},h.createOrEditNetwork=function(e,t){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:t,networks:h.networks.rows,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}})},h.deleteNetwork=E,h.exportSelectedNetworks=function(){var e=angular.copy(h.selectedNetworks);return h.selectedNetworks=[],e},h.deleteSelectedNetworks=function(e){var t=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+h.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){h.selectedNetworks.forEach(function(e){E(e)}),h.selectedNetworks=[]})},h.deselectNetworks=function(){h.selectedNetworks=[]},h.selectAllNetworks=function(){h.selectedNetworks=h.networks.rows};var f=!0,b=1;function A(e){h.networks=e||{count:0,rows:[]}}function E(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(h.networks.rows,{id:e.id}),h.networks.count-=1,h.networks.rows.length||h.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){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var t=0;t<e.data.errors.length;t++)m.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){f?o(function(){f=!1}):(t||(b=h.query.page),e!==t&&(h.query.page=1),e||(h.query.page=b),h.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.settings").controller("NetworksController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.smtps,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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?t.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){n.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):t.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),n.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){n.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&&t.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){n.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){n.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,t,n,a,o,r){var l,d=this;d.system=n||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=t.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,t,n){var a=s.confirm().title("Would you like to change the status of the process #"+t+"?").textContent("The status will be changed to: "+n.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:t,status:n})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+n})})},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,t,n,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=t(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){n.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(t.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(n,e,a,t,i){this.version=t||{},this.updateConfirm=function(e){var t=n.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");n.show(t).then(function(){n.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,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.smsQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].SmsQueueId].paused++,g.queues[e[t].rows[n].SmsQueueId].loggedInDb++,g.queues[e[t].rows[n].SmsQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].SmsQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"sms",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.smsQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="SmsQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditSmsQueue=function(e,t){a.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:t,smsQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:t,smsQueues:g.queues?g.queues.rows:[],realtime:!1,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.smsQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onSaveMember=function(e){g.queues[e.SmsQueueId]&&g.queues[e.SmsQueueId].loggedInDb++},g.onRemoveMember=function(e){g.queues[e.SmsQueueId]&&g.queues[e.SmsQueueId].loggedInDb--},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.SmsQueueId]&&(g.queues[e.SmsQueueId].loggedInDb+=1,g.queues[e.SmsQueueId].agents[e.UserId]=e.SmsQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.SmsQueueId]&&0<g.queues[e.SmsQueueId].loggedInDb&&(g.queues[e.SmsQueueId].loggedInDb-=1,delete g.queues[e.SmsQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.on("sms_queue:save",g.onSave),d.on("userSmsQueue:save",g.onSaveMember),d.on("userSmsQueue:remove",g.onRemoveMember),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("sms_queue:save"),d.removeAllListeners("userSmsQueue:remove"),d.removeAllListeners("userSmsQueue:save"),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){switch(t.disconnect(),t.connect(),this.selectedTab=0,n.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,n.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.sms.realtime.agents");break;case 1:n.go("app.sms.realtime.queues");break;default:n.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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:n.protocol()+"://"+n.host()+(n.port()?":"+n.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),t.params.id&&(g.smsAccount.SmsAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.smsAccounts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",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||[],g.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++){_.some(t,{resourceId:g.lists[i].id})?(g.lists[i].canSelect=!0,n.push(g.lists[i])):a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,n.push(g.lists[i]))}g.lists=n})}else{var n=[],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,n.push(g.lists[i]));g.lists=n}}).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 t(e,t){if(r.smsAccountApps.rows.length){var n=r.smsAccountApps.rows[t]?r.smsAccountApps.rows[t]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:n,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[t]=e:r.smsAccountApps.rows.splice(t,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,t=[],n=0;n<r.smsAccountApps.rows.length;n++,0){var a=r.smsAccountApps.rows[n],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,t=_.concat(t,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(t,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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:"1"},{option:"Always",value:"0"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",maxlength:255,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){t(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,t){r.smsAccount=e,r.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(t,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,n).$promise},r.editSmsAccountApp=t,r.editInterval=function(e,t){if(r.smsAccountApps.rows.length){var n=r.smsAccountApps.rows[t]?r.smsAccountApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(t,e,n,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"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){t.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 t=_.find(l.agents,{name:l.agent.agent});t&&(l.agent.UserId=t.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||[],l.agents.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",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||[],l.agents.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++){_.some(t,{resourceId:l.agents[i].id})?(l.agents[i].canSelect=!0,n.push(l.agents[i])):a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,n.push(l.agents[i]))}l.agents=n})}else{var n=[],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,n.push(l.agents[i]));l.agents=n}}).catch(function(e){n.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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"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){t.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(t,e,n,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"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){t.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 t=_.find(l.queues,{name:l.queue.queue});t&&(l.queue[_.capitalize("sms")+"QueueId"]=t.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,e,n,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"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){t.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||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",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||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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"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){t.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 t=_.find(l.tags,{name:l.tag.tag});t&&(l.tag.TagId=t.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.smsAccount={},c.smsAccountInteractions={count:0,rows:[]},c.selectedSmsAccountInteractions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,Contact.firstName,Owner.name,closedAt,disposition,note,UserId,ContactId,SmsAccountId,tag",sort:"-createdAt",includeAll:"true",limit:10,page:1},c.init=function(e,t){c.smsAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.smsAccount.id,c.getSmsAccountInteractions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.smsInteractionDownload=function(s,e,t){return l.smsInteraction.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="interaction"+s.id,a=new Blob(t,{type:e.type});n="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getSmsAccountInteractions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.smsAccount.getInteractions(c.query,p).$promise},c.createOrEditSmsAccountInteraction=function(e,t){s.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:c.smsAccount,interaction:t,interactions:c.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.spysmsInteraction=function(e,n){s.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,t){e.vm.init({id:1,channel:"sms",interaction:n,spy:!0},a.$parent.vm.setting)}})},c.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(c.selectedSmsAccountInteractions);return c.selectedSmsAccountInteractions=[],e},c.deleteSmsAccountInteraction=g,c.deleteSelectedSmsAccountInteractions=function(e){var t=s.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+c.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedSmsAccountInteractions.forEach(function(e){g(e)}),c.selectedSmsAccountInteractions=[]})};var m=!0,u=1;function p(e){c.smsAccountInteractions=e||{count:0,rows:[]}}function g(e){l.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(c.smsAccountInteractions.rows,{id:e.id}),c.smsAccountInteractions.count-=1,c.smsAccountInteractions.rows.length||c.getSmsAccountInteractions(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}a.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getSmsAccountInteractions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.smsAccount={},c.smsAccountSmsCannedAnswers={count:0,rows:[]},c.selectedSmsAccountSmsCannedAnswers=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},c.init=function(e,t){c.smsAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.smsAccount.id,c.query.SmsAccountId=c.smsAccount.id,c.getSmsAccountSmsCannedAnswers()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getSmsAccountSmsCannedAnswers=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.smsAccount.getAnswers(c.query,p).$promise},c.createOrEditSmsAccountSmsCannedAnswer=function(e,t){s.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:c.smsAccount,smsCannedAnswer:t,smsCannedAnswers:c.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(c.selectedSmsAccountSmsCannedAnswers);return c.selectedSmsAccountSmsCannedAnswers=[],e},c.deleteSmsAccountSmsCannedAnswer=g,c.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var t=s.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+c.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),c.selectedSmsAccountSmsCannedAnswers=[]})};var m=!0,u=1;function p(e){c.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function g(e){l.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(c.smsAccountSmsCannedAnswers.rows,{id:e.id}),c.smsAccountSmsCannedAnswers.count-=1,c.smsAccountSmsCannedAnswers.rows.length||c.getSmsAccountSmsCannedAnswers(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getSmsAccountSmsCannedAnswers())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.smsCannedAnswer.SmsAccountId=t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.smsCannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.smsAccount={},c.smsAccountSmsDispositions={count:0,rows:[]},c.selectedSmsAccountSmsDispositions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,name",limit:10,page:1},c.init=function(e,t){c.smsAccount=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.smsAccount.id,c.query.SmsAccountId=c.smsAccount.id,c.getSmsAccountSmsDispositions()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the smsDisposition?").htmlContent("<b>"+(e.name||"smsDisposition")+"</b> will be deleted.").ariaLabel("delete smsDisposition").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getSmsAccountSmsDispositions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.smsAccount.getDispositions(c.query,p).$promise},c.createOrEditSmsAccountSmsDisposition=function(e,t){s.show({controller:"CreateOrEditSmsDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsDispositions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:c.smsAccount,smsDisposition:t,smsDispositions:c.smsAccountSmsDispositions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedSmsAccountSmsDispositions=function(){var e=angular.copy(c.selectedSmsAccountSmsDispositions);return c.selectedSmsAccountSmsDispositions=[],e},c.deleteSmsAccountSmsDisposition=g,c.deleteSelectedSmsAccountSmsDispositions=function(e){var t=s.confirm().title("Are you sure want to delete the selected smsDispositions?").htmlContent("<b>"+c.selectedSmsAccountSmsDispositions.length+" selected</b> will be deleted.").ariaLabel("delete smsDispositions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedSmsAccountSmsDispositions.forEach(function(e){g(e)}),c.selectedSmsAccountSmsDispositions=[]})};var m=!0,u=1;function p(e){c.smsAccountSmsDispositions=e||{count:0,rows:[]}}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){_.remove(c.smsAccountSmsDispositions.rows,{id:e.id}),c.smsAccountSmsDispositions.count-=1,c.smsAccountSmsDispositions.rows.length||c.getSmsAccountSmsDispositions(),r.success({title:"SmsDisposition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getSmsAccountSmsDispositions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsDispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_SMSDISPOSITION",g.smsDisposition=angular.copy(l),g.smsDispositions=r,g.newSmsDisposition=!1,g.smsDisposition||(g.smsDisposition={},g.title="SMS.NEW_SMSDISPOSITION",g.newSmsDisposition=!0),t.params.id&&(g.smsDisposition.SmsAccountId=t.params.id),g.addNewSmsDisposition=function(){g.errors=[],d.disposition.save(g.smsDisposition).$promise.then(function(e){g.smsDispositions.unshift(e.toJSON()),o.success({title:"SmsDisposition properly created",msg:g.smsDisposition.name?g.smsDisposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsDisposition=function(){g.errors=[],d.disposition.update({id:g.smsDisposition.id},g.smsDisposition).$promise.then(function(e){var t=_.find(g.smsDispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"SmsDisposition properly saved!",msg:g.smsDisposition.name?g.smsDisposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The smsDisposition will be deleted.").ariaLabel("Delete SmsDisposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.smsDisposition.id}).$promise.then(function(){_.remove(g.smsDispositions,{id:g.smsDisposition.id}),o.success({title:"SmsDisposition properly deleted!",msg:(g.smsDisposition.name||"smsDisposition")+" has been deleted!"}),v(g.smsDisposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsDispositions","smsDisposition","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsDispositionDialogController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.host(),u.smsAccount=c||e.params.smsAccount||{},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.agentadddialog=function(e,t){n.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:u.smsAccounts?u.smsAccounts.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts")},u.saveSmsAccount=function(){r.smsAccount.update({id:u.smsAccount.id},u.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:u.smsAccount.name?u.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){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.lists=e.rows||[],u.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.smsAccount&&(a=_.find(u.lists,{id:Number(u.smsAccount.ListId)}));for(var i=0;i<u.lists.length;i++){_.some(t,{resourceId:u.lists[i].id})?(u.lists[i].canSelect=!0,n.push(u.lists[i])):a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]))}u.lists=n})}else{var n=[],a=null;u.smsAccount&&(a=_.find(u.lists,{id:Number(u.smsAccount.ListId)}));for(var i=0;i<u.lists.length;i++)a&&u.lists[i].id===a.id&&(u.lists[i].canSelect=!1,n.push(u.lists[i]));u.lists=n}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.smsAccounts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="smsAccounts",b.listOrder="",b.listOrderAsc=null,b.selectedSmsAccounts=[],b.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},b.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:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:b.crudPermissions})},b.interactionsgoto=function(e,t){n.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},b.agentadddialog=function(e,t){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:b.smsAccounts?b.smsAccounts.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSmsAccounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.smsAccount.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SmsAccounts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSmsAccount=function(e,t){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:t,smsAccounts:b.smsAccounts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSmsAccount=S,b.exportSelectedSmsAccounts=function(){var e=angular.copy(b.selectedSmsAccounts);return b.selectedSmsAccounts=[],e},b.deleteSelectedSmsAccounts=function(e){var t=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+b.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSmsAccounts.forEach(function(e){S(e)}),b.selectedSmsAccounts=[]})},b.deselectSmsAccounts=function(){b.selectedSmsAccounts=[]},b.selectAllSmsAccounts=function(){b.selectedSmsAccounts=b.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.lists=e.rows||[],b.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.smsAccount&&(a=_.find(b.lists,{id:Number(b.smsAccount.ListId)}));for(var i=0;i<b.lists.length;i++){_.some(t,{resourceId:b.lists[i].id})?(b.lists[i].canSelect=!0,n.push(b.lists[i])):a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]))}b.lists=n})}else{var n=[],a=null;b.smsAccount&&(a=_.find(b.lists,{id:Number(b.smsAccount.ListId)}));for(var i=0;i<b.lists.length;i++)a&&b.lists[i].id===a.id&&(b.lists[i].canSelect=!1,n.push(b.lists[i]));b.lists=n}}).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 A=!0,E=1;function y(e){b.smsAccounts=e||{count:0,rows:[]}}function S(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(b.smsAccounts.rows,{id:e.id}),b.smsAccounts.count-=1,b.smsAccounts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.sms").controller("SmsAccountsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.smsQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.startingAllowedItems=angular.copy(l.allowedItems),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("SMS.ALL_TEAMS"),labelSelected:n.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){n.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.smsQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="smsQueues",b.listOrder="",b.listOrderAsc=null,b.selectedSmsQueues=[],b.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},b.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:b.smsQueues?b.smsQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:b.smsQueues?b.smsQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.sms.realtime.queues",{})}},b.success=y,b.getSmsQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.smsQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="SmsQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSmsQueue=function(e,t){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:t,smsQueues:b.smsQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSmsQueue=S,b.exportSelectedSmsQueues=function(){var e=angular.copy(b.selectedSmsQueues);return b.selectedSmsQueues=[],e},b.deleteSelectedSmsQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+b.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSmsQueues.forEach(function(e){S(e)}),b.selectedSmsQueues=[]})},b.deselectSmsQueues=function(){b.selectedSmsQueues=[]},b.selectAllSmsQueues=function(){b.selectedSmsQueues=b.smsQueues.rows};var A=!0,E=1;function y(e){b.smsQueues=e||{count:0,rows:[]}}function S(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.smsQueues.rows,{id:e.id}),b.smsQueues.count-=1,b.smsQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.agents=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="agents",b.listOrder="",b.listOrderAsc=null,b.selectedAgents=[],b.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,faxCapacity,smsCapacity,openchannelCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,phoneBarEnableVideoRecording",role:"agent",sort:"-updatedAt",limit:10,page:1},b.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.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"),"")}),b.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.editstate=function(e,t){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:b.agents?b.agents.rows:[],crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getAgents=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.user.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Agents",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditAgent=function(e,t){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:t,agents:b.agents.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteAgent=S,b.exportSelectedAgents=function(){var e=angular.copy(b.selectedAgents);return b.selectedAgents=[],e},b.deleteSelectedAgents=function(e){var t=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+b.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedAgents.forEach(function(e){S(e)}),b.selectedAgents=[]})},b.deselectAgents=function(){b.selectedAgents=[]},b.selectAllAgents=function(){b.selectedAgents=b.agents.rows};var A=!0,E=1;function y(e){b.agents=e||{count:0,rows:[]}}function S(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(b.agents.rows,{id:e.id}),b.agents.count-=1,b.agents.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("AgentsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.agents,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.agent=angular.copy(e),i.crudPermissions=void 0!==t?t:{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(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.currentUser=s.getCurrentUser(),o.errors=[],o.setting=i,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",o.agent=a,o.password="",o.oldPassword="",o.savePassword=function(){o.errors=[];var e={id:o.agent.id,newPassword:o.password};o.currentUser.id==o.agent.id&&(e.oldPassword=o.oldPassword);n.user.changePassword(e).$promise.then(function(){t.success({title:"Agent password properly updated!"}),r()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),o.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,t,i,n,s){var o=this;o.agent={},o.navigation=n.getNavigation(),o.crudPermissions,o.init=function(e,t){o.agent=e,o.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(t,n){if((n||t).enabled){if(n)n.enabled=!0,o.agent.permissions.push(n.id);else for(var e=0;e<t.children.length;e++)t.children[e].enabled=!0,o.agent.permissions.push(t.children[e].id);t.enabled=!0,o.agent.permissions.push(t.id)}else if(n)n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}),_.filter(t.children,{enabled:!1}).length===t.children.length&&(t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}));else{t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e});for(var a=0;a<t.children.length;a++)t.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return t.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,t,n,i,s,o,r){var c=this;function m(){return l(function(n,t){return l(function(t,n){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){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){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){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return"voice"===c.channel&&(t.penalty=void 0!==t&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=o.getCurrentUser(),c.agent=t,c.crudPermissions=r,c.penalty=0,c.channel=n,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={readOnly:!c.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,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,t){t?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var n=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});c.pendingChanges=!_.isEmpty(n)}},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(n,t){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 t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});return(n=e,l(function(e,t){_.isEmpty(n)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(n,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){t(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 n},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,t,n,o,r){var l=this;function d(){return a(function(n,t){return a(function(t,n){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:l.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return l.allowedItems=_.map(t,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.startingAllowedItems=angular.copy(l.allowedItems),l.items.forEach(function(e){var t=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];l.selectedItems=_.map(t,function(e){return _.find(l.items,{id:e.id})}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}l.currentUser=o.getCurrentUser(),l.agent=t,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={readOnly:!l.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("STAFF.ALL_TEAMS"),labelSelected:n.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,t){var n=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(n)}},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(n,t){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.user.addTeams({id:l.agent.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},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,t,i,s,n,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=t.protocol()+"://"+t.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,t,n,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:t,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,t){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,t){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoAgents=function(){e.go("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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.agent&&(a=_.find(u.contexts,{name:u.agent.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.teams,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.team=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.team.removeAgents({id:c.team.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.team.addAgents({id:c.team.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.teams=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="teams",b.listOrder="",b.listOrderAsc=null,b.selectedTeams=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{team:e,teams:b.teams.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{team:e,teams:b.teams?b.teams.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTeams=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.team.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Teams",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTeam=function(e,t){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:t,teams:b.teams.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTeam=S,b.exportSelectedTeams=function(){var e=angular.copy(b.selectedTeams);return b.selectedTeams=[],e},b.deleteSelectedTeams=function(e){var t=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+b.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTeams.forEach(function(e){S(e)}),b.selectedTeams=[]})},b.deselectTeams=function(){b.selectedTeams=[]},b.selectAllTeams=function(){b.selectedTeams=b.teams.rows};var A=!0,E=1;function y(e){b.teams=e||{count:0,rows:[]}}function S(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(b.teams.rows,{id:e.id}),b.teams.count-=1,b.teams.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("TeamsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.telephones,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.currentUser=s.getCurrentUser(),o.errors=[],o.setting=i,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",o.telephone=a,o.password="",o.oldPassword="",o.savePassword=function(){o.errors=[];var e={id:o.telephone.id,newPassword:o.password};o.currentUser.id==o.telephone.id&&(e.oldPassword=o.oldPassword);n.user.changePassword(e).$promise.then(function(){t.success({title:"Telephone password properly updated!"}),r()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),o.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:t,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")},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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.telephone&&(a=_.find(u.contexts,{name:u.telephone.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.telephones=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="telephones",b.listOrder="",b.listOrderAsc=null,b.selectedTelephones=[],b.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},b.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"),"")}),b.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"),"")}),b.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"),"")}),b.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTelephones=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.user.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Telephones",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTelephone=function(e,t){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:t,telephones:b.telephones.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTelephone=S,b.exportSelectedTelephones=function(){var e=angular.copy(b.selectedTelephones);return b.selectedTelephones=[],e},b.deleteSelectedTelephones=function(e){var t=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+b.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTelephones.forEach(function(e){S(e)}),b.selectedTelephones=[]})},b.deselectTelephones=function(){b.selectedTelephones=[]},b.selectAllTelephones=function(){b.selectedTelephones=b.telephones.rows};var A=!0,E=1;function y(e){b.telephones=e||{count:0,rows:[]}}function S(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(b.telephones.rows,{id:e.id}),b.telephones.count-=1,b.telephones.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("TelephonesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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"]},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var t,n;n=[],(t=e).crudPermissions.forEach(function(e){var t;switch(e){case"r":t="READ_PERMISSION";break;case"e":t="EDIT_PERMISSION";break;case"d":t="DELETE_PERMISSION"}n.push(s.instant("STAFF."+t))}),t.selectedcrudPermissions=n.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.userProfiles,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(t,a,i,e,n,s,o){var r=this;function l(e){t.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(n),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),n&&n.name&&(r.title+=": "+n.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:n.id},r.userProfile).$promise.then(function(e){var t,n;n=[],(t=e).crudPermissions.forEach(function(e){var t;switch(e){case"r":t="READ_PERMISSION";break;case"e":t="EDIT_PERMISSION";break;case"d":t="DELETE_PERMISSION"}n.push(o.instant("STAFF."+t))}),t.selectedcrudPermissions=n.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 t=0;t<e.data.errors.length;t+=1)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(n,o,r,l,d,e,t,c){var m=this;function u(e,t){switch(e.allResourcesEnabled="full"===t,t){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(t,n){var i,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(t,n){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){t(e)}).catch(function(e){n(e)})})).then(function(e){t(e)}).catch(function(e){n(e)}):(i=e,l(function(a,t){switch(i.route){case"voiceExtension":var e;switch(i.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"user":var n;switch(i.title){case"Agents":n="agent";break;case"Telephones":n="telephone";break;case"Users":n="user"}}if("Reports"===i.title){if(!i.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(n){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var t=_.union(n.rows,e.rows);a({count:t.length,rows:t.rows})})}).catch(function(e){t(e)});switch(i.reportType){case"default":i.route="analyticDefaultReport";break;case"custom":i.route="analyticCustomReport"}}return d[i.route].get({role:n||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){t(e)})})).then(function(e){t(e)}).catch(function(e){n(e)})})}function g(e,t,n){var a=e&&0<e.length?e[0]:null;if(!a)return n;var i,s,o=_.find(t,["sectionId",a.id]);return o?(t=_.remove(t,["sectionId",a.id]),(i=a,s=o.id,l(function(t,n){d.userProfileResource.get({sectionId:s}).$promise.then(function(t){return p(i).then(function(e){return _.differenceBy(t.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?t():n()}).catch(function(e){n(e)})})).then(function(){return n="full",g(e.shift(),t,n)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var n="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:n}).$promise.then(function(e){var t=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(t)?"disabled":t[0].autoAssociation?"full":d.userProfileResource.get({sectionId:t[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var n=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return t.length!==n.length?0===t.length?"disabled":"partial":_.every(t,["autoAssociation",!0])?"full":g(_.filter(n,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),t,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var t=e?"unknown":"partial";a.status=u(a,t),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+n.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 t=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,t)}):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,t){m.userProfile=e,m.license=t},m.onChangeEnableAllResources=function(t){var e=void 0!==t.permissions&&!t.permissions.association,a="Marketplace"===t.title?"AppZone":t.title;if("Fully Enabled"!==t.status.name){var i=[];if(e)return i.push({category:a,sectionId:t.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){t.status=u(t,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(t.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(t.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 n=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(t.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(n).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(t.children,function(e){var t=!(void 0===e.permissions||!e.permissions.hidden);if(!t){var n=e.title;switch(a){case"CallySquare":n="Projects"===n?"SquareProjects":n}i.push({category:a,sectionId:e.id,name:n,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){t.status=u(t,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(t.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(t.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()}):t.status=u(t,t.status.tag)})}else if("Fully Enabled"===t.status.name){t.status=u(t,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[t.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(t.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(t.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(t.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,t){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(n.body),targetEvent:t,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,s,t,o,e,a,r,i,l){var d=this;function c(){var a=void 0!==d.selectedSection.pending&&d.selectedSection.pending;return s(function(n,t){o.userProfileSection.get({userProfileId:d.userProfile.id,sectionId:d.selectedSection.id}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;a||(d.selectedSection.enabled=!!t&&!!t.enabled,d.selectedSection.autoAssociation=!!t&&!!t.autoAssociation,d.selectedSection.crudPermissions=p(t?t.crudPermissions:d.userProfile.crudPermissions)),n(t)}).catch(function(e){t(e)})})}function m(){return s(function(t,n){void 0!==d.selectedSection.channel&&_.includes(d.selectedSection.route,"Queue")?s(function(t,n){var e=void 0!==d.selectedSection.channel&&"bull"===d.selectedSection.channel?"outbound":"inbound";return o[d.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===d.selectedSection.channel?"voice":d.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){t(e)}).catch(function(e){n(e)}):s(function(t,n){var e,a;if("voiceExtension"===d.selectedSection.route)switch(d.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===d.selectedSection.route)switch(d.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===d.selectedSection.route)var i=!0;if("Reports"===d.selectedSection.title)switch(d.selectedSection.reportType){case"default":d.selectedSection.route="analyticDefaultReport";break;case"custom":d.selectedSection.route="analyticCustomReport"}if("Dashboards"!==d.selectedSection.title)return o[d.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)});t({count:1,rows:[{id:101,name:r.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){t(e)}).catch(function(e){n(e)})})}function u(){var a=void 0!==d.selectedSection.pending&&d.selectedSection.pending,i=[];return s(function(t,n){d.loadedSection?o.userProfileResource.get({sectionId:d.loadedSection.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)}):t(null)}).then(function(e){return i=e&&e.rows?e.rows:[],"Reports"===d.selectedSection.title&&(d.associatedReports=d.associatedReports?d.associatedReports:i,i=function(e){var t=[];switch(d.selectedSection.reportType){case"default":t=_.filter(e,{type:"DefaultReports"});break;case"custom":t=_.filter(e,{type:"CustomReports"})}return t}(d.associatedReports)),void 0===d.selectedSection.permissions||d.selectedSection.permissions.association?m():{rows:[]}}).then(function(e){d.items=e.rows?_.map(e.rows,function(e){var t,n;return"Reports"===d.selectedSection.title&&(e.fullPath=(t=e.parent,n=d.treeStructure[0].text,n=function e(t,n,a){if(!a||_.isEmpty(a.children))return t;var a=_.find(a.children,function(e){return _.includes(n,e.id)?e:void 0});return t+=a?"/"+a.text:"",e(t,n,a)}(n,t,d.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],a||(d.selectedSection.selectedItems=_.map(i,function(e){return _.find(d.items,{id:e.resourceId})}));var t=_.differenceBy(d.selectedSection.selectedItems,d.items,"id");switch(_.isEmpty(t)||(d.selectedSection.selectedItems=_.pullAllBy(d.selectedSection.selectedItems,t,"id")),d.selectedSection.title){case"Contexts":d.selectedSection.selectedItems=_.filter(d.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(i,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":d.selectedSection.selectedItems=_.filter(d.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(i,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var n=function(e){var t=[];switch(d.selectedSection.reportType){case"default":t=_.filter(e,function(e){return _.startsWith(e.parent,"motion")});break;case"custom":t=_.filter(e,function(e){return _.startsWith(e.parent,"custom")})}return t}(d.allReportsSelected);d.selectedSection.selectedItems=h(d.selectedSection.selectedItems),d.selectedSection.selectedItems=_.unionBy(d.selectedSection.selectedItems,n,"parent")}d.dualMultiselectOptions.selectedItems=d.selectedSection.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.items,d.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+d.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function p(e){return e&&(d.selectedSection.allowEdit=!!_.includes(e,"e"),d.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(d.selectedSection.allowEdit)e.push("e");else{var t=_.indexOf(e,["e"]);0<t&&d.selectedSection.crudPermissions.replace("e","")}if(d.selectedSection.allowDelete)e.push("d");else{var t=_.indexOf(e,["d"]);0<t&&d.selectedSection.crudPermissions.replace("d","")}return e}()}function g(e){var t=_.findIndex(d.subsections,function(e){return e.id==d.selectedSection.id});d.subsections[t].pending=e,v()}function v(){return d.pendingChanges=_.some(d.subsections,["pending",!0])}function h(e){var t=[];switch(d.selectedSection.reportType){case"default":t=_.remove(e,function(e){return _.startsWith(e.parent,"motion")});break;case"custom":t=_.remove(e,function(e){return _.startsWith(e.parent,"custom")})}return t}d.userProfile=e,d.penalty=0,d.section=angular.copy(l),d.title=r.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:r.instant(d.section.translate)}),d.items=[],d.selectedItems=[],d.subsections=_.filter(d.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),d.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],d.dashboardItems=[],"Dashboards"===d.section.title&&(d.dashboardItems=d.subsections,d.subsections=d.dashboardSections),d.selectedSection=null,d.loadedSection=null,d.closeDialog=function(e){if(d.pendingChanges){var t=n.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(r.instant("STAFF.CLOSE")).cancel(r.instant("STAFF.CANCEL"));n.show(t).then(function(){n.hide()})}else n.hide()},d.onChangeSection=function(){return c().then(function(e){if(d.loadedSection=e,"Reports"===d.selectedSection.title)return s(function(t,n){o.analyticTreeReport.get({}).$promise.then(function(e){d.treeReports=e.rows||[],t(d.treeReports)}).catch(function(e){n(e)})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});u()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+d.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},d.onChangeVisibility=function(){d.selectedSection.enabled=!d.selectedSection.enabled,g(!0)},d.onChangeAutoAssociation=function(){if(!d.selectedSection.autoAssociation){for(var e=[],t=0;t<d.dualMultiselectOptions.items.length;t++)e.push(d.dualMultiselectOptions.items[t]),d.dualMultiselectOptions.selectedItems.push(d.dualMultiselectOptions.items[t]);d.dualMultiselectOptions.items=[],d.dualMultiselectOptions.transferCallback(e,!1)}g(!0)},d.onChangeReportType=function(){d.treeStructure=function(){var e={};switch(d.selectedSection.reportType){case"default":e=d.treeReports[0]?angular.fromJson(d.treeReports[0].tree):[];break;case"custom":e=d.treeReports[1]?angular.fromJson(d.treeReports[1].tree):[]}return e}(),d.selectedSection.selectedItems&&(d.allReportsSelected=h(d.allReportsSelected),d.allReportsSelected=_.unionBy(d.allReportsSelected,d.selectedSection.selectedItems,"parent"));u()},d.setPermission=function(e){switch(e){case"edit":d.selectedSection.allowEdit=!d.selectedSection.allowEdit;break;case"delete":d.selectedSection.allowDelete=!d.selectedSection.allowDelete}d.selectedSection.crudPermissions=p(),g(!0)},d.saveSection=function(){var n="Marketplace"===d.section.title?"AppZone":d.section.title,e=_.map(_.filter(d.subsections,{pending:!0}),function(e){var t=e.selectedItems,a=e.title;switch("Reports"===a&&(t=_.unionBy(d.allReportsSelected,e.selectedItems,"parent")),n){case"CallySquare":a="Projects"===a?"SquareProjects":a;break;case"Integrations":e.autoAssociation=!0}return{category:n,sectionId:e.id,name:a,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:t?_.map(t,function(e){return{name:e.name,resourceId:e.id,type:(t=a,n=e,"Reports"!==t?t:(_.startsWith(n.parent,"motion")?"Default":"Custom")+t)};var t,n}):[]}});return o.userProfile.addSections({id:d.userProfile.id},e).$promise.then(function(){d.subsections.forEach(function(e){e.pending=void 0}),d.allReportsSelected=[],d.associatedReports=null,v(),t.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:r.instant(n.translate)}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return c().then(function(e){d.loadedSection=e})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.dualMultiselectOptions={readOnly:!1,items:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:r.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:r.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),labelSearch:r.instant("STAFF.PERMISSIONS_PLACEHOLDER_SEARCH"),transferCallback:function(e,t){g(!0),t?(d.selectedSection.selectedItems=_.pullAllBy(d.selectedSection.selectedItems,e,"id"),d.selectedSection.autoAssociation=!1):d.selectedSection.selectedItems=_.unionBy(d.selectedSection.selectedItems,e,"id")}}}e.$inject=["$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.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,t){n.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,t){n.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:t,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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.userProfiles=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="userProfiles",b.listOrder="",b.listOrderAsc=null,b.selectedUserProfiles=[],b.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b.userProfiles&&0<b.userProfiles.count&&b.userProfiles.rows.forEach(function(e){var t=[];e.crudPermissions.forEach(function(e){t.push(b.arraycrudPermissions[e].option)});var n=[];t.forEach(function(e){n.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=n.join(", ")}),b.editstate=function(e,t){n.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:b.userProfiles?b.userProfiles.rows:[],crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getUserProfiles=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.userProfile.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="UserProfiles",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditUserProfile=function(e,t){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:t,userProfiles:b.userProfiles.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteUserProfile=S,b.exportSelectedUserProfiles=function(){var e=angular.copy(b.selectedUserProfiles);return b.selectedUserProfiles=[],e},b.deleteSelectedUserProfiles=function(e){var t=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+b.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedUserProfiles.forEach(function(e){S(e)}),b.selectedUserProfiles=[]})},b.deselectUserProfiles=function(){b.selectedUserProfiles=[]},b.selectAllUserProfiles=function(){b.selectedUserProfiles=b.userProfiles.rows};var A=!0,E=1;function y(e){b.userProfiles=e||{count:0,rows:[]}}function S(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(b.userProfiles.rows,{id:e.id}),b.userProfiles.count-=1,b.userProfiles.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("UserProfilesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.users,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.userProfiles.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfiles",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,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 t=["png","jpg"];if(!_.includes(t,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var n={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(n),!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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result},t.type="image"}})},i.init=function(e,t){i.user=angular.copy(e),i.crudPermissions=void 0!==t?t:{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(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.currentUser=s.getCurrentUser(),o.errors=[],o.setting=i,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",o.user=a,o.password="",o.oldPassword="",o.savePassword=function(){o.errors=[];var e={id:o.user.id,newPassword:o.password};o.currentUser.id==o.user.id&&(e.oldPassword=o.oldPassword);n.user.changePassword(e).$promise.then(function(){t.success({title:"User password properly updated!"}),r()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),o.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.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.changepassworddialog=function(e,t){n.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:t,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")},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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.userProfiles.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfiles",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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.users=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="users",b.listOrder="",b.listOrderAsc=null,b.selectedUsers=[],b.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,videosupport",role:"admin,user",sort:"-updatedAt",limit:10,page:1},b.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.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"),"")}),b.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"),"")}),b.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getUsers=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.user.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Users",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditUser=function(e,t){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:t,users:b.users.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteUser=S,b.exportSelectedUsers=function(){var e=angular.copy(b.selectedUsers);return b.selectedUsers=[],e},b.deleteSelectedUsers=function(e){var t=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+b.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedUsers.forEach(function(e){S(e)}),b.selectedUsers=[]})},b.deselectUsers=function(){b.selectedUsers=[]},b.selectAllUsers=function(){b.selectedUsers=b.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.userProfiles=e.rows||[],b.userProfiles.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfiles",msg:e.data?JSON.stringify(e.data):e.toString()})});var A=!0,E=1;function y(e){b.users=e||{count:0,rows:[]}}function S(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(b.users.rows,{id:e.id}),b.users.count-=1,b.users.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.cannedAnswers=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="cannedAnswers",b.listOrder="",b.listOrderAsc=null,b.selectedCannedAnswers=[],b.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:b.cannedAnswers.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getCannedAnswers=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.cannedAnswer.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="CannedAnswers",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditCannedAnswer=function(e,t){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:t,cannedAnswers:b.cannedAnswers.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteCannedAnswer=S,b.exportSelectedCannedAnswers=function(){var e=angular.copy(b.selectedCannedAnswers);return b.selectedCannedAnswers=[],e},b.deleteSelectedCannedAnswers=function(e){var t=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+b.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedCannedAnswers.forEach(function(e){S(e)}),b.selectedCannedAnswers=[]})},b.deselectCannedAnswers=function(){b.selectedCannedAnswers=[]},b.selectAllCannedAnswers=function(){b.selectedCannedAnswers=b.cannedAnswers.rows};var A=!0,E=1;function y(e){b.cannedAnswers=e||{count:0,rows:[]}}function S(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(b.cannedAnswers.rows,{id:e.id}),b.cannedAnswers.count-=1,b.cannedAnswers.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("CannedAnswersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.cannedAnswers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.customDashboards,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.customDashboards=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="customDashboards",b.listOrder="",b.listOrderAsc=null,b.selectedCustomDashboards=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,t){n.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:b.customDashboards?b.customDashboards.rows:[],crudPermissions:b.crudPermissions}})},b.gotodashboardgoto=function(e,t){n.go("app.dashboards.custom",{id:e.id})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getCustomDashboards=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.dashboard.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="CustomDashboards",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditCustomDashboard=function(e,t){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:t,customDashboards:b.customDashboards.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteCustomDashboard=S,b.exportSelectedCustomDashboards=function(){var e=angular.copy(b.selectedCustomDashboards);return b.selectedCustomDashboards=[],e},b.deleteSelectedCustomDashboards=function(e){var t=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+b.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedCustomDashboards.forEach(function(e){S(e)}),b.selectedCustomDashboards=[]})},b.deselectCustomDashboards=function(){b.selectedCustomDashboards=[]},b.selectAllCustomDashboards=function(){b.selectedCustomDashboards=b.customDashboards.rows};var A=!0,E=1;function y(e){b.customDashboards=e||{count:0,rows:[]}}function S(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(b.customDashboards.rows,{id:e.id}),b.customDashboards.count-=1,b.customDashboards.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(n,a,e,i,s){var o=this;function r(e,t,n){return s.dashboardItem.update(n).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,t){return o.crudPermissions=void 0!==t?t:{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 t=0;t<e.rows.length;t+=1)e.rows[t].voiceQueues=o.voiceQueues,e.rows[t].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[t].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[t].type+"/ms-widget-engine."+e.rows[t].type+".html",o.customDashboard.widgets.push(e.rows[t])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var t=0;t<e.attrs.length;t+=1)"attrReport"===e.attrs[t].name&&(e.reportType=e.attrs[t].type),e[e.attrs[t].name]=e.attrs[t].value;n.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 t=0;t<o.customDashboard.widgets.length;t+=1)o.customDashboard.widgets[t].id===e.id&&(o.customDashboard.widgets[t].attrs=e.attrs,o.customDashboard.widgets[t].voiceQueues=o.voiceQueues,o.customDashboard.widgets[t].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[t].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[t].type+"/ms-widget-engine."+o.customDashboard.widgets[t].type+".html")})},o.deleteWidget=function(t){var e=n.confirm().title("Would you like to delete "+t.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");n.show(e).then(function(){return s.dashboardItem.delete({id:t.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:t.id}),i.success({title:"Widget deleted!",msg:t.name?t.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 t=0;t<e.data.errors.length;t++)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(t,e,n,a,s,i,o,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",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()),o.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.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.dashboardItem.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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 t=_.find(g.dashboard,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.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.dashboardItem.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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 t=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),o.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),T(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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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.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))}t.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=(t={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,t}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):t),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!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 t},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[],g.treeReports.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtreeReports",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,t){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=t.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=t.node.id,y()}function b(e,t){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=t.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=t.node.id,y()}function A(){if(!g.newDashboardItem&&"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.newDashboardItem&&"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 t=e&&e.rows?e.rows:[];if(0<t.length){var n=[];return a.forEach(function(e){_.find(t,["resourceId",e.id])&&n.push(e)}),S({count:n.length,rows:n})}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.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(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||[],g.voiceQueues.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[],g.voiceQueues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<v.length;t++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<v.length;a++){var i=_.find(t,["sectionId",v[a].id]);i?i.autoAssociation?g.voiceQueues.forEach(function(e){e.type===v[a].type&&(e.canSelect=!0)}):n.push(d.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:g.voiceQueues,count:g.voiceQueues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;g.dashboarditem&&(a=_.find(g.voiceQueues,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<v.length;i++)g.voiceQueues.forEach(function(e){e.type===v[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});g.voiceQueues=n}).catch(function(e){o.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(n,e,a,i,t,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||n.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=n.params.tab||0,u.clonedialog=function(e,t){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,t){n.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){n.go("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(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_DISPOSITION",g.disposition=angular.copy(l),g.dispositions=r,g.newDisposition=!1,g.disposition||(g.disposition={},g.title="TOOLS.NEW_DISPOSITION",g.newDisposition=!0),g.addNewDisposition=function(){g.errors=[],d.disposition.save(g.disposition).$promise.then(function(e){g.dispositions.unshift(e.toJSON()),o.success({title:"Disposition properly created",msg:g.disposition.name?g.disposition.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDisposition=function(){g.errors=[],d.disposition.update({id:g.disposition.id},g.disposition).$promise.then(function(e){var t=_.find(g.dispositions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"Disposition properly saved!",msg:g.disposition.name?g.disposition.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDisposition=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The disposition will be deleted.").ariaLabel("Delete Disposition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:g.disposition.id}).$promise.then(function(){_.remove(g.dispositions,{id:g.disposition.id}),o.success({title:"Disposition properly deleted!",msg:(g.disposition.name||"disposition")+" has been deleted!"}),v(g.disposition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dispositions","disposition","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.dispositions=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dispositions",b.listOrder="",b.listOrderAsc=null,b.selectedDispositions=[],b.query={fields:"createdAt,updatedAt,id,name",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{disposition:e,dispositions:b.dispositions.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=i.confirm().title("Are you sure want to delete the "+_.startCase("disposition")+"?").htmlContent("<b>"+(e.name||"disposition")+"</b> will be deleted.").ariaLabel("delete disposition").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDispositions=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.disposition.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dispositions",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditDisposition=function(e,t){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:t,dispositions:b.dispositions.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDisposition=S,b.exportSelectedDispositions=function(){var e=angular.copy(b.selectedDispositions);return b.selectedDispositions=[],e},b.deleteSelectedDispositions=function(e){var t=i.confirm().title("Are you sure want to delete the selected dispositions?").htmlContent("<b>"+b.selectedDispositions.length+" selected</b> will be deleted.").ariaLabel("delete Dispositions").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedDispositions.forEach(function(e){S(e)}),b.selectedDispositions=[]})},b.deselectDispositions=function(){b.selectedDispositions=[]},b.selectAllDispositions=function(){b.selectedDispositions=b.dispositions.rows};var A=!0,E=1;function y(e){b.dispositions=e||{count:0,rows:[]}}function S(e){m.disposition.delete({id:e.id}).$promise.then(function(){_.remove(b.dispositions.rows,{id:e.id}),b.dispositions.count-=1,b.dispositions.rows.length||b.getDispositions(),p.success({title:_.startCase("Disposition")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getDispositions())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("DispositionsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.intervals,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.interval={},c.intervalIntervals={count:0,rows:[]},c.selectedIntervalIntervals=[],c.crudPermissions,c.sortableTable={animation:100,onSort:function(e){l.interval.addIntervals({id:c.interval.id},e.models).$promise.then(function(e){c.intervalIntervals.rows=e}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},c.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},c.init=function(e,t){c.interval=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,c.query.id=c.interval.id,c.getIntervalIntervals()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getIntervalIntervals=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.interval.getIntervals(c.query,p).$promise},c.createOrEditIntervalInterval=function(e,t){s.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:c.interval,interval:t,intervals:c.intervalIntervals.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedIntervalIntervals=function(){var e=angular.copy(c.selectedIntervalIntervals);return c.selectedIntervalIntervals=[],e},c.deleteIntervalInterval=g,c.deleteSelectedIntervalIntervals=function(e){var t=s.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+c.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedIntervalIntervals.forEach(function(e){g(e)}),c.selectedIntervalIntervals=[]})};var m=!0,u=1;function p(e){c.intervalIntervals=e||{count:0,rows:[]}}function g(e){l.interval.delete({id:e.id}).$promise.then(function(){_.remove(c.intervalIntervals.rows,{id:e.id}),c.intervalIntervals.count-=1,c.intervalIntervals.rows.length||c.getIntervalIntervals(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getIntervalIntervals())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.intervals,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.intervals=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="intervals",b.listOrder="",b.listOrderAsc=null,b.selectedIntervals=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},b.editstate=function(e,t){n.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getIntervals=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.interval.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Intervals",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditInterval=function(e,t){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:t,intervals:b.intervals.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteInterval=S,b.exportSelectedIntervals=function(){var e=angular.copy(b.selectedIntervals);return b.selectedIntervals=[],e},b.deleteSelectedIntervals=function(e){var t=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+b.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedIntervals.forEach(function(e){S(e)}),b.selectedIntervals=[]})},b.deselectIntervals=function(){b.selectedIntervals=[]},b.selectAllIntervals=function(){b.selectedIntervals=b.intervals.rows};var A=!0,E=1;function y(e){b.intervals=e||{count:0,rows:[]}}function S(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(b.intervals.rows,{id:e.id}),b.intervals.count-=1,b.intervals.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("IntervalsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.pauses,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.pauses=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="pauses",b.listOrder="",b.listOrderAsc=null,b.selectedPauses=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{pause:e,pauses:b.pauses.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getPauses=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.pause.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Pauses",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditPause=function(e,t){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:t,pauses:b.pauses.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deletePause=S,b.exportSelectedPauses=function(){var e=angular.copy(b.selectedPauses);return b.selectedPauses=[],e},b.deleteSelectedPauses=function(e){var t=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+b.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedPauses.forEach(function(e){S(e)}),b.selectedPauses=[]})},b.deselectPauses=function(){b.selectedPauses=[]},b.selectAllPauses=function(){b.selectedPauses=b.pauses.rows};var A=!0,E=1;function y(e){b.pauses=e||{count:0,rows:[]}}function S(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(b.pauses.rows,{id:e.id}),b.pauses.count-=1,b.pauses.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,t,n,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,t){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=t.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=t.node.id,y()}function b(e,t){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=t.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=t.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 t=e&&e.rows?e.rows:[];if(0<t.length){var n=[];return a.forEach(function(e){_.find(t,["resourceId",e.id])&&n.push(e)}),S({count:n.length,rows:n})}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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.schedules,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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.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=(t={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,t}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):t),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 t},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[],g.treeReports.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtreeReports",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||[],g.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",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||[],g.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++){_.some(t,{resourceId:g.mailAccounts[i].id})?(g.mailAccounts[i].canSelect=!0,n.push(g.mailAccounts[i])):a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,n.push(g.mailAccounts[i]))}g.mailAccounts=n})}else{var n=[],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,n.push(g.mailAccounts[i]));g.mailAccounts=n}}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.schedules=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="schedules",b.listOrder="",b.listOrderAsc=null,b.selectedScheduler=[],b.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},b.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.editdialog=function(e,t){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{schedule:e,schedules:b.schedules.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.runconfirm=function(e,t){var n=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getScheduler=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.schedule.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Scheduler",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSchedule=function(e,t){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:t,schedules:b.schedules.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSchedule=S,b.exportSelectedScheduler=function(){var e=angular.copy(b.selectedScheduler);return b.selectedScheduler=[],e},b.deleteSelectedScheduler=function(e){var t=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+b.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedScheduler.forEach(function(e){S(e)}),b.selectedScheduler=[]})},b.deselectScheduler=function(){b.selectedScheduler=[]},b.selectAllScheduler=function(){b.selectedScheduler=b.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){b.treeReports=e.rows||[],b.treeReports.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtreeReports",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.mailAccounts=e.rows||[],b.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.mailAccounts=e.rows||[],b.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.schedule&&(a=_.find(b.mailAccounts,{id:Number(b.schedule.MailAccountId)}));for(var i=0;i<b.mailAccounts.length;i++){_.some(t,{resourceId:b.mailAccounts[i].id})?(b.mailAccounts[i].canSelect=!0,n.push(b.mailAccounts[i])):a&&b.mailAccounts[i].id===a.id&&(b.mailAccounts[i].canSelect=!1,n.push(b.mailAccounts[i]))}b.mailAccounts=n})}else{var n=[],a=null;b.schedule&&(a=_.find(b.mailAccounts,{id:Number(b.schedule.MailAccountId)}));for(var i=0;i<b.mailAccounts.length;i++)a&&b.mailAccounts[i].id===a.id&&(b.mailAccounts[i].canSelect=!1,n.push(b.mailAccounts[i]));b.mailAccounts=n}}).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 A=!0,E=1;function y(e){b.schedules=e||{count:0,rows:[]}}function S(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(b.schedules.rows,{id:e.id}),b.schedules.count-=1,b.schedules.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("SchedulesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.sounds,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.sounds=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="sounds",b.listOrder="",b.listOrderAsc=null,b.selectedSounds=[],b.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{sound:e,sounds:b.sounds.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=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",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getSounds=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.sound.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Sounds",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditSound=function(e,t){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:t,sounds:b.sounds.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteSound=S,b.exportSelectedSounds=function(){var e=angular.copy(b.selectedSounds);return b.selectedSounds=[],e},b.deleteSelectedSounds=function(e){var t=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+b.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedSounds.forEach(function(e){S(e)}),b.selectedSounds=[]})},b.deselectSounds=function(){b.selectedSounds=[]},b.selectAllSounds=function(){b.selectedSounds=b.sounds.rows},b.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:b.sounds.rows}})};var A=!0,E=1;function y(e){b.sounds=e||{count:0,rows:[]}}function S(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(b.sounds.rows,{id:e.id}),b.sounds.count-=1,b.sounds.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,t,n,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 t=["wav","mp3","gsm"];if(!_.includes(t,e.getExtension()))return n.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+t.join()}),!1;if(e.size>l)return n.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(t,e){if(t.id===a.uniqueIdentifier){var n=new FileReader;n.readAsDataURL(t.file.file),n.onload=function(e){t.url=e.target.result}}})},o.uploadError=function(e,t){o.ngFlow.flow.cancel(),n.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",n.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){t.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.tags,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.tags=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="tags",b.listOrder="",b.listOrderAsc=null,b.selectedTags=[],b.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{tag:e,tags:b.tags.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTags=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.tag.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Tags",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTag=function(e,t){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:t,tags:b.tags.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTag=S,b.exportSelectedTags=function(){var e=angular.copy(b.selectedTags);return b.selectedTags=[],e},b.deleteSelectedTags=function(e){var t=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+b.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTags.forEach(function(e){S(e)}),b.selectedTags=[]})},b.deselectTags=function(){b.selectedTags=[]},b.selectAllTags=function(){b.selectedTags=b.tags.rows};var A=!0,E=1;function y(e){b.tags=e||{count:0,rows:[]}}function S(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(b.tags.rows,{id:e.id}),b.tags.count-=1,b.tags.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("TagsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.templates,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.templates=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="templates",b.listOrder="",b.listOrderAsc=null,b.selectedTemplates=[],b.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{template:e,templates:b.templates.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTemplates=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.template.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Templates",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTemplate=function(e,t){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:t,templates:b.templates.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTemplate=S,b.exportSelectedTemplates=function(){var e=angular.copy(b.selectedTemplates);return b.selectedTemplates=[],e},b.deleteSelectedTemplates=function(e){var t=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+b.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTemplates.forEach(function(e){S(e)}),b.selectedTemplates=[]})},b.deselectTemplates=function(){b.selectedTemplates=[]},b.selectAllTemplates=function(){b.selectedTemplates=b.templates.rows};var A=!0,E=1;function y(e){b.templates=e||{count:0,rows:[]}}function S(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(b.templates.rows,{id:e.id}),b.templates.count-=1,b.templates.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("TemplatesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_TRIGGER",g.trigger=angular.copy(l),g.triggers=r,g.newTrigger=!1,g.trigger||(g.trigger={channel:"voice"},g.title="TOOLS.NEW_TRIGGER",g.newTrigger=!0),g.addNewTrigger=function(){g.errors=[],d.trigger.save(g.trigger).$promise.then(function(e){g.triggers.unshift(e.toJSON()),o.success({title:"Trigger properly created",msg:g.trigger.name?g.trigger.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrigger=function(){g.errors=[],d.trigger.update({id:g.trigger.id},g.trigger).$promise.then(function(e){var t=_.find(g.triggers,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"Trigger properly saved!",msg:g.trigger.name?g.trigger.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrigger=function(e){g.errors=[];var t=a.confirm().title("Are you sure?").content("The trigger will be deleted.").ariaLabel("Delete Trigger").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){d.trigger.delete({id:g.trigger.id}).$promise.then(function(){_.remove(g.triggers,{id:g.trigger.id}),o.success({title:"Trigger properly deleted!",msg:(g.trigger.name||"trigger")+" has been deleted!"}),v(g.trigger)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.trigger={},c.triggerActions={count:0,rows:[]},c.selectedTriggerActions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,action,data1,data2,data7,data3,data4,data5,data6",limit:10,page:1},c.arrayaction=_.keyBy([{option:"CONTACT_MANAGER",value:"'contactManager'",ngIf:"vm.trigger.channel == 'voice'"},{option:"INTEGRATIONS",value:"'integration'",ngIf:"vm.trigger.channel == 'voice' && ((vm.newAction && vm.hasModulePermissions.Integrations) || !vm.newAction)"},{option:"MOTION_BAR",value:"'motionbar'"},{option:"JSCRIPTY",value:"'jscripty'"},{option:"URL_FORWARD",value:"'urlForward'"},{option:"BROWSER",value:"'browser'"},{option:"BOT",value:"'bot'",ngIf:"vm.trigger.channel == 'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.browserValues=_.keyBy([{option:"Popup",value:"'0'"},{option:"CTI URL",value:"'1'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.autoCreateContact=_.keyBy([{option:"yes",value:"'1'"},{option:"no",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.urlForwardValues=_.keyBy([{option:"GET",value:"'GET'"},{option:"POST",value:"'POST'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.integrationValues=_.keyBy([{option:"Zendesk",value:"'zendesk'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1301])"},{option:"Salesforce",value:"'salesforce'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1302])"},{option:"SugarCRM",value:"'sugarcrm'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1305])"},{option:"Freshdesk",value:"'freshdesk'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1303])"},{option:"Desk",value:"'desk'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1306])"},{option:"Zoho",value:"'zoho'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1307])"},{option:"vTiger",value:"'vtiger'",ngIf:"(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction",disabled:"(!vm.newAction && !vm.hasSectionPermissions[1308])"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.motionbarValues=_.keyBy([{option:"Popup",value:"'0'"},{option:"CTI URL",value:"'1'"},{option:"Windows App",value:"'2'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.eventVariables=_.keyBy([{option:"yes",value:"'1'"},{option:"no",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.location=_.keyBy([{option:"NEW_TAB",value:"'0'"},{option:"NEW_WINDOW",value:"'1'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.init=function(e,t){c.trigger=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.trigger.id,c.query.ActionId=c.trigger.id,c.getTriggerActions(),n=[1301,1302,1303,1305,1306,1307,1308],d.hasModulesPermissions(["Integrations"]).then(function(e){c.hasModulePermissions=_.merge(c.hasModulePermissions,e)}).then(function(){d.hasSectionsPermissions(n).then(function(e){c.hasSectionPermissions=_.merge(c.hasSectionPermissions,e)})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTEGRATIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})});var n},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the action?").htmlContent("<b>"+(e.name||"action")+"</b> will be deleted.").ariaLabel("delete action").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.success=p,c.getTriggerActions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.trigger.getActions(c.query,p).$promise},c.createOrEditTriggerAction=function(e,t){s.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:c.trigger,action:t,actions:c.triggerActions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedTriggerActions=function(){var e=angular.copy(c.selectedTriggerActions);return c.selectedTriggerActions=[],e},c.deleteTriggerAction=g,c.deleteSelectedTriggerActions=function(e){var t=s.confirm().title("Are you sure want to delete the selected actions?").htmlContent("<b>"+c.selectedTriggerActions.length+" selected</b> will be deleted.").ariaLabel("delete actions").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedTriggerActions.forEach(function(e){g(e)}),c.selectedTriggerActions=[]})},d.hasRole("admin")?l.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){c.lists=e.rows||[],c.lists.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){c.lists=e.rows||[],c.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var t=_.find(c.lists,{id:Number(e.data1)});a.push(t)}});for(var i=0;i<c.lists.length;i++){if(_.some(t,{resourceId:c.lists[i].id}))c.lists[i].canSelect=!0,n.push(c.lists[i]);else _.some(a,{id:c.lists[i].id})&&(c.lists[i].canSelect=!1,n.push(c.lists[i]))}c.lists=n})}else{var n=[],a=[];c.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var t=_.find(c.lists,{id:Number(e.data1)});a.push(t)}});for(var i=0;i<c.lists.length;i++){_.some(a,{id:c.lists[i].id})&&(c.lists[i].canSelect=!1,n.push(c.lists[i]))}c.lists=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){c.projects=e.rows||[],c.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){c.projects=e.rows||[],c.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var t=_.find(c.projects,{id:Number(e.data1)});a.push(t)}});for(var i=0;i<c.projects.length;i++){if(_.some(t,{resourceId:c.projects[i].id}))c.projects[i].canSelect=!0,n.push(c.projects[i]);else _.some(a,{id:c.projects[i].id})&&(c.projects[i].canSelect=!1,n.push(c.projects[i]))}c.projects=n})}else{var n=[],a=[];c.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var t=_.find(c.projects,{id:Number(e.data1)});a.push(t)}});for(var i=0;i<c.projects.length;i++){_.some(a,{id:c.projects[i].id})&&(c.projects[i].canSelect=!1,n.push(c.projects[i]))}c.projects=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intZendeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.zendeskAccounts=e.rows||[],c.zendeskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzendeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intDeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.deskAccounts=e.rows||[],c.deskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intZohoAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.zohoAccounts=e.rows||[],c.zohoAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzohoAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intSalesforceAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.salesforceAccounts=e.rows||[],c.salesforceAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsalesforceAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intSugarcrmAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.sugarcrmAccounts=e.rows||[],c.sugarcrmAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsugarcrmAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intFreshdeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.freshdeskAccounts=e.rows||[],c.freshdeskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfreshdeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intVtigerAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.vtigerAccounts=e.rows||[],c.vtigerAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvtigerAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intZendeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.zendeskConfigurations=e.rows||[],c.zendeskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzendeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intDeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.deskConfigurations=e.rows||[],c.deskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intZohoConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.zohoConfigurations=e.rows||[],c.zohoConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzohoConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intSalesforceConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.salesforceConfigurations=e.rows||[],c.salesforceConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsalesforceConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intSugarcrmConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.sugarcrmConfigurations=e.rows||[],c.sugarcrmConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsugarcrmConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intFreshdeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.freshdeskConfigurations=e.rows||[],c.freshdeskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfreshdeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),l.intVtigerConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){c.vtigerConfigurations=e.rows||[],c.vtigerConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvtigerConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.templates=e.rows||[],c.templates.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.templates=e.rows||[],c.templates.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerActions.rows.forEach(function(e){if("motionbar"===e.action){var t=_.find(c.templates,{id:Number(e.data2)});a.push(t)}});for(var i=0;i<c.templates.length;i++){if(_.some(t,{resourceId:c.templates[i].id}))c.templates[i].canSelect=!0,n.push(c.templates[i]);else _.some(a,{id:c.templates[i].id})&&(c.templates[i].canSelect=!1,n.push(c.templates[i]))}c.templates=n})}else{var n=[],a=[];c.triggerActions.rows.forEach(function(e){if("motionbar"===e.action){var t=_.find(c.templates,{id:Number(e.data2)});a.push(t)}});for(var i=0;i<c.templates.length;i++){_.some(a,{id:c.templates[i].id})&&(c.templates[i].canSelect=!1,n.push(c.templates[i]))}c.templates=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.triggerActions=e||{count:0,rows:[]}}function g(e){l.action.delete({id:e.id}).$promise.then(function(){_.remove(c.triggerActions.rows,{id:e.id}),c.triggerActions.count-=1,c.triggerActions.rows.length||c.getTriggerActions(),r.success({title:"Action deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getTriggerActions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="TOOLS.EDIT_ACTION",v.action=angular.copy(l),v.actions=r,v.newAction=!1,v.trigger=angular.copy(d),v.action||(v.action={data3:"0",data4:"0",data5:"800",data6:"600"},v.title="TOOLS.NEW_ACTION",v.newAction=!0),t.params.id&&(v.action.ActionId=t.params.id),v.addNewAction=function(){v.errors=[],c.trigger.addAction({id:t.params.id},v.action).$promise.then(function(e){v.actions.unshift(e.toJSON()),o.success({title:"Action properly created",msg:v.action.name?v.action.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveAction=function(){v.errors=[],c.action.update({id:v.action.id},v.action).$promise.then(function(e){var t=_.find(v.actions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"Action properly saved!",msg:v.action.name?v.action.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteAction=function(e){v.errors=[];var t=a.confirm().title("Are you sure?").content("The action will be deleted.").ariaLabel("Delete Action").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){c.action.delete({id:v.action.id}).$promise.then(function(){_.remove(v.actions,{id:v.action.id}),o.success({title:"Action properly deleted!",msg:(v.action.name||"action")+" has been deleted!"}),h(v.action)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.onActionInit=function(){m.hasModulesPermissions(["Integrations"]).then(function(e){v.hasModulePermissions=_.merge(v.hasModulePermissions,e)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULES_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})},v.onIntegrationInit=function(){m.hasSectionsPermissions([1301,1302,1303,1305,1306,1307,1308]).then(function(e){v.hasSectionPermissions=_.merge(v.hasSectionPermissions,e)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})},v.closeDialog=h,m.hasRole("admin")?c.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){v.lists=e.rows||[],v.lists.forEach(function(e){e.canSelect=!0})}).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.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){v.lists=e.rows||[],v.lists.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.action&&(a=_.find(v.lists,{id:Number(v.action.data1)}));for(var i=0;i<v.lists.length;i++){_.some(t,{resourceId:v.lists[i].id})?(v.lists[i].canSelect=!0,n.push(v.lists[i])):a&&v.lists[i].id===a.id&&(v.lists[i].canSelect=!1,n.push(v.lists[i]))}v.lists=n})}else{var n=[],a=null;v.action&&(a=_.find(v.lists,{id:Number(v.action.data1)}));for(var i=0;i<v.lists.length;i++)a&&v.lists[i].id===a.id&&(v.lists[i].canSelect=!1,n.push(v.lists[i]));v.lists=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){v.projects=e.rows||[],v.projects.forEach(function(e){e.canSelect=!0})}).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.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){v.projects=e.rows||[],v.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.action&&(a=_.find(v.projects,{id:Number(v.action.data1)}));for(var i=0;i<v.projects.length;i++){_.some(t,{resourceId:v.projects[i].id})?(v.projects[i].canSelect=!0,n.push(v.projects[i])):a&&v.projects[i].id===a.id&&(v.projects[i].canSelect=!1,n.push(v.projects[i]))}v.projects=n})}else{var n=[],a=null;v.action&&(a=_.find(v.projects,{id:Number(v.action.data1)}));for(var i=0;i<v.projects.length;i++)a&&v.projects[i].id===a.id&&(v.projects[i].canSelect=!1,n.push(v.projects[i]));v.projects=n}}).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.intZendeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.zendeskAccounts=e.rows||[],v.zendeskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzendeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.deskAccounts=e.rows||[],v.deskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.zohoAccounts=e.rows||[],v.zohoAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzohoAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.salesforceAccounts=e.rows||[],v.salesforceAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsalesforceAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.sugarcrmAccounts=e.rows||[],v.sugarcrmAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsugarcrmAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.freshdeskAccounts=e.rows||[],v.freshdeskAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfreshdeskAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.vtigerAccounts=e.rows||[],v.vtigerAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvtigerAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.zendeskConfigurations=e.rows||[],v.zendeskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzendeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.deskConfigurations=e.rows||[],v.deskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.zohoConfigurations=e.rows||[],v.zohoConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETzohoConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.salesforceConfigurations=e.rows||[],v.salesforceConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsalesforceConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.sugarcrmConfigurations=e.rows||[],v.sugarcrmConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsugarcrmConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.freshdeskConfigurations=e.rows||[],v.freshdeskConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfreshdeskConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerConfiguration.get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){v.vtigerConfigurations=e.rows||[],v.vtigerConfigurations.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvtigerConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.templates=e.rows||[],v.templates.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.templates=e.rows||[],v.templates.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.action&&(a=_.find(v.templates,{id:Number(v.action.data2)}));for(var i=0;i<v.templates.length;i++){_.some(t,{resourceId:v.templates[i].id})?(v.templates[i].canSelect=!0,n.push(v.templates[i])):a&&v.templates[i].id===a.id&&(v.templates[i].canSelect=!1,n.push(v.templates[i]))}v.templates=n})}else{var n=[],a=null;v.action&&(a=_.find(v.templates,{id:Number(v.action.data2)}));for(var i=0;i<v.templates.length;i++)a&&v.templates[i].id===a.id&&(v.templates[i].canSelect=!1,n.push(v.templates[i]));v.templates=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtemplates",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,t,n,s,a,i,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.trigger={},c.triggerAllConditions={count:0,rows:[]},c.selectedTriggerAllConditions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,field,operator,value",limit:10,page:1},c.arrayfield=_.keyBy([{option:"Queue",value:"'queue'",ngIf:"vm.trigger.channel == 'voice'"},{option:"Call_Status",value:"'lastevent'",ngIf:"vm.trigger.channel == 'voice'"},{option:"OutboundRoute",value:"'routeId'",ngIf:"vm.trigger.channel == 'voice'"},{option:"Account",value:"'account'",ngIf:"vm.trigger.channel != 'voice'"},{option:"Interaction",value:"'interaction'",ngIf:"vm.trigger.channel != 'voice'"},{option:"Message",value:"'message'",ngIf:"vm.trigger.channel != 'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.arrayoperator=_.keyBy([{option:"Equals",value:"'equals'"},{option:"Not_Equals",value:"'not_equals'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.callStatusValues=_.keyBy([{option:"Abandon",value:"'abandoned'"},{option:"Hangup",value:"'complete'"},{option:"Reject",value:"'rejected'"},{option:"Ring",value:"'called'"},{option:"Answer",value:"'connect'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.interactionStatusValues=_.keyBy([{option:"Opened",value:"'opened'"},{option:"Closed",value:"'closed'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.messageStatusValues=_.keyBy([{option:"Incoming",value:"'in'"},{option:"Outgoing",value:"'out'"},{option:"Accepted",value:"'accept'"},{option:"Rejected",value:"'reject'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.init=function(e,t){c.trigger=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.trigger.id,c.query.TriggerAllId=c.trigger.id,c.getTriggerAllConditions()},c.deleteConfirm=function(e,t){var n=i.confirm().title("Are you sure want to delete the allCondition?").htmlContent("<b>"+(e.name||"allCondition")+"</b> will be deleted.").ariaLabel("delete allCondition").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){v(e)},function(){console.log("CANCEL")})},c.success=g,c.getTriggerAllConditions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.trigger.getAllConditions(c.query,g).$promise},c.createOrEditTriggerAllCondition=function(e,t){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:c.trigger,allCondition:t,allconditions:c.triggerAllConditions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedTriggerAllConditions=function(){var e=angular.copy(c.selectedTriggerAllConditions);return c.selectedTriggerAllConditions=[],e},c.deleteTriggerAllCondition=v,c.deleteSelectedTriggerAllConditions=function(e){var t=i.confirm().title("Are you sure want to delete the selected allconditions?").htmlContent("<b>"+c.selectedTriggerAllConditions.length+" selected</b> will be deleted.").ariaLabel("delete allconditions").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){c.selectedTriggerAllConditions.forEach(function(e){v(e)}),c.selectedTriggerAllConditions=[]})},d.hasRole("admin")?l.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.chatAccounts=e.rows||[],c.chatAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.chatAccounts=e.rows||[],c.chatAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.chatAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.chatAccounts.length;i++){if(_.some(t,{resourceId:c.chatAccounts[i].id}))c.chatAccounts[i].canSelect=!0,n.push(c.chatAccounts[i]);else _.some(a,{id:c.chatAccounts[i].id})&&(c.chatAccounts[i].canSelect=!1,n.push(c.chatAccounts[i]))}c.chatAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.chatAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.chatAccounts.length;i++){_.some(a,{id:c.chatAccounts[i].id})&&(c.chatAccounts[i].canSelect=!1,n.push(c.chatAccounts[i]))}c.chatAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.mailAccounts=e.rows||[],c.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.mailAccounts=e.rows||[],c.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.mailAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.mailAccounts.length;i++){if(_.some(t,{resourceId:c.mailAccounts[i].id}))c.mailAccounts[i].canSelect=!0,n.push(c.mailAccounts[i]);else _.some(a,{id:c.mailAccounts[i].id})&&(c.mailAccounts[i].canSelect=!1,n.push(c.mailAccounts[i]))}c.mailAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.mailAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.mailAccounts.length;i++){_.some(a,{id:c.mailAccounts[i].id})&&(c.mailAccounts[i].canSelect=!1,n.push(c.mailAccounts[i]))}c.mailAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.smsAccounts=e.rows||[],c.smsAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.smsAccounts=e.rows||[],c.smsAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.smsAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.smsAccounts.length;i++){if(_.some(t,{resourceId:c.smsAccounts[i].id}))c.smsAccounts[i].canSelect=!0,n.push(c.smsAccounts[i]);else _.some(a,{id:c.smsAccounts[i].id})&&(c.smsAccounts[i].canSelect=!1,n.push(c.smsAccounts[i]))}c.smsAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.smsAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.smsAccounts.length;i++){_.some(a,{id:c.smsAccounts[i].id})&&(c.smsAccounts[i].canSelect=!1,n.push(c.smsAccounts[i]))}c.smsAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.faxAccounts=e.rows||[],c.faxAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.faxAccounts=e.rows||[],c.faxAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.faxAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.faxAccounts.length;i++){if(_.some(t,{resourceId:c.faxAccounts[i].id}))c.faxAccounts[i].canSelect=!0,n.push(c.faxAccounts[i]);else _.some(a,{id:c.faxAccounts[i].id})&&(c.faxAccounts[i].canSelect=!1,n.push(c.faxAccounts[i]))}c.faxAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.faxAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.faxAccounts.length;i++){_.some(a,{id:c.faxAccounts[i].id})&&(c.faxAccounts[i].canSelect=!1,n.push(c.faxAccounts[i]))}c.faxAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.openchannelAccounts=e.rows||[],c.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.openchannelAccounts=e.rows||[],c.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.openchannelAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.openchannelAccounts.length;i++){if(_.some(t,{resourceId:c.openchannelAccounts[i].id}))c.openchannelAccounts[i].canSelect=!0,n.push(c.openchannelAccounts[i]);else _.some(a,{id:c.openchannelAccounts[i].id})&&(c.openchannelAccounts[i].canSelect=!1,n.push(c.openchannelAccounts[i]))}c.openchannelAccounts=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.openchannelAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.openchannelAccounts.length;i++){_.some(a,{id:c.openchannelAccounts[i].id})&&(c.openchannelAccounts[i].canSelect=!1,n.push(c.openchannelAccounts[i]))}c.openchannelAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];d.hasRole("admin")?l.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){c.queues=e.rows||[],c.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){c.queues=e.rows||[],c.queues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?c.queues.forEach(function(e){e.type===m[a].type&&(e.canSelect=!0)}):n.push(l.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:c.queues,count:c.queues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("queue"===e.field){var t=_.find(c.queues,{name:e.value});a.push(t)}});for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)c.queues.forEach(function(e){e.type===m[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):_.some(a,{id:e.id})&&(e.canSelect=!1,n.push(e)))});c.queues=n}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){c.outboundRoutes=e.rows||[],c.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){c.outboundRoutes=e.rows||[],c.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var t=_.find(c.outboundRoutes,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.outboundRoutes.length;i++){if(_.some(t,{resourceId:c.outboundRoutes[i].id}))c.outboundRoutes[i].canSelect=!0,n.push(c.outboundRoutes[i]);else _.some(a,{id:c.outboundRoutes[i].id})&&(c.outboundRoutes[i].canSelect=!1,n.push(c.outboundRoutes[i]))}c.outboundRoutes=n})}else{var n=[],a=[];c.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var t=_.find(c.outboundRoutes,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.outboundRoutes.length;i++){_.some(a,{id:c.outboundRoutes[i].id})&&(c.outboundRoutes[i].canSelect=!1,n.push(c.outboundRoutes[i]))}c.outboundRoutes=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var u=!0,p=1;function g(e){c.triggerAllConditions=e||{count:0,rows:[]}}function v(e){l.condition.delete({id:e.id}).$promise.then(function(){_.remove(c.triggerAllConditions.rows,{id:e.id}),c.triggerAllConditions.count-=1,c.triggerAllConditions.rows.length||c.getTriggerAllConditions(),r.success({title:"AllCondition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){u?a(function(){u=!1}):(t||(p=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=p),c.getTriggerAllConditions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,n,a,s,i,o,r,l,d,c,m,u,p,g){var v=this;v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="TOOLS.EDIT_ALLCONDITION",v.allCondition=angular.copy(l),v.allconditions=r,v.newAllCondition=!1,v.trigger=angular.copy(d),v.allCondition||(v.allCondition={field:"queue",operator:"equals",value:"abandoned",value:"opened",value:"in"},v.title="TOOLS.NEW_ALLCONDITION",v.newAllCondition=!0),t.params.id&&(v.allCondition.TriggerAllId=t.params.id),v.addNewAllCondition=function(){v.errors=[],c.trigger.addAllCondition({id:t.params.id},v.allCondition).$promise.then(function(e){v.allconditions.unshift(e.toJSON()),o.success({title:"AllCondition properly created",msg:v.allCondition.name?v.allCondition.name+" has been created!":""}),f(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveAllCondition=function(){v.errors=[],c.condition.update({id:v.allCondition.id},v.allCondition).$promise.then(function(e){var t=_.find(v.allconditions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"AllCondition properly saved!",msg:v.allCondition.name?v.allCondition.name+" has been saved!":""}),f(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteAllCondition=function(e){v.errors=[];var t=a.confirm().title("Are you sure?").content("The allCondition will be deleted.").ariaLabel("Delete AllCondition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){c.condition.delete({id:v.allCondition.id}).$promise.then(function(){_.remove(v.allconditions,{id:v.allCondition.id}),o.success({title:"AllCondition properly deleted!",msg:(v.allCondition.name||"allCondition")+" has been deleted!"}),f(v.allCondition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=f,m.hasRole("admin")?c.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.chatAccounts=e.rows||[],v.chatAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.chatAccounts=e.rows||[],v.chatAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.chatAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.chatAccounts.length;i++){_.some(t,{resourceId:v.chatAccounts[i].id})?(v.chatAccounts[i].canSelect=!0,n.push(v.chatAccounts[i])):a&&v.chatAccounts[i].id===a.id&&(v.chatAccounts[i].canSelect=!1,n.push(v.chatAccounts[i]))}v.chatAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.chatAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.chatAccounts.length;i++)a&&v.chatAccounts[i].id===a.id&&(v.chatAccounts[i].canSelect=!1,n.push(v.chatAccounts[i]));v.chatAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.mailAccounts=e.rows||[],v.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.mailAccounts=e.rows||[],v.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.mailAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.mailAccounts.length;i++){_.some(t,{resourceId:v.mailAccounts[i].id})?(v.mailAccounts[i].canSelect=!0,n.push(v.mailAccounts[i])):a&&v.mailAccounts[i].id===a.id&&(v.mailAccounts[i].canSelect=!1,n.push(v.mailAccounts[i]))}v.mailAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.mailAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.mailAccounts.length;i++)a&&v.mailAccounts[i].id===a.id&&(v.mailAccounts[i].canSelect=!1,n.push(v.mailAccounts[i]));v.mailAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.smsAccounts=e.rows||[],v.smsAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.smsAccounts=e.rows||[],v.smsAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.smsAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.smsAccounts.length;i++){_.some(t,{resourceId:v.smsAccounts[i].id})?(v.smsAccounts[i].canSelect=!0,n.push(v.smsAccounts[i])):a&&v.smsAccounts[i].id===a.id&&(v.smsAccounts[i].canSelect=!1,n.push(v.smsAccounts[i]))}v.smsAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.smsAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.smsAccounts.length;i++)a&&v.smsAccounts[i].id===a.id&&(v.smsAccounts[i].canSelect=!1,n.push(v.smsAccounts[i]));v.smsAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.faxAccounts=e.rows||[],v.faxAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.faxAccounts=e.rows||[],v.faxAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.faxAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.faxAccounts.length;i++){_.some(t,{resourceId:v.faxAccounts[i].id})?(v.faxAccounts[i].canSelect=!0,n.push(v.faxAccounts[i])):a&&v.faxAccounts[i].id===a.id&&(v.faxAccounts[i].canSelect=!1,n.push(v.faxAccounts[i]))}v.faxAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.faxAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.faxAccounts.length;i++)a&&v.faxAccounts[i].id===a.id&&(v.faxAccounts[i].canSelect=!1,n.push(v.faxAccounts[i]));v.faxAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.openchannelAccounts=e.rows||[],v.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.openchannelAccounts=e.rows||[],v.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.openchannelAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.openchannelAccounts.length;i++){_.some(t,{resourceId:v.openchannelAccounts[i].id})?(v.openchannelAccounts[i].canSelect=!0,n.push(v.openchannelAccounts[i])):a&&v.openchannelAccounts[i].id===a.id&&(v.openchannelAccounts[i].canSelect=!1,n.push(v.openchannelAccounts[i]))}v.openchannelAccounts=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.openchannelAccounts,{id:Number(v.allCondition.value)}));for(var i=0;i<v.openchannelAccounts.length;i++)a&&v.openchannelAccounts[i].id===a.id&&(v.openchannelAccounts[i].canSelect=!1,n.push(v.openchannelAccounts[i]));v.openchannelAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var h=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];function f(e){a.hide(e)}m.hasRole("admin")?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){v.queues=e.rows||[],v.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){v.queues=e.rows||[],v.queues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<h.length;t++)e.push(c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:h[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<h.length;a++){var i=_.find(t,["sectionId",h[a].id]);i?i.autoAssociation?v.queues.forEach(function(e){e.type===h[a].type&&(e.canSelect=!0)}):n.push(c.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:v.queues,count:v.queues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;v.allCondition&&(a=_.find(v.queues,{name:v.allCondition.value}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<h.length;i++)v.queues.forEach(function(e){e.type===h[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});v.queues=n}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){v.outboundRoutes=e.rows||[],v.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",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){v.outboundRoutes=e.rows||[],v.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.allCondition&&(a=_.find(v.outboundRoutes,{id:Number(v.allCondition.value)}));for(var i=0;i<v.outboundRoutes.length;i++){_.some(t,{resourceId:v.outboundRoutes[i].id})?(v.outboundRoutes[i].canSelect=!0,n.push(v.outboundRoutes[i])):a&&v.outboundRoutes[i].id===a.id&&(v.outboundRoutes[i].canSelect=!1,n.push(v.outboundRoutes[i]))}v.outboundRoutes=n})}else{var n=[],a=null;v.allCondition&&(a=_.find(v.outboundRoutes,{id:Number(v.allCondition.value)}));for(var i=0;i<v.outboundRoutes.length;i++)a&&v.outboundRoutes[i].id===a.id&&(v.outboundRoutes[i].canSelect=!1,n.push(v.outboundRoutes[i]));v.outboundRoutes=n}}).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","allconditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,t,n,s,a,i,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.trigger={},c.triggerAnyConditions={count:0,rows:[]},c.selectedTriggerAnyConditions=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,field,operator,value",limit:10,page:1},c.arrayfield=_.keyBy([{option:"Queue",value:"'queue'",ngIf:"vm.trigger.channel == 'voice'"},{option:"Call_Status",value:"'lastevent'",ngIf:"vm.trigger.channel == 'voice'"},{option:"OutboundRoute",value:"'routeId'",ngIf:"vm.trigger.channel == 'voice'"},{option:"Account",value:"'account'",ngIf:"vm.trigger.channel != 'voice'"},{option:"Interaction",value:"'interaction'",ngIf:"vm.trigger.channel != 'voice'"},{option:"Message",value:"'message'",ngIf:"vm.trigger.channel != 'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.arrayoperator=_.keyBy([{option:"Equals",value:"'equals'"},{option:"Not_Equals",value:"'not_equals'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.callStatusValues=_.keyBy([{option:"Abandon",value:"'abandoned'"},{option:"Hangup",value:"'complete'"},{option:"Reject",value:"'rejected'"},{option:"Ring",value:"'called'"},{option:"Answer",value:"'connect'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.interactionStatusValues=_.keyBy([{option:"Opened",value:"'opened'"},{option:"Closed",value:"'closed'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.messageStatusValues=_.keyBy([{option:"Incoming",value:"'in'"},{option:"Outgoing",value:"'out'"},{option:"Accepted",value:"'accept'"},{option:"Rejected",value:"'reject'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),c.init=function(e,t){c.trigger=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.trigger.id,c.query.TriggerAnyId=c.trigger.id,c.getTriggerAnyConditions()},c.deleteConfirm=function(e,t){var n=i.confirm().title("Are you sure want to delete the anyCondition?").htmlContent("<b>"+(e.name||"anyCondition")+"</b> will be deleted.").ariaLabel("delete anyCondition").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){v(e)},function(){console.log("CANCEL")})},c.success=g,c.getTriggerAnyConditions=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.trigger.getAnyConditions(c.query,g).$promise},c.createOrEditTriggerAnyCondition=function(e,t){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:c.trigger,anyCondition:t,anyconditions:c.triggerAnyConditions.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedTriggerAnyConditions=function(){var e=angular.copy(c.selectedTriggerAnyConditions);return c.selectedTriggerAnyConditions=[],e},c.deleteTriggerAnyCondition=v,c.deleteSelectedTriggerAnyConditions=function(e){var t=i.confirm().title("Are you sure want to delete the selected anyconditions?").htmlContent("<b>"+c.selectedTriggerAnyConditions.length+" selected</b> will be deleted.").ariaLabel("delete anyconditions").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){c.selectedTriggerAnyConditions.forEach(function(e){v(e)}),c.selectedTriggerAnyConditions=[]})},d.hasRole("admin")?l.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.chatAccounts=e.rows||[],c.chatAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.chatAccounts=e.rows||[],c.chatAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.chatAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.chatAccounts.length;i++){if(_.some(t,{resourceId:c.chatAccounts[i].id}))c.chatAccounts[i].canSelect=!0,n.push(c.chatAccounts[i]);else _.some(a,{id:c.chatAccounts[i].id})&&(c.chatAccounts[i].canSelect=!1,n.push(c.chatAccounts[i]))}c.chatAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.chatAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.chatAccounts.length;i++){_.some(a,{id:c.chatAccounts[i].id})&&(c.chatAccounts[i].canSelect=!1,n.push(c.chatAccounts[i]))}c.chatAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.mailAccounts=e.rows||[],c.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.mailAccounts=e.rows||[],c.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.mailAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.mailAccounts.length;i++){if(_.some(t,{resourceId:c.mailAccounts[i].id}))c.mailAccounts[i].canSelect=!0,n.push(c.mailAccounts[i]);else _.some(a,{id:c.mailAccounts[i].id})&&(c.mailAccounts[i].canSelect=!1,n.push(c.mailAccounts[i]))}c.mailAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.mailAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.mailAccounts.length;i++){_.some(a,{id:c.mailAccounts[i].id})&&(c.mailAccounts[i].canSelect=!1,n.push(c.mailAccounts[i]))}c.mailAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.smsAccounts=e.rows||[],c.smsAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.smsAccounts=e.rows||[],c.smsAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.smsAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.smsAccounts.length;i++){if(_.some(t,{resourceId:c.smsAccounts[i].id}))c.smsAccounts[i].canSelect=!0,n.push(c.smsAccounts[i]);else _.some(a,{id:c.smsAccounts[i].id})&&(c.smsAccounts[i].canSelect=!1,n.push(c.smsAccounts[i]))}c.smsAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.smsAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.smsAccounts.length;i++){_.some(a,{id:c.smsAccounts[i].id})&&(c.smsAccounts[i].canSelect=!1,n.push(c.smsAccounts[i]))}c.smsAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.faxAccounts=e.rows||[],c.faxAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.faxAccounts=e.rows||[],c.faxAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.faxAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.faxAccounts.length;i++){if(_.some(t,{resourceId:c.faxAccounts[i].id}))c.faxAccounts[i].canSelect=!0,n.push(c.faxAccounts[i]);else _.some(a,{id:c.faxAccounts[i].id})&&(c.faxAccounts[i].canSelect=!1,n.push(c.faxAccounts[i]))}c.faxAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.faxAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.faxAccounts.length;i++){_.some(a,{id:c.faxAccounts[i].id})&&(c.faxAccounts[i].canSelect=!1,n.push(c.faxAccounts[i]))}c.faxAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.openchannelAccounts=e.rows||[],c.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){c.openchannelAccounts=e.rows||[],c.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.openchannelAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.openchannelAccounts.length;i++){if(_.some(t,{resourceId:c.openchannelAccounts[i].id}))c.openchannelAccounts[i].canSelect=!0,n.push(c.openchannelAccounts[i]);else _.some(a,{id:c.openchannelAccounts[i].id})&&(c.openchannelAccounts[i].canSelect=!1,n.push(c.openchannelAccounts[i]))}c.openchannelAccounts=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("account"===e.field){var t=_.find(c.openchannelAccounts,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.openchannelAccounts.length;i++){_.some(a,{id:c.openchannelAccounts[i].id})&&(c.openchannelAccounts[i].canSelect=!1,n.push(c.openchannelAccounts[i]))}c.openchannelAccounts=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];d.hasRole("admin")?l.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){c.queues=e.rows||[],c.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){c.queues=e.rows||[],c.queues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?c.queues.forEach(function(e){e.type===m[a].type&&(e.canSelect=!0)}):n.push(l.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:c.queues,count:c.queues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("queue"===e.field){var t=_.find(c.queues,{name:e.value});a.push(t)}});for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)c.queues.forEach(function(e){e.type===m[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):_.some(a,{id:e.id})&&(e.canSelect=!1,n.push(e)))});c.queues=n}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?l.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){c.outboundRoutes=e.rows||[],c.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){c.outboundRoutes=e.rows||[],c.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;a=[],c.triggerAnyConditions.rows.forEach(function(e){if("routeId"===e.field){var t=_.find(c.outboundRoutes,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.outboundRoutes.length;i++){if(_.some(t,{resourceId:c.outboundRoutes[i].id}))c.outboundRoutes[i].canSelect=!0,n.push(c.outboundRoutes[i]);else _.some(a,{id:c.outboundRoutes[i].id})&&(c.outboundRoutes[i].canSelect=!1,n.push(c.outboundRoutes[i]))}c.outboundRoutes=n})}else{var n=[],a=[];c.triggerAnyConditions.rows.forEach(function(e){if("routeId"===e.field){var t=_.find(c.outboundRoutes,{id:Number(e.value)});a.push(t)}});for(var i=0;i<c.outboundRoutes.length;i++){_.some(a,{id:c.outboundRoutes[i].id})&&(c.outboundRoutes[i].canSelect=!1,n.push(c.outboundRoutes[i]))}c.outboundRoutes=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var u=!0,p=1;function g(e){c.triggerAnyConditions=e||{count:0,rows:[]}}function v(e){l.condition.delete({id:e.id}).$promise.then(function(){_.remove(c.triggerAnyConditions.rows,{id:e.id}),c.triggerAnyConditions.count-=1,c.triggerAnyConditions.rows.length||c.getTriggerAnyConditions(),r.success({title:"AnyCondition deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){u?a(function(){u=!1}):(t||(p=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=p),c.getTriggerAnyConditions())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,n,a,s,i,o,r,l,d,c,m,u,p,g){var v=this;v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="TOOLS.EDIT_ANYCONDITION",v.anyCondition=angular.copy(l),v.anyconditions=r,v.newAnyCondition=!1,v.trigger=angular.copy(d),v.anyCondition||(v.anyCondition={field:"queue",operator:"equals",value:"abandoned",value:"opened",value:"in"},v.title="TOOLS.NEW_ANYCONDITION",v.newAnyCondition=!0),t.params.id&&(v.anyCondition.TriggerAnyId=t.params.id),v.addNewAnyCondition=function(){v.errors=[],c.trigger.addAnyCondition({id:t.params.id},v.anyCondition).$promise.then(function(e){v.anyconditions.unshift(e.toJSON()),o.success({title:"AnyCondition properly created",msg:v.anyCondition.name?v.anyCondition.name+" has been created!":""}),f(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveAnyCondition=function(){v.errors=[],c.condition.update({id:v.anyCondition.id},v.anyCondition).$promise.then(function(e){var t=_.find(v.anyconditions,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),o.success({title:"AnyCondition properly saved!",msg:v.anyCondition.name?v.anyCondition.name+" has been saved!":""}),f(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteAnyCondition=function(e){v.errors=[];var t=a.confirm().title("Are you sure?").content("The anyCondition will be deleted.").ariaLabel("Delete AnyCondition").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).then(function(){c.condition.delete({id:v.anyCondition.id}).$promise.then(function(){_.remove(v.anyconditions,{id:v.anyCondition.id}),o.success({title:"AnyCondition properly deleted!",msg:(v.anyCondition.name||"anyCondition")+" has been deleted!"}),f(v.anyCondition)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else o.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=f,m.hasRole("admin")?c.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.chatAccounts=e.rows||[],v.chatAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.chatWebsite.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.chatAccounts=e.rows||[],v.chatAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.chatAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.chatAccounts.length;i++){_.some(t,{resourceId:v.chatAccounts[i].id})?(v.chatAccounts[i].canSelect=!0,n.push(v.chatAccounts[i])):a&&v.chatAccounts[i].id===a.id&&(v.chatAccounts[i].canSelect=!1,n.push(v.chatAccounts[i]))}v.chatAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.chatAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.chatAccounts.length;i++)a&&v.chatAccounts[i].id===a.id&&(v.chatAccounts[i].canSelect=!1,n.push(v.chatAccounts[i]));v.chatAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.mailAccounts=e.rows||[],v.mailAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.mailAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.mailAccounts=e.rows||[],v.mailAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.mailAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.mailAccounts.length;i++){_.some(t,{resourceId:v.mailAccounts[i].id})?(v.mailAccounts[i].canSelect=!0,n.push(v.mailAccounts[i])):a&&v.mailAccounts[i].id===a.id&&(v.mailAccounts[i].canSelect=!1,n.push(v.mailAccounts[i]))}v.mailAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.mailAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.mailAccounts.length;i++)a&&v.mailAccounts[i].id===a.id&&(v.mailAccounts[i].canSelect=!1,n.push(v.mailAccounts[i]));v.mailAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.smsAccounts=e.rows||[],v.smsAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.smsAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.smsAccounts=e.rows||[],v.smsAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.smsAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.smsAccounts.length;i++){_.some(t,{resourceId:v.smsAccounts[i].id})?(v.smsAccounts[i].canSelect=!0,n.push(v.smsAccounts[i])):a&&v.smsAccounts[i].id===a.id&&(v.smsAccounts[i].canSelect=!1,n.push(v.smsAccounts[i]))}v.smsAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.smsAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.smsAccounts.length;i++)a&&v.smsAccounts[i].id===a.id&&(v.smsAccounts[i].canSelect=!1,n.push(v.smsAccounts[i]));v.smsAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.faxAccounts=e.rows||[],v.faxAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.faxAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.faxAccounts=e.rows||[],v.faxAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.faxAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.faxAccounts.length;i++){_.some(t,{resourceId:v.faxAccounts[i].id})?(v.faxAccounts[i].canSelect=!0,n.push(v.faxAccounts[i])):a&&v.faxAccounts[i].id===a.id&&(v.faxAccounts[i].canSelect=!1,n.push(v.faxAccounts[i]))}v.faxAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.faxAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.faxAccounts.length;i++)a&&v.faxAccounts[i].id===a.id&&(v.faxAccounts[i].canSelect=!1,n.push(v.faxAccounts[i]));v.faxAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.openchannelAccounts=e.rows||[],v.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.openchannelAccount.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){v.openchannelAccounts=e.rows||[],v.openchannelAccounts.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.openchannelAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.openchannelAccounts.length;i++){_.some(t,{resourceId:v.openchannelAccounts[i].id})?(v.openchannelAccounts[i].canSelect=!0,n.push(v.openchannelAccounts[i])):a&&v.openchannelAccounts[i].id===a.id&&(v.openchannelAccounts[i].canSelect=!1,n.push(v.openchannelAccounts[i]))}v.openchannelAccounts=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.openchannelAccounts,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.openchannelAccounts.length;i++)a&&v.openchannelAccounts[i].id===a.id&&(v.openchannelAccounts[i].canSelect=!1,n.push(v.openchannelAccounts[i]));v.openchannelAccounts=n}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var h=[{id:401,type:"inbound"},{id:1501,type:"outbound"}];function f(e){a.hide(e)}m.hasRole("admin")?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){v.queues=e.rows||[],v.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){v.queues=e.rows||[],v.queues.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<h.length;t++)e.push(c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:h[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<h.length;a++){var i=_.find(t,["sectionId",h[a].id]);i?i.autoAssociation?v.queues.forEach(function(e){e.type===h[a].type&&(e.canSelect=!0)}):n.push(c.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:v.queues,count:v.queues.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;v.anyCondition&&(a=_.find(v.queues,{name:v.anyCondition.value}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<h.length;i++)v.queues.forEach(function(e){e.type===h[i].type&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});v.queues=n}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),m.hasRole("admin")?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){v.outboundRoutes=e.rows||[],v.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",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){v.outboundRoutes=e.rows||[],v.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return c.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return c.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;v.anyCondition&&(a=_.find(v.outboundRoutes,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.outboundRoutes.length;i++){_.some(t,{resourceId:v.outboundRoutes[i].id})?(v.outboundRoutes[i].canSelect=!0,n.push(v.outboundRoutes[i])):a&&v.outboundRoutes[i].id===a.id&&(v.outboundRoutes[i].canSelect=!1,n.push(v.outboundRoutes[i]))}v.outboundRoutes=n})}else{var n=[],a=null;v.anyCondition&&(a=_.find(v.outboundRoutes,{id:Number(v.anyCondition.value)}));for(var i=0;i<v.outboundRoutes.length;i++)a&&v.outboundRoutes[i].id===a.id&&(v.outboundRoutes[i].canSelect=!1,n.push(v.outboundRoutes[i]));v.outboundRoutes=n}}).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","anyconditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.host(),u.trigger=c||e.params.trigger||{},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.gotoTriggers=function(){e.go("app.tools.triggers")},u.saveTrigger=function(){r.trigger.update({id:u.trigger.id},u.trigger).$promise.then(function(){l.success({title:"Trigger updated!",msg:u.trigger.name?u.trigger.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.triggers=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="triggers",b.listOrder="",b.listOrderAsc=null,b.selectedTriggers=[],b.query={fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,page:1},b.arraychannel=_.keyBy([{option:"Voice",value:"'voice'"},{option:"Openchannel",value:"'openchannel'",ngIf:"vm.license.openchannel"},{option:"Chat",value:"'chat'",ngIf:"vm.license.chat"},{option:"Mail",value:"'mail'",ngIf:"vm.license.mail"},{option:"Sms",value:"'sms'",ngIf:"vm.license.messaging"},{option:"Fax",value:"'fax'",ngIf:"vm.license.fax"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=i.confirm().title("Are you sure want to delete the "+_.startCase("trigger")+"?").htmlContent("<b>"+(e.name||"trigger")+"</b> will be deleted.").ariaLabel("delete trigger").targetEvent(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTriggers=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.trigger.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Triggers",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTrigger=function(e,t){i.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:t,triggers:b.triggers.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTrigger=S,b.exportSelectedTriggers=function(){var e=angular.copy(b.selectedTriggers);return b.selectedTriggers=[],e},b.deleteSelectedTriggers=function(e){var t=i.confirm().title("Are you sure want to delete the selected triggers?").htmlContent("<b>"+b.selectedTriggers.length+" selected</b> will be deleted.").ariaLabel("delete Triggers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTriggers.forEach(function(e){S(e)}),b.selectedTriggers=[]})},b.deselectTriggers=function(){b.selectedTriggers=[]},b.selectAllTriggers=function(){b.selectedTriggers=b.triggers.rows};var A=!0,E=1;function y(e){b.triggers=e||{count:0,rows:[]}}function S(e){m.trigger.delete({id:e.id}).$promise.then(function(){_.remove(b.triggers.rows,{id:e.id}),b.triggers.count-=1,b.triggers.rows.length||b.getTriggers(),p.success({title:_.startCase("Trigger")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTriggers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("TriggersController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.trunks,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(t,n,a,e,i,s,o){var r=this;function l(e){t.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!":""}),n.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 t=0;t<e.data.errors.length;t+=1)a.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(n,e,a,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||n.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=n.params.tab||0,u.gotogoto=function(e,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,t){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){n.go("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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.trunk&&(a=_.find(u.contexts,{name:u.trunk.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.trunks=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="trunks",b.listOrder="",b.listOrderAsc=null,b.selectedTrunks=[],b.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},b.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.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"),"")}),b.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:b.crudPermissions})},b.clonedialog=function(e,t){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{trunk:e,trunks:b.trunks?b.trunks.rows:[],crudPermissions:b.crudPermissions}})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.voice.realtime.trunks",{})}},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getTrunks=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.trunk.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Trunks",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditTrunk=function(e,t){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:t,trunks:b.trunks.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteTrunk=S,b.exportSelectedTrunks=function(){var e=angular.copy(b.selectedTrunks);return b.selectedTrunks=[],e},b.deleteSelectedTrunks=function(e){var t=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+b.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedTrunks.forEach(function(e){S(e)}),b.selectedTrunks=[]})},b.deselectTrunks=function(){b.selectedTrunks=[]},b.selectAllTrunks=function(){b.selectedTrunks=b.trunks.rows};var A=!0,E=1;function y(e){b.trunks=e||{count:0,rows:[]}}function S(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(b.trunks.rows,{id:e.id}),b.trunks.count-=1,b.trunks.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("TrunksController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.variables,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.variables=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="variables",b.listOrder="",b.listOrderAsc=null,b.selectedVariables=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{variable:e,variables:b.variables.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVariables=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.variable.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Variables",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVariable=function(e,t){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:t,variables:b.variables.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVariable=S,b.exportSelectedVariables=function(){var e=angular.copy(b.selectedVariables);return b.selectedVariables=[],e},b.deleteSelectedVariables=function(e){var t=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+b.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVariables.forEach(function(e){S(e)}),b.selectedVariables=[]})},b.deselectVariables=function(){b.selectedVariables=[]},b.selectAllVariables=function(){b.selectedVariables=b.variables.rows};var A=!0,E=1;function y(e){b.variables=e||{count:0,rows:[]}}function S(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(b.variables.rows,{id:e.id}),b.variables.count-=1,b.variables.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.chanSpies=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="chanSpies",b.listOrder="",b.listOrderAsc=null,b.selectedChanSpies=[],b.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},b.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"),"")}),b.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editdialog=function(e,t){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:b.chanSpies.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getChanSpies=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceChanSpy.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="ChanSpies",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditchanSpy=function(e,t){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:t,chanSpies:b.chanSpies.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deletechanSpy=S,b.exportSelectedChanSpies=function(){var e=angular.copy(b.selectedChanSpies);return b.selectedChanSpies=[],e},b.deleteSelectedChanSpies=function(e){var t=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+b.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedChanSpies.forEach(function(e){S(e)}),b.selectedChanSpies=[]})},b.deselectChanSpies=function(){b.selectedChanSpies=[]},b.selectAllChanSpies=function(){b.selectedChanSpies=b.chanSpies.rows};var A=!0,E=1;function y(e){b.chanSpies=e||{count:0,rows:[]}}function S(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(b.chanSpies.rows,{id:e.id}),b.chanSpies.count-=1,b.chanSpies.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("ChanSpiesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.chanSpies,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.contexts=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="contexts",b.listOrder="",b.listOrderAsc=null,b.selectedContexts=[],b.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{context:e,contexts:b.contexts.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getContexts=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceContext.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Contexts",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditContext=function(e,t){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:t,contexts:b.contexts.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteContext=S,b.exportSelectedContexts=function(){var e=angular.copy(b.selectedContexts);return b.selectedContexts=[],e},b.deleteSelectedContexts=function(e){var t=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+b.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedContexts.forEach(function(e){S(e)}),b.selectedContexts=[]})},b.deselectContexts=function(){b.selectedContexts=[]},b.selectAllContexts=function(){b.selectedContexts=b.contexts.rows};var A=!0,E=1;function y(e){b.contexts=e||{count:0,rows:[]}}function S(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(b.contexts.rows,{id:e.id}),b.contexts.count-=1,b.contexts.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("ContextsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.contexts,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.inboundroutes,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The inboundroute will be deleted.").ariaLabel("Delete InboundRoute").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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"}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.inboundroute&&(a=_.find(g.contexts,{name:g.inboundroute.context}));for(var i=0;i<g.contexts.length;i++){_.some(t,{resourceId:g.contexts[i].id})?(g.contexts[i].canSelect=!0,n.push(g.contexts[i])):a&&g.contexts[i].id===a.id&&(g.contexts[i].canSelect=!1,n.push(g.contexts[i]))}g.contexts=n}):d.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})})}).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 t(e,t){if(u.inboundrouteApps.rows.length){var n=u.inboundrouteApps.rows[t]?u.inboundrouteApps.rows[t]:u.inboundrouteApps.rows[0];i.show({controller:"EditInboundApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundroutes/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundrouteApp:n,inboundroute:u.inboundroute,crudPermissions:u.crudPermissions}}).then(function(e){e&&(e.id?u.inboundrouteApps.rows[t]=e:u.inboundrouteApps.rows.splice(t,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"],t=2,n=[];n.push({type:"inbound",app:"Set",appdata:"CDR(type)=inbound",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:t++,VoiceExtensionId:u.inboundroute.id}),n.push({type:"inbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:t++,VoiceExtensionId:u.inboundroute.id}),n.push({type:"inbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:t++,VoiceExtensionId:u.inboundroute.id}),n.push({type:"inbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:u.inboundroute.context,exten:u.inboundroute.exten,priority:t++,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+t+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+t+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+t+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+t+i++,VoiceExtensionId:u.inboundroute.id})));for(var l=0;l<s.intervals.length;l++){var d=t+s.intervals.length,c=l===s.intervals.length-1?t+o.length+r.length+2:t+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:t+l,VoiceExtensionId:u.inboundroute.id})}s.priority=o.length?_.last(o).priority+1:t,t=(r.length?_.last(r).priority:s.priority)+1,n=_.concat(n,o,[s],r)}n.push({type:"inbound",app:"Hangup",exten:u.inboundroute.exten,context:u.inboundroute.context,priority:t,VoiceExtensionId:u.inboundroute.id}),m.voiceExtension.addApplications({id:u.inboundroute.id},_.sortBy(n,"priority")).$promise.then(function(e){u.inboundrouteApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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"},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"},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"},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"},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"},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"},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"},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"},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"},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){t(e,e.newIndex)},onSort:function(e){o()}},u.init=function(e,t){u.inboundroute=e,u.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){u.inboundrouteApps.rows.splice(t,1),o()},function(){console.log("CANCEL")})},u.getInboundRouteApps=function(){u.promise=m.voiceExtension.get(u.query,n).$promise},u.editInboundRouteApp=t,u.editInterval=function(e,t){if(u.inboundrouteApps.rows.length){var n=u.inboundrouteApps.rows[t]?u.inboundrouteApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:u.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.projects=e.rows||[],l.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.projects=e.rows||[],l.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agi&&(a=_.find(l.projects,{name:l.agi.project}));for(var i=0;i<l.projects.length;i++){_.some(t,{resourceId:l.projects[i].id})?(l.projects[i].canSelect=!0,n.push(l.projects[i])):a&&l.projects[i].id===a.id&&(l.projects[i].canSelect=!1,n.push(l.projects[i]))}l.projects=n})}else{var n=[],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,n.push(l.projects[i]));l.projects=n}}).catch(function(e){n.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.externaldial&&(a=_.find(l.trunks,{name:l.externaldial.trunk}));for(var i=0;i<l.trunks.length;i++){_.some(t,{resourceId:l.trunks[i].id})?(l.trunks[i].canSelect=!0,n.push(l.trunks[i])):a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,n.push(l.trunks[i]))}l.trunks=n})}else{var n=[],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,n.push(l.trunks[i]));l.trunks=n}}).catch(function(e){n.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.goto&&(a=_.find(l.contexts,{name:l.goto.context}));for(var i=0;i<l.contexts.length;i++){_.some(t,{resourceId:l.contexts[i].id})?(l.contexts[i].canSelect=!0,n.push(l.contexts[i])):a&&l.contexts[i].id===a.id&&(l.contexts[i].canSelect=!1,n.push(l.contexts[i]))}l.contexts=n}):s.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})})}).catch(function(e){n.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(t,e,n,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"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){t.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(t,s,n,e,a,o,i,r){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=r,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"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(",")}u(l.internaldial)},l.closeDialog=u;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}];function u(e){t.hide(e)}i.hasRole("admin")?o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?l.users.forEach(function(e){e.role===m[a].role&&(e.canSelect=!0)}):n.push(o.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:l.users,count:l.users.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;l.internaldial&&(a=_.find(l.users,{name:l.internaldial.user}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)l.users.forEach(function(e){e.role===m[i].role&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});l.users=n}).catch(function(e){n.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.playback&&(a=_.find(l.sounds,{save_name:l.playback.sound}));for(var i=0;i<l.sounds.length;i++){_.some(t,{resourceId:l.sounds[i].id})?(l.sounds[i].canSelect=!0,n.push(l.sounds[i])):a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,n.push(l.sounds[i]))}l.sounds=n})}else{var n=[],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,n.push(l.sounds[i]));l.sounds=n}}).catch(function(e){n.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.sounds,{save_name:l.queue.sound}));for(var i=0;i<l.sounds.length;i++){_.some(t,{resourceId:l.sounds[i].id})?(l.sounds[i].canSelect=!0,n.push(l.sounds[i])):a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,n.push(l.sounds[i]))}l.sounds=n})}else{var n=[],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,n.push(l.sounds[i]));l.sounds=n}}).catch(function(e){n.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:401}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,s,n,e,a,o,i,r){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=r,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"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(",")}u(l.ringgroup)},l.closeDialog=u;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}];function u(e){t.hide(e)}i.hasRole("admin")?o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?l.users.forEach(function(e){e.role===m[a].role&&(e.canSelect=!0)}):n.push(o.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:l.users,count:l.users.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;l.ringgroup&&(a=_.find(l.users,{name:l.ringgroup.multipleUsers}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)l.users.forEach(function(e){e.role===m[i].role&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});l.users=n}).catch(function(e){n.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.variables=e.rows||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.variables=e.rows||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.set&&(a=_.find(l.variables,{name:l.set.name}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.voiceMails=e.rows||[],l.voiceMails.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMails",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceMail.get({fields:"id,mailbox",sort:"mailbox"}).$promise.then(function(e){l.voiceMails=e.rows||[],l.voiceMails.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:406}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.voicemail&&(a=_.find(l.voiceMails,{mailbox:l.voicemail.voiceMail}));for(var i=0;i<l.voiceMails.length;i++){_.some(t,{resourceId:l.voiceMails[i].id})?(l.voiceMails[i].canSelect=!0,n.push(l.voiceMails[i])):a&&l.voiceMails[i].id===a.id&&(l.voiceMails[i].canSelect=!1,n.push(l.voiceMails[i]))}l.voiceMails=n})}else{var n=[],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,n.push(l.voiceMails[i]));l.voiceMails=n}}).catch(function(e){n.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,t,n,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=t.protocol()+"://"+t.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")},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"}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.inboundroute&&(a=_.find(u.contexts,{name:u.inboundroute.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.inboundroutes=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="inboundroutes",b.listOrder="",b.listOrderAsc=null,b.selectedInboundRoutes=[],b.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},b.editstate=function(e,t){n.go("app.voice.inboundroutes.edit",{id:e.id,inboundroute:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getInboundRoutes=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceExtension.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="InboundRoutes",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditInboundRoute=function(e,t){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:t,inboundroutes:b.inboundroutes.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteInboundRoute=S,b.exportSelectedInboundRoutes=function(){var e=angular.copy(b.selectedInboundRoutes);return b.selectedInboundRoutes=[],e},b.deleteSelectedInboundRoutes=function(e){var t=i.confirm().title("Are you sure want to delete the selected inboundroutes?").htmlContent("<b>"+b.selectedInboundRoutes.length+" selected</b> will be deleted.").ariaLabel("delete InboundRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedInboundRoutes.forEach(function(e){S(e)}),b.selectedInboundRoutes=[]})},b.deselectInboundRoutes=function(){b.selectedInboundRoutes=[]},b.selectAllInboundRoutes=function(){b.selectedInboundRoutes=b.inboundroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.inboundroute&&(a=_.find(b.contexts,{name:b.inboundroute.context}));for(var i=0;i<b.contexts.length;i++){_.some(t,{resourceId:b.contexts[i].id})?(b.contexts[i].canSelect=!0,n.push(b.contexts[i])):a&&b.contexts[i].id===a.id&&(b.contexts[i].canSelect=!1,n.push(b.contexts[i]))}b.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})})}).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 A=!0,E=1;function y(e){b.inboundroutes=e||{count:0,rows:[]}}function S(e){m.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(b.inboundroutes.rows,{id:e.id}),b.inboundroutes.count-=1,b.inboundroutes.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getInboundRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","inboundroutes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("InboundRoutesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.internalroutes,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The internalroute will be deleted.").ariaLabel("Delete InternalRoute").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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"}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.internalroute&&(a=_.find(g.contexts,{name:g.internalroute.context}));for(var i=0;i<g.contexts.length;i++){_.some(t,{resourceId:g.contexts[i].id})?(g.contexts[i].canSelect=!0,n.push(g.contexts[i])):a&&g.contexts[i].id===a.id&&(g.contexts[i].canSelect=!1,n.push(g.contexts[i]))}g.contexts=n}):d.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){g.contexts=e.rows||[],g.contexts.forEach(function(e){e.canSelect=!0})})}).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 t(e,t){if(u.internalrouteApps.rows.length){var n=u.internalrouteApps.rows[t]?u.internalrouteApps.rows[t]:u.internalrouteApps.rows[0];i.show({controller:"EditInternalApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalroutes/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalrouteApp:n,internalroute:u.internalroute,crudPermissions:u.crudPermissions}}).then(function(e){e&&(e.id?u.internalrouteApps.rows[t]=e:u.internalrouteApps.rows.splice(t,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"],t=2,n=[];n.push({type:"internal",app:"Set",appdata:"CDR(type)=internal",context:u.internalroute.context,exten:u.internalroute.exten,priority:t++,VoiceExtensionId:u.internalroute.id}),n.push({type:"internal",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:u.internalroute.context,exten:u.internalroute.exten,priority:t++,VoiceExtensionId:u.internalroute.id}),n.push({type:"internal",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:u.internalroute.context,exten:u.internalroute.exten,priority:t++,VoiceExtensionId:u.internalroute.id}),n.push({type:"internal",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:u.internalroute.context,exten:u.internalroute.exten,priority:t++,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+t+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+t+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+t+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+t+i++,VoiceExtensionId:u.internalroute.id})));for(var l=0;l<s.intervals.length;l++){var d=t+s.intervals.length,c=l===s.intervals.length-1?t+o.length+r.length+2:t+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:t+l,VoiceExtensionId:u.internalroute.id})}s.priority=o.length?_.last(o).priority+1:t,t=(r.length?_.last(r).priority:s.priority)+1,n=_.concat(n,o,[s],r)}n.push({type:"internal",app:"Hangup",exten:u.internalroute.exten,context:u.internalroute.context,priority:t,VoiceExtensionId:u.internalroute.id}),m.voiceExtension.addApplications({id:u.internalroute.id},_.sortBy(n,"priority")).$promise.then(function(e){u.internalrouteApps.rows=e.rows}).catch(function(e){console.error(e)})}function n(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"},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"},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"},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"},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"},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"},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"},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"},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"},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){t(e,e.newIndex)},onSort:function(e){o()}},u.init=function(e,t){u.internalroute=e,u.crudPermissions=void 0!==t?t:{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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){u.internalrouteApps.rows.splice(t,1),o()},function(){console.log("CANCEL")})},u.getInternalRouteApps=function(){u.promise=m.voiceExtension.get(u.query,n).$promise},u.editInternalRouteApp=t,u.editInterval=function(e,t){if(u.internalrouteApps.rows.length){var n=u.internalrouteApps.rows[t]?u.internalrouteApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:u.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.projects=e.rows||[],l.projects.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.projects=e.rows||[],l.projects.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.agi&&(a=_.find(l.projects,{name:l.agi.project}));for(var i=0;i<l.projects.length;i++){_.some(t,{resourceId:l.projects[i].id})?(l.projects[i].canSelect=!0,n.push(l.projects[i])):a&&l.projects[i].id===a.id&&(l.projects[i].canSelect=!1,n.push(l.projects[i]))}l.projects=n})}else{var n=[],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,n.push(l.projects[i]));l.projects=n}}).catch(function(e){n.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.externaldial&&(a=_.find(l.trunks,{name:l.externaldial.trunk}));for(var i=0;i<l.trunks.length;i++){_.some(t,{resourceId:l.trunks[i].id})?(l.trunks[i].canSelect=!0,n.push(l.trunks[i])):a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,n.push(l.trunks[i]))}l.trunks=n})}else{var n=[],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,n.push(l.trunks[i]));l.trunks=n}}).catch(function(e){n.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.goto&&(a=_.find(l.contexts,{name:l.goto.context}));for(var i=0;i<l.contexts.length;i++){_.some(t,{resourceId:l.contexts[i].id})?(l.contexts[i].canSelect=!0,n.push(l.contexts[i])):a&&l.contexts[i].id===a.id&&(l.contexts[i].canSelect=!1,n.push(l.contexts[i]))}l.contexts=n}):s.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){l.contexts=e.rows||[],l.contexts.forEach(function(e){e.canSelect=!0})})}).catch(function(e){n.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(t,e,n,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"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){t.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(t,s,n,e,a,o,i,r){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=r,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"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(",")}u(l.internaldial)},l.closeDialog=u;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}];function u(e){t.hide(e)}i.hasRole("admin")?o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?l.users.forEach(function(e){e.role===m[a].role&&(e.canSelect=!0)}):n.push(o.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:l.users,count:l.users.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;l.internaldial&&(a=_.find(l.users,{name:l.internaldial.user}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)l.users.forEach(function(e){e.role===m[i].role&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});l.users=n}).catch(function(e){n.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.playback&&(a=_.find(l.sounds,{save_name:l.playback.appdata}));for(var i=0;i<l.sounds.length;i++){_.some(t,{resourceId:l.sounds[i].id})?(l.sounds[i].canSelect=!0,n.push(l.sounds[i])):a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,n.push(l.sounds[i]))}l.sounds=n})}else{var n=[],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,n.push(l.sounds[i]));l.sounds=n}}).catch(function(e){n.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.sound.get({fields:"id,name,save_name",sort:"name"}).$promise.then(function(e){l.sounds=e.rows||[],l.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.sounds,{save_name:l.queue.sound}));for(var i=0;i<l.sounds.length;i++){_.some(t,{resourceId:l.sounds[i].id})?(l.sounds[i].canSelect=!0,n.push(l.sounds[i])):a&&l.sounds[i].id===a.id&&(l.sounds[i].canSelect=!1,n.push(l.sounds[i]))}l.sounds=n})}else{var n=[],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,n.push(l.sounds[i]));l.sounds=n}}).catch(function(e){n.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||[],l.queues.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",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||[],l.queues.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:401}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++){_.some(t,{resourceId:l.queues[i].id})?(l.queues[i].canSelect=!0,n.push(l.queues[i])):a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,n.push(l.queues[i]))}l.queues=n})}else{var n=[],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,n.push(l.queues[i]));l.queues=n}}).catch(function(e){n.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(t,s,n,e,a,o,i,r){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=r,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"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(",")}u(l.ringgroup)},l.closeDialog=u;var m=[{id:202,role:"agent"},{id:203,role:"telephone"}];function u(e){t.hide(e)}i.hasRole("admin")?o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETusers",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.user.get({fields:"id,name,role",sort:"name"}).$promise.then(function(e){l.users=e.rows||[],l.users.forEach(function(e){e.canSelect=!0})}).then(function(){for(var e=[],t=0;t<m.length;t++)e.push(o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:m[t].id}).$promise);return s.all(e)}).then(function(e){for(var t=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),n=[],a=0;a<m.length;a++){var i=_.find(t,["sectionId",m[a].id]);i?i.autoAssociation?l.users.forEach(function(e){e.role===m[a].role&&(e.canSelect=!0)}):n.push(o.userProfileResource.get({sectionId:i.id}).$promise):n.push({rows:l.users,count:l.users.length})}return s.all(n)}).then(function(e){var t=[],n=[],a=null;l.ringgroup&&(a=_.find(l.users,{name:l.ringgroup.multipleUsers}));for(var i=0;i<e.length;i++){(e[i].rows||[]).forEach(function(e){t.push(e)})}for(i=0;i<m.length;i++)l.users.forEach(function(e){e.role===m[i].role&&(_.some(t,{resourceId:e.id})?(e.canSelect=!0,n.push(e)):a&&e.id===a.id&&(e.canSelect=!1,n.push(e)))});l.users=n}).catch(function(e){n.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.variables=e.rows||[],l.variables.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.variables=e.rows||[],l.variables.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.set&&(a=_.find(l.variables,{name:l.set.name}));for(var i=0;i<l.variables.length;i++){_.some(t,{resourceId:l.variables[i].id})?(l.variables[i].canSelect=!0,n.push(l.variables[i])):a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,n.push(l.variables[i]))}l.variables=n})}else{var n=[],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,n.push(l.variables[i]));l.variables=n}}).catch(function(e){n.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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.voiceMails=e.rows||[],l.voiceMails.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMails",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.voiceMail.get({fields:"id,mailbox",sort:"mailbox"}).$promise.then(function(e){l.voiceMails=e.rows||[],l.voiceMails.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:406}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.voicemail&&(a=_.find(l.voiceMails,{mailbox:l.voicemail.voiceMail}));for(var i=0;i<l.voiceMails.length;i++){_.some(t,{resourceId:l.voiceMails[i].id})?(l.voiceMails[i].canSelect=!0,n.push(l.voiceMails[i])):a&&l.voiceMails[i].id===a.id&&(l.voiceMails[i].canSelect=!1,n.push(l.voiceMails[i]))}l.voiceMails=n})}else{var n=[],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,n.push(l.voiceMails[i]));l.voiceMails=n}}).catch(function(e){n.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,t,n,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=t.protocol()+"://"+t.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")},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"}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.internalroute&&(a=_.find(u.contexts,{name:u.internalroute.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.internalroutes=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="internalroutes",b.listOrder="",b.listOrderAsc=null,b.selectedInternalRoutes=[],b.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,description",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},b.editstate=function(e,t){n.go("app.voice.internalroutes.edit",{id:e.id,internalroute:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getInternalRoutes=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceExtension.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="InternalRoutes",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditInternalRoute=function(e,t){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:t,internalroutes:b.internalroutes.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteInternalRoute=S,b.exportSelectedInternalRoutes=function(){var e=angular.copy(b.selectedInternalRoutes);return b.selectedInternalRoutes=[],e},b.deleteSelectedInternalRoutes=function(e){var t=i.confirm().title("Are you sure want to delete the selected internalroutes?").htmlContent("<b>"+b.selectedInternalRoutes.length+" selected</b> will be deleted.").ariaLabel("delete InternalRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedInternalRoutes.forEach(function(e){S(e)}),b.selectedInternalRoutes=[]})},b.deselectInternalRoutes=function(){b.selectedInternalRoutes=[]},b.selectAllInternalRoutes=function(){b.selectedInternalRoutes=b.internalroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.internalroute&&(a=_.find(b.contexts,{name:b.internalroute.context}));for(var i=0;i<b.contexts.length;i++){_.some(t,{resourceId:b.contexts[i].id})?(b.contexts[i].canSelect=!0,n.push(b.contexts[i])):a&&b.contexts[i].id===a.id&&(b.contexts[i].canSelect=!1,n.push(b.contexts[i]))}b.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})})}).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 A=!0,E=1;function y(e){b.internalroutes=e||{count:0,rows:[]}}function S(e){m.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(b.internalroutes.rows,{id:e.id}),b.internalroutes.count-=1,b.internalroutes.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getInternalRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","internalroutes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("InternalRoutesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.musiconholds,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.musiconhold={},c.musiconholdMohSounds={count:0,rows:[]},c.selectedMusicOnHoldMohSounds=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},c.init=function(e,t){c.musiconhold=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.musiconhold.id,c.query.VoiceMusicOnHoldId=c.musiconhold.id,c.getMusicOnHoldMohSounds()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.voiceMusicOnHoldDownload=function(s,e,t){return l.sound.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="mohSound"+s.id,a=new Blob(t,{type:e.type});n=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",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getMusicOnHoldMohSounds=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceMusicOnHold.getSounds(c.query,p).$promise},c.createOrEditMusicOnHoldMohSound=function(e,t){s.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:c.musiconhold,mohSound:t,mohSounds:c.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(c.selectedMusicOnHoldMohSounds);return c.selectedMusicOnHoldMohSounds=[],e},c.deleteMusicOnHoldMohSound=g,c.deleteSelectedMusicOnHoldMohSounds=function(e){var t=s.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+c.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),c.selectedMusicOnHoldMohSounds=[]})},d.hasRole("admin")?l.sound.get({fields:"id,name",sort:"name"}).$promise.then(function(e){c.sounds=e.rows||[],c.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):l.sound.get({fields:"id,name",sort:"name"}).$promise.then(function(e){c.sounds=e.rows||[],c.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return l.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return l.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.musiconhold&&(a=_.find(c.sounds,{id:Number(c.musiconhold.id)}));for(var i=0;i<c.sounds.length;i++){_.some(t,{resourceId:c.sounds[i].id})?(c.sounds[i].canSelect=!0,n.push(c.sounds[i])):a&&c.sounds[i].id===a.id&&(c.sounds[i].canSelect=!1,n.push(c.sounds[i]))}c.sounds=n})}else{var n=[],a=null;c.musiconhold&&(a=_.find(c.sounds,{id:Number(c.musiconhold.id)}));for(var i=0;i<c.sounds.length;i++)a&&c.sounds[i].id===a.id&&(c.sounds[i].canSelect=!1,n.push(c.sounds[i]));c.sounds=n}}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})});var m=!0,u=1;function p(e){c.musiconholdMohSounds=e||{count:0,rows:[]}}function g(e){l.voiceMusicOnHold.removeSound({id:n.params.id,id2:e.id}).$promise.then(function(){_.remove(c.musiconholdMohSounds.rows,{id:e.id}),c.musiconholdMohSounds.count-=1,c.musiconholdMohSounds.rows.length||c.getMusicOnHoldMohSounds(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getMusicOnHoldMohSounds())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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),t.params.id&&(g.mohSound.VoiceMusicOnHoldId=t.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:t.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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.mohSounds,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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"}).$promise.then(function(e){g.sounds=e.rows||[],g.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.sounds=e.rows||[],g.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++){_.some(t,{resourceId:g.sounds[i].id})?(g.sounds[i].canSelect=!0,n.push(g.sounds[i])):a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,n.push(g.sounds[i]))}g.sounds=n})}else{var n=[],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,n.push(g.sounds[i]));g.sounds=n}}).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,t,n,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=t.protocol()+"://"+t.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")},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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.musiconholds=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="musiconholds",b.listOrder="",b.listOrderAsc=null,b.selectedMusicOnHolds=[],b.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},b.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getMusicOnHolds=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceMusicOnHold.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="MusicOnHolds",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditMusicOnHold=function(e,t){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:t,musiconholds:b.musiconholds.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteMusicOnHold=S,b.exportSelectedMusicOnHolds=function(){var e=angular.copy(b.selectedMusicOnHolds);return b.selectedMusicOnHolds=[],e},b.deleteSelectedMusicOnHolds=function(e){var t=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+b.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedMusicOnHolds.forEach(function(e){S(e)}),b.selectedMusicOnHolds=[]})},b.deselectMusicOnHolds=function(){b.selectedMusicOnHolds=[]},b.selectAllMusicOnHolds=function(){b.selectedMusicOnHolds=b.musiconholds.rows};var A=!0,E=1;function y(e){b.musiconholds=e||{count:0,rows:[]}}function S(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(b.musiconholds.rows,{id:e.id}),b.musiconholds.count-=1,b.musiconholds.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,h,d,c,m,u){var f=this;function p(){var e=2,t=[];t.push({type:"outbound",app:"Set",appdata:"CDR(type)=outbound",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.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}),t.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.push({type:"outbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.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&&(t.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}",context:f.outboundroute.context,exten:f.outboundroute.exten,priority:e++,VoiceExtensionId:f.outboundroute.id}),t.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 n=0,a=0;n<f.outboundrouteApps.rows.length;n++,a=0){var i=f.outboundrouteApps.rows[n],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,t=_.concat(t,s,[i],o)}t.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(t,"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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(f.outboundroutes,{id:e.id});t&&(_.merge(t,_.pick(e.toJSON(),_.keys(t))),h.voiceExtension.get({sort:"priority",VoiceExtensionId:t.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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(n){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 t=a.confirm().title("Are you sure?").content("The outboundroute will be deleted.").ariaLabel("Delete OutboundRoute").ok("Delete").cancel("Cancel").targetEvent(n);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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"}).$promise.then(function(e){f.contexts=e.rows||[],f.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):h.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.contexts=e.rows||[],f.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return h.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:h.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;f.outboundroute&&(a=_.find(f.contexts,{name:f.outboundroute.context}));for(var i=0;i<f.contexts.length;i++){_.some(t,{resourceId:f.contexts[i].id})?(f.contexts[i].canSelect=!0,n.push(f.contexts[i])):a&&f.contexts[i].id===a.id&&(f.contexts[i].canSelect=!1,n.push(f.contexts[i]))}f.contexts=n}):h.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){f.contexts=e.rows||[],f.contexts.forEach(function(e){e.canSelect=!0})})}).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,n,e,t){var A=this;function o(e,t){if(A.outboundrouteApps.rows.length){var n=A.outboundrouteApps.rows[t]?A.outboundrouteApps.rows[t]:A.outboundrouteApps.rows[0];i.show({controller:"EditoutboundApp"+(n.appType||n.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundroutes/edit/apps/"+(n.appType||n.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundrouteApp:n,outboundroute:A.outboundroute,crudPermissions:A.crudPermissions}}).then(function(e){e&&(e.id?A.outboundrouteApps.rows[t]=e:A.outboundrouteApps.rows.splice(t,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 t=2,n=[];n.push({type:"outbound",app:"Set",appdata:"CDR(type)=outbound",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.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:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"CDR(routeid)="+A.outboundroute.id,context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id});var a=t++;n.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}),n.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:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-ANSWER=0",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"XCALLY-MOTION-PROGRESS=0",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"MONITOR_OPTIONS=ab",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"outboundrouteid="+A.outboundroute.id,context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),A.outboundroute.hasOwnProperty("recordingFormat")&&"none"!==A.outboundroute.recordingFormat&&(n.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,VoiceExtensionId:A.outboundroute.id}),n.push({type:"outbound",app:"Set",appdata:"_XCALLY_MIXMONITOR_FORMAT="+A.outboundroute.recordingFormat||"wav",context:A.outboundroute.context,exten:A.outboundroute.exten,priority:t++,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+t+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+t+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+t+s++,VoiceExtensionId:A.outboundroute.id});for(var d=0;d<o.intervals.length;d++){var c=t+o.intervals.length,m=d===o.intervals.length-1?t+r.length+l.length+2:t+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:t+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:t,t=(l.length?_.last(l).priority:o.priority)+1,n=_.concat(n,r,[o],l)}n.push({type:"outbound",app:"Hangup",exten:A.outboundroute.exten,context:A.outboundroute.context,priority:t,VoiceExtensionId:A.outboundroute.id}),b.voiceExtension.addApplications({id:A.outboundroute.id},_.sortBy(n,"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=t.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"},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,t){A.outboundroute=e,A.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},A.applications.disabled=!A.crudPermissions.canEdit,n.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,t,n){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(n).ok("OK").cancel("CANCEL");i.show(a).then(function(){A.outboundrouteApps.rows.splice(t,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,t){if(A.outboundrouteApps.rows.length){var n=A.outboundrouteApps.rows[t]?A.outboundrouteApps.rows[t]: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:n.interval,IntervalId:n.IntervalId,application:!0},intervals:[],crudPermissions:A.crudPermissions}}).then(function(e){e&&(n.interval=e.interval||"*,*,*,*",n.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 t=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(t).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(){n.removeAllListeners("voiceExtension:update")})}e.$inject=["api","$mdDialog","$document","toasty","socket","$scope","Auth"],angular.module("app.voice").controller("OutboundRouteActionsController",e)}(),function(){"use strict";function e(t,e,n,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"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){t.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,t,n,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 t=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),n=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(t+"-"+n)}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){t.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 t=_.find(c.intervals,{id:e.id});t&&_.merge(t,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||[],_.map(c.intervals,function(e){e.canSelect=!0})}).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||[];for(var t=0;t<c.intervals.length;t++)c.intervals[t].canSelect=!0}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId}));for(var i=0;i<c.intervals.length;i++){_.some(t,{resourceId:c.intervals[i].id})?(c.intervals[i].canSelect=!0,n.push(c.intervals[i])):a&&c.intervals[i].id===a.id&&(c.intervals[i].canSelect=!1,n.push(c.intervals[i]))}c.intervals=n})}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(t,e,n,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"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){t.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"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){l.trunks=e.rows||[],l.trunks.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.outbounddial&&(a=_.find(l.trunks,{name:l.outbounddial.trunk}));for(var i=0;i<l.trunks.length;i++){_.some(t,{resourceId:l.trunks[i].id})?(l.trunks[i].canSelect=!0,n.push(l.trunks[i])):a&&l.trunks[i].id===a.id&&(l.trunks[i].canSelect=!1,n.push(l.trunks[i]))}l.trunks=n})}else{var n=[],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,n.push(l.trunks[i]));l.trunks=n}}).catch(function(e){n.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||[],l.tags.forEach(function(e){e.canSelect=!0})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",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||[],l.tags.forEach(function(e){e.canSelect=!0})}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return s.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;l.outbounddial&&(a=_.find(l.tags,{name:l.outbounddial.tag}));for(var i=0;i<l.tags.length;i++){_.some(t,{resourceId:l.tags[i].id})?(l.tags[i].canSelect=!0,n.push(l.tags[i])):a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,n.push(l.tags[i]))}l.tags=n})}else{var n=[],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,n.push(l.tags[i]));l.tags=n}}).catch(function(e){n.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,t,n,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=t.protocol()+"://"+t.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")},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"}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.outboundroute&&(a=_.find(u.contexts,{name:u.outboundroute.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.outboundroutes=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="outboundroutes",b.listOrder="",b.listOrderAsc=null,b.selectedOutboundRoutes=[],b.query={fields:"createdAt,updatedAt,id,appdata,type,exten,context,recordingFormat,cutdigits,description",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},b.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"),"")}),b.editstate=function(e,t){n.go("app.voice.outboundroutes.edit",{id:e.id,outboundroute:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getOutboundRoutes=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceExtension.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="OutboundRoutes",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditOutboundRoute=function(e,t){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:t,outboundroutes:b.outboundroutes.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteOutboundRoute=S,b.exportSelectedOutboundRoutes=function(){var e=angular.copy(b.selectedOutboundRoutes);return b.selectedOutboundRoutes=[],e},b.deleteSelectedOutboundRoutes=function(e){var t=i.confirm().title("Are you sure want to delete the selected outboundroutes?").htmlContent("<b>"+b.selectedOutboundRoutes.length+" selected</b> will be deleted.").ariaLabel("delete OutboundRoutes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedOutboundRoutes.forEach(function(e){S(e)}),b.selectedOutboundRoutes=[]})},b.deselectOutboundRoutes=function(){b.selectedOutboundRoutes=[]},b.selectAllOutboundRoutes=function(){b.selectedOutboundRoutes=b.outboundroutes.rows},g.hasRole("admin")?m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.outboundroute&&(a=_.find(b.contexts,{name:b.outboundroute.context}));for(var i=0;i<b.contexts.length;i++){_.some(t,{resourceId:b.contexts[i].id})?(b.contexts[i].canSelect=!0,n.push(b.contexts[i])):a&&b.contexts[i].id===a.id&&(b.contexts[i].canSelect=!1,n.push(b.contexts[i]))}b.contexts=n}):m.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){b.contexts=e.rows||[],b.contexts.forEach(function(e){e.canSelect=!0})})}).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 A=!0,E=1;function y(e){b.outboundroutes=e||{count:0,rows:[]}}function S(t){m.voicePrefix.get({VoiceExtensionId:t.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:t.id}).$promise.then(function(){_.remove(b.outboundroutes.rows,{id:t.id}),b.outboundroutes.count-=1,b.outboundroutes.rows.length||b.getOutboundRoutes(),p.success({title:_.startCase("OutboundRoute")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getOutboundRoutes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","outboundroutes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this,h=!0;function f(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.contacts:"+v.currentUser.id);e&&(e=JSON.parse(e))&&e.query&&(v.query=_.merge(e.query,_.omit(v.query,["sort","limit","page"])),v.query=_.omit(v.query,"filter")),d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){v.queues=e||{count:0,rows:[]},v.queuesMap=_.mapValues(_.keyBy(v.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){v.getContacts()}):o.userProfile.getResources({id:v.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){v.queues=e||{count:0,rows:[]},v.queuesMap=_.mapValues(_.keyBy(v.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){v.getContacts()})}function b(e){v.contacts=e||{count:0,rows:[]},h=!1,v.refresh=!0}v.showTooltip=!1,v.refresh=!0,v.disable=[],v.agents=p||[],v.currentUser=d.getCurrentUser(),v.localizationMap=u,v.pickerModel={dateStart:null,dateEnd:null},v.queues={},v.contacts={count:0,rows:[]},v.dispositions=g,v.userProfile=r,v.userProfileSection=l&&1==l.count?l.rows[0]:null,v.crudPermissions=d.parseCrudPermissions(v.userProfileSection?v.userProfileSection.crudPermissions:null),v.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},v.clearAll=function(){v.query.dateStart=void 0,v.query.dateEnd=void 0,v.pickerModel={dateStart:null,dateEnd:null},v.getContacts()},v.getContacts=function(){v.refresh=!1,v.query.dateStart=void 0,v.query.dateEnd=void 0,v.pickerModel.dateStart&&!h&&(v.query.dateStart=v.pickerModel.dateStart,v.query.dateEnd=v.pickerModel.dateEnd);v.query.queue=v.query.queue,v.query.offset=(v.query.page-1)*v.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.contacts:"+v.currentUser.id,JSON.stringify({query:_.omit(v.query,"queue")})),v.promise=o.voiceQueueReport.getVoiceQueuesReport(v.query,b).$promise},v.refreshContacts=function(){v.showTooltip=!1,v.getContacts()},v.onInit=f,v.assignedA=function(e,t){e&&(v.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:t?t.name:null,assigned:!!t}).$promise.catch(function(e){console.log(e)}).finally(function(){v.disable[e.id]=!1}))},v.disposed=function(e,t){e&&o.voiceQueueReport.update({id:e.id,disposition:t||null}).$promise.catch(function(e){console.log(e)})},v.onSavevoiceQueueReport=function(e){e&&v.queuesMap&&"inbound"===e.type&&v.queuesMap[e.queue]&&(v.showTooltip=!0)},v.onUpdatevoiceQueueReport=function(e){if(e){var t=_.findIndex(v.contacts.rows,["id",e.id]);0<=t&&_.merge(v.contacts.rows[t],e)}},c.onWithoutApply("voiceQueueReport:save",v.onSavevoiceQueueReport),c.on("voiceQueueReport:update",v.onUpdatevoiceQueueReport),f();var A=!0,E=1;e.$watch("vm.query.filter",function(e,t){A?n(function(){A=!1}):(t||(E=v.query.page),e!==t&&(v.query.page=1),e||(v.query.page=E),v.getContacts())}),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","dateFilterLocalizationFactory","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,t,n,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","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","onhold"],E=["chatPause","openchannelPause","mailPause","smsPause","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,t){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,t){n.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(t,e){return d.user.pause({id:t.id,type:e}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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(t){return d.user.unpause({id:t.id}).$promise.then(function(e){b.agents[t.id]&&_.merge(b.agents[t.id],_.pick(e,A)),b.rpcAgents[t.id]&&_.merge(b.rpcAgents[t.id],_.pick(e,A)),w(b.agents[t.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){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=x,b.getAgentGlobalStatus=w,b.isPause=C,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"])),_.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"]))},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 t,n,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,t){b.rpcAgents[t]&&_.merge(e,_.pick(_.omit(b.rpcAgents[t],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=t):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=(t=b.filteredAgents,n=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(t,[b.query.order.replace("-","")],[n]));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 C(e){return"pause"===e||"*pause"===e}function I(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function x(e,t){return"voice"===t?"idle"!==e[t+"Status"]?e[t+"Status"]:e[t+"Pause"]?e[t+"Status"]="pause":"idle":e[t+"Pause"]?e[t+"Status"]="pause":e[t+"Status"]}function w(e){var t="unknown";t=_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"pause":_.some([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],C)?"*pause":_.every([x(e,"voice"),x(e,"chat"),x(e,"mail"),x(e,"openchannel"),x(e,"sms"),x(e,"fax")],I)?"idle":"busy",e.globalStatus!==t&&(e.globalStatus=t,e.init?(e.init=!1,e.globalStatusTime=C(t)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,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,n,t,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 t=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",t?_.merge(t,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var t=_.findIndex(o.calls.rows,{channel:e.channel});0<=t&&(o.calls.rows[t].status="hangup");n(function(){o.calls.rows.splice(t,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,t,a,n,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.agents=n||{count:0,rows:[]},p.queues=i?_.keyBy(i.rows?i.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=s?_.keyBy(s.rows?_.filter(s.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.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,t){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[t]=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(t){return o.rpc.getVoiceQueuesChannelHangup({uniqueid:t}).$promise.then(function(e){d.success({title:"Channel "+t+" 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(t,e,n){return o.rpc.getVoiceQueuesChannelRedirect({uniqueid:t,exten:e,context:n}).$promise.then(function(e){d.success({title:"Channel "+t+" 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,t){var n=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(n).then(function(e){return o.rpc.getVoiceQueuesChannelRedirect({uniqueid:t,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+t+" properly redirect!",msg:e.message||""})}).catch(function(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,n,t,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,t){c.rpcQueues[t]&&_.merge(e,_.pick(c.rpcQueues[t],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=t(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,t){p?n(function(){p=!1}):(t||(g=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&t.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,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this,v=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused"];function h(){var n=[];return _.forIn(g.queues,function(e,t){e.paused=0,e.loggedInDb=0,g.queues[t].agents={},n.push(l.voiceQueue.getMembers({id:t}).$promise),g.rpcQueues[t]&&_.merge(e,_.pick(g.rpcQueues[t],v))}),t.all(n).then(function(e){for(var t=0;t<e.length;t+=1)for(var n=0;n<e[t].rows.length;n++)e[t].rows[n].paused&&g.queues[e[t].rows[n].VoiceQueueId].paused++,g.queues[e[t].rows[n].VoiceQueueId].loggedInDb++,g.queues[e[t].rows[n].VoiceQueueId].agents[e[t].rows[n].UserId]=e[t].rows[n].VoiceQueueId}).catch(function(e){console.error(e)})}g.currentUser=p.getCurrentUser(),g.count=o.count?o.count:0,g.queues=o?_.keyBy(o.rows?o.rows:[],"id"):{},g.rpcQueues=r?_.keyBy(r.rows?r.rows:[],"id"):{},g.userProfile=m,g.userProfileSection=u&&1==u.count?u.rows[0]:null,g.crudPermissions=p.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),p.hasRole("admin")?g.query={type:"inbound",sort:"-updatedAt",limit:10,page:1}:g.query={id:g.currentUser.id,channel:"voice",type:"inbound",sort:"-updatedAt",limit:10,page:1},g.success=A,g.getQueues=function(){g.query.offset=(g.query.page-1)*g.query.limit,p.hasRole("admin")?g.promise=l.voiceQueue.get(g.query,A).$promise:(g.query.id=g.userProfile.id,g.query.section="VoiceQueues",g.promise=l.userProfile.getResources(g.query,A).$promise)},g.createOrEditVoiceQueue=function(e,t){a.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:t,voiceQueues:_.values(g.queues),license:null,setting:null,crudPermissions:g.crudPermissions}})},g.agentAdd=function(e,t){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:t,voiceQueues:g.queues?g.queues.rows:[],realtime:!0,crudPermissions:g.crudPermissions}})},g.updateQueue=function(e){return l.voiceQueue.update(e).$promise.then(function(){c.success({title:"Queue properly updated!",msg:e.name?e.name+" has been updated!":""})}).catch(function(e){c.error({title:"Error creating queue!",msg:e.message})})},g.onSave=function(e){g.queues[e.id]&&_.merge(g.queues[e.id],_.pick(e,v))},g.onPause=function(n){console.log("onPause",n),n.voicePause?_.forIn(g.queues,function(e,t){e.agents[n.id]&&(e.paused+=1,console.log("pause"))}):n.voicePause||_.forIn(g.queues,function(e,t){e.agents[n.id]&&0<e.paused&&(e.paused-=1,console.log("unpause"))})},g.onLogin=function(e){console.log("onLogged",e),g.queues[e.VoiceQueueId]&&(g.queues[e.VoiceQueueId].loggedInDb+=1,g.queues[e.VoiceQueueId].agents[e.UserId]=e.VoiceQueueId)},g.onLogout=function(e){console.log("onLogout",e),g.queues[e.VoiceQueueId]&&0<g.queues[e.VoiceQueueId].loggedInDb&&(g.queues[e.VoiceQueueId].loggedInDb-=1,delete g.queues[e.VoiceQueueId].agents[e.UserId])},g.$onInit=h,g.order=[],_.forIn(g.queues,function(e,t){g.order.push(e.id)}),d.onWithoutApply("voice_queue:save",g.onSave),g.interval=s(function(){},999),d.on("user:update",g.onPause),d.on("userVoiceQueue:remove",g.onLogout),d.on("userVoiceQueue:save",g.onLogin);var f=!0,b=1;function A(e){if(g.count=e.count,g.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){g.order=[];for(var t=0;t<e.rows.length;t++)g.order.push(e.rows[t].id)}h()}e.$watch("vm.query.filter",function(e,t){f?n(function(){f=!1}):(t||(b=g.query.page),e!==t&&(g.query.page=1),e||(g.query.page=b),g.getQueues())}),e.$on("$destroy",function(){d.removeAllListeners("voice_queue:save"),g.interval&&s.cancel(g.interval),d.removeAllListeners("user:update"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userVoiceQueue:save")})}e.$inject=["$scope","$timeout","$mdDialog","$q","$document","$interval","queues","rpcQueues","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,n,t){var a=this;switch(t.disconnect(),t.connect(),a.selectedTab=0,n.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,n.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,t){if(e!==t)switch(e){case 0:n.go("app.voice.realtime.agents");break;case 1:n.go("app.voice.realtime.telephones");break;case 2:n.go("app.voice.realtime.trunks");break;case 3:n.go("app.voice.realtime.queues");break;case 4:n.go("app.voice.realtime.queue_calls");break;case 5:n.go("app.voice.realtime.abandonedcalls");break;case 6:n.go("app.voice.realtime.queue_params");break;case 7:n.go("app.voice.realtime.outbound_calls");break;default:n.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,t){m.rpcTelephones[t]&&_.merge(e,_.pick(m.rpcTelephones[t],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){t.show(t.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,t){g?n(function(){g=!1}):(t||(v=m.query.page),e!==t&&(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,n,t,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,t=0;t<u.trunks.length;t+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[t].id]))&&_.merge(u.trunks[t],_.pick(u.rpcTrunks[e],p))}function v(e,t,n){0<=t&&_.merge(e[t],_.pick(n,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){t.show(t.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,t){l.go("app.tools.trunks.edit",{id:t.id})},u.onSave=function(e){var t=_.findIndex(u.trunks,["id",e.id]),n=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,t,e),v(u.rpcTrunks,n,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,t){h?n(function(){h=!1}):(t||(f=u.query.page),e!==t&&(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,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.voicemails,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d){var c=this;c.currentUser=d.getCurrentUser(),c.voicemail={},c.voicemailMessages={count:0,rows:[]},c.selectedVoicemailMessages=[],c.crudPermissions,c.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},c.init=function(e,t){c.voicemail=e,c.crudPermissions=void 0!==t?t:{readOnly:!0,canEdit:!1,canDelete:!1},c.query.id=c.voicemail.id,c.getVoicemailMessages()},c.deleteConfirm=function(e,t){var n=s.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(t).ok("OK").cancel("CANCEL");s.show(n).then(function(){g(e)},function(){console.log("CANCEL")})},c.voiceMailMessageDownload=function(s,e,t){return l.voiceMailMessage.download({id:s.id,exists:!0,attachments:t}).$promise.then(function(e){var t=[e.buffer],n="message"+s.id,a=new Blob(t,{type:e.type});n=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t+=1)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.success=p,c.getVoicemailMessages=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=l.voiceMail.getMessages(c.query,p).$promise},c.createOrEditVoicemailMessage=function(e,t){s.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(o.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:c.voicemail,message:t,messages:c.voicemailMessages.rows,license:null,setting:null,crudPermissions:c.crudPermissions}})},c.exportSelectedVoicemailMessages=function(){var e=angular.copy(c.selectedVoicemailMessages);return c.selectedVoicemailMessages=[],e},c.deleteVoicemailMessage=g,c.deleteSelectedVoicemailMessages=function(e){var t=s.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+c.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){c.selectedVoicemailMessages.forEach(function(e){g(e)}),c.selectedVoicemailMessages=[]})};var m=!0,u=1;function p(e){c.voicemailMessages=e||{count:0,rows:[]}}function g(e){l.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(c.voicemailMessages.rows,{id:e.id}),c.voicemailMessages.count-=1,c.voicemailMessages.rows.length||c.getVoicemailMessages(),r.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){vm.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var t=0;t<e.data.errors.length;t++)r.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}t.$watch("vm_dc.query.filter",function(e,t){m?i(function(){m=!1}):(t||(u=c.query.page),e!==t&&(c.query.page=1),e||(c.query.page=u),c.getVoicemailMessages())})}e.$inject=["$cookies","$scope","$state","$q","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,t,n,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=t.protocol()+"://"+t.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")},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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",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||[],u.contexts.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.voicemail&&(a=_.find(u.contexts,{name:u.voicemail.context}));for(var i=0;i<u.contexts.length;i++){_.some(t,{resourceId:u.contexts[i].id})?(u.contexts[i].canSelect=!0,n.push(u.contexts[i])):a&&u.contexts[i].id===a.id&&(u.contexts[i].canSelect=!1,n.push(u.contexts[i]))}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[],u.contexts.forEach(function(e){e.canSelect=!0})})}).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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voicemails=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voicemails",b.listOrder="",b.listOrderAsc=null,b.selectedVoicemails=[],b.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},b.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:b.crudPermissions})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVoicemails=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceMail.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Voicemails",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVoicemail=function(e,t){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:t,voicemails:b.voicemails.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoicemail=S,b.exportSelectedVoicemails=function(){var e=angular.copy(b.selectedVoicemails);return b.selectedVoicemails=[],e},b.deleteSelectedVoicemails=function(e){var t=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+b.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVoicemails.forEach(function(e){S(e)}),b.selectedVoicemails=[]})},b.deselectVoicemails=function(){b.selectedVoicemails=[]},b.selectAllVoicemails=function(){b.selectedVoicemails=b.voicemails.rows};var A=!0,E=1;function y(e){b.voicemails=e||{count:0,rows:[]}}function S(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(b.voicemails.rows,{id:e.id}),b.voicemails.count-=1,b.voicemails.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("VoicemailsController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.voicePrefixes,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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||[],g.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",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||[],g.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return d.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++){_.some(t,{resourceId:g.outboundRoutes[i].id})?(g.outboundRoutes[i].canSelect=!0,n.push(g.outboundRoutes[i])):a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,n.push(g.outboundRoutes[i]))}g.outboundRoutes=n})}else{var n=[],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,n.push(g.outboundRoutes[i]));g.outboundRoutes=n}}).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,t,n,o,r,l,d){var c=this;function m(){return a(function(n,t){return a(function(t,n){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(t,n){return s.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),a(function(t,n){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=t,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(n,t){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(n=e,a(function(e,t){_.isEmpty(n)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return n=t,a(function(e,t){_.isEmpty(n)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})});var n}).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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!o,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,t){var n=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(n)}}}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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voicePrefixes=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voicePrefixes",b.listOrder="",b.listOrderAsc=null,b.selectedVoicePrefixes=[],b.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",limit:10,page:1},b.editdialog=function(e,t){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:b.voicePrefixes.rows,license:b.license,setting:null,crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:b.voicePrefixes?b.voicePrefixes.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVoicePrefixes=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voicePrefix.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="VoicePrefixes",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditvoicePrefix=function(e,t){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:t,voicePrefixes:b.voicePrefixes.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deletevoicePrefix=S,b.exportSelectedVoicePrefixes=function(){var e=angular.copy(b.selectedVoicePrefixes);return b.selectedVoicePrefixes=[],e},b.deleteSelectedVoicePrefixes=function(e){var t=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+b.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVoicePrefixes.forEach(function(e){S(e)}),b.selectedVoicePrefixes=[]})},b.deselectVoicePrefixes=function(){b.selectedVoicePrefixes=[]},b.selectAllVoicePrefixes=function(){b.selectedVoicePrefixes=b.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){b.outboundRoutes=e.rows||[],b.outboundRoutes.forEach(function(e){e.canSelect=!0})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",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){b.outboundRoutes=e.rows||[],b.outboundRoutes.forEach(function(e){e.canSelect=!0})}).then(function(){return m.userProfileSection.get({userProfileId:b.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return m.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;b.voicePrefix&&(a=_.find(b.outboundRoutes,{id:Number(b.voicePrefix.VoiceExtensionId)}));for(var i=0;i<b.outboundRoutes.length;i++){_.some(t,{resourceId:b.outboundRoutes[i].id})?(b.outboundRoutes[i].canSelect=!0,n.push(b.outboundRoutes[i])):a&&b.outboundRoutes[i].id===a.id&&(b.outboundRoutes[i].canSelect=!1,n.push(b.outboundRoutes[i]))}b.outboundRoutes=n})}else{var n=[],a=null;b.voicePrefix&&(a=_.find(b.outboundRoutes,{id:Number(b.voicePrefix.VoiceExtensionId)}));for(var i=0;i<b.outboundRoutes.length;i++)a&&b.outboundRoutes[i].id===a.id&&(b.outboundRoutes[i].canSelect=!1,n.push(b.outboundRoutes[i]));b.outboundRoutes=n}}).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 A=!0,E=1;function y(e){b.voicePrefixes=e||{count:0,rows:[]}}function S(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(b.voicePrefixes.rows,{id:e.id}),b.voicePrefixes.count-=1,b.voicePrefixes.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("VoicePrefixesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.voiceQueues,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,i,s,o,r){var c=this;function m(){return l(function(n,t){return l(function(t,n){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,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 t=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){var t=_.find(c.items,{id:e.id});return t.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",t.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",t}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=t,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(n,t){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(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"),t=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});return(n=e,l(function(e,t){_.isEmpty(n)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else{for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(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 n},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,items:[],selectedItems:[],showSelectAndDeselectAll:!i,orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,t){t?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var n=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,t){return e.id===t.id&&e.penalty===t.penalty});c.pendingChanges=!_.isEmpty(n)}}}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,l,a,d,t,n,i,s){var c=this;function o(){return l(function(n,t){return l(function(t,n){return d.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}).then(function(e){return c.items=e.rows?e.rows:[],i.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(t,n){return d.userProfileResource.get({sectionId:c.section.id}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})}):null}).then(function(e){var t=e&&e.rows?e.rows:[];return c.allowedItems=_.map(t,function(e){return _.find(c.items,{id:i.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.items.forEach(function(e){var t=_.find(c.allowedItems,{id:e.id});i.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==t}),l(function(t,n){return d.voiceQueue.getTeams({id:c.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){t(e)}).catch(function(e){n(e)})})}).then(function(e){var t=e&&e.rows?e.rows:[];c.selectedItems=_.map(t,function(e){return _.find(c.items,{id:e.id})}),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),n()}).catch(function(e){t(e)})})}c.currentUser=i.getCurrentUser(),c.voiceQueue=t,c.crudPermissions=s,c.penalty=0,c.items=[],c.allowedItems=[],c.selectedItems=[],c.addedItems=[],c.removedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={readOnly:!c.crudPermissions.canEdit,allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!0,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:n.instant("VOICE.ALL_TEAMS"),labelSelected:n.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,t){t?c.removedItems=_.unionBy(e,c.removedItems,"id"):(e.forEach(function(e){e.penalty="penalty "+c.penalty}),c.addedItems=_.unionBy(e,c.addedItems,"id")),c.pendingChanges=!0}},c.onInit=function(){return i.hasRole("admin")?o().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(function(n,t){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;n(t)}).catch(function(e){t(e)})}).then(function(e){return c.section=e,o()}).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()})})},c.saveTeams=function(){var e=c.removedItems,t=c.addedItems;return(n=e,l(function(e,t){_.isEmpty(n)?e():d.voiceQueue.removeTeams({id:c.voiceQueue.id,ids:_.map(n,"id")}).$promise.then(function(){e()}).catch(function(e){t(e)})})).then(function(){return r=t,l(function(e,t){if(_.isEmpty(r))e();else{for(var n=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);n.push(d.voiceQueue.addTeams({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty ")}).$promise)}l.all(n).then(function(){e()}).catch(function(e){t(e)})}});var r}).then(function(){c.pendingChanges=!1,c.addedItems=[],c.removedItems=[],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 n},c.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(n,e,a,i,s,t,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=t,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||n.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=n.params.tab||0,u.teamadddialog=function(e,t){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,t){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:t,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,t){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){n.go("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||[],u.musiconholds.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",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||[],u.musiconholds.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;return t?t.autoAssociation?void 0:r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var t=e&&e.rows?e.rows:[],n=[],a=null;u.voiceQueue&&(a=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold}));for(var i=0;i<u.musiconholds.length;i++){_.some(t,{resourceId:u.musiconholds[i].id})?(u.musiconholds[i].canSelect=!0,n.push(u.musiconholds[i])):a&&u.musiconholds[i].id===a.id&&(u.musiconholds[i].canSelect=!1,n.push(u.musiconholds[i]))}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[],u.musiconholds.forEach(function(e){e.canSelect=!0})})}).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||[],u.sounds.forEach(function(e){e.canSelect=!0})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",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||[],u.sounds.forEach(function(e){e.canSelect=!0})}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var t=e&&e.rows?e.rows[0]:null;if(t){if(!t.autoAssociation)return r.userProfileResource.get({sectionId:t.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=_.map(u.sounds,function(e){var t=_.some(n,{resourceId:e.id});return e.canSelect=!!t,e});u.sounds=t})}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()})})}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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceQueues=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceQueues",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceQueues=[],b.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",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},b.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"),"")}),b.arrayjoinempty=_.keyBy([{option:"no",value:"'no'"},{option:"yes",value:"'yes'"},{option:"strict",value:"'strict'"},{option:"loose",value:"'loose'"},{option:"paused",value:"'paused'"},{option:"penalty",value:"'penalty'"},{option:"inuse",value:"'inuse'"},{option:"ringing",value:"'ringing'"},{option:"unavailable",value:"'unavailable'"},{option:"invalid",value:"'invalid'"},{option:"unknoww",value:"'unknown'"},{option:"wrapup",value:"'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'"},{option:"yes",value:"'yes'"},{option:"strict",value:"'strict'"},{option:"loose",value:"'loose'"},{option:"paused",value:"'paused'"},{option:"penalty",value:"'penalty'"},{option:"inuse",value:"'inuse'"},{option:"ringing",value:"'ringing'"},{option:"unavailable",value:"'unavailable'"},{option:"invalid",value:"'invalid'"},{option:"unknoww",value:"'unknown'"},{option:"wrapup",value:"'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.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"),"")}),b.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),b.editstate=function(e,t){n.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:b.crudPermissions})},b.teamadddialog=function(e,t){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:b.voiceQueues?b.voiceQueues.rows:[],crudPermissions:b.crudPermissions}})},b.agentadddialog=function(e,t){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:b.voiceQueues?b.voiceQueues.rows:[],crudPermissions:b.crudPermissions,realtime:!1}})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.gotorealtimegoto=function(e,t){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var t=e&&e.rows?e.rows[0]:null;t&&t.enabled?n.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()})});n.go("app.voice.realtime.queues",{})}},b.success=y,b.getVoiceQueues=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceQueue.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceQueues",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVoiceQueue=function(e,t){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:t,voiceQueues:b.voiceQueues.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceQueue=S,b.exportSelectedVoiceQueues=function(){var e=angular.copy(b.selectedVoiceQueues);return b.selectedVoiceQueues=[],e},b.deleteSelectedVoiceQueues=function(e){var t=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+b.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVoiceQueues.forEach(function(e){S(e)}),b.selectedVoiceQueues=[]})},b.deselectVoiceQueues=function(){b.selectedVoiceQueues=[]},b.selectAllVoiceQueues=function(){b.selectedVoiceQueues=b.voiceQueues.rows};var A=!0,E=1;function y(e){b.voiceQueues=e||{count:0,rows:[]}}function S(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceQueues.rows,{id:e.id}),b.voiceQueues.count-=1,b.voiceQueues.rows.length||b.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("VoiceQueuesController",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(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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 t=0;t<e.data.errors.length;t+=1)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=_.find(g.voiceRecordings,{id:e.id});t&&_.merge(t,_.pick(e.toJSON(),_.keys(t))),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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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 t=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(t).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 t=0;t<e.data.errors.length;t++)o.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=l||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition",sort:"-updatedAt",limit:10,page:1},b.localizationMap=f,b.pickerModel={dateStart:null},b.downloadfile2=function(s,e){return m.voiceRecording.download({id:s.id}).$promise.then(function(e){var t=[e.buffer],n="download",a=new Blob(t,{type:e.type});n=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",n),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,t){var n=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(t).ok("OK").cancel("CANCEL");i.show(n).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getVoiceRecordings=function(){b.query.dateStart=void 0,b.query.dateEnd=void 0,b.pickerModel.dateStart&&(b.query.dateStart=b.pickerModel.dateStart,b.query.dateEnd=b.pickerModel.dateEnd);b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,y).$promise)},b.createOrEditVoiceRecording=function(e,t){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:t,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=S,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);return b.selectedVoiceRecordings=[],e},b.deleteSelectedVoiceRecordings=function(e){var t=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){b.selectedVoiceRecordings.forEach(function(e){S(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.clearDateFilter=function(){b.pickerModel={dateStart:null},b.getVoiceRecordings()};var A=!0,E=1;function y(e){b.voiceRecordings=e||{count:0,rows:[]}}function S(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var t=0;t<e.data.errors.length;t++)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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,t){A?o(function(){A=!1}):(t||(E=b.query.page),e!==t&&(b.query.page=1),e||(b.query.page=E),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","dateFilterLocalizationFactory"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(t,n,s,a,o,e,i,r){var l=this;function d(e,t){return{id:e,title:t.name||"NONAME",state:"app.dashboards.custom",stateParams:t,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function c(e,t){return{id:e,title:t.name||"NONAME",state:"app.plugins.plugin",stateParams:t,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function m(e,t){a.saveItem("apps.home.plugin_"+e,{id:e,title:t.name,translate:t.name,state:"plugin_"+t.id,stateParams:t,view:"plugin",icon:t.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function u(e){return _.map(e.children,function(e){return e.id})}l.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),i.version.get().$promise.then(function(e){l.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){l.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+l.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(i.dashboard.get().$promise.then(function(e){for(var t=0,n=0;n<e.rows.length;n+=1)t=99999+e.rows[n].id,s.saveItem("apps.dashboards.custom_"+t,d(t,e.rows[n]))}),i.plugin.get({active:!0}).$promise.then(function(e){var t=0;if(e.count){var n=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<n.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(u(this))&&!o.hasRole("admin")}});for(var a=0;a<n.length;a+=1)t=88888+n[a].id,s.saveItem("apps.plugins.plugin_"+t,c(t,n[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)m(t=88888+i[a].id,i[a])}})),e.custom&&!r.defaultPageTitle&&r.pageTitle&&angular.element("#pageTitle").html(r.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(u(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(u(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!e.cm||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.voice||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.chat||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.mail||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(u(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!e.fax||o.hasRole("agent")||!o.hasChildrenPermissions(u(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:13,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(u(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.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.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.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.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.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:11,hidden:function(){return!e.voice||o.hasRole("agent")||!o.hasChildrenPermissions(u(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:14,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(u(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",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:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(u(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:1,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:1,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:1,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:1,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:1,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:1,badge:{content:"beta",color:"orange"},hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:18,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),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!e.custom||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!e.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.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:19,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.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!e.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(u(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.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:12,hidden:function(){return!e.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(u(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:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(u(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.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.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:2,hidden:function(){return!e.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:3,hidden:function(){return!e.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:3,hidden:function(){return!e.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:4,hidden:function(){return!e.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:5,hidden:function(){return!e.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:6,hidden:function(){return!e.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:7,hidden:function(){return!e.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:8,hidden:function(){return!e.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:9,hidden:function(){return!e.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-A200-fg",weight:10,hidden:function(){return!e.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:11,hidden:function(){return!e.fax||!o.hasPermission(109)}}),t.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===t.$id&&n.$broadcast("msSplashScreen::remove")})}e.$inject=["$scope","$rootScope","msNavigationService","msNavigationAgentService","Auth","license","api","setting"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,t,n,a,o,r){var i=this;function s(e){if(e&&e.id){var t=99999+e.id;o.saveItem("apps.dashboards.custom_"+t,{id:t,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(t)&&!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 t=88888+e.id;o.saveItem("apps.plugins.plugin_"+t,{id:t,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(t)&&!r.hasRole("admin")}}),o.sort()}}else{t=88888+e.id;n=1900,a=t,i=o.getNavigation(),(s=_.find(i[0].children,{id:n}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+t),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var n,a,i,s}function d(e){var t=o.getNavigation(),n=_.find(t[0].children,{id:e});return!!(n&&0<n.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=n,i.$onInit=function(){i.folded="true"===t.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,t.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 t=99999+e.id;o.deleteItem("apps.dashboards.custom_"+t)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var t=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+t),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,t,n,s,o,r){var l=this;function d(n){o.isSupported()?o.requestPermission().then(function(){var e,t;t={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=n).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),t)},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=t.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--},n.on("chatInternalMessage:save",l.onMessageSave),n.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 t=[],n=e.rows,a=0;a<n.length;a++)t.push(s.chatGroup.getUnread({id:n[a].id}).$promise);return i.all(t)}).then(function(e){for(var t=0;t<e.length;t++)l.unreadTotalGroupMessages+=e[t].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){n.removeAllListeners("chatInternalMessage:save"),n.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,t,n,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var t=angular.element("#chat-dialog");a(function(){t.animate({scrollTop:t[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){t.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){t.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 t.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",n.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 t=0;t<u.user.messages.rows.length;t+=1)!1===u.user.messages.rows[t].read&&u.user.messages.rows[t].ToId===u.currentUser.id&&n.chatInternalMessage.update({id:u.user.messages.rows[t].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="",n.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),n.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var t=_.find(u.users.rows,{id:e.FromId});t&&(t.lastMessageAt=e.createdAt,t.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var t=_.find(u.user.messages.rows,{id:e.id});t&&_.merge(t,e)}var n=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});n&&n.lastMessage&&_.merge(n.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var t=_.find(u.users.rows,{id:e.id});t&&(_.isNil(e.online)||t.online===e.online||(t.online=e.online),_.isNil(e.allowmessenger)||t.allowmessenger===e.allowmessenger||(t.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}),n.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){}),n.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,t,n,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 n;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var t=_.map(d.group.members,"id");return t.unshift(d.currentUser.id),n=e,s.chatGroup.addMembers({id:n.id,ids:t}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:n.name+" has been saved!"}),c(n)}).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((t=e,n=angular.lowercase(t),function(e){var t=e.name.toLowerCase();return-1!=t.indexOf(n)})):[];var t,n}}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,n,a,s,t,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var t=angular.element("#chat-group-dialog");a(function(){t.animate({scrollTop:t[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 t=0,n=[];t<e.rows.length;t++)e.rows[t].unreadGroupMessages=0,c.groups[e.rows[t].id]=e.rows[t],n.push(r.chatGroup.getUnread({id:e.rows[t].id}).$promise);return o.all(n)}).then(function(e){for(var t=0;t<e.length;t++)c.groups[e[t].id].unreadGroupMessages+=e[t].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,t){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(n.body),targetEvent:t,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,t){var n=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(t).ok("OK").cancel("CANCEL");s.show(n).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(n.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 t=[];a.messages=e.rows,a.messages.unshift(i);for(var n=0;n<a.messages.length;n++)t.push(r.user.get({id:a.messages[n].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(t)}).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(t){c.group={id:t.id,write:t.write,messages:{}},r.chatGroup.getMembers({id:t.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:t.id,nolimit:!0}).$promise}).then(function(e){for(var t,n=0,a=[];n<e.count;n++)e.rows[n].ToId===c.currentUser.id&&(t=e.rows[n],c.group.messages[t.id]=t,e.rows[n].ToId!=c.currentUser.id||e.rows[n].FromId===c.currentUser.id||t.read||a.push(r.chatInternalMessage.update({id:t.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 n={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(n).$promise.then(function(e){n.read=!1,n.ChatInternalMessageId=e.id;for(var t=0;t<c.group.members.length;t++)c.group.members[t].id!==c.currentUser.id&&(n.ToId=c.group.members[t].id,a.push(r.chatGroup.addMessage(angular.copy(n)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(t){if(!c.group&&t.ToId===c.currentUser.id&&t.FromId!==c.currentUser.id&&!t.read&&t.ChatGroupId){var e=c.groups[t.ChatGroupId];if(!e)return r.chatGroup.get({id:t.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&t.ChatGroupId===c.group.id&&t.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:t.id,read:!0}).$promise.then(function(){var e;e=t,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]}),t("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,t,n,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,t,n,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(){t.success({title:n.instant("RESETPASSWORD.PASSWORD_RESET"),msg:n.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&t.error({title:n.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&&t.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.user=a,o.setting=i,o.reset=s,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",o.savePassword=function(){o.errors=[],n.user.changePassword({id:o.user.id},{oldPassword:o.oldPassword,newPassword:o.password}).$promise.then(function(){t.show(t.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),r()}).catch(function(e){console.error(e),o.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},o.closeDialog=r}e.$inject=["$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r){var l=this;function d(e){_.isNil(e)&&s.cmHopper.update({id:l.preview.id,UserId:null}),a.hide()}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.preview=o,l.originated=!1,l.disable=!1,l.disableGetContact=!1,l.hopperIds.push(l.preview.id),l.originatePreview=function(){l.originated=!0,l.disable=!0,_.isEmpty(l.preview)?(i.error({title:"Message",msg:"Contact not available"}),l.disable=!1,l.hopperIds=[],d(!0)):s.rpc.getVoiceQueuesPreview({id:l.preview.id}).$promise.then(function(e){d(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){l.disable=!1,l.hopperIds=[]})},l.closeDialog=d,l.nextContact=function(){return l.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:l.hopperIds,direction:"next"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.preview.id))}).catch(function(e){if(l.disableGetContact=!1,l.hopperIds=[],404===e.status)l.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var t=0;t<e.data.errors.length;t+=1)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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()})})},l.previousContact=function(){if(l.disableGetContact=!0,1<l.hopperIds.length){var e=_.without(l.hopperIds,l.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){l.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(l.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(l.hopperIds,function(e){return e==l.preview.id}),l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e)}).catch(function(e){if(404===e.status)l.hopperIds=[l.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){l.hopperIds=[],a.hide();for(var t=0;t<e.data.errors.length;t+=1)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].message})}else l.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()})})}},l.getFirstAvailableContact=function(){return l.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[l.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"})):(l.originated||s.cmHopper.update({id:l.preview.id,UserId:null}),l.preview=e,l.hopperIds.push(l.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 t=0;t<e.data.errors.length;t+=1)i.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(){l.disableGetContact=!1})},l.isCustomField=function(e){return _.startsWith(e,"cf_")},l.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)},l.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){l.originated||s.cmHopper.update({id:l.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(e,t,s,n,o,a,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E){var y,S=this;function T(e){S.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function C(){S.promise=f.user.getQueues(S.query,T).$promise}function I(e){return v.logout(e).then(function(){return h.disconnect(),t.$broadcast("webrtc::logout"),n.go("app.login")}).catch(function(e){console.error(e)})}function x(e,t){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!t,locals:{user:S.user,setting:A,reset:t}})}S.voiceQueues={},S.polling=!0,t.global={search:""},S.pauses=[],S.license=b,S.currentUser=v.getCurrentUser(),S.unreadTotalMessages=0,S.unreadTotalGroupMessages=0,S.contcts=0,"agent"===S.currentUser.role&&(y=E(function(){_.some(S.voiceQueues,{dialMethod:"preview",dialActive:!0})&&S.license.dialer&&S.polling?(S.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(S.contacts=e.contacts)}).finally(function(){S.polling=!0})):S.contacts=0},14999)),S.setting=A,S.bodyEl=angular.element("body"),S.conf={realm:"asterisk",host:a.host(),protocol:a.protocol(),remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:S.license.webrtc,phoneBarExpires:S.currentUser.phoneBarExpires,phoneBarPrefixRequired:S.currentUser.phoneBarPrefixRequired},S.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},S.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"}],S.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"}},S.toggleSidenav=function(e){i(e).toggle()},S.logout=I,S.changeLanguage=function(e){if(!S.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"})}S.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===n.current.name&&d.location.reload()},S.setUserStatus=function(e){S.userStatus=e},S.toggleHorizontalMobileMenu=function(){S.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},S.toggleMsNavigationFolded=function(){g.toggleFolded()},S.search=function(t){for(var e=[],n=g.getFlatNavigation(),a=s.defer(),i=0;i<n.length;i++)n[i].uisref&&e.push(n[i]);t&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(t)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},S.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))},S.openSettings=function(e){t.$broadcast("webrtc::settings")},S.changePassword=x,S.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},S.onUserUpdate=function(e){if(e.id===S.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==S.user.showWebBar){var t=c.confirm().title(r.instant("TOOLBAR.WARNING")+"!").textContent(r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")).ariaLabel(r.instant("TOOLBAR.WARNING")+"!").ok(r.instant("TOOLBAR.STAY_LOGGED")).cancel("Logout");c.show(t).then(function(){v.queueLogin()}).catch(function(e){I(!0)}).finally(function(){_.merge(S.user,e),v.updateCurrentUser(S.user)})}else I(!0),_.merge(S.user,e),v.updateCurrentUser(S.user);else _.merge(S.user,e),v.updateCurrentUser(S.user)},S.onUserCalled=function(e){2===S.currentUser.showWebBar&&"agent"===S.currentUser.role&&S.currentUser.name===e.membername&&p.info({title:"WebRTC Popup",msg:"<div>                    <span>Call from: "+e.calleridnum+"</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})},S.pause=function(e){return f.user.pause({id:S.user.id,type:e||"DEFAULT PAUSE"}).$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()})})},S.unpause=function(){return f.user.unpause({id:S.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()})})},S.preview=function(t){return S.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:t,clickOutsideToClose:!0,locals:{preview:e},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){S.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var t=0;t<e.data.errors.length;t+=1)p.error({title:e.data.errors[t].type,msg:e.data.errors[t].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(){S.disable=!1})},S.getLogo=function(){return S.setting.defaultHeaderWhiteLabel?"xCALLY Motion":S.setting.headerWhiteLabel},S.userIsNotPhonebar=function(){return"admin"===S.currentUser.role||"user"===S.currentUser.role||"agent"===S.currentUser.role&&0!==S.currentUser.showWebBar},S.onInternalMessageSave=function(e){e.ToId!==S.currentUser.id||e.ChatGroupId||(S.unreadTotalMessages+=1);e.ToId===S.currentUser.id&&e.FromId!==S.currentUser.id&&!e.read&&e.ChatGroupId&&S.unreadTotalGroupMessages++},S.onInternalMessageUpdate=function(e){e.ToId===S.currentUser.id&&e.read&&0<S.unreadTotalMessages&&!e.ChatGroupId&&(S.unreadTotalMessages-=1);e.ToId===S.currentUser.id&&e.read&&e.ChatGroupId&&0<S.unreadTotalGroupMessages&&S.unreadTotalGroupMessages--},S.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&C()},S.onVoiceQueue=function(e){C()},h.connect(),h.on("user:update",S.onUserUpdate),h.on("user:called",S.onUserCalled),h.on("chatInternalMessage:save",S.onInternalMessageSave),h.on("chatInternalMessage:update",S.onInternalMessageUpdate),h.on("userVoiceQueue:save",S.onUserVoiceQueue),h.on("voiceQueue:save",S.onVoiceQueue),h.on("userVoiceQueue:remove",S.onUserVoiceQueue),h.on("voiceQueue:remove",S.onVoiceQueue),h.on("voiceQueue:update",S.onVoiceQueue),function(){S.user=v.getCurrentUser(),S.conf.ha1=S.user.md5secret,S.conf.id=S.user.id,S.conf.name=S.user.name,S.conf.fullname=S.user.fullname,S.conf.internal=S.user.internal,S.conf.recording=S.user.phoneBarEnableRecording,S.conf.autoAnswer=S.user.phoneBarAutoAnswer,S.conf.enableSettings=S.user.phoneBarEnableSettings,S.conf.enableDtmfTone=S.user.phoneBarEnableDtmfTone,S.conf.autoAnswerDelay=S.user.phoneBarAutoAnswerDelay,S.userStatus=S.userStatusOptions[0];var e=u.get("motion.language");e&&S.languages.hasOwnProperty(e)?S.selectedLanguage=S.languages[e]:S.selectedLanguage=S.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){S.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()})}),S.setting.securePassword)if(S.user.passwordResetAt){var t=moment(S.user.passwordResetAt).add(S.setting.passwordExpiresDays||90,"day");moment().isAfter(t)?x(null,!0):moment().add(15,"day").isAfter(t)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(t.diff(moment(),"days",!0)),timeout:2e4})}else x(null,!0)}(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:S.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){S.unreadTotalMessages=e.rows.length}),e.$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"),y&&(E.cancel(y),y=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var t=new Object,n=e.lastIndexOf("?");if(0<n)for(var a=e.substring(n+1).split("&"),i=0;i<a.length;i++)0<(n=a[i].indexOf("="))&&(t[a[i].substring(0,n)]=a[i].substring(n+1));return t}(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-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,t,n){if(n=n||document,mxClient.IS_IE6)n.write('<link rel="'+e+'" href="'+t+'" charset="ISO-8859-1" type="text/css"/>');else{var a=n.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",t),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),n.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,t=document.createElement("table");t.setAttribute("width","100%"),t.setAttribute("height","100%");var n=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),n.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),n.appendChild(a),t.appendChild(n),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=n=0,a="number"==typeof window.innerWidth?(n=window.innerHeight,window.innerWidth):(n=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,t,Math.max(0,a-320),Math.max(0,n-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,t){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,t){var n=document.createElement("button");mxUtils.write(n,e),mxEvent.addListener(n,"click",t),mxLog.td.appendChild(n)},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,t){if(mxLog.TRACE){var n=0!=t?" ("+((new Date).getTime()-t)+" ms)":"";mxLog.writeln("Leaving "+e+n)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",t=0;t<arguments.length;t++)e+=arguments[t],t<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="",t=0;t<arguments.length;t++)e+=arguments[t],t<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 t=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=t+"#"+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,t){var n=mxObjectIdentity.get(e),a=this.map[n];return this.map[n]=t,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var t=this.map[e];return delete this.map[e],t},mxDictionary.prototype.getKeys=function(){var e,t=[];for(e in this.map)t.push(e);return t},mxDictionary.prototype.getValues=function(){var e,t=[];for(e in this.map)t.push(this.map[e]);return t},mxDictionary.prototype.visit=function(e){for(var t in this.map)e(t,this.map[t])};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,t){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(t)?e+mxResources.extension:null},getSpecialBundle:function(e,t){if(null==mxClient.languages||!this.isLanguageSupported(t)){var n=t.indexOf("-");0<n&&(t=t.substring(0,n))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(t)&&t!=mxClient.defaultLanguage?e+"_"+t+mxResources.extension:null},add:function(e,t){if((t=null!=t?t:mxClient.language.toLowerCase())!=mxConstants.NONE){var n=mxResources.getDefaultBundle(e,t);if(null!=n)try{var a=mxUtils.load(n);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(n=mxResources.getSpecialBundle(e,t)))try{(a=mxUtils.load(n)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var t=0;t<e.length;t++)if("#"!=e[t].charAt(0)){var n=e[t].indexOf("=");if(0<n){var a=e[t].substring(0,n),i=e[t].length;13==e[t].charCodeAt(i-1)&&i--,n=e[t].substring(n+1,i),this.resourcesEncoded?(n=n.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(n)):mxResources.resources[a]=n}}}},get:function(e,t,n){if(null==(e=mxResources.resources[e])&&(e=n),null!=e&&null!=t){n=[];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<t.length&&n.push(t[a]),a=null):null!=a?a+=s:n.push(s)}e=n.join("")}return e}};function mxPoint(e,t){this.x=null!=e?e:0,this.y=null!=t?t:0}function mxRectangle(e,t,n,a){mxPoint.call(this,e,t),this.width=null!=n?n: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,t,n,a){this.x=e,this.y=t,this.width=n,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 t=Math.min(this.x,e.x),n=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=t,this.y=n,this.width=a-t,this.height=e-n}},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,t=0;t<d.length;t++){var n=d[t];if(n instanceof mxGeometryChange||n instanceof mxTerminalChange||n instanceof mxValueChange||n instanceof mxChildChange||n instanceof mxStyleChange){var a=l.getView().getState(n.cell||n.child,!1);if(null!=a)if(e=!0,n.constructor!=mxGeometryChange||l.model.isEdge(n.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(n.geometry.x-n.previous.x)*i,o=(n.geometry.y-n.previous.y)*i,r=(n.geometry.width-n.previous.width)*i;i=(n.geometry.height-n.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,n.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,t,n){for(var a=e.model.getChildCount(t),i=0;i<a;i++){var s=e.model.getChildAt(t,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,n),mxEffects.cascadeOpacity(e,s,n))}if(null!=(t=e.model.getEdges(t)))for(i=0;i<t.length;i++)null!=(a=e.getView().getState(t[i]))&&mxUtils.setOpacity(a.shape.node,n)},fadeOut:function(e,t,n,a,i,s){a=a||40,i=i||30;var o=t||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",n&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",n&&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 t=e.length,n=0;n<t;n+=1)mxUtils.removeCursors(e[n])},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,t){return function(){return t.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,t,n){var a=e.getAttribute(t);if(null!=a&&a==n)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,t,n)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,t,n){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(t)==n)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,t,n),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,t,n){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+t+"='"+n+"']")}:function(e,t,n){return null==e?null:e.ownerDocument.evaluate("//*[@"+t+"='"+n+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var t=null;if(null!=e)if(null!=e.name)t=e.name;else{for(e=e.toString(),t=9;" "==e.charAt(t);)t++;var n=e.indexOf("(",t);t=e.substring(t,n)}return t},indexOf:function(e,t){if(null!=e&&null!=t)for(var n=0;n<e.length;n++)if(e[n]==t)return n;return-1},remove:function(e,t){var n=null;if("object"==typeof t)for(var a=mxUtils.indexOf(t,e);0<=a;)t.splice(a,1),n=e,a=mxUtils.indexOf(t,e);for(var i in t)t[i]==e&&(delete t[i],n=e);return n},isNode:function(e,t,n,a){return!(null==e||isNaN(e.nodeType)||null!=t&&e.nodeName.toLowerCase()!=t.toLowerCase())&&(null==n||e.getAttribute(n)==a)},getChildNodes:function(e,t){t=t||mxConstants.NODETYPE_ELEMENT;for(var n=[],a=e.firstChild;null!=a;)a.nodeType==t&&n.push(a),a=a.nextSibling;return n},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 t=mxUtils.createXmlDocument();return t.async="false",t.loadXML(e),t}: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,t,n){var a=[];if(null!=e)if(t=t||"  ",n=n||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(n+"<"+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,t,n+t)),i=i.nextSibling;a.push(n+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,t){for(var n=t?e.previousSibling:e.nextSibling;null!=n&&n.nodeType==mxConstants.NODETYPE_TEXT;){var a=t?n.previousSibling:n.nextSibling,i=mxUtils.getTextContent(n);0==mxUtils.trim(i).length&&n.parentNode.removeChild(n),n=a}},htmlEntities:function(e,t){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==t||t)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,t){var n="";return null!=e&&(n=null==(n=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):n.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),n.replace(/\n/g,t||"&#xa;")},getTextContent:function(e){var t="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),t=e.nodeValue||""),t},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 t=[];t.push("<"+e.nodeName);var n=e.attributes;if(null!=n)for(var a=0;a<n.length;a++){var i=n[a].nodeValue;null!=i&&0<i.length&&(t.push(" "),t.push(n[a].nodeName),t.push('="'),t.push(i),t.push('"'))}return 0==e.innerHTML.length?t.push("/>"):(t.push(">"),t.push(e.innerHTML),t.push("</"+e.nodeName+">")),t.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,t){var n=e.ownerDocument.createTextNode(t);return null!=e&&e.appendChild(n),n},writeln:function(e,t){var n=e.ownerDocument.createTextNode(t);return null!=e&&(e.appendChild(n),e.appendChild(document.createElement("br"))),n},br:function(e,t){t=t||1;for(var n=null,a=0;a<t;a++)null!=e&&(n=e.ownerDocument.createElement("br"),e.appendChild(n));return n},button:function(e,t,n){return n=(n=null!=n?n:document).createElement("button"),mxUtils.write(n,e),mxEvent.addListener(n,"click",function(e){t(e)}),n},para:function(e,t){var n=document.createElement("p");return mxUtils.write(n,t),null!=e&&e.appendChild(n),n},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,t,n,a,i){return mxUtils.link(e,t,function(){n.execute(a)},i)},linkInvoke:function(e,t,n,a,i,s){return mxUtils.link(e,t,function(){n[a](i)},s)},link:function(e,t,n,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",n),mxUtils.write(i,t),null!=e&&e.appendChild(i),i},fit:function(e){var t=parseInt(e.offsetLeft),n=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<t+n&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-n)+"px"),t=parseInt(e.offsetTop),n=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<t+n&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-n)+"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 t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return t.initWithPath(e),t.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(t,1,4,null),(t=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),t.read(t.available())):(mxUtils.alert("File not found."),"")}return e=(t=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),t.close(),e},save:function(e,t){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);n.initWithPath(e),n.exists()||n.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(n,34,4,null),a.write(t,t.length),a.flush(),a.close()}else(n=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(t),n.Close()},saveAs:function(e){var t=document.createElement("iframe");t.setAttribute("src",""),t.style.visibility="hidden",document.body.appendChild(t);try{if(mxClient.IS_NS){var n=t.contentDocument;n.open(),n.write(e),n.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),t.focus(),saveDocument(n)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(n=t.contentWindow.document).write(e),n.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(t)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var t=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(t){var n=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(n){n.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,n.setTransferData("text/unicode",a,2*e.length),t.setData(n,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,t,n){return new mxXmlRequest(e,null,"GET").send(t,n)},post:function(e,t,n,a){return new mxXmlRequest(e,t).send(n,a)},submit:function(e,t,n,a){return new mxXmlRequest(e,t).simulate(n,a)},loadInto:function(e,t,n){mxClient.IS_IE?t.onreadystatechange=function(){4==t.readyState&&n()}:t.addEventListener("load",n,!1),t.load(e)},getValue:function(e,t,n){return null==(e=null!=e?e[t]:null)&&(e=n),e},getNumber:function(e,t,n){return null==(e=null!=e?e[t]:null)&&(e=n||0),Number(e)},getColor:function(e,t,n){return null==(e=null!=e?e[t]:null)?e=n:e==mxConstants.NONE&&(e=null),e},clone:function(e,t,n){n=null!=n&&n;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==t||mxUtils.indexOf(t,i)<0)&&(a[i]=n||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,t){if(null==e&&null!=t||null!=e&&null==t||null!=e&&null!=t&&e.length!=t.length)return!1;if(null!=e&&null!=t)for(var n=0;n<e.length;n++)if(e[n]==t[n]||null!=e[n]&&!e[n].equals(t[n]))return!1;return!0},equalEntries:function(e,t){if(null==e&&null!=t||null!=e&&null==t||null!=e&&null!=t&&e.length!=t.length)return!1;if(null!=e&&null!=t)for(var n in e)if(e[n]!=t[n])return!1;return!0},extend:function(e,t){var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e},toString:function(e){var t,n="";for(t in e)try{if(null==e[t])n+=t+" = [null]\n";else if("function"==typeof e[t])n+=t+" => [Function]\n";else if("object"==typeof e[t])n=n+(t+" => [")+mxUtils.getFunctionName(e[t].constructor)+"]\n";else n+=t+" = "+e[t]+"\n"}catch(e){n+=t+"="+e.message}return n},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,t,n,a,i,s,o,r,l){if(r-=e,l-=t,0===n||0===a)return h;n=Math.abs(n),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=n*n)+(p=d*d)/(A=a*a))?(n*=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))))*n*d/a)-h*(p=-1*s*a*i/n)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/n)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/n)-Math.atan2((d-p)/a,(i-c)/n))?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*n,m*=a,n*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(n*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=n*u+m*b+l,-d*(c*b+a*u));u=-d*(n*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+t),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+t),h[b+4]=Number(A+e),h[b+5]=Number(v+t),p=A+E,g=v+u}return h},getBoundingBox:function(e,t){var n=null;if(null!=e&&null!=t&&0!=t){var a=mxUtils.toRadians(t),i=(n=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,n,i,s),a=mxUtils.getRotatedPoint(a,n,i,s),r=mxUtils.getRotatedPoint(r,n,i,s),l=mxUtils.getRotatedPoint(l,n,i,s);(n=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),n.add(new mxRectangle(r.x,r.y,0,0)),n.add(new mxRectangle(l.x,l.y,0,0))}return n},getRotatedPoint:function(e,t,n,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*t-(e=e.y-a.y)*n+a.x,e*t+i*n+a.y)},getPortConstraints:function(e,t,n,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,t,n){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,t,n);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,t,n){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=t.x;var r=n.x;if(t.x>n.x&&(e=n.x,r=t.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=t.y,o=n.y;var l=n.x-t.x;return 1e-7<Math.abs(l)&&(i=(n=(n.y-t.y)/l)*e+(t=t.y-n*t.x),o=n*r+t),o<i&&(t=o,o=i,i=t),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,t,n){return e.x<=t&&e.x+e.width>=t&&e.y<=n&&e.y+e.height>=n},intersects:function(e,t){var n=e.width,a=e.height,i=t.width,s=t.height;if(i<=0||s<=0||n<=0||a<=0)return!1;var o=e.x,r=e.y,l=t.x,d=t.y;s+=d,n+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(n<o||l<n)&&(a<r||d<a)},intersectsHotspot:function(e,t,n,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()),t=(e=mxUtils.getRotatedPoint(new mxPoint(t,n),i,s,o)).x,n=e.y),mxUtils.contains(a,t,n)}return!0},getOffset:function(e,t){var n=0,a=0;if(null!=t&&t){var i=document.body,s=document.documentElement;n=n+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)n+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(n,a)},getScrollOrigin:function(e){for(var t=document.body,n=document.documentElement,a=new mxPoint(t.scrollLeft||n.scrollLeft,t.scrollTop||n.scrollTop);null!=e&&e!=t&&e!=n;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,t,n){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(t-e.x,n-e.y)},ltrim:function(e,t){return e.replace(RegExp("^["+(t||"\\s")+"]+","g"),"")},rtrim:function(e,t){return e.replace(RegExp("["+(t||"\\s")+"]+$","g"),"")},trim:function(e,t){return mxUtils.ltrim(mxUtils.rtrim(e,t),t)},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,t){return(e%t+t)%t},intersection:function(e,t,n,a,i,s,o,r){var l=(r-s)*(n-e)-(o-i)*(a-t);return o=((o-i)*(t-s)-(r-s)*(e-i))/l,i=((n-e)*(t-s)-(a-t)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(n-e),t+o*(a-t)):null},ptSegDistSq:function(e,t,n,a,i,s){return n=(i-=e)*(n-=e)+(s-=t)*(a-=t)<=0?0:(e=(i=n-i)*n+(s=a-s)*a)<=0?0:e*e/(n*n+a*a),(i=i*i+s*s-n)<0&&(i=0),i},relativeCcw:function(e,t,n,a,i,s){return 0==(e=(i-=e)*(a-=t)-(s-=t)*(n-=e))&&(0<(e=i*n+s*a)&&((e=(i-n)*n+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,t){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,t,n){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,t,n,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,t){mxUtils.isVml(e)?e.style.filter=100<=t?null:"alpha(opacity="+t/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=t?null:"alpha(opacity="+t+")":e.style.opacity=t/100},createImage:function(e){var t=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((t=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),t.style.borderStyle="none"):((t=document.createElement("img")).setAttribute("src",e),t.setAttribute("border","0")),t},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,t){var n=s.get(e);null==n&&(n=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,n));var a=s.get(t);return null==a&&(a=mxCellPath.create(t).split(mxCellPath.PATH_SEPARATOR),s.put(t,a)),0==(n=mxCellPath.compare(n,a))?0:0<n==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var t=[];if(null!=e){e=e.split(";");for(var n=0;n<e.length;n++)e[n].indexOf("=")<0&&t.push(e[n])}return t},indexOfStylename:function(e,t){if(null!=e&&null!=t)for(var n=e.split(";"),a=0,i=0;i<n.length;i++){if(n[i]==t)return a;a+=n[i].length+1}return-1},addStylename:function(e,t){return mxUtils.indexOfStylename(e,t)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=t),e},removeStylename:function(e,t){var n=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=t&&n.push(a[i]);return n.join(";")},removeAllStylenames:function(e){var t=[];if(null!=e){e=e.split(";");for(var n=0;n<e.length;n++)0<=e[n].indexOf("=")&&t.push(e[n])}return t.join(";")},setCellStyles:function(e,t,n,a){if(null!=t&&0<t.length){e.beginUpdate();try{for(var i=0;i<t.length;i++)if(null!=t[i]){var s=mxUtils.setStyle(e.getStyle(t[i]),n,a);e.setStyle(t[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,t,n){var a=null!=n&&(void 0===n.length||0<n.length);if(null==e||0==e.length)a&&(e=t+"="+n);else{var i=e.indexOf(t+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+t+"="+n):(t=a?t+"="+n:"",n=e.indexOf(";",i),a||n++,e=e.substring(0,i)+t+(i<n?e.substring(n):""))}return e},setCellStyleFlags:function(e,t,n,a,i){if(null!=t&&0<t.length){e.beginUpdate();try{for(var s=0;s<t.length;s++)if(null!=t[s]){var o=mxUtils.setStyleFlag(e.getStyle(t[s]),n,a,i);e.setStyle(t[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,t,n,a){if(null==e||0==e.length)e=a||null==a?t+"="+n:t+"=0";else{var i=e.indexOf(t+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+t+"="+n:e+i+t+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+t.length+1):e.substring(i+t.length+1,s),o=null==a?parseInt(o)^n:a?parseInt(o)|n:parseInt(o)&~n;e=e.substring(0,i)+t+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,t){var n=0,a=0;return e==mxConstants.ALIGN_CENTER?n=-.5:e==mxConstants.ALIGN_RIGHT&&(n=-1),t==mxConstants.ALIGN_MIDDLE?a=-.5:t==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(n,a)},getSizeForString:function(e,t,n){t=null!=t?t:mxConstants.DEFAULT_FONTSIZE,n=null!=n?n:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=n,a.style.fontSize=Math.round(t)+"px",a.style.lineHeight=Math.round(t*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,t,n,a,i){a=null!=a?a:0,i=null!=i?i:0,t=null!=t?t:1,null==n&&(n=[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),t=new mxTemporaryCellStates(e.getView(),t,n);try{o=(new mxCodec).encode(e.getView())}finally{t.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,t,n,a){if(e<1)return 1;a=null!=a?a:0;var i=(n=null!=n?n:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;n=n.height-2*a,a=t.getGraphBounds().clone(),t=t.getView().getScale(),a.width/=t,a.height/=t,n=(t=a.width)/a.height/(i/n),a=Math.sqrt(e);var s=Math.sqrt(n);if(n=a*s,a/=s,n<1&&e<a){var o=a/e;a=e,n/=o}for(a<1&&e<n&&(o=n/e,n=e,a/=o),o=Math.ceil(n)*Math.ceil(a),s=0;e<o;){o=Math.floor(n)/n;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(n-1)/n),1==r&&(r=Math.floor(a-1)/a),n*=o=r<o?o:r,a*=o,o=Math.ceil(n)*Math.ceil(a),10<++s)break}return i*n/t*.99999},show:function(e,t,n,a){if(n=null!=n?n:0,a=null!=a?a:0,null==t?t=window.open().document:t.open(),n=-(i=e.getGraphBounds()).x+n,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>",t.writeln(i),t.close(),null!=(e=t.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=n+"px",e.style.top=a+"px")}else{for(t.writeln("<html"),t.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)t.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)t.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)t.writeln(mxUtils.getOuterHtml(s[o]));for(t.writeln("</head>"),t.writeln("</html>"),t.close(),null==t.body&&t.documentElement.appendChild(t.createElement("body")),t.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),t.body.appendChild(o),e=e.nextSibling;null!=(e=t.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+n+","+a+")"),(n=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),n.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(t.body),t},printScreen:function(e){var t=window.open();mxUtils.show(e,t.document),e=function(){t.focus(),t.print(),t.close()},mxClient.IS_GC?t.setTimeout(e,500):e()},popup:function(e,t){if(t){var n=document.createElement("div");n.style.overflow="scroll",n.style.width="636px",n.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),n.appendChild(a),(n=new mxWindow("Popup Window",n,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),n.setVisible(!0)}else mxClient.IS_NS?((n=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),n.document.close()):((a=(n=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),n.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,t){return prompt(e,t)},confirm:function(e){return confirm(e)},error:function(e,t,n,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-t)/2,a/4,t,null,!1,!0);return n&&(mxUtils.br(i),t=document.createElement("p"),n=document.createElement("button"),mxClient.IS_IE?n.style.cssText="float:right":n.setAttribute("style","float:right"),mxEvent.addListener(n,"click",function(e){o.destroy()}),mxUtils.write(n,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),t.appendChild(n),i.appendChild(t),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,t,n,i,a,s,o,r,l,d){return(e=new mxDragSource(e,n)).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 t?t(e):t},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var t=i.cloneNode(!0),n=parseInt(t.style.width),a=parseInt(t.style.height);return t.style.width=Math.round(n*e.view.scale)+"px",t.style.height=Math.round(a*e.view.scale)+"px",t})),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 t=1;t<arguments.length;t+=2)null!=arguments[t+1]&&(this.properties[arguments[t]]=arguments[t+1])}function mxMouseEvent(e,t){this.evt=e,this.state=t}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 t=this.getSource();null!=t;){if(t==e.node)return!0;t=t.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,t){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(t)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var t=0;t<this.eventListeners.length;)this.eventListeners[t+1]==e?this.eventListeners.splice(t,2):t+=2},mxEventSource.prototype.fireEvent=function(e,t){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==t&&(t=this.getEventSource()),null==t&&(t=this);for(var n=[t,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,n)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,t,n){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:t,f:n})};return window.addEventListener?function(e,t,n){e.addEventListener(t,n,!1),a(e,t,n)}:function(e,t,n){e.attachEvent("on"+t,n),a(e,t,n)}}(),removeListener:function(){var a=function(e,t,n){if(null!=e.mxListenerList){t=e.mxListenerList.length;for(var a=0;a<t;a++)if(e.mxListenerList[a].f==n){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,t,n){e.removeEventListener(t,n,!1),a(e,t,n)}:function(e,t,n){e.detachEvent("on"+t,n),a(e,t,n)}}(),removeAllListeners:function(e){var t=e.mxListenerList;if(null!=t)for(;0<t.length;){var n=t[0];mxEvent.removeListener(e,n.name,n.f)}},addGestureListeners:function(e,t,n,a){null!=t&&mxEvent.addListener(e,"mousedown",t),null!=n&&mxEvent.addListener(e,"mousemove",n),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=t&&mxEvent.addListener(e,"touchstart",t),null!=n&&mxEvent.addListener(e,"touchmove",n),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,t,n,a){null!=t&&mxEvent.removeListener(e,"mousedown",t),null!=n&&mxEvent.removeListener(e,"mousemove",n),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=t&&mxEvent.removeListener(e,"touchstart",t),null!=n&&mxEvent.removeListener(e,"touchmove",n),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,n,t,a,i,s,o){var r=function(e){return"function"==typeof t?t(e):t};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||n.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||n.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||n.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 t=r(e);n.dblClick(e,null!=t?t.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var t=e.length,n=0;n<t;n+=1)mxEvent.release(e[n])},addMouseWheelListener:function(n){if(null!=n){var e=function(e){null==e&&(e=window.event);var t=0;0!=(t=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&n(e,0<t)};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,t,n){n=null==n||n,(null==t||t)&&(e.preventDefault?(n&&e.stopPropagation(),e.preventDefault()):n&&(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,t,n,a,i,s){this.url=e,this.params=t,this.method=n||"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,t){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,t){null!=t&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,t){var n=null;(e=e||document)==document&&(n=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=t&&a.setAttribute("target",t),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!=n&&(window.onbeforeunload=n)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,t){return t=mxClipboard.copy(e,t),mxClipboard.insertCount=0,mxClipboard.removeCells(e,t),t},removeCells:function(e,t){e.removeCells(t)},copy:function(e,t){t=t||e.getSelectionCells();var n=e.getExportableCells(t);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(n),n},paste:function(e){if(null!=mxClipboard.cells){var t=e.getImportableCells(mxClipboard.cells),n=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();t=e.importCells(t,n,n,a);mxClipboard.insertCount++,e.setSelectionCells(t)}}};function mxWindow(e,t,n,a,i,s,o,r,l,d){null!=t&&(o=null==o||o,this.content=t,this.init(n,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,t,n){this.src=e,this.width=t,this.height=n}function mxDivResizer(e,t){if("div"==e.nodeName.toLowerCase()){null==t&&(t=window),this.div=e;var n=mxUtils.getCurrentStyle(e);null!=n&&(this.resizeWidth="auto"==n.width,this.resizeHeight="auto"==n.height),mxEvent.addListener(t,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,t){this.element=e,this.dropHandler=t,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(t,e,n,a){this.model=t,this.urlInit=e,this.urlPoll=n,this.urlNotify=a,null!=t&&(this.codec=new mxCodec,this.codec.lookup=function(e){return t.getCell(e)}),t.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,t){var n=t.getProperty("edit");(null!=n&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(n.changes,n.undone)+"</edit>")}))}function mxUndoableEdit(e,t){this.source=e,this.changes=[],this.significant=null==t||t}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,t,n,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=t+"px",this.table=document.createElement("table"),this.table.className=i,null!=n&&(mxClient.IS_IE||(this.div.style.width=n+"px"),this.table.style.width=n+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),t=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",t.appendChild(this.title),e.appendChild(t),t=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),t.appendChild(this.td),e.appendChild(t),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 t=this.title.firstChild;null!=t;){var n=t.nextSibling;t.nodeType==mxConstants.NODETYPE_TEXT&&t.parentNode.removeChild(t),t=n}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 t=mxWindow.activeWindow.getElement();null!=t&&null!=t.style&&(t.style.zIndex=e)}t=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",t))}},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,t=mxUtils.bind(this,function(e){var t=mxEvent.getClientX(e)-a,n=mxEvent.getClientY(e)-i;this.setSize(s+t,o+n),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),n=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,t,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,t,n),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,t){e=Math.max(this.minimumSize.width,e),t=Math.max(this.minimumSize.height,t),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=t+"px"),this.table.style.width=e+"px",this.table.style.height=t+"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 n=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),n)n=!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{n=!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 t=this.getMinimumSize();0<t.height&&(mxClient.IS_IE||(this.div.style.height=t.height+"px"),this.table.style.height=t.height+"px"),0<t.width&&(mxClient.IS_IE||(this.div.style.width=t.width+"px"),this.table.style.width=t.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 n=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(n)n=!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"!=(t=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(n=!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 t=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=t.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(),t=mxUtils.bind(this,function(e){var t=mxEvent.getClientX(e)-a,n=mxEvent.getClientY(e)-i;this.setLocation(s+t,o+n),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),n=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,t,n),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,t,n),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,t){this.div.style.left=e+"px",this.div.style.top=t+"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,t){var n=document.createElement("tr"),a=document.createElement("td");n.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(){t()}),n.appendChild(a),this.body.appendChild(n)},mxForm.prototype.addText=function(e,t){var n=document.createElement("input");return n.setAttribute("type","text"),n.value=t,this.addField(e,n)},mxForm.prototype.addCheckbox=function(e,t){var n=document.createElement("input");return n.setAttribute("type","checkbox"),this.addField(e,n),t&&(n.checked=!0),n},mxForm.prototype.addTextarea=function(e,t,n){var a=document.createElement("textarea");return mxClient.IS_NS&&n--,a.setAttribute("rows",n||2),a.value=t,this.addField(e,a)},mxForm.prototype.addCombo=function(e,t,n){var a=document.createElement("select");return null!=n&&a.setAttribute("size",n),t&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,t,n,a){var i=document.createElement("option");mxUtils.writeln(i,t),i.setAttribute("value",n),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,t){var n=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),n.appendChild(a),(a=document.createElement("td")).appendChild(t),n.appendChild(a),this.body.appendChild(n),t},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(),t=this.getDocumentHeight(),n=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(n)&&!isNaN(a)&&0<=n&&0<=a&&0<e-a-n&&(this.div.style.width=e-a-n+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<t-i-s&&(this.div.style.height=t-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,t,n){return e.getCellAt(t,n)},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,t){var n=mxEvent.getClientX(t),a=mxEvent.getClientY(t),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return n>=i.x-s.x&&a>=i.y-s.y&&n<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(t=this.getGraphForEvent(e))&&!this.graphContainsEvent(t,e)&&(t=null),t!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=t,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 t=mxEvent.getClientX(e),n=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(t+=this.dragOffset.x,n+=this.dragOffset.y),t+=document.body.scrollLeft||document.documentElement.scrollLeft,n+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=t+"px",this.dragElement.style.top=n+"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 t=this.currentGraph.view.scale,n=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/t-n.x,this.currentPoint.y/t-n.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,t){var n=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(t)-n.x+a.x;n=mxEvent.getClientY(t)-n.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,n,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,n),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(t);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(t))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),n=new mxPoint(i,n),n=this.currentGuide.move(s,n,a),s=!1,i=n.x,n=n.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,n=(e.snap(n/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,n+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(n)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,n)},mxDragSource.prototype.drop=function(e,t,n,a,i){this.dropHandler(e,t,n,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,t,n,a,i,s){var o=document.createElement(null!=t?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",t),null!=e&&(null!=t?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=n&&(mxEvent.addListener(o,"click",n),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",n)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",t):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 t=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),t!=o&&(this.currentImg=o,this.menu.factoryMethod=s,t=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(t.x,t.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 t=document.createElement("div");t.style.display="inline",t.className="mxToolbarComboContainer";var n=document.createElement("select");return n.className=e||"mxToolbarCombo",t.appendChild(n),this.container.appendChild(t),n},mxToolbar.prototype.addActionCombo=function(e,t){var n=document.createElement("select");return n.className=t||"mxToolbarCombo",this.addOption(n,e,null),mxEvent.addListener(n,"change",function(e){var t=n.options[n.selectedIndex];n.selectedIndex=0,null!=t.funct&&t.funct(e)}),this.container.appendChild(n),n},mxToolbar.prototype.addOption=function(e,t,n){var a=document.createElement("option");return mxUtils.writeln(a,t),"function"==typeof n?a.funct=n:a.setAttribute("value",n),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,t,n,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",t),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)),n()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),n()),s},mxToolbar.prototype.addMode=function(e,t,n,a,i,s){s=null==s||s;var o=document.createElement(null!=t?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",t),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,n),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,n),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=n,this.selectMode(o,n))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,t){if(this.selectedMode!=e){if(null!=this.selectedMode){var n=this.selectedMode.altIcon;null!=n?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",n)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(n=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",n)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",t))}},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,t,n){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,t,n){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,t,n))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(n,a,t){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=t?t(e):this.stop(e)});mxUtils.get(n,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",n,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var t=e.getDocumentElement();null==t?i("Invalid response: "+e.getText()):this.receive(t)}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,t){for(var n="",a=t?-1:1,i=t?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);n=n+mxUtils.getXml(s,this.linefeed)}return n},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var t=e.getAttribute("namespace");for(null!=t&&(this.model.prefix=t+"-"),t=e.firstChild;null!=t;){var n=t.nodeName.toLowerCase();"state"==n?this.processState(t):"delta"==n&&this.processDelta(t),t=t.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 t=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",t,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",t))}},mxSession.prototype.createUndoableEdit=function(e){var t=new mxUndoableEdit(this.model,this.significantRemoteChanges);return t.changes=e,t.notify=function(){t.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",t,"changes",t.changes)),t.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",t,"changes",t.changes))},t},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var t=[];for(e=e.firstChild;null!=e;){var n=this.decodeChange(e);null!=n&&t.push(n),e=e.nextSibling}return t},mxSession.prototype.decodeChange=function(e){var t=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(t="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(t.model=this.model,t.execute(),"mxChildChange"==e.nodeName&&null==t.parent&&this.cellRemoved(t.child))),t},mxSession.prototype.cellRemoved=function(e,t){this.codec.putObject(e.getId(),e);for(var n=this.model.getChildCount(e),a=0;a<n;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 t=this.changes[e];null!=t.execute?t.execute():null!=t.undo&&t.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}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,t=0;t<e;t++){var n=this.changes[t];null!=n.execute?n.execute():null!=n.redo&&n.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}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 t=this.history[this.indexOfNextAdd++];if(t.redo(),t.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",t));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),t=0;t<e.length;t++)e[t].die()};var mxUrlConverter=function(e){var n=!0,a=null,i=null;return{isEnabled:function(){return n},setEnabled:function(e){n=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(n&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var t=(a=i+location.pathname).lastIndexOf("/");0<t&&(a=a.substring(0,t+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,t){},mouseMove:function(e,t){},mouseUp:mxUtils.bind(this,function(e,t){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),t=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,t),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,t,n,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!=n?n: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=t+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=t-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,t=s.panDy;0==e&&0==t||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+t/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,t){this.isEnabled()&&this.graphModelChanged(t.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,t,n,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=t?t:6,this.ease=null!=n?n: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,t){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=t&&t;var n=null;if(e.ownerDocument!=document)for(n=e;null!=n&&"svg"!=n.nodeName;)n=n.parentNode;null!=n&&(0<n.getElementsByTagName("defs").length&&(this.defs=n.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=n.firstChild?n.insertBefore(this.defs,n.firstChild):n.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,t,n,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!=t?((i=document.createElement("img")).src=t,r.appendChild(i)):null!=i&&((t=document.createElement("div")).className=i,r.appendChild(t)),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!=n&&n(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 t=document.createElement("img");t.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(t)},mxPopupMenu.prototype.showSubmenu=function(e,t){if(null!=t.div){t.div.style.left=e.div.offsetLeft+t.offsetLeft+t.offsetWidth-1+"px",t.div.style.top=e.div.offsetTop+t.offsetTop+"px",document.body.appendChild(t.div);var n=parseInt(t.div.offsetLeft),a=parseInt(t.div.offsetWidth),i=document.body,s=document.documentElement;n+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(t.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(t.div)}},mxPopupMenu.prototype.addSeparator=function(e,t){if(e=e||this,this.smartSeparators&&!t)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var n=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",n.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),n.appendChild(a),e.tbody.appendChild(n)}},mxPopupMenu.prototype.popup=function(e,t,n,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=t+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,n,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 t=0;t<this.cells.length;t++)this.animateCell(cells[t],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,t,n){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,t.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(n&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),t,n)},mxMorphing.prototype.stopRecursion=function(e,t){return null!=t&&(0!=t.x||0!=t.y)},mxMorphing.prototype.getDelta=function(e){var t=this.getOriginForCell(e.cell),n=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-n.x,e.y/a-n.y),new mxPoint((t.x-e.x)*a,(t.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var t=null;return null!=e&&(t=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(t.x+=e.x,t.y+=e.y)),null==t&&(t=new mxPoint(-(t=this.graph.view.getTranslate()).x,-t.y)),t},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,t,n){this.images[e]={value:t,fallback:n}},mxImageBundle.prototype.getImage=function(e){var t=null;return null!=e&&(null!=(e=this.images[e])&&(t=this.alt?e.fallback:e.value)),t},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,t){null!=e&&(this.visitStatesRecursive(e,t,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,t,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,t,n){if(null!=e){n(e,t);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,t,n)}}},mxImageExport.prototype.drawCellState=function(e,t){e.shape instanceof mxShape&&(t.save(),e.shape.paint(t),t.restore()),null!=e.text&&(t.save(),e.text.paint(t),t.restore())},mxImageExport.prototype.drawOverlays=function(e,n){null!=e.overlays&&e.overlays.visit(function(e,t){t instanceof mxShape&&t.paint(n)})},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,t=2;t<arguments.length;t+=2)this.lastX=arguments[t-1],this.lastY=arguments[t],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,t,n,a,i){return n*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,t),Math.cos(n),Math.sin(n),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,t){this.state.dx+=e,this.state.dy+=t},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,t,n,a,i,s,o,r,l){(n=this.state).fillColor=e,n.fillAlpha=null!=r?r:1,n.gradientColor=t,n.gradientAlpha=null!=l?l:1,n.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,t){this.state.shadowDx=e,this.state.shadowDy=t},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,t){this.addOp(this.moveOp,e,t)},mxAbstractCanvas2D.prototype.lineTo=function(e,t){this.addOp(this.lineOp,e,t)},mxAbstractCanvas2D.prototype.quadTo=function(e,t,n,a){this.addOp(this.quadOp,e,t,n,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,t,n,a,i,s){this.addOp(this.curveOp,e,t,n,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,t,n,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,t,n,a,i,s,o),t=0;t<e.length;t+=6)this.curveTo(e[t],e[t+1],e[t+2],e[t+3],e[t+4],e[t+5])},mxAbstractCanvas2D.prototype.close=function(e,t,n,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 t=this.createElement("scale");t.setAttribute("scale",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.translate=function(e,t){var n=this.createElement("translate");n.setAttribute("dx",this.format(e)),n.setAttribute("dy",this.format(t)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.rotate=function(e,t,n,a,i){var s=this.createElement("rotate");(0!=e||t||n)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",t?"1":"0"),s.setAttribute("flipV",n?"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 t=this.createElement("alpha");t.setAttribute("alpha",this.format(e)),this.root.appendChild(t)},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 t=this.createElement("fillcolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setGradient=function(e,t,n,a,i,s,o,r,l){if(null!=e&&null!=t){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",t),d.setAttribute("x",this.format(n)),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 t=this.createElement("strokecolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var t=this.createElement("strokewidth");t.setAttribute("width",this.format(e)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var t=this.createElement("dashed");t.setAttribute("dashed",e?"1":"0"),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var t=this.createElement("dashpattern");t.setAttribute("pattern",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var t=this.createElement("linecap");t.setAttribute("cap",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var t=this.createElement("linejoin");t.setAttribute("join",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var t=this.createElement("miterlimit");t.setAttribute("limit",e),this.root.appendChild(t)},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 t=this.createElement("fontcolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)}},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 t=this.createElement("fontbackgroundcolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)}},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 t=this.createElement("fontbordercolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var t=this.createElement("fontsize");t.setAttribute("size",e),this.root.appendChild(t)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var t=this.createElement("fontfamily");t.setAttribute("family",e),this.root.appendChild(t)}},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 t=this.createElement("fontstyle");t.setAttribute("style",e),this.root.appendChild(t)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var t=this.createElement("shadow");t.setAttribute("enabled",e?"1":"0"),this.root.appendChild(t)},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 t=this.createElement("shadowcolor");t.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var t=this.createElement("shadowalpha");t.setAttribute("alpha",e),this.root.appendChild(t)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,t){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==t)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var n=this.createElement("shadowoffset");n.setAttribute("dx",e),n.setAttribute("dy",t),this.root.appendChild(n)},mxXmlCanvas2D.prototype.rect=function(e,t,n,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(t)),i.setAttribute("w",this.format(n)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,t,n,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(t)),o.setAttribute("w",this.format(n)),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,t,n,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(t)),i.setAttribute("w",this.format(n)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,t,n,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(t)),l.setAttribute("w",this.format(n)),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,t){var n=this.createElement("move");n.setAttribute("x",this.format(e)),n.setAttribute("y",this.format(t)),this.root.appendChild(n),this.lastX=e,this.lastY=t},mxXmlCanvas2D.prototype.lineTo=function(e,t){var n=this.createElement("line");n.setAttribute("x",this.format(e)),n.setAttribute("y",this.format(t)),this.root.appendChild(n),this.lastX=e,this.lastY=t},mxXmlCanvas2D.prototype.quadTo=function(e,t,n,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(t)),i.setAttribute("x2",this.format(n)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=n,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,t,n,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(t)),o.setAttribute("x2",this.format(n)),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,t,n,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(t)),u.setAttribute("w",this.format(n)),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,t){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(t||mxConstants.NS_SVG,e);var n=this.root.ownerDocument.createElement(e);return null!=t&&n.setAttribute("xmlns",t),n},mxSvgCanvas2D.prototype.createGradientId=function(e,t,n,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==t.charAt(0)&&(t=t.substring(1)),e=e.toLowerCase()+"-"+n,t=t.toLowerCase()+"-"+a,(n=null)==i||i==mxConstants.DIRECTION_SOUTH?n="s":i==mxConstants.DIRECTION_EAST?n="e":(a=e,e=t,t=a,i==mxConstants.DIRECTION_NORTH?n="s":i==mxConstants.DIRECTION_WEST&&(n="e")),"mx-gradient-"+e+"-"+t+"-"+n},mxSvgCanvas2D.prototype.getSvgGradient=function(e,t,n,a,i){var s=this.createGradientId(e,t,n,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,t,n,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,t,n,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%"),n=n<1?";stop-opacity:"+n:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+n),s.appendChild(i),n=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+t+n),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,t){var n=this.node,a=this.state;if(null!=n){if("path"==n.nodeName){if(!(null!=this.path&&0<this.path.length))return;n.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=n.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?n.setAttribute("fill","none"):n.setAttribute("fill","transparent"),e=!1),t&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||n.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&n.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(n)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(n)),this.pointerEvents&&("path"!=n.nodeName||this.path[this.path.length-1]==this.closeOp)&&n.setAttribute("pointer-events","all"),this.root.appendChild(n)}},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 t=Math.max(1,this.format(e.strokeWidth*e.scale));1!=t&&this.node.setAttribute("stroke-width",t),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(t))},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 t=e.lineCap;"flat"==t&&(t="butt"),"butt"!=t&&this.node.setAttribute("stroke-linecap",t)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var t=this.state.dashPattern.split(" "),n=[];if(0<t.length)for(var a=0;a<t.length;a++)n[a]=Number(t[a])*e;return n.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var t=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",t),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var t=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",t.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",t.shadowColor),e.setAttribute("transform","translate("+this.format(t.shadowDx*t.scale)+","+this.format(t.shadowDy*t.scale)+")"+(t.transform||"")),e.setAttribute("opacity",t.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,t,n,a,i){if(0!=e||t||n){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",t&&n)e+=180;else if(t^n){var o=t?a:0,r=t?-1:1,l=n?i:0,d=n?-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)+")"}(t?!n:n)&&(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,t,n,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((t+i.dy)*i.scale)),s.setAttribute("width",this.format(n*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,t,n,a,i,s){this.rect(e,t,n,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,t,n,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+n/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((t+a/2+i.dy)*i.scale)),s.setAttribute("rx",n/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,t,n,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,t+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(t*l.scale)),d.setAttribute("width",this.format(n*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=-n-2*e),r&&(c=-1,u=-a-2*t),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(t*l.scale)),d.setAttribute("width",this.format(n*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,t,n,a,i){return n=this.state,a="display:inline-block;font-size:"+Math.round(n.fontSize)+"px;font-family:"+n.fontFamily+";color:"+n.fontColor+";line-height:"+Math.round(n.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),t==mxConstants.ALIGN_CENTER?a+="text-align:center;":t==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),t="",null!=n.fontBackgroundColor&&(t+="background-color:"+n.fontBackgroundColor+";"),null!=n.fontBorderColor&&(t+="border:1px solid "+n.fontBorderColor+";"),mxUtils.isNode(e)||((n=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=n.value,i?a+=t:0<t.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+t+'">'+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,t,n,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,t+=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<n&&(p+="width:"+Math.round(n)+"px;")):d&&(p+="width:"+Math.round(n)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<n&&(p+="width:"+Math.round(n)+"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);n=d?Math.max(n,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=n/2:s==mxConstants.ALIGN_RIGHT&&(i-=n),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),t+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+n/2+","+a/2+")",e=(t=this.rotatePoint((e+n/2)*u.scale,(t+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-n*u.scale/2,t=t.y-a*u.scale/2):(e*=u.scale,t*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(t)+")"+s),l.setAttribute("width",Math.round(Math.max(1,n))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,t,n,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,t,n,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(t=Math.round(t))+"-"+(n=Math.round(n))+"-"+(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",t),i.setAttribute("width",n),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,t,n,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(t*r.scale)+")"),d&&0<n&&0<a){var g=e;c=t,s==mxConstants.ALIGN_CENTER?g-=n/2:s==mxConstants.ALIGN_RIGHT&&(g-=n),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,n*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=t+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,t,n,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var t=this.state;e.setAttribute("fill",t.fontColor),(!this.styleEnabled||t.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",t.fontFamily),(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,t,n,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?n-=i/2:o==mxConstants.ALIGN_RIGHT&&(n-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((n+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),t=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(t?0:1),c.width,c.height+(t?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"),t=mxUtils.htmlEntities(t,!1),c.innerHTML=t.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?n-=i/2:o==mxConstants.ALIGN_RIGHT&&(n-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((n+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((t=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),t.setAttribute("stroke",d.fontBorderColor||"none"),t.setAttribute("x",Math.floor(c.x-1)),t.setAttribute("y",Math.floor(c.y-1)),t.setAttribute("width",Math.ceil(c.width+2)),t.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,t.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&t.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(t,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,t){this.graph=e,this.setStates(t)}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,t){var n=this.node,a=this.state;if(null!=n){if("shape"==n.nodeName){if(!(null!=this.path&&0<this.path.length))return;n.path=this.path.join(" ")+" e",n.style.width=this.root.style.width,n.style.height=this.root.style.height,n.coordsize=parseInt(n.style.width)+" "+parseInt(n.style.height)}n.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(n,e&&null!=a.fillColor,t&&null!=a.strokeColor)),t&&null!=a.strokeColor?(n.stroked="true",n.strokecolor=a.strokeColor):n.stroked="false",n.appendChild(this.createStroke()),e&&null!=a.fillColor?n.appendChild(this.createFill()):!this.pointerEvents||"shape"==n.nodeName&&this.path[this.path.length-1]!=this.closeOp?n.filled="false":n.appendChild(this.createTransparentFill()),this.root.appendChild(n)}},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,t=document.createElement(mxClient.VML_PREFIX+":fill");if(t.color=e.fillColor,null!=e.gradientColor){t.type="gradient",t.method="none",t.color2=e.gradientColor;var n=180-e.rotation;n=e.gradientDirection==mxConstants.DIRECTION_WEST?n-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?n+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?n-(180+("y"==this.root.style.flip?-180:0)):n+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(n*=-1),t.angle=mxUtils.mod(n,360),t.opacity=100*e.alpha*e.fillAlpha+"%",t.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(t.opacity=100*e.alpha+"%");return t},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,t=document.createElement(mxClient.VML_PREFIX+":stroke");return t.endcap=e.lineCap||"flat",t.joinstyle=e.lineJoin||"miter",t.miterlimit=e.miterLimit||"10",e.alpha<1&&(t.opacity=100*e.alpha+"%"),e.dashed&&(t.dashstyle=this.getVmlDashStyle()),t},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var t=this.state.dashPattern.split(" ");0<t.length&&1==t[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,t,n){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))),n?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",t?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,t,n,a,i){t&&n?e+=180:t?this.root.style.flip="x":n&&(this.root.style.flip="y"),(t?!n:n)&&(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,t,n,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*((t=(t+i.dy)*i.scale)-o);var r=(n=(n+i.dx)*i.scale)+2/3*(e-n);t=(a=(a+i.dy)*i.scale)+2/3*(t-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(t)+" "+this.format(n)+" "+this.format(a)),this.lastX=n/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,t,n,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((t+s.dx)*s.scale)+"px",e.style.top=this.format((n+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,t,n,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,t,n,a)},mxVmlCanvas2D.prototype.roundrect=function(e,t,n,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,t,n,a),this.node.setAttribute("arcsize",Math.max(100*i/n,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,t,n,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,t,n,a)},mxVmlCanvas2D.prototype.image=function(e,t,n,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,t,n,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,t,n,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,t,n,a){n=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)?n.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,n.appendChild(a)):(n.style.cssText=s,n.innerHTML=e),(e=n.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=t||"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"),n},mxVmlCanvas2D.prototype.text=function(e,t,n,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=(t=this.rotatePoint(e,t,u.rotation,u.rotationCx,u.rotationCy)).x,t=t.y),8==document.documentMode?(e+=u.dx,t+=u.dy):(e*=u.scale,t*=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(t)+"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<n&&(i.style.width=Math.round(n)+"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<n&&(i.style.width=Math.round(n)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=n+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){n=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(n)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-n)).toFixed(8)),(n%=2*Math.PI)<0&&(n+=2*Math.PI),(n%=Math.PI)>Math.PI/2&&(n=Math.PI-n),o=Math.cos(n);var h=Math.sin(n);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),n=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+n*-h)/2-m*n*(g+.5)+r*a*(v+.5),d=(n-n*o+a*-h)/2+r*n*(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-n/2)*u.scale)+"px",g.style.top=this.format(t+(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-n/2)*u)+"px",l.style.top=this.format(t+(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),n=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+n*g*this.state.scale)+"px",l.style.top=this.format(t+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,t,n,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,t,n,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,t=(t+a.dy)*a.scale,(n=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",n.style.height="1px",n.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",n.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),n.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=(n.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),n.appendChild(d),n.style.left=this.format(e-i)+"px",n.style.top=this.format(t+s)+"px",this.root.appendChild(n)},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,t){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var n=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 t=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),t=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),t=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),t=!0),t){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 n=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,n.scrollHeight-3-this.graph.panDy)]}r=r||t};for(var f=function(e){e+=this.graph.panDy;var t=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),t=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),t=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),t=!0),t){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 n=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(n.scrollWidth-3-this.graph.panDx,e)]}l=l||t},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",t&&(r||(t=a.x-(this.graph.snap(a.x/i-n.x)+n.x)*i,s=this.graph.snap(s/i)*i-t),l||(n=a.y-(this.graph.snap(a.y/i-n.y)+n.y)*i,o=this.graph.snap(o/i)*i-n)),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 t=0;t<e.length;t++)this.constraints.push(this.parseConstraint(e[t]))}},mxStencil.prototype.parseConstraint=function(e){var t=Number(e.getAttribute("x")),n=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(t,n),e)},mxStencil.prototype.evaluateTextAttribute=function(e,t,n){return t=this.evaluateAttribute(e,t,n),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(t=mxResources.get(t)),t},mxStencil.prototype.evaluateAttribute=function(e,t,n){return null==(t=e.getAttribute(t))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(t=e(n)))),t},mxStencil.prototype.drawShape=function(e,t,n,a,i,s){this.drawChildren(e,t,n,a,i,s,this.bgNode,!1),this.drawChildren(e,t,n,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,t,n,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(t.style,mxConstants.STYLE_DIRECTION,null);for(n=this.computeAspect(t.style,n,a,i,s,l),a=Math.min(n.width,n.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(t.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,t,o,n,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,t,n,a,i,s){e=t,t=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,t=i/this.w0;var r=(a-i)/2;e+=r,n-=r}return"fixed"==this.aspect&&(t=o=Math.min(t,o),s?(e+=(i-this.w0*t)/2,n+=(a-this.h0*o)/2):(e+=(a-this.w0*t)/2,n+=(i-this.h0*o)/2)),new mxRectangle(e,n,t,o)},mxStencil.prototype.drawNode=function(e,t,n,a,i){var s=n.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(),n=n.firstChild;null!=n;)n.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,t,n,a,i),n=n.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(n.getAttribute("x1"))*l,r+Number(n.getAttribute("y1"))*d,o+Number(n.getAttribute("x2"))*l,r+Number(n.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(n.getAttribute("x1"))*l,r+Number(n.getAttribute("y1"))*d,o+Number(n.getAttribute("x2"))*l,r+Number(n.getAttribute("y2"))*d,o+Number(n.getAttribute("x3"))*l,r+Number(n.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(n.getAttribute("rx"))*l,Number(n.getAttribute("ry"))*d,Number(n.getAttribute("x-axis-rotation")),Number(n.getAttribute("large-arc-flag")),Number(n.getAttribute("sweep-flag")),o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,Number(n.getAttribute("w"))*l,Number(n.getAttribute("h"))*d);else if("roundrect"==s)0==(t=n.getAttribute("arcsize"))&&(t=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(n.getAttribute("w"))*l,a=Number(n.getAttribute("h"))*d,t=Number(t)/100,t=Math.min(c*t,a*t),e.roundrect(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,c,a,t,t);else if("ellipse"==s)e.ellipse(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,Number(n.getAttribute("w"))*l,Number(n.getAttribute("h"))*d);else if("image"==s)t=this.evaluateAttribute(n,"src",t),e.image(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,Number(n.getAttribute("w"))*l,Number(n.getAttribute("h"))*d,t,!1,"1"==n.getAttribute("flipH"),"1"==n.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(n,"str",t),a="1"==n.getAttribute("vertical")?-90:0,"0"==n.getAttribute("align-shape")){var m=t.rotation,u=1==mxUtils.getValue(t.style,mxConstants.STYLE_FLIPH,0);t=1==mxUtils.getValue(t.style,mxConstants.STYLE_FLIPV,0),a=u&&t?a-m:u||t?a+m:a-m}a-=n.getAttribute("rotation"),e.text(o+Number(n.getAttribute("x"))*l,r+Number(n.getAttribute("y"))*d,0,0,c,n.getAttribute("align")||"left",n.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(n.getAttribute("name")))&&(o+=Number(n.getAttribute("x"))*l,r+=Number(n.getAttribute("y"))*d,c=Number(n.getAttribute("w"))*l,a=Number(n.getAttribute("h"))*d,m.drawShape(e,t,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(n.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==n.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(n=n.getAttribute("pattern"))){for(n=n.split(" "),l=[],d=0;d<n.length;d++)0<n[d].length&&l.push(Number(n[d])*c);n=l.join(" "),e.setDashPattern(n)}}else"strokecolor"==s?e.setStrokeColor(n.getAttribute("color")):"linecap"==s?e.setLineCap(n.getAttribute("cap")):"linejoin"==s?e.setLineJoin(n.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(n.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(n.getAttribute("color")):"alpha"==s?e.setAlpha(n.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(n.getAttribute("color")):"fontstyle"==s?e.setFontStyle(n.getAttribute("style")):"fontfamily"==s?e.setFontFamily(n.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(n.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 t=1;t<this.points.length;t++)null!=e[t]&&this.bounds.add(new mxRectangle(Number(e[t].x),Number(e[t].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,t=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!=(t=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+t+","+t+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var n=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));t=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(t,!1);""!=t.tagUrn&&(t.coordsize=n*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),t=this.scale,e.translate(-Math.round(this.bounds.x/t),-Math.round(this.bounds.y/t))}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)),t=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=t+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var t in e.gradients){var n=e.gradients[t];n.mxRefCount=(n.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var t=this.scale,n=this.bounds.x/t,a=this.bounds.y/t,i=this.bounds.width/t,s=this.bounds.height/t;if(this.isPaintBoundsInverted()){n=n+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,n,a,i,s),this.configureCanvas(e,n,a,i,s),null!=this.stencil)this.paintStencilShape(e,n,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(n=[],a=0;a<this.points.length;a++)n.push(new mxPoint(this.points[a].x/t,this.points[a].y/t));this.paintEdgeShape(e,n)}else this.paintVertexShape(e,n,a,i,s)},mxShape.prototype.configureCanvas=function(e,t,n,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?(t=this.getGradientBounds(e,t,n,a,i),e.setGradient(this.fill,this.gradient,t.x,t.y,t.width,t.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,t,n,a,i){return new mxRectangle(t,n,a,i)},mxShape.prototype.updateTransform=function(e,t,n,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,t+a/2,n+i/2)},mxShape.prototype.paintStencilShape=function(e,t,n,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,t,n,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,t,n,a,i)},mxShape.prototype.paintVertexShape=function(e,t,n,a,i){this.paintBackground(e,t,n,a,i),e.setShadow(!1),this.paintForeground(e,t,n,a,i)},mxShape.prototype.paintBackground=function(e,t,n,a,i){},mxShape.prototype.paintForeground=function(e,t,n,a,i){},mxShape.prototype.paintEdgeShape=function(e,t){},mxShape.prototype.getArcSize=function(e,t){var n=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*n,t*n)},mxShape.prototype.paintGlassEffect=function(e,t,n,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",t,n,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(t-o+s,n-o),e.quadTo(t-o,n-o,t-o,n-o+s),e.lineTo(t-o,n+.4*i),e.quadTo(t+.5*a,n+.7*i,t+a+o,n+.4*i),e.lineTo(t+a+o,n-o+s),e.quadTo(t+a+o,n-o,t+a+o-s,n-o)):(e.moveTo(t-o,n-o),e.lineTo(t-o,n+.4*i),e.quadTo(t+.5*a,n+.7*i,t+a+o,n+.4*i),e.lineTo(t+a+o,n-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 t=this.getShapeRotation();0!=t&&(e=mxUtils.getBoundingBox(e,t)),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 t=(e.width-e.height)/2;e.x+=t,e.y-=t,t=e.width,e.width=e.height,e.height=t}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 t=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(t/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,t,n,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",t),e.setAttribute("y",n),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 t in e){var n=e[t];n.mxRefCount=(n.mxRefCount||0)-1,0==n.mxRefCount&&null!=n.parentNode&&n.parentNode.removeChild(n)}},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,t){mxStencilRegistry.stencils[e]=t},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,t){mxMarker.markers[e]=t},createMarker:function(e,t,n,a,i,s,o,r,l,d){var c=mxMarker.markers[n];return null!=c?c(e,t,n,a,i,s,o,r,l,d):null}};function mxActor(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxCloud(e,t,n,a){mxActor.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxEllipse(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxRhombus(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxPolyline(e,t,n){mxShape.call(this),this.points=e,this.stroke=t,this.strokewidth=null!=n?n:1}function mxArrow(e,t,n,a,i,s,o){mxShape.call(this),this.points=e,this.fill=t,this.stroke=n,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,t,n,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=t,this.color=null!=i?i:"black",this.align=null!=n?n:"",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,t,n){mxShape.call(this),this.bounds=e,this.stroke=t,this.strokewidth=null!=n?n:1}function mxImageShape(e,t,n,a,i){mxShape.call(this),this.bounds=e,this.image=t,this.fill=n,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,t,n,a){mxRectangleShape.call(this,e,t,n,a)}function mxCylinder(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxConnector(e,t,n){mxPolyline.call(this,e,t,n)}function mxSwimlane(e,t,n,a){mxShape.call(this),this.bounds=e,this.fill=t,this.stroke=n,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,t,n,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==t||t,this.spacing=null!=n?n:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,t,n,a){mxGraphLayout.call(this,e),this.horizontal=null==t||t,this.spacing=n||0,this.border=a||0}function mxCompactTreeLayout(e,t,n){mxGraphLayout.call(this,e),this.horizontal=null==t||t,this.invert=null!=n&&n}function WeightedCellSorter(e,t){this.cell=e,this.weightedValue=t}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,t){mxGraphLayout.call(this,e),this.radius=null!=t?t:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,t,n){mxGraphLayout.call(this,e),this.layouts=t,this.master=n}function mxEdgeLabelLayout(e,t){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,t,n,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=n,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,n=[],null==t&&(t=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,t,n),a=0;a<t.length;a++){i=n[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];n[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&n[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}n[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,t,n,a,i,s){this.layout=e,this.intraCellSpacing=t,this.interRankCellSpacing=n,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,t,n,a,i,s,o,r,l,d){t=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=t,c.y-=r,o=n!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-t,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),n==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 t(e,t,n,a,i,s,o,r,l,d){r=n==mxConstants.ARROW_DIAMOND?.7071:.9862,t=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=t,c.y-=r,a.x+=-i-t,a.y+=-s-r;var m=n==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,t,n,a,i,s,o,r,l,d){t=1.118*i*l,n=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=t,c.y-=n,a.x+=2*-t,a.y+=2*-n,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,t,n,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",t),mxMarker.addMarker("diamondThin",t)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,t,n,a,i){e.translate(t,n),e.begin(),this.redrawPath(e,t,n,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,t,n,a,i){t=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-t,2*i/5,a/2-t,0,a/2,0),e.curveTo(a/2+t,0,a/2+t,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,t,n,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,t,n,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(t,n,a,i,s,s)}else e.rect(t,n,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,t,n,a,i){this.glass&&this.paintGlassEffect(e,t,n,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 t=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,t)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-t/2)+"px",e.style.top=Math.round(this.bounds.y-t/2)+"px","CSS1Compat"==document.compatMode&&(t=-t),e.style.width=Math.round(Math.max(0,this.bounds.width+t))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+t))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var t=this.stroke;null!=t&&t!=mxConstants.NONE?(e.style.borderColor=t,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!=(t=this.fill)&&t!=mxConstants.NONE?(e.style.backgroundColor=t,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 t="";if(this.opacity<100&&(t+="alpha(opacity="+this.opacity+")"),this.isShadow&&(t+="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 n=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=n,n=a,a=s):2==o?(s=n,n=a,a=s):3==o&&(i="1"),t+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+n+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=t},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,t,n,a,i){e.ellipse(t,n,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,t,n,a,i){e.ellipse(t,n,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,t,n,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(t+s,n+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,t,n,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(t+s,n),e.lineTo(t+a,n+o),e.lineTo(t+s,n+i),e.lineTo(t,n+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,t){this.paintLine(e,t,this.isRounded)},mxPolyline.prototype.paintLine=function(e,t,n){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=t[0],s=t[t.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<t.length-1;o++){var r=t[o],l=i.x-r.x;i=i.y-r.y;if(n&&o<t.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=t[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,t){var n=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=t[0],o=t[t.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*n-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+n*r)+c),u=(s=s.y-a/2+n*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-n*r,o.y-n*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 t=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 n=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,n=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(t=e.getBBox()).width&&0==t.height)return;this.boundingBox=new mxRectangle(t.x,t.y,t.width,t.height),t=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(n=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:(n=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=n),n=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(n=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=n&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*n,this.bounds.y+this.margin.y*a,n,a))}null!=this.boundingBox&&(0!=t&&(t=mxUtils.getBoundingBox(this.boundingBox,t),this.boundingBox.x=t.x,this.boundingBox.y=t.y,mxClient.IS_QUIRKS||(this.boundingBox.width=t.width,this.boundingBox.height=t.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,t,n,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 t=this.scale,n=this.bounds.x/t,a=this.bounds.y/t,i=this.bounds.width/t;t=this.bounds.height/t;this.updateTransform(e,n,a,i,t),this.configureCanvas(e,n,a,i,t);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(n,a,i,t,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(),t=this.node.style,n=this.margin.x,a=this.margin.y;0!=e?(t[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-n+"% "+100*-a+"%",t[mxClient.CSS_PREFIX+"Transform"]="translate("+100*n+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(t[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",t[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*n+"%,"+100*a+"%)"),t.left=Math.round(this.bounds.x)+"px",t.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,t=this.margin.x,n=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*(t=r*-(t+.5))-s*(n=o*-(n+.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*t-l*n)-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 t=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,n=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=t||null!=n)if("fill"==this.overflow)null!=t&&(this.node.style.backgroundColor=t),null!=n&&(this.node.style.border="1px solid "+n);else{var a="";null!=t&&(a+="background-color:"+t+";"),null!=n&&(a+="border:1px solid "+n+";"),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 t=Math.round(this.bounds.width/this.scale),n=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<n&&(e.maxHeight=n+"px"),0<t&&(e.width=t+"px")):"fill"==this.overflow&&(e.width=t+"px",0<n&&(e.maxHeight=n+"px")),this.wrap?(!this.clipped&&0<t&&(e.width=t+"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,t,n,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,t,n,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,t,n,a,i){n+=i/2,e.begin(),e.moveTo(t,n),e.lineTo(t+a,n),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,t,n,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(t,n,a,i),e.fillAndStroke()),e.image(t,n,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 t=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=t,this.flipH&&this.flipV?t+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?t+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(t+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=t&&(e.style.filter=t),"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,t,n,a,i){this.paintImage(e,t,n,a,i),this.paintIndicator(e,t,n,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,t,n,a,i){null!=this.image&&(t=this.getImageBounds(t,n,a,i),e.image(t.x,t.y,t.width,t.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,t,n,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+(n-o)/2:i==mxConstants.ALIGN_RIGHT?e+(n-o-l):e+l,t=s==mxConstants.ALIGN_TOP?t+l:s==mxConstants.ALIGN_BOTTOM?t+(a-r-l):t+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,t,n,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(t,n,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(t=this.getIndicatorBounds(t,n,a,i),e.image(t.x,t.y,t.width,t.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,t,n,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+(n-o-l):i==mxConstants.ALIGN_CENTER?e+(n-o)/2:e+l,t=s==mxConstants.ALIGN_BOTTOM?t+(a-r-l):s==mxConstants.ALIGN_TOP?t+l:t+(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 t=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);t.x-=this.bounds.x,t.y-=this.bounds.y,e.style.left=Math.round(t.x)+"px",e.style.top=Math.round(t.y)+"px",e.style.width=Math.round(t.width)+"px",e.style.height=Math.round(t.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,t,n,a,i){e.translate(t,n),e.begin(),this.redrawPath(e,t,n,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,t,n,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,t,n,a,i,s){t=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,t),e.curveTo(0,2*t,a,2*t,a,t),s||(e.stroke(),e.begin())),s||(e.moveTo(0,t),e.curveTo(0,-t/3,a,-t/3,a,t),e.lineTo(a,i-t),e.curveTo(a,i+t/3,0,i+t/3,0,i-t),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,t){var n=this.createMarker(e,t,!0),a=this.createMarker(e,t,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,t,this.isRounded):this.paintCurvedLine(e,t),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=n&&n(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,t){e.begin();var n=t[0],a=t.length;for(e.moveTo(n.x,n.y),n=1;n<a-2;n++){var i=t[n],s=t[n+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=t[a-2],s=t[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,t,n){var a=t.length,i=n?t[1]:t[a-2],s=(a=(t=n?t[0]:t[a-1]).x-i.x,t.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,n?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,n?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,t,i,a,s,n,this.strokewidth,0!=this.style[n?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var t=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(t=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(t=Math.max(t,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(t*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,t,n,a,i){return new mxRectangle(t,n,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,t,n){return 3*n*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,t,n,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(t,n),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,t,n,a,i,s,l,o,r)):this.paintSwimlane(e,t,n,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(t,s,a,i),e.image(i.x-t,i.y-n,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,t,n,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,t,n,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,t,n,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(t,n),e.lineTo(t,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,t,n,a){return new mxRectangle(e+n-this.imageSize,t,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,t,n){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,t,n,a){return null!=(t=null!=(n=this.graph.view.getState(t))?n.style:this.graph.getCellStyle(t))?t[e]:null},mxGraphLayout.traverse=function(e,t,n,a,i){if(null!=n&&null!=e){t=null==t||t,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=n(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;t&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,t,n,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 t=this.graph.getModel();return!t.isEdge(e)||!this.graph.isCellVisible(e)||null==t.getTerminal(e,!0)||null==t.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,t){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,t?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,t){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,t?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var t=new mxPoint;if(null!=e&&e!=this.parent){var n=this.graph.getModel();if(n.isAncestor(this.parent,e))for(var a=n.getGeometry(e);e!=this.parent;)t.x+=a.x,t.y+=a.y,e=n.getParent(e),a=n.getGeometry(e)}return t},mxGraphLayout.prototype.setEdgePoints=function(e,t){if(null!=e){var n=this.graph.model,a=n.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=t)for(var i=n.getParent(e),s=(i=this.getParentOffset(i),0);s<t.length;s++)t[s].x-=i.x,t[s].y-=i.y;a.points=t,n.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,t,n){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(t,n,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&&(t+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(n+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(t-=(o=this.getParentOffset(o)).x,n-=o.y)),i.x==t&&i.y==n||((i=i.clone()).x=t,i.y=n,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var t=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var n=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/n,s=Math.max(r.y-a.y,0)/n,o=Math.max(a.x+a.width-(r.x+r.width),0)/n,r=Math.max(a.y+a.height-(r.y+r.height),0)/n;t=new mxRectangle(t.x-i,t.y-s,t.width+i+o,t.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),t=t.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),t.x+=e.x,t.y+=e.y)),new mxRectangle(t.x,t.y,t.width,t.height)},mxGraphLayout.prototype.arrangeGroups=function(e,t){this.graph.getModel().beginUpdate();try{for(var n=e.length-1;0<=n;n--){var a=e[n],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-t-r,o.y=o.y+s.y-t-l,o.width=s.width+2*t+r,o.height=s.height+2*t+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,t+r-s.x,t+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,t,n){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(t=s?t:n,null!=(o=this.graph.getView().getState(i))&&(t-=s?o.x:o.y),o=0;o<l;o++)if((n=a.getChildAt(i,o))!=e&&null!=(n=a.getGeometry(n))){if(n=s?n.x+n.width/2:n.y+n.height/2,r<t&&t<n)break;r=n}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var t=this.graph.getModel(),n=t.getGeometry(e);return null!=this.graph.container&&(null==n&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(n=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),n},mxStackLayout.prototype.execute=function(e){if(null!=e){var t=this.isHorizontal(),n=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=t?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);t==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),t?o+=l:s+=l}n.beginUpdate();try{l=0,r=null;for(var d=n.getChildCount(e),c=0;c<d;c++){var m=n.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=n.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(t&&r.x+r.width+u.width+2*this.spacing>this.wrap||!t&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,t?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,t?u.height:u.width),null!=r?t?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(t?u.x=s:u.y=o),t?u.y=o:u.x=s,this.fill&&0<i&&(t?u.height=i:u.width=i),n.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),t?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,n.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(t?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{n.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,t,n){var a=(n=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=n.getChildCount(a);for(i=0;i<o;i++){var r=n.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<t&&t<r)break;s=r}}t=a.getIndex(e),t=Math.max(0,i-(t<i?1:0)),n.add(a,e,t)}},mxPartitionLayout.prototype.execute=function(e){var t=this.isHorizontal(),n=this.graph.getModel(),a=n.getGeometry(e);if(null!=this.graph.container&&(null==a&&n.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=n.getChildCount(e),o=0;o<s;o++){var r=n.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=t?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=t?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=t?(a.width-l-e)/s:(a.height-d-e)/s)){n.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=n.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,t?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),n.setGeometry(r,m))}}finally{n.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,t){this.parent=e;var n=this.graph.getModel();if(null==t)if(0<this.graph.getEdges(e,n.getParent(e),this.invert,!this.invert,!1).length)t=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){t=o[a];break}}if(null!=t){this.parentsChanged=this.resizeParent?{}:null,n.beginUpdate();try{var i=this.dfs(t,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(t);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{n.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,t,n){for(e.x+=t,e.y+=n,this.apply(e),e=e.child;null!=e;)this.moveNode(e,t,n),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,t,n){n=null!=n?n:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==n[a]&&!this.isVertexIgnored(e)){n[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,t,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,t,n))&&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 t=e.child;null!=t;)this.layout(t),t=t.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,t,n,a){if(e.x+=t+e.offsetX,e.y+=n+e.offsetY,a=this.apply(e,a),null!=(t=e.child)){a=this.horizontalLayout(t,e.x,e.y,a),n=e.y+t.offsetY;for(var i=t.next;null!=i;)a=this.horizontalLayout(i,e.x+t.offsetX,n,a),n+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,t,n,a,i){if(e.x+=n+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(t=e.child))for(i=this.verticalLayout(t,e,e.x,e.y,i),n=e.x+t.offsetY,a=t.next;null!=a;)i=this.verticalLayout(a,e,n,e.y+t.offsetX,i),n+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,t){var n=this.nodeDistance+this.levelDistance,a=(t-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-t;e.child.offsetX=n+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(n,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(n,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var t=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+t,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-t),e.contour.lowerHead=this.createLine(e.height+t,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var t=2*this.nodeDistance,n=e.child;e.contour=n.contour;var a=n.width+t,i=a;for(n=n.next;null!=n;){var s=this.merge(e.contour,n.contour);n.offsetY=s+a,n.offsetX=0,i+=s+(a=n.width+t),n=n.next}return i},mxCompactTreeLayout.prototype.merge=function(e,t){for(var n=0,a=0,i=0,s=e.lowerHead,o=t.upperHead;null!=o&&null!=s;){var r=this.offset(n,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;n+o.dx<=s.dx?(n+=o.dx,a+=o.dy,o=o.next):(n-=s.dx,a-=s.dy,s=s.next)}return null!=o?(n=this.bridge(e.upperTail,0,0,o,n,a),e.upperTail=null!=n.next?t.upperTail:n,e.lowerTail=t.lowerTail):null==(n=this.bridge(t.lowerTail,n,a,s,0,0)).next&&(e.lowerTail=n),e.lowerHead=t.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,t,n,a,i,s){var o;return i<=e||e+n<=0?0:0<(o=0<i*a-n*s?e<0?e*a/n-t:0<e?e*s/i-t:-t:i<e+n?s-(t+(i-e)*a/n):e+n<i?(n+e)*s/i-(t+a):s-(t+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,t,n,a,i,s){return t=i+a.dx-t,i=i=0,0==a.dx?i=a.dy:(i=t*a.dy,i/=a.dx),t=this.createLine(t,i,a.next),e.next=this.createLine(0,s+a.dy-i-n,t),t},mxCompactTreeLayout.prototype.createNode=function(e){var t={};return t.cell=e,t.x=0,t.y=0,t.width=0,t.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(t.width=e.height,t.height=e.width):(t.width=e.width,t.height=e.height)),t.offsetX=0,t.offsetY=0,t.contour={},t},mxCompactTreeLayout.prototype.apply=function(e,t){var n=this.graph.getModel(),a=e.cell,i=n.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(n=n.getParent(a),a=mxCellPath.create(n),null==this.parentsChanged[a]&&(this.parentsChanged[a]=n))),t=null==t?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(t.x,i.x),Math.min(t.y,i.y),Math.max(t.x+t.width,i.x+i.width),Math.max(t.y+t.height,i.y+i.height))),t},mxCompactTreeLayout.prototype.createLine=function(e,t,n){var a={};return a.dx=e,a.dy=t,a.next=n,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,t=[];for(e in this.parentsChanged)t.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(t,!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 t=e.child,n=e.cell,a=0,i=[];null!=t;){a++;var s=t.x;this.horizontal&&(s=t.y),i.push(new WeightedCellSorter(t,s)),t=t.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),t=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(t+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(n),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(n,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+t,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+t,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),t+=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,t){return null!=e&&null!=t?t.weightedValue>e.weightedValue?1:t.weightedValue<e.weightedValue?-1:t.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 t=this.graph.getModel();this.vertexArray=[];for(var n=this.graph.getChildVertices(e),a=0;a<n.length;a++)this.isVertexIgnored(n[a])||this.vertexArray.push(n[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]}t.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);n=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<n.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(n[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=n=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),n=null==n?m:Math.min(n,m),e=null==e?u:Math.min(e,u)));a=1-(n||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{t.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(n=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(n=.001);var t=this.dispX[e]/n*Math.min(n,this.temperature),n=this.dispY[e]/n*Math.min(n,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=t,this.cellLocation[e][1]+=n}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var t=0;t<this.neighbours[e].length;t++){var n=this.neighbours[e][t];if(e!=n&&this.isMoveable[e]&&this.isMoveable[n]){(a=(s=this.cellLocation[e][0]-this.cellLocation[n][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[n][1])*o-this.radiusSquared[e]-this.radiusSquared[n])<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[n]+=s,this.dispY[n]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,t=0;t<e;t++)for(var n=t;n<e;n++){if(!this.allowedToRun)return;if(n!=t&&this.isMoveable[t]&&this.isMoveable[n]){var a=this.cellLocation[t][0]-this.cellLocation[n][0],i=this.cellLocation[t][1]-this.cellLocation[n][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[t]-this.radius[n];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[t]+=a,this.dispY[t]+=i,this.dispX[n]-=a,this.dispY[n]-=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 t=this.graph.getModel();t.beginUpdate();try{for(var n=0,a=null,i=null,s=[],o=t.getChildCount(e),r=0;r<o;r++){var l=t.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),n=Math.max(n,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,n);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{t.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,t){return Math.max(e*t/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,t,n,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],n+t+t*Math.sin(o*s),a+t+t*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 t in e){var n=e[t];1<n.length&&this.layout(n)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var t=this.graph.getModel(),n=[],a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==n[o]&&(n[o]=[]),n[o].push(s))}}return n},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var t=this.graph.getView(),n=t.getState(e),a=null!=n?n.getVisibleTerminal(!0):t.getVisibleTerminal(e,!0);return e=null!=n?n.getVisibleTerminal(!1):t.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 t=e[0];if((o=(n=this.graph.getModel()).getGeometry(n.getTerminal(t,!0)))==(s=n.getGeometry(n.getTerminal(t,!1)))){t=o.x+o.width+this.spacing;for(var n=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],t,n),t+=this.spacing}else if(null!=o&&null!=s){t=o.x+o.width/2,n=o.y+o.height/2,a=s.x+s.width/2-t;var i=s.y+s.height/2-n,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,t=t+a/2+o*(e.length-1)/2,n=n+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],t,n),t-=o,n+=s}},mxParallelEdgeLayout.prototype.route=function(e,t,n){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(t,n)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,t,n){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 t=this.graph.getModel();t.beginUpdate();try{for(var n=0;n<this.layouts.length;n++)this.layouts[n].execute.apply(this.layouts[n],arguments)}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var t=this.graph.view,n=this.graph.getModel(),a=[],i=[],s=n.getChildCount(e),o=0;o<s;o++){var r=n.getChildAt(e,o),l=t.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,t){var n=this.graph.getModel();n.beginUpdate();try{for(var a=0;a<t.length;a++){var i=t[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{n.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,t){var n=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,t)){var i=-a.y-a.height+t.y,s=-a.y+t.y+t.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+t.x,a=-a.x+t.x+t.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=n.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),n.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,t){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,t){this.isVertex()?this.x[0]=t:this.isEdge()&&(this.x[e-this.minRank-1]=t)},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,t){this.isVertex()?this.y[0]=t:this.isEdge()&&(this.y[e-this.minRank-1]=t)},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 t=0;t<this.connectsAsTarget.length;t++){var n=this.connectsAsTarget[t];-1==n.maxRank||n.maxRank==e+1?this.nextLayerConnectedCells[0].push(n.source):this.nextLayerConnectedCells[0].push(n)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var t=0;t<this.connectsAsSource.length;t++){var n=this.connectsAsSource[t];-1==n.minRank||n.minRank==e-1?this.previousLayerConnectedCells[0].push(n.target):this.previousLayerConnectedCells[0].push(n)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,t){this.temp[0]=t},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 t=0;t<this.hashCode.length;t++)if(this.hashCode[t]!=e.hashCode[t])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 t=0;t<this.temp.length;t++)this.nextLayerConnectedCells[t]=[],t==this.temp.length-1?this.nextLayerConnectedCells[t].push(this.source):this.nextLayerConnectedCells[t].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var t=0;t<this.temp.length;t++)this.previousLayerConnectedCells[t]=[],0==t?this.previousLayerConnectedCells[t].push(this.target):this.previousLayerConnectedCells[t].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,t){this.temp[e-this.minRank-1]=t},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,t,n){for(var a=e.getGraph(),i=0;i<t.length;i++){n[i]=new mxGraphHierarchyNode(t[i]);var s=mxCellPath.create(t[i]);this.vertexMapper[s]=n[i],s=e.getEdges(t[i]),n[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=t[i]&&d!=t[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(t[i],d,!1),l=e.getEdgesBetween(t[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=n[i],mxUtils.indexOf(n[i].connectsAsSource,l)<0&&n[i].connectsAsSource.push(l)}}}n[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var t=0;t<this.roots.length;t++){var n=mxCellPath.create(this.roots[t]);null!=(n=this.vertexMapper[n])&&e.push(n)}for(var a in this.vertexMapper)(n=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(n=e[0]).connectsAsTarget,o=n.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(t=0;t<s.length;t++){var d=s[t];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(n.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(t=0;t<o.length;t++)(d=o[t]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(t=e.shift(),e.push(n),t==n&&1==e.length)break}for(a in this.vertexMapper)(n=this.vertexMapper[a]).temp[0]-=this.maxRank;for(t=0;t<i.length;t++)for(e=0,s=(n=i[t]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,n.temp[0]=Math.max(e,d.temp[0]+1),e=n.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 t=null;if(null!=this.roots){var n=this.roots;for(t=[],e=0;e<n.length;e++){var a=mxCellPath.create(n[e]);t[e]=this.vertexMapper[a]}}this.visit(function(e,t,n,a,i){if(0==i&&t.maxRank<0&&t.minRank<0&&(s[t.temp[0]].push(t),t.maxRank=t.temp[0],t.minRank=t.temp[0],t.temp[0]=s[t.maxRank].length-1),null!=e&&null!=n&&1<e.maxRank-t.maxRank)for(n.maxRank=e.maxRank,n.minRank=t.maxRank,n.temp=[],n.x=[],n.y=[],e=n.minRank+1;e<n.maxRank;e++)s[e].push(n),n.setGeneralPurposeVariable(e,s[e].length-1)},t,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,t,n,a){if(null!=t){for(var i=0;i<t.length;i++){var s=t[i];null!=s&&(null==a&&(a={}),n?(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,t,n,a,i,s){if(null!=t){var o=mxCellPath.create(t.cell);if(null==i[o])for(a(e,i[o]=t,n,s,0),e=t.connectsAsSource.slice(),n=0;n<e.length;n++)o=e[n],this.dfs(t,o.target,o,a,i,s+1);else a(e,t,n,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,t,n,a,i,s,o,r){if(null!=t)if(null==e||null!=t.hashCode&&t.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,t.hashCode=e.hashCode.slice(),t.hashCode[s-1]=o),null==i[o=mxCellPath.create(t.cell)])for(a(e,i[o]=t,n,r,0),e=t.connectsAsSource.slice(),n=0;n<e.length;n++)o=e[n],this.extendedDfs(t,o.target,o,a,i,t.hashCode,n,r+1);else a(e,t,n,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 t=0;t<e.ranks.length;t++)this.nestedBestRanks[t]=e.ranks[t].slice();var n=0,a=this.calculateCrossings(e);for(t=0;t<this.maxIterations&&n<this.maxNoImprovementIterations;t++){this.weightedMedian(t,e),this.transpose(t,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=n=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(n++,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(n=[],a=[],t=0;t<e.maxRank+1;t++)a[t]=[],n[t]=a[t];for(t=0;t<this.nestedBestRanks.length;t++)for(i=0;i<this.nestedBestRanks[t].length;i++)a[t].push(this.nestedBestRanks[t][i]);e.ranks=n},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var t=e.ranks.length,n=0,a=1;a<t;a++)n+=this.calculateRankCrossing(a,e);return n},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,t){for(var n=0,a=t.ranks[e],i=a.length,s=t.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]&&n++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&n++}return n/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,t){for(var n=!0,a=0;n&&a++<10;)for(var i=1==e%2&&1==a%2,s=(n=!1,0);s<t.ranks.length;s++){for(var o=t.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||(n=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,t){var n=0==e%2;if(n)for(var a=t.maxRank-1;0<=a;a--)this.medianRank(a,n);else for(a=1;a<t.maxRank;a++)this.medianRank(a,n)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,t){for(var n=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<n;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=t?e+1:e-1,null!=(o=t?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<n;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,t){for(var n=[],a=0,i=0;i<e.length;i++){var s=e[i];n[a++]=s.getGeneralPurposeVariable(t)}return n.sort(function(e,t){return e-t}),1==a%2?n[Math.floor(a/2)]:2==a?(n[0]+n[1])/2:(s=n[(i=a/2)-1]-n[0],a=n[a-1]-n[i],(n[i-1]*a+n[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,t){return null!=e&&null!=t?t.medianValue>e.medianValue?-1:t.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var t=this.layout.getModel(),s={},o=mxUtils.clone(t.vertexMapper,null,!0),n=null;if(null!=t.roots){var a=t.roots;n=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);n[e]=t.vertexMapper[i]}}if(t.visit(function(e,t,n,a,i){t.isAncestor(e)&&(n.invert(),mxUtils.remove(n,e.connectsAsSource),e.connectsAsTarget.push(n),mxUtils.remove(n,t.connectsAsTarget),t.connectsAsSource.push(n)),e=mxCellPath.create(t.cell),s[e]=t,delete o[e]},n,!0,null),n=null,0<o.lenth&&(n=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),t.visit(function(e,t,n,a,i){t.isAncestor(e)&&(n.invert(),mxUtils.remove(n,e.connectsAsSource),t.connectsAsSource.push(n),e.connectsAsTarget.push(n),mxUtils.remove(n,t.connectsAsTarget)),e=mxCellPath.create(t.cell),s[e]=t,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=n&&0<n.length)for(t=t.roots,e=0;e<n.length;e++)i=n[e].cell,0==a.getIncomingEdges(i).length&&t.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,t){this.cell=e,this.weightedValue=t}function mxHierarchicalLayout(e,t,n){mxGraphLayout.call(this,e),this.orientation=null!=t?t:mxConstants.DIRECTION_NORTH,this.deterministic=null==n||n}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,t){this.model=e,this.previous=this.root=t}function mxChildChange(e,t,n,a){this.model=e,this.previous=this.parent=t,this.child=n,this.previousIndex=this.index=a}function mxTerminalChange(e,t,n,a){this.model=e,this.cell=t,this.previous=this.terminal=n,this.source=a}function mxValueChange(e,t,n){this.model=e,this.cell=t,this.previous=this.value=n}function mxStyleChange(e,t,n){this.model=e,this.cell=t,this.previous=this.style=n}function mxGeometryChange(e,t,n){this.model=e,this.cell=t,this.previous=this.geometry=n}function mxCollapseChange(e,t,n){this.model=e,this.cell=t,this.previous=this.collapsed=n}function mxVisibleChange(e,t,n){this.model=e,this.cell=t,this.previous=this.visible=n}function mxCellAttributeChange(e,t,n){this.cell=e,this.attribute=t,this.previous=this.value=n}function mxCell(e,t,n){this.value=e,this.setGeometry(t),this.setStyle(n),null!=this.onInit&&this.onInit()}function mxGeometry(e,t,n,a){mxRectangle.call(this,e,t,n,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 t=0;t<e.ranks.length;t++){mxLog.write("Rank ",t," : ");for(var n=e.ranks[t],a=0;a<n.length;a++)mxLog.write(n[a].getGeneralPurposeVariable(t),"  ");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 t=1e8;if(this.fineTuning)for(var n=0;n<this.maxIterations;n++){if(0!=n&&(this.medianPos(n,e),this.minNode(e)),this.currentXDelta<t){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))}t=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 t=[],n=[],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,t.push(r),n[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*t.length,s=0;0<t.length&&s<=e;){i=(r=t.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=n[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,t.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=n[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,t.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,t){if(0==e%2)for(var n=t.maxRank;0<n;n--)this.rankMedianPosition(n-1,t,n);else for(n=0;n<t.maxRank-1;n++)this.rankMedianPosition(n+1,t,n)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,t,n){t=t.ranks[e];for(var a=[],i=[],s=0;s<t.length;s++){var o=t[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=n<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=n<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,n):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(t[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(t[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,t){for(var n=0,a=0;a<t.length;a++){var i=t[a];e.isVertex()&&i.isVertex()?n++:n=e.isEdge()&&i.isEdge()?n+8:n+2}return n},mxCoordinateAssignment.prototype.medianXValue=function(e,t){if(0==e.length)return 0;for(var n=[],a=0;a<e.length;a++)n[a]=e[a].getGeneralPurposeVariable(t);return n.sort(function(e,t){return e-t}),1==e.length%2?n[Math.floor(e.length/2)]:(n[(a=e.length/2)-1]+n[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,t){this.calculateWidestRank(e,t);for(var n=this.widestRank;0<=n;n--)n<t.maxRank&&this.rankCoordinates(n,e,t);for(n=this.widestRank+1;n<=t.maxRank;n++)0<n&&this.rankCoordinates(n,e,t)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,t,n){t=n.ranks[e],n=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<t.length;s++){var o=t[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,n=Math.max(n,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,t){var n=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=t.maxRank;0<=i;i--){for(var s=0,o=t.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]=n,r=s/2+a/2+this.interRankCellSpacing,a=s,n=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?n+r:n-r,d=0;d<o.length;d++)o[d].setY(i,n)}},mxCoordinateAssignment.prototype.minPath=function(e,t){var n,a=t.edgeMapper;for(n in a){var i=a[n];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(t,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(t,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,t,n,a){e=e.ranks[n];for(var i=-1,s=0;s<e.length;s++)if(t==e[s]){i=s;break}if(i<0)return!1;if(a<(s=t.getGeneralPurposeVariable(n))){if(0==i)return!0;if(!((n=(n=(e=e[i-1]).getGeneralPurposeVariable(n))+e.width/2+this.intraCellSpacing+t.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(n=(n=(e=e[i+1]).getGeneralPurposeVariable(n))-e.width/2-this.intraCellSpacing-t.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,t){this.rankTopY=[],this.rankBottomY=[];for(var n=0;n<t.ranks.length;n++)this.rankTopY[n]=Number.MAX_VALUE,this.rankBottomY[n]=0;n=null,this.layout.resizeParent&&(n={});var a,i=t.edgeMapper,s=t.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==n[r]&&(n[r]=o)}}for(a in this.layout.resizeParent&&null!=n&&this.adjustParents(n),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(t),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var t,n=[];for(t in e)n.push(e[t]);this.layout.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var t=0;t<e.ranks.length;t++)for(var n=e.ranks[t],a=0;a<n.length;a++){var i=n[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(t),o=t-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(t),o=t+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var t=0;if(101207!=e.temp[0]){var n=e.maxRank,a=e.minRank;n==a&&(n=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[n],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]+t;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[n]: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),t=0==t?this.parallelEdgeSpacing:0<t?-t:-t+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var t=e.cell,n=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(t,n,a):this.layout.setVertexLocation(t,a,n),this.limitX=Math.max(this.limitX,n+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,t){},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,t){return null!=e&&null!=t?t.weightedValue>e.weightedValue?-1:t.weightedValue<e.weightedValue?1:t.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,t){this.parent=e;var n=this.graph.model;if(this.edgesCache={},null!=t||null!=e){if(null!=t&&null!=e){for(var a=[],i=0;i<t.length;i++)n.isAncestor(e,t[i])&&a.push(t[i]);this.roots=a}else this.roots=t;n.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{n.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,t){var n=[];if(null!=e&&null!=t){var a,i=this.graph.model,s=null,o=-1e5;for(a in t){var r=t[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&&n.push(r),o<(l=d-c)&&(o=l,s=r)}}0==n.length&&null!=s&&n.push(s)}return n},mxHierarchicalLayout.prototype.getEdges=function(e){var t=mxCellPath.create(e);if(null!=this.edgesCache[t])return this.edgesCache[t];for(var n=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=n.getChildCount(e),o=0;o<s;o++){var r=n.getChildAt(e,o);this.isPort(r)?a=a.concat(n.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(n.getEdges(r,!0,!0)))}for(a=a.concat(n.getEdges(e,!0,!0)),n=[],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))))&&n.push(a[o]);return this.edgesCache[t]=n},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,t){var n=null!=(n=this.graph.view.getState(e))?n.getVisibleTerminal(t):this.graph.view.getVisibleTerminal(e,t);return this.isPort(n)&&(n=this.graph.model.getParent(n)),n},mxHierarchicalLayout.prototype.run=function(e){var t=[],n=[];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=[];t.push(r),this.traverse(o[s],!0,null,n,r,t,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=[],t.push(r),traverse(roots.get(s),!0,null,n,r,t,null);for(s=n=0;s<t.length;s++){for(i in a=[],r=t[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),n=this.placementStage(n,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,t){var n=this.graph.model;if(n.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(t[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,t)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,t,n){n=null!=n&&n;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==t||!n&&o==t&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,t,n,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(n=0;n<s.length;n++)if(null!=(e=s[n])[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(n=0;n<l.length;n++)r=this.getVisibleTerminal(l[n],!0)==e,(!t||r)&&(r=this.getVisibleTerminal(l[n],!r),i=this.traverse(r,t,l[n],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,t){var n=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return n.fineTuning=this.fineTuning,n.execute(t),n.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,t){var n=null;if(null!=e){n=[];for(var a=0;a<e.length;a++)t(e[a])&&n.push(e[a])}return n},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,t){var n=[];t=t||this.getRoot(),(null==e||e(t))&&n.push(t);for(var a=this.getChildCount(t),i=0;i<a;i++){var s=this.getChildAt(t,i);n=n.concat(this.filterDescendants(e,s))}return n},mxGraphModel.prototype.getRoot=function(e){var t=e||this.root;if(null!=e)for(;null!=e;)t=e,e=this.getParent(e);return t},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var t=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),t},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,t){for(;null!=t&&t!=e;)t=this.getParent(t);return t==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,t,n){if(t!=e&&null!=e&&null!=t){null==n&&(n=this.getChildCount(e));var a=e!=this.getParent(t);this.execute(new mxChildChange(this,e,t,n)),this.maintainEdgeParent&&a&&this.updateEdgeParents(t)}return t},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((t=this.getCell(e.getId()))!=e){for(;null!=t;)e.setId(this.createId(e)),t=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 t=this.getChildCount(e),n=0;n<t;n++)this.cellAdded(this.getChildAt(e,n))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,t){t=t||this.getRoot(e);for(var n=this.getChildCount(e),a=0;a<n;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,t)}for(i=this.getEdgeCount(e),n=[],a=0;a<i;a++)n.push(this.getEdgeAt(e,a));for(a=0;a<n.length;a++)i=n[a],this.isAncestor(t,i)&&this.updateEdgeParent(i,t)},mxGraphModel.prototype.updateEdgeParent=function(e,t){for(var n=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=n&&!this.isEdge(n)&&null!=n.geometry&&n.geometry.relative;)n=this.getParent(n);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(t,n)&&this.isAncestor(t,a)&&(null!=(i=n==a?this.getParent(n):this.getNearestCommonAncestor(n,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(n=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(n=n.clone()).translate(-a,-s),this.setGeometry(e,n)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var t=null;return null!=e?(t=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(t.x+=e.x,t.y+=e.y)):t=new mxPoint,t},mxGraphModel.prototype.getNearestCommonAncestor=function(e,t){if(null!=e&&null!=t&&(null!=(s=mxCellPath.create(t))&&0<s.length)){var n=e,a=mxCellPath.create(n);if(s.length<a.length){n=t;var i=a,s=(a=s,i)}for(;null!=n;){if(i=this.getParent(n),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return n;a=mxCellPath.getParentPath(a),n=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 t=this.getChildCount(e)-1;0<=t;t--)this.cellRemoved(this.getChildAt(e,t));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,t,n){var a=this.getParent(e);return null!=t?(t!=a||a.getIndex(e)!=n)&&t.insert(e,n):null!=a&&(n=a.getIndex(e),a.remove(n)),this.contains(a)||null==t?null==t&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,t){return null!=e?e.getChildAt(t):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,t,n){t=null!=t&&t,n=null!=n&&n;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!n&&!t||n&&this.isEdge(o)||t&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,t){return null!=e?e.getTerminal(t):null},mxGraphModel.prototype.setTerminal=function(e,t,n){var a=t!=this.getTerminal(e,n);return this.execute(new mxTerminalChange(this,e,t,n)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),t},mxGraphModel.prototype.setTerminals=function(e,t,n){this.beginUpdate();try{this.setTerminal(e,t,!0),this.setTerminal(e,n,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,t,n){var a=this.getTerminal(e,n);return null!=t?t.insertEdge(e,n):null!=a&&a.removeEdge(e,n),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,t){return null!=e?e.getEdgeAt(t):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,t,n){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=n&&this.getTerminal(o,t)==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,t,n,a){t=null==t||t,n=null==n||n,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&&(t&&d==e||n&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,t,n){n=null!=n&&n;var a=this.getEdgeCount(e),i=this.getEdgeCount(t),s=e,o=a;for(i<a&&(o=i,s=t),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==t||!n&&(d==e&&l==t))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,t,n,a){n=null==n||n,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==t&&null!=r&&r!=t&&a?i.push(r):r==t&&null!=o&&o!=t&&n&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var t=[],n=0;n<e.length;n++){for(var a=e[n],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&t.push(a)}return t},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,t){return this.execute(new mxValueChange(this,e,t)),t},mxGraphModel.prototype.valueForCellChanged=function(e,t){return e.valueChanged(t)},mxGraphModel.prototype.getGeometry=function(e,t){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,t){return t!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,t)),t},mxGraphModel.prototype.geometryForCellChanged=function(e,t){var n=this.getGeometry(e);return e.setGeometry(t),n},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,t){return t!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,t)),t},mxGraphModel.prototype.styleForCellChanged=function(e,t){var n=this.getStyle(e);return e.setStyle(t),n},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,t){return t!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,t)),t},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,t){var n=this.isCollapsed(e);return e.setCollapsed(t),n},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,t){return t!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,t)),t},mxGraphModel.prototype.visibleStateForCellChanged=function(e,t){var n=this.isVisible(e);return e.setVisible(t),n},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,t,n){n=null==n||n,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,t,n,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,t,n,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)&&n?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=t.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,n,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var t=[];if(null!=e)for(var n={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==n[s]&&(n[s]=i,t.push(i))}}return t},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,t){for(var n={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],n,t)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],n);return a},mxGraphModel.prototype.cloneCellImpl=function(e,t,n){var a=this.cellCloned(e);if(t[mxObjectIdentity.get(e)]=a,n){n=this.getChildCount(e);for(var i=0;i<n;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),t,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,t,n){null!=(a=this.getTerminal(t,!0))&&(null!=(a=n[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(t,!1))&&(null!=(a=n[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(t,i),n)},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),t=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=t},mxChildChange.prototype.connect=function(e,t){t=null==t||t;var n=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=n&&(t?this.model.terminalForCellChanged(e,n,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(t?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(n,!0),e.setTerminal(a,!1),n=this.model.getChildCount(e),a=0;a<n;a++)this.connect(this.model.getChildAt(e,a),t)},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 t=this.getValue();return this.setValue(e),t},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,t){return t?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,t){return null!=e&&(null==t&&(t=this.getChildCount(),e.getParent()==this&&t--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(t,0,e)),e},mxCell.prototype.remove=function(e){var t=null;return null!=this.children&&0<=e&&(null!=(t=this.getChildAt(e))&&(this.children.splice(e,1),t.setParent(null))),t},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,t){return null!=e&&(e.removeFromTerminal(t),e.setTerminal(this,t),null==this.edges||e.getTerminal(!t)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,t){if(null!=e){if(e.getTerminal(!t)!=this&&null!=this.edges){var n=this.getEdgeIndex(e);0<=n&&this.edges.splice(n,1)}e.setTerminal(null,t)}return e},mxCell.prototype.removeFromTerminal=function(e){var t=this.getTerminal(e);null!=t&&t.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,t){var n=this.getValue();return(null!=n&&n.nodeType==mxConstants.NODETYPE_ELEMENT?n.getAttribute(e):null)||t},mxCell.prototype.setAttribute=function(e,t){var n=this.getValue();null!=n&&n.nodeType==mxConstants.NODETYPE_ELEMENT&&n.setAttribute(e,t)},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,t){return t?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,t){if(this.clone(),this.relative||(this.x+=e,this.y+=t),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=t),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=t),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var n=this.points.length,a=0;a<n;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=t)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var t="";if(null!=e)for(var n=e.getParent();null!=n;)t=n.getIndex(e)+mxCellPath.PATH_SEPARATOR+t,n=(e=n).getParent();return 1<(e=t.length)&&(t=t.substring(0,e-1)),t},getParentPath:function(e){if(null!=e){var t=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=t)return e.substring(0,t);if(0<e.length)return""}return null},resolve:function(e,t){var n=e;if(null!=t)for(var a=t.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)n=n.getChildAt(parseInt(a[i]));return n},compare:function(e,t){for(var n=Math.min(e.length,t.length),a=0,i=0;i<n;i++)if(e[i]!=t[i]){a=0==e[i].length||0==t[i].length?e[i]==t[i]?0:e[i]>t[i]?1:-1:(n=parseInt(e[i]))==(i=parseInt(t[i]))?0:i<n?1:-1;break}return 0==a&&((n=e.length)!=(i=t.length)&&(a=i<n?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,t,n,a){t=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(n.y-i,n.x-t),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=t-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=t+e.height*Math.tan(l)/2),a&&(n.x>=e.x&&n.x<=e.x+e.width?o.x=n.x:n.y>=e.y&&n.y<=e.y+e.height&&(o.y=n.y),n.x<e.x?o.x=e.x:n.x>e.x+e.width&&(o.x=e.x+e.width),n.y<e.y?o.y=e.y:n.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,t,n,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;t=n.x,n=n.y;var c=parseInt(t-l),m=parseInt(n-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(t,n);if(a){if(s<=n&&n<=s+e.height)return e=n-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,t<=i&&(e=-e),new mxPoint(l+e,n);if(i<=t&&t<=i+e.width)return e=t-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,n<=s&&(e=-e),new mxPoint(t,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-t,2)+Math.pow(l-n,2)),t=Math.sqrt(Math.pow(r-t,2)+Math.pow(d-n,2)),s=n=0,s=i<t?(n=o,l):(n=r,d),new mxPoint(n,s)},RhombusPerimeter:function(e,t,n,a){t=e.x;var i=e.y,s=e.width,o=t+s/2,r=i+(e=e.height)/2,l=n.x;if(n=n.y,o==l)return new mxPoint(o,n<r?i:i+e);if(r==n)return new mxPoint(l<o?t:t+s,r);var d=o,c=r;return a&&(t<=l&&l<=t+s?d=l:i<=n&&n<=i+e&&(c=n)),l<o?n<r?mxUtils.intersection(l,n,d,c,o,i,t,r):mxUtils.intersection(l,n,d,c,o,i+e,t,r):n<r?mxUtils.intersection(l,n,d,c,o,i,t+s,r):mxUtils.intersection(l,n,d,c,o,i+e,t+s,r)},TrianglePerimeter:function(e,t,n,a){var i=(t=null!=t?t.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||t==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);t==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):t==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):t==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=n.x-l,g=n.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=t==mxConstants.DIRECTION_NORTH||t==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&n.x>=c.x&&n.x<=u.x||!i&&n.y>=c.y&&n.y<=u.y)?i?new mxPoint(n.x,c.y):new mxPoint(c.x,n.y):t==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):t==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):t==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),n.y>=o&&n.y<=o+e?(a.x=i?l:t==mxConstants.DIRECTION_WEST?s+r:s,a.y=n.y):n.x>=s&&n.x<=s+r&&(a.x=n.x,a.y=i?t==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&n.x<=s+r/2||!i&&n.y<=o+e/2?mxUtils.intersection(n.x,n.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(n.x,n.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,t,n,a,i,s,o,r,l){this.graph=e,this.scale=null!=t?t:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=n?n: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,t,n){this.view=e,this.cell=t,this.style=n,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,t,n){this.selectionModel=e,this.added=null!=t?t.slice():null,this.removed=null!=n?n.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 t=this.graph.cellRenderer.initializeOverlay,n=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,t){t.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 t=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){t()}),mxEvent.addListener(this.wnd,"resize",function(e){t()})}}});if(e=function(e,t){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",t&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),t){var n=a.createElement("hr");n.className="mxPageBreak",a.body.appendChild(n)}},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;(n=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(n,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!=n&&null!=n.parentNode&&n.parentNode.removeChild(n)}finally{this.graph.cellRenderer.initializeOverlay=t}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,t){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!=t&&e.writeln(t),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,t){var n=this.wnd.document,a=n.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=n.createElement("tbody"),s=0;s<e;s++){for(var o=n.createElement("tr"),r=0;r<t;r++){var l=s*t+r+1,d=n.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=n.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,n),d.appendChild(c)}else mxUtils.write(d,l,n);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,t,n){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=t+"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=t-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),n(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,t,n,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,t),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,n,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(n=i.firstChild;null!=n;)p=n.nextSibling,"svg"==(t=n.nodeName.toLowerCase())?(n.setAttribute("width",parseInt(i.style.width)),n.setAttribute("height",parseInt(i.style.height))):"default"!=n.style.cursor&&"table"!=t&&n.parentNode.removeChild(n),n=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,t){this.styles[e]=t},mxStylesheet.prototype.getCellStyle=function(e,t){var n=t;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(n=null!=n&&";"!=e.charAt(0)?mxUtils.clone(n):{},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 n[r]:mxUtils.isNumeric(o)?n[r]=parseFloat(o):n[r]=o}else if(null!=(o=this.styles[o]))for(r in o)n[r]=o[r]}return n},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,t){if(e=e||0,t=null!=t?t:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var n=this.shape.stencil.computeAspect(this.style,t.x,t.y,t.width,t.height);t.x=n.x,t.y=n.y,t.width=this.shape.stencil.w0*n.width,t.height=this.shape.stencil.h0*n.height}return 0!=e&&t.grow(e),t},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,t){t?(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,t){t?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 t=0;t<this.absolutePoints.length;t++)e.absolutePoints[t]=this.absolutePoints[t].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 t=[],n=0;n<e.length;n++)this.graph.isCellSelectable(e[n])&&t.push(e[n]);this.changeSelection(t,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var t=0;t<e.length;t++)if(this.graph.isCellSelectable(e[t]))return e[t];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var t=null;this.singleSelection&&(t=this.cells,e=[this.getFirstSelectableCell(e)]);for(var n=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&n.push(e[a]);this.changeSelection(n,t)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var t=[],n=0;n<e.length;n++)this.isSelected(e[n])&&t.push(e[n]);this.changeSelection(null,t)}},mxGraphSelectionModel.prototype.changeSelection=function(e,t){if(null!=e&&0<e.length&&null!=e[0]||null!=t&&0<t.length&&null!=t[0]){var n=new mxSelectionChange(this,e,t);n.execute();var a=new mxUndoableEdit(this,!1);a.add(n),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 t=0;t<this.removed.length;t++)this.selectionModel.cellRemoved(this.removed[t]);if(null!=this.added)for(t=0;t<this.added.length;t++)this.selectionModel.cellAdded(this.added[t]);t=this.added,this.added=this.removed,this.removed=t,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),t=this.graph.isLabelClipped(e.cell),n=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),n?(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);t&&(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&&(!t&&n||(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"),!t&&n||(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,t){null==this.textarea&&this.init(),this.stopEditing(!0);var n=this.graph.getView().getState(e);if(null!=n){this.editingCell=e,this.trigger=t,(this.textNode=null)!=n.text&&this.isHideLabel(n)&&(this.textNode=n.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(n.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(n.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(n.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(n.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(n.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(n.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(n.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(n),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==(n=this.getInitialValue(n,t))||0==n.length?(n=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=n,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"),t=e.style;return t.position="absolute",t.whiteSpace="nowrap",t.visibility="hidden",t.display=mxClient.IS_QUIRKS?"inline":"inline-block",t.zoom="1",t.verticalAlign="top",t.lineHeight=this.textarea.style.lineHeight,t.fontSize=this.textarea.style.fontSize,t.fontFamily=this.textarea.style.fontFamily,t.fontWeight=this.textarea.style.fontWeight,t.textAlign=this.textarea.style.textAlign,t.fontStyle=this.textarea.style.fontStyle,t.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,t){return this.graph.getEditingValue(e.cell,t)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var t=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*t+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var t=this.graph.getModel().isEdge(e.cell),n=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*n,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*n+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*n+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*n+s;n=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*n+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-n-r),Math.max(i,e.height-o-l));return t?(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+=n,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(t?(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)&&((t=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:t==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(t=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:t==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,t){mxCellRenderer.prototype.defaultShapes[e]=t},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,t){var n=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(n.isVertex(e.cell)||n.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=t&&!t||(this.initializeShape(e),e.view.graph.ordered||n.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,t){for(var n=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==n;)n=this.findPreviousStateInContainer(a,o,s,t),s=o,o=i.getParent(s);return n},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,t,n,a){var i=null,s=e.getModel();for(n=null!=n?t.getIndex(n)-1:s.getChildCount(t)-1;0<=n&&null==i;n--)i=this.findPreviousStateInContainer(e,s.getChildAt(t,n),null,a);return null!=i||(null==(i=e.view.getState(t))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var t=e.shape.node.parentNode,n=this.getPreviousStateInContainer(e,t),a=t.firstChild;null!=n&&(a=n.shape.node,null!=n.text&&null!=n.text.node&&n.text.node.parentNode==t&&(a=n.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var t=(n=e.view).graph.getModel();if(n.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(n.graph.keepEdgesInBackground){var n,a=e.shape.node,i=a.parentNode;t=t.getParent(e.cell);null!=(i=null!=(n=n.getState(t))&&null!=n.shape&&null!=n.shape.node?n.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,t){e.shape.node.parentNode.insertBefore(e.shape.node,t),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 t=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=t?e.shape=new mxShape(t):(t=this.getShapeConstructor(e),e.shape=new t),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 t=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==t&&(t=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),t},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,t,n){var a=e.shape[t],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),n=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[t]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[t]=null)!=a&&(e.shape[t]=null!=a.shape&&"indicatorColor"!=t?a.shape[t]:a.style[n]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(n,e){var a=n.view.graph;if(a.getModel().isEdge(n.cell),0<n.style[mxConstants.STYLE_FONTSIZE]||null==n.style[mxConstants.STYLE_FONTSIZE]){var t=a.isHtmlLabel(n.cell)||null!=e&&mxUtils.isNode(e);n.text=new this.defaultTextShape(e,new mxRectangle,n.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(n),n.style[mxConstants.STYLE_FONTCOLOR],n.style[mxConstants.STYLE_FONTFAMILY],n.style[mxConstants.STYLE_FONTSIZE],n.style[mxConstants.STYLE_FONTSTYLE],n.style[mxConstants.STYLE_SPACING],n.style[mxConstants.STYLE_SPACING_TOP],n.style[mxConstants.STYLE_SPACING_RIGHT],n.style[mxConstants.STYLE_SPACING_BOTTOM],n.style[mxConstants.STYLE_SPACING_LEFT],n.style[mxConstants.STYLE_HORIZONTAL],n.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],n.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(n.cell)&&a.isHtmlLabel(n.cell),a.isLabelClipped(n.cell),n.style[mxConstants.STYLE_OVERFLOW],n.style[mxConstants.STYLE_LABEL_PADDING]),n.text.opacity=mxUtils.getValue(n.style,mxConstants.STYLE_TEXT_OPACITY,100),n.text.dialect=t?mxConstants.DIALECT_STRICTHTML:n.view.graph.dialect,n.text.state=n,this.initializeLabel(n);var i=!1,s=function(e){var t=n;return(mxClient.IS_TOUCH||i)&&(t=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,t,e),t=a.view.getState(a.getCellAt(e.x,e.y))),t};mxEvent.addGestureListeners(n.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(n,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(n,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(n,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(n.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(n,e)&&(a.dblClick(e,n.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var t=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(t.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 t=e.view.graph.getCellOverlays(e.cell),n=null;if(null!=t){n=new mxDictionary;for(var a=0;a<t.length;a++){var i=null!=e.overlays?e.overlays.remove(t[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,t[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=t[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,t[a],i),null!=t[a].cursor&&(i.node.style.cursor=t[a].cursor)),n.put(t[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,t){t.destroy()}),e.overlays=n},mxCellRenderer.prototype.initializeOverlay=function(e,t){t.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(t,n,e){var a=t.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),n.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",t.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,t))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){n.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",t.cell))})},mxCellRenderer.prototype.createControl=function(n){var a=n.view.graph,e=a.getFoldingImage(n);if(a.foldingEnabled&&null!=e){if(null==n.control){var t=new mxRectangle(0,0,e.width,e.height);n.control=new mxImageShape(t,e.src),n.control.preserveImageAspect=!1,n.control.dialect=a.dialect,this.initControl(n,n.control,!0,function(e){if(a.isEnabled()){var t=!a.isCellCollapsed(n.cell);a.foldCells(t,!1,[n.cell]),mxEvent.consume(e)}})}}else null!=n.control&&(n.control.destroy(),n.control=null)},mxCellRenderer.prototype.initControl=function(t,e,n,a){var i=t.view.graph;return i.isHtmlLabel(t.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(t.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),n&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,t))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,t){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,t){return!0},mxCellRenderer.prototype.installListeners=function(n){var a=n.view.graph,t=function(e){var t=n;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(t=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,t,e),t=a.view.getState(a.getCellAt(e.x,e.y))),t},i=!1;mxEvent.addListener(n.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(n.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(n,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=n.shape&&mxEvent.getSource(e)==n.shape.content?null:n)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(n,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=n.shape&&mxEvent.getSource(e)==n.shape.content?null:t(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(n,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=n.shape&&mxEvent.getSource(e)==n.shape.content?null:t(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(n.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(n,e),mxEvent.consume(e))):this.isShapeEvent(n,e)&&(a.dblClick(e,null!=n.shape&&mxEvent.getSource(e)==n.shape.content?null:n.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,t){var n=this.getLabelValue(e);if(null==e.text&&null!=n&&(mxUtils.isNode(n)||0<n.length)?this.createLabel(e,n):null==e.text||null!=n&&0!=n.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);!t&&e.text.value==n&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=n,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 t=e.view.graph,n=e.view.scale,a=t.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*n,i.y+=a.y*n,null!=(t=t.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*t.width*n-e.text.spacingLeft*n-e.text.spacingRight*n),i.height=Math.max(0,e.text.margin.y*t.height*n-e.text.spacingTop*n-e.text.spacingBottom*n))):(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),t.isSwimlane(e.cell)&&(0<(t=t.getStartSize(e.cell)).width?(a=Math.min(i.width,t.width*n),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<t.height&&(a=Math.min(i.height,t.height*n),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,t){if(e.text.isPaintBoundsInverted()){var n=(e.width-e.height)/2;t.x+=n,t.y-=n,n=t.width,t.width=t.height,t.height=n}if(t.x-=e.text.margin.x*t.width,t.y-=e.text.margin.y*t.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){n=e.view.scale;var a=e.text.getSpacing();t.x+=a.x*n,t.y+=a.y*n,t.width=Math.max(0,t.width-e.text.spacingLeft*n-e.text.spacingRight*n),t.height=Math.max(0,t.height-e.text.spacingTop*n-e.text.spacingBottom*n)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(n=e.getCenterX(),a=e.getCenterY(),t.x!=n||t.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(t.x,t.y),Math.cos(i),Math.sin(i),new mxPoint(n,a)),t.x=pt.x,t.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,t){var n=t.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=n.getCenterX(),i=n.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;n.x=Math.round(a-n.width/2),n.y=Math.round(i-n.height/2)}!o&&null!=t.bounds&&t.scale==s.view.scale&&t.bounds.equals(n)||(t.bounds=n,t.scale=s.view.scale,t.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,t){if(null!=e.control){var n=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!t&&e.control.scale==i&&e.control.bounds.equals(n)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=n,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var t=e.control.scale,n=e.control.bounds.width/t,a=(t=e.control.bounds.height/t,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+n*a,s=e.y+t*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-n/2*a),Math.round(s-t/2*a),Math.round(n*a),Math.round(t*a))},mxCellRenderer.prototype.redraw=function(e,t,n){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=t&&t,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),t=!0),delete e.invalidOrder,delete e.orderChanged,!t&&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==n||n?e.shape.redraw():e.shape.updateBoundingBox()),(null==n||n)&&(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,t){t.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,t,n,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)(t=new mxCellState).x=r.x,t.y=r.y;else{if(null==t)return;var c=mxUtils.getPortConstraints(t,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(t.cell)).relative?d=r.x<=.5:null!=n&&(d=n.x+n.width<t.x)}r=!0,null!=l?((n=new mxCellState).x=l.x,n.y=l.y):null!=n&&((c=mxUtils.getPortConstraints(n,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(n.cell)).relative?r=e.x<=.5:null!=t&&(r=t.x+t.width<n.x)),null!=t&&null!=n&&(e=d?t.x:t.x+t.width,t=s.getRoutingCenterY(t),o=r?n.x:n.x+n.width,n=s.getRoutingCenterY(n),s=new mxPoint(e+(d?-a:a),t),l=new mxPoint(o+(r?-a:a),n),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,t)),i.push(new mxPoint(a,n))):(s.x<l.x==d?(a=t+(n-t)/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,t,n,a,i){if(null!=t){var s=(n=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=n.transformControlPoint(e,a),mxUtils.contains(t,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)*n.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=n.getRoutingCenterX(t),r=s):(l=n.getRoutingCenterY(t),d=s),null==a||a.x<t.x||a.x>t.x+t.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=t.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=t.y+t.height+2*r:o=e==mxConstants.DIRECTION_EAST?t.x-2*d:t.x+t.width+2*d:null!=a&&(o=n.getRoutingCenterX(t),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,t,n,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=t&&null!=n)if(null!=s){var l=Math.min(t.x,n.x),d=Math.max(t.x+t.width,n.x+n.width),c=(r=Math.min(t.y,n.y),Math.max(t.y+t.height,n.y+n.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(t.x,n.x))==(d=Math.min(t.x+t.width,n.x+n.width)))||(r=(r=Math.max(t.y,n.y))==(c=Math.min(t.y+t.height,n.y+n.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,t,n,a,i):mxEdgeStyle.TopToBottom(e,t,n,a,i)},SideToSide:function(e,t,n,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&&((t=new mxCellState).x=o.x,t.y=o.y),null!=r&&((n=new mxCellState).x=r.x,n.y=r.y),null!=t&&null!=n&&(e=Math.max(t.x,n.x),o=Math.min(t.x+t.width,n.x+n.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(t),s=s.getRoutingCenterY(n),null!=a&&(a.y>=t.y&&a.y<=t.y+t.height&&(o=a.y),a.y>=n.y&&a.y<=n.y+n.height&&(s=a.y)),!mxUtils.contains(n,e,o)&&!mxUtils.contains(t,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(n,e,s)&&!mxUtils.contains(t,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(n,e,a.y)&&!mxUtils.contains(t,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(t.y,n.y),t=Math.min(t.y+t.height,n.y+n.height),i.push(new mxPoint(e,s+(t-s)/2)))))},TopToBottom:function(e,t,n,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&&((t=new mxCellState).x=o.x,t.y=o.y),null!=r&&((n=new mxCellState).x=r.x,n.y=r.y),null!=t&&null!=n&&(o=Math.max(t.y,n.y),r=Math.min(t.y+t.height,n.y+n.height),e=s.getRoutingCenterX(t),null!=a&&a.x>=t.x&&a.x<=t.x+t.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(n,e,o)&&!mxUtils.contains(t,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=n.x&&a.x<=n.x+n.width?a.x:s.getRoutingCenterX(n),!mxUtils.contains(n,e,o)&&!mxUtils.contains(t,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(n,a.x,o)&&!mxUtils.contains(t,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(t.x,n.x),t=Math.min(t.x+t.width,n.x+n.width),i.push(new mxPoint(s+(t-s)/2,o)))))},SegmentConnector:function(e,t,n,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=t?l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t)):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=t,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=n,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!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=t&&(r.x<t.x||r.x>t.x+t.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!=n&&(l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=n)for(;1<i.length&&mxUtils.contains(n,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,t,n,a,i){var s=e.view.graph,o=null!=t&&s.getModel().isEdge(t.cell);s=null!=n&&s.getModel().isEdge(n.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,t,n,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=t?t.x:r.x;o=null!=t?t.y:r.y;var d=null!=t?t.width:1,c=null!=t?t.height:1,m=null!=n?n.x:l.x,u=null!=n?n.y:l.y,p=null!=n?n.width:1,g=null!=n?n.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=t&&(v[0]=mxUtils.getPortConstraints(t,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=n&&(v[1]=mxUtils.getPortConstraints(n,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)!=t&&(c=r),t=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(t[d][0]=(c.x-a[d][0])/a[d][2],t[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<t[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),t[d][1]=(c.y-a[d][1])/a[d][3],t[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<t[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=n&&(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),n=[],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]),n[d]=u[d][0]&v[d],n[d]|=(u[d][1]&v[d])<<8,n[d]|=(u[1-d][d]&v[d])<<16,n[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&n[d])&&(n[d]<<=8),0==(3840&n[d])&&(n[d]=15&n[d]|n[d]>>8),0==(983040&n[d])&&(n[d]=65535&n[d]|(251658240&n[d])>>8),e[d]=15&n[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]+=t[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=t[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]+=t[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=t[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=n=(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)!=n&&(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]+t[p][0]*a[p][2]:u?a[p][1]+t[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--:n=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,t,n,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=t)<1&&(i+=4),(e-=t)<1&&(e+=4),t=routePatterns[i-1][e-1],0!=n&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(t=inlineRoutePatterns[i-1][e-1]),t}},mxStyleRegistry={values:[],putValue:function(e,t){mxStyleRegistry.values[e]=t},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var t in mxStyleRegistry.values)if(mxStyleRegistry.values[t]==e)return t;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,t){if(this.view=e,this.previous=this.root=t,this.isUp=null==t,!this.isUp)for(var n=this.view.currentRoot,a=this.view.graph.getModel();null!=n;){if(n==t){this.isUp=!0;break}n=a.getParent(n)}}function mxGraph(e,t,n,a){this.mouseListeners=null,this.renderHint=n,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:n==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:n==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:n==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=t?t: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,t){this.graphModelChanged(t.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,t,n,a,i,s){this.image=e,this.tooltip=t,this.align=null!=n?n: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,t){this.source=e,null!=t&&this.init(t)}function mxMultiplicity(e,t,n,a,i,s,o,r,l,d){this.source=e,this.type=t,this.attr=n,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,t){this.isEnabled()&&this.beforeUndo(t.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.cellsMoved(t.getProperty("cells"),t.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,t,n,a){this.resizeHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.cellsResized(t.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.cellsResized(t.getProperty("cells"))}),this.shiftRightwards=null==t||t,this.shiftDownwards=null==n||n,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,t,n,a){this.horizontal=null==t||t,this.addEnabled=null==n||n,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(t.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,t){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(t.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,t,n){if(this.view=e,t=null!=t?t:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(t),null!=n){t=e.createState(new mxCell);for(var a=0;a<n.length;a++)e.validateBounds(t,n[a]);var i=null;for(a=0;a<n.length;a++){var s=e.validatePoints(t,n[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,t){this.point=e,this.perimeter=null==t||t}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,t){null!=e&&(this.graph=e,this.factoryMethod=t,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,t,n,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=t?t:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=t?n: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,t){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,t){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=t,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,t){null!=e&&(this.graph=e,this.target=t||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,t){null!=e&&(this.graph=e,this.delay=t||500,this.graph.addMouseListener(this))}function mxCellTracker(e,t,n){mxCellMarker.call(this,e,t),this.graph.addMouseListener(this),null!=n&&(this.getCell=n),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,t,n,a){null!=e&&(this.graph=e,this.highlightColor=null!=t?t:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=n?n: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(t){if(null!=t){this.editor=t,this.handler=new mxKeyHandler(t.graph);var n=this.handler.escape;this.handler.escape=function(e){n.apply(this,arguments),t.hideProperties(),t.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,t){this.editor=t,null!=e&&null!=t&&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 t=null;if(null!=e&&0<e.length)for(var n=this.graph.getModel(),a=0;a<e.length;a++)if(n.isVertex(e[a])||n.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i))}return t},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var t=new mxCurrentRootChange(this,e);t.execute();var n=new mxUndoableEdit(this,!1);n.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,t,n){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==t&&this.translate.y==n||(this.scale=e,this.translate.x=t,this.translate.y=n,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 t=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",t))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,t){var n=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==t||(this.translate.x=e,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",n))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,t,n){var a=this.graph.getModel();if(e=e||a.getRoot(),t=null!=t&&t,n=null==n||n,this.removeState(e),n&&(t||e!=this.currentRoot)){n=a.getChildCount(e);for(var i=0;i<n;i++)this.clear(a.getChildAt(e,i),t)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,t,n,a){var i=this.graph.getModel();if(e=e||i.getRoot(),t=null==t||t,n=null==n||n,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),t)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,t,n,a)}if(n)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),t,n)},mxGraphView.prototype.validate=function(e){var t=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var n=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){n=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!=n&&(this.canvas.style.display=n,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",t)},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 t=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(t,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?(t=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(t),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=t,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,t=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*t,e.height*t)},mxGraphView.prototype.redrawBackgroundImage=function(e,t){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*t.width,e.bounds.height=this.scale*t.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,t){var n=this.graph.getModel(),a=this.getState(t,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(t)){if(t!=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(t))){if(!n.isEdge(t)){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,n.isVertex(t)){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(t);null!=(i=this.graph.getChildOffsetForCell(t))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(t)||t==this.currentRoot))for(s=n.getChildCount(t),i=0;i<s;i++)o=n.getChildAt(t,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var t=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);t==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:t==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(t=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:t==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,t){var n=this.graph.getModel(),a=this.getState(t),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(t);if(null!=s&&n.isEdge(t)){var o=this.getState(this.getVisibleTerminal(t,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&n.isEdge(o.cell)&&!n.isAncestor(o.cell,t)){var r=this.getState(n.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(t,!1));a.setVisibleTerminalState(l,!1),null!=l&&n.isEdge(l.cell)&&!n.isAncestor(l.cell,t)&&(r=this.getState(n.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&&n.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,t!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(n.isEdge(t)||n.isVertex(t))&&(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(t)||t==this.currentRoot))for(s=n.getChildCount(t),o=0;o<s;o++)r=n.getChildAt(t,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,t){var n=t.cell;if(!this.graph.isCellCollapsed(n)||n==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(n),s=0;s<i;s++)this.validateBounds(t,a.getChildAt(n,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,t,n){this.updateFixedTerminalPoint(e,t,!0,this.graph.getConnectionConstraint(e,t,!0)),this.updateFixedTerminalPoint(e,n,!1,this.graph.getConnectionConstraint(e,n,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,t,n,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(t,a)),null==i&&null==t){t=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(n))&&(i=new mxPoint(t*(a.x+i.x+s.x),t*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,n)},mxGraphView.prototype.updatePoints=function(e,t,n,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,t,n,a);if(null!=s)s(e,n=this.getTerminalPort(e,n,!0),a=this.getTerminalPort(e,a,!1),t,i);else if(null!=t)for(s=0;s<t.length;s++)null!=t[s]&&(a=mxUtils.clone(t[s]),i.push(this.transformControlPoint(e,a)));t=e.absolutePoints,i.push(t[t.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,t){var n=e.origin;return new mxPoint(this.scale*(t.x+this.translate.x+n.x),this.scale*(t.y+this.translate.y+n.y))},mxGraphView.prototype.getEdgeStyle=function(e,t,n,a){return"string"==typeof(e=null!=n&&n==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==(t=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(t=mxUtils.eval(e)),e=t),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,t,n){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!1),null==i&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,t,n,a){t=this.getTerminalPort(e,t,a);var i=this.getNextPoint(e,n,a),s=this.graph.isOrthogonal(e);n=mxUtils.toRadians(Number(t.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(t.getCenterX(),t.getCenterY());if(0!=n){var r=Math.cos(-n),l=Math.sin(-n);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),t=this.getPerimeterPoint(t,i,0==n&&s,r),0!=n&&(r=Math.cos(n),l=Math.sin(n),t=mxUtils.getRotatedPoint(t,r,l,o)),e.setAbsoluteTerminalPoint(t,a)},mxGraphView.prototype.getTerminalPort=function(e,t,n){return null!=(e=mxUtils.getValue(e.style,n?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(t=e)),t},mxGraphView.prototype.getPerimeterPoint=function(e,t,n,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=t&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,t,n)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var t=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+t*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var t=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+t*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,t){return t=null!=t?t:0,null!=e&&(t+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(t*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var t=mxStyleRegistry.getValue(e);null==t&&this.isAllowEval()&&(t=mxUtils.eval(e)),e=t}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,t,n){var a=null;return null!=(e=e.absolutePoints)&&(n||2<e.length||null==t)&&(a=e.length,a=e[n?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=t&&(a=new mxPoint(t.getCenterX(),t.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,t){for(var n=this.graph.getModel(),a=n.getTerminal(e,t),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=n.getParent(a);return n.getParent(i)==n.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var t=e.absolutePoints;if(e.length=0,null!=t&&0<t.length){var n=t[0],a=t[t.length-1];if(null==n||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(n.x!=a.x||n.y!=a.y){var i=a.x-n.x,s=a.y-n.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=n)){n=s.x;for(var r=s.y,l=n,d=r,c=1;c<t.length;c++){var m=t[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,n=Math.min(s.x,n),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=n,e.y=r,e.width=Math.max(1,l-n),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,t){var n=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=t&&!t.relative)null!=t&&(null!=(d=t.offset)&&(n+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=t?t.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=n=a=0,null!=t){a=t.y;var d=t.offset;null!=d&&(n=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,n=s.x+d*i+((0==o?0:l/o)*a+n)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(n,a)},mxGraphView.prototype.getRelativePoint=function(e,t,n){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,t,n),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,t,n))<=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=t-l))*e+(s=(d=o.y-s)-(s=n-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,t,n)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,t,n)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var t=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=t&&0<t.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(n=this.getPoint(e,i))&&(e.absoluteOffset=n)}else{var n=t[0],a=t[t.length-1];if(null!=n&&null!=a){t=a.x-n.x;var i,s=a.y-n.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=n.y+s/2+o*this.scale,e.absoluteOffset.x=n.x+t/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,t){t=t||!1;var n=null;return null!=e&&(n=this.states.get(e),this.graph.isCellVisible(e)&&(null==n&&t&&this.graph.isCellVisible(e)?(n=this.createState(e),this.states.put(e,n)):t&&null!=n&&this.updateStyle&&(n.style=this.graph.getCellStyle(e)))),n},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 t=[],n=0;n<e.length;n++){var a=this.getState(e[n]);null!=a&&t.push(a)}return t},mxGraphView.prototype.removeState=function(e){var t=null;return null!=e&&(null!=(t=this.states.remove(e))&&(this.graph.cellRenderer.destroy(t),t.destroy())),t},mxGraphView.prototype.createState=function(e){var t=this.graph.getCellStyle(e);return e=new mxCellState(this,e,t),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 t=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-t.x,e.clientY-t.y);t=this.graph.container.offsetWidth;var n=this.graph.container.clientWidth;return n<t&&e.x>n+2&&e.x<=t||(t=this.graph.container.offsetHeight,(n=this.graph.container.clientHeight)<t&&e.y>n+2&&e.y<=t)},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,t){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var t,n;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(t=e,n=null,mxClient.IS_TOUCH&&(n=mxEvent.getClientX(t),t=mxEvent.getClientY(t),t=mxUtils.convertPoint(i,n,t),n=a.view.getState(a.getCellAt(t.x,t.y))),n)))}),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,t){if(null!=this.graph.container){var n=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=n<t?t+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,t){var n=document.createElement("DIV");return null!=e&&null!=t?(n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.width=e,n.style.height=t):n.style.position="relative",n},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var t=e.offsetWidth,n=e.offsetHeight;this.canvas=this.createVmlPane(t,n),this.backgroundPane=this.createVmlPane(t,n),this.drawPane=this.createVmlPane(t,n),this.overlayPane=this.createVmlPane(t,n),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,t){var n=document.createElement(mxClient.VML_PREFIX+":group");return n.style.position="absolute",n.style.left="0px",n.style.top="0px",n.style.width=e+"px",n.style.height=t+"px",n.setAttribute("coordsize",e+","+t),n.setAttribute("coordorigin","0,0"),n},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 t=document.createElementNS(mxConstants.NS_SVG,"svg");t.style.width="100%",t.style.height="100%",t.style.display="block",t.appendChild(this.canvas),null!=e&&(e.appendChild(t),"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 t=[],n=0;n<e.length;n++){var a=e[n];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(t,i)<0&&t.push(i)}}return this.getModel().getTopmostCells(t)},mxGraph.prototype.graphModelChanged=function(e){for(var t=0;t<e.length;t++)this.processChange(e[t]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var t=[],n=0;n<e.length;n++){var a=e[n];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(t=t.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(t=t.concat(this.model.getDescendants(a.cell)))}return t},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 t=this.model.getParent(e.child);null!=t?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),t!=e.previous&&(null!=t&&this.view.invalidate(t,!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 t=this.model.getChildCount(e),n=0;n<t;n++)this.removeStateForCell(this.model.getChildAt(e,n));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,t){null==e.overlays&&(e.overlays=[]),e.overlays.push(t);var n=this.view.getState(e);return null!=n&&this.cellRenderer.redraw(n),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",t)),t},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,t){if(null==t)this.removeCellOverlays(e);else{var n=mxUtils.indexOf(e.overlays,t);0<=n?(e.overlays.splice(n,1),0==e.overlays.length&&(e.overlays=null),null!=(n=this.view.getState(e))&&this.cellRenderer.redraw(n),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",t))):t=null}return t},mxGraph.prototype.removeCellOverlays=function(e){var t=e.overlays;if(null!=t){e.overlays=null;var n=this.view.getState(e);for(null!=n&&this.cellRenderer.redraw(n),n=0;n<t.length;n++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",t[n]))}return t},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var t=this.model.getChildCount(e),n=0;n<t;n++){var a=this.model.getChildAt(e,n);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(n,e,t,a){return null!=e&&0<e.length?(e=new mxCellOverlay(t=null!=t?t:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,t){this.isEnabled()&&this.setSelectionCell(n)})),this.addCellOverlay(n,e)):(this.removeCellOverlays(n),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,t){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",t)),this.cellEditor.startEditing(e,t))},mxGraph.prototype.getEditingValue=function(e,t){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,t,n){this.model.beginUpdate();try{this.cellLabelChanged(e,t,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",t,"event",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,t,n){this.model.beginUpdate();try{this.model.setValue(e,t),n&&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 t=0;t<e.length;t++){var n=this.view.getState(e[t]);null!=n&&null!=n.handler&&n.handler.reset()}},mxGraph.prototype.click=function(e){var t=e.getEvent(),n=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",t,"cell",n);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(t)&&!a.isConsumed()&&(null!=n?this.selectCellForEvent(n,t):(n=null,this.isSwimlaneSelectionEnabled()&&(n=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=n?this.selectCellForEvent(n,t):this.isToggleEvent(t)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),this.isEnabled()&&!mxEvent.isConsumed(e)&&!n.isConsumed()&&null!=t&&this.isCellEditable(t)&&this.startEditingAtCell(t,e)},mxGraph.prototype.scrollPointToVisible=function(e,t,n,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,t+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&t>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&t<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,n&&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-t)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&n&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,t=this.container.scrollHeight+a-s):(t=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=t+"px",i.scrollTop+=a-s)):(s=t-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var t=0;t="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(t)&&(t=0),t}var t=mxUtils.getCurrentStyle(this.container),n=new mxRectangle;return n.x=e(t.borderLeftWidth)+parseInt(t.paddingLeft||0),n.y=e(t.borderTopWidth)+parseInt(t.paddingTop||0),n.width=e(t.borderRightWidth)+parseInt(t.paddingRight||0),n.height=e(t.borderBottomWidth)+parseInt(t.paddingBottom||0),n},mxGraph.prototype.getPreferredPageSize=function(e,t,n){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 t=this.pageBreaksVisible?Math.ceil(t/i.width):1,n=this.pageBreaksVisible?Math.ceil(n/i.height):1,new mxRectangle(0,0,t*i.width+2+a.x/e,n*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var t=this.getBorder(),n=Math.max(0,e.x+e.width+1+t);t=Math.max(0,e.y+e.height+1+t);if(null!=this.minimumContainerSize&&(n=Math.max(n,this.minimumContainerSize.width),t=Math.max(t,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(n,t),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,n,t);null!=a&&(n=a.width,t=a.height)}null!=this.minimumGraphSize&&(n=Math.max(n,this.minimumGraphSize.width*this.view.scale),t=Math.max(t,this.minimumGraphSize.height*this.view.scale)),n=Math.ceil(n-1),t=Math.ceil(t-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,n)+"px",a.style.minHeight=Math.max(1,t)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,n),Math.max(1,t)):(this.view.canvas.style.minWidth=Math.max(1,n)+"px",this.view.canvas.style.minHeight=Math.max(1,t)+"px"),this.updatePageBreaks(this.pageBreaksVisible,n-1,t-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,t){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var n=this.getBorderSizes();e+=Math.max(2,n.x+n.width+1),t+=Math.max(2,n.y+n.height+1)}else 9<=document.documentMode?(e+=3,t+=5):(e+=1,t+=1);else t+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),t=Math.min(this.maximumContainerSize.height,t)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(t)+"px"},mxGraph.prototype.updatePageBreaks=function(e,t,n){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((t-i.x)/i.width):0,e=e?Math.ceil((n-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,n)];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(t,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 t=this.model.getStyle(e),n=null;n=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=t&&(n=this.postProcessCellStyle(this.stylesheet.getCellStyle(t,n))),null==n&&(n=mxGraph.prototype.EMPTY_ARRAY),n},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var t=e[mxConstants.STYLE_IMAGE],n=this.getImageFromBundles(t);null!=n?e[mxConstants.STYLE_IMAGE]=n:n=t,null!=n&&"data:image/"==n.substring(0,11)&&(0<(t=n.indexOf(","))&&(n=n.substring(0,t)+";base64,"+n.substring(t+1)),e[mxConstants.STYLE_IMAGE]=n)}return e},mxGraph.prototype.setCellStyle=function(e,t){if(null!=(t=t||this.getSelectionCells())){this.model.beginUpdate();try{for(var n=0;n<t.length;n++)this.model.setStyle(t[n],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,t,n){n=n||this.getSelectionCell(),this.toggleCellStyles(e,t,[n])},mxGraph.prototype.toggleCellStyles=function(e,t,n){var a;(t=null!=t&&t,null!=(n=n||this.getSelectionCells())&&0<n.length)&&(null!=(a=null!=(a=this.view.getState(n[0]))?a.style:this.getCellStyle(n[0]))&&(t=mxUtils.getValue(a,e,t)?0:1,this.setCellStyles(e,t,n)))},mxGraph.prototype.setCellStyles=function(e,t,n){n=n||this.getSelectionCells(),mxUtils.setCellStyles(this.model,n,e,t)},mxGraph.prototype.toggleCellStyleFlags=function(e,t,n){this.setCellStyleFlags(e,t,null,n)},mxGraph.prototype.setCellStyleFlags=function(e,t,n,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==n)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(n=(parseInt(i[e]||0)&t)!=t);mxUtils.setCellStyleFlags(this.model,a,e,t,n)}},mxGraph.prototype.alignCells=function(e,t,n){if(null==t&&(t=this.getSelectionCells()),null!=t&&1<t.length){if(null==n)for(var a=0;a<t.length;a++){var i=this.getCellGeometry(t[a]);if(null!=i&&!this.model.isEdge(t[a]))if(null==n){if(e==mxConstants.ALIGN_CENTER){n=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)n=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)n=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){n=i.y+i.height/2;break}n=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else n=e==mxConstants.ALIGN_RIGHT?Math.max(n,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(n,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(n,i.y+i.height):Math.min(n,i.x)}if(null!=n){this.model.beginUpdate();try{for(a=0;a<t.length;a++)null!=(i=this.getCellGeometry(t[a]))&&!this.model.isEdge(t[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=n-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=n-i.width:e==mxConstants.ALIGN_TOP?i.y=n:e==mxConstants.ALIGN_MIDDLE?i.y=n-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=n-i.height:i.x=n,this.model.setGeometry(t[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",t))}finally{this.model.endUpdate()}}}return t},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var t=this.model.getStyle(e);null==t||0==t.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 t=[],n=0;n<this.imageBundles.length;n++)this.imageBundles[n]!=e&&t.push(this.imageBundles[n]);this.imageBundles=t},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var t=0;t<this.imageBundles.length;t++){var n=this.imageBundles[t].getImage(e);if(null!=n)return n}return null},mxGraph.prototype.orderCells=function(e,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(t,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsOrdered=function(e,t){if(null!=e){this.model.beginUpdate();try{for(var n=0;n<e.length;n++){var a=this.model.getParent(e[n]);t?this.model.add(a,e[n],n):this.model.add(a,e[n],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",t,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,t,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),n=this.getCellsForGroup(n),null==e&&(e=this.createGroupCell(n));var a=this.getBoundsForGroup(e,n,t);if(0<n.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(n[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(n,e,s,null,null,!1,!1),this.cellsMoved(n,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",t,"cells",n))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var t=[];if(null!=e&&0<e.length){var n=this.model.getParent(e[0]);t.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==n&&t.push(e[a])}return t},mxGraph.prototype.getBoundsForGroup=function(e,t,n){return null!=(t=this.getBoundingBoxFromGeometry(t))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),t.x-=e.width,t.y-=e.height,t.width+=e.width,t.height+=e.height),t.x-=n,t.y-=n,t.width+=2*n,t.height+=2*n),t},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var t=[];if(null==e){e=this.getSelectionCells();for(var n=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&n.push(e[a]);e=n}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),t=t.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return t},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var t=this.getDefaultParent(),n=this.model.getChildCount(t);this.cellsAdded(e,t,n,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,t,n){null==e&&(e=this.getSelectionCells()),t=null!=t?t:0,n=null!=n&&n,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();n&&(r.x+=s.x-o.width-t,r.y+=s.y-o.height-t),r.width=s.width+o.width+2*t,r.height=s.height+o.height+2*t,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+t,-s.y+o.height+t)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,t){t=null==t||t;var n=null;if(null!=e){for(var a={},i=(n=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],n.push(e[i])}if(0<n.length){var s=this.view.scale,o=this.view.translate;for(n=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!t&&this.model.isEdge(n[i])&&null!=this.getEdgeValidationError(n[i],this.model.getTerminal(n[i],!0),this.model.getTerminal(n[i],!1)))n[i]=null;else{var r=this.model.getGeometry(n[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(n[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 n=[]}return n},mxGraph.prototype.insertVertex=function(e,t,n,a,i,s,o,r,l){return t=this.createVertex(e,t,n,a,i,s,o,r,l),this.addCell(t,e)},mxGraph.prototype.createVertex=function(e,t,n,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(n=new mxCell(n,e,r)).setId(t),n.setVertex(!0),n.setConnectable(!0),n},mxGraph.prototype.insertEdge=function(e,t,n,a,i,s){return t=this.createEdge(e,t,n,a,i,s),this.addEdge(t,e,a,i)},mxGraph.prototype.createEdge=function(e,t,n,a,i,s){return(e=new mxCell(n,new mxGeometry,s)).setId(t),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,t,n,a,i){return this.addCell(e,t,i,n,a)},mxGraph.prototype.addCell=function(e,t,n,a,i){return this.addCells([e],t,n,a,i)[0]},mxGraph.prototype.addCells=function(e,t,n,a,i){null==t&&(t=this.getDefaultParent()),null==n&&(n=this.model.getChildCount(t)),this.model.beginUpdate();try{this.cellsAdded(e,t,n,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",t,"index",n,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,t,n,a,i,s,o){if(null!=e&&null!=t&&null!=n){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(t):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])n--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=t&&t!=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)}}t==c&&n+d>this.model.getChildCount(t)&&n--,this.model.add(t,e[d],n+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",t,"index",n,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,t){t=null==t||t,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),t&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var t=this.view.scale,n=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/t-n.x,m[u].y/t-n.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,t,n,a,i){a=a||0,i=i||0,null==n&&(n=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(t,a,i,!1,!1),this.cellsAdded(t,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([n],s,this.model.getChildCount(s),o,t[0],!1),this.cellConnected(e,t[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",t,"newEdge",n,"dx",a,"dy",i))}finally{this.model.endUpdate()}return n},mxGraph.prototype.toggleCells=function(e,t,n){null==t&&(t=this.getSelectionCells()),n&&(t=this.addAllEdges(t)),this.model.beginUpdate();try{this.cellsToggled(t,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",t,"includeEdges",n))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsToggled=function(e,t){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var n=0;n<e.length;n++)this.model.setVisible(e[n],t)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,t,n,a){t=null!=t&&t,null==n&&(n=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(n,e,t,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",t,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsFolded=function(e,t,n,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],t))&&t!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],t),this.swapBounds(e[i],t),this.isExtendParent(e[i])&&this.extendParent(e[i]),n)){var s=this.model.getChildren(e[i]);this.foldCells(s,t,n)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",t,"recurse",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,t){if(null!=e){var n=this.model.getGeometry(e);null!=n&&(n=n.clone(),this.updateAlternateBounds(e,n,t),n.swap(),this.model.setGeometry(e,n))}},mxGraph.prototype.updateAlternateBounds=function(e,t,n){if(null!=e&&null!=t){if(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e),null==t.alternateBounds){var a=t;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(n,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),t.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=t.alternateBounds){t.alternateBounds.x=t.x,t.alternateBounds.y=t.y;var i=mxUtils.toRadians(n[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=t.alternateBounds.getCenterX()-t.getCenterX(),n=t.alternateBounds.getCenterY()-t.getCenterY(),a=Math.cos(i),i=Math.sin(i),t.alternateBounds.x+=a*e-i*n-e,t.alternateBounds.y+=i*e+a*n-n)}}},mxGraph.prototype.addAllEdges=function(e){var t=e.slice();return t.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var t=[];if(null!=e)for(var n=0;n<e.length;n++){for(var a=this.model.getEdgeCount(e[n]),i=0;i<a;i++)t.push(this.model.getEdgeAt(e[n],i));a=this.model.getChildren(e[n]),t=t.concat(this.getAllEdges(a))}return t},mxGraph.prototype.updateCellSize=function(e,t){t=null!=t&&t,this.model.beginUpdate();try{this.cellSizeUpdated(e,t),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,t){if(null!=e){this.model.beginUpdate();try{var n=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=n&&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,n.height+8),i&&(a.height=n.height+8),a.width=n.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,n.width+8),i&&(a.width=n.width+8),a.height=n.height),this.model.setStyle(e,r)}else a.width=n.width,a.height=n.height;if(!t&&!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 t=null;if(null!=e){var n=this.view.getState(e),a=null!=n?n.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;t=0;null==this.getImage(n)&&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&&(t+=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,t+=2*(a[mxConstants.STYLE_SPACING]||0),t+=a[mxConstants.STYLE_SPACING_TOP]||0,t+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(n=this.getFoldingImage(n))&&(s+=n.width+8),t=null!=(n=this.getLabel(e))&&0<n.length?(this.isHtmlLabel(e)||(n=n.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(n,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,t=i.height+t,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=t,t=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),t=this.snap(t+this.gridSize/2)),new mxRectangle(0,0,e,t)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return t},mxGraph.prototype.handleGesture=function(e,t){if(.2<Math.abs(1-t.scale)){var n=this.view.scale,a=this.view.translate,i=e.width*t.scale,s=e.height*t.scale,o=e.y-(s-e.height)/2;n=new mxRectangle(this.snap((e.x-(i-e.width)/2)/n)-a.x,this.snap(o/n)-a.y,this.snap(i/n),this.snap(s/n));this.resizeCell(e.cell,n)}},mxGraph.prototype.resizeCell=function(e,t){return this.resizeCells([e],[t])[0]},mxGraph.prototype.resizeCells=function(e,t){this.model.beginUpdate();try{this.cellsResized(e,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,t){if(null!=e&&null!=t&&e.length==t.length){this.model.beginUpdate();try{for(var n=0;n<e.length;n++){var a=t[n],i=this.model.getGeometry(e[n]);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[n])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[n],i),this.isExtendParent(e[n])&&this.extendParent(e[n])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var t=this.model.getParent(e),n=this.model.getGeometry(t);null!=t&&null!=n&&!this.isCellCollapsed(t)&&(null!=(e=this.model.getGeometry(e))&&(n.width<e.x+e.width||n.height<e.y+e.height))&&((n=n.clone()).width=Math.max(n.width,e.x+e.width),n.height=Math.max(n.height,e.y+e.height),this.cellsResized([t],[n]))}},mxGraph.prototype.importCells=function(e,t,n,a,i){return this.moveCells(e,t,n,!0,a,i)},mxGraph.prototype.moveCells=function(e,t,n,a,i,s){if(t=null!=t?t:0,n=null!=n?n:0,a=null!=a&&a,null!=e&&(0!=t||0!=n||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,t,n,!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",t,"dy",n,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,t,n,a,i){if(null!=e&&(0!=t||0!=n)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],t,n),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",n,"dy",n,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,t,n){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(t,n),!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(t,n):(a.offset.x+=t,a.offset.y+=n)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var t=this.model.getParent(e);if(t==this.getDefaultParent()||t==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=t&&t!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(t))){var n=e=0,a=i.width,i=i.height;return this.isSwimlane(t)&&(e=(t=this.getStartSize(t)).width,a-=t.width,n=t.height,i-=t.height),new mxRectangle(e,n,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var t=this.model.getGeometry(e),n=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=t&&null!=n&&!t.relative&&(t.x<n.x||t.y<n.y||n.width<t.x+t.width||n.height<t.y+t.height)&&(e=this.getOverlap(e),0<n.width&&(t.x=Math.min(t.x,n.x+n.width-(1-e)*t.width)),0<n.height&&(t.y=Math.min(t.y,n.y+n.height-(1-e)*t.height)),t.x=Math.max(t.x,n.x-t.width*e),t.y=Math.max(t.y,n.y-t.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var t={},n=0;n<e.length;n++){var a=mxCellPath.create(e[n]);t[a]=e[n]}this.model.beginUpdate();try{for(n=0;n<e.length;n++){var i=this.model.getEdges(e[n]);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==t[l]||null==t[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[n]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var t=this.model.getGeometry(e);return null!=t&&null!=t.points&&0<t.points.length&&((t=t.clone()).points=[],this.model.setGeometry(e,t)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,t){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,t,n){t=null;var a=e.style[n?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[n?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(t=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=t&&(a=mxUtils.getValue(e.style,n?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(t,a)},mxGraph.prototype.setConnectionConstraint=function(e,t,n,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(n?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(n?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(n?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(n?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(n?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(n?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(n?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,t){var n=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!=t.point){var l=n=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&&(n=-1,d=-a.width),u&&(l=-1,c=-a.height)}n=new mxPoint(a.x+t.point.x*a.width*n-d,a.y+t.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,t.perimeter?(0!=o&&null!=n&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),n=mxUtils.getRotatedPoint(n,a,r,i)),null!=n&&t.perimeter&&(n=this.view.getPerimeterPoint(e,n,!1))):s+=o,0!=s&&null!=n&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),n=mxUtils.getRotatedPoint(n,a,r,i))}return n},mxGraph.prototype.connectCell=function(e,t,n,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,n);this.cellConnected(e,t,n,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",t,"source",n,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,t,n,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,n);this.setConnectionConstraint(e,t,n,a),this.isPortsEnabled()&&(a=null,this.isPort(t)&&(a=t.getId(),t=this.getTerminalForPort(t,n)),this.setCellStyles(n?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,t,n),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",t,"source",n,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var t=this.view.scale,n=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/t-n.x+l,c[0].y/t-n.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/t-n.x+l,c[v].y/t-n.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,t){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(),t=this.getCurrentRoot();if(null!=t){for(var n=this.model.getParent(t);n!=e&&!this.isValidRoot(n)&&this.model.getParent(n)!=e;)n=this.model.getParent(n);n==e||this.model.getParent(n)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(n),null!=this.view.getState(t)&&this.setSelectionCell(t)}},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,t,n){var a=[e];if(t&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),n){n=this.model.getChildCount(e);for(var i=0;i<n;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),t,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,t){t=null!=t&&t;var n=null;if(null!=e)for(var a=0;a<e.length;a++)if(t||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==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i)}}return n},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,t){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-t;else{var n=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==t){if(mxClient.IS_IE?n.setAttribute("transform","translate("+e+","+t+")"):n.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(n.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(n.setAttribute("transform","translate("+e+","+t+")"),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!=n.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,n.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=t+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=t+"px"}else n.style.left=e+"px",n.style.top=t+"px";this.panDx=e,this.panDy=t,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,t){this.zoom(e/this.view.scale,t)},mxGraph.prototype.zoom=function(e,t){t=null!=t?t:this.centerZoom;var n=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=n,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(n));else if(t&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*n);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(n,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(n),mxUtils.hasScrollbars(this.container)&&(i=a=0,t&&(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 t=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 n=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=n-e.x,e.height=a-e.y,t<1?(n=((t=e.height/t)-e.height)/2,e.height=t,t=Math.min(e.y,n),e.y-=t,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(n=((t*=e.width)-e.width)/2,e.width=t,t=Math.min(e.x,n),e.x-=t,n=Math.min(this.container.scrollWidth,e.x+e.width),e.width=n-e.x),t=this.container.clientWidth/e.width,n=this.view.scale*t,mxUtils.hasScrollbars(this.container)?(this.view.setScale(n),this.container.scrollLeft=Math.round(e.x*t),this.container.scrollTop=Math.round(e.y*t)):this.view.scaleAndTranslate(n,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,t){if(null!=this.container){e=null!=e?e:0,t=null!=t&&t;var n=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();t&&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=t?e:2*e;n=Math.floor(100*Math.min(n/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(n=Math.max(n,this.minFitScale)),null!=this.maxFitScale&&(n=Math.min(n,this.maxFitScale)),t?this.view.scale!=n&&this.view.setScale(n):mxUtils.hasScrollbars(this.container)?(this.view.setScale(n),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*n-e-Math.max(0,(this.container.clientWidth-o*n)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*n-e-Math.max(0,(this.container.clientHeight-r*n)/2))):this.view.scaleAndTranslate(n,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,t){var n=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(n=new mxRectangle(n+i.x,a+i.y,i.width,i.height),t&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,n.x=n.getCenterX()-a/2,n.width=a,n.y=n.getCenterY()-i/2,n.height=i),this.scrollRectToVisible(n)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var t=!1;if(null!=e){var n=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(n,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){n=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=n.scrollLeft-e.x;a=Math.max(o-n.scrollLeft,0);0<o?n.scrollLeft-=o+2:0<(o=e.x+i-n.scrollLeft-n.clientWidth)&&(n.scrollLeft+=o+2),i=n.scrollTop-e.y,o=Math.max(0,i-n.scrollTop),0<i?n.scrollTop-=i+2:0<(i=e.y+s-n.scrollTop-n.clientHeight)&&(n.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+n&&(this.view.translate.x-=(e.x+i-n-o)/l,t=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,t=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,t=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,t=!0),t&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return t},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 t=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=t?t:(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 t=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=t&&t==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,t,n){return null==this.getEdgeValidationError(e,t,n)},mxGraph.prototype.getEdgeValidationError=function(e,t,n){if(null!=e&&!this.isAllowDanglingEdges()&&(null==t||null==n))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&t==n&&null!=t||!this.isValidConnection(t,n))return"";if(null==t||null==n)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(t,n,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(t,!0,e),s=this.model.getDirectedEdgeCount(n,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,t,n,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,t,n))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,t,n){return null},mxGraph.prototype.validateGraph=function(e,t){e=null!=e?e:this.model.getRoot(),t=null!=t?t:{};for(var n=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=t;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),n=n&&null==o}return a="",this.isCellCollapsed(e)&&!n&&(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,t))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!n?a:null},mxGraph.prototype.getCellValidationError=function(e){var t=this.model.getDirectedEdgeCount(e,!0),n=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<t||1==s.min&&0==t||1==s.max&&1<t)?a+=s.countError+"\n":!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")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,t){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 t=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!t))return t?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 t="";if(this.labelsVisible&&null!=e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);mxUtils.getValue(n,mxConstants.STYLE_NOLABEL,!1)||(t=this.convertValueToString(e))}return t},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 t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,n,t,a){var i=null;return null!=e&&(null==e.control||n!=e.control.node&&n.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,t){null!=i||n!=t.node&&n.parentNode!=t.node||(i=t.overlay.toString())}),null==i&&(null!=(t=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof t.getTooltipForNode&&(i=t.getTooltipForNode(n))),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 t=new mxRectangle,n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&(n=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?t.height=n:t.width=n),t},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 t;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return t[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 t=this.model.getGeometry(e);return this.isCellsLocked()||null!=t&&this.model.isVertex(e)&&t.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 t=this.view.getState(e);return e=null!=t?t.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 t=this.view.getState(e);return e=null!=t?t.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 t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=t[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 t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=t[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,t){return!0},mxGraph.prototype.isCellBendable=function(e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=t[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=t[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,t,n){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,t){return this.isValidSource(e)&&this.isValidTarget(t)},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 t=this.cellEditor.getEditingCell();return null==e?null!=t:e==t},mxGraph.prototype.isAutoSizeCell=function(e){var t=this.view.getState(e);return e=null!=t?t.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,t){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,t)}))},mxGraph.prototype.isCellFoldable=function(e,t){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=n[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,t,n){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,t,n)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,t,n){return!(!this.model.isEdge(e)||null==t||1!=t.length||!this.isCellConnectable(t[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),t[0]))&&(n=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(t[0],n)&&!this.model.isAncestor(t[0],e))},mxGraph.prototype.getDropTarget=function(e,t,n){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(t),mxEvent.getClientY(t))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==n)n=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=n;)i=this.model.getParent(i);i==n&&(n=a)}for(;null!=n&&!this.isValidDropTarget(n,e,t)&&!this.model.isLayer(n);)n=this.model.getParent(n);return!this.model.isLayer(n)&&mxUtils.indexOf(e,n)<0?n: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,t,n){if(null!=(n=n||this.getDefaultParent()))for(var a=this.model.getChildCount(n),i=0;i<a;i++){var s=this.model.getChildAt(n,i),o=this.getSwimlaneAt(e,t,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,t)))return s}return null},mxGraph.prototype.getCellAt=function(e,t,n,a,i){if(a=null==a||a,i=null==i||i,null!=(n=null!=n?n:this.getDefaultParent()))for(var s=this.model.getChildCount(n)-1;0<=s;s--){var o=this.model.getChildAt(n,s),r=this.getCellAt(e,t,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,t)))return o}return null},mxGraph.prototype.intersects=function(e,t,n){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,t,n)<=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()),t=(i=mxUtils.getRotatedPoint(new mxPoint(t,n),a,i,s)).x,n=i.y),mxUtils.contains(e,t,n))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,t,n){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(t-=a.x,n-=a.y,0<e.width&&0<t&&t>e.width*i||0<e.height&&0<n&&n>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,t,n){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=t&&t,null!=n&&n),t=[],n=0;n<e.length;n++)this.isCellVisible(e[n])&&t.push(e[n]);return t},mxGraph.prototype.getConnections=function(e,t){return this.getEdges(e,t,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,t){return this.getEdges(e,t,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,t){return this.getEdges(e,t,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,t,n,a,i,s){n=null==n||n,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,n,a)))}for(o=o.concat(this.model.getEdges(e,n,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&&(n&&c==e&&(null==t||this.isValidAncestor(l,t,s))||a&&l==e&&(null==t||this.isValidAncestor(c,t,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,t,n){return n?this.model.isAncestor(t,e):this.model.getParent(e)==t},mxGraph.prototype.getOpposites=function(e,t,n,a){n=null==n||n,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==t&&null!=l&&l!=t&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==t&&null!=r&&r!=t&&n&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,t,n){n=null!=n&&n;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==t||!n&&o==t&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,t){var n=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=t?this.gridSize/2:0;return n.x=this.snap(n.x/a-i.x-s),n.y=this.snap(n.y/a-i.y-s),n},mxGraph.prototype.getCells=function(e,t,n,a,i,s){if(s=null!=s?s:[],0<n||0<a){var o=e+n,r=t+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>=t&&u.x+u.width<=o?s.push(c):this.getCells(e,t,n,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,t,n,a,i){var s=[];if((a||i)&&(null==n&&(n=this.getDefaultParent()),null!=n))for(var o=this.model.getChildCount(n),r=0;r<o;r++){var l=this.model.getChildAt(n,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=t)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,t,n){t=null!=t&&t,n=null!=n&&n;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,t?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(n&&0==m&&0<u||!n&&0==u&&0<m)&&a.push(d),r<(c=n?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,t,n,a,i){if(null!=n&&null!=e){t=null==t||t,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=n(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;t&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,t,n,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,t){var n=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(n,t),n},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,t,n){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&&!t||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&n?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(t=i.getIndex(a),e=e?(t++,this.model.getChildAt(i,t%s)):(t--,this.model.getChildAt(i,t<0?s-1:t)),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(t,n,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)&&t||this.model.isEdge(e)&&n)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,t){var n=this.isCellSelected(e);this.isToggleEvent(t)?n?this.removeSelectionCell(e):this.addSelectionCell(e):(!n||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,t){this.isToggleEvent(t)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var t=null;return null!=e&&(t=this.model.isEdge(e.cell)?(t=this.view.getEdgeStyle(e),this.isLoop(e)||t==mxEdgeStyle.ElbowConnector||t==mxEdgeStyle.SideToSide||t==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):t==mxEdgeStyle.SegmentConnector||t==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),t},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 t=0;t<this.mouseListeners.length;t++)if(this.mouseListeners[t]==e){this.mouseListeners.splice(t,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var t=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=t.x-this.panDx,e.graphY=t.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,t,n){if(null==n&&(n=this),this.updateMouseEvent(t),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-t.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-t.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(t.getEvent(),t.getCell()),t.getEvent().cancelBubble=!0):(this.lastTouchX=t.getX(),this.lastTouchY=t.getY(),this.lastTouchTime=a)}if(a=2!=t.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-t.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-t.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=t.getX(),this.lastMouseY=t.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||t.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(t.getGraphX(),t.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(n=[n,t],t.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,n):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,n):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,n)}e==mxEvent.MOUSE_UP&&this.click(t)}}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 t=e.view.graph.getModel().isEdge(e.cell),n=e.view.scale,a=null,i=this.image.width,s=this.image.height;return t?a=1==(t=e.absolutePoints).length%2?t[Math.floor(t.length/2)]:(e=t[(a=t.length/2)-1],t=t[a],new mxPoint(e.x+(t.x-e.x)/2,e.y+(t.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)*n),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*n),i*n,s*n)},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 t=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&t.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,t){!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 t=this.source.view.scale,n=new mxRectangle((n=this.source.getGraphBounds()).x/t+this.source.panDx,n.y/t+this.source.panDy,n.width/t,n.height/t),a=new mxRectangle(0,0,this.source.container.clientWidth/t,this.source.container.clientHeight/t);(s=n.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/t,s.width),t=Math.max(i.height/t,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/t))){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=(t=this.source.view.translate).x+this.source.panDx;var o=t.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),n.x<0&&(i-=n.x),n.y<0&&(o-=n.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);n=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((n.x-t.x-this.source.panDx)/o,(n.y-t.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,(n=this.selectionBorder.bounds).x==this.bounds.x&&n.y==this.bounds.y&&n.width==this.bounds.width&&n.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),n=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-n.width/2,this.bounds.y+this.bounds.height-n.height/2,n.width,n.height),n.x==a.x&&n.y==a.y&&n.width==a.width&&n.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,t){this.enabled&&this.showViewport&&(this.zoom=t.isSource(this.sizer),this.startX=t.getX(),this.startY=t.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),t.consume()},mxOutline.prototype.mouseMove=function(e,t){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var n=t.getX()-this.startX,a=t.getY()-this.startY,i=null;if(this.zoom)a=n/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+n),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+n,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),n=n/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-n-this.dx0,-a-this.dy0)}n=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-n.width/2,i.y+i.height-n.height/2,n.width,n.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),t.consume()}},mxOutline.prototype.mouseUp=function(e,t){if(this.active){var n=t.getX()-this.startX,a=t.getY()-this.startY;if(0<Math.abs(n)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-n*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),n/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-n,i.y-a));this.update(),t.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,t,n,a,i,s){var o="";return(this.source&&this.checkTerminal(e,n,t)||!this.source&&this.checkTerminal(e,a,t))&&(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,t,n,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,t,n,a){t=e.model.getValue(n),a=e.model.getValue(a),n=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){n=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,t,i[s])){n=this.validNeighborsAllowed;break}}return n},mxMultiplicity.prototype.checkTerminal=function(e,t,n){return t=e.model.getValue(t),this.checkType(e,t,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,t,n,a,i){return null!=t&&(isNaN(t.nodeType)?t==n:mxUtils.isNode(t,n,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 t=this.graph.getModel();t.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((t=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 t=this.getGraph().getModel();if(this.isBubbling())for(var n=t.getParents(e);0<n.length;)e=e.concat(n),n=t.getParents(n);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,t){if(null!=e&&null!=t)for(var n=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(t),mxEvent.getClientY(t)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],n.x,n.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var t=[],n={},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==n[o]&&(n[o]=i[s],t.push(i[s]))}}return t},mxLayoutManager.prototype.getCellsForChange=function(e){var t=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,t.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,t.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var t=this.getGraph().getModel();t.beginUpdate();try{for(var n=null,a=0;a<e.length;a++)e[a]!=t.getRoot()&&e[a]!=n&&(n=e[a],this.executeLayout(this.getLayout(n),n));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{t.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,t){null!=e&&null!=t&&e.execute(t)},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 t=this.graph.getModel();t.beginUpdate();try{for(var n=0;n<e.length;n++)if(!this.isCellIgnored(e[n])){this.cellResized(e[n]);break}}finally{t.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var t=this.getGraph(),n=t.getView(),a=t.getModel(),i=n.getState(e),s=n.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=n.translate,d=n.scale,c=(n=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+n-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,n,s,l,c,p,i,this.isExtendParents()&&t.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,t,n,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(-t,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,-n);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 t=this.getGraph(),n=t.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return t.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),n,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 t=this.graph.view.getState(e);return e=null!=t?t.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 t=this.getGraph().getModel();t.beginUpdate();try{for(var n=0;n<e.length;n++)this.isSwimlaneIgnored(e[n])||this.swimlaneAdded(e[n])}finally{t.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var t=this.getGraph().getModel(),n=t.getParent(e),a=t.getChildCount(n),i=null,s=0;s<a;s++){var o=t.getChildAt(n,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=t.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var t=this.getGraph().getModel();t.beginUpdate();try{for(var n=0;n<e.length;n++)if(!this.isSwimlaneIgnored(e[n])){var a=t.getGeometry(e[n]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[n];null!=s;){var o=s,r=(s=t.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{t.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,t,n){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!=n||!i&&r.width!=t)&&(r=r.clone(),i?r.height=n:r.width=t,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;t-=s.width,n-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,t,n)}}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,t,n,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(t,n),this.deltas[s]=o,this.count++):a?(o.X+=t,o.Y+=n):(o.X=t,o.Y=n),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var t,n=this.graph.getModel(),a=n.getRoot();for(t in this.deltas){var i=mxCellPath.resolve(a,t),s=this.graph.view.getState(i),o=this.deltas[t];i=this.graph.view.getState(n.getParent(i));this.translateState(i,s,o.x,o.y)}for(t in this.deltas)i=mxCellPath.resolve(a,t),s=this.graph.view.getState(i),o=this.deltas[t],i=this.graph.view.getState(n.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,t,n,a){if(null!=t){var i=this.graph.getModel();if(i.isVertex(t.cell)){t.invalid=!0,this.graph.view.validateBounds(e,t.cell),e=i.getGeometry(t.cell);var s=mxCellPath.create(t.cell);0==n&&0==a||null==e||e.relative&&null==this.deltas[s]||(t.x+=n,t.y+=a)}for(e=i.getChildCount(t.cell),s=0;s<e;s++)this.translateState(t,this.graph.view.getState(i.getChildAt(t.cell,s)),n,a)}},mxCellStatePreview.prototype.revalidateState=function(e,t,n,a,i){if(null!=t){t.invalid=!0,this.graph.view.validatePoints(e,t.cell);var s=mxCellPath.create(t.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(t.cell);for(0==n&&0==a||null==r||!r.relative||!o.isVertex(t.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(t.x+=n,t.y+=a,this.graph.cellRenderer.redraw(t)),null!=i&&i(t),e=o.getChildCount(t.cell),s=0;s<e;s++)this.revalidateState(t,this.graph.view.getState(o.getChildAt(t.cell,s)),n,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var t=this.graph.getModel(),n=t.getEdgeCount(e.cell),a=0;a<n;a++){var i=this.graph.view.getState(t.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,t){if(!t.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(t.getEvent())&&null!=t.getState()){var n=this.getInitialCellForEvent(t);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(n),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(n,t.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(n);this.graph.isCellMovable(n)&&(!a.isEdge(n)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(n,!0)||null==a.getTerminal(n,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(t.getEvent())&&this.graph.isCellsCloneable())&&this.start(n,t.getX(),t.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=t.getSource().nodeName?t.consume():mxClient.IS_SF&&"SELECT"==t.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),t=this.graph.getModel(),n=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&t.isVertex(e)&&null!=t.getGeometry(e)&&!t.getGeometry(e).relative});return this.graph.view.getCellStates(t.filterDescendants(n,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 t=null;if(null!=e&&0<e.length)for(var n=this.graph.getModel(),a=0;a<e.length;a++)if(n.isVertex(e[a])||n.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;n.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==t?t=new mxRectangle(s.x,s.y,s.width,s.height):t.add(s)}}return t},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,t,n){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,t,n),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 t=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/t)*t,e.y=this.graph.snap(e.y/t)*t,e},mxGraphHandler.prototype.mouseMove=function(e,t){var n=this.graph;if(!t.isConsumed()&&n.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(n.container,t.getX(),t.getY())).x-this.first.x,i=s.y-this.first.y,s=n.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=n.isGridEnabledEvent(t.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(t))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=n.getView().translate,l=n.getView().scale;o=this.bounds.x-(n.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(n.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(),n.isConstrainedEvent(t.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=t.getCell(),n.isDropEnabled()&&this.highlightEnabled&&(s=n.getDropTarget(this.cells,t.getEvent(),i)),o=s,r=n.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=n.isCloneEvent(t.getEvent())&&n.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=n.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&n.getModel().isVertex(i)&&n.isCellConnectable(i)&&(null!=(a=n.getView().getState(i))&&(n=null==n.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(n),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()}t.consume(),mxEvent.consume(t.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||t.isConsumed()||null==t.getState()||n.isMouseDown||(null==(a=n.getCursorForCell(t.getCell()))&&n.isEnabled()&&n.isCellMovable(t.getCell())&&(a=n.getModel().isEdge(t.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),t.getState().setCursor(a),t.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,t){if(!t.isConsumed()){var n=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=n.getView().scale,i=n.isCloneEvent(t.getEvent())&&n.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,t.getCell());this.connectOnDrop&&null==this.target&&null!=o&&n.getModel().isVertex(o)&&n.isCellConnectable(o)&&n.isEdgeValid(null,this.cell,o)?n.connectionHandler.connect(this.cell,o,t.getEvent()):(o=this.target,n.isSplitEnabled()&&n.isSplitTarget(o,this.cells,t.getEvent())?n.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,t.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(t)}this.cellWasClicked&&t.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,t,n){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());n=mxUtils.getRotatedPoint(n,t,a,i)}return null!=e&&!mxUtils.contains(e,n.x,n.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,t,n,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,t-this.graph.panDx/this.graph.view.scale,n-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 t=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(t)||mxEvent.isControlDown(t)&&mxEvent.isShiftDown(t)||this.usePopupTrigger&&mxEvent.isPopupTrigger(t)},mxPanningHandler.prototype.mouseDown=function(e,t){if(!t.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var n=mxUtils.convertPoint(this.graph.container,t.getX(),t.getY());this.triggerX=n.x,this.triggerY=n.y,this.popupTrigger=this.isPopupTrigger(t),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(t),this.startX=t.getX(),this.startY=t.getY(),this.panningTrigger&&this.consumePanningTrigger(t)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,t){var n=t.getX()-this.startX,a=t.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(n=this.graph.snap(n),a=this.graph.snap(a)),this.graph.panGraph(n+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",t)),t.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(n)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",t))}},mxPanningHandler.prototype.mouseUp=function(e,t){var n=Math.abs(t.getX()-this.startX),a=Math.abs(t.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){n=t.getX()-this.startX,a=t.getY()-this.startY,this.useGrid&&(n=this.graph.snap(n),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+n/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",t)),t.consume()}else this.popupTrigger&&n<this.graph.tolerance&&a<this.graph.tolerance&&(n=this.getCellForPopupEvent(t),this.graph.isEnabled()&&this.selectOnPopup&&null!=n&&!this.graph.isCellSelected(n)?this.graph.setSelectionCell(n):this.clearSelectionOnBackground&&null==n&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(t.getX()+a.x,t.getY()+a.y),this.popup(a.x+1,a.y+1,n,t.getEvent()),t.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,t){this.graph.getView().setTranslate(e,t)},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 t=null;if(this.isEnabled()){var n=null!=(t=this.getState(e))&&this.isValidState(t);e=this.getMarkerColor(e.getEvent(),t,n),this.validState=n?t:null,t==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=t&&null!=this.currentColor?(this.markedState=t,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return t},mxCellMarker.prototype.markCell=function(e,t){var n=this.graph.getView().getState(e);null!=n&&(this.currentColor=null!=t?t:this.validColor,this.markedState=n,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,t,n){return n?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var t=this.graph.getView();return cell=this.getCell(e),null!=(t=this.getStateToMark(t.getState(cell)))&&this.intersects(t,e)?t:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,t){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,t.getGraphX(),t.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,t){t.reset.apply(t)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var t=this.graph.getSelectionCells(),n=0;n<t.length;n++){var a=this.graph.view.getState(t[n]);if(null!=a){var i=e.remove(t[n]);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(t[n],i)}}e.visit(mxUtils.bind(this,function(e,t){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",t.state)),t.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,t){if(this.graph.isEnabled()&&this.isEnabled()){var n=[e,t];this.handlers.visit(function(e,t){t.mouseDown.apply(t,n)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,t){if(this.graph.isEnabled()&&this.isEnabled()){var n=[e,t];this.handlers.visit(function(e,t){t.mouseMove.apply(t,n)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,t){if(this.graph.isEnabled()&&this.isEnabled()){var n=[e,t];this.handlers.visit(function(e,t){t.mouseUp.apply(t,n)})}},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 t=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,t)}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,t){return t=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(t)?(null!=t?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,t),null!=this.error&&0==this.error.length&&(t=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(t)||(t=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),t):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,t,n){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,t){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,t,n,a){this.previous=e,this.first=new mxPoint(t,n),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,t){return this.isValidTarget(t)?this.graph.getEdgeValidationError(null,e,t):""},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 t=[],n=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);n.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(n.dialect=mxConstants.DIALECT_STRICTHTML,n.init(this.graph.container)):(n.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,n.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=n.node.previousSibling&&n.node.parentNode.insertBefore(n.node,n.node.parentNode.firstChild)),n.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=n,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(n.node,this.graph,a,i),t.push(n),this.redrawIcons(t,this.iconState),t},mxConnectionHandler.prototype.redrawIcons=function(e,t){if(null!=e&&null!=e[0]&&null!=t){var n=this.getIconPosition(e[0],t);e[0].bounds.x=n.x,e[0].bounds.y=n.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,t){var n=this.graph.getView().scale,a=t.getCenterX(),i=t.getCenterY();if(this.graph.isSwimlane(t.cell)){a=0!=(s=this.graph.getStartSize(t.cell)).width?t.x+s.width*n/2:a,i=0!=s.height?t.y+s.height*n/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(t.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(s);var s=Math.sin(s),o=new mxPoint(t.getCenterX(),t.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),n,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 t=0;t<e.length;t++)e[t].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,t){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!t.isConsumed()&&!this.isConnecting()&&this.isStartEvent(t)){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(t.getGraphX(),t.getGraphY()),this.edgeState=this.createEdgeState(t),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var n=this.graph.getPointForEvent(t.getEvent());this.edgeState.cell.geometry.setTerminalPoint(n,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),t.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=t.getX(),this.initialTouchY=t.getY();var a=this.graph.view.getState(this.marker.getCell(t));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(t,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,t){null!=t&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=t,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=t,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 t=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=t},mxConnectionHandler.prototype.convertWaypoint=function(e){var t=this.graph.getView().getScale(),n=this.graph.getView().getTranslate();e.x=e.x/t-n.x,e.y=e.y/t-n.y},mxConnectionHandler.prototype.mouseMove=function(e,t){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-t.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-t.getY())<this.tapAndHoldTolerance),t.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(t),null!=this.first){var n=this.graph.getView().scale,a=null,i=n=new mxPoint(this.graph.snap(t.getGraphX()/n)*n,this.graph.snap(t.getGraphY()/n)*n);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(t.getGraphX()+this.connectIconOffset.x,t.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,t))&&(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,t))&&(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(n.x-this.first.x),o=Math.abs(n.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(t)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(n=[s],null!=this.waypoints&&(n=n.concat(this.waypoints)),n.push(i),this.shape.points=n),this.drawPreview()),mxEvent.consume(t.getEvent()),t.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),t.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&t.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(n=!1,s=t.getSource(),i=0;i<this.icons.length&&!n;i++)n=s==this.icons[i].node||s.parentNode==this.icons[i].node;n||this.updateIcons(this.currentState,this.icons,t)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,t){var n=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))&&(n=i)}else n=new mxPoint(e.getCenterX(),e.getCenterY());return n},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,t,n){n=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&&(t=mxUtils.getRotatedPoint(new mxPoint(t.x,t.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,t,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),n=e)}else n=s;return n},mxConnectionHandler.prototype.updateIcons=function(e,t,n){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var t=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),n=Math.abs(t.x-this.first.x);t=Math.abs(t.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(n>this.graph.tolerance||t>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),n=this.graph.view.scale,t=new mxPoint(this.graph.snap(e.getGraphX()/n)*n,this.graph.snap(e.getGraphY()/n)*n),this.waypoints.push(t))},mxConnectionHandler.prototype.mouseUp=function(e,t){if(!t.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(t))return this.addWaypointForEvent(t),void t.consume();if(null==this.error){var n=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(n,a,t.getEvent(),t.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),t.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,t,n,a){if(null!=t||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==t&&this.isCreateTarget()&&null!=(t=this.createTargetVertex(n,e))){if(null!=(a=this.graph.getDropTarget([t],n,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(t);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(t,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=t&&i.getParent(e)==i.getParent(t)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=t.geometry&&t.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,t,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,t,!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==t&&((u=this.graph.getPointForEvent(n,!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",n,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,t)}},mxConnectionHandler.prototype.selectCells=function(e,t){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,t,n,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,t,n,a,i,s):(t=this.createEdge(n,a,i,s),this.graph.addEdge(t,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,t){for(var n=this.graph.getCellGeometry(t);null!=n&&n.relative;)t=this.graph.getModel().getParent(t),n=this.graph.getCellGeometry(t);var a=this.graph.cloneCells([t])[0];if(null!=(n=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(n.x=this.graph.snap(i.x-n.width/2)-this.graph.panDx/this.graph.view.scale,n.y=this.graph.snap(i.y-n.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(t);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?n.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(n.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,t,n,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(t,n,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,t,n){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,t){return!1},mxConstraintHandler.prototype.update=function(e,t){if(this.isEnabled()&&!this.isEventIgnored(e)){var n=this.getTolerance(),a=new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n),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(),t):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(n)}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],(n=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(n.width-=1,n.height-=1),null==this.focusHighlight?((n=new mxRectangleShape(n,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,n.init(this.graph.getView().getOverlayPane()),this.focusHighlight=n,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(n.node,this.graph,r)):(this.focusHighlight.bounds=n,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,t){if(!t.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(t.getEvent())||null==t.getState())){var n=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=n.x,a.y-=n.y,this.start(t.getX()+a.x,t.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 t=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=t.x,e.graphY=t.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)}t.consume(!1)}},mxRubberband.prototype.start=function(e,t){this.first=new mxPoint(e,t)},mxRubberband.prototype.mouseMove=function(e,t){if(!t.isConsumed()&&null!=this.first){var n=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);n.x-=a.x,n.y-=a.y;a=t.getX()+n.x,n=t.getY()+n.y;var i=this.first.x-a,s=this.first.y-n,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,n),t.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,t){var n=null!=this.div;this.reset(),n&&(n=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(n,t.getEvent()),t.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,t){this.currentX=e,this.currentY=t,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,t=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,t),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,t)-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 t=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",t++)),this.sizers.push(this.createSizer("n-resize",t++)),this.sizers.push(this.createSizer("ne-resize",t++)),this.sizers.push(this.createSizer("w-resize",t++)),this.sizers.push(this.createSizer("e-resize",t++)),this.sizers.push(this.createSizer("sw-resize",t++)),this.sizers.push(this.createSizer("s-resize",t++))),this.sizers.push(this.createSizer("se-resize",t++))),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,t,n,a){return n=new mxRectangle(0,0,n=n||mxConstants.HANDLE_SIZE,n),(a=this.createSizerShape(n,t,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(t)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,t,n){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):t==mxEvent.ROTATION_HANDLE?new mxEllipse(e,n||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,n||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,t,n){null!=e&&(e.bounds.x=Math.round(t-e.bounds.width/2),e.bounds.y=Math.round(n-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 t=this.tolerance,n=(t=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<t)?new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t):null,0);n<this.sizers.length;n++)if(e.isSource(this.sizers[n])||null!=t&&mxUtils.intersects(this.sizers[n].bounds,t))return n;return null},mxVertexHandler.prototype.mouseDown=function(e,t){if(!t.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(t.getEvent())&&(0<this.tolerance||t.getState()==this.state)){var n=this.getHandleForEvent(t);null!=n&&(this.start(t.getX(),t.getY(),n),t.consume())}},mxVertexHandler.prototype.start=function(e,t,n){e=mxUtils.convertPoint(this.graph.container,e,t),this.startX=e.x,this.startY=e.y,this.index=n,this.selectionBorder.node.style.display=n==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,t){if(t.isConsumed()||null==this.index)null!=this.getHandleForEvent(t)&&t.consume(!1);else{var n=new mxPoint(t.getGraphX(),t.getGraphY()),a=this.graph.isGridEnabledEvent(t.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(n.x=this.graph.snap(n.x/i)*i,n.y=this.graph.snap(n.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],n.x,n.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-n.x,o=this.state.y+this.state.height/2-n.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=n.x-this.state.getCenterX(),o=n.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=n.x-this.startX,o=n.y-this.startY,n=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,n),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()}t.consume()}},mxVertexHandler.prototype.mouseUp=function(e,t){if(!t.isConsumed()&&null!=this.index&&null!=this.state){var n=new mxPoint(t.getGraphX(),t.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(t.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(n=o*(r=n.x-this.startX)+s*(l=n.y-this.startY),s*r-o*l),l=n,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),t.consume()}},mxVertexHandler.prototype.rotateCell=function(e,t){var n=this.graph.getModel();if(n.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)+t,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=t){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(t),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,n.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,n.setGeometry(e,s);for(s=n.getChildCount(e),a=0;a<s;a++)this.rotateCell(n.getChildAt(e,a),t)}},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,t,n,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,t=(this.labelShape.bounds.getCenterX()-this.startX)/a,n=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(t,n):(s.offset.x+=t,s.offset.y+=n),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,t,n,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){t=a.getCenterX()-s.getCenterX(),n=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*t-o*n-t;t=o*t+i*n-n,n=a.x-s.x;var l=a.y-s.y,d=i*n-o*l;i=o*n+i*l,a.x+=r,a.y+=t,this.graph.isCellCollapsed(e)||0==r&&0==t||(n=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,n,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,t,n){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+=t,r.y+=n,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,t,n,a,i,s,o){if(this.singleSizer){o=e.x+e.width+t;var r=e.y+e.height+n;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+=n,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=n,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=t,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=t,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 t=e.x+e.width,n=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],t,n);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=t,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=t,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=n,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=n,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=t,l.y=n,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 t=this.state.cell;if(null!=this.index){var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));t=this.graph.getCellAt(n.x,n.y);this.graph.isSwimlane(t)&&this.graph.hitsSwimlaneContent(t,n.x,n.y)&&(t=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(t)))}),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 t=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(t))return null;var n=a.graph.getModel();return(t==a.state.cell||null!=t&&!a.graph.connectableEdges&&n.isEdge(t))&&(t=null),t},e.isValidState=function(e){var t=a.graph.getModel();t=null!=(t=a.graph.view.getTerminalPort(e,a.graph.view.getState(t.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?t.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:t,a.isSource?t:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,t){return this.graph.getEdgeValidationError(this.state.cell,e,t)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,t=[],n=0;n<this.abspoints.length;n++)if(this.isHandleVisible(n)){var a=n==this.abspoints.length-1;if((a=0==n||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(n);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(n))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);t.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return t},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 t=this.tolerance,n=(t=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<t)?new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t):null,0);n<this.bends.length;n++)if((e.isSource(this.bends[n])||null!=t&&mxUtils.intersects(this.bends[n].bounds,t))&&"hidden"!=this.bends[n].node.style.visibility)return n;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,t){var n=null;null!=(n=this.getHandleForEvent(t))&&!t.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(t.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(t.getEvent())?this.removePoint(this.state,n):(n!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(t.getCell()))&&this.start(t.getX(),t.getY(),n),t.consume())},mxEdgeHandler.prototype.start=function(e,t,n){this.startX=e,this.startY=t,this.isSource=null!=this.bends&&0==n,this.isTarget=null!=this.bends&&n==this.bends.length-1,this.isLabel=n==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(t=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=t&&this.graph.isCellDisconnectable(e,t,this.isSource))&&(this.index=n)):this.index=n},mxEdgeHandler.prototype.clonePreviewState=function(e,t){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var n=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),t=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var t=e.x;Math.abs(n.x-t)<a&&(n.x=t,i=!0),e=e.y,Math.abs(n.y-e)<a&&(n.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(t.getRoutingCenterX(e),t.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=t.scale,r=t.translate,i||(n.x=(this.graph.snap(n.x/e-r.x)+r.x)*e),s||(n.y=(this.graph.snap(n.y/e-r.y)+r.y)*e)),n},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var t=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?t=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(t=this.constraintHandler.currentFocus),t},mxEdgeHandler.prototype.getPreviewPoints=function(e){var t=null!=(t=this.graph.getCellGeometry(this.state.cell)).points?t.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(t=null):(this.convertPoint(e,!1),null==t?t=[e]:t[this.index-1]=e),t},mxEdgeHandler.prototype.updatePreviewState=function(e,t,n){var a=this.isSource?n:this.state.getVisibleTerminalState(!0),i=this.isTarget?n: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==n&&(e.setAbsoluteTerminalPoint(t,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,t){if(null!=this.index&&null!=this.marker){var n=this.getPointForEvent(t);if(this.isLabel)this.label.x=n.x,this.label.y=n.y;else{this.points=this.getPreviewPoints(n);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(t):null,i=this.clonePreviewState(n,null!=a?a.cell:null);this.updatePreviewState(i,n,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(t.getEvent()),t.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(t)&&t.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,t){if(null!=this.index&&null!=this.marker){var n=this.state.cell;if(t.getX()!=this.startX||t.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)n=this.connect(n,a,this.isSource,this.graph.isCloneEvent(t.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),t);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(n));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(n,a,this.isSource)}}else this.active?this.changePoints(n,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),n!=this.state.cell&&this.graph.setSelectionCell(n)),t.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,t){var n=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return t&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/n-a.x),e.y=Math.round(e.y/n-a.y),null!=(n=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=n.origin.x,e.y-=n.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,t,n){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,t,n);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((t-s.x)/o,(n-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,t,n,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,!n);this.graph.connectCell(o,r,!n),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,t,n,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,t,n){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(t,n),a.setGeometry(e,i),this.graph.connectCell(e,null,n,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,t){var n=this.graph.getModel(),a=n.getGeometry(e);null!=a&&((a=a.clone()).points=t,n.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,t){var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),a=this.graph.isGridEnabledEvent(t);this.convertPoint(n,a),this.addPointAt(e,n.x,n.y),mxEvent.consume(t)},mxEdgeHandler.prototype.addPointAt=function(e,t,n){var a=this.graph.getCellGeometry(e.cell);if(t=new mxPoint(t,n),null!=a){a=a.clone(),n=this.graph.view.translate;var i=this.graph.view.scale;n=mxUtils.findNearestSegment(e,(t.x+n.x)*i,(t.y+n.y)*i),null==a.points?a.points=[t]:a.points.splice(n,0,t),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,t){if(0<t&&t<this.abspoints.length-1){var n=this.graph.getCellGeometry(this.state.cell);null!=n&&null!=n.points&&((n=n.clone()).points.splice(t-1,1),this.graph.getModel().setGeometry(e.cell,n),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var t=this.state.cell,n=this.graph.getModel().getTerminal(t,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=n&&!this.graph.isCellDisconnectable(t,n,e)||null==n&&!this.graph.isTerminalPointMovable(t,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=n&&this.graph.isCellDisconnectable(t,n,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,t=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-t/2),Math.round(this.label.y-t/2),t,t),this.labelShape.redraw(),null!=(t=this.graph.getLabel(e))&&0<t.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 n=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);t=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-t.width/2),Math.round(a-t.height/2),t.width,t.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[n];var i=this.abspoints[n].x,s=(n=this.abspoints[n].y,this.bends.length-1);t=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-t.width/2),Math.round(n-t.height/2),t.width,t.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,t){var n=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=n){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]=n[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=[],t=this.createHandleShape(0);return this.initBend(t),t.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(t.node,this.graph,this.state),e.push(t),mxClient.IS_TOUCH&&t.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),t=this.createHandleShape(2),this.initBend(t),t.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(t.node,this.graph,this.state),e.push(t),mxClient.IS_TOUCH&&t.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var t=this.getCursorForBend();return e.node.style.cursor=t,t=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,t),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 t=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(t=this.doubleClickOrientationResource,t=mxResources.get(t)||t),t},mxElbowEdgeHandler.prototype.convertPoint=function(e,t){var n=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;t&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/n-a.x-i.x),e.y=Math.round(e.y/n-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,t){var n=null==(n=null!=(n=this.graph.getModel().getGeometry(this.state.cell).points)?n[0]:null)?new mxPoint(e.x+(t.x-e.x)/2,e.y+(t.y-e.y)/2):new mxPoint(this.graph.getView().scale*(n.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(n.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(n.x-a/2),Math.round(n.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(n.x-a/2),Math.round(n.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 t=this.state.absolutePoints,n=t[0].clone();this.convertPoint(n,!1);for(var a=[],i=1;i<t.length;i++){var s=t[i].clone();this.convertPoint(s,!1),i==this.index&&(n.x==s.x?(n.x=e.x,s.x=e.x):(n.y=e.y,s.y=e.y)),i<t.length-1&&a.push(s),n=s}if(1==a.length){if(n=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)?t[1].y==t[2].y?a[0].y=n.getRoutingCenterY(i)-r:a[0].x=n.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(t[1].y==t[0].y?a[0].y=n.getRoutingCenterY(s)-r:a[0].x=n.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],t=this.createHandleShape(0);this.initBend(t),t.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(t.node,this.graph,this.state),e.push(t),mxClient.IS_TOUCH&&t.node.setAttribute("pointer-events","none");var n=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<n.length-1;a++)t=this.createVirtualBend(),e.push(t),t.node.style.cursor=0==n[a].x-n[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&t.node.setAttribute("pointer-events","none")}return t=this.createHandleShape(n.length),this.initBend(t),t.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(t.node,this.graph,this.state),e.push(t),mxClient.IS_TOUCH&&t.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,t){if(this.graph.isCellBendable(this.state.cell)){var n=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],t=a[i+1];var s=new mxPoint(e.x+(t.x-e.x)/2,e.y+(t.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-n/2),Math.round(s.y-n/2),n,n),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,t){t=[];var n=this.abspoints;if(1<n.length)for(var a=n[0],i=n[1],s=2;s<n.length;s++){var o=n[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),t.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,t){this.normalKeys[e]=t},mxKeyHandler.prototype.bindShiftKey=function(e,t){this.shiftKeys[e]=t},mxKeyHandler.prototype.bindControlKey=function(e,t){this.controlKeys[e]=t},mxKeyHandler.prototype.bindControlShiftKey=function(e,t){this.controlShiftKeys[e]=t},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 t=this.getFunction(e);null!=t&&(t(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,t){this.reset(t,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,t){t.getX()==this.lastX&&t.getY()==this.lastY||(this.reset(t,!0),(this.isHideOnHover()||t.getState()!=this.state||t.getSource()!=this.node&&(!this.stateSource||null!=t.getState()&&this.stateSource==(t.isSource(t.getState().shape)||!t.isSource(t.getState().text))))&&this.hideTooltip()),this.lastX=t.getX(),this.lastY=t.getY()},mxTooltipHandler.prototype.mouseUp=function(e,t){this.reset(t,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,t){if(this.resetTimer(),t&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var n=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(n.shape)||e.isSource(n.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(n,a,i,s);this.show(e,i,s),this.state=n,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,t,n){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=t+a.x+"px",this.div.style.top=n+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,t){},mxCellTracker.prototype.mouseMove=function(e,t){this.isEnabled()&&this.process(t)},mxCellTracker.prototype.mouseUp=function(e,t){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,t,n){var a=mxUtils.bind(this,function(){this.editor.execute(t)});n?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,t,n,a){if(null!=this.config){var i=this.createConditions(e,n,a);this.addItems(e,t,n,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,t,n,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&&(t.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(t,e,l,m,d,c,n,o,u),this.addItems(e,t,n,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,t,n,a,i,s,o,r,l){return e.addItem(n,a,function(e){"function"==typeof i&&i.call(t,t,o,e),null!=s&&t.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,t,n){var a=e.graph.getModel(),i=a.getChildCount(t),s=[];for(s.nocell=null==t,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=t,a=null!=t&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(t,!1),s.collapsable=a&&e.graph.isCellFoldable(t,!0),s.validRoot=a&&e.graph.isValidRoot(t),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(t),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,t,n))}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,t){var n=t.getProperty("function");this.editor.insertFunction=null!=n?mxUtils.bind(this,function(){n.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,t,n,a){var i=mxUtils.bind(this,function(){null!=n&&0<n.length&&this.editor.execute(n)});return this.toolbar.addItem(e,t,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,t,n){var a=mxUtils.bind(this,function(){this.editor.execute(n)});this.addOption(e,t,a)},mxDefaultToolbar.prototype.addOption=function(e,t,n){return this.toolbar.addOption(e,t,n)},mxDefaultToolbar.prototype.addMode=function(e,t,n,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(n),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,t,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,t,n,a,i,s){var o=function(){return"function"==typeof n?n():null!=n?n.clone():null},r=mxUtils.bind(this,function(e,t){"function"==typeof i?i(this.editor,o(),e,t):this.drop(o(),e,t),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,t,r,a,null,s),this.installDropHandler(e,function(e,t,n){r(t,n)}),e},mxDefaultToolbar.prototype.drop=function(e,t,n){var a=this.editor.graph,i=a.getModel();if(null!=n&&!i.isEdge(n)&&this.connectOnDrop&&a.isCellConnectable(n))this.connect(e,t,n);else{for(;null!=n&&!a.isValidDropTarget(n,[e],t);)n=i.getParent(n);this.insert(e,t,n)}},mxDefaultToolbar.prototype.insert=function(e,t,n){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(t),s=mxEvent.getClientY(t);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(n,[e],t)?a.splitEdge(n,[e],null,i.x,i.y):this.editor.addVertex(n,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,t,n){var a=(t=this.editor.graph).getModel();if(null!=n&&t.isCellConnectable(e)&&t.isEdgeValid(null,n,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(n),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*t.gridSize,l=20*a.getDirectedEdgeCount(n,!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(n);if(t.addCell(e,d),t.constrainChild(e),i=this.editor.createEdge(n,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}t.addEdge(i,d,n,e)}finally{a.endUpdate()}t.setSelectionCells([e,i]),t.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(t,n){var a=document.createElement("img");a.setAttribute("src",t.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*t.offsetWidth+"px",a.style.height=2*t.offsetHeight+"px",mxUtils.makeDraggable(t,this.editor.graph,n,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 t=e.getUrlImage();if(null==t||mxClient.IS_LOCAL)e.execute("show");else{var n=mxUtils.getViewXml(e.graph,1);n=mxUtils.getXml(n,"\n");mxUtils.submit(t,e.postParameterName+"="+encodeURIComponent(n),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,t){e.showProperties(t)}),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,t){e.graph.isEnabled()&&e.graph.isCellEditable(t)&&e.graph.startEditingAtCell(t)}),this.addAction("toBack",function(e,t){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,t){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,t){e.graph.enterGroup(t)}),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 t=e.graph.getChildVertices();e.graph.foldCells(!0,!1,t)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var t=e.graph.getChildVertices();e.graph.foldCells(!1,!1,t)}}),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 t=100*e.graph.getView().scale;t=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,t))/100;isNaN(t)||e.graph.getView().setScale(t)}),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,t){this.actions[e]=t},mxEditor.prototype.execute=function(t,e,n){var a=this.actions[t];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+t+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+t,280,!0)},mxEditor.prototype.addTemplate=function(e,t){this.templates[e]=t},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,t,n){return this.createPopupMenu(e,t,n)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,t){return this.createEdge(e,t)}),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 t=null,n=i.graph.getModel();return null!=n.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),t=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==n.getParent(n.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),t=i.diagramLayout)),t},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,t){var n=t.getProperty("cell");null!=n&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,n),t.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,t){var n=t.getProperty("edit");this.undoManager.undoableEditHappened(n)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,t){var n=t.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(n))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var t=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,t),e.getView().addListener(mxEvent.UP,t)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,t){this.setModified(!0),1==this.validating&&s.validateGraph();for(var n=t.getProperty("edit").changes,a=0;a<n.length;a++){var i=n[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 n=this;e.addMouseListener({mouseDown:function(e,t){null==n.insertFunction||t.isPopupTrigger()||!n.forcedInserting&&null!=t.getState()||(n.graph.clearSelection(),n.insertFunction(t.getEvent(),t.getCell()),this.isActive=!0,t.consume())},mouseMove:function(e,t){this.isActive&&t.consume()},mouseUp:function(e,t){this.isActive&&(this.isActive=!1,t.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,t=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return t.isVertexIgnored=function(e){return!t.graph.isSwimlane(e)},t},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(t){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){t.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(t)},mxEditor.prototype.treeLayout=function(e,t){null!=e&&new mxCompactTreeLayout(this.graph,t).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",t=this.graph,n=t.getCurrentRoot();null!=n&&null!=t.getModel().getParent(t.getModel().getParent(n));)t.isValidRoot(n)&&(e=" > "+t.convertValueToString(n)+e),n=t.getModel().getParent(n);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 t=mxUtils.load(e).getXml();this.readGraphModel(t.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,t){if(null!=(e=e||this.getUrlPost())&&0<e.length){var n=this.writeGraphModel(t);this.postDiagram(e,n),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(t,n){this.escapePostData&&(n=encodeURIComponent(n)),mxUtils.post(t,this.postParameterName+"="+n,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",t,"data",n))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var t=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(t,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,t,n,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,t,n)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,t){null!=t.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,t){var n=this.graph.getStylesheet().styles[t];this.graph.getView().getStylesheet().putCellStyle(t,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,n),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 t=(n=mxUtils.getOffset(this.graph.container)).x+10,n=n.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(t+=a.x+Math.min(200,a.width),n+=a.y)}else t=this.properties.getX(),n=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,t,n,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(n){var a=this.graph.getModel(),e=a.getValue(n);if(mxUtils.isNode(e)){var t=new mxForm("properties");t.addText("ID",n.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(n)&&(null!=(i=a.getGeometry(n))&&(s=t.addText("top",i.y),o=t.addText("left",i.x),r=t.addText("width",i.width),l=t.addText("height",i.height)));var d=a.getStyle(n),c=t.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=t.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(n,i)),0<c.value.length?a.setStyle(n,c.value):a.setStyle(n,null);for(var e=0;e<m.length;e++){var t=new mxCellAttributeChange(n,m[e].nodeName,u[e].value);a.execute(t)}this.graph.isAutoSizeCell(n)&&this.graph.updateCellSize(n)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),t.addButtons(e,d),t.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 t=document.createElement("div");t.style.padding="4px",t.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,t,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var n=mxUtils.bind(this,function(e){mxEvent.release(t),t.innerHTML="",this.createTasks(t)});this.graph.getModel().addListener(mxEvent.CHANGE,n),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,n),this.graph.addListener(mxEvent.ROOT,n),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(t)}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 t=document.createElement("iframe");t.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),t.setAttribute("height","100%"),t.setAttribute("width","100%"),t.setAttribute("frameBorder","0"),t.style.backgroundColor="white",e=document.body.clientWidth;var n=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,t,(e-this.helpWidth)/2,(n-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){t.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 t=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),n=new mxOutline(this.graph,e);t.setClosable(!0),t.setResizable(!0),t.destroyOnClose=!1,t.addListener(mxEvent.RESIZE_END,function(){n.update()}),this.outline=t,this.outline.outline=n}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,t,n){this.popupHandler.createMenu(this,e,t,n)},mxEditor.prototype.createEdge=function(e,t){var n=null;if(null!=this.defaultEdge)n=this.graph.getModel().cloneCell(this.defaultEdge);else{(n=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,n.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&n.setStyle(a),n},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 t=this.consumeCycleAttribute(e);null!=t&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+t)}},mxEditor.prototype.addVertex=function(e,t,n,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(n,a);var s=this.graph.getView().scale,o=i.getGeometry(t),r=i.getGeometry(e);if(this.graph.isSwimlane(t)&&!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(n-=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<n+r&&(n-=n+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(n-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(n/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),t.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(t),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",t,"parent",e)),i.beginUpdate();try{null!=(t=this.graph.addCell(t,e))&&(this.graph.constrainChild(t),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",t)))}finally{i.endUpdate()}return null!=t&&(this.graph.setSelectionCell(t),this.graph.scrollCellToVisible(t),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",t))),t},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 t=e.getName();mxCodecRegistry.codecs[t]=e;var n=mxUtils.getFunctionName(e.template.constructor);n!=t&&mxCodecRegistry.addAlias(n,t)}return e},addAlias:function(e,t){mxCodecRegistry.aliases[e]=t},getCodec:function(e){var t=null;if(null!=e){t=mxUtils.getFunctionName(e);var n=mxCodecRegistry.aliases[t];if(null!=n&&(t=n),null==(t=mxCodecRegistry.codecs[t]))try{t=new mxObjectCodec(new e),mxCodecRegistry.register(t)}catch(e){}}return t}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,t,n,a){for(var i in this.template=e,this.exclude=null!=t?t:[],this.idrefs=null!=n?n:[],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,t){return this.objects[e]=t},mxCodec.prototype.getObject=function(e){var t=null;return null!=e&&(null==(t=this.objects[e])&&(null==(t=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(t=this.decode(e))))),t},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,t){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=t?t:"id",e)},mxCodec.prototype.getId=function(e){var t=null;return null!=e&&(null==(t=this.reference(e))&&e instanceof mxCell&&(null==(t=e.getId())&&(0==(t=mxCellPath.create(e)).length&&(t="root")))),t},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var t=null;if(null!=e&&null!=e.constructor){var n=mxCodecRegistry.getCodec(e.constructor);null!=n?t=n.encode(this,e):mxUtils.isNode(e)?t=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return t},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,t,n){if(t.appendChild(this.encode(e)),null==n||n){n=e.getChildCount();for(var a=0;a<n;a++)this.encodeCell(e.getChildAt(a),t)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,t){t=null==t||t;var n=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(n=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(n))for(var a=e.firstChild;null!=a&&!this.isCellCodec(n);)n=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(n)||(n=mxCodecRegistry.getCodec(mxCell)),n=n.decode(this,e),t&&this.insertIntoGraph(n)}return n},mxCodec.prototype.insertIntoGraph=function(e){var t=e.parent,n=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=t&&t.insert(e),null!=n&&n.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,t,n){null!=t&&null!=n&&e.setAttribute(t,n)},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 t=this.reverse[e];null!=t&&(e=t)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var t=this.mapping[e];null!=t&&(e=t)}return e},mxObjectCodec.prototype.isExcluded=function(e,t,n,a){return t==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,t)},mxObjectCodec.prototype.isReference=function(e,t,n,a){return 0<=mxUtils.indexOf(this.idrefs,t)},mxObjectCodec.prototype.encode=function(e,t){var n=e.document.createElement(this.getName());return t=this.beforeEncode(e,t,n),this.encodeObject(e,t,n),this.afterEncode(e,t,n)},mxObjectCodec.prototype.encodeObject=function(e,t,n){for(var a in e.setAttribute(n,"id",e.getId(t)),t){var i=a,s=t[i];null!=s&&!this.isExcluded(t,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,t,i,s,n))}},mxObjectCodec.prototype.encodeValue=function(e,t,n,a,i){if(null!=a){if(this.isReference(t,n,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+n+"="+a);a=s}s=this.template[n],(null==n||e.encodeDefaults||s!=a)&&(n=this.getAttributeName(n),this.writeAttribute(e,t,n,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,t,n,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,t,n,a,i):this.writeComplexAttribute(e,t,n,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,t,n,a,i){a=this.convertValueToXml(a),null==n?(t=e.document.createElement("add"),"function"==typeof a?t.appendChild(e.document.createTextNode(a)):e.setAttribute(t,"value",a),i.appendChild(t)):"function"!=typeof a&&e.setAttribute(i,n,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,t,n,a,i){null!=(e=e.encode(a))?(null!=n&&e.setAttribute("as",n),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+n+": "+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,t,n){return t},mxObjectCodec.prototype.afterEncode=function(e,t,n){return n},mxObjectCodec.prototype.decode=function(e,t,n){var a=t.getAttribute("id"),i=e.objects[a];return null==i&&(i=n||this.cloneTemplate(),null!=a&&e.putObject(a,i)),t=this.beforeDecode(e,t,i),this.decodeNode(e,t,i),this.afterDecode(e,t,i)},mxObjectCodec.prototype.decodeNode=function(e,t,n){null!=t&&(this.decodeAttributes(e,t,n),this.decodeChildren(e,t,n))},mxObjectCodec.prototype.decodeAttributes=function(e,t,n){if(null!=(t=t.attributes))for(var a=0;a<t.length;a++)this.decodeAttribute(e,t[a],n)},mxObjectCodec.prototype.decodeAttribute=function(e,t,n){var a=t.nodeName;if("as"!=a&&"id"!=a){t="value"==a?t.nodeValue:this.convertValueFromXml(t.nodeValue);var i=this.getFieldName(a);if(this.isReference(n,i,t,!1)){if(null==(e=e.getObject(t)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+t);t=e}this.isExcluded(n,a,t,!1)||(n[a]=t)}},mxObjectCodec.prototype.decodeChildren=function(e,t,n){for(t=t.firstChild;null!=t;){var a=t.nextSibling;t.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,t,n)&&this.decodeChild(e,t,n),t=a}},mxObjectCodec.prototype.decodeChild=function(e,t,n){var a=this.getFieldName(t.getAttribute("as"));if(null==a||!this.isExcluded(n,a,t,!1)){var i=this.getFieldTemplate(n,a,t),s=null;"add"==t.nodeName?null==(s=t.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(t))):s=e.decode(t,i),this.addObjectValue(n,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,t,n){return(e=e[t])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,t,n,a){null!=n&&n!=a&&(null!=t&&0<t.length?e[t]=n:e.push(n))},mxObjectCodec.prototype.processInclude=function(e,t,n){if("include"!=t.nodeName)return!1;if(null!=(t=t.getAttribute("name")))try{var a=mxUtils.load(t).getDocumentElement();null!=a&&e.decode(a,n)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,t,n){return t},mxObjectCodec.prototype.afterDecode=function(e,t,n){return n},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,t,n,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==t&&n.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,t,n){if(null!=t.value&&t.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=n;(n=mxClient.IS_IE?t.value.cloneNode(!0):e.document.importNode(t.value,!0)).appendChild(a),e=a.getAttribute("id"),n.setAttribute("id",e),a.removeAttribute("id")}return n},e.beforeDecode=function(e,t,n){var a=t,i=this.getName();if(t.nodeName!=i?(null!=(a=t.getElementsByTagName(i)[0])&&a.parentNode==t?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,n.value=t.cloneNode(!0),null!=(t=n.value.getAttribute("id"))&&(n.setId(t),n.value.removeAttribute("id"))):n.setId(t.getAttribute("id")),null!=a)for(t=0;t<this.idrefs.length;t++){i=this.idrefs[t];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))),n[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,t,n){var a=e.document.createElement("root");e.encodeCell(t.getRoot(),a),n.appendChild(a)},e.decodeChild=function(e,t,n){"root"==t.nodeName?this.decodeRoot(e,t,n):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,t,n){var a=null;for(t=t.firstChild;null!=t;){var i=e.decodeCell(t);null!=i&&null==i.getParent()&&(a=i),t=t.nextSibling}null!=a&&n.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,t,n){return e.encodeCell(t.root,n),n},e.beforeDecode=function(e,t,n){if(null!=t.firstChild&&t.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(t=t.cloneNode(!0)).firstChild;for(n.root=e.decodeCell(a,!1),n=a.nextSibling,a.parentNode.removeChild(a),a=n;null!=a;)n=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=n}return t},e.afterDecode=function(e,t,n){return n.previous=n.root,n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,t,n,a){return!("child"!=t||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,t)},e.afterEncode=function(e,t,n){return this.isReference(t,"child",t.child,!0)?n.setAttribute("child",e.getId(t.child)):e.encodeCell(t.child,n),n},e.beforeDecode=function(e,t,n){if(null!=t.firstChild&&t.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(t=t.cloneNode(!0)).firstChild;for(n.child=e.decodeCell(a,!1),n=a.nextSibling,a.parentNode.removeChild(a),a=n;null!=a;){if(n=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=n}}else a=t.getAttribute("child"),n.child=e.getObject(a);return t},e.afterDecode=function(e,t,n){return n.child.parent=n.previous,n.previous=n.parent,n.previousIndex=n.index,n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,t,n){return n.previous=n.terminal,n},e}());var mxGenericChangeCodec=function(e,a){var t=new mxObjectCodec(e,["model","previous"],["cell"]);return t.afterDecode=function(e,t,n){return mxUtils.isNode(n.cell)&&(n.cell=e.decodeCell(n.cell,!1)),n.previous=n[a],n},t};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,t){return this.encodeCell(e,t,t.graph.getModel().getRoot())},e.encodeCell=function(e,t,n){var a=t.graph.getModel(),i=t.getState(n),s=a.getParent(n);if(null==s||null!=i){var o=a.getChildCount(n),r=t.graph.getCellGeometry(n),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(n)?l="edge":0<o&&null!=r?l="group":a.isVertex(n)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=t.graph.getLabel(n)&&(d.setAttribute("label",t.graph.getLabel(n)),t.graph.isHtmlLabel(n)&&d.setAttribute("html",!0)),null==s){var c=t.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",t.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,t,a.getChildAt(n,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,t){var n,a=e.document.createElement(this.getName());for(n in t.styles){var i=t.styles[n],s=e.document.createElement("add");if(null!=n){for(var o in s.setAttribute("as",n),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,t){var n=typeof t;return"function"==n?t=mxStyleRegistry.getName(style[j]):"object"==n&&(t=null),t},e.decode=function(e,t,n){n=n||new this.template.constructor;var a=t.getAttribute("id");for(null!=a&&(e.objects[a]=n),t=t.firstChild;null!=t;){if(!this.processInclude(e,t,n)&&"add"==t.nodeName&&null!=(a=t.getAttribute("as"))){var i=t.getAttribute("extend"),s=null!=i?mxUtils.clone(n.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=t.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}n.putCellStyle(a,s)}t=t.nextSibling}return n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,t){return null},e.decode=function(e,t,n){if(null!=n)for(t=t.firstChild;null!=t;){if(!this.processInclude(e,t,n)&&"add"==t.nodeName){var a=t.getAttribute("as"),i=t.getAttribute("action"),s=t.getAttribute("control");n.bindAction(a,i,s)}t=t.nextSibling}return n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,t){return null},e.decode=function(e,t,n){if(null!=n){var a=n.editor;for(t=t.firstChild;null!=t;){if(t.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,t,n))if("separator"==t.nodeName)n.addSeparator();else if("br"==t.nodeName)n.toolbar.addBreak();else if("hr"==t.nodeName)n.toolbar.addLine();else if("add"==t.nodeName){var i=t.getAttribute("as"),s=(i=mxResources.get(i)||i,t.getAttribute("icon")),o=t.getAttribute("pressedIcon"),r=t.getAttribute("action"),l=t.getAttribute("mode"),d=t.getAttribute("template"),c="0"!=t.getAttribute("toggle"),m=mxUtils.getTextContent(t),u=null;if(null!=r)u=n.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=n.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=t.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=n.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(t)).length)if(null==s)for(d=n.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?n.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),n.addActionOption(d,s,c));else{var g=null,v=n.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),t=g.options[g.selectedIndex].cellStyle;return null!=t&&e.setStyle(t),e},null,null,c);g=n.addCombo();for(mxEvent.addListener(g,"change",function(){n.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)}),n.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?n.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),n.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=t.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}t=t.nextSibling}}return n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,t){return null},e.decode=function(e,t,n){var a=t.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,n):null!=n&&(n.config=t),n},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,t,n){return null!=(e=t.getAttribute("defaultEdge"))&&(t.removeAttribute("defaultEdge"),n.defaultEdge=n.templates[e]),null!=(e=t.getAttribute("defaultGroup"))&&(t.removeAttribute("defaultGroup"),n.defaultGroup=n.templates[e]),n},e.decodeChild=function(e,t,n){if("Array"==t.nodeName){if("templates"==t.getAttribute("as"))return void this.decodeTemplates(e,t,n)}else if("ui"==t.nodeName)return void this.decodeUi(e,t,n);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,t,n){for(e=t.firstChild;null!=e;){if("add"==e.nodeName){t=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(t)||t,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==t?n.setGraphContainer(s):"toolbar"==t?n.setToolbarContainer(s):"title"==t?n.setTitleContainer(s):"status"==t?n.setStatusContainer(s):"map"==t&&n.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,t,n){null==n.templates&&(n.templates=[]),t=mxUtils.getChildNodes(t);for(var a=0;a<t.length;a++){for(var i=t[a].getAttribute("as"),s=t[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(n.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,t,n){this.projectDesignController=e,this.editor=t||new Editor,this.container=n||document.body;var a=t.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("+t.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,t,n){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","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[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"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","awslex","sesteknda","sestekasr"],[[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"]]),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,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),mxEvent.isConsumed(e)||t.isConsumed()||(this.getModel().isEdge(n)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(n.source.value.tagName)&&this.startEditingAtCell(n):this.getModel().isVertex(n)&&i.projectDesignController.openDialog(n.getValue(),function(e){for(var t=0;t<e.length;t+=1)n.setAttribute(e[t].name,e[t].value);a.refresh(n)}),t.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,t,n){this.isEditingEnabled()&&this.menus.createPopupMenu(e,t,n)}),t.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(t):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"),t=function(){e.setEnabled(!mxClipboard.isEmpty())},n=mxClipboard.cut;mxClipboard.cut=function(){n.apply(this,arguments),t()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),t()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var t=window.document.createElement("a");t.href="data:attachment/text;charset=utf-8,"+encodeURI(e),t.download=this.editor.filename+".xml",t.target="_self",t.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,t){try{var n=mxUtils.parseXml(e);this.editor.setGraphXml(n.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=t&&(this.editor.filename=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,t,n){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=t&&(this.editor.filename=t),null!=n&&(this.editor.data=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,t){for(var n=this.editor.graph,a=(e=null!=e?e:n.model.getRoot(),t=null!=t?t:{},!0),i=n.model.getChildCount(e),s=0;s<i;s++){var o=n.model.getChildAt(e,s),r=t;n.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?n.setCellWarning(o,r.replace(/\n/g,"<br>")):n.setCellWarning(o,null),a=a&&null==r}if(i="",n.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"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";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"}if(n.model.isEdge(e))switch(n.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 n.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(n.containsValidationErrorsResource)||n.containsValidationErrorsResource)+"\n"),i=n.model.isEdge(e)?i+(n.getEdgeValidationError(e,n.model.getTerminal(e,!0),n.model.getTerminal(e,!1))||""):i+(n.getCellValidationError(e)||""),null!=(s=n.validateCell(e,t))&&(i+=s),null==n.model.getParent(e)&&n.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(t){var n=this.editor.graph,e=n.getDefaultParent(),a=0;return e.children.forEach(function(e){n.model.isVertex(e)&&e.value.nodeName==t&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var t=null!=e?e:window.location.pathname,n=0<t.indexOf("?")?1:0;for(var a in urlParams)t+=0==n?"?":"&",t+=a+"="+urlParams[a],n++;return t},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),t=this.actions.get("redo"),n=this.editor.undoManager,a=function(){e.setEnabled(n.canUndo()),t.setEnabled(n.canRedo())};n.addListener(mxEvent.ADD,a),n.addListener(mxEvent.UNDO,a),n.addListener(mxEvent.REDO,a),n.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,t=!e.isSelectionEmpty(),n=!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)&&(n=!0),a&&n)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(t);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(n),this.actions.get("wordWrap").setEnabled(n),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=n&&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(t);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(n||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),t=this.container.clientWidth+390,n=this.container.clientHeight+190;this.container==document.body&&(t=document.body.clientWidth||document.documentElement.clientWidth,n=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,t-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,n-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=t+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=n-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=t-a-this.splitSize+"px";var r=n-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 t=document.createElement("div");return t.className=e,t},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var t=document.createElement("form");return t.className=e,t},EditorUi.prototype.addSplitHandler=function(t,n,a,i){var s=null,o=null;function r(e){if(null!=s){var t=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(n?t.x-s.x:s.y-t.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(t,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(n?t.style.left:t.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,t,n){var a=this.editor.graph,i=a.getSelectionCell();t=null!=this.animate?this.animate:t,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(t&&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 t(e){if(!a.isSelectionEmpty()){var t=0,n=0;37==e?t=-1:38==e?n=-1:39==e?t=1:40==e&&(n=1),a.moveCells(a.getSelectionCells(),t,n),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var n=mxUtils.bind(this,function(e,t,n,a){var i=this.actions.get(n);if(null!=i){var s=function(){i.enabled&&i.funct()};t?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(){t(37)}),o.bindKey(38,function(){t(38)}),o.bindKey(39,function(){t(39)}),o.bindKey(40,function(){t(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),n(46,!1,"delete"),n(82,!0,"tilt"),n(83,!0,"save"),n(83,!0,"saveAs",!0),n(107,!1,"zoomIn"),n(109,!1,"zoomOut"),n(65,!0,"selectAll"),n(86,!0,"selectVertices",!0),n(69,!0,"selectEdges",!0),n(69,!0,"export"),n(66,!0,"toBack"),n(70,!0,"toFront"),n(68,!0,"duplicate"),n(90,!0,"undo"),n(89,!0,"redo"),n(88,!0,"cut"),n(67,!0,"copy"),n(81,!0,"connect"),n(86,!0,"paste"),n(71,!0,"group"),n(71,!0,"grid",!0),n(85,!0,"ungroup"),n(112,!1,"about"),n(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,t,n,a){for(var i=0;i<t.length;i++)e.push(new mxMultiplicity(!0,t[i],null,null,n[i][0],n[i][1],null,mxResources.get(t[i])+mxResources.get("musthave")+n[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,t[i],null,null,a[i][0],a[i][1],null,mxResources.get(t[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,t){this.editorUi=e,this.container=t,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 t=mxEvent.getSource(e);null!=t;){if(t==this.currentElt)return;t=t.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(t,"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,t,n,a,i){mxEventSource.call(this),this.label=e,this.funct=t,this.enabled=null==n||n,this.iconCls=a,this.shortcut=i}function Menubar(e,t){this.editorUi=e,this.container=t,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,t){mxEventSource.call(this),this.funct=e,this.enabled=null==t||t}function Toolbar(e,t){this.editorUi=e,this.container=t,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var t=document.createElement("input");return t.setAttribute("type","checkbox"),e&&t.setAttribute("checked",!0),t}function createDropdownFromApi(e,n,a,i,t,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+t.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(t){r&&t[a]==r||((m=document.createElement("option")).text=t[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",t[e])}),m.selected=m.value==n):(m.value=t[i],m.selected=t[i]==n),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,t,n,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[n],d.value=e[a],d.selected=e[a]==t,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,t,n,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[n].toUpperCase(),d.value=e[a],d.selected=e[a]==t,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[n]),d.value=e[a],d.selected=e[a]==t,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,t){var n=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<t||""!=t)&&(i.selected=t===a),n.appendChild(i)}return n.className="form-control select2",n}function createDropdownFromTigerDialList(e){var t=document.createElement("select"),n=[],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)n[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in n){var l=document.createElement("option");l.text=n[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),t.appendChild(l)}return t.className="form-control select2",t}function Dialog(e,t,n,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),n+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-n)/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(t),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(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("import")+" XML");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");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 t=e.target.files[0];if(console.log(t),t)if("text/xml"===t.type){var n=new FileReader;n.onload=function(e){var t=e.target.result;mxUtils.write(d,t)},n.readAsText(t)}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 t=mxUtils.parseXml(d.value);n.editor.setGraphXml(t.documentElement),n.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function SaveDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function NewDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function DescriptionDialog(e){console.log(e.editor.data);var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function VariableDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function OpenDialog(e){var t=e.createDiv("modal-content"),n=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",n.appendChild(o),n.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),t.appendChild(n),t.appendChild(a),t.appendChild(i),this.container=t}function RenameDialog(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("rename"));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-4"),d=n.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=n.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 t=new XMLHttpRequest;t.open("PUT",SAVE_URL+n.editor.data.id,!0),t.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),t.setRequestHeader("Authorization","Bearer "+n.editor.data.token),t.send("name="+u.value),t.onload=function(e){200===t.status?(n.editor.setStatus("Project successfully renamed"),n.editor.filename=u.value):(console.log(t.response),n.editor.setStatus(JSON.parse(t.response).errors[0].message))},t.onerror=function(e){mxUtils.alert(t.statusText)},n.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(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("edit"));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");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(t.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 t=e.dataTransfer.files[0],n=new FileReader;n.onload=function(e){d.value=e.target.result},n.readAsText(t)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);t.editor.setGraphXml(e.documentElement),t.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body form"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("form-horizontal form-row-seperated"),l=t.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",t.editor.getOrCreateFilename()),c.className="form-control";var m=t.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){t.save(!1);encodeURIComponent(mxUtils.getXml(t.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+t.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),t.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(n),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"),t=i.createDiv("md-toolbar"),n=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",t.appendChild(l),t.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)}n.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var t=0;t<s.value.attributes.length;t++){var n="_"+s.value.attributes[t].name,a=s.value.attributes[t].name;s.setAttribute(a,document.getElementById(n).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(t),e.appendChild(n),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 t=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 n=e.getAttribute("pageScale");this.graph.pageScale=null!=n?n: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),t.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,t=this.outline;if(null!=e.container&&null!=t.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="",t.outline.container.style.backgroundColor=e.container.style.backgroundColor,t.outline.pageVisible==e.pageVisible&&t.outline.pageScale==e.pageScale||(t.outline.pageScale=e.pageScale,t.outline.pageVisible=e.pageVisible,t.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 n=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":n,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 n=e.apply(this,arguments);return n.intersects=mxUtils.bind(this,function(e,t){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(n,arguments)}),n},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(),t=0<e.width?e.x/this.scale-this.translate.x:0,n=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,t)/r),c=Math.floor(Math.min(0,n)/l),m=Math.ceil(Math.max(1,t+a)/r)-d,u=Math.ceil(Math.max(1,n+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 n=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,t){n.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=t+"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 t=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(t,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){t=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(t),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=t,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,t,n){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();t=r.width,n=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(t/l.width)-1:0,c=e?Math.ceil(n/l.height)-1:0,m=r.x+t,u=r.y+n;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,t,n){for(var a=0;a<t.length;a++)if(this.graph.getModel().isVertex(t[a])){var i=this.graph.getCellGeometry(t[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,t,n,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 t=this.graph.getModel(),n=t.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=t.getParent(a);if(null==n||n!=a&&n!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&t.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 t=l.apply(this,arguments),n=this.graph.getModel(),a=n.getParent(this.graph.getSelectionCell()),i=n.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!n.isVertex(i)||this.graph.isValidRoot(i)||(t=!0)),t},mxGraphHandler.prototype.selectDelayed=function(e){var t=e.getCell();null==t&&(t=this.cell);for(var n=this.graph.getModel(),a=n.getParent(t);this.graph.isCellSelected(t)&&n.isVertex(a)&&!this.graph.isValidRoot(a);)t=a,a=n.getParent(t);this.graph.selectCellForEvent(t,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var t=e.getCell(),n=this.graph.getModel(),a=n.getParent(t);n.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(t=a),a=n.getParent(a);return t}},Editor.prototype.createUndoManager=function(){var s=this.graph,n=new mxUndoManager,e=function(e,t){n.undoableEditHappened(t.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var t=function(e,t){for(var n=s.getSelectionCellsForChanges(t.getProperty("edit").changes),a=[],i=1;i<n.length;i++)null!=s.view.getState(n[i])&&a.push(n[i]);s.setSelectionCells(a)};return n.addListener(mxEvent.UNDO,t),n.addListener(mxEvent.REDO,t),n},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var t=mxStencilRegistry.stencils[e];if(null==t){var n=mxStencilRegistry.getBasenameForStencil(e);if(null!=n){var a=mxStencilRegistry.libraries[n];if(null!=a){if(null==mxStencilRegistry.packages[n]){mxStencilRegistry.packages[n]=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+"/"+n+".xml",null);t=mxStencilRegistry.stencils[e]}}return t},mxStencilRegistry.getBasenameForStencil=function(e){var t=e.split("."),n=null;if(0<t.length&&"mxgraph"==t[0]){n=t[1];for(var a=2;a<t.length-1;a++)n+="/"+t[a]}return n},mxStencilRegistry.loadStencilSet=function(e,t,n){n=null!=n&&n;var a=mxStencilRegistry.packages[e];if(n||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,t,i)}},mxStencilRegistry.parseStencilSet=function(e,t,n){n=null==n||n;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(n&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=t){var l=i.getAttribute("w"),d=i.getAttribute("h");t(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,t){this.data=e,this.filename=t,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",["tts","ispeechtts","awspolly","lumenvoxtts","sestektts"],["GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","awslex","sesteknda"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","AWSLex","SestekNDA"]),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(),t=e.width+2*this.tooltipBorder+4,n=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(n+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=t+"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;n+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(n-=6,this.tooltipTitle.style.top=n-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=n+"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-n/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+n/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,t){if(null!=this.taglist&&null!=e&&0<e.length)for(var n=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<n.length;a++)if(n[a]=n[a].replace(/\.*\d*$/,""),1<n[a].length){var i=this.taglist[n[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[n[a]]=i),null==i.dict.get(t)&&(i.dict.put(t,t),i.entries.push(t))}return t},Sidebar.prototype.searchEntries=function(e,t,n,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(n+1)*t,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(n*t,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(n*t,(n+1)*t),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var t=e.split(" "),n=[],a={},i=0;i<t.length;i++)null==a[t[i]]&&(a[t[i]]="1",n.push(t[i]));return n.join(" ")},Sidebar.prototype.cloneCell=function(e,t){var n=e.clone();return null!=t&&(n.value=t),n},Sidebar.prototype.addSearchPalette=function(e){var t=document.createElement("div");t.style.visibility="hidden",this.container.appendChild(t);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 n=document.createElement("div");n.style.whiteSpace="nowrap",n.style.textOverflow="clip",n.style.paddingBottom="8px",n.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",n.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+"')",n.appendChild(s),r.appendChild(n);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 t=e.nextSibling;e!=n&&e!=l&&e.parentNode.removeChild(e),e=t}});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,t,n){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(n?(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=[t,o]},Sidebar.prototype.createTitle=function(e){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.setAttribute("title",mxResources.get("sidebarTooltip")),t.className="geTitle",mxUtils.write(t,e),t},Sidebar.prototype.createThumb=function(e,t,n,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((t-2*this.thumbBorder)/c.width,(n-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((t-c.width*m)/2/m-c.x),Math.floor((n-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=t+"px",u.style.height=n+"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(t,n,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(t,this.thumbWidth,this.thumbHeight,r,n,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<t.length||t[0].vertex){var c=this.createDragSource(r,this.createDropHandler(t,!0,o,d),this.createDragPreview(i,s),t,d);this.addClickHandler(r,c,t),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=t[0]&&t[0].edge){c=this.createDragSource(r,this.createDropHandler(t,!1,o,d),this.createDragPreview(i,s),t,d);this.addClickHandler(r,c,t)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,t,d.width,d.height,n,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,t,n,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=n&&e.isValidDropTarget(n,g,t),o=null;if(null==n||s||(n=null),!e.isCellLocked(n||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(n,g,t)){var r=e.cloneCells(g);e.splitEdge(n,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,n));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(n);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(t)}})},Sidebar.prototype.createDragPreview=function(e,t){var n=document.createElement("div");return n.style.border="1px dashed black",n.style.width=e+"px",n.style.height=t+"px",n},Sidebar.prototype.createDragSource=function(e,t,n){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,t,n,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,t,n){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 t=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=t&&Math.abs(s.y-mxEvent.getClientY(e))<=t){var n=i.getGridSize();a.drop(i,e,null,n,n)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,t,n,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,t,n,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,t,n,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",t),n.forEach(function(e,t){i.setAttribute(e,a[t]?a[t]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,t,n,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"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;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,t,n),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,t,n,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,t,n,a,i,s,o){return this.createItem(e,a,i,s,t,n,o)},Sidebar.prototype.createEdgeTemplate=function(e,t,n,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,t,n),e);return r.geometry.setTerminalPoint(new mxPoint(0,n),!0),r.geometry.setTerminalPoint(new mxPoint(t,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],t,n,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,t,n,a,i,s){return this.createItem(e,a,i,!0,t,n,s)},Sidebar.prototype.addPaletteFunctions=function(e,t,n,a){this.addPalette(e,t,n,mxUtils.bind(this,function(e){for(var t=0;t<a.length;t++)e.appendChild(a[t](e))}))},Sidebar.prototype.addPalette=function(e,t,n,a){var i=this.createTitle(t);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")})),n?(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(n,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(n.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="0% 50%",mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){n.style.cursor="wait";var t=n.innerHTML;n.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",n.style.cursor="",n.innerHTML=t},0)}else a.style.display="block";n.style.backgroundImage="url('"+this.expandedImage+"')"}else n.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,t,s,o,r,n,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,t,n){if(null==n){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");n=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;labelBackgroundColor=#ffffff;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],t,!1,!0,this.filterTags(n)))})(r[d],null!=n?n[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,t,!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,t,n,a){mxGraph.call(this,e,t,n,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 t=this.view.getState(e),n=null!=t?t.style:this.getCellStyle(e);return"1"==n.html||"wrap"==n.whiteSpace},this.cellRenderer.getLabelValue=function(e){var t=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(t=mxUtils.htmlEntities(t,!1)),t},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,t){null==t?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(t.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(t.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 t=this.view.getState(e),n=null!=t?t.style:this.getCellStyle(e);if(null!=n){var a=mxUtils.getValue(n,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 t=this.getModel().cloneCells([e])[0];null!=t.geometry&&(t.geometry.points=null);var n=t.getStyle();n=mxUtils.setStyle(n,mxConstants.STYLE_ENTRY_X,null),n=mxUtils.setStyle(n,mxConstants.STYLE_ENTRY_Y,null),n=mxUtils.setStyle(n,mxConstants.STYLE_EXIT_X,null),n=mxUtils.setStyle(n,mxConstants.STYLE_EXIT_Y,null),t.setStyle(n),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(t)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([t])[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 t="";return this.getModel().isVertex(e)?t+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(t=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),t},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,t,n){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",t),t=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,t){var n=null;null!=e.value&&"object"==typeof e.value?n=e.value.cloneNode(!0):(n=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=t&&0<t.length?n.setAttribute("link",t):n.removeAttribute("link"),this.model.setValue(e,n)},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,t){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var t=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(t)&&(e.state=this.view.getState(t),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,t,n){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=t.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(t.getEvent()),i=mxEvent.getClientY(t.getEvent());this.panningHandler.popup(a+16,i,o,t.getEvent())}return s=!1,o=null,void t.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&t.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 t=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(t)&&mxEvent.isShiftDown(t)||this.usePopupTrigger&&mxEvent.isPopupTrigger(t)});var n=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,t){n.apply(this,arguments),this.graph.isCellSelected(t.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,t){touchStyle&&null!=t?this.graph.setSelectionCell(t):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,t){if(null==t){var n=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));t=this.getCellAt(n.x,n.y)}a.call(this,e,t)};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 t=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(t),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 t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,t.x,t.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,t){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=t}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 t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,t.x,t.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,t){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var t=this.editorUi,l=t.editor,d=l.graph;this.addAction("new",function(){t.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){t.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){t.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),t.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){t.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){t.editor.setStatus(""),null===t.validate()?(t.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),t.editor.modified=!1):(t.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){t.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){t.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){t.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){t.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){t.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(),t=d.getLinkForCell(e);null==t&&(t=""),null!=(t=mxUtils.prompt(mxResources.get("enterValue"),t))&&d.setLinkForCell(e,t)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),t=d.getLinkForCell(e);null!=t&&window.open(t)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var t=0;t<e.length;t++){var n=e[t];d.getModel().getChildCount(n)?d.updateGroupBounds([n],20):d.updateCellSize(n)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),t="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(t=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,t)}),this.addAction("rotation",function(){var e="0",t=d.getView().getState(d.getSelectionCell());null!=t&&(e=t.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 t=0;t<e.length;t++){var n=e[t];if(d.getModel().isVertex(n)&&0==d.getModel().getChildCount(n)){var a=d.getCellGeometry(n);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(n,a);var s=d.view.getState(n);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,[n])}}}}}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,t=d.pageScale,n=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(n/e.width/t,a/e.height/t))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*t*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*t*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,t=d.pageScale,n=d.container.clientWidth-20,a=Math.floor(100*n/e.width/t)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*t*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*t*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,t=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(t*d.view.scale)}else{var n=d.view.translate;d.view.setTranslate(n.x-d.container.scrollLeft/d.view.scale,n.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 n=mxUtils.bind(this,function(e,t){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,t)})});n("bold",mxConstants.FONT_BOLD),n("italic",mxConstants.FONT_ITALIC),n("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 t=d.getModel(),n=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",t.getStyle(e[0])||"");null!=n&&d.setCellStyle(n,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 t=l.graph.selectionCellsHandler.getHandler(e);if(t instanceof mxEdgeHandler){var n=d.view.translate,a=d.view.scale,i=n.x,s=n.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),t.addPointAt(t.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=t.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",t=d.getView().getState(d.getSelectionCell());if(null!=t&&(e=t.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var n=new Image;n.onload=function(){!function(e,t,n){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,t,n)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=t&&null!=n){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=t,r.height=n,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,n.width,n.height)},n.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},n.src=e}})},Actions.prototype.addAction=function(e,t,n,a,i){return this.put(e,new Action(mxResources.get(e),t,n,a,i))},Actions.prototype.put=function(e,t){return this.actions[e]=t},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,t){for(var n=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<n.length;a++){this.styleChange(e,n[a],[mxConstants.STYLE_FONTFAMILY],[n[a]],null,t).firstChild.nextSibling.style.fontFamily=n[a]}e.addSeparator(t),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,t)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,t){for(var n=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<n.length;a++)this.styleChange(e,n[a],[mxConstants.STYLE_FONTSIZE],[n[a]],null,t);e.addSeparator(t),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,t)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,t){for(var n=[1,2,3,4,8,12,16,24],a=0;a<n.length;a++)this.styleChange(e,n[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[n[a]],null,t);e.addSeparator(t),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,t)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,t),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,t),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,t),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,t)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,t),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,t),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,t),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,t),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,t),e.addSeparator(t),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},t,null,!0),e.addSeparator(t),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,t)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,t),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,t),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,t),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,t),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,t),e.addSeparator(t),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},t,null,!0),e.addSeparator(t),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,t)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,t){var n=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(n||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,t,n),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,t,n),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,t,n),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,t,n),e.addSeparator(t),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,t,n),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,t,n)),(a||e.showDisabled)&&(e.addSeparator(t),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,t,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,t,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItem(e,"style",t)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,t){var n=this.get("text").enabled;e.addSeparator(t),this.addSubmenu("fontFamily",e,t),this.addSubmenu("fontSize",e,t),this.addMenuItems(e,["-","bold","italic","underline","-"],t),this.addSubmenu("alignment",e,t),this.addMenuItem(e,"wordWrap",t),e.addSeparator(t),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,t,n),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},t,null,n)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,t),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,t),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,t),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,t),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,t),e.addSeparator(t),this.addSubmenu("position",e,t),this.addSubmenu("spacing",e,t),e.addSeparator(t);var n=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},t,null,n)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,t){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,t),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,t),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,t),e.addSeparator(t),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,t),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,t),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,t)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,t){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},t),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},t),this.addMenuItems(e,["-","tilt","rotation"],t)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,t){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},t),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},t),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},t),e.addSeparator(t),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},t),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},t),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},t)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,t){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),t),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),t)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],t)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["toFront","toBack","-"],t),this.addSubmenu("layout",e,t),e.addSeparator(t),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],t)}))),this.put("view",new Menu(mxUtils.bind(this,function(t,n){this.addMenuItems(t,["actualSize"],n),t.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){t.addItem(100*e+"%",null,function(){i.zoomTo(e)},n)}(e[a]);this.addMenuItems(t,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],n)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],t)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,t){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,t){this.menus[e]=t},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,t,n){var a=this.get(e).enabled;if(t.showDisabled||a){var i=t.addItem(mxResources.get(e),null,null,n,null,a);this.addMenu(e,t,i)}},Menus.prototype.addMenu=function(e,t,n){var a=this.get(e);null!=a&&(t.showDisabled||a.enabled)&&this.get(e).execute(t,n)},Menus.prototype.styleChange=function(e,t,n,a,i,s){return e.addItem(t,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var t=0;t<n.length;t++)e.setCellStyles(n[t],a[t])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,t,a,i,s,n,o){return e.addItem(t,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,t=i,n=e.getView().getState(e.getSelectionCell());null!=n&&(t=n.style[s]||t),null!=(t=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),t))&&0<t.length&&e.setCellStyles(s,t)}),n,null,o)},Menus.prototype.addMenuItem=function(e,t,n){var a=this.editorUi.actions.get(t);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,n,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,t){if(null!=t.shortcut){var n=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,t.shortcut),n.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var t=e.firstChild.nextSibling;t.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,t,n){for(var a=0;a<t.length;a++)"-"==t[a]?e.addSeparator(n):this.addMenuItem(e,t[a],n)},Menus.prototype.createPopupMenu=function(e,t,n){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!=(t=a.getSelectionCell())&&a.getModel().isEdge(t)){var s=a.selectionCellsHandler.getHandler(t);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(n)),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 t=new Menubar(this.editorUi,e),n=[];n=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<n.length;a++)t.addMenu(mxResources.get(n[a]),this.get(n[a]).funct);return t},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,t){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.className="geItem",mxUtils.write(n,e),this.addMenuHandler(n,t),this.container.appendChild(n),n},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,t=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var t=new mxPopupMenu(s);t.div.className+=" geMenubarMenu",t.smartSeparators=!0,t.showDisabled=!0,t.autoExpand=!0,t.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(t,arguments),t.destroy(),this.currentMenu=null,this.currentElt=null});var n=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;t.popup(n,a,null,e),this.currentMenu=t,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(),t(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",t)}},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,t){this.funct(e,t)},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,t,n,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,t,n,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,t,n,a){var i=n?this.createLabel(e):this.createButton(e);return this.initElement(i,t),this.addMenuHandler(i,n,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 t=0;t<e.length;t++){var n=e[t];"-"==n?this.addSeparator():this.addItem("geSprite-"+n.toLowerCase(),n)}},Toolbar.prototype.addItem=function(e,t){var n=this.editorUi.actions.get(t),a=null;return null!=n&&((a=this.addButton(e,n.label,n.funct)).setEnabled(n.enabled),n.addListener("stateChanged",function(){a.setEnabled(n.enabled)})),a},Toolbar.prototype.addButton=function(e,t,n){var a=this.createButton(e);return this.initElement(a,t),this.addClickHandler(a,n),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(n){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),t=0;t<n.length;t++)n[t].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 t=i.getSelectionCells(),n=0;n<t.length;n++)if(i.getModel().isEdge(t[n])){e=!0;break}for(n=0;n<a.length;n++)a[n].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,t){e.setAttribute("tabindex","0"),null!=t&&e.setAttribute("title",t),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(t){var n=t.className;t.setEnabled=function(e){t.enabled=e,t.className=e?n:n+" geDisabled"},t.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(t,n){null!=n&&mxEvent.addListener(t,"click",function(e){t.enabled&&n(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var t=document.createElement("a");t.setAttribute("href","javascript:void(0);"),t.className="geButton";var n=document.createElement("div");return n.className="geSprite "+e,t.appendChild(n),t},Toolbar.prototype.createLabel=function(e,t){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.className="geLabel",mxUtils.write(n,e),n},Toolbar.prototype.addMenuHandler=function(t,n,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){(null==t.enabled||t.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=n,o.autoExpand=!0,o.popup(t.offsetLeft,t.offsetTop+t.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/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()">{{target}}</span>\n\n    <md-menu ng-if="showMenu()">\n        <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n            <span ng-if="prefix">{{prefix}}-</span>{{target}}\n        </a>\n\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}} ({{prefix ? prefix + \'-\' + target : target}})\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}} ({{prefix ? prefix + \'-\' + target : target}})\n                </md-button>\n            </md-menu-item>\n        </md-menu-content>\n    </md-menu>\n</section>\n\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\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\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}} ({{prefix ? prefix + \'-\' + target : target}})\n                </md-button>\n            </md-menu-item>\n            <md-menu-item>\n                <md-button ng-click="transfer(target)">\n'+"                    {{'DASHBOARDS.TRANSFER_NUMBER' | translate}} ({{prefix ? prefix + '-' + target : target}})\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="{{options.labelSearch || \'Search...\'}}">\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="options.readOnly ? \'read-only-mode\' : \'\'" ng-disabled="options.readOnly" ng-repeat="item in options.items | filter: query | orderBy: options.orderBy" ng-click="canTransfer(item, options, false)">\n                    <div class="md-list-item-text" layout="column">\n                        <h3 ng-if="options.line1">{{getLine(item, options.line1)}}</h3>\n                        <h4 ng-if="options.line2">{{getLine(item, options.line2)}}</h4>\n                        <p ng-if="options.line3">{{getLine(item, options.line3)}}</p>\n                        <p class="ms-dual-multiselect-line-xs" ng-if="options.line4">{{getLine(item, options.line4)}}\n                        </p>\n                    </div>\n                    <md-icon ng-show="!options.readOnly" md-font-icon="icon-arrow-right-bold" aria-label="swap"></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>{{options.labelAll || \'All Items\'}} ({{options.items.length}})</span>\n            <md-icon ng-show="options.showSelectAndDeselectAll && !options.readOnly" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="transfer(options.items, 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="{{options.labelSearch || \'Search...\'}}">\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="options.readOnly || !item.isValid ? \'read-only-mode\' : \'\'" ng-disabled="options.readOnly" ng-repeat="item in options.selectedItems | filter: selectedQuery | orderBy: options.orderBy" ng-click="canTransfer(item, options, true)">\n                    <md-icon ng-class="options.readOnly || !item.isValid ? \'hidden\' : \'\'" 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="options.line1">{{getLine(item, options.line1)}}</h3>\n                        <h4 ng-if="options.line2">{{getLine(item, options.line2)}}</h4>\n                        <p ng-if="options.line3">{{getLine(item, options.line3)}}</p>\n                        <p class="ms-dual-multiselect-line-xs" ng-if="options.line4">{{getLine(item, 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-show="options.showSelectAndDeselectAll && !options.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" flex ng-click="transfer(options.selectedItems, options.items, -1, true)"></md-icon>\n            <span class="h4">{{options.labelSelected || \'Selected Items\'}} ({{options.selectedItems.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 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 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\')" 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\')" 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\')" 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" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                </span>\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 Area --\x3e\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 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">{{ (session.user == session.name) ? session.user : (session.name + \' \' + session.user) }}</span>\n            <span class="session-info" layout="row" layout="start center">\n                <timer interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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="Hold" 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" 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" 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"></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="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 tranlsate="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-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n    <label for="ms-search-bar-input">\n        <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="MsSearchBar.expand()" ng-if="!MsSearchBar.resultsLoading || MsSearchBar.collapsed">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n        </md-button>\n        <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="MsSearchBar.resultsLoading && !MsSearchBar.collapsed">\n            <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n        </div>\n    </label>\n    <input id="ms-search-bar-input" type="text" placeholder="Search" flex ng-model="MsSearchBar.query" ng-model-options="MsSearchBar.queryOptions" ng-blur="MsSearchBar.blurCollapse()" ng-keydown="MsSearchBar.handleKeydown($event)">\n    <md-button class="ms-search-bar-collapser md-icon-button" ng-click="MsSearchBar.collapse()" aria-label="Collapse Search Bar">\n        <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n    </md-button>\n\n    <div class="ms-search-bar-results" ng-if="MsSearchBar.results" ms-scroll>\n        <div class="no-results" ng-if="MsSearchBar.results.length === 0">No Results!</div>\n\n        <div class="result" ng-repeat="result in MsSearchBar.results" ng-click="MsSearchBar.handleResultClick(result)" ng-mouseenter="MsSearchBar.handleMouseenter($index)" ng-mousedown="MsSearchBar.absorbEvent($event)" ng-class="{\'selected\': $index == MsSearchBar.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}" 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</md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">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 class="separator">\n                <span class="text" translate="LOGIN.OR">OR</span>\n            </div>\n\n            <md-button 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="icon-google-plus" 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="EXTRACTEDREPORTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="EXTRACTEDREPORTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(extractedReport, $event)" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                                                    Edit ExtractedReport\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.downloadfile2(extractedReport, $event)" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                                                    Download ExtractedReport\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(extractedReport, $event)" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                                                    Delete ExtractedReport\n                                                </md-button>\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.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="\'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="\'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="\'report_integration\'">Integration Report</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="\'report_queue\'">Queue Report</md-option>\n                    <md-option ng-value="\'users\'">Users</md-option>\n                    <md-option ng-value="\'voice_recordings\'">Voice Recordings</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="METRICS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="METRICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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="ANALYTICS.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.editdialog(metric, $event)" translate="ANALYTICS.EDIT_METRIC">\n                                                    Edit Metric\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(metric, $event)" translate="ANALYTICS.DELETE_METRIC">\n                                                    Delete Metric\n                                                </md-button>\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.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">\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 tranlsate="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.PREVIEW_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="ODBC.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="ODBC.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.editdialog(odbc, $event)" translate="CALLYSQUARE.EDIT_ODBC">\n                                                    Edit Odbc\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestOdbc(odbc, $event)" translate="CALLYSQUARE.TEST_ODBC">\n                                                    Test Odbc\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(odbc, $event)" translate="CALLYSQUARE.DELETE_ODBC">\n                                                    Delete Odbc\n                                                </md-button>\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.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_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" 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-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" 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" 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                \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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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></span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-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 tranlsate="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="SQUARERECORDINGS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SQUARERECORDINGS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 md-order-by="audio">{{ \'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 ">\n                                    \x3c!-- audio recording directive --\x3e\n                                    <ms-recording id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                                    \x3c!-- / audio recording directive --\x3e\n                                </td>\n                                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.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="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>\n                                                <md-button ng-click="vm.downloadfile2(squareRecording, $event)" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                                                    Download SquareRecording\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(squareRecording, $event)" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                                                    Delete SquareRecording\n                                                </md-button>\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.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="CHATQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CHATQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(chatQueue, $event)" translate="CHAT.EDIT_CHATQUEUE">\n                                                    Edit ChatQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(chatQueue, $event)" translate="CHAT.TEAMADD_CHATQUEUE">\n                                                    teamadd ChatQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(chatQueue, $event)" translate="CHAT.AGENTADD_CHATQUEUE">\n                                                    agentadd ChatQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(chatQueue, $event)" translate="CHAT.DELETE_CHATQUEUE">\n                                                    Delete ChatQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event)" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                                                    goToRealtime ChatQueue\n                                                </md-button>\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.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" 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"></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"></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                        <span ng-if="vm.chatQueue.exten">{{vm.chatQueue.exten}}</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" 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="CHATWEBSITES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CHATWEBSITES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(chatWebsite, $event)" translate="CHAT.EDIT_CHATWEBSITE">\n                                                    Edit ChatWebsite\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(chatWebsite, $event)" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                                                    Interactions ChatWebsite\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event)" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                                                    OfflineMessages ChatWebsite\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(chatWebsite, $event)" translate="CHAT.AGENTADD_CHATWEBSITE">\n                                                    AgentAdd ChatWebsite\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(chatWebsite, $event)" translate="CHAT.DELETE_CHATWEBSITE">\n                                                    Delete ChatWebsite\n                                                </md-button>\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.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" 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-if="!vm.newChatWebsite || (vm.newChatWebsite && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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-if="!vm.newChatWebsite || (vm.newChatWebsite && IntervalId.canSelect)" ng-disabled="!IntervalId.canSelect">{{ 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"></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">{{ 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" 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="1">One Time</md-option>\n                    <md-option ng-value="0">Always</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" md-maxlength="255" 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 ng-message="md-maxlength">\n                        <span translate="CHAT.ERRORS.TEXT_MAX_LENGTH" translate-values=\'{max: 255}\'>Text 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/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/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">{{ 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" 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">{{ 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">{{ 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/chatDispositions/dialog.html",'<md-dialog class="chatDisposition-dialog" aria-label="New ChatDisposition">\n    <form name="chatDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.chatDisposition.name" md-maxlength="255" ng-required="true" autofocus>\n\n                <div ng-messages="chatDispositionForm[\'name\'].$error" ng-show="chatDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatDisposition" ng-click="vm.saveChatDisposition()" class="send-button md-accent md-raised" ng-disabled="chatDispositionForm.$invalid || chatDispositionForm.$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.newChatDisposition" ng-click="vm.addNewChatDisposition()" class="send-button md-accent md-raised" ng-disabled="chatDispositionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATDISPOSITION" translate-attr-aria-label="CHAT.ADD_CHATDISPOSITION">\n                    ADD CHATDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatDisposition" ng-click="vm.deleteChatDisposition($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>{{vm.message.body}}</pre>\n    </md-content>\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                        <span ng-if="vm.chatWebsite.exten">{{vm.chatWebsite.exten}}</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) || (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) || (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">{{ 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" 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, 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" 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" 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">{{ 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">\n                                    < <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span>\n                    </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    </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" 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 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\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.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="interactionForm[\'noteTitle\'].$error" ng-show="interactionForm[\'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                    <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.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\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                                        \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">\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\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)">\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="CHATWEBSITES.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.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">{{ \'CHAT.ID\' | translate }}</th>\n                                    <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="type">{{ \'CHAT.TYPE\' | translate }}</th>\n                                    <th md-column md-order-by="selector">{{ \'CHAT.SELECTOR\' | translate }}</th>\n                                    <th md-column md-order-by="timeout">{{ \'CHAT.TIMEOUT\' | translate }}</th>\n                                    <th md-column md-order-by="createdAt">{{ \'CHAT.CREATED_AT\' | translate }}</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>{{chatProactiveAction.id}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{chatProactiveAction.name}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{chatProactiveAction.selector}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{chatProactiveAction.timeout}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>{{chatProactiveAction.createdAt | date:\'medium\'}}</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                                        <span class="text-boxed-ligth" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\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 class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp">\n                <div ng-controller="ChatWebsiteChatDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n                    <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatDispositions.length">\n                        <div class="md-toolbar-tools">\n                            <span class="md-subhead" translate="CHAT.CHATDISPOSITIONS">ChatDispositions</span>\n                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                            <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatDisposition($event)" aria-label="add chatDisposition" translate translate-attr-label="CHAT.ADD_CHATDISPOSITION">\n                                <md-icon md-font-icon="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.selectedChatWebsiteChatDispositions.length">\n                        <div class="md-toolbar-tools">\n                            <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatDispositions.length}} {{vm_dc.selectedChatWebsiteChatDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                            <div flex></div>\n                            <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatDispositions" 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.deleteSelectedChatWebsiteChatDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHATWEBSITES.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.selectedChatWebsiteChatDispositions" md-progress="vm_dc.promise">\n                            <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatDispositions">\n                                <tr md-row>\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="createdAt">{{ \'CHAT.CREATED_AT\' | translate }}</th>\n                                    <th md-column width="10px"></th>\n                                </tr>\n                            </thead>\n                            <tbody md-body>\n                                <tr md-row md-select="chatDisposition" md-select-id="id" ng-repeat="chatDisposition in vm_dc.chatWebsiteChatDispositions.rows">\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatDisposition($event, chatDisposition)" md-cell>{{chatDisposition.id}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatDisposition($event, chatDisposition)" md-cell>{{chatDisposition.name}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatDisposition($event, chatDisposition)" md-cell>{{chatDisposition.createdAt | date:\'medium\'}}</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.createOrEditChatWebsiteChatDisposition($event, chatDisposition)" translate="CHAT.EDIT_CHATDISPOSITION">\n                                                        Edit ChatDisposition\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(chatDisposition, $event)" translate="CHAT.DELETE_CHATDISPOSITION">\n                                                        Delete ChatDisposition\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.chatWebsiteChatDispositions.rows.length">\n                                    <td md-cell colspan="5">\n                                        <span class="text-boxed-ligth" translate="CHAT.NO_CHATDISPOSITION_AVAILABLE">No chatdisposition available</span>\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.chatWebsiteChatDispositions.count}}" md-on-paginate="vm_dc.getChatWebsiteChatDispositions" 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.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)">\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="CHATWEBSITES.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.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">{{ \'CHAT.ID\' | translate }}</th>\n                                    <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                                    <th md-column md-order-by="value">{{ \'CHAT.VALUE\' | translate }}</th>\n                                    <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                                    <th md-column md-order-by="createdAt">{{ \'CHAT.CREATED_AT\' | translate }}</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>{{chatCannedAnswer.id}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>{{chatCannedAnswer.key}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>{{chatCannedAnswer.value}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>{{chatCannedAnswer.description}}</td>\n                                    <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>{{chatCannedAnswer.createdAt | date:\'medium\'}}</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                                        <span class="text-boxed-ligth" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\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.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-ligth" 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)">\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="CHATWEBSITES.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.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">{{ \'CHAT.ID\' | translate }}</th>\n                                    <th md-column md-order-by="createdAt">{{ \'CHAT.STARTEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="closedAt">{{ \'CHAT.CLOSEDAT\' | translate }}</th>\n                                    <th md-column>{{ \'CHAT.CONTACT\' | translate }}</th>\n                                    <th md-column>{{ \'CHAT.AGENT\' | translate }}</th>\n                                    <th md-column md-order-by="disposition">{{ \'CHAT.DISPOSITION\' | translate }}</th>\n                                    <th md-column md-order-by="ratingValue">{{ \'CHAT.RATING\' | translate }}</th>\n                                    <th md-column md-order-by="note">{{ \'CHAT.NOTES\' | translate }}</th>\n                                    <th md-column md-order-by="tag">{{ \'CHAT.TAGS\' | translate }}</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">\n                                    <td md-cell>{{interaction.id}}</td>\n                                    <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                    <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                    <td md-cell>{{interaction.Contact.firstName}}</td>\n                                    <td md-cell>{{interaction.Owner.name}}</td>\n                                    <td md-cell>{{interaction.disposition}}</td>\n                                    <td md-cell>\n                                        <md-icon md-font-icon="icon-star" style="color:red" ng-show="interaction.ratingValue != null && (!interaction.ratingType || interaction.ratingType == \'star\')" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:interaction.ratingValue"></md-icon>\n                                        <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="interaction.ratingValue != null && interaction.ratingType && interaction.ratingType == \'thumb\' && interaction.ratingValue == 1"></md-icon>\n                                        <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="interaction.ratingValue != null && interaction.ratingType && interaction.ratingType == \'thumb\' && interaction.ratingValue == 0"></md-icon><span ng-show="interaction.ratingValue == null" translate="CHAT.NO_RATINGVALUE">No ratingValue</span>\n                                    </td>\n                                    <td md-cell>{{interaction.note}}</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"></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>\n                                                    <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_INTERACTION">\n                                                        Download Interaction\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="15">\n                                        <span class="text-boxed-ligth" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\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)">\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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="CHATWEBSITES.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.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">{{ \'CHAT.ID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'CHAT.CONTACT\' | translate }}</th>\n                                    <th md-column md-order-by="createdAt">{{ \'CHAT.CREATED_AT\' | translate }}</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>{{offlineMessage.id}}</td>\n                                    <td md-cell>{{ (vm_dc.contacts | filter : {\'id\':offlineMessage.ContactId})[0].firstName }}</td>\n                                    <td md-cell>{{offlineMessage.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="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="5">\n                                        <span class="text-boxed-ligth" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'CHAT.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'CHAT.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'CHAT.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditChatQueue($event, vm.queues[value])" translate="CHAT.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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="COMPANIES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="COMPANIES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(company, $event)" translate="CONTACTMANAGER.EDIT_COMPANY">\n                                                    Edit Company\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotocontactsgoto(company, $event)" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                                                    goToContacts Company\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(company, $event)" translate="CONTACTMANAGER.DELETE_COMPANY">\n                                                    Delete Company\n                                                </md-button>\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.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                        <span ng-if="vm.company.exten">{{vm.company.exten}}</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">\n                                    <md-optgroup label="Lists">\n                                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                                        <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                                    </md-optgroup>\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 companie" flex="100" ng-model="vm.selectedCompany">\n                                    <md-optgroup label="Companies">\n                                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                                        <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                                    </md-optgroup>\n                                </md-select>\n                            </md-input-container>\n\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 placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()" multiple>\n                                    <md-optgroup label="Tags">\n                                        <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                                    </md-optgroup>\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="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 tranlsate="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">{{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">{{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">{{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="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"></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>\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">\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">\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">\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">\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">\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]"></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-optgroup label="Companies">\n                        <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                    </md-optgroup>\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 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"></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 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</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">\n\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">\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">\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">\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">\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 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">\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</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}}</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]"></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}}</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="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | 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="4">\n                                                <div layout="row" layout-align="center center">\n                                                    <span tranlsate="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>{{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 tranlsate="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>{{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 tranlsate="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>{{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 tranlsate="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="interaction-content">\n                        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'"></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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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="GLOBALCUSTOMFIELDS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="GLOBALCUSTOMFIELDS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(globalCustomField, $event)" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                                                    Edit GlobalCustomField\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(globalCustomField, $event)" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                                                    Delete GlobalCustomField\n                                                </md-button>\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.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"></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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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                        <span ng-if="vm.list.exten">{{vm.list.exten}}</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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="LISTS.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.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">{{ \'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 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>{{customField.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>{{customField.alias}}</td>\n                                            <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>{{ vm_dc.arraytype[customField.type].option }}</td>\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="7">\n                                                <span class="text-boxed-ligth" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\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 class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="ListVoiceDispositionsController 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.selectedListVoiceDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="CONTACTMANAGER.VOICEDISPOSITIONS">VoiceDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListVoiceDisposition($event)" aria-label="add voiceDisposition" translate translate-attr-label="CONTACTMANAGER.ADD_VOICEDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedListVoiceDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedListVoiceDispositions.length}} {{vm_dc.selectedListVoiceDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListVoiceDispositions" 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.deleteSelectedListVoiceDispositions($event)" aria-label="delete selected" translate translate-attr-label="LISTS.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.selectedListVoiceDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListVoiceDispositions">\n                                        <tr md-row>\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="createdAt">{{ \'CONTACTMANAGER.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="voiceDisposition" md-select-id="id" ng-repeat="voiceDisposition in vm_dc.listVoiceDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditListVoiceDisposition($event, voiceDisposition)" md-cell>{{voiceDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditListVoiceDisposition($event, voiceDisposition)" md-cell>{{voiceDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditListVoiceDisposition($event, voiceDisposition)" md-cell>{{voiceDisposition.createdAt | date:\'medium\'}}</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.createOrEditListVoiceDisposition($event, voiceDisposition)" translate="CONTACTMANAGER.EDIT_VOICEDISPOSITION">\n                                                                Edit VoiceDisposition\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(voiceDisposition, $event)" translate="CONTACTMANAGER.DELETE_VOICEDISPOSITION">\n                                                                Delete VoiceDisposition\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.listVoiceDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="CONTACTMANAGER.NO_VOICEDISPOSITION_AVAILABLE">No voicedisposition available</span>\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.listVoiceDispositions.count}}" md-on-paginate="vm_dc.getListVoiceDispositions" 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/contactmanager/views/lists/edit/voiceDispositions/dialog.html",'<md-dialog class="voiceDisposition-dialog" aria-label="New VoiceDisposition">\n    <form name="voiceDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.voiceDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="voiceDispositionForm[\'name\'].$error" ng-show="voiceDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceDisposition" ng-click="vm.saveVoiceDisposition()" class="send-button md-accent md-raised" ng-disabled="voiceDispositionForm.$invalid || voiceDispositionForm.$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.newVoiceDisposition" ng-click="vm.addNewVoiceDisposition()" class="send-button md-accent md-raised" ng-disabled="voiceDispositionForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_VOICEDISPOSITION" translate-attr-aria-label="CONTACTMANAGER.ADD_VOICEDISPOSITION">\n                    ADD VOICEDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceDisposition" ng-click="vm.deleteVoiceDisposition($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/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="LISTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="LISTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(list, $event)" translate="CONTACTMANAGER.EDIT_LIST">\n                                                    Edit List\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotocontactsgoto(list, $event)" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                                                    goToContacts List\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.exportcsvcontactsexport(list, $event)" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                                                    exportCsvContacts List\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(list, $event)" translate="CONTACTMANAGER.AGENTADD_LIST">\n                                                    AgentAdd List\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(list, $event)" translate="CONTACTMANAGER.DELETE_LIST">\n                                                    Delete List\n                                                </md-button>\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.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.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/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" 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\'"></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" 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)"></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                            \x3c!-- <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40"\n                                    ng-if="!vm.interaction.closed">\n                                    <timer start-time="vm.interaction.createdAt" interval="1000">{{ days > 0 ? days + \'d\' :\n                                        \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                                    <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n                                </div> --\x3e\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                    \x3c!-- MS-CARD --\x3e\n                    <md-card class="template-7" layout="row" layout-align="space-between" ng-repeat="call in vm.tab.calls track by call.uniqueid">\n                        <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n                            <div layout="row">\n                                <span ng-if="call.answeredAt" class="text-boxed indigo-100-bg">\n                                    <timer start-time="call.answeredAt" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                                </span>\n                                <div flex></div>\n                                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                                    <timer start-time="call.disposedAt" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                                </span>\n                            </div>\n                            <div class="p-16">\n                                <div class="title h1">\n                                    <md-icon ng-if="!call.routeId" md-font-icon="icon-phone-incoming"></md-icon>\n                                    <md-icon ng-if="call.routeId" md-font-icon="icon-phone-outgoing"></md-icon>\n                                    {{ call.routeId ? call.destcalleridnum : call.calleridnum }}\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: {{ call.calleridname }}\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                        </div>\n                    </md-card>\n                    \x3c!-- / MS-CARD --\x3e\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">PERSONAL_INFO</div>\n                            <div class="subtitle secondary-text">\n                                <span translate="CONTACTMANAGER.CREATED_AT"></span> <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>\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 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)" aria-label="jscripty">\n                                                    <md-icon md-font-icon="icon-script"></md-icon>\n                                                </md-button>\n\n                                                <md-menu-content>\n                                                    <md-menu-item ng-if="vm.jscriptyProjects && vm.jscriptyProjects.rows.length" 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> {{project.name}}\n                                                        </md-button>\n                                                    </md-menu-item>\n                                                    <md-menu-item ng-if="!vm.jscriptyProjects || !vm.jscriptyProjects.rows.length">\n                                                        <md-button disabled="disabled" translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                                                            <md-icon md-font-icon="icon-script"></md-icon> No jscripty projects available\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">\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">\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">\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)" aria-label="sms">\n                                                    <md-icon md-font-icon="icon-message-text"></md-icon>\n                                                </md-button>\n\n                                                <md-menu-content>\n                                                    <md-menu-item ng-if="vm.smsAccounts && vm.smsAccounts.rows.length" 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> {{account.name}}\n                                                        </md-button>\n                                                    </md-menu-item>\n                                                    <md-menu-item ng-if="!vm.smsAccounts || !vm.smsAccounts.rows.length">\n                                                        <md-button disabled="disabled" translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                                                            <md-icon md-font-icon="icon-message-text"></md-icon> No sms accounts available\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">\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 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)" aria-label="email">\n                                                    <md-icon md-font-icon="icon-email"></md-icon>\n                                                </md-button>\n\n                                                <md-menu-content>\n                                                    <md-menu-item ng-if="vm.mailAccounts && vm.mailAccounts.rows.length" 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> {{account.name}}\n                                                        </md-button>\n                                                    </md-menu-item>\n                                                    <md-menu-item ng-if="!vm.mailAccounts || !vm.mailAccounts.rows.length">\n                                                        <md-button disabled="disabled" translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                                                            <md-icon md-font-icon="icon-email"></md-icon> No email accounts available\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">\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)" aria-label="fax">\n                                                    <md-icon md-font-icon="icon-deskphone"></md-icon>\n                                                </md-button>\n\n                                                <md-menu-content>\n                                                    <md-menu-item ng-if="vm.faxAccounts && vm.faxAccounts.rows.length" 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> {{account.name}}\n                                                        </md-button>\n                                                    </md-menu-item>\n                                                    <md-menu-item ng-if="!vm.faxAccounts || !vm.faxAccounts.rows.length">\n                                                        <md-button disabled="disabled" translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                                                            <md-icon md-font-icon="icon-deskphone"></md-icon> No fax accounts available\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="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\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}}</md-option>\n                                            <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em></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">{{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></form>\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 FIELDS</div>\n                            <form name="vm.customFieldsForm" novalidate>\n\n                                \x3c!-- START INPUT LIST --\x3e\n                                <md-input-container class="md-block" ng-if="!vm.contact.ListId">\n                                    <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                                    <md-select name="list" 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.tab.userLists.rows">#{{list.id}} - {{list.name}}</md-option>\n                                        </md-optgroup>\n                                    </md-select>\n                                </md-input-container>\n                                <md-input-container class="md-block" ng-if="vm.contact.ListId">\n                                    <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                                    <md-select ng-disabled="!vm.newContact" name="list" ng-model="vm.contact.ListId" required>\n                                        <md-optgroup label="Lists">\n                                            <md-option ng-value="list.id" ng-repeat="list in vm.tab.lists.rows">#{{list.id}} - {{list.name}}</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]"></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]"></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">{{value.value}}</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}}<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                                        <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                                </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="interaction-content">\n                <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'"></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()">\n                    <md-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.DISPOSITIONS">Dispositions</label>\n                    <md-select name="disposition" ng-model="vm.choice" required>\n                        <md-option ng-value="g.name" ng-repeat="g in vm.dispositions.rows">{{ g.name }}</md-option>\n                        <md-option ng-value="gd.name" ng-repeat="gd in vm.globalDispositions.rows">{{ gd.name }}</md-option>\n                    </md-select>\n                </md-input-container>\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\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">{{ 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()">\n                {{(vm.choice ? \'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/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="Voice">\n                <div ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\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\'" class="md-padding">\n                    </md-content>\n                </div>\n            </md-tab>\n            <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="Bull">\n                <div ng-controller="AgentHomeAbandonedBullController as vm_bull">\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\'" class="md-padding">\n                    </md-content>\n                </div>\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 ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header blue-bg">\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.query.filter = query" on-collapse="vm_bull.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm_bull.pickerModel.dateStart" ng-click="vm_bull.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm_bull.localizationMap" ng-model="vm_bull.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_bull.getContacts()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm_bull.query.lastAssignedTo" ng-change="vm_bull.getContacts()">\n                    <md-option ng-value="vm_bull.currentUser.name" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div ng-if="vm_bull.queues.count" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm_bull.query.queue" ng-change="vm_bull.getContacts()">\n                    <md-option ng-value="vm_bull.defaultQueues" ng-if="vm_bull.queues.count > 1"><em translate="DASHBOARDS.ALL">All</em></md-option>\n                    <md-option ng-value="queue.name" ng-repeat="queue in vm_bull.queues.rows">{{queue.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button interaction-reload" ng-click="vm_bull.refresh && vm_bull.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n                <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">{{\'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.getContacts">\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="disposition">{{\'DASHBOARDS.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.contacts.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="contact in vm_bull.contacts.rows">\n                    <td md-cell class="id">{{contact.id}}</td>\n                    <td md-cell class="firstName">{{contact.calleridname}}</td>\n                    <td md-cell class="phone">\n                        \x3c!-- click to call directive --\x3e\n                        <ms-click-to-call target="contact.calleridnum" license="vm_home.license" disabled="contact.lastAssignedTo !== vm_bull.currentUser.name"></ms-click-to-call>\n                        \x3c!--  / click to call directive --\x3e\n                    </td>\n                    <td md-cell class="list">{{vm_bull.queuesMap[contact.queue]}}</td>\n                    <td md-cell class="list">{{contact.queuecallerabandonAt ? (contact.queuecallerabandonAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.queuecallerexitAt ? (contact.queuecallerexitAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.queuecallerexitreason}}</td>\n                    <td md-cell class="list">{{contact.disposition}}</td>\n                    <td md-cell class="actions">\n                        <md-switch no-margin ng-if="contact.lastAssignedTo === vm_bull.currentUser.name || !contact.lastAssignedTo" ng-disabled="vm_bull.disable[contact.id]" ng-model="contact.assigned" aria-label="reserved" ng-change="vm_bull.reserved(contact, contact.disposition)">\n                            \x3c!-- <span>{{ contact.assigned ? \'DASHBOARDS.RESERVED\' : \'DASHBOARDS.FREE\' | translate }}</span> --\x3e\n                        </md-switch>\n                    </td>\n                    <td md-cell class="list">{{contact.lastAssignedTo}}</td>\n                    <td md-cell class="actions">\n                        <md-menu ng-if="contact.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-menu>\n                                        <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="vm_bull.disposition.length" ng-repeat="disposition in vm_bull.disposition">\n                                                <md-button ng-click="vm_bull.reserved(contact, disposition.name)">{{disposition.name}}</md-button>\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\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.contacts.count}}" md-on-paginate="vm_bull.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header blue-bg">\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.query.filter = query" on-collapse="vm_voice.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm_voice.pickerModel.dateStart" ng-click="vm_voice.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm_voice.localizationMap" ng-model="vm_voice.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_voice.getContacts()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm_voice.query.lastAssignedTo" ng-change="vm_voice.getContacts()">\n                    <md-option ng-value="vm_voice.currentUser.name" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div ng-if="vm_voice.queues.count" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm_voice.query.queue" ng-change="vm_voice.getContacts()">\n                    <md-option ng-value="vm_voice.defaultQueues" ng-if="vm_voice.queues.count > 1"><em translate="DASHBOARDS.ALL">All</em></md-option>\n                    <md-option ng-value="queue.name" ng-repeat="queue in vm_voice.queues.rows">{{queue.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button interaction-reload" ng-click="vm_voice.refresh && vm_voice.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n                <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">{{\'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.getContacts">\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="disposition">{{\'DASHBOARDS.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.contacts.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="contact in vm_voice.contacts.rows">\n                    <td md-cell class="id">{{contact.id}}</td>\n                    <td md-cell class="firstName">{{contact.calleridname}}</td>\n                    <td md-cell class="phone">\n                        \x3c!-- click to call directive --\x3e\n                        <ms-click-to-call target="contact.calleridnum" license="vm_home.license" disabled="contact.lastAssignedTo !== vm_voice.currentUser.name"></ms-click-to-call>\n                        \x3c!--  / click to call directive --\x3e\n                    </td>\n                    <td md-cell class="list">{{vm_voice.queuesMap[contact.queue]}}</td>\n                    <td md-cell class="list">{{contact.queuecallerabandonAt ? (contact.queuecallerabandonAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.disposition}}</td>\n                    <td md-cell class="actions">\n                        <md-switch no-margin ng-if="contact.lastAssignedTo === vm_voice.currentUser.name || !contact.lastAssignedTo" ng-disabled="vm_voice.disable[contact.id]" ng-model="contact.assigned" aria-label="reserved" ng-change="vm_voice.reserved(contact, contact.disposition)">\n                            \x3c!-- <span>{{ contact.assigned ? \'DASHBOARDS.RESERVED\' : \'DASHBOARDS.FREE\' | translate }}</span> --\x3e\n                        </md-switch>\n                    </td>\n                    <td md-cell class="list">{{contact.lastAssignedTo}}</td>\n                    <td md-cell class="actions">\n                        <md-menu ng-if="contact.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-menu>\n                                        <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="vm_voice.disposition.length" ng-repeat="disposition in vm_voice.disposition">\n                                                <md-button ng-click="vm_voice.reserved(contact, disposition.name)">{{disposition.name}}</md-button>\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\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.contacts.count}}" md-on-paginate="vm_voice.getContacts" md-page-select></md-table-pagination>\n\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" 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></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 ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\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\'"></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\'"></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\'"></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\'"></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\'"></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\'"></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)"></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\'"></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)"></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\'"></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)"></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\'"></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)"></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\'"></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)"></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\'"></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\'"></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\'"></div>\n    </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'chat\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getChatInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getChatInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getChatInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_WEBSITE">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getChatInteractions()">\n                    <md-option ng-value="chatAccount.id" ng-repeat="chatAccount in vm.chatAccounts.rows">{{chatAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getChatInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getChatInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-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.getChatInteractions">\n                <tr md-row>\n                    <th md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.WEBSITE\' | 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.chatInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="chatInteraction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': chatInteraction.unread}">\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{chatInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!chatInteraction.closed && chatInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in chatInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!chatInteraction.closed && chatInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'chat\')" layout-margin>{{chatInteraction.unread}}</span>\n                                <md-icon ng-if="chatInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(chatInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{chatInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell>\n                        <div layout="row" ng-if="chatInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{chatInteraction.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="font-size-10 text-truncate">{{chatInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!chatInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell>\n                        <span ng-if="chatInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="chatInteraction.disposition">- {{chatInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="chatInteraction.closed">{{chatInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!chatInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="chatInteraction.substatus"> - {{chatInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(chatInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showChatInteraction($event, chatInteraction)" md-cell class="chatAccount">\n                        {{ vm.getChatWebsiteLabel(chatInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="chatInteraction.Tags.length">\n                            <div ng-if="chatInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': chatInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{chatInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="chatInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in chatInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showChatInteraction($event, chatInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Chat\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadChatInteraction($event, chatInteraction)" translate="DASHBOARDS.DOWNLOAD">\n                                        Download Chat\n                                    </md-button>\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: \'{{\'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>\n    <md-toolbar class="md-table-toolbar md-default table-header red-bg">\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.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div layout="column">\n                <span class="font-size-10" translate="CONTACTMANAGER.SELECT_LIST">Select a list</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.ListId" ng-change="vm.getContacts()">\n                    <md-option ng-value="vm.defaultLists" ng-if="vm.lists.count > 1"><em translate="CONTACTMANAGER.ALL_CONTACTS">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            </div>\n            <div layout="column">\n                <span class="font-size-10" translate="CONTACTMANAGER.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getContacts()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button interaction-reload" ng-click="vm.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button interaction-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    </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">ID</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="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 tranlsate="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">{{contact.firstName}} {{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($event, 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">{{contact.fax}}</td>\n                    <td ng-click="vm.openContact(contact.id)" md-cell class="email">{{contact.email}}</td>\n                    <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{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">, </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="Voice">\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="Bull">\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="Chat">\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="Email">\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="Sms">\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="Open Channel">\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="Fax">\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-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" ngCloak>\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 tranlsate="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 tranlsate="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>{{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></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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_chat.getSize(vm_chat.chatQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_fax.getSize(vm_fax.faxQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_mail.getSize(vm_mail.mailQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_openchannel.getSize(vm_openchannel.openchannelQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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                        \x3c!-- <th md-column>{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\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_sms.getSize(vm_sms.smsQueues)">\n                        <td md-cell colspan="2">\n                            <div layout="row" layout-align="center center">\n                                <span tranlsate="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                        \x3c!-- <td md-cell class="dialActive ">\n                            <md-icon ng-if="queue.type === \'outbound\'" md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                            <md-icon ng-if="queue.type === \'inbound\'" md-colors="{color: \'green\'}" md-font-icon="icon-check"></md-icon>\n                        </td> --\x3e\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 tranlsate="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" ngCloak>\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 tranlsate="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 tranlsate="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>{{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></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 ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'fax\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getFaxInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getFaxInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getFaxInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_ACCOUNT">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getFaxInteractions()">\n                    <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.faxAccounts.rows">{{faxAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getFaxInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getFaxInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-button>\n            </div>\n            <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n                <md-button class="md-icon-button interaction-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)">{{ 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>\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 md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.ACCOUNT\' | 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.faxInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="faxInteraction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': faxInteraction.unread}">\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{faxInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!faxInteraction.closed && faxInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in faxInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!faxInteraction.closed && faxInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'fax\')" layout-margin>{{faxInteraction.unread}}</span>\n                                <md-icon ng-if="faxInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(faxInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{faxInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell>\n                        <div layout="row" ng-if="faxInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{faxInteraction.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="font-size-10 text-truncate">{{faxInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!faxInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell>\n                        <span ng-if="faxInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="faxInteraction.disposition">- {{faxInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="faxInteraction.closed">{{faxInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!faxInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="faxInteraction.substatus"> - {{faxInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(faxInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showFaxInteraction($event, faxInteraction)" md-cell class="faxAccount">\n                        {{ vm.getFaxAccountLabel(faxInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="faxInteraction.Tags.length">\n                            <div ng-if="faxInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': faxInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{faxInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="faxInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in faxInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showFaxInteraction($event, faxInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Fax\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadFaxInteraction($event, faxInteraction)" translate="DASHBOARDS.DOWNLOAD">\n                                        Download Fax\n                                    </md-button>\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: \'{{\'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 ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'mail\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getMailInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getMailInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getMailInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column" ng-if="vm.query.closed == 0">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_SUBSTATUS">Select a sub status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.substatus" ng-change="vm.getMailInteractions()">\n                    <md-option ng-repeat="subStatus in vm.subStatuses.rows" ng-value="subStatus.name">{{subStatus.name}}</md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NONE"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_ACCOUNT">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getMailInteractions()">\n                    <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.mailAccounts.rows">{{mailAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getMailInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getMailInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-button>\n            </div>\n            <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n                <md-button class="md-icon-button interaction-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)">{{ 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>\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 md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n                    <th md-column md-order-by="subject" style="width:200px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.ACCOUNT\' | 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.mailInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="mailInteraction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': mailInteraction.unread}">\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{mailInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!mailInteraction.closed && mailInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in mailInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!mailInteraction.closed && mailInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'mail\')" layout-margin>{{mailInteraction.unread}}</span>\n                                <md-icon ng-if="mailInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(mailInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <div ng-if="vm.setting.enableEmailPreview && mailInteraction.lastMsgBody" class="tooltip-preview">\n                            <span class="text-truncate font-size-12" style="width:200px">{{mailInteraction.subject}}</span>\n                            <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                                <md-card-content>{{mailInteraction.lastMsgBody}}<br>...</md-card-content>\n                            </md-card>\n                        </div>\n                        <span ng-if="!mailInteraction.lastMsgBody || !vm.setting.enableEmailPreview" class="text-truncate font-size-12" style="width:200px">{{mailInteraction.subject}}</span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{mailInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <div layout="row" ng-if="mailInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{mailInteraction.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="font-size-10 text-truncate">{{mailInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!mailInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell>\n                        <span ng-if="mailInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="mailInteraction.disposition">- {{mailInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="mailInteraction.closed">{{mailInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!mailInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="mailInteraction.substatus"> - {{mailInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(mailInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showMailInteraction($event, mailInteraction)" md-cell class="mailAccount">\n                        {{ vm.getMailAccountLabel(mailInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="mailInteraction.Tags.length">\n                            <div ng-if="mailInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': mailInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{mailInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="mailInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in mailInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showMailInteraction($event, mailInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Mail\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadMailInteraction($event, mailInteraction, 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.downloadMailInteraction($event, mailInteraction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                        Download without attachments\n                                    </md-button>\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: \'{{\'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 red-bg">\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.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div layout="column">\n                <span class="font-size-10" translate="CONTACTMANAGER.SELECT_LIST">Select a list</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.ListId" ng-change="vm.getContacts()">\n                    <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                    <md-option ng-value="vm.defaultLists" ng-if="vm.lists.count > 1"><em translate="CONTACTMANAGER.ALL_CONTACTS">All</em></md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <span class="font-size-10" translate="CONTACTMANAGER.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getContacts()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button interaction-reload" ng-click="vm.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n            </md-button>\n            <md-button class="md-icon-button interaction-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    </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">ID</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="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 tranlsate="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">{{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">{{contact.fax}}</td>\n                    <td ng-click="vm.openContact($event, contact)" md-cell class="email">{{contact.email}}</td>\n                    <td ng-click="vm.openContact($event, contact)" md-cell class="list">{{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">, </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\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 ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'openchannel\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getOpenchannelInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getOpenchannelInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getOpenchannelInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_ACCOUNT">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getOpenchannelInteractions()">\n                    <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">{{openchannelAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getOpenchannelInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getOpenchannelInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-button>\n            </div>\n            <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n                <md-button class="md-icon-button interaction-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)">{{ 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>\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 md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.ACCOUNT\' | 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.openchannelInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="openchannelInteraction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': openchannelInteraction.unread}">\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{openchannelInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!openchannelInteraction.closed && openchannelInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in openchannelInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!openchannelInteraction.closed && openchannelInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'openchannel\')" layout-margin>{{openchannelInteraction.unread}}</span>\n                                <md-icon ng-if="openchannelInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(openchannelInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{openchannelInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell>\n                        <div layout="row" ng-if="openchannelInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{openchannelInteraction.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="font-size-10 text-truncate">{{openchannelInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!openchannelInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell>\n                        <span ng-if="openchannelInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="openchannelInteraction.disposition">- {{openchannelInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="openchannelInteraction.closed">{{openchannelInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!openchannelInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="openchannelInteraction.substatus"> - {{openchannelInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(openchannelInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" md-cell class="openchannelAccount">\n                        {{ vm.getOpenchannelAccountLabel(openchannelInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="openchannelInteraction.Tags.length">\n                            <div ng-if="openchannelInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': openchannelInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{openchannelInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="openchannelInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in openchannelInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showOpenchannelInteraction($event, openchannelInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Openchannel\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadOpenchannelInteraction($event, openchannelInteraction)" translate="DASHBOARDS.DOWNLOAD">\n                                        Download Openchannel\n                                    </md-button>\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: \'{{\'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/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">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="VOICE.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'VOICE.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getVoiceRecordings()" placeholder="{{ \'VOICE.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="VOICE.SELECT_TYPE">Select a type</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.type" ng-change="vm.getVoiceRecordings()">\n                    <md-option value="internal" translate="VOICE.INTERNAL">Internal</md-option>\n                    <md-option value="inbound" translate="VOICE.INBOUND">Inbound</md-option>\n                    <md-option value="outbound" translate="VOICE.OUTBOUND">Outbound</md-option>\n                    <md-option value="dialer" translate="VOICE.DIALER">Dialer</md-option>\n                    <md-option ng-value="null" translate="VOICE.ALL">All</md-option>\n                </md-select>\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.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"></th>\n                </tr>\n            </thead>\n            <tbody md-body>\n                <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="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"></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"></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">\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-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></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">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n            \x3c!-- <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar> --\x3e\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="MOTIONDIALER.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'VOICE.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getScheduledCalls()" placeholder="{{ \'MOTIONDIALER.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div ng-if="vm.queueCampaigns.count" layout="column">\n                <span class="font-size-10" translate="MOTIONDIALER.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.VoiceQueueId" ng-change="vm.getScheduledCalls()">\n                    <md-option ng-value="undefined"><em translate="MOTIONDIALER.ALL">All</em></md-option>\n                    <md-option ng-value="queueCampaign.id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">{{queueCampaign.name}}</md-option>\n                </md-select>\n            </div>\n            \x3c!-- <div layout="column">\n                        <span class="font-size-10" translate="MOTIONDIALER.SELECT_TYPE">Select type</span>\n                        <md-select class="font-size-12 no-margin" ng-model="vm.query.recallme" ng-change="vm.getScheduledCalls()">\n                            <md-option ng-value="undefined"><em translate="MOTIONDIALER.ALL">All</em></md-option>\n                            <md-option ng-value="1" translate="MOTIONDIALER.RECALLME">Recall me</md-option>\n                            <md-option ng-value="0" translate="MOTIONDIALER.INQUEUE">Recall in queue</md-option>\n                        </md-select>\n                    </div> --\x3e\n            <md-button class="md-icon-button" ng-click="vm.getScheduledCalls()" aria-label="refresh scheuled 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 tranlsate="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>{{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\' }}"></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></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ngCloak>\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm.getColorByChannel(\'sms\')">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="DASHBOARDS.INTERACTIONS">Interactions</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getSmsInteractions()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_READ_UNREAD">Select Read/Unread</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.read" ng-change="vm.getSmsInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.UNREAD">READ</md-option>\n                    <md-option value="1" translate="DASHBOARDS.READ">UNREAD</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_STATUS">Select a status</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.closed" ng-change="vm.getSmsInteractions()">\n                    <md-option value="0" translate="DASHBOARDS.OPENED">OPENED</md-option>\n                    <md-option value="1" translate="DASHBOARDS.CLOSED">CLOSED</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_ACCOUNT">Select an account</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.account" ng-change="vm.getSmsInteractions()">\n                    <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.smsAccounts.rows">{{smsAccount.name}}</md-option>\n                    <md-option ng-value="null" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.UserId" ng-change="vm.getSmsInteractions()">\n                    <md-option ng-value="vm.user.id" translate="DASHBOARDS.ME"></md-option>\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                </md-select>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_TAG">Select a tag</span>\n                <md-select id="tags" placeholder="Tags" multiple="true" class="font-size-12 no-margin" ng-model="vm.query.tag" ng-change="vm.getSmsInteractions()" style="color:white;">\n                    <md-option ng-repeat="tag in vm.tags.rows" ng-value="tag.id">{{tag.name}}</md-option>\n                </md-select>\n            </div>\n            <div layout="column">\n                <md-button class="md-icon-button interaction-reload" 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-button>\n            </div>\n            <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n                <md-button class="md-icon-button interaction-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)">{{ 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>\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 md-column md-order-by="id">ID</th>\n                    <th md-column style="width:15px">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                    </th>\n                    <th md-column style="width:180px">{{\'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 style="width:80px">{{\'DASHBOARDS.AGENT\' | translate}}</th>\n                    <th md-column>{{\'DASHBOARDS.ACCOUNT\' | 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.smsInteractions.rows.length">\n                    <td md-cell colspan="10">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available Interaction</span>\n                        </div>\n                    </td>\n                </tr>\n                <tr md-row ng-repeat="smsInteraction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': smsInteraction.unread}">\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell class="id">\n                        <div layout="row" layout-align="start center">\n                            <span class="font-size-10">{{smsInteraction.id}}</span>\n                        </div>\n                    </td>\n                    <td md-cell>\n                        <div ng-if="!smsInteraction.closed && smsInteraction.Users.length">\n                            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                            <md-tooltip>\n                                <span ng-repeat="u in smsInteraction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersByKey[u.id].fullname | translate }}<span ng-if="!$last">, </span></span>\n                            </md-tooltip>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell>\n                        <div layout="row" layout-align="start center">\n                            <div layout="column">\n                                <span ng-if="!smsInteraction.closed && smsInteraction.unread" class="badge white-fg" ng-class="vm.getColorByChannel(\'sms\')" layout-margin>{{smsInteraction.unread}}</span>\n                                <md-icon ng-if="smsInteraction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n                            </div>\n                            <span class="font-size-12 text-truncate" style="width:180px" layout-margin>{{vm.getContactLabel(smsInteraction)}}</span>\n                        </div>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell>\n                        <span class="font-size-10 text-truncate">{{smsInteraction.createdAt | formatdate }}</span>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell>\n                        <div layout="row" ng-if="smsInteraction.lastMsgAt">\n                            <span>\n                                <md-icon md-font-icon="{{smsInteraction.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="font-size-10 text-truncate">{{smsInteraction.lastMsgAt | formatdate }}</span>\n                            </div </div> <span ng-if="!smsInteraction.lastMsgAt">No messages</span>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell>\n                        <span ng-if="smsInteraction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="smsInteraction.disposition">- {{smsInteraction.disposition}}</span></span>\n                        <md-tooltip ng-if="smsInteraction.closed">{{smsInteraction.closedAt | formatdate }}</md-tooltip>\n                        <span ng-if="!smsInteraction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="smsInteraction.substatus"> - {{smsInteraction.substatus}}</span></span>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell class="user">\n                        <span class="font-size-12 text-truncate" style="width:120px">{{vm.getUserLabel(smsInteraction)}}</span>\n                    </td>\n                    <td ng-click="vm.showSmsInteraction($event, smsInteraction)" md-cell class="smsAccount">\n                        {{ vm.getSmsAccountLabel(smsInteraction) }}\n                    </td>\n                    <td md-cell>\n                        <div ng-if="smsInteraction.Tags.length">\n                            <div ng-if="smsInteraction.Tags.length == 1" layout="column" layout-align="center center">\n                                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': smsInteraction.Tags[0].color }"></md-icon>\n                                <span class="text-truncate">{{smsInteraction.Tags[0].name}}</span>\n                            </div>\n                            <div ng-if="smsInteraction.Tags.length > 1" layout="column" layout-align="center center">\n                                <md-tooltip md-direction="left" layout="row">\n                                    <span ng-repeat="tag in smsInteraction.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">\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="2">\n                                <md-menu-item>\n                                    <md-button ng-click="vm.showSmsInteraction($event, smsInteraction)" translate="DASHBOARDS.SHOW">\n                                        Show Sms\n                                    </md-button>\n                                </md-menu-item>\n                                <md-menu-item>\n                                    <md-button ng-click="vm.downloadSmsInteraction($event, smsInteraction)" translate="DASHBOARDS.DOWNLOAD">\n                                        Download Sms\n                                    </md-button>\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: \'{{\'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">\n        <div class="md-toolbar-tools">\n            <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n            <ms-search-bar on-search="vm.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="VOICE.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'VOICE.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getVoiceCalls()" placeholder="{{ \'VOICE.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="VOICE.SELECT_TYPE">Select a type</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.type" ng-change="vm.getVoiceCalls()">\n                    <md-option value="internal" translate="VOICE.INTERNAL">Internal</md-option>\n                    <md-option value="inbound" translate="VOICE.INBOUND">Inbound</md-option>\n                    <md-option value="outbound" translate="VOICE.OUTBOUND">Outbound</md-option>\n                    <md-option value="dialer" translate="VOICE.DIALER">Dialer</md-option>\n                    <md-option ng-value="null" translate="VOICE.ALL">All</md-option>\n                </md-select>\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.getVoiceCalls">\n                <tr md-row>\n                    <th md-column md-order-by="id">ID</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>{{ \'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="8">\n                        <div layout="row" layout-align="center center">\n                            <span tranlsate="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">{{voiceCall.type}}</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="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\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>{{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>{{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="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/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 }} </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\'"></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\'"></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\'"></div>\n                    </div>\n                </div>\n            </md-content>\n            \x3c!-- / CONTENT --\x3e\n\n            \x3c!-- FOOTER --\x3e\n            <div ng-if="!vm.interaction.closed && vm.tab.channel != \'mail\' && vm.tab.channel !== \'fax\' && (vm.tab.channel != \'sms\' || !vm.tab.spy)" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'"></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\'"></md-card>\n    </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),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" 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" 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" 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" 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">\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.deleteAttachment(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">\n                <md-item-template>\n                    <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16"></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 }} - {{ 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/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\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()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.DISPOSITIONS">Dispositions</label>\n                <md-select name="disposition" ng-model="vm.interaction.disposition" required>\n                    \x3c!-- <md-select ng-disabled="vm.interaction.closed && vm.interaction.disposition" name="disposition" ng-model="vm.interaction.disposition" required> --\x3e\n                    <md-option ng-value="null">NONE</md-option>\n                    <md-option ng-value="d.name" ng-repeat="d in vm.dispositions.rows">{{ d.name }}</md-option>\n                    <md-option ng-value="gd.name" ng-repeat="gd in vm.globalDispositions.rows">{{ gd.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\n            <md-input-container class="md-block">\n                <label translate="DASHBOARDS.NOTE">Note</label>\n                \x3c!-- <textarea ng-disabled="vm.interaction.closed && vm.interaction.disposition" ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea> --\x3e\n                <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></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        \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.saveDisposition(true)" class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && vm.interaction.disposition" 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)" class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.interaction.disposition" 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(false)" class="send-button md-accent md-raised" ng-if="vm.interaction.closed" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n                    DISPOSE\n                </md-button>\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            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <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="DASHBOARDS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.transfer.type" required>\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                <div ng-messages="transferForm.type.$error" ng-show="transferForm.type.$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="DASHBOARDS.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.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">{{ 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" 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">Customer IP</p>\n            <h4>{{item.customerIp}}</h4>\n        </div>\n    </md-list-item>\n    <md-divider></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>\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>\n                    </md-input-container>\n\n                    <md-input-container ng-if="vm.tab.channel != \'fax\'" 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>\n                    </md-input-container>\n\n                    <md-input-container ng-if="vm.tab.channel == \'fax\'" 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>\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}} - <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\'"></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\'"></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\'"></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-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\'"></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\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\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\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\n    <div ng-if="item.ChatWebsiteId">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'"></div>\n    </div>\n    <div ng-if="item.MailAccountId">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'"></div>\n    </div>\n\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-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\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <md-list-item ng-if="item.Tags.length">\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",'<md-content layout="column" layout-align="end center">\n    <div layout-margin>\n        <md-input-container>\n            <md-select ng-model="vm.channel" placeholder="Channel">\n                <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n                <md-option ng-value="\'voice\'" translate="DASHBOARDS.VOICE">Voice</md-option>\n                <md-option ng-value="\'chat\'">Chat</md-option>\n                <md-option ng-value="\'mail\'">Mail</md-option>\n                <md-option ng-value="\'sms\'">Sms</md-option>\n                <md-option ng-value="\'fax\'">Fax</md-option>\n                <md-option ng-value="\'openchannel\'">Openchannel</md-option>\n            </md-select>\n        </md-input-container>\n    </div>\n    <div layout-margin layout="row" layout-align="space-between center">\n        <div flex-gt-xs>\n            <md-datepicker ng-model="vm.dateFrom" md-placeholder="Enter date"></md-datepicker>\n        </div>\n\n        <div flex-gt-xs>\n            <md-datepicker ng-model="vm.dateTo" md-placeholder="Enter date"></md-datepicker>\n        </div>\n    </div>\n</md-content>\n\n<div id="timeline" ms-timeline="vm.timelineOptions" layout="column" ng-if="vm.journey && vm.journey.length">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey | getChannelByItem:vm.channel:vm.dateFrom:vm.dateTo | orderBy:\'-createdAt\'">\n        <div class="timeline-card">\n            <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n                <div class="header p-6" layout="row" layout-align="space-between center">\n\n                    <md-button class="md-fab md-mini" aria-label="icon-channel" ng-class="vm.getColorByItem(item) + \'-bg\'">\n                        <md-icon ng-if="item.FaxAccountId" md-font-icon="icon-deskphone"></md-icon>\n                        <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-google-earth"></md-icon>\n                        <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text"></md-icon>\n                        <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email"></md-icon>\n                        <md-icon ng-if="item.ChatWebsiteId" md-font-icon="icon-hangouts"></md-icon>\n                        <md-icon ng-if="item.amaflags" md-font-icon="icon-phone"></md-icon>\n                    </md-button>\n\n                    <div class="info" layout="column" ng-init="item.showMore = false">\n                        <span class="font-size-12 text-truncate">#{{item.id}} - {{ item.Account.key || item.destination }}</span>\n                        <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                        <span>\n                            <a class="toggle-details md-accent-color" ng-hide="item.showMore" ng-click="item.showMore = !item.showMore" translate="DASHBOARDS.SHOW_DETAILS">\n                                Show Details\n                            </a>\n                            <a class="toggle-details md-accent-color" ng-show="item.showMore" ng-click="item.showMore = !item.showMore" translate="DASHBOARDS.HIDE_DETAILS">\n                                Hide Details\n                            </a>\n                        </span>\n                    </div>\n\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\n                </div>\n\n                <div ng-if="item.showMore">\n                    <div ng-if="!item.amaflags" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'"></div>\n                    <div ng-if="item.amaflags" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'"></div>\n                </div>\n\n                <md-divider></md-divider>\n\n                <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n                    <div ng-if="item.closed && !amaflags" class="text-truncate white-fg">\n                        <span class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.CLOSED\' | translate}} ({{ item.disposition || (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate)}})">{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.CLOSED\' | translate}} ({{ item.disposition || (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }})</span>\n                    </div>\n                    <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && !item.amaflags" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}<span ng-if="item.substatus"> - {{ item.substatus }}</span></span>\n                    <span ng-if="item.amaflags" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.DISPOSITION\' | translate}}: {{ item.userDisposition || \'No Dispose\'}}">{{ \'DASHBOARDS.DISPOSITION\' | translate}}: {{ item.userDisposition || (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate)}}</span>\n                    <div flex></div>\n                    <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && vm.isMyAccount(item)" ng-disabled="item.amaflags" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction($event, item)">\n                        <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n                    </md-button>\n\n                </div>\n            </md-card>\n        </div>\n    </div>\n    \x3c!-- / TIMELINE ITEM --\x3e\n</div>\n<div ng-if="!vm.journey || !vm.journey.length" 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>{{item.source ? item.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="DASHBOARDS.DESTINATION">Destination</p>\n            <h4>{{item.destination ? item.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="DASHBOARDS.CALLERID">Caller Id</p>\n            <h4>{{item.callerid ? item.callerid : \'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="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.UNIQUEID">Uniqueid</p>\n            <h4>{{item.uniqueid ? item.uniqueid : \'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="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 ng-if="item.threadId" translate="DASHBOARDS.PUBLIC">Public</h4>\n            <h4 ng-if="!item.threadId" translate="DASHBOARDS.PRIVATE">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                    {{ vm.getLabelByMessage(message) }} - {{message.createdAt | date: \'medium\'}}\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                {{ vm.getLabelByMessage(message) }} - {{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                    {{ vm.getLabelByMessage(message) }} - {{message.createdAt | date: \'medium\'}}\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 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>\n        <div ng-if="!message.AttachmentId" 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'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.timelineOptions" 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">\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></md-tooltip>\n                        <div layout="row" layout-align="start center">\n                            <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon><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)">{{ 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]">[{{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)"><strong>{{message.from}}</strong>\n                                        <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16"></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">{{ message.originTo || message.to }}</span></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"><em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are registered as a</span> <span class="blue-grey">CC</span></em></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"><em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are registered as a</span> <span class="red-fg">BCC</span></em></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">{{message.from}}</span>\n                                    <span class="detail">{{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">{{ message.originCc }}</span>\n                                    <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">{{ message.cc }}</span>\n                                    <span class="detail" ng-if="message.direction === \'out\' && message.cc">{{ message.cc }}</span>\n                                    \x3c!-- End retrocompatibility --\x3e\n                                    <span class="detail" ng-if="message.bcc">{{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\'">{{message.from.indexOf(vm.contact.email) >= 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 || 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                            \x3c!-- <md-button 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> --\x3e\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                            <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></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></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" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span></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" 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></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>\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">\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><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)">{{ 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>\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 interaction...</span>'),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>'),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"> - {{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" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\'"></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\'"></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\'"></div>\n            </div>\n        </div>\n        <md-button ng-if="vm.tab.channel !== \'mail\'" class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)">\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>\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                <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",'<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>\n<md-menu 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></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>\n            <md-button ng-click="vm.downloadInteraction(vm.interaction, 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.downloadInteraction(vm.interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                Download without attachments\n            </md-button>\n        </md-menu-item>\n    </md-menu-content>\n</md-menu>'),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>'),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" interval="1000">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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" 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            \x3c!--  NOTE: aggoiungere nel controller ng-if="vm.hasPermission()" --\x3e\n            <md-tabs ng-if="vm.hasPermission()" 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-tabs>\n        </div>\n        \x3c!-- END CONTENT --\x3e\n\n        <md-content ng-if="!vm.hasPermission()" 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>\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/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-if="!vm.newFaxAccount || (vm.newFaxAccount && TrunkId.canSelect)" ng-disabled="!TrunkId.canSelect">{{ 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-if="!vm.newFaxAccount || (vm.newFaxAccount && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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"></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">{{ 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" 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">{{ 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" 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">{{ 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">{{ 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/faxDispositions/dialog.html",'<md-dialog class="faxDisposition-dialog" aria-label="New FaxDisposition">\n    <form name="faxDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.faxDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="faxDispositionForm[\'name\'].$error" ng-show="faxDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxDisposition" ng-click="vm.saveFaxDisposition()" class="send-button md-accent md-raised" ng-disabled="faxDispositionForm.$invalid || faxDispositionForm.$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.newFaxDisposition" ng-click="vm.addNewFaxDisposition()" class="send-button md-accent md-raised" ng-disabled="faxDispositionForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXDISPOSITION" translate-attr-aria-label="FAX.ADD_FAXDISPOSITION">\n                    ADD FAXDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxDisposition" ng-click="vm.deleteFaxDisposition($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/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                        <span ng-if="vm.faxAccount.exten">{{vm.faxAccount.exten}}</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) || (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">{{ 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">{{ 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" 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, 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" 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" 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                </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 class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="FaxAccountFaxDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountFaxDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="FAX.FAXDISPOSITIONS">FaxDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event)" aria-label="add faxDisposition" translate translate-attr-label="FAX.ADD_FAXDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedFaxAccountFaxDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedFaxAccountFaxDispositions.length}} {{vm_dc.selectedFaxAccountFaxDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountFaxDispositions" 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.deleteSelectedFaxAccountFaxDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAXACCOUNTS.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.selectedFaxAccountFaxDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountFaxDispositions">\n                                        <tr md-row>\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="createdAt">{{ \'FAX.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="faxDisposition" md-select-id="id" ng-repeat="faxDisposition in vm_dc.faxAccountFaxDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event, faxDisposition)" md-cell>{{faxDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event, faxDisposition)" md-cell>{{faxDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event, faxDisposition)" md-cell>{{faxDisposition.createdAt | date:\'medium\'}}</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\n                                                    <md-menu-content width="3">\n                                                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                                            <md-button ng-click="vm_dc.createOrEditFaxAccountFaxDisposition($event, faxDisposition)" translate="FAX.EDIT_FAXDISPOSITION">\n                                                                Edit FaxDisposition\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(faxDisposition, $event)" translate="FAX.DELETE_FAXDISPOSITION">\n                                                                Delete FaxDisposition\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.faxAccountFaxDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="FAX.NO_FAXDISPOSITION_AVAILABLE">No faxdisposition available</span>\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.faxAccountFaxDispositions.count}}" md-on-paginate="vm_dc.getFaxAccountFaxDispositions" 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="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-ligth" 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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="FAXACCOUNTS.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.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">{{ \'FAX.ID\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'FAX.STARTEDAT\' | translate }}</th>\n                                            <th md-column>{{ \'FAX.CONTACT\' | translate }}</th>\n                                            <th md-column>{{ \'FAX.AGENT\' | translate }}</th>\n                                            <th md-column md-order-by="closedAt">{{ \'FAX.CLOSEDAT\' | translate }}</th>\n                                            <th md-column md-order-by="disposition">{{ \'FAX.DISPOSITION\' | translate }}</th>\n                                            <th md-column md-order-by="note">{{ \'FAX.NOTES\' | translate }}</th>\n                                            <th md-column md-order-by="tag">{{ \'FAX.TAGS\' | translate }}</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">\n                                            <td md-cell>{{interaction.id}}</td>\n                                            <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.Contact.firstName}}</td>\n                                            <td md-cell>{{interaction.Owner.name}}</td>\n                                            <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.disposition}}</td>\n                                            <td md-cell>{{interaction.note}}</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"></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>\n                                                            <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                                                Download Interaction\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="13">\n                                                <span class="text-boxed-ligth" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\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="FAXACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="FAXACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(faxAccount, $event)" translate="FAX.EDIT_FAXACCOUNT">\n                                                    Edit FaxAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(faxAccount, $event)" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                                                    Interactions FaxAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event)" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                                                    goToRealtime FaxAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(faxAccount, $event)" translate="FAX.AGENTADD_FAXACCOUNT">\n                                                    AgentAdd FaxAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(faxAccount, $event)" translate="FAX.DELETE_FAXACCOUNT">\n                                                    Delete FaxAccount\n                                                </md-button>\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.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" 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"></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"></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                        <span ng-if="vm.faxQueue.exten">{{vm.faxQueue.exten}}</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" 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="FAXQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="FAXQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(faxQueue, $event)" translate="FAX.EDIT_FAXQUEUE">\n                                                    Edit FaxQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(faxQueue, $event)" translate="FAX.TEAMADD_FAXQUEUE">\n                                                    teamadd FaxQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(faxQueue, $event)" translate="FAX.AGENTADD_FAXQUEUE">\n                                                    agentadd FaxQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(faxQueue, $event)" translate="FAX.DELETE_FAXQUEUE">\n                                                    Delete FaxQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event)" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                                                    goToRealtime FaxQueue\n                                                </md-button>\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.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.query.filter = 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 tranlsate="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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'FAX.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'FAX.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'FAX.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'FAX.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'FAX.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditFaxQueue($event, vm.queues[value])" translate="FAX.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n        \x3c!-- <md-button class="md-icon-button" ng-click="vm.showInfo($event)">\n      <i class="icon-information-outline grey-600-fg">\n        <md-tooltip>{{\'FAX.INFO\' | translate}}</md-tooltip>\n      </i>\n    </md-button> --\x3e\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 tranlsate="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="http://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">\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="DESKACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="DESKACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(deskAccount, $event)" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                                                    Edit DeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event)" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                                                    Test DeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(deskAccount, $event)" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                                                    Delete DeskAccount\n                                                </md-button>\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: \'{{\'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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.deskAccount.exten">{{vm.deskAccount.exten}}</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" 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/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">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.freshdeskAccount.exten">{{vm.freshdeskAccount.exten}}</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" 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="FRESHDESKACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="FRESHDESKACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(freshdeskAccount, $event)" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                                                    Edit FreshdeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event)" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                                                    Test FreshdeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event)" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                                                    Delete FreshdeskAccount\n                                                </md-button>\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: \'{{\'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/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">\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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.salesforceAccount.exten">{{vm.salesforceAccount.exten}}</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" 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">ADVANCED</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: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">{{ 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\'}]">{{ 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.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="SALESFORCEACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SALESFORCEACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(salesforceAccount, $event)" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                                                    Edit SalesforceAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event)" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                                                    Test SalesforceAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event)" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                                                    Delete SalesforceAccount\n                                                </md-button>\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: \'{{\'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/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">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.sugarcrmAccount.exten">{{vm.sugarcrmAccount.exten}}</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" 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="SUGARCRMACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SUGARCRMACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(sugarcrmAccount, $event)" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                                                    Edit SugarcrmAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event)" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                                                    Test SugarcrmAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event)" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                                                    Delete SugarcrmAccount\n                                                </md-button>\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: \'{{\'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">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.vtigerAccount.exten">{{vm.vtigerAccount.exten}}</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" 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="VTIGERACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VTIGERACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(vtigerAccount, $event)" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                                                    Edit VtigerAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event)" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                                                    Test VtigerAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event)" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                                                    Delete VtigerAccount\n                                                </md-button>\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: \'{{\'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">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.zendeskAccount.exten">{{vm.zendeskAccount.exten}}</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" 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="ZENDESKACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="ZENDESKACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(zendeskAccount, $event)" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                                                    Edit ZendeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event)" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                                                    Test ZendeskAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event)" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                                                    Delete ZendeskAccount\n                                                </md-button>\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: \'{{\'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.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.zohoAccount.authToken" ng-required="true">\n\n                <div ng-messages="zohoAccountForm[\'authToken\'].$error" ng-show="zohoAccountForm[\'authToken\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="INTEGRATIONS.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="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl">\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 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 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 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 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 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}}</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 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}}</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                            <md-select name="customField" ng-model="vm.customField" required>\n                                <md-optgroup label="Standard">\n                                    <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}</md-option>\n                                </md-optgroup>\n                                <md-optgroup label="Custom">\n                                    <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}</md-option>\n                                </md-optgroup>\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 required</span>\n                                </div>\n                            </div>\n                        </md-input-container>\n                        \x3c!-- CUSTOM FIELD --\x3e\n                        <div ng-if="vm.customField && vm.customField.custom" ng-include="\'/subject.html\'"></div>\n                        \x3c!-- / CUSTOM FIELD --\x3e\n                        \x3c!-- STANDARD FIELD --\x3e\n                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\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                            <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                        <md-input-container class="md-block" ng-if="vm.customField && !vm.customField.custom && !vm.customField.options.length">\n                            <label translate="INTEGRATIONS.VALUE">Value</label>\n                            <input type="text" name="option" ng-model="vm.item.content" required>\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                        \x3c!-- / STANDARD FIELD --\x3e\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="/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" 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()" required>\n            <md-optgroup label="Voice: Queue">\n                <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}</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 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.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                        <span ng-if="vm.zohoAccount.exten">{{vm.zohoAccount.exten}}</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.AUTHTOKEN">AuthToken</label>\n                                <input type="text" name="authToken" ng-model="vm.zohoAccount.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="INTEGRATIONS.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="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" 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\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="ZOHOACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="ZOHOACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 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="4">\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 md-cell class="actions">\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(zohoAccount, $event)" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                                                    Edit ZohoAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event)" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                                                    Test ZohoAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(zohoAccount, $event)" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                                                    Delete ZohoAccount\n                                                </md-button>\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: \'{{\'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-ligth" 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                        <span ng-if="vm.project.exten">{{vm.project.exten}}</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                                <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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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="PROJECTS.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.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">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                                            <th md-column md-order-by="starttime">{{ \'JSCRIPTY.STARTTIME\' | translate }}</th>\n                                            <th md-column md-order-by="endtime">{{ \'JSCRIPTY.ENDTIME\' | translate }}</th>\n                                            <th md-column md-order-by="membername">{{ \'JSCRIPTY.MEMBERNAME\' | translate }}</th>\n                                            <th md-column md-order-by="calleridnum">{{ \'JSCRIPTY.CALLERIDNUM\' | translate }}</th>\n                                            <th md-column md-order-by="completed">{{ \'JSCRIPTY.COMPLETE\' | translate }}</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>{{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.calleridnum}}</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                                                <span class="text-boxed-ligth" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\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)">\n                            <div class="pb-16" layout="row" layout-align="space-between center">\n                                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS">Answers</div>\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-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 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-ligth" 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="PROJECTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="PROJECTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(project, $event)" translate="JSCRIPTY.EDIT_PROJECT">\n                                                    Edit Project\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(project, $event)" translate="JSCRIPTY.CLONE_PROJECT">\n                                                    clone Project\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.sessionsgoto(project, $event)" translate="JSCRIPTY.SESSIONS_PROJECT">\n                                                    Sessions Project\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(project, $event)" translate="JSCRIPTY.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: \'{{\'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-if="!vm.newMailAccount || (vm.newMailAccount && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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" 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" 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"></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">{{ 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" 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="1">One Time</md-option>\n                    <md-option ng-value="0">Always</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            <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, 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">{{ 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" 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">{{ 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">{{ 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, 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/mailDispositions/dialog.html",'<md-dialog class="mailDisposition-dialog" aria-label="New MailDisposition">\n    <form name="mailDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.mailDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="mailDispositionForm[\'name\'].$error" ng-show="mailDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailDisposition" ng-click="vm.saveMailDisposition()" class="send-button md-accent md-raised" ng-disabled="mailDispositionForm.$invalid || mailDispositionForm.$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.newMailDisposition" ng-click="vm.addNewMailDisposition()" class="send-button md-accent md-raised" ng-disabled="mailDispositionForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILDISPOSITION" translate-attr-aria-label="MAIL.ADD_MAILDISPOSITION">\n                    ADD MAILDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailDisposition" ng-click="vm.deleteMailDisposition($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                        <span ng-if="vm.mailAccount.exten">{{vm.mailAccount.exten}}</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) || (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">{{ 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" 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, 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" 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, 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" 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" 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" 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" 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" 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" 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.DISPOSITIONS">DISPOSITIONS</span>\n                </md-tab-label>\n                <md-tab-body>\n                    <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="MailAccountMailDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="MAIL.MAILDISPOSITIONS">MailDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailDisposition($event)" aria-label="add mailDisposition" translate translate-attr-label="MAIL.ADD_MAILDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedMailAccountMailDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedMailAccountMailDispositions.length}} {{vm_dc.selectedMailAccountMailDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailDispositions" 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.deleteSelectedMailAccountMailDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAILACCOUNTS.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.selectedMailAccountMailDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailDispositions">\n                                        <tr md-row>\n                                            <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'MAIL.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="mailDisposition" md-select-id="id" ng-repeat="mailDisposition in vm_dc.mailAccountMailDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailDisposition($event, mailDisposition)" md-cell>{{mailDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailDisposition($event, mailDisposition)" md-cell>{{mailDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailDisposition($event, mailDisposition)" md-cell>{{mailDisposition.createdAt | date:\'medium\'}}</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.createOrEditMailAccountMailDisposition($event, mailDisposition)" translate="MAIL.EDIT_MAILDISPOSITION">\n                                                                Edit MailDisposition\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(mailDisposition, $event)" translate="MAIL.DELETE_MAILDISPOSITION">\n                                                                Delete MailDisposition\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.mailAccountMailDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="MAIL.NO_MAILDISPOSITION_AVAILABLE">No maildisposition available</span>\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.mailAccountMailDispositions.count}}" md-on-paginate="vm_dc.getMailAccountMailDispositions" 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.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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="MAILACCOUNTS.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.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">{{ \'MAIL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'MAIL.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'MAIL.CREATED_AT\' | translate }}</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>{{mailCannedAnswer.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.key}}</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>{{mailCannedAnswer.description}}</td>\n                                            <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.createdAt | date:\'medium\'}}</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                                                <span class="text-boxed-ligth" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\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-ligth" 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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="MAILACCOUNTS.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.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">{{ \'MAIL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'MAIL.STARTEDAT\' | translate }}</th>\n                                            <th md-column>{{ \'MAIL.CONTACT\' | translate }}</th>\n                                            <th md-column>{{ \'MAIL.AGENT\' | translate }}</th>\n                                            <th md-column md-order-by="closedAt">{{ \'MAIL.CLOSEDAT\' | translate }}</th>\n                                            <th md-column md-order-by="disposition">{{ \'MAIL.DISPOSITION\' | translate }}</th>\n                                            <th md-column md-order-by="note">{{ \'MAIL.NOTES\' | translate }}</th>\n                                            <th md-column md-order-by="tag">{{ \'MAIL.TAGS\' | translate }}</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">\n                                            <td md-cell>{{interaction.id}}</td>\n                                            <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.Contact.firstName}}</td>\n                                            <td md-cell>{{interaction.Owner.name}}</td>\n                                            <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.disposition}}</td>\n                                            <td md-cell>{{interaction.note}}</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"></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>\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>\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                                                <span class="text-boxed-ligth" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\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="MAILACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="MAILACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                                                    Edit MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                                                    verifysmtp MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                                                    Interactions MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event)" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                                                    goToRealtime MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                                                    AgentAdd MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                                                    Delete MailAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                        </md-menu-content>\n                                    </md-menu>\n                                </td>\n                            </tr>\n                        </tbody>\n                    </table>\n                </md-table-container>\n\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n            </md-card>\n            \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" 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"></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"></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                        <span ng-if="vm.mailQueue.exten">{{vm.mailQueue.exten}}</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" 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="MAILQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="MAILQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(mailQueue, $event)" translate="MAIL.EDIT_MAILQUEUE">\n                                                    Edit MailQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(mailQueue, $event)" translate="MAIL.TEAMADD_MAILQUEUE">\n                                                    teamadd MailQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(mailQueue, $event)" translate="MAIL.AGENTADD_MAILQUEUE">\n                                                    agentadd MailQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(mailQueue, $event)" translate="MAIL.DELETE_MAILQUEUE">\n                                                    Delete MailQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event)" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                                                    goToRealtime MailQueue\n                                                </md-button>\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.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="MAILSUBSTATUSES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="MAILSUBSTATUSES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(mailSubstatus, $event)" translate="MAIL.EDIT_MAILSUBSTATUS">\n                                                    Edit MailSubstatus\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event)" translate="MAIL.DELETE_MAILSUBSTATUS">\n                                                    Delete MailSubstatus\n                                                </md-button>\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.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.query.filter = 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 tranlsate="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 | 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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'MAIL.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'MAIL.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'MAIL.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditMailQueue($event, vm.queues[value])" translate="MAIL.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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                        <span ng-if="vm.plugin.exten">{{vm.plugin.exten}}</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="PLUGINS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="PLUGINS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n                                                <md-button ng-click="vm.installplugin(plugin, $event)" translate="MARKETPLACE.INSTALL_PLUGIN">\n                                                    Install Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(plugin, $event)" translate="MARKETPLACE.EDIT_PLUGIN">\n                                                    Edit Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n                                                <md-button ng-click="vm.stopplugin(plugin, $event)" translate="MARKETPLACE.STOP_PLUGIN">\n                                                    Stop Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n                                                <md-button ng-click="vm.restartplugin(plugin, $event)" translate="MARKETPLACE.RESTART_PLUGIN">\n                                                    Restart Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.downloadfile2(plugin, $event)" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                                                    Download Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n                                                <md-button ng-click="vm.uninstallplugin(plugin, $event)" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                                                    Uninstall Plugin\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(plugin, $event)" translate="MARKETPLACE.DELETE_PLUGIN">\n                                                    Delete Plugin\n                                                </md-button>\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: \'{{\'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-if="!vm.newIvrCampaign || (vm.newIvrCampaign && TrunkId.canSelect)" ng-disabled="!TrunkId.canSelect">{{ 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-if="!vm.newIvrCampaign || (vm.newIvrCampaign && IntervalId.canSelect)" ng-disabled="!IntervalId.canSelect">{{ 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-if="!vm.newIvrCampaign || (vm.newIvrCampaign && SquareProjectId.canSelect)" ng-disabled="!SquareProjectId.canSelect">{{ 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" 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"></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"></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                        <span ng-if="vm.ivrCampaign.exten">{{vm.ivrCampaign.exten}}</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) || (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">{{ 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">{{ 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">{{ 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" 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">{{ 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" 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" 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" 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+$/" 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" 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" 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" 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" 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" 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" 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" 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                </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" 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">\n                                    < <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span>\n                    </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" 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" 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" 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" 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" 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" 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" 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" 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" 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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="IVRCAMPAIGNS.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.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">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="countcongestionretry">{{ \'MOTIONDIALER.CONGESTION\' | translate }}</th>\n                                    <th md-column md-order-by="countbusyretry">{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n                                    <th md-column md-order-by="countnoanswerretry">{{ \'MOTIONDIALER.NOANSWER\' | translate }}</th>\n                                    <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</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>{{hopper.ContactId}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.phone}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.countcongestionretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.countbusyretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.countnoanswerretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                                    <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>{{ vm_dc.arraypriority[hopper.priority].option }}</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.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="10">\n                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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>\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">{{ \'MOTIONDIALER.UNIQUEID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="calleridnum">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="calleridname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="statedesc">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                                    <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="starttime">{{ \'MOTIONDIALER.STARTTIME\' | translate }}</th>\n                                    <th md-column md-order-by="endtime">{{ \'MOTIONDIALER.ENDTIME\' | translate }}</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>{{hopperHistory.uniqueid}}</td>\n                                    <td md-cell>{{hopperHistory.ContactId}}</td>\n                                    <td md-cell>{{hopperHistory.calleridnum}}</td>\n                                    <td md-cell>{{hopperHistory.calleridname}}</td>\n                                    <td md-cell>{{hopperHistory.statedesc}}</td>\n                                    <td md-cell>{{hopperHistory.scheduledat | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperHistory.starttime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperHistory.endtime | date:\'medium\'}}</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                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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-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="IVRCAMPAIGNS.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>\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">{{ \'MOTIONDIALER.UNIQUEID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="calleridnum">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="calleridname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="statedesc">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                                    <th md-column md-order-by="countcongestionretry">{{ \'MOTIONDIALER.CONGESTION\' | translate }}</th>\n                                    <th md-column md-order-by="countbusyretry">{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n                                    <th md-column md-order-by="countnoanswerretry">{{ \'MOTIONDIALER.NOANSWER\' | translate }}</th>\n                                    <th md-column md-order-by="starttime">{{ \'MOTIONDIALER.STARTTIME\' | translate }}</th>\n                                    <th md-column md-order-by="endtime">{{ \'MOTIONDIALER.ENDTIME\' | translate }}</th>\n                                    <th md-column md-order-by="disposition">{{ \'MOTIONDIALER.DISPOSITION\' | translate }}</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>{{hopperFinal.uniqueid}}</td>\n                                    <td md-cell>{{hopperFinal.ContactId}}</td>\n                                    <td md-cell>{{hopperFinal.calleridnum}}</td>\n                                    <td md-cell>{{hopperFinal.calleridname}}</td>\n                                    <td md-cell>{{hopperFinal.statedesc}}</td>\n                                    <td md-cell>{{hopperFinal.countcongestionretry}}</td>\n                                    <td md-cell>{{hopperFinal.countbusyretry}}</td>\n                                    <td md-cell>{{hopperFinal.countnoanswerretry}}</td>\n                                    <td md-cell>{{hopperFinal.starttime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperFinal.endtime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperFinal.disposition}}</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="23">\n                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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>\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">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</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>{{hopperBlack.ContactId}}</td>\n                                    <td md-cell>{{hopperBlack.phone}}</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                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\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="IVRCAMPAIGNS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="IVRCAMPAIGNS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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})[0].name }}</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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(ivrCampaign, $event)" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                                                    Edit IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(ivrCampaign, $event)" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                                                    clone IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.listadddialog(ivrCampaign, $event)" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                                                    listadd IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event)" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                                                    blacklistadd IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event)" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                                                    Delete IvrCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event)" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                                                    goToRealtime IvrCampaign\n                                                </md-button>\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.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-if="!vm.newQueueCampaign || (vm.newQueueCampaign && TrunkId.canSelect)" ng-disabled="!TrunkId.canSelect">{{ 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-if="!vm.newQueueCampaign || (vm.newQueueCampaign && IntervalId.canSelect)" ng-disabled="!IntervalId.canSelect">{{ 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">\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">\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">\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" 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" 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" 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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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"></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-if="!vm.newHopper || (vm.newHopper && UserId.canSelect)" ng-disabled="!UserId.canSelect">{{ 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"></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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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                        <span ng-if="vm.queueCampaign.exten">{{vm.queueCampaign.exten}}</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) || (advancedForm.$invalid) || (advancedpreviewForm.$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">{{ 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">{{ 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">{{ 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" 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">\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">\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">\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" 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" 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" 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" 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" 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" 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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" 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" 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+$/" 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" 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" 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" 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" 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" 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" 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" 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                </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\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\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" 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">\n                                    < <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span>\n                    </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" 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" 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" 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" 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" 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" 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" 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" 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" 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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="QUEUECAMPAIGNS.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.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">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="countcongestionretry">{{ \'MOTIONDIALER.CONGESTION\' | translate }}</th>\n                                    <th md-column md-order-by="countbusyretry">{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n                                    <th md-column md-order-by="countnoanswerretry">{{ \'MOTIONDIALER.NOANSWER\' | translate }}</th>\n                                    <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                                    <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLAGENT\' | translate }}</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>{{hopper.ContactId}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.phone}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.countcongestionretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.countbusyretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.countnoanswerretry}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                                    <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>{{ vm_dc.arraypriority[hopper.priority].option }}</td>\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="12">\n                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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>\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">{{ \'MOTIONDIALER.UNIQUEID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="calleridnum">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="calleridname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="statedesc">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                                    <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n                                    <th md-column md-order-by="starttime">{{ \'MOTIONDIALER.STARTTIME\' | translate }}</th>\n                                    <th md-column md-order-by="endtime">{{ \'MOTIONDIALER.ENDTIME\' | translate }}</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>{{hopperHistory.uniqueid}}</td>\n                                    <td md-cell>{{hopperHistory.ContactId}}</td>\n                                    <td md-cell>{{hopperHistory.calleridnum}}</td>\n                                    <td md-cell>{{hopperHistory.calleridname}}</td>\n                                    <td md-cell>{{hopperHistory.statedesc}}</td>\n                                    <td md-cell>{{hopperHistory.scheduledat | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperHistory.starttime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperHistory.endtime | date:\'medium\'}}</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                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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-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="QUEUECAMPAIGNS.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>\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">{{ \'MOTIONDIALER.UNIQUEID\' | translate }}</th>\n                                    <th md-column md-order-by="ContactId">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="calleridnum">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n                                    <th md-column md-order-by="calleridname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                                    <th md-column md-order-by="statedesc">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                                    <th md-column md-order-by="countcongestionretry">{{ \'MOTIONDIALER.CONGESTION\' | translate }}</th>\n                                    <th md-column md-order-by="countbusyretry">{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n                                    <th md-column md-order-by="countnoanswerretry">{{ \'MOTIONDIALER.NOANSWER\' | translate }}</th>\n                                    <th md-column md-order-by="starttime">{{ \'MOTIONDIALER.STARTTIME\' | translate }}</th>\n                                    <th md-column md-order-by="endtime">{{ \'MOTIONDIALER.ENDTIME\' | translate }}</th>\n                                    <th md-column md-order-by="disposition">{{ \'MOTIONDIALER.DISPOSITION\' | translate }}</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>{{hopperFinal.uniqueid}}</td>\n                                    <td md-cell>{{hopperFinal.ContactId}}</td>\n                                    <td md-cell>{{hopperFinal.calleridnum}}</td>\n                                    <td md-cell>{{hopperFinal.calleridname}}</td>\n                                    <td md-cell>{{hopperFinal.statedesc}}</td>\n                                    <td md-cell>{{hopperFinal.countcongestionretry}}</td>\n                                    <td md-cell>{{hopperFinal.countbusyretry}}</td>\n                                    <td md-cell>{{hopperFinal.countnoanswerretry}}</td>\n                                    <td md-cell>{{hopperFinal.starttime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperFinal.endtime | date:\'medium\'}}</td>\n                                    <td md-cell>{{hopperFinal.disposition}}</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="23">\n                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\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                            <div flex></div>\n                            <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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>\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">{{ \'MOTIONDIALER.CONTACTID\' | translate }}</th>\n                                    <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</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>{{hopperBlack.ContactId}}</td>\n                                    <td md-cell>{{hopperBlack.phone}}</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                                        <span class="text-boxed-ligth" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\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="QUEUECAMPAIGNS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="QUEUECAMPAIGNS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(queueCampaign, $event)" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                                                    Edit QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(queueCampaign, $event)" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                                                    clone QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.listadddialog(queueCampaign, $event)" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                                                    listadd QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event)" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                                                    blacklistadd QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(queueCampaign, $event)" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                                                    teamadd QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(queueCampaign, $event)" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                                                    agentadd QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(queueCampaign, $event)" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                                                    Delete QueueCampaign\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event)" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                                                    goToRealtime QueueCampaign\n                                                </md-button>\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.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.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 black-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getContacts()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.lastAssignedTo" ng-change="vm.getContacts()">\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                    <md-option ng-value="agent.name" ng-repeat="agent in vm.agents.rows">{{agent.name}}</md-option>\n                </md-select>\n            </div>\n            <div ng-if="vm.queues.count" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.queue" ng-change="vm.getContacts()">\n                    <md-option ng-value="undefined" ng-if="vm.queues.count > 1"><em translate="DASHBOARDS.ALL">All</em></md-option>\n                    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows">{{queue.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n                <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | 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.getContacts">\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 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 tranlsate="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 md-cell class="id">{{contact.id}}</td>\n                    <td md-cell class="firstName">{{contact.calleridname}}</td>\n                    <td md-cell class="list">{{contact.calleridnum}}</td>\n                    <td md-cell class="list">{{vm.queuesMap[contact.queue]}}</td>\n                    <td md-cell class="list">{{contact.queuecallerabandonAt ? (contact.queuecallerabandonAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.queuecallerexitAt ? (contact.queuecallerexitAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.queuecallerexitreason}}</td>\n                    <td md-cell class="list">{{contact.lastAssignedTo}}</td>\n                    <td md-cell class="list">{{contact.disposition}}</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">Assigned a</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="contact.lastAssignedTo">\n                                                <md-button ng-click="vm.assignedA(contact)"><em translate="DASHBOARDS.NONE">Not Assigned</em></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.assignedA(contact,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-menu>\n                                        <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="vm.dispositions.length > 0" ng-repeat="disposition in vm.dispositions">\n                                                <md-button ng-click="vm.disposed(contact, disposition.name)">{{disposition.name}}</md-button>\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\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>'),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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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.query.filter = 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 tranlsate="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        \x3c!-- <div flex></div>\n    <ms-search-bar on-search="vm.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar> --\x3e\n    </div>\n</md-toolbar>\n\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 tranlsate="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>{{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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                    </span>\n                </td>\n                <td md-cell>\n                    <span class="text-boxed">\n                        <timer start-time="channel.queuecallerjoinAt" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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\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>\n                                    <md-button ng-click="$mdMenu.open()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">Redirect to Agent</md-button>\n                                    <md-menu-content>\n                                        <md-menu-item ng-repeat="agent in vm.agents.rows">\n                                            <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">{{agent.name}}</md-button>\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\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.query.filter = 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 tranlsate="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/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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.READY\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n                <th md-column>{{ \'MOTIONDIALER.ORIGINATED\' | 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">\n                <td md-cell colspan="12">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{(vm.queues[value].talking || 0)  +  (vm.queues[value].pTalking || 0)}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].originated || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].message ? (\'MOTIONDIALER.\'+vm.queues[value].message | translate) : \'--\'}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].dialMethod || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].Trunk ? vm.queues[value].Trunk.name : \'--\'}}</span>\n                </td>\n                <td md-cell>\n                    <md-icon md-colors="{color: {{vm.queues[value].dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{vm.queues[value].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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditMotionDialerQueue($event, vm.queues[value])" translate="MOTIONDIALER.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n        <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.AGENTS">Agents</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.QUEUES">Queues</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n                </md-tab-label>\n            </md-tab>\n        </md-tabs>\n\n        <md-card ui-view></md-card>\n\n    </div>\n    \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n    <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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-if="!vm.newOpenchannelAccount || (vm.newOpenchannelAccount && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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"></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">{{ 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" 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/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="1">One Time</md-option>\n                    <md-option ng-value="0">Always</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" md-maxlength="255" 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 ng-message="md-maxlength">\n                        <span translate="OPENCHANNEL.ERRORS.TEXT_MAX_LENGTH" translate-values=\'{max: 255}\'>Text 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/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/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">{{ 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" 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">{{ 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">{{ 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/openchannelDispositions/dialog.html",'<md-dialog class="openchannelDisposition-dialog" aria-label="New OpenchannelDisposition">\n    <form name="openchannelDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.openchannelDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="openchannelDispositionForm[\'name\'].$error" ng-show="openchannelDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelDisposition" ng-click="vm.saveOpenchannelDisposition()" class="send-button md-accent md-raised" ng-disabled="openchannelDispositionForm.$invalid || openchannelDispositionForm.$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.newOpenchannelDisposition" ng-click="vm.addNewOpenchannelDisposition()" class="send-button md-accent md-raised" ng-disabled="openchannelDispositionForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELDISPOSITION" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELDISPOSITION">\n                    ADD OPENCHANNELDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelDisposition" ng-click="vm.deleteOpenchannelDisposition($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                        <span ng-if="vm.openchannelAccount.exten">{{vm.openchannelAccount.exten}}</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) || (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">{{ 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" 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">{{ 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">{{ 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, 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" 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" 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                </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 class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="OpenchannelAccountOpenchannelDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELDISPOSITIONS">OpenchannelDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelDisposition($event)" aria-label="add openchannelDisposition" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedOpenchannelAccountOpenchannelDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelDispositions.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelDispositions" 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.deleteSelectedOpenchannelAccountOpenchannelDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNELACCOUNTS.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.selectedOpenchannelAccountOpenchannelDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelDispositions">\n                                        <tr md-row>\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="createdAt">{{ \'OPENCHANNEL.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="openchannelDisposition" md-select-id="id" ng-repeat="openchannelDisposition in vm_dc.openchannelAccountOpenchannelDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelDisposition($event, openchannelDisposition)" md-cell>{{openchannelDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelDisposition($event, openchannelDisposition)" md-cell>{{openchannelDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelDisposition($event, openchannelDisposition)" md-cell>{{openchannelDisposition.createdAt | date:\'medium\'}}</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.createOrEditOpenchannelAccountOpenchannelDisposition($event, openchannelDisposition)" translate="OPENCHANNEL.EDIT_OPENCHANNELDISPOSITION">\n                                                                Edit OpenchannelDisposition\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(openchannelDisposition, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELDISPOSITION">\n                                                                Delete OpenchannelDisposition\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.openchannelAccountOpenchannelDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="OPENCHANNEL.NO_OPENCHANNELDISPOSITION_AVAILABLE">No openchanneldisposition available</span>\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.openchannelAccountOpenchannelDispositions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelDispositions" 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.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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="OPENCHANNELACCOUNTS.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.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">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'OPENCHANNEL.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'OPENCHANNEL.CREATED_AT\' | translate }}</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>{{openchannelCannedAnswer.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>{{openchannelCannedAnswer.key}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>{{openchannelCannedAnswer.value}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>{{openchannelCannedAnswer.description}}</td>\n                                            <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>{{openchannelCannedAnswer.createdAt | date:\'medium\'}}</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                                                <span class="text-boxed-ligth" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\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-ligth" 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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="OPENCHANNELACCOUNTS.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.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">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'OPENCHANNEL.STARTEDAT\' | translate }}</th>\n                                            <th md-column>{{ \'OPENCHANNEL.CONTACT\' | translate }}</th>\n                                            <th md-column>{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n                                            <th md-column md-order-by="closedAt">{{ \'OPENCHANNEL.CLOSEDAT\' | translate }}</th>\n                                            <th md-column md-order-by="disposition">{{ \'OPENCHANNEL.DISPOSITION\' | translate }}</th>\n                                            <th md-column md-order-by="note">{{ \'OPENCHANNEL.NOTES\' | translate }}</th>\n                                            <th md-column md-order-by="tag">{{ \'OPENCHANNEL.TAGS\' | translate }}</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">\n                                            <td md-cell>{{interaction.id}}</td>\n                                            <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.Contact.firstName}}</td>\n                                            <td md-cell>{{interaction.Owner.name}}</td>\n                                            <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.disposition}}</td>\n                                            <td md-cell>{{interaction.note}}</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"></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>\n                                                            <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_INTERACTION">\n                                                                Download Interaction\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="13">\n                                                <span class="text-boxed-ligth" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\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="OPENCHANNELACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="OPENCHANNELACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(openchannelAccount, $event)" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                                                    Edit OpenchannelAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event)" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                                                    Interactions OpenchannelAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(openchannelAccount, $event)" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                                                    AgentAdd OpenchannelAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                                                    Delete OpenchannelAccount\n                                                </md-button>\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.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" 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"></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"></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                        <span ng-if="vm.openchannelQueue.exten">{{vm.openchannelQueue.exten}}</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" 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="OPENCHANNELQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="OPENCHANNELQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(openchannelQueue, $event)" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                                                    Edit OpenchannelQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(openchannelQueue, $event)" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                                                    teamadd OpenchannelQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(openchannelQueue, $event)" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                                                    agentadd OpenchannelQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                                                    Delete OpenchannelQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event)" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                                                    goToRealtime OpenchannelQueue\n                                                </md-button>\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.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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'OPENCHANNEL.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditOpenchannelQueue($event, vm.queues[value])" translate="OPENCHANNEL.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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/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.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) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$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.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>\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            <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" ng-required="true" autofocus>\n\n                <div ng-messages="generalForm[\'min_internal\'].$error" ng-show="generalForm[\'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                <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.CHATTIMEOUT">chatTimeout</label>\n                <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" ng-required="true">\n\n                <div ng-messages="generalForm[\'chatTimeout\'].$error" ng-show="generalForm[\'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                <label translate="SETTINGS.STUNADDR">Stunaddr</label>\n                <input type="text" name="stunaddr" ng-model="vm.general.stunaddr">\n\n                <div ng-messages="generalForm[\'stunaddr\'].$error" ng-show="generalForm[\'stunaddr\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="SETTINGS.ERRORS.STUNADDR_REQUIRED">Stunaddr field is required</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n                <label translate="SETTINGS.TURNADDR">Turnaddr</label>\n                <input type="text" name="turnaddr" ng-model="vm.general.turnaddr">\n\n                <div ng-messages="generalForm[\'turnaddr\'].$error" ng-show="generalForm[\'turnaddr\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="SETTINGS.ERRORS.TURNADDR_REQUIRED">Turnaddr field is required</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n                <label translate="SETTINGS.TURN_USERNAME">Turn_Username</label>\n                <input type="text" name="turnusername" ng-model="vm.general.turnusername">\n\n                <div ng-messages="generalForm[\'turnusername\'].$error" ng-show="generalForm[\'turnusername\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="SETTINGS.ERRORS.TURN_USERNAME_REQUIRED">Turn_Username field is required</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n                <label translate="SETTINGS.TURN_PASSWORD">Turn_Password</label>\n                <input type="text" name="turnpassword" ng-model="vm.general.turnpassword">\n\n                <div ng-messages="generalForm[\'turnpassword\'].$error" ng-show="generalForm[\'turnpassword\'].$touched" role="alert">\n                    <div ng-message="required">\n                        <span translate="SETTINGS.ERRORS.TURN_PASSWORD_REQUIRED">Turn_Password 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.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">\n\n                <div ng-messages="generalForm[\'splitSizeCsv\'].$error" ng-show="generalForm[\'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">\n\n                <div ng-messages="generalForm[\'splitSizePdf\'].$error" ng-show="generalForm[\'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">\n\n                <div ng-messages="generalForm[\'splitSizeXlsx\'].$error" ng-show="generalForm[\'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            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$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" 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                        <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.CHATTIMEOUT">chatTimeout</label>\n                        <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" 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                        <label translate="SETTINGS.STUNADDR">Stunaddr</label>\n                        <input type="text" name="stunaddr" ng-model="vm.general.stunaddr">\n\n                        <div ng-messages="globalForm[\'stunaddr\'].$error" ng-show="globalForm[\'stunaddr\'].$touched" role="alert">\n                            <div ng-message="required">\n                                <span translate="SETTINGS.ERRORS.STUNADDR_REQUIRED">Stunaddr field is required</span>\n                            </div>\n                        </div>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                        <label translate="SETTINGS.TURNADDR">Turnaddr</label>\n                        <input type="text" name="turnaddr" ng-model="vm.general.turnaddr">\n\n                        <div ng-messages="globalForm[\'turnaddr\'].$error" ng-show="globalForm[\'turnaddr\'].$touched" role="alert">\n                            <div ng-message="required">\n                                <span translate="SETTINGS.ERRORS.TURNADDR_REQUIRED">Turnaddr field is required</span>\n                            </div>\n                        </div>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                        <label translate="SETTINGS.TURN_USERNAME">Turn_Username</label>\n                        <input type="text" name="turnusername" ng-model="vm.general.turnusername">\n\n                        <div ng-messages="globalForm[\'turnusername\'].$error" ng-show="globalForm[\'turnusername\'].$touched" role="alert">\n                            <div ng-message="required">\n                                <span translate="SETTINGS.ERRORS.TURN_USERNAME_REQUIRED">Turn_Username field is required</span>\n                            </div>\n                        </div>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                        <label translate="SETTINGS.TURN_PASSWORD">Turn_Password</label>\n                        <input type="text" name="turnpassword" ng-model="vm.general.turnpassword">\n\n                        <div ng-messages="globalForm[\'turnpassword\'].$error" ng-show="globalForm[\'turnpassword\'].$touched" role="alert">\n                            <div ng-message="required">\n                                <span translate="SETTINGS.ERRORS.TURN_PASSWORD_REQUIRED">Turn_Password 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 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" 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">\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">\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">\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                        <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\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        <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>\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>\n                                <a href="https://www.xcally.com/en/index.html#pricing-table2-h" 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" 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\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" 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                    <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" 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-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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\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="NETWORKS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="NETWORKS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.editdialog(network, $event)" translate="SETTINGS.EDIT_NETWORK">\n                                                    Edit Network\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(network, $event)" translate="SETTINGS.DELETE_NETWORK">\n                                                    Delete Network\n                                                </md-button>\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: \'{{\'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" 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" 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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'SMS.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'SMS.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'SMS.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'SMS.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'SMS.READY\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditSmsQueue($event, vm.queues[value])" translate="SMS.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.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/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" 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-if="!vm.newSmsAccount || (vm.newSmsAccount && ListId.canSelect)" ng-disabled="!ListId.canSelect">{{ 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="\'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\'" 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\'">\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\'" 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 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"></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">{{ 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" 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/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="1">One Time</md-option>\n                    <md-option ng-value="0">Always</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" md-maxlength="255" 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 ng-message="md-maxlength">\n                        <span translate="SMS.ERRORS.TEXT_MAX_LENGTH" translate-values=\'{max: 255}\'>Text 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/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/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">{{ 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" 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">{{ 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">{{ 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/smsDispositions/dialog.html",'<md-dialog class="smsDisposition-dialog" aria-label="New SmsDisposition">\n    <form name="smsDispositionForm" class="md-inline-form" novalidate>\n        <md-toolbar class="md-accent md-hue-2">\n            <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n                <span class="title">{{ vm.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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="" name="name" ng-model="vm.smsDisposition.name" ng-required="true" autofocus>\n\n                <div ng-messages="smsDispositionForm[\'name\'].$error" ng-show="smsDispositionForm[\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n            <div layout="row" layout-align="start center">\n                <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsDisposition" ng-click="vm.saveSmsDisposition()" class="send-button md-accent md-raised" ng-disabled="smsDispositionForm.$invalid || smsDispositionForm.$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.newSmsDisposition" ng-click="vm.addNewSmsDisposition()" class="send-button md-accent md-raised" ng-disabled="smsDispositionForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSDISPOSITION" translate-attr-aria-label="SMS.ADD_SMSDISPOSITION">\n                    ADD SMSDISPOSITION\n                </md-button>\n            </div>\n            <div layout="row">\n                <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsDisposition" ng-click="vm.deleteSmsDisposition($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                        <span ng-if="vm.smsAccount.exten">{{vm.smsAccount.exten}}</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) || (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">{{ 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="\'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\'" 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\'">\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\'" 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 == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || 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" 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" 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, 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" 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" 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" 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                </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 class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="SmsAccountSmsDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="SMS.SMSDISPOSITIONS">SmsDispositions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsDisposition($event)" aria-label="add smsDisposition" translate translate-attr-label="SMS.ADD_SMSDISPOSITION">\n                                        <md-icon md-font-icon="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.selectedSmsAccountSmsDispositions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsDispositions.length}} {{vm_dc.selectedSmsAccountSmsDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsDispositions" 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.deleteSelectedSmsAccountSmsDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMSACCOUNTS.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.selectedSmsAccountSmsDispositions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsDispositions">\n                                        <tr md-row>\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="createdAt">{{ \'SMS.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="smsDisposition" md-select-id="id" ng-repeat="smsDisposition in vm_dc.smsAccountSmsDispositions.rows">\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsDisposition($event, smsDisposition)" md-cell>{{smsDisposition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsDisposition($event, smsDisposition)" md-cell>{{smsDisposition.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsDisposition($event, smsDisposition)" md-cell>{{smsDisposition.createdAt | date:\'medium\'}}</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.createOrEditSmsAccountSmsDisposition($event, smsDisposition)" translate="SMS.EDIT_SMSDISPOSITION">\n                                                                Edit SmsDisposition\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(smsDisposition, $event)" translate="SMS.DELETE_SMSDISPOSITION">\n                                                                Delete SmsDisposition\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.smsAccountSmsDispositions.rows.length">\n                                            <td md-cell colspan="5">\n                                                <span class="text-boxed-ligth" translate="SMS.NO_SMSDISPOSITION_AVAILABLE">No smsdisposition available</span>\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.smsAccountSmsDispositions.count}}" md-on-paginate="vm_dc.getSmsAccountSmsDispositions" 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.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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="SMSACCOUNTS.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.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">{{ \'SMS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'SMS.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'SMS.CREATED_AT\' | translate }}</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>{{smsCannedAnswer.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>{{smsCannedAnswer.key}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>{{smsCannedAnswer.value}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>{{smsCannedAnswer.description}}</td>\n                                            <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>{{smsCannedAnswer.createdAt | date:\'medium\'}}</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                                                <span class="text-boxed-ligth" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\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-ligth" 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)">\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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="SMSACCOUNTS.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.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">{{ \'SMS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'SMS.STARTEDAT\' | translate }}</th>\n                                            <th md-column>{{ \'SMS.CONTACT\' | translate }}</th>\n                                            <th md-column>{{ \'SMS.AGENT\' | translate }}</th>\n                                            <th md-column md-order-by="closedAt">{{ \'SMS.CLOSEDAT\' | translate }}</th>\n                                            <th md-column md-order-by="disposition">{{ \'SMS.DISPOSITION\' | translate }}</th>\n                                            <th md-column md-order-by="note">{{ \'SMS.NOTES\' | translate }}</th>\n                                            <th md-column md-order-by="tag">{{ \'SMS.TAGS\' | translate }}</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">\n                                            <td md-cell>{{interaction.id}}</td>\n                                            <td md-cell>{{interaction.createdAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.Contact.firstName}}</td>\n                                            <td md-cell>{{interaction.Owner.name}}</td>\n                                            <td md-cell>{{interaction.closedAt | date:\'medium\'}}</td>\n                                            <td md-cell>{{interaction.disposition}}</td>\n                                            <td md-cell>{{interaction.note}}</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"></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>\n                                                            <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                                                Download Interaction\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="13">\n                                                <span class="text-boxed-ligth" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\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="SMSACCOUNTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SMSACCOUNTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(smsAccount, $event)" translate="SMS.EDIT_SMSACCOUNT">\n                                                    Edit SmsAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.interactionsgoto(smsAccount, $event)" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                                                    Interactions SmsAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(smsAccount, $event)" translate="SMS.AGENTADD_SMSACCOUNT">\n                                                    AgentAdd SmsAccount\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(smsAccount, $event)" translate="SMS.DELETE_SMSACCOUNT">\n                                                    Delete SmsAccount\n                                                </md-button>\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.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" 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"></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"></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                        <span ng-if="vm.smsQueue.exten">{{vm.smsQueue.exten}}</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" 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="SMSQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SMSQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(smsQueue, $event)" translate="SMS.EDIT_SMSQUEUE">\n                                                    Edit SmsQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(smsQueue, $event)" translate="SMS.TEAMADD_SMSQUEUE">\n                                                    teamadd SmsQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(smsQueue, $event)" translate="SMS.AGENTADD_SMSQUEUE">\n                                                    agentadd SmsQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(smsQueue, $event)" translate="SMS.DELETE_SMSQUEUE">\n                                                    Delete SmsQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event)" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                                                    goToRealtime SmsQueue\n                                                </md-button>\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.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="AGENTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="AGENTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 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="8">\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 md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(agent, $event)" translate="STAFF.EDIT_AGENT">\n                                                    Edit Agent\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(agent, $event)" translate="STAFF.TEAMADD_AGENT">\n                                                    teamadd Agent\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(agent, $event)" translate="STAFF.DELETE_AGENT">\n                                                    Delete Agent\n                                                </md-button>\n                                            </md-menu-item>\n                                        </md-menu-content>\n                                    </md-menu>\n                                </td>\n                            </tr>\n                        </tbody>\n                    </table>\n                </md-table-container>\n\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" 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.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>\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                    <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\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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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"></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                        <span ng-if="vm.agent.exten">{{vm.agent.exten}}</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-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) || (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\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">{{ 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.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.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\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" 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" class="md-block">\n                                <md-switch ng-model="vm.agent.phoneBarEnableVideoRecording" aria-label="EnableVideoRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEVIDEORECORDING">EnableVideoRecording</span></md-switch>\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" 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                                <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" 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\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 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"></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="TEAMS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TEAMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(team, $event)" translate="STAFF.EDIT_TEAM">\n                                                    Edit Team\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(team, $event)" translate="STAFF.AGENTADD_TEAM">\n                                                    AgentAdd Team\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(team, $event)" translate="STAFF.DELETE_TEAM">\n                                                    Delete Team\n                                                </md-button>\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: \'{{\'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.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>\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                    <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\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                        <span ng-if="vm.telephone.exten">{{vm.telephone.exten}}</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">{{ 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="TELEPHONES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TELEPHONES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(telephone, $event)" translate="STAFF.EDIT_TELEPHONE">\n                                                    Edit Telephone\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(telephone, $event)" translate="STAFF.DELETE_TELEPHONE">\n                                                    Delete Telephone\n                                                </md-button>\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: \'{{\'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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\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="padding-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>\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                        <span ng-if="vm.userProfile.exten">{{vm.userProfile.exten}}</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)" 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\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="2:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="8px" gt-md-gutter="8px" 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-icon>\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-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="USERPROFILES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="USERPROFILES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 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="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="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 md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(userProfile, $event)" translate="STAFF.EDIT_USERPROFILE">\n                                                    Edit UserProfile\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(userProfile, $event)" translate="STAFF.CLONE_USERPROFILE">\n                                                    clone UserProfile\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(userProfile, $event)" translate="STAFF.DELETE_USERPROFILE">\n                                                    Delete UserProfile\n                                                </md-button>\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: \'{{\'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-if="!vm.newUser || (vm.newUser && userProfileId.canSelect)" ng-disabled="!userProfileId.canSelect">{{ 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/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.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>\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                    <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\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                        <span ng-if="vm.user.exten">{{vm.user.exten}}</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.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">{{ 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\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">{{ 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.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="USERS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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 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="9">\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})[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 md-cell class="actions">\n                                    <md-menu>\n                                        <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                        </md-button>\n                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(user, $event)" translate="STAFF.EDIT_USER">\n                                                    Edit User\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.deleteconfirm(user, $event)" translate="STAFF.DELETE_USER">\n                                                    Delete User\n                                                </md-button>\n                                            </md-menu-item>\n                                        </md-menu-content>\n                                    </md-menu>\n                                </td>\n                            </tr>\n                        </tbody>\n                    </table>\n                </md-table-container>\n\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="CANNEDANSWERS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CANNEDANSWERS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(cannedAnswer, $event)" translate="TOOLS.EDIT_CANNEDANSWER">\n                                                    Edit CannedAnswer\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event)" translate="TOOLS.DELETE_CANNEDANSWER">\n                                                    Delete CannedAnswer\n                                                </md-button>\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: \'{{\'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="CUSTOMDASHBOARDS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CUSTOMDASHBOARDS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(customDashboard, $event)" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                                                    Edit CustomDashboard\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(customDashboard, $event)" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                                                    clone CustomDashboard\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event)" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                                                    goToDashboard CustomDashboard\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(customDashboard, $event)" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                                                    Delete CustomDashboard\n                                                </md-button>\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: \'{{\'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 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" 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" 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" 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-if="!vm.newDashboardItem || (vm.newDashboardItem && attrVoiceQueues.canSelect)" ng-disabled="!attrVoiceQueues.canSelect">{{ 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" 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                        <span ng-if="vm.customDashboard.exten">{{vm.customDashboard.exten}}</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 tranlsate="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 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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.disposition.name" md-maxlength="255" ng-required="true" autofocus>\n\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 equal to 255</span>\n                    </div>\n                </div>\n            </md-input-container>\n\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\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\n    \x3c!-- HEADER --\x3e\n    <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n        \x3c!-- APP TITLE --\x3e\n        <div layout="row" layout-align="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\n        <div layout="row">\n            \x3c!-- SEARCH --\x3e\n            <div class="search-input-wrapper" layout="row" layout-align="start center">\n                <label for="search">\n                    <md-icon md-font-icon="icon-magnify"></md-icon>\n                </label>\n                <md-input-container md-no-float class="m-0">\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.selectedDispositions.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.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\n        <div flex layout="row" layout-align="space-between center">\n\n            <div>\n                <span class="selected-dispositions-count">\n                    <span>{{vm.selectedDispositions.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="DISPOSITIONS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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\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="DISPOSITIONS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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!-- DISPOSITION TABLE --\x3e\n            <md-card>\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 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 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="3">\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}}</td>\n                                <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">{{disposition.name}}</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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(disposition, $event)" translate="TOOLS.EDIT_DISPOSITION">\n                                                    Edit Disposition\n                                                </md-button>\n                                            </md-menu-item>\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\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></md-table-pagination>\n            </md-card>\n            \x3c!-- / DISPOSITION TABLE --\x3e\n            \x3c!-- NO RESULTS --\x3e\n\n            \x3c!-- / NO RESULTS --\x3e\n        </div>\n        \x3c!-- / MAIN --\x3e\n\n    </div>\n    \x3c!-- / CONTENT --\x3e\n\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                        <span ng-if="vm.interval.exten">{{vm.interval.exten}}</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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="INTERVALS.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.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">{{ \'TOOLS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                                            <th md-column md-order-by="interval">{{ \'TOOLS.INTERVAL\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'TOOLS.CREATED_AT\' | translate }}</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>{{interval.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>{{interval.name}}</td>\n                                            <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>{{interval.interval}}</td>\n                                            <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>{{interval.createdAt | date:\'medium\'}}</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                                                <span class="text-boxed-ligth" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\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="INTERVALS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="INTERVALS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(interval, $event)" translate="TOOLS.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.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                        </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="PAUSES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="PAUSES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(pause, $event)" translate="TOOLS.EDIT_PAUSE">\n                                                    Edit Pause\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(pause, $event)" translate="TOOLS.DELETE_PAUSE">\n                                                    Delete Pause\n                                                </md-button>\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: \'{{\'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" 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-if="!vm.newSchedule || (vm.newSchedule && MailAccountId.canSelect)" ng-disabled="!MailAccountId.canSelect">{{ 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 tranlsate="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="SCHEDULER.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SCHEDULER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(schedule, $event)" translate="TOOLS.EDIT_SCHEDULE">\n                                                    Edit Schedule\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.runconfirm(schedule, $event)" translate="TOOLS.RUN_SCHEDULE">\n                                                    Run Schedule\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(schedule, $event)" translate="TOOLS.DELETE_SCHEDULE">\n                                                    Delete Schedule\n                                                </md-button>\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: \'{{\'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="SOUNDS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="SOUNDS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(sound, $event)" translate="TOOLS.EDIT_SOUND">\n                                                    Edit Sound\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.downloadfile2(sound, $event)" translate="TOOLS.DOWNLOAD_SOUND">\n                                                    Download Sound\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(sound, $event)" translate="TOOLS.DELETE_SOUND">\n                                                    Delete Sound\n                                                </md-button>\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: \'{{\'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="TAGS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TAGS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(tag, $event)" translate="TOOLS.EDIT_TAG">\n                                                    Edit Tag\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(tag, $event)" translate="TOOLS.DELETE_TAG">\n                                                    Delete Tag\n                                                </md-button>\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: \'{{\'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, 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="TEMPLATES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TEMPLATES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(template, $event)" translate="TOOLS.EDIT_TEMPLATE">\n                                                    Edit Template\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(template, $event)" translate="TOOLS.DELETE_TEMPLATE">\n                                                    Delete Template\n                                                </md-button>\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: \'{{\'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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.trigger.name" ng-required="true" autofocus>\n\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\n                    <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n                    <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n                    <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n\n                    <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n                    <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | 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></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\n                <div ng-messages="triggerForm[\'description\'].$error" ng-show="triggerForm[\'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.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\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/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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.ACTION">Action</label>\n                <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" autofocus required ng-disabled="!vm.newAction">\n\n                    <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n\n                    <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasModulePermissions.Integrations) || !vm.newAction)"> {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n\n                    <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTION_BAR\' | translate }} </md-option>\n\n                    <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n\n                    <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n\n                    <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n\n                    <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | 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-if="!vm.newAction || (vm.newAction && data1.canSelect)" ng-disabled="!data1.canSelect">{{ 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" 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" required>\n                    <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-if="!vm.newAction || (vm.newAction && data1.canSelect)" ng-disabled="!data1.canSelect">{{ 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.AUTOCREATECONTACT">AutoCreateContact</label>\n                <md-select name="data2" ng-model="vm.action.data2" required>\n\n                    <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\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 == \'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-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\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\' && vm.action.data1 == \'POST\'" 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 == \'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()" required>\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="\'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="\'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="\'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="\'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="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</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-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 == \'zendesk\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1301])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.zendeskAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'desk\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1306])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.deskAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'zoho\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1307])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.zohoAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'salesforce\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1302])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.salesforceAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'sugarcrm\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1305])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.sugarcrmAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'freshdesk\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1303])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.freshdeskAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'vtiger\'" class="md-block">\n                <label translate="TOOLS.ACCOUNT">Account</label>\n                <md-select name="data2" ng-model="vm.action.data2" required ng-disabled="!vm.newAction && (!vm.newAction && !vm.hasSectionPermissions[1308])">\n                    <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.vtigerAccounts" ng-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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 == \'zendesk\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1301])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.zendeskConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'desk\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1306])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.deskConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'zoho\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1307])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.zohoConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'salesforce\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1302])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.salesforceConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'sugarcrm\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1305])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.sugarcrmConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'freshdesk\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1303])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.freshdeskConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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 == \'integration\' && vm.action.data1 == \'vtiger\' && 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.newAction && (!vm.newAction && !vm.hasSectionPermissions[1308])">\n                    <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.vtigerConfigurations | filter:{AccountId:vm.action.data2}" ng-if="!vm.newAction || (vm.newAction && data3.canSelect)" ng-disabled="!data3.canSelect">{{ 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" 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\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\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\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-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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-if="!vm.newAction || (vm.newAction && data2.canSelect)" ng-disabled="!data2.canSelect">{{ 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\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\n                    <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\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>\n\n                    <md-option ng-value="\'0\'"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n\n                    <md-option ng-value="\'1\'"> {{ \'TOOLS.NEW_WINDOW\' | 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\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\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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\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/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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.FIELD">Field</label>\n                <md-select name="field" ng-model="vm.allCondition.field" autofocus required>\n\n                    <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }} </md-option>\n\n                    <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }} </md-option>\n\n                    <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n\n                    <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }} </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\n                    <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n\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\' && vm.trigger.channel == \'chat\'" 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" ng-repeat="value in vm.chatAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'mail\'" 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" ng-repeat="value in vm.mailAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'sms\'" 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" ng-repeat="value in vm.smsAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'fax\'" 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" ng-repeat="value in vm.faxAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'openchannel\'" 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" ng-repeat="value in vm.openchannelAccounts" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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" ng-repeat="value in vm.outboundRoutes" ng-if="!vm.newAllCondition || (vm.newAllCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'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="\'abandoned\'">Abandon</md-option>\n                    <md-option ng-value="\'complete\'">Hangup</md-option>\n                    <md-option ng-value="\'rejected\'">Reject</md-option>\n                    <md-option ng-value="\'called\'">Ring</md-option>\n                    <md-option ng-value="\'connect\'">Answer</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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\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/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.title | translate }}</span>\n                <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n                    <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n                </md-button>\n            </div>\n        </md-toolbar>\n\n        <md-dialog-content ms-scroll>\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-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.FIELD">Field</label>\n                <md-select name="field" ng-model="vm.anyCondition.field" autofocus required>\n\n                    <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }} </md-option>\n\n                    <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }} </md-option>\n\n                    <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }} </md-option>\n\n                    <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n\n                    <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }} </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\n                    <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n\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\' && vm.trigger.channel == \'chat\'" 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" ng-repeat="value in vm.chatAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'mail\'" 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" ng-repeat="value in vm.mailAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'sms\'" 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" ng-repeat="value in vm.smsAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'fax\'" 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" ng-repeat="value in vm.faxAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'account\' && vm.trigger.channel == \'openchannel\'" 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" ng-repeat="value in vm.openchannelAccounts" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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" ng-repeat="value in vm.outboundRoutes" ng-if="!vm.newAnyCondition || (vm.newAnyCondition && value.canSelect)" ng-disabled="!value.canSelect">{{ 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 == \'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="\'abandoned\'">Abandon</md-option>\n                    <md-option ng-value="\'complete\'">Hangup</md-option>\n                    <md-option ng-value="\'rejected\'">Reject</md-option>\n                    <md-option ng-value="\'called\'">Ring</md-option>\n                    <md-option ng-value="\'connect\'">Answer</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\n            <div class="error-list">\n                <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n                    <div>\n                        <span class="message">{{error.message}}</span>\n                        <span class="type">({{error.type}})</span>\n                    </div>\n                    <md-button class="md-icon-button">\n                        <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n                    </md-button>\n                </div>\n            </div>\n        </md-dialog-content>\n\n        <md-dialog-actions layout="row" layout-align="space-between center" 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\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\n    \x3c!-- HEADER --\x3e\n    <div class="header md-accent-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\n            <div layout="row" layout-align="start center">\n\n                <div class="trigger-image" hide-xs>\n                    <img ng-src="assets/images/business/triggers.jpg">\n                </div>\n\n                <div layout="column" layout-align="start start">\n                    <div class="h2">\n                        #{{vm.trigger.id}}\n                        <span ng-if="vm.trigger.name">{{vm.trigger.name}}</span>\n                        <span ng-if="vm.trigger.exten">{{vm.trigger.exten}}</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\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="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" 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.CHANNEL">Channel</label>\n                                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n\n                                    <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n                                    <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </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"><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\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.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">\n                        <div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.init(vm.trigger, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerAllConditions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">AllConditions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAllCondition($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.selectedTriggerAllConditions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedTriggerAllConditions.length}} {{vm_dc.selectedTriggerAllConditions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerAllConditions" 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.deleteSelectedTriggerAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.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.selectedTriggerAllConditions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerAllConditions">\n                                        <tr md-row>\n                                            <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="field">{{ \'TOOLS.FIELD\' | translate }}</th>\n                                            <th md-column md-order-by="operator">{{ \'TOOLS.OPERATOR\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'TOOLS.CREATED_AT\' | translate }}</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.triggerAllConditions.rows">\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{allCondition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayfield[allCondition.field].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayoperator[allCondition.operator].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>{{allCondition.value}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.chatAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.mailAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.smsAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.faxAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>{{ (vm_dc.openchannelAccounts | filter : {\'id\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>{{ (vm_dc.queues | filter : {\'name\':allCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>{{ (vm_dc.outboundRoutes | filter : {\'id\':allCondition.value})[0].exten }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>{{ vm_dc.callStatusValues[allCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>{{ vm_dc.interactionStatusValues[allCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>{{ vm_dc.messageStatusValues[allCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAllCondition($event, allCondition)" md-cell>{{allCondition.createdAt | date:\'medium\'}}</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.createOrEditTriggerAllCondition($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.triggerAllConditions.rows.length">\n                                            <td md-cell colspan="17">\n                                                <span class="text-boxed-ligth" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No allcondition available</span>\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.triggerAllConditions.count}}" md-on-paginate="vm_dc.getTriggerAllConditions" md-page-select></md-table-pagination>\n                        </div>\n\n                    </div>\n                    <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.init(vm.trigger, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerAnyConditions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\n                                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAnyCondition($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.selectedTriggerAnyConditions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedTriggerAnyConditions.length}} {{vm_dc.selectedTriggerAnyConditions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerAnyConditions" 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.deleteSelectedTriggerAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.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.selectedTriggerAnyConditions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerAnyConditions">\n                                        <tr md-row>\n                                            <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="field">{{ \'TOOLS.FIELD\' | translate }}</th>\n                                            <th md-column md-order-by="operator">{{ \'TOOLS.OPERATOR\' | translate }}</th>\n                                            <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'TOOLS.CREATED_AT\' | translate }}</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.triggerAnyConditions.rows">\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{anyCondition.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayfield[anyCondition.field].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayoperator[anyCondition.operator].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>{{anyCondition.value}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.chatAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.mailAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.smsAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.faxAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>{{ (vm_dc.openchannelAccounts | filter : {\'id\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>{{ (vm_dc.queues | filter : {\'name\':anyCondition.value})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>{{ (vm_dc.outboundRoutes | filter : {\'id\':anyCondition.value})[0].exten }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>{{ vm_dc.callStatusValues[anyCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>{{ vm_dc.interactionStatusValues[anyCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>{{ vm_dc.messageStatusValues[anyCondition.value].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAnyCondition($event, anyCondition)" md-cell>{{anyCondition.createdAt | date:\'medium\'}}</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.createOrEditTriggerAnyCondition($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.triggerAnyConditions.rows.length">\n                                            <td md-cell colspan="17">\n                                                <span class="text-boxed-ligth" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition available</span>\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.triggerAnyConditions.count}}" md-on-paginate="vm_dc.getTriggerAnyConditions" md-page-select></md-table-pagination>\n                        </div>\n\n                    </div>\n                    <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp">\n                        <div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.init(vm.trigger, vm.crudPermissions)">\n                            <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\n                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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">\n                                        <md-icon md-font-icon="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.selectedTriggerActions.length">\n                                <div class="md-toolbar-tools">\n                                    <span class="md-subhead">{{vm_dc.selectedTriggerActions.length}} {{vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                                    <div flex></div>\n                                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" 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.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TRIGGERS.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.selectedTriggerActions" md-progress="vm_dc.promise">\n                                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\n                                        <tr md-row>\n                                            <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                                            <th md-column md-order-by="action">{{ \'TOOLS.ACTION\' | translate }}</th>\n                                            <th md-column md-order-by="data1">{{ \'TOOLS.TYPE\' | translate }}</th>\n                                            <th md-column md-order-by="data2">{{ \'TOOLS.INFO\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'TOOLS.CREATED_AT\' | translate }}</th>\n                                            <th md-column width="10px"></th>\n                                        </tr>\n                                    </thead>\n                                    <tbody md-body>\n                                        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{action.id}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{ \'TOOLS.\' + vm_dc.arrayaction[action.action].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>{{ (vm_dc.projects | filter : {\'id\':action.data1})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>{{ vm_dc.browserValues[action.data1].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>{{ (vm_dc.lists | filter : {\'id\':action.data1})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>{{ \'TOOLS.\' + vm_dc.autoCreateContact[action.data2].option | uppercase | translate }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>{{ vm_dc.urlForwardValues[action.data1].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>{{action.data1}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\' && action.data1 == \'POST\'" md-cell>{{action.data7}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>{{ vm_dc.integrationValues[action.data1].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>{{ (vm_dc.zendeskAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>{{ (vm_dc.deskAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>{{ (vm_dc.zohoAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>{{ (vm_dc.salesforceAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>{{ (vm_dc.sugarcrmAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>{{ (vm_dc.freshdeskAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>{{ (vm_dc.vtigerAccounts | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>{{ vm_dc.motionbarValues[action.data1].option }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 == \'1\'" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 == \'2\'" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 == \'0\'" md-cell>{{ (vm_dc.templates | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 == \'0\'" md-cell>{{ (vm_dc.templates | filter : {\'id\':action.data2})[0].name }}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 == \'1\'" md-cell>{{action.data2}}</td>\n                                            <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>{{action.createdAt | date:\'medium\'}}</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.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\n                                                                Edit Action\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(action, $event)" translate="TOOLS.DELETE_ACTION">\n                                                                Delete Action\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.triggerActions.rows.length">\n                                            <td md-cell colspan="40">\n                                                <span class="text-boxed-ligth" translate="TOOLS.NO_ACTION_AVAILABLE">No action available</span>\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.triggerActions.count}}" md-on-paginate="vm_dc.getTriggerActions" 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/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n\n    \x3c!-- HEADER --\x3e\n    <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n        \x3c!-- APP TITLE --\x3e\n        <div layout="row" layout-align="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\n        <div layout="row">\n            \x3c!-- SEARCH --\x3e\n            <div class="search-input-wrapper" layout="row" layout-align="start center">\n                <label for="search">\n                    <md-icon md-font-icon="icon-magnify"></md-icon>\n                </label>\n                <md-input-container md-no-float class="m-0">\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.selectedTriggers.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.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\n        <div flex layout="row" layout-align="space-between center">\n\n            <div>\n                <span class="selected-triggers-count">\n                    <span>{{vm.selectedTriggers.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="TRIGGERS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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\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="TRIGGERS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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!-- 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 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="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 md-cell ng-if="trigger.userpic"><img class="avatar" alt="{{trigger.name}}" ng-src="api/users/{{trigger.id}}/avatar" /></td>\n                                <td md-cell ng-if="!trigger.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trigger.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{trigger.id}}</td>\n                                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{trigger.name}}</td>\n                                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">{{ \'TOOLS.\' + vm.arraychannel[trigger.channel].option | uppercase | translate }}</td>\n                                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : 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.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trigger, ev) : vm.createOrEditTrigger($event, trigger)" md-cell class="description ">{{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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(trigger, $event)" translate="TOOLS.EDIT_TRIGGER">\n                                                    Edit Trigger\n                                                </md-button>\n                                            </md-menu-item>\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\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\n            \x3c!-- / NO RESULTS --\x3e\n        </div>\n        \x3c!-- / MAIN --\x3e\n\n    </div>\n    \x3c!-- / CONTENT --\x3e\n\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                        <span ng-if="vm.trunk.exten">{{vm.trunk.exten}}</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">{{ 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" 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="TRUNKS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="TRUNKS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <td md-cell class="actions">\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.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(trunk, $event)" translate="TOOLS.EDIT_TRUNK">\n                                                    Edit Trunk\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.clonedialog(trunk, $event)" translate="TOOLS.CLONE_TRUNK">\n                                                    clone Trunk\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(trunk, $event)" translate="TOOLS.GOTOREALTIME_TRUNK">\n                                                    goToRealtime Trunk\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(trunk, $event)" translate="TOOLS.DELETE_TRUNK">\n                                                    Delete 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: \'{{\'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="VARIABLES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VARIABLES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(variable, $event)" translate="TOOLS.EDIT_VARIABLE">\n                                                    Edit Variable\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(variable, $event)" translate="TOOLS.DELETE_VARIABLE">\n                                                    Delete Variable\n                                                </md-button>\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: \'{{\'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/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="CHANSPIES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CHANSPIES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editdialog(chanSpy, $event)" translate="VOICE.EDIT_CHANSPY">\n                                                    Edit chanSpy\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(chanSpy, $event)" translate="VOICE.DELETE_CHANSPY">\n                                                    Delete chanSpy\n                                                </md-button>\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.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="CONTEXTS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="CONTEXTS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editdialog(context, $event)" translate="VOICE.EDIT_CONTEXT">\n                                                    Edit Context\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(context, $event)" translate="VOICE.DELETE_CONTEXT">\n                                                    Delete Context\n                                                </md-button>\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.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-if="!vm.newInboundRoute || (vm.newInboundRoute && context.canSelect)" ng-disabled="!context.canSelect">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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                        <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\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">{{ 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-ligth" 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="INBOUNDROUTES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="INBOUNDROUTES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(inboundroute, $event)" 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(inboundroute, $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\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-if="!vm.newInternalRoute || (vm.newInternalRoute && context.canSelect)" ng-disabled="!context.canSelect">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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                        <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\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">{{ 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-ligth" 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="INTERNALROUTES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="INTERNALROUTES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(internalroute, $event)" 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(internalroute, $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\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-if="!vm.newMohSound || (vm.newMohSound && id.canSelect)" ng-disabled="!id.canSelect">{{ 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                        <span ng-if="vm.musiconhold.exten">{{vm.musiconhold.exten}}</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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300"></ms-search-bar>\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="MUSICONHOLDS.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.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">{{ \'VOICE.ID\' | translate }}</th>\n                                            <th md-column md-order-by="audio">{{ \'VOICE.AUDIO\' | translate }}</th>\n                                            <th md-column md-order-by="createdAt">{{ \'VOICE.CREATED_AT\' | translate }}</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>{{mohSound.id}}</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>{{mohSound.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="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 class="md-primary" ng-click="vm_dc.voiceMusicOnHoldDownload(mohSound, $event)" translate="VOICE.DOWNLOAD_MOHSOUND">\n                                                                Download MohSound\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(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                                                <span class="text-boxed-ligth" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\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="MUSICONHOLDS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="MUSICONHOLDS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(musiconhold, $event)" translate="VOICE.EDIT_MUSICONHOLD">\n                                                    Edit MusicOnHold\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(musiconhold, $event)" translate="VOICE.DELETE_MUSICONHOLD">\n                                                    Delete MusicOnHold\n                                                </md-button>\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.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-if="!vm.newOutboundRoute || (vm.newOutboundRoute && context.canSelect)" ng-disabled="!context.canSelect">{{ 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">{{ 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">{{ 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                        <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\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">{{ 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-ligth" 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="OUTBOUNDROUTES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="OUTBOUNDROUTES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(outboundroute, $event)" 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(outboundroute, $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\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.query.filter = query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n            <div flex></div>\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE">Select a date</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearAll()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.DELETE\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 black-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getContacts()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            <div class="padding-horizontal-20" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_AGENT">Select an agent</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.lastAssignedTo" ng-change="vm.getContacts()">\n                    <md-option ng-value="\'null\'" translate="DASHBOARDS.NOT_ASSIGNED"></md-option>\n                    <md-option ng-value="undefined" translate="DASHBOARDS.ALL"></md-option>\n                    <md-option ng-value="agent.name" ng-repeat="agent in vm.agents.rows">{{agent.name}}</md-option>\n                </md-select>\n            </div>\n            <div ng-if="vm.queues.count" layout="column">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_CAMPAIGN">Select a Campaign</span>\n                <md-select class="font-size-12 no-margin" ng-model="vm.query.queue" ng-change="vm.getContacts()">\n                    <md-option ng-value="undefined" ng-if="vm.queues.count > 1"><em translate="DASHBOARDS.ALL">All</em></md-option>\n                    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows">{{queue.name}}</md-option>\n                </md-select>\n            </div>\n            <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshContacts($event)" aria-label="refresh Contacts" translate translate-attr-label="DASHBOARDS.REFRESH_CONTACTS">\n                <md-icon md-font-icon="icon-reload"></md-icon>\n                <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | 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.getContacts">\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 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 tranlsate="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 md-cell class="id">{{contact.id}}</td>\n                    <td md-cell class="firstName">{{contact.calleridname}}</td>\n                    <td md-cell class="list">{{contact.calleridnum}}</td>\n                    <td md-cell class="list">{{vm.queuesMap[contact.queue]}}</td>\n                    <td md-cell class="list">{{contact.queuecallerabandonAt ? (contact.queuecallerabandonAt | formatdate) : undefined }}</td>\n                    <td md-cell class="list">{{contact.lastAssignedTo}}</td>\n                    <td md-cell class="list">{{contact.disposition}}</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">Assigned a</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="contact.lastAssignedTo">\n                                                <md-button ng-click="vm.assignedA(contact)"><em translate="DASHBOARDS.NONE">Not Assigned</em></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.assignedA(contact,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-menu>\n                                        <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose</md-button>\n                                        <md-menu-content>\n                                            <md-menu-item ng-if="vm.dispositions.length > 0" ng-repeat="disposition in vm.dispositions">\n                                                <md-button ng-click="vm.disposed(contact, disposition.name)">{{disposition.name}}</md-button>\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\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>'),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.query.filter = query; vm.onInit()" 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\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\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="4">{{ \'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">{{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n                <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n                <th width="10px" class="bt bl" rowspan="2"></th>\n            </tr>\n            <tr md-row>\n                <th class="bl" md-column md-order-by="fullname">{{ \'VOICE.NAME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="globalStatus">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastLoginAt">{{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n                <th class="bl custom-column" md-column md-order-by="lastPauseAt">{{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n\n                <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n                <th class="bl custom-column">Info</th>\n\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\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\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\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\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            </tr>\n        </thead>\n        <tbody md-body>\n            <tr md-row ng-hide="vm.order.length">\n                <td md-cell colspan="17">\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">\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]\">{{ vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }} {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ? '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE'  : vm.agents[value].pauseType || 'DEFAULT PAUSE') : ''}}</span>\n                </td>\n                <td class=\"bt custom-column\">\n                    <timer start-time=\"vm.agents[value].lastLoginAt\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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\" interval=\"1000\">{{ days > 0 ? days + 'd' : '' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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\" interval=\"1000\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{hhours}}:{{mminutes}}:{{sseconds}}</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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ 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]\">{{ vm.agents[value].faxCurrentCapacity }}</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\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>\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 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}}</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 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>\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 tranlsate="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>\n                    {{call.calleridname}}, {{call.calleridnum}} <span class="text-boxed" ng-if="call.answered">\n                        <timer ng-if="call.answertime" start-time="call.answertime" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                    </span>\n                </td>\n                <td md-cell>{{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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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        \x3c!-- <div flex></div>\n    <ms-search-bar on-search="vm.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar> --\x3e\n    </div>\n</md-toolbar>\n\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 tranlsate="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>{{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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</timer>\n                    </span>\n                </td>\n                <td md-cell>\n                    <span class="text-boxed">\n                        <timer start-time="channel.queuecallerjoinAt" interval="1000">{{hhours}}:{{mminutes}}:{{sseconds}}</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\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>\n                                    <md-button ng-click="$mdMenu.open()" translate="VOICE.REDIRECT_TO_AGENT">Redirect to Agent</md-button>\n                                    <md-menu-content>\n                                        <md-menu-item ng-repeat="agent in vm.agents.rows">\n                                            <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">{{agent.name}}</md-button>\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\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.query.filter = 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 tranlsate="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",'\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.QUEUES">Queues</span>\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>\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 md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n                <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n                <th md-column>{{ \'VOICE.READY\' | translate }}</th>\n                <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.TALKING\' | 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">\n                <td md-cell colspan="7">\n                    <div layout="row" layout-align="center center">\n                        <span tranlsate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                </td>\n            </tr>\n            <tr md-row md-select="vm.queues[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n                <td md-cell>{{vm.queues[value].name}}</td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].loggedInDb || 0}} ({{vm.queues[value].loggedIn || 0}})</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].paused || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{vm.queues[value].available || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-20 grey-fg">{{vm.queues[value].waiting || 0}}</span>\n                </td>\n                <td md-cell>\n                    <span class="font-size-16 grey-fg">{{(vm.queues[value].talking || 0) }}</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\n                        <md-menu-content width="3">\n                            <md-menu-item>\n                                <md-button ng-click="vm.createOrEditVoiceQueue($event, vm.queues[value])" translate="VOICE.EDIT_QUEUE">\n                                    Edit Queue\n                                </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                                <md-button ng-click="vm.agentAdd($event, vm.queues[value])" 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.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n        <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.AGENTS">Agents</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.TELEPHONES">Telephones</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.TRUNKS">Trunks</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.QUEUES">Queues</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n                </md-tab-label>\n            </md-tab>\n            <md-tab>\n                <md-tab-label>\n                    <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n                </md-tab-label>\n            </md-tab>\n        </md-tabs>\n\n        <md-card ui-view></md-card>\n\n    </div>\n    \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n        <div flex></div>\n        <ms-search-bar on-search="vm.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n        \x3c!-- <md-button class="md-icon-button" ng-click="vm.showInfo($event)">\n            <i class="icon-information-outline grey-600-fg">\n              <md-tooltip>{{\'VOICE.INFO\' | translate}}</md-tooltip>\n            </i>\n        </md-button> --\x3e\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 tranlsate="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.query.filter = query;" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n        \x3c!-- <md-button class="md-icon-button" ng-click="vm.showInfo($event)">\n      <i class="icon-information-outline grey-600-fg">\n        <md-tooltip>{{\'FAX.INFO\' | translate}}</md-tooltip>\n      </i>\n    </md-button> --\x3e\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 tranlsate="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                        <span ng-if="vm.voicemail.exten">{{vm.voicemail.exten}}</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">{{ 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                                    <div flex></div>\n                                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.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_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="VOICEMAILS.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.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">{{ \'VOICE.ID\' | translate }}</th>\n                                            <th md-column md-order-by="callerid">{{ \'VOICE.CALLER_ID\' | translate }}</th>\n                                            <th md-column md-order-by="duration">{{ \'VOICE.DURATION\' | translate }}</th>\n                                            <th md-column md-order-by="audio">{{ \'VOICE.AUDIO\' | translate }}</th>\n                                            <th md-column md-order-by="stamp">{{ \'VOICE.RECEIVED_AT\' | translate }}</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>{{message.id}}</td>\n                                            <td md-cell>{{message.callerid}}</td>\n                                            <td md-cell>{{message.duration}}</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>{{message.stamp | 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="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 class="md-primary" ng-click="vm_dc.voiceMailMessageDownload(message, $event)" translate="VOICE.DOWNLOAD_MESSAGE">\n                                                                Download Message\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(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                                                <span class="text-boxed-ligth" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\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="VOICEMAILS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VOICEMAILS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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.editstate(voicemail, $event)" translate="VOICE.EDIT_VOICEMAIL">\n                                                    Edit Voicemail\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(voicemail, $event)" translate="VOICE.DELETE_VOICEMAIL">\n                                                    Delete Voicemail\n                                                </md-button>\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.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-if="!vm.newvoicePrefix || (vm.newvoicePrefix && VoiceExtensionId.canSelect)" ng-disabled="!VoiceExtensionId.canSelect">{{ 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"></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="VOICEPREFIXES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VOICEPREFIXES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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})[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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editdialog(voicePrefix, $event)" translate="VOICE.EDIT_VOICEPREFIX">\n                                                    Edit voicePrefix\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(voicePrefix, $event)" translate="VOICE.AGENTADD_VOICEPREFIX">\n                                                    AgentAdd voicePrefix\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(voicePrefix, $event)" translate="VOICE.DELETE_VOICEPREFIX">\n                                                    Delete voicePrefix\n                                                </md-button>\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.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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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" ng-model="vm.penalty" placeholder="0" required md-minlength="0" md-maxlength="3">\n                <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n                    <div ng-message="required">\n                        <span>You must supply a penalty.</span>\n                    </div>\n                    <div ng-message="md-minlength">\n                        <span>Min Penalty 0 characters.</span>\n                    </div>\n                    <div ng-message="md-maxlength">\n                        <span>Max Penalty 3 characters.</span>\n                    </div>\n                </div>\n            </md-input-container>\n            <ms-dual-multiselect options="vm.dualMultiselectOptions"></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                        <span ng-if="vm.voiceQueue.exten">{{vm.voiceQueue.exten}}</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" 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" 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\'">no</md-option>\n                                    <md-option ng-value="\'yes\'">yes</md-option>\n                                    <md-option ng-value="\'strict\'">strict</md-option>\n                                    <md-option ng-value="\'loose\'">loose</md-option>\n                                    <md-option ng-value="\'paused\'">paused</md-option>\n                                    <md-option ng-value="\'penalty\'">penalty</md-option>\n                                    <md-option ng-value="\'inuse\'">inuse</md-option>\n                                    <md-option ng-value="\'ringing\'">ringing</md-option>\n                                    <md-option ng-value="\'unavailable\'">unavailable</md-option>\n                                    <md-option ng-value="\'invalid\'">invalid</md-option>\n                                    <md-option ng-value="\'unknown\'">unknoww</md-option>\n                                    <md-option ng-value="\'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\'">no</md-option>\n                                    <md-option ng-value="\'yes\'">yes</md-option>\n                                    <md-option ng-value="\'strict\'">strict</md-option>\n                                    <md-option ng-value="\'loose\'">loose</md-option>\n                                    <md-option ng-value="\'paused\'">paused</md-option>\n                                    <md-option ng-value="\'penalty\'">penalty</md-option>\n                                    <md-option ng-value="\'inuse\'">inuse</md-option>\n                                    <md-option ng-value="\'ringing\'">ringing</md-option>\n                                    <md-option ng-value="\'unavailable\'">unavailable</md-option>\n                                    <md-option ng-value="\'invalid\'">invalid</md-option>\n                                    <md-option ng-value="\'unknown\'">unknoww</md-option>\n                                    <md-option ng-value="\'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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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">{{ 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\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="VOICEQUEUES.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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="VOICEQUEUES.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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                                <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                                        <md-menu-content width="3">\n                                            <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                                <md-button ng-click="vm.editstate(voiceQueue, $event)" translate="VOICE.EDIT_VOICEQUEUE">\n                                                    Edit VoiceQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.teamadddialog(voiceQueue, $event)" translate="VOICE.TEAMADD_VOICEQUEUE">\n                                                    teamadd VoiceQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.agentadddialog(voiceQueue, $event)" translate="VOICE.AGENTADD_VOICEQUEUE">\n                                                    agentadd VoiceQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(voiceQueue, $event)" translate="VOICE.DELETE_VOICEQUEUE">\n                                                    Delete VoiceQueue\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event)" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                                                    goToRealtime VoiceQueue\n                                                </md-button>\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.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/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            \x3c!-- DATE FILTER --\x3e\n            <div class="padding-horizontal-20" layout="column" layout-align="center center">\n                <span class="font-size-10" translate="DASHBOARDS.SELECT_DATE_RANGE">Select Date Range</span>\n                <div layout="row" layout-align="center center">\n                    <md-button ng-if="vm.pickerModel.dateStart" ng-click="vm.clearDateFilter()" class="md-icon-button no-padding width-20 height-20">\n                        <md-tooltip>{{ \'DASHBOARDS.CLEAR\' | translate }}</md-tooltip>\n                        <md-icon md-font-icon="icon-close" class="s16 white-fg"></md-icon>\n                    </md-button>\n                    <md-date-range localization-map="vm.localizationMap" ng-model="vm.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm.getVoiceRecordings()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                </div>\n            </div>\n            \x3c!-- /DATE FILTER --\x3e\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="VOICERECORDINGS.MULTI_SELECT_TOGGLE">\n                        <md-icon md-font-icon="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.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICERECORDINGS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                </md-button>\n            </div>\n        </div>\n    </div>\n    \x3c!-- / SELECTED BAR --\x3e\n\n    \x3c!-- CONTENT --\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 md-order-by="audio">{{ \'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 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="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 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.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum ">{{voiceRecording.calleridnum}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten ">{{voiceRecording.exten}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum ">{{voiceRecording.connectedlinenum}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername ">{{voiceRecording.membername}}</td>\n                                <td ng-click="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"></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.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                                <td ng-click="vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</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                                        <md-menu-content width="3">\n                                            <md-menu-item>\n                                                <md-button ng-click="vm.downloadfile2(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                                                    Download VoiceRecording\n                                                </md-button>\n                                            </md-menu-item>\n                                            <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                                <md-button ng-click="vm.deleteconfirm(voiceRecording, $event)" translate="VOICE.DELETE_VOICERECORDING">\n                                                    Delete VoiceRecording\n                                                </md-button>\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.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/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" <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.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>\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>\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() | 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" 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"></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">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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">{{ days > 0 ? days + \'d\' : \'\' }} {{hhours}}:{{mminutes}}:{{sseconds}}</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 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">{{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">\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 72%
rename from public/styles/app.b6d79618.css
rename to public/styles/app.59a8ca15.css
index c9386ac..29a410e 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:#ea4c61!important;border-left-color:#ea4c61!important}.right .motion-spinner{border-top-color:#ea4c61!important;border-right-color:#ea4c61!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-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}@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,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}}.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-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)}.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-bar-collapser{display:none}.ms-search-bar #ms-search-bar-input{display:none;min-height:64px;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}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/march.jpg) 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/march.jpg) 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%}#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.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.chatDisposition-dialog{max-width:720px;width:720px}md-dialog.chatDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.chatDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.chatDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.chatDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatDisposition-dialog .error-list{font-size:13px}md-dialog.chatDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.chatDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.chatDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen 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%}#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%}#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%}md-dialog.voiceDisposition-dialog{max-width:720px;width:720px}md-dialog.voiceDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.voiceDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.voiceDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceDisposition-dialog .error-list{font-size:13px}md-dialog.voiceDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.voiceDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.voiceDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#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 #tags md-select-value span{color:#fff;font-weight:700}#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 .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 .interaction-reload md-icon{color:#fff}#agent-general .interaction-new md-icon{color:#fff}#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}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.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-intearctions-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-intearctions-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}#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;box-shadow:0 1px .5px rgba(0,0,0,.13);border-radius:6px}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADGUExURQAAAP////b29vn5+f///wAAAP///wAAAAAAAP///9ra2v////j4+PHx8fv7++Hh4fHx8f////////////////39/QAAAP////////z8/P////39/f39/fz8/P////////////z8/P////////////z8/P////////////v7+/Hx8f///9bW1vz8/K2trf////39/f39/WJiYgAAAExMTFtbWwAAAN3d3cjIyPr6+vX19QAAAO7u7vz8/NTU1Ofn5zMzM////zGPlXsAAABBdFJOUwAcm/kREh4CCDWL1SneR6TfAQffhMYK/A5nRrLWfRc5DW2ih5f+19Kn+9v4g/1LCJuXHwQUKgahcXS6DNnlDMMKKzPoTgAAAKBJREFUKM+V08USwmAQA+C/0NIWd3d3d8/7vxTMcIPkQK7f7CG7s8bQAOY/SCuwFYQU1P+eiCqIK2gpWCmoCrAgoKQgJ8CHgIqAMjg0MxxSQ3DogEMWFBZtUPAHYGB1CyDQWE6AH7BrfXzlAxGAQhECTGAmwN1Okz0Gb/LW4fEItIfrOfNELMh3tck7u+PhcT2zQ7l77/K8iY8yJwV3BeYFqpc/uSyPGdAAAAAASUVORK5CYII=);content:'';position:absolute;left:-11px;bottom:3px;width:12px;height:19px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain}#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 .time{font-size:11px;margin-top:0;text-align:right}#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: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:before{right:-11px;left:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#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:before{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#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.intearction-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.intearction-list .subheader,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.intearction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.intearction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-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}#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-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.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%}}md-dialog.faxDisposition-dialog{max-width:720px;width:720px}md-dialog.faxDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.faxDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.faxDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.faxDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxDisposition-dialog .error-list{font-size:13px}md-dialog.faxDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.faxDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.faxDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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%}#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%}#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/march.jpg) 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%}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%}#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.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%}#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.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%}#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%}#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%}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%}#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%}#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%}}md-dialog.mailDisposition-dialog{max-width:720px;width:720px}md-dialog.mailDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.mailDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.mailDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.mailDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailDisposition-dialog .error-list{font-size:13px}md-dialog.mailDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.mailDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.mailDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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%}#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%}#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%}#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%}#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%}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.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.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%}}md-dialog.openchannelDisposition-dialog{max-width:720px;width:720px}md-dialog.openchannelDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelDisposition-dialog .error-list{font-size:13px}md-dialog.openchannelDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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%}#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%}#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}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.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%}}md-dialog.smsDisposition-dialog{max-width:720px;width:720px}md-dialog.smsDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.smsDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.smsDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.smsDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsDisposition-dialog .error-list{font-size:13px}md-dialog.smsDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.smsDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.smsDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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%}#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%}#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%}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%}#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%}#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%}#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%}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%}#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%}#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%}#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}#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%}#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%}#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%}#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%}#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%}#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%}#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%}}#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}#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/march.jpg) 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:#ea4c61!important;border-left-color:#ea4c61!important}.right .motion-spinner{border-top-color:#ea4c61!important;border-right-color:#ea4c61!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-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}@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,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}}.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-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)}.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-bar-collapser{display:none}.ms-search-bar #ms-search-bar-input{display:none;min-height:64px;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}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/march.jpg) 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/march.jpg) 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%}#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.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.chatDisposition-dialog{max-width:720px;width:720px}md-dialog.chatDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.chatDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.chatDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.chatDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatDisposition-dialog .error-list{font-size:13px}md-dialog.chatDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.chatDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.chatDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen 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%}#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%}#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%}md-dialog.voiceDisposition-dialog{max-width:720px;width:720px}md-dialog.voiceDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.voiceDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.voiceDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceDisposition-dialog .error-list{font-size:13px}md-dialog.voiceDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.voiceDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.voiceDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#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 #tags md-select-value span{color:#fff;font-weight:700}#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 .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 .interaction-reload md-icon{color:#fff}#agent-general .interaction-new md-icon{color:#fff}#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}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.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-intearctions-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-intearctions-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}#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;box-shadow:0 1px .5px rgba(0,0,0,.13);border-radius:6px}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAADGUExURQAAAP////b29vn5+f///wAAAP///wAAAAAAAP///9ra2v////j4+PHx8fv7++Hh4fHx8f////////////////39/QAAAP////////z8/P////39/f39/fz8/P////////////z8/P////////////z8/P////////////v7+/Hx8f///9bW1vz8/K2trf////39/f39/WJiYgAAAExMTFtbWwAAAN3d3cjIyPr6+vX19QAAAO7u7vz8/NTU1Ofn5zMzM////zGPlXsAAABBdFJOUwAcm/kREh4CCDWL1SneR6TfAQffhMYK/A5nRrLWfRc5DW2ih5f+19Kn+9v4g/1LCJuXHwQUKgahcXS6DNnlDMMKKzPoTgAAAKBJREFUKM+V08USwmAQA+C/0NIWd3d3d8/7vxTMcIPkQK7f7CG7s8bQAOY/SCuwFYQU1P+eiCqIK2gpWCmoCrAgoKQgJ8CHgIqAMjg0MxxSQ3DogEMWFBZtUPAHYGB1CyDQWE6AH7BrfXzlAxGAQhECTGAmwN1Okz0Gb/LW4fEItIfrOfNELMh3tck7u+PhcT2zQ7l77/K8iY8yJwV3BeYFqpc/uSyPGdAAAAAASUVORK5CYII=);content:'';position:absolute;left:-11px;bottom:3px;width:12px;height:19px;background-position:50% 50%;background-repeat:no-repeat;background-size:contain}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre}#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.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: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:before{right:-11px;left:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#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:before{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1);background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAmCAMAAADp2asXAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAD2UExURQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRsXAAAANzwzNPmxNrtyau5oIWRedDkwNntyczgwdfpyJ+/n97wzsLWtNjsytvwzczfvtPmxau6nNjqxtrtyio1KtzwzNjryAAAANzwzgAAANzwzK7Aor/Us9Lnw8vevAAAAMzevtbpxrvMrX+IdwAAAEROOi45Lr3MrZGjf9LoxX+MctnqydLkwhgYGMzfv9vuyQAAANzwzNvuy9zxy7vMu7XGqNvtzKKykwAAANruzKq6nLnMriQkGMXXuL3PsNjsySgzKAAAANLkw83fvd3vy9z4xtzwzRpFmIEAAABQdFJOUwAXChEGBAMBAgwhDvJ7k0YqMc0Zmwj6apf2kjU0+dkw/swh/CP9j2Wr2gndvaYeBRoxQg6gUPt/FaHJGdTj9A9k7XQLeE6iFcN12xkSt9r4NKizowAAAMFJREFUKM+V0sdywlAMBVDbMX7PQCihQ+iQ0HsJvfem/P/PwBIzugu0PXNnNNJVyPmhsIPhhoB2COwIGuLdhAcl3AhCBoBoHUC6BCBbA0C/EkBFB5D/FjxQwQYg1RI8UKINgDoSAPUlAPqUAMgfAEBfXsEDBV0+Hogi4Zhg4THj9YwHoqEBYOrgYTI3GVgMNn8r+Qq94k9yZNosW/3Hy9VuTjWfHkOX6367bGZUU7de66ieHZrO1OGg8Z1WTgYAFLgD5S1PCkzo1B0AAAAASUVORK5CYII=)}#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.intearction-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.intearction-list .subheader,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.intearction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.intearction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.intearction-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.intearction-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}#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-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.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%}}md-dialog.faxDisposition-dialog{max-width:720px;width:720px}md-dialog.faxDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.faxDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.faxDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.faxDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxDisposition-dialog .error-list{font-size:13px}md-dialog.faxDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.faxDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.faxDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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%}#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%}#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/march.jpg) 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%}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%}#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.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%}#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.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%}#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%}#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%}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%}#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%}#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%}}md-dialog.mailDisposition-dialog{max-width:720px;width:720px}md-dialog.mailDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.mailDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.mailDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.mailDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailDisposition-dialog .error-list{font-size:13px}md-dialog.mailDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.mailDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.mailDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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%}#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%}#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%}#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%}#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%}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.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.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%}}md-dialog.openchannelDisposition-dialog{max-width:720px;width:720px}md-dialog.openchannelDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelDisposition-dialog .error-list{font-size:13px}md-dialog.openchannelDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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%}#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%}#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}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.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%}}md-dialog.smsDisposition-dialog{max-width:720px;width:720px}md-dialog.smsDisposition-dialog md-dialog-content{display:block;position:relative}md-dialog.smsDisposition-dialog md-toolbar .title{font-size:17px}md-dialog.smsDisposition-dialog md-input-container textarea{min-height:150px}md-dialog.smsDisposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsDisposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsDisposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsDisposition-dialog .error-list{font-size:13px}md-dialog.smsDisposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsDisposition-dialog .error-list .error .message{font-weight:500}md-dialog.smsDisposition-dialog .error-list .error .md-button{margin:0}md-dialog.smsDisposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsDisposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@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%}#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%}#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%}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%}#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%}#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%}#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%}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%}#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%}#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%}#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}#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%}#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%}#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%}#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%}#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%}#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%}#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%}}#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}#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/march.jpg) 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 b1f5e7a..35eee8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['motionbar[NULL,NULL,WinAppArguments]','TEXT','sequelize','exports','getDataValue','action','STRING','contactManager','integration','motionbar','jscripty','browser','bot','contactManager[ListId],\x20integration[intName(zendesk)],\x20motionbar[Popup(0),URL(1),WinApp(2)],\x20urlForward[GET,POST],\x20browser[TemplateId(0),URL(1)]','integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20urlForward[URL]'];(function(_0x4f1eec,_0x536335){var _0x5bc7ae=function(_0x4b3e8f){while(--_0x4b3e8f){_0x4f1eec['push'](_0x4f1eec['shift']());}};_0x5bc7ae(++_0x536335);}(_0xa41a,0x6b));var _0xaa41=function(_0x5694f3,_0x46f984){_0x5694f3=_0x5694f3-0x0;var _0x302c05=_0xa41a[_0x5694f3];return _0x302c05;};'use strict';var Sequelize=require(_0xaa41('0x0'));module[_0xaa41('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1612c4){return this[_0xaa41('0x2')](_0xaa41('0x3'));}},'action':{'type':Sequelize[_0xaa41('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0xaa41('0x5'),_0xaa41('0x6'),_0xaa41('0x7'),_0xaa41('0x8'),'urlForward',_0xaa41('0x9'),_0xaa41('0xa')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot'}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot'},'data1':{'type':Sequelize[_0xaa41('0x4')](0x1000),'comment':_0xaa41('0xb')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':_0xaa41('0xc')},'data3':{'type':Sequelize[_0xaa41('0x4')](0x1000),'comment':_0xaa41('0xd')},'data4':{'type':Sequelize[_0xaa41('0x4')](0x1000)},'data5':{'type':Sequelize[_0xaa41('0x4')](0x1000)},'data6':{'type':Sequelize[_0xaa41('0x4')]},'data7':{'type':Sequelize[_0xaa41('0xe')]}};
\ No newline at end of file
+var _0xeda8=['Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot','contactManager[ListId],\x20integration[intName(zendesk)],\x20motionbar[Popup(0),URL(1),WinApp(2)],\x20urlForward[GET,POST],\x20browser[TemplateId(0),URL(1)]','integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20urlForward[URL]','TEXT','sequelize','exports','getDataValue','action','STRING','contactManager','integration','motionbar','jscripty','urlForward','browser','bot'];(function(_0x3628e7,_0x2c305e){var _0x218c3c=function(_0x213406){while(--_0x213406){_0x3628e7['push'](_0x3628e7['shift']());}};_0x218c3c(++_0x2c305e);}(_0xeda8,0x104));var _0x8eda=function(_0x5e9dee,_0xeaba15){_0x5e9dee=_0x5e9dee-0x0;var _0x2b15ff=_0xeda8[_0x5e9dee];return _0x2b15ff;};'use strict';var Sequelize=require(_0x8eda('0x0'));module[_0x8eda('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x12899a){return this[_0x8eda('0x2')](_0x8eda('0x3'));}},'action':{'type':Sequelize[_0x8eda('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x8eda('0x5'),_0x8eda('0x6'),_0x8eda('0x7'),_0x8eda('0x8'),_0x8eda('0x9'),_0x8eda('0xa'),_0x8eda('0xb')]],'msg':_0x8eda('0xc')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot'},'data1':{'type':Sequelize[_0x8eda('0x4')](0x1000),'comment':_0x8eda('0xd')},'data2':{'type':Sequelize[_0x8eda('0x4')](0x1000),'comment':_0x8eda('0xe')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':'motionbar[NULL,NULL,WinAppArguments]'},'data4':{'type':Sequelize['STRING'](0x1000)},'data5':{'type':Sequelize['STRING'](0x1000)},'data6':{'type':Sequelize[_0x8eda('0x4')]},'data7':{'type':Sequelize[_0x8eda('0xf')]}};
\ No newline at end of file
index ad95bf9..43a28aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fa5=['apply','reject','save','update','then','destroy','error','stack','name','send','body','params','find','catch','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','count','offset','limit','Content-Range','json'];(function(_0x36b829,_0x57c021){var _0x22a368=function(_0x9f56ea){while(--_0x9f56ea){_0x36b829['push'](_0x36b829['shift']());}};_0x22a368(++_0x57c021);}(_0x2fa5,0x116));var _0x52fa=function(_0x24f8b0,_0x3a3699){_0x24f8b0=_0x24f8b0-0x0;var _0x3dcba2=_0x2fa5[_0x24f8b0];return _0x3dcba2;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x52fa('0x0'));var zipdir=require(_0x52fa('0x1'));var jsonpatch=require(_0x52fa('0x2'));var rp=require(_0x52fa('0x3'));var moment=require(_0x52fa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x52fa('0x5'));var util=require(_0x52fa('0x6'));var path=require(_0x52fa('0x7'));var sox=require(_0x52fa('0x8'));var csv=require(_0x52fa('0x9'));var ejs=require(_0x52fa('0xa'));var fs=require('fs');var _=require(_0x52fa('0xb'));var squel=require(_0x52fa('0xc'));var crypto=require(_0x52fa('0xd'));var jsforce=require(_0x52fa('0xe'));var deskjs=require(_0x52fa('0xf'));var toCsv=require(_0x52fa('0x9'));var querystring=require(_0x52fa('0x10'));var Papa=require(_0x52fa('0x11'));var Redis=require(_0x52fa('0x12'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var utils=require(_0x52fa('0x13'));var config=require(_0x52fa('0x14'));var db=require(_0x52fa('0x15'))['db'];function respondWithStatusCode(_0x3b9e8b,_0x3a176d){_0x3a176d=_0x3a176d||0xcc;return function(_0x35ecf4){if(_0x35ecf4){return _0x3b9e8b[_0x52fa('0x16')](_0x3a176d);}return _0x3b9e8b[_0x52fa('0x17')](_0x3a176d)[_0x52fa('0x18')]();};}function respondWithResult(_0x56858d,_0x58d1b7){_0x58d1b7=_0x58d1b7||0xc8;return function(_0x54844f){if(_0x54844f){return _0x56858d[_0x52fa('0x17')](_0x58d1b7)['json'](_0x54844f);}};}function respondWithFilteredResult(_0x14c403,_0x5f3f31){return function(_0xb1c3de){if(_0xb1c3de){var _0x31b3b8=_0xb1c3de[_0x52fa('0x19')],_0x55df34=_0x5f3f31[_0x52fa('0x1a')],_0x2692c4=_0x5f3f31[_0x52fa('0x1a')]+_0x5f3f31[_0x52fa('0x1b')],_0x2758a5;if(_0x2692c4>=_0x31b3b8){_0x2692c4=_0x31b3b8;_0x2758a5=0xc8;}else{_0x2758a5=0xce;}_0x14c403['status'](_0x2758a5);return _0x14c403['set'](_0x52fa('0x1c'),_0x55df34+'-'+_0x2692c4+'/'+_0x31b3b8)[_0x52fa('0x1d')](_0xb1c3de);}return null;};}function patchUpdates(_0x6323f9){return function(_0xc81eac){try{jsonpatch[_0x52fa('0x1e')](_0xc81eac,_0x6323f9,!![]);}catch(_0x4ad3b4){return BPromise[_0x52fa('0x1f')](_0x4ad3b4);}return _0xc81eac[_0x52fa('0x20')]();};}function saveUpdates(_0x560d04,_0x692832){return function(_0x3b2831){if(_0x3b2831){return _0x3b2831[_0x52fa('0x21')](_0x560d04)[_0x52fa('0x22')](function(_0x18ed82){return _0x18ed82;});}return null;};}function removeEntity(_0x1cf548,_0x494124){return function(_0x1b465d){if(_0x1b465d){return _0x1b465d[_0x52fa('0x23')]()[_0x52fa('0x22')](function(){_0x1cf548[_0x52fa('0x17')](0xcc)[_0x52fa('0x18')]();});}};}function handleEntityNotFound(_0x4c08af,_0x2dc7c7){return function(_0x13bfa8){if(!_0x13bfa8){_0x4c08af[_0x52fa('0x16')](0x194);}return _0x13bfa8;};}function handleError(_0xf3b57d,_0x280c6f){_0x280c6f=_0x280c6f||0x1f4;return function(_0x3ff02e){logger[_0x52fa('0x24')](_0x3ff02e[_0x52fa('0x25')]);if(_0x3ff02e[_0x52fa('0x26')]){delete _0x3ff02e[_0x52fa('0x26')];}_0xf3b57d['status'](_0x280c6f)[_0x52fa('0x27')](_0x3ff02e);};}exports[_0x52fa('0x21')]=function(_0x4d2ffd,_0x326d87){if(_0x4d2ffd[_0x52fa('0x28')]['id']){delete _0x4d2ffd[_0x52fa('0x28')]['id'];}return db['Action']['find']({'where':{'id':_0x4d2ffd[_0x52fa('0x29')]['id']}})[_0x52fa('0x22')](handleEntityNotFound(_0x326d87,null))[_0x52fa('0x22')](saveUpdates(_0x4d2ffd[_0x52fa('0x28')],null))[_0x52fa('0x22')](respondWithResult(_0x326d87,null))['catch'](handleError(_0x326d87,null));};exports[_0x52fa('0x23')]=function(_0x4e9538,_0xe9e2b){return db['Action'][_0x52fa('0x2a')]({'where':{'id':_0x4e9538[_0x52fa('0x29')]['id']}})[_0x52fa('0x22')](handleEntityNotFound(_0xe9e2b,null))[_0x52fa('0x22')](removeEntity(_0xe9e2b,null))[_0x52fa('0x2b')](handleError(_0xe9e2b,null));};
\ No newline at end of file
+var _0x9f50=['catch','html-pdf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','body','find','Action'];(function(_0x3bab53,_0x46230f){var _0x1a969e=function(_0x15ecb1){while(--_0x15ecb1){_0x3bab53['push'](_0x3bab53['shift']());}};_0x1a969e(++_0x46230f);}(_0x9f50,0x115));var _0x09f5=function(_0x49f67f,_0x4113a4){_0x49f67f=_0x49f67f-0x0;var _0x4779a1=_0x9f50[_0x49f67f];return _0x4779a1;};'use strict';var pdf=require(_0x09f5('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x09f5('0x1'));var jsonpatch=require(_0x09f5('0x2'));var rp=require(_0x09f5('0x3'));var moment=require(_0x09f5('0x4'));var BPromise=require(_0x09f5('0x5'));var Mustache=require(_0x09f5('0x6'));var util=require(_0x09f5('0x7'));var path=require(_0x09f5('0x8'));var sox=require(_0x09f5('0x9'));var csv=require(_0x09f5('0xa'));var ejs=require(_0x09f5('0xb'));var fs=require('fs');var _=require(_0x09f5('0xc'));var squel=require('squel');var crypto=require(_0x09f5('0xd'));var jsforce=require(_0x09f5('0xe'));var deskjs=require(_0x09f5('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x09f5('0x10'));var Redis=require(_0x09f5('0x11'));var qs=require(_0x09f5('0x12'));var logger=require(_0x09f5('0x13'))(_0x09f5('0x14'));var utils=require(_0x09f5('0x15'));var config=require(_0x09f5('0x16'));var db=require(_0x09f5('0x17'))['db'];function respondWithStatusCode(_0x404ad7,_0x396a6c){_0x396a6c=_0x396a6c||0xcc;return function(_0x40678b){if(_0x40678b){return _0x404ad7['sendStatus'](_0x396a6c);}return _0x404ad7[_0x09f5('0x18')](_0x396a6c)[_0x09f5('0x19')]();};}function respondWithResult(_0x59447d,_0x4cb9e5){_0x4cb9e5=_0x4cb9e5||0xc8;return function(_0x47fd78){if(_0x47fd78){return _0x59447d[_0x09f5('0x18')](_0x4cb9e5)[_0x09f5('0x1a')](_0x47fd78);}};}function respondWithFilteredResult(_0x2700ef,_0x58d282){return function(_0x29a7c1){if(_0x29a7c1){var _0x54a1d9=_0x29a7c1[_0x09f5('0x1b')],_0x97b3ee=_0x58d282['offset'],_0x10aaf7=_0x58d282[_0x09f5('0x1c')]+_0x58d282[_0x09f5('0x1d')],_0x30ea2a;if(_0x10aaf7>=_0x54a1d9){_0x10aaf7=_0x54a1d9;_0x30ea2a=0xc8;}else{_0x30ea2a=0xce;}_0x2700ef[_0x09f5('0x18')](_0x30ea2a);return _0x2700ef[_0x09f5('0x1e')](_0x09f5('0x1f'),_0x97b3ee+'-'+_0x10aaf7+'/'+_0x54a1d9)[_0x09f5('0x1a')](_0x29a7c1);}return null;};}function patchUpdates(_0x2116fb){return function(_0x51ac79){try{jsonpatch[_0x09f5('0x20')](_0x51ac79,_0x2116fb,!![]);}catch(_0x517821){return BPromise[_0x09f5('0x21')](_0x517821);}return _0x51ac79[_0x09f5('0x22')]();};}function saveUpdates(_0x382ea3,_0x5b782e){return function(_0x5a49cf){if(_0x5a49cf){return _0x5a49cf[_0x09f5('0x23')](_0x382ea3)['then'](function(_0x57c1e7){return _0x57c1e7;});}return null;};}function removeEntity(_0x4b8645,_0x4001f0){return function(_0x4c58b8){if(_0x4c58b8){return _0x4c58b8[_0x09f5('0x24')]()[_0x09f5('0x25')](function(){_0x4b8645[_0x09f5('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x502e25,_0x58a3c8){return function(_0x2ee470){if(!_0x2ee470){_0x502e25['sendStatus'](0x194);}return _0x2ee470;};}function handleError(_0x5a04c4,_0x1f2f30){_0x1f2f30=_0x1f2f30||0x1f4;return function(_0x306189){logger[_0x09f5('0x26')](_0x306189[_0x09f5('0x27')]);if(_0x306189[_0x09f5('0x28')]){delete _0x306189[_0x09f5('0x28')];}_0x5a04c4[_0x09f5('0x18')](_0x1f2f30)[_0x09f5('0x29')](_0x306189);};}exports['update']=function(_0x89d172,_0x546006){if(_0x89d172[_0x09f5('0x2a')]['id']){delete _0x89d172[_0x09f5('0x2a')]['id'];}return db['Action'][_0x09f5('0x2b')]({'where':{'id':_0x89d172['params']['id']}})[_0x09f5('0x25')](handleEntityNotFound(_0x546006,null))[_0x09f5('0x25')](saveUpdates(_0x89d172[_0x09f5('0x2a')],null))['then'](respondWithResult(_0x546006,null))['catch'](handleError(_0x546006,null));};exports[_0x09f5('0x24')]=function(_0x4887f9,_0x2e4ac2){return db[_0x09f5('0x2c')]['find']({'where':{'id':_0x4887f9['params']['id']}})['then'](handleEntityNotFound(_0x2e4ac2,null))[_0x09f5('0x25')](removeEntity(_0x2e4ac2,null))[_0x09f5('0x2d')](handleError(_0x2e4ac2,null));};
\ No newline at end of file
index a1a0ba4..7ea1876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14e2=['Action','lodash','../../config/logger','moment','bluebird','request-promise','./action.attributes','exports'];(function(_0x257e65,_0x3f4a68){var _0x3eef2f=function(_0x1c61e2){while(--_0x1c61e2){_0x257e65['push'](_0x257e65['shift']());}};_0x3eef2f(++_0x3f4a68);}(_0x14e2,0xe1));var _0x214e=function(_0x3be7ff,_0x12e714){_0x3be7ff=_0x3be7ff-0x0;var _0x186721=_0x14e2[_0x3be7ff];return _0x186721;};'use strict';var _=require(_0x214e('0x0'));var util=require('util');var logger=require(_0x214e('0x1'))('api');var moment=require(_0x214e('0x2'));var BPromise=require(_0x214e('0x3'));var rp=require(_0x214e('0x4'));var attributes=require(_0x214e('0x5'));module[_0x214e('0x6')]=function(_0xd29a0a,_0x399459){return _0xd29a0a['define'](_0x214e('0x7'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xffcd=['exports','define','Action','tools_actions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./action.attributes'];(function(_0x58cbde,_0x4b0f62){var _0x5799f3=function(_0x326eca){while(--_0x326eca){_0x58cbde['push'](_0x58cbde['shift']());}};_0x5799f3(++_0x4b0f62);}(_0xffcd,0x19c));var _0xdffc=function(_0x349200,_0x423568){_0x349200=_0x349200-0x0;var _0x4c2485=_0xffcd[_0x349200];return _0x4c2485;};'use strict';var _=require(_0xdffc('0x0'));var util=require(_0xdffc('0x1'));var logger=require(_0xdffc('0x2'))(_0xdffc('0x3'));var moment=require(_0xdffc('0x4'));var BPromise=require(_0xdffc('0x5'));var rp=require(_0xdffc('0x6'));var attributes=require(_0xdffc('0x7'));module[_0xdffc('0x8')]=function(_0x1beddd,_0x2e1d61){return _0x1beddd[_0xdffc('0x9')](_0xdffc('0xa'),attributes,{'tableName':_0xdffc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b276437..b563c3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae79=['request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Action,\x20%s,\x20%s','debug','Action,\x20%s,\x20%s,\x20%s'];(function(_0x119767,_0x23dbb4){var _0x4e7339=function(_0x379cf0){while(--_0x379cf0){_0x119767['push'](_0x119767['shift']());}};_0x4e7339(++_0x23dbb4);}(_0xae79,0x1d3));var _0x9ae7=function(_0x1e6961,_0x10c9f9){_0x1e6961=_0x1e6961-0x0;var _0x353d99=_0xae79[_0x1e6961];return _0x353d99;};'use strict';var _=require(_0x9ae7('0x0'));var util=require(_0x9ae7('0x1'));var moment=require(_0x9ae7('0x2'));var BPromise=require(_0x9ae7('0x3'));var rs=require(_0x9ae7('0x4'));var fs=require('fs');var Redis=require(_0x9ae7('0x5'));var db=require(_0x9ae7('0x6'))['db'];var utils=require(_0x9ae7('0x7'));var logger=require(_0x9ae7('0x8'))(_0x9ae7('0x9'));var config=require(_0x9ae7('0xa'));var jayson=require(_0x9ae7('0xb'));var client=jayson[_0x9ae7('0xc')][_0x9ae7('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x409d34,_0x57114d,_0x2761c2){return new BPromise(function(_0x47774e,_0x3c7738){return client[_0x9ae7('0xe')](_0x409d34,_0x2761c2)[_0x9ae7('0xf')](function(_0xc023d2){logger['info'](_0x9ae7('0x10'),_0x57114d,'request\x20sent');logger[_0x9ae7('0x11')](_0x9ae7('0x12'),_0x57114d,_0x9ae7('0x13'),JSON[_0x9ae7('0x14')](_0xc023d2));if(_0xc023d2[_0x9ae7('0x15')]){if(_0xc023d2[_0x9ae7('0x15')][_0x9ae7('0x16')]===0x1f4){logger['error'](_0x9ae7('0x10'),_0x57114d,_0xc023d2[_0x9ae7('0x15')]['message']);return _0x3c7738(_0xc023d2[_0x9ae7('0x15')][_0x9ae7('0x17')]);}logger[_0x9ae7('0x15')](_0x9ae7('0x10'),_0x57114d,_0xc023d2[_0x9ae7('0x15')][_0x9ae7('0x17')]);return _0x47774e(_0xc023d2[_0x9ae7('0x15')]['message']);}else{logger[_0x9ae7('0x18')](_0x9ae7('0x10'),_0x57114d,_0x9ae7('0x13'));_0x47774e(_0xc023d2[_0x9ae7('0x19')]['message']);}})[_0x9ae7('0x1a')](function(_0xe1a2d1){logger[_0x9ae7('0x15')]('Action,\x20%s,\x20%s',_0x57114d,_0xe1a2d1);_0x3c7738(_0xe1a2d1);});});}
\ No newline at end of file
+var _0xb38e=['Action,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x477d84,_0x3d5e14){var _0x4b273a=function(_0x17cb4b){while(--_0x17cb4b){_0x477d84['push'](_0x477d84['shift']());}};_0x4b273a(++_0x3d5e14);}(_0xb38e,0xa7));var _0xeb38=function(_0x48a3c6,_0x2575d1){_0x48a3c6=_0x48a3c6-0x0;var _0x5f342d=_0xb38e[_0x48a3c6];return _0x5f342d;};'use strict';var _=require(_0xeb38('0x0'));var util=require(_0xeb38('0x1'));var moment=require(_0xeb38('0x2'));var BPromise=require(_0xeb38('0x3'));var rs=require(_0xeb38('0x4'));var fs=require('fs');var Redis=require(_0xeb38('0x5'));var db=require(_0xeb38('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb38('0x7'))(_0xeb38('0x8'));var config=require('../../config/environment');var jayson=require(_0xeb38('0x9'));var client=jayson[_0xeb38('0xa')][_0xeb38('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31db8c,_0x4cfa4d,_0x3003aa){return new BPromise(function(_0x196580,_0x3b2df7){return client[_0xeb38('0xc')](_0x31db8c,_0x3003aa)['then'](function(_0x2b0c8b){logger[_0xeb38('0xd')](_0xeb38('0xe'),_0x4cfa4d,_0xeb38('0xf'));logger[_0xeb38('0x10')](_0xeb38('0x11'),_0x4cfa4d,_0xeb38('0xf'),JSON['stringify'](_0x2b0c8b));if(_0x2b0c8b[_0xeb38('0x12')]){if(_0x2b0c8b['error'][_0xeb38('0x13')]===0x1f4){logger[_0xeb38('0x12')]('Action,\x20%s,\x20%s',_0x4cfa4d,_0x2b0c8b[_0xeb38('0x12')][_0xeb38('0x14')]);return _0x3b2df7(_0x2b0c8b[_0xeb38('0x12')][_0xeb38('0x14')]);}logger[_0xeb38('0x12')](_0xeb38('0xe'),_0x4cfa4d,_0x2b0c8b['error'][_0xeb38('0x14')]);return _0x196580(_0x2b0c8b[_0xeb38('0x12')][_0xeb38('0x14')]);}else{logger[_0xeb38('0xd')](_0xeb38('0xe'),_0x4cfa4d,_0xeb38('0xf'));_0x196580(_0x2b0c8b[_0xeb38('0x15')]['message']);}})[_0xeb38('0x16')](function(_0x980c8){logger[_0xeb38('0x12')]('Action,\x20%s,\x20%s',_0x4cfa4d,_0x980c8);_0x3b2df7(_0x980c8);});});}
\ No newline at end of file
index fa5ac01..39a1a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22a4=['../../components/auth/service','../../components/interaction/service','./action.controller','put','/:id','isAuthenticated','update','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x4be0d7,_0x3b4e67){var _0x59872b=function(_0x52a302){while(--_0x52a302){_0x4be0d7['push'](_0x4be0d7['shift']());}};_0x59872b(++_0x3b4e67);}(_0x22a4,0x1cb));var _0x422a=function(_0x55944d,_0x3195f0){_0x55944d=_0x55944d-0x0;var _0x494a5b=_0x22a4[_0x55944d];return _0x494a5b;};'use strict';var multer=require(_0x422a('0x0'));var util=require(_0x422a('0x1'));var path=require(_0x422a('0x2'));var timeout=require(_0x422a('0x3'));var express=require(_0x422a('0x4'));var router=express[_0x422a('0x5')]();var auth=require(_0x422a('0x6'));var interaction=require(_0x422a('0x7'));var config=require('../../config/environment');var controller=require(_0x422a('0x8'));router[_0x422a('0x9')](_0x422a('0xa'),auth[_0x422a('0xb')](),controller[_0x422a('0xc')]);router['delete'](_0x422a('0xa'),auth[_0x422a('0xb')](),controller[_0x422a('0xd')]);module[_0x422a('0xe')]=router;
\ No newline at end of file
+var _0xcecc=['/:id','update','delete','destroy','exports','multer','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4d35f3,_0x19ba66){var _0x382fea=function(_0x2c2390){while(--_0x2c2390){_0x4d35f3['push'](_0x4d35f3['shift']());}};_0x382fea(++_0x19ba66);}(_0xcecc,0x186));var _0xccec=function(_0x2eb2bb,_0x57332a){_0x2eb2bb=_0x2eb2bb-0x0;var _0x4c8909=_0xcecc[_0x2eb2bb];return _0x4c8909;};'use strict';var multer=require(_0xccec('0x0'));var util=require('util');var path=require(_0xccec('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xccec('0x2')]();var auth=require(_0xccec('0x3'));var interaction=require(_0xccec('0x4'));var config=require(_0xccec('0x5'));var controller=require('./action.controller');router['put'](_0xccec('0x6'),auth['isAuthenticated'](),controller[_0xccec('0x7')]);router[_0xccec('0x8')](_0xccec('0x6'),auth['isAuthenticated'](),controller[_0xccec('0x9')]);module[_0xccec('0xa')]=router;
\ No newline at end of file
index 9263bf8..6bdacff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb98=['TEXT','sequelize','exports','STRING'];(function(_0x40cd00,_0x3ee842){var _0x356089=function(_0x36ff65){while(--_0x36ff65){_0x40cd00['push'](_0x40cd00['shift']());}};_0x356089(++_0x3ee842);}(_0xbb98,0xa9));var _0x8bb9=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0xbb98[_0x28aea5];return _0x6a55f9;};'use strict';var Sequelize=require(_0x8bb9('0x0'));module[_0x8bb9('0x1')]={'name':{'type':Sequelize[_0x8bb9('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x8bb9('0x2')]},'parent':{'type':Sequelize[_0x8bb9('0x2')]},'table':{'type':Sequelize[_0x8bb9('0x2')]},'conditions':{'type':Sequelize[_0x8bb9('0x3')]},'joins':{'type':Sequelize[_0x8bb9('0x3')]}};
\ No newline at end of file
+var _0xce40=['sequelize','STRING','TEXT'];(function(_0x25b00d,_0x482daf){var _0x5bb873=function(_0x53f359){while(--_0x53f359){_0x25b00d['push'](_0x25b00d['shift']());}};_0x5bb873(++_0x482daf);}(_0xce40,0x15f));var _0x0ce4=function(_0x4f8d61,_0x29eff0){_0x4f8d61=_0x4f8d61-0x0;var _0x3bc078=_0xce40[_0x4f8d61];return _0x3bc078;};'use strict';var Sequelize=require(_0x0ce4('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0x0ce4('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x0ce4('0x2')]}};
\ No newline at end of file
index e9ef871..5f49a49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['get','CustomReports','UserProfileResource','destroy','error','name','send','index','AnalyticCustomReport','rawAttributes','model','dateStart','dateEnd','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','add','day','merge','map','type','key','VIRTUAL','filter','options','catch','show','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','preview','join','left_join','right_join','outer_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\x20DESC)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','select','table','MetricId','replace','function','format','groupBy','orderBy','alias','joins','includes','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','cross_join','SEC_TO_TIME(%s)','DATE(%s)','IS\x20NULL','AnalyticMetric','from','metric','DESC','parse','web','fullPath','%s-%s.%s','randomstring','generate','output','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','fork','../../components/export/','../../files/reports','savename','countTable','run','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','html-pdf','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','update','then'];(function(_0x198b5f,_0x96db46){var _0x44fc0a=function(_0x13190a){while(--_0x13190a){_0x198b5f['push'](_0x198b5f['shift']());}};_0x44fc0a(++_0x96db46);}(_0xb10b,0x12a));var _0xbb10=function(_0x18fb4c,_0x578f22){_0x18fb4c=_0x18fb4c-0x0;var _0x4a75b3=_0xb10b[_0x18fb4c];return _0x4a75b3;};'use strict';var pdf=require(_0xbb10('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xbb10('0x1'));var zipdir=require(_0xbb10('0x2'));var jsonpatch=require(_0xbb10('0x3'));var rp=require('request-promise');var moment=require(_0xbb10('0x4'));var BPromise=require(_0xbb10('0x5'));var Mustache=require(_0xbb10('0x6'));var util=require(_0xbb10('0x7'));var path=require(_0xbb10('0x8'));var sox=require(_0xbb10('0x9'));var csv=require('to-csv');var ejs=require(_0xbb10('0xa'));var fs=require('fs');var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0xf'));var querystring=require(_0xbb10('0x10'));var Papa=require(_0xbb10('0x11'));var Redis=require(_0xbb10('0x12'));var qs=require(_0xbb10('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xbb10('0x14'));var config=require(_0xbb10('0x15'));var db=require(_0xbb10('0x16'))['db'];function respondWithStatusCode(_0x5e136d,_0x408248){_0x408248=_0x408248||0xcc;return function(_0x5be7e0){if(_0x5be7e0){return _0x5e136d[_0xbb10('0x17')](_0x408248);}return _0x5e136d[_0xbb10('0x18')](_0x408248)[_0xbb10('0x19')]();};}function respondWithResult(_0x193a27,_0x442548){_0x442548=_0x442548||0xc8;return function(_0x147230){if(_0x147230){return _0x193a27['status'](_0x442548)[_0xbb10('0x1a')](_0x147230);}};}function respondWithFilteredResult(_0x42d7e4,_0x45b9d6){return function(_0x17fd46){if(_0x17fd46){var _0x3df17b=_0x17fd46[_0xbb10('0x1b')],_0x2f2ebf=_0x45b9d6[_0xbb10('0x1c')],_0x24a57b=_0x45b9d6['offset']+_0x45b9d6[_0xbb10('0x1d')],_0x36b5e8;if(_0x24a57b>=_0x3df17b){_0x24a57b=_0x3df17b;_0x36b5e8=0xc8;}else{_0x36b5e8=0xce;}_0x42d7e4[_0xbb10('0x18')](_0x36b5e8);return _0x42d7e4[_0xbb10('0x1e')](_0xbb10('0x1f'),_0x2f2ebf+'-'+_0x24a57b+'/'+_0x3df17b)[_0xbb10('0x1a')](_0x17fd46);}return null;};}function patchUpdates(_0x1682a4){return function(_0x575cca){try{jsonpatch[_0xbb10('0x20')](_0x575cca,_0x1682a4,!![]);}catch(_0xbf2906){return BPromise[_0xbb10('0x21')](_0xbf2906);}return _0x575cca['save']();};}function saveUpdates(_0x5ff0cf,_0x19f48d){return function(_0x388fab){if(_0x388fab){return _0x388fab[_0xbb10('0x22')](_0x5ff0cf)[_0xbb10('0x23')](function(_0x44e563){return _0x44e563;});}return null;};}function removeEntity(_0x4deb49,_0x12f888){return function(_0x12ef77){if(_0x12ef77){return _0x12ef77['destroy']()['then'](function(){var _0x8e2b97=_0x12ef77[_0xbb10('0x24')]({'plain':!![]});var _0x2e911d=_0xbb10('0x25');return db[_0xbb10('0x26')][_0xbb10('0x27')]({'where':{'type':_0x2e911d,'resourceId':_0x8e2b97['id']}})[_0xbb10('0x23')](function(){return _0x12ef77;});})[_0xbb10('0x23')](function(){_0x4deb49[_0xbb10('0x18')](0xcc)[_0xbb10('0x19')]();});}};}function handleEntityNotFound(_0x3ba6cd,_0x26ad93){return function(_0x537898){if(!_0x537898){_0x3ba6cd['sendStatus'](0x194);}return _0x537898;};}function handleError(_0x4fb5e0,_0xc93a04){_0xc93a04=_0xc93a04||0x1f4;return function(_0x3c5ae7){logger[_0xbb10('0x28')](_0x3c5ae7['stack']);if(_0x3c5ae7[_0xbb10('0x29')]){delete _0x3c5ae7[_0xbb10('0x29')];}_0x4fb5e0[_0xbb10('0x18')](_0xc93a04)[_0xbb10('0x2a')](_0x3c5ae7);};}exports[_0xbb10('0x2b')]=function(_0x20d946,_0x2a0e8b){var _0x4aabb9={},_0x3796c7={},_0x21ac54={'count':0x0,'rows':[]};var _0xfc3595=db[_0xbb10('0x2c')][_0xbb10('0x2d')];_0x3796c7[_0xbb10('0x2e')]=_['keys'](_0xfc3595);var _0x221624={'dateStart':_0x20d946['query'][_0xbb10('0x2f')],'dateEnd':_0x20d946['query'][_0xbb10('0x30')]};delete _0x20d946[_0xbb10('0x31')][_0xbb10('0x2f')];delete _0x20d946['query']['dateEnd'];_0x3796c7[_0xbb10('0x31')]=_[_0xbb10('0x32')](_0x20d946['query']);_0x3796c7[_0xbb10('0x33')]=_[_0xbb10('0x34')](_0x3796c7[_0xbb10('0x2e')],_0x3796c7[_0xbb10('0x31')]);_0x4aabb9[_0xbb10('0x35')]=_[_0xbb10('0x34')](_0x3796c7[_0xbb10('0x2e')],qs['fields'](_0x20d946[_0xbb10('0x31')][_0xbb10('0x36')]));_0x4aabb9[_0xbb10('0x35')]=_0x4aabb9[_0xbb10('0x35')][_0xbb10('0x37')]?_0x4aabb9[_0xbb10('0x35')]:_0x3796c7[_0xbb10('0x2e')];if(!_0x20d946[_0xbb10('0x31')][_0xbb10('0x38')]('nolimit')){_0x4aabb9[_0xbb10('0x1d')]=qs[_0xbb10('0x1d')](_0x20d946[_0xbb10('0x31')][_0xbb10('0x1d')]);_0x4aabb9['offset']=qs[_0xbb10('0x1c')](_0x20d946['query']['offset']);}_0x4aabb9[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_0x20d946[_0xbb10('0x31')][_0xbb10('0x3a')]);_0x4aabb9[_0xbb10('0x3b')]=qs[_0xbb10('0x33')](_['pick'](_0x20d946[_0xbb10('0x31')],_0x3796c7[_0xbb10('0x33')]));if(_0x221624['dateStart']){if(_0x221624['dateEnd']){_0x221624['dateEnd']=moment(_0x221624[_0xbb10('0x30')])[_0xbb10('0x3c')](0x1,_0xbb10('0x3d'));}else{_0x221624['dateEnd']=moment(_0x221624[_0xbb10('0x2f')])[_0xbb10('0x3c')](0x1,_0xbb10('0x3d'));}_['merge'](_0x4aabb9[_0xbb10('0x3b')],{'createdAt':{'$gte':_0x221624[_0xbb10('0x2f')],'$lte':_0x221624[_0xbb10('0x30')]}});}if(_0x20d946[_0xbb10('0x31')]['filter']){_0x4aabb9[_0xbb10('0x3b')]=_[_0xbb10('0x3e')](_0x4aabb9['where'],{'$or':_[_0xbb10('0x3f')](_0xfc3595,function(_0x2e3214){if(_0x2e3214[_0xbb10('0x40')][_0xbb10('0x41')]!==_0xbb10('0x42')){var _0x185a52={};_0x185a52[_0x2e3214['field']]={'$like':'%'+_0x20d946[_0xbb10('0x31')][_0xbb10('0x43')]+'%'};return _0x185a52;}})});}_0x4aabb9=_[_0xbb10('0x3e')]({},_0x4aabb9,_0x20d946[_0xbb10('0x44')]);var _0x4943d9={'where':_0x4aabb9[_0xbb10('0x3b')]};return db[_0xbb10('0x2c')][_0xbb10('0x1b')](_0x4943d9)[_0xbb10('0x23')](function(_0x5e2cfa){_0x21ac54[_0xbb10('0x1b')]=_0x5e2cfa;if(_0x20d946[_0xbb10('0x31')]['includeAll']){_0x4aabb9['include']=[{'all':!![]}];}return db[_0xbb10('0x2c')]['findAll'](_0x4aabb9);})[_0xbb10('0x23')](function(_0x180933){_0x21ac54['rows']=_0x180933;return _0x21ac54;})[_0xbb10('0x23')](respondWithFilteredResult(_0x2a0e8b,_0x4aabb9))[_0xbb10('0x45')](handleError(_0x2a0e8b,null));};exports[_0xbb10('0x46')]=function(_0x5cf4f8,_0x2dd02b){var _0xebd70c={'raw':![],'where':{'id':_0x5cf4f8[_0xbb10('0x47')]['id']}},_0x3b9fdf={};_0x3b9fdf[_0xbb10('0x2e')]=_[_0xbb10('0x32')](db[_0xbb10('0x2c')][_0xbb10('0x2d')]);_0x3b9fdf[_0xbb10('0x31')]=_[_0xbb10('0x32')](_0x5cf4f8[_0xbb10('0x31')]);_0x3b9fdf[_0xbb10('0x33')]=_['intersection'](_0x3b9fdf[_0xbb10('0x2e')],_0x3b9fdf[_0xbb10('0x31')]);_0xebd70c['attributes']=_[_0xbb10('0x34')](_0x3b9fdf[_0xbb10('0x2e')],qs[_0xbb10('0x36')](_0x5cf4f8[_0xbb10('0x31')][_0xbb10('0x36')]));_0xebd70c[_0xbb10('0x35')]=_0xebd70c[_0xbb10('0x35')]['length']?_0xebd70c['attributes']:_0x3b9fdf[_0xbb10('0x2e')];if(_0x5cf4f8[_0xbb10('0x31')][_0xbb10('0x48')]){_0xebd70c['include']=[{'all':!![]}];}_0xebd70c=_['merge']({},_0xebd70c,_0x5cf4f8[_0xbb10('0x44')]);return db[_0xbb10('0x2c')][_0xbb10('0x49')](_0xebd70c)[_0xbb10('0x23')](handleEntityNotFound(_0x2dd02b,null))[_0xbb10('0x23')](respondWithResult(_0x2dd02b,null))[_0xbb10('0x45')](handleError(_0x2dd02b,null));};exports[_0xbb10('0x4a')]=function(_0x460788,_0x2626d8){return db[_0xbb10('0x2c')]['create'](_0x460788['body'],{})[_0xbb10('0x23')](function(_0x467dba){var _0x36ab7d=_0x460788[_0xbb10('0x4b')][_0xbb10('0x24')]({'plain':!![]});if(!_0x36ab7d)throw new Error(_0xbb10('0x4c'));if(_0x36ab7d[_0xbb10('0x4d')]===_0xbb10('0x4b')){var _0x1c0d8f=_0x467dba[_0xbb10('0x24')]({'plain':!![]});var _0x19ca3e=_0xbb10('0x4e');return db[_0xbb10('0x4f')][_0xbb10('0x49')]({'where':{'name':_0x19ca3e,'userProfileId':_0x36ab7d[_0xbb10('0x50')]},'raw':!![]})['then'](function(_0x124052){if(_0x124052&&_0x124052['autoAssociation']===0x0){return db[_0xbb10('0x26')][_0xbb10('0x4a')]({'name':_0x1c0d8f[_0xbb10('0x29')],'resourceId':_0x1c0d8f['id'],'type':_0xbb10('0x25'),'sectionId':_0x124052['id']},{})[_0xbb10('0x23')](function(){return _0x467dba;});}else{return _0x467dba;}})[_0xbb10('0x45')](function(_0x2e3326){logger[_0xbb10('0x28')](_0xbb10('0x51'),_0x2e3326);throw _0x2e3326;});}return _0x467dba;})[_0xbb10('0x23')](respondWithResult(_0x2626d8,0xc9))[_0xbb10('0x45')](handleError(_0x2626d8,null));};exports[_0xbb10('0x22')]=function(_0x1d49e1,_0x3d7e17){if(_0x1d49e1[_0xbb10('0x52')]['id']){delete _0x1d49e1['body']['id'];}return db[_0xbb10('0x2c')][_0xbb10('0x49')]({'where':{'id':_0x1d49e1[_0xbb10('0x47')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x3d7e17,null))[_0xbb10('0x23')](saveUpdates(_0x1d49e1[_0xbb10('0x52')],null))['then'](respondWithResult(_0x3d7e17,null))[_0xbb10('0x45')](handleError(_0x3d7e17,null));};exports[_0xbb10('0x27')]=function(_0x2909a1,_0x14fed3){return db[_0xbb10('0x2c')][_0xbb10('0x49')]({'where':{'id':_0x2909a1[_0xbb10('0x47')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x14fed3,null))[_0xbb10('0x23')](removeEntity(_0x14fed3,null))[_0xbb10('0x45')](handleError(_0x14fed3,null));};exports[_0xbb10('0x53')]=function(_0x2a1ce1,_0x16932f){var _0x4e7fac=0xa;var _0x4ea1a6=[_0xbb10('0x54'),_0xbb10('0x55'),_0xbb10('0x56'),_0xbb10('0x57'),'cross_join'];var _0x506498={'SUM':_0xbb10('0x58'),'COUNT':_0xbb10('0x59'),'COUNT DISTINCT':_0xbb10('0x5a'),'MAX':_0xbb10('0x5b'),'MIN':_0xbb10('0x5c'),'AVG':_0xbb10('0x5d'),'GROUP_CONCAT':_0xbb10('0x5e'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xbb10('0x5f')};var _0x216cff={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xbb10('0x60'),'UNIX_TIMESTAMP':_0xbb10('0x61')};var _0x155dc5=function(_0x5bd1c0){return!_['includes'](['IS\x20NULL',_0xbb10('0x62'),_0xbb10('0x63'),_0xbb10('0x64')],_0x5bd1c0);};var _0x4e9fbd=function(_0xa1bbd9){if(!_0xa1bbd9||!_0xa1bbd9[_0xbb10('0x65')]['length']){return'';}for(var _0x4a560c='(',_0x27d7b9=0x0;_0x27d7b9<_0xa1bbd9[_0xbb10('0x65')][_0xbb10('0x37')];_0x27d7b9+=0x1){_0x27d7b9>0x0&&(_0x4a560c+='\x20'+_0xa1bbd9[_0xbb10('0x66')]+'\x20');_0x4a560c+=_0xa1bbd9['rules'][_0x27d7b9][_0xbb10('0x67')]?_0x4e9fbd(_0xa1bbd9[_0xbb10('0x65')][_0x27d7b9][_0xbb10('0x67')]):_0xa1bbd9['rules'][_0x27d7b9][_0xbb10('0x68')]+'\x20'+_0xa1bbd9[_0xbb10('0x65')][_0x27d7b9][_0xbb10('0x69')]+(_0x155dc5(_0xa1bbd9['rules'][_0x27d7b9][_0xbb10('0x69')])?'\x20'+_0xa1bbd9[_0xbb10('0x65')][_0x27d7b9][_0xbb10('0x6a')]:'');}return _0x4a560c+')';};var _0x37b65f={'where':{'id':_0x2a1ce1['params']['id']}},_0x5e4a6e,_0x251417,_0x258e55,_0x108e5b,_0x2d0f4b;_0x37b65f=_[_0xbb10('0x3e')]({},_0x37b65f,_0x2a1ce1[_0xbb10('0x44')]);return db[_0xbb10('0x2c')][_0xbb10('0x49')](_0x37b65f)[_0xbb10('0x23')](function(_0x17807e){if(_0x17807e){_0x5e4a6e=_0x17807e;return _0x17807e[_0xbb10('0x6b')]();}return null;})['then'](function(_0x4a13d7){if(_0x4a13d7){if(!_0x4a13d7['length']){throw new db[(_0xbb10('0x6c'))][(_0xbb10('0x6d'))](_0xbb10('0x6e'),0x193);}_0x251417=_0x4a13d7;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xbb10('0x23')](function(_0x1b11c0){if(_0x1b11c0){_0x258e55=_[_0xbb10('0x6f')](_0x1b11c0,'id');var _0x3a9677;var _0x260e06=squel[_0xbb10('0x70')]();_0x260e06['from'](_0x5e4a6e[_0xbb10('0x71')]);for(var _0x15fae2=0x0;_0x15fae2<_0x251417[_0xbb10('0x37')];_0x15fae2+=0x1){_0x3a9677=_0x251417[_0x15fae2][_0xbb10('0x72')]?_0x258e55[_0x251417[_0x15fae2][_0xbb10('0x72')]]['metric']:_0x251417[_0x15fae2]['field'];_0x3a9677=_0x251417[_0x15fae2]['function']?_[_0xbb10('0x73')](_0x506498[_0x251417[_0x15fae2][_0xbb10('0x74')]],'%s',_0x3a9677):_0x3a9677;_0x3a9677=_0x251417[_0x15fae2][_0xbb10('0x75')]?_[_0xbb10('0x73')](_0x216cff[_0x251417[_0x15fae2][_0xbb10('0x75')]],'%s',_0x3a9677):_0x3a9677;if(_0x251417[_0x15fae2][_0xbb10('0x76')]){_0x260e06['group'](_0x3a9677);}_0x251417[_0x15fae2][_0xbb10('0x77')]&&_0x260e06['order'](_0x3a9677,_0x251417[_0x15fae2]['orderBy']==='DESC'?![]:!![]);_0x260e06[_0xbb10('0x68')](_0x3a9677,_0x251417[_0x15fae2][_0xbb10('0x78')]||_0x3a9677);}if(_0x5e4a6e[_0xbb10('0x79')]){_0x5e4a6e[_0xbb10('0x79')]=JSON['parse'](_0x5e4a6e[_0xbb10('0x79')]);for(var _0x5c583b=0x0;_0x5c583b<_0x5e4a6e['joins'][_0xbb10('0x37')];_0x5c583b+=0x1){if(_0x5e4a6e[_0xbb10('0x79')][_0x5c583b][_0xbb10('0x40')]&&_[_0xbb10('0x7a')](_0x4ea1a6,_0x5e4a6e[_0xbb10('0x79')][_0x5c583b]['type'])&&_0x5e4a6e[_0xbb10('0x79')][_0x5c583b][_0xbb10('0x7b')]&&_0x5e4a6e[_0xbb10('0x79')][_0x5c583b][_0xbb10('0x7c')]&&_0x5e4a6e[_0xbb10('0x79')][_0x5c583b][_0xbb10('0x7d')]){_0x260e06[_0x5e4a6e[_0xbb10('0x79')][_0x5c583b]['type']](_0x5e4a6e[_0xbb10('0x79')][_0x5c583b][_0xbb10('0x7c')],null,util[_0xbb10('0x75')](_0xbb10('0x7e'),_0x5e4a6e[_0xbb10('0x71')],_0x5e4a6e[_0xbb10('0x79')][_0x5c583b][_0xbb10('0x7b')],_0x5e4a6e[_0xbb10('0x79')][_0x5c583b]['foreignTable'],_0x5e4a6e[_0xbb10('0x79')][_0x5c583b][_0xbb10('0x7d')]));}}}if(_0x5e4a6e[_0xbb10('0x7f')]){_0x5e4a6e['conditions']=JSON['parse'](_0x5e4a6e['conditions']);_0x260e06[_0xbb10('0x3b')](_0x4e9fbd(_0x5e4a6e['conditions']['group']));}_0x2d0f4b=_0x260e06[_0xbb10('0x80')]();_0x260e06[_0xbb10('0x1d')](_0x4e7fac);_0x260e06[_0xbb10('0x1c')](0x0);logger[_0xbb10('0x81')](_0xbb10('0x82'),_0x260e06[_0xbb10('0x83')]());return db[_0xbb10('0x84')][_0xbb10('0x31')](_0x260e06[_0xbb10('0x83')](),{'type':db['sequelize'][_0xbb10('0x85')][_0xbb10('0x86')]});}})[_0xbb10('0x23')](respondWithResult(_0x16932f,null))[_0xbb10('0x45')](handleError(_0x16932f,null));};function runReport(_0x5c8eb8,_0x4c0795,_0x3547a3){var _0x2280bd=_0x4c0795[_0xbb10('0x29')];var _0x32bb25=0xa;var _0x5ee705=[_0xbb10('0x54'),_0xbb10('0x55'),_0xbb10('0x56'),_0xbb10('0x57'),_0xbb10('0x87')];var _0x517185={'SUM':'SUM(%s)','COUNT':_0xbb10('0x59'),'COUNT DISTINCT':_0xbb10('0x5a'),'MAX':_0xbb10('0x5b'),'MIN':'MIN(%s)','AVG':_0xbb10('0x5d'),'GROUP_CONCAT':_0xbb10('0x5e'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2f667f={'SEC_TO_TIME':_0xbb10('0x88'),'DATE':_0xbb10('0x89'),'HOUR':'HOUR(%s)','ROUND':_0xbb10('0x60'),'UNIX_TIMESTAMP':_0xbb10('0x61')};var _0xfbb365=function(_0x2d1805){return!_[_0xbb10('0x7a')]([_0xbb10('0x8a'),_0xbb10('0x62'),_0xbb10('0x63'),_0xbb10('0x64')],_0x2d1805);};var _0x479d51=function(_0x3367d4){if(!_0x3367d4||!_0x3367d4[_0xbb10('0x65')][_0xbb10('0x37')]){return'';}for(var _0xdb7d3e='(',_0x3e3083=0x0;_0x3e3083<_0x3367d4[_0xbb10('0x65')][_0xbb10('0x37')];_0x3e3083+=0x1){_0x3e3083>0x0&&(_0xdb7d3e+='\x20'+_0x3367d4[_0xbb10('0x66')]+'\x20');_0xdb7d3e+=_0x3367d4[_0xbb10('0x65')][_0x3e3083][_0xbb10('0x67')]?_0x479d51(_0x3367d4[_0xbb10('0x65')][_0x3e3083][_0xbb10('0x67')]):_0x3367d4['rules'][_0x3e3083]['field']+'\x20'+_0x3367d4[_0xbb10('0x65')][_0x3e3083][_0xbb10('0x69')]+(_0xfbb365(_0x3367d4[_0xbb10('0x65')][_0x3e3083][_0xbb10('0x69')])?'\x20'+_0x3367d4[_0xbb10('0x65')][_0x3e3083]['value']:'');}return _0xdb7d3e+')';};var _0x2749a7={'where':{'id':_0x5c8eb8['id']}},_0x332fbe,_0x3b4d0b,_0x1a51d3,_0x19694d,_0x379d49;_0x2749a7=_['merge']({},_0x2749a7,_0x3547a3);return db[_0xbb10('0x2c')][_0xbb10('0x49')](_0x2749a7)['then'](function(_0x27b0fb){if(_0x27b0fb){_0x332fbe=_0x27b0fb;return _0x27b0fb['getFields']();}return null;})[_0xbb10('0x23')](function(_0x28bd76){if(_0x28bd76){if(!_0x28bd76[_0xbb10('0x37')]){throw new db[(_0xbb10('0x6c'))][(_0xbb10('0x6d'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x3b4d0b=_0x28bd76;return db[_0xbb10('0x8b')]['findAll']({'raw':!![]});}return null;})[_0xbb10('0x23')](function(_0x37ec93){if(_0x37ec93){_0x1a51d3=_['keyBy'](_0x37ec93,'id');var _0x5aaa20;var _0x415407=squel[_0xbb10('0x70')]();_0x415407[_0xbb10('0x8c')](_0x332fbe[_0xbb10('0x71')]);for(var _0x18d18d=0x0;_0x18d18d<_0x3b4d0b[_0xbb10('0x37')];_0x18d18d+=0x1){_0x5aaa20=_0x3b4d0b[_0x18d18d][_0xbb10('0x72')]?_0x1a51d3[_0x3b4d0b[_0x18d18d][_0xbb10('0x72')]][_0xbb10('0x8d')]:_0x3b4d0b[_0x18d18d][_0xbb10('0x68')];_0x5aaa20=_0x3b4d0b[_0x18d18d][_0xbb10('0x74')]?_['replace'](_0x517185[_0x3b4d0b[_0x18d18d][_0xbb10('0x74')]],'%s',_0x5aaa20):_0x5aaa20;_0x5aaa20=_0x3b4d0b[_0x18d18d][_0xbb10('0x75')]?_[_0xbb10('0x73')](_0x2f667f[_0x3b4d0b[_0x18d18d][_0xbb10('0x75')]],'%s',_0x5aaa20):_0x5aaa20;if(_0x3b4d0b[_0x18d18d][_0xbb10('0x76')]){_0x415407[_0xbb10('0x67')](_0x5aaa20);}_0x3b4d0b[_0x18d18d][_0xbb10('0x77')]&&_0x415407[_0xbb10('0x39')](_0x5aaa20,_0x3b4d0b[_0x18d18d][_0xbb10('0x77')]===_0xbb10('0x8e')?![]:!![]);_0x415407[_0xbb10('0x68')](_0x5aaa20,_0x3b4d0b[_0x18d18d][_0xbb10('0x78')]||_0x5aaa20);}if(_0x332fbe['joins']){_0x332fbe[_0xbb10('0x79')]=JSON['parse'](_0x332fbe[_0xbb10('0x79')]);for(var _0x3675cd=0x0;_0x3675cd<_0x332fbe[_0xbb10('0x79')][_0xbb10('0x37')];_0x3675cd+=0x1){if(_0x332fbe[_0xbb10('0x79')][_0x3675cd]['type']&&_[_0xbb10('0x7a')](_0x5ee705,_0x332fbe[_0xbb10('0x79')][_0x3675cd][_0xbb10('0x40')])&&_0x332fbe[_0xbb10('0x79')][_0x3675cd][_0xbb10('0x7b')]&&_0x332fbe[_0xbb10('0x79')][_0x3675cd]['foreignTable']&&_0x332fbe['joins'][_0x3675cd][_0xbb10('0x7d')]){_0x415407[_0x332fbe[_0xbb10('0x79')][_0x3675cd][_0xbb10('0x40')]](_0x332fbe['joins'][_0x3675cd][_0xbb10('0x7c')],null,util[_0xbb10('0x75')]('%s.%s\x20=\x20%s.%s',_0x332fbe[_0xbb10('0x71')],_0x332fbe[_0xbb10('0x79')][_0x3675cd]['parentKey'],_0x332fbe[_0xbb10('0x79')][_0x3675cd]['foreignTable'],_0x332fbe[_0xbb10('0x79')][_0x3675cd][_0xbb10('0x7d')]));}}}if(_0x332fbe['conditions']){_0x332fbe[_0xbb10('0x7f')]=JSON[_0xbb10('0x8f')](_0x332fbe['conditions']);_0x415407['where'](_0x479d51(_0x332fbe[_0xbb10('0x7f')][_0xbb10('0x67')]));}_0x379d49=_0x415407[_0xbb10('0x80')]();_0x415407[_0xbb10('0x1d')](_0x32bb25);_0x415407[_0xbb10('0x1c')](0x0);logger['debug'](_0xbb10('0x82'),_0x415407[_0xbb10('0x83')]());return db[_0xbb10('0x84')]['query'](_0x415407[_0xbb10('0x83')](),{'type':db[_0xbb10('0x84')][_0xbb10('0x85')][_0xbb10('0x86')]});}})[_0xbb10('0x23')](function(_0xf5b08a){if(!_0xf5b08a[_0xbb10('0x37')]){throw new db[(_0xbb10('0x6c'))][(_0xbb10('0x6d'))]('No\x20available\x20data',0xcc);}if(_0x4c0795['output']===_0xbb10('0x90')){return null;}var _0xe7238b=_[_0xbb10('0x3e')](_0x4c0795,{'name':_0x4c0795[_0xbb10('0x91')]||_0x4c0795[_0xbb10('0x29')]||_0x332fbe[_0xbb10('0x29')],'basename':_0x2280bd,'savename':util[_0xbb10('0x75')](_0xbb10('0x92'),_0x4c0795[_0xbb10('0x29')]||_0x332fbe[_0xbb10('0x29')],require(_0xbb10('0x93'))[_0xbb10('0x94')](0x4),_0x4c0795[_0xbb10('0x95')]||'csv'),'reportId':_0x332fbe['id'],'reportType':_0xbb10('0x96')});return db[_0xbb10('0x97')][_0xbb10('0x4a')](_0xe7238b,{'raw':!![]});})[_0xbb10('0x23')](function(_0x29eff4){if(_0x332fbe[_0xbb10('0x71')]===_0xbb10('0x98')){_0x379d49[_0xbb10('0x3b')](_0x332fbe[_0xbb10('0x71')]+_0xbb10('0x99'),_0x4c0795[_0xbb10('0x9a')],_0x4c0795['endDate']);}else{_0x379d49[_0xbb10('0x3b')](_0x332fbe['table']+_0xbb10('0x9b'),_0x4c0795[_0xbb10('0x9a')],_0x4c0795[_0xbb10('0x9c')]);}if(_0x29eff4){logger[_0xbb10('0x9d')](_0xbb10('0x9e'),_0x379d49[_0xbb10('0x83')]());require('child_process')[_0xbb10('0x9f')](path['join'](__dirname,_0xbb10('0xa0'),_0x29eff4[_0xbb10('0x95')]),[_0x29eff4['id'],_0x379d49[_0xbb10('0x83')](),path[_0xbb10('0x54')](__dirname,_0xbb10('0xa1'),_0x29eff4[_0xbb10('0xa2')]),_0x2280bd]);return _0x29eff4;}else{var _0x4f06c=squel[_0xbb10('0x70')]();_0x4f06c[_0xbb10('0x8c')]('('+_0x379d49[_0xbb10('0x83')]()+')',_0xbb10('0xa3'));_0x4f06c[_0xbb10('0x68')]('COUNT(*)',_0xbb10('0x1b'));_0x379d49['limit'](_0x4c0795[_0xbb10('0x1d')]||_0x32bb25);_0x379d49[_0xbb10('0x1c')](_0x4c0795[_0xbb10('0x1c')]||0x0);return db[_0xbb10('0x84')][_0xbb10('0x31')](_0x4f06c[_0xbb10('0x83')](),{'type':db[_0xbb10('0x84')]['QueryTypes'][_0xbb10('0x86')]})['then'](function(_0x51063a){if(!_0x51063a[_0xbb10('0x37')]){_0x19694d=0x0;}else{_0x19694d=_0x51063a[0x0][_0xbb10('0x1b')]||0x0;}return db[_0xbb10('0x84')][_0xbb10('0x31')](_0x379d49[_0xbb10('0x83')](),{'type':db[_0xbb10('0x84')]['QueryTypes'][_0xbb10('0x86')]});})[_0xbb10('0x23')](function(_0x39aa9e){return{'rows':_0x39aa9e||[],'count':_0x19694d};});}});}exports[_0xbb10('0xa4')]=function(_0x136520,_0x28127c){return runReport(_0x136520['params'],_0x136520[_0xbb10('0x31')],_0x136520[_0xbb10('0x44')])[_0xbb10('0x23')](respondWithResult(_0x28127c,null))[_0xbb10('0x45')](handleError(_0x28127c,null));};exports[_0xbb10('0xa5')]=runReport;exports[_0xbb10('0x31')]=function(_0x2764e1,_0x5e405b){var _0x33a43e=0xa;var _0x5e4ae9=[_0xbb10('0x54'),'left_join','right_join',_0xbb10('0x57'),_0xbb10('0x87')];var _0x24edcb={'SUM':_0xbb10('0x58'),'COUNT':_0xbb10('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xbb10('0x5b'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xbb10('0xa6'),'GROUP_CONCAT DESC':_0xbb10('0x5f')};var _0x1b9012={'SEC_TO_TIME':_0xbb10('0x88'),'DATE':_0xbb10('0x89'),'HOUR':'HOUR(%s)','ROUND':_0xbb10('0x60'),'UNIX_TIMESTAMP':_0xbb10('0x61')};var _0x352de4=function(_0x1bd1c1){return!_[_0xbb10('0x7a')]([_0xbb10('0x8a'),_0xbb10('0x62'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x1bd1c1);};var _0x584a62=function(_0x386eac){if(!_0x386eac||!_0x386eac[_0xbb10('0x65')][_0xbb10('0x37')]){return'';}for(var _0x3125c3='(',_0x25cba1=0x0;_0x25cba1<_0x386eac[_0xbb10('0x65')][_0xbb10('0x37')];_0x25cba1+=0x1){_0x25cba1>0x0&&(_0x3125c3+='\x20'+_0x386eac[_0xbb10('0x66')]+'\x20');_0x3125c3+=_0x386eac[_0xbb10('0x65')][_0x25cba1][_0xbb10('0x67')]?_0x584a62(_0x386eac['rules'][_0x25cba1]['group']):_0x386eac['rules'][_0x25cba1][_0xbb10('0x68')]+'\x20'+_0x386eac[_0xbb10('0x65')][_0x25cba1][_0xbb10('0x69')]+(_0x352de4(_0x386eac['rules'][_0x25cba1][_0xbb10('0x69')])?'\x20'+_0x386eac[_0xbb10('0x65')][_0x25cba1][_0xbb10('0x6a')]:'');}return _0x3125c3+')';};var _0x290280={'where':{'id':_0x2764e1['params']['id']}},_0x2a6589,_0x11279d,_0x485f46,_0x57fe03,_0x356660;_0x290280=_[_0xbb10('0x3e')]({},_0x290280,_0x2764e1[_0xbb10('0x44')]);return db[_0xbb10('0x2c')][_0xbb10('0x49')](_0x290280)[_0xbb10('0x23')](function(_0x2dfa04){if(_0x2dfa04){_0x2a6589=_0x2dfa04;return _0x2dfa04[_0xbb10('0x6b')]();}return null;})[_0xbb10('0x23')](function(_0xd3c2c8){if(_0xd3c2c8){if(!_0xd3c2c8[_0xbb10('0x37')]){throw new db['Sequelize'][(_0xbb10('0x6d'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x11279d=_0xd3c2c8;return db[_0xbb10('0x8b')]['findAll']({'raw':!![]});}return null;})[_0xbb10('0x23')](function(_0x2cd825){if(_0x2cd825){_0x485f46=_[_0xbb10('0x6f')](_0x2cd825,'id');var _0x373c0e;var _0x5ee229=squel[_0xbb10('0x70')]();_0x5ee229['from'](_0x2a6589[_0xbb10('0x71')]);for(var _0x1b6b9f=0x0;_0x1b6b9f<_0x11279d[_0xbb10('0x37')];_0x1b6b9f+=0x1){_0x373c0e=_0x11279d[_0x1b6b9f]['MetricId']?_0x485f46[_0x11279d[_0x1b6b9f][_0xbb10('0x72')]][_0xbb10('0x8d')]:_0x11279d[_0x1b6b9f][_0xbb10('0x68')];_0x373c0e=_0x11279d[_0x1b6b9f][_0xbb10('0x74')]?_[_0xbb10('0x73')](_0x24edcb[_0x11279d[_0x1b6b9f][_0xbb10('0x74')]],'%s',_0x373c0e):_0x373c0e;_0x373c0e=_0x11279d[_0x1b6b9f]['format']?_['replace'](_0x1b9012[_0x11279d[_0x1b6b9f]['format']],'%s',_0x373c0e):_0x373c0e;if(_0x11279d[_0x1b6b9f][_0xbb10('0x76')]){_0x5ee229['group'](_0x373c0e);}_0x11279d[_0x1b6b9f][_0xbb10('0x77')]&&_0x5ee229['order'](_0x373c0e,_0x11279d[_0x1b6b9f][_0xbb10('0x77')]===_0xbb10('0x8e')?![]:!![]);_0x5ee229[_0xbb10('0x68')](_0x373c0e,_0x11279d[_0x1b6b9f]['alias']||_0x373c0e);}if(_0x2a6589['joins']){_0x2a6589[_0xbb10('0x79')]=JSON[_0xbb10('0x8f')](_0x2a6589[_0xbb10('0x79')]);for(var _0x59b20f=0x0;_0x59b20f<_0x2a6589[_0xbb10('0x79')][_0xbb10('0x37')];_0x59b20f+=0x1){if(_0x2a6589[_0xbb10('0x79')][_0x59b20f]['type']&&_['includes'](_0x5e4ae9,_0x2a6589['joins'][_0x59b20f][_0xbb10('0x40')])&&_0x2a6589['joins'][_0x59b20f][_0xbb10('0x7b')]&&_0x2a6589[_0xbb10('0x79')][_0x59b20f][_0xbb10('0x7c')]&&_0x2a6589[_0xbb10('0x79')][_0x59b20f][_0xbb10('0x7d')]){_0x5ee229[_0x2a6589[_0xbb10('0x79')][_0x59b20f][_0xbb10('0x40')]](_0x2a6589[_0xbb10('0x79')][_0x59b20f][_0xbb10('0x7c')],null,util[_0xbb10('0x75')](_0xbb10('0x7e'),_0x2a6589['table'],_0x2a6589[_0xbb10('0x79')][_0x59b20f][_0xbb10('0x7b')],_0x2a6589['joins'][_0x59b20f][_0xbb10('0x7c')],_0x2a6589['joins'][_0x59b20f]['foreignKey']));}}}if(_0x2a6589[_0xbb10('0x7f')]){_0x2a6589[_0xbb10('0x7f')]=JSON[_0xbb10('0x8f')](_0x2a6589[_0xbb10('0x7f')]);_0x5ee229[_0xbb10('0x3b')](_0x584a62(_0x2a6589['conditions'][_0xbb10('0x67')]));}_0x356660=_0x5ee229[_0xbb10('0x80')]();_0x5ee229['limit'](_0x33a43e);_0x5ee229[_0xbb10('0x1c')](0x0);logger[_0xbb10('0x81')]('Limited\x20Query:',_0x5ee229[_0xbb10('0x83')]());return db['sequelize'][_0xbb10('0x31')](_0x5ee229[_0xbb10('0x83')](),{'type':db[_0xbb10('0x84')][_0xbb10('0x85')][_0xbb10('0x86')]});}})[_0xbb10('0x23')](function(){return{'sql':_0x356660[_0xbb10('0x83')]()};})['then'](respondWithResult(_0x5e405b,null))[_0xbb10('0x45')](handleError(_0x5e405b,null));};
\ No newline at end of file
+var _0x7a54=['day','merge','filter','map','type','key','VIRTUAL','field','options','findAll','rows','show','intersection','includeAll','include','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','body','find','params','join','outer_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)','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','format','replace','orderBy','DESC','alias','joins','parse','includes','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','right_join','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','ROUND(%s)','No\x20available\x20data','randomstring','generate','output','custom','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','fork','../../components/export/','../../files/reports','savename','countTable','run','runReport','COUNT(%s)','groupBy','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','squel','crypto','desk.js','ioredis','../../components/parsers/qs','api','../../mysqldb','sendStatus','status','end','json','count','offset','set','apply','reject','save','then','destroy','get','CustomReports','error','name','send','index','AnalyticCustomReport','rawAttributes','keys','query','dateStart','dateEnd','filters','attributes','model','fields','length','hasOwnProperty','limit','order','sort','where','pick','add'];(function(_0xf2f76c,_0xbb16ed){var _0x518dfd=function(_0x4fe247){while(--_0x4fe247){_0xf2f76c['push'](_0xf2f76c['shift']());}};_0x518dfd(++_0xbb16ed);}(_0x7a54,0x106));var _0x47a5=function(_0x13fdc6,_0x536940){_0x13fdc6=_0x13fdc6-0x0;var _0x557255=_0x7a54[_0x13fdc6];return _0x557255;};'use strict';var pdf=require(_0x47a5('0x0'));var emlformat=require(_0x47a5('0x1'));var rimraf=require(_0x47a5('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x47a5('0x3'));var rp=require(_0x47a5('0x4'));var moment=require('moment');var BPromise=require(_0x47a5('0x5'));var Mustache=require(_0x47a5('0x6'));var util=require(_0x47a5('0x7'));var path=require(_0x47a5('0x8'));var sox=require(_0x47a5('0x9'));var csv=require('to-csv');var ejs=require(_0x47a5('0xa'));var fs=require('fs');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 qs=require(_0x47a5('0xf'));var logger=require('../../config/logger')(_0x47a5('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x47a5('0x11'))['db'];function respondWithStatusCode(_0x69e4d4,_0x2f399b){_0x2f399b=_0x2f399b||0xcc;return function(_0x250fad){if(_0x250fad){return _0x69e4d4[_0x47a5('0x12')](_0x2f399b);}return _0x69e4d4[_0x47a5('0x13')](_0x2f399b)[_0x47a5('0x14')]();};}function respondWithResult(_0x5beb89,_0x44bd3e){_0x44bd3e=_0x44bd3e||0xc8;return function(_0x221b54){if(_0x221b54){return _0x5beb89[_0x47a5('0x13')](_0x44bd3e)[_0x47a5('0x15')](_0x221b54);}};}function respondWithFilteredResult(_0x139f25,_0x620ee9){return function(_0x3c6c46){if(_0x3c6c46){var _0x190faa=_0x3c6c46[_0x47a5('0x16')],_0x4e99a8=_0x620ee9[_0x47a5('0x17')],_0x362359=_0x620ee9[_0x47a5('0x17')]+_0x620ee9['limit'],_0x11faf5;if(_0x362359>=_0x190faa){_0x362359=_0x190faa;_0x11faf5=0xc8;}else{_0x11faf5=0xce;}_0x139f25['status'](_0x11faf5);return _0x139f25[_0x47a5('0x18')]('Content-Range',_0x4e99a8+'-'+_0x362359+'/'+_0x190faa)['json'](_0x3c6c46);}return null;};}function patchUpdates(_0x423a81){return function(_0xaf70a6){try{jsonpatch[_0x47a5('0x19')](_0xaf70a6,_0x423a81,!![]);}catch(_0x1ef371){return BPromise[_0x47a5('0x1a')](_0x1ef371);}return _0xaf70a6[_0x47a5('0x1b')]();};}function saveUpdates(_0x2763d6,_0xe3c618){return function(_0x3aed38){if(_0x3aed38){return _0x3aed38['update'](_0x2763d6)[_0x47a5('0x1c')](function(_0xf160ba){return _0xf160ba;});}return null;};}function removeEntity(_0x47cf3c,_0x2b0360){return function(_0x1f03f7){if(_0x1f03f7){return _0x1f03f7[_0x47a5('0x1d')]()['then'](function(){var _0xb8ae6c=_0x1f03f7[_0x47a5('0x1e')]({'plain':!![]});var _0x23db32=_0x47a5('0x1f');return db['UserProfileResource'][_0x47a5('0x1d')]({'where':{'type':_0x23db32,'resourceId':_0xb8ae6c['id']}})[_0x47a5('0x1c')](function(){return _0x1f03f7;});})['then'](function(){_0x47cf3c[_0x47a5('0x13')](0xcc)[_0x47a5('0x14')]();});}};}function handleEntityNotFound(_0x4437f1,_0x129ce5){return function(_0x3abd6a){if(!_0x3abd6a){_0x4437f1['sendStatus'](0x194);}return _0x3abd6a;};}function handleError(_0x53078a,_0x136745){_0x136745=_0x136745||0x1f4;return function(_0x5686db){logger[_0x47a5('0x20')](_0x5686db['stack']);if(_0x5686db[_0x47a5('0x21')]){delete _0x5686db[_0x47a5('0x21')];}_0x53078a[_0x47a5('0x13')](_0x136745)[_0x47a5('0x22')](_0x5686db);};}exports[_0x47a5('0x23')]=function(_0x3ba0b7,_0x24b162){var _0x136b14={},_0x16631f={},_0x361bfa={'count':0x0,'rows':[]};var _0x1127f8=db[_0x47a5('0x24')][_0x47a5('0x25')];_0x16631f['model']=_[_0x47a5('0x26')](_0x1127f8);var _0x51833b={'dateStart':_0x3ba0b7[_0x47a5('0x27')][_0x47a5('0x28')],'dateEnd':_0x3ba0b7[_0x47a5('0x27')]['dateEnd']};delete _0x3ba0b7[_0x47a5('0x27')][_0x47a5('0x28')];delete _0x3ba0b7[_0x47a5('0x27')][_0x47a5('0x29')];_0x16631f['query']=_['keys'](_0x3ba0b7[_0x47a5('0x27')]);_0x16631f[_0x47a5('0x2a')]=_['intersection'](_0x16631f['model'],_0x16631f[_0x47a5('0x27')]);_0x136b14[_0x47a5('0x2b')]=_['intersection'](_0x16631f[_0x47a5('0x2c')],qs['fields'](_0x3ba0b7[_0x47a5('0x27')][_0x47a5('0x2d')]));_0x136b14['attributes']=_0x136b14['attributes'][_0x47a5('0x2e')]?_0x136b14['attributes']:_0x16631f[_0x47a5('0x2c')];if(!_0x3ba0b7[_0x47a5('0x27')][_0x47a5('0x2f')]('nolimit')){_0x136b14[_0x47a5('0x30')]=qs['limit'](_0x3ba0b7['query'][_0x47a5('0x30')]);_0x136b14['offset']=qs[_0x47a5('0x17')](_0x3ba0b7['query'][_0x47a5('0x17')]);}_0x136b14[_0x47a5('0x31')]=qs[_0x47a5('0x32')](_0x3ba0b7[_0x47a5('0x27')][_0x47a5('0x32')]);_0x136b14[_0x47a5('0x33')]=qs[_0x47a5('0x2a')](_[_0x47a5('0x34')](_0x3ba0b7[_0x47a5('0x27')],_0x16631f['filters']));if(_0x51833b[_0x47a5('0x28')]){if(_0x51833b[_0x47a5('0x29')]){_0x51833b['dateEnd']=moment(_0x51833b[_0x47a5('0x29')])[_0x47a5('0x35')](0x1,_0x47a5('0x36'));}else{_0x51833b['dateEnd']=moment(_0x51833b[_0x47a5('0x28')])[_0x47a5('0x35')](0x1,'day');}_[_0x47a5('0x37')](_0x136b14[_0x47a5('0x33')],{'createdAt':{'$gte':_0x51833b['dateStart'],'$lte':_0x51833b['dateEnd']}});}if(_0x3ba0b7['query'][_0x47a5('0x38')]){_0x136b14['where']=_[_0x47a5('0x37')](_0x136b14[_0x47a5('0x33')],{'$or':_[_0x47a5('0x39')](_0x1127f8,function(_0x111f0d){if(_0x111f0d[_0x47a5('0x3a')][_0x47a5('0x3b')]!==_0x47a5('0x3c')){var _0x1f3d01={};_0x1f3d01[_0x111f0d[_0x47a5('0x3d')]]={'$like':'%'+_0x3ba0b7[_0x47a5('0x27')][_0x47a5('0x38')]+'%'};return _0x1f3d01;}})});}_0x136b14=_[_0x47a5('0x37')]({},_0x136b14,_0x3ba0b7[_0x47a5('0x3e')]);var _0x56dbbd={'where':_0x136b14[_0x47a5('0x33')]};return db[_0x47a5('0x24')][_0x47a5('0x16')](_0x56dbbd)[_0x47a5('0x1c')](function(_0x586f4f){_0x361bfa[_0x47a5('0x16')]=_0x586f4f;if(_0x3ba0b7['query']['includeAll']){_0x136b14['include']=[{'all':!![]}];}return db['AnalyticCustomReport'][_0x47a5('0x3f')](_0x136b14);})['then'](function(_0x2bb502){_0x361bfa[_0x47a5('0x40')]=_0x2bb502;return _0x361bfa;})[_0x47a5('0x1c')](respondWithFilteredResult(_0x24b162,_0x136b14))['catch'](handleError(_0x24b162,null));};exports[_0x47a5('0x41')]=function(_0x20c5bc,_0x586747){var _0x483650={'raw':![],'where':{'id':_0x20c5bc['params']['id']}},_0xbe21d9={};_0xbe21d9[_0x47a5('0x2c')]=_[_0x47a5('0x26')](db[_0x47a5('0x24')][_0x47a5('0x25')]);_0xbe21d9[_0x47a5('0x27')]=_[_0x47a5('0x26')](_0x20c5bc[_0x47a5('0x27')]);_0xbe21d9[_0x47a5('0x2a')]=_[_0x47a5('0x42')](_0xbe21d9[_0x47a5('0x2c')],_0xbe21d9[_0x47a5('0x27')]);_0x483650[_0x47a5('0x2b')]=_[_0x47a5('0x42')](_0xbe21d9[_0x47a5('0x2c')],qs[_0x47a5('0x2d')](_0x20c5bc[_0x47a5('0x27')]['fields']));_0x483650[_0x47a5('0x2b')]=_0x483650[_0x47a5('0x2b')]['length']?_0x483650['attributes']:_0xbe21d9[_0x47a5('0x2c')];if(_0x20c5bc['query'][_0x47a5('0x43')]){_0x483650[_0x47a5('0x44')]=[{'all':!![]}];}_0x483650=_['merge']({},_0x483650,_0x20c5bc['options']);return db[_0x47a5('0x24')]['find'](_0x483650)[_0x47a5('0x1c')](handleEntityNotFound(_0x586747,null))[_0x47a5('0x1c')](respondWithResult(_0x586747,null))[_0x47a5('0x45')](handleError(_0x586747,null));};exports[_0x47a5('0x46')]=function(_0x44fe8a,_0x26acd2){return db[_0x47a5('0x24')]['create'](_0x44fe8a['body'],{})[_0x47a5('0x1c')](function(_0x411230){var _0x1163e3=_0x44fe8a[_0x47a5('0x47')][_0x47a5('0x1e')]({'plain':!![]});if(!_0x1163e3)throw new Error(_0x47a5('0x48'));if(_0x1163e3[_0x47a5('0x49')]==='user'){var _0x45cca5=_0x411230[_0x47a5('0x1e')]({'plain':!![]});var _0x5f6a='Reports';return db[_0x47a5('0x4a')]['find']({'where':{'name':_0x5f6a,'userProfileId':_0x1163e3[_0x47a5('0x4b')]},'raw':!![]})[_0x47a5('0x1c')](function(_0x46e90b){if(_0x46e90b&&_0x46e90b[_0x47a5('0x4c')]===0x0){return db['UserProfileResource'][_0x47a5('0x46')]({'name':_0x45cca5[_0x47a5('0x21')],'resourceId':_0x45cca5['id'],'type':_0x47a5('0x1f'),'sectionId':_0x46e90b['id']},{})[_0x47a5('0x1c')](function(){return _0x411230;});}else{return _0x411230;}})[_0x47a5('0x45')](function(_0x6a53b3){logger[_0x47a5('0x20')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x6a53b3);throw _0x6a53b3;});}return _0x411230;})[_0x47a5('0x1c')](respondWithResult(_0x26acd2,0xc9))[_0x47a5('0x45')](handleError(_0x26acd2,null));};exports[_0x47a5('0x4d')]=function(_0x8da9fb,_0x3329aa){if(_0x8da9fb[_0x47a5('0x4e')]['id']){delete _0x8da9fb['body']['id'];}return db[_0x47a5('0x24')][_0x47a5('0x4f')]({'where':{'id':_0x8da9fb[_0x47a5('0x50')]['id']}})['then'](handleEntityNotFound(_0x3329aa,null))[_0x47a5('0x1c')](saveUpdates(_0x8da9fb[_0x47a5('0x4e')],null))[_0x47a5('0x1c')](respondWithResult(_0x3329aa,null))['catch'](handleError(_0x3329aa,null));};exports['destroy']=function(_0x274e38,_0x376e1d){return db['AnalyticCustomReport']['find']({'where':{'id':_0x274e38[_0x47a5('0x50')]['id']}})['then'](handleEntityNotFound(_0x376e1d,null))[_0x47a5('0x1c')](removeEntity(_0x376e1d,null))['catch'](handleError(_0x376e1d,null));};exports['preview']=function(_0x389ed9,_0x46d2d3){var _0x53eedf=0xa;var _0x1b958b=[_0x47a5('0x51'),'left_join','right_join',_0x47a5('0x52'),_0x47a5('0x53')];var _0x867da0={'SUM':_0x47a5('0x54'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x47a5('0x55'),'MAX':_0x47a5('0x56'),'MIN':_0x47a5('0x57'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x47a5('0x58'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x47a5('0x59')};var _0x470da6={'SEC_TO_TIME':_0x47a5('0x5a'),'DATE':_0x47a5('0x5b'),'HOUR':_0x47a5('0x5c'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x47a5('0x5d')};var _0x5d1550=function(_0x5cbe97){return!_['includes'](['IS\x20NULL',_0x47a5('0x5e'),_0x47a5('0x5f'),_0x47a5('0x60')],_0x5cbe97);};var _0x52e3ee=function(_0x4d3db1){if(!_0x4d3db1||!_0x4d3db1[_0x47a5('0x61')][_0x47a5('0x2e')]){return'';}for(var _0x45d4b6='(',_0x3c2b46=0x0;_0x3c2b46<_0x4d3db1[_0x47a5('0x61')]['length'];_0x3c2b46+=0x1){_0x3c2b46>0x0&&(_0x45d4b6+='\x20'+_0x4d3db1[_0x47a5('0x62')]+'\x20');_0x45d4b6+=_0x4d3db1['rules'][_0x3c2b46][_0x47a5('0x63')]?_0x52e3ee(_0x4d3db1[_0x47a5('0x61')][_0x3c2b46]['group']):_0x4d3db1[_0x47a5('0x61')][_0x3c2b46][_0x47a5('0x3d')]+'\x20'+_0x4d3db1[_0x47a5('0x61')][_0x3c2b46][_0x47a5('0x64')]+(_0x5d1550(_0x4d3db1[_0x47a5('0x61')][_0x3c2b46][_0x47a5('0x64')])?'\x20'+_0x4d3db1[_0x47a5('0x61')][_0x3c2b46][_0x47a5('0x65')]:'');}return _0x45d4b6+')';};var _0x57ed0a={'where':{'id':_0x389ed9['params']['id']}},_0x2dcc3b,_0x2a3a57,_0x3c75c6,_0x26e7fc,_0x396cb0;_0x57ed0a=_[_0x47a5('0x37')]({},_0x57ed0a,_0x389ed9[_0x47a5('0x3e')]);return db[_0x47a5('0x24')][_0x47a5('0x4f')](_0x57ed0a)[_0x47a5('0x1c')](function(_0x168329){if(_0x168329){_0x2dcc3b=_0x168329;return _0x168329[_0x47a5('0x66')]();}return null;})[_0x47a5('0x1c')](function(_0x350af8){if(_0x350af8){if(!_0x350af8[_0x47a5('0x2e')]){throw new db[(_0x47a5('0x67'))][(_0x47a5('0x68'))](_0x47a5('0x69'),0x193);}_0x2a3a57=_0x350af8;return db[_0x47a5('0x6a')][_0x47a5('0x3f')]({'raw':!![]});}return null;})['then'](function(_0x42dd7d){if(_0x42dd7d){_0x3c75c6=_[_0x47a5('0x6b')](_0x42dd7d,'id');var _0x30504e;var _0x4b42f3=squel[_0x47a5('0x6c')]();_0x4b42f3[_0x47a5('0x6d')](_0x2dcc3b[_0x47a5('0x6e')]);for(var _0x26f1ac=0x0;_0x26f1ac<_0x2a3a57['length'];_0x26f1ac+=0x1){_0x30504e=_0x2a3a57[_0x26f1ac][_0x47a5('0x6f')]?_0x3c75c6[_0x2a3a57[_0x26f1ac]['MetricId']][_0x47a5('0x70')]:_0x2a3a57[_0x26f1ac]['field'];_0x30504e=_0x2a3a57[_0x26f1ac][_0x47a5('0x71')]?_['replace'](_0x867da0[_0x2a3a57[_0x26f1ac][_0x47a5('0x71')]],'%s',_0x30504e):_0x30504e;_0x30504e=_0x2a3a57[_0x26f1ac][_0x47a5('0x72')]?_[_0x47a5('0x73')](_0x470da6[_0x2a3a57[_0x26f1ac]['format']],'%s',_0x30504e):_0x30504e;if(_0x2a3a57[_0x26f1ac]['groupBy']){_0x4b42f3['group'](_0x30504e);}_0x2a3a57[_0x26f1ac][_0x47a5('0x74')]&&_0x4b42f3[_0x47a5('0x31')](_0x30504e,_0x2a3a57[_0x26f1ac][_0x47a5('0x74')]===_0x47a5('0x75')?![]:!![]);_0x4b42f3['field'](_0x30504e,_0x2a3a57[_0x26f1ac][_0x47a5('0x76')]||_0x30504e);}if(_0x2dcc3b[_0x47a5('0x77')]){_0x2dcc3b[_0x47a5('0x77')]=JSON[_0x47a5('0x78')](_0x2dcc3b[_0x47a5('0x77')]);for(var _0xb9f589=0x0;_0xb9f589<_0x2dcc3b[_0x47a5('0x77')][_0x47a5('0x2e')];_0xb9f589+=0x1){if(_0x2dcc3b[_0x47a5('0x77')][_0xb9f589][_0x47a5('0x3a')]&&_[_0x47a5('0x79')](_0x1b958b,_0x2dcc3b[_0x47a5('0x77')][_0xb9f589]['type'])&&_0x2dcc3b[_0x47a5('0x77')][_0xb9f589]['parentKey']&&_0x2dcc3b[_0x47a5('0x77')][_0xb9f589][_0x47a5('0x7a')]&&_0x2dcc3b[_0x47a5('0x77')][_0xb9f589][_0x47a5('0x7b')]){_0x4b42f3[_0x2dcc3b[_0x47a5('0x77')][_0xb9f589][_0x47a5('0x3a')]](_0x2dcc3b[_0x47a5('0x77')][_0xb9f589][_0x47a5('0x7a')],null,util[_0x47a5('0x72')](_0x47a5('0x7c'),_0x2dcc3b[_0x47a5('0x6e')],_0x2dcc3b[_0x47a5('0x77')][_0xb9f589][_0x47a5('0x7d')],_0x2dcc3b[_0x47a5('0x77')][_0xb9f589][_0x47a5('0x7a')],_0x2dcc3b['joins'][_0xb9f589]['foreignKey']));}}}if(_0x2dcc3b['conditions']){_0x2dcc3b['conditions']=JSON[_0x47a5('0x78')](_0x2dcc3b[_0x47a5('0x7e')]);_0x4b42f3['where'](_0x52e3ee(_0x2dcc3b[_0x47a5('0x7e')][_0x47a5('0x63')]));}_0x396cb0=_0x4b42f3[_0x47a5('0x7f')]();_0x4b42f3[_0x47a5('0x30')](_0x53eedf);_0x4b42f3[_0x47a5('0x17')](0x0);logger[_0x47a5('0x80')](_0x47a5('0x81'),_0x4b42f3[_0x47a5('0x82')]());return db[_0x47a5('0x83')][_0x47a5('0x27')](_0x4b42f3[_0x47a5('0x82')](),{'type':db['sequelize'][_0x47a5('0x84')][_0x47a5('0x85')]});}})[_0x47a5('0x1c')](respondWithResult(_0x46d2d3,null))['catch'](handleError(_0x46d2d3,null));};function runReport(_0x340846,_0x32f393,_0x17b61d){var _0x5d41d8=_0x32f393[_0x47a5('0x21')];var _0x5205ba=0xa;var _0x49d93d=[_0x47a5('0x51'),_0x47a5('0x86'),_0x47a5('0x87'),_0x47a5('0x52'),_0x47a5('0x53')];var _0xea50f3={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x47a5('0x55'),'MAX':'MAX(%s)','MIN':_0x47a5('0x57'),'AVG':_0x47a5('0x88'),'GROUP_CONCAT':_0x47a5('0x58'),'GROUP_CONCAT ASC':_0x47a5('0x89'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x3c66e3={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x47a5('0x5c'),'ROUND':_0x47a5('0x8a'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1926bd=function(_0x21828e){return!_[_0x47a5('0x79')](['IS\x20NULL',_0x47a5('0x5e'),'IS\x20EMPTY',_0x47a5('0x60')],_0x21828e);};var _0x219beb=function(_0x63e2e5){if(!_0x63e2e5||!_0x63e2e5['rules'][_0x47a5('0x2e')]){return'';}for(var _0x196600='(',_0x2ae38b=0x0;_0x2ae38b<_0x63e2e5['rules'][_0x47a5('0x2e')];_0x2ae38b+=0x1){_0x2ae38b>0x0&&(_0x196600+='\x20'+_0x63e2e5['operator']+'\x20');_0x196600+=_0x63e2e5[_0x47a5('0x61')][_0x2ae38b]['group']?_0x219beb(_0x63e2e5[_0x47a5('0x61')][_0x2ae38b][_0x47a5('0x63')]):_0x63e2e5[_0x47a5('0x61')][_0x2ae38b][_0x47a5('0x3d')]+'\x20'+_0x63e2e5['rules'][_0x2ae38b][_0x47a5('0x64')]+(_0x1926bd(_0x63e2e5[_0x47a5('0x61')][_0x2ae38b][_0x47a5('0x64')])?'\x20'+_0x63e2e5[_0x47a5('0x61')][_0x2ae38b][_0x47a5('0x65')]:'');}return _0x196600+')';};var _0x57ac25={'where':{'id':_0x340846['id']}},_0x56c35e,_0x569550,_0x4ab01f,_0xd6c211,_0xa8809a;_0x57ac25=_[_0x47a5('0x37')]({},_0x57ac25,_0x17b61d);return db['AnalyticCustomReport'][_0x47a5('0x4f')](_0x57ac25)[_0x47a5('0x1c')](function(_0x565fbe){if(_0x565fbe){_0x56c35e=_0x565fbe;return _0x565fbe[_0x47a5('0x66')]();}return null;})[_0x47a5('0x1c')](function(_0x19acfa){if(_0x19acfa){if(!_0x19acfa[_0x47a5('0x2e')]){throw new db['Sequelize']['ValidationErrorItem'](_0x47a5('0x69'),0x193);}_0x569550=_0x19acfa;return db[_0x47a5('0x6a')]['findAll']({'raw':!![]});}return null;})[_0x47a5('0x1c')](function(_0x23f055){if(_0x23f055){_0x4ab01f=_['keyBy'](_0x23f055,'id');var _0x309a92;var _0x2a02cd=squel[_0x47a5('0x6c')]();_0x2a02cd['from'](_0x56c35e[_0x47a5('0x6e')]);for(var _0x59b4a5=0x0;_0x59b4a5<_0x569550[_0x47a5('0x2e')];_0x59b4a5+=0x1){_0x309a92=_0x569550[_0x59b4a5]['MetricId']?_0x4ab01f[_0x569550[_0x59b4a5][_0x47a5('0x6f')]][_0x47a5('0x70')]:_0x569550[_0x59b4a5]['field'];_0x309a92=_0x569550[_0x59b4a5][_0x47a5('0x71')]?_['replace'](_0xea50f3[_0x569550[_0x59b4a5][_0x47a5('0x71')]],'%s',_0x309a92):_0x309a92;_0x309a92=_0x569550[_0x59b4a5][_0x47a5('0x72')]?_[_0x47a5('0x73')](_0x3c66e3[_0x569550[_0x59b4a5][_0x47a5('0x72')]],'%s',_0x309a92):_0x309a92;if(_0x569550[_0x59b4a5]['groupBy']){_0x2a02cd[_0x47a5('0x63')](_0x309a92);}_0x569550[_0x59b4a5]['orderBy']&&_0x2a02cd['order'](_0x309a92,_0x569550[_0x59b4a5][_0x47a5('0x74')]===_0x47a5('0x75')?![]:!![]);_0x2a02cd[_0x47a5('0x3d')](_0x309a92,_0x569550[_0x59b4a5][_0x47a5('0x76')]||_0x309a92);}if(_0x56c35e[_0x47a5('0x77')]){_0x56c35e['joins']=JSON[_0x47a5('0x78')](_0x56c35e[_0x47a5('0x77')]);for(var _0x241e1d=0x0;_0x241e1d<_0x56c35e[_0x47a5('0x77')]['length'];_0x241e1d+=0x1){if(_0x56c35e[_0x47a5('0x77')][_0x241e1d]['type']&&_[_0x47a5('0x79')](_0x49d93d,_0x56c35e[_0x47a5('0x77')][_0x241e1d][_0x47a5('0x3a')])&&_0x56c35e[_0x47a5('0x77')][_0x241e1d][_0x47a5('0x7d')]&&_0x56c35e[_0x47a5('0x77')][_0x241e1d][_0x47a5('0x7a')]&&_0x56c35e[_0x47a5('0x77')][_0x241e1d][_0x47a5('0x7b')]){_0x2a02cd[_0x56c35e['joins'][_0x241e1d][_0x47a5('0x3a')]](_0x56c35e[_0x47a5('0x77')][_0x241e1d]['foreignTable'],null,util[_0x47a5('0x72')](_0x47a5('0x7c'),_0x56c35e[_0x47a5('0x6e')],_0x56c35e['joins'][_0x241e1d]['parentKey'],_0x56c35e[_0x47a5('0x77')][_0x241e1d][_0x47a5('0x7a')],_0x56c35e['joins'][_0x241e1d]['foreignKey']));}}}if(_0x56c35e[_0x47a5('0x7e')]){_0x56c35e[_0x47a5('0x7e')]=JSON['parse'](_0x56c35e[_0x47a5('0x7e')]);_0x2a02cd[_0x47a5('0x33')](_0x219beb(_0x56c35e['conditions'][_0x47a5('0x63')]));}_0xa8809a=_0x2a02cd[_0x47a5('0x7f')]();_0x2a02cd[_0x47a5('0x30')](_0x5205ba);_0x2a02cd[_0x47a5('0x17')](0x0);logger[_0x47a5('0x80')](_0x47a5('0x81'),_0x2a02cd['toString']());return db['sequelize']['query'](_0x2a02cd[_0x47a5('0x82')](),{'type':db[_0x47a5('0x83')]['QueryTypes'][_0x47a5('0x85')]});}})[_0x47a5('0x1c')](function(_0x32ca1c){if(!_0x32ca1c[_0x47a5('0x2e')]){throw new db[(_0x47a5('0x67'))]['ValidationErrorItem'](_0x47a5('0x8b'),0xcc);}if(_0x32f393['output']==='web'){return null;}var _0x5db0ed=_[_0x47a5('0x37')](_0x32f393,{'name':_0x32f393['fullPath']||_0x32f393[_0x47a5('0x21')]||_0x56c35e[_0x47a5('0x21')],'basename':_0x5d41d8,'savename':util[_0x47a5('0x72')]('%s-%s.%s',_0x32f393[_0x47a5('0x21')]||_0x56c35e[_0x47a5('0x21')],require(_0x47a5('0x8c'))[_0x47a5('0x8d')](0x4),_0x32f393[_0x47a5('0x8e')]||'csv'),'reportId':_0x56c35e['id'],'reportType':_0x47a5('0x8f')});return db[_0x47a5('0x90')]['create'](_0x5db0ed,{'raw':!![]});})[_0x47a5('0x1c')](function(_0x419870){if(_0x56c35e[_0x47a5('0x6e')]===_0x47a5('0x91')){_0xa8809a[_0x47a5('0x33')](_0x56c35e[_0x47a5('0x6e')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x32f393[_0x47a5('0x92')],_0x32f393[_0x47a5('0x93')]);}else{_0xa8809a['where'](_0x56c35e[_0x47a5('0x6e')]+_0x47a5('0x94'),_0x32f393[_0x47a5('0x92')],_0x32f393[_0x47a5('0x93')]);}if(_0x419870){logger['info']('Run\x20Query:',_0xa8809a['toString']());require('child_process')[_0x47a5('0x95')](path[_0x47a5('0x51')](__dirname,_0x47a5('0x96'),_0x419870[_0x47a5('0x8e')]),[_0x419870['id'],_0xa8809a[_0x47a5('0x82')](),path[_0x47a5('0x51')](__dirname,_0x47a5('0x97'),_0x419870[_0x47a5('0x98')]),_0x5d41d8]);return _0x419870;}else{var _0x4bd164=squel[_0x47a5('0x6c')]();_0x4bd164[_0x47a5('0x6d')]('('+_0xa8809a[_0x47a5('0x82')]()+')',_0x47a5('0x99'));_0x4bd164['field']('COUNT(*)',_0x47a5('0x16'));_0xa8809a['limit'](_0x32f393['limit']||_0x5205ba);_0xa8809a[_0x47a5('0x17')](_0x32f393[_0x47a5('0x17')]||0x0);return db['sequelize'][_0x47a5('0x27')](_0x4bd164[_0x47a5('0x82')](),{'type':db[_0x47a5('0x83')]['QueryTypes'][_0x47a5('0x85')]})[_0x47a5('0x1c')](function(_0x48a491){if(!_0x48a491[_0x47a5('0x2e')]){_0xd6c211=0x0;}else{_0xd6c211=_0x48a491[0x0][_0x47a5('0x16')]||0x0;}return db[_0x47a5('0x83')][_0x47a5('0x27')](_0xa8809a[_0x47a5('0x82')](),{'type':db[_0x47a5('0x83')]['QueryTypes'][_0x47a5('0x85')]});})['then'](function(_0x2a3f32){return{'rows':_0x2a3f32||[],'count':_0xd6c211};});}});}exports[_0x47a5('0x9a')]=function(_0xe3f69f,_0x25f188){return runReport(_0xe3f69f['params'],_0xe3f69f[_0x47a5('0x27')],_0xe3f69f[_0x47a5('0x3e')])[_0x47a5('0x1c')](respondWithResult(_0x25f188,null))[_0x47a5('0x45')](handleError(_0x25f188,null));};exports[_0x47a5('0x9b')]=runReport;exports[_0x47a5('0x27')]=function(_0x31b8b1,_0x359fd8){var _0x1b3e82=0xa;var _0xa2045c=[_0x47a5('0x51'),_0x47a5('0x86'),'right_join',_0x47a5('0x52'),_0x47a5('0x53')];var _0x591bde={'SUM':_0x47a5('0x54'),'COUNT':_0x47a5('0x9c'),'COUNT DISTINCT':_0x47a5('0x55'),'MAX':_0x47a5('0x56'),'MIN':_0x47a5('0x57'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x47a5('0x58'),'GROUP_CONCAT ASC':_0x47a5('0x89'),'GROUP_CONCAT DESC':_0x47a5('0x59')};var _0x266a2f={'SEC_TO_TIME':_0x47a5('0x5a'),'DATE':_0x47a5('0x5b'),'HOUR':_0x47a5('0x5c'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xa3d578=function(_0x580ce8){return!_[_0x47a5('0x79')](['IS\x20NULL',_0x47a5('0x5e'),_0x47a5('0x5f'),_0x47a5('0x60')],_0x580ce8);};var _0x2bc7ae=function(_0x49cb8c){if(!_0x49cb8c||!_0x49cb8c[_0x47a5('0x61')][_0x47a5('0x2e')]){return'';}for(var _0xaca12c='(',_0x5a150a=0x0;_0x5a150a<_0x49cb8c['rules'][_0x47a5('0x2e')];_0x5a150a+=0x1){_0x5a150a>0x0&&(_0xaca12c+='\x20'+_0x49cb8c[_0x47a5('0x62')]+'\x20');_0xaca12c+=_0x49cb8c[_0x47a5('0x61')][_0x5a150a][_0x47a5('0x63')]?_0x2bc7ae(_0x49cb8c[_0x47a5('0x61')][_0x5a150a][_0x47a5('0x63')]):_0x49cb8c[_0x47a5('0x61')][_0x5a150a][_0x47a5('0x3d')]+'\x20'+_0x49cb8c['rules'][_0x5a150a][_0x47a5('0x64')]+(_0xa3d578(_0x49cb8c['rules'][_0x5a150a][_0x47a5('0x64')])?'\x20'+_0x49cb8c[_0x47a5('0x61')][_0x5a150a]['value']:'');}return _0xaca12c+')';};var _0x48d4cf={'where':{'id':_0x31b8b1[_0x47a5('0x50')]['id']}},_0x229280,_0x41d2da,_0x530387,_0x4420fa,_0x2b2693;_0x48d4cf=_[_0x47a5('0x37')]({},_0x48d4cf,_0x31b8b1['options']);return db[_0x47a5('0x24')]['find'](_0x48d4cf)['then'](function(_0x4c3ebb){if(_0x4c3ebb){_0x229280=_0x4c3ebb;return _0x4c3ebb[_0x47a5('0x66')]();}return null;})['then'](function(_0x16bf1a){if(_0x16bf1a){if(!_0x16bf1a[_0x47a5('0x2e')]){throw new db[(_0x47a5('0x67'))][(_0x47a5('0x68'))](_0x47a5('0x69'),0x193);}_0x41d2da=_0x16bf1a;return db[_0x47a5('0x6a')][_0x47a5('0x3f')]({'raw':!![]});}return null;})[_0x47a5('0x1c')](function(_0x2f11d8){if(_0x2f11d8){_0x530387=_[_0x47a5('0x6b')](_0x2f11d8,'id');var _0x42b7ef;var _0xf05c39=squel[_0x47a5('0x6c')]();_0xf05c39[_0x47a5('0x6d')](_0x229280[_0x47a5('0x6e')]);for(var _0x5e17cb=0x0;_0x5e17cb<_0x41d2da[_0x47a5('0x2e')];_0x5e17cb+=0x1){_0x42b7ef=_0x41d2da[_0x5e17cb][_0x47a5('0x6f')]?_0x530387[_0x41d2da[_0x5e17cb][_0x47a5('0x6f')]][_0x47a5('0x70')]:_0x41d2da[_0x5e17cb]['field'];_0x42b7ef=_0x41d2da[_0x5e17cb][_0x47a5('0x71')]?_['replace'](_0x591bde[_0x41d2da[_0x5e17cb][_0x47a5('0x71')]],'%s',_0x42b7ef):_0x42b7ef;_0x42b7ef=_0x41d2da[_0x5e17cb]['format']?_[_0x47a5('0x73')](_0x266a2f[_0x41d2da[_0x5e17cb][_0x47a5('0x72')]],'%s',_0x42b7ef):_0x42b7ef;if(_0x41d2da[_0x5e17cb][_0x47a5('0x9d')]){_0xf05c39['group'](_0x42b7ef);}_0x41d2da[_0x5e17cb][_0x47a5('0x74')]&&_0xf05c39[_0x47a5('0x31')](_0x42b7ef,_0x41d2da[_0x5e17cb][_0x47a5('0x74')]==='DESC'?![]:!![]);_0xf05c39['field'](_0x42b7ef,_0x41d2da[_0x5e17cb][_0x47a5('0x76')]||_0x42b7ef);}if(_0x229280[_0x47a5('0x77')]){_0x229280[_0x47a5('0x77')]=JSON[_0x47a5('0x78')](_0x229280[_0x47a5('0x77')]);for(var _0x579e5c=0x0;_0x579e5c<_0x229280[_0x47a5('0x77')]['length'];_0x579e5c+=0x1){if(_0x229280[_0x47a5('0x77')][_0x579e5c][_0x47a5('0x3a')]&&_[_0x47a5('0x79')](_0xa2045c,_0x229280[_0x47a5('0x77')][_0x579e5c]['type'])&&_0x229280['joins'][_0x579e5c][_0x47a5('0x7d')]&&_0x229280[_0x47a5('0x77')][_0x579e5c][_0x47a5('0x7a')]&&_0x229280[_0x47a5('0x77')][_0x579e5c][_0x47a5('0x7b')]){_0xf05c39[_0x229280[_0x47a5('0x77')][_0x579e5c][_0x47a5('0x3a')]](_0x229280[_0x47a5('0x77')][_0x579e5c][_0x47a5('0x7a')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x229280[_0x47a5('0x6e')],_0x229280['joins'][_0x579e5c][_0x47a5('0x7d')],_0x229280[_0x47a5('0x77')][_0x579e5c][_0x47a5('0x7a')],_0x229280['joins'][_0x579e5c][_0x47a5('0x7b')]));}}}if(_0x229280[_0x47a5('0x7e')]){_0x229280['conditions']=JSON[_0x47a5('0x78')](_0x229280['conditions']);_0xf05c39[_0x47a5('0x33')](_0x2bc7ae(_0x229280[_0x47a5('0x7e')][_0x47a5('0x63')]));}_0x2b2693=_0xf05c39['clone']();_0xf05c39['limit'](_0x1b3e82);_0xf05c39['offset'](0x0);logger['debug']('Limited\x20Query:',_0xf05c39[_0x47a5('0x82')]());return db['sequelize'][_0x47a5('0x27')](_0xf05c39[_0x47a5('0x82')](),{'type':db['sequelize']['QueryTypes']['SELECT']});}})[_0x47a5('0x1c')](function(){return{'sql':_0x2b2693['toString']()};})['then'](respondWithResult(_0x359fd8,null))['catch'](handleError(_0x359fd8,null));};
\ No newline at end of file
index 0720bbb..24393c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf469=['define','AnalyticCustomReport','analytics_custom_reports','lodash','util','request-promise','./analyticCustomReport.attributes','exports'];(function(_0x1a7809,_0x392d2b){var _0x10c780=function(_0x5a6219){while(--_0x5a6219){_0x1a7809['push'](_0x1a7809['shift']());}};_0x10c780(++_0x392d2b);}(_0xf469,0x1ab));var _0x9f46=function(_0x30e67d,_0x20c346){_0x30e67d=_0x30e67d-0x0;var _0x287817=_0xf469[_0x30e67d];return _0x287817;};'use strict';var _=require(_0x9f46('0x0'));var util=require(_0x9f46('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9f46('0x2'));var attributes=require(_0x9f46('0x3'));module[_0x9f46('0x4')]=function(_0x203a02,_0x20b70a){return _0x203a02[_0x9f46('0x5')](_0x9f46('0x6'),attributes,{'tableName':_0x9f46('0x7'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x91f0=['api','request-promise','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0x91f0,0x101));var _0x091f=function(_0x480db0,_0x146afe){_0x480db0=_0x480db0-0x0;var _0x548eea=_0x91f0[_0x480db0];return _0x548eea;};'use strict';var _=require(_0x091f('0x0'));var util=require(_0x091f('0x1'));var logger=require(_0x091f('0x2'))(_0x091f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x091f('0x4'));var attributes=require(_0x091f('0x5'));module[_0x091f('0x6')]=function(_0x155957,_0x463691){return _0x155957[_0x091f('0x7')](_0x091f('0x8'),attributes,{'tableName':_0x091f('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43b21a1..e375a45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['stringify','error','message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4cdf2c,_0x695601){var _0x251536=function(_0x5809c7){while(--_0x5809c7){_0x4cdf2c['push'](_0x4cdf2c['shift']());}};_0x251536(++_0x695601);}(_0xb10b,0x12a));var _0xbb10=function(_0x2f3ecd,_0x57976b){_0x2f3ecd=_0x2f3ecd-0x0;var _0xffdc44=_0xb10b[_0x2f3ecd];return _0xffdc44;};'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);});});}
\ No newline at end of file
+var _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','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','ioredis'];(function(_0xa656ef,_0x3d31df){var _0x20e81=function(_0x128119){while(--_0x128119){_0xa656ef['push'](_0xa656ef['shift']());}};_0x20e81(++_0x3d31df);}(_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 moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d8b('0x2'));var db=require(_0x0d8b('0x3'))['db'];var utils=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d8b('0x7')][_0x0d8b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){return client[_0x0d8b('0x9')](_0x39f43a,_0x413284)[_0x0d8b('0xa')](function(_0x3b027f){logger[_0x0d8b('0xb')](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));logger[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x4a4470,'request\x20sent',JSON[_0x0d8b('0x10')](_0x3b027f));if(_0x3b027f['error']){if(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x12')]===0x1f4){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x58e4e2(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x284169(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}else{logger['info'](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));_0x284169(_0x3b027f[_0x0d8b('0x14')][_0x0d8b('0x13')]);}})[_0x0d8b('0x15')](function(_0x5cd485){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x5cd485);_0x58e4e2(_0x5cd485);});});}
\ No newline at end of file
index 1c530df..5f86fa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['destroy','exports','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','isAuthenticated','get','show','/:id/preview','/:id/run','run','/:id/query','query','post','create','put','/:id','update','delete'];(function(_0x1b2422,_0x1e98d4){var _0x376573=function(_0x5db41b){while(--_0x5db41b){_0x1b2422['push'](_0x1b2422['shift']());}};_0x376573(++_0x1e98d4);}(_0x1a85,0x178));var _0x51a8=function(_0x32a884,_0x183853){_0x32a884=_0x32a884-0x0;var _0x242f9b=_0x1a85[_0x32a884];return _0x242f9b;};'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 auth=require('../../components/auth/service');var interaction=require(_0x51a8('0x3'));var config=require(_0x51a8('0x4'));var controller=require(_0x51a8('0x5'));router['get']('/',auth[_0x51a8('0x6')](),controller['index']);router[_0x51a8('0x7')]('/:id',auth[_0x51a8('0x6')](),controller[_0x51a8('0x8')]);router['get'](_0x51a8('0x9'),auth['isAuthenticated'](),controller['preview']);router[_0x51a8('0x7')](_0x51a8('0xa'),auth[_0x51a8('0x6')](),controller[_0x51a8('0xb')]);router[_0x51a8('0x7')](_0x51a8('0xc'),auth[_0x51a8('0x6')](),controller[_0x51a8('0xd')]);router[_0x51a8('0xe')]('/',auth[_0x51a8('0x6')](),controller[_0x51a8('0xf')]);router[_0x51a8('0x10')](_0x51a8('0x11'),auth[_0x51a8('0x6')](),controller[_0x51a8('0x12')]);router[_0x51a8('0x13')](_0x51a8('0x11'),auth['isAuthenticated'](),controller[_0x51a8('0x14')]);module[_0x51a8('0x15')]=router;
\ No newline at end of file
+var _0x8aad=['../../components/auth/service','./analyticCustomReport.controller','index','get','/:id','show','/:id/preview','isAuthenticated','/:id/run','run','/:id/query','query','post','create','put','update','delete','exports','multer','util','connect-timeout','Router'];(function(_0x4c5d68,_0x227713){var _0x2d4e1d=function(_0x324a63){while(--_0x324a63){_0x4c5d68['push'](_0x4c5d68['shift']());}};_0x2d4e1d(++_0x227713);}(_0x8aad,0x146));var _0xd8aa=function(_0x4cd6c4,_0x17ea1e){_0x4cd6c4=_0x4cd6c4-0x0;var _0x345ee8=_0x8aad[_0x4cd6c4];return _0x345ee8;};'use strict';var multer=require(_0xd8aa('0x0'));var util=require(_0xd8aa('0x1'));var path=require('path');var timeout=require(_0xd8aa('0x2'));var express=require('express');var router=express[_0xd8aa('0x3')]();var auth=require(_0xd8aa('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd8aa('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xd8aa('0x6')]);router[_0xd8aa('0x7')](_0xd8aa('0x8'),auth['isAuthenticated'](),controller[_0xd8aa('0x9')]);router[_0xd8aa('0x7')](_0xd8aa('0xa'),auth[_0xd8aa('0xb')](),controller['preview']);router['get'](_0xd8aa('0xc'),auth[_0xd8aa('0xb')](),controller[_0xd8aa('0xd')]);router[_0xd8aa('0x7')](_0xd8aa('0xe'),auth['isAuthenticated'](),controller[_0xd8aa('0xf')]);router[_0xd8aa('0x10')]('/',auth[_0xd8aa('0xb')](),controller[_0xd8aa('0x11')]);router[_0xd8aa('0x12')](_0xd8aa('0x8'),auth[_0xd8aa('0xb')](),controller[_0xd8aa('0x13')]);router[_0xd8aa('0x14')](_0xd8aa('0x8'),auth['isAuthenticated'](),controller['destroy']);module[_0xd8aa('0x15')]=router;
\ No newline at end of file
index 421314f..39c0a4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1a=['exports','STRING','TEXT'];(function(_0x3865d0,_0x131b08){var _0x3402ea=function(_0xfcdd43){while(--_0xfcdd43){_0x3865d0['push'](_0x3865d0['shift']());}};_0x3402ea(++_0x131b08);}(_0x1d1a,0x10e));var _0xa1d1=function(_0x108bf5,_0x211fd6){_0x108bf5=_0x108bf5-0x0;var _0x2d846d=_0x1d1a[_0x108bf5];return _0x2d846d;};'use strict';var Sequelize=require('sequelize');module[_0xa1d1('0x0')]={'name':{'type':Sequelize[_0xa1d1('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa1d1('0x1')]},'parent':{'type':Sequelize[_0xa1d1('0x1')]},'table':{'type':Sequelize[_0xa1d1('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xa1d1('0x2')]}};
\ No newline at end of file
+var _0x1b1c=['STRING','TEXT','sequelize','exports'];(function(_0x26e6d5,_0x13ceff){var _0x174341=function(_0x53b570){while(--_0x53b570){_0x26e6d5['push'](_0x26e6d5['shift']());}};_0x174341(++_0x13ceff);}(_0x1b1c,0x1a6));var _0xc1b1=function(_0x3e7a1e,_0x1589be){_0x3e7a1e=_0x3e7a1e-0x0;var _0x267c30=_0x1b1c[_0x3e7a1e];return _0x267c30;};'use strict';var Sequelize=require(_0xc1b1('0x0'));module[_0xc1b1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xc1b1('0x2')]},'parent':{'type':Sequelize[_0xc1b1('0x2')]},'table':{'type':Sequelize[_0xc1b1('0x2')]},'conditions':{'type':Sequelize[_0xc1b1('0x3')]},'joins':{'type':Sequelize[_0xc1b1('0x3')]}};
\ No newline at end of file
index 00118ec..044e4cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacb5=['include','rows','show','fields','options','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','right_join','COUNT(%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)','ROUND(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','params','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','findAll','keyBy','from','table','field','function','replace','format','groupBy','orderBy','order','joins','parse','foreignTable','%s.%s\x20=\x20%s.%s','foreignKey','conditions','clone','debug','sequelize','QueryTypes','SELECT','left_join','outer_join','cross_join','SUM(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','UNIX_TIMESTAMP(%s)','value','AnalyticMetric','select','MetricId','metric','DESC','alias','parentKey','Limited\x20Query:','toString','No\x20available\x20data','output','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','../../components/export/','../../files/reports','COUNT(*)','runReport','IS\x20NULL','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','DefaultReports','error','stack','name','send','index','AnalyticDefaultReport','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','length','nolimit','limit','sort','where','pick','add','day','filter','map','type','key','VIRTUAL','merge','includeAll'];(function(_0x11afd6,_0x11a04c){var _0x55ff19=function(_0x147438){while(--_0x147438){_0x11afd6['push'](_0x11afd6['shift']());}};_0x55ff19(++_0x11a04c);}(_0xacb5,0x1af));var _0x5acb=function(_0x39e8f5,_0xb151a6){_0x39e8f5=_0x39e8f5-0x0;var _0x346526=_0xacb5[_0x39e8f5];return _0x346526;};'use strict';var pdf=require(_0x5acb('0x0'));var emlformat=require(_0x5acb('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x5acb('0x2'));var jsonpatch=require(_0x5acb('0x3'));var rp=require(_0x5acb('0x4'));var moment=require('moment');var BPromise=require(_0x5acb('0x5'));var Mustache=require('mustache');var util=require(_0x5acb('0x6'));var path=require(_0x5acb('0x7'));var sox=require(_0x5acb('0x8'));var csv=require(_0x5acb('0x9'));var ejs=require(_0x5acb('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x5acb('0xb'));var crypto=require(_0x5acb('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5acb('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5acb('0xe'));var Papa=require(_0x5acb('0xf'));var Redis=require(_0x5acb('0x10'));var qs=require(_0x5acb('0x11'));var logger=require(_0x5acb('0x12'))(_0x5acb('0x13'));var utils=require('../../config/utils');var config=require(_0x5acb('0x14'));var db=require(_0x5acb('0x15'))['db'];function respondWithStatusCode(_0x4f6a3c,_0x161e9b){_0x161e9b=_0x161e9b||0xcc;return function(_0x4855fe){if(_0x4855fe){return _0x4f6a3c[_0x5acb('0x16')](_0x161e9b);}return _0x4f6a3c[_0x5acb('0x17')](_0x161e9b)[_0x5acb('0x18')]();};}function respondWithResult(_0x43445e,_0x1a1b75){_0x1a1b75=_0x1a1b75||0xc8;return function(_0x5d4d93){if(_0x5d4d93){return _0x43445e[_0x5acb('0x17')](_0x1a1b75)[_0x5acb('0x19')](_0x5d4d93);}};}function respondWithFilteredResult(_0x3798e3,_0x787a48){return function(_0x4c75fe){if(_0x4c75fe){var _0x2e70cb=_0x4c75fe[_0x5acb('0x1a')],_0x2f0163=_0x787a48[_0x5acb('0x1b')],_0x2b9e10=_0x787a48[_0x5acb('0x1b')]+_0x787a48['limit'],_0x1da78f;if(_0x2b9e10>=_0x2e70cb){_0x2b9e10=_0x2e70cb;_0x1da78f=0xc8;}else{_0x1da78f=0xce;}_0x3798e3[_0x5acb('0x17')](_0x1da78f);return _0x3798e3[_0x5acb('0x1c')](_0x5acb('0x1d'),_0x2f0163+'-'+_0x2b9e10+'/'+_0x2e70cb)['json'](_0x4c75fe);}return null;};}function patchUpdates(_0x50f284){return function(_0x255313){try{jsonpatch[_0x5acb('0x1e')](_0x255313,_0x50f284,!![]);}catch(_0x7f37f6){return BPromise[_0x5acb('0x1f')](_0x7f37f6);}return _0x255313['save']();};}function saveUpdates(_0x2664d1,_0x2e2493){return function(_0x362ca9){if(_0x362ca9){return _0x362ca9[_0x5acb('0x20')](_0x2664d1)[_0x5acb('0x21')](function(_0x21c263){return _0x21c263;});}return null;};}function removeEntity(_0x4a63ae,_0xf9f594){return function(_0x181dc7){if(_0x181dc7){return _0x181dc7[_0x5acb('0x22')]()[_0x5acb('0x21')](function(){var _0x387221=_0x181dc7[_0x5acb('0x23')]({'plain':!![]});var _0x54bba3=_0x5acb('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x54bba3,'resourceId':_0x387221['id']}})['then'](function(){return _0x181dc7;});})[_0x5acb('0x21')](function(){_0x4a63ae[_0x5acb('0x17')](0xcc)[_0x5acb('0x18')]();});}};}function handleEntityNotFound(_0x457e5c,_0x1a471b){return function(_0x51cd41){if(!_0x51cd41){_0x457e5c['sendStatus'](0x194);}return _0x51cd41;};}function handleError(_0x13b857,_0x394715){_0x394715=_0x394715||0x1f4;return function(_0x13c6df){logger[_0x5acb('0x25')](_0x13c6df[_0x5acb('0x26')]);if(_0x13c6df[_0x5acb('0x27')]){delete _0x13c6df[_0x5acb('0x27')];}_0x13b857[_0x5acb('0x17')](_0x394715)[_0x5acb('0x28')](_0x13c6df);};}exports[_0x5acb('0x29')]=function(_0x405831,_0x236192){var _0x1faff6={},_0x4d1885={},_0x4a597c={'count':0x0,'rows':[]};var _0x20076b=db[_0x5acb('0x2a')][_0x5acb('0x2b')];_0x4d1885['model']=_[_0x5acb('0x2c')](_0x20076b);var _0x5a7cba={'dateStart':_0x405831[_0x5acb('0x2d')][_0x5acb('0x2e')],'dateEnd':_0x405831[_0x5acb('0x2d')][_0x5acb('0x2f')]};delete _0x405831[_0x5acb('0x2d')]['dateStart'];delete _0x405831[_0x5acb('0x2d')][_0x5acb('0x2f')];_0x4d1885[_0x5acb('0x2d')]=_[_0x5acb('0x2c')](_0x405831['query']);_0x4d1885[_0x5acb('0x30')]=_[_0x5acb('0x31')](_0x4d1885[_0x5acb('0x32')],_0x4d1885[_0x5acb('0x2d')]);_0x1faff6[_0x5acb('0x33')]=_['intersection'](_0x4d1885['model'],qs['fields'](_0x405831['query']['fields']));_0x1faff6['attributes']=_0x1faff6['attributes'][_0x5acb('0x34')]?_0x1faff6['attributes']:_0x4d1885[_0x5acb('0x32')];if(!_0x405831[_0x5acb('0x2d')]['hasOwnProperty'](_0x5acb('0x35'))){_0x1faff6[_0x5acb('0x36')]=qs[_0x5acb('0x36')](_0x405831[_0x5acb('0x2d')]['limit']);_0x1faff6[_0x5acb('0x1b')]=qs[_0x5acb('0x1b')](_0x405831['query'][_0x5acb('0x1b')]);}_0x1faff6['order']=qs[_0x5acb('0x37')](_0x405831[_0x5acb('0x2d')][_0x5acb('0x37')]);_0x1faff6[_0x5acb('0x38')]=qs[_0x5acb('0x30')](_[_0x5acb('0x39')](_0x405831[_0x5acb('0x2d')],_0x4d1885['filters']));if(_0x5a7cba[_0x5acb('0x2e')]){if(_0x5a7cba['dateEnd']){_0x5a7cba['dateEnd']=moment(_0x5a7cba['dateEnd'])[_0x5acb('0x3a')](0x1,_0x5acb('0x3b'));}else{_0x5a7cba['dateEnd']=moment(_0x5a7cba['dateStart'])[_0x5acb('0x3a')](0x1,'day');}_['merge'](_0x1faff6['where'],{'createdAt':{'$gte':_0x5a7cba[_0x5acb('0x2e')],'$lte':_0x5a7cba[_0x5acb('0x2f')]}});}if(_0x405831[_0x5acb('0x2d')][_0x5acb('0x3c')]){_0x1faff6[_0x5acb('0x38')]=_['merge'](_0x1faff6[_0x5acb('0x38')],{'$or':_[_0x5acb('0x3d')](_0x20076b,function(_0x17a235){if(_0x17a235[_0x5acb('0x3e')][_0x5acb('0x3f')]!==_0x5acb('0x40')){var _0x19299d={};_0x19299d[_0x17a235['field']]={'$like':'%'+_0x405831[_0x5acb('0x2d')][_0x5acb('0x3c')]+'%'};return _0x19299d;}})});}_0x1faff6=_[_0x5acb('0x41')]({},_0x1faff6,_0x405831['options']);var _0x1a5078={'where':_0x1faff6[_0x5acb('0x38')]};return db[_0x5acb('0x2a')][_0x5acb('0x1a')](_0x1a5078)[_0x5acb('0x21')](function(_0x3eec61){_0x4a597c[_0x5acb('0x1a')]=_0x3eec61;if(_0x405831['query'][_0x5acb('0x42')]){_0x1faff6[_0x5acb('0x43')]=[{'all':!![]}];}return db[_0x5acb('0x2a')]['findAll'](_0x1faff6);})['then'](function(_0x31994c){_0x4a597c[_0x5acb('0x44')]=_0x31994c;return _0x4a597c;})['then'](respondWithFilteredResult(_0x236192,_0x1faff6))['catch'](handleError(_0x236192,null));};exports[_0x5acb('0x45')]=function(_0x516224,_0x4e57b8){var _0x3d9e87={'raw':!![],'where':{'id':_0x516224['params']['id']}},_0x1a557d={};_0x1a557d[_0x5acb('0x32')]=_[_0x5acb('0x2c')](db[_0x5acb('0x2a')][_0x5acb('0x2b')]);_0x1a557d[_0x5acb('0x2d')]=_[_0x5acb('0x2c')](_0x516224[_0x5acb('0x2d')]);_0x1a557d[_0x5acb('0x30')]=_[_0x5acb('0x31')](_0x1a557d['model'],_0x1a557d['query']);_0x3d9e87[_0x5acb('0x33')]=_[_0x5acb('0x31')](_0x1a557d[_0x5acb('0x32')],qs[_0x5acb('0x46')](_0x516224[_0x5acb('0x2d')][_0x5acb('0x46')]));_0x3d9e87['attributes']=_0x3d9e87[_0x5acb('0x33')][_0x5acb('0x34')]?_0x3d9e87[_0x5acb('0x33')]:_0x1a557d[_0x5acb('0x32')];if(_0x516224[_0x5acb('0x2d')]['includeAll']){_0x3d9e87['include']=[{'all':!![]}];}_0x3d9e87=_[_0x5acb('0x41')]({},_0x3d9e87,_0x516224[_0x5acb('0x47')]);return db[_0x5acb('0x2a')][_0x5acb('0x48')](_0x3d9e87)['then'](handleEntityNotFound(_0x4e57b8,null))[_0x5acb('0x21')](respondWithResult(_0x4e57b8,null))[_0x5acb('0x49')](handleError(_0x4e57b8,null));};exports[_0x5acb('0x4a')]=function(_0x117593,_0x143c72){return db[_0x5acb('0x2a')][_0x5acb('0x4a')](_0x117593[_0x5acb('0x4b')],{})[_0x5acb('0x21')](function(_0x2daf7e){var _0x365162=_0x117593['user'][_0x5acb('0x23')]({'plain':!![]});if(!_0x365162)throw new Error(_0x5acb('0x4c'));if(_0x365162[_0x5acb('0x4d')]==='user'){var _0x4e10bc=_0x2daf7e[_0x5acb('0x23')]({'plain':!![]});var _0x3c0963=_0x5acb('0x4e');return db['UserProfileSection'][_0x5acb('0x48')]({'where':{'name':_0x3c0963,'userProfileId':_0x365162[_0x5acb('0x4f')]},'raw':!![]})[_0x5acb('0x21')](function(_0x158222){if(_0x158222&&_0x158222['autoAssociation']===0x0){return db[_0x5acb('0x50')][_0x5acb('0x4a')]({'name':_0x4e10bc[_0x5acb('0x27')],'resourceId':_0x4e10bc['id'],'type':_0x5acb('0x24'),'sectionId':_0x158222['id']},{})[_0x5acb('0x21')](function(){return _0x2daf7e;});}else{return _0x2daf7e;}})['catch'](function(_0x161ed2){logger[_0x5acb('0x25')](_0x5acb('0x51'),_0x161ed2);throw _0x161ed2;});}return _0x2daf7e;})[_0x5acb('0x21')](respondWithResult(_0x143c72,0xc9))[_0x5acb('0x49')](handleError(_0x143c72,null));};exports['update']=function(_0x5ea584,_0x53ae03){if(_0x5ea584[_0x5acb('0x4b')]['id']){delete _0x5ea584[_0x5acb('0x4b')]['id'];}return db[_0x5acb('0x2a')][_0x5acb('0x48')]({'where':{'id':_0x5ea584['params']['id']}})[_0x5acb('0x21')](handleEntityNotFound(_0x53ae03,null))[_0x5acb('0x21')](saveUpdates(_0x5ea584['body'],null))[_0x5acb('0x21')](respondWithResult(_0x53ae03,null))[_0x5acb('0x49')](handleError(_0x53ae03,null));};exports[_0x5acb('0x22')]=function(_0x509aa2,_0x97faa7){return db[_0x5acb('0x2a')][_0x5acb('0x48')]({'where':{'id':_0x509aa2['params']['id']}})[_0x5acb('0x21')](handleEntityNotFound(_0x97faa7,null))['then'](removeEntity(_0x97faa7,null))[_0x5acb('0x49')](handleError(_0x97faa7,null));};exports['preview']=function(_0x171442,_0x497669){var _0x4889b8=0xa;var _0x370f5e=[_0x5acb('0x52'),'left_join',_0x5acb('0x53'),'outer_join','cross_join'];var _0x540724={'SUM':'SUM(%s)','COUNT':_0x5acb('0x54'),'COUNT DISTINCT':_0x5acb('0x55'),'MAX':_0x5acb('0x56'),'MIN':_0x5acb('0x57'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x5acb('0x58'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x5acb('0x59')};var _0x37641e={'SEC_TO_TIME':_0x5acb('0x5a'),'DATE':_0x5acb('0x5b'),'HOUR':_0x5acb('0x5c'),'ROUND':_0x5acb('0x5d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x384442=function(_0x4e85bb){return!_[_0x5acb('0x5e')](['IS\x20NULL',_0x5acb('0x5f'),_0x5acb('0x60'),_0x5acb('0x61')],_0x4e85bb);};var _0x10c15b=function(_0x53b0c0){if(!_0x53b0c0||!_0x53b0c0['rules']['length']){return'';}for(var _0x1d47f5='(',_0x201d17=0x0;_0x201d17<_0x53b0c0[_0x5acb('0x62')][_0x5acb('0x34')];_0x201d17+=0x1){_0x201d17>0x0&&(_0x1d47f5+='\x20'+_0x53b0c0[_0x5acb('0x63')]+'\x20');_0x1d47f5+=_0x53b0c0['rules'][_0x201d17]['group']?_0x10c15b(_0x53b0c0['rules'][_0x201d17][_0x5acb('0x64')]):_0x53b0c0[_0x5acb('0x62')][_0x201d17]['field']+'\x20'+_0x53b0c0[_0x5acb('0x62')][_0x201d17][_0x5acb('0x65')]+(_0x384442(_0x53b0c0[_0x5acb('0x62')][_0x201d17][_0x5acb('0x65')])?'\x20'+_0x53b0c0[_0x5acb('0x62')][_0x201d17]['value']:'');}return _0x1d47f5+')';};var _0x24d1fd={'where':{'id':_0x171442[_0x5acb('0x66')]['id']}},_0x215a03,_0x3cb7a0,_0x41a882,_0x1dcb0d,_0x2037df;_0x24d1fd=_['merge']({},_0x24d1fd,_0x171442[_0x5acb('0x47')]);return db[_0x5acb('0x2a')][_0x5acb('0x48')](_0x24d1fd)[_0x5acb('0x21')](function(_0x356b0b){if(_0x356b0b){_0x215a03=_0x356b0b;return _0x356b0b[_0x5acb('0x67')]();}return null;})[_0x5acb('0x21')](function(_0xfca71c){if(_0xfca71c){if(!_0xfca71c[_0x5acb('0x34')]){throw new db[(_0x5acb('0x68'))][(_0x5acb('0x69'))](_0x5acb('0x6a'),0x193);}_0x3cb7a0=_0xfca71c;return db['AnalyticMetric'][_0x5acb('0x6b')]({'raw':!![]});}return null;})[_0x5acb('0x21')](function(_0x576905){if(_0x576905){_0x41a882=_[_0x5acb('0x6c')](_0x576905,'id');var _0x5a3a94;var _0xadad24=squel['select']();_0xadad24[_0x5acb('0x6d')](_0x215a03[_0x5acb('0x6e')]);for(var _0x565c51=0x0;_0x565c51<_0x3cb7a0[_0x5acb('0x34')];_0x565c51+=0x1){_0x5a3a94=_0x3cb7a0[_0x565c51]['MetricId']?_0x41a882[_0x3cb7a0[_0x565c51]['MetricId']]['metric']:_0x3cb7a0[_0x565c51][_0x5acb('0x6f')];_0x5a3a94=_0x3cb7a0[_0x565c51][_0x5acb('0x70')]?_[_0x5acb('0x71')](_0x540724[_0x3cb7a0[_0x565c51]['function']],'%s',_0x5a3a94):_0x5a3a94;_0x5a3a94=_0x3cb7a0[_0x565c51][_0x5acb('0x72')]?_[_0x5acb('0x71')](_0x37641e[_0x3cb7a0[_0x565c51]['format']],'%s',_0x5a3a94):_0x5a3a94;if(_0x3cb7a0[_0x565c51][_0x5acb('0x73')]){_0xadad24[_0x5acb('0x64')](_0x5a3a94);}_0x3cb7a0[_0x565c51][_0x5acb('0x74')]&&_0xadad24[_0x5acb('0x75')](_0x5a3a94,_0x3cb7a0[_0x565c51][_0x5acb('0x74')]==='DESC'?![]:!![]);_0xadad24[_0x5acb('0x6f')](_0x5a3a94,_0x3cb7a0[_0x565c51]['alias']||_0x5a3a94);}if(_0x215a03[_0x5acb('0x76')]){_0x215a03[_0x5acb('0x76')]=JSON[_0x5acb('0x77')](_0x215a03[_0x5acb('0x76')]);for(var _0x29b656=0x0;_0x29b656<_0x215a03[_0x5acb('0x76')][_0x5acb('0x34')];_0x29b656+=0x1){if(_0x215a03[_0x5acb('0x76')][_0x29b656][_0x5acb('0x3e')]&&_[_0x5acb('0x5e')](_0x370f5e,_0x215a03[_0x5acb('0x76')][_0x29b656][_0x5acb('0x3e')])&&_0x215a03[_0x5acb('0x76')][_0x29b656]['parentKey']&&_0x215a03[_0x5acb('0x76')][_0x29b656][_0x5acb('0x78')]&&_0x215a03[_0x5acb('0x76')][_0x29b656]['foreignKey']){_0xadad24[_0x215a03['joins'][_0x29b656][_0x5acb('0x3e')]](_0x215a03[_0x5acb('0x76')][_0x29b656][_0x5acb('0x78')],null,util['format'](_0x5acb('0x79'),_0x215a03[_0x5acb('0x6e')],_0x215a03[_0x5acb('0x76')][_0x29b656]['parentKey'],_0x215a03['joins'][_0x29b656][_0x5acb('0x78')],_0x215a03['joins'][_0x29b656][_0x5acb('0x7a')]));}}}if(_0x215a03[_0x5acb('0x7b')]){_0x215a03[_0x5acb('0x7b')]=JSON[_0x5acb('0x77')](_0x215a03['conditions']);_0xadad24[_0x5acb('0x38')](_0x10c15b(_0x215a03[_0x5acb('0x7b')][_0x5acb('0x64')]));}_0x2037df=_0xadad24[_0x5acb('0x7c')]();_0xadad24[_0x5acb('0x36')](_0x4889b8);_0xadad24['offset'](0x0);logger[_0x5acb('0x7d')]('Limited\x20Query:',_0xadad24['toString']());return db[_0x5acb('0x7e')][_0x5acb('0x2d')](_0xadad24['toString'](),{'type':db['sequelize'][_0x5acb('0x7f')][_0x5acb('0x80')]});}})['then'](respondWithResult(_0x497669,null))['catch'](handleError(_0x497669,null));};function runReport(_0x3e9972,_0x21149f,_0xd6df54){var _0xcdb5d2=_0x21149f[_0x5acb('0x27')];var _0x51e742=0xa;var _0x282fd2=[_0x5acb('0x52'),_0x5acb('0x81'),_0x5acb('0x53'),_0x5acb('0x82'),_0x5acb('0x83')];var _0x4757ac={'SUM':_0x5acb('0x84'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x5acb('0x55'),'MAX':'MAX(%s)','MIN':_0x5acb('0x57'),'AVG':_0x5acb('0x85'),'GROUP_CONCAT':_0x5acb('0x58'),'GROUP_CONCAT ASC':_0x5acb('0x86'),'GROUP_CONCAT DESC':_0x5acb('0x59')};var _0x4f840f={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x5acb('0x5c'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x5acb('0x87')};var _0x5f37a4=function(_0x3daa69){return!_[_0x5acb('0x5e')](['IS\x20NULL',_0x5acb('0x5f'),_0x5acb('0x60'),_0x5acb('0x61')],_0x3daa69);};var _0x4d760=function(_0x24db8c){if(!_0x24db8c||!_0x24db8c[_0x5acb('0x62')][_0x5acb('0x34')]){return'';}for(var _0x10a392='(',_0x59f1eb=0x0;_0x59f1eb<_0x24db8c[_0x5acb('0x62')][_0x5acb('0x34')];_0x59f1eb+=0x1){_0x59f1eb>0x0&&(_0x10a392+='\x20'+_0x24db8c[_0x5acb('0x63')]+'\x20');_0x10a392+=_0x24db8c[_0x5acb('0x62')][_0x59f1eb][_0x5acb('0x64')]?_0x4d760(_0x24db8c[_0x5acb('0x62')][_0x59f1eb]['group']):_0x24db8c[_0x5acb('0x62')][_0x59f1eb]['field']+'\x20'+_0x24db8c[_0x5acb('0x62')][_0x59f1eb]['condition']+(_0x5f37a4(_0x24db8c['rules'][_0x59f1eb][_0x5acb('0x65')])?'\x20'+_0x24db8c[_0x5acb('0x62')][_0x59f1eb][_0x5acb('0x88')]:'');}return _0x10a392+')';};var _0x280e9e={'where':{'id':_0x3e9972['id']}},_0x5613d9,_0x28590d,_0x58d824,_0x158d2f,_0x3ae109;_0x280e9e=_[_0x5acb('0x41')]({},_0x280e9e,_0xd6df54);return db[_0x5acb('0x2a')][_0x5acb('0x48')](_0x280e9e)[_0x5acb('0x21')](function(_0x3ac2e3){if(_0x3ac2e3){_0x5613d9=_0x3ac2e3;return _0x3ac2e3[_0x5acb('0x67')]();}return null;})[_0x5acb('0x21')](function(_0x104e69){if(_0x104e69){if(!_0x104e69[_0x5acb('0x34')]){throw new db['Sequelize'][(_0x5acb('0x69'))](_0x5acb('0x6a'),0x193);}_0x28590d=_0x104e69;return db[_0x5acb('0x89')][_0x5acb('0x6b')]({'raw':!![]});}return null;})[_0x5acb('0x21')](function(_0x2e391f){if(_0x2e391f){_0x58d824=_[_0x5acb('0x6c')](_0x2e391f,'id');var _0x44d70d;var _0x2e936c=squel[_0x5acb('0x8a')]();_0x2e936c[_0x5acb('0x6d')](_0x5613d9[_0x5acb('0x6e')]);for(var _0x377ade=0x0;_0x377ade<_0x28590d[_0x5acb('0x34')];_0x377ade+=0x1){_0x44d70d=_0x28590d[_0x377ade][_0x5acb('0x8b')]?_0x58d824[_0x28590d[_0x377ade][_0x5acb('0x8b')]][_0x5acb('0x8c')]:_0x28590d[_0x377ade][_0x5acb('0x6f')];_0x44d70d=_0x28590d[_0x377ade]['function']?_[_0x5acb('0x71')](_0x4757ac[_0x28590d[_0x377ade][_0x5acb('0x70')]],'%s',_0x44d70d):_0x44d70d;_0x44d70d=_0x28590d[_0x377ade][_0x5acb('0x72')]?_[_0x5acb('0x71')](_0x4f840f[_0x28590d[_0x377ade][_0x5acb('0x72')]],'%s',_0x44d70d):_0x44d70d;if(_0x28590d[_0x377ade][_0x5acb('0x73')]){_0x2e936c[_0x5acb('0x64')](_0x44d70d);}_0x28590d[_0x377ade]['orderBy']&&_0x2e936c[_0x5acb('0x75')](_0x44d70d,_0x28590d[_0x377ade][_0x5acb('0x74')]===_0x5acb('0x8d')?![]:!![]);_0x2e936c[_0x5acb('0x6f')](_0x44d70d,_0x28590d[_0x377ade][_0x5acb('0x8e')]||_0x44d70d);}if(_0x5613d9[_0x5acb('0x76')]){_0x5613d9['joins']=JSON[_0x5acb('0x77')](_0x5613d9[_0x5acb('0x76')]);for(var _0x3896f1=0x0;_0x3896f1<_0x5613d9['joins'][_0x5acb('0x34')];_0x3896f1+=0x1){if(_0x5613d9[_0x5acb('0x76')][_0x3896f1][_0x5acb('0x3e')]&&_[_0x5acb('0x5e')](_0x282fd2,_0x5613d9[_0x5acb('0x76')][_0x3896f1][_0x5acb('0x3e')])&&_0x5613d9[_0x5acb('0x76')][_0x3896f1][_0x5acb('0x8f')]&&_0x5613d9[_0x5acb('0x76')][_0x3896f1][_0x5acb('0x78')]&&_0x5613d9[_0x5acb('0x76')][_0x3896f1][_0x5acb('0x7a')]){_0x2e936c[_0x5613d9[_0x5acb('0x76')][_0x3896f1]['type']](_0x5613d9[_0x5acb('0x76')][_0x3896f1][_0x5acb('0x78')],null,util[_0x5acb('0x72')]('%s.%s\x20=\x20%s.%s',_0x5613d9[_0x5acb('0x6e')],_0x5613d9[_0x5acb('0x76')][_0x3896f1]['parentKey'],_0x5613d9[_0x5acb('0x76')][_0x3896f1][_0x5acb('0x78')],_0x5613d9[_0x5acb('0x76')][_0x3896f1][_0x5acb('0x7a')]));}}}if(_0x5613d9[_0x5acb('0x7b')]){_0x5613d9[_0x5acb('0x7b')]=JSON[_0x5acb('0x77')](_0x5613d9[_0x5acb('0x7b')]);_0x2e936c[_0x5acb('0x38')](_0x4d760(_0x5613d9[_0x5acb('0x7b')][_0x5acb('0x64')]));}_0x3ae109=_0x2e936c[_0x5acb('0x7c')]();_0x2e936c[_0x5acb('0x36')](_0x51e742);_0x2e936c['offset'](0x0);logger[_0x5acb('0x7d')](_0x5acb('0x90'),_0x2e936c[_0x5acb('0x91')]());return db['sequelize']['query'](_0x2e936c[_0x5acb('0x91')](),{'type':db['sequelize'][_0x5acb('0x7f')]['SELECT']});}})[_0x5acb('0x21')](function(_0x27f4a2){if(!_0x27f4a2['length']){throw new db[(_0x5acb('0x68'))]['ValidationErrorItem'](_0x5acb('0x92'),0xcc);}if(_0x21149f[_0x5acb('0x93')]==='web'){return null;}var _0x1f4608=_[_0x5acb('0x41')](_0x21149f,{'name':_0x21149f[_0x5acb('0x94')]||_0x21149f[_0x5acb('0x27')]||_0x5613d9[_0x5acb('0x27')],'basename':_0xcdb5d2,'savename':util['format'](_0x5acb('0x95'),_0x21149f[_0x5acb('0x27')]||_0x5613d9[_0x5acb('0x27')],require(_0x5acb('0x96'))[_0x5acb('0x97')](0x4),_0x21149f[_0x5acb('0x93')]||'csv'),'reportId':_0x5613d9['id'],'reportType':_0x5acb('0x98')});return db[_0x5acb('0x99')][_0x5acb('0x4a')](_0x1f4608,{'raw':!![]});})[_0x5acb('0x21')](function(_0x2060d6){if(_0x5613d9[_0x5acb('0x6e')]===_0x5acb('0x9a')){_0x3ae109[_0x5acb('0x38')](_0x5613d9['table']+_0x5acb('0x9b'),_0x21149f[_0x5acb('0x9c')],_0x21149f[_0x5acb('0x9d')]);}else{_0x3ae109[_0x5acb('0x38')](_0x5613d9['table']+_0x5acb('0x9e'),_0x21149f['startDate'],_0x21149f['endDate']);}if(_0x2060d6){logger[_0x5acb('0x9f')](_0x5acb('0xa0'),_0x3ae109[_0x5acb('0x91')]());require('child_process')['fork'](path[_0x5acb('0x52')](__dirname,_0x5acb('0xa1'),_0x2060d6[_0x5acb('0x93')]),[_0x2060d6['id'],_0x3ae109['toString'](),path[_0x5acb('0x52')](__dirname,_0x5acb('0xa2'),_0x2060d6['savename']),_0xcdb5d2]);return _0x2060d6;}else{var _0x597a68=squel['select']();_0x597a68[_0x5acb('0x6d')]('('+_0x3ae109[_0x5acb('0x91')]()+')','countTable');_0x597a68[_0x5acb('0x6f')](_0x5acb('0xa3'),'count');_0x3ae109[_0x5acb('0x36')](_0x21149f[_0x5acb('0x36')]||_0x51e742);_0x3ae109[_0x5acb('0x1b')](_0x21149f[_0x5acb('0x1b')]||0x0);return db['sequelize'][_0x5acb('0x2d')](_0x597a68[_0x5acb('0x91')](),{'type':db['sequelize'][_0x5acb('0x7f')][_0x5acb('0x80')]})[_0x5acb('0x21')](function(_0x538f3a){if(!_0x538f3a[_0x5acb('0x34')]){_0x158d2f=0x0;}else{_0x158d2f=_0x538f3a[0x0][_0x5acb('0x1a')]||0x0;}return db[_0x5acb('0x7e')][_0x5acb('0x2d')](_0x3ae109[_0x5acb('0x91')](),{'type':db['sequelize'][_0x5acb('0x7f')]['SELECT']});})[_0x5acb('0x21')](function(_0x4e95a7){return{'rows':_0x4e95a7||[],'count':_0x158d2f};});}});}exports['run']=function(_0x5a6ce7,_0x57b28a){return runReport(_0x5a6ce7['params'],_0x5a6ce7[_0x5acb('0x2d')],_0x5a6ce7[_0x5acb('0x47')])[_0x5acb('0x21')](respondWithResult(_0x57b28a,null))['catch'](handleError(_0x57b28a,null));};exports[_0x5acb('0xa4')]=runReport;exports['query']=function(_0x541324,_0x3eddb3){var _0x3cd504=0xa;var _0x1954e9=[_0x5acb('0x52'),_0x5acb('0x81'),_0x5acb('0x53'),_0x5acb('0x82'),'cross_join'];var _0x23a1ae={'SUM':_0x5acb('0x84'),'COUNT':_0x5acb('0x54'),'COUNT DISTINCT':_0x5acb('0x55'),'MAX':_0x5acb('0x56'),'MIN':'MIN(%s)','AVG':_0x5acb('0x85'),'GROUP_CONCAT':_0x5acb('0x58'),'GROUP_CONCAT ASC':_0x5acb('0x86'),'GROUP_CONCAT DESC':_0x5acb('0x59')};var _0x405fa4={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x5acb('0x5c'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x5acb('0x87')};var _0x860a9b=function(_0x5d459c){return!_['includes']([_0x5acb('0xa5'),_0x5acb('0x5f'),_0x5acb('0x60'),'IS\x20NOT\x20EMPTY'],_0x5d459c);};var _0x5708a8=function(_0x3825c3){if(!_0x3825c3||!_0x3825c3[_0x5acb('0x62')]['length']){return'';}for(var _0x4bc1a3='(',_0x4d0a85=0x0;_0x4d0a85<_0x3825c3['rules'][_0x5acb('0x34')];_0x4d0a85+=0x1){_0x4d0a85>0x0&&(_0x4bc1a3+='\x20'+_0x3825c3[_0x5acb('0x63')]+'\x20');_0x4bc1a3+=_0x3825c3[_0x5acb('0x62')][_0x4d0a85][_0x5acb('0x64')]?_0x5708a8(_0x3825c3[_0x5acb('0x62')][_0x4d0a85][_0x5acb('0x64')]):_0x3825c3[_0x5acb('0x62')][_0x4d0a85][_0x5acb('0x6f')]+'\x20'+_0x3825c3[_0x5acb('0x62')][_0x4d0a85][_0x5acb('0x65')]+(_0x860a9b(_0x3825c3[_0x5acb('0x62')][_0x4d0a85]['condition'])?'\x20'+_0x3825c3['rules'][_0x4d0a85][_0x5acb('0x88')]:'');}return _0x4bc1a3+')';};var _0x209e21={'where':{'id':_0x541324[_0x5acb('0x66')]['id']}},_0x124cd2,_0xb92b4a,_0x3dc46f,_0x1bd3c3,_0x26bbb0;_0x209e21=_['merge']({},_0x209e21,_0x541324[_0x5acb('0x47')]);return db[_0x5acb('0x2a')][_0x5acb('0x48')](_0x209e21)[_0x5acb('0x21')](function(_0x3c7b0c){if(_0x3c7b0c){_0x124cd2=_0x3c7b0c;return _0x3c7b0c[_0x5acb('0x67')]();}return null;})[_0x5acb('0x21')](function(_0x4ceb51){if(_0x4ceb51){if(!_0x4ceb51[_0x5acb('0x34')]){throw new db[(_0x5acb('0x68'))][(_0x5acb('0x69'))](_0x5acb('0x6a'),0x193);}_0xb92b4a=_0x4ceb51;return db[_0x5acb('0x89')][_0x5acb('0x6b')]({'raw':!![]});}return null;})[_0x5acb('0x21')](function(_0x41ec5e){if(_0x41ec5e){_0x3dc46f=_[_0x5acb('0x6c')](_0x41ec5e,'id');var _0x1dedc8;var _0x26d4b1=squel['select']();_0x26d4b1['from'](_0x124cd2[_0x5acb('0x6e')]);for(var _0x4c515a=0x0;_0x4c515a<_0xb92b4a[_0x5acb('0x34')];_0x4c515a+=0x1){_0x1dedc8=_0xb92b4a[_0x4c515a][_0x5acb('0x8b')]?_0x3dc46f[_0xb92b4a[_0x4c515a][_0x5acb('0x8b')]][_0x5acb('0x8c')]:_0xb92b4a[_0x4c515a]['field'];_0x1dedc8=_0xb92b4a[_0x4c515a][_0x5acb('0x70')]?_[_0x5acb('0x71')](_0x23a1ae[_0xb92b4a[_0x4c515a][_0x5acb('0x70')]],'%s',_0x1dedc8):_0x1dedc8;_0x1dedc8=_0xb92b4a[_0x4c515a][_0x5acb('0x72')]?_[_0x5acb('0x71')](_0x405fa4[_0xb92b4a[_0x4c515a][_0x5acb('0x72')]],'%s',_0x1dedc8):_0x1dedc8;if(_0xb92b4a[_0x4c515a][_0x5acb('0x73')]){_0x26d4b1[_0x5acb('0x64')](_0x1dedc8);}_0xb92b4a[_0x4c515a][_0x5acb('0x74')]&&_0x26d4b1[_0x5acb('0x75')](_0x1dedc8,_0xb92b4a[_0x4c515a]['orderBy']===_0x5acb('0x8d')?![]:!![]);_0x26d4b1['field'](_0x1dedc8,_0xb92b4a[_0x4c515a][_0x5acb('0x8e')]||_0x1dedc8);}if(_0x124cd2[_0x5acb('0x76')]){_0x124cd2['joins']=JSON[_0x5acb('0x77')](_0x124cd2[_0x5acb('0x76')]);for(var _0x274945=0x0;_0x274945<_0x124cd2[_0x5acb('0x76')][_0x5acb('0x34')];_0x274945+=0x1){if(_0x124cd2['joins'][_0x274945][_0x5acb('0x3e')]&&_[_0x5acb('0x5e')](_0x1954e9,_0x124cd2[_0x5acb('0x76')][_0x274945][_0x5acb('0x3e')])&&_0x124cd2[_0x5acb('0x76')][_0x274945][_0x5acb('0x8f')]&&_0x124cd2[_0x5acb('0x76')][_0x274945]['foreignTable']&&_0x124cd2[_0x5acb('0x76')][_0x274945][_0x5acb('0x7a')]){_0x26d4b1[_0x124cd2['joins'][_0x274945][_0x5acb('0x3e')]](_0x124cd2['joins'][_0x274945][_0x5acb('0x78')],null,util[_0x5acb('0x72')](_0x5acb('0x79'),_0x124cd2[_0x5acb('0x6e')],_0x124cd2[_0x5acb('0x76')][_0x274945][_0x5acb('0x8f')],_0x124cd2[_0x5acb('0x76')][_0x274945]['foreignTable'],_0x124cd2['joins'][_0x274945][_0x5acb('0x7a')]));}}}if(_0x124cd2[_0x5acb('0x7b')]){_0x124cd2[_0x5acb('0x7b')]=JSON['parse'](_0x124cd2[_0x5acb('0x7b')]);_0x26d4b1[_0x5acb('0x38')](_0x5708a8(_0x124cd2[_0x5acb('0x7b')][_0x5acb('0x64')]));}_0x26bbb0=_0x26d4b1['clone']();_0x26d4b1['limit'](_0x3cd504);_0x26d4b1[_0x5acb('0x1b')](0x0);logger[_0x5acb('0x7d')]('Limited\x20Query:',_0x26d4b1[_0x5acb('0x91')]());return db[_0x5acb('0x7e')][_0x5acb('0x2d')](_0x26d4b1[_0x5acb('0x91')](),{'type':db[_0x5acb('0x7e')][_0x5acb('0x7f')][_0x5acb('0x80')]});}})[_0x5acb('0x21')](function(){return{'sql':_0x26bbb0['toString']()};})[_0x5acb('0x21')](respondWithResult(_0x3eddb3,null))['catch'](handleError(_0x3eddb3,null));};
\ No newline at end of file
+var _0x6cf8=['GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','select','from','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','table','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','outer_join','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','IS\x20NULL','QueryTypes','SELECT','No\x20available\x20data','output','web','fullPath','%s-%s.%s','randomstring','generate','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','runReport','SEC_TO_TIME(%s)','AnalyticMetric','alias','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../mysqldb','status','end','json','count','offset','limit','reject','update','then','get','DefaultReports','UserProfileResource','destroy','stack','send','index','AnalyticDefaultReport','rawAttributes','model','query','dateStart','dateEnd','keys','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filters','day','add','merge','filter','map','type','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','role','Reports','UserProfileSection','userProfileId','autoAssociation','name','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','AVG(%s)'];(function(_0x1a3cc7,_0x2900e3){var _0x338438=function(_0x5a4872){while(--_0x5a4872){_0x1a3cc7['push'](_0x1a3cc7['shift']());}};_0x338438(++_0x2900e3);}(_0x6cf8,0xf0));var _0x86cf=function(_0x5297a3,_0x49b863){_0x5297a3=_0x5297a3-0x0;var _0x21b181=_0x6cf8[_0x5297a3];return _0x21b181;};'use strict';var pdf=require(_0x86cf('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x86cf('0x1'));var zipdir=require(_0x86cf('0x2'));var jsonpatch=require(_0x86cf('0x3'));var rp=require(_0x86cf('0x4'));var moment=require(_0x86cf('0x5'));var BPromise=require(_0x86cf('0x6'));var Mustache=require(_0x86cf('0x7'));var util=require(_0x86cf('0x8'));var path=require(_0x86cf('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x86cf('0xa'));var fs=require('fs');var _=require(_0x86cf('0xb'));var squel=require('squel');var crypto=require(_0x86cf('0xc'));var jsforce=require(_0x86cf('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x86cf('0xe'));var querystring=require(_0x86cf('0xf'));var Papa=require(_0x86cf('0x10'));var Redis=require(_0x86cf('0x11'));var qs=require('../../components/parsers/qs');var logger=require(_0x86cf('0x12'))(_0x86cf('0x13'));var utils=require(_0x86cf('0x14'));var config=require('../../config/environment');var db=require(_0x86cf('0x15'))['db'];function respondWithStatusCode(_0x59caa9,_0x2a74ea){_0x2a74ea=_0x2a74ea||0xcc;return function(_0x1eee29){if(_0x1eee29){return _0x59caa9['sendStatus'](_0x2a74ea);}return _0x59caa9[_0x86cf('0x16')](_0x2a74ea)[_0x86cf('0x17')]();};}function respondWithResult(_0x376a4b,_0x20c594){_0x20c594=_0x20c594||0xc8;return function(_0x489192){if(_0x489192){return _0x376a4b['status'](_0x20c594)[_0x86cf('0x18')](_0x489192);}};}function respondWithFilteredResult(_0x3a1ce6,_0x413d78){return function(_0x1e4716){if(_0x1e4716){var _0x52d01d=_0x1e4716[_0x86cf('0x19')],_0x2258a0=_0x413d78[_0x86cf('0x1a')],_0x4e5451=_0x413d78[_0x86cf('0x1a')]+_0x413d78[_0x86cf('0x1b')],_0x16e3e8;if(_0x4e5451>=_0x52d01d){_0x4e5451=_0x52d01d;_0x16e3e8=0xc8;}else{_0x16e3e8=0xce;}_0x3a1ce6['status'](_0x16e3e8);return _0x3a1ce6['set']('Content-Range',_0x2258a0+'-'+_0x4e5451+'/'+_0x52d01d)[_0x86cf('0x18')](_0x1e4716);}return null;};}function patchUpdates(_0x3bf0d4){return function(_0x35ba7b){try{jsonpatch['apply'](_0x35ba7b,_0x3bf0d4,!![]);}catch(_0x95db4e){return BPromise[_0x86cf('0x1c')](_0x95db4e);}return _0x35ba7b['save']();};}function saveUpdates(_0x451b04,_0x128f09){return function(_0x4f5700){if(_0x4f5700){return _0x4f5700[_0x86cf('0x1d')](_0x451b04)['then'](function(_0x3cee7d){return _0x3cee7d;});}return null;};}function removeEntity(_0x41e99c,_0x44a8b8){return function(_0xcc4a54){if(_0xcc4a54){return _0xcc4a54['destroy']()[_0x86cf('0x1e')](function(){var _0x98fe28=_0xcc4a54[_0x86cf('0x1f')]({'plain':!![]});var _0xf66ce6=_0x86cf('0x20');return db[_0x86cf('0x21')][_0x86cf('0x22')]({'where':{'type':_0xf66ce6,'resourceId':_0x98fe28['id']}})['then'](function(){return _0xcc4a54;});})[_0x86cf('0x1e')](function(){_0x41e99c['status'](0xcc)[_0x86cf('0x17')]();});}};}function handleEntityNotFound(_0x4f11d0,_0x4a6314){return function(_0x489c1b){if(!_0x489c1b){_0x4f11d0['sendStatus'](0x194);}return _0x489c1b;};}function handleError(_0x261077,_0x41c294){_0x41c294=_0x41c294||0x1f4;return function(_0x480430){logger['error'](_0x480430[_0x86cf('0x23')]);if(_0x480430['name']){delete _0x480430['name'];}_0x261077[_0x86cf('0x16')](_0x41c294)[_0x86cf('0x24')](_0x480430);};}exports[_0x86cf('0x25')]=function(_0x575476,_0x15088c){var _0x38831c={},_0x535dd4={},_0x513eb9={'count':0x0,'rows':[]};var _0x2635ae=db[_0x86cf('0x26')][_0x86cf('0x27')];_0x535dd4[_0x86cf('0x28')]=_['keys'](_0x2635ae);var _0x3c96a6={'dateStart':_0x575476[_0x86cf('0x29')][_0x86cf('0x2a')],'dateEnd':_0x575476['query'][_0x86cf('0x2b')]};delete _0x575476['query']['dateStart'];delete _0x575476[_0x86cf('0x29')][_0x86cf('0x2b')];_0x535dd4['query']=_[_0x86cf('0x2c')](_0x575476['query']);_0x535dd4['filters']=_['intersection'](_0x535dd4[_0x86cf('0x28')],_0x535dd4[_0x86cf('0x29')]);_0x38831c[_0x86cf('0x2d')]=_[_0x86cf('0x2e')](_0x535dd4[_0x86cf('0x28')],qs[_0x86cf('0x2f')](_0x575476[_0x86cf('0x29')]['fields']));_0x38831c[_0x86cf('0x2d')]=_0x38831c[_0x86cf('0x2d')][_0x86cf('0x30')]?_0x38831c[_0x86cf('0x2d')]:_0x535dd4[_0x86cf('0x28')];if(!_0x575476[_0x86cf('0x29')]['hasOwnProperty'](_0x86cf('0x31'))){_0x38831c[_0x86cf('0x1b')]=qs[_0x86cf('0x1b')](_0x575476[_0x86cf('0x29')][_0x86cf('0x1b')]);_0x38831c[_0x86cf('0x1a')]=qs[_0x86cf('0x1a')](_0x575476[_0x86cf('0x29')][_0x86cf('0x1a')]);}_0x38831c[_0x86cf('0x32')]=qs[_0x86cf('0x33')](_0x575476[_0x86cf('0x29')][_0x86cf('0x33')]);_0x38831c[_0x86cf('0x34')]=qs['filters'](_[_0x86cf('0x35')](_0x575476[_0x86cf('0x29')],_0x535dd4[_0x86cf('0x36')]));if(_0x3c96a6[_0x86cf('0x2a')]){if(_0x3c96a6['dateEnd']){_0x3c96a6[_0x86cf('0x2b')]=moment(_0x3c96a6[_0x86cf('0x2b')])['add'](0x1,_0x86cf('0x37'));}else{_0x3c96a6['dateEnd']=moment(_0x3c96a6[_0x86cf('0x2a')])[_0x86cf('0x38')](0x1,_0x86cf('0x37'));}_[_0x86cf('0x39')](_0x38831c[_0x86cf('0x34')],{'createdAt':{'$gte':_0x3c96a6[_0x86cf('0x2a')],'$lte':_0x3c96a6['dateEnd']}});}if(_0x575476[_0x86cf('0x29')][_0x86cf('0x3a')]){_0x38831c[_0x86cf('0x34')]=_[_0x86cf('0x39')](_0x38831c[_0x86cf('0x34')],{'$or':_[_0x86cf('0x3b')](_0x2635ae,function(_0x1844ee){if(_0x1844ee[_0x86cf('0x3c')][_0x86cf('0x3d')]!==_0x86cf('0x3e')){var _0x4a6807={};_0x4a6807[_0x1844ee[_0x86cf('0x3f')]]={'$like':'%'+_0x575476[_0x86cf('0x29')]['filter']+'%'};return _0x4a6807;}})});}_0x38831c=_[_0x86cf('0x39')]({},_0x38831c,_0x575476[_0x86cf('0x40')]);var _0x4e94bb={'where':_0x38831c[_0x86cf('0x34')]};return db[_0x86cf('0x26')][_0x86cf('0x19')](_0x4e94bb)['then'](function(_0x4a14ef){_0x513eb9[_0x86cf('0x19')]=_0x4a14ef;if(_0x575476[_0x86cf('0x29')][_0x86cf('0x41')]){_0x38831c[_0x86cf('0x42')]=[{'all':!![]}];}return db[_0x86cf('0x26')][_0x86cf('0x43')](_0x38831c);})['then'](function(_0x2319a2){_0x513eb9[_0x86cf('0x44')]=_0x2319a2;return _0x513eb9;})[_0x86cf('0x1e')](respondWithFilteredResult(_0x15088c,_0x38831c))[_0x86cf('0x45')](handleError(_0x15088c,null));};exports[_0x86cf('0x46')]=function(_0x17ceb6,_0x105c90){var _0x2ec028={'raw':!![],'where':{'id':_0x17ceb6[_0x86cf('0x47')]['id']}},_0x465996={};_0x465996['model']=_[_0x86cf('0x2c')](db[_0x86cf('0x26')][_0x86cf('0x27')]);_0x465996[_0x86cf('0x29')]=_[_0x86cf('0x2c')](_0x17ceb6[_0x86cf('0x29')]);_0x465996['filters']=_['intersection'](_0x465996[_0x86cf('0x28')],_0x465996['query']);_0x2ec028[_0x86cf('0x2d')]=_[_0x86cf('0x2e')](_0x465996['model'],qs[_0x86cf('0x2f')](_0x17ceb6[_0x86cf('0x29')][_0x86cf('0x2f')]));_0x2ec028['attributes']=_0x2ec028['attributes'][_0x86cf('0x30')]?_0x2ec028[_0x86cf('0x2d')]:_0x465996['model'];if(_0x17ceb6[_0x86cf('0x29')]['includeAll']){_0x2ec028[_0x86cf('0x42')]=[{'all':!![]}];}_0x2ec028=_[_0x86cf('0x39')]({},_0x2ec028,_0x17ceb6[_0x86cf('0x40')]);return db[_0x86cf('0x26')][_0x86cf('0x48')](_0x2ec028)[_0x86cf('0x1e')](handleEntityNotFound(_0x105c90,null))[_0x86cf('0x1e')](respondWithResult(_0x105c90,null))[_0x86cf('0x45')](handleError(_0x105c90,null));};exports[_0x86cf('0x49')]=function(_0x2756bd,_0xadffbc){return db[_0x86cf('0x26')][_0x86cf('0x49')](_0x2756bd[_0x86cf('0x4a')],{})['then'](function(_0x3dc6d8){var _0x1ae81a=_0x2756bd[_0x86cf('0x4b')][_0x86cf('0x1f')]({'plain':!![]});if(!_0x1ae81a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1ae81a[_0x86cf('0x4c')]==='user'){var _0x1beb52=_0x3dc6d8[_0x86cf('0x1f')]({'plain':!![]});var _0x40f36f=_0x86cf('0x4d');return db[_0x86cf('0x4e')]['find']({'where':{'name':_0x40f36f,'userProfileId':_0x1ae81a[_0x86cf('0x4f')]},'raw':!![]})[_0x86cf('0x1e')](function(_0xf02a81){if(_0xf02a81&&_0xf02a81[_0x86cf('0x50')]===0x0){return db[_0x86cf('0x21')][_0x86cf('0x49')]({'name':_0x1beb52[_0x86cf('0x51')],'resourceId':_0x1beb52['id'],'type':_0x86cf('0x20'),'sectionId':_0xf02a81['id']},{})[_0x86cf('0x1e')](function(){return _0x3dc6d8;});}else{return _0x3dc6d8;}})[_0x86cf('0x45')](function(_0x40ec7a){logger[_0x86cf('0x52')](_0x86cf('0x53'),_0x40ec7a);throw _0x40ec7a;});}return _0x3dc6d8;})[_0x86cf('0x1e')](respondWithResult(_0xadffbc,0xc9))['catch'](handleError(_0xadffbc,null));};exports[_0x86cf('0x1d')]=function(_0x27b1af,_0x5a7951){if(_0x27b1af['body']['id']){delete _0x27b1af[_0x86cf('0x4a')]['id'];}return db['AnalyticDefaultReport']['find']({'where':{'id':_0x27b1af[_0x86cf('0x47')]['id']}})[_0x86cf('0x1e')](handleEntityNotFound(_0x5a7951,null))[_0x86cf('0x1e')](saveUpdates(_0x27b1af[_0x86cf('0x4a')],null))[_0x86cf('0x1e')](respondWithResult(_0x5a7951,null))[_0x86cf('0x45')](handleError(_0x5a7951,null));};exports[_0x86cf('0x22')]=function(_0x1345e4,_0x162f44){return db[_0x86cf('0x26')]['find']({'where':{'id':_0x1345e4[_0x86cf('0x47')]['id']}})[_0x86cf('0x1e')](handleEntityNotFound(_0x162f44,null))[_0x86cf('0x1e')](removeEntity(_0x162f44,null))['catch'](handleError(_0x162f44,null));};exports['preview']=function(_0x5bdb75,_0x556749){var _0x46be01=0xa;var _0x35c603=[_0x86cf('0x54'),_0x86cf('0x55'),_0x86cf('0x56'),'outer_join',_0x86cf('0x57')];var _0x615e11={'SUM':_0x86cf('0x58'),'COUNT':_0x86cf('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x86cf('0x5a'),'MIN':'MIN(%s)','AVG':_0x86cf('0x5b'),'GROUP_CONCAT':_0x86cf('0x5c'),'GROUP_CONCAT ASC':_0x86cf('0x5d'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x39b11a={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x86cf('0x5e')};var _0x13a8c8=function(_0x5d8e2b){return!_[_0x86cf('0x5f')](['IS\x20NULL',_0x86cf('0x60'),_0x86cf('0x61'),_0x86cf('0x62')],_0x5d8e2b);};var _0x391ced=function(_0x2f5d5b){if(!_0x2f5d5b||!_0x2f5d5b[_0x86cf('0x63')][_0x86cf('0x30')]){return'';}for(var _0x32172e='(',_0x2d78e2=0x0;_0x2d78e2<_0x2f5d5b[_0x86cf('0x63')][_0x86cf('0x30')];_0x2d78e2+=0x1){_0x2d78e2>0x0&&(_0x32172e+='\x20'+_0x2f5d5b[_0x86cf('0x64')]+'\x20');_0x32172e+=_0x2f5d5b['rules'][_0x2d78e2][_0x86cf('0x65')]?_0x391ced(_0x2f5d5b['rules'][_0x2d78e2][_0x86cf('0x65')]):_0x2f5d5b[_0x86cf('0x63')][_0x2d78e2][_0x86cf('0x3f')]+'\x20'+_0x2f5d5b[_0x86cf('0x63')][_0x2d78e2][_0x86cf('0x66')]+(_0x13a8c8(_0x2f5d5b[_0x86cf('0x63')][_0x2d78e2][_0x86cf('0x66')])?'\x20'+_0x2f5d5b[_0x86cf('0x63')][_0x2d78e2][_0x86cf('0x67')]:'');}return _0x32172e+')';};var _0x49a3d5={'where':{'id':_0x5bdb75[_0x86cf('0x47')]['id']}},_0x334161,_0x1306ec,_0x344906,_0x59b6f2,_0x259e7f;_0x49a3d5=_['merge']({},_0x49a3d5,_0x5bdb75[_0x86cf('0x40')]);return db['AnalyticDefaultReport'][_0x86cf('0x48')](_0x49a3d5)[_0x86cf('0x1e')](function(_0x384a13){if(_0x384a13){_0x334161=_0x384a13;return _0x384a13[_0x86cf('0x68')]();}return null;})[_0x86cf('0x1e')](function(_0x11675e){if(_0x11675e){if(!_0x11675e[_0x86cf('0x30')]){throw new db[(_0x86cf('0x69'))][(_0x86cf('0x6a'))](_0x86cf('0x6b'),0x193);}_0x1306ec=_0x11675e;return db['AnalyticMetric'][_0x86cf('0x43')]({'raw':!![]});}return null;})[_0x86cf('0x1e')](function(_0x3e2be5){if(_0x3e2be5){_0x344906=_[_0x86cf('0x6c')](_0x3e2be5,'id');var _0x7b1ea9;var _0x27ba64=squel[_0x86cf('0x6d')]();_0x27ba64[_0x86cf('0x6e')](_0x334161['table']);for(var _0x2459ab=0x0;_0x2459ab<_0x1306ec[_0x86cf('0x30')];_0x2459ab+=0x1){_0x7b1ea9=_0x1306ec[_0x2459ab][_0x86cf('0x6f')]?_0x344906[_0x1306ec[_0x2459ab][_0x86cf('0x6f')]][_0x86cf('0x70')]:_0x1306ec[_0x2459ab]['field'];_0x7b1ea9=_0x1306ec[_0x2459ab][_0x86cf('0x71')]?_[_0x86cf('0x72')](_0x615e11[_0x1306ec[_0x2459ab][_0x86cf('0x71')]],'%s',_0x7b1ea9):_0x7b1ea9;_0x7b1ea9=_0x1306ec[_0x2459ab]['format']?_[_0x86cf('0x72')](_0x39b11a[_0x1306ec[_0x2459ab][_0x86cf('0x73')]],'%s',_0x7b1ea9):_0x7b1ea9;if(_0x1306ec[_0x2459ab][_0x86cf('0x74')]){_0x27ba64[_0x86cf('0x65')](_0x7b1ea9);}_0x1306ec[_0x2459ab][_0x86cf('0x75')]&&_0x27ba64[_0x86cf('0x32')](_0x7b1ea9,_0x1306ec[_0x2459ab][_0x86cf('0x75')]===_0x86cf('0x76')?![]:!![]);_0x27ba64[_0x86cf('0x3f')](_0x7b1ea9,_0x1306ec[_0x2459ab]['alias']||_0x7b1ea9);}if(_0x334161['joins']){_0x334161[_0x86cf('0x77')]=JSON[_0x86cf('0x78')](_0x334161[_0x86cf('0x77')]);for(var _0x19c7ca=0x0;_0x19c7ca<_0x334161[_0x86cf('0x77')]['length'];_0x19c7ca+=0x1){if(_0x334161[_0x86cf('0x77')][_0x19c7ca][_0x86cf('0x3c')]&&_[_0x86cf('0x5f')](_0x35c603,_0x334161[_0x86cf('0x77')][_0x19c7ca][_0x86cf('0x3c')])&&_0x334161[_0x86cf('0x77')][_0x19c7ca][_0x86cf('0x79')]&&_0x334161[_0x86cf('0x77')][_0x19c7ca][_0x86cf('0x7a')]&&_0x334161[_0x86cf('0x77')][_0x19c7ca]['foreignKey']){_0x27ba64[_0x334161[_0x86cf('0x77')][_0x19c7ca]['type']](_0x334161[_0x86cf('0x77')][_0x19c7ca][_0x86cf('0x7a')],null,util[_0x86cf('0x73')](_0x86cf('0x7b'),_0x334161[_0x86cf('0x7c')],_0x334161[_0x86cf('0x77')][_0x19c7ca][_0x86cf('0x79')],_0x334161[_0x86cf('0x77')][_0x19c7ca]['foreignTable'],_0x334161[_0x86cf('0x77')][_0x19c7ca][_0x86cf('0x7d')]));}}}if(_0x334161[_0x86cf('0x7e')]){_0x334161[_0x86cf('0x7e')]=JSON[_0x86cf('0x78')](_0x334161['conditions']);_0x27ba64[_0x86cf('0x34')](_0x391ced(_0x334161[_0x86cf('0x7e')][_0x86cf('0x65')]));}_0x259e7f=_0x27ba64[_0x86cf('0x7f')]();_0x27ba64[_0x86cf('0x1b')](_0x46be01);_0x27ba64[_0x86cf('0x1a')](0x0);logger[_0x86cf('0x80')](_0x86cf('0x81'),_0x27ba64[_0x86cf('0x82')]());return db[_0x86cf('0x83')][_0x86cf('0x29')](_0x27ba64['toString'](),{'type':db['sequelize']['QueryTypes']['SELECT']});}})[_0x86cf('0x1e')](respondWithResult(_0x556749,null))[_0x86cf('0x45')](handleError(_0x556749,null));};function runReport(_0x24d9f3,_0x13f32,_0x2fac7e){var _0x2d7f8d=_0x13f32[_0x86cf('0x51')];var _0x248ac5=0xa;var _0x46749f=['join',_0x86cf('0x55'),_0x86cf('0x56'),_0x86cf('0x84'),_0x86cf('0x57')];var _0x1543bc={'SUM':'SUM(%s)','COUNT':_0x86cf('0x59'),'COUNT DISTINCT':_0x86cf('0x85'),'MAX':_0x86cf('0x5a'),'MIN':_0x86cf('0x86'),'AVG':_0x86cf('0x5b'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x86cf('0x5d'),'GROUP_CONCAT DESC':_0x86cf('0x87')};var _0x36f622={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x86cf('0x88'),'HOUR':_0x86cf('0x89'),'ROUND':_0x86cf('0x8a'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x216da0=function(_0x57ce44){return!_[_0x86cf('0x5f')]([_0x86cf('0x8b'),_0x86cf('0x60'),_0x86cf('0x61'),'IS\x20NOT\x20EMPTY'],_0x57ce44);};var _0x38e86a=function(_0x42a7f4){if(!_0x42a7f4||!_0x42a7f4['rules']['length']){return'';}for(var _0x34dd45='(',_0xf37646=0x0;_0xf37646<_0x42a7f4[_0x86cf('0x63')][_0x86cf('0x30')];_0xf37646+=0x1){_0xf37646>0x0&&(_0x34dd45+='\x20'+_0x42a7f4[_0x86cf('0x64')]+'\x20');_0x34dd45+=_0x42a7f4[_0x86cf('0x63')][_0xf37646][_0x86cf('0x65')]?_0x38e86a(_0x42a7f4[_0x86cf('0x63')][_0xf37646][_0x86cf('0x65')]):_0x42a7f4[_0x86cf('0x63')][_0xf37646]['field']+'\x20'+_0x42a7f4['rules'][_0xf37646][_0x86cf('0x66')]+(_0x216da0(_0x42a7f4[_0x86cf('0x63')][_0xf37646][_0x86cf('0x66')])?'\x20'+_0x42a7f4['rules'][_0xf37646][_0x86cf('0x67')]:'');}return _0x34dd45+')';};var _0x56997a={'where':{'id':_0x24d9f3['id']}},_0x3365a1,_0x2a26e8,_0x48f4a8,_0x3c95e2,_0x5e0d27;_0x56997a=_['merge']({},_0x56997a,_0x2fac7e);return db[_0x86cf('0x26')]['find'](_0x56997a)[_0x86cf('0x1e')](function(_0x5871bc){if(_0x5871bc){_0x3365a1=_0x5871bc;return _0x5871bc[_0x86cf('0x68')]();}return null;})[_0x86cf('0x1e')](function(_0x28d331){if(_0x28d331){if(!_0x28d331[_0x86cf('0x30')]){throw new db[(_0x86cf('0x69'))][(_0x86cf('0x6a'))](_0x86cf('0x6b'),0x193);}_0x2a26e8=_0x28d331;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})['then'](function(_0x4ce976){if(_0x4ce976){_0x48f4a8=_['keyBy'](_0x4ce976,'id');var _0x3e40e8;var _0x578b1d=squel['select']();_0x578b1d[_0x86cf('0x6e')](_0x3365a1['table']);for(var _0x265746=0x0;_0x265746<_0x2a26e8['length'];_0x265746+=0x1){_0x3e40e8=_0x2a26e8[_0x265746][_0x86cf('0x6f')]?_0x48f4a8[_0x2a26e8[_0x265746][_0x86cf('0x6f')]]['metric']:_0x2a26e8[_0x265746][_0x86cf('0x3f')];_0x3e40e8=_0x2a26e8[_0x265746]['function']?_['replace'](_0x1543bc[_0x2a26e8[_0x265746][_0x86cf('0x71')]],'%s',_0x3e40e8):_0x3e40e8;_0x3e40e8=_0x2a26e8[_0x265746]['format']?_[_0x86cf('0x72')](_0x36f622[_0x2a26e8[_0x265746]['format']],'%s',_0x3e40e8):_0x3e40e8;if(_0x2a26e8[_0x265746]['groupBy']){_0x578b1d[_0x86cf('0x65')](_0x3e40e8);}_0x2a26e8[_0x265746][_0x86cf('0x75')]&&_0x578b1d[_0x86cf('0x32')](_0x3e40e8,_0x2a26e8[_0x265746][_0x86cf('0x75')]===_0x86cf('0x76')?![]:!![]);_0x578b1d[_0x86cf('0x3f')](_0x3e40e8,_0x2a26e8[_0x265746]['alias']||_0x3e40e8);}if(_0x3365a1['joins']){_0x3365a1[_0x86cf('0x77')]=JSON['parse'](_0x3365a1['joins']);for(var _0x4d882f=0x0;_0x4d882f<_0x3365a1[_0x86cf('0x77')][_0x86cf('0x30')];_0x4d882f+=0x1){if(_0x3365a1[_0x86cf('0x77')][_0x4d882f][_0x86cf('0x3c')]&&_[_0x86cf('0x5f')](_0x46749f,_0x3365a1[_0x86cf('0x77')][_0x4d882f]['type'])&&_0x3365a1['joins'][_0x4d882f]['parentKey']&&_0x3365a1[_0x86cf('0x77')][_0x4d882f][_0x86cf('0x7a')]&&_0x3365a1['joins'][_0x4d882f][_0x86cf('0x7d')]){_0x578b1d[_0x3365a1[_0x86cf('0x77')][_0x4d882f][_0x86cf('0x3c')]](_0x3365a1[_0x86cf('0x77')][_0x4d882f][_0x86cf('0x7a')],null,util[_0x86cf('0x73')](_0x86cf('0x7b'),_0x3365a1[_0x86cf('0x7c')],_0x3365a1[_0x86cf('0x77')][_0x4d882f]['parentKey'],_0x3365a1['joins'][_0x4d882f][_0x86cf('0x7a')],_0x3365a1[_0x86cf('0x77')][_0x4d882f][_0x86cf('0x7d')]));}}}if(_0x3365a1[_0x86cf('0x7e')]){_0x3365a1[_0x86cf('0x7e')]=JSON[_0x86cf('0x78')](_0x3365a1[_0x86cf('0x7e')]);_0x578b1d['where'](_0x38e86a(_0x3365a1[_0x86cf('0x7e')][_0x86cf('0x65')]));}_0x5e0d27=_0x578b1d[_0x86cf('0x7f')]();_0x578b1d[_0x86cf('0x1b')](_0x248ac5);_0x578b1d[_0x86cf('0x1a')](0x0);logger[_0x86cf('0x80')](_0x86cf('0x81'),_0x578b1d[_0x86cf('0x82')]());return db[_0x86cf('0x83')][_0x86cf('0x29')](_0x578b1d[_0x86cf('0x82')](),{'type':db[_0x86cf('0x83')][_0x86cf('0x8c')][_0x86cf('0x8d')]});}})[_0x86cf('0x1e')](function(_0x2c3fbe){if(!_0x2c3fbe['length']){throw new db[(_0x86cf('0x69'))]['ValidationErrorItem'](_0x86cf('0x8e'),0xcc);}if(_0x13f32[_0x86cf('0x8f')]===_0x86cf('0x90')){return null;}var _0x32f09a=_[_0x86cf('0x39')](_0x13f32,{'name':_0x13f32[_0x86cf('0x91')]||_0x13f32[_0x86cf('0x51')]||_0x3365a1['name'],'basename':_0x2d7f8d,'savename':util[_0x86cf('0x73')](_0x86cf('0x92'),_0x13f32[_0x86cf('0x51')]||_0x3365a1[_0x86cf('0x51')],require(_0x86cf('0x93'))[_0x86cf('0x94')](0x4),_0x13f32[_0x86cf('0x8f')]||'csv'),'reportId':_0x3365a1['id'],'reportType':'default'});return db['AnalyticExtractedReport'][_0x86cf('0x49')](_0x32f09a,{'raw':!![]});})[_0x86cf('0x1e')](function(_0x54c167){if(_0x3365a1[_0x86cf('0x7c')]===_0x86cf('0x95')){_0x5e0d27[_0x86cf('0x34')](_0x3365a1[_0x86cf('0x7c')]+_0x86cf('0x96'),_0x13f32[_0x86cf('0x97')],_0x13f32[_0x86cf('0x98')]);}else{_0x5e0d27[_0x86cf('0x34')](_0x3365a1['table']+_0x86cf('0x99'),_0x13f32[_0x86cf('0x97')],_0x13f32['endDate']);}if(_0x54c167){logger[_0x86cf('0x9a')](_0x86cf('0x9b'),_0x5e0d27['toString']());require(_0x86cf('0x9c'))['fork'](path[_0x86cf('0x54')](__dirname,_0x86cf('0x9d'),_0x54c167['output']),[_0x54c167['id'],_0x5e0d27[_0x86cf('0x82')](),path[_0x86cf('0x54')](__dirname,_0x86cf('0x9e'),_0x54c167[_0x86cf('0x9f')]),_0x2d7f8d]);return _0x54c167;}else{var _0x27729c=squel[_0x86cf('0x6d')]();_0x27729c[_0x86cf('0x6e')]('('+_0x5e0d27[_0x86cf('0x82')]()+')',_0x86cf('0xa0'));_0x27729c[_0x86cf('0x3f')](_0x86cf('0xa1'),_0x86cf('0x19'));_0x5e0d27[_0x86cf('0x1b')](_0x13f32[_0x86cf('0x1b')]||_0x248ac5);_0x5e0d27[_0x86cf('0x1a')](_0x13f32['offset']||0x0);return db[_0x86cf('0x83')]['query'](_0x27729c[_0x86cf('0x82')](),{'type':db[_0x86cf('0x83')][_0x86cf('0x8c')]['SELECT']})['then'](function(_0x179215){if(!_0x179215[_0x86cf('0x30')]){_0x3c95e2=0x0;}else{_0x3c95e2=_0x179215[0x0][_0x86cf('0x19')]||0x0;}return db[_0x86cf('0x83')][_0x86cf('0x29')](_0x5e0d27[_0x86cf('0x82')](),{'type':db[_0x86cf('0x83')][_0x86cf('0x8c')][_0x86cf('0x8d')]});})[_0x86cf('0x1e')](function(_0x380dc0){return{'rows':_0x380dc0||[],'count':_0x3c95e2};});}});}exports['run']=function(_0x5ce205,_0x415c24){return runReport(_0x5ce205[_0x86cf('0x47')],_0x5ce205[_0x86cf('0x29')],_0x5ce205['options'])[_0x86cf('0x1e')](respondWithResult(_0x415c24,null))[_0x86cf('0x45')](handleError(_0x415c24,null));};exports[_0x86cf('0xa2')]=runReport;exports[_0x86cf('0x29')]=function(_0x415572,_0x15318f){var _0x472fad=0xa;var _0x113851=[_0x86cf('0x54'),_0x86cf('0x55'),_0x86cf('0x56'),_0x86cf('0x84'),_0x86cf('0x57')];var _0xbd26aa={'SUM':_0x86cf('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0x86cf('0x5b'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x86cf('0x5d'),'GROUP_CONCAT DESC':_0x86cf('0x87')};var _0x3dd7b8={'SEC_TO_TIME':_0x86cf('0xa3'),'DATE':_0x86cf('0x88'),'HOUR':_0x86cf('0x89'),'ROUND':_0x86cf('0x8a'),'UNIX_TIMESTAMP':_0x86cf('0x5e')};var _0x39b3a5=function(_0x306c2c){return!_[_0x86cf('0x5f')]([_0x86cf('0x8b'),'IS\x20NOT\x20NULL',_0x86cf('0x61'),_0x86cf('0x62')],_0x306c2c);};var _0x453c19=function(_0x135833){if(!_0x135833||!_0x135833[_0x86cf('0x63')][_0x86cf('0x30')]){return'';}for(var _0x10c6d6='(',_0x2cb7fb=0x0;_0x2cb7fb<_0x135833['rules']['length'];_0x2cb7fb+=0x1){_0x2cb7fb>0x0&&(_0x10c6d6+='\x20'+_0x135833['operator']+'\x20');_0x10c6d6+=_0x135833[_0x86cf('0x63')][_0x2cb7fb][_0x86cf('0x65')]?_0x453c19(_0x135833['rules'][_0x2cb7fb][_0x86cf('0x65')]):_0x135833[_0x86cf('0x63')][_0x2cb7fb][_0x86cf('0x3f')]+'\x20'+_0x135833[_0x86cf('0x63')][_0x2cb7fb][_0x86cf('0x66')]+(_0x39b3a5(_0x135833[_0x86cf('0x63')][_0x2cb7fb][_0x86cf('0x66')])?'\x20'+_0x135833[_0x86cf('0x63')][_0x2cb7fb]['value']:'');}return _0x10c6d6+')';};var _0x25a404={'where':{'id':_0x415572['params']['id']}},_0x11c207,_0x178e2a,_0x3341ca,_0x56fa92,_0x187f9e;_0x25a404=_['merge']({},_0x25a404,_0x415572[_0x86cf('0x40')]);return db[_0x86cf('0x26')][_0x86cf('0x48')](_0x25a404)[_0x86cf('0x1e')](function(_0x1825aa){if(_0x1825aa){_0x11c207=_0x1825aa;return _0x1825aa['getFields']();}return null;})[_0x86cf('0x1e')](function(_0xee205f){if(_0xee205f){if(!_0xee205f[_0x86cf('0x30')]){throw new db['Sequelize']['ValidationErrorItem'](_0x86cf('0x6b'),0x193);}_0x178e2a=_0xee205f;return db[_0x86cf('0xa4')]['findAll']({'raw':!![]});}return null;})[_0x86cf('0x1e')](function(_0x144337){if(_0x144337){_0x3341ca=_[_0x86cf('0x6c')](_0x144337,'id');var _0x206fb7;var _0x3d8ffa=squel['select']();_0x3d8ffa[_0x86cf('0x6e')](_0x11c207[_0x86cf('0x7c')]);for(var _0x4d804e=0x0;_0x4d804e<_0x178e2a[_0x86cf('0x30')];_0x4d804e+=0x1){_0x206fb7=_0x178e2a[_0x4d804e]['MetricId']?_0x3341ca[_0x178e2a[_0x4d804e]['MetricId']][_0x86cf('0x70')]:_0x178e2a[_0x4d804e][_0x86cf('0x3f')];_0x206fb7=_0x178e2a[_0x4d804e][_0x86cf('0x71')]?_[_0x86cf('0x72')](_0xbd26aa[_0x178e2a[_0x4d804e][_0x86cf('0x71')]],'%s',_0x206fb7):_0x206fb7;_0x206fb7=_0x178e2a[_0x4d804e][_0x86cf('0x73')]?_[_0x86cf('0x72')](_0x3dd7b8[_0x178e2a[_0x4d804e][_0x86cf('0x73')]],'%s',_0x206fb7):_0x206fb7;if(_0x178e2a[_0x4d804e][_0x86cf('0x74')]){_0x3d8ffa['group'](_0x206fb7);}_0x178e2a[_0x4d804e]['orderBy']&&_0x3d8ffa[_0x86cf('0x32')](_0x206fb7,_0x178e2a[_0x4d804e][_0x86cf('0x75')]==='DESC'?![]:!![]);_0x3d8ffa['field'](_0x206fb7,_0x178e2a[_0x4d804e][_0x86cf('0xa5')]||_0x206fb7);}if(_0x11c207[_0x86cf('0x77')]){_0x11c207[_0x86cf('0x77')]=JSON['parse'](_0x11c207['joins']);for(var _0x20dd82=0x0;_0x20dd82<_0x11c207[_0x86cf('0x77')][_0x86cf('0x30')];_0x20dd82+=0x1){if(_0x11c207[_0x86cf('0x77')][_0x20dd82][_0x86cf('0x3c')]&&_[_0x86cf('0x5f')](_0x113851,_0x11c207['joins'][_0x20dd82][_0x86cf('0x3c')])&&_0x11c207['joins'][_0x20dd82]['parentKey']&&_0x11c207[_0x86cf('0x77')][_0x20dd82][_0x86cf('0x7a')]&&_0x11c207[_0x86cf('0x77')][_0x20dd82]['foreignKey']){_0x3d8ffa[_0x11c207['joins'][_0x20dd82][_0x86cf('0x3c')]](_0x11c207[_0x86cf('0x77')][_0x20dd82][_0x86cf('0x7a')],null,util[_0x86cf('0x73')](_0x86cf('0x7b'),_0x11c207['table'],_0x11c207['joins'][_0x20dd82][_0x86cf('0x79')],_0x11c207['joins'][_0x20dd82][_0x86cf('0x7a')],_0x11c207[_0x86cf('0x77')][_0x20dd82]['foreignKey']));}}}if(_0x11c207['conditions']){_0x11c207[_0x86cf('0x7e')]=JSON[_0x86cf('0x78')](_0x11c207[_0x86cf('0x7e')]);_0x3d8ffa[_0x86cf('0x34')](_0x453c19(_0x11c207['conditions']['group']));}_0x187f9e=_0x3d8ffa['clone']();_0x3d8ffa['limit'](_0x472fad);_0x3d8ffa[_0x86cf('0x1a')](0x0);logger[_0x86cf('0x80')]('Limited\x20Query:',_0x3d8ffa[_0x86cf('0x82')]());return db['sequelize'][_0x86cf('0x29')](_0x3d8ffa[_0x86cf('0x82')](),{'type':db['sequelize'][_0x86cf('0x8c')][_0x86cf('0x8d')]});}})[_0x86cf('0x1e')](function(){return{'sql':_0x187f9e[_0x86cf('0x82')]()};})[_0x86cf('0x1e')](respondWithResult(_0x15318f,null))[_0x86cf('0x45')](handleError(_0x15318f,null));};
\ No newline at end of file
index 64d130b..50a596c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0664=['./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','api'];(function(_0x56850a,_0x39d4f4){var _0x5dbc4b=function(_0x4e31fd){while(--_0x4e31fd){_0x56850a['push'](_0x56850a['shift']());}};_0x5dbc4b(++_0x39d4f4);}(_0x0664,0x194));var _0x4066=function(_0x468505,_0x183467){_0x468505=_0x468505-0x0;var _0x391012=_0x0664[_0x468505];return _0x391012;};'use strict';var _=require(_0x4066('0x0'));var util=require(_0x4066('0x1'));var logger=require(_0x4066('0x2'))(_0x4066('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x4066('0x4'));module['exports']=function(_0x511976,_0x17750d){return _0x511976[_0x4066('0x5')](_0x4066('0x6'),attributes,{'tableName':_0x4066('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x651c=['request-promise','./analyticDefaultReport.attributes','define','AnalyticDefaultReport','analytics_default_reports','util','../../config/logger','api'];(function(_0x490be3,_0xf0fca3){var _0x3f5140=function(_0x15fa80){while(--_0x15fa80){_0x490be3['push'](_0x490be3['shift']());}};_0x3f5140(++_0xf0fca3);}(_0x651c,0xcd));var _0xc651=function(_0x1a3e23,_0xce45e){_0x1a3e23=_0x1a3e23-0x0;var _0x5ee0d8=_0x651c[_0x1a3e23];return _0x5ee0d8;};'use strict';var _=require('lodash');var util=require(_0xc651('0x0'));var logger=require(_0xc651('0x1'))(_0xc651('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc651('0x3'));var attributes=require(_0xc651('0x4'));module['exports']=function(_0x355ad6,_0x58124a){return _0x355ad6[_0xc651('0x5')](_0xc651('0x6'),attributes,{'tableName':_0xc651('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0401d50..ca61c6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x402c00,_0x1ed100){var _0x22b1bc=function(_0x562a00){while(--_0x562a00){_0x402c00['push'](_0x402c00['shift']());}};_0x22b1bc(++_0x1ed100);}(_0x34e8,0x12c));var _0x834e=function(_0x27cba3,_0x4963d3){_0x27cba3=_0x27cba3-0x0;var _0x22d68d=_0x34e8[_0x27cba3];return _0x22d68d;};'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')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ 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','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x410a8d,_0x287518){var _0x217d64=function(_0xa18f5b){while(--_0xa18f5b){_0x410a8d['push'](_0x410a8d['shift']());}};_0x217d64(++_0x287518);}(_0x34e8,0x12c));var _0x834e=function(_0x43443f,_0x498658){_0x43443f=_0x43443f-0x0;var _0x5b60dd=_0x34e8[_0x43443f];return _0x5b60dd;};'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')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
index 0e3dc6d..15c2b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf85f=['run','/:id/query','query','post','destroy','exports','multer','util','path','connect-timeout','express','isAuthenticated','index','get','/:id','show','preview'];(function(_0x1269c6,_0x1c8942){var _0x4868c7=function(_0x1661bc){while(--_0x1661bc){_0x1269c6['push'](_0x1269c6['shift']());}};_0x4868c7(++_0x1c8942);}(_0xf85f,0xd2));var _0xff85=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0xf85f[_0x4a53d];return _0x27410e;};'use strict';var multer=require(_0xff85('0x0'));var util=require(_0xff85('0x1'));var path=require(_0xff85('0x2'));var timeout=require(_0xff85('0x3'));var express=require(_0xff85('0x4'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router['get']('/',auth[_0xff85('0x5')](),controller[_0xff85('0x6')]);router[_0xff85('0x7')](_0xff85('0x8'),auth[_0xff85('0x5')](),controller[_0xff85('0x9')]);router[_0xff85('0x7')]('/:id/preview',auth['isAuthenticated'](),controller[_0xff85('0xa')]);router['get']('/:id/run',auth[_0xff85('0x5')](),controller[_0xff85('0xb')]);router[_0xff85('0x7')](_0xff85('0xc'),auth['isAuthenticated'](),controller[_0xff85('0xd')]);router[_0xff85('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xff85('0x8'),auth[_0xff85('0x5')](),controller['update']);router['delete'](_0xff85('0x8'),auth[_0xff85('0x5')](),controller[_0xff85('0xf')]);module[_0xff85('0x10')]=router;
\ No newline at end of file
+var _0x2a37=['query','post','create','delete','util','path','express','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','/:id/preview','run','/:id/query'];(function(_0x234869,_0x25ce29){var _0xdc5c37=function(_0x1bb15a){while(--_0x1bb15a){_0x234869['push'](_0x234869['shift']());}};_0xdc5c37(++_0x25ce29);}(_0x2a37,0x8c));var _0x72a3=function(_0x571dee,_0x45f87a){_0x571dee=_0x571dee-0x0;var _0x4c7672=_0x2a37[_0x571dee];return _0x4c7672;};'use strict';var multer=require('multer');var util=require(_0x72a3('0x0'));var path=require(_0x72a3('0x1'));var timeout=require('connect-timeout');var express=require(_0x72a3('0x2'));var router=express['Router']();var auth=require(_0x72a3('0x3'));var interaction=require(_0x72a3('0x4'));var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router['get']('/',auth[_0x72a3('0x5')](),controller[_0x72a3('0x6')]);router[_0x72a3('0x7')](_0x72a3('0x8'),auth[_0x72a3('0x5')](),controller[_0x72a3('0x9')]);router[_0x72a3('0x7')](_0x72a3('0xa'),auth[_0x72a3('0x5')](),controller['preview']);router[_0x72a3('0x7')]('/:id/run',auth['isAuthenticated'](),controller[_0x72a3('0xb')]);router[_0x72a3('0x7')](_0x72a3('0xc'),auth[_0x72a3('0x5')](),controller[_0x72a3('0xd')]);router[_0x72a3('0xe')]('/',auth['isAuthenticated'](),controller[_0x72a3('0xf')]);router['put']('/:id',auth[_0x72a3('0x5')](),controller['update']);router[_0x72a3('0x10')](_0x72a3('0x8'),auth[_0x72a3('0x5')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6637ecd..d0674fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60e2=['ENUM','pdf','xlsx','csv','DATE','manual','scheduled','INTEGER','UNSIGNED','moment','exports','STRING'];(function(_0x499996,_0x45c9cd){var _0x44dab3=function(_0x43031d){while(--_0x43031d){_0x499996['push'](_0x499996['shift']());}};_0x44dab3(++_0x45c9cd);}(_0x60e2,0x165));var _0x260e=function(_0x286f89,_0x7e0501){_0x286f89=_0x286f89-0x0;var _0x4aee79=_0x60e2[_0x286f89];return _0x4aee79;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x260e('0x0'));module[_0x260e('0x1')]={'name':{'type':Sequelize[_0x260e('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x260e('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x260e('0x3')]('csv',_0x260e('0x4'),_0x260e('0x5')),'allowNull':![],'defaultValue':_0x260e('0x6')},'savename':{'type':Sequelize[_0x260e('0x2')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x260e('0x7')]},'status':{'type':Sequelize['STRING'],'defaultValue':'Loading'},'type':{'type':Sequelize['ENUM'](_0x260e('0x8'),_0x260e('0x9')),'allowNull':![],'defaultValue':_0x260e('0x8')},'reportId':{'type':Sequelize[_0x260e('0xa')](0xb)[_0x260e('0xb')]},'reportType':{'type':Sequelize[_0x260e('0x2')]}};
\ No newline at end of file
+var _0xb381=['scheduled','INTEGER','UNSIGNED','moment','exports','STRING','ENUM','csv','pdf','xlsx','DATE','manual'];(function(_0x509316,_0x3b5d9d){var _0x53ac3b=function(_0x1bfa43){while(--_0x1bfa43){_0x509316['push'](_0x509316['shift']());}};_0x53ac3b(++_0x3b5d9d);}(_0xb381,0x1d7));var _0x1b38=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xb381[_0x1a36a5];return _0x746243;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x1b38('0x0'));module[_0x1b38('0x1')]={'name':{'type':Sequelize[_0x1b38('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x1b38('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x1b38('0x3')](_0x1b38('0x4'),_0x1b38('0x5'),_0x1b38('0x6')),'allowNull':![],'defaultValue':_0x1b38('0x4')},'savename':{'type':Sequelize[_0x1b38('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x1b38('0x7')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize['STRING'],'defaultValue':'Loading'},'type':{'type':Sequelize[_0x1b38('0x3')](_0x1b38('0x8'),_0x1b38('0x9')),'allowNull':![],'defaultValue':_0x1b38('0x8')},'reportId':{'type':Sequelize[_0x1b38('0xa')](0xb)[_0x1b38('0xb')]},'reportType':{'type':Sequelize[_0x1b38('0x2')]}};
\ No newline at end of file
index 5b3338e..f7748de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f0a=['%s.%s','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','stack','name','send','AnalyticExtractedReport','model','query','dateStart','dateEnd','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','day','where','filter','map','type','key','field','merge','options','includeAll','include','findAll','rows','catch','show','rawAttributes','keys','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ExtractedReports','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','download','basename','savename','output','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists'];(function(_0x3950ed,_0x137c36){var _0x115dae=function(_0x2f6d52){while(--_0x2f6d52){_0x3950ed['push'](_0x3950ed['shift']());}};_0x115dae(++_0x137c36);}(_0x1f0a,0x17d));var _0xa1f0=function(_0x487466,_0x5ef7ca){_0x487466=_0x487466-0x0;var _0x357288=_0x1f0a[_0x487466];return _0x357288;};'use strict';var pdf=require(_0xa1f0('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xa1f0('0x1'));var zipdir=require(_0xa1f0('0x2'));var jsonpatch=require(_0xa1f0('0x3'));var rp=require(_0xa1f0('0x4'));var moment=require('moment');var BPromise=require(_0xa1f0('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa1f0('0x6'));var sox=require('sox');var csv=require(_0xa1f0('0x7'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0xa1f0('0x8'));var crypto=require(_0xa1f0('0x9'));var jsforce=require(_0xa1f0('0xa'));var deskjs=require(_0xa1f0('0xb'));var toCsv=require(_0xa1f0('0x7'));var querystring=require(_0xa1f0('0xc'));var Papa=require(_0xa1f0('0xd'));var Redis=require(_0xa1f0('0xe'));var qs=require('../../components/parsers/qs');var logger=require(_0xa1f0('0xf'))(_0xa1f0('0x10'));var utils=require(_0xa1f0('0x11'));var config=require(_0xa1f0('0x12'));var db=require(_0xa1f0('0x13'))['db'];function respondWithStatusCode(_0x254392,_0xb382a5){_0xb382a5=_0xb382a5||0xcc;return function(_0x53f90b){if(_0x53f90b){return _0x254392[_0xa1f0('0x14')](_0xb382a5);}return _0x254392[_0xa1f0('0x15')](_0xb382a5)[_0xa1f0('0x16')]();};}function respondWithResult(_0x45ea33,_0x3cb7fb){_0x3cb7fb=_0x3cb7fb||0xc8;return function(_0x252862){if(_0x252862){return _0x45ea33[_0xa1f0('0x15')](_0x3cb7fb)['json'](_0x252862);}};}function respondWithFilteredResult(_0x56edf3,_0x37f45c){return function(_0x4ec285){if(_0x4ec285){var _0x4b2ca5=_0x4ec285[_0xa1f0('0x17')],_0x3fd7d1=_0x37f45c[_0xa1f0('0x18')],_0xaf886b=_0x37f45c[_0xa1f0('0x18')]+_0x37f45c[_0xa1f0('0x19')],_0x327d15;if(_0xaf886b>=_0x4b2ca5){_0xaf886b=_0x4b2ca5;_0x327d15=0xc8;}else{_0x327d15=0xce;}_0x56edf3[_0xa1f0('0x15')](_0x327d15);return _0x56edf3[_0xa1f0('0x1a')](_0xa1f0('0x1b'),_0x3fd7d1+'-'+_0xaf886b+'/'+_0x4b2ca5)[_0xa1f0('0x1c')](_0x4ec285);}return null;};}function patchUpdates(_0x214a0d){return function(_0x5008da){try{jsonpatch[_0xa1f0('0x1d')](_0x5008da,_0x214a0d,!![]);}catch(_0x4d4784){return BPromise[_0xa1f0('0x1e')](_0x4d4784);}return _0x5008da[_0xa1f0('0x1f')]();};}function saveUpdates(_0x37586c,_0x16bc27){return function(_0x58b7cd){if(_0x58b7cd){return _0x58b7cd[_0xa1f0('0x20')](_0x37586c)[_0xa1f0('0x21')](function(_0x5ade83){return _0x5ade83;});}return null;};}function removeEntity(_0x2b42c5,_0x16c49d){return function(_0x3dd313){if(_0x3dd313){return _0x3dd313[_0xa1f0('0x22')]()['then'](function(){var _0x1fac0=_0x3dd313[_0xa1f0('0x23')]({'plain':!![]});var _0x39d67b='ExtractedReports';return db['UserProfileResource'][_0xa1f0('0x22')]({'where':{'type':_0x39d67b,'resourceId':_0x1fac0['id']}})[_0xa1f0('0x21')](function(){return _0x3dd313;});})['then'](function(){_0x2b42c5[_0xa1f0('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4566a3,_0x2cae97){return function(_0x23a675){if(!_0x23a675){_0x4566a3[_0xa1f0('0x14')](0x194);}return _0x23a675;};}function handleError(_0x19c9c5,_0x38fbfe){_0x38fbfe=_0x38fbfe||0x1f4;return function(_0x44b5de){logger['error'](_0x44b5de[_0xa1f0('0x24')]);if(_0x44b5de[_0xa1f0('0x25')]){delete _0x44b5de[_0xa1f0('0x25')];}_0x19c9c5[_0xa1f0('0x15')](_0x38fbfe)[_0xa1f0('0x26')](_0x44b5de);};}exports['index']=function(_0x108e7f,_0x487f07){var _0x3915bc={},_0x4c1b15={},_0x2fb85d={'count':0x0,'rows':[]};var _0x1f299a=db[_0xa1f0('0x27')]['rawAttributes'];_0x4c1b15[_0xa1f0('0x28')]=_['keys'](_0x1f299a);var _0x148c5e={'dateStart':_0x108e7f[_0xa1f0('0x29')][_0xa1f0('0x2a')],'dateEnd':_0x108e7f['query'][_0xa1f0('0x2b')]};delete _0x108e7f[_0xa1f0('0x29')][_0xa1f0('0x2a')];delete _0x108e7f[_0xa1f0('0x29')][_0xa1f0('0x2b')];_0x4c1b15[_0xa1f0('0x29')]=_['keys'](_0x108e7f[_0xa1f0('0x29')]);_0x4c1b15['filters']=_[_0xa1f0('0x2c')](_0x4c1b15[_0xa1f0('0x28')],_0x4c1b15[_0xa1f0('0x29')]);_0x3915bc[_0xa1f0('0x2d')]=_['intersection'](_0x4c1b15[_0xa1f0('0x28')],qs[_0xa1f0('0x2e')](_0x108e7f['query'][_0xa1f0('0x2e')]));_0x3915bc[_0xa1f0('0x2d')]=_0x3915bc[_0xa1f0('0x2d')][_0xa1f0('0x2f')]?_0x3915bc[_0xa1f0('0x2d')]:_0x4c1b15['model'];if(!_0x108e7f[_0xa1f0('0x29')][_0xa1f0('0x30')](_0xa1f0('0x31'))){_0x3915bc[_0xa1f0('0x19')]=qs[_0xa1f0('0x19')](_0x108e7f[_0xa1f0('0x29')][_0xa1f0('0x19')]);_0x3915bc[_0xa1f0('0x18')]=qs[_0xa1f0('0x18')](_0x108e7f['query']['offset']);}_0x3915bc[_0xa1f0('0x32')]=qs[_0xa1f0('0x33')](_0x108e7f[_0xa1f0('0x29')][_0xa1f0('0x33')]);_0x3915bc['where']=qs[_0xa1f0('0x34')](_['pick'](_0x108e7f['query'],_0x4c1b15[_0xa1f0('0x34')]));if(_0x148c5e['dateStart']){if(_0x148c5e['dateEnd']){_0x148c5e[_0xa1f0('0x2b')]=moment(_0x148c5e['dateEnd'])['add'](0x1,_0xa1f0('0x35'));}else{_0x148c5e[_0xa1f0('0x2b')]=moment(_0x148c5e[_0xa1f0('0x2a')])['add'](0x1,'day');}_['merge'](_0x3915bc[_0xa1f0('0x36')],{'createdAt':{'$gte':_0x148c5e['dateStart'],'$lte':_0x148c5e['dateEnd']}});}if(_0x108e7f[_0xa1f0('0x29')][_0xa1f0('0x37')]){_0x3915bc[_0xa1f0('0x36')]=_['merge'](_0x3915bc[_0xa1f0('0x36')],{'$or':_[_0xa1f0('0x38')](_0x1f299a,function(_0x2f49ae){if(_0x2f49ae[_0xa1f0('0x39')][_0xa1f0('0x3a')]!=='VIRTUAL'){var _0x24577e={};_0x24577e[_0x2f49ae[_0xa1f0('0x3b')]]={'$like':'%'+_0x108e7f[_0xa1f0('0x29')]['filter']+'%'};return _0x24577e;}})});}_0x3915bc=_[_0xa1f0('0x3c')]({},_0x3915bc,_0x108e7f[_0xa1f0('0x3d')]);var _0x3fb30a={'where':_0x3915bc['where']};return db[_0xa1f0('0x27')][_0xa1f0('0x17')](_0x3fb30a)['then'](function(_0x547b79){_0x2fb85d[_0xa1f0('0x17')]=_0x547b79;if(_0x108e7f[_0xa1f0('0x29')][_0xa1f0('0x3e')]){_0x3915bc[_0xa1f0('0x3f')]=[{'all':!![]}];}return db[_0xa1f0('0x27')][_0xa1f0('0x40')](_0x3915bc);})[_0xa1f0('0x21')](function(_0x296e01){_0x2fb85d[_0xa1f0('0x41')]=_0x296e01;return _0x2fb85d;})[_0xa1f0('0x21')](respondWithFilteredResult(_0x487f07,_0x3915bc))[_0xa1f0('0x42')](handleError(_0x487f07,null));};exports[_0xa1f0('0x43')]=function(_0x3705ac,_0x3aaf21){var _0x2b92a6={'raw':!![],'where':{'id':_0x3705ac['params']['id']}},_0x3e26e7={};_0x3e26e7[_0xa1f0('0x28')]=_['keys'](db[_0xa1f0('0x27')][_0xa1f0('0x44')]);_0x3e26e7[_0xa1f0('0x29')]=_[_0xa1f0('0x45')](_0x3705ac[_0xa1f0('0x29')]);_0x3e26e7[_0xa1f0('0x34')]=_[_0xa1f0('0x2c')](_0x3e26e7[_0xa1f0('0x28')],_0x3e26e7['query']);_0x2b92a6[_0xa1f0('0x2d')]=_[_0xa1f0('0x2c')](_0x3e26e7[_0xa1f0('0x28')],qs['fields'](_0x3705ac[_0xa1f0('0x29')][_0xa1f0('0x2e')]));_0x2b92a6[_0xa1f0('0x2d')]=_0x2b92a6[_0xa1f0('0x2d')]['length']?_0x2b92a6[_0xa1f0('0x2d')]:_0x3e26e7['model'];if(_0x3705ac[_0xa1f0('0x29')][_0xa1f0('0x3e')]){_0x2b92a6[_0xa1f0('0x3f')]=[{'all':!![]}];}_0x2b92a6=_[_0xa1f0('0x3c')]({},_0x2b92a6,_0x3705ac['options']);return db[_0xa1f0('0x27')][_0xa1f0('0x46')](_0x2b92a6)['then'](handleEntityNotFound(_0x3aaf21,null))[_0xa1f0('0x21')](respondWithResult(_0x3aaf21,null))[_0xa1f0('0x42')](handleError(_0x3aaf21,null));};exports[_0xa1f0('0x47')]=function(_0x591c14,_0x52822f){return db[_0xa1f0('0x27')][_0xa1f0('0x47')](_0x591c14['body'],{})['then'](function(_0x7ecd12){var _0x582e0a=_0x591c14[_0xa1f0('0x48')][_0xa1f0('0x23')]({'plain':!![]});if(!_0x582e0a)throw new Error(_0xa1f0('0x49'));if(_0x582e0a[_0xa1f0('0x4a')]==='user'){var _0x5686fb=_0x7ecd12[_0xa1f0('0x23')]({'plain':!![]});var _0x22b2b4=_0xa1f0('0x4b');return db[_0xa1f0('0x4c')][_0xa1f0('0x46')]({'where':{'name':_0x22b2b4,'userProfileId':_0x582e0a[_0xa1f0('0x4d')]},'raw':!![]})['then'](function(_0x3d683e){if(_0x3d683e&&_0x3d683e['autoAssociation']===0x0){return db['UserProfileResource'][_0xa1f0('0x47')]({'name':_0x5686fb[_0xa1f0('0x25')],'resourceId':_0x5686fb['id'],'type':_0x3d683e['name'],'sectionId':_0x3d683e['id']},{})[_0xa1f0('0x21')](function(){return _0x7ecd12;});}else{return _0x7ecd12;}})['catch'](function(_0x149367){logger[_0xa1f0('0x4e')](_0xa1f0('0x4f'),_0x149367);throw _0x149367;});}return _0x7ecd12;})[_0xa1f0('0x21')](respondWithResult(_0x52822f,0xc9))[_0xa1f0('0x42')](handleError(_0x52822f,null));};exports[_0xa1f0('0x20')]=function(_0x34d2d0,_0x25dca4){if(_0x34d2d0['body']['id']){delete _0x34d2d0[_0xa1f0('0x50')]['id'];}return db[_0xa1f0('0x27')][_0xa1f0('0x46')]({'where':{'id':_0x34d2d0['params']['id']}})['then'](handleEntityNotFound(_0x25dca4,null))[_0xa1f0('0x21')](saveUpdates(_0x34d2d0[_0xa1f0('0x50')],null))['then'](respondWithResult(_0x25dca4,null))[_0xa1f0('0x42')](handleError(_0x25dca4,null));};exports[_0xa1f0('0x22')]=function(_0x11d825,_0x5eae0a){return db[_0xa1f0('0x27')][_0xa1f0('0x46')]({'where':{'id':_0x11d825[_0xa1f0('0x51')]['id']}})[_0xa1f0('0x21')](handleEntityNotFound(_0x5eae0a,null))['then'](removeEntity(_0x5eae0a,null))[_0xa1f0('0x42')](handleError(_0x5eae0a,null));};exports[_0xa1f0('0x52')]=function(_0x4f6596,_0x304c62,_0x1de091){return db['AnalyticExtractedReport'][_0xa1f0('0x46')]({'where':{'id':_0x4f6596[_0xa1f0('0x51')]['id']},'attributes':['name',_0xa1f0('0x53'),_0xa1f0('0x54'),_0xa1f0('0x55')],'raw':!![]})[_0xa1f0('0x21')](handleEntityNotFound(_0x304c62,null))[_0xa1f0('0x21')](function(_0xbfbc9){if(_0xbfbc9){if(!fs[_0xa1f0('0x56')](path[_0xa1f0('0x57')](config[_0xa1f0('0x58')],_0xa1f0('0x59'),_0xbfbc9['savename']))){throw new db[(_0xa1f0('0x5a'))][(_0xa1f0('0x5b'))](_0xa1f0('0x5c'));}if(_0x4f6596[_0xa1f0('0x29')][_0xa1f0('0x5d')]){return _0x304c62[_0xa1f0('0x14')](0xc8);}return _0x304c62[_0xa1f0('0x52')](path[_0xa1f0('0x57')](config[_0xa1f0('0x58')],'server/files/reports',_0xbfbc9[_0xa1f0('0x54')]),util['format'](_0xa1f0('0x5e'),_0xbfbc9['basename']||_0xbfbc9[_0xa1f0('0x25')],_0xbfbc9['output']['toLowerCase']()));}})[_0xa1f0('0x42')](handleError(_0x304c62,null));};
\ No newline at end of file
+var _0xaee6=['count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','ExtractedReports','error','stack','send','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','day','add','filter','merge','type','key','VIRTUAL','field','options','AnalyticExtractedReport','include','findAll','rows','catch','show','params','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','existsSync','join','root','savename','Sequelize','ValidationError','exists','server/files/reports','%s.%s','output','toLowerCase','html-pdf','eml-format','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json'];(function(_0x1ad8a5,_0x27a970){var _0x491915=function(_0x5ac715){while(--_0x5ac715){_0x1ad8a5['push'](_0x1ad8a5['shift']());}};_0x491915(++_0x27a970);}(_0xaee6,0x1d9));var _0x6aee=function(_0x25643d,_0xaf8d77){_0x25643d=_0x25643d-0x0;var _0x9eb397=_0xaee6[_0x25643d];return _0x9eb397;};'use strict';var pdf=require(_0x6aee('0x0'));var emlformat=require(_0x6aee('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x6aee('0x2'));var rp=require(_0x6aee('0x3'));var moment=require('moment');var BPromise=require(_0x6aee('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6aee('0x5'));var sox=require(_0x6aee('0x6'));var csv=require(_0x6aee('0x7'));var ejs=require(_0x6aee('0x8'));var fs=require('fs');var _=require(_0x6aee('0x9'));var squel=require(_0x6aee('0xa'));var crypto=require(_0x6aee('0xb'));var jsforce=require(_0x6aee('0xc'));var deskjs=require(_0x6aee('0xd'));var toCsv=require(_0x6aee('0x7'));var querystring=require(_0x6aee('0xe'));var Papa=require(_0x6aee('0xf'));var Redis=require(_0x6aee('0x10'));var qs=require(_0x6aee('0x11'));var logger=require(_0x6aee('0x12'))(_0x6aee('0x13'));var utils=require(_0x6aee('0x14'));var config=require(_0x6aee('0x15'));var db=require(_0x6aee('0x16'))['db'];function respondWithStatusCode(_0x1c50a8,_0x600d2d){_0x600d2d=_0x600d2d||0xcc;return function(_0x557253){if(_0x557253){return _0x1c50a8[_0x6aee('0x17')](_0x600d2d);}return _0x1c50a8[_0x6aee('0x18')](_0x600d2d)[_0x6aee('0x19')]();};}function respondWithResult(_0x4bf6e2,_0x2b68fc){_0x2b68fc=_0x2b68fc||0xc8;return function(_0x26b64f){if(_0x26b64f){return _0x4bf6e2['status'](_0x2b68fc)[_0x6aee('0x1a')](_0x26b64f);}};}function respondWithFilteredResult(_0x4c947c,_0x381d58){return function(_0x857c79){if(_0x857c79){var _0x2bbe0a=_0x857c79[_0x6aee('0x1b')],_0x577fcd=_0x381d58['offset'],_0x4b737d=_0x381d58[_0x6aee('0x1c')]+_0x381d58[_0x6aee('0x1d')],_0x4c4254;if(_0x4b737d>=_0x2bbe0a){_0x4b737d=_0x2bbe0a;_0x4c4254=0xc8;}else{_0x4c4254=0xce;}_0x4c947c['status'](_0x4c4254);return _0x4c947c[_0x6aee('0x1e')](_0x6aee('0x1f'),_0x577fcd+'-'+_0x4b737d+'/'+_0x2bbe0a)[_0x6aee('0x1a')](_0x857c79);}return null;};}function patchUpdates(_0x160448){return function(_0x55da30){try{jsonpatch[_0x6aee('0x20')](_0x55da30,_0x160448,!![]);}catch(_0x26bb37){return BPromise[_0x6aee('0x21')](_0x26bb37);}return _0x55da30[_0x6aee('0x22')]();};}function saveUpdates(_0x106eed,_0x288ec3){return function(_0x3c92f8){if(_0x3c92f8){return _0x3c92f8[_0x6aee('0x23')](_0x106eed)[_0x6aee('0x24')](function(_0xfdda7f){return _0xfdda7f;});}return null;};}function removeEntity(_0x66cad6,_0x4da6ad){return function(_0x8463a7){if(_0x8463a7){return _0x8463a7[_0x6aee('0x25')]()[_0x6aee('0x24')](function(){var _0x500cb1=_0x8463a7[_0x6aee('0x26')]({'plain':!![]});var _0x58e9cd=_0x6aee('0x27');return db['UserProfileResource'][_0x6aee('0x25')]({'where':{'type':_0x58e9cd,'resourceId':_0x500cb1['id']}})['then'](function(){return _0x8463a7;});})[_0x6aee('0x24')](function(){_0x66cad6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xbc3223,_0x1afa01){return function(_0x66454){if(!_0x66454){_0xbc3223[_0x6aee('0x17')](0x194);}return _0x66454;};}function handleError(_0x3c1ecb,_0x9d161){_0x9d161=_0x9d161||0x1f4;return function(_0x5724d7){logger[_0x6aee('0x28')](_0x5724d7[_0x6aee('0x29')]);if(_0x5724d7['name']){delete _0x5724d7['name'];}_0x3c1ecb[_0x6aee('0x18')](_0x9d161)[_0x6aee('0x2a')](_0x5724d7);};}exports['index']=function(_0x90b2dc,_0x4c03e3){var _0x386ad3={},_0x3611d4={},_0xd17624={'count':0x0,'rows':[]};var _0x316e9c=db['AnalyticExtractedReport'][_0x6aee('0x2b')];_0x3611d4[_0x6aee('0x2c')]=_[_0x6aee('0x2d')](_0x316e9c);var _0x3534b0={'dateStart':_0x90b2dc['query'][_0x6aee('0x2e')],'dateEnd':_0x90b2dc[_0x6aee('0x2f')][_0x6aee('0x30')]};delete _0x90b2dc['query'][_0x6aee('0x2e')];delete _0x90b2dc[_0x6aee('0x2f')][_0x6aee('0x30')];_0x3611d4[_0x6aee('0x2f')]=_[_0x6aee('0x2d')](_0x90b2dc[_0x6aee('0x2f')]);_0x3611d4[_0x6aee('0x31')]=_[_0x6aee('0x32')](_0x3611d4[_0x6aee('0x2c')],_0x3611d4['query']);_0x386ad3[_0x6aee('0x33')]=_['intersection'](_0x3611d4[_0x6aee('0x2c')],qs[_0x6aee('0x34')](_0x90b2dc[_0x6aee('0x2f')]['fields']));_0x386ad3['attributes']=_0x386ad3[_0x6aee('0x33')][_0x6aee('0x35')]?_0x386ad3[_0x6aee('0x33')]:_0x3611d4[_0x6aee('0x2c')];if(!_0x90b2dc['query'][_0x6aee('0x36')](_0x6aee('0x37'))){_0x386ad3[_0x6aee('0x1d')]=qs['limit'](_0x90b2dc[_0x6aee('0x2f')][_0x6aee('0x1d')]);_0x386ad3['offset']=qs[_0x6aee('0x1c')](_0x90b2dc['query'][_0x6aee('0x1c')]);}_0x386ad3['order']=qs[_0x6aee('0x38')](_0x90b2dc['query'][_0x6aee('0x38')]);_0x386ad3[_0x6aee('0x39')]=qs[_0x6aee('0x31')](_[_0x6aee('0x3a')](_0x90b2dc['query'],_0x3611d4[_0x6aee('0x31')]));if(_0x3534b0[_0x6aee('0x2e')]){if(_0x3534b0['dateEnd']){_0x3534b0['dateEnd']=moment(_0x3534b0[_0x6aee('0x30')])['add'](0x1,_0x6aee('0x3b'));}else{_0x3534b0['dateEnd']=moment(_0x3534b0['dateStart'])[_0x6aee('0x3c')](0x1,_0x6aee('0x3b'));}_['merge'](_0x386ad3[_0x6aee('0x39')],{'createdAt':{'$gte':_0x3534b0['dateStart'],'$lte':_0x3534b0[_0x6aee('0x30')]}});}if(_0x90b2dc[_0x6aee('0x2f')][_0x6aee('0x3d')]){_0x386ad3[_0x6aee('0x39')]=_[_0x6aee('0x3e')](_0x386ad3[_0x6aee('0x39')],{'$or':_['map'](_0x316e9c,function(_0x383fe4){if(_0x383fe4[_0x6aee('0x3f')][_0x6aee('0x40')]!==_0x6aee('0x41')){var _0x1bb783={};_0x1bb783[_0x383fe4[_0x6aee('0x42')]]={'$like':'%'+_0x90b2dc[_0x6aee('0x2f')]['filter']+'%'};return _0x1bb783;}})});}_0x386ad3=_[_0x6aee('0x3e')]({},_0x386ad3,_0x90b2dc[_0x6aee('0x43')]);var _0x1536a6={'where':_0x386ad3[_0x6aee('0x39')]};return db[_0x6aee('0x44')][_0x6aee('0x1b')](_0x1536a6)[_0x6aee('0x24')](function(_0x18461e){_0xd17624[_0x6aee('0x1b')]=_0x18461e;if(_0x90b2dc[_0x6aee('0x2f')]['includeAll']){_0x386ad3[_0x6aee('0x45')]=[{'all':!![]}];}return db[_0x6aee('0x44')][_0x6aee('0x46')](_0x386ad3);})[_0x6aee('0x24')](function(_0x262659){_0xd17624[_0x6aee('0x47')]=_0x262659;return _0xd17624;})[_0x6aee('0x24')](respondWithFilteredResult(_0x4c03e3,_0x386ad3))[_0x6aee('0x48')](handleError(_0x4c03e3,null));};exports[_0x6aee('0x49')]=function(_0x44084e,_0x546c14){var _0x54ae54={'raw':!![],'where':{'id':_0x44084e[_0x6aee('0x4a')]['id']}},_0xeb020a={};_0xeb020a[_0x6aee('0x2c')]=_[_0x6aee('0x2d')](db[_0x6aee('0x44')][_0x6aee('0x2b')]);_0xeb020a[_0x6aee('0x2f')]=_[_0x6aee('0x2d')](_0x44084e['query']);_0xeb020a['filters']=_['intersection'](_0xeb020a[_0x6aee('0x2c')],_0xeb020a[_0x6aee('0x2f')]);_0x54ae54[_0x6aee('0x33')]=_[_0x6aee('0x32')](_0xeb020a[_0x6aee('0x2c')],qs[_0x6aee('0x34')](_0x44084e[_0x6aee('0x2f')][_0x6aee('0x34')]));_0x54ae54[_0x6aee('0x33')]=_0x54ae54[_0x6aee('0x33')][_0x6aee('0x35')]?_0x54ae54[_0x6aee('0x33')]:_0xeb020a[_0x6aee('0x2c')];if(_0x44084e['query'][_0x6aee('0x4b')]){_0x54ae54['include']=[{'all':!![]}];}_0x54ae54=_[_0x6aee('0x3e')]({},_0x54ae54,_0x44084e[_0x6aee('0x43')]);return db[_0x6aee('0x44')][_0x6aee('0x4c')](_0x54ae54)[_0x6aee('0x24')](handleEntityNotFound(_0x546c14,null))[_0x6aee('0x24')](respondWithResult(_0x546c14,null))[_0x6aee('0x48')](handleError(_0x546c14,null));};exports[_0x6aee('0x4d')]=function(_0x12e48b,_0x3dd455){return db[_0x6aee('0x44')][_0x6aee('0x4d')](_0x12e48b[_0x6aee('0x4e')],{})['then'](function(_0x40f5b5){var _0x35b993=_0x12e48b[_0x6aee('0x4f')][_0x6aee('0x26')]({'plain':!![]});if(!_0x35b993)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x35b993[_0x6aee('0x50')]===_0x6aee('0x4f')){var _0x4c4504=_0x40f5b5[_0x6aee('0x26')]({'plain':!![]});var _0x35a5aa=_0x6aee('0x27');return db[_0x6aee('0x51')][_0x6aee('0x4c')]({'where':{'name':_0x35a5aa,'userProfileId':_0x35b993[_0x6aee('0x52')]},'raw':!![]})[_0x6aee('0x24')](function(_0x488556){if(_0x488556&&_0x488556[_0x6aee('0x53')]===0x0){return db[_0x6aee('0x54')][_0x6aee('0x4d')]({'name':_0x4c4504[_0x6aee('0x55')],'resourceId':_0x4c4504['id'],'type':_0x488556[_0x6aee('0x55')],'sectionId':_0x488556['id']},{})[_0x6aee('0x24')](function(){return _0x40f5b5;});}else{return _0x40f5b5;}})[_0x6aee('0x48')](function(_0x1e8097){logger[_0x6aee('0x28')](_0x6aee('0x56'),_0x1e8097);throw _0x1e8097;});}return _0x40f5b5;})[_0x6aee('0x24')](respondWithResult(_0x3dd455,0xc9))[_0x6aee('0x48')](handleError(_0x3dd455,null));};exports[_0x6aee('0x23')]=function(_0x430d33,_0x33214b){if(_0x430d33[_0x6aee('0x4e')]['id']){delete _0x430d33[_0x6aee('0x4e')]['id'];}return db[_0x6aee('0x44')]['find']({'where':{'id':_0x430d33['params']['id']}})[_0x6aee('0x24')](handleEntityNotFound(_0x33214b,null))[_0x6aee('0x24')](saveUpdates(_0x430d33[_0x6aee('0x4e')],null))[_0x6aee('0x24')](respondWithResult(_0x33214b,null))[_0x6aee('0x48')](handleError(_0x33214b,null));};exports[_0x6aee('0x25')]=function(_0x356cd6,_0x5fb572){return db[_0x6aee('0x44')][_0x6aee('0x4c')]({'where':{'id':_0x356cd6[_0x6aee('0x4a')]['id']}})[_0x6aee('0x24')](handleEntityNotFound(_0x5fb572,null))[_0x6aee('0x24')](removeEntity(_0x5fb572,null))[_0x6aee('0x48')](handleError(_0x5fb572,null));};exports[_0x6aee('0x57')]=function(_0x3d7871,_0x5c2a12,_0x569a8d){return db[_0x6aee('0x44')]['find']({'where':{'id':_0x3d7871[_0x6aee('0x4a')]['id']},'attributes':[_0x6aee('0x55'),_0x6aee('0x58'),'savename','output'],'raw':!![]})['then'](handleEntityNotFound(_0x5c2a12,null))[_0x6aee('0x24')](function(_0x175f9b){if(_0x175f9b){if(!fs[_0x6aee('0x59')](path[_0x6aee('0x5a')](config[_0x6aee('0x5b')],'server/files/reports',_0x175f9b[_0x6aee('0x5c')]))){throw new db[(_0x6aee('0x5d'))][(_0x6aee('0x5e'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x3d7871['query'][_0x6aee('0x5f')]){return _0x5c2a12[_0x6aee('0x17')](0xc8);}return _0x5c2a12[_0x6aee('0x57')](path[_0x6aee('0x5a')](config[_0x6aee('0x5b')],_0x6aee('0x60'),_0x175f9b['savename']),util['format'](_0x6aee('0x61'),_0x175f9b[_0x6aee('0x58')]||_0x175f9b[_0x6aee('0x55')],_0x175f9b[_0x6aee('0x62')][_0x6aee('0x63')]()));}})[_0x6aee('0x48')](handleError(_0x5c2a12,null));};
\ No newline at end of file
index 496b099..bea1841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed4b=['bluebird','request-promise','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','moment'];(function(_0x55f900,_0x273858){var _0x38db3f=function(_0x1e4d0d){while(--_0x1e4d0d){_0x55f900['push'](_0x55f900['shift']());}};_0x38db3f(++_0x273858);}(_0xed4b,0x96));var _0xbed4=function(_0x1dd7bd,_0x57400c){_0x1dd7bd=_0x1dd7bd-0x0;var _0x2c3cc0=_0xed4b[_0x1dd7bd];return _0x2c3cc0;};'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 attributes=require(_0xbed4('0x6'));module[_0xbed4('0x7')]=function(_0x199dc0,_0x54a62a){return _0x199dc0[_0xbed4('0x8')](_0xbed4('0x9'),attributes,{'tableName':_0xbed4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf93d=['../../config/logger','api','moment','bluebird','request-promise','./analyticExtractedReport.attributes','exports','analytics_extracted_reports','util'];(function(_0x55d608,_0x2e9858){var _0x27ff79=function(_0x49f47c){while(--_0x49f47c){_0x55d608['push'](_0x55d608['shift']());}};_0x27ff79(++_0x2e9858);}(_0xf93d,0x11f));var _0xdf93=function(_0x5d5b72,_0x305ffa){_0x5d5b72=_0x5d5b72-0x0;var _0x4dcfc8=_0xf93d[_0x5d5b72];return _0x4dcfc8;};'use strict';var _=require('lodash');var util=require(_0xdf93('0x0'));var logger=require(_0xdf93('0x1'))(_0xdf93('0x2'));var moment=require(_0xdf93('0x3'));var BPromise=require(_0xdf93('0x4'));var rp=require(_0xdf93('0x5'));var attributes=require(_0xdf93('0x6'));module[_0xdf93('0x7')]=function(_0x4777cc,_0x209bb5){return _0x4777cc['define']('AnalyticExtractedReport',attributes,{'tableName':_0xdf93('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba48a82..05f429d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf2=['error','AnalyticExtractedReport,\x20%s,\x20%s','message','request\x20sent','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xfd1945,_0x29827d){var _0x53d788=function(_0x34cbb6){while(--_0x34cbb6){_0xfd1945['push'](_0xfd1945['shift']());}};_0x53d788(++_0x29827d);}(_0xcaf2,0xd6));var _0x2caf=function(_0x27e2bc,_0x1f5bb1){_0x27e2bc=_0x27e2bc-0x0;var _0x303eed=_0xcaf2[_0x27e2bc];return _0x303eed;};'use strict';var _=require(_0x2caf('0x0'));var util=require(_0x2caf('0x1'));var moment=require(_0x2caf('0x2'));var BPromise=require(_0x2caf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2caf('0x4'));var db=require(_0x2caf('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2caf('0x6'))('rpc');var config=require(_0x2caf('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2caf('0x8')][_0x2caf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x465b8a,_0x4e0139,_0x29e5ea){return new BPromise(function(_0x3742d5,_0x1000db){return client[_0x2caf('0xa')](_0x465b8a,_0x29e5ea)[_0x2caf('0xb')](function(_0x48bb02){logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0x4e0139,'request\x20sent');logger['debug'](_0x2caf('0xc'),_0x4e0139,'request\x20sent',JSON[_0x2caf('0xd')](_0x48bb02));if(_0x48bb02[_0x2caf('0xe')]){if(_0x48bb02[_0x2caf('0xe')]['code']===0x1f4){logger[_0x2caf('0xe')](_0x2caf('0xf'),_0x4e0139,_0x48bb02[_0x2caf('0xe')][_0x2caf('0x10')]);return _0x1000db(_0x48bb02[_0x2caf('0xe')][_0x2caf('0x10')]);}logger[_0x2caf('0xe')](_0x2caf('0xf'),_0x4e0139,_0x48bb02[_0x2caf('0xe')][_0x2caf('0x10')]);return _0x3742d5(_0x48bb02[_0x2caf('0xe')][_0x2caf('0x10')]);}else{logger['info'](_0x2caf('0xf'),_0x4e0139,_0x2caf('0x11'));_0x3742d5(_0x48bb02[_0x2caf('0x12')][_0x2caf('0x10')]);}})['catch'](function(_0x5b1090){logger[_0x2caf('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4e0139,_0x5b1090);_0x1000db(_0x5b1090);});});}
\ No newline at end of file
+var _0x5e68=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','catch','util','moment','bluebird'];(function(_0x562563,_0x2dc2ec){var _0x47c128=function(_0x5d73d9){while(--_0x5d73d9){_0x562563['push'](_0x562563['shift']());}};_0x47c128(++_0x2dc2ec);}(_0x5e68,0x81));var _0x85e6=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x5e68[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x85e6('0x0'));var moment=require(_0x85e6('0x1'));var BPromise=require(_0x85e6('0x2'));var rs=require(_0x85e6('0x3'));var fs=require('fs');var Redis=require(_0x85e6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x85e6('0x5'));var logger=require(_0x85e6('0x6'))(_0x85e6('0x7'));var config=require(_0x85e6('0x8'));var jayson=require(_0x85e6('0x9'));var client=jayson[_0x85e6('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x33710f,_0x50e3ad,_0x6ae173){return new BPromise(function(_0x520f9f,_0x2f9b90){return client[_0x85e6('0xb')](_0x33710f,_0x6ae173)['then'](function(_0x1bbfbe){logger[_0x85e6('0xc')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x50e3ad,_0x85e6('0xd'));logger[_0x85e6('0xe')](_0x85e6('0xf'),_0x50e3ad,_0x85e6('0xd'),JSON[_0x85e6('0x10')](_0x1bbfbe));if(_0x1bbfbe[_0x85e6('0x11')]){if(_0x1bbfbe[_0x85e6('0x11')][_0x85e6('0x12')]===0x1f4){logger['error'](_0x85e6('0x13'),_0x50e3ad,_0x1bbfbe[_0x85e6('0x11')][_0x85e6('0x14')]);return _0x2f9b90(_0x1bbfbe[_0x85e6('0x11')]['message']);}logger['error'](_0x85e6('0x13'),_0x50e3ad,_0x1bbfbe['error']['message']);return _0x520f9f(_0x1bbfbe['error'][_0x85e6('0x14')]);}else{logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0x50e3ad,_0x85e6('0xd'));_0x520f9f(_0x1bbfbe['result'][_0x85e6('0x14')]);}})[_0x85e6('0x15')](function(_0x3bdd73){logger['error'](_0x85e6('0x13'),_0x50e3ad,_0x3bdd73);_0x2f9b90(_0x3bdd73);});});}
\ No newline at end of file
index 0545ff6..4aeba23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f0f=['/:id','show','/:id/download','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index'];(function(_0x142de1,_0x27c066){var _0x14c10d=function(_0x550a30){while(--_0x550a30){_0x142de1['push'](_0x142de1['shift']());}};_0x14c10d(++_0x27c066);}(_0x2f0f,0x7b));var _0xf2f0=function(_0x19f727,_0x28224e){_0x19f727=_0x19f727-0x0;var _0x412836=_0x2f0f[_0x19f727];return _0x412836;};'use strict';var multer=require(_0xf2f0('0x0'));var util=require('util');var path=require(_0xf2f0('0x1'));var timeout=require(_0xf2f0('0x2'));var express=require(_0xf2f0('0x3'));var router=express[_0xf2f0('0x4')]();var auth=require(_0xf2f0('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf2f0('0x6'));var controller=require('./analyticExtractedReport.controller');router[_0xf2f0('0x7')]('/',auth[_0xf2f0('0x8')](),controller[_0xf2f0('0x9')]);router[_0xf2f0('0x7')](_0xf2f0('0xa'),auth[_0xf2f0('0x8')](),controller[_0xf2f0('0xb')]);router[_0xf2f0('0x7')](_0xf2f0('0xc'),auth['isAuthenticated'](),controller['download']);router[_0xf2f0('0xd')]('/',auth[_0xf2f0('0x8')](),controller[_0xf2f0('0xe')]);router['put']('/:id',auth[_0xf2f0('0x8')](),controller[_0xf2f0('0xf')]);router[_0xf2f0('0x10')](_0xf2f0('0xa'),auth['isAuthenticated'](),controller[_0xf2f0('0x11')]);module[_0xf2f0('0x12')]=router;
\ No newline at end of file
+var _0x0dec=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','download','create','put','update','delete','exports'];(function(_0x13b4ad,_0x15e3ef){var _0x3c3c91=function(_0x3c9d88){while(--_0x3c9d88){_0x13b4ad['push'](_0x13b4ad['shift']());}};_0x3c3c91(++_0x15e3ef);}(_0x0dec,0x98));var _0xc0de=function(_0x464b5d,_0x1edac1){_0x464b5d=_0x464b5d-0x0;var _0xa8f57d=_0x0dec[_0x464b5d];return _0xa8f57d;};'use strict';var multer=require('multer');var util=require(_0xc0de('0x0'));var path=require(_0xc0de('0x1'));var timeout=require(_0xc0de('0x2'));var express=require(_0xc0de('0x3'));var router=express[_0xc0de('0x4')]();var auth=require(_0xc0de('0x5'));var interaction=require(_0xc0de('0x6'));var config=require(_0xc0de('0x7'));var controller=require(_0xc0de('0x8'));router[_0xc0de('0x9')]('/',auth[_0xc0de('0xa')](),controller[_0xc0de('0xb')]);router['get'](_0xc0de('0xc'),auth[_0xc0de('0xa')](),controller['show']);router[_0xc0de('0x9')]('/:id/download',auth[_0xc0de('0xa')](),controller[_0xc0de('0xd')]);router['post']('/',auth[_0xc0de('0xa')](),controller[_0xc0de('0xe')]);router[_0xc0de('0xf')](_0xc0de('0xc'),auth['isAuthenticated'](),controller[_0xc0de('0x10')]);router[_0xc0de('0x11')](_0xc0de('0xc'),auth[_0xc0de('0xa')](),controller['destroy']);module[_0xc0de('0x12')]=router;
\ No newline at end of file
index f43cf6d..0ea9d1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc00a=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x4e1ac6,_0x56d536){var _0x325075=function(_0x4e77f2){while(--_0x4e77f2){_0x4e1ac6['push'](_0x4e1ac6['shift']());}};_0x325075(++_0x56d536);}(_0xc00a,0xdf));var _0xac00=function(_0x4320ce,_0x49f5f5){_0x4320ce=_0x4320ce-0x0;var _0x537dae=_0xc00a[_0x4320ce];return _0x537dae;};'use strict';var Sequelize=require(_0xac00('0x0'));module[_0xac00('0x1')]={'field':{'type':Sequelize[_0xac00('0x2')]},'alias':{'type':Sequelize[_0xac00('0x3')]},'function':{'type':Sequelize[_0xac00('0x3')]},'format':{'type':Sequelize[_0xac00('0x3')]},'groupBy':{'type':Sequelize[_0xac00('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xac00('0x3')]},'custom':{'type':Sequelize[_0xac00('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8391=['sequelize','TEXT','STRING','BOOLEAN'];(function(_0x2f2ed0,_0x1c6435){var _0x250b0d=function(_0x1909c1){while(--_0x1909c1){_0x2f2ed0['push'](_0x2f2ed0['shift']());}};_0x250b0d(++_0x1c6435);}(_0x8391,0x8c));var _0x1839=function(_0x562650,_0x2380e8){_0x562650=_0x562650-0x0;var _0x164aec=_0x8391[_0x562650];return _0x164aec;};'use strict';var Sequelize=require(_0x1839('0x0'));module['exports']={'field':{'type':Sequelize[_0x1839('0x1')]},'alias':{'type':Sequelize[_0x1839('0x2')]},'function':{'type':Sequelize[_0x1839('0x2')]},'format':{'type':Sequelize[_0x1839('0x2')]},'groupBy':{'type':Sequelize[_0x1839('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x1839('0x2')]},'custom':{'type':Sequelize[_0x1839('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 5371e66..28de0cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a5c=['destroy','then','stack','name','send','AnalyticFieldReport','rawAttributes','keys','dateStart','query','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','where','pick','dateEnd','add','day','merge','filter','map','type','VIRTUAL','field','includeAll','include','rows','show','params','options','find','catch','create','body','bulkCreate','update','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','sendStatus','status','json','count','offset','Content-Range','apply','reject','save'];(function(_0x449d86,_0x45d338){var _0x3226fa=function(_0x3e44a0){while(--_0x3e44a0){_0x449d86['push'](_0x449d86['shift']());}};_0x3226fa(++_0x45d338);}(_0x1a5c,0x1b7));var _0xc1a5=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0x1a5c[_0x186376];return _0x2dbdd9;};'use strict';var pdf=require(_0xc1a5('0x0'));var emlformat=require(_0xc1a5('0x1'));var rimraf=require(_0xc1a5('0x2'));var zipdir=require(_0xc1a5('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc1a5('0x4'));var moment=require(_0xc1a5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc1a5('0x6'));var util=require(_0xc1a5('0x7'));var path=require(_0xc1a5('0x8'));var sox=require(_0xc1a5('0x9'));var csv=require('to-csv');var ejs=require(_0xc1a5('0xa'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc1a5('0xb'));var deskjs=require(_0xc1a5('0xc'));var toCsv=require(_0xc1a5('0xd'));var querystring=require(_0xc1a5('0xe'));var Papa=require(_0xc1a5('0xf'));var Redis=require(_0xc1a5('0x10'));var qs=require(_0xc1a5('0x11'));var logger=require(_0xc1a5('0x12'))(_0xc1a5('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a8daa,_0x9f1b14){_0x9f1b14=_0x9f1b14||0xcc;return function(_0x55c63d){if(_0x55c63d){return _0x2a8daa[_0xc1a5('0x14')](_0x9f1b14);}return _0x2a8daa[_0xc1a5('0x15')](_0x9f1b14)['end']();};}function respondWithResult(_0x418eda,_0x187551){_0x187551=_0x187551||0xc8;return function(_0x20125e){if(_0x20125e){return _0x418eda['status'](_0x187551)[_0xc1a5('0x16')](_0x20125e);}};}function respondWithFilteredResult(_0x38c418,_0x2229e3){return function(_0x162eed){if(_0x162eed){var _0x5d0f69=_0x162eed[_0xc1a5('0x17')],_0x201b23=_0x2229e3[_0xc1a5('0x18')],_0x554548=_0x2229e3[_0xc1a5('0x18')]+_0x2229e3['limit'],_0x17265c;if(_0x554548>=_0x5d0f69){_0x554548=_0x5d0f69;_0x17265c=0xc8;}else{_0x17265c=0xce;}_0x38c418[_0xc1a5('0x15')](_0x17265c);return _0x38c418['set'](_0xc1a5('0x19'),_0x201b23+'-'+_0x554548+'/'+_0x5d0f69)['json'](_0x162eed);}return null;};}function patchUpdates(_0x8494dc){return function(_0x197b9a){try{jsonpatch[_0xc1a5('0x1a')](_0x197b9a,_0x8494dc,!![]);}catch(_0x3dbfa0){return BPromise[_0xc1a5('0x1b')](_0x3dbfa0);}return _0x197b9a[_0xc1a5('0x1c')]();};}function saveUpdates(_0x1b621a,_0x36e5bf){return function(_0x4cfd5d){if(_0x4cfd5d){return _0x4cfd5d['update'](_0x1b621a)['then'](function(_0x37a22e){return _0x37a22e;});}return null;};}function removeEntity(_0x45fcba,_0x43c1ef){return function(_0x4dfe1b){if(_0x4dfe1b){return _0x4dfe1b[_0xc1a5('0x1d')]()[_0xc1a5('0x1e')](function(){_0x45fcba[_0xc1a5('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d50c1,_0x264eca){return function(_0x28f98c){if(!_0x28f98c){_0x1d50c1['sendStatus'](0x194);}return _0x28f98c;};}function handleError(_0x339ff9,_0x9359e6){_0x9359e6=_0x9359e6||0x1f4;return function(_0x42c4b9){logger['error'](_0x42c4b9[_0xc1a5('0x1f')]);if(_0x42c4b9[_0xc1a5('0x20')]){delete _0x42c4b9[_0xc1a5('0x20')];}_0x339ff9[_0xc1a5('0x15')](_0x9359e6)[_0xc1a5('0x21')](_0x42c4b9);};}exports['index']=function(_0x198709,_0x420217){var _0x585b75={},_0x36a637={},_0x4b10b2={'count':0x0,'rows':[]};var _0x6aef94=db[_0xc1a5('0x22')][_0xc1a5('0x23')];_0x36a637['model']=_[_0xc1a5('0x24')](_0x6aef94);var _0x4be7a6={'dateStart':_0x198709['query'][_0xc1a5('0x25')],'dateEnd':_0x198709[_0xc1a5('0x26')]['dateEnd']};delete _0x198709[_0xc1a5('0x26')][_0xc1a5('0x25')];delete _0x198709['query']['dateEnd'];_0x36a637[_0xc1a5('0x26')]=_[_0xc1a5('0x24')](_0x198709[_0xc1a5('0x26')]);_0x36a637[_0xc1a5('0x27')]=_[_0xc1a5('0x28')](_0x36a637[_0xc1a5('0x29')],_0x36a637[_0xc1a5('0x26')]);_0x585b75[_0xc1a5('0x2a')]=_['intersection'](_0x36a637[_0xc1a5('0x29')],qs[_0xc1a5('0x2b')](_0x198709[_0xc1a5('0x26')][_0xc1a5('0x2b')]));_0x585b75[_0xc1a5('0x2a')]=_0x585b75['attributes'][_0xc1a5('0x2c')]?_0x585b75['attributes']:_0x36a637[_0xc1a5('0x29')];if(!_0x198709[_0xc1a5('0x26')]['hasOwnProperty'](_0xc1a5('0x2d'))){_0x585b75[_0xc1a5('0x2e')]=qs['limit'](_0x198709[_0xc1a5('0x26')]['limit']);_0x585b75[_0xc1a5('0x18')]=qs[_0xc1a5('0x18')](_0x198709['query'][_0xc1a5('0x18')]);}_0x585b75[_0xc1a5('0x2f')]=qs['sort'](_0x198709[_0xc1a5('0x26')][_0xc1a5('0x30')]);_0x585b75[_0xc1a5('0x31')]=qs['filters'](_[_0xc1a5('0x32')](_0x198709[_0xc1a5('0x26')],_0x36a637[_0xc1a5('0x27')]));if(_0x4be7a6[_0xc1a5('0x25')]){if(_0x4be7a6[_0xc1a5('0x33')]){_0x4be7a6[_0xc1a5('0x33')]=moment(_0x4be7a6[_0xc1a5('0x33')])['add'](0x1,'day');}else{_0x4be7a6[_0xc1a5('0x33')]=moment(_0x4be7a6[_0xc1a5('0x25')])[_0xc1a5('0x34')](0x1,_0xc1a5('0x35'));}_[_0xc1a5('0x36')](_0x585b75[_0xc1a5('0x31')],{'createdAt':{'$gte':_0x4be7a6[_0xc1a5('0x25')],'$lte':_0x4be7a6['dateEnd']}});}if(_0x198709[_0xc1a5('0x26')][_0xc1a5('0x37')]){_0x585b75[_0xc1a5('0x31')]=_[_0xc1a5('0x36')](_0x585b75[_0xc1a5('0x31')],{'$or':_[_0xc1a5('0x38')](_0x6aef94,function(_0xf38037){if(_0xf38037[_0xc1a5('0x39')]['key']!==_0xc1a5('0x3a')){var _0x44593d={};_0x44593d[_0xf38037[_0xc1a5('0x3b')]]={'$like':'%'+_0x198709['query'][_0xc1a5('0x37')]+'%'};return _0x44593d;}})});}_0x585b75=_[_0xc1a5('0x36')]({},_0x585b75,_0x198709['options']);var _0x3c6944={'where':_0x585b75['where']};return db[_0xc1a5('0x22')]['count'](_0x3c6944)[_0xc1a5('0x1e')](function(_0x2196d6){_0x4b10b2['count']=_0x2196d6;if(_0x198709[_0xc1a5('0x26')][_0xc1a5('0x3c')]){_0x585b75[_0xc1a5('0x3d')]=[{'all':!![]}];}return db[_0xc1a5('0x22')]['findAll'](_0x585b75);})['then'](function(_0x5cc740){_0x4b10b2[_0xc1a5('0x3e')]=_0x5cc740;return _0x4b10b2;})['then'](respondWithFilteredResult(_0x420217,_0x585b75))['catch'](handleError(_0x420217,null));};exports[_0xc1a5('0x3f')]=function(_0x3aac0b,_0x2742e8){var _0x3af8a2={'raw':![],'where':{'id':_0x3aac0b[_0xc1a5('0x40')]['id']}},_0x773e43={};_0x773e43[_0xc1a5('0x29')]=_[_0xc1a5('0x24')](db['AnalyticFieldReport'][_0xc1a5('0x23')]);_0x773e43[_0xc1a5('0x26')]=_[_0xc1a5('0x24')](_0x3aac0b['query']);_0x773e43['filters']=_['intersection'](_0x773e43[_0xc1a5('0x29')],_0x773e43[_0xc1a5('0x26')]);_0x3af8a2[_0xc1a5('0x2a')]=_['intersection'](_0x773e43[_0xc1a5('0x29')],qs['fields'](_0x3aac0b[_0xc1a5('0x26')][_0xc1a5('0x2b')]));_0x3af8a2['attributes']=_0x3af8a2[_0xc1a5('0x2a')][_0xc1a5('0x2c')]?_0x3af8a2[_0xc1a5('0x2a')]:_0x773e43[_0xc1a5('0x29')];if(_0x3aac0b['query'][_0xc1a5('0x3c')]){_0x3af8a2[_0xc1a5('0x3d')]=[{'all':!![]}];}_0x3af8a2=_['merge']({},_0x3af8a2,_0x3aac0b[_0xc1a5('0x41')]);return db[_0xc1a5('0x22')][_0xc1a5('0x42')](_0x3af8a2)[_0xc1a5('0x1e')](handleEntityNotFound(_0x2742e8,null))['then'](respondWithResult(_0x2742e8,null))[_0xc1a5('0x43')](handleError(_0x2742e8,null));};exports[_0xc1a5('0x44')]=function(_0x577bfe,_0x22d41e){return db[_0xc1a5('0x22')][_0xc1a5('0x44')](_0x577bfe[_0xc1a5('0x45')],{})[_0xc1a5('0x1e')](respondWithResult(_0x22d41e,0xc9))[_0xc1a5('0x43')](handleError(_0x22d41e,null));};exports[_0xc1a5('0x46')]=function(_0x42eee3,_0x20cb36){return db[_0xc1a5('0x22')][_0xc1a5('0x46')](_0x42eee3[_0xc1a5('0x45')],{'raw':![],'individualHooks':!![]})[_0xc1a5('0x1e')](respondWithResult(_0x20cb36,0xc9))[_0xc1a5('0x43')](handleError(_0x20cb36,null));};exports[_0xc1a5('0x47')]=function(_0x5838aa,_0xb250fe){if(_0x5838aa[_0xc1a5('0x45')]['id']){delete _0x5838aa[_0xc1a5('0x45')]['id'];}return db[_0xc1a5('0x22')][_0xc1a5('0x42')]({'where':{'id':_0x5838aa[_0xc1a5('0x40')]['id']}})[_0xc1a5('0x1e')](handleEntityNotFound(_0xb250fe,null))[_0xc1a5('0x1e')](saveUpdates(_0x5838aa[_0xc1a5('0x45')],null))[_0xc1a5('0x1e')](respondWithResult(_0xb250fe,null))[_0xc1a5('0x43')](handleError(_0xb250fe,null));};exports['destroy']=function(_0x128434,_0x325a55){return db['AnalyticFieldReport'][_0xc1a5('0x42')]({'where':{'id':_0x128434[_0xc1a5('0x40')]['id']}})[_0xc1a5('0x1e')](handleEntityNotFound(_0x325a55,null))[_0xc1a5('0x1e')](removeEntity(_0x325a55,null))[_0xc1a5('0x43')](handleError(_0x325a55,null));};exports['bulkDestroy']=function(_0x3ef616,_0x6e4ef2){return db[_0xc1a5('0x22')]['destroy']({'where':{'id':_0x3ef616[_0xc1a5('0x26')][_0xc1a5('0x48')]||[]},'raw':![],'individualHooks':!![]})[_0xc1a5('0x1e')](respondWithResult(_0x6e4ef2,0xcc))[_0xc1a5('0x43')](handleError(_0x6e4ef2,null));};exports[_0xc1a5('0x49')]=function(_0x21b75c,_0x33ba13,_0x283c7c){return db[_0xc1a5('0x4a')][_0xc1a5('0x4b')]({'where':{'id':_0x21b75c[_0xc1a5('0x40')]['id']}})[_0xc1a5('0x1e')](handleEntityNotFound(_0x33ba13,null))[_0xc1a5('0x1e')](function(_0x46195b){if(_0x46195b){return db[_0xc1a5('0x4c')][_0xc1a5('0x4d')](function(_0x1dc611){return db[_0xc1a5('0x22')][_0xc1a5('0x1d')]({'where':{'CustomReportId':_0x21b75c[_0xc1a5('0x40')]['id']},'transaction':_0x1dc611})['then'](function(_0x4975ae){var _0x571c76=_[_0xc1a5('0x38')](_0x21b75c[_0xc1a5('0x45')],function(_0x4f81b0){delete _0x4f81b0['id'];_0x4f81b0['CustomReportId']=_0x21b75c[_0xc1a5('0x40')]['id'];return _0x4f81b0;});return db['AnalyticFieldReport'][_0xc1a5('0x46')](_0x571c76,{'transaction':_0x1dc611});});})['then'](function(){return db['AnalyticFieldReport']['findAll']({'where':{'CustomReportId':_0x21b75c[_0xc1a5('0x40')]['id']}});});}})[_0xc1a5('0x1e')](respondWithResult(_0x33ba13,null))['catch'](handleError(_0x33ba13,null));};
\ No newline at end of file
+var _0x1b5f=['dateEnd','intersection','attributes','fields','hasOwnProperty','order','where','filters','pick','add','day','filter','merge','map','type','key','VIRTUAL','field','options','includeAll','rows','catch','show','params','include','find','create','body','bulkCreate','bulkDestroy','ids','sequelize','findAll','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','apply','save','then','destroy','error','name','send','index','AnalyticFieldReport','rawAttributes','model','keys','query','dateStart'];(function(_0xd299c3,_0x4ba0f1){var _0x376574=function(_0xc585f){while(--_0xc585f){_0xd299c3['push'](_0xd299c3['shift']());}};_0x376574(++_0x4ba0f1);}(_0x1b5f,0x1a7));var _0xf1b5=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x1b5f[_0x57b54c];return _0x59cc19;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xf1b5('0x0'));var rimraf=require(_0xf1b5('0x1'));var zipdir=require(_0xf1b5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf1b5('0x3'));var moment=require(_0xf1b5('0x4'));var BPromise=require(_0xf1b5('0x5'));var Mustache=require(_0xf1b5('0x6'));var util=require(_0xf1b5('0x7'));var path=require(_0xf1b5('0x8'));var sox=require(_0xf1b5('0x9'));var csv=require(_0xf1b5('0xa'));var ejs=require(_0xf1b5('0xb'));var fs=require('fs');var _=require(_0xf1b5('0xc'));var squel=require(_0xf1b5('0xd'));var crypto=require(_0xf1b5('0xe'));var jsforce=require(_0xf1b5('0xf'));var deskjs=require(_0xf1b5('0x10'));var toCsv=require(_0xf1b5('0xa'));var querystring=require('querystring');var Papa=require(_0xf1b5('0x11'));var Redis=require('ioredis');var qs=require(_0xf1b5('0x12'));var logger=require(_0xf1b5('0x13'))(_0xf1b5('0x14'));var utils=require('../../config/utils');var config=require(_0xf1b5('0x15'));var db=require(_0xf1b5('0x16'))['db'];function respondWithStatusCode(_0x3e825b,_0x1b3453){_0x1b3453=_0x1b3453||0xcc;return function(_0x29a583){if(_0x29a583){return _0x3e825b[_0xf1b5('0x17')](_0x1b3453);}return _0x3e825b[_0xf1b5('0x18')](_0x1b3453)[_0xf1b5('0x19')]();};}function respondWithResult(_0x1e9bde,_0x47f266){_0x47f266=_0x47f266||0xc8;return function(_0x47dea9){if(_0x47dea9){return _0x1e9bde[_0xf1b5('0x18')](_0x47f266)[_0xf1b5('0x1a')](_0x47dea9);}};}function respondWithFilteredResult(_0x1e6de1,_0x3bf7ac){return function(_0x244ec1){if(_0x244ec1){var _0x32d69a=_0x244ec1[_0xf1b5('0x1b')],_0x23a396=_0x3bf7ac[_0xf1b5('0x1c')],_0x41ad0a=_0x3bf7ac['offset']+_0x3bf7ac[_0xf1b5('0x1d')],_0x537e11;if(_0x41ad0a>=_0x32d69a){_0x41ad0a=_0x32d69a;_0x537e11=0xc8;}else{_0x537e11=0xce;}_0x1e6de1[_0xf1b5('0x18')](_0x537e11);return _0x1e6de1[_0xf1b5('0x1e')]('Content-Range',_0x23a396+'-'+_0x41ad0a+'/'+_0x32d69a)['json'](_0x244ec1);}return null;};}function patchUpdates(_0x34ffb5){return function(_0x280e89){try{jsonpatch[_0xf1b5('0x1f')](_0x280e89,_0x34ffb5,!![]);}catch(_0x12ad74){return BPromise['reject'](_0x12ad74);}return _0x280e89[_0xf1b5('0x20')]();};}function saveUpdates(_0x1a4a8b,_0x5c037a){return function(_0x397732){if(_0x397732){return _0x397732['update'](_0x1a4a8b)[_0xf1b5('0x21')](function(_0x5908c8){return _0x5908c8;});}return null;};}function removeEntity(_0x17a4ae,_0x54c3d8){return function(_0x2c4224){if(_0x2c4224){return _0x2c4224[_0xf1b5('0x22')]()[_0xf1b5('0x21')](function(){_0x17a4ae[_0xf1b5('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44309d,_0x454659){return function(_0x3b2975){if(!_0x3b2975){_0x44309d[_0xf1b5('0x17')](0x194);}return _0x3b2975;};}function handleError(_0x4154af,_0x24cbd4){_0x24cbd4=_0x24cbd4||0x1f4;return function(_0xdafd96){logger[_0xf1b5('0x23')](_0xdafd96['stack']);if(_0xdafd96['name']){delete _0xdafd96[_0xf1b5('0x24')];}_0x4154af['status'](_0x24cbd4)[_0xf1b5('0x25')](_0xdafd96);};}exports[_0xf1b5('0x26')]=function(_0x49d584,_0x19ee13){var _0x2e3896={},_0x5c1e5c={},_0x3827a5={'count':0x0,'rows':[]};var _0x8f6689=db[_0xf1b5('0x27')][_0xf1b5('0x28')];_0x5c1e5c[_0xf1b5('0x29')]=_[_0xf1b5('0x2a')](_0x8f6689);var _0x171d08={'dateStart':_0x49d584[_0xf1b5('0x2b')][_0xf1b5('0x2c')],'dateEnd':_0x49d584['query'][_0xf1b5('0x2d')]};delete _0x49d584['query'][_0xf1b5('0x2c')];delete _0x49d584[_0xf1b5('0x2b')][_0xf1b5('0x2d')];_0x5c1e5c['query']=_[_0xf1b5('0x2a')](_0x49d584['query']);_0x5c1e5c['filters']=_[_0xf1b5('0x2e')](_0x5c1e5c[_0xf1b5('0x29')],_0x5c1e5c[_0xf1b5('0x2b')]);_0x2e3896[_0xf1b5('0x2f')]=_['intersection'](_0x5c1e5c[_0xf1b5('0x29')],qs[_0xf1b5('0x30')](_0x49d584[_0xf1b5('0x2b')]['fields']));_0x2e3896[_0xf1b5('0x2f')]=_0x2e3896[_0xf1b5('0x2f')]['length']?_0x2e3896[_0xf1b5('0x2f')]:_0x5c1e5c['model'];if(!_0x49d584[_0xf1b5('0x2b')][_0xf1b5('0x31')]('nolimit')){_0x2e3896[_0xf1b5('0x1d')]=qs[_0xf1b5('0x1d')](_0x49d584[_0xf1b5('0x2b')][_0xf1b5('0x1d')]);_0x2e3896[_0xf1b5('0x1c')]=qs['offset'](_0x49d584['query'][_0xf1b5('0x1c')]);}_0x2e3896[_0xf1b5('0x32')]=qs['sort'](_0x49d584[_0xf1b5('0x2b')]['sort']);_0x2e3896[_0xf1b5('0x33')]=qs[_0xf1b5('0x34')](_[_0xf1b5('0x35')](_0x49d584[_0xf1b5('0x2b')],_0x5c1e5c[_0xf1b5('0x34')]));if(_0x171d08[_0xf1b5('0x2c')]){if(_0x171d08['dateEnd']){_0x171d08[_0xf1b5('0x2d')]=moment(_0x171d08[_0xf1b5('0x2d')])[_0xf1b5('0x36')](0x1,_0xf1b5('0x37'));}else{_0x171d08['dateEnd']=moment(_0x171d08[_0xf1b5('0x2c')])[_0xf1b5('0x36')](0x1,_0xf1b5('0x37'));}_['merge'](_0x2e3896[_0xf1b5('0x33')],{'createdAt':{'$gte':_0x171d08[_0xf1b5('0x2c')],'$lte':_0x171d08[_0xf1b5('0x2d')]}});}if(_0x49d584[_0xf1b5('0x2b')][_0xf1b5('0x38')]){_0x2e3896[_0xf1b5('0x33')]=_[_0xf1b5('0x39')](_0x2e3896[_0xf1b5('0x33')],{'$or':_[_0xf1b5('0x3a')](_0x8f6689,function(_0x12c18f){if(_0x12c18f[_0xf1b5('0x3b')][_0xf1b5('0x3c')]!==_0xf1b5('0x3d')){var _0x36fbaa={};_0x36fbaa[_0x12c18f[_0xf1b5('0x3e')]]={'$like':'%'+_0x49d584[_0xf1b5('0x2b')][_0xf1b5('0x38')]+'%'};return _0x36fbaa;}})});}_0x2e3896=_[_0xf1b5('0x39')]({},_0x2e3896,_0x49d584[_0xf1b5('0x3f')]);var _0x3caf8d={'where':_0x2e3896[_0xf1b5('0x33')]};return db['AnalyticFieldReport']['count'](_0x3caf8d)[_0xf1b5('0x21')](function(_0x2cb7ae){_0x3827a5[_0xf1b5('0x1b')]=_0x2cb7ae;if(_0x49d584[_0xf1b5('0x2b')][_0xf1b5('0x40')]){_0x2e3896['include']=[{'all':!![]}];}return db[_0xf1b5('0x27')]['findAll'](_0x2e3896);})[_0xf1b5('0x21')](function(_0x497f0b){_0x3827a5[_0xf1b5('0x41')]=_0x497f0b;return _0x3827a5;})[_0xf1b5('0x21')](respondWithFilteredResult(_0x19ee13,_0x2e3896))[_0xf1b5('0x42')](handleError(_0x19ee13,null));};exports[_0xf1b5('0x43')]=function(_0x309caf,_0xe17bb1){var _0x3877b3={'raw':![],'where':{'id':_0x309caf[_0xf1b5('0x44')]['id']}},_0x4a61bc={};_0x4a61bc[_0xf1b5('0x29')]=_[_0xf1b5('0x2a')](db[_0xf1b5('0x27')][_0xf1b5('0x28')]);_0x4a61bc[_0xf1b5('0x2b')]=_[_0xf1b5('0x2a')](_0x309caf['query']);_0x4a61bc['filters']=_[_0xf1b5('0x2e')](_0x4a61bc[_0xf1b5('0x29')],_0x4a61bc[_0xf1b5('0x2b')]);_0x3877b3[_0xf1b5('0x2f')]=_['intersection'](_0x4a61bc[_0xf1b5('0x29')],qs['fields'](_0x309caf['query'][_0xf1b5('0x30')]));_0x3877b3[_0xf1b5('0x2f')]=_0x3877b3[_0xf1b5('0x2f')]['length']?_0x3877b3[_0xf1b5('0x2f')]:_0x4a61bc['model'];if(_0x309caf[_0xf1b5('0x2b')][_0xf1b5('0x40')]){_0x3877b3[_0xf1b5('0x45')]=[{'all':!![]}];}_0x3877b3=_[_0xf1b5('0x39')]({},_0x3877b3,_0x309caf[_0xf1b5('0x3f')]);return db['AnalyticFieldReport'][_0xf1b5('0x46')](_0x3877b3)['then'](handleEntityNotFound(_0xe17bb1,null))[_0xf1b5('0x21')](respondWithResult(_0xe17bb1,null))[_0xf1b5('0x42')](handleError(_0xe17bb1,null));};exports[_0xf1b5('0x47')]=function(_0x364c92,_0x5a2fe1){return db[_0xf1b5('0x27')][_0xf1b5('0x47')](_0x364c92[_0xf1b5('0x48')],{})[_0xf1b5('0x21')](respondWithResult(_0x5a2fe1,0xc9))[_0xf1b5('0x42')](handleError(_0x5a2fe1,null));};exports[_0xf1b5('0x49')]=function(_0x3dd196,_0x380059){return db[_0xf1b5('0x27')][_0xf1b5('0x49')](_0x3dd196['body'],{'raw':![],'individualHooks':!![]})[_0xf1b5('0x21')](respondWithResult(_0x380059,0xc9))['catch'](handleError(_0x380059,null));};exports['update']=function(_0x332cee,_0x53b563){if(_0x332cee[_0xf1b5('0x48')]['id']){delete _0x332cee[_0xf1b5('0x48')]['id'];}return db[_0xf1b5('0x27')]['find']({'where':{'id':_0x332cee[_0xf1b5('0x44')]['id']}})[_0xf1b5('0x21')](handleEntityNotFound(_0x53b563,null))[_0xf1b5('0x21')](saveUpdates(_0x332cee[_0xf1b5('0x48')],null))[_0xf1b5('0x21')](respondWithResult(_0x53b563,null))[_0xf1b5('0x42')](handleError(_0x53b563,null));};exports[_0xf1b5('0x22')]=function(_0x20dfa6,_0x35d25c){return db[_0xf1b5('0x27')]['find']({'where':{'id':_0x20dfa6['params']['id']}})[_0xf1b5('0x21')](handleEntityNotFound(_0x35d25c,null))[_0xf1b5('0x21')](removeEntity(_0x35d25c,null))['catch'](handleError(_0x35d25c,null));};exports[_0xf1b5('0x4a')]=function(_0x229c0d,_0x23083b){return db[_0xf1b5('0x27')][_0xf1b5('0x22')]({'where':{'id':_0x229c0d[_0xf1b5('0x2b')][_0xf1b5('0x4b')]||[]},'raw':![],'individualHooks':!![]})[_0xf1b5('0x21')](respondWithResult(_0x23083b,0xcc))[_0xf1b5('0x42')](handleError(_0x23083b,null));};exports['addFields']=function(_0x588433,_0x47c919,_0x8937f7){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x588433[_0xf1b5('0x44')]['id']}})['then'](handleEntityNotFound(_0x47c919,null))['then'](function(_0xd123e7){if(_0xd123e7){return db[_0xf1b5('0x4c')]['transaction'](function(_0x1b4810){return db[_0xf1b5('0x27')]['destroy']({'where':{'CustomReportId':_0x588433['params']['id']},'transaction':_0x1b4810})[_0xf1b5('0x21')](function(_0x24b068){var _0x4b5f31=_[_0xf1b5('0x3a')](_0x588433[_0xf1b5('0x48')],function(_0xcfbd3b){delete _0xcfbd3b['id'];_0xcfbd3b['CustomReportId']=_0x588433[_0xf1b5('0x44')]['id'];return _0xcfbd3b;});return db['AnalyticFieldReport'][_0xf1b5('0x49')](_0x4b5f31,{'transaction':_0x1b4810});});})[_0xf1b5('0x21')](function(){return db[_0xf1b5('0x27')][_0xf1b5('0x4d')]({'where':{'CustomReportId':_0x588433['params']['id']}});});}})[_0xf1b5('0x21')](respondWithResult(_0x47c919,null))[_0xf1b5('0x42')](handleError(_0x47c919,null));};
\ No newline at end of file
index b985841..3ded914 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a01=['util','../../config/logger','api','moment','bluebird','request-promise','define','AnalyticFieldReport','analytics_report_fields'];(function(_0x3feb8a,_0x47c784){var _0x4523ca=function(_0x4fba86){while(--_0x4fba86){_0x3feb8a['push'](_0x3feb8a['shift']());}};_0x4523ca(++_0x47c784);}(_0x1a01,0xb4));var _0x11a0=function(_0x1c0afb,_0x4067ce){_0x1c0afb=_0x1c0afb-0x0;var _0x5ea9e0=_0x1a01[_0x1c0afb];return _0x5ea9e0;};'use strict';var _=require('lodash');var util=require(_0x11a0('0x0'));var logger=require(_0x11a0('0x1'))(_0x11a0('0x2'));var moment=require(_0x11a0('0x3'));var BPromise=require(_0x11a0('0x4'));var rp=require(_0x11a0('0x5'));var attributes=require('./analyticFieldReport.attributes');module['exports']=function(_0x24593a,_0x5527f3){return _0x24593a[_0x11a0('0x6')](_0x11a0('0x7'),attributes,{'tableName':_0x11a0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7130=['define','AnalyticFieldReport','lodash','util','../../config/logger','api','bluebird','./analyticFieldReport.attributes','exports'];(function(_0x13402f,_0x493bde){var _0x56ee8c=function(_0xcbf2ad){while(--_0xcbf2ad){_0x13402f['push'](_0x13402f['shift']());}};_0x56ee8c(++_0x493bde);}(_0x7130,0x6e));var _0x0713=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x7130[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x0713('0x0'));var util=require(_0x0713('0x1'));var logger=require(_0x0713('0x2'))(_0x0713('0x3'));var moment=require('moment');var BPromise=require(_0x0713('0x4'));var rp=require('request-promise');var attributes=require(_0x0713('0x5'));module[_0x0713('0x6')]=function(_0x3c72e3,_0x2b16ae){return _0x3c72e3[_0x0713('0x7')](_0x0713('0x8'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dcda1f7..6bb8aa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc65=['result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x93814b,_0x2f5ddf){var _0x47f08d=function(_0x2c8af3){while(--_0x2c8af3){_0x93814b['push'](_0x93814b['shift']());}};_0x47f08d(++_0x2f5ddf);}(_0xfc65,0x1e1));var _0x5fc6=function(_0x1755bb,_0x264ccc){_0x1755bb=_0x1755bb-0x0;var _0x1dd918=_0xfc65[_0x1755bb];return _0x1dd918;};'use strict';var _=require(_0x5fc6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5fc6('0x1'));var rs=require(_0x5fc6('0x2'));var fs=require('fs');var Redis=require(_0x5fc6('0x3'));var db=require(_0x5fc6('0x4'))['db'];var utils=require(_0x5fc6('0x5'));var logger=require(_0x5fc6('0x6'))(_0x5fc6('0x7'));var config=require(_0x5fc6('0x8'));var jayson=require(_0x5fc6('0x9'));var client=jayson[_0x5fc6('0xa')][_0x5fc6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x409c5f,_0x1a9600,_0x572941){return new BPromise(function(_0x3921c5,_0x1f1409){return client[_0x5fc6('0xc')](_0x409c5f,_0x572941)[_0x5fc6('0xd')](function(_0x16c285){logger[_0x5fc6('0xe')](_0x5fc6('0xf'),_0x1a9600,_0x5fc6('0x10'));logger[_0x5fc6('0x11')](_0x5fc6('0x12'),_0x1a9600,'request\x20sent',JSON[_0x5fc6('0x13')](_0x16c285));if(_0x16c285['error']){if(_0x16c285[_0x5fc6('0x14')][_0x5fc6('0x15')]===0x1f4){logger[_0x5fc6('0x14')](_0x5fc6('0xf'),_0x1a9600,_0x16c285['error'][_0x5fc6('0x16')]);return _0x1f1409(_0x16c285[_0x5fc6('0x14')][_0x5fc6('0x16')]);}logger[_0x5fc6('0x14')](_0x5fc6('0xf'),_0x1a9600,_0x16c285[_0x5fc6('0x14')][_0x5fc6('0x16')]);return _0x3921c5(_0x16c285[_0x5fc6('0x14')][_0x5fc6('0x16')]);}else{logger[_0x5fc6('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x1a9600,'request\x20sent');_0x3921c5(_0x16c285[_0x5fc6('0x17')][_0x5fc6('0x16')]);}})['catch'](function(_0x26d2ba){logger[_0x5fc6('0x14')](_0x5fc6('0xf'),_0x1a9600,_0x26d2ba);_0x1f1409(_0x26d2ba);});});}
\ No newline at end of file
+var _0x6c32=['request','info','request\x20sent','debug','stringify','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','result','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http'];(function(_0x399d35,_0x3aa411){var _0x5996fd=function(_0x72c33){while(--_0x72c33){_0x399d35['push'](_0x399d35['shift']());}};_0x5996fd(++_0x3aa411);}(_0x6c32,0xb5));var _0x26c3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6c32[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x26c3('0x0'));var util=require('util');var moment=require(_0x26c3('0x1'));var BPromise=require('bluebird');var rs=require(_0x26c3('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x26c3('0x3'))['db'];var utils=require(_0x26c3('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x26c3('0x5'));var jayson=require(_0x26c3('0x6'));var client=jayson[_0x26c3('0x7')][_0x26c3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x17bc12,_0x2756e5,_0x438a89){return new BPromise(function(_0x11ed3d,_0x2134b8){return client[_0x26c3('0x9')](_0x17bc12,_0x438a89)['then'](function(_0x561496){logger[_0x26c3('0xa')]('AnalyticFieldReport,\x20%s,\x20%s',_0x2756e5,_0x26c3('0xb'));logger[_0x26c3('0xc')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x2756e5,_0x26c3('0xb'),JSON[_0x26c3('0xd')](_0x561496));if(_0x561496[_0x26c3('0xe')]){if(_0x561496[_0x26c3('0xe')][_0x26c3('0xf')]===0x1f4){logger['error'](_0x26c3('0x10'),_0x2756e5,_0x561496[_0x26c3('0xe')][_0x26c3('0x11')]);return _0x2134b8(_0x561496[_0x26c3('0xe')][_0x26c3('0x11')]);}logger[_0x26c3('0xe')](_0x26c3('0x10'),_0x2756e5,_0x561496[_0x26c3('0xe')]['message']);return _0x11ed3d(_0x561496['error'][_0x26c3('0x11')]);}else{logger[_0x26c3('0xa')](_0x26c3('0x10'),_0x2756e5,_0x26c3('0xb'));_0x11ed3d(_0x561496[_0x26c3('0x12')][_0x26c3('0x11')]);}})['catch'](function(_0x2edaca){logger[_0x26c3('0xe')]('AnalyticFieldReport,\x20%s,\x20%s',_0x2756e5,_0x2edaca);_0x2134b8(_0x2edaca);});});}
\ No newline at end of file
index 12e1da0..16cfe76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ded=['../../config/environment','./analyticFieldReport.controller','get','isAuthenticated','/:id','show','post','/:id/create_many','update','delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x3ead8e,_0xb7c435){var _0x11454a=function(_0x27a122){while(--_0x27a122){_0x3ead8e['push'](_0x3ead8e['shift']());}};_0x11454a(++_0xb7c435);}(_0x4ded,0x116));var _0xd4de=function(_0x8bf474,_0x478e7c){_0x8bf474=_0x8bf474-0x0;var _0x51b9a7=_0x4ded[_0x8bf474];return _0x51b9a7;};'use strict';var multer=require(_0xd4de('0x0'));var util=require(_0xd4de('0x1'));var path=require(_0xd4de('0x2'));var timeout=require(_0xd4de('0x3'));var express=require(_0xd4de('0x4'));var router=express[_0xd4de('0x5')]();var auth=require(_0xd4de('0x6'));var interaction=require(_0xd4de('0x7'));var config=require(_0xd4de('0x8'));var controller=require(_0xd4de('0x9'));router[_0xd4de('0xa')]('/',auth[_0xd4de('0xb')](),controller['index']);router[_0xd4de('0xa')](_0xd4de('0xc'),auth[_0xd4de('0xb')](),controller[_0xd4de('0xd')]);router[_0xd4de('0xe')]('/',auth[_0xd4de('0xb')](),controller['create']);router[_0xd4de('0xe')]('/create_many',auth['isAuthenticated'](),controller['bulkCreate']);router[_0xd4de('0xe')](_0xd4de('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put'](_0xd4de('0xc'),auth['isAuthenticated'](),controller[_0xd4de('0x10')]);router[_0xd4de('0x11')](_0xd4de('0x12'),auth[_0xd4de('0xb')](),controller[_0xd4de('0x13')]);router[_0xd4de('0x11')](_0xd4de('0xc'),auth[_0xd4de('0xb')](),controller[_0xd4de('0x14')]);module[_0xd4de('0x15')]=router;
\ No newline at end of file
+var _0xd404=['express','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','isAuthenticated','index','/:id','show','post','create','bulkCreate','/:id/create_many','addFields','put','update','delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','connect-timeout'];(function(_0x232866,_0x14b805){var _0x5cba7e=function(_0x47e953){while(--_0x47e953){_0x232866['push'](_0x232866['shift']());}};_0x5cba7e(++_0x14b805);}(_0xd404,0x15b));var _0x4d40=function(_0x53d0fb,_0x59b722){_0x53d0fb=_0x53d0fb-0x0;var _0x5633e8=_0xd404[_0x53d0fb];return _0x5633e8;};'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 auth=require(_0x4d40('0x4'));var interaction=require(_0x4d40('0x5'));var config=require(_0x4d40('0x6'));var controller=require(_0x4d40('0x7'));router[_0x4d40('0x8')]('/',auth[_0x4d40('0x9')](),controller[_0x4d40('0xa')]);router[_0x4d40('0x8')](_0x4d40('0xb'),auth['isAuthenticated'](),controller[_0x4d40('0xc')]);router[_0x4d40('0xd')]('/',auth['isAuthenticated'](),controller[_0x4d40('0xe')]);router['post']('/create_many',auth[_0x4d40('0x9')](),controller[_0x4d40('0xf')]);router[_0x4d40('0xd')](_0x4d40('0x10'),auth[_0x4d40('0x9')](),controller[_0x4d40('0x11')]);router[_0x4d40('0x12')](_0x4d40('0xb'),auth[_0x4d40('0x9')](),controller[_0x4d40('0x13')]);router[_0x4d40('0x14')](_0x4d40('0x15'),auth[_0x4d40('0x9')](),controller[_0x4d40('0x16')]);router['delete'](_0x4d40('0xb'),auth[_0x4d40('0x9')](),controller[_0x4d40('0x17')]);module[_0x4d40('0x18')]=router;
\ No newline at end of file
index 837eba3..74b8920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffcd=['TEXT','exports','STRING'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0xffcd,0x1a5));var _0xdffc=function(_0x391b46,_0x5d607a){_0x391b46=_0x391b46-0x0;var _0x2700ac=_0xffcd[_0x391b46];return _0x2700ac;};'use strict';var Sequelize=require('sequelize');module[_0xdffc('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0xdffc('0x1')]},'metric':{'type':Sequelize[_0xdffc('0x2')]},'description':{'type':Sequelize[_0xdffc('0x1')]}};
\ No newline at end of file
+var _0x8353=['STRING','name'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8353,0x1bc));var _0x3835=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x8353[_0x3ab9ee];return _0x82ee88;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3835('0x0')],'allowNull':![],'unique':_0x3835('0x1')},'table':{'type':Sequelize[_0x3835('0x0')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x3835('0x0')]}};
\ No newline at end of file
index 159797f..98aeec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfc8=['params','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','count','offset','set','apply','save','then','get','Metrics','destroy','stack','name','send','index','AnalyticMetric','model','keys','query','dateStart','filters','intersection','attributes','fields','length','nolimit','limit','sort','where','pick','dateEnd','add','day','merge','type','key','field','filter','options','includeAll','include','findAll','catch'];(function(_0xa34fc4,_0x2fb6bc){var _0x543bff=function(_0xdf08c2){while(--_0xdf08c2){_0xa34fc4['push'](_0xa34fc4['shift']());}};_0x543bff(++_0x2fb6bc);}(_0xcfc8,0x1d4));var _0x8cfc=function(_0x1482fb,_0x247a86){_0x1482fb=_0x1482fb-0x0;var _0x381d9b=_0xcfc8[_0x1482fb];return _0x381d9b;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8cfc('0x0'));var jsonpatch=require(_0x8cfc('0x1'));var rp=require(_0x8cfc('0x2'));var moment=require(_0x8cfc('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8cfc('0x4'));var util=require(_0x8cfc('0x5'));var path=require('path');var sox=require(_0x8cfc('0x6'));var csv=require('to-csv');var ejs=require(_0x8cfc('0x7'));var fs=require('fs');var _=require('lodash');var squel=require(_0x8cfc('0x8'));var crypto=require(_0x8cfc('0x9'));var jsforce=require(_0x8cfc('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x8cfc('0xb'));var querystring=require(_0x8cfc('0xc'));var Papa=require(_0x8cfc('0xd'));var Redis=require(_0x8cfc('0xe'));var qs=require(_0x8cfc('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0x8cfc('0x10'));var config=require(_0x8cfc('0x11'));var db=require(_0x8cfc('0x12'))['db'];function respondWithStatusCode(_0x41ac3d,_0x5484e6){_0x5484e6=_0x5484e6||0xcc;return function(_0x53008a){if(_0x53008a){return _0x41ac3d[_0x8cfc('0x13')](_0x5484e6);}return _0x41ac3d['status'](_0x5484e6)[_0x8cfc('0x14')]();};}function respondWithResult(_0x1f7510,_0x571471){_0x571471=_0x571471||0xc8;return function(_0x544c11){if(_0x544c11){return _0x1f7510[_0x8cfc('0x15')](_0x571471)[_0x8cfc('0x16')](_0x544c11);}};}function respondWithFilteredResult(_0x40f91d,_0x2f1fd8){return function(_0xe346db){if(_0xe346db){var _0xf54ae9=_0xe346db[_0x8cfc('0x17')],_0x24e1b2=_0x2f1fd8[_0x8cfc('0x18')],_0x1774b9=_0x2f1fd8[_0x8cfc('0x18')]+_0x2f1fd8['limit'],_0x566178;if(_0x1774b9>=_0xf54ae9){_0x1774b9=_0xf54ae9;_0x566178=0xc8;}else{_0x566178=0xce;}_0x40f91d['status'](_0x566178);return _0x40f91d[_0x8cfc('0x19')]('Content-Range',_0x24e1b2+'-'+_0x1774b9+'/'+_0xf54ae9)['json'](_0xe346db);}return null;};}function patchUpdates(_0x16bc2c){return function(_0x37eff6){try{jsonpatch[_0x8cfc('0x1a')](_0x37eff6,_0x16bc2c,!![]);}catch(_0x2effab){return BPromise['reject'](_0x2effab);}return _0x37eff6[_0x8cfc('0x1b')]();};}function saveUpdates(_0x4ddb0e,_0x4f3a08){return function(_0x5201e9){if(_0x5201e9){return _0x5201e9['update'](_0x4ddb0e)[_0x8cfc('0x1c')](function(_0x1e942c){return _0x1e942c;});}return null;};}function removeEntity(_0x207f9d,_0x1307f7){return function(_0x21897c){if(_0x21897c){return _0x21897c['destroy']()[_0x8cfc('0x1c')](function(){var _0x53f2d3=_0x21897c[_0x8cfc('0x1d')]({'plain':!![]});var _0x132b65=_0x8cfc('0x1e');return db['UserProfileResource'][_0x8cfc('0x1f')]({'where':{'type':_0x132b65,'resourceId':_0x53f2d3['id']}})[_0x8cfc('0x1c')](function(){return _0x21897c;});})[_0x8cfc('0x1c')](function(){_0x207f9d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x50d131,_0x25cca2){return function(_0x441e28){if(!_0x441e28){_0x50d131[_0x8cfc('0x13')](0x194);}return _0x441e28;};}function handleError(_0x1a9c0e,_0x278669){_0x278669=_0x278669||0x1f4;return function(_0x504e5e){logger['error'](_0x504e5e[_0x8cfc('0x20')]);if(_0x504e5e['name']){delete _0x504e5e[_0x8cfc('0x21')];}_0x1a9c0e['status'](_0x278669)[_0x8cfc('0x22')](_0x504e5e);};}exports[_0x8cfc('0x23')]=function(_0x18b2b0,_0x6e165b){var _0x3d5ade={},_0x1de670={},_0x36e94f={'count':0x0,'rows':[]};var _0x2e81e6=db[_0x8cfc('0x24')]['rawAttributes'];_0x1de670[_0x8cfc('0x25')]=_[_0x8cfc('0x26')](_0x2e81e6);var _0xe992f7={'dateStart':_0x18b2b0[_0x8cfc('0x27')][_0x8cfc('0x28')],'dateEnd':_0x18b2b0[_0x8cfc('0x27')]['dateEnd']};delete _0x18b2b0['query'][_0x8cfc('0x28')];delete _0x18b2b0['query']['dateEnd'];_0x1de670[_0x8cfc('0x27')]=_['keys'](_0x18b2b0[_0x8cfc('0x27')]);_0x1de670[_0x8cfc('0x29')]=_[_0x8cfc('0x2a')](_0x1de670['model'],_0x1de670[_0x8cfc('0x27')]);_0x3d5ade[_0x8cfc('0x2b')]=_['intersection'](_0x1de670[_0x8cfc('0x25')],qs[_0x8cfc('0x2c')](_0x18b2b0[_0x8cfc('0x27')][_0x8cfc('0x2c')]));_0x3d5ade[_0x8cfc('0x2b')]=_0x3d5ade[_0x8cfc('0x2b')][_0x8cfc('0x2d')]?_0x3d5ade[_0x8cfc('0x2b')]:_0x1de670['model'];if(!_0x18b2b0['query']['hasOwnProperty'](_0x8cfc('0x2e'))){_0x3d5ade[_0x8cfc('0x2f')]=qs[_0x8cfc('0x2f')](_0x18b2b0['query'][_0x8cfc('0x2f')]);_0x3d5ade['offset']=qs[_0x8cfc('0x18')](_0x18b2b0[_0x8cfc('0x27')][_0x8cfc('0x18')]);}_0x3d5ade['order']=qs[_0x8cfc('0x30')](_0x18b2b0[_0x8cfc('0x27')][_0x8cfc('0x30')]);_0x3d5ade[_0x8cfc('0x31')]=qs['filters'](_[_0x8cfc('0x32')](_0x18b2b0[_0x8cfc('0x27')],_0x1de670['filters']));if(_0xe992f7[_0x8cfc('0x28')]){if(_0xe992f7[_0x8cfc('0x33')]){_0xe992f7[_0x8cfc('0x33')]=moment(_0xe992f7[_0x8cfc('0x33')])[_0x8cfc('0x34')](0x1,'day');}else{_0xe992f7[_0x8cfc('0x33')]=moment(_0xe992f7[_0x8cfc('0x28')])[_0x8cfc('0x34')](0x1,_0x8cfc('0x35'));}_[_0x8cfc('0x36')](_0x3d5ade[_0x8cfc('0x31')],{'createdAt':{'$gte':_0xe992f7['dateStart'],'$lte':_0xe992f7['dateEnd']}});}if(_0x18b2b0[_0x8cfc('0x27')]['filter']){_0x3d5ade[_0x8cfc('0x31')]=_[_0x8cfc('0x36')](_0x3d5ade[_0x8cfc('0x31')],{'$or':_['map'](_0x2e81e6,function(_0x500305){if(_0x500305[_0x8cfc('0x37')][_0x8cfc('0x38')]!=='VIRTUAL'){var _0x45d524={};_0x45d524[_0x500305[_0x8cfc('0x39')]]={'$like':'%'+_0x18b2b0[_0x8cfc('0x27')][_0x8cfc('0x3a')]+'%'};return _0x45d524;}})});}_0x3d5ade=_['merge']({},_0x3d5ade,_0x18b2b0[_0x8cfc('0x3b')]);var _0x542db1={'where':_0x3d5ade[_0x8cfc('0x31')]};return db['AnalyticMetric'][_0x8cfc('0x17')](_0x542db1)[_0x8cfc('0x1c')](function(_0x404e86){_0x36e94f['count']=_0x404e86;if(_0x18b2b0['query'][_0x8cfc('0x3c')]){_0x3d5ade[_0x8cfc('0x3d')]=[{'all':!![]}];}return db[_0x8cfc('0x24')][_0x8cfc('0x3e')](_0x3d5ade);})[_0x8cfc('0x1c')](function(_0x5434d3){_0x36e94f['rows']=_0x5434d3;return _0x36e94f;})[_0x8cfc('0x1c')](respondWithFilteredResult(_0x6e165b,_0x3d5ade))[_0x8cfc('0x3f')](handleError(_0x6e165b,null));};exports['show']=function(_0x3b6587,_0x3e6844){var _0x51e326={'raw':!![],'where':{'id':_0x3b6587[_0x8cfc('0x40')]['id']}},_0x2c11a9={};_0x2c11a9[_0x8cfc('0x25')]=_[_0x8cfc('0x26')](db['AnalyticMetric'][_0x8cfc('0x41')]);_0x2c11a9['query']=_[_0x8cfc('0x26')](_0x3b6587['query']);_0x2c11a9[_0x8cfc('0x29')]=_[_0x8cfc('0x2a')](_0x2c11a9['model'],_0x2c11a9['query']);_0x51e326[_0x8cfc('0x2b')]=_[_0x8cfc('0x2a')](_0x2c11a9['model'],qs[_0x8cfc('0x2c')](_0x3b6587[_0x8cfc('0x27')]['fields']));_0x51e326[_0x8cfc('0x2b')]=_0x51e326[_0x8cfc('0x2b')]['length']?_0x51e326[_0x8cfc('0x2b')]:_0x2c11a9['model'];if(_0x3b6587[_0x8cfc('0x27')][_0x8cfc('0x3c')]){_0x51e326[_0x8cfc('0x3d')]=[{'all':!![]}];}_0x51e326=_['merge']({},_0x51e326,_0x3b6587['options']);return db['AnalyticMetric'][_0x8cfc('0x42')](_0x51e326)[_0x8cfc('0x1c')](handleEntityNotFound(_0x3e6844,null))[_0x8cfc('0x1c')](respondWithResult(_0x3e6844,null))[_0x8cfc('0x3f')](handleError(_0x3e6844,null));};exports[_0x8cfc('0x43')]=function(_0x1baedf,_0x17e49c){return db[_0x8cfc('0x24')][_0x8cfc('0x43')](_0x1baedf[_0x8cfc('0x44')],{})[_0x8cfc('0x1c')](function(_0x4c391b){var _0x4332c0=_0x1baedf['user'][_0x8cfc('0x1d')]({'plain':!![]});if(!_0x4332c0)throw new Error(_0x8cfc('0x45'));if(_0x4332c0[_0x8cfc('0x46')]==='user'){var _0x496452=_0x4c391b[_0x8cfc('0x1d')]({'plain':!![]});var _0x1cbb25='Metrics';return db[_0x8cfc('0x47')][_0x8cfc('0x42')]({'where':{'name':_0x1cbb25,'userProfileId':_0x4332c0['userProfileId']},'raw':!![]})[_0x8cfc('0x1c')](function(_0x16f55d){if(_0x16f55d&&_0x16f55d['autoAssociation']===0x0){return db[_0x8cfc('0x48')][_0x8cfc('0x43')]({'name':_0x496452[_0x8cfc('0x21')],'resourceId':_0x496452['id'],'type':_0x16f55d[_0x8cfc('0x21')],'sectionId':_0x16f55d['id']},{})['then'](function(){return _0x4c391b;});}else{return _0x4c391b;}})['catch'](function(_0x41ac2f){logger[_0x8cfc('0x49')](_0x8cfc('0x4a'),_0x41ac2f);throw _0x41ac2f;});}return _0x4c391b;})[_0x8cfc('0x1c')](respondWithResult(_0x17e49c,0xc9))['catch'](handleError(_0x17e49c,null));};exports[_0x8cfc('0x4b')]=function(_0xaf3fba,_0x1b31da){if(_0xaf3fba['body']['id']){delete _0xaf3fba['body']['id'];}return db[_0x8cfc('0x24')][_0x8cfc('0x42')]({'where':{'id':_0xaf3fba[_0x8cfc('0x40')]['id']}})[_0x8cfc('0x1c')](handleEntityNotFound(_0x1b31da,null))['then'](saveUpdates(_0xaf3fba['body'],null))[_0x8cfc('0x1c')](respondWithResult(_0x1b31da,null))['catch'](handleError(_0x1b31da,null));};exports[_0x8cfc('0x1f')]=function(_0x2127b1,_0x363aca){return db[_0x8cfc('0x24')][_0x8cfc('0x42')]({'where':{'id':_0x2127b1[_0x8cfc('0x40')]['id']}})[_0x8cfc('0x1c')](handleEntityNotFound(_0x363aca,null))[_0x8cfc('0x1c')](removeEntity(_0x363aca,null))[_0x8cfc('0x3f')](handleError(_0x363aca,null));};
\ No newline at end of file
+var _0x7574=['lodash','squel','crypto','jsforce','ioredis','../../config/logger','api','../../mysqldb','status','end','json','count','limit','set','Content-Range','reject','save','update','then','get','Metrics','UserProfileResource','destroy','sendStatus','error','stack','name','index','AnalyticMetric','rawAttributes','model','keys','query','dateStart','dateEnd','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','sort','where','pick','add','day','merge','filter','type','key','VIRTUAL','includeAll','include','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs'];(function(_0xd74a4f,_0x547876){var _0x3a488a=function(_0x488b88){while(--_0x488b88){_0xd74a4f['push'](_0xd74a4f['shift']());}};_0x3a488a(++_0x547876);}(_0x7574,0x93));var _0x4757=function(_0x421f2e,_0x350302){_0x421f2e=_0x421f2e-0x0;var _0x3ea9f5=_0x7574[_0x421f2e];return _0x3ea9f5;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x4757('0x0'));var rimraf=require(_0x4757('0x1'));var zipdir=require(_0x4757('0x2'));var jsonpatch=require(_0x4757('0x3'));var rp=require('request-promise');var moment=require(_0x4757('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4757('0x5'));var util=require(_0x4757('0x6'));var path=require(_0x4757('0x7'));var sox=require(_0x4757('0x8'));var csv=require(_0x4757('0x9'));var ejs=require(_0x4757('0xa'));var fs=require('fs');var _=require(_0x4757('0xb'));var squel=require(_0x4757('0xc'));var crypto=require(_0x4757('0xd'));var jsforce=require(_0x4757('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4757('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4757('0xf'));var qs=require('../../components/parsers/qs');var logger=require(_0x4757('0x10'))(_0x4757('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x4757('0x12'))['db'];function respondWithStatusCode(_0x552677,_0x52d6de){_0x52d6de=_0x52d6de||0xcc;return function(_0x260e7c){if(_0x260e7c){return _0x552677['sendStatus'](_0x52d6de);}return _0x552677[_0x4757('0x13')](_0x52d6de)[_0x4757('0x14')]();};}function respondWithResult(_0xc7b8a3,_0x13b833){_0x13b833=_0x13b833||0xc8;return function(_0x11e68f){if(_0x11e68f){return _0xc7b8a3[_0x4757('0x13')](_0x13b833)[_0x4757('0x15')](_0x11e68f);}};}function respondWithFilteredResult(_0x223d8e,_0x47c977){return function(_0x43c6ad){if(_0x43c6ad){var _0x530192=_0x43c6ad[_0x4757('0x16')],_0xcd75b=_0x47c977['offset'],_0x4cd612=_0x47c977['offset']+_0x47c977[_0x4757('0x17')],_0x5298a3;if(_0x4cd612>=_0x530192){_0x4cd612=_0x530192;_0x5298a3=0xc8;}else{_0x5298a3=0xce;}_0x223d8e[_0x4757('0x13')](_0x5298a3);return _0x223d8e[_0x4757('0x18')](_0x4757('0x19'),_0xcd75b+'-'+_0x4cd612+'/'+_0x530192)[_0x4757('0x15')](_0x43c6ad);}return null;};}function patchUpdates(_0x3f9860){return function(_0x23330d){try{jsonpatch['apply'](_0x23330d,_0x3f9860,!![]);}catch(_0xcab545){return BPromise[_0x4757('0x1a')](_0xcab545);}return _0x23330d[_0x4757('0x1b')]();};}function saveUpdates(_0x51fba9,_0xce0bf7){return function(_0xeff675){if(_0xeff675){return _0xeff675[_0x4757('0x1c')](_0x51fba9)[_0x4757('0x1d')](function(_0x311bb9){return _0x311bb9;});}return null;};}function removeEntity(_0x1d22f0,_0x303a3f){return function(_0x448b37){if(_0x448b37){return _0x448b37['destroy']()['then'](function(){var _0x42cef6=_0x448b37[_0x4757('0x1e')]({'plain':!![]});var _0x42ae32=_0x4757('0x1f');return db[_0x4757('0x20')][_0x4757('0x21')]({'where':{'type':_0x42ae32,'resourceId':_0x42cef6['id']}})[_0x4757('0x1d')](function(){return _0x448b37;});})[_0x4757('0x1d')](function(){_0x1d22f0[_0x4757('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41df61,_0x2fecdc){return function(_0x271e68){if(!_0x271e68){_0x41df61[_0x4757('0x22')](0x194);}return _0x271e68;};}function handleError(_0x1accf1,_0x476d2a){_0x476d2a=_0x476d2a||0x1f4;return function(_0x4e78d8){logger[_0x4757('0x23')](_0x4e78d8[_0x4757('0x24')]);if(_0x4e78d8['name']){delete _0x4e78d8[_0x4757('0x25')];}_0x1accf1['status'](_0x476d2a)['send'](_0x4e78d8);};}exports[_0x4757('0x26')]=function(_0x301fc6,_0x517932){var _0x31c98d={},_0x11c9a5={},_0x525053={'count':0x0,'rows':[]};var _0x3e1f52=db[_0x4757('0x27')][_0x4757('0x28')];_0x11c9a5[_0x4757('0x29')]=_[_0x4757('0x2a')](_0x3e1f52);var _0x5010d7={'dateStart':_0x301fc6[_0x4757('0x2b')][_0x4757('0x2c')],'dateEnd':_0x301fc6[_0x4757('0x2b')][_0x4757('0x2d')]};delete _0x301fc6[_0x4757('0x2b')][_0x4757('0x2c')];delete _0x301fc6[_0x4757('0x2b')][_0x4757('0x2d')];_0x11c9a5[_0x4757('0x2b')]=_[_0x4757('0x2a')](_0x301fc6[_0x4757('0x2b')]);_0x11c9a5[_0x4757('0x2e')]=_['intersection'](_0x11c9a5[_0x4757('0x29')],_0x11c9a5[_0x4757('0x2b')]);_0x31c98d[_0x4757('0x2f')]=_[_0x4757('0x30')](_0x11c9a5[_0x4757('0x29')],qs[_0x4757('0x31')](_0x301fc6[_0x4757('0x2b')]['fields']));_0x31c98d['attributes']=_0x31c98d[_0x4757('0x2f')][_0x4757('0x32')]?_0x31c98d['attributes']:_0x11c9a5[_0x4757('0x29')];if(!_0x301fc6[_0x4757('0x2b')][_0x4757('0x33')](_0x4757('0x34'))){_0x31c98d[_0x4757('0x17')]=qs['limit'](_0x301fc6[_0x4757('0x2b')][_0x4757('0x17')]);_0x31c98d[_0x4757('0x35')]=qs[_0x4757('0x35')](_0x301fc6[_0x4757('0x2b')]['offset']);}_0x31c98d['order']=qs[_0x4757('0x36')](_0x301fc6[_0x4757('0x2b')][_0x4757('0x36')]);_0x31c98d[_0x4757('0x37')]=qs[_0x4757('0x2e')](_[_0x4757('0x38')](_0x301fc6[_0x4757('0x2b')],_0x11c9a5['filters']));if(_0x5010d7[_0x4757('0x2c')]){if(_0x5010d7[_0x4757('0x2d')]){_0x5010d7[_0x4757('0x2d')]=moment(_0x5010d7[_0x4757('0x2d')])[_0x4757('0x39')](0x1,_0x4757('0x3a'));}else{_0x5010d7[_0x4757('0x2d')]=moment(_0x5010d7['dateStart'])[_0x4757('0x39')](0x1,'day');}_[_0x4757('0x3b')](_0x31c98d[_0x4757('0x37')],{'createdAt':{'$gte':_0x5010d7[_0x4757('0x2c')],'$lte':_0x5010d7[_0x4757('0x2d')]}});}if(_0x301fc6[_0x4757('0x2b')][_0x4757('0x3c')]){_0x31c98d[_0x4757('0x37')]=_[_0x4757('0x3b')](_0x31c98d[_0x4757('0x37')],{'$or':_['map'](_0x3e1f52,function(_0x171e50){if(_0x171e50[_0x4757('0x3d')][_0x4757('0x3e')]!==_0x4757('0x3f')){var _0x2a598e={};_0x2a598e[_0x171e50['field']]={'$like':'%'+_0x301fc6[_0x4757('0x2b')][_0x4757('0x3c')]+'%'};return _0x2a598e;}})});}_0x31c98d=_[_0x4757('0x3b')]({},_0x31c98d,_0x301fc6['options']);var _0x2cc620={'where':_0x31c98d['where']};return db[_0x4757('0x27')]['count'](_0x2cc620)[_0x4757('0x1d')](function(_0x580880){_0x525053[_0x4757('0x16')]=_0x580880;if(_0x301fc6[_0x4757('0x2b')][_0x4757('0x40')]){_0x31c98d[_0x4757('0x41')]=[{'all':!![]}];}return db[_0x4757('0x27')]['findAll'](_0x31c98d);})[_0x4757('0x1d')](function(_0x423635){_0x525053[_0x4757('0x42')]=_0x423635;return _0x525053;})['then'](respondWithFilteredResult(_0x517932,_0x31c98d))[_0x4757('0x43')](handleError(_0x517932,null));};exports[_0x4757('0x44')]=function(_0x46c5ff,_0x140eef){var _0x2619be={'raw':!![],'where':{'id':_0x46c5ff[_0x4757('0x45')]['id']}},_0x82df03={};_0x82df03[_0x4757('0x29')]=_[_0x4757('0x2a')](db[_0x4757('0x27')][_0x4757('0x28')]);_0x82df03['query']=_['keys'](_0x46c5ff[_0x4757('0x2b')]);_0x82df03['filters']=_[_0x4757('0x30')](_0x82df03[_0x4757('0x29')],_0x82df03['query']);_0x2619be[_0x4757('0x2f')]=_[_0x4757('0x30')](_0x82df03[_0x4757('0x29')],qs[_0x4757('0x31')](_0x46c5ff[_0x4757('0x2b')]['fields']));_0x2619be['attributes']=_0x2619be[_0x4757('0x2f')][_0x4757('0x32')]?_0x2619be[_0x4757('0x2f')]:_0x82df03[_0x4757('0x29')];if(_0x46c5ff['query'][_0x4757('0x40')]){_0x2619be[_0x4757('0x41')]=[{'all':!![]}];}_0x2619be=_[_0x4757('0x3b')]({},_0x2619be,_0x46c5ff['options']);return db['AnalyticMetric'][_0x4757('0x46')](_0x2619be)[_0x4757('0x1d')](handleEntityNotFound(_0x140eef,null))[_0x4757('0x1d')](respondWithResult(_0x140eef,null))[_0x4757('0x43')](handleError(_0x140eef,null));};exports[_0x4757('0x47')]=function(_0x4abefd,_0x237fd7){return db[_0x4757('0x27')][_0x4757('0x47')](_0x4abefd['body'],{})[_0x4757('0x1d')](function(_0x5e3ca3){var _0xc265c=_0x4abefd[_0x4757('0x48')][_0x4757('0x1e')]({'plain':!![]});if(!_0xc265c)throw new Error(_0x4757('0x49'));if(_0xc265c[_0x4757('0x4a')]===_0x4757('0x48')){var _0x280719=_0x5e3ca3[_0x4757('0x1e')]({'plain':!![]});var _0x3a43ef='Metrics';return db['UserProfileSection'][_0x4757('0x46')]({'where':{'name':_0x3a43ef,'userProfileId':_0xc265c[_0x4757('0x4b')]},'raw':!![]})[_0x4757('0x1d')](function(_0x31214c){if(_0x31214c&&_0x31214c[_0x4757('0x4c')]===0x0){return db['UserProfileResource'][_0x4757('0x47')]({'name':_0x280719[_0x4757('0x25')],'resourceId':_0x280719['id'],'type':_0x31214c['name'],'sectionId':_0x31214c['id']},{})['then'](function(){return _0x5e3ca3;});}else{return _0x5e3ca3;}})[_0x4757('0x43')](function(_0x3359fe){logger[_0x4757('0x23')](_0x4757('0x4d'),_0x3359fe);throw _0x3359fe;});}return _0x5e3ca3;})['then'](respondWithResult(_0x237fd7,0xc9))[_0x4757('0x43')](handleError(_0x237fd7,null));};exports[_0x4757('0x1c')]=function(_0x1402b6,_0x589ae7){if(_0x1402b6[_0x4757('0x4e')]['id']){delete _0x1402b6[_0x4757('0x4e')]['id'];}return db['AnalyticMetric'][_0x4757('0x46')]({'where':{'id':_0x1402b6[_0x4757('0x45')]['id']}})[_0x4757('0x1d')](handleEntityNotFound(_0x589ae7,null))['then'](saveUpdates(_0x1402b6[_0x4757('0x4e')],null))[_0x4757('0x1d')](respondWithResult(_0x589ae7,null))['catch'](handleError(_0x589ae7,null));};exports['destroy']=function(_0x54a8c8,_0x526645){return db[_0x4757('0x27')]['find']({'where':{'id':_0x54a8c8[_0x4757('0x45')]['id']}})[_0x4757('0x1d')](handleEntityNotFound(_0x526645,null))[_0x4757('0x1d')](removeEntity(_0x526645,null))[_0x4757('0x43')](handleError(_0x526645,null));};
\ No newline at end of file
index 52c4e06..2bb1ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc46=['./analyticMetric.attributes','exports','lodash','util','moment','bluebird'];(function(_0x41815b,_0x251ea4){var _0x62efba=function(_0x393443){while(--_0x393443){_0x41815b['push'](_0x41815b['shift']());}};_0x62efba(++_0x251ea4);}(_0xfc46,0x13a));var _0x6fc4=function(_0x16051a,_0x5e4326){_0x16051a=_0x16051a-0x0;var _0x35d20d=_0xfc46[_0x16051a];return _0x35d20d;};'use strict';var _=require(_0x6fc4('0x0'));var util=require(_0x6fc4('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6fc4('0x2'));var BPromise=require(_0x6fc4('0x3'));var rp=require('request-promise');var attributes=require(_0x6fc4('0x4'));module[_0x6fc4('0x5')]=function(_0x4057ea,_0x51a32a){return _0x4057ea['define']('AnalyticMetric',attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x41aa=['bluebird','request-promise','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics','lodash','util','../../config/logger'];(function(_0x3a59c3,_0x4ae47e){var _0x9c93e9=function(_0x2cd848){while(--_0x2cd848){_0x3a59c3['push'](_0x3a59c3['shift']());}};_0x9c93e9(++_0x4ae47e);}(_0x41aa,0x101));var _0xa41a=function(_0x111e94,_0x31c837){_0x111e94=_0x111e94-0x0;var _0x3de107=_0x41aa[_0x111e94];return _0x3de107;};'use strict';var _=require(_0xa41a('0x0'));var util=require(_0xa41a('0x1'));var logger=require(_0xa41a('0x2'))('api');var moment=require('moment');var BPromise=require(_0xa41a('0x3'));var rp=require(_0xa41a('0x4'));var attributes=require(_0xa41a('0x5'));module[_0xa41a('0x6')]=function(_0xb98d20,_0x85a54){return _0xb98d20[_0xa41a('0x7')](_0xa41a('0x8'),attributes,{'tableName':_0xa41a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 82a80c8..7d47134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26cf=['jayson/promise','client','http','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','randomstring','../../mysqldb','../../config/logger','rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x26cf,0x135));var _0xf26c=function(_0x3d6bed,_0x104a55){_0x3d6bed=_0x3d6bed-0x0;var _0x4c7f2c=_0x26cf[_0x3d6bed];return _0x4c7f2c;};'use strict';var _=require('lodash');var util=require(_0xf26c('0x0'));var moment=require(_0xf26c('0x1'));var BPromise=require('bluebird');var rs=require(_0xf26c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf26c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xf26c('0x4'))(_0xf26c('0x5'));var config=require('../../config/environment');var jayson=require(_0xf26c('0x6'));var client=jayson[_0xf26c('0x7')][_0xf26c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x325edc,_0x7fb718,_0x32d754){return new BPromise(function(_0x4c1dc7,_0x522cbc){return client[_0xf26c('0x9')](_0x325edc,_0x32d754)[_0xf26c('0xa')](function(_0x49e70c){logger[_0xf26c('0xb')](_0xf26c('0xc'),_0x7fb718,_0xf26c('0xd'));logger[_0xf26c('0xe')](_0xf26c('0xf'),_0x7fb718,'request\x20sent',JSON[_0xf26c('0x10')](_0x49e70c));if(_0x49e70c[_0xf26c('0x11')]){if(_0x49e70c[_0xf26c('0x11')][_0xf26c('0x12')]===0x1f4){logger[_0xf26c('0x11')]('AnalyticMetric,\x20%s,\x20%s',_0x7fb718,_0x49e70c[_0xf26c('0x11')]['message']);return _0x522cbc(_0x49e70c[_0xf26c('0x11')]['message']);}logger[_0xf26c('0x11')]('AnalyticMetric,\x20%s,\x20%s',_0x7fb718,_0x49e70c[_0xf26c('0x11')]['message']);return _0x4c1dc7(_0x49e70c[_0xf26c('0x11')][_0xf26c('0x13')]);}else{logger[_0xf26c('0xb')](_0xf26c('0xc'),_0x7fb718,'request\x20sent');_0x4c1dc7(_0x49e70c['result'][_0xf26c('0x13')]);}})[_0xf26c('0x14')](function(_0x4f667c){logger[_0xf26c('0x11')](_0xf26c('0xc'),_0x7fb718,_0x4f667c);_0x522cbc(_0x4f667c);});});}
\ No newline at end of file
+var _0xeb5d=['then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeb5d,0x16b));var _0xdeb5=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xeb5d[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var util=require(_0xdeb5('0x0'));var moment=require(_0xdeb5('0x1'));var BPromise=require(_0xdeb5('0x2'));var rs=require(_0xdeb5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xdeb5('0x4'));var logger=require(_0xdeb5('0x5'))('rpc');var config=require(_0xdeb5('0x6'));var jayson=require(_0xdeb5('0x7'));var client=jayson[_0xdeb5('0x8')][_0xdeb5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x120329,_0x12484b,_0x328d6b){return new BPromise(function(_0x35c086,_0x2c8509){return client[_0xdeb5('0xa')](_0x120329,_0x328d6b)[_0xdeb5('0xb')](function(_0x2114ba){logger[_0xdeb5('0xc')](_0xdeb5('0xd'),_0x12484b,_0xdeb5('0xe'));logger[_0xdeb5('0xf')](_0xdeb5('0x10'),_0x12484b,'request\x20sent',JSON[_0xdeb5('0x11')](_0x2114ba));if(_0x2114ba[_0xdeb5('0x12')]){if(_0x2114ba[_0xdeb5('0x12')][_0xdeb5('0x13')]===0x1f4){logger[_0xdeb5('0x12')](_0xdeb5('0xd'),_0x12484b,_0x2114ba[_0xdeb5('0x12')][_0xdeb5('0x14')]);return _0x2c8509(_0x2114ba['error'][_0xdeb5('0x14')]);}logger['error'](_0xdeb5('0xd'),_0x12484b,_0x2114ba[_0xdeb5('0x12')][_0xdeb5('0x14')]);return _0x35c086(_0x2114ba[_0xdeb5('0x12')][_0xdeb5('0x14')]);}else{logger['info'](_0xdeb5('0xd'),_0x12484b,_0xdeb5('0xe'));_0x35c086(_0x2114ba['result'][_0xdeb5('0x14')]);}})[_0xdeb5('0x15')](function(_0x3521b2){logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x12484b,_0x3521b2);_0x2c8509(_0x3521b2);});});}
\ No newline at end of file
index c144985..6232fed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe61c=['connect-timeout','express','../../components/interaction/service','./analyticMetric.controller','get','isAuthenticated','index','/:id','post','create','put','update','exports','multer','path'];(function(_0x2edf70,_0x3b24e1){var _0x193515=function(_0x319c9a){while(--_0x319c9a){_0x2edf70['push'](_0x2edf70['shift']());}};_0x193515(++_0x3b24e1);}(_0xe61c,0xee));var _0xce61=function(_0x469a3c,_0x5ebc10){_0x469a3c=_0x469a3c-0x0;var _0x968f4=_0xe61c[_0x469a3c];return _0x968f4;};'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 auth=require('../../components/auth/service');var interaction=require(_0xce61('0x4'));var config=require('../../config/environment');var controller=require(_0xce61('0x5'));router[_0xce61('0x6')]('/',auth[_0xce61('0x7')](),controller[_0xce61('0x8')]);router[_0xce61('0x6')](_0xce61('0x9'),auth[_0xce61('0x7')](),controller['show']);router[_0xce61('0xa')]('/',auth[_0xce61('0x7')](),controller[_0xce61('0xb')]);router[_0xce61('0xc')](_0xce61('0x9'),auth[_0xce61('0x7')](),controller[_0xce61('0xd')]);router['delete'](_0xce61('0x9'),auth[_0xce61('0x7')](),controller['destroy']);module[_0xce61('0xe')]=router;
\ No newline at end of file
+var _0x5b12=['index','isAuthenticated','show','post','create','put','/:id','delete','destroy','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','./analyticMetric.controller'];(function(_0x478708,_0x816b6c){var _0x5c4bf0=function(_0x296658){while(--_0x296658){_0x478708['push'](_0x478708['shift']());}};_0x5c4bf0(++_0x816b6c);}(_0x5b12,0xa3));var _0x25b1=function(_0x5a1f44,_0x450078){_0x5a1f44=_0x5a1f44-0x0;var _0x4151a7=_0x5b12[_0x5a1f44];return _0x4151a7;};'use strict';var multer=require(_0x25b1('0x0'));var util=require(_0x25b1('0x1'));var path=require(_0x25b1('0x2'));var timeout=require('connect-timeout');var express=require(_0x25b1('0x3'));var router=express['Router']();var auth=require(_0x25b1('0x4'));var interaction=require(_0x25b1('0x5'));var config=require('../../config/environment');var controller=require(_0x25b1('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x25b1('0x7')]);router['get']('/:id',auth[_0x25b1('0x8')](),controller[_0x25b1('0x9')]);router[_0x25b1('0xa')]('/',auth[_0x25b1('0x8')](),controller[_0x25b1('0xb')]);router[_0x25b1('0xc')](_0x25b1('0xd'),auth[_0x25b1('0x8')](),controller['update']);router[_0x25b1('0xe')](_0x25b1('0xd'),auth[_0x25b1('0x8')](),controller[_0x25b1('0xf')]);module[_0x25b1('0x10')]=router;
\ No newline at end of file
index 1010dcd..ccc4e7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe26e=['sequelize','exports','TEXT'];(function(_0x440a8f,_0x15b435){var _0x5bf851=function(_0x580347){while(--_0x580347){_0x440a8f['push'](_0x440a8f['shift']());}};_0x5bf851(++_0x15b435);}(_0xe26e,0x147));var _0xee26=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xe26e[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0xee26('0x0'));module[_0xee26('0x1')]={'tree':{'type':Sequelize[_0xee26('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xbc7b=['sequelize','exports'];(function(_0x37fd9d,_0x227b47){var _0x45d964=function(_0x463ce8){while(--_0x463ce8){_0x37fd9d['push'](_0x37fd9d['shift']());}};_0x45d964(++_0x227b47);}(_0xbc7b,0x1a0));var _0xbbc7=function(_0x334c37,_0x396a01){_0x334c37=_0x334c37-0x0;var _0x5ab859=_0xbc7b[_0x334c37];return _0x5ab859;};'use strict';var Sequelize=require(_0xbbc7('0x0'));module[_0xbbc7('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index 556712b..2dd2a84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb469=['keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','nolimit','limit','offset','order','sort','pick','add','day','merge','where','filter','key','field','includeAll','findAll','rows','catch','show','params','length','options','create','body','update','find','destroy','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','jsforce','querystring','papaparse','../../components/parsers/qs','api','../../config/environment','sendStatus','status','json','count','set','Content-Range','reject','save','then','end','error','stack','name','send','index','AnalyticTreeReport','rawAttributes'];(function(_0x3e606f,_0x1a505b){var _0x37c231=function(_0x296aea){while(--_0x296aea){_0x3e606f['push'](_0x3e606f['shift']());}};_0x37c231(++_0x1a505b);}(_0xb469,0x13b));var _0x9b46=function(_0x986e50,_0x2c0b78){_0x986e50=_0x986e50-0x0;var _0xa038f=_0xb469[_0x986e50];return _0xa038f;};'use strict';var pdf=require(_0x9b46('0x0'));var emlformat=require(_0x9b46('0x1'));var rimraf=require(_0x9b46('0x2'));var zipdir=require(_0x9b46('0x3'));var jsonpatch=require(_0x9b46('0x4'));var rp=require(_0x9b46('0x5'));var moment=require(_0x9b46('0x6'));var BPromise=require('bluebird');var Mustache=require(_0x9b46('0x7'));var util=require(_0x9b46('0x8'));var path=require('path');var sox=require(_0x9b46('0x9'));var csv=require(_0x9b46('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x9b46('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9b46('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9b46('0xa'));var querystring=require(_0x9b46('0xd'));var Papa=require(_0x9b46('0xe'));var Redis=require('ioredis');var qs=require(_0x9b46('0xf'));var logger=require('../../config/logger')(_0x9b46('0x10'));var utils=require('../../config/utils');var config=require(_0x9b46('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x672157,_0x233b6b){_0x233b6b=_0x233b6b||0xcc;return function(_0x563de4){if(_0x563de4){return _0x672157[_0x9b46('0x12')](_0x233b6b);}return _0x672157[_0x9b46('0x13')](_0x233b6b)['end']();};}function respondWithResult(_0x14362a,_0x2cfb35){_0x2cfb35=_0x2cfb35||0xc8;return function(_0x3d9618){if(_0x3d9618){return _0x14362a[_0x9b46('0x13')](_0x2cfb35)[_0x9b46('0x14')](_0x3d9618);}};}function respondWithFilteredResult(_0x35c5c1,_0x2136bc){return function(_0x2e70c3){if(_0x2e70c3){var _0x3f2b28=_0x2e70c3[_0x9b46('0x15')],_0x178293=_0x2136bc['offset'],_0xbc1ba6=_0x2136bc['offset']+_0x2136bc['limit'],_0x135cc2;if(_0xbc1ba6>=_0x3f2b28){_0xbc1ba6=_0x3f2b28;_0x135cc2=0xc8;}else{_0x135cc2=0xce;}_0x35c5c1[_0x9b46('0x13')](_0x135cc2);return _0x35c5c1[_0x9b46('0x16')](_0x9b46('0x17'),_0x178293+'-'+_0xbc1ba6+'/'+_0x3f2b28)['json'](_0x2e70c3);}return null;};}function patchUpdates(_0x5dd7bd){return function(_0x3d9efa){try{jsonpatch['apply'](_0x3d9efa,_0x5dd7bd,!![]);}catch(_0x56ec1a){return BPromise[_0x9b46('0x18')](_0x56ec1a);}return _0x3d9efa[_0x9b46('0x19')]();};}function saveUpdates(_0x5a0d25,_0x2fd8f9){return function(_0x297be6){if(_0x297be6){return _0x297be6['update'](_0x5a0d25)['then'](function(_0xbec2ea){return _0xbec2ea;});}return null;};}function removeEntity(_0x137bfd,_0x204098){return function(_0x4e4c7d){if(_0x4e4c7d){return _0x4e4c7d['destroy']()[_0x9b46('0x1a')](function(){_0x137bfd['status'](0xcc)[_0x9b46('0x1b')]();});}};}function handleEntityNotFound(_0x3c76f2,_0x561408){return function(_0xadff19){if(!_0xadff19){_0x3c76f2['sendStatus'](0x194);}return _0xadff19;};}function handleError(_0x141cb6,_0x2b6f72){_0x2b6f72=_0x2b6f72||0x1f4;return function(_0x4d3b1b){logger[_0x9b46('0x1c')](_0x4d3b1b[_0x9b46('0x1d')]);if(_0x4d3b1b[_0x9b46('0x1e')]){delete _0x4d3b1b[_0x9b46('0x1e')];}_0x141cb6[_0x9b46('0x13')](_0x2b6f72)[_0x9b46('0x1f')](_0x4d3b1b);};}exports[_0x9b46('0x20')]=function(_0x5dc377,_0xdd756c){var _0x3ac37e={},_0x478105={},_0x268821={'count':0x0,'rows':[]};var _0x2468be=db[_0x9b46('0x21')][_0x9b46('0x22')];_0x478105['model']=_[_0x9b46('0x23')](_0x2468be);var _0xee519e={'dateStart':_0x5dc377[_0x9b46('0x24')][_0x9b46('0x25')],'dateEnd':_0x5dc377[_0x9b46('0x24')][_0x9b46('0x26')]};delete _0x5dc377[_0x9b46('0x24')][_0x9b46('0x25')];delete _0x5dc377[_0x9b46('0x24')][_0x9b46('0x26')];_0x478105[_0x9b46('0x24')]=_['keys'](_0x5dc377[_0x9b46('0x24')]);_0x478105[_0x9b46('0x27')]=_[_0x9b46('0x28')](_0x478105[_0x9b46('0x29')],_0x478105[_0x9b46('0x24')]);_0x3ac37e[_0x9b46('0x2a')]=_[_0x9b46('0x28')](_0x478105[_0x9b46('0x29')],qs[_0x9b46('0x2b')](_0x5dc377[_0x9b46('0x24')][_0x9b46('0x2b')]));_0x3ac37e['attributes']=_0x3ac37e[_0x9b46('0x2a')]['length']?_0x3ac37e[_0x9b46('0x2a')]:_0x478105[_0x9b46('0x29')];if(!_0x5dc377[_0x9b46('0x24')]['hasOwnProperty'](_0x9b46('0x2c'))){_0x3ac37e[_0x9b46('0x2d')]=qs[_0x9b46('0x2d')](_0x5dc377[_0x9b46('0x24')][_0x9b46('0x2d')]);_0x3ac37e['offset']=qs['offset'](_0x5dc377[_0x9b46('0x24')][_0x9b46('0x2e')]);}_0x3ac37e[_0x9b46('0x2f')]=qs[_0x9b46('0x30')](_0x5dc377['query'][_0x9b46('0x30')]);_0x3ac37e['where']=qs[_0x9b46('0x27')](_[_0x9b46('0x31')](_0x5dc377[_0x9b46('0x24')],_0x478105[_0x9b46('0x27')]));if(_0xee519e['dateStart']){if(_0xee519e[_0x9b46('0x26')]){_0xee519e['dateEnd']=moment(_0xee519e[_0x9b46('0x26')])[_0x9b46('0x32')](0x1,_0x9b46('0x33'));}else{_0xee519e[_0x9b46('0x26')]=moment(_0xee519e[_0x9b46('0x25')])[_0x9b46('0x32')](0x1,_0x9b46('0x33'));}_[_0x9b46('0x34')](_0x3ac37e[_0x9b46('0x35')],{'createdAt':{'$gte':_0xee519e[_0x9b46('0x25')],'$lte':_0xee519e[_0x9b46('0x26')]}});}if(_0x5dc377['query'][_0x9b46('0x36')]){_0x3ac37e['where']=_[_0x9b46('0x34')](_0x3ac37e[_0x9b46('0x35')],{'$or':_['map'](_0x2468be,function(_0x2c4431){if(_0x2c4431['type'][_0x9b46('0x37')]!=='VIRTUAL'){var _0x443226={};_0x443226[_0x2c4431[_0x9b46('0x38')]]={'$like':'%'+_0x5dc377[_0x9b46('0x24')][_0x9b46('0x36')]+'%'};return _0x443226;}})});}_0x3ac37e=_[_0x9b46('0x34')]({},_0x3ac37e,_0x5dc377['options']);var _0x4e268c={'where':_0x3ac37e[_0x9b46('0x35')]};return db['AnalyticTreeReport']['count'](_0x4e268c)['then'](function(_0x4e1911){_0x268821[_0x9b46('0x15')]=_0x4e1911;if(_0x5dc377['query'][_0x9b46('0x39')]){_0x3ac37e['include']=[{'all':!![]}];}return db[_0x9b46('0x21')][_0x9b46('0x3a')](_0x3ac37e);})[_0x9b46('0x1a')](function(_0xa14b){_0x268821[_0x9b46('0x3b')]=_0xa14b;return _0x268821;})[_0x9b46('0x1a')](respondWithFilteredResult(_0xdd756c,_0x3ac37e))[_0x9b46('0x3c')](handleError(_0xdd756c,null));};exports[_0x9b46('0x3d')]=function(_0x148d86,_0x5602a9){var _0x447302={'raw':!![],'where':{'id':_0x148d86[_0x9b46('0x3e')]['id']}},_0xe7d0fc={};_0xe7d0fc[_0x9b46('0x29')]=_[_0x9b46('0x23')](db[_0x9b46('0x21')][_0x9b46('0x22')]);_0xe7d0fc[_0x9b46('0x24')]=_[_0x9b46('0x23')](_0x148d86[_0x9b46('0x24')]);_0xe7d0fc[_0x9b46('0x27')]=_[_0x9b46('0x28')](_0xe7d0fc[_0x9b46('0x29')],_0xe7d0fc[_0x9b46('0x24')]);_0x447302['attributes']=_['intersection'](_0xe7d0fc[_0x9b46('0x29')],qs[_0x9b46('0x2b')](_0x148d86[_0x9b46('0x24')]['fields']));_0x447302['attributes']=_0x447302[_0x9b46('0x2a')][_0x9b46('0x3f')]?_0x447302[_0x9b46('0x2a')]:_0xe7d0fc[_0x9b46('0x29')];if(_0x148d86[_0x9b46('0x24')][_0x9b46('0x39')]){_0x447302['include']=[{'all':!![]}];}_0x447302=_[_0x9b46('0x34')]({},_0x447302,_0x148d86[_0x9b46('0x40')]);return db[_0x9b46('0x21')]['find'](_0x447302)[_0x9b46('0x1a')](handleEntityNotFound(_0x5602a9,null))['then'](respondWithResult(_0x5602a9,null))[_0x9b46('0x3c')](handleError(_0x5602a9,null));};exports[_0x9b46('0x41')]=function(_0x16e6d8,_0x566bad){return db[_0x9b46('0x21')][_0x9b46('0x41')](_0x16e6d8[_0x9b46('0x42')],{})[_0x9b46('0x1a')](respondWithResult(_0x566bad,0xc9))[_0x9b46('0x3c')](handleError(_0x566bad,null));};exports[_0x9b46('0x43')]=function(_0x539d02,_0x44cd9f){if(_0x539d02[_0x9b46('0x42')]['id']){delete _0x539d02[_0x9b46('0x42')]['id'];}return db[_0x9b46('0x21')][_0x9b46('0x44')]({'where':{'id':_0x539d02[_0x9b46('0x3e')]['id']}})['then'](handleEntityNotFound(_0x44cd9f,null))[_0x9b46('0x1a')](saveUpdates(_0x539d02['body'],null))[_0x9b46('0x1a')](respondWithResult(_0x44cd9f,null))[_0x9b46('0x3c')](handleError(_0x44cd9f,null));};exports[_0x9b46('0x45')]=function(_0x33d9ac,_0x33a2ea){return db['AnalyticTreeReport'][_0x9b46('0x44')]({'where':{'id':_0x33d9ac[_0x9b46('0x3e')]['id']}})[_0x9b46('0x1a')](handleEntityNotFound(_0x33a2ea,null))[_0x9b46('0x1a')](removeEntity(_0x33a2ea,null))[_0x9b46('0x3c')](handleError(_0x33a2ea,null));};
\ No newline at end of file
+var _0xf290=['body','destroy','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','Content-Range','reject','save','update','then','error','name','send','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','day','merge','map','key','VIRTUAL','field','filter','options','AnalyticTreeReport','count','includeAll','include','findAll','rows','show','params','fields','length','catch','create'];(function(_0x5bdb83,_0x3605de){var _0x1986bb=function(_0x2d6e94){while(--_0x2d6e94){_0x5bdb83['push'](_0x5bdb83['shift']());}};_0x1986bb(++_0x3605de);}(_0xf290,0xde));var _0x0f29=function(_0x142ec2,_0x5bb03d){_0x142ec2=_0x142ec2-0x0;var _0x45ef4e=_0xf290[_0x142ec2];return _0x45ef4e;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x0f29('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0f29('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0f29('0x2'));var moment=require(_0x0f29('0x3'));var BPromise=require(_0x0f29('0x4'));var Mustache=require(_0x0f29('0x5'));var util=require(_0x0f29('0x6'));var path=require('path');var sox=require(_0x0f29('0x7'));var csv=require('to-csv');var ejs=require(_0x0f29('0x8'));var fs=require('fs');var _=require(_0x0f29('0x9'));var squel=require(_0x0f29('0xa'));var crypto=require(_0x0f29('0xb'));var jsforce=require(_0x0f29('0xc'));var deskjs=require(_0x0f29('0xd'));var toCsv=require(_0x0f29('0xe'));var querystring=require(_0x0f29('0xf'));var Papa=require(_0x0f29('0x10'));var Redis=require(_0x0f29('0x11'));var qs=require(_0x0f29('0x12'));var logger=require(_0x0f29('0x13'))(_0x0f29('0x14'));var utils=require(_0x0f29('0x15'));var config=require(_0x0f29('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38eb8f,_0x5f4796){_0x5f4796=_0x5f4796||0xcc;return function(_0xc11f21){if(_0xc11f21){return _0x38eb8f[_0x0f29('0x17')](_0x5f4796);}return _0x38eb8f[_0x0f29('0x18')](_0x5f4796)[_0x0f29('0x19')]();};}function respondWithResult(_0x195424,_0x2d2573){_0x2d2573=_0x2d2573||0xc8;return function(_0x5519cf){if(_0x5519cf){return _0x195424[_0x0f29('0x18')](_0x2d2573)[_0x0f29('0x1a')](_0x5519cf);}};}function respondWithFilteredResult(_0x2bb7b8,_0x368984){return function(_0x234856){if(_0x234856){var _0x2ed9c5=_0x234856['count'],_0x1c518=_0x368984[_0x0f29('0x1b')],_0x69df36=_0x368984[_0x0f29('0x1b')]+_0x368984[_0x0f29('0x1c')],_0x547404;if(_0x69df36>=_0x2ed9c5){_0x69df36=_0x2ed9c5;_0x547404=0xc8;}else{_0x547404=0xce;}_0x2bb7b8[_0x0f29('0x18')](_0x547404);return _0x2bb7b8['set'](_0x0f29('0x1d'),_0x1c518+'-'+_0x69df36+'/'+_0x2ed9c5)['json'](_0x234856);}return null;};}function patchUpdates(_0x17b994){return function(_0x4ca5e8){try{jsonpatch['apply'](_0x4ca5e8,_0x17b994,!![]);}catch(_0x5eb0cf){return BPromise[_0x0f29('0x1e')](_0x5eb0cf);}return _0x4ca5e8[_0x0f29('0x1f')]();};}function saveUpdates(_0x13e8ff,_0x128337){return function(_0x21eea0){if(_0x21eea0){return _0x21eea0[_0x0f29('0x20')](_0x13e8ff)[_0x0f29('0x21')](function(_0x4888b6){return _0x4888b6;});}return null;};}function removeEntity(_0x49d954,_0x5a5a03){return function(_0x5ab592){if(_0x5ab592){return _0x5ab592['destroy']()['then'](function(){_0x49d954[_0x0f29('0x18')](0xcc)[_0x0f29('0x19')]();});}};}function handleEntityNotFound(_0x563d15,_0x1ac33e){return function(_0x1840e0){if(!_0x1840e0){_0x563d15[_0x0f29('0x17')](0x194);}return _0x1840e0;};}function handleError(_0x3402dc,_0x29ca73){_0x29ca73=_0x29ca73||0x1f4;return function(_0x568ad9){logger[_0x0f29('0x22')](_0x568ad9['stack']);if(_0x568ad9[_0x0f29('0x23')]){delete _0x568ad9[_0x0f29('0x23')];}_0x3402dc[_0x0f29('0x18')](_0x29ca73)[_0x0f29('0x24')](_0x568ad9);};}exports['index']=function(_0x13a2c7,_0x540d72){var _0x58b201={},_0x92876={},_0x5c0202={'count':0x0,'rows':[]};var _0x5bfcac=db['AnalyticTreeReport']['rawAttributes'];_0x92876[_0x0f29('0x25')]=_[_0x0f29('0x26')](_0x5bfcac);var _0x4cc5a0={'dateStart':_0x13a2c7[_0x0f29('0x27')][_0x0f29('0x28')],'dateEnd':_0x13a2c7[_0x0f29('0x27')]['dateEnd']};delete _0x13a2c7['query'][_0x0f29('0x28')];delete _0x13a2c7['query'][_0x0f29('0x29')];_0x92876['query']=_['keys'](_0x13a2c7[_0x0f29('0x27')]);_0x92876[_0x0f29('0x2a')]=_[_0x0f29('0x2b')](_0x92876[_0x0f29('0x25')],_0x92876['query']);_0x58b201['attributes']=_[_0x0f29('0x2b')](_0x92876['model'],qs['fields'](_0x13a2c7[_0x0f29('0x27')]['fields']));_0x58b201[_0x0f29('0x2c')]=_0x58b201['attributes']['length']?_0x58b201[_0x0f29('0x2c')]:_0x92876[_0x0f29('0x25')];if(!_0x13a2c7[_0x0f29('0x27')][_0x0f29('0x2d')](_0x0f29('0x2e'))){_0x58b201['limit']=qs[_0x0f29('0x1c')](_0x13a2c7['query'][_0x0f29('0x1c')]);_0x58b201[_0x0f29('0x1b')]=qs[_0x0f29('0x1b')](_0x13a2c7[_0x0f29('0x27')]['offset']);}_0x58b201[_0x0f29('0x2f')]=qs[_0x0f29('0x30')](_0x13a2c7['query'][_0x0f29('0x30')]);_0x58b201[_0x0f29('0x31')]=qs['filters'](_['pick'](_0x13a2c7[_0x0f29('0x27')],_0x92876[_0x0f29('0x2a')]));if(_0x4cc5a0[_0x0f29('0x28')]){if(_0x4cc5a0[_0x0f29('0x29')]){_0x4cc5a0[_0x0f29('0x29')]=moment(_0x4cc5a0[_0x0f29('0x29')])['add'](0x1,_0x0f29('0x32'));}else{_0x4cc5a0['dateEnd']=moment(_0x4cc5a0[_0x0f29('0x28')])['add'](0x1,_0x0f29('0x32'));}_[_0x0f29('0x33')](_0x58b201[_0x0f29('0x31')],{'createdAt':{'$gte':_0x4cc5a0['dateStart'],'$lte':_0x4cc5a0['dateEnd']}});}if(_0x13a2c7[_0x0f29('0x27')]['filter']){_0x58b201[_0x0f29('0x31')]=_[_0x0f29('0x33')](_0x58b201[_0x0f29('0x31')],{'$or':_[_0x0f29('0x34')](_0x5bfcac,function(_0x9ae45d){if(_0x9ae45d['type'][_0x0f29('0x35')]!==_0x0f29('0x36')){var _0x42872b={};_0x42872b[_0x9ae45d[_0x0f29('0x37')]]={'$like':'%'+_0x13a2c7[_0x0f29('0x27')][_0x0f29('0x38')]+'%'};return _0x42872b;}})});}_0x58b201=_[_0x0f29('0x33')]({},_0x58b201,_0x13a2c7[_0x0f29('0x39')]);var _0x250b20={'where':_0x58b201['where']};return db[_0x0f29('0x3a')][_0x0f29('0x3b')](_0x250b20)[_0x0f29('0x21')](function(_0x11b1dc){_0x5c0202['count']=_0x11b1dc;if(_0x13a2c7[_0x0f29('0x27')][_0x0f29('0x3c')]){_0x58b201[_0x0f29('0x3d')]=[{'all':!![]}];}return db[_0x0f29('0x3a')][_0x0f29('0x3e')](_0x58b201);})['then'](function(_0x410c59){_0x5c0202[_0x0f29('0x3f')]=_0x410c59;return _0x5c0202;})[_0x0f29('0x21')](respondWithFilteredResult(_0x540d72,_0x58b201))['catch'](handleError(_0x540d72,null));};exports[_0x0f29('0x40')]=function(_0x284279,_0x3a6479){var _0x338412={'raw':!![],'where':{'id':_0x284279[_0x0f29('0x41')]['id']}},_0x35f753={};_0x35f753[_0x0f29('0x25')]=_[_0x0f29('0x26')](db['AnalyticTreeReport']['rawAttributes']);_0x35f753['query']=_[_0x0f29('0x26')](_0x284279[_0x0f29('0x27')]);_0x35f753[_0x0f29('0x2a')]=_[_0x0f29('0x2b')](_0x35f753[_0x0f29('0x25')],_0x35f753[_0x0f29('0x27')]);_0x338412['attributes']=_[_0x0f29('0x2b')](_0x35f753['model'],qs[_0x0f29('0x42')](_0x284279['query'][_0x0f29('0x42')]));_0x338412[_0x0f29('0x2c')]=_0x338412[_0x0f29('0x2c')][_0x0f29('0x43')]?_0x338412[_0x0f29('0x2c')]:_0x35f753['model'];if(_0x284279[_0x0f29('0x27')][_0x0f29('0x3c')]){_0x338412[_0x0f29('0x3d')]=[{'all':!![]}];}_0x338412=_['merge']({},_0x338412,_0x284279[_0x0f29('0x39')]);return db['AnalyticTreeReport']['find'](_0x338412)[_0x0f29('0x21')](handleEntityNotFound(_0x3a6479,null))[_0x0f29('0x21')](respondWithResult(_0x3a6479,null))[_0x0f29('0x44')](handleError(_0x3a6479,null));};exports[_0x0f29('0x45')]=function(_0x20aa53,_0x335435){return db['AnalyticTreeReport'][_0x0f29('0x45')](_0x20aa53[_0x0f29('0x46')],{})[_0x0f29('0x21')](respondWithResult(_0x335435,0xc9))[_0x0f29('0x44')](handleError(_0x335435,null));};exports[_0x0f29('0x20')]=function(_0x3679da,_0xda5aa7){if(_0x3679da[_0x0f29('0x46')]['id']){delete _0x3679da[_0x0f29('0x46')]['id'];}return db[_0x0f29('0x3a')]['find']({'where':{'id':_0x3679da['params']['id']}})[_0x0f29('0x21')](handleEntityNotFound(_0xda5aa7,null))[_0x0f29('0x21')](saveUpdates(_0x3679da[_0x0f29('0x46')],null))[_0x0f29('0x21')](respondWithResult(_0xda5aa7,null))['catch'](handleError(_0xda5aa7,null));};exports[_0x0f29('0x47')]=function(_0xd624ad,_0x32102f){return db[_0x0f29('0x3a')][_0x0f29('0x48')]({'where':{'id':_0xd624ad[_0x0f29('0x41')]['id']}})[_0x0f29('0x21')](handleEntityNotFound(_0x32102f,null))['then'](removeEntity(_0x32102f,null))[_0x0f29('0x44')](handleError(_0x32102f,null));};
\ No newline at end of file
index f3718cf..7c4631e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9bc=['request-promise','./analyticTreeReport.attributes','define','AnalyticTreeReport','analytics_report_trees','util','../../config/logger'];(function(_0x402b59,_0x14844d){var _0x1562c6=function(_0x649fa6){while(--_0x649fa6){_0x402b59['push'](_0x402b59['shift']());}};_0x1562c6(++_0x14844d);}(_0xc9bc,0x124));var _0xcc9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc9bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xcc9b('0x0'));var logger=require(_0xcc9b('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcc9b('0x2'));var attributes=require(_0xcc9b('0x3'));module['exports']=function(_0x434c4f,_0x371599){return _0x434c4f[_0xcc9b('0x4')](_0xcc9b('0x5'),attributes,{'tableName':_0xcc9b('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfef6=['./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','api','moment','request-promise'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xfef6,0xe1));var _0x6fef=function(_0x2d3145,_0x2e57e3){_0x2d3145=_0x2d3145-0x0;var _0x1d0d68=_0xfef6[_0x2d3145];return _0x1d0d68;};'use strict';var _=require(_0x6fef('0x0'));var util=require(_0x6fef('0x1'));var logger=require('../../config/logger')(_0x6fef('0x2'));var moment=require(_0x6fef('0x3'));var BPromise=require('bluebird');var rp=require(_0x6fef('0x4'));var attributes=require(_0x6fef('0x5'));module[_0x6fef('0x6')]=function(_0x3b0496,_0x20928a){return _0x3b0496[_0x6fef('0x7')](_0x6fef('0x8'),attributes,{'tableName':_0x6fef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 56dcaf0..77a95a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a7e=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util'];(function(_0xf0ee7d,_0x3a65fb){var _0x4c8227=function(_0x309c75){while(--_0x309c75){_0xf0ee7d['push'](_0xf0ee7d['shift']());}};_0x4c8227(++_0x3a65fb);}(_0x7a7e,0x139));var _0xe7a7=function(_0x2dfcf8,_0x32da45){_0x2dfcf8=_0x2dfcf8-0x0;var _0x3942d2=_0x7a7e[_0x2dfcf8];return _0x3942d2;};'use strict';var _=require(_0xe7a7('0x0'));var util=require(_0xe7a7('0x1'));var moment=require(_0xe7a7('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe7a7('0x3'));var db=require(_0xe7a7('0x4'))['db'];var utils=require(_0xe7a7('0x5'));var logger=require(_0xe7a7('0x6'))(_0xe7a7('0x7'));var config=require(_0xe7a7('0x8'));var jayson=require(_0xe7a7('0x9'));var client=jayson[_0xe7a7('0xa')][_0xe7a7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2fa163,_0x26c7f3,_0x3aa9d6){return new BPromise(function(_0x4ea047,_0x312ca2){return client['request'](_0x2fa163,_0x3aa9d6)[_0xe7a7('0xc')](function(_0x4a0848){logger[_0xe7a7('0xd')](_0xe7a7('0xe'),_0x26c7f3,_0xe7a7('0xf'));logger[_0xe7a7('0x10')](_0xe7a7('0x11'),_0x26c7f3,_0xe7a7('0xf'),JSON['stringify'](_0x4a0848));if(_0x4a0848['error']){if(_0x4a0848[_0xe7a7('0x12')]['code']===0x1f4){logger['error'](_0xe7a7('0xe'),_0x26c7f3,_0x4a0848['error']['message']);return _0x312ca2(_0x4a0848[_0xe7a7('0x12')][_0xe7a7('0x13')]);}logger[_0xe7a7('0x12')](_0xe7a7('0xe'),_0x26c7f3,_0x4a0848[_0xe7a7('0x12')][_0xe7a7('0x13')]);return _0x4ea047(_0x4a0848[_0xe7a7('0x12')][_0xe7a7('0x13')]);}else{logger[_0xe7a7('0xd')](_0xe7a7('0xe'),_0x26c7f3,_0xe7a7('0xf'));_0x4ea047(_0x4a0848['result']['message']);}})[_0xe7a7('0x14')](function(_0x133aba){logger[_0xe7a7('0x12')](_0xe7a7('0xe'),_0x26c7f3,_0x133aba);_0x312ca2(_0x133aba);});});}
\ No newline at end of file
+var _0x7f51=['request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x156386,_0x1d838e){var _0x1fa0fe=function(_0x1fd63f){while(--_0x1fd63f){_0x156386['push'](_0x156386['shift']());}};_0x1fa0fe(++_0x1d838e);}(_0x7f51,0x1f0));var _0x17f5=function(_0x578ce8,_0x1a6f16){_0x578ce8=_0x578ce8-0x0;var _0xff5357=_0x7f51[_0x578ce8];return _0xff5357;};'use strict';var _=require(_0x17f5('0x0'));var util=require(_0x17f5('0x1'));var moment=require(_0x17f5('0x2'));var BPromise=require(_0x17f5('0x3'));var rs=require(_0x17f5('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x17f5('0x5'))['db'];var utils=require(_0x17f5('0x6'));var logger=require('../../config/logger')(_0x17f5('0x7'));var config=require(_0x17f5('0x8'));var jayson=require(_0x17f5('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5b90ee,_0x2b95b7,_0x3b2c04){return new BPromise(function(_0x4b362f,_0x3e09d1){return client[_0x17f5('0xa')](_0x5b90ee,_0x3b2c04)[_0x17f5('0xb')](function(_0x22cb60){logger[_0x17f5('0xc')](_0x17f5('0xd'),_0x2b95b7,_0x17f5('0xe'));logger[_0x17f5('0xf')](_0x17f5('0x10'),_0x2b95b7,_0x17f5('0xe'),JSON[_0x17f5('0x11')](_0x22cb60));if(_0x22cb60[_0x17f5('0x12')]){if(_0x22cb60[_0x17f5('0x12')][_0x17f5('0x13')]===0x1f4){logger['error'](_0x17f5('0xd'),_0x2b95b7,_0x22cb60['error'][_0x17f5('0x14')]);return _0x3e09d1(_0x22cb60['error']['message']);}logger[_0x17f5('0x12')](_0x17f5('0xd'),_0x2b95b7,_0x22cb60[_0x17f5('0x12')][_0x17f5('0x14')]);return _0x4b362f(_0x22cb60[_0x17f5('0x12')]['message']);}else{logger[_0x17f5('0xc')](_0x17f5('0xd'),_0x2b95b7,_0x17f5('0xe'));_0x4b362f(_0x22cb60['result'][_0x17f5('0x14')]);}})[_0x17f5('0x15')](function(_0x530bbd){logger['error'](_0x17f5('0xd'),_0x2b95b7,_0x530bbd);_0x3e09d1(_0x530bbd);});});}
\ No newline at end of file
index 21c07a4..23564f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb16b=['../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x5ecc63,_0x110d0d){var _0x56e65f=function(_0x138202){while(--_0x138202){_0x5ecc63['push'](_0x5ecc63['shift']());}};_0x56e65f(++_0x110d0d);}(_0xb16b,0xcc));var _0xbb16=function(_0x587ba2,_0x42eb40){_0x587ba2=_0x587ba2-0x0;var _0x50ec73=_0xb16b[_0x587ba2];return _0x50ec73;};'use strict';var multer=require(_0xbb16('0x0'));var util=require(_0xbb16('0x1'));var path=require(_0xbb16('0x2'));var timeout=require(_0xbb16('0x3'));var express=require(_0xbb16('0x4'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0xbb16('0x5'));var config=require(_0xbb16('0x6'));var controller=require(_0xbb16('0x7'));router[_0xbb16('0x8')]('/',auth[_0xbb16('0x9')](),controller[_0xbb16('0xa')]);router[_0xbb16('0x8')]('/:id',auth[_0xbb16('0x9')](),controller['show']);router[_0xbb16('0xb')]('/',auth['isAuthenticated'](),controller[_0xbb16('0xc')]);router[_0xbb16('0xd')](_0xbb16('0xe'),auth[_0xbb16('0x9')](),controller[_0xbb16('0xf')]);router[_0xbb16('0x10')](_0xbb16('0xe'),auth[_0xbb16('0x9')](),controller[_0xbb16('0x11')]);module[_0xbb16('0x12')]=router;
\ No newline at end of file
+var _0x35cb=['index','post','create','put','/:id','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x2c86dc,_0x10715c){var _0x15a71c=function(_0x4e1dee){while(--_0x4e1dee){_0x2c86dc['push'](_0x2c86dc['shift']());}};_0x15a71c(++_0x10715c);}(_0x35cb,0x1a6));var _0xb35c=function(_0x513337,_0x51c303){_0x513337=_0x513337-0x0;var _0x3e267e=_0x35cb[_0x513337];return _0x3e267e;};'use strict';var multer=require(_0xb35c('0x0'));var util=require(_0xb35c('0x1'));var path=require(_0xb35c('0x2'));var timeout=require(_0xb35c('0x3'));var express=require(_0xb35c('0x4'));var router=express[_0xb35c('0x5')]();var auth=require(_0xb35c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb35c('0x7'));var controller=require('./analyticTreeReport.controller');router[_0xb35c('0x8')]('/',auth[_0xb35c('0x9')](),controller[_0xb35c('0xa')]);router['get']('/:id',auth[_0xb35c('0x9')](),controller['show']);router[_0xb35c('0xb')]('/',auth[_0xb35c('0x9')](),controller[_0xb35c('0xc')]);router[_0xb35c('0xd')](_0xb35c('0xe'),auth[_0xb35c('0x9')](),controller['update']);router['delete'](_0xb35c('0xe'),auth[_0xb35c('0x9')](),controller[_0xb35c('0xf')]);module['exports']=router;
\ No newline at end of file
index 88c93e1..74d6387 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5a4=['STRING'];(function(_0x1d1d09,_0x504d77){var _0x8827e=function(_0x4f3128){while(--_0x4f3128){_0x1d1d09['push'](_0x1d1d09['shift']());}};_0x8827e(++_0x504d77);}(_0xf5a4,0x6c));var _0x4f5a=function(_0x534276,_0x3d7af2){_0x534276=_0x534276-0x0;var _0x391aff=_0xf5a4[_0x534276];return _0x391aff;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4f5a('0x0')]},'basename':{'type':Sequelize[_0x4f5a('0x0')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x477c=['exports','STRING','sequelize'];(function(_0x3050b3,_0x275b37){var _0x5e5b35=function(_0x3c3b5b){while(--_0x3c3b5b){_0x3050b3['push'](_0x3050b3['shift']());}};_0x5e5b35(++_0x275b37);}(_0x477c,0xfb));var _0xc477=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x477c[_0x413feb];return _0x40ee88;};'use strict';var Sequelize=require(_0xc477('0x0'));module[_0xc477('0x1')]={'name':{'type':Sequelize[_0xc477('0x2')]},'basename':{'type':Sequelize[_0xc477('0x2')]},'type':{'type':Sequelize[_0xc477('0x2')]}};
\ No newline at end of file
index 7862cd9..6dbfb69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb1=['join','root','server/files/attachments/','html-pdf','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','index','Attachment','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','add','day','merge','where','filter','type','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','find','body','file','originalname','basename','filename','mimetype','create','download','findOne'];(function(_0x2fb2c6,_0x8b15cf){var _0xceac4e=function(_0x1ae68e){while(--_0x1ae68e){_0x2fb2c6['push'](_0x2fb2c6['shift']());}};_0xceac4e(++_0x8b15cf);}(_0x0bb1,0x143));var _0x10bb=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0x0bb1[_0x1fc122];return _0xa2cb13;};'use strict';var pdf=require(_0x10bb('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x10bb('0x1'));var zipdir=require(_0x10bb('0x2'));var jsonpatch=require(_0x10bb('0x3'));var rp=require('request-promise');var moment=require(_0x10bb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x10bb('0x5'));var util=require('util');var path=require(_0x10bb('0x6'));var sox=require(_0x10bb('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x10bb('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x10bb('0x9'));var toCsv=require('to-csv');var querystring=require(_0x10bb('0xa'));var Papa=require('papaparse');var Redis=require(_0x10bb('0xb'));var qs=require(_0x10bb('0xc'));var logger=require(_0x10bb('0xd'))(_0x10bb('0xe'));var utils=require('../../config/utils');var config=require(_0x10bb('0xf'));var db=require(_0x10bb('0x10'))['db'];function respondWithStatusCode(_0x2543d1,_0x1adfa2){_0x1adfa2=_0x1adfa2||0xcc;return function(_0x348f52){if(_0x348f52){return _0x2543d1[_0x10bb('0x11')](_0x1adfa2);}return _0x2543d1['status'](_0x1adfa2)[_0x10bb('0x12')]();};}function respondWithResult(_0x3b2a4a,_0x5f4cf4){_0x5f4cf4=_0x5f4cf4||0xc8;return function(_0x5448a9){if(_0x5448a9){return _0x3b2a4a[_0x10bb('0x13')](_0x5f4cf4)[_0x10bb('0x14')](_0x5448a9);}};}function respondWithFilteredResult(_0x4e4fdd,_0xb52db1){return function(_0x1856bf){if(_0x1856bf){var _0x50b30c=_0x1856bf[_0x10bb('0x15')],_0x139057=_0xb52db1[_0x10bb('0x16')],_0x2e0971=_0xb52db1[_0x10bb('0x16')]+_0xb52db1['limit'],_0x587963;if(_0x2e0971>=_0x50b30c){_0x2e0971=_0x50b30c;_0x587963=0xc8;}else{_0x587963=0xce;}_0x4e4fdd[_0x10bb('0x13')](_0x587963);return _0x4e4fdd[_0x10bb('0x17')](_0x10bb('0x18'),_0x139057+'-'+_0x2e0971+'/'+_0x50b30c)[_0x10bb('0x14')](_0x1856bf);}return null;};}function patchUpdates(_0x18261b){return function(_0x21b7f4){try{jsonpatch['apply'](_0x21b7f4,_0x18261b,!![]);}catch(_0x57f834){return BPromise[_0x10bb('0x19')](_0x57f834);}return _0x21b7f4[_0x10bb('0x1a')]();};}function saveUpdates(_0x49f974,_0xf89edf){return function(_0x10fdda){if(_0x10fdda){return _0x10fdda[_0x10bb('0x1b')](_0x49f974)[_0x10bb('0x1c')](function(_0x1860f0){return _0x1860f0;});}return null;};}function removeEntity(_0x3230b2,_0x40f967){return function(_0x5dfcb8){if(_0x5dfcb8){return _0x5dfcb8[_0x10bb('0x1d')]()['then'](function(){_0x3230b2[_0x10bb('0x13')](0xcc)[_0x10bb('0x12')]();});}};}function handleEntityNotFound(_0x35a862,_0x353f6f){return function(_0x5de244){if(!_0x5de244){_0x35a862[_0x10bb('0x11')](0x194);}return _0x5de244;};}function handleError(_0x4a43a2,_0x512081){_0x512081=_0x512081||0x1f4;return function(_0x2759d2){logger[_0x10bb('0x1e')](_0x2759d2[_0x10bb('0x1f')]);if(_0x2759d2[_0x10bb('0x20')]){delete _0x2759d2[_0x10bb('0x20')];}_0x4a43a2[_0x10bb('0x13')](_0x512081)['send'](_0x2759d2);};}exports[_0x10bb('0x21')]=function(_0x308797,_0x4fabf1){var _0x59c60b={},_0x251ca9={},_0x106257={'count':0x0,'rows':[]};var _0x52a231=db[_0x10bb('0x22')][_0x10bb('0x23')];_0x251ca9['model']=_[_0x10bb('0x24')](_0x52a231);var _0x2c9456={'dateStart':_0x308797[_0x10bb('0x25')][_0x10bb('0x26')],'dateEnd':_0x308797[_0x10bb('0x25')][_0x10bb('0x27')]};delete _0x308797['query']['dateStart'];delete _0x308797[_0x10bb('0x25')][_0x10bb('0x27')];_0x251ca9[_0x10bb('0x25')]=_['keys'](_0x308797[_0x10bb('0x25')]);_0x251ca9[_0x10bb('0x28')]=_[_0x10bb('0x29')](_0x251ca9[_0x10bb('0x2a')],_0x251ca9[_0x10bb('0x25')]);_0x59c60b[_0x10bb('0x2b')]=_[_0x10bb('0x29')](_0x251ca9['model'],qs[_0x10bb('0x2c')](_0x308797['query']['fields']));_0x59c60b[_0x10bb('0x2b')]=_0x59c60b[_0x10bb('0x2b')][_0x10bb('0x2d')]?_0x59c60b[_0x10bb('0x2b')]:_0x251ca9[_0x10bb('0x2a')];if(!_0x308797[_0x10bb('0x25')][_0x10bb('0x2e')]('nolimit')){_0x59c60b[_0x10bb('0x2f')]=qs[_0x10bb('0x2f')](_0x308797[_0x10bb('0x25')][_0x10bb('0x2f')]);_0x59c60b[_0x10bb('0x16')]=qs[_0x10bb('0x16')](_0x308797[_0x10bb('0x25')][_0x10bb('0x16')]);}_0x59c60b[_0x10bb('0x30')]=qs[_0x10bb('0x31')](_0x308797[_0x10bb('0x25')]['sort']);_0x59c60b['where']=qs[_0x10bb('0x28')](_['pick'](_0x308797[_0x10bb('0x25')],_0x251ca9[_0x10bb('0x28')]));if(_0x2c9456[_0x10bb('0x26')]){if(_0x2c9456[_0x10bb('0x27')]){_0x2c9456[_0x10bb('0x27')]=moment(_0x2c9456['dateEnd'])['add'](0x1,'day');}else{_0x2c9456['dateEnd']=moment(_0x2c9456[_0x10bb('0x26')])[_0x10bb('0x32')](0x1,_0x10bb('0x33'));}_[_0x10bb('0x34')](_0x59c60b[_0x10bb('0x35')],{'createdAt':{'$gte':_0x2c9456[_0x10bb('0x26')],'$lte':_0x2c9456['dateEnd']}});}if(_0x308797['query'][_0x10bb('0x36')]){_0x59c60b[_0x10bb('0x35')]=_[_0x10bb('0x34')](_0x59c60b[_0x10bb('0x35')],{'$or':_['map'](_0x52a231,function(_0x341942){if(_0x341942[_0x10bb('0x37')][_0x10bb('0x38')]!==_0x10bb('0x39')){var _0x2d8d3f={};_0x2d8d3f[_0x341942[_0x10bb('0x3a')]]={'$like':'%'+_0x308797[_0x10bb('0x25')]['filter']+'%'};return _0x2d8d3f;}})});}_0x59c60b=_[_0x10bb('0x34')]({},_0x59c60b,_0x308797[_0x10bb('0x3b')]);var _0x39e928={'where':_0x59c60b[_0x10bb('0x35')]};return db[_0x10bb('0x22')][_0x10bb('0x15')](_0x39e928)[_0x10bb('0x1c')](function(_0x2bdef2){_0x106257[_0x10bb('0x15')]=_0x2bdef2;if(_0x308797[_0x10bb('0x25')][_0x10bb('0x3c')]){_0x59c60b[_0x10bb('0x3d')]=[{'all':!![]}];}return db['Attachment'][_0x10bb('0x3e')](_0x59c60b);})[_0x10bb('0x1c')](function(_0x927c43){_0x106257[_0x10bb('0x3f')]=_0x927c43;return _0x106257;})[_0x10bb('0x1c')](respondWithFilteredResult(_0x4fabf1,_0x59c60b))[_0x10bb('0x40')](handleError(_0x4fabf1,null));};exports[_0x10bb('0x41')]=function(_0x507a58,_0x1eb577){var _0x152884={'raw':!![],'where':{'id':_0x507a58[_0x10bb('0x42')]['id']}},_0x580e1b={};_0x580e1b['model']=_[_0x10bb('0x24')](db[_0x10bb('0x22')][_0x10bb('0x23')]);_0x580e1b[_0x10bb('0x25')]=_[_0x10bb('0x24')](_0x507a58['query']);_0x580e1b[_0x10bb('0x28')]=_['intersection'](_0x580e1b['model'],_0x580e1b['query']);_0x152884[_0x10bb('0x2b')]=_[_0x10bb('0x29')](_0x580e1b['model'],qs['fields'](_0x507a58[_0x10bb('0x25')]['fields']));_0x152884[_0x10bb('0x2b')]=_0x152884[_0x10bb('0x2b')][_0x10bb('0x2d')]?_0x152884[_0x10bb('0x2b')]:_0x580e1b[_0x10bb('0x2a')];if(_0x507a58[_0x10bb('0x25')][_0x10bb('0x3c')]){_0x152884[_0x10bb('0x3d')]=[{'all':!![]}];}_0x152884=_[_0x10bb('0x34')]({},_0x152884,_0x507a58['options']);return db[_0x10bb('0x22')][_0x10bb('0x43')](_0x152884)[_0x10bb('0x1c')](handleEntityNotFound(_0x1eb577,null))['then'](respondWithResult(_0x1eb577,null))[_0x10bb('0x40')](handleError(_0x1eb577,null));};exports[_0x10bb('0x1b')]=function(_0x57665f,_0x5a5d73){if(_0x57665f['body']['id']){delete _0x57665f['body']['id'];}return db['Attachment'][_0x10bb('0x43')]({'where':{'id':_0x57665f[_0x10bb('0x42')]['id']}})[_0x10bb('0x1c')](handleEntityNotFound(_0x5a5d73,null))[_0x10bb('0x1c')](saveUpdates(_0x57665f[_0x10bb('0x44')],null))[_0x10bb('0x1c')](respondWithResult(_0x5a5d73,null))[_0x10bb('0x40')](handleError(_0x5a5d73,null));};exports[_0x10bb('0x1d')]=function(_0x7745d3,_0x4c2de3){return db[_0x10bb('0x22')]['find']({'where':{'id':_0x7745d3[_0x10bb('0x42')]['id']}})[_0x10bb('0x1c')](handleEntityNotFound(_0x4c2de3,null))[_0x10bb('0x1c')](removeEntity(_0x4c2de3,null))['catch'](handleError(_0x4c2de3,null));};exports['create']=function(_0x549f2b,_0x46f160,_0x305f73){_0x549f2b[_0x10bb('0x44')][_0x10bb('0x20')]=_0x549f2b[_0x10bb('0x45')][_0x10bb('0x46')];_0x549f2b[_0x10bb('0x44')][_0x10bb('0x47')]=_0x549f2b['file'][_0x10bb('0x48')];_0x549f2b['body']['type']=_0x549f2b['file'][_0x10bb('0x49')];return db[_0x10bb('0x22')][_0x10bb('0x4a')](_0x549f2b[_0x10bb('0x44')])['then'](respondWithResult(_0x46f160,0xc9))[_0x10bb('0x40')](handleError(_0x46f160,null));};exports[_0x10bb('0x4b')]=function(_0x272a31,_0x1a3326,_0x534714){return db['Attachment'][_0x10bb('0x4c')]({'where':{'id':_0x272a31['params']['id']},'raw':!![]})[_0x10bb('0x1c')](handleEntityNotFound(_0x1a3326,null))[_0x10bb('0x1c')](function(_0x100fb6){if(_0x100fb6){return _0x1a3326[_0x10bb('0x4b')](path[_0x10bb('0x4d')](config[_0x10bb('0x4e')],_0x10bb('0x4f'),_0x100fb6[_0x10bb('0x47')]));}})[_0x10bb('0x40')](handleError(_0x1a3326,null));};
\ No newline at end of file
+var _0x1507=['findAll','then','rows','catch','params','find','body','file','originalname','basename','filename','type','mimetype','create','download','findOne','join','root','server/files/attachments/','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','status','stack','name','index','rawAttributes','model','query','dateStart','dateEnd','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','add','day','merge','filter','map','VIRTUAL','options','includeAll','include','Attachment'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x1507,0x15b));var _0x7150=function(_0x151dee,_0x3f620f){_0x151dee=_0x151dee-0x0;var _0x36879b=_0x1507[_0x151dee];return _0x36879b;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x7150('0x0'));var rimraf=require(_0x7150('0x1'));var zipdir=require(_0x7150('0x2'));var jsonpatch=require(_0x7150('0x3'));var rp=require(_0x7150('0x4'));var moment=require(_0x7150('0x5'));var BPromise=require(_0x7150('0x6'));var Mustache=require(_0x7150('0x7'));var util=require(_0x7150('0x8'));var path=require(_0x7150('0x9'));var sox=require(_0x7150('0xa'));var csv=require(_0x7150('0xb'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x7150('0xc'));var squel=require(_0x7150('0xd'));var crypto=require(_0x7150('0xe'));var jsforce=require(_0x7150('0xf'));var deskjs=require(_0x7150('0x10'));var toCsv=require(_0x7150('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x7150('0x11'))(_0x7150('0x12'));var utils=require(_0x7150('0x13'));var config=require('../../config/environment');var db=require(_0x7150('0x14'))['db'];function respondWithStatusCode(_0x43a98e,_0x4fbbe0){_0x4fbbe0=_0x4fbbe0||0xcc;return function(_0xad16f2){if(_0xad16f2){return _0x43a98e[_0x7150('0x15')](_0x4fbbe0);}return _0x43a98e['status'](_0x4fbbe0)[_0x7150('0x16')]();};}function respondWithResult(_0x15d368,_0x3c8746){_0x3c8746=_0x3c8746||0xc8;return function(_0x5b491c){if(_0x5b491c){return _0x15d368['status'](_0x3c8746)[_0x7150('0x17')](_0x5b491c);}};}function respondWithFilteredResult(_0x3b0688,_0x5c1fd5){return function(_0xd1511c){if(_0xd1511c){var _0x171ddf=_0xd1511c[_0x7150('0x18')],_0x542d36=_0x5c1fd5[_0x7150('0x19')],_0x292f07=_0x5c1fd5[_0x7150('0x19')]+_0x5c1fd5[_0x7150('0x1a')],_0x1caed9;if(_0x292f07>=_0x171ddf){_0x292f07=_0x171ddf;_0x1caed9=0xc8;}else{_0x1caed9=0xce;}_0x3b0688['status'](_0x1caed9);return _0x3b0688[_0x7150('0x1b')](_0x7150('0x1c'),_0x542d36+'-'+_0x292f07+'/'+_0x171ddf)[_0x7150('0x17')](_0xd1511c);}return null;};}function patchUpdates(_0x57eb30){return function(_0x124dea){try{jsonpatch[_0x7150('0x1d')](_0x124dea,_0x57eb30,!![]);}catch(_0x4b5102){return BPromise[_0x7150('0x1e')](_0x4b5102);}return _0x124dea[_0x7150('0x1f')]();};}function saveUpdates(_0x164e08,_0x1e0c30){return function(_0x5af47a){if(_0x5af47a){return _0x5af47a[_0x7150('0x20')](_0x164e08)['then'](function(_0x2e7dc4){return _0x2e7dc4;});}return null;};}function removeEntity(_0x43c55b,_0x33edfc){return function(_0x52b368){if(_0x52b368){return _0x52b368[_0x7150('0x21')]()['then'](function(){_0x43c55b[_0x7150('0x22')](0xcc)[_0x7150('0x16')]();});}};}function handleEntityNotFound(_0x549b54,_0x18d554){return function(_0x468138){if(!_0x468138){_0x549b54[_0x7150('0x15')](0x194);}return _0x468138;};}function handleError(_0x517b6a,_0x48ffac){_0x48ffac=_0x48ffac||0x1f4;return function(_0x155a3d){logger['error'](_0x155a3d[_0x7150('0x23')]);if(_0x155a3d[_0x7150('0x24')]){delete _0x155a3d['name'];}_0x517b6a['status'](_0x48ffac)['send'](_0x155a3d);};}exports[_0x7150('0x25')]=function(_0x524930,_0x3633f7){var _0x317f91={},_0xfd73a3={},_0x4ff620={'count':0x0,'rows':[]};var _0x353902=db['Attachment'][_0x7150('0x26')];_0xfd73a3[_0x7150('0x27')]=_['keys'](_0x353902);var _0x14b889={'dateStart':_0x524930[_0x7150('0x28')][_0x7150('0x29')],'dateEnd':_0x524930[_0x7150('0x28')][_0x7150('0x2a')]};delete _0x524930[_0x7150('0x28')][_0x7150('0x29')];delete _0x524930[_0x7150('0x28')][_0x7150('0x2a')];_0xfd73a3[_0x7150('0x28')]=_[_0x7150('0x2b')](_0x524930[_0x7150('0x28')]);_0xfd73a3[_0x7150('0x2c')]=_['intersection'](_0xfd73a3['model'],_0xfd73a3['query']);_0x317f91[_0x7150('0x2d')]=_[_0x7150('0x2e')](_0xfd73a3['model'],qs[_0x7150('0x2f')](_0x524930[_0x7150('0x28')][_0x7150('0x2f')]));_0x317f91['attributes']=_0x317f91[_0x7150('0x2d')][_0x7150('0x30')]?_0x317f91[_0x7150('0x2d')]:_0xfd73a3[_0x7150('0x27')];if(!_0x524930[_0x7150('0x28')]['hasOwnProperty']('nolimit')){_0x317f91[_0x7150('0x1a')]=qs[_0x7150('0x1a')](_0x524930['query'][_0x7150('0x1a')]);_0x317f91[_0x7150('0x19')]=qs['offset'](_0x524930['query'][_0x7150('0x19')]);}_0x317f91[_0x7150('0x31')]=qs[_0x7150('0x32')](_0x524930[_0x7150('0x28')]['sort']);_0x317f91[_0x7150('0x33')]=qs[_0x7150('0x2c')](_[_0x7150('0x34')](_0x524930[_0x7150('0x28')],_0xfd73a3[_0x7150('0x2c')]));if(_0x14b889['dateStart']){if(_0x14b889[_0x7150('0x2a')]){_0x14b889[_0x7150('0x2a')]=moment(_0x14b889[_0x7150('0x2a')])[_0x7150('0x35')](0x1,_0x7150('0x36'));}else{_0x14b889[_0x7150('0x2a')]=moment(_0x14b889[_0x7150('0x29')])['add'](0x1,_0x7150('0x36'));}_[_0x7150('0x37')](_0x317f91[_0x7150('0x33')],{'createdAt':{'$gte':_0x14b889[_0x7150('0x29')],'$lte':_0x14b889[_0x7150('0x2a')]}});}if(_0x524930[_0x7150('0x28')][_0x7150('0x38')]){_0x317f91[_0x7150('0x33')]=_[_0x7150('0x37')](_0x317f91[_0x7150('0x33')],{'$or':_[_0x7150('0x39')](_0x353902,function(_0x27f829){if(_0x27f829['type']['key']!==_0x7150('0x3a')){var _0x5df998={};_0x5df998[_0x27f829['field']]={'$like':'%'+_0x524930[_0x7150('0x28')]['filter']+'%'};return _0x5df998;}})});}_0x317f91=_[_0x7150('0x37')]({},_0x317f91,_0x524930[_0x7150('0x3b')]);var _0x2d0903={'where':_0x317f91[_0x7150('0x33')]};return db['Attachment'][_0x7150('0x18')](_0x2d0903)['then'](function(_0x2b7b55){_0x4ff620[_0x7150('0x18')]=_0x2b7b55;if(_0x524930['query'][_0x7150('0x3c')]){_0x317f91[_0x7150('0x3d')]=[{'all':!![]}];}return db[_0x7150('0x3e')][_0x7150('0x3f')](_0x317f91);})[_0x7150('0x40')](function(_0x5e3af5){_0x4ff620[_0x7150('0x41')]=_0x5e3af5;return _0x4ff620;})[_0x7150('0x40')](respondWithFilteredResult(_0x3633f7,_0x317f91))[_0x7150('0x42')](handleError(_0x3633f7,null));};exports['show']=function(_0x2128ef,_0x5d91a2){var _0x85287b={'raw':!![],'where':{'id':_0x2128ef[_0x7150('0x43')]['id']}},_0x2ad8e0={};_0x2ad8e0[_0x7150('0x27')]=_['keys'](db['Attachment'][_0x7150('0x26')]);_0x2ad8e0[_0x7150('0x28')]=_[_0x7150('0x2b')](_0x2128ef[_0x7150('0x28')]);_0x2ad8e0[_0x7150('0x2c')]=_[_0x7150('0x2e')](_0x2ad8e0[_0x7150('0x27')],_0x2ad8e0[_0x7150('0x28')]);_0x85287b[_0x7150('0x2d')]=_[_0x7150('0x2e')](_0x2ad8e0[_0x7150('0x27')],qs[_0x7150('0x2f')](_0x2128ef[_0x7150('0x28')][_0x7150('0x2f')]));_0x85287b[_0x7150('0x2d')]=_0x85287b[_0x7150('0x2d')]['length']?_0x85287b[_0x7150('0x2d')]:_0x2ad8e0[_0x7150('0x27')];if(_0x2128ef[_0x7150('0x28')][_0x7150('0x3c')]){_0x85287b[_0x7150('0x3d')]=[{'all':!![]}];}_0x85287b=_['merge']({},_0x85287b,_0x2128ef[_0x7150('0x3b')]);return db[_0x7150('0x3e')][_0x7150('0x44')](_0x85287b)['then'](handleEntityNotFound(_0x5d91a2,null))[_0x7150('0x40')](respondWithResult(_0x5d91a2,null))['catch'](handleError(_0x5d91a2,null));};exports[_0x7150('0x20')]=function(_0x357428,_0x176f1a){if(_0x357428[_0x7150('0x45')]['id']){delete _0x357428[_0x7150('0x45')]['id'];}return db[_0x7150('0x3e')]['find']({'where':{'id':_0x357428[_0x7150('0x43')]['id']}})[_0x7150('0x40')](handleEntityNotFound(_0x176f1a,null))[_0x7150('0x40')](saveUpdates(_0x357428[_0x7150('0x45')],null))[_0x7150('0x40')](respondWithResult(_0x176f1a,null))[_0x7150('0x42')](handleError(_0x176f1a,null));};exports['destroy']=function(_0x35b014,_0x1cfc7d){return db[_0x7150('0x3e')][_0x7150('0x44')]({'where':{'id':_0x35b014['params']['id']}})[_0x7150('0x40')](handleEntityNotFound(_0x1cfc7d,null))[_0x7150('0x40')](removeEntity(_0x1cfc7d,null))['catch'](handleError(_0x1cfc7d,null));};exports['create']=function(_0x488e2f,_0x2b88c9,_0x3ae73b){_0x488e2f['body'][_0x7150('0x24')]=_0x488e2f[_0x7150('0x46')][_0x7150('0x47')];_0x488e2f[_0x7150('0x45')][_0x7150('0x48')]=_0x488e2f['file'][_0x7150('0x49')];_0x488e2f[_0x7150('0x45')][_0x7150('0x4a')]=_0x488e2f[_0x7150('0x46')][_0x7150('0x4b')];return db[_0x7150('0x3e')][_0x7150('0x4c')](_0x488e2f[_0x7150('0x45')])[_0x7150('0x40')](respondWithResult(_0x2b88c9,0xc9))[_0x7150('0x42')](handleError(_0x2b88c9,null));};exports[_0x7150('0x4d')]=function(_0x6d8916,_0x4191cf,_0x256558){return db['Attachment'][_0x7150('0x4e')]({'where':{'id':_0x6d8916[_0x7150('0x43')]['id']},'raw':!![]})[_0x7150('0x40')](handleEntityNotFound(_0x4191cf,null))[_0x7150('0x40')](function(_0x4b3cda){if(_0x4b3cda){return _0x4191cf[_0x7150('0x4d')](path[_0x7150('0x4f')](config[_0x7150('0x50')],_0x7150('0x51'),_0x4b3cda[_0x7150('0x48')]));}})['catch'](handleError(_0x4191cf,null));};
\ No newline at end of file
index 322dffe..c3a0aa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['lodash','../../config/logger','api','moment','bluebird','./attachment.attributes','exports','Attachment'];(function(_0x7d8124,_0x6b33c2){var _0x463b85=function(_0x51c513){while(--_0x51c513){_0x7d8124['push'](_0x7d8124['shift']());}};_0x463b85(++_0x6b33c2);}(_0x6aa7,0x178));var _0x76aa=function(_0xfa1920,_0x30bdd7){_0xfa1920=_0xfa1920-0x0;var _0x15df4f=_0x6aa7[_0xfa1920];return _0x15df4f;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var logger=require(_0x76aa('0x1'))(_0x76aa('0x2'));var moment=require(_0x76aa('0x3'));var BPromise=require(_0x76aa('0x4'));var rp=require('request-promise');var attributes=require(_0x76aa('0x5'));module[_0x76aa('0x6')]=function(_0x1d6e04,_0x511588){return _0x1d6e04['define'](_0x76aa('0x7'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['bluebird','request-promise','exports','define','Attachment','attachments','lodash','util'];(function(_0x1b6311,_0x42ec20){var _0x25aab6=function(_0x139a77){while(--_0x139a77){_0x1b6311['push'](_0x1b6311['shift']());}};_0x25aab6(++_0x42ec20);}(_0x55ca,0x126));var _0xa55c=function(_0x332c1b,_0x28d711){_0x332c1b=_0x332c1b-0x0;var _0x21b49b=_0x55ca[_0x332c1b];return _0x21b49b;};'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 attributes=require('./attachment.attributes');module[_0xa55c('0x4')]=function(_0x2db02a,_0xcb02e3){return _0x2db02a[_0xa55c('0x5')](_0xa55c('0x6'),attributes,{'tableName':_0xa55c('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 06ce8c0..0e10f74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e7c=['ioredis','../../mysqldb','../../config/logger','jayson/promise','http','request','then','info','Attachment,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','create','options','raw','CreateAttachment','stringify','catch','util','bluebird'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6e7c,0xb6));var _0xc6e7=function(_0x13d99b,_0x87b186){_0x13d99b=_0x13d99b-0x0;var _0x159b5c=_0x6e7c[_0x13d99b];return _0x159b5c;};'use strict';var _=require('lodash');var util=require(_0xc6e7('0x0'));var moment=require('moment');var BPromise=require(_0xc6e7('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc6e7('0x2'));var db=require(_0xc6e7('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc6e7('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc6e7('0x5'));var client=jayson['client'][_0xc6e7('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x27c24c,_0x19beb0,_0x53b818){return new BPromise(function(_0x283c01,_0x1a6920){return client[_0xc6e7('0x7')](_0x27c24c,_0x53b818)[_0xc6e7('0x8')](function(_0x307e27){logger[_0xc6e7('0x9')](_0xc6e7('0xa'),_0x19beb0,'request\x20sent');logger[_0xc6e7('0xb')]('Attachment,\x20%s,\x20%s,\x20%s',_0x19beb0,_0xc6e7('0xc'),JSON['stringify'](_0x307e27));if(_0x307e27['error']){if(_0x307e27[_0xc6e7('0xd')][_0xc6e7('0xe')]===0x1f4){logger[_0xc6e7('0xd')](_0xc6e7('0xa'),_0x19beb0,_0x307e27[_0xc6e7('0xd')]['message']);return _0x1a6920(_0x307e27[_0xc6e7('0xd')][_0xc6e7('0xf')]);}logger[_0xc6e7('0xd')](_0xc6e7('0xa'),_0x19beb0,_0x307e27['error'][_0xc6e7('0xf')]);return _0x283c01(_0x307e27[_0xc6e7('0xd')][_0xc6e7('0xf')]);}else{logger['info'](_0xc6e7('0xa'),_0x19beb0,_0xc6e7('0xc'));_0x283c01(_0x307e27[_0xc6e7('0x10')][_0xc6e7('0xf')]);}})['catch'](function(_0x5d7a23){logger['error'](_0xc6e7('0xa'),_0x19beb0,_0x5d7a23);_0x1a6920(_0x5d7a23);});});}exports['CreateAttachment']=function(_0x31821b){var _0x185c0a=this;return new Promise(function(_0x1d94c6,_0x17f942){return db['Attachment'][_0xc6e7('0x11')](_0x31821b['body'],{'raw':_0x31821b[_0xc6e7('0x12')]?_0x31821b[_0xc6e7('0x12')][_0xc6e7('0x13')]===undefined?!![]:![]:!![]})[_0xc6e7('0x8')](function(_0x438f13){logger[_0xc6e7('0x9')](_0xc6e7('0x14'),_0x31821b);logger[_0xc6e7('0xb')](_0xc6e7('0x14'),_0x31821b,JSON[_0xc6e7('0x15')](_0x438f13));_0x1d94c6(_0x438f13);})[_0xc6e7('0x16')](function(_0x395c87){logger[_0xc6e7('0xd')]('CreateAttachment',_0x395c87[_0xc6e7('0xf')],_0x31821b);_0x17f942(_0x185c0a['error'](0x1f4,_0x395c87[_0xc6e7('0xf')]));});});};
\ No newline at end of file
+var _0x8cc8=['debug','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','CreateAttachment','Attachment','create','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','Attachment,\x20%s,\x20%s'];(function(_0x15d203,_0x5b93ba){var _0x350cf6=function(_0x32335b){while(--_0x32335b){_0x15d203['push'](_0x15d203['shift']());}};_0x350cf6(++_0x5b93ba);}(_0x8cc8,0x177));var _0x88cc=function(_0x2c53ce,_0x4fed5a){_0x2c53ce=_0x2c53ce-0x0;var _0x59897d=_0x8cc8[_0x2c53ce];return _0x59897d;};'use strict';var _=require(_0x88cc('0x0'));var util=require(_0x88cc('0x1'));var moment=require(_0x88cc('0x2'));var BPromise=require(_0x88cc('0x3'));var rs=require(_0x88cc('0x4'));var fs=require('fs');var Redis=require(_0x88cc('0x5'));var db=require(_0x88cc('0x6'))['db'];var utils=require(_0x88cc('0x7'));var logger=require(_0x88cc('0x8'))(_0x88cc('0x9'));var config=require(_0x88cc('0xa'));var jayson=require(_0x88cc('0xb'));var client=jayson[_0x88cc('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x58bdd5,_0x3d35ed,_0x2db13a){return new BPromise(function(_0x219585,_0x4471b0){return client['request'](_0x58bdd5,_0x2db13a)[_0x88cc('0xd')](function(_0x2e77ae){logger['info'](_0x88cc('0xe'),_0x3d35ed,'request\x20sent');logger[_0x88cc('0xf')](_0x88cc('0x10'),_0x3d35ed,_0x88cc('0x11'),JSON[_0x88cc('0x12')](_0x2e77ae));if(_0x2e77ae['error']){if(_0x2e77ae[_0x88cc('0x13')][_0x88cc('0x14')]===0x1f4){logger[_0x88cc('0x13')](_0x88cc('0xe'),_0x3d35ed,_0x2e77ae[_0x88cc('0x13')][_0x88cc('0x15')]);return _0x4471b0(_0x2e77ae[_0x88cc('0x13')][_0x88cc('0x15')]);}logger['error'](_0x88cc('0xe'),_0x3d35ed,_0x2e77ae[_0x88cc('0x13')][_0x88cc('0x15')]);return _0x219585(_0x2e77ae[_0x88cc('0x13')][_0x88cc('0x15')]);}else{logger[_0x88cc('0x16')]('Attachment,\x20%s,\x20%s',_0x3d35ed,_0x88cc('0x11'));_0x219585(_0x2e77ae[_0x88cc('0x17')][_0x88cc('0x15')]);}})[_0x88cc('0x18')](function(_0x13ff73){logger['error'](_0x88cc('0xe'),_0x3d35ed,_0x13ff73);_0x4471b0(_0x13ff73);});});}exports[_0x88cc('0x19')]=function(_0x34fb65){var _0x3a6289=this;return new Promise(function(_0x33144a,_0x4a377a){return db[_0x88cc('0x1a')][_0x88cc('0x1b')](_0x34fb65['body'],{'raw':_0x34fb65[_0x88cc('0x1c')]?_0x34fb65['options'][_0x88cc('0x1d')]===undefined?!![]:![]:!![]})[_0x88cc('0xd')](function(_0x50cdaf){logger[_0x88cc('0x16')](_0x88cc('0x19'),_0x34fb65);logger[_0x88cc('0xf')](_0x88cc('0x19'),_0x34fb65,JSON[_0x88cc('0x12')](_0x50cdaf));_0x33144a(_0x50cdaf);})[_0x88cc('0x18')](function(_0x4e5edb){logger[_0x88cc('0x13')](_0x88cc('0x19'),_0x4e5edb[_0x88cc('0x15')],_0x34fb65);_0x4a377a(_0x3a6289[_0x88cc('0x13')](0x1f4,_0x4e5edb[_0x88cc('0x15')]));});});};
\ No newline at end of file
index a30c2f9..77dc62a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbefe=['%s-%s','now','file','create','put','isAuthenticated','update','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','/:id','show','download','diskStorage','join','root','server/files/attachments/','format'];(function(_0x239d5d,_0x2d63e8){var _0x1910ce=function(_0x45e89b){while(--_0x45e89b){_0x239d5d['push'](_0x239d5d['shift']());}};_0x1910ce(++_0x2d63e8);}(_0xbefe,0x168));var _0xebef=function(_0x123df5,_0x5a535b){_0x123df5=_0x123df5-0x0;var _0x115fc5=_0xbefe[_0x123df5];return _0x115fc5;};'use strict';var multer=require('multer');var util=require(_0xebef('0x0'));var path=require('path');var timeout=require(_0xebef('0x1'));var express=require(_0xebef('0x2'));var router=express[_0xebef('0x3')]();var auth=require(_0xebef('0x4'));var interaction=require(_0xebef('0x5'));var config=require(_0xebef('0x6'));var controller=require(_0xebef('0x7'));router[_0xebef('0x8')]('/',auth['isAuthenticated'](),controller[_0xebef('0x9')]);router[_0xebef('0x8')](_0xebef('0xa'),auth['isAuthenticated'](),controller[_0xebef('0xb')]);router[_0xebef('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0xebef('0xc')]);var upload=multer({'storage':multer[_0xebef('0xd')]({'destination':function(_0x187f3b,_0x12f30c,_0x37ef55){_0x37ef55(null,path[_0xebef('0xe')](config[_0xebef('0xf')],_0xebef('0x10')));},'filename':function(_0x56dcce,_0x6fe645,_0x3c1c66){_0x3c1c66(null,util[_0xebef('0x11')](_0xebef('0x12'),Date[_0xebef('0x13')](),_0x6fe645['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post']('/',upload['single'](_0xebef('0x14')),controller[_0xebef('0x15')]);router[_0xebef('0x16')](_0xebef('0xa'),auth[_0xebef('0x17')](),controller[_0xebef('0x18')]);router['delete'](_0xebef('0xa'),auth[_0xebef('0x17')](),controller[_0xebef('0x19')]);module[_0xebef('0x1a')]=router;
\ No newline at end of file
+var _0x894f=['originalname','replace','post','single','file','put','update','delete','destroy','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','/:id/download','download','diskStorage','join','root','server/files/attachments/','format','%s-%s','now'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x894f,0x14d));var _0xf894=function(_0x3a6673,_0x5eee9e){_0x3a6673=_0x3a6673-0x0;var _0x48aad1=_0x894f[_0x3a6673];return _0x48aad1;};'use strict';var multer=require(_0xf894('0x0'));var util=require(_0xf894('0x1'));var path=require(_0xf894('0x2'));var timeout=require(_0xf894('0x3'));var express=require('express');var router=express['Router']();var auth=require(_0xf894('0x4'));var interaction=require(_0xf894('0x5'));var config=require('../../config/environment');var controller=require('./attachment.controller');router[_0xf894('0x6')]('/',auth[_0xf894('0x7')](),controller['index']);router['get'](_0xf894('0x8'),auth[_0xf894('0x7')](),controller['show']);router[_0xf894('0x6')](_0xf894('0x9'),auth[_0xf894('0x7')](),controller[_0xf894('0xa')]);var upload=multer({'storage':multer[_0xf894('0xb')]({'destination':function(_0x25b554,_0x2057b5,_0x420296){_0x420296(null,path[_0xf894('0xc')](config[_0xf894('0xd')],_0xf894('0xe')));},'filename':function(_0x3cc8e7,_0x39fbc4,_0x7d635b){_0x7d635b(null,util[_0xf894('0xf')](_0xf894('0x10'),Date[_0xf894('0x11')](),_0x39fbc4[_0xf894('0x12')][_0xf894('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf894('0x14')]('/',upload[_0xf894('0x15')](_0xf894('0x16')),controller['create']);router[_0xf894('0x17')]('/:id',auth['isAuthenticated'](),controller[_0xf894('0x18')]);router[_0xf894('0x19')](_0xf894('0x8'),auth[_0xf894('0x7')](),controller[_0xf894('0x1a')]);module['exports']=router;
\ No newline at end of file
index b2cb5c7..966888f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2741=['use','clientID','clientSecret','User','map','emails','value','admin','user','agent','then','User\x20email\x20not\x20found!','catch','lodash','passport','passport-google-oauth20','Strategy','../../config/environment','signToken','login','authenticate','google','/login'];(function(_0x22ec5f,_0x590a63){var _0x48846c=function(_0x4a0960){while(--_0x4a0960){_0x22ec5f['push'](_0x22ec5f['shift']());}};_0x48846c(++_0x590a63);}(_0x2741,0xae));var _0x1274=function(_0x70b7a,_0x6d957a){_0x70b7a=_0x70b7a-0x0;var _0x7cb5a9=_0x2741[_0x70b7a];return _0x7cb5a9;};'use strict';var _=require(_0x1274('0x0'));var passport=require(_0x1274('0x1'));var GoogleStrategy=require(_0x1274('0x2'))[_0x1274('0x3')];var db=require('../../mysqldb')['db'];var config=require(_0x1274('0x4'));var signToken=require('../../components/auth/service')[_0x1274('0x5')];exports[_0x1274('0x6')]=passport[_0x1274('0x7')](_0x1274('0x8'),{'failureRedirect':_0x1274('0x9'),'scope':['profile','email'],'session':![]});exports['callback']=passport[_0x1274('0x7')](_0x1274('0x8'),{'failureRedirect':_0x1274('0x9'),'session':![]});passport[_0x1274('0xa')](new GoogleStrategy({'clientID':config[_0x1274('0x8')]?config[_0x1274('0x8')][_0x1274('0xb')]:'id','clientSecret':config['google']?config['google'][_0x1274('0xc')]:'secret','callbackURL':config[_0x1274('0x8')]?config['google']['callbackURL']:''},function(_0x4b6690,_0x355341,_0x7bfa47,_0x32fc95){db[_0x1274('0xd')]['find']({'where':{'email':_[_0x1274('0xe')](_0x7bfa47[_0x1274('0xf')],_0x1274('0x10')),'role':{'$or':[_0x1274('0x11'),_0x1274('0x12'),_0x1274('0x13')]}}})[_0x1274('0x14')](function(_0x152a14){if(_0x152a14){return _0x32fc95(null,_0x152a14);}_0x32fc95(_0x1274('0x15'));})[_0x1274('0x16')](function(_0x43101a){_0x32fc95(_0x43101a);});}));
\ No newline at end of file
+var _0x6af5=['google','/login','profile','email','callback','use','clientID','clientSecret','callbackURL','User','map','emails','value','admin','user','agent','then','User\x20email\x20not\x20found!','catch','passport','passport-google-oauth20','../../config/environment','../../components/auth/service','signToken','login','authenticate'];(function(_0x1d61b5,_0x27993b){var _0xe435c2=function(_0x2ab19b){while(--_0x2ab19b){_0x1d61b5['push'](_0x1d61b5['shift']());}};_0xe435c2(++_0x27993b);}(_0x6af5,0x7b));var _0x56af=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x6af5[_0x413feb];return _0x40ee88;};'use strict';var _=require('lodash');var passport=require(_0x56af('0x0'));var GoogleStrategy=require(_0x56af('0x1'))['Strategy'];var db=require('../../mysqldb')['db'];var config=require(_0x56af('0x2'));var signToken=require(_0x56af('0x3'))[_0x56af('0x4')];exports[_0x56af('0x5')]=passport[_0x56af('0x6')](_0x56af('0x7'),{'failureRedirect':_0x56af('0x8'),'scope':[_0x56af('0x9'),_0x56af('0xa')],'session':![]});exports[_0x56af('0xb')]=passport[_0x56af('0x6')](_0x56af('0x7'),{'failureRedirect':'/login','session':![]});passport[_0x56af('0xc')](new GoogleStrategy({'clientID':config[_0x56af('0x7')]?config[_0x56af('0x7')][_0x56af('0xd')]:'id','clientSecret':config[_0x56af('0x7')]?config['google'][_0x56af('0xe')]:'secret','callbackURL':config[_0x56af('0x7')]?config[_0x56af('0x7')][_0x56af('0xf')]:''},function(_0xbd31d5,_0x2ed73b,_0x2efb0d,_0xf0671f){db[_0x56af('0x10')]['find']({'where':{'email':_[_0x56af('0x11')](_0x2efb0d[_0x56af('0x12')],_0x56af('0x13')),'role':{'$or':[_0x56af('0x14'),_0x56af('0x15'),_0x56af('0x16')]}}})[_0x56af('0x17')](function(_0x54927c){if(_0x54927c){return _0xf0671f(null,_0x54927c);}_0xf0671f(_0x56af('0x18'));})[_0x56af('0x19')](function(_0x12473a){_0xf0671f(_0x12473a);});}));
\ No newline at end of file
index cbba081..a833a46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf6=['exports','passport','get','callback'];(function(_0xeab0cf,_0x24d9ce){var _0x376b69=function(_0x1e6290){while(--_0x1e6290){_0xeab0cf['push'](_0xeab0cf['shift']());}};_0x376b69(++_0x24d9ce);}(_0xecf6,0x131));var _0x6ecf=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xecf6[_0x7e2eb0];return _0xd92de4;};'use strict';var express=require('express');var passport=require(_0x6ecf('0x0'));var router=express['Router']();var controller=require('./authGoogle.controller');var setTokenCookie=require('../../components/auth/service')['setTokenCookie'];router[_0x6ecf('0x1')]('/',controller['login']);router[_0x6ecf('0x1')]('/callback',controller[_0x6ecf('0x2')],setTokenCookie);module[_0x6ecf('0x3')]=router;
\ No newline at end of file
+var _0x90ae=['get','/callback','callback','exports','express','Router','./authGoogle.controller'];(function(_0x1b7368,_0x3286ed){var _0x25d54c=function(_0x2366da){while(--_0x2366da){_0x1b7368['push'](_0x1b7368['shift']());}};_0x25d54c(++_0x3286ed);}(_0x90ae,0xf2));var _0xe90a=function(_0x56aa9c,_0x49b688){_0x56aa9c=_0x56aa9c-0x0;var _0xed2db1=_0x90ae[_0x56aa9c];return _0xed2db1;};'use strict';var express=require(_0xe90a('0x0'));var passport=require('passport');var router=express[_0xe90a('0x1')]();var controller=require(_0xe90a('0x2'));var setTokenCookie=require('../../components/auth/service')['setTokenCookie'];router[_0xe90a('0x3')]('/',controller['login']);router['get'](_0xe90a('0x4'),controller[_0xe90a('0x5')],setTokenCookie);module[_0xe90a('0x6')]=router;
\ No newline at end of file
index 5f22bc6..ed57a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x251b=['name','This\x20name\x20is\x20not\x20registered','authenticate','This\x20password\x20is\x20not\x20correct','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','merge','format','\x22%s\x22\x20<%s>','request','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','email','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','http://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','password','Password\x20reset!','use','util','passport-local','Strategy','bluebird','jayson/promise','lodash','../../config/logger','api','randomstring','../../mysqldb','../../components/auth/service','signToken','client','http','role','agent','User','count','../../config/license/util','getLicense','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','find','admin','user'];(function(_0x11ab31,_0x1d26b8){var _0x168d2f=function(_0x3cafbd){while(--_0x3cafbd){_0x11ab31['push'](_0x11ab31['shift']());}};_0x168d2f(++_0x1d26b8);}(_0x251b,0xcc));var _0xb251=function(_0x2cd1fb,_0x291f55){_0x2cd1fb=_0x2cd1fb-0x0;var _0x48fd2b=_0x251b[_0x2cd1fb];return _0x48fd2b;};'use strict';var util=require(_0xb251('0x0'));var passport=require('passport');var LocalStrategy=require(_0xb251('0x1'))[_0xb251('0x2')];var BPromise=require(_0xb251('0x3'));var jayson=require(_0xb251('0x4'));var _=require(_0xb251('0x5'));var logger=require(_0xb251('0x6'))(_0xb251('0x7'));var rs=require(_0xb251('0x8'));var db=require(_0xb251('0x9'))['db'];var signToken=require(_0xb251('0xa'))[_0xb251('0xb')];var client=jayson[_0xb251('0xc')][_0xb251('0xd')]({'port':0x232b});var getLicense=function(_0x17d24b){return new BPromise(function(_0x1c2caf,_0x335d60){var _0x2870bb=0x0;_0x17d24b[_0xb251('0xe')]!==_0xb251('0xf')&&_0x1c2caf(_0x17d24b);return db[_0xb251('0x10')][_0xb251('0x11')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x17d24b['id']}}})['then'](function(_0x46d181){_0x2870bb=_0x46d181;return require(_0xb251('0x12'))[_0xb251('0x13')]();})[_0xb251('0x14')](function(_0x3b5029){if(_0x3b5029&&_0x3b5029[_0xb251('0x15')]&&_0x2870bb>=_0x3b5029[_0xb251('0x15')]){return _0x335d60({'message':_0xb251('0x16')});}return _0x1c2caf(_0x17d24b);})[_0xb251('0x17')](function(_0x1f3698){return _0x335d60(_0x1f3698);});});};function localAuthenticate(_0x4278c4,_0x5227be,_0x1370ec,_0x4a949c){_0x4278c4[_0xb251('0x18')]({'where':{'name':_0x5227be,'role':{'$or':[_0xb251('0x19'),_0xb251('0x1a'),_0xb251('0xf')]}}})['then'](function(_0x3ac71b){if(!_0x3ac71b||_0x3ac71b&&_0x3ac71b[_0xb251('0x1b')]!==_0x5227be){return _0x4a949c(null,![],{'message':_0xb251('0x1c')});}return getLicense(_0x3ac71b);})[_0xb251('0x14')](function(_0x716577){_0x716577[_0xb251('0x1d')](_0x1370ec,function(_0x3e39d3,_0x1c23df){if(_0x3e39d3){return _0x4a949c(_0x3e39d3);}if(!_0x1c23df){return _0x4a949c(null,![],{'message':_0xb251('0x1e')});}else{return _0x4a949c(null,_0x716577);}});})[_0xb251('0x17')](function(_0x171b8e){_0x4a949c(_0x171b8e);});}function sendServiceMail(_0x10f95e){return db['MailAccount']['find']({'where':{'service':!![]},'attributes':['id',_0xb251('0x1b'),'email'],'include':[{'model':db[_0xb251('0x1f')],'as':_0xb251('0x20')}]})[_0xb251('0x14')](function(_0xfa235c){if(!_0xfa235c){throw new Error(_0xb251('0x21'));}var _0x5e1527={'tls':{'rejectUnauthorized':![]}};if(_0xfa235c['Smtp'][_0xb251('0x22')]){_0x5e1527['service']=_0xfa235c['Smtp']['service'];}else{_0x5e1527[_0xb251('0x23')]=_0xfa235c[_0xb251('0x20')][_0xb251('0x23')];_0x5e1527[_0xb251('0x24')]=_0xfa235c[_0xb251('0x20')][_0xb251('0x24')];_0x5e1527[_0xb251('0x25')]=_0xfa235c[_0xb251('0x20')][_0xb251('0x25')];}if(_0xfa235c[_0xb251('0x20')][_0xb251('0x26')]){_0x5e1527[_0xb251('0x27')]={'user':_0xfa235c[_0xb251('0x20')][_0xb251('0x1a')],'pass':_0xfa235c['Smtp']['pass']};}var _0x3a464e={'account':_0x5e1527,'message':_[_0xb251('0x28')]({'from':util[_0xb251('0x29')](_0xb251('0x2a'),_0xfa235c[_0xb251('0x1b')],_0xfa235c['email']||_0xfa235c[_0xb251('0x20')][_0xb251('0x1a')])},_0x10f95e)};return client[_0xb251('0x2b')]('SendMail',_0x3a464e);})[_0xb251('0x14')](function(_0x118c6e){if(_0x118c6e['error']){throw new Error(util['format'](_0xb251('0x2c'),_0x118c6e[_0xb251('0x2d')]['message']||JSON['stringify'](_0x118c6e['error'])));}return!![];});}function handleError(_0x40cdea,_0x40363c,_0xff8313){return _0x40cdea[_0xb251('0x2e')](_0x40363c||0x1f4)[_0xb251('0x2f')]({'message':_0xff8313?_0xff8313['message']||_0xff8313:''});}exports[_0xb251('0x30')]=function(_0x563c64,_0x857cd,_0x40aaf9){passport['authenticate'](_0xb251('0x31'),function(_0x48ea32,_0x5b5ab5,_0x1cb6da){var _0x3ce1e2=_0x48ea32||_0x1cb6da;if(_0x3ce1e2){return handleError(_0x857cd,0x191,_0x3ce1e2);}if(!_0x5b5ab5){return handleError(_0x857cd,0x194,{'message':_0xb251('0x32')});}var _0x138a21=signToken(_0x5b5ab5['id'],_0x5b5ab5[_0xb251('0xe')]);_0x857cd[_0xb251('0x33')]({'id':_0x5b5ab5['id'],'token':_0x138a21,'statusCall':'','isAlreadyLogged':_0x5b5ab5[_0xb251('0x34')]});})(_0x563c64,_0x857cd,_0x40aaf9);};exports[_0xb251('0x35')]=function(_0x4c79d8,_0x2f8931,_0x430f13){if(!_0x4c79d8[_0xb251('0x36')]['email']){return handleError(_0x2f8931,0x1f4,{'message':_0xb251('0x37')});}var _0x17e232=rs[_0xb251('0x38')]();_0x4c79d8[_0xb251('0x36')]['email']=_0x4c79d8[_0xb251('0x36')]['email'][_0xb251('0x39')]()[_0xb251('0x3a')]();return db[_0xb251('0x10')][_0xb251('0x18')]({'where':{'email':_0x4c79d8['body'][_0xb251('0x3b')]}})[_0xb251('0x14')](function(_0x392f31){if(!_0x392f31){throw new Error('This\x20email\x20is\x20not\x20registered.');}_0x392f31[_0xb251('0x3c')]=_0x17e232;_0x392f31[_0xb251('0x3d')]=Date[_0xb251('0x3e')]()+0x36ee80;return _0x392f31[_0xb251('0x3f')]();})['then'](function(){return sendServiceMail({'to':_0x4c79d8['body'][_0xb251('0x3b')],'subject':_0xb251('0x40'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xb251('0x41')+_0x4c79d8[_0xb251('0x42')][_0xb251('0x23')]+_0xb251('0x43')+_0x17e232+'\x0a\x0a'+_0xb251('0x44')});})[_0xb251('0x14')](function(){_0x2f8931[_0xb251('0x2e')](0xc8)[_0xb251('0x2f')]({'message':_0xb251('0x45')});})['catch'](function(_0x31db75){return handleError(_0x2f8931,0x1f4,_0x31db75);});};exports[_0xb251('0x46')]=function(_0x19eb04,_0x1eddb5,_0x27a0ac){return db[_0xb251('0x10')]['find']({'where':{'resetPasswordToken':_0x19eb04[_0xb251('0x47')][_0xb251('0x48')],'resetPasswordExpires':{'$gt':Date[_0xb251('0x3e')]()}}})[_0xb251('0x14')](function(_0x5864f7){if(!_0x5864f7){throw new Error(_0xb251('0x49'));}_0x5864f7[_0xb251('0x4a')]=_0x19eb04['body'][_0xb251('0x4a')];_0x5864f7[_0xb251('0x3c')]=null;_0x5864f7[_0xb251('0x3d')]=null;return _0x5864f7[_0xb251('0x3f')]();})[_0xb251('0x14')](function(){_0x1eddb5[_0xb251('0x2e')](0xc8)[_0xb251('0x2f')]({'message':_0xb251('0x4b')});})[_0xb251('0x17')](function(_0x5dbe51){return handleError(_0x1eddb5,0x1f4,_0x5dbe51);});};passport[_0xb251('0x4c')](new LocalStrategy({'usernameField':_0xb251('0x1b'),'passwordField':'password'},function(_0xf838f2,_0x407a0d,_0xe692ea){return localAuthenticate(db[_0xb251('0x10')],_0xf838f2,_0x407a0d,_0xe692ea);}));
\ No newline at end of file
+var _0x8683=['generate','trim','This\x20email\x20is\x20not\x20registered.','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','reset','params','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','password','resetPasswordToken','resetPasswordExpires','Password\x20reset!','use','passport','passport-local','Strategy','jayson/promise','lodash','api','randomstring','../../mysqldb','signToken','client','http','agent','User','count','then','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','catch','find','admin','user','name','authenticate','MailAccount','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','merge','format','\x22%s\x22\x20<%s>','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','json','online','forgot','body'];(function(_0x180bd3,_0x240488){var _0x2c7250=function(_0x949746){while(--_0x949746){_0x180bd3['push'](_0x180bd3['shift']());}};_0x2c7250(++_0x240488);}(_0x8683,0xec));var _0x3868=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x8683[_0x2b4411];return _0x8e41ef;};'use strict';var util=require('util');var passport=require(_0x3868('0x0'));var LocalStrategy=require(_0x3868('0x1'))[_0x3868('0x2')];var BPromise=require('bluebird');var jayson=require(_0x3868('0x3'));var _=require(_0x3868('0x4'));var logger=require('../../config/logger')(_0x3868('0x5'));var rs=require(_0x3868('0x6'));var db=require(_0x3868('0x7'))['db'];var signToken=require('../../components/auth/service')[_0x3868('0x8')];var client=jayson[_0x3868('0x9')][_0x3868('0xa')]({'port':0x232b});var getLicense=function(_0x4f87ad){return new BPromise(function(_0x4f73f2,_0x5d4607){var _0x451d23=0x0;_0x4f87ad['role']!==_0x3868('0xb')&&_0x4f73f2(_0x4f87ad);return db[_0x3868('0xc')][_0x3868('0xd')]({'where':{'role':_0x3868('0xb'),'online':!![],'id':{'$ne':_0x4f87ad['id']}}})[_0x3868('0xe')](function(_0x6fdd52){_0x451d23=_0x6fdd52;return require('../../config/license/util')[_0x3868('0xf')]();})[_0x3868('0xe')](function(_0x27ffa5){if(_0x27ffa5&&_0x27ffa5['agents']&&_0x451d23>=_0x27ffa5[_0x3868('0x10')]){return _0x5d4607({'message':_0x3868('0x11')});}return _0x4f73f2(_0x4f87ad);})[_0x3868('0x12')](function(_0x5b9ec0){return _0x5d4607(_0x5b9ec0);});});};function localAuthenticate(_0x17929f,_0x470610,_0x4765f5,_0x13c26f){_0x17929f[_0x3868('0x13')]({'where':{'name':_0x470610,'role':{'$or':[_0x3868('0x14'),_0x3868('0x15'),'agent']}}})[_0x3868('0xe')](function(_0x3593d1){if(!_0x3593d1||_0x3593d1&&_0x3593d1[_0x3868('0x16')]!==_0x470610){return _0x13c26f(null,![],{'message':'This\x20name\x20is\x20not\x20registered'});}return getLicense(_0x3593d1);})['then'](function(_0x3d2ef2){_0x3d2ef2[_0x3868('0x17')](_0x4765f5,function(_0xf1e117,_0x44f2df){if(_0xf1e117){return _0x13c26f(_0xf1e117);}if(!_0x44f2df){return _0x13c26f(null,![],{'message':'This\x20password\x20is\x20not\x20correct'});}else{return _0x13c26f(null,_0x3d2ef2);}});})[_0x3868('0x12')](function(_0xdc5cde){_0x13c26f(_0xdc5cde);});}function sendServiceMail(_0x4a24f3){return db[_0x3868('0x18')][_0x3868('0x13')]({'where':{'service':!![]},'attributes':['id',_0x3868('0x16'),_0x3868('0x19')],'include':[{'model':db['MailServerOut'],'as':_0x3868('0x1a')}]})[_0x3868('0xe')](function(_0x56def3){if(!_0x56def3){throw new Error(_0x3868('0x1b'));}var _0x115f1d={'tls':{'rejectUnauthorized':![]}};if(_0x56def3[_0x3868('0x1a')][_0x3868('0x1c')]){_0x115f1d[_0x3868('0x1c')]=_0x56def3[_0x3868('0x1a')]['service'];}else{_0x115f1d[_0x3868('0x1d')]=_0x56def3[_0x3868('0x1a')][_0x3868('0x1d')];_0x115f1d[_0x3868('0x1e')]=_0x56def3[_0x3868('0x1a')][_0x3868('0x1e')];_0x115f1d[_0x3868('0x1f')]=_0x56def3[_0x3868('0x1a')]['secure'];}if(_0x56def3['Smtp'][_0x3868('0x20')]){_0x115f1d[_0x3868('0x21')]={'user':_0x56def3[_0x3868('0x1a')]['user'],'pass':_0x56def3['Smtp']['pass']};}var _0xf2ae46={'account':_0x115f1d,'message':_[_0x3868('0x22')]({'from':util[_0x3868('0x23')](_0x3868('0x24'),_0x56def3[_0x3868('0x16')],_0x56def3['email']||_0x56def3[_0x3868('0x1a')]['user'])},_0x4a24f3)};return client['request'](_0x3868('0x25'),_0xf2ae46);})[_0x3868('0xe')](function(_0x21fbd9){if(_0x21fbd9[_0x3868('0x26')]){throw new Error(util[_0x3868('0x23')](_0x3868('0x27'),_0x21fbd9['error'][_0x3868('0x28')]||JSON[_0x3868('0x29')](_0x21fbd9[_0x3868('0x26')])));}return!![];});}function handleError(_0x510bd0,_0x17bb4e,_0x28fe8f){return _0x510bd0[_0x3868('0x2a')](_0x17bb4e||0x1f4)[_0x3868('0x2b')]({'message':_0x28fe8f?_0x28fe8f[_0x3868('0x28')]||_0x28fe8f:''});}exports[_0x3868('0x2c')]=function(_0x19bfa3,_0x2b53f9,_0x5cd57f){passport[_0x3868('0x17')](_0x3868('0x2d'),function(_0x18fa95,_0x18223e,_0x335c14){var _0x3aee64=_0x18fa95||_0x335c14;if(_0x3aee64){return handleError(_0x2b53f9,0x191,_0x3aee64);}if(!_0x18223e){return handleError(_0x2b53f9,0x194,{'message':_0x3868('0x2e')});}var _0x513673=signToken(_0x18223e['id'],_0x18223e[_0x3868('0x2f')]);_0x2b53f9[_0x3868('0x30')]({'id':_0x18223e['id'],'token':_0x513673,'statusCall':'','isAlreadyLogged':_0x18223e[_0x3868('0x31')]});})(_0x19bfa3,_0x2b53f9,_0x5cd57f);};exports[_0x3868('0x32')]=function(_0x42b153,_0x1c4657,_0x5ce9ef){if(!_0x42b153[_0x3868('0x33')][_0x3868('0x19')]){return handleError(_0x1c4657,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x58f5a5=rs[_0x3868('0x34')]();_0x42b153[_0x3868('0x33')][_0x3868('0x19')]=_0x42b153[_0x3868('0x33')][_0x3868('0x19')][_0x3868('0x35')]()['toLowerCase']();return db[_0x3868('0xc')][_0x3868('0x13')]({'where':{'email':_0x42b153[_0x3868('0x33')]['email']}})['then'](function(_0x3e0718){if(!_0x3e0718){throw new Error(_0x3868('0x36'));}_0x3e0718['resetPasswordToken']=_0x58f5a5;_0x3e0718['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x3e0718[_0x3868('0x37')]();})[_0x3868('0xe')](function(){return sendServiceMail({'to':_0x42b153[_0x3868('0x33')][_0x3868('0x19')],'subject':_0x3868('0x38'),'text':_0x3868('0x39')+_0x3868('0x3a')+'http://'+_0x42b153[_0x3868('0x3b')][_0x3868('0x1d')]+_0x3868('0x3c')+_0x58f5a5+'\x0a\x0a'+_0x3868('0x3d')});})[_0x3868('0xe')](function(){_0x1c4657['status'](0xc8)['send']({'message':'Reset\x20Email\x20sent!'});})[_0x3868('0x12')](function(_0x537f66){return handleError(_0x1c4657,0x1f4,_0x537f66);});};exports[_0x3868('0x3e')]=function(_0x22d7c4,_0x3438ac,_0x2e0500){return db['User']['find']({'where':{'resetPasswordToken':_0x22d7c4[_0x3868('0x3f')][_0x3868('0x40')],'resetPasswordExpires':{'$gt':Date[_0x3868('0x41')]()}}})[_0x3868('0xe')](function(_0x50fd6d){if(!_0x50fd6d){throw new Error(_0x3868('0x42'));}_0x50fd6d['password']=_0x22d7c4['body'][_0x3868('0x43')];_0x50fd6d[_0x3868('0x44')]=null;_0x50fd6d[_0x3868('0x45')]=null;return _0x50fd6d[_0x3868('0x37')]();})[_0x3868('0xe')](function(){_0x3438ac['status'](0xc8)[_0x3868('0x2b')]({'message':_0x3868('0x46')});})[_0x3868('0x12')](function(_0x135868){return handleError(_0x3438ac,0x1f4,_0x135868);});};passport[_0x3868('0x47')](new LocalStrategy({'usernameField':_0x3868('0x16'),'passwordField':_0x3868('0x43')},function(_0x14a1f8,_0x4a2c80,_0x4bd01c){return localAuthenticate(db[_0x3868('0xc')],_0x14a1f8,_0x4a2c80,_0x4bd01c);}));
\ No newline at end of file
index cab4ac6..ee25053 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1baa=['forgot','/reset/:token','exports','Router','post','login','/forgot'];(function(_0x521dca,_0x4059ee){var _0x445def=function(_0x1ae3fc){while(--_0x1ae3fc){_0x521dca['push'](_0x521dca['shift']());}};_0x445def(++_0x4059ee);}(_0x1baa,0x13e));var _0xa1ba=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x1baa[_0x2f5ac5];return _0x37c9a8;};'use strict';var express=require('express');var router=express[_0xa1ba('0x0')]();var controller=require('./authLocal.controller');router[_0xa1ba('0x1')]('/',controller[_0xa1ba('0x2')]);router['post'](_0xa1ba('0x3'),controller[_0xa1ba('0x4')]);router[_0xa1ba('0x1')](_0xa1ba('0x5'),controller['reset']);module[_0xa1ba('0x6')]=router;
\ No newline at end of file
+var _0x2d06=['login','/forgot','forgot','/reset/:token','exports','express','Router','./authLocal.controller','post'];(function(_0x4c1278,_0x56493a){var _0x2fa483=function(_0xd52dbc){while(--_0xd52dbc){_0x4c1278['push'](_0x4c1278['shift']());}};_0x2fa483(++_0x56493a);}(_0x2d06,0x68));var _0x62d0=function(_0x27f36c,_0x48de51){_0x27f36c=_0x27f36c-0x0;var _0x3cdebe=_0x2d06[_0x27f36c];return _0x3cdebe;};'use strict';var express=require(_0x62d0('0x0'));var router=express[_0x62d0('0x1')]();var controller=require(_0x62d0('0x2'));router[_0x62d0('0x3')]('/',controller[_0x62d0('0x4')]);router['post'](_0x62d0('0x5'),controller[_0x62d0('0x6')]);router[_0x62d0('0x3')](_0x62d0('0x7'),controller['reset']);module[_0x62d0('0x8')]=router;
\ No newline at end of file
index 89b0b48..806f1a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc638=['exports','STRING','BOOLEAN','INTEGER','sequelize'];(function(_0x1bc0ae,_0x439dfe){var _0x501104=function(_0x2ade0d){while(--_0x2ade0d){_0x1bc0ae['push'](_0x1bc0ae['shift']());}};_0x501104(++_0x439dfe);}(_0xc638,0x112));var _0x8c63=function(_0x4bd58a,_0x668bb2){_0x4bd58a=_0x4bd58a-0x0;var _0x33c360=_0xc638[_0x4bd58a];return _0x33c360;};'use strict';var Sequelize=require(_0x8c63('0x0'));module[_0x8c63('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0x8c63('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x8c63('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x8c63('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xad6b=['BOOLEAN','sequelize','exports','STRING'];(function(_0x44741c,_0x5b24e0){var _0x353e12=function(_0x379218){while(--_0x379218){_0x44741c['push'](_0x44741c['shift']());}};_0x353e12(++_0x5b24e0);}(_0xad6b,0x159));var _0xbad6=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0xad6b[_0x819464];return _0x49dcc0;};'use strict';var Sequelize=require(_0xbad6('0x0'));module[_0xbad6('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0xbad6('0x2')]},'description':{'type':Sequelize[_0xbad6('0x2')]},'status':{'type':Sequelize[_0xbad6('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
index bd715e8..9ccd728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33c5=['Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','Automation','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','pick','add','day','filter','merge','map','type','VIRTUAL','field','count','include','findAll','rows','catch','options','find','body','params','addConditions','Condition','ids','omit','order','sort','getConditions','addActions','Action','getActions','findOne','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','set'];(function(_0x3fb391,_0x539bd5){var _0x3dd627=function(_0x3970a3){while(--_0x3970a3){_0x3fb391['push'](_0x3fb391['shift']());}};_0x3dd627(++_0x539bd5);}(_0x33c5,0xe6));var _0x533c=function(_0x368e09,_0x2c1517){_0x368e09=_0x368e09-0x0;var _0x14b7df=_0x33c5[_0x368e09];return _0x14b7df;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x533c('0x0'));var rimraf=require(_0x533c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x533c('0x2'));var rp=require(_0x533c('0x3'));var moment=require(_0x533c('0x4'));var BPromise=require(_0x533c('0x5'));var Mustache=require(_0x533c('0x6'));var util=require('util');var path=require(_0x533c('0x7'));var sox=require(_0x533c('0x8'));var csv=require(_0x533c('0x9'));var ejs=require(_0x533c('0xa'));var fs=require('fs');var _=require(_0x533c('0xb'));var squel=require(_0x533c('0xc'));var crypto=require(_0x533c('0xd'));var jsforce=require(_0x533c('0xe'));var deskjs=require(_0x533c('0xf'));var toCsv=require(_0x533c('0x9'));var querystring=require(_0x533c('0x10'));var Papa=require(_0x533c('0x11'));var Redis=require(_0x533c('0x12'));var qs=require(_0x533c('0x13'));var logger=require(_0x533c('0x14'))(_0x533c('0x15'));var utils=require('../../config/utils');var config=require(_0x533c('0x16'));var db=require(_0x533c('0x17'))['db'];function respondWithStatusCode(_0x272a11,_0x1e2b68){_0x1e2b68=_0x1e2b68||0xcc;return function(_0x1a2c22){if(_0x1a2c22){return _0x272a11[_0x533c('0x18')](_0x1e2b68);}return _0x272a11['status'](_0x1e2b68)[_0x533c('0x19')]();};}function respondWithResult(_0xf93007,_0x300a63){_0x300a63=_0x300a63||0xc8;return function(_0x12ecae){if(_0x12ecae){return _0xf93007[_0x533c('0x1a')](_0x300a63)[_0x533c('0x1b')](_0x12ecae);}};}function respondWithFilteredResult(_0x8d7c66,_0xa616ca){return function(_0x59298d){if(_0x59298d){var _0x335f73=_0x59298d['count'],_0x7c1d33=_0xa616ca[_0x533c('0x1c')],_0x3f4a5c=_0xa616ca[_0x533c('0x1c')]+_0xa616ca[_0x533c('0x1d')],_0x3e544f;if(_0x3f4a5c>=_0x335f73){_0x3f4a5c=_0x335f73;_0x3e544f=0xc8;}else{_0x3e544f=0xce;}_0x8d7c66[_0x533c('0x1a')](_0x3e544f);return _0x8d7c66[_0x533c('0x1e')](_0x533c('0x1f'),_0x7c1d33+'-'+_0x3f4a5c+'/'+_0x335f73)[_0x533c('0x1b')](_0x59298d);}return null;};}function patchUpdates(_0x35bfd3){return function(_0x1f9f85){try{jsonpatch[_0x533c('0x20')](_0x1f9f85,_0x35bfd3,!![]);}catch(_0x287b9e){return BPromise[_0x533c('0x21')](_0x287b9e);}return _0x1f9f85[_0x533c('0x22')]();};}function saveUpdates(_0x23f970,_0x2f21db){return function(_0x3de9fa){if(_0x3de9fa){return _0x3de9fa[_0x533c('0x23')](_0x23f970)[_0x533c('0x24')](function(_0x4ba0bd){return _0x4ba0bd;});}return null;};}function removeEntity(_0xce8d9,_0x51785c){return function(_0x57f5aa){if(_0x57f5aa){return _0x57f5aa[_0x533c('0x25')]()[_0x533c('0x24')](function(){_0xce8d9['status'](0xcc)[_0x533c('0x19')]();});}};}function handleEntityNotFound(_0x37651e,_0x3839fe){return function(_0x3dd249){if(!_0x3dd249){_0x37651e['sendStatus'](0x194);}return _0x3dd249;};}function handleError(_0x3762f7,_0x42c87b){_0x42c87b=_0x42c87b||0x1f4;return function(_0x3ff86f){logger[_0x533c('0x26')](_0x3ff86f[_0x533c('0x27')]);if(_0x3ff86f[_0x533c('0x28')]){delete _0x3ff86f[_0x533c('0x28')];}_0x3762f7[_0x533c('0x1a')](_0x42c87b)[_0x533c('0x29')](_0x3ff86f);};}exports[_0x533c('0x2a')]=function(_0x4d47d0,_0x11d775){var _0xfab4da={},_0x503c2e={},_0x3caaa5={'count':0x0,'rows':[]};var _0x4f9f4a=db[_0x533c('0x2b')][_0x533c('0x2c')];_0x503c2e[_0x533c('0x2d')]=_[_0x533c('0x2e')](_0x4f9f4a);var _0x425f60={'dateStart':_0x4d47d0[_0x533c('0x2f')][_0x533c('0x30')],'dateEnd':_0x4d47d0[_0x533c('0x2f')][_0x533c('0x31')]};delete _0x4d47d0[_0x533c('0x2f')][_0x533c('0x30')];delete _0x4d47d0[_0x533c('0x2f')]['dateEnd'];_0x503c2e[_0x533c('0x2f')]=_['keys'](_0x4d47d0[_0x533c('0x2f')]);_0x503c2e[_0x533c('0x32')]=_[_0x533c('0x33')](_0x503c2e[_0x533c('0x2d')],_0x503c2e[_0x533c('0x2f')]);_0xfab4da[_0x533c('0x34')]=_[_0x533c('0x33')](_0x503c2e[_0x533c('0x2d')],qs[_0x533c('0x35')](_0x4d47d0[_0x533c('0x2f')][_0x533c('0x35')]));_0xfab4da[_0x533c('0x34')]=_0xfab4da[_0x533c('0x34')][_0x533c('0x36')]?_0xfab4da[_0x533c('0x34')]:_0x503c2e['model'];if(!_0x4d47d0[_0x533c('0x2f')][_0x533c('0x37')](_0x533c('0x38'))){_0xfab4da[_0x533c('0x1d')]=qs['limit'](_0x4d47d0[_0x533c('0x2f')][_0x533c('0x1d')]);_0xfab4da[_0x533c('0x1c')]=qs[_0x533c('0x1c')](_0x4d47d0[_0x533c('0x2f')]['offset']);}_0xfab4da['order']=qs['sort'](_0x4d47d0['query']['sort']);_0xfab4da[_0x533c('0x39')]=qs['filters'](_[_0x533c('0x3a')](_0x4d47d0['query'],_0x503c2e[_0x533c('0x32')]));if(_0x425f60[_0x533c('0x30')]){if(_0x425f60[_0x533c('0x31')]){_0x425f60['dateEnd']=moment(_0x425f60[_0x533c('0x31')])[_0x533c('0x3b')](0x1,_0x533c('0x3c'));}else{_0x425f60['dateEnd']=moment(_0x425f60[_0x533c('0x30')])[_0x533c('0x3b')](0x1,_0x533c('0x3c'));}_['merge'](_0xfab4da[_0x533c('0x39')],{'createdAt':{'$gte':_0x425f60[_0x533c('0x30')],'$lte':_0x425f60[_0x533c('0x31')]}});}if(_0x4d47d0[_0x533c('0x2f')][_0x533c('0x3d')]){_0xfab4da[_0x533c('0x39')]=_[_0x533c('0x3e')](_0xfab4da[_0x533c('0x39')],{'$or':_[_0x533c('0x3f')](_0x4f9f4a,function(_0x2c03fa){if(_0x2c03fa[_0x533c('0x40')]['key']!==_0x533c('0x41')){var _0x784493={};_0x784493[_0x2c03fa[_0x533c('0x42')]]={'$like':'%'+_0x4d47d0[_0x533c('0x2f')][_0x533c('0x3d')]+'%'};return _0x784493;}})});}_0xfab4da=_[_0x533c('0x3e')]({},_0xfab4da,_0x4d47d0['options']);var _0x88ea5d={'where':_0xfab4da[_0x533c('0x39')]};return db[_0x533c('0x2b')]['count'](_0x88ea5d)[_0x533c('0x24')](function(_0x4170e4){_0x3caaa5[_0x533c('0x43')]=_0x4170e4;if(_0x4d47d0[_0x533c('0x2f')]['includeAll']){_0xfab4da[_0x533c('0x44')]=[{'all':!![]}];}return db['Automation'][_0x533c('0x45')](_0xfab4da);})[_0x533c('0x24')](function(_0x55a372){_0x3caaa5[_0x533c('0x46')]=_0x55a372;return _0x3caaa5;})[_0x533c('0x24')](respondWithFilteredResult(_0x11d775,_0xfab4da))[_0x533c('0x47')](handleError(_0x11d775,null));};exports['show']=function(_0x4d96cf,_0x50dc68){var _0x5c4e1b={'raw':![],'where':{'id':_0x4d96cf['params']['id']}},_0x189615={};_0x189615[_0x533c('0x2d')]=_['keys'](db[_0x533c('0x2b')]['rawAttributes']);_0x189615[_0x533c('0x2f')]=_[_0x533c('0x2e')](_0x4d96cf['query']);_0x189615[_0x533c('0x32')]=_[_0x533c('0x33')](_0x189615[_0x533c('0x2d')],_0x189615[_0x533c('0x2f')]);_0x5c4e1b[_0x533c('0x34')]=_['intersection'](_0x189615[_0x533c('0x2d')],qs[_0x533c('0x35')](_0x4d96cf[_0x533c('0x2f')][_0x533c('0x35')]));_0x5c4e1b['attributes']=_0x5c4e1b[_0x533c('0x34')][_0x533c('0x36')]?_0x5c4e1b['attributes']:_0x189615['model'];if(_0x4d96cf[_0x533c('0x2f')]['includeAll']){_0x5c4e1b[_0x533c('0x44')]=[{'all':!![]}];}_0x5c4e1b=_[_0x533c('0x3e')]({},_0x5c4e1b,_0x4d96cf[_0x533c('0x48')]);return db[_0x533c('0x2b')][_0x533c('0x49')](_0x5c4e1b)[_0x533c('0x24')](handleEntityNotFound(_0x50dc68,null))[_0x533c('0x24')](respondWithResult(_0x50dc68,null))[_0x533c('0x47')](handleError(_0x50dc68,null));};exports['create']=function(_0x19ccc0,_0x6b16e1){return db[_0x533c('0x2b')]['create'](_0x19ccc0[_0x533c('0x4a')],{})[_0x533c('0x24')](respondWithResult(_0x6b16e1,0xc9))['catch'](handleError(_0x6b16e1,null));};exports[_0x533c('0x23')]=function(_0x56610e,_0x43b2ed){if(_0x56610e[_0x533c('0x4a')]['id']){delete _0x56610e[_0x533c('0x4a')]['id'];}return db[_0x533c('0x2b')][_0x533c('0x49')]({'where':{'id':_0x56610e[_0x533c('0x4b')]['id']}})[_0x533c('0x24')](handleEntityNotFound(_0x43b2ed,null))['then'](saveUpdates(_0x56610e[_0x533c('0x4a')],null))[_0x533c('0x24')](respondWithResult(_0x43b2ed,null))[_0x533c('0x47')](handleError(_0x43b2ed,null));};exports[_0x533c('0x25')]=function(_0x24ca50,_0x1558ef){return db[_0x533c('0x2b')]['find']({'where':{'id':_0x24ca50['params']['id']}})['then'](handleEntityNotFound(_0x1558ef,null))['then'](removeEntity(_0x1558ef,null))[_0x533c('0x47')](handleError(_0x1558ef,null));};exports[_0x533c('0x4c')]=function(_0x5c5dd0,_0xac086b,_0x1da579){return db[_0x533c('0x4d')]['find']({'where':{'id':_0x5c5dd0[_0x533c('0x4b')]['id']}})['then'](handleEntityNotFound(_0xac086b,null))['then'](function(_0x209b9f){if(_0x209b9f){return _0x209b9f[_0x533c('0x4c')](_0x5c5dd0[_0x533c('0x4a')][_0x533c('0x4e')],_[_0x533c('0x4f')](_0x5c5dd0[_0x533c('0x4a')],[_0x533c('0x4e'),'id'])||{});}})['then'](respondWithResult(_0xac086b,null))[_0x533c('0x47')](handleError(_0xac086b,null));};exports['getConditions']=function(_0x5b3fe6,_0x26645d,_0x274686){var _0x2c7600={};var _0x416769={};var _0x178ef7;var _0x4118fe;return db[_0x533c('0x2b')]['findOne']({'where':{'id':_0x5b3fe6[_0x533c('0x4b')]['id']}})[_0x533c('0x24')](handleEntityNotFound(_0x26645d,null))[_0x533c('0x24')](function(_0x94063c){if(_0x94063c){_0x178ef7=_0x94063c;_0x416769[_0x533c('0x2d')]=_[_0x533c('0x2e')](db['Condition'][_0x533c('0x2c')]);_0x416769['query']=_[_0x533c('0x2e')](_0x5b3fe6[_0x533c('0x2f')]);_0x416769[_0x533c('0x32')]=_[_0x533c('0x33')](_0x416769[_0x533c('0x2d')],_0x416769[_0x533c('0x2f')]);_0x2c7600['attributes']=_['intersection'](_0x416769[_0x533c('0x2d')],qs[_0x533c('0x35')](_0x5b3fe6[_0x533c('0x2f')][_0x533c('0x35')]));_0x2c7600['attributes']=_0x2c7600[_0x533c('0x34')][_0x533c('0x36')]?_0x2c7600[_0x533c('0x34')]:_0x416769[_0x533c('0x2d')];_0x2c7600[_0x533c('0x50')]=qs[_0x533c('0x51')](_0x5b3fe6[_0x533c('0x2f')][_0x533c('0x51')]);_0x2c7600[_0x533c('0x39')]=qs[_0x533c('0x32')](_[_0x533c('0x3a')](_0x5b3fe6[_0x533c('0x2f')],_0x416769[_0x533c('0x32')]));if(_0x5b3fe6[_0x533c('0x2f')][_0x533c('0x3d')]){_0x2c7600[_0x533c('0x39')]=_[_0x533c('0x3e')](_0x2c7600['where'],{'$or':_[_0x533c('0x3f')](_0x2c7600['attributes'],function(_0x4b0259){var _0x37337f={};_0x37337f[_0x4b0259]={'$like':'%'+_0x5b3fe6[_0x533c('0x2f')][_0x533c('0x3d')]+'%'};return _0x37337f;})});}_0x2c7600=_[_0x533c('0x3e')]({},_0x2c7600,_0x5b3fe6[_0x533c('0x48')]);return _0x178ef7[_0x533c('0x52')](_0x2c7600);}})[_0x533c('0x24')](function(_0x50df3a){if(_0x50df3a){_0x4118fe=_0x50df3a[_0x533c('0x36')];if(!_0x5b3fe6[_0x533c('0x2f')]['hasOwnProperty'](_0x533c('0x38'))){_0x2c7600[_0x533c('0x1d')]=qs[_0x533c('0x1d')](_0x5b3fe6[_0x533c('0x2f')]['limit']);_0x2c7600[_0x533c('0x1c')]=qs[_0x533c('0x1c')](_0x5b3fe6['query'][_0x533c('0x1c')]);}return _0x178ef7[_0x533c('0x52')](_0x2c7600);}})['then'](function(_0x115c70){if(_0x115c70){return _0x115c70?{'count':_0x4118fe,'rows':_0x115c70}:null;}})[_0x533c('0x24')](respondWithResult(_0x26645d,null))['catch'](handleError(_0x26645d,null));};exports[_0x533c('0x53')]=function(_0x5183e2,_0x563348,_0xf36c93){return db[_0x533c('0x54')][_0x533c('0x49')]({'where':{'id':_0x5183e2[_0x533c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x563348,null))[_0x533c('0x24')](function(_0x32fd4b){if(_0x32fd4b){return _0x32fd4b[_0x533c('0x53')](_0x5183e2[_0x533c('0x4a')][_0x533c('0x4e')],_['omit'](_0x5183e2[_0x533c('0x4a')],['ids','id'])||{});}})[_0x533c('0x24')](respondWithResult(_0x563348,null))['catch'](handleError(_0x563348,null));};exports[_0x533c('0x55')]=function(_0x582383,_0x4bd014,_0x511f74){var _0x3283bb={};var _0x3f3981={};var _0x191a3b;var _0x52c812;return db[_0x533c('0x2b')][_0x533c('0x56')]({'where':{'id':_0x582383[_0x533c('0x4b')]['id']}})[_0x533c('0x24')](handleEntityNotFound(_0x4bd014,null))[_0x533c('0x24')](function(_0x569ee4){if(_0x569ee4){_0x191a3b=_0x569ee4;_0x3f3981['model']=_[_0x533c('0x2e')](db[_0x533c('0x54')][_0x533c('0x2c')]);_0x3f3981[_0x533c('0x2f')]=_[_0x533c('0x2e')](_0x582383[_0x533c('0x2f')]);_0x3f3981[_0x533c('0x32')]=_[_0x533c('0x33')](_0x3f3981[_0x533c('0x2d')],_0x3f3981['query']);_0x3283bb[_0x533c('0x34')]=_[_0x533c('0x33')](_0x3f3981[_0x533c('0x2d')],qs[_0x533c('0x35')](_0x582383[_0x533c('0x2f')][_0x533c('0x35')]));_0x3283bb[_0x533c('0x34')]=_0x3283bb[_0x533c('0x34')][_0x533c('0x36')]?_0x3283bb[_0x533c('0x34')]:_0x3f3981[_0x533c('0x2d')];_0x3283bb[_0x533c('0x50')]=qs[_0x533c('0x51')](_0x582383[_0x533c('0x2f')][_0x533c('0x51')]);_0x3283bb[_0x533c('0x39')]=qs[_0x533c('0x32')](_['pick'](_0x582383[_0x533c('0x2f')],_0x3f3981[_0x533c('0x32')]));if(_0x582383['query']['filter']){_0x3283bb[_0x533c('0x39')]=_['merge'](_0x3283bb[_0x533c('0x39')],{'$or':_[_0x533c('0x3f')](_0x3283bb[_0x533c('0x34')],function(_0x2e4907){var _0x3f8098={};_0x3f8098[_0x2e4907]={'$like':'%'+_0x582383['query'][_0x533c('0x3d')]+'%'};return _0x3f8098;})});}_0x3283bb=_[_0x533c('0x3e')]({},_0x3283bb,_0x582383[_0x533c('0x48')]);return _0x191a3b[_0x533c('0x55')](_0x3283bb);}})[_0x533c('0x24')](function(_0x196d15){if(_0x196d15){_0x52c812=_0x196d15[_0x533c('0x36')];if(!_0x582383[_0x533c('0x2f')][_0x533c('0x37')](_0x533c('0x38'))){_0x3283bb[_0x533c('0x1d')]=qs[_0x533c('0x1d')](_0x582383[_0x533c('0x2f')][_0x533c('0x1d')]);_0x3283bb[_0x533c('0x1c')]=qs[_0x533c('0x1c')](_0x582383[_0x533c('0x2f')][_0x533c('0x1c')]);}return _0x191a3b['getActions'](_0x3283bb);}})[_0x533c('0x24')](function(_0x15d09a){if(_0x15d09a){return _0x15d09a?{'count':_0x52c812,'rows':_0x15d09a}:null;}})[_0x533c('0x24')](respondWithResult(_0x4bd014,null))[_0x533c('0x47')](handleError(_0x4bd014,null));};
\ No newline at end of file
+var _0x7dfd=['include','options','find','create','body','update','params','addConditions','Condition','omit','findOne','getConditions','addActions','Action','getActions','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','set','Content-Range','apply','reject','save','then','stack','name','send','index','Automation','rawAttributes','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','dateStart','dateEnd','day','add','merge','where','filter','map','type','VIRTUAL','field','count','includeAll','findAll','rows','catch','show'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0xd7df('0x0'));var emlformat=require(_0xd7df('0x1'));var rimraf=require(_0xd7df('0x2'));var zipdir=require(_0xd7df('0x3'));var jsonpatch=require(_0xd7df('0x4'));var rp=require(_0xd7df('0x5'));var moment=require(_0xd7df('0x6'));var BPromise=require(_0xd7df('0x7'));var Mustache=require(_0xd7df('0x8'));var util=require(_0xd7df('0x9'));var path=require(_0xd7df('0xa'));var sox=require(_0xd7df('0xb'));var csv=require(_0xd7df('0xc'));var ejs=require(_0xd7df('0xd'));var fs=require('fs');var _=require(_0xd7df('0xe'));var squel=require(_0xd7df('0xf'));var crypto=require(_0xd7df('0x10'));var jsforce=require('jsforce');var deskjs=require(_0xd7df('0x11'));var toCsv=require(_0xd7df('0xc'));var querystring=require(_0xd7df('0x12'));var Papa=require(_0xd7df('0x13'));var Redis=require('ioredis');var qs=require(_0xd7df('0x14'));var logger=require('../../config/logger')(_0xd7df('0x15'));var utils=require('../../config/utils');var config=require(_0xd7df('0x16'));var db=require(_0xd7df('0x17'))['db'];function respondWithStatusCode(_0x28d358,_0x18d8f8){_0x18d8f8=_0x18d8f8||0xcc;return function(_0x17497b){if(_0x17497b){return _0x28d358[_0xd7df('0x18')](_0x18d8f8);}return _0x28d358[_0xd7df('0x19')](_0x18d8f8)[_0xd7df('0x1a')]();};}function respondWithResult(_0x7ba3c,_0x4d6f17){_0x4d6f17=_0x4d6f17||0xc8;return function(_0xa70589){if(_0xa70589){return _0x7ba3c[_0xd7df('0x19')](_0x4d6f17)[_0xd7df('0x1b')](_0xa70589);}};}function respondWithFilteredResult(_0x196632,_0x3b2559){return function(_0x202833){if(_0x202833){var _0x31f557=_0x202833['count'],_0x57b8be=_0x3b2559[_0xd7df('0x1c')],_0x4c5cf=_0x3b2559[_0xd7df('0x1c')]+_0x3b2559['limit'],_0x23cdbc;if(_0x4c5cf>=_0x31f557){_0x4c5cf=_0x31f557;_0x23cdbc=0xc8;}else{_0x23cdbc=0xce;}_0x196632[_0xd7df('0x19')](_0x23cdbc);return _0x196632[_0xd7df('0x1d')](_0xd7df('0x1e'),_0x57b8be+'-'+_0x4c5cf+'/'+_0x31f557)['json'](_0x202833);}return null;};}function patchUpdates(_0x40167d){return function(_0x471621){try{jsonpatch[_0xd7df('0x1f')](_0x471621,_0x40167d,!![]);}catch(_0x5ba653){return BPromise[_0xd7df('0x20')](_0x5ba653);}return _0x471621[_0xd7df('0x21')]();};}function saveUpdates(_0x4e1985,_0x5acb0a){return function(_0x4188af){if(_0x4188af){return _0x4188af['update'](_0x4e1985)[_0xd7df('0x22')](function(_0x5ab737){return _0x5ab737;});}return null;};}function removeEntity(_0x3ae7c3,_0x342b54){return function(_0x4eabb8){if(_0x4eabb8){return _0x4eabb8['destroy']()[_0xd7df('0x22')](function(){_0x3ae7c3['status'](0xcc)[_0xd7df('0x1a')]();});}};}function handleEntityNotFound(_0x379e4a,_0x40e7af){return function(_0x29f354){if(!_0x29f354){_0x379e4a[_0xd7df('0x18')](0x194);}return _0x29f354;};}function handleError(_0xa80cbf,_0x1e3bf3){_0x1e3bf3=_0x1e3bf3||0x1f4;return function(_0x5e5c1a){logger['error'](_0x5e5c1a[_0xd7df('0x23')]);if(_0x5e5c1a[_0xd7df('0x24')]){delete _0x5e5c1a[_0xd7df('0x24')];}_0xa80cbf[_0xd7df('0x19')](_0x1e3bf3)[_0xd7df('0x25')](_0x5e5c1a);};}exports[_0xd7df('0x26')]=function(_0x373359,_0x2b6fde){var _0x163904={},_0x5c4d17={},_0xe53f53={'count':0x0,'rows':[]};var _0x132fd1=db[_0xd7df('0x27')][_0xd7df('0x28')];_0x5c4d17[_0xd7df('0x29')]=_[_0xd7df('0x2a')](_0x132fd1);var _0x3f78fa={'dateStart':_0x373359[_0xd7df('0x2b')]['dateStart'],'dateEnd':_0x373359['query']['dateEnd']};delete _0x373359['query']['dateStart'];delete _0x373359[_0xd7df('0x2b')]['dateEnd'];_0x5c4d17[_0xd7df('0x2b')]=_[_0xd7df('0x2a')](_0x373359['query']);_0x5c4d17[_0xd7df('0x2c')]=_[_0xd7df('0x2d')](_0x5c4d17['model'],_0x5c4d17[_0xd7df('0x2b')]);_0x163904[_0xd7df('0x2e')]=_[_0xd7df('0x2d')](_0x5c4d17[_0xd7df('0x29')],qs[_0xd7df('0x2f')](_0x373359[_0xd7df('0x2b')]['fields']));_0x163904[_0xd7df('0x2e')]=_0x163904[_0xd7df('0x2e')][_0xd7df('0x30')]?_0x163904[_0xd7df('0x2e')]:_0x5c4d17[_0xd7df('0x29')];if(!_0x373359[_0xd7df('0x2b')][_0xd7df('0x31')](_0xd7df('0x32'))){_0x163904[_0xd7df('0x33')]=qs[_0xd7df('0x33')](_0x373359[_0xd7df('0x2b')]['limit']);_0x163904['offset']=qs[_0xd7df('0x1c')](_0x373359['query'][_0xd7df('0x1c')]);}_0x163904[_0xd7df('0x34')]=qs[_0xd7df('0x35')](_0x373359[_0xd7df('0x2b')]['sort']);_0x163904['where']=qs['filters'](_[_0xd7df('0x36')](_0x373359[_0xd7df('0x2b')],_0x5c4d17['filters']));if(_0x3f78fa[_0xd7df('0x37')]){if(_0x3f78fa[_0xd7df('0x38')]){_0x3f78fa[_0xd7df('0x38')]=moment(_0x3f78fa[_0xd7df('0x38')])['add'](0x1,_0xd7df('0x39'));}else{_0x3f78fa[_0xd7df('0x38')]=moment(_0x3f78fa['dateStart'])[_0xd7df('0x3a')](0x1,'day');}_[_0xd7df('0x3b')](_0x163904[_0xd7df('0x3c')],{'createdAt':{'$gte':_0x3f78fa[_0xd7df('0x37')],'$lte':_0x3f78fa['dateEnd']}});}if(_0x373359[_0xd7df('0x2b')][_0xd7df('0x3d')]){_0x163904[_0xd7df('0x3c')]=_[_0xd7df('0x3b')](_0x163904['where'],{'$or':_[_0xd7df('0x3e')](_0x132fd1,function(_0x230857){if(_0x230857[_0xd7df('0x3f')]['key']!==_0xd7df('0x40')){var _0x207852={};_0x207852[_0x230857[_0xd7df('0x41')]]={'$like':'%'+_0x373359['query'][_0xd7df('0x3d')]+'%'};return _0x207852;}})});}_0x163904=_[_0xd7df('0x3b')]({},_0x163904,_0x373359['options']);var _0x4b2561={'where':_0x163904[_0xd7df('0x3c')]};return db[_0xd7df('0x27')][_0xd7df('0x42')](_0x4b2561)['then'](function(_0x5e8cd0){_0xe53f53[_0xd7df('0x42')]=_0x5e8cd0;if(_0x373359['query'][_0xd7df('0x43')]){_0x163904['include']=[{'all':!![]}];}return db['Automation'][_0xd7df('0x44')](_0x163904);})['then'](function(_0x18ef10){_0xe53f53[_0xd7df('0x45')]=_0x18ef10;return _0xe53f53;})[_0xd7df('0x22')](respondWithFilteredResult(_0x2b6fde,_0x163904))[_0xd7df('0x46')](handleError(_0x2b6fde,null));};exports[_0xd7df('0x47')]=function(_0x236b25,_0x1ab88){var _0x19c5d8={'raw':![],'where':{'id':_0x236b25['params']['id']}},_0x183ca7={};_0x183ca7[_0xd7df('0x29')]=_['keys'](db[_0xd7df('0x27')][_0xd7df('0x28')]);_0x183ca7[_0xd7df('0x2b')]=_[_0xd7df('0x2a')](_0x236b25[_0xd7df('0x2b')]);_0x183ca7[_0xd7df('0x2c')]=_[_0xd7df('0x2d')](_0x183ca7[_0xd7df('0x29')],_0x183ca7[_0xd7df('0x2b')]);_0x19c5d8['attributes']=_[_0xd7df('0x2d')](_0x183ca7[_0xd7df('0x29')],qs['fields'](_0x236b25['query'][_0xd7df('0x2f')]));_0x19c5d8[_0xd7df('0x2e')]=_0x19c5d8[_0xd7df('0x2e')]['length']?_0x19c5d8['attributes']:_0x183ca7[_0xd7df('0x29')];if(_0x236b25['query'][_0xd7df('0x43')]){_0x19c5d8[_0xd7df('0x48')]=[{'all':!![]}];}_0x19c5d8=_[_0xd7df('0x3b')]({},_0x19c5d8,_0x236b25[_0xd7df('0x49')]);return db[_0xd7df('0x27')][_0xd7df('0x4a')](_0x19c5d8)[_0xd7df('0x22')](handleEntityNotFound(_0x1ab88,null))[_0xd7df('0x22')](respondWithResult(_0x1ab88,null))[_0xd7df('0x46')](handleError(_0x1ab88,null));};exports[_0xd7df('0x4b')]=function(_0x1fd63a,_0x3a7c84){return db['Automation'][_0xd7df('0x4b')](_0x1fd63a[_0xd7df('0x4c')],{})[_0xd7df('0x22')](respondWithResult(_0x3a7c84,0xc9))[_0xd7df('0x46')](handleError(_0x3a7c84,null));};exports[_0xd7df('0x4d')]=function(_0x5c3281,_0x2f7b83){if(_0x5c3281[_0xd7df('0x4c')]['id']){delete _0x5c3281[_0xd7df('0x4c')]['id'];}return db['Automation'][_0xd7df('0x4a')]({'where':{'id':_0x5c3281['params']['id']}})[_0xd7df('0x22')](handleEntityNotFound(_0x2f7b83,null))[_0xd7df('0x22')](saveUpdates(_0x5c3281[_0xd7df('0x4c')],null))[_0xd7df('0x22')](respondWithResult(_0x2f7b83,null))[_0xd7df('0x46')](handleError(_0x2f7b83,null));};exports['destroy']=function(_0x4abe81,_0x53ec02){return db[_0xd7df('0x27')]['find']({'where':{'id':_0x4abe81[_0xd7df('0x4e')]['id']}})[_0xd7df('0x22')](handleEntityNotFound(_0x53ec02,null))[_0xd7df('0x22')](removeEntity(_0x53ec02,null))[_0xd7df('0x46')](handleError(_0x53ec02,null));};exports[_0xd7df('0x4f')]=function(_0x418da,_0xf72803,_0xb054d7){return db[_0xd7df('0x50')][_0xd7df('0x4a')]({'where':{'id':_0x418da[_0xd7df('0x4e')]['id']}})[_0xd7df('0x22')](handleEntityNotFound(_0xf72803,null))[_0xd7df('0x22')](function(_0x109707){if(_0x109707){return _0x109707[_0xd7df('0x4f')](_0x418da[_0xd7df('0x4c')]['ids'],_[_0xd7df('0x51')](_0x418da[_0xd7df('0x4c')],['ids','id'])||{});}})['then'](respondWithResult(_0xf72803,null))[_0xd7df('0x46')](handleError(_0xf72803,null));};exports['getConditions']=function(_0x34abbb,_0x4fb55a,_0x1f34c2){var _0x28151a={};var _0x228ed7={};var _0x58223d;var _0x488333;return db['Automation'][_0xd7df('0x52')]({'where':{'id':_0x34abbb[_0xd7df('0x4e')]['id']}})[_0xd7df('0x22')](handleEntityNotFound(_0x4fb55a,null))[_0xd7df('0x22')](function(_0x41249b){if(_0x41249b){_0x58223d=_0x41249b;_0x228ed7[_0xd7df('0x29')]=_['keys'](db[_0xd7df('0x50')][_0xd7df('0x28')]);_0x228ed7[_0xd7df('0x2b')]=_[_0xd7df('0x2a')](_0x34abbb[_0xd7df('0x2b')]);_0x228ed7[_0xd7df('0x2c')]=_[_0xd7df('0x2d')](_0x228ed7[_0xd7df('0x29')],_0x228ed7[_0xd7df('0x2b')]);_0x28151a[_0xd7df('0x2e')]=_[_0xd7df('0x2d')](_0x228ed7[_0xd7df('0x29')],qs[_0xd7df('0x2f')](_0x34abbb[_0xd7df('0x2b')][_0xd7df('0x2f')]));_0x28151a[_0xd7df('0x2e')]=_0x28151a[_0xd7df('0x2e')][_0xd7df('0x30')]?_0x28151a[_0xd7df('0x2e')]:_0x228ed7[_0xd7df('0x29')];_0x28151a[_0xd7df('0x34')]=qs[_0xd7df('0x35')](_0x34abbb[_0xd7df('0x2b')][_0xd7df('0x35')]);_0x28151a[_0xd7df('0x3c')]=qs[_0xd7df('0x2c')](_['pick'](_0x34abbb['query'],_0x228ed7[_0xd7df('0x2c')]));if(_0x34abbb[_0xd7df('0x2b')][_0xd7df('0x3d')]){_0x28151a['where']=_[_0xd7df('0x3b')](_0x28151a[_0xd7df('0x3c')],{'$or':_[_0xd7df('0x3e')](_0x28151a[_0xd7df('0x2e')],function(_0x5b8ea7){var _0x286702={};_0x286702[_0x5b8ea7]={'$like':'%'+_0x34abbb[_0xd7df('0x2b')][_0xd7df('0x3d')]+'%'};return _0x286702;})});}_0x28151a=_[_0xd7df('0x3b')]({},_0x28151a,_0x34abbb[_0xd7df('0x49')]);return _0x58223d[_0xd7df('0x53')](_0x28151a);}})[_0xd7df('0x22')](function(_0x2fdad0){if(_0x2fdad0){_0x488333=_0x2fdad0['length'];if(!_0x34abbb[_0xd7df('0x2b')][_0xd7df('0x31')]('nolimit')){_0x28151a['limit']=qs['limit'](_0x34abbb[_0xd7df('0x2b')][_0xd7df('0x33')]);_0x28151a[_0xd7df('0x1c')]=qs[_0xd7df('0x1c')](_0x34abbb['query'][_0xd7df('0x1c')]);}return _0x58223d[_0xd7df('0x53')](_0x28151a);}})[_0xd7df('0x22')](function(_0x111aa2){if(_0x111aa2){return _0x111aa2?{'count':_0x488333,'rows':_0x111aa2}:null;}})[_0xd7df('0x22')](respondWithResult(_0x4fb55a,null))[_0xd7df('0x46')](handleError(_0x4fb55a,null));};exports[_0xd7df('0x54')]=function(_0x551476,_0x535925,_0x40d5c9){return db['Action'][_0xd7df('0x4a')]({'where':{'id':_0x551476[_0xd7df('0x4e')]['id']}})[_0xd7df('0x22')](handleEntityNotFound(_0x535925,null))['then'](function(_0x4ebe31){if(_0x4ebe31){return _0x4ebe31[_0xd7df('0x54')](_0x551476[_0xd7df('0x4c')]['ids'],_[_0xd7df('0x51')](_0x551476[_0xd7df('0x4c')],['ids','id'])||{});}})[_0xd7df('0x22')](respondWithResult(_0x535925,null))[_0xd7df('0x46')](handleError(_0x535925,null));};exports['getActions']=function(_0x189e38,_0x519f72,_0x56f55d){var _0x1d0ad3={};var _0x1394de={};var _0x387c46;var _0x11ef01;return db[_0xd7df('0x27')][_0xd7df('0x52')]({'where':{'id':_0x189e38['params']['id']}})['then'](handleEntityNotFound(_0x519f72,null))[_0xd7df('0x22')](function(_0x3febfa){if(_0x3febfa){_0x387c46=_0x3febfa;_0x1394de[_0xd7df('0x29')]=_[_0xd7df('0x2a')](db[_0xd7df('0x55')][_0xd7df('0x28')]);_0x1394de[_0xd7df('0x2b')]=_[_0xd7df('0x2a')](_0x189e38[_0xd7df('0x2b')]);_0x1394de['filters']=_[_0xd7df('0x2d')](_0x1394de[_0xd7df('0x29')],_0x1394de['query']);_0x1d0ad3[_0xd7df('0x2e')]=_[_0xd7df('0x2d')](_0x1394de[_0xd7df('0x29')],qs[_0xd7df('0x2f')](_0x189e38['query']['fields']));_0x1d0ad3['attributes']=_0x1d0ad3[_0xd7df('0x2e')]['length']?_0x1d0ad3[_0xd7df('0x2e')]:_0x1394de[_0xd7df('0x29')];_0x1d0ad3[_0xd7df('0x34')]=qs[_0xd7df('0x35')](_0x189e38[_0xd7df('0x2b')][_0xd7df('0x35')]);_0x1d0ad3['where']=qs[_0xd7df('0x2c')](_[_0xd7df('0x36')](_0x189e38[_0xd7df('0x2b')],_0x1394de['filters']));if(_0x189e38[_0xd7df('0x2b')][_0xd7df('0x3d')]){_0x1d0ad3['where']=_[_0xd7df('0x3b')](_0x1d0ad3[_0xd7df('0x3c')],{'$or':_[_0xd7df('0x3e')](_0x1d0ad3[_0xd7df('0x2e')],function(_0x1d122a){var _0x11c2e2={};_0x11c2e2[_0x1d122a]={'$like':'%'+_0x189e38[_0xd7df('0x2b')]['filter']+'%'};return _0x11c2e2;})});}_0x1d0ad3=_[_0xd7df('0x3b')]({},_0x1d0ad3,_0x189e38[_0xd7df('0x49')]);return _0x387c46[_0xd7df('0x56')](_0x1d0ad3);}})[_0xd7df('0x22')](function(_0x5a8270){if(_0x5a8270){_0x11ef01=_0x5a8270['length'];if(!_0x189e38[_0xd7df('0x2b')][_0xd7df('0x31')](_0xd7df('0x32'))){_0x1d0ad3[_0xd7df('0x33')]=qs[_0xd7df('0x33')](_0x189e38['query'][_0xd7df('0x33')]);_0x1d0ad3['offset']=qs['offset'](_0x189e38[_0xd7df('0x2b')][_0xd7df('0x1c')]);}return _0x387c46[_0xd7df('0x56')](_0x1d0ad3);}})[_0xd7df('0x22')](function(_0x30c401){if(_0x30c401){return _0x30c401?{'count':_0x11ef01,'rows':_0x30c401}:null;}})[_0xd7df('0x22')](respondWithResult(_0x519f72,null))['catch'](handleError(_0x519f72,null));};
\ No newline at end of file
index d395f75..ed4543f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b68=['tools_automations','lodash','util','../../config/logger','request-promise','./automation.attributes','define'];(function(_0x221c85,_0x2d9a71){var _0x2ae68c=function(_0x28f675){while(--_0x28f675){_0x221c85['push'](_0x221c85['shift']());}};_0x2ae68c(++_0x2d9a71);}(_0x0b68,0xa2));var _0x80b6=function(_0x2824ce,_0xf0c5ff){_0x2824ce=_0x2824ce-0x0;var _0x5d7526=_0x0b68[_0x2824ce];return _0x5d7526;};'use strict';var _=require(_0x80b6('0x0'));var util=require(_0x80b6('0x1'));var logger=require(_0x80b6('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x80b6('0x3'));var attributes=require(_0x80b6('0x4'));module['exports']=function(_0x8e54d5,_0x282255){return _0x8e54d5[_0x80b6('0x5')]('Automation',attributes,{'tableName':_0x80b6('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x160c=['bluebird','request-promise','./automation.attributes','exports','define','tools_automations','lodash','util'];(function(_0x2d7fd2,_0x34987e){var _0x41cb8b=function(_0xeea652){while(--_0xeea652){_0x2d7fd2['push'](_0x2d7fd2['shift']());}};_0x41cb8b(++_0x34987e);}(_0x160c,0xde));var _0xc160=function(_0x5a77a2,_0xe62a5b){_0x5a77a2=_0x5a77a2-0x0;var _0xe4624e=_0x160c[_0x5a77a2];return _0xe4624e;};'use strict';var _=require(_0xc160('0x0'));var util=require(_0xc160('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xc160('0x2'));var rp=require(_0xc160('0x3'));var attributes=require(_0xc160('0x4'));module[_0xc160('0x5')]=function(_0x48fa88,_0x39dc10){return _0x48fa88[_0xc160('0x6')]('Automation',attributes,{'tableName':_0xc160('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9a6576..6c82acd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb69e=['request\x20sent','debug','error','code','message','result','catch','Automation,\x20%s,\x20%s','lodash','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info'];(function(_0x3fcfd7,_0x461464){var _0x13a150=function(_0x4ab350){while(--_0x4ab350){_0x3fcfd7['push'](_0x3fcfd7['shift']());}};_0x13a150(++_0x461464);}(_0xb69e,0xb3));var _0xeb69=function(_0x43ef57,_0x55ad14){_0x43ef57=_0x43ef57-0x0;var _0x34b487=_0xb69e[_0x43ef57];return _0x34b487;};'use strict';var _=require(_0xeb69('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xeb69('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb69('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xeb69('0x3'));var logger=require(_0xeb69('0x4'))(_0xeb69('0x5'));var config=require(_0xeb69('0x6'));var jayson=require(_0xeb69('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xf94be9,_0x414887,_0x39bf37){return new BPromise(function(_0xed37eb,_0x2ec03e){return client[_0xeb69('0x8')](_0xf94be9,_0x39bf37)[_0xeb69('0x9')](function(_0xaefc62){logger[_0xeb69('0xa')]('Automation,\x20%s,\x20%s',_0x414887,_0xeb69('0xb'));logger[_0xeb69('0xc')]('Automation,\x20%s,\x20%s,\x20%s',_0x414887,'request\x20sent',JSON['stringify'](_0xaefc62));if(_0xaefc62[_0xeb69('0xd')]){if(_0xaefc62[_0xeb69('0xd')][_0xeb69('0xe')]===0x1f4){logger['error']('Automation,\x20%s,\x20%s',_0x414887,_0xaefc62['error'][_0xeb69('0xf')]);return _0x2ec03e(_0xaefc62[_0xeb69('0xd')][_0xeb69('0xf')]);}logger[_0xeb69('0xd')]('Automation,\x20%s,\x20%s',_0x414887,_0xaefc62['error'][_0xeb69('0xf')]);return _0xed37eb(_0xaefc62['error'][_0xeb69('0xf')]);}else{logger[_0xeb69('0xa')]('Automation,\x20%s,\x20%s',_0x414887,_0xeb69('0xb'));_0xed37eb(_0xaefc62[_0xeb69('0x10')][_0xeb69('0xf')]);}})[_0xeb69('0x11')](function(_0x39be28){logger[_0xeb69('0xd')](_0xeb69('0x12'),_0x414887,_0x39be28);_0x2ec03e(_0x39be28);});});}
\ No newline at end of file
+var _0xa46e=['request','then','request\x20sent','debug','stringify','error','code','message','Automation,\x20%s,\x20%s','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','http'];(function(_0x45e505,_0x1bf5b3){var _0x52001f=function(_0x12114b){while(--_0x12114b){_0x45e505['push'](_0x45e505['shift']());}};_0x52001f(++_0x1bf5b3);}(_0xa46e,0x8a));var _0xea46=function(_0x1597e2,_0x388d3e){_0x1597e2=_0x1597e2-0x0;var _0x4c8c0a=_0xa46e[_0x1597e2];return _0x4c8c0a;};'use strict';var _=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var moment=require('moment');var BPromise=require(_0xea46('0x2'));var rs=require(_0xea46('0x3'));var fs=require('fs');var Redis=require(_0xea46('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xea46('0x5'));var logger=require('../../config/logger')(_0xea46('0x6'));var config=require('../../config/environment');var jayson=require(_0xea46('0x7'));var client=jayson['client'][_0xea46('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3dc26f,_0x5f1cd1,_0x2d1b30){return new BPromise(function(_0x42771a,_0xe7d428){return client[_0xea46('0x9')](_0x3dc26f,_0x2d1b30)[_0xea46('0xa')](function(_0x4cf206){logger['info']('Automation,\x20%s,\x20%s',_0x5f1cd1,_0xea46('0xb'));logger[_0xea46('0xc')]('Automation,\x20%s,\x20%s,\x20%s',_0x5f1cd1,_0xea46('0xb'),JSON[_0xea46('0xd')](_0x4cf206));if(_0x4cf206[_0xea46('0xe')]){if(_0x4cf206['error'][_0xea46('0xf')]===0x1f4){logger[_0xea46('0xe')]('Automation,\x20%s,\x20%s',_0x5f1cd1,_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);return _0xe7d428(_0x4cf206['error'][_0xea46('0x10')]);}logger['error'](_0xea46('0x11'),_0x5f1cd1,_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);return _0x42771a(_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);}else{logger[_0xea46('0x12')](_0xea46('0x11'),_0x5f1cd1,_0xea46('0xb'));_0x42771a(_0x4cf206[_0xea46('0x13')]['message']);}})[_0xea46('0x14')](function(_0xbf225e){logger[_0xea46('0xe')]('Automation,\x20%s,\x20%s',_0x5f1cd1,_0xbf225e);_0xe7d428(_0xbf225e);});});}
\ No newline at end of file
index 3f16c39..17a2038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d15=['destroy','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','./automation.controller','get','isAuthenticated','/:id','show','/:id/conditions','/:id/actions','post','addConditions','addActions','put','delete'];(function(_0x362175,_0x276ee9){var _0x3a5a28=function(_0x575622){while(--_0x575622){_0x362175['push'](_0x362175['shift']());}};_0x3a5a28(++_0x276ee9);}(_0x4d15,0x156));var _0x54d1=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x4d15[_0x178e48];return _0x440d7e;};'use strict';var multer=require(_0x54d1('0x0'));var util=require(_0x54d1('0x1'));var path=require(_0x54d1('0x2'));var timeout=require(_0x54d1('0x3'));var express=require('express');var router=express[_0x54d1('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0x54d1('0x5'));var config=require('../../config/environment');var controller=require(_0x54d1('0x6'));router[_0x54d1('0x7')]('/',auth[_0x54d1('0x8')](),controller['index']);router['get'](_0x54d1('0x9'),auth[_0x54d1('0x8')](),controller[_0x54d1('0xa')]);router[_0x54d1('0x7')](_0x54d1('0xb'),auth[_0x54d1('0x8')](),controller['getConditions']);router['get'](_0x54d1('0xc'),auth[_0x54d1('0x8')](),controller['getActions']);router['post']('/',auth[_0x54d1('0x8')](),controller['create']);router[_0x54d1('0xd')]('/:id/conditions',auth['isAuthenticated'](),controller[_0x54d1('0xe')]);router[_0x54d1('0xd')](_0x54d1('0xc'),auth[_0x54d1('0x8')](),controller[_0x54d1('0xf')]);router[_0x54d1('0x10')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x54d1('0x11')](_0x54d1('0x9'),auth[_0x54d1('0x8')](),controller[_0x54d1('0x12')]);module[_0x54d1('0x13')]=router;
\ No newline at end of file
+var _0x5e11=['/:id','show','/:id/conditions','isAuthenticated','getActions','post','create','addConditions','addActions','put','update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','index'];(function(_0x4429de,_0x2672ba){var _0x2a52d7=function(_0x3bc6c7){while(--_0x3bc6c7){_0x4429de['push'](_0x4429de['shift']());}};_0x2a52d7(++_0x2672ba);}(_0x5e11,0x1a6));var _0x15e1=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x5e11[_0x1e4360];return _0x31e6b4;};'use strict';var multer=require(_0x15e1('0x0'));var util=require('util');var path=require(_0x15e1('0x1'));var timeout=require('connect-timeout');var express=require(_0x15e1('0x2'));var router=express[_0x15e1('0x3')]();var auth=require(_0x15e1('0x4'));var interaction=require(_0x15e1('0x5'));var config=require(_0x15e1('0x6'));var controller=require(_0x15e1('0x7'));router[_0x15e1('0x8')]('/',auth['isAuthenticated'](),controller[_0x15e1('0x9')]);router[_0x15e1('0x8')](_0x15e1('0xa'),auth['isAuthenticated'](),controller[_0x15e1('0xb')]);router[_0x15e1('0x8')](_0x15e1('0xc'),auth[_0x15e1('0xd')](),controller['getConditions']);router[_0x15e1('0x8')]('/:id/actions',auth[_0x15e1('0xd')](),controller[_0x15e1('0xe')]);router[_0x15e1('0xf')]('/',auth['isAuthenticated'](),controller[_0x15e1('0x10')]);router[_0x15e1('0xf')](_0x15e1('0xc'),auth['isAuthenticated'](),controller[_0x15e1('0x11')]);router[_0x15e1('0xf')]('/:id/actions',auth[_0x15e1('0xd')](),controller[_0x15e1('0x12')]);router[_0x15e1('0x13')](_0x15e1('0xa'),auth[_0x15e1('0xd')](),controller[_0x15e1('0x14')]);router[_0x15e1('0x15')](_0x15e1('0xa'),auth[_0x15e1('0xd')](),controller[_0x15e1('0x16')]);module[_0x15e1('0x17')]=router;
\ No newline at end of file
index c574549..4610799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94e5=['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\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,*,*,*','ENUM','always','never','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','sequelize','STRING','name','ivr','BOOLEAN'];(function(_0x3b5ad9,_0x223867){var _0x611ae9=function(_0x1c5e28){while(--_0x1c5e28){_0x3b5ad9['push'](_0x3b5ad9['shift']());}};_0x611ae9(++_0x223867);}(_0x94e5,0xe3));var _0x594e=function(_0x1ecf34,_0x3b5737){_0x1ecf34=_0x1ecf34-0x0;var _0x30de20=_0x94e5[_0x1ecf34];return _0x30de20;};'use strict';var Sequelize=require(_0x594e('0x0'));module['exports']={'name':{'type':Sequelize[_0x594e('0x1')],'unique':_0x594e('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x594e('0x3')),'allowNull':![],'defaultValue':_0x594e('0x3')},'description':{'type':Sequelize[_0x594e('0x1')]},'active':{'type':Sequelize[_0x594e('0x4')],'defaultValue':0x0,'comment':_0x594e('0x5')},'limitCalls':{'type':Sequelize[_0x594e('0x6')](0x4)[_0x594e('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x594e('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0x594e('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x594e('0x6')](0x3)[_0x594e('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x594e('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x594e('0x6')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x594e('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x594e('0x6')](0x5)[_0x594e('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x594e('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0x594e('0x6')](0x3)[_0x594e('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x594e('0x6')](0x5)[_0x594e('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x594e('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x594e('0x6')](0x3)[_0x594e('0x7')],'defaultValue':0x3,'comment':_0x594e('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x594e('0x6')](0x5)[_0x594e('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x594e('0xe')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x594e('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x594e('0x1')],'defaultValue':_0x594e('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0x594e('0x10')](_0x594e('0x11'),_0x594e('0x12'),'onlyIfOpen'),'defaultValue':_0x594e('0x11')},'dialAMDActive':{'type':Sequelize[_0x594e('0x4')],'defaultValue':0x0,'comment':_0x594e('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0x594e('0x6')](0x9)[_0x594e('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x594e('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x594e('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x594e('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x594e('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x594e('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x594e('0x16')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x594e('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x594e('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0x594e('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x594e('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x594e('0x6')](0x9)[_0x594e('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x594e('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x594e('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x594e('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0x594e('0x10')]('DESC',_0x594e('0x1b')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0x594e('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x594e('0x6')](0x3)[_0x594e('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x594e('0x6')](0x3)[_0x594e('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x594e('0x1c')}};
\ No newline at end of file
+var _0xb7a5=['ASC','Cut\x20Digit\x20(min:1,\x20max:15)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#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)','#AMD\x20Maximum\x20Word\x20Length','DESC'];(function(_0x523a3a,_0x40bb6c){var _0x136cab=function(_0xb2f112){while(--_0xb2f112){_0x523a3a['push'](_0x523a3a['shift']());}};_0x136cab(++_0x40bb6c);}(_0xb7a5,0x1c2));var _0x5b7a=function(_0x38e13c,_0x67091d){_0x38e13c=_0x38e13c-0x0;var _0x5db840=_0xb7a5[_0x38e13c];return _0x5db840;};'use strict';var Sequelize=require(_0x5b7a('0x0'));module[_0x5b7a('0x1')]={'name':{'type':Sequelize[_0x5b7a('0x2')],'unique':_0x5b7a('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x5b7a('0x4')](_0x5b7a('0x5')),'allowNull':![],'defaultValue':_0x5b7a('0x5')},'description':{'type':Sequelize[_0x5b7a('0x2')]},'active':{'type':Sequelize[_0x5b7a('0x6')],'defaultValue':0x0,'comment':_0x5b7a('0x7')},'limitCalls':{'type':Sequelize[_0x5b7a('0x8')](0x4)[_0x5b7a('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0x5b7a('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5b7a('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x5b7a('0x8')](0x3)[_0x5b7a('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x5b7a('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5b7a('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x5b7a('0x8')](0x5)[_0x5b7a('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5b7a('0xb')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5b7a('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x5b7a('0x8')](0x5)[_0x5b7a('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5b7a('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5b7a('0x8')](0x3)[_0x5b7a('0x9')],'defaultValue':0x3,'comment':_0x5b7a('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x5b7a('0x8')](0x5)[_0x5b7a('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5b7a('0xe')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x5b7a('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x5b7a('0xf')},'dialTimezone':{'type':Sequelize[_0x5b7a('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x5b7a('0x2')],'defaultValue':_0x5b7a('0x10')},'dialCheckDuplicateType':{'type':Sequelize[_0x5b7a('0x4')](_0x5b7a('0x11'),_0x5b7a('0x12'),_0x5b7a('0x13')),'defaultValue':_0x5b7a('0x11')},'dialAMDActive':{'type':Sequelize[_0x5b7a('0x6')],'defaultValue':0x0,'comment':_0x5b7a('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0x5b7a('0x8')](0x9)[_0x5b7a('0x9')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x5b7a('0x8')](0x9)[_0x5b7a('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x5b7a('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x5b7a('0x9')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x5b7a('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x5b7a('0x8')](0x9)[_0x5b7a('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5b7a('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0x5b7a('0x8')](0x9)[_0x5b7a('0x9')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x5b7a('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x5b7a('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x5b7a('0x9')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x5b7a('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x5b7a('0x8')](0x5)[_0x5b7a('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x5b7a('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x5b7a('0x8')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5b7a('0x1c')},'dialOrderByScheduledAt':{'type':Sequelize[_0x5b7a('0x4')](_0x5b7a('0x1d'),_0x5b7a('0x1e')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0x5b7a('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x5b7a('0x8')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x5b7a('0x8')](0x3)[_0x5b7a('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5b7a('0x1f')}};
\ No newline at end of file
index 96190eb..ce8cf4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa23f=['request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','api','../../config/environment','status','end','json','offset','limit','set','apply','reject','save','update','destroy','then','IvrCampaigns','UserProfileResource','sendStatus','stack','name','index','rawAttributes','keys','dateStart','query','dateEnd','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','add','day','merge','filter','map','key','field','options','Campaign','count','include','findAll','rows','catch','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','error','params','omit','createdAt','updatedAt','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','CmHopper','order','CampaignId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','ids','dialCheckDuplicateType','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','select','CmListId','toString','ListId','NOW()','from','cm_contacts','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','into','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','push','all','removeLists','getBlackLists','CmList','addBlackLists','sequelize','removeBlackLists','html-pdf','eml-format','fast-json-patch'];(function(_0x4d6910,_0x401384){var _0x2f2806=function(_0xe34fa6){while(--_0xe34fa6){_0x4d6910['push'](_0x4d6910['shift']());}};_0x2f2806(++_0x401384);}(_0xa23f,0x7c));var _0xfa23=function(_0x26784a,_0x43058d){_0x26784a=_0x26784a-0x0;var _0x523388=_0xa23f[_0x26784a];return _0x523388;};'use strict';var pdf=require(_0xfa23('0x0'));var emlformat=require(_0xfa23('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfa23('0x2'));var rp=require(_0xfa23('0x3'));var moment=require(_0xfa23('0x4'));var BPromise=require(_0xfa23('0x5'));var Mustache=require('mustache');var util=require(_0xfa23('0x6'));var path=require('path');var sox=require(_0xfa23('0x7'));var csv=require(_0xfa23('0x8'));var ejs=require(_0xfa23('0x9'));var fs=require('fs');var _=require(_0xfa23('0xa'));var squel=require('squel');var crypto=require(_0xfa23('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xfa23('0xc'));var toCsv=require(_0xfa23('0x8'));var querystring=require(_0xfa23('0xd'));var Papa=require(_0xfa23('0xe'));var Redis=require(_0xfa23('0xf'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xfa23('0x10'));var utils=require('../../config/utils');var config=require(_0xfa23('0x11'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b99b7,_0x2853da){_0x2853da=_0x2853da||0xcc;return function(_0x109aa5){if(_0x109aa5){return _0x1b99b7['sendStatus'](_0x2853da);}return _0x1b99b7[_0xfa23('0x12')](_0x2853da)[_0xfa23('0x13')]();};}function respondWithResult(_0x46f991,_0x5ea9ca){_0x5ea9ca=_0x5ea9ca||0xc8;return function(_0x56f927){if(_0x56f927){return _0x46f991[_0xfa23('0x12')](_0x5ea9ca)[_0xfa23('0x14')](_0x56f927);}};}function respondWithFilteredResult(_0x3f50f0,_0x36252c){return function(_0x5e1a30){if(_0x5e1a30){var _0x14a994=_0x5e1a30['count'],_0xb7d11a=_0x36252c[_0xfa23('0x15')],_0x2095a5=_0x36252c[_0xfa23('0x15')]+_0x36252c[_0xfa23('0x16')],_0x9611e0;if(_0x2095a5>=_0x14a994){_0x2095a5=_0x14a994;_0x9611e0=0xc8;}else{_0x9611e0=0xce;}_0x3f50f0[_0xfa23('0x12')](_0x9611e0);return _0x3f50f0[_0xfa23('0x17')]('Content-Range',_0xb7d11a+'-'+_0x2095a5+'/'+_0x14a994)['json'](_0x5e1a30);}return null;};}function patchUpdates(_0x5c3c6d){return function(_0x445bd0){try{jsonpatch[_0xfa23('0x18')](_0x445bd0,_0x5c3c6d,!![]);}catch(_0x4bd0e0){return BPromise[_0xfa23('0x19')](_0x4bd0e0);}return _0x445bd0[_0xfa23('0x1a')]();};}function saveUpdates(_0x1eb87e,_0x54bb04){return function(_0x1970ec){if(_0x1970ec){return _0x1970ec[_0xfa23('0x1b')](_0x1eb87e)['then'](function(_0x16e4f9){return _0x16e4f9;});}return null;};}function removeEntity(_0x2a900c,_0x148f3b){return function(_0x1b9994){if(_0x1b9994){return _0x1b9994[_0xfa23('0x1c')]()[_0xfa23('0x1d')](function(){var _0x31eedb=_0x1b9994['get']({'plain':!![]});var _0x147228=_0xfa23('0x1e');return db[_0xfa23('0x1f')][_0xfa23('0x1c')]({'where':{'type':_0x147228,'resourceId':_0x31eedb['id']}})['then'](function(){return _0x1b9994;});})[_0xfa23('0x1d')](function(){_0x2a900c['status'](0xcc)[_0xfa23('0x13')]();});}};}function handleEntityNotFound(_0x1abb42,_0x2481e9){return function(_0x26bdce){if(!_0x26bdce){_0x1abb42[_0xfa23('0x20')](0x194);}return _0x26bdce;};}function handleError(_0x1340d9,_0x21bbc0){_0x21bbc0=_0x21bbc0||0x1f4;return function(_0x499407){logger['error'](_0x499407[_0xfa23('0x21')]);if(_0x499407['name']){delete _0x499407[_0xfa23('0x22')];}_0x1340d9['status'](_0x21bbc0)['send'](_0x499407);};}exports[_0xfa23('0x23')]=function(_0x1a9a90,_0xbf9d19){var _0x3b00a8={},_0x374169={},_0x24da31={'count':0x0,'rows':[]};var _0x3c9d9d=db['Campaign'][_0xfa23('0x24')];_0x374169['model']=_[_0xfa23('0x25')](_0x3c9d9d);var _0x6bf719={'dateStart':_0x1a9a90['query'][_0xfa23('0x26')],'dateEnd':_0x1a9a90[_0xfa23('0x27')][_0xfa23('0x28')]};delete _0x1a9a90[_0xfa23('0x27')][_0xfa23('0x26')];delete _0x1a9a90[_0xfa23('0x27')][_0xfa23('0x28')];_0x374169[_0xfa23('0x27')]=_[_0xfa23('0x25')](_0x1a9a90['query']);_0x374169[_0xfa23('0x29')]=_['intersection'](_0x374169[_0xfa23('0x2a')],_0x374169[_0xfa23('0x27')]);_0x3b00a8[_0xfa23('0x2b')]=_[_0xfa23('0x2c')](_0x374169[_0xfa23('0x2a')],qs[_0xfa23('0x2d')](_0x1a9a90[_0xfa23('0x27')][_0xfa23('0x2d')]));_0x3b00a8[_0xfa23('0x2b')]=_0x3b00a8['attributes'][_0xfa23('0x2e')]?_0x3b00a8['attributes']:_0x374169[_0xfa23('0x2a')];if(!_0x1a9a90[_0xfa23('0x27')][_0xfa23('0x2f')](_0xfa23('0x30'))){_0x3b00a8[_0xfa23('0x16')]=qs[_0xfa23('0x16')](_0x1a9a90[_0xfa23('0x27')]['limit']);_0x3b00a8[_0xfa23('0x15')]=qs[_0xfa23('0x15')](_0x1a9a90[_0xfa23('0x27')][_0xfa23('0x15')]);}_0x3b00a8['order']=qs['sort'](_0x1a9a90['query'][_0xfa23('0x31')]);_0x3b00a8[_0xfa23('0x32')]=qs['filters'](_[_0xfa23('0x33')](_0x1a9a90[_0xfa23('0x27')],_0x374169[_0xfa23('0x29')]));if(_0x6bf719['dateStart']){if(_0x6bf719[_0xfa23('0x28')]){_0x6bf719['dateEnd']=moment(_0x6bf719[_0xfa23('0x28')])[_0xfa23('0x34')](0x1,_0xfa23('0x35'));}else{_0x6bf719[_0xfa23('0x28')]=moment(_0x6bf719[_0xfa23('0x26')])[_0xfa23('0x34')](0x1,'day');}_[_0xfa23('0x36')](_0x3b00a8[_0xfa23('0x32')],{'createdAt':{'$gte':_0x6bf719[_0xfa23('0x26')],'$lte':_0x6bf719[_0xfa23('0x28')]}});}if(_0x1a9a90['query'][_0xfa23('0x37')]){_0x3b00a8[_0xfa23('0x32')]=_[_0xfa23('0x36')](_0x3b00a8[_0xfa23('0x32')],{'$or':_[_0xfa23('0x38')](_0x3c9d9d,function(_0x18e73c){if(_0x18e73c['type'][_0xfa23('0x39')]!=='VIRTUAL'){var _0x5ec65a={};_0x5ec65a[_0x18e73c[_0xfa23('0x3a')]]={'$like':'%'+_0x1a9a90[_0xfa23('0x27')]['filter']+'%'};return _0x5ec65a;}})});}_0x3b00a8=_[_0xfa23('0x36')]({},_0x3b00a8,_0x1a9a90[_0xfa23('0x3b')]);var _0x71abcc={'where':_0x3b00a8['where']};return db[_0xfa23('0x3c')][_0xfa23('0x3d')](_0x71abcc)[_0xfa23('0x1d')](function(_0x539271){_0x24da31['count']=_0x539271;if(_0x1a9a90[_0xfa23('0x27')]['includeAll']){_0x3b00a8[_0xfa23('0x3e')]=[{'all':!![]}];}return db[_0xfa23('0x3c')][_0xfa23('0x3f')](_0x3b00a8);})['then'](function(_0x352e66){_0x24da31[_0xfa23('0x40')]=_0x352e66;return _0x24da31;})[_0xfa23('0x1d')](respondWithFilteredResult(_0xbf9d19,_0x3b00a8))[_0xfa23('0x41')](handleError(_0xbf9d19,null));};exports['show']=function(_0x857544,_0x14e99b){var _0x28b7ba={'raw':![],'where':{'id':_0x857544['params']['id']}},_0x58657a={};_0x58657a[_0xfa23('0x2a')]=_['keys'](db[_0xfa23('0x3c')][_0xfa23('0x24')]);_0x58657a[_0xfa23('0x27')]=_[_0xfa23('0x25')](_0x857544[_0xfa23('0x27')]);_0x58657a[_0xfa23('0x29')]=_['intersection'](_0x58657a[_0xfa23('0x2a')],_0x58657a[_0xfa23('0x27')]);_0x28b7ba[_0xfa23('0x2b')]=_[_0xfa23('0x2c')](_0x58657a[_0xfa23('0x2a')],qs[_0xfa23('0x2d')](_0x857544['query'][_0xfa23('0x2d')]));_0x28b7ba[_0xfa23('0x2b')]=_0x28b7ba[_0xfa23('0x2b')][_0xfa23('0x2e')]?_0x28b7ba[_0xfa23('0x2b')]:_0x58657a['model'];if(_0x857544[_0xfa23('0x27')][_0xfa23('0x42')]){_0x28b7ba[_0xfa23('0x3e')]=[{'all':!![]}];}_0x28b7ba=_['merge']({},_0x28b7ba,_0x857544[_0xfa23('0x3b')]);return db[_0xfa23('0x3c')][_0xfa23('0x43')](_0x28b7ba)[_0xfa23('0x1d')](handleEntityNotFound(_0x14e99b,null))[_0xfa23('0x1d')](respondWithResult(_0x14e99b,null))[_0xfa23('0x41')](handleError(_0x14e99b,null));};exports[_0xfa23('0x44')]=function(_0x50bae3,_0x1007b1){return db['Campaign'][_0xfa23('0x44')](_0x50bae3[_0xfa23('0x45')],{})[_0xfa23('0x1d')](function(_0xf24dd5){var _0x12a984=_0x50bae3[_0xfa23('0x46')]['get']({'plain':!![]});if(!_0x12a984)throw new Error(_0xfa23('0x47'));if(_0x12a984[_0xfa23('0x48')]===_0xfa23('0x46')){var _0x47459e=_0xf24dd5[_0xfa23('0x49')]({'plain':!![]});var _0x22be14=_0xfa23('0x1e');return db['UserProfileSection'][_0xfa23('0x43')]({'where':{'name':_0x22be14,'userProfileId':_0x12a984[_0xfa23('0x4a')]},'raw':!![]})[_0xfa23('0x1d')](function(_0xd64189){if(_0xd64189&&_0xd64189['autoAssociation']===0x0){return db[_0xfa23('0x1f')][_0xfa23('0x44')]({'name':_0x47459e[_0xfa23('0x22')],'resourceId':_0x47459e['id'],'type':_0xd64189[_0xfa23('0x22')],'sectionId':_0xd64189['id']},{})[_0xfa23('0x1d')](function(){return _0xf24dd5;});}else{return _0xf24dd5;}})[_0xfa23('0x41')](function(_0x5db2e6){logger[_0xfa23('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5db2e6);throw _0x5db2e6;});}return _0xf24dd5;})[_0xfa23('0x1d')](respondWithResult(_0x1007b1,0xc9))[_0xfa23('0x41')](handleError(_0x1007b1,null));};exports['clone']=function(_0x419b39,_0x39121b){var _0x5a5397={'raw':![],'where':{'id':_0x419b39[_0xfa23('0x4c')]['id']}},_0x4b7308={};_0x4b7308['model']=_[_0xfa23('0x25')](db[_0xfa23('0x3c')][_0xfa23('0x24')]);_0x5a5397[_0xfa23('0x2b')]=_['intersection'](_0x4b7308[_0xfa23('0x2a')],qs[_0xfa23('0x2d')](_0x419b39['query'][_0xfa23('0x2d')]));_0x5a5397[_0xfa23('0x2b')]=_0x5a5397[_0xfa23('0x2b')][_0xfa23('0x2e')]?_0x5a5397[_0xfa23('0x2b')]:_0x4b7308[_0xfa23('0x2a')];if(_0x419b39['query'][_0xfa23('0x42')]){_0x5a5397[_0xfa23('0x3e')]=[{'all':!![]}];}_0x5a5397=_[_0xfa23('0x36')]({},_0x5a5397,_0x419b39['options']);return db[_0xfa23('0x3c')][_0xfa23('0x43')](_0x5a5397)[_0xfa23('0x1d')](handleEntityNotFound(_0x39121b,null))['then'](function(_0x35eac0){if(_0x35eac0){var _0x1e0f67=_0x35eac0[_0xfa23('0x49')]({'plain':!![]});_0x1e0f67=qs[_0xfa23('0x4d')](_0x1e0f67,['id',_0xfa23('0x4e'),'updatedAt']);_0x419b39['body']=_[_0xfa23('0x4d')](_0x419b39[_0xfa23('0x45')],['id',_0xfa23('0x4e'),_0xfa23('0x4f')]);return db['Campaign']['create'](_[_0xfa23('0x36')](_0x1e0f67,_0x419b39[_0xfa23('0x45')]),{'include':_0x419b39[_0xfa23('0x27')][_0xfa23('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x41ac7a){var _0x1cbc06=_0x419b39['user'][_0xfa23('0x49')]({'plain':!![]});if(!_0x1cbc06)throw new Error(_0xfa23('0x47'));if(_0x1cbc06['role']===_0xfa23('0x46')){var _0x314137=_0x41ac7a[_0xfa23('0x49')]({'plain':!![]});var _0x3ece28=_0xfa23('0x1e');return db[_0xfa23('0x50')]['find']({'where':{'name':_0x3ece28,'userProfileId':_0x1cbc06[_0xfa23('0x4a')]},'raw':!![]})['then'](function(_0x1e5f34){if(_0x1e5f34&&_0x1e5f34[_0xfa23('0x51')]===0x0){return db[_0xfa23('0x1f')][_0xfa23('0x44')]({'name':_0x314137[_0xfa23('0x22')],'resourceId':_0x314137['id'],'type':_0x1e5f34[_0xfa23('0x22')],'sectionId':_0x1e5f34['id']},{})[_0xfa23('0x1d')](function(){return _0x41ac7a;});}else{return _0x41ac7a;}})[_0xfa23('0x41')](function(_0xdbaec7){logger['error'](_0xfa23('0x52'),_0xdbaec7);throw _0xdbaec7;});}return _0x41ac7a;});}})['then'](respondWithResult(_0x39121b,0xc9))[_0xfa23('0x41')](handleError(_0x39121b,null));};exports[_0xfa23('0x1b')]=function(_0x4c2103,_0x53d587){if(_0x4c2103[_0xfa23('0x45')]['id']){delete _0x4c2103['body']['id'];}return db[_0xfa23('0x3c')][_0xfa23('0x43')]({'where':{'id':_0x4c2103[_0xfa23('0x4c')]['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x53d587,null))[_0xfa23('0x1d')](saveUpdates(_0x4c2103[_0xfa23('0x45')],null))[_0xfa23('0x1d')](respondWithResult(_0x53d587,null))['catch'](handleError(_0x53d587,null));};exports['destroy']=function(_0x18b6ec,_0x1e540d){return db[_0xfa23('0x3c')][_0xfa23('0x43')]({'where':{'id':_0x18b6ec['params']['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x1e540d,null))['then'](removeEntity(_0x1e540d,null))[_0xfa23('0x41')](handleError(_0x1e540d,null));};exports[_0xfa23('0x53')]=function(_0x20c757,_0x279d86,_0x74a9aa){var _0x3bf459={'raw':!![],'where':{}};var _0x19c67f={};var _0x1b93f4={'count':0x0,'rows':[]};return db[_0xfa23('0x3c')][_0xfa23('0x54')]({'where':{'id':_0x20c757['params']['id']}})['then'](handleEntityNotFound(_0x279d86,null))[_0xfa23('0x1d')](function(_0x53fac6){if(_0x53fac6){_0x19c67f[_0xfa23('0x2a')]=_['keys'](db[_0xfa23('0x55')][_0xfa23('0x24')]);_0x19c67f['query']=_[_0xfa23('0x25')](_0x20c757['query']);_0x19c67f['filters']=_[_0xfa23('0x2c')](_0x19c67f[_0xfa23('0x2a')],_0x19c67f['query']);_0x3bf459[_0xfa23('0x2b')]=_[_0xfa23('0x2c')](_0x19c67f[_0xfa23('0x2a')],qs[_0xfa23('0x2d')](_0x20c757[_0xfa23('0x27')][_0xfa23('0x2d')]));_0x3bf459[_0xfa23('0x2b')]=_0x3bf459['attributes'][_0xfa23('0x2e')]?_0x3bf459[_0xfa23('0x2b')]:_0x19c67f[_0xfa23('0x2a')];if(!_0x20c757[_0xfa23('0x27')][_0xfa23('0x2f')]('nolimit')){_0x3bf459[_0xfa23('0x16')]=qs['limit'](_0x20c757['query']['limit']);_0x3bf459[_0xfa23('0x15')]=qs[_0xfa23('0x15')](_0x20c757[_0xfa23('0x27')]['offset']);}_0x3bf459[_0xfa23('0x56')]=qs[_0xfa23('0x31')](_0x20c757['query'][_0xfa23('0x31')]);_0x3bf459[_0xfa23('0x32')]=qs[_0xfa23('0x29')](_[_0xfa23('0x33')](_0x20c757['query'],_0x19c67f['filters']));_0x3bf459[_0xfa23('0x32')]['CampaignId']=_0x53fac6['id'];if(_0x20c757[_0xfa23('0x27')][_0xfa23('0x37')]){_0x3bf459[_0xfa23('0x32')]=_['merge'](_0x3bf459[_0xfa23('0x32')],{'$or':_[_0xfa23('0x38')](_0x3bf459[_0xfa23('0x2b')],function(_0xcf4b16){var _0x337293={};_0x337293[_0xcf4b16]={'$like':'%'+_0x20c757[_0xfa23('0x27')]['filter']+'%'};return _0x337293;})});}_0x3bf459=_[_0xfa23('0x36')]({},_0x3bf459,_0x20c757[_0xfa23('0x3b')]);return db[_0xfa23('0x55')][_0xfa23('0x3d')]({'where':_0x3bf459[_0xfa23('0x32')]})[_0xfa23('0x1d')](function(_0x56b78d){_0x1b93f4[_0xfa23('0x3d')]=_0x56b78d;if(_0x20c757[_0xfa23('0x27')]['includeAll']){_0x3bf459[_0xfa23('0x3e')]=[{'all':!![]}];}return db[_0xfa23('0x55')][_0xfa23('0x3f')](_0x3bf459);})[_0xfa23('0x1d')](function(_0x447419){_0x1b93f4['rows']=_0x447419;return _0x1b93f4;});}})[_0xfa23('0x1d')](respondWithFilteredResult(_0x279d86,_0x3bf459))['catch'](handleError(_0x279d86,null));};exports['getHopperHistories']=function(_0x5e54bf,_0x5bc019,_0x23349e){var _0x50e6f5={'raw':!![],'where':{}};var _0x17cec3={};var _0x3affe5={'count':0x0,'rows':[]};return db[_0xfa23('0x3c')][_0xfa23('0x54')]({'where':{'id':_0x5e54bf[_0xfa23('0x4c')]['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x5bc019,null))[_0xfa23('0x1d')](function(_0x1b35b8){if(_0x1b35b8){_0x17cec3['model']=_[_0xfa23('0x25')](db['CmHopperHistory'][_0xfa23('0x24')]);_0x17cec3[_0xfa23('0x27')]=_['keys'](_0x5e54bf[_0xfa23('0x27')]);_0x17cec3[_0xfa23('0x29')]=_['intersection'](_0x17cec3[_0xfa23('0x2a')],_0x17cec3['query']);_0x50e6f5[_0xfa23('0x2b')]=_['intersection'](_0x17cec3[_0xfa23('0x2a')],qs['fields'](_0x5e54bf[_0xfa23('0x27')][_0xfa23('0x2d')]));_0x50e6f5['attributes']=_0x50e6f5[_0xfa23('0x2b')][_0xfa23('0x2e')]?_0x50e6f5[_0xfa23('0x2b')]:_0x17cec3['model'];if(!_0x5e54bf[_0xfa23('0x27')]['hasOwnProperty'](_0xfa23('0x30'))){_0x50e6f5[_0xfa23('0x16')]=qs[_0xfa23('0x16')](_0x5e54bf[_0xfa23('0x27')]['limit']);_0x50e6f5[_0xfa23('0x15')]=qs['offset'](_0x5e54bf[_0xfa23('0x27')]['offset']);}_0x50e6f5[_0xfa23('0x56')]=qs[_0xfa23('0x31')](_0x5e54bf[_0xfa23('0x27')][_0xfa23('0x31')]);_0x50e6f5[_0xfa23('0x32')]=qs['filters'](_[_0xfa23('0x33')](_0x5e54bf['query'],_0x17cec3['filters']));_0x50e6f5[_0xfa23('0x32')][_0xfa23('0x57')]=_0x1b35b8['id'];if(_0x5e54bf[_0xfa23('0x27')][_0xfa23('0x37')]){_0x50e6f5['where']=_[_0xfa23('0x36')](_0x50e6f5[_0xfa23('0x32')],{'$or':_[_0xfa23('0x38')](_0x50e6f5[_0xfa23('0x2b')],function(_0x24aa4e){var _0x8fbbfd={};_0x8fbbfd[_0x24aa4e]={'$like':'%'+_0x5e54bf[_0xfa23('0x27')][_0xfa23('0x37')]+'%'};return _0x8fbbfd;})});}_0x50e6f5=_[_0xfa23('0x36')]({},_0x50e6f5,_0x5e54bf[_0xfa23('0x3b')]);return db[_0xfa23('0x58')][_0xfa23('0x3d')]({'where':_0x50e6f5['where']})[_0xfa23('0x1d')](function(_0x3cc203){_0x3affe5[_0xfa23('0x3d')]=_0x3cc203;if(_0x5e54bf[_0xfa23('0x27')][_0xfa23('0x42')]){_0x50e6f5[_0xfa23('0x3e')]=[{'all':!![]}];}return db[_0xfa23('0x58')]['findAll'](_0x50e6f5);})[_0xfa23('0x1d')](function(_0x571f0a){_0x3affe5['rows']=_0x571f0a;return _0x3affe5;});}})['then'](respondWithFilteredResult(_0x5bc019,_0x50e6f5))['catch'](handleError(_0x5bc019,null));};exports[_0xfa23('0x59')]=function(_0x3970a6,_0xf96b0a,_0x4da911){var _0x413eff={'raw':!![],'where':{}};var _0x1d5f64={};var _0x28ed8c={'count':0x0,'rows':[]};return db[_0xfa23('0x3c')][_0xfa23('0x54')]({'where':{'id':_0x3970a6['params']['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0xf96b0a,null))[_0xfa23('0x1d')](function(_0x19acfa){if(_0x19acfa){_0x1d5f64[_0xfa23('0x2a')]=_[_0xfa23('0x25')](db[_0xfa23('0x5a')]['rawAttributes']);_0x1d5f64['query']=_['keys'](_0x3970a6['query']);_0x1d5f64[_0xfa23('0x29')]=_[_0xfa23('0x2c')](_0x1d5f64[_0xfa23('0x2a')],_0x1d5f64[_0xfa23('0x27')]);_0x413eff[_0xfa23('0x2b')]=_['intersection'](_0x1d5f64[_0xfa23('0x2a')],qs[_0xfa23('0x2d')](_0x3970a6[_0xfa23('0x27')]['fields']));_0x413eff[_0xfa23('0x2b')]=_0x413eff['attributes']['length']?_0x413eff[_0xfa23('0x2b')]:_0x1d5f64[_0xfa23('0x2a')];if(!_0x3970a6[_0xfa23('0x27')][_0xfa23('0x2f')]('nolimit')){_0x413eff[_0xfa23('0x16')]=qs[_0xfa23('0x16')](_0x3970a6['query'][_0xfa23('0x16')]);_0x413eff[_0xfa23('0x15')]=qs['offset'](_0x3970a6['query'][_0xfa23('0x15')]);}_0x413eff['order']=qs[_0xfa23('0x31')](_0x3970a6[_0xfa23('0x27')][_0xfa23('0x31')]);_0x413eff[_0xfa23('0x32')]=qs[_0xfa23('0x29')](_[_0xfa23('0x33')](_0x3970a6[_0xfa23('0x27')],_0x1d5f64[_0xfa23('0x29')]));_0x413eff[_0xfa23('0x32')][_0xfa23('0x57')]=_0x19acfa['id'];if(_0x3970a6[_0xfa23('0x27')]['filter']){_0x413eff[_0xfa23('0x32')]=_[_0xfa23('0x36')](_0x413eff['where'],{'$or':_[_0xfa23('0x38')](_0x413eff[_0xfa23('0x2b')],function(_0x1b51df){var _0x293db0={};_0x293db0[_0x1b51df]={'$like':'%'+_0x3970a6['query']['filter']+'%'};return _0x293db0;})});}_0x413eff=_[_0xfa23('0x36')]({},_0x413eff,_0x3970a6[_0xfa23('0x3b')]);return db[_0xfa23('0x5a')][_0xfa23('0x3d')]({'where':_0x413eff['where']})['then'](function(_0x393695){_0x28ed8c[_0xfa23('0x3d')]=_0x393695;if(_0x3970a6[_0xfa23('0x27')]['includeAll']){_0x413eff[_0xfa23('0x3e')]=[{'all':!![]}];}return db[_0xfa23('0x5a')]['findAll'](_0x413eff);})[_0xfa23('0x1d')](function(_0x56b6c8){_0x28ed8c[_0xfa23('0x40')]=_0x56b6c8;return _0x28ed8c;});}})[_0xfa23('0x1d')](respondWithFilteredResult(_0xf96b0a,_0x413eff))[_0xfa23('0x41')](handleError(_0xf96b0a,null));};exports[_0xfa23('0x5b')]=function(_0x1df0db,_0x3d5f5c,_0x2025cd){var _0x50ac27={'raw':!![],'where':{}};var _0x597d8b={};var _0x3aee02={'count':0x0,'rows':[]};return db[_0xfa23('0x3c')][_0xfa23('0x54')]({'where':{'id':_0x1df0db['params']['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x3d5f5c,null))[_0xfa23('0x1d')](function(_0x2fe43c){if(_0x2fe43c){_0x597d8b[_0xfa23('0x2a')]=_[_0xfa23('0x25')](db[_0xfa23('0x5c')][_0xfa23('0x24')]);_0x597d8b[_0xfa23('0x27')]=_['keys'](_0x1df0db[_0xfa23('0x27')]);_0x597d8b[_0xfa23('0x29')]=_[_0xfa23('0x2c')](_0x597d8b[_0xfa23('0x2a')],_0x597d8b[_0xfa23('0x27')]);_0x50ac27[_0xfa23('0x2b')]=_['intersection'](_0x597d8b[_0xfa23('0x2a')],qs[_0xfa23('0x2d')](_0x1df0db['query'][_0xfa23('0x2d')]));_0x50ac27[_0xfa23('0x2b')]=_0x50ac27[_0xfa23('0x2b')][_0xfa23('0x2e')]?_0x50ac27[_0xfa23('0x2b')]:_0x597d8b[_0xfa23('0x2a')];if(!_0x1df0db[_0xfa23('0x27')][_0xfa23('0x2f')](_0xfa23('0x30'))){_0x50ac27[_0xfa23('0x16')]=qs[_0xfa23('0x16')](_0x1df0db[_0xfa23('0x27')][_0xfa23('0x16')]);_0x50ac27[_0xfa23('0x15')]=qs[_0xfa23('0x15')](_0x1df0db[_0xfa23('0x27')][_0xfa23('0x15')]);}_0x50ac27[_0xfa23('0x56')]=qs[_0xfa23('0x31')](_0x1df0db[_0xfa23('0x27')][_0xfa23('0x31')]);_0x50ac27['where']=qs[_0xfa23('0x29')](_[_0xfa23('0x33')](_0x1df0db[_0xfa23('0x27')],_0x597d8b[_0xfa23('0x29')]));_0x50ac27[_0xfa23('0x32')]['CampaignId']=_0x2fe43c['id'];if(_0x1df0db[_0xfa23('0x27')][_0xfa23('0x37')]){_0x50ac27['where']=_[_0xfa23('0x36')](_0x50ac27[_0xfa23('0x32')],{'$or':_[_0xfa23('0x38')](_0x50ac27[_0xfa23('0x2b')],function(_0x157e42){var _0x139ca1={};_0x139ca1[_0x157e42]={'$like':'%'+_0x1df0db['query'][_0xfa23('0x37')]+'%'};return _0x139ca1;})});}_0x50ac27=_[_0xfa23('0x36')]({},_0x50ac27,_0x1df0db[_0xfa23('0x3b')]);return db[_0xfa23('0x5c')][_0xfa23('0x3d')]({'where':_0x50ac27[_0xfa23('0x32')]})[_0xfa23('0x1d')](function(_0x43aa9b){_0x3aee02[_0xfa23('0x3d')]=_0x43aa9b;if(_0x1df0db['query'][_0xfa23('0x42')]){_0x50ac27[_0xfa23('0x3e')]=[{'all':!![]}];}return db[_0xfa23('0x5c')]['findAll'](_0x50ac27);})[_0xfa23('0x1d')](function(_0x2b7cfb){_0x3aee02[_0xfa23('0x40')]=_0x2b7cfb;return _0x3aee02;});}})[_0xfa23('0x1d')](respondWithFilteredResult(_0x3d5f5c,_0x50ac27))[_0xfa23('0x41')](handleError(_0x3d5f5c,null));};exports[_0xfa23('0x5d')]=function(_0x288500,_0x2c040d,_0x1c4467){var _0x15bfc2={};var _0x521a30={};var _0x21ab1f;var _0x87d717;return db['Campaign']['findOne']({'where':{'id':_0x288500[_0xfa23('0x4c')]['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x2c040d,null))[_0xfa23('0x1d')](function(_0xdb4344){if(_0xdb4344){_0x21ab1f=_0xdb4344;_0x521a30['model']=_[_0xfa23('0x25')](db['CmList'][_0xfa23('0x24')]);_0x521a30[_0xfa23('0x27')]=_[_0xfa23('0x25')](_0x288500[_0xfa23('0x27')]);_0x521a30['filters']=_[_0xfa23('0x2c')](_0x521a30[_0xfa23('0x2a')],_0x521a30[_0xfa23('0x27')]);_0x15bfc2[_0xfa23('0x2b')]=_[_0xfa23('0x2c')](_0x521a30[_0xfa23('0x2a')],qs[_0xfa23('0x2d')](_0x288500[_0xfa23('0x27')]['fields']));_0x15bfc2['attributes']=_0x15bfc2[_0xfa23('0x2b')][_0xfa23('0x2e')]?_0x15bfc2[_0xfa23('0x2b')]:_0x521a30[_0xfa23('0x2a')];_0x15bfc2[_0xfa23('0x56')]=qs[_0xfa23('0x31')](_0x288500[_0xfa23('0x27')][_0xfa23('0x31')]);_0x15bfc2[_0xfa23('0x32')]=qs[_0xfa23('0x29')](_[_0xfa23('0x33')](_0x288500[_0xfa23('0x27')],_0x521a30[_0xfa23('0x29')]));if(_0x288500[_0xfa23('0x27')][_0xfa23('0x37')]){_0x15bfc2['where']=_['merge'](_0x15bfc2['where'],{'$or':_[_0xfa23('0x38')](_0x15bfc2['attributes'],function(_0x2213e6){var _0x1f1aa3={};_0x1f1aa3[_0x2213e6]={'$like':'%'+_0x288500[_0xfa23('0x27')][_0xfa23('0x37')]+'%'};return _0x1f1aa3;})});}_0x15bfc2=_['merge']({},_0x15bfc2,_0x288500[_0xfa23('0x3b')]);return _0x21ab1f['getLists'](_0x15bfc2);}})[_0xfa23('0x1d')](function(_0x540b78){if(_0x540b78){_0x87d717=_0x540b78[_0xfa23('0x2e')];if(!_0x288500[_0xfa23('0x27')][_0xfa23('0x2f')](_0xfa23('0x30'))){_0x15bfc2[_0xfa23('0x16')]=qs[_0xfa23('0x16')](_0x288500[_0xfa23('0x27')][_0xfa23('0x16')]);_0x15bfc2['offset']=qs[_0xfa23('0x15')](_0x288500[_0xfa23('0x27')][_0xfa23('0x15')]);}return _0x21ab1f[_0xfa23('0x5d')](_0x15bfc2);}})['then'](function(_0x149a15){if(_0x149a15){return _0x149a15?{'count':_0x87d717,'rows':_0x149a15}:null;}})[_0xfa23('0x1d')](respondWithResult(_0x2c040d,null))[_0xfa23('0x41')](handleError(_0x2c040d,null));};exports[_0xfa23('0x5e')]=function(_0xf3fbc8,_0x861d46,_0x2fff8e){var _0x3bae0b,_0x341fb7;return db['Campaign'][_0xfa23('0x43')]({'where':{'id':_0xf3fbc8[_0xfa23('0x4c')]['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x861d46,null))['then'](function(_0x5a0797){if(_0x5a0797){_0x341fb7=_0x5a0797;return _0x5a0797[_0xfa23('0x5e')](_0xf3fbc8[_0xfa23('0x45')][_0xfa23('0x5f')],_[_0xfa23('0x4d')](_0xf3fbc8[_0xfa23('0x45')],[_0xfa23('0x5f'),'id'])||{});}return null;})['spread'](function(_0x34d995){var _0x2c4fb0;_0x3bae0b=_0x34d995||[];var _0x5440a4=[];if(_0x34d995){for(var _0x31bf34=0x0;_0x31bf34<_0x34d995[_0xfa23('0x2e')];_0x31bf34+=0x1){var _0x3e791b=_0x34d995[_0x31bf34][_0xfa23('0x49')]({'plain':!![]});_0x341fb7[_0xfa23('0x60')]=_0xf3fbc8[_0xfa23('0x45')][_0xfa23('0x60')]?_0xf3fbc8['body'][_0xfa23('0x60')]:_0x341fb7[_0xfa23('0x60')];switch(_0x341fb7[_0xfa23('0x60')]){case'always':_0x2c4fb0=squel[_0xfa23('0x61')]()['into'](_0xfa23('0x62'))[_0xfa23('0x63')]([_0xfa23('0x64'),_0xfa23('0x65'),_0xfa23('0x66'),'ListId',_0xfa23('0x57'),_0xfa23('0x4e'),_0xfa23('0x4f')],squel[_0xfa23('0x67')]()[_0xfa23('0x3a')](_0xfa23('0x64'),_0xfa23('0x64'))[_0xfa23('0x3a')]('NOW()',_0xfa23('0x65'))['field']('id',_0xfa23('0x66'))[_0xfa23('0x3a')](_0x3e791b[_0xfa23('0x68')][_0xfa23('0x69')](),_0xfa23('0x6a'))['field'](_0xf3fbc8[_0xfa23('0x4c')]['id']['toString'](),_0xfa23('0x57'))[_0xfa23('0x3a')](_0xfa23('0x6b'),_0xfa23('0x4e'))[_0xfa23('0x3a')](_0xfa23('0x6b'),_0xfa23('0x4f'))[_0xfa23('0x6c')](_0xfa23('0x6d'))[_0xfa23('0x32')]('deletedAt\x20IS\x20NULL')[_0xfa23('0x32')](_0xfa23('0x6e'),_0x3e791b[_0xfa23('0x68')][_0xfa23('0x69')]())[_0xfa23('0x32')]('phone\x20IS\x20NOT\x20NULL')[_0xfa23('0x32')](_0xfa23('0x6f'),squel[_0xfa23('0x67')]()[_0xfa23('0x3a')](_0xfa23('0x70'))['from'](_0xfa23('0x71'))[_0xfa23('0x32')](_0xfa23('0x72'),_0xf3fbc8[_0xfa23('0x4c')]['id'][_0xfa23('0x69')]()))['where'](_0xfa23('0x6f'),squel['select']()['field']('phone')[_0xfa23('0x6c')]('cm_hopper')['where'](_0xfa23('0x72'),_0xf3fbc8[_0xfa23('0x4c')]['id'][_0xfa23('0x69')]())))[_0xfa23('0x69')]();break;case _0xfa23('0x73'):_0x2c4fb0=squel[_0xfa23('0x61')]()[_0xfa23('0x74')](_0xfa23('0x62'))[_0xfa23('0x63')]([_0xfa23('0x64'),_0xfa23('0x65'),_0xfa23('0x66'),_0xfa23('0x6a'),_0xfa23('0x57'),_0xfa23('0x4e'),_0xfa23('0x4f')],squel[_0xfa23('0x67')]()['field'](_0xfa23('0x64'),'phone')[_0xfa23('0x3a')](_0xfa23('0x6b'),'scheduledAt')[_0xfa23('0x3a')]('id',_0xfa23('0x66'))[_0xfa23('0x3a')](_0x3e791b[_0xfa23('0x68')][_0xfa23('0x69')](),_0xfa23('0x6a'))[_0xfa23('0x3a')](_0xf3fbc8[_0xfa23('0x4c')]['id'][_0xfa23('0x69')](),_0xfa23('0x57'))[_0xfa23('0x3a')](_0xfa23('0x6b'),_0xfa23('0x4e'))['field'](_0xfa23('0x6b'),_0xfa23('0x4f'))[_0xfa23('0x6c')](_0xfa23('0x6d'))[_0xfa23('0x32')](_0xfa23('0x75'))[_0xfa23('0x32')](_0xfa23('0x6e'),_0x3e791b[_0xfa23('0x68')][_0xfa23('0x69')]())['where'](_0xfa23('0x76'))['where'](_0xfa23('0x6f'),squel[_0xfa23('0x67')]()['field'](_0xfa23('0x64'))[_0xfa23('0x6c')](_0xfa23('0x62'))['where'](_0xfa23('0x72'),_0xf3fbc8['params']['id'][_0xfa23('0x69')]())))['toString']();break;default:_0x2c4fb0=squel[_0xfa23('0x61')]()[_0xfa23('0x74')](_0xfa23('0x62'))[_0xfa23('0x63')]([_0xfa23('0x64'),_0xfa23('0x65'),_0xfa23('0x66'),_0xfa23('0x6a'),_0xfa23('0x57'),_0xfa23('0x4e'),_0xfa23('0x4f')],squel['select']()['field'](_0xfa23('0x64'),'phone')['field'](_0xfa23('0x6b'),_0xfa23('0x65'))[_0xfa23('0x3a')]('id',_0xfa23('0x66'))[_0xfa23('0x3a')](_0x3e791b['CmListId']['toString'](),_0xfa23('0x6a'))[_0xfa23('0x3a')](_0xf3fbc8[_0xfa23('0x4c')]['id'][_0xfa23('0x69')](),'CampaignId')['field'](_0xfa23('0x6b'),_0xfa23('0x4e'))['field'](_0xfa23('0x6b'),_0xfa23('0x4f'))[_0xfa23('0x6c')](_0xfa23('0x6d'))[_0xfa23('0x32')](_0xfa23('0x75'))[_0xfa23('0x32')](_0xfa23('0x6e'),_0x3e791b[_0xfa23('0x68')][_0xfa23('0x69')]())[_0xfa23('0x32')](_0xfa23('0x76')))[_0xfa23('0x69')]();}_0x5440a4[_0xfa23('0x77')](db['sequelize']['query'](_0x2c4fb0));}return BPromise[_0xfa23('0x78')](_0x5440a4);}})[_0xfa23('0x1d')](function(){return _0x3bae0b;})[_0xfa23('0x1d')](respondWithResult(_0x861d46,null))[_0xfa23('0x41')](handleError(_0x861d46,null));};exports[_0xfa23('0x79')]=function(_0x13bc27,_0x5ce8d3,_0x1946c6){var _0x1d873c;return db[_0xfa23('0x3c')][_0xfa23('0x43')]({'where':{'id':_0x13bc27[_0xfa23('0x4c')]['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x5ce8d3,null))[_0xfa23('0x1d')](function(_0xad8355){if(_0xad8355){return _0xad8355[_0xfa23('0x79')](_0x13bc27[_0xfa23('0x27')]['ids']);}})[_0xfa23('0x1d')](function(_0x5718bf){if(_0x5718bf){_0x1d873c=_0x5718bf;return db[_0xfa23('0x55')][_0xfa23('0x1c')]({'where':{'ListId':_0x13bc27[_0xfa23('0x27')]['ids'],'CampaignId':_0x13bc27[_0xfa23('0x4c')]['id']}})['then'](function(){return _0x1d873c;});}})[_0xfa23('0x1d')](respondWithStatusCode(_0x5ce8d3,null))['catch'](handleError(_0x5ce8d3,null));};exports[_0xfa23('0x7a')]=function(_0x3e58c4,_0x218205,_0x3dd68b){var _0x25b357={'raw':!![],'where':{}};var _0x97229d={};var _0xa64875={'count':0x0,'rows':[]};return db[_0xfa23('0x3c')][_0xfa23('0x54')]({'where':{'id':_0x3e58c4[_0xfa23('0x4c')]['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x218205,null))[_0xfa23('0x1d')](function(_0x2540ab){if(_0x2540ab){_0x97229d[_0xfa23('0x2a')]=_[_0xfa23('0x25')](db['CmList'][_0xfa23('0x24')]);_0x97229d[_0xfa23('0x27')]=_['keys'](_0x3e58c4['query']);_0x97229d[_0xfa23('0x29')]=_[_0xfa23('0x2c')](_0x97229d[_0xfa23('0x2a')],_0x97229d['query']);_0x25b357[_0xfa23('0x2b')]=_[_0xfa23('0x2c')](_0x97229d[_0xfa23('0x2a')],qs[_0xfa23('0x2d')](_0x3e58c4['query'][_0xfa23('0x2d')]));_0x25b357[_0xfa23('0x2b')]=_0x25b357[_0xfa23('0x2b')][_0xfa23('0x2e')]?_0x25b357[_0xfa23('0x2b')]:_0x97229d[_0xfa23('0x2a')];if(!_0x3e58c4[_0xfa23('0x27')][_0xfa23('0x2f')](_0xfa23('0x30'))){_0x25b357[_0xfa23('0x16')]=qs['limit'](_0x3e58c4[_0xfa23('0x27')][_0xfa23('0x16')]);_0x25b357[_0xfa23('0x15')]=qs['offset'](_0x3e58c4[_0xfa23('0x27')]['offset']);}_0x25b357[_0xfa23('0x56')]=qs[_0xfa23('0x31')](_0x3e58c4[_0xfa23('0x27')][_0xfa23('0x31')]);_0x25b357['where']=qs[_0xfa23('0x29')](_[_0xfa23('0x33')](_0x3e58c4[_0xfa23('0x27')],_0x97229d[_0xfa23('0x29')]));_0x25b357[_0xfa23('0x32')][_0xfa23('0x57')]=_0x2540ab['id'];if(_0x3e58c4[_0xfa23('0x27')][_0xfa23('0x37')]){_0x25b357['where']=_[_0xfa23('0x36')](_0x25b357[_0xfa23('0x32')],{'$or':_['map'](_0x25b357['attributes'],function(_0x54128e){var _0x5a99ea={};_0x5a99ea[_0x54128e]={'$like':'%'+_0x3e58c4[_0xfa23('0x27')][_0xfa23('0x37')]+'%'};return _0x5a99ea;})});}_0x25b357=_[_0xfa23('0x36')]({},_0x25b357,_0x3e58c4[_0xfa23('0x3b')]);return db[_0xfa23('0x7b')][_0xfa23('0x3d')]({'where':_0x25b357[_0xfa23('0x32')]})[_0xfa23('0x1d')](function(_0x1515ab){_0xa64875[_0xfa23('0x3d')]=_0x1515ab;if(_0x3e58c4[_0xfa23('0x27')][_0xfa23('0x42')]){_0x25b357[_0xfa23('0x3e')]=[{'all':!![]}];}return db['CmList'][_0xfa23('0x3f')](_0x25b357);})[_0xfa23('0x1d')](function(_0x49146f){_0xa64875[_0xfa23('0x40')]=_0x49146f;return _0xa64875;});}})[_0xfa23('0x1d')](respondWithFilteredResult(_0x218205,_0x25b357))[_0xfa23('0x41')](handleError(_0x218205,null));};exports[_0xfa23('0x7c')]=function(_0x30f433,_0x399be4,_0x5f48fa){var _0x20e4ba,_0x4bcbbc;return db['Campaign'][_0xfa23('0x43')]({'where':{'id':_0x30f433['params']['id']}})['then'](handleEntityNotFound(_0x399be4,null))[_0xfa23('0x1d')](function(_0x33e6bd){if(_0x33e6bd){_0x4bcbbc=_0x33e6bd;return _0x33e6bd[_0xfa23('0x7c')](_0x30f433[_0xfa23('0x45')]['ids'],_[_0xfa23('0x4d')](_0x30f433[_0xfa23('0x45')],[_0xfa23('0x5f'),'id'])||{});}return null;})['spread'](function(_0x1f7afa){var _0x337441;_0x20e4ba=_0x1f7afa||[];var _0x2d85c4=[];if(_0x1f7afa){for(var _0x2a6c4f=0x0;_0x2a6c4f<_0x1f7afa[_0xfa23('0x2e')];_0x2a6c4f+=0x1){var _0x269731=_0x1f7afa[_0x2a6c4f][_0xfa23('0x49')]({'plain':!![]});_0x337441=squel[_0xfa23('0x61')]()[_0xfa23('0x74')]('cm_hopper_black')[_0xfa23('0x63')](['phone',_0xfa23('0x66'),_0xfa23('0x6a'),_0xfa23('0x57'),_0xfa23('0x4e'),_0xfa23('0x4f')],squel[_0xfa23('0x67')]()['field'](_0xfa23('0x64'),'phone')[_0xfa23('0x3a')]('id','ContactId')[_0xfa23('0x3a')](_0x269731[_0xfa23('0x68')][_0xfa23('0x69')](),_0xfa23('0x6a'))[_0xfa23('0x3a')](_0x30f433[_0xfa23('0x4c')]['id'][_0xfa23('0x69')](),_0xfa23('0x57'))[_0xfa23('0x3a')](_0xfa23('0x6b'),_0xfa23('0x4e'))[_0xfa23('0x3a')]('NOW()',_0xfa23('0x4f'))[_0xfa23('0x6c')](_0xfa23('0x6d'))[_0xfa23('0x32')](_0xfa23('0x75'))[_0xfa23('0x32')]('ListId\x20=\x20?',_0x269731[_0xfa23('0x68')][_0xfa23('0x69')]())[_0xfa23('0x32')]('phone\x20IS\x20NOT\x20NULL'))[_0xfa23('0x69')]();_0x2d85c4[_0xfa23('0x77')](db[_0xfa23('0x7d')][_0xfa23('0x27')](_0x337441));}return BPromise['all'](_0x2d85c4);}})[_0xfa23('0x1d')](function(){return _0x20e4ba;})[_0xfa23('0x1d')](respondWithResult(_0x399be4,null))['catch'](handleError(_0x399be4,null));};exports[_0xfa23('0x7e')]=function(_0x181fd7,_0x56d46a,_0x80f74d){var _0x2e8adb;return db[_0xfa23('0x3c')][_0xfa23('0x43')]({'where':{'id':_0x181fd7[_0xfa23('0x4c')]['id']}})[_0xfa23('0x1d')](handleEntityNotFound(_0x56d46a,null))[_0xfa23('0x1d')](function(_0x561b5b){if(_0x561b5b){return _0x561b5b['removeBlackLists'](_0x181fd7['query'][_0xfa23('0x5f')]);}})[_0xfa23('0x1d')](function(_0x5dabc8){if(_0x5dabc8){_0x2e8adb=_0x5dabc8;return db['CmHopperBlack'][_0xfa23('0x1c')]({'where':{'ListId':_0x181fd7[_0xfa23('0x27')][_0xfa23('0x5f')],'CampaignId':_0x181fd7[_0xfa23('0x4c')]['id']}})[_0xfa23('0x1d')](function(){return _0x2e8adb;});}})[_0xfa23('0x1d')](respondWithStatusCode(_0x56d46a,null))['catch'](handleError(_0x56d46a,null));};
\ No newline at end of file
+var _0x9505=['filter','map','type','key','VIRTUAL','field','includeAll','findAll','rows','catch','show','params','length','include','options','find','create','body','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','getHoppers','findOne','pick','CampaignId','CmHopper','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','ids','dialCheckDuplicateType','always','into','fromQuery','phone','scheduledAt','ContactId','ListId','select','NOW()','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','CampaignId\x20=\x20?','from','cm_hopper','onlyIfOpen','insert','CmListId','push','sequelize','all','removeLists','getBlackLists','CmList','addBlackLists','spread','cm_hopper_black','removeBlackLists','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','name','send','index','Campaign','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','add','day','merge'];(function(_0x251cbb,_0x6def1b){var _0x2293c5=function(_0x32f26d){while(--_0x32f26d){_0x251cbb['push'](_0x251cbb['shift']());}};_0x2293c5(++_0x6def1b);}(_0x9505,0x1e5));var _0x5950=function(_0x50a0f0,_0x45f145){_0x50a0f0=_0x50a0f0-0x0;var _0x3eb816=_0x9505[_0x50a0f0];return _0x3eb816;};'use strict';var pdf=require(_0x5950('0x0'));var emlformat=require(_0x5950('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x5950('0x2'));var jsonpatch=require(_0x5950('0x3'));var rp=require(_0x5950('0x4'));var moment=require(_0x5950('0x5'));var BPromise=require(_0x5950('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5950('0x7'));var sox=require(_0x5950('0x8'));var csv=require(_0x5950('0x9'));var ejs=require(_0x5950('0xa'));var fs=require('fs');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('0x9'));var querystring=require(_0x5950('0xe'));var Papa=require(_0x5950('0xf'));var Redis=require(_0x5950('0x10'));var qs=require(_0x5950('0x11'));var logger=require(_0x5950('0x12'))('api');var utils=require(_0x5950('0x13'));var config=require(_0x5950('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a6098,_0x2841ac){_0x2841ac=_0x2841ac||0xcc;return function(_0x1667b2){if(_0x1667b2){return _0x5a6098[_0x5950('0x15')](_0x2841ac);}return _0x5a6098[_0x5950('0x16')](_0x2841ac)[_0x5950('0x17')]();};}function respondWithResult(_0x2bf7ae,_0x17c263){_0x17c263=_0x17c263||0xc8;return function(_0x38d757){if(_0x38d757){return _0x2bf7ae[_0x5950('0x16')](_0x17c263)[_0x5950('0x18')](_0x38d757);}};}function respondWithFilteredResult(_0x40fe84,_0x3ace79){return function(_0xaed862){if(_0xaed862){var _0x3f1b9b=_0xaed862[_0x5950('0x19')],_0x5e9dd5=_0x3ace79[_0x5950('0x1a')],_0xa6c598=_0x3ace79[_0x5950('0x1a')]+_0x3ace79[_0x5950('0x1b')],_0x4ad4d8;if(_0xa6c598>=_0x3f1b9b){_0xa6c598=_0x3f1b9b;_0x4ad4d8=0xc8;}else{_0x4ad4d8=0xce;}_0x40fe84['status'](_0x4ad4d8);return _0x40fe84['set'](_0x5950('0x1c'),_0x5e9dd5+'-'+_0xa6c598+'/'+_0x3f1b9b)[_0x5950('0x18')](_0xaed862);}return null;};}function patchUpdates(_0x3a7821){return function(_0x5a9530){try{jsonpatch[_0x5950('0x1d')](_0x5a9530,_0x3a7821,!![]);}catch(_0x483aaf){return BPromise['reject'](_0x483aaf);}return _0x5a9530[_0x5950('0x1e')]();};}function saveUpdates(_0x2ada72,_0x1ad343){return function(_0x5bd90e){if(_0x5bd90e){return _0x5bd90e[_0x5950('0x1f')](_0x2ada72)[_0x5950('0x20')](function(_0x4aa0c2){return _0x4aa0c2;});}return null;};}function removeEntity(_0x521018,_0x53fdfe){return function(_0x4af433){if(_0x4af433){return _0x4af433[_0x5950('0x21')]()[_0x5950('0x20')](function(){var _0x66c416=_0x4af433[_0x5950('0x22')]({'plain':!![]});var _0x5e2c98=_0x5950('0x23');return db[_0x5950('0x24')][_0x5950('0x21')]({'where':{'type':_0x5e2c98,'resourceId':_0x66c416['id']}})[_0x5950('0x20')](function(){return _0x4af433;});})[_0x5950('0x20')](function(){_0x521018[_0x5950('0x16')](0xcc)[_0x5950('0x17')]();});}};}function handleEntityNotFound(_0x4b64a2,_0x4d9317){return function(_0x1b2265){if(!_0x1b2265){_0x4b64a2[_0x5950('0x15')](0x194);}return _0x1b2265;};}function handleError(_0x545354,_0xfa0238){_0xfa0238=_0xfa0238||0x1f4;return function(_0x128241){logger['error'](_0x128241['stack']);if(_0x128241['name']){delete _0x128241[_0x5950('0x25')];}_0x545354[_0x5950('0x16')](_0xfa0238)[_0x5950('0x26')](_0x128241);};}exports[_0x5950('0x27')]=function(_0x3923dd,_0x170084){var _0x2ff8a3={},_0x2dfd08={},_0x179b24={'count':0x0,'rows':[]};var _0x3a3cc0=db[_0x5950('0x28')][_0x5950('0x29')];_0x2dfd08[_0x5950('0x2a')]=_[_0x5950('0x2b')](_0x3a3cc0);var _0x1670ae={'dateStart':_0x3923dd[_0x5950('0x2c')][_0x5950('0x2d')],'dateEnd':_0x3923dd[_0x5950('0x2c')][_0x5950('0x2e')]};delete _0x3923dd[_0x5950('0x2c')][_0x5950('0x2d')];delete _0x3923dd[_0x5950('0x2c')][_0x5950('0x2e')];_0x2dfd08[_0x5950('0x2c')]=_[_0x5950('0x2b')](_0x3923dd[_0x5950('0x2c')]);_0x2dfd08[_0x5950('0x2f')]=_[_0x5950('0x30')](_0x2dfd08['model'],_0x2dfd08[_0x5950('0x2c')]);_0x2ff8a3[_0x5950('0x31')]=_[_0x5950('0x30')](_0x2dfd08[_0x5950('0x2a')],qs[_0x5950('0x32')](_0x3923dd['query']['fields']));_0x2ff8a3[_0x5950('0x31')]=_0x2ff8a3[_0x5950('0x31')]['length']?_0x2ff8a3[_0x5950('0x31')]:_0x2dfd08['model'];if(!_0x3923dd[_0x5950('0x2c')][_0x5950('0x33')](_0x5950('0x34'))){_0x2ff8a3['limit']=qs[_0x5950('0x1b')](_0x3923dd['query'][_0x5950('0x1b')]);_0x2ff8a3[_0x5950('0x1a')]=qs[_0x5950('0x1a')](_0x3923dd[_0x5950('0x2c')]['offset']);}_0x2ff8a3[_0x5950('0x35')]=qs[_0x5950('0x36')](_0x3923dd[_0x5950('0x2c')]['sort']);_0x2ff8a3[_0x5950('0x37')]=qs[_0x5950('0x2f')](_['pick'](_0x3923dd['query'],_0x2dfd08['filters']));if(_0x1670ae[_0x5950('0x2d')]){if(_0x1670ae[_0x5950('0x2e')]){_0x1670ae[_0x5950('0x2e')]=moment(_0x1670ae[_0x5950('0x2e')])[_0x5950('0x38')](0x1,'day');}else{_0x1670ae['dateEnd']=moment(_0x1670ae['dateStart'])['add'](0x1,_0x5950('0x39'));}_[_0x5950('0x3a')](_0x2ff8a3[_0x5950('0x37')],{'createdAt':{'$gte':_0x1670ae[_0x5950('0x2d')],'$lte':_0x1670ae['dateEnd']}});}if(_0x3923dd[_0x5950('0x2c')][_0x5950('0x3b')]){_0x2ff8a3['where']=_[_0x5950('0x3a')](_0x2ff8a3[_0x5950('0x37')],{'$or':_[_0x5950('0x3c')](_0x3a3cc0,function(_0x2c4bf3){if(_0x2c4bf3[_0x5950('0x3d')][_0x5950('0x3e')]!==_0x5950('0x3f')){var _0x48eba5={};_0x48eba5[_0x2c4bf3[_0x5950('0x40')]]={'$like':'%'+_0x3923dd['query'][_0x5950('0x3b')]+'%'};return _0x48eba5;}})});}_0x2ff8a3=_[_0x5950('0x3a')]({},_0x2ff8a3,_0x3923dd['options']);var _0x319fe5={'where':_0x2ff8a3[_0x5950('0x37')]};return db[_0x5950('0x28')][_0x5950('0x19')](_0x319fe5)['then'](function(_0x18d31f){_0x179b24[_0x5950('0x19')]=_0x18d31f;if(_0x3923dd[_0x5950('0x2c')][_0x5950('0x41')]){_0x2ff8a3['include']=[{'all':!![]}];}return db[_0x5950('0x28')][_0x5950('0x42')](_0x2ff8a3);})[_0x5950('0x20')](function(_0x514c85){_0x179b24[_0x5950('0x43')]=_0x514c85;return _0x179b24;})['then'](respondWithFilteredResult(_0x170084,_0x2ff8a3))[_0x5950('0x44')](handleError(_0x170084,null));};exports[_0x5950('0x45')]=function(_0xbfcd95,_0x1cca0e){var _0x391a01={'raw':![],'where':{'id':_0xbfcd95[_0x5950('0x46')]['id']}},_0x3d5094={};_0x3d5094['model']=_[_0x5950('0x2b')](db[_0x5950('0x28')][_0x5950('0x29')]);_0x3d5094[_0x5950('0x2c')]=_[_0x5950('0x2b')](_0xbfcd95['query']);_0x3d5094['filters']=_[_0x5950('0x30')](_0x3d5094[_0x5950('0x2a')],_0x3d5094[_0x5950('0x2c')]);_0x391a01['attributes']=_[_0x5950('0x30')](_0x3d5094[_0x5950('0x2a')],qs[_0x5950('0x32')](_0xbfcd95['query']['fields']));_0x391a01['attributes']=_0x391a01[_0x5950('0x31')][_0x5950('0x47')]?_0x391a01[_0x5950('0x31')]:_0x3d5094[_0x5950('0x2a')];if(_0xbfcd95[_0x5950('0x2c')][_0x5950('0x41')]){_0x391a01[_0x5950('0x48')]=[{'all':!![]}];}_0x391a01=_[_0x5950('0x3a')]({},_0x391a01,_0xbfcd95[_0x5950('0x49')]);return db['Campaign'][_0x5950('0x4a')](_0x391a01)[_0x5950('0x20')](handleEntityNotFound(_0x1cca0e,null))[_0x5950('0x20')](respondWithResult(_0x1cca0e,null))[_0x5950('0x44')](handleError(_0x1cca0e,null));};exports[_0x5950('0x4b')]=function(_0xf4c16b,_0x28e4c7){return db[_0x5950('0x28')][_0x5950('0x4b')](_0xf4c16b[_0x5950('0x4c')],{})['then'](function(_0x5aaa8){var _0x168829=_0xf4c16b[_0x5950('0x4d')][_0x5950('0x22')]({'plain':!![]});if(!_0x168829)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x168829['role']===_0x5950('0x4d')){var _0x3a596b=_0x5aaa8['get']({'plain':!![]});var _0x2aff57=_0x5950('0x23');return db[_0x5950('0x4e')][_0x5950('0x4a')]({'where':{'name':_0x2aff57,'userProfileId':_0x168829[_0x5950('0x4f')]},'raw':!![]})[_0x5950('0x20')](function(_0x4ed038){if(_0x4ed038&&_0x4ed038[_0x5950('0x50')]===0x0){return db[_0x5950('0x24')]['create']({'name':_0x3a596b[_0x5950('0x25')],'resourceId':_0x3a596b['id'],'type':_0x4ed038[_0x5950('0x25')],'sectionId':_0x4ed038['id']},{})[_0x5950('0x20')](function(){return _0x5aaa8;});}else{return _0x5aaa8;}})['catch'](function(_0x58b98a){logger[_0x5950('0x51')](_0x5950('0x52'),_0x58b98a);throw _0x58b98a;});}return _0x5aaa8;})[_0x5950('0x20')](respondWithResult(_0x28e4c7,0xc9))[_0x5950('0x44')](handleError(_0x28e4c7,null));};exports[_0x5950('0x53')]=function(_0xb71095,_0x2f824e){var _0xcad9ef={'raw':![],'where':{'id':_0xb71095[_0x5950('0x46')]['id']}},_0x4e34b4={};_0x4e34b4[_0x5950('0x2a')]=_[_0x5950('0x2b')](db[_0x5950('0x28')][_0x5950('0x29')]);_0xcad9ef[_0x5950('0x31')]=_[_0x5950('0x30')](_0x4e34b4['model'],qs[_0x5950('0x32')](_0xb71095['query'][_0x5950('0x32')]));_0xcad9ef['attributes']=_0xcad9ef[_0x5950('0x31')][_0x5950('0x47')]?_0xcad9ef['attributes']:_0x4e34b4[_0x5950('0x2a')];if(_0xb71095['query'][_0x5950('0x41')]){_0xcad9ef[_0x5950('0x48')]=[{'all':!![]}];}_0xcad9ef=_['merge']({},_0xcad9ef,_0xb71095['options']);return db[_0x5950('0x28')][_0x5950('0x4a')](_0xcad9ef)[_0x5950('0x20')](handleEntityNotFound(_0x2f824e,null))[_0x5950('0x20')](function(_0x3468cb){if(_0x3468cb){var _0x2ae261=_0x3468cb[_0x5950('0x22')]({'plain':!![]});_0x2ae261=qs[_0x5950('0x54')](_0x2ae261,['id','createdAt','updatedAt']);_0xb71095[_0x5950('0x4c')]=_['omit'](_0xb71095[_0x5950('0x4c')],['id',_0x5950('0x55'),_0x5950('0x56')]);return db[_0x5950('0x28')][_0x5950('0x4b')](_['merge'](_0x2ae261,_0xb71095[_0x5950('0x4c')]),{'include':_0xb71095[_0x5950('0x2c')][_0x5950('0x41')]?[{'all':!![]}]:undefined})['then'](function(_0x550078){var _0x3a658a=_0xb71095['user'][_0x5950('0x22')]({'plain':!![]});if(!_0x3a658a)throw new Error(_0x5950('0x57'));if(_0x3a658a['role']===_0x5950('0x4d')){var _0x1a2792=_0x550078[_0x5950('0x22')]({'plain':!![]});var _0x1740cd=_0x5950('0x23');return db[_0x5950('0x4e')]['find']({'where':{'name':_0x1740cd,'userProfileId':_0x3a658a[_0x5950('0x4f')]},'raw':!![]})[_0x5950('0x20')](function(_0x84770e){if(_0x84770e&&_0x84770e['autoAssociation']===0x0){return db['UserProfileResource'][_0x5950('0x4b')]({'name':_0x1a2792[_0x5950('0x25')],'resourceId':_0x1a2792['id'],'type':_0x84770e[_0x5950('0x25')],'sectionId':_0x84770e['id']},{})[_0x5950('0x20')](function(){return _0x550078;});}else{return _0x550078;}})[_0x5950('0x44')](function(_0x245738){logger['error'](_0x5950('0x52'),_0x245738);throw _0x245738;});}return _0x550078;});}})[_0x5950('0x20')](respondWithResult(_0x2f824e,0xc9))[_0x5950('0x44')](handleError(_0x2f824e,null));};exports[_0x5950('0x1f')]=function(_0x5f036e,_0x1a760a){if(_0x5f036e[_0x5950('0x4c')]['id']){delete _0x5f036e['body']['id'];}return db[_0x5950('0x28')]['find']({'where':{'id':_0x5f036e[_0x5950('0x46')]['id']}})['then'](handleEntityNotFound(_0x1a760a,null))[_0x5950('0x20')](saveUpdates(_0x5f036e[_0x5950('0x4c')],null))['then'](respondWithResult(_0x1a760a,null))[_0x5950('0x44')](handleError(_0x1a760a,null));};exports[_0x5950('0x21')]=function(_0x2ed236,_0x5738b5){return db[_0x5950('0x28')][_0x5950('0x4a')]({'where':{'id':_0x2ed236[_0x5950('0x46')]['id']}})[_0x5950('0x20')](handleEntityNotFound(_0x5738b5,null))[_0x5950('0x20')](removeEntity(_0x5738b5,null))[_0x5950('0x44')](handleError(_0x5738b5,null));};exports[_0x5950('0x58')]=function(_0x192dbc,_0x58ba24,_0x4217e9){var _0x21529d={'raw':!![],'where':{}};var _0x44adf3={};var _0x3e8303={'count':0x0,'rows':[]};return db['Campaign'][_0x5950('0x59')]({'where':{'id':_0x192dbc[_0x5950('0x46')]['id']}})[_0x5950('0x20')](handleEntityNotFound(_0x58ba24,null))[_0x5950('0x20')](function(_0x5a7f13){if(_0x5a7f13){_0x44adf3['model']=_[_0x5950('0x2b')](db['CmHopper'][_0x5950('0x29')]);_0x44adf3[_0x5950('0x2c')]=_[_0x5950('0x2b')](_0x192dbc[_0x5950('0x2c')]);_0x44adf3[_0x5950('0x2f')]=_['intersection'](_0x44adf3[_0x5950('0x2a')],_0x44adf3[_0x5950('0x2c')]);_0x21529d['attributes']=_['intersection'](_0x44adf3[_0x5950('0x2a')],qs[_0x5950('0x32')](_0x192dbc[_0x5950('0x2c')][_0x5950('0x32')]));_0x21529d[_0x5950('0x31')]=_0x21529d['attributes'][_0x5950('0x47')]?_0x21529d[_0x5950('0x31')]:_0x44adf3[_0x5950('0x2a')];if(!_0x192dbc[_0x5950('0x2c')][_0x5950('0x33')](_0x5950('0x34'))){_0x21529d[_0x5950('0x1b')]=qs[_0x5950('0x1b')](_0x192dbc['query']['limit']);_0x21529d[_0x5950('0x1a')]=qs[_0x5950('0x1a')](_0x192dbc[_0x5950('0x2c')][_0x5950('0x1a')]);}_0x21529d[_0x5950('0x35')]=qs['sort'](_0x192dbc['query'][_0x5950('0x36')]);_0x21529d[_0x5950('0x37')]=qs['filters'](_[_0x5950('0x5a')](_0x192dbc[_0x5950('0x2c')],_0x44adf3[_0x5950('0x2f')]));_0x21529d[_0x5950('0x37')][_0x5950('0x5b')]=_0x5a7f13['id'];if(_0x192dbc['query'][_0x5950('0x3b')]){_0x21529d['where']=_['merge'](_0x21529d[_0x5950('0x37')],{'$or':_[_0x5950('0x3c')](_0x21529d[_0x5950('0x31')],function(_0x51c557){var _0x26b518={};_0x26b518[_0x51c557]={'$like':'%'+_0x192dbc[_0x5950('0x2c')][_0x5950('0x3b')]+'%'};return _0x26b518;})});}_0x21529d=_['merge']({},_0x21529d,_0x192dbc[_0x5950('0x49')]);return db[_0x5950('0x5c')][_0x5950('0x19')]({'where':_0x21529d[_0x5950('0x37')]})[_0x5950('0x20')](function(_0x1ed845){_0x3e8303[_0x5950('0x19')]=_0x1ed845;if(_0x192dbc[_0x5950('0x2c')]['includeAll']){_0x21529d[_0x5950('0x48')]=[{'all':!![]}];}return db['CmHopper'][_0x5950('0x42')](_0x21529d);})[_0x5950('0x20')](function(_0x3c100d){_0x3e8303[_0x5950('0x43')]=_0x3c100d;return _0x3e8303;});}})[_0x5950('0x20')](respondWithFilteredResult(_0x58ba24,_0x21529d))[_0x5950('0x44')](handleError(_0x58ba24,null));};exports[_0x5950('0x5d')]=function(_0x56282a,_0x4796bf,_0x705afc){var _0x305172={'raw':!![],'where':{}};var _0x46d974={};var _0x4942d2={'count':0x0,'rows':[]};return db[_0x5950('0x28')][_0x5950('0x59')]({'where':{'id':_0x56282a['params']['id']}})['then'](handleEntityNotFound(_0x4796bf,null))[_0x5950('0x20')](function(_0x39189a){if(_0x39189a){_0x46d974[_0x5950('0x2a')]=_[_0x5950('0x2b')](db[_0x5950('0x5e')]['rawAttributes']);_0x46d974['query']=_[_0x5950('0x2b')](_0x56282a['query']);_0x46d974[_0x5950('0x2f')]=_['intersection'](_0x46d974['model'],_0x46d974[_0x5950('0x2c')]);_0x305172['attributes']=_[_0x5950('0x30')](_0x46d974['model'],qs[_0x5950('0x32')](_0x56282a['query'][_0x5950('0x32')]));_0x305172[_0x5950('0x31')]=_0x305172[_0x5950('0x31')][_0x5950('0x47')]?_0x305172['attributes']:_0x46d974[_0x5950('0x2a')];if(!_0x56282a[_0x5950('0x2c')]['hasOwnProperty'](_0x5950('0x34'))){_0x305172['limit']=qs[_0x5950('0x1b')](_0x56282a[_0x5950('0x2c')]['limit']);_0x305172[_0x5950('0x1a')]=qs['offset'](_0x56282a['query']['offset']);}_0x305172[_0x5950('0x35')]=qs[_0x5950('0x36')](_0x56282a[_0x5950('0x2c')][_0x5950('0x36')]);_0x305172[_0x5950('0x37')]=qs[_0x5950('0x2f')](_['pick'](_0x56282a['query'],_0x46d974[_0x5950('0x2f')]));_0x305172['where'][_0x5950('0x5b')]=_0x39189a['id'];if(_0x56282a['query'][_0x5950('0x3b')]){_0x305172[_0x5950('0x37')]=_[_0x5950('0x3a')](_0x305172['where'],{'$or':_[_0x5950('0x3c')](_0x305172[_0x5950('0x31')],function(_0x15534a){var _0x4ae727={};_0x4ae727[_0x15534a]={'$like':'%'+_0x56282a[_0x5950('0x2c')]['filter']+'%'};return _0x4ae727;})});}_0x305172=_[_0x5950('0x3a')]({},_0x305172,_0x56282a[_0x5950('0x49')]);return db[_0x5950('0x5e')][_0x5950('0x19')]({'where':_0x305172['where']})['then'](function(_0x2045f7){_0x4942d2[_0x5950('0x19')]=_0x2045f7;if(_0x56282a[_0x5950('0x2c')][_0x5950('0x41')]){_0x305172[_0x5950('0x48')]=[{'all':!![]}];}return db[_0x5950('0x5e')]['findAll'](_0x305172);})['then'](function(_0x24a802){_0x4942d2[_0x5950('0x43')]=_0x24a802;return _0x4942d2;});}})['then'](respondWithFilteredResult(_0x4796bf,_0x305172))[_0x5950('0x44')](handleError(_0x4796bf,null));};exports[_0x5950('0x5f')]=function(_0x38ffea,_0x36c841,_0xc5de0d){var _0x1015a0={'raw':!![],'where':{}};var _0x2ac5c4={};var _0x15ff36={'count':0x0,'rows':[]};return db['Campaign'][_0x5950('0x59')]({'where':{'id':_0x38ffea[_0x5950('0x46')]['id']}})['then'](handleEntityNotFound(_0x36c841,null))['then'](function(_0x24f8c4){if(_0x24f8c4){_0x2ac5c4['model']=_[_0x5950('0x2b')](db[_0x5950('0x60')][_0x5950('0x29')]);_0x2ac5c4[_0x5950('0x2c')]=_['keys'](_0x38ffea[_0x5950('0x2c')]);_0x2ac5c4[_0x5950('0x2f')]=_['intersection'](_0x2ac5c4[_0x5950('0x2a')],_0x2ac5c4[_0x5950('0x2c')]);_0x1015a0['attributes']=_['intersection'](_0x2ac5c4[_0x5950('0x2a')],qs[_0x5950('0x32')](_0x38ffea[_0x5950('0x2c')][_0x5950('0x32')]));_0x1015a0['attributes']=_0x1015a0[_0x5950('0x31')]['length']?_0x1015a0[_0x5950('0x31')]:_0x2ac5c4['model'];if(!_0x38ffea[_0x5950('0x2c')]['hasOwnProperty'](_0x5950('0x34'))){_0x1015a0[_0x5950('0x1b')]=qs[_0x5950('0x1b')](_0x38ffea[_0x5950('0x2c')][_0x5950('0x1b')]);_0x1015a0['offset']=qs[_0x5950('0x1a')](_0x38ffea['query'][_0x5950('0x1a')]);}_0x1015a0[_0x5950('0x35')]=qs[_0x5950('0x36')](_0x38ffea[_0x5950('0x2c')][_0x5950('0x36')]);_0x1015a0[_0x5950('0x37')]=qs[_0x5950('0x2f')](_[_0x5950('0x5a')](_0x38ffea[_0x5950('0x2c')],_0x2ac5c4['filters']));_0x1015a0[_0x5950('0x37')][_0x5950('0x5b')]=_0x24f8c4['id'];if(_0x38ffea['query']['filter']){_0x1015a0['where']=_[_0x5950('0x3a')](_0x1015a0[_0x5950('0x37')],{'$or':_[_0x5950('0x3c')](_0x1015a0[_0x5950('0x31')],function(_0x586d5d){var _0x4e8fec={};_0x4e8fec[_0x586d5d]={'$like':'%'+_0x38ffea['query'][_0x5950('0x3b')]+'%'};return _0x4e8fec;})});}_0x1015a0=_['merge']({},_0x1015a0,_0x38ffea['options']);return db[_0x5950('0x60')][_0x5950('0x19')]({'where':_0x1015a0[_0x5950('0x37')]})['then'](function(_0x1c91b9){_0x15ff36[_0x5950('0x19')]=_0x1c91b9;if(_0x38ffea['query'][_0x5950('0x41')]){_0x1015a0[_0x5950('0x48')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x5950('0x42')](_0x1015a0);})['then'](function(_0x1b9dcd){_0x15ff36[_0x5950('0x43')]=_0x1b9dcd;return _0x15ff36;});}})[_0x5950('0x20')](respondWithFilteredResult(_0x36c841,_0x1015a0))[_0x5950('0x44')](handleError(_0x36c841,null));};exports[_0x5950('0x61')]=function(_0x44ab55,_0xa17433,_0x4e1270){var _0x1f1faa={'raw':!![],'where':{}};var _0x1d5122={};var _0x5aeb0c={'count':0x0,'rows':[]};return db[_0x5950('0x28')][_0x5950('0x59')]({'where':{'id':_0x44ab55[_0x5950('0x46')]['id']}})[_0x5950('0x20')](handleEntityNotFound(_0xa17433,null))['then'](function(_0xf3ce8a){if(_0xf3ce8a){_0x1d5122[_0x5950('0x2a')]=_[_0x5950('0x2b')](db[_0x5950('0x62')][_0x5950('0x29')]);_0x1d5122[_0x5950('0x2c')]=_[_0x5950('0x2b')](_0x44ab55[_0x5950('0x2c')]);_0x1d5122[_0x5950('0x2f')]=_[_0x5950('0x30')](_0x1d5122[_0x5950('0x2a')],_0x1d5122[_0x5950('0x2c')]);_0x1f1faa['attributes']=_[_0x5950('0x30')](_0x1d5122[_0x5950('0x2a')],qs[_0x5950('0x32')](_0x44ab55[_0x5950('0x2c')][_0x5950('0x32')]));_0x1f1faa[_0x5950('0x31')]=_0x1f1faa[_0x5950('0x31')][_0x5950('0x47')]?_0x1f1faa[_0x5950('0x31')]:_0x1d5122[_0x5950('0x2a')];if(!_0x44ab55[_0x5950('0x2c')][_0x5950('0x33')]('nolimit')){_0x1f1faa[_0x5950('0x1b')]=qs[_0x5950('0x1b')](_0x44ab55[_0x5950('0x2c')][_0x5950('0x1b')]);_0x1f1faa[_0x5950('0x1a')]=qs[_0x5950('0x1a')](_0x44ab55[_0x5950('0x2c')][_0x5950('0x1a')]);}_0x1f1faa[_0x5950('0x35')]=qs['sort'](_0x44ab55[_0x5950('0x2c')][_0x5950('0x36')]);_0x1f1faa[_0x5950('0x37')]=qs[_0x5950('0x2f')](_[_0x5950('0x5a')](_0x44ab55['query'],_0x1d5122[_0x5950('0x2f')]));_0x1f1faa[_0x5950('0x37')][_0x5950('0x5b')]=_0xf3ce8a['id'];if(_0x44ab55['query']['filter']){_0x1f1faa['where']=_[_0x5950('0x3a')](_0x1f1faa['where'],{'$or':_[_0x5950('0x3c')](_0x1f1faa[_0x5950('0x31')],function(_0x3ca708){var _0x9468fd={};_0x9468fd[_0x3ca708]={'$like':'%'+_0x44ab55['query'][_0x5950('0x3b')]+'%'};return _0x9468fd;})});}_0x1f1faa=_[_0x5950('0x3a')]({},_0x1f1faa,_0x44ab55[_0x5950('0x49')]);return db[_0x5950('0x62')]['count']({'where':_0x1f1faa[_0x5950('0x37')]})[_0x5950('0x20')](function(_0xeddce5){_0x5aeb0c[_0x5950('0x19')]=_0xeddce5;if(_0x44ab55[_0x5950('0x2c')][_0x5950('0x41')]){_0x1f1faa['include']=[{'all':!![]}];}return db['CmHopperBlack'][_0x5950('0x42')](_0x1f1faa);})[_0x5950('0x20')](function(_0xbf168f){_0x5aeb0c['rows']=_0xbf168f;return _0x5aeb0c;});}})['then'](respondWithFilteredResult(_0xa17433,_0x1f1faa))['catch'](handleError(_0xa17433,null));};exports[_0x5950('0x63')]=function(_0x31a32e,_0x34ebf4,_0x4810c5){var _0x126230={};var _0x27c627={};var _0x5578a0;var _0x17419f;return db[_0x5950('0x28')][_0x5950('0x59')]({'where':{'id':_0x31a32e[_0x5950('0x46')]['id']}})['then'](handleEntityNotFound(_0x34ebf4,null))['then'](function(_0x105270){if(_0x105270){_0x5578a0=_0x105270;_0x27c627[_0x5950('0x2a')]=_[_0x5950('0x2b')](db['CmList']['rawAttributes']);_0x27c627[_0x5950('0x2c')]=_[_0x5950('0x2b')](_0x31a32e[_0x5950('0x2c')]);_0x27c627['filters']=_[_0x5950('0x30')](_0x27c627[_0x5950('0x2a')],_0x27c627['query']);_0x126230['attributes']=_[_0x5950('0x30')](_0x27c627[_0x5950('0x2a')],qs[_0x5950('0x32')](_0x31a32e[_0x5950('0x2c')][_0x5950('0x32')]));_0x126230[_0x5950('0x31')]=_0x126230[_0x5950('0x31')][_0x5950('0x47')]?_0x126230[_0x5950('0x31')]:_0x27c627[_0x5950('0x2a')];_0x126230[_0x5950('0x35')]=qs[_0x5950('0x36')](_0x31a32e[_0x5950('0x2c')][_0x5950('0x36')]);_0x126230[_0x5950('0x37')]=qs[_0x5950('0x2f')](_[_0x5950('0x5a')](_0x31a32e[_0x5950('0x2c')],_0x27c627[_0x5950('0x2f')]));if(_0x31a32e['query'][_0x5950('0x3b')]){_0x126230[_0x5950('0x37')]=_[_0x5950('0x3a')](_0x126230[_0x5950('0x37')],{'$or':_[_0x5950('0x3c')](_0x126230[_0x5950('0x31')],function(_0x352255){var _0x1e2c08={};_0x1e2c08[_0x352255]={'$like':'%'+_0x31a32e['query']['filter']+'%'};return _0x1e2c08;})});}_0x126230=_[_0x5950('0x3a')]({},_0x126230,_0x31a32e['options']);return _0x5578a0[_0x5950('0x63')](_0x126230);}})[_0x5950('0x20')](function(_0x1cf0cd){if(_0x1cf0cd){_0x17419f=_0x1cf0cd[_0x5950('0x47')];if(!_0x31a32e[_0x5950('0x2c')][_0x5950('0x33')](_0x5950('0x34'))){_0x126230[_0x5950('0x1b')]=qs[_0x5950('0x1b')](_0x31a32e[_0x5950('0x2c')][_0x5950('0x1b')]);_0x126230[_0x5950('0x1a')]=qs[_0x5950('0x1a')](_0x31a32e['query'][_0x5950('0x1a')]);}return _0x5578a0[_0x5950('0x63')](_0x126230);}})[_0x5950('0x20')](function(_0x2f5f1d){if(_0x2f5f1d){return _0x2f5f1d?{'count':_0x17419f,'rows':_0x2f5f1d}:null;}})['then'](respondWithResult(_0x34ebf4,null))[_0x5950('0x44')](handleError(_0x34ebf4,null));};exports[_0x5950('0x64')]=function(_0x1de1bf,_0x318ebb,_0x4b0609){var _0x4ab97e,_0x388222;return db[_0x5950('0x28')][_0x5950('0x4a')]({'where':{'id':_0x1de1bf[_0x5950('0x46')]['id']}})[_0x5950('0x20')](handleEntityNotFound(_0x318ebb,null))[_0x5950('0x20')](function(_0x313630){if(_0x313630){_0x388222=_0x313630;return _0x313630[_0x5950('0x64')](_0x1de1bf[_0x5950('0x4c')][_0x5950('0x65')],_[_0x5950('0x54')](_0x1de1bf[_0x5950('0x4c')],[_0x5950('0x65'),'id'])||{});}return null;})['spread'](function(_0x8181f7){var _0x27f990;_0x4ab97e=_0x8181f7||[];var _0xbacda6=[];if(_0x8181f7){for(var _0x39aaa0=0x0;_0x39aaa0<_0x8181f7[_0x5950('0x47')];_0x39aaa0+=0x1){var _0x388437=_0x8181f7[_0x39aaa0][_0x5950('0x22')]({'plain':!![]});_0x388222[_0x5950('0x66')]=_0x1de1bf[_0x5950('0x4c')]['dialCheckDuplicateType']?_0x1de1bf[_0x5950('0x4c')][_0x5950('0x66')]:_0x388222[_0x5950('0x66')];switch(_0x388222[_0x5950('0x66')]){case _0x5950('0x67'):_0x27f990=squel['insert']()[_0x5950('0x68')]('cm_hopper')[_0x5950('0x69')]([_0x5950('0x6a'),_0x5950('0x6b'),_0x5950('0x6c'),_0x5950('0x6d'),'CampaignId','createdAt',_0x5950('0x56')],squel[_0x5950('0x6e')]()[_0x5950('0x40')](_0x5950('0x6a'),_0x5950('0x6a'))[_0x5950('0x40')](_0x5950('0x6f'),_0x5950('0x6b'))[_0x5950('0x40')]('id',_0x5950('0x6c'))[_0x5950('0x40')](_0x388437['CmListId'][_0x5950('0x70')](),_0x5950('0x6d'))['field'](_0x1de1bf['params']['id'][_0x5950('0x70')](),_0x5950('0x5b'))[_0x5950('0x40')](_0x5950('0x6f'),_0x5950('0x55'))[_0x5950('0x40')](_0x5950('0x6f'),_0x5950('0x56'))['from'](_0x5950('0x71'))[_0x5950('0x37')](_0x5950('0x72'))[_0x5950('0x37')](_0x5950('0x73'),_0x388437['CmListId'][_0x5950('0x70')]())['where'](_0x5950('0x74'))['where'](_0x5950('0x75'),squel[_0x5950('0x6e')]()[_0x5950('0x40')](_0x5950('0x76'))['from'](_0x5950('0x77'))[_0x5950('0x37')](_0x5950('0x78'),_0x1de1bf[_0x5950('0x46')]['id'][_0x5950('0x70')]()))[_0x5950('0x37')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0x5950('0x6a'))[_0x5950('0x79')](_0x5950('0x7a'))[_0x5950('0x37')]('CampaignId\x20=\x20?',_0x1de1bf[_0x5950('0x46')]['id']['toString']())))[_0x5950('0x70')]();break;case _0x5950('0x7b'):_0x27f990=squel[_0x5950('0x7c')]()[_0x5950('0x68')](_0x5950('0x7a'))[_0x5950('0x69')]([_0x5950('0x6a'),_0x5950('0x6b'),_0x5950('0x6c'),'ListId',_0x5950('0x5b'),_0x5950('0x55'),_0x5950('0x56')],squel[_0x5950('0x6e')]()['field'](_0x5950('0x6a'),_0x5950('0x6a'))[_0x5950('0x40')](_0x5950('0x6f'),_0x5950('0x6b'))['field']('id','ContactId')[_0x5950('0x40')](_0x388437[_0x5950('0x7d')]['toString'](),'ListId')[_0x5950('0x40')](_0x1de1bf[_0x5950('0x46')]['id'][_0x5950('0x70')](),'CampaignId')[_0x5950('0x40')]('NOW()',_0x5950('0x55'))['field'](_0x5950('0x6f'),'updatedAt')[_0x5950('0x79')]('cm_contacts')['where'](_0x5950('0x72'))[_0x5950('0x37')]('ListId\x20=\x20?',_0x388437['CmListId']['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0x5950('0x37')](_0x5950('0x75'),squel[_0x5950('0x6e')]()['field']('phone')[_0x5950('0x79')]('cm_hopper')[_0x5950('0x37')](_0x5950('0x78'),_0x1de1bf[_0x5950('0x46')]['id']['toString']())))[_0x5950('0x70')]();break;default:_0x27f990=squel[_0x5950('0x7c')]()[_0x5950('0x68')](_0x5950('0x7a'))[_0x5950('0x69')]([_0x5950('0x6a'),_0x5950('0x6b'),_0x5950('0x6c'),'ListId',_0x5950('0x5b'),_0x5950('0x55'),_0x5950('0x56')],squel[_0x5950('0x6e')]()[_0x5950('0x40')](_0x5950('0x6a'),'phone')[_0x5950('0x40')](_0x5950('0x6f'),_0x5950('0x6b'))[_0x5950('0x40')]('id',_0x5950('0x6c'))[_0x5950('0x40')](_0x388437['CmListId'][_0x5950('0x70')](),_0x5950('0x6d'))[_0x5950('0x40')](_0x1de1bf[_0x5950('0x46')]['id'][_0x5950('0x70')](),_0x5950('0x5b'))[_0x5950('0x40')]('NOW()',_0x5950('0x55'))[_0x5950('0x40')](_0x5950('0x6f'),_0x5950('0x56'))[_0x5950('0x79')]('cm_contacts')[_0x5950('0x37')]('deletedAt\x20IS\x20NULL')[_0x5950('0x37')](_0x5950('0x73'),_0x388437['CmListId'][_0x5950('0x70')]())[_0x5950('0x37')](_0x5950('0x74')))[_0x5950('0x70')]();}_0xbacda6[_0x5950('0x7e')](db[_0x5950('0x7f')][_0x5950('0x2c')](_0x27f990));}return BPromise[_0x5950('0x80')](_0xbacda6);}})[_0x5950('0x20')](function(){return _0x4ab97e;})['then'](respondWithResult(_0x318ebb,null))[_0x5950('0x44')](handleError(_0x318ebb,null));};exports[_0x5950('0x81')]=function(_0x2f52bd,_0x2f0a1e,_0x205abb){var _0x52e7e6;return db['Campaign'][_0x5950('0x4a')]({'where':{'id':_0x2f52bd[_0x5950('0x46')]['id']}})[_0x5950('0x20')](handleEntityNotFound(_0x2f0a1e,null))[_0x5950('0x20')](function(_0x4114c0){if(_0x4114c0){return _0x4114c0[_0x5950('0x81')](_0x2f52bd[_0x5950('0x2c')][_0x5950('0x65')]);}})[_0x5950('0x20')](function(_0x3849e4){if(_0x3849e4){_0x52e7e6=_0x3849e4;return db[_0x5950('0x5c')][_0x5950('0x21')]({'where':{'ListId':_0x2f52bd['query']['ids'],'CampaignId':_0x2f52bd[_0x5950('0x46')]['id']}})[_0x5950('0x20')](function(){return _0x52e7e6;});}})['then'](respondWithStatusCode(_0x2f0a1e,null))[_0x5950('0x44')](handleError(_0x2f0a1e,null));};exports[_0x5950('0x82')]=function(_0x8ee4aa,_0x412bed,_0x31320e){var _0x354f6e={'raw':!![],'where':{}};var _0x4c43ed={};var _0xf9ce4a={'count':0x0,'rows':[]};return db[_0x5950('0x28')][_0x5950('0x59')]({'where':{'id':_0x8ee4aa[_0x5950('0x46')]['id']}})[_0x5950('0x20')](handleEntityNotFound(_0x412bed,null))[_0x5950('0x20')](function(_0x4e21c8){if(_0x4e21c8){_0x4c43ed['model']=_[_0x5950('0x2b')](db[_0x5950('0x83')]['rawAttributes']);_0x4c43ed[_0x5950('0x2c')]=_[_0x5950('0x2b')](_0x8ee4aa[_0x5950('0x2c')]);_0x4c43ed[_0x5950('0x2f')]=_[_0x5950('0x30')](_0x4c43ed[_0x5950('0x2a')],_0x4c43ed[_0x5950('0x2c')]);_0x354f6e[_0x5950('0x31')]=_[_0x5950('0x30')](_0x4c43ed['model'],qs[_0x5950('0x32')](_0x8ee4aa[_0x5950('0x2c')][_0x5950('0x32')]));_0x354f6e[_0x5950('0x31')]=_0x354f6e[_0x5950('0x31')][_0x5950('0x47')]?_0x354f6e['attributes']:_0x4c43ed[_0x5950('0x2a')];if(!_0x8ee4aa[_0x5950('0x2c')][_0x5950('0x33')]('nolimit')){_0x354f6e[_0x5950('0x1b')]=qs[_0x5950('0x1b')](_0x8ee4aa[_0x5950('0x2c')]['limit']);_0x354f6e[_0x5950('0x1a')]=qs[_0x5950('0x1a')](_0x8ee4aa['query'][_0x5950('0x1a')]);}_0x354f6e[_0x5950('0x35')]=qs[_0x5950('0x36')](_0x8ee4aa[_0x5950('0x2c')][_0x5950('0x36')]);_0x354f6e[_0x5950('0x37')]=qs[_0x5950('0x2f')](_['pick'](_0x8ee4aa[_0x5950('0x2c')],_0x4c43ed[_0x5950('0x2f')]));_0x354f6e[_0x5950('0x37')][_0x5950('0x5b')]=_0x4e21c8['id'];if(_0x8ee4aa[_0x5950('0x2c')][_0x5950('0x3b')]){_0x354f6e[_0x5950('0x37')]=_[_0x5950('0x3a')](_0x354f6e['where'],{'$or':_['map'](_0x354f6e['attributes'],function(_0x17ec98){var _0x179229={};_0x179229[_0x17ec98]={'$like':'%'+_0x8ee4aa['query'][_0x5950('0x3b')]+'%'};return _0x179229;})});}_0x354f6e=_[_0x5950('0x3a')]({},_0x354f6e,_0x8ee4aa[_0x5950('0x49')]);return db[_0x5950('0x83')][_0x5950('0x19')]({'where':_0x354f6e[_0x5950('0x37')]})[_0x5950('0x20')](function(_0x1a8e8a){_0xf9ce4a[_0x5950('0x19')]=_0x1a8e8a;if(_0x8ee4aa[_0x5950('0x2c')]['includeAll']){_0x354f6e['include']=[{'all':!![]}];}return db[_0x5950('0x83')][_0x5950('0x42')](_0x354f6e);})['then'](function(_0x7bab23){_0xf9ce4a[_0x5950('0x43')]=_0x7bab23;return _0xf9ce4a;});}})[_0x5950('0x20')](respondWithFilteredResult(_0x412bed,_0x354f6e))[_0x5950('0x44')](handleError(_0x412bed,null));};exports[_0x5950('0x84')]=function(_0x201116,_0x3fe6e1,_0xcfd5d3){var _0x4ddf72,_0xfbef9a;return db[_0x5950('0x28')][_0x5950('0x4a')]({'where':{'id':_0x201116['params']['id']}})[_0x5950('0x20')](handleEntityNotFound(_0x3fe6e1,null))[_0x5950('0x20')](function(_0x57c4e6){if(_0x57c4e6){_0xfbef9a=_0x57c4e6;return _0x57c4e6[_0x5950('0x84')](_0x201116['body'][_0x5950('0x65')],_['omit'](_0x201116['body'],['ids','id'])||{});}return null;})[_0x5950('0x85')](function(_0x20b13a){var _0x4505c2;_0x4ddf72=_0x20b13a||[];var _0x510688=[];if(_0x20b13a){for(var _0x550503=0x0;_0x550503<_0x20b13a[_0x5950('0x47')];_0x550503+=0x1){var _0x572e53=_0x20b13a[_0x550503][_0x5950('0x22')]({'plain':!![]});_0x4505c2=squel[_0x5950('0x7c')]()['into'](_0x5950('0x86'))[_0x5950('0x69')](['phone',_0x5950('0x6c'),_0x5950('0x6d'),_0x5950('0x5b'),_0x5950('0x55'),_0x5950('0x56')],squel[_0x5950('0x6e')]()[_0x5950('0x40')](_0x5950('0x6a'),_0x5950('0x6a'))['field']('id',_0x5950('0x6c'))[_0x5950('0x40')](_0x572e53['CmListId']['toString'](),'ListId')[_0x5950('0x40')](_0x201116[_0x5950('0x46')]['id'][_0x5950('0x70')](),'CampaignId')[_0x5950('0x40')](_0x5950('0x6f'),_0x5950('0x55'))[_0x5950('0x40')](_0x5950('0x6f'),_0x5950('0x56'))[_0x5950('0x79')](_0x5950('0x71'))[_0x5950('0x37')](_0x5950('0x72'))[_0x5950('0x37')]('ListId\x20=\x20?',_0x572e53[_0x5950('0x7d')]['toString']())[_0x5950('0x37')](_0x5950('0x74')))[_0x5950('0x70')]();_0x510688[_0x5950('0x7e')](db['sequelize']['query'](_0x4505c2));}return BPromise[_0x5950('0x80')](_0x510688);}})[_0x5950('0x20')](function(){return _0x4ddf72;})[_0x5950('0x20')](respondWithResult(_0x3fe6e1,null))[_0x5950('0x44')](handleError(_0x3fe6e1,null));};exports[_0x5950('0x87')]=function(_0x1e8f61,_0xf9daa1,_0x550ef1){var _0x377533;return db[_0x5950('0x28')][_0x5950('0x4a')]({'where':{'id':_0x1e8f61['params']['id']}})[_0x5950('0x20')](handleEntityNotFound(_0xf9daa1,null))[_0x5950('0x20')](function(_0xc03b28){if(_0xc03b28){return _0xc03b28[_0x5950('0x87')](_0x1e8f61[_0x5950('0x2c')][_0x5950('0x65')]);}})[_0x5950('0x20')](function(_0x1dcfe3){if(_0x1dcfe3){_0x377533=_0x1dcfe3;return db[_0x5950('0x62')][_0x5950('0x21')]({'where':{'ListId':_0x1e8f61[_0x5950('0x2c')][_0x5950('0x65')],'CampaignId':_0x1e8f61[_0x5950('0x46')]['id']}})[_0x5950('0x20')](function(){return _0x377533;});}})[_0x5950('0x20')](respondWithStatusCode(_0xf9daa1,null))['catch'](handleError(_0xf9daa1,null));};
\ No newline at end of file
index 839a2ba..da263e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc961=['define','campaigns','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x2fba57,_0x266b67){var _0x54ffbf=function(_0x1a9179){while(--_0x1a9179){_0x2fba57['push'](_0x2fba57['shift']());}};_0x54ffbf(++_0x266b67);}(_0xc961,0x17a));var _0x1c96=function(_0x5698a9,_0x4ae7c7){_0x5698a9=_0x5698a9-0x0;var _0x3be696=_0xc961[_0x5698a9];return _0x3be696;};'use strict';var _=require(_0x1c96('0x0'));var util=require(_0x1c96('0x1'));var logger=require(_0x1c96('0x2'))(_0x1c96('0x3'));var moment=require(_0x1c96('0x4'));var BPromise=require(_0x1c96('0x5'));var rp=require('request-promise');var attributes=require('./campaign.attributes');module['exports']=function(_0x30d2e0,_0x494d92){return _0x30d2e0[_0x1c96('0x6')]('Campaign',attributes,{'tableName':_0x1c96('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x13ec=['../../config/logger','api','moment','bluebird','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x5853ec,_0x9127a7){var _0xdb27f7=function(_0x321adb){while(--_0x321adb){_0x5853ec['push'](_0x5853ec['shift']());}};_0xdb27f7(++_0x9127a7);}(_0x13ec,0x15c));var _0xc13e=function(_0xe26ab9,_0x19d0f8){_0xe26ab9=_0xe26ab9-0x0;var _0xda543b=_0x13ec[_0xe26ab9];return _0xda543b;};'use strict';var _=require(_0xc13e('0x0'));var util=require(_0xc13e('0x1'));var logger=require(_0xc13e('0x2'))(_0xc13e('0x3'));var moment=require(_0xc13e('0x4'));var BPromise=require(_0xc13e('0x5'));var rp=require('request-promise');var attributes=require(_0xc13e('0x6'));module[_0xc13e('0x7')]=function(_0xe8c7ad,_0x31b7d8){return _0xe8c7ad['define'](_0xc13e('0x8'),attributes,{'tableName':_0xc13e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b9ea02..a0e2f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x766c=['info','Campaign,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','Campaign','findAll','options','raw','attributes','limit','include','model','map','GetCampaign','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x763644,_0x76e853){var _0x308603=function(_0x5c0486){while(--_0x5c0486){_0x763644['push'](_0x763644['shift']());}};_0x308603(++_0x76e853);}(_0x766c,0x73));var _0xc766=function(_0x2bf14b,_0x409fc8){_0x2bf14b=_0x2bf14b-0x0;var _0x32f2d4=_0x766c[_0x2bf14b];return _0x32f2d4;};'use strict';var _=require('lodash');var util=require(_0xc766('0x0'));var moment=require(_0xc766('0x1'));var BPromise=require(_0xc766('0x2'));var rs=require(_0xc766('0x3'));var fs=require('fs');var Redis=require(_0xc766('0x4'));var db=require(_0xc766('0x5'))['db'];var utils=require(_0xc766('0x6'));var logger=require(_0xc766('0x7'))(_0xc766('0x8'));var config=require(_0xc766('0x9'));var jayson=require(_0xc766('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x20779f,_0x25fcac,_0x584cc5){return new BPromise(function(_0x24c0cd,_0x32bc64){return client[_0xc766('0xb')](_0x20779f,_0x584cc5)[_0xc766('0xc')](function(_0x4c1869){logger[_0xc766('0xd')](_0xc766('0xe'),_0x25fcac,_0xc766('0xf'));logger[_0xc766('0x10')]('Campaign,\x20%s,\x20%s,\x20%s',_0x25fcac,_0xc766('0xf'),JSON[_0xc766('0x11')](_0x4c1869));if(_0x4c1869[_0xc766('0x12')]){if(_0x4c1869[_0xc766('0x12')]['code']===0x1f4){logger[_0xc766('0x12')](_0xc766('0xe'),_0x25fcac,_0x4c1869['error'][_0xc766('0x13')]);return _0x32bc64(_0x4c1869[_0xc766('0x12')][_0xc766('0x13')]);}logger[_0xc766('0x12')]('Campaign,\x20%s,\x20%s',_0x25fcac,_0x4c1869[_0xc766('0x12')]['message']);return _0x24c0cd(_0x4c1869[_0xc766('0x12')][_0xc766('0x13')]);}else{logger[_0xc766('0xd')](_0xc766('0xe'),_0x25fcac,_0xc766('0xf'));_0x24c0cd(_0x4c1869[_0xc766('0x14')][_0xc766('0x13')]);}})[_0xc766('0x15')](function(_0x5c75e3){logger['error'](_0xc766('0xe'),_0x25fcac,_0x5c75e3);_0x32bc64(_0x5c75e3);});});}exports['GetCampaign']=function(_0x11faf6){var _0x5f1d6d=this;return new Promise(function(_0x10e473,_0x33089a){return db[_0xc766('0x16')][_0xc766('0x17')]({'raw':_0x11faf6[_0xc766('0x18')]?_0x11faf6[_0xc766('0x18')][_0xc766('0x19')]===undefined?!![]:![]:!![],'where':_0x11faf6[_0xc766('0x18')]?_0x11faf6[_0xc766('0x18')]['where']||null:null,'attributes':_0x11faf6[_0xc766('0x18')]?_0x11faf6[_0xc766('0x18')][_0xc766('0x1a')]||null:null,'limit':_0x11faf6['options']?_0x11faf6[_0xc766('0x18')][_0xc766('0x1b')]||null:null,'include':_0x11faf6['options']?_0x11faf6[_0xc766('0x18')][_0xc766('0x1c')]?_['map'](_0x11faf6[_0xc766('0x18')][_0xc766('0x1c')],function(_0x32169b){return{'model':db[_0x32169b[_0xc766('0x1d')]],'as':_0x32169b['as'],'attributes':_0x32169b[_0xc766('0x1a')],'include':_0x32169b[_0xc766('0x1c')]?_[_0xc766('0x1e')](_0x32169b['include'],function(_0x3dbf17){return{'model':db[_0x3dbf17[_0xc766('0x1d')]],'as':_0x3dbf17['as'],'attributes':_0x3dbf17[_0xc766('0x1a')],'include':_0x3dbf17[_0xc766('0x1c')]?_[_0xc766('0x1e')](_0x3dbf17[_0xc766('0x1c')],function(_0x453b89){return{'model':db[_0x453b89['model']],'as':_0x453b89['as'],'attributes':_0x453b89[_0xc766('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc766('0xc')](function(_0x30821f){logger['info']('GetCampaign',_0x11faf6);logger[_0xc766('0x10')]('GetCampaign',_0x11faf6,JSON[_0xc766('0x11')](_0x30821f));_0x10e473(_0x30821f);})[_0xc766('0x15')](function(_0x411068){logger[_0xc766('0x12')](_0xc766('0x1f'),_0x411068[_0xc766('0x13')],_0x11faf6);_0x33089a(_0x5f1d6d[_0xc766('0x12')](0x1f4,_0x411068[_0xc766('0x13')]));});});};
\ No newline at end of file
+var _0xd274=['jayson/promise','client','http','request','Campaign,\x20%s,\x20%s','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','GetCampaign','Campaign','findAll','options','raw','where','attributes','limit','include','map','model','then','debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger'];(function(_0x7f365f,_0x3d79ba){var _0x5a530c=function(_0x23dbfb){while(--_0x23dbfb){_0x7f365f['push'](_0x7f365f['shift']());}};_0x5a530c(++_0x3d79ba);}(_0xd274,0x18d));var _0x4d27=function(_0x326cb1,_0x329809){_0x326cb1=_0x326cb1-0x0;var _0x55cb4b=_0xd274[_0x326cb1];return _0x55cb4b;};'use strict';var _=require(_0x4d27('0x0'));var util=require('util');var moment=require(_0x4d27('0x1'));var BPromise=require(_0x4d27('0x2'));var rs=require(_0x4d27('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4d27('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4d27('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4d27('0x6'));var client=jayson[_0x4d27('0x7')][_0x4d27('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5179b1,_0x1a8a3d,_0x33bdaa){return new BPromise(function(_0x1758c8,_0x7289b7){return client[_0x4d27('0x9')](_0x5179b1,_0x33bdaa)['then'](function(_0x465872){logger['info'](_0x4d27('0xa'),_0x1a8a3d,'request\x20sent');logger['debug'](_0x4d27('0xb'),_0x1a8a3d,_0x4d27('0xc'),JSON[_0x4d27('0xd')](_0x465872));if(_0x465872[_0x4d27('0xe')]){if(_0x465872[_0x4d27('0xe')][_0x4d27('0xf')]===0x1f4){logger['error'](_0x4d27('0xa'),_0x1a8a3d,_0x465872['error'][_0x4d27('0x10')]);return _0x7289b7(_0x465872[_0x4d27('0xe')][_0x4d27('0x10')]);}logger[_0x4d27('0xe')](_0x4d27('0xa'),_0x1a8a3d,_0x465872[_0x4d27('0xe')][_0x4d27('0x10')]);return _0x1758c8(_0x465872[_0x4d27('0xe')][_0x4d27('0x10')]);}else{logger[_0x4d27('0x11')]('Campaign,\x20%s,\x20%s',_0x1a8a3d,_0x4d27('0xc'));_0x1758c8(_0x465872['result'][_0x4d27('0x10')]);}})['catch'](function(_0xd1a5dc){logger[_0x4d27('0xe')](_0x4d27('0xa'),_0x1a8a3d,_0xd1a5dc);_0x7289b7(_0xd1a5dc);});});}exports[_0x4d27('0x12')]=function(_0x52a201){var _0x2e27db=this;return new Promise(function(_0x4b6eea,_0x4ec692){return db[_0x4d27('0x13')][_0x4d27('0x14')]({'raw':_0x52a201[_0x4d27('0x15')]?_0x52a201[_0x4d27('0x15')][_0x4d27('0x16')]===undefined?!![]:![]:!![],'where':_0x52a201[_0x4d27('0x15')]?_0x52a201['options'][_0x4d27('0x17')]||null:null,'attributes':_0x52a201['options']?_0x52a201[_0x4d27('0x15')][_0x4d27('0x18')]||null:null,'limit':_0x52a201['options']?_0x52a201[_0x4d27('0x15')][_0x4d27('0x19')]||null:null,'include':_0x52a201[_0x4d27('0x15')]?_0x52a201[_0x4d27('0x15')][_0x4d27('0x1a')]?_[_0x4d27('0x1b')](_0x52a201[_0x4d27('0x15')][_0x4d27('0x1a')],function(_0x345887){return{'model':db[_0x345887['model']],'as':_0x345887['as'],'attributes':_0x345887[_0x4d27('0x18')],'include':_0x345887['include']?_[_0x4d27('0x1b')](_0x345887[_0x4d27('0x1a')],function(_0x5db209){return{'model':db[_0x5db209['model']],'as':_0x5db209['as'],'attributes':_0x5db209['attributes'],'include':_0x5db209[_0x4d27('0x1a')]?_[_0x4d27('0x1b')](_0x5db209[_0x4d27('0x1a')],function(_0x215e52){return{'model':db[_0x215e52[_0x4d27('0x1c')]],'as':_0x215e52['as'],'attributes':_0x215e52[_0x4d27('0x18')]};}):[]};}):[]};}):[]:[]})[_0x4d27('0x1d')](function(_0x4e4d9c){logger[_0x4d27('0x11')](_0x4d27('0x12'),_0x52a201);logger[_0x4d27('0x1e')](_0x4d27('0x12'),_0x52a201,JSON[_0x4d27('0xd')](_0x4e4d9c));_0x4b6eea(_0x4e4d9c);})['catch'](function(_0x2b038d){logger[_0x4d27('0xe')](_0x4d27('0x12'),_0x2b038d[_0x4d27('0x10')],_0x52a201);_0x4ec692(_0x2e27db[_0x4d27('0xe')](0x1f4,_0x2b038d[_0x4d27('0x10')]));});});};
\ No newline at end of file
index 7b9f54a..40320ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f16=['put','destroy','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./campaign.controller','get','index','/:id','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperBlacks','/:id/lists','getLists','post','clone','/:id/blacklists','addBlackLists'];(function(_0x34208c,_0x3c95f7){var _0x135639=function(_0x21689b){while(--_0x21689b){_0x34208c['push'](_0x34208c['shift']());}};_0x135639(++_0x3c95f7);}(_0x5f16,0x1c4));var _0x65f1=function(_0x57eb5e,_0x49a67a){_0x57eb5e=_0x57eb5e-0x0;var _0x5e97ab=_0x5f16[_0x57eb5e];return _0x5e97ab;};'use strict';var multer=require(_0x65f1('0x0'));var util=require(_0x65f1('0x1'));var path=require('path');var timeout=require(_0x65f1('0x2'));var express=require(_0x65f1('0x3'));var router=express[_0x65f1('0x4')]();var auth=require(_0x65f1('0x5'));var interaction=require(_0x65f1('0x6'));var config=require('../../config/environment');var controller=require(_0x65f1('0x7'));router[_0x65f1('0x8')]('/',auth['isAuthenticated'](),controller[_0x65f1('0x9')]);router[_0x65f1('0x8')](_0x65f1('0xa'),auth[_0x65f1('0xb')](),controller[_0x65f1('0xc')]);router[_0x65f1('0x8')](_0x65f1('0xd'),auth[_0x65f1('0xb')](),controller[_0x65f1('0xe')]);router['get'](_0x65f1('0xf'),auth['isAuthenticated'](),controller[_0x65f1('0x10')]);router[_0x65f1('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get']('/:id/hopper_black',auth[_0x65f1('0xb')](),controller[_0x65f1('0x11')]);router[_0x65f1('0x8')](_0x65f1('0x12'),auth[_0x65f1('0xb')](),controller[_0x65f1('0x13')]);router[_0x65f1('0x8')]('/:id/blacklists',auth['isAuthenticated'](),controller['getBlackLists']);router[_0x65f1('0x14')]('/',auth[_0x65f1('0xb')](),controller['create']);router[_0x65f1('0x14')]('/:id/clone',auth['isAuthenticated'](),controller[_0x65f1('0x15')]);router[_0x65f1('0x14')]('/:id/lists',auth[_0x65f1('0xb')](),controller['addLists']);router['post'](_0x65f1('0x16'),auth[_0x65f1('0xb')](),controller[_0x65f1('0x17')]);router[_0x65f1('0x18')]('/:id',auth[_0x65f1('0xb')](),controller['update']);router['delete']('/:id',auth[_0x65f1('0xb')](),controller[_0x65f1('0x19')]);router[_0x65f1('0x1a')]('/:id/lists',auth[_0x65f1('0xb')](),controller['removeLists']);router[_0x65f1('0x1a')]('/:id/blacklists',auth[_0x65f1('0xb')](),controller['removeBlackLists']);module[_0x65f1('0x1b')]=router;
\ No newline at end of file
+var _0xce22=['getHopperFinals','getHopperBlacks','/:id/lists','getLists','getBlackLists','create','post','/:id/clone','clone','addLists','/:id/blacklists','put','delete','destroy','removeLists','removeBlackLists','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals'];(function(_0x168c01,_0x18b611){var _0x25db26=function(_0xbf833e){while(--_0xbf833e){_0x168c01['push'](_0x168c01['shift']());}};_0x25db26(++_0x18b611);}(_0xce22,0x17c));var _0x2ce2=function(_0x24f83b,_0x343a9c){_0x24f83b=_0x24f83b-0x0;var _0x561bf9=_0xce22[_0x24f83b];return _0x561bf9;};'use strict';var multer=require(_0x2ce2('0x0'));var util=require(_0x2ce2('0x1'));var path=require('path');var timeout=require(_0x2ce2('0x2'));var express=require(_0x2ce2('0x3'));var router=express[_0x2ce2('0x4')]();var auth=require(_0x2ce2('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./campaign.controller');router[_0x2ce2('0x6')]('/',auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x8')]);router[_0x2ce2('0x6')](_0x2ce2('0x9'),auth[_0x2ce2('0x7')](),controller[_0x2ce2('0xa')]);router[_0x2ce2('0x6')](_0x2ce2('0xb'),auth[_0x2ce2('0x7')](),controller[_0x2ce2('0xc')]);router[_0x2ce2('0x6')](_0x2ce2('0xd'),auth['isAuthenticated'](),controller[_0x2ce2('0xe')]);router[_0x2ce2('0x6')](_0x2ce2('0xf'),auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x10')]);router[_0x2ce2('0x6')]('/:id/hopper_black',auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x11')]);router[_0x2ce2('0x6')](_0x2ce2('0x12'),auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x13')]);router['get']('/:id/blacklists',auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x14')]);router['post']('/',auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x15')]);router[_0x2ce2('0x16')](_0x2ce2('0x17'),auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x18')]);router['post'](_0x2ce2('0x12'),auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x19')]);router[_0x2ce2('0x16')](_0x2ce2('0x1a'),auth[_0x2ce2('0x7')](),controller['addBlackLists']);router[_0x2ce2('0x1b')](_0x2ce2('0x9'),auth[_0x2ce2('0x7')](),controller['update']);router[_0x2ce2('0x1c')]('/:id',auth['isAuthenticated'](),controller[_0x2ce2('0x1d')]);router[_0x2ce2('0x1c')](_0x2ce2('0x12'),auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x1e')]);router['delete'](_0x2ce2('0x1a'),auth[_0x2ce2('0x7')](),controller[_0x2ce2('0x1f')]);module[_0x2ce2('0x20')]=router;
\ No newline at end of file
index dc8b8be..f1aa3f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08c0=['getDataValue','exports','TEXT'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x08c0,0x88));var _0x008c=function(_0x23d7ae,_0x5380fc){_0x23d7ae=_0x23d7ae-0x0;var _0xee8bcb=_0x08c0[_0x23d7ae];return _0xee8bcb;};'use strict';var Sequelize=require('sequelize');module[_0x008c('0x0')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x008c('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x008c('0x2')]('key');}}};
\ No newline at end of file
+var _0xf466=['getDataValue','key','sequelize','TEXT','STRING','VIRTUAL'];(function(_0x23a250,_0x37c274){var _0x286c5d=function(_0x4900df){while(--_0x4900df){_0x23a250['push'](_0x23a250['shift']());}};_0x286c5d(++_0x37c274);}(_0xf466,0x1d6));var _0x6f46=function(_0x5013bd,_0x4d4b8d){_0x5013bd=_0x5013bd-0x0;var _0x5d3e13=_0xf466[_0x5013bd];return _0x5d3e13;};'use strict';var Sequelize=require(_0x6f46('0x0'));module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x6f46('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x6f46('0x2')]},'name':{'type':Sequelize[_0x6f46('0x3')],'get':function(){return this[_0x6f46('0x4')](_0x6f46('0x5'));}}};
\ No newline at end of file
index 5c9c8f6..e3b20b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ec7=['includeAll','include','findAll','rows','catch','show','find','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','desk.js','querystring','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','CannedAnswers','UserProfileResource','end','error','name','send','index','CannedAnswer','rawAttributes','model','keys','query','dateEnd','dateStart','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','day','add','merge','filter','where','map','key','field','options'];(function(_0x596ba8,_0x358056){var _0x352766=function(_0x49bd24){while(--_0x49bd24){_0x596ba8['push'](_0x596ba8['shift']());}};_0x352766(++_0x358056);}(_0x5ec7,0x184));var _0x75ec=function(_0x2d0f03,_0x44a933){_0x2d0f03=_0x2d0f03-0x0;var _0x2ebc7f=_0x5ec7[_0x2d0f03];return _0x2ebc7f;};'use strict';var pdf=require(_0x75ec('0x0'));var emlformat=require(_0x75ec('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x75ec('0x2'));var jsonpatch=require(_0x75ec('0x3'));var rp=require(_0x75ec('0x4'));var moment=require('moment');var BPromise=require(_0x75ec('0x5'));var Mustache=require(_0x75ec('0x6'));var util=require(_0x75ec('0x7'));var path=require(_0x75ec('0x8'));var sox=require(_0x75ec('0x9'));var csv=require(_0x75ec('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x75ec('0xb'));var squel=require(_0x75ec('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x75ec('0xd'));var toCsv=require('to-csv');var querystring=require(_0x75ec('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x75ec('0xf'))(_0x75ec('0x10'));var utils=require('../../config/utils');var config=require(_0x75ec('0x11'));var db=require(_0x75ec('0x12'))['db'];function respondWithStatusCode(_0x577cda,_0x579877){_0x579877=_0x579877||0xcc;return function(_0xe397e2){if(_0xe397e2){return _0x577cda[_0x75ec('0x13')](_0x579877);}return _0x577cda[_0x75ec('0x14')](_0x579877)['end']();};}function respondWithResult(_0x1e76d2,_0x30f63c){_0x30f63c=_0x30f63c||0xc8;return function(_0x1e3179){if(_0x1e3179){return _0x1e76d2[_0x75ec('0x14')](_0x30f63c)[_0x75ec('0x15')](_0x1e3179);}};}function respondWithFilteredResult(_0x2df25b,_0x409cfd){return function(_0x2e424c){if(_0x2e424c){var _0x1d0714=_0x2e424c[_0x75ec('0x16')],_0x354415=_0x409cfd[_0x75ec('0x17')],_0x440678=_0x409cfd[_0x75ec('0x17')]+_0x409cfd[_0x75ec('0x18')],_0x4db414;if(_0x440678>=_0x1d0714){_0x440678=_0x1d0714;_0x4db414=0xc8;}else{_0x4db414=0xce;}_0x2df25b[_0x75ec('0x14')](_0x4db414);return _0x2df25b[_0x75ec('0x19')](_0x75ec('0x1a'),_0x354415+'-'+_0x440678+'/'+_0x1d0714)[_0x75ec('0x15')](_0x2e424c);}return null;};}function patchUpdates(_0x3207ad){return function(_0x39ad1e){try{jsonpatch[_0x75ec('0x1b')](_0x39ad1e,_0x3207ad,!![]);}catch(_0x405b8a){return BPromise[_0x75ec('0x1c')](_0x405b8a);}return _0x39ad1e[_0x75ec('0x1d')]();};}function saveUpdates(_0x3097fd,_0x30c4d6){return function(_0x351ca1){if(_0x351ca1){return _0x351ca1[_0x75ec('0x1e')](_0x3097fd)[_0x75ec('0x1f')](function(_0x34c06b){return _0x34c06b;});}return null;};}function removeEntity(_0x10a7bf,_0x127db1){return function(_0x4b009){if(_0x4b009){return _0x4b009[_0x75ec('0x20')]()[_0x75ec('0x1f')](function(){var _0x189aa0=_0x4b009[_0x75ec('0x21')]({'plain':!![]});var _0x3c0cea=_0x75ec('0x22');return db[_0x75ec('0x23')][_0x75ec('0x20')]({'where':{'type':_0x3c0cea,'resourceId':_0x189aa0['id']}})[_0x75ec('0x1f')](function(){return _0x4b009;});})['then'](function(){_0x10a7bf[_0x75ec('0x14')](0xcc)[_0x75ec('0x24')]();});}};}function handleEntityNotFound(_0x5e7078,_0x58e5ee){return function(_0xe4c6df){if(!_0xe4c6df){_0x5e7078[_0x75ec('0x13')](0x194);}return _0xe4c6df;};}function handleError(_0x41873d,_0x2afc64){_0x2afc64=_0x2afc64||0x1f4;return function(_0x4df214){logger[_0x75ec('0x25')](_0x4df214['stack']);if(_0x4df214[_0x75ec('0x26')]){delete _0x4df214['name'];}_0x41873d['status'](_0x2afc64)[_0x75ec('0x27')](_0x4df214);};}exports[_0x75ec('0x28')]=function(_0x3531f7,_0x4d1349){var _0x305e1c={},_0x38876c={},_0x3f448a={'count':0x0,'rows':[]};var _0x5a47e1=db[_0x75ec('0x29')][_0x75ec('0x2a')];_0x38876c[_0x75ec('0x2b')]=_[_0x75ec('0x2c')](_0x5a47e1);var _0x371d6b={'dateStart':_0x3531f7[_0x75ec('0x2d')]['dateStart'],'dateEnd':_0x3531f7[_0x75ec('0x2d')][_0x75ec('0x2e')]};delete _0x3531f7[_0x75ec('0x2d')][_0x75ec('0x2f')];delete _0x3531f7[_0x75ec('0x2d')][_0x75ec('0x2e')];_0x38876c[_0x75ec('0x2d')]=_[_0x75ec('0x2c')](_0x3531f7[_0x75ec('0x2d')]);_0x38876c[_0x75ec('0x30')]=_[_0x75ec('0x31')](_0x38876c[_0x75ec('0x2b')],_0x38876c[_0x75ec('0x2d')]);_0x305e1c[_0x75ec('0x32')]=_[_0x75ec('0x31')](_0x38876c['model'],qs[_0x75ec('0x33')](_0x3531f7[_0x75ec('0x2d')][_0x75ec('0x33')]));_0x305e1c[_0x75ec('0x32')]=_0x305e1c[_0x75ec('0x32')][_0x75ec('0x34')]?_0x305e1c[_0x75ec('0x32')]:_0x38876c['model'];if(!_0x3531f7[_0x75ec('0x2d')][_0x75ec('0x35')](_0x75ec('0x36'))){_0x305e1c[_0x75ec('0x18')]=qs[_0x75ec('0x18')](_0x3531f7[_0x75ec('0x2d')][_0x75ec('0x18')]);_0x305e1c[_0x75ec('0x17')]=qs[_0x75ec('0x17')](_0x3531f7[_0x75ec('0x2d')][_0x75ec('0x17')]);}_0x305e1c[_0x75ec('0x37')]=qs[_0x75ec('0x38')](_0x3531f7['query'][_0x75ec('0x38')]);_0x305e1c['where']=qs['filters'](_[_0x75ec('0x39')](_0x3531f7['query'],_0x38876c[_0x75ec('0x30')]));if(_0x371d6b[_0x75ec('0x2f')]){if(_0x371d6b['dateEnd']){_0x371d6b['dateEnd']=moment(_0x371d6b['dateEnd'])['add'](0x1,_0x75ec('0x3a'));}else{_0x371d6b[_0x75ec('0x2e')]=moment(_0x371d6b[_0x75ec('0x2f')])[_0x75ec('0x3b')](0x1,_0x75ec('0x3a'));}_[_0x75ec('0x3c')](_0x305e1c['where'],{'createdAt':{'$gte':_0x371d6b[_0x75ec('0x2f')],'$lte':_0x371d6b[_0x75ec('0x2e')]}});}if(_0x3531f7[_0x75ec('0x2d')][_0x75ec('0x3d')]){_0x305e1c['where']=_[_0x75ec('0x3c')](_0x305e1c[_0x75ec('0x3e')],{'$or':_[_0x75ec('0x3f')](_0x5a47e1,function(_0x2d415c){if(_0x2d415c['type'][_0x75ec('0x40')]!=='VIRTUAL'){var _0xd17f51={};_0xd17f51[_0x2d415c[_0x75ec('0x41')]]={'$like':'%'+_0x3531f7[_0x75ec('0x2d')][_0x75ec('0x3d')]+'%'};return _0xd17f51;}})});}_0x305e1c=_[_0x75ec('0x3c')]({},_0x305e1c,_0x3531f7[_0x75ec('0x42')]);var _0xba7d2d={'where':_0x305e1c['where']};return db[_0x75ec('0x29')][_0x75ec('0x16')](_0xba7d2d)[_0x75ec('0x1f')](function(_0x56c11a){_0x3f448a[_0x75ec('0x16')]=_0x56c11a;if(_0x3531f7[_0x75ec('0x2d')][_0x75ec('0x43')]){_0x305e1c[_0x75ec('0x44')]=[{'all':!![]}];}return db[_0x75ec('0x29')][_0x75ec('0x45')](_0x305e1c);})[_0x75ec('0x1f')](function(_0x4902cb){_0x3f448a[_0x75ec('0x46')]=_0x4902cb;return _0x3f448a;})['then'](respondWithFilteredResult(_0x4d1349,_0x305e1c))[_0x75ec('0x47')](handleError(_0x4d1349,null));};exports[_0x75ec('0x48')]=function(_0x9f1d72,_0x516120){var _0x1f2d58={'raw':!![],'where':{'id':_0x9f1d72['params']['id']}},_0x2e64f5={};_0x2e64f5[_0x75ec('0x2b')]=_['keys'](db['CannedAnswer'][_0x75ec('0x2a')]);_0x2e64f5[_0x75ec('0x2d')]=_[_0x75ec('0x2c')](_0x9f1d72['query']);_0x2e64f5[_0x75ec('0x30')]=_[_0x75ec('0x31')](_0x2e64f5['model'],_0x2e64f5[_0x75ec('0x2d')]);_0x1f2d58[_0x75ec('0x32')]=_['intersection'](_0x2e64f5[_0x75ec('0x2b')],qs[_0x75ec('0x33')](_0x9f1d72[_0x75ec('0x2d')][_0x75ec('0x33')]));_0x1f2d58[_0x75ec('0x32')]=_0x1f2d58[_0x75ec('0x32')]['length']?_0x1f2d58[_0x75ec('0x32')]:_0x2e64f5[_0x75ec('0x2b')];if(_0x9f1d72[_0x75ec('0x2d')][_0x75ec('0x43')]){_0x1f2d58[_0x75ec('0x44')]=[{'all':!![]}];}_0x1f2d58=_[_0x75ec('0x3c')]({},_0x1f2d58,_0x9f1d72['options']);return db[_0x75ec('0x29')][_0x75ec('0x49')](_0x1f2d58)[_0x75ec('0x1f')](handleEntityNotFound(_0x516120,null))[_0x75ec('0x1f')](respondWithResult(_0x516120,null))[_0x75ec('0x47')](handleError(_0x516120,null));};exports['update']=function(_0x229493,_0x1dc246){if(_0x229493[_0x75ec('0x4a')]['id']){delete _0x229493[_0x75ec('0x4a')]['id'];}return db[_0x75ec('0x29')][_0x75ec('0x49')]({'where':{'id':_0x229493[_0x75ec('0x4b')]['id']}})[_0x75ec('0x1f')](handleEntityNotFound(_0x1dc246,null))['then'](saveUpdates(_0x229493[_0x75ec('0x4a')],null))[_0x75ec('0x1f')](respondWithResult(_0x1dc246,null))[_0x75ec('0x47')](handleError(_0x1dc246,null));};exports[_0x75ec('0x20')]=function(_0x5df818,_0x569d00){return db[_0x75ec('0x29')]['find']({'where':{'id':_0x5df818[_0x75ec('0x4b')]['id']}})[_0x75ec('0x1f')](handleEntityNotFound(_0x569d00,null))[_0x75ec('0x1f')](removeEntity(_0x569d00,null))[_0x75ec('0x47')](handleError(_0x569d00,null));};exports[_0x75ec('0x4c')]=function(_0x26fc6d,_0xf66e6c){var _0x4d9b29={'key':_0x26fc6d['body'][_0x75ec('0x40')]};if(_0x26fc6d[_0x75ec('0x4a')][_0x75ec('0x4d')]){_0x4d9b29[_0x75ec('0x4d')]=_0x26fc6d[_0x75ec('0x4a')][_0x75ec('0x4d')];}else if(_0x26fc6d['body'][_0x75ec('0x4e')]){_0x4d9b29['SmsAccountId']=_0x26fc6d[_0x75ec('0x4a')][_0x75ec('0x4e')];}else if(_0x26fc6d[_0x75ec('0x4a')]['OpenchannelAccountId']){_0x4d9b29[_0x75ec('0x4f')]=_0x26fc6d[_0x75ec('0x4a')]['OpenchannelAccountId'];}else if(_0x26fc6d[_0x75ec('0x4a')][_0x75ec('0x50')]){_0x4d9b29[_0x75ec('0x50')]=_0x26fc6d[_0x75ec('0x4a')][_0x75ec('0x50')];}return db[_0x75ec('0x29')][_0x75ec('0x49')]({'where':_0x4d9b29})['then'](function(_0x59e5e2){if(_0x59e5e2){throw new db[(_0x75ec('0x51'))][(_0x75ec('0x52'))](_0x75ec('0x53'));}return db[_0x75ec('0x29')][_0x75ec('0x4c')](_0x26fc6d['body']);})[_0x75ec('0x1f')](function(_0x4f522a){var _0x37405c=_0x26fc6d[_0x75ec('0x54')]['get']({'plain':!![]});if(!_0x37405c)throw new Error(_0x75ec('0x55'));if(_0x37405c[_0x75ec('0x56')]===_0x75ec('0x54')){var _0x2d2861=_0x4f522a[_0x75ec('0x21')]({'plain':!![]});return db[_0x75ec('0x57')]['find']({'where':{'name':_0x75ec('0x22'),'userProfileId':_0x37405c[_0x75ec('0x58')]},'raw':!![]})[_0x75ec('0x1f')](function(_0x4f4d7d){if(_0x4f4d7d&&_0x4f4d7d[_0x75ec('0x59')]===0x0){return db[_0x75ec('0x23')]['create']({'name':_0x2d2861[_0x75ec('0x26')],'resourceId':_0x2d2861['id'],'type':_0x4f4d7d[_0x75ec('0x26')],'sectionId':_0x4f4d7d['id']},{})[_0x75ec('0x1f')](function(){return _0x4f522a;});}else{return _0x4f522a;}})['catch'](function(_0x511617){logger[_0x75ec('0x25')](_0x75ec('0x5a'),_0x511617);throw _0x511617;});}return _0x4f522a;})[_0x75ec('0x1f')](respondWithResult(_0xf66e6c,0xc9))['catch'](handleError(_0xf66e6c,null));};
\ No newline at end of file
+var _0x4b6c=['eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','count','offset','limit','set','Content-Range','reject','save','update','then','destroy','CannedAnswers','UserProfileResource','end','sendStatus','error','name','send','index','CannedAnswer','model','query','dateEnd','keys','intersection','attributes','fields','nolimit','order','sort','where','pick','filters','dateStart','add','day','merge','filter','map','type','key','field','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','html-pdf'];(function(_0x4fe199,_0x555f3f){var _0x371035=function(_0x437e14){while(--_0x437e14){_0x4fe199['push'](_0x4fe199['shift']());}};_0x371035(++_0x555f3f);}(_0x4b6c,0xb3));var _0xc4b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b6c[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0xc4b6('0x0'));var emlformat=require(_0xc4b6('0x1'));var rimraf=require(_0xc4b6('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc4b6('0x3'));var moment=require(_0xc4b6('0x4'));var BPromise=require(_0xc4b6('0x5'));var Mustache=require(_0xc4b6('0x6'));var util=require(_0xc4b6('0x7'));var path=require(_0xc4b6('0x8'));var sox=require(_0xc4b6('0x9'));var csv=require(_0xc4b6('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xc4b6('0xb'));var squel=require(_0xc4b6('0xc'));var crypto=require(_0xc4b6('0xd'));var jsforce=require(_0xc4b6('0xe'));var deskjs=require(_0xc4b6('0xf'));var toCsv=require(_0xc4b6('0xa'));var querystring=require('querystring');var Papa=require(_0xc4b6('0x10'));var Redis=require('ioredis');var qs=require(_0xc4b6('0x11'));var logger=require(_0xc4b6('0x12'))(_0xc4b6('0x13'));var utils=require(_0xc4b6('0x14'));var config=require(_0xc4b6('0x15'));var db=require(_0xc4b6('0x16'))['db'];function respondWithStatusCode(_0x241cff,_0x4b1881){_0x4b1881=_0x4b1881||0xcc;return function(_0x156859){if(_0x156859){return _0x241cff['sendStatus'](_0x4b1881);}return _0x241cff[_0xc4b6('0x17')](_0x4b1881)['end']();};}function respondWithResult(_0x3bf523,_0x2db256){_0x2db256=_0x2db256||0xc8;return function(_0x3a068a){if(_0x3a068a){return _0x3bf523[_0xc4b6('0x17')](_0x2db256)['json'](_0x3a068a);}};}function respondWithFilteredResult(_0x5cb16a,_0x184714){return function(_0x1dc1b6){if(_0x1dc1b6){var _0x3ef059=_0x1dc1b6[_0xc4b6('0x18')],_0x2453ad=_0x184714[_0xc4b6('0x19')],_0x5a365f=_0x184714[_0xc4b6('0x19')]+_0x184714[_0xc4b6('0x1a')],_0x475dbd;if(_0x5a365f>=_0x3ef059){_0x5a365f=_0x3ef059;_0x475dbd=0xc8;}else{_0x475dbd=0xce;}_0x5cb16a['status'](_0x475dbd);return _0x5cb16a[_0xc4b6('0x1b')](_0xc4b6('0x1c'),_0x2453ad+'-'+_0x5a365f+'/'+_0x3ef059)['json'](_0x1dc1b6);}return null;};}function patchUpdates(_0x1512f7){return function(_0x584abe){try{jsonpatch['apply'](_0x584abe,_0x1512f7,!![]);}catch(_0x422b63){return BPromise[_0xc4b6('0x1d')](_0x422b63);}return _0x584abe[_0xc4b6('0x1e')]();};}function saveUpdates(_0x29e173,_0x4a8c7e){return function(_0x195dba){if(_0x195dba){return _0x195dba[_0xc4b6('0x1f')](_0x29e173)[_0xc4b6('0x20')](function(_0x26ecab){return _0x26ecab;});}return null;};}function removeEntity(_0x159ffd,_0x301a4b){return function(_0x52cfa7){if(_0x52cfa7){return _0x52cfa7[_0xc4b6('0x21')]()[_0xc4b6('0x20')](function(){var _0x234a26=_0x52cfa7['get']({'plain':!![]});var _0x57da33=_0xc4b6('0x22');return db[_0xc4b6('0x23')][_0xc4b6('0x21')]({'where':{'type':_0x57da33,'resourceId':_0x234a26['id']}})[_0xc4b6('0x20')](function(){return _0x52cfa7;});})['then'](function(){_0x159ffd[_0xc4b6('0x17')](0xcc)[_0xc4b6('0x24')]();});}};}function handleEntityNotFound(_0x413ccf,_0x14bbe4){return function(_0x36b3f5){if(!_0x36b3f5){_0x413ccf[_0xc4b6('0x25')](0x194);}return _0x36b3f5;};}function handleError(_0x16dcec,_0x343ee9){_0x343ee9=_0x343ee9||0x1f4;return function(_0x2d03c8){logger[_0xc4b6('0x26')](_0x2d03c8['stack']);if(_0x2d03c8[_0xc4b6('0x27')]){delete _0x2d03c8[_0xc4b6('0x27')];}_0x16dcec['status'](_0x343ee9)[_0xc4b6('0x28')](_0x2d03c8);};}exports[_0xc4b6('0x29')]=function(_0x5cf433,_0x582a63){var _0x18d353={},_0x80df18={},_0x16d245={'count':0x0,'rows':[]};var _0x97bcc4=db[_0xc4b6('0x2a')]['rawAttributes'];_0x80df18[_0xc4b6('0x2b')]=_['keys'](_0x97bcc4);var _0x419e63={'dateStart':_0x5cf433[_0xc4b6('0x2c')]['dateStart'],'dateEnd':_0x5cf433[_0xc4b6('0x2c')]['dateEnd']};delete _0x5cf433['query']['dateStart'];delete _0x5cf433['query'][_0xc4b6('0x2d')];_0x80df18[_0xc4b6('0x2c')]=_[_0xc4b6('0x2e')](_0x5cf433[_0xc4b6('0x2c')]);_0x80df18['filters']=_[_0xc4b6('0x2f')](_0x80df18[_0xc4b6('0x2b')],_0x80df18[_0xc4b6('0x2c')]);_0x18d353[_0xc4b6('0x30')]=_[_0xc4b6('0x2f')](_0x80df18[_0xc4b6('0x2b')],qs[_0xc4b6('0x31')](_0x5cf433[_0xc4b6('0x2c')][_0xc4b6('0x31')]));_0x18d353[_0xc4b6('0x30')]=_0x18d353[_0xc4b6('0x30')]['length']?_0x18d353[_0xc4b6('0x30')]:_0x80df18[_0xc4b6('0x2b')];if(!_0x5cf433[_0xc4b6('0x2c')]['hasOwnProperty'](_0xc4b6('0x32'))){_0x18d353[_0xc4b6('0x1a')]=qs[_0xc4b6('0x1a')](_0x5cf433[_0xc4b6('0x2c')][_0xc4b6('0x1a')]);_0x18d353[_0xc4b6('0x19')]=qs['offset'](_0x5cf433['query']['offset']);}_0x18d353[_0xc4b6('0x33')]=qs[_0xc4b6('0x34')](_0x5cf433[_0xc4b6('0x2c')][_0xc4b6('0x34')]);_0x18d353[_0xc4b6('0x35')]=qs['filters'](_[_0xc4b6('0x36')](_0x5cf433[_0xc4b6('0x2c')],_0x80df18[_0xc4b6('0x37')]));if(_0x419e63[_0xc4b6('0x38')]){if(_0x419e63[_0xc4b6('0x2d')]){_0x419e63['dateEnd']=moment(_0x419e63[_0xc4b6('0x2d')])[_0xc4b6('0x39')](0x1,_0xc4b6('0x3a'));}else{_0x419e63[_0xc4b6('0x2d')]=moment(_0x419e63[_0xc4b6('0x38')])[_0xc4b6('0x39')](0x1,'day');}_[_0xc4b6('0x3b')](_0x18d353['where'],{'createdAt':{'$gte':_0x419e63[_0xc4b6('0x38')],'$lte':_0x419e63[_0xc4b6('0x2d')]}});}if(_0x5cf433['query'][_0xc4b6('0x3c')]){_0x18d353[_0xc4b6('0x35')]=_[_0xc4b6('0x3b')](_0x18d353['where'],{'$or':_[_0xc4b6('0x3d')](_0x97bcc4,function(_0x13fe2c){if(_0x13fe2c[_0xc4b6('0x3e')][_0xc4b6('0x3f')]!=='VIRTUAL'){var _0x12b091={};_0x12b091[_0x13fe2c[_0xc4b6('0x40')]]={'$like':'%'+_0x5cf433['query']['filter']+'%'};return _0x12b091;}})});}_0x18d353=_['merge']({},_0x18d353,_0x5cf433[_0xc4b6('0x41')]);var _0x15d976={'where':_0x18d353[_0xc4b6('0x35')]};return db[_0xc4b6('0x2a')][_0xc4b6('0x18')](_0x15d976)['then'](function(_0x47a128){_0x16d245['count']=_0x47a128;if(_0x5cf433[_0xc4b6('0x2c')][_0xc4b6('0x42')]){_0x18d353[_0xc4b6('0x43')]=[{'all':!![]}];}return db['CannedAnswer'][_0xc4b6('0x44')](_0x18d353);})['then'](function(_0xa1460e){_0x16d245[_0xc4b6('0x45')]=_0xa1460e;return _0x16d245;})[_0xc4b6('0x20')](respondWithFilteredResult(_0x582a63,_0x18d353))['catch'](handleError(_0x582a63,null));};exports[_0xc4b6('0x46')]=function(_0x5d956f,_0x7166da){var _0x2a1f29={'raw':!![],'where':{'id':_0x5d956f[_0xc4b6('0x47')]['id']}},_0x12f04c={};_0x12f04c[_0xc4b6('0x2b')]=_[_0xc4b6('0x2e')](db['CannedAnswer'][_0xc4b6('0x48')]);_0x12f04c[_0xc4b6('0x2c')]=_[_0xc4b6('0x2e')](_0x5d956f['query']);_0x12f04c[_0xc4b6('0x37')]=_[_0xc4b6('0x2f')](_0x12f04c[_0xc4b6('0x2b')],_0x12f04c[_0xc4b6('0x2c')]);_0x2a1f29[_0xc4b6('0x30')]=_[_0xc4b6('0x2f')](_0x12f04c[_0xc4b6('0x2b')],qs[_0xc4b6('0x31')](_0x5d956f[_0xc4b6('0x2c')][_0xc4b6('0x31')]));_0x2a1f29[_0xc4b6('0x30')]=_0x2a1f29[_0xc4b6('0x30')]['length']?_0x2a1f29[_0xc4b6('0x30')]:_0x12f04c[_0xc4b6('0x2b')];if(_0x5d956f[_0xc4b6('0x2c')][_0xc4b6('0x42')]){_0x2a1f29[_0xc4b6('0x43')]=[{'all':!![]}];}_0x2a1f29=_[_0xc4b6('0x3b')]({},_0x2a1f29,_0x5d956f[_0xc4b6('0x41')]);return db[_0xc4b6('0x2a')][_0xc4b6('0x49')](_0x2a1f29)[_0xc4b6('0x20')](handleEntityNotFound(_0x7166da,null))[_0xc4b6('0x20')](respondWithResult(_0x7166da,null))[_0xc4b6('0x4a')](handleError(_0x7166da,null));};exports[_0xc4b6('0x1f')]=function(_0x3136e5,_0x18a61b){if(_0x3136e5[_0xc4b6('0x4b')]['id']){delete _0x3136e5[_0xc4b6('0x4b')]['id'];}return db[_0xc4b6('0x2a')][_0xc4b6('0x49')]({'where':{'id':_0x3136e5[_0xc4b6('0x47')]['id']}})[_0xc4b6('0x20')](handleEntityNotFound(_0x18a61b,null))[_0xc4b6('0x20')](saveUpdates(_0x3136e5['body'],null))['then'](respondWithResult(_0x18a61b,null))[_0xc4b6('0x4a')](handleError(_0x18a61b,null));};exports[_0xc4b6('0x21')]=function(_0x51b3a0,_0x887365){return db[_0xc4b6('0x2a')][_0xc4b6('0x49')]({'where':{'id':_0x51b3a0[_0xc4b6('0x47')]['id']}})[_0xc4b6('0x20')](handleEntityNotFound(_0x887365,null))[_0xc4b6('0x20')](removeEntity(_0x887365,null))[_0xc4b6('0x4a')](handleError(_0x887365,null));};exports['create']=function(_0x3efdcc,_0x5a91c5){var _0x2ff943={'key':_0x3efdcc['body'][_0xc4b6('0x3f')]};if(_0x3efdcc[_0xc4b6('0x4b')][_0xc4b6('0x4c')]){_0x2ff943[_0xc4b6('0x4c')]=_0x3efdcc[_0xc4b6('0x4b')][_0xc4b6('0x4c')];}else if(_0x3efdcc[_0xc4b6('0x4b')][_0xc4b6('0x4d')]){_0x2ff943[_0xc4b6('0x4d')]=_0x3efdcc[_0xc4b6('0x4b')][_0xc4b6('0x4d')];}else if(_0x3efdcc[_0xc4b6('0x4b')]['OpenchannelAccountId']){_0x2ff943['OpenchannelAccountId']=_0x3efdcc[_0xc4b6('0x4b')][_0xc4b6('0x4e')];}else if(_0x3efdcc[_0xc4b6('0x4b')][_0xc4b6('0x4f')]){_0x2ff943[_0xc4b6('0x4f')]=_0x3efdcc['body'][_0xc4b6('0x4f')];}return db[_0xc4b6('0x2a')]['find']({'where':_0x2ff943})[_0xc4b6('0x20')](function(_0x372e85){if(_0x372e85){throw new db[(_0xc4b6('0x50'))][(_0xc4b6('0x51'))](_0xc4b6('0x52'));}return db[_0xc4b6('0x2a')][_0xc4b6('0x53')](_0x3efdcc['body']);})[_0xc4b6('0x20')](function(_0x57d2e2){var _0x1e061f=_0x3efdcc[_0xc4b6('0x54')][_0xc4b6('0x55')]({'plain':!![]});if(!_0x1e061f)throw new Error(_0xc4b6('0x56'));if(_0x1e061f['role']===_0xc4b6('0x54')){var _0x21a30c=_0x57d2e2[_0xc4b6('0x55')]({'plain':!![]});return db['UserProfileSection'][_0xc4b6('0x49')]({'where':{'name':_0xc4b6('0x22'),'userProfileId':_0x1e061f[_0xc4b6('0x57')]},'raw':!![]})[_0xc4b6('0x20')](function(_0x1245dd){if(_0x1245dd&&_0x1245dd[_0xc4b6('0x58')]===0x0){return db['UserProfileResource'][_0xc4b6('0x53')]({'name':_0x21a30c[_0xc4b6('0x27')],'resourceId':_0x21a30c['id'],'type':_0x1245dd['name'],'sectionId':_0x1245dd['id']},{})[_0xc4b6('0x20')](function(){return _0x57d2e2;});}else{return _0x57d2e2;}})[_0xc4b6('0x4a')](function(_0x27ae82){logger['error'](_0xc4b6('0x59'),_0x27ae82);throw _0x27ae82;});}return _0x57d2e2;})[_0xc4b6('0x20')](respondWithResult(_0x5a91c5,0xc9))[_0xc4b6('0x4a')](handleError(_0x5a91c5,null));};
\ No newline at end of file
index a8fed1f..e682ea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa066=['api','moment','bluebird','request-promise','define','CannedAnswer','lodash','util','../../config/logger'];(function(_0x350fe1,_0x53971c){var _0x8b53d6=function(_0x5c05df){while(--_0x5c05df){_0x350fe1['push'](_0x350fe1['shift']());}};_0x8b53d6(++_0x53971c);}(_0xa066,0x141));var _0x6a06=function(_0x22f963,_0x4bb343){_0x22f963=_0x22f963-0x0;var _0x3ef3ee=_0xa066[_0x22f963];return _0x3ef3ee;};'use strict';var _=require(_0x6a06('0x0'));var util=require(_0x6a06('0x1'));var logger=require(_0x6a06('0x2'))(_0x6a06('0x3'));var moment=require(_0x6a06('0x4'));var BPromise=require(_0x6a06('0x5'));var rp=require(_0x6a06('0x6'));var attributes=require('./cannedAnswer.attributes');module['exports']=function(_0x3fcf5a,_0x31f1dd){return _0x3fcf5a[_0x6a06('0x7')](_0x6a06('0x8'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x33b6=['exports','define','CannedAnswer','tools_canned_answers','lodash','api','moment','bluebird','request-promise','./cannedAnswer.attributes'];(function(_0x506679,_0x5344af){var _0x53a5ab=function(_0xe56a97){while(--_0xe56a97){_0x506679['push'](_0x506679['shift']());}};_0x53a5ab(++_0x5344af);}(_0x33b6,0x180));var _0x633b=function(_0x4854d6,_0x2f1264){_0x4854d6=_0x4854d6-0x0;var _0x3885c0=_0x33b6[_0x4854d6];return _0x3885c0;};'use strict';var _=require(_0x633b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x633b('0x1'));var moment=require(_0x633b('0x2'));var BPromise=require(_0x633b('0x3'));var rp=require(_0x633b('0x4'));var attributes=require(_0x633b('0x5'));module[_0x633b('0x6')]=function(_0x4ccfb3,_0x40dc62){return _0x4ccfb3[_0x633b('0x7')](_0x633b('0x8'),attributes,{'tableName':_0x633b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 448a1cb..026c5ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76ef=['CannedAnswer,\x20%s,\x20%s,\x20%s','stringify','error','message','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x76ef,0x1df));var _0xf76e=function(_0x4b6ece,_0x24971f){_0x4b6ece=_0x4b6ece-0x0;var _0x146b77=_0x76ef[_0x4b6ece];return _0x146b77;};'use strict';var _=require(_0xf76e('0x0'));var util=require('util');var moment=require(_0xf76e('0x1'));var BPromise=require(_0xf76e('0x2'));var rs=require(_0xf76e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf76e('0x4'))['db'];var utils=require(_0xf76e('0x5'));var logger=require(_0xf76e('0x6'))('rpc');var config=require(_0xf76e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf76e('0x8')][_0xf76e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x296670,_0x4c1bcc,_0x464cf7){return new BPromise(function(_0x2238c8,_0xeb5a10){return client['request'](_0x296670,_0x464cf7)[_0xf76e('0xa')](function(_0x222107){logger[_0xf76e('0xb')](_0xf76e('0xc'),_0x4c1bcc,_0xf76e('0xd'));logger[_0xf76e('0xe')](_0xf76e('0xf'),_0x4c1bcc,'request\x20sent',JSON[_0xf76e('0x10')](_0x222107));if(_0x222107[_0xf76e('0x11')]){if(_0x222107[_0xf76e('0x11')]['code']===0x1f4){logger[_0xf76e('0x11')](_0xf76e('0xc'),_0x4c1bcc,_0x222107[_0xf76e('0x11')][_0xf76e('0x12')]);return _0xeb5a10(_0x222107['error'][_0xf76e('0x12')]);}logger[_0xf76e('0x11')]('CannedAnswer,\x20%s,\x20%s',_0x4c1bcc,_0x222107[_0xf76e('0x11')][_0xf76e('0x12')]);return _0x2238c8(_0x222107[_0xf76e('0x11')][_0xf76e('0x12')]);}else{logger[_0xf76e('0xb')](_0xf76e('0xc'),_0x4c1bcc,_0xf76e('0xd'));_0x2238c8(_0x222107['result'][_0xf76e('0x12')]);}})['catch'](function(_0x1d196e){logger[_0xf76e('0x11')](_0xf76e('0xc'),_0x4c1bcc,_0x1d196e);_0xeb5a10(_0x1d196e);});});}
\ No newline at end of file
+var _0x630c=['rpc','jayson/promise','request','then','info','CannedAnswer,\x20%s,\x20%s','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4bd46d,_0x3f80ce){var _0x317b11=function(_0x4000fe){while(--_0x4000fe){_0x4bd46d['push'](_0x4bd46d['shift']());}};_0x317b11(++_0x3f80ce);}(_0x630c,0x1db));var _0xc630=function(_0x2a96d4,_0x2a8ba4){_0x2a96d4=_0x2a96d4-0x0;var _0x48f70c=_0x630c[_0x2a96d4];return _0x48f70c;};'use strict';var _=require(_0xc630('0x0'));var util=require(_0xc630('0x1'));var moment=require(_0xc630('0x2'));var BPromise=require(_0xc630('0x3'));var rs=require(_0xc630('0x4'));var fs=require('fs');var Redis=require(_0xc630('0x5'));var db=require(_0xc630('0x6'))['db'];var utils=require(_0xc630('0x7'));var logger=require(_0xc630('0x8'))(_0xc630('0x9'));var config=require('../../config/environment');var jayson=require(_0xc630('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x42ed5a,_0x41accd,_0x14f6e1){return new BPromise(function(_0x1cf8c4,_0x3cdcc0){return client[_0xc630('0xb')](_0x42ed5a,_0x14f6e1)[_0xc630('0xc')](function(_0x3d195c){logger[_0xc630('0xd')](_0xc630('0xe'),_0x41accd,'request\x20sent');logger[_0xc630('0xf')](_0xc630('0x10'),_0x41accd,_0xc630('0x11'),JSON[_0xc630('0x12')](_0x3d195c));if(_0x3d195c[_0xc630('0x13')]){if(_0x3d195c[_0xc630('0x13')]['code']===0x1f4){logger[_0xc630('0x13')](_0xc630('0xe'),_0x41accd,_0x3d195c[_0xc630('0x13')][_0xc630('0x14')]);return _0x3cdcc0(_0x3d195c[_0xc630('0x13')][_0xc630('0x14')]);}logger[_0xc630('0x13')]('CannedAnswer,\x20%s,\x20%s',_0x41accd,_0x3d195c[_0xc630('0x13')][_0xc630('0x14')]);return _0x1cf8c4(_0x3d195c[_0xc630('0x13')]['message']);}else{logger[_0xc630('0xd')](_0xc630('0xe'),_0x41accd,_0xc630('0x11'));_0x1cf8c4(_0x3d195c['result'][_0xc630('0x14')]);}})[_0xc630('0x15')](function(_0x2bdc3b){logger['error'](_0xc630('0xe'),_0x41accd,_0x2bdc3b);_0x3cdcc0(_0x2bdc3b);});});}
\ No newline at end of file
index 0aacf95..3bcd446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbae9=['path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x5906ba,_0xc0e1e6){var _0x11e417=function(_0x848258){while(--_0x848258){_0x5906ba['push'](_0x5906ba['shift']());}};_0x11e417(++_0xc0e1e6);}(_0xbae9,0x197));var _0x9bae=function(_0x16db8b,_0xca7d28){_0x16db8b=_0x16db8b-0x0;var _0x5ba017=_0xbae9[_0x16db8b];return _0x5ba017;};'use strict';var multer=require(_0x9bae('0x0'));var util=require('util');var path=require(_0x9bae('0x1'));var timeout=require(_0x9bae('0x2'));var express=require('express');var router=express['Router']();var auth=require(_0x9bae('0x3'));var interaction=require(_0x9bae('0x4'));var config=require(_0x9bae('0x5'));var controller=require(_0x9bae('0x6'));router[_0x9bae('0x7')]('/',auth[_0x9bae('0x8')](),controller['index']);router[_0x9bae('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x9bae('0x9')]('/',auth['isAuthenticated'](),controller[_0x9bae('0xa')]);router[_0x9bae('0xb')](_0x9bae('0xc'),auth['isAuthenticated'](),controller[_0x9bae('0xd')]);router[_0x9bae('0xe')](_0x9bae('0xc'),auth[_0x9bae('0x8')](),controller[_0x9bae('0xf')]);module[_0x9bae('0x10')]=router;
\ No newline at end of file
+var _0x36c5=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','isAuthenticated','index','get','/:id','show','post','put'];(function(_0x5066bc,_0x53217f){var _0x3f8297=function(_0x164afb){while(--_0x164afb){_0x5066bc['push'](_0x5066bc['shift']());}};_0x3f8297(++_0x53217f);}(_0x36c5,0xa4));var _0x536c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36c5[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x536c('0x0'));var util=require(_0x536c('0x1'));var path=require(_0x536c('0x2'));var timeout=require(_0x536c('0x3'));var express=require('express');var router=express[_0x536c('0x4')]();var auth=require(_0x536c('0x5'));var interaction=require(_0x536c('0x6'));var config=require(_0x536c('0x7'));var controller=require(_0x536c('0x8'));router['get']('/',auth[_0x536c('0x9')](),controller[_0x536c('0xa')]);router[_0x536c('0xb')](_0x536c('0xc'),auth[_0x536c('0x9')](),controller[_0x536c('0xd')]);router[_0x536c('0xe')]('/',auth[_0x536c('0x9')](),controller['create']);router[_0x536c('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x536c('0x10')]);router[_0x536c('0x11')](_0x536c('0xc'),auth['isAuthenticated'](),controller[_0x536c('0x12')]);module[_0x536c('0x13')]=router;
\ No newline at end of file
index 287f8d4..f5188c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b79=['STRING','INTEGER','sequelize','DATE','1970-01-01\x2000:00:01'];(function(_0x8a500c,_0x200848){var _0x117e7b=function(_0x5dace8){while(--_0x5dace8){_0x8a500c['push'](_0x8a500c['shift']());}};_0x117e7b(++_0x200848);}(_0x8b79,0x151));var _0x98b7=function(_0x28622b,_0x7473fe){_0x28622b=_0x28622b-0x0;var _0x42e22c=_0x8b79[_0x28622b];return _0x42e22c;};'use strict';var Sequelize=require(_0x98b7('0x0'));module['exports']={'calldate':{'type':Sequelize[_0x98b7('0x1')],'allowNull':![],'defaultValue':_0x98b7('0x2')},'clid':{'type':Sequelize[_0x98b7('0x3')]},'src':{'type':Sequelize[_0x98b7('0x3')]},'dst':{'type':Sequelize[_0x98b7('0x3')]},'dcontext':{'type':Sequelize[_0x98b7('0x3')]},'channel':{'type':Sequelize[_0x98b7('0x3')]},'dstchannel':{'type':Sequelize[_0x98b7('0x3')]},'lastapp':{'type':Sequelize[_0x98b7('0x3')]},'lastdata':{'type':Sequelize[_0x98b7('0x3')]},'duration':{'type':Sequelize[_0x98b7('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x98b7('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x98b7('0x3')]},'amaflags':{'type':Sequelize[_0x98b7('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x98b7('0x3')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x98b7('0x3')]},'peeraccount':{'type':Sequelize[_0x98b7('0x3')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x89d1=['INTEGER','exports','1970-01-01\x2000:00:01','STRING'];(function(_0x176be1,_0x395190){var _0x2117df=function(_0x2ba5c6){while(--_0x2ba5c6){_0x176be1['push'](_0x176be1['shift']());}};_0x2117df(++_0x395190);}(_0x89d1,0x1ed));var _0x189d=function(_0xf0733c,_0x488a7e){_0xf0733c=_0xf0733c-0x0;var _0x328901=_0x89d1[_0xf0733c];return _0x328901;};'use strict';var Sequelize=require('sequelize');module[_0x189d('0x0')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x189d('0x1')},'clid':{'type':Sequelize[_0x189d('0x2')]},'src':{'type':Sequelize[_0x189d('0x2')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0x189d('0x2')]},'channel':{'type':Sequelize[_0x189d('0x2')]},'dstchannel':{'type':Sequelize[_0x189d('0x2')]},'lastapp':{'type':Sequelize[_0x189d('0x2')]},'lastdata':{'type':Sequelize[_0x189d('0x2')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x189d('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x189d('0x2')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x189d('0x2')]},'sequence':{'type':Sequelize[_0x189d('0x2')]},'peeraccount':{'type':Sequelize[_0x189d('0x2')]},'type':{'type':Sequelize[_0x189d('0x2')]},'tag':{'type':Sequelize[_0x189d('0x2')]}};
\ No newline at end of file
index 795e80d..e753f17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dcd=['desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','Content-Range','reject','save','update','then','destroy','end','error','stack','name','send','Cdr','rawAttributes','model','keys','query','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','add','day','merge','filter','type','key','VIRTUAL','field','count','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','eml-format','rimraf','request-promise','mustache','util','path','sox','ejs','lodash','squel','jsforce'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8dcd,0x1f4));var _0xd8dc=function(_0x5341e6,_0x3af208){_0x5341e6=_0x5341e6-0x0;var _0x333a5a=_0x8dcd[_0x5341e6];return _0x333a5a;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xd8dc('0x0'));var rimraf=require(_0xd8dc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd8dc('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd8dc('0x3'));var util=require(_0xd8dc('0x4'));var path=require(_0xd8dc('0x5'));var sox=require(_0xd8dc('0x6'));var csv=require('to-csv');var ejs=require(_0xd8dc('0x7'));var fs=require('fs');var _=require(_0xd8dc('0x8'));var squel=require(_0xd8dc('0x9'));var crypto=require('crypto');var jsforce=require(_0xd8dc('0xa'));var deskjs=require(_0xd8dc('0xb'));var toCsv=require(_0xd8dc('0xc'));var querystring=require(_0xd8dc('0xd'));var Papa=require('papaparse');var Redis=require(_0xd8dc('0xe'));var qs=require(_0xd8dc('0xf'));var logger=require(_0xd8dc('0x10'))(_0xd8dc('0x11'));var utils=require('../../config/utils');var config=require(_0xd8dc('0x12'));var db=require(_0xd8dc('0x13'))['db'];function respondWithStatusCode(_0x22e6cf,_0x12dfa5){_0x12dfa5=_0x12dfa5||0xcc;return function(_0x5821bd){if(_0x5821bd){return _0x22e6cf[_0xd8dc('0x14')](_0x12dfa5);}return _0x22e6cf[_0xd8dc('0x15')](_0x12dfa5)['end']();};}function respondWithResult(_0x3a5011,_0x5d45dc){_0x5d45dc=_0x5d45dc||0xc8;return function(_0x4fc917){if(_0x4fc917){return _0x3a5011[_0xd8dc('0x15')](_0x5d45dc)[_0xd8dc('0x16')](_0x4fc917);}};}function respondWithFilteredResult(_0x1641bb,_0x345926){return function(_0x143165){if(_0x143165){var _0x341b6f=_0x143165['count'],_0xb3fc01=_0x345926[_0xd8dc('0x17')],_0x2914cd=_0x345926[_0xd8dc('0x17')]+_0x345926['limit'],_0xd071ca;if(_0x2914cd>=_0x341b6f){_0x2914cd=_0x341b6f;_0xd071ca=0xc8;}else{_0xd071ca=0xce;}_0x1641bb[_0xd8dc('0x15')](_0xd071ca);return _0x1641bb['set'](_0xd8dc('0x18'),_0xb3fc01+'-'+_0x2914cd+'/'+_0x341b6f)[_0xd8dc('0x16')](_0x143165);}return null;};}function patchUpdates(_0x1e1848){return function(_0xf200f6){try{jsonpatch['apply'](_0xf200f6,_0x1e1848,!![]);}catch(_0x599227){return BPromise[_0xd8dc('0x19')](_0x599227);}return _0xf200f6[_0xd8dc('0x1a')]();};}function saveUpdates(_0x2415ac,_0x5a4fdc){return function(_0x4887de){if(_0x4887de){return _0x4887de[_0xd8dc('0x1b')](_0x2415ac)[_0xd8dc('0x1c')](function(_0xa508f4){return _0xa508f4;});}return null;};}function removeEntity(_0x980914,_0x1cac06){return function(_0x35be8c){if(_0x35be8c){return _0x35be8c[_0xd8dc('0x1d')]()[_0xd8dc('0x1c')](function(){_0x980914[_0xd8dc('0x15')](0xcc)[_0xd8dc('0x1e')]();});}};}function handleEntityNotFound(_0x4426e4,_0x260147){return function(_0xa42d99){if(!_0xa42d99){_0x4426e4[_0xd8dc('0x14')](0x194);}return _0xa42d99;};}function handleError(_0x47e574,_0x5db038){_0x5db038=_0x5db038||0x1f4;return function(_0x452522){logger[_0xd8dc('0x1f')](_0x452522[_0xd8dc('0x20')]);if(_0x452522[_0xd8dc('0x21')]){delete _0x452522['name'];}_0x47e574['status'](_0x5db038)[_0xd8dc('0x22')](_0x452522);};}exports['index']=function(_0x308289,_0x47dce8){var _0x1bd7cb={},_0x3173dc={},_0x219c99={'count':0x0,'rows':[]};var _0x3faea6=db[_0xd8dc('0x23')][_0xd8dc('0x24')];_0x3173dc[_0xd8dc('0x25')]=_[_0xd8dc('0x26')](_0x3faea6);var _0x2b53f2={'dateStart':_0x308289[_0xd8dc('0x27')]['dateStart'],'dateEnd':_0x308289[_0xd8dc('0x27')][_0xd8dc('0x28')]};delete _0x308289[_0xd8dc('0x27')]['dateStart'];delete _0x308289[_0xd8dc('0x27')][_0xd8dc('0x28')];_0x3173dc['query']=_[_0xd8dc('0x26')](_0x308289[_0xd8dc('0x27')]);_0x3173dc[_0xd8dc('0x29')]=_[_0xd8dc('0x2a')](_0x3173dc[_0xd8dc('0x25')],_0x3173dc['query']);_0x1bd7cb['attributes']=_[_0xd8dc('0x2a')](_0x3173dc['model'],qs[_0xd8dc('0x2b')](_0x308289['query'][_0xd8dc('0x2b')]));_0x1bd7cb[_0xd8dc('0x2c')]=_0x1bd7cb[_0xd8dc('0x2c')][_0xd8dc('0x2d')]?_0x1bd7cb[_0xd8dc('0x2c')]:_0x3173dc['model'];if(!_0x308289[_0xd8dc('0x27')][_0xd8dc('0x2e')](_0xd8dc('0x2f'))){_0x1bd7cb[_0xd8dc('0x30')]=qs[_0xd8dc('0x30')](_0x308289[_0xd8dc('0x27')]['limit']);_0x1bd7cb[_0xd8dc('0x17')]=qs[_0xd8dc('0x17')](_0x308289[_0xd8dc('0x27')]['offset']);}_0x1bd7cb[_0xd8dc('0x31')]=qs[_0xd8dc('0x32')](_0x308289[_0xd8dc('0x27')][_0xd8dc('0x32')]);_0x1bd7cb[_0xd8dc('0x33')]=qs[_0xd8dc('0x29')](_[_0xd8dc('0x34')](_0x308289[_0xd8dc('0x27')],_0x3173dc[_0xd8dc('0x29')]));if(_0x2b53f2['dateStart']){if(_0x2b53f2[_0xd8dc('0x28')]){_0x2b53f2[_0xd8dc('0x28')]=moment(_0x2b53f2[_0xd8dc('0x28')])[_0xd8dc('0x35')](0x1,'day');}else{_0x2b53f2[_0xd8dc('0x28')]=moment(_0x2b53f2['dateStart'])[_0xd8dc('0x35')](0x1,_0xd8dc('0x36'));}_[_0xd8dc('0x37')](_0x1bd7cb['where'],{'createdAt':{'$gte':_0x2b53f2['dateStart'],'$lte':_0x2b53f2[_0xd8dc('0x28')]}});}if(_0x308289[_0xd8dc('0x27')][_0xd8dc('0x38')]){_0x1bd7cb[_0xd8dc('0x33')]=_[_0xd8dc('0x37')](_0x1bd7cb['where'],{'$or':_['map'](_0x3faea6,function(_0x5792c8){if(_0x5792c8[_0xd8dc('0x39')][_0xd8dc('0x3a')]!==_0xd8dc('0x3b')){var _0x100963={};_0x100963[_0x5792c8[_0xd8dc('0x3c')]]={'$like':'%'+_0x308289[_0xd8dc('0x27')][_0xd8dc('0x38')]+'%'};return _0x100963;}})});}_0x1bd7cb=_[_0xd8dc('0x37')]({},_0x1bd7cb,_0x308289['options']);var _0x54544a={'where':_0x1bd7cb[_0xd8dc('0x33')]};return db['Cdr'][_0xd8dc('0x3d')](_0x54544a)[_0xd8dc('0x1c')](function(_0x1edf2d){_0x219c99[_0xd8dc('0x3d')]=_0x1edf2d;if(_0x308289[_0xd8dc('0x27')][_0xd8dc('0x3e')]){_0x1bd7cb['include']=[{'all':!![]}];}return db[_0xd8dc('0x23')][_0xd8dc('0x3f')](_0x1bd7cb);})[_0xd8dc('0x1c')](function(_0x54a1aa){_0x219c99[_0xd8dc('0x40')]=_0x54a1aa;return _0x219c99;})[_0xd8dc('0x1c')](respondWithFilteredResult(_0x47dce8,_0x1bd7cb))[_0xd8dc('0x41')](handleError(_0x47dce8,null));};exports[_0xd8dc('0x42')]=function(_0xbffc8a,_0x3898ab){var _0x48f161={'raw':!![],'where':{'id':_0xbffc8a[_0xd8dc('0x43')]['id']}},_0x4e0412={};_0x4e0412['model']=_[_0xd8dc('0x26')](db[_0xd8dc('0x23')]['rawAttributes']);_0x4e0412[_0xd8dc('0x27')]=_[_0xd8dc('0x26')](_0xbffc8a[_0xd8dc('0x27')]);_0x4e0412[_0xd8dc('0x29')]=_[_0xd8dc('0x2a')](_0x4e0412['model'],_0x4e0412[_0xd8dc('0x27')]);_0x48f161[_0xd8dc('0x2c')]=_['intersection'](_0x4e0412[_0xd8dc('0x25')],qs[_0xd8dc('0x2b')](_0xbffc8a['query'][_0xd8dc('0x2b')]));_0x48f161['attributes']=_0x48f161['attributes'][_0xd8dc('0x2d')]?_0x48f161[_0xd8dc('0x2c')]:_0x4e0412[_0xd8dc('0x25')];if(_0xbffc8a[_0xd8dc('0x27')]['includeAll']){_0x48f161[_0xd8dc('0x44')]=[{'all':!![]}];}_0x48f161=_[_0xd8dc('0x37')]({},_0x48f161,_0xbffc8a['options']);return db[_0xd8dc('0x23')][_0xd8dc('0x45')](_0x48f161)[_0xd8dc('0x1c')](handleEntityNotFound(_0x3898ab,null))[_0xd8dc('0x1c')](respondWithResult(_0x3898ab,null))[_0xd8dc('0x41')](handleError(_0x3898ab,null));};exports[_0xd8dc('0x46')]=function(_0x399b7d,_0x54ee01){return db[_0xd8dc('0x23')][_0xd8dc('0x46')](_0x399b7d['body'],{})[_0xd8dc('0x1c')](respondWithResult(_0x54ee01,0xc9))[_0xd8dc('0x41')](handleError(_0x54ee01,null));};exports[_0xd8dc('0x1b')]=function(_0x2e0108,_0x1a3a00){if(_0x2e0108[_0xd8dc('0x47')]['id']){delete _0x2e0108[_0xd8dc('0x47')]['id'];}return db['Cdr'][_0xd8dc('0x45')]({'where':{'id':_0x2e0108[_0xd8dc('0x43')]['id']}})[_0xd8dc('0x1c')](handleEntityNotFound(_0x1a3a00,null))[_0xd8dc('0x1c')](saveUpdates(_0x2e0108[_0xd8dc('0x47')],null))[_0xd8dc('0x1c')](respondWithResult(_0x1a3a00,null))[_0xd8dc('0x41')](handleError(_0x1a3a00,null));};exports['destroy']=function(_0x5beaae,_0x45c5a0){return db[_0xd8dc('0x23')][_0xd8dc('0x45')]({'where':{'id':_0x5beaae[_0xd8dc('0x43')]['id']}})[_0xd8dc('0x1c')](handleEntityNotFound(_0x45c5a0,null))[_0xd8dc('0x1c')](removeEntity(_0x45c5a0,null))[_0xd8dc('0x41')](handleError(_0x45c5a0,null));};exports['describe']=function(_0x3b5f2f,_0x1a91a1){return db[_0xd8dc('0x23')][_0xd8dc('0x48')]()[_0xd8dc('0x1c')](respondWithResult(_0x1a91a1,null))['catch'](handleError(_0x1a91a1,null));};
\ No newline at end of file
+var _0x23a3=['save','then','destroy','end','error','stack','name','send','index','Cdr','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','add','day','merge','map','VIRTUAL','field','filter','options','includeAll','findAll','catch','params','include','find','create','body','update','describe','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','sendStatus','status','json','count','offset','set','Content-Range','apply','reject'];(function(_0x1b8e4d,_0xac40e8){var _0x462119=function(_0xba9338){while(--_0xba9338){_0x1b8e4d['push'](_0x1b8e4d['shift']());}};_0x462119(++_0xac40e8);}(_0x23a3,0x19d));var _0x323a=function(_0x54ab12,_0x2cc565){_0x54ab12=_0x54ab12-0x0;var _0x5e70a4=_0x23a3[_0x54ab12];return _0x5e70a4;};'use strict';var pdf=require(_0x323a('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x323a('0x1'));var zipdir=require(_0x323a('0x2'));var jsonpatch=require(_0x323a('0x3'));var rp=require(_0x323a('0x4'));var moment=require(_0x323a('0x5'));var BPromise=require(_0x323a('0x6'));var Mustache=require(_0x323a('0x7'));var util=require(_0x323a('0x8'));var path=require(_0x323a('0x9'));var sox=require('sox');var csv=require(_0x323a('0xa'));var ejs=require(_0x323a('0xb'));var fs=require('fs');var _=require(_0x323a('0xc'));var squel=require(_0x323a('0xd'));var crypto=require(_0x323a('0xe'));var jsforce=require(_0x323a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x323a('0xa'));var querystring=require(_0x323a('0x10'));var Papa=require(_0x323a('0x11'));var Redis=require(_0x323a('0x12'));var qs=require(_0x323a('0x13'));var logger=require('../../config/logger')(_0x323a('0x14'));var utils=require(_0x323a('0x15'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ed4f1,_0x528b1a){_0x528b1a=_0x528b1a||0xcc;return function(_0x254ec3){if(_0x254ec3){return _0x4ed4f1[_0x323a('0x16')](_0x528b1a);}return _0x4ed4f1[_0x323a('0x17')](_0x528b1a)['end']();};}function respondWithResult(_0x4f4cfd,_0x57c3a9){_0x57c3a9=_0x57c3a9||0xc8;return function(_0x1d7519){if(_0x1d7519){return _0x4f4cfd['status'](_0x57c3a9)[_0x323a('0x18')](_0x1d7519);}};}function respondWithFilteredResult(_0x5700f7,_0x55a3c3){return function(_0x2a9443){if(_0x2a9443){var _0xb778b5=_0x2a9443[_0x323a('0x19')],_0x52f567=_0x55a3c3[_0x323a('0x1a')],_0x342208=_0x55a3c3[_0x323a('0x1a')]+_0x55a3c3['limit'],_0x3a7802;if(_0x342208>=_0xb778b5){_0x342208=_0xb778b5;_0x3a7802=0xc8;}else{_0x3a7802=0xce;}_0x5700f7[_0x323a('0x17')](_0x3a7802);return _0x5700f7[_0x323a('0x1b')](_0x323a('0x1c'),_0x52f567+'-'+_0x342208+'/'+_0xb778b5)[_0x323a('0x18')](_0x2a9443);}return null;};}function patchUpdates(_0x3e3d07){return function(_0x50d2f0){try{jsonpatch[_0x323a('0x1d')](_0x50d2f0,_0x3e3d07,!![]);}catch(_0x38f194){return BPromise[_0x323a('0x1e')](_0x38f194);}return _0x50d2f0[_0x323a('0x1f')]();};}function saveUpdates(_0x3c0caf,_0x7ab579){return function(_0xd5c31b){if(_0xd5c31b){return _0xd5c31b['update'](_0x3c0caf)[_0x323a('0x20')](function(_0x544264){return _0x544264;});}return null;};}function removeEntity(_0xd13e03,_0x1f2273){return function(_0x3094cf){if(_0x3094cf){return _0x3094cf[_0x323a('0x21')]()['then'](function(){_0xd13e03['status'](0xcc)[_0x323a('0x22')]();});}};}function handleEntityNotFound(_0xa03088,_0x3abd12){return function(_0x5ce661){if(!_0x5ce661){_0xa03088[_0x323a('0x16')](0x194);}return _0x5ce661;};}function handleError(_0x212a76,_0x575ac4){_0x575ac4=_0x575ac4||0x1f4;return function(_0x6e342a){logger[_0x323a('0x23')](_0x6e342a[_0x323a('0x24')]);if(_0x6e342a[_0x323a('0x25')]){delete _0x6e342a['name'];}_0x212a76['status'](_0x575ac4)[_0x323a('0x26')](_0x6e342a);};}exports[_0x323a('0x27')]=function(_0x16436b,_0x27294f){var _0x5aa56d={},_0x2ae4e0={},_0x1816ef={'count':0x0,'rows':[]};var _0x5a7b2a=db[_0x323a('0x28')][_0x323a('0x29')];_0x2ae4e0[_0x323a('0x2a')]=_[_0x323a('0x2b')](_0x5a7b2a);var _0x1805a9={'dateStart':_0x16436b[_0x323a('0x2c')][_0x323a('0x2d')],'dateEnd':_0x16436b[_0x323a('0x2c')][_0x323a('0x2e')]};delete _0x16436b[_0x323a('0x2c')][_0x323a('0x2d')];delete _0x16436b['query'][_0x323a('0x2e')];_0x2ae4e0[_0x323a('0x2c')]=_[_0x323a('0x2b')](_0x16436b[_0x323a('0x2c')]);_0x2ae4e0[_0x323a('0x2f')]=_[_0x323a('0x30')](_0x2ae4e0[_0x323a('0x2a')],_0x2ae4e0['query']);_0x5aa56d[_0x323a('0x31')]=_[_0x323a('0x30')](_0x2ae4e0[_0x323a('0x2a')],qs[_0x323a('0x32')](_0x16436b[_0x323a('0x2c')][_0x323a('0x32')]));_0x5aa56d[_0x323a('0x31')]=_0x5aa56d['attributes'][_0x323a('0x33')]?_0x5aa56d[_0x323a('0x31')]:_0x2ae4e0[_0x323a('0x2a')];if(!_0x16436b[_0x323a('0x2c')][_0x323a('0x34')]('nolimit')){_0x5aa56d[_0x323a('0x35')]=qs[_0x323a('0x35')](_0x16436b[_0x323a('0x2c')]['limit']);_0x5aa56d[_0x323a('0x1a')]=qs[_0x323a('0x1a')](_0x16436b['query'][_0x323a('0x1a')]);}_0x5aa56d['order']=qs['sort'](_0x16436b[_0x323a('0x2c')][_0x323a('0x36')]);_0x5aa56d[_0x323a('0x37')]=qs['filters'](_['pick'](_0x16436b[_0x323a('0x2c')],_0x2ae4e0[_0x323a('0x2f')]));if(_0x1805a9[_0x323a('0x2d')]){if(_0x1805a9['dateEnd']){_0x1805a9[_0x323a('0x2e')]=moment(_0x1805a9[_0x323a('0x2e')])[_0x323a('0x38')](0x1,_0x323a('0x39'));}else{_0x1805a9[_0x323a('0x2e')]=moment(_0x1805a9[_0x323a('0x2d')])[_0x323a('0x38')](0x1,'day');}_['merge'](_0x5aa56d[_0x323a('0x37')],{'createdAt':{'$gte':_0x1805a9['dateStart'],'$lte':_0x1805a9['dateEnd']}});}if(_0x16436b[_0x323a('0x2c')]['filter']){_0x5aa56d[_0x323a('0x37')]=_[_0x323a('0x3a')](_0x5aa56d[_0x323a('0x37')],{'$or':_[_0x323a('0x3b')](_0x5a7b2a,function(_0x12bb16){if(_0x12bb16['type']['key']!==_0x323a('0x3c')){var _0x252aa4={};_0x252aa4[_0x12bb16[_0x323a('0x3d')]]={'$like':'%'+_0x16436b['query'][_0x323a('0x3e')]+'%'};return _0x252aa4;}})});}_0x5aa56d=_['merge']({},_0x5aa56d,_0x16436b[_0x323a('0x3f')]);var _0x27e909={'where':_0x5aa56d[_0x323a('0x37')]};return db[_0x323a('0x28')]['count'](_0x27e909)[_0x323a('0x20')](function(_0x52cbf3){_0x1816ef[_0x323a('0x19')]=_0x52cbf3;if(_0x16436b[_0x323a('0x2c')][_0x323a('0x40')]){_0x5aa56d['include']=[{'all':!![]}];}return db[_0x323a('0x28')][_0x323a('0x41')](_0x5aa56d);})[_0x323a('0x20')](function(_0x3e9bcd){_0x1816ef['rows']=_0x3e9bcd;return _0x1816ef;})[_0x323a('0x20')](respondWithFilteredResult(_0x27294f,_0x5aa56d))[_0x323a('0x42')](handleError(_0x27294f,null));};exports['show']=function(_0x274846,_0x32a901){var _0x2de980={'raw':!![],'where':{'id':_0x274846[_0x323a('0x43')]['id']}},_0x32b7d6={};_0x32b7d6[_0x323a('0x2a')]=_[_0x323a('0x2b')](db['Cdr'][_0x323a('0x29')]);_0x32b7d6[_0x323a('0x2c')]=_[_0x323a('0x2b')](_0x274846['query']);_0x32b7d6[_0x323a('0x2f')]=_[_0x323a('0x30')](_0x32b7d6[_0x323a('0x2a')],_0x32b7d6[_0x323a('0x2c')]);_0x2de980[_0x323a('0x31')]=_[_0x323a('0x30')](_0x32b7d6[_0x323a('0x2a')],qs[_0x323a('0x32')](_0x274846[_0x323a('0x2c')][_0x323a('0x32')]));_0x2de980['attributes']=_0x2de980[_0x323a('0x31')]['length']?_0x2de980['attributes']:_0x32b7d6[_0x323a('0x2a')];if(_0x274846[_0x323a('0x2c')][_0x323a('0x40')]){_0x2de980[_0x323a('0x44')]=[{'all':!![]}];}_0x2de980=_[_0x323a('0x3a')]({},_0x2de980,_0x274846[_0x323a('0x3f')]);return db[_0x323a('0x28')][_0x323a('0x45')](_0x2de980)['then'](handleEntityNotFound(_0x32a901,null))[_0x323a('0x20')](respondWithResult(_0x32a901,null))[_0x323a('0x42')](handleError(_0x32a901,null));};exports[_0x323a('0x46')]=function(_0x202aaa,_0xca8cbc){return db[_0x323a('0x28')][_0x323a('0x46')](_0x202aaa[_0x323a('0x47')],{})[_0x323a('0x20')](respondWithResult(_0xca8cbc,0xc9))['catch'](handleError(_0xca8cbc,null));};exports[_0x323a('0x48')]=function(_0x1194a2,_0x2445cb){if(_0x1194a2[_0x323a('0x47')]['id']){delete _0x1194a2[_0x323a('0x47')]['id'];}return db['Cdr']['find']({'where':{'id':_0x1194a2['params']['id']}})[_0x323a('0x20')](handleEntityNotFound(_0x2445cb,null))[_0x323a('0x20')](saveUpdates(_0x1194a2[_0x323a('0x47')],null))[_0x323a('0x20')](respondWithResult(_0x2445cb,null))['catch'](handleError(_0x2445cb,null));};exports[_0x323a('0x21')]=function(_0x4cc78c,_0x2eb52d){return db[_0x323a('0x28')]['find']({'where':{'id':_0x4cc78c[_0x323a('0x43')]['id']}})[_0x323a('0x20')](handleEntityNotFound(_0x2eb52d,null))['then'](removeEntity(_0x2eb52d,null))['catch'](handleError(_0x2eb52d,null));};exports[_0x323a('0x49')]=function(_0x1b25e5,_0x3edf33){return db['Cdr'][_0x323a('0x49')]()[_0x323a('0x20')](respondWithResult(_0x3edf33,null))['catch'](handleError(_0x3edf33,null));};
\ No newline at end of file
index 5043f2d..e15b3b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0fa=['Cdr','accountcode','calldate','disposition','src','uniqueid','util','../../config/logger','api','moment','request-promise','./cdr.attributes'];(function(_0x1937c6,_0x28ad03){var _0x5094aa=function(_0x37249d){while(--_0x37249d){_0x1937c6['push'](_0x1937c6['shift']());}};_0x5094aa(++_0x28ad03);}(_0xf0fa,0x1c2));var _0xaf0f=function(_0x560abf,_0x256943){_0x560abf=_0x560abf-0x0;var _0x46a093=_0xf0fa[_0x560abf];return _0x46a093;};'use strict';var _=require('lodash');var util=require(_0xaf0f('0x0'));var logger=require(_0xaf0f('0x1'))(_0xaf0f('0x2'));var moment=require(_0xaf0f('0x3'));var BPromise=require('bluebird');var rp=require(_0xaf0f('0x4'));var attributes=require(_0xaf0f('0x5'));module['exports']=function(_0x55e84c,_0x24db90){return _0x55e84c['define'](_0xaf0f('0x6'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0xaf0f('0x7'),'fields':[_0xaf0f('0x7')]},{'name':'calldate','fields':[_0xaf0f('0x8')]},{'name':_0xaf0f('0x9'),'fields':[_0xaf0f('0x9')]},{'name':'dst','fields':['dst']},{'name':'src','fields':[_0xaf0f('0xa')]},{'name':_0xaf0f('0xb'),'fields':[_0xaf0f('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xc928=['calldate','disposition','dst','src','uniqueid','lodash','util','api','moment','request-promise','./cdr.attributes','exports','accountcode'];(function(_0x339923,_0xafb4b5){var _0x5008b8=function(_0x425082){while(--_0x425082){_0x339923['push'](_0x339923['shift']());}};_0x5008b8(++_0xafb4b5);}(_0xc928,0x13d));var _0x8c92=function(_0x101524,_0x44d95a){_0x101524=_0x101524-0x0;var _0x1ad131=_0xc928[_0x101524];return _0x1ad131;};'use strict';var _=require(_0x8c92('0x0'));var util=require(_0x8c92('0x1'));var logger=require('../../config/logger')(_0x8c92('0x2'));var moment=require(_0x8c92('0x3'));var BPromise=require('bluebird');var rp=require(_0x8c92('0x4'));var attributes=require(_0x8c92('0x5'));module[_0x8c92('0x6')]=function(_0x4a7600,_0x3878e3){return _0x4a7600['define']('Cdr',attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x8c92('0x7')]},{'name':_0x8c92('0x8'),'fields':[_0x8c92('0x8')]},{'name':_0x8c92('0x9'),'fields':[_0x8c92('0x9')]},{'name':_0x8c92('0xa'),'fields':[_0x8c92('0xa')]},{'name':_0x8c92('0xb'),'fields':['src']},{'name':'uniqueid','fields':[_0x8c92('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index 01d31ab..5eee55b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1731=['jayson/promise','client','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x354164,_0x4c30de){var _0x5db9a8=function(_0x319b08){while(--_0x319b08){_0x354164['push'](_0x354164['shift']());}};_0x5db9a8(++_0x4c30de);}(_0x1731,0x1b0));var _0x1173=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1731[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1173('0x0'));var util=require(_0x1173('0x1'));var moment=require('moment');var BPromise=require(_0x1173('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1173('0x3'));var db=require(_0x1173('0x4'))['db'];var utils=require(_0x1173('0x5'));var logger=require('../../config/logger')(_0x1173('0x6'));var config=require(_0x1173('0x7'));var jayson=require(_0x1173('0x8'));var client=jayson[_0x1173('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cf093,_0x34b1f0,_0x1283d6){return new BPromise(function(_0x37ecc5,_0x2f0926){return client[_0x1173('0xa')](_0x1cf093,_0x1283d6)[_0x1173('0xb')](function(_0x38d02c){logger[_0x1173('0xc')](_0x1173('0xd'),_0x34b1f0,_0x1173('0xe'));logger[_0x1173('0xf')](_0x1173('0x10'),_0x34b1f0,_0x1173('0xe'),JSON['stringify'](_0x38d02c));if(_0x38d02c[_0x1173('0x11')]){if(_0x38d02c[_0x1173('0x11')]['code']===0x1f4){logger[_0x1173('0x11')]('Cdr,\x20%s,\x20%s',_0x34b1f0,_0x38d02c[_0x1173('0x11')][_0x1173('0x12')]);return _0x2f0926(_0x38d02c[_0x1173('0x11')][_0x1173('0x12')]);}logger[_0x1173('0x11')](_0x1173('0xd'),_0x34b1f0,_0x38d02c[_0x1173('0x11')][_0x1173('0x12')]);return _0x37ecc5(_0x38d02c[_0x1173('0x11')]['message']);}else{logger[_0x1173('0xc')](_0x1173('0xd'),_0x34b1f0,'request\x20sent');_0x37ecc5(_0x38d02c['result'][_0x1173('0x12')]);}})[_0x1173('0x13')](function(_0x4dc33b){logger[_0x1173('0x11')](_0x1173('0xd'),_0x34b1f0,_0x4dc33b);_0x2f0926(_0x4dc33b);});});}
\ No newline at end of file
+var _0xd084=['request\x20sent','debug','stringify','error','code','message','info','result','lodash','moment','randomstring','ioredis','rpc','jayson/promise','client','http','request','then','Cdr,\x20%s,\x20%s'];(function(_0x8ffcf,_0x331803){var _0x565137=function(_0xf74a2){while(--_0xf74a2){_0x8ffcf['push'](_0x8ffcf['shift']());}};_0x565137(++_0x331803);}(_0xd084,0x138));var _0x4d08=function(_0x27b0c4,_0x17192c){_0x27b0c4=_0x27b0c4-0x0;var _0xb66ebb=_0xd084[_0x27b0c4];return _0xb66ebb;};'use strict';var _=require(_0x4d08('0x0'));var util=require('util');var moment=require(_0x4d08('0x1'));var BPromise=require('bluebird');var rs=require(_0x4d08('0x2'));var fs=require('fs');var Redis=require(_0x4d08('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4d08('0x4'));var config=require('../../config/environment');var jayson=require(_0x4d08('0x5'));var client=jayson[_0x4d08('0x6')][_0x4d08('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2fac47,_0x3c4f31,_0x332828){return new BPromise(function(_0x54125f,_0x3a1644){return client[_0x4d08('0x8')](_0x2fac47,_0x332828)[_0x4d08('0x9')](function(_0x1c6f4f){logger['info'](_0x4d08('0xa'),_0x3c4f31,_0x4d08('0xb'));logger[_0x4d08('0xc')]('Cdr,\x20%s,\x20%s,\x20%s',_0x3c4f31,_0x4d08('0xb'),JSON[_0x4d08('0xd')](_0x1c6f4f));if(_0x1c6f4f[_0x4d08('0xe')]){if(_0x1c6f4f[_0x4d08('0xe')][_0x4d08('0xf')]===0x1f4){logger[_0x4d08('0xe')](_0x4d08('0xa'),_0x3c4f31,_0x1c6f4f['error'][_0x4d08('0x10')]);return _0x3a1644(_0x1c6f4f[_0x4d08('0xe')]['message']);}logger[_0x4d08('0xe')](_0x4d08('0xa'),_0x3c4f31,_0x1c6f4f[_0x4d08('0xe')][_0x4d08('0x10')]);return _0x54125f(_0x1c6f4f[_0x4d08('0xe')][_0x4d08('0x10')]);}else{logger[_0x4d08('0x11')](_0x4d08('0xa'),_0x3c4f31,_0x4d08('0xb'));_0x54125f(_0x1c6f4f[_0x4d08('0x12')]['message']);}})['catch'](function(_0x3e90df){logger[_0x4d08('0xe')](_0x4d08('0xa'),_0x3c4f31,_0x3e90df);_0x3a1644(_0x3e90df);});});}
\ No newline at end of file
index 121137b..0908d36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffcc=['put','update','destroy','exports','util','connect-timeout','express','../../config/environment','get','index','/describe','isAuthenticated','/:id','post','create'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xffcc,0x112));var _0xcffc=function(_0x503e2b,_0x3e7fbd){_0x503e2b=_0x503e2b-0x0;var _0xf66c8f=_0xffcc[_0x503e2b];return _0xf66c8f;};'use strict';var multer=require('multer');var util=require(_0xcffc('0x0'));var path=require('path');var timeout=require(_0xcffc('0x1'));var express=require(_0xcffc('0x2'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcffc('0x3'));var controller=require('./cdr.controller');router[_0xcffc('0x4')]('/',auth['isAuthenticated'](),controller[_0xcffc('0x5')]);router[_0xcffc('0x4')](_0xcffc('0x6'),auth[_0xcffc('0x7')](),controller['describe']);router[_0xcffc('0x4')](_0xcffc('0x8'),auth[_0xcffc('0x7')](),controller['show']);router[_0xcffc('0x9')]('/',auth['isAuthenticated'](),controller[_0xcffc('0xa')]);router[_0xcffc('0xb')](_0xcffc('0x8'),auth['isAuthenticated'](),controller[_0xcffc('0xc')]);router['delete']('/:id',auth[_0xcffc('0x7')](),controller[_0xcffc('0xd')]);module[_0xcffc('0xe')]=router;
\ No newline at end of file
+var _0xceef=['index','/describe','describe','/:id','show','post','create','update','delete','exports','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','isAuthenticated'];(function(_0x3217d3,_0xf66fcf){var _0x260f43=function(_0x2b4a34){while(--_0x2b4a34){_0x3217d3['push'](_0x3217d3['shift']());}};_0x260f43(++_0xf66fcf);}(_0xceef,0xdb));var _0xfcee=function(_0x127ed7,_0x18c2c5){_0x127ed7=_0x127ed7-0x0;var _0x17c7bb=_0xceef[_0x127ed7];return _0x17c7bb;};'use strict';var multer=require('multer');var util=require(_0xfcee('0x0'));var path=require('path');var timeout=require(_0xfcee('0x1'));var express=require(_0xfcee('0x2'));var router=express['Router']();var auth=require(_0xfcee('0x3'));var interaction=require(_0xfcee('0x4'));var config=require(_0xfcee('0x5'));var controller=require(_0xfcee('0x6'));router[_0xfcee('0x7')]('/',auth[_0xfcee('0x8')](),controller[_0xfcee('0x9')]);router[_0xfcee('0x7')](_0xfcee('0xa'),auth[_0xfcee('0x8')](),controller[_0xfcee('0xb')]);router[_0xfcee('0x7')](_0xfcee('0xc'),auth[_0xfcee('0x8')](),controller[_0xfcee('0xd')]);router[_0xfcee('0xe')]('/',auth[_0xfcee('0x8')](),controller[_0xfcee('0xf')]);router['put'](_0xfcee('0xc'),auth[_0xfcee('0x8')](),controller[_0xfcee('0x10')]);router[_0xfcee('0x11')](_0xfcee('0xc'),auth[_0xfcee('0x8')](),controller['destroy']);module[_0xfcee('0x12')]=router;
\ No newline at end of file
index 2d734c9..578aa53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9977=['noop','sequelize','exports','INTEGER','STRING'];(function(_0x32f1e2,_0x30e66e){var _0x1b0c01=function(_0x15f0bd){while(--_0x15f0bd){_0x32f1e2['push'](_0x32f1e2['shift']());}};_0x1b0c01(++_0x30e66e);}(_0x9977,0x17d));var _0x7997=function(_0x37a0ce,_0x28dc04){_0x37a0ce=_0x37a0ce-0x0;var _0x569f4e=_0x9977[_0x37a0ce];return _0x569f4e;};'use strict';var Sequelize=require(_0x7997('0x0'));module[_0x7997('0x1')]={'priority':{'type':Sequelize[_0x7997('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x7997('0x3')],'allowNull':![],'defaultValue':_0x7997('0x4')},'appdata':{'type':Sequelize[_0x7997('0x3')](0x1000),'defaultValue':''},'description':{'type':Sequelize[_0x7997('0x3')]},'interval':{'type':Sequelize[_0x7997('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x435d=['exports','STRING','noop','*,*,*,*','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x435d,0x103));var _0xd435=function(_0x4fe271,_0x334cf9){_0x4fe271=_0x4fe271-0x0;var _0x3d3cbc=_0x435d[_0x4fe271];return _0x3d3cbc;};'use strict';var Sequelize=require(_0xd435('0x0'));module[_0xd435('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xd435('0x2')],'allowNull':![],'defaultValue':_0xd435('0x3')},'appdata':{'type':Sequelize[_0xd435('0x2')](0x1000),'defaultValue':''},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xd435('0x4')}};
\ No newline at end of file
index 83a0282..628260f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5ae=['limit','set','Content-Range','apply','save','update','destroy','then','end','sendStatus','stack','name','send','show','model','ChatApplication','rawAttributes','query','keys','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','params','catch','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','lodash','crypto','jsforce','desk.js','../../components/parsers/qs','api','../../config/utils','../../config/environment','status','json','count','offset'];(function(_0x4c32bc,_0x3cefe4){var _0x26a3b4=function(_0x224f8d){while(--_0x224f8d){_0x4c32bc['push'](_0x4c32bc['shift']());}};_0x26a3b4(++_0x3cefe4);}(_0xc5ae,0x157));var _0xec5a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc5ae[_0x14add3];return _0x4a174f;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0xec5a('0x0'));var zipdir=require(_0xec5a('0x1'));var jsonpatch=require(_0xec5a('0x2'));var rp=require('request-promise');var moment=require(_0xec5a('0x3'));var BPromise=require(_0xec5a('0x4'));var Mustache=require(_0xec5a('0x5'));var util=require(_0xec5a('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xec5a('0x7'));var ejs=require(_0xec5a('0x8'));var fs=require('fs');var _=require(_0xec5a('0x9'));var squel=require('squel');var crypto=require(_0xec5a('0xa'));var jsforce=require(_0xec5a('0xb'));var deskjs=require(_0xec5a('0xc'));var toCsv=require(_0xec5a('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0xec5a('0xd'));var logger=require('../../config/logger')(_0xec5a('0xe'));var utils=require(_0xec5a('0xf'));var config=require(_0xec5a('0x10'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bc660,_0x30e3ec){_0x30e3ec=_0x30e3ec||0xcc;return function(_0x218fe7){if(_0x218fe7){return _0x4bc660['sendStatus'](_0x30e3ec);}return _0x4bc660[_0xec5a('0x11')](_0x30e3ec)['end']();};}function respondWithResult(_0x5c12f8,_0x48da55){_0x48da55=_0x48da55||0xc8;return function(_0x2c78cd){if(_0x2c78cd){return _0x5c12f8[_0xec5a('0x11')](_0x48da55)[_0xec5a('0x12')](_0x2c78cd);}};}function respondWithFilteredResult(_0xe29f1a,_0x169c3f){return function(_0x1ad349){if(_0x1ad349){var _0x255f44=_0x1ad349[_0xec5a('0x13')],_0x54440b=_0x169c3f[_0xec5a('0x14')],_0x21f36a=_0x169c3f['offset']+_0x169c3f[_0xec5a('0x15')],_0x1319b0;if(_0x21f36a>=_0x255f44){_0x21f36a=_0x255f44;_0x1319b0=0xc8;}else{_0x1319b0=0xce;}_0xe29f1a[_0xec5a('0x11')](_0x1319b0);return _0xe29f1a[_0xec5a('0x16')](_0xec5a('0x17'),_0x54440b+'-'+_0x21f36a+'/'+_0x255f44)[_0xec5a('0x12')](_0x1ad349);}return null;};}function patchUpdates(_0x285496){return function(_0x4352bc){try{jsonpatch[_0xec5a('0x18')](_0x4352bc,_0x285496,!![]);}catch(_0x40a38c){return BPromise['reject'](_0x40a38c);}return _0x4352bc[_0xec5a('0x19')]();};}function saveUpdates(_0x46283e,_0x344b8a){return function(_0x3e6885){if(_0x3e6885){return _0x3e6885[_0xec5a('0x1a')](_0x46283e)['then'](function(_0x1e9bf4){return _0x1e9bf4;});}return null;};}function removeEntity(_0x412ea8,_0x2f08c4){return function(_0x20d7a7){if(_0x20d7a7){return _0x20d7a7[_0xec5a('0x1b')]()[_0xec5a('0x1c')](function(){_0x412ea8[_0xec5a('0x11')](0xcc)[_0xec5a('0x1d')]();});}};}function handleEntityNotFound(_0x5e8946,_0x3ac84c){return function(_0x28a521){if(!_0x28a521){_0x5e8946[_0xec5a('0x1e')](0x194);}return _0x28a521;};}function handleError(_0x2f8124,_0x57e7b9){_0x57e7b9=_0x57e7b9||0x1f4;return function(_0x7b08d1){logger['error'](_0x7b08d1[_0xec5a('0x1f')]);if(_0x7b08d1[_0xec5a('0x20')]){delete _0x7b08d1[_0xec5a('0x20')];}_0x2f8124[_0xec5a('0x11')](_0x57e7b9)[_0xec5a('0x21')](_0x7b08d1);};}exports[_0xec5a('0x22')]=function(_0x1aeee7,_0xc33f33){var _0x296397={'raw':!![],'where':{'id':_0x1aeee7['params']['id']}},_0x2fed36={};_0x2fed36[_0xec5a('0x23')]=_['keys'](db[_0xec5a('0x24')][_0xec5a('0x25')]);_0x2fed36[_0xec5a('0x26')]=_[_0xec5a('0x27')](_0x1aeee7[_0xec5a('0x26')]);_0x2fed36[_0xec5a('0x28')]=_['intersection'](_0x2fed36['model'],_0x2fed36[_0xec5a('0x26')]);_0x296397[_0xec5a('0x29')]=_[_0xec5a('0x2a')](_0x2fed36['model'],qs[_0xec5a('0x2b')](_0x1aeee7['query'][_0xec5a('0x2b')]));_0x296397[_0xec5a('0x29')]=_0x296397['attributes'][_0xec5a('0x2c')]?_0x296397[_0xec5a('0x29')]:_0x2fed36['model'];if(_0x1aeee7[_0xec5a('0x26')][_0xec5a('0x2d')]){_0x296397[_0xec5a('0x2e')]=[{'all':!![]}];}_0x296397=_[_0xec5a('0x2f')]({},_0x296397,_0x1aeee7[_0xec5a('0x30')]);return db['ChatApplication']['find'](_0x296397)[_0xec5a('0x1c')](handleEntityNotFound(_0xc33f33,null))[_0xec5a('0x1c')](respondWithResult(_0xc33f33,null))['catch'](handleError(_0xc33f33,null));};exports[_0xec5a('0x1a')]=function(_0x4a9612,_0x4a3c79){if(_0x4a9612['body']['id']){delete _0x4a9612['body']['id'];}return db[_0xec5a('0x24')][_0xec5a('0x31')]({'where':{'id':_0x4a9612[_0xec5a('0x32')]['id']}})['then'](handleEntityNotFound(_0x4a3c79,null))['then'](saveUpdates(_0x4a9612['body'],null))[_0xec5a('0x1c')](respondWithResult(_0x4a3c79,null))[_0xec5a('0x33')](handleError(_0x4a3c79,null));};exports[_0xec5a('0x1b')]=function(_0x157928,_0x392c64){return db[_0xec5a('0x24')][_0xec5a('0x31')]({'where':{'id':_0x157928[_0xec5a('0x32')]['id']}})[_0xec5a('0x1c')](handleEntityNotFound(_0x392c64,null))[_0xec5a('0x1c')](removeEntity(_0x392c64,null))[_0xec5a('0x33')](handleError(_0x392c64,null));};
\ No newline at end of file
+var _0xa32e=['querystring','ioredis','../../config/utils','sendStatus','status','end','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','name','send','show','keys','rawAttributes','query','filters','intersection','model','attributes','fields','length','includeAll','include','options','ChatApplication','catch','body','params','find','html-pdf','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js'];(function(_0x1b7cf6,_0x18fb23){var _0x462edb=function(_0x227c55){while(--_0x227c55){_0x1b7cf6['push'](_0x1b7cf6['shift']());}};_0x462edb(++_0x18fb23);}(_0xa32e,0x8d));var _0xea32=function(_0x43d65d,_0x54d57c){_0x43d65d=_0x43d65d-0x0;var _0x2a5f77=_0xa32e[_0x43d65d];return _0x2a5f77;};'use strict';var pdf=require(_0xea32('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xea32('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xea32('0x2'));var rp=require(_0xea32('0x3'));var moment=require(_0xea32('0x4'));var BPromise=require(_0xea32('0x5'));var Mustache=require(_0xea32('0x6'));var util=require('util');var path=require(_0xea32('0x7'));var sox=require(_0xea32('0x8'));var csv=require(_0xea32('0x9'));var ejs=require(_0xea32('0xa'));var fs=require('fs');var _=require(_0xea32('0xb'));var squel=require('squel');var crypto=require(_0xea32('0xc'));var jsforce=require(_0xea32('0xd'));var deskjs=require(_0xea32('0xe'));var toCsv=require(_0xea32('0x9'));var querystring=require(_0xea32('0xf'));var Papa=require('papaparse');var Redis=require(_0xea32('0x10'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var utils=require(_0xea32('0x11'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x373407,_0x4acd89){_0x4acd89=_0x4acd89||0xcc;return function(_0x1b4303){if(_0x1b4303){return _0x373407[_0xea32('0x12')](_0x4acd89);}return _0x373407[_0xea32('0x13')](_0x4acd89)[_0xea32('0x14')]();};}function respondWithResult(_0xf34ec,_0x506876){_0x506876=_0x506876||0xc8;return function(_0x370cc5){if(_0x370cc5){return _0xf34ec[_0xea32('0x13')](_0x506876)['json'](_0x370cc5);}};}function respondWithFilteredResult(_0x1e7e01,_0x533d35){return function(_0x2b7623){if(_0x2b7623){var _0x5e094e=_0x2b7623['count'],_0x15ed65=_0x533d35[_0xea32('0x15')],_0x443995=_0x533d35[_0xea32('0x15')]+_0x533d35[_0xea32('0x16')],_0x151ef9;if(_0x443995>=_0x5e094e){_0x443995=_0x5e094e;_0x151ef9=0xc8;}else{_0x151ef9=0xce;}_0x1e7e01[_0xea32('0x13')](_0x151ef9);return _0x1e7e01[_0xea32('0x17')](_0xea32('0x18'),_0x15ed65+'-'+_0x443995+'/'+_0x5e094e)[_0xea32('0x19')](_0x2b7623);}return null;};}function patchUpdates(_0x4ae23a){return function(_0x51688a){try{jsonpatch[_0xea32('0x1a')](_0x51688a,_0x4ae23a,!![]);}catch(_0x471e62){return BPromise[_0xea32('0x1b')](_0x471e62);}return _0x51688a[_0xea32('0x1c')]();};}function saveUpdates(_0xbfe94e,_0x46676b){return function(_0xb71f48){if(_0xb71f48){return _0xb71f48[_0xea32('0x1d')](_0xbfe94e)[_0xea32('0x1e')](function(_0x23165d){return _0x23165d;});}return null;};}function removeEntity(_0x114b79,_0x139ab1){return function(_0x2cce75){if(_0x2cce75){return _0x2cce75[_0xea32('0x1f')]()[_0xea32('0x1e')](function(){_0x114b79[_0xea32('0x13')](0xcc)[_0xea32('0x14')]();});}};}function handleEntityNotFound(_0x4fe96b,_0x5019a8){return function(_0x180067){if(!_0x180067){_0x4fe96b[_0xea32('0x12')](0x194);}return _0x180067;};}function handleError(_0x2f1559,_0x3783c2){_0x3783c2=_0x3783c2||0x1f4;return function(_0xb1c4e5){logger['error'](_0xb1c4e5['stack']);if(_0xb1c4e5['name']){delete _0xb1c4e5[_0xea32('0x20')];}_0x2f1559[_0xea32('0x13')](_0x3783c2)[_0xea32('0x21')](_0xb1c4e5);};}exports[_0xea32('0x22')]=function(_0x36e85b,_0x1c1966){var _0x5cee51={'raw':!![],'where':{'id':_0x36e85b['params']['id']}},_0x2455eb={};_0x2455eb['model']=_[_0xea32('0x23')](db['ChatApplication'][_0xea32('0x24')]);_0x2455eb[_0xea32('0x25')]=_['keys'](_0x36e85b[_0xea32('0x25')]);_0x2455eb[_0xea32('0x26')]=_[_0xea32('0x27')](_0x2455eb[_0xea32('0x28')],_0x2455eb[_0xea32('0x25')]);_0x5cee51[_0xea32('0x29')]=_['intersection'](_0x2455eb['model'],qs[_0xea32('0x2a')](_0x36e85b['query'][_0xea32('0x2a')]));_0x5cee51['attributes']=_0x5cee51['attributes'][_0xea32('0x2b')]?_0x5cee51[_0xea32('0x29')]:_0x2455eb['model'];if(_0x36e85b[_0xea32('0x25')][_0xea32('0x2c')]){_0x5cee51[_0xea32('0x2d')]=[{'all':!![]}];}_0x5cee51=_['merge']({},_0x5cee51,_0x36e85b[_0xea32('0x2e')]);return db[_0xea32('0x2f')]['find'](_0x5cee51)[_0xea32('0x1e')](handleEntityNotFound(_0x1c1966,null))[_0xea32('0x1e')](respondWithResult(_0x1c1966,null))[_0xea32('0x30')](handleError(_0x1c1966,null));};exports[_0xea32('0x1d')]=function(_0x30d8f0,_0x36fe4a){if(_0x30d8f0[_0xea32('0x31')]['id']){delete _0x30d8f0[_0xea32('0x31')]['id'];}return db[_0xea32('0x2f')]['find']({'where':{'id':_0x30d8f0[_0xea32('0x32')]['id']}})[_0xea32('0x1e')](handleEntityNotFound(_0x36fe4a,null))['then'](saveUpdates(_0x30d8f0[_0xea32('0x31')],null))[_0xea32('0x1e')](respondWithResult(_0x36fe4a,null))[_0xea32('0x30')](handleError(_0x36fe4a,null));};exports[_0xea32('0x1f')]=function(_0x33318d,_0x49e4b3){return db[_0xea32('0x2f')][_0xea32('0x33')]({'where':{'id':_0x33318d[_0xea32('0x32')]['id']}})[_0xea32('0x1e')](handleEntityNotFound(_0x49e4b3,null))[_0xea32('0x1e')](removeEntity(_0x49e4b3,null))[_0xea32('0x30')](handleError(_0x49e4b3,null));};
\ No newline at end of file
index 9cfb9d3..d84698d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fc=['define','lodash','util','../../config/logger','api','moment','request-promise','./chatApplication.attributes','exports'];(function(_0x101e7b,_0x4ef05b){var _0x4995c0=function(_0x1a6488){while(--_0x1a6488){_0x101e7b['push'](_0x101e7b['shift']());}};_0x4995c0(++_0x4ef05b);}(_0xc7fc,0x172));var _0xcc7f=function(_0x5289b5,_0xc3a80b){_0x5289b5=_0x5289b5-0x0;var _0x619175=_0xc7fc[_0x5289b5];return _0x619175;};'use strict';var _=require(_0xcc7f('0x0'));var util=require(_0xcc7f('0x1'));var logger=require(_0xcc7f('0x2'))(_0xcc7f('0x3'));var moment=require(_0xcc7f('0x4'));var BPromise=require('bluebird');var rp=require(_0xcc7f('0x5'));var attributes=require(_0xcc7f('0x6'));module[_0xcc7f('0x7')]=function(_0x41a639,_0x1d8ed4){return _0x41a639[_0xcc7f('0x8')]('ChatApplication',attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1edc=['chat_applications','lodash','util','api','moment','bluebird','request-promise','exports','ChatApplication'];(function(_0x489017,_0x5af5e2){var _0x11d074=function(_0x264e05){while(--_0x264e05){_0x489017['push'](_0x489017['shift']());}};_0x11d074(++_0x5af5e2);}(_0x1edc,0xbe));var _0xc1ed=function(_0x90ccc9,_0x8e7be5){_0x90ccc9=_0x90ccc9-0x0;var _0x5736f0=_0x1edc[_0x90ccc9];return _0x5736f0;};'use strict';var _=require(_0xc1ed('0x0'));var util=require(_0xc1ed('0x1'));var logger=require('../../config/logger')(_0xc1ed('0x2'));var moment=require(_0xc1ed('0x3'));var BPromise=require(_0xc1ed('0x4'));var rp=require(_0xc1ed('0x5'));var attributes=require('./chatApplication.attributes');module[_0xc1ed('0x6')]=function(_0xfcb185,_0x3b6c04){return _0xfcb185['define'](_0xc1ed('0x7'),attributes,{'tableName':_0xc1ed('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea984c2..c672d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe6b=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment'];(function(_0x1afbb0,_0x30c8a3){var _0x327735=function(_0x2c252d){while(--_0x2c252d){_0x1afbb0['push'](_0x1afbb0['shift']());}};_0x327735(++_0x30c8a3);}(_0xfe6b,0xbb));var _0xbfe6=function(_0xe8f68f,_0x32e7c3){_0xe8f68f=_0xe8f68f-0x0;var _0x15a1d9=_0xfe6b[_0xe8f68f];return _0x15a1d9;};'use strict';var _=require(_0xbfe6('0x0'));var util=require('util');var moment=require(_0xbfe6('0x1'));var BPromise=require(_0xbfe6('0x2'));var rs=require(_0xbfe6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbfe6('0x4'))['db'];var utils=require(_0xbfe6('0x5'));var logger=require('../../config/logger')(_0xbfe6('0x6'));var config=require(_0xbfe6('0x7'));var jayson=require(_0xbfe6('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x334829,_0x3080b0,_0x1a6c75){return new BPromise(function(_0x1a64bf,_0x4dd8b3){return client[_0xbfe6('0x9')](_0x334829,_0x1a6c75)[_0xbfe6('0xa')](function(_0x84a0b1){logger[_0xbfe6('0xb')](_0xbfe6('0xc'),_0x3080b0,_0xbfe6('0xd'));logger[_0xbfe6('0xe')](_0xbfe6('0xf'),_0x3080b0,_0xbfe6('0xd'),JSON[_0xbfe6('0x10')](_0x84a0b1));if(_0x84a0b1[_0xbfe6('0x11')]){if(_0x84a0b1[_0xbfe6('0x11')]['code']===0x1f4){logger[_0xbfe6('0x11')](_0xbfe6('0xc'),_0x3080b0,_0x84a0b1[_0xbfe6('0x11')][_0xbfe6('0x12')]);return _0x4dd8b3(_0x84a0b1[_0xbfe6('0x11')]['message']);}logger[_0xbfe6('0x11')](_0xbfe6('0xc'),_0x3080b0,_0x84a0b1['error'][_0xbfe6('0x12')]);return _0x1a64bf(_0x84a0b1['error'][_0xbfe6('0x12')]);}else{logger['info'](_0xbfe6('0xc'),_0x3080b0,_0xbfe6('0xd'));_0x1a64bf(_0x84a0b1[_0xbfe6('0x13')][_0xbfe6('0x12')]);}})[_0xbfe6('0x14')](function(_0x36388c){logger[_0xbfe6('0x11')](_0xbfe6('0xc'),_0x3080b0,_0x36388c);_0x4dd8b3(_0x36388c);});});}
\ No newline at end of file
+var _0x8311=['error','code','ChatApplication,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then','request\x20sent','debug','stringify'];(function(_0x5fa1b0,_0x2d0a2e){var _0x5d4c06=function(_0x39f844){while(--_0x39f844){_0x5fa1b0['push'](_0x5fa1b0['shift']());}};_0x5d4c06(++_0x2d0a2e);}(_0x8311,0x6f));var _0x1831=function(_0x36bf8e,_0xc065a2){_0x36bf8e=_0x36bf8e-0x0;var _0x567be4=_0x8311[_0x36bf8e];return _0x567be4;};'use strict';var _=require(_0x1831('0x0'));var util=require(_0x1831('0x1'));var moment=require(_0x1831('0x2'));var BPromise=require('bluebird');var rs=require(_0x1831('0x3'));var fs=require('fs');var Redis=require(_0x1831('0x4'));var db=require(_0x1831('0x5'))['db'];var utils=require(_0x1831('0x6'));var logger=require('../../config/logger')(_0x1831('0x7'));var config=require(_0x1831('0x8'));var jayson=require(_0x1831('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3149bf,_0x3eaba9,_0x5f2c96){return new BPromise(function(_0x409944,_0xe7b55){return client[_0x1831('0xa')](_0x3149bf,_0x5f2c96)[_0x1831('0xb')](function(_0x55f328){logger['info']('ChatApplication,\x20%s,\x20%s',_0x3eaba9,_0x1831('0xc'));logger[_0x1831('0xd')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x3eaba9,_0x1831('0xc'),JSON[_0x1831('0xe')](_0x55f328));if(_0x55f328[_0x1831('0xf')]){if(_0x55f328['error'][_0x1831('0x10')]===0x1f4){logger[_0x1831('0xf')](_0x1831('0x11'),_0x3eaba9,_0x55f328['error'][_0x1831('0x12')]);return _0xe7b55(_0x55f328[_0x1831('0xf')][_0x1831('0x12')]);}logger['error'](_0x1831('0x11'),_0x3eaba9,_0x55f328['error']['message']);return _0x409944(_0x55f328['error'][_0x1831('0x12')]);}else{logger['info'](_0x1831('0x11'),_0x3eaba9,_0x1831('0xc'));_0x409944(_0x55f328[_0x1831('0x13')]['message']);}})[_0x1831('0x14')](function(_0x1f1e84){logger[_0x1831('0xf')](_0x1831('0x11'),_0x3eaba9,_0x1f1e84);_0xe7b55(_0x1f1e84);});});}
\ No newline at end of file
index 1176dc6..228a77d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5359=['show','update','isAuthenticated','destroy','multer','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id'];(function(_0x4a04de,_0x2e342c){var _0xbbe018=function(_0x39639c){while(--_0x39639c){_0x4a04de['push'](_0x4a04de['shift']());}};_0xbbe018(++_0x2e342c);}(_0x5359,0x12d));var _0x9535=function(_0x57beb3,_0x5fca98){_0x57beb3=_0x57beb3-0x0;var _0x43bd14=_0x5359[_0x57beb3];return _0x43bd14;};'use strict';var multer=require(_0x9535('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var auth=require(_0x9535('0x1'));var interaction=require(_0x9535('0x2'));var config=require(_0x9535('0x3'));var controller=require(_0x9535('0x4'));router[_0x9535('0x5')](_0x9535('0x6'),auth['isAuthenticated'](),controller[_0x9535('0x7')]);router['put'](_0x9535('0x6'),auth['isAuthenticated'](),controller[_0x9535('0x8')]);router['delete'](_0x9535('0x6'),auth[_0x9535('0x9')](),controller[_0x9535('0xa')]);module['exports']=router;
\ No newline at end of file
+var _0x1354=['put','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated','show'];(function(_0x2c5255,_0x4340c3){var _0x30d0ea=function(_0x131ba1){while(--_0x131ba1){_0x2c5255['push'](_0x2c5255['shift']());}};_0x30d0ea(++_0x4340c3);}(_0x1354,0x103));var _0x4135=function(_0x54a2e4,_0x1ff92c){_0x54a2e4=_0x54a2e4-0x0;var _0x4742d0=_0x1354[_0x54a2e4];return _0x4742d0;};'use strict';var multer=require(_0x4135('0x0'));var util=require(_0x4135('0x1'));var path=require(_0x4135('0x2'));var timeout=require(_0x4135('0x3'));var express=require(_0x4135('0x4'));var router=express[_0x4135('0x5')]();var auth=require('../../components/auth/service');var interaction=require(_0x4135('0x6'));var config=require(_0x4135('0x7'));var controller=require(_0x4135('0x8'));router[_0x4135('0x9')](_0x4135('0xa'),auth[_0x4135('0xb')](),controller[_0x4135('0xc')]);router[_0x4135('0xd')]('/:id',auth[_0x4135('0xb')](),controller['update']);router[_0x4135('0xe')](_0x4135('0xa'),auth[_0x4135('0xb')](),controller['destroy']);module[_0x4135('0xf')]=router;
\ No newline at end of file
index c446c13..6e7cad6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x036a=['STRING','sequelize','exports'];(function(_0x32ac4b,_0xde1989){var _0x35a8ee=function(_0x574707){while(--_0x574707){_0x32ac4b['push'](_0x32ac4b['shift']());}};_0x35a8ee(++_0xde1989);}(_0x036a,0x1cc));var _0xa036=function(_0x547f4c,_0x4ed60c){_0x547f4c=_0x547f4c-0x0;var _0x128be0=_0x036a[_0x547f4c];return _0x128be0;};'use strict';var Sequelize=require(_0xa036('0x0'));module[_0xa036('0x1')]={'name':{'type':Sequelize[_0xa036('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xa036('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xd439=['BOOLEAN','exports','STRING'];(function(_0x19fa2e,_0x15755b){var _0x2118ec=function(_0x241bf6){while(--_0x241bf6){_0x19fa2e['push'](_0x19fa2e['shift']());}};_0x2118ec(++_0x15755b);}(_0xd439,0x1f0));var _0x9d43=function(_0xc454b2,_0xb6a5a9){_0xc454b2=_0xc454b2-0x0;var _0x3bb4af=_0xd439[_0xc454b2];return _0x3bb4af;};'use strict';var Sequelize=require('sequelize');module[_0x9d43('0x0')]={'name':{'type':Sequelize[_0x9d43('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0x9d43('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 6f260bd..ab160f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','./chatGroup.socket','register','jayson/promise','client','request','then','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','count','offset','limit','set','apply','save','update','destroy','name','send','index','ChatGroup','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','day','add','merge','filter','map','type','VIRTUAL','field','options','includeAll','include','findAll','rows','show','params','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','findOne','User','fields','removeMembers','addMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x5229a1,_0x5349f8){var _0xc4cb55=function(_0x211269){while(--_0x211269){_0x5229a1['push'](_0x5229a1['shift']());}};_0xc4cb55(++_0x5349f8);}(_0x71ab,0x64));var _0xb71a=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x71ab[_0x138adb];return _0x1b27f2;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xb71a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb71a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb71a('0x2'));var moment=require(_0xb71a('0x3'));var BPromise=require(_0xb71a('0x4'));var Mustache=require(_0xb71a('0x5'));var util=require(_0xb71a('0x6'));var path=require(_0xb71a('0x7'));var sox=require(_0xb71a('0x8'));var csv=require(_0xb71a('0x9'));var ejs=require(_0xb71a('0xa'));var fs=require('fs');var _=require(_0xb71a('0xb'));var squel=require(_0xb71a('0xc'));var crypto=require(_0xb71a('0xd'));var jsforce=require(_0xb71a('0xe'));var deskjs=require(_0xb71a('0xf'));var toCsv=require(_0xb71a('0x9'));var querystring=require(_0xb71a('0x10'));var Papa=require(_0xb71a('0x11'));var Redis=require(_0xb71a('0x12'));var qs=require('../../components/parsers/qs');var logger=require(_0xb71a('0x13'))('api');var utils=require(_0xb71a('0x14'));var config=require(_0xb71a('0x15'));var db=require(_0xb71a('0x16'))['db'];config['redis']=_[_0xb71a('0x17')](config['redis'],{'host':_0xb71a('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb71a('0x19'))[_0xb71a('0x1a')](socket);var jayson=require(_0xb71a('0x1b'));var client=jayson[_0xb71a('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47ee48,_0x5364e3,_0x12900a,_0xc189cd){return new BPromise(function(_0x15252a,_0x42fc55){var _0x3cd0f0=_0xc189cd||client;return _0x3cd0f0[_0xb71a('0x1d')](_0x47ee48,_0x12900a)[_0xb71a('0x1e')](function(_0x2ec64a){logger[_0xb71a('0x1f')]('ChatGroup,\x20%s,\x20%s',_0x5364e3,_0xb71a('0x20'));logger[_0xb71a('0x21')](_0xb71a('0x22'),_0x5364e3,_0xb71a('0x20'),JSON[_0xb71a('0x23')](_0x2ec64a));if(_0x2ec64a[_0xb71a('0x24')]){if(_0x2ec64a[_0xb71a('0x24')][_0xb71a('0x25')]===0x1f4){logger[_0xb71a('0x24')](_0xb71a('0x26'),_0x5364e3,_0x2ec64a[_0xb71a('0x24')]['message']);return _0x42fc55(_0x2ec64a['error'][_0xb71a('0x27')]);}logger[_0xb71a('0x24')]('ChatGroup,\x20%s,\x20%s',_0x5364e3,_0x2ec64a['error'][_0xb71a('0x27')]);return _0x15252a(_0x2ec64a['error'][_0xb71a('0x27')]);}else{logger[_0xb71a('0x1f')](_0xb71a('0x26'),_0x5364e3,_0xb71a('0x20'));_0x15252a(_0x2ec64a[_0xb71a('0x28')][_0xb71a('0x27')]);}})[_0xb71a('0x29')](function(_0x14aac7){logger['error'](_0xb71a('0x26'),_0x5364e3,_0x14aac7);_0x42fc55(_0x14aac7);});});}function respondWithStatusCode(_0x2c15bc,_0x353930){_0x353930=_0x353930||0xcc;return function(_0xa0743a){if(_0xa0743a){return _0x2c15bc[_0xb71a('0x2a')](_0x353930);}return _0x2c15bc[_0xb71a('0x2b')](_0x353930)[_0xb71a('0x2c')]();};}function respondWithResult(_0xfc8df0,_0x31085b){_0x31085b=_0x31085b||0xc8;return function(_0x2a847a){if(_0x2a847a){return _0xfc8df0[_0xb71a('0x2b')](_0x31085b)[_0xb71a('0x2d')](_0x2a847a);}};}function respondWithFilteredResult(_0x160f0f,_0x5ae0ed){return function(_0x2e8ea6){if(_0x2e8ea6){var _0x39d874=_0x2e8ea6[_0xb71a('0x2e')],_0x1689ce=_0x5ae0ed[_0xb71a('0x2f')],_0x358954=_0x5ae0ed[_0xb71a('0x2f')]+_0x5ae0ed[_0xb71a('0x30')],_0x2fbd73;if(_0x358954>=_0x39d874){_0x358954=_0x39d874;_0x2fbd73=0xc8;}else{_0x2fbd73=0xce;}_0x160f0f[_0xb71a('0x2b')](_0x2fbd73);return _0x160f0f[_0xb71a('0x31')]('Content-Range',_0x1689ce+'-'+_0x358954+'/'+_0x39d874)['json'](_0x2e8ea6);}return null;};}function patchUpdates(_0x3112d3){return function(_0x5c2a45){try{jsonpatch[_0xb71a('0x32')](_0x5c2a45,_0x3112d3,!![]);}catch(_0x1b1aa8){return BPromise['reject'](_0x1b1aa8);}return _0x5c2a45[_0xb71a('0x33')]();};}function saveUpdates(_0xa42f25,_0x1fe058){return function(_0x251d82){if(_0x251d82){return _0x251d82[_0xb71a('0x34')](_0xa42f25)[_0xb71a('0x1e')](function(_0x5dd779){return _0x5dd779;});}return null;};}function removeEntity(_0x204f99,_0x3f137a){return function(_0x256dbe){if(_0x256dbe){return _0x256dbe[_0xb71a('0x35')]()['then'](function(){_0x204f99[_0xb71a('0x2b')](0xcc)[_0xb71a('0x2c')]();});}};}function handleEntityNotFound(_0x3e1261,_0x3db4e0){return function(_0x1ec701){if(!_0x1ec701){_0x3e1261[_0xb71a('0x2a')](0x194);}return _0x1ec701;};}function handleError(_0x2962a0,_0x333280){_0x333280=_0x333280||0x1f4;return function(_0x10a203){logger[_0xb71a('0x24')](_0x10a203['stack']);if(_0x10a203['name']){delete _0x10a203[_0xb71a('0x36')];}_0x2962a0[_0xb71a('0x2b')](_0x333280)[_0xb71a('0x37')](_0x10a203);};}exports[_0xb71a('0x38')]=function(_0xb5d842,_0x247540){var _0x394b4f={},_0x564fd8={},_0x990c82={'count':0x0,'rows':[]};var _0x57ad22=db[_0xb71a('0x39')][_0xb71a('0x3a')];_0x564fd8[_0xb71a('0x3b')]=_[_0xb71a('0x3c')](_0x57ad22);var _0x5f54d8={'dateStart':_0xb5d842[_0xb71a('0x3d')][_0xb71a('0x3e')],'dateEnd':_0xb5d842[_0xb71a('0x3d')][_0xb71a('0x3f')]};delete _0xb5d842[_0xb71a('0x3d')][_0xb71a('0x3e')];delete _0xb5d842[_0xb71a('0x3d')][_0xb71a('0x3f')];_0x564fd8[_0xb71a('0x3d')]=_['keys'](_0xb5d842[_0xb71a('0x3d')]);_0x564fd8['filters']=_[_0xb71a('0x40')](_0x564fd8[_0xb71a('0x3b')],_0x564fd8[_0xb71a('0x3d')]);_0x394b4f[_0xb71a('0x41')]=_[_0xb71a('0x40')](_0x564fd8[_0xb71a('0x3b')],qs['fields'](_0xb5d842['query']['fields']));_0x394b4f[_0xb71a('0x41')]=_0x394b4f['attributes'][_0xb71a('0x42')]?_0x394b4f[_0xb71a('0x41')]:_0x564fd8[_0xb71a('0x3b')];if(!_0xb5d842[_0xb71a('0x3d')][_0xb71a('0x43')](_0xb71a('0x44'))){_0x394b4f['limit']=qs[_0xb71a('0x30')](_0xb5d842[_0xb71a('0x3d')][_0xb71a('0x30')]);_0x394b4f[_0xb71a('0x2f')]=qs[_0xb71a('0x2f')](_0xb5d842[_0xb71a('0x3d')]['offset']);}_0x394b4f[_0xb71a('0x45')]=qs[_0xb71a('0x46')](_0xb5d842[_0xb71a('0x3d')][_0xb71a('0x46')]);_0x394b4f[_0xb71a('0x47')]=qs[_0xb71a('0x48')](_[_0xb71a('0x49')](_0xb5d842['query'],_0x564fd8['filters']));if(_0x5f54d8[_0xb71a('0x3e')]){if(_0x5f54d8[_0xb71a('0x3f')]){_0x5f54d8[_0xb71a('0x3f')]=moment(_0x5f54d8[_0xb71a('0x3f')])['add'](0x1,_0xb71a('0x4a'));}else{_0x5f54d8['dateEnd']=moment(_0x5f54d8[_0xb71a('0x3e')])[_0xb71a('0x4b')](0x1,'day');}_[_0xb71a('0x4c')](_0x394b4f[_0xb71a('0x47')],{'createdAt':{'$gte':_0x5f54d8[_0xb71a('0x3e')],'$lte':_0x5f54d8[_0xb71a('0x3f')]}});}if(_0xb5d842['query'][_0xb71a('0x4d')]){_0x394b4f[_0xb71a('0x47')]=_[_0xb71a('0x4c')](_0x394b4f['where'],{'$or':_[_0xb71a('0x4e')](_0x57ad22,function(_0x1cd434){if(_0x1cd434[_0xb71a('0x4f')]['key']!==_0xb71a('0x50')){var _0xfc6a80={};_0xfc6a80[_0x1cd434[_0xb71a('0x51')]]={'$like':'%'+_0xb5d842[_0xb71a('0x3d')][_0xb71a('0x4d')]+'%'};return _0xfc6a80;}})});}_0x394b4f=_['merge']({},_0x394b4f,_0xb5d842[_0xb71a('0x52')]);var _0x44f610={'where':_0x394b4f[_0xb71a('0x47')]};return db[_0xb71a('0x39')]['count'](_0x44f610)['then'](function(_0x23b4c0){_0x990c82[_0xb71a('0x2e')]=_0x23b4c0;if(_0xb5d842[_0xb71a('0x3d')][_0xb71a('0x53')]){_0x394b4f[_0xb71a('0x54')]=[{'all':!![]}];}return db[_0xb71a('0x39')][_0xb71a('0x55')](_0x394b4f);})[_0xb71a('0x1e')](function(_0x2ebe69){_0x990c82[_0xb71a('0x56')]=_0x2ebe69;return _0x990c82;})['then'](respondWithFilteredResult(_0x247540,_0x394b4f))[_0xb71a('0x29')](handleError(_0x247540,null));};exports[_0xb71a('0x57')]=function(_0x500196,_0x1c0536){var _0x58116c={'raw':!![],'where':{'id':_0x500196[_0xb71a('0x58')]['id']}},_0x2f2e0b={};_0x2f2e0b[_0xb71a('0x3b')]=_[_0xb71a('0x3c')](db[_0xb71a('0x39')]['rawAttributes']);_0x2f2e0b[_0xb71a('0x3d')]=_['keys'](_0x500196[_0xb71a('0x3d')]);_0x2f2e0b[_0xb71a('0x48')]=_['intersection'](_0x2f2e0b['model'],_0x2f2e0b[_0xb71a('0x3d')]);_0x58116c[_0xb71a('0x41')]=_['intersection'](_0x2f2e0b['model'],qs['fields'](_0x500196[_0xb71a('0x3d')]['fields']));_0x58116c['attributes']=_0x58116c[_0xb71a('0x41')][_0xb71a('0x42')]?_0x58116c[_0xb71a('0x41')]:_0x2f2e0b[_0xb71a('0x3b')];if(_0x500196['query'][_0xb71a('0x53')]){_0x58116c[_0xb71a('0x54')]=[{'all':!![]}];}_0x58116c=_[_0xb71a('0x4c')]({},_0x58116c,_0x500196['options']);return db[_0xb71a('0x39')][_0xb71a('0x59')](_0x58116c)['then'](handleEntityNotFound(_0x1c0536,null))[_0xb71a('0x1e')](respondWithResult(_0x1c0536,null))[_0xb71a('0x29')](handleError(_0x1c0536,null));};exports[_0xb71a('0x5a')]=function(_0x531d75,_0x43c310){return db['ChatGroup'][_0xb71a('0x5a')](_0x531d75[_0xb71a('0x5b')],{})['then'](respondWithResult(_0x43c310,0xc9))[_0xb71a('0x29')](handleError(_0x43c310,null));};exports[_0xb71a('0x34')]=function(_0x1b24c2,_0x1c6312){if(_0x1b24c2[_0xb71a('0x5b')]['id']){delete _0x1b24c2[_0xb71a('0x5b')]['id'];}return db[_0xb71a('0x39')]['find']({'where':{'id':_0x1b24c2['params']['id']}})[_0xb71a('0x1e')](handleEntityNotFound(_0x1c6312,null))[_0xb71a('0x1e')](saveUpdates(_0x1b24c2[_0xb71a('0x5b')],null))[_0xb71a('0x1e')](respondWithResult(_0x1c6312,null))[_0xb71a('0x29')](handleError(_0x1c6312,null));};exports['destroy']=function(_0x5a45df,_0x6ceada){return db[_0xb71a('0x39')]['find']({'where':{'id':_0x5a45df[_0xb71a('0x58')]['id']}})[_0xb71a('0x1e')](handleEntityNotFound(_0x6ceada,null))['then'](removeEntity(_0x6ceada,null))[_0xb71a('0x29')](handleError(_0x6ceada,null));};exports[_0xb71a('0x5c')]=function(_0x38de3a,_0x4759a4){return db['ChatGroup'][_0xb71a('0x5c')]()[_0xb71a('0x1e')](respondWithResult(_0x4759a4,null))['catch'](handleError(_0x4759a4,null));};exports[_0xb71a('0x5d')]=function(_0x73f725,_0x32fd93,_0x2881a3){return db[_0xb71a('0x5e')][_0xb71a('0x2e')]({'where':{'ChatGroupId':_0x73f725[_0xb71a('0x58')]['id'],'ToId':_0x73f725[_0xb71a('0x5f')]['id'],'read':![]}})['then'](function(_0x5c1080){return{'id':_[_0xb71a('0x60')](_0x73f725['params']['id']),'count':_0x5c1080};})[_0xb71a('0x1e')](respondWithResult(_0x32fd93,null))[_0xb71a('0x29')](handleError(_0x32fd93,null));};exports['addMembers']=function(_0x2d3035,_0x220749,_0x10b715){return db[_0xb71a('0x39')][_0xb71a('0x59')]({'where':{'id':_0x2d3035[_0xb71a('0x58')]['id']}})['then'](handleEntityNotFound(_0x220749,null))['then'](function(_0x248c74){if(_0x248c74){return _0x248c74[_0xb71a('0x61')](_0x2d3035[_0xb71a('0x5b')]['ids'],_[_0xb71a('0x62')](_0x2d3035['body'],[_0xb71a('0x63'),'id'])||{});}})['then'](respondWithResult(_0x220749,null))['catch'](handleError(_0x220749,null));};exports[_0xb71a('0x64')]=function(_0x9af0c,_0x399e52,_0x2e770d){var _0x2347c5={};var _0x4eca80={};var _0x2b758b;var _0x58e746;return db[_0xb71a('0x39')][_0xb71a('0x65')]({'where':{'id':_0x9af0c[_0xb71a('0x58')]['id']}})['then'](handleEntityNotFound(_0x399e52,null))['then'](function(_0x3e7bf7){if(_0x3e7bf7){_0x2b758b=_0x3e7bf7;_0x4eca80[_0xb71a('0x3b')]=_[_0xb71a('0x3c')](db[_0xb71a('0x66')][_0xb71a('0x3a')]);_0x4eca80['query']=_[_0xb71a('0x3c')](_0x9af0c[_0xb71a('0x3d')]);_0x4eca80[_0xb71a('0x48')]=_[_0xb71a('0x40')](_0x4eca80[_0xb71a('0x3b')],_0x4eca80['query']);_0x2347c5['attributes']=_[_0xb71a('0x40')](_0x4eca80[_0xb71a('0x3b')],qs[_0xb71a('0x67')](_0x9af0c[_0xb71a('0x3d')][_0xb71a('0x67')]));_0x2347c5[_0xb71a('0x41')]=_0x2347c5[_0xb71a('0x41')]['length']?_0x2347c5[_0xb71a('0x41')]:_0x4eca80[_0xb71a('0x3b')];_0x2347c5['order']=qs[_0xb71a('0x46')](_0x9af0c[_0xb71a('0x3d')][_0xb71a('0x46')]);_0x2347c5['where']=qs[_0xb71a('0x48')](_[_0xb71a('0x49')](_0x9af0c[_0xb71a('0x3d')],_0x4eca80['filters']));if(_0x9af0c[_0xb71a('0x3d')][_0xb71a('0x4d')]){_0x2347c5[_0xb71a('0x47')]=_[_0xb71a('0x4c')](_0x2347c5[_0xb71a('0x47')],{'$or':_[_0xb71a('0x4e')](_0x2347c5[_0xb71a('0x41')],function(_0x201e7d){var _0x5b9fc7={};_0x5b9fc7[_0x201e7d]={'$like':'%'+_0x9af0c[_0xb71a('0x3d')][_0xb71a('0x4d')]+'%'};return _0x5b9fc7;})});}_0x2347c5=_[_0xb71a('0x4c')]({},_0x2347c5,_0x9af0c[_0xb71a('0x52')]);return _0x2b758b[_0xb71a('0x64')](_0x2347c5);}})[_0xb71a('0x1e')](function(_0x2e9ac6){if(_0x2e9ac6){_0x58e746=_0x2e9ac6['length'];if(!_0x9af0c[_0xb71a('0x3d')]['hasOwnProperty'](_0xb71a('0x44'))){_0x2347c5[_0xb71a('0x30')]=qs['limit'](_0x9af0c[_0xb71a('0x3d')]['limit']);_0x2347c5[_0xb71a('0x2f')]=qs['offset'](_0x9af0c[_0xb71a('0x3d')][_0xb71a('0x2f')]);}return _0x2b758b[_0xb71a('0x64')](_0x2347c5);}})[_0xb71a('0x1e')](function(_0x5d9d89){if(_0x5d9d89){return _0x5d9d89?{'count':_0x58e746,'rows':_0x5d9d89}:null;}})[_0xb71a('0x1e')](respondWithResult(_0x399e52,null))[_0xb71a('0x29')](handleError(_0x399e52,null));};exports['removeMembers']=function(_0x2c7157,_0x4bf3b1,_0x4ee552){var _0x501492;return db['ChatGroup'][_0xb71a('0x59')]({'where':{'id':_0x2c7157[_0xb71a('0x58')]['id']}})[_0xb71a('0x1e')](handleEntityNotFound(_0x4bf3b1,null))['then'](function(_0x2bdf9b){if(_0x2bdf9b){return _0x2bdf9b[_0xb71a('0x68')](_0x2c7157['query'][_0xb71a('0x63')]);}})[_0xb71a('0x1e')](respondWithStatusCode(_0x4bf3b1,null))[_0xb71a('0x29')](handleError(_0x4bf3b1,null));};exports[_0xb71a('0x69')]=function(_0x3209d3,_0x16fbc1,_0x537d00){if(_0x3209d3[_0xb71a('0x5b')]['id']){delete _0x3209d3[_0xb71a('0x5b')]['id'];}return db[_0xb71a('0x39')][_0xb71a('0x59')]({'where':{'id':_0x3209d3[_0xb71a('0x58')]['id']}})[_0xb71a('0x1e')](handleEntityNotFound(_0x16fbc1,null))['then'](function(_0x2a7570){if(_0x2a7570){_0x3209d3[_0xb71a('0x5b')]['ChatGroupId']=_0x2a7570['id'];return db[_0xb71a('0x5e')][_0xb71a('0x5a')](_0x3209d3[_0xb71a('0x5b')]);}})['then'](respondWithResult(_0x16fbc1,null))[_0xb71a('0x29')](handleError(_0x16fbc1,null));};exports[_0xb71a('0x6a')]=function(_0x28bc74,_0x575a0a,_0x1a658e){var _0x4168b7={};var _0x5c0fd6={};var _0x3e8216;var _0x3076c1;return db[_0xb71a('0x39')][_0xb71a('0x65')]({'where':{'id':_0x28bc74['params']['id']}})[_0xb71a('0x1e')](handleEntityNotFound(_0x575a0a,null))[_0xb71a('0x1e')](function(_0x157535){if(_0x157535){_0x3e8216=_0x157535;_0x5c0fd6[_0xb71a('0x3b')]=_['keys'](db[_0xb71a('0x5e')][_0xb71a('0x3a')]);_0x5c0fd6['query']=_[_0xb71a('0x3c')](_0x28bc74[_0xb71a('0x3d')]);_0x5c0fd6['filters']=_[_0xb71a('0x40')](_0x5c0fd6[_0xb71a('0x3b')],_0x5c0fd6[_0xb71a('0x3d')]);_0x4168b7['attributes']=_[_0xb71a('0x40')](_0x5c0fd6[_0xb71a('0x3b')],qs[_0xb71a('0x67')](_0x28bc74[_0xb71a('0x3d')][_0xb71a('0x67')]));_0x4168b7[_0xb71a('0x41')]=_0x4168b7[_0xb71a('0x41')][_0xb71a('0x42')]?_0x4168b7[_0xb71a('0x41')]:_0x5c0fd6['model'];_0x4168b7['order']=qs[_0xb71a('0x46')](_0x28bc74[_0xb71a('0x3d')][_0xb71a('0x46')]);_0x4168b7[_0xb71a('0x47')]=qs[_0xb71a('0x48')](_[_0xb71a('0x49')](_0x28bc74['query'],_0x5c0fd6[_0xb71a('0x48')]));if(_0x28bc74['query'][_0xb71a('0x4d')]){_0x4168b7['where']=_[_0xb71a('0x4c')](_0x4168b7[_0xb71a('0x47')],{'$or':_['map'](_0x4168b7[_0xb71a('0x41')],function(_0x4284c7){var _0xe0940f={};_0xe0940f[_0x4284c7]={'$like':'%'+_0x28bc74[_0xb71a('0x3d')][_0xb71a('0x4d')]+'%'};return _0xe0940f;})});}if(_0x28bc74['query'][_0xb71a('0x6b')]){var _0x3807e6=_0x28bc74['query'][_0xb71a('0x6b')][_0xb71a('0x6c')](',');var _0x533316={};_0x533316[_0x3807e6[0x0]]={'$gte':moment(_0x3807e6[0x1])[_0xb71a('0x6d')](_0xb71a('0x6e'))};_0x4168b7[_0xb71a('0x47')]=_['merge'](_0x4168b7[_0xb71a('0x47')],_0x533316);}_0x4168b7=_[_0xb71a('0x4c')]({},_0x4168b7,_0x28bc74[_0xb71a('0x52')]);return _0x3e8216['getMessages'](_0x4168b7);}})[_0xb71a('0x1e')](function(_0xb8cd95){if(_0xb8cd95){_0x3076c1=_0xb8cd95[_0xb71a('0x42')];if(!_0x28bc74[_0xb71a('0x3d')][_0xb71a('0x43')]('nolimit')){_0x4168b7[_0xb71a('0x30')]=qs['limit'](_0x28bc74[_0xb71a('0x3d')][_0xb71a('0x30')]);_0x4168b7[_0xb71a('0x2f')]=qs['offset'](_0x28bc74['query'][_0xb71a('0x2f')]);}return _0x3e8216[_0xb71a('0x6a')](_0x4168b7);}})[_0xb71a('0x1e')](function(_0xe710ac){if(_0xe710ac){return _0xe710ac?{'count':_0x3076c1,'rows':_0xe710ac}:null;}})[_0xb71a('0x1e')](respondWithResult(_0x575a0a,null))[_0xb71a('0x29')](handleError(_0x575a0a,null));};
\ No newline at end of file
+var _0xafc4=['split','format','getMessages','hasOwnProperty','html-pdf','rimraf','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./chatGroup.socket','register','jayson/promise','client','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','message','sendStatus','status','end','count','offset','limit','json','apply','reject','update','destroy','stack','name','index','ChatGroup','rawAttributes','query','dateEnd','dateStart','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','add','day','merge','map','key','VIRTUAL','field','filter','includeAll','include','show','params','options','find','catch','create','body','describe','getUnread','ChatInternalMessage','toInteger','addMembers','ids','omit','findOne','User','getMembers','removeMembers','addMessage','ChatGroupId','$gte'];(function(_0x11155f,_0x57b687){var _0xd07e48=function(_0x592615){while(--_0x592615){_0x11155f['push'](_0x11155f['shift']());}};_0xd07e48(++_0x57b687);}(_0xafc4,0x69));var _0x4afc=function(_0x1ea37a,_0x353d8c){_0x1ea37a=_0x1ea37a-0x0;var _0x43088c=_0xafc4[_0x1ea37a];return _0x43088c;};'use strict';var pdf=require(_0x4afc('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x4afc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4afc('0x2'));var rp=require(_0x4afc('0x3'));var moment=require(_0x4afc('0x4'));var BPromise=require(_0x4afc('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x4afc('0x6'));var csv=require(_0x4afc('0x7'));var ejs=require(_0x4afc('0x8'));var fs=require('fs');var _=require(_0x4afc('0x9'));var squel=require(_0x4afc('0xa'));var crypto=require(_0x4afc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4afc('0xc'));var toCsv=require(_0x4afc('0x7'));var querystring=require(_0x4afc('0xd'));var Papa=require(_0x4afc('0xe'));var Redis=require(_0x4afc('0xf'));var qs=require(_0x4afc('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x4afc('0x11'));var config=require('../../config/environment');var db=require(_0x4afc('0x12'))['db'];config[_0x4afc('0x13')]=_['defaults'](config[_0x4afc('0x13')],{'host':_0x4afc('0x14'),'port':0x18eb});var socket=require(_0x4afc('0x15'))(new Redis(config[_0x4afc('0x13')]));require(_0x4afc('0x16'))[_0x4afc('0x17')](socket);var jayson=require(_0x4afc('0x18'));var client=jayson[_0x4afc('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x26f3f1,_0x429fd8,_0x2c636b,_0x1e2c31){return new BPromise(function(_0x5f2dc9,_0x4e32e8){var _0x2452ae=_0x1e2c31||client;return _0x2452ae['request'](_0x26f3f1,_0x2c636b)[_0x4afc('0x1a')](function(_0x24ed6d){logger[_0x4afc('0x1b')](_0x4afc('0x1c'),_0x429fd8,_0x4afc('0x1d'));logger[_0x4afc('0x1e')](_0x4afc('0x1f'),_0x429fd8,_0x4afc('0x1d'),JSON[_0x4afc('0x20')](_0x24ed6d));if(_0x24ed6d[_0x4afc('0x21')]){if(_0x24ed6d[_0x4afc('0x21')]['code']===0x1f4){logger[_0x4afc('0x21')](_0x4afc('0x1c'),_0x429fd8,_0x24ed6d[_0x4afc('0x21')][_0x4afc('0x22')]);return _0x4e32e8(_0x24ed6d['error'][_0x4afc('0x22')]);}logger[_0x4afc('0x21')](_0x4afc('0x1c'),_0x429fd8,_0x24ed6d[_0x4afc('0x21')][_0x4afc('0x22')]);return _0x5f2dc9(_0x24ed6d[_0x4afc('0x21')][_0x4afc('0x22')]);}else{logger['info'](_0x4afc('0x1c'),_0x429fd8,_0x4afc('0x1d'));_0x5f2dc9(_0x24ed6d['result'][_0x4afc('0x22')]);}})['catch'](function(_0x1aa676){logger[_0x4afc('0x21')](_0x4afc('0x1c'),_0x429fd8,_0x1aa676);_0x4e32e8(_0x1aa676);});});}function respondWithStatusCode(_0x2876f2,_0x86dbd4){_0x86dbd4=_0x86dbd4||0xcc;return function(_0x28a86c){if(_0x28a86c){return _0x2876f2[_0x4afc('0x23')](_0x86dbd4);}return _0x2876f2[_0x4afc('0x24')](_0x86dbd4)[_0x4afc('0x25')]();};}function respondWithResult(_0x100220,_0x4e8273){_0x4e8273=_0x4e8273||0xc8;return function(_0x359c07){if(_0x359c07){return _0x100220[_0x4afc('0x24')](_0x4e8273)['json'](_0x359c07);}};}function respondWithFilteredResult(_0xc3952e,_0x244f6c){return function(_0x2d6112){if(_0x2d6112){var _0x4e254d=_0x2d6112[_0x4afc('0x26')],_0x52212d=_0x244f6c['offset'],_0x54433f=_0x244f6c[_0x4afc('0x27')]+_0x244f6c[_0x4afc('0x28')],_0x426e9d;if(_0x54433f>=_0x4e254d){_0x54433f=_0x4e254d;_0x426e9d=0xc8;}else{_0x426e9d=0xce;}_0xc3952e['status'](_0x426e9d);return _0xc3952e['set']('Content-Range',_0x52212d+'-'+_0x54433f+'/'+_0x4e254d)[_0x4afc('0x29')](_0x2d6112);}return null;};}function patchUpdates(_0x34434a){return function(_0x17a43d){try{jsonpatch[_0x4afc('0x2a')](_0x17a43d,_0x34434a,!![]);}catch(_0xc1d91){return BPromise[_0x4afc('0x2b')](_0xc1d91);}return _0x17a43d['save']();};}function saveUpdates(_0x290391,_0x3d1693){return function(_0x1ba6b5){if(_0x1ba6b5){return _0x1ba6b5[_0x4afc('0x2c')](_0x290391)[_0x4afc('0x1a')](function(_0xf95893){return _0xf95893;});}return null;};}function removeEntity(_0xbabe1e,_0x406789){return function(_0x5ac7a8){if(_0x5ac7a8){return _0x5ac7a8[_0x4afc('0x2d')]()['then'](function(){_0xbabe1e['status'](0xcc)[_0x4afc('0x25')]();});}};}function handleEntityNotFound(_0x33ebbc,_0x266f7f){return function(_0x3d4ab5){if(!_0x3d4ab5){_0x33ebbc[_0x4afc('0x23')](0x194);}return _0x3d4ab5;};}function handleError(_0x3f50cc,_0x523520){_0x523520=_0x523520||0x1f4;return function(_0x380f9f){logger[_0x4afc('0x21')](_0x380f9f[_0x4afc('0x2e')]);if(_0x380f9f[_0x4afc('0x2f')]){delete _0x380f9f[_0x4afc('0x2f')];}_0x3f50cc[_0x4afc('0x24')](_0x523520)['send'](_0x380f9f);};}exports[_0x4afc('0x30')]=function(_0x2ddce1,_0x91565d){var _0x283bc2={},_0x499464={},_0x4be1e6={'count':0x0,'rows':[]};var _0x43c341=db[_0x4afc('0x31')][_0x4afc('0x32')];_0x499464['model']=_['keys'](_0x43c341);var _0x391120={'dateStart':_0x2ddce1['query']['dateStart'],'dateEnd':_0x2ddce1[_0x4afc('0x33')][_0x4afc('0x34')]};delete _0x2ddce1[_0x4afc('0x33')][_0x4afc('0x35')];delete _0x2ddce1[_0x4afc('0x33')][_0x4afc('0x34')];_0x499464[_0x4afc('0x33')]=_[_0x4afc('0x36')](_0x2ddce1[_0x4afc('0x33')]);_0x499464[_0x4afc('0x37')]=_[_0x4afc('0x38')](_0x499464[_0x4afc('0x39')],_0x499464[_0x4afc('0x33')]);_0x283bc2[_0x4afc('0x3a')]=_[_0x4afc('0x38')](_0x499464['model'],qs[_0x4afc('0x3b')](_0x2ddce1[_0x4afc('0x33')][_0x4afc('0x3b')]));_0x283bc2[_0x4afc('0x3a')]=_0x283bc2[_0x4afc('0x3a')][_0x4afc('0x3c')]?_0x283bc2[_0x4afc('0x3a')]:_0x499464['model'];if(!_0x2ddce1['query']['hasOwnProperty'](_0x4afc('0x3d'))){_0x283bc2[_0x4afc('0x28')]=qs['limit'](_0x2ddce1[_0x4afc('0x33')][_0x4afc('0x28')]);_0x283bc2[_0x4afc('0x27')]=qs[_0x4afc('0x27')](_0x2ddce1['query'][_0x4afc('0x27')]);}_0x283bc2[_0x4afc('0x3e')]=qs[_0x4afc('0x3f')](_0x2ddce1[_0x4afc('0x33')][_0x4afc('0x3f')]);_0x283bc2[_0x4afc('0x40')]=qs['filters'](_[_0x4afc('0x41')](_0x2ddce1['query'],_0x499464[_0x4afc('0x37')]));if(_0x391120[_0x4afc('0x35')]){if(_0x391120[_0x4afc('0x34')]){_0x391120['dateEnd']=moment(_0x391120['dateEnd'])[_0x4afc('0x42')](0x1,_0x4afc('0x43'));}else{_0x391120[_0x4afc('0x34')]=moment(_0x391120[_0x4afc('0x35')])[_0x4afc('0x42')](0x1,_0x4afc('0x43'));}_[_0x4afc('0x44')](_0x283bc2[_0x4afc('0x40')],{'createdAt':{'$gte':_0x391120['dateStart'],'$lte':_0x391120[_0x4afc('0x34')]}});}if(_0x2ddce1[_0x4afc('0x33')]['filter']){_0x283bc2[_0x4afc('0x40')]=_['merge'](_0x283bc2[_0x4afc('0x40')],{'$or':_[_0x4afc('0x45')](_0x43c341,function(_0x16c6c4){if(_0x16c6c4['type'][_0x4afc('0x46')]!==_0x4afc('0x47')){var _0x1683c1={};_0x1683c1[_0x16c6c4[_0x4afc('0x48')]]={'$like':'%'+_0x2ddce1[_0x4afc('0x33')][_0x4afc('0x49')]+'%'};return _0x1683c1;}})});}_0x283bc2=_['merge']({},_0x283bc2,_0x2ddce1['options']);var _0x4f4e46={'where':_0x283bc2[_0x4afc('0x40')]};return db[_0x4afc('0x31')][_0x4afc('0x26')](_0x4f4e46)[_0x4afc('0x1a')](function(_0xb5cca9){_0x4be1e6[_0x4afc('0x26')]=_0xb5cca9;if(_0x2ddce1[_0x4afc('0x33')][_0x4afc('0x4a')]){_0x283bc2[_0x4afc('0x4b')]=[{'all':!![]}];}return db[_0x4afc('0x31')]['findAll'](_0x283bc2);})[_0x4afc('0x1a')](function(_0x4d7e3f){_0x4be1e6['rows']=_0x4d7e3f;return _0x4be1e6;})[_0x4afc('0x1a')](respondWithFilteredResult(_0x91565d,_0x283bc2))['catch'](handleError(_0x91565d,null));};exports[_0x4afc('0x4c')]=function(_0x355198,_0x2fe2ae){var _0x2cafc3={'raw':!![],'where':{'id':_0x355198[_0x4afc('0x4d')]['id']}},_0x5b27d6={};_0x5b27d6['model']=_[_0x4afc('0x36')](db[_0x4afc('0x31')][_0x4afc('0x32')]);_0x5b27d6[_0x4afc('0x33')]=_[_0x4afc('0x36')](_0x355198[_0x4afc('0x33')]);_0x5b27d6[_0x4afc('0x37')]=_[_0x4afc('0x38')](_0x5b27d6[_0x4afc('0x39')],_0x5b27d6[_0x4afc('0x33')]);_0x2cafc3[_0x4afc('0x3a')]=_[_0x4afc('0x38')](_0x5b27d6['model'],qs[_0x4afc('0x3b')](_0x355198[_0x4afc('0x33')][_0x4afc('0x3b')]));_0x2cafc3[_0x4afc('0x3a')]=_0x2cafc3[_0x4afc('0x3a')][_0x4afc('0x3c')]?_0x2cafc3[_0x4afc('0x3a')]:_0x5b27d6[_0x4afc('0x39')];if(_0x355198[_0x4afc('0x33')][_0x4afc('0x4a')]){_0x2cafc3[_0x4afc('0x4b')]=[{'all':!![]}];}_0x2cafc3=_[_0x4afc('0x44')]({},_0x2cafc3,_0x355198[_0x4afc('0x4e')]);return db['ChatGroup'][_0x4afc('0x4f')](_0x2cafc3)['then'](handleEntityNotFound(_0x2fe2ae,null))[_0x4afc('0x1a')](respondWithResult(_0x2fe2ae,null))[_0x4afc('0x50')](handleError(_0x2fe2ae,null));};exports[_0x4afc('0x51')]=function(_0x2d9f3d,_0x518d6f){return db['ChatGroup'][_0x4afc('0x51')](_0x2d9f3d[_0x4afc('0x52')],{})['then'](respondWithResult(_0x518d6f,0xc9))[_0x4afc('0x50')](handleError(_0x518d6f,null));};exports[_0x4afc('0x2c')]=function(_0xb1c023,_0x2ac06a){if(_0xb1c023[_0x4afc('0x52')]['id']){delete _0xb1c023[_0x4afc('0x52')]['id'];}return db[_0x4afc('0x31')][_0x4afc('0x4f')]({'where':{'id':_0xb1c023[_0x4afc('0x4d')]['id']}})[_0x4afc('0x1a')](handleEntityNotFound(_0x2ac06a,null))[_0x4afc('0x1a')](saveUpdates(_0xb1c023[_0x4afc('0x52')],null))[_0x4afc('0x1a')](respondWithResult(_0x2ac06a,null))[_0x4afc('0x50')](handleError(_0x2ac06a,null));};exports['destroy']=function(_0x42c65e,_0x59fb43){return db[_0x4afc('0x31')][_0x4afc('0x4f')]({'where':{'id':_0x42c65e[_0x4afc('0x4d')]['id']}})[_0x4afc('0x1a')](handleEntityNotFound(_0x59fb43,null))[_0x4afc('0x1a')](removeEntity(_0x59fb43,null))['catch'](handleError(_0x59fb43,null));};exports[_0x4afc('0x53')]=function(_0x323c65,_0x543dce){return db['ChatGroup'][_0x4afc('0x53')]()[_0x4afc('0x1a')](respondWithResult(_0x543dce,null))[_0x4afc('0x50')](handleError(_0x543dce,null));};exports[_0x4afc('0x54')]=function(_0x258fed,_0x193850,_0x37cfa6){return db[_0x4afc('0x55')][_0x4afc('0x26')]({'where':{'ChatGroupId':_0x258fed[_0x4afc('0x4d')]['id'],'ToId':_0x258fed['user']['id'],'read':![]}})['then'](function(_0x458533){return{'id':_[_0x4afc('0x56')](_0x258fed['params']['id']),'count':_0x458533};})[_0x4afc('0x1a')](respondWithResult(_0x193850,null))[_0x4afc('0x50')](handleError(_0x193850,null));};exports['addMembers']=function(_0x56573a,_0x1b49cd,_0x26f4ee){return db[_0x4afc('0x31')]['find']({'where':{'id':_0x56573a[_0x4afc('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1b49cd,null))['then'](function(_0x10e5c6){if(_0x10e5c6){return _0x10e5c6[_0x4afc('0x57')](_0x56573a[_0x4afc('0x52')][_0x4afc('0x58')],_[_0x4afc('0x59')](_0x56573a[_0x4afc('0x52')],[_0x4afc('0x58'),'id'])||{});}})[_0x4afc('0x1a')](respondWithResult(_0x1b49cd,null))[_0x4afc('0x50')](handleError(_0x1b49cd,null));};exports['getMembers']=function(_0x25969c,_0x1e8f64,_0x14e13e){var _0x4a014d={};var _0x5d13fe={};var _0x4a8d2c;var _0x3be61e;return db[_0x4afc('0x31')][_0x4afc('0x5a')]({'where':{'id':_0x25969c['params']['id']}})[_0x4afc('0x1a')](handleEntityNotFound(_0x1e8f64,null))['then'](function(_0x55b178){if(_0x55b178){_0x4a8d2c=_0x55b178;_0x5d13fe['model']=_[_0x4afc('0x36')](db[_0x4afc('0x5b')][_0x4afc('0x32')]);_0x5d13fe['query']=_[_0x4afc('0x36')](_0x25969c[_0x4afc('0x33')]);_0x5d13fe[_0x4afc('0x37')]=_['intersection'](_0x5d13fe[_0x4afc('0x39')],_0x5d13fe[_0x4afc('0x33')]);_0x4a014d[_0x4afc('0x3a')]=_[_0x4afc('0x38')](_0x5d13fe[_0x4afc('0x39')],qs['fields'](_0x25969c['query'][_0x4afc('0x3b')]));_0x4a014d[_0x4afc('0x3a')]=_0x4a014d[_0x4afc('0x3a')]['length']?_0x4a014d[_0x4afc('0x3a')]:_0x5d13fe[_0x4afc('0x39')];_0x4a014d[_0x4afc('0x3e')]=qs[_0x4afc('0x3f')](_0x25969c[_0x4afc('0x33')]['sort']);_0x4a014d[_0x4afc('0x40')]=qs[_0x4afc('0x37')](_['pick'](_0x25969c[_0x4afc('0x33')],_0x5d13fe[_0x4afc('0x37')]));if(_0x25969c[_0x4afc('0x33')]['filter']){_0x4a014d[_0x4afc('0x40')]=_[_0x4afc('0x44')](_0x4a014d[_0x4afc('0x40')],{'$or':_[_0x4afc('0x45')](_0x4a014d[_0x4afc('0x3a')],function(_0x3c0339){var _0x43f6e4={};_0x43f6e4[_0x3c0339]={'$like':'%'+_0x25969c[_0x4afc('0x33')]['filter']+'%'};return _0x43f6e4;})});}_0x4a014d=_[_0x4afc('0x44')]({},_0x4a014d,_0x25969c['options']);return _0x4a8d2c['getMembers'](_0x4a014d);}})[_0x4afc('0x1a')](function(_0x340d3e){if(_0x340d3e){_0x3be61e=_0x340d3e[_0x4afc('0x3c')];if(!_0x25969c['query']['hasOwnProperty'](_0x4afc('0x3d'))){_0x4a014d[_0x4afc('0x28')]=qs[_0x4afc('0x28')](_0x25969c[_0x4afc('0x33')][_0x4afc('0x28')]);_0x4a014d[_0x4afc('0x27')]=qs[_0x4afc('0x27')](_0x25969c[_0x4afc('0x33')][_0x4afc('0x27')]);}return _0x4a8d2c[_0x4afc('0x5c')](_0x4a014d);}})[_0x4afc('0x1a')](function(_0x731d9){if(_0x731d9){return _0x731d9?{'count':_0x3be61e,'rows':_0x731d9}:null;}})[_0x4afc('0x1a')](respondWithResult(_0x1e8f64,null))[_0x4afc('0x50')](handleError(_0x1e8f64,null));};exports[_0x4afc('0x5d')]=function(_0x16cf27,_0x4f8b24,_0x2d7d36){var _0x33eeb0;return db[_0x4afc('0x31')][_0x4afc('0x4f')]({'where':{'id':_0x16cf27[_0x4afc('0x4d')]['id']}})[_0x4afc('0x1a')](handleEntityNotFound(_0x4f8b24,null))[_0x4afc('0x1a')](function(_0x158522){if(_0x158522){return _0x158522[_0x4afc('0x5d')](_0x16cf27['query'][_0x4afc('0x58')]);}})[_0x4afc('0x1a')](respondWithStatusCode(_0x4f8b24,null))[_0x4afc('0x50')](handleError(_0x4f8b24,null));};exports[_0x4afc('0x5e')]=function(_0x4b5bd2,_0x1e7e24,_0x56b862){if(_0x4b5bd2[_0x4afc('0x52')]['id']){delete _0x4b5bd2[_0x4afc('0x52')]['id'];}return db[_0x4afc('0x31')][_0x4afc('0x4f')]({'where':{'id':_0x4b5bd2[_0x4afc('0x4d')]['id']}})[_0x4afc('0x1a')](handleEntityNotFound(_0x1e7e24,null))[_0x4afc('0x1a')](function(_0x2b20ad){if(_0x2b20ad){_0x4b5bd2['body'][_0x4afc('0x5f')]=_0x2b20ad['id'];return db[_0x4afc('0x55')]['create'](_0x4b5bd2[_0x4afc('0x52')]);}})[_0x4afc('0x1a')](respondWithResult(_0x1e7e24,null))[_0x4afc('0x50')](handleError(_0x1e7e24,null));};exports['getMessages']=function(_0x1c3d20,_0x3478aa,_0x24553b){var _0x38b143={};var _0x4a6f77={};var _0x1bbe21;var _0x29297c;return db['ChatGroup'][_0x4afc('0x5a')]({'where':{'id':_0x1c3d20[_0x4afc('0x4d')]['id']}})[_0x4afc('0x1a')](handleEntityNotFound(_0x3478aa,null))['then'](function(_0x4c73fd){if(_0x4c73fd){_0x1bbe21=_0x4c73fd;_0x4a6f77[_0x4afc('0x39')]=_[_0x4afc('0x36')](db[_0x4afc('0x55')][_0x4afc('0x32')]);_0x4a6f77[_0x4afc('0x33')]=_[_0x4afc('0x36')](_0x1c3d20[_0x4afc('0x33')]);_0x4a6f77[_0x4afc('0x37')]=_[_0x4afc('0x38')](_0x4a6f77[_0x4afc('0x39')],_0x4a6f77[_0x4afc('0x33')]);_0x38b143[_0x4afc('0x3a')]=_[_0x4afc('0x38')](_0x4a6f77[_0x4afc('0x39')],qs[_0x4afc('0x3b')](_0x1c3d20[_0x4afc('0x33')]['fields']));_0x38b143[_0x4afc('0x3a')]=_0x38b143[_0x4afc('0x3a')]['length']?_0x38b143[_0x4afc('0x3a')]:_0x4a6f77['model'];_0x38b143['order']=qs[_0x4afc('0x3f')](_0x1c3d20['query']['sort']);_0x38b143[_0x4afc('0x40')]=qs['filters'](_[_0x4afc('0x41')](_0x1c3d20['query'],_0x4a6f77[_0x4afc('0x37')]));if(_0x1c3d20[_0x4afc('0x33')][_0x4afc('0x49')]){_0x38b143[_0x4afc('0x40')]=_[_0x4afc('0x44')](_0x38b143['where'],{'$or':_[_0x4afc('0x45')](_0x38b143[_0x4afc('0x3a')],function(_0x4cb780){var _0x4f97a4={};_0x4f97a4[_0x4cb780]={'$like':'%'+_0x1c3d20[_0x4afc('0x33')][_0x4afc('0x49')]+'%'};return _0x4f97a4;})});}if(_0x1c3d20[_0x4afc('0x33')][_0x4afc('0x60')]){var _0x4596ed=_0x1c3d20['query'][_0x4afc('0x60')][_0x4afc('0x61')](',');var _0x2516e4={};_0x2516e4[_0x4596ed[0x0]]={'$gte':moment(_0x4596ed[0x1])[_0x4afc('0x62')]('YYYY-MM-DD\x20HH:mm:ss')};_0x38b143[_0x4afc('0x40')]=_['merge'](_0x38b143[_0x4afc('0x40')],_0x2516e4);}_0x38b143=_[_0x4afc('0x44')]({},_0x38b143,_0x1c3d20[_0x4afc('0x4e')]);return _0x1bbe21[_0x4afc('0x63')](_0x38b143);}})[_0x4afc('0x1a')](function(_0x29c8aa){if(_0x29c8aa){_0x29297c=_0x29c8aa[_0x4afc('0x3c')];if(!_0x1c3d20[_0x4afc('0x33')][_0x4afc('0x64')](_0x4afc('0x3d'))){_0x38b143[_0x4afc('0x28')]=qs['limit'](_0x1c3d20[_0x4afc('0x33')]['limit']);_0x38b143[_0x4afc('0x27')]=qs['offset'](_0x1c3d20['query'][_0x4afc('0x27')]);}return _0x1bbe21['getMessages'](_0x38b143);}})['then'](function(_0x360d43){if(_0x360d43){return _0x360d43?{'count':_0x29297c,'rows':_0x360d43}:null;}})['then'](respondWithResult(_0x3478aa,null))[_0x4afc('0x50')](handleError(_0x3478aa,null));};
\ No newline at end of file
index 019d16c..6910f6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bfe=['setMaxListeners','update','emit','hasOwnProperty','hook','events','../../mysqldb','ChatGroup'];(function(_0x5de1b6,_0x4fb33d){var _0x3bc1a6=function(_0x15df12){while(--_0x15df12){_0x5de1b6['push'](_0x5de1b6['shift']());}};_0x3bc1a6(++_0x4fb33d);}(_0x0bfe,0x14d));var _0xe0bf=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0bfe[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0xe0bf('0x0'));var ChatGroup=require(_0xe0bf('0x1'))['db'][_0xe0bf('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xe0bf('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe0bf('0x4'),'afterDestroy':'remove'};function emitEvent(_0x565986){return function(_0x1fa143,_0xb8a850,_0xed944f){ChatGroupEvents[_0xe0bf('0x5')](_0x565986+':'+_0x1fa143['id'],_0x1fa143);ChatGroupEvents[_0xe0bf('0x5')](_0x565986,_0x1fa143);_0xed944f(null);};}for(var e in events){if(events[_0xe0bf('0x6')](e)){var event=events[e];ChatGroup[_0xe0bf('0x7')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0x2785=['exports','events','../../mysqldb','setMaxListeners','save','emit','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2785,0xda));var _0x5278=function(_0x1a58a9,_0xe32406){_0x1a58a9=_0x1a58a9-0x0;var _0x45449b=_0x2785[_0x1a58a9];return _0x45449b;};'use strict';var EventEmitter=require(_0x5278('0x0'));var ChatGroup=require(_0x5278('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x5278('0x2')](0x0);var events={'afterCreate':_0x5278('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x399920){return function(_0x47af05,_0x4d9c98,_0x5676fb){ChatGroupEvents[_0x5278('0x4')](_0x399920+':'+_0x47af05['id'],_0x47af05);ChatGroupEvents['emit'](_0x399920,_0x47af05);_0x5676fb(null);};}for(var e in events){if(events[_0x5278('0x5')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0x5278('0x6')]=ChatGroupEvents;
\ No newline at end of file
index fc0870c..df66229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3ea=['api','bluebird','request-promise','./chatGroup.attributes','ChatGroup','chat_groups','lodash','util','../../config/logger'];(function(_0x2ff762,_0x342c0b){var _0x158b02=function(_0x13c38e){while(--_0x13c38e){_0x2ff762['push'](_0x2ff762['shift']());}};_0x158b02(++_0x342c0b);}(_0xc3ea,0x14a));var _0xac3e=function(_0x57975f,_0x388556){_0x57975f=_0x57975f-0x0;var _0x4793b8=_0xc3ea[_0x57975f];return _0x4793b8;};'use strict';var _=require(_0xac3e('0x0'));var util=require(_0xac3e('0x1'));var logger=require(_0xac3e('0x2'))(_0xac3e('0x3'));var moment=require('moment');var BPromise=require(_0xac3e('0x4'));var rp=require(_0xac3e('0x5'));var attributes=require(_0xac3e('0x6'));module['exports']=function(_0x135934,_0x393f25){return _0x135934['define'](_0xac3e('0x7'),attributes,{'tableName':_0xac3e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d9c=['util','../../config/logger','api','moment','bluebird','request-promise','./chatGroup.attributes','exports','define','chat_groups'];(function(_0x4685a7,_0x7acd54){var _0x2e3d34=function(_0x2043a6){while(--_0x2043a6){_0x4685a7['push'](_0x4685a7['shift']());}};_0x2e3d34(++_0x7acd54);}(_0x1d9c,0x104));var _0xc1d9=function(_0x45ee1f,_0x27e290){_0x45ee1f=_0x45ee1f-0x0;var _0x39d604=_0x1d9c[_0x45ee1f];return _0x39d604;};'use strict';var _=require('lodash');var util=require(_0xc1d9('0x0'));var logger=require(_0xc1d9('0x1'))(_0xc1d9('0x2'));var moment=require(_0xc1d9('0x3'));var BPromise=require(_0xc1d9('0x4'));var rp=require(_0xc1d9('0x5'));var attributes=require(_0xc1d9('0x6'));module[_0xc1d9('0x7')]=function(_0x5e2951,_0x1f7714){return _0x5e2951[_0xc1d9('0x8')]('ChatGroup',attributes,{'tableName':_0xc1d9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 97cb7f5..7047c15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ChatGroup,\x20%s,\x20%s','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','request','info'];(function(_0x3e4829,_0x1d10ae){var _0x1c6062=function(_0x108ed4){while(--_0x108ed4){_0x3e4829['push'](_0x3e4829['shift']());}};_0x1c6062(++_0x1d10ae);}(_0x3e74,0x175));var _0x43e7=function(_0x490415,_0x488a5e){_0x490415=_0x490415-0x0;var _0x57427f=_0x3e74[_0x490415];return _0x57427f;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var moment=require(_0x43e7('0x1'));var BPromise=require(_0x43e7('0x2'));var rs=require(_0x43e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x43e7('0x4'));var logger=require('../../config/logger')(_0x43e7('0x5'));var config=require(_0x43e7('0x6'));var jayson=require(_0x43e7('0x7'));var client=jayson[_0x43e7('0x8')][_0x43e7('0x9')]({'port':0x232a});config['redis']=_[_0x43e7('0xa')](config[_0x43e7('0xb')],{'host':_0x43e7('0xc'),'port':0x18eb});var socket=require(_0x43e7('0xd'))(new Redis(config[_0x43e7('0xb')]));require('./chatGroup.socket')[_0x43e7('0xe')](socket);function respondWithRpcPromise(_0x554d44,_0x54948c,_0x39c8bd){return new BPromise(function(_0x4139c9,_0x5c34f4){return client[_0x43e7('0xf')](_0x554d44,_0x39c8bd)['then'](function(_0xf7c520){logger[_0x43e7('0x10')]('ChatGroup,\x20%s,\x20%s',_0x54948c,_0x43e7('0x11'));logger[_0x43e7('0x12')](_0x43e7('0x13'),_0x54948c,_0x43e7('0x11'),JSON['stringify'](_0xf7c520));if(_0xf7c520['error']){if(_0xf7c520[_0x43e7('0x14')][_0x43e7('0x15')]===0x1f4){logger[_0x43e7('0x14')]('ChatGroup,\x20%s,\x20%s',_0x54948c,_0xf7c520['error'][_0x43e7('0x16')]);return _0x5c34f4(_0xf7c520[_0x43e7('0x14')][_0x43e7('0x16')]);}logger[_0x43e7('0x14')]('ChatGroup,\x20%s,\x20%s',_0x54948c,_0xf7c520['error'][_0x43e7('0x16')]);return _0x4139c9(_0xf7c520[_0x43e7('0x14')][_0x43e7('0x16')]);}else{logger['info']('ChatGroup,\x20%s,\x20%s',_0x54948c,_0x43e7('0x11'));_0x4139c9(_0xf7c520[_0x43e7('0x17')][_0x43e7('0x16')]);}})[_0x43e7('0x18')](function(_0x3776f5){logger[_0x43e7('0x14')](_0x43e7('0x19'),_0x54948c,_0x3776f5);_0x5c34f4(_0x3776f5);});});}
\ No newline at end of file
+var _0x34e5=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x5f2b64,_0x169d36){var _0x3aa473=function(_0xc8d80c){while(--_0xc8d80c){_0x5f2b64['push'](_0x5f2b64['shift']());}};_0x3aa473(++_0x169d36);}(_0x34e5,0x172));var _0x534e=function(_0x119e91,_0x3459f3){_0x119e91=_0x119e91-0x0;var _0x5cc9f7=_0x34e5[_0x119e91];return _0x5cc9f7;};'use strict';var _=require('lodash');var util=require(_0x534e('0x0'));var moment=require('moment');var BPromise=require(_0x534e('0x1'));var rs=require(_0x534e('0x2'));var fs=require('fs');var Redis=require(_0x534e('0x3'));var db=require(_0x534e('0x4'))['db'];var utils=require(_0x534e('0x5'));var logger=require('../../config/logger')(_0x534e('0x6'));var config=require(_0x534e('0x7'));var jayson=require(_0x534e('0x8'));var client=jayson[_0x534e('0x9')][_0x534e('0xa')]({'port':0x232a});config[_0x534e('0xb')]=_[_0x534e('0xc')](config['redis'],{'host':_0x534e('0xd'),'port':0x18eb});var socket=require(_0x534e('0xe'))(new Redis(config[_0x534e('0xb')]));require('./chatGroup.socket')['register'](socket);function respondWithRpcPromise(_0x2f44a1,_0x4c495c,_0x3eb20c){return new BPromise(function(_0x55509d,_0xb30dd6){return client[_0x534e('0xf')](_0x2f44a1,_0x3eb20c)[_0x534e('0x10')](function(_0x529726){logger[_0x534e('0x11')](_0x534e('0x12'),_0x4c495c,_0x534e('0x13'));logger[_0x534e('0x14')](_0x534e('0x15'),_0x4c495c,'request\x20sent',JSON[_0x534e('0x16')](_0x529726));if(_0x529726[_0x534e('0x17')]){if(_0x529726[_0x534e('0x17')][_0x534e('0x18')]===0x1f4){logger[_0x534e('0x17')](_0x534e('0x12'),_0x4c495c,_0x529726[_0x534e('0x17')][_0x534e('0x19')]);return _0xb30dd6(_0x529726[_0x534e('0x17')]['message']);}logger[_0x534e('0x17')](_0x534e('0x12'),_0x4c495c,_0x529726['error']['message']);return _0x55509d(_0x529726[_0x534e('0x17')][_0x534e('0x19')]);}else{logger[_0x534e('0x11')](_0x534e('0x12'),_0x4c495c,_0x534e('0x13'));_0x55509d(_0x529726[_0x534e('0x1a')][_0x534e('0x19')]);}})['catch'](function(_0x1a7790){logger[_0x534e('0x17')](_0x534e('0x12'),_0x4c495c,_0x1a7790);_0xb30dd6(_0x1a7790);});});}
\ No newline at end of file
index e6a29ca..2fa5cd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['emit','removeListener','register','length','./chatGroup.events','save'];(function(_0x1e3671,_0x9ae4fc){var _0x48d5f5=function(_0xfab713){while(--_0xfab713){_0x1e3671['push'](_0x1e3671['shift']());}};_0x48d5f5(++_0x9ae4fc);}(_0x0bb5,0x148));var _0x50bb=function(_0x4b7c4d,_0x32ddbc){_0x4b7c4d=_0x4b7c4d-0x0;var _0x30e9ce=_0x0bb5[_0x4b7c4d];return _0x30e9ce;};'use strict';var ChatGroupEvents=require(_0x50bb('0x0'));var events=[_0x50bb('0x1'),'remove','update'];function createListener(_0x348380,_0x1aaa37){return function(_0x6b7575){_0x1aaa37[_0x50bb('0x2')](_0x348380,_0x6b7575);};}function removeListener(_0x29c72b,_0xfdc9d4){return function(){ChatGroupEvents[_0x50bb('0x3')](_0x29c72b,_0xfdc9d4);};}exports[_0x50bb('0x4')]=function(_0x4e6093){for(var _0x4a105c=0x0,_0xfd7aeb=events[_0x50bb('0x5')];_0x4a105c<_0xfd7aeb;_0x4a105c++){var _0x2e5463=events[_0x4a105c];var _0x33ff54=createListener('chatGroup:'+_0x2e5463,_0x4e6093);ChatGroupEvents['on'](_0x2e5463,_0x33ff54);}};
\ No newline at end of file
+var _0x49e9=['update','removeListener','register','length','chatGroup:','./chatGroup.events','save'];(function(_0x27fdcc,_0x421cb5){var _0x17c2de=function(_0x2fa372){while(--_0x2fa372){_0x27fdcc['push'](_0x27fdcc['shift']());}};_0x17c2de(++_0x421cb5);}(_0x49e9,0x10f));var _0x949e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x49e9[_0x14add3];return _0x4a174f;};'use strict';var ChatGroupEvents=require(_0x949e('0x0'));var events=[_0x949e('0x1'),'remove',_0x949e('0x2')];function createListener(_0x1db1b8,_0x259795){return function(_0x5c303a){_0x259795['emit'](_0x1db1b8,_0x5c303a);};}function removeListener(_0x114f65,_0x4c284b){return function(){ChatGroupEvents[_0x949e('0x3')](_0x114f65,_0x4c284b);};}exports[_0x949e('0x4')]=function(_0x360308){for(var _0x56c7b2=0x0,_0x17f649=events[_0x949e('0x5')];_0x56c7b2<_0x17f649;_0x56c7b2++){var _0xfc4f8a=events[_0x56c7b2];var _0x34ee57=createListener(_0x949e('0x6')+_0xfc4f8a,_0x360308);ChatGroupEvents['on'](_0xfc4f8a,_0x34ee57);}};
\ No newline at end of file
index 0a73208..5f1088b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9880=['index','get','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','getMessages','post','create','/:id/messages','addMessage','update','delete','removeMembers','exports','multer','util','express','../../components/interaction/service','./chatGroup.controller','isAuthenticated'];(function(_0x4d9b12,_0x1c5bae){var _0x58d4b4=function(_0x4d29e6){while(--_0x4d29e6){_0x4d9b12['push'](_0x4d9b12['shift']());}};_0x58d4b4(++_0x1c5bae);}(_0x9880,0xf4));var _0x0988=function(_0x2e913b,_0x4b7071){_0x2e913b=_0x2e913b-0x0;var _0x173899=_0x9880[_0x2e913b];return _0x173899;};'use strict';var multer=require(_0x0988('0x0'));var util=require(_0x0988('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0988('0x2'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0x0988('0x3'));var config=require('../../config/environment');var controller=require(_0x0988('0x4'));router['get']('/',auth[_0x0988('0x5')](),controller[_0x0988('0x6')]);router[_0x0988('0x7')](_0x0988('0x8'),auth['isAuthenticated'](),controller[_0x0988('0x9')]);router['get'](_0x0988('0xa'),auth['isAuthenticated'](),controller[_0x0988('0xb')]);router[_0x0988('0x7')](_0x0988('0xc'),auth[_0x0988('0x5')](),controller[_0x0988('0xd')]);router['get'](_0x0988('0xe'),auth[_0x0988('0x5')](),controller[_0x0988('0xf')]);router[_0x0988('0x7')]('/:id/messages',auth[_0x0988('0x5')](),controller[_0x0988('0x10')]);router[_0x0988('0x11')]('/',auth['isAuthenticated'](),controller[_0x0988('0x12')]);router['post'](_0x0988('0xe'),auth[_0x0988('0x5')](),controller['addMembers']);router[_0x0988('0x11')](_0x0988('0x13'),auth[_0x0988('0x5')](),controller[_0x0988('0x14')]);router['put'](_0x0988('0xa'),auth['isAuthenticated'](),controller[_0x0988('0x15')]);router['delete']('/:id',auth[_0x0988('0x5')](),controller['destroy']);router[_0x0988('0x16')](_0x0988('0xe'),auth[_0x0988('0x5')](),controller[_0x0988('0x17')]);module[_0x0988('0x18')]=router;
\ No newline at end of file
+var _0x5aad=['get','isAuthenticated','index','/describe','show','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','put','/:id','update','delete','destroy','util','path','Router','../../components/interaction/service','../../config/environment','./chatGroup.controller'];(function(_0xc5e1d,_0x654b48){var _0x512549=function(_0x1eea3c){while(--_0x1eea3c){_0xc5e1d['push'](_0xc5e1d['shift']());}};_0x512549(++_0x654b48);}(_0x5aad,0x198));var _0xd5aa=function(_0xf5528b,_0xf00afe){_0xf5528b=_0xf5528b-0x0;var _0x53ba5b=_0x5aad[_0xf5528b];return _0x53ba5b;};'use strict';var multer=require('multer');var util=require(_0xd5aa('0x0'));var path=require(_0xd5aa('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd5aa('0x2')]();var auth=require('../../components/auth/service');var interaction=require(_0xd5aa('0x3'));var config=require(_0xd5aa('0x4'));var controller=require(_0xd5aa('0x5'));router[_0xd5aa('0x6')]('/',auth[_0xd5aa('0x7')](),controller[_0xd5aa('0x8')]);router['get'](_0xd5aa('0x9'),auth[_0xd5aa('0x7')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller[_0xd5aa('0xa')]);router[_0xd5aa('0x6')]('/:id/unread',auth[_0xd5aa('0x7')](),controller['getUnread']);router[_0xd5aa('0x6')](_0xd5aa('0xb'),auth['isAuthenticated'](),controller[_0xd5aa('0xc')]);router[_0xd5aa('0x6')](_0xd5aa('0xd'),auth[_0xd5aa('0x7')](),controller[_0xd5aa('0xe')]);router[_0xd5aa('0xf')]('/',auth[_0xd5aa('0x7')](),controller[_0xd5aa('0x10')]);router[_0xd5aa('0xf')]('/:id/members',auth[_0xd5aa('0x7')](),controller[_0xd5aa('0x11')]);router[_0xd5aa('0xf')](_0xd5aa('0xd'),auth[_0xd5aa('0x7')](),controller['addMessage']);router[_0xd5aa('0x12')](_0xd5aa('0x13'),auth[_0xd5aa('0x7')](),controller[_0xd5aa('0x14')]);router[_0xd5aa('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xd5aa('0x16')]);router[_0xd5aa('0x15')](_0xd5aa('0xb'),auth['isAuthenticated'](),controller['removeMembers']);module['exports']=router;
\ No newline at end of file
index 9e6ee7b..1dede39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['DATE','STRING','long','out','exports','BOOLEAN','thumb','TEXT'];(function(_0x5be621,_0x5b9112){var _0x2f0c1e=function(_0x34c394){while(--_0x34c394){_0x5be621['push'](_0x5be621['shift']());}};_0x2f0c1e(++_0x5b9112);}(_0xda3f,0xec));var _0xfda3=function(_0x5d7048,_0x1404a0){_0x5d7048=_0x5d7048-0x0;var _0x1ced43=_0xda3f[_0x5d7048];return _0x1ced43;};'use strict';var Sequelize=require('sequelize');module[_0xfda3('0x0')]={'closed':{'type':Sequelize[_0xfda3('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM']('star',_0xfda3('0x2')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0xfda3('0x3')]},'pathTranscript':{'type':Sequelize[_0xfda3('0x3')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xfda3('0x4')]},'disposition':{'type':Sequelize[_0xfda3('0x5')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0xfda3('0x5')]},'osName':{'type':Sequelize[_0xfda3('0x5')]},'osVersion':{'type':Sequelize[_0xfda3('0x5')]},'deviceModel':{'type':Sequelize[_0xfda3('0x5')]},'deviceVendor':{'type':Sequelize[_0xfda3('0x5')]},'deviceType':{'type':Sequelize[_0xfda3('0x5')]},'referer':{'type':Sequelize[_0xfda3('0x5')]},'customerIp':{'type':Sequelize[_0xfda3('0x5')]},'formData':{'type':Sequelize[_0xfda3('0x3')](_0xfda3('0x6'))},'read1stAt':{'type':Sequelize[_0xfda3('0x4')]},'lastMsgAt':{'type':Sequelize[_0xfda3('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xfda3('0x7')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xfda3('0x5')]}};
\ No newline at end of file
+var _0x6f7a=['sequelize','exports','BOOLEAN','INTEGER','star','thumb','TEXT','STRING','DATE','out'];(function(_0x490be3,_0xf0fca3){var _0x3f5140=function(_0x15fa80){while(--_0x15fa80){_0x490be3['push'](_0x490be3['shift']());}};_0x3f5140(++_0xf0fca3);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x537004,_0x414ec5){_0x537004=_0x537004-0x0;var _0x2b7a2d=_0x6f7a[_0x537004];return _0x2b7a2d;};'use strict';var Sequelize=require(_0xa6f7('0x0'));module[_0xa6f7('0x1')]={'closed':{'type':Sequelize[_0xa6f7('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xa6f7('0x3')]},'ratingType':{'type':Sequelize['ENUM'](_0xa6f7('0x4'),_0xa6f7('0x5')),'defaultValue':_0xa6f7('0x4')},'ratingMessage':{'type':Sequelize[_0xa6f7('0x6')]},'pathTranscript':{'type':Sequelize[_0xa6f7('0x6')]},'mailTranscript':{'type':Sequelize[_0xa6f7('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xa6f7('0x8')]},'disposition':{'type':Sequelize[_0xa6f7('0x7')]},'note':{'type':Sequelize[_0xa6f7('0x7')]},'browserName':{'type':Sequelize[_0xa6f7('0x7')]},'browserVersion':{'type':Sequelize[_0xa6f7('0x7')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0xa6f7('0x7')]},'deviceVendor':{'type':Sequelize[_0xa6f7('0x7')]},'deviceType':{'type':Sequelize[_0xa6f7('0x7')]},'referer':{'type':Sequelize[_0xa6f7('0x7')]},'customerIp':{'type':Sequelize[_0xa6f7('0x7')]},'formData':{'type':Sequelize['TEXT']('long')},'read1stAt':{'type':Sequelize[_0xa6f7('0x8')]},'lastMsgAt':{'type':Sequelize[_0xa6f7('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xa6f7('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 995460b..ae2e890 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe57=['request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','reject','save','update','destroy','name','ChatInteraction','model','query','dateStart','dateEnd','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','pick','day','add','merge','where','filter','map','type','key','VIRTUAL','field','options','include','tag','read','push','ChatMessage','direction','createdAt','distinct','includeAll','User','Users','CmContact','Contact','Owner','fullname','internal','Account','Messages','Tag','Tags','color','ThroughTags','show','params','rawAttributes','find','create','body','describe','customUpdate','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Sequelize','ValidationError','closedAt','disposition','AbandonInteraction','abandon','attachmentUpload','file','originalname','filename','mimetype','Attachment','findOne','Unauthorized','join','root','server/files/attachments/','basename','mailTranscript','server/files/chat/upload/','transcript-%s.txt','now','pathTranscript','ChatWebsite','ChatWebsiteId','ContactId','format','UserId','System','customer','%s%d','Visitor','agentIdentifier','agentAlias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailServerOut','service','Smtp','host','port','secure','authentication','auth','user','pass','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','ChatInteractionId','$gte','findAll','rows','includeAgent','setTags','spread','emit','chatInteractionTags:save','removeTags','download','unix','toString','server','files','tmp','interaction-%s.zip','firstName','Letter','1cm','mkdirSync','<h1>Chat\x20Interaction:\x20#%d</h1>','<h2>Date:\x20%s</h2>','<div\x20style=\x22border-style:\x20solid;\x20border-width:\x201px;\x20margin:\x203px;\x22>','<p\x20style=\x22margin:\x203px;\x22>%s:\x20%s</p>','</div>','existsSync','createWriteStream','interaction-','.pdf','log','err','html-pdf','eml-format','fast-json-patch'];(function(_0x55ff79,_0x3d45e7){var _0x579067=function(_0x3650e4){while(--_0x3650e4){_0x55ff79['push'](_0x55ff79['shift']());}};_0x579067(++_0x3d45e7);}(_0xfe57,0x195));var _0x7fe5=function(_0x1d7037,_0x57dd95){_0x1d7037=_0x1d7037-0x0;var _0x4d6568=_0xfe57[_0x1d7037];return _0x4d6568;};'use strict';var pdf=require(_0x7fe5('0x0'));var emlformat=require(_0x7fe5('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7fe5('0x2'));var rp=require(_0x7fe5('0x3'));var moment=require(_0x7fe5('0x4'));var BPromise=require(_0x7fe5('0x5'));var Mustache=require(_0x7fe5('0x6'));var util=require(_0x7fe5('0x7'));var path=require(_0x7fe5('0x8'));var sox=require(_0x7fe5('0x9'));var csv=require(_0x7fe5('0xa'));var ejs=require(_0x7fe5('0xb'));var fs=require('fs');var _=require(_0x7fe5('0xc'));var squel=require(_0x7fe5('0xd'));var crypto=require(_0x7fe5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7fe5('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7fe5('0x10'));var Papa=require(_0x7fe5('0x11'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x7fe5('0x12'))(_0x7fe5('0x13'));var utils=require('../../config/utils');var config=require(_0x7fe5('0x14'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x7fe5('0x15')](config[_0x7fe5('0x16')],{'host':_0x7fe5('0x17'),'port':0x18eb});var socket=require(_0x7fe5('0x18'))(new Redis(config['redis']));require(_0x7fe5('0x19'))[_0x7fe5('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7fe5('0x1b')]['http']({'port':0x232b});var client9004=jayson[_0x7fe5('0x1b')][_0x7fe5('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x4e8ea0,_0x1ce051,_0x56e76f,_0x39f175){return new BPromise(function(_0x221ab2,_0xbdf0a4){var _0x4989a=_0x39f175||client;return _0x4989a[_0x7fe5('0x1d')](_0x4e8ea0,_0x56e76f)[_0x7fe5('0x1e')](function(_0x4b9726){logger[_0x7fe5('0x1f')](_0x7fe5('0x20'),_0x1ce051,_0x7fe5('0x21'));logger[_0x7fe5('0x22')](_0x7fe5('0x23'),_0x1ce051,_0x7fe5('0x21'),JSON[_0x7fe5('0x24')](_0x4b9726));if(_0x4b9726[_0x7fe5('0x25')]){if(_0x4b9726[_0x7fe5('0x25')][_0x7fe5('0x26')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x1ce051,_0x4b9726[_0x7fe5('0x25')][_0x7fe5('0x27')]);return _0xbdf0a4(_0x4b9726[_0x7fe5('0x25')][_0x7fe5('0x27')]);}logger[_0x7fe5('0x25')](_0x7fe5('0x20'),_0x1ce051,_0x4b9726[_0x7fe5('0x25')][_0x7fe5('0x27')]);return _0x221ab2(_0x4b9726[_0x7fe5('0x25')][_0x7fe5('0x27')]);}else{logger[_0x7fe5('0x1f')](_0x7fe5('0x20'),_0x1ce051,'request\x20sent');_0x221ab2(_0x4b9726[_0x7fe5('0x28')][_0x7fe5('0x27')]);}})[_0x7fe5('0x29')](function(_0x508826){logger[_0x7fe5('0x25')]('ChatInteraction,\x20%s,\x20%s',_0x1ce051,_0x508826);_0xbdf0a4(_0x508826);});});}function respondWithStatusCode(_0xf358ed,_0x53f522){_0x53f522=_0x53f522||0xcc;return function(_0x5c3b37){if(_0x5c3b37){return _0xf358ed[_0x7fe5('0x2a')](_0x53f522);}return _0xf358ed[_0x7fe5('0x2b')](_0x53f522)[_0x7fe5('0x2c')]();};}function respondWithResult(_0x399c55,_0x4393c3){_0x4393c3=_0x4393c3||0xc8;return function(_0x5bfe23){if(_0x5bfe23){return _0x399c55['status'](_0x4393c3)[_0x7fe5('0x2d')](_0x5bfe23);}};}function respondWithFilteredResult(_0x450759,_0x27b66d){return function(_0x13c96b){if(_0x13c96b){var _0x51407b=_0x13c96b[_0x7fe5('0x2e')],_0x46f816=_0x27b66d[_0x7fe5('0x2f')],_0x4a77e9=_0x27b66d[_0x7fe5('0x2f')]+_0x27b66d[_0x7fe5('0x30')],_0x150ab9;if(_0x4a77e9>=_0x51407b){_0x4a77e9=_0x51407b;_0x150ab9=0xc8;}else{_0x150ab9=0xce;}_0x450759[_0x7fe5('0x2b')](_0x150ab9);return _0x450759['set'](_0x7fe5('0x31'),_0x46f816+'-'+_0x4a77e9+'/'+_0x51407b)[_0x7fe5('0x2d')](_0x13c96b);}return null;};}function patchUpdates(_0x5ec0b4){return function(_0xfc1189){try{jsonpatch[_0x7fe5('0x32')](_0xfc1189,_0x5ec0b4,!![]);}catch(_0x360f6f){return BPromise[_0x7fe5('0x33')](_0x360f6f);}return _0xfc1189[_0x7fe5('0x34')]();};}function saveUpdates(_0x53ef16,_0x55577c){return function(_0x13623e){if(_0x13623e){return _0x13623e[_0x7fe5('0x35')](_0x53ef16)[_0x7fe5('0x1e')](function(_0x4704b8){return _0x4704b8;});}return null;};}function removeEntity(_0x51b17e,_0x320ff5){return function(_0x368e4a){if(_0x368e4a){return _0x368e4a[_0x7fe5('0x36')]()[_0x7fe5('0x1e')](function(){_0x51b17e[_0x7fe5('0x2b')](0xcc)[_0x7fe5('0x2c')]();});}};}function handleEntityNotFound(_0x4ecbba,_0x1f87d7){return function(_0x7c274d){if(!_0x7c274d){_0x4ecbba[_0x7fe5('0x2a')](0x194);}return _0x7c274d;};}function handleError(_0x39cfe9,_0x534cb3){_0x534cb3=_0x534cb3||0x1f4;return function(_0x5617c2){logger[_0x7fe5('0x25')](_0x5617c2['stack']);if(_0x5617c2[_0x7fe5('0x37')]){delete _0x5617c2['name'];}_0x39cfe9[_0x7fe5('0x2b')](_0x534cb3)['send'](_0x5617c2);};}exports['index']=function(_0x539573,_0x4d7793){var _0x205efd={},_0x416d7c={},_0x4bbf54={'count':0x0,'rows':[]};var _0x3ef03d=db[_0x7fe5('0x38')]['rawAttributes'];_0x416d7c[_0x7fe5('0x39')]=_['keys'](_0x3ef03d);var _0x4aeed2={'dateStart':_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x3b')],'dateEnd':_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x3c')]};delete _0x539573[_0x7fe5('0x3a')]['dateStart'];delete _0x539573[_0x7fe5('0x3a')][_0x7fe5('0x3c')];_0x416d7c['query']=_[_0x7fe5('0x3d')](_0x539573[_0x7fe5('0x3a')]);_0x416d7c[_0x7fe5('0x3e')]=_[_0x7fe5('0x3f')](_0x416d7c[_0x7fe5('0x39')],_0x416d7c[_0x7fe5('0x3a')]);_0x205efd[_0x7fe5('0x40')]=_['intersection'](_0x416d7c['model'],qs[_0x7fe5('0x41')](_0x539573['query'][_0x7fe5('0x41')]));_0x205efd[_0x7fe5('0x40')]=_0x205efd['attributes'][_0x7fe5('0x42')]?_0x205efd[_0x7fe5('0x40')]:_0x416d7c[_0x7fe5('0x39')];if(!_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x43')](_0x7fe5('0x44'))){_0x205efd[_0x7fe5('0x30')]=qs['limit'](_0x539573['query'][_0x7fe5('0x30')]);_0x205efd['offset']=qs[_0x7fe5('0x2f')](_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x2f')]);}_0x205efd[_0x7fe5('0x45')]=qs['sort'](_0x539573[_0x7fe5('0x3a')]['sort']);_0x205efd['where']=qs[_0x7fe5('0x3e')](_[_0x7fe5('0x46')](_0x539573['query'],_0x416d7c[_0x7fe5('0x3e')]));if(_0x4aeed2[_0x7fe5('0x3b')]){if(_0x4aeed2[_0x7fe5('0x3c')]){_0x4aeed2[_0x7fe5('0x3c')]=moment(_0x4aeed2[_0x7fe5('0x3c')])['add'](0x1,_0x7fe5('0x47'));}else{_0x4aeed2[_0x7fe5('0x3c')]=moment(_0x4aeed2['dateStart'])[_0x7fe5('0x48')](0x1,_0x7fe5('0x47'));}_[_0x7fe5('0x49')](_0x205efd[_0x7fe5('0x4a')],{'createdAt':{'$gte':_0x4aeed2['dateStart'],'$lte':_0x4aeed2[_0x7fe5('0x3c')]}});}if(_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x4b')]){_0x205efd['where']=_[_0x7fe5('0x49')](_0x205efd[_0x7fe5('0x4a')],{'$or':_[_0x7fe5('0x4c')](_0x3ef03d,function(_0x4bf44a){if(_0x4bf44a[_0x7fe5('0x4d')][_0x7fe5('0x4e')]!==_0x7fe5('0x4f')){var _0x4b8642={};_0x4b8642[_0x4bf44a[_0x7fe5('0x50')]]={'$like':'%'+_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x4b')]+'%'};return _0x4b8642;}})});}_0x205efd=_[_0x7fe5('0x49')]({},_0x205efd,_0x539573[_0x7fe5('0x51')]);var _0x9bccfa={'where':_0x205efd[_0x7fe5('0x4a')]};_0x9bccfa[_0x7fe5('0x52')]=[];if(_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x53')]){_0x9bccfa[_0x7fe5('0x52')]['push']({'model':db['Tag'],'as':'Tags','attributes':['id'],'where':{'id':_0x539573['query'][_0x7fe5('0x53')]},'required':!![]});_0x9bccfa['distinct']=!![];}if(_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x54')]){_0x9bccfa[_0x7fe5('0x52')][_0x7fe5('0x55')]({'model':db[_0x7fe5('0x56')],'as':'Messages','attributes':['id',_0x7fe5('0x57'),_0x7fe5('0x58'),_0x7fe5('0x54')],'where':{'direction':'in','read':_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x54')]||![]},'required':!![]});_0x9bccfa[_0x7fe5('0x59')]=!![];}return db[_0x7fe5('0x38')][_0x7fe5('0x2e')](_0x9bccfa)[_0x7fe5('0x1e')](function(_0x2257c9){_0x4bbf54['count']=_0x2257c9;if(_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x5a')]){_0x205efd[_0x7fe5('0x52')]=[{'model':db[_0x7fe5('0x5b')],'as':_0x7fe5('0x5c'),'required':![],'attributes':['id',_0x7fe5('0x37'),'fullname']},{'model':db[_0x7fe5('0x5d')],'as':_0x7fe5('0x5e'),'required':![]},{'model':db[_0x7fe5('0x5b')],'as':_0x7fe5('0x5f'),'attributes':[_0x7fe5('0x37'),_0x7fe5('0x60'),_0x7fe5('0x61')],'required':![]},{'model':db['ChatWebsite'],'as':_0x7fe5('0x62'),'attributes':[_0x7fe5('0x37'),_0x7fe5('0x4e')],'required':![]},{'model':db[_0x7fe5('0x56')],'as':_0x7fe5('0x63'),'attributes':['id','direction',_0x7fe5('0x58'),_0x7fe5('0x54')],'where':{'direction':'in','read':_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x54')]||![]},'required':_0x539573['query'][_0x7fe5('0x54')]||![]},{'model':db[_0x7fe5('0x64')],'as':_0x7fe5('0x65'),'attributes':['id',_0x7fe5('0x37'),_0x7fe5('0x66')],'required':_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x53')]?!![]:![]},{'model':db[_0x7fe5('0x64')],'as':_0x7fe5('0x67'),'attributes':['id',_0x7fe5('0x37'),_0x7fe5('0x66')],'through':_0x539573['query'][_0x7fe5('0x53')]?{'attributes':[],'where':{'TagId':_0x539573[_0x7fe5('0x3a')][_0x7fe5('0x53')]||undefined}}:{},'required':_0x539573['query']['tag']?!![]:![]}];}return db[_0x7fe5('0x38')]['findAll'](_0x205efd);})[_0x7fe5('0x1e')](function(_0x46e8f5){_0x4bbf54['rows']=_0x46e8f5;return _0x4bbf54;})[_0x7fe5('0x1e')](respondWithFilteredResult(_0x4d7793,_0x205efd))['catch'](handleError(_0x4d7793,null));};exports[_0x7fe5('0x68')]=function(_0x23f2c8,_0x28cb7a){var _0x39a5fc={'raw':![],'where':{'id':_0x23f2c8[_0x7fe5('0x69')]['id']}},_0x42d7b3={};_0x42d7b3['model']=_['keys'](db[_0x7fe5('0x38')][_0x7fe5('0x6a')]);_0x42d7b3[_0x7fe5('0x3a')]=_[_0x7fe5('0x3d')](_0x23f2c8[_0x7fe5('0x3a')]);_0x42d7b3['filters']=_[_0x7fe5('0x3f')](_0x42d7b3[_0x7fe5('0x39')],_0x42d7b3[_0x7fe5('0x3a')]);_0x39a5fc[_0x7fe5('0x40')]=_[_0x7fe5('0x3f')](_0x42d7b3['model'],qs[_0x7fe5('0x41')](_0x23f2c8[_0x7fe5('0x3a')][_0x7fe5('0x41')]));_0x39a5fc[_0x7fe5('0x40')]=_0x39a5fc[_0x7fe5('0x40')][_0x7fe5('0x42')]?_0x39a5fc[_0x7fe5('0x40')]:_0x42d7b3['model'];if(_0x23f2c8[_0x7fe5('0x3a')][_0x7fe5('0x5a')]){_0x39a5fc[_0x7fe5('0x52')]=[{'all':!![]}];}_0x39a5fc=_[_0x7fe5('0x49')]({},_0x39a5fc,_0x23f2c8[_0x7fe5('0x51')]);return db[_0x7fe5('0x38')][_0x7fe5('0x6b')](_0x39a5fc)['then'](handleEntityNotFound(_0x28cb7a,null))['then'](respondWithResult(_0x28cb7a,null))[_0x7fe5('0x29')](handleError(_0x28cb7a,null));};exports['create']=function(_0x38ddac,_0x50f371){return db[_0x7fe5('0x38')][_0x7fe5('0x6c')](_0x38ddac[_0x7fe5('0x6d')],{})[_0x7fe5('0x1e')](respondWithResult(_0x50f371,0xc9))[_0x7fe5('0x29')](handleError(_0x50f371,null));};exports[_0x7fe5('0x35')]=function(_0x1ffb28,_0x411c3c){if(_0x1ffb28['body']['id']){delete _0x1ffb28[_0x7fe5('0x6d')]['id'];}return db['ChatInteraction'][_0x7fe5('0x6b')]({'where':{'id':_0x1ffb28[_0x7fe5('0x69')]['id']}})[_0x7fe5('0x1e')](handleEntityNotFound(_0x411c3c,null))['then'](saveUpdates(_0x1ffb28[_0x7fe5('0x6d')],null))[_0x7fe5('0x1e')](respondWithResult(_0x411c3c,null))[_0x7fe5('0x29')](handleError(_0x411c3c,null));};exports[_0x7fe5('0x36')]=function(_0x31404b,_0x24d798){return db['ChatInteraction'][_0x7fe5('0x6b')]({'where':{'id':_0x31404b[_0x7fe5('0x69')]['id']}})['then'](handleEntityNotFound(_0x24d798,null))[_0x7fe5('0x1e')](removeEntity(_0x24d798,null))[_0x7fe5('0x29')](handleError(_0x24d798,null));};exports['describe']=function(_0x25180d,_0x522b93){return db[_0x7fe5('0x38')][_0x7fe5('0x6e')]()[_0x7fe5('0x1e')](respondWithResult(_0x522b93,null))[_0x7fe5('0x29')](handleError(_0x522b93,null));};exports[_0x7fe5('0x6f')]=function(_0x4f073f,_0x147735){if(_0x4f073f['body']['id']){delete _0x4f073f[_0x7fe5('0x6d')]['id'];}return db[_0x7fe5('0x38')][_0x7fe5('0x6b')]({'where':{'id':_0x4f073f[_0x7fe5('0x69')]['id']}})['then'](handleEntityNotFound(_0x147735,null))[_0x7fe5('0x1e')](saveUpdates(_0x4f073f['body'],null))[_0x7fe5('0x1e')](respondWithResult(_0x147735,null))[_0x7fe5('0x29')](handleError(_0x147735,null));};exports['abandon']=function(_0xaadf02,_0x146eaf,_0x536107){if(_0xaadf02[_0x7fe5('0x6d')]['id']){delete _0xaadf02[_0x7fe5('0x6d')]['id'];}return db[_0x7fe5('0x38')]['find']({'where':{'id':_0xaadf02[_0x7fe5('0x69')]['id']}})[_0x7fe5('0x1e')](function(_0x522452){if(!_0x522452){logger[_0x7fe5('0x25')](_0x7fe5('0x70'),'abandon',0x194,_0x7fe5('0x71'));_0x146eaf['sendStatus'](0x194);}else{if(_0x522452['UserId']){throw new db[(_0x7fe5('0x72'))][(_0x7fe5('0x73'))]('Interaction\x20already\x20assigned');}}return _0x522452;})['then'](function(_0x3d73e7){if(_0x3d73e7){return _0x3d73e7['update']({'closed':_0xaadf02[_0x7fe5('0x6d')]['closed'],'closedAt':_0xaadf02[_0x7fe5('0x6d')][_0x7fe5('0x74')],'disposition':_0xaadf02[_0x7fe5('0x6d')][_0x7fe5('0x75')]})[_0x7fe5('0x1e')](function(_0x4d54cd){return _0x4d54cd;});}})[_0x7fe5('0x1e')](function(_0x2cb83d){return respondWithRpcPromise(_0x7fe5('0x76'),_0x7fe5('0x77'),_0xaadf02[_0x7fe5('0x6d')],client9004);})[_0x7fe5('0x1e')](respondWithResult(_0x146eaf,null))[_0x7fe5('0x29')](handleError(_0x146eaf,null));};exports[_0x7fe5('0x78')]=function(_0x26b4c9,_0x438a71,_0x4c9d9f){_0x26b4c9[_0x7fe5('0x6d')][_0x7fe5('0x37')]=_0x26b4c9[_0x7fe5('0x79')][_0x7fe5('0x7a')];_0x26b4c9[_0x7fe5('0x6d')]['basename']=_0x26b4c9[_0x7fe5('0x79')][_0x7fe5('0x7b')];_0x26b4c9[_0x7fe5('0x6d')][_0x7fe5('0x4d')]=_0x26b4c9[_0x7fe5('0x79')][_0x7fe5('0x7c')];return db[_0x7fe5('0x7d')][_0x7fe5('0x6c')](_0x26b4c9[_0x7fe5('0x6d')])[_0x7fe5('0x1e')](respondWithResult(_0x438a71,0xc9))[_0x7fe5('0x29')](handleError(_0x438a71,null));};exports['attachmentDownload']=function(_0x424fb5,_0x5412eb,_0x18b42f){return db[_0x7fe5('0x38')][_0x7fe5('0x7e')]({'where':{'id':_0x424fb5['params']['id']},'raw':!![]})[_0x7fe5('0x1e')](handleEntityNotFound(_0x5412eb,null))[_0x7fe5('0x1e')](function(_0x226ada){if(_0x226ada){if(_0x226ada['closed']){return _0x5412eb['status'](0x193)['json']({'status':0x193,'message':_0x7fe5('0x7f')});}return db[_0x7fe5('0x7d')][_0x7fe5('0x7e')]({'where':{'id':_0x424fb5[_0x7fe5('0x3a')]['attachId']},'raw':!![]})[_0x7fe5('0x1e')](handleEntityNotFound(_0x5412eb,null));}})[_0x7fe5('0x1e')](function(_0x48e9c1){if(_0x48e9c1){return _0x5412eb['download'](path[_0x7fe5('0x80')](config[_0x7fe5('0x81')],_0x7fe5('0x82'),_0x48e9c1[_0x7fe5('0x83')]));}})[_0x7fe5('0x29')](handleError(_0x5412eb,null));};exports['close']=function(_0x463e7a,_0x4c87c8){var _0x35f5b4=null;var _0xf26047=null;var _0x4178e8=null;var _0x2bc361=null;if(_0x463e7a[_0x7fe5('0x6d')]['id']){delete _0x463e7a[_0x7fe5('0x6d')]['id'];}if(_0x463e7a[_0x7fe5('0x6d')][_0x7fe5('0x84')]){_0x2bc361=path[_0x7fe5('0x80')](config[_0x7fe5('0x81')],_0x7fe5('0x85'),util['format'](_0x7fe5('0x86'),Date[_0x7fe5('0x87')]()));_0x463e7a[_0x7fe5('0x6d')][_0x7fe5('0x88')]=_0x2bc361;}return db[_0x7fe5('0x38')][_0x7fe5('0x6b')]({'where':{'id':_0x463e7a['params']['id']},'include':[{'model':db[_0x7fe5('0x56')],'as':_0x7fe5('0x63'),'include':[{'model':db[_0x7fe5('0x5b')],'as':_0x7fe5('0x5b')}]}]})[_0x7fe5('0x1e')](handleEntityNotFound(_0x4c87c8,null))['then'](saveUpdates(_0x463e7a['body'],null))['then'](function(_0x4330c5){if(_0x4330c5){_0x35f5b4=_0x4330c5;return db[_0x7fe5('0x89')][_0x7fe5('0x6b')]({'where':{'id':_0x35f5b4[_0x7fe5('0x8a')]}});}})[_0x7fe5('0x1e')](function(_0x32acf3){if(_0x32acf3){_0x4178e8=_0x32acf3;return db[_0x7fe5('0x5d')][_0x7fe5('0x6b')]({'where':{'id':_0x35f5b4[_0x7fe5('0x8b')]}});}})[_0x7fe5('0x1e')](function(_0x5bc80c){if(_0x5bc80c){_0xf26047=_0x5bc80c;if(_0x2bc361){var _0x39cdc5=null;for(var _0x4aeb83=0x1;_0x4aeb83<_0x35f5b4['Messages'][_0x7fe5('0x42')];++_0x4aeb83){_0x39cdc5=_0x35f5b4[_0x7fe5('0x63')][_0x4aeb83];var _0x1b7607=_0x39cdc5['UserId']?util[_0x7fe5('0x8c')]('%s%d',_0x4178e8['agentAlias'],_0x39cdc5[_0x7fe5('0x8d')]):_0x7fe5('0x8e');var _0x1ebe52=_0x463e7a[_0x7fe5('0x6d')][_0x7fe5('0x8f')]||util[_0x7fe5('0x8c')](_0x7fe5('0x90'),_0x7fe5('0x91'),_0x39cdc5[_0x7fe5('0x8b')]);switch(_0x4178e8[_0x7fe5('0x92')]){case'website_alias':_0x1b7607=_0x39cdc5[_0x7fe5('0x8d')]?util[_0x7fe5('0x8c')](_0x7fe5('0x90'),_0x4178e8[_0x7fe5('0x93')],_0x39cdc5['UserId']):_0x7fe5('0x8e');break;case _0x7fe5('0x94'):_0x1b7607=_0x39cdc5['UserId']?_0x39cdc5[_0x7fe5('0x5b')][_0x7fe5('0x95')]||_0x39cdc5[_0x7fe5('0x5b')][_0x7fe5('0x60')]:_0x7fe5('0x8e');break;case _0x7fe5('0x96'):_0x1b7607=_0x39cdc5[_0x7fe5('0x8d')]?_0x39cdc5[_0x7fe5('0x5b')]['fullname']:_0x7fe5('0x8e');break;default:_0x1b7607=_0x39cdc5[_0x7fe5('0x8d')]?util[_0x7fe5('0x8c')](_0x7fe5('0x90'),_0x4178e8[_0x7fe5('0x93')],_0x39cdc5[_0x7fe5('0x8d')]):_0x7fe5('0x8e');}var _0x263ded=util[_0x7fe5('0x8c')](_0x7fe5('0x97'),moment(_0x39cdc5[_0x7fe5('0x58')])[_0x7fe5('0x8c')](_0x7fe5('0x98')),_0x39cdc5[_0x7fe5('0x57')]==='in'?_0x1ebe52:_0x1b7607,_0x39cdc5[_0x7fe5('0x6d')]);if(!_0x39cdc5[_0x7fe5('0x99')]){fs[_0x7fe5('0x9a')](_0x2bc361,_0x263ded);}}return db['MailAccount'][_0x7fe5('0x7e')]({'where':{'service':!![]},'include':[{'model':db[_0x7fe5('0x9b')],'as':'Smtp','raw':!![]}]});}}})[_0x7fe5('0x1e')](function(_0x46a287){if(_0x46a287&&_0x46a287['Smtp']&&_0x463e7a[_0x7fe5('0x6d')]){var _0x2e4e4d={'tls':{'rejectUnauthorized':![]}};if(_0x46a287['Smtp']['service']){_0x2e4e4d[_0x7fe5('0x9c')]=_0x46a287[_0x7fe5('0x9d')][_0x7fe5('0x9c')];}else{_0x2e4e4d[_0x7fe5('0x9e')]=_0x46a287[_0x7fe5('0x9d')][_0x7fe5('0x9e')];_0x2e4e4d[_0x7fe5('0x9f')]=_0x46a287[_0x7fe5('0x9d')][_0x7fe5('0x9f')];_0x2e4e4d['secure']=_0x46a287[_0x7fe5('0x9d')][_0x7fe5('0xa0')];}if(_0x46a287[_0x7fe5('0x9d')][_0x7fe5('0xa1')]){_0x2e4e4d[_0x7fe5('0xa2')]={'user':_0x46a287[_0x7fe5('0x9d')][_0x7fe5('0xa3')],'pass':_0x46a287[_0x7fe5('0x9d')][_0x7fe5('0xa4')]};}return respondWithRpcPromise('SendMail',_0x7fe5('0xa5'),{'account':_0x2e4e4d,'message':{'from':util[_0x7fe5('0x8c')](_0x7fe5('0xa6'),_0x46a287[_0x7fe5('0x37')],_0x46a287['email']||_0x46a287[_0x7fe5('0x9d')][_0x7fe5('0xa3')]),'to':_0x463e7a[_0x7fe5('0x6d')][_0x7fe5('0x84')],'subject':_0x7fe5('0xa7'),'text':util[_0x7fe5('0x8c')](_0x7fe5('0xa8'),_0x463e7a[_0x7fe5('0x6d')][_0x7fe5('0x84')]),'attachments':[{'path':_0x2bc361}]}})[_0x7fe5('0x1e')](function(){return _0x35f5b4;})['catch'](function(_0x16ed8a){console[_0x7fe5('0x25')](_0x16ed8a);});}else{return _0x35f5b4;}})['then'](respondWithStatusCode(_0x4c87c8,0xc8))[_0x7fe5('0x29')](handleError(_0x4c87c8,null));};exports[_0x7fe5('0xa9')]=function(_0x17fb8d,_0x443574,_0x1e82b1){return db[_0x7fe5('0x56')][_0x7fe5('0x6b')]({'where':{'id':_0x17fb8d[_0x7fe5('0x69')]['id']}})[_0x7fe5('0x1e')](handleEntityNotFound(_0x443574,null))[_0x7fe5('0x1e')](function(_0xafd6b5){if(_0xafd6b5){return _0xafd6b5[_0x7fe5('0xa9')](_0x17fb8d[_0x7fe5('0x6d')][_0x7fe5('0xaa')],_[_0x7fe5('0xab')](_0x17fb8d[_0x7fe5('0x6d')],[_0x7fe5('0xaa'),'id'])||{});}})[_0x7fe5('0x1e')](respondWithResult(_0x443574,null))['catch'](handleError(_0x443574,null));};exports['getMessages']=function(_0x1cac38,_0x2ea727,_0x450e90){var _0x89b70e={'raw':![],'where':{}};var _0x3d7ce5={};var _0x45651b={'count':0x0,'rows':[]};return db[_0x7fe5('0x38')][_0x7fe5('0x7e')]({'where':{'id':_0x1cac38[_0x7fe5('0x69')]['id']}})[_0x7fe5('0x1e')](handleEntityNotFound(_0x2ea727,null))[_0x7fe5('0x1e')](function(_0x3062d3){if(_0x3062d3){_0x3d7ce5[_0x7fe5('0x39')]=_['keys'](db['ChatMessage']['rawAttributes']);_0x3d7ce5[_0x7fe5('0x3a')]=_[_0x7fe5('0x3d')](_0x1cac38[_0x7fe5('0x3a')]);_0x3d7ce5[_0x7fe5('0x3e')]=_[_0x7fe5('0x3f')](_0x3d7ce5[_0x7fe5('0x39')],_0x3d7ce5['query']);_0x89b70e[_0x7fe5('0x40')]=_[_0x7fe5('0x3f')](_0x3d7ce5[_0x7fe5('0x39')],qs[_0x7fe5('0x41')](_0x1cac38[_0x7fe5('0x3a')][_0x7fe5('0x41')]));_0x89b70e[_0x7fe5('0x40')]=_0x89b70e[_0x7fe5('0x40')][_0x7fe5('0x42')]?_0x89b70e[_0x7fe5('0x40')]:_0x3d7ce5[_0x7fe5('0x39')];if(!_0x1cac38[_0x7fe5('0x3a')]['hasOwnProperty'](_0x7fe5('0x44'))){_0x89b70e['limit']=qs['limit'](_0x1cac38[_0x7fe5('0x3a')][_0x7fe5('0x30')]);_0x89b70e[_0x7fe5('0x2f')]=qs['offset'](_0x1cac38[_0x7fe5('0x3a')][_0x7fe5('0x2f')]);}_0x89b70e[_0x7fe5('0x45')]=qs['sort'](_0x1cac38[_0x7fe5('0x3a')]['sort']);_0x89b70e[_0x7fe5('0x4a')]=qs[_0x7fe5('0x3e')](_[_0x7fe5('0x46')](_0x1cac38['query'],_0x3d7ce5[_0x7fe5('0x3e')]));_0x89b70e[_0x7fe5('0x4a')][_0x7fe5('0xac')]=_0x3062d3['id'];if(_0x1cac38[_0x7fe5('0x3a')][_0x7fe5('0x4b')]){_0x89b70e[_0x7fe5('0x4a')]=_[_0x7fe5('0x49')](_0x89b70e[_0x7fe5('0x4a')],{'$or':_[_0x7fe5('0x4c')](_0x89b70e[_0x7fe5('0x40')],function(_0x247217){var _0x14641e={};_0x14641e[_0x247217]={'$like':'%'+_0x1cac38['query']['filter']+'%'};return _0x14641e;})});}if(_0x1cac38['query'][_0x7fe5('0xad')]){var _0xeb3d83=_0x1cac38[_0x7fe5('0x3a')][_0x7fe5('0xad')]['split'](',');var _0x57239b={};_0x57239b[_0xeb3d83[0x0]]={'$gte':moment(_0xeb3d83[0x1])[_0x7fe5('0x8c')]('YYYY-MM-DD\x20HH:mm:ss')};_0x89b70e[_0x7fe5('0x4a')]=_[_0x7fe5('0x49')](_0x89b70e[_0x7fe5('0x4a')],_0x57239b);}_0x89b70e=_[_0x7fe5('0x49')]({},_0x89b70e,_0x1cac38[_0x7fe5('0x51')]);return db[_0x7fe5('0x56')][_0x7fe5('0x2e')]({'where':_0x89b70e[_0x7fe5('0x4a')]})['then'](function(_0x3e57e8){_0x45651b[_0x7fe5('0x2e')]=_0x3e57e8;if(_0x1cac38[_0x7fe5('0x3a')]['includeAll']){_0x89b70e[_0x7fe5('0x52')]=[{'all':!![]}];}return db[_0x7fe5('0x56')][_0x7fe5('0xae')](_0x89b70e);})[_0x7fe5('0x1e')](function(_0xcb39ee){_0x45651b[_0x7fe5('0xaf')]=_0xcb39ee;return _0x45651b;});}})[_0x7fe5('0x1e')](respondWithFilteredResult(_0x2ea727,_0x89b70e))[_0x7fe5('0x29')](handleError(_0x2ea727,null));};exports['getMyMessages']=function(_0x5161dd,_0x241bd0,_0x5be1ca){var _0x37a13d={'where':{}},_0x2912fc={},_0x15b28e={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x7fe5('0x7e')]({'where':{'id':_0x5161dd[_0x7fe5('0x69')]['id']}})[_0x7fe5('0x1e')](handleEntityNotFound(_0x241bd0,null))[_0x7fe5('0x1e')](function(_0x4ebb30){if(_0x4ebb30){_0x2912fc[_0x7fe5('0x39')]=_[_0x7fe5('0x3d')](db['ChatMessage'][_0x7fe5('0x6a')]);_0x2912fc[_0x7fe5('0x3a')]=_[_0x7fe5('0x3d')](_0x5161dd[_0x7fe5('0x3a')]);_0x2912fc['filters']=_[_0x7fe5('0x3f')](_0x2912fc['model'],_0x2912fc['query']);_0x37a13d['attributes']=_[_0x7fe5('0x3f')](_0x2912fc['model'],qs[_0x7fe5('0x41')](_0x5161dd['query'][_0x7fe5('0x41')]));_0x37a13d[_0x7fe5('0x40')]=_0x37a13d[_0x7fe5('0x40')][_0x7fe5('0x42')]?_0x37a13d[_0x7fe5('0x40')]:_0x2912fc[_0x7fe5('0x39')];if(!_0x5161dd[_0x7fe5('0x3a')][_0x7fe5('0x43')](_0x7fe5('0x44'))){_0x37a13d['limit']=qs['limit'](_0x5161dd[_0x7fe5('0x3a')][_0x7fe5('0x30')]);_0x37a13d[_0x7fe5('0x2f')]=qs[_0x7fe5('0x2f')](_0x5161dd[_0x7fe5('0x3a')]['offset']);}_0x37a13d[_0x7fe5('0x45')]=qs['sort'](_0x5161dd[_0x7fe5('0x3a')]['sort']);_0x37a13d[_0x7fe5('0x4a')]=qs[_0x7fe5('0x3e')](_[_0x7fe5('0x46')](_0x5161dd['query'],_0x2912fc[_0x7fe5('0x3e')]));_0x37a13d[_0x7fe5('0x4a')][_0x7fe5('0xac')]=_0x4ebb30['id'];if(_0x5161dd['query'][_0x7fe5('0x4b')]){_0x37a13d[_0x7fe5('0x4a')]=_[_0x7fe5('0x49')](_0x37a13d[_0x7fe5('0x4a')],{'$or':_[_0x7fe5('0x4c')](_0x37a13d[_0x7fe5('0x40')],function(_0x3499f0){var _0x36bd7c={};_0x36bd7c[_0x3499f0]={'$like':'%'+_0x5161dd['query'][_0x7fe5('0x4b')]+'%'};return _0x36bd7c;})});}_0x37a13d[_0x7fe5('0x4a')]['secret']=![];if(_0x5161dd[_0x7fe5('0x3a')]['id']){_0x37a13d[_0x7fe5('0x4a')]['id']={'$gt':_0x5161dd[_0x7fe5('0x3a')]['id']};}_0x37a13d=_[_0x7fe5('0x49')]({},_0x37a13d,_0x5161dd[_0x7fe5('0x51')]);return db['ChatMessage']['count']({'where':_0x37a13d[_0x7fe5('0x4a')]})[_0x7fe5('0x1e')](function(_0x3984b4){_0x15b28e[_0x7fe5('0x2e')]=_0x3984b4;_0x37a13d[_0x7fe5('0x52')]=[];if(_0x5161dd[_0x7fe5('0x3a')][_0x7fe5('0xb0')]){_0x37a13d[_0x7fe5('0x52')][_0x7fe5('0x55')]({'model':db[_0x7fe5('0x5b')],'as':_0x7fe5('0x5b'),'attributes':['id',_0x7fe5('0x60'),'alias']});}if(_0x5161dd['query']['includeAll']){_0x37a13d[_0x7fe5('0x52')]=[{'all':!![]}];}return db[_0x7fe5('0x56')][_0x7fe5('0xae')](_0x37a13d);})[_0x7fe5('0x1e')](function(_0x3c6f1f){_0x15b28e[_0x7fe5('0xaf')]=_0x3c6f1f;return _0x15b28e;});}})[_0x7fe5('0x1e')](respondWithFilteredResult(_0x241bd0,_0x37a13d))[_0x7fe5('0x29')](handleError(_0x241bd0,null));};exports['addTags']=function(_0x15cfff,_0x5a7fb3,_0x342f67){return db[_0x7fe5('0x38')][_0x7fe5('0x6b')]({'where':{'id':_0x15cfff[_0x7fe5('0x69')]['id']}})[_0x7fe5('0x1e')](handleEntityNotFound(_0x5a7fb3,null))['then'](function(_0x280369){if(_0x280369){return _0x280369[_0x7fe5('0xb1')](_0x15cfff[_0x7fe5('0x6d')]['ids'],_[_0x7fe5('0xab')](_0x15cfff[_0x7fe5('0x6d')],['ids','id'])||{})[_0x7fe5('0xb2')](function(){return db[_0x7fe5('0x64')]['findAll']({'attributes':['id',_0x7fe5('0x37'),_0x7fe5('0x66')],'where':{'id':_0x15cfff['body'][_0x7fe5('0xaa')]}});})['then'](function(_0x1956ff){socket[_0x7fe5('0xb3')](_0x7fe5('0xb4'),{'id':Number(_0x15cfff[_0x7fe5('0x69')]['id']),'tags':_0x1956ff||[]});return{'id':Number(_0x15cfff[_0x7fe5('0x69')]['id']),'tags':_0x1956ff||[]};});}})['then'](respondWithResult(_0x5a7fb3,null))['catch'](handleError(_0x5a7fb3,null));};exports[_0x7fe5('0xb5')]=function(_0x553b62,_0x4de2f0,_0x524867){var _0x4574cb;return db[_0x7fe5('0x38')]['find']({'where':{'id':_0x553b62[_0x7fe5('0x69')]['id']}})[_0x7fe5('0x1e')](handleEntityNotFound(_0x4de2f0,null))['then'](function(_0x2df871){if(_0x2df871){return _0x2df871[_0x7fe5('0xb5')](_0x553b62['query'][_0x7fe5('0xaa')]);}})[_0x7fe5('0x1e')](respondWithStatusCode(_0x4de2f0,null))[_0x7fe5('0x29')](handleError(_0x4de2f0,null));};exports[_0x7fe5('0xb6')]=function(_0x4a6a51,_0x1470c0){var _0x3337c7=moment()[_0x7fe5('0xb7')]()[_0x7fe5('0xb8')]();var _0x3bccf4=path[_0x7fe5('0x80')](config['root'],_0x7fe5('0xb9'),_0x7fe5('0xba'),_0x7fe5('0xbb'));var _0x5024c1=path['join'](config['root'],_0x7fe5('0xb9'),_0x7fe5('0xba'),'attachments');var _0x3f097f=path[_0x7fe5('0x80')](_0x3bccf4,_0x3337c7);var _0x10c9e6=util[_0x7fe5('0x8c')](_0x7fe5('0xbc'),_0x3337c7);var _0x40e956=path['join'](_0x3bccf4,_0x10c9e6);var _0x6b9e03=![];return db[_0x7fe5('0x38')][_0x7fe5('0x6b')]({'where':{'id':_0x4a6a51['params']['id']},'include':[{'model':db[_0x7fe5('0x56')],'as':'Messages','attributes':['id',_0x7fe5('0x6d')],'include':[{'model':db[_0x7fe5('0x5b')],'as':_0x7fe5('0x5b'),'attributes':['id',_0x7fe5('0x60')],'raw':!![]},{'model':db['CmContact'],'as':'Contact','attributes':['id',_0x7fe5('0xbd')],'raw':!![]},{'model':db[_0x7fe5('0x7d')],'as':'Attachment','raw':!![]}]}]})[_0x7fe5('0x1e')](handleEntityNotFound(_0x1470c0,null))[_0x7fe5('0x1e')](function(_0x116930){if(_0x116930){_0x6b9e03=!![];var _0x285e1e='';var _0x295e5e={'format':_0x7fe5('0xbe'),'border':_0x7fe5('0xbf')};fs[_0x7fe5('0xc0')](_0x3f097f);_0x285e1e+=util['format'](_0x7fe5('0xc1'),_0x116930['id']);_0x285e1e+=util[_0x7fe5('0x8c')](_0x7fe5('0xc2'),moment()['format']('MMMM\x20Do\x20YYYY,\x20HH:mm:ss')[_0x7fe5('0xb8')]());_0x285e1e+='<hr>';for(var _0x254954=0x1;_0x254954<_0x116930['Messages'][_0x7fe5('0x42')];_0x254954++){var _0xd0276b=_0x116930[_0x7fe5('0x63')][_0x254954];_0x285e1e+=_0x7fe5('0xc3');_0x285e1e+=util[_0x7fe5('0x8c')](_0x7fe5('0xc4'),_0xd0276b[_0x7fe5('0x5b')]?_0xd0276b[_0x7fe5('0x5b')][_0x7fe5('0x60')]:_0xd0276b[_0x7fe5('0x5e')][_0x7fe5('0xbd')],_0xd0276b[_0x7fe5('0x6d')]);_0x285e1e+=_0x7fe5('0xc5');if(_0xd0276b[_0x7fe5('0x7d')]){var _0x3661e1=_0xd0276b[_0x7fe5('0x7d')];var _0xbdb7a6=path[_0x7fe5('0x80')](_0x5024c1,_0x3661e1[_0x7fe5('0x83')]);if(fs[_0x7fe5('0xc6')](_0xbdb7a6)){fs['createReadStream'](_0xbdb7a6)['pipe'](fs[_0x7fe5('0xc7')](path[_0x7fe5('0x80')](_0x3f097f,_0x3661e1[_0x7fe5('0x83')])));}}}return new BPromise(function(_0x826d11,_0x4800d8){pdf['create'](_0x285e1e,_0x295e5e)['toFile'](path['join'](_0x3f097f,_0x7fe5('0xc8')+_0x3337c7+_0x7fe5('0xc9')),function(_0x1dcaa7,_0x22c562){if(_0x1dcaa7)return _0x4800d8(_0x1dcaa7);_0x826d11(_0x22c562);});});}})[_0x7fe5('0x1e')](function(){if(_0x6b9e03){return new BPromise(function(_0x22ac72,_0xfe1a6c){zipdir(_0x3f097f,{'saveTo':_0x40e956},function(_0x2e1f3e,_0x314583){if(_0x2e1f3e)return _0xfe1a6c(_0x2e1f3e);return _0x22ac72(_0x314583);});});}})[_0x7fe5('0x1e')](function(){if(_0x6b9e03){return new BPromise(function(_0x89dfd2,_0x55e84d){rimraf(_0x3f097f,function(_0x172c44){if(_0x172c44)_0x55e84d(_0x172c44);return _0x89dfd2();});});}})[_0x7fe5('0x1e')](function(){if(_0x6b9e03){return _0x1470c0[_0x7fe5('0xb6')](_0x40e956,_0x10c9e6,function(_0xbed9b8){if(_0xbed9b8){console[_0x7fe5('0xca')](_0x7fe5('0xcb'),_0xbed9b8);}else{fs['unlinkSync'](_0x40e956);}});}else{return _0x1470c0[_0x7fe5('0x2a')](0xc8);}})[_0x7fe5('0x29')](handleError(_0x1470c0,null));};
\ No newline at end of file
+var _0x984b=['host','port','secure','authentication','pass','SendMail','sendMail','email','user','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','omit','ids','keys','ChatInteractionId','split','YYYY-MM-DD\x20HH:mm:ss','getMyMessages','alias','addTags','setTags','spread','chatInteractionTags:save','removeTags','unix','server','attachments','firstName','Attachment','Letter','1cm','mkdirSync','<h1>Chat\x20Interaction:\x20#%d</h1>','<h2>Date:\x20%s</h2>','toString','<div\x20style=\x22border-style:\x20solid;\x20border-width:\x201px;\x20margin:\x203px;\x22>','<p\x20style=\x22margin:\x203px;\x22>%s:\x20%s</p>','</div>','existsSync','createReadStream','pipe','toFile','interaction-','.pdf','log','zip-dir','fast-json-patch','request-promise','mustache','util','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','client','http','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','count','offset','limit','apply','reject','save','update','destroy','stack','name','send','rawAttributes','query','dateEnd','dateStart','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','add','day','merge','filter','map','type','key','field','options','include','tag','push','Tags','distinct','read','ChatMessage','direction','createdAt','includeAll','User','Users','fullname','Contact','Owner','Account','Messages','Tag','color','ChatInteraction','findAll','rows','params','find','body','describe','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Sequelize','ValidationError','Interaction\x20already\x20assigned','closed','closedAt','AbandonInteraction','abandon','originalname','basename','file','mimetype','create','attachmentDownload','findOne','Unauthorized','attachId','download','root','close','mailTranscript','join','server/files/chat/upload/','transcript-%s.txt','now','pathTranscript','ChatWebsiteId','CmContact','format','%s%d','System','agentIdentifier','website_alias','agentAlias','agent_fullname','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service'];(function(_0x211087,_0x354fdd){var _0x2a581f=function(_0x2928fe){while(--_0x2928fe){_0x211087['push'](_0x211087['shift']());}};_0x2a581f(++_0x354fdd);}(_0x984b,0xee));var _0xb984=function(_0x2d9ce2,_0x8e490e){_0x2d9ce2=_0x2d9ce2-0x0;var _0x1b11b5=_0x984b[_0x2d9ce2];return _0x1b11b5;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb984('0x0'));var jsonpatch=require(_0xb984('0x1'));var rp=require(_0xb984('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb984('0x3'));var util=require(_0xb984('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0xb984('0x5'));var ejs=require(_0xb984('0x6'));var fs=require('fs');var _=require('lodash');var squel=require(_0xb984('0x7'));var crypto=require(_0xb984('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xb984('0x9'));var toCsv=require('to-csv');var querystring=require(_0xb984('0xa'));var Papa=require(_0xb984('0xb'));var Redis=require(_0xb984('0xc'));var qs=require(_0xb984('0xd'));var logger=require(_0xb984('0xe'))(_0xb984('0xf'));var utils=require(_0xb984('0x10'));var config=require(_0xb984('0x11'));var db=require(_0xb984('0x12'))['db'];config[_0xb984('0x13')]=_[_0xb984('0x14')](config[_0xb984('0x13')],{'host':'localhost','port':0x18eb});var socket=require(_0xb984('0x15'))(new Redis(config['redis']));require(_0xb984('0x16'))[_0xb984('0x17')](socket);var jayson=require('jayson/promise');var client=jayson[_0xb984('0x18')][_0xb984('0x19')]({'port':0x232b});var client9004=jayson['client'][_0xb984('0x19')]({'port':0x232c});function respondWithRpcPromise(_0x7a1b60,_0x549791,_0xede12d,_0x4073cb){return new BPromise(function(_0x57365c,_0x6fae41){var _0x5cd1aa=_0x4073cb||client;return _0x5cd1aa[_0xb984('0x1a')](_0x7a1b60,_0xede12d)[_0xb984('0x1b')](function(_0x3238a6){logger[_0xb984('0x1c')]('ChatInteraction,\x20%s,\x20%s',_0x549791,_0xb984('0x1d'));logger[_0xb984('0x1e')](_0xb984('0x1f'),_0x549791,_0xb984('0x1d'),JSON[_0xb984('0x20')](_0x3238a6));if(_0x3238a6[_0xb984('0x21')]){if(_0x3238a6['error'][_0xb984('0x22')]===0x1f4){logger[_0xb984('0x21')](_0xb984('0x23'),_0x549791,_0x3238a6[_0xb984('0x21')][_0xb984('0x24')]);return _0x6fae41(_0x3238a6[_0xb984('0x21')]['message']);}logger[_0xb984('0x21')](_0xb984('0x23'),_0x549791,_0x3238a6['error'][_0xb984('0x24')]);return _0x57365c(_0x3238a6[_0xb984('0x21')][_0xb984('0x24')]);}else{logger[_0xb984('0x1c')](_0xb984('0x23'),_0x549791,_0xb984('0x1d'));_0x57365c(_0x3238a6[_0xb984('0x25')]['message']);}})[_0xb984('0x26')](function(_0x25de23){logger[_0xb984('0x21')]('ChatInteraction,\x20%s,\x20%s',_0x549791,_0x25de23);_0x6fae41(_0x25de23);});});}function respondWithStatusCode(_0x2da621,_0x2e806e){_0x2e806e=_0x2e806e||0xcc;return function(_0x1cb2c2){if(_0x1cb2c2){return _0x2da621[_0xb984('0x27')](_0x2e806e);}return _0x2da621[_0xb984('0x28')](_0x2e806e)[_0xb984('0x29')]();};}function respondWithResult(_0x1faa95,_0x4b3da0){_0x4b3da0=_0x4b3da0||0xc8;return function(_0x5d93d9){if(_0x5d93d9){return _0x1faa95[_0xb984('0x28')](_0x4b3da0)[_0xb984('0x2a')](_0x5d93d9);}};}function respondWithFilteredResult(_0x3e254b,_0x2bd0f2){return function(_0x4fb896){if(_0x4fb896){var _0xa44895=_0x4fb896[_0xb984('0x2b')],_0x67e4d3=_0x2bd0f2[_0xb984('0x2c')],_0x476811=_0x2bd0f2[_0xb984('0x2c')]+_0x2bd0f2[_0xb984('0x2d')],_0x482a9f;if(_0x476811>=_0xa44895){_0x476811=_0xa44895;_0x482a9f=0xc8;}else{_0x482a9f=0xce;}_0x3e254b['status'](_0x482a9f);return _0x3e254b['set']('Content-Range',_0x67e4d3+'-'+_0x476811+'/'+_0xa44895)[_0xb984('0x2a')](_0x4fb896);}return null;};}function patchUpdates(_0x23ecf6){return function(_0x58a98c){try{jsonpatch[_0xb984('0x2e')](_0x58a98c,_0x23ecf6,!![]);}catch(_0x2bb03f){return BPromise[_0xb984('0x2f')](_0x2bb03f);}return _0x58a98c[_0xb984('0x30')]();};}function saveUpdates(_0x518bef,_0x4bb6da){return function(_0x315f70){if(_0x315f70){return _0x315f70[_0xb984('0x31')](_0x518bef)[_0xb984('0x1b')](function(_0x135435){return _0x135435;});}return null;};}function removeEntity(_0x4df9e0,_0x44ef84){return function(_0x35b37f){if(_0x35b37f){return _0x35b37f[_0xb984('0x32')]()[_0xb984('0x1b')](function(){_0x4df9e0[_0xb984('0x28')](0xcc)[_0xb984('0x29')]();});}};}function handleEntityNotFound(_0x5f4426,_0x54a293){return function(_0x2f7eca){if(!_0x2f7eca){_0x5f4426[_0xb984('0x27')](0x194);}return _0x2f7eca;};}function handleError(_0x2ed13e,_0x371c6a){_0x371c6a=_0x371c6a||0x1f4;return function(_0x30891c){logger['error'](_0x30891c[_0xb984('0x33')]);if(_0x30891c[_0xb984('0x34')]){delete _0x30891c['name'];}_0x2ed13e['status'](_0x371c6a)[_0xb984('0x35')](_0x30891c);};}exports['index']=function(_0xad9e0c,_0x3acc6a){var _0x5e8d57={},_0x349db9={},_0x4f2f3d={'count':0x0,'rows':[]};var _0x3cfc94=db['ChatInteraction'][_0xb984('0x36')];_0x349db9['model']=_['keys'](_0x3cfc94);var _0xf6d925={'dateStart':_0xad9e0c[_0xb984('0x37')]['dateStart'],'dateEnd':_0xad9e0c[_0xb984('0x37')][_0xb984('0x38')]};delete _0xad9e0c['query'][_0xb984('0x39')];delete _0xad9e0c[_0xb984('0x37')][_0xb984('0x38')];_0x349db9[_0xb984('0x37')]=_['keys'](_0xad9e0c[_0xb984('0x37')]);_0x349db9[_0xb984('0x3a')]=_[_0xb984('0x3b')](_0x349db9[_0xb984('0x3c')],_0x349db9[_0xb984('0x37')]);_0x5e8d57[_0xb984('0x3d')]=_[_0xb984('0x3b')](_0x349db9[_0xb984('0x3c')],qs[_0xb984('0x3e')](_0xad9e0c[_0xb984('0x37')]['fields']));_0x5e8d57[_0xb984('0x3d')]=_0x5e8d57[_0xb984('0x3d')][_0xb984('0x3f')]?_0x5e8d57[_0xb984('0x3d')]:_0x349db9[_0xb984('0x3c')];if(!_0xad9e0c[_0xb984('0x37')][_0xb984('0x40')](_0xb984('0x41'))){_0x5e8d57['limit']=qs['limit'](_0xad9e0c[_0xb984('0x37')]['limit']);_0x5e8d57[_0xb984('0x2c')]=qs[_0xb984('0x2c')](_0xad9e0c[_0xb984('0x37')][_0xb984('0x2c')]);}_0x5e8d57['order']=qs[_0xb984('0x42')](_0xad9e0c[_0xb984('0x37')]['sort']);_0x5e8d57[_0xb984('0x43')]=qs[_0xb984('0x3a')](_[_0xb984('0x44')](_0xad9e0c[_0xb984('0x37')],_0x349db9[_0xb984('0x3a')]));if(_0xf6d925[_0xb984('0x39')]){if(_0xf6d925[_0xb984('0x38')]){_0xf6d925['dateEnd']=moment(_0xf6d925[_0xb984('0x38')])[_0xb984('0x45')](0x1,'day');}else{_0xf6d925['dateEnd']=moment(_0xf6d925[_0xb984('0x39')])[_0xb984('0x45')](0x1,_0xb984('0x46'));}_[_0xb984('0x47')](_0x5e8d57[_0xb984('0x43')],{'createdAt':{'$gte':_0xf6d925['dateStart'],'$lte':_0xf6d925[_0xb984('0x38')]}});}if(_0xad9e0c[_0xb984('0x37')][_0xb984('0x48')]){_0x5e8d57[_0xb984('0x43')]=_[_0xb984('0x47')](_0x5e8d57[_0xb984('0x43')],{'$or':_[_0xb984('0x49')](_0x3cfc94,function(_0x198537){if(_0x198537[_0xb984('0x4a')][_0xb984('0x4b')]!=='VIRTUAL'){var _0x31d09={};_0x31d09[_0x198537[_0xb984('0x4c')]]={'$like':'%'+_0xad9e0c['query'][_0xb984('0x48')]+'%'};return _0x31d09;}})});}_0x5e8d57=_[_0xb984('0x47')]({},_0x5e8d57,_0xad9e0c[_0xb984('0x4d')]);var _0x381039={'where':_0x5e8d57[_0xb984('0x43')]};_0x381039[_0xb984('0x4e')]=[];if(_0xad9e0c[_0xb984('0x37')][_0xb984('0x4f')]){_0x381039[_0xb984('0x4e')][_0xb984('0x50')]({'model':db['Tag'],'as':_0xb984('0x51'),'attributes':['id'],'where':{'id':_0xad9e0c[_0xb984('0x37')][_0xb984('0x4f')]},'required':!![]});_0x381039[_0xb984('0x52')]=!![];}if(_0xad9e0c[_0xb984('0x37')][_0xb984('0x53')]){_0x381039[_0xb984('0x4e')][_0xb984('0x50')]({'model':db[_0xb984('0x54')],'as':'Messages','attributes':['id',_0xb984('0x55'),_0xb984('0x56'),_0xb984('0x53')],'where':{'direction':'in','read':_0xad9e0c['query'][_0xb984('0x53')]||![]},'required':!![]});_0x381039[_0xb984('0x52')]=!![];}return db['ChatInteraction'][_0xb984('0x2b')](_0x381039)['then'](function(_0x364416){_0x4f2f3d[_0xb984('0x2b')]=_0x364416;if(_0xad9e0c['query'][_0xb984('0x57')]){_0x5e8d57[_0xb984('0x4e')]=[{'model':db[_0xb984('0x58')],'as':_0xb984('0x59'),'required':![],'attributes':['id',_0xb984('0x34'),_0xb984('0x5a')]},{'model':db['CmContact'],'as':_0xb984('0x5b'),'required':![]},{'model':db['User'],'as':_0xb984('0x5c'),'attributes':[_0xb984('0x34'),_0xb984('0x5a'),'internal'],'required':![]},{'model':db['ChatWebsite'],'as':_0xb984('0x5d'),'attributes':[_0xb984('0x34'),'key'],'required':![]},{'model':db['ChatMessage'],'as':_0xb984('0x5e'),'attributes':['id',_0xb984('0x55'),_0xb984('0x56'),_0xb984('0x53')],'where':{'direction':'in','read':_0xad9e0c[_0xb984('0x37')][_0xb984('0x53')]||![]},'required':_0xad9e0c['query']['read']||![]},{'model':db[_0xb984('0x5f')],'as':_0xb984('0x51'),'attributes':['id','name',_0xb984('0x60')],'required':_0xad9e0c[_0xb984('0x37')][_0xb984('0x4f')]?!![]:![]},{'model':db[_0xb984('0x5f')],'as':'ThroughTags','attributes':['id','name',_0xb984('0x60')],'through':_0xad9e0c[_0xb984('0x37')][_0xb984('0x4f')]?{'attributes':[],'where':{'TagId':_0xad9e0c[_0xb984('0x37')][_0xb984('0x4f')]||undefined}}:{},'required':_0xad9e0c[_0xb984('0x37')]['tag']?!![]:![]}];}return db[_0xb984('0x61')][_0xb984('0x62')](_0x5e8d57);})[_0xb984('0x1b')](function(_0x345e1d){_0x4f2f3d[_0xb984('0x63')]=_0x345e1d;return _0x4f2f3d;})[_0xb984('0x1b')](respondWithFilteredResult(_0x3acc6a,_0x5e8d57))['catch'](handleError(_0x3acc6a,null));};exports['show']=function(_0x518120,_0x1b596d){var _0x8650a6={'raw':![],'where':{'id':_0x518120[_0xb984('0x64')]['id']}},_0x36ca94={};_0x36ca94[_0xb984('0x3c')]=_['keys'](db[_0xb984('0x61')][_0xb984('0x36')]);_0x36ca94[_0xb984('0x37')]=_['keys'](_0x518120[_0xb984('0x37')]);_0x36ca94[_0xb984('0x3a')]=_['intersection'](_0x36ca94['model'],_0x36ca94[_0xb984('0x37')]);_0x8650a6['attributes']=_['intersection'](_0x36ca94[_0xb984('0x3c')],qs['fields'](_0x518120[_0xb984('0x37')][_0xb984('0x3e')]));_0x8650a6[_0xb984('0x3d')]=_0x8650a6[_0xb984('0x3d')][_0xb984('0x3f')]?_0x8650a6[_0xb984('0x3d')]:_0x36ca94[_0xb984('0x3c')];if(_0x518120[_0xb984('0x37')][_0xb984('0x57')]){_0x8650a6[_0xb984('0x4e')]=[{'all':!![]}];}_0x8650a6=_[_0xb984('0x47')]({},_0x8650a6,_0x518120[_0xb984('0x4d')]);return db['ChatInteraction'][_0xb984('0x65')](_0x8650a6)[_0xb984('0x1b')](handleEntityNotFound(_0x1b596d,null))[_0xb984('0x1b')](respondWithResult(_0x1b596d,null))['catch'](handleError(_0x1b596d,null));};exports['create']=function(_0x2adf1d,_0x285e1e){return db[_0xb984('0x61')]['create'](_0x2adf1d[_0xb984('0x66')],{})[_0xb984('0x1b')](respondWithResult(_0x285e1e,0xc9))[_0xb984('0x26')](handleError(_0x285e1e,null));};exports[_0xb984('0x31')]=function(_0x434c5c,_0x1793e2){if(_0x434c5c[_0xb984('0x66')]['id']){delete _0x434c5c[_0xb984('0x66')]['id'];}return db[_0xb984('0x61')][_0xb984('0x65')]({'where':{'id':_0x434c5c[_0xb984('0x64')]['id']}})[_0xb984('0x1b')](handleEntityNotFound(_0x1793e2,null))[_0xb984('0x1b')](saveUpdates(_0x434c5c[_0xb984('0x66')],null))['then'](respondWithResult(_0x1793e2,null))[_0xb984('0x26')](handleError(_0x1793e2,null));};exports['destroy']=function(_0x2acfc1,_0x486464){return db[_0xb984('0x61')][_0xb984('0x65')]({'where':{'id':_0x2acfc1[_0xb984('0x64')]['id']}})[_0xb984('0x1b')](handleEntityNotFound(_0x486464,null))[_0xb984('0x1b')](removeEntity(_0x486464,null))[_0xb984('0x26')](handleError(_0x486464,null));};exports[_0xb984('0x67')]=function(_0x2319aa,_0x3bc1d3){return db[_0xb984('0x61')][_0xb984('0x67')]()[_0xb984('0x1b')](respondWithResult(_0x3bc1d3,null))[_0xb984('0x26')](handleError(_0x3bc1d3,null));};exports['customUpdate']=function(_0x4886bf,_0x917c53){if(_0x4886bf[_0xb984('0x66')]['id']){delete _0x4886bf[_0xb984('0x66')]['id'];}return db['ChatInteraction'][_0xb984('0x65')]({'where':{'id':_0x4886bf[_0xb984('0x64')]['id']}})['then'](handleEntityNotFound(_0x917c53,null))['then'](saveUpdates(_0x4886bf['body'],null))[_0xb984('0x1b')](respondWithResult(_0x917c53,null))['catch'](handleError(_0x917c53,null));};exports['abandon']=function(_0x56500d,_0x2c4b19,_0x1ecc45){if(_0x56500d[_0xb984('0x66')]['id']){delete _0x56500d[_0xb984('0x66')]['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x56500d[_0xb984('0x64')]['id']}})[_0xb984('0x1b')](function(_0x3c6050){if(!_0x3c6050){logger[_0xb984('0x21')](_0xb984('0x68'),'abandon',0x194,_0xb984('0x69'));_0x2c4b19[_0xb984('0x27')](0x194);}else{if(_0x3c6050[_0xb984('0x6a')]){throw new db[(_0xb984('0x6b'))][(_0xb984('0x6c'))](_0xb984('0x6d'));}}return _0x3c6050;})['then'](function(_0x1bb691){if(_0x1bb691){return _0x1bb691['update']({'closed':_0x56500d[_0xb984('0x66')][_0xb984('0x6e')],'closedAt':_0x56500d[_0xb984('0x66')][_0xb984('0x6f')],'disposition':_0x56500d[_0xb984('0x66')]['disposition']})[_0xb984('0x1b')](function(_0x203915){return _0x203915;});}})[_0xb984('0x1b')](function(_0x4c4e45){return respondWithRpcPromise(_0xb984('0x70'),_0xb984('0x71'),_0x56500d[_0xb984('0x66')],client9004);})[_0xb984('0x1b')](respondWithResult(_0x2c4b19,null))[_0xb984('0x26')](handleError(_0x2c4b19,null));};exports['attachmentUpload']=function(_0x504d1a,_0x16ad6b,_0x31d101){_0x504d1a[_0xb984('0x66')][_0xb984('0x34')]=_0x504d1a['file'][_0xb984('0x72')];_0x504d1a[_0xb984('0x66')][_0xb984('0x73')]=_0x504d1a[_0xb984('0x74')]['filename'];_0x504d1a[_0xb984('0x66')][_0xb984('0x4a')]=_0x504d1a[_0xb984('0x74')][_0xb984('0x75')];return db['Attachment'][_0xb984('0x76')](_0x504d1a[_0xb984('0x66')])[_0xb984('0x1b')](respondWithResult(_0x16ad6b,0xc9))[_0xb984('0x26')](handleError(_0x16ad6b,null));};exports[_0xb984('0x77')]=function(_0x37c2b0,_0x540ce,_0x355604){return db[_0xb984('0x61')][_0xb984('0x78')]({'where':{'id':_0x37c2b0[_0xb984('0x64')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x540ce,null))[_0xb984('0x1b')](function(_0xa3150f){if(_0xa3150f){if(_0xa3150f[_0xb984('0x6e')]){return _0x540ce[_0xb984('0x28')](0x193)[_0xb984('0x2a')]({'status':0x193,'message':_0xb984('0x79')});}return db['Attachment'][_0xb984('0x78')]({'where':{'id':_0x37c2b0[_0xb984('0x37')][_0xb984('0x7a')]},'raw':!![]})[_0xb984('0x1b')](handleEntityNotFound(_0x540ce,null));}})['then'](function(_0x41a85f){if(_0x41a85f){return _0x540ce[_0xb984('0x7b')](path['join'](config[_0xb984('0x7c')],'server/files/attachments/',_0x41a85f['basename']));}})[_0xb984('0x26')](handleError(_0x540ce,null));};exports[_0xb984('0x7d')]=function(_0x1015fd,_0xc27f82){var _0x168d6c=null;var _0x3ce085=null;var _0x110745=null;var _0x1c588a=null;if(_0x1015fd[_0xb984('0x66')]['id']){delete _0x1015fd['body']['id'];}if(_0x1015fd['body'][_0xb984('0x7e')]){_0x1c588a=path[_0xb984('0x7f')](config[_0xb984('0x7c')],_0xb984('0x80'),util['format'](_0xb984('0x81'),Date[_0xb984('0x82')]()));_0x1015fd[_0xb984('0x66')][_0xb984('0x83')]=_0x1c588a;}return db[_0xb984('0x61')][_0xb984('0x65')]({'where':{'id':_0x1015fd['params']['id']},'include':[{'model':db[_0xb984('0x54')],'as':'Messages','include':[{'model':db[_0xb984('0x58')],'as':'User'}]}]})[_0xb984('0x1b')](handleEntityNotFound(_0xc27f82,null))['then'](saveUpdates(_0x1015fd['body'],null))[_0xb984('0x1b')](function(_0x41fb90){if(_0x41fb90){_0x168d6c=_0x41fb90;return db['ChatWebsite'][_0xb984('0x65')]({'where':{'id':_0x168d6c[_0xb984('0x84')]}});}})[_0xb984('0x1b')](function(_0x3dda0f){if(_0x3dda0f){_0x110745=_0x3dda0f;return db[_0xb984('0x85')]['find']({'where':{'id':_0x168d6c['ContactId']}});}})[_0xb984('0x1b')](function(_0x1b4a3f){if(_0x1b4a3f){_0x3ce085=_0x1b4a3f;if(_0x1c588a){var _0x583ee7=null;for(var _0x42a63d=0x1;_0x42a63d<_0x168d6c[_0xb984('0x5e')][_0xb984('0x3f')];++_0x42a63d){_0x583ee7=_0x168d6c['Messages'][_0x42a63d];var _0x52f937=_0x583ee7['UserId']?util[_0xb984('0x86')](_0xb984('0x87'),_0x110745['agentAlias'],_0x583ee7[_0xb984('0x6a')]):_0xb984('0x88');var _0x328025=_0x1015fd[_0xb984('0x66')]['customer']||util['format']('%s%d','Visitor',_0x583ee7['ContactId']);switch(_0x110745[_0xb984('0x89')]){case _0xb984('0x8a'):_0x52f937=_0x583ee7[_0xb984('0x6a')]?util[_0xb984('0x86')](_0xb984('0x87'),_0x110745[_0xb984('0x8b')],_0x583ee7['UserId']):_0xb984('0x88');break;case'agent_alias':_0x52f937=_0x583ee7['UserId']?_0x583ee7[_0xb984('0x58')]['alias']||_0x583ee7[_0xb984('0x58')][_0xb984('0x5a')]:'System';break;case _0xb984('0x8c'):_0x52f937=_0x583ee7[_0xb984('0x6a')]?_0x583ee7[_0xb984('0x58')][_0xb984('0x5a')]:_0xb984('0x88');break;default:_0x52f937=_0x583ee7[_0xb984('0x6a')]?util[_0xb984('0x86')](_0xb984('0x87'),_0x110745[_0xb984('0x8b')],_0x583ee7[_0xb984('0x6a')]):_0xb984('0x88');}var _0xfe6cc2=util[_0xb984('0x86')]('[%s]\x20%s:\x20%s\x0a',moment(_0x583ee7[_0xb984('0x56')])['format'](_0xb984('0x8d')),_0x583ee7['direction']==='in'?_0x328025:_0x52f937,_0x583ee7[_0xb984('0x66')]);if(!_0x583ee7[_0xb984('0x8e')]){fs[_0xb984('0x8f')](_0x1c588a,_0xfe6cc2);}}return db[_0xb984('0x90')][_0xb984('0x78')]({'where':{'service':!![]},'include':[{'model':db[_0xb984('0x91')],'as':_0xb984('0x92'),'raw':!![]}]});}}})['then'](function(_0x18c666){if(_0x18c666&&_0x18c666[_0xb984('0x92')]&&_0x1015fd[_0xb984('0x66')]){var _0x293fc4={'tls':{'rejectUnauthorized':![]}};if(_0x18c666[_0xb984('0x92')][_0xb984('0x93')]){_0x293fc4[_0xb984('0x93')]=_0x18c666[_0xb984('0x92')][_0xb984('0x93')];}else{_0x293fc4['host']=_0x18c666[_0xb984('0x92')][_0xb984('0x94')];_0x293fc4[_0xb984('0x95')]=_0x18c666[_0xb984('0x92')][_0xb984('0x95')];_0x293fc4[_0xb984('0x96')]=_0x18c666[_0xb984('0x92')][_0xb984('0x96')];}if(_0x18c666[_0xb984('0x92')][_0xb984('0x97')]){_0x293fc4['auth']={'user':_0x18c666[_0xb984('0x92')]['user'],'pass':_0x18c666[_0xb984('0x92')][_0xb984('0x98')]};}return respondWithRpcPromise(_0xb984('0x99'),_0xb984('0x9a'),{'account':_0x293fc4,'message':{'from':util[_0xb984('0x86')]('\x22%s\x22\x20<%s>',_0x18c666[_0xb984('0x34')],_0x18c666[_0xb984('0x9b')]||_0x18c666['Smtp'][_0xb984('0x9c')]),'to':_0x1015fd[_0xb984('0x66')][_0xb984('0x7e')],'subject':'Mail\x20Transcript','text':util[_0xb984('0x86')](_0xb984('0x9d'),_0x1015fd[_0xb984('0x66')][_0xb984('0x7e')]),'attachments':[{'path':_0x1c588a}]}})[_0xb984('0x1b')](function(){return _0x168d6c;})[_0xb984('0x26')](function(_0xc632e7){console[_0xb984('0x21')](_0xc632e7);});}else{return _0x168d6c;}})[_0xb984('0x1b')](respondWithStatusCode(_0xc27f82,0xc8))[_0xb984('0x26')](handleError(_0xc27f82,null));};exports['addMessage']=function(_0x5a8066,_0x595ce0,_0x23a346){return db[_0xb984('0x54')][_0xb984('0x65')]({'where':{'id':_0x5a8066[_0xb984('0x64')]['id']}})['then'](handleEntityNotFound(_0x595ce0,null))['then'](function(_0x4e268a){if(_0x4e268a){return _0x4e268a[_0xb984('0x9e')](_0x5a8066[_0xb984('0x66')]['ids'],_[_0xb984('0x9f')](_0x5a8066['body'],[_0xb984('0xa0'),'id'])||{});}})['then'](respondWithResult(_0x595ce0,null))[_0xb984('0x26')](handleError(_0x595ce0,null));};exports['getMessages']=function(_0xc526a9,_0x118b01,_0x530e08){var _0x2e8fb3={'raw':![],'where':{}};var _0x4e3041={};var _0x3b0e65={'count':0x0,'rows':[]};return db[_0xb984('0x61')][_0xb984('0x78')]({'where':{'id':_0xc526a9[_0xb984('0x64')]['id']}})['then'](handleEntityNotFound(_0x118b01,null))[_0xb984('0x1b')](function(_0x517fac){if(_0x517fac){_0x4e3041[_0xb984('0x3c')]=_[_0xb984('0xa1')](db[_0xb984('0x54')][_0xb984('0x36')]);_0x4e3041[_0xb984('0x37')]=_[_0xb984('0xa1')](_0xc526a9['query']);_0x4e3041[_0xb984('0x3a')]=_[_0xb984('0x3b')](_0x4e3041[_0xb984('0x3c')],_0x4e3041['query']);_0x2e8fb3[_0xb984('0x3d')]=_[_0xb984('0x3b')](_0x4e3041[_0xb984('0x3c')],qs['fields'](_0xc526a9[_0xb984('0x37')][_0xb984('0x3e')]));_0x2e8fb3[_0xb984('0x3d')]=_0x2e8fb3[_0xb984('0x3d')][_0xb984('0x3f')]?_0x2e8fb3[_0xb984('0x3d')]:_0x4e3041[_0xb984('0x3c')];if(!_0xc526a9[_0xb984('0x37')][_0xb984('0x40')]('nolimit')){_0x2e8fb3[_0xb984('0x2d')]=qs[_0xb984('0x2d')](_0xc526a9[_0xb984('0x37')][_0xb984('0x2d')]);_0x2e8fb3[_0xb984('0x2c')]=qs[_0xb984('0x2c')](_0xc526a9['query']['offset']);}_0x2e8fb3['order']=qs['sort'](_0xc526a9['query'][_0xb984('0x42')]);_0x2e8fb3[_0xb984('0x43')]=qs[_0xb984('0x3a')](_[_0xb984('0x44')](_0xc526a9[_0xb984('0x37')],_0x4e3041[_0xb984('0x3a')]));_0x2e8fb3[_0xb984('0x43')][_0xb984('0xa2')]=_0x517fac['id'];if(_0xc526a9[_0xb984('0x37')][_0xb984('0x48')]){_0x2e8fb3[_0xb984('0x43')]=_[_0xb984('0x47')](_0x2e8fb3[_0xb984('0x43')],{'$or':_[_0xb984('0x49')](_0x2e8fb3[_0xb984('0x3d')],function(_0x47229c){var _0x1bdebe={};_0x1bdebe[_0x47229c]={'$like':'%'+_0xc526a9[_0xb984('0x37')][_0xb984('0x48')]+'%'};return _0x1bdebe;})});}if(_0xc526a9[_0xb984('0x37')]['$gte']){var _0x21fa03=_0xc526a9[_0xb984('0x37')]['$gte'][_0xb984('0xa3')](',');var _0x36ffc1={};_0x36ffc1[_0x21fa03[0x0]]={'$gte':moment(_0x21fa03[0x1])[_0xb984('0x86')](_0xb984('0xa4'))};_0x2e8fb3[_0xb984('0x43')]=_[_0xb984('0x47')](_0x2e8fb3[_0xb984('0x43')],_0x36ffc1);}_0x2e8fb3=_[_0xb984('0x47')]({},_0x2e8fb3,_0xc526a9[_0xb984('0x4d')]);return db[_0xb984('0x54')][_0xb984('0x2b')]({'where':_0x2e8fb3[_0xb984('0x43')]})[_0xb984('0x1b')](function(_0x1a4dc6){_0x3b0e65[_0xb984('0x2b')]=_0x1a4dc6;if(_0xc526a9[_0xb984('0x37')][_0xb984('0x57')]){_0x2e8fb3[_0xb984('0x4e')]=[{'all':!![]}];}return db[_0xb984('0x54')][_0xb984('0x62')](_0x2e8fb3);})[_0xb984('0x1b')](function(_0x508c1b){_0x3b0e65[_0xb984('0x63')]=_0x508c1b;return _0x3b0e65;});}})['then'](respondWithFilteredResult(_0x118b01,_0x2e8fb3))['catch'](handleError(_0x118b01,null));};exports[_0xb984('0xa5')]=function(_0xf33075,_0x2ecd8a,_0x4b2996){var _0xe4006f={'where':{}},_0x1bca46={},_0x3860a1={'count':0x0,'rows':[]};return db[_0xb984('0x61')]['findOne']({'where':{'id':_0xf33075[_0xb984('0x64')]['id']}})[_0xb984('0x1b')](handleEntityNotFound(_0x2ecd8a,null))[_0xb984('0x1b')](function(_0x2a4478){if(_0x2a4478){_0x1bca46['model']=_[_0xb984('0xa1')](db['ChatMessage']['rawAttributes']);_0x1bca46[_0xb984('0x37')]=_[_0xb984('0xa1')](_0xf33075['query']);_0x1bca46[_0xb984('0x3a')]=_[_0xb984('0x3b')](_0x1bca46[_0xb984('0x3c')],_0x1bca46[_0xb984('0x37')]);_0xe4006f[_0xb984('0x3d')]=_['intersection'](_0x1bca46['model'],qs['fields'](_0xf33075['query'][_0xb984('0x3e')]));_0xe4006f[_0xb984('0x3d')]=_0xe4006f[_0xb984('0x3d')][_0xb984('0x3f')]?_0xe4006f[_0xb984('0x3d')]:_0x1bca46[_0xb984('0x3c')];if(!_0xf33075[_0xb984('0x37')][_0xb984('0x40')]('nolimit')){_0xe4006f[_0xb984('0x2d')]=qs[_0xb984('0x2d')](_0xf33075[_0xb984('0x37')]['limit']);_0xe4006f[_0xb984('0x2c')]=qs[_0xb984('0x2c')](_0xf33075[_0xb984('0x37')][_0xb984('0x2c')]);}_0xe4006f['order']=qs[_0xb984('0x42')](_0xf33075[_0xb984('0x37')]['sort']);_0xe4006f[_0xb984('0x43')]=qs['filters'](_[_0xb984('0x44')](_0xf33075[_0xb984('0x37')],_0x1bca46[_0xb984('0x3a')]));_0xe4006f[_0xb984('0x43')][_0xb984('0xa2')]=_0x2a4478['id'];if(_0xf33075[_0xb984('0x37')][_0xb984('0x48')]){_0xe4006f[_0xb984('0x43')]=_[_0xb984('0x47')](_0xe4006f['where'],{'$or':_[_0xb984('0x49')](_0xe4006f[_0xb984('0x3d')],function(_0x4342b0){var _0x111ebb={};_0x111ebb[_0x4342b0]={'$like':'%'+_0xf33075['query'][_0xb984('0x48')]+'%'};return _0x111ebb;})});}_0xe4006f['where'][_0xb984('0x8e')]=![];if(_0xf33075[_0xb984('0x37')]['id']){_0xe4006f['where']['id']={'$gt':_0xf33075[_0xb984('0x37')]['id']};}_0xe4006f=_[_0xb984('0x47')]({},_0xe4006f,_0xf33075[_0xb984('0x4d')]);return db[_0xb984('0x54')][_0xb984('0x2b')]({'where':_0xe4006f[_0xb984('0x43')]})[_0xb984('0x1b')](function(_0x243275){_0x3860a1[_0xb984('0x2b')]=_0x243275;_0xe4006f[_0xb984('0x4e')]=[];if(_0xf33075[_0xb984('0x37')]['includeAgent']){_0xe4006f[_0xb984('0x4e')][_0xb984('0x50')]({'model':db[_0xb984('0x58')],'as':_0xb984('0x58'),'attributes':['id',_0xb984('0x5a'),_0xb984('0xa6')]});}if(_0xf33075[_0xb984('0x37')]['includeAll']){_0xe4006f['include']=[{'all':!![]}];}return db[_0xb984('0x54')][_0xb984('0x62')](_0xe4006f);})[_0xb984('0x1b')](function(_0x7903b8){_0x3860a1[_0xb984('0x63')]=_0x7903b8;return _0x3860a1;});}})[_0xb984('0x1b')](respondWithFilteredResult(_0x2ecd8a,_0xe4006f))['catch'](handleError(_0x2ecd8a,null));};exports[_0xb984('0xa7')]=function(_0x2b934d,_0x198376,_0xe6d4e3){return db[_0xb984('0x61')][_0xb984('0x65')]({'where':{'id':_0x2b934d['params']['id']}})['then'](handleEntityNotFound(_0x198376,null))[_0xb984('0x1b')](function(_0x3bfc84){if(_0x3bfc84){return _0x3bfc84[_0xb984('0xa8')](_0x2b934d[_0xb984('0x66')][_0xb984('0xa0')],_[_0xb984('0x9f')](_0x2b934d[_0xb984('0x66')],[_0xb984('0xa0'),'id'])||{})[_0xb984('0xa9')](function(){return db[_0xb984('0x5f')]['findAll']({'attributes':['id','name','color'],'where':{'id':_0x2b934d[_0xb984('0x66')][_0xb984('0xa0')]}});})[_0xb984('0x1b')](function(_0x4ef53a){socket['emit'](_0xb984('0xaa'),{'id':Number(_0x2b934d['params']['id']),'tags':_0x4ef53a||[]});return{'id':Number(_0x2b934d['params']['id']),'tags':_0x4ef53a||[]};});}})[_0xb984('0x1b')](respondWithResult(_0x198376,null))[_0xb984('0x26')](handleError(_0x198376,null));};exports[_0xb984('0xab')]=function(_0x4a8494,_0x4a92ad,_0x16d36b){var _0x2c6f94;return db[_0xb984('0x61')]['find']({'where':{'id':_0x4a8494[_0xb984('0x64')]['id']}})[_0xb984('0x1b')](handleEntityNotFound(_0x4a92ad,null))[_0xb984('0x1b')](function(_0x27dc07){if(_0x27dc07){return _0x27dc07[_0xb984('0xab')](_0x4a8494[_0xb984('0x37')]['ids']);}})[_0xb984('0x1b')](respondWithStatusCode(_0x4a92ad,null))[_0xb984('0x26')](handleError(_0x4a92ad,null));};exports[_0xb984('0x7b')]=function(_0x5f1130,_0x10d9eb){var _0x430973=moment()[_0xb984('0xac')]()['toString']();var _0x2d7490=path[_0xb984('0x7f')](config[_0xb984('0x7c')],_0xb984('0xad'),'files','tmp');var _0x1ea1b1=path['join'](config[_0xb984('0x7c')],_0xb984('0xad'),'files',_0xb984('0xae'));var _0x51471c=path[_0xb984('0x7f')](_0x2d7490,_0x430973);var _0x52793a=util['format']('interaction-%s.zip',_0x430973);var _0x371d8a=path[_0xb984('0x7f')](_0x2d7490,_0x52793a);var _0x243fc2=![];return db['ChatInteraction'][_0xb984('0x65')]({'where':{'id':_0x5f1130['params']['id']},'include':[{'model':db[_0xb984('0x54')],'as':_0xb984('0x5e'),'attributes':['id',_0xb984('0x66')],'include':[{'model':db['User'],'as':_0xb984('0x58'),'attributes':['id',_0xb984('0x5a')],'raw':!![]},{'model':db[_0xb984('0x85')],'as':_0xb984('0x5b'),'attributes':['id',_0xb984('0xaf')],'raw':!![]},{'model':db[_0xb984('0xb0')],'as':_0xb984('0xb0'),'raw':!![]}]}]})[_0xb984('0x1b')](handleEntityNotFound(_0x10d9eb,null))['then'](function(_0x190954){if(_0x190954){_0x243fc2=!![];var _0x508b6a='';var _0x1af30d={'format':_0xb984('0xb1'),'border':_0xb984('0xb2')};fs[_0xb984('0xb3')](_0x51471c);_0x508b6a+=util['format'](_0xb984('0xb4'),_0x190954['id']);_0x508b6a+=util['format'](_0xb984('0xb5'),moment()[_0xb984('0x86')]('MMMM\x20Do\x20YYYY,\x20HH:mm:ss')[_0xb984('0xb6')]());_0x508b6a+='<hr>';for(var _0xecd5e=0x1;_0xecd5e<_0x190954[_0xb984('0x5e')][_0xb984('0x3f')];_0xecd5e++){var _0xb47a60=_0x190954[_0xb984('0x5e')][_0xecd5e];_0x508b6a+=_0xb984('0xb7');_0x508b6a+=util[_0xb984('0x86')](_0xb984('0xb8'),_0xb47a60[_0xb984('0x58')]?_0xb47a60[_0xb984('0x58')][_0xb984('0x5a')]:_0xb47a60[_0xb984('0x5b')][_0xb984('0xaf')],_0xb47a60['body']);_0x508b6a+=_0xb984('0xb9');if(_0xb47a60['Attachment']){var _0x1657b9=_0xb47a60[_0xb984('0xb0')];var _0x4fbdcf=path['join'](_0x1ea1b1,_0x1657b9[_0xb984('0x73')]);if(fs[_0xb984('0xba')](_0x4fbdcf)){fs[_0xb984('0xbb')](_0x4fbdcf)[_0xb984('0xbc')](fs['createWriteStream'](path[_0xb984('0x7f')](_0x51471c,_0x1657b9[_0xb984('0x73')])));}}}return new BPromise(function(_0x309f1b,_0x537408){pdf[_0xb984('0x76')](_0x508b6a,_0x1af30d)[_0xb984('0xbd')](path[_0xb984('0x7f')](_0x51471c,_0xb984('0xbe')+_0x430973+_0xb984('0xbf')),function(_0x54ea8e,_0x2503e3){if(_0x54ea8e)return _0x537408(_0x54ea8e);_0x309f1b(_0x2503e3);});});}})[_0xb984('0x1b')](function(){if(_0x243fc2){return new BPromise(function(_0x466bcc,_0x112c21){zipdir(_0x51471c,{'saveTo':_0x371d8a},function(_0x199caf,_0xa3db63){if(_0x199caf)return _0x112c21(_0x199caf);return _0x466bcc(_0xa3db63);});});}})[_0xb984('0x1b')](function(){if(_0x243fc2){return new BPromise(function(_0x3489fe,_0xe52d78){rimraf(_0x51471c,function(_0x4a0c70){if(_0x4a0c70)_0xe52d78(_0x4a0c70);return _0x3489fe();});});}})[_0xb984('0x1b')](function(){if(_0x243fc2){return _0x10d9eb[_0xb984('0x7b')](_0x371d8a,_0x52793a,function(_0x569f7e){if(_0x569f7e){console[_0xb984('0xc0')]('err',_0x569f7e);}else{fs['unlinkSync'](_0x371d8a);}});}else{return _0x10d9eb[_0xb984('0x27')](0xc8);}})[_0xb984('0x26')](handleError(_0x10d9eb,null));};
\ No newline at end of file
index c2af9ec..73e1c38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc98e=['events','ChatInteraction','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x28ba9b,_0x3c0681){var _0x3c0068=function(_0x35ecb9){while(--_0x35ecb9){_0x28ba9b['push'](_0x28ba9b['shift']());}};_0x3c0068(++_0x3c0681);}(_0xc98e,0xa2));var _0xec98=function(_0x2be946,_0x4eac4b){_0x2be946=_0x2be946-0x0;var _0x2a8dcf=_0xc98e[_0x2be946];return _0x2a8dcf;};'use strict';var EventEmitter=require(_0xec98('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0xec98('0x1')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xec98('0x2')](0x0);var events={'afterCreate':_0xec98('0x3'),'afterUpdate':_0xec98('0x4'),'afterDestroy':'remove'};function emitEvent(_0x332f35){return function(_0xb09602,_0x2aab91,_0x648503){ChatInteractionEvents[_0xec98('0x5')](_0x332f35+':'+_0xb09602['id'],_0xb09602);ChatInteractionEvents[_0xec98('0x5')](_0x332f35,_0xb09602);_0x648503(null);};}for(var e in events){if(events[_0xec98('0x6')](e)){var event=events[e];ChatInteraction[_0xec98('0x7')](e,emitEvent(event));}}module[_0xec98('0x8')]=ChatInteractionEvents;
\ No newline at end of file
+var _0xdd64=['remove','emit','hasOwnProperty','hook','events','ChatInteraction','setMaxListeners','save','update'];(function(_0x1f792c,_0x22efd4){var _0x19aa04=function(_0x4913b9){while(--_0x4913b9){_0x1f792c['push'](_0x1f792c['shift']());}};_0x19aa04(++_0x22efd4);}(_0xdd64,0xa6));var _0x4dd6=function(_0x4132fc,_0x1cb9ca){_0x4132fc=_0x4132fc-0x0;var _0x5f3845=_0xdd64[_0x4132fc];return _0x5f3845;};'use strict';var EventEmitter=require(_0x4dd6('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x4dd6('0x1')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x4dd6('0x2')](0x0);var events={'afterCreate':_0x4dd6('0x3'),'afterUpdate':_0x4dd6('0x4'),'afterDestroy':_0x4dd6('0x5')};function emitEvent(_0x2fe80b){return function(_0x53ca15,_0x4f6472,_0x27c41a){ChatInteractionEvents[_0x4dd6('0x6')](_0x2fe80b+':'+_0x53ca15['id'],_0x53ca15);ChatInteractionEvents[_0x4dd6('0x6')](_0x2fe80b,_0x53ca15);_0x27c41a(null);};}for(var e in events){if(events[_0x4dd6('0x7')](e)){var event=events[e];ChatInteraction[_0x4dd6('0x8')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
index 6022d10..dc97e4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1692=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','./chatInteraction.attributes','exports','ChatInteraction','chat_interactions'];(function(_0x11c3a7,_0x4fc46b){var _0x249aa0=function(_0x1023f2){while(--_0x1023f2){_0x11c3a7['push'](_0x11c3a7['shift']());}};_0x249aa0(++_0x4fc46b);}(_0x1692,0x86));var _0x2169=function(_0x1a01e4,_0x386a7b){_0x1a01e4=_0x1a01e4-0x0;var _0xda7b21=_0x1692[_0x1a01e4];return _0xda7b21;};'use strict';var _=require(_0x2169('0x0'));var util=require(_0x2169('0x1'));var logger=require(_0x2169('0x2'))(_0x2169('0x3'));var moment=require(_0x2169('0x4'));var BPromise=require('bluebird');var rp=require(_0x2169('0x5'));var attributes=require(_0x2169('0x6'));module[_0x2169('0x7')]=function(_0x251b18,_0x474c0d){return _0x251b18['define'](_0x2169('0x8'),attributes,{'tableName':_0x2169('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2169('0xa'),'collate':_0x2169('0xb')});};
\ No newline at end of file
+var _0xdf1d=['define','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','./chatInteraction.attributes','exports'];(function(_0x32b668,_0x3755a9){var _0x3916d2=function(_0x29b02c){while(--_0x29b02c){_0x32b668['push'](_0x32b668['shift']());}};_0x3916d2(++_0x3755a9);}(_0xdf1d,0x12f));var _0xddf1=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0xdf1d[_0x13e741];return _0x3f8bb3;};'use strict';var _=require(_0xddf1('0x0'));var util=require(_0xddf1('0x1'));var logger=require(_0xddf1('0x2'))('api');var moment=require('moment');var BPromise=require(_0xddf1('0x3'));var rp=require(_0xddf1('0x4'));var attributes=require(_0xddf1('0x5'));module[_0xddf1('0x6')]=function(_0x25602f,_0x348844){return _0x25602f[_0xddf1('0x7')]('ChatInteraction',attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xddf1('0x8'),'collate':_0xddf1('0x9')});};
\ No newline at end of file
index 6b0a1da..061bbf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0db=['limit','then','UpdateChatInteraction','AddTagsToChatInteraction','ChatInteraction','find','where','addTags','body','ids','spread','AddTags','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','defaults','socket.io-emitter','redis','./chatInteraction.socket','register','request','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','ChatInteraction,\x20%s,\x20%s','result','catch','update','options','raw','attributes'];(function(_0x2ec36b,_0x3f0acd){var _0x47c4f4=function(_0x646afc){while(--_0x646afc){_0x2ec36b['push'](_0x2ec36b['shift']());}};_0x47c4f4(++_0x3f0acd);}(_0xa0db,0x16d));var _0xba0d=function(_0x14c848,_0x502953){_0x14c848=_0x14c848-0x0;var _0x3ead57=_0xa0db[_0x14c848];return _0x3ead57;};'use strict';var _=require(_0xba0d('0x0'));var util=require(_0xba0d('0x1'));var moment=require(_0xba0d('0x2'));var BPromise=require(_0xba0d('0x3'));var rs=require(_0xba0d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xba0d('0x5'))['db'];var utils=require(_0xba0d('0x6'));var logger=require(_0xba0d('0x7'))(_0xba0d('0x8'));var config=require(_0xba0d('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xba0d('0xa')]({'port':0x232a});config['redis']=_[_0xba0d('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xba0d('0xc'))(new Redis(config[_0xba0d('0xd')]));require(_0xba0d('0xe'))[_0xba0d('0xf')](socket);function respondWithRpcPromise(_0x340686,_0x5bf37f,_0x5e24d5){return new BPromise(function(_0x52b340,_0x3950a4){return client[_0xba0d('0x10')](_0x340686,_0x5e24d5)['then'](function(_0x4409a3){logger[_0xba0d('0x11')]('ChatInteraction,\x20%s,\x20%s',_0x5bf37f,_0xba0d('0x12'));logger[_0xba0d('0x13')](_0xba0d('0x14'),_0x5bf37f,_0xba0d('0x12'),JSON['stringify'](_0x4409a3));if(_0x4409a3[_0xba0d('0x15')]){if(_0x4409a3[_0xba0d('0x15')][_0xba0d('0x16')]===0x1f4){logger[_0xba0d('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x5bf37f,_0x4409a3[_0xba0d('0x15')][_0xba0d('0x17')]);return _0x3950a4(_0x4409a3['error'][_0xba0d('0x17')]);}logger[_0xba0d('0x15')](_0xba0d('0x18'),_0x5bf37f,_0x4409a3[_0xba0d('0x15')][_0xba0d('0x17')]);return _0x52b340(_0x4409a3[_0xba0d('0x15')][_0xba0d('0x17')]);}else{logger['info'](_0xba0d('0x18'),_0x5bf37f,_0xba0d('0x12'));_0x52b340(_0x4409a3[_0xba0d('0x19')][_0xba0d('0x17')]);}})[_0xba0d('0x1a')](function(_0x290ca2){logger[_0xba0d('0x15')](_0xba0d('0x18'),_0x5bf37f,_0x290ca2);_0x3950a4(_0x290ca2);});});}exports['UpdateChatInteraction']=function(_0x3dbfa5){var _0x4df630=this;return new Promise(function(_0x638df1,_0x45a7f4){return db['ChatInteraction'][_0xba0d('0x1b')](_0x3dbfa5['body'],{'raw':_0x3dbfa5[_0xba0d('0x1c')]?_0x3dbfa5[_0xba0d('0x1c')][_0xba0d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3dbfa5[_0xba0d('0x1c')]?_0x3dbfa5[_0xba0d('0x1c')]['where']||null:null,'attributes':_0x3dbfa5[_0xba0d('0x1c')]?_0x3dbfa5[_0xba0d('0x1c')][_0xba0d('0x1e')]||null:null,'limit':_0x3dbfa5['options']?_0x3dbfa5[_0xba0d('0x1c')][_0xba0d('0x1f')]||null:null})[_0xba0d('0x20')](function(_0x564507){logger[_0xba0d('0x11')](_0xba0d('0x21'),_0x3dbfa5);logger['debug'](_0xba0d('0x21'),_0x3dbfa5,JSON['stringify'](_0x564507));_0x638df1(_0x564507);})['catch'](function(_0x2cf1b6){logger['error'](_0xba0d('0x21'),_0x2cf1b6[_0xba0d('0x17')],_0x3dbfa5);_0x45a7f4(_0x4df630[_0xba0d('0x15')](0x1f4,_0x2cf1b6[_0xba0d('0x17')]));});});};exports[_0xba0d('0x22')]=function(_0x585917){return new Promise(function(_0x7902b7,_0x1612ba){return db[_0xba0d('0x23')][_0xba0d('0x24')]({'where':_0x585917[_0xba0d('0x1c')]?_0x585917[_0xba0d('0x1c')][_0xba0d('0x25')]||null:null})[_0xba0d('0x20')](function(_0x488363){if(_0x488363){return _0x488363[_0xba0d('0x26')](_0x585917[_0xba0d('0x27')]['ids'],_['omit'](_0x585917[_0xba0d('0x27')],[_0xba0d('0x28'),'id'])||{});}})[_0xba0d('0x29')](function(_0x5579a5){logger[_0xba0d('0x11')](_0xba0d('0x2a'),_0x585917);logger[_0xba0d('0x13')](_0xba0d('0x2a'),_0x585917,JSON[_0xba0d('0x2b')](_0x5579a5));_0x7902b7(_0x5579a5);})[_0xba0d('0x1a')](function(_0x5a3c5d){logger[_0xba0d('0x15')]('AddTags',_0x5a3c5d[_0xba0d('0x17')],_0x585917);_0x1612ba(_this['error'](0x1f4,_0x5a3c5d[_0xba0d('0x17')]));});});};
\ No newline at end of file
+var _0x4bac=['ChatInteraction,\x20%s,\x20%s','debug','error','code','message','request\x20sent','result','UpdateChatInteraction','ChatInteraction','update','body','options','raw','attributes','stringify','catch','AddTagsToChatInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','randomstring','../../mysqldb','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','then','info'];(function(_0x5b0023,_0x3f31c7){var _0x4b0bb0=function(_0x1c5a24){while(--_0x1c5a24){_0x5b0023['push'](_0x5b0023['shift']());}};_0x4b0bb0(++_0x3f31c7);}(_0x4bac,0xaa));var _0xc4ba=function(_0x5d46bb,_0x2c3bd4){_0x5d46bb=_0x5d46bb-0x0;var _0x3a0302=_0x4bac[_0x5d46bb];return _0x3a0302;};'use strict';var _=require(_0xc4ba('0x0'));var util=require(_0xc4ba('0x1'));var moment=require(_0xc4ba('0x2'));var BPromise=require('bluebird');var rs=require(_0xc4ba('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc4ba('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc4ba('0x5'));var config=require(_0xc4ba('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc4ba('0x7')][_0xc4ba('0x8')]({'port':0x232a});config[_0xc4ba('0x9')]=_['defaults'](config[_0xc4ba('0x9')],{'host':_0xc4ba('0xa'),'port':0x18eb});var socket=require(_0xc4ba('0xb'))(new Redis(config[_0xc4ba('0x9')]));require('./chatInteraction.socket')[_0xc4ba('0xc')](socket);function respondWithRpcPromise(_0x19cb95,_0x28693b,_0x52fb0f){return new BPromise(function(_0x58d3c4,_0x5eb474){return client['request'](_0x19cb95,_0x52fb0f)[_0xc4ba('0xd')](function(_0x329d40){logger[_0xc4ba('0xe')](_0xc4ba('0xf'),_0x28693b,'request\x20sent');logger[_0xc4ba('0x10')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x28693b,'request\x20sent',JSON['stringify'](_0x329d40));if(_0x329d40['error']){if(_0x329d40[_0xc4ba('0x11')][_0xc4ba('0x12')]===0x1f4){logger[_0xc4ba('0x11')](_0xc4ba('0xf'),_0x28693b,_0x329d40[_0xc4ba('0x11')]['message']);return _0x5eb474(_0x329d40['error'][_0xc4ba('0x13')]);}logger[_0xc4ba('0x11')](_0xc4ba('0xf'),_0x28693b,_0x329d40['error']['message']);return _0x58d3c4(_0x329d40[_0xc4ba('0x11')]['message']);}else{logger[_0xc4ba('0xe')](_0xc4ba('0xf'),_0x28693b,_0xc4ba('0x14'));_0x58d3c4(_0x329d40[_0xc4ba('0x15')]['message']);}})['catch'](function(_0x3e9198){logger[_0xc4ba('0x11')](_0xc4ba('0xf'),_0x28693b,_0x3e9198);_0x5eb474(_0x3e9198);});});}exports[_0xc4ba('0x16')]=function(_0x681d8c){var _0x3952a9=this;return new Promise(function(_0x15d615,_0x16a1a9){return db[_0xc4ba('0x17')][_0xc4ba('0x18')](_0x681d8c[_0xc4ba('0x19')],{'raw':_0x681d8c[_0xc4ba('0x1a')]?_0x681d8c[_0xc4ba('0x1a')][_0xc4ba('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x681d8c[_0xc4ba('0x1a')]?_0x681d8c[_0xc4ba('0x1a')]['where']||null:null,'attributes':_0x681d8c['options']?_0x681d8c['options'][_0xc4ba('0x1c')]||null:null,'limit':_0x681d8c[_0xc4ba('0x1a')]?_0x681d8c[_0xc4ba('0x1a')]['limit']||null:null})[_0xc4ba('0xd')](function(_0x3e6a85){logger['info']('UpdateChatInteraction',_0x681d8c);logger[_0xc4ba('0x10')](_0xc4ba('0x16'),_0x681d8c,JSON[_0xc4ba('0x1d')](_0x3e6a85));_0x15d615(_0x3e6a85);})[_0xc4ba('0x1e')](function(_0x21eb96){logger[_0xc4ba('0x11')](_0xc4ba('0x16'),_0x21eb96[_0xc4ba('0x13')],_0x681d8c);_0x16a1a9(_0x3952a9[_0xc4ba('0x11')](0x1f4,_0x21eb96[_0xc4ba('0x13')]));});});};exports[_0xc4ba('0x1f')]=function(_0x35ed09){return new Promise(function(_0x5407ad,_0x4228a3){return db[_0xc4ba('0x17')][_0xc4ba('0x20')]({'where':_0x35ed09[_0xc4ba('0x1a')]?_0x35ed09[_0xc4ba('0x1a')]['where']||null:null})[_0xc4ba('0xd')](function(_0x2be6a4){if(_0x2be6a4){return _0x2be6a4[_0xc4ba('0x21')](_0x35ed09['body'][_0xc4ba('0x22')],_[_0xc4ba('0x23')](_0x35ed09[_0xc4ba('0x19')],[_0xc4ba('0x22'),'id'])||{});}})['spread'](function(_0x5cd2ad){logger['info'](_0xc4ba('0x24'),_0x35ed09);logger[_0xc4ba('0x10')](_0xc4ba('0x24'),_0x35ed09,JSON[_0xc4ba('0x1d')](_0x5cd2ad));_0x5407ad(_0x5cd2ad);})[_0xc4ba('0x1e')](function(_0x566fa9){logger['error']('AddTags',_0x566fa9[_0xc4ba('0x13')],_0x35ed09);_0x4228a3(_this['error'](0x1f4,_0x566fa9['message']));});});};
\ No newline at end of file
index 341604f..a95b4e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55a1=['emit','removeListener','register','length','chatInteraction:','./chatInteraction.events','save','remove'];(function(_0x43b1ac,_0x45cc46){var _0x4a690f=function(_0x4efcff){while(--_0x4efcff){_0x43b1ac['push'](_0x43b1ac['shift']());}};_0x4a690f(++_0x45cc46);}(_0x55a1,0x11d));var _0x155a=function(_0x1c3cad,_0x237abe){_0x1c3cad=_0x1c3cad-0x0;var _0x5f0e0c=_0x55a1[_0x1c3cad];return _0x5f0e0c;};'use strict';var ChatInteractionEvents=require(_0x155a('0x0'));var events=[_0x155a('0x1'),_0x155a('0x2'),'update'];function createListener(_0x4ffa76,_0x358eee){return function(_0x604b29){_0x358eee[_0x155a('0x3')](_0x4ffa76,_0x604b29);};}function removeListener(_0x1acc79,_0x484472){return function(){ChatInteractionEvents[_0x155a('0x4')](_0x1acc79,_0x484472);};}exports[_0x155a('0x5')]=function(_0x63bf2c){for(var _0x3f226a=0x0,_0x18cd56=events[_0x155a('0x6')];_0x3f226a<_0x18cd56;_0x3f226a++){var _0x298fd5=events[_0x3f226a];var _0x1e84ba=createListener(_0x155a('0x7')+_0x298fd5,_0x63bf2c);ChatInteractionEvents['on'](_0x298fd5,_0x1e84ba);}};
\ No newline at end of file
+var _0xfa09=['./chatInteraction.events','save','remove','update','emit','length','chatInteraction:'];(function(_0xb40147,_0x451b88){var _0x10f394=function(_0x3e4605){while(--_0x3e4605){_0xb40147['push'](_0xb40147['shift']());}};_0x10f394(++_0x451b88);}(_0xfa09,0x1d5));var _0x9fa0=function(_0x2b7023,_0x4c5587){_0x2b7023=_0x2b7023-0x0;var _0x10c3c5=_0xfa09[_0x2b7023];return _0x10c3c5;};'use strict';var ChatInteractionEvents=require(_0x9fa0('0x0'));var events=[_0x9fa0('0x1'),_0x9fa0('0x2'),_0x9fa0('0x3')];function createListener(_0x1b5889,_0x26074f){return function(_0x3edc9a){_0x26074f[_0x9fa0('0x4')](_0x1b5889,_0x3edc9a);};}function removeListener(_0x23997b,_0x5e989d){return function(){ChatInteractionEvents['removeListener'](_0x23997b,_0x5e989d);};}exports['register']=function(_0x2fe633){for(var _0x22c9e7=0x0,_0x50b3a8=events[_0x9fa0('0x5')];_0x22c9e7<_0x50b3a8;_0x22c9e7++){var _0x595b09=events[_0x22c9e7];var _0x5cd6cb=createListener(_0x9fa0('0x6')+_0x595b09,_0x2fe633);ChatInteractionEvents['on'](_0x595b09,_0x5cd6cb);}};
\ No newline at end of file
index 5dac1fa..4ede0e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['chatinteraction:addtags','addTags','put','chatinteraction:update','update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','removeTags','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','isChatInteractionAuthorized','/:id/attachment_download','getMessages','/:id/my_messages','getMyMessages','/:id/download','download','post','diskStorage','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','/:id/messages','/:id/tags','tracked','chat'];(function(_0x1b2abc,_0x4152ea){var _0x273504=function(_0x305647){while(--_0x305647){_0x1b2abc['push'](_0x1b2abc['shift']());}};_0x273504(++_0x4152ea);}(_0xb03e,0x1eb));var _0xeb03=function(_0x335b0e,_0x1627bb){_0x335b0e=_0x335b0e-0x0;var _0x6394d8=_0xb03e[_0x335b0e];return _0x6394d8;};'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 auth=require(_0xeb03('0x5'));var interaction=require(_0xeb03('0x6'));var config=require(_0xeb03('0x7'));var controller=require(_0xeb03('0x8'));router[_0xeb03('0x9')]('/',auth[_0xeb03('0xa')](),controller[_0xeb03('0xb')]);router['get'](_0xeb03('0xc'),auth[_0xeb03('0xa')](),controller[_0xeb03('0xd')]);router[_0xeb03('0x9')](_0xeb03('0xe'),auth[_0xeb03('0xf')](),controller['show']);router[_0xeb03('0x9')](_0xeb03('0x10'),auth[_0xeb03('0xf')](),controller['attachmentDownload']);router[_0xeb03('0x9')]('/:id/messages',auth[_0xeb03('0xa')](),controller[_0xeb03('0x11')]);router[_0xeb03('0x9')](_0xeb03('0x12'),auth[_0xeb03('0xf')](),controller[_0xeb03('0x13')]);router[_0xeb03('0x9')](_0xeb03('0x14'),auth[_0xeb03('0xa')](),controller[_0xeb03('0x15')]);router[_0xeb03('0x16')]('/',auth[_0xeb03('0xa')](),controller['create']);var upload=multer({'storage':multer[_0xeb03('0x17')]({'destination':function(_0x100bef,_0x372c71,_0x33f9ba){_0x33f9ba(null,path['join'](config[_0xeb03('0x18')],_0xeb03('0x19')));},'filename':function(_0x3f26ef,_0x478989,_0x7ce874){_0x7ce874(null,util[_0xeb03('0x1a')](_0xeb03('0x1b'),Date[_0xeb03('0x1c')](),_0x478989[_0xeb03('0x1d')][_0xeb03('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xeb03('0x16')](_0xeb03('0x1f'),upload[_0xeb03('0x20')](_0xeb03('0x21')),controller[_0xeb03('0x22')]);router[_0xeb03('0x16')](_0xeb03('0x23'),auth[_0xeb03('0xf')](),controller['addMessage']);router[_0xeb03('0x16')](_0xeb03('0x24'),auth[_0xeb03('0xa')](),interaction[_0xeb03('0x25')](_0xeb03('0x26'),_0xeb03('0x27')),controller[_0xeb03('0x28')]);router[_0xeb03('0x29')](_0xeb03('0xe'),auth['isAuthenticated'](),interaction[_0xeb03('0x25')](_0xeb03('0x26'),_0xeb03('0x2a')),controller[_0xeb03('0x2b')]);router[_0xeb03('0x29')]('/:id/custom_update',controller[_0xeb03('0x2c')]);router[_0xeb03('0x29')](_0xeb03('0x2d'),auth[_0xeb03('0xf')](),controller[_0xeb03('0x2e')]);router[_0xeb03('0x29')](_0xeb03('0x2f'),controller[_0xeb03('0x30')]);router[_0xeb03('0x31')]('/:id',auth[_0xeb03('0xa')](),interaction[_0xeb03('0x25')](_0xeb03('0x26'),_0xeb03('0x32')),controller['destroy']);router['delete'](_0xeb03('0x24'),auth['isAuthenticated'](),controller[_0xeb03('0x33')]);module[_0xeb03('0x34')]=router;
\ No newline at end of file
+var _0x757a=['addMessage','/:id/tags','tracked','chat','put','chatinteraction:update','update','/:id/custom_update','/:id/close','close','destroy','exports','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/download','post','diskStorage','join','root','server/files/attachments/','%s-%s','now','originalname','/:id/attachment_upload','single','file','attachmentUpload'];(function(_0x5e8eae,_0x4f81e0){var _0xdd09cd=function(_0x28c85c){while(--_0x28c85c){_0x5e8eae['push'](_0x5e8eae['shift']());}};_0xdd09cd(++_0x4f81e0);}(_0x757a,0xde));var _0xa757=function(_0x391e04,_0x1c9747){_0x391e04=_0x391e04-0x0;var _0x44e5e8=_0x757a[_0x391e04];return _0x44e5e8;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var auth=require(_0xa757('0x2'));var interaction=require(_0xa757('0x3'));var config=require(_0xa757('0x4'));var controller=require(_0xa757('0x5'));router[_0xa757('0x6')]('/',auth[_0xa757('0x7')](),controller['index']);router[_0xa757('0x6')](_0xa757('0x8'),auth['isAuthenticated'](),controller[_0xa757('0x9')]);router[_0xa757('0x6')](_0xa757('0xa'),auth[_0xa757('0xb')](),controller[_0xa757('0xc')]);router['get'](_0xa757('0xd'),auth[_0xa757('0xb')](),controller[_0xa757('0xe')]);router[_0xa757('0x6')](_0xa757('0xf'),auth[_0xa757('0x7')](),controller[_0xa757('0x10')]);router['get']('/:id/my_messages',auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router['get'](_0xa757('0x11'),auth['isAuthenticated'](),controller['download']);router[_0xa757('0x12')]('/',auth['isAuthenticated'](),controller['create']);var upload=multer({'storage':multer[_0xa757('0x13')]({'destination':function(_0x1b670e,_0x355f0a,_0x4a0c38){_0x4a0c38(null,path[_0xa757('0x14')](config[_0xa757('0x15')],_0xa757('0x16')));},'filename':function(_0x2f7947,_0x185011,_0x3df1f9){_0x3df1f9(null,util['format'](_0xa757('0x17'),Date[_0xa757('0x18')](),_0x185011[_0xa757('0x19')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xa757('0x1a'),upload[_0xa757('0x1b')](_0xa757('0x1c')),controller[_0xa757('0x1d')]);router[_0xa757('0x12')](_0xa757('0xf'),auth['isChatInteractionAuthorized'](),controller[_0xa757('0x1e')]);router['post'](_0xa757('0x1f'),auth[_0xa757('0x7')](),interaction[_0xa757('0x20')](_0xa757('0x21'),'chatinteraction:addtags'),controller['addTags']);router[_0xa757('0x22')](_0xa757('0xa'),auth[_0xa757('0x7')](),interaction[_0xa757('0x20')](_0xa757('0x21'),_0xa757('0x23')),controller[_0xa757('0x24')]);router[_0xa757('0x22')](_0xa757('0x25'),controller['customUpdate']);router[_0xa757('0x22')]('/:id/abandon',auth[_0xa757('0xb')](),controller['abandon']);router[_0xa757('0x22')](_0xa757('0x26'),controller[_0xa757('0x27')]);router['delete'](_0xa757('0xa'),auth[_0xa757('0x7')](),interaction[_0xa757('0x20')](_0xa757('0x21'),'chatinteraction:destroy'),controller[_0xa757('0x28')]);router['delete']('/:id/tags',auth['isAuthenticated'](),controller['removeTags']);module[_0xa757('0x29')]=router;
\ No newline at end of file
index 61cb239..7504ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['exports','TEXT','medium','BOOLEAN','INTEGER','sequelize'];(function(_0x58422c,_0x55903e){var _0x4f4554=function(_0x261f4d){while(--_0x261f4d){_0x58422c['push'](_0x58422c['shift']());}};_0x4f4554(++_0x55903e);}(_0x9582,0x95));var _0x2958=function(_0x2323bb,_0xc5d49c){_0x2323bb=_0x2323bb-0x0;var _0x524563=_0x9582[_0x2323bb];return _0x524563;};'use strict';var Sequelize=require(_0x2958('0x0'));module[_0x2958('0x1')]={'body':{'type':Sequelize[_0x2958('0x2')](_0x2958('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x2958('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x2958('0x5')]}};
\ No newline at end of file
+var _0x8af6=['TEXT','medium','BOOLEAN','INTEGER','sequelize','exports'];(function(_0x50667a,_0x86eb28){var _0x4987e5=function(_0x4482b1){while(--_0x4482b1){_0x50667a['push'](_0x50667a['shift']());}};_0x4987e5(++_0x86eb28);}(_0x8af6,0x76));var _0x68af=function(_0x5ba5da,_0x5d2f8c){_0x5ba5da=_0x5ba5da-0x0;var _0xe8423=_0x8af6[_0x5ba5da];return _0xe8423;};'use strict';var Sequelize=require(_0x68af('0x0'));module[_0x68af('0x1')]={'body':{'type':Sequelize[_0x68af('0x2')](_0x68af('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x68af('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x68af('0x5')]}};
\ No newline at end of file
index 9d1252a..87c6a38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cdf=['user','fullname','role','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','length','resourceId','push','createdAt','FromId','ToId','read','sort','-createdAt','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','status','end','json','count','offset','limit','set','Content-Range','reject','save','update','then','sendStatus','stack','name','send','index','ChatInternalMessage','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','where','add','day','merge','filter','map','type','key','VIRTUAL','field','findAll','show','params','includeAll','options','find','catch','create','body','destroy','describe','get','messages','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','User','agent','admin'];(function(_0x12fcbd,_0x884804){var _0x28ec2a=function(_0xa5ff99){while(--_0xa5ff99){_0x12fcbd['push'](_0x12fcbd['shift']());}};_0x28ec2a(++_0x884804);}(_0x1cdf,0x16e));var _0xf1cd=function(_0x235921,_0x70001){_0x235921=_0x235921-0x0;var _0x36014a=_0x1cdf[_0x235921];return _0x36014a;};'use strict';var pdf=require(_0xf1cd('0x0'));var emlformat=require(_0xf1cd('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xf1cd('0x2'));var jsonpatch=require(_0xf1cd('0x3'));var rp=require(_0xf1cd('0x4'));var moment=require(_0xf1cd('0x5'));var BPromise=require(_0xf1cd('0x6'));var Mustache=require(_0xf1cd('0x7'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xf1cd('0x8'));var ejs=require(_0xf1cd('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0xf1cd('0xa'));var crypto=require(_0xf1cd('0xb'));var jsforce=require(_0xf1cd('0xc'));var deskjs=require(_0xf1cd('0xd'));var toCsv=require('to-csv');var querystring=require(_0xf1cd('0xe'));var Papa=require('papaparse');var Redis=require(_0xf1cd('0xf'));var qs=require(_0xf1cd('0x10'));var logger=require(_0xf1cd('0x11'))(_0xf1cd('0x12'));var utils=require(_0xf1cd('0x13'));var config=require('../../config/environment');var db=require(_0xf1cd('0x14'))['db'];config[_0xf1cd('0x15')]=_['defaults'](config[_0xf1cd('0x15')],{'host':_0xf1cd('0x16'),'port':0x18eb});var socket=require(_0xf1cd('0x17'))(new Redis(config[_0xf1cd('0x15')]));require(_0xf1cd('0x18'))[_0xf1cd('0x19')](socket);function respondWithStatusCode(_0x1ead79,_0x2d8d58){_0x2d8d58=_0x2d8d58||0xcc;return function(_0x52f17a){if(_0x52f17a){return _0x1ead79['sendStatus'](_0x2d8d58);}return _0x1ead79[_0xf1cd('0x1a')](_0x2d8d58)[_0xf1cd('0x1b')]();};}function respondWithResult(_0x237f73,_0x27597c){_0x27597c=_0x27597c||0xc8;return function(_0x111302){if(_0x111302){return _0x237f73['status'](_0x27597c)[_0xf1cd('0x1c')](_0x111302);}};}function respondWithFilteredResult(_0x579a02,_0x3d242c){return function(_0x4f387d){if(_0x4f387d){var _0x51a123=_0x4f387d[_0xf1cd('0x1d')],_0x487137=_0x3d242c[_0xf1cd('0x1e')],_0x3ed680=_0x3d242c[_0xf1cd('0x1e')]+_0x3d242c[_0xf1cd('0x1f')],_0x15fa6e;if(_0x3ed680>=_0x51a123){_0x3ed680=_0x51a123;_0x15fa6e=0xc8;}else{_0x15fa6e=0xce;}_0x579a02['status'](_0x15fa6e);return _0x579a02[_0xf1cd('0x20')](_0xf1cd('0x21'),_0x487137+'-'+_0x3ed680+'/'+_0x51a123)[_0xf1cd('0x1c')](_0x4f387d);}return null;};}function patchUpdates(_0x5dfc0b){return function(_0x7439f7){try{jsonpatch['apply'](_0x7439f7,_0x5dfc0b,!![]);}catch(_0x3c6941){return BPromise[_0xf1cd('0x22')](_0x3c6941);}return _0x7439f7[_0xf1cd('0x23')]();};}function saveUpdates(_0x23a842,_0x12abf9){return function(_0x1d14cf){if(_0x1d14cf){return _0x1d14cf[_0xf1cd('0x24')](_0x23a842)[_0xf1cd('0x25')](function(_0x2b6d4b){return _0x2b6d4b;});}return null;};}function removeEntity(_0x4899c5,_0x4f38ce){return function(_0x4a5bae){if(_0x4a5bae){return _0x4a5bae['destroy']()['then'](function(){_0x4899c5[_0xf1cd('0x1a')](0xcc)[_0xf1cd('0x1b')]();});}};}function handleEntityNotFound(_0x17d46b,_0x33004e){return function(_0x5f226f){if(!_0x5f226f){_0x17d46b[_0xf1cd('0x26')](0x194);}return _0x5f226f;};}function handleError(_0x3be414,_0x2a8f6b){_0x2a8f6b=_0x2a8f6b||0x1f4;return function(_0x37bf2b){logger['error'](_0x37bf2b[_0xf1cd('0x27')]);if(_0x37bf2b[_0xf1cd('0x28')]){delete _0x37bf2b['name'];}_0x3be414[_0xf1cd('0x1a')](_0x2a8f6b)[_0xf1cd('0x29')](_0x37bf2b);};}exports[_0xf1cd('0x2a')]=function(_0x5b3cc8,_0x111801){var _0x28cce7={},_0x2a0746={},_0x5a5c56={'count':0x0,'rows':[]};var _0x3e46dc=db[_0xf1cd('0x2b')][_0xf1cd('0x2c')];_0x2a0746['model']=_[_0xf1cd('0x2d')](_0x3e46dc);var _0x340034={'dateStart':_0x5b3cc8['query']['dateStart'],'dateEnd':_0x5b3cc8[_0xf1cd('0x2e')]['dateEnd']};delete _0x5b3cc8[_0xf1cd('0x2e')][_0xf1cd('0x2f')];delete _0x5b3cc8['query'][_0xf1cd('0x30')];_0x2a0746[_0xf1cd('0x2e')]=_[_0xf1cd('0x2d')](_0x5b3cc8[_0xf1cd('0x2e')]);_0x2a0746[_0xf1cd('0x31')]=_[_0xf1cd('0x32')](_0x2a0746[_0xf1cd('0x33')],_0x2a0746['query']);_0x28cce7['attributes']=_[_0xf1cd('0x32')](_0x2a0746['model'],qs[_0xf1cd('0x34')](_0x5b3cc8[_0xf1cd('0x2e')][_0xf1cd('0x34')]));_0x28cce7[_0xf1cd('0x35')]=_0x28cce7[_0xf1cd('0x35')]['length']?_0x28cce7['attributes']:_0x2a0746['model'];if(!_0x5b3cc8[_0xf1cd('0x2e')][_0xf1cd('0x36')](_0xf1cd('0x37'))){_0x28cce7[_0xf1cd('0x1f')]=qs['limit'](_0x5b3cc8['query'][_0xf1cd('0x1f')]);_0x28cce7[_0xf1cd('0x1e')]=qs[_0xf1cd('0x1e')](_0x5b3cc8[_0xf1cd('0x2e')][_0xf1cd('0x1e')]);}_0x28cce7[_0xf1cd('0x38')]=qs['sort'](_0x5b3cc8[_0xf1cd('0x2e')]['sort']);_0x28cce7[_0xf1cd('0x39')]=qs[_0xf1cd('0x31')](_['pick'](_0x5b3cc8['query'],_0x2a0746[_0xf1cd('0x31')]));if(_0x340034['dateStart']){if(_0x340034[_0xf1cd('0x30')]){_0x340034['dateEnd']=moment(_0x340034[_0xf1cd('0x30')])[_0xf1cd('0x3a')](0x1,_0xf1cd('0x3b'));}else{_0x340034['dateEnd']=moment(_0x340034[_0xf1cd('0x2f')])['add'](0x1,'day');}_[_0xf1cd('0x3c')](_0x28cce7[_0xf1cd('0x39')],{'createdAt':{'$gte':_0x340034[_0xf1cd('0x2f')],'$lte':_0x340034[_0xf1cd('0x30')]}});}if(_0x5b3cc8['query'][_0xf1cd('0x3d')]){_0x28cce7[_0xf1cd('0x39')]=_[_0xf1cd('0x3c')](_0x28cce7[_0xf1cd('0x39')],{'$or':_[_0xf1cd('0x3e')](_0x3e46dc,function(_0x4a3223){if(_0x4a3223[_0xf1cd('0x3f')][_0xf1cd('0x40')]!==_0xf1cd('0x41')){var _0x452a45={};_0x452a45[_0x4a3223[_0xf1cd('0x42')]]={'$like':'%'+_0x5b3cc8['query'][_0xf1cd('0x3d')]+'%'};return _0x452a45;}})});}_0x28cce7=_[_0xf1cd('0x3c')]({},_0x28cce7,_0x5b3cc8['options']);var _0x3532b4={'where':_0x28cce7[_0xf1cd('0x39')]};return db[_0xf1cd('0x2b')][_0xf1cd('0x1d')](_0x3532b4)[_0xf1cd('0x25')](function(_0x4309b8){_0x5a5c56['count']=_0x4309b8;if(_0x5b3cc8[_0xf1cd('0x2e')]['includeAll']){_0x28cce7['include']=[{'all':!![]}];}return db['ChatInternalMessage'][_0xf1cd('0x43')](_0x28cce7);})[_0xf1cd('0x25')](function(_0x16fd1d){_0x5a5c56['rows']=_0x16fd1d;return _0x5a5c56;})[_0xf1cd('0x25')](respondWithFilteredResult(_0x111801,_0x28cce7))['catch'](handleError(_0x111801,null));};exports[_0xf1cd('0x44')]=function(_0x6ed73d,_0x17c2d4){var _0x50e564={'raw':!![],'where':{'id':_0x6ed73d[_0xf1cd('0x45')]['id']}},_0xd474fb={};_0xd474fb[_0xf1cd('0x33')]=_['keys'](db[_0xf1cd('0x2b')]['rawAttributes']);_0xd474fb[_0xf1cd('0x2e')]=_['keys'](_0x6ed73d['query']);_0xd474fb[_0xf1cd('0x31')]=_[_0xf1cd('0x32')](_0xd474fb['model'],_0xd474fb[_0xf1cd('0x2e')]);_0x50e564[_0xf1cd('0x35')]=_[_0xf1cd('0x32')](_0xd474fb[_0xf1cd('0x33')],qs[_0xf1cd('0x34')](_0x6ed73d[_0xf1cd('0x2e')][_0xf1cd('0x34')]));_0x50e564[_0xf1cd('0x35')]=_0x50e564['attributes']['length']?_0x50e564[_0xf1cd('0x35')]:_0xd474fb[_0xf1cd('0x33')];if(_0x6ed73d[_0xf1cd('0x2e')][_0xf1cd('0x46')]){_0x50e564['include']=[{'all':!![]}];}_0x50e564=_[_0xf1cd('0x3c')]({},_0x50e564,_0x6ed73d[_0xf1cd('0x47')]);return db['ChatInternalMessage'][_0xf1cd('0x48')](_0x50e564)[_0xf1cd('0x25')](handleEntityNotFound(_0x17c2d4,null))['then'](respondWithResult(_0x17c2d4,null))[_0xf1cd('0x49')](handleError(_0x17c2d4,null));};exports['create']=function(_0x4e5731,_0x5bbc79){return db[_0xf1cd('0x2b')][_0xf1cd('0x4a')](_0x4e5731['body'],{})[_0xf1cd('0x25')](respondWithResult(_0x5bbc79,0xc9))[_0xf1cd('0x49')](handleError(_0x5bbc79,null));};exports[_0xf1cd('0x24')]=function(_0x4a88ef,_0x195f38){if(_0x4a88ef['body']['id']){delete _0x4a88ef[_0xf1cd('0x4b')]['id'];}return db[_0xf1cd('0x2b')][_0xf1cd('0x48')]({'where':{'id':_0x4a88ef[_0xf1cd('0x45')]['id']}})[_0xf1cd('0x25')](handleEntityNotFound(_0x195f38,null))[_0xf1cd('0x25')](saveUpdates(_0x4a88ef['body'],null))['then'](respondWithResult(_0x195f38,null))[_0xf1cd('0x49')](handleError(_0x195f38,null));};exports[_0xf1cd('0x4c')]=function(_0x93f9ad,_0x2626be){return db['ChatInternalMessage'][_0xf1cd('0x48')]({'where':{'id':_0x93f9ad[_0xf1cd('0x45')]['id']}})['then'](handleEntityNotFound(_0x2626be,null))['then'](removeEntity(_0x2626be,null))[_0xf1cd('0x49')](handleError(_0x2626be,null));};exports[_0xf1cd('0x4d')]=function(_0x157bee,_0x48cb47){return db[_0xf1cd('0x2b')][_0xf1cd('0x4d')]()['then'](respondWithResult(_0x48cb47,null))[_0xf1cd('0x49')](handleError(_0x48cb47,null));};function wrapUser(_0x345c39){return function(_0xbef11b){var _0x3a8c6a=_0x345c39[_0xf1cd('0x4e')]({'plain':!![]});_0x3a8c6a[_0xf1cd('0x4f')]=[];if(_0xbef11b){_0x3a8c6a['lastMessageAt']=_0xbef11b['createdAt'];_0x3a8c6a['lastMessage']=_0xbef11b;}else{_0x3a8c6a[_0xf1cd('0x50')]=moment(0x0)[_0xf1cd('0x51')](_0xf1cd('0x52'));_0x3a8c6a['lastMessage']={};}return _0x3a8c6a;};}exports['getUsers']=function(_0x843798,_0x5ca397,_0x4e9f44){var _0x487c11=[];return db[_0xf1cd('0x53')][_0xf1cd('0x43')]({'where':{'role':[_0xf1cd('0x54'),_0xf1cd('0x55'),_0xf1cd('0x56')]},'attributes':['id',_0xf1cd('0x57'),_0xf1cd('0x28'),_0xf1cd('0x58'),'userpic',_0xf1cd('0x59'),_0xf1cd('0x5a'),_0xf1cd('0x5b'),_0xf1cd('0x5c'),_0xf1cd('0x5d')],'order':qs['sort'](_0xf1cd('0x5e')),'include':[{'model':db[_0xf1cd('0x5f')],'as':_0xf1cd('0x60'),'attributes':['id','name','type'],'through':{'attributes':[]}}]})['then'](function(_0xe43826){if(_0xe43826){var _0x230683=_0x843798[_0xf1cd('0x56')]['get']({'plain':!![]});if(!_0x230683)throw new Error(_0xf1cd('0x61'));if(_0x230683[_0xf1cd('0x58')]===_0xf1cd('0x56')){return db[_0xf1cd('0x62')]['find']({'where':{'name':_0xf1cd('0x63'),'userProfileId':_0x230683[_0xf1cd('0x64')]},'raw':!![]})[_0xf1cd('0x25')](function(_0x4035b2){if(_0x4035b2){if(_0x4035b2[_0xf1cd('0x65')]===0x0){return db[_0xf1cd('0x66')]['findAll']({'where':{'sectionId':_0x4035b2['id']},'raw':!![]})[_0xf1cd('0x25')](function(_0x489267){var _0xdbbd0=[];if(_[_0xf1cd('0x67')](_0x489267)){_0xdbbd0=_[_0xf1cd('0x3d')](_0xe43826,function(_0x4469a5){if(_0x4469a5['role']!==_0xf1cd('0x54')){return _0x4469a5;}});return _0xdbbd0;}else{for(var _0x1f2f31=0x0;_0x1f2f31<_0xe43826[_0xf1cd('0x68')];_0x1f2f31++){var _0x222472=_0xe43826[_0x1f2f31];if(_0x222472[_0xf1cd('0x58')]===_0xf1cd('0x54')){var _0x2ae66a=_[_0xf1cd('0x48')](_0x489267,function(_0x146e39){return _0x146e39[_0xf1cd('0x69')]===_0x222472['id'];});if(_0x2ae66a)_0xdbbd0[_0xf1cd('0x6a')](_0x222472);}else{_0xdbbd0[_0xf1cd('0x6a')](_0x222472);}}return _0xdbbd0;}});}else{return _0xe43826;}}else{var _0x46cae8=_[_0xf1cd('0x3d')](_0xe43826,function(_0x99b961){if(_0x99b961[_0xf1cd('0x58')]!==_0xf1cd('0x54')){return _0x99b961;}});return _0x46cae8;}});}else{return _0xe43826;}}})['then'](function(_0x4ab77c){var _0x31256a=[];if(_0x4ab77c){_0x487c11=_0x4ab77c;for(var _0x5b8955=0x0;_0x5b8955<_0x4ab77c[_0xf1cd('0x68')];_0x5b8955+=0x1){_0x487c11[_0x5b8955][_0xf1cd('0x4f')]=[];_0x31256a[_0xf1cd('0x6a')](db[_0xf1cd('0x2b')][_0xf1cd('0x48')]({'where':{'FromId':[_0x843798[_0xf1cd('0x56')]['id'],_0x4ab77c[_0x5b8955]['id']],'ToId':[_0x843798[_0xf1cd('0x56')]['id'],_0x4ab77c[_0x5b8955]['id']],'ChatGroupId':null},'attributes':['id',_0xf1cd('0x6b'),_0xf1cd('0x6c'),_0xf1cd('0x6d'),_0xf1cd('0x6e'),_0xf1cd('0x4b')],'order':qs[_0xf1cd('0x6f')](_0xf1cd('0x70')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x4ab77c[_0x5b8955])));}return BPromise['all'](_0x31256a);}return[];})['then'](function(_0x2984ad){return{'rows':_0x2984ad,'count':_0x2984ad[_0xf1cd('0x68')]};})[_0xf1cd('0x25')](respondWithResult(_0x5ca397,null))[_0xf1cd('0x49')](handleError(_0x5ca397,null));};
\ No newline at end of file
+var _0x16f8=['sort','where','pick','add','day','merge','filter','type','key','field','includeAll','include','rows','catch','params','find','create','body','update','destroy','describe','get','messages','lastMessageAt','createdAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','admin','role','internal','online','lastLoginAt','allowmessenger','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','./chatInternalMessage.socket','register','status','end','json','count','offset','set','Content-Range','apply','reject','save','then','sendStatus','stack','name','send','index','ChatInternalMessage','rawAttributes','model','keys','query','dateEnd','dateStart','filters','attributes','intersection','fields','length','hasOwnProperty','limit'];(function(_0x171d07,_0x59c974){var _0x135563=function(_0x2aea19){while(--_0x2aea19){_0x171d07['push'](_0x171d07['shift']());}};_0x135563(++_0x59c974);}(_0x16f8,0x10b));var _0x816f=function(_0x18696a,_0x31130f){_0x18696a=_0x18696a-0x0;var _0x45ada5=_0x16f8[_0x18696a];return _0x45ada5;};'use strict';var pdf=require(_0x816f('0x0'));var emlformat=require(_0x816f('0x1'));var rimraf=require(_0x816f('0x2'));var zipdir=require(_0x816f('0x3'));var jsonpatch=require(_0x816f('0x4'));var rp=require(_0x816f('0x5'));var moment=require(_0x816f('0x6'));var BPromise=require(_0x816f('0x7'));var Mustache=require(_0x816f('0x8'));var util=require(_0x816f('0x9'));var path=require(_0x816f('0xa'));var sox=require('sox');var csv=require(_0x816f('0xb'));var ejs=require(_0x816f('0xc'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x816f('0xd'));var jsforce=require(_0x816f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x816f('0xb'));var querystring=require(_0x816f('0xf'));var Papa=require(_0x816f('0x10'));var Redis=require('ioredis');var qs=require(_0x816f('0x11'));var logger=require(_0x816f('0x12'))(_0x816f('0x13'));var utils=require(_0x816f('0x14'));var config=require('../../config/environment');var db=require(_0x816f('0x15'))['db'];config[_0x816f('0x16')]=_[_0x816f('0x17')](config[_0x816f('0x16')],{'host':_0x816f('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x816f('0x16')]));require(_0x816f('0x19'))[_0x816f('0x1a')](socket);function respondWithStatusCode(_0x373e56,_0x21fd75){_0x21fd75=_0x21fd75||0xcc;return function(_0x82a19b){if(_0x82a19b){return _0x373e56['sendStatus'](_0x21fd75);}return _0x373e56[_0x816f('0x1b')](_0x21fd75)[_0x816f('0x1c')]();};}function respondWithResult(_0x4320e0,_0x4c3110){_0x4c3110=_0x4c3110||0xc8;return function(_0x4897ee){if(_0x4897ee){return _0x4320e0[_0x816f('0x1b')](_0x4c3110)[_0x816f('0x1d')](_0x4897ee);}};}function respondWithFilteredResult(_0x2159b2,_0x42f2cf){return function(_0x16b06b){if(_0x16b06b){var _0x44f474=_0x16b06b[_0x816f('0x1e')],_0x21f9f8=_0x42f2cf[_0x816f('0x1f')],_0x12f172=_0x42f2cf[_0x816f('0x1f')]+_0x42f2cf['limit'],_0x1fd9f7;if(_0x12f172>=_0x44f474){_0x12f172=_0x44f474;_0x1fd9f7=0xc8;}else{_0x1fd9f7=0xce;}_0x2159b2['status'](_0x1fd9f7);return _0x2159b2[_0x816f('0x20')](_0x816f('0x21'),_0x21f9f8+'-'+_0x12f172+'/'+_0x44f474)[_0x816f('0x1d')](_0x16b06b);}return null;};}function patchUpdates(_0x13c5af){return function(_0x1031d4){try{jsonpatch[_0x816f('0x22')](_0x1031d4,_0x13c5af,!![]);}catch(_0x1a85bd){return BPromise[_0x816f('0x23')](_0x1a85bd);}return _0x1031d4[_0x816f('0x24')]();};}function saveUpdates(_0x5ee24e,_0x4c7352){return function(_0x217368){if(_0x217368){return _0x217368['update'](_0x5ee24e)['then'](function(_0x5d216a){return _0x5d216a;});}return null;};}function removeEntity(_0x13f4ca,_0x4be156){return function(_0x5aefe8){if(_0x5aefe8){return _0x5aefe8['destroy']()[_0x816f('0x25')](function(){_0x13f4ca['status'](0xcc)[_0x816f('0x1c')]();});}};}function handleEntityNotFound(_0x10223a,_0x21e229){return function(_0x3def86){if(!_0x3def86){_0x10223a[_0x816f('0x26')](0x194);}return _0x3def86;};}function handleError(_0x9ca82,_0x57217b){_0x57217b=_0x57217b||0x1f4;return function(_0x927bde){logger['error'](_0x927bde[_0x816f('0x27')]);if(_0x927bde['name']){delete _0x927bde[_0x816f('0x28')];}_0x9ca82[_0x816f('0x1b')](_0x57217b)[_0x816f('0x29')](_0x927bde);};}exports[_0x816f('0x2a')]=function(_0x4444d4,_0x2e34fd){var _0x4d85d7={},_0x4a7fa9={},_0x543164={'count':0x0,'rows':[]};var _0xd84a74=db[_0x816f('0x2b')][_0x816f('0x2c')];_0x4a7fa9[_0x816f('0x2d')]=_[_0x816f('0x2e')](_0xd84a74);var _0x421b70={'dateStart':_0x4444d4['query']['dateStart'],'dateEnd':_0x4444d4[_0x816f('0x2f')][_0x816f('0x30')]};delete _0x4444d4[_0x816f('0x2f')][_0x816f('0x31')];delete _0x4444d4[_0x816f('0x2f')][_0x816f('0x30')];_0x4a7fa9[_0x816f('0x2f')]=_[_0x816f('0x2e')](_0x4444d4['query']);_0x4a7fa9[_0x816f('0x32')]=_['intersection'](_0x4a7fa9[_0x816f('0x2d')],_0x4a7fa9['query']);_0x4d85d7[_0x816f('0x33')]=_[_0x816f('0x34')](_0x4a7fa9['model'],qs[_0x816f('0x35')](_0x4444d4[_0x816f('0x2f')][_0x816f('0x35')]));_0x4d85d7['attributes']=_0x4d85d7['attributes'][_0x816f('0x36')]?_0x4d85d7[_0x816f('0x33')]:_0x4a7fa9[_0x816f('0x2d')];if(!_0x4444d4[_0x816f('0x2f')][_0x816f('0x37')]('nolimit')){_0x4d85d7[_0x816f('0x38')]=qs[_0x816f('0x38')](_0x4444d4[_0x816f('0x2f')]['limit']);_0x4d85d7[_0x816f('0x1f')]=qs[_0x816f('0x1f')](_0x4444d4[_0x816f('0x2f')][_0x816f('0x1f')]);}_0x4d85d7['order']=qs[_0x816f('0x39')](_0x4444d4[_0x816f('0x2f')][_0x816f('0x39')]);_0x4d85d7[_0x816f('0x3a')]=qs['filters'](_[_0x816f('0x3b')](_0x4444d4['query'],_0x4a7fa9[_0x816f('0x32')]));if(_0x421b70[_0x816f('0x31')]){if(_0x421b70['dateEnd']){_0x421b70[_0x816f('0x30')]=moment(_0x421b70['dateEnd'])[_0x816f('0x3c')](0x1,_0x816f('0x3d'));}else{_0x421b70[_0x816f('0x30')]=moment(_0x421b70[_0x816f('0x31')])[_0x816f('0x3c')](0x1,_0x816f('0x3d'));}_[_0x816f('0x3e')](_0x4d85d7[_0x816f('0x3a')],{'createdAt':{'$gte':_0x421b70[_0x816f('0x31')],'$lte':_0x421b70[_0x816f('0x30')]}});}if(_0x4444d4[_0x816f('0x2f')][_0x816f('0x3f')]){_0x4d85d7[_0x816f('0x3a')]=_[_0x816f('0x3e')](_0x4d85d7[_0x816f('0x3a')],{'$or':_['map'](_0xd84a74,function(_0x1c17a8){if(_0x1c17a8[_0x816f('0x40')][_0x816f('0x41')]!=='VIRTUAL'){var _0x25c801={};_0x25c801[_0x1c17a8[_0x816f('0x42')]]={'$like':'%'+_0x4444d4[_0x816f('0x2f')]['filter']+'%'};return _0x25c801;}})});}_0x4d85d7=_[_0x816f('0x3e')]({},_0x4d85d7,_0x4444d4['options']);var _0x3f9dec={'where':_0x4d85d7['where']};return db['ChatInternalMessage'][_0x816f('0x1e')](_0x3f9dec)[_0x816f('0x25')](function(_0x53ef66){_0x543164['count']=_0x53ef66;if(_0x4444d4[_0x816f('0x2f')][_0x816f('0x43')]){_0x4d85d7[_0x816f('0x44')]=[{'all':!![]}];}return db[_0x816f('0x2b')]['findAll'](_0x4d85d7);})[_0x816f('0x25')](function(_0x21ca8b){_0x543164[_0x816f('0x45')]=_0x21ca8b;return _0x543164;})['then'](respondWithFilteredResult(_0x2e34fd,_0x4d85d7))[_0x816f('0x46')](handleError(_0x2e34fd,null));};exports['show']=function(_0x374093,_0x288e09){var _0x42315a={'raw':!![],'where':{'id':_0x374093[_0x816f('0x47')]['id']}},_0x2c01a7={};_0x2c01a7['model']=_[_0x816f('0x2e')](db['ChatInternalMessage'][_0x816f('0x2c')]);_0x2c01a7[_0x816f('0x2f')]=_['keys'](_0x374093[_0x816f('0x2f')]);_0x2c01a7[_0x816f('0x32')]=_['intersection'](_0x2c01a7[_0x816f('0x2d')],_0x2c01a7[_0x816f('0x2f')]);_0x42315a['attributes']=_[_0x816f('0x34')](_0x2c01a7[_0x816f('0x2d')],qs['fields'](_0x374093[_0x816f('0x2f')][_0x816f('0x35')]));_0x42315a[_0x816f('0x33')]=_0x42315a[_0x816f('0x33')][_0x816f('0x36')]?_0x42315a['attributes']:_0x2c01a7[_0x816f('0x2d')];if(_0x374093[_0x816f('0x2f')]['includeAll']){_0x42315a['include']=[{'all':!![]}];}_0x42315a=_[_0x816f('0x3e')]({},_0x42315a,_0x374093['options']);return db[_0x816f('0x2b')][_0x816f('0x48')](_0x42315a)['then'](handleEntityNotFound(_0x288e09,null))[_0x816f('0x25')](respondWithResult(_0x288e09,null))[_0x816f('0x46')](handleError(_0x288e09,null));};exports['create']=function(_0x40f173,_0x3b1939){return db['ChatInternalMessage'][_0x816f('0x49')](_0x40f173[_0x816f('0x4a')],{})[_0x816f('0x25')](respondWithResult(_0x3b1939,0xc9))[_0x816f('0x46')](handleError(_0x3b1939,null));};exports[_0x816f('0x4b')]=function(_0x404da7,_0x1823dd){if(_0x404da7[_0x816f('0x4a')]['id']){delete _0x404da7[_0x816f('0x4a')]['id'];}return db[_0x816f('0x2b')][_0x816f('0x48')]({'where':{'id':_0x404da7[_0x816f('0x47')]['id']}})['then'](handleEntityNotFound(_0x1823dd,null))[_0x816f('0x25')](saveUpdates(_0x404da7['body'],null))[_0x816f('0x25')](respondWithResult(_0x1823dd,null))[_0x816f('0x46')](handleError(_0x1823dd,null));};exports[_0x816f('0x4c')]=function(_0x3b4eaf,_0x2a9475){return db[_0x816f('0x2b')][_0x816f('0x48')]({'where':{'id':_0x3b4eaf[_0x816f('0x47')]['id']}})['then'](handleEntityNotFound(_0x2a9475,null))[_0x816f('0x25')](removeEntity(_0x2a9475,null))[_0x816f('0x46')](handleError(_0x2a9475,null));};exports[_0x816f('0x4d')]=function(_0x2300a2,_0x54eb73){return db[_0x816f('0x2b')]['describe']()[_0x816f('0x25')](respondWithResult(_0x54eb73,null))[_0x816f('0x46')](handleError(_0x54eb73,null));};function wrapUser(_0x3aca65){return function(_0x29752b){var _0x33d7ed=_0x3aca65[_0x816f('0x4e')]({'plain':!![]});_0x33d7ed[_0x816f('0x4f')]=[];if(_0x29752b){_0x33d7ed[_0x816f('0x50')]=_0x29752b[_0x816f('0x51')];_0x33d7ed['lastMessage']=_0x29752b;}else{_0x33d7ed[_0x816f('0x50')]=moment(0x0)[_0x816f('0x52')](_0x816f('0x53'));_0x33d7ed['lastMessage']={};}return _0x33d7ed;};}exports[_0x816f('0x54')]=function(_0x582f17,_0x4d68b7,_0x1b65dc){var _0xbc4bc8=[];return db[_0x816f('0x55')]['findAll']({'where':{'role':[_0x816f('0x56'),_0x816f('0x57'),'user']},'attributes':['id','fullname','name',_0x816f('0x58'),'userpic',_0x816f('0x59'),_0x816f('0x5a'),_0x816f('0x5b'),_0x816f('0x5c'),'showWebBar'],'order':qs[_0x816f('0x39')]('-online'),'include':[{'model':db['VoiceQueue'],'as':'VoiceQueues','attributes':['id','name',_0x816f('0x40')],'through':{'attributes':[]}}]})[_0x816f('0x25')](function(_0x16bef5){if(_0x16bef5){var _0x2e6fa3=_0x582f17[_0x816f('0x5d')][_0x816f('0x4e')]({'plain':!![]});if(!_0x2e6fa3)throw new Error(_0x816f('0x5e'));if(_0x2e6fa3[_0x816f('0x58')]===_0x816f('0x5d')){return db[_0x816f('0x5f')][_0x816f('0x48')]({'where':{'name':_0x816f('0x60'),'userProfileId':_0x2e6fa3[_0x816f('0x61')]},'raw':!![]})[_0x816f('0x25')](function(_0x3fedf2){if(_0x3fedf2){if(_0x3fedf2[_0x816f('0x62')]===0x0){return db[_0x816f('0x63')]['findAll']({'where':{'sectionId':_0x3fedf2['id']},'raw':!![]})[_0x816f('0x25')](function(_0x5179ec){var _0x335ca8=[];if(_[_0x816f('0x64')](_0x5179ec)){_0x335ca8=_[_0x816f('0x3f')](_0x16bef5,function(_0x892bf3){if(_0x892bf3['role']!=='agent'){return _0x892bf3;}});return _0x335ca8;}else{for(var _0x549eb6=0x0;_0x549eb6<_0x16bef5[_0x816f('0x36')];_0x549eb6++){var _0x3c5742=_0x16bef5[_0x549eb6];if(_0x3c5742[_0x816f('0x58')]===_0x816f('0x56')){var _0x42ab1d=_['find'](_0x5179ec,function(_0x13ba12){return _0x13ba12[_0x816f('0x65')]===_0x3c5742['id'];});if(_0x42ab1d)_0x335ca8[_0x816f('0x66')](_0x3c5742);}else{_0x335ca8['push'](_0x3c5742);}}return _0x335ca8;}});}else{return _0x16bef5;}}else{var _0x21ede5=_[_0x816f('0x3f')](_0x16bef5,function(_0x32bbcc){if(_0x32bbcc[_0x816f('0x58')]!==_0x816f('0x56')){return _0x32bbcc;}});return _0x21ede5;}});}else{return _0x16bef5;}}})['then'](function(_0x572ea7){var _0x27600c=[];if(_0x572ea7){_0xbc4bc8=_0x572ea7;for(var _0x523a69=0x0;_0x523a69<_0x572ea7['length'];_0x523a69+=0x1){_0xbc4bc8[_0x523a69]['messages']=[];_0x27600c[_0x816f('0x66')](db[_0x816f('0x2b')][_0x816f('0x48')]({'where':{'FromId':[_0x582f17[_0x816f('0x5d')]['id'],_0x572ea7[_0x523a69]['id']],'ToId':[_0x582f17['user']['id'],_0x572ea7[_0x523a69]['id']],'ChatGroupId':null},'attributes':['id',_0x816f('0x51'),_0x816f('0x67'),_0x816f('0x68'),_0x816f('0x69'),_0x816f('0x4a')],'order':qs['sort'](_0x816f('0x6a')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x572ea7[_0x523a69])));}return BPromise[_0x816f('0x6b')](_0x27600c);}return[];})[_0x816f('0x25')](function(_0xdcd8de){return{'rows':_0xdcd8de,'count':_0xdcd8de[_0x816f('0x36')]};})[_0x816f('0x25')](respondWithResult(_0x4d68b7,null))[_0x816f('0x46')](handleError(_0x4d68b7,null));};
\ No newline at end of file
index 7d2d9b8..25fc434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1b1=['hook','events','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x4f2cbc,_0x5e347e){var _0x53b16d=function(_0x1d470e){while(--_0x1d470e){_0x4f2cbc['push'](_0x4f2cbc['shift']());}};_0x53b16d(++_0x5e347e);}(_0xf1b1,0x173));var _0x1f1b=function(_0x303862,_0x20b5ab){_0x303862=_0x303862-0x0;var _0xe6f228=_0xf1b1[_0x303862];return _0xe6f228;};'use strict';var EventEmitter=require(_0x1f1b('0x0'));var ChatInternalMessage=require(_0x1f1b('0x1'))['db'][_0x1f1b('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x1f1b('0x3')](0x0);var events={'afterCreate':_0x1f1b('0x4'),'afterUpdate':_0x1f1b('0x5'),'afterDestroy':_0x1f1b('0x6')};function emitEvent(_0x4ce93d){return function(_0x3d8b40,_0x5dd056,_0x2fc84b){ChatInternalMessageEvents[_0x1f1b('0x7')](_0x4ce93d+':'+_0x3d8b40['id'],_0x3d8b40);ChatInternalMessageEvents['emit'](_0x4ce93d,_0x3d8b40);_0x2fc84b(null);};}for(var e in events){if(events[_0x1f1b('0x8')](e)){var event=events[e];ChatInternalMessage[_0x1f1b('0x9')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x2f65=['save','update','emit','hasOwnProperty','exports','../../mysqldb','ChatInternalMessage','setMaxListeners'];(function(_0x4b0a5a,_0x49f7ab){var _0x12d259=function(_0x3cc158){while(--_0x3cc158){_0x4b0a5a['push'](_0x4b0a5a['shift']());}};_0x12d259(++_0x49f7ab);}(_0x2f65,0xcd));var _0x52f6=function(_0x2d3488,_0x59d1fd){_0x2d3488=_0x2d3488-0x0;var _0x40c164=_0x2f65[_0x2d3488];return _0x40c164;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x52f6('0x0'))['db'][_0x52f6('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x52f6('0x2')](0x0);var events={'afterCreate':_0x52f6('0x3'),'afterUpdate':_0x52f6('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1ab633){return function(_0x541b96,_0x5bd7fb,_0xed5f9c){ChatInternalMessageEvents[_0x52f6('0x5')](_0x1ab633+':'+_0x541b96['id'],_0x541b96);ChatInternalMessageEvents[_0x52f6('0x5')](_0x1ab633,_0x541b96);_0xed5f9c(null);};}for(var e in events){if(events[_0x52f6('0x6')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x52f6('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
index 33fe5ba..7f01e02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x250e=['../../config/logger','api','moment','bluebird','request-promise','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x2e3ce4,_0x439e5d){var _0x52e93e=function(_0xb2d9bb){while(--_0xb2d9bb){_0x2e3ce4['push'](_0x2e3ce4['shift']());}};_0x52e93e(++_0x439e5d);}(_0x250e,0x15f));var _0xe250=function(_0x1cd706,_0x3d4861){_0x1cd706=_0x1cd706-0x0;var _0xff6a27=_0x250e[_0x1cd706];return _0xff6a27;};'use strict';var _=require(_0xe250('0x0'));var util=require('util');var logger=require(_0xe250('0x1'))(_0xe250('0x2'));var moment=require(_0xe250('0x3'));var BPromise=require(_0xe250('0x4'));var rp=require(_0xe250('0x5'));var attributes=require('./chatInternalMessage.attributes');module['exports']=function(_0x528d63,_0x4c06c3){return _0x528d63[_0xe250('0x6')](_0xe250('0x7'),attributes,{'tableName':_0xe250('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe250('0x9'),'collate':_0xe250('0xa')});};
\ No newline at end of file
+var _0x049c=['request-promise','./chatInternalMessage.attributes','exports','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x9714c8,_0x5020b5){var _0xf4e3f8=function(_0x28bb39){while(--_0x28bb39){_0x9714c8['push'](_0x9714c8['shift']());}};_0xf4e3f8(++_0x5020b5);}(_0x049c,0xae));var _0xc049=function(_0x2bd687,_0x29a9d7){_0x2bd687=_0x2bd687-0x0;var _0x42f8eb=_0x049c[_0x2bd687];return _0x42f8eb;};'use strict';var _=require(_0xc049('0x0'));var util=require(_0xc049('0x1'));var logger=require(_0xc049('0x2'))(_0xc049('0x3'));var moment=require(_0xc049('0x4'));var BPromise=require(_0xc049('0x5'));var rp=require(_0xc049('0x6'));var attributes=require(_0xc049('0x7'));module[_0xc049('0x8')]=function(_0x44b3ee,_0x310558){return _0x44b3ee['define'](_0xc049('0x9'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc049('0xa'),'collate':_0xc049('0xb')});};
\ No newline at end of file
index 10cdaa0..c68319f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73da=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','code','error','message'];(function(_0x197185,_0x251145){var _0x2c8af1=function(_0x1dbcfd){while(--_0x1dbcfd){_0x197185['push'](_0x197185['shift']());}};_0x2c8af1(++_0x251145);}(_0x73da,0x136));var _0xa73d=function(_0x3cafb8,_0x32860e){_0x3cafb8=_0x3cafb8-0x0;var _0x4b7f85=_0x73da[_0x3cafb8];return _0x4b7f85;};'use strict';var _=require(_0xa73d('0x0'));var util=require(_0xa73d('0x1'));var moment=require(_0xa73d('0x2'));var BPromise=require(_0xa73d('0x3'));var rs=require(_0xa73d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa73d('0x5'))['db'];var utils=require(_0xa73d('0x6'));var logger=require('../../config/logger')(_0xa73d('0x7'));var config=require(_0xa73d('0x8'));var jayson=require(_0xa73d('0x9'));var client=jayson[_0xa73d('0xa')]['http']({'port':0x232a});config['redis']=_[_0xa73d('0xb')](config[_0xa73d('0xc')],{'host':_0xa73d('0xd'),'port':0x18eb});var socket=require(_0xa73d('0xe'))(new Redis(config['redis']));require(_0xa73d('0xf'))[_0xa73d('0x10')](socket);function respondWithRpcPromise(_0x5aac96,_0x4e90f7,_0x25b482){return new BPromise(function(_0x107b22,_0x45b828){return client[_0xa73d('0x11')](_0x5aac96,_0x25b482)['then'](function(_0x291807){logger[_0xa73d('0x12')](_0xa73d('0x13'),_0x4e90f7,_0xa73d('0x14'));logger[_0xa73d('0x15')](_0xa73d('0x16'),_0x4e90f7,_0xa73d('0x14'),JSON['stringify'](_0x291807));if(_0x291807['error']){if(_0x291807['error'][_0xa73d('0x17')]===0x1f4){logger[_0xa73d('0x18')](_0xa73d('0x13'),_0x4e90f7,_0x291807[_0xa73d('0x18')][_0xa73d('0x19')]);return _0x45b828(_0x291807['error']['message']);}logger[_0xa73d('0x18')](_0xa73d('0x13'),_0x4e90f7,_0x291807[_0xa73d('0x18')][_0xa73d('0x19')]);return _0x107b22(_0x291807[_0xa73d('0x18')][_0xa73d('0x19')]);}else{logger[_0xa73d('0x12')](_0xa73d('0x13'),_0x4e90f7,_0xa73d('0x14'));_0x107b22(_0x291807[_0xa73d('0x1a')][_0xa73d('0x19')]);}})[_0xa73d('0x1b')](function(_0x25a4f4){logger[_0xa73d('0x18')](_0xa73d('0x13'),_0x4e90f7,_0x25a4f4);_0x45b828(_0x25a4f4);});});}
\ No newline at end of file
+var _0x7985=['socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis'];(function(_0x2c3807,_0x1e33d3){var _0x456781=function(_0x574ef1){while(--_0x574ef1){_0x2c3807['push'](_0x2c3807['shift']());}};_0x456781(++_0x1e33d3);}(_0x7985,0x15f));var _0x5798=function(_0xa59345,_0x86f01c){_0xa59345=_0xa59345-0x0;var _0x22fc32=_0x7985[_0xa59345];return _0x22fc32;};'use strict';var _=require(_0x5798('0x0'));var util=require(_0x5798('0x1'));var moment=require(_0x5798('0x2'));var BPromise=require(_0x5798('0x3'));var rs=require(_0x5798('0x4'));var fs=require('fs');var Redis=require(_0x5798('0x5'));var db=require(_0x5798('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5798('0x7'))(_0x5798('0x8'));var config=require(_0x5798('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x5798('0xa')][_0x5798('0xb')]({'port':0x232a});config[_0x5798('0xc')]=_['defaults'](config[_0x5798('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x5798('0xd'))(new Redis(config[_0x5798('0xc')]));require(_0x5798('0xe'))[_0x5798('0xf')](socket);function respondWithRpcPromise(_0xa8154a,_0x4f37d4,_0x233d9f){return new BPromise(function(_0x227590,_0x420b85){return client[_0x5798('0x10')](_0xa8154a,_0x233d9f)[_0x5798('0x11')](function(_0x5d171f){logger[_0x5798('0x12')](_0x5798('0x13'),_0x4f37d4,_0x5798('0x14'));logger[_0x5798('0x15')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x4f37d4,_0x5798('0x14'),JSON['stringify'](_0x5d171f));if(_0x5d171f[_0x5798('0x16')]){if(_0x5d171f[_0x5798('0x16')][_0x5798('0x17')]===0x1f4){logger['error'](_0x5798('0x13'),_0x4f37d4,_0x5d171f[_0x5798('0x16')]['message']);return _0x420b85(_0x5d171f['error']['message']);}logger[_0x5798('0x16')](_0x5798('0x13'),_0x4f37d4,_0x5d171f[_0x5798('0x16')]['message']);return _0x227590(_0x5d171f[_0x5798('0x16')][_0x5798('0x18')]);}else{logger['info'](_0x5798('0x13'),_0x4f37d4,_0x5798('0x14'));_0x227590(_0x5d171f[_0x5798('0x19')][_0x5798('0x18')]);}})['catch'](function(_0x15b910){logger['error'](_0x5798('0x13'),_0x4f37d4,_0x15b910);_0x420b85(_0x15b910);});});}
\ No newline at end of file
index 472ffd5..b84609c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2388=['./chatInternalMessage.events','save','update','emit','removeListener','register','chatInternalMessage:'];(function(_0x558899,_0x3c23b2){var _0x1d2349=function(_0x528ac0){while(--_0x528ac0){_0x558899['push'](_0x558899['shift']());}};_0x1d2349(++_0x3c23b2);}(_0x2388,0x12d));var _0x8238=function(_0x16dde4,_0x34e686){_0x16dde4=_0x16dde4-0x0;var _0xfc31de=_0x2388[_0x16dde4];return _0xfc31de;};'use strict';var ChatInternalMessageEvents=require(_0x8238('0x0'));var events=[_0x8238('0x1'),'remove',_0x8238('0x2')];function createListener(_0x18f801,_0x460101){return function(_0x2d547a){_0x460101[_0x8238('0x3')](_0x18f801,_0x2d547a);};}function removeListener(_0x1aa744,_0x3eeae3){return function(){ChatInternalMessageEvents[_0x8238('0x4')](_0x1aa744,_0x3eeae3);};}exports[_0x8238('0x5')]=function(_0x5a0df3){for(var _0x5c6d8c=0x0,_0x470d59=events['length'];_0x5c6d8c<_0x470d59;_0x5c6d8c++){var _0x2b5a29=events[_0x5c6d8c];var _0x56cc1a=createListener(_0x8238('0x6')+_0x2b5a29,_0x5a0df3);ChatInternalMessageEvents['on'](_0x2b5a29,_0x56cc1a);}};
\ No newline at end of file
+var _0xa780=['emit','removeListener','register','save','remove','update'];(function(_0x4c260a,_0x148241){var _0x17bbdd=function(_0x4f3e9f){while(--_0x4f3e9f){_0x4c260a['push'](_0x4c260a['shift']());}};_0x17bbdd(++_0x148241);}(_0xa780,0x153));var _0x0a78=function(_0x3d49aa,_0x88cf19){_0x3d49aa=_0x3d49aa-0x0;var _0x568230=_0xa780[_0x3d49aa];return _0x568230;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0x0a78('0x0'),_0x0a78('0x1'),_0x0a78('0x2')];function createListener(_0x1ff7ee,_0x54db45){return function(_0x10edcc){_0x54db45[_0x0a78('0x3')](_0x1ff7ee,_0x10edcc);};}function removeListener(_0x2294c2,_0x526885){return function(){ChatInternalMessageEvents[_0x0a78('0x4')](_0x2294c2,_0x526885);};}exports[_0x0a78('0x5')]=function(_0x2e3d86){for(var _0x3c240e=0x0,_0x3d2253=events['length'];_0x3c240e<_0x3d2253;_0x3c240e++){var _0x377696=events[_0x3c240e];var _0x56c3cf=createListener('chatInternalMessage:'+_0x377696,_0x2e3d86);ChatInternalMessageEvents['on'](_0x377696,_0x56c3cf);}};
\ No newline at end of file
index 6ecff50..3ac7b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a6=['delete','destroy','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','describe','getUsers','show','post','create'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xc4a6,0x106));var _0x6c4a=function(_0x37ae17,_0x12491a){_0x37ae17=_0x37ae17-0x0;var _0x24b60f=_0xc4a6[_0x37ae17];return _0x24b60f;};'use strict';var multer=require(_0x6c4a('0x0'));var util=require(_0x6c4a('0x1'));var path=require(_0x6c4a('0x2'));var timeout=require(_0x6c4a('0x3'));var express=require(_0x6c4a('0x4'));var router=express['Router']();var auth=require(_0x6c4a('0x5'));var interaction=require(_0x6c4a('0x6'));var config=require(_0x6c4a('0x7'));var controller=require(_0x6c4a('0x8'));router[_0x6c4a('0x9')]('/',auth[_0x6c4a('0xa')](),controller[_0x6c4a('0xb')]);router['get'](_0x6c4a('0xc'),auth[_0x6c4a('0xa')](),controller[_0x6c4a('0xd')]);router[_0x6c4a('0x9')]('/users',auth[_0x6c4a('0xa')](),controller[_0x6c4a('0xe')]);router[_0x6c4a('0x9')]('/:id',auth[_0x6c4a('0xa')](),controller[_0x6c4a('0xf')]);router[_0x6c4a('0x10')]('/',auth[_0x6c4a('0xa')](),controller[_0x6c4a('0x11')]);router['put']('/:id',controller['update']);router[_0x6c4a('0x12')]('/:id',auth[_0x6c4a('0xa')](),controller[_0x6c4a('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xe666=['update','delete','exports','multer','connect-timeout','Router','../../components/interaction/service','./chatInternalMessage.controller','get','isAuthenticated','index','getUsers','/:id','post','put'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe666,0x189));var _0x6e66=function(_0x59166d,_0x415c2d){_0x59166d=_0x59166d-0x0;var _0x2184e1=_0xe666[_0x59166d];return _0x2184e1;};'use strict';var multer=require(_0x6e66('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6e66('0x1'));var express=require('express');var router=express[_0x6e66('0x2')]();var auth=require('../../components/auth/service');var interaction=require(_0x6e66('0x3'));var config=require('../../config/environment');var controller=require(_0x6e66('0x4'));router[_0x6e66('0x5')]('/',auth[_0x6e66('0x6')](),controller[_0x6e66('0x7')]);router[_0x6e66('0x5')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get']('/users',auth[_0x6e66('0x6')](),controller[_0x6e66('0x8')]);router[_0x6e66('0x5')](_0x6e66('0x9'),auth[_0x6e66('0x6')](),controller['show']);router[_0x6e66('0xa')]('/',auth[_0x6e66('0x6')](),controller['create']);router[_0x6e66('0xb')]('/:id',controller[_0x6e66('0xc')]);router[_0x6e66('0xd')](_0x6e66('0x9'),auth[_0x6e66('0x6')](),controller['destroy']);module[_0x6e66('0xe')]=router;
\ No newline at end of file
index 19e4dbd..11b379a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf078=['exports','BOOLEAN','out','DATE','sequelize'];(function(_0xc6c9f6,_0xa4c019){var _0x57047f=function(_0x17c6bd){while(--_0x17c6bd){_0xc6c9f6['push'](_0xc6c9f6['shift']());}};_0x57047f(++_0xa4c019);}(_0xf078,0x108));var _0x8f07=function(_0x141608,_0x3b7505){_0x141608=_0x141608-0x0;var _0x522126=_0xf078[_0x141608];return _0x522126;};'use strict';var Sequelize=require(_0x8f07('0x0'));module[_0x8f07('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x8f07('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x8f07('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x8f07('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x8f07('0x4')]}};
\ No newline at end of file
+var _0x2bd7=['medium','BOOLEAN','ENUM','DATE','sequelize','exports','TEXT'];(function(_0x42f5eb,_0x160eb1){var _0x27afd0=function(_0x48b798){while(--_0x48b798){_0x42f5eb['push'](_0x42f5eb['shift']());}};_0x27afd0(++_0x160eb1);}(_0x2bd7,0x1d9));var _0x72bd=function(_0x5caf9c,_0x573d14){_0x5caf9c=_0x5caf9c-0x0;var _0x502a20=_0x2bd7[_0x5caf9c];return _0x502a20;};'use strict';var Sequelize=require(_0x72bd('0x0'));module[_0x72bd('0x1')]={'body':{'type':Sequelize[_0x72bd('0x2')](_0x72bd('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x72bd('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x72bd('0x5')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x72bd('0x6')]}};
\ No newline at end of file
index 68d2bfb..962770e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['nolimit','limit','order','sort','where','pick','add','day','merge','filter','type','includeAll','include','rows','catch','show','options','find','create','body','params','describe','../../config/logger','chat-interactions','accept','chat','read','readAt','format','UserId','user','Contact','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','stringify','null','AcceptMessage','acceptMessage','manual','SIP/%s','channel','event','EventManager','acceptmessage','parse','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','interface','rejectmessage','html-pdf','zip-dir','fast-json-patch','request-promise','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./chatMessage.socket','register','jayson/promise','client','http','then','info','debug','request\x20sent','error','ChatMessage,\x20%s,\x20%s','message','result','status','end','json','count','offset','set','Content-Range','apply','reject','update','destroy','name','send','index','ChatMessage','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x52e5c6,_0x11b0bc){var _0x38dcd7=function(_0x108ea0){while(--_0x108ea0){_0x52e5c6['push'](_0x52e5c6['shift']());}};_0x38dcd7(++_0x11b0bc);}(_0x430c,0x1a1));var _0xc430=function(_0x4cc492,_0x162c85){_0x4cc492=_0x4cc492-0x0;var _0x1f36b9=_0x430c[_0x4cc492];return _0x1f36b9;};'use strict';var pdf=require(_0xc430('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc430('0x1'));var jsonpatch=require(_0xc430('0x2'));var rp=require(_0xc430('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xc430('0x4'));var sox=require(_0xc430('0x5'));var csv=require('to-csv');var ejs=require(_0xc430('0x6'));var fs=require('fs');var _=require('lodash');var squel=require(_0xc430('0x7'));var crypto=require(_0xc430('0x8'));var jsforce=require(_0xc430('0x9'));var deskjs=require(_0xc430('0xa'));var toCsv=require(_0xc430('0xb'));var querystring=require(_0xc430('0xc'));var Papa=require(_0xc430('0xd'));var Redis=require(_0xc430('0xe'));var qs=require(_0xc430('0xf'));var logger=require('../../config/logger')(_0xc430('0x10'));var utils=require(_0xc430('0x11'));var config=require('../../config/environment');var db=require(_0xc430('0x12'))['db'];config['redis']=_[_0xc430('0x13')](config['redis'],{'host':_0xc430('0x14'),'port':0x18eb});var socket=require(_0xc430('0x15'))(new Redis(config[_0xc430('0x16')]));require(_0xc430('0x17'))[_0xc430('0x18')](socket);var jayson=require(_0xc430('0x19'));var client=jayson[_0xc430('0x1a')]['http']({'port':0x232c});var client9002=jayson['client'][_0xc430('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x10e6a6,_0x17d5c8,_0x2ef538,_0x31d3b7){return new BPromise(function(_0x55cc6c,_0x111598){var _0x4aeb72=_0x31d3b7||client;return _0x4aeb72['request'](_0x10e6a6,_0x2ef538)[_0xc430('0x1c')](function(_0x3d02df){logger[_0xc430('0x1d')]('ChatMessage,\x20%s,\x20%s',_0x17d5c8,'request\x20sent');logger[_0xc430('0x1e')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x17d5c8,_0xc430('0x1f'),JSON['stringify'](_0x3d02df));if(_0x3d02df['error']){if(_0x3d02df[_0xc430('0x20')]['code']===0x1f4){logger[_0xc430('0x20')](_0xc430('0x21'),_0x17d5c8,_0x3d02df[_0xc430('0x20')][_0xc430('0x22')]);return _0x111598(_0x3d02df[_0xc430('0x20')]['message']);}logger[_0xc430('0x20')]('ChatMessage,\x20%s,\x20%s',_0x17d5c8,_0x3d02df['error'][_0xc430('0x22')]);return _0x55cc6c(_0x3d02df[_0xc430('0x20')][_0xc430('0x22')]);}else{logger['info'](_0xc430('0x21'),_0x17d5c8,'request\x20sent');_0x55cc6c(_0x3d02df[_0xc430('0x23')][_0xc430('0x22')]);}})['catch'](function(_0x31b4f1){logger[_0xc430('0x20')]('ChatMessage,\x20%s,\x20%s',_0x17d5c8,_0x31b4f1);_0x111598(_0x31b4f1);});});}function respondWithStatusCode(_0x2f9af4,_0x59c498){_0x59c498=_0x59c498||0xcc;return function(_0x3aa85e){if(_0x3aa85e){return _0x2f9af4['sendStatus'](_0x59c498);}return _0x2f9af4[_0xc430('0x24')](_0x59c498)[_0xc430('0x25')]();};}function respondWithResult(_0x50110b,_0x33433f){_0x33433f=_0x33433f||0xc8;return function(_0x2ec021){if(_0x2ec021){return _0x50110b[_0xc430('0x24')](_0x33433f)[_0xc430('0x26')](_0x2ec021);}};}function respondWithFilteredResult(_0x285407,_0x57cd72){return function(_0x2ccc13){if(_0x2ccc13){var _0x1a9512=_0x2ccc13[_0xc430('0x27')],_0x1c1da9=_0x57cd72['offset'],_0x1591e3=_0x57cd72[_0xc430('0x28')]+_0x57cd72['limit'],_0x542cba;if(_0x1591e3>=_0x1a9512){_0x1591e3=_0x1a9512;_0x542cba=0xc8;}else{_0x542cba=0xce;}_0x285407[_0xc430('0x24')](_0x542cba);return _0x285407[_0xc430('0x29')](_0xc430('0x2a'),_0x1c1da9+'-'+_0x1591e3+'/'+_0x1a9512)[_0xc430('0x26')](_0x2ccc13);}return null;};}function patchUpdates(_0x49977b){return function(_0x17c975){try{jsonpatch[_0xc430('0x2b')](_0x17c975,_0x49977b,!![]);}catch(_0x2bdfc4){return BPromise[_0xc430('0x2c')](_0x2bdfc4);}return _0x17c975['save']();};}function saveUpdates(_0xfcc12c,_0x39c17f){return function(_0x47fe5a){if(_0x47fe5a){return _0x47fe5a[_0xc430('0x2d')](_0xfcc12c)['then'](function(_0x5453a7){return _0x5453a7;});}return null;};}function removeEntity(_0x37d360,_0x973a39){return function(_0x7f7ad9){if(_0x7f7ad9){return _0x7f7ad9[_0xc430('0x2e')]()[_0xc430('0x1c')](function(){_0x37d360[_0xc430('0x24')](0xcc)[_0xc430('0x25')]();});}};}function handleEntityNotFound(_0x25a81d,_0x47da0d){return function(_0x442d20){if(!_0x442d20){_0x25a81d['sendStatus'](0x194);}return _0x442d20;};}function handleError(_0x119bee,_0x43029d){_0x43029d=_0x43029d||0x1f4;return function(_0x3fec7c){logger[_0xc430('0x20')](_0x3fec7c['stack']);if(_0x3fec7c[_0xc430('0x2f')]){delete _0x3fec7c['name'];}_0x119bee['status'](_0x43029d)[_0xc430('0x30')](_0x3fec7c);};}exports[_0xc430('0x31')]=function(_0x521793,_0x5ff73c){var _0x10e589={},_0x104cfa={},_0x20bcdd={'count':0x0,'rows':[]};var _0x2310d3=db[_0xc430('0x32')][_0xc430('0x33')];_0x104cfa[_0xc430('0x34')]=_[_0xc430('0x35')](_0x2310d3);var _0x7e18ec={'dateStart':_0x521793[_0xc430('0x36')][_0xc430('0x37')],'dateEnd':_0x521793[_0xc430('0x36')][_0xc430('0x38')]};delete _0x521793[_0xc430('0x36')]['dateStart'];delete _0x521793[_0xc430('0x36')][_0xc430('0x38')];_0x104cfa[_0xc430('0x36')]=_[_0xc430('0x35')](_0x521793['query']);_0x104cfa[_0xc430('0x39')]=_[_0xc430('0x3a')](_0x104cfa[_0xc430('0x34')],_0x104cfa[_0xc430('0x36')]);_0x10e589[_0xc430('0x3b')]=_[_0xc430('0x3a')](_0x104cfa['model'],qs[_0xc430('0x3c')](_0x521793[_0xc430('0x36')][_0xc430('0x3c')]));_0x10e589[_0xc430('0x3b')]=_0x10e589[_0xc430('0x3b')][_0xc430('0x3d')]?_0x10e589[_0xc430('0x3b')]:_0x104cfa[_0xc430('0x34')];if(!_0x521793[_0xc430('0x36')][_0xc430('0x3e')](_0xc430('0x3f'))){_0x10e589[_0xc430('0x40')]=qs[_0xc430('0x40')](_0x521793[_0xc430('0x36')]['limit']);_0x10e589['offset']=qs['offset'](_0x521793[_0xc430('0x36')][_0xc430('0x28')]);}_0x10e589[_0xc430('0x41')]=qs[_0xc430('0x42')](_0x521793[_0xc430('0x36')][_0xc430('0x42')]);_0x10e589[_0xc430('0x43')]=qs[_0xc430('0x39')](_[_0xc430('0x44')](_0x521793[_0xc430('0x36')],_0x104cfa[_0xc430('0x39')]));if(_0x7e18ec[_0xc430('0x37')]){if(_0x7e18ec[_0xc430('0x38')]){_0x7e18ec[_0xc430('0x38')]=moment(_0x7e18ec[_0xc430('0x38')])[_0xc430('0x45')](0x1,'day');}else{_0x7e18ec[_0xc430('0x38')]=moment(_0x7e18ec[_0xc430('0x37')])[_0xc430('0x45')](0x1,_0xc430('0x46'));}_[_0xc430('0x47')](_0x10e589[_0xc430('0x43')],{'createdAt':{'$gte':_0x7e18ec[_0xc430('0x37')],'$lte':_0x7e18ec[_0xc430('0x38')]}});}if(_0x521793['query'][_0xc430('0x48')]){_0x10e589['where']=_[_0xc430('0x47')](_0x10e589[_0xc430('0x43')],{'$or':_['map'](_0x2310d3,function(_0x5ce31b){if(_0x5ce31b[_0xc430('0x49')]['key']!=='VIRTUAL'){var _0x10db27={};_0x10db27[_0x5ce31b['field']]={'$like':'%'+_0x521793[_0xc430('0x36')][_0xc430('0x48')]+'%'};return _0x10db27;}})});}_0x10e589=_[_0xc430('0x47')]({},_0x10e589,_0x521793['options']);var _0x2ac26c={'where':_0x10e589[_0xc430('0x43')]};return db[_0xc430('0x32')]['count'](_0x2ac26c)[_0xc430('0x1c')](function(_0x3ad75c){_0x20bcdd[_0xc430('0x27')]=_0x3ad75c;if(_0x521793[_0xc430('0x36')][_0xc430('0x4a')]){_0x10e589[_0xc430('0x4b')]=[{'all':!![]}];}return db[_0xc430('0x32')]['findAll'](_0x10e589);})[_0xc430('0x1c')](function(_0x3e49c7){_0x20bcdd[_0xc430('0x4c')]=_0x3e49c7;return _0x20bcdd;})['then'](respondWithFilteredResult(_0x5ff73c,_0x10e589))[_0xc430('0x4d')](handleError(_0x5ff73c,null));};exports[_0xc430('0x4e')]=function(_0x2d064b,_0x36de10){var _0x5b93e1={'raw':!![],'where':{'id':_0x2d064b['params']['id']}},_0x3f4d46={};_0x3f4d46[_0xc430('0x34')]=_[_0xc430('0x35')](db[_0xc430('0x32')][_0xc430('0x33')]);_0x3f4d46[_0xc430('0x36')]=_[_0xc430('0x35')](_0x2d064b['query']);_0x3f4d46[_0xc430('0x39')]=_[_0xc430('0x3a')](_0x3f4d46['model'],_0x3f4d46[_0xc430('0x36')]);_0x5b93e1[_0xc430('0x3b')]=_[_0xc430('0x3a')](_0x3f4d46[_0xc430('0x34')],qs['fields'](_0x2d064b[_0xc430('0x36')]['fields']));_0x5b93e1[_0xc430('0x3b')]=_0x5b93e1[_0xc430('0x3b')][_0xc430('0x3d')]?_0x5b93e1[_0xc430('0x3b')]:_0x3f4d46['model'];if(_0x2d064b[_0xc430('0x36')][_0xc430('0x4a')]){_0x5b93e1['include']=[{'all':!![]}];}_0x5b93e1=_['merge']({},_0x5b93e1,_0x2d064b[_0xc430('0x4f')]);return db[_0xc430('0x32')][_0xc430('0x50')](_0x5b93e1)[_0xc430('0x1c')](handleEntityNotFound(_0x36de10,null))[_0xc430('0x1c')](respondWithResult(_0x36de10,null))[_0xc430('0x4d')](handleError(_0x36de10,null));};exports[_0xc430('0x51')]=function(_0x4db6dc,_0x310aae){return db['ChatMessage'][_0xc430('0x51')](_0x4db6dc[_0xc430('0x52')],{})[_0xc430('0x1c')](respondWithResult(_0x310aae,0xc9))[_0xc430('0x4d')](handleError(_0x310aae,null));};exports[_0xc430('0x2d')]=function(_0x12b6f2,_0x540653){if(_0x12b6f2[_0xc430('0x52')]['id']){delete _0x12b6f2[_0xc430('0x52')]['id'];}return db[_0xc430('0x32')][_0xc430('0x50')]({'where':{'id':_0x12b6f2[_0xc430('0x53')]['id']}})[_0xc430('0x1c')](handleEntityNotFound(_0x540653,null))[_0xc430('0x1c')](saveUpdates(_0x12b6f2['body'],null))[_0xc430('0x1c')](respondWithResult(_0x540653,null))['catch'](handleError(_0x540653,null));};exports[_0xc430('0x2e')]=function(_0x4cc37b,_0x34b9d6){return db[_0xc430('0x32')][_0xc430('0x50')]({'where':{'id':_0x4cc37b[_0xc430('0x53')]['id']}})[_0xc430('0x1c')](handleEntityNotFound(_0x34b9d6,null))[_0xc430('0x1c')](removeEntity(_0x34b9d6,null))['catch'](handleError(_0x34b9d6,null));};exports[_0xc430('0x54')]=function(_0x31fcdd,_0x5c6eeb){return db['ChatMessage'][_0xc430('0x54')]()[_0xc430('0x1c')](respondWithResult(_0x5c6eeb,null))[_0xc430('0x4d')](handleError(_0x5c6eeb,null));};var interaction_log=require(_0xc430('0x55'))(_0xc430('0x56'));exports[_0xc430('0x57')]=function(_0xd91c80,_0x28fa9f,_0x3a558e){var _0x2c0e13={'channel':_0xc430('0x58')};if(_0xd91c80[_0xc430('0x52')]['id']){delete _0xd91c80['body']['id'];}_0xd91c80['body'][_0xc430('0x59')]=!![];_0xd91c80['body'][_0xc430('0x5a')]=moment()[_0xc430('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0xd91c80[_0xc430('0x52')]['UserId']=_0xd91c80['body'][_0xc430('0x5c')]||_0xd91c80[_0xc430('0x5d')]['id'];return db['ChatMessage'][_0xc430('0x50')]({'where':{'id':_0xd91c80['params']['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':_0xc430('0x5e')}]})[_0xc430('0x1c')](handleEntityNotFound(_0x28fa9f,null))[_0xc430('0x1c')](saveUpdates(_0xd91c80[_0xc430('0x52')],null))['then'](function(_0x155df9){if(_0x155df9){_0x2c0e13[_0xc430('0x22')]=_0x155df9[_0xc430('0x5f')]({'plain':!![]});return db[_0xc430('0x60')]['find']({'where':{'id':_0x155df9[_0xc430('0x61')]}});}return null;})[_0xc430('0x1c')](handleEntityNotFound(_0x28fa9f,null))[_0xc430('0x1c')](function(_0x304d1a){if(_0x304d1a){return _0x304d1a[_0xc430('0x2d')]({'UserId':_0xd91c80[_0xc430('0x52')][_0xc430('0x5c')],'read1stAt':_[_0xc430('0x62')](_0x304d1a[_0xc430('0x63')])?moment()[_0xc430('0x5b')](_0xc430('0x64')):undefined});}return null;})['then'](function(_0x4f390c){if(_0x4f390c){_0x2c0e13['interaction']=_0x4f390c[_0xc430('0x5f')]({'plain':!![]});interaction_log[_0xc430('0x1d')](_0xc430('0x65'),_0xd91c80['user']['id'],_0xd91c80['user'][_0xc430('0x2f')],_0xd91c80[_0xc430('0x5d')][_0xc430('0x66')],_0x2c0e13[_0xc430('0x67')]['id'],_0xd91c80[_0xc430('0x52')]?JSON[_0xc430('0x68')](_0xd91c80[_0xc430('0x52')]):_0xc430('0x69'));return respondWithRpcPromise(_0xc430('0x6a'),_0xc430('0x6b'),_0x2c0e13);}return null;})['then'](function(_0x6debfb){if(_0x6debfb){if(_0xd91c80[_0xc430('0x52')][_0xc430('0x6c')]){_0x2c0e13['message']['interface']=util['format'](_0xc430('0x6d'),_0xd91c80[_0xc430('0x5d')][_0xc430('0x2f')]);_0x2c0e13[_0xc430('0x22')]['channel']=_0x2c0e13[_0xc430('0x6e')];_0x2c0e13[_0xc430('0x22')][_0xc430('0x6f')]='accept';return respondWithRpcPromise(_0xc430('0x70'),'EventManager',{'event':_0xc430('0x71'),'message':_[_0xc430('0x47')](_0x2c0e13[_0xc430('0x22')],JSON[_0xc430('0x72')](_0x2c0e13[_0xc430('0x67')]['formData']))},client9002)[_0xc430('0x1c')](function(){return _0x2c0e13;});}return _0x2c0e13;}return null;})[_0xc430('0x1c')](respondWithResult(_0x28fa9f,null))[_0xc430('0x4d')](handleError(_0x28fa9f,null));};var interaction_log=require(_0xc430('0x55'))('chat-interactions');exports['reject']=function(_0x3e3932,_0x5eaed5,_0x543bf3){var _0xb73732={'agent':{},'channel':_0xc430('0x58')};if(_0x3e3932['body']['id']){delete _0x3e3932[_0xc430('0x52')]['id'];}_0x3e3932[_0xc430('0x52')][_0xc430('0x5c')]=_0x3e3932[_0xc430('0x52')][_0xc430('0x5c')]||_0x3e3932[_0xc430('0x5d')]['id'];_0xb73732['agent']['id']=_0x3e3932[_0xc430('0x52')][_0xc430('0x5c')];return db[_0xc430('0x32')][_0xc430('0x50')]({'where':{'id':_0x3e3932['params']['id'],'UserId':null}})[_0xc430('0x1c')](handleEntityNotFound(_0x5eaed5,null))[_0xc430('0x1c')](function(_0x2c49df){if(_0x2c49df){_0xb73732['message']=_0x2c49df[_0xc430('0x5f')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x2c49df[_0xc430('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x5eaed5,null))[_0xc430('0x1c')](function(_0x47e1c1){if(_0x47e1c1){_0xb73732[_0xc430('0x67')]=_0x47e1c1[_0xc430('0x5f')]({'plain':!![]});interaction_log['info'](_0xc430('0x73'),_0x3e3932[_0xc430('0x5d')]['id'],_0x3e3932['user'][_0xc430('0x2f')],_0x3e3932[_0xc430('0x5d')]['role'],_0xb73732[_0xc430('0x67')]['id'],_0x3e3932[_0xc430('0x52')]?JSON['stringify'](_0x3e3932[_0xc430('0x52')]):_0xc430('0x69'));return respondWithRpcPromise(_0xc430('0x74'),_0xc430('0x75'),_0xb73732);}return null;})[_0xc430('0x1c')](function(_0x40bfcf){if(_0x40bfcf){_0x40bfcf[_0xc430('0x22')][_0xc430('0x76')]=util[_0xc430('0x5b')](_0xc430('0x6d'),_0x3e3932[_0xc430('0x5d')]['name']);_0x40bfcf[_0xc430('0x22')][_0xc430('0x6e')]=_0xb73732[_0xc430('0x6e')];_0x40bfcf['message']['event']=_0xc430('0x2c');respondWithRpcPromise('EventManager',_0xc430('0x70'),{'event':_0xc430('0x77'),'message':_0x40bfcf['message']},client9002);return _0xb73732;}return null;})['then'](respondWithResult(_0x5eaed5,null))[_0xc430('0x4d')](handleError(_0x5eaed5,null));};
\ No newline at end of file
+var _0x7278=['desk.js','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatMessage.socket','register','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','error','code','message','catch','sendStatus','status','end','json','count','offset','Content-Range','apply','reject','save','update','destroy','stack','name','send','ChatMessage','rawAttributes','model','keys','query','dateEnd','dateStart','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','add','day','merge','filter','type','key','VIRTUAL','field','options','includeAll','show','params','include','find','create','body','describe','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','Contact','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','stringify','null','AcceptMessage','acceptMessage','manual','interface','SIP/%s','channel','event','EventManager','parse','chat-interactions','agent','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce'];(function(_0x57a292,_0x8a4ea4){var _0x1c30f8=function(_0x210019){while(--_0x210019){_0x57a292['push'](_0x57a292['shift']());}};_0x1c30f8(++_0x8a4ea4);}(_0x7278,0x161));var _0x8727=function(_0x3026e0,_0x347052){_0x3026e0=_0x3026e0-0x0;var _0xf19758=_0x7278[_0x3026e0];return _0xf19758;};'use strict';var pdf=require(_0x8727('0x0'));var emlformat=require(_0x8727('0x1'));var rimraf=require(_0x8727('0x2'));var zipdir=require(_0x8727('0x3'));var jsonpatch=require(_0x8727('0x4'));var rp=require('request-promise');var moment=require(_0x8727('0x5'));var BPromise=require(_0x8727('0x6'));var Mustache=require(_0x8727('0x7'));var util=require(_0x8727('0x8'));var path=require(_0x8727('0x9'));var sox=require(_0x8727('0xa'));var csv=require(_0x8727('0xb'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x8727('0xc'));var squel=require(_0x8727('0xd'));var crypto=require(_0x8727('0xe'));var jsforce=require(_0x8727('0xf'));var deskjs=require(_0x8727('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8727('0x11'));var qs=require(_0x8727('0x12'));var logger=require(_0x8727('0x13'))(_0x8727('0x14'));var utils=require(_0x8727('0x15'));var config=require(_0x8727('0x16'));var db=require(_0x8727('0x17'))['db'];config[_0x8727('0x18')]=_['defaults'](config[_0x8727('0x18')],{'host':_0x8727('0x19'),'port':0x18eb});var socket=require(_0x8727('0x1a'))(new Redis(config['redis']));require(_0x8727('0x1b'))[_0x8727('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x8727('0x1d')][_0x8727('0x1e')]({'port':0x232c});var client9002=jayson[_0x8727('0x1d')][_0x8727('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x2ea789,_0x3d84db,_0x3865e9,_0x1916f7){return new BPromise(function(_0x11c828,_0x88857c){var _0x4842a0=_0x1916f7||client;return _0x4842a0[_0x8727('0x1f')](_0x2ea789,_0x3865e9)[_0x8727('0x20')](function(_0x16d1b7){logger[_0x8727('0x21')](_0x8727('0x22'),_0x3d84db,_0x8727('0x23'));logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x3d84db,_0x8727('0x23'),JSON['stringify'](_0x16d1b7));if(_0x16d1b7[_0x8727('0x24')]){if(_0x16d1b7[_0x8727('0x24')][_0x8727('0x25')]===0x1f4){logger[_0x8727('0x24')](_0x8727('0x22'),_0x3d84db,_0x16d1b7['error'][_0x8727('0x26')]);return _0x88857c(_0x16d1b7[_0x8727('0x24')][_0x8727('0x26')]);}logger[_0x8727('0x24')](_0x8727('0x22'),_0x3d84db,_0x16d1b7[_0x8727('0x24')][_0x8727('0x26')]);return _0x11c828(_0x16d1b7[_0x8727('0x24')][_0x8727('0x26')]);}else{logger[_0x8727('0x21')](_0x8727('0x22'),_0x3d84db,_0x8727('0x23'));_0x11c828(_0x16d1b7['result'][_0x8727('0x26')]);}})[_0x8727('0x27')](function(_0x4c468d){logger['error'](_0x8727('0x22'),_0x3d84db,_0x4c468d);_0x88857c(_0x4c468d);});});}function respondWithStatusCode(_0x318684,_0x15e8bf){_0x15e8bf=_0x15e8bf||0xcc;return function(_0x5de6fa){if(_0x5de6fa){return _0x318684[_0x8727('0x28')](_0x15e8bf);}return _0x318684[_0x8727('0x29')](_0x15e8bf)[_0x8727('0x2a')]();};}function respondWithResult(_0x440ff5,_0x2c8cd5){_0x2c8cd5=_0x2c8cd5||0xc8;return function(_0xf33348){if(_0xf33348){return _0x440ff5[_0x8727('0x29')](_0x2c8cd5)[_0x8727('0x2b')](_0xf33348);}};}function respondWithFilteredResult(_0x5d03f2,_0x243f15){return function(_0x307055){if(_0x307055){var _0x54034d=_0x307055[_0x8727('0x2c')],_0x23325f=_0x243f15[_0x8727('0x2d')],_0x163989=_0x243f15[_0x8727('0x2d')]+_0x243f15['limit'],_0x3ecd6a;if(_0x163989>=_0x54034d){_0x163989=_0x54034d;_0x3ecd6a=0xc8;}else{_0x3ecd6a=0xce;}_0x5d03f2[_0x8727('0x29')](_0x3ecd6a);return _0x5d03f2['set'](_0x8727('0x2e'),_0x23325f+'-'+_0x163989+'/'+_0x54034d)['json'](_0x307055);}return null;};}function patchUpdates(_0x44ed83){return function(_0x391d60){try{jsonpatch[_0x8727('0x2f')](_0x391d60,_0x44ed83,!![]);}catch(_0x2322ab){return BPromise[_0x8727('0x30')](_0x2322ab);}return _0x391d60[_0x8727('0x31')]();};}function saveUpdates(_0x382be3,_0x4b6162){return function(_0x3ac06a){if(_0x3ac06a){return _0x3ac06a[_0x8727('0x32')](_0x382be3)[_0x8727('0x20')](function(_0x1b047a){return _0x1b047a;});}return null;};}function removeEntity(_0x3374e8,_0x180674){return function(_0x1626ff){if(_0x1626ff){return _0x1626ff[_0x8727('0x33')]()[_0x8727('0x20')](function(){_0x3374e8[_0x8727('0x29')](0xcc)[_0x8727('0x2a')]();});}};}function handleEntityNotFound(_0x184905,_0x54bff3){return function(_0x4a0467){if(!_0x4a0467){_0x184905[_0x8727('0x28')](0x194);}return _0x4a0467;};}function handleError(_0x3fac76,_0x38a61f){_0x38a61f=_0x38a61f||0x1f4;return function(_0x477ae2){logger['error'](_0x477ae2[_0x8727('0x34')]);if(_0x477ae2[_0x8727('0x35')]){delete _0x477ae2[_0x8727('0x35')];}_0x3fac76[_0x8727('0x29')](_0x38a61f)[_0x8727('0x36')](_0x477ae2);};}exports['index']=function(_0x30212d,_0x3c1007){var _0x8e9de8={},_0x1b0e88={},_0x25a2f8={'count':0x0,'rows':[]};var _0x3b1022=db[_0x8727('0x37')][_0x8727('0x38')];_0x1b0e88[_0x8727('0x39')]=_[_0x8727('0x3a')](_0x3b1022);var _0x396f12={'dateStart':_0x30212d[_0x8727('0x3b')]['dateStart'],'dateEnd':_0x30212d[_0x8727('0x3b')][_0x8727('0x3c')]};delete _0x30212d[_0x8727('0x3b')][_0x8727('0x3d')];delete _0x30212d[_0x8727('0x3b')][_0x8727('0x3c')];_0x1b0e88[_0x8727('0x3b')]=_[_0x8727('0x3a')](_0x30212d[_0x8727('0x3b')]);_0x1b0e88[_0x8727('0x3e')]=_[_0x8727('0x3f')](_0x1b0e88[_0x8727('0x39')],_0x1b0e88[_0x8727('0x3b')]);_0x8e9de8[_0x8727('0x40')]=_['intersection'](_0x1b0e88[_0x8727('0x39')],qs[_0x8727('0x41')](_0x30212d[_0x8727('0x3b')]['fields']));_0x8e9de8[_0x8727('0x40')]=_0x8e9de8[_0x8727('0x40')][_0x8727('0x42')]?_0x8e9de8[_0x8727('0x40')]:_0x1b0e88['model'];if(!_0x30212d[_0x8727('0x3b')][_0x8727('0x43')](_0x8727('0x44'))){_0x8e9de8[_0x8727('0x45')]=qs[_0x8727('0x45')](_0x30212d[_0x8727('0x3b')][_0x8727('0x45')]);_0x8e9de8[_0x8727('0x2d')]=qs[_0x8727('0x2d')](_0x30212d[_0x8727('0x3b')]['offset']);}_0x8e9de8[_0x8727('0x46')]=qs[_0x8727('0x47')](_0x30212d[_0x8727('0x3b')][_0x8727('0x47')]);_0x8e9de8[_0x8727('0x48')]=qs['filters'](_[_0x8727('0x49')](_0x30212d[_0x8727('0x3b')],_0x1b0e88[_0x8727('0x3e')]));if(_0x396f12['dateStart']){if(_0x396f12[_0x8727('0x3c')]){_0x396f12[_0x8727('0x3c')]=moment(_0x396f12[_0x8727('0x3c')])[_0x8727('0x4a')](0x1,_0x8727('0x4b'));}else{_0x396f12[_0x8727('0x3c')]=moment(_0x396f12['dateStart'])[_0x8727('0x4a')](0x1,_0x8727('0x4b'));}_[_0x8727('0x4c')](_0x8e9de8['where'],{'createdAt':{'$gte':_0x396f12[_0x8727('0x3d')],'$lte':_0x396f12[_0x8727('0x3c')]}});}if(_0x30212d[_0x8727('0x3b')][_0x8727('0x4d')]){_0x8e9de8[_0x8727('0x48')]=_[_0x8727('0x4c')](_0x8e9de8[_0x8727('0x48')],{'$or':_['map'](_0x3b1022,function(_0x24196a){if(_0x24196a[_0x8727('0x4e')][_0x8727('0x4f')]!==_0x8727('0x50')){var _0x152de6={};_0x152de6[_0x24196a[_0x8727('0x51')]]={'$like':'%'+_0x30212d[_0x8727('0x3b')]['filter']+'%'};return _0x152de6;}})});}_0x8e9de8=_[_0x8727('0x4c')]({},_0x8e9de8,_0x30212d[_0x8727('0x52')]);var _0x3aa0fd={'where':_0x8e9de8['where']};return db[_0x8727('0x37')][_0x8727('0x2c')](_0x3aa0fd)[_0x8727('0x20')](function(_0x4367e8){_0x25a2f8[_0x8727('0x2c')]=_0x4367e8;if(_0x30212d[_0x8727('0x3b')][_0x8727('0x53')]){_0x8e9de8['include']=[{'all':!![]}];}return db[_0x8727('0x37')]['findAll'](_0x8e9de8);})[_0x8727('0x20')](function(_0x19a0ab){_0x25a2f8['rows']=_0x19a0ab;return _0x25a2f8;})[_0x8727('0x20')](respondWithFilteredResult(_0x3c1007,_0x8e9de8))[_0x8727('0x27')](handleError(_0x3c1007,null));};exports[_0x8727('0x54')]=function(_0x5436a3,_0x496966){var _0x13f70f={'raw':!![],'where':{'id':_0x5436a3[_0x8727('0x55')]['id']}},_0x1486ca={};_0x1486ca['model']=_[_0x8727('0x3a')](db[_0x8727('0x37')][_0x8727('0x38')]);_0x1486ca[_0x8727('0x3b')]=_[_0x8727('0x3a')](_0x5436a3[_0x8727('0x3b')]);_0x1486ca[_0x8727('0x3e')]=_[_0x8727('0x3f')](_0x1486ca['model'],_0x1486ca[_0x8727('0x3b')]);_0x13f70f[_0x8727('0x40')]=_[_0x8727('0x3f')](_0x1486ca[_0x8727('0x39')],qs['fields'](_0x5436a3[_0x8727('0x3b')][_0x8727('0x41')]));_0x13f70f[_0x8727('0x40')]=_0x13f70f[_0x8727('0x40')][_0x8727('0x42')]?_0x13f70f[_0x8727('0x40')]:_0x1486ca[_0x8727('0x39')];if(_0x5436a3[_0x8727('0x3b')]['includeAll']){_0x13f70f[_0x8727('0x56')]=[{'all':!![]}];}_0x13f70f=_[_0x8727('0x4c')]({},_0x13f70f,_0x5436a3[_0x8727('0x52')]);return db['ChatMessage'][_0x8727('0x57')](_0x13f70f)['then'](handleEntityNotFound(_0x496966,null))[_0x8727('0x20')](respondWithResult(_0x496966,null))['catch'](handleError(_0x496966,null));};exports[_0x8727('0x58')]=function(_0x273bd6,_0x5f4908){return db[_0x8727('0x37')][_0x8727('0x58')](_0x273bd6[_0x8727('0x59')],{})['then'](respondWithResult(_0x5f4908,0xc9))['catch'](handleError(_0x5f4908,null));};exports['update']=function(_0x5c4240,_0x3ac29a){if(_0x5c4240[_0x8727('0x59')]['id']){delete _0x5c4240[_0x8727('0x59')]['id'];}return db[_0x8727('0x37')][_0x8727('0x57')]({'where':{'id':_0x5c4240['params']['id']}})['then'](handleEntityNotFound(_0x3ac29a,null))[_0x8727('0x20')](saveUpdates(_0x5c4240[_0x8727('0x59')],null))[_0x8727('0x20')](respondWithResult(_0x3ac29a,null))[_0x8727('0x27')](handleError(_0x3ac29a,null));};exports[_0x8727('0x33')]=function(_0x11b2cf,_0x2a7586){return db[_0x8727('0x37')][_0x8727('0x57')]({'where':{'id':_0x11b2cf[_0x8727('0x55')]['id']}})[_0x8727('0x20')](handleEntityNotFound(_0x2a7586,null))[_0x8727('0x20')](removeEntity(_0x2a7586,null))['catch'](handleError(_0x2a7586,null));};exports[_0x8727('0x5a')]=function(_0x14fe27,_0x5af1b2){return db['ChatMessage']['describe']()['then'](respondWithResult(_0x5af1b2,null))[_0x8727('0x27')](handleError(_0x5af1b2,null));};var interaction_log=require(_0x8727('0x13'))('chat-interactions');exports[_0x8727('0x5b')]=function(_0x39d962,_0x104e96,_0x28d5fa){var _0x16a11b={'channel':'chat'};if(_0x39d962[_0x8727('0x59')]['id']){delete _0x39d962[_0x8727('0x59')]['id'];}_0x39d962[_0x8727('0x59')][_0x8727('0x5c')]=!![];_0x39d962[_0x8727('0x59')][_0x8727('0x5d')]=moment()[_0x8727('0x5e')](_0x8727('0x5f'));_0x39d962[_0x8727('0x59')]['UserId']=_0x39d962[_0x8727('0x59')][_0x8727('0x60')]||_0x39d962[_0x8727('0x61')]['id'];return db['ChatMessage'][_0x8727('0x57')]({'where':{'id':_0x39d962['params']['id'],'UserId':null},'include':[{'model':db[_0x8727('0x62')],'as':_0x8727('0x63')}]})[_0x8727('0x20')](handleEntityNotFound(_0x104e96,null))[_0x8727('0x20')](saveUpdates(_0x39d962[_0x8727('0x59')],null))['then'](function(_0x53dffb){if(_0x53dffb){_0x16a11b[_0x8727('0x26')]=_0x53dffb[_0x8727('0x64')]({'plain':!![]});return db[_0x8727('0x65')][_0x8727('0x57')]({'where':{'id':_0x53dffb[_0x8727('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x104e96,null))[_0x8727('0x20')](function(_0x56a275){if(_0x56a275){return _0x56a275[_0x8727('0x32')]({'UserId':_0x39d962['body']['UserId'],'read1stAt':_[_0x8727('0x67')](_0x56a275[_0x8727('0x68')])?moment()[_0x8727('0x5e')](_0x8727('0x5f')):undefined});}return null;})[_0x8727('0x20')](function(_0x5c0c1b){if(_0x5c0c1b){_0x16a11b['interaction']=_0x5c0c1b[_0x8727('0x64')]({'plain':!![]});interaction_log[_0x8727('0x21')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x39d962[_0x8727('0x61')]['id'],_0x39d962[_0x8727('0x61')][_0x8727('0x35')],_0x39d962[_0x8727('0x61')]['role'],_0x16a11b[_0x8727('0x69')]['id'],_0x39d962[_0x8727('0x59')]?JSON[_0x8727('0x6a')](_0x39d962[_0x8727('0x59')]):_0x8727('0x6b'));return respondWithRpcPromise(_0x8727('0x6c'),_0x8727('0x6d'),_0x16a11b);}return null;})['then'](function(_0x52bf43){if(_0x52bf43){if(_0x39d962['body'][_0x8727('0x6e')]){_0x16a11b[_0x8727('0x26')][_0x8727('0x6f')]=util[_0x8727('0x5e')](_0x8727('0x70'),_0x39d962[_0x8727('0x61')][_0x8727('0x35')]);_0x16a11b[_0x8727('0x26')][_0x8727('0x71')]=_0x16a11b[_0x8727('0x71')];_0x16a11b[_0x8727('0x26')][_0x8727('0x72')]=_0x8727('0x5b');return respondWithRpcPromise(_0x8727('0x73'),_0x8727('0x73'),{'event':'acceptmessage','message':_['merge'](_0x16a11b['message'],JSON[_0x8727('0x74')](_0x16a11b[_0x8727('0x69')]['formData']))},client9002)[_0x8727('0x20')](function(){return _0x16a11b;});}return _0x16a11b;}return null;})[_0x8727('0x20')](respondWithResult(_0x104e96,null))[_0x8727('0x27')](handleError(_0x104e96,null));};var interaction_log=require('../../config/logger')(_0x8727('0x75'));exports['reject']=function(_0x14f46d,_0x1b9a1c,_0x223f88){var _0x4b1205={'agent':{},'channel':'chat'};if(_0x14f46d[_0x8727('0x59')]['id']){delete _0x14f46d[_0x8727('0x59')]['id'];}_0x14f46d[_0x8727('0x59')][_0x8727('0x60')]=_0x14f46d[_0x8727('0x59')][_0x8727('0x60')]||_0x14f46d[_0x8727('0x61')]['id'];_0x4b1205[_0x8727('0x76')]['id']=_0x14f46d['body']['UserId'];return db['ChatMessage'][_0x8727('0x57')]({'where':{'id':_0x14f46d[_0x8727('0x55')]['id'],'UserId':null}})[_0x8727('0x20')](handleEntityNotFound(_0x1b9a1c,null))['then'](function(_0x1da476){if(_0x1da476){_0x4b1205[_0x8727('0x26')]=_0x1da476['get']({'plain':!![]});return db[_0x8727('0x65')][_0x8727('0x57')]({'where':{'id':_0x1da476[_0x8727('0x66')]}});}return null;})[_0x8727('0x20')](handleEntityNotFound(_0x1b9a1c,null))[_0x8727('0x20')](function(_0x3ed2dc){if(_0x3ed2dc){_0x4b1205[_0x8727('0x69')]=_0x3ed2dc[_0x8727('0x64')]({'plain':!![]});interaction_log[_0x8727('0x21')](_0x8727('0x77'),_0x14f46d['user']['id'],_0x14f46d[_0x8727('0x61')][_0x8727('0x35')],_0x14f46d[_0x8727('0x61')][_0x8727('0x78')],_0x4b1205[_0x8727('0x69')]['id'],_0x14f46d[_0x8727('0x59')]?JSON[_0x8727('0x6a')](_0x14f46d[_0x8727('0x59')]):_0x8727('0x6b'));return respondWithRpcPromise(_0x8727('0x79'),_0x8727('0x7a'),_0x4b1205);}return null;})[_0x8727('0x20')](function(_0x53ff95){if(_0x53ff95){_0x53ff95[_0x8727('0x26')][_0x8727('0x6f')]=util['format']('SIP/%s',_0x14f46d[_0x8727('0x61')][_0x8727('0x35')]);_0x53ff95[_0x8727('0x26')][_0x8727('0x71')]=_0x4b1205[_0x8727('0x71')];_0x53ff95['message'][_0x8727('0x72')]=_0x8727('0x30');respondWithRpcPromise('EventManager',_0x8727('0x73'),{'event':'rejectmessage','message':_0x53ff95[_0x8727('0x26')]},client9002);return _0x4b1205;}return null;})[_0x8727('0x20')](respondWithResult(_0x1b9a1c,null))['catch'](handleError(_0x1b9a1c,null));};
\ No newline at end of file
index f215f6c..26c78b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20cb=['save','remove','emit','exports','../../mysqldb','ChatMessage','setMaxListeners'];(function(_0x35f068,_0x40755a){var _0x8f257=function(_0x4660fb){while(--_0x4660fb){_0x35f068['push'](_0x35f068['shift']());}};_0x8f257(++_0x40755a);}(_0x20cb,0x12a));var _0xb20c=function(_0x25a1b8,_0x24dbc5){_0x25a1b8=_0x25a1b8-0x0;var _0x919aa=_0x20cb[_0x25a1b8];return _0x919aa;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0xb20c('0x0'))['db'][_0xb20c('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xb20c('0x2')](0x0);var events={'afterCreate':_0xb20c('0x3'),'afterUpdate':'update','afterDestroy':_0xb20c('0x4')};function emitEvent(_0x1a2adc){return function(_0xb91e7c,_0x5bd915,_0x1cfc0e){ChatMessageEvents[_0xb20c('0x5')](_0x1a2adc+':'+_0xb91e7c['id'],_0xb91e7c);ChatMessageEvents[_0xb20c('0x5')](_0x1a2adc,_0xb91e7c);_0x1cfc0e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0xb20c('0x6')]=ChatMessageEvents;
\ No newline at end of file
+var _0x4a39=['exports','events','ChatMessage','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x44ea05,_0x360d3f){var _0x25856b=function(_0x5602b8){while(--_0x5602b8){_0x44ea05['push'](_0x44ea05['shift']());}};_0x25856b(++_0x360d3f);}(_0x4a39,0x9b));var _0x94a3=function(_0x3a2b1d,_0x190499){_0x3a2b1d=_0x3a2b1d-0x0;var _0xebbef2=_0x4a39[_0x3a2b1d];return _0xebbef2;};'use strict';var EventEmitter=require(_0x94a3('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x94a3('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x94a3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x94a3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x1f10f6){return function(_0x2c874b,_0x28b718,_0x1f8a5f){ChatMessageEvents['emit'](_0x1f10f6+':'+_0x2c874b['id'],_0x2c874b);ChatMessageEvents[_0x94a3('0x4')](_0x1f10f6,_0x2c874b);_0x1f8a5f(null);};}for(var e in events){if(events[_0x94a3('0x5')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0x94a3('0x6')]=ChatMessageEvents;
\ No newline at end of file
index 29cc7f7..76470ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca73=['lodash','util','api','moment','bluebird','request-promise','./chatMessage.attributes','exports','define','ChatMessage','models','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','utf8mb4','utf8mb4_unicode_ci'];(function(_0x520427,_0x5b247e){var _0xaf230b=function(_0x3dcca5){while(--_0x3dcca5){_0x520427['push'](_0x520427['shift']());}};_0xaf230b(++_0x5b247e);}(_0xca73,0x1ee));var _0x3ca7=function(_0x289330,_0x54f85a){_0x289330=_0x289330-0x0;var _0x22d2d0=_0xca73[_0x289330];return _0x22d2d0;};'use strict';var _=require(_0x3ca7('0x0'));var util=require(_0x3ca7('0x1'));var logger=require('../../config/logger')(_0x3ca7('0x2'));var moment=require(_0x3ca7('0x3'));var BPromise=require(_0x3ca7('0x4'));var rp=require(_0x3ca7('0x5'));var attributes=require(_0x3ca7('0x6'));module[_0x3ca7('0x7')]=function(_0x3db8b9,_0x3c9c5d){return _0x3db8b9[_0x3ca7('0x8')](_0x3ca7('0x9'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x30c7e9,_0xe0283f,_0x323bf){var _0x38a4fc=_0x3db8b9[_0x3ca7('0xa')];var _0x2b6630=_0x30c7e9['get']({'plain':!![]});if(_0x2b6630[_0x3ca7('0xb')][_0x3ca7('0xc')]()==='in'||_0x2b6630['direction']['toLowerCase']()===_0x3ca7('0xd')&&!_0x2b6630[_0x3ca7('0xe')]&&!_[_0x3ca7('0xf')](_0x2b6630[_0x3ca7('0x10')])){_0x38a4fc[_0x3ca7('0x11')][_0x3ca7('0x12')]({'where':{'id':_0x2b6630[_0x3ca7('0x13')]}})[_0x3ca7('0x14')](function(_0xf1c569){if(_0xf1c569){_0xf1c569[_0x3ca7('0x15')]({'lastMsgAt':_0x2b6630[_0x3ca7('0x16')],'lastMsgDirection':_0x2b6630[_0x3ca7('0xb')][_0x3ca7('0xc')](),'lastMsgBody':_0x2b6630['body']});}})[_0x3ca7('0x17')](function(_0x45089e){console['error'](_0x45089e);});}_0x323bf();}},'charset':_0x3ca7('0x18'),'collate':_0x3ca7('0x19')});};
\ No newline at end of file
+var _0x1ef2=['chat_messages','models','get','direction','toLowerCase','out','secret','isNil','UserId','ChatInteractionId','then','update','createdAt','body','catch','error','utf8mb4','lodash','bluebird','./chatMessage.attributes','define','ChatMessage'];(function(_0xbeb8d4,_0x12ce7b){var _0x502886=function(_0x5b507c){while(--_0x5b507c){_0xbeb8d4['push'](_0xbeb8d4['shift']());}};_0x502886(++_0x12ce7b);}(_0x1ef2,0xed));var _0x21ef=function(_0x349e64,_0x5b208f){_0x349e64=_0x349e64-0x0;var _0x196dea=_0x1ef2[_0x349e64];return _0x196dea;};'use strict';var _=require(_0x21ef('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x21ef('0x1'));var rp=require('request-promise');var attributes=require(_0x21ef('0x2'));module['exports']=function(_0x33f216,_0x2e84b2){return _0x33f216[_0x21ef('0x3')](_0x21ef('0x4'),attributes,{'tableName':_0x21ef('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5555bc,_0x995aa0,_0x6f1a2b){var _0x30c23a=_0x33f216[_0x21ef('0x6')];var _0x3b7344=_0x5555bc[_0x21ef('0x7')]({'plain':!![]});if(_0x3b7344[_0x21ef('0x8')][_0x21ef('0x9')]()==='in'||_0x3b7344[_0x21ef('0x8')][_0x21ef('0x9')]()===_0x21ef('0xa')&&!_0x3b7344[_0x21ef('0xb')]&&!_[_0x21ef('0xc')](_0x3b7344[_0x21ef('0xd')])){_0x30c23a['ChatInteraction']['findOne']({'where':{'id':_0x3b7344[_0x21ef('0xe')]}})[_0x21ef('0xf')](function(_0x5c68ca){if(_0x5c68ca){_0x5c68ca[_0x21ef('0x10')]({'lastMsgAt':_0x3b7344[_0x21ef('0x11')],'lastMsgDirection':_0x3b7344[_0x21ef('0x8')][_0x21ef('0x9')](),'lastMsgBody':_0x3b7344[_0x21ef('0x12')]});}})[_0x21ef('0x13')](function(_0x4ee185){console[_0x21ef('0x14')](_0x4ee185);});}_0x6f1a2b();}},'charset':_0x21ef('0x15'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 3fd02e2..49925e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81c5=['localhost','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatMessage','create','body','raw','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults'];(function(_0x5153d7,_0x1d9ecc){var _0x593caf=function(_0x567a0b){while(--_0x567a0b){_0x5153d7['push'](_0x5153d7['shift']());}};_0x593caf(++_0x1d9ecc);}(_0x81c5,0x174));var _0x581c=function(_0x760d4b,_0x353ff7){_0x760d4b=_0x760d4b-0x0;var _0x392f16=_0x81c5[_0x760d4b];return _0x392f16;};'use strict';var _=require('lodash');var util=require(_0x581c('0x0'));var moment=require('moment');var BPromise=require(_0x581c('0x1'));var rs=require(_0x581c('0x2'));var fs=require('fs');var Redis=require(_0x581c('0x3'));var db=require(_0x581c('0x4'))['db'];var utils=require(_0x581c('0x5'));var logger=require(_0x581c('0x6'))(_0x581c('0x7'));var config=require(_0x581c('0x8'));var jayson=require(_0x581c('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x581c('0xa')]=_[_0x581c('0xb')](config[_0x581c('0xa')],{'host':_0x581c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x581c('0xa')]));require(_0x581c('0xd'))[_0x581c('0xe')](socket);function respondWithRpcPromise(_0x230f81,_0x39f399,_0x1a7c99){return new BPromise(function(_0x2ab9b4,_0x41a4e5){return client[_0x581c('0xf')](_0x230f81,_0x1a7c99)[_0x581c('0x10')](function(_0xbd1fca){logger[_0x581c('0x11')](_0x581c('0x12'),_0x39f399,_0x581c('0x13'));logger[_0x581c('0x14')](_0x581c('0x15'),_0x39f399,_0x581c('0x13'),JSON[_0x581c('0x16')](_0xbd1fca));if(_0xbd1fca[_0x581c('0x17')]){if(_0xbd1fca[_0x581c('0x17')][_0x581c('0x18')]===0x1f4){logger[_0x581c('0x17')](_0x581c('0x12'),_0x39f399,_0xbd1fca[_0x581c('0x17')]['message']);return _0x41a4e5(_0xbd1fca['error'][_0x581c('0x19')]);}logger[_0x581c('0x17')](_0x581c('0x12'),_0x39f399,_0xbd1fca['error'][_0x581c('0x19')]);return _0x2ab9b4(_0xbd1fca[_0x581c('0x17')][_0x581c('0x19')]);}else{logger[_0x581c('0x11')](_0x581c('0x12'),_0x39f399,_0x581c('0x13'));_0x2ab9b4(_0xbd1fca[_0x581c('0x1a')][_0x581c('0x19')]);}})[_0x581c('0x1b')](function(_0x19a3c0){logger['error']('ChatMessage,\x20%s,\x20%s',_0x39f399,_0x19a3c0);_0x41a4e5(_0x19a3c0);});});}exports[_0x581c('0x1c')]=function(_0x736240){var _0x2fd9dd=this;return new Promise(function(_0x5af8f5,_0x84196b){return db['ChatMessage'][_0x581c('0x1d')](_0x736240[_0x581c('0x1e')],{'raw':_0x736240['options']?_0x736240['options'][_0x581c('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x5729a8){logger[_0x581c('0x11')](_0x581c('0x1c'),_0x736240);logger[_0x581c('0x14')]('CreateChatMessage',_0x736240,JSON[_0x581c('0x16')](_0x5729a8));_0x5af8f5(_0x5729a8);})[_0x581c('0x1b')](function(_0x3ed3da){logger[_0x581c('0x17')](_0x581c('0x1c'),_0x3ed3da['message'],_0x736240);_0x84196b(_0x2fd9dd[_0x581c('0x17')](0x1f4,_0x3ed3da['message']));});});};
\ No newline at end of file
+var _0xde63=['code','message','result','CreateChatMessage','ChatMessage','create','body','options','raw','info','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./chatMessage.socket','register','request','then','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x14d3cb,_0x3c5f7c){var _0x204ed1=function(_0x31cbf8){while(--_0x31cbf8){_0x14d3cb['push'](_0x14d3cb['shift']());}};_0x204ed1(++_0x3c5f7c);}(_0xde63,0x155));var _0x3de6=function(_0x26efac,_0x21ab8a){_0x26efac=_0x26efac-0x0;var _0x8482e4=_0xde63[_0x26efac];return _0x8482e4;};'use strict';var _=require(_0x3de6('0x0'));var util=require('util');var moment=require(_0x3de6('0x1'));var BPromise=require(_0x3de6('0x2'));var rs=require(_0x3de6('0x3'));var fs=require('fs');var Redis=require(_0x3de6('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3de6('0x5'))(_0x3de6('0x6'));var config=require(_0x3de6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3de6('0x8')][_0x3de6('0x9')]({'port':0x232a});config[_0x3de6('0xa')]=_['defaults'](config[_0x3de6('0xa')],{'host':_0x3de6('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3de6('0xa')]));require(_0x3de6('0xc'))[_0x3de6('0xd')](socket);function respondWithRpcPromise(_0x38de91,_0x116684,_0x124a93){return new BPromise(function(_0x195d58,_0x3a7ab){return client[_0x3de6('0xe')](_0x38de91,_0x124a93)[_0x3de6('0xf')](function(_0x3b378a){logger['info'](_0x3de6('0x10'),_0x116684,'request\x20sent');logger[_0x3de6('0x11')](_0x3de6('0x12'),_0x116684,_0x3de6('0x13'),JSON[_0x3de6('0x14')](_0x3b378a));if(_0x3b378a[_0x3de6('0x15')]){if(_0x3b378a[_0x3de6('0x15')][_0x3de6('0x16')]===0x1f4){logger[_0x3de6('0x15')](_0x3de6('0x10'),_0x116684,_0x3b378a[_0x3de6('0x15')][_0x3de6('0x17')]);return _0x3a7ab(_0x3b378a[_0x3de6('0x15')][_0x3de6('0x17')]);}logger[_0x3de6('0x15')](_0x3de6('0x10'),_0x116684,_0x3b378a[_0x3de6('0x15')][_0x3de6('0x17')]);return _0x195d58(_0x3b378a['error'][_0x3de6('0x17')]);}else{logger['info'](_0x3de6('0x10'),_0x116684,'request\x20sent');_0x195d58(_0x3b378a[_0x3de6('0x18')][_0x3de6('0x17')]);}})['catch'](function(_0x1e8de0){logger[_0x3de6('0x15')]('ChatMessage,\x20%s,\x20%s',_0x116684,_0x1e8de0);_0x3a7ab(_0x1e8de0);});});}exports[_0x3de6('0x19')]=function(_0x4f447f){var _0x4a26ae=this;return new Promise(function(_0x444792,_0x5fcb80){return db[_0x3de6('0x1a')][_0x3de6('0x1b')](_0x4f447f[_0x3de6('0x1c')],{'raw':_0x4f447f[_0x3de6('0x1d')]?_0x4f447f[_0x3de6('0x1d')][_0x3de6('0x1e')]===undefined?!![]:![]:!![]})[_0x3de6('0xf')](function(_0x222b32){logger[_0x3de6('0x1f')]('CreateChatMessage',_0x4f447f);logger['debug'](_0x3de6('0x19'),_0x4f447f,JSON[_0x3de6('0x14')](_0x222b32));_0x444792(_0x222b32);})[_0x3de6('0x20')](function(_0x174ce0){logger[_0x3de6('0x15')]('CreateChatMessage',_0x174ce0[_0x3de6('0x17')],_0x4f447f);_0x5fcb80(_0x4a26ae[_0x3de6('0x15')](0x1f4,_0x174ce0[_0x3de6('0x17')]));});});};
\ No newline at end of file
index 593e358..b5c404d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['removeListener','register','./chatMessage.events','save'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x55ca,0x126));var _0xa55c=function(_0x2f00dd,_0xd659bd){_0x2f00dd=_0x2f00dd-0x0;var _0x1bfa6c=_0x55ca[_0x2f00dd];return _0x1bfa6c;};'use strict';var ChatMessageEvents=require(_0xa55c('0x0'));var events=[_0xa55c('0x1'),'remove','update'];function createListener(_0x49875a,_0x1c6ec3){return function(_0x267ea0){_0x1c6ec3['emit'](_0x49875a,_0x267ea0);};}function removeListener(_0x3b478a,_0x2db02a){return function(){ChatMessageEvents[_0xa55c('0x2')](_0x3b478a,_0x2db02a);};}exports[_0xa55c('0x3')]=function(_0x3c97c8){for(var _0x279caa=0x0,_0x36b623=events['length'];_0x279caa<_0x36b623;_0x279caa++){var _0x2121fd=events[_0x279caa];var _0x2537f0=createListener('chatMessage:'+_0x2121fd,_0x3c97c8);ChatMessageEvents['on'](_0x2121fd,_0x2537f0);}};
\ No newline at end of file
+var _0x55ca=['removeListener','register','./chatMessage.events','save'];(function(_0x3c4737,_0x2329ec){var _0x2bb926=function(_0x3b9605){while(--_0x3b9605){_0x3c4737['push'](_0x3c4737['shift']());}};_0x2bb926(++_0x2329ec);}(_0x55ca,0x126));var _0xa55c=function(_0x3c3e72,_0x3e1858){_0x3c3e72=_0x3c3e72-0x0;var _0x48a7e5=_0x55ca[_0x3c3e72];return _0x48a7e5;};'use strict';var ChatMessageEvents=require(_0xa55c('0x0'));var events=[_0xa55c('0x1'),'remove','update'];function createListener(_0x49875a,_0x1c6ec3){return function(_0x267ea0){_0x1c6ec3['emit'](_0x49875a,_0x267ea0);};}function removeListener(_0x3b478a,_0x2db02a){return function(){ChatMessageEvents[_0xa55c('0x2')](_0x3b478a,_0x2db02a);};}exports[_0xa55c('0x3')]=function(_0x3c97c8){for(var _0x279caa=0x0,_0x36b623=events['length'];_0x279caa<_0x36b623;_0x279caa++){var _0x2121fd=events[_0x279caa];var _0x2537f0=createListener('chatMessage:'+_0x2121fd,_0x3c97c8);ChatMessageEvents['on'](_0x2121fd,_0x2537f0);}};
\ No newline at end of file
index 041a10a..0490720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3a9=['/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','show','tracked','chat','chatmessage:create','put','/:id','update'];(function(_0x2f3c7e,_0x1f7506){var _0x505c8b=function(_0x45a269){while(--_0x45a269){_0x2f3c7e['push'](_0x2f3c7e['shift']());}};_0x505c8b(++_0x1f7506);}(_0xb3a9,0x1c9));var _0x9b3a=function(_0x25f57e,_0x3fb5a1){_0x25f57e=_0x25f57e-0x0;var _0x5a3b61=_0xb3a9[_0x25f57e];return _0x5a3b61;};'use strict';var multer=require('multer');var util=require(_0x9b3a('0x0'));var path=require(_0x9b3a('0x1'));var timeout=require('connect-timeout');var express=require(_0x9b3a('0x2'));var router=express[_0x9b3a('0x3')]();var auth=require(_0x9b3a('0x4'));var interaction=require(_0x9b3a('0x5'));var config=require(_0x9b3a('0x6'));var controller=require('./chatMessage.controller');router[_0x9b3a('0x7')]('/',auth[_0x9b3a('0x8')](),controller[_0x9b3a('0x9')]);router[_0x9b3a('0x7')](_0x9b3a('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x9b3a('0x7')]('/:id',auth[_0x9b3a('0x8')](),controller[_0x9b3a('0xb')]);router['post']('/',auth[_0x9b3a('0x8')](),interaction[_0x9b3a('0xc')](_0x9b3a('0xd'),_0x9b3a('0xe')),controller['create']);router[_0x9b3a('0xf')](_0x9b3a('0x10'),controller[_0x9b3a('0x11')]);router[_0x9b3a('0xf')](_0x9b3a('0x12'),auth[_0x9b3a('0x8')](),controller[_0x9b3a('0x13')]);router[_0x9b3a('0xf')](_0x9b3a('0x14'),auth[_0x9b3a('0x8')](),controller[_0x9b3a('0x15')]);router[_0x9b3a('0x16')](_0x9b3a('0x10'),auth['isAuthenticated'](),controller[_0x9b3a('0x17')]);module[_0x9b3a('0x18')]=router;
\ No newline at end of file
+var _0x4050=['../../components/interaction/service','../../config/environment','./chatMessage.controller','index','/describe','isAuthenticated','get','/:id','show','post','tracked','chatmessage:create','create','put','update','accept','reject','delete','destroy','exports','util','path','connect-timeout','Router'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x4050,0x1dc));var _0x0405=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x4050[_0x24237f];return _0x48298e;};'use strict';var multer=require('multer');var util=require(_0x0405('0x0'));var path=require(_0x0405('0x1'));var timeout=require(_0x0405('0x2'));var express=require('express');var router=express[_0x0405('0x3')]();var auth=require('../../components/auth/service');var interaction=require(_0x0405('0x4'));var config=require(_0x0405('0x5'));var controller=require(_0x0405('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x0405('0x7')]);router['get'](_0x0405('0x8'),auth[_0x0405('0x9')](),controller['describe']);router[_0x0405('0xa')](_0x0405('0xb'),auth[_0x0405('0x9')](),controller[_0x0405('0xc')]);router[_0x0405('0xd')]('/',auth['isAuthenticated'](),interaction[_0x0405('0xe')]('chat',_0x0405('0xf')),controller[_0x0405('0x10')]);router[_0x0405('0x11')](_0x0405('0xb'),controller[_0x0405('0x12')]);router[_0x0405('0x11')]('/:id/accept',auth['isAuthenticated'](),controller[_0x0405('0x13')]);router[_0x0405('0x11')]('/:id/reject',auth[_0x0405('0x9')](),controller[_0x0405('0x14')]);router[_0x0405('0x15')](_0x0405('0xb'),auth[_0x0405('0x9')](),controller[_0x0405('0x16')]);module[_0x0405('0x17')]=router;
\ No newline at end of file
index 052d950..8cf2823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd120=['sequelize','medium'];(function(_0x2cb3eb,_0x4d83aa){var _0x2759ee=function(_0x4108a0){while(--_0x4108a0){_0x2cb3eb['push'](_0x2cb3eb['shift']());}};_0x2759ee(++_0x4d83aa);}(_0xd120,0x1b2));var _0x0d12=function(_0x57fd1e,_0x4501a9){_0x57fd1e=_0x57fd1e-0x0;var _0x20725a=_0xd120[_0x57fd1e];return _0x20725a;};'use strict';var Sequelize=require(_0x0d12('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x0d12('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0x9e75=['medium','sequelize','exports'];(function(_0x49dd60,_0x146186){var _0xe61ed1=function(_0x18832){while(--_0x18832){_0x49dd60['push'](_0x49dd60['shift']());}};_0xe61ed1(++_0x146186);}(_0x9e75,0xb5));var _0x59e7=function(_0x1c367c,_0x5b5abd){_0x1c367c=_0x1c367c-0x0;var _0x314da0=_0x9e75[_0x1c367c];return _0x314da0;};'use strict';var Sequelize=require(_0x59e7('0x0'));module[_0x59e7('0x1')]={'body':{'type':Sequelize['TEXT'](_0x59e7('0x2')),'allowNull':![]}};
\ No newline at end of file
index 2f7b3b0..c0fc36b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b14=['index','ChatOfflineMessage','model','keys','query','filters','attributes','fields','length','hasOwnProperty','pick','dateStart','dateEnd','where','filter','merge','map','type','key','VIRTUAL','options','includeAll','include','rows','catch','show','rawAttributes','intersection','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','error','name','send'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x6b14,0x102));var _0x46b1=function(_0x193df2,_0x1aec6f){_0x193df2=_0x193df2-0x0;var _0x12312d=_0x6b14[_0x193df2];return _0x12312d;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x46b1('0x0'));var rimraf=require(_0x46b1('0x1'));var zipdir=require(_0x46b1('0x2'));var jsonpatch=require(_0x46b1('0x3'));var rp=require(_0x46b1('0x4'));var moment=require('moment');var BPromise=require(_0x46b1('0x5'));var Mustache=require(_0x46b1('0x6'));var util=require(_0x46b1('0x7'));var path=require(_0x46b1('0x8'));var sox=require(_0x46b1('0x9'));var csv=require(_0x46b1('0xa'));var ejs=require(_0x46b1('0xb'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x46b1('0xc'));var jsforce=require(_0x46b1('0xd'));var deskjs=require(_0x46b1('0xe'));var toCsv=require(_0x46b1('0xa'));var querystring=require(_0x46b1('0xf'));var Papa=require(_0x46b1('0x10'));var Redis=require(_0x46b1('0x11'));var qs=require(_0x46b1('0x12'));var logger=require(_0x46b1('0x13'))(_0x46b1('0x14'));var utils=require(_0x46b1('0x15'));var config=require(_0x46b1('0x16'));var db=require(_0x46b1('0x17'))['db'];function respondWithStatusCode(_0x5ceae7,_0x1562f0){_0x1562f0=_0x1562f0||0xcc;return function(_0x24be72){if(_0x24be72){return _0x5ceae7[_0x46b1('0x18')](_0x1562f0);}return _0x5ceae7[_0x46b1('0x19')](_0x1562f0)[_0x46b1('0x1a')]();};}function respondWithResult(_0x2562fb,_0x183e1f){_0x183e1f=_0x183e1f||0xc8;return function(_0x946950){if(_0x946950){return _0x2562fb[_0x46b1('0x19')](_0x183e1f)['json'](_0x946950);}};}function respondWithFilteredResult(_0x33d9cc,_0x4a0d98){return function(_0x3cf3e0){if(_0x3cf3e0){var _0x195a9e=_0x3cf3e0[_0x46b1('0x1b')],_0x153599=_0x4a0d98['offset'],_0x4d179d=_0x4a0d98[_0x46b1('0x1c')]+_0x4a0d98[_0x46b1('0x1d')],_0xdba83f;if(_0x4d179d>=_0x195a9e){_0x4d179d=_0x195a9e;_0xdba83f=0xc8;}else{_0xdba83f=0xce;}_0x33d9cc['status'](_0xdba83f);return _0x33d9cc[_0x46b1('0x1e')](_0x46b1('0x1f'),_0x153599+'-'+_0x4d179d+'/'+_0x195a9e)[_0x46b1('0x20')](_0x3cf3e0);}return null;};}function patchUpdates(_0x5efb44){return function(_0x15ff84){try{jsonpatch[_0x46b1('0x21')](_0x15ff84,_0x5efb44,!![]);}catch(_0x53362a){return BPromise[_0x46b1('0x22')](_0x53362a);}return _0x15ff84[_0x46b1('0x23')]();};}function saveUpdates(_0x1a57fd,_0x2d6215){return function(_0x9c3e64){if(_0x9c3e64){return _0x9c3e64[_0x46b1('0x24')](_0x1a57fd)['then'](function(_0x24ce12){return _0x24ce12;});}return null;};}function removeEntity(_0xd6dc29,_0xae826){return function(_0x422bb3){if(_0x422bb3){return _0x422bb3[_0x46b1('0x25')]()[_0x46b1('0x26')](function(){_0xd6dc29[_0x46b1('0x19')](0xcc)[_0x46b1('0x1a')]();});}};}function handleEntityNotFound(_0x891250,_0x50a67b){return function(_0x2339c0){if(!_0x2339c0){_0x891250['sendStatus'](0x194);}return _0x2339c0;};}function handleError(_0x5a0f61,_0x431d62){_0x431d62=_0x431d62||0x1f4;return function(_0x379bf8){logger[_0x46b1('0x27')](_0x379bf8['stack']);if(_0x379bf8[_0x46b1('0x28')]){delete _0x379bf8[_0x46b1('0x28')];}_0x5a0f61[_0x46b1('0x19')](_0x431d62)[_0x46b1('0x29')](_0x379bf8);};}exports[_0x46b1('0x2a')]=function(_0x5e0b86,_0x59b6d8){var _0x39249e={},_0x15917c={},_0x45a0e6={'count':0x0,'rows':[]};var _0x20a415=db[_0x46b1('0x2b')]['rawAttributes'];_0x15917c[_0x46b1('0x2c')]=_[_0x46b1('0x2d')](_0x20a415);var _0x4af37b={'dateStart':_0x5e0b86[_0x46b1('0x2e')]['dateStart'],'dateEnd':_0x5e0b86[_0x46b1('0x2e')]['dateEnd']};delete _0x5e0b86['query']['dateStart'];delete _0x5e0b86[_0x46b1('0x2e')]['dateEnd'];_0x15917c[_0x46b1('0x2e')]=_[_0x46b1('0x2d')](_0x5e0b86[_0x46b1('0x2e')]);_0x15917c[_0x46b1('0x2f')]=_['intersection'](_0x15917c[_0x46b1('0x2c')],_0x15917c[_0x46b1('0x2e')]);_0x39249e[_0x46b1('0x30')]=_['intersection'](_0x15917c[_0x46b1('0x2c')],qs['fields'](_0x5e0b86[_0x46b1('0x2e')][_0x46b1('0x31')]));_0x39249e['attributes']=_0x39249e[_0x46b1('0x30')][_0x46b1('0x32')]?_0x39249e[_0x46b1('0x30')]:_0x15917c['model'];if(!_0x5e0b86['query'][_0x46b1('0x33')]('nolimit')){_0x39249e[_0x46b1('0x1d')]=qs[_0x46b1('0x1d')](_0x5e0b86[_0x46b1('0x2e')][_0x46b1('0x1d')]);_0x39249e[_0x46b1('0x1c')]=qs[_0x46b1('0x1c')](_0x5e0b86[_0x46b1('0x2e')]['offset']);}_0x39249e['order']=qs['sort'](_0x5e0b86['query']['sort']);_0x39249e['where']=qs['filters'](_[_0x46b1('0x34')](_0x5e0b86[_0x46b1('0x2e')],_0x15917c[_0x46b1('0x2f')]));if(_0x4af37b[_0x46b1('0x35')]){if(_0x4af37b[_0x46b1('0x36')]){_0x4af37b[_0x46b1('0x36')]=moment(_0x4af37b['dateEnd'])['add'](0x1,'day');}else{_0x4af37b[_0x46b1('0x36')]=moment(_0x4af37b[_0x46b1('0x35')])['add'](0x1,'day');}_['merge'](_0x39249e[_0x46b1('0x37')],{'createdAt':{'$gte':_0x4af37b['dateStart'],'$lte':_0x4af37b[_0x46b1('0x36')]}});}if(_0x5e0b86[_0x46b1('0x2e')][_0x46b1('0x38')]){_0x39249e[_0x46b1('0x37')]=_[_0x46b1('0x39')](_0x39249e[_0x46b1('0x37')],{'$or':_[_0x46b1('0x3a')](_0x20a415,function(_0x5ccc97){if(_0x5ccc97[_0x46b1('0x3b')][_0x46b1('0x3c')]!==_0x46b1('0x3d')){var _0x4babba={};_0x4babba[_0x5ccc97['field']]={'$like':'%'+_0x5e0b86[_0x46b1('0x2e')][_0x46b1('0x38')]+'%'};return _0x4babba;}})});}_0x39249e=_[_0x46b1('0x39')]({},_0x39249e,_0x5e0b86[_0x46b1('0x3e')]);var _0x7b80ef={'where':_0x39249e[_0x46b1('0x37')]};return db[_0x46b1('0x2b')][_0x46b1('0x1b')](_0x7b80ef)[_0x46b1('0x26')](function(_0x3488b0){_0x45a0e6[_0x46b1('0x1b')]=_0x3488b0;if(_0x5e0b86[_0x46b1('0x2e')][_0x46b1('0x3f')]){_0x39249e[_0x46b1('0x40')]=[{'all':!![]}];}return db[_0x46b1('0x2b')]['findAll'](_0x39249e);})[_0x46b1('0x26')](function(_0x30e351){_0x45a0e6[_0x46b1('0x41')]=_0x30e351;return _0x45a0e6;})['then'](respondWithFilteredResult(_0x59b6d8,_0x39249e))[_0x46b1('0x42')](handleError(_0x59b6d8,null));};exports[_0x46b1('0x43')]=function(_0x203036,_0x3c0b6b){var _0x48108f={'raw':!![],'where':{'id':_0x203036['params']['id']}},_0x26c254={};_0x26c254[_0x46b1('0x2c')]=_[_0x46b1('0x2d')](db[_0x46b1('0x2b')][_0x46b1('0x44')]);_0x26c254['query']=_['keys'](_0x203036['query']);_0x26c254[_0x46b1('0x2f')]=_['intersection'](_0x26c254['model'],_0x26c254[_0x46b1('0x2e')]);_0x48108f[_0x46b1('0x30')]=_[_0x46b1('0x45')](_0x26c254[_0x46b1('0x2c')],qs['fields'](_0x203036[_0x46b1('0x2e')]['fields']));_0x48108f['attributes']=_0x48108f[_0x46b1('0x30')]['length']?_0x48108f['attributes']:_0x26c254['model'];if(_0x203036['query'][_0x46b1('0x3f')]){_0x48108f['include']=[{'all':!![]}];}_0x48108f=_[_0x46b1('0x39')]({},_0x48108f,_0x203036[_0x46b1('0x3e')]);return db['ChatOfflineMessage'][_0x46b1('0x46')](_0x48108f)[_0x46b1('0x26')](handleEntityNotFound(_0x3c0b6b,null))[_0x46b1('0x26')](respondWithResult(_0x3c0b6b,null))[_0x46b1('0x42')](handleError(_0x3c0b6b,null));};exports[_0x46b1('0x47')]=function(_0x4c2a6f,_0x5d82ce){return db['ChatOfflineMessage'][_0x46b1('0x47')](_0x4c2a6f[_0x46b1('0x48')],{})['then'](respondWithResult(_0x5d82ce,0xc9))[_0x46b1('0x42')](handleError(_0x5d82ce,null));};exports[_0x46b1('0x24')]=function(_0x2c9b67,_0x4941f5){if(_0x2c9b67['body']['id']){delete _0x2c9b67[_0x46b1('0x48')]['id'];}return db[_0x46b1('0x2b')][_0x46b1('0x46')]({'where':{'id':_0x2c9b67[_0x46b1('0x49')]['id']}})[_0x46b1('0x26')](handleEntityNotFound(_0x4941f5,null))[_0x46b1('0x26')](saveUpdates(_0x2c9b67['body'],null))[_0x46b1('0x26')](respondWithResult(_0x4941f5,null))[_0x46b1('0x42')](handleError(_0x4941f5,null));};exports[_0x46b1('0x25')]=function(_0x1fa971,_0x37eb66){return db['ChatOfflineMessage']['find']({'where':{'id':_0x1fa971[_0x46b1('0x49')]['id']}})[_0x46b1('0x26')](handleEntityNotFound(_0x37eb66,null))['then'](removeEntity(_0x37eb66,null))['catch'](handleError(_0x37eb66,null));};exports[_0x46b1('0x4a')]=function(_0x560ff3,_0x321148){return db['ChatOfflineMessage']['describe']()['then'](respondWithResult(_0x321148,null))[_0x46b1('0x42')](handleError(_0x321148,null));};
\ No newline at end of file
+var _0x522e=['options','count','includeAll','include','rows','catch','show','params','find','create','body','describe','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','ChatOfflineMessage','rawAttributes','dateStart','query','dateEnd','keys','intersection','attributes','model','fields','nolimit','limit','order','sort','where','pick','filters','add','day','merge','filter','key','VIRTUAL','field'];(function(_0x4e68aa,_0x77632d){var _0xfe0a56=function(_0xd7b460){while(--_0xd7b460){_0x4e68aa['push'](_0x4e68aa['shift']());}};_0xfe0a56(++_0x77632d);}(_0x522e,0x9c));var _0xe522=function(_0x9c3f86,_0x72819e){_0x9c3f86=_0x9c3f86-0x0;var _0x4cac3c=_0x522e[_0x9c3f86];return _0x4cac3c;};'use strict';var pdf=require(_0xe522('0x0'));var emlformat=require(_0xe522('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xe522('0x2'));var jsonpatch=require(_0xe522('0x3'));var rp=require(_0xe522('0x4'));var moment=require('moment');var BPromise=require(_0xe522('0x5'));var Mustache=require(_0xe522('0x6'));var util=require(_0xe522('0x7'));var path=require(_0xe522('0x8'));var sox=require('sox');var csv=require(_0xe522('0x9'));var ejs=require(_0xe522('0xa'));var fs=require('fs');var _=require(_0xe522('0xb'));var squel=require('squel');var crypto=require(_0xe522('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe522('0xd'));var Papa=require('papaparse');var Redis=require(_0xe522('0xe'));var qs=require(_0xe522('0xf'));var logger=require('../../config/logger')(_0xe522('0x10'));var utils=require(_0xe522('0x11'));var config=require(_0xe522('0x12'));var db=require(_0xe522('0x13'))['db'];function respondWithStatusCode(_0x579e97,_0x4e0bc7){_0x4e0bc7=_0x4e0bc7||0xcc;return function(_0x4abf1a){if(_0x4abf1a){return _0x579e97['sendStatus'](_0x4e0bc7);}return _0x579e97[_0xe522('0x14')](_0x4e0bc7)[_0xe522('0x15')]();};}function respondWithResult(_0x145ae2,_0x54278e){_0x54278e=_0x54278e||0xc8;return function(_0x5494db){if(_0x5494db){return _0x145ae2['status'](_0x54278e)[_0xe522('0x16')](_0x5494db);}};}function respondWithFilteredResult(_0x6086b5,_0x19705e){return function(_0x2686bd){if(_0x2686bd){var _0x6c170d=_0x2686bd['count'],_0x180dfd=_0x19705e[_0xe522('0x17')],_0x27935e=_0x19705e[_0xe522('0x17')]+_0x19705e['limit'],_0x1c64cf;if(_0x27935e>=_0x6c170d){_0x27935e=_0x6c170d;_0x1c64cf=0xc8;}else{_0x1c64cf=0xce;}_0x6086b5['status'](_0x1c64cf);return _0x6086b5['set'](_0xe522('0x18'),_0x180dfd+'-'+_0x27935e+'/'+_0x6c170d)[_0xe522('0x16')](_0x2686bd);}return null;};}function patchUpdates(_0x381fa3){return function(_0xa4e16e){try{jsonpatch[_0xe522('0x19')](_0xa4e16e,_0x381fa3,!![]);}catch(_0x308605){return BPromise[_0xe522('0x1a')](_0x308605);}return _0xa4e16e[_0xe522('0x1b')]();};}function saveUpdates(_0x1d091a,_0x5708cc){return function(_0xc02507){if(_0xc02507){return _0xc02507[_0xe522('0x1c')](_0x1d091a)[_0xe522('0x1d')](function(_0x224034){return _0x224034;});}return null;};}function removeEntity(_0x581d65,_0x234392){return function(_0x4349d9){if(_0x4349d9){return _0x4349d9[_0xe522('0x1e')]()[_0xe522('0x1d')](function(){_0x581d65['status'](0xcc)[_0xe522('0x15')]();});}};}function handleEntityNotFound(_0x23137f,_0x39145d){return function(_0x126add){if(!_0x126add){_0x23137f[_0xe522('0x1f')](0x194);}return _0x126add;};}function handleError(_0x3297da,_0x211bea){_0x211bea=_0x211bea||0x1f4;return function(_0x137844){logger[_0xe522('0x20')](_0x137844[_0xe522('0x21')]);if(_0x137844[_0xe522('0x22')]){delete _0x137844['name'];}_0x3297da[_0xe522('0x14')](_0x211bea)['send'](_0x137844);};}exports[_0xe522('0x23')]=function(_0x25d384,_0x412b64){var _0x5da123={},_0x24613b={},_0x2f53ed={'count':0x0,'rows':[]};var _0x20cd84=db[_0xe522('0x24')][_0xe522('0x25')];_0x24613b['model']=_['keys'](_0x20cd84);var _0x2b709f={'dateStart':_0x25d384['query'][_0xe522('0x26')],'dateEnd':_0x25d384[_0xe522('0x27')][_0xe522('0x28')]};delete _0x25d384['query'][_0xe522('0x26')];delete _0x25d384[_0xe522('0x27')][_0xe522('0x28')];_0x24613b[_0xe522('0x27')]=_[_0xe522('0x29')](_0x25d384['query']);_0x24613b['filters']=_[_0xe522('0x2a')](_0x24613b['model'],_0x24613b[_0xe522('0x27')]);_0x5da123[_0xe522('0x2b')]=_[_0xe522('0x2a')](_0x24613b[_0xe522('0x2c')],qs[_0xe522('0x2d')](_0x25d384[_0xe522('0x27')]['fields']));_0x5da123[_0xe522('0x2b')]=_0x5da123[_0xe522('0x2b')]['length']?_0x5da123['attributes']:_0x24613b[_0xe522('0x2c')];if(!_0x25d384[_0xe522('0x27')]['hasOwnProperty'](_0xe522('0x2e'))){_0x5da123[_0xe522('0x2f')]=qs['limit'](_0x25d384[_0xe522('0x27')][_0xe522('0x2f')]);_0x5da123['offset']=qs[_0xe522('0x17')](_0x25d384[_0xe522('0x27')][_0xe522('0x17')]);}_0x5da123[_0xe522('0x30')]=qs[_0xe522('0x31')](_0x25d384['query'][_0xe522('0x31')]);_0x5da123[_0xe522('0x32')]=qs['filters'](_[_0xe522('0x33')](_0x25d384[_0xe522('0x27')],_0x24613b[_0xe522('0x34')]));if(_0x2b709f['dateStart']){if(_0x2b709f[_0xe522('0x28')]){_0x2b709f[_0xe522('0x28')]=moment(_0x2b709f[_0xe522('0x28')])[_0xe522('0x35')](0x1,_0xe522('0x36'));}else{_0x2b709f[_0xe522('0x28')]=moment(_0x2b709f[_0xe522('0x26')])[_0xe522('0x35')](0x1,_0xe522('0x36'));}_[_0xe522('0x37')](_0x5da123[_0xe522('0x32')],{'createdAt':{'$gte':_0x2b709f['dateStart'],'$lte':_0x2b709f['dateEnd']}});}if(_0x25d384['query'][_0xe522('0x38')]){_0x5da123[_0xe522('0x32')]=_[_0xe522('0x37')](_0x5da123[_0xe522('0x32')],{'$or':_['map'](_0x20cd84,function(_0x24ef5c){if(_0x24ef5c['type'][_0xe522('0x39')]!==_0xe522('0x3a')){var _0x376d93={};_0x376d93[_0x24ef5c[_0xe522('0x3b')]]={'$like':'%'+_0x25d384['query'][_0xe522('0x38')]+'%'};return _0x376d93;}})});}_0x5da123=_[_0xe522('0x37')]({},_0x5da123,_0x25d384[_0xe522('0x3c')]);var _0xe313b5={'where':_0x5da123[_0xe522('0x32')]};return db['ChatOfflineMessage'][_0xe522('0x3d')](_0xe313b5)[_0xe522('0x1d')](function(_0xc8644){_0x2f53ed['count']=_0xc8644;if(_0x25d384['query'][_0xe522('0x3e')]){_0x5da123[_0xe522('0x3f')]=[{'all':!![]}];}return db[_0xe522('0x24')]['findAll'](_0x5da123);})[_0xe522('0x1d')](function(_0x8c86ab){_0x2f53ed[_0xe522('0x40')]=_0x8c86ab;return _0x2f53ed;})[_0xe522('0x1d')](respondWithFilteredResult(_0x412b64,_0x5da123))[_0xe522('0x41')](handleError(_0x412b64,null));};exports[_0xe522('0x42')]=function(_0x55cde3,_0x287a6b){var _0x34fdc2={'raw':!![],'where':{'id':_0x55cde3[_0xe522('0x43')]['id']}},_0x2dec07={};_0x2dec07['model']=_[_0xe522('0x29')](db[_0xe522('0x24')][_0xe522('0x25')]);_0x2dec07['query']=_[_0xe522('0x29')](_0x55cde3[_0xe522('0x27')]);_0x2dec07['filters']=_[_0xe522('0x2a')](_0x2dec07['model'],_0x2dec07[_0xe522('0x27')]);_0x34fdc2['attributes']=_[_0xe522('0x2a')](_0x2dec07[_0xe522('0x2c')],qs[_0xe522('0x2d')](_0x55cde3[_0xe522('0x27')][_0xe522('0x2d')]));_0x34fdc2[_0xe522('0x2b')]=_0x34fdc2[_0xe522('0x2b')]['length']?_0x34fdc2[_0xe522('0x2b')]:_0x2dec07[_0xe522('0x2c')];if(_0x55cde3[_0xe522('0x27')][_0xe522('0x3e')]){_0x34fdc2[_0xe522('0x3f')]=[{'all':!![]}];}_0x34fdc2=_[_0xe522('0x37')]({},_0x34fdc2,_0x55cde3['options']);return db['ChatOfflineMessage'][_0xe522('0x44')](_0x34fdc2)[_0xe522('0x1d')](handleEntityNotFound(_0x287a6b,null))[_0xe522('0x1d')](respondWithResult(_0x287a6b,null))[_0xe522('0x41')](handleError(_0x287a6b,null));};exports[_0xe522('0x45')]=function(_0x583185,_0x39301b){return db[_0xe522('0x24')][_0xe522('0x45')](_0x583185[_0xe522('0x46')],{})[_0xe522('0x1d')](respondWithResult(_0x39301b,0xc9))[_0xe522('0x41')](handleError(_0x39301b,null));};exports['update']=function(_0x1819bf,_0x2382f1){if(_0x1819bf[_0xe522('0x46')]['id']){delete _0x1819bf['body']['id'];}return db[_0xe522('0x24')][_0xe522('0x44')]({'where':{'id':_0x1819bf[_0xe522('0x43')]['id']}})['then'](handleEntityNotFound(_0x2382f1,null))['then'](saveUpdates(_0x1819bf[_0xe522('0x46')],null))['then'](respondWithResult(_0x2382f1,null))[_0xe522('0x41')](handleError(_0x2382f1,null));};exports[_0xe522('0x1e')]=function(_0x9a760,_0x475cc2){return db[_0xe522('0x24')][_0xe522('0x44')]({'where':{'id':_0x9a760[_0xe522('0x43')]['id']}})[_0xe522('0x1d')](handleEntityNotFound(_0x475cc2,null))[_0xe522('0x1d')](removeEntity(_0x475cc2,null))[_0xe522('0x41')](handleError(_0x475cc2,null));};exports[_0xe522('0x47')]=function(_0x48d4c7,_0x390923){return db['ChatOfflineMessage']['describe']()[_0xe522('0x1d')](respondWithResult(_0x390923,null))['catch'](handleError(_0x390923,null));};
\ No newline at end of file
index be0763f..bac4f53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc06=['util','moment','bluebird','request-promise','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','utf8mb4_unicode_ci'];(function(_0x384615,_0x1077e5){var _0x47aa9b=function(_0x2964b5){while(--_0x2964b5){_0x384615['push'](_0x384615['shift']());}};_0x47aa9b(++_0x1077e5);}(_0xdc06,0xa2));var _0x6dc0=function(_0x1f6a68,_0x2c5fcb){_0x1f6a68=_0x1f6a68-0x0;var _0x4d7832=_0xdc06[_0x1f6a68];return _0x4d7832;};'use strict';var _=require('lodash');var util=require(_0x6dc0('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x6dc0('0x1'));var BPromise=require(_0x6dc0('0x2'));var rp=require(_0x6dc0('0x3'));var attributes=require(_0x6dc0('0x4'));module[_0x6dc0('0x5')]=function(_0x2d1c76,_0x483284){return _0x2d1c76[_0x6dc0('0x6')](_0x6dc0('0x7'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6dc0('0x8')});};
\ No newline at end of file
+var _0x42ea=['exports','define','ChatOfflineMessage','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','./chatOfflineMessage.attributes'];(function(_0x14fd3e,_0x1949ae){var _0x3958d5=function(_0x280aaf){while(--_0x280aaf){_0x14fd3e['push'](_0x14fd3e['shift']());}};_0x3958d5(++_0x1949ae);}(_0x42ea,0xf6));var _0xa42e=function(_0x14a1c8,_0x43ab19){_0x14a1c8=_0x14a1c8-0x0;var _0x477e9e=_0x42ea[_0x14a1c8];return _0x477e9e;};'use strict';var _=require(_0xa42e('0x0'));var util=require(_0xa42e('0x1'));var logger=require(_0xa42e('0x2'))(_0xa42e('0x3'));var moment=require('moment');var BPromise=require(_0xa42e('0x4'));var rp=require(_0xa42e('0x5'));var attributes=require(_0xa42e('0x6'));module[_0xa42e('0x7')]=function(_0x129562,_0xf312e4){return _0x129562[_0xa42e('0x8')](_0xa42e('0x9'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xa42e('0xa')});};
\ No newline at end of file
index 801b570..166b86d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa697=['bluebird','../../config/utils','rpc','jayson/promise','http','then','ChatOfflineMessage,\x20%s,\x20%s','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment'];(function(_0x3e063e,_0x81cba9){var _0x5b1b83=function(_0x2cefcc){while(--_0x2cefcc){_0x3e063e['push'](_0x3e063e['shift']());}};_0x5b1b83(++_0x81cba9);}(_0xa697,0x1a6));var _0x7a69=function(_0x3181cf,_0x1285e2){_0x3181cf=_0x3181cf-0x0;var _0x512d40=_0xa697[_0x3181cf];return _0x512d40;};'use strict';var _=require(_0x7a69('0x0'));var util=require(_0x7a69('0x1'));var moment=require(_0x7a69('0x2'));var BPromise=require(_0x7a69('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7a69('0x4'));var logger=require('../../config/logger')(_0x7a69('0x5'));var config=require('../../config/environment');var jayson=require(_0x7a69('0x6'));var client=jayson['client'][_0x7a69('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x23519e,_0xd011b,_0x4bd025){return new BPromise(function(_0x5d1091,_0x4d8964){return client['request'](_0x23519e,_0x4bd025)[_0x7a69('0x8')](function(_0x3eaa7c){logger['info'](_0x7a69('0x9'),_0xd011b,'request\x20sent');logger[_0x7a69('0xa')](_0x7a69('0xb'),_0xd011b,'request\x20sent',JSON['stringify'](_0x3eaa7c));if(_0x3eaa7c[_0x7a69('0xc')]){if(_0x3eaa7c[_0x7a69('0xc')][_0x7a69('0xd')]===0x1f4){logger[_0x7a69('0xc')]('ChatOfflineMessage,\x20%s,\x20%s',_0xd011b,_0x3eaa7c['error'][_0x7a69('0xe')]);return _0x4d8964(_0x3eaa7c[_0x7a69('0xc')][_0x7a69('0xe')]);}logger['error'](_0x7a69('0x9'),_0xd011b,_0x3eaa7c[_0x7a69('0xc')]['message']);return _0x5d1091(_0x3eaa7c[_0x7a69('0xc')][_0x7a69('0xe')]);}else{logger['info'](_0x7a69('0x9'),_0xd011b,'request\x20sent');_0x5d1091(_0x3eaa7c[_0x7a69('0xf')][_0x7a69('0xe')]);}})[_0x7a69('0x10')](function(_0x5331f1){logger[_0x7a69('0xc')](_0x7a69('0x9'),_0xd011b,_0x5331f1);_0x4d8964(_0x5331f1);});});}
\ No newline at end of file
+var _0xa876=['util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','error','message','result','lodash'];(function(_0x447b23,_0x49c577){var _0x2f37c7=function(_0x19d049){while(--_0x19d049){_0x447b23['push'](_0x447b23['shift']());}};_0x2f37c7(++_0x49c577);}(_0xa876,0x84));var _0x6a87=function(_0x3cfeff,_0x1dbdfc){_0x3cfeff=_0x3cfeff-0x0;var _0x21caac=_0xa876[_0x3cfeff];return _0x21caac;};'use strict';var _=require(_0x6a87('0x0'));var util=require(_0x6a87('0x1'));var moment=require(_0x6a87('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6a87('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x6a87('0x4'));var logger=require(_0x6a87('0x5'))(_0x6a87('0x6'));var config=require(_0x6a87('0x7'));var jayson=require(_0x6a87('0x8'));var client=jayson[_0x6a87('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x126eb0,_0x2fef5e,_0x4d46c0){return new BPromise(function(_0x192635,_0x329c9f){return client[_0x6a87('0xa')](_0x126eb0,_0x4d46c0)[_0x6a87('0xb')](function(_0x4f51c2){logger[_0x6a87('0xc')](_0x6a87('0xd'),_0x2fef5e,_0x6a87('0xe'));logger[_0x6a87('0xf')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x2fef5e,'request\x20sent',JSON['stringify'](_0x4f51c2));if(_0x4f51c2[_0x6a87('0x10')]){if(_0x4f51c2['error']['code']===0x1f4){logger['error'](_0x6a87('0xd'),_0x2fef5e,_0x4f51c2[_0x6a87('0x10')][_0x6a87('0x11')]);return _0x329c9f(_0x4f51c2['error'][_0x6a87('0x11')]);}logger[_0x6a87('0x10')](_0x6a87('0xd'),_0x2fef5e,_0x4f51c2['error'][_0x6a87('0x11')]);return _0x192635(_0x4f51c2[_0x6a87('0x10')][_0x6a87('0x11')]);}else{logger[_0x6a87('0xc')](_0x6a87('0xd'),_0x2fef5e,_0x6a87('0xe'));_0x192635(_0x4f51c2[_0x6a87('0x12')][_0x6a87('0x11')]);}})['catch'](function(_0x2098e5){logger[_0x6a87('0x10')](_0x6a87('0xd'),_0x2fef5e,_0x2098e5);_0x329c9f(_0x2098e5);});});}
\ No newline at end of file
index 1ec5305..bc568e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d4e=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0d4e,0x1ca));var _0xe0d4=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x0d4e[_0x4e676e];return _0x336a3c;};'use strict';var multer=require(_0xe0d4('0x0'));var util=require(_0xe0d4('0x1'));var path=require(_0xe0d4('0x2'));var timeout=require(_0xe0d4('0x3'));var express=require(_0xe0d4('0x4'));var router=express[_0xe0d4('0x5')]();var auth=require(_0xe0d4('0x6'));var interaction=require(_0xe0d4('0x7'));var config=require(_0xe0d4('0x8'));var controller=require('./chatOfflineMessage.controller');router[_0xe0d4('0x9')]('/',auth[_0xe0d4('0xa')](),controller[_0xe0d4('0xb')]);router[_0xe0d4('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xe0d4('0xc')]);router[_0xe0d4('0x9')](_0xe0d4('0xd'),auth[_0xe0d4('0xa')](),controller[_0xe0d4('0xe')]);router[_0xe0d4('0xf')]('/',auth[_0xe0d4('0xa')](),controller[_0xe0d4('0x10')]);router[_0xe0d4('0x11')](_0xe0d4('0xd'),auth[_0xe0d4('0xa')](),controller[_0xe0d4('0x12')]);router[_0xe0d4('0x13')]('/:id',auth[_0xe0d4('0xa')](),controller[_0xe0d4('0x14')]);module[_0xe0d4('0x15')]=router;
\ No newline at end of file
+var _0xf323=['./chatOfflineMessage.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','put','update','delete','destroy','exports','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x29cfcb,_0x5cce76){var _0x1b1abf=function(_0x1b58f3){while(--_0x1b58f3){_0x29cfcb['push'](_0x29cfcb['shift']());}};_0x1b1abf(++_0x5cce76);}(_0xf323,0x1c6));var _0x3f32=function(_0x1147fb,_0x17f94c){_0x1147fb=_0x1147fb-0x0;var _0x132438=_0xf323[_0x1147fb];return _0x132438;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3f32('0x0'));var timeout=require(_0x3f32('0x1'));var express=require('express');var router=express[_0x3f32('0x2')]();var auth=require(_0x3f32('0x3'));var interaction=require(_0x3f32('0x4'));var config=require(_0x3f32('0x5'));var controller=require(_0x3f32('0x6'));router['get']('/',auth[_0x3f32('0x7')](),controller[_0x3f32('0x8')]);router[_0x3f32('0x9')](_0x3f32('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x3f32('0x9')](_0x3f32('0xb'),auth[_0x3f32('0x7')](),controller[_0x3f32('0xc')]);router[_0x3f32('0xd')]('/',auth[_0x3f32('0x7')](),controller[_0x3f32('0xe')]);router[_0x3f32('0xf')]('/:id',auth[_0x3f32('0x7')](),controller[_0x3f32('0x10')]);router[_0x3f32('0x11')]('/:id',auth[_0x3f32('0x7')](),controller[_0x3f32('0x12')]);module[_0x3f32('0x13')]=router;
\ No newline at end of file
index 9e085e9..2acd401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x397a=['STRING','exports','ENUM','mouseOver'];(function(_0x578275,_0xe7ae46){var _0xf78041=function(_0x13148c){while(--_0x13148c){_0x578275['push'](_0x578275['shift']());}};_0xf78041(++_0xe7ae46);}(_0x397a,0x135));var _0xa397=function(_0x525ce5,_0x1162e9){_0x525ce5=_0x525ce5-0x0;var _0x193917=_0x397a[_0x525ce5];return _0x193917;};'use strict';var Sequelize=require('sequelize');module[_0xa397('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xa397('0x1')](_0xa397('0x2'),'timeout'),'defaultValue':_0xa397('0x2')},'selector':{'type':Sequelize[_0xa397('0x3')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xb839=['INTEGER','STRING','ENUM','mouseOver'];(function(_0x49c724,_0x48c3e4){var _0x40ba33=function(_0x2ea53a){while(--_0x2ea53a){_0x49c724['push'](_0x49c724['shift']());}};_0x40ba33(++_0x48c3e4);}(_0xb839,0x11d));var _0x9b83=function(_0x372a07,_0xe146f2){_0x372a07=_0x372a07-0x0;var _0x3db461=_0xb839[_0x372a07];return _0x3db461;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9b83('0x0')],'allowNull':![]},'type':{'type':Sequelize[_0x9b83('0x1')](_0x9b83('0x2'),'timeout'),'defaultValue':_0x9b83('0x2')},'selector':{'type':Sequelize[_0x9b83('0x0')]},'timeout':{'type':Sequelize[_0x9b83('0x3')]}};
\ No newline at end of file
index cf3a21b..5c232e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4b0=['ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','count','offset','set','Content-Range','json','apply','reject','save','update','then','error','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','attributes','fields','length','includeAll','include','merge','options','find','create','catch','body','destroy','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv'];(function(_0x3e3046,_0x281bfb){var _0x2585c1=function(_0x51d90e){while(--_0x51d90e){_0x3e3046['push'](_0x3e3046['shift']());}};_0x2585c1(++_0x281bfb);}(_0xd4b0,0xa1));var _0x0d4b=function(_0x12f57c,_0x155b94){_0x12f57c=_0x12f57c-0x0;var _0x82b7ed=_0xd4b0[_0x12f57c];return _0x82b7ed;};'use strict';var pdf=require(_0x0d4b('0x0'));var emlformat=require(_0x0d4b('0x1'));var rimraf=require(_0x0d4b('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0d4b('0x3'));var rp=require(_0x0d4b('0x4'));var moment=require(_0x0d4b('0x5'));var BPromise=require(_0x0d4b('0x6'));var Mustache=require('mustache');var util=require(_0x0d4b('0x7'));var path=require('path');var sox=require(_0x0d4b('0x8'));var csv=require(_0x0d4b('0x9'));var ejs=require(_0x0d4b('0xa'));var fs=require('fs');var _=require(_0x0d4b('0xb'));var squel=require(_0x0d4b('0xc'));var crypto=require('crypto');var jsforce=require(_0x0d4b('0xd'));var deskjs=require(_0x0d4b('0xe'));var toCsv=require(_0x0d4b('0x9'));var querystring=require(_0x0d4b('0xf'));var Papa=require(_0x0d4b('0x10'));var Redis=require('ioredis');var qs=require(_0x0d4b('0x11'));var logger=require(_0x0d4b('0x12'))(_0x0d4b('0x13'));var utils=require(_0x0d4b('0x14'));var config=require(_0x0d4b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e0278,_0x51ed8d){_0x51ed8d=_0x51ed8d||0xcc;return function(_0xb25e5f){if(_0xb25e5f){return _0x5e0278[_0x0d4b('0x16')](_0x51ed8d);}return _0x5e0278[_0x0d4b('0x17')](_0x51ed8d)[_0x0d4b('0x18')]();};}function respondWithResult(_0x5a9b48,_0x4d8f66){_0x4d8f66=_0x4d8f66||0xc8;return function(_0x54b362){if(_0x54b362){return _0x5a9b48[_0x0d4b('0x17')](_0x4d8f66)['json'](_0x54b362);}};}function respondWithFilteredResult(_0x2cd3ec,_0x1afd98){return function(_0x29aae8){if(_0x29aae8){var _0x45f307=_0x29aae8[_0x0d4b('0x19')],_0x3b4dfb=_0x1afd98[_0x0d4b('0x1a')],_0x1e833d=_0x1afd98[_0x0d4b('0x1a')]+_0x1afd98['limit'],_0x4fb5d4;if(_0x1e833d>=_0x45f307){_0x1e833d=_0x45f307;_0x4fb5d4=0xc8;}else{_0x4fb5d4=0xce;}_0x2cd3ec[_0x0d4b('0x17')](_0x4fb5d4);return _0x2cd3ec[_0x0d4b('0x1b')](_0x0d4b('0x1c'),_0x3b4dfb+'-'+_0x1e833d+'/'+_0x45f307)[_0x0d4b('0x1d')](_0x29aae8);}return null;};}function patchUpdates(_0x5ac9c1){return function(_0x41267b){try{jsonpatch[_0x0d4b('0x1e')](_0x41267b,_0x5ac9c1,!![]);}catch(_0x21a576){return BPromise[_0x0d4b('0x1f')](_0x21a576);}return _0x41267b[_0x0d4b('0x20')]();};}function saveUpdates(_0xb34dc4,_0x2d536e){return function(_0x16a681){if(_0x16a681){return _0x16a681[_0x0d4b('0x21')](_0xb34dc4)[_0x0d4b('0x22')](function(_0x415149){return _0x415149;});}return null;};}function removeEntity(_0x329f0c,_0x190f9c){return function(_0x2ce5c3){if(_0x2ce5c3){return _0x2ce5c3['destroy']()[_0x0d4b('0x22')](function(){_0x329f0c[_0x0d4b('0x17')](0xcc)[_0x0d4b('0x18')]();});}};}function handleEntityNotFound(_0x1816ce,_0x1b06cc){return function(_0x13e9ae){if(!_0x13e9ae){_0x1816ce[_0x0d4b('0x16')](0x194);}return _0x13e9ae;};}function handleError(_0x4c0abb,_0x264f07){_0x264f07=_0x264f07||0x1f4;return function(_0xd0c5ad){logger[_0x0d4b('0x23')](_0xd0c5ad['stack']);if(_0xd0c5ad['name']){delete _0xd0c5ad['name'];}_0x4c0abb[_0x0d4b('0x17')](_0x264f07)[_0x0d4b('0x24')](_0xd0c5ad);};}exports[_0x0d4b('0x25')]=function(_0x223b6a,_0x4156a8){var _0x1b7098={'raw':!![],'where':{'id':_0x223b6a[_0x0d4b('0x26')]['id']}},_0x10ffca={};_0x10ffca[_0x0d4b('0x27')]=_[_0x0d4b('0x28')](db[_0x0d4b('0x29')][_0x0d4b('0x2a')]);_0x10ffca['query']=_[_0x0d4b('0x28')](_0x223b6a[_0x0d4b('0x2b')]);_0x10ffca[_0x0d4b('0x2c')]=_['intersection'](_0x10ffca[_0x0d4b('0x27')],_0x10ffca['query']);_0x1b7098[_0x0d4b('0x2d')]=_['intersection'](_0x10ffca[_0x0d4b('0x27')],qs[_0x0d4b('0x2e')](_0x223b6a['query'][_0x0d4b('0x2e')]));_0x1b7098['attributes']=_0x1b7098[_0x0d4b('0x2d')][_0x0d4b('0x2f')]?_0x1b7098[_0x0d4b('0x2d')]:_0x10ffca[_0x0d4b('0x27')];if(_0x223b6a['query'][_0x0d4b('0x30')]){_0x1b7098[_0x0d4b('0x31')]=[{'all':!![]}];}_0x1b7098=_[_0x0d4b('0x32')]({},_0x1b7098,_0x223b6a[_0x0d4b('0x33')]);return db['ChatProactiveAction'][_0x0d4b('0x34')](_0x1b7098)['then'](handleEntityNotFound(_0x4156a8,null))[_0x0d4b('0x22')](respondWithResult(_0x4156a8,null))['catch'](handleError(_0x4156a8,null));};exports[_0x0d4b('0x35')]=function(_0x268d7a,_0x1418dc){return db[_0x0d4b('0x29')][_0x0d4b('0x35')](_0x268d7a['body'],{})[_0x0d4b('0x22')](respondWithResult(_0x1418dc,0xc9))[_0x0d4b('0x36')](handleError(_0x1418dc,null));};exports[_0x0d4b('0x21')]=function(_0x6f5410,_0x3cfa49){if(_0x6f5410[_0x0d4b('0x37')]['id']){delete _0x6f5410['body']['id'];}return db[_0x0d4b('0x29')]['find']({'where':{'id':_0x6f5410['params']['id']}})[_0x0d4b('0x22')](handleEntityNotFound(_0x3cfa49,null))['then'](saveUpdates(_0x6f5410[_0x0d4b('0x37')],null))[_0x0d4b('0x22')](respondWithResult(_0x3cfa49,null))[_0x0d4b('0x36')](handleError(_0x3cfa49,null));};exports[_0x0d4b('0x38')]=function(_0xa59ef4,_0x48c26d){return db[_0x0d4b('0x29')][_0x0d4b('0x34')]({'where':{'id':_0xa59ef4[_0x0d4b('0x26')]['id']}})[_0x0d4b('0x22')](handleEntityNotFound(_0x48c26d,null))[_0x0d4b('0x22')](removeEntity(_0x48c26d,null))[_0x0d4b('0x36')](handleError(_0x48c26d,null));};
\ No newline at end of file
+var _0xef6d=['sendStatus','end','status','count','json','reject','update','then','destroy','error','stack','name','params','keys','ChatProactiveAction','query','filters','intersection','model','attributes','fields','includeAll','include','merge','options','catch','create','body','find','html-pdf','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb'];(function(_0x570a5d,_0x5aefc3){var _0x1bedf8=function(_0x3d1e1d){while(--_0x3d1e1d){_0x570a5d['push'](_0x570a5d['shift']());}};_0x1bedf8(++_0x5aefc3);}(_0xef6d,0x1df));var _0xdef6=function(_0x16451c,_0x52fdb2){_0x16451c=_0x16451c-0x0;var _0x28dc55=_0xef6d[_0x16451c];return _0x28dc55;};'use strict';var pdf=require(_0xdef6('0x0'));var emlformat=require(_0xdef6('0x1'));var rimraf=require(_0xdef6('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xdef6('0x3'));var moment=require(_0xdef6('0x4'));var BPromise=require(_0xdef6('0x5'));var Mustache=require(_0xdef6('0x6'));var util=require(_0xdef6('0x7'));var path=require('path');var sox=require(_0xdef6('0x8'));var csv=require(_0xdef6('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xdef6('0xa'));var squel=require('squel');var crypto=require(_0xdef6('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdef6('0xc'));var toCsv=require(_0xdef6('0x9'));var querystring=require(_0xdef6('0xd'));var Papa=require(_0xdef6('0xe'));var Redis=require(_0xdef6('0xf'));var qs=require(_0xdef6('0x10'));var logger=require(_0xdef6('0x11'))(_0xdef6('0x12'));var utils=require(_0xdef6('0x13'));var config=require('../../config/environment');var db=require(_0xdef6('0x14'))['db'];function respondWithStatusCode(_0x588562,_0x36d721){_0x36d721=_0x36d721||0xcc;return function(_0x53f545){if(_0x53f545){return _0x588562[_0xdef6('0x15')](_0x36d721);}return _0x588562['status'](_0x36d721)[_0xdef6('0x16')]();};}function respondWithResult(_0x2dc505,_0x3b3b50){_0x3b3b50=_0x3b3b50||0xc8;return function(_0x223041){if(_0x223041){return _0x2dc505[_0xdef6('0x17')](_0x3b3b50)['json'](_0x223041);}};}function respondWithFilteredResult(_0x45452f,_0x3a0e12){return function(_0x42f4cc){if(_0x42f4cc){var _0x5be9ad=_0x42f4cc[_0xdef6('0x18')],_0x18b002=_0x3a0e12['offset'],_0x3f6521=_0x3a0e12['offset']+_0x3a0e12['limit'],_0x347796;if(_0x3f6521>=_0x5be9ad){_0x3f6521=_0x5be9ad;_0x347796=0xc8;}else{_0x347796=0xce;}_0x45452f[_0xdef6('0x17')](_0x347796);return _0x45452f['set']('Content-Range',_0x18b002+'-'+_0x3f6521+'/'+_0x5be9ad)[_0xdef6('0x19')](_0x42f4cc);}return null;};}function patchUpdates(_0x44dfae){return function(_0x233275){try{jsonpatch['apply'](_0x233275,_0x44dfae,!![]);}catch(_0x5af81b){return BPromise[_0xdef6('0x1a')](_0x5af81b);}return _0x233275['save']();};}function saveUpdates(_0x1e06f9,_0x11c24e){return function(_0x4d2ce5){if(_0x4d2ce5){return _0x4d2ce5[_0xdef6('0x1b')](_0x1e06f9)[_0xdef6('0x1c')](function(_0x1cdc07){return _0x1cdc07;});}return null;};}function removeEntity(_0x3c6da5,_0x2f7508){return function(_0xbd6e30){if(_0xbd6e30){return _0xbd6e30[_0xdef6('0x1d')]()[_0xdef6('0x1c')](function(){_0x3c6da5[_0xdef6('0x17')](0xcc)[_0xdef6('0x16')]();});}};}function handleEntityNotFound(_0x53f18e,_0x31d8d4){return function(_0x1b0490){if(!_0x1b0490){_0x53f18e[_0xdef6('0x15')](0x194);}return _0x1b0490;};}function handleError(_0x3c55fa,_0x2ecceb){_0x2ecceb=_0x2ecceb||0x1f4;return function(_0x1b87a6){logger[_0xdef6('0x1e')](_0x1b87a6[_0xdef6('0x1f')]);if(_0x1b87a6[_0xdef6('0x20')]){delete _0x1b87a6['name'];}_0x3c55fa[_0xdef6('0x17')](_0x2ecceb)['send'](_0x1b87a6);};}exports['show']=function(_0x555f30,_0x5904fa){var _0x456017={'raw':!![],'where':{'id':_0x555f30[_0xdef6('0x21')]['id']}},_0x1d908b={};_0x1d908b['model']=_[_0xdef6('0x22')](db[_0xdef6('0x23')]['rawAttributes']);_0x1d908b[_0xdef6('0x24')]=_[_0xdef6('0x22')](_0x555f30[_0xdef6('0x24')]);_0x1d908b[_0xdef6('0x25')]=_[_0xdef6('0x26')](_0x1d908b[_0xdef6('0x27')],_0x1d908b[_0xdef6('0x24')]);_0x456017[_0xdef6('0x28')]=_['intersection'](_0x1d908b[_0xdef6('0x27')],qs[_0xdef6('0x29')](_0x555f30[_0xdef6('0x24')][_0xdef6('0x29')]));_0x456017[_0xdef6('0x28')]=_0x456017[_0xdef6('0x28')]['length']?_0x456017[_0xdef6('0x28')]:_0x1d908b['model'];if(_0x555f30[_0xdef6('0x24')][_0xdef6('0x2a')]){_0x456017[_0xdef6('0x2b')]=[{'all':!![]}];}_0x456017=_[_0xdef6('0x2c')]({},_0x456017,_0x555f30[_0xdef6('0x2d')]);return db[_0xdef6('0x23')]['find'](_0x456017)[_0xdef6('0x1c')](handleEntityNotFound(_0x5904fa,null))[_0xdef6('0x1c')](respondWithResult(_0x5904fa,null))[_0xdef6('0x2e')](handleError(_0x5904fa,null));};exports['create']=function(_0x320bc8,_0xc03b9d){return db[_0xdef6('0x23')][_0xdef6('0x2f')](_0x320bc8[_0xdef6('0x30')],{})[_0xdef6('0x1c')](respondWithResult(_0xc03b9d,0xc9))[_0xdef6('0x2e')](handleError(_0xc03b9d,null));};exports[_0xdef6('0x1b')]=function(_0x4118fe,_0x46b3f3){if(_0x4118fe[_0xdef6('0x30')]['id']){delete _0x4118fe['body']['id'];}return db[_0xdef6('0x23')][_0xdef6('0x31')]({'where':{'id':_0x4118fe[_0xdef6('0x21')]['id']}})['then'](handleEntityNotFound(_0x46b3f3,null))[_0xdef6('0x1c')](saveUpdates(_0x4118fe[_0xdef6('0x30')],null))[_0xdef6('0x1c')](respondWithResult(_0x46b3f3,null))[_0xdef6('0x2e')](handleError(_0x46b3f3,null));};exports[_0xdef6('0x1d')]=function(_0x323aa9,_0x473ff8){return db[_0xdef6('0x23')][_0xdef6('0x31')]({'where':{'id':_0x323aa9['params']['id']}})[_0xdef6('0x1c')](handleEntityNotFound(_0x473ff8,null))[_0xdef6('0x1c')](removeEntity(_0x473ff8,null))[_0xdef6('0x2e')](handleError(_0x473ff8,null));};
\ No newline at end of file
index d189ba6..d540d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['chat_proactive_actions','util','../../config/logger','api','bluebird','request-promise','exports','define','ChatProactiveAction'];(function(_0x19c6c3,_0x329746){var _0x148eea=function(_0x3b25d4){while(--_0x3b25d4){_0x19c6c3['push'](_0x19c6c3['shift']());}};_0x148eea(++_0x329746);}(_0x2032,0xd9));var _0x2203=function(_0x27ab41,_0x49a9df){_0x27ab41=_0x27ab41-0x0;var _0x538e4d=_0x2032[_0x27ab41];return _0x538e4d;};'use strict';var _=require('lodash');var util=require(_0x2203('0x0'));var logger=require(_0x2203('0x1'))(_0x2203('0x2'));var moment=require('moment');var BPromise=require(_0x2203('0x3'));var rp=require(_0x2203('0x4'));var attributes=require('./chatProactiveAction.attributes');module[_0x2203('0x5')]=function(_0x880dcd,_0x44ccfd){return _0x880dcd[_0x2203('0x6')](_0x2203('0x7'),attributes,{'tableName':_0x2203('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x57ca=['exports','define','ChatProactiveAction','chat_proactive_actions','util','../../config/logger','moment','bluebird','request-promise','./chatProactiveAction.attributes'];(function(_0x1474f5,_0x343679){var _0x3c901f=function(_0x2df6de){while(--_0x2df6de){_0x1474f5['push'](_0x1474f5['shift']());}};_0x3c901f(++_0x343679);}(_0x57ca,0x108));var _0xa57c=function(_0x3de2e7,_0x39aa2b){_0x3de2e7=_0x3de2e7-0x0;var _0x116f34=_0x57ca[_0x3de2e7];return _0x116f34;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var logger=require(_0xa57c('0x1'))('api');var moment=require(_0xa57c('0x2'));var BPromise=require(_0xa57c('0x3'));var rp=require(_0xa57c('0x4'));var attributes=require(_0xa57c('0x5'));module[_0xa57c('0x6')]=function(_0x48be2d,_0x40ba22){return _0x48be2d[_0xa57c('0x7')](_0xa57c('0x8'),attributes,{'tableName':_0xa57c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e26fced..559c707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\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(_0x489c26,_0x2af2a0){var _0x34c402=function(_0x5dbf6b){while(--_0x5dbf6b){_0x489c26['push'](_0x489c26['shift']());}};_0x34c402(++_0x2af2a0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\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(_0x1aa616,_0x31754c){var _0x31f9b6=function(_0x78fff7){while(--_0x78fff7){_0x1aa616['push'](_0x1aa616['shift']());}};_0x31f9b6(++_0x31754c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'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 bce2af4..2d46744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be1=['put','/:id','update','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','show','create'];(function(_0x22f632,_0x24b585){var _0x36b883=function(_0x9d5bbb){while(--_0x9d5bbb){_0x22f632['push'](_0x22f632['shift']());}};_0x36b883(++_0x24b585);}(_0x7be1,0x165));var _0x17be=function(_0x4b2b2c,_0x17cbcc){_0x4b2b2c=_0x4b2b2c-0x0;var _0x47c263=_0x7be1[_0x4b2b2c];return _0x47c263;};'use strict';var multer=require(_0x17be('0x0'));var util=require(_0x17be('0x1'));var path=require(_0x17be('0x2'));var timeout=require('connect-timeout');var express=require(_0x17be('0x3'));var router=express[_0x17be('0x4')]();var auth=require(_0x17be('0x5'));var interaction=require(_0x17be('0x6'));var config=require(_0x17be('0x7'));var controller=require('./chatProactiveAction.controller');router['get']('/:id',auth[_0x17be('0x8')](),controller[_0x17be('0x9')]);router['post']('/',auth[_0x17be('0x8')](),controller[_0x17be('0xa')]);router[_0x17be('0xb')](_0x17be('0xc'),auth[_0x17be('0x8')](),controller[_0x17be('0xd')]);router['delete'](_0x17be('0xc'),auth['isAuthenticated'](),controller[_0x17be('0xe')]);module[_0x17be('0xf')]=router;
\ No newline at end of file
+var _0x9563=['show','post','create','put','update','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','./chatProactiveAction.controller','/:id','isAuthenticated'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0x9563,0x1e7));var _0x3956=function(_0x4141c7,_0x556bd5){_0x4141c7=_0x4141c7-0x0;var _0x1f0db2=_0x9563[_0x4141c7];return _0x1f0db2;};'use strict';var multer=require(_0x3956('0x0'));var util=require(_0x3956('0x1'));var path=require('path');var timeout=require(_0x3956('0x2'));var express=require(_0x3956('0x3'));var router=express[_0x3956('0x4')]();var auth=require(_0x3956('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3956('0x6'));router['get'](_0x3956('0x7'),auth[_0x3956('0x8')](),controller[_0x3956('0x9')]);router[_0x3956('0xa')]('/',auth['isAuthenticated'](),controller[_0x3956('0xb')]);router[_0x3956('0xc')](_0x3956('0x7'),auth[_0x3956('0x8')](),controller[_0x3956('0xd')]);router['delete']('/:id',auth[_0x3956('0x8')](),controller[_0x3956('0xe')]);module[_0x3956('0xf')]=router;
\ No newline at end of file
index 4d8b464..836a665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3df=['name','STRING','sequelize'];(function(_0x56f96b,_0x1ab22d){var _0x3f051c=function(_0x44d9cc){while(--_0x44d9cc){_0x56f96b['push'](_0x56f96b['shift']());}};_0x3f051c(++_0x1ab22d);}(_0xe3df,0x1be));var _0xfe3d=function(_0x3b97f7,_0x142159){_0x3b97f7=_0x3b97f7-0x0;var _0xa8a490=_0xe3df[_0x3b97f7];return _0xa8a490;};'use strict';var Sequelize=require(_0xfe3d('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xfe3d('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfe3d('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory','beepall','roundrobin')}};
\ No newline at end of file
+var _0xed2c=['ENUM','rrmemory','roundrobin','sequelize','exports','STRING','name'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0xed2c,0xf1));var _0xced2=function(_0x1ac33a,_0x52f6f8){_0x1ac33a=_0x1ac33a-0x0;var _0x3b6b87=_0xed2c[_0x1ac33a];return _0x3b6b87;};'use strict';var Sequelize=require(_0xced2('0x0'));module[_0xced2('0x1')]={'name':{'type':Sequelize[_0xced2('0x2')],'unique':_0xced2('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xced2('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xced2('0x4')](_0xced2('0x5'),'beepall',_0xced2('0x6'))}};
\ No newline at end of file
index c4a8507..4473de1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb270=['register','http','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','message','result','sendStatus','status','end','count','offset','limit','set','Content-Range','reject','update','destroy','get','stack','name','index','ChatQueue','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','add','day','merge','filter','map','key','options','includeAll','include','findAll','rows','catch','show','create','body','user','role','ChatQueues','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','describe','getMembers','findOne','UserChatQueue','sort','pick','ChatQueueId','User','findAndCountAll','UserId','chatPause','updatedAt','createdAt','format','SIP','getTeams','Team','addTeams','ids','Agents','union','removeTeams','removeAgents','addAgents','omit','spread','emit','userChatQueue:save','userChatQueue:remove','getAgents','html-pdf','rimraf','zip-dir','moment','bluebird','util','sox','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./chatQueue.socket'];(function(_0x53f3f4,_0x26d26e){var _0x4dde77=function(_0x11ae64){while(--_0x11ae64){_0x53f3f4['push'](_0x53f3f4['shift']());}};_0x4dde77(++_0x26d26e);}(_0xb270,0xd6));var _0x0b27=function(_0x25fded,_0x34216e){_0x25fded=_0x25fded-0x0;var _0x269156=_0xb270[_0x25fded];return _0x269156;};'use strict';var pdf=require(_0x0b27('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x0b27('0x1'));var zipdir=require(_0x0b27('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0b27('0x3'));var BPromise=require(_0x0b27('0x4'));var Mustache=require('mustache');var util=require(_0x0b27('0x5'));var path=require('path');var sox=require(_0x0b27('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x0b27('0x7'));var squel=require('squel');var crypto=require(_0x0b27('0x8'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0b27('0x9'));var querystring=require(_0x0b27('0xa'));var Papa=require(_0x0b27('0xb'));var Redis=require(_0x0b27('0xc'));var qs=require('../../components/parsers/qs');var logger=require(_0x0b27('0xd'))(_0x0b27('0xe'));var utils=require(_0x0b27('0xf'));var config=require(_0x0b27('0x10'));var db=require(_0x0b27('0x11'))['db'];config[_0x0b27('0x12')]=_[_0x0b27('0x13')](config[_0x0b27('0x12')],{'host':_0x0b27('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0b27('0x12')]));require(_0x0b27('0x15'))[_0x0b27('0x16')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x0b27('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x5a0156,_0x15b76e,_0x595dd7,_0x281fef){return new BPromise(function(_0x4a742c,_0x27b572){var _0x581cf8=_0x281fef||client;return _0x581cf8['request'](_0x5a0156,_0x595dd7)[_0x0b27('0x18')](function(_0x2eb64c){logger[_0x0b27('0x19')](_0x0b27('0x1a'),_0x15b76e,_0x0b27('0x1b'));logger[_0x0b27('0x1c')](_0x0b27('0x1d'),_0x15b76e,_0x0b27('0x1b'),JSON['stringify'](_0x2eb64c));if(_0x2eb64c[_0x0b27('0x1e')]){if(_0x2eb64c[_0x0b27('0x1e')]['code']===0x1f4){logger[_0x0b27('0x1e')](_0x0b27('0x1a'),_0x15b76e,_0x2eb64c[_0x0b27('0x1e')][_0x0b27('0x1f')]);return _0x27b572(_0x2eb64c[_0x0b27('0x1e')][_0x0b27('0x1f')]);}logger['error'](_0x0b27('0x1a'),_0x15b76e,_0x2eb64c['error'][_0x0b27('0x1f')]);return _0x4a742c(_0x2eb64c['error'][_0x0b27('0x1f')]);}else{logger[_0x0b27('0x19')](_0x0b27('0x1a'),_0x15b76e,_0x0b27('0x1b'));_0x4a742c(_0x2eb64c[_0x0b27('0x20')]['message']);}})['catch'](function(_0x411658){logger[_0x0b27('0x1e')]('ChatQueue,\x20%s,\x20%s',_0x15b76e,_0x411658);_0x27b572(_0x411658);});});}function respondWithStatusCode(_0x1c9fff,_0xe490d8){_0xe490d8=_0xe490d8||0xcc;return function(_0x1c50f9){if(_0x1c50f9){return _0x1c9fff[_0x0b27('0x21')](_0xe490d8);}return _0x1c9fff[_0x0b27('0x22')](_0xe490d8)[_0x0b27('0x23')]();};}function respondWithResult(_0x22375d,_0x2a4da3){_0x2a4da3=_0x2a4da3||0xc8;return function(_0x370ed2){if(_0x370ed2){return _0x22375d[_0x0b27('0x22')](_0x2a4da3)['json'](_0x370ed2);}};}function respondWithFilteredResult(_0x4ec1eb,_0x3a39b6){return function(_0x2f5dff){if(_0x2f5dff){var _0x1de488=_0x2f5dff[_0x0b27('0x24')],_0x3ad124=_0x3a39b6[_0x0b27('0x25')],_0x4a3776=_0x3a39b6[_0x0b27('0x25')]+_0x3a39b6[_0x0b27('0x26')],_0x1b6fff;if(_0x4a3776>=_0x1de488){_0x4a3776=_0x1de488;_0x1b6fff=0xc8;}else{_0x1b6fff=0xce;}_0x4ec1eb[_0x0b27('0x22')](_0x1b6fff);return _0x4ec1eb[_0x0b27('0x27')](_0x0b27('0x28'),_0x3ad124+'-'+_0x4a3776+'/'+_0x1de488)['json'](_0x2f5dff);}return null;};}function patchUpdates(_0x10a80a){return function(_0x33e347){try{jsonpatch['apply'](_0x33e347,_0x10a80a,!![]);}catch(_0x5e8376){return BPromise[_0x0b27('0x29')](_0x5e8376);}return _0x33e347['save']();};}function saveUpdates(_0xf5dff6,_0x51a470){return function(_0x5cfa63){if(_0x5cfa63){return _0x5cfa63[_0x0b27('0x2a')](_0xf5dff6)[_0x0b27('0x18')](function(_0x3f8e97){return _0x3f8e97;});}return null;};}function removeEntity(_0x2d225d,_0x3d8336){return function(_0x4c509d){if(_0x4c509d){return _0x4c509d[_0x0b27('0x2b')]()[_0x0b27('0x18')](function(){var _0x106d30=_0x4c509d[_0x0b27('0x2c')]({'plain':!![]});var _0xc5850c='ChatQueues';return db['UserProfileResource'][_0x0b27('0x2b')]({'where':{'type':_0xc5850c,'resourceId':_0x106d30['id']}})['then'](function(){return _0x4c509d;});})['then'](function(){_0x2d225d[_0x0b27('0x22')](0xcc)[_0x0b27('0x23')]();});}};}function handleEntityNotFound(_0x142b7d,_0x266f2c){return function(_0x5846e4){if(!_0x5846e4){_0x142b7d[_0x0b27('0x21')](0x194);}return _0x5846e4;};}function handleError(_0x16ab3f,_0x331cb2){_0x331cb2=_0x331cb2||0x1f4;return function(_0x21278b){logger[_0x0b27('0x1e')](_0x21278b[_0x0b27('0x2d')]);if(_0x21278b[_0x0b27('0x2e')]){delete _0x21278b[_0x0b27('0x2e')];}_0x16ab3f[_0x0b27('0x22')](_0x331cb2)['send'](_0x21278b);};}exports[_0x0b27('0x2f')]=function(_0x74d84a,_0x20953c){var _0x5b78bf={},_0x3a6fe4={},_0xd19722={'count':0x0,'rows':[]};var _0x239c7a=db[_0x0b27('0x30')][_0x0b27('0x31')];_0x3a6fe4[_0x0b27('0x32')]=_[_0x0b27('0x33')](_0x239c7a);var _0x4f8798={'dateStart':_0x74d84a[_0x0b27('0x34')][_0x0b27('0x35')],'dateEnd':_0x74d84a['query'][_0x0b27('0x36')]};delete _0x74d84a[_0x0b27('0x34')][_0x0b27('0x35')];delete _0x74d84a[_0x0b27('0x34')][_0x0b27('0x36')];_0x3a6fe4['query']=_[_0x0b27('0x33')](_0x74d84a[_0x0b27('0x34')]);_0x3a6fe4[_0x0b27('0x37')]=_[_0x0b27('0x38')](_0x3a6fe4[_0x0b27('0x32')],_0x3a6fe4[_0x0b27('0x34')]);_0x5b78bf['attributes']=_[_0x0b27('0x38')](_0x3a6fe4[_0x0b27('0x32')],qs[_0x0b27('0x39')](_0x74d84a[_0x0b27('0x34')][_0x0b27('0x39')]));_0x5b78bf[_0x0b27('0x3a')]=_0x5b78bf['attributes'][_0x0b27('0x3b')]?_0x5b78bf[_0x0b27('0x3a')]:_0x3a6fe4[_0x0b27('0x32')];if(!_0x74d84a[_0x0b27('0x34')][_0x0b27('0x3c')](_0x0b27('0x3d'))){_0x5b78bf[_0x0b27('0x26')]=qs['limit'](_0x74d84a['query'][_0x0b27('0x26')]);_0x5b78bf[_0x0b27('0x25')]=qs['offset'](_0x74d84a[_0x0b27('0x34')]['offset']);}_0x5b78bf[_0x0b27('0x3e')]=qs['sort'](_0x74d84a['query']['sort']);_0x5b78bf[_0x0b27('0x3f')]=qs['filters'](_['pick'](_0x74d84a['query'],_0x3a6fe4[_0x0b27('0x37')]));if(_0x4f8798[_0x0b27('0x35')]){if(_0x4f8798[_0x0b27('0x36')]){_0x4f8798[_0x0b27('0x36')]=moment(_0x4f8798['dateEnd'])[_0x0b27('0x40')](0x1,_0x0b27('0x41'));}else{_0x4f8798['dateEnd']=moment(_0x4f8798['dateStart'])[_0x0b27('0x40')](0x1,_0x0b27('0x41'));}_[_0x0b27('0x42')](_0x5b78bf[_0x0b27('0x3f')],{'createdAt':{'$gte':_0x4f8798['dateStart'],'$lte':_0x4f8798[_0x0b27('0x36')]}});}if(_0x74d84a[_0x0b27('0x34')][_0x0b27('0x43')]){_0x5b78bf[_0x0b27('0x3f')]=_[_0x0b27('0x42')](_0x5b78bf[_0x0b27('0x3f')],{'$or':_[_0x0b27('0x44')](_0x239c7a,function(_0x184a69){if(_0x184a69['type'][_0x0b27('0x45')]!=='VIRTUAL'){var _0x4d793c={};_0x4d793c[_0x184a69['field']]={'$like':'%'+_0x74d84a[_0x0b27('0x34')]['filter']+'%'};return _0x4d793c;}})});}_0x5b78bf=_['merge']({},_0x5b78bf,_0x74d84a[_0x0b27('0x46')]);var _0x3cd7ab={'where':_0x5b78bf['where']};return db[_0x0b27('0x30')]['count'](_0x3cd7ab)['then'](function(_0x3f84a0){_0xd19722[_0x0b27('0x24')]=_0x3f84a0;if(_0x74d84a['query'][_0x0b27('0x47')]){_0x5b78bf[_0x0b27('0x48')]=[{'all':!![]}];}return db[_0x0b27('0x30')][_0x0b27('0x49')](_0x5b78bf);})[_0x0b27('0x18')](function(_0x2b57fd){_0xd19722[_0x0b27('0x4a')]=_0x2b57fd;return _0xd19722;})['then'](respondWithFilteredResult(_0x20953c,_0x5b78bf))[_0x0b27('0x4b')](handleError(_0x20953c,null));};exports[_0x0b27('0x4c')]=function(_0x3e826c,_0x334fdb){var _0x10c2d7={'raw':!![],'where':{'id':_0x3e826c['params']['id']}},_0x3432ca={};_0x3432ca[_0x0b27('0x32')]=_[_0x0b27('0x33')](db[_0x0b27('0x30')][_0x0b27('0x31')]);_0x3432ca['query']=_[_0x0b27('0x33')](_0x3e826c[_0x0b27('0x34')]);_0x3432ca['filters']=_['intersection'](_0x3432ca[_0x0b27('0x32')],_0x3432ca[_0x0b27('0x34')]);_0x10c2d7[_0x0b27('0x3a')]=_[_0x0b27('0x38')](_0x3432ca[_0x0b27('0x32')],qs['fields'](_0x3e826c[_0x0b27('0x34')][_0x0b27('0x39')]));_0x10c2d7['attributes']=_0x10c2d7['attributes'][_0x0b27('0x3b')]?_0x10c2d7[_0x0b27('0x3a')]:_0x3432ca[_0x0b27('0x32')];if(_0x3e826c['query']['includeAll']){_0x10c2d7[_0x0b27('0x48')]=[{'all':!![]}];}_0x10c2d7=_[_0x0b27('0x42')]({},_0x10c2d7,_0x3e826c[_0x0b27('0x46')]);return db[_0x0b27('0x30')]['find'](_0x10c2d7)['then'](handleEntityNotFound(_0x334fdb,null))[_0x0b27('0x18')](respondWithResult(_0x334fdb,null))[_0x0b27('0x4b')](handleError(_0x334fdb,null));};exports['create']=function(_0x50c0c1,_0xe7fd1f){return db[_0x0b27('0x30')][_0x0b27('0x4d')](_0x50c0c1[_0x0b27('0x4e')],{})[_0x0b27('0x18')](function(_0x191710){var _0xad8b4f=_0x50c0c1[_0x0b27('0x4f')][_0x0b27('0x2c')]({'plain':!![]});if(!_0xad8b4f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xad8b4f[_0x0b27('0x50')]===_0x0b27('0x4f')){var _0xadfa4b=_0x191710[_0x0b27('0x2c')]({'plain':!![]});var _0x34b2bd=_0x0b27('0x51');return db['UserProfileSection']['find']({'where':{'name':_0x34b2bd,'userProfileId':_0xad8b4f[_0x0b27('0x52')]},'raw':!![]})[_0x0b27('0x18')](function(_0x3e22cc){if(_0x3e22cc&&_0x3e22cc[_0x0b27('0x53')]===0x0){return db[_0x0b27('0x54')][_0x0b27('0x4d')]({'name':_0xadfa4b[_0x0b27('0x2e')],'resourceId':_0xadfa4b['id'],'type':_0x3e22cc['name'],'sectionId':_0x3e22cc['id']},{})['then'](function(){return _0x191710;});}else{return _0x191710;}})[_0x0b27('0x4b')](function(_0x4c1351){logger[_0x0b27('0x1e')](_0x0b27('0x55'),_0x4c1351);throw _0x4c1351;});}return _0x191710;})[_0x0b27('0x18')](respondWithResult(_0xe7fd1f,0xc9))[_0x0b27('0x4b')](handleError(_0xe7fd1f,null));};exports['update']=function(_0x13a0c8,_0x1d6f82){if(_0x13a0c8[_0x0b27('0x4e')]['id']){delete _0x13a0c8[_0x0b27('0x4e')]['id'];}return db[_0x0b27('0x30')][_0x0b27('0x56')]({'where':{'id':_0x13a0c8[_0x0b27('0x57')]['id']}})[_0x0b27('0x18')](handleEntityNotFound(_0x1d6f82,null))[_0x0b27('0x18')](saveUpdates(_0x13a0c8['body'],null))[_0x0b27('0x18')](respondWithResult(_0x1d6f82,null))[_0x0b27('0x4b')](handleError(_0x1d6f82,null));};exports[_0x0b27('0x2b')]=function(_0x451c34,_0x3eeaa1){return db['ChatQueue'][_0x0b27('0x56')]({'where':{'id':_0x451c34[_0x0b27('0x57')]['id']}})[_0x0b27('0x18')](handleEntityNotFound(_0x3eeaa1,null))['then'](removeEntity(_0x3eeaa1,null))[_0x0b27('0x4b')](handleError(_0x3eeaa1,null));};exports[_0x0b27('0x58')]=function(_0x1944df,_0x36055c){return db[_0x0b27('0x30')][_0x0b27('0x58')]()[_0x0b27('0x18')](respondWithResult(_0x36055c,null))[_0x0b27('0x4b')](handleError(_0x36055c,null));};exports[_0x0b27('0x59')]=function(_0x65a0bf,_0x4b3301,_0x346e41){var _0x437587={'raw':!![],'where':{}},_0x2bc519={},_0x389c47;return db[_0x0b27('0x30')][_0x0b27('0x5a')]({'where':{'id':_0x65a0bf[_0x0b27('0x57')]['id']}})[_0x0b27('0x18')](handleEntityNotFound(_0x4b3301,null))[_0x0b27('0x18')](function(_0x5e8432){if(_0x5e8432){_0x389c47=_0x5e8432[_0x0b27('0x2c')]({'plain':!![]});_0x2bc519[_0x0b27('0x32')]=_[_0x0b27('0x33')](db[_0x0b27('0x5b')][_0x0b27('0x31')]);_0x2bc519[_0x0b27('0x34')]=_['keys'](_0x65a0bf[_0x0b27('0x34')]);_0x2bc519[_0x0b27('0x37')]=_[_0x0b27('0x38')](_0x2bc519[_0x0b27('0x32')],_0x2bc519[_0x0b27('0x34')]);_0x437587[_0x0b27('0x3a')]=_['intersection'](_0x2bc519[_0x0b27('0x32')],qs[_0x0b27('0x39')](_0x65a0bf[_0x0b27('0x34')]['fields']));_0x437587[_0x0b27('0x3a')]=_0x437587['attributes'][_0x0b27('0x3b')]?_0x437587['attributes']:_0x2bc519[_0x0b27('0x32')];if(!_0x65a0bf[_0x0b27('0x34')][_0x0b27('0x3c')](_0x0b27('0x3d'))){_0x437587[_0x0b27('0x26')]=qs[_0x0b27('0x26')](_0x65a0bf[_0x0b27('0x34')][_0x0b27('0x26')]);_0x437587[_0x0b27('0x25')]=qs[_0x0b27('0x25')](_0x65a0bf[_0x0b27('0x34')][_0x0b27('0x25')]);}_0x437587[_0x0b27('0x3e')]=qs[_0x0b27('0x5c')](_0x65a0bf['query'][_0x0b27('0x5c')]);_0x437587[_0x0b27('0x3f')]=qs['filters'](_[_0x0b27('0x5d')](_0x65a0bf[_0x0b27('0x34')],_0x2bc519[_0x0b27('0x37')]));_0x437587[_0x0b27('0x3f')][_0x0b27('0x5e')]=_0x5e8432['id'];if(_0x65a0bf[_0x0b27('0x34')][_0x0b27('0x43')]){_0x437587[_0x0b27('0x3f')]=_['merge'](_0x437587[_0x0b27('0x3f')],{'$or':_[_0x0b27('0x44')](_0x437587[_0x0b27('0x3a')],function(_0x38ffdc){var _0x5cec7d={};_0x5cec7d[_0x38ffdc]={'$like':'%'+_0x65a0bf[_0x0b27('0x34')]['filter']+'%'};return _0x5cec7d;})});}_0x437587=_[_0x0b27('0x42')]({},_0x437587,_0x65a0bf[_0x0b27('0x46')]);return db[_0x0b27('0x5b')][_0x0b27('0x49')](_0x437587);}})[_0x0b27('0x18')](function(_0x1e7942){if(_0x1e7942){return db[_0x0b27('0x5f')][_0x0b27('0x60')]({'where':{'id':_[_0x0b27('0x44')](_0x1e7942,_0x0b27('0x61')),'role':'agent'},'attributes':['id',_0x0b27('0x2e'),_0x0b27('0x62'),_0x0b27('0x63'),_0x0b27('0x64')]});}})[_0x0b27('0x18')](function(_0xb7ec54){if(_0xb7ec54){return{'count':_0xb7ec54[_0x0b27('0x24')],'rows':_['map'](_0xb7ec54['rows'],function(_0x4746d2){return{'membername':_0x4746d2[_0x0b27('0x2e')],'UserId':_0x4746d2['id'],'queue_name':_0x389c47['name'],'ChatQueueId':_0x389c47['id'],'interface':util[_0x0b27('0x65')]('%s/%s',_0x0b27('0x66'),_0x4746d2[_0x0b27('0x2e')]),'penalty':0x0,'paused':_0x4746d2[_0x0b27('0x62')],'createdAt':_0x4746d2['createdAt'],'updatedAt':_0x4746d2[_0x0b27('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4b3301,_0x437587))[_0x0b27('0x4b')](handleError(_0x4b3301,null));};exports[_0x0b27('0x67')]=function(_0x4e223c,_0x292818,_0x51b3ca){var _0x14c8d8={};var _0x43a3b9={};var _0x168f3d;var _0x4b36bb;return db[_0x0b27('0x30')][_0x0b27('0x5a')]({'where':{'id':_0x4e223c[_0x0b27('0x57')]['id']}})['then'](handleEntityNotFound(_0x292818,null))[_0x0b27('0x18')](function(_0x4c9d9f){if(_0x4c9d9f){_0x168f3d=_0x4c9d9f;_0x43a3b9[_0x0b27('0x32')]=_[_0x0b27('0x33')](db[_0x0b27('0x68')][_0x0b27('0x31')]);_0x43a3b9[_0x0b27('0x34')]=_[_0x0b27('0x33')](_0x4e223c[_0x0b27('0x34')]);_0x43a3b9[_0x0b27('0x37')]=_[_0x0b27('0x38')](_0x43a3b9[_0x0b27('0x32')],_0x43a3b9['query']);_0x14c8d8[_0x0b27('0x3a')]=_[_0x0b27('0x38')](_0x43a3b9['model'],qs[_0x0b27('0x39')](_0x4e223c[_0x0b27('0x34')]['fields']));_0x14c8d8[_0x0b27('0x3a')]=_0x14c8d8[_0x0b27('0x3a')][_0x0b27('0x3b')]?_0x14c8d8[_0x0b27('0x3a')]:_0x43a3b9[_0x0b27('0x32')];_0x14c8d8[_0x0b27('0x3e')]=qs[_0x0b27('0x5c')](_0x4e223c[_0x0b27('0x34')][_0x0b27('0x5c')]);_0x14c8d8[_0x0b27('0x3f')]=qs['filters'](_[_0x0b27('0x5d')](_0x4e223c[_0x0b27('0x34')],_0x43a3b9[_0x0b27('0x37')]));if(_0x4e223c['query'][_0x0b27('0x43')]){_0x14c8d8[_0x0b27('0x3f')]=_[_0x0b27('0x42')](_0x14c8d8[_0x0b27('0x3f')],{'$or':_['map'](_0x14c8d8['attributes'],function(_0x5c14b0){var _0x4151f5={};_0x4151f5[_0x5c14b0]={'$like':'%'+_0x4e223c[_0x0b27('0x34')][_0x0b27('0x43')]+'%'};return _0x4151f5;})});}_0x14c8d8=_[_0x0b27('0x42')]({},_0x14c8d8,_0x4e223c[_0x0b27('0x46')]);return _0x168f3d[_0x0b27('0x67')](_0x14c8d8);}})[_0x0b27('0x18')](function(_0xfb4fe8){if(_0xfb4fe8){_0x4b36bb=_0xfb4fe8[_0x0b27('0x3b')];if(!_0x4e223c[_0x0b27('0x34')][_0x0b27('0x3c')](_0x0b27('0x3d'))){_0x14c8d8[_0x0b27('0x26')]=qs[_0x0b27('0x26')](_0x4e223c[_0x0b27('0x34')]['limit']);_0x14c8d8['offset']=qs[_0x0b27('0x25')](_0x4e223c[_0x0b27('0x34')][_0x0b27('0x25')]);}return _0x168f3d[_0x0b27('0x67')](_0x14c8d8);}})[_0x0b27('0x18')](function(_0x41baa6){if(_0x41baa6){return _0x41baa6?{'count':_0x4b36bb,'rows':_0x41baa6}:null;}})['then'](respondWithResult(_0x292818,null))[_0x0b27('0x4b')](handleError(_0x292818,null));};exports[_0x0b27('0x69')]=function(_0x3f9946,_0xb1d33a,_0xcaf771){var _0x3d276c=[];var _0x3f9ab7;return db['Team'][_0x0b27('0x49')]({'where':{'id':_0x3f9946['body'][_0x0b27('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x0b27('0x5f')],'as':_0x0b27('0x6b'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x3f2166){if(_0x3f2166){for(var _0x1a4433=0x0;_0x1a4433<_0x3f2166['length'];_0x1a4433+=0x1){for(var _0xe65c91=0x0;_0xe65c91<_0x3f2166[_0x1a4433][_0x0b27('0x6b')][_0x0b27('0x3b')];_0xe65c91+=0x1){_0x3d276c=_[_0x0b27('0x6c')](_0x3d276c,[_0x3f2166[_0x1a4433][_0x0b27('0x6b')][_0xe65c91]['id']]);}}return _0x3d276c;}})[_0x0b27('0x18')](function(_0x2b912b){if(_0x2b912b){return db[_0x0b27('0x30')][_0x0b27('0x56')]({'where':{'id':_0x3f9946[_0x0b27('0x57')]['id']}});}})[_0x0b27('0x18')](function(_0x3d369e){if(_0x3d369e){_0x3f9ab7=_0x3d369e;return _0x3f9ab7['addAgents'](_0x3d276c,{'penalty':_0x3f9946[_0x0b27('0x4e')]['penalty']});}})[_0x0b27('0x18')](function(_0x22a61c){if(_0x22a61c){return _0x3f9ab7['addTeams'](_0x3f9946['body'][_0x0b27('0x6a')]);}})[_0x0b27('0x18')](handleEntityNotFound(_0xb1d33a,null))[_0x0b27('0x18')](respondWithStatusCode(_0xb1d33a,null))['catch'](handleError(_0xb1d33a,null));};exports[_0x0b27('0x6d')]=function(_0x1362e1,_0x5579fd,_0xc48aef){var _0x3a9813=[];var _0x36ddda;return db['Team'][_0x0b27('0x49')]({'where':{'id':_0x1362e1[_0x0b27('0x34')][_0x0b27('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0b27('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x0b27('0x18')](function(_0x101eda){if(_0x101eda){for(var _0x990771=0x0;_0x990771<_0x101eda[_0x0b27('0x3b')];_0x990771+=0x1){for(var _0x2ad411=0x0;_0x2ad411<_0x101eda[_0x990771][_0x0b27('0x6b')][_0x0b27('0x3b')];_0x2ad411+=0x1){_0x3a9813=_['union'](_0x3a9813,[_0x101eda[_0x990771][_0x0b27('0x6b')][_0x2ad411]['id']]);}}return _0x3a9813;}})[_0x0b27('0x18')](function(_0x3aeda6){if(_0x3aeda6){return db['ChatQueue'][_0x0b27('0x56')]({'where':{'id':_0x1362e1['params']['id']}});}})[_0x0b27('0x18')](function(_0x1a1fe2){if(_0x1a1fe2){_0x36ddda=_0x1a1fe2;return _0x36ddda[_0x0b27('0x6e')](_0x3a9813);}})[_0x0b27('0x18')](function(_0x58cdb5){if(_0x36ddda){return _0x36ddda[_0x0b27('0x6d')](_0x1362e1[_0x0b27('0x34')][_0x0b27('0x6a')]);}})['then'](handleEntityNotFound(_0x5579fd,null))[_0x0b27('0x18')](respondWithStatusCode(_0x5579fd,null))[_0x0b27('0x4b')](handleError(_0x5579fd,null));};exports[_0x0b27('0x6f')]=function(_0x58a2db,_0x5bdf3d,_0x22fe3a){return db[_0x0b27('0x30')][_0x0b27('0x56')]({'where':{'id':_0x58a2db[_0x0b27('0x57')]['id']}})[_0x0b27('0x18')](handleEntityNotFound(_0x5bdf3d,null))[_0x0b27('0x18')](function(_0x15c676){if(_0x15c676){return _0x15c676[_0x0b27('0x6f')](_0x58a2db[_0x0b27('0x4e')][_0x0b27('0x6a')],_[_0x0b27('0x70')](_0x58a2db[_0x0b27('0x4e')],[_0x0b27('0x6a'),'id'])||{})[_0x0b27('0x71')](function(_0x369c9f){for(var _0x2c71de=0x0;_0x2c71de<_0x58a2db[_0x0b27('0x4e')]['ids'][_0x0b27('0x3b')];_0x2c71de+=0x1){socket[_0x0b27('0x72')](_0x0b27('0x73'),{'UserId':_0x58a2db[_0x0b27('0x4e')][_0x0b27('0x6a')][_0x2c71de],'ChatQueueId':_0x58a2db[_0x0b27('0x57')]['id']});}return _0x369c9f;});}})[_0x0b27('0x18')](respondWithResult(_0x5bdf3d,null))[_0x0b27('0x4b')](handleError(_0x5bdf3d,null));};exports['removeAgents']=function(_0x2b63cb,_0x550242,_0x1cb3ad){var _0x10906b;return db['ChatQueue']['find']({'where':{'id':_0x2b63cb[_0x0b27('0x57')]['id']}})[_0x0b27('0x18')](handleEntityNotFound(_0x550242,null))[_0x0b27('0x18')](function(_0x3a6a0a){if(_0x3a6a0a){return _0x3a6a0a[_0x0b27('0x6e')](_0x2b63cb[_0x0b27('0x34')][_0x0b27('0x6a')])['then'](function(_0x36be1b){if(_['isArray'](_0x2b63cb[_0x0b27('0x34')]['ids'])){for(var _0x67a104=0x0;_0x67a104<_0x2b63cb[_0x0b27('0x34')][_0x0b27('0x6a')][_0x0b27('0x3b')];_0x67a104+=0x1){socket[_0x0b27('0x72')](_0x0b27('0x74'),{'UserId':_0x2b63cb[_0x0b27('0x34')][_0x0b27('0x6a')][_0x67a104],'ChatQueueId':_0x2b63cb[_0x0b27('0x57')]['id']});}}else{socket[_0x0b27('0x72')](_0x0b27('0x74'),{'UserId':_0x2b63cb[_0x0b27('0x34')][_0x0b27('0x6a')],'ChatQueueId':_0x2b63cb['params']['id']});}});}})['then'](respondWithStatusCode(_0x550242,null))[_0x0b27('0x4b')](handleError(_0x550242,null));};exports[_0x0b27('0x75')]=function(_0x136547,_0x16f162,_0x72b3bf){var _0xa6df0b={};var _0x20434d={};var _0x2b0411;var _0x22e9cb;return db[_0x0b27('0x30')][_0x0b27('0x5a')]({'where':{'id':_0x136547['params']['id']}})[_0x0b27('0x18')](handleEntityNotFound(_0x16f162,null))[_0x0b27('0x18')](function(_0x1e6c3f){if(_0x1e6c3f){_0x2b0411=_0x1e6c3f;_0x20434d[_0x0b27('0x32')]=_[_0x0b27('0x33')](db[_0x0b27('0x5f')][_0x0b27('0x31')]);_0x20434d[_0x0b27('0x34')]=_['keys'](_0x136547[_0x0b27('0x34')]);_0x20434d[_0x0b27('0x37')]=_['intersection'](_0x20434d[_0x0b27('0x32')],_0x20434d[_0x0b27('0x34')]);_0xa6df0b[_0x0b27('0x3a')]=_[_0x0b27('0x38')](_0x20434d[_0x0b27('0x32')],qs[_0x0b27('0x39')](_0x136547[_0x0b27('0x34')][_0x0b27('0x39')]));_0xa6df0b[_0x0b27('0x3a')]=_0xa6df0b[_0x0b27('0x3a')][_0x0b27('0x3b')]?_0xa6df0b[_0x0b27('0x3a')]:_0x20434d[_0x0b27('0x32')];_0xa6df0b[_0x0b27('0x3e')]=qs[_0x0b27('0x5c')](_0x136547[_0x0b27('0x34')][_0x0b27('0x5c')]);_0xa6df0b['where']=qs[_0x0b27('0x37')](_[_0x0b27('0x5d')](_0x136547[_0x0b27('0x34')],_0x20434d[_0x0b27('0x37')]));if(_0x136547[_0x0b27('0x34')][_0x0b27('0x43')]){_0xa6df0b[_0x0b27('0x3f')]=_[_0x0b27('0x42')](_0xa6df0b[_0x0b27('0x3f')],{'$or':_[_0x0b27('0x44')](_0xa6df0b[_0x0b27('0x3a')],function(_0x557828){var _0x4cc8a9={};_0x4cc8a9[_0x557828]={'$like':'%'+_0x136547[_0x0b27('0x34')][_0x0b27('0x43')]+'%'};return _0x4cc8a9;})});}_0xa6df0b=_['merge']({},_0xa6df0b,_0x136547[_0x0b27('0x46')]);return _0x2b0411[_0x0b27('0x75')](_0xa6df0b);}})['then'](function(_0x2b7476){if(_0x2b7476){_0x22e9cb=_0x2b7476[_0x0b27('0x3b')];if(!_0x136547[_0x0b27('0x34')][_0x0b27('0x3c')](_0x0b27('0x3d'))){_0xa6df0b[_0x0b27('0x26')]=qs[_0x0b27('0x26')](_0x136547[_0x0b27('0x34')]['limit']);_0xa6df0b[_0x0b27('0x25')]=qs[_0x0b27('0x25')](_0x136547['query']['offset']);}return _0x2b0411['getAgents'](_0xa6df0b);}})['then'](function(_0x4baacd){if(_0x4baacd){return _0x4baacd?{'count':_0x22e9cb,'rows':_0x4baacd}:null;}})['then'](respondWithResult(_0x16f162,null))[_0x0b27('0x4b')](handleError(_0x16f162,null));};
\ No newline at end of file
+var _0x4645=['../../config/environment','../../mysqldb','redis','socket.io-emitter','./chatQueue.socket','register','jayson/promise','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','json','count','offset','limit','set','Content-Range','reject','update','destroy','get','ChatQueues','UserProfileResource','end','stack','name','index','rawAttributes','model','dateStart','dateEnd','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','add','day','merge','where','map','type','key','VIRTUAL','field','filter','ChatQueue','includeAll','include','rows','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserChatQueue','ChatQueueId','options','User','findAndCountAll','UserId','agent','updatedAt','format','%s/%s','SIP','chatPause','createdAt','Team','getTeams','addTeams','findAll','ids','Agents','union','addAgents','penalty','removeTeams','removeAgents','omit','spread','userChatQueue:save','isArray','emit','userChatQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils'];(function(_0x57252a,_0x1ceae9){var _0x2733a8=function(_0x1b8611){while(--_0x1b8611){_0x57252a['push'](_0x57252a['shift']());}};_0x2733a8(++_0x1ceae9);}(_0x4645,0x16f));var _0x5464=function(_0x2bf208,_0xeeadc3){_0x2bf208=_0x2bf208-0x0;var _0x5908b2=_0x4645[_0x2bf208];return _0x5908b2;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x5464('0x0'));var rimraf=require(_0x5464('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5464('0x2'));var rp=require(_0x5464('0x3'));var moment=require(_0x5464('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5464('0x5'));var util=require(_0x5464('0x6'));var path=require(_0x5464('0x7'));var sox=require('sox');var csv=require(_0x5464('0x8'));var ejs=require(_0x5464('0x9'));var fs=require('fs');var _=require(_0x5464('0xa'));var squel=require(_0x5464('0xb'));var crypto=require('crypto');var jsforce=require(_0x5464('0xc'));var deskjs=require(_0x5464('0xd'));var toCsv=require(_0x5464('0x8'));var querystring=require(_0x5464('0xe'));var Papa=require(_0x5464('0xf'));var Redis=require(_0x5464('0x10'));var qs=require(_0x5464('0x11'));var logger=require(_0x5464('0x12'))('api');var utils=require(_0x5464('0x13'));var config=require(_0x5464('0x14'));var db=require(_0x5464('0x15'))['db'];config[_0x5464('0x16')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5464('0x17'))(new Redis(config['redis']));require(_0x5464('0x18'))[_0x5464('0x19')](socket);var jayson=require(_0x5464('0x1a'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4be8c8,_0x307897,_0x54cd9a,_0x58788d){return new BPromise(function(_0x3b76e0,_0x32c4cf){var _0x49c56a=_0x58788d||client;return _0x49c56a['request'](_0x4be8c8,_0x54cd9a)[_0x5464('0x1b')](function(_0x35b53b){logger[_0x5464('0x1c')](_0x5464('0x1d'),_0x307897,_0x5464('0x1e'));logger['debug'](_0x5464('0x1f'),_0x307897,_0x5464('0x1e'),JSON[_0x5464('0x20')](_0x35b53b));if(_0x35b53b[_0x5464('0x21')]){if(_0x35b53b[_0x5464('0x21')]['code']===0x1f4){logger[_0x5464('0x21')]('ChatQueue,\x20%s,\x20%s',_0x307897,_0x35b53b[_0x5464('0x21')][_0x5464('0x22')]);return _0x32c4cf(_0x35b53b[_0x5464('0x21')][_0x5464('0x22')]);}logger['error'](_0x5464('0x1d'),_0x307897,_0x35b53b[_0x5464('0x21')]['message']);return _0x3b76e0(_0x35b53b[_0x5464('0x21')][_0x5464('0x22')]);}else{logger[_0x5464('0x1c')](_0x5464('0x1d'),_0x307897,_0x5464('0x1e'));_0x3b76e0(_0x35b53b[_0x5464('0x23')][_0x5464('0x22')]);}})[_0x5464('0x24')](function(_0x5c9e9a){logger['error'](_0x5464('0x1d'),_0x307897,_0x5c9e9a);_0x32c4cf(_0x5c9e9a);});});}function respondWithStatusCode(_0x20c07b,_0x4e37ef){_0x4e37ef=_0x4e37ef||0xcc;return function(_0x12be39){if(_0x12be39){return _0x20c07b['sendStatus'](_0x4e37ef);}return _0x20c07b[_0x5464('0x25')](_0x4e37ef)['end']();};}function respondWithResult(_0x58df09,_0x395e8c){_0x395e8c=_0x395e8c||0xc8;return function(_0xcc1db5){if(_0xcc1db5){return _0x58df09[_0x5464('0x25')](_0x395e8c)[_0x5464('0x26')](_0xcc1db5);}};}function respondWithFilteredResult(_0x31c153,_0x20274d){return function(_0x29c826){if(_0x29c826){var _0x5e4a55=_0x29c826[_0x5464('0x27')],_0x52e40e=_0x20274d[_0x5464('0x28')],_0x251592=_0x20274d['offset']+_0x20274d[_0x5464('0x29')],_0x5d3754;if(_0x251592>=_0x5e4a55){_0x251592=_0x5e4a55;_0x5d3754=0xc8;}else{_0x5d3754=0xce;}_0x31c153['status'](_0x5d3754);return _0x31c153[_0x5464('0x2a')](_0x5464('0x2b'),_0x52e40e+'-'+_0x251592+'/'+_0x5e4a55)[_0x5464('0x26')](_0x29c826);}return null;};}function patchUpdates(_0x206354){return function(_0x469022){try{jsonpatch['apply'](_0x469022,_0x206354,!![]);}catch(_0x4e4dc7){return BPromise[_0x5464('0x2c')](_0x4e4dc7);}return _0x469022['save']();};}function saveUpdates(_0x87f1b6,_0x1a03b3){return function(_0x219d87){if(_0x219d87){return _0x219d87[_0x5464('0x2d')](_0x87f1b6)[_0x5464('0x1b')](function(_0x25615a){return _0x25615a;});}return null;};}function removeEntity(_0x130278,_0x473423){return function(_0x2d81c6){if(_0x2d81c6){return _0x2d81c6[_0x5464('0x2e')]()[_0x5464('0x1b')](function(){var _0x4035fd=_0x2d81c6[_0x5464('0x2f')]({'plain':!![]});var _0x20962d=_0x5464('0x30');return db[_0x5464('0x31')][_0x5464('0x2e')]({'where':{'type':_0x20962d,'resourceId':_0x4035fd['id']}})[_0x5464('0x1b')](function(){return _0x2d81c6;});})[_0x5464('0x1b')](function(){_0x130278[_0x5464('0x25')](0xcc)[_0x5464('0x32')]();});}};}function handleEntityNotFound(_0x5ac9d3,_0x19c898){return function(_0xb6e21c){if(!_0xb6e21c){_0x5ac9d3['sendStatus'](0x194);}return _0xb6e21c;};}function handleError(_0x5e37d1,_0x3423a9){_0x3423a9=_0x3423a9||0x1f4;return function(_0x272a3c){logger['error'](_0x272a3c[_0x5464('0x33')]);if(_0x272a3c[_0x5464('0x34')]){delete _0x272a3c[_0x5464('0x34')];}_0x5e37d1[_0x5464('0x25')](_0x3423a9)['send'](_0x272a3c);};}exports[_0x5464('0x35')]=function(_0x3b3dbe,_0x12d9e6){var _0x44ace7={},_0x26724e={},_0x4ba8f6={'count':0x0,'rows':[]};var _0x2d9270=db['ChatQueue'][_0x5464('0x36')];_0x26724e[_0x5464('0x37')]=_['keys'](_0x2d9270);var _0x336abf={'dateStart':_0x3b3dbe['query'][_0x5464('0x38')],'dateEnd':_0x3b3dbe['query'][_0x5464('0x39')]};delete _0x3b3dbe[_0x5464('0x3a')][_0x5464('0x38')];delete _0x3b3dbe[_0x5464('0x3a')][_0x5464('0x39')];_0x26724e[_0x5464('0x3a')]=_[_0x5464('0x3b')](_0x3b3dbe[_0x5464('0x3a')]);_0x26724e[_0x5464('0x3c')]=_[_0x5464('0x3d')](_0x26724e[_0x5464('0x37')],_0x26724e[_0x5464('0x3a')]);_0x44ace7[_0x5464('0x3e')]=_['intersection'](_0x26724e[_0x5464('0x37')],qs[_0x5464('0x3f')](_0x3b3dbe[_0x5464('0x3a')][_0x5464('0x3f')]));_0x44ace7[_0x5464('0x3e')]=_0x44ace7[_0x5464('0x3e')][_0x5464('0x40')]?_0x44ace7['attributes']:_0x26724e[_0x5464('0x37')];if(!_0x3b3dbe[_0x5464('0x3a')][_0x5464('0x41')](_0x5464('0x42'))){_0x44ace7['limit']=qs['limit'](_0x3b3dbe[_0x5464('0x3a')][_0x5464('0x29')]);_0x44ace7[_0x5464('0x28')]=qs['offset'](_0x3b3dbe[_0x5464('0x3a')][_0x5464('0x28')]);}_0x44ace7[_0x5464('0x43')]=qs[_0x5464('0x44')](_0x3b3dbe['query'][_0x5464('0x44')]);_0x44ace7['where']=qs['filters'](_[_0x5464('0x45')](_0x3b3dbe[_0x5464('0x3a')],_0x26724e[_0x5464('0x3c')]));if(_0x336abf[_0x5464('0x38')]){if(_0x336abf['dateEnd']){_0x336abf[_0x5464('0x39')]=moment(_0x336abf[_0x5464('0x39')])[_0x5464('0x46')](0x1,_0x5464('0x47'));}else{_0x336abf[_0x5464('0x39')]=moment(_0x336abf[_0x5464('0x38')])[_0x5464('0x46')](0x1,'day');}_[_0x5464('0x48')](_0x44ace7['where'],{'createdAt':{'$gte':_0x336abf[_0x5464('0x38')],'$lte':_0x336abf[_0x5464('0x39')]}});}if(_0x3b3dbe[_0x5464('0x3a')]['filter']){_0x44ace7['where']=_[_0x5464('0x48')](_0x44ace7[_0x5464('0x49')],{'$or':_[_0x5464('0x4a')](_0x2d9270,function(_0x2daca2){if(_0x2daca2[_0x5464('0x4b')][_0x5464('0x4c')]!==_0x5464('0x4d')){var _0x8b4c07={};_0x8b4c07[_0x2daca2[_0x5464('0x4e')]]={'$like':'%'+_0x3b3dbe[_0x5464('0x3a')][_0x5464('0x4f')]+'%'};return _0x8b4c07;}})});}_0x44ace7=_[_0x5464('0x48')]({},_0x44ace7,_0x3b3dbe['options']);var _0x590fc3={'where':_0x44ace7[_0x5464('0x49')]};return db[_0x5464('0x50')][_0x5464('0x27')](_0x590fc3)[_0x5464('0x1b')](function(_0x478214){_0x4ba8f6['count']=_0x478214;if(_0x3b3dbe['query'][_0x5464('0x51')]){_0x44ace7[_0x5464('0x52')]=[{'all':!![]}];}return db[_0x5464('0x50')]['findAll'](_0x44ace7);})[_0x5464('0x1b')](function(_0x2ef41f){_0x4ba8f6[_0x5464('0x53')]=_0x2ef41f;return _0x4ba8f6;})[_0x5464('0x1b')](respondWithFilteredResult(_0x12d9e6,_0x44ace7))['catch'](handleError(_0x12d9e6,null));};exports[_0x5464('0x54')]=function(_0x493cdc,_0x410bb4){var _0x4c36bf={'raw':!![],'where':{'id':_0x493cdc[_0x5464('0x55')]['id']}},_0x1465f1={};_0x1465f1[_0x5464('0x37')]=_['keys'](db[_0x5464('0x50')][_0x5464('0x36')]);_0x1465f1[_0x5464('0x3a')]=_[_0x5464('0x3b')](_0x493cdc[_0x5464('0x3a')]);_0x1465f1[_0x5464('0x3c')]=_[_0x5464('0x3d')](_0x1465f1[_0x5464('0x37')],_0x1465f1[_0x5464('0x3a')]);_0x4c36bf[_0x5464('0x3e')]=_[_0x5464('0x3d')](_0x1465f1[_0x5464('0x37')],qs[_0x5464('0x3f')](_0x493cdc['query'][_0x5464('0x3f')]));_0x4c36bf['attributes']=_0x4c36bf[_0x5464('0x3e')][_0x5464('0x40')]?_0x4c36bf['attributes']:_0x1465f1[_0x5464('0x37')];if(_0x493cdc[_0x5464('0x3a')]['includeAll']){_0x4c36bf['include']=[{'all':!![]}];}_0x4c36bf=_[_0x5464('0x48')]({},_0x4c36bf,_0x493cdc['options']);return db['ChatQueue'][_0x5464('0x56')](_0x4c36bf)[_0x5464('0x1b')](handleEntityNotFound(_0x410bb4,null))[_0x5464('0x1b')](respondWithResult(_0x410bb4,null))['catch'](handleError(_0x410bb4,null));};exports[_0x5464('0x57')]=function(_0xf9674d,_0x5820c0){return db[_0x5464('0x50')][_0x5464('0x57')](_0xf9674d[_0x5464('0x58')],{})[_0x5464('0x1b')](function(_0xb6a137){var _0x3b4d42=_0xf9674d['user'][_0x5464('0x2f')]({'plain':!![]});if(!_0x3b4d42)throw new Error(_0x5464('0x59'));if(_0x3b4d42[_0x5464('0x5a')]==='user'){var _0x55a4ad=_0xb6a137[_0x5464('0x2f')]({'plain':!![]});var _0x4a153b=_0x5464('0x30');return db[_0x5464('0x5b')][_0x5464('0x56')]({'where':{'name':_0x4a153b,'userProfileId':_0x3b4d42[_0x5464('0x5c')]},'raw':!![]})[_0x5464('0x1b')](function(_0x50da79){if(_0x50da79&&_0x50da79[_0x5464('0x5d')]===0x0){return db[_0x5464('0x31')][_0x5464('0x57')]({'name':_0x55a4ad[_0x5464('0x34')],'resourceId':_0x55a4ad['id'],'type':_0x50da79[_0x5464('0x34')],'sectionId':_0x50da79['id']},{})[_0x5464('0x1b')](function(){return _0xb6a137;});}else{return _0xb6a137;}})['catch'](function(_0x252006){logger[_0x5464('0x21')](_0x5464('0x5e'),_0x252006);throw _0x252006;});}return _0xb6a137;})[_0x5464('0x1b')](respondWithResult(_0x5820c0,0xc9))[_0x5464('0x24')](handleError(_0x5820c0,null));};exports['update']=function(_0x152a01,_0x30cd1e){if(_0x152a01[_0x5464('0x58')]['id']){delete _0x152a01['body']['id'];}return db[_0x5464('0x50')][_0x5464('0x56')]({'where':{'id':_0x152a01[_0x5464('0x55')]['id']}})[_0x5464('0x1b')](handleEntityNotFound(_0x30cd1e,null))[_0x5464('0x1b')](saveUpdates(_0x152a01[_0x5464('0x58')],null))[_0x5464('0x1b')](respondWithResult(_0x30cd1e,null))[_0x5464('0x24')](handleError(_0x30cd1e,null));};exports[_0x5464('0x2e')]=function(_0x4cb78f,_0x1c2ff1){return db[_0x5464('0x50')][_0x5464('0x56')]({'where':{'id':_0x4cb78f[_0x5464('0x55')]['id']}})[_0x5464('0x1b')](handleEntityNotFound(_0x1c2ff1,null))[_0x5464('0x1b')](removeEntity(_0x1c2ff1,null))[_0x5464('0x24')](handleError(_0x1c2ff1,null));};exports[_0x5464('0x5f')]=function(_0x23624f,_0x343a50){return db[_0x5464('0x50')][_0x5464('0x5f')]()[_0x5464('0x1b')](respondWithResult(_0x343a50,null))[_0x5464('0x24')](handleError(_0x343a50,null));};exports[_0x5464('0x60')]=function(_0x426f5f,_0x11b11f,_0x58515f){var _0x4dbb67={'raw':!![],'where':{}},_0x322942={},_0x289bb9;return db['ChatQueue'][_0x5464('0x61')]({'where':{'id':_0x426f5f[_0x5464('0x55')]['id']}})[_0x5464('0x1b')](handleEntityNotFound(_0x11b11f,null))[_0x5464('0x1b')](function(_0x5037f4){if(_0x5037f4){_0x289bb9=_0x5037f4['get']({'plain':!![]});_0x322942[_0x5464('0x37')]=_[_0x5464('0x3b')](db[_0x5464('0x62')][_0x5464('0x36')]);_0x322942[_0x5464('0x3a')]=_[_0x5464('0x3b')](_0x426f5f[_0x5464('0x3a')]);_0x322942[_0x5464('0x3c')]=_['intersection'](_0x322942[_0x5464('0x37')],_0x322942[_0x5464('0x3a')]);_0x4dbb67[_0x5464('0x3e')]=_[_0x5464('0x3d')](_0x322942[_0x5464('0x37')],qs[_0x5464('0x3f')](_0x426f5f['query'][_0x5464('0x3f')]));_0x4dbb67[_0x5464('0x3e')]=_0x4dbb67[_0x5464('0x3e')][_0x5464('0x40')]?_0x4dbb67['attributes']:_0x322942['model'];if(!_0x426f5f[_0x5464('0x3a')][_0x5464('0x41')]('nolimit')){_0x4dbb67[_0x5464('0x29')]=qs[_0x5464('0x29')](_0x426f5f[_0x5464('0x3a')][_0x5464('0x29')]);_0x4dbb67[_0x5464('0x28')]=qs['offset'](_0x426f5f[_0x5464('0x3a')][_0x5464('0x28')]);}_0x4dbb67[_0x5464('0x43')]=qs['sort'](_0x426f5f[_0x5464('0x3a')]['sort']);_0x4dbb67[_0x5464('0x49')]=qs[_0x5464('0x3c')](_[_0x5464('0x45')](_0x426f5f[_0x5464('0x3a')],_0x322942['filters']));_0x4dbb67[_0x5464('0x49')][_0x5464('0x63')]=_0x5037f4['id'];if(_0x426f5f[_0x5464('0x3a')]['filter']){_0x4dbb67[_0x5464('0x49')]=_[_0x5464('0x48')](_0x4dbb67[_0x5464('0x49')],{'$or':_[_0x5464('0x4a')](_0x4dbb67[_0x5464('0x3e')],function(_0xee0f99){var _0x1be251={};_0x1be251[_0xee0f99]={'$like':'%'+_0x426f5f['query'][_0x5464('0x4f')]+'%'};return _0x1be251;})});}_0x4dbb67=_['merge']({},_0x4dbb67,_0x426f5f[_0x5464('0x64')]);return db[_0x5464('0x62')]['findAll'](_0x4dbb67);}})[_0x5464('0x1b')](function(_0x850a0b){if(_0x850a0b){return db[_0x5464('0x65')][_0x5464('0x66')]({'where':{'id':_['map'](_0x850a0b,_0x5464('0x67')),'role':_0x5464('0x68')},'attributes':['id',_0x5464('0x34'),'chatPause',_0x5464('0x69'),'createdAt']});}})[_0x5464('0x1b')](function(_0xf04098){if(_0xf04098){return{'count':_0xf04098[_0x5464('0x27')],'rows':_[_0x5464('0x4a')](_0xf04098[_0x5464('0x53')],function(_0x1395cf){return{'membername':_0x1395cf[_0x5464('0x34')],'UserId':_0x1395cf['id'],'queue_name':_0x289bb9['name'],'ChatQueueId':_0x289bb9['id'],'interface':util[_0x5464('0x6a')](_0x5464('0x6b'),_0x5464('0x6c'),_0x1395cf[_0x5464('0x34')]),'penalty':0x0,'paused':_0x1395cf[_0x5464('0x6d')],'createdAt':_0x1395cf[_0x5464('0x6e')],'updatedAt':_0x1395cf[_0x5464('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x11b11f,_0x4dbb67))[_0x5464('0x24')](handleError(_0x11b11f,null));};exports['getTeams']=function(_0x4c315f,_0x48633a,_0x32814e){var _0x5250c2={};var _0x16e7fb={};var _0x25a979;var _0x25e7f8;return db[_0x5464('0x50')]['findOne']({'where':{'id':_0x4c315f[_0x5464('0x55')]['id']}})[_0x5464('0x1b')](handleEntityNotFound(_0x48633a,null))[_0x5464('0x1b')](function(_0x203f4d){if(_0x203f4d){_0x25a979=_0x203f4d;_0x16e7fb[_0x5464('0x37')]=_[_0x5464('0x3b')](db[_0x5464('0x6f')][_0x5464('0x36')]);_0x16e7fb[_0x5464('0x3a')]=_['keys'](_0x4c315f[_0x5464('0x3a')]);_0x16e7fb[_0x5464('0x3c')]=_['intersection'](_0x16e7fb['model'],_0x16e7fb['query']);_0x5250c2[_0x5464('0x3e')]=_[_0x5464('0x3d')](_0x16e7fb['model'],qs[_0x5464('0x3f')](_0x4c315f['query'][_0x5464('0x3f')]));_0x5250c2['attributes']=_0x5250c2[_0x5464('0x3e')][_0x5464('0x40')]?_0x5250c2[_0x5464('0x3e')]:_0x16e7fb[_0x5464('0x37')];_0x5250c2[_0x5464('0x43')]=qs[_0x5464('0x44')](_0x4c315f['query'][_0x5464('0x44')]);_0x5250c2[_0x5464('0x49')]=qs['filters'](_[_0x5464('0x45')](_0x4c315f[_0x5464('0x3a')],_0x16e7fb[_0x5464('0x3c')]));if(_0x4c315f['query'][_0x5464('0x4f')]){_0x5250c2[_0x5464('0x49')]=_[_0x5464('0x48')](_0x5250c2['where'],{'$or':_[_0x5464('0x4a')](_0x5250c2[_0x5464('0x3e')],function(_0x396d9f){var _0x4178dc={};_0x4178dc[_0x396d9f]={'$like':'%'+_0x4c315f[_0x5464('0x3a')][_0x5464('0x4f')]+'%'};return _0x4178dc;})});}_0x5250c2=_[_0x5464('0x48')]({},_0x5250c2,_0x4c315f['options']);return _0x25a979[_0x5464('0x70')](_0x5250c2);}})[_0x5464('0x1b')](function(_0x55762a){if(_0x55762a){_0x25e7f8=_0x55762a[_0x5464('0x40')];if(!_0x4c315f[_0x5464('0x3a')][_0x5464('0x41')](_0x5464('0x42'))){_0x5250c2[_0x5464('0x29')]=qs[_0x5464('0x29')](_0x4c315f[_0x5464('0x3a')][_0x5464('0x29')]);_0x5250c2[_0x5464('0x28')]=qs[_0x5464('0x28')](_0x4c315f[_0x5464('0x3a')][_0x5464('0x28')]);}return _0x25a979[_0x5464('0x70')](_0x5250c2);}})[_0x5464('0x1b')](function(_0x3951e7){if(_0x3951e7){return _0x3951e7?{'count':_0x25e7f8,'rows':_0x3951e7}:null;}})[_0x5464('0x1b')](respondWithResult(_0x48633a,null))[_0x5464('0x24')](handleError(_0x48633a,null));};exports[_0x5464('0x71')]=function(_0x108da2,_0x46fcf5,_0x35235a){var _0x4513ab=[];var _0x3cc8d5;return db[_0x5464('0x6f')][_0x5464('0x72')]({'where':{'id':_0x108da2[_0x5464('0x58')][_0x5464('0x73')]},'attributes':['id'],'include':[{'model':db[_0x5464('0x65')],'as':_0x5464('0x74'),'attributes':['id'],'raw':!![]}]})[_0x5464('0x1b')](function(_0x3cd133){if(_0x3cd133){for(var _0x4f324d=0x0;_0x4f324d<_0x3cd133[_0x5464('0x40')];_0x4f324d+=0x1){for(var _0x18bf28=0x0;_0x18bf28<_0x3cd133[_0x4f324d]['Agents'][_0x5464('0x40')];_0x18bf28+=0x1){_0x4513ab=_[_0x5464('0x75')](_0x4513ab,[_0x3cd133[_0x4f324d][_0x5464('0x74')][_0x18bf28]['id']]);}}return _0x4513ab;}})[_0x5464('0x1b')](function(_0x555a5b){if(_0x555a5b){return db[_0x5464('0x50')][_0x5464('0x56')]({'where':{'id':_0x108da2['params']['id']}});}})['then'](function(_0x2eb8f2){if(_0x2eb8f2){_0x3cc8d5=_0x2eb8f2;return _0x3cc8d5[_0x5464('0x76')](_0x4513ab,{'penalty':_0x108da2[_0x5464('0x58')][_0x5464('0x77')]});}})[_0x5464('0x1b')](function(_0x47c40a){if(_0x47c40a){return _0x3cc8d5[_0x5464('0x71')](_0x108da2[_0x5464('0x58')]['ids']);}})[_0x5464('0x1b')](handleEntityNotFound(_0x46fcf5,null))[_0x5464('0x1b')](respondWithStatusCode(_0x46fcf5,null))['catch'](handleError(_0x46fcf5,null));};exports[_0x5464('0x78')]=function(_0x5f4a27,_0x15f03c,_0x2f4c83){var _0x33392a=[];var _0x491011;return db[_0x5464('0x6f')][_0x5464('0x72')]({'where':{'id':_0x5f4a27[_0x5464('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0x5464('0x65')],'as':_0x5464('0x74'),'attributes':['id'],'raw':!![]}]})[_0x5464('0x1b')](function(_0x20bdf5){if(_0x20bdf5){for(var _0x4585ee=0x0;_0x4585ee<_0x20bdf5['length'];_0x4585ee+=0x1){for(var _0x1a8791=0x0;_0x1a8791<_0x20bdf5[_0x4585ee][_0x5464('0x74')]['length'];_0x1a8791+=0x1){_0x33392a=_['union'](_0x33392a,[_0x20bdf5[_0x4585ee][_0x5464('0x74')][_0x1a8791]['id']]);}}return _0x33392a;}})[_0x5464('0x1b')](function(_0x5b111f){if(_0x5b111f){return db['ChatQueue'][_0x5464('0x56')]({'where':{'id':_0x5f4a27[_0x5464('0x55')]['id']}});}})[_0x5464('0x1b')](function(_0x4068b1){if(_0x4068b1){_0x491011=_0x4068b1;return _0x491011[_0x5464('0x79')](_0x33392a);}})['then'](function(_0x53aac5){if(_0x491011){return _0x491011['removeTeams'](_0x5f4a27[_0x5464('0x3a')][_0x5464('0x73')]);}})['then'](handleEntityNotFound(_0x15f03c,null))['then'](respondWithStatusCode(_0x15f03c,null))[_0x5464('0x24')](handleError(_0x15f03c,null));};exports[_0x5464('0x76')]=function(_0x5734ad,_0x569106,_0x2b82c8){return db[_0x5464('0x50')][_0x5464('0x56')]({'where':{'id':_0x5734ad[_0x5464('0x55')]['id']}})['then'](handleEntityNotFound(_0x569106,null))[_0x5464('0x1b')](function(_0x292703){if(_0x292703){return _0x292703['addAgents'](_0x5734ad[_0x5464('0x58')][_0x5464('0x73')],_[_0x5464('0x7a')](_0x5734ad[_0x5464('0x58')],['ids','id'])||{})[_0x5464('0x7b')](function(_0x3f3a7b){for(var _0x3701b3=0x0;_0x3701b3<_0x5734ad[_0x5464('0x58')][_0x5464('0x73')][_0x5464('0x40')];_0x3701b3+=0x1){socket['emit'](_0x5464('0x7c'),{'UserId':_0x5734ad['body'][_0x5464('0x73')][_0x3701b3],'ChatQueueId':_0x5734ad['params']['id']});}return _0x3f3a7b;});}})[_0x5464('0x1b')](respondWithResult(_0x569106,null))[_0x5464('0x24')](handleError(_0x569106,null));};exports[_0x5464('0x79')]=function(_0x5919a7,_0x52382c,_0x37d252){var _0x4d0908;return db[_0x5464('0x50')]['find']({'where':{'id':_0x5919a7['params']['id']}})[_0x5464('0x1b')](handleEntityNotFound(_0x52382c,null))[_0x5464('0x1b')](function(_0x36c60f){if(_0x36c60f){return _0x36c60f[_0x5464('0x79')](_0x5919a7['query'][_0x5464('0x73')])[_0x5464('0x1b')](function(_0x557d44){if(_[_0x5464('0x7d')](_0x5919a7[_0x5464('0x3a')][_0x5464('0x73')])){for(var _0x24edcf=0x0;_0x24edcf<_0x5919a7[_0x5464('0x3a')][_0x5464('0x73')][_0x5464('0x40')];_0x24edcf+=0x1){socket[_0x5464('0x7e')]('userChatQueue:remove',{'UserId':_0x5919a7[_0x5464('0x3a')][_0x5464('0x73')][_0x24edcf],'ChatQueueId':_0x5919a7[_0x5464('0x55')]['id']});}}else{socket['emit'](_0x5464('0x7f'),{'UserId':_0x5919a7['query'][_0x5464('0x73')],'ChatQueueId':_0x5919a7[_0x5464('0x55')]['id']});}});}})[_0x5464('0x1b')](respondWithStatusCode(_0x52382c,null))[_0x5464('0x24')](handleError(_0x52382c,null));};exports[_0x5464('0x80')]=function(_0x1f9ce7,_0x3e2b8d,_0x505944){var _0xd765fa={};var _0x4ab675={};var _0x4fbb89;var _0x1d29cf;return db['ChatQueue']['findOne']({'where':{'id':_0x1f9ce7[_0x5464('0x55')]['id']}})[_0x5464('0x1b')](handleEntityNotFound(_0x3e2b8d,null))[_0x5464('0x1b')](function(_0x2e2e93){if(_0x2e2e93){_0x4fbb89=_0x2e2e93;_0x4ab675[_0x5464('0x37')]=_[_0x5464('0x3b')](db[_0x5464('0x65')][_0x5464('0x36')]);_0x4ab675[_0x5464('0x3a')]=_[_0x5464('0x3b')](_0x1f9ce7[_0x5464('0x3a')]);_0x4ab675[_0x5464('0x3c')]=_[_0x5464('0x3d')](_0x4ab675[_0x5464('0x37')],_0x4ab675['query']);_0xd765fa['attributes']=_[_0x5464('0x3d')](_0x4ab675[_0x5464('0x37')],qs[_0x5464('0x3f')](_0x1f9ce7['query'][_0x5464('0x3f')]));_0xd765fa[_0x5464('0x3e')]=_0xd765fa[_0x5464('0x3e')][_0x5464('0x40')]?_0xd765fa['attributes']:_0x4ab675[_0x5464('0x37')];_0xd765fa[_0x5464('0x43')]=qs['sort'](_0x1f9ce7[_0x5464('0x3a')]['sort']);_0xd765fa[_0x5464('0x49')]=qs['filters'](_[_0x5464('0x45')](_0x1f9ce7[_0x5464('0x3a')],_0x4ab675[_0x5464('0x3c')]));if(_0x1f9ce7[_0x5464('0x3a')]['filter']){_0xd765fa[_0x5464('0x49')]=_[_0x5464('0x48')](_0xd765fa[_0x5464('0x49')],{'$or':_['map'](_0xd765fa[_0x5464('0x3e')],function(_0x597aff){var _0x4de5f8={};_0x4de5f8[_0x597aff]={'$like':'%'+_0x1f9ce7[_0x5464('0x3a')][_0x5464('0x4f')]+'%'};return _0x4de5f8;})});}_0xd765fa=_[_0x5464('0x48')]({},_0xd765fa,_0x1f9ce7['options']);return _0x4fbb89[_0x5464('0x80')](_0xd765fa);}})[_0x5464('0x1b')](function(_0x4b5404){if(_0x4b5404){_0x1d29cf=_0x4b5404['length'];if(!_0x1f9ce7[_0x5464('0x3a')][_0x5464('0x41')](_0x5464('0x42'))){_0xd765fa['limit']=qs[_0x5464('0x29')](_0x1f9ce7[_0x5464('0x3a')][_0x5464('0x29')]);_0xd765fa[_0x5464('0x28')]=qs[_0x5464('0x28')](_0x1f9ce7[_0x5464('0x3a')][_0x5464('0x28')]);}return _0x4fbb89['getAgents'](_0xd765fa);}})[_0x5464('0x1b')](function(_0x4c2ba0){if(_0x4c2ba0){return _0x4c2ba0?{'count':_0x1d29cf,'rows':_0x4c2ba0}:null;}})[_0x5464('0x1b')](respondWithResult(_0x3e2b8d,null))[_0x5464('0x24')](handleError(_0x3e2b8d,null));};
\ No newline at end of file
index 603a9d9..864042b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadcc=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','ChatQueue'];(function(_0x49858b,_0x30acc4){var _0x31dd53=function(_0xd1af0e){while(--_0xd1af0e){_0x49858b['push'](_0x49858b['shift']());}};_0x31dd53(++_0x30acc4);}(_0xadcc,0x76));var _0xcadc=function(_0x42f850,_0x5851ae){_0x42f850=_0x42f850-0x0;var _0x4f89f2=_0xadcc[_0x42f850];return _0x4f89f2;};'use strict';var EventEmitter=require(_0xcadc('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0xcadc('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xcadc('0x2')](0x0);var events={'afterCreate':_0xcadc('0x3'),'afterUpdate':_0xcadc('0x4'),'afterDestroy':_0xcadc('0x5')};function emitEvent(_0x4d0dc0){return function(_0x53330e,_0x23b7d1,_0x333f8c){ChatQueueEvents[_0xcadc('0x6')](_0x4d0dc0+':'+_0x53330e['id'],_0x53330e);ChatQueueEvents[_0xcadc('0x6')](_0x4d0dc0,_0x53330e);_0x333f8c(null);};}for(var e in events){if(events[_0xcadc('0x7')](e)){var event=events[e];ChatQueue[_0xcadc('0x8')](e,emitEvent(event));}}module[_0xcadc('0x9')]=ChatQueueEvents;
\ No newline at end of file
+var _0xcaa4=['../../mysqldb','ChatQueue','setMaxListeners','update','emit','hasOwnProperty','hook','events'];(function(_0x11db8c,_0x1979b2){var _0x4f7cda=function(_0x291b4a){while(--_0x291b4a){_0x11db8c['push'](_0x11db8c['shift']());}};_0x4f7cda(++_0x1979b2);}(_0xcaa4,0x1b7));var _0x4caa=function(_0x3c112d,_0x29fbd9){_0x3c112d=_0x3c112d-0x0;var _0x231b78=_0xcaa4[_0x3c112d];return _0x231b78;};'use strict';var EventEmitter=require(_0x4caa('0x0'));var ChatQueue=require(_0x4caa('0x1'))['db'][_0x4caa('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x4caa('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4caa('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3b85c8){return function(_0xf107dc,_0xe49a4e,_0x160036){ChatQueueEvents[_0x4caa('0x5')](_0x3b85c8+':'+_0xf107dc['id'],_0xf107dc);ChatQueueEvents[_0x4caa('0x5')](_0x3b85c8,_0xf107dc);_0x160036(null);};}for(var e in events){if(events[_0x4caa('0x6')](e)){var event=events[e];ChatQueue[_0x4caa('0x7')](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index eb71b5e..ae447bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5a=['chat_queues','lodash','util','api','moment','bluebird','request-promise','exports','define'];(function(_0x3e3bee,_0x4f91fe){var _0x3ae14c=function(_0x3861a0){while(--_0x3861a0){_0x3e3bee['push'](_0x3e3bee['shift']());}};_0x3ae14c(++_0x4f91fe);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x3c6462,_0xc1ca9){_0x3c6462=_0x3c6462-0x0;var _0x418243=_0x9c5a[_0x3c6462];return _0x418243;};'use strict';var _=require(_0xa9c5('0x0'));var util=require(_0xa9c5('0x1'));var logger=require('../../config/logger')(_0xa9c5('0x2'));var moment=require(_0xa9c5('0x3'));var BPromise=require(_0xa9c5('0x4'));var rp=require(_0xa9c5('0x5'));var attributes=require('./chatQueue.attributes');module[_0xa9c5('0x6')]=function(_0x3051b1,_0x4e9403){return _0x3051b1[_0xa9c5('0x7')]('ChatQueue',attributes,{'tableName':_0xa9c5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6334=['bluebird','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','lodash','util','../../config/logger','api','moment'];(function(_0x454087,_0xb66160){var _0x11a9ab=function(_0x2c309e){while(--_0x2c309e){_0x454087['push'](_0x454087['shift']());}};_0x11a9ab(++_0xb66160);}(_0x6334,0x119));var _0x4633=function(_0x3f2ecf,_0x4ccad6){_0x3f2ecf=_0x3f2ecf-0x0;var _0xa6dd7e=_0x6334[_0x3f2ecf];return _0xa6dd7e;};'use strict';var _=require(_0x4633('0x0'));var util=require(_0x4633('0x1'));var logger=require(_0x4633('0x2'))(_0x4633('0x3'));var moment=require(_0x4633('0x4'));var BPromise=require(_0x4633('0x5'));var rp=require('request-promise');var attributes=require(_0x4633('0x6'));module[_0x4633('0x7')]=function(_0x2a2b3c,_0x3572d1){return _0x2a2b3c[_0x4633('0x8')](_0x4633('0x9'),attributes,{'tableName':_0x4633('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 984b42b..1e6f18f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b25=['rpc','../../config/environment','jayson/promise','client','defaults','redis','socket.io-emitter','./chatQueue.socket','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','GetChatQueue','findAll','options','where','attributes','map','include','model','then','stringify','ShowChatQueue','ChatQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x11fc67,_0x1eda19){var _0x50bb19=function(_0x302214){while(--_0x302214){_0x11fc67['push'](_0x11fc67['shift']());}};_0x50bb19(++_0x1eda19);}(_0x4b25,0x19b));var _0x54b2=function(_0x465f9a,_0x30e2b6){_0x465f9a=_0x465f9a-0x0;var _0x29c5ae=_0x4b25[_0x465f9a];return _0x29c5ae;};'use strict';var _=require(_0x54b2('0x0'));var util=require(_0x54b2('0x1'));var moment=require(_0x54b2('0x2'));var BPromise=require('bluebird');var rs=require(_0x54b2('0x3'));var fs=require('fs');var Redis=require(_0x54b2('0x4'));var db=require(_0x54b2('0x5'))['db'];var utils=require(_0x54b2('0x6'));var logger=require('../../config/logger')(_0x54b2('0x7'));var config=require(_0x54b2('0x8'));var jayson=require(_0x54b2('0x9'));var client=jayson[_0x54b2('0xa')]['http']({'port':0x232a});config['redis']=_[_0x54b2('0xb')](config[_0x54b2('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x54b2('0xd'))(new Redis(config[_0x54b2('0xc')]));require(_0x54b2('0xe'))['register'](socket);function respondWithRpcPromise(_0x5293ce,_0x1d97f4,_0x3ac44c){return new BPromise(function(_0x477dd2,_0x228391){return client[_0x54b2('0xf')](_0x5293ce,_0x3ac44c)['then'](function(_0x4b61b2){logger[_0x54b2('0x10')](_0x54b2('0x11'),_0x1d97f4,_0x54b2('0x12'));logger[_0x54b2('0x13')](_0x54b2('0x14'),_0x1d97f4,_0x54b2('0x12'),JSON['stringify'](_0x4b61b2));if(_0x4b61b2[_0x54b2('0x15')]){if(_0x4b61b2[_0x54b2('0x15')][_0x54b2('0x16')]===0x1f4){logger[_0x54b2('0x15')](_0x54b2('0x11'),_0x1d97f4,_0x4b61b2[_0x54b2('0x15')]['message']);return _0x228391(_0x4b61b2['error'][_0x54b2('0x17')]);}logger[_0x54b2('0x15')](_0x54b2('0x11'),_0x1d97f4,_0x4b61b2[_0x54b2('0x15')][_0x54b2('0x17')]);return _0x477dd2(_0x4b61b2[_0x54b2('0x15')][_0x54b2('0x17')]);}else{logger[_0x54b2('0x10')](_0x54b2('0x11'),_0x1d97f4,_0x54b2('0x12'));_0x477dd2(_0x4b61b2[_0x54b2('0x18')][_0x54b2('0x17')]);}})['catch'](function(_0xccd3dc){logger[_0x54b2('0x15')](_0x54b2('0x11'),_0x1d97f4,_0xccd3dc);_0x228391(_0xccd3dc);});});}exports[_0x54b2('0x19')]=function(_0x314ab2){var _0x97762d=this;return new Promise(function(_0x3e0e63,_0x180e9f){return db['ChatQueue'][_0x54b2('0x1a')]({'raw':_0x314ab2[_0x54b2('0x1b')]?_0x314ab2[_0x54b2('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x314ab2['options']?_0x314ab2['options'][_0x54b2('0x1c')]||null:null,'attributes':_0x314ab2[_0x54b2('0x1b')]?_0x314ab2[_0x54b2('0x1b')][_0x54b2('0x1d')]||null:null,'limit':_0x314ab2[_0x54b2('0x1b')]?_0x314ab2['options']['limit']||null:null,'include':_0x314ab2[_0x54b2('0x1b')]?_0x314ab2[_0x54b2('0x1b')]['include']?_[_0x54b2('0x1e')](_0x314ab2['options'][_0x54b2('0x1f')],function(_0x5529f1){return{'model':db[_0x5529f1['model']],'as':_0x5529f1['as'],'attributes':_0x5529f1[_0x54b2('0x1d')],'include':_0x5529f1[_0x54b2('0x1f')]?_[_0x54b2('0x1e')](_0x5529f1[_0x54b2('0x1f')],function(_0xe842a8){return{'model':db[_0xe842a8['model']],'as':_0xe842a8['as'],'attributes':_0xe842a8[_0x54b2('0x1d')],'include':_0xe842a8[_0x54b2('0x1f')]?_[_0x54b2('0x1e')](_0xe842a8[_0x54b2('0x1f')],function(_0x1a5b35){return{'model':db[_0x1a5b35[_0x54b2('0x20')]],'as':_0x1a5b35['as'],'attributes':_0x1a5b35[_0x54b2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x54b2('0x21')](function(_0x3754f5){logger[_0x54b2('0x10')]('GetChatQueue',_0x314ab2);logger[_0x54b2('0x13')](_0x54b2('0x19'),_0x314ab2,JSON[_0x54b2('0x22')](_0x3754f5));_0x3e0e63(_0x3754f5);})['catch'](function(_0x12fc47){logger[_0x54b2('0x15')]('GetChatQueue',_0x12fc47['message'],_0x314ab2);_0x180e9f(_0x97762d[_0x54b2('0x15')](0x1f4,_0x12fc47[_0x54b2('0x17')]));});});};exports[_0x54b2('0x23')]=function(_0x4cfd74){var _0x28cccb=this;return new Promise(function(_0x3b74ff,_0x511081){return db[_0x54b2('0x24')][_0x54b2('0x25')]({'raw':_0x4cfd74['options']?_0x4cfd74[_0x54b2('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4cfd74[_0x54b2('0x1b')]?_0x4cfd74[_0x54b2('0x1b')][_0x54b2('0x1c')]||null:null,'attributes':_0x4cfd74['options']?_0x4cfd74['options'][_0x54b2('0x1d')]||null:null,'include':_0x4cfd74[_0x54b2('0x1b')]?_0x4cfd74[_0x54b2('0x1b')][_0x54b2('0x1f')]?_['map'](_0x4cfd74[_0x54b2('0x1b')][_0x54b2('0x1f')],function(_0x2f6592){return{'model':db[_0x2f6592[_0x54b2('0x20')]],'as':_0x2f6592['as'],'attributes':_0x2f6592[_0x54b2('0x1d')],'include':_0x2f6592[_0x54b2('0x1f')]?_[_0x54b2('0x1e')](_0x2f6592[_0x54b2('0x1f')],function(_0x42f51d){return{'model':db[_0x42f51d['model']],'as':_0x42f51d['as'],'attributes':_0x42f51d[_0x54b2('0x1d')],'include':_0x42f51d[_0x54b2('0x1f')]?_['map'](_0x42f51d[_0x54b2('0x1f')],function(_0x13a0d0){return{'model':db[_0x13a0d0[_0x54b2('0x20')]],'as':_0x13a0d0['as'],'attributes':_0x13a0d0['attributes']};}):[]};}):[]};}):[]:[]})[_0x54b2('0x21')](function(_0xd2e5f6){logger[_0x54b2('0x10')](_0x54b2('0x23'),_0x4cfd74);logger[_0x54b2('0x13')]('ShowChatQueue',_0x4cfd74,JSON[_0x54b2('0x22')](_0xd2e5f6));_0x3b74ff(_0xd2e5f6);})['catch'](function(_0x43b463){logger[_0x54b2('0x15')](_0x54b2('0x23'),_0x43b463[_0x54b2('0x17')],_0x4cfd74);_0x511081(_0x28cccb[_0x54b2('0x15')](0x1f4,_0x43b463[_0x54b2('0x17')]));});});};
\ No newline at end of file
+var _0xa10f=['GetChatQueue','catch','ChatQueue','find','raw','ShowChatQueue','lodash','moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','findAll','options','where','include','map','model','attributes','debug'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xa10f,0x110));var _0xfa10=function(_0x5552a5,_0x2ccd4a){_0x5552a5=_0x5552a5-0x0;var _0x4bdd6f=_0xa10f[_0x5552a5];return _0x4bdd6f;};'use strict';var _=require(_0xfa10('0x0'));var util=require('util');var moment=require(_0xfa10('0x1'));var BPromise=require(_0xfa10('0x2'));var rs=require(_0xfa10('0x3'));var fs=require('fs');var Redis=require(_0xfa10('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xfa10('0x5'));var jayson=require(_0xfa10('0x6'));var client=jayson[_0xfa10('0x7')][_0xfa10('0x8')]({'port':0x232a});config[_0xfa10('0x9')]=_[_0xfa10('0xa')](config[_0xfa10('0x9')],{'host':_0xfa10('0xb'),'port':0x18eb});var socket=require(_0xfa10('0xc'))(new Redis(config['redis']));require(_0xfa10('0xd'))['register'](socket);function respondWithRpcPromise(_0x54b813,_0x2c579e,_0x1e4b17){return new BPromise(function(_0x50a277,_0x4f30dd){return client[_0xfa10('0xe')](_0x54b813,_0x1e4b17)[_0xfa10('0xf')](function(_0x5b0f5f){logger[_0xfa10('0x10')](_0xfa10('0x11'),_0x2c579e,_0xfa10('0x12'));logger['debug'](_0xfa10('0x13'),_0x2c579e,_0xfa10('0x12'),JSON[_0xfa10('0x14')](_0x5b0f5f));if(_0x5b0f5f[_0xfa10('0x15')]){if(_0x5b0f5f[_0xfa10('0x15')]['code']===0x1f4){logger[_0xfa10('0x15')](_0xfa10('0x11'),_0x2c579e,_0x5b0f5f['error']['message']);return _0x4f30dd(_0x5b0f5f['error']['message']);}logger['error'](_0xfa10('0x11'),_0x2c579e,_0x5b0f5f['error'][_0xfa10('0x16')]);return _0x50a277(_0x5b0f5f[_0xfa10('0x15')][_0xfa10('0x16')]);}else{logger[_0xfa10('0x10')](_0xfa10('0x11'),_0x2c579e,_0xfa10('0x12'));_0x50a277(_0x5b0f5f[_0xfa10('0x17')][_0xfa10('0x16')]);}})['catch'](function(_0x263330){logger['error'](_0xfa10('0x11'),_0x2c579e,_0x263330);_0x4f30dd(_0x263330);});});}exports['GetChatQueue']=function(_0xf8db77){var _0x47b190=this;return new Promise(function(_0x43bff6,_0x321923){return db['ChatQueue'][_0xfa10('0x18')]({'raw':_0xf8db77[_0xfa10('0x19')]?_0xf8db77['options']['raw']===undefined?!![]:![]:!![],'where':_0xf8db77[_0xfa10('0x19')]?_0xf8db77[_0xfa10('0x19')][_0xfa10('0x1a')]||null:null,'attributes':_0xf8db77['options']?_0xf8db77['options']['attributes']||null:null,'limit':_0xf8db77['options']?_0xf8db77[_0xfa10('0x19')]['limit']||null:null,'include':_0xf8db77[_0xfa10('0x19')]?_0xf8db77[_0xfa10('0x19')][_0xfa10('0x1b')]?_[_0xfa10('0x1c')](_0xf8db77[_0xfa10('0x19')][_0xfa10('0x1b')],function(_0x20c92b){return{'model':db[_0x20c92b[_0xfa10('0x1d')]],'as':_0x20c92b['as'],'attributes':_0x20c92b[_0xfa10('0x1e')],'include':_0x20c92b[_0xfa10('0x1b')]?_[_0xfa10('0x1c')](_0x20c92b['include'],function(_0x401de7){return{'model':db[_0x401de7[_0xfa10('0x1d')]],'as':_0x401de7['as'],'attributes':_0x401de7[_0xfa10('0x1e')],'include':_0x401de7[_0xfa10('0x1b')]?_[_0xfa10('0x1c')](_0x401de7[_0xfa10('0x1b')],function(_0x16e2b4){return{'model':db[_0x16e2b4[_0xfa10('0x1d')]],'as':_0x16e2b4['as'],'attributes':_0x16e2b4[_0xfa10('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3d5f6a){logger['info']('GetChatQueue',_0xf8db77);logger[_0xfa10('0x1f')](_0xfa10('0x20'),_0xf8db77,JSON[_0xfa10('0x14')](_0x3d5f6a));_0x43bff6(_0x3d5f6a);})[_0xfa10('0x21')](function(_0x6d6f13){logger['error'](_0xfa10('0x20'),_0x6d6f13[_0xfa10('0x16')],_0xf8db77);_0x321923(_0x47b190[_0xfa10('0x15')](0x1f4,_0x6d6f13[_0xfa10('0x16')]));});});};exports['ShowChatQueue']=function(_0xc7e6ab){var _0x28e33f=this;return new Promise(function(_0xb30315,_0x5a253c){return db[_0xfa10('0x22')][_0xfa10('0x23')]({'raw':_0xc7e6ab[_0xfa10('0x19')]?_0xc7e6ab[_0xfa10('0x19')][_0xfa10('0x24')]===undefined?!![]:![]:!![],'where':_0xc7e6ab[_0xfa10('0x19')]?_0xc7e6ab['options'][_0xfa10('0x1a')]||null:null,'attributes':_0xc7e6ab[_0xfa10('0x19')]?_0xc7e6ab['options'][_0xfa10('0x1e')]||null:null,'include':_0xc7e6ab[_0xfa10('0x19')]?_0xc7e6ab[_0xfa10('0x19')]['include']?_['map'](_0xc7e6ab['options'][_0xfa10('0x1b')],function(_0x4f9260){return{'model':db[_0x4f9260[_0xfa10('0x1d')]],'as':_0x4f9260['as'],'attributes':_0x4f9260[_0xfa10('0x1e')],'include':_0x4f9260[_0xfa10('0x1b')]?_[_0xfa10('0x1c')](_0x4f9260[_0xfa10('0x1b')],function(_0x4dceea){return{'model':db[_0x4dceea[_0xfa10('0x1d')]],'as':_0x4dceea['as'],'attributes':_0x4dceea[_0xfa10('0x1e')],'include':_0x4dceea['include']?_['map'](_0x4dceea[_0xfa10('0x1b')],function(_0x38b000){return{'model':db[_0x38b000[_0xfa10('0x1d')]],'as':_0x38b000['as'],'attributes':_0x38b000['attributes']};}):[]};}):[]};}):[]:[]})[_0xfa10('0xf')](function(_0x34755f){logger[_0xfa10('0x10')](_0xfa10('0x25'),_0xc7e6ab);logger['debug'](_0xfa10('0x25'),_0xc7e6ab,JSON[_0xfa10('0x14')](_0x34755f));_0xb30315(_0x34755f);})['catch'](function(_0x4981ca){logger[_0xfa10('0x15')](_0xfa10('0x25'),_0x4981ca['message'],_0xc7e6ab);_0x5a253c(_0x28e33f[_0xfa10('0x15')](0x1f4,_0x4981ca[_0xfa10('0x16')]));});});};
\ No newline at end of file
index d92d41f..1d6d33c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','chatQueue:','./chatQueue.events','save','remove','emit','removeListener'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var ChatQueueEvents=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(){ChatQueueEvents[_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);ChatQueueEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','chatQueue:','./chatQueue.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(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'use strict';var ChatQueueEvents=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(){ChatQueueEvents[_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);ChatQueueEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index ab5c87e..dca81b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba0b=['getTeams','/:id/users','getAgents','post','create','addTeams','put','update','delete','destroy','removeTeams','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0xbccadb,_0x578f42){var _0x4e83af=function(_0x57a795){while(--_0x57a795){_0xbccadb['push'](_0xbccadb['shift']());}};_0x4e83af(++_0x578f42);}(_0xba0b,0x1be));var _0xbba0=function(_0x235536,_0x24e556){_0x235536=_0x235536-0x0;var _0x3d4745=_0xba0b[_0x235536];return _0x3d4745;};'use strict';var multer=require(_0xbba0('0x0'));var util=require('util');var path=require(_0xbba0('0x1'));var timeout=require(_0xbba0('0x2'));var express=require(_0xbba0('0x3'));var router=express[_0xbba0('0x4')]();var auth=require(_0xbba0('0x5'));var interaction=require(_0xbba0('0x6'));var config=require(_0xbba0('0x7'));var controller=require(_0xbba0('0x8'));router[_0xbba0('0x9')]('/',auth[_0xbba0('0xa')](),controller[_0xbba0('0xb')]);router['get'](_0xbba0('0xc'),auth[_0xbba0('0xa')](),controller[_0xbba0('0xd')]);router[_0xbba0('0x9')](_0xbba0('0xe'),auth[_0xbba0('0xa')](),controller[_0xbba0('0xf')]);router[_0xbba0('0x9')](_0xbba0('0x10'),auth[_0xbba0('0xa')](),controller[_0xbba0('0x11')]);router[_0xbba0('0x9')](_0xbba0('0x12'),auth[_0xbba0('0xa')](),controller[_0xbba0('0x13')]);router[_0xbba0('0x9')](_0xbba0('0x14'),auth[_0xbba0('0xa')](),controller[_0xbba0('0x15')]);router[_0xbba0('0x16')]('/',auth[_0xbba0('0xa')](),controller[_0xbba0('0x17')]);router[_0xbba0('0x16')](_0xbba0('0x12'),auth[_0xbba0('0xa')](),controller[_0xbba0('0x18')]);router[_0xbba0('0x16')](_0xbba0('0x14'),auth[_0xbba0('0xa')](),controller['addAgents']);router[_0xbba0('0x19')]('/:id',auth[_0xbba0('0xa')](),controller[_0xbba0('0x1a')]);router[_0xbba0('0x1b')](_0xbba0('0xe'),auth['isAuthenticated'](),controller[_0xbba0('0x1c')]);router[_0xbba0('0x1b')](_0xbba0('0x12'),auth[_0xbba0('0xa')](),controller[_0xbba0('0x1d')]);router[_0xbba0('0x1b')](_0xbba0('0x14'),auth[_0xbba0('0xa')](),controller['removeAgents']);module[_0xbba0('0x1e')]=router;
\ No newline at end of file
+var _0x55ec=['multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./chatQueue.controller','isAuthenticated','index','get','/describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','put','/:id','delete','exports'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0x55ec,0x1a0));var _0xc55e=function(_0x427352,_0x1bce61){_0x427352=_0x427352-0x0;var _0x23e0e6=_0x55ec[_0x427352];return _0x23e0e6;};'use strict';var multer=require(_0xc55e('0x0'));var util=require(_0xc55e('0x1'));var path=require(_0xc55e('0x2'));var timeout=require(_0xc55e('0x3'));var express=require('express');var router=express['Router']();var auth=require(_0xc55e('0x4'));var interaction=require(_0xc55e('0x5'));var config=require('../../config/environment');var controller=require(_0xc55e('0x6'));router['get']('/',auth[_0xc55e('0x7')](),controller[_0xc55e('0x8')]);router[_0xc55e('0x9')](_0xc55e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xc55e('0x9')]('/:id',auth[_0xc55e('0x7')](),controller[_0xc55e('0xb')]);router['get'](_0xc55e('0xc'),auth['isAuthenticated'](),controller[_0xc55e('0xd')]);router[_0xc55e('0x9')](_0xc55e('0xe'),auth[_0xc55e('0x7')](),controller[_0xc55e('0xf')]);router[_0xc55e('0x9')](_0xc55e('0x10'),auth[_0xc55e('0x7')](),controller[_0xc55e('0x11')]);router['post']('/',auth[_0xc55e('0x7')](),controller[_0xc55e('0x12')]);router[_0xc55e('0x13')]('/:id/teams',auth[_0xc55e('0x7')](),controller[_0xc55e('0x14')]);router[_0xc55e('0x13')](_0xc55e('0x10'),auth['isAuthenticated'](),controller[_0xc55e('0x15')]);router[_0xc55e('0x16')](_0xc55e('0x17'),auth[_0xc55e('0x7')](),controller['update']);router[_0xc55e('0x18')](_0xc55e('0x17'),auth[_0xc55e('0x7')](),controller['destroy']);router[_0xc55e('0x18')](_0xc55e('0xe'),auth[_0xc55e('0x7')](),controller['removeTeams']);router[_0xc55e('0x18')]('/:id/users',auth[_0xc55e('0x7')](),controller['removeAgents']);module[_0xc55e('0x19')]=router;
\ No newline at end of file
index 071cc77..baede38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe0f=['DATE','moment','sequelize','exports','STRING'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xfe0f,0x14b));var _0xffe0=function(_0x121930,_0x1c1448){_0x121930=_0x121930-0x0;var _0x44161b=_0xfe0f[_0x121930];return _0x44161b;};'use strict';var moment=require(_0xffe0('0x0'));var Sequelize=require(_0xffe0('0x1'));module[_0xffe0('0x2')]={'uniqueid':{'type':Sequelize[_0xffe0('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xffe0('0x4')]},'leaveAt':{'type':Sequelize[_0xffe0('0x4')]},'acceptAt':{'type':Sequelize[_0xffe0('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf7de=['STRING','DATE','moment','sequelize','exports'];(function(_0x5aa992,_0x559ebb){var _0x2e2d59=function(_0x1e2e35){while(--_0x1e2e35){_0x5aa992['push'](_0x5aa992['shift']());}};_0x2e2d59(++_0x559ebb);}(_0xf7de,0x8e));var _0xef7d=function(_0x584ae8,_0x5b82b0){_0x584ae8=_0x584ae8-0x0;var _0xa7b607=_0xf7de[_0x584ae8];return _0xa7b607;};'use strict';var moment=require(_0xef7d('0x0'));var Sequelize=require(_0xef7d('0x1'));module[_0xef7d('0x2')]={'uniqueid':{'type':Sequelize[_0xef7d('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xef7d('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xef7d('0x4')]},'exitAt':{'type':Sequelize[_0xef7d('0x4')]},'reason':{'type':Sequelize[_0xef7d('0x3')]}};
\ No newline at end of file
index e6449db..acd47c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb01=['hasOwnProperty','nolimit','order','sort','where','add','day','merge','filter','VIRTUAL','findAll','rows','catch','show','params','length','options','find','create','body','destroy','describe','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','count','offset','limit','set','Content-Range','json','apply','update','then','error','stack','name','send','index','ChatQueueReport','rawAttributes','model','query','dateStart','dateEnd','keys','filters','intersection','attributes','fields'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0xbb01,0x1cc));var _0x1bb0=function(_0x15fa77,_0x93eaff){_0x15fa77=_0x15fa77-0x0;var _0x1385ff=_0xbb01[_0x15fa77];return _0x1385ff;};'use strict';var pdf=require(_0x1bb0('0x0'));var emlformat=require(_0x1bb0('0x1'));var rimraf=require(_0x1bb0('0x2'));var zipdir=require(_0x1bb0('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1bb0('0x4'));var moment=require(_0x1bb0('0x5'));var BPromise=require(_0x1bb0('0x6'));var Mustache=require(_0x1bb0('0x7'));var util=require(_0x1bb0('0x8'));var path=require(_0x1bb0('0x9'));var sox=require(_0x1bb0('0xa'));var csv=require(_0x1bb0('0xb'));var ejs=require(_0x1bb0('0xc'));var fs=require('fs');var _=require('lodash');var squel=require(_0x1bb0('0xd'));var crypto=require(_0x1bb0('0xe'));var jsforce=require(_0x1bb0('0xf'));var deskjs=require(_0x1bb0('0x10'));var toCsv=require(_0x1bb0('0xb'));var querystring=require(_0x1bb0('0x11'));var Papa=require('papaparse');var Redis=require(_0x1bb0('0x12'));var qs=require('../../components/parsers/qs');var logger=require(_0x1bb0('0x13'))(_0x1bb0('0x14'));var utils=require(_0x1bb0('0x15'));var config=require(_0x1bb0('0x16'));var db=require(_0x1bb0('0x17'))['db'];function respondWithStatusCode(_0x193b06,_0x4776f4){_0x4776f4=_0x4776f4||0xcc;return function(_0x2802f4){if(_0x2802f4){return _0x193b06[_0x1bb0('0x18')](_0x4776f4);}return _0x193b06[_0x1bb0('0x19')](_0x4776f4)['end']();};}function respondWithResult(_0x4b1d6d,_0x397728){_0x397728=_0x397728||0xc8;return function(_0x467de6){if(_0x467de6){return _0x4b1d6d['status'](_0x397728)['json'](_0x467de6);}};}function respondWithFilteredResult(_0x20f24e,_0x5aec88){return function(_0x5555b1){if(_0x5555b1){var _0x29beb6=_0x5555b1[_0x1bb0('0x1a')],_0x2c30f2=_0x5aec88[_0x1bb0('0x1b')],_0x4c10af=_0x5aec88['offset']+_0x5aec88[_0x1bb0('0x1c')],_0xab15d1;if(_0x4c10af>=_0x29beb6){_0x4c10af=_0x29beb6;_0xab15d1=0xc8;}else{_0xab15d1=0xce;}_0x20f24e[_0x1bb0('0x19')](_0xab15d1);return _0x20f24e[_0x1bb0('0x1d')](_0x1bb0('0x1e'),_0x2c30f2+'-'+_0x4c10af+'/'+_0x29beb6)[_0x1bb0('0x1f')](_0x5555b1);}return null;};}function patchUpdates(_0x48a0bd){return function(_0x441203){try{jsonpatch[_0x1bb0('0x20')](_0x441203,_0x48a0bd,!![]);}catch(_0x26647b){return BPromise['reject'](_0x26647b);}return _0x441203['save']();};}function saveUpdates(_0x537490,_0x5a524a){return function(_0x45c81b){if(_0x45c81b){return _0x45c81b[_0x1bb0('0x21')](_0x537490)[_0x1bb0('0x22')](function(_0x5ad980){return _0x5ad980;});}return null;};}function removeEntity(_0x36887f,_0x4ff3aa){return function(_0x16fc79){if(_0x16fc79){return _0x16fc79['destroy']()[_0x1bb0('0x22')](function(){_0x36887f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xdaff8b,_0x40ae84){return function(_0xe6a6e6){if(!_0xe6a6e6){_0xdaff8b[_0x1bb0('0x18')](0x194);}return _0xe6a6e6;};}function handleError(_0x3a9907,_0x3ce216){_0x3ce216=_0x3ce216||0x1f4;return function(_0x1ba863){logger[_0x1bb0('0x23')](_0x1ba863[_0x1bb0('0x24')]);if(_0x1ba863[_0x1bb0('0x25')]){delete _0x1ba863['name'];}_0x3a9907[_0x1bb0('0x19')](_0x3ce216)[_0x1bb0('0x26')](_0x1ba863);};}exports[_0x1bb0('0x27')]=function(_0x15a697,_0x3b5ed4){var _0x381f1f={},_0x6fdbaf={},_0x410458={'count':0x0,'rows':[]};var _0x367646=db[_0x1bb0('0x28')][_0x1bb0('0x29')];_0x6fdbaf[_0x1bb0('0x2a')]=_['keys'](_0x367646);var _0x3e7d54={'dateStart':_0x15a697[_0x1bb0('0x2b')][_0x1bb0('0x2c')],'dateEnd':_0x15a697[_0x1bb0('0x2b')][_0x1bb0('0x2d')]};delete _0x15a697['query'][_0x1bb0('0x2c')];delete _0x15a697[_0x1bb0('0x2b')][_0x1bb0('0x2d')];_0x6fdbaf[_0x1bb0('0x2b')]=_[_0x1bb0('0x2e')](_0x15a697[_0x1bb0('0x2b')]);_0x6fdbaf[_0x1bb0('0x2f')]=_[_0x1bb0('0x30')](_0x6fdbaf[_0x1bb0('0x2a')],_0x6fdbaf[_0x1bb0('0x2b')]);_0x381f1f[_0x1bb0('0x31')]=_[_0x1bb0('0x30')](_0x6fdbaf[_0x1bb0('0x2a')],qs[_0x1bb0('0x32')](_0x15a697[_0x1bb0('0x2b')][_0x1bb0('0x32')]));_0x381f1f[_0x1bb0('0x31')]=_0x381f1f[_0x1bb0('0x31')]['length']?_0x381f1f[_0x1bb0('0x31')]:_0x6fdbaf[_0x1bb0('0x2a')];if(!_0x15a697['query'][_0x1bb0('0x33')](_0x1bb0('0x34'))){_0x381f1f['limit']=qs['limit'](_0x15a697['query']['limit']);_0x381f1f[_0x1bb0('0x1b')]=qs[_0x1bb0('0x1b')](_0x15a697[_0x1bb0('0x2b')]['offset']);}_0x381f1f[_0x1bb0('0x35')]=qs['sort'](_0x15a697[_0x1bb0('0x2b')][_0x1bb0('0x36')]);_0x381f1f[_0x1bb0('0x37')]=qs[_0x1bb0('0x2f')](_['pick'](_0x15a697[_0x1bb0('0x2b')],_0x6fdbaf['filters']));if(_0x3e7d54[_0x1bb0('0x2c')]){if(_0x3e7d54[_0x1bb0('0x2d')]){_0x3e7d54[_0x1bb0('0x2d')]=moment(_0x3e7d54[_0x1bb0('0x2d')])[_0x1bb0('0x38')](0x1,'day');}else{_0x3e7d54[_0x1bb0('0x2d')]=moment(_0x3e7d54[_0x1bb0('0x2c')])['add'](0x1,_0x1bb0('0x39'));}_[_0x1bb0('0x3a')](_0x381f1f[_0x1bb0('0x37')],{'createdAt':{'$gte':_0x3e7d54[_0x1bb0('0x2c')],'$lte':_0x3e7d54[_0x1bb0('0x2d')]}});}if(_0x15a697[_0x1bb0('0x2b')][_0x1bb0('0x3b')]){_0x381f1f[_0x1bb0('0x37')]=_[_0x1bb0('0x3a')](_0x381f1f['where'],{'$or':_['map'](_0x367646,function(_0x8dc5ed){if(_0x8dc5ed['type']['key']!==_0x1bb0('0x3c')){var _0x3ccc6c={};_0x3ccc6c[_0x8dc5ed['field']]={'$like':'%'+_0x15a697[_0x1bb0('0x2b')][_0x1bb0('0x3b')]+'%'};return _0x3ccc6c;}})});}_0x381f1f=_[_0x1bb0('0x3a')]({},_0x381f1f,_0x15a697['options']);var _0x43684e={'where':_0x381f1f['where']};return db[_0x1bb0('0x28')][_0x1bb0('0x1a')](_0x43684e)[_0x1bb0('0x22')](function(_0x341ada){_0x410458[_0x1bb0('0x1a')]=_0x341ada;if(_0x15a697[_0x1bb0('0x2b')]['includeAll']){_0x381f1f['include']=[{'all':!![]}];}return db[_0x1bb0('0x28')][_0x1bb0('0x3d')](_0x381f1f);})[_0x1bb0('0x22')](function(_0x467a04){_0x410458[_0x1bb0('0x3e')]=_0x467a04;return _0x410458;})[_0x1bb0('0x22')](respondWithFilteredResult(_0x3b5ed4,_0x381f1f))[_0x1bb0('0x3f')](handleError(_0x3b5ed4,null));};exports[_0x1bb0('0x40')]=function(_0x324ce8,_0x2f1caf){var _0x1f5649={'raw':!![],'where':{'id':_0x324ce8[_0x1bb0('0x41')]['id']}},_0x5c5329={};_0x5c5329['model']=_[_0x1bb0('0x2e')](db['ChatQueueReport'][_0x1bb0('0x29')]);_0x5c5329[_0x1bb0('0x2b')]=_['keys'](_0x324ce8['query']);_0x5c5329[_0x1bb0('0x2f')]=_[_0x1bb0('0x30')](_0x5c5329[_0x1bb0('0x2a')],_0x5c5329['query']);_0x1f5649[_0x1bb0('0x31')]=_[_0x1bb0('0x30')](_0x5c5329[_0x1bb0('0x2a')],qs[_0x1bb0('0x32')](_0x324ce8[_0x1bb0('0x2b')][_0x1bb0('0x32')]));_0x1f5649[_0x1bb0('0x31')]=_0x1f5649[_0x1bb0('0x31')][_0x1bb0('0x42')]?_0x1f5649[_0x1bb0('0x31')]:_0x5c5329[_0x1bb0('0x2a')];if(_0x324ce8['query']['includeAll']){_0x1f5649['include']=[{'all':!![]}];}_0x1f5649=_['merge']({},_0x1f5649,_0x324ce8[_0x1bb0('0x43')]);return db[_0x1bb0('0x28')][_0x1bb0('0x44')](_0x1f5649)[_0x1bb0('0x22')](handleEntityNotFound(_0x2f1caf,null))[_0x1bb0('0x22')](respondWithResult(_0x2f1caf,null))[_0x1bb0('0x3f')](handleError(_0x2f1caf,null));};exports[_0x1bb0('0x45')]=function(_0x428625,_0x5d13f2){return db[_0x1bb0('0x28')][_0x1bb0('0x45')](_0x428625[_0x1bb0('0x46')],{})[_0x1bb0('0x22')](respondWithResult(_0x5d13f2,0xc9))[_0x1bb0('0x3f')](handleError(_0x5d13f2,null));};exports[_0x1bb0('0x21')]=function(_0x5dae17,_0x5155e8){if(_0x5dae17['body']['id']){delete _0x5dae17[_0x1bb0('0x46')]['id'];}return db[_0x1bb0('0x28')][_0x1bb0('0x44')]({'where':{'id':_0x5dae17[_0x1bb0('0x41')]['id']}})[_0x1bb0('0x22')](handleEntityNotFound(_0x5155e8,null))['then'](saveUpdates(_0x5dae17[_0x1bb0('0x46')],null))[_0x1bb0('0x22')](respondWithResult(_0x5155e8,null))[_0x1bb0('0x3f')](handleError(_0x5155e8,null));};exports[_0x1bb0('0x47')]=function(_0xdff472,_0x1482c9){return db[_0x1bb0('0x28')]['find']({'where':{'id':_0xdff472[_0x1bb0('0x41')]['id']}})['then'](handleEntityNotFound(_0x1482c9,null))[_0x1bb0('0x22')](removeEntity(_0x1482c9,null))['catch'](handleError(_0x1482c9,null));};exports[_0x1bb0('0x48')]=function(_0x31f84c,_0x514380){return db['ChatQueueReport'][_0x1bb0('0x48')]()[_0x1bb0('0x22')](respondWithResult(_0x514380,null))['catch'](handleError(_0x514380,null));};
\ No newline at end of file
+var _0x8794=['rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','count','offset','set','apply','reject','save','then','error','stack','send','index','ChatQueueReport','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','where','pick','add','day','merge','filter','map','type','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','find','create','update','body','destroy','params','html-pdf','eml-format'];(function(_0x1d9cd0,_0x11933b){var _0x43fed4=function(_0x2adc2d){while(--_0x2adc2d){_0x1d9cd0['push'](_0x1d9cd0['shift']());}};_0x43fed4(++_0x11933b);}(_0x8794,0x1cc));var _0x4879=function(_0x3fa7ad,_0x182b55){_0x3fa7ad=_0x3fa7ad-0x0;var _0x59491f=_0x8794[_0x3fa7ad];return _0x59491f;};'use strict';var pdf=require(_0x4879('0x0'));var emlformat=require(_0x4879('0x1'));var rimraf=require(_0x4879('0x2'));var zipdir=require(_0x4879('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4879('0x4'));var moment=require(_0x4879('0x5'));var BPromise=require(_0x4879('0x6'));var Mustache=require(_0x4879('0x7'));var util=require('util');var path=require(_0x4879('0x8'));var sox=require(_0x4879('0x9'));var csv=require('to-csv');var ejs=require(_0x4879('0xa'));var fs=require('fs');var _=require(_0x4879('0xb'));var squel=require(_0x4879('0xc'));var crypto=require('crypto');var jsforce=require(_0x4879('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4879('0xe'));var querystring=require(_0x4879('0xf'));var Papa=require(_0x4879('0x10'));var Redis=require(_0x4879('0x11'));var qs=require('../../components/parsers/qs');var logger=require(_0x4879('0x12'))(_0x4879('0x13'));var utils=require(_0x4879('0x14'));var config=require(_0x4879('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x283e77,_0x44920e){_0x44920e=_0x44920e||0xcc;return function(_0x298718){if(_0x298718){return _0x283e77[_0x4879('0x16')](_0x44920e);}return _0x283e77[_0x4879('0x17')](_0x44920e)[_0x4879('0x18')]();};}function respondWithResult(_0xe2e7b5,_0x413b56){_0x413b56=_0x413b56||0xc8;return function(_0x3321f0){if(_0x3321f0){return _0xe2e7b5[_0x4879('0x17')](_0x413b56)[_0x4879('0x19')](_0x3321f0);}};}function respondWithFilteredResult(_0x2fcba4,_0x50a8e7){return function(_0x344bc0){if(_0x344bc0){var _0x134517=_0x344bc0[_0x4879('0x1a')],_0x3bd1b0=_0x50a8e7[_0x4879('0x1b')],_0x4ebb46=_0x50a8e7[_0x4879('0x1b')]+_0x50a8e7['limit'],_0x5d7100;if(_0x4ebb46>=_0x134517){_0x4ebb46=_0x134517;_0x5d7100=0xc8;}else{_0x5d7100=0xce;}_0x2fcba4[_0x4879('0x17')](_0x5d7100);return _0x2fcba4[_0x4879('0x1c')]('Content-Range',_0x3bd1b0+'-'+_0x4ebb46+'/'+_0x134517)[_0x4879('0x19')](_0x344bc0);}return null;};}function patchUpdates(_0x5d9ce5){return function(_0x59bf63){try{jsonpatch[_0x4879('0x1d')](_0x59bf63,_0x5d9ce5,!![]);}catch(_0x242faa){return BPromise[_0x4879('0x1e')](_0x242faa);}return _0x59bf63[_0x4879('0x1f')]();};}function saveUpdates(_0x53573a,_0x5c18a5){return function(_0x24cc4a){if(_0x24cc4a){return _0x24cc4a['update'](_0x53573a)['then'](function(_0x3f48f1){return _0x3f48f1;});}return null;};}function removeEntity(_0x279943,_0x325c4d){return function(_0x5bc976){if(_0x5bc976){return _0x5bc976['destroy']()[_0x4879('0x20')](function(){_0x279943[_0x4879('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d0e0a,_0x38011a){return function(_0x3344fe){if(!_0x3344fe){_0x5d0e0a[_0x4879('0x16')](0x194);}return _0x3344fe;};}function handleError(_0x3783ab,_0x44c795){_0x44c795=_0x44c795||0x1f4;return function(_0x21e047){logger[_0x4879('0x21')](_0x21e047[_0x4879('0x22')]);if(_0x21e047['name']){delete _0x21e047['name'];}_0x3783ab[_0x4879('0x17')](_0x44c795)[_0x4879('0x23')](_0x21e047);};}exports[_0x4879('0x24')]=function(_0x5ea431,_0x35a7d3){var _0x46712e={},_0x5c1f5f={},_0x56e3cf={'count':0x0,'rows':[]};var _0x352e0e=db[_0x4879('0x25')][_0x4879('0x26')];_0x5c1f5f[_0x4879('0x27')]=_[_0x4879('0x28')](_0x352e0e);var _0x574993={'dateStart':_0x5ea431[_0x4879('0x29')][_0x4879('0x2a')],'dateEnd':_0x5ea431[_0x4879('0x29')][_0x4879('0x2b')]};delete _0x5ea431[_0x4879('0x29')][_0x4879('0x2a')];delete _0x5ea431[_0x4879('0x29')]['dateEnd'];_0x5c1f5f[_0x4879('0x29')]=_[_0x4879('0x28')](_0x5ea431[_0x4879('0x29')]);_0x5c1f5f[_0x4879('0x2c')]=_[_0x4879('0x2d')](_0x5c1f5f[_0x4879('0x27')],_0x5c1f5f[_0x4879('0x29')]);_0x46712e[_0x4879('0x2e')]=_[_0x4879('0x2d')](_0x5c1f5f[_0x4879('0x27')],qs[_0x4879('0x2f')](_0x5ea431[_0x4879('0x29')][_0x4879('0x2f')]));_0x46712e[_0x4879('0x2e')]=_0x46712e[_0x4879('0x2e')][_0x4879('0x30')]?_0x46712e['attributes']:_0x5c1f5f['model'];if(!_0x5ea431[_0x4879('0x29')][_0x4879('0x31')](_0x4879('0x32'))){_0x46712e[_0x4879('0x33')]=qs[_0x4879('0x33')](_0x5ea431[_0x4879('0x29')][_0x4879('0x33')]);_0x46712e['offset']=qs['offset'](_0x5ea431[_0x4879('0x29')]['offset']);}_0x46712e[_0x4879('0x34')]=qs['sort'](_0x5ea431[_0x4879('0x29')]['sort']);_0x46712e[_0x4879('0x35')]=qs[_0x4879('0x2c')](_[_0x4879('0x36')](_0x5ea431['query'],_0x5c1f5f[_0x4879('0x2c')]));if(_0x574993[_0x4879('0x2a')]){if(_0x574993[_0x4879('0x2b')]){_0x574993[_0x4879('0x2b')]=moment(_0x574993['dateEnd'])[_0x4879('0x37')](0x1,'day');}else{_0x574993[_0x4879('0x2b')]=moment(_0x574993['dateStart'])[_0x4879('0x37')](0x1,_0x4879('0x38'));}_[_0x4879('0x39')](_0x46712e[_0x4879('0x35')],{'createdAt':{'$gte':_0x574993[_0x4879('0x2a')],'$lte':_0x574993[_0x4879('0x2b')]}});}if(_0x5ea431[_0x4879('0x29')][_0x4879('0x3a')]){_0x46712e[_0x4879('0x35')]=_[_0x4879('0x39')](_0x46712e[_0x4879('0x35')],{'$or':_[_0x4879('0x3b')](_0x352e0e,function(_0x14e15f){if(_0x14e15f[_0x4879('0x3c')][_0x4879('0x3d')]!==_0x4879('0x3e')){var _0x1cc12f={};_0x1cc12f[_0x14e15f[_0x4879('0x3f')]]={'$like':'%'+_0x5ea431[_0x4879('0x29')]['filter']+'%'};return _0x1cc12f;}})});}_0x46712e=_[_0x4879('0x39')]({},_0x46712e,_0x5ea431[_0x4879('0x40')]);var _0x2fff4d={'where':_0x46712e[_0x4879('0x35')]};return db[_0x4879('0x25')][_0x4879('0x1a')](_0x2fff4d)[_0x4879('0x20')](function(_0xdd01a0){_0x56e3cf[_0x4879('0x1a')]=_0xdd01a0;if(_0x5ea431[_0x4879('0x29')][_0x4879('0x41')]){_0x46712e[_0x4879('0x42')]=[{'all':!![]}];}return db[_0x4879('0x25')][_0x4879('0x43')](_0x46712e);})[_0x4879('0x20')](function(_0x316269){_0x56e3cf[_0x4879('0x44')]=_0x316269;return _0x56e3cf;})[_0x4879('0x20')](respondWithFilteredResult(_0x35a7d3,_0x46712e))[_0x4879('0x45')](handleError(_0x35a7d3,null));};exports[_0x4879('0x46')]=function(_0x1e8c4f,_0x1cbc09){var _0x523e6c={'raw':!![],'where':{'id':_0x1e8c4f['params']['id']}},_0xf463d9={};_0xf463d9[_0x4879('0x27')]=_[_0x4879('0x28')](db[_0x4879('0x25')][_0x4879('0x26')]);_0xf463d9[_0x4879('0x29')]=_[_0x4879('0x28')](_0x1e8c4f[_0x4879('0x29')]);_0xf463d9[_0x4879('0x2c')]=_[_0x4879('0x2d')](_0xf463d9['model'],_0xf463d9[_0x4879('0x29')]);_0x523e6c['attributes']=_[_0x4879('0x2d')](_0xf463d9[_0x4879('0x27')],qs[_0x4879('0x2f')](_0x1e8c4f[_0x4879('0x29')]['fields']));_0x523e6c[_0x4879('0x2e')]=_0x523e6c[_0x4879('0x2e')][_0x4879('0x30')]?_0x523e6c[_0x4879('0x2e')]:_0xf463d9[_0x4879('0x27')];if(_0x1e8c4f[_0x4879('0x29')][_0x4879('0x41')]){_0x523e6c[_0x4879('0x42')]=[{'all':!![]}];}_0x523e6c=_[_0x4879('0x39')]({},_0x523e6c,_0x1e8c4f[_0x4879('0x40')]);return db['ChatQueueReport'][_0x4879('0x47')](_0x523e6c)['then'](handleEntityNotFound(_0x1cbc09,null))[_0x4879('0x20')](respondWithResult(_0x1cbc09,null))[_0x4879('0x45')](handleError(_0x1cbc09,null));};exports[_0x4879('0x48')]=function(_0x1d2c48,_0x180c19){return db[_0x4879('0x25')]['create'](_0x1d2c48['body'],{})[_0x4879('0x20')](respondWithResult(_0x180c19,0xc9))[_0x4879('0x45')](handleError(_0x180c19,null));};exports[_0x4879('0x49')]=function(_0x47fdcd,_0x4a416e){if(_0x47fdcd[_0x4879('0x4a')]['id']){delete _0x47fdcd[_0x4879('0x4a')]['id'];}return db[_0x4879('0x25')][_0x4879('0x47')]({'where':{'id':_0x47fdcd['params']['id']}})[_0x4879('0x20')](handleEntityNotFound(_0x4a416e,null))[_0x4879('0x20')](saveUpdates(_0x47fdcd[_0x4879('0x4a')],null))[_0x4879('0x20')](respondWithResult(_0x4a416e,null))[_0x4879('0x45')](handleError(_0x4a416e,null));};exports[_0x4879('0x4b')]=function(_0x2b93fc,_0x38d762){return db['ChatQueueReport'][_0x4879('0x47')]({'where':{'id':_0x2b93fc[_0x4879('0x4c')]['id']}})[_0x4879('0x20')](handleEntityNotFound(_0x38d762,null))['then'](removeEntity(_0x38d762,null))[_0x4879('0x45')](handleError(_0x38d762,null));};exports['describe']=function(_0x49093d,_0x291d9a){return db[_0x4879('0x25')]['describe']()[_0x4879('0x20')](respondWithResult(_0x291d9a,null))['catch'](handleError(_0x291d9a,null));};
\ No newline at end of file
index a97e1cd..02b61b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['request-promise','exports','define','ChatQueueReport','report_chat_queue','uniqueid','lodash','util','bluebird'];(function(_0x28611e,_0x586726){var _0x530f69=function(_0x407906){while(--_0x407906){_0x28611e['push'](_0x28611e['shift']());}};_0x530f69(++_0x586726);}(_0x55ca,0x126));var _0xa55c=function(_0x29a40a,_0x234214){_0x29a40a=_0x29a40a-0x0;var _0x6182e9=_0x55ca[_0x29a40a];return _0x6182e9;};'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 attributes=require('./chatQueueReport.attributes');module[_0xa55c('0x4')]=function(_0x2db02a,_0xcb02e3){return _0x2db02a[_0xa55c('0x5')](_0xa55c('0x6'),attributes,{'tableName':_0xa55c('0x7'),'paranoid':![],'indexes':[{'name':_0xa55c('0x8'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['ChatQueueReport','report_chat_queue','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','./chatQueueReport.attributes','exports','define'];(function(_0x5cd62f,_0x3c0bf5){var _0x45fd3a=function(_0x5931ae){while(--_0x5931ae){_0x5cd62f['push'](_0x5cd62f['shift']());}};_0x45fd3a(++_0x3c0bf5);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var attributes=require(_0x7995('0x6'));module[_0x7995('0x7')]=function(_0x576d89,_0x744bea){return _0x576d89[_0x7995('0x8')](_0x7995('0x9'),attributes,{'tableName':_0x7995('0xa'),'paranoid':![],'indexes':[{'name':_0x7995('0xb'),'fields':[_0x7995('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index fb17b15..b5c1150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5835=['http','request','info','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','ChatQueueReport,\x20%s,\x20%s','ChatQueueReport','create','body','options','then','CreateChatQueueReport','UpdateChatQueueReport','raw','where','limit','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5835,0xd6));var _0x5583=function(_0x2b441d,_0x3cb821){_0x2b441d=_0x2b441d-0x0;var _0x19ba4a=_0x5835[_0x2b441d];return _0x19ba4a;};'use strict';var _=require(_0x5583('0x0'));var util=require(_0x5583('0x1'));var moment=require(_0x5583('0x2'));var BPromise=require('bluebird');var rs=require(_0x5583('0x3'));var fs=require('fs');var Redis=require(_0x5583('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5583('0x5'));var logger=require(_0x5583('0x6'))('rpc');var config=require(_0x5583('0x7'));var jayson=require(_0x5583('0x8'));var client=jayson[_0x5583('0x9')][_0x5583('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3dc3c1,_0x3d1ae6,_0x3629e6){return new BPromise(function(_0x3707f4,_0x37781c){return client[_0x5583('0xb')](_0x3dc3c1,_0x3629e6)['then'](function(_0x29451c){logger[_0x5583('0xc')]('ChatQueueReport,\x20%s,\x20%s',_0x3d1ae6,_0x5583('0xd'));logger[_0x5583('0xe')](_0x5583('0xf'),_0x3d1ae6,_0x5583('0xd'),JSON[_0x5583('0x10')](_0x29451c));if(_0x29451c[_0x5583('0x11')]){if(_0x29451c[_0x5583('0x11')]['code']===0x1f4){logger[_0x5583('0x11')]('ChatQueueReport,\x20%s,\x20%s',_0x3d1ae6,_0x29451c['error'][_0x5583('0x12')]);return _0x37781c(_0x29451c[_0x5583('0x11')][_0x5583('0x12')]);}logger[_0x5583('0x11')]('ChatQueueReport,\x20%s,\x20%s',_0x3d1ae6,_0x29451c[_0x5583('0x11')][_0x5583('0x12')]);return _0x3707f4(_0x29451c['error']['message']);}else{logger[_0x5583('0xc')]('ChatQueueReport,\x20%s,\x20%s',_0x3d1ae6,_0x5583('0xd'));_0x3707f4(_0x29451c[_0x5583('0x13')][_0x5583('0x12')]);}})['catch'](function(_0x16c24a){logger[_0x5583('0x11')](_0x5583('0x14'),_0x3d1ae6,_0x16c24a);_0x37781c(_0x16c24a);});});}exports['CreateChatQueueReport']=function(_0x3b91ab){var _0x287de8=this;return new Promise(function(_0x368f40,_0x157cbf){return db[_0x5583('0x15')][_0x5583('0x16')](_0x3b91ab[_0x5583('0x17')],{'raw':_0x3b91ab[_0x5583('0x18')]?_0x3b91ab[_0x5583('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x5583('0x19')](function(_0x14b6eb){logger[_0x5583('0xc')](_0x5583('0x1a'),_0x3b91ab);logger[_0x5583('0xe')](_0x5583('0x1a'),_0x3b91ab,JSON[_0x5583('0x10')](_0x14b6eb));_0x368f40(_0x14b6eb);})['catch'](function(_0x474753){logger[_0x5583('0x11')](_0x5583('0x1a'),_0x474753[_0x5583('0x12')],_0x3b91ab);_0x157cbf(_0x287de8[_0x5583('0x11')](0x1f4,_0x474753[_0x5583('0x12')]));});});};exports[_0x5583('0x1b')]=function(_0x2d06ee){var _0x192085=this;return new Promise(function(_0x544121,_0xab034a){return db[_0x5583('0x15')]['update'](_0x2d06ee[_0x5583('0x17')],{'raw':_0x2d06ee[_0x5583('0x18')]?_0x2d06ee['options'][_0x5583('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d06ee[_0x5583('0x18')]?_0x2d06ee[_0x5583('0x18')][_0x5583('0x1d')]||null:null,'attributes':_0x2d06ee[_0x5583('0x18')]?_0x2d06ee[_0x5583('0x18')]['attributes']||null:null,'limit':_0x2d06ee[_0x5583('0x18')]?_0x2d06ee[_0x5583('0x18')][_0x5583('0x1e')]||null:null})[_0x5583('0x19')](function(_0x509fdc){logger[_0x5583('0xc')](_0x5583('0x1b'),_0x2d06ee);logger['debug'](_0x5583('0x1b'),_0x2d06ee,JSON[_0x5583('0x10')](_0x509fdc));_0x544121(_0x509fdc);})[_0x5583('0x1f')](function(_0x51f2e4){logger[_0x5583('0x11')]('UpdateChatQueueReport',_0x51f2e4[_0x5583('0x12')],_0x2d06ee);_0xab034a(_0x192085['error'](0x1f4,_0x51f2e4[_0x5583('0x12')]));});});};
\ No newline at end of file
+var _0x7f6e=['limit','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ChatQueueReport,\x20%s,\x20%s','ChatQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','ChatQueueReport','create','options','raw','CreateChatQueueReport','debug','UpdateChatQueueReport','update','where','attributes'];(function(_0x1a54ac,_0x1b295e){var _0x218eac=function(_0x1f94cd){while(--_0x1f94cd){_0x1a54ac['push'](_0x1a54ac['shift']());}};_0x218eac(++_0x1b295e);}(_0x7f6e,0x1dd));var _0xe7f6=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x7f6e[_0x40ac5e];return _0x2839d6;};'use strict';var _=require(_0xe7f6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe7f6('0x1'));var fs=require('fs');var Redis=require(_0xe7f6('0x2'));var db=require(_0xe7f6('0x3'))['db'];var utils=require(_0xe7f6('0x4'));var logger=require(_0xe7f6('0x5'))(_0xe7f6('0x6'));var config=require(_0xe7f6('0x7'));var jayson=require(_0xe7f6('0x8'));var client=jayson[_0xe7f6('0x9')][_0xe7f6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e14cd,_0x49920f,_0x23f4be){return new BPromise(function(_0x5cf724,_0x3e6225){return client[_0xe7f6('0xb')](_0x5e14cd,_0x23f4be)[_0xe7f6('0xc')](function(_0x4856cf){logger['info'](_0xe7f6('0xd'),_0x49920f,'request\x20sent');logger['debug'](_0xe7f6('0xe'),_0x49920f,_0xe7f6('0xf'),JSON[_0xe7f6('0x10')](_0x4856cf));if(_0x4856cf[_0xe7f6('0x11')]){if(_0x4856cf[_0xe7f6('0x11')][_0xe7f6('0x12')]===0x1f4){logger[_0xe7f6('0x11')](_0xe7f6('0xd'),_0x49920f,_0x4856cf[_0xe7f6('0x11')]['message']);return _0x3e6225(_0x4856cf[_0xe7f6('0x11')][_0xe7f6('0x13')]);}logger[_0xe7f6('0x11')](_0xe7f6('0xd'),_0x49920f,_0x4856cf[_0xe7f6('0x11')][_0xe7f6('0x13')]);return _0x5cf724(_0x4856cf[_0xe7f6('0x11')][_0xe7f6('0x13')]);}else{logger[_0xe7f6('0x14')](_0xe7f6('0xd'),_0x49920f,_0xe7f6('0xf'));_0x5cf724(_0x4856cf[_0xe7f6('0x15')][_0xe7f6('0x13')]);}})[_0xe7f6('0x16')](function(_0x175be8){logger[_0xe7f6('0x11')]('ChatQueueReport,\x20%s,\x20%s',_0x49920f,_0x175be8);_0x3e6225(_0x175be8);});});}exports['CreateChatQueueReport']=function(_0x2fa50e){var _0x2b747f=this;return new Promise(function(_0x2e2de2,_0x3edd63){return db[_0xe7f6('0x17')][_0xe7f6('0x18')](_0x2fa50e['body'],{'raw':_0x2fa50e[_0xe7f6('0x19')]?_0x2fa50e[_0xe7f6('0x19')][_0xe7f6('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x5ac6f5){logger[_0xe7f6('0x14')](_0xe7f6('0x1b'),_0x2fa50e);logger[_0xe7f6('0x1c')]('CreateChatQueueReport',_0x2fa50e,JSON[_0xe7f6('0x10')](_0x5ac6f5));_0x2e2de2(_0x5ac6f5);})['catch'](function(_0x10fb18){logger[_0xe7f6('0x11')](_0xe7f6('0x1b'),_0x10fb18[_0xe7f6('0x13')],_0x2fa50e);_0x3edd63(_0x2b747f[_0xe7f6('0x11')](0x1f4,_0x10fb18['message']));});});};exports[_0xe7f6('0x1d')]=function(_0x1c174b){var _0x2b2c89=this;return new Promise(function(_0x267a35,_0x462c85){return db[_0xe7f6('0x17')][_0xe7f6('0x1e')](_0x1c174b['body'],{'raw':_0x1c174b[_0xe7f6('0x19')]?_0x1c174b[_0xe7f6('0x19')][_0xe7f6('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c174b[_0xe7f6('0x19')]?_0x1c174b[_0xe7f6('0x19')][_0xe7f6('0x1f')]||null:null,'attributes':_0x1c174b[_0xe7f6('0x19')]?_0x1c174b[_0xe7f6('0x19')][_0xe7f6('0x20')]||null:null,'limit':_0x1c174b['options']?_0x1c174b[_0xe7f6('0x19')][_0xe7f6('0x21')]||null:null})[_0xe7f6('0xc')](function(_0x32afd0){logger['info'](_0xe7f6('0x1d'),_0x1c174b);logger[_0xe7f6('0x1c')](_0xe7f6('0x1d'),_0x1c174b,JSON['stringify'](_0x32afd0));_0x267a35(_0x32afd0);})[_0xe7f6('0x16')](function(_0x1cb158){logger['error']('UpdateChatQueueReport',_0x1cb158['message'],_0x1c174b);_0x462c85(_0x2b2c89[_0xe7f6('0x11')](0x1f4,_0x1cb158[_0xe7f6('0x13')]));});});};
\ No newline at end of file
index 3e301e0..d12f007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46cb=['Router','../../components/auth/service','../../components/interaction/service','./chatQueueReport.controller','get','isAuthenticated','index','/describe','describe','post','put','/:id','destroy','exports','multer','path','connect-timeout','express'];(function(_0x51bda1,_0x44f80d){var _0x1ce08c=function(_0x5b788e){while(--_0x5b788e){_0x51bda1['push'](_0x51bda1['shift']());}};_0x1ce08c(++_0x44f80d);}(_0x46cb,0x10a));var _0xb46c=function(_0x58c608,_0x16f6df){_0x58c608=_0x58c608-0x0;var _0x4fb8aa=_0x46cb[_0x58c608];return _0x4fb8aa;};'use strict';var multer=require(_0xb46c('0x0'));var util=require('util');var path=require(_0xb46c('0x1'));var timeout=require(_0xb46c('0x2'));var express=require(_0xb46c('0x3'));var router=express[_0xb46c('0x4')]();var auth=require(_0xb46c('0x5'));var interaction=require(_0xb46c('0x6'));var config=require('../../config/environment');var controller=require(_0xb46c('0x7'));router[_0xb46c('0x8')]('/',auth[_0xb46c('0x9')](),controller[_0xb46c('0xa')]);router['get'](_0xb46c('0xb'),auth[_0xb46c('0x9')](),controller[_0xb46c('0xc')]);router['get']('/:id',auth[_0xb46c('0x9')](),controller['show']);router[_0xb46c('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xb46c('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0xb46c('0xf'),auth[_0xb46c('0x9')](),controller[_0xb46c('0x10')]);module[_0xb46c('0x11')]=router;
\ No newline at end of file
+var _0xf50b=['destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','describe','show','create','put','/:id','update','delete'];(function(_0x26437e,_0x1d30dc){var _0x2a5c31=function(_0x3d642d){while(--_0x3d642d){_0x26437e['push'](_0x26437e['shift']());}};_0x2a5c31(++_0x1d30dc);}(_0xf50b,0x1e2));var _0xbf50=function(_0x45bf13,_0x102b9a){_0x45bf13=_0x45bf13-0x0;var _0x43a35a=_0xf50b[_0x45bf13];return _0x43a35a;};'use strict';var multer=require(_0xbf50('0x0'));var util=require(_0xbf50('0x1'));var path=require(_0xbf50('0x2'));var timeout=require(_0xbf50('0x3'));var express=require(_0xbf50('0x4'));var router=express['Router']();var auth=require(_0xbf50('0x5'));var interaction=require(_0xbf50('0x6'));var config=require(_0xbf50('0x7'));var controller=require(_0xbf50('0x8'));router[_0xbf50('0x9')]('/',auth[_0xbf50('0xa')](),controller['index']);router['get']('/describe',auth[_0xbf50('0xa')](),controller[_0xbf50('0xb')]);router['get']('/:id',auth[_0xbf50('0xa')](),controller[_0xbf50('0xc')]);router['post']('/',auth[_0xbf50('0xa')](),controller[_0xbf50('0xd')]);router[_0xbf50('0xe')](_0xbf50('0xf'),auth[_0xbf50('0xa')](),controller[_0xbf50('0x10')]);router[_0xbf50('0x11')]('/:id',auth[_0xbf50('0xa')](),controller[_0xbf50('0x12')]);module[_0xbf50('0x13')]=router;
\ No newline at end of file
index f00db2d..a7ac652 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6cd=['exports','STRING','account','agent','queue','DATE','moment','sequelize'];(function(_0x8f4fd3,_0x279bf0){var _0x55adf2=function(_0xbb5efa){while(--_0xbb5efa){_0x8f4fd3['push'](_0x8f4fd3['shift']());}};_0x55adf2(++_0x279bf0);}(_0xa6cd,0x186));var _0xda6c=function(_0x522c2c,_0x24b876){_0x522c2c=_0x522c2c-0x0;var _0x2b0696=_0xa6cd[_0x522c2c];return _0x2b0696;};'use strict';var moment=require(_0xda6c('0x0'));var Sequelize=require(_0xda6c('0x1'));module[_0xda6c('0x2')]={'uniqueid':{'type':Sequelize[_0xda6c('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xda6c('0x4'),_0xda6c('0x5'),_0xda6c('0x6')),'allowNull':![],'defaultValue':_0xda6c('0x6')},'transferredAt':{'type':Sequelize[_0xda6c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xc8c0=['exports','ENUM','account','agent','queue','DATE','moment'];(function(_0x381807,_0xd8fed2){var _0x4bd8d0=function(_0x21b27f){while(--_0x21b27f){_0x381807['push'](_0x381807['shift']());}};_0x4bd8d0(++_0xd8fed2);}(_0xc8c0,0x1db));var _0x0c8c=function(_0x16389e,_0x3027d0){_0x16389e=_0x16389e-0x0;var _0x1afa8a=_0xc8c0[_0x16389e];return _0x1afa8a;};'use strict';var moment=require(_0x0c8c('0x0'));var Sequelize=require('sequelize');module[_0x0c8c('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x0c8c('0x2')](_0x0c8c('0x3'),_0x0c8c('0x4'),_0x0c8c('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0x0c8c('0x6')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 244e4b2..bde7097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3b8=['where','dateEnd','add','day','merge','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','describe','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','set','json','apply','reject','save','update','then','error','stack','name','send','ChatTransferReport','rawAttributes','model','keys','query','dateStart','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort'];(function(_0x393d69,_0x3a8c83){var _0x3cee37=function(_0x462682){while(--_0x462682){_0x393d69['push'](_0x393d69['shift']());}};_0x3cee37(++_0x3a8c83);}(_0xf3b8,0xef));var _0x8f3b=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0xf3b8[_0x2df507];return _0x1f7167;};'use strict';var pdf=require(_0x8f3b('0x0'));var emlformat=require(_0x8f3b('0x1'));var rimraf=require(_0x8f3b('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8f3b('0x3'));var rp=require(_0x8f3b('0x4'));var moment=require(_0x8f3b('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8f3b('0x6'));var util=require(_0x8f3b('0x7'));var path=require(_0x8f3b('0x8'));var sox=require(_0x8f3b('0x9'));var csv=require(_0x8f3b('0xa'));var ejs=require(_0x8f3b('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0x8f3b('0xc'));var crypto=require(_0x8f3b('0xd'));var jsforce=require(_0x8f3b('0xe'));var deskjs=require(_0x8f3b('0xf'));var toCsv=require(_0x8f3b('0xa'));var querystring=require('querystring');var Papa=require(_0x8f3b('0x10'));var Redis=require(_0x8f3b('0x11'));var qs=require(_0x8f3b('0x12'));var logger=require('../../config/logger')(_0x8f3b('0x13'));var utils=require(_0x8f3b('0x14'));var config=require(_0x8f3b('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e3179,_0xe78aa9){_0xe78aa9=_0xe78aa9||0xcc;return function(_0x180a09){if(_0x180a09){return _0x5e3179[_0x8f3b('0x16')](_0xe78aa9);}return _0x5e3179[_0x8f3b('0x17')](_0xe78aa9)[_0x8f3b('0x18')]();};}function respondWithResult(_0x5c36f0,_0x5e8c39){_0x5e8c39=_0x5e8c39||0xc8;return function(_0x405183){if(_0x405183){return _0x5c36f0[_0x8f3b('0x17')](_0x5e8c39)['json'](_0x405183);}};}function respondWithFilteredResult(_0x54d709,_0x469f3f){return function(_0x4bf4b7){if(_0x4bf4b7){var _0x3b9291=_0x4bf4b7['count'],_0x4adf25=_0x469f3f['offset'],_0x150951=_0x469f3f[_0x8f3b('0x19')]+_0x469f3f['limit'],_0x51a4a9;if(_0x150951>=_0x3b9291){_0x150951=_0x3b9291;_0x51a4a9=0xc8;}else{_0x51a4a9=0xce;}_0x54d709['status'](_0x51a4a9);return _0x54d709[_0x8f3b('0x1a')]('Content-Range',_0x4adf25+'-'+_0x150951+'/'+_0x3b9291)[_0x8f3b('0x1b')](_0x4bf4b7);}return null;};}function patchUpdates(_0x4fe962){return function(_0x51e5e4){try{jsonpatch[_0x8f3b('0x1c')](_0x51e5e4,_0x4fe962,!![]);}catch(_0x1deda6){return BPromise[_0x8f3b('0x1d')](_0x1deda6);}return _0x51e5e4[_0x8f3b('0x1e')]();};}function saveUpdates(_0x18bafc,_0x4deb9d){return function(_0x45ba26){if(_0x45ba26){return _0x45ba26[_0x8f3b('0x1f')](_0x18bafc)[_0x8f3b('0x20')](function(_0x1fcbfb){return _0x1fcbfb;});}return null;};}function removeEntity(_0x40c174,_0x237c31){return function(_0x4e6e3a){if(_0x4e6e3a){return _0x4e6e3a['destroy']()[_0x8f3b('0x20')](function(){_0x40c174[_0x8f3b('0x17')](0xcc)[_0x8f3b('0x18')]();});}};}function handleEntityNotFound(_0x2b794d,_0x3a3b13){return function(_0x5d7451){if(!_0x5d7451){_0x2b794d[_0x8f3b('0x16')](0x194);}return _0x5d7451;};}function handleError(_0x606150,_0x25bfaa){_0x25bfaa=_0x25bfaa||0x1f4;return function(_0x55e8e4){logger[_0x8f3b('0x21')](_0x55e8e4[_0x8f3b('0x22')]);if(_0x55e8e4['name']){delete _0x55e8e4[_0x8f3b('0x23')];}_0x606150[_0x8f3b('0x17')](_0x25bfaa)[_0x8f3b('0x24')](_0x55e8e4);};}exports['index']=function(_0x350176,_0x84fe2b){var _0x22ec28={},_0x17fbe0={},_0x27a94d={'count':0x0,'rows':[]};var _0xab87d0=db[_0x8f3b('0x25')][_0x8f3b('0x26')];_0x17fbe0[_0x8f3b('0x27')]=_[_0x8f3b('0x28')](_0xab87d0);var _0x4d2af6={'dateStart':_0x350176[_0x8f3b('0x29')][_0x8f3b('0x2a')],'dateEnd':_0x350176['query']['dateEnd']};delete _0x350176[_0x8f3b('0x29')][_0x8f3b('0x2a')];delete _0x350176[_0x8f3b('0x29')]['dateEnd'];_0x17fbe0['query']=_['keys'](_0x350176[_0x8f3b('0x29')]);_0x17fbe0[_0x8f3b('0x2b')]=_[_0x8f3b('0x2c')](_0x17fbe0['model'],_0x17fbe0[_0x8f3b('0x29')]);_0x22ec28[_0x8f3b('0x2d')]=_[_0x8f3b('0x2c')](_0x17fbe0[_0x8f3b('0x27')],qs['fields'](_0x350176[_0x8f3b('0x29')][_0x8f3b('0x2e')]));_0x22ec28[_0x8f3b('0x2d')]=_0x22ec28[_0x8f3b('0x2d')][_0x8f3b('0x2f')]?_0x22ec28[_0x8f3b('0x2d')]:_0x17fbe0['model'];if(!_0x350176[_0x8f3b('0x29')][_0x8f3b('0x30')](_0x8f3b('0x31'))){_0x22ec28['limit']=qs['limit'](_0x350176[_0x8f3b('0x29')][_0x8f3b('0x32')]);_0x22ec28[_0x8f3b('0x19')]=qs['offset'](_0x350176[_0x8f3b('0x29')][_0x8f3b('0x19')]);}_0x22ec28[_0x8f3b('0x33')]=qs[_0x8f3b('0x34')](_0x350176['query'][_0x8f3b('0x34')]);_0x22ec28[_0x8f3b('0x35')]=qs[_0x8f3b('0x2b')](_['pick'](_0x350176[_0x8f3b('0x29')],_0x17fbe0[_0x8f3b('0x2b')]));if(_0x4d2af6[_0x8f3b('0x2a')]){if(_0x4d2af6[_0x8f3b('0x36')]){_0x4d2af6[_0x8f3b('0x36')]=moment(_0x4d2af6[_0x8f3b('0x36')])[_0x8f3b('0x37')](0x1,_0x8f3b('0x38'));}else{_0x4d2af6[_0x8f3b('0x36')]=moment(_0x4d2af6[_0x8f3b('0x2a')])['add'](0x1,_0x8f3b('0x38'));}_[_0x8f3b('0x39')](_0x22ec28['where'],{'createdAt':{'$gte':_0x4d2af6['dateStart'],'$lte':_0x4d2af6[_0x8f3b('0x36')]}});}if(_0x350176[_0x8f3b('0x29')][_0x8f3b('0x3a')]){_0x22ec28[_0x8f3b('0x35')]=_['merge'](_0x22ec28[_0x8f3b('0x35')],{'$or':_['map'](_0xab87d0,function(_0x18bbb7){if(_0x18bbb7['type']['key']!==_0x8f3b('0x3b')){var _0x4a14b5={};_0x4a14b5[_0x18bbb7['field']]={'$like':'%'+_0x350176[_0x8f3b('0x29')][_0x8f3b('0x3a')]+'%'};return _0x4a14b5;}})});}_0x22ec28=_[_0x8f3b('0x39')]({},_0x22ec28,_0x350176[_0x8f3b('0x3c')]);var _0x53546e={'where':_0x22ec28['where']};return db[_0x8f3b('0x25')]['count'](_0x53546e)[_0x8f3b('0x20')](function(_0x365e1f){_0x27a94d['count']=_0x365e1f;if(_0x350176[_0x8f3b('0x29')][_0x8f3b('0x3d')]){_0x22ec28[_0x8f3b('0x3e')]=[{'all':!![]}];}return db[_0x8f3b('0x25')][_0x8f3b('0x3f')](_0x22ec28);})[_0x8f3b('0x20')](function(_0x4bc6b3){_0x27a94d[_0x8f3b('0x40')]=_0x4bc6b3;return _0x27a94d;})[_0x8f3b('0x20')](respondWithFilteredResult(_0x84fe2b,_0x22ec28))[_0x8f3b('0x41')](handleError(_0x84fe2b,null));};exports[_0x8f3b('0x42')]=function(_0x1d37d1,_0x9328a6){var _0x204b64={'raw':!![],'where':{'id':_0x1d37d1[_0x8f3b('0x43')]['id']}},_0x21d477={};_0x21d477['model']=_[_0x8f3b('0x28')](db[_0x8f3b('0x25')][_0x8f3b('0x26')]);_0x21d477[_0x8f3b('0x29')]=_[_0x8f3b('0x28')](_0x1d37d1[_0x8f3b('0x29')]);_0x21d477[_0x8f3b('0x2b')]=_[_0x8f3b('0x2c')](_0x21d477[_0x8f3b('0x27')],_0x21d477['query']);_0x204b64[_0x8f3b('0x2d')]=_[_0x8f3b('0x2c')](_0x21d477[_0x8f3b('0x27')],qs['fields'](_0x1d37d1[_0x8f3b('0x29')]['fields']));_0x204b64[_0x8f3b('0x2d')]=_0x204b64[_0x8f3b('0x2d')][_0x8f3b('0x2f')]?_0x204b64[_0x8f3b('0x2d')]:_0x21d477['model'];if(_0x1d37d1['query']['includeAll']){_0x204b64[_0x8f3b('0x3e')]=[{'all':!![]}];}_0x204b64=_[_0x8f3b('0x39')]({},_0x204b64,_0x1d37d1[_0x8f3b('0x3c')]);return db['ChatTransferReport'][_0x8f3b('0x44')](_0x204b64)[_0x8f3b('0x20')](handleEntityNotFound(_0x9328a6,null))[_0x8f3b('0x20')](respondWithResult(_0x9328a6,null))[_0x8f3b('0x41')](handleError(_0x9328a6,null));};exports[_0x8f3b('0x45')]=function(_0x44cc2f,_0xcf9e4){return db[_0x8f3b('0x25')][_0x8f3b('0x45')](_0x44cc2f['body'],{})[_0x8f3b('0x20')](respondWithResult(_0xcf9e4,0xc9))[_0x8f3b('0x41')](handleError(_0xcf9e4,null));};exports[_0x8f3b('0x1f')]=function(_0x1d7b76,_0xf523bb){if(_0x1d7b76[_0x8f3b('0x46')]['id']){delete _0x1d7b76[_0x8f3b('0x46')]['id'];}return db[_0x8f3b('0x25')]['find']({'where':{'id':_0x1d7b76[_0x8f3b('0x43')]['id']}})[_0x8f3b('0x20')](handleEntityNotFound(_0xf523bb,null))[_0x8f3b('0x20')](saveUpdates(_0x1d7b76['body'],null))[_0x8f3b('0x20')](respondWithResult(_0xf523bb,null))[_0x8f3b('0x41')](handleError(_0xf523bb,null));};exports[_0x8f3b('0x47')]=function(_0x280936,_0x36db33){return db[_0x8f3b('0x25')][_0x8f3b('0x44')]({'where':{'id':_0x280936[_0x8f3b('0x43')]['id']}})[_0x8f3b('0x20')](handleEntityNotFound(_0x36db33,null))['then'](removeEntity(_0x36db33,null))[_0x8f3b('0x41')](handleError(_0x36db33,null));};exports[_0x8f3b('0x48')]=function(_0x4a9e8f,_0x35adfc){return db[_0x8f3b('0x25')]['describe']()['then'](respondWithResult(_0x35adfc,null))[_0x8f3b('0x41')](handleError(_0x35adfc,null));};
\ No newline at end of file
+var _0xf95b=['pick','add','day','merge','where','filter','map','type','key','VIRTUAL','field','options','findAll','rows','params','keys','includeAll','include','find','catch','create','body','update','describe','html-pdf','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','count','offset','limit','Content-Range','reject','save','destroy','then','name','send','index','ChatTransferReport','rawAttributes','model','query','dateStart','dateEnd','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters'];(function(_0x22d2a8,_0x34224b){var _0x4c6392=function(_0x3ddcc5){while(--_0x3ddcc5){_0x22d2a8['push'](_0x22d2a8['shift']());}};_0x4c6392(++_0x34224b);}(_0xf95b,0x185));var _0xbf95=function(_0x5f20b3,_0x1fba4d){_0x5f20b3=_0x5f20b3-0x0;var _0x20e8bb=_0xf95b[_0x5f20b3];return _0x20e8bb;};'use strict';var pdf=require(_0xbf95('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbf95('0x1'));var rp=require(_0xbf95('0x2'));var moment=require('moment');var BPromise=require(_0xbf95('0x3'));var Mustache=require('mustache');var util=require(_0xbf95('0x4'));var path=require(_0xbf95('0x5'));var sox=require(_0xbf95('0x6'));var csv=require(_0xbf95('0x7'));var ejs=require(_0xbf95('0x8'));var fs=require('fs');var _=require('lodash');var squel=require(_0xbf95('0x9'));var crypto=require('crypto');var jsforce=require(_0xbf95('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xbf95('0x7'));var querystring=require(_0xbf95('0xb'));var Papa=require(_0xbf95('0xc'));var Redis=require(_0xbf95('0xd'));var qs=require(_0xbf95('0xe'));var logger=require(_0xbf95('0xf'))(_0xbf95('0x10'));var utils=require(_0xbf95('0x11'));var config=require(_0xbf95('0x12'));var db=require(_0xbf95('0x13'))['db'];function respondWithStatusCode(_0x53c2a6,_0x132092){_0x132092=_0x132092||0xcc;return function(_0x59447a){if(_0x59447a){return _0x53c2a6['sendStatus'](_0x132092);}return _0x53c2a6['status'](_0x132092)[_0xbf95('0x14')]();};}function respondWithResult(_0x1436b7,_0xaedd02){_0xaedd02=_0xaedd02||0xc8;return function(_0x2ac1cf){if(_0x2ac1cf){return _0x1436b7[_0xbf95('0x15')](_0xaedd02)[_0xbf95('0x16')](_0x2ac1cf);}};}function respondWithFilteredResult(_0x3f5785,_0x52e6b5){return function(_0x3f24d0){if(_0x3f24d0){var _0x5430ef=_0x3f24d0[_0xbf95('0x17')],_0x29d2e4=_0x52e6b5[_0xbf95('0x18')],_0x31c2b1=_0x52e6b5[_0xbf95('0x18')]+_0x52e6b5[_0xbf95('0x19')],_0x342481;if(_0x31c2b1>=_0x5430ef){_0x31c2b1=_0x5430ef;_0x342481=0xc8;}else{_0x342481=0xce;}_0x3f5785['status'](_0x342481);return _0x3f5785['set'](_0xbf95('0x1a'),_0x29d2e4+'-'+_0x31c2b1+'/'+_0x5430ef)[_0xbf95('0x16')](_0x3f24d0);}return null;};}function patchUpdates(_0x28b574){return function(_0x3d123){try{jsonpatch['apply'](_0x3d123,_0x28b574,!![]);}catch(_0x597fb0){return BPromise[_0xbf95('0x1b')](_0x597fb0);}return _0x3d123[_0xbf95('0x1c')]();};}function saveUpdates(_0xba8f7b,_0x2d099f){return function(_0x4096db){if(_0x4096db){return _0x4096db['update'](_0xba8f7b)['then'](function(_0x38bc79){return _0x38bc79;});}return null;};}function removeEntity(_0x421b63,_0xc1c52c){return function(_0x523a84){if(_0x523a84){return _0x523a84[_0xbf95('0x1d')]()[_0xbf95('0x1e')](function(){_0x421b63['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x50fb3c,_0x52ed81){return function(_0x444904){if(!_0x444904){_0x50fb3c['sendStatus'](0x194);}return _0x444904;};}function handleError(_0xa6a4b1,_0x566098){_0x566098=_0x566098||0x1f4;return function(_0x363c98){logger['error'](_0x363c98['stack']);if(_0x363c98[_0xbf95('0x1f')]){delete _0x363c98['name'];}_0xa6a4b1[_0xbf95('0x15')](_0x566098)[_0xbf95('0x20')](_0x363c98);};}exports[_0xbf95('0x21')]=function(_0x1a6b25,_0x2ec9d3){var _0x415b1e={},_0x14c48d={},_0xa5bbd4={'count':0x0,'rows':[]};var _0x1fb776=db[_0xbf95('0x22')][_0xbf95('0x23')];_0x14c48d[_0xbf95('0x24')]=_['keys'](_0x1fb776);var _0x49b9b4={'dateStart':_0x1a6b25[_0xbf95('0x25')][_0xbf95('0x26')],'dateEnd':_0x1a6b25[_0xbf95('0x25')][_0xbf95('0x27')]};delete _0x1a6b25['query'][_0xbf95('0x26')];delete _0x1a6b25[_0xbf95('0x25')][_0xbf95('0x27')];_0x14c48d[_0xbf95('0x25')]=_['keys'](_0x1a6b25[_0xbf95('0x25')]);_0x14c48d['filters']=_['intersection'](_0x14c48d['model'],_0x14c48d[_0xbf95('0x25')]);_0x415b1e[_0xbf95('0x28')]=_[_0xbf95('0x29')](_0x14c48d[_0xbf95('0x24')],qs[_0xbf95('0x2a')](_0x1a6b25[_0xbf95('0x25')]['fields']));_0x415b1e[_0xbf95('0x28')]=_0x415b1e[_0xbf95('0x28')][_0xbf95('0x2b')]?_0x415b1e[_0xbf95('0x28')]:_0x14c48d[_0xbf95('0x24')];if(!_0x1a6b25[_0xbf95('0x25')][_0xbf95('0x2c')](_0xbf95('0x2d'))){_0x415b1e[_0xbf95('0x19')]=qs[_0xbf95('0x19')](_0x1a6b25[_0xbf95('0x25')]['limit']);_0x415b1e[_0xbf95('0x18')]=qs[_0xbf95('0x18')](_0x1a6b25['query'][_0xbf95('0x18')]);}_0x415b1e[_0xbf95('0x2e')]=qs[_0xbf95('0x2f')](_0x1a6b25[_0xbf95('0x25')][_0xbf95('0x2f')]);_0x415b1e['where']=qs[_0xbf95('0x30')](_[_0xbf95('0x31')](_0x1a6b25['query'],_0x14c48d[_0xbf95('0x30')]));if(_0x49b9b4[_0xbf95('0x26')]){if(_0x49b9b4['dateEnd']){_0x49b9b4['dateEnd']=moment(_0x49b9b4[_0xbf95('0x27')])[_0xbf95('0x32')](0x1,_0xbf95('0x33'));}else{_0x49b9b4[_0xbf95('0x27')]=moment(_0x49b9b4[_0xbf95('0x26')])['add'](0x1,_0xbf95('0x33'));}_[_0xbf95('0x34')](_0x415b1e[_0xbf95('0x35')],{'createdAt':{'$gte':_0x49b9b4[_0xbf95('0x26')],'$lte':_0x49b9b4[_0xbf95('0x27')]}});}if(_0x1a6b25[_0xbf95('0x25')][_0xbf95('0x36')]){_0x415b1e[_0xbf95('0x35')]=_['merge'](_0x415b1e[_0xbf95('0x35')],{'$or':_[_0xbf95('0x37')](_0x1fb776,function(_0x4324bd){if(_0x4324bd[_0xbf95('0x38')][_0xbf95('0x39')]!==_0xbf95('0x3a')){var _0x5954fd={};_0x5954fd[_0x4324bd[_0xbf95('0x3b')]]={'$like':'%'+_0x1a6b25[_0xbf95('0x25')]['filter']+'%'};return _0x5954fd;}})});}_0x415b1e=_[_0xbf95('0x34')]({},_0x415b1e,_0x1a6b25[_0xbf95('0x3c')]);var _0x4cfdc4={'where':_0x415b1e['where']};return db[_0xbf95('0x22')][_0xbf95('0x17')](_0x4cfdc4)[_0xbf95('0x1e')](function(_0x9efb5b){_0xa5bbd4['count']=_0x9efb5b;if(_0x1a6b25[_0xbf95('0x25')]['includeAll']){_0x415b1e['include']=[{'all':!![]}];}return db['ChatTransferReport'][_0xbf95('0x3d')](_0x415b1e);})['then'](function(_0x5adfba){_0xa5bbd4[_0xbf95('0x3e')]=_0x5adfba;return _0xa5bbd4;})['then'](respondWithFilteredResult(_0x2ec9d3,_0x415b1e))['catch'](handleError(_0x2ec9d3,null));};exports['show']=function(_0x116e98,_0x136864){var _0x31fb89={'raw':!![],'where':{'id':_0x116e98[_0xbf95('0x3f')]['id']}},_0x2cfa98={};_0x2cfa98['model']=_['keys'](db['ChatTransferReport'][_0xbf95('0x23')]);_0x2cfa98['query']=_[_0xbf95('0x40')](_0x116e98['query']);_0x2cfa98['filters']=_['intersection'](_0x2cfa98[_0xbf95('0x24')],_0x2cfa98[_0xbf95('0x25')]);_0x31fb89[_0xbf95('0x28')]=_['intersection'](_0x2cfa98[_0xbf95('0x24')],qs['fields'](_0x116e98[_0xbf95('0x25')]['fields']));_0x31fb89[_0xbf95('0x28')]=_0x31fb89['attributes']['length']?_0x31fb89[_0xbf95('0x28')]:_0x2cfa98[_0xbf95('0x24')];if(_0x116e98[_0xbf95('0x25')][_0xbf95('0x41')]){_0x31fb89[_0xbf95('0x42')]=[{'all':!![]}];}_0x31fb89=_['merge']({},_0x31fb89,_0x116e98['options']);return db['ChatTransferReport'][_0xbf95('0x43')](_0x31fb89)['then'](handleEntityNotFound(_0x136864,null))[_0xbf95('0x1e')](respondWithResult(_0x136864,null))[_0xbf95('0x44')](handleError(_0x136864,null));};exports[_0xbf95('0x45')]=function(_0x18c07a,_0x3afa50){return db[_0xbf95('0x22')][_0xbf95('0x45')](_0x18c07a[_0xbf95('0x46')],{})[_0xbf95('0x1e')](respondWithResult(_0x3afa50,0xc9))[_0xbf95('0x44')](handleError(_0x3afa50,null));};exports[_0xbf95('0x47')]=function(_0x149c3d,_0x3c0729){if(_0x149c3d[_0xbf95('0x46')]['id']){delete _0x149c3d['body']['id'];}return db['ChatTransferReport']['find']({'where':{'id':_0x149c3d[_0xbf95('0x3f')]['id']}})[_0xbf95('0x1e')](handleEntityNotFound(_0x3c0729,null))[_0xbf95('0x1e')](saveUpdates(_0x149c3d[_0xbf95('0x46')],null))['then'](respondWithResult(_0x3c0729,null))[_0xbf95('0x44')](handleError(_0x3c0729,null));};exports[_0xbf95('0x1d')]=function(_0x185870,_0xe29c95){return db[_0xbf95('0x22')]['find']({'where':{'id':_0x185870['params']['id']}})[_0xbf95('0x1e')](handleEntityNotFound(_0xe29c95,null))[_0xbf95('0x1e')](removeEntity(_0xe29c95,null))[_0xbf95('0x44')](handleError(_0xe29c95,null));};exports[_0xbf95('0x48')]=function(_0x10dbdd,_0x3e70ac){return db[_0xbf95('0x22')][_0xbf95('0x48')]()[_0xbf95('0x1e')](respondWithResult(_0x3e70ac,null))[_0xbf95('0x44')](handleError(_0x3e70ac,null));};
\ No newline at end of file
index edd4ddb..3445908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6237=['../../config/logger','moment','bluebird','request-promise','./chatTransferReport.attributes','exports','define','report_chat_transfer','uniqueid','lodash','util'];(function(_0x3be4ca,_0x37ee47){var _0x2180cd=function(_0x5b0742){while(--_0x5b0742){_0x3be4ca['push'](_0x3be4ca['shift']());}};_0x2180cd(++_0x37ee47);}(_0x6237,0xb9));var _0x7623=function(_0x115b95,_0xa1f8b9){_0x115b95=_0x115b95-0x0;var _0x460b3d=_0x6237[_0x115b95];return _0x460b3d;};'use strict';var _=require(_0x7623('0x0'));var util=require(_0x7623('0x1'));var logger=require(_0x7623('0x2'))('api');var moment=require(_0x7623('0x3'));var BPromise=require(_0x7623('0x4'));var rp=require(_0x7623('0x5'));var attributes=require(_0x7623('0x6'));module[_0x7623('0x7')]=function(_0x4fff7c,_0x25f4d0){return _0x4fff7c[_0x7623('0x8')]('ChatTransferReport',attributes,{'tableName':_0x7623('0x9'),'paranoid':![],'indexes':[{'name':_0x7623('0xa'),'fields':[_0x7623('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d96=['report_chat_transfer','uniqueid','../../config/logger','api','bluebird','request-promise','./chatTransferReport.attributes','define','ChatTransferReport'];(function(_0x4b8ef3,_0x2cc187){var _0x12f5d7=function(_0x24b55b){while(--_0x24b55b){_0x4b8ef3['push'](_0x4b8ef3['shift']());}};_0x12f5d7(++_0x2cc187);}(_0x2d96,0x107));var _0x62d9=function(_0x2939de,_0x3b948c){_0x2939de=_0x2939de-0x0;var _0x36bdc6=_0x2d96[_0x2939de];return _0x36bdc6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x62d9('0x0'))(_0x62d9('0x1'));var moment=require('moment');var BPromise=require(_0x62d9('0x2'));var rp=require(_0x62d9('0x3'));var attributes=require(_0x62d9('0x4'));module['exports']=function(_0x403fbf,_0xb52704){return _0x403fbf[_0x62d9('0x5')](_0x62d9('0x6'),attributes,{'tableName':_0x62d9('0x7'),'paranoid':![],'indexes':[{'name':_0x62d9('0x8'),'fields':[_0x62d9('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 1cc8b03..7a878ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3b8=['then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4c6ffc,_0x2c776c){var _0x2248ef=function(_0x349210){while(--_0x349210){_0x4c6ffc['push'](_0x4c6ffc['shift']());}};_0x2248ef(++_0x2c776c);}(_0xb3b8,0x108));var _0x8b3b=function(_0x1fcaf1,_0x21c3c2){_0x1fcaf1=_0x1fcaf1-0x0;var _0x55f464=_0xb3b8[_0x1fcaf1];return _0x55f464;};'use strict';var _=require('lodash');var util=require(_0x8b3b('0x0'));var moment=require(_0x8b3b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8b3b('0x2'))['db'];var utils=require(_0x8b3b('0x3'));var logger=require('../../config/logger')(_0x8b3b('0x4'));var config=require(_0x8b3b('0x5'));var jayson=require(_0x8b3b('0x6'));var client=jayson[_0x8b3b('0x7')][_0x8b3b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x514b0d,_0x309c41,_0x10f5b9){return new BPromise(function(_0x2d949d,_0xcbbd03){return client['request'](_0x514b0d,_0x10f5b9)[_0x8b3b('0x9')](function(_0x569ab7){logger[_0x8b3b('0xa')](_0x8b3b('0xb'),_0x309c41,_0x8b3b('0xc'));logger[_0x8b3b('0xd')](_0x8b3b('0xe'),_0x309c41,'request\x20sent',JSON[_0x8b3b('0xf')](_0x569ab7));if(_0x569ab7[_0x8b3b('0x10')]){if(_0x569ab7['error'][_0x8b3b('0x11')]===0x1f4){logger[_0x8b3b('0x10')]('ChatTransferReport,\x20%s,\x20%s',_0x309c41,_0x569ab7['error'][_0x8b3b('0x12')]);return _0xcbbd03(_0x569ab7[_0x8b3b('0x10')]['message']);}logger['error'](_0x8b3b('0xb'),_0x309c41,_0x569ab7[_0x8b3b('0x10')][_0x8b3b('0x12')]);return _0x2d949d(_0x569ab7['error'][_0x8b3b('0x12')]);}else{logger[_0x8b3b('0xa')](_0x8b3b('0xb'),_0x309c41,_0x8b3b('0xc'));_0x2d949d(_0x569ab7[_0x8b3b('0x13')][_0x8b3b('0x12')]);}})[_0x8b3b('0x14')](function(_0x5bdb77){logger[_0x8b3b('0x10')](_0x8b3b('0xb'),_0x309c41,_0x5bdb77);_0xcbbd03(_0x5bdb77);});});}
\ No newline at end of file
+var _0x2285=['catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','ChatTransferReport,\x20%s,\x20%s','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x42bd43,_0x59fb77){var _0x421e88=function(_0x485e11){while(--_0x485e11){_0x42bd43['push'](_0x42bd43['shift']());}};_0x421e88(++_0x59fb77);}(_0x2285,0x177));var _0x5228=function(_0x53832d,_0x49cec2){_0x53832d=_0x53832d-0x0;var _0x20efe2=_0x2285[_0x53832d];return _0x20efe2;};'use strict';var _=require('lodash');var util=require(_0x5228('0x0'));var moment=require(_0x5228('0x1'));var BPromise=require(_0x5228('0x2'));var rs=require(_0x5228('0x3'));var fs=require('fs');var Redis=require(_0x5228('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5228('0x5'));var logger=require(_0x5228('0x6'))('rpc');var config=require(_0x5228('0x7'));var jayson=require(_0x5228('0x8'));var client=jayson[_0x5228('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18b2db,_0x156977,_0x192393){return new BPromise(function(_0x322b86,_0x81c9c6){return client[_0x5228('0xa')](_0x18b2db,_0x192393)[_0x5228('0xb')](function(_0xbd1b8d){logger[_0x5228('0xc')](_0x5228('0xd'),_0x156977,'request\x20sent');logger[_0x5228('0xe')](_0x5228('0xf'),_0x156977,_0x5228('0x10'),JSON[_0x5228('0x11')](_0xbd1b8d));if(_0xbd1b8d['error']){if(_0xbd1b8d[_0x5228('0x12')][_0x5228('0x13')]===0x1f4){logger[_0x5228('0x12')](_0x5228('0xd'),_0x156977,_0xbd1b8d['error'][_0x5228('0x14')]);return _0x81c9c6(_0xbd1b8d[_0x5228('0x12')][_0x5228('0x14')]);}logger[_0x5228('0x12')](_0x5228('0xd'),_0x156977,_0xbd1b8d[_0x5228('0x12')]['message']);return _0x322b86(_0xbd1b8d[_0x5228('0x12')][_0x5228('0x14')]);}else{logger['info'](_0x5228('0xd'),_0x156977,_0x5228('0x10'));_0x322b86(_0xbd1b8d['result'][_0x5228('0x14')]);}})[_0x5228('0x15')](function(_0x1c4121){logger[_0x5228('0x12')]('ChatTransferReport,\x20%s,\x20%s',_0x156977,_0x1c4121);_0x81c9c6(_0x1c4121);});});}
\ No newline at end of file
index 9013ec4..8d6293a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9059=['../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','get','/describe','post','create','put','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x3a435e,_0x1dbf18){var _0x573553=function(_0x57be69){while(--_0x57be69){_0x3a435e['push'](_0x3a435e['shift']());}};_0x573553(++_0x1dbf18);}(_0x9059,0x1f1));var _0x9905=function(_0x65083f,_0x3a23c9){_0x65083f=_0x65083f-0x0;var _0x429f30=_0x9059[_0x65083f];return _0x429f30;};'use strict';var multer=require(_0x9905('0x0'));var util=require(_0x9905('0x1'));var path=require(_0x9905('0x2'));var timeout=require(_0x9905('0x3'));var express=require(_0x9905('0x4'));var router=express[_0x9905('0x5')]();var auth=require(_0x9905('0x6'));var interaction=require(_0x9905('0x7'));var config=require(_0x9905('0x8'));var controller=require(_0x9905('0x9'));router['get']('/',auth[_0x9905('0xa')](),controller[_0x9905('0xb')]);router[_0x9905('0xc')](_0x9905('0xd'),auth[_0x9905('0xa')](),controller['describe']);router[_0x9905('0xc')]('/:id',auth[_0x9905('0xa')](),controller['show']);router[_0x9905('0xe')]('/',auth[_0x9905('0xa')](),controller[_0x9905('0xf')]);router[_0x9905('0x10')]('/:id',auth[_0x9905('0xa')](),controller['update']);router[_0x9905('0x11')](_0x9905('0x12'),auth[_0x9905('0xa')](),controller[_0x9905('0x13')]);module[_0x9905('0x14')]=router;
\ No newline at end of file
+var _0xc7d2=['delete','/:id','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','post','create','put','update'];(function(_0x4471f5,_0x4c8ac8){var _0x5a7082=function(_0x299d14){while(--_0x299d14){_0x4471f5['push'](_0x4471f5['shift']());}};_0x5a7082(++_0x4c8ac8);}(_0xc7d2,0x16b));var _0x2c7d=function(_0x58da8a,_0x1c0584){_0x58da8a=_0x58da8a-0x0;var _0x5ba3a3=_0xc7d2[_0x58da8a];return _0x5ba3a3;};'use strict';var multer=require(_0x2c7d('0x0'));var util=require(_0x2c7d('0x1'));var path=require(_0x2c7d('0x2'));var timeout=require(_0x2c7d('0x3'));var express=require(_0x2c7d('0x4'));var router=express[_0x2c7d('0x5')]();var auth=require(_0x2c7d('0x6'));var interaction=require(_0x2c7d('0x7'));var config=require(_0x2c7d('0x8'));var controller=require('./chatTransferReport.controller');router[_0x2c7d('0x9')]('/',auth[_0x2c7d('0xa')](),controller['index']);router[_0x2c7d('0x9')](_0x2c7d('0xb'),auth[_0x2c7d('0xa')](),controller[_0x2c7d('0xc')]);router[_0x2c7d('0x9')]('/:id',auth[_0x2c7d('0xa')](),controller['show']);router[_0x2c7d('0xd')]('/',auth[_0x2c7d('0xa')](),controller[_0x2c7d('0xe')]);router[_0x2c7d('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x2c7d('0x10')]);router[_0x2c7d('0x11')](_0x2c7d('0x12'),auth[_0x2c7d('0xa')](),controller['destroy']);module[_0x2c7d('0x13')]=router;
\ No newline at end of file
index 1400354..321b741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d11=['TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','star','thumb','stringify','name','text','onlineForm','parse','getDataValue','setDataValue','input','textarea','Comments','Leave\x20your\x20comments','offlineForm','generate','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','#fafafa','System','sequelize','randomstring','exports','STRING','address','email','#9f946a','BOOLEAN','ENUM','rounded','Chat','Send','INTEGER'];(function(_0xaa898c,_0x105cfc){var _0x2fd7cd=function(_0x39c217){while(--_0x39c217){_0xaa898c['push'](_0xaa898c['shift']());}};_0x2fd7cd(++_0x105cfc);}(_0x1d11,0xb6));var _0x11d1=function(_0x5d1cc2,_0x570f1c){_0x5d1cc2=_0x5d1cc2-0x0;var _0x16bab4=_0x1d11[_0x5d1cc2];return _0x16bab4;};'use strict';var Sequelize=require(_0x11d1('0x0'));var rs=require(_0x11d1('0x1'));module[_0x11d1('0x2')]={'name':{'type':Sequelize[_0x11d1('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x11d1('0x3')],'allowNull':![],'unique':_0x11d1('0x4')},'description':{'type':Sequelize[_0x11d1('0x3')]},'mapKey':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0x5')},'mapKeyOffline':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0x5')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x11d1('0x3')],'allowNull':![],'defaultValue':'#9f946a','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x11d1('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x11d1('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x11d1('0x3')]},'animation':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x11d1('0x8')]('rounded','squared'),'defaultValue':_0x11d1('0x9')},'header_online':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x11d1('0xa')},'offline_chat_button':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0xb')},'header_offline':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x11d1('0xc')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x11d1('0xd')]},'closingQuestion':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0xe')},'formSubmitSuccessMessage':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0xf')},'placeholderMessage':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0x10')},'closingMessage':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0x11')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x11d1('0xb')},'skipMessageButton':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0x12')},'conditionAgreement':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'ratingType':{'type':Sequelize[_0x11d1('0x8')](_0x11d1('0x13'),_0x11d1('0x14')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x11d1('0xd')],'defaultValue':function(){return JSON[_0x11d1('0x15')]({'items':[{'type':'input','variable':null,'config':{'placeholder':_0x11d1('0x16'),'type':_0x11d1('0x17'),'required':!![]},'props':{'title':_0x11d1('0x16'),'helpText':''}},{'type':'input','props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x11d1('0x5'),'type':_0x11d1('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x11d1('0x18'))?JSON[_0x11d1('0x19')](this[_0x11d1('0x1a')](_0x11d1('0x18'))):{};},'set':function(_0x14070d){return this[_0x11d1('0x1b')](_0x11d1('0x18'),JSON[_0x11d1('0x15')](_0x14070d));}},'offlineForm':{'type':Sequelize[_0x11d1('0xd')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x11d1('0x1c'),'props':{'title':_0x11d1('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x11d1('0x5'),'type':_0x11d1('0x5')},'variable':null},{'type':_0x11d1('0x1d'),'config':{'placeholder':'Comments'},'props':{'title':_0x11d1('0x1e'),'helpText':_0x11d1('0x1f')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x11d1('0x20'))?JSON[_0x11d1('0x19')](this[_0x11d1('0x1a')](_0x11d1('0x20'))):{};},'set':function(_0x3c6618){return this[_0x11d1('0x1b')](_0x11d1('0x20'),JSON[_0x11d1('0x15')](_0x3c6618));}},'token':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':function(){return rs[_0x11d1('0x21')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x11d1('0x3')]},'forwardOffline':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x11d1('0x22')},'enableUnmanagedNote':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0xb')},'enableCustomerAttachment':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x11d1('0xd')]},'showAgentAvatar':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x11d1('0xd')],'defaultValue':function(){return _0x11d1('0x23');}},'notificationSound':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0x24')},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0x11d1('0xc')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x11d1('0xd')]},'showCustomerAvatar':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x11d1('0xc')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x11d1('0x25'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x11d1('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x11d1('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x11d1('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x11d1('0x3')],'defaultValue':_0x11d1('0x26')},'systemAvatar':{'type':Sequelize[_0x11d1('0xd')]}};
\ No newline at end of file
+var _0xaf79=['exports','STRING','address','email','Agent','#9f946a','#ffffff','INTEGER','ENUM','squared','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us','BOOLEAN','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','star','thumb','stringify','input','name','text','getDataValue','onlineForm','parse','Comments','Leave\x20your\x20comments','offlineForm','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','bottom_right','alternate','#fafafa','System','sequelize','randomstring'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaf79,0xe4));var _0x9af7=function(_0x40d2f1,_0xd2a835){_0x40d2f1=_0x40d2f1-0x0;var _0x41e7d1=_0xaf79[_0x40d2f1];return _0x41e7d1;};'use strict';var Sequelize=require(_0x9af7('0x0'));var rs=require(_0x9af7('0x1'));module[_0x9af7('0x2')]={'name':{'type':Sequelize[_0x9af7('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x9af7('0x3')],'allowNull':![],'unique':_0x9af7('0x4')},'description':{'type':Sequelize[_0x9af7('0x3')]},'mapKey':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x5')},'mapKeyOffline':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':'email'},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x9af7('0x6')},'customerAlias':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x9af7('0x3')],'allowNull':![],'defaultValue':_0x9af7('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x9af7('0x3')],'allowNull':![],'defaultValue':_0x9af7('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x9af7('0x3')],'allowNull':![],'defaultValue':_0x9af7('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x9af7('0x9')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x9af7('0xa')]('rounded',_0x9af7('0xb')),'defaultValue':_0x9af7('0xc')},'header_online':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0xd')},'start_chat_button':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0xe')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x9af7('0xf')},'header_offline':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x10')},'download_transcript':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x9af7('0x9')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x12')},'defaultWhiteLabel':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x9af7('0x13')]},'closingQuestion':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x14')},'formSubmitSuccessMessage':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x15')},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x9af7('0x16')},'placeholderMessage':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x17')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x9af7('0x18')},'closingMessageButton':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0xf')},'skipMessageButton':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x19')},'conditionAgreement':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingType':{'type':Sequelize['ENUM'](_0x9af7('0x1a'),_0x9af7('0x1b')),'defaultValue':_0x9af7('0x1a')},'ratingStarsNumber':{'type':Sequelize[_0x9af7('0x9')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x9af7('0x13')],'defaultValue':function(){return JSON[_0x9af7('0x1c')]({'items':[{'type':_0x9af7('0x1d'),'variable':null,'config':{'placeholder':_0x9af7('0x1e'),'type':_0x9af7('0x1f'),'required':!![]},'props':{'title':_0x9af7('0x1e'),'helpText':''}},{'type':_0x9af7('0x1d'),'props':{'title':_0x9af7('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x9af7('0x5'),'type':_0x9af7('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x9af7('0x20')](_0x9af7('0x21'))?JSON[_0x9af7('0x22')](this['getDataValue'](_0x9af7('0x21'))):{};},'set':function(_0x5c587f){return this['setDataValue'](_0x9af7('0x21'),JSON[_0x9af7('0x1c')](_0x5c587f));}},'offlineForm':{'type':Sequelize[_0x9af7('0x13')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x9af7('0x1d'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0x9af7('0x5'),'type':_0x9af7('0x5')},'variable':null},{'type':'textarea','config':{'placeholder':_0x9af7('0x23')},'props':{'title':_0x9af7('0x23'),'helpText':_0x9af7('0x24')}}],'fromKey':0x0});},'get':function(){return this[_0x9af7('0x20')](_0x9af7('0x25'))?JSON[_0x9af7('0x22')](this[_0x9af7('0x20')](_0x9af7('0x25'))):{};},'set':function(_0x5c29b9){return this['setDataValue'](_0x9af7('0x25'),JSON[_0x9af7('0x1c')](_0x5c29b9));}},'token':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x9af7('0x3')]},'forwardOffline':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x9af7('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x26')},'offlineMessageSubject':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x27')},'offlineMessageBody':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x28')},'skipUnmanaged':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0x19')},'sendUnmanaged':{'type':Sequelize[_0x9af7('0x3')],'defaultValue':_0x9af7('0xf')},'enableCustomerAttachment':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x9af7('0x13')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x9af7('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x9af7('0x29');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0x9af7('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x9af7('0x2a')},'verticalAlignment':{'type':Sequelize[_0x9af7('0x9')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0x9af7('0x2b')},'defaultTitle':{'type':Sequelize[_0x9af7('0x3')]},'customerAvatar':{'type':Sequelize[_0x9af7('0x13')]},'showCustomerAvatar':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x9af7('0x3')],'allowNull':![],'defaultValue':_0x9af7('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9af7('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9af7('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9af7('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize['STRING'],'defaultValue':_0x9af7('0x2d')},'systemAvatar':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index f94d0fc..1eaf1c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddaa=['count','removeDispositions','addAnswer','CannedAnswer','getAnswers','findAll','ids','sitepic','filename','addAvatar','file','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','root','server/files/images/logos/default_logo.png','../../config/license/util','getLicense','server/files/images/logos/','join','server/files/images/avatars/default_avatar.png','agentAvatar','isNil','existsSync','server/files/images/avatars/','download','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','setUA','headers','CmContact','ValidationError','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications','asc','defaults','contact','firstName','lastName','browser','version','format','%s\x20%s','device','vendor','type','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','forcedOwnership','Start','startRouting','EventManager','no\x20available\x20attributes','difference','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','findOrCreate','server/files/templates/chatOfflineMessage.ejs','offlineMessageBody','ChatOfflineMessage','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','pass','SendMail','sendMail','email','forwardOfflineAddress','offlineMessageSubject','getInteractions','User','Owner','internal','Tag','Tags','tag','Command','iftime\x20%s,%s','iftime\x20%s','interval','indexOf','info','ONLINE','timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','No\x20timezone','getSnippet','Interval','Intervals','getProactiveActions','virtual','custom','License','increment','chatLicenseExceeded','some','readFileSync','server/files/chat/iframe.js','x-forwarded-for','x-real-ip','connection','remoteAddress','referer','replace','alignment','verticalAlignment','addApplications','sequelize','bulkCreate','findAndCountAll','priority','getApplications','addProactiveActions','chatProactiveAction','omit','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','addAgents','spread','userChatWebsite:save','removeAgents','isArray','emit','userChatWebsite:remove','getAgents','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','client','http','request','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','json','offset','limit','status','set','Content-Range','reject','save','update','then','destroy','get','ChatWebsites','UserProfileResource','end','name','send','index','ChatWebsite','model','keys','query','dateStart','dateEnd','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','add','day','merge','filter','map','key','VIRTUAL','options','includeAll','rows','show','rawAttributes','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','describe','addDisposition','getDispositions','findOne','Disposition','hasOwnProperty','ChatWebsiteId'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xddaa,0x1bb));var _0xadda=function(_0x46132e,_0x3a15de){_0x46132e=_0x46132e-0x0;var _0x2a6473=_0xddaa[_0x46132e];return _0x2a6473;};'use strict';var pdf=require(_0xadda('0x0'));var emlformat=require(_0xadda('0x1'));var rimraf=require(_0xadda('0x2'));var zipdir=require(_0xadda('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xadda('0x4'));var moment=require(_0xadda('0x5'));var BPromise=require(_0xadda('0x6'));var Mustache=require(_0xadda('0x7'));var util=require(_0xadda('0x8'));var path=require('path');var sox=require(_0xadda('0x9'));var csv=require(_0xadda('0xa'));var ejs=require(_0xadda('0xb'));var fs=require('fs');var _=require(_0xadda('0xc'));var squel=require(_0xadda('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xadda('0xe'));var toCsv=require(_0xadda('0xa'));var querystring=require(_0xadda('0xf'));var Papa=require('papaparse');var Redis=require(_0xadda('0x10'));var qs=require('../../components/parsers/qs');var logger=require(_0xadda('0x11'))(_0xadda('0x12'));var utils=require(_0xadda('0x13'));var config=require(_0xadda('0x14'));var db=require(_0xadda('0x15'))['db'];config[_0xadda('0x16')]=_['defaults'](config[_0xadda('0x16')],{'host':_0xadda('0x17'),'port':0x18eb});var socket=require(_0xadda('0x18'))(new Redis(config[_0xadda('0x16')]));require(_0xadda('0x19'))[_0xadda('0x1a')](socket);var jayson=require(_0xadda('0x1b'));var client=jayson[_0xadda('0x1c')][_0xadda('0x1d')]({'port':0x232c});var client9002=jayson[_0xadda('0x1c')][_0xadda('0x1d')]({'port':0x232a});var client9003=jayson[_0xadda('0x1c')]['http']({'port':0x232b});function respondWithRpcPromise(_0x341bb2,_0x4f1278,_0x301da4,_0x27f210){return new BPromise(function(_0x11c6d5,_0x5156b1){var _0x1963ec=_0x27f210||client;return _0x1963ec[_0xadda('0x1e')](_0x341bb2,_0x301da4)['then'](function(_0x17098e){logger['info'](_0xadda('0x1f'),_0x4f1278,_0xadda('0x20'));logger['debug'](_0xadda('0x21'),_0x4f1278,_0xadda('0x20'),JSON[_0xadda('0x22')](_0x17098e));if(_0x17098e[_0xadda('0x23')]){if(_0x17098e[_0xadda('0x23')][_0xadda('0x24')]===0x1f4){logger[_0xadda('0x23')](_0xadda('0x1f'),_0x4f1278,_0x17098e[_0xadda('0x23')][_0xadda('0x25')]);return _0x5156b1(_0x17098e['error']['message']);}logger[_0xadda('0x23')](_0xadda('0x1f'),_0x4f1278,_0x17098e[_0xadda('0x23')][_0xadda('0x25')]);return _0x11c6d5(_0x17098e[_0xadda('0x23')][_0xadda('0x25')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x4f1278,_0xadda('0x20'));_0x11c6d5(_0x17098e['result'][_0xadda('0x25')]);}})[_0xadda('0x26')](function(_0x569a81){logger['error'](_0xadda('0x1f'),_0x4f1278,_0x569a81);_0x5156b1(_0x569a81);});});}function respondWithStatusCode(_0x555fd2,_0x26a500){_0x26a500=_0x26a500||0xcc;return function(_0x550927){if(_0x550927){return _0x555fd2[_0xadda('0x27')](_0x26a500);}return _0x555fd2['status'](_0x26a500)['end']();};}function respondWithResult(_0x58ea8c,_0x517657){_0x517657=_0x517657||0xc8;return function(_0x5b518d){if(_0x5b518d){return _0x58ea8c['status'](_0x517657)[_0xadda('0x28')](_0x5b518d);}};}function respondWithFilteredResult(_0x2fbc4f,_0x189fbc){return function(_0x1be811){if(_0x1be811){var _0x329c26=_0x1be811['count'],_0x46e90f=_0x189fbc[_0xadda('0x29')],_0x5a0747=_0x189fbc['offset']+_0x189fbc[_0xadda('0x2a')],_0x6fee12;if(_0x5a0747>=_0x329c26){_0x5a0747=_0x329c26;_0x6fee12=0xc8;}else{_0x6fee12=0xce;}_0x2fbc4f[_0xadda('0x2b')](_0x6fee12);return _0x2fbc4f[_0xadda('0x2c')](_0xadda('0x2d'),_0x46e90f+'-'+_0x5a0747+'/'+_0x329c26)[_0xadda('0x28')](_0x1be811);}return null;};}function patchUpdates(_0x5673e4){return function(_0x499572){try{jsonpatch['apply'](_0x499572,_0x5673e4,!![]);}catch(_0x782544){return BPromise[_0xadda('0x2e')](_0x782544);}return _0x499572[_0xadda('0x2f')]();};}function saveUpdates(_0x538d94,_0x4cc276){return function(_0x5cf620){if(_0x5cf620){return _0x5cf620[_0xadda('0x30')](_0x538d94)[_0xadda('0x31')](function(_0x19191e){return _0x19191e;});}return null;};}function removeEntity(_0x4683f4,_0x23fe5c){return function(_0x14c550){if(_0x14c550){return _0x14c550[_0xadda('0x32')]()[_0xadda('0x31')](function(){var _0x470fd3=_0x14c550[_0xadda('0x33')]({'plain':!![]});var _0x186dd2=_0xadda('0x34');return db[_0xadda('0x35')]['destroy']({'where':{'type':_0x186dd2,'resourceId':_0x470fd3['id']}})[_0xadda('0x31')](function(){return _0x14c550;});})['then'](function(){_0x4683f4[_0xadda('0x2b')](0xcc)[_0xadda('0x36')]();});}};}function handleEntityNotFound(_0x5dc78d,_0x1f63b6){return function(_0x33675b){if(!_0x33675b){_0x5dc78d[_0xadda('0x27')](0x194);}return _0x33675b;};}function handleError(_0x1d42b9,_0x1a0187){_0x1a0187=_0x1a0187||0x1f4;return function(_0x509723){logger[_0xadda('0x23')](_0x509723['stack']);if(_0x509723[_0xadda('0x37')]){delete _0x509723['name'];}_0x1d42b9[_0xadda('0x2b')](_0x1a0187)[_0xadda('0x38')](_0x509723);};}exports[_0xadda('0x39')]=function(_0x27cb08,_0x409eb2){var _0xe63853={},_0x2dd1aa={},_0x41875a={'count':0x0,'rows':[]};var _0x2798bc=db[_0xadda('0x3a')]['rawAttributes'];_0x2dd1aa[_0xadda('0x3b')]=_[_0xadda('0x3c')](_0x2798bc);var _0x3f0976={'dateStart':_0x27cb08[_0xadda('0x3d')][_0xadda('0x3e')],'dateEnd':_0x27cb08[_0xadda('0x3d')][_0xadda('0x3f')]};delete _0x27cb08[_0xadda('0x3d')][_0xadda('0x3e')];delete _0x27cb08[_0xadda('0x3d')][_0xadda('0x3f')];_0x2dd1aa[_0xadda('0x3d')]=_['keys'](_0x27cb08[_0xadda('0x3d')]);_0x2dd1aa['filters']=_[_0xadda('0x40')](_0x2dd1aa[_0xadda('0x3b')],_0x2dd1aa[_0xadda('0x3d')]);_0xe63853['attributes']=_[_0xadda('0x40')](_0x2dd1aa[_0xadda('0x3b')],qs[_0xadda('0x41')](_0x27cb08[_0xadda('0x3d')][_0xadda('0x41')]));_0xe63853[_0xadda('0x42')]=_0xe63853[_0xadda('0x42')][_0xadda('0x43')]?_0xe63853[_0xadda('0x42')]:_0x2dd1aa[_0xadda('0x3b')];if(!_0x27cb08['query']['hasOwnProperty'](_0xadda('0x44'))){_0xe63853[_0xadda('0x2a')]=qs[_0xadda('0x2a')](_0x27cb08[_0xadda('0x3d')]['limit']);_0xe63853[_0xadda('0x29')]=qs['offset'](_0x27cb08[_0xadda('0x3d')][_0xadda('0x29')]);}_0xe63853[_0xadda('0x45')]=qs['sort'](_0x27cb08[_0xadda('0x3d')][_0xadda('0x46')]);_0xe63853[_0xadda('0x47')]=qs[_0xadda('0x48')](_[_0xadda('0x49')](_0x27cb08[_0xadda('0x3d')],_0x2dd1aa[_0xadda('0x48')]));if(_0x3f0976['dateStart']){if(_0x3f0976[_0xadda('0x3f')]){_0x3f0976[_0xadda('0x3f')]=moment(_0x3f0976[_0xadda('0x3f')])[_0xadda('0x4a')](0x1,_0xadda('0x4b'));}else{_0x3f0976[_0xadda('0x3f')]=moment(_0x3f0976['dateStart'])[_0xadda('0x4a')](0x1,_0xadda('0x4b'));}_[_0xadda('0x4c')](_0xe63853[_0xadda('0x47')],{'createdAt':{'$gte':_0x3f0976[_0xadda('0x3e')],'$lte':_0x3f0976[_0xadda('0x3f')]}});}if(_0x27cb08[_0xadda('0x3d')][_0xadda('0x4d')]){_0xe63853[_0xadda('0x47')]=_[_0xadda('0x4c')](_0xe63853[_0xadda('0x47')],{'$or':_[_0xadda('0x4e')](_0x2798bc,function(_0x3b5a45){if(_0x3b5a45['type'][_0xadda('0x4f')]!==_0xadda('0x50')){var _0x2653c8={};_0x2653c8[_0x3b5a45['field']]={'$like':'%'+_0x27cb08[_0xadda('0x3d')][_0xadda('0x4d')]+'%'};return _0x2653c8;}})});}_0xe63853=_[_0xadda('0x4c')]({},_0xe63853,_0x27cb08[_0xadda('0x51')]);var _0x490c59={'where':_0xe63853[_0xadda('0x47')]};return db[_0xadda('0x3a')]['count'](_0x490c59)['then'](function(_0x30dd67){_0x41875a['count']=_0x30dd67;if(_0x27cb08[_0xadda('0x3d')][_0xadda('0x52')]){_0xe63853['include']=[{'all':!![]}];}return db[_0xadda('0x3a')]['findAll'](_0xe63853);})[_0xadda('0x31')](function(_0x5ec8a7){_0x41875a[_0xadda('0x53')]=_0x5ec8a7;return _0x41875a;})[_0xadda('0x31')](respondWithFilteredResult(_0x409eb2,_0xe63853))[_0xadda('0x26')](handleError(_0x409eb2,null));};exports[_0xadda('0x54')]=function(_0x63d9ef,_0x3e87cb){var _0x5c4a92={'raw':![],'where':{'id':_0x63d9ef['params']['id']}},_0x38dff6={};_0x38dff6[_0xadda('0x3b')]=_['keys'](db[_0xadda('0x3a')][_0xadda('0x55')]);_0x38dff6[_0xadda('0x3d')]=_[_0xadda('0x3c')](_0x63d9ef['query']);_0x38dff6[_0xadda('0x48')]=_[_0xadda('0x40')](_0x38dff6[_0xadda('0x3b')],_0x38dff6['query']);_0x5c4a92['attributes']=_[_0xadda('0x40')](_0x38dff6[_0xadda('0x3b')],qs[_0xadda('0x41')](_0x63d9ef[_0xadda('0x3d')][_0xadda('0x41')]));_0x5c4a92[_0xadda('0x42')]=_0x5c4a92[_0xadda('0x42')]['length']?_0x5c4a92[_0xadda('0x42')]:_0x38dff6[_0xadda('0x3b')];if(_0x63d9ef[_0xadda('0x3d')][_0xadda('0x52')]){_0x5c4a92[_0xadda('0x56')]=[{'all':!![]}];}_0x5c4a92=_['merge']({},_0x5c4a92,_0x63d9ef[_0xadda('0x51')]);return db['ChatWebsite'][_0xadda('0x57')](_0x5c4a92)[_0xadda('0x31')](handleEntityNotFound(_0x3e87cb,null))[_0xadda('0x31')](respondWithResult(_0x3e87cb,null))[_0xadda('0x26')](handleError(_0x3e87cb,null));};exports[_0xadda('0x58')]=function(_0x15816a,_0x1d64f6){return db[_0xadda('0x3a')][_0xadda('0x58')](_0x15816a['body'],{})[_0xadda('0x31')](function(_0x2d23d9){var _0x5ec2c0=_0x15816a[_0xadda('0x59')][_0xadda('0x33')]({'plain':!![]});if(!_0x5ec2c0)throw new Error(_0xadda('0x5a'));if(_0x5ec2c0[_0xadda('0x5b')]===_0xadda('0x59')){var _0x4a4419=_0x2d23d9['get']({'plain':!![]});var _0x558845=_0xadda('0x34');return db[_0xadda('0x5c')]['find']({'where':{'name':_0x558845,'userProfileId':_0x5ec2c0[_0xadda('0x5d')]},'raw':!![]})[_0xadda('0x31')](function(_0x4f5695){if(_0x4f5695&&_0x4f5695[_0xadda('0x5e')]===0x0){return db['UserProfileResource'][_0xadda('0x58')]({'name':_0x4a4419[_0xadda('0x37')],'resourceId':_0x4a4419['id'],'type':_0x4f5695[_0xadda('0x37')],'sectionId':_0x4f5695['id']},{})[_0xadda('0x31')](function(){return _0x2d23d9;});}else{return _0x2d23d9;}})['catch'](function(_0x142265){logger[_0xadda('0x23')](_0xadda('0x5f'),_0x142265);throw _0x142265;});}return _0x2d23d9;})[_0xadda('0x31')](respondWithResult(_0x1d64f6,0xc9))[_0xadda('0x26')](handleError(_0x1d64f6,null));};exports[_0xadda('0x30')]=function(_0x114bd7,_0x67e09c){if(_0x114bd7[_0xadda('0x60')]['id']){delete _0x114bd7[_0xadda('0x60')]['id'];}return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0x114bd7[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x67e09c,null))[_0xadda('0x31')](saveUpdates(_0x114bd7['body'],null))[_0xadda('0x31')](respondWithResult(_0x67e09c,null))[_0xadda('0x26')](handleError(_0x67e09c,null));};exports[_0xadda('0x32')]=function(_0x3aee32,_0x31806e){return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0x3aee32['params']['id']}})['then'](handleEntityNotFound(_0x31806e,null))[_0xadda('0x31')](removeEntity(_0x31806e,null))['catch'](handleError(_0x31806e,null));};exports[_0xadda('0x62')]=function(_0x1cfd70,_0x20b596){return db[_0xadda('0x3a')][_0xadda('0x62')]()[_0xadda('0x31')](respondWithResult(_0x20b596,null))[_0xadda('0x26')](handleError(_0x20b596,null));};exports[_0xadda('0x63')]=function(_0x3aad18,_0x34343b,_0x142c90){if(_0x3aad18['body']['id']){delete _0x3aad18[_0xadda('0x60')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x3aad18[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x34343b,null))['then'](function(_0x339526){if(_0x339526){_0x3aad18[_0xadda('0x60')]['ChatWebsiteId']=_0x339526['id'];return db['Disposition']['create'](_0x3aad18[_0xadda('0x60')]);}})[_0xadda('0x31')](respondWithResult(_0x34343b,null))[_0xadda('0x26')](handleError(_0x34343b,null));};exports[_0xadda('0x64')]=function(_0x33c5a3,_0x549150,_0x273573){var _0x43e42f={'raw':![],'where':{}};var _0x5e5144={};var _0x139415={'count':0x0,'rows':[]};return db[_0xadda('0x3a')][_0xadda('0x65')]({'where':{'id':_0x33c5a3[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x549150,null))['then'](function(_0xc524e6){if(_0xc524e6){_0x5e5144[_0xadda('0x3b')]=_[_0xadda('0x3c')](db[_0xadda('0x66')][_0xadda('0x55')]);_0x5e5144[_0xadda('0x3d')]=_[_0xadda('0x3c')](_0x33c5a3['query']);_0x5e5144[_0xadda('0x48')]=_[_0xadda('0x40')](_0x5e5144['model'],_0x5e5144[_0xadda('0x3d')]);_0x43e42f[_0xadda('0x42')]=_[_0xadda('0x40')](_0x5e5144[_0xadda('0x3b')],qs[_0xadda('0x41')](_0x33c5a3['query'][_0xadda('0x41')]));_0x43e42f[_0xadda('0x42')]=_0x43e42f[_0xadda('0x42')][_0xadda('0x43')]?_0x43e42f['attributes']:_0x5e5144[_0xadda('0x3b')];if(!_0x33c5a3[_0xadda('0x3d')][_0xadda('0x67')](_0xadda('0x44'))){_0x43e42f[_0xadda('0x2a')]=qs[_0xadda('0x2a')](_0x33c5a3[_0xadda('0x3d')]['limit']);_0x43e42f[_0xadda('0x29')]=qs[_0xadda('0x29')](_0x33c5a3[_0xadda('0x3d')]['offset']);}_0x43e42f['order']=qs[_0xadda('0x46')](_0x33c5a3[_0xadda('0x3d')][_0xadda('0x46')]);_0x43e42f['where']=qs[_0xadda('0x48')](_[_0xadda('0x49')](_0x33c5a3['query'],_0x5e5144[_0xadda('0x48')]));_0x43e42f[_0xadda('0x47')][_0xadda('0x68')]=_0xc524e6['id'];if(_0x33c5a3['query'][_0xadda('0x4d')]){_0x43e42f[_0xadda('0x47')]=_[_0xadda('0x4c')](_0x43e42f[_0xadda('0x47')],{'$or':_['map'](_0x43e42f[_0xadda('0x42')],function(_0x49596e){var _0x2ac625={};_0x2ac625[_0x49596e]={'$like':'%'+_0x33c5a3[_0xadda('0x3d')][_0xadda('0x4d')]+'%'};return _0x2ac625;})});}_0x43e42f=_[_0xadda('0x4c')]({},_0x43e42f,_0x33c5a3[_0xadda('0x51')]);return db[_0xadda('0x66')][_0xadda('0x69')]({'where':_0x43e42f[_0xadda('0x47')]})['then'](function(_0x17e251){_0x139415[_0xadda('0x69')]=_0x17e251;if(_0x33c5a3[_0xadda('0x3d')][_0xadda('0x52')]){_0x43e42f[_0xadda('0x56')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x43e42f);})[_0xadda('0x31')](function(_0x25e0be){_0x139415[_0xadda('0x53')]=_0x25e0be;return _0x139415;});}})[_0xadda('0x31')](respondWithFilteredResult(_0x549150,_0x43e42f))[_0xadda('0x26')](handleError(_0x549150,null));};exports[_0xadda('0x6a')]=function(_0x577fe6,_0x2571a8,_0x2056c8){var _0x3e33a9;return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0x577fe6[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x2571a8,null))[_0xadda('0x31')](function(_0x3278aa){if(_0x3278aa){return _0x3278aa[_0xadda('0x6a')](_0x577fe6[_0xadda('0x3d')]['ids']);}})[_0xadda('0x31')](respondWithStatusCode(_0x2571a8,null))[_0xadda('0x26')](handleError(_0x2571a8,null));};exports[_0xadda('0x6b')]=function(_0x652b18,_0x379be5,_0x2fe0e4){if(_0x652b18[_0xadda('0x60')]['id']){delete _0x652b18[_0xadda('0x60')]['id'];}return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0x652b18[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x379be5,null))[_0xadda('0x31')](function(_0x2d1ad4){if(_0x2d1ad4){_0x652b18[_0xadda('0x60')]['ChatWebsiteId']=_0x2d1ad4['id'];return db[_0xadda('0x6c')][_0xadda('0x58')](_0x652b18[_0xadda('0x60')]);}})[_0xadda('0x31')](respondWithResult(_0x379be5,null))[_0xadda('0x26')](handleError(_0x379be5,null));};exports[_0xadda('0x6d')]=function(_0x49e91b,_0x351838,_0x533573){var _0x2b68a2={'raw':![],'where':{}};var _0x10f638={};var _0x34d6a9={'count':0x0,'rows':[]};return db[_0xadda('0x3a')][_0xadda('0x65')]({'where':{'id':_0x49e91b[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x351838,null))[_0xadda('0x31')](function(_0x9c04db){if(_0x9c04db){_0x10f638[_0xadda('0x3b')]=_[_0xadda('0x3c')](db[_0xadda('0x6c')][_0xadda('0x55')]);_0x10f638[_0xadda('0x3d')]=_[_0xadda('0x3c')](_0x49e91b[_0xadda('0x3d')]);_0x10f638['filters']=_[_0xadda('0x40')](_0x10f638['model'],_0x10f638[_0xadda('0x3d')]);_0x2b68a2[_0xadda('0x42')]=_[_0xadda('0x40')](_0x10f638[_0xadda('0x3b')],qs['fields'](_0x49e91b[_0xadda('0x3d')]['fields']));_0x2b68a2[_0xadda('0x42')]=_0x2b68a2['attributes']['length']?_0x2b68a2[_0xadda('0x42')]:_0x10f638['model'];if(!_0x49e91b[_0xadda('0x3d')]['hasOwnProperty'](_0xadda('0x44'))){_0x2b68a2[_0xadda('0x2a')]=qs[_0xadda('0x2a')](_0x49e91b[_0xadda('0x3d')][_0xadda('0x2a')]);_0x2b68a2['offset']=qs[_0xadda('0x29')](_0x49e91b[_0xadda('0x3d')][_0xadda('0x29')]);}_0x2b68a2[_0xadda('0x45')]=qs[_0xadda('0x46')](_0x49e91b[_0xadda('0x3d')][_0xadda('0x46')]);_0x2b68a2[_0xadda('0x47')]=qs[_0xadda('0x48')](_[_0xadda('0x49')](_0x49e91b['query'],_0x10f638['filters']));_0x2b68a2[_0xadda('0x47')]['ChatWebsiteId']=_0x9c04db['id'];if(_0x49e91b[_0xadda('0x3d')][_0xadda('0x4d')]){_0x2b68a2[_0xadda('0x47')]=_[_0xadda('0x4c')](_0x2b68a2[_0xadda('0x47')],{'$or':_[_0xadda('0x4e')](_0x2b68a2[_0xadda('0x42')],function(_0x1956f6){var _0x574ff6={};_0x574ff6[_0x1956f6]={'$like':'%'+_0x49e91b['query'][_0xadda('0x4d')]+'%'};return _0x574ff6;})});}_0x2b68a2=_[_0xadda('0x4c')]({},_0x2b68a2,_0x49e91b[_0xadda('0x51')]);return db[_0xadda('0x6c')][_0xadda('0x69')]({'where':_0x2b68a2[_0xadda('0x47')]})[_0xadda('0x31')](function(_0x47bedd){_0x34d6a9[_0xadda('0x69')]=_0x47bedd;if(_0x49e91b[_0xadda('0x3d')][_0xadda('0x52')]){_0x2b68a2[_0xadda('0x56')]=[{'all':!![]}];}return db[_0xadda('0x6c')][_0xadda('0x6e')](_0x2b68a2);})[_0xadda('0x31')](function(_0x5290e6){_0x34d6a9[_0xadda('0x53')]=_0x5290e6;return _0x34d6a9;});}})[_0xadda('0x31')](respondWithFilteredResult(_0x351838,_0x2b68a2))['catch'](handleError(_0x351838,null));};exports['removeAnswers']=function(_0xd7f47c,_0xb8dbba,_0x1490d8){var _0x279b03;return db['ChatWebsite'][_0xadda('0x57')]({'where':{'id':_0xd7f47c[_0xadda('0x61')]['id']}})['then'](handleEntityNotFound(_0xb8dbba,null))['then'](function(_0xd87e63){if(_0xd87e63){return _0xd87e63['removeAnswers'](_0xd7f47c['query'][_0xadda('0x6f')]);}})[_0xadda('0x31')](respondWithStatusCode(_0xb8dbba,null))[_0xadda('0x26')](handleError(_0xb8dbba,null));};exports['addLogo']=function(_0x4cad53,_0x109ab0,_0x4575a6){_0x4cad53[_0xadda('0x60')][_0xadda('0x70')]=_0x4cad53['file'][_0xadda('0x71')];return db['ChatWebsite'][_0xadda('0x57')]({'where':{'id':_0x4cad53['params']['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x109ab0,null))[_0xadda('0x31')](saveUpdates(_0x4cad53['body'],null))[_0xadda('0x31')](respondWithResult(_0x109ab0,null))[_0xadda('0x26')](handleError(_0x109ab0,null));};exports[_0xadda('0x72')]=function(_0x3dbdf7,_0x331970,_0x5b78c9){_0x3dbdf7['body']['agentAvatar']=_0x3dbdf7[_0xadda('0x73')][_0xadda('0x71')];return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0x3dbdf7[_0xadda('0x61')]['id']}})['then'](handleEntityNotFound(_0x331970,null))[_0xadda('0x31')](saveUpdates(_0x3dbdf7[_0xadda('0x60')],null))[_0xadda('0x31')](respondWithResult(_0x331970,null))[_0xadda('0x26')](handleError(_0x331970,null));};exports[_0xadda('0x74')]=function(_0xa323ed,_0x495a2b,_0x581b99){_0xa323ed['body'][_0xadda('0x75')]=_0xa323ed[_0xadda('0x73')][_0xadda('0x71')];return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0xa323ed[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x495a2b,null))['then'](saveUpdates(_0xa323ed[_0xadda('0x60')],null))[_0xadda('0x31')](respondWithResult(_0x495a2b,null))['catch'](handleError(_0x495a2b,null));};exports[_0xadda('0x76')]=function(_0x1e3f7e,_0x4926cd,_0x24171d){_0x1e3f7e[_0xadda('0x60')][_0xadda('0x77')]=_0x1e3f7e[_0xadda('0x73')][_0xadda('0x71')];return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0x1e3f7e[_0xadda('0x61')]['id']}})['then'](handleEntityNotFound(_0x4926cd,null))[_0xadda('0x31')](saveUpdates(_0x1e3f7e[_0xadda('0x60')],null))[_0xadda('0x31')](respondWithResult(_0x4926cd,null))['catch'](handleError(_0x4926cd,null));};exports['getLogo']=function(_0x58461e,_0x323a50,_0x5e68a3){var _0xece82e=path['join'](config[_0xadda('0x78')],_0xadda('0x79'));var _0x4ac661={'where':{'id':_0x58461e[_0xadda('0x61')]['id']},'attributes':['id',_0xadda('0x70')],'raw':!![]};var _0x176afc=![];return require(_0xadda('0x7a'))[_0xadda('0x7b')]()['then'](function(_0x41de7e){if(_0x41de7e){_0x176afc=_0x41de7e['custom'];}})[_0xadda('0x31')](function(){return db[_0xadda('0x3a')][_0xadda('0x57')](_0x4ac661);})[_0xadda('0x31')](handleEntityNotFound(_0x323a50,null))['then'](function(_0x3c2036){if(_0x3c2036){if(!_['isNil'](_0x3c2036['sitepic'])){if(fs['existsSync'](path['join'](config[_0xadda('0x78')],_0xadda('0x7c'),_0x3c2036[_0xadda('0x70')]))&&_0x176afc){_0xece82e=path[_0xadda('0x7d')](config[_0xadda('0x78')],_0xadda('0x7c'),_0x3c2036[_0xadda('0x70')]);}}return _0x323a50['download'](_0xece82e);}})[_0xadda('0x26')](handleError(_0x323a50,null));};exports['getAvatar']=function(_0x15ef55,_0x2b3396,_0x3b5734){var _0x5614a7=path[_0xadda('0x7d')](config['root'],_0xadda('0x7e'));var _0x43af2a={'where':{'id':_0x15ef55[_0xadda('0x61')]['id']},'attributes':['id',_0xadda('0x7f')],'raw':!![]};return db[_0xadda('0x3a')][_0xadda('0x57')](_0x43af2a)['then'](handleEntityNotFound(_0x2b3396,null))[_0xadda('0x31')](function(_0x520361){if(_0x520361){if(!_[_0xadda('0x80')](_0x520361[_0xadda('0x7f')])){if(fs[_0xadda('0x81')](path[_0xadda('0x7d')](config[_0xadda('0x78')],_0xadda('0x82'),_0x520361[_0xadda('0x7f')]))){_0x5614a7=path['join'](config[_0xadda('0x78')],_0xadda('0x82'),_0x520361['agentAvatar']);}}return _0x2b3396[_0xadda('0x83')](_0x5614a7);}})[_0xadda('0x26')](handleError(_0x2b3396,null));};exports['getCustomerAvatar']=function(_0x3d60b1,_0x39c90d,_0x23d79c){var _0x16e584=path[_0xadda('0x7d')](config[_0xadda('0x78')],_0xadda('0x84'));var _0xd5704a={'where':{'id':_0x3d60b1[_0xadda('0x61')]['id']},'attributes':['id',_0xadda('0x75'),_0xadda('0x85')],'raw':!![]};return db['ChatWebsite'][_0xadda('0x57')](_0xd5704a)[_0xadda('0x31')](handleEntityNotFound(_0x39c90d,null))[_0xadda('0x31')](function(_0x8a4afc){if(_0x8a4afc){if(!_[_0xadda('0x80')](_0x8a4afc['customerAvatar'])){if(fs[_0xadda('0x81')](path['join'](config['root'],_0xadda('0x82'),_0x8a4afc[_0xadda('0x75')]))&&_0x8a4afc[_0xadda('0x85')]){_0x16e584=path[_0xadda('0x7d')](config[_0xadda('0x78')],_0xadda('0x82'),_0x8a4afc[_0xadda('0x75')]);}}return _0x39c90d[_0xadda('0x83')](_0x16e584);}})[_0xadda('0x26')](handleError(_0x39c90d,null));};exports[_0xadda('0x86')]=function(_0x1aab91,_0x292b40,_0x555ba2){var _0x59fb61=path['join'](config[_0xadda('0x78')],_0xadda('0x87'));var _0x4dd4cd={'where':{'id':_0x1aab91[_0xadda('0x61')]['id']},'attributes':['id',_0xadda('0x77')],'raw':!![]};return db[_0xadda('0x3a')][_0xadda('0x57')](_0x4dd4cd)[_0xadda('0x31')](handleEntityNotFound(_0x292b40,null))['then'](function(_0x5d442c){if(_0x5d442c){if(!_['isNil'](_0x5d442c[_0xadda('0x77')])){if(fs[_0xadda('0x81')](path[_0xadda('0x7d')](config[_0xadda('0x78')],_0xadda('0x82'),_0x5d442c[_0xadda('0x77')]))){_0x59fb61=path[_0xadda('0x7d')](config[_0xadda('0x78')],'server/files/images/avatars/',_0x5d442c[_0xadda('0x77')]);}}return _0x292b40[_0xadda('0x83')](_0x59fb61);}})['catch'](handleError(_0x292b40,null));};exports[_0xadda('0x88')]=function(_0x24cd79,_0x342d7c,_0x3f87ea){var _0xa7fd9e=require('user-agent-parser');var _0x3fdeee=new _0xa7fd9e();var _0xb0ce22=_0x3fdeee[_0xadda('0x89')](_0x24cd79[_0xadda('0x8a')]['user-agent'])['getResult']();var _0x1a008f={'body':_0x24cd79[_0xadda('0x60')],'channel':'chat'};var _0x653b45=[];var _0x4e66e3=[];var _0x1bbf97={};var _0x4604cb=![];return db[_0xadda('0x8b')][_0xadda('0x62')]()[_0xadda('0x31')](function(_0x4d1ce6){if(!_0x4d1ce6){throw new db['Sequelize'][(_0xadda('0x8c'))]('no\x20available\x20attributes');}_0x653b45=_['difference'](_['keys'](_0x4d1ce6),[_0xadda('0x8d'),_0xadda('0x8e')]);_0x4e66e3=_['difference'](_[_0xadda('0x3c')](_0x4d1ce6),[_0xadda('0x8d'),_0xadda('0x8e'),_0xadda('0x8f'),_0xadda('0x90')]);if(_0x24cd79[_0xadda('0x60')]['id']){delete _0x24cd79[_0xadda('0x60')]['id'];}if(_[_0xadda('0x80')](_0x24cd79['body'][_0xadda('0x91')])){throw new db['Sequelize'][(_0xadda('0x8c'))](_0xadda('0x92'));}if(_['isNil'](_0x24cd79[_0xadda('0x60')]['body'])||_0x24cd79[_0xadda('0x60')][_0xadda('0x60')]===''){throw new db[(_0xadda('0x93'))]['ValidationError'](_0xadda('0x94'));}if(_[_0xadda('0x80')](_0x24cd79[_0xadda('0x60')][_0xadda('0x95')])){throw new db[(_0xadda('0x93'))][(_0xadda('0x8c'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4e66e3);}if(!_[_0xadda('0x96')](_0x4e66e3,_0x24cd79[_0xadda('0x60')][_0xadda('0x95')])){throw new db[(_0xadda('0x93'))][(_0xadda('0x8c'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4e66e3);}_0x1bbf97[_0x24cd79['body']['mapKey']]=_0x24cd79[_0xadda('0x60')][_0xadda('0x91')];})[_0xadda('0x31')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x24cd79[_0xadda('0x61')]['id']},'include':[{'model':db[_0xadda('0x97')],'as':_0xadda('0x98'),'include':[{'model':db[_0xadda('0x8b')],'as':_0xadda('0x99'),'where':_0x1bbf97,'limit':0x1,'order':[[_0xadda('0x8e'),_0xadda('0x9a')]]}]},{'model':db[_0xadda('0x9b')],'as':_0xadda('0x9c')}]});})[_0xadda('0x31')](handleEntityNotFound(_0x342d7c,null))['then'](function(_0x1eeeb1){if(_0x1eeeb1&&_0x1eeeb1[_0xadda('0x98')]){_0x1a008f[_0xadda('0x9d')]=_0x1eeeb1;_0x1a008f[_0xadda('0x9e')]=_0x1eeeb1[_0xadda('0x9c')];_0x1a008f['list']=_0x1eeeb1[_0xadda('0x98')];_0x1a008f[_0xadda('0x9e')]=_['orderBy'](_0x1a008f[_0xadda('0x9e')],['priority'],[_0xadda('0x9f')]);if(_0x1a008f[_0xadda('0x9d')][_0xadda('0x9c')]){delete _0x1a008f[_0xadda('0x9d')][_0xadda('0x9c')];}if(_0x1a008f[_0xadda('0x9d')][_0xadda('0x98')]&&_0x1a008f[_0xadda('0x9d')]['List'][_0xadda('0x99')]['length']){return _0x1a008f['account'][_0xadda('0x98')][_0xadda('0x99')][0x0];}var _0x72fc58=_[_0xadda('0xa0')](_0x24cd79[_0xadda('0x60')],{'firstName':_0x24cd79['body'][_0xadda('0x91')],'ListId':_0x1eeeb1[_0xadda('0x90')]});_0x72fc58[_0x24cd79['body'][_0xadda('0x95')]]=_0x24cd79[_0xadda('0x60')][_0xadda('0x91')];return db[_0xadda('0x8b')][_0xadda('0x58')](_0x72fc58,{'fields':_0x653b45,'raw':!![]});}})[_0xadda('0x31')](handleEntityNotFound(_0x342d7c,null))['then'](function(_0xb02430){_0x1a008f[_0xadda('0xa1')]=_0xb02430;if(_0xb02430){var _0x2639b8={'ContactId':_0xb02430['id'],'ChatWebsiteId':_0x24cd79['params']['id'],'from':(_0xb02430[_0xadda('0xa2')]||'')+'\x20'+(_0xb02430[_0xadda('0xa3')]||''),'customerIp':_0x24cd79[_0xadda('0x60')]['customerIp'],'referer':_0x24cd79[_0xadda('0x60')]['referer'],'browserName':_0xb0ce22[_0xadda('0xa4')]['name']&&_0xb0ce22['browser'][_0xadda('0xa5')]?util[_0xadda('0xa6')](_0xadda('0xa7'),_0xb0ce22[_0xadda('0xa4')][_0xadda('0x37')],_0xb0ce22['browser'][_0xadda('0xa5')]):'unknown','browserVersion':_0xb0ce22['browser'][_0xadda('0xa5')]||'unknown','osName':util[_0xadda('0xa6')](_0xadda('0xa7'),_0xb0ce22['os']['name'],_0xb0ce22['os'][_0xadda('0xa5')]),'osVersion':_0xb0ce22['os'][_0xadda('0xa5')],'deviceModel':_0xb0ce22[_0xadda('0xa8')][_0xadda('0x3b')]&&_0xb0ce22[_0xadda('0xa8')][_0xadda('0xa9')]?util['format']('%s\x20%s\x20%s',_0xb0ce22['device'][_0xadda('0x3b')],_0xb0ce22[_0xadda('0xa8')][_0xadda('0xa9')],_0xb0ce22['device']['type']):null,'deviceVendor':_0xb0ce22[_0xadda('0xa8')][_0xadda('0xa9')],'deviceType':_0xb0ce22['device'][_0xadda('0xaa')],'formData':JSON[_0xadda('0x22')](_0x24cd79[_0xadda('0x60')])};var _0x26ebbf={'ChatWebsiteId':_0x24cd79[_0xadda('0x61')]['id'],'closed':![]};if(_0x24cd79[_0xadda('0x60')][_0xadda('0xab')]){_0x26ebbf[_0xadda('0xab')]=_0x24cd79[_0xadda('0x60')][_0xadda('0xab')];return db[_0xadda('0xac')][_0xadda('0x57')]({'where':_0x26ebbf})[_0xadda('0x31')](function(_0xf3fc42){if(_0xf3fc42){return[_0xf3fc42,![]];}_0x2639b8[_0xadda('0xab')]=_0x24cd79[_0xadda('0x60')][_0xadda('0xab')];_0x2639b8[_0xadda('0xad')]=_0x24cd79[_0xadda('0x60')][_0xadda('0xad')];return db['ChatInteraction']['create'](_0x2639b8)['then'](function(_0x16a1d5){return[_0x16a1d5,!![]];});});}_0x26ebbf[_0xadda('0xae')]=_0xb02430['id'];if(_0x24cd79[_0xadda('0x60')]['interaction']&&_0x24cd79['body']['interaction']['id']){_0x26ebbf['id']=_0x24cd79['body'][_0xadda('0xaf')]['id'];return db[_0xadda('0xac')][_0xadda('0x57')]({'where':_0x26ebbf})[_0xadda('0x31')](function(_0x30b1ee){if(_0x30b1ee){return[_0x30b1ee,![]];}return db[_0xadda('0xac')][_0xadda('0x58')](_0x2639b8)[_0xadda('0x31')](function(_0x3766a8){return[_0x3766a8,!![]];});});}return db['ChatInteraction'][_0xadda('0x58')](_0x2639b8)[_0xadda('0x31')](function(_0x2fb272){return[_0x2fb272,!![]];});}})['spread'](function(_0x4e5320,_0x472ec7){if(_0x4e5320){_0x4604cb=_0x472ec7;if(!_0x472ec7){var _0x55cea2={'from':(_0x1a008f[_0xadda('0xa1')]['firstName']||'')+'\x20'+(_0x1a008f[_0xadda('0xa1')][_0xadda('0xa3')]||'')};if(_0x24cd79[_0xadda('0x60')][_0xadda('0xab')]&&_0x24cd79[_0xadda('0x60')]['messageId']&&_0x24cd79['body']['threadId']!=_0x24cd79[_0xadda('0x60')][_0xadda('0xb0')]){_0x55cea2[_0xadda('0xab')]=_0x24cd79[_0xadda('0x60')]['messageId'];}return _0x4e5320[_0xadda('0x30')](_0x55cea2);}else{return _0x4e5320;}}})[_0xadda('0x31')](function(_0x1917f0){_0x1a008f[_0xadda('0xaf')]=_0x1917f0[_0xadda('0x33')]({'plain':!![]});_0x1a008f['interaction']['created']=_0x4604cb;if(_0x1a008f[_0xadda('0xaf')]['created']){if(_0x1a008f[_0xadda('0x9d')]['autoclose']){_0x1a008f[_0xadda('0x9e')][_0xadda('0xb1')]({'id':0x0,'priority':_0x1a008f['applications']['length']+0x1,'app':_0xadda('0xb2'),'appdata':_0xadda('0xb3'),'interval':_0xadda('0xb4')});}}return db[_0xadda('0xb5')][_0xadda('0x58')]({'body':_0x24cd79[_0xadda('0x60')][_0xadda('0x60')],'ChatWebsiteId':_0x24cd79[_0xadda('0x61')]['id'],'ChatInteractionId':_0x1917f0['id'],'direction':'in','ContactId':_0x1a008f['contact']['id'],'AttachmentId':_0x24cd79['body'][_0xadda('0xb6')]});})[_0xadda('0x31')](function(_0x2bf688){_0x1a008f[_0xadda('0x25')]=_0x2bf688;if(_0x1a008f[_0xadda('0xaf')][_0xadda('0xb7')]){return db['User'][_0xadda('0x57')]({'attributes':['id',_0xadda('0x37')],'where':{'id':_0x1a008f['interaction'][_0xadda('0xb7')]}})[_0xadda('0x31')](function(_0x4646e3){if(_0x4646e3){_0x1a008f[_0xadda('0x9e')][_0xadda('0xb8')]({'id':0x0,'priority':0x0,'app':_0xadda('0xb9'),'appdata':_0x4646e3[_0xadda('0x37')]+','+(_0x1a008f['account']['waitForTheAssignedAgent']||0xa),'interval':_0xadda('0xb4')});_0x1a008f[_0xadda('0xba')]=!![];}return respondWithRpcPromise(_0xadda('0xbb'),'startRouting',_0x1a008f);});}return respondWithRpcPromise(_0xadda('0xbb'),_0xadda('0xbc'),_0x1a008f);})[_0xadda('0x31')](function(_0x1766bb){respondWithRpcPromise(_0xadda('0xbd'),_0xadda('0xbd'),{'event':_0xadda('0x88'),'message':_0x1766bb},client9002);return _0x1766bb;})[_0xadda('0x31')](respondWithResult(_0x342d7c,null))['catch'](handleError(_0x342d7c,null));};exports['offline']=function(_0x1c4d7c,_0x42b11d,_0x158265){var _0x9a54a0,_0x4b2795,_0x2ac01c;var _0xc2bda1=[];var _0x345a89=[];var _0x33b3d5={};return db[_0xadda('0x8b')][_0xadda('0x62')]()[_0xadda('0x31')](function(_0x1f3c1f){if(!_0x1f3c1f){throw new db[(_0xadda('0x93'))][(_0xadda('0x8c'))](_0xadda('0xbe'));}_0x345a89=_[_0xadda('0xbf')](_[_0xadda('0x3c')](_0x1f3c1f),['createdAt','updatedAt']);_0xc2bda1=_[_0xadda('0xbf')](_[_0xadda('0x3c')](_0x1f3c1f),[_0xadda('0x8d'),_0xadda('0x8e'),_0xadda('0x8f'),_0xadda('0x90')]);if(_0x1c4d7c['body']['id']){delete _0x1c4d7c['body']['id'];}if(_['isNil'](_0x1c4d7c[_0xadda('0x60')][_0xadda('0x91')])){throw _0x42b11d[_0xadda('0x2b')](0x1f4)[_0xadda('0x38')](new db['Sequelize']['ValidationError'](_0xadda('0x92')));}if(_[_0xadda('0x80')](_0x1c4d7c['body'][_0xadda('0x60')])||_0x1c4d7c[_0xadda('0x60')]['body']===''){throw _0x42b11d['status'](0x1f4)[_0xadda('0x38')](new db[(_0xadda('0x93'))][(_0xadda('0x8c'))](_0xadda('0x94')));}if(_[_0xadda('0x80')](_0x1c4d7c['body'][_0xadda('0xc0')])){throw _0x42b11d[_0xadda('0x2b')](0x1f4)['send'](new db[(_0xadda('0x93'))]['ValidationError'](_0xadda('0xc1')+_0xc2bda1));}if(!_['includes'](_0xc2bda1,_0x1c4d7c[_0xadda('0x60')][_0xadda('0xc0')])){throw _0x42b11d[_0xadda('0x2b')](0x1f4)[_0xadda('0x38')](new db[(_0xadda('0x93'))][(_0xadda('0x8c'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xc2bda1));}_0x33b3d5[_0x1c4d7c[_0xadda('0x60')][_0xadda('0xc0')]]=_0x1c4d7c['body']['from'];})[_0xadda('0x31')](function(){return db[_0xadda('0x3a')]['find']({'where':{'id':_0x1c4d7c[_0xadda('0x61')]['id']},'include':[{'model':db[_0xadda('0x97')],'as':_0xadda('0x98')}]});})['then'](handleEntityNotFound(_0x42b11d,null))[_0xadda('0x31')](function(_0x1c6bfe){if(_0x1c6bfe&&_0x1c6bfe[_0xadda('0x98')]){_0x4b2795=_0x1c6bfe;var _0x134326=_['defaults'](_0x1c4d7c['body'],{'firstName':_0x1c4d7c[_0xadda('0x60')][_0xadda('0x91')],'phone':_0x1c4d7c['body'][_0xadda('0x91')],'ListId':_0x1c6bfe[_0xadda('0x90')]});_0x134326[_0x1c4d7c[_0xadda('0x60')][_0xadda('0xc0')]]=_0x1c4d7c[_0xadda('0x60')]['from'];return db[_0xadda('0x8b')][_0xadda('0xc2')]({'where':_0x33b3d5,'defaults':_0x134326});}})['spread'](function(_0x46303f){if(_0x46303f){_0x2ac01c=_0x46303f;var _0x3a29af=fs['readFileSync'](path[_0xadda('0x7d')](config[_0xadda('0x78')],_0xadda('0xc3')),'utf8');var _0x5e0cdf=ejs['render'](_0x3a29af,{'body':_['toPairs'](_0x1c4d7c['body']['body']),'bodyTitle':_0x4b2795[_0xadda('0xc4')]});return db[_0xadda('0xc5')]['create']({'body':_0x5e0cdf,'ContactId':_0x46303f['id'],'ChatWebsiteId':_0x4b2795['id']});}})[_0xadda('0x31')](function(_0x484230){if(_0x484230){_0x9a54a0=_0x484230;return db[_0xadda('0xc6')][_0xadda('0x65')]({'where':{'service':!![]},'include':[{'model':db[_0xadda('0xc7')],'as':_0xadda('0xc8'),'raw':!![]}]});}})[_0xadda('0x31')](function(_0x45c44d){if(_0x45c44d&&_0x45c44d[_0xadda('0xc8')]&&_0x4b2795['forwardOfflineAddress']){var _0x50dfdc={'tls':{'rejectUnauthorized':![]}};if(_0x45c44d[_0xadda('0xc8')][_0xadda('0xc9')]){_0x50dfdc[_0xadda('0xc9')]=_0x45c44d['Smtp'][_0xadda('0xc9')];}else{_0x50dfdc[_0xadda('0xca')]=_0x45c44d[_0xadda('0xc8')][_0xadda('0xca')];_0x50dfdc[_0xadda('0xcb')]=_0x45c44d[_0xadda('0xc8')][_0xadda('0xcb')];_0x50dfdc['secure']=_0x45c44d[_0xadda('0xc8')][_0xadda('0xcc')];}if(_0x45c44d['Smtp'][_0xadda('0xcd')]){_0x50dfdc['auth']={'user':_0x45c44d[_0xadda('0xc8')]['user'],'pass':_0x45c44d[_0xadda('0xc8')][_0xadda('0xce')]};}return respondWithRpcPromise(_0xadda('0xcf'),_0xadda('0xd0'),{'account':_0x50dfdc,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x45c44d[_0xadda('0x37')],_0x45c44d[_0xadda('0xd1')]||_0x45c44d[_0xadda('0xc8')][_0xadda('0x59')]),'to':_0x4b2795[_0xadda('0xd2')],'subject':_0x4b2795[_0xadda('0xd3')],'text':_0x9a54a0['body']}},client9003)[_0xadda('0x31')](function(){return _0x9a54a0;})[_0xadda('0x26')](function(_0x6b147e){console['error'](_0x6b147e);});}})[_0xadda('0x31')](function(){if(_0x9a54a0){return _0x9a54a0;}})[_0xadda('0x31')](respondWithResult(_0x42b11d,null))[_0xadda('0x26')](handleError(_0x42b11d,null));};exports['addInteraction']=function(_0x173187,_0x49525d,_0x3bb906){return db['ChatInteraction'][_0xadda('0x57')]({'where':{'id':_0x173187[_0xadda('0x61')]['id']}})['then'](handleEntityNotFound(_0x49525d,null))[_0xadda('0x31')](function(_0x73db19){if(_0x73db19){return _0x73db19['addInteraction'](_0x173187[_0xadda('0x60')][_0xadda('0x6f')],_['omit'](_0x173187[_0xadda('0x60')],[_0xadda('0x6f'),'id'])||{});}})[_0xadda('0x31')](respondWithResult(_0x49525d,null))[_0xadda('0x26')](handleError(_0x49525d,null));};exports[_0xadda('0xd4')]=function(_0x34187f,_0x451cb8,_0x1976f3){var _0x4eaf71={'raw':![],'where':{}};var _0x925f9d={};var _0x479e3e={'count':0x0,'rows':[]};return db[_0xadda('0x3a')][_0xadda('0x65')]({'where':{'id':_0x34187f[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x451cb8,null))[_0xadda('0x31')](function(_0x273ca1){if(_0x273ca1){_0x925f9d[_0xadda('0x3b')]=_[_0xadda('0x3c')](db['ChatInteraction'][_0xadda('0x55')]);_0x925f9d['query']=_[_0xadda('0x3c')](_0x34187f[_0xadda('0x3d')]);_0x925f9d['filters']=_[_0xadda('0x40')](_0x925f9d[_0xadda('0x3b')],_0x925f9d[_0xadda('0x3d')]);_0x4eaf71[_0xadda('0x42')]=_[_0xadda('0x40')](_0x925f9d['model'],qs[_0xadda('0x41')](_0x34187f[_0xadda('0x3d')][_0xadda('0x41')]));_0x4eaf71[_0xadda('0x42')]=_0x4eaf71[_0xadda('0x42')][_0xadda('0x43')]?_0x4eaf71[_0xadda('0x42')]:_0x925f9d['model'];if(!_0x34187f[_0xadda('0x3d')][_0xadda('0x67')]('nolimit')){_0x4eaf71[_0xadda('0x2a')]=qs[_0xadda('0x2a')](_0x34187f['query']['limit']);_0x4eaf71[_0xadda('0x29')]=qs[_0xadda('0x29')](_0x34187f[_0xadda('0x3d')][_0xadda('0x29')]);}_0x4eaf71[_0xadda('0x45')]=qs[_0xadda('0x46')](_0x34187f[_0xadda('0x3d')][_0xadda('0x46')]);_0x4eaf71['where']=qs[_0xadda('0x48')](_[_0xadda('0x49')](_0x34187f[_0xadda('0x3d')],_0x925f9d['filters']));_0x4eaf71['where'][_0xadda('0x68')]=_0x273ca1['id'];if(_0x34187f['query'][_0xadda('0x4d')]){_0x4eaf71[_0xadda('0x47')]=_[_0xadda('0x4c')](_0x4eaf71['where'],{'$or':_['map'](_0x4eaf71[_0xadda('0x42')],function(_0x1b9fc6){var _0x3a4cb8={};_0x3a4cb8[_0x1b9fc6]={'$like':'%'+_0x34187f[_0xadda('0x3d')][_0xadda('0x4d')]+'%'};return _0x3a4cb8;})});}_0x4eaf71=_[_0xadda('0x4c')]({},_0x4eaf71,_0x34187f['options']);return db[_0xadda('0xac')]['count']({'where':_0x4eaf71[_0xadda('0x47')]})['then'](function(_0x10ceb9){_0x479e3e[_0xadda('0x69')]=_0x10ceb9;if(_0x34187f[_0xadda('0x3d')]['includeAll']){_0x4eaf71[_0xadda('0x56')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0xadda('0xd5')],'as':_0xadda('0xd6'),'attributes':[_0xadda('0x37'),'fullname',_0xadda('0xd7')],'required':![]},{'model':db[_0xadda('0xd8')],'as':_0xadda('0xd9'),'attributes':['id',_0xadda('0x37'),'color'],'where':_0x34187f['query'][_0xadda('0xda')]?{'id':_0x34187f['query'][_0xadda('0xda')]}:undefined,'required':_0x34187f[_0xadda('0x3d')][_0xadda('0xda')]?!![]:![]}];}return db[_0xadda('0xac')][_0xadda('0x6e')](_0x4eaf71);})[_0xadda('0x31')](function(_0xa95303){_0x479e3e['rows']=_0xa95303;return _0x479e3e;});}})[_0xadda('0x31')](respondWithFilteredResult(_0x451cb8,_0x4eaf71))['catch'](handleError(_0x451cb8,null));};function iftimePromise(_0x534f56,_0x5a5ec7){return respondWithRpcPromise(_0xadda('0xdb'),'getSnippet',{'command':_0x5a5ec7['timezone']?util['format'](_0xadda('0xdc'),_0x534f56['interval'],_0x5a5ec7['timezone']):util['format'](_0xadda('0xdd'),_0x534f56[_0xadda('0xde')])},client9002)[_0xadda('0x31')](function(_0x411206){var _0x1119ba=_0x411206&&_0x411206[_0xadda('0xdf')]('true')>=0x0?!![]:![];logger[_0xadda('0xe0')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x5a5ec7['id'],_0x534f56['id'],_0x534f56[_0xadda('0xde')],_0x1119ba?_0xadda('0xe1'):'OFFLINE',_0x5a5ec7[_0xadda('0xe2')]?_0x5a5ec7['timezone']:'No\x20timezone');return _0x1119ba;})[_0xadda('0x26')](function(_0x3cf246){logger[_0xadda('0x23')](_0xadda('0xe3'),_0x5a5ec7['id'],_0x534f56['id'],_0x534f56['interval'],util['inspect'](_0x3cf246,{'showHidden':![],'depth':null}),_0x5a5ec7[_0xadda('0xe2')]?_0x5a5ec7['timezone']:_0xadda('0xe4'));return![];});}exports[_0xadda('0xe5')]=function(_0xa49ea4,_0x2058dd,_0x5b3bb8){var _0x43596c=0x0;var _0x54d09a=0x0;var _0x20bf4d=![];var _0x498b76;var _0x2727d3;return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0xa49ea4[_0xadda('0x61')]['id']},'include':[{'model':db[_0xadda('0xe6')],'as':_0xadda('0xe6'),'include':[{'model':db['Interval'],'as':_0xadda('0xe7'),'attributes':['id',_0xadda('0xde')],'raw':!![]}]}]})[_0xadda('0x31')](handleEntityNotFound(_0x2058dd,null))['then'](function(_0x57f314){if(_0x57f314){_0x498b76=_0x57f314;return _0x57f314[_0xadda('0xe8')]({'raw':!![]});}})[_0xadda('0x31')](function(_0x3106c4){if(_0x498b76){if(_0x3106c4){_0x2727d3=_0x3106c4;}}return require(_0xadda('0x7a'))[_0xadda('0x7b')]();})['then'](function(_0x571726){if(_0x571726){_0x54d09a=_0x571726[_0xadda('0xe9')];_0x20bf4d=_0x571726[_0xadda('0xea')];}})['then'](function(){return db[_0xadda('0xac')]['count']({'where':{'closed':![]}});})[_0xadda('0x31')](function(_0x45d3fa){_0x43596c=_0x45d3fa;if(_0x54d09a&&_0x45d3fa>_0x54d09a){return db[_0xadda('0xeb')][_0xadda('0x65')]({'where':{'id':0x1}})[_0xadda('0x31')](function(_0x40847a){if(_0x40847a){_0x40847a[_0xadda('0xec')](_0xadda('0xed'));}});}})[_0xadda('0x31')](function(){if(_0x498b76['Interval']&&_0x498b76[_0xadda('0xe6')][_0xadda('0xe7')]){var _0x48c2d9=[];for(var _0x1fd69e=0x0;_0x1fd69e<_0x498b76[_0xadda('0xe6')][_0xadda('0xe7')][_0xadda('0x43')];_0x1fd69e++){var _0x50d8e8=_0x498b76['Interval']['Intervals'][_0x1fd69e][_0xadda('0x33')]({'plain':!![]});_0x48c2d9[_0xadda('0xb1')](iftimePromise(_0x50d8e8,_0x498b76));}return BPromise['all'](_0x48c2d9)[_0xadda('0x31')](function(_0x3353ae){return _[_0xadda('0xee')](_0x3353ae);});}else{return!![];}})['then'](function(_0x226af4){var _0x4c3f02=fs[_0xadda('0xef')](path[_0xadda('0x7d')](config[_0xadda('0x78')],_0xadda('0xf0')),'utf8');var _0x3b2a49={'remote':_0x498b76['remote'],'query':querystring[_0xadda('0x22')](_[_0xadda('0x4c')](_0x498b76[_0xadda('0x33')]({'plain':!![]}),{'customerIp':_0xa49ea4['headers'][_0xadda('0xf1')]||_0xa49ea4['headers'][_0xadda('0xf2')]||_0xa49ea4[_0xadda('0xf3')][_0xadda('0xf4')]||_0xa49ea4['ip'],'referer':_0xa49ea4[_0xadda('0x8a')][_0xadda('0xf5')],'openedInteractions':_0x43596c,'maxInteractions':_0x54d09a,'virtual':_0x20bf4d[_0xadda('0xe9')],'online':_0x226af4,'custom':_0x20bf4d}))[_0xadda('0xf6')](/'/g,'\x5c\x27')};_0x2058dd[_0xadda('0x38')](ejs['render'](Mustache['render'](_0x4c3f02,_0x3b2a49),{'proactiveActions':_0x2727d3,'alignment':_0x498b76[_0xadda('0xf7')],'verticalAlignment':_0x498b76[_0xadda('0xf8')]}));})[_0xadda('0x26')](handleError(_0x2058dd,null));};exports[_0xadda('0xf9')]=function(_0x5b747b,_0x5ba4ad,_0x23e0ef){return db[_0xadda('0x3a')][_0xadda('0x65')]({'where':{'id':_0x5b747b[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x5ba4ad,null))[_0xadda('0x31')](function(_0x532994){if(_0x532994){return db[_0xadda('0xfa')]['transaction'](function(_0x5d6adc){return db[_0xadda('0x9b')][_0xadda('0x32')]({'where':{'ChatWebsiteId':_0x5b747b[_0xadda('0x61')]['id']},'transaction':_0x5d6adc})[_0xadda('0x31')](function(_0x1d82c9){var _0x1e60da=_['map'](_0x5b747b[_0xadda('0x60')],function(_0xc260af){_0xc260af[_0xadda('0x68')]=_0x5b747b[_0xadda('0x61')]['id'];return _0xc260af;});return db[_0xadda('0x9b')][_0xadda('0xfb')](_0x1e60da,{'transaction':_0x5d6adc});});})[_0xadda('0x31')](function(){return db[_0xadda('0x9b')][_0xadda('0xfc')]({'where':{'ChatWebsiteId':_0x5b747b[_0xadda('0x61')]['id']},'order':_0xadda('0xfd')});});}})[_0xadda('0x31')](respondWithResult(_0x5ba4ad,null))[_0xadda('0x26')](handleError(_0x5ba4ad,null));};exports[_0xadda('0xfe')]=function(_0x59b324,_0x55b644,_0x29cad2){var _0x87222a={};var _0x574643={};var _0x5c1a55;var _0x2501bd;return db[_0xadda('0x3a')][_0xadda('0x65')]({'where':{'id':_0x59b324[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x55b644,null))[_0xadda('0x31')](function(_0x2f59c5){if(_0x2f59c5){_0x5c1a55=_0x2f59c5;_0x574643[_0xadda('0x3b')]=_[_0xadda('0x3c')](db[_0xadda('0x9b')]['rawAttributes']);_0x574643[_0xadda('0x3d')]=_[_0xadda('0x3c')](_0x59b324[_0xadda('0x3d')]);_0x574643[_0xadda('0x48')]=_[_0xadda('0x40')](_0x574643[_0xadda('0x3b')],_0x574643[_0xadda('0x3d')]);_0x87222a[_0xadda('0x42')]=_[_0xadda('0x40')](_0x574643[_0xadda('0x3b')],qs[_0xadda('0x41')](_0x59b324[_0xadda('0x3d')][_0xadda('0x41')]));_0x87222a[_0xadda('0x42')]=_0x87222a[_0xadda('0x42')][_0xadda('0x43')]?_0x87222a[_0xadda('0x42')]:_0x574643[_0xadda('0x3b')];_0x87222a[_0xadda('0x45')]=qs[_0xadda('0x46')](_0x59b324['query']['sort']);_0x87222a['where']=qs[_0xadda('0x48')](_[_0xadda('0x49')](_0x59b324['query'],_0x574643[_0xadda('0x48')]));if(_0x59b324[_0xadda('0x3d')]['filter']){_0x87222a[_0xadda('0x47')]=_[_0xadda('0x4c')](_0x87222a['where'],{'$or':_[_0xadda('0x4e')](_0x87222a[_0xadda('0x42')],function(_0x40aca9){var _0x350764={};_0x350764[_0x40aca9]={'$like':'%'+_0x59b324[_0xadda('0x3d')]['filter']+'%'};return _0x350764;})});}_0x87222a=_['merge']({},_0x87222a,_0x59b324[_0xadda('0x51')]);return _0x5c1a55[_0xadda('0xfe')](_0x87222a);}})['then'](function(_0x4936c3){if(_0x4936c3){_0x2501bd=_0x4936c3[_0xadda('0x43')];if(!_0x59b324[_0xadda('0x3d')][_0xadda('0x67')](_0xadda('0x44'))){_0x87222a[_0xadda('0x2a')]=qs['limit'](_0x59b324[_0xadda('0x3d')]['limit']);_0x87222a['offset']=qs[_0xadda('0x29')](_0x59b324[_0xadda('0x3d')][_0xadda('0x29')]);}return _0x5c1a55[_0xadda('0xfe')](_0x87222a);}})[_0xadda('0x31')](function(_0x79d8af){if(_0x79d8af){return _0x79d8af?{'count':_0x2501bd,'rows':_0x79d8af}:null;}})['then'](respondWithResult(_0x55b644,null))[_0xadda('0x26')](handleError(_0x55b644,null));};exports[_0xadda('0xff')]=function(_0x37f888,_0x438447,_0x2b3e31){return db[_0xadda('0x100')]['find']({'where':{'id':_0x37f888[_0xadda('0x61')]['id']}})['then'](handleEntityNotFound(_0x438447,null))[_0xadda('0x31')](function(_0x5db813){if(_0x5db813){return _0x5db813[_0xadda('0xff')](_0x37f888['body'][_0xadda('0x6f')],_[_0xadda('0x101')](_0x37f888[_0xadda('0x60')],[_0xadda('0x6f'),'id'])||{});}})[_0xadda('0x31')](respondWithResult(_0x438447,null))[_0xadda('0x26')](handleError(_0x438447,null));};exports['getProactiveActions']=function(_0x381507,_0x4edfff,_0x247172){var _0x3b2ce2={};var _0x2bbce8={};var _0x4325f0;var _0x42fb1b;return db['ChatWebsite']['findOne']({'where':{'id':_0x381507[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x4edfff,null))[_0xadda('0x31')](function(_0x10b6da){if(_0x10b6da){_0x4325f0=_0x10b6da;_0x2bbce8[_0xadda('0x3b')]=_[_0xadda('0x3c')](db[_0xadda('0x102')]['rawAttributes']);_0x2bbce8[_0xadda('0x3d')]=_[_0xadda('0x3c')](_0x381507['query']);_0x2bbce8['filters']=_['intersection'](_0x2bbce8[_0xadda('0x3b')],_0x2bbce8[_0xadda('0x3d')]);_0x3b2ce2[_0xadda('0x42')]=_[_0xadda('0x40')](_0x2bbce8[_0xadda('0x3b')],qs[_0xadda('0x41')](_0x381507[_0xadda('0x3d')][_0xadda('0x41')]));_0x3b2ce2[_0xadda('0x42')]=_0x3b2ce2[_0xadda('0x42')]['length']?_0x3b2ce2[_0xadda('0x42')]:_0x2bbce8[_0xadda('0x3b')];_0x3b2ce2[_0xadda('0x45')]=qs['sort'](_0x381507[_0xadda('0x3d')][_0xadda('0x46')]);_0x3b2ce2[_0xadda('0x47')]=qs[_0xadda('0x48')](_[_0xadda('0x49')](_0x381507[_0xadda('0x3d')],_0x2bbce8[_0xadda('0x48')]));if(_0x381507[_0xadda('0x3d')][_0xadda('0x4d')]){_0x3b2ce2[_0xadda('0x47')]=_[_0xadda('0x4c')](_0x3b2ce2[_0xadda('0x47')],{'$or':_[_0xadda('0x4e')](_0x3b2ce2[_0xadda('0x42')],function(_0x5b6be7){var _0x2a07bf={};_0x2a07bf[_0x5b6be7]={'$like':'%'+_0x381507[_0xadda('0x3d')]['filter']+'%'};return _0x2a07bf;})});}_0x3b2ce2=_['merge']({},_0x3b2ce2,_0x381507[_0xadda('0x51')]);return _0x4325f0[_0xadda('0xe8')](_0x3b2ce2);}})['then'](function(_0x483029){if(_0x483029){_0x42fb1b=_0x483029[_0xadda('0x43')];if(!_0x381507[_0xadda('0x3d')]['hasOwnProperty'](_0xadda('0x44'))){_0x3b2ce2['limit']=qs[_0xadda('0x2a')](_0x381507[_0xadda('0x3d')][_0xadda('0x2a')]);_0x3b2ce2[_0xadda('0x29')]=qs[_0xadda('0x29')](_0x381507['query']['offset']);}return _0x4325f0['getProactiveActions'](_0x3b2ce2);}})[_0xadda('0x31')](function(_0x31806a){if(_0x31806a){return _0x31806a?{'count':_0x42fb1b,'rows':_0x31806a}:null;}})[_0xadda('0x31')](respondWithResult(_0x4edfff,null))['catch'](handleError(_0x4edfff,null));};exports[_0xadda('0x103')]=function(_0x3be704,_0x46cccb,_0x38aaa3){var _0x330e28=_0x3be704[_0xadda('0x3d')][_0xadda('0x104')]===_0xadda('0x105')?_0xadda('0x106'):_0xadda('0x107');return db[_0xadda('0x3a')]['find']({'attributes':['id',_0x330e28],'where':{'id':_0x3be704[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x46cccb,null))[_0xadda('0x31')](function(_0x47ccb7){if(_0x47ccb7){var _0x353640=_0x47ccb7[_0x330e28];var _0x26f1d2=_0x353640&&_0x353640['items']?_0x353640[_0xadda('0x108')]:[];_0x46cccb[_0xadda('0x38')]({'fromKey':_[_0xadda('0x80')](_0x353640['fromKey'])?undefined:_0x353640[_0xadda('0x109')],'count':_0x26f1d2['length'],'rows':_0x26f1d2});}})[_0xadda('0x26')](handleError(_0x46cccb,null));};exports['getOfflineMessages']=function(_0x3b68c9,_0xbaf658,_0x2b2a9e){var _0x1914cd={'raw':!![],'where':{}};var _0x24bb93={};var _0x15604e={'count':0x0,'rows':[]};return db[_0xadda('0x3a')][_0xadda('0x65')]({'where':{'id':_0x3b68c9[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0xbaf658,null))[_0xadda('0x31')](function(_0x4c07e8){if(_0x4c07e8){_0x24bb93[_0xadda('0x3b')]=_['keys'](db[_0xadda('0xc5')][_0xadda('0x55')]);_0x24bb93['query']=_['keys'](_0x3b68c9[_0xadda('0x3d')]);_0x24bb93[_0xadda('0x48')]=_[_0xadda('0x40')](_0x24bb93[_0xadda('0x3b')],_0x24bb93[_0xadda('0x3d')]);_0x1914cd['attributes']=_[_0xadda('0x40')](_0x24bb93[_0xadda('0x3b')],qs[_0xadda('0x41')](_0x3b68c9[_0xadda('0x3d')][_0xadda('0x41')]));_0x1914cd[_0xadda('0x42')]=_0x1914cd['attributes'][_0xadda('0x43')]?_0x1914cd[_0xadda('0x42')]:_0x24bb93['model'];if(!_0x3b68c9[_0xadda('0x3d')][_0xadda('0x67')](_0xadda('0x44'))){_0x1914cd[_0xadda('0x2a')]=qs[_0xadda('0x2a')](_0x3b68c9[_0xadda('0x3d')][_0xadda('0x2a')]);_0x1914cd[_0xadda('0x29')]=qs[_0xadda('0x29')](_0x3b68c9[_0xadda('0x3d')][_0xadda('0x29')]);}_0x1914cd[_0xadda('0x45')]=qs['sort'](_0x3b68c9[_0xadda('0x3d')]['sort']);_0x1914cd['where']=qs[_0xadda('0x48')](_[_0xadda('0x49')](_0x3b68c9[_0xadda('0x3d')],_0x24bb93[_0xadda('0x48')]));_0x1914cd[_0xadda('0x47')]['ChatWebsiteId']=_0x4c07e8['id'];if(_0x3b68c9[_0xadda('0x3d')]['filter']){_0x1914cd[_0xadda('0x47')]=_[_0xadda('0x4c')](_0x1914cd[_0xadda('0x47')],{'$or':_[_0xadda('0x4e')](_0x1914cd['attributes'],function(_0x405edb){var _0x58e621={};_0x58e621[_0x405edb]={'$like':'%'+_0x3b68c9[_0xadda('0x3d')][_0xadda('0x4d')]+'%'};return _0x58e621;})});}_0x1914cd=_[_0xadda('0x4c')]({},_0x1914cd,_0x3b68c9['options']);return db[_0xadda('0xc5')][_0xadda('0x69')]({'where':_0x1914cd[_0xadda('0x47')]})['then'](function(_0x1d2630){_0x15604e[_0xadda('0x69')]=_0x1d2630;if(_0x3b68c9[_0xadda('0x3d')][_0xadda('0x52')]){_0x1914cd['include']=[{'all':!![]}];}return db['ChatOfflineMessage'][_0xadda('0x6e')](_0x1914cd);})[_0xadda('0x31')](function(_0x52ef7d){_0x15604e[_0xadda('0x53')]=_0x52ef7d;return _0x15604e;});}})['then'](respondWithFilteredResult(_0xbaf658,_0x1914cd))[_0xadda('0x26')](handleError(_0xbaf658,null));};exports[_0xadda('0x10a')]=function(_0x5a0fbd,_0x43385f,_0x28c79e){return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0x5a0fbd[_0xadda('0x61')]['id']}})['then'](handleEntityNotFound(_0x43385f,null))[_0xadda('0x31')](function(_0x4a6833){if(_0x4a6833){return _0x4a6833[_0xadda('0x10a')](_0x5a0fbd[_0xadda('0x60')][_0xadda('0x6f')],_[_0xadda('0x101')](_0x5a0fbd[_0xadda('0x60')],[_0xadda('0x6f'),'id'])||{})[_0xadda('0x10b')](function(_0x1bcb89){for(var _0x30a92b=0x0;_0x30a92b<_0x5a0fbd[_0xadda('0x60')][_0xadda('0x6f')][_0xadda('0x43')];_0x30a92b+=0x1){socket['emit'](_0xadda('0x10c'),{'UserId':_0x5a0fbd[_0xadda('0x60')][_0xadda('0x6f')][_0x30a92b],'ChatWebsiteId':_0x5a0fbd[_0xadda('0x61')]['id']});}return _0x1bcb89;});}})['then'](respondWithResult(_0x43385f,null))[_0xadda('0x26')](handleError(_0x43385f,null));};exports[_0xadda('0x10d')]=function(_0xd524f8,_0x3e683b,_0x2736f1){var _0x49d948;return db[_0xadda('0x3a')][_0xadda('0x57')]({'where':{'id':_0xd524f8[_0xadda('0x61')]['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x3e683b,null))[_0xadda('0x31')](function(_0xdabdc7){if(_0xdabdc7){return _0xdabdc7['removeAgents'](_0xd524f8[_0xadda('0x3d')][_0xadda('0x6f')])[_0xadda('0x31')](function(_0x536c18){if(_[_0xadda('0x10e')](_0xd524f8['query'][_0xadda('0x6f')])){for(var _0x49f50f=0x0;_0x49f50f<_0xd524f8[_0xadda('0x3d')][_0xadda('0x6f')][_0xadda('0x43')];_0x49f50f+=0x1){socket[_0xadda('0x10f')](_0xadda('0x110'),{'UserId':_0xd524f8['query'][_0xadda('0x6f')][_0x49f50f],'ChatWebsiteId':_0xd524f8[_0xadda('0x61')]['id']});}}else{socket[_0xadda('0x10f')](_0xadda('0x110'),{'UserId':_0xd524f8[_0xadda('0x3d')][_0xadda('0x6f')],'ChatWebsiteId':_0xd524f8[_0xadda('0x61')]['id']});}});}})[_0xadda('0x31')](respondWithStatusCode(_0x3e683b,null))[_0xadda('0x26')](handleError(_0x3e683b,null));};exports[_0xadda('0x111')]=function(_0x880100,_0x49d8b0,_0x1701bf){var _0x3f0ab0={};var _0xd79d82={};var _0x5a0008;var _0x48876c;return db[_0xadda('0x3a')][_0xadda('0x65')]({'where':{'id':_0x880100['params']['id']}})[_0xadda('0x31')](handleEntityNotFound(_0x49d8b0,null))[_0xadda('0x31')](function(_0x358ca4){if(_0x358ca4){_0x5a0008=_0x358ca4;_0xd79d82['model']=_['keys'](db[_0xadda('0xd5')][_0xadda('0x55')]);_0xd79d82['query']=_[_0xadda('0x3c')](_0x880100['query']);_0xd79d82['filters']=_[_0xadda('0x40')](_0xd79d82[_0xadda('0x3b')],_0xd79d82[_0xadda('0x3d')]);_0x3f0ab0['attributes']=_[_0xadda('0x40')](_0xd79d82[_0xadda('0x3b')],qs[_0xadda('0x41')](_0x880100['query']['fields']));_0x3f0ab0[_0xadda('0x42')]=_0x3f0ab0['attributes'][_0xadda('0x43')]?_0x3f0ab0[_0xadda('0x42')]:_0xd79d82[_0xadda('0x3b')];_0x3f0ab0[_0xadda('0x45')]=qs[_0xadda('0x46')](_0x880100['query'][_0xadda('0x46')]);_0x3f0ab0['where']=qs[_0xadda('0x48')](_['pick'](_0x880100[_0xadda('0x3d')],_0xd79d82[_0xadda('0x48')]));if(_0x880100[_0xadda('0x3d')][_0xadda('0x4d')]){_0x3f0ab0[_0xadda('0x47')]=_['merge'](_0x3f0ab0[_0xadda('0x47')],{'$or':_[_0xadda('0x4e')](_0x3f0ab0[_0xadda('0x42')],function(_0x2abc2a){var _0x12247b={};_0x12247b[_0x2abc2a]={'$like':'%'+_0x880100[_0xadda('0x3d')][_0xadda('0x4d')]+'%'};return _0x12247b;})});}_0x3f0ab0=_[_0xadda('0x4c')]({},_0x3f0ab0,_0x880100['options']);return _0x5a0008['getAgents'](_0x3f0ab0);}})[_0xadda('0x31')](function(_0x3be7e0){if(_0x3be7e0){_0x48876c=_0x3be7e0[_0xadda('0x43')];if(!_0x880100['query'][_0xadda('0x67')](_0xadda('0x44'))){_0x3f0ab0[_0xadda('0x2a')]=qs[_0xadda('0x2a')](_0x880100[_0xadda('0x3d')][_0xadda('0x2a')]);_0x3f0ab0[_0xadda('0x29')]=qs[_0xadda('0x29')](_0x880100[_0xadda('0x3d')]['offset']);}return _0x5a0008[_0xadda('0x111')](_0x3f0ab0);}})[_0xadda('0x31')](function(_0x29bd4f){if(_0x29bd4f){return _0x29bd4f?{'count':_0x48876c,'rows':_0x29bd4f}:null;}})[_0xadda('0x31')](respondWithResult(_0x49d8b0,null))[_0xadda('0x26')](handleError(_0x49d8b0,null));};
\ No newline at end of file
+var _0xb64f=['list','orderBy','priority','asc','ListId','contact','firstName','lastName','customerIp','referer','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','interaction','spread','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','Start','startRouting','EventManager','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','defaults','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','ChatOfflineMessage','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','auth','pass','sendMail','email','offlineMessageSubject','addInteraction','omit','Owner','fullname','internal','Tag','Tags','tag','timezone','iftime\x20%s,%s','iftime\x20%s','interval','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','getSnippet','Interval','Intervals','getProactiveActions','getLicense','virtual','License','increment','chatLicenseExceeded','all','server/files/chat/iframe.js','utf8','remote','x-real-ip','alignment','verticalAlignment','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','chatProactiveAction','addProactiveActions','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','addAgents','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','emit','getAgents','User','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','client','http','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','end','status','json','count','offset','set','Content-Range','apply','reject','save','then','destroy','ChatWebsites','UserProfileResource','stack','name','send','index','ChatWebsite','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','limit','order','sort','pick','add','day','merge','where','filter','type','key','field','includeAll','include','findAll','rows','show','params','options','find','create','body','user','get','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ChatWebsiteId','getDispositions','findOne','Disposition','nolimit','map','removeDispositions','CannedAnswer','getAnswers','removeAnswers','ids','addLogo','file','filename','agentAvatar','customerAvatar','addSystemAvatar','getLogo','join','root','../../config/license/util','isNil','sitepic','existsSync','server/files/images/logos/','download','server/files/images/avatars/','showCustomerAvatar','getSystemAvatar','systemAvatar','notify','user-agent-parser','setUA','headers','user-agent','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications'];(function(_0x41de6c,_0x313128){var _0x231c66=function(_0x474c22){while(--_0x474c22){_0x41de6c['push'](_0x41de6c['shift']());}};_0x231c66(++_0x313128);}(_0xb64f,0x186));var _0xfb64=function(_0x2da45d,_0x35397b){_0x2da45d=_0x2da45d-0x0;var _0x1012a0=_0xb64f[_0x2da45d];return _0x1012a0;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xfb64('0x0'));var rimraf=require(_0xfb64('0x1'));var zipdir=require(_0xfb64('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfb64('0x3'));var moment=require('moment');var BPromise=require(_0xfb64('0x4'));var Mustache=require(_0xfb64('0x5'));var util=require('util');var path=require(_0xfb64('0x6'));var sox=require(_0xfb64('0x7'));var csv=require(_0xfb64('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xfb64('0x9'));var squel=require(_0xfb64('0xa'));var crypto=require(_0xfb64('0xb'));var jsforce=require(_0xfb64('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfb64('0x8'));var querystring=require(_0xfb64('0xd'));var Papa=require(_0xfb64('0xe'));var Redis=require(_0xfb64('0xf'));var qs=require(_0xfb64('0x10'));var logger=require(_0xfb64('0x11'))(_0xfb64('0x12'));var utils=require('../../config/utils');var config=require(_0xfb64('0x13'));var db=require(_0xfb64('0x14'))['db'];config[_0xfb64('0x15')]=_['defaults'](config[_0xfb64('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0xfb64('0x16'))(new Redis(config['redis']));require(_0xfb64('0x17'))[_0xfb64('0x18')](socket);var jayson=require(_0xfb64('0x19'));var client=jayson[_0xfb64('0x1a')][_0xfb64('0x1b')]({'port':0x232c});var client9002=jayson[_0xfb64('0x1a')][_0xfb64('0x1b')]({'port':0x232a});var client9003=jayson[_0xfb64('0x1a')]['http']({'port':0x232b});function respondWithRpcPromise(_0x54f51d,_0x586e55,_0x5ca9cc,_0x305e43){return new BPromise(function(_0x2eb850,_0xca0da9){var _0x1719f8=_0x305e43||client;return _0x1719f8[_0xfb64('0x1c')](_0x54f51d,_0x5ca9cc)['then'](function(_0x2e74da){logger[_0xfb64('0x1d')](_0xfb64('0x1e'),_0x586e55,_0xfb64('0x1f'));logger['debug'](_0xfb64('0x20'),_0x586e55,_0xfb64('0x1f'),JSON[_0xfb64('0x21')](_0x2e74da));if(_0x2e74da['error']){if(_0x2e74da[_0xfb64('0x22')][_0xfb64('0x23')]===0x1f4){logger[_0xfb64('0x22')]('ChatWebsite,\x20%s,\x20%s',_0x586e55,_0x2e74da['error'][_0xfb64('0x24')]);return _0xca0da9(_0x2e74da[_0xfb64('0x22')][_0xfb64('0x24')]);}logger[_0xfb64('0x22')](_0xfb64('0x1e'),_0x586e55,_0x2e74da[_0xfb64('0x22')][_0xfb64('0x24')]);return _0x2eb850(_0x2e74da[_0xfb64('0x22')][_0xfb64('0x24')]);}else{logger[_0xfb64('0x1d')](_0xfb64('0x1e'),_0x586e55,_0xfb64('0x1f'));_0x2eb850(_0x2e74da['result']['message']);}})[_0xfb64('0x25')](function(_0x110f3b){logger[_0xfb64('0x22')]('ChatWebsite,\x20%s,\x20%s',_0x586e55,_0x110f3b);_0xca0da9(_0x110f3b);});});}function respondWithStatusCode(_0xdc9637,_0x3b08a3){_0x3b08a3=_0x3b08a3||0xcc;return function(_0x397a37){if(_0x397a37){return _0xdc9637[_0xfb64('0x26')](_0x3b08a3);}return _0xdc9637['status'](_0x3b08a3)[_0xfb64('0x27')]();};}function respondWithResult(_0x3912fb,_0x59f6a6){_0x59f6a6=_0x59f6a6||0xc8;return function(_0x4cb8ce){if(_0x4cb8ce){return _0x3912fb[_0xfb64('0x28')](_0x59f6a6)[_0xfb64('0x29')](_0x4cb8ce);}};}function respondWithFilteredResult(_0x59a4d9,_0x3f4e23){return function(_0x319bb1){if(_0x319bb1){var _0x300a39=_0x319bb1[_0xfb64('0x2a')],_0x1375ce=_0x3f4e23['offset'],_0x260cc2=_0x3f4e23[_0xfb64('0x2b')]+_0x3f4e23['limit'],_0x57887c;if(_0x260cc2>=_0x300a39){_0x260cc2=_0x300a39;_0x57887c=0xc8;}else{_0x57887c=0xce;}_0x59a4d9[_0xfb64('0x28')](_0x57887c);return _0x59a4d9[_0xfb64('0x2c')](_0xfb64('0x2d'),_0x1375ce+'-'+_0x260cc2+'/'+_0x300a39)[_0xfb64('0x29')](_0x319bb1);}return null;};}function patchUpdates(_0x3b093d){return function(_0x43393c){try{jsonpatch[_0xfb64('0x2e')](_0x43393c,_0x3b093d,!![]);}catch(_0x359283){return BPromise[_0xfb64('0x2f')](_0x359283);}return _0x43393c[_0xfb64('0x30')]();};}function saveUpdates(_0xfa607e,_0x2b6fd2){return function(_0x3c9267){if(_0x3c9267){return _0x3c9267['update'](_0xfa607e)[_0xfb64('0x31')](function(_0x40811d){return _0x40811d;});}return null;};}function removeEntity(_0x35c5fd,_0x77b1b3){return function(_0x280e6a){if(_0x280e6a){return _0x280e6a[_0xfb64('0x32')]()[_0xfb64('0x31')](function(){var _0x2adcab=_0x280e6a['get']({'plain':!![]});var _0x36f3b5=_0xfb64('0x33');return db[_0xfb64('0x34')][_0xfb64('0x32')]({'where':{'type':_0x36f3b5,'resourceId':_0x2adcab['id']}})[_0xfb64('0x31')](function(){return _0x280e6a;});})[_0xfb64('0x31')](function(){_0x35c5fd['status'](0xcc)[_0xfb64('0x27')]();});}};}function handleEntityNotFound(_0x35bd51,_0xff8fff){return function(_0x3d47a3){if(!_0x3d47a3){_0x35bd51[_0xfb64('0x26')](0x194);}return _0x3d47a3;};}function handleError(_0x4b8a88,_0x3b4655){_0x3b4655=_0x3b4655||0x1f4;return function(_0x2c252e){logger[_0xfb64('0x22')](_0x2c252e[_0xfb64('0x35')]);if(_0x2c252e[_0xfb64('0x36')]){delete _0x2c252e[_0xfb64('0x36')];}_0x4b8a88['status'](_0x3b4655)[_0xfb64('0x37')](_0x2c252e);};}exports[_0xfb64('0x38')]=function(_0x5754f3,_0x4cd047){var _0xa24ea2={},_0x30efd9={},_0x45836f={'count':0x0,'rows':[]};var _0x714126=db[_0xfb64('0x39')][_0xfb64('0x3a')];_0x30efd9[_0xfb64('0x3b')]=_[_0xfb64('0x3c')](_0x714126);var _0x4713ff={'dateStart':_0x5754f3[_0xfb64('0x3d')][_0xfb64('0x3e')],'dateEnd':_0x5754f3[_0xfb64('0x3d')][_0xfb64('0x3f')]};delete _0x5754f3[_0xfb64('0x3d')][_0xfb64('0x3e')];delete _0x5754f3[_0xfb64('0x3d')][_0xfb64('0x3f')];_0x30efd9['query']=_[_0xfb64('0x3c')](_0x5754f3[_0xfb64('0x3d')]);_0x30efd9[_0xfb64('0x40')]=_['intersection'](_0x30efd9['model'],_0x30efd9[_0xfb64('0x3d')]);_0xa24ea2['attributes']=_[_0xfb64('0x41')](_0x30efd9['model'],qs[_0xfb64('0x42')](_0x5754f3['query'][_0xfb64('0x42')]));_0xa24ea2[_0xfb64('0x43')]=_0xa24ea2[_0xfb64('0x43')][_0xfb64('0x44')]?_0xa24ea2[_0xfb64('0x43')]:_0x30efd9['model'];if(!_0x5754f3['query'][_0xfb64('0x45')]('nolimit')){_0xa24ea2[_0xfb64('0x46')]=qs[_0xfb64('0x46')](_0x5754f3[_0xfb64('0x3d')][_0xfb64('0x46')]);_0xa24ea2['offset']=qs[_0xfb64('0x2b')](_0x5754f3[_0xfb64('0x3d')][_0xfb64('0x2b')]);}_0xa24ea2[_0xfb64('0x47')]=qs[_0xfb64('0x48')](_0x5754f3[_0xfb64('0x3d')][_0xfb64('0x48')]);_0xa24ea2['where']=qs['filters'](_[_0xfb64('0x49')](_0x5754f3[_0xfb64('0x3d')],_0x30efd9[_0xfb64('0x40')]));if(_0x4713ff['dateStart']){if(_0x4713ff['dateEnd']){_0x4713ff[_0xfb64('0x3f')]=moment(_0x4713ff[_0xfb64('0x3f')])[_0xfb64('0x4a')](0x1,_0xfb64('0x4b'));}else{_0x4713ff[_0xfb64('0x3f')]=moment(_0x4713ff[_0xfb64('0x3e')])[_0xfb64('0x4a')](0x1,'day');}_[_0xfb64('0x4c')](_0xa24ea2[_0xfb64('0x4d')],{'createdAt':{'$gte':_0x4713ff[_0xfb64('0x3e')],'$lte':_0x4713ff[_0xfb64('0x3f')]}});}if(_0x5754f3[_0xfb64('0x3d')][_0xfb64('0x4e')]){_0xa24ea2[_0xfb64('0x4d')]=_[_0xfb64('0x4c')](_0xa24ea2['where'],{'$or':_['map'](_0x714126,function(_0x4c694c){if(_0x4c694c[_0xfb64('0x4f')][_0xfb64('0x50')]!=='VIRTUAL'){var _0xfe6965={};_0xfe6965[_0x4c694c[_0xfb64('0x51')]]={'$like':'%'+_0x5754f3[_0xfb64('0x3d')][_0xfb64('0x4e')]+'%'};return _0xfe6965;}})});}_0xa24ea2=_[_0xfb64('0x4c')]({},_0xa24ea2,_0x5754f3['options']);var _0x25c240={'where':_0xa24ea2[_0xfb64('0x4d')]};return db[_0xfb64('0x39')]['count'](_0x25c240)[_0xfb64('0x31')](function(_0x126c6f){_0x45836f[_0xfb64('0x2a')]=_0x126c6f;if(_0x5754f3[_0xfb64('0x3d')][_0xfb64('0x52')]){_0xa24ea2[_0xfb64('0x53')]=[{'all':!![]}];}return db[_0xfb64('0x39')][_0xfb64('0x54')](_0xa24ea2);})[_0xfb64('0x31')](function(_0x355826){_0x45836f[_0xfb64('0x55')]=_0x355826;return _0x45836f;})[_0xfb64('0x31')](respondWithFilteredResult(_0x4cd047,_0xa24ea2))[_0xfb64('0x25')](handleError(_0x4cd047,null));};exports[_0xfb64('0x56')]=function(_0x58c940,_0x20c7e5){var _0x57fd0e={'raw':![],'where':{'id':_0x58c940[_0xfb64('0x57')]['id']}},_0x3f6e30={};_0x3f6e30[_0xfb64('0x3b')]=_['keys'](db[_0xfb64('0x39')][_0xfb64('0x3a')]);_0x3f6e30[_0xfb64('0x3d')]=_[_0xfb64('0x3c')](_0x58c940[_0xfb64('0x3d')]);_0x3f6e30[_0xfb64('0x40')]=_[_0xfb64('0x41')](_0x3f6e30[_0xfb64('0x3b')],_0x3f6e30[_0xfb64('0x3d')]);_0x57fd0e['attributes']=_[_0xfb64('0x41')](_0x3f6e30['model'],qs[_0xfb64('0x42')](_0x58c940[_0xfb64('0x3d')][_0xfb64('0x42')]));_0x57fd0e[_0xfb64('0x43')]=_0x57fd0e['attributes'][_0xfb64('0x44')]?_0x57fd0e[_0xfb64('0x43')]:_0x3f6e30['model'];if(_0x58c940['query'][_0xfb64('0x52')]){_0x57fd0e[_0xfb64('0x53')]=[{'all':!![]}];}_0x57fd0e=_[_0xfb64('0x4c')]({},_0x57fd0e,_0x58c940[_0xfb64('0x58')]);return db[_0xfb64('0x39')][_0xfb64('0x59')](_0x57fd0e)[_0xfb64('0x31')](handleEntityNotFound(_0x20c7e5,null))[_0xfb64('0x31')](respondWithResult(_0x20c7e5,null))[_0xfb64('0x25')](handleError(_0x20c7e5,null));};exports[_0xfb64('0x5a')]=function(_0x2f156a,_0x3b17d2){return db[_0xfb64('0x39')][_0xfb64('0x5a')](_0x2f156a[_0xfb64('0x5b')],{})[_0xfb64('0x31')](function(_0x5ddf08){var _0x4025ec=_0x2f156a[_0xfb64('0x5c')][_0xfb64('0x5d')]({'plain':!![]});if(!_0x4025ec)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4025ec[_0xfb64('0x5e')]==='user'){var _0x3c5cf7=_0x5ddf08[_0xfb64('0x5d')]({'plain':!![]});var _0x2a6857='ChatWebsites';return db['UserProfileSection'][_0xfb64('0x59')]({'where':{'name':_0x2a6857,'userProfileId':_0x4025ec[_0xfb64('0x5f')]},'raw':!![]})[_0xfb64('0x31')](function(_0x456f0a){if(_0x456f0a&&_0x456f0a['autoAssociation']===0x0){return db[_0xfb64('0x34')]['create']({'name':_0x3c5cf7[_0xfb64('0x36')],'resourceId':_0x3c5cf7['id'],'type':_0x456f0a[_0xfb64('0x36')],'sectionId':_0x456f0a['id']},{})[_0xfb64('0x31')](function(){return _0x5ddf08;});}else{return _0x5ddf08;}})['catch'](function(_0x4e356d){logger[_0xfb64('0x22')](_0xfb64('0x60'),_0x4e356d);throw _0x4e356d;});}return _0x5ddf08;})[_0xfb64('0x31')](respondWithResult(_0x3b17d2,0xc9))[_0xfb64('0x25')](handleError(_0x3b17d2,null));};exports[_0xfb64('0x61')]=function(_0x2f0fd2,_0x3fd697){if(_0x2f0fd2[_0xfb64('0x5b')]['id']){delete _0x2f0fd2[_0xfb64('0x5b')]['id'];}return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x2f0fd2[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x3fd697,null))[_0xfb64('0x31')](saveUpdates(_0x2f0fd2[_0xfb64('0x5b')],null))['then'](respondWithResult(_0x3fd697,null))[_0xfb64('0x25')](handleError(_0x3fd697,null));};exports[_0xfb64('0x32')]=function(_0x51298b,_0x2e189f){return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x51298b[_0xfb64('0x57')]['id']}})['then'](handleEntityNotFound(_0x2e189f,null))[_0xfb64('0x31')](removeEntity(_0x2e189f,null))[_0xfb64('0x25')](handleError(_0x2e189f,null));};exports[_0xfb64('0x62')]=function(_0x39a725,_0x51725d){return db['ChatWebsite'][_0xfb64('0x62')]()[_0xfb64('0x31')](respondWithResult(_0x51725d,null))[_0xfb64('0x25')](handleError(_0x51725d,null));};exports[_0xfb64('0x63')]=function(_0x33dc9d,_0x4866c0,_0x2ca348){if(_0x33dc9d['body']['id']){delete _0x33dc9d[_0xfb64('0x5b')]['id'];}return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x33dc9d[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x4866c0,null))[_0xfb64('0x31')](function(_0x3776c1){if(_0x3776c1){_0x33dc9d[_0xfb64('0x5b')][_0xfb64('0x64')]=_0x3776c1['id'];return db['Disposition'][_0xfb64('0x5a')](_0x33dc9d[_0xfb64('0x5b')]);}})['then'](respondWithResult(_0x4866c0,null))[_0xfb64('0x25')](handleError(_0x4866c0,null));};exports[_0xfb64('0x65')]=function(_0x124e2f,_0x202b59,_0x5a7ee5){var _0x314d7d={'raw':![],'where':{}};var _0x16d2ed={};var _0x29bce5={'count':0x0,'rows':[]};return db[_0xfb64('0x39')][_0xfb64('0x66')]({'where':{'id':_0x124e2f[_0xfb64('0x57')]['id']}})['then'](handleEntityNotFound(_0x202b59,null))[_0xfb64('0x31')](function(_0x4dae2f){if(_0x4dae2f){_0x16d2ed['model']=_[_0xfb64('0x3c')](db[_0xfb64('0x67')][_0xfb64('0x3a')]);_0x16d2ed[_0xfb64('0x3d')]=_['keys'](_0x124e2f[_0xfb64('0x3d')]);_0x16d2ed[_0xfb64('0x40')]=_[_0xfb64('0x41')](_0x16d2ed[_0xfb64('0x3b')],_0x16d2ed[_0xfb64('0x3d')]);_0x314d7d[_0xfb64('0x43')]=_[_0xfb64('0x41')](_0x16d2ed[_0xfb64('0x3b')],qs['fields'](_0x124e2f[_0xfb64('0x3d')][_0xfb64('0x42')]));_0x314d7d[_0xfb64('0x43')]=_0x314d7d[_0xfb64('0x43')][_0xfb64('0x44')]?_0x314d7d[_0xfb64('0x43')]:_0x16d2ed['model'];if(!_0x124e2f[_0xfb64('0x3d')][_0xfb64('0x45')](_0xfb64('0x68'))){_0x314d7d[_0xfb64('0x46')]=qs[_0xfb64('0x46')](_0x124e2f['query'][_0xfb64('0x46')]);_0x314d7d[_0xfb64('0x2b')]=qs['offset'](_0x124e2f[_0xfb64('0x3d')][_0xfb64('0x2b')]);}_0x314d7d[_0xfb64('0x47')]=qs['sort'](_0x124e2f['query'][_0xfb64('0x48')]);_0x314d7d[_0xfb64('0x4d')]=qs[_0xfb64('0x40')](_[_0xfb64('0x49')](_0x124e2f['query'],_0x16d2ed[_0xfb64('0x40')]));_0x314d7d[_0xfb64('0x4d')]['ChatWebsiteId']=_0x4dae2f['id'];if(_0x124e2f[_0xfb64('0x3d')]['filter']){_0x314d7d[_0xfb64('0x4d')]=_[_0xfb64('0x4c')](_0x314d7d[_0xfb64('0x4d')],{'$or':_[_0xfb64('0x69')](_0x314d7d[_0xfb64('0x43')],function(_0xe9775f){var _0x5f0f41={};_0x5f0f41[_0xe9775f]={'$like':'%'+_0x124e2f[_0xfb64('0x3d')][_0xfb64('0x4e')]+'%'};return _0x5f0f41;})});}_0x314d7d=_[_0xfb64('0x4c')]({},_0x314d7d,_0x124e2f[_0xfb64('0x58')]);return db['Disposition']['count']({'where':_0x314d7d[_0xfb64('0x4d')]})['then'](function(_0x3a8713){_0x29bce5[_0xfb64('0x2a')]=_0x3a8713;if(_0x124e2f['query'][_0xfb64('0x52')]){_0x314d7d[_0xfb64('0x53')]=[{'all':!![]}];}return db['Disposition'][_0xfb64('0x54')](_0x314d7d);})[_0xfb64('0x31')](function(_0x4b9510){_0x29bce5['rows']=_0x4b9510;return _0x29bce5;});}})[_0xfb64('0x31')](respondWithFilteredResult(_0x202b59,_0x314d7d))[_0xfb64('0x25')](handleError(_0x202b59,null));};exports[_0xfb64('0x6a')]=function(_0x37dd5f,_0x5f1174,_0x350495){var _0x4da56e;return db[_0xfb64('0x39')]['find']({'where':{'id':_0x37dd5f[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x5f1174,null))['then'](function(_0x3f570e){if(_0x3f570e){return _0x3f570e[_0xfb64('0x6a')](_0x37dd5f[_0xfb64('0x3d')]['ids']);}})['then'](respondWithStatusCode(_0x5f1174,null))[_0xfb64('0x25')](handleError(_0x5f1174,null));};exports['addAnswer']=function(_0x14af0e,_0x20bb2b,_0x50fcd6){if(_0x14af0e[_0xfb64('0x5b')]['id']){delete _0x14af0e[_0xfb64('0x5b')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x14af0e[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x20bb2b,null))[_0xfb64('0x31')](function(_0x347a7f){if(_0x347a7f){_0x14af0e[_0xfb64('0x5b')][_0xfb64('0x64')]=_0x347a7f['id'];return db[_0xfb64('0x6b')][_0xfb64('0x5a')](_0x14af0e['body']);}})[_0xfb64('0x31')](respondWithResult(_0x20bb2b,null))[_0xfb64('0x25')](handleError(_0x20bb2b,null));};exports[_0xfb64('0x6c')]=function(_0x4b7331,_0x54643f,_0x28f61c){var _0x55e7c4={'raw':![],'where':{}};var _0x54ab68={};var _0x41c738={'count':0x0,'rows':[]};return db[_0xfb64('0x39')]['findOne']({'where':{'id':_0x4b7331[_0xfb64('0x57')]['id']}})['then'](handleEntityNotFound(_0x54643f,null))[_0xfb64('0x31')](function(_0x3cdf9a){if(_0x3cdf9a){_0x54ab68[_0xfb64('0x3b')]=_['keys'](db[_0xfb64('0x6b')][_0xfb64('0x3a')]);_0x54ab68[_0xfb64('0x3d')]=_[_0xfb64('0x3c')](_0x4b7331[_0xfb64('0x3d')]);_0x54ab68[_0xfb64('0x40')]=_[_0xfb64('0x41')](_0x54ab68[_0xfb64('0x3b')],_0x54ab68[_0xfb64('0x3d')]);_0x55e7c4[_0xfb64('0x43')]=_[_0xfb64('0x41')](_0x54ab68[_0xfb64('0x3b')],qs[_0xfb64('0x42')](_0x4b7331[_0xfb64('0x3d')][_0xfb64('0x42')]));_0x55e7c4[_0xfb64('0x43')]=_0x55e7c4[_0xfb64('0x43')][_0xfb64('0x44')]?_0x55e7c4['attributes']:_0x54ab68[_0xfb64('0x3b')];if(!_0x4b7331[_0xfb64('0x3d')][_0xfb64('0x45')](_0xfb64('0x68'))){_0x55e7c4[_0xfb64('0x46')]=qs['limit'](_0x4b7331[_0xfb64('0x3d')][_0xfb64('0x46')]);_0x55e7c4['offset']=qs[_0xfb64('0x2b')](_0x4b7331[_0xfb64('0x3d')][_0xfb64('0x2b')]);}_0x55e7c4[_0xfb64('0x47')]=qs[_0xfb64('0x48')](_0x4b7331[_0xfb64('0x3d')]['sort']);_0x55e7c4['where']=qs['filters'](_[_0xfb64('0x49')](_0x4b7331[_0xfb64('0x3d')],_0x54ab68[_0xfb64('0x40')]));_0x55e7c4[_0xfb64('0x4d')]['ChatWebsiteId']=_0x3cdf9a['id'];if(_0x4b7331[_0xfb64('0x3d')]['filter']){_0x55e7c4['where']=_[_0xfb64('0x4c')](_0x55e7c4[_0xfb64('0x4d')],{'$or':_[_0xfb64('0x69')](_0x55e7c4[_0xfb64('0x43')],function(_0x519ab6){var _0xe5ebc1={};_0xe5ebc1[_0x519ab6]={'$like':'%'+_0x4b7331[_0xfb64('0x3d')][_0xfb64('0x4e')]+'%'};return _0xe5ebc1;})});}_0x55e7c4=_[_0xfb64('0x4c')]({},_0x55e7c4,_0x4b7331[_0xfb64('0x58')]);return db['CannedAnswer'][_0xfb64('0x2a')]({'where':_0x55e7c4[_0xfb64('0x4d')]})[_0xfb64('0x31')](function(_0xac1c9c){_0x41c738[_0xfb64('0x2a')]=_0xac1c9c;if(_0x4b7331[_0xfb64('0x3d')][_0xfb64('0x52')]){_0x55e7c4[_0xfb64('0x53')]=[{'all':!![]}];}return db[_0xfb64('0x6b')]['findAll'](_0x55e7c4);})[_0xfb64('0x31')](function(_0x515652){_0x41c738[_0xfb64('0x55')]=_0x515652;return _0x41c738;});}})[_0xfb64('0x31')](respondWithFilteredResult(_0x54643f,_0x55e7c4))[_0xfb64('0x25')](handleError(_0x54643f,null));};exports[_0xfb64('0x6d')]=function(_0x52fc38,_0x154e36,_0x2fe6cd){var _0x38ad32;return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x52fc38[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x154e36,null))['then'](function(_0x45d17d){if(_0x45d17d){return _0x45d17d['removeAnswers'](_0x52fc38['query'][_0xfb64('0x6e')]);}})[_0xfb64('0x31')](respondWithStatusCode(_0x154e36,null))['catch'](handleError(_0x154e36,null));};exports[_0xfb64('0x6f')]=function(_0x3581a8,_0x2ecd60,_0x4b2aeb){_0x3581a8[_0xfb64('0x5b')]['sitepic']=_0x3581a8[_0xfb64('0x70')][_0xfb64('0x71')];return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x3581a8[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x2ecd60,null))[_0xfb64('0x31')](saveUpdates(_0x3581a8[_0xfb64('0x5b')],null))['then'](respondWithResult(_0x2ecd60,null))[_0xfb64('0x25')](handleError(_0x2ecd60,null));};exports['addAvatar']=function(_0x1ef221,_0x10e206,_0x259245){_0x1ef221[_0xfb64('0x5b')][_0xfb64('0x72')]=_0x1ef221[_0xfb64('0x70')][_0xfb64('0x71')];return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x1ef221[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x10e206,null))[_0xfb64('0x31')](saveUpdates(_0x1ef221['body'],null))['then'](respondWithResult(_0x10e206,null))[_0xfb64('0x25')](handleError(_0x10e206,null));};exports['addCustomerAvatar']=function(_0x4b9088,_0x143901,_0x14f401){_0x4b9088[_0xfb64('0x5b')][_0xfb64('0x73')]=_0x4b9088[_0xfb64('0x70')][_0xfb64('0x71')];return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x4b9088[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x143901,null))[_0xfb64('0x31')](saveUpdates(_0x4b9088['body'],null))[_0xfb64('0x31')](respondWithResult(_0x143901,null))[_0xfb64('0x25')](handleError(_0x143901,null));};exports[_0xfb64('0x74')]=function(_0x35e4b2,_0x32d90b,_0x39e014){_0x35e4b2[_0xfb64('0x5b')]['systemAvatar']=_0x35e4b2[_0xfb64('0x70')]['filename'];return db['ChatWebsite'][_0xfb64('0x59')]({'where':{'id':_0x35e4b2[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x32d90b,null))[_0xfb64('0x31')](saveUpdates(_0x35e4b2[_0xfb64('0x5b')],null))['then'](respondWithResult(_0x32d90b,null))['catch'](handleError(_0x32d90b,null));};exports[_0xfb64('0x75')]=function(_0x273f66,_0x65652b,_0x1799c7){var _0xf198ae=path[_0xfb64('0x76')](config[_0xfb64('0x77')],'server/files/images/logos/default_logo.png');var _0x1e17a1={'where':{'id':_0x273f66[_0xfb64('0x57')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x21be13=![];return require(_0xfb64('0x78'))['getLicense']()[_0xfb64('0x31')](function(_0xa5e2fb){if(_0xa5e2fb){_0x21be13=_0xa5e2fb['custom'];}})[_0xfb64('0x31')](function(){return db[_0xfb64('0x39')][_0xfb64('0x59')](_0x1e17a1);})[_0xfb64('0x31')](handleEntityNotFound(_0x65652b,null))['then'](function(_0x2dcf49){if(_0x2dcf49){if(!_[_0xfb64('0x79')](_0x2dcf49[_0xfb64('0x7a')])){if(fs[_0xfb64('0x7b')](path[_0xfb64('0x76')](config['root'],_0xfb64('0x7c'),_0x2dcf49[_0xfb64('0x7a')]))&&_0x21be13){_0xf198ae=path[_0xfb64('0x76')](config[_0xfb64('0x77')],_0xfb64('0x7c'),_0x2dcf49[_0xfb64('0x7a')]);}}return _0x65652b[_0xfb64('0x7d')](_0xf198ae);}})[_0xfb64('0x25')](handleError(_0x65652b,null));};exports['getAvatar']=function(_0x1c1d61,_0x42e0ff,_0x542859){var _0xf9039a=path[_0xfb64('0x76')](config[_0xfb64('0x77')],'server/files/images/avatars/default_avatar.png');var _0x1cb3d8={'where':{'id':_0x1c1d61[_0xfb64('0x57')]['id']},'attributes':['id',_0xfb64('0x72')],'raw':!![]};return db[_0xfb64('0x39')][_0xfb64('0x59')](_0x1cb3d8)['then'](handleEntityNotFound(_0x42e0ff,null))[_0xfb64('0x31')](function(_0x4e7548){if(_0x4e7548){if(!_[_0xfb64('0x79')](_0x4e7548['agentAvatar'])){if(fs[_0xfb64('0x7b')](path['join'](config['root'],_0xfb64('0x7e'),_0x4e7548[_0xfb64('0x72')]))){_0xf9039a=path['join'](config['root'],_0xfb64('0x7e'),_0x4e7548[_0xfb64('0x72')]);}}return _0x42e0ff[_0xfb64('0x7d')](_0xf9039a);}})['catch'](handleError(_0x42e0ff,null));};exports['getCustomerAvatar']=function(_0x1dcc16,_0x238778,_0x2f639c){var _0x3f54d1=path[_0xfb64('0x76')](config[_0xfb64('0x77')],'server/files/images/avatars/customer_avatar.png');var _0x38d12b={'where':{'id':_0x1dcc16[_0xfb64('0x57')]['id']},'attributes':['id',_0xfb64('0x73'),_0xfb64('0x7f')],'raw':!![]};return db['ChatWebsite']['find'](_0x38d12b)[_0xfb64('0x31')](handleEntityNotFound(_0x238778,null))[_0xfb64('0x31')](function(_0x4ffdcf){if(_0x4ffdcf){if(!_[_0xfb64('0x79')](_0x4ffdcf[_0xfb64('0x73')])){if(fs[_0xfb64('0x7b')](path[_0xfb64('0x76')](config[_0xfb64('0x77')],_0xfb64('0x7e'),_0x4ffdcf[_0xfb64('0x73')]))&&_0x4ffdcf['showCustomerAvatar']){_0x3f54d1=path[_0xfb64('0x76')](config['root'],_0xfb64('0x7e'),_0x4ffdcf[_0xfb64('0x73')]);}}return _0x238778[_0xfb64('0x7d')](_0x3f54d1);}})[_0xfb64('0x25')](handleError(_0x238778,null));};exports[_0xfb64('0x80')]=function(_0x59e5f3,_0x3ce684,_0x5b628a){var _0x53e5a5=path[_0xfb64('0x76')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x5c00ae={'where':{'id':_0x59e5f3[_0xfb64('0x57')]['id']},'attributes':['id',_0xfb64('0x81')],'raw':!![]};return db[_0xfb64('0x39')][_0xfb64('0x59')](_0x5c00ae)[_0xfb64('0x31')](handleEntityNotFound(_0x3ce684,null))[_0xfb64('0x31')](function(_0x3bcc99){if(_0x3bcc99){if(!_['isNil'](_0x3bcc99['systemAvatar'])){if(fs[_0xfb64('0x7b')](path['join'](config[_0xfb64('0x77')],_0xfb64('0x7e'),_0x3bcc99[_0xfb64('0x81')]))){_0x53e5a5=path[_0xfb64('0x76')](config['root'],_0xfb64('0x7e'),_0x3bcc99[_0xfb64('0x81')]);}}return _0x3ce684[_0xfb64('0x7d')](_0x53e5a5);}})[_0xfb64('0x25')](handleError(_0x3ce684,null));};exports[_0xfb64('0x82')]=function(_0x3cede0,_0x4b44e5,_0x575947){var _0x2a752d=require(_0xfb64('0x83'));var _0x5ac2bd=new _0x2a752d();var _0xef7e5f=_0x5ac2bd[_0xfb64('0x84')](_0x3cede0[_0xfb64('0x85')][_0xfb64('0x86')])['getResult']();var _0x1ecf59={'body':_0x3cede0[_0xfb64('0x5b')],'channel':'chat'};var _0x312558=[];var _0x312377=[];var _0x10e7b5={};var _0x50ca7a=![];return db[_0xfb64('0x87')][_0xfb64('0x62')]()[_0xfb64('0x31')](function(_0xc28bd3){if(!_0xc28bd3){throw new db[(_0xfb64('0x88'))][(_0xfb64('0x89'))](_0xfb64('0x8a'));}_0x312558=_[_0xfb64('0x8b')](_[_0xfb64('0x3c')](_0xc28bd3),[_0xfb64('0x8c'),_0xfb64('0x8d')]);_0x312377=_[_0xfb64('0x8b')](_[_0xfb64('0x3c')](_0xc28bd3),['createdAt',_0xfb64('0x8d'),_0xfb64('0x8e'),'ListId']);if(_0x3cede0[_0xfb64('0x5b')]['id']){delete _0x3cede0[_0xfb64('0x5b')]['id'];}if(_[_0xfb64('0x79')](_0x3cede0[_0xfb64('0x5b')]['from'])){throw new db[(_0xfb64('0x88'))]['ValidationError'](_0xfb64('0x8f'));}if(_[_0xfb64('0x79')](_0x3cede0['body'][_0xfb64('0x5b')])||_0x3cede0['body'][_0xfb64('0x5b')]===''){throw new db['Sequelize']['ValidationError'](_0xfb64('0x90'));}if(_[_0xfb64('0x79')](_0x3cede0[_0xfb64('0x5b')]['mapKey'])){throw new db['Sequelize']['ValidationError'](_0xfb64('0x91')+_0x312377);}if(!_[_0xfb64('0x92')](_0x312377,_0x3cede0[_0xfb64('0x5b')][_0xfb64('0x93')])){throw new db[(_0xfb64('0x88'))][(_0xfb64('0x89'))](_0xfb64('0x94')+_0x312377);}_0x10e7b5[_0x3cede0['body'][_0xfb64('0x93')]]=_0x3cede0[_0xfb64('0x5b')][_0xfb64('0x95')];})[_0xfb64('0x31')](function(){return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x3cede0[_0xfb64('0x57')]['id']},'include':[{'model':db[_0xfb64('0x96')],'as':_0xfb64('0x97'),'include':[{'model':db['CmContact'],'as':_0xfb64('0x98'),'where':_0x10e7b5,'limit':0x1,'order':[[_0xfb64('0x8d'),_0xfb64('0x99')]]}]},{'model':db[_0xfb64('0x9a')],'as':_0xfb64('0x9b')}]});})[_0xfb64('0x31')](handleEntityNotFound(_0x4b44e5,null))['then'](function(_0x181f63){if(_0x181f63&&_0x181f63[_0xfb64('0x97')]){_0x1ecf59[_0xfb64('0x9c')]=_0x181f63;_0x1ecf59[_0xfb64('0x9d')]=_0x181f63[_0xfb64('0x9b')];_0x1ecf59[_0xfb64('0x9e')]=_0x181f63[_0xfb64('0x97')];_0x1ecf59[_0xfb64('0x9d')]=_[_0xfb64('0x9f')](_0x1ecf59[_0xfb64('0x9d')],[_0xfb64('0xa0')],[_0xfb64('0xa1')]);if(_0x1ecf59[_0xfb64('0x9c')]['Applications']){delete _0x1ecf59[_0xfb64('0x9c')][_0xfb64('0x9b')];}if(_0x1ecf59[_0xfb64('0x9c')][_0xfb64('0x97')]&&_0x1ecf59[_0xfb64('0x9c')][_0xfb64('0x97')][_0xfb64('0x98')][_0xfb64('0x44')]){return _0x1ecf59[_0xfb64('0x9c')]['List']['Contacts'][0x0];}var _0x48f7a2=_['defaults'](_0x3cede0[_0xfb64('0x5b')],{'firstName':_0x3cede0['body'][_0xfb64('0x95')],'ListId':_0x181f63[_0xfb64('0xa2')]});_0x48f7a2[_0x3cede0[_0xfb64('0x5b')][_0xfb64('0x93')]]=_0x3cede0[_0xfb64('0x5b')]['from'];return db[_0xfb64('0x87')][_0xfb64('0x5a')](_0x48f7a2,{'fields':_0x312558,'raw':!![]});}})['then'](handleEntityNotFound(_0x4b44e5,null))[_0xfb64('0x31')](function(_0x297bbf){_0x1ecf59[_0xfb64('0xa3')]=_0x297bbf;if(_0x297bbf){var _0x55c2c7={'ContactId':_0x297bbf['id'],'ChatWebsiteId':_0x3cede0[_0xfb64('0x57')]['id'],'from':(_0x297bbf[_0xfb64('0xa4')]||'')+'\x20'+(_0x297bbf[_0xfb64('0xa5')]||''),'customerIp':_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xa6')],'referer':_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xa7')],'browserName':_0xef7e5f['browser']['name']&&_0xef7e5f[_0xfb64('0xa8')][_0xfb64('0xa9')]?util[_0xfb64('0xaa')](_0xfb64('0xab'),_0xef7e5f[_0xfb64('0xa8')][_0xfb64('0x36')],_0xef7e5f[_0xfb64('0xa8')][_0xfb64('0xa9')]):'unknown','browserVersion':_0xef7e5f[_0xfb64('0xa8')][_0xfb64('0xa9')]||_0xfb64('0xac'),'osName':util[_0xfb64('0xaa')](_0xfb64('0xab'),_0xef7e5f['os'][_0xfb64('0x36')],_0xef7e5f['os'][_0xfb64('0xa9')]),'osVersion':_0xef7e5f['os'][_0xfb64('0xa9')],'deviceModel':_0xef7e5f[_0xfb64('0xad')]['model']&&_0xef7e5f[_0xfb64('0xad')][_0xfb64('0xae')]?util['format'](_0xfb64('0xaf'),_0xef7e5f[_0xfb64('0xad')][_0xfb64('0x3b')],_0xef7e5f['device'][_0xfb64('0xae')],_0xef7e5f['device'][_0xfb64('0x4f')]):null,'deviceVendor':_0xef7e5f[_0xfb64('0xad')]['vendor'],'deviceType':_0xef7e5f[_0xfb64('0xad')]['type'],'formData':JSON['stringify'](_0x3cede0['body'])};var _0x13fc50={'ChatWebsiteId':_0x3cede0[_0xfb64('0x57')]['id'],'closed':![]};if(_0x3cede0['body']['threadId']){_0x13fc50[_0xfb64('0xb0')]=_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xb0')];return db[_0xfb64('0xb1')][_0xfb64('0x59')]({'where':_0x13fc50})[_0xfb64('0x31')](function(_0x361543){if(_0x361543){return[_0x361543,![]];}_0x55c2c7[_0xfb64('0xb0')]=_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xb0')];_0x55c2c7[_0xfb64('0xb2')]=_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xb2')];return db[_0xfb64('0xb1')][_0xfb64('0x5a')](_0x55c2c7)[_0xfb64('0x31')](function(_0x108626){return[_0x108626,!![]];});});}_0x13fc50['ContactId']=_0x297bbf['id'];if(_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xb3')]&&_0x3cede0['body'][_0xfb64('0xb3')]['id']){_0x13fc50['id']=_0x3cede0['body'][_0xfb64('0xb3')]['id'];return db[_0xfb64('0xb1')][_0xfb64('0x59')]({'where':_0x13fc50})[_0xfb64('0x31')](function(_0x5b712a){if(_0x5b712a){return[_0x5b712a,![]];}return db[_0xfb64('0xb1')][_0xfb64('0x5a')](_0x55c2c7)[_0xfb64('0x31')](function(_0x583ccb){return[_0x583ccb,!![]];});});}return db[_0xfb64('0xb1')][_0xfb64('0x5a')](_0x55c2c7)['then'](function(_0x2cd2bb){return[_0x2cd2bb,!![]];});}})[_0xfb64('0xb4')](function(_0x5c7a70,_0x12912c){if(_0x5c7a70){_0x50ca7a=_0x12912c;if(!_0x12912c){var _0x320129={'from':(_0x1ecf59['contact']['firstName']||'')+'\x20'+(_0x1ecf59[_0xfb64('0xa3')][_0xfb64('0xa5')]||'')};if(_0x3cede0['body'][_0xfb64('0xb0')]&&_0x3cede0['body'][_0xfb64('0xb5')]&&_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xb0')]!=_0x3cede0[_0xfb64('0x5b')]['messageId']){_0x320129[_0xfb64('0xb0')]=_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xb5')];}return _0x5c7a70[_0xfb64('0x61')](_0x320129);}else{return _0x5c7a70;}}})[_0xfb64('0x31')](function(_0x215d18){_0x1ecf59[_0xfb64('0xb3')]=_0x215d18[_0xfb64('0x5d')]({'plain':!![]});_0x1ecf59[_0xfb64('0xb3')][_0xfb64('0xb6')]=_0x50ca7a;if(_0x1ecf59[_0xfb64('0xb3')][_0xfb64('0xb6')]){if(_0x1ecf59[_0xfb64('0x9c')][_0xfb64('0xb7')]){_0x1ecf59[_0xfb64('0x9d')][_0xfb64('0xb8')]({'id':0x0,'priority':_0x1ecf59[_0xfb64('0x9d')][_0xfb64('0x44')]+0x1,'app':_0xfb64('0xb9'),'appdata':_0xfb64('0xba'),'interval':_0xfb64('0xbb')});}}return db[_0xfb64('0xbc')][_0xfb64('0x5a')]({'body':_0x3cede0[_0xfb64('0x5b')][_0xfb64('0x5b')],'ChatWebsiteId':_0x3cede0[_0xfb64('0x57')]['id'],'ChatInteractionId':_0x215d18['id'],'direction':'in','ContactId':_0x1ecf59[_0xfb64('0xa3')]['id'],'AttachmentId':_0x3cede0[_0xfb64('0x5b')][_0xfb64('0xbd')]});})[_0xfb64('0x31')](function(_0x1f360c){_0x1ecf59['message']=_0x1f360c;if(_0x1ecf59[_0xfb64('0xb3')][_0xfb64('0xbe')]){return db['User'][_0xfb64('0x59')]({'attributes':['id',_0xfb64('0x36')],'where':{'id':_0x1ecf59['interaction']['UserId']}})[_0xfb64('0x31')](function(_0x5b2c95){if(_0x5b2c95){_0x1ecf59['applications'][_0xfb64('0xbf')]({'id':0x0,'priority':0x0,'app':_0xfb64('0xc0'),'appdata':_0x5b2c95[_0xfb64('0x36')]+','+(_0x1ecf59[_0xfb64('0x9c')]['waitForTheAssignedAgent']||0xa),'interval':_0xfb64('0xbb')});_0x1ecf59['forcedOwnership']=!![];}return respondWithRpcPromise(_0xfb64('0xc1'),_0xfb64('0xc2'),_0x1ecf59);});}return respondWithRpcPromise(_0xfb64('0xc1'),'startRouting',_0x1ecf59);})[_0xfb64('0x31')](function(_0xc106e7){respondWithRpcPromise(_0xfb64('0xc3'),_0xfb64('0xc3'),{'event':'notify','message':_0xc106e7},client9002);return _0xc106e7;})[_0xfb64('0x31')](respondWithResult(_0x4b44e5,null))['catch'](handleError(_0x4b44e5,null));};exports['offline']=function(_0x5965af,_0x144446,_0x3b2e21){var _0x5dc81d,_0x114a17,_0x55e040;var _0x4b3a0a=[];var _0x310dc2=[];var _0x593ff0={};return db['CmContact'][_0xfb64('0x62')]()[_0xfb64('0x31')](function(_0x56c107){if(!_0x56c107){throw new db[(_0xfb64('0x88'))]['ValidationError'](_0xfb64('0x8a'));}_0x310dc2=_[_0xfb64('0x8b')](_[_0xfb64('0x3c')](_0x56c107),[_0xfb64('0x8c'),_0xfb64('0x8d')]);_0x4b3a0a=_[_0xfb64('0x8b')](_[_0xfb64('0x3c')](_0x56c107),['createdAt',_0xfb64('0x8d'),_0xfb64('0x8e'),'ListId']);if(_0x5965af['body']['id']){delete _0x5965af['body']['id'];}if(_[_0xfb64('0x79')](_0x5965af['body'][_0xfb64('0x95')])){throw _0x144446['status'](0x1f4)[_0xfb64('0x37')](new db['Sequelize'][(_0xfb64('0x89'))](_0xfb64('0x8f')));}if(_[_0xfb64('0x79')](_0x5965af[_0xfb64('0x5b')]['body'])||_0x5965af['body'][_0xfb64('0x5b')]===''){throw _0x144446[_0xfb64('0x28')](0x1f4)[_0xfb64('0x37')](new db['Sequelize'][(_0xfb64('0x89'))](_0xfb64('0x90')));}if(_[_0xfb64('0x79')](_0x5965af[_0xfb64('0x5b')][_0xfb64('0xc4')])){throw _0x144446[_0xfb64('0x28')](0x1f4)[_0xfb64('0x37')](new db[(_0xfb64('0x88'))][(_0xfb64('0x89'))](_0xfb64('0xc5')+_0x4b3a0a));}if(!_[_0xfb64('0x92')](_0x4b3a0a,_0x5965af[_0xfb64('0x5b')][_0xfb64('0xc4')])){throw _0x144446[_0xfb64('0x28')](0x1f4)['send'](new db[(_0xfb64('0x88'))][(_0xfb64('0x89'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4b3a0a));}_0x593ff0[_0x5965af[_0xfb64('0x5b')][_0xfb64('0xc4')]]=_0x5965af[_0xfb64('0x5b')][_0xfb64('0x95')];})[_0xfb64('0x31')](function(){return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x5965af[_0xfb64('0x57')]['id']},'include':[{'model':db['CmList'],'as':'List'}]});})[_0xfb64('0x31')](handleEntityNotFound(_0x144446,null))[_0xfb64('0x31')](function(_0x1ce5e1){if(_0x1ce5e1&&_0x1ce5e1[_0xfb64('0x97')]){_0x114a17=_0x1ce5e1;var _0x561c45=_[_0xfb64('0xc6')](_0x5965af[_0xfb64('0x5b')],{'firstName':_0x5965af[_0xfb64('0x5b')][_0xfb64('0x95')],'phone':_0x5965af[_0xfb64('0x5b')][_0xfb64('0x95')],'ListId':_0x1ce5e1['ListId']});_0x561c45[_0x5965af[_0xfb64('0x5b')][_0xfb64('0xc4')]]=_0x5965af[_0xfb64('0x5b')][_0xfb64('0x95')];return db[_0xfb64('0x87')][_0xfb64('0xc7')]({'where':_0x593ff0,'defaults':_0x561c45});}})[_0xfb64('0xb4')](function(_0x26bfd2){if(_0x26bfd2){_0x55e040=_0x26bfd2;var _0x4b877d=fs[_0xfb64('0xc8')](path['join'](config['root'],_0xfb64('0xc9')),'utf8');var _0x630250=ejs[_0xfb64('0xca')](_0x4b877d,{'body':_[_0xfb64('0xcb')](_0x5965af[_0xfb64('0x5b')][_0xfb64('0x5b')]),'bodyTitle':_0x114a17[_0xfb64('0xcc')]});return db[_0xfb64('0xcd')][_0xfb64('0x5a')]({'body':_0x630250,'ContactId':_0x26bfd2['id'],'ChatWebsiteId':_0x114a17['id']});}})[_0xfb64('0x31')](function(_0x794f63){if(_0x794f63){_0x5dc81d=_0x794f63;return db[_0xfb64('0xce')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xfb64('0xcf')],'as':_0xfb64('0xd0'),'raw':!![]}]});}})[_0xfb64('0x31')](function(_0x1bd396){if(_0x1bd396&&_0x1bd396['Smtp']&&_0x114a17['forwardOfflineAddress']){var _0x1730de={'tls':{'rejectUnauthorized':![]}};if(_0x1bd396['Smtp']['service']){_0x1730de[_0xfb64('0xd1')]=_0x1bd396[_0xfb64('0xd0')]['service'];}else{_0x1730de[_0xfb64('0xd2')]=_0x1bd396[_0xfb64('0xd0')]['host'];_0x1730de[_0xfb64('0xd3')]=_0x1bd396[_0xfb64('0xd0')]['port'];_0x1730de[_0xfb64('0xd4')]=_0x1bd396[_0xfb64('0xd0')][_0xfb64('0xd4')];}if(_0x1bd396[_0xfb64('0xd0')][_0xfb64('0xd5')]){_0x1730de[_0xfb64('0xd6')]={'user':_0x1bd396['Smtp'][_0xfb64('0x5c')],'pass':_0x1bd396[_0xfb64('0xd0')][_0xfb64('0xd7')]};}return respondWithRpcPromise('SendMail',_0xfb64('0xd8'),{'account':_0x1730de,'message':{'from':util[_0xfb64('0xaa')]('\x22%s\x22\x20<%s>',_0x1bd396['name'],_0x1bd396[_0xfb64('0xd9')]||_0x1bd396['Smtp'][_0xfb64('0x5c')]),'to':_0x114a17['forwardOfflineAddress'],'subject':_0x114a17[_0xfb64('0xda')],'text':_0x5dc81d[_0xfb64('0x5b')]}},client9003)['then'](function(){return _0x5dc81d;})[_0xfb64('0x25')](function(_0x16c8f3){console[_0xfb64('0x22')](_0x16c8f3);});}})[_0xfb64('0x31')](function(){if(_0x5dc81d){return _0x5dc81d;}})[_0xfb64('0x31')](respondWithResult(_0x144446,null))[_0xfb64('0x25')](handleError(_0x144446,null));};exports['addInteraction']=function(_0x32910d,_0x2fcba3,_0x443d9d){return db[_0xfb64('0xb1')][_0xfb64('0x59')]({'where':{'id':_0x32910d[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x2fcba3,null))[_0xfb64('0x31')](function(_0xdcca62){if(_0xdcca62){return _0xdcca62[_0xfb64('0xdb')](_0x32910d[_0xfb64('0x5b')][_0xfb64('0x6e')],_[_0xfb64('0xdc')](_0x32910d[_0xfb64('0x5b')],[_0xfb64('0x6e'),'id'])||{});}})[_0xfb64('0x31')](respondWithResult(_0x2fcba3,null))[_0xfb64('0x25')](handleError(_0x2fcba3,null));};exports['getInteractions']=function(_0x35f1fb,_0xcb7714,_0xaf5ab3){var _0x5732ff={'raw':![],'where':{}};var _0x52213f={};var _0x19ed35={'count':0x0,'rows':[]};return db[_0xfb64('0x39')][_0xfb64('0x66')]({'where':{'id':_0x35f1fb[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0xcb7714,null))[_0xfb64('0x31')](function(_0x58037d){if(_0x58037d){_0x52213f[_0xfb64('0x3b')]=_[_0xfb64('0x3c')](db['ChatInteraction'][_0xfb64('0x3a')]);_0x52213f[_0xfb64('0x3d')]=_[_0xfb64('0x3c')](_0x35f1fb[_0xfb64('0x3d')]);_0x52213f['filters']=_[_0xfb64('0x41')](_0x52213f[_0xfb64('0x3b')],_0x52213f['query']);_0x5732ff[_0xfb64('0x43')]=_[_0xfb64('0x41')](_0x52213f[_0xfb64('0x3b')],qs[_0xfb64('0x42')](_0x35f1fb[_0xfb64('0x3d')][_0xfb64('0x42')]));_0x5732ff['attributes']=_0x5732ff[_0xfb64('0x43')]['length']?_0x5732ff[_0xfb64('0x43')]:_0x52213f[_0xfb64('0x3b')];if(!_0x35f1fb[_0xfb64('0x3d')][_0xfb64('0x45')]('nolimit')){_0x5732ff[_0xfb64('0x46')]=qs[_0xfb64('0x46')](_0x35f1fb['query'][_0xfb64('0x46')]);_0x5732ff[_0xfb64('0x2b')]=qs['offset'](_0x35f1fb[_0xfb64('0x3d')][_0xfb64('0x2b')]);}_0x5732ff['order']=qs['sort'](_0x35f1fb['query'][_0xfb64('0x48')]);_0x5732ff[_0xfb64('0x4d')]=qs[_0xfb64('0x40')](_[_0xfb64('0x49')](_0x35f1fb[_0xfb64('0x3d')],_0x52213f[_0xfb64('0x40')]));_0x5732ff[_0xfb64('0x4d')][_0xfb64('0x64')]=_0x58037d['id'];if(_0x35f1fb[_0xfb64('0x3d')]['filter']){_0x5732ff[_0xfb64('0x4d')]=_[_0xfb64('0x4c')](_0x5732ff[_0xfb64('0x4d')],{'$or':_[_0xfb64('0x69')](_0x5732ff[_0xfb64('0x43')],function(_0x360756){var _0x2849fa={};_0x2849fa[_0x360756]={'$like':'%'+_0x35f1fb[_0xfb64('0x3d')][_0xfb64('0x4e')]+'%'};return _0x2849fa;})});}_0x5732ff=_['merge']({},_0x5732ff,_0x35f1fb[_0xfb64('0x58')]);return db[_0xfb64('0xb1')]['count']({'where':_0x5732ff[_0xfb64('0x4d')]})['then'](function(_0x587196){_0x19ed35[_0xfb64('0x2a')]=_0x587196;if(_0x35f1fb[_0xfb64('0x3d')][_0xfb64('0x52')]){_0x5732ff[_0xfb64('0x53')]=[{'model':db[_0xfb64('0x87')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xfb64('0xdd'),'attributes':[_0xfb64('0x36'),_0xfb64('0xde'),_0xfb64('0xdf')],'required':![]},{'model':db[_0xfb64('0xe0')],'as':_0xfb64('0xe1'),'attributes':['id',_0xfb64('0x36'),'color'],'where':_0x35f1fb[_0xfb64('0x3d')][_0xfb64('0xe2')]?{'id':_0x35f1fb[_0xfb64('0x3d')][_0xfb64('0xe2')]}:undefined,'required':_0x35f1fb[_0xfb64('0x3d')][_0xfb64('0xe2')]?!![]:![]}];}return db['ChatInteraction'][_0xfb64('0x54')](_0x5732ff);})[_0xfb64('0x31')](function(_0x111d51){_0x19ed35[_0xfb64('0x55')]=_0x111d51;return _0x19ed35;});}})['then'](respondWithFilteredResult(_0xcb7714,_0x5732ff))[_0xfb64('0x25')](handleError(_0xcb7714,null));};function iftimePromise(_0x58f02b,_0x4ec58e){return respondWithRpcPromise('Command','getSnippet',{'command':_0x4ec58e[_0xfb64('0xe3')]?util['format'](_0xfb64('0xe4'),_0x58f02b['interval'],_0x4ec58e[_0xfb64('0xe3')]):util[_0xfb64('0xaa')](_0xfb64('0xe5'),_0x58f02b[_0xfb64('0xe6')])},client9002)[_0xfb64('0x31')](function(_0x5b03b7){var _0x277f72=_0x5b03b7&&_0x5b03b7['indexOf']('true')>=0x0?!![]:![];logger[_0xfb64('0x1d')](_0xfb64('0xe7'),_0x4ec58e['id'],_0x58f02b['id'],_0x58f02b[_0xfb64('0xe6')],_0x277f72?_0xfb64('0xe8'):_0xfb64('0xe9'),_0x4ec58e[_0xfb64('0xe3')]?_0x4ec58e[_0xfb64('0xe3')]:_0xfb64('0xea'));return _0x277f72;})['catch'](function(_0x39e14d){logger['error'](_0xfb64('0xe7'),_0x4ec58e['id'],_0x58f02b['id'],_0x58f02b[_0xfb64('0xe6')],util['inspect'](_0x39e14d,{'showHidden':![],'depth':null}),_0x4ec58e[_0xfb64('0xe3')]?_0x4ec58e['timezone']:'No\x20timezone');return![];});}exports[_0xfb64('0xeb')]=function(_0x5df71f,_0x518bb7,_0x40a7d9){var _0x35acb6=0x0;var _0x4ab71e=0x0;var _0x43a855=![];var _0x5d639e;var _0x4cb9e3;return db['ChatWebsite'][_0xfb64('0x59')]({'where':{'id':_0x5df71f['params']['id']},'include':[{'model':db['Interval'],'as':_0xfb64('0xec'),'include':[{'model':db[_0xfb64('0xec')],'as':_0xfb64('0xed'),'attributes':['id',_0xfb64('0xe6')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x518bb7,null))[_0xfb64('0x31')](function(_0x15b2cf){if(_0x15b2cf){_0x5d639e=_0x15b2cf;return _0x15b2cf[_0xfb64('0xee')]({'raw':!![]});}})[_0xfb64('0x31')](function(_0x22eaa2){if(_0x5d639e){if(_0x22eaa2){_0x4cb9e3=_0x22eaa2;}}return require('../../config/license/util')[_0xfb64('0xef')]();})[_0xfb64('0x31')](function(_0x1a5cb5){if(_0x1a5cb5){_0x4ab71e=_0x1a5cb5[_0xfb64('0xf0')];_0x43a855=_0x1a5cb5['custom'];}})['then'](function(){return db['ChatInteraction'][_0xfb64('0x2a')]({'where':{'closed':![]}});})['then'](function(_0x1ab2a2){_0x35acb6=_0x1ab2a2;if(_0x4ab71e&&_0x1ab2a2>_0x4ab71e){return db[_0xfb64('0xf1')][_0xfb64('0x66')]({'where':{'id':0x1}})['then'](function(_0x65010d){if(_0x65010d){_0x65010d[_0xfb64('0xf2')](_0xfb64('0xf3'));}});}})['then'](function(){if(_0x5d639e[_0xfb64('0xec')]&&_0x5d639e[_0xfb64('0xec')][_0xfb64('0xed')]){var _0x2efa3e=[];for(var _0x36781e=0x0;_0x36781e<_0x5d639e['Interval'][_0xfb64('0xed')][_0xfb64('0x44')];_0x36781e++){var _0x4adaaa=_0x5d639e[_0xfb64('0xec')]['Intervals'][_0x36781e][_0xfb64('0x5d')]({'plain':!![]});_0x2efa3e[_0xfb64('0xb8')](iftimePromise(_0x4adaaa,_0x5d639e));}return BPromise[_0xfb64('0xf4')](_0x2efa3e)[_0xfb64('0x31')](function(_0x6c27cc){return _['some'](_0x6c27cc);});}else{return!![];}})[_0xfb64('0x31')](function(_0x2a1184){var _0x58de2f=fs['readFileSync'](path[_0xfb64('0x76')](config[_0xfb64('0x77')],_0xfb64('0xf5')),_0xfb64('0xf6'));var _0x5258e4={'remote':_0x5d639e[_0xfb64('0xf7')],'query':querystring[_0xfb64('0x21')](_[_0xfb64('0x4c')](_0x5d639e[_0xfb64('0x5d')]({'plain':!![]}),{'customerIp':_0x5df71f['headers']['x-forwarded-for']||_0x5df71f['headers'][_0xfb64('0xf8')]||_0x5df71f['connection']['remoteAddress']||_0x5df71f['ip'],'referer':_0x5df71f[_0xfb64('0x85')][_0xfb64('0xa7')],'openedInteractions':_0x35acb6,'maxInteractions':_0x4ab71e,'virtual':_0x43a855['virtual'],'online':_0x2a1184,'custom':_0x43a855}))['replace'](/'/g,'\x5c\x27')};_0x518bb7[_0xfb64('0x37')](ejs[_0xfb64('0xca')](Mustache[_0xfb64('0xca')](_0x58de2f,_0x5258e4),{'proactiveActions':_0x4cb9e3,'alignment':_0x5d639e[_0xfb64('0xf9')],'verticalAlignment':_0x5d639e[_0xfb64('0xfa')]}));})['catch'](handleError(_0x518bb7,null));};exports[_0xfb64('0xfb')]=function(_0x518220,_0x29c08b,_0x1c6e88){return db[_0xfb64('0x39')][_0xfb64('0x66')]({'where':{'id':_0x518220[_0xfb64('0x57')]['id']}})['then'](handleEntityNotFound(_0x29c08b,null))[_0xfb64('0x31')](function(_0x260e50){if(_0x260e50){return db[_0xfb64('0xfc')][_0xfb64('0xfd')](function(_0x48453d){return db['ChatApplication'][_0xfb64('0x32')]({'where':{'ChatWebsiteId':_0x518220[_0xfb64('0x57')]['id']},'transaction':_0x48453d})[_0xfb64('0x31')](function(_0x1619d4){var _0xbe3fd7=_[_0xfb64('0x69')](_0x518220[_0xfb64('0x5b')],function(_0x413427){_0x413427[_0xfb64('0x64')]=_0x518220['params']['id'];return _0x413427;});return db[_0xfb64('0x9a')][_0xfb64('0xfe')](_0xbe3fd7,{'transaction':_0x48453d});});})[_0xfb64('0x31')](function(){return db[_0xfb64('0x9a')][_0xfb64('0xff')]({'where':{'ChatWebsiteId':_0x518220[_0xfb64('0x57')]['id']},'order':_0xfb64('0xa0')});});}})[_0xfb64('0x31')](respondWithResult(_0x29c08b,null))[_0xfb64('0x25')](handleError(_0x29c08b,null));};exports[_0xfb64('0x100')]=function(_0x52cfef,_0x2ee97f,_0x57c772){var _0x33518c={};var _0x9b0de1={};var _0x187fc3;var _0x5d781c;return db[_0xfb64('0x39')]['findOne']({'where':{'id':_0x52cfef['params']['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x2ee97f,null))[_0xfb64('0x31')](function(_0x2e9249){if(_0x2e9249){_0x187fc3=_0x2e9249;_0x9b0de1[_0xfb64('0x3b')]=_[_0xfb64('0x3c')](db['ChatApplication'][_0xfb64('0x3a')]);_0x9b0de1['query']=_[_0xfb64('0x3c')](_0x52cfef[_0xfb64('0x3d')]);_0x9b0de1['filters']=_['intersection'](_0x9b0de1[_0xfb64('0x3b')],_0x9b0de1[_0xfb64('0x3d')]);_0x33518c[_0xfb64('0x43')]=_[_0xfb64('0x41')](_0x9b0de1[_0xfb64('0x3b')],qs[_0xfb64('0x42')](_0x52cfef[_0xfb64('0x3d')][_0xfb64('0x42')]));_0x33518c['attributes']=_0x33518c['attributes'][_0xfb64('0x44')]?_0x33518c[_0xfb64('0x43')]:_0x9b0de1[_0xfb64('0x3b')];_0x33518c[_0xfb64('0x47')]=qs['sort'](_0x52cfef[_0xfb64('0x3d')][_0xfb64('0x48')]);_0x33518c[_0xfb64('0x4d')]=qs[_0xfb64('0x40')](_[_0xfb64('0x49')](_0x52cfef['query'],_0x9b0de1['filters']));if(_0x52cfef[_0xfb64('0x3d')]['filter']){_0x33518c[_0xfb64('0x4d')]=_[_0xfb64('0x4c')](_0x33518c[_0xfb64('0x4d')],{'$or':_[_0xfb64('0x69')](_0x33518c['attributes'],function(_0x3f31f3){var _0x56cc49={};_0x56cc49[_0x3f31f3]={'$like':'%'+_0x52cfef[_0xfb64('0x3d')][_0xfb64('0x4e')]+'%'};return _0x56cc49;})});}_0x33518c=_['merge']({},_0x33518c,_0x52cfef['options']);return _0x187fc3[_0xfb64('0x100')](_0x33518c);}})[_0xfb64('0x31')](function(_0xe9588f){if(_0xe9588f){_0x5d781c=_0xe9588f['length'];if(!_0x52cfef[_0xfb64('0x3d')][_0xfb64('0x45')](_0xfb64('0x68'))){_0x33518c[_0xfb64('0x46')]=qs[_0xfb64('0x46')](_0x52cfef['query']['limit']);_0x33518c['offset']=qs[_0xfb64('0x2b')](_0x52cfef[_0xfb64('0x3d')][_0xfb64('0x2b')]);}return _0x187fc3[_0xfb64('0x100')](_0x33518c);}})['then'](function(_0xe6907c){if(_0xe6907c){return _0xe6907c?{'count':_0x5d781c,'rows':_0xe6907c}:null;}})['then'](respondWithResult(_0x2ee97f,null))['catch'](handleError(_0x2ee97f,null));};exports['addProactiveActions']=function(_0x30656f,_0x423857,_0x3896a0){return db[_0xfb64('0x101')][_0xfb64('0x59')]({'where':{'id':_0x30656f['params']['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x423857,null))[_0xfb64('0x31')](function(_0x438d04){if(_0x438d04){return _0x438d04[_0xfb64('0x102')](_0x30656f[_0xfb64('0x5b')]['ids'],_[_0xfb64('0xdc')](_0x30656f['body'],[_0xfb64('0x6e'),'id'])||{});}})[_0xfb64('0x31')](respondWithResult(_0x423857,null))[_0xfb64('0x25')](handleError(_0x423857,null));};exports[_0xfb64('0xee')]=function(_0x3f5a46,_0x597663,_0x25346d){var _0x1c87f4={};var _0x36fb01={};var _0x37ff78;var _0x931392;return db['ChatWebsite'][_0xfb64('0x66')]({'where':{'id':_0x3f5a46[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x597663,null))[_0xfb64('0x31')](function(_0x11e38d){if(_0x11e38d){_0x37ff78=_0x11e38d;_0x36fb01[_0xfb64('0x3b')]=_[_0xfb64('0x3c')](db['ChatProactiveAction']['rawAttributes']);_0x36fb01[_0xfb64('0x3d')]=_[_0xfb64('0x3c')](_0x3f5a46[_0xfb64('0x3d')]);_0x36fb01['filters']=_[_0xfb64('0x41')](_0x36fb01['model'],_0x36fb01[_0xfb64('0x3d')]);_0x1c87f4[_0xfb64('0x43')]=_[_0xfb64('0x41')](_0x36fb01[_0xfb64('0x3b')],qs[_0xfb64('0x42')](_0x3f5a46[_0xfb64('0x3d')][_0xfb64('0x42')]));_0x1c87f4[_0xfb64('0x43')]=_0x1c87f4[_0xfb64('0x43')][_0xfb64('0x44')]?_0x1c87f4[_0xfb64('0x43')]:_0x36fb01['model'];_0x1c87f4['order']=qs['sort'](_0x3f5a46['query'][_0xfb64('0x48')]);_0x1c87f4[_0xfb64('0x4d')]=qs[_0xfb64('0x40')](_[_0xfb64('0x49')](_0x3f5a46[_0xfb64('0x3d')],_0x36fb01['filters']));if(_0x3f5a46[_0xfb64('0x3d')]['filter']){_0x1c87f4['where']=_[_0xfb64('0x4c')](_0x1c87f4[_0xfb64('0x4d')],{'$or':_[_0xfb64('0x69')](_0x1c87f4[_0xfb64('0x43')],function(_0x1b0095){var _0xd3d3f={};_0xd3d3f[_0x1b0095]={'$like':'%'+_0x3f5a46[_0xfb64('0x3d')][_0xfb64('0x4e')]+'%'};return _0xd3d3f;})});}_0x1c87f4=_[_0xfb64('0x4c')]({},_0x1c87f4,_0x3f5a46['options']);return _0x37ff78[_0xfb64('0xee')](_0x1c87f4);}})['then'](function(_0x38d5e8){if(_0x38d5e8){_0x931392=_0x38d5e8[_0xfb64('0x44')];if(!_0x3f5a46['query'][_0xfb64('0x45')](_0xfb64('0x68'))){_0x1c87f4[_0xfb64('0x46')]=qs[_0xfb64('0x46')](_0x3f5a46[_0xfb64('0x3d')][_0xfb64('0x46')]);_0x1c87f4[_0xfb64('0x2b')]=qs[_0xfb64('0x2b')](_0x3f5a46[_0xfb64('0x3d')][_0xfb64('0x2b')]);}return _0x37ff78[_0xfb64('0xee')](_0x1c87f4);}})[_0xfb64('0x31')](function(_0x49f2f4){if(_0x49f2f4){return _0x49f2f4?{'count':_0x931392,'rows':_0x49f2f4}:null;}})[_0xfb64('0x31')](respondWithResult(_0x597663,null))[_0xfb64('0x25')](handleError(_0x597663,null));};exports['getFields']=function(_0x3b7465,_0x30f0da,_0x43d1c6){var _0x2fb19e=_0x3b7465['query'][_0xfb64('0x103')]===_0xfb64('0x104')?_0xfb64('0x105'):_0xfb64('0x106');return db[_0xfb64('0x39')][_0xfb64('0x59')]({'attributes':['id',_0x2fb19e],'where':{'id':_0x3b7465[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x30f0da,null))[_0xfb64('0x31')](function(_0x476357){if(_0x476357){var _0x11b62c=_0x476357[_0x2fb19e];var _0x5a37b0=_0x11b62c&&_0x11b62c[_0xfb64('0x107')]?_0x11b62c[_0xfb64('0x107')]:[];_0x30f0da[_0xfb64('0x37')]({'fromKey':_[_0xfb64('0x79')](_0x11b62c[_0xfb64('0x108')])?undefined:_0x11b62c['fromKey'],'count':_0x5a37b0['length'],'rows':_0x5a37b0});}})[_0xfb64('0x25')](handleError(_0x30f0da,null));};exports[_0xfb64('0x109')]=function(_0x14ebcc,_0x2687dd,_0xb6fd7a){var _0x53235c={'raw':!![],'where':{}};var _0x3531c3={};var _0x414891={'count':0x0,'rows':[]};return db[_0xfb64('0x39')][_0xfb64('0x66')]({'where':{'id':_0x14ebcc['params']['id']}})['then'](handleEntityNotFound(_0x2687dd,null))[_0xfb64('0x31')](function(_0x22fce8){if(_0x22fce8){_0x3531c3[_0xfb64('0x3b')]=_[_0xfb64('0x3c')](db['ChatOfflineMessage'][_0xfb64('0x3a')]);_0x3531c3[_0xfb64('0x3d')]=_[_0xfb64('0x3c')](_0x14ebcc[_0xfb64('0x3d')]);_0x3531c3[_0xfb64('0x40')]=_[_0xfb64('0x41')](_0x3531c3['model'],_0x3531c3[_0xfb64('0x3d')]);_0x53235c[_0xfb64('0x43')]=_[_0xfb64('0x41')](_0x3531c3[_0xfb64('0x3b')],qs[_0xfb64('0x42')](_0x14ebcc['query'][_0xfb64('0x42')]));_0x53235c[_0xfb64('0x43')]=_0x53235c['attributes'][_0xfb64('0x44')]?_0x53235c[_0xfb64('0x43')]:_0x3531c3['model'];if(!_0x14ebcc[_0xfb64('0x3d')][_0xfb64('0x45')](_0xfb64('0x68'))){_0x53235c[_0xfb64('0x46')]=qs[_0xfb64('0x46')](_0x14ebcc[_0xfb64('0x3d')][_0xfb64('0x46')]);_0x53235c['offset']=qs[_0xfb64('0x2b')](_0x14ebcc[_0xfb64('0x3d')][_0xfb64('0x2b')]);}_0x53235c[_0xfb64('0x47')]=qs[_0xfb64('0x48')](_0x14ebcc[_0xfb64('0x3d')][_0xfb64('0x48')]);_0x53235c[_0xfb64('0x4d')]=qs['filters'](_[_0xfb64('0x49')](_0x14ebcc[_0xfb64('0x3d')],_0x3531c3[_0xfb64('0x40')]));_0x53235c[_0xfb64('0x4d')][_0xfb64('0x64')]=_0x22fce8['id'];if(_0x14ebcc[_0xfb64('0x3d')]['filter']){_0x53235c['where']=_[_0xfb64('0x4c')](_0x53235c['where'],{'$or':_['map'](_0x53235c[_0xfb64('0x43')],function(_0x384e4e){var _0x231bef={};_0x231bef[_0x384e4e]={'$like':'%'+_0x14ebcc['query'][_0xfb64('0x4e')]+'%'};return _0x231bef;})});}_0x53235c=_[_0xfb64('0x4c')]({},_0x53235c,_0x14ebcc[_0xfb64('0x58')]);return db['ChatOfflineMessage'][_0xfb64('0x2a')]({'where':_0x53235c[_0xfb64('0x4d')]})['then'](function(_0x66170b){_0x414891[_0xfb64('0x2a')]=_0x66170b;if(_0x14ebcc[_0xfb64('0x3d')]['includeAll']){_0x53235c['include']=[{'all':!![]}];}return db['ChatOfflineMessage'][_0xfb64('0x54')](_0x53235c);})[_0xfb64('0x31')](function(_0x1a098d){_0x414891[_0xfb64('0x55')]=_0x1a098d;return _0x414891;});}})['then'](respondWithFilteredResult(_0x2687dd,_0x53235c))[_0xfb64('0x25')](handleError(_0x2687dd,null));};exports[_0xfb64('0x10a')]=function(_0x4ecbaa,_0x48e0e6,_0x21bfc5){return db[_0xfb64('0x39')]['find']({'where':{'id':_0x4ecbaa[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x48e0e6,null))[_0xfb64('0x31')](function(_0x2ada06){if(_0x2ada06){return _0x2ada06['addAgents'](_0x4ecbaa[_0xfb64('0x5b')][_0xfb64('0x6e')],_[_0xfb64('0xdc')](_0x4ecbaa[_0xfb64('0x5b')],[_0xfb64('0x6e'),'id'])||{})[_0xfb64('0xb4')](function(_0x15f2a0){for(var _0x51e4f8=0x0;_0x51e4f8<_0x4ecbaa[_0xfb64('0x5b')][_0xfb64('0x6e')]['length'];_0x51e4f8+=0x1){socket['emit'](_0xfb64('0x10b'),{'UserId':_0x4ecbaa['body'][_0xfb64('0x6e')][_0x51e4f8],'ChatWebsiteId':_0x4ecbaa[_0xfb64('0x57')]['id']});}return _0x15f2a0;});}})[_0xfb64('0x31')](respondWithResult(_0x48e0e6,null))[_0xfb64('0x25')](handleError(_0x48e0e6,null));};exports[_0xfb64('0x10c')]=function(_0x404930,_0x52f913,_0x753760){var _0x387527;return db[_0xfb64('0x39')][_0xfb64('0x59')]({'where':{'id':_0x404930[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0x52f913,null))[_0xfb64('0x31')](function(_0x3bbe2d){if(_0x3bbe2d){return _0x3bbe2d[_0xfb64('0x10c')](_0x404930[_0xfb64('0x3d')]['ids'])[_0xfb64('0x31')](function(_0x1247a7){if(_[_0xfb64('0x10d')](_0x404930[_0xfb64('0x3d')][_0xfb64('0x6e')])){for(var _0x3da64f=0x0;_0x3da64f<_0x404930['query']['ids'][_0xfb64('0x44')];_0x3da64f+=0x1){socket['emit'](_0xfb64('0x10e'),{'UserId':_0x404930[_0xfb64('0x3d')][_0xfb64('0x6e')][_0x3da64f],'ChatWebsiteId':_0x404930[_0xfb64('0x57')]['id']});}}else{socket[_0xfb64('0x10f')](_0xfb64('0x10e'),{'UserId':_0x404930[_0xfb64('0x3d')]['ids'],'ChatWebsiteId':_0x404930['params']['id']});}});}})[_0xfb64('0x31')](respondWithStatusCode(_0x52f913,null))[_0xfb64('0x25')](handleError(_0x52f913,null));};exports[_0xfb64('0x110')]=function(_0x5cd77b,_0xb84efc,_0x4fbc83){var _0x51da64={};var _0x1dd00b={};var _0x22b7c5;var _0x40f091;return db[_0xfb64('0x39')][_0xfb64('0x66')]({'where':{'id':_0x5cd77b[_0xfb64('0x57')]['id']}})[_0xfb64('0x31')](handleEntityNotFound(_0xb84efc,null))[_0xfb64('0x31')](function(_0x5a9f5e){if(_0x5a9f5e){_0x22b7c5=_0x5a9f5e;_0x1dd00b[_0xfb64('0x3b')]=_[_0xfb64('0x3c')](db[_0xfb64('0x111')][_0xfb64('0x3a')]);_0x1dd00b['query']=_['keys'](_0x5cd77b[_0xfb64('0x3d')]);_0x1dd00b[_0xfb64('0x40')]=_[_0xfb64('0x41')](_0x1dd00b[_0xfb64('0x3b')],_0x1dd00b['query']);_0x51da64[_0xfb64('0x43')]=_[_0xfb64('0x41')](_0x1dd00b[_0xfb64('0x3b')],qs[_0xfb64('0x42')](_0x5cd77b[_0xfb64('0x3d')][_0xfb64('0x42')]));_0x51da64['attributes']=_0x51da64[_0xfb64('0x43')][_0xfb64('0x44')]?_0x51da64[_0xfb64('0x43')]:_0x1dd00b[_0xfb64('0x3b')];_0x51da64[_0xfb64('0x47')]=qs[_0xfb64('0x48')](_0x5cd77b[_0xfb64('0x3d')][_0xfb64('0x48')]);_0x51da64[_0xfb64('0x4d')]=qs[_0xfb64('0x40')](_['pick'](_0x5cd77b['query'],_0x1dd00b['filters']));if(_0x5cd77b['query'][_0xfb64('0x4e')]){_0x51da64[_0xfb64('0x4d')]=_['merge'](_0x51da64[_0xfb64('0x4d')],{'$or':_[_0xfb64('0x69')](_0x51da64[_0xfb64('0x43')],function(_0x2aad0e){var _0x532937={};_0x532937[_0x2aad0e]={'$like':'%'+_0x5cd77b['query'][_0xfb64('0x4e')]+'%'};return _0x532937;})});}_0x51da64=_[_0xfb64('0x4c')]({},_0x51da64,_0x5cd77b[_0xfb64('0x58')]);return _0x22b7c5[_0xfb64('0x110')](_0x51da64);}})['then'](function(_0x449535){if(_0x449535){_0x40f091=_0x449535[_0xfb64('0x44')];if(!_0x5cd77b[_0xfb64('0x3d')][_0xfb64('0x45')](_0xfb64('0x68'))){_0x51da64[_0xfb64('0x46')]=qs['limit'](_0x5cd77b['query'][_0xfb64('0x46')]);_0x51da64['offset']=qs[_0xfb64('0x2b')](_0x5cd77b[_0xfb64('0x3d')][_0xfb64('0x2b')]);}return _0x22b7c5[_0xfb64('0x110')](_0x51da64);}})[_0xfb64('0x31')](function(_0x3be72e){if(_0x3be72e){return _0x3be72e?{'count':_0x40f091,'rows':_0x3be72e}:null;}})[_0xfb64('0x31')](respondWithResult(_0xb84efc,null))[_0xfb64('0x25')](handleError(_0xb84efc,null));};
\ No newline at end of file
index 0c678f4..6737c13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x010a=['emit','hasOwnProperty','hook','../../mysqldb','setMaxListeners','save','remove'];(function(_0x411cd6,_0x52b29e){var _0x2836d8=function(_0x589b08){while(--_0x589b08){_0x411cd6['push'](_0x411cd6['shift']());}};_0x2836d8(++_0x52b29e);}(_0x010a,0x1f4));var _0xa010=function(_0x45fcc6,_0x1cc14e){_0x45fcc6=_0x45fcc6-0x0;var _0x3a29cc=_0x010a[_0x45fcc6];return _0x3a29cc;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0xa010('0x0'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xa010('0x1')](0x0);var events={'afterCreate':_0xa010('0x2'),'afterUpdate':'update','afterDestroy':_0xa010('0x3')};function emitEvent(_0x5d7cf4){return function(_0x2c0c40,_0x17fe51,_0xee0649){ChatWebsiteEvents[_0xa010('0x4')](_0x5d7cf4+':'+_0x2c0c40['id'],_0x2c0c40);ChatWebsiteEvents[_0xa010('0x4')](_0x5d7cf4,_0x2c0c40);_0xee0649(null);};}for(var e in events){if(events[_0xa010('0x5')](e)){var event=events[e];ChatWebsite[_0xa010('0x6')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0x72bd=['ChatWebsite','setMaxListeners','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x520331,_0x7820e8){var _0x52cd33=function(_0x17bdc9){while(--_0x17bdc9){_0x520331['push'](_0x520331['shift']());}};_0x52cd33(++_0x7820e8);}(_0x72bd,0xcf));var _0xd72b=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x72bd[_0x5d4607];return _0x5e4a86;};'use strict';var EventEmitter=require(_0xd72b('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xd72b('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xd72b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xd72b('0x3')};function emitEvent(_0x4a85d8){return function(_0x2f0211,_0x3cd5c2,_0x265f26){ChatWebsiteEvents['emit'](_0x4a85d8+':'+_0x2f0211['id'],_0x2f0211);ChatWebsiteEvents[_0xd72b('0x4')](_0x4a85d8,_0x2f0211);_0x265f26(null);};}for(var e in events){if(events[_0xd72b('0x5')](e)){var event=events[e];ChatWebsite[_0xd72b('0x6')](e,emitEvent(event));}}module[_0xd72b('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
index 73e512e..a38e252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9532=['lodash','util','../../config/logger','api','moment','bluebird','./chatWebsite.attributes','exports','ChatWebsite','chat_websites'];(function(_0x354e4e,_0x74f187){var _0x1ca266=function(_0x5772d3){while(--_0x5772d3){_0x354e4e['push'](_0x354e4e['shift']());}};_0x1ca266(++_0x74f187);}(_0x9532,0x8c));var _0x2953=function(_0x1c75f4,_0x341768){_0x1c75f4=_0x1c75f4-0x0;var _0x5c7e95=_0x9532[_0x1c75f4];return _0x5c7e95;};'use strict';var _=require(_0x2953('0x0'));var util=require(_0x2953('0x1'));var logger=require(_0x2953('0x2'))(_0x2953('0x3'));var moment=require(_0x2953('0x4'));var BPromise=require(_0x2953('0x5'));var rp=require('request-promise');var attributes=require(_0x2953('0x6'));module[_0x2953('0x7')]=function(_0x5dceda,_0x12f653){return _0x5dceda['define'](_0x2953('0x8'),attributes,{'tableName':_0x2953('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x750a=['./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','util','moment','bluebird','request-promise'];(function(_0x425795,_0x51fd78){var _0x41753d=function(_0x54be62){while(--_0x54be62){_0x425795['push'](_0x425795['shift']());}};_0x41753d(++_0x51fd78);}(_0x750a,0x140));var _0xa750=function(_0x3e18ab,_0x9e7075){_0x3e18ab=_0x3e18ab-0x0;var _0x33ff3d=_0x750a[_0x3e18ab];return _0x33ff3d;};'use strict';var _=require('lodash');var util=require(_0xa750('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa750('0x1'));var BPromise=require(_0xa750('0x2'));var rp=require(_0xa750('0x3'));var attributes=require(_0xa750('0x4'));module[_0xa750('0x5')]=function(_0x43d704,_0x562911){return _0x43d704[_0xa750('0x6')](_0xa750('0x7'),attributes,{'tableName':_0xa750('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb8a9ff..9dc632b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa339=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','socket.io-emitter','./chatWebsite.socket','register','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','randomstring','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa339,0xac));var _0x9a33=function(_0x24cc4f,_0x3002cc){_0x24cc4f=_0x24cc4f-0x0;var _0x1bbf21=_0xa339[_0x24cc4f];return _0x1bbf21;};'use strict';var _=require('lodash');var util=require(_0x9a33('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9a33('0x1'));var fs=require('fs');var Redis=require(_0x9a33('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x9a33('0x3'));var logger=require(_0x9a33('0x4'))('rpc');var config=require(_0x9a33('0x5'));var jayson=require(_0x9a33('0x6'));var client=jayson['client'][_0x9a33('0x7')]({'port':0x232a});config[_0x9a33('0x8')]=_['defaults'](config[_0x9a33('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x9a33('0x9'))(new Redis(config['redis']));require(_0x9a33('0xa'))[_0x9a33('0xb')](socket);function respondWithRpcPromise(_0x41ba91,_0x5082c7,_0x46898a){return new BPromise(function(_0x340376,_0x5c70b6){return client[_0x9a33('0xc')](_0x41ba91,_0x46898a)[_0x9a33('0xd')](function(_0x3dddda){logger['info'](_0x9a33('0xe'),_0x5082c7,_0x9a33('0xf'));logger[_0x9a33('0x10')](_0x9a33('0x11'),_0x5082c7,_0x9a33('0xf'),JSON[_0x9a33('0x12')](_0x3dddda));if(_0x3dddda['error']){if(_0x3dddda[_0x9a33('0x13')][_0x9a33('0x14')]===0x1f4){logger[_0x9a33('0x13')](_0x9a33('0xe'),_0x5082c7,_0x3dddda[_0x9a33('0x13')][_0x9a33('0x15')]);return _0x5c70b6(_0x3dddda['error'][_0x9a33('0x15')]);}logger[_0x9a33('0x13')]('ChatWebsite,\x20%s,\x20%s',_0x5082c7,_0x3dddda[_0x9a33('0x13')][_0x9a33('0x15')]);return _0x340376(_0x3dddda[_0x9a33('0x13')]['message']);}else{logger[_0x9a33('0x16')](_0x9a33('0xe'),_0x5082c7,_0x9a33('0xf'));_0x340376(_0x3dddda[_0x9a33('0x17')]['message']);}})[_0x9a33('0x18')](function(_0x1c02d3){logger['error'](_0x9a33('0xe'),_0x5082c7,_0x1c02d3);_0x5c70b6(_0x1c02d3);});});}
\ No newline at end of file
+var _0xea4c=['socket.io-emitter','register','request','then','info','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatWebsite,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x3b4a81,_0x2400b7){var _0x13fd35=function(_0x561fb2){while(--_0x561fb2){_0x3b4a81['push'](_0x3b4a81['shift']());}};_0x13fd35(++_0x2400b7);}(_0xea4c,0x13b));var _0xcea4=function(_0x472baf,_0x14643f){_0x472baf=_0x472baf-0x0;var _0x5e1a2c=_0xea4c[_0x472baf];return _0x5e1a2c;};'use strict';var _=require(_0xcea4('0x0'));var util=require('util');var moment=require(_0xcea4('0x1'));var BPromise=require(_0xcea4('0x2'));var rs=require(_0xcea4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcea4('0x4'))['db'];var utils=require(_0xcea4('0x5'));var logger=require(_0xcea4('0x6'))(_0xcea4('0x7'));var config=require(_0xcea4('0x8'));var jayson=require(_0xcea4('0x9'));var client=jayson[_0xcea4('0xa')][_0xcea4('0xb')]({'port':0x232a});config[_0xcea4('0xc')]=_[_0xcea4('0xd')](config['redis'],{'host':_0xcea4('0xe'),'port':0x18eb});var socket=require(_0xcea4('0xf'))(new Redis(config[_0xcea4('0xc')]));require('./chatWebsite.socket')[_0xcea4('0x10')](socket);function respondWithRpcPromise(_0x9a2da6,_0x1215f6,_0x3186da){return new BPromise(function(_0x356475,_0x173081){return client[_0xcea4('0x11')](_0x9a2da6,_0x3186da)[_0xcea4('0x12')](function(_0x14688f){logger[_0xcea4('0x13')]('ChatWebsite,\x20%s,\x20%s',_0x1215f6,_0xcea4('0x14'));logger[_0xcea4('0x15')](_0xcea4('0x16'),_0x1215f6,_0xcea4('0x14'),JSON[_0xcea4('0x17')](_0x14688f));if(_0x14688f['error']){if(_0x14688f[_0xcea4('0x18')][_0xcea4('0x19')]===0x1f4){logger[_0xcea4('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x1215f6,_0x14688f[_0xcea4('0x18')]['message']);return _0x173081(_0x14688f[_0xcea4('0x18')][_0xcea4('0x1a')]);}logger[_0xcea4('0x18')](_0xcea4('0x1b'),_0x1215f6,_0x14688f[_0xcea4('0x18')][_0xcea4('0x1a')]);return _0x356475(_0x14688f[_0xcea4('0x18')]['message']);}else{logger[_0xcea4('0x13')]('ChatWebsite,\x20%s,\x20%s',_0x1215f6,_0xcea4('0x14'));_0x356475(_0x14688f[_0xcea4('0x1c')][_0xcea4('0x1a')]);}})[_0xcea4('0x1d')](function(_0x3e7536){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x1215f6,_0x3e7536);_0x173081(_0x3e7536);});});}
\ No newline at end of file
index 3badc16..2f8a118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f05=['emit','removeListener','register','length','./chatWebsite.events','save','remove','update'];(function(_0x5b6572,_0x324a74){var _0x9e6000=function(_0x1e1d30){while(--_0x1e1d30){_0x5b6572['push'](_0x5b6572['shift']());}};_0x9e6000(++_0x324a74);}(_0x5f05,0x1bc));var _0x55f0=function(_0x5d6a2c,_0x1a513e){_0x5d6a2c=_0x5d6a2c-0x0;var _0x48dafe=_0x5f05[_0x5d6a2c];return _0x48dafe;};'use strict';var ChatWebsiteEvents=require(_0x55f0('0x0'));var events=[_0x55f0('0x1'),_0x55f0('0x2'),_0x55f0('0x3')];function createListener(_0x3a7363,_0x44fb5c){return function(_0x234534){_0x44fb5c[_0x55f0('0x4')](_0x3a7363,_0x234534);};}function removeListener(_0x2f2492,_0x3b48a4){return function(){ChatWebsiteEvents[_0x55f0('0x5')](_0x2f2492,_0x3b48a4);};}exports[_0x55f0('0x6')]=function(_0x14919e){for(var _0x51481c=0x0,_0x24b0e4=events[_0x55f0('0x7')];_0x51481c<_0x24b0e4;_0x51481c++){var _0x54d01b=events[_0x51481c];var _0x1e7370=createListener('chatWebsite:'+_0x54d01b,_0x14919e);ChatWebsiteEvents['on'](_0x54d01b,_0x1e7370);}};
\ No newline at end of file
+var _0xc338=['remove','emit','removeListener','register','length','chatWebsite:','./chatWebsite.events','save'];(function(_0x643169,_0x430fdf){var _0x1fe66b=function(_0x5bc406){while(--_0x5bc406){_0x643169['push'](_0x643169['shift']());}};_0x1fe66b(++_0x430fdf);}(_0xc338,0x156));var _0x8c33=function(_0x59c3cc,_0x46a6ff){_0x59c3cc=_0x59c3cc-0x0;var _0xb4c3e2=_0xc338[_0x59c3cc];return _0xb4c3e2;};'use strict';var ChatWebsiteEvents=require(_0x8c33('0x0'));var events=[_0x8c33('0x1'),_0x8c33('0x2'),'update'];function createListener(_0x2c6800,_0x363a1e){return function(_0x12da0f){_0x363a1e[_0x8c33('0x3')](_0x2c6800,_0x12da0f);};}function removeListener(_0x59de3,_0x455112){return function(){ChatWebsiteEvents[_0x8c33('0x4')](_0x59de3,_0x455112);};}exports[_0x8c33('0x5')]=function(_0x56f1cf){for(var _0x9d0c37=0x0,_0x57d154=events[_0x8c33('0x6')];_0x9d0c37<_0x57d154;_0x9d0c37++){var _0x3430fc=events[_0x9d0c37];var _0x51c6ae=createListener(_0x8c33('0x7')+_0x3430fc,_0x56f1cf);ChatWebsiteEvents['on'](_0x3430fc,_0x51c6ae);}};
\ No newline at end of file
index f435ab8..ad716a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85de=['getSystemAvatar','/:id/interactions','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','getFields','getOfflineMessages','/:id/users','post','create','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','single','file','addLogo','originalname','addAvatar','server/files/images/avatars/','/:id/customer_avatar','addCustomerAvatar','notify','offline','addInteraction','addApplications','addAgents','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','getCustomerAvatar','/:id/system_avatar'];(function(_0x3d2b19,_0x349a5b){var _0x29769b=function(_0x5048ad){while(--_0x5048ad){_0x3d2b19['push'](_0x3d2b19['shift']());}};_0x29769b(++_0x349a5b);}(_0x85de,0x65));var _0xe85d=function(_0x27b1af,_0x1dc81f){_0x27b1af=_0x27b1af-0x0;var _0x1b05bc=_0x85de[_0x27b1af];return _0x1b05bc;};'use strict';var multer=require(_0xe85d('0x0'));var util=require(_0xe85d('0x1'));var path=require(_0xe85d('0x2'));var timeout=require(_0xe85d('0x3'));var express=require(_0xe85d('0x4'));var router=express[_0xe85d('0x5')]();var auth=require('../../components/auth/service');var interaction=require(_0xe85d('0x6'));var config=require(_0xe85d('0x7'));var controller=require(_0xe85d('0x8'));router[_0xe85d('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe85d('0x9')](_0xe85d('0xa'),auth[_0xe85d('0xb')](),controller[_0xe85d('0xc')]);router['get'](_0xe85d('0xd'),auth[_0xe85d('0xb')](),controller[_0xe85d('0xe')]);router[_0xe85d('0x9')](_0xe85d('0xf'),auth[_0xe85d('0xb')](),controller[_0xe85d('0x10')]);router[_0xe85d('0x9')](_0xe85d('0x11'),auth[_0xe85d('0xb')](),controller[_0xe85d('0x12')]);router[_0xe85d('0x9')](_0xe85d('0x13'),controller[_0xe85d('0x14')]);router[_0xe85d('0x9')](_0xe85d('0x15'),controller[_0xe85d('0x16')]);router['get']('/:id/customer_avatar',controller[_0xe85d('0x17')]);router[_0xe85d('0x9')](_0xe85d('0x18'),controller[_0xe85d('0x19')]);router[_0xe85d('0x9')](_0xe85d('0x1a'),auth[_0xe85d('0xb')](),controller['getInteractions']);router['get']('/:id/snippet',controller['getSnippet']);router[_0xe85d('0x9')](_0xe85d('0x1b'),auth['isAuthenticated'](),controller[_0xe85d('0x1c')]);router[_0xe85d('0x9')](_0xe85d('0x1d'),auth['isAuthenticated'](),controller[_0xe85d('0x1e')]);router[_0xe85d('0x9')]('/:id/fields',controller[_0xe85d('0x1f')]);router['get']('/:id/offline_messages',auth[_0xe85d('0xb')](),controller[_0xe85d('0x20')]);router[_0xe85d('0x9')](_0xe85d('0x21'),auth[_0xe85d('0xb')](),controller['getAgents']);router[_0xe85d('0x22')]('/',auth[_0xe85d('0xb')](),controller[_0xe85d('0x23')]);router[_0xe85d('0x22')](_0xe85d('0xf'),auth[_0xe85d('0xb')](),controller[_0xe85d('0x24')]);router[_0xe85d('0x22')](_0xe85d('0x11'),auth['isAuthenticated'](),controller[_0xe85d('0x25')]);var upload=multer({'storage':multer[_0xe85d('0x26')]({'destination':function(_0x46102e,_0x44ce89,_0x8ad2a1){_0x8ad2a1(null,path[_0xe85d('0x27')](config[_0xe85d('0x28')],_0xe85d('0x29')));},'filename':function(_0xeaacbd,_0x46ff2e,_0x9ab102){_0x9ab102(null,util[_0xe85d('0x2a')](_0xe85d('0x2b'),Date[_0xe85d('0x2c')](),_0x46ff2e['originalname']));}})});router['post'](_0xe85d('0x13'),upload[_0xe85d('0x2d')](_0xe85d('0x2e')),controller[_0xe85d('0x2f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2a9da5,_0x200b75,_0x156c85){_0x156c85(null,path['join'](config[_0xe85d('0x28')],'server/files/images/avatars/'));},'filename':function(_0x4bfadc,_0x520067,_0xceff29){_0xceff29(null,util[_0xe85d('0x2a')](_0xe85d('0x2b'),Date[_0xe85d('0x2c')](),_0x520067[_0xe85d('0x30')]));}})});router[_0xe85d('0x22')](_0xe85d('0x15'),upload[_0xe85d('0x2d')](_0xe85d('0x2e')),controller[_0xe85d('0x31')]);var upload=multer({'storage':multer[_0xe85d('0x26')]({'destination':function(_0x52c0d9,_0x4b65da,_0x2df3df){_0x2df3df(null,path[_0xe85d('0x27')](config['root'],_0xe85d('0x32')));},'filename':function(_0x3b8ffd,_0x31ddf3,_0x5cff52){_0x5cff52(null,util[_0xe85d('0x2a')](_0xe85d('0x2b'),Date['now'](),_0x31ddf3[_0xe85d('0x30')]));}})});router['post'](_0xe85d('0x33'),upload[_0xe85d('0x2d')]('file'),controller[_0xe85d('0x34')]);var upload=multer({'storage':multer[_0xe85d('0x26')]({'destination':function(_0x530a71,_0x65dc8b,_0x399bab){_0x399bab(null,path[_0xe85d('0x27')](config[_0xe85d('0x28')],_0xe85d('0x32')));},'filename':function(_0x34a3af,_0x169c0b,_0x343e0b){_0x343e0b(null,util[_0xe85d('0x2a')](_0xe85d('0x2b'),Date[_0xe85d('0x2c')](),_0x169c0b['originalname']));}})});router[_0xe85d('0x22')](_0xe85d('0x18'),upload['single'](_0xe85d('0x2e')),controller['addSystemAvatar']);router[_0xe85d('0x22')]('/:id/notify',controller[_0xe85d('0x35')]);router[_0xe85d('0x22')]('/:id/offline',controller[_0xe85d('0x36')]);router[_0xe85d('0x22')](_0xe85d('0x1a'),auth[_0xe85d('0xb')](),controller[_0xe85d('0x37')]);router[_0xe85d('0x22')](_0xe85d('0x1b'),auth['isAuthenticated'](),controller[_0xe85d('0x38')]);router[_0xe85d('0x22')]('/:id/proactive_actions',auth[_0xe85d('0xb')](),controller['addProactiveActions']);router[_0xe85d('0x22')](_0xe85d('0x21'),auth[_0xe85d('0xb')](),controller[_0xe85d('0x39')]);router['put']('/:id',auth[_0xe85d('0xb')](),controller[_0xe85d('0x3a')]);router[_0xe85d('0x3b')](_0xe85d('0xd'),auth['isAuthenticated'](),controller[_0xe85d('0x3c')]);router[_0xe85d('0x3b')]('/:id/dispositions',auth[_0xe85d('0xb')](),controller['removeDispositions']);router['delete'](_0xe85d('0x11'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0xe85d('0x3b')]('/:id/users',auth[_0xe85d('0xb')](),controller[_0xe85d('0x3d')]);module[_0xe85d('0x3e')]=router;
\ No newline at end of file
+var _0xe0c1=['file','addLogo','join','server/files/images/avatars/','format','addAvatar','root','/:id/notify','notify','/:id/offline','offline','/:id/proactive_actions','addProactiveActions','put','destroy','removeDispositions','/:id/canned_answers','removeAnswers','delete','multer','util','path','connect-timeout','express','Router','../../components/auth/service','get','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','getProactiveActions','/:id/fields','getOfflineMessages','/:id/users','getAgents','post','addDisposition','addAnswer','diskStorage','server/files/images/logos/','%s-%s','now','originalname','/:id/logo','single'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0xe0c1,0x10f));var _0x1e0c=function(_0x53b906,_0x238c0d){_0x53b906=_0x53b906-0x0;var _0x3d5a6b=_0xe0c1[_0x53b906];return _0x3d5a6b;};'use strict';var multer=require(_0x1e0c('0x0'));var util=require(_0x1e0c('0x1'));var path=require(_0x1e0c('0x2'));var timeout=require(_0x1e0c('0x3'));var express=require(_0x1e0c('0x4'));var router=express[_0x1e0c('0x5')]();var auth=require(_0x1e0c('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatWebsite.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x1e0c('0x7')](_0x1e0c('0x8'),auth[_0x1e0c('0x9')](),controller[_0x1e0c('0xa')]);router[_0x1e0c('0x7')](_0x1e0c('0xb'),auth[_0x1e0c('0x9')](),controller[_0x1e0c('0xc')]);router['get'](_0x1e0c('0xd'),auth[_0x1e0c('0x9')](),controller[_0x1e0c('0xe')]);router[_0x1e0c('0x7')]('/:id/canned_answers',auth[_0x1e0c('0x9')](),controller[_0x1e0c('0xf')]);router[_0x1e0c('0x7')]('/:id/logo',controller[_0x1e0c('0x10')]);router['get'](_0x1e0c('0x11'),controller[_0x1e0c('0x12')]);router[_0x1e0c('0x7')](_0x1e0c('0x13'),controller[_0x1e0c('0x14')]);router[_0x1e0c('0x7')](_0x1e0c('0x15'),controller[_0x1e0c('0x16')]);router[_0x1e0c('0x7')](_0x1e0c('0x17'),auth['isAuthenticated'](),controller[_0x1e0c('0x18')]);router['get'](_0x1e0c('0x19'),controller[_0x1e0c('0x1a')]);router[_0x1e0c('0x7')](_0x1e0c('0x1b'),auth[_0x1e0c('0x9')](),controller[_0x1e0c('0x1c')]);router[_0x1e0c('0x7')]('/:id/proactive_actions',auth[_0x1e0c('0x9')](),controller[_0x1e0c('0x1d')]);router[_0x1e0c('0x7')](_0x1e0c('0x1e'),controller['getFields']);router['get']('/:id/offline_messages',auth[_0x1e0c('0x9')](),controller[_0x1e0c('0x1f')]);router[_0x1e0c('0x7')](_0x1e0c('0x20'),auth[_0x1e0c('0x9')](),controller[_0x1e0c('0x21')]);router[_0x1e0c('0x22')]('/',auth[_0x1e0c('0x9')](),controller['create']);router['post'](_0x1e0c('0xd'),auth[_0x1e0c('0x9')](),controller[_0x1e0c('0x23')]);router[_0x1e0c('0x22')]('/:id/canned_answers',auth[_0x1e0c('0x9')](),controller[_0x1e0c('0x24')]);var upload=multer({'storage':multer[_0x1e0c('0x25')]({'destination':function(_0x1cf772,_0x3d5f10,_0x1697a4){_0x1697a4(null,path['join'](config['root'],_0x1e0c('0x26')));},'filename':function(_0x3867c6,_0x4296b5,_0x46eb21){_0x46eb21(null,util['format'](_0x1e0c('0x27'),Date[_0x1e0c('0x28')](),_0x4296b5[_0x1e0c('0x29')]));}})});router['post'](_0x1e0c('0x2a'),upload[_0x1e0c('0x2b')](_0x1e0c('0x2c')),controller[_0x1e0c('0x2d')]);var upload=multer({'storage':multer[_0x1e0c('0x25')]({'destination':function(_0x4e0cea,_0x6ffd65,_0x582a18){_0x582a18(null,path[_0x1e0c('0x2e')](config['root'],_0x1e0c('0x2f')));},'filename':function(_0x11f42a,_0x36c0cb,_0x28422a){_0x28422a(null,util[_0x1e0c('0x30')]('%s-%s',Date[_0x1e0c('0x28')](),_0x36c0cb[_0x1e0c('0x29')]));}})});router['post']('/:id/avatar',upload[_0x1e0c('0x2b')]('file'),controller[_0x1e0c('0x31')]);var upload=multer({'storage':multer[_0x1e0c('0x25')]({'destination':function(_0xca3b86,_0x47424e,_0xa7bb00){_0xa7bb00(null,path[_0x1e0c('0x2e')](config[_0x1e0c('0x32')],_0x1e0c('0x2f')));},'filename':function(_0x1f3273,_0x12675a,_0x533b9c){_0x533b9c(null,util[_0x1e0c('0x30')]('%s-%s',Date[_0x1e0c('0x28')](),_0x12675a['originalname']));}})});router[_0x1e0c('0x22')]('/:id/customer_avatar',upload[_0x1e0c('0x2b')](_0x1e0c('0x2c')),controller['addCustomerAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4c92f2,_0x17bb3e,_0x5ee462){_0x5ee462(null,path['join'](config[_0x1e0c('0x32')],_0x1e0c('0x2f')));},'filename':function(_0x14fa00,_0x249e81,_0x293bef){_0x293bef(null,util[_0x1e0c('0x30')]('%s-%s',Date[_0x1e0c('0x28')](),_0x249e81[_0x1e0c('0x29')]));}})});router[_0x1e0c('0x22')](_0x1e0c('0x15'),upload[_0x1e0c('0x2b')](_0x1e0c('0x2c')),controller['addSystemAvatar']);router[_0x1e0c('0x22')](_0x1e0c('0x33'),controller[_0x1e0c('0x34')]);router[_0x1e0c('0x22')](_0x1e0c('0x35'),controller[_0x1e0c('0x36')]);router['post'](_0x1e0c('0x17'),auth[_0x1e0c('0x9')](),controller['addInteraction']);router[_0x1e0c('0x22')](_0x1e0c('0x1b'),auth['isAuthenticated'](),controller['addApplications']);router[_0x1e0c('0x22')](_0x1e0c('0x37'),auth[_0x1e0c('0x9')](),controller[_0x1e0c('0x38')]);router['post']('/:id/users',auth[_0x1e0c('0x9')](),controller['addAgents']);router[_0x1e0c('0x39')](_0x1e0c('0xb'),auth[_0x1e0c('0x9')](),controller['update']);router['delete'](_0x1e0c('0xb'),auth['isAuthenticated'](),controller[_0x1e0c('0x3a')]);router['delete'](_0x1e0c('0xd'),auth['isAuthenticated'](),controller[_0x1e0c('0x3b')]);router['delete'](_0x1e0c('0x3c'),auth[_0x1e0c('0x9')](),controller[_0x1e0c('0x3d')]);router[_0x1e0c('0x3e')](_0x1e0c('0x20'),auth[_0x1e0c('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index fd8630f..1a1c52a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4258=['name','exports','STRING'];(function(_0x2c4a60,_0x282a14){var _0x11b5e3=function(_0x4362ed){while(--_0x4362ed){_0x2c4a60['push'](_0x2c4a60['shift']());}};_0x11b5e3(++_0x282a14);}(_0x4258,0xb8));var _0x8425=function(_0x5962e3,_0x3cc6e6){_0x5962e3=_0x5962e3-0x0;var _0x560dc3=_0x4258[_0x5962e3];return _0x560dc3;};'use strict';var Sequelize=require('sequelize');module[_0x8425('0x0')]={'name':{'type':Sequelize[_0x8425('0x1')],'unique':_0x8425('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x8425('0x1')]},'companyId':{'type':Sequelize[_0x8425('0x1')]},'website':{'type':Sequelize[_0x8425('0x1')]},'phone':{'type':Sequelize[_0x8425('0x1')]},'fax':{'type':Sequelize[_0x8425('0x1')]},'type':{'type':Sequelize[_0x8425('0x1')]},'street':{'type':Sequelize[_0x8425('0x1')]},'postalCode':{'type':Sequelize[_0x8425('0x1')]},'city':{'type':Sequelize[_0x8425('0x1')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x8425('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x8425('0x1')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x8425('0x1')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8425('0x1')]}};
\ No newline at end of file
+var _0x7422=['STRING','name','exports'];(function(_0x497642,_0x55c481){var _0x351a14=function(_0xcc4e3b){while(--_0xcc4e3b){_0x497642['push'](_0x497642['shift']());}};_0x351a14(++_0x55c481);}(_0x7422,0x1d6));var _0x2742=function(_0x4a3240,_0x79bab9){_0x4a3240=_0x4a3240-0x0;var _0x2de249=_0x7422[_0x4a3240];return _0x2de249;};'use strict';var Sequelize=require('sequelize');module[_0x2742('0x0')]={'name':{'type':Sequelize[_0x2742('0x1')],'unique':_0x2742('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x2742('0x1')]},'companyId':{'type':Sequelize[_0x2742('0x1')]},'website':{'type':Sequelize[_0x2742('0x1')]},'phone':{'type':Sequelize[_0x2742('0x1')]},'fax':{'type':Sequelize[_0x2742('0x1')]},'type':{'type':Sequelize[_0x2742('0x1')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x2742('0x1')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x2742('0x1')]},'email':{'type':Sequelize[_0x2742('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x2742('0x1')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x2742('0x1')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x2742('0x1')]},'description':{'type':Sequelize[_0x2742('0x1')]}};
\ No newline at end of file
index 2941802..cb05a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e20=['util','path','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','count','offset','set','apply','reject','save','update','then','destroy','get','Companies','UserProfileResource','end','error','name','send','index','CmCompany','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','limit','order','sort','where','add','day','merge','filter','map','type','key','field','include','rows','catch','show','params','includeAll','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','ids','getContacts','hasOwnProperty','nolimit','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x4e20,0x155));var _0x04e2=function(_0x509273,_0x13fc9f){_0x509273=_0x509273-0x0;var _0x38ef40=_0x4e20[_0x509273];return _0x38ef40;};'use strict';var pdf=require(_0x04e2('0x0'));var emlformat=require(_0x04e2('0x1'));var rimraf=require(_0x04e2('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x04e2('0x3'));var rp=require(_0x04e2('0x4'));var moment=require(_0x04e2('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x04e2('0x6'));var util=require(_0x04e2('0x7'));var path=require(_0x04e2('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x04e2('0x9'));var fs=require('fs');var _=require(_0x04e2('0xa'));var squel=require(_0x04e2('0xb'));var crypto=require(_0x04e2('0xc'));var jsforce=require(_0x04e2('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x04e2('0xe'));var querystring=require(_0x04e2('0xf'));var Papa=require(_0x04e2('0x10'));var Redis=require(_0x04e2('0x11'));var qs=require('../../components/parsers/qs');var logger=require(_0x04e2('0x12'))(_0x04e2('0x13'));var utils=require(_0x04e2('0x14'));var config=require('../../config/environment');var db=require(_0x04e2('0x15'))['db'];function respondWithStatusCode(_0x1355c4,_0x586dcf){_0x586dcf=_0x586dcf||0xcc;return function(_0x1ea7a4){if(_0x1ea7a4){return _0x1355c4[_0x04e2('0x16')](_0x586dcf);}return _0x1355c4[_0x04e2('0x17')](_0x586dcf)['end']();};}function respondWithResult(_0x352758,_0xf4a5e){_0xf4a5e=_0xf4a5e||0xc8;return function(_0x3b0898){if(_0x3b0898){return _0x352758['status'](_0xf4a5e)[_0x04e2('0x18')](_0x3b0898);}};}function respondWithFilteredResult(_0x1e07db,_0x140db7){return function(_0x1f61b6){if(_0x1f61b6){var _0x314521=_0x1f61b6[_0x04e2('0x19')],_0x507d82=_0x140db7[_0x04e2('0x1a')],_0x465430=_0x140db7[_0x04e2('0x1a')]+_0x140db7['limit'],_0xf6f1ef;if(_0x465430>=_0x314521){_0x465430=_0x314521;_0xf6f1ef=0xc8;}else{_0xf6f1ef=0xce;}_0x1e07db['status'](_0xf6f1ef);return _0x1e07db[_0x04e2('0x1b')]('Content-Range',_0x507d82+'-'+_0x465430+'/'+_0x314521)[_0x04e2('0x18')](_0x1f61b6);}return null;};}function patchUpdates(_0x5b9b1d){return function(_0x2f77b1){try{jsonpatch[_0x04e2('0x1c')](_0x2f77b1,_0x5b9b1d,!![]);}catch(_0x1a22fc){return BPromise[_0x04e2('0x1d')](_0x1a22fc);}return _0x2f77b1[_0x04e2('0x1e')]();};}function saveUpdates(_0x4a267b,_0x323439){return function(_0x2d1035){if(_0x2d1035){return _0x2d1035[_0x04e2('0x1f')](_0x4a267b)[_0x04e2('0x20')](function(_0x4456c9){return _0x4456c9;});}return null;};}function removeEntity(_0x3e79d3,_0x1d0d07){return function(_0x5cbf91){if(_0x5cbf91){return _0x5cbf91[_0x04e2('0x21')]()[_0x04e2('0x20')](function(){var _0x35b8ee=_0x5cbf91[_0x04e2('0x22')]({'plain':!![]});var _0x45fb49=_0x04e2('0x23');return db[_0x04e2('0x24')][_0x04e2('0x21')]({'where':{'type':_0x45fb49,'resourceId':_0x35b8ee['id']}})[_0x04e2('0x20')](function(){return _0x5cbf91;});})[_0x04e2('0x20')](function(){_0x3e79d3['status'](0xcc)[_0x04e2('0x25')]();});}};}function handleEntityNotFound(_0x59923f,_0x2b8563){return function(_0xb1fea4){if(!_0xb1fea4){_0x59923f[_0x04e2('0x16')](0x194);}return _0xb1fea4;};}function handleError(_0x2c9555,_0x5e35a6){_0x5e35a6=_0x5e35a6||0x1f4;return function(_0x5b0b4c){logger[_0x04e2('0x26')](_0x5b0b4c['stack']);if(_0x5b0b4c['name']){delete _0x5b0b4c[_0x04e2('0x27')];}_0x2c9555[_0x04e2('0x17')](_0x5e35a6)[_0x04e2('0x28')](_0x5b0b4c);};}exports[_0x04e2('0x29')]=function(_0x20b58c,_0x40deb1){var _0x51a03d={},_0x2d7892={},_0x458e7e={'count':0x0,'rows':[]};var _0x351440=db[_0x04e2('0x2a')][_0x04e2('0x2b')];_0x2d7892[_0x04e2('0x2c')]=_[_0x04e2('0x2d')](_0x351440);var _0x2ebb2c={'dateStart':_0x20b58c[_0x04e2('0x2e')][_0x04e2('0x2f')],'dateEnd':_0x20b58c['query'][_0x04e2('0x30')]};delete _0x20b58c[_0x04e2('0x2e')]['dateStart'];delete _0x20b58c[_0x04e2('0x2e')][_0x04e2('0x30')];_0x2d7892[_0x04e2('0x2e')]=_[_0x04e2('0x2d')](_0x20b58c['query']);_0x2d7892[_0x04e2('0x31')]=_[_0x04e2('0x32')](_0x2d7892[_0x04e2('0x2c')],_0x2d7892[_0x04e2('0x2e')]);_0x51a03d[_0x04e2('0x33')]=_['intersection'](_0x2d7892[_0x04e2('0x2c')],qs['fields'](_0x20b58c['query'][_0x04e2('0x34')]));_0x51a03d[_0x04e2('0x33')]=_0x51a03d['attributes'][_0x04e2('0x35')]?_0x51a03d[_0x04e2('0x33')]:_0x2d7892['model'];if(!_0x20b58c[_0x04e2('0x2e')]['hasOwnProperty']('nolimit')){_0x51a03d[_0x04e2('0x36')]=qs[_0x04e2('0x36')](_0x20b58c[_0x04e2('0x2e')][_0x04e2('0x36')]);_0x51a03d['offset']=qs['offset'](_0x20b58c[_0x04e2('0x2e')]['offset']);}_0x51a03d[_0x04e2('0x37')]=qs[_0x04e2('0x38')](_0x20b58c[_0x04e2('0x2e')][_0x04e2('0x38')]);_0x51a03d[_0x04e2('0x39')]=qs['filters'](_['pick'](_0x20b58c['query'],_0x2d7892[_0x04e2('0x31')]));if(_0x2ebb2c['dateStart']){if(_0x2ebb2c['dateEnd']){_0x2ebb2c[_0x04e2('0x30')]=moment(_0x2ebb2c[_0x04e2('0x30')])[_0x04e2('0x3a')](0x1,_0x04e2('0x3b'));}else{_0x2ebb2c[_0x04e2('0x30')]=moment(_0x2ebb2c[_0x04e2('0x2f')])[_0x04e2('0x3a')](0x1,_0x04e2('0x3b'));}_[_0x04e2('0x3c')](_0x51a03d[_0x04e2('0x39')],{'createdAt':{'$gte':_0x2ebb2c[_0x04e2('0x2f')],'$lte':_0x2ebb2c[_0x04e2('0x30')]}});}if(_0x20b58c['query'][_0x04e2('0x3d')]){_0x51a03d[_0x04e2('0x39')]=_[_0x04e2('0x3c')](_0x51a03d[_0x04e2('0x39')],{'$or':_[_0x04e2('0x3e')](_0x351440,function(_0x4858a3){if(_0x4858a3[_0x04e2('0x3f')][_0x04e2('0x40')]!=='VIRTUAL'){var _0x55b09f={};_0x55b09f[_0x4858a3[_0x04e2('0x41')]]={'$like':'%'+_0x20b58c['query'][_0x04e2('0x3d')]+'%'};return _0x55b09f;}})});}_0x51a03d=_[_0x04e2('0x3c')]({},_0x51a03d,_0x20b58c['options']);var _0x29f4b9={'where':_0x51a03d[_0x04e2('0x39')]};return db[_0x04e2('0x2a')][_0x04e2('0x19')](_0x29f4b9)[_0x04e2('0x20')](function(_0x478168){_0x458e7e[_0x04e2('0x19')]=_0x478168;if(_0x20b58c['query']['includeAll']){_0x51a03d[_0x04e2('0x42')]=[{'all':!![]}];}return db['CmCompany']['findAll'](_0x51a03d);})['then'](function(_0x47d906){_0x458e7e[_0x04e2('0x43')]=_0x47d906;return _0x458e7e;})[_0x04e2('0x20')](respondWithFilteredResult(_0x40deb1,_0x51a03d))[_0x04e2('0x44')](handleError(_0x40deb1,null));};exports[_0x04e2('0x45')]=function(_0x139ae1,_0x11bb35){var _0x1b7545={'raw':![],'where':{'id':_0x139ae1[_0x04e2('0x46')]['id']}},_0x2907b4={};_0x2907b4[_0x04e2('0x2c')]=_[_0x04e2('0x2d')](db[_0x04e2('0x2a')][_0x04e2('0x2b')]);_0x2907b4[_0x04e2('0x2e')]=_[_0x04e2('0x2d')](_0x139ae1[_0x04e2('0x2e')]);_0x2907b4[_0x04e2('0x31')]=_[_0x04e2('0x32')](_0x2907b4[_0x04e2('0x2c')],_0x2907b4[_0x04e2('0x2e')]);_0x1b7545[_0x04e2('0x33')]=_[_0x04e2('0x32')](_0x2907b4[_0x04e2('0x2c')],qs[_0x04e2('0x34')](_0x139ae1[_0x04e2('0x2e')]['fields']));_0x1b7545[_0x04e2('0x33')]=_0x1b7545[_0x04e2('0x33')][_0x04e2('0x35')]?_0x1b7545['attributes']:_0x2907b4[_0x04e2('0x2c')];if(_0x139ae1[_0x04e2('0x2e')][_0x04e2('0x47')]){_0x1b7545[_0x04e2('0x42')]=[{'all':!![]}];}_0x1b7545=_[_0x04e2('0x3c')]({},_0x1b7545,_0x139ae1[_0x04e2('0x48')]);return db['CmCompany'][_0x04e2('0x49')](_0x1b7545)[_0x04e2('0x20')](handleEntityNotFound(_0x11bb35,null))[_0x04e2('0x20')](respondWithResult(_0x11bb35,null))['catch'](handleError(_0x11bb35,null));};exports[_0x04e2('0x4a')]=function(_0x1cbff1,_0x46edac){return db[_0x04e2('0x2a')][_0x04e2('0x4a')](_0x1cbff1[_0x04e2('0x4b')],{})[_0x04e2('0x20')](function(_0x3542e2){var _0x1c679a=_0x1cbff1['user'][_0x04e2('0x22')]({'plain':!![]});if(!_0x1c679a)throw new Error(_0x04e2('0x4c'));if(_0x1c679a[_0x04e2('0x4d')]==='user'){var _0x39724d=_0x3542e2[_0x04e2('0x22')]({'plain':!![]});var _0x1b9e84=_0x04e2('0x23');return db[_0x04e2('0x4e')][_0x04e2('0x49')]({'where':{'name':_0x1b9e84,'userProfileId':_0x1c679a['userProfileId']},'raw':!![]})[_0x04e2('0x20')](function(_0x1b3c72){if(_0x1b3c72&&_0x1b3c72[_0x04e2('0x4f')]===0x0){return db[_0x04e2('0x24')][_0x04e2('0x4a')]({'name':_0x39724d[_0x04e2('0x27')],'resourceId':_0x39724d['id'],'type':_0x1b3c72['name'],'sectionId':_0x1b3c72['id']},{})[_0x04e2('0x20')](function(){return _0x3542e2;});}else{return _0x3542e2;}})[_0x04e2('0x44')](function(_0x80fe92){logger[_0x04e2('0x26')](_0x04e2('0x50'),_0x80fe92);throw _0x80fe92;});}return _0x3542e2;})[_0x04e2('0x20')](respondWithResult(_0x46edac,0xc9))[_0x04e2('0x44')](handleError(_0x46edac,null));};exports['update']=function(_0x5733a4,_0x14c8f5){if(_0x5733a4[_0x04e2('0x4b')]['id']){delete _0x5733a4[_0x04e2('0x4b')]['id'];}return db[_0x04e2('0x2a')][_0x04e2('0x49')]({'where':{'id':_0x5733a4[_0x04e2('0x46')]['id']}})[_0x04e2('0x20')](handleEntityNotFound(_0x14c8f5,null))[_0x04e2('0x20')](saveUpdates(_0x5733a4['body'],null))[_0x04e2('0x20')](respondWithResult(_0x14c8f5,null))[_0x04e2('0x44')](handleError(_0x14c8f5,null));};exports['destroy']=function(_0x1f5e89,_0x59fed6){return db[_0x04e2('0x2a')]['find']({'where':{'id':_0x1f5e89[_0x04e2('0x46')]['id']}})[_0x04e2('0x20')](handleEntityNotFound(_0x59fed6,null))[_0x04e2('0x20')](removeEntity(_0x59fed6,null))[_0x04e2('0x44')](handleError(_0x59fed6,null));};exports[_0x04e2('0x51')]=function(_0x345171,_0x2abdac,_0x5efe3c){return db[_0x04e2('0x52')][_0x04e2('0x49')]({'where':{'id':_0x345171[_0x04e2('0x46')]['id']}})['then'](handleEntityNotFound(_0x2abdac,null))['then'](function(_0x56e393){if(_0x56e393){return _0x56e393[_0x04e2('0x51')](_0x345171[_0x04e2('0x4b')][_0x04e2('0x53')],_['omit'](_0x345171[_0x04e2('0x4b')],[_0x04e2('0x53'),'id'])||{});}})[_0x04e2('0x20')](respondWithResult(_0x2abdac,null))[_0x04e2('0x44')](handleError(_0x2abdac,null));};exports[_0x04e2('0x54')]=function(_0x11b7eb,_0x37c599,_0x21a3ac){var _0x1a960b={};var _0x5e9a41={};var _0x1b16d7;var _0x5e71d9;return db[_0x04e2('0x2a')]['findOne']({'where':{'id':_0x11b7eb[_0x04e2('0x46')]['id']}})[_0x04e2('0x20')](handleEntityNotFound(_0x37c599,null))['then'](function(_0x4fbe37){if(_0x4fbe37){_0x1b16d7=_0x4fbe37;_0x5e9a41[_0x04e2('0x2c')]=_[_0x04e2('0x2d')](db[_0x04e2('0x52')][_0x04e2('0x2b')]);_0x5e9a41['query']=_[_0x04e2('0x2d')](_0x11b7eb[_0x04e2('0x2e')]);_0x5e9a41[_0x04e2('0x31')]=_['intersection'](_0x5e9a41['model'],_0x5e9a41[_0x04e2('0x2e')]);_0x1a960b[_0x04e2('0x33')]=_['intersection'](_0x5e9a41[_0x04e2('0x2c')],qs[_0x04e2('0x34')](_0x11b7eb[_0x04e2('0x2e')][_0x04e2('0x34')]));_0x1a960b['attributes']=_0x1a960b[_0x04e2('0x33')][_0x04e2('0x35')]?_0x1a960b[_0x04e2('0x33')]:_0x5e9a41['model'];_0x1a960b['order']=qs['sort'](_0x11b7eb[_0x04e2('0x2e')][_0x04e2('0x38')]);_0x1a960b[_0x04e2('0x39')]=qs['filters'](_['pick'](_0x11b7eb[_0x04e2('0x2e')],_0x5e9a41[_0x04e2('0x31')]));if(_0x11b7eb[_0x04e2('0x2e')][_0x04e2('0x3d')]){_0x1a960b[_0x04e2('0x39')]=_[_0x04e2('0x3c')](_0x1a960b[_0x04e2('0x39')],{'$or':_['map'](_0x1a960b['attributes'],function(_0x7aff29){var _0x22ccc9={};_0x22ccc9[_0x7aff29]={'$like':'%'+_0x11b7eb[_0x04e2('0x2e')]['filter']+'%'};return _0x22ccc9;})});}_0x1a960b=_[_0x04e2('0x3c')]({},_0x1a960b,_0x11b7eb[_0x04e2('0x48')]);return _0x1b16d7['getContacts'](_0x1a960b);}})[_0x04e2('0x20')](function(_0x29f126){if(_0x29f126){_0x5e71d9=_0x29f126[_0x04e2('0x35')];if(!_0x11b7eb[_0x04e2('0x2e')][_0x04e2('0x55')](_0x04e2('0x56'))){_0x1a960b[_0x04e2('0x36')]=qs[_0x04e2('0x36')](_0x11b7eb['query'][_0x04e2('0x36')]);_0x1a960b[_0x04e2('0x1a')]=qs[_0x04e2('0x1a')](_0x11b7eb[_0x04e2('0x2e')][_0x04e2('0x1a')]);}return _0x1b16d7[_0x04e2('0x54')](_0x1a960b);}})[_0x04e2('0x20')](function(_0x227062){if(_0x227062){return _0x227062?{'count':_0x5e71d9,'rows':_0x227062}:null;}})['then'](respondWithResult(_0x37c599,null))[_0x04e2('0x44')](handleError(_0x37c599,null));};
\ No newline at end of file
+var _0xd1bd=['findAll','rows','catch','show','params','rawAttributes','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addContacts','ids','getContacts','CmContact','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','status','end','count','offset','limit','set','apply','reject','save','then','destroy','get','Companies','UserProfileResource','sendStatus','error','name','send','index','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','filter','map','type','key','VIRTUAL','field','options','includeAll','CmCompany'];(function(_0x17d928,_0x15f099){var _0x2c812c=function(_0x5e42db){while(--_0x5e42db){_0x17d928['push'](_0x17d928['shift']());}};_0x2c812c(++_0x15f099);}(_0xd1bd,0x117));var _0xdd1b=function(_0x2f0f3c,_0x8a0355){_0x2f0f3c=_0x2f0f3c-0x0;var _0x50a809=_0xd1bd[_0x2f0f3c];return _0x50a809;};'use strict';var pdf=require(_0xdd1b('0x0'));var emlformat=require(_0xdd1b('0x1'));var rimraf=require(_0xdd1b('0x2'));var zipdir=require(_0xdd1b('0x3'));var jsonpatch=require(_0xdd1b('0x4'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xdd1b('0x5'));var Mustache=require(_0xdd1b('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdd1b('0x7'));var fs=require('fs');var _=require(_0xdd1b('0x8'));var squel=require(_0xdd1b('0x9'));var crypto=require('crypto');var jsforce=require(_0xdd1b('0xa'));var deskjs=require(_0xdd1b('0xb'));var toCsv=require(_0xdd1b('0xc'));var querystring=require(_0xdd1b('0xd'));var Papa=require(_0xdd1b('0xe'));var Redis=require('ioredis');var qs=require(_0xdd1b('0xf'));var logger=require(_0xdd1b('0x10'))('api');var utils=require(_0xdd1b('0x11'));var config=require(_0xdd1b('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13c748,_0x5cd7e4){_0x5cd7e4=_0x5cd7e4||0xcc;return function(_0x1dcbe4){if(_0x1dcbe4){return _0x13c748['sendStatus'](_0x5cd7e4);}return _0x13c748[_0xdd1b('0x13')](_0x5cd7e4)[_0xdd1b('0x14')]();};}function respondWithResult(_0x3592ee,_0x25ef50){_0x25ef50=_0x25ef50||0xc8;return function(_0x52f96a){if(_0x52f96a){return _0x3592ee[_0xdd1b('0x13')](_0x25ef50)['json'](_0x52f96a);}};}function respondWithFilteredResult(_0x386634,_0x56d26c){return function(_0x339cf4){if(_0x339cf4){var _0x1148e2=_0x339cf4[_0xdd1b('0x15')],_0x37c6c2=_0x56d26c[_0xdd1b('0x16')],_0x11e5e1=_0x56d26c[_0xdd1b('0x16')]+_0x56d26c[_0xdd1b('0x17')],_0x92c4cf;if(_0x11e5e1>=_0x1148e2){_0x11e5e1=_0x1148e2;_0x92c4cf=0xc8;}else{_0x92c4cf=0xce;}_0x386634[_0xdd1b('0x13')](_0x92c4cf);return _0x386634[_0xdd1b('0x18')]('Content-Range',_0x37c6c2+'-'+_0x11e5e1+'/'+_0x1148e2)['json'](_0x339cf4);}return null;};}function patchUpdates(_0x5357f4){return function(_0x51f270){try{jsonpatch[_0xdd1b('0x19')](_0x51f270,_0x5357f4,!![]);}catch(_0x11fcee){return BPromise[_0xdd1b('0x1a')](_0x11fcee);}return _0x51f270[_0xdd1b('0x1b')]();};}function saveUpdates(_0x198677,_0x4c073d){return function(_0x4b0264){if(_0x4b0264){return _0x4b0264['update'](_0x198677)[_0xdd1b('0x1c')](function(_0x1e9472){return _0x1e9472;});}return null;};}function removeEntity(_0xb0977a,_0xa68966){return function(_0x22d9c4){if(_0x22d9c4){return _0x22d9c4[_0xdd1b('0x1d')]()[_0xdd1b('0x1c')](function(){var _0x48eb72=_0x22d9c4[_0xdd1b('0x1e')]({'plain':!![]});var _0x3061c2=_0xdd1b('0x1f');return db[_0xdd1b('0x20')][_0xdd1b('0x1d')]({'where':{'type':_0x3061c2,'resourceId':_0x48eb72['id']}})[_0xdd1b('0x1c')](function(){return _0x22d9c4;});})[_0xdd1b('0x1c')](function(){_0xb0977a[_0xdd1b('0x13')](0xcc)[_0xdd1b('0x14')]();});}};}function handleEntityNotFound(_0x4d790a,_0x417540){return function(_0x32721c){if(!_0x32721c){_0x4d790a[_0xdd1b('0x21')](0x194);}return _0x32721c;};}function handleError(_0x6e46d5,_0x327506){_0x327506=_0x327506||0x1f4;return function(_0x5da1e6){logger[_0xdd1b('0x22')](_0x5da1e6['stack']);if(_0x5da1e6[_0xdd1b('0x23')]){delete _0x5da1e6[_0xdd1b('0x23')];}_0x6e46d5['status'](_0x327506)[_0xdd1b('0x24')](_0x5da1e6);};}exports[_0xdd1b('0x25')]=function(_0x3cf2c1,_0x3bb7c8){var _0x4c746c={},_0x4c8ee9={},_0x543c14={'count':0x0,'rows':[]};var _0x2b82fe=db['CmCompany']['rawAttributes'];_0x4c8ee9[_0xdd1b('0x26')]=_[_0xdd1b('0x27')](_0x2b82fe);var _0xc1da13={'dateStart':_0x3cf2c1[_0xdd1b('0x28')][_0xdd1b('0x29')],'dateEnd':_0x3cf2c1['query'][_0xdd1b('0x2a')]};delete _0x3cf2c1[_0xdd1b('0x28')][_0xdd1b('0x29')];delete _0x3cf2c1[_0xdd1b('0x28')][_0xdd1b('0x2a')];_0x4c8ee9[_0xdd1b('0x28')]=_[_0xdd1b('0x27')](_0x3cf2c1[_0xdd1b('0x28')]);_0x4c8ee9[_0xdd1b('0x2b')]=_[_0xdd1b('0x2c')](_0x4c8ee9[_0xdd1b('0x26')],_0x4c8ee9[_0xdd1b('0x28')]);_0x4c746c['attributes']=_[_0xdd1b('0x2c')](_0x4c8ee9[_0xdd1b('0x26')],qs[_0xdd1b('0x2d')](_0x3cf2c1[_0xdd1b('0x28')]['fields']));_0x4c746c[_0xdd1b('0x2e')]=_0x4c746c[_0xdd1b('0x2e')]['length']?_0x4c746c[_0xdd1b('0x2e')]:_0x4c8ee9['model'];if(!_0x3cf2c1[_0xdd1b('0x28')][_0xdd1b('0x2f')](_0xdd1b('0x30'))){_0x4c746c[_0xdd1b('0x17')]=qs[_0xdd1b('0x17')](_0x3cf2c1['query'][_0xdd1b('0x17')]);_0x4c746c[_0xdd1b('0x16')]=qs['offset'](_0x3cf2c1['query'][_0xdd1b('0x16')]);}_0x4c746c[_0xdd1b('0x31')]=qs[_0xdd1b('0x32')](_0x3cf2c1['query']['sort']);_0x4c746c[_0xdd1b('0x33')]=qs[_0xdd1b('0x2b')](_[_0xdd1b('0x34')](_0x3cf2c1['query'],_0x4c8ee9[_0xdd1b('0x2b')]));if(_0xc1da13['dateStart']){if(_0xc1da13[_0xdd1b('0x2a')]){_0xc1da13[_0xdd1b('0x2a')]=moment(_0xc1da13[_0xdd1b('0x2a')])[_0xdd1b('0x35')](0x1,_0xdd1b('0x36'));}else{_0xc1da13['dateEnd']=moment(_0xc1da13[_0xdd1b('0x29')])[_0xdd1b('0x35')](0x1,'day');}_[_0xdd1b('0x37')](_0x4c746c[_0xdd1b('0x33')],{'createdAt':{'$gte':_0xc1da13['dateStart'],'$lte':_0xc1da13[_0xdd1b('0x2a')]}});}if(_0x3cf2c1[_0xdd1b('0x28')][_0xdd1b('0x38')]){_0x4c746c[_0xdd1b('0x33')]=_[_0xdd1b('0x37')](_0x4c746c[_0xdd1b('0x33')],{'$or':_[_0xdd1b('0x39')](_0x2b82fe,function(_0x39d6b7){if(_0x39d6b7[_0xdd1b('0x3a')][_0xdd1b('0x3b')]!==_0xdd1b('0x3c')){var _0x33c276={};_0x33c276[_0x39d6b7[_0xdd1b('0x3d')]]={'$like':'%'+_0x3cf2c1[_0xdd1b('0x28')][_0xdd1b('0x38')]+'%'};return _0x33c276;}})});}_0x4c746c=_[_0xdd1b('0x37')]({},_0x4c746c,_0x3cf2c1[_0xdd1b('0x3e')]);var _0x2e325e={'where':_0x4c746c[_0xdd1b('0x33')]};return db['CmCompany'][_0xdd1b('0x15')](_0x2e325e)[_0xdd1b('0x1c')](function(_0x2dd54b){_0x543c14[_0xdd1b('0x15')]=_0x2dd54b;if(_0x3cf2c1['query'][_0xdd1b('0x3f')]){_0x4c746c['include']=[{'all':!![]}];}return db[_0xdd1b('0x40')][_0xdd1b('0x41')](_0x4c746c);})[_0xdd1b('0x1c')](function(_0x22b02f){_0x543c14[_0xdd1b('0x42')]=_0x22b02f;return _0x543c14;})['then'](respondWithFilteredResult(_0x3bb7c8,_0x4c746c))[_0xdd1b('0x43')](handleError(_0x3bb7c8,null));};exports[_0xdd1b('0x44')]=function(_0x15c92b,_0x275bb6){var _0x23c154={'raw':![],'where':{'id':_0x15c92b[_0xdd1b('0x45')]['id']}},_0x286153={};_0x286153[_0xdd1b('0x26')]=_[_0xdd1b('0x27')](db[_0xdd1b('0x40')][_0xdd1b('0x46')]);_0x286153[_0xdd1b('0x28')]=_['keys'](_0x15c92b[_0xdd1b('0x28')]);_0x286153[_0xdd1b('0x2b')]=_[_0xdd1b('0x2c')](_0x286153[_0xdd1b('0x26')],_0x286153[_0xdd1b('0x28')]);_0x23c154[_0xdd1b('0x2e')]=_[_0xdd1b('0x2c')](_0x286153[_0xdd1b('0x26')],qs[_0xdd1b('0x2d')](_0x15c92b[_0xdd1b('0x28')][_0xdd1b('0x2d')]));_0x23c154[_0xdd1b('0x2e')]=_0x23c154['attributes'][_0xdd1b('0x47')]?_0x23c154[_0xdd1b('0x2e')]:_0x286153[_0xdd1b('0x26')];if(_0x15c92b[_0xdd1b('0x28')]['includeAll']){_0x23c154['include']=[{'all':!![]}];}_0x23c154=_[_0xdd1b('0x37')]({},_0x23c154,_0x15c92b['options']);return db[_0xdd1b('0x40')][_0xdd1b('0x48')](_0x23c154)[_0xdd1b('0x1c')](handleEntityNotFound(_0x275bb6,null))[_0xdd1b('0x1c')](respondWithResult(_0x275bb6,null))[_0xdd1b('0x43')](handleError(_0x275bb6,null));};exports[_0xdd1b('0x49')]=function(_0x114a84,_0x3ef418){return db[_0xdd1b('0x40')][_0xdd1b('0x49')](_0x114a84[_0xdd1b('0x4a')],{})[_0xdd1b('0x1c')](function(_0x3f13ad){var _0x52f9ae=_0x114a84[_0xdd1b('0x4b')][_0xdd1b('0x1e')]({'plain':!![]});if(!_0x52f9ae)throw new Error(_0xdd1b('0x4c'));if(_0x52f9ae[_0xdd1b('0x4d')]==='user'){var _0x2452ba=_0x3f13ad[_0xdd1b('0x1e')]({'plain':!![]});var _0x5dd24e=_0xdd1b('0x1f');return db['UserProfileSection'][_0xdd1b('0x48')]({'where':{'name':_0x5dd24e,'userProfileId':_0x52f9ae[_0xdd1b('0x4e')]},'raw':!![]})[_0xdd1b('0x1c')](function(_0x3dd9c5){if(_0x3dd9c5&&_0x3dd9c5[_0xdd1b('0x4f')]===0x0){return db[_0xdd1b('0x20')][_0xdd1b('0x49')]({'name':_0x2452ba['name'],'resourceId':_0x2452ba['id'],'type':_0x3dd9c5[_0xdd1b('0x23')],'sectionId':_0x3dd9c5['id']},{})[_0xdd1b('0x1c')](function(){return _0x3f13ad;});}else{return _0x3f13ad;}})[_0xdd1b('0x43')](function(_0x240870){logger[_0xdd1b('0x22')](_0xdd1b('0x50'),_0x240870);throw _0x240870;});}return _0x3f13ad;})['then'](respondWithResult(_0x3ef418,0xc9))[_0xdd1b('0x43')](handleError(_0x3ef418,null));};exports[_0xdd1b('0x51')]=function(_0x12b6f7,_0x6d0f9e){if(_0x12b6f7[_0xdd1b('0x4a')]['id']){delete _0x12b6f7[_0xdd1b('0x4a')]['id'];}return db['CmCompany'][_0xdd1b('0x48')]({'where':{'id':_0x12b6f7[_0xdd1b('0x45')]['id']}})[_0xdd1b('0x1c')](handleEntityNotFound(_0x6d0f9e,null))[_0xdd1b('0x1c')](saveUpdates(_0x12b6f7[_0xdd1b('0x4a')],null))['then'](respondWithResult(_0x6d0f9e,null))[_0xdd1b('0x43')](handleError(_0x6d0f9e,null));};exports[_0xdd1b('0x1d')]=function(_0x1ff416,_0x36199c){return db[_0xdd1b('0x40')]['find']({'where':{'id':_0x1ff416['params']['id']}})[_0xdd1b('0x1c')](handleEntityNotFound(_0x36199c,null))['then'](removeEntity(_0x36199c,null))[_0xdd1b('0x43')](handleError(_0x36199c,null));};exports[_0xdd1b('0x52')]=function(_0x26d516,_0x19a445,_0x344140){return db['CmContact']['find']({'where':{'id':_0x26d516['params']['id']}})[_0xdd1b('0x1c')](handleEntityNotFound(_0x19a445,null))[_0xdd1b('0x1c')](function(_0x5d1974){if(_0x5d1974){return _0x5d1974[_0xdd1b('0x52')](_0x26d516['body'][_0xdd1b('0x53')],_['omit'](_0x26d516[_0xdd1b('0x4a')],[_0xdd1b('0x53'),'id'])||{});}})[_0xdd1b('0x1c')](respondWithResult(_0x19a445,null))[_0xdd1b('0x43')](handleError(_0x19a445,null));};exports[_0xdd1b('0x54')]=function(_0x4d6089,_0x31ce48,_0x23d01e){var _0x1b62a1={};var _0x10351a={};var _0x11516c;var _0x5cd3ae;return db['CmCompany']['findOne']({'where':{'id':_0x4d6089[_0xdd1b('0x45')]['id']}})[_0xdd1b('0x1c')](handleEntityNotFound(_0x31ce48,null))['then'](function(_0x4d9d39){if(_0x4d9d39){_0x11516c=_0x4d9d39;_0x10351a[_0xdd1b('0x26')]=_['keys'](db[_0xdd1b('0x55')][_0xdd1b('0x46')]);_0x10351a[_0xdd1b('0x28')]=_[_0xdd1b('0x27')](_0x4d6089[_0xdd1b('0x28')]);_0x10351a[_0xdd1b('0x2b')]=_['intersection'](_0x10351a[_0xdd1b('0x26')],_0x10351a['query']);_0x1b62a1[_0xdd1b('0x2e')]=_[_0xdd1b('0x2c')](_0x10351a[_0xdd1b('0x26')],qs[_0xdd1b('0x2d')](_0x4d6089['query'][_0xdd1b('0x2d')]));_0x1b62a1['attributes']=_0x1b62a1['attributes'][_0xdd1b('0x47')]?_0x1b62a1['attributes']:_0x10351a[_0xdd1b('0x26')];_0x1b62a1[_0xdd1b('0x31')]=qs['sort'](_0x4d6089[_0xdd1b('0x28')]['sort']);_0x1b62a1[_0xdd1b('0x33')]=qs[_0xdd1b('0x2b')](_[_0xdd1b('0x34')](_0x4d6089[_0xdd1b('0x28')],_0x10351a[_0xdd1b('0x2b')]));if(_0x4d6089[_0xdd1b('0x28')][_0xdd1b('0x38')]){_0x1b62a1[_0xdd1b('0x33')]=_[_0xdd1b('0x37')](_0x1b62a1[_0xdd1b('0x33')],{'$or':_[_0xdd1b('0x39')](_0x1b62a1[_0xdd1b('0x2e')],function(_0x499168){var _0x17cc4c={};_0x17cc4c[_0x499168]={'$like':'%'+_0x4d6089[_0xdd1b('0x28')][_0xdd1b('0x38')]+'%'};return _0x17cc4c;})});}_0x1b62a1=_[_0xdd1b('0x37')]({},_0x1b62a1,_0x4d6089[_0xdd1b('0x3e')]);return _0x11516c[_0xdd1b('0x54')](_0x1b62a1);}})['then'](function(_0x2a88dc){if(_0x2a88dc){_0x5cd3ae=_0x2a88dc[_0xdd1b('0x47')];if(!_0x4d6089[_0xdd1b('0x28')][_0xdd1b('0x2f')](_0xdd1b('0x30'))){_0x1b62a1[_0xdd1b('0x17')]=qs[_0xdd1b('0x17')](_0x4d6089[_0xdd1b('0x28')]['limit']);_0x1b62a1[_0xdd1b('0x16')]=qs[_0xdd1b('0x16')](_0x4d6089[_0xdd1b('0x28')][_0xdd1b('0x16')]);}return _0x11516c[_0xdd1b('0x54')](_0x1b62a1);}})[_0xdd1b('0x1c')](function(_0x5e23de){if(_0x5e23de){return _0x5e23de?{'count':_0x5cd3ae,'rows':_0x5e23de}:null;}})['then'](respondWithResult(_0x31ce48,null))[_0xdd1b('0x43')](handleError(_0x31ce48,null));};
\ No newline at end of file
index 6270bf6..94160f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x657b=['request-promise','./cmCompany.attributes','define','CmCompany','cm_companies','lodash','util','../../config/logger','api','moment'];(function(_0x5b2e94,_0x447f7e){var _0x370402=function(_0x287dcd){while(--_0x287dcd){_0x5b2e94['push'](_0x5b2e94['shift']());}};_0x370402(++_0x447f7e);}(_0x657b,0x131));var _0xb657=function(_0x85a89f,_0xb533f7){_0x85a89f=_0x85a89f-0x0;var _0x55d024=_0x657b[_0x85a89f];return _0x55d024;};'use strict';var _=require(_0xb657('0x0'));var util=require(_0xb657('0x1'));var logger=require(_0xb657('0x2'))(_0xb657('0x3'));var moment=require(_0xb657('0x4'));var BPromise=require('bluebird');var rp=require(_0xb657('0x5'));var attributes=require(_0xb657('0x6'));module['exports']=function(_0x175072,_0x322e57){return _0x175072[_0xb657('0x7')](_0xb657('0x8'),attributes,{'tableName':_0xb657('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x74f0=['define','CmCompany','cm_companies','util','moment','bluebird','request-promise','./cmCompany.attributes'];(function(_0x1156ce,_0x50f233){var _0x2b6d72=function(_0x36a033){while(--_0x36a033){_0x1156ce['push'](_0x1156ce['shift']());}};_0x2b6d72(++_0x50f233);}(_0x74f0,0xf3));var _0x074f=function(_0x1d24eb,_0x12295b){_0x1d24eb=_0x1d24eb-0x0;var _0x1dc576=_0x74f0[_0x1d24eb];return _0x1dc576;};'use strict';var _=require('lodash');var util=require(_0x074f('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x074f('0x1'));var BPromise=require(_0x074f('0x2'));var rp=require(_0x074f('0x3'));var attributes=require(_0x074f('0x4'));module['exports']=function(_0x51fbdc,_0x3d8d87){return _0x51fbdc[_0x074f('0x5')](_0x074f('0x6'),attributes,{'tableName':_0x074f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd4f14e..cecc93e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7792=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','CmCompany,\x20%s,\x20%s','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird'];(function(_0x2aa96d,_0x1e9c2a){var _0x57d0ac=function(_0x1a52be){while(--_0x1a52be){_0x2aa96d['push'](_0x2aa96d['shift']());}};_0x57d0ac(++_0x1e9c2a);}(_0x7792,0xe3));var _0x2779=function(_0x5538a4,_0xe0b8b0){_0x5538a4=_0x5538a4-0x0;var _0x530a52=_0x7792[_0x5538a4];return _0x530a52;};'use strict';var _=require(_0x2779('0x0'));var util=require(_0x2779('0x1'));var moment=require('moment');var BPromise=require(_0x2779('0x2'));var rs=require(_0x2779('0x3'));var fs=require('fs');var Redis=require(_0x2779('0x4'));var db=require(_0x2779('0x5'))['db'];var utils=require(_0x2779('0x6'));var logger=require(_0x2779('0x7'))(_0x2779('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2779('0x9')][_0x2779('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5a5161,_0x36af9d,_0x11c11d){return new BPromise(function(_0x407ccb,_0x5bdf44){return client[_0x2779('0xb')](_0x5a5161,_0x11c11d)[_0x2779('0xc')](function(_0x2c976c){logger['info'](_0x2779('0xd'),_0x36af9d,_0x2779('0xe'));logger['debug'](_0x2779('0xf'),_0x36af9d,_0x2779('0xe'),JSON[_0x2779('0x10')](_0x2c976c));if(_0x2c976c['error']){if(_0x2c976c[_0x2779('0x11')][_0x2779('0x12')]===0x1f4){logger['error'](_0x2779('0xd'),_0x36af9d,_0x2c976c[_0x2779('0x11')]['message']);return _0x5bdf44(_0x2c976c[_0x2779('0x11')][_0x2779('0x13')]);}logger[_0x2779('0x11')](_0x2779('0xd'),_0x36af9d,_0x2c976c['error'][_0x2779('0x13')]);return _0x407ccb(_0x2c976c['error']['message']);}else{logger[_0x2779('0x14')]('CmCompany,\x20%s,\x20%s',_0x36af9d,_0x2779('0xe'));_0x407ccb(_0x2c976c[_0x2779('0x15')][_0x2779('0x13')]);}})[_0x2779('0x16')](function(_0x34f5b8){logger['error']('CmCompany,\x20%s,\x20%s',_0x36af9d,_0x34f5b8);_0x5bdf44(_0x34f5b8);});});}
\ No newline at end of file
+var _0x1dbc=['info','debug','CmCompany,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','CmCompany,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x1dbc,0x14d));var _0xc1db=function(_0x5eb1a8,_0x30e664){_0x5eb1a8=_0x5eb1a8-0x0;var _0x14c11c=_0x1dbc[_0x5eb1a8];return _0x14c11c;};'use strict';var _=require('lodash');var util=require(_0xc1db('0x0'));var moment=require(_0xc1db('0x1'));var BPromise=require(_0xc1db('0x2'));var rs=require(_0xc1db('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc1db('0x4'))['db'];var utils=require(_0xc1db('0x5'));var logger=require(_0xc1db('0x6'))(_0xc1db('0x7'));var config=require(_0xc1db('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc1db('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc6b630,_0x52ef83,_0x3caedb){return new BPromise(function(_0x4b3434,_0xd0b14f){return client[_0xc1db('0xa')](_0xc6b630,_0x3caedb)[_0xc1db('0xb')](function(_0x455eac){logger[_0xc1db('0xc')]('CmCompany,\x20%s,\x20%s',_0x52ef83,'request\x20sent');logger[_0xc1db('0xd')](_0xc1db('0xe'),_0x52ef83,_0xc1db('0xf'),JSON[_0xc1db('0x10')](_0x455eac));if(_0x455eac[_0xc1db('0x11')]){if(_0x455eac[_0xc1db('0x11')][_0xc1db('0x12')]===0x1f4){logger[_0xc1db('0x11')](_0xc1db('0x13'),_0x52ef83,_0x455eac[_0xc1db('0x11')]['message']);return _0xd0b14f(_0x455eac['error'][_0xc1db('0x14')]);}logger[_0xc1db('0x11')](_0xc1db('0x13'),_0x52ef83,_0x455eac[_0xc1db('0x11')][_0xc1db('0x14')]);return _0x4b3434(_0x455eac[_0xc1db('0x11')][_0xc1db('0x14')]);}else{logger[_0xc1db('0xc')](_0xc1db('0x13'),_0x52ef83,_0xc1db('0xf'));_0x4b3434(_0x455eac[_0xc1db('0x15')][_0xc1db('0x14')]);}})[_0xc1db('0x16')](function(_0x44d7bb){logger[_0xc1db('0x11')](_0xc1db('0x13'),_0x52ef83,_0x44d7bb);_0xd0b14f(_0x44d7bb);});});}
\ No newline at end of file
index f3ead01..0208849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a3e=['path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','index','/:id','isAuthenticated','getContacts','post','create','/:id/contacts','addContacts','delete','destroy','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2a3e,0x17c));var _0xe2a3=function(_0x391e5b,_0x34f90d){_0x391e5b=_0x391e5b-0x0;var _0x28ee03=_0x2a3e[_0x391e5b];return _0x28ee03;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe2a3('0x0'));var timeout=require('connect-timeout');var express=require(_0xe2a3('0x1'));var router=express[_0xe2a3('0x2')]();var auth=require(_0xe2a3('0x3'));var interaction=require(_0xe2a3('0x4'));var config=require(_0xe2a3('0x5'));var controller=require(_0xe2a3('0x6'));router[_0xe2a3('0x7')]('/',auth['isAuthenticated'](),controller[_0xe2a3('0x8')]);router[_0xe2a3('0x7')](_0xe2a3('0x9'),auth[_0xe2a3('0xa')](),controller['show']);router['get']('/:id/contacts',auth[_0xe2a3('0xa')](),controller[_0xe2a3('0xb')]);router[_0xe2a3('0xc')]('/',auth['isAuthenticated'](),controller[_0xe2a3('0xd')]);router[_0xe2a3('0xc')](_0xe2a3('0xe'),auth['isAuthenticated'](),controller[_0xe2a3('0xf')]);router['put'](_0xe2a3('0x9'),auth[_0xe2a3('0xa')](),controller['update']);router[_0xe2a3('0x10')](_0xe2a3('0x9'),auth[_0xe2a3('0xa')](),controller[_0xe2a3('0x11')]);module[_0xe2a3('0x12')]=router;
\ No newline at end of file
+var _0x16f0=['exports','multer','util','path','connect-timeout','express','Router','./cmCompany.controller','get','isAuthenticated','/:id','show','/:id/contacts','getContacts','post','addContacts','put','delete'];(function(_0x3672a1,_0x2c3be3){var _0x12bf45=function(_0x47789b){while(--_0x47789b){_0x3672a1['push'](_0x3672a1['shift']());}};_0x12bf45(++_0x2c3be3);}(_0x16f0,0xa3));var _0x016f=function(_0x35cf84,_0x3fd813){_0x35cf84=_0x35cf84-0x0;var _0x537db8=_0x16f0[_0x35cf84];return _0x537db8;};'use strict';var multer=require(_0x016f('0x0'));var util=require(_0x016f('0x1'));var path=require(_0x016f('0x2'));var timeout=require(_0x016f('0x3'));var express=require(_0x016f('0x4'));var router=express[_0x016f('0x5')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x016f('0x6'));router[_0x016f('0x7')]('/',auth[_0x016f('0x8')](),controller['index']);router[_0x016f('0x7')](_0x016f('0x9'),auth[_0x016f('0x8')](),controller[_0x016f('0xa')]);router[_0x016f('0x7')](_0x016f('0xb'),auth[_0x016f('0x8')](),controller[_0x016f('0xc')]);router[_0x016f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x016f('0xd')](_0x016f('0xb'),auth[_0x016f('0x8')](),controller[_0x016f('0xe')]);router[_0x016f('0xf')](_0x016f('0x9'),auth[_0x016f('0x8')](),controller['update']);router[_0x016f('0x10')](_0x016f('0x9'),auth[_0x016f('0x8')](),controller['destroy']);module[_0x016f('0x11')]=router;
\ No newline at end of file
index 79473df..37ac4e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1aa=['INTEGER','UNSIGNED','NOW','lodash','sequelize','exports','STRING','TEXT'];(function(_0x2abc3d,_0x48edca){var _0x252745=function(_0x32bb6f){while(--_0x32bb6f){_0x2abc3d['push'](_0x2abc3d['shift']());}};_0x252745(++_0x48edca);}(_0xd1aa,0x163));var _0xad1a=function(_0x44714c,_0x2ac454){_0x44714c=_0x44714c-0x0;var _0x57d4d5=_0xd1aa[_0x44714c];return _0x57d4d5;};'use strict';var _=require(_0xad1a('0x0'));var Sequelize=require(_0xad1a('0x1'));module[_0xad1a('0x2')]={'firstName':{'type':Sequelize[_0xad1a('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xad1a('0x3')]},'street':{'type':Sequelize[_0xad1a('0x3')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xad1a('0x3')]},'country':{'type':Sequelize[_0xad1a('0x3')]},'dateOfBirth':{'type':Sequelize[_0xad1a('0x3')]},'description':{'type':Sequelize[_0xad1a('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0xad1a('0x3')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xad1a('0x3')]},'url':{'type':Sequelize[_0xad1a('0x3')]},'facebook':{'type':Sequelize[_0xad1a('0x3')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize[_0xad1a('0x3')]},'skype':{'type':Sequelize[_0xad1a('0x3')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0xad1a('0x3')]},'wechat':{'type':Sequelize[_0xad1a('0x3')]},'telegram':{'type':Sequelize[_0xad1a('0x3')]},'UserId':{'type':Sequelize[_0xad1a('0x5')]},'priority':{'type':Sequelize[_0xad1a('0x5')](0x2)[_0xad1a('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0xad1a('0x7')]}};
\ No newline at end of file
+var _0x71f8=['lodash','exports','STRING','TEXT','INTEGER','UNSIGNED','DATE'];(function(_0x22d655,_0x3941dd){var _0x257739=function(_0x98136e){while(--_0x98136e){_0x22d655['push'](_0x22d655['shift']());}};_0x257739(++_0x3941dd);}(_0x71f8,0x165));var _0x871f=function(_0x4b2231,_0x379f87){_0x4b2231=_0x4b2231-0x0;var _0xb11ccc=_0x71f8[_0x4b2231];return _0xb11ccc;};'use strict';var _=require(_0x871f('0x0'));var Sequelize=require('sequelize');module[_0x871f('0x1')]={'firstName':{'type':Sequelize[_0x871f('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x871f('0x2')]},'street':{'type':Sequelize[_0x871f('0x2')]},'postalCode':{'type':Sequelize[_0x871f('0x2')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x871f('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x871f('0x3')]},'phone':{'type':Sequelize[_0x871f('0x2')]},'mobile':{'type':Sequelize[_0x871f('0x2')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x871f('0x2')]},'url':{'type':Sequelize[_0x871f('0x2')]},'facebook':{'type':Sequelize[_0x871f('0x2')]},'fb_data':{'type':Sequelize[_0x871f('0x2')]},'twitter':{'type':Sequelize[_0x871f('0x2')]},'skype':{'type':Sequelize[_0x871f('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0x871f('0x2')]},'line':{'type':Sequelize[_0x871f('0x2')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x871f('0x2')]},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0x871f('0x4')](0x2)[_0x871f('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x871f('0x6')],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 0594b86..a644d6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb940=['find','params','describe','length','startsWith','cf_','columnName','displayName','CmCustomField','alias','hasOwnProperty','body','from','get','mergeWith','tags','isArray','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','join','each','duplicates','$or','ListId','findOrCreate','show','Tags','$and','omit','cf_%d','pickBy','isEmpty','table','cm_contacts','setFields','id\x20=\x20?','toParam','sequelize','text','values','CmHopper','findOne','getTags','setTags','ids','getHoppers','getHopperHistories','CmHopperHistory','rawAttributes','ContactId','getHopperFinals','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','chmodSync','0777','child_process','../../components/import/cm/csv','CompanyId','pid','path','parse','meta','import','User','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','redis','localhost','./cmContact.socket','status','end','count','offset','limit','set','Content-Range','json','reject','save','update','then','sendStatus','error','name','send','index','CmContact','model','query','dateStart','dateEnd','keys','filters','intersection','fields','attributes','nolimit','order','sort','pick','add','day','merge','filter','where','map','options','include','push','tag','includeAll','Tag','ThroughTags','color','findAll','rows','catch','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb940,0x6a));var _0x0b94=function(_0x358c86,_0x38a8a2){_0x358c86=_0x358c86-0x0;var _0x52edc5=_0xb940[_0x358c86];return _0x52edc5;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x0b94('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0b94('0x1'));var jsonpatch=require(_0x0b94('0x2'));var rp=require(_0x0b94('0x3'));var moment=require(_0x0b94('0x4'));var BPromise=require(_0x0b94('0x5'));var Mustache=require(_0x0b94('0x6'));var util=require(_0x0b94('0x7'));var path=require('path');var sox=require(_0x0b94('0x8'));var csv=require(_0x0b94('0x9'));var ejs=require(_0x0b94('0xa'));var fs=require('fs');var _=require(_0x0b94('0xb'));var squel=require('squel');var crypto=require(_0x0b94('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x0b94('0xd'));var toCsv=require(_0x0b94('0x9'));var querystring=require(_0x0b94('0xe'));var Papa=require(_0x0b94('0xf'));var Redis=require('ioredis');var qs=require(_0x0b94('0x10'));var logger=require(_0x0b94('0x11'))(_0x0b94('0x12'));var utils=require(_0x0b94('0x13'));var config=require(_0x0b94('0x14'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x0b94('0x15')],{'host':_0x0b94('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0b94('0x15')]));require(_0x0b94('0x17'))['register'](socket);function respondWithStatusCode(_0x2ca2da,_0x74fd75){_0x74fd75=_0x74fd75||0xcc;return function(_0x25047c){if(_0x25047c){return _0x2ca2da['sendStatus'](_0x74fd75);}return _0x2ca2da[_0x0b94('0x18')](_0x74fd75)[_0x0b94('0x19')]();};}function respondWithResult(_0x15f4a4,_0x262054){_0x262054=_0x262054||0xc8;return function(_0x51f652){if(_0x51f652){return _0x15f4a4['status'](_0x262054)['json'](_0x51f652);}};}function respondWithFilteredResult(_0x504388,_0x5a3f44){return function(_0x596aab){if(_0x596aab){var _0x28b364=_0x596aab[_0x0b94('0x1a')],_0x5e8670=_0x5a3f44['offset'],_0x3e2c17=_0x5a3f44[_0x0b94('0x1b')]+_0x5a3f44[_0x0b94('0x1c')],_0x232284;if(_0x3e2c17>=_0x28b364){_0x3e2c17=_0x28b364;_0x232284=0xc8;}else{_0x232284=0xce;}_0x504388[_0x0b94('0x18')](_0x232284);return _0x504388[_0x0b94('0x1d')](_0x0b94('0x1e'),_0x5e8670+'-'+_0x3e2c17+'/'+_0x28b364)[_0x0b94('0x1f')](_0x596aab);}return null;};}function patchUpdates(_0x2265e7){return function(_0x29ace7){try{jsonpatch['apply'](_0x29ace7,_0x2265e7,!![]);}catch(_0x107842){return BPromise[_0x0b94('0x20')](_0x107842);}return _0x29ace7[_0x0b94('0x21')]();};}function saveUpdates(_0xf68688,_0x2fc7a9){return function(_0x55d06f){if(_0x55d06f){return _0x55d06f[_0x0b94('0x22')](_0xf68688)[_0x0b94('0x23')](function(_0x155d6a){return _0x155d6a;});}return null;};}function removeEntity(_0x304fa0,_0x481606){return function(_0x6eb6f7){if(_0x6eb6f7){return _0x6eb6f7['destroy']()[_0x0b94('0x23')](function(){_0x304fa0[_0x0b94('0x18')](0xcc)[_0x0b94('0x19')]();});}};}function handleEntityNotFound(_0x40c4dd,_0x33ac79){return function(_0x1e7990){if(!_0x1e7990){_0x40c4dd[_0x0b94('0x24')](0x194);}return _0x1e7990;};}function handleError(_0x3abef2,_0x219103){_0x219103=_0x219103||0x1f4;return function(_0x34818a){logger[_0x0b94('0x25')](_0x34818a['stack']);if(_0x34818a[_0x0b94('0x26')]){delete _0x34818a[_0x0b94('0x26')];}_0x3abef2[_0x0b94('0x18')](_0x219103)[_0x0b94('0x27')](_0x34818a);};}exports[_0x0b94('0x28')]=function(_0x10ef2d,_0x198a33){var _0x34cbba={},_0x22bec9={},_0x5391ca={'count':0x0,'rows':[]};return db[_0x0b94('0x29')]['describe']()[_0x0b94('0x23')](function(_0x2f2a22){_0x22bec9[_0x0b94('0x2a')]=_['keys'](_0x2f2a22);var _0x5f32d2={'dateStart':_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x2c')],'dateEnd':_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x2d')]};delete _0x10ef2d['query'][_0x0b94('0x2c')];delete _0x10ef2d[_0x0b94('0x2b')]['dateEnd'];_0x22bec9[_0x0b94('0x2b')]=_[_0x0b94('0x2e')](_0x10ef2d['query']);_0x22bec9[_0x0b94('0x2f')]=_[_0x0b94('0x30')](_0x22bec9[_0x0b94('0x2a')],_0x22bec9['query']);_0x34cbba['attributes']=_['intersection'](_0x22bec9['model'],qs['fields'](_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x31')]));_0x34cbba[_0x0b94('0x32')]=_0x34cbba[_0x0b94('0x32')]['length']?_0x34cbba[_0x0b94('0x32')]:_0x22bec9[_0x0b94('0x2a')];if(!_0x10ef2d[_0x0b94('0x2b')]['hasOwnProperty'](_0x0b94('0x33'))){_0x34cbba[_0x0b94('0x1c')]=qs[_0x0b94('0x1c')](_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x1c')]);_0x34cbba['offset']=qs[_0x0b94('0x1b')](_0x10ef2d[_0x0b94('0x2b')]['offset']);}_0x34cbba[_0x0b94('0x34')]=qs[_0x0b94('0x35')](_0x10ef2d[_0x0b94('0x2b')]['sort']);_0x34cbba['where']=qs[_0x0b94('0x2f')](_[_0x0b94('0x36')](_0x10ef2d['query'],_0x22bec9[_0x0b94('0x2f')]));if(_0x5f32d2[_0x0b94('0x2c')]){if(_0x5f32d2[_0x0b94('0x2d')]){_0x5f32d2[_0x0b94('0x2d')]=moment(_0x5f32d2[_0x0b94('0x2d')])['add'](0x1,'day');}else{_0x5f32d2[_0x0b94('0x2d')]=moment(_0x5f32d2[_0x0b94('0x2c')])[_0x0b94('0x37')](0x1,_0x0b94('0x38'));}_[_0x0b94('0x39')](_0x34cbba['where'],{'createdAt':{'$gte':_0x5f32d2[_0x0b94('0x2c')],'$lte':_0x5f32d2[_0x0b94('0x2d')]}});}if(_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x3a')]){_0x34cbba[_0x0b94('0x3b')]=_[_0x0b94('0x39')](_0x34cbba[_0x0b94('0x3b')],{'$or':_[_0x0b94('0x3c')](_0x34cbba[_0x0b94('0x32')],function(_0x39e307){var _0xd5b213={};_0xd5b213[_0x39e307]={'$like':'%'+_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x3a')]+'%'};return _0xd5b213;})});}_0x34cbba=_['merge']({},_0x34cbba,_0x10ef2d[_0x0b94('0x3d')]);var _0x3bd672={'where':_0x34cbba[_0x0b94('0x3b')]};_0x3bd672[_0x0b94('0x3e')]=[];if(_0x10ef2d[_0x0b94('0x2b')]['tag']){_0x3bd672[_0x0b94('0x3e')][_0x0b94('0x3f')]({'model':db['Tag'],'as':'Tags','attributes':['id'],'where':{'id':_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x40')]},'required':!![]});_0x3bd672['distinct']=!![];}return db[_0x0b94('0x29')]['count'](_0x3bd672)['then'](function(_0x358dea){_0x5391ca[_0x0b94('0x1a')]=_0x358dea;if(_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x41')]){_0x34cbba[_0x0b94('0x3e')]=[{'model':db[_0x0b94('0x42')],'as':'Tags','attributes':['id',_0x0b94('0x26'),'color'],'required':_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x40')]?!![]:![]},{'model':db[_0x0b94('0x42')],'as':_0x0b94('0x43'),'attributes':['id',_0x0b94('0x26'),_0x0b94('0x44')],'through':_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x40')]?{'attributes':[],'where':{'TagId':_0x10ef2d[_0x0b94('0x2b')][_0x0b94('0x40')]||undefined}}:{},'required':_0x10ef2d[_0x0b94('0x2b')]['tag']?!![]:![]}];}return db['CmContact'][_0x0b94('0x45')](_0x34cbba);})[_0x0b94('0x23')](function(_0x447f61){_0x5391ca[_0x0b94('0x46')]=_0x447f61;return _0x5391ca;})[_0x0b94('0x23')](respondWithFilteredResult(_0x198a33,_0x34cbba))[_0x0b94('0x47')](handleError(_0x198a33,null));});};exports[_0x0b94('0x48')]=function(_0x12d4de,_0x467a53){return db[_0x0b94('0x29')][_0x0b94('0x49')]({'where':{'id':_0x12d4de[_0x0b94('0x4a')]['id']}})[_0x0b94('0x23')](handleEntityNotFound(_0x467a53,null))['then'](removeEntity(_0x467a53,null))[_0x0b94('0x47')](handleError(_0x467a53,null));};exports[_0x0b94('0x4b')]=function(_0xfc7aa9,_0x428d9a){return db[_0x0b94('0x29')][_0x0b94('0x4b')]()[_0x0b94('0x23')](function(_0x10cd31){for(var _0x4dd2be=0x0;_0x4dd2be<Object[_0x0b94('0x2e')](_0x10cd31)[_0x0b94('0x4c')];_0x4dd2be++){var _0x1cc123=Object[_0x0b94('0x2e')](_0x10cd31)[_0x4dd2be];if(!_[_0x0b94('0x4d')](_0x1cc123,_0x0b94('0x4e'))){_0x10cd31[_0x1cc123][_0x0b94('0x4f')]=_0x1cc123;_0x10cd31[_0x1cc123][_0x0b94('0x50')]=_0x1cc123;}}return _0x10cd31;})[_0x0b94('0x23')](function(_0x49d4dc){var _0x3fffd2={'where':{'$or':[{'ListId':_0xfc7aa9[_0x0b94('0x2b')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0b94('0x51')]['findAll'](_0x3fffd2)[_0x0b94('0x23')](function(_0x19ce7b){for(var _0x5136e2=0x0;_0x5136e2<_0x19ce7b[_0x0b94('0x4c')];_0x5136e2++){var _0x35f232=_0x0b94('0x4e')+_0x19ce7b[_0x5136e2]['id'];_0x49d4dc[_0x35f232][_0x0b94('0x4f')]=_0x35f232;_0x49d4dc[_0x35f232][_0x0b94('0x50')]=_0x19ce7b[_0x5136e2][_0x0b94('0x52')];}for(var _0x5136e2=0x0;_0x5136e2<Object[_0x0b94('0x2e')](_0x49d4dc)[_0x0b94('0x4c')];_0x5136e2++){var _0x35f232=Object['keys'](_0x49d4dc)[_0x5136e2];if(!_0x49d4dc[_0x35f232][_0x0b94('0x53')](_0x0b94('0x4f'))){delete _0x49d4dc[_0x35f232];}}return _0x49d4dc;});})[_0x0b94('0x23')](respondWithResult(_0x428d9a,null))['catch'](handleError(_0x428d9a,null));};exports['merge']=function(_0x2794e3,_0x37e8ae){var _0xfe7800;var _0x524f72;var _0x55a52e;if(_0x2794e3[_0x0b94('0x54')]['id']){delete _0x2794e3[_0x0b94('0x54')]['id'];}return db[_0x0b94('0x29')][_0x0b94('0x45')]({'where':{'id':[_0x2794e3[_0x0b94('0x54')]['to'],_0x2794e3[_0x0b94('0x54')][_0x0b94('0x55')]]}})[_0x0b94('0x23')](function(_0x50a7fe){if(_0x50a7fe){if(_0x50a7fe['length']!==0x2){return null;}_0x50a7fe[0x0]=_0x50a7fe[0x0][_0x0b94('0x56')]({'plain':!![]});_0x50a7fe[0x1]=_0x50a7fe[0x1][_0x0b94('0x56')]({'plain':!![]});delete _0x50a7fe[0x0]['id'];delete _0x50a7fe[0x1]['id'];return _[_0x0b94('0x57')](_0x50a7fe[0x0],_0x50a7fe[0x1],function(_0x2ac0e8,_0x514862){if(Array['isArray'](_0x514862)&&!_0x514862[_0x0b94('0x4c')]){return _0x2ac0e8;}else if(!_0x514862){return _0x2ac0e8;}});}})[_0x0b94('0x23')](handleEntityNotFound(_0x37e8ae,null))[_0x0b94('0x23')](function(_0x759601){if(_0x759601){if(_0x759601[_0x0b94('0x58')]&&_[_0x0b94('0x59')](_0x759601[_0x0b94('0x58')])){_0x759601['tags']=_0x759601[_0x0b94('0x58')]['join']();}logger[_0x0b94('0x5a')](_0x0b94('0x5b'),_0x2794e3[_0x0b94('0x54')]['to'],_0x2794e3['body'][_0x0b94('0x55')]);return db['CmHopper'][_0x0b94('0x48')]({'where':{'ContactId':[_0x2794e3['body']['to'],_0x2794e3[_0x0b94('0x54')][_0x0b94('0x55')]]}})[_0x0b94('0x23')](function(_0x3e5286){logger[_0x0b94('0x5a')](_0x0b94('0x5c'),_0x3e5286);return db[_0x0b94('0x5d')][_0x0b94('0x48')]({'where':{'ContactId':[_0x2794e3[_0x0b94('0x54')]['to'],_0x2794e3['body'][_0x0b94('0x55')]]}})[_0x0b94('0x23')](function(_0xe7cae5){logger['info'](_0x0b94('0x5e'),_0xe7cae5);return db[_0x0b94('0x29')][_0x0b94('0x5f')](_0x759601);});});}})[_0x0b94('0x23')](function(_0x1af0db){if(_0x1af0db){_0xfe7800=_0x1af0db;_0x524f72={'ContactId':_0xfe7800['id']};_0x55a52e={'where':{'ContactId':[_0x2794e3[_0x0b94('0x54')]['to'],_0x2794e3[_0x0b94('0x54')][_0x0b94('0x55')]]}};return db[_0x0b94('0x60')]['update'](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['ChatMessage']['update'](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x61')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['MailInteraction'][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['MailMessage'][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x62')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x63')]['update'](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x64')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x65')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['FaxInteraction'][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['FaxMessage'][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x66')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x67')]['update'](_0x524f72,_0x55a52e);}})['then'](function(){if(_0xfe7800){return db[_0x0b94('0x68')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['CmHopperHistory'][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['ReportAgentPreview']['update'](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x69')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})['then'](function(){if(_0xfe7800){return db[_0x0b94('0x6a')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x6b')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x6c')]['update'](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x6d')][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['SmsQueueReport'][_0x0b94('0x22')](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db['JscriptySessionReport']['update'](_0x524f72,_0x55a52e);}})[_0x0b94('0x23')](function(){if(_0xfe7800){return db[_0x0b94('0x29')][_0x0b94('0x48')]({'where':{'id':[_0x2794e3[_0x0b94('0x54')]['to'],_0x2794e3[_0x0b94('0x54')][_0x0b94('0x55')]]}});}})[_0x0b94('0x23')](function(){if(_0xfe7800){return _0xfe7800;}})[_0x0b94('0x23')](respondWithResult(_0x37e8ae,null))[_0x0b94('0x47')](handleError(_0x37e8ae,null));};exports[_0x0b94('0x5f')]=function(_0x38ef97,_0xd9b391){return db[_0x0b94('0x29')]['describe']()[_0x0b94('0x23')](function(_0x581e1f){if(_0x38ef97[_0x0b94('0x54')][_0x0b94('0x58')]&&_['isArray'](_0x38ef97[_0x0b94('0x54')][_0x0b94('0x58')])){if(_0x38ef97[_0x0b94('0x54')][_0x0b94('0x58')][_0x0b94('0x4c')]){_0x38ef97['body'][_0x0b94('0x58')]=_0x38ef97[_0x0b94('0x54')][_0x0b94('0x58')][_0x0b94('0x6e')](';')+';';}else{_0x38ef97['body'][_0x0b94('0x58')]=null;}}else{_0x38ef97['body'][_0x0b94('0x58')]=null;}return db['CmContact'][_0x0b94('0x5f')](_0x38ef97['body'],{'fields':_[_0x0b94('0x2e')](_0x581e1f),'raw':!![]});})[_0x0b94('0x23')](respondWithResult(_0xd9b391,0xc9))[_0x0b94('0x47')](handleError(_0xd9b391,null));};exports['bulkCreate']=function(_0x9e85d3,_0x561714){var _0x1cdce2=[];var _0x6392cc=0x0;var _0x2a9db1=0x0;var _0x391c6d=0x0;return db[_0x0b94('0x29')]['describe']()[_0x0b94('0x23')](function(_0x5b023e){return BPromise[_0x0b94('0x6f')](_0x9e85d3[_0x0b94('0x54')],function(_0x261f5b){var _0x56f9ad={'where':{'$or':[]},'defaults':_0x261f5b,'fields':_['keys'](_0x5b023e),'raw':!![]};if(_0x261f5b[_0x0b94('0x70')]){for(var _0x2fa922=0x0;_0x2fa922<_0x261f5b['duplicates'][_0x0b94('0x4c')];_0x2fa922++){var _0x55e99d={};_0x55e99d[_0x261f5b[_0x0b94('0x70')][_0x2fa922]]=_0x261f5b[_0x261f5b[_0x0b94('0x70')][_0x2fa922]];_0x56f9ad['where'][_0x0b94('0x71')]['push'](_0x55e99d);}_0x56f9ad['where']['ListId']=_0x261f5b[_0x0b94('0x72')];}return db[_0x0b94('0x29')][_0x0b94('0x73')](_0x56f9ad)['spread'](function(_0x20f9ad,_0xfd46f3){if(_0xfd46f3){_0x6392cc++;}else{_0x391c6d++;}})[_0x0b94('0x47')](function(_0x257e4){console[_0x0b94('0x25')](_0x257e4);_0x2a9db1++;});});})[_0x0b94('0x23')](function(_0x51a875){if(_0x51a875){return{'success':_0x6392cc,'failure':_0x2a9db1,'duplicates':_0x391c6d};}})[_0x0b94('0x23')](respondWithResult(_0x561714,0xc9))[_0x0b94('0x47')](handleError(_0x561714,null));};exports[_0x0b94('0x74')]=function(_0x1a1f97,_0x52ede9,_0x5cd092){var _0x35a65e;return db[_0x0b94('0x29')][_0x0b94('0x4b')]()[_0x0b94('0x23')](function(_0x1bb082){return db[_0x0b94('0x29')][_0x0b94('0x49')]({'where':{'id':_0x1a1f97[_0x0b94('0x4a')]['id']},'include':[{'model':db[_0x0b94('0x42')],'as':_0x0b94('0x75'),'attributes':['id',_0x0b94('0x26'),_0x0b94('0x44')],'required':_0x1a1f97[_0x0b94('0x2b')][_0x0b94('0x40')]?!![]:![]}],'attributes':_['keys'](_0x1bb082)});})[_0x0b94('0x23')](function(_0x39c752){_0x35a65e=_0x39c752['get']({'plain':!![]});var _0x37f278={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x39c752&&_0x39c752[_0x0b94('0x72')]){if(_0x39c752['ListId']){_0x37f278['where'][_0x0b94('0x76')][_0x0b94('0x3f')]({'ListId':{'$ne':_0x39c752[_0x0b94('0x72')]}});}}return db[_0x0b94('0x51')][_0x0b94('0x45')](_0x37f278);})['then'](function(_0x4ec411){return _[_0x0b94('0x77')](_0x35a65e,_['map'](_0x4ec411,function(_0x1c2249){return util['format'](_0x0b94('0x78'),_0x1c2249['id']);}));})['then'](handleEntityNotFound(_0x52ede9,null))[_0x0b94('0x23')](respondWithResult(_0x52ede9,null))[_0x0b94('0x47')](handleError(_0x52ede9,null));};exports['update']=function(_0x184f16,_0x28009a){var _0x2981f9;if(_0x184f16['body']['id']){delete _0x184f16['body']['id'];}return db[_0x0b94('0x29')][_0x0b94('0x49')]({'where':{'id':_0x184f16[_0x0b94('0x4a')]['id']}})[_0x0b94('0x23')](handleEntityNotFound(_0x28009a,null))[_0x0b94('0x23')](saveUpdates(_0x184f16[_0x0b94('0x54')],null))['then'](function(_0x2ec571){_0x2981f9=_0x2ec571;var _0x2bb8aa={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2ec571&&_0x2ec571[_0x0b94('0x72')]){if(_0x2ec571[_0x0b94('0x72')]){_0x2bb8aa[_0x0b94('0x3b')][_0x0b94('0x76')][_0x0b94('0x3f')]({'ListId':{'$ne':_0x2ec571[_0x0b94('0x72')]}});}}return db[_0x0b94('0x51')][_0x0b94('0x45')](_0x2bb8aa);})['then'](function(_0x340715){if(_0x340715){return _[_0x0b94('0x77')](_[_0x0b94('0x79')](_0x184f16[_0x0b94('0x54')],function(_0xaba8b3,_0x5b9d99){return _['startsWith'](_0x5b9d99,'cf_');}),_[_0x0b94('0x3c')](_0x340715,function(_0x151b2b){return util['format'](_0x0b94('0x78'),_0x151b2b['id']);}));}})[_0x0b94('0x23')](function(_0x440ed7){if(_0x440ed7&&!_[_0x0b94('0x7a')](_0x440ed7)){var _0x1d4145=squel[_0x0b94('0x22')]()[_0x0b94('0x7b')](_0x0b94('0x7c'))[_0x0b94('0x7d')](_0x440ed7)[_0x0b94('0x3b')](_0x0b94('0x7e'),_0x184f16[_0x0b94('0x4a')]['id'])[_0x0b94('0x7f')]();return db[_0x0b94('0x80')]['query'](_0x1d4145[_0x0b94('0x81')],{'replacements':_0x1d4145[_0x0b94('0x82')]});}})[_0x0b94('0x23')](function(){if(_0x184f16['body']['phone']&&_0x2981f9){return db[_0x0b94('0x83')][_0x0b94('0x22')]({'phone':_0x184f16[_0x0b94('0x54')]['phone']},{'where':{'ContactId':_0x2981f9['id']}});}})['then'](function(){return _0x2981f9;})[_0x0b94('0x23')](respondWithResult(_0x28009a,null))['catch'](handleError(_0x28009a,null));};exports['getTags']=function(_0x136208,_0x2052a5,_0x4e8683){var _0x3e513f={};var _0x47b434={};var _0x35a86e;var _0x4786a9;return db[_0x0b94('0x29')][_0x0b94('0x84')]({'where':{'id':_0x136208[_0x0b94('0x4a')]['id']}})[_0x0b94('0x23')](handleEntityNotFound(_0x2052a5,null))[_0x0b94('0x23')](function(_0x729ac7){if(_0x729ac7){_0x35a86e=_0x729ac7;_0x47b434[_0x0b94('0x2a')]=_[_0x0b94('0x2e')](db['Tag']['rawAttributes']);_0x47b434[_0x0b94('0x2b')]=_['keys'](_0x136208['query']);_0x47b434[_0x0b94('0x2f')]=_[_0x0b94('0x30')](_0x47b434[_0x0b94('0x2a')],_0x47b434[_0x0b94('0x2b')]);_0x3e513f[_0x0b94('0x32')]=_['intersection'](_0x47b434[_0x0b94('0x2a')],qs['fields'](_0x136208['query']['fields']));_0x3e513f[_0x0b94('0x32')]=_0x3e513f[_0x0b94('0x32')][_0x0b94('0x4c')]?_0x3e513f[_0x0b94('0x32')]:_0x47b434[_0x0b94('0x2a')];_0x3e513f[_0x0b94('0x34')]=qs[_0x0b94('0x35')](_0x136208['query'][_0x0b94('0x35')]);_0x3e513f[_0x0b94('0x3b')]=qs[_0x0b94('0x2f')](_[_0x0b94('0x36')](_0x136208[_0x0b94('0x2b')],_0x47b434[_0x0b94('0x2f')]));if(_0x136208[_0x0b94('0x2b')][_0x0b94('0x3a')]){_0x3e513f[_0x0b94('0x3b')]=_[_0x0b94('0x39')](_0x3e513f[_0x0b94('0x3b')],{'$or':_[_0x0b94('0x3c')](_0x3e513f[_0x0b94('0x32')],function(_0x5bee8b){var _0x11820b={};_0x11820b[_0x5bee8b]={'$like':'%'+_0x136208[_0x0b94('0x2b')][_0x0b94('0x3a')]+'%'};return _0x11820b;})});}_0x3e513f=_['merge']({},_0x3e513f,_0x136208['options']);return _0x35a86e[_0x0b94('0x85')](_0x3e513f);}})['then'](function(_0x2b2dd6){if(_0x2b2dd6){_0x4786a9=_0x2b2dd6['length'];if(!_0x136208[_0x0b94('0x2b')][_0x0b94('0x53')](_0x0b94('0x33'))){_0x3e513f[_0x0b94('0x1c')]=qs[_0x0b94('0x1c')](_0x136208[_0x0b94('0x2b')][_0x0b94('0x1c')]);_0x3e513f[_0x0b94('0x1b')]=qs[_0x0b94('0x1b')](_0x136208['query'][_0x0b94('0x1b')]);}return _0x35a86e[_0x0b94('0x85')](_0x3e513f);}})[_0x0b94('0x23')](function(_0xedcb73){if(_0xedcb73){return _0xedcb73?{'count':_0x4786a9,'rows':_0xedcb73}:null;}})['then'](respondWithResult(_0x2052a5,null))[_0x0b94('0x47')](handleError(_0x2052a5,null));};exports[_0x0b94('0x86')]=function(_0x453126,_0x1760f6,_0x3f9ea6){if(_0x453126[_0x0b94('0x54')]['id']){delete _0x453126['body']['id'];}return db[_0x0b94('0x29')][_0x0b94('0x84')]({'where':{'id':_0x453126['params']['id']}})[_0x0b94('0x23')](handleEntityNotFound(_0x1760f6,null))['then'](function(_0x3fe53c){if(_0x3fe53c){return _0x3fe53c[_0x0b94('0x86')](_0x453126[_0x0b94('0x54')][_0x0b94('0x87')]||[]);}return null;})[_0x0b94('0x23')](respondWithResult(_0x1760f6,null))[_0x0b94('0x47')](handleError(_0x1760f6,null));};exports[_0x0b94('0x88')]=function(_0x2c7cb5,_0x42edd9,_0x34143a){var _0x3e7bc8={'raw':![],'where':{}};var _0x149f26={};var _0x4eb59c={'count':0x0,'rows':[]};return db[_0x0b94('0x29')]['findOne']({'where':{'id':_0x2c7cb5[_0x0b94('0x4a')]['id']}})[_0x0b94('0x23')](handleEntityNotFound(_0x42edd9,null))[_0x0b94('0x23')](function(_0x5d4404){if(_0x5d4404){_0x149f26[_0x0b94('0x2a')]=_[_0x0b94('0x2e')](db[_0x0b94('0x83')]['rawAttributes']);_0x149f26[_0x0b94('0x2b')]=_['keys'](_0x2c7cb5[_0x0b94('0x2b')]);_0x149f26['filters']=_['intersection'](_0x149f26['model'],_0x149f26['query']);_0x3e7bc8['attributes']=_[_0x0b94('0x30')](_0x149f26[_0x0b94('0x2a')],qs[_0x0b94('0x31')](_0x2c7cb5[_0x0b94('0x2b')][_0x0b94('0x31')]));_0x3e7bc8[_0x0b94('0x32')]=_0x3e7bc8[_0x0b94('0x32')][_0x0b94('0x4c')]?_0x3e7bc8['attributes']:_0x149f26['model'];if(!_0x2c7cb5['query'][_0x0b94('0x53')](_0x0b94('0x33'))){_0x3e7bc8[_0x0b94('0x1c')]=qs['limit'](_0x2c7cb5[_0x0b94('0x2b')][_0x0b94('0x1c')]);_0x3e7bc8[_0x0b94('0x1b')]=qs[_0x0b94('0x1b')](_0x2c7cb5['query'][_0x0b94('0x1b')]);}_0x3e7bc8[_0x0b94('0x34')]=qs[_0x0b94('0x35')](_0x2c7cb5['query'][_0x0b94('0x35')]);_0x3e7bc8[_0x0b94('0x3b')]=qs[_0x0b94('0x2f')](_[_0x0b94('0x36')](_0x2c7cb5[_0x0b94('0x2b')],_0x149f26[_0x0b94('0x2f')]));_0x3e7bc8[_0x0b94('0x3b')]['ContactId']=_0x5d4404['id'];if(_0x2c7cb5[_0x0b94('0x2b')][_0x0b94('0x3a')]){_0x3e7bc8[_0x0b94('0x3b')]=_[_0x0b94('0x39')](_0x3e7bc8[_0x0b94('0x3b')],{'$or':_[_0x0b94('0x3c')](_0x3e7bc8[_0x0b94('0x32')],function(_0x3e17c1){var _0x52fdb4={};_0x52fdb4[_0x3e17c1]={'$like':'%'+_0x2c7cb5[_0x0b94('0x2b')]['filter']+'%'};return _0x52fdb4;})});}_0x3e7bc8=_[_0x0b94('0x39')]({},_0x3e7bc8,_0x2c7cb5[_0x0b94('0x3d')]);return db[_0x0b94('0x83')][_0x0b94('0x1a')]({'where':_0x3e7bc8[_0x0b94('0x3b')]})[_0x0b94('0x23')](function(_0x586931){_0x4eb59c[_0x0b94('0x1a')]=_0x586931;if(_0x2c7cb5[_0x0b94('0x2b')]['includeAll']){_0x3e7bc8[_0x0b94('0x3e')]=[{'all':!![]}];}return db[_0x0b94('0x83')][_0x0b94('0x45')](_0x3e7bc8);})[_0x0b94('0x23')](function(_0x35eb93){_0x4eb59c[_0x0b94('0x46')]=_0x35eb93;return _0x4eb59c;});}})[_0x0b94('0x23')](respondWithFilteredResult(_0x42edd9,_0x3e7bc8))[_0x0b94('0x47')](handleError(_0x42edd9,null));};exports[_0x0b94('0x89')]=function(_0x30c0d6,_0x1bb9c7,_0x3e2ca6){var _0x5b6966={'raw':!![],'where':{}};var _0x8fd2f3={};var _0x6ad7d3={'count':0x0,'rows':[]};return db[_0x0b94('0x29')][_0x0b94('0x84')]({'where':{'id':_0x30c0d6[_0x0b94('0x4a')]['id']}})[_0x0b94('0x23')](handleEntityNotFound(_0x1bb9c7,null))[_0x0b94('0x23')](function(_0x3ba45d){if(_0x3ba45d){_0x8fd2f3['model']=_[_0x0b94('0x2e')](db[_0x0b94('0x8a')][_0x0b94('0x8b')]);_0x8fd2f3['query']=_['keys'](_0x30c0d6[_0x0b94('0x2b')]);_0x8fd2f3[_0x0b94('0x2f')]=_[_0x0b94('0x30')](_0x8fd2f3[_0x0b94('0x2a')],_0x8fd2f3['query']);_0x5b6966[_0x0b94('0x32')]=_['intersection'](_0x8fd2f3[_0x0b94('0x2a')],qs[_0x0b94('0x31')](_0x30c0d6[_0x0b94('0x2b')][_0x0b94('0x31')]));_0x5b6966['attributes']=_0x5b6966[_0x0b94('0x32')][_0x0b94('0x4c')]?_0x5b6966[_0x0b94('0x32')]:_0x8fd2f3[_0x0b94('0x2a')];if(!_0x30c0d6[_0x0b94('0x2b')]['hasOwnProperty'](_0x0b94('0x33'))){_0x5b6966[_0x0b94('0x1c')]=qs[_0x0b94('0x1c')](_0x30c0d6[_0x0b94('0x2b')][_0x0b94('0x1c')]);_0x5b6966[_0x0b94('0x1b')]=qs[_0x0b94('0x1b')](_0x30c0d6['query'][_0x0b94('0x1b')]);}_0x5b6966[_0x0b94('0x34')]=qs[_0x0b94('0x35')](_0x30c0d6[_0x0b94('0x2b')][_0x0b94('0x35')]);_0x5b6966[_0x0b94('0x3b')]=qs[_0x0b94('0x2f')](_['pick'](_0x30c0d6['query'],_0x8fd2f3[_0x0b94('0x2f')]));_0x5b6966[_0x0b94('0x3b')][_0x0b94('0x8c')]=_0x3ba45d['id'];if(_0x30c0d6[_0x0b94('0x2b')][_0x0b94('0x3a')]){_0x5b6966[_0x0b94('0x3b')]=_['merge'](_0x5b6966[_0x0b94('0x3b')],{'$or':_[_0x0b94('0x3c')](_0x5b6966[_0x0b94('0x32')],function(_0xad4ad0){var _0x9e9403={};_0x9e9403[_0xad4ad0]={'$like':'%'+_0x30c0d6[_0x0b94('0x2b')][_0x0b94('0x3a')]+'%'};return _0x9e9403;})});}_0x5b6966=_['merge']({},_0x5b6966,_0x30c0d6[_0x0b94('0x3d')]);return db[_0x0b94('0x8a')]['count']({'where':_0x5b6966[_0x0b94('0x3b')]})['then'](function(_0x2d5a2b){_0x6ad7d3[_0x0b94('0x1a')]=_0x2d5a2b;if(_0x30c0d6['query'][_0x0b94('0x41')]){_0x5b6966['include']=[{'all':!![]}];}return db[_0x0b94('0x8a')][_0x0b94('0x45')](_0x5b6966);})['then'](function(_0x533749){_0x6ad7d3['rows']=_0x533749;return _0x6ad7d3;});}})[_0x0b94('0x23')](respondWithFilteredResult(_0x1bb9c7,_0x5b6966))[_0x0b94('0x47')](handleError(_0x1bb9c7,null));};exports[_0x0b94('0x8d')]=function(_0x3db083,_0xadf716,_0x4572e6){var _0x13b54a={'raw':!![],'where':{}};var _0x62e7e3={};var _0x1c6a7c={'count':0x0,'rows':[]};return db[_0x0b94('0x29')][_0x0b94('0x84')]({'where':{'id':_0x3db083['params']['id']}})[_0x0b94('0x23')](handleEntityNotFound(_0xadf716,null))[_0x0b94('0x23')](function(_0x40920f){if(_0x40920f){_0x62e7e3['model']=_[_0x0b94('0x2e')](db[_0x0b94('0x68')][_0x0b94('0x8b')]);_0x62e7e3['query']=_['keys'](_0x3db083[_0x0b94('0x2b')]);_0x62e7e3[_0x0b94('0x2f')]=_[_0x0b94('0x30')](_0x62e7e3[_0x0b94('0x2a')],_0x62e7e3[_0x0b94('0x2b')]);_0x13b54a['attributes']=_[_0x0b94('0x30')](_0x62e7e3['model'],qs[_0x0b94('0x31')](_0x3db083[_0x0b94('0x2b')][_0x0b94('0x31')]));_0x13b54a[_0x0b94('0x32')]=_0x13b54a[_0x0b94('0x32')][_0x0b94('0x4c')]?_0x13b54a[_0x0b94('0x32')]:_0x62e7e3[_0x0b94('0x2a')];if(!_0x3db083['query'][_0x0b94('0x53')](_0x0b94('0x33'))){_0x13b54a['limit']=qs['limit'](_0x3db083[_0x0b94('0x2b')][_0x0b94('0x1c')]);_0x13b54a[_0x0b94('0x1b')]=qs[_0x0b94('0x1b')](_0x3db083[_0x0b94('0x2b')][_0x0b94('0x1b')]);}_0x13b54a['order']=qs[_0x0b94('0x35')](_0x3db083[_0x0b94('0x2b')][_0x0b94('0x35')]);_0x13b54a[_0x0b94('0x3b')]=qs[_0x0b94('0x2f')](_[_0x0b94('0x36')](_0x3db083[_0x0b94('0x2b')],_0x62e7e3[_0x0b94('0x2f')]));_0x13b54a['where'][_0x0b94('0x8c')]=_0x40920f['id'];if(_0x3db083[_0x0b94('0x2b')]['filter']){_0x13b54a['where']=_[_0x0b94('0x39')](_0x13b54a['where'],{'$or':_[_0x0b94('0x3c')](_0x13b54a[_0x0b94('0x32')],function(_0x8ab780){var _0x381bb3={};_0x381bb3[_0x8ab780]={'$like':'%'+_0x3db083[_0x0b94('0x2b')]['filter']+'%'};return _0x381bb3;})});}_0x13b54a=_[_0x0b94('0x39')]({},_0x13b54a,_0x3db083[_0x0b94('0x3d')]);return db[_0x0b94('0x68')][_0x0b94('0x1a')]({'where':_0x13b54a['where']})[_0x0b94('0x23')](function(_0x13736b){_0x1c6a7c[_0x0b94('0x1a')]=_0x13736b;if(_0x3db083[_0x0b94('0x2b')]['includeAll']){_0x13b54a[_0x0b94('0x3e')]=[{'all':!![]}];}return db[_0x0b94('0x68')][_0x0b94('0x45')](_0x13b54a);})['then'](function(_0x3f72e4){_0x1c6a7c['rows']=_0x3f72e4;return _0x1c6a7c;});}})[_0x0b94('0x23')](respondWithFilteredResult(_0xadf716,_0x13b54a))[_0x0b94('0x47')](handleError(_0xadf716,null));};exports['getJscriptySessions']=function(_0x19bb71,_0x501ba4,_0x45eccb){var _0x2f90a9={'raw':!![],'where':{}};var _0x3af423={};var _0xdb75f9={'count':0x0,'rows':[]};return db['CmContact'][_0x0b94('0x84')]({'where':{'id':_0x19bb71[_0x0b94('0x4a')]['id']}})[_0x0b94('0x23')](handleEntityNotFound(_0x501ba4,null))['then'](function(_0x1efc7d){if(_0x1efc7d){_0x3af423['model']=_[_0x0b94('0x2e')](db['JscriptySessionReport'][_0x0b94('0x8b')]);_0x3af423['query']=_[_0x0b94('0x2e')](_0x19bb71['query']);_0x3af423[_0x0b94('0x2f')]=_[_0x0b94('0x30')](_0x3af423[_0x0b94('0x2a')],_0x3af423[_0x0b94('0x2b')]);_0x2f90a9[_0x0b94('0x32')]=_[_0x0b94('0x30')](_0x3af423['model'],qs[_0x0b94('0x31')](_0x19bb71[_0x0b94('0x2b')]['fields']));_0x2f90a9['attributes']=_0x2f90a9[_0x0b94('0x32')][_0x0b94('0x4c')]?_0x2f90a9['attributes']:_0x3af423[_0x0b94('0x2a')];if(!_0x19bb71[_0x0b94('0x2b')][_0x0b94('0x53')]('nolimit')){_0x2f90a9[_0x0b94('0x1c')]=qs[_0x0b94('0x1c')](_0x19bb71[_0x0b94('0x2b')][_0x0b94('0x1c')]);_0x2f90a9[_0x0b94('0x1b')]=qs[_0x0b94('0x1b')](_0x19bb71[_0x0b94('0x2b')][_0x0b94('0x1b')]);}_0x2f90a9[_0x0b94('0x34')]=qs[_0x0b94('0x35')](_0x19bb71[_0x0b94('0x2b')][_0x0b94('0x35')]);_0x2f90a9['where']=qs[_0x0b94('0x2f')](_[_0x0b94('0x36')](_0x19bb71['query'],_0x3af423['filters']));_0x2f90a9[_0x0b94('0x3b')][_0x0b94('0x8c')]=_0x1efc7d['id'];if(_0x19bb71['query'][_0x0b94('0x3a')]){_0x2f90a9['where']=_['merge'](_0x2f90a9[_0x0b94('0x3b')],{'$or':_[_0x0b94('0x3c')](_0x2f90a9[_0x0b94('0x32')],function(_0x1ae4f4){var _0x38c8c9={};_0x38c8c9[_0x1ae4f4]={'$like':'%'+_0x19bb71[_0x0b94('0x2b')][_0x0b94('0x3a')]+'%'};return _0x38c8c9;})});}_0x2f90a9=_[_0x0b94('0x39')]({},_0x2f90a9,_0x19bb71['options']);return db[_0x0b94('0x8e')][_0x0b94('0x1a')]({'where':_0x2f90a9[_0x0b94('0x3b')]})[_0x0b94('0x23')](function(_0x214f07){_0xdb75f9[_0x0b94('0x1a')]=_0x214f07;if(_0x19bb71[_0x0b94('0x2b')][_0x0b94('0x41')]){_0x2f90a9[_0x0b94('0x3e')]=[{'all':!![]}];}return db[_0x0b94('0x8e')][_0x0b94('0x45')](_0x2f90a9);})[_0x0b94('0x23')](function(_0x545a4d){_0xdb75f9[_0x0b94('0x46')]=_0x545a4d;return _0xdb75f9;});}})[_0x0b94('0x23')](respondWithFilteredResult(_0x501ba4,_0x2f90a9))[_0x0b94('0x47')](handleError(_0x501ba4,null));};exports[_0x0b94('0x8f')]=function(_0x31ed00,_0x48e099,_0x42bd50){try{if(!_0x31ed00['body'][_0x0b94('0x72')]){throw new Error(_0x0b94('0x90'));}if(!_0x31ed00[_0x0b94('0x54')][_0x0b94('0x91')]){throw new Error(_0x0b94('0x92'));}if(!_0x31ed00[_0x0b94('0x54')][_0x0b94('0x93')]){throw new Error(_0x0b94('0x94'));}if(!_0x31ed00[_0x0b94('0x54')][_0x0b94('0x95')]){throw new Error(_0x0b94('0x96'));}var _0x470ddc=_0x31ed00[_0x0b94('0x54')][_0x0b94('0x91')][_0x0b94('0x97')](',');var _0xa5eeb3=_0x31ed00[_0x0b94('0x54')][_0x0b94('0x93')][_0x0b94('0x97')](',');if(!_0x470ddc[_0x0b94('0x4c')]||!_0xa5eeb3['length']||_0x470ddc[_0x0b94('0x4c')]!==_0xa5eeb3['length']){throw new Error(_0x0b94('0x98'));}_0x31ed00[_0x0b94('0x54')][_0x0b94('0x31')]=_[_0x0b94('0x99')](_0x470ddc,_0xa5eeb3);if(!_0x31ed00['body'][_0x0b94('0x31')]['phone']){throw new Error(_0x0b94('0x9a'));}if(!_0x31ed00['body'][_0x0b94('0x31')][_0x0b94('0x9b')]){throw new Error(_0x0b94('0x9c'));}var _0x5395c8=path[_0x0b94('0x6e')](config[_0x0b94('0x9d')],_0x0b94('0x9e'),_0x31ed00[_0x0b94('0x9f')][_0x0b94('0xa0')]);fs[_0x0b94('0xa1')](_0x5395c8,parseInt(_0x0b94('0xa2'),0x8));var _0x4aaf96=require(_0x0b94('0xa3'))['fork'](path[_0x0b94('0x6e')](__dirname,_0x0b94('0xa4')),[_0x5395c8,_0x31ed00[_0x0b94('0x54')][_0x0b94('0x91')],_0x31ed00[_0x0b94('0x54')][_0x0b94('0x93')],_0x31ed00[_0x0b94('0x54')]['ListId'],_0x31ed00['body'][_0x0b94('0xa5')],_0x31ed00['body'][_0x0b94('0x70')],_0x31ed00['body'][_0x0b94('0x95')]]);return _0x48e099[_0x0b94('0x18')](0xc8)[_0x0b94('0x1f')]({'message':'File\x20uploaded\x20correctly!','pid':_0x4aaf96[_0x0b94('0xa6')]});}catch(_0x255a19){return _0x48e099[_0x0b94('0x18')](0x1f4)['send'](_0x255a19);}};exports['upload']=function(_0x5bc369,_0x22446d,_0x3afe17){var _0x10f345=fs['createReadStream'](_0x5bc369['file'][_0x0b94('0xa7')]);Papa[_0x0b94('0xa8')](_0x10f345,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x109423){return _0x22446d[_0x0b94('0x18')](0xc8)[_0x0b94('0x1f')]({'file':_0x5bc369[_0x0b94('0x9f')],'fields':_0x109423[_0x0b94('0xa9')][_0x0b94('0x31')]});}});};exports[_0x0b94('0xaa')]=function(_0x2b3c20,_0x14d29a,_0xa90135){return db[_0x0b94('0xab')][_0x0b94('0x45')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0b94('0xac')}})['then'](function(_0x3ef498){var _0x5490e7=![];if(!_0x2b3c20['body'][_0x0b94('0x72')]){throw new Error(_0x0b94('0x90'));}if(!_0x2b3c20['body'][_0x0b94('0xad')]['phone']){throw new Error(_0x0b94('0x9a'));}if(!_0x2b3c20['body']['binding'][_0x0b94('0x9b')]){throw new Error(_0x0b94('0x9c'));}if(!_0x2b3c20[_0x0b94('0x54')][_0x0b94('0x95')]){throw new Error(_0x0b94('0x96'));}var _0x4d4be6=require(_0x0b94('0xa3'))['fork'](path['join'](__dirname,'../../components/import/cm/csv2'),[_0x2b3c20[_0x0b94('0x4a')]['id'],JSON[_0x0b94('0xae')](_0x2b3c20[_0x0b94('0x54')]),JSON[_0x0b94('0xae')](_0x3ef498)]);_0x4d4be6['on'](_0x0b94('0xaf'),function(_0x590398){_0x5490e7=!![];return _0x14d29a[_0x0b94('0x18')](0xc8)[_0x0b94('0x1f')]({'message':_0x0b94('0xb0'),'pid':_0x4d4be6[_0x0b94('0xa6')]});});_0x4d4be6['on'](_0x0b94('0xb1'),function(_0x4db6f1){if(_0x4db6f1&&!_0x5490e7){return _0x14d29a[_0x0b94('0x18')](0x1f4)['json']({'message':_0x0b94('0xb2'),'pid':_0x4d4be6['pid']});}});})['catch'](handleError(_0x14d29a,null));};
\ No newline at end of file
+var _0x8d77=['mustache','util','path','sox','to-csv','lodash','squel','desk.js','querystring','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','./cmContact.socket','register','sendStatus','status','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','CmContact','describe','model','query','dateStart','dateEnd','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','add','day','merge','filter','map','options','include','tag','push','Tags','distinct','includeAll','Tag','color','findAll','rows','destroy','find','params','catch','columnName','displayName','CmCustomField','alias','body','from','get','mergeWith','isArray','tags','join','CmHopper','CmHopperBlack','info','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatMessage','ChatOfflineMessage','MailMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','create','bulkCreate','duplicates','$or','ListId','findOrCreate','spread','$and','omit','format','cf_%d','pickBy','startsWith','cf_','isEmpty','cm_contacts','setFields','id\x20=\x20?','sequelize','text','phone','findOne','intersection','pick','getTags','setTags','getHoppers','rawAttributes','ContactId','getHopperFinals','getJscriptySessions','JscriptySessionReport','uploadCsv','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','No\x20phone\x20column\x20specified','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','chmodSync','0777','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','meta','User','agent','No\x20ListId\x20specified','binding','firstName','child_process','../../components/import/cm/csv2','stringify','message','exit','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x8d77,0x150));var _0x78d7=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0x8d77[_0x5b78e8];return _0xf2c321;};'use strict';var pdf=require(_0x78d7('0x0'));var emlformat=require(_0x78d7('0x1'));var rimraf=require(_0x78d7('0x2'));var zipdir=require(_0x78d7('0x3'));var jsonpatch=require(_0x78d7('0x4'));var rp=require(_0x78d7('0x5'));var moment=require(_0x78d7('0x6'));var BPromise=require(_0x78d7('0x7'));var Mustache=require(_0x78d7('0x8'));var util=require(_0x78d7('0x9'));var path=require(_0x78d7('0xa'));var sox=require(_0x78d7('0xb'));var csv=require(_0x78d7('0xc'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x78d7('0xd'));var squel=require(_0x78d7('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x78d7('0xf'));var toCsv=require('to-csv');var querystring=require(_0x78d7('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0x78d7('0x11'));var logger=require(_0x78d7('0x12'))(_0x78d7('0x13'));var utils=require('../../config/utils');var config=require(_0x78d7('0x14'));var db=require(_0x78d7('0x15'))['db'];config['redis']=_['defaults'](config[_0x78d7('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x78d7('0x16')]));require(_0x78d7('0x17'))[_0x78d7('0x18')](socket);function respondWithStatusCode(_0x1c82c0,_0x3c150f){_0x3c150f=_0x3c150f||0xcc;return function(_0xddd58e){if(_0xddd58e){return _0x1c82c0[_0x78d7('0x19')](_0x3c150f);}return _0x1c82c0[_0x78d7('0x1a')](_0x3c150f)['end']();};}function respondWithResult(_0x51c47b,_0x582865){_0x582865=_0x582865||0xc8;return function(_0x37d21a){if(_0x37d21a){return _0x51c47b[_0x78d7('0x1a')](_0x582865)[_0x78d7('0x1b')](_0x37d21a);}};}function respondWithFilteredResult(_0x30dcf7,_0x1a87a9){return function(_0x191d34){if(_0x191d34){var _0x595908=_0x191d34[_0x78d7('0x1c')],_0x429d63=_0x1a87a9[_0x78d7('0x1d')],_0x5e1e6d=_0x1a87a9[_0x78d7('0x1d')]+_0x1a87a9[_0x78d7('0x1e')],_0x3265ba;if(_0x5e1e6d>=_0x595908){_0x5e1e6d=_0x595908;_0x3265ba=0xc8;}else{_0x3265ba=0xce;}_0x30dcf7['status'](_0x3265ba);return _0x30dcf7[_0x78d7('0x1f')](_0x78d7('0x20'),_0x429d63+'-'+_0x5e1e6d+'/'+_0x595908)[_0x78d7('0x1b')](_0x191d34);}return null;};}function patchUpdates(_0x252848){return function(_0x51e723){try{jsonpatch[_0x78d7('0x21')](_0x51e723,_0x252848,!![]);}catch(_0x14ee26){return BPromise[_0x78d7('0x22')](_0x14ee26);}return _0x51e723[_0x78d7('0x23')]();};}function saveUpdates(_0x26b969,_0x292b97){return function(_0x44a18a){if(_0x44a18a){return _0x44a18a[_0x78d7('0x24')](_0x26b969)[_0x78d7('0x25')](function(_0x5a269b){return _0x5a269b;});}return null;};}function removeEntity(_0x5d8259,_0x358f03){return function(_0x5bf9f6){if(_0x5bf9f6){return _0x5bf9f6['destroy']()[_0x78d7('0x25')](function(){_0x5d8259[_0x78d7('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d098c,_0x3b035a){return function(_0x13ed2d){if(!_0x13ed2d){_0x1d098c['sendStatus'](0x194);}return _0x13ed2d;};}function handleError(_0x3a6c7a,_0xa05767){_0xa05767=_0xa05767||0x1f4;return function(_0x15cf4c){logger[_0x78d7('0x26')](_0x15cf4c[_0x78d7('0x27')]);if(_0x15cf4c['name']){delete _0x15cf4c[_0x78d7('0x28')];}_0x3a6c7a['status'](_0xa05767)[_0x78d7('0x29')](_0x15cf4c);};}exports[_0x78d7('0x2a')]=function(_0x1bc095,_0x1042c2){var _0x454553={},_0x28c20f={},_0x2e570d={'count':0x0,'rows':[]};return db[_0x78d7('0x2b')][_0x78d7('0x2c')]()[_0x78d7('0x25')](function(_0x4c5318){_0x28c20f[_0x78d7('0x2d')]=_['keys'](_0x4c5318);var _0x20cf06={'dateStart':_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x2f')],'dateEnd':_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x30')]};delete _0x1bc095[_0x78d7('0x2e')][_0x78d7('0x2f')];delete _0x1bc095[_0x78d7('0x2e')][_0x78d7('0x30')];_0x28c20f[_0x78d7('0x2e')]=_[_0x78d7('0x31')](_0x1bc095[_0x78d7('0x2e')]);_0x28c20f[_0x78d7('0x32')]=_['intersection'](_0x28c20f[_0x78d7('0x2d')],_0x28c20f['query']);_0x454553[_0x78d7('0x33')]=_['intersection'](_0x28c20f['model'],qs['fields'](_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x34')]));_0x454553['attributes']=_0x454553['attributes'][_0x78d7('0x35')]?_0x454553[_0x78d7('0x33')]:_0x28c20f[_0x78d7('0x2d')];if(!_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x36')](_0x78d7('0x37'))){_0x454553['limit']=qs[_0x78d7('0x1e')](_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x1e')]);_0x454553[_0x78d7('0x1d')]=qs[_0x78d7('0x1d')](_0x1bc095[_0x78d7('0x2e')]['offset']);}_0x454553[_0x78d7('0x38')]=qs[_0x78d7('0x39')](_0x1bc095[_0x78d7('0x2e')]['sort']);_0x454553[_0x78d7('0x3a')]=qs[_0x78d7('0x32')](_['pick'](_0x1bc095[_0x78d7('0x2e')],_0x28c20f['filters']));if(_0x20cf06[_0x78d7('0x2f')]){if(_0x20cf06[_0x78d7('0x30')]){_0x20cf06[_0x78d7('0x30')]=moment(_0x20cf06[_0x78d7('0x30')])[_0x78d7('0x3b')](0x1,_0x78d7('0x3c'));}else{_0x20cf06['dateEnd']=moment(_0x20cf06[_0x78d7('0x2f')])['add'](0x1,'day');}_[_0x78d7('0x3d')](_0x454553[_0x78d7('0x3a')],{'createdAt':{'$gte':_0x20cf06['dateStart'],'$lte':_0x20cf06[_0x78d7('0x30')]}});}if(_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x3e')]){_0x454553[_0x78d7('0x3a')]=_[_0x78d7('0x3d')](_0x454553[_0x78d7('0x3a')],{'$or':_[_0x78d7('0x3f')](_0x454553[_0x78d7('0x33')],function(_0x3d1535){var _0x2abe81={};_0x2abe81[_0x3d1535]={'$like':'%'+_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x3e')]+'%'};return _0x2abe81;})});}_0x454553=_['merge']({},_0x454553,_0x1bc095[_0x78d7('0x40')]);var _0x315e15={'where':_0x454553[_0x78d7('0x3a')]};_0x315e15[_0x78d7('0x41')]=[];if(_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x42')]){_0x315e15[_0x78d7('0x41')][_0x78d7('0x43')]({'model':db['Tag'],'as':_0x78d7('0x44'),'attributes':['id'],'where':{'id':_0x1bc095[_0x78d7('0x2e')]['tag']},'required':!![]});_0x315e15[_0x78d7('0x45')]=!![];}return db[_0x78d7('0x2b')]['count'](_0x315e15)[_0x78d7('0x25')](function(_0x194657){_0x2e570d[_0x78d7('0x1c')]=_0x194657;if(_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x46')]){_0x454553[_0x78d7('0x41')]=[{'model':db['Tag'],'as':_0x78d7('0x44'),'attributes':['id',_0x78d7('0x28'),'color'],'required':_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x42')]?!![]:![]},{'model':db[_0x78d7('0x47')],'as':'ThroughTags','attributes':['id',_0x78d7('0x28'),_0x78d7('0x48')],'through':_0x1bc095[_0x78d7('0x2e')][_0x78d7('0x42')]?{'attributes':[],'where':{'TagId':_0x1bc095[_0x78d7('0x2e')]['tag']||undefined}}:{},'required':_0x1bc095['query'][_0x78d7('0x42')]?!![]:![]}];}return db[_0x78d7('0x2b')][_0x78d7('0x49')](_0x454553);})[_0x78d7('0x25')](function(_0x5adbe5){_0x2e570d[_0x78d7('0x4a')]=_0x5adbe5;return _0x2e570d;})['then'](respondWithFilteredResult(_0x1042c2,_0x454553))['catch'](handleError(_0x1042c2,null));});};exports[_0x78d7('0x4b')]=function(_0x2c16da,_0x2b17c7){return db[_0x78d7('0x2b')][_0x78d7('0x4c')]({'where':{'id':_0x2c16da[_0x78d7('0x4d')]['id']}})[_0x78d7('0x25')](handleEntityNotFound(_0x2b17c7,null))[_0x78d7('0x25')](removeEntity(_0x2b17c7,null))[_0x78d7('0x4e')](handleError(_0x2b17c7,null));};exports[_0x78d7('0x2c')]=function(_0x206020,_0x648ce){return db[_0x78d7('0x2b')][_0x78d7('0x2c')]()[_0x78d7('0x25')](function(_0x453725){for(var _0x2022c0=0x0;_0x2022c0<Object[_0x78d7('0x31')](_0x453725)[_0x78d7('0x35')];_0x2022c0++){var _0x4b31b5=Object[_0x78d7('0x31')](_0x453725)[_0x2022c0];if(!_['startsWith'](_0x4b31b5,'cf_')){_0x453725[_0x4b31b5][_0x78d7('0x4f')]=_0x4b31b5;_0x453725[_0x4b31b5][_0x78d7('0x50')]=_0x4b31b5;}}return _0x453725;})[_0x78d7('0x25')](function(_0x3a879a){var _0x1ebc95={'where':{'$or':[{'ListId':_0x206020[_0x78d7('0x2e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x78d7('0x51')][_0x78d7('0x49')](_0x1ebc95)[_0x78d7('0x25')](function(_0x151afe){for(var _0x6ada5f=0x0;_0x6ada5f<_0x151afe[_0x78d7('0x35')];_0x6ada5f++){var _0x83af54='cf_'+_0x151afe[_0x6ada5f]['id'];_0x3a879a[_0x83af54][_0x78d7('0x4f')]=_0x83af54;_0x3a879a[_0x83af54][_0x78d7('0x50')]=_0x151afe[_0x6ada5f][_0x78d7('0x52')];}for(var _0x6ada5f=0x0;_0x6ada5f<Object[_0x78d7('0x31')](_0x3a879a)[_0x78d7('0x35')];_0x6ada5f++){var _0x83af54=Object[_0x78d7('0x31')](_0x3a879a)[_0x6ada5f];if(!_0x3a879a[_0x83af54][_0x78d7('0x36')](_0x78d7('0x4f'))){delete _0x3a879a[_0x83af54];}}return _0x3a879a;});})[_0x78d7('0x25')](respondWithResult(_0x648ce,null))['catch'](handleError(_0x648ce,null));};exports['merge']=function(_0x126054,_0x357dfb){var _0x4af60d;var _0x2bcd49;var _0x3eb9a6;if(_0x126054[_0x78d7('0x53')]['id']){delete _0x126054[_0x78d7('0x53')]['id'];}return db[_0x78d7('0x2b')][_0x78d7('0x49')]({'where':{'id':[_0x126054[_0x78d7('0x53')]['to'],_0x126054[_0x78d7('0x53')][_0x78d7('0x54')]]}})[_0x78d7('0x25')](function(_0x2c7531){if(_0x2c7531){if(_0x2c7531[_0x78d7('0x35')]!==0x2){return null;}_0x2c7531[0x0]=_0x2c7531[0x0][_0x78d7('0x55')]({'plain':!![]});_0x2c7531[0x1]=_0x2c7531[0x1][_0x78d7('0x55')]({'plain':!![]});delete _0x2c7531[0x0]['id'];delete _0x2c7531[0x1]['id'];return _[_0x78d7('0x56')](_0x2c7531[0x0],_0x2c7531[0x1],function(_0x14521d,_0x57f0c7){if(Array['isArray'](_0x57f0c7)&&!_0x57f0c7[_0x78d7('0x35')]){return _0x14521d;}else if(!_0x57f0c7){return _0x14521d;}});}})['then'](handleEntityNotFound(_0x357dfb,null))[_0x78d7('0x25')](function(_0x57fa76){if(_0x57fa76){if(_0x57fa76['tags']&&_[_0x78d7('0x57')](_0x57fa76[_0x78d7('0x58')])){_0x57fa76[_0x78d7('0x58')]=_0x57fa76[_0x78d7('0x58')][_0x78d7('0x59')]();}logger['info']('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x126054[_0x78d7('0x53')]['to'],_0x126054[_0x78d7('0x53')][_0x78d7('0x54')]);return db[_0x78d7('0x5a')]['destroy']({'where':{'ContactId':[_0x126054[_0x78d7('0x53')]['to'],_0x126054[_0x78d7('0x53')][_0x78d7('0x54')]]}})[_0x78d7('0x25')](function(_0x465803){logger['info']('[CmContact][merge][destroy][CmHopper],\x20%s',_0x465803);return db[_0x78d7('0x5b')][_0x78d7('0x4b')]({'where':{'ContactId':[_0x126054['body']['to'],_0x126054['body'][_0x78d7('0x54')]]}})[_0x78d7('0x25')](function(_0x5f120b){logger[_0x78d7('0x5c')](_0x78d7('0x5d'),_0x5f120b);return db[_0x78d7('0x2b')]['create'](_0x57fa76);});});}})['then'](function(_0x3b8af7){if(_0x3b8af7){_0x4af60d=_0x3b8af7;_0x2bcd49={'ContactId':_0x4af60d['id']};_0x3eb9a6={'where':{'ContactId':[_0x126054[_0x78d7('0x53')]['to'],_0x126054[_0x78d7('0x53')][_0x78d7('0x54')]]}};return db['ChatInteraction'][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x5e')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x5f')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db['MailInteraction'][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x60')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db['MailInteraction'][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x60')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})['then'](function(){if(_0x4af60d){return db['SmsInteraction']['update'](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db['SmsMessage']['update'](_0x2bcd49,_0x3eb9a6);}})['then'](function(){if(_0x4af60d){return db[_0x78d7('0x61')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x62')]['update'](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x63')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x64')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x65')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x66')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x67')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})['then'](function(){if(_0x4af60d){return db[_0x78d7('0x68')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x69')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x6a')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x6b')][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})['then'](function(){if(_0x4af60d){return db[_0x78d7('0x6c')]['update'](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db['SmsQueueReport'][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db['JscriptySessionReport'][_0x78d7('0x24')](_0x2bcd49,_0x3eb9a6);}})[_0x78d7('0x25')](function(){if(_0x4af60d){return db[_0x78d7('0x2b')][_0x78d7('0x4b')]({'where':{'id':[_0x126054[_0x78d7('0x53')]['to'],_0x126054[_0x78d7('0x53')][_0x78d7('0x54')]]}});}})['then'](function(){if(_0x4af60d){return _0x4af60d;}})[_0x78d7('0x25')](respondWithResult(_0x357dfb,null))[_0x78d7('0x4e')](handleError(_0x357dfb,null));};exports[_0x78d7('0x6d')]=function(_0x1e15c1,_0x4504d4){return db[_0x78d7('0x2b')][_0x78d7('0x2c')]()[_0x78d7('0x25')](function(_0x18d8a3){if(_0x1e15c1[_0x78d7('0x53')][_0x78d7('0x58')]&&_[_0x78d7('0x57')](_0x1e15c1[_0x78d7('0x53')][_0x78d7('0x58')])){if(_0x1e15c1[_0x78d7('0x53')]['tags']['length']){_0x1e15c1[_0x78d7('0x53')]['tags']=_0x1e15c1[_0x78d7('0x53')][_0x78d7('0x58')][_0x78d7('0x59')](';')+';';}else{_0x1e15c1[_0x78d7('0x53')][_0x78d7('0x58')]=null;}}else{_0x1e15c1[_0x78d7('0x53')][_0x78d7('0x58')]=null;}return db[_0x78d7('0x2b')][_0x78d7('0x6d')](_0x1e15c1[_0x78d7('0x53')],{'fields':_[_0x78d7('0x31')](_0x18d8a3),'raw':!![]});})['then'](respondWithResult(_0x4504d4,0xc9))[_0x78d7('0x4e')](handleError(_0x4504d4,null));};exports[_0x78d7('0x6e')]=function(_0x2d403c,_0x2d5257){var _0x2b261d=[];var _0x35e5a0=0x0;var _0x5f5c14=0x0;var _0x32ef96=0x0;return db[_0x78d7('0x2b')][_0x78d7('0x2c')]()[_0x78d7('0x25')](function(_0x57594d){return BPromise['each'](_0x2d403c[_0x78d7('0x53')],function(_0x8990ee){var _0xe20305={'where':{'$or':[]},'defaults':_0x8990ee,'fields':_[_0x78d7('0x31')](_0x57594d),'raw':!![]};if(_0x8990ee['duplicates']){for(var _0x3a7c5a=0x0;_0x3a7c5a<_0x8990ee[_0x78d7('0x6f')][_0x78d7('0x35')];_0x3a7c5a++){var _0x1f4e13={};_0x1f4e13[_0x8990ee['duplicates'][_0x3a7c5a]]=_0x8990ee[_0x8990ee[_0x78d7('0x6f')][_0x3a7c5a]];_0xe20305[_0x78d7('0x3a')][_0x78d7('0x70')][_0x78d7('0x43')](_0x1f4e13);}_0xe20305[_0x78d7('0x3a')]['ListId']=_0x8990ee[_0x78d7('0x71')];}return db[_0x78d7('0x2b')][_0x78d7('0x72')](_0xe20305)[_0x78d7('0x73')](function(_0x17361e,_0x26d30b){if(_0x26d30b){_0x35e5a0++;}else{_0x32ef96++;}})[_0x78d7('0x4e')](function(_0x1cd4bb){console[_0x78d7('0x26')](_0x1cd4bb);_0x5f5c14++;});});})[_0x78d7('0x25')](function(_0x42b733){if(_0x42b733){return{'success':_0x35e5a0,'failure':_0x5f5c14,'duplicates':_0x32ef96};}})[_0x78d7('0x25')](respondWithResult(_0x2d5257,0xc9))['catch'](handleError(_0x2d5257,null));};exports['show']=function(_0x581b5c,_0x307cec,_0x4dc79f){var _0x2d1b7a;return db[_0x78d7('0x2b')][_0x78d7('0x2c')]()[_0x78d7('0x25')](function(_0x71877e){return db['CmContact'][_0x78d7('0x4c')]({'where':{'id':_0x581b5c[_0x78d7('0x4d')]['id']},'include':[{'model':db[_0x78d7('0x47')],'as':_0x78d7('0x44'),'attributes':['id','name','color'],'required':_0x581b5c[_0x78d7('0x2e')][_0x78d7('0x42')]?!![]:![]}],'attributes':_[_0x78d7('0x31')](_0x71877e)});})[_0x78d7('0x25')](function(_0x310900){_0x2d1b7a=_0x310900[_0x78d7('0x55')]({'plain':!![]});var _0x1c3ce6={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x310900&&_0x310900['ListId']){if(_0x310900[_0x78d7('0x71')]){_0x1c3ce6[_0x78d7('0x3a')][_0x78d7('0x74')][_0x78d7('0x43')]({'ListId':{'$ne':_0x310900[_0x78d7('0x71')]}});}}return db[_0x78d7('0x51')][_0x78d7('0x49')](_0x1c3ce6);})['then'](function(_0x5a859a){return _[_0x78d7('0x75')](_0x2d1b7a,_[_0x78d7('0x3f')](_0x5a859a,function(_0x1b1c77){return util[_0x78d7('0x76')](_0x78d7('0x77'),_0x1b1c77['id']);}));})[_0x78d7('0x25')](handleEntityNotFound(_0x307cec,null))[_0x78d7('0x25')](respondWithResult(_0x307cec,null))[_0x78d7('0x4e')](handleError(_0x307cec,null));};exports[_0x78d7('0x24')]=function(_0x22f7db,_0x2dd66e){var _0x57dcd6;if(_0x22f7db[_0x78d7('0x53')]['id']){delete _0x22f7db[_0x78d7('0x53')]['id'];}return db[_0x78d7('0x2b')]['find']({'where':{'id':_0x22f7db['params']['id']}})[_0x78d7('0x25')](handleEntityNotFound(_0x2dd66e,null))[_0x78d7('0x25')](saveUpdates(_0x22f7db[_0x78d7('0x53')],null))['then'](function(_0x2632ed){_0x57dcd6=_0x2632ed;var _0x8452a8={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2632ed&&_0x2632ed[_0x78d7('0x71')]){if(_0x2632ed[_0x78d7('0x71')]){_0x8452a8[_0x78d7('0x3a')][_0x78d7('0x74')]['push']({'ListId':{'$ne':_0x2632ed[_0x78d7('0x71')]}});}}return db[_0x78d7('0x51')][_0x78d7('0x49')](_0x8452a8);})[_0x78d7('0x25')](function(_0x58e243){if(_0x58e243){return _[_0x78d7('0x75')](_[_0x78d7('0x78')](_0x22f7db[_0x78d7('0x53')],function(_0x25878c,_0x546433){return _[_0x78d7('0x79')](_0x546433,_0x78d7('0x7a'));}),_[_0x78d7('0x3f')](_0x58e243,function(_0x3dbc25){return util[_0x78d7('0x76')]('cf_%d',_0x3dbc25['id']);}));}})[_0x78d7('0x25')](function(_0x2f8efd){if(_0x2f8efd&&!_[_0x78d7('0x7b')](_0x2f8efd)){var _0x345a06=squel['update']()['table'](_0x78d7('0x7c'))[_0x78d7('0x7d')](_0x2f8efd)[_0x78d7('0x3a')](_0x78d7('0x7e'),_0x22f7db[_0x78d7('0x4d')]['id'])['toParam']();return db[_0x78d7('0x7f')]['query'](_0x345a06[_0x78d7('0x80')],{'replacements':_0x345a06['values']});}})['then'](function(){if(_0x22f7db[_0x78d7('0x53')][_0x78d7('0x81')]&&_0x57dcd6){return db[_0x78d7('0x5a')][_0x78d7('0x24')]({'phone':_0x22f7db[_0x78d7('0x53')]['phone']},{'where':{'ContactId':_0x57dcd6['id']}});}})[_0x78d7('0x25')](function(){return _0x57dcd6;})[_0x78d7('0x25')](respondWithResult(_0x2dd66e,null))[_0x78d7('0x4e')](handleError(_0x2dd66e,null));};exports['getTags']=function(_0x457ac0,_0x490e4,_0x2fe977){var _0x28cace={};var _0x563fcc={};var _0x20bf7c;var _0x5474f9;return db[_0x78d7('0x2b')][_0x78d7('0x82')]({'where':{'id':_0x457ac0['params']['id']}})[_0x78d7('0x25')](handleEntityNotFound(_0x490e4,null))[_0x78d7('0x25')](function(_0xcabd69){if(_0xcabd69){_0x20bf7c=_0xcabd69;_0x563fcc[_0x78d7('0x2d')]=_[_0x78d7('0x31')](db['Tag']['rawAttributes']);_0x563fcc[_0x78d7('0x2e')]=_['keys'](_0x457ac0['query']);_0x563fcc[_0x78d7('0x32')]=_['intersection'](_0x563fcc[_0x78d7('0x2d')],_0x563fcc[_0x78d7('0x2e')]);_0x28cace['attributes']=_[_0x78d7('0x83')](_0x563fcc[_0x78d7('0x2d')],qs[_0x78d7('0x34')](_0x457ac0[_0x78d7('0x2e')][_0x78d7('0x34')]));_0x28cace[_0x78d7('0x33')]=_0x28cace[_0x78d7('0x33')][_0x78d7('0x35')]?_0x28cace['attributes']:_0x563fcc[_0x78d7('0x2d')];_0x28cace[_0x78d7('0x38')]=qs['sort'](_0x457ac0['query'][_0x78d7('0x39')]);_0x28cace[_0x78d7('0x3a')]=qs['filters'](_[_0x78d7('0x84')](_0x457ac0[_0x78d7('0x2e')],_0x563fcc[_0x78d7('0x32')]));if(_0x457ac0[_0x78d7('0x2e')][_0x78d7('0x3e')]){_0x28cace[_0x78d7('0x3a')]=_[_0x78d7('0x3d')](_0x28cace[_0x78d7('0x3a')],{'$or':_['map'](_0x28cace[_0x78d7('0x33')],function(_0x34079e){var _0x5229e1={};_0x5229e1[_0x34079e]={'$like':'%'+_0x457ac0[_0x78d7('0x2e')][_0x78d7('0x3e')]+'%'};return _0x5229e1;})});}_0x28cace=_['merge']({},_0x28cace,_0x457ac0[_0x78d7('0x40')]);return _0x20bf7c[_0x78d7('0x85')](_0x28cace);}})[_0x78d7('0x25')](function(_0x317ff9){if(_0x317ff9){_0x5474f9=_0x317ff9['length'];if(!_0x457ac0[_0x78d7('0x2e')][_0x78d7('0x36')](_0x78d7('0x37'))){_0x28cace[_0x78d7('0x1e')]=qs[_0x78d7('0x1e')](_0x457ac0[_0x78d7('0x2e')][_0x78d7('0x1e')]);_0x28cace[_0x78d7('0x1d')]=qs['offset'](_0x457ac0[_0x78d7('0x2e')][_0x78d7('0x1d')]);}return _0x20bf7c[_0x78d7('0x85')](_0x28cace);}})[_0x78d7('0x25')](function(_0x2bbc9c){if(_0x2bbc9c){return _0x2bbc9c?{'count':_0x5474f9,'rows':_0x2bbc9c}:null;}})[_0x78d7('0x25')](respondWithResult(_0x490e4,null))[_0x78d7('0x4e')](handleError(_0x490e4,null));};exports[_0x78d7('0x86')]=function(_0x49483e,_0x22f7cc,_0x2904ce){if(_0x49483e['body']['id']){delete _0x49483e['body']['id'];}return db['CmContact'][_0x78d7('0x82')]({'where':{'id':_0x49483e[_0x78d7('0x4d')]['id']}})[_0x78d7('0x25')](handleEntityNotFound(_0x22f7cc,null))[_0x78d7('0x25')](function(_0x37eb30){if(_0x37eb30){return _0x37eb30[_0x78d7('0x86')](_0x49483e[_0x78d7('0x53')]['ids']||[]);}return null;})[_0x78d7('0x25')](respondWithResult(_0x22f7cc,null))[_0x78d7('0x4e')](handleError(_0x22f7cc,null));};exports[_0x78d7('0x87')]=function(_0x34e668,_0x1429a9,_0x4ab12f){var _0x1916e3={'raw':![],'where':{}};var _0x46e1d7={};var _0x58c4c5={'count':0x0,'rows':[]};return db['CmContact'][_0x78d7('0x82')]({'where':{'id':_0x34e668[_0x78d7('0x4d')]['id']}})[_0x78d7('0x25')](handleEntityNotFound(_0x1429a9,null))['then'](function(_0x33e655){if(_0x33e655){_0x46e1d7[_0x78d7('0x2d')]=_[_0x78d7('0x31')](db['CmHopper'][_0x78d7('0x88')]);_0x46e1d7[_0x78d7('0x2e')]=_['keys'](_0x34e668[_0x78d7('0x2e')]);_0x46e1d7[_0x78d7('0x32')]=_[_0x78d7('0x83')](_0x46e1d7[_0x78d7('0x2d')],_0x46e1d7['query']);_0x1916e3[_0x78d7('0x33')]=_['intersection'](_0x46e1d7[_0x78d7('0x2d')],qs[_0x78d7('0x34')](_0x34e668[_0x78d7('0x2e')]['fields']));_0x1916e3['attributes']=_0x1916e3['attributes'][_0x78d7('0x35')]?_0x1916e3[_0x78d7('0x33')]:_0x46e1d7[_0x78d7('0x2d')];if(!_0x34e668['query'][_0x78d7('0x36')](_0x78d7('0x37'))){_0x1916e3['limit']=qs[_0x78d7('0x1e')](_0x34e668[_0x78d7('0x2e')][_0x78d7('0x1e')]);_0x1916e3[_0x78d7('0x1d')]=qs[_0x78d7('0x1d')](_0x34e668[_0x78d7('0x2e')][_0x78d7('0x1d')]);}_0x1916e3['order']=qs[_0x78d7('0x39')](_0x34e668[_0x78d7('0x2e')][_0x78d7('0x39')]);_0x1916e3['where']=qs['filters'](_['pick'](_0x34e668[_0x78d7('0x2e')],_0x46e1d7[_0x78d7('0x32')]));_0x1916e3[_0x78d7('0x3a')][_0x78d7('0x89')]=_0x33e655['id'];if(_0x34e668[_0x78d7('0x2e')]['filter']){_0x1916e3[_0x78d7('0x3a')]=_[_0x78d7('0x3d')](_0x1916e3[_0x78d7('0x3a')],{'$or':_[_0x78d7('0x3f')](_0x1916e3['attributes'],function(_0x1ec331){var _0xc0b4b9={};_0xc0b4b9[_0x1ec331]={'$like':'%'+_0x34e668[_0x78d7('0x2e')][_0x78d7('0x3e')]+'%'};return _0xc0b4b9;})});}_0x1916e3=_[_0x78d7('0x3d')]({},_0x1916e3,_0x34e668['options']);return db[_0x78d7('0x5a')][_0x78d7('0x1c')]({'where':_0x1916e3[_0x78d7('0x3a')]})[_0x78d7('0x25')](function(_0x5309af){_0x58c4c5['count']=_0x5309af;if(_0x34e668['query']['includeAll']){_0x1916e3['include']=[{'all':!![]}];}return db[_0x78d7('0x5a')][_0x78d7('0x49')](_0x1916e3);})[_0x78d7('0x25')](function(_0x476e34){_0x58c4c5[_0x78d7('0x4a')]=_0x476e34;return _0x58c4c5;});}})[_0x78d7('0x25')](respondWithFilteredResult(_0x1429a9,_0x1916e3))['catch'](handleError(_0x1429a9,null));};exports['getHopperHistories']=function(_0x1b6d78,_0xf768f0,_0x109fdf){var _0x5340f1={'raw':!![],'where':{}};var _0x26e291={};var _0x482053={'count':0x0,'rows':[]};return db[_0x78d7('0x2b')][_0x78d7('0x82')]({'where':{'id':_0x1b6d78[_0x78d7('0x4d')]['id']}})[_0x78d7('0x25')](handleEntityNotFound(_0xf768f0,null))[_0x78d7('0x25')](function(_0x2e00d5){if(_0x2e00d5){_0x26e291[_0x78d7('0x2d')]=_[_0x78d7('0x31')](db['CmHopperHistory'][_0x78d7('0x88')]);_0x26e291['query']=_['keys'](_0x1b6d78[_0x78d7('0x2e')]);_0x26e291[_0x78d7('0x32')]=_['intersection'](_0x26e291[_0x78d7('0x2d')],_0x26e291['query']);_0x5340f1[_0x78d7('0x33')]=_['intersection'](_0x26e291[_0x78d7('0x2d')],qs[_0x78d7('0x34')](_0x1b6d78['query']['fields']));_0x5340f1[_0x78d7('0x33')]=_0x5340f1[_0x78d7('0x33')][_0x78d7('0x35')]?_0x5340f1[_0x78d7('0x33')]:_0x26e291[_0x78d7('0x2d')];if(!_0x1b6d78[_0x78d7('0x2e')][_0x78d7('0x36')]('nolimit')){_0x5340f1[_0x78d7('0x1e')]=qs[_0x78d7('0x1e')](_0x1b6d78[_0x78d7('0x2e')][_0x78d7('0x1e')]);_0x5340f1[_0x78d7('0x1d')]=qs[_0x78d7('0x1d')](_0x1b6d78[_0x78d7('0x2e')]['offset']);}_0x5340f1['order']=qs[_0x78d7('0x39')](_0x1b6d78[_0x78d7('0x2e')][_0x78d7('0x39')]);_0x5340f1['where']=qs[_0x78d7('0x32')](_[_0x78d7('0x84')](_0x1b6d78[_0x78d7('0x2e')],_0x26e291[_0x78d7('0x32')]));_0x5340f1[_0x78d7('0x3a')][_0x78d7('0x89')]=_0x2e00d5['id'];if(_0x1b6d78['query']['filter']){_0x5340f1[_0x78d7('0x3a')]=_[_0x78d7('0x3d')](_0x5340f1[_0x78d7('0x3a')],{'$or':_[_0x78d7('0x3f')](_0x5340f1[_0x78d7('0x33')],function(_0x47dbaa){var _0x36e6cb={};_0x36e6cb[_0x47dbaa]={'$like':'%'+_0x1b6d78[_0x78d7('0x2e')]['filter']+'%'};return _0x36e6cb;})});}_0x5340f1=_[_0x78d7('0x3d')]({},_0x5340f1,_0x1b6d78[_0x78d7('0x40')]);return db[_0x78d7('0x66')][_0x78d7('0x1c')]({'where':_0x5340f1[_0x78d7('0x3a')]})['then'](function(_0xc1d079){_0x482053[_0x78d7('0x1c')]=_0xc1d079;if(_0x1b6d78[_0x78d7('0x2e')][_0x78d7('0x46')]){_0x5340f1[_0x78d7('0x41')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x5340f1);})[_0x78d7('0x25')](function(_0x599323){_0x482053[_0x78d7('0x4a')]=_0x599323;return _0x482053;});}})['then'](respondWithFilteredResult(_0xf768f0,_0x5340f1))[_0x78d7('0x4e')](handleError(_0xf768f0,null));};exports[_0x78d7('0x8a')]=function(_0x22c76c,_0x4d1d05,_0x4bae36){var _0x337481={'raw':!![],'where':{}};var _0x2ab569={};var _0x450c74={'count':0x0,'rows':[]};return db[_0x78d7('0x2b')][_0x78d7('0x82')]({'where':{'id':_0x22c76c[_0x78d7('0x4d')]['id']}})[_0x78d7('0x25')](handleEntityNotFound(_0x4d1d05,null))[_0x78d7('0x25')](function(_0x201508){if(_0x201508){_0x2ab569['model']=_[_0x78d7('0x31')](db[_0x78d7('0x65')][_0x78d7('0x88')]);_0x2ab569[_0x78d7('0x2e')]=_[_0x78d7('0x31')](_0x22c76c[_0x78d7('0x2e')]);_0x2ab569['filters']=_[_0x78d7('0x83')](_0x2ab569['model'],_0x2ab569[_0x78d7('0x2e')]);_0x337481[_0x78d7('0x33')]=_['intersection'](_0x2ab569[_0x78d7('0x2d')],qs[_0x78d7('0x34')](_0x22c76c[_0x78d7('0x2e')]['fields']));_0x337481[_0x78d7('0x33')]=_0x337481[_0x78d7('0x33')][_0x78d7('0x35')]?_0x337481['attributes']:_0x2ab569[_0x78d7('0x2d')];if(!_0x22c76c['query'][_0x78d7('0x36')](_0x78d7('0x37'))){_0x337481['limit']=qs[_0x78d7('0x1e')](_0x22c76c[_0x78d7('0x2e')][_0x78d7('0x1e')]);_0x337481['offset']=qs[_0x78d7('0x1d')](_0x22c76c['query'][_0x78d7('0x1d')]);}_0x337481[_0x78d7('0x38')]=qs['sort'](_0x22c76c[_0x78d7('0x2e')][_0x78d7('0x39')]);_0x337481[_0x78d7('0x3a')]=qs[_0x78d7('0x32')](_[_0x78d7('0x84')](_0x22c76c[_0x78d7('0x2e')],_0x2ab569[_0x78d7('0x32')]));_0x337481['where']['ContactId']=_0x201508['id'];if(_0x22c76c[_0x78d7('0x2e')][_0x78d7('0x3e')]){_0x337481[_0x78d7('0x3a')]=_[_0x78d7('0x3d')](_0x337481[_0x78d7('0x3a')],{'$or':_[_0x78d7('0x3f')](_0x337481[_0x78d7('0x33')],function(_0x1b96d7){var _0x4682bf={};_0x4682bf[_0x1b96d7]={'$like':'%'+_0x22c76c[_0x78d7('0x2e')][_0x78d7('0x3e')]+'%'};return _0x4682bf;})});}_0x337481=_['merge']({},_0x337481,_0x22c76c[_0x78d7('0x40')]);return db[_0x78d7('0x65')][_0x78d7('0x1c')]({'where':_0x337481[_0x78d7('0x3a')]})[_0x78d7('0x25')](function(_0x5eb286){_0x450c74[_0x78d7('0x1c')]=_0x5eb286;if(_0x22c76c['query'][_0x78d7('0x46')]){_0x337481[_0x78d7('0x41')]=[{'all':!![]}];}return db[_0x78d7('0x65')][_0x78d7('0x49')](_0x337481);})['then'](function(_0x19f5c3){_0x450c74[_0x78d7('0x4a')]=_0x19f5c3;return _0x450c74;});}})[_0x78d7('0x25')](respondWithFilteredResult(_0x4d1d05,_0x337481))['catch'](handleError(_0x4d1d05,null));};exports[_0x78d7('0x8b')]=function(_0x1f6f0b,_0x4fda95,_0x16c36c){var _0x19775e={'raw':!![],'where':{}};var _0x29994e={};var _0x27c83b={'count':0x0,'rows':[]};return db['CmContact'][_0x78d7('0x82')]({'where':{'id':_0x1f6f0b[_0x78d7('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4fda95,null))['then'](function(_0x5c29ce){if(_0x5c29ce){_0x29994e[_0x78d7('0x2d')]=_[_0x78d7('0x31')](db['JscriptySessionReport'][_0x78d7('0x88')]);_0x29994e[_0x78d7('0x2e')]=_[_0x78d7('0x31')](_0x1f6f0b['query']);_0x29994e[_0x78d7('0x32')]=_[_0x78d7('0x83')](_0x29994e[_0x78d7('0x2d')],_0x29994e[_0x78d7('0x2e')]);_0x19775e['attributes']=_[_0x78d7('0x83')](_0x29994e['model'],qs[_0x78d7('0x34')](_0x1f6f0b[_0x78d7('0x2e')][_0x78d7('0x34')]));_0x19775e[_0x78d7('0x33')]=_0x19775e[_0x78d7('0x33')][_0x78d7('0x35')]?_0x19775e['attributes']:_0x29994e[_0x78d7('0x2d')];if(!_0x1f6f0b[_0x78d7('0x2e')][_0x78d7('0x36')]('nolimit')){_0x19775e[_0x78d7('0x1e')]=qs[_0x78d7('0x1e')](_0x1f6f0b[_0x78d7('0x2e')]['limit']);_0x19775e[_0x78d7('0x1d')]=qs[_0x78d7('0x1d')](_0x1f6f0b[_0x78d7('0x2e')]['offset']);}_0x19775e[_0x78d7('0x38')]=qs[_0x78d7('0x39')](_0x1f6f0b['query']['sort']);_0x19775e['where']=qs[_0x78d7('0x32')](_[_0x78d7('0x84')](_0x1f6f0b['query'],_0x29994e[_0x78d7('0x32')]));_0x19775e[_0x78d7('0x3a')][_0x78d7('0x89')]=_0x5c29ce['id'];if(_0x1f6f0b['query']['filter']){_0x19775e[_0x78d7('0x3a')]=_[_0x78d7('0x3d')](_0x19775e[_0x78d7('0x3a')],{'$or':_[_0x78d7('0x3f')](_0x19775e['attributes'],function(_0x23d92e){var _0x39d555={};_0x39d555[_0x23d92e]={'$like':'%'+_0x1f6f0b['query'][_0x78d7('0x3e')]+'%'};return _0x39d555;})});}_0x19775e=_[_0x78d7('0x3d')]({},_0x19775e,_0x1f6f0b[_0x78d7('0x40')]);return db['JscriptySessionReport']['count']({'where':_0x19775e[_0x78d7('0x3a')]})[_0x78d7('0x25')](function(_0x3b78b3){_0x27c83b[_0x78d7('0x1c')]=_0x3b78b3;if(_0x1f6f0b[_0x78d7('0x2e')]['includeAll']){_0x19775e[_0x78d7('0x41')]=[{'all':!![]}];}return db[_0x78d7('0x8c')][_0x78d7('0x49')](_0x19775e);})[_0x78d7('0x25')](function(_0x2ba380){_0x27c83b[_0x78d7('0x4a')]=_0x2ba380;return _0x27c83b;});}})[_0x78d7('0x25')](respondWithFilteredResult(_0x4fda95,_0x19775e))['catch'](handleError(_0x4fda95,null));};exports[_0x78d7('0x8d')]=function(_0x1a9d81,_0x8466e8,_0x34633d){try{if(!_0x1a9d81[_0x78d7('0x53')]['ListId']){throw new Error('No\x20ListId\x20specified');}if(!_0x1a9d81[_0x78d7('0x53')][_0x78d7('0x8e')]){throw new Error(_0x78d7('0x8f'));}if(!_0x1a9d81[_0x78d7('0x53')][_0x78d7('0x90')]){throw new Error(_0x78d7('0x91'));}if(!_0x1a9d81[_0x78d7('0x53')][_0x78d7('0x92')]){throw new Error(_0x78d7('0x93'));}var _0x950e50=_0x1a9d81[_0x78d7('0x53')][_0x78d7('0x8e')]['split'](',');var _0x214980=_0x1a9d81[_0x78d7('0x53')]['binding_values'][_0x78d7('0x94')](',');if(!_0x950e50[_0x78d7('0x35')]||!_0x214980[_0x78d7('0x35')]||_0x950e50['length']!==_0x214980[_0x78d7('0x35')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x1a9d81['body'][_0x78d7('0x34')]=_['zipObject'](_0x950e50,_0x214980);if(!_0x1a9d81[_0x78d7('0x53')][_0x78d7('0x34')][_0x78d7('0x81')]){throw new Error(_0x78d7('0x95'));}if(!_0x1a9d81[_0x78d7('0x53')]['fields']['firstName']){throw new Error(_0x78d7('0x96'));}var _0x223463=path[_0x78d7('0x59')](config[_0x78d7('0x97')],_0x78d7('0x98'),_0x1a9d81[_0x78d7('0x99')][_0x78d7('0x9a')]);fs[_0x78d7('0x9b')](_0x223463,parseInt(_0x78d7('0x9c'),0x8));var _0x1e8530=require('child_process')[_0x78d7('0x9d')](path[_0x78d7('0x59')](__dirname,_0x78d7('0x9e')),[_0x223463,_0x1a9d81['body'][_0x78d7('0x8e')],_0x1a9d81['body']['binding_values'],_0x1a9d81[_0x78d7('0x53')][_0x78d7('0x71')],_0x1a9d81['body'][_0x78d7('0x9f')],_0x1a9d81[_0x78d7('0x53')][_0x78d7('0x6f')],_0x1a9d81['body'][_0x78d7('0x92')]]);return _0x8466e8[_0x78d7('0x1a')](0xc8)[_0x78d7('0x1b')]({'message':_0x78d7('0xa0'),'pid':_0x1e8530['pid']});}catch(_0x53ff90){return _0x8466e8[_0x78d7('0x1a')](0x1f4)[_0x78d7('0x29')](_0x53ff90);}};exports['upload']=function(_0x34d087,_0x1e6a95,_0xab3879){var _0x3014f6=fs['createReadStream'](_0x34d087[_0x78d7('0x99')]['path']);Papa['parse'](_0x3014f6,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x3b068f){return _0x1e6a95[_0x78d7('0x1a')](0xc8)[_0x78d7('0x1b')]({'file':_0x34d087['file'],'fields':_0x3b068f[_0x78d7('0xa1')]['fields']});}});};exports['import']=function(_0x2dcb08,_0x4126a8,_0x54558e){return db[_0x78d7('0xa2')][_0x78d7('0x49')]({'raw':!![],'attributes':['id'],'where':{'role':_0x78d7('0xa3')}})['then'](function(_0x2d751e){var _0x2f5d32=![];if(!_0x2dcb08[_0x78d7('0x53')]['ListId']){throw new Error(_0x78d7('0xa4'));}if(!_0x2dcb08[_0x78d7('0x53')][_0x78d7('0xa5')][_0x78d7('0x81')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x2dcb08[_0x78d7('0x53')][_0x78d7('0xa5')][_0x78d7('0xa6')]){throw new Error(_0x78d7('0x96'));}if(!_0x2dcb08['body'][_0x78d7('0x92')]){throw new Error(_0x78d7('0x93'));}var _0x44a4c7=require(_0x78d7('0xa7'))[_0x78d7('0x9d')](path[_0x78d7('0x59')](__dirname,_0x78d7('0xa8')),[_0x2dcb08[_0x78d7('0x4d')]['id'],JSON[_0x78d7('0xa9')](_0x2dcb08[_0x78d7('0x53')]),JSON[_0x78d7('0xa9')](_0x2d751e)]);_0x44a4c7['on'](_0x78d7('0xaa'),function(_0x42f902){_0x2f5d32=!![];return _0x4126a8[_0x78d7('0x1a')](0xc8)[_0x78d7('0x1b')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x44a4c7['pid']});});_0x44a4c7['on'](_0x78d7('0xab'),function(_0x5dd470){if(_0x5dd470&&!_0x2f5d32){return _0x4126a8[_0x78d7('0x1a')](0x1f4)[_0x78d7('0x1b')]({'message':'error\x20child\x20process','pid':_0x44a4c7['pid']});}});})[_0x78d7('0x4e')](handleError(_0x4126a8,null));};
\ No newline at end of file
index 6496af0..94f27e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x389a=['save','remove','emit','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x389a,0x135));var _0xa389=function(_0x47f4f5,_0x2f58d4){_0x47f4f5=_0x47f4f5-0x0;var _0x3a421a=_0x389a[_0x47f4f5];return _0x3a421a;};'use strict';var EventEmitter=require(_0xa389('0x0'));var CmContact=require(_0xa389('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xa389('0x2')](0x0);var events={'afterCreate':_0xa389('0x3'),'afterUpdate':'update','afterDestroy':_0xa389('0x4')};function emitEvent(_0x36929b){return function(_0x1e1a77,_0x187564,_0x2011c3){CmContactEvents[_0xa389('0x5')](_0x36929b+':'+_0x1e1a77['id'],_0x1e1a77);CmContactEvents[_0xa389('0x5')](_0x36929b,_0x1e1a77);_0x2011c3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0xa389('0x6')](e,emitEvent(event));}}module[_0xa389('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0x9f36=['setMaxListeners','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x3dea7d,_0x2cd4ea){var _0x53919a=function(_0x1554e2){while(--_0x1554e2){_0x3dea7d['push'](_0x3dea7d['shift']());}};_0x53919a(++_0x2cd4ea);}(_0x9f36,0x116));var _0x69f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9f36[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x69f3('0x0'));var CmContact=require(_0x69f3('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0x69f3('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x69f3('0x3'),'afterDestroy':_0x69f3('0x4')};function emitEvent(_0x40d359){return function(_0x30ecb9,_0x429065,_0xd890f1){CmContactEvents[_0x69f3('0x5')](_0x40d359+':'+_0x30ecb9['id'],_0x30ecb9);CmContactEvents[_0x69f3('0x5')](_0x40d359,_0x30ecb9);_0xd890f1(null);};}for(var e in events){if(events[_0x69f3('0x6')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x69f3('0x7')]=CmContactEvents;
\ No newline at end of file
index 2a7ff12..6d9d27b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89fb=['\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','catch','afterCreate','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','CmList','Lists','length','dialCheckDuplicateType','always','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','List\x20not\x20found','models','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Error]','util','../../config/logger','api','moment','bluebird','./cmContact.attributes','exports','define','cm_contacts','phone','get','error','inspect','findOne','then','isNil','cmContact,\x20afterCreate\x20'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x89fb,0x14b));var _0xb89f=function(_0x380afe,_0x2dd848){_0x380afe=_0x380afe-0x0;var _0x13f18a=_0x89fb[_0x380afe];return _0x13f18a;};'use strict';var _=require('lodash');var util=require(_0xb89f('0x0'));var logger=require(_0xb89f('0x1'))(_0xb89f('0x2'));var moment=require(_0xb89f('0x3'));var BPromise=require(_0xb89f('0x4'));var rp=require('request-promise');var attributes=require(_0xb89f('0x5'));module[_0xb89f('0x6')]=function(_0x3d0629,_0x34c4ce){return _0x3d0629[_0xb89f('0x7')]('CmContact',attributes,{'tableName':_0xb89f('0x8'),'paranoid':!![],'indexes':[{'name':'phone','fields':[_0xb89f('0x9')]}],'timestamps':!![],'hooks':{'afterCreate':function(_0x537685,_0x3c0105,_0x95385){var _0x300c7c=_0x3d0629['models'];var _0x18f75f=_0x537685[_0xb89f('0xa')]({'plain':!![]});function _0x2f0c38(){return function(_0x7361c0){logger[_0xb89f('0xb')]('cmContact','afterCreate',util[_0xb89f('0xc')](_0x7361c0,{'showHidden':![],'depth':null}));};}var _0x36b3f8=function(_0x748da3){return new BPromise(function(_0x1d48a0,_0xa948e3){_0x300c7c['CmHopper'][_0xb89f('0xd')]({'where':{'phone':_0x18f75f[_0xb89f('0x9')],'VoiceQueueId':_0x748da3['id']}})[_0xb89f('0xe')](function(_0x2c236b){if(!_[_0xb89f('0xf')](_0x2c236b)){throw new Error(_0xb89f('0x10')+_0x18f75f['phone']+_0xb89f('0x11')+_0x748da3['id']);}return _0x300c7c[_0xb89f('0x12')][_0xb89f('0x13')]({'phone':_0x18f75f[_0xb89f('0x9')],'ContactId':_0x18f75f['id'],'ListId':_0x18f75f[_0xb89f('0x14')],'priority':_0x18f75f[_0xb89f('0x15')]?_0x18f75f[_0xb89f('0x15')]:0x2,'scheduledat':_0x18f75f['scheduledat']?_0x18f75f[_0xb89f('0x16')]:moment()[_0xb89f('0x17')](_0xb89f('0x18')),'callback':_0x18f75f[_0xb89f('0x19')]?!![]:![],'callbackuniqueid':_0x18f75f['callbackUniqueid']?_0x18f75f['callbackUniqueid']:undefined,'callbackat':_0x18f75f[_0xb89f('0x19')]?moment()[_0xb89f('0x17')](_0xb89f('0x18')):undefined,'VoiceQueueId':_0x748da3['id']});})['catch'](function(_0x488cb3){_0xa948e3(_0x488cb3);});});};var _0x20e126=function(_0x1216c8){return new BPromise(function(_0x29a08c,_0x337251){_0x300c7c[_0xb89f('0x12')][_0xb89f('0xd')]({'where':{'phone':_0x18f75f[_0xb89f('0x9')],'VoiceQueueId':_0x1216c8['id']}})['then'](function(_0x59e898){if(!_['isNil'](_0x59e898)){throw new Error('cmContact,\x20afterCreate\x20'+_0x18f75f['phone']+_0xb89f('0x1a')+_0x1216c8['id']);}return _0x300c7c['CmHopperFinal'][_0xb89f('0xd')]({'where':{'calleridnum':_0x18f75f[_0xb89f('0x9')],'VoiceQueueId':_0x1216c8['id']}});})[_0xb89f('0xe')](function(_0x1e5490){if(!_[_0xb89f('0xf')](_0x1e5490)){throw new Error(_0xb89f('0x1b')+_0x18f75f['phone']+_0xb89f('0x1c')+_0x1216c8['id']);}return _0x300c7c[_0xb89f('0x12')][_0xb89f('0x13')]({'phone':_0x18f75f[_0xb89f('0x9')],'ContactId':_0x18f75f['id'],'ListId':_0x18f75f[_0xb89f('0x14')],'priority':_0x18f75f[_0xb89f('0x15')]?_0x18f75f[_0xb89f('0x15')]:0x2,'scheduledat':_0x18f75f[_0xb89f('0x16')]?_0x18f75f['scheduledat']:moment()[_0xb89f('0x17')](_0xb89f('0x18')),'callback':_0x18f75f[_0xb89f('0x19')]?!![]:![],'callbackuniqueid':_0x18f75f[_0xb89f('0x19')]?_0x18f75f[_0xb89f('0x19')]:undefined,'callbackat':_0x18f75f[_0xb89f('0x19')]?moment()['format'](_0xb89f('0x18')):undefined,'VoiceQueueId':_0x1216c8['id']});})[_0xb89f('0x1d')](function(_0x289d88){_0x337251(_0x289d88);});});};function _0x2ab40c(){return function(_0x4eb8da){logger['error']('cmContact',_0xb89f('0x1e'),util[_0xb89f('0xc')](_0x4eb8da,{'showHidden':![],'depth':null}));};}var _0x3ce71d=function(_0x3dd8aa){return new BPromise(function(_0x283091,_0x69713a){_0x300c7c[_0xb89f('0x12')][_0xb89f('0xd')]({'where':{'phone':_0x18f75f[_0xb89f('0x9')],'CampaignId':_0x3dd8aa['id']}})['then'](function(_0x17076d){if(!_[_0xb89f('0xf')](_0x17076d)){throw new Error('cmContact,\x20afterCreate\x20'+_0x18f75f[_0xb89f('0x9')]+_0xb89f('0x1f')+_0x3dd8aa['id']);}return _0x300c7c[_0xb89f('0x12')][_0xb89f('0x13')]({'phone':_0x18f75f['phone'],'ContactId':_0x18f75f['id'],'ListId':_0x18f75f[_0xb89f('0x14')],'priority':_0x18f75f[_0xb89f('0x15')]?_0x18f75f[_0xb89f('0x15')]:0x2,'scheduledat':_0x18f75f[_0xb89f('0x16')]?_0x18f75f['scheduledat']:moment()[_0xb89f('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x18f75f[_0xb89f('0x19')]?!![]:![],'callbackuniqueid':_0x18f75f[_0xb89f('0x19')]?_0x18f75f[_0xb89f('0x19')]:undefined,'callbackat':_0x18f75f['callbackUniqueid']?moment()[_0xb89f('0x17')](_0xb89f('0x18')):undefined,'CampaignId':_0x3dd8aa['id']});})[_0xb89f('0x1d')](function(_0x497a4a){_0x69713a(_0x497a4a);});});};var _0x2cb72e=function(_0x18578f){return new BPromise(function(_0x19ad82,_0x3fa6e6){_0x300c7c[_0xb89f('0x12')][_0xb89f('0xd')]({'where':{'phone':_0x18f75f[_0xb89f('0x9')],'CampaignId':_0x18578f['id']}})['then'](function(_0xb3c552){if(!_[_0xb89f('0xf')](_0xb3c552)){throw new Error(_0xb89f('0x10')+_0x18f75f[_0xb89f('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x18578f['id']);}return _0x300c7c[_0xb89f('0x20')]['findOne']({'where':{'calleridnum':_0x18f75f[_0xb89f('0x9')],'CampaignId':_0x18578f['id']}});})[_0xb89f('0xe')](function(_0x5dc041){if(!_[_0xb89f('0xf')](_0x5dc041)){throw new Error(_0xb89f('0x1b')+_0x18f75f[_0xb89f('0x9')]+_0xb89f('0x21')+_0x18578f['id']);}return _0x300c7c[_0xb89f('0x12')]['create']({'phone':_0x18f75f['phone'],'ContactId':_0x18f75f['id'],'ListId':_0x18f75f[_0xb89f('0x14')],'priority':_0x18f75f[_0xb89f('0x15')]?_0x18f75f[_0xb89f('0x15')]:0x2,'scheduledat':_0x18f75f[_0xb89f('0x16')]?_0x18f75f[_0xb89f('0x16')]:moment()[_0xb89f('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x18f75f[_0xb89f('0x19')]?!![]:![],'callbackuniqueid':_0x18f75f[_0xb89f('0x19')]?_0x18f75f[_0xb89f('0x19')]:undefined,'callbackat':_0x18f75f[_0xb89f('0x19')]?moment()['format'](_0xb89f('0x18')):undefined,'CampaignId':_0x18578f['id']});})[_0xb89f('0x1d')](function(_0x43a951){_0x3fa6e6(_0x43a951);});});};if(_0x18f75f['ListId']){_0x300c7c[_0xb89f('0x22')][_0xb89f('0x23')]({'where':{'type':_0xb89f('0x24')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x300c7c[_0xb89f('0x25')],'as':_0xb89f('0x26'),'where':{'id':_0x18f75f['ListId']}}]})['then'](function(_0x57e0ab){if(_0x57e0ab){var _0x5eb555=[];for(var _0x8cf572=0x0,_0x546e7d;_0x8cf572<_0x57e0ab[_0xb89f('0x27')];_0x8cf572+=0x1){_0x546e7d=_0x57e0ab[_0x8cf572][_0xb89f('0xa')]({'plain':!![]});switch(_0x546e7d[_0xb89f('0x28')]){case _0xb89f('0x29'):_0x20e126(_0x546e7d)['catch'](_0x2f0c38());break;case _0xb89f('0x2a'):_0x36b3f8(_0x546e7d)[_0xb89f('0x1d')](_0x2f0c38());break;default:_0x300c7c[_0xb89f('0x12')][_0xb89f('0x13')]({'phone':_0x18f75f[_0xb89f('0x9')],'ContactId':_0x18f75f['id'],'ListId':_0x18f75f[_0xb89f('0x14')],'scheduledat':_0x18f75f[_0xb89f('0x16')]?_0x18f75f[_0xb89f('0x16')]:moment()[_0xb89f('0x17')](_0xb89f('0x18')),'priority':_0x18f75f[_0xb89f('0x15')]?_0x18f75f[_0xb89f('0x15')]:0x2,'callback':_0x18f75f[_0xb89f('0x19')]?!![]:![],'callbackuniqueid':_0x18f75f['callbackUniqueid']?_0x18f75f[_0xb89f('0x19')]:undefined,'callbackat':_0x18f75f[_0xb89f('0x19')]?moment()[_0xb89f('0x17')](_0xb89f('0x18')):undefined,'VoiceQueueId':_0x546e7d['id']})[_0xb89f('0x1d')](_0x2f0c38());}}}})[_0xb89f('0xe')](function(){return _0x300c7c[_0xb89f('0x22')]['findAll']({'where':{'type':_0xb89f('0x24')},'attributes':['id'],'include':[{'model':_0x300c7c['CmList'],'as':_0xb89f('0x2b'),'where':{'id':_0x18f75f['ListId']}}]})[_0xb89f('0xe')](function(_0x3715ed){if(_0x3715ed){var _0x2477fc=[];for(var _0x59d194=0x0,_0x7322f7;_0x59d194<_0x3715ed[_0xb89f('0x27')];_0x59d194+=0x1){_0x7322f7=_0x3715ed[_0x59d194][_0xb89f('0xa')]({'plain':!![]});_0x300c7c[_0xb89f('0x2c')][_0xb89f('0x13')]({'phone':_0x18f75f['phone'],'ContactId':_0x18f75f['id'],'ListId':_0x18f75f[_0xb89f('0x14')],'VoiceQueueId':_0x7322f7['id']})[_0xb89f('0x1d')](function(_0x5cd194){logger[_0xb89f('0xb')](_0xb89f('0x2d'),_0xb89f('0x1e'),_0x5cd194[_0xb89f('0x2e')]);});}}});})[_0xb89f('0xe')](function(){return _0x300c7c[_0xb89f('0x2f')][_0xb89f('0x23')]({'attributes':['id',_0xb89f('0x28')],'include':[{'model':_0x300c7c[_0xb89f('0x25')],'as':_0xb89f('0x26'),'where':{'id':_0x18f75f['ListId']}}]})['then'](function(_0x32d60a){if(_0x32d60a){var _0x22c0ff=[];for(var _0x1da666=0x0,_0x849791;_0x1da666<_0x32d60a['length'];_0x1da666+=0x1){_0x849791=_0x32d60a[_0x1da666]['get']({'plain':!![]});switch(_0x849791[_0xb89f('0x28')]){case'always':_0x2cb72e(_0x849791)['catch'](_0x2ab40c());break;case _0xb89f('0x2a'):_0x3ce71d(_0x849791)['catch'](_0x2ab40c());break;default:_0x300c7c[_0xb89f('0x12')][_0xb89f('0x13')]({'phone':_0x18f75f[_0xb89f('0x9')],'ContactId':_0x18f75f['id'],'ListId':_0x18f75f[_0xb89f('0x14')],'scheduledat':_0x18f75f[_0xb89f('0x16')]?_0x18f75f['scheduledat']:moment()[_0xb89f('0x17')](_0xb89f('0x18')),'priority':_0x18f75f[_0xb89f('0x15')]?_0x18f75f[_0xb89f('0x15')]:0x2,'callback':_0x18f75f[_0xb89f('0x19')]?!![]:![],'callbackuniqueid':_0x18f75f[_0xb89f('0x19')]?_0x18f75f['callbackUniqueid']:undefined,'callbackat':_0x18f75f[_0xb89f('0x19')]?moment()[_0xb89f('0x17')](_0xb89f('0x18')):undefined,'CampaignId':_0x849791['id']})[_0xb89f('0x1d')](_0x2ab40c());}}}});})[_0xb89f('0xe')](function(){return _0x300c7c[_0xb89f('0x2f')][_0xb89f('0x23')]({'attributes':['id'],'include':[{'model':_0x300c7c['CmList'],'as':_0xb89f('0x2b'),'where':{'id':_0x18f75f[_0xb89f('0x14')]}}]})['then'](function(_0x33cbed){if(_0x33cbed){var _0x1b730d=[];for(var _0x55712a=0x0,_0x76efc7;_0x55712a<_0x33cbed[_0xb89f('0x27')];_0x55712a+=0x1){_0x76efc7=_0x33cbed[_0x55712a][_0xb89f('0xa')]({'plain':!![]});_0x300c7c['CmHopperBlack']['create']({'phone':_0x18f75f[_0xb89f('0x9')],'ContactId':_0x18f75f['id'],'ListId':_0x18f75f[_0xb89f('0x14')],'CampaignId':_0x76efc7['id']})['catch'](function(_0xcf8ab1){logger['error'](_0xb89f('0x2d'),_0xb89f('0x1e'),_0xcf8ab1[_0xb89f('0x2e')]);});}}});})[_0xb89f('0xe')](function(){_0x95385();})[_0xb89f('0x1d')](function(_0x448aea){logger['error'](_0xb89f('0x2d'),_0xb89f('0x1e'),_0x448aea['message']);_0x95385(_0x448aea);});}else{_0x95385(new Error(_0xb89f('0x30')));}},'afterDestroy':function(_0x201ccf,_0x47d809,_0x4918c0){var _0x11b8ff=_0x3d0629[_0xb89f('0x31')];var _0xda6060=_0x201ccf['get']({'plain':!![]});return _0x11b8ff[_0xb89f('0x12')][_0xb89f('0x23')]({'raw':!![],'where':{'ListId':_0xda6060[_0xb89f('0x14')],'ContactId':_0xda6060['id']}})[_0xb89f('0xe')](function(_0x462da9){if(!_['isEmpty'](_0x462da9)){var _0x5d8d92=[];for(var _0xd8727=0x0;_0xd8727<_0x462da9['length'];_0xd8727+=0x1){var _0x19f669=_0x11b8ff['CmHopper'][_0xb89f('0x32')]({'where':{'ListId':_0x462da9[_0xd8727][_0xb89f('0x14')],'ContactId':_0x462da9[_0xd8727][_0xb89f('0x33')],'VoiceQueueId':_0x462da9[_0xd8727][_0xb89f('0x34')],'CampaignId':_0x462da9[_0xd8727][_0xb89f('0x35')]}});_0x5d8d92[_0xb89f('0x36')](_0x19f669);}return BPromise[_0xb89f('0x37')](_0x5d8d92);}})['then'](function(_0x1e18fd){logger[_0xb89f('0x38')]('[CmContact][afterDestroy][Succesfull]',util[_0xb89f('0xc')](_0x1e18fd,{'showHidden':![],'depth':null}));_0x4918c0();})[_0xb89f('0x1d')](function(_0x51a858){logger[_0xb89f('0xb')](_0xb89f('0x39'),util[_0xb89f('0xc')](_0x51a858,{'showHidden':![],'depth':null}));_0x4918c0(_0x51a858);});}}});};
\ No newline at end of file
+var _0x11c8=['\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','get','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','always','List\x20not\x20found','models','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','util','../../config/logger','moment','bluebird','request-promise','./cmContact.attributes','exports','define','CmContact','phone','error','afterCreate','inspect','findOne','then','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','isNil','cmContact,\x20afterCreate\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','priority'];(function(_0x513e90,_0x410797){var _0x2ccd64=function(_0x31cf0a){while(--_0x31cf0a){_0x513e90['push'](_0x513e90['shift']());}};_0x2ccd64(++_0x410797);}(_0x11c8,0x19a));var _0x811c=function(_0x54e15b,_0x234bf3){_0x54e15b=_0x54e15b-0x0;var _0xb9713f=_0x11c8[_0x54e15b];return _0xb9713f;};'use strict';var _=require('lodash');var util=require(_0x811c('0x0'));var logger=require(_0x811c('0x1'))('api');var moment=require(_0x811c('0x2'));var BPromise=require(_0x811c('0x3'));var rp=require(_0x811c('0x4'));var attributes=require(_0x811c('0x5'));module[_0x811c('0x6')]=function(_0x432f5b,_0x49a07c){return _0x432f5b[_0x811c('0x7')](_0x811c('0x8'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x811c('0x9'),'fields':[_0x811c('0x9')]}],'timestamps':!![],'hooks':{'afterCreate':function(_0x13a95a,_0x3e81ac,_0x57a92d){var _0x47b070=_0x432f5b['models'];var _0x5be7fc=_0x13a95a['get']({'plain':!![]});function _0x4ce7c4(){return function(_0x270b6e){logger[_0x811c('0xa')]('cmContact',_0x811c('0xb'),util[_0x811c('0xc')](_0x270b6e,{'showHidden':![],'depth':null}));};}var _0x226dc6=function(_0x33519d){return new BPromise(function(_0x3fdd5c,_0x5959e8){_0x47b070['CmHopper'][_0x811c('0xd')]({'where':{'phone':_0x5be7fc['phone'],'VoiceQueueId':_0x33519d['id']}})[_0x811c('0xe')](function(_0x5f20f7){if(!_['isNil'](_0x5f20f7)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5be7fc[_0x811c('0x9')]+_0x811c('0xf')+_0x33519d['id']);}return _0x47b070[_0x811c('0x10')][_0x811c('0x11')]({'phone':_0x5be7fc[_0x811c('0x9')],'ContactId':_0x5be7fc['id'],'ListId':_0x5be7fc[_0x811c('0x12')],'priority':_0x5be7fc['priority']?_0x5be7fc['priority']:0x2,'scheduledat':_0x5be7fc[_0x811c('0x13')]?_0x5be7fc[_0x811c('0x13')]:moment()[_0x811c('0x14')](_0x811c('0x15')),'callback':_0x5be7fc[_0x811c('0x16')]?!![]:![],'callbackuniqueid':_0x5be7fc[_0x811c('0x16')]?_0x5be7fc[_0x811c('0x16')]:undefined,'callbackat':_0x5be7fc[_0x811c('0x16')]?moment()[_0x811c('0x14')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x33519d['id']});})[_0x811c('0x17')](function(_0x5686f1){_0x5959e8(_0x5686f1);});});};var _0x291660=function(_0x63a81f){return new BPromise(function(_0x53c6d4,_0x2921c){_0x47b070[_0x811c('0x10')][_0x811c('0xd')]({'where':{'phone':_0x5be7fc['phone'],'VoiceQueueId':_0x63a81f['id']}})['then'](function(_0x587c52){if(!_[_0x811c('0x18')](_0x587c52)){throw new Error(_0x811c('0x19')+_0x5be7fc[_0x811c('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x63a81f['id']);}return _0x47b070[_0x811c('0x1a')][_0x811c('0xd')]({'where':{'calleridnum':_0x5be7fc[_0x811c('0x9')],'VoiceQueueId':_0x63a81f['id']}});})[_0x811c('0xe')](function(_0x4e1088){if(!_[_0x811c('0x18')](_0x4e1088)){throw new Error(_0x811c('0x1b')+_0x5be7fc[_0x811c('0x9')]+_0x811c('0x1c')+_0x63a81f['id']);}return _0x47b070[_0x811c('0x10')][_0x811c('0x11')]({'phone':_0x5be7fc['phone'],'ContactId':_0x5be7fc['id'],'ListId':_0x5be7fc[_0x811c('0x12')],'priority':_0x5be7fc['priority']?_0x5be7fc[_0x811c('0x1d')]:0x2,'scheduledat':_0x5be7fc[_0x811c('0x13')]?_0x5be7fc[_0x811c('0x13')]:moment()[_0x811c('0x14')](_0x811c('0x15')),'callback':_0x5be7fc[_0x811c('0x16')]?!![]:![],'callbackuniqueid':_0x5be7fc['callbackUniqueid']?_0x5be7fc[_0x811c('0x16')]:undefined,'callbackat':_0x5be7fc[_0x811c('0x16')]?moment()[_0x811c('0x14')](_0x811c('0x15')):undefined,'VoiceQueueId':_0x63a81f['id']});})[_0x811c('0x17')](function(_0x18f87a){_0x2921c(_0x18f87a);});});};function _0x4a5baf(){return function(_0x2fde17){logger[_0x811c('0xa')]('cmContact','afterCreate',util[_0x811c('0xc')](_0x2fde17,{'showHidden':![],'depth':null}));};}var _0x38d639=function(_0x1d98d2){return new BPromise(function(_0x5920a5,_0x21d6d5){_0x47b070[_0x811c('0x10')]['findOne']({'where':{'phone':_0x5be7fc['phone'],'CampaignId':_0x1d98d2['id']}})['then'](function(_0x1fd6e8){if(!_[_0x811c('0x18')](_0x1fd6e8)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5be7fc[_0x811c('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1d98d2['id']);}return _0x47b070['CmHopper'][_0x811c('0x11')]({'phone':_0x5be7fc[_0x811c('0x9')],'ContactId':_0x5be7fc['id'],'ListId':_0x5be7fc[_0x811c('0x12')],'priority':_0x5be7fc[_0x811c('0x1d')]?_0x5be7fc[_0x811c('0x1d')]:0x2,'scheduledat':_0x5be7fc[_0x811c('0x13')]?_0x5be7fc[_0x811c('0x13')]:moment()[_0x811c('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x5be7fc['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5be7fc[_0x811c('0x16')]?_0x5be7fc[_0x811c('0x16')]:undefined,'callbackat':_0x5be7fc['callbackUniqueid']?moment()[_0x811c('0x14')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x1d98d2['id']});})[_0x811c('0x17')](function(_0x566ad1){_0x21d6d5(_0x566ad1);});});};var _0x47b7c3=function(_0x3c16fd){return new BPromise(function(_0x4b61d8,_0xf99c00){_0x47b070[_0x811c('0x10')][_0x811c('0xd')]({'where':{'phone':_0x5be7fc['phone'],'CampaignId':_0x3c16fd['id']}})[_0x811c('0xe')](function(_0x5720c1){if(!_['isNil'](_0x5720c1)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5be7fc[_0x811c('0x9')]+_0x811c('0x1e')+_0x3c16fd['id']);}return _0x47b070['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x5be7fc['phone'],'CampaignId':_0x3c16fd['id']}});})[_0x811c('0xe')](function(_0x1ae1e7){if(!_[_0x811c('0x18')](_0x1ae1e7)){throw new Error(_0x811c('0x1b')+_0x5be7fc[_0x811c('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x3c16fd['id']);}return _0x47b070[_0x811c('0x10')]['create']({'phone':_0x5be7fc[_0x811c('0x9')],'ContactId':_0x5be7fc['id'],'ListId':_0x5be7fc['ListId'],'priority':_0x5be7fc['priority']?_0x5be7fc[_0x811c('0x1d')]:0x2,'scheduledat':_0x5be7fc[_0x811c('0x13')]?_0x5be7fc['scheduledat']:moment()[_0x811c('0x14')](_0x811c('0x15')),'callback':_0x5be7fc[_0x811c('0x16')]?!![]:![],'callbackuniqueid':_0x5be7fc[_0x811c('0x16')]?_0x5be7fc['callbackUniqueid']:undefined,'callbackat':_0x5be7fc[_0x811c('0x16')]?moment()[_0x811c('0x14')](_0x811c('0x15')):undefined,'CampaignId':_0x3c16fd['id']});})['catch'](function(_0x55aa45){_0xf99c00(_0x55aa45);});});};if(_0x5be7fc[_0x811c('0x12')]){_0x47b070[_0x811c('0x1f')][_0x811c('0x20')]({'where':{'type':_0x811c('0x21')},'attributes':['id',_0x811c('0x22')],'include':[{'model':_0x47b070[_0x811c('0x23')],'as':_0x811c('0x24'),'where':{'id':_0x5be7fc['ListId']}}]})[_0x811c('0xe')](function(_0x4a955e){if(_0x4a955e){var _0x568995=[];for(var _0x3c4861=0x0,_0xf2af01;_0x3c4861<_0x4a955e[_0x811c('0x25')];_0x3c4861+=0x1){_0xf2af01=_0x4a955e[_0x3c4861][_0x811c('0x26')]({'plain':!![]});switch(_0xf2af01[_0x811c('0x22')]){case'always':_0x291660(_0xf2af01)['catch'](_0x4ce7c4());break;case _0x811c('0x27'):_0x226dc6(_0xf2af01)['catch'](_0x4ce7c4());break;default:_0x47b070[_0x811c('0x10')]['create']({'phone':_0x5be7fc[_0x811c('0x9')],'ContactId':_0x5be7fc['id'],'ListId':_0x5be7fc['ListId'],'scheduledat':_0x5be7fc['scheduledat']?_0x5be7fc[_0x811c('0x13')]:moment()[_0x811c('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x5be7fc[_0x811c('0x1d')]?_0x5be7fc[_0x811c('0x1d')]:0x2,'callback':_0x5be7fc[_0x811c('0x16')]?!![]:![],'callbackuniqueid':_0x5be7fc[_0x811c('0x16')]?_0x5be7fc[_0x811c('0x16')]:undefined,'callbackat':_0x5be7fc[_0x811c('0x16')]?moment()[_0x811c('0x14')](_0x811c('0x15')):undefined,'VoiceQueueId':_0xf2af01['id']})[_0x811c('0x17')](_0x4ce7c4());}}}})[_0x811c('0xe')](function(){return _0x47b070[_0x811c('0x1f')]['findAll']({'where':{'type':_0x811c('0x21')},'attributes':['id'],'include':[{'model':_0x47b070[_0x811c('0x23')],'as':_0x811c('0x28'),'where':{'id':_0x5be7fc[_0x811c('0x12')]}}]})[_0x811c('0xe')](function(_0x49475d){if(_0x49475d){var _0x53c79f=[];for(var _0x3b99c5=0x0,_0xfaad6;_0x3b99c5<_0x49475d[_0x811c('0x25')];_0x3b99c5+=0x1){_0xfaad6=_0x49475d[_0x3b99c5][_0x811c('0x26')]({'plain':!![]});_0x47b070[_0x811c('0x29')][_0x811c('0x11')]({'phone':_0x5be7fc['phone'],'ContactId':_0x5be7fc['id'],'ListId':_0x5be7fc[_0x811c('0x12')],'VoiceQueueId':_0xfaad6['id']})[_0x811c('0x17')](function(_0x473daf){logger[_0x811c('0xa')](_0x811c('0x2a'),_0x811c('0xb'),_0x473daf['message']);});}}});})[_0x811c('0xe')](function(){return _0x47b070[_0x811c('0x2b')]['findAll']({'attributes':['id',_0x811c('0x22')],'include':[{'model':_0x47b070[_0x811c('0x23')],'as':_0x811c('0x24'),'where':{'id':_0x5be7fc[_0x811c('0x12')]}}]})[_0x811c('0xe')](function(_0x1c1462){if(_0x1c1462){var _0x95332c=[];for(var _0x3322b0=0x0,_0x267fb5;_0x3322b0<_0x1c1462[_0x811c('0x25')];_0x3322b0+=0x1){_0x267fb5=_0x1c1462[_0x3322b0][_0x811c('0x26')]({'plain':!![]});switch(_0x267fb5[_0x811c('0x22')]){case _0x811c('0x2c'):_0x47b7c3(_0x267fb5)['catch'](_0x4a5baf());break;case _0x811c('0x27'):_0x38d639(_0x267fb5)[_0x811c('0x17')](_0x4a5baf());break;default:_0x47b070[_0x811c('0x10')][_0x811c('0x11')]({'phone':_0x5be7fc['phone'],'ContactId':_0x5be7fc['id'],'ListId':_0x5be7fc[_0x811c('0x12')],'scheduledat':_0x5be7fc[_0x811c('0x13')]?_0x5be7fc[_0x811c('0x13')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x5be7fc['priority']?_0x5be7fc[_0x811c('0x1d')]:0x2,'callback':_0x5be7fc[_0x811c('0x16')]?!![]:![],'callbackuniqueid':_0x5be7fc[_0x811c('0x16')]?_0x5be7fc['callbackUniqueid']:undefined,'callbackat':_0x5be7fc[_0x811c('0x16')]?moment()[_0x811c('0x14')](_0x811c('0x15')):undefined,'CampaignId':_0x267fb5['id']})[_0x811c('0x17')](_0x4a5baf());}}}});})['then'](function(){return _0x47b070['Campaign'][_0x811c('0x20')]({'attributes':['id'],'include':[{'model':_0x47b070[_0x811c('0x23')],'as':_0x811c('0x28'),'where':{'id':_0x5be7fc['ListId']}}]})[_0x811c('0xe')](function(_0xd093c8){if(_0xd093c8){var _0x25a4f2=[];for(var _0x1cc885=0x0,_0x13ddc8;_0x1cc885<_0xd093c8[_0x811c('0x25')];_0x1cc885+=0x1){_0x13ddc8=_0xd093c8[_0x1cc885][_0x811c('0x26')]({'plain':!![]});_0x47b070[_0x811c('0x29')][_0x811c('0x11')]({'phone':_0x5be7fc[_0x811c('0x9')],'ContactId':_0x5be7fc['id'],'ListId':_0x5be7fc[_0x811c('0x12')],'CampaignId':_0x13ddc8['id']})[_0x811c('0x17')](function(_0x676356){logger[_0x811c('0xa')](_0x811c('0x2a'),_0x811c('0xb'),_0x676356['message']);});}}});})[_0x811c('0xe')](function(){_0x57a92d();})[_0x811c('0x17')](function(_0x472770){logger[_0x811c('0xa')](_0x811c('0x2a'),_0x811c('0xb'),_0x472770['message']);_0x57a92d(_0x472770);});}else{_0x57a92d(new Error(_0x811c('0x2d')));}},'afterDestroy':function(_0x3d9568,_0xf45a89,_0x596f18){var _0x5e39ad=_0x432f5b[_0x811c('0x2e')];var _0x499d56=_0x3d9568[_0x811c('0x26')]({'plain':!![]});return _0x5e39ad[_0x811c('0x10')][_0x811c('0x20')]({'raw':!![],'where':{'ListId':_0x499d56['ListId'],'ContactId':_0x499d56['id']}})['then'](function(_0x160366){if(!_[_0x811c('0x2f')](_0x160366)){var _0x5ec119=[];for(var _0x5e15a1=0x0;_0x5e15a1<_0x160366[_0x811c('0x25')];_0x5e15a1+=0x1){var _0x309783=_0x5e39ad[_0x811c('0x10')][_0x811c('0x30')]({'where':{'ListId':_0x160366[_0x5e15a1][_0x811c('0x12')],'ContactId':_0x160366[_0x5e15a1][_0x811c('0x31')],'VoiceQueueId':_0x160366[_0x5e15a1][_0x811c('0x32')],'CampaignId':_0x160366[_0x5e15a1][_0x811c('0x33')]}});_0x5ec119['push'](_0x309783);}return BPromise['all'](_0x5ec119);}})[_0x811c('0xe')](function(_0x18c507){logger[_0x811c('0x34')](_0x811c('0x35'),util[_0x811c('0xc')](_0x18c507,{'showHidden':![],'depth':null}));_0x596f18();})['catch'](function(_0x200e15){logger['error'](_0x811c('0x36'),util[_0x811c('0xc')](_0x200e15,{'showHidden':![],'depth':null}));_0x596f18(_0x200e15);});}}});};
\ No newline at end of file
index a6157f7..5b0617a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda9a=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','message','CmContact','find','options','raw','where','map','model','include','attributes','ShowCmContact','create','body','CreateCmContact','catch','lodash','util','bluebird','randomstring'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xda9a,0x18c));var _0xada9=function(_0x35fa33,_0x5cee15){_0x35fa33=_0x35fa33-0x0;var _0x39de35=_0xda9a[_0x35fa33];return _0x39de35;};'use strict';var _=require(_0xada9('0x0'));var util=require(_0xada9('0x1'));var moment=require('moment');var BPromise=require(_0xada9('0x2'));var rs=require(_0xada9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xada9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xada9('0x5'))(_0xada9('0x6'));var config=require(_0xada9('0x7'));var jayson=require(_0xada9('0x8'));var client=jayson[_0xada9('0x9')]['http']({'port':0x232a});config[_0xada9('0xa')]=_[_0xada9('0xb')](config[_0xada9('0xa')],{'host':_0xada9('0xc'),'port':0x18eb});var socket=require(_0xada9('0xd'))(new Redis(config[_0xada9('0xa')]));require(_0xada9('0xe'))[_0xada9('0xf')](socket);function respondWithRpcPromise(_0x43813a,_0x5659ef,_0x5dde38){return new BPromise(function(_0x43e829,_0x236d1e){return client[_0xada9('0x10')](_0x43813a,_0x5dde38)[_0xada9('0x11')](function(_0x45a78b){logger[_0xada9('0x12')](_0xada9('0x13'),_0x5659ef,_0xada9('0x14'));logger[_0xada9('0x15')](_0xada9('0x16'),_0x5659ef,'request\x20sent',JSON[_0xada9('0x17')](_0x45a78b));if(_0x45a78b[_0xada9('0x18')]){if(_0x45a78b[_0xada9('0x18')]['code']===0x1f4){logger[_0xada9('0x18')]('CmContact,\x20%s,\x20%s',_0x5659ef,_0x45a78b[_0xada9('0x18')][_0xada9('0x19')]);return _0x236d1e(_0x45a78b[_0xada9('0x18')][_0xada9('0x19')]);}logger[_0xada9('0x18')]('CmContact,\x20%s,\x20%s',_0x5659ef,_0x45a78b['error']['message']);return _0x43e829(_0x45a78b[_0xada9('0x18')][_0xada9('0x19')]);}else{logger[_0xada9('0x12')](_0xada9('0x13'),_0x5659ef,'request\x20sent');_0x43e829(_0x45a78b['result']['message']);}})['catch'](function(_0xf7410e){logger['error'](_0xada9('0x13'),_0x5659ef,_0xf7410e);_0x236d1e(_0xf7410e);});});}exports['ShowCmContact']=function(_0x851778){var _0xf3a9b1=this;return new Promise(function(_0x9f3959,_0x5a7738){return db[_0xada9('0x1a')][_0xada9('0x1b')]({'raw':_0x851778[_0xada9('0x1c')]?_0x851778[_0xada9('0x1c')][_0xada9('0x1d')]===undefined?!![]:![]:!![],'where':_0x851778[_0xada9('0x1c')]?_0x851778[_0xada9('0x1c')][_0xada9('0x1e')]||null:null,'attributes':_0x851778['options']?_0x851778[_0xada9('0x1c')]['attributes']||null:null,'include':_0x851778[_0xada9('0x1c')]?_0x851778[_0xada9('0x1c')]['include']?_[_0xada9('0x1f')](_0x851778['options']['include'],function(_0x420168){return{'model':db[_0x420168[_0xada9('0x20')]],'as':_0x420168['as'],'attributes':_0x420168['attributes'],'include':_0x420168[_0xada9('0x21')]?_['map'](_0x420168[_0xada9('0x21')],function(_0x5587e4){return{'model':db[_0x5587e4[_0xada9('0x20')]],'as':_0x5587e4['as'],'attributes':_0x5587e4[_0xada9('0x22')],'include':_0x5587e4[_0xada9('0x21')]?_[_0xada9('0x1f')](_0x5587e4['include'],function(_0x25be01){return{'model':db[_0x25be01[_0xada9('0x20')]],'as':_0x25be01['as'],'attributes':_0x25be01['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x474fe5){logger[_0xada9('0x12')](_0xada9('0x23'),_0x851778);logger['debug'](_0xada9('0x23'),_0x851778,JSON[_0xada9('0x17')](_0x474fe5));_0x9f3959(_0x474fe5);})['catch'](function(_0x32ebaa){logger[_0xada9('0x18')]('ShowCmContact',_0x32ebaa[_0xada9('0x19')],_0x851778);_0x5a7738(_0xf3a9b1[_0xada9('0x18')](0x1f4,_0x32ebaa[_0xada9('0x19')]));});});};exports['CreateCmContact']=function(_0x2d798b){var _0xdd77a9=this;return new Promise(function(_0x526a0c,_0x1dc8eb){return db[_0xada9('0x1a')][_0xada9('0x24')](_0x2d798b[_0xada9('0x25')],{'raw':_0x2d798b[_0xada9('0x1c')]?_0x2d798b[_0xada9('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0xada9('0x11')](function(_0x67cf59){logger['info'](_0xada9('0x26'),_0x2d798b);logger[_0xada9('0x15')](_0xada9('0x26'),_0x2d798b,JSON[_0xada9('0x17')](_0x67cf59));_0x526a0c(_0x67cf59);})[_0xada9('0x27')](function(_0xd90253){logger[_0xada9('0x18')](_0xada9('0x26'),_0xd90253[_0xada9('0x19')],_0x2d798b);_0x1dc8eb(_0xdd77a9[_0xada9('0x18')](0x1f4,_0xd90253[_0xada9('0x19')]));});});};
\ No newline at end of file
+var _0x5e52=['defaults','redis','localhost','socket.io-emitter','register','request','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','message','result','ShowCmContact','CmContact','find','options','raw','attributes','include','map','model','then','CreateCmContact','create','body','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x28f32c,_0x4cc342){var _0x355402=function(_0xdb5032){while(--_0xdb5032){_0x28f32c['push'](_0x28f32c['shift']());}};_0x355402(++_0x4cc342);}(_0x5e52,0x8e));var _0x25e5=function(_0x36641f,_0x1de996){_0x36641f=_0x36641f-0x0;var _0x264197=_0x5e52[_0x36641f];return _0x264197;};'use strict';var _=require(_0x25e5('0x0'));var util=require(_0x25e5('0x1'));var moment=require(_0x25e5('0x2'));var BPromise=require('bluebird');var rs=require(_0x25e5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x25e5('0x4'))['db'];var utils=require(_0x25e5('0x5'));var logger=require(_0x25e5('0x6'))('rpc');var config=require(_0x25e5('0x7'));var jayson=require(_0x25e5('0x8'));var client=jayson[_0x25e5('0x9')]['http']({'port':0x232a});config['redis']=_[_0x25e5('0xa')](config[_0x25e5('0xb')],{'host':_0x25e5('0xc'),'port':0x18eb});var socket=require(_0x25e5('0xd'))(new Redis(config['redis']));require('./cmContact.socket')[_0x25e5('0xe')](socket);function respondWithRpcPromise(_0x23334e,_0x18599b,_0x634246){return new BPromise(function(_0x502697,_0x2c49f2){return client[_0x25e5('0xf')](_0x23334e,_0x634246)['then'](function(_0x372e1a){logger[_0x25e5('0x10')](_0x25e5('0x11'),_0x18599b,_0x25e5('0x12'));logger[_0x25e5('0x13')](_0x25e5('0x14'),_0x18599b,_0x25e5('0x12'),JSON[_0x25e5('0x15')](_0x372e1a));if(_0x372e1a['error']){if(_0x372e1a['error']['code']===0x1f4){logger['error']('CmContact,\x20%s,\x20%s',_0x18599b,_0x372e1a[_0x25e5('0x16')][_0x25e5('0x17')]);return _0x2c49f2(_0x372e1a['error'][_0x25e5('0x17')]);}logger[_0x25e5('0x16')](_0x25e5('0x11'),_0x18599b,_0x372e1a[_0x25e5('0x16')]['message']);return _0x502697(_0x372e1a[_0x25e5('0x16')][_0x25e5('0x17')]);}else{logger[_0x25e5('0x10')]('CmContact,\x20%s,\x20%s',_0x18599b,_0x25e5('0x12'));_0x502697(_0x372e1a[_0x25e5('0x18')][_0x25e5('0x17')]);}})['catch'](function(_0xb114cf){logger[_0x25e5('0x16')]('CmContact,\x20%s,\x20%s',_0x18599b,_0xb114cf);_0x2c49f2(_0xb114cf);});});}exports[_0x25e5('0x19')]=function(_0x224189){var _0x7c2977=this;return new Promise(function(_0x8da83e,_0x136712){return db[_0x25e5('0x1a')][_0x25e5('0x1b')]({'raw':_0x224189[_0x25e5('0x1c')]?_0x224189[_0x25e5('0x1c')][_0x25e5('0x1d')]===undefined?!![]:![]:!![],'where':_0x224189['options']?_0x224189[_0x25e5('0x1c')]['where']||null:null,'attributes':_0x224189[_0x25e5('0x1c')]?_0x224189[_0x25e5('0x1c')][_0x25e5('0x1e')]||null:null,'include':_0x224189[_0x25e5('0x1c')]?_0x224189[_0x25e5('0x1c')][_0x25e5('0x1f')]?_['map'](_0x224189['options'][_0x25e5('0x1f')],function(_0x512fd5){return{'model':db[_0x512fd5['model']],'as':_0x512fd5['as'],'attributes':_0x512fd5[_0x25e5('0x1e')],'include':_0x512fd5[_0x25e5('0x1f')]?_[_0x25e5('0x20')](_0x512fd5[_0x25e5('0x1f')],function(_0x256080){return{'model':db[_0x256080['model']],'as':_0x256080['as'],'attributes':_0x256080[_0x25e5('0x1e')],'include':_0x256080[_0x25e5('0x1f')]?_[_0x25e5('0x20')](_0x256080['include'],function(_0x75df7e){return{'model':db[_0x75df7e[_0x25e5('0x21')]],'as':_0x75df7e['as'],'attributes':_0x75df7e['attributes']};}):[]};}):[]};}):[]:[]})[_0x25e5('0x22')](function(_0x3d1950){logger[_0x25e5('0x10')](_0x25e5('0x19'),_0x224189);logger[_0x25e5('0x13')](_0x25e5('0x19'),_0x224189,JSON[_0x25e5('0x15')](_0x3d1950));_0x8da83e(_0x3d1950);})['catch'](function(_0x4f4891){logger['error'](_0x25e5('0x19'),_0x4f4891[_0x25e5('0x17')],_0x224189);_0x136712(_0x7c2977[_0x25e5('0x16')](0x1f4,_0x4f4891['message']));});});};exports[_0x25e5('0x23')]=function(_0x5b6941){var _0x33e0f7=this;return new Promise(function(_0x5b9b25,_0x4f7241){return db[_0x25e5('0x1a')][_0x25e5('0x24')](_0x5b6941[_0x25e5('0x25')],{'raw':_0x5b6941['options']?_0x5b6941['options'][_0x25e5('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x1e211d){logger['info'](_0x25e5('0x23'),_0x5b6941);logger[_0x25e5('0x13')]('CreateCmContact',_0x5b6941,JSON[_0x25e5('0x15')](_0x1e211d));_0x5b9b25(_0x1e211d);})['catch'](function(_0x23d8e8){logger[_0x25e5('0x16')](_0x25e5('0x23'),_0x23d8e8[_0x25e5('0x17')],_0x5b6941);_0x4f7241(_0x33e0f7['error'](0x1f4,_0x23d8e8[_0x25e5('0x17')]));});});};
\ No newline at end of file
index 48780de..c1ebe97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x448b=['emit','removeListener','register','length','cmContact:','./cmContact.events','save','remove','update'];(function(_0x40e233,_0x22b65f){var _0x201ff1=function(_0x4f9550){while(--_0x4f9550){_0x40e233['push'](_0x40e233['shift']());}};_0x201ff1(++_0x22b65f);}(_0x448b,0x125));var _0xb448=function(_0x4072ca,_0x5db922){_0x4072ca=_0x4072ca-0x0;var _0x43de3d=_0x448b[_0x4072ca];return _0x43de3d;};'use strict';var CmContactEvents=require(_0xb448('0x0'));var events=[_0xb448('0x1'),_0xb448('0x2'),_0xb448('0x3')];function createListener(_0x422fa2,_0x51583a){return function(_0x5bf7db){_0x51583a[_0xb448('0x4')](_0x422fa2,_0x5bf7db);};}function removeListener(_0x32bcae,_0x172a89){return function(){CmContactEvents[_0xb448('0x5')](_0x32bcae,_0x172a89);};}exports[_0xb448('0x6')]=function(_0x276466){for(var _0x3670cb=0x0,_0x5993ad=events[_0xb448('0x7')];_0x3670cb<_0x5993ad;_0x3670cb++){var _0x2f6f82=events[_0x3670cb];var _0x2c2bdd=createListener(_0xb448('0x8')+_0x2f6f82,_0x276466);CmContactEvents['on'](_0x2f6f82,_0x2c2bdd);}};
\ No newline at end of file
+var _0x3561=['cmContact:','./cmContact.events','remove','update','emit','removeListener','register'];(function(_0x23e8af,_0x9af324){var _0x2a9004=function(_0x17ebed){while(--_0x17ebed){_0x23e8af['push'](_0x23e8af['shift']());}};_0x2a9004(++_0x9af324);}(_0x3561,0x94));var _0x1356=function(_0x4fbe0a,_0x976e0c){_0x4fbe0a=_0x4fbe0a-0x0;var _0x1bb629=_0x3561[_0x4fbe0a];return _0x1bb629;};'use strict';var CmContactEvents=require(_0x1356('0x0'));var events=['save',_0x1356('0x1'),_0x1356('0x2')];function createListener(_0x8ef5f,_0x14465e){return function(_0x442fbc){_0x14465e[_0x1356('0x3')](_0x8ef5f,_0x442fbc);};}function removeListener(_0x1634de,_0x116ff0){return function(){CmContactEvents[_0x1356('0x4')](_0x1634de,_0x116ff0);};}exports[_0x1356('0x5')]=function(_0x417d11){for(var _0x36e81f=0x0,_0x45ac56=events['length'];_0x36e81f<_0x45ac56;_0x36e81f++){var _0x105aaf=events[_0x36e81f];var _0x33529f=createListener(_0x1356('0x6')+_0x105aaf,_0x417d11);CmContactEvents['on'](_0x105aaf,_0x33529f);}};
\ No newline at end of file
index 85100c2..9df4991 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d9a=['root','replace','%s-%s%s','now','file','/upload/:id','import','put','update','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','index','isAuthenticated','describe','/:id','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','post','/merge','merge','/create_many','bulkCreate','setTags','diskStorage','server/files/tmp','originalname','format','basename','extname','/csv','single','uploadCsv','join'];(function(_0x5a7f64,_0x347d57){var _0x3d30f1=function(_0x4bd1d6){while(--_0x4bd1d6){_0x5a7f64['push'](_0x5a7f64['shift']());}};_0x3d30f1(++_0x347d57);}(_0x2d9a,0x101));var _0xa2d9=function(_0x4fa0ea,_0x2cd534){_0x4fa0ea=_0x4fa0ea-0x0;var _0x51d027=_0x2d9a[_0x4fa0ea];return _0x51d027;};'use strict';var multer=require(_0xa2d9('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa2d9('0x1'));var express=require(_0xa2d9('0x2'));var router=express[_0xa2d9('0x3')]();var auth=require(_0xa2d9('0x4'));var interaction=require(_0xa2d9('0x5'));var config=require('../../config/environment');var controller=require('./cmContact.controller');router[_0xa2d9('0x6')]('/',auth['isAuthenticated'](),controller[_0xa2d9('0x7')]);router[_0xa2d9('0x6')]('/describe',auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x9')]);router[_0xa2d9('0x6')](_0xa2d9('0xa'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0xb')]);router[_0xa2d9('0x6')](_0xa2d9('0xc'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0xd')]);router[_0xa2d9('0x6')](_0xa2d9('0xe'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0xf')]);router[_0xa2d9('0x6')](_0xa2d9('0x10'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x11')]);router['get']('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0xa2d9('0x12')]);router[_0xa2d9('0x6')](_0xa2d9('0x13'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x14')]);router[_0xa2d9('0x15')](_0xa2d9('0x16'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x17')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa2d9('0x15')](_0xa2d9('0x18'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x19')]);router[_0xa2d9('0x15')](_0xa2d9('0xc'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x1a')]);var upload=multer({'storage':multer[_0xa2d9('0x1b')]({'destination':function(_0x10da1e,_0x3c5dc2,_0x1568a7){_0x1568a7(null,path['join'](config['root'],_0xa2d9('0x1c')));},'filename':function(_0x30694e,_0x2e1f68,_0x4cde99){_0x2e1f68[_0xa2d9('0x1d')]=_0x2e1f68[_0xa2d9('0x1d')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4cde99(null,util[_0xa2d9('0x1e')]('%s-%s%s',path[_0xa2d9('0x1f')](_0x2e1f68[_0xa2d9('0x1d')],path['extname'](_0x2e1f68[_0xa2d9('0x1d')])),Date['now'](),path[_0xa2d9('0x20')](_0x2e1f68[_0xa2d9('0x1d')])));}})});router[_0xa2d9('0x15')](_0xa2d9('0x21'),upload[_0xa2d9('0x22')]('file'),controller[_0xa2d9('0x23')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x22d78c,_0xd68fc7,_0x2ef41d){_0x2ef41d(null,path[_0xa2d9('0x24')](config[_0xa2d9('0x25')],_0xa2d9('0x1c')));},'filename':function(_0x3719f1,_0x476a2a,_0x296615){_0x476a2a[_0xa2d9('0x1d')]=_0x476a2a['originalname'][_0xa2d9('0x26')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x296615(null,util[_0xa2d9('0x1e')](_0xa2d9('0x27'),path[_0xa2d9('0x1f')](_0x476a2a[_0xa2d9('0x1d')],path[_0xa2d9('0x20')](_0x476a2a['originalname'])),Date[_0xa2d9('0x28')](),path[_0xa2d9('0x20')](_0x476a2a['originalname'])));}})});router[_0xa2d9('0x15')]('/upload',upload[_0xa2d9('0x22')](_0xa2d9('0x29')),controller['upload']);router[_0xa2d9('0x15')](_0xa2d9('0x2a'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x2b')]);router[_0xa2d9('0x2c')](_0xa2d9('0xa'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x2d')]);router[_0xa2d9('0x2e')](_0xa2d9('0xa'),auth[_0xa2d9('0x8')](),controller[_0xa2d9('0x2f')]);module[_0xa2d9('0x30')]=router;
\ No newline at end of file
+var _0x66da=['file','uploadCsv','diskStorage','%s-%s%s','/upload','upload','/upload/:id','import','put','delete','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','/:id','show','/:id/tags','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperFinals','getJscriptySessions','post','/merge','join','root','server/files/tmp','originalname','replace','format','basename','now','extname','/csv','single'];(function(_0x4fb844,_0x4d497e){var _0x200725=function(_0x1bf3d0){while(--_0x1bf3d0){_0x4fb844['push'](_0x4fb844['shift']());}};_0x200725(++_0x4d497e);}(_0x66da,0x198));var _0xa66d=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x66da[_0x4b2436];return _0x4f5ab2;};'use strict';var multer=require(_0xa66d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa66d('0x1'));var express=require(_0xa66d('0x2'));var router=express[_0xa66d('0x3')]();var auth=require(_0xa66d('0x4'));var interaction=require(_0xa66d('0x5'));var config=require('../../config/environment');var controller=require('./cmContact.controller');router[_0xa66d('0x6')]('/',auth[_0xa66d('0x7')](),controller[_0xa66d('0x8')]);router[_0xa66d('0x6')](_0xa66d('0x9'),auth[_0xa66d('0x7')](),controller['describe']);router[_0xa66d('0x6')](_0xa66d('0xa'),auth['isAuthenticated'](),controller[_0xa66d('0xb')]);router[_0xa66d('0x6')](_0xa66d('0xc'),auth[_0xa66d('0x7')](),controller[_0xa66d('0xd')]);router[_0xa66d('0x6')](_0xa66d('0xe'),auth[_0xa66d('0x7')](),controller[_0xa66d('0xf')]);router[_0xa66d('0x6')](_0xa66d('0x10'),auth[_0xa66d('0x7')](),controller['getHopperHistories']);router[_0xa66d('0x6')]('/:id/hopper_finals',auth['isAuthenticated'](),controller[_0xa66d('0x11')]);router[_0xa66d('0x6')]('/:id/jscripty_sessions',auth[_0xa66d('0x7')](),controller[_0xa66d('0x12')]);router[_0xa66d('0x13')](_0xa66d('0x14'),auth[_0xa66d('0x7')](),controller['merge']);router['post']('/',auth[_0xa66d('0x7')](),controller['create']);router[_0xa66d('0x13')]('/create_many',auth['isAuthenticated'](),controller['bulkCreate']);router[_0xa66d('0x13')](_0xa66d('0xc'),auth[_0xa66d('0x7')](),controller['setTags']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4212a8,_0x32f7b9,_0x4d7f05){_0x4d7f05(null,path[_0xa66d('0x15')](config[_0xa66d('0x16')],_0xa66d('0x17')));},'filename':function(_0x4ffd0f,_0x1c0e22,_0x5d254a){_0x1c0e22[_0xa66d('0x18')]=_0x1c0e22[_0xa66d('0x18')][_0xa66d('0x19')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5d254a(null,util[_0xa66d('0x1a')]('%s-%s%s',path[_0xa66d('0x1b')](_0x1c0e22[_0xa66d('0x18')],path['extname'](_0x1c0e22[_0xa66d('0x18')])),Date[_0xa66d('0x1c')](),path[_0xa66d('0x1d')](_0x1c0e22[_0xa66d('0x18')])));}})});router[_0xa66d('0x13')](_0xa66d('0x1e'),upload[_0xa66d('0x1f')](_0xa66d('0x20')),controller[_0xa66d('0x21')]);var upload=multer({'storage':multer[_0xa66d('0x22')]({'destination':function(_0x1773c0,_0x56475b,_0x21fd7e){_0x21fd7e(null,path['join'](config[_0xa66d('0x16')],'server/files/tmp'));},'filename':function(_0x304fef,_0x3a80aa,_0xafb712){_0x3a80aa[_0xa66d('0x18')]=_0x3a80aa[_0xa66d('0x18')][_0xa66d('0x19')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xafb712(null,util[_0xa66d('0x1a')](_0xa66d('0x23'),path[_0xa66d('0x1b')](_0x3a80aa[_0xa66d('0x18')],path['extname'](_0x3a80aa['originalname'])),Date[_0xa66d('0x1c')](),path[_0xa66d('0x1d')](_0x3a80aa[_0xa66d('0x18')])));}})});router['post'](_0xa66d('0x24'),upload[_0xa66d('0x1f')](_0xa66d('0x20')),controller[_0xa66d('0x25')]);router['post'](_0xa66d('0x26'),auth[_0xa66d('0x7')](),controller[_0xa66d('0x27')]);router[_0xa66d('0x28')](_0xa66d('0xa'),auth[_0xa66d('0x7')](),controller['update']);router[_0xa66d('0x29')](_0xa66d('0xa'),auth[_0xa66d('0x7')](),controller[_0xa66d('0x2a')]);module[_0xa66d('0x2b')]=router;
\ No newline at end of file
index 8f7d868..4e00379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63cf=['exports','VIRTUAL','alias','STRING','getDataValue','name','long','select','parse','values','isArray','setDataValue','stringify','BOOLEAN','sequelize','lodash'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x63cf,0x1de));var _0xf63c=function(_0x478c8a,_0x9afc92){_0x478c8a=_0x478c8a-0x0;var _0x3b6b3e=_0x63cf[_0x478c8a];return _0x3b6b3e;};'use strict';var Sequelize=require(_0xf63c('0x0'));var _=require(_0xf63c('0x1'));module[_0xf63c('0x2')]={'name':{'type':Sequelize[_0xf63c('0x3')],'get':function(_0x8c845){return this['getDataValue'](_0xf63c('0x4'));}},'alias':{'type':Sequelize[_0xf63c('0x5')],'allowNull':![],'set':function(_0x11dec2){this['setDataValue'](_0xf63c('0x4'),_0x11dec2?_0x11dec2:this[_0xf63c('0x6')](_0xf63c('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0xf63c('0x8')),'get':function(){if(this[_0xf63c('0x6')]('type')===_0xf63c('0x9')){return JSON[_0xf63c('0xa')](this['getDataValue'](_0xf63c('0xb')));}else{return this[_0xf63c('0x6')](_0xf63c('0xb'));}},'set':function(_0x222387){if(Array[_0xf63c('0xc')](_0x222387)){this[_0xf63c('0xd')](_0xf63c('0xb'),JSON[_0xf63c('0xe')](_0x222387));}else{this[_0xf63c('0xd')](_0xf63c('0xb'),_0x222387);}}},'required':{'type':Sequelize[_0xf63c('0xf')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5d32=['getDataValue','type','parse','values','isArray','stringify','BOOLEAN','sequelize','lodash','exports','VIRTUAL','alias','STRING','setDataValue','name'];(function(_0x43b7f2,_0x3c0e85){var _0x5d6f59=function(_0x290b0d){while(--_0x290b0d){_0x43b7f2['push'](_0x43b7f2['shift']());}};_0x5d6f59(++_0x3c0e85);}(_0x5d32,0x1c9));var _0x25d3=function(_0x4f6f04,_0x59c6ba){_0x4f6f04=_0x4f6f04-0x0;var _0x606b2c=_0x5d32[_0x4f6f04];return _0x606b2c;};'use strict';var Sequelize=require(_0x25d3('0x0'));var _=require(_0x25d3('0x1'));module[_0x25d3('0x2')]={'name':{'type':Sequelize[_0x25d3('0x3')],'get':function(_0x52a2e2){return this['getDataValue'](_0x25d3('0x4'));}},'alias':{'type':Sequelize[_0x25d3('0x5')],'allowNull':![],'set':function(_0x393b74){this[_0x25d3('0x6')]('alias',_0x393b74?_0x393b74:this['getDataValue'](_0x25d3('0x7')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize['TEXT']('long'),'get':function(){if(this[_0x25d3('0x8')](_0x25d3('0x9'))==='select'){return JSON[_0x25d3('0xa')](this[_0x25d3('0x8')](_0x25d3('0xb')));}else{return this[_0x25d3('0x8')]('values');}},'set':function(_0x137b6f){if(Array[_0x25d3('0xc')](_0x137b6f)){this[_0x25d3('0x6')]('values',JSON[_0x25d3('0xd')](_0x137b6f));}else{this[_0x25d3('0x6')]('values',_0x137b6f);}}},'required':{'type':Sequelize[_0x25d3('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 0a1283d..1c01afc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce20=['BOOLEAN','defaultValue','queryInterface','cm_contacts','format','html-pdf','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','end','status','count','offset','set','Content-Range','json','apply','reject','update','then','sendStatus','error','name','send','index','CmCustomField','rawAttributes','differenceBy','keys','query','dateStart','dateEnd','intersection','model','attributes','fields','length','nolimit','limit','order','sort','where','filters','pick','add','day','filter','merge','map','VIRTUAL','field','options','includeAll','include','findAll','rows','params','find','catch','body','destroy','sequelize','create','Sequelize','TEXT','type','text','number','INTEGER','switch'];(function(_0x1bc6e4,_0x15bcfd){var _0x3646a6=function(_0xb6456e){while(--_0xb6456e){_0x1bc6e4['push'](_0x1bc6e4['shift']());}};_0x3646a6(++_0x15bcfd);}(_0xce20,0x151));var _0x0ce2=function(_0x4e5ab4,_0x289d30){_0x4e5ab4=_0x4e5ab4-0x0;var _0x1af4c4=_0xce20[_0x4e5ab4];return _0x1af4c4;};'use strict';var pdf=require(_0x0ce2('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x0ce2('0x1'));var zipdir=require(_0x0ce2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ce2('0x3'));var moment=require(_0x0ce2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0ce2('0x5'));var util=require('util');var path=require(_0x0ce2('0x6'));var sox=require(_0x0ce2('0x7'));var csv=require(_0x0ce2('0x8'));var ejs=require(_0x0ce2('0x9'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x0ce2('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x0ce2('0xb'));var toCsv=require(_0x0ce2('0x8'));var querystring=require(_0x0ce2('0xc'));var Papa=require(_0x0ce2('0xd'));var Redis=require('ioredis');var qs=require(_0x0ce2('0xe'));var logger=require(_0x0ce2('0xf'))('api');var utils=require(_0x0ce2('0x10'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ea8de,_0x361faf){_0x361faf=_0x361faf||0xcc;return function(_0x532803){if(_0x532803){return _0x2ea8de['sendStatus'](_0x361faf);}return _0x2ea8de['status'](_0x361faf)[_0x0ce2('0x11')]();};}function respondWithResult(_0x16a2c2,_0x209fe3){_0x209fe3=_0x209fe3||0xc8;return function(_0x1a7e0c){if(_0x1a7e0c){return _0x16a2c2[_0x0ce2('0x12')](_0x209fe3)['json'](_0x1a7e0c);}};}function respondWithFilteredResult(_0x66614b,_0x335c06){return function(_0xbbc396){if(_0xbbc396){var _0x225bf1=_0xbbc396[_0x0ce2('0x13')],_0x1a01b4=_0x335c06['offset'],_0x5aeec2=_0x335c06[_0x0ce2('0x14')]+_0x335c06['limit'],_0x27d311;if(_0x5aeec2>=_0x225bf1){_0x5aeec2=_0x225bf1;_0x27d311=0xc8;}else{_0x27d311=0xce;}_0x66614b[_0x0ce2('0x12')](_0x27d311);return _0x66614b[_0x0ce2('0x15')](_0x0ce2('0x16'),_0x1a01b4+'-'+_0x5aeec2+'/'+_0x225bf1)[_0x0ce2('0x17')](_0xbbc396);}return null;};}function patchUpdates(_0x482da3){return function(_0x54b6d5){try{jsonpatch[_0x0ce2('0x18')](_0x54b6d5,_0x482da3,!![]);}catch(_0x3ab26a){return BPromise[_0x0ce2('0x19')](_0x3ab26a);}return _0x54b6d5['save']();};}function saveUpdates(_0x4508bd,_0x3c57a1){return function(_0x5d6dde){if(_0x5d6dde){return _0x5d6dde[_0x0ce2('0x1a')](_0x4508bd)[_0x0ce2('0x1b')](function(_0x4dd4a9){return _0x4dd4a9;});}return null;};}function removeEntity(_0x1f005d,_0xcb5c96){return function(_0x3d2856){if(_0x3d2856){return _0x3d2856['destroy']()['then'](function(){_0x1f005d[_0x0ce2('0x12')](0xcc)[_0x0ce2('0x11')]();});}};}function handleEntityNotFound(_0x21dcf8,_0x21ef5f){return function(_0x14166b){if(!_0x14166b){_0x21dcf8[_0x0ce2('0x1c')](0x194);}return _0x14166b;};}function handleError(_0x56c61e,_0x55336a){_0x55336a=_0x55336a||0x1f4;return function(_0x1ae388){logger[_0x0ce2('0x1d')](_0x1ae388['stack']);if(_0x1ae388['name']){delete _0x1ae388[_0x0ce2('0x1e')];}_0x56c61e['status'](_0x55336a)[_0x0ce2('0x1f')](_0x1ae388);};}exports[_0x0ce2('0x20')]=function(_0x498bf4,_0x5ec7ea){var _0x3a54bc={},_0x5f1a48={},_0x450d6a={'count':0x0,'rows':[]};var _0x4f1259=db[_0x0ce2('0x21')][_0x0ce2('0x22')];_0x5f1a48['model']=_[_0x0ce2('0x23')](_[_0x0ce2('0x24')](_0x4f1259),[_0x0ce2('0x1e')]);var _0x4cc9ff={'dateStart':_0x498bf4[_0x0ce2('0x25')][_0x0ce2('0x26')],'dateEnd':_0x498bf4[_0x0ce2('0x25')][_0x0ce2('0x27')]};delete _0x498bf4[_0x0ce2('0x25')][_0x0ce2('0x26')];delete _0x498bf4['query'][_0x0ce2('0x27')];_0x5f1a48['query']=_[_0x0ce2('0x24')](_0x498bf4[_0x0ce2('0x25')]);_0x5f1a48['filters']=_[_0x0ce2('0x28')](_0x5f1a48[_0x0ce2('0x29')],_0x5f1a48[_0x0ce2('0x25')]);_0x3a54bc[_0x0ce2('0x2a')]=_[_0x0ce2('0x28')](_0x5f1a48[_0x0ce2('0x29')],qs[_0x0ce2('0x2b')](_0x498bf4['query'][_0x0ce2('0x2b')]));_0x3a54bc[_0x0ce2('0x2a')]=_0x3a54bc[_0x0ce2('0x2a')][_0x0ce2('0x2c')]?_0x3a54bc[_0x0ce2('0x2a')]:_0x5f1a48[_0x0ce2('0x29')];if(!_0x498bf4['query']['hasOwnProperty'](_0x0ce2('0x2d'))){_0x3a54bc[_0x0ce2('0x2e')]=qs[_0x0ce2('0x2e')](_0x498bf4[_0x0ce2('0x25')][_0x0ce2('0x2e')]);_0x3a54bc[_0x0ce2('0x14')]=qs[_0x0ce2('0x14')](_0x498bf4[_0x0ce2('0x25')][_0x0ce2('0x14')]);}_0x3a54bc[_0x0ce2('0x2f')]=qs[_0x0ce2('0x30')](_0x498bf4[_0x0ce2('0x25')][_0x0ce2('0x30')]);_0x3a54bc[_0x0ce2('0x31')]=qs[_0x0ce2('0x32')](_[_0x0ce2('0x33')](_0x498bf4[_0x0ce2('0x25')],_0x5f1a48['filters']));if(_0x4cc9ff[_0x0ce2('0x26')]){if(_0x4cc9ff[_0x0ce2('0x27')]){_0x4cc9ff[_0x0ce2('0x27')]=moment(_0x4cc9ff[_0x0ce2('0x27')])[_0x0ce2('0x34')](0x1,'day');}else{_0x4cc9ff[_0x0ce2('0x27')]=moment(_0x4cc9ff['dateStart'])[_0x0ce2('0x34')](0x1,_0x0ce2('0x35'));}_['merge'](_0x3a54bc[_0x0ce2('0x31')],{'createdAt':{'$gte':_0x4cc9ff[_0x0ce2('0x26')],'$lte':_0x4cc9ff['dateEnd']}});}if(_0x498bf4[_0x0ce2('0x25')][_0x0ce2('0x36')]){_0x3a54bc[_0x0ce2('0x31')]=_[_0x0ce2('0x37')](_0x3a54bc[_0x0ce2('0x31')],{'$or':_[_0x0ce2('0x38')](_0x4f1259,function(_0x54353c){if(_0x54353c['type']['key']!==_0x0ce2('0x39')){var _0x3716ea={};_0x3716ea[_0x54353c[_0x0ce2('0x3a')]]={'$like':'%'+_0x498bf4[_0x0ce2('0x25')][_0x0ce2('0x36')]+'%'};return _0x3716ea;}})});}_0x3a54bc=_[_0x0ce2('0x37')]({},_0x3a54bc,_0x498bf4[_0x0ce2('0x3b')]);var _0x3a2c77={'where':_0x3a54bc[_0x0ce2('0x31')]};return db[_0x0ce2('0x21')][_0x0ce2('0x13')](_0x3a2c77)['then'](function(_0x5cfa9c){_0x450d6a[_0x0ce2('0x13')]=_0x5cfa9c;if(_0x498bf4['query'][_0x0ce2('0x3c')]){_0x3a54bc[_0x0ce2('0x3d')]=[{'all':!![]}];}return db[_0x0ce2('0x21')][_0x0ce2('0x3e')](_0x3a54bc);})['then'](function(_0x28805d){_0x450d6a[_0x0ce2('0x3f')]=_0x28805d;return _0x450d6a;})[_0x0ce2('0x1b')](respondWithFilteredResult(_0x5ec7ea,_0x3a54bc))['catch'](handleError(_0x5ec7ea,null));};exports['show']=function(_0x14d2a5,_0x581f5f){var _0x25100f={'raw':!![],'where':{'id':_0x14d2a5[_0x0ce2('0x40')]['id']}},_0x32a452={};_0x32a452['model']=_[_0x0ce2('0x24')](db[_0x0ce2('0x21')][_0x0ce2('0x22')]);_0x32a452['query']=_[_0x0ce2('0x24')](_0x14d2a5[_0x0ce2('0x25')]);_0x32a452[_0x0ce2('0x32')]=_['intersection'](_0x32a452[_0x0ce2('0x29')],_0x32a452[_0x0ce2('0x25')]);_0x25100f['attributes']=_[_0x0ce2('0x28')](_0x32a452[_0x0ce2('0x29')],qs[_0x0ce2('0x2b')](_0x14d2a5['query']['fields']));_0x25100f['attributes']=_0x25100f['attributes'][_0x0ce2('0x2c')]?_0x25100f[_0x0ce2('0x2a')]:_0x32a452[_0x0ce2('0x29')];if(_0x14d2a5[_0x0ce2('0x25')][_0x0ce2('0x3c')]){_0x25100f['include']=[{'all':!![]}];}_0x25100f=_[_0x0ce2('0x37')]({},_0x25100f,_0x14d2a5[_0x0ce2('0x3b')]);return db['CmCustomField'][_0x0ce2('0x41')](_0x25100f)[_0x0ce2('0x1b')](handleEntityNotFound(_0x581f5f,null))['then'](respondWithResult(_0x581f5f,null))[_0x0ce2('0x42')](handleError(_0x581f5f,null));};exports[_0x0ce2('0x1a')]=function(_0x4f4675,_0x13be14){if(_0x4f4675[_0x0ce2('0x43')]['id']){delete _0x4f4675[_0x0ce2('0x43')]['id'];}return db[_0x0ce2('0x21')][_0x0ce2('0x41')]({'where':{'id':_0x4f4675[_0x0ce2('0x40')]['id']}})['then'](handleEntityNotFound(_0x13be14,null))['then'](saveUpdates(_0x4f4675[_0x0ce2('0x43')],null))['then'](respondWithResult(_0x13be14,null))[_0x0ce2('0x42')](handleError(_0x13be14,null));};exports[_0x0ce2('0x44')]=function(_0x413f40,_0x346635){return db[_0x0ce2('0x21')]['find']({'where':{'id':_0x413f40[_0x0ce2('0x40')]['id']}})[_0x0ce2('0x1b')](handleEntityNotFound(_0x346635,null))[_0x0ce2('0x1b')](removeEntity(_0x346635,null))[_0x0ce2('0x42')](handleError(_0x346635,null));};exports['create']=function(_0x392096,_0x586be5){var _0x3c2eba;return db[_0x0ce2('0x45')]['transaction'](function(_0x6670cb){return db['CmCustomField'][_0x0ce2('0x46')](_0x392096[_0x0ce2('0x43')],{'transaction':_0x6670cb})[_0x0ce2('0x1b')](function(_0xb3596e){_0x3c2eba=_0xb3596e;var _0x2f784c={'type':db[_0x0ce2('0x47')][_0x0ce2('0x48')],'transaction':_0x6670cb};switch(_0x392096[_0x0ce2('0x43')][_0x0ce2('0x49')]){case _0x0ce2('0x4a'):_0x2f784c['type']=db[_0x0ce2('0x47')][_0x0ce2('0x48')];break;case _0x0ce2('0x4b'):_0x2f784c[_0x0ce2('0x49')]=db[_0x0ce2('0x47')][_0x0ce2('0x4c')];break;case _0x0ce2('0x4d'):_0x2f784c[_0x0ce2('0x49')]=db[_0x0ce2('0x47')][_0x0ce2('0x4e')];_0x2f784c[_0x0ce2('0x4f')]=![];break;default:}return db[_0x0ce2('0x45')][_0x0ce2('0x50')]['addColumn'](_0x0ce2('0x51'),util[_0x0ce2('0x52')]('cf_%d',_0x3c2eba['id']),_0x2f784c);})[_0x0ce2('0x1b')](function(){return _0x3c2eba;});})[_0x0ce2('0x1b')](respondWithResult(_0x586be5,0xc9))['catch'](handleError(_0x586be5,null));};
\ No newline at end of file
+var _0xa02b=['update','then','destroy','error','stack','name','send','index','CmCustomField','rawAttributes','differenceBy','keys','query','dateStart','dateEnd','filters','intersection','attributes','model','fields','length','nolimit','sort','add','day','merge','where','filter','map','type','VIRTUAL','field','options','include','findAll','catch','show','params','find','body','transaction','create','Sequelize','TEXT','text','INTEGER','switch','sequelize','queryInterface','addColumn','cm_contacts','format','cf_%d','html-pdf','eml-format','rimraf','zip-dir','moment','bluebird','util','sox','to-csv','lodash','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject'];(function(_0x781772,_0x3af2c6){var _0x3e7517=function(_0xec76f7){while(--_0xec76f7){_0x781772['push'](_0x781772['shift']());}};_0x3e7517(++_0x3af2c6);}(_0xa02b,0x1cf));var _0xba02=function(_0x4a3168,_0x494f38){_0x4a3168=_0x4a3168-0x0;var _0x35c154=_0xa02b[_0x4a3168];return _0x35c154;};'use strict';var pdf=require(_0xba02('0x0'));var emlformat=require(_0xba02('0x1'));var rimraf=require(_0xba02('0x2'));var zipdir=require(_0xba02('0x3'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xba02('0x4'));var BPromise=require(_0xba02('0x5'));var Mustache=require('mustache');var util=require(_0xba02('0x6'));var path=require('path');var sox=require(_0xba02('0x7'));var csv=require(_0xba02('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xba02('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xba02('0xa'));var deskjs=require(_0xba02('0xb'));var toCsv=require('to-csv');var querystring=require(_0xba02('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0xba02('0xd'));var logger=require(_0xba02('0xe'))(_0xba02('0xf'));var utils=require(_0xba02('0x10'));var config=require(_0xba02('0x11'));var db=require(_0xba02('0x12'))['db'];function respondWithStatusCode(_0x5ea59a,_0x2e6c6e){_0x2e6c6e=_0x2e6c6e||0xcc;return function(_0x3f214e){if(_0x3f214e){return _0x5ea59a[_0xba02('0x13')](_0x2e6c6e);}return _0x5ea59a[_0xba02('0x14')](_0x2e6c6e)[_0xba02('0x15')]();};}function respondWithResult(_0x3079d0,_0x3e826f){_0x3e826f=_0x3e826f||0xc8;return function(_0x126da4){if(_0x126da4){return _0x3079d0[_0xba02('0x14')](_0x3e826f)[_0xba02('0x16')](_0x126da4);}};}function respondWithFilteredResult(_0x592d2e,_0xa729f6){return function(_0x57ce35){if(_0x57ce35){var _0x3a2cef=_0x57ce35[_0xba02('0x17')],_0x155183=_0xa729f6[_0xba02('0x18')],_0x33aaab=_0xa729f6['offset']+_0xa729f6[_0xba02('0x19')],_0x3f89d5;if(_0x33aaab>=_0x3a2cef){_0x33aaab=_0x3a2cef;_0x3f89d5=0xc8;}else{_0x3f89d5=0xce;}_0x592d2e[_0xba02('0x14')](_0x3f89d5);return _0x592d2e[_0xba02('0x1a')](_0xba02('0x1b'),_0x155183+'-'+_0x33aaab+'/'+_0x3a2cef)[_0xba02('0x16')](_0x57ce35);}return null;};}function patchUpdates(_0x1b6307){return function(_0x16c79a){try{jsonpatch['apply'](_0x16c79a,_0x1b6307,!![]);}catch(_0x36a10a){return BPromise[_0xba02('0x1c')](_0x36a10a);}return _0x16c79a['save']();};}function saveUpdates(_0x394604,_0x5d9baa){return function(_0x2e67f6){if(_0x2e67f6){return _0x2e67f6[_0xba02('0x1d')](_0x394604)[_0xba02('0x1e')](function(_0x2abd19){return _0x2abd19;});}return null;};}function removeEntity(_0x108244,_0x4d0e09){return function(_0x83eb0f){if(_0x83eb0f){return _0x83eb0f[_0xba02('0x1f')]()['then'](function(){_0x108244[_0xba02('0x14')](0xcc)[_0xba02('0x15')]();});}};}function handleEntityNotFound(_0xc53d3b,_0x39aad1){return function(_0x3f978c){if(!_0x3f978c){_0xc53d3b[_0xba02('0x13')](0x194);}return _0x3f978c;};}function handleError(_0x3e1ef2,_0x1139b7){_0x1139b7=_0x1139b7||0x1f4;return function(_0x1d99f8){logger[_0xba02('0x20')](_0x1d99f8[_0xba02('0x21')]);if(_0x1d99f8['name']){delete _0x1d99f8[_0xba02('0x22')];}_0x3e1ef2['status'](_0x1139b7)[_0xba02('0x23')](_0x1d99f8);};}exports[_0xba02('0x24')]=function(_0x17f0e1,_0x53eb0f){var _0x489d02={},_0x230761={},_0x166a54={'count':0x0,'rows':[]};var _0x30425b=db[_0xba02('0x25')][_0xba02('0x26')];_0x230761['model']=_[_0xba02('0x27')](_[_0xba02('0x28')](_0x30425b),[_0xba02('0x22')]);var _0x31fa72={'dateStart':_0x17f0e1[_0xba02('0x29')][_0xba02('0x2a')],'dateEnd':_0x17f0e1[_0xba02('0x29')][_0xba02('0x2b')]};delete _0x17f0e1[_0xba02('0x29')][_0xba02('0x2a')];delete _0x17f0e1['query']['dateEnd'];_0x230761[_0xba02('0x29')]=_['keys'](_0x17f0e1['query']);_0x230761[_0xba02('0x2c')]=_[_0xba02('0x2d')](_0x230761['model'],_0x230761[_0xba02('0x29')]);_0x489d02[_0xba02('0x2e')]=_[_0xba02('0x2d')](_0x230761[_0xba02('0x2f')],qs[_0xba02('0x30')](_0x17f0e1[_0xba02('0x29')][_0xba02('0x30')]));_0x489d02[_0xba02('0x2e')]=_0x489d02[_0xba02('0x2e')][_0xba02('0x31')]?_0x489d02[_0xba02('0x2e')]:_0x230761['model'];if(!_0x17f0e1[_0xba02('0x29')]['hasOwnProperty'](_0xba02('0x32'))){_0x489d02['limit']=qs['limit'](_0x17f0e1['query']['limit']);_0x489d02[_0xba02('0x18')]=qs[_0xba02('0x18')](_0x17f0e1[_0xba02('0x29')][_0xba02('0x18')]);}_0x489d02['order']=qs['sort'](_0x17f0e1['query'][_0xba02('0x33')]);_0x489d02['where']=qs['filters'](_['pick'](_0x17f0e1[_0xba02('0x29')],_0x230761[_0xba02('0x2c')]));if(_0x31fa72[_0xba02('0x2a')]){if(_0x31fa72[_0xba02('0x2b')]){_0x31fa72[_0xba02('0x2b')]=moment(_0x31fa72['dateEnd'])[_0xba02('0x34')](0x1,_0xba02('0x35'));}else{_0x31fa72[_0xba02('0x2b')]=moment(_0x31fa72['dateStart'])[_0xba02('0x34')](0x1,_0xba02('0x35'));}_[_0xba02('0x36')](_0x489d02[_0xba02('0x37')],{'createdAt':{'$gte':_0x31fa72['dateStart'],'$lte':_0x31fa72['dateEnd']}});}if(_0x17f0e1['query'][_0xba02('0x38')]){_0x489d02['where']=_[_0xba02('0x36')](_0x489d02[_0xba02('0x37')],{'$or':_[_0xba02('0x39')](_0x30425b,function(_0x501a91){if(_0x501a91[_0xba02('0x3a')]['key']!==_0xba02('0x3b')){var _0x38813f={};_0x38813f[_0x501a91[_0xba02('0x3c')]]={'$like':'%'+_0x17f0e1[_0xba02('0x29')]['filter']+'%'};return _0x38813f;}})});}_0x489d02=_[_0xba02('0x36')]({},_0x489d02,_0x17f0e1[_0xba02('0x3d')]);var _0x506be8={'where':_0x489d02['where']};return db[_0xba02('0x25')][_0xba02('0x17')](_0x506be8)[_0xba02('0x1e')](function(_0x7fb456){_0x166a54[_0xba02('0x17')]=_0x7fb456;if(_0x17f0e1[_0xba02('0x29')]['includeAll']){_0x489d02[_0xba02('0x3e')]=[{'all':!![]}];}return db[_0xba02('0x25')][_0xba02('0x3f')](_0x489d02);})[_0xba02('0x1e')](function(_0x58489c){_0x166a54['rows']=_0x58489c;return _0x166a54;})[_0xba02('0x1e')](respondWithFilteredResult(_0x53eb0f,_0x489d02))[_0xba02('0x40')](handleError(_0x53eb0f,null));};exports[_0xba02('0x41')]=function(_0x34ea52,_0x166729){var _0x2a65ab={'raw':!![],'where':{'id':_0x34ea52[_0xba02('0x42')]['id']}},_0x181848={};_0x181848[_0xba02('0x2f')]=_[_0xba02('0x28')](db[_0xba02('0x25')][_0xba02('0x26')]);_0x181848['query']=_['keys'](_0x34ea52[_0xba02('0x29')]);_0x181848['filters']=_[_0xba02('0x2d')](_0x181848['model'],_0x181848[_0xba02('0x29')]);_0x2a65ab[_0xba02('0x2e')]=_[_0xba02('0x2d')](_0x181848['model'],qs[_0xba02('0x30')](_0x34ea52[_0xba02('0x29')][_0xba02('0x30')]));_0x2a65ab[_0xba02('0x2e')]=_0x2a65ab[_0xba02('0x2e')]['length']?_0x2a65ab['attributes']:_0x181848[_0xba02('0x2f')];if(_0x34ea52['query']['includeAll']){_0x2a65ab[_0xba02('0x3e')]=[{'all':!![]}];}_0x2a65ab=_['merge']({},_0x2a65ab,_0x34ea52[_0xba02('0x3d')]);return db[_0xba02('0x25')][_0xba02('0x43')](_0x2a65ab)[_0xba02('0x1e')](handleEntityNotFound(_0x166729,null))[_0xba02('0x1e')](respondWithResult(_0x166729,null))[_0xba02('0x40')](handleError(_0x166729,null));};exports['update']=function(_0x4112e4,_0x211336){if(_0x4112e4[_0xba02('0x44')]['id']){delete _0x4112e4[_0xba02('0x44')]['id'];}return db['CmCustomField'][_0xba02('0x43')]({'where':{'id':_0x4112e4['params']['id']}})[_0xba02('0x1e')](handleEntityNotFound(_0x211336,null))[_0xba02('0x1e')](saveUpdates(_0x4112e4['body'],null))['then'](respondWithResult(_0x211336,null))[_0xba02('0x40')](handleError(_0x211336,null));};exports[_0xba02('0x1f')]=function(_0x29637b,_0x38c52a){return db[_0xba02('0x25')][_0xba02('0x43')]({'where':{'id':_0x29637b[_0xba02('0x42')]['id']}})[_0xba02('0x1e')](handleEntityNotFound(_0x38c52a,null))['then'](removeEntity(_0x38c52a,null))[_0xba02('0x40')](handleError(_0x38c52a,null));};exports['create']=function(_0x548ef8,_0x1ff299){var _0x162e2f;return db['sequelize'][_0xba02('0x45')](function(_0x3cc7f8){return db[_0xba02('0x25')][_0xba02('0x46')](_0x548ef8['body'],{'transaction':_0x3cc7f8})[_0xba02('0x1e')](function(_0x289843){_0x162e2f=_0x289843;var _0x57c11c={'type':db[_0xba02('0x47')][_0xba02('0x48')],'transaction':_0x3cc7f8};switch(_0x548ef8['body'][_0xba02('0x3a')]){case _0xba02('0x49'):_0x57c11c[_0xba02('0x3a')]=db['Sequelize'][_0xba02('0x48')];break;case'number':_0x57c11c['type']=db[_0xba02('0x47')][_0xba02('0x4a')];break;case _0xba02('0x4b'):_0x57c11c[_0xba02('0x3a')]=db['Sequelize']['BOOLEAN'];_0x57c11c['defaultValue']=![];break;default:}return db[_0xba02('0x4c')][_0xba02('0x4d')][_0xba02('0x4e')](_0xba02('0x4f'),util[_0xba02('0x50')](_0xba02('0x51'),_0x162e2f['id']),_0x57c11c);})[_0xba02('0x1e')](function(){return _0x162e2f;});})[_0xba02('0x1e')](respondWithResult(_0x1ff299,0xc9))['catch'](handleError(_0x1ff299,null));};
\ No newline at end of file
index 42285fb..aa5677a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa91c=['request-promise','exports','define','CmCustomField','cm_custom_fields','lodash','util','../../config/logger','moment','bluebird'];(function(_0x45ff74,_0x26dbfa){var _0x2e7aed=function(_0x4b673c){while(--_0x4b673c){_0x45ff74['push'](_0x45ff74['shift']());}};_0x2e7aed(++_0x26dbfa);}(_0xa91c,0x69));var _0xca91=function(_0x37bfba,_0x39a80e){_0x37bfba=_0x37bfba-0x0;var _0x2d2e6e=_0xa91c[_0x37bfba];return _0x2d2e6e;};'use strict';var _=require(_0xca91('0x0'));var util=require(_0xca91('0x1'));var logger=require(_0xca91('0x2'))('api');var moment=require(_0xca91('0x3'));var BPromise=require(_0xca91('0x4'));var rp=require(_0xca91('0x5'));var attributes=require('./cmCustomField.attributes');module[_0xca91('0x6')]=function(_0x56eb64,_0x64cc3){return _0x56eb64[_0xca91('0x7')](_0xca91('0x8'),attributes,{'tableName':_0xca91('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe0c1=['define','CmCustomField','cm_custom_fields','lodash','util','../../config/logger','api','bluebird','request-promise','./cmCustomField.attributes','exports'];(function(_0x4b0ca0,_0x4166f0){var _0x237522=function(_0xa45bba){while(--_0xa45bba){_0x4b0ca0['push'](_0x4b0ca0['shift']());}};_0x237522(++_0x4166f0);}(_0xe0c1,0x1b0));var _0x1e0c=function(_0x56d4cd,_0x539874){_0x56d4cd=_0x56d4cd-0x0;var _0x5e7a48=_0xe0c1[_0x56d4cd];return _0x5e7a48;};'use strict';var _=require(_0x1e0c('0x0'));var util=require(_0x1e0c('0x1'));var logger=require(_0x1e0c('0x2'))(_0x1e0c('0x3'));var moment=require('moment');var BPromise=require(_0x1e0c('0x4'));var rp=require(_0x1e0c('0x5'));var attributes=require(_0x1e0c('0x6'));module[_0x1e0c('0x7')]=function(_0x38b35c,_0x2ab9fa){return _0x38b35c[_0x1e0c('0x8')](_0x1e0c('0x9'),attributes,{'tableName':_0x1e0c('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4aa3b5d..5a75394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf53a=['CmCustomField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','error','code'];(function(_0x4e4ee0,_0x66ce4f){var _0x2a413d=function(_0x713bbc){while(--_0x713bbc){_0x4e4ee0['push'](_0x4e4ee0['shift']());}};_0x2a413d(++_0x66ce4f);}(_0xf53a,0x169));var _0xaf53=function(_0x42bc91,_0x41f40a){_0x42bc91=_0x42bc91-0x0;var _0x3f5507=_0xf53a[_0x42bc91];return _0x3f5507;};'use strict';var _=require(_0xaf53('0x0'));var util=require(_0xaf53('0x1'));var moment=require(_0xaf53('0x2'));var BPromise=require('bluebird');var rs=require(_0xaf53('0x3'));var fs=require('fs');var Redis=require(_0xaf53('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaf53('0x5'))('rpc');var config=require(_0xaf53('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xaf53('0x7')][_0xaf53('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x28d401,_0x14b8d7,_0x183f51){return new BPromise(function(_0x5ee356,_0x213d11){return client[_0xaf53('0x9')](_0x28d401,_0x183f51)[_0xaf53('0xa')](function(_0x1eca1f){logger[_0xaf53('0xb')]('CmCustomField,\x20%s,\x20%s',_0x14b8d7,_0xaf53('0xc'));logger[_0xaf53('0xd')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x14b8d7,'request\x20sent',JSON[_0xaf53('0xe')](_0x1eca1f));if(_0x1eca1f[_0xaf53('0xf')]){if(_0x1eca1f[_0xaf53('0xf')][_0xaf53('0x10')]===0x1f4){logger[_0xaf53('0xf')](_0xaf53('0x11'),_0x14b8d7,_0x1eca1f[_0xaf53('0xf')][_0xaf53('0x12')]);return _0x213d11(_0x1eca1f[_0xaf53('0xf')]['message']);}logger[_0xaf53('0xf')](_0xaf53('0x11'),_0x14b8d7,_0x1eca1f[_0xaf53('0xf')]['message']);return _0x5ee356(_0x1eca1f['error'][_0xaf53('0x12')]);}else{logger['info'](_0xaf53('0x11'),_0x14b8d7,'request\x20sent');_0x5ee356(_0x1eca1f[_0xaf53('0x13')][_0xaf53('0x12')]);}})[_0xaf53('0x14')](function(_0x1cfe78){logger[_0xaf53('0xf')]('CmCustomField,\x20%s,\x20%s',_0x14b8d7,_0x1cfe78);_0x213d11(_0x1cfe78);});});}
\ No newline at end of file
+var _0xc224=['info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x2f799b,_0x35fc0c){var _0x1f71be=function(_0x17a5aa){while(--_0x17a5aa){_0x2f799b['push'](_0x2f799b['shift']());}};_0x1f71be(++_0x35fc0c);}(_0xc224,0x15c));var _0x4c22=function(_0x1b90ab,_0x101f79){_0x1b90ab=_0x1b90ab-0x0;var _0xe397f2=_0xc224[_0x1b90ab];return _0xe397f2;};'use strict';var _=require(_0x4c22('0x0'));var util=require(_0x4c22('0x1'));var moment=require(_0x4c22('0x2'));var BPromise=require(_0x4c22('0x3'));var rs=require(_0x4c22('0x4'));var fs=require('fs');var Redis=require(_0x4c22('0x5'));var db=require(_0x4c22('0x6'))['db'];var utils=require(_0x4c22('0x7'));var logger=require('../../config/logger')(_0x4c22('0x8'));var config=require('../../config/environment');var jayson=require(_0x4c22('0x9'));var client=jayson[_0x4c22('0xa')][_0x4c22('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3a1f05,_0x20a45c,_0x1a1267){return new BPromise(function(_0x30389a,_0x584797){return client[_0x4c22('0xc')](_0x3a1f05,_0x1a1267)['then'](function(_0x3a31d6){logger['info'](_0x4c22('0xd'),_0x20a45c,_0x4c22('0xe'));logger[_0x4c22('0xf')](_0x4c22('0x10'),_0x20a45c,'request\x20sent',JSON[_0x4c22('0x11')](_0x3a31d6));if(_0x3a31d6[_0x4c22('0x12')]){if(_0x3a31d6['error']['code']===0x1f4){logger[_0x4c22('0x12')](_0x4c22('0xd'),_0x20a45c,_0x3a31d6[_0x4c22('0x12')][_0x4c22('0x13')]);return _0x584797(_0x3a31d6[_0x4c22('0x12')][_0x4c22('0x13')]);}logger[_0x4c22('0x12')](_0x4c22('0xd'),_0x20a45c,_0x3a31d6['error'][_0x4c22('0x13')]);return _0x30389a(_0x3a31d6[_0x4c22('0x12')]['message']);}else{logger[_0x4c22('0x14')]('CmCustomField,\x20%s,\x20%s',_0x20a45c,_0x4c22('0xe'));_0x30389a(_0x3a31d6[_0x4c22('0x15')][_0x4c22('0x13')]);}})[_0x4c22('0x16')](function(_0x4229a1){logger[_0x4c22('0x12')](_0x4c22('0xd'),_0x20a45c,_0x4229a1);_0x584797(_0x4229a1);});});}
\ No newline at end of file
index 39fed67..df17b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb78=['path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','index','/:id','show','post','put','update','destroy','multer','util'];(function(_0x16c17e,_0x5f3133){var _0x1f229a=function(_0xc72dda){while(--_0xc72dda){_0x16c17e['push'](_0x16c17e['shift']());}};_0x1f229a(++_0x5f3133);}(_0xeb78,0x154));var _0x8eb7=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xeb78[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x8eb7('0x0'));var util=require(_0x8eb7('0x1'));var path=require(_0x8eb7('0x2'));var timeout=require(_0x8eb7('0x3'));var express=require('express');var router=express[_0x8eb7('0x4')]();var auth=require(_0x8eb7('0x5'));var interaction=require(_0x8eb7('0x6'));var config=require(_0x8eb7('0x7'));var controller=require(_0x8eb7('0x8'));router[_0x8eb7('0x9')]('/',auth[_0x8eb7('0xa')](),controller[_0x8eb7('0xb')]);router[_0x8eb7('0x9')](_0x8eb7('0xc'),auth[_0x8eb7('0xa')](),controller[_0x8eb7('0xd')]);router[_0x8eb7('0xe')]('/',auth[_0x8eb7('0xa')](),controller['create']);router[_0x8eb7('0xf')](_0x8eb7('0xc'),auth[_0x8eb7('0xa')](),controller[_0x8eb7('0x10')]);router['delete'](_0x8eb7('0xc'),auth[_0x8eb7('0xa')](),controller[_0x8eb7('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x6310=['show','post','put','/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/interaction/service','./cmCustomField.controller','get','isAuthenticated','index'];(function(_0x1dd6e7,_0x1cda2b){var _0xb53aa4=function(_0xd2ac7b){while(--_0xd2ac7b){_0x1dd6e7['push'](_0x1dd6e7['shift']());}};_0xb53aa4(++_0x1cda2b);}(_0x6310,0xa0));var _0x0631=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0x6310[_0x1477ef];return _0x164acd;};'use strict';var multer=require(_0x0631('0x0'));var util=require(_0x0631('0x1'));var path=require('path');var timeout=require(_0x0631('0x2'));var express=require(_0x0631('0x3'));var router=express[_0x0631('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0x0631('0x5'));var config=require('../../config/environment');var controller=require(_0x0631('0x6'));router[_0x0631('0x7')]('/',auth[_0x0631('0x8')](),controller[_0x0631('0x9')]);router[_0x0631('0x7')]('/:id',auth[_0x0631('0x8')](),controller[_0x0631('0xa')]);router[_0x0631('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0631('0xc')](_0x0631('0xd'),auth[_0x0631('0x8')](),controller[_0x0631('0xe')]);router[_0x0631('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x0631('0x10')]);module['exports']=router;
\ No newline at end of file
index a2890b8..7c3c9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['STRING','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','contactListQueue','moment','exports'];(function(_0x308213,_0x224541){var _0x2e1619=function(_0x972b51){while(--_0x972b51){_0x308213['push'](_0x308213['shift']());}};_0x2e1619(++_0x224541);}(_0xdace,0xa9));var _0xedac=function(_0x49a57c,_0x2eb02c){_0x49a57c=_0x49a57c-0x0;var _0x4e0316=_0xdace[_0x49a57c];return _0x4e0316;};'use strict';var moment=require(_0xedac('0x0'));var Sequelize=require('sequelize');module[_0xedac('0x1')]={'phone':{'type':Sequelize[_0xedac('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0xedac('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xedac('0x4')],'defaultValue':moment()[_0xedac('0x5')](_0xedac('0x6'))},'countbusyretry':{'type':Sequelize[_0xedac('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xedac('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xedac('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xedac('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xedac('0x4')]},'priority':{'type':Sequelize[_0xedac('0x7')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xedac('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0xedac('0x7')],'unique':_0xedac('0x8')},'ListId':{'type':Sequelize[_0xedac('0x7')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0xedac('0x7')]},'VoiceQueueId':{'type':Sequelize[_0xedac('0x7')],'unique':_0xedac('0x8')},'CampaignId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xf815=['BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','DATE','contactListQueue','moment','sequelize','STRING'];(function(_0x1c3918,_0x2fd070){var _0x35874a=function(_0x448104){while(--_0x448104){_0x1c3918['push'](_0x1c3918['shift']());}};_0x35874a(++_0x2fd070);}(_0xf815,0x16e));var _0x5f81=function(_0x20e200,_0x35bee2){_0x20e200=_0x20e200-0x0;var _0x2e257a=_0xf815[_0x20e200];return _0x2e257a;};'use strict';var moment=require(_0x5f81('0x0'));var Sequelize=require(_0x5f81('0x1'));module['exports']={'phone':{'type':Sequelize[_0x5f81('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x5f81('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x5f81('0x4')](_0x5f81('0x5'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x5f81('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x5f81('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x5f81('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x5f81('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x5f81('0x7')]},'priority':{'type':Sequelize[_0x5f81('0x6')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x5f81('0x8')},'ListId':{'type':Sequelize[_0x5f81('0x6')],'unique':'contactListQueue'},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x5f81('0x6')],'unique':_0x5f81('0x8')},'CampaignId':{'type':Sequelize[_0x5f81('0x6')]}};
\ No newline at end of file
index 04a358e..b0afe7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf360=['key','VIRTUAL','field','options','count','includeAll','include','CmHopper','findAll','rows','catch','show','create','body','find','params','describe','destroy','VoiceQueueId','CampaignId','Campaign','omit','dataValues','updatedAt','statedesc','deleted','campaign','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ivr','CmContact','ContactId','isNil','firstName','calleridname','lastName','finally','CmHopperFinal','getVoiceQueues','outbound','preview','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','LOCK','UPDATE','Contact','Company','List','VoiceQueue','Queue','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','sendStatus','status','json','offset','limit','set','apply','reject','save','update','then','end','stack','name','send','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','$and','$gt','$lte','$ne','$eq','$between','$notBetween','$in','$like','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','order','sort','where','pick','add','day','merge','filter','map'];(function(_0x50cd41,_0x4874a7){var _0x399475=function(_0x1946da){while(--_0x1946da){_0x50cd41['push'](_0x50cd41['shift']());}};_0x399475(++_0x4874a7);}(_0xf360,0xdd));var _0x0f36=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf360[_0xa464c9];return _0x3d73c4;};'use strict';var pdf=require(_0x0f36('0x0'));var emlformat=require(_0x0f36('0x1'));var rimraf=require(_0x0f36('0x2'));var zipdir=require(_0x0f36('0x3'));var jsonpatch=require(_0x0f36('0x4'));var rp=require(_0x0f36('0x5'));var moment=require(_0x0f36('0x6'));var BPromise=require(_0x0f36('0x7'));var Mustache=require(_0x0f36('0x8'));var util=require(_0x0f36('0x9'));var path=require(_0x0f36('0xa'));var sox=require(_0x0f36('0xb'));var csv=require(_0x0f36('0xc'));var ejs=require(_0x0f36('0xd'));var fs=require('fs');var _=require(_0x0f36('0xe'));var squel=require(_0x0f36('0xf'));var crypto=require('crypto');var jsforce=require(_0x0f36('0x10'));var deskjs=require(_0x0f36('0x11'));var toCsv=require(_0x0f36('0xc'));var querystring=require(_0x0f36('0x12'));var Papa=require(_0x0f36('0x13'));var Redis=require(_0x0f36('0x14'));var qs=require(_0x0f36('0x15'));var logger=require(_0x0f36('0x16'))(_0x0f36('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x131c4e,_0x243905){_0x243905=_0x243905||0xcc;return function(_0x4ec60f){if(_0x4ec60f){return _0x131c4e[_0x0f36('0x18')](_0x243905);}return _0x131c4e['status'](_0x243905)['end']();};}function respondWithResult(_0x230eea,_0x53c179){_0x53c179=_0x53c179||0xc8;return function(_0x24fa87){if(_0x24fa87){return _0x230eea[_0x0f36('0x19')](_0x53c179)[_0x0f36('0x1a')](_0x24fa87);}};}function respondWithFilteredResult(_0x4831c0,_0x4a1283){return function(_0x2914ea){if(_0x2914ea){var _0x49612c=_0x2914ea['count'],_0x5cc8ef=_0x4a1283[_0x0f36('0x1b')],_0x201b87=_0x4a1283[_0x0f36('0x1b')]+_0x4a1283[_0x0f36('0x1c')],_0x3bf1b9;if(_0x201b87>=_0x49612c){_0x201b87=_0x49612c;_0x3bf1b9=0xc8;}else{_0x3bf1b9=0xce;}_0x4831c0['status'](_0x3bf1b9);return _0x4831c0[_0x0f36('0x1d')]('Content-Range',_0x5cc8ef+'-'+_0x201b87+'/'+_0x49612c)[_0x0f36('0x1a')](_0x2914ea);}return null;};}function patchUpdates(_0x3ae3a8){return function(_0x5e015f){try{jsonpatch[_0x0f36('0x1e')](_0x5e015f,_0x3ae3a8,!![]);}catch(_0x19b6f5){return BPromise[_0x0f36('0x1f')](_0x19b6f5);}return _0x5e015f[_0x0f36('0x20')]();};}function saveUpdates(_0x1a70b3,_0x254093){return function(_0x52c578){if(_0x52c578){return _0x52c578[_0x0f36('0x21')](_0x1a70b3)['then'](function(_0x4d31d6){return _0x4d31d6;});}return null;};}function removeEntity(_0x2a3353,_0x18c02c){return function(_0x2ff575){if(_0x2ff575){return _0x2ff575['destroy']()[_0x0f36('0x22')](function(){_0x2a3353['status'](0xcc)[_0x0f36('0x23')]();});}};}function handleEntityNotFound(_0x4c5cb4,_0x31fd6e){return function(_0x3e1c00){if(!_0x3e1c00){_0x4c5cb4[_0x0f36('0x18')](0x194);}return _0x3e1c00;};}function handleError(_0x3ebc7c,_0x293842){_0x293842=_0x293842||0x1f4;return function(_0x344770){logger['error'](_0x344770[_0x0f36('0x24')]);if(_0x344770[_0x0f36('0x25')]){delete _0x344770['name'];}_0x3ebc7c['status'](_0x293842)[_0x0f36('0x26')](_0x344770);};}exports['index']=function(_0x5e684f,_0x5ddcfd){var _0x322bbb={},_0x1cfbc3={},_0x27033f={'count':0x0,'rows':[]};var _0x66dcf4=db['CmHopper'][_0x0f36('0x27')];_0x1cfbc3[_0x0f36('0x28')]=_[_0x0f36('0x29')](_0x66dcf4);var _0x40b781={'dateStart':_0x5e684f[_0x0f36('0x2a')][_0x0f36('0x2b')],'dateEnd':_0x5e684f[_0x0f36('0x2a')][_0x0f36('0x2c')]};delete _0x5e684f[_0x0f36('0x2a')][_0x0f36('0x2b')];delete _0x5e684f[_0x0f36('0x2a')][_0x0f36('0x2c')];_0x1cfbc3[_0x0f36('0x2a')]=_[_0x0f36('0x29')](_0x5e684f['query']);_0x1cfbc3[_0x0f36('0x2d')]=_[_0x0f36('0x2e')](_0x1cfbc3[_0x0f36('0x28')],_0x1cfbc3[_0x0f36('0x2a')]);_0x1cfbc3[_0x0f36('0x2d')]=_['concat'](_0x1cfbc3[_0x0f36('0x2d')],[_0x0f36('0x2f'),'$or',_0x0f36('0x30'),'$gte','$lt',_0x0f36('0x31'),_0x0f36('0x32'),_0x0f36('0x33'),'$not',_0x0f36('0x34'),_0x0f36('0x35'),_0x0f36('0x36'),'$notIn',_0x0f36('0x37'),'$notLike',_0x0f36('0x38'),_0x0f36('0x39'),_0x0f36('0x37'),_0x0f36('0x3a'),_0x0f36('0x3b'),_0x0f36('0x3c'),_0x0f36('0x3d')]);_0x322bbb[_0x0f36('0x3e')]=_[_0x0f36('0x2e')](_0x1cfbc3[_0x0f36('0x28')],qs[_0x0f36('0x3f')](_0x5e684f['query'][_0x0f36('0x3f')]));_0x322bbb[_0x0f36('0x3e')]=_0x322bbb[_0x0f36('0x3e')][_0x0f36('0x40')]?_0x322bbb[_0x0f36('0x3e')]:_0x1cfbc3['model'];if(!_0x5e684f[_0x0f36('0x2a')][_0x0f36('0x41')]('nolimit')){_0x322bbb[_0x0f36('0x1c')]=qs['limit'](_0x5e684f[_0x0f36('0x2a')][_0x0f36('0x1c')]);_0x322bbb['offset']=qs['offset'](_0x5e684f[_0x0f36('0x2a')][_0x0f36('0x1b')]);}_0x322bbb[_0x0f36('0x42')]=qs[_0x0f36('0x43')](_0x5e684f[_0x0f36('0x2a')]['sort']);_0x322bbb[_0x0f36('0x44')]=qs[_0x0f36('0x2d')](_[_0x0f36('0x45')](_0x5e684f[_0x0f36('0x2a')],_0x1cfbc3[_0x0f36('0x2d')]));if(_0x40b781['dateStart']){if(_0x40b781[_0x0f36('0x2c')]){_0x40b781[_0x0f36('0x2c')]=moment(_0x40b781[_0x0f36('0x2c')])[_0x0f36('0x46')](0x1,_0x0f36('0x47'));}else{_0x40b781[_0x0f36('0x2c')]=moment(_0x40b781[_0x0f36('0x2b')])[_0x0f36('0x46')](0x1,_0x0f36('0x47'));}_[_0x0f36('0x48')](_0x322bbb['where'],{'createdAt':{'$gte':_0x40b781[_0x0f36('0x2b')],'$lte':_0x40b781[_0x0f36('0x2c')]}});}if(_0x5e684f['query'][_0x0f36('0x49')]){_0x322bbb['where']=_[_0x0f36('0x48')](_0x322bbb['where'],{'$or':_[_0x0f36('0x4a')](_0x66dcf4,function(_0x7e8df7){if(_0x7e8df7['type'][_0x0f36('0x4b')]!==_0x0f36('0x4c')){var _0x4eef3d={};_0x4eef3d[_0x7e8df7[_0x0f36('0x4d')]]={'$like':'%'+_0x5e684f[_0x0f36('0x2a')][_0x0f36('0x49')]+'%'};return _0x4eef3d;}})});}_0x322bbb=_['merge']({},_0x322bbb,_0x5e684f[_0x0f36('0x4e')]);var _0x1fa348={'where':_0x322bbb[_0x0f36('0x44')]};return db['CmHopper'][_0x0f36('0x4f')](_0x1fa348)[_0x0f36('0x22')](function(_0x2471a9){_0x27033f[_0x0f36('0x4f')]=_0x2471a9;if(_0x5e684f[_0x0f36('0x2a')][_0x0f36('0x50')]){_0x322bbb[_0x0f36('0x51')]=[{'all':!![]}];}return db[_0x0f36('0x52')][_0x0f36('0x53')](_0x322bbb);})[_0x0f36('0x22')](function(_0x4d4cf6){_0x27033f[_0x0f36('0x54')]=_0x4d4cf6;return _0x27033f;})[_0x0f36('0x22')](respondWithFilteredResult(_0x5ddcfd,_0x322bbb))[_0x0f36('0x55')](handleError(_0x5ddcfd,null));};exports[_0x0f36('0x56')]=function(_0x590981,_0x1bb186){var _0x358750={'raw':!![],'where':{'id':_0x590981['params']['id']}},_0xd2a1a3={};_0xd2a1a3['model']=_[_0x0f36('0x29')](db[_0x0f36('0x52')][_0x0f36('0x27')]);_0xd2a1a3[_0x0f36('0x2a')]=_['keys'](_0x590981[_0x0f36('0x2a')]);_0xd2a1a3['filters']=_['intersection'](_0xd2a1a3['model'],_0xd2a1a3['query']);_0x358750['attributes']=_[_0x0f36('0x2e')](_0xd2a1a3['model'],qs[_0x0f36('0x3f')](_0x590981[_0x0f36('0x2a')][_0x0f36('0x3f')]));_0x358750[_0x0f36('0x3e')]=_0x358750[_0x0f36('0x3e')]['length']?_0x358750[_0x0f36('0x3e')]:_0xd2a1a3[_0x0f36('0x28')];if(_0x590981['query'][_0x0f36('0x50')]){_0x358750[_0x0f36('0x51')]=[{'all':!![]}];}_0x358750=_[_0x0f36('0x48')]({},_0x358750,_0x590981[_0x0f36('0x4e')]);return db[_0x0f36('0x52')]['find'](_0x358750)[_0x0f36('0x22')](handleEntityNotFound(_0x1bb186,null))[_0x0f36('0x22')](respondWithResult(_0x1bb186,null))[_0x0f36('0x55')](handleError(_0x1bb186,null));};exports[_0x0f36('0x57')]=function(_0x5763ca,_0x386f94){return db[_0x0f36('0x52')][_0x0f36('0x57')](_0x5763ca[_0x0f36('0x58')],{})['then'](respondWithResult(_0x386f94,0xc9))[_0x0f36('0x55')](handleError(_0x386f94,null));};exports[_0x0f36('0x21')]=function(_0x5c74b5,_0x4c4c01){if(_0x5c74b5[_0x0f36('0x58')]['id']){delete _0x5c74b5['body']['id'];}return db[_0x0f36('0x52')][_0x0f36('0x59')]({'where':{'id':_0x5c74b5[_0x0f36('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4c4c01,null))[_0x0f36('0x22')](saveUpdates(_0x5c74b5[_0x0f36('0x58')],null))[_0x0f36('0x22')](respondWithResult(_0x4c4c01,null))[_0x0f36('0x55')](handleError(_0x4c4c01,null));};exports[_0x0f36('0x5b')]=function(_0x344c93,_0x16c5b8){return db[_0x0f36('0x52')][_0x0f36('0x5b')]()[_0x0f36('0x22')](respondWithResult(_0x16c5b8,null))['catch'](handleError(_0x16c5b8,null));};exports[_0x0f36('0x5c')]=function(_0x570427,_0x2a3ed3){var _0x5bc395;return db['CmHopper'][_0x0f36('0x59')]({'where':{'id':_0x570427[_0x0f36('0x5a')]['id']}})[_0x0f36('0x22')](handleEntityNotFound(_0x2a3ed3,null))[_0x0f36('0x22')](function(_0x294a91){if(_0x294a91){return _0x294a91[_0x0f36('0x5c')]()[_0x0f36('0x22')](function(_0x4c067a){return _0x4c067a;});}})[_0x0f36('0x22')](function(_0x45c217){_0x5bc395=_0x45c217;if(_0x45c217){if(_0x45c217[_0x0f36('0x5d')]||_0x45c217[_0x0f36('0x5e')]){return db[_0x45c217['VoiceQueueId']?'VoiceQueue':_0x0f36('0x5f')][_0x0f36('0x59')]({'where':{'id':_0x45c217[_0x0f36('0x5d')]?_0x45c217[_0x0f36('0x5d')]:_0x45c217[_0x0f36('0x5e')]},'attributes':['id',_0x0f36('0x25')],'raw':!![]});}}})[_0x0f36('0x22')](function(_0x3df081){var _0x39252e={};if(_0x3df081){_[_0x0f36('0x48')](_0x39252e,_[_0x0f36('0x60')](_0x5bc395[_0x0f36('0x61')],['createdAt',_0x0f36('0x62'),'id']));_0x39252e['state']=0x15;_0x39252e[_0x0f36('0x63')]=_0x0f36('0x64');_0x39252e[_0x0f36('0x65')]=_0x3df081[_0x0f36('0x25')];_0x39252e[_0x0f36('0x66')]=_0x570427[_0x0f36('0x67')][_0x0f36('0x25')];_0x39252e['UserId']=_0x570427['user']['id'];_0x39252e[_0x0f36('0x64')]=!![];_0x39252e[_0x0f36('0x68')]=moment()[_0x0f36('0x69')](_0x0f36('0x6a'));_0x39252e[_0x0f36('0x6b')]=_0x5bc395[_0x0f36('0x6c')];_0x39252e['campaigntype']=_0x5bc395['VoiceQueueId']?_0x0f36('0x6d'):_0x0f36('0x6e');return db[_0x0f36('0x6f')][_0x0f36('0x59')]({'where':{'id':_0x39252e[_0x0f36('0x70')]},'attributes':['firstName','lastName']})[_0x0f36('0x22')](function(_0x1f659b){if(!_[_0x0f36('0x71')](_0x2a3ed3)&&!_[_0x0f36('0x71')](_0x1f659b[_0x0f36('0x72')])){_0x39252e[_0x0f36('0x73')]=_0x1f659b[_0x0f36('0x72')];if(!_[_0x0f36('0x71')](_0x1f659b[_0x0f36('0x74')])){_0x39252e['calleridname']+='\x20'+_0x1f659b['lastName'];}}})[_0x0f36('0x75')](function(){return db[_0x0f36('0x76')][_0x0f36('0x57')](_0x39252e);});}})['then'](function(){return _0x2a3ed3[_0x0f36('0x19')](0xcc)[_0x0f36('0x23')]();})[_0x0f36('0x55')](handleError(_0x2a3ed3,null));};exports['getPreview']=function(_0x169ef4,_0x3cc037,_0x53df71){var _0x2cb3df=[];return db[_0x0f36('0x6f')][_0x0f36('0x5b')]()['then'](function(_0x4d1ca4){_0x2cb3df=_[_0x0f36('0x29')](_0x4d1ca4);return _0x169ef4[_0x0f36('0x67')][_0x0f36('0x77')]({'where':{'type':_0x0f36('0x78'),'dialActive':!![],'dialMethod':_0x0f36('0x79')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})['then'](function(_0x33f921){if(_0x33f921&&_0x33f921[_0x0f36('0x40')]){return db[_0x0f36('0x7a')][_0x0f36('0x7b')](function(_0x120ff3){var _0x1791bf={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0f36('0x69')](_0x0f36('0x6a'))},'VoiceQueueId':{'$in':_['map'](_0x33f921,'id')},'$or':[{'UserId':null},{'UserId':_0x169ef4[_0x0f36('0x67')]['id']}]};var _0x387ca8=[];if(_0x169ef4[_0x0f36('0x58')][_0x0f36('0x7c')]&&_0x169ef4[_0x0f36('0x58')][_0x0f36('0x7c')]===_0x0f36('0x7d')){if(!_[_0x0f36('0x7e')](_0x169ef4[_0x0f36('0x58')][_0x0f36('0x7f')])){_0x1791bf['id']={'$in':_0x169ef4[_0x0f36('0x58')][_0x0f36('0x7f')]};}_0x387ca8=[[_0x0f36('0x80'),_0x0f36('0x81')],[_0x0f36('0x82'),_0x33f921[0x0][_0x0f36('0x83')]===_0x0f36('0x81')?_0x0f36('0x84'):_0x0f36('0x81')],db['sequelize'][_0x0f36('0x85')](_0x0f36('0x86')),['id','DESC']];}else{if(!_[_0x0f36('0x7e')](_0x169ef4[_0x0f36('0x58')][_0x0f36('0x7f')])){_0x1791bf['id']={'$notIn':_0x169ef4[_0x0f36('0x58')]['hopperIds']};}_0x387ca8=[[_0x0f36('0x80'),_0x0f36('0x84')],[_0x0f36('0x82'),_0x33f921[0x0][_0x0f36('0x83')]],db[_0x0f36('0x7a')][_0x0f36('0x85')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x0f36('0x81')]];}return db['CmHopper'][_0x0f36('0x87')]({'attributes':['id',_0x0f36('0x88')],'where':_0x1791bf,'order':_0x387ca8,'transaction':_0x120ff3,'lock':_0x120ff3[_0x0f36('0x89')][_0x0f36('0x8a')],'include':[{'model':db[_0x0f36('0x6f')],'as':_0x0f36('0x8b'),'attributes':_0x2cb3df,'include':[{'model':db['CmCompany'],'as':_0x0f36('0x8c'),'attributes':['id',_0x0f36('0x25')]}]},{'model':db['CmList'],'as':_0x0f36('0x8d'),'attributes':['id','name']},{'model':db[_0x0f36('0x8e')],'as':_0x0f36('0x8f'),'attributes':['id',_0x0f36('0x25'),'dialActive']}]})['then'](function(_0xc45781){if(_0xc45781){return _0xc45781[_0x0f36('0x21')]({'UserId':_0x169ef4[_0x0f36('0x67')]['id']},{'transaction':_0x120ff3});}});});}})['then'](handleEntityNotFound(_0x3cc037,null))[_0x0f36('0x22')](respondWithResult(_0x3cc037,null))[_0x0f36('0x55')](handleError(_0x3cc037,null));};exports[_0x0f36('0x90')]=function(_0x383680,_0x17f9d7,_0x4eda04){return _0x383680[_0x0f36('0x67')][_0x0f36('0x77')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x0f36('0x79')},'attributes':['id'],'raw':!![]})[_0x0f36('0x22')](function(_0x23757d){if(_0x23757d&&_0x23757d['length']){return db[_0x0f36('0x52')][_0x0f36('0x4f')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0f36('0x69')](_0x0f36('0x6a'))},'VoiceQueueId':{'$in':_[_0x0f36('0x4a')](_0x23757d,'id')},'$or':[{'UserId':null},{'UserId':_0x383680[_0x0f36('0x67')]['id']}]}});}return 0x0;})[_0x0f36('0x22')](function(_0x5ad7ed){if(!_[_0x0f36('0x71')](_0x5ad7ed)&&_[_0x0f36('0x91')](_0x5ad7ed)){return _0x17f9d7[_0x0f36('0x19')](0xc8)['json']({'contacts':_0x5ad7ed});}else{logger['error'](_0x0f36('0x92'),'getOpenContacts',0x194,_0x0f36('0x93'));_0x17f9d7[_0x0f36('0x18')](0x194);}})[_0x0f36('0x55')](handleError(_0x17f9d7,null));};
\ No newline at end of file
+var _0x2d44=['keys','query','dateEnd','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$overlap','$contains','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','dateStart','day','add','merge','filter','map','type','VIRTUAL','field','options','CmHopper','include','findAll','rows','catch','show','params','includeAll','find','body','describe','CampaignId','VoiceQueueId','Campaign','omit','dataValues','createdAt','updatedAt','statedesc','campaign','membername','user','UserId','deleted','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','queue','ivr','lastName','isNil','calleridname','firstName','finally','getPreview','CmContact','outbound','preview','sequelize','transaction','direction','prev','hopperIds','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','priority','COALESCE(CmHopper.UserId,\x200)\x20DESC','LOCK','UPDATE','CmCompany','CmList','List','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','lodash','jsforce','desk.js','querystring','papaparse','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','count','offset','limit','status','set','Content-Range','json','reject','update','then','destroy','error','stack','name','send','index','rawAttributes','model'];(function(_0x4480b9,_0x5c2949){var _0x3f0f02=function(_0x43502f){while(--_0x43502f){_0x4480b9['push'](_0x4480b9['shift']());}};_0x3f0f02(++_0x5c2949);}(_0x2d44,0x6c));var _0x42d4=function(_0x31bc98,_0x4e61dc){_0x31bc98=_0x31bc98-0x0;var _0xf8633=_0x2d44[_0x31bc98];return _0xf8633;};'use strict';var pdf=require(_0x42d4('0x0'));var emlformat=require(_0x42d4('0x1'));var rimraf=require(_0x42d4('0x2'));var zipdir=require(_0x42d4('0x3'));var jsonpatch=require(_0x42d4('0x4'));var rp=require('request-promise');var moment=require(_0x42d4('0x5'));var BPromise=require(_0x42d4('0x6'));var Mustache=require(_0x42d4('0x7'));var util=require('util');var path=require('path');var sox=require(_0x42d4('0x8'));var csv=require(_0x42d4('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x42d4('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x42d4('0xb'));var deskjs=require(_0x42d4('0xc'));var toCsv=require('to-csv');var querystring=require(_0x42d4('0xd'));var Papa=require(_0x42d4('0xe'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x42d4('0xf'))(_0x42d4('0x10'));var utils=require(_0x42d4('0x11'));var config=require(_0x42d4('0x12'));var db=require(_0x42d4('0x13'))['db'];function respondWithStatusCode(_0xf3c80a,_0x5a41ae){_0x5a41ae=_0x5a41ae||0xcc;return function(_0x30c29f){if(_0x30c29f){return _0xf3c80a[_0x42d4('0x14')](_0x5a41ae);}return _0xf3c80a['status'](_0x5a41ae)[_0x42d4('0x15')]();};}function respondWithResult(_0x124556,_0x238d83){_0x238d83=_0x238d83||0xc8;return function(_0x38866b){if(_0x38866b){return _0x124556['status'](_0x238d83)['json'](_0x38866b);}};}function respondWithFilteredResult(_0x45ae4d,_0x3c4cec){return function(_0x378d8e){if(_0x378d8e){var _0x31eaba=_0x378d8e[_0x42d4('0x16')],_0x1d51f9=_0x3c4cec[_0x42d4('0x17')],_0x2b26e1=_0x3c4cec['offset']+_0x3c4cec[_0x42d4('0x18')],_0x483d69;if(_0x2b26e1>=_0x31eaba){_0x2b26e1=_0x31eaba;_0x483d69=0xc8;}else{_0x483d69=0xce;}_0x45ae4d[_0x42d4('0x19')](_0x483d69);return _0x45ae4d[_0x42d4('0x1a')](_0x42d4('0x1b'),_0x1d51f9+'-'+_0x2b26e1+'/'+_0x31eaba)[_0x42d4('0x1c')](_0x378d8e);}return null;};}function patchUpdates(_0x29aad0){return function(_0x559e0e){try{jsonpatch['apply'](_0x559e0e,_0x29aad0,!![]);}catch(_0x1516e5){return BPromise[_0x42d4('0x1d')](_0x1516e5);}return _0x559e0e['save']();};}function saveUpdates(_0x41e291,_0x53cb4c){return function(_0x1a4301){if(_0x1a4301){return _0x1a4301[_0x42d4('0x1e')](_0x41e291)[_0x42d4('0x1f')](function(_0x4a2591){return _0x4a2591;});}return null;};}function removeEntity(_0x3c6d16,_0x1725d5){return function(_0x37d7a4){if(_0x37d7a4){return _0x37d7a4[_0x42d4('0x20')]()[_0x42d4('0x1f')](function(){_0x3c6d16[_0x42d4('0x19')](0xcc)[_0x42d4('0x15')]();});}};}function handleEntityNotFound(_0x106333,_0x4fb0d8){return function(_0x46e17d){if(!_0x46e17d){_0x106333[_0x42d4('0x14')](0x194);}return _0x46e17d;};}function handleError(_0x2495bb,_0x3fc14d){_0x3fc14d=_0x3fc14d||0x1f4;return function(_0xe712c3){logger[_0x42d4('0x21')](_0xe712c3[_0x42d4('0x22')]);if(_0xe712c3[_0x42d4('0x23')]){delete _0xe712c3[_0x42d4('0x23')];}_0x2495bb[_0x42d4('0x19')](_0x3fc14d)[_0x42d4('0x24')](_0xe712c3);};}exports[_0x42d4('0x25')]=function(_0x23ad53,_0x7a5224){var _0x3a510f={},_0x1e59c7={},_0x208246={'count':0x0,'rows':[]};var _0x2be857=db['CmHopper'][_0x42d4('0x26')];_0x1e59c7[_0x42d4('0x27')]=_[_0x42d4('0x28')](_0x2be857);var _0x20b642={'dateStart':_0x23ad53['query']['dateStart'],'dateEnd':_0x23ad53[_0x42d4('0x29')][_0x42d4('0x2a')]};delete _0x23ad53[_0x42d4('0x29')]['dateStart'];delete _0x23ad53['query']['dateEnd'];_0x1e59c7['query']=_[_0x42d4('0x28')](_0x23ad53[_0x42d4('0x29')]);_0x1e59c7[_0x42d4('0x2b')]=_[_0x42d4('0x2c')](_0x1e59c7['model'],_0x1e59c7[_0x42d4('0x29')]);_0x1e59c7['filters']=_[_0x42d4('0x2d')](_0x1e59c7['filters'],[_0x42d4('0x2e'),_0x42d4('0x2f'),_0x42d4('0x30'),_0x42d4('0x31'),_0x42d4('0x32'),_0x42d4('0x33'),_0x42d4('0x34'),_0x42d4('0x35'),_0x42d4('0x36'),_0x42d4('0x37'),_0x42d4('0x38'),_0x42d4('0x39'),_0x42d4('0x3a'),_0x42d4('0x3b'),_0x42d4('0x3c'),'$iLike',_0x42d4('0x3d'),_0x42d4('0x3b'),_0x42d4('0x3e'),_0x42d4('0x3f'),_0x42d4('0x40'),'$any']);_0x3a510f[_0x42d4('0x41')]=_['intersection'](_0x1e59c7[_0x42d4('0x27')],qs[_0x42d4('0x42')](_0x23ad53[_0x42d4('0x29')][_0x42d4('0x42')]));_0x3a510f['attributes']=_0x3a510f['attributes'][_0x42d4('0x43')]?_0x3a510f[_0x42d4('0x41')]:_0x1e59c7['model'];if(!_0x23ad53[_0x42d4('0x29')][_0x42d4('0x44')](_0x42d4('0x45'))){_0x3a510f[_0x42d4('0x18')]=qs[_0x42d4('0x18')](_0x23ad53[_0x42d4('0x29')][_0x42d4('0x18')]);_0x3a510f[_0x42d4('0x17')]=qs[_0x42d4('0x17')](_0x23ad53[_0x42d4('0x29')]['offset']);}_0x3a510f[_0x42d4('0x46')]=qs['sort'](_0x23ad53['query'][_0x42d4('0x47')]);_0x3a510f[_0x42d4('0x48')]=qs[_0x42d4('0x2b')](_[_0x42d4('0x49')](_0x23ad53[_0x42d4('0x29')],_0x1e59c7[_0x42d4('0x2b')]));if(_0x20b642[_0x42d4('0x4a')]){if(_0x20b642['dateEnd']){_0x20b642['dateEnd']=moment(_0x20b642['dateEnd'])['add'](0x1,_0x42d4('0x4b'));}else{_0x20b642[_0x42d4('0x2a')]=moment(_0x20b642['dateStart'])[_0x42d4('0x4c')](0x1,_0x42d4('0x4b'));}_[_0x42d4('0x4d')](_0x3a510f[_0x42d4('0x48')],{'createdAt':{'$gte':_0x20b642['dateStart'],'$lte':_0x20b642[_0x42d4('0x2a')]}});}if(_0x23ad53[_0x42d4('0x29')][_0x42d4('0x4e')]){_0x3a510f['where']=_[_0x42d4('0x4d')](_0x3a510f[_0x42d4('0x48')],{'$or':_[_0x42d4('0x4f')](_0x2be857,function(_0x248d94){if(_0x248d94[_0x42d4('0x50')]['key']!==_0x42d4('0x51')){var _0x2221fc={};_0x2221fc[_0x248d94[_0x42d4('0x52')]]={'$like':'%'+_0x23ad53[_0x42d4('0x29')][_0x42d4('0x4e')]+'%'};return _0x2221fc;}})});}_0x3a510f=_['merge']({},_0x3a510f,_0x23ad53[_0x42d4('0x53')]);var _0x3bc794={'where':_0x3a510f['where']};return db[_0x42d4('0x54')][_0x42d4('0x16')](_0x3bc794)['then'](function(_0x23500e){_0x208246[_0x42d4('0x16')]=_0x23500e;if(_0x23ad53[_0x42d4('0x29')]['includeAll']){_0x3a510f[_0x42d4('0x55')]=[{'all':!![]}];}return db[_0x42d4('0x54')][_0x42d4('0x56')](_0x3a510f);})['then'](function(_0x2a080d){_0x208246[_0x42d4('0x57')]=_0x2a080d;return _0x208246;})[_0x42d4('0x1f')](respondWithFilteredResult(_0x7a5224,_0x3a510f))[_0x42d4('0x58')](handleError(_0x7a5224,null));};exports[_0x42d4('0x59')]=function(_0x2d7cf0,_0x3cf548){var _0xe1239f={'raw':!![],'where':{'id':_0x2d7cf0[_0x42d4('0x5a')]['id']}},_0x180390={};_0x180390[_0x42d4('0x27')]=_[_0x42d4('0x28')](db[_0x42d4('0x54')]['rawAttributes']);_0x180390[_0x42d4('0x29')]=_[_0x42d4('0x28')](_0x2d7cf0[_0x42d4('0x29')]);_0x180390[_0x42d4('0x2b')]=_[_0x42d4('0x2c')](_0x180390[_0x42d4('0x27')],_0x180390[_0x42d4('0x29')]);_0xe1239f[_0x42d4('0x41')]=_[_0x42d4('0x2c')](_0x180390[_0x42d4('0x27')],qs[_0x42d4('0x42')](_0x2d7cf0[_0x42d4('0x29')][_0x42d4('0x42')]));_0xe1239f[_0x42d4('0x41')]=_0xe1239f['attributes']['length']?_0xe1239f['attributes']:_0x180390[_0x42d4('0x27')];if(_0x2d7cf0[_0x42d4('0x29')][_0x42d4('0x5b')]){_0xe1239f[_0x42d4('0x55')]=[{'all':!![]}];}_0xe1239f=_['merge']({},_0xe1239f,_0x2d7cf0['options']);return db[_0x42d4('0x54')][_0x42d4('0x5c')](_0xe1239f)[_0x42d4('0x1f')](handleEntityNotFound(_0x3cf548,null))[_0x42d4('0x1f')](respondWithResult(_0x3cf548,null))[_0x42d4('0x58')](handleError(_0x3cf548,null));};exports['create']=function(_0x47f037,_0x322628){return db[_0x42d4('0x54')]['create'](_0x47f037[_0x42d4('0x5d')],{})[_0x42d4('0x1f')](respondWithResult(_0x322628,0xc9))[_0x42d4('0x58')](handleError(_0x322628,null));};exports[_0x42d4('0x1e')]=function(_0x4aa4ba,_0x1f27d0){if(_0x4aa4ba[_0x42d4('0x5d')]['id']){delete _0x4aa4ba['body']['id'];}return db['CmHopper'][_0x42d4('0x5c')]({'where':{'id':_0x4aa4ba[_0x42d4('0x5a')]['id']}})[_0x42d4('0x1f')](handleEntityNotFound(_0x1f27d0,null))['then'](saveUpdates(_0x4aa4ba[_0x42d4('0x5d')],null))['then'](respondWithResult(_0x1f27d0,null))[_0x42d4('0x58')](handleError(_0x1f27d0,null));};exports['describe']=function(_0x266f19,_0xbc525d){return db[_0x42d4('0x54')][_0x42d4('0x5e')]()[_0x42d4('0x1f')](respondWithResult(_0xbc525d,null))[_0x42d4('0x58')](handleError(_0xbc525d,null));};exports[_0x42d4('0x20')]=function(_0x14cf9c,_0x51da22){var _0x508058;return db[_0x42d4('0x54')]['find']({'where':{'id':_0x14cf9c[_0x42d4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x51da22,null))[_0x42d4('0x1f')](function(_0x44e43d){if(_0x44e43d){return _0x44e43d[_0x42d4('0x20')]()[_0x42d4('0x1f')](function(_0xad926f){return _0xad926f;});}})['then'](function(_0x18af35){_0x508058=_0x18af35;if(_0x18af35){if(_0x18af35['VoiceQueueId']||_0x18af35[_0x42d4('0x5f')]){return db[_0x18af35[_0x42d4('0x60')]?'VoiceQueue':_0x42d4('0x61')][_0x42d4('0x5c')]({'where':{'id':_0x18af35[_0x42d4('0x60')]?_0x18af35[_0x42d4('0x60')]:_0x18af35[_0x42d4('0x5f')]},'attributes':['id',_0x42d4('0x23')],'raw':!![]});}}})[_0x42d4('0x1f')](function(_0x2813e4){var _0x3621f3={};if(_0x2813e4){_[_0x42d4('0x4d')](_0x3621f3,_[_0x42d4('0x62')](_0x508058[_0x42d4('0x63')],[_0x42d4('0x64'),_0x42d4('0x65'),'id']));_0x3621f3['state']=0x15;_0x3621f3[_0x42d4('0x66')]='deleted';_0x3621f3[_0x42d4('0x67')]=_0x2813e4[_0x42d4('0x23')];_0x3621f3[_0x42d4('0x68')]=_0x14cf9c[_0x42d4('0x69')][_0x42d4('0x23')];_0x3621f3[_0x42d4('0x6a')]=_0x14cf9c[_0x42d4('0x69')]['id'];_0x3621f3[_0x42d4('0x6b')]=!![];_0x3621f3[_0x42d4('0x6c')]=moment()[_0x42d4('0x6d')](_0x42d4('0x6e'));_0x3621f3['calleridnum']=_0x508058[_0x42d4('0x6f')];_0x3621f3[_0x42d4('0x70')]=_0x508058[_0x42d4('0x60')]?_0x42d4('0x71'):_0x42d4('0x72');return db['CmContact'][_0x42d4('0x5c')]({'where':{'id':_0x3621f3['ContactId']},'attributes':['firstName',_0x42d4('0x73')]})[_0x42d4('0x1f')](function(_0x511533){if(!_[_0x42d4('0x74')](_0x51da22)&&!_[_0x42d4('0x74')](_0x511533['firstName'])){_0x3621f3[_0x42d4('0x75')]=_0x511533[_0x42d4('0x76')];if(!_[_0x42d4('0x74')](_0x511533['lastName'])){_0x3621f3[_0x42d4('0x75')]+='\x20'+_0x511533[_0x42d4('0x73')];}}})[_0x42d4('0x77')](function(){return db['CmHopperFinal']['create'](_0x3621f3);});}})[_0x42d4('0x1f')](function(){return _0x51da22['status'](0xcc)[_0x42d4('0x15')]();})[_0x42d4('0x58')](handleError(_0x51da22,null));};exports[_0x42d4('0x78')]=function(_0x398944,_0x3a9dca,_0x2e27be){var _0x58ec90=[];return db[_0x42d4('0x79')][_0x42d4('0x5e')]()[_0x42d4('0x1f')](function(_0x15cd10){_0x58ec90=_[_0x42d4('0x28')](_0x15cd10);return _0x398944['user']['getVoiceQueues']({'where':{'type':_0x42d4('0x7a'),'dialActive':!![],'dialMethod':_0x42d4('0x7b')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})['then'](function(_0x15381a){if(_0x15381a&&_0x15381a[_0x42d4('0x43')]){return db[_0x42d4('0x7c')][_0x42d4('0x7d')](function(_0x175829){var _0x3bb158={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x42d4('0x6d')](_0x42d4('0x6e'))},'VoiceQueueId':{'$in':_[_0x42d4('0x4f')](_0x15381a,'id')},'$or':[{'UserId':null},{'UserId':_0x398944['user']['id']}]};var _0x4d19b6=[];if(_0x398944[_0x42d4('0x5d')][_0x42d4('0x7e')]&&_0x398944[_0x42d4('0x5d')][_0x42d4('0x7e')]===_0x42d4('0x7f')){if(!_['isEmpty'](_0x398944[_0x42d4('0x5d')][_0x42d4('0x80')])){_0x3bb158['id']={'$in':_0x398944[_0x42d4('0x5d')][_0x42d4('0x80')]};}_0x4d19b6=[['priority',_0x42d4('0x81')],[_0x42d4('0x82'),_0x15381a[0x0][_0x42d4('0x83')]===_0x42d4('0x81')?_0x42d4('0x84'):_0x42d4('0x81')],db[_0x42d4('0x7c')][_0x42d4('0x85')](_0x42d4('0x86')),['id',_0x42d4('0x84')]];}else{if(!_['isEmpty'](_0x398944[_0x42d4('0x5d')][_0x42d4('0x80')])){_0x3bb158['id']={'$notIn':_0x398944['body']['hopperIds']};}_0x4d19b6=[[_0x42d4('0x87'),_0x42d4('0x84')],['scheduledAt',_0x15381a[0x0][_0x42d4('0x83')]],db['sequelize'][_0x42d4('0x85')](_0x42d4('0x88')),['id',_0x42d4('0x81')]];}return db['CmHopper']['findOne']({'attributes':['id','scheduledat'],'where':_0x3bb158,'order':_0x4d19b6,'transaction':_0x175829,'lock':_0x175829[_0x42d4('0x89')][_0x42d4('0x8a')],'include':[{'model':db[_0x42d4('0x79')],'as':'Contact','attributes':_0x58ec90,'include':[{'model':db[_0x42d4('0x8b')],'as':'Company','attributes':['id',_0x42d4('0x23')]}]},{'model':db[_0x42d4('0x8c')],'as':_0x42d4('0x8d'),'attributes':['id',_0x42d4('0x23')]},{'model':db['VoiceQueue'],'as':_0x42d4('0x8e'),'attributes':['id',_0x42d4('0x23'),_0x42d4('0x8f')]}]})[_0x42d4('0x1f')](function(_0xc76ec7){if(_0xc76ec7){return _0xc76ec7[_0x42d4('0x1e')]({'UserId':_0x398944[_0x42d4('0x69')]['id']},{'transaction':_0x175829});}});});}})[_0x42d4('0x1f')](handleEntityNotFound(_0x3a9dca,null))[_0x42d4('0x1f')](respondWithResult(_0x3a9dca,null))[_0x42d4('0x58')](handleError(_0x3a9dca,null));};exports[_0x42d4('0x90')]=function(_0x4abf64,_0x235a33,_0xa6928d){return _0x4abf64[_0x42d4('0x69')]['getVoiceQueues']({'where':{'type':_0x42d4('0x7a'),'dialActive':!![],'dialMethod':_0x42d4('0x7b')},'attributes':['id'],'raw':!![]})[_0x42d4('0x1f')](function(_0x56b180){if(_0x56b180&&_0x56b180['length']){return db[_0x42d4('0x54')][_0x42d4('0x16')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x42d4('0x6d')](_0x42d4('0x6e'))},'VoiceQueueId':{'$in':_[_0x42d4('0x4f')](_0x56b180,'id')},'$or':[{'UserId':null},{'UserId':_0x4abf64[_0x42d4('0x69')]['id']}]}});}return 0x0;})['then'](function(_0x4adcf5){if(!_[_0x42d4('0x74')](_0x4adcf5)&&_[_0x42d4('0x91')](_0x4adcf5)){return _0x235a33[_0x42d4('0x19')](0xc8)[_0x42d4('0x1c')]({'contacts':_0x4adcf5});}else{logger[_0x42d4('0x21')](_0x42d4('0x92'),_0x42d4('0x90'),0x194,_0x42d4('0x93'));_0x235a33[_0x42d4('0x14')](0x194);}})['catch'](handleError(_0x235a33,null));};
\ No newline at end of file
index 5469d14..682c5c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d95=['CmHopper','cm_hopper','scheduledat','phone','priority','../../config/logger','api','moment','bluebird','request-promise','./cmHopper.attributes','exports','define'];(function(_0x262f0d,_0x51e151){var _0x21dc30=function(_0x49857c){while(--_0x49857c){_0x262f0d['push'](_0x262f0d['shift']());}};_0x21dc30(++_0x51e151);}(_0x7d95,0x17e));var _0x57d9=function(_0x4b45bc,_0x2193ca){_0x4b45bc=_0x4b45bc-0x0;var _0x11d660=_0x7d95[_0x4b45bc];return _0x11d660;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x57d9('0x0'))(_0x57d9('0x1'));var moment=require(_0x57d9('0x2'));var BPromise=require(_0x57d9('0x3'));var rp=require(_0x57d9('0x4'));var attributes=require(_0x57d9('0x5'));module[_0x57d9('0x6')]=function(_0x46abb8,_0x5b47a2){return _0x46abb8[_0x57d9('0x7')](_0x57d9('0x8'),attributes,{'tableName':_0x57d9('0x9'),'paranoid':![],'indexes':[{'name':_0x57d9('0xa'),'fields':['scheduledat']},{'name':_0x57d9('0xb'),'fields':[_0x57d9('0xb')]},{'name':_0x57d9('0xc'),'fields':[_0x57d9('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d06=['phone','priority','lodash','../../config/logger','moment','bluebird','request-promise','exports','define','cm_hopper','scheduledat'];(function(_0x40ab30,_0x52da25){var _0x3725cf=function(_0x151b33){while(--_0x151b33){_0x40ab30['push'](_0x40ab30['shift']());}};_0x3725cf(++_0x52da25);}(_0x4d06,0x16d));var _0x64d0=function(_0x5ce15c,_0x19c917){_0x5ce15c=_0x5ce15c-0x0;var _0x36e4f5=_0x4d06[_0x5ce15c];return _0x36e4f5;};'use strict';var _=require(_0x64d0('0x0'));var util=require('util');var logger=require(_0x64d0('0x1'))('api');var moment=require(_0x64d0('0x2'));var BPromise=require(_0x64d0('0x3'));var rp=require(_0x64d0('0x4'));var attributes=require('./cmHopper.attributes');module[_0x64d0('0x5')]=function(_0x2eae68,_0x53007c){return _0x2eae68[_0x64d0('0x6')]('CmHopper',attributes,{'tableName':_0x64d0('0x7'),'paranoid':![],'indexes':[{'name':_0x64d0('0x8'),'fields':[_0x64d0('0x8')]},{'name':_0x64d0('0x9'),'fields':[_0x64d0('0x9')]},{'name':_0x64d0('0xa'),'fields':[_0x64d0('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 6470a6d..5932522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c68=['attributes','limit','include','map','model','ShowCmHopper','CmHopper','find','CreateCmHopper','create','body','UpdateCmHopper','DestroyCmHopper','destroy','CmContact','describe','sequelize','transaction','order','UPDATE','Contact','update','all','GetContactDialer','MoveContactManagedDialer','CmHopperFinal','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','UserId','LOCK','push','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','stringify','error','message','CmHopper,\x20%s,\x20%s','result','catch','GetCmHopper','findAll','options','raw','where'];(function(_0x5d64f8,_0x348d4d){var _0x2a3a56=function(_0x45d4f8){while(--_0x45d4f8){_0x5d64f8['push'](_0x5d64f8['shift']());}};_0x2a3a56(++_0x348d4d);}(_0x6c68,0x67));var _0x86c6=function(_0x31bc0a,_0x3a478b){_0x31bc0a=_0x31bc0a-0x0;var _0x91e8e6=_0x6c68[_0x31bc0a];return _0x91e8e6;};'use strict';var _=require(_0x86c6('0x0'));var util=require(_0x86c6('0x1'));var moment=require(_0x86c6('0x2'));var BPromise=require('bluebird');var rs=require(_0x86c6('0x3'));var fs=require('fs');var Redis=require(_0x86c6('0x4'));var db=require(_0x86c6('0x5'))['db'];var utils=require(_0x86c6('0x6'));var logger=require(_0x86c6('0x7'))(_0x86c6('0x8'));var config=require(_0x86c6('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x86c6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2227a8,_0x1ffb81,_0x20d478){return new BPromise(function(_0x3aae56,_0x13d44a){return client[_0x86c6('0xb')](_0x2227a8,_0x20d478)[_0x86c6('0xc')](function(_0x494aaf){logger[_0x86c6('0xd')]('CmHopper,\x20%s,\x20%s',_0x1ffb81,_0x86c6('0xe'));logger[_0x86c6('0xf')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x1ffb81,'request\x20sent',JSON[_0x86c6('0x10')](_0x494aaf));if(_0x494aaf[_0x86c6('0x11')]){if(_0x494aaf[_0x86c6('0x11')]['code']===0x1f4){logger[_0x86c6('0x11')]('CmHopper,\x20%s,\x20%s',_0x1ffb81,_0x494aaf['error'][_0x86c6('0x12')]);return _0x13d44a(_0x494aaf[_0x86c6('0x11')]['message']);}logger['error']('CmHopper,\x20%s,\x20%s',_0x1ffb81,_0x494aaf[_0x86c6('0x11')][_0x86c6('0x12')]);return _0x3aae56(_0x494aaf[_0x86c6('0x11')][_0x86c6('0x12')]);}else{logger[_0x86c6('0xd')](_0x86c6('0x13'),_0x1ffb81,_0x86c6('0xe'));_0x3aae56(_0x494aaf[_0x86c6('0x14')]['message']);}})[_0x86c6('0x15')](function(_0x121e62){logger[_0x86c6('0x11')]('CmHopper,\x20%s,\x20%s',_0x1ffb81,_0x121e62);_0x13d44a(_0x121e62);});});}exports[_0x86c6('0x16')]=function(_0x5a4d58){var _0x448624=this;return new Promise(function(_0x4d8612,_0x40b015){return db['CmHopper'][_0x86c6('0x17')]({'raw':_0x5a4d58['options']?_0x5a4d58[_0x86c6('0x18')][_0x86c6('0x19')]===undefined?!![]:![]:!![],'where':_0x5a4d58[_0x86c6('0x18')]?_0x5a4d58[_0x86c6('0x18')][_0x86c6('0x1a')]||null:null,'attributes':_0x5a4d58['options']?_0x5a4d58['options'][_0x86c6('0x1b')]||null:null,'limit':_0x5a4d58[_0x86c6('0x18')]?_0x5a4d58[_0x86c6('0x18')][_0x86c6('0x1c')]||null:null,'include':_0x5a4d58['options']?_0x5a4d58['options'][_0x86c6('0x1d')]?_[_0x86c6('0x1e')](_0x5a4d58['options'][_0x86c6('0x1d')],function(_0x37ce3d){return{'model':db[_0x37ce3d[_0x86c6('0x1f')]],'as':_0x37ce3d['as'],'attributes':_0x37ce3d['attributes'],'include':_0x37ce3d[_0x86c6('0x1d')]?_['map'](_0x37ce3d[_0x86c6('0x1d')],function(_0xfd0e5c){return{'model':db[_0xfd0e5c[_0x86c6('0x1f')]],'as':_0xfd0e5c['as'],'attributes':_0xfd0e5c[_0x86c6('0x1b')],'include':_0xfd0e5c[_0x86c6('0x1d')]?_[_0x86c6('0x1e')](_0xfd0e5c['include'],function(_0x180996){return{'model':db[_0x180996[_0x86c6('0x1f')]],'as':_0x180996['as'],'attributes':_0x180996[_0x86c6('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x86c6('0xc')](function(_0x3c7ec9){logger[_0x86c6('0xd')]('GetCmHopper',_0x5a4d58);logger[_0x86c6('0xf')]('GetCmHopper',_0x5a4d58,JSON[_0x86c6('0x10')](_0x3c7ec9));_0x4d8612(_0x3c7ec9);})['catch'](function(_0x171eb3){logger[_0x86c6('0x11')](_0x86c6('0x16'),_0x171eb3['message'],_0x5a4d58);_0x40b015(_0x448624[_0x86c6('0x11')](0x1f4,_0x171eb3[_0x86c6('0x12')]));});});};exports[_0x86c6('0x20')]=function(_0x47853b){var _0x10d6ba=this;return new Promise(function(_0xb022e8,_0x2acc76){return db[_0x86c6('0x21')][_0x86c6('0x22')]({'raw':_0x47853b[_0x86c6('0x18')]?_0x47853b[_0x86c6('0x18')][_0x86c6('0x19')]===undefined?!![]:![]:!![],'where':_0x47853b[_0x86c6('0x18')]?_0x47853b[_0x86c6('0x18')]['where']||null:null,'attributes':_0x47853b[_0x86c6('0x18')]?_0x47853b[_0x86c6('0x18')]['attributes']||null:null,'include':_0x47853b['options']?_0x47853b[_0x86c6('0x18')][_0x86c6('0x1d')]?_[_0x86c6('0x1e')](_0x47853b['options'][_0x86c6('0x1d')],function(_0x4de4fb){return{'model':db[_0x4de4fb['model']],'as':_0x4de4fb['as'],'attributes':_0x4de4fb[_0x86c6('0x1b')],'include':_0x4de4fb[_0x86c6('0x1d')]?_[_0x86c6('0x1e')](_0x4de4fb['include'],function(_0x238429){return{'model':db[_0x238429[_0x86c6('0x1f')]],'as':_0x238429['as'],'attributes':_0x238429[_0x86c6('0x1b')],'include':_0x238429[_0x86c6('0x1d')]?_['map'](_0x238429['include'],function(_0x2e5bf6){return{'model':db[_0x2e5bf6['model']],'as':_0x2e5bf6['as'],'attributes':_0x2e5bf6[_0x86c6('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1536dc){logger[_0x86c6('0xd')](_0x86c6('0x20'),_0x47853b);logger[_0x86c6('0xf')](_0x86c6('0x20'),_0x47853b,JSON[_0x86c6('0x10')](_0x1536dc));_0xb022e8(_0x1536dc);})[_0x86c6('0x15')](function(_0x42cf1a){logger[_0x86c6('0x11')](_0x86c6('0x20'),_0x42cf1a[_0x86c6('0x12')],_0x47853b);_0x2acc76(_0x10d6ba[_0x86c6('0x11')](0x1f4,_0x42cf1a[_0x86c6('0x12')]));});});};exports[_0x86c6('0x23')]=function(_0x10daf7){var _0x45a416=this;return new Promise(function(_0x2e939b,_0x3b6421){return db[_0x86c6('0x21')][_0x86c6('0x24')](_0x10daf7[_0x86c6('0x25')],{'raw':_0x10daf7[_0x86c6('0x18')]?_0x10daf7['options'][_0x86c6('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x4ce22a){logger[_0x86c6('0xd')]('CreateCmHopper',_0x10daf7);logger['debug'](_0x86c6('0x23'),_0x10daf7,JSON['stringify'](_0x4ce22a));_0x2e939b(_0x4ce22a);})[_0x86c6('0x15')](function(_0x3c0783){logger[_0x86c6('0x11')]('CreateCmHopper',_0x3c0783[_0x86c6('0x12')],_0x10daf7);_0x3b6421(_0x45a416[_0x86c6('0x11')](0x1f4,_0x3c0783[_0x86c6('0x12')]));});});};exports[_0x86c6('0x26')]=function(_0x358036){var _0x54d2ab=this;return new Promise(function(_0x598435,_0x5ed3e3){return db['CmHopper']['update'](_0x358036[_0x86c6('0x25')],{'raw':_0x358036[_0x86c6('0x18')]?_0x358036['options'][_0x86c6('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x358036['options']?_0x358036['options'][_0x86c6('0x1a')]||null:null,'attributes':_0x358036[_0x86c6('0x18')]?_0x358036[_0x86c6('0x18')][_0x86c6('0x1b')]||null:null,'limit':_0x358036[_0x86c6('0x18')]?_0x358036[_0x86c6('0x18')][_0x86c6('0x1c')]||null:null})[_0x86c6('0xc')](function(_0x27b97e){logger[_0x86c6('0xd')](_0x86c6('0x26'),_0x358036);logger['debug'](_0x86c6('0x26'),_0x358036,JSON[_0x86c6('0x10')](_0x27b97e));_0x598435(_0x27b97e);})['catch'](function(_0x3ac395){logger['error'](_0x86c6('0x26'),_0x3ac395['message'],_0x358036);_0x5ed3e3(_0x54d2ab[_0x86c6('0x11')](0x1f4,_0x3ac395['message']));});});};exports[_0x86c6('0x27')]=function(_0x42b805){var _0xd6fb14=this;return new Promise(function(_0x21692f,_0x4ec901){return db['CmHopper'][_0x86c6('0x28')]({'where':_0x42b805['options']?_0x42b805[_0x86c6('0x18')][_0x86c6('0x1a')]||null:null})[_0x86c6('0xc')](function(_0x17c895){logger[_0x86c6('0xd')](_0x86c6('0x27'),_0x42b805);logger[_0x86c6('0xf')](_0x86c6('0x27'),_0x42b805,JSON[_0x86c6('0x10')](_0x17c895));_0x21692f(_0x17c895);})[_0x86c6('0x15')](function(_0x121fd0){logger[_0x86c6('0x11')]('DestroyCmHopper',_0x121fd0[_0x86c6('0x12')],_0x42b805);_0x4ec901(_0xd6fb14[_0x86c6('0x11')](0x1f4,_0x121fd0['message']));});});};exports['GetContactDialer']=function(_0x25f081){var _0x5b23d0=this;return new Promise(function(_0x4e0c87,_0x913811){return db[_0x86c6('0x29')][_0x86c6('0x2a')]()[_0x86c6('0xc')](function(_0x495199){return db[_0x86c6('0x2b')][_0x86c6('0x2c')](function(_0x7e9e05){return db[_0x86c6('0x21')][_0x86c6('0x17')]({'where':_0x25f081[_0x86c6('0x18')]?_0x25f081[_0x86c6('0x18')][_0x86c6('0x1a')]||null:null,'attributes':_0x25f081['options']?_0x25f081[_0x86c6('0x18')][_0x86c6('0x1b')]||null:null,'limit':_0x25f081[_0x86c6('0x18')]?_0x25f081['options']['limit']||null:null,'order':_0x25f081[_0x86c6('0x18')]?_0x25f081[_0x86c6('0x18')][_0x86c6('0x2d')]||null:null,'transaction':_0x7e9e05,'lock':_0x7e9e05['LOCK'][_0x86c6('0x2e')],'include':[{'model':db[_0x86c6('0x29')],'as':_0x86c6('0x2f'),'attributes':_['keys'](_0x495199)}]})[_0x86c6('0xc')](function(_0x333163){var _0x47d952=[];for(var _0x499440=0x0;_0x499440<_0x333163['length'];_0x499440+=0x1){_0x47d952['push'](_0x333163[_0x499440][_0x86c6('0x30')](_0x25f081[_0x86c6('0x25')],{'transaction':_0x7e9e05}));}return BPromise[_0x86c6('0x31')](_0x47d952);});})[_0x86c6('0xc')](function(_0x5708ad){logger[_0x86c6('0xd')](_0x86c6('0x32'),_0x25f081);logger[_0x86c6('0xf')](_0x86c6('0x32'),_0x25f081,JSON[_0x86c6('0x10')](_0x5708ad));_0x4e0c87(_0x5708ad);})[_0x86c6('0x15')](function(_0x145908){logger[_0x86c6('0x11')](_0x86c6('0x32'),_0x145908['message'],_0x25f081);_0x913811(_0x5b23d0[_0x86c6('0x11')](0x1f4,_0x145908['message']));});});});};exports[_0x86c6('0x33')]=function(_0x1408be){var _0x1b636d=this;return new Promise(function(_0x5a9b48,_0x53c767){return db['sequelize'][_0x86c6('0x2c')](function(_0x3a75f0){return db[_0x86c6('0x34')][_0x86c6('0x24')](_0x1408be['body'],{'raw':_0x1408be[_0x86c6('0x18')]?_0x1408be[_0x86c6('0x18')][_0x86c6('0x19')]===undefined?!![]:![]:!![],'transaction':_0x3a75f0})['then'](function(){return db[_0x86c6('0x21')][_0x86c6('0x28')]({'where':_0x1408be['options']?_0x1408be['options']['where']||null:null,'transaction':_0x3a75f0});});})[_0x86c6('0xc')](function(_0x46c79a){logger['info'](_0x86c6('0x33'),_0x1408be);logger[_0x86c6('0xf')](_0x86c6('0x33'),_0x1408be,JSON[_0x86c6('0x10')](_0x46c79a));_0x5a9b48(_0x46c79a);})[_0x86c6('0x15')](function(_0x28aecd){logger[_0x86c6('0x11')]('MoveContactManagedDialer',_0x28aecd[_0x86c6('0x12')],_0x1408be);_0x53c767(_0x1b636d[_0x86c6('0x11')](0x1f4,_0x28aecd['message']));});});};exports['CountReScheduled']=function(_0x2bf313){var _0x7a0bf5=this;return new Promise(function(_0x477ce4,_0x2101e4){return db[_0x86c6('0x21')][_0x86c6('0x17')]({'raw':_0x2bf313[_0x86c6('0x18')]?_0x2bf313['options'][_0x86c6('0x19')]===undefined?!![]:![]:!![],'where':_0x2bf313[_0x86c6('0x18')]?_0x2bf313[_0x86c6('0x18')][_0x86c6('0x1a')]||null:null,'attributes':[[db[_0x86c6('0x2b')]['fn'](_0x86c6('0x35'),db[_0x86c6('0x2b')]['fn']('IF',db[_0x86c6('0x2b')][_0x86c6('0x36')](_0x86c6('0x37')+util[_0x86c6('0x38')](_0x86c6('0x39'),moment()[_0x86c6('0x38')]('YYYY-MM-DD\x20HH:mm:ss'))+_0x86c6('0x3a')))),_0x86c6('0x3b')]]})[_0x86c6('0xc')](function(_0x39ca00){logger[_0x86c6('0xd')](_0x86c6('0x3c'),_0x2bf313);logger[_0x86c6('0xf')](_0x86c6('0x3c'),_0x2bf313,JSON[_0x86c6('0x10')](_0x39ca00));_0x477ce4(_0x39ca00);})[_0x86c6('0x15')](function(_0x5991d3){logger['error'](_0x86c6('0x3c'),_0x5991d3[_0x86c6('0x12')],_0x2bf313);_0x2101e4(_0x7a0bf5[_0x86c6('0x11')](0x1f4,_0x5991d3[_0x86c6('0x12')]));});});};exports[_0x86c6('0x3d')]=function(_0xe1cdbf){var _0x1be136=this;return new Promise(function(_0x35a00c,_0x1ad0a0){return db[_0x86c6('0x29')][_0x86c6('0x2a')]()[_0x86c6('0xc')](function(_0x36097f){return db['sequelize'][_0x86c6('0x2c')](function(_0x3f9900){return db[_0x86c6('0x21')][_0x86c6('0x17')]({'where':_0xe1cdbf[_0x86c6('0x18')]?_0xe1cdbf[_0x86c6('0x18')][_0x86c6('0x1a')]||null:null,'attributes':_0xe1cdbf[_0x86c6('0x18')]?_0xe1cdbf['options'][_0x86c6('0x1b')]||null:null,'limit':0x1,'order':_0xe1cdbf[_0x86c6('0x18')]?_0xe1cdbf['options']['order']||null:null,'group':db[_0x86c6('0x21')][_0x86c6('0x3e')],'transaction':_0x3f9900,'lock':_0x3f9900[_0x86c6('0x3f')][_0x86c6('0x2e')],'include':_0xe1cdbf[_0x86c6('0x18')]?_0xe1cdbf['options'][_0x86c6('0x1d')]?_['map'](_0xe1cdbf[_0x86c6('0x18')]['include'],function(_0x817639){return{'model':db[_0x817639[_0x86c6('0x1f')]],'as':_0x817639['as'],'attributes':_0x817639[_0x86c6('0x1b')],'include':_0x817639['include']?_[_0x86c6('0x1e')](_0x817639['include'],function(_0x1b4170){return{'model':db[_0x1b4170[_0x86c6('0x1f')]],'as':_0x1b4170['as'],'attributes':_0x1b4170['attributes'],'include':_0x1b4170['include']?_[_0x86c6('0x1e')](_0x1b4170['include'],function(_0x2a60f1){return{'model':db[_0x2a60f1[_0x86c6('0x1f')]],'as':_0x2a60f1['as'],'attributes':_0x2a60f1['attributes']};}):[]};}):[]};}):[]:[]})[_0x86c6('0xc')](function(_0x169e0e){var _0x209bc8=[];for(var _0x5acb87=0x0;_0x5acb87<_0x169e0e['length'];_0x5acb87+=0x1){_0x209bc8[_0x86c6('0x40')](_0x169e0e[_0x5acb87]['update'](_0xe1cdbf['body'],{'transaction':_0x3f9900}));}return BPromise['all'](_0x209bc8);});})['then'](function(_0x35a4f2){logger[_0x86c6('0xd')]('GetContactRecallMe',_0xe1cdbf);logger[_0x86c6('0xf')]('GetContactRecallMe',_0xe1cdbf,JSON[_0x86c6('0x10')](_0x35a4f2));_0x35a00c(_0x35a4f2);})['catch'](function(_0x321a5a){logger[_0x86c6('0x11')]('GetContactRecallMe',_0x321a5a[_0x86c6('0x12')],_0xe1cdbf);_0x1ad0a0(_0x1be136['error'](0x1f4,_0x321a5a[_0x86c6('0x12')]));});});});};
\ No newline at end of file
+var _0x50e3=['`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','UserId','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','findAll','options','where','limit','include','map','model','attributes','info','GetCmHopper','ShowCmHopper','CmHopper','raw','body','CreateCmHopper','UpdateCmHopper','update','DestroyCmHopper','GetContactDialer','CmContact','describe','sequelize','transaction','order','LOCK','Contact','keys','length','push','all','MoveContactManagedDialer','create','destroy','CountReScheduled','COUNT','literal'];(function(_0x30aebd,_0x4d2300){var _0xf1f2bc=function(_0xbeb44f){while(--_0xbeb44f){_0x30aebd['push'](_0x30aebd['shift']());}};_0xf1f2bc(++_0x4d2300);}(_0x50e3,0x180));var _0x350e=function(_0x712f8f,_0x4d1f1b){_0x712f8f=_0x712f8f-0x0;var _0x5a57e9=_0x50e3[_0x712f8f];return _0x5a57e9;};'use strict';var _=require(_0x350e('0x0'));var util=require(_0x350e('0x1'));var moment=require(_0x350e('0x2'));var BPromise=require(_0x350e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x350e('0x4'))['db'];var utils=require(_0x350e('0x5'));var logger=require('../../config/logger')(_0x350e('0x6'));var config=require(_0x350e('0x7'));var jayson=require(_0x350e('0x8'));var client=jayson[_0x350e('0x9')][_0x350e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28c951,_0x4e82cc,_0x342dd0){return new BPromise(function(_0x378629,_0x1b5f89){return client['request'](_0x28c951,_0x342dd0)[_0x350e('0xb')](function(_0x180e85){logger['info'](_0x350e('0xc'),_0x4e82cc,_0x350e('0xd'));logger[_0x350e('0xe')](_0x350e('0xf'),_0x4e82cc,'request\x20sent',JSON[_0x350e('0x10')](_0x180e85));if(_0x180e85['error']){if(_0x180e85[_0x350e('0x11')]['code']===0x1f4){logger['error'](_0x350e('0xc'),_0x4e82cc,_0x180e85[_0x350e('0x11')][_0x350e('0x12')]);return _0x1b5f89(_0x180e85[_0x350e('0x11')][_0x350e('0x12')]);}logger[_0x350e('0x11')]('CmHopper,\x20%s,\x20%s',_0x4e82cc,_0x180e85[_0x350e('0x11')][_0x350e('0x12')]);return _0x378629(_0x180e85['error'][_0x350e('0x12')]);}else{logger['info'](_0x350e('0xc'),_0x4e82cc,'request\x20sent');_0x378629(_0x180e85[_0x350e('0x13')][_0x350e('0x12')]);}})[_0x350e('0x14')](function(_0x490327){logger[_0x350e('0x11')](_0x350e('0xc'),_0x4e82cc,_0x490327);_0x1b5f89(_0x490327);});});}exports['GetCmHopper']=function(_0x214869){var _0xfc0c46=this;return new Promise(function(_0x1c7332,_0x2c3c5c){return db['CmHopper'][_0x350e('0x15')]({'raw':_0x214869['options']?_0x214869[_0x350e('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x214869['options']?_0x214869[_0x350e('0x16')][_0x350e('0x17')]||null:null,'attributes':_0x214869['options']?_0x214869[_0x350e('0x16')]['attributes']||null:null,'limit':_0x214869[_0x350e('0x16')]?_0x214869[_0x350e('0x16')][_0x350e('0x18')]||null:null,'include':_0x214869[_0x350e('0x16')]?_0x214869[_0x350e('0x16')][_0x350e('0x19')]?_[_0x350e('0x1a')](_0x214869[_0x350e('0x16')][_0x350e('0x19')],function(_0x435756){return{'model':db[_0x435756[_0x350e('0x1b')]],'as':_0x435756['as'],'attributes':_0x435756[_0x350e('0x1c')],'include':_0x435756[_0x350e('0x19')]?_[_0x350e('0x1a')](_0x435756[_0x350e('0x19')],function(_0x3124f8){return{'model':db[_0x3124f8['model']],'as':_0x3124f8['as'],'attributes':_0x3124f8[_0x350e('0x1c')],'include':_0x3124f8['include']?_[_0x350e('0x1a')](_0x3124f8[_0x350e('0x19')],function(_0x3e3ec5){return{'model':db[_0x3e3ec5[_0x350e('0x1b')]],'as':_0x3e3ec5['as'],'attributes':_0x3e3ec5[_0x350e('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3350ff){logger[_0x350e('0x1d')]('GetCmHopper',_0x214869);logger[_0x350e('0xe')]('GetCmHopper',_0x214869,JSON[_0x350e('0x10')](_0x3350ff));_0x1c7332(_0x3350ff);})['catch'](function(_0x36fe78){logger['error'](_0x350e('0x1e'),_0x36fe78['message'],_0x214869);_0x2c3c5c(_0xfc0c46[_0x350e('0x11')](0x1f4,_0x36fe78[_0x350e('0x12')]));});});};exports[_0x350e('0x1f')]=function(_0x2a57e3){var _0x1cdb3c=this;return new Promise(function(_0x2820b4,_0x2380b9){return db[_0x350e('0x20')]['find']({'raw':_0x2a57e3[_0x350e('0x16')]?_0x2a57e3['options'][_0x350e('0x21')]===undefined?!![]:![]:!![],'where':_0x2a57e3[_0x350e('0x16')]?_0x2a57e3['options'][_0x350e('0x17')]||null:null,'attributes':_0x2a57e3['options']?_0x2a57e3[_0x350e('0x16')][_0x350e('0x1c')]||null:null,'include':_0x2a57e3[_0x350e('0x16')]?_0x2a57e3[_0x350e('0x16')][_0x350e('0x19')]?_[_0x350e('0x1a')](_0x2a57e3['options'][_0x350e('0x19')],function(_0x5444e4){return{'model':db[_0x5444e4['model']],'as':_0x5444e4['as'],'attributes':_0x5444e4[_0x350e('0x1c')],'include':_0x5444e4[_0x350e('0x19')]?_[_0x350e('0x1a')](_0x5444e4[_0x350e('0x19')],function(_0x57c292){return{'model':db[_0x57c292[_0x350e('0x1b')]],'as':_0x57c292['as'],'attributes':_0x57c292[_0x350e('0x1c')],'include':_0x57c292[_0x350e('0x19')]?_['map'](_0x57c292[_0x350e('0x19')],function(_0x493edf){return{'model':db[_0x493edf[_0x350e('0x1b')]],'as':_0x493edf['as'],'attributes':_0x493edf[_0x350e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x350e('0xb')](function(_0x5cc3ae){logger[_0x350e('0x1d')](_0x350e('0x1f'),_0x2a57e3);logger[_0x350e('0xe')](_0x350e('0x1f'),_0x2a57e3,JSON[_0x350e('0x10')](_0x5cc3ae));_0x2820b4(_0x5cc3ae);})[_0x350e('0x14')](function(_0x2a0c18){logger[_0x350e('0x11')](_0x350e('0x1f'),_0x2a0c18['message'],_0x2a57e3);_0x2380b9(_0x1cdb3c['error'](0x1f4,_0x2a0c18['message']));});});};exports['CreateCmHopper']=function(_0x2c8305){var _0x5bea7c=this;return new Promise(function(_0x5a4534,_0x432b50){return db[_0x350e('0x20')]['create'](_0x2c8305[_0x350e('0x22')],{'raw':_0x2c8305[_0x350e('0x16')]?_0x2c8305[_0x350e('0x16')][_0x350e('0x21')]===undefined?!![]:![]:!![]})[_0x350e('0xb')](function(_0x4857b3){logger['info'](_0x350e('0x23'),_0x2c8305);logger[_0x350e('0xe')](_0x350e('0x23'),_0x2c8305,JSON['stringify'](_0x4857b3));_0x5a4534(_0x4857b3);})[_0x350e('0x14')](function(_0x47a9e3){logger['error'](_0x350e('0x23'),_0x47a9e3[_0x350e('0x12')],_0x2c8305);_0x432b50(_0x5bea7c[_0x350e('0x11')](0x1f4,_0x47a9e3[_0x350e('0x12')]));});});};exports[_0x350e('0x24')]=function(_0x535ae9){var _0x11071c=this;return new Promise(function(_0x12243a,_0x450900){return db[_0x350e('0x20')][_0x350e('0x25')](_0x535ae9[_0x350e('0x22')],{'raw':_0x535ae9[_0x350e('0x16')]?_0x535ae9[_0x350e('0x16')][_0x350e('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x535ae9[_0x350e('0x16')]?_0x535ae9[_0x350e('0x16')][_0x350e('0x17')]||null:null,'attributes':_0x535ae9[_0x350e('0x16')]?_0x535ae9['options']['attributes']||null:null,'limit':_0x535ae9['options']?_0x535ae9[_0x350e('0x16')][_0x350e('0x18')]||null:null})[_0x350e('0xb')](function(_0x3746fb){logger[_0x350e('0x1d')](_0x350e('0x24'),_0x535ae9);logger['debug']('UpdateCmHopper',_0x535ae9,JSON['stringify'](_0x3746fb));_0x12243a(_0x3746fb);})[_0x350e('0x14')](function(_0x341f57){logger['error'](_0x350e('0x24'),_0x341f57[_0x350e('0x12')],_0x535ae9);_0x450900(_0x11071c[_0x350e('0x11')](0x1f4,_0x341f57[_0x350e('0x12')]));});});};exports['DestroyCmHopper']=function(_0xb64fc9){var _0x65fffb=this;return new Promise(function(_0x4cc50b,_0x58ecce){return db[_0x350e('0x20')]['destroy']({'where':_0xb64fc9[_0x350e('0x16')]?_0xb64fc9[_0x350e('0x16')][_0x350e('0x17')]||null:null})['then'](function(_0x12482b){logger[_0x350e('0x1d')]('DestroyCmHopper',_0xb64fc9);logger['debug'](_0x350e('0x26'),_0xb64fc9,JSON[_0x350e('0x10')](_0x12482b));_0x4cc50b(_0x12482b);})[_0x350e('0x14')](function(_0xce3322){logger['error'](_0x350e('0x26'),_0xce3322[_0x350e('0x12')],_0xb64fc9);_0x58ecce(_0x65fffb[_0x350e('0x11')](0x1f4,_0xce3322[_0x350e('0x12')]));});});};exports[_0x350e('0x27')]=function(_0x261e1f){var _0x521ef8=this;return new Promise(function(_0x5380c3,_0x3163f8){return db[_0x350e('0x28')][_0x350e('0x29')]()['then'](function(_0x10e194){return db[_0x350e('0x2a')][_0x350e('0x2b')](function(_0x29b13e){return db['CmHopper'][_0x350e('0x15')]({'where':_0x261e1f[_0x350e('0x16')]?_0x261e1f[_0x350e('0x16')][_0x350e('0x17')]||null:null,'attributes':_0x261e1f[_0x350e('0x16')]?_0x261e1f[_0x350e('0x16')][_0x350e('0x1c')]||null:null,'limit':_0x261e1f[_0x350e('0x16')]?_0x261e1f[_0x350e('0x16')][_0x350e('0x18')]||null:null,'order':_0x261e1f['options']?_0x261e1f['options'][_0x350e('0x2c')]||null:null,'transaction':_0x29b13e,'lock':_0x29b13e[_0x350e('0x2d')]['UPDATE'],'include':[{'model':db['CmContact'],'as':_0x350e('0x2e'),'attributes':_[_0x350e('0x2f')](_0x10e194)}]})['then'](function(_0x1fd444){var _0x1bf177=[];for(var _0x2af1ce=0x0;_0x2af1ce<_0x1fd444[_0x350e('0x30')];_0x2af1ce+=0x1){_0x1bf177[_0x350e('0x31')](_0x1fd444[_0x2af1ce][_0x350e('0x25')](_0x261e1f[_0x350e('0x22')],{'transaction':_0x29b13e}));}return BPromise[_0x350e('0x32')](_0x1bf177);});})[_0x350e('0xb')](function(_0x4e3422){logger[_0x350e('0x1d')](_0x350e('0x27'),_0x261e1f);logger[_0x350e('0xe')](_0x350e('0x27'),_0x261e1f,JSON[_0x350e('0x10')](_0x4e3422));_0x5380c3(_0x4e3422);})[_0x350e('0x14')](function(_0x59aa9b){logger['error'](_0x350e('0x27'),_0x59aa9b['message'],_0x261e1f);_0x3163f8(_0x521ef8[_0x350e('0x11')](0x1f4,_0x59aa9b[_0x350e('0x12')]));});});});};exports[_0x350e('0x33')]=function(_0x48772c){var _0x2e3216=this;return new Promise(function(_0x25d660,_0x36b8cf){return db[_0x350e('0x2a')][_0x350e('0x2b')](function(_0x1030d8){return db['CmHopperFinal'][_0x350e('0x34')](_0x48772c[_0x350e('0x22')],{'raw':_0x48772c[_0x350e('0x16')]?_0x48772c[_0x350e('0x16')]['raw']===undefined?!![]:![]:!![],'transaction':_0x1030d8})[_0x350e('0xb')](function(){return db[_0x350e('0x20')][_0x350e('0x35')]({'where':_0x48772c[_0x350e('0x16')]?_0x48772c['options'][_0x350e('0x17')]||null:null,'transaction':_0x1030d8});});})[_0x350e('0xb')](function(_0x84701c){logger[_0x350e('0x1d')](_0x350e('0x33'),_0x48772c);logger[_0x350e('0xe')](_0x350e('0x33'),_0x48772c,JSON[_0x350e('0x10')](_0x84701c));_0x25d660(_0x84701c);})[_0x350e('0x14')](function(_0x2b288c){logger[_0x350e('0x11')](_0x350e('0x33'),_0x2b288c[_0x350e('0x12')],_0x48772c);_0x36b8cf(_0x2e3216[_0x350e('0x11')](0x1f4,_0x2b288c[_0x350e('0x12')]));});});};exports[_0x350e('0x36')]=function(_0x2eb799){var _0x2d0ad6=this;return new Promise(function(_0xd4a4c9,_0x32d20c){return db['CmHopper'][_0x350e('0x15')]({'raw':_0x2eb799['options']?_0x2eb799[_0x350e('0x16')][_0x350e('0x21')]===undefined?!![]:![]:!![],'where':_0x2eb799[_0x350e('0x16')]?_0x2eb799['options']['where']||null:null,'attributes':[[db[_0x350e('0x2a')]['fn'](_0x350e('0x37'),db['sequelize']['fn']('IF',db[_0x350e('0x2a')][_0x350e('0x38')](_0x350e('0x39')+util[_0x350e('0x3a')]('\x22%s\x22',moment()[_0x350e('0x3a')](_0x350e('0x3b')))+_0x350e('0x3c')))),'contactsRescheduled']]})[_0x350e('0xb')](function(_0x2aafc2){logger[_0x350e('0x1d')]('CountReScheduled',_0x2eb799);logger[_0x350e('0xe')](_0x350e('0x36'),_0x2eb799,JSON[_0x350e('0x10')](_0x2aafc2));_0xd4a4c9(_0x2aafc2);})[_0x350e('0x14')](function(_0x3b2a24){logger['error'](_0x350e('0x36'),_0x3b2a24[_0x350e('0x12')],_0x2eb799);_0x32d20c(_0x2d0ad6['error'](0x1f4,_0x3b2a24[_0x350e('0x12')]));});});};exports[_0x350e('0x3d')]=function(_0x8c79a7){var _0x4ae0e5=this;return new Promise(function(_0x9489fa,_0x1c43c4){return db[_0x350e('0x28')][_0x350e('0x29')]()['then'](function(_0x48875c){return db[_0x350e('0x2a')][_0x350e('0x2b')](function(_0x94aab3){return db[_0x350e('0x20')][_0x350e('0x15')]({'where':_0x8c79a7[_0x350e('0x16')]?_0x8c79a7[_0x350e('0x16')][_0x350e('0x17')]||null:null,'attributes':_0x8c79a7['options']?_0x8c79a7[_0x350e('0x16')][_0x350e('0x1c')]||null:null,'limit':0x1,'order':_0x8c79a7[_0x350e('0x16')]?_0x8c79a7[_0x350e('0x16')]['order']||null:null,'group':db[_0x350e('0x20')][_0x350e('0x3e')],'transaction':_0x94aab3,'lock':_0x94aab3[_0x350e('0x2d')]['UPDATE'],'include':_0x8c79a7[_0x350e('0x16')]?_0x8c79a7[_0x350e('0x16')][_0x350e('0x19')]?_[_0x350e('0x1a')](_0x8c79a7[_0x350e('0x16')][_0x350e('0x19')],function(_0x49d0b6){return{'model':db[_0x49d0b6[_0x350e('0x1b')]],'as':_0x49d0b6['as'],'attributes':_0x49d0b6[_0x350e('0x1c')],'include':_0x49d0b6[_0x350e('0x19')]?_[_0x350e('0x1a')](_0x49d0b6[_0x350e('0x19')],function(_0x33f8a1){return{'model':db[_0x33f8a1['model']],'as':_0x33f8a1['as'],'attributes':_0x33f8a1[_0x350e('0x1c')],'include':_0x33f8a1[_0x350e('0x19')]?_['map'](_0x33f8a1[_0x350e('0x19')],function(_0x1b74f9){return{'model':db[_0x1b74f9[_0x350e('0x1b')]],'as':_0x1b74f9['as'],'attributes':_0x1b74f9['attributes']};}):[]};}):[]};}):[]:[]})[_0x350e('0xb')](function(_0xd5cc2e){var _0x53044e=[];for(var _0x290d0d=0x0;_0x290d0d<_0xd5cc2e['length'];_0x290d0d+=0x1){_0x53044e[_0x350e('0x31')](_0xd5cc2e[_0x290d0d][_0x350e('0x25')](_0x8c79a7[_0x350e('0x22')],{'transaction':_0x94aab3}));}return BPromise[_0x350e('0x32')](_0x53044e);});})[_0x350e('0xb')](function(_0x4f83ca){logger[_0x350e('0x1d')](_0x350e('0x3d'),_0x8c79a7);logger['debug']('GetContactRecallMe',_0x8c79a7,JSON[_0x350e('0x10')](_0x4f83ca));_0x9489fa(_0x4f83ca);})[_0x350e('0x14')](function(_0x5b7f2c){logger[_0x350e('0x11')](_0x350e('0x3d'),_0x5b7f2c[_0x350e('0x12')],_0x8c79a7);_0x1c43c4(_0x4ae0e5['error'](0x1f4,_0x5b7f2c[_0x350e('0x12')]));});});});};
\ No newline at end of file
index ea1bdcb..7cee96d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['destroy','exports','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','describe','/opencontacts','/:id','post','/preview','getPreview','put','delete'];(function(_0x1caca1,_0x259c31){var _0x37da65=function(_0x11bdbd){while(--_0x11bdbd){_0x1caca1['push'](_0x1caca1['shift']());}};_0x37da65(++_0x259c31);}(_0x7a54,0x106));var _0x47a5=function(_0x62bc05,_0xe76d48){_0x62bc05=_0x62bc05-0x0;var _0x3260e1=_0x7a54[_0x62bc05];return _0x3260e1;};'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 auth=require('../../components/auth/service');var interaction=require(_0x47a5('0x5'));var config=require(_0x47a5('0x6'));var controller=require(_0x47a5('0x7'));router[_0x47a5('0x8')]('/',auth[_0x47a5('0x9')](),controller['index']);router[_0x47a5('0x8')]('/describe',auth[_0x47a5('0x9')](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth['isAuthenticated'](),controller['getOpenContacts']);router['get'](_0x47a5('0xc'),auth[_0x47a5('0x9')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x47a5('0xd')](_0x47a5('0xe'),auth[_0x47a5('0x9')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')](_0x47a5('0xc'),auth[_0x47a5('0x9')](),controller['update']);router[_0x47a5('0x11')](_0x47a5('0xc'),auth[_0x47a5('0x9')](),controller[_0x47a5('0x12')]);module[_0x47a5('0x13')]=router;
\ No newline at end of file
+var _0x9957=['/:id','show','post','/preview','getPreview','put','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/opencontacts','getOpenContacts'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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 auth=require(_0x7995('0x5'));var interaction=require(_0x7995('0x6'));var config=require(_0x7995('0x7'));var controller=require('./cmHopper.controller');router[_0x7995('0x8')]('/',auth[_0x7995('0x9')](),controller[_0x7995('0xa')]);router[_0x7995('0x8')](_0x7995('0xb'),auth[_0x7995('0x9')](),controller['describe']);router[_0x7995('0x8')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x8')](_0x7995('0xe'),auth[_0x7995('0x9')](),controller[_0x7995('0xf')]);router[_0x7995('0x10')]('/',auth[_0x7995('0x9')](),controller['create']);router[_0x7995('0x10')](_0x7995('0x11'),auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x13')](_0x7995('0xe'),auth[_0x7995('0x9')](),controller[_0x7995('0x14')]);router[_0x7995('0x15')](_0x7995('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x7995('0x16')]=router;
\ No newline at end of file
index 9a8b545..1519383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd459=['STRING','contactListQueue','INTEGER','moment','sequelize','exports'];(function(_0xac209,_0x3741cd){var _0x234c24=function(_0x33e112){while(--_0x33e112){_0xac209['push'](_0xac209['shift']());}};_0x234c24(++_0x3741cd);}(_0xd459,0xb1));var _0x9d45=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0xd459[_0x1d9aa0];return _0x226868;};'use strict';var moment=require(_0x9d45('0x0'));var Sequelize=require(_0x9d45('0x1'));module[_0x9d45('0x2')]={'phone':{'type':Sequelize[_0x9d45('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x9d45('0x4')},'ListId':{'type':Sequelize[_0x9d45('0x5')],'unique':_0x9d45('0x4')},'VoiceQueueId':{'type':Sequelize[_0x9d45('0x5')],'unique':_0x9d45('0x4')}};
\ No newline at end of file
+var _0x61c3=['contactListQueue','sequelize','exports','STRING','INTEGER'];(function(_0x5c187c,_0x5ce566){var _0x2aa839=function(_0x5b1bff){while(--_0x5b1bff){_0x5c187c['push'](_0x5c187c['shift']());}};_0x2aa839(++_0x5ce566);}(_0x61c3,0x1aa));var _0x361c=function(_0x2dc89d,_0x297dcc){_0x2dc89d=_0x2dc89d-0x0;var _0x247119=_0x61c3[_0x2dc89d];return _0x247119;};'use strict';var moment=require('moment');var Sequelize=require(_0x361c('0x0'));module[_0x361c('0x1')]={'phone':{'type':Sequelize[_0x361c('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x361c('0x3')],'unique':_0x361c('0x4')},'ListId':{'type':Sequelize[_0x361c('0x3')],'unique':_0x361c('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x361c('0x4')}};
\ No newline at end of file
index d64cf75..f38b8b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf178=['key','options','then','includeAll','include','findAll','rows','catch','params','rawAttributes','find','body','destroy','describe','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','count','offset','json','reject','update','error','stack','name','index','CmHopperBlack','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','pick','add','day','merge','where','type'];(function(_0x540f0d,_0x2a093b){var _0x5d2fc3=function(_0x155552){while(--_0x155552){_0x540f0d['push'](_0x540f0d['shift']());}};_0x5d2fc3(++_0x2a093b);}(_0xf178,0x98));var _0x8f17=function(_0x62507b,_0x49420b){_0x62507b=_0x62507b-0x0;var _0x3c5574=_0xf178[_0x62507b];return _0x3c5574;};'use strict';var pdf=require(_0x8f17('0x0'));var emlformat=require(_0x8f17('0x1'));var rimraf=require(_0x8f17('0x2'));var zipdir=require(_0x8f17('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8f17('0x4'));var moment=require(_0x8f17('0x5'));var BPromise=require(_0x8f17('0x6'));var Mustache=require('mustache');var util=require(_0x8f17('0x7'));var path=require(_0x8f17('0x8'));var sox=require(_0x8f17('0x9'));var csv=require(_0x8f17('0xa'));var ejs=require(_0x8f17('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0x8f17('0xc'));var crypto=require(_0x8f17('0xd'));var jsforce=require(_0x8f17('0xe'));var deskjs=require(_0x8f17('0xf'));var toCsv=require(_0x8f17('0xa'));var querystring=require('querystring');var Papa=require(_0x8f17('0x10'));var Redis=require(_0x8f17('0x11'));var qs=require('../../components/parsers/qs');var logger=require(_0x8f17('0x12'))(_0x8f17('0x13'));var utils=require(_0x8f17('0x14'));var config=require('../../config/environment');var db=require(_0x8f17('0x15'))['db'];function respondWithStatusCode(_0x3897f4,_0x41136b){_0x41136b=_0x41136b||0xcc;return function(_0x1b198e){if(_0x1b198e){return _0x3897f4[_0x8f17('0x16')](_0x41136b);}return _0x3897f4[_0x8f17('0x17')](_0x41136b)[_0x8f17('0x18')]();};}function respondWithResult(_0x51bbfa,_0x262ebb){_0x262ebb=_0x262ebb||0xc8;return function(_0x1d95fb){if(_0x1d95fb){return _0x51bbfa[_0x8f17('0x17')](_0x262ebb)['json'](_0x1d95fb);}};}function respondWithFilteredResult(_0x3c54e9,_0x204f1b){return function(_0x397b4f){if(_0x397b4f){var _0x8c9e9f=_0x397b4f[_0x8f17('0x19')],_0x52835f=_0x204f1b['offset'],_0x125a12=_0x204f1b[_0x8f17('0x1a')]+_0x204f1b['limit'],_0x7eb6f6;if(_0x125a12>=_0x8c9e9f){_0x125a12=_0x8c9e9f;_0x7eb6f6=0xc8;}else{_0x7eb6f6=0xce;}_0x3c54e9[_0x8f17('0x17')](_0x7eb6f6);return _0x3c54e9['set']('Content-Range',_0x52835f+'-'+_0x125a12+'/'+_0x8c9e9f)[_0x8f17('0x1b')](_0x397b4f);}return null;};}function patchUpdates(_0xd0651b){return function(_0x47422f){try{jsonpatch['apply'](_0x47422f,_0xd0651b,!![]);}catch(_0x1b587b){return BPromise[_0x8f17('0x1c')](_0x1b587b);}return _0x47422f['save']();};}function saveUpdates(_0x2d66b7,_0x2c4cdd){return function(_0x3b5bea){if(_0x3b5bea){return _0x3b5bea[_0x8f17('0x1d')](_0x2d66b7)['then'](function(_0x2f76ae){return _0x2f76ae;});}return null;};}function removeEntity(_0x27c9c3,_0x22ac3f){return function(_0x2c3be4){if(_0x2c3be4){return _0x2c3be4['destroy']()['then'](function(){_0x27c9c3[_0x8f17('0x17')](0xcc)[_0x8f17('0x18')]();});}};}function handleEntityNotFound(_0x414318,_0x48ce33){return function(_0x5e5ec0){if(!_0x5e5ec0){_0x414318[_0x8f17('0x16')](0x194);}return _0x5e5ec0;};}function handleError(_0xb0ffe2,_0x5118db){_0x5118db=_0x5118db||0x1f4;return function(_0x2e2984){logger[_0x8f17('0x1e')](_0x2e2984[_0x8f17('0x1f')]);if(_0x2e2984[_0x8f17('0x20')]){delete _0x2e2984[_0x8f17('0x20')];}_0xb0ffe2[_0x8f17('0x17')](_0x5118db)['send'](_0x2e2984);};}exports[_0x8f17('0x21')]=function(_0x25c130,_0x4958bd){var _0x203558={},_0x72b699={},_0x23166b={'count':0x0,'rows':[]};var _0x56c7d5=db[_0x8f17('0x22')]['rawAttributes'];_0x72b699[_0x8f17('0x23')]=_[_0x8f17('0x24')](_0x56c7d5);var _0x2f2cc4={'dateStart':_0x25c130[_0x8f17('0x25')][_0x8f17('0x26')],'dateEnd':_0x25c130[_0x8f17('0x25')][_0x8f17('0x27')]};delete _0x25c130[_0x8f17('0x25')]['dateStart'];delete _0x25c130[_0x8f17('0x25')]['dateEnd'];_0x72b699['query']=_[_0x8f17('0x24')](_0x25c130['query']);_0x72b699[_0x8f17('0x28')]=_[_0x8f17('0x29')](_0x72b699[_0x8f17('0x23')],_0x72b699[_0x8f17('0x25')]);_0x203558[_0x8f17('0x2a')]=_[_0x8f17('0x29')](_0x72b699['model'],qs[_0x8f17('0x2b')](_0x25c130[_0x8f17('0x25')]['fields']));_0x203558[_0x8f17('0x2a')]=_0x203558[_0x8f17('0x2a')][_0x8f17('0x2c')]?_0x203558[_0x8f17('0x2a')]:_0x72b699[_0x8f17('0x23')];if(!_0x25c130[_0x8f17('0x25')]['hasOwnProperty'](_0x8f17('0x2d'))){_0x203558[_0x8f17('0x2e')]=qs['limit'](_0x25c130[_0x8f17('0x25')][_0x8f17('0x2e')]);_0x203558[_0x8f17('0x1a')]=qs['offset'](_0x25c130[_0x8f17('0x25')][_0x8f17('0x1a')]);}_0x203558[_0x8f17('0x2f')]=qs[_0x8f17('0x30')](_0x25c130['query'][_0x8f17('0x30')]);_0x203558['where']=qs[_0x8f17('0x28')](_[_0x8f17('0x31')](_0x25c130[_0x8f17('0x25')],_0x72b699[_0x8f17('0x28')]));if(_0x2f2cc4[_0x8f17('0x26')]){if(_0x2f2cc4['dateEnd']){_0x2f2cc4[_0x8f17('0x27')]=moment(_0x2f2cc4[_0x8f17('0x27')])[_0x8f17('0x32')](0x1,'day');}else{_0x2f2cc4[_0x8f17('0x27')]=moment(_0x2f2cc4[_0x8f17('0x26')])[_0x8f17('0x32')](0x1,_0x8f17('0x33'));}_[_0x8f17('0x34')](_0x203558['where'],{'createdAt':{'$gte':_0x2f2cc4[_0x8f17('0x26')],'$lte':_0x2f2cc4[_0x8f17('0x27')]}});}if(_0x25c130[_0x8f17('0x25')]['filter']){_0x203558[_0x8f17('0x35')]=_[_0x8f17('0x34')](_0x203558[_0x8f17('0x35')],{'$or':_['map'](_0x56c7d5,function(_0x2a1ecd){if(_0x2a1ecd[_0x8f17('0x36')][_0x8f17('0x37')]!=='VIRTUAL'){var _0x462538={};_0x462538[_0x2a1ecd['field']]={'$like':'%'+_0x25c130[_0x8f17('0x25')]['filter']+'%'};return _0x462538;}})});}_0x203558=_['merge']({},_0x203558,_0x25c130[_0x8f17('0x38')]);var _0x301467={'where':_0x203558[_0x8f17('0x35')]};return db['CmHopperBlack']['count'](_0x301467)[_0x8f17('0x39')](function(_0x1bf1e0){_0x23166b[_0x8f17('0x19')]=_0x1bf1e0;if(_0x25c130['query'][_0x8f17('0x3a')]){_0x203558[_0x8f17('0x3b')]=[{'all':!![]}];}return db[_0x8f17('0x22')][_0x8f17('0x3c')](_0x203558);})[_0x8f17('0x39')](function(_0x5357e5){_0x23166b[_0x8f17('0x3d')]=_0x5357e5;return _0x23166b;})['then'](respondWithFilteredResult(_0x4958bd,_0x203558))[_0x8f17('0x3e')](handleError(_0x4958bd,null));};exports['show']=function(_0x38fdc7,_0x17870a){var _0x2bf18d={'raw':!![],'where':{'id':_0x38fdc7[_0x8f17('0x3f')]['id']}},_0x228af9={};_0x228af9[_0x8f17('0x23')]=_['keys'](db[_0x8f17('0x22')][_0x8f17('0x40')]);_0x228af9[_0x8f17('0x25')]=_['keys'](_0x38fdc7[_0x8f17('0x25')]);_0x228af9[_0x8f17('0x28')]=_[_0x8f17('0x29')](_0x228af9[_0x8f17('0x23')],_0x228af9[_0x8f17('0x25')]);_0x2bf18d[_0x8f17('0x2a')]=_[_0x8f17('0x29')](_0x228af9[_0x8f17('0x23')],qs[_0x8f17('0x2b')](_0x38fdc7[_0x8f17('0x25')]['fields']));_0x2bf18d['attributes']=_0x2bf18d[_0x8f17('0x2a')][_0x8f17('0x2c')]?_0x2bf18d['attributes']:_0x228af9[_0x8f17('0x23')];if(_0x38fdc7[_0x8f17('0x25')]['includeAll']){_0x2bf18d[_0x8f17('0x3b')]=[{'all':!![]}];}_0x2bf18d=_[_0x8f17('0x34')]({},_0x2bf18d,_0x38fdc7[_0x8f17('0x38')]);return db[_0x8f17('0x22')][_0x8f17('0x41')](_0x2bf18d)['then'](handleEntityNotFound(_0x17870a,null))['then'](respondWithResult(_0x17870a,null))[_0x8f17('0x3e')](handleError(_0x17870a,null));};exports[_0x8f17('0x1d')]=function(_0x404a67,_0x3b00ef){if(_0x404a67[_0x8f17('0x42')]['id']){delete _0x404a67[_0x8f17('0x42')]['id'];}return db[_0x8f17('0x22')][_0x8f17('0x41')]({'where':{'id':_0x404a67[_0x8f17('0x3f')]['id']}})[_0x8f17('0x39')](handleEntityNotFound(_0x3b00ef,null))[_0x8f17('0x39')](saveUpdates(_0x404a67['body'],null))[_0x8f17('0x39')](respondWithResult(_0x3b00ef,null))[_0x8f17('0x3e')](handleError(_0x3b00ef,null));};exports[_0x8f17('0x43')]=function(_0x3854b1,_0x14d7e1){return db[_0x8f17('0x22')]['find']({'where':{'id':_0x3854b1[_0x8f17('0x3f')]['id']}})[_0x8f17('0x39')](handleEntityNotFound(_0x14d7e1,null))[_0x8f17('0x39')](removeEntity(_0x14d7e1,null))[_0x8f17('0x3e')](handleError(_0x14d7e1,null));};exports['describe']=function(_0x595e20,_0xfd7e9d){return db['CmHopperBlack'][_0x8f17('0x44')]()[_0x8f17('0x39')](respondWithResult(_0xfd7e9d,null))[_0x8f17('0x3e')](handleError(_0xfd7e9d,null));};
\ No newline at end of file
+var _0x39a8=['include','body','find','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','lodash','crypto','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','end','status','json','offset','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','CmHopperBlack','model','keys','query','dateEnd','dateStart','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','add','day','where','type','key','field','filter','merge','options','count','includeAll','findAll','rows','catch','params','rawAttributes'];(function(_0x324496,_0x3a4cdd){var _0x899545=function(_0x506ef1){while(--_0x506ef1){_0x324496['push'](_0x324496['shift']());}};_0x899545(++_0x3a4cdd);}(_0x39a8,0x128));var _0x839a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x39a8[_0x20a584];return _0x4b41a8;};'use strict';var pdf=require(_0x839a('0x0'));var emlformat=require(_0x839a('0x1'));var rimraf=require(_0x839a('0x2'));var zipdir=require(_0x839a('0x3'));var jsonpatch=require(_0x839a('0x4'));var rp=require(_0x839a('0x5'));var moment=require('moment');var BPromise=require(_0x839a('0x6'));var Mustache=require(_0x839a('0x7'));var util=require(_0x839a('0x8'));var path=require(_0x839a('0x9'));var sox=require('sox');var csv=require(_0x839a('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x839a('0xb'));var squel=require('squel');var crypto=require(_0x839a('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x839a('0xa'));var querystring=require('querystring');var Papa=require(_0x839a('0xd'));var Redis=require(_0x839a('0xe'));var qs=require(_0x839a('0xf'));var logger=require(_0x839a('0x10'))(_0x839a('0x11'));var utils=require(_0x839a('0x12'));var config=require('../../config/environment');var db=require(_0x839a('0x13'))['db'];function respondWithStatusCode(_0x5df659,_0x2a374e){_0x2a374e=_0x2a374e||0xcc;return function(_0x568589){if(_0x568589){return _0x5df659['sendStatus'](_0x2a374e);}return _0x5df659['status'](_0x2a374e)[_0x839a('0x14')]();};}function respondWithResult(_0x21882f,_0x40a466){_0x40a466=_0x40a466||0xc8;return function(_0xca5efd){if(_0xca5efd){return _0x21882f[_0x839a('0x15')](_0x40a466)[_0x839a('0x16')](_0xca5efd);}};}function respondWithFilteredResult(_0x255da6,_0x956bb5){return function(_0x32f66e){if(_0x32f66e){var _0xce0c6f=_0x32f66e['count'],_0x2805e9=_0x956bb5[_0x839a('0x17')],_0x122807=_0x956bb5[_0x839a('0x17')]+_0x956bb5[_0x839a('0x18')],_0x86512e;if(_0x122807>=_0xce0c6f){_0x122807=_0xce0c6f;_0x86512e=0xc8;}else{_0x86512e=0xce;}_0x255da6['status'](_0x86512e);return _0x255da6['set'](_0x839a('0x19'),_0x2805e9+'-'+_0x122807+'/'+_0xce0c6f)[_0x839a('0x16')](_0x32f66e);}return null;};}function patchUpdates(_0xdcd564){return function(_0x4d3dae){try{jsonpatch[_0x839a('0x1a')](_0x4d3dae,_0xdcd564,!![]);}catch(_0x21ee4d){return BPromise[_0x839a('0x1b')](_0x21ee4d);}return _0x4d3dae[_0x839a('0x1c')]();};}function saveUpdates(_0x489107,_0x4087a3){return function(_0x209f0b){if(_0x209f0b){return _0x209f0b[_0x839a('0x1d')](_0x489107)[_0x839a('0x1e')](function(_0x4ce1e2){return _0x4ce1e2;});}return null;};}function removeEntity(_0x44aa7b,_0x418ccb){return function(_0x1da6be){if(_0x1da6be){return _0x1da6be[_0x839a('0x1f')]()[_0x839a('0x1e')](function(){_0x44aa7b[_0x839a('0x15')](0xcc)[_0x839a('0x14')]();});}};}function handleEntityNotFound(_0x357242,_0x567772){return function(_0xc4d8b){if(!_0xc4d8b){_0x357242['sendStatus'](0x194);}return _0xc4d8b;};}function handleError(_0x1de398,_0x4057ce){_0x4057ce=_0x4057ce||0x1f4;return function(_0x4a701f){logger[_0x839a('0x20')](_0x4a701f[_0x839a('0x21')]);if(_0x4a701f[_0x839a('0x22')]){delete _0x4a701f[_0x839a('0x22')];}_0x1de398[_0x839a('0x15')](_0x4057ce)[_0x839a('0x23')](_0x4a701f);};}exports[_0x839a('0x24')]=function(_0x3deeff,_0x33d794){var _0x28b19e={},_0x3627fd={},_0x1b23a8={'count':0x0,'rows':[]};var _0x4359a4=db[_0x839a('0x25')]['rawAttributes'];_0x3627fd[_0x839a('0x26')]=_[_0x839a('0x27')](_0x4359a4);var _0x42a2be={'dateStart':_0x3deeff[_0x839a('0x28')]['dateStart'],'dateEnd':_0x3deeff[_0x839a('0x28')][_0x839a('0x29')]};delete _0x3deeff[_0x839a('0x28')][_0x839a('0x2a')];delete _0x3deeff[_0x839a('0x28')][_0x839a('0x29')];_0x3627fd[_0x839a('0x28')]=_['keys'](_0x3deeff['query']);_0x3627fd['filters']=_[_0x839a('0x2b')](_0x3627fd['model'],_0x3627fd[_0x839a('0x28')]);_0x28b19e[_0x839a('0x2c')]=_[_0x839a('0x2b')](_0x3627fd['model'],qs[_0x839a('0x2d')](_0x3deeff[_0x839a('0x28')][_0x839a('0x2d')]));_0x28b19e['attributes']=_0x28b19e[_0x839a('0x2c')][_0x839a('0x2e')]?_0x28b19e[_0x839a('0x2c')]:_0x3627fd[_0x839a('0x26')];if(!_0x3deeff['query'][_0x839a('0x2f')](_0x839a('0x30'))){_0x28b19e[_0x839a('0x18')]=qs[_0x839a('0x18')](_0x3deeff[_0x839a('0x28')][_0x839a('0x18')]);_0x28b19e[_0x839a('0x17')]=qs[_0x839a('0x17')](_0x3deeff[_0x839a('0x28')][_0x839a('0x17')]);}_0x28b19e[_0x839a('0x31')]=qs[_0x839a('0x32')](_0x3deeff['query'][_0x839a('0x32')]);_0x28b19e['where']=qs[_0x839a('0x33')](_[_0x839a('0x34')](_0x3deeff[_0x839a('0x28')],_0x3627fd['filters']));if(_0x42a2be[_0x839a('0x2a')]){if(_0x42a2be['dateEnd']){_0x42a2be['dateEnd']=moment(_0x42a2be[_0x839a('0x29')])[_0x839a('0x35')](0x1,_0x839a('0x36'));}else{_0x42a2be[_0x839a('0x29')]=moment(_0x42a2be[_0x839a('0x2a')])[_0x839a('0x35')](0x1,_0x839a('0x36'));}_['merge'](_0x28b19e[_0x839a('0x37')],{'createdAt':{'$gte':_0x42a2be[_0x839a('0x2a')],'$lte':_0x42a2be[_0x839a('0x29')]}});}if(_0x3deeff[_0x839a('0x28')]['filter']){_0x28b19e['where']=_['merge'](_0x28b19e[_0x839a('0x37')],{'$or':_['map'](_0x4359a4,function(_0x24ce6b){if(_0x24ce6b[_0x839a('0x38')][_0x839a('0x39')]!=='VIRTUAL'){var _0x2cd3e6={};_0x2cd3e6[_0x24ce6b[_0x839a('0x3a')]]={'$like':'%'+_0x3deeff[_0x839a('0x28')][_0x839a('0x3b')]+'%'};return _0x2cd3e6;}})});}_0x28b19e=_[_0x839a('0x3c')]({},_0x28b19e,_0x3deeff[_0x839a('0x3d')]);var _0x15519f={'where':_0x28b19e[_0x839a('0x37')]};return db[_0x839a('0x25')]['count'](_0x15519f)['then'](function(_0x57c856){_0x1b23a8[_0x839a('0x3e')]=_0x57c856;if(_0x3deeff[_0x839a('0x28')][_0x839a('0x3f')]){_0x28b19e['include']=[{'all':!![]}];}return db[_0x839a('0x25')][_0x839a('0x40')](_0x28b19e);})[_0x839a('0x1e')](function(_0x56b65a){_0x1b23a8[_0x839a('0x41')]=_0x56b65a;return _0x1b23a8;})[_0x839a('0x1e')](respondWithFilteredResult(_0x33d794,_0x28b19e))[_0x839a('0x42')](handleError(_0x33d794,null));};exports['show']=function(_0x4f4f29,_0x5d77ae){var _0x2b3dcd={'raw':!![],'where':{'id':_0x4f4f29[_0x839a('0x43')]['id']}},_0x2a95ab={};_0x2a95ab[_0x839a('0x26')]=_[_0x839a('0x27')](db[_0x839a('0x25')][_0x839a('0x44')]);_0x2a95ab[_0x839a('0x28')]=_['keys'](_0x4f4f29['query']);_0x2a95ab[_0x839a('0x33')]=_[_0x839a('0x2b')](_0x2a95ab[_0x839a('0x26')],_0x2a95ab[_0x839a('0x28')]);_0x2b3dcd[_0x839a('0x2c')]=_[_0x839a('0x2b')](_0x2a95ab[_0x839a('0x26')],qs[_0x839a('0x2d')](_0x4f4f29[_0x839a('0x28')][_0x839a('0x2d')]));_0x2b3dcd[_0x839a('0x2c')]=_0x2b3dcd[_0x839a('0x2c')]['length']?_0x2b3dcd[_0x839a('0x2c')]:_0x2a95ab[_0x839a('0x26')];if(_0x4f4f29[_0x839a('0x28')][_0x839a('0x3f')]){_0x2b3dcd[_0x839a('0x45')]=[{'all':!![]}];}_0x2b3dcd=_[_0x839a('0x3c')]({},_0x2b3dcd,_0x4f4f29[_0x839a('0x3d')]);return db[_0x839a('0x25')]['find'](_0x2b3dcd)[_0x839a('0x1e')](handleEntityNotFound(_0x5d77ae,null))[_0x839a('0x1e')](respondWithResult(_0x5d77ae,null))[_0x839a('0x42')](handleError(_0x5d77ae,null));};exports[_0x839a('0x1d')]=function(_0xf22680,_0x45ae0a){if(_0xf22680[_0x839a('0x46')]['id']){delete _0xf22680['body']['id'];}return db[_0x839a('0x25')][_0x839a('0x47')]({'where':{'id':_0xf22680[_0x839a('0x43')]['id']}})[_0x839a('0x1e')](handleEntityNotFound(_0x45ae0a,null))[_0x839a('0x1e')](saveUpdates(_0xf22680[_0x839a('0x46')],null))['then'](respondWithResult(_0x45ae0a,null))[_0x839a('0x42')](handleError(_0x45ae0a,null));};exports[_0x839a('0x1f')]=function(_0x47a1e1,_0x35532e){return db[_0x839a('0x25')]['find']({'where':{'id':_0x47a1e1[_0x839a('0x43')]['id']}})[_0x839a('0x1e')](handleEntityNotFound(_0x35532e,null))[_0x839a('0x1e')](removeEntity(_0x35532e,null))[_0x839a('0x42')](handleError(_0x35532e,null));};exports[_0x839a('0x48')]=function(_0x633d44,_0x2e71f5){return db[_0x839a('0x25')][_0x839a('0x48')]()['then'](respondWithResult(_0x2e71f5,null))[_0x839a('0x42')](handleError(_0x2e71f5,null));};
\ No newline at end of file
index 9c7cee4..af7e0b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdedf=['./cmHopperBlack.attributes','exports','define','cm_hopper_black','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x743b6c,_0x4dbc78){var _0x41575a=function(_0x283c63){while(--_0x283c63){_0x743b6c['push'](_0x743b6c['shift']());}};_0x41575a(++_0x4dbc78);}(_0xdedf,0x11c));var _0xfded=function(_0x195ef9,_0x28c1d6){_0x195ef9=_0x195ef9-0x0;var _0x33a2de=_0xdedf[_0x195ef9];return _0x33a2de;};'use strict';var _=require(_0xfded('0x0'));var util=require(_0xfded('0x1'));var logger=require(_0xfded('0x2'))('api');var moment=require(_0xfded('0x3'));var BPromise=require(_0xfded('0x4'));var rp=require(_0xfded('0x5'));var attributes=require(_0xfded('0x6'));module[_0xfded('0x7')]=function(_0x4359a7,_0x51a39c){return _0x4359a7[_0xfded('0x8')]('CmHopperBlack',attributes,{'tableName':_0xfded('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5458=['exports','define','cm_hopper_black','util','moment','request-promise'];(function(_0x36b444,_0x505b35){var _0x786323=function(_0x146af0){while(--_0x146af0){_0x36b444['push'](_0x36b444['shift']());}};_0x786323(++_0x505b35);}(_0x5458,0xb1));var _0x8545=function(_0x4426df,_0x16ca67){_0x4426df=_0x4426df-0x0;var _0x35f87e=_0x5458[_0x4426df];return _0x35f87e;};'use strict';var _=require('lodash');var util=require(_0x8545('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x8545('0x1'));var BPromise=require('bluebird');var rp=require(_0x8545('0x2'));var attributes=require('./cmHopperBlack.attributes');module[_0x8545('0x3')]=function(_0x1254dc,_0x29ad56){return _0x1254dc[_0x8545('0x4')]('CmHopperBlack',attributes,{'tableName':_0x8545('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d437fe..ecfa2de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc098=['attributes','include','map','model','update','body','limit','then','UpdateCmHopperBlack','destroy','moment','bluebird','ioredis','http','request','info','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','CmHopperBlack,\x20%s,\x20%s','message','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where'];(function(_0x40eb47,_0x25bbbe){var _0x59a342=function(_0x95920d){while(--_0x95920d){_0x40eb47['push'](_0x40eb47['shift']());}};_0x59a342(++_0x25bbbe);}(_0xc098,0x64));var _0x8c09=function(_0x2c2b69,_0x12e27e){_0x2c2b69=_0x2c2b69-0x0;var _0x2c16e5=_0xc098[_0x2c2b69];return _0x2c16e5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8c09('0x0'));var BPromise=require(_0x8c09('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8c09('0x2'));var db=require('../../mysqldb')['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'][_0x8c09('0x3')]({'port':0x232a});function respondWithRpcPromise(_0x9e44e4,_0x5a9731,_0x557c40){return new BPromise(function(_0x2c40ca,_0x3255b9){return client[_0x8c09('0x4')](_0x9e44e4,_0x557c40)['then'](function(_0x133afa){logger[_0x8c09('0x5')]('CmHopperBlack,\x20%s,\x20%s',_0x5a9731,_0x8c09('0x6'));logger[_0x8c09('0x7')](_0x8c09('0x8'),_0x5a9731,_0x8c09('0x6'),JSON[_0x8c09('0x9')](_0x133afa));if(_0x133afa[_0x8c09('0xa')]){if(_0x133afa[_0x8c09('0xa')]['code']===0x1f4){logger[_0x8c09('0xa')]('CmHopperBlack,\x20%s,\x20%s',_0x5a9731,_0x133afa[_0x8c09('0xa')]['message']);return _0x3255b9(_0x133afa['error']['message']);}logger[_0x8c09('0xa')](_0x8c09('0xb'),_0x5a9731,_0x133afa[_0x8c09('0xa')][_0x8c09('0xc')]);return _0x2c40ca(_0x133afa[_0x8c09('0xa')][_0x8c09('0xc')]);}else{logger[_0x8c09('0x5')](_0x8c09('0xb'),_0x5a9731,_0x8c09('0x6'));_0x2c40ca(_0x133afa['result'][_0x8c09('0xc')]);}})[_0x8c09('0xd')](function(_0x35a829){logger[_0x8c09('0xa')]('CmHopperBlack,\x20%s,\x20%s',_0x5a9731,_0x35a829);_0x3255b9(_0x35a829);});});}exports[_0x8c09('0xe')]=function(_0x1bea7b){var _0x4fcb31=this;return new Promise(function(_0xd95d7c,_0x21c927){return db[_0x8c09('0xf')][_0x8c09('0x10')]({'raw':_0x1bea7b[_0x8c09('0x11')]?_0x1bea7b[_0x8c09('0x11')][_0x8c09('0x12')]===undefined?!![]:![]:!![],'where':_0x1bea7b[_0x8c09('0x11')]?_0x1bea7b[_0x8c09('0x11')][_0x8c09('0x13')]||null:null,'attributes':_0x1bea7b[_0x8c09('0x11')]?_0x1bea7b[_0x8c09('0x11')][_0x8c09('0x14')]||null:null,'limit':_0x1bea7b['options']?_0x1bea7b['options']['limit']||null:null,'include':_0x1bea7b[_0x8c09('0x11')]?_0x1bea7b[_0x8c09('0x11')][_0x8c09('0x15')]?_[_0x8c09('0x16')](_0x1bea7b['options']['include'],function(_0x128872){return{'model':db[_0x128872[_0x8c09('0x17')]],'as':_0x128872['as'],'attributes':_0x128872[_0x8c09('0x14')],'include':_0x128872[_0x8c09('0x15')]?_[_0x8c09('0x16')](_0x128872['include'],function(_0x5b2915){return{'model':db[_0x5b2915[_0x8c09('0x17')]],'as':_0x5b2915['as'],'attributes':_0x5b2915[_0x8c09('0x14')],'include':_0x5b2915[_0x8c09('0x15')]?_[_0x8c09('0x16')](_0x5b2915['include'],function(_0x55accb){return{'model':db[_0x55accb[_0x8c09('0x17')]],'as':_0x55accb['as'],'attributes':_0x55accb[_0x8c09('0x14')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b7af5){logger[_0x8c09('0x5')]('GetCmHopperBlack',_0x1bea7b);logger[_0x8c09('0x7')](_0x8c09('0xe'),_0x1bea7b,JSON[_0x8c09('0x9')](_0x5b7af5));_0xd95d7c(_0x5b7af5);})[_0x8c09('0xd')](function(_0x54500c){logger[_0x8c09('0xa')](_0x8c09('0xe'),_0x54500c[_0x8c09('0xc')],_0x1bea7b);_0x21c927(_0x4fcb31[_0x8c09('0xa')](0x1f4,_0x54500c[_0x8c09('0xc')]));});});};exports['UpdateCmHopperBlack']=function(_0x4325a2){var _0x18ebb6=this;return new Promise(function(_0x26d342,_0x24d543){return db[_0x8c09('0xf')][_0x8c09('0x18')](_0x4325a2[_0x8c09('0x19')],{'raw':_0x4325a2['options']?_0x4325a2[_0x8c09('0x11')][_0x8c09('0x12')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4325a2['options']?_0x4325a2['options']['where']||null:null,'attributes':_0x4325a2['options']?_0x4325a2[_0x8c09('0x11')][_0x8c09('0x14')]||null:null,'limit':_0x4325a2[_0x8c09('0x11')]?_0x4325a2[_0x8c09('0x11')][_0x8c09('0x1a')]||null:null})[_0x8c09('0x1b')](function(_0x3bfed5){logger['info'](_0x8c09('0x1c'),_0x4325a2);logger['debug']('UpdateCmHopperBlack',_0x4325a2,JSON[_0x8c09('0x9')](_0x3bfed5));_0x26d342(_0x3bfed5);})[_0x8c09('0xd')](function(_0x20f733){logger['error']('UpdateCmHopperBlack',_0x20f733[_0x8c09('0xc')],_0x4325a2);_0x24d543(_0x18ebb6[_0x8c09('0xa')](0x1f4,_0x20f733[_0x8c09('0xc')]));});});};exports['DestroyCmHopperBlack']=function(_0x16b9f2){var _0x57363d=this;return new Promise(function(_0x56a668,_0x47467d){return db[_0x8c09('0xf')][_0x8c09('0x1d')]({'where':_0x16b9f2[_0x8c09('0x11')]?_0x16b9f2[_0x8c09('0x11')][_0x8c09('0x13')]||null:null})[_0x8c09('0x1b')](function(_0x1866f8){logger['info']('DestroyCmHopperBlack',_0x16b9f2);logger[_0x8c09('0x7')]('DestroyCmHopperBlack',_0x16b9f2,JSON['stringify'](_0x1866f8));_0x56a668(_0x1866f8);})[_0x8c09('0xd')](function(_0x3203a7){logger[_0x8c09('0xa')]('DestroyCmHopperBlack',_0x3203a7[_0x8c09('0xc')],_0x16b9f2);_0x47467d(_0x57363d[_0x8c09('0xa')](0x1f4,_0x3203a7[_0x8c09('0xc')]));});});};
\ No newline at end of file
+var _0x3df4=['attributes','debug','UpdateCmHopperBlack','update','body','then','DestroyCmHopperBlack','destroy','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','limit','include','map','model'];(function(_0x23bcec,_0x2ad358){var _0x5d0dd6=function(_0x3e7a65){while(--_0x3e7a65){_0x23bcec['push'](_0x23bcec['shift']());}};_0x5d0dd6(++_0x2ad358);}(_0x3df4,0x112));var _0x43df=function(_0x449750,_0x434522){_0x449750=_0x449750-0x0;var _0x414c17=_0x3df4[_0x449750];return _0x414c17;};'use strict';var _=require(_0x43df('0x0'));var util=require(_0x43df('0x1'));var moment=require(_0x43df('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x43df('0x3'));var db=require(_0x43df('0x4'))['db'];var utils=require(_0x43df('0x5'));var logger=require(_0x43df('0x6'))(_0x43df('0x7'));var config=require(_0x43df('0x8'));var jayson=require(_0x43df('0x9'));var client=jayson['client'][_0x43df('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24bf03,_0x53e1ba,_0x488ed5){return new BPromise(function(_0x49b0e9,_0xe26ac){return client['request'](_0x24bf03,_0x488ed5)['then'](function(_0x3a9495){logger[_0x43df('0xb')](_0x43df('0xc'),_0x53e1ba,_0x43df('0xd'));logger['debug'](_0x43df('0xe'),_0x53e1ba,'request\x20sent',JSON[_0x43df('0xf')](_0x3a9495));if(_0x3a9495[_0x43df('0x10')]){if(_0x3a9495[_0x43df('0x10')][_0x43df('0x11')]===0x1f4){logger[_0x43df('0x10')](_0x43df('0xc'),_0x53e1ba,_0x3a9495[_0x43df('0x10')][_0x43df('0x12')]);return _0xe26ac(_0x3a9495[_0x43df('0x10')][_0x43df('0x12')]);}logger[_0x43df('0x10')](_0x43df('0xc'),_0x53e1ba,_0x3a9495[_0x43df('0x10')][_0x43df('0x12')]);return _0x49b0e9(_0x3a9495[_0x43df('0x10')]['message']);}else{logger['info'](_0x43df('0xc'),_0x53e1ba,_0x43df('0xd'));_0x49b0e9(_0x3a9495['result'][_0x43df('0x12')]);}})[_0x43df('0x13')](function(_0x49fcd9){logger[_0x43df('0x10')]('CmHopperBlack,\x20%s,\x20%s',_0x53e1ba,_0x49fcd9);_0xe26ac(_0x49fcd9);});});}exports[_0x43df('0x14')]=function(_0x492223){var _0xb81ad0=this;return new Promise(function(_0x466683,_0x7071e1){return db[_0x43df('0x15')][_0x43df('0x16')]({'raw':_0x492223[_0x43df('0x17')]?_0x492223['options'][_0x43df('0x18')]===undefined?!![]:![]:!![],'where':_0x492223[_0x43df('0x17')]?_0x492223[_0x43df('0x17')][_0x43df('0x19')]||null:null,'attributes':_0x492223[_0x43df('0x17')]?_0x492223['options']['attributes']||null:null,'limit':_0x492223['options']?_0x492223[_0x43df('0x17')][_0x43df('0x1a')]||null:null,'include':_0x492223[_0x43df('0x17')]?_0x492223[_0x43df('0x17')][_0x43df('0x1b')]?_[_0x43df('0x1c')](_0x492223[_0x43df('0x17')][_0x43df('0x1b')],function(_0x3f21d6){return{'model':db[_0x3f21d6[_0x43df('0x1d')]],'as':_0x3f21d6['as'],'attributes':_0x3f21d6[_0x43df('0x1e')],'include':_0x3f21d6[_0x43df('0x1b')]?_['map'](_0x3f21d6['include'],function(_0x38577f){return{'model':db[_0x38577f[_0x43df('0x1d')]],'as':_0x38577f['as'],'attributes':_0x38577f['attributes'],'include':_0x38577f[_0x43df('0x1b')]?_[_0x43df('0x1c')](_0x38577f[_0x43df('0x1b')],function(_0x37d316){return{'model':db[_0x37d316[_0x43df('0x1d')]],'as':_0x37d316['as'],'attributes':_0x37d316['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x23aade){logger[_0x43df('0xb')]('GetCmHopperBlack',_0x492223);logger[_0x43df('0x1f')](_0x43df('0x14'),_0x492223,JSON[_0x43df('0xf')](_0x23aade));_0x466683(_0x23aade);})[_0x43df('0x13')](function(_0x32a4b9){logger[_0x43df('0x10')](_0x43df('0x14'),_0x32a4b9['message'],_0x492223);_0x7071e1(_0xb81ad0[_0x43df('0x10')](0x1f4,_0x32a4b9[_0x43df('0x12')]));});});};exports[_0x43df('0x20')]=function(_0x1414a2){var _0x5e6342=this;return new Promise(function(_0x248fee,_0x3e7eb5){return db[_0x43df('0x15')][_0x43df('0x21')](_0x1414a2[_0x43df('0x22')],{'raw':_0x1414a2[_0x43df('0x17')]?_0x1414a2[_0x43df('0x17')][_0x43df('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1414a2['options']?_0x1414a2[_0x43df('0x17')][_0x43df('0x19')]||null:null,'attributes':_0x1414a2['options']?_0x1414a2['options'][_0x43df('0x1e')]||null:null,'limit':_0x1414a2[_0x43df('0x17')]?_0x1414a2['options'][_0x43df('0x1a')]||null:null})[_0x43df('0x23')](function(_0x1691c4){logger[_0x43df('0xb')](_0x43df('0x20'),_0x1414a2);logger[_0x43df('0x1f')]('UpdateCmHopperBlack',_0x1414a2,JSON[_0x43df('0xf')](_0x1691c4));_0x248fee(_0x1691c4);})[_0x43df('0x13')](function(_0x392658){logger[_0x43df('0x10')](_0x43df('0x20'),_0x392658[_0x43df('0x12')],_0x1414a2);_0x3e7eb5(_0x5e6342['error'](0x1f4,_0x392658[_0x43df('0x12')]));});});};exports[_0x43df('0x24')]=function(_0xe2b015){var _0x5a9dc5=this;return new Promise(function(_0x455658,_0xbdb95c){return db[_0x43df('0x15')][_0x43df('0x25')]({'where':_0xe2b015[_0x43df('0x17')]?_0xe2b015[_0x43df('0x17')][_0x43df('0x19')]||null:null})['then'](function(_0x11162c){logger[_0x43df('0xb')](_0x43df('0x24'),_0xe2b015);logger['debug'](_0x43df('0x24'),_0xe2b015,JSON[_0x43df('0xf')](_0x11162c));_0x455658(_0x11162c);})['catch'](function(_0x4b1a9d){logger['error'](_0x43df('0x24'),_0x4b1a9d[_0x43df('0x12')],_0xe2b015);_0xbdb95c(_0x5a9dc5[_0x43df('0x10')](0x1f4,_0x4b1a9d[_0x43df('0x12')]));});});};
\ No newline at end of file
index 2c8d868..686e326 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x406f=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','describe','show','/:id','update','delete','destroy','exports','multer','path'];(function(_0x2d9311,_0x458a07){var _0x5e4e1c=function(_0x517362){while(--_0x517362){_0x2d9311['push'](_0x2d9311['shift']());}};_0x5e4e1c(++_0x458a07);}(_0x406f,0xe8));var _0xf406=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x406f[_0x4e9d3c];return _0x2d0825;};'use strict';var multer=require(_0xf406('0x0'));var util=require('util');var path=require(_0xf406('0x1'));var timeout=require('connect-timeout');var express=require(_0xf406('0x2'));var router=express[_0xf406('0x3')]();var auth=require(_0xf406('0x4'));var interaction=require(_0xf406('0x5'));var config=require(_0xf406('0x6'));var controller=require(_0xf406('0x7'));router[_0xf406('0x8')]('/',auth[_0xf406('0x9')](),controller[_0xf406('0xa')]);router[_0xf406('0x8')]('/describe',auth[_0xf406('0x9')](),controller[_0xf406('0xb')]);router[_0xf406('0x8')]('/:id',auth[_0xf406('0x9')](),controller[_0xf406('0xc')]);router['put'](_0xf406('0xd'),auth['isAuthenticated'](),controller[_0xf406('0xe')]);router[_0xf406('0xf')](_0xf406('0xd'),auth[_0xf406('0x9')](),controller[_0xf406('0x10')]);module[_0xf406('0x11')]=router;
\ No newline at end of file
+var _0x4737=['path','connect-timeout','express','Router','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','put','delete','destroy','exports','multer','util'];(function(_0x21cb7f,_0x48cd16){var _0x5a079a=function(_0x569a4f){while(--_0x569a4f){_0x21cb7f['push'](_0x21cb7f['shift']());}};_0x5a079a(++_0x48cd16);}(_0x4737,0x141));var _0x7473=function(_0x54bc39,_0x137a8f){_0x54bc39=_0x54bc39-0x0;var _0x29073b=_0x4737[_0x54bc39];return _0x29073b;};'use strict';var multer=require(_0x7473('0x0'));var util=require(_0x7473('0x1'));var path=require(_0x7473('0x2'));var timeout=require(_0x7473('0x3'));var express=require(_0x7473('0x4'));var router=express[_0x7473('0x5')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7473('0x6'));var controller=require('./cmHopperBlack.controller');router[_0x7473('0x7')]('/',auth[_0x7473('0x8')](),controller[_0x7473('0x9')]);router['get'](_0x7473('0xa'),auth[_0x7473('0x8')](),controller['describe']);router[_0x7473('0x7')](_0x7473('0xb'),auth[_0x7473('0x8')](),controller[_0x7473('0xc')]);router[_0x7473('0xd')](_0x7473('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x7473('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x7473('0xf')]);module[_0x7473('0x10')]=router;
\ No newline at end of file
index 7e4e93e..091031d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadff=['INTEGER','getDataValue','endtime','setDataValue','followuptime','diff','dispositionat','BOOLEAN','sequelize','moment','exports','STRING','DATE'];(function(_0x54d59b,_0xc0c634){var _0x1be5c0=function(_0x3d3464){while(--_0x3d3464){_0x54d59b['push'](_0x54d59b['shift']());}};_0x1be5c0(++_0xc0c634);}(_0xadff,0x8a));var _0xfadf=function(_0x353bbe,_0x160113){_0x353bbe=_0x353bbe-0x0;var _0x32eab7=_0xadff[_0x353bbe];return _0x32eab7;};'use strict';var Sequelize=require(_0xfadf('0x0'));var moment=require(_0xfadf('0x1'));module[_0xfadf('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xfadf('0x3')]},'scheduledat':{'type':Sequelize[_0xfadf('0x4')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xfadf('0x5')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xfadf('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xfadf('0x3')]},'originatecalleridname':{'type':Sequelize[_0xfadf('0x3')]},'calleridnum':{'type':Sequelize[_0xfadf('0x3')]},'calleridname':{'type':Sequelize[_0xfadf('0x3')]},'starttime':{'type':Sequelize[_0xfadf('0x4')]},'responsetime':{'type':Sequelize[_0xfadf('0x4')]},'answertime':{'type':Sequelize[_0xfadf('0x4')]},'droptime':{'type':Sequelize[_0xfadf('0x4')]},'endtime':{'type':Sequelize[_0xfadf('0x4')]},'ringtime':{'type':Sequelize[_0xfadf('0x5')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xfadf('0x5')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xfadf('0x5')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xfadf('0x5')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xfadf('0x3')]},'campaign':{'type':Sequelize[_0xfadf('0x3')]},'campaigntype':{'type':Sequelize[_0xfadf('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0xfadf('0x3')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x29e073){var _0xc976c0=this[_0xfadf('0x6')](_0xfadf('0x7'));if(_0xc976c0&&_0x29e073){this[_0xfadf('0x8')](_0xfadf('0x9'),moment(_0x29e073)[_0xfadf('0xa')](moment(_0xc976c0),'seconds'));}return this[_0xfadf('0x8')](_0xfadf('0xb'),_0x29e073);}},'amd':{'type':Sequelize[_0xfadf('0xc')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xfadf('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xfadf('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xfadf('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xfadf('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xfadf('0x4')]},'deleted':{'type':Sequelize[_0xfadf('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xfadf('0x4')]},'recallme':{'type':Sequelize[_0xfadf('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xfadf('0x4')]}};
\ No newline at end of file
+var _0xae24=['STRING','DATE','endtime','setDataValue','followuptime','diff','dispositionat','BOOLEAN','moment','exports','INTEGER'];(function(_0xe13bf9,_0x3db04c){var _0x35d132=function(_0x5270ab){while(--_0x5270ab){_0xe13bf9['push'](_0xe13bf9['shift']());}};_0x35d132(++_0x3db04c);}(_0xae24,0x13c));var _0x4ae2=function(_0x21bd24,_0x18748e){_0x21bd24=_0x21bd24-0x0;var _0x502574=_0xae24[_0x21bd24];return _0x502574;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x4ae2('0x0'));module[_0x4ae2('0x1')]={'state':{'type':Sequelize[_0x4ae2('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x4ae2('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4ae2('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x4ae2('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x4ae2('0x3')]},'originatecalleridname':{'type':Sequelize[_0x4ae2('0x3')]},'calleridnum':{'type':Sequelize[_0x4ae2('0x3')]},'calleridname':{'type':Sequelize[_0x4ae2('0x3')]},'starttime':{'type':Sequelize[_0x4ae2('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x4ae2('0x4')]},'ringtime':{'type':Sequelize[_0x4ae2('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x4ae2('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x4ae2('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x4ae2('0x3')]},'campaign':{'type':Sequelize[_0x4ae2('0x3')]},'campaigntype':{'type':Sequelize[_0x4ae2('0x3')]},'membername':{'type':Sequelize[_0x4ae2('0x3')]},'reason':{'type':Sequelize[_0x4ae2('0x3')]},'disposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x5c7915){var _0x48a37d=this['getDataValue'](_0x4ae2('0x5'));if(_0x48a37d&&_0x5c7915){this[_0x4ae2('0x6')](_0x4ae2('0x7'),moment(_0x5c7915)[_0x4ae2('0x8')](moment(_0x48a37d),'seconds'));}return this['setDataValue'](_0x4ae2('0x9'),_0x5c7915);}},'amd':{'type':Sequelize[_0x4ae2('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0x4ae2('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x4ae2('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x4ae2('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4ae2('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4ae2('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x4ae2('0x4')]},'recallme':{'type':Sequelize[_0x4ae2('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x4ae2('0x4')]}};
\ No newline at end of file
index 485923c..7d2c462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b8=['order','pick','add','day','merge','where','filter','map','type','key','VIRTUAL','field','options','includeAll','include','rows','catch','params','length','find','describe','body','countContactsQueueCampaignHopperFinal','findAll','COUNT','sequelize','literal','`state`\x20=\x200,\x201,\x20null','noAnswerContacts','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','fromQuery','phone','ContactId','VoiceQueueId','createdAt','updatedAt','select','ANY_VALUE(calleridnum)','NOW()','scheduledAt','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ListId','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','cm_hopper','state\x20=\x204','group','Campaign','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','json','count','offset','limit','status','set','Content-Range','apply','reject','update','then','sendStatus','error','stack','name','send','index','CmHopperFinal','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','fields','attributes','nolimit'];(function(_0x47cfc8,_0xf497dd){var _0x5a9732=function(_0x51639f){while(--_0x51639f){_0x47cfc8['push'](_0x47cfc8['shift']());}};_0x5a9732(++_0xf497dd);}(_0x15b8,0xcd));var _0x815b=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x15b8[_0x3bf83f];return _0x22c4a9;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x815b('0x0'));var rimraf=require(_0x815b('0x1'));var zipdir=require(_0x815b('0x2'));var jsonpatch=require(_0x815b('0x3'));var rp=require(_0x815b('0x4'));var moment=require('moment');var BPromise=require(_0x815b('0x5'));var Mustache=require(_0x815b('0x6'));var util=require(_0x815b('0x7'));var path=require(_0x815b('0x8'));var sox=require(_0x815b('0x9'));var csv=require(_0x815b('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x815b('0xb'));var squel=require(_0x815b('0xc'));var crypto=require(_0x815b('0xd'));var jsforce=require(_0x815b('0xe'));var deskjs=require(_0x815b('0xf'));var toCsv=require(_0x815b('0xa'));var querystring=require(_0x815b('0x10'));var Papa=require(_0x815b('0x11'));var Redis=require(_0x815b('0x12'));var qs=require(_0x815b('0x13'));var logger=require(_0x815b('0x14'))(_0x815b('0x15'));var utils=require(_0x815b('0x16'));var config=require(_0x815b('0x17'));var db=require(_0x815b('0x18'))['db'];function respondWithStatusCode(_0x4775f6,_0x22613e){_0x22613e=_0x22613e||0xcc;return function(_0x180254){if(_0x180254){return _0x4775f6['sendStatus'](_0x22613e);}return _0x4775f6['status'](_0x22613e)[_0x815b('0x19')]();};}function respondWithResult(_0x1d25ab,_0x512bc8){_0x512bc8=_0x512bc8||0xc8;return function(_0x53453b){if(_0x53453b){return _0x1d25ab['status'](_0x512bc8)[_0x815b('0x1a')](_0x53453b);}};}function respondWithFilteredResult(_0x5c89eb,_0x5814ee){return function(_0x3dbba1){if(_0x3dbba1){var _0xba812b=_0x3dbba1[_0x815b('0x1b')],_0x1f4aae=_0x5814ee[_0x815b('0x1c')],_0x59ea04=_0x5814ee[_0x815b('0x1c')]+_0x5814ee[_0x815b('0x1d')],_0x495431;if(_0x59ea04>=_0xba812b){_0x59ea04=_0xba812b;_0x495431=0xc8;}else{_0x495431=0xce;}_0x5c89eb[_0x815b('0x1e')](_0x495431);return _0x5c89eb[_0x815b('0x1f')](_0x815b('0x20'),_0x1f4aae+'-'+_0x59ea04+'/'+_0xba812b)[_0x815b('0x1a')](_0x3dbba1);}return null;};}function patchUpdates(_0x26a8a3){return function(_0x2fa2bd){try{jsonpatch[_0x815b('0x21')](_0x2fa2bd,_0x26a8a3,!![]);}catch(_0x385978){return BPromise[_0x815b('0x22')](_0x385978);}return _0x2fa2bd['save']();};}function saveUpdates(_0x4313a9,_0x348faa){return function(_0x119bc8){if(_0x119bc8){return _0x119bc8[_0x815b('0x23')](_0x4313a9)[_0x815b('0x24')](function(_0x4acb47){return _0x4acb47;});}return null;};}function removeEntity(_0x431705,_0x2f7f8b){return function(_0x134b42){if(_0x134b42){return _0x134b42['destroy']()['then'](function(){_0x431705[_0x815b('0x1e')](0xcc)[_0x815b('0x19')]();});}};}function handleEntityNotFound(_0x30208e,_0xef3b1d){return function(_0xe36d21){if(!_0xe36d21){_0x30208e[_0x815b('0x25')](0x194);}return _0xe36d21;};}function handleError(_0x11f1c1,_0x480c89){_0x480c89=_0x480c89||0x1f4;return function(_0x4a2431){logger[_0x815b('0x26')](_0x4a2431[_0x815b('0x27')]);if(_0x4a2431[_0x815b('0x28')]){delete _0x4a2431[_0x815b('0x28')];}_0x11f1c1[_0x815b('0x1e')](_0x480c89)[_0x815b('0x29')](_0x4a2431);};}exports[_0x815b('0x2a')]=function(_0x26f465,_0x57345c){var _0x27b4e1={},_0x39a5fa={},_0x299898={'count':0x0,'rows':[]};var _0x522b9e=db[_0x815b('0x2b')][_0x815b('0x2c')];_0x39a5fa['model']=_[_0x815b('0x2d')](_0x522b9e);var _0x2b02cd={'dateStart':_0x26f465[_0x815b('0x2e')][_0x815b('0x2f')],'dateEnd':_0x26f465[_0x815b('0x2e')][_0x815b('0x30')]};delete _0x26f465[_0x815b('0x2e')][_0x815b('0x2f')];delete _0x26f465[_0x815b('0x2e')][_0x815b('0x30')];_0x39a5fa['query']=_[_0x815b('0x2d')](_0x26f465[_0x815b('0x2e')]);_0x39a5fa[_0x815b('0x31')]=_[_0x815b('0x32')](_0x39a5fa[_0x815b('0x33')],_0x39a5fa[_0x815b('0x2e')]);_0x27b4e1['attributes']=_[_0x815b('0x32')](_0x39a5fa[_0x815b('0x33')],qs[_0x815b('0x34')](_0x26f465[_0x815b('0x2e')][_0x815b('0x34')]));_0x27b4e1['attributes']=_0x27b4e1[_0x815b('0x35')]['length']?_0x27b4e1[_0x815b('0x35')]:_0x39a5fa[_0x815b('0x33')];if(!_0x26f465[_0x815b('0x2e')]['hasOwnProperty'](_0x815b('0x36'))){_0x27b4e1['limit']=qs['limit'](_0x26f465['query'][_0x815b('0x1d')]);_0x27b4e1['offset']=qs[_0x815b('0x1c')](_0x26f465['query'][_0x815b('0x1c')]);}_0x27b4e1[_0x815b('0x37')]=qs['sort'](_0x26f465[_0x815b('0x2e')]['sort']);_0x27b4e1['where']=qs[_0x815b('0x31')](_[_0x815b('0x38')](_0x26f465[_0x815b('0x2e')],_0x39a5fa['filters']));if(_0x2b02cd[_0x815b('0x2f')]){if(_0x2b02cd[_0x815b('0x30')]){_0x2b02cd[_0x815b('0x30')]=moment(_0x2b02cd['dateEnd'])[_0x815b('0x39')](0x1,_0x815b('0x3a'));}else{_0x2b02cd[_0x815b('0x30')]=moment(_0x2b02cd['dateStart'])[_0x815b('0x39')](0x1,_0x815b('0x3a'));}_[_0x815b('0x3b')](_0x27b4e1[_0x815b('0x3c')],{'createdAt':{'$gte':_0x2b02cd[_0x815b('0x2f')],'$lte':_0x2b02cd['dateEnd']}});}if(_0x26f465['query'][_0x815b('0x3d')]){_0x27b4e1['where']=_['merge'](_0x27b4e1[_0x815b('0x3c')],{'$or':_[_0x815b('0x3e')](_0x522b9e,function(_0x49629d){if(_0x49629d[_0x815b('0x3f')][_0x815b('0x40')]!==_0x815b('0x41')){var _0x2c8749={};_0x2c8749[_0x49629d[_0x815b('0x42')]]={'$like':'%'+_0x26f465[_0x815b('0x2e')][_0x815b('0x3d')]+'%'};return _0x2c8749;}})});}_0x27b4e1=_['merge']({},_0x27b4e1,_0x26f465[_0x815b('0x43')]);var _0x41ba11={'where':_0x27b4e1[_0x815b('0x3c')]};return db[_0x815b('0x2b')][_0x815b('0x1b')](_0x41ba11)[_0x815b('0x24')](function(_0x58645b){_0x299898[_0x815b('0x1b')]=_0x58645b;if(_0x26f465[_0x815b('0x2e')][_0x815b('0x44')]){_0x27b4e1[_0x815b('0x45')]=[{'all':!![]}];}return db[_0x815b('0x2b')]['findAll'](_0x27b4e1);})[_0x815b('0x24')](function(_0x44a8a7){_0x299898[_0x815b('0x46')]=_0x44a8a7;return _0x299898;})[_0x815b('0x24')](respondWithFilteredResult(_0x57345c,_0x27b4e1))[_0x815b('0x47')](handleError(_0x57345c,null));};exports['show']=function(_0x113fe0,_0x26c98c){var _0x40c4e8={'raw':!![],'where':{'id':_0x113fe0[_0x815b('0x48')]['id']}},_0x1071c1={};_0x1071c1[_0x815b('0x33')]=_[_0x815b('0x2d')](db['CmHopperFinal'][_0x815b('0x2c')]);_0x1071c1['query']=_[_0x815b('0x2d')](_0x113fe0[_0x815b('0x2e')]);_0x1071c1[_0x815b('0x31')]=_[_0x815b('0x32')](_0x1071c1[_0x815b('0x33')],_0x1071c1[_0x815b('0x2e')]);_0x40c4e8[_0x815b('0x35')]=_['intersection'](_0x1071c1[_0x815b('0x33')],qs[_0x815b('0x34')](_0x113fe0['query'][_0x815b('0x34')]));_0x40c4e8[_0x815b('0x35')]=_0x40c4e8[_0x815b('0x35')][_0x815b('0x49')]?_0x40c4e8[_0x815b('0x35')]:_0x1071c1[_0x815b('0x33')];if(_0x113fe0[_0x815b('0x2e')][_0x815b('0x44')]){_0x40c4e8['include']=[{'all':!![]}];}_0x40c4e8=_[_0x815b('0x3b')]({},_0x40c4e8,_0x113fe0[_0x815b('0x43')]);return db[_0x815b('0x2b')][_0x815b('0x4a')](_0x40c4e8)['then'](handleEntityNotFound(_0x26c98c,null))[_0x815b('0x24')](respondWithResult(_0x26c98c,null))[_0x815b('0x47')](handleError(_0x26c98c,null));};exports[_0x815b('0x4b')]=function(_0x37874d,_0x1fd570){return db[_0x815b('0x2b')]['describe']()[_0x815b('0x24')](respondWithResult(_0x1fd570,null))[_0x815b('0x47')](handleError(_0x1fd570,null));};exports[_0x815b('0x23')]=function(_0x5a1f69,_0x5cd7d8){if(_0x5a1f69['body']['uniqueid']){delete _0x5a1f69[_0x815b('0x4c')]['uniqueid'];}return db[_0x815b('0x2b')][_0x815b('0x4a')]({'where':{'uniqueid':_0x5a1f69['params']['id']}})[_0x815b('0x24')](handleEntityNotFound(_0x5cd7d8,null))[_0x815b('0x24')](saveUpdates(_0x5a1f69[_0x815b('0x4c')],null))[_0x815b('0x24')](respondWithResult(_0x5cd7d8,null))[_0x815b('0x47')](handleError(_0x5cd7d8,null));};exports[_0x815b('0x4d')]=function(_0x301b5c,_0x52aa0a,_0x266803){return db[_0x815b('0x2b')][_0x815b('0x4e')]({'raw':![],'where':{'VoiceQueueId':_0x301b5c[_0x815b('0x48')]['id']},'attributes':[[db['sequelize']['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')](_0x815b('0x52')))),'noSuchContacts'],[db['sequelize']['fn']('COUNT',db[_0x815b('0x50')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x203,\x201,\x20null'))),_0x815b('0x53')],[db[_0x815b('0x50')]['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')]('`state`\x20=\x205,\x201,\x20null'))),_0x815b('0x54')],[db[_0x815b('0x50')]['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db['sequelize'][_0x815b('0x51')]('`state`\x20=\x208,\x201,\x20null'))),_0x815b('0x55')],[db[_0x815b('0x50')]['fn']('COUNT',db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')](_0x815b('0x56')))),_0x815b('0x57')],[db['sequelize']['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')](_0x815b('0x58')))),_0x815b('0x59')],[db[_0x815b('0x50')]['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')](_0x815b('0x5a')))),_0x815b('0x5b')]]})[_0x815b('0x24')](handleEntityNotFound(_0x52aa0a,null))[_0x815b('0x24')](respondWithResult(_0x52aa0a,null))[_0x815b('0x47')](handleError(_0x52aa0a,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0xa7f471,_0x20aa2c,_0x59391e){return db[_0x815b('0x2b')][_0x815b('0x4e')]({'raw':![],'where':{'CampaignId':_0xa7f471[_0x815b('0x48')]['id']},'attributes':[[db['sequelize']['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')]('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db[_0x815b('0x50')]['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')]('`state`\x20=\x203,\x201,\x20null'))),_0x815b('0x53')],[db[_0x815b('0x50')]['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')](_0x815b('0x5c')))),_0x815b('0x54')],[db['sequelize']['fn']('COUNT',db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')](_0x815b('0x5d')))),_0x815b('0x55')],[db[_0x815b('0x50')]['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db[_0x815b('0x50')][_0x815b('0x51')](_0x815b('0x56')))),_0x815b('0x57')],[db['sequelize']['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db['sequelize'][_0x815b('0x51')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x815b('0x59')],[db[_0x815b('0x50')]['fn'](_0x815b('0x4f'),db[_0x815b('0x50')]['fn']('IF',db['sequelize'][_0x815b('0x51')](_0x815b('0x5a')))),_0x815b('0x5b')]]})[_0x815b('0x24')](handleEntityNotFound(_0x20aa2c,null))[_0x815b('0x24')](respondWithResult(_0x20aa2c,null))[_0x815b('0x47')](handleError(_0x20aa2c,null));};exports[_0x815b('0x5e')]=function(_0x1f988a,_0x2086ce,_0x2dded0){return db[_0x815b('0x5f')][_0x815b('0x4a')]({'where':{'id':_0x1f988a[_0x815b('0x48')]['id']}})[_0x815b('0x24')](handleEntityNotFound(_0x2086ce,null))[_0x815b('0x24')](function(_0x296d1e){var _0x2fae1f;if(_0x296d1e){_0x2fae1f=squel[_0x815b('0x60')]()[_0x815b('0x61')]('cm_hopper')[_0x815b('0x62')]([_0x815b('0x63'),'scheduledAt',_0x815b('0x64'),'ListId',_0x815b('0x65'),_0x815b('0x66'),_0x815b('0x67')],squel[_0x815b('0x68')]()[_0x815b('0x42')](_0x815b('0x69'),_0x815b('0x63'))[_0x815b('0x42')](_0x815b('0x6a'),_0x815b('0x6b'))['field'](_0x815b('0x6c'),_0x815b('0x64'))['field'](_0x815b('0x6d'),_0x815b('0x6e'))['field'](_0x815b('0x6f'),'VoiceQueueId')['field'](_0x815b('0x6a'),_0x815b('0x66'))['field'](_0x815b('0x6a'),_0x815b('0x67'))[_0x815b('0x70')](_0x815b('0x71'))['where'](_0x815b('0x72'),_0x1f988a[_0x815b('0x48')]['id']['toString']())['where'](_0x815b('0x73'),_0x1f988a[_0x815b('0x4c')][_0x815b('0x74')][_0x815b('0x75')]())[_0x815b('0x3c')](_0x815b('0x76'))[_0x815b('0x3c')](_0x815b('0x77'),squel['select']()['field'](_0x815b('0x63'))[_0x815b('0x70')](_0x815b('0x78'))[_0x815b('0x3c')](_0x815b('0x72'),_0x1f988a[_0x815b('0x48')]['id'][_0x815b('0x75')]()))[_0x815b('0x3c')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x815b('0x68')]()[_0x815b('0x42')]('calleridnum')['from']('cm_hopper_final')[_0x815b('0x3c')](_0x815b('0x72'),_0x1f988a['params']['id'][_0x815b('0x75')]())[_0x815b('0x3c')](_0x815b('0x79')))[_0x815b('0x7a')](_0x815b('0x64')))['toString']();return db['sequelize'][_0x815b('0x2e')](_0x2fae1f);}return[];})[_0x815b('0x24')](respondWithResult(_0x2086ce,null))[_0x815b('0x47')](handleError(_0x2086ce,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x31f99d,_0x4fbe2,_0x1bdf4e){return db[_0x815b('0x7b')][_0x815b('0x4a')]({'where':{'id':_0x31f99d['params']['id']}})[_0x815b('0x24')](handleEntityNotFound(_0x4fbe2,null))['then'](function(_0x297606){var _0x2261bc;if(_0x297606){_0x2261bc=squel[_0x815b('0x60')]()['into']('cm_hopper')[_0x815b('0x62')]([_0x815b('0x63'),'scheduledAt',_0x815b('0x64'),'ListId',_0x815b('0x7c'),'createdAt',_0x815b('0x67')],squel[_0x815b('0x68')]()[_0x815b('0x42')](_0x815b('0x69'),'phone')[_0x815b('0x42')]('NOW()','scheduledAt')[_0x815b('0x42')](_0x815b('0x6c'),_0x815b('0x64'))[_0x815b('0x42')](_0x815b('0x6d'),_0x815b('0x6e'))['field'](_0x815b('0x7d'),_0x815b('0x7c'))[_0x815b('0x42')]('NOW()',_0x815b('0x66'))['field']('NOW()',_0x815b('0x67'))[_0x815b('0x70')]('cm_hopper_final')[_0x815b('0x3c')](_0x815b('0x7e'),_0x31f99d[_0x815b('0x48')]['id'][_0x815b('0x75')]())['where'](_0x815b('0x73'),_0x31f99d[_0x815b('0x4c')][_0x815b('0x74')][_0x815b('0x75')]())['where'](_0x815b('0x76'))[_0x815b('0x3c')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x815b('0x68')]()[_0x815b('0x42')]('phone')[_0x815b('0x70')](_0x815b('0x78'))['where']('CampaignId\x20=\x20?',_0x31f99d[_0x815b('0x48')]['id']['toString']()))[_0x815b('0x3c')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x815b('0x68')]()[_0x815b('0x42')](_0x815b('0x7f'))[_0x815b('0x70')](_0x815b('0x71'))[_0x815b('0x3c')](_0x815b('0x7e'),_0x31f99d[_0x815b('0x48')]['id'][_0x815b('0x75')]())[_0x815b('0x3c')]('state\x20=\x204'))[_0x815b('0x7a')](_0x815b('0x64')))[_0x815b('0x75')]();return db[_0x815b('0x50')][_0x815b('0x2e')](_0x2261bc);}return[];})[_0x815b('0x24')](respondWithResult(_0x4fbe2,null))['catch'](handleError(_0x4fbe2,null));};exports['checkContactHopper']=function(_0x5bf191,_0x35e4dd,_0x249e5a){return db[_0x815b('0x80')][_0x815b('0x81')]({'where':{'VoiceQueueId':_0x5bf191[_0x815b('0x4c')][_0x815b('0x65')],'CampaignId':_0x5bf191['body'][_0x815b('0x7c')],'ContactId':_0x5bf191[_0x815b('0x4c')]['ContactId']}})[_0x815b('0x24')](handleEntityNotFound(_0x35e4dd,null))[_0x815b('0x24')](function(_0x5b0a55){if(_0x5b0a55){return _0x5b0a55;}return null;})[_0x815b('0x24')](respondWithResult(_0x35e4dd,null))[_0x815b('0x47')](handleError(_0x35e4dd,null));};
\ No newline at end of file
+var _0x9f89=['rows','show','rawAttributes','includeAll','find','catch','describe','body','uniqueid','params','countContactsQueueCampaignHopperFinal','findAll','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','dropContacts','abandonedContacts','reCallContacts','countContactsIvrCampaignHopperFinal','noSuchContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','cm_hopper','phone','ContactId','ListId','updatedAt','select','ANY_VALUE(calleridnum)','scheduledAt','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','NOW()','from','VoiceQueueId\x20=\x20?','toString','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','into','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','state\x20=\x20?','cm_hopper_final','CmHopper','findOne','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','set','reject','update','destroy','then','error','stack','name','send','index','query','dateStart','dateEnd','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','day','merge','where','filter','map','type','key','VIRTUAL','field','options','include','CmHopperFinal'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9f89,0x13d));var _0x99f8=function(_0x55a8a0,_0x313c62){_0x55a8a0=_0x55a8a0-0x0;var _0x581017=_0x9f89[_0x55a8a0];return _0x581017;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x99f8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x99f8('0x1'));var jsonpatch=require(_0x99f8('0x2'));var rp=require(_0x99f8('0x3'));var moment=require(_0x99f8('0x4'));var BPromise=require(_0x99f8('0x5'));var Mustache=require('mustache');var util=require(_0x99f8('0x6'));var path=require(_0x99f8('0x7'));var sox=require(_0x99f8('0x8'));var csv=require(_0x99f8('0x9'));var ejs=require(_0x99f8('0xa'));var fs=require('fs');var _=require(_0x99f8('0xb'));var squel=require(_0x99f8('0xc'));var crypto=require('crypto');var jsforce=require(_0x99f8('0xd'));var deskjs=require(_0x99f8('0xe'));var toCsv=require(_0x99f8('0x9'));var querystring=require(_0x99f8('0xf'));var Papa=require('papaparse');var Redis=require(_0x99f8('0x10'));var qs=require(_0x99f8('0x11'));var logger=require(_0x99f8('0x12'))(_0x99f8('0x13'));var utils=require('../../config/utils');var config=require(_0x99f8('0x14'));var db=require(_0x99f8('0x15'))['db'];function respondWithStatusCode(_0x12259a,_0xcd463c){_0xcd463c=_0xcd463c||0xcc;return function(_0xb4c774){if(_0xb4c774){return _0x12259a[_0x99f8('0x16')](_0xcd463c);}return _0x12259a[_0x99f8('0x17')](_0xcd463c)[_0x99f8('0x18')]();};}function respondWithResult(_0x3262a7,_0x44aa80){_0x44aa80=_0x44aa80||0xc8;return function(_0x244ccd){if(_0x244ccd){return _0x3262a7['status'](_0x44aa80)[_0x99f8('0x19')](_0x244ccd);}};}function respondWithFilteredResult(_0x2dd97e,_0x4973d6){return function(_0x135957){if(_0x135957){var _0x3f8897=_0x135957[_0x99f8('0x1a')],_0x2430c1=_0x4973d6[_0x99f8('0x1b')],_0x237558=_0x4973d6[_0x99f8('0x1b')]+_0x4973d6['limit'],_0x25a8a4;if(_0x237558>=_0x3f8897){_0x237558=_0x3f8897;_0x25a8a4=0xc8;}else{_0x25a8a4=0xce;}_0x2dd97e[_0x99f8('0x17')](_0x25a8a4);return _0x2dd97e[_0x99f8('0x1c')]('Content-Range',_0x2430c1+'-'+_0x237558+'/'+_0x3f8897)[_0x99f8('0x19')](_0x135957);}return null;};}function patchUpdates(_0xa7f114){return function(_0x5b8dd8){try{jsonpatch['apply'](_0x5b8dd8,_0xa7f114,!![]);}catch(_0x341e78){return BPromise[_0x99f8('0x1d')](_0x341e78);}return _0x5b8dd8['save']();};}function saveUpdates(_0x826fca,_0x1b44e2){return function(_0x271d94){if(_0x271d94){return _0x271d94[_0x99f8('0x1e')](_0x826fca)['then'](function(_0x1eb794){return _0x1eb794;});}return null;};}function removeEntity(_0x17c65e,_0x5082ca){return function(_0x29892f){if(_0x29892f){return _0x29892f[_0x99f8('0x1f')]()[_0x99f8('0x20')](function(){_0x17c65e[_0x99f8('0x17')](0xcc)[_0x99f8('0x18')]();});}};}function handleEntityNotFound(_0x2aeb04,_0x1fe817){return function(_0x3412e8){if(!_0x3412e8){_0x2aeb04[_0x99f8('0x16')](0x194);}return _0x3412e8;};}function handleError(_0x3e5ba4,_0x5ecb10){_0x5ecb10=_0x5ecb10||0x1f4;return function(_0x16ea3){logger[_0x99f8('0x21')](_0x16ea3[_0x99f8('0x22')]);if(_0x16ea3[_0x99f8('0x23')]){delete _0x16ea3['name'];}_0x3e5ba4[_0x99f8('0x17')](_0x5ecb10)[_0x99f8('0x24')](_0x16ea3);};}exports[_0x99f8('0x25')]=function(_0x1a15ff,_0x262337){var _0x1e86eb={},_0x5cf6ba={},_0xa6728e={'count':0x0,'rows':[]};var _0x45509e=db['CmHopperFinal']['rawAttributes'];_0x5cf6ba['model']=_['keys'](_0x45509e);var _0x55343e={'dateStart':_0x1a15ff[_0x99f8('0x26')][_0x99f8('0x27')],'dateEnd':_0x1a15ff[_0x99f8('0x26')]['dateEnd']};delete _0x1a15ff['query']['dateStart'];delete _0x1a15ff[_0x99f8('0x26')][_0x99f8('0x28')];_0x5cf6ba[_0x99f8('0x26')]=_[_0x99f8('0x29')](_0x1a15ff[_0x99f8('0x26')]);_0x5cf6ba[_0x99f8('0x2a')]=_[_0x99f8('0x2b')](_0x5cf6ba[_0x99f8('0x2c')],_0x5cf6ba[_0x99f8('0x26')]);_0x1e86eb[_0x99f8('0x2d')]=_[_0x99f8('0x2b')](_0x5cf6ba['model'],qs[_0x99f8('0x2e')](_0x1a15ff['query'][_0x99f8('0x2e')]));_0x1e86eb['attributes']=_0x1e86eb[_0x99f8('0x2d')][_0x99f8('0x2f')]?_0x1e86eb[_0x99f8('0x2d')]:_0x5cf6ba[_0x99f8('0x2c')];if(!_0x1a15ff[_0x99f8('0x26')][_0x99f8('0x30')](_0x99f8('0x31'))){_0x1e86eb['limit']=qs[_0x99f8('0x32')](_0x1a15ff[_0x99f8('0x26')][_0x99f8('0x32')]);_0x1e86eb[_0x99f8('0x1b')]=qs[_0x99f8('0x1b')](_0x1a15ff[_0x99f8('0x26')]['offset']);}_0x1e86eb['order']=qs[_0x99f8('0x33')](_0x1a15ff[_0x99f8('0x26')][_0x99f8('0x33')]);_0x1e86eb['where']=qs[_0x99f8('0x2a')](_['pick'](_0x1a15ff['query'],_0x5cf6ba[_0x99f8('0x2a')]));if(_0x55343e[_0x99f8('0x27')]){if(_0x55343e[_0x99f8('0x28')]){_0x55343e['dateEnd']=moment(_0x55343e[_0x99f8('0x28')])['add'](0x1,'day');}else{_0x55343e['dateEnd']=moment(_0x55343e[_0x99f8('0x27')])['add'](0x1,_0x99f8('0x34'));}_[_0x99f8('0x35')](_0x1e86eb[_0x99f8('0x36')],{'createdAt':{'$gte':_0x55343e[_0x99f8('0x27')],'$lte':_0x55343e[_0x99f8('0x28')]}});}if(_0x1a15ff['query'][_0x99f8('0x37')]){_0x1e86eb[_0x99f8('0x36')]=_[_0x99f8('0x35')](_0x1e86eb[_0x99f8('0x36')],{'$or':_[_0x99f8('0x38')](_0x45509e,function(_0xbcb6aa){if(_0xbcb6aa[_0x99f8('0x39')][_0x99f8('0x3a')]!==_0x99f8('0x3b')){var _0x4c04f8={};_0x4c04f8[_0xbcb6aa[_0x99f8('0x3c')]]={'$like':'%'+_0x1a15ff[_0x99f8('0x26')][_0x99f8('0x37')]+'%'};return _0x4c04f8;}})});}_0x1e86eb=_['merge']({},_0x1e86eb,_0x1a15ff[_0x99f8('0x3d')]);var _0x2c92a9={'where':_0x1e86eb['where']};return db['CmHopperFinal'][_0x99f8('0x1a')](_0x2c92a9)[_0x99f8('0x20')](function(_0x402de4){_0xa6728e['count']=_0x402de4;if(_0x1a15ff['query']['includeAll']){_0x1e86eb[_0x99f8('0x3e')]=[{'all':!![]}];}return db[_0x99f8('0x3f')]['findAll'](_0x1e86eb);})[_0x99f8('0x20')](function(_0x3a9cd5){_0xa6728e[_0x99f8('0x40')]=_0x3a9cd5;return _0xa6728e;})['then'](respondWithFilteredResult(_0x262337,_0x1e86eb))['catch'](handleError(_0x262337,null));};exports[_0x99f8('0x41')]=function(_0x1de3e7,_0x1f2172){var _0x216b59={'raw':!![],'where':{'id':_0x1de3e7['params']['id']}},_0x575273={};_0x575273[_0x99f8('0x2c')]=_['keys'](db[_0x99f8('0x3f')][_0x99f8('0x42')]);_0x575273[_0x99f8('0x26')]=_[_0x99f8('0x29')](_0x1de3e7[_0x99f8('0x26')]);_0x575273['filters']=_[_0x99f8('0x2b')](_0x575273[_0x99f8('0x2c')],_0x575273[_0x99f8('0x26')]);_0x216b59[_0x99f8('0x2d')]=_[_0x99f8('0x2b')](_0x575273[_0x99f8('0x2c')],qs[_0x99f8('0x2e')](_0x1de3e7[_0x99f8('0x26')][_0x99f8('0x2e')]));_0x216b59[_0x99f8('0x2d')]=_0x216b59[_0x99f8('0x2d')]['length']?_0x216b59[_0x99f8('0x2d')]:_0x575273[_0x99f8('0x2c')];if(_0x1de3e7[_0x99f8('0x26')][_0x99f8('0x43')]){_0x216b59['include']=[{'all':!![]}];}_0x216b59=_['merge']({},_0x216b59,_0x1de3e7[_0x99f8('0x3d')]);return db[_0x99f8('0x3f')][_0x99f8('0x44')](_0x216b59)['then'](handleEntityNotFound(_0x1f2172,null))[_0x99f8('0x20')](respondWithResult(_0x1f2172,null))[_0x99f8('0x45')](handleError(_0x1f2172,null));};exports[_0x99f8('0x46')]=function(_0x40d62d,_0x4ac437){return db[_0x99f8('0x3f')][_0x99f8('0x46')]()[_0x99f8('0x20')](respondWithResult(_0x4ac437,null))[_0x99f8('0x45')](handleError(_0x4ac437,null));};exports[_0x99f8('0x1e')]=function(_0x406250,_0x198089){if(_0x406250[_0x99f8('0x47')][_0x99f8('0x48')]){delete _0x406250['body'][_0x99f8('0x48')];}return db[_0x99f8('0x3f')][_0x99f8('0x44')]({'where':{'uniqueid':_0x406250[_0x99f8('0x49')]['id']}})[_0x99f8('0x20')](handleEntityNotFound(_0x198089,null))[_0x99f8('0x20')](saveUpdates(_0x406250[_0x99f8('0x47')],null))['then'](respondWithResult(_0x198089,null))[_0x99f8('0x45')](handleError(_0x198089,null));};exports[_0x99f8('0x4a')]=function(_0x15dfa7,_0x46d5e5,_0x3b5302){return db[_0x99f8('0x3f')][_0x99f8('0x4b')]({'raw':![],'where':{'VoiceQueueId':_0x15dfa7[_0x99f8('0x49')]['id']},'attributes':[[db[_0x99f8('0x4c')]['fn'](_0x99f8('0x4d'),db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')][_0x99f8('0x4e')](_0x99f8('0x4f')))),'noSuchContacts'],[db[_0x99f8('0x4c')]['fn']('COUNT',db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')][_0x99f8('0x4e')](_0x99f8('0x50')))),_0x99f8('0x51')],[db[_0x99f8('0x4c')]['fn'](_0x99f8('0x4d'),db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')]['literal'](_0x99f8('0x52')))),_0x99f8('0x53')],[db['sequelize']['fn'](_0x99f8('0x4d'),db['sequelize']['fn']('IF',db[_0x99f8('0x4c')][_0x99f8('0x4e')](_0x99f8('0x54')))),_0x99f8('0x55')],[db['sequelize']['fn'](_0x99f8('0x4d'),db['sequelize']['fn']('IF',db['sequelize'][_0x99f8('0x4e')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x99f8('0x56')],[db[_0x99f8('0x4c')]['fn'](_0x99f8('0x4d'),db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')][_0x99f8('0x4e')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x99f8('0x57')],[db[_0x99f8('0x4c')]['fn'](_0x99f8('0x4d'),db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')][_0x99f8('0x4e')]('`state`\x20=\x2022,\x201,\x20null'))),_0x99f8('0x58')]]})[_0x99f8('0x20')](handleEntityNotFound(_0x46d5e5,null))[_0x99f8('0x20')](respondWithResult(_0x46d5e5,null))[_0x99f8('0x45')](handleError(_0x46d5e5,null));};exports[_0x99f8('0x59')]=function(_0x275ed6,_0x4bf763,_0x1019c7){return db[_0x99f8('0x3f')]['findAll']({'raw':![],'where':{'CampaignId':_0x275ed6[_0x99f8('0x49')]['id']},'attributes':[[db[_0x99f8('0x4c')]['fn']('COUNT',db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')][_0x99f8('0x4e')](_0x99f8('0x4f')))),_0x99f8('0x5a')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x99f8('0x50')))),_0x99f8('0x51')],[db[_0x99f8('0x4c')]['fn'](_0x99f8('0x4d'),db[_0x99f8('0x4c')]['fn']('IF',db['sequelize'][_0x99f8('0x4e')](_0x99f8('0x52')))),'busyContacts'],[db[_0x99f8('0x4c')]['fn'](_0x99f8('0x4d'),db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')][_0x99f8('0x4e')]('`state`\x20=\x208,\x201,\x20null'))),_0x99f8('0x55')],[db[_0x99f8('0x4c')]['fn'](_0x99f8('0x4d'),db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')]['literal'](_0x99f8('0x5b')))),_0x99f8('0x56')],[db[_0x99f8('0x4c')]['fn'](_0x99f8('0x4d'),db[_0x99f8('0x4c')]['fn']('IF',db[_0x99f8('0x4c')][_0x99f8('0x4e')](_0x99f8('0x5c')))),_0x99f8('0x57')],[db[_0x99f8('0x4c')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2022,\x201,\x20null'))),_0x99f8('0x58')]]})[_0x99f8('0x20')](handleEntityNotFound(_0x4bf763,null))['then'](respondWithResult(_0x4bf763,null))[_0x99f8('0x45')](handleError(_0x4bf763,null));};exports[_0x99f8('0x5d')]=function(_0x5591e3,_0x3c988c,_0x5ae315){return db[_0x99f8('0x5e')][_0x99f8('0x44')]({'where':{'id':_0x5591e3['params']['id']}})[_0x99f8('0x20')](handleEntityNotFound(_0x3c988c,null))[_0x99f8('0x20')](function(_0x499b37){var _0x24001f;if(_0x499b37){_0x24001f=squel[_0x99f8('0x5f')]()['into'](_0x99f8('0x60'))['fromQuery']([_0x99f8('0x61'),'scheduledAt',_0x99f8('0x62'),_0x99f8('0x63'),'VoiceQueueId','createdAt',_0x99f8('0x64')],squel[_0x99f8('0x65')]()[_0x99f8('0x3c')](_0x99f8('0x66'),_0x99f8('0x61'))[_0x99f8('0x3c')]('NOW()',_0x99f8('0x67'))['field'](_0x99f8('0x68'),_0x99f8('0x62'))[_0x99f8('0x3c')](_0x99f8('0x69'),_0x99f8('0x63'))[_0x99f8('0x3c')](_0x99f8('0x6a'),_0x99f8('0x6b'))[_0x99f8('0x3c')]('NOW()','createdAt')[_0x99f8('0x3c')](_0x99f8('0x6c'),_0x99f8('0x64'))[_0x99f8('0x6d')]('cm_hopper_final')['where'](_0x99f8('0x6e'),_0x5591e3[_0x99f8('0x49')]['id'][_0x99f8('0x6f')]())[_0x99f8('0x36')]('state\x20=\x20?',_0x5591e3['body'][_0x99f8('0x70')][_0x99f8('0x6f')]())[_0x99f8('0x36')](_0x99f8('0x71'))[_0x99f8('0x36')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x99f8('0x65')]()[_0x99f8('0x3c')](_0x99f8('0x61'))['from'](_0x99f8('0x60'))[_0x99f8('0x36')]('VoiceQueueId\x20=\x20?',_0x5591e3[_0x99f8('0x49')]['id'][_0x99f8('0x6f')]()))[_0x99f8('0x36')](_0x99f8('0x72'),squel[_0x99f8('0x65')]()[_0x99f8('0x3c')](_0x99f8('0x73'))[_0x99f8('0x6d')]('cm_hopper_final')[_0x99f8('0x36')](_0x99f8('0x6e'),_0x5591e3[_0x99f8('0x49')]['id'][_0x99f8('0x6f')]())[_0x99f8('0x36')](_0x99f8('0x74')))[_0x99f8('0x75')](_0x99f8('0x62')))[_0x99f8('0x6f')]();return db[_0x99f8('0x4c')][_0x99f8('0x26')](_0x24001f);}return[];})[_0x99f8('0x20')](respondWithResult(_0x3c988c,null))['catch'](handleError(_0x3c988c,null));};exports[_0x99f8('0x76')]=function(_0x107673,_0x6bf41c,_0x296ccb){return db['Campaign'][_0x99f8('0x44')]({'where':{'id':_0x107673[_0x99f8('0x49')]['id']}})['then'](handleEntityNotFound(_0x6bf41c,null))['then'](function(_0x46b208){var _0x1bc197;if(_0x46b208){_0x1bc197=squel[_0x99f8('0x5f')]()[_0x99f8('0x77')](_0x99f8('0x60'))['fromQuery']([_0x99f8('0x61'),_0x99f8('0x67'),_0x99f8('0x62'),_0x99f8('0x63'),_0x99f8('0x78'),'createdAt',_0x99f8('0x64')],squel[_0x99f8('0x65')]()['field'](_0x99f8('0x66'),'phone')[_0x99f8('0x3c')](_0x99f8('0x6c'),_0x99f8('0x67'))[_0x99f8('0x3c')](_0x99f8('0x68'),_0x99f8('0x62'))[_0x99f8('0x3c')](_0x99f8('0x69'),_0x99f8('0x63'))['field'](_0x99f8('0x79'),_0x99f8('0x78'))[_0x99f8('0x3c')](_0x99f8('0x6c'),'createdAt')['field']('NOW()',_0x99f8('0x64'))[_0x99f8('0x6d')]('cm_hopper_final')[_0x99f8('0x36')](_0x99f8('0x7a'),_0x107673['params']['id'][_0x99f8('0x6f')]())[_0x99f8('0x36')](_0x99f8('0x7b'),_0x107673[_0x99f8('0x47')][_0x99f8('0x70')]['toString']())[_0x99f8('0x36')](_0x99f8('0x71'))[_0x99f8('0x36')](_0x99f8('0x72'),squel['select']()['field'](_0x99f8('0x61'))[_0x99f8('0x6d')]('cm_hopper')[_0x99f8('0x36')](_0x99f8('0x7a'),_0x107673['params']['id'][_0x99f8('0x6f')]()))[_0x99f8('0x36')](_0x99f8('0x72'),squel[_0x99f8('0x65')]()[_0x99f8('0x3c')](_0x99f8('0x73'))[_0x99f8('0x6d')](_0x99f8('0x7c'))[_0x99f8('0x36')](_0x99f8('0x7a'),_0x107673[_0x99f8('0x49')]['id'][_0x99f8('0x6f')]())[_0x99f8('0x36')](_0x99f8('0x74')))[_0x99f8('0x75')](_0x99f8('0x62')))[_0x99f8('0x6f')]();return db[_0x99f8('0x4c')][_0x99f8('0x26')](_0x1bc197);}return[];})[_0x99f8('0x20')](respondWithResult(_0x6bf41c,null))[_0x99f8('0x45')](handleError(_0x6bf41c,null));};exports['checkContactHopper']=function(_0x329b93,_0xd9cd18,_0x33a9c8){return db[_0x99f8('0x7d')][_0x99f8('0x7e')]({'where':{'VoiceQueueId':_0x329b93['body'][_0x99f8('0x6b')],'CampaignId':_0x329b93[_0x99f8('0x47')][_0x99f8('0x78')],'ContactId':_0x329b93['body'][_0x99f8('0x62')]}})['then'](handleEntityNotFound(_0xd9cd18,null))[_0x99f8('0x20')](function(_0x2f2506){if(_0x2f2506){return _0x2f2506;}return null;})[_0x99f8('0x20')](respondWithResult(_0xd9cd18,null))[_0x99f8('0x45')](handleError(_0xd9cd18,null));};
\ No newline at end of file
index 7c31076..31e768c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['util','../../config/logger','moment','bluebird','request-promise','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x57ca,0x108));var _0xa57c=function(_0x326e7c,_0x1559bf){_0x326e7c=_0x326e7c-0x0;var _0x4984c3=_0x57ca[_0x326e7c];return _0x4984c3;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var logger=require(_0xa57c('0x1'))('api');var moment=require(_0xa57c('0x2'));var BPromise=require(_0xa57c('0x3'));var rp=require(_0xa57c('0x4'));var attributes=require(_0xa57c('0x5'));module[_0xa57c('0x6')]=function(_0x48be2d,_0x40ba22){return _0x48be2d[_0xa57c('0x7')](_0xa57c('0x8'),attributes,{'tableName':_0xa57c('0x9'),'paranoid':![],'indexes':[{'name':_0xa57c('0xa'),'fields':[_0xa57c('0xa')]},{'name':_0xa57c('0xb'),'fields':[_0xa57c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x57ca=['util','../../config/logger','moment','bluebird','request-promise','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x57ca,0x108));var _0xa57c=function(_0x202439,_0x586077){_0x202439=_0x202439-0x0;var _0x501291=_0x57ca[_0x202439];return _0x501291;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var logger=require(_0xa57c('0x1'))('api');var moment=require(_0xa57c('0x2'));var BPromise=require(_0xa57c('0x3'));var rp=require(_0xa57c('0x4'));var attributes=require(_0xa57c('0x5'));module[_0xa57c('0x6')]=function(_0x48be2d,_0x40ba22){return _0x48be2d[_0xa57c('0x7')](_0xa57c('0x8'),attributes,{'tableName':_0xa57c('0x9'),'paranoid':![],'indexes':[{'name':_0xa57c('0xa'),'fields':[_0xa57c('0xa')]},{'name':_0xa57c('0xb'),'fields':[_0xa57c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 9a0443a..84150e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d2d=['then','info','CmHopperFinal,\x20%s,\x20%s','request\x20sent','debug','CmHopperFinal,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CmHopperFinal','create','options','CreateCmHopperFinal','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x2251d3,_0xdd6bdc){var _0x512535=function(_0x2c8732){while(--_0x2c8732){_0x2251d3['push'](_0x2251d3['shift']());}};_0x512535(++_0xdd6bdc);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x5c96cd,_0x3b9962){_0x5c96cd=_0x5c96cd-0x0;var _0x49f35d=_0x1d2d[_0x5c96cd];return _0x49f35d;};'use strict';var _=require(_0xd1d2('0x0'));var util=require(_0xd1d2('0x1'));var moment=require(_0xd1d2('0x2'));var BPromise=require(_0xd1d2('0x3'));var rs=require(_0xd1d2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd1d2('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd1d2('0x6'));var config=require(_0xd1d2('0x7'));var jayson=require(_0xd1d2('0x8'));var client=jayson[_0xd1d2('0x9')][_0xd1d2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x353dbd,_0x55be7a,_0x1eaf41){return new BPromise(function(_0x21bc28,_0x35735f){return client[_0xd1d2('0xb')](_0x353dbd,_0x1eaf41)[_0xd1d2('0xc')](function(_0x59e484){logger[_0xd1d2('0xd')](_0xd1d2('0xe'),_0x55be7a,_0xd1d2('0xf'));logger[_0xd1d2('0x10')](_0xd1d2('0x11'),_0x55be7a,_0xd1d2('0xf'),JSON[_0xd1d2('0x12')](_0x59e484));if(_0x59e484['error']){if(_0x59e484[_0xd1d2('0x13')][_0xd1d2('0x14')]===0x1f4){logger[_0xd1d2('0x13')](_0xd1d2('0xe'),_0x55be7a,_0x59e484[_0xd1d2('0x13')][_0xd1d2('0x15')]);return _0x35735f(_0x59e484[_0xd1d2('0x13')][_0xd1d2('0x15')]);}logger[_0xd1d2('0x13')](_0xd1d2('0xe'),_0x55be7a,_0x59e484['error'][_0xd1d2('0x15')]);return _0x21bc28(_0x59e484[_0xd1d2('0x13')][_0xd1d2('0x15')]);}else{logger['info'](_0xd1d2('0xe'),_0x55be7a,_0xd1d2('0xf'));_0x21bc28(_0x59e484[_0xd1d2('0x16')][_0xd1d2('0x15')]);}})[_0xd1d2('0x17')](function(_0x2723b3){logger[_0xd1d2('0x13')]('CmHopperFinal,\x20%s,\x20%s',_0x55be7a,_0x2723b3);_0x35735f(_0x2723b3);});});}exports['CreateCmHopperFinal']=function(_0x3be186){var _0x55320b=this;return new Promise(function(_0x247b3a,_0x42565b){return db[_0xd1d2('0x18')][_0xd1d2('0x19')](_0x3be186['body'],{'raw':_0x3be186['options']?_0x3be186[_0xd1d2('0x1a')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1ab67c){logger[_0xd1d2('0xd')](_0xd1d2('0x1b'),_0x3be186);logger[_0xd1d2('0x10')]('CreateCmHopperFinal',_0x3be186,JSON[_0xd1d2('0x12')](_0x1ab67c));_0x247b3a(_0x1ab67c);})[_0xd1d2('0x17')](function(_0x24b8db){logger['error']('CreateCmHopperFinal',_0x24b8db[_0xd1d2('0x15')],_0x3be186);_0x42565b(_0x55320b[_0xd1d2('0x13')](0x1f4,_0x24b8db[_0xd1d2('0x15')]));});});};
\ No newline at end of file
+var _0xde2c=['raw','stringify','CreateCmHopperFinal','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','CmHopperFinal,\x20%s,\x20%s','request\x20sent','debug','CmHopperFinal,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CmHopperFinal','create','body','options'];(function(_0x68deb3,_0x26f914){var _0x5c5788=function(_0x462b2b){while(--_0x462b2b){_0x68deb3['push'](_0x68deb3['shift']());}};_0x5c5788(++_0x26f914);}(_0xde2c,0x7f));var _0xcde2=function(_0x1269c6,_0x1c8942){_0x1269c6=_0x1269c6-0x0;var _0x4868c7=_0xde2c[_0x1269c6];return _0x4868c7;};'use strict';var _=require(_0xcde2('0x0'));var util=require(_0xcde2('0x1'));var moment=require(_0xcde2('0x2'));var BPromise=require(_0xcde2('0x3'));var rs=require(_0xcde2('0x4'));var fs=require('fs');var Redis=require(_0xcde2('0x5'));var db=require(_0xcde2('0x6'))['db'];var utils=require(_0xcde2('0x7'));var logger=require('../../config/logger')(_0xcde2('0x8'));var config=require(_0xcde2('0x9'));var jayson=require(_0xcde2('0xa'));var client=jayson[_0xcde2('0xb')][_0xcde2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x53c558,_0x2b27ef,_0x385e83){return new BPromise(function(_0x9c7036,_0x544235){return client['request'](_0x53c558,_0x385e83)[_0xcde2('0xd')](function(_0x1c8b3c){logger['info'](_0xcde2('0xe'),_0x2b27ef,_0xcde2('0xf'));logger[_0xcde2('0x10')](_0xcde2('0x11'),_0x2b27ef,'request\x20sent',JSON['stringify'](_0x1c8b3c));if(_0x1c8b3c[_0xcde2('0x12')]){if(_0x1c8b3c[_0xcde2('0x12')][_0xcde2('0x13')]===0x1f4){logger[_0xcde2('0x12')](_0xcde2('0xe'),_0x2b27ef,_0x1c8b3c[_0xcde2('0x12')]['message']);return _0x544235(_0x1c8b3c[_0xcde2('0x12')]['message']);}logger[_0xcde2('0x12')]('CmHopperFinal,\x20%s,\x20%s',_0x2b27ef,_0x1c8b3c['error'][_0xcde2('0x14')]);return _0x9c7036(_0x1c8b3c[_0xcde2('0x12')][_0xcde2('0x14')]);}else{logger[_0xcde2('0x15')](_0xcde2('0xe'),_0x2b27ef,'request\x20sent');_0x9c7036(_0x1c8b3c[_0xcde2('0x16')]['message']);}})[_0xcde2('0x17')](function(_0x198840){logger[_0xcde2('0x12')](_0xcde2('0xe'),_0x2b27ef,_0x198840);_0x544235(_0x198840);});});}exports['CreateCmHopperFinal']=function(_0x4fd5aa){var _0x4fe586=this;return new Promise(function(_0x2b4468,_0x582e84){return db[_0xcde2('0x18')][_0xcde2('0x19')](_0x4fd5aa[_0xcde2('0x1a')],{'raw':_0x4fd5aa['options']?_0x4fd5aa[_0xcde2('0x1b')][_0xcde2('0x1c')]===undefined?!![]:![]:!![]})[_0xcde2('0xd')](function(_0x3c1d7e){logger[_0xcde2('0x15')]('CreateCmHopperFinal',_0x4fd5aa);logger['debug']('CreateCmHopperFinal',_0x4fd5aa,JSON[_0xcde2('0x1d')](_0x3c1d7e));_0x2b4468(_0x3c1d7e);})[_0xcde2('0x17')](function(_0x2c9562){logger[_0xcde2('0x12')](_0xcde2('0x1e'),_0x2c9562['message'],_0x4fd5aa);_0x582e84(_0x4fe586[_0xcde2('0x12')](0x1f4,_0x2c9562['message']));});});};
\ No newline at end of file
index 6398a00..622b368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['isAuthenticated','index','describe','/:id','countContactsQueueCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','/checkContactHopper','checkContactHopper','update','exports','multer','path','connect-timeout','express','../../components/interaction/service','./cmHopperFinal.controller','get'];(function(_0x46b22a,_0x5bf83a){var _0x44c2e8=function(_0x21b6fc){while(--_0x21b6fc){_0x46b22a['push'](_0x46b22a['shift']());}};_0x44c2e8(++_0x5bf83a);}(_0x3e74,0x175));var _0x43e7=function(_0x4dd550,_0xe5357c){_0x4dd550=_0x4dd550-0x0;var _0x290491=_0x3e74[_0x4dd550];return _0x290491;};'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 auth=require('../../components/auth/service');var interaction=require(_0x43e7('0x4'));var config=require('../../config/environment');var controller=require(_0x43e7('0x5'));router[_0x43e7('0x6')]('/',auth[_0x43e7('0x7')](),controller[_0x43e7('0x8')]);router[_0x43e7('0x6')]('/describe',auth[_0x43e7('0x7')](),controller[_0x43e7('0x9')]);router[_0x43e7('0x6')](_0x43e7('0xa'),auth[_0x43e7('0x7')](),controller['show']);router[_0x43e7('0x6')]('/voice/queue/countAttributes/:id',auth['isAuthenticated'](),controller[_0x43e7('0xb')]);router[_0x43e7('0x6')]('/campaign/countAttributes/:id',auth[_0x43e7('0x7')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x43e7('0xc')](_0x43e7('0xd'),auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xc')](_0x43e7('0xf'),auth[_0x43e7('0x7')](),controller['moveContactsIvrCampaignHopperFinal']);router['post'](_0x43e7('0x10'),auth[_0x43e7('0x7')](),controller[_0x43e7('0x11')]);router['put']('/:id',auth[_0x43e7('0x7')](),controller[_0x43e7('0x12')]);module[_0x43e7('0x13')]=router;
\ No newline at end of file
+var _0x9957=['isAuthenticated','index','/describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','update','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var auth=require(_0x7995('0x5'));var interaction=require(_0x7995('0x6'));var config=require(_0x7995('0x7'));var controller=require('./cmHopperFinal.controller');router[_0x7995('0x8')]('/',auth[_0x7995('0x9')](),controller[_0x7995('0xa')]);router[_0x7995('0x8')](_0x7995('0xb'),auth[_0x7995('0x9')](),controller['describe']);router[_0x7995('0x8')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x8')](_0x7995('0xe'),auth[_0x7995('0x9')](),controller[_0x7995('0xf')]);router[_0x7995('0x8')](_0x7995('0x10'),auth['isAuthenticated'](),controller[_0x7995('0x11')]);router[_0x7995('0x12')]('/voice/queue/moveContacts/:id',auth[_0x7995('0x9')](),controller[_0x7995('0x13')]);router[_0x7995('0x12')](_0x7995('0x14'),auth[_0x7995('0x9')](),controller[_0x7995('0x15')]);router[_0x7995('0x12')]('/checkContactHopper',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x17')](_0x7995('0xc'),auth[_0x7995('0x9')](),controller[_0x7995('0x18')]);module[_0x7995('0x19')]=router;
\ No newline at end of file
index a59f20e..46cb33e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe132=['INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x41358a,_0x322144){var _0x8c40ce=function(_0x14962b){while(--_0x14962b){_0x41358a['push'](_0x41358a['shift']());}};_0x8c40ce(++_0x322144);}(_0xe132,0x162));var _0x2e13=function(_0x2fde0d,_0x1d48a5){_0x2fde0d=_0x2fde0d-0x0;var _0x22f91c=_0xe132[_0x2fde0d];return _0x22f91c;};'use strict';var Sequelize=require(_0x2e13('0x0'));module['exports']={'state':{'type':Sequelize[_0x2e13('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x2e13('0x2')]},'scheduledat':{'type':Sequelize[_0x2e13('0x3')]},'countbusyretry':{'type':Sequelize[_0x2e13('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x2e13('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x2e13('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x2e13('0x2')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x2e13('0x2')]},'calleridname':{'type':Sequelize[_0x2e13('0x2')]},'starttime':{'type':Sequelize[_0x2e13('0x3')]},'responsetime':{'type':Sequelize[_0x2e13('0x3')]},'answertime':{'type':Sequelize[_0x2e13('0x3')]},'droptime':{'type':Sequelize[_0x2e13('0x3')]},'endtime':{'type':Sequelize[_0x2e13('0x3')]},'ringtime':{'type':Sequelize[_0x2e13('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x2e13('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x2e13('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x2e13('0x2')]},'campaign':{'type':Sequelize[_0x2e13('0x2')]},'campaigntype':{'type':Sequelize[_0x2e13('0x2')]},'membername':{'type':Sequelize[_0x2e13('0x2')]},'reason':{'type':Sequelize[_0x2e13('0x2')]},'amd':{'type':Sequelize[_0x2e13('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0x2e13('0x4')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x2e13('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x2e13('0x3')]},'recallme':{'type':Sequelize[_0x2e13('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x2e13('0x3')]},'edited':{'type':Sequelize[_0x2e13('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x86f4=['INTEGER','STRING','DATE','BOOLEAN','sequelize','exports'];(function(_0x19a11f,_0x5fe5f0){var _0x3fa6e7=function(_0x4c3411){while(--_0x4c3411){_0x19a11f['push'](_0x19a11f['shift']());}};_0x3fa6e7(++_0x5fe5f0);}(_0x86f4,0x18a));var _0x486f=function(_0x51dbc5,_0x15bdfa){_0x51dbc5=_0x51dbc5-0x0;var _0x269c75=_0x86f4[_0x51dbc5];return _0x269c75;};'use strict';var Sequelize=require(_0x486f('0x0'));module[_0x486f('0x1')]={'state':{'type':Sequelize[_0x486f('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x486f('0x3')]},'scheduledat':{'type':Sequelize[_0x486f('0x4')]},'countbusyretry':{'type':Sequelize[_0x486f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x486f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x486f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x486f('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x486f('0x3')]},'calleridnum':{'type':Sequelize[_0x486f('0x3')]},'calleridname':{'type':Sequelize[_0x486f('0x3')]},'starttime':{'type':Sequelize[_0x486f('0x4')]},'responsetime':{'type':Sequelize[_0x486f('0x4')]},'answertime':{'type':Sequelize[_0x486f('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x486f('0x4')]},'ringtime':{'type':Sequelize[_0x486f('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x486f('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x486f('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x486f('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x486f('0x3')]},'campaign':{'type':Sequelize[_0x486f('0x3')]},'campaigntype':{'type':Sequelize[_0x486f('0x3')]},'membername':{'type':Sequelize[_0x486f('0x3')]},'reason':{'type':Sequelize[_0x486f('0x3')]},'amd':{'type':Sequelize[_0x486f('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x486f('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x486f('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x486f('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x486f('0x4')]},'recallme':{'type':Sequelize[_0x486f('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x486f('0x4')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 5047791..e6d75ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbac=['sendStatus','end','status','json','count','offset','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','keys','query','dateStart','dateEnd','filters','intersection','model','fields','attributes','length','nolimit','limit','sort','where','pick','day','add','merge','filter','type','key','VIRTUAL','field','options','include','findAll','rows','catch','show','params','CmHopperHistory','rawAttributes','includeAll','find','create','body','describe','uniqueid','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xfbac,0x1c2));var _0xcfba=function(_0x41a43b,_0x2d2545){_0x41a43b=_0x41a43b-0x0;var _0x122adc=_0xfbac[_0x41a43b];return _0x122adc;};'use strict';var pdf=require(_0xcfba('0x0'));var emlformat=require(_0xcfba('0x1'));var rimraf=require(_0xcfba('0x2'));var zipdir=require(_0xcfba('0x3'));var jsonpatch=require(_0xcfba('0x4'));var rp=require(_0xcfba('0x5'));var moment=require(_0xcfba('0x6'));var BPromise=require(_0xcfba('0x7'));var Mustache=require(_0xcfba('0x8'));var util=require(_0xcfba('0x9'));var path=require('path');var sox=require(_0xcfba('0xa'));var csv=require(_0xcfba('0xb'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xcfba('0xc'));var squel=require(_0xcfba('0xd'));var crypto=require(_0xcfba('0xe'));var jsforce=require(_0xcfba('0xf'));var deskjs=require(_0xcfba('0x10'));var toCsv=require(_0xcfba('0xb'));var querystring=require(_0xcfba('0x11'));var Papa=require('papaparse');var Redis=require(_0xcfba('0x12'));var qs=require(_0xcfba('0x13'));var logger=require(_0xcfba('0x14'))(_0xcfba('0x15'));var utils=require('../../config/utils');var config=require(_0xcfba('0x16'));var db=require(_0xcfba('0x17'))['db'];function respondWithStatusCode(_0x2c09e8,_0x226068){_0x226068=_0x226068||0xcc;return function(_0x4f8b7d){if(_0x4f8b7d){return _0x2c09e8[_0xcfba('0x18')](_0x226068);}return _0x2c09e8['status'](_0x226068)[_0xcfba('0x19')]();};}function respondWithResult(_0x28b5c4,_0x2ad691){_0x2ad691=_0x2ad691||0xc8;return function(_0x2fb94e){if(_0x2fb94e){return _0x28b5c4[_0xcfba('0x1a')](_0x2ad691)[_0xcfba('0x1b')](_0x2fb94e);}};}function respondWithFilteredResult(_0x1bb149,_0x337221){return function(_0x560a32){if(_0x560a32){var _0x374055=_0x560a32[_0xcfba('0x1c')],_0x1bb5c0=_0x337221[_0xcfba('0x1d')],_0x5e967a=_0x337221[_0xcfba('0x1d')]+_0x337221['limit'],_0x30b8c0;if(_0x5e967a>=_0x374055){_0x5e967a=_0x374055;_0x30b8c0=0xc8;}else{_0x30b8c0=0xce;}_0x1bb149[_0xcfba('0x1a')](_0x30b8c0);return _0x1bb149[_0xcfba('0x1e')](_0xcfba('0x1f'),_0x1bb5c0+'-'+_0x5e967a+'/'+_0x374055)['json'](_0x560a32);}return null;};}function patchUpdates(_0x497f66){return function(_0x5c3b85){try{jsonpatch[_0xcfba('0x20')](_0x5c3b85,_0x497f66,!![]);}catch(_0x29e87c){return BPromise['reject'](_0x29e87c);}return _0x5c3b85[_0xcfba('0x21')]();};}function saveUpdates(_0x4da351,_0x39693d){return function(_0x189526){if(_0x189526){return _0x189526[_0xcfba('0x22')](_0x4da351)[_0xcfba('0x23')](function(_0x311b40){return _0x311b40;});}return null;};}function removeEntity(_0x3d54d3,_0x3df779){return function(_0x3bab68){if(_0x3bab68){return _0x3bab68[_0xcfba('0x24')]()[_0xcfba('0x23')](function(){_0x3d54d3[_0xcfba('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24a455,_0x150b43){return function(_0xa6ee03){if(!_0xa6ee03){_0x24a455['sendStatus'](0x194);}return _0xa6ee03;};}function handleError(_0x2d87aa,_0x4c78a2){_0x4c78a2=_0x4c78a2||0x1f4;return function(_0x1ed091){logger['error'](_0x1ed091[_0xcfba('0x25')]);if(_0x1ed091[_0xcfba('0x26')]){delete _0x1ed091[_0xcfba('0x26')];}_0x2d87aa[_0xcfba('0x1a')](_0x4c78a2)[_0xcfba('0x27')](_0x1ed091);};}exports[_0xcfba('0x28')]=function(_0x3bd551,_0x1dade1){var _0x569c9c={},_0x517731={},_0x3678bf={'count':0x0,'rows':[]};var _0xae13e4=db['CmHopperHistory']['rawAttributes'];_0x517731['model']=_[_0xcfba('0x29')](_0xae13e4);var _0x1f7563={'dateStart':_0x3bd551[_0xcfba('0x2a')][_0xcfba('0x2b')],'dateEnd':_0x3bd551['query'][_0xcfba('0x2c')]};delete _0x3bd551['query'][_0xcfba('0x2b')];delete _0x3bd551['query'][_0xcfba('0x2c')];_0x517731[_0xcfba('0x2a')]=_[_0xcfba('0x29')](_0x3bd551[_0xcfba('0x2a')]);_0x517731[_0xcfba('0x2d')]=_[_0xcfba('0x2e')](_0x517731[_0xcfba('0x2f')],_0x517731[_0xcfba('0x2a')]);_0x569c9c['attributes']=_[_0xcfba('0x2e')](_0x517731[_0xcfba('0x2f')],qs['fields'](_0x3bd551['query'][_0xcfba('0x30')]));_0x569c9c['attributes']=_0x569c9c[_0xcfba('0x31')][_0xcfba('0x32')]?_0x569c9c[_0xcfba('0x31')]:_0x517731['model'];if(!_0x3bd551[_0xcfba('0x2a')]['hasOwnProperty'](_0xcfba('0x33'))){_0x569c9c['limit']=qs[_0xcfba('0x34')](_0x3bd551['query'][_0xcfba('0x34')]);_0x569c9c['offset']=qs[_0xcfba('0x1d')](_0x3bd551['query'][_0xcfba('0x1d')]);}_0x569c9c['order']=qs[_0xcfba('0x35')](_0x3bd551['query']['sort']);_0x569c9c[_0xcfba('0x36')]=qs['filters'](_[_0xcfba('0x37')](_0x3bd551[_0xcfba('0x2a')],_0x517731['filters']));if(_0x1f7563['dateStart']){if(_0x1f7563[_0xcfba('0x2c')]){_0x1f7563[_0xcfba('0x2c')]=moment(_0x1f7563['dateEnd'])['add'](0x1,_0xcfba('0x38'));}else{_0x1f7563['dateEnd']=moment(_0x1f7563[_0xcfba('0x2b')])[_0xcfba('0x39')](0x1,_0xcfba('0x38'));}_[_0xcfba('0x3a')](_0x569c9c[_0xcfba('0x36')],{'createdAt':{'$gte':_0x1f7563[_0xcfba('0x2b')],'$lte':_0x1f7563[_0xcfba('0x2c')]}});}if(_0x3bd551[_0xcfba('0x2a')][_0xcfba('0x3b')]){_0x569c9c['where']=_['merge'](_0x569c9c[_0xcfba('0x36')],{'$or':_['map'](_0xae13e4,function(_0x4ec2d6){if(_0x4ec2d6[_0xcfba('0x3c')][_0xcfba('0x3d')]!==_0xcfba('0x3e')){var _0x4289a9={};_0x4289a9[_0x4ec2d6[_0xcfba('0x3f')]]={'$like':'%'+_0x3bd551[_0xcfba('0x2a')][_0xcfba('0x3b')]+'%'};return _0x4289a9;}})});}_0x569c9c=_[_0xcfba('0x3a')]({},_0x569c9c,_0x3bd551[_0xcfba('0x40')]);var _0x536c17={'where':_0x569c9c[_0xcfba('0x36')]};return db['CmHopperHistory'][_0xcfba('0x1c')](_0x536c17)['then'](function(_0x27d86f){_0x3678bf['count']=_0x27d86f;if(_0x3bd551[_0xcfba('0x2a')]['includeAll']){_0x569c9c[_0xcfba('0x41')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xcfba('0x42')](_0x569c9c);})[_0xcfba('0x23')](function(_0x3888fd){_0x3678bf[_0xcfba('0x43')]=_0x3888fd;return _0x3678bf;})[_0xcfba('0x23')](respondWithFilteredResult(_0x1dade1,_0x569c9c))[_0xcfba('0x44')](handleError(_0x1dade1,null));};exports[_0xcfba('0x45')]=function(_0x24eb32,_0x3e7a76){var _0x505a67={'raw':!![],'where':{'id':_0x24eb32[_0xcfba('0x46')]['id']}},_0xb71cf4={};_0xb71cf4[_0xcfba('0x2f')]=_[_0xcfba('0x29')](db[_0xcfba('0x47')][_0xcfba('0x48')]);_0xb71cf4[_0xcfba('0x2a')]=_[_0xcfba('0x29')](_0x24eb32[_0xcfba('0x2a')]);_0xb71cf4[_0xcfba('0x2d')]=_[_0xcfba('0x2e')](_0xb71cf4['model'],_0xb71cf4['query']);_0x505a67[_0xcfba('0x31')]=_[_0xcfba('0x2e')](_0xb71cf4[_0xcfba('0x2f')],qs[_0xcfba('0x30')](_0x24eb32[_0xcfba('0x2a')][_0xcfba('0x30')]));_0x505a67[_0xcfba('0x31')]=_0x505a67[_0xcfba('0x31')][_0xcfba('0x32')]?_0x505a67[_0xcfba('0x31')]:_0xb71cf4['model'];if(_0x24eb32[_0xcfba('0x2a')][_0xcfba('0x49')]){_0x505a67[_0xcfba('0x41')]=[{'all':!![]}];}_0x505a67=_[_0xcfba('0x3a')]({},_0x505a67,_0x24eb32[_0xcfba('0x40')]);return db[_0xcfba('0x47')][_0xcfba('0x4a')](_0x505a67)[_0xcfba('0x23')](handleEntityNotFound(_0x3e7a76,null))['then'](respondWithResult(_0x3e7a76,null))[_0xcfba('0x44')](handleError(_0x3e7a76,null));};exports[_0xcfba('0x4b')]=function(_0x2acf16,_0x298399){return db[_0xcfba('0x47')]['create'](_0x2acf16[_0xcfba('0x4c')],{})[_0xcfba('0x23')](respondWithResult(_0x298399,0xc9))[_0xcfba('0x44')](handleError(_0x298399,null));};exports[_0xcfba('0x4d')]=function(_0x5702e8,_0x352902){return db[_0xcfba('0x47')]['describe']()['then'](respondWithResult(_0x352902,null))[_0xcfba('0x44')](handleError(_0x352902,null));};exports['update']=function(_0x4a76c4,_0x3d676b){if(_0x4a76c4[_0xcfba('0x4c')]['uniqueid']){delete _0x4a76c4[_0xcfba('0x4c')][_0xcfba('0x4e')];}return db[_0xcfba('0x47')][_0xcfba('0x4a')]({'where':{'uniqueid':_0x4a76c4['params']['id']}})[_0xcfba('0x23')](handleEntityNotFound(_0x3d676b,null))['then'](saveUpdates(_0x4a76c4[_0xcfba('0x4c')],null))['then'](respondWithResult(_0x3d676b,null))['catch'](handleError(_0x3d676b,null));};
\ No newline at end of file
+var _0xa349=['stack','name','send','rawAttributes','model','query','dateStart','dateEnd','keys','filters','intersection','attributes','fields','length','sort','where','add','day','merge','filter','map','type','key','VIRTUAL','field','options','CmHopperHistory','include','findAll','rows','catch','show','params','includeAll','find','create','describe','body','uniqueid','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','status','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus'];(function(_0x2bbbed,_0x3ae5f5){var _0xedd48=function(_0x1e683f){while(--_0x1e683f){_0x2bbbed['push'](_0x2bbbed['shift']());}};_0xedd48(++_0x3ae5f5);}(_0xa349,0x72));var _0x9a34=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa349[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0x9a34('0x0'));var emlformat=require(_0x9a34('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x9a34('0x2'));var jsonpatch=require(_0x9a34('0x3'));var rp=require(_0x9a34('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x9a34('0x5'));var sox=require(_0x9a34('0x6'));var csv=require('to-csv');var ejs=require(_0x9a34('0x7'));var fs=require('fs');var _=require(_0x9a34('0x8'));var squel=require(_0x9a34('0x9'));var crypto=require(_0x9a34('0xa'));var jsforce=require(_0x9a34('0xb'));var deskjs=require(_0x9a34('0xc'));var toCsv=require('to-csv');var querystring=require(_0x9a34('0xd'));var Papa=require(_0x9a34('0xe'));var Redis=require(_0x9a34('0xf'));var qs=require(_0x9a34('0x10'));var logger=require('../../config/logger')(_0x9a34('0x11'));var utils=require(_0x9a34('0x12'));var config=require(_0x9a34('0x13'));var db=require(_0x9a34('0x14'))['db'];function respondWithStatusCode(_0x280262,_0x5bbb12){_0x5bbb12=_0x5bbb12||0xcc;return function(_0x1e133b){if(_0x1e133b){return _0x280262['sendStatus'](_0x5bbb12);}return _0x280262[_0x9a34('0x15')](_0x5bbb12)['end']();};}function respondWithResult(_0x5ce6a1,_0x11098f){_0x11098f=_0x11098f||0xc8;return function(_0x54b9f9){if(_0x54b9f9){return _0x5ce6a1['status'](_0x11098f)['json'](_0x54b9f9);}};}function respondWithFilteredResult(_0x4703d2,_0xb2d453){return function(_0x1354a7){if(_0x1354a7){var _0x6950bd=_0x1354a7[_0x9a34('0x16')],_0xe09525=_0xb2d453['offset'],_0x3f2e18=_0xb2d453[_0x9a34('0x17')]+_0xb2d453[_0x9a34('0x18')],_0x15cb52;if(_0x3f2e18>=_0x6950bd){_0x3f2e18=_0x6950bd;_0x15cb52=0xc8;}else{_0x15cb52=0xce;}_0x4703d2['status'](_0x15cb52);return _0x4703d2[_0x9a34('0x19')](_0x9a34('0x1a'),_0xe09525+'-'+_0x3f2e18+'/'+_0x6950bd)[_0x9a34('0x1b')](_0x1354a7);}return null;};}function patchUpdates(_0x598fbc){return function(_0x2f0762){try{jsonpatch[_0x9a34('0x1c')](_0x2f0762,_0x598fbc,!![]);}catch(_0x12703e){return BPromise[_0x9a34('0x1d')](_0x12703e);}return _0x2f0762[_0x9a34('0x1e')]();};}function saveUpdates(_0x544d7e,_0x17ccc7){return function(_0x4372d8){if(_0x4372d8){return _0x4372d8[_0x9a34('0x1f')](_0x544d7e)[_0x9a34('0x20')](function(_0x439d56){return _0x439d56;});}return null;};}function removeEntity(_0x4b7e5d,_0x340fdb){return function(_0x51a6b6){if(_0x51a6b6){return _0x51a6b6[_0x9a34('0x21')]()[_0x9a34('0x20')](function(){_0x4b7e5d[_0x9a34('0x15')](0xcc)[_0x9a34('0x22')]();});}};}function handleEntityNotFound(_0x289a11,_0x1598ca){return function(_0x28872b){if(!_0x28872b){_0x289a11[_0x9a34('0x23')](0x194);}return _0x28872b;};}function handleError(_0x2c095d,_0x14f22a){_0x14f22a=_0x14f22a||0x1f4;return function(_0x3a61d0){logger['error'](_0x3a61d0[_0x9a34('0x24')]);if(_0x3a61d0['name']){delete _0x3a61d0[_0x9a34('0x25')];}_0x2c095d[_0x9a34('0x15')](_0x14f22a)[_0x9a34('0x26')](_0x3a61d0);};}exports['index']=function(_0x4e6057,_0x296526){var _0x54eba1={},_0x3c8e4c={},_0x13ba21={'count':0x0,'rows':[]};var _0x550742=db['CmHopperHistory'][_0x9a34('0x27')];_0x3c8e4c[_0x9a34('0x28')]=_['keys'](_0x550742);var _0x492ed9={'dateStart':_0x4e6057[_0x9a34('0x29')][_0x9a34('0x2a')],'dateEnd':_0x4e6057[_0x9a34('0x29')][_0x9a34('0x2b')]};delete _0x4e6057['query']['dateStart'];delete _0x4e6057[_0x9a34('0x29')]['dateEnd'];_0x3c8e4c[_0x9a34('0x29')]=_[_0x9a34('0x2c')](_0x4e6057[_0x9a34('0x29')]);_0x3c8e4c[_0x9a34('0x2d')]=_[_0x9a34('0x2e')](_0x3c8e4c[_0x9a34('0x28')],_0x3c8e4c[_0x9a34('0x29')]);_0x54eba1[_0x9a34('0x2f')]=_[_0x9a34('0x2e')](_0x3c8e4c[_0x9a34('0x28')],qs[_0x9a34('0x30')](_0x4e6057[_0x9a34('0x29')][_0x9a34('0x30')]));_0x54eba1['attributes']=_0x54eba1[_0x9a34('0x2f')][_0x9a34('0x31')]?_0x54eba1['attributes']:_0x3c8e4c[_0x9a34('0x28')];if(!_0x4e6057['query']['hasOwnProperty']('nolimit')){_0x54eba1[_0x9a34('0x18')]=qs[_0x9a34('0x18')](_0x4e6057[_0x9a34('0x29')]['limit']);_0x54eba1['offset']=qs[_0x9a34('0x17')](_0x4e6057[_0x9a34('0x29')][_0x9a34('0x17')]);}_0x54eba1['order']=qs['sort'](_0x4e6057['query'][_0x9a34('0x32')]);_0x54eba1[_0x9a34('0x33')]=qs[_0x9a34('0x2d')](_['pick'](_0x4e6057['query'],_0x3c8e4c[_0x9a34('0x2d')]));if(_0x492ed9[_0x9a34('0x2a')]){if(_0x492ed9[_0x9a34('0x2b')]){_0x492ed9[_0x9a34('0x2b')]=moment(_0x492ed9[_0x9a34('0x2b')])[_0x9a34('0x34')](0x1,'day');}else{_0x492ed9[_0x9a34('0x2b')]=moment(_0x492ed9[_0x9a34('0x2a')])['add'](0x1,_0x9a34('0x35'));}_[_0x9a34('0x36')](_0x54eba1[_0x9a34('0x33')],{'createdAt':{'$gte':_0x492ed9[_0x9a34('0x2a')],'$lte':_0x492ed9[_0x9a34('0x2b')]}});}if(_0x4e6057[_0x9a34('0x29')][_0x9a34('0x37')]){_0x54eba1[_0x9a34('0x33')]=_[_0x9a34('0x36')](_0x54eba1[_0x9a34('0x33')],{'$or':_[_0x9a34('0x38')](_0x550742,function(_0x38462a){if(_0x38462a[_0x9a34('0x39')][_0x9a34('0x3a')]!==_0x9a34('0x3b')){var _0x107d4a={};_0x107d4a[_0x38462a[_0x9a34('0x3c')]]={'$like':'%'+_0x4e6057[_0x9a34('0x29')][_0x9a34('0x37')]+'%'};return _0x107d4a;}})});}_0x54eba1=_[_0x9a34('0x36')]({},_0x54eba1,_0x4e6057[_0x9a34('0x3d')]);var _0x5d7e45={'where':_0x54eba1[_0x9a34('0x33')]};return db[_0x9a34('0x3e')][_0x9a34('0x16')](_0x5d7e45)[_0x9a34('0x20')](function(_0x25df2a){_0x13ba21[_0x9a34('0x16')]=_0x25df2a;if(_0x4e6057[_0x9a34('0x29')]['includeAll']){_0x54eba1[_0x9a34('0x3f')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x9a34('0x40')](_0x54eba1);})['then'](function(_0x17abc0){_0x13ba21[_0x9a34('0x41')]=_0x17abc0;return _0x13ba21;})[_0x9a34('0x20')](respondWithFilteredResult(_0x296526,_0x54eba1))[_0x9a34('0x42')](handleError(_0x296526,null));};exports[_0x9a34('0x43')]=function(_0x435944,_0x323980){var _0x395f8f={'raw':!![],'where':{'id':_0x435944[_0x9a34('0x44')]['id']}},_0x3cb40f={};_0x3cb40f[_0x9a34('0x28')]=_[_0x9a34('0x2c')](db[_0x9a34('0x3e')][_0x9a34('0x27')]);_0x3cb40f[_0x9a34('0x29')]=_['keys'](_0x435944[_0x9a34('0x29')]);_0x3cb40f[_0x9a34('0x2d')]=_[_0x9a34('0x2e')](_0x3cb40f[_0x9a34('0x28')],_0x3cb40f[_0x9a34('0x29')]);_0x395f8f[_0x9a34('0x2f')]=_[_0x9a34('0x2e')](_0x3cb40f['model'],qs[_0x9a34('0x30')](_0x435944[_0x9a34('0x29')][_0x9a34('0x30')]));_0x395f8f[_0x9a34('0x2f')]=_0x395f8f['attributes'][_0x9a34('0x31')]?_0x395f8f[_0x9a34('0x2f')]:_0x3cb40f['model'];if(_0x435944['query'][_0x9a34('0x45')]){_0x395f8f[_0x9a34('0x3f')]=[{'all':!![]}];}_0x395f8f=_[_0x9a34('0x36')]({},_0x395f8f,_0x435944[_0x9a34('0x3d')]);return db[_0x9a34('0x3e')][_0x9a34('0x46')](_0x395f8f)[_0x9a34('0x20')](handleEntityNotFound(_0x323980,null))[_0x9a34('0x20')](respondWithResult(_0x323980,null))[_0x9a34('0x42')](handleError(_0x323980,null));};exports[_0x9a34('0x47')]=function(_0x2113e9,_0x21b1b4){return db[_0x9a34('0x3e')]['create'](_0x2113e9['body'],{})[_0x9a34('0x20')](respondWithResult(_0x21b1b4,0xc9))[_0x9a34('0x42')](handleError(_0x21b1b4,null));};exports[_0x9a34('0x48')]=function(_0x56c2cc,_0x50cc6e){return db['CmHopperHistory'][_0x9a34('0x48')]()[_0x9a34('0x20')](respondWithResult(_0x50cc6e,null))[_0x9a34('0x42')](handleError(_0x50cc6e,null));};exports[_0x9a34('0x1f')]=function(_0x21f38c,_0x34b56a){if(_0x21f38c[_0x9a34('0x49')]['uniqueid']){delete _0x21f38c[_0x9a34('0x49')][_0x9a34('0x4a')];}return db[_0x9a34('0x3e')][_0x9a34('0x46')]({'where':{'uniqueid':_0x21f38c['params']['id']}})[_0x9a34('0x20')](handleEntityNotFound(_0x34b56a,null))[_0x9a34('0x20')](saveUpdates(_0x21f38c['body'],null))[_0x9a34('0x20')](respondWithResult(_0x34b56a,null))[_0x9a34('0x42')](handleError(_0x34b56a,null));};
\ No newline at end of file
index 5cd589b..56431c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb4b=['cm_hopper_history','endtime','uniqueid','lodash','../../config/logger','api','moment','request-promise','exports','define','CmHopperHistory'];(function(_0x1c15d5,_0x3d52e6){var _0x1bad2c=function(_0x22bd4f){while(--_0x22bd4f){_0x1c15d5['push'](_0x1c15d5['shift']());}};_0x1bad2c(++_0x3d52e6);}(_0xdb4b,0xd4));var _0xbdb4=function(_0x1fe8b9,_0xd87696){_0x1fe8b9=_0x1fe8b9-0x0;var _0x25d006=_0xdb4b[_0x1fe8b9];return _0x25d006;};'use strict';var _=require(_0xbdb4('0x0'));var util=require('util');var logger=require(_0xbdb4('0x1'))(_0xbdb4('0x2'));var moment=require(_0xbdb4('0x3'));var BPromise=require('bluebird');var rp=require(_0xbdb4('0x4'));var attributes=require('./cmHopperHistory.attributes');module[_0xbdb4('0x5')]=function(_0x8c244,_0x1b9d83){return _0x8c244[_0xbdb4('0x6')](_0xbdb4('0x7'),attributes,{'tableName':_0xbdb4('0x8'),'paranoid':![],'indexes':[{'name':_0xbdb4('0x9'),'fields':[_0xbdb4('0x9')]},{'name':_0xbdb4('0xa'),'fields':[_0xbdb4('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4190=['uniqueid','lodash','util','moment','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime'];(function(_0x4d2993,_0x1c9473){var _0x427374=function(_0x149dfd){while(--_0x149dfd){_0x4d2993['push'](_0x4d2993['shift']());}};_0x427374(++_0x1c9473);}(_0x4190,0x83));var _0x0419=function(_0xe5b349,_0x5f06e4){_0xe5b349=_0xe5b349-0x0;var _0x26b0ad=_0x4190[_0xe5b349];return _0x26b0ad;};'use strict';var _=require(_0x0419('0x0'));var util=require(_0x0419('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0419('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x0419('0x3'));module[_0x0419('0x4')]=function(_0x46a47f,_0x723d2e){return _0x46a47f[_0x0419('0x5')](_0x0419('0x6'),attributes,{'tableName':_0x0419('0x7'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0x0419('0x8')]},{'name':_0x0419('0x9'),'fields':[_0x0419('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 937bd27..894e805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eb5=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateCmHopperHistory','CmHopperHistory','create','options','AvgHandleTime','findAll','raw','where','sequelize','col','predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','ivrAnswerCallsDay','lodash','util','bluebird','randomstring'];(function(_0x8aec06,_0x3d5724){var _0x4c3613=function(_0x3c85da){while(--_0x3c85da){_0x8aec06['push'](_0x8aec06['shift']());}};_0x4c3613(++_0x3d5724);}(_0x4eb5,0x19a));var _0x54eb=function(_0x3f63d6,_0x3dc119){_0x3f63d6=_0x3f63d6-0x0;var _0x42ea15=_0x4eb5[_0x3f63d6];return _0x42ea15;};'use strict';var _=require(_0x54eb('0x0'));var util=require(_0x54eb('0x1'));var moment=require('moment');var BPromise=require(_0x54eb('0x2'));var rs=require(_0x54eb('0x3'));var fs=require('fs');var Redis=require(_0x54eb('0x4'));var db=require(_0x54eb('0x5'))['db'];var utils=require(_0x54eb('0x6'));var logger=require(_0x54eb('0x7'))(_0x54eb('0x8'));var config=require('../../config/environment');var jayson=require(_0x54eb('0x9'));var client=jayson[_0x54eb('0xa')][_0x54eb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3536eb,_0x23115c,_0x3658c4){return new BPromise(function(_0x234a69,_0x307533){return client[_0x54eb('0xc')](_0x3536eb,_0x3658c4)[_0x54eb('0xd')](function(_0x273a60){logger[_0x54eb('0xe')](_0x54eb('0xf'),_0x23115c,_0x54eb('0x10'));logger[_0x54eb('0x11')](_0x54eb('0x12'),_0x23115c,_0x54eb('0x10'),JSON[_0x54eb('0x13')](_0x273a60));if(_0x273a60['error']){if(_0x273a60[_0x54eb('0x14')][_0x54eb('0x15')]===0x1f4){logger[_0x54eb('0x14')](_0x54eb('0xf'),_0x23115c,_0x273a60[_0x54eb('0x14')][_0x54eb('0x16')]);return _0x307533(_0x273a60['error'][_0x54eb('0x16')]);}logger[_0x54eb('0x14')](_0x54eb('0xf'),_0x23115c,_0x273a60[_0x54eb('0x14')][_0x54eb('0x16')]);return _0x234a69(_0x273a60['error'][_0x54eb('0x16')]);}else{logger[_0x54eb('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0x23115c,'request\x20sent');_0x234a69(_0x273a60[_0x54eb('0x17')][_0x54eb('0x16')]);}})['catch'](function(_0x2bf859){logger['error'](_0x54eb('0xf'),_0x23115c,_0x2bf859);_0x307533(_0x2bf859);});});}exports[_0x54eb('0x18')]=function(_0x26e281){var _0x5e41cd=this;return new Promise(function(_0x35911c,_0x2fe69d){return db[_0x54eb('0x19')][_0x54eb('0x1a')](_0x26e281['body'],{'raw':_0x26e281['options']?_0x26e281[_0x54eb('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x484b91){logger[_0x54eb('0xe')](_0x54eb('0x18'),_0x26e281);logger[_0x54eb('0x11')]('CreateCmHopperHistory',_0x26e281,JSON['stringify'](_0x484b91));_0x35911c(_0x484b91);})['catch'](function(_0x3370d1){logger[_0x54eb('0x14')](_0x54eb('0x18'),_0x3370d1[_0x54eb('0x16')],_0x26e281);_0x2fe69d(_0x5e41cd[_0x54eb('0x14')](0x1f4,_0x3370d1[_0x54eb('0x16')]));});});};exports[_0x54eb('0x1c')]=function(_0x28eb4f){var _0x219201=this;return new Promise(function(_0x2c72a6,_0x3018f6){return db['CmHopperHistory'][_0x54eb('0x1d')]({'raw':_0x28eb4f['options']?_0x28eb4f[_0x54eb('0x1b')][_0x54eb('0x1e')]===undefined?!![]:![]:!![],'where':_0x28eb4f[_0x54eb('0x1b')]?_0x28eb4f[_0x54eb('0x1b')][_0x54eb('0x1f')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x54eb('0x20')][_0x54eb('0x21')]('id')),_0x54eb('0x22')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db['sequelize'][_0x54eb('0x24')](_0x54eb('0x25')))),_0x54eb('0x26')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')]('`state`\x20=\x2010,\x201,\x20null'))),_0x54eb('0x27')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db['sequelize'][_0x54eb('0x24')](_0x54eb('0x28')))),_0x54eb('0x29')],[db['sequelize']['fn']('AVG',db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')]['literal']('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0x54eb('0x2a')],[db[_0x54eb('0x20')]['fn']('AVG',db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x2b')))),_0x54eb('0x2c')]]})[_0x54eb('0xd')](function(_0x21ea04){logger[_0x54eb('0xe')]('AvgHandleTime',_0x28eb4f);logger[_0x54eb('0x11')]('AvgHandleTime',_0x28eb4f,JSON['stringify'](_0x21ea04));_0x2c72a6(_0x21ea04);})['catch'](function(_0x344231){logger[_0x54eb('0x14')]('AvgHandleTime',_0x344231[_0x54eb('0x16')],_0x28eb4f);_0x3018f6(_0x219201[_0x54eb('0x14')](0x1f4,_0x344231[_0x54eb('0x16')]));});});};exports[_0x54eb('0x2d')]=function(_0xf022ad){var _0x39dfcf=this;return new Promise(function(_0x560739,_0x210430){return db[_0x54eb('0x19')][_0x54eb('0x1d')]({'raw':_0xf022ad[_0x54eb('0x1b')]?_0xf022ad[_0x54eb('0x1b')][_0x54eb('0x1e')]===undefined?!![]:![]:!![],'where':_0xf022ad['options']?_0xf022ad[_0x54eb('0x1b')]['where']||null:null,'attributes':[[_0x54eb('0x2e'),'name'],[db[_0x54eb('0x20')]['fn']('COUNT',db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x2f')))),_0x54eb('0x30')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db['sequelize']['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x31')))),_0x54eb('0x32')],[db[_0x54eb('0x20')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x25')))),_0x54eb('0x33')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db['sequelize']['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x34')))),_0x54eb('0x35')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x36')))),'outboundCongestionCallsDay'],[db[_0x54eb('0x20')]['fn']('COUNT',db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x37')))),_0x54eb('0x38')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x39')))),_0x54eb('0x3a')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db['sequelize']['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')]('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db['sequelize'][_0x54eb('0x24')](_0x54eb('0x3b')))),_0x54eb('0x3c')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db['sequelize'][_0x54eb('0x24')]('`state`\x20=\x2014,\x201,\x20null'))),_0x54eb('0x3d')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')]['literal']('`state`\x20=\x2018,\x201,\x20null'))),_0x54eb('0x3e')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db['sequelize']['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x3f')))),_0x54eb('0x40')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x54eb('0x41')))),_0x54eb('0x3e')],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0x54eb('0x42')]],'group':['campaign']})['then'](function(_0xf5dfb4){logger[_0x54eb('0xe')](_0x54eb('0x2d'),_0xf022ad);logger['debug'](_0x54eb('0x2d'),_0xf022ad,JSON[_0x54eb('0x13')](_0xf5dfb4));_0x560739(_0xf5dfb4);})['catch'](function(_0x49841d){logger[_0x54eb('0x14')](_0x54eb('0x2d'),_0x49841d['message'],_0xf022ad);_0x210430(_0x39dfcf['error'](0x1f4,_0x49841d[_0x54eb('0x16')]));});});};exports[_0x54eb('0x43')]=function(_0x3d3488){var _0x2c0142=this;return new Promise(function(_0x454f13,_0x479dd1){return db[_0x54eb('0x19')]['findAll']({'raw':_0x3d3488[_0x54eb('0x1b')]?_0x3d3488['options'][_0x54eb('0x1e')]===undefined?!![]:![]:!![],'where':_0x3d3488['options']?_0x3d3488['options'][_0x54eb('0x1f')]||null:null,'attributes':[[_0x54eb('0x2e'),'name'],[db['sequelize']['fn']('COUNT',db[_0x54eb('0x20')][_0x54eb('0x21')]('id')),'ivrTotalCallsDays'],[db[_0x54eb('0x20')]['fn'](_0x54eb('0x23'),db[_0x54eb('0x20')]['fn']('IF',db[_0x54eb('0x20')][_0x54eb('0x24')](_0x54eb('0x25')))),_0x54eb('0x44')]],'group':[_0x54eb('0x2e')]})[_0x54eb('0xd')](function(_0x1e9737){logger[_0x54eb('0xe')](_0x54eb('0x43'),_0x3d3488);logger[_0x54eb('0x11')](_0x54eb('0x43'),_0x3d3488,JSON['stringify'](_0x1e9737));_0x454f13(_0x1e9737);})['catch'](function(_0x3115a9){logger['error'](_0x54eb('0x43'),_0x3115a9['message'],_0x3d3488);_0x479dd1(_0x2c0142[_0x54eb('0x14')](0x1f4,_0x3115a9[_0x54eb('0x16')]));});});};
\ No newline at end of file
+var _0xe356=['request','CmHopperHistory,\x20%s,\x20%s','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','debug','stringify','catch','AvgHandleTime','findAll','where','sequelize','col','predictiveIntervalTotalCalls','literal','COUNT','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','outboundNoSuchCallsDay','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','name','ivrTotalCallsDays','ivrAnswerCallsDay','then','GetCampaignHopperHistory','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x3c0348,_0x2e277a){var _0x2a8f9a=function(_0xe5861f){while(--_0xe5861f){_0x3c0348['push'](_0x3c0348['shift']());}};_0x2a8f9a(++_0x2e277a);}(_0xe356,0x1ee));var _0x6e35=function(_0x2e4843,_0x1901b3){_0x2e4843=_0x2e4843-0x0;var _0x42c269=_0xe356[_0x2e4843];return _0x42c269;};'use strict';var _=require(_0x6e35('0x0'));var util=require(_0x6e35('0x1'));var moment=require(_0x6e35('0x2'));var BPromise=require(_0x6e35('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6e35('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6e35('0x5'));var logger=require(_0x6e35('0x6'))(_0x6e35('0x7'));var config=require('../../config/environment');var jayson=require(_0x6e35('0x8'));var client=jayson[_0x6e35('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x389ae2,_0xba948e,_0x114b4c){return new BPromise(function(_0x1da99b,_0x5119fa){return client[_0x6e35('0xa')](_0x389ae2,_0x114b4c)['then'](function(_0x3b3c16){logger['info'](_0x6e35('0xb'),_0xba948e,'request\x20sent');logger['debug'](_0x6e35('0xc'),_0xba948e,_0x6e35('0xd'),JSON['stringify'](_0x3b3c16));if(_0x3b3c16['error']){if(_0x3b3c16[_0x6e35('0xe')][_0x6e35('0xf')]===0x1f4){logger[_0x6e35('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0xba948e,_0x3b3c16[_0x6e35('0xe')][_0x6e35('0x10')]);return _0x5119fa(_0x3b3c16[_0x6e35('0xe')]['message']);}logger[_0x6e35('0xe')](_0x6e35('0xb'),_0xba948e,_0x3b3c16[_0x6e35('0xe')]['message']);return _0x1da99b(_0x3b3c16[_0x6e35('0xe')][_0x6e35('0x10')]);}else{logger[_0x6e35('0x11')]('CmHopperHistory,\x20%s,\x20%s',_0xba948e,_0x6e35('0xd'));_0x1da99b(_0x3b3c16[_0x6e35('0x12')][_0x6e35('0x10')]);}})['catch'](function(_0x3e7e7a){logger[_0x6e35('0xe')](_0x6e35('0xb'),_0xba948e,_0x3e7e7a);_0x5119fa(_0x3e7e7a);});});}exports[_0x6e35('0x13')]=function(_0x58a622){var _0x408504=this;return new Promise(function(_0x2bd771,_0x53e26d){return db[_0x6e35('0x14')][_0x6e35('0x15')](_0x58a622[_0x6e35('0x16')],{'raw':_0x58a622[_0x6e35('0x17')]?_0x58a622[_0x6e35('0x17')][_0x6e35('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x35f44){logger[_0x6e35('0x11')](_0x6e35('0x13'),_0x58a622);logger[_0x6e35('0x19')](_0x6e35('0x13'),_0x58a622,JSON[_0x6e35('0x1a')](_0x35f44));_0x2bd771(_0x35f44);})[_0x6e35('0x1b')](function(_0xa9044f){logger[_0x6e35('0xe')]('CreateCmHopperHistory',_0xa9044f[_0x6e35('0x10')],_0x58a622);_0x53e26d(_0x408504['error'](0x1f4,_0xa9044f['message']));});});};exports[_0x6e35('0x1c')]=function(_0x529510){var _0x7b3d0b=this;return new Promise(function(_0x47f4d9,_0x36a0aa){return db[_0x6e35('0x14')][_0x6e35('0x1d')]({'raw':_0x529510[_0x6e35('0x17')]?_0x529510[_0x6e35('0x17')][_0x6e35('0x18')]===undefined?!![]:![]:!![],'where':_0x529510[_0x6e35('0x17')]?_0x529510[_0x6e35('0x17')][_0x6e35('0x1e')]||null:null,'attributes':[[db[_0x6e35('0x1f')]['fn']('COUNT',db[_0x6e35('0x1f')][_0x6e35('0x20')]('id')),_0x6e35('0x21')],[db['sequelize']['fn']('COUNT',db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')]('`state`\x20=\x204,\x201,\x20null'))),'predictiveIntervalAnsweredCalls'],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db[_0x6e35('0x1f')]['fn']('IF',db['sequelize'][_0x6e35('0x22')](_0x6e35('0x24')))),_0x6e35('0x25')],[db['sequelize']['fn'](_0x6e35('0x23'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')]('`state`\x20=\x2011,\x201,\x20null'))),_0x6e35('0x26')],[db['sequelize']['fn'](_0x6e35('0x27'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')](_0x6e35('0x28')))),_0x6e35('0x29')],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x27'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')]['literal'](_0x6e35('0x2a')))),_0x6e35('0x2b')]]})['then'](function(_0x4a7440){logger[_0x6e35('0x11')]('AvgHandleTime',_0x529510);logger[_0x6e35('0x19')](_0x6e35('0x1c'),_0x529510,JSON['stringify'](_0x4a7440));_0x47f4d9(_0x4a7440);})[_0x6e35('0x1b')](function(_0x42b8a7){logger[_0x6e35('0xe')]('AvgHandleTime',_0x42b8a7[_0x6e35('0x10')],_0x529510);_0x36a0aa(_0x7b3d0b[_0x6e35('0xe')](0x1f4,_0x42b8a7[_0x6e35('0x10')]));});});};exports[_0x6e35('0x2c')]=function(_0x2206f1){var _0x243efe=this;return new Promise(function(_0x4e1a2f,_0x401196){return db[_0x6e35('0x14')][_0x6e35('0x1d')]({'raw':_0x2206f1[_0x6e35('0x17')]?_0x2206f1['options'][_0x6e35('0x18')]===undefined?!![]:![]:!![],'where':_0x2206f1['options']?_0x2206f1['options'][_0x6e35('0x1e')]||null:null,'attributes':[[_0x6e35('0x2d'),'name'],[db['sequelize']['fn'](_0x6e35('0x23'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0x6e35('0x2e')],[db[_0x6e35('0x1f')]['fn']('COUNT',db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')]['literal']('`state`\x20=\x203,\x201,\x20null'))),_0x6e35('0x2f')],[db['sequelize']['fn'](_0x6e35('0x23'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')](_0x6e35('0x30')))),_0x6e35('0x31')],[db[_0x6e35('0x1f')]['fn']('COUNT',db[_0x6e35('0x1f')]['fn']('IF',db['sequelize'][_0x6e35('0x22')](_0x6e35('0x32')))),_0x6e35('0x33')],[db['sequelize']['fn'](_0x6e35('0x23'),db['sequelize']['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')](_0x6e35('0x34')))),_0x6e35('0x35')],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')](_0x6e35('0x36')))),'outboundDropCallsDayTimeout'],[db[_0x6e35('0x1f')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x6e35('0x37')))),'outboundDropCallsDayCallersExit'],[db[_0x6e35('0x1f')]['fn']('COUNT',db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')](_0x6e35('0x38')))),_0x6e35('0x39')],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db['sequelize']['fn']('IF',db[_0x6e35('0x1f')]['literal'](_0x6e35('0x3a')))),_0x6e35('0x3b')],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')]['literal'](_0x6e35('0x3c')))),_0x6e35('0x3d')],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')]['literal'](_0x6e35('0x3e')))),'outboundRejectCallsDay'],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db['sequelize']['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')](_0x6e35('0x3f')))),_0x6e35('0x40')],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db['sequelize']['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')]('`state`\x20=\x2020,\x201,\x20null'))),_0x6e35('0x41')],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db[_0x6e35('0x1f')]['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')](_0x6e35('0x42')))),'outboundReCallsDay']],'group':[_0x6e35('0x2d')]})['then'](function(_0x36594f){logger[_0x6e35('0x11')](_0x6e35('0x2c'),_0x2206f1);logger['debug']('GetVoiceQueueHopperHistory',_0x2206f1,JSON[_0x6e35('0x1a')](_0x36594f));_0x4e1a2f(_0x36594f);})[_0x6e35('0x1b')](function(_0x3b52e0){logger[_0x6e35('0xe')]('GetVoiceQueueHopperHistory',_0x3b52e0['message'],_0x2206f1);_0x401196(_0x243efe[_0x6e35('0xe')](0x1f4,_0x3b52e0['message']));});});};exports['GetCampaignHopperHistory']=function(_0x171ecd){var _0x55ee8f=this;return new Promise(function(_0x339672,_0x644eb0){return db[_0x6e35('0x14')][_0x6e35('0x1d')]({'raw':_0x171ecd[_0x6e35('0x17')]?_0x171ecd[_0x6e35('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x171ecd[_0x6e35('0x17')]?_0x171ecd[_0x6e35('0x17')]['where']||null:null,'attributes':[['campaign',_0x6e35('0x43')],[db[_0x6e35('0x1f')]['fn']('COUNT',db[_0x6e35('0x1f')]['col']('id')),_0x6e35('0x44')],[db[_0x6e35('0x1f')]['fn'](_0x6e35('0x23'),db['sequelize']['fn']('IF',db[_0x6e35('0x1f')][_0x6e35('0x22')]('`state`\x20=\x204,\x201,\x20null'))),_0x6e35('0x45')]],'group':['campaign']})[_0x6e35('0x46')](function(_0x2d499e){logger[_0x6e35('0x11')](_0x6e35('0x47'),_0x171ecd);logger['debug']('GetCampaignHopperHistory',_0x171ecd,JSON[_0x6e35('0x1a')](_0x2d499e));_0x339672(_0x2d499e);})[_0x6e35('0x1b')](function(_0x17dca4){logger[_0x6e35('0xe')]('GetCampaignHopperHistory',_0x17dca4[_0x6e35('0x10')],_0x171ecd);_0x644eb0(_0x55ee8f[_0x6e35('0xe')](0x1f4,_0x17dca4['message']));});});};
\ No newline at end of file
index cad9fed..31670f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x207c=['./cmHopperHistory.controller','get','/describe','isAuthenticated','/:id','post','create','put','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0xef38a7,_0x30e4e6){var _0xcc98c6=function(_0x36cc20){while(--_0x36cc20){_0xef38a7['push'](_0xef38a7['shift']());}};_0xcc98c6(++_0x30e4e6);}(_0x207c,0x1e8));var _0xc207=function(_0x5e1248,_0x42b862){_0x5e1248=_0x5e1248-0x0;var _0x1b4201=_0x207c[_0x5e1248];return _0x1b4201;};'use strict';var multer=require('multer');var util=require(_0xc207('0x0'));var path=require(_0xc207('0x1'));var timeout=require(_0xc207('0x2'));var express=require(_0xc207('0x3'));var router=express[_0xc207('0x4')]();var auth=require(_0xc207('0x5'));var interaction=require(_0xc207('0x6'));var config=require('../../config/environment');var controller=require(_0xc207('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xc207('0x8')](_0xc207('0x9'),auth[_0xc207('0xa')](),controller['describe']);router[_0xc207('0x8')](_0xc207('0xb'),auth[_0xc207('0xa')](),controller['show']);router[_0xc207('0xc')]('/',auth[_0xc207('0xa')](),controller[_0xc207('0xd')]);router[_0xc207('0xe')](_0xc207('0xb'),auth[_0xc207('0xa')](),controller['update']);module['exports']=router;
\ No newline at end of file
+var _0x8819=['create','put','update','exports','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/:id','post'];(function(_0x95a41,_0x1c72ff){var _0x2ccd48=function(_0x7cc6df){while(--_0x7cc6df){_0x95a41['push'](_0x95a41['shift']());}};_0x2ccd48(++_0x1c72ff);}(_0x8819,0x94));var _0x9881=function(_0x42cf1c,_0xd8d597){_0x42cf1c=_0x42cf1c-0x0;var _0xcd94=_0x8819[_0x42cf1c];return _0xcd94;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9881('0x0'));var timeout=require(_0x9881('0x1'));var express=require(_0x9881('0x2'));var router=express[_0x9881('0x3')]();var auth=require(_0x9881('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x9881('0x5'));var controller=require(_0x9881('0x6'));router[_0x9881('0x7')]('/',auth[_0x9881('0x8')](),controller[_0x9881('0x9')]);router[_0x9881('0x7')]('/describe',auth[_0x9881('0x8')](),controller['describe']);router['get'](_0x9881('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x9881('0xb')]('/',auth['isAuthenticated'](),controller[_0x9881('0xc')]);router[_0x9881('0xd')](_0x9881('0xa'),auth['isAuthenticated'](),controller[_0x9881('0xe')]);module[_0x9881('0xf')]=router;
\ No newline at end of file
index f63a177..df00bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['STRING','sequelize'];(function(_0x279aa9,_0xf230ba){var _0x2085af=function(_0x300758){while(--_0x300758){_0x279aa9['push'](_0x279aa9['shift']());}};_0x2085af(++_0xf230ba);}(_0x2675,0x75));var _0x5267=function(_0x5bdbbb,_0x582d42){_0x5bdbbb=_0x5bdbbb-0x0;var _0x4324ef=_0x2675[_0x5bdbbb];return _0x4324ef;};'use strict';var Sequelize=require(_0x5267('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x5267('0x1')]},'dialPrefix':{'type':Sequelize[_0x5267('0x1')]}};
\ No newline at end of file
+var _0x46ed=['sequelize','exports','name','STRING'];(function(_0x4a599b,_0x1d2125){var _0x2d53d3=function(_0x5e7982){while(--_0x5e7982){_0x4a599b['push'](_0x4a599b['shift']());}};_0x2d53d3(++_0x1d2125);}(_0x46ed,0x168));var _0xd46e=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0x46ed[_0x4ff09b];return _0x3f5c2e;};'use strict';var Sequelize=require(_0xd46e('0x0'));module[_0xd46e('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xd46e('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xd46e('0x3')]},'dialPrefix':{'type':Sequelize[_0xd46e('0x3')]}};
\ No newline at end of file
index d11d9ea..9d82b1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','redis','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','index','CmList','rawAttributes','model','keys','query','dateStart','dateEnd','filters','attributes','intersection','fields','hasOwnProperty','order','sort','pick','day','add','merge','where','filter','map','type','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ListId','Disposition','findOne','nolimit','removeDispositions','ids','addContacts','CmContact','tags','join','isArray','push','each','omit','success','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','cf_%d','raw','getContactsCsv','format','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','list_%d_%s.csv','setHeader','Content-type','text/csv','download','addCustomField','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','sequelize','queryInterface','addColumn','getCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','html-pdf','eml-format','rimraf'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var pdf=require(_0x0a9e('0x0'));var emlformat=require(_0x0a9e('0x1'));var rimraf=require(_0x0a9e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a9e('0x3'));var moment=require('moment');var BPromise=require(_0x0a9e('0x4'));var Mustache=require(_0x0a9e('0x5'));var util=require(_0x0a9e('0x6'));var path=require(_0x0a9e('0x7'));var sox=require(_0x0a9e('0x8'));var csv=require('to-csv');var ejs=require(_0x0a9e('0x9'));var fs=require('fs');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 qs=require(_0x0a9e('0xf'));var logger=require(_0x0a9e('0x10'))(_0x0a9e('0x11'));var utils=require(_0x0a9e('0x12'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x0a9e('0x13')],{'host':_0x0a9e('0x14'),'port':0x18eb});var socket=require(_0x0a9e('0x15'))(new Redis(config[_0x0a9e('0x13')]));require(_0x0a9e('0x16'))[_0x0a9e('0x17')](socket);function respondWithStatusCode(_0x5db4b0,_0x4283ce){_0x4283ce=_0x4283ce||0xcc;return function(_0x239b12){if(_0x239b12){return _0x5db4b0[_0x0a9e('0x18')](_0x4283ce);}return _0x5db4b0[_0x0a9e('0x19')](_0x4283ce)[_0x0a9e('0x1a')]();};}function respondWithResult(_0x4d5611,_0x52a03d){_0x52a03d=_0x52a03d||0xc8;return function(_0x22dccb){if(_0x22dccb){return _0x4d5611['status'](_0x52a03d)[_0x0a9e('0x1b')](_0x22dccb);}};}function respondWithFilteredResult(_0x519dfd,_0x16033c){return function(_0x12066b){if(_0x12066b){var _0x48f32d=_0x12066b[_0x0a9e('0x1c')],_0x225616=_0x16033c[_0x0a9e('0x1d')],_0x5a0a06=_0x16033c[_0x0a9e('0x1d')]+_0x16033c[_0x0a9e('0x1e')],_0x459eb1;if(_0x5a0a06>=_0x48f32d){_0x5a0a06=_0x48f32d;_0x459eb1=0xc8;}else{_0x459eb1=0xce;}_0x519dfd[_0x0a9e('0x19')](_0x459eb1);return _0x519dfd[_0x0a9e('0x1f')](_0x0a9e('0x20'),_0x225616+'-'+_0x5a0a06+'/'+_0x48f32d)[_0x0a9e('0x1b')](_0x12066b);}return null;};}function patchUpdates(_0x112016){return function(_0x1c696a){try{jsonpatch[_0x0a9e('0x21')](_0x1c696a,_0x112016,!![]);}catch(_0x4bb1e3){return BPromise[_0x0a9e('0x22')](_0x4bb1e3);}return _0x1c696a[_0x0a9e('0x23')]();};}function saveUpdates(_0x53682f,_0x20f109){return function(_0x5a09ef){if(_0x5a09ef){return _0x5a09ef['update'](_0x53682f)[_0x0a9e('0x24')](function(_0x432e56){return _0x432e56;});}return null;};}function removeEntity(_0x38e7c4,_0x30bae6){return function(_0x4abc77){if(_0x4abc77){return _0x4abc77[_0x0a9e('0x25')]()[_0x0a9e('0x24')](function(){var _0x3b45bc=_0x4abc77[_0x0a9e('0x26')]({'plain':!![]});var _0x370d86=_0x0a9e('0x27');return db[_0x0a9e('0x28')]['destroy']({'where':{'type':_0x370d86,'resourceId':_0x3b45bc['id']}})['then'](function(){return _0x4abc77;});})[_0x0a9e('0x24')](function(){_0x38e7c4[_0x0a9e('0x19')](0xcc)[_0x0a9e('0x1a')]();});}};}function handleEntityNotFound(_0x33161b,_0x526cf3){return function(_0x384319){if(!_0x384319){_0x33161b['sendStatus'](0x194);}return _0x384319;};}function handleError(_0x45a1e7,_0x5bfb33){_0x5bfb33=_0x5bfb33||0x1f4;return function(_0x1dc186){logger[_0x0a9e('0x29')](_0x1dc186[_0x0a9e('0x2a')]);if(_0x1dc186[_0x0a9e('0x2b')]){delete _0x1dc186[_0x0a9e('0x2b')];}_0x45a1e7[_0x0a9e('0x19')](_0x5bfb33)[_0x0a9e('0x2c')](_0x1dc186);};}exports[_0x0a9e('0x2d')]=function(_0x5a101a,_0x3652a7){var _0x468813={},_0x2b1f27={},_0x2ec755={'count':0x0,'rows':[]};var _0x5c877d=db[_0x0a9e('0x2e')][_0x0a9e('0x2f')];_0x2b1f27[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x5c877d);var _0x58b06f={'dateStart':_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x33')],'dateEnd':_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x34')]};delete _0x5a101a['query'][_0x0a9e('0x33')];delete _0x5a101a['query'][_0x0a9e('0x34')];_0x2b1f27[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x5a101a[_0x0a9e('0x32')]);_0x2b1f27[_0x0a9e('0x35')]=_['intersection'](_0x2b1f27[_0x0a9e('0x30')],_0x2b1f27[_0x0a9e('0x32')]);_0x468813[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x2b1f27[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x468813['attributes']=_0x468813[_0x0a9e('0x36')]['length']?_0x468813[_0x0a9e('0x36')]:_0x2b1f27[_0x0a9e('0x30')];if(!_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x39')]('nolimit')){_0x468813[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x1e')]);_0x468813['offset']=qs['offset'](_0x5a101a[_0x0a9e('0x32')]['offset']);}_0x468813[_0x0a9e('0x3a')]=qs[_0x0a9e('0x3b')](_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x3b')]);_0x468813['where']=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x5a101a[_0x0a9e('0x32')],_0x2b1f27['filters']));if(_0x58b06f[_0x0a9e('0x33')]){if(_0x58b06f[_0x0a9e('0x34')]){_0x58b06f[_0x0a9e('0x34')]=moment(_0x58b06f['dateEnd'])['add'](0x1,_0x0a9e('0x3d'));}else{_0x58b06f[_0x0a9e('0x34')]=moment(_0x58b06f['dateStart'])[_0x0a9e('0x3e')](0x1,_0x0a9e('0x3d'));}_[_0x0a9e('0x3f')](_0x468813[_0x0a9e('0x40')],{'createdAt':{'$gte':_0x58b06f['dateStart'],'$lte':_0x58b06f['dateEnd']}});}if(_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x41')]){_0x468813['where']=_[_0x0a9e('0x3f')](_0x468813[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x5c877d,function(_0x5b4f5e){if(_0x5b4f5e[_0x0a9e('0x43')][_0x0a9e('0x44')]!==_0x0a9e('0x45')){var _0x43dd5b={};_0x43dd5b[_0x5b4f5e[_0x0a9e('0x46')]]={'$like':'%'+_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x43dd5b;}})});}_0x468813=_[_0x0a9e('0x3f')]({},_0x468813,_0x5a101a[_0x0a9e('0x47')]);var _0x3da2cd={'where':_0x468813[_0x0a9e('0x40')]};return db[_0x0a9e('0x2e')][_0x0a9e('0x1c')](_0x3da2cd)[_0x0a9e('0x24')](function(_0x37f6cc){_0x2ec755['count']=_0x37f6cc;if(_0x5a101a['query'][_0x0a9e('0x48')]){_0x468813[_0x0a9e('0x49')]=[{'all':!![]}];}return db[_0x0a9e('0x2e')][_0x0a9e('0x4a')](_0x468813);})[_0x0a9e('0x24')](function(_0xc9a702){_0x2ec755[_0x0a9e('0x4b')]=_0xc9a702;return _0x2ec755;})[_0x0a9e('0x24')](respondWithFilteredResult(_0x3652a7,_0x468813))[_0x0a9e('0x4c')](handleError(_0x3652a7,null));};exports[_0x0a9e('0x4d')]=function(_0x2c2cb0,_0x35ed4a){var _0x5026aa={'raw':![],'where':{'id':_0x2c2cb0[_0x0a9e('0x4e')]['id']}},_0x117c99={};_0x117c99[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](db[_0x0a9e('0x2e')][_0x0a9e('0x2f')]);_0x117c99[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x2c2cb0['query']);_0x117c99[_0x0a9e('0x35')]=_['intersection'](_0x117c99[_0x0a9e('0x30')],_0x117c99[_0x0a9e('0x32')]);_0x5026aa[_0x0a9e('0x36')]=_['intersection'](_0x117c99[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0x2c2cb0[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x5026aa[_0x0a9e('0x36')]=_0x5026aa[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x5026aa['attributes']:_0x117c99[_0x0a9e('0x30')];if(_0x2c2cb0[_0x0a9e('0x32')][_0x0a9e('0x48')]){_0x5026aa[_0x0a9e('0x49')]=[{'all':!![]}];}_0x5026aa=_[_0x0a9e('0x3f')]({},_0x5026aa,_0x2c2cb0[_0x0a9e('0x47')]);return db[_0x0a9e('0x2e')][_0x0a9e('0x50')](_0x5026aa)[_0x0a9e('0x24')](handleEntityNotFound(_0x35ed4a,null))['then'](respondWithResult(_0x35ed4a,null))[_0x0a9e('0x4c')](handleError(_0x35ed4a,null));};exports[_0x0a9e('0x51')]=function(_0x4f7240,_0x4ae14b){return db['CmList'][_0x0a9e('0x51')](_0x4f7240[_0x0a9e('0x52')],{})[_0x0a9e('0x24')](function(_0x11545a){var _0x61bb17=_0x4f7240[_0x0a9e('0x53')][_0x0a9e('0x26')]({'plain':!![]});if(!_0x61bb17)throw new Error(_0x0a9e('0x54'));if(_0x61bb17['role']==='user'){var _0x53975a=_0x11545a[_0x0a9e('0x26')]({'plain':!![]});var _0x204173=_0x0a9e('0x27');return db['UserProfileSection'][_0x0a9e('0x50')]({'where':{'name':_0x204173,'userProfileId':_0x61bb17[_0x0a9e('0x55')]},'raw':!![]})['then'](function(_0x5a88da){if(_0x5a88da&&_0x5a88da[_0x0a9e('0x56')]===0x0){return db['UserProfileResource'][_0x0a9e('0x51')]({'name':_0x53975a['name'],'resourceId':_0x53975a['id'],'type':_0x5a88da[_0x0a9e('0x2b')],'sectionId':_0x5a88da['id']},{})[_0x0a9e('0x24')](function(){return _0x11545a;});}else{return _0x11545a;}})[_0x0a9e('0x4c')](function(_0x53613a){logger[_0x0a9e('0x29')](_0x0a9e('0x57'),_0x53613a);throw _0x53613a;});}return _0x11545a;})['then'](respondWithResult(_0x4ae14b,0xc9))['catch'](handleError(_0x4ae14b,null));};exports[_0x0a9e('0x58')]=function(_0x3aedd0,_0x49c095){if(_0x3aedd0[_0x0a9e('0x52')]['id']){delete _0x3aedd0['body']['id'];}return db[_0x0a9e('0x2e')]['find']({'where':{'id':_0x3aedd0[_0x0a9e('0x4e')]['id']}})['then'](handleEntityNotFound(_0x49c095,null))['then'](saveUpdates(_0x3aedd0['body'],null))[_0x0a9e('0x24')](respondWithResult(_0x49c095,null))['catch'](handleError(_0x49c095,null));};exports[_0x0a9e('0x25')]=function(_0x65432,_0x3cfd00){return db[_0x0a9e('0x2e')][_0x0a9e('0x50')]({'where':{'id':_0x65432[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x3cfd00,null))[_0x0a9e('0x24')](removeEntity(_0x3cfd00,null))['catch'](handleError(_0x3cfd00,null));};exports[_0x0a9e('0x59')]=function(_0x121cef,_0x2642bb){return db[_0x0a9e('0x2e')][_0x0a9e('0x59')]()[_0x0a9e('0x24')](respondWithResult(_0x2642bb,null))['catch'](handleError(_0x2642bb,null));};exports[_0x0a9e('0x5a')]=function(_0x26bc80,_0x5239ef,_0x3649cc){if(_0x26bc80['body']['id']){delete _0x26bc80[_0x0a9e('0x52')]['id'];}return db['CmList']['find']({'where':{'id':_0x26bc80['params']['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x5239ef,null))['then'](function(_0x2244d6){if(_0x2244d6){_0x26bc80[_0x0a9e('0x52')][_0x0a9e('0x5b')]=_0x2244d6['id'];return db[_0x0a9e('0x5c')][_0x0a9e('0x51')](_0x26bc80[_0x0a9e('0x52')]);}})['then'](respondWithResult(_0x5239ef,null))[_0x0a9e('0x4c')](handleError(_0x5239ef,null));};exports['getDispositions']=function(_0xca4ade,_0x1f07cb,_0x51aaf7){var _0x5adf8f={'raw':![],'where':{}};var _0x453360={};var _0x156f1c={'count':0x0,'rows':[]};return db[_0x0a9e('0x2e')][_0x0a9e('0x5d')]({'where':{'id':_0xca4ade['params']['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x1f07cb,null))[_0x0a9e('0x24')](function(_0x54327c){if(_0x54327c){_0x453360[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](db[_0x0a9e('0x5c')][_0x0a9e('0x2f')]);_0x453360[_0x0a9e('0x32')]=_['keys'](_0xca4ade[_0x0a9e('0x32')]);_0x453360[_0x0a9e('0x35')]=_[_0x0a9e('0x37')](_0x453360['model'],_0x453360[_0x0a9e('0x32')]);_0x5adf8f['attributes']=_['intersection'](_0x453360[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0xca4ade[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x5adf8f[_0x0a9e('0x36')]=_0x5adf8f[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x5adf8f[_0x0a9e('0x36')]:_0x453360[_0x0a9e('0x30')];if(!_0xca4ade[_0x0a9e('0x32')][_0x0a9e('0x39')](_0x0a9e('0x5e'))){_0x5adf8f[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0xca4ade[_0x0a9e('0x32')][_0x0a9e('0x1e')]);_0x5adf8f[_0x0a9e('0x1d')]=qs[_0x0a9e('0x1d')](_0xca4ade['query'][_0x0a9e('0x1d')]);}_0x5adf8f[_0x0a9e('0x3a')]=qs[_0x0a9e('0x3b')](_0xca4ade['query'][_0x0a9e('0x3b')]);_0x5adf8f[_0x0a9e('0x40')]=qs['filters'](_[_0x0a9e('0x3c')](_0xca4ade[_0x0a9e('0x32')],_0x453360[_0x0a9e('0x35')]));_0x5adf8f[_0x0a9e('0x40')][_0x0a9e('0x5b')]=_0x54327c['id'];if(_0xca4ade['query']['filter']){_0x5adf8f['where']=_[_0x0a9e('0x3f')](_0x5adf8f[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x5adf8f[_0x0a9e('0x36')],function(_0x6abd03){var _0x380ab3={};_0x380ab3[_0x6abd03]={'$like':'%'+_0xca4ade[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x380ab3;})});}_0x5adf8f=_['merge']({},_0x5adf8f,_0xca4ade[_0x0a9e('0x47')]);return db[_0x0a9e('0x5c')][_0x0a9e('0x1c')]({'where':_0x5adf8f['where']})[_0x0a9e('0x24')](function(_0x583b2e){_0x156f1c[_0x0a9e('0x1c')]=_0x583b2e;if(_0xca4ade[_0x0a9e('0x32')]['includeAll']){_0x5adf8f[_0x0a9e('0x49')]=[{'all':!![]}];}return db[_0x0a9e('0x5c')][_0x0a9e('0x4a')](_0x5adf8f);})[_0x0a9e('0x24')](function(_0x542ece){_0x156f1c[_0x0a9e('0x4b')]=_0x542ece;return _0x156f1c;});}})[_0x0a9e('0x24')](respondWithFilteredResult(_0x1f07cb,_0x5adf8f))[_0x0a9e('0x4c')](handleError(_0x1f07cb,null));};exports[_0x0a9e('0x5f')]=function(_0x5b7fc3,_0x109ccb,_0x3d91db){var _0x2d5506;return db[_0x0a9e('0x2e')]['find']({'where':{'id':_0x5b7fc3[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x109ccb,null))[_0x0a9e('0x24')](function(_0xf410e5){if(_0xf410e5){return _0xf410e5[_0x0a9e('0x5f')](_0x5b7fc3[_0x0a9e('0x32')][_0x0a9e('0x60')]);}})[_0x0a9e('0x24')](respondWithStatusCode(_0x109ccb,null))[_0x0a9e('0x4c')](handleError(_0x109ccb,null));};exports[_0x0a9e('0x61')]=function(_0xc4c230,_0x1f10ef,_0x25744a){return db[_0x0a9e('0x2e')]['find']({'where':{'id':_0xc4c230[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x1f10ef,null))[_0x0a9e('0x24')](function(_0x563627){if(_0x563627){var _0x3736e0=[];var _0x33dda0={'success':[],'errors':[]};return db[_0x0a9e('0x62')][_0x0a9e('0x59')]()['then'](function(_0x541e80){if(_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')]&&_['isArray'](_0xc4c230[_0x0a9e('0x52')]['tags'])){if(_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')]['length']){_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')]=_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')][_0x0a9e('0x64')](';')+';';}else{_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')]=null;}}else{_0xc4c230['body'][_0x0a9e('0x63')]=null;}if(_0xc4c230[_0x0a9e('0x52')]&&_[_0x0a9e('0x65')](_0xc4c230[_0x0a9e('0x52')])){for(var _0x492543=0x0;_0x492543<_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x4f')];_0x492543+=0x1){_0xc4c230['body'][_0x492543][_0x0a9e('0x5b')]=_0xc4c230['params']['id'];_0x3736e0[_0x0a9e('0x66')](_0xc4c230[_0x0a9e('0x52')][_0x492543]);}return BPromise[_0x0a9e('0x67')](_0x3736e0,function(_0x385d52){return db['CmContact']['create'](_[_0x0a9e('0x68')](_0x385d52,[_0x0a9e('0x60'),'id'])||{},{'fields':_[_0x0a9e('0x31')](_0x541e80),'raw':!![]})['then'](function(_0x3b4a9f){_0x33dda0[_0x0a9e('0x69')]['push'](_0x3b4a9f['dataValues']);})[_0x0a9e('0x4c')](function(_0x56acca){_0x33dda0['errors']['push']({'data':_0x385d52,'error':_0x56acca[_0x0a9e('0x6a')]});});})[_0x0a9e('0x24')](function(_0x9044fe){return _0x33dda0;})[_0x0a9e('0x4c')](function(_0x3c6dd6){return _0x3c6dd6;});}else{_0x1f10ef[_0x0a9e('0x19')](0x190)['json']({'message':_0x0a9e('0x6b')});}});}})['then'](respondWithResult(_0x1f10ef,null))[_0x0a9e('0x4c')](handleError(_0x1f10ef,null));};exports[_0x0a9e('0x6c')]=function(_0x18ad56,_0x4566b0,_0x50f8d7){var _0x46c9ac;return db[_0x0a9e('0x2e')][_0x0a9e('0x50')]({'where':{'id':_0x18ad56['params']['id']},'include':[{'model':db[_0x0a9e('0x6d')],'as':_0x0a9e('0x6e')}]})[_0x0a9e('0x24')](handleEntityNotFound(_0x4566b0,null))[_0x0a9e('0x24')](function(_0x255e49){if(_0x255e49){_0x46c9ac=_0x255e49;return db[_0x0a9e('0x62')][_0x0a9e('0x2f')];}})[_0x0a9e('0x24')](function(_0x509efe){if(_0x509efe){var _0x2645d6={};var _0x3325c5={};_0x3325c5['model']=_[_0x0a9e('0x6f')](_[_0x0a9e('0x31')](_0x509efe),_[_0x0a9e('0x42')](_0x46c9ac['CustomFields'],function(_0x96672f){return util['format'](_0x0a9e('0x70'),_0x96672f['id']);}));_0x3325c5[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x18ad56[_0x0a9e('0x32')]);_0x3325c5[_0x0a9e('0x35')]=_[_0x0a9e('0x37')](_0x3325c5[_0x0a9e('0x30')],_0x3325c5[_0x0a9e('0x32')]);_0x2645d6['attributes']=_[_0x0a9e('0x37')](_0x3325c5[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0x18ad56[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x2645d6[_0x0a9e('0x36')]=_0x2645d6[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x2645d6[_0x0a9e('0x36')]:_0x3325c5[_0x0a9e('0x30')];if(!_0x18ad56[_0x0a9e('0x32')][_0x0a9e('0x39')](_0x0a9e('0x5e'))){_0x2645d6['limit']=qs[_0x0a9e('0x1e')](_0x18ad56[_0x0a9e('0x32')][_0x0a9e('0x1e')]);_0x2645d6[_0x0a9e('0x1d')]=qs[_0x0a9e('0x1d')](_0x18ad56['query'][_0x0a9e('0x1d')]);}_0x2645d6[_0x0a9e('0x3a')]=qs['sort'](_0x18ad56[_0x0a9e('0x32')]['sort']);_0x2645d6[_0x0a9e('0x40')]=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x18ad56[_0x0a9e('0x32')],_0x3325c5['filters']));_0x2645d6[_0x0a9e('0x71')]=!![];if(_0x18ad56['query'][_0x0a9e('0x41')]){_0x2645d6[_0x0a9e('0x40')]=_['merge'](_0x2645d6[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x2645d6[_0x0a9e('0x36')],function(_0x4ab276){var _0x4c788f={};_0x4c788f[_0x4ab276]={'$like':'%'+_0x18ad56[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x4c788f;})});}_0x2645d6=_[_0x0a9e('0x3f')]({},_0x2645d6,_0x18ad56[_0x0a9e('0x47')]);return _0x46c9ac[_0x0a9e('0x6c')](_0x2645d6);}})[_0x0a9e('0x24')](respondWithResult(_0x4566b0,null))[_0x0a9e('0x4c')](handleError(_0x4566b0,null));};exports[_0x0a9e('0x72')]=function(_0x3f8124,_0x586510,_0x3156c7){var _0x517081;return db[_0x0a9e('0x2e')][_0x0a9e('0x50')]({'where':{'id':_0x3f8124[_0x0a9e('0x4e')]['id']},'include':[{'model':db[_0x0a9e('0x6d')],'as':_0x0a9e('0x6e')}]})['then'](handleEntityNotFound(_0x586510,null))[_0x0a9e('0x24')](function(_0x4667bf){if(_0x4667bf){_0x517081=_0x4667bf;return db[_0x0a9e('0x62')][_0x0a9e('0x2f')];}})[_0x0a9e('0x24')](function(_0x5c66ef){if(_0x5c66ef){var _0x4f074c={};var _0x22a3cb={};_0x22a3cb['model']=_[_0x0a9e('0x6f')](_[_0x0a9e('0x31')](_0x5c66ef),_[_0x0a9e('0x42')](_0x517081[_0x0a9e('0x6e')],function(_0x2ad54b){return util[_0x0a9e('0x73')]('cf_%d',_0x2ad54b['id']);}));_0x22a3cb['query']=_[_0x0a9e('0x31')](_0x3f8124['query']);_0x22a3cb[_0x0a9e('0x35')]=_['intersection'](_0x22a3cb[_0x0a9e('0x30')],_0x22a3cb['query']);_0x4f074c['attributes']=_[_0x0a9e('0x37')](_0x22a3cb[_0x0a9e('0x30')],qs['fields'](_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x4f074c[_0x0a9e('0x36')]=_0x4f074c[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x4f074c['attributes']:_0x22a3cb['model'];if(!_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x39')](_0x0a9e('0x5e'))){_0x4f074c[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0x3f8124['query'][_0x0a9e('0x1e')]);_0x4f074c[_0x0a9e('0x1d')]=qs['offset'](_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x1d')]);}_0x4f074c[_0x0a9e('0x3a')]=qs[_0x0a9e('0x3b')](_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x3b')]);_0x4f074c[_0x0a9e('0x40')]=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x3f8124[_0x0a9e('0x32')],_0x22a3cb['filters']));_0x4f074c[_0x0a9e('0x71')]=!![];if(_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x41')]){_0x4f074c[_0x0a9e('0x40')]=_[_0x0a9e('0x3f')](_0x4f074c['where'],{'$or':_['map'](_0x4f074c[_0x0a9e('0x36')],function(_0x16ae1a){var _0x466bbf={};_0x466bbf[_0x16ae1a]={'$like':'%'+_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x466bbf;})});}_0x4f074c=_['merge']({},_0x4f074c,_0x3f8124[_0x0a9e('0x47')]);return _0x517081[_0x0a9e('0x6c')](_0x4f074c);}})[_0x0a9e('0x24')](function(_0x52b661){if(!_[_0x0a9e('0x74')](_0x52b661)){var _0x59aa7b=toCsv(_0x52b661);var _0x2144ca=Date['now']();fs[_0x0a9e('0x75')](util[_0x0a9e('0x73')](_0x0a9e('0x76'),_0x517081['id'],_0x2144ca),_0x59aa7b);_0x586510['setHeader'](_0x0a9e('0x77'),'attachment;\x20filename='+util[_0x0a9e('0x73')](_0x0a9e('0x78'),_0x517081['id'],_0x2144ca));_0x586510[_0x0a9e('0x79')](_0x0a9e('0x7a'),_0x0a9e('0x7b'));return _0x586510[_0x0a9e('0x7c')](util[_0x0a9e('0x73')](_0x0a9e('0x76'),_0x517081['id'],_0x2144ca));}else{return _0x586510[_0x0a9e('0x18')](0xcc);}})[_0x0a9e('0x4c')](handleError(_0x586510,null));};exports[_0x0a9e('0x7d')]=function(_0xc876d4,_0x2415fe,_0x399def){var _0x98c62c;delete _0xc876d4[_0x0a9e('0x52')]['id'];return db['CmList']['findOne']({'where':{'id':_0xc876d4[_0x0a9e('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2415fe,null))[_0x0a9e('0x24')](function(_0x3428c9){if(_0x3428c9){return db['sequelize'][_0x0a9e('0x7e')](function(_0xe2b083){return db[_0x0a9e('0x6d')][_0x0a9e('0x51')](_0xc876d4['body'],{'transaction':_0xe2b083})[_0x0a9e('0x24')](function(_0x26cb76){_0x98c62c=_0x26cb76;return _0x3428c9[_0x0a9e('0x7f')](_0x26cb76,{'transaction':_0xe2b083});})[_0x0a9e('0x24')](function(){var _0x5d0e1f={'type':db[_0x0a9e('0x80')][_0x0a9e('0x81')],'transaction':_0xe2b083};switch(_0xc876d4[_0x0a9e('0x52')]['type']){case _0x0a9e('0x82'):_0x5d0e1f[_0x0a9e('0x43')]=db[_0x0a9e('0x80')]['TEXT'];break;case _0x0a9e('0x83'):_0x5d0e1f[_0x0a9e('0x43')]=db[_0x0a9e('0x80')][_0x0a9e('0x84')];break;case _0x0a9e('0x85'):_0x5d0e1f['type']=db[_0x0a9e('0x80')][_0x0a9e('0x86')];_0x5d0e1f['defaultValue']=![];break;default:}return db[_0x0a9e('0x87')][_0x0a9e('0x88')][_0x0a9e('0x89')]('cm_contacts',util['format']('cf_%s',_0x98c62c['id']),_0x5d0e1f);})[_0x0a9e('0x24')](function(){return _0x98c62c;});});}})[_0x0a9e('0x24')](respondWithResult(_0x2415fe,null))['catch'](handleError(_0x2415fe,null));};exports[_0x0a9e('0x8a')]=function(_0x1f78b4,_0x2a8d55,_0x54ce11){var _0x9fc93e={};var _0x30e037={};var _0x213d4e;var _0x30b3b8;return db[_0x0a9e('0x2e')][_0x0a9e('0x5d')]({'where':{'id':_0x1f78b4[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x2a8d55,null))[_0x0a9e('0x24')](function(_0x5a1848){if(_0x5a1848){_0x213d4e=_0x5a1848;_0x30e037[_0x0a9e('0x30')]=_['keys'](db[_0x0a9e('0x6d')][_0x0a9e('0x2f')]);_0x30e037[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x1f78b4[_0x0a9e('0x32')]);_0x30e037[_0x0a9e('0x35')]=_['intersection'](_0x30e037[_0x0a9e('0x30')],_0x30e037[_0x0a9e('0x32')]);_0x9fc93e[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x30e037['model'],qs[_0x0a9e('0x38')](_0x1f78b4[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x9fc93e[_0x0a9e('0x36')]=_0x9fc93e[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x9fc93e[_0x0a9e('0x36')]:_0x30e037[_0x0a9e('0x30')];_0x9fc93e[_0x0a9e('0x3a')]=qs[_0x0a9e('0x3b')](_0x1f78b4['query'][_0x0a9e('0x3b')]);_0x9fc93e[_0x0a9e('0x40')]=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x1f78b4[_0x0a9e('0x32')],_0x30e037[_0x0a9e('0x35')]));_0x9fc93e[_0x0a9e('0x40')]=_[_0x0a9e('0x3f')](_0x9fc93e['where'],{'$or':[{'ListId':_0x5a1848['id']},{'ListId':null}]});if(_0x1f78b4[_0x0a9e('0x32')][_0x0a9e('0x41')]){_0x9fc93e[_0x0a9e('0x40')]=_['merge'](_0x9fc93e[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x9fc93e[_0x0a9e('0x36')],function(_0x97d5b5){var _0x370b5e={};_0x370b5e[_0x97d5b5]={'$like':'%'+_0x1f78b4[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x370b5e;})});}_0x9fc93e=_[_0x0a9e('0x3f')]({},_0x9fc93e,_0x1f78b4[_0x0a9e('0x47')]);return db[_0x0a9e('0x6d')]['findAndCountAll'](_0x9fc93e);}})[_0x0a9e('0x24')](respondWithResult(_0x2a8d55,null))[_0x0a9e('0x4c')](handleError(_0x2a8d55,null));};exports[_0x0a9e('0x8b')]=function(_0x3db98f,_0x2b624e,_0x3942fd){return db['CmList'][_0x0a9e('0x50')]({'where':{'id':_0x3db98f['params']['id']}})['then'](handleEntityNotFound(_0x2b624e,null))['then'](function(_0x19e4e6){if(_0x19e4e6){return _0x19e4e6[_0x0a9e('0x8b')](_0x3db98f[_0x0a9e('0x52')][_0x0a9e('0x60')],_['omit'](_0x3db98f[_0x0a9e('0x52')],[_0x0a9e('0x60'),'id'])||{})[_0x0a9e('0x8c')](function(_0x1fdb10){for(var _0x2c8d1d=0x0;_0x2c8d1d<_0x3db98f['body']['ids'][_0x0a9e('0x4f')];_0x2c8d1d+=0x1){socket[_0x0a9e('0x8d')](_0x0a9e('0x8e'),{'UserId':_0x3db98f['body'][_0x0a9e('0x60')][_0x2c8d1d],'CmListId':_0x3db98f[_0x0a9e('0x4e')]['id']});}return _0x1fdb10;});}})[_0x0a9e('0x24')](respondWithResult(_0x2b624e,null))['catch'](handleError(_0x2b624e,null));};exports[_0x0a9e('0x8f')]=function(_0x2bf85d,_0x15ba6b,_0x4eda8f){var _0x272291;return db[_0x0a9e('0x2e')][_0x0a9e('0x50')]({'where':{'id':_0x2bf85d['params']['id']}})['then'](handleEntityNotFound(_0x15ba6b,null))['then'](function(_0x3b04fd){if(_0x3b04fd){return _0x3b04fd[_0x0a9e('0x8f')](_0x2bf85d[_0x0a9e('0x32')][_0x0a9e('0x60')])['then'](function(_0x33f22a){if(_['isArray'](_0x2bf85d[_0x0a9e('0x32')][_0x0a9e('0x60')])){for(var _0x242f23=0x0;_0x242f23<_0x2bf85d['query'][_0x0a9e('0x60')][_0x0a9e('0x4f')];_0x242f23+=0x1){socket[_0x0a9e('0x8d')]('userCmList:remove',{'UserId':_0x2bf85d[_0x0a9e('0x32')]['ids'][_0x242f23],'CmListId':_0x2bf85d[_0x0a9e('0x4e')]['id']});}}else{socket['emit'](_0x0a9e('0x90'),{'UserId':_0x2bf85d['query'][_0x0a9e('0x60')],'CmListId':_0x2bf85d[_0x0a9e('0x4e')]['id']});}});}})[_0x0a9e('0x24')](respondWithStatusCode(_0x15ba6b,null))[_0x0a9e('0x4c')](handleError(_0x15ba6b,null));};exports[_0x0a9e('0x91')]=function(_0x251dd9,_0x1784c1,_0x5acdc9){var _0x35ace3={};var _0x1c9ea2={};var _0x567004;var _0xf4fb77;return db[_0x0a9e('0x2e')]['findOne']({'where':{'id':_0x251dd9[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x1784c1,null))[_0x0a9e('0x24')](function(_0x569528){if(_0x569528){_0x567004=_0x569528;_0x1c9ea2[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](db[_0x0a9e('0x92')][_0x0a9e('0x2f')]);_0x1c9ea2[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x251dd9[_0x0a9e('0x32')]);_0x1c9ea2[_0x0a9e('0x35')]=_[_0x0a9e('0x37')](_0x1c9ea2[_0x0a9e('0x30')],_0x1c9ea2['query']);_0x35ace3[_0x0a9e('0x36')]=_['intersection'](_0x1c9ea2[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0x251dd9[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x35ace3[_0x0a9e('0x36')]=_0x35ace3[_0x0a9e('0x36')]['length']?_0x35ace3[_0x0a9e('0x36')]:_0x1c9ea2[_0x0a9e('0x30')];_0x35ace3[_0x0a9e('0x3a')]=qs['sort'](_0x251dd9[_0x0a9e('0x32')][_0x0a9e('0x3b')]);_0x35ace3[_0x0a9e('0x40')]=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x251dd9[_0x0a9e('0x32')],_0x1c9ea2[_0x0a9e('0x35')]));if(_0x251dd9['query'][_0x0a9e('0x41')]){_0x35ace3[_0x0a9e('0x40')]=_[_0x0a9e('0x3f')](_0x35ace3[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x35ace3[_0x0a9e('0x36')],function(_0x8120e){var _0x5d6a48={};_0x5d6a48[_0x8120e]={'$like':'%'+_0x251dd9['query'][_0x0a9e('0x41')]+'%'};return _0x5d6a48;})});}_0x35ace3=_[_0x0a9e('0x3f')]({},_0x35ace3,_0x251dd9[_0x0a9e('0x47')]);return _0x567004[_0x0a9e('0x91')](_0x35ace3);}})[_0x0a9e('0x24')](function(_0x131da8){if(_0x131da8){_0xf4fb77=_0x131da8[_0x0a9e('0x4f')];if(!_0x251dd9['query'][_0x0a9e('0x39')](_0x0a9e('0x5e'))){_0x35ace3[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0x251dd9[_0x0a9e('0x32')][_0x0a9e('0x1e')]);_0x35ace3[_0x0a9e('0x1d')]=qs['offset'](_0x251dd9[_0x0a9e('0x32')][_0x0a9e('0x1d')]);}return _0x567004[_0x0a9e('0x91')](_0x35ace3);}})['then'](function(_0x2b8ad4){if(_0x2b8ad4){return _0x2b8ad4?{'count':_0xf4fb77,'rows':_0x2b8ad4}:null;}})[_0x0a9e('0x24')](respondWithResult(_0x1784c1,null))[_0x0a9e('0x4c')](handleError(_0x1784c1,null));};
\ No newline at end of file
+var _0xa9e0=['request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','redis','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','index','CmList','rawAttributes','model','keys','query','dateStart','dateEnd','filters','attributes','intersection','fields','hasOwnProperty','order','sort','pick','day','add','merge','where','filter','map','type','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ListId','Disposition','findOne','nolimit','removeDispositions','ids','addContacts','CmContact','tags','join','isArray','push','each','omit','success','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','cf_%d','raw','getContactsCsv','format','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','list_%d_%s.csv','setHeader','Content-type','text/csv','download','addCustomField','transaction','addCustomFields','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','sequelize','queryInterface','addColumn','getCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','html-pdf','eml-format','rimraf'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'use strict';var pdf=require(_0x0a9e('0x0'));var emlformat=require(_0x0a9e('0x1'));var rimraf=require(_0x0a9e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a9e('0x3'));var moment=require('moment');var BPromise=require(_0x0a9e('0x4'));var Mustache=require(_0x0a9e('0x5'));var util=require(_0x0a9e('0x6'));var path=require(_0x0a9e('0x7'));var sox=require(_0x0a9e('0x8'));var csv=require('to-csv');var ejs=require(_0x0a9e('0x9'));var fs=require('fs');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 qs=require(_0x0a9e('0xf'));var logger=require(_0x0a9e('0x10'))(_0x0a9e('0x11'));var utils=require(_0x0a9e('0x12'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x0a9e('0x13')],{'host':_0x0a9e('0x14'),'port':0x18eb});var socket=require(_0x0a9e('0x15'))(new Redis(config[_0x0a9e('0x13')]));require(_0x0a9e('0x16'))[_0x0a9e('0x17')](socket);function respondWithStatusCode(_0x5db4b0,_0x4283ce){_0x4283ce=_0x4283ce||0xcc;return function(_0x239b12){if(_0x239b12){return _0x5db4b0[_0x0a9e('0x18')](_0x4283ce);}return _0x5db4b0[_0x0a9e('0x19')](_0x4283ce)[_0x0a9e('0x1a')]();};}function respondWithResult(_0x4d5611,_0x52a03d){_0x52a03d=_0x52a03d||0xc8;return function(_0x22dccb){if(_0x22dccb){return _0x4d5611['status'](_0x52a03d)[_0x0a9e('0x1b')](_0x22dccb);}};}function respondWithFilteredResult(_0x519dfd,_0x16033c){return function(_0x12066b){if(_0x12066b){var _0x48f32d=_0x12066b[_0x0a9e('0x1c')],_0x225616=_0x16033c[_0x0a9e('0x1d')],_0x5a0a06=_0x16033c[_0x0a9e('0x1d')]+_0x16033c[_0x0a9e('0x1e')],_0x459eb1;if(_0x5a0a06>=_0x48f32d){_0x5a0a06=_0x48f32d;_0x459eb1=0xc8;}else{_0x459eb1=0xce;}_0x519dfd[_0x0a9e('0x19')](_0x459eb1);return _0x519dfd[_0x0a9e('0x1f')](_0x0a9e('0x20'),_0x225616+'-'+_0x5a0a06+'/'+_0x48f32d)[_0x0a9e('0x1b')](_0x12066b);}return null;};}function patchUpdates(_0x112016){return function(_0x1c696a){try{jsonpatch[_0x0a9e('0x21')](_0x1c696a,_0x112016,!![]);}catch(_0x4bb1e3){return BPromise[_0x0a9e('0x22')](_0x4bb1e3);}return _0x1c696a[_0x0a9e('0x23')]();};}function saveUpdates(_0x53682f,_0x20f109){return function(_0x5a09ef){if(_0x5a09ef){return _0x5a09ef['update'](_0x53682f)[_0x0a9e('0x24')](function(_0x432e56){return _0x432e56;});}return null;};}function removeEntity(_0x38e7c4,_0x30bae6){return function(_0x4abc77){if(_0x4abc77){return _0x4abc77[_0x0a9e('0x25')]()[_0x0a9e('0x24')](function(){var _0x3b45bc=_0x4abc77[_0x0a9e('0x26')]({'plain':!![]});var _0x370d86=_0x0a9e('0x27');return db[_0x0a9e('0x28')]['destroy']({'where':{'type':_0x370d86,'resourceId':_0x3b45bc['id']}})['then'](function(){return _0x4abc77;});})[_0x0a9e('0x24')](function(){_0x38e7c4[_0x0a9e('0x19')](0xcc)[_0x0a9e('0x1a')]();});}};}function handleEntityNotFound(_0x33161b,_0x526cf3){return function(_0x384319){if(!_0x384319){_0x33161b['sendStatus'](0x194);}return _0x384319;};}function handleError(_0x45a1e7,_0x5bfb33){_0x5bfb33=_0x5bfb33||0x1f4;return function(_0x1dc186){logger[_0x0a9e('0x29')](_0x1dc186[_0x0a9e('0x2a')]);if(_0x1dc186[_0x0a9e('0x2b')]){delete _0x1dc186[_0x0a9e('0x2b')];}_0x45a1e7[_0x0a9e('0x19')](_0x5bfb33)[_0x0a9e('0x2c')](_0x1dc186);};}exports[_0x0a9e('0x2d')]=function(_0x5a101a,_0x3652a7){var _0x468813={},_0x2b1f27={},_0x2ec755={'count':0x0,'rows':[]};var _0x5c877d=db[_0x0a9e('0x2e')][_0x0a9e('0x2f')];_0x2b1f27[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x5c877d);var _0x58b06f={'dateStart':_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x33')],'dateEnd':_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x34')]};delete _0x5a101a['query'][_0x0a9e('0x33')];delete _0x5a101a['query'][_0x0a9e('0x34')];_0x2b1f27[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x5a101a[_0x0a9e('0x32')]);_0x2b1f27[_0x0a9e('0x35')]=_['intersection'](_0x2b1f27[_0x0a9e('0x30')],_0x2b1f27[_0x0a9e('0x32')]);_0x468813[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x2b1f27[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x468813['attributes']=_0x468813[_0x0a9e('0x36')]['length']?_0x468813[_0x0a9e('0x36')]:_0x2b1f27[_0x0a9e('0x30')];if(!_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x39')]('nolimit')){_0x468813[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x1e')]);_0x468813['offset']=qs['offset'](_0x5a101a[_0x0a9e('0x32')]['offset']);}_0x468813[_0x0a9e('0x3a')]=qs[_0x0a9e('0x3b')](_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x3b')]);_0x468813['where']=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x5a101a[_0x0a9e('0x32')],_0x2b1f27['filters']));if(_0x58b06f[_0x0a9e('0x33')]){if(_0x58b06f[_0x0a9e('0x34')]){_0x58b06f[_0x0a9e('0x34')]=moment(_0x58b06f['dateEnd'])['add'](0x1,_0x0a9e('0x3d'));}else{_0x58b06f[_0x0a9e('0x34')]=moment(_0x58b06f['dateStart'])[_0x0a9e('0x3e')](0x1,_0x0a9e('0x3d'));}_[_0x0a9e('0x3f')](_0x468813[_0x0a9e('0x40')],{'createdAt':{'$gte':_0x58b06f['dateStart'],'$lte':_0x58b06f['dateEnd']}});}if(_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x41')]){_0x468813['where']=_[_0x0a9e('0x3f')](_0x468813[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x5c877d,function(_0x5b4f5e){if(_0x5b4f5e[_0x0a9e('0x43')][_0x0a9e('0x44')]!==_0x0a9e('0x45')){var _0x43dd5b={};_0x43dd5b[_0x5b4f5e[_0x0a9e('0x46')]]={'$like':'%'+_0x5a101a[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x43dd5b;}})});}_0x468813=_[_0x0a9e('0x3f')]({},_0x468813,_0x5a101a[_0x0a9e('0x47')]);var _0x3da2cd={'where':_0x468813[_0x0a9e('0x40')]};return db[_0x0a9e('0x2e')][_0x0a9e('0x1c')](_0x3da2cd)[_0x0a9e('0x24')](function(_0x37f6cc){_0x2ec755['count']=_0x37f6cc;if(_0x5a101a['query'][_0x0a9e('0x48')]){_0x468813[_0x0a9e('0x49')]=[{'all':!![]}];}return db[_0x0a9e('0x2e')][_0x0a9e('0x4a')](_0x468813);})[_0x0a9e('0x24')](function(_0xc9a702){_0x2ec755[_0x0a9e('0x4b')]=_0xc9a702;return _0x2ec755;})[_0x0a9e('0x24')](respondWithFilteredResult(_0x3652a7,_0x468813))[_0x0a9e('0x4c')](handleError(_0x3652a7,null));};exports[_0x0a9e('0x4d')]=function(_0x2c2cb0,_0x35ed4a){var _0x5026aa={'raw':![],'where':{'id':_0x2c2cb0[_0x0a9e('0x4e')]['id']}},_0x117c99={};_0x117c99[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](db[_0x0a9e('0x2e')][_0x0a9e('0x2f')]);_0x117c99[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x2c2cb0['query']);_0x117c99[_0x0a9e('0x35')]=_['intersection'](_0x117c99[_0x0a9e('0x30')],_0x117c99[_0x0a9e('0x32')]);_0x5026aa[_0x0a9e('0x36')]=_['intersection'](_0x117c99[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0x2c2cb0[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x5026aa[_0x0a9e('0x36')]=_0x5026aa[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x5026aa['attributes']:_0x117c99[_0x0a9e('0x30')];if(_0x2c2cb0[_0x0a9e('0x32')][_0x0a9e('0x48')]){_0x5026aa[_0x0a9e('0x49')]=[{'all':!![]}];}_0x5026aa=_[_0x0a9e('0x3f')]({},_0x5026aa,_0x2c2cb0[_0x0a9e('0x47')]);return db[_0x0a9e('0x2e')][_0x0a9e('0x50')](_0x5026aa)[_0x0a9e('0x24')](handleEntityNotFound(_0x35ed4a,null))['then'](respondWithResult(_0x35ed4a,null))[_0x0a9e('0x4c')](handleError(_0x35ed4a,null));};exports[_0x0a9e('0x51')]=function(_0x4f7240,_0x4ae14b){return db['CmList'][_0x0a9e('0x51')](_0x4f7240[_0x0a9e('0x52')],{})[_0x0a9e('0x24')](function(_0x11545a){var _0x61bb17=_0x4f7240[_0x0a9e('0x53')][_0x0a9e('0x26')]({'plain':!![]});if(!_0x61bb17)throw new Error(_0x0a9e('0x54'));if(_0x61bb17['role']==='user'){var _0x53975a=_0x11545a[_0x0a9e('0x26')]({'plain':!![]});var _0x204173=_0x0a9e('0x27');return db['UserProfileSection'][_0x0a9e('0x50')]({'where':{'name':_0x204173,'userProfileId':_0x61bb17[_0x0a9e('0x55')]},'raw':!![]})['then'](function(_0x5a88da){if(_0x5a88da&&_0x5a88da[_0x0a9e('0x56')]===0x0){return db['UserProfileResource'][_0x0a9e('0x51')]({'name':_0x53975a['name'],'resourceId':_0x53975a['id'],'type':_0x5a88da[_0x0a9e('0x2b')],'sectionId':_0x5a88da['id']},{})[_0x0a9e('0x24')](function(){return _0x11545a;});}else{return _0x11545a;}})[_0x0a9e('0x4c')](function(_0x53613a){logger[_0x0a9e('0x29')](_0x0a9e('0x57'),_0x53613a);throw _0x53613a;});}return _0x11545a;})['then'](respondWithResult(_0x4ae14b,0xc9))['catch'](handleError(_0x4ae14b,null));};exports[_0x0a9e('0x58')]=function(_0x3aedd0,_0x49c095){if(_0x3aedd0[_0x0a9e('0x52')]['id']){delete _0x3aedd0['body']['id'];}return db[_0x0a9e('0x2e')]['find']({'where':{'id':_0x3aedd0[_0x0a9e('0x4e')]['id']}})['then'](handleEntityNotFound(_0x49c095,null))['then'](saveUpdates(_0x3aedd0['body'],null))[_0x0a9e('0x24')](respondWithResult(_0x49c095,null))['catch'](handleError(_0x49c095,null));};exports[_0x0a9e('0x25')]=function(_0x65432,_0x3cfd00){return db[_0x0a9e('0x2e')][_0x0a9e('0x50')]({'where':{'id':_0x65432[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x3cfd00,null))[_0x0a9e('0x24')](removeEntity(_0x3cfd00,null))['catch'](handleError(_0x3cfd00,null));};exports[_0x0a9e('0x59')]=function(_0x121cef,_0x2642bb){return db[_0x0a9e('0x2e')][_0x0a9e('0x59')]()[_0x0a9e('0x24')](respondWithResult(_0x2642bb,null))['catch'](handleError(_0x2642bb,null));};exports[_0x0a9e('0x5a')]=function(_0x26bc80,_0x5239ef,_0x3649cc){if(_0x26bc80['body']['id']){delete _0x26bc80[_0x0a9e('0x52')]['id'];}return db['CmList']['find']({'where':{'id':_0x26bc80['params']['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x5239ef,null))['then'](function(_0x2244d6){if(_0x2244d6){_0x26bc80[_0x0a9e('0x52')][_0x0a9e('0x5b')]=_0x2244d6['id'];return db[_0x0a9e('0x5c')][_0x0a9e('0x51')](_0x26bc80[_0x0a9e('0x52')]);}})['then'](respondWithResult(_0x5239ef,null))[_0x0a9e('0x4c')](handleError(_0x5239ef,null));};exports['getDispositions']=function(_0xca4ade,_0x1f07cb,_0x51aaf7){var _0x5adf8f={'raw':![],'where':{}};var _0x453360={};var _0x156f1c={'count':0x0,'rows':[]};return db[_0x0a9e('0x2e')][_0x0a9e('0x5d')]({'where':{'id':_0xca4ade['params']['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x1f07cb,null))[_0x0a9e('0x24')](function(_0x54327c){if(_0x54327c){_0x453360[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](db[_0x0a9e('0x5c')][_0x0a9e('0x2f')]);_0x453360[_0x0a9e('0x32')]=_['keys'](_0xca4ade[_0x0a9e('0x32')]);_0x453360[_0x0a9e('0x35')]=_[_0x0a9e('0x37')](_0x453360['model'],_0x453360[_0x0a9e('0x32')]);_0x5adf8f['attributes']=_['intersection'](_0x453360[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0xca4ade[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x5adf8f[_0x0a9e('0x36')]=_0x5adf8f[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x5adf8f[_0x0a9e('0x36')]:_0x453360[_0x0a9e('0x30')];if(!_0xca4ade[_0x0a9e('0x32')][_0x0a9e('0x39')](_0x0a9e('0x5e'))){_0x5adf8f[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0xca4ade[_0x0a9e('0x32')][_0x0a9e('0x1e')]);_0x5adf8f[_0x0a9e('0x1d')]=qs[_0x0a9e('0x1d')](_0xca4ade['query'][_0x0a9e('0x1d')]);}_0x5adf8f[_0x0a9e('0x3a')]=qs[_0x0a9e('0x3b')](_0xca4ade['query'][_0x0a9e('0x3b')]);_0x5adf8f[_0x0a9e('0x40')]=qs['filters'](_[_0x0a9e('0x3c')](_0xca4ade[_0x0a9e('0x32')],_0x453360[_0x0a9e('0x35')]));_0x5adf8f[_0x0a9e('0x40')][_0x0a9e('0x5b')]=_0x54327c['id'];if(_0xca4ade['query']['filter']){_0x5adf8f['where']=_[_0x0a9e('0x3f')](_0x5adf8f[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x5adf8f[_0x0a9e('0x36')],function(_0x6abd03){var _0x380ab3={};_0x380ab3[_0x6abd03]={'$like':'%'+_0xca4ade[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x380ab3;})});}_0x5adf8f=_['merge']({},_0x5adf8f,_0xca4ade[_0x0a9e('0x47')]);return db[_0x0a9e('0x5c')][_0x0a9e('0x1c')]({'where':_0x5adf8f['where']})[_0x0a9e('0x24')](function(_0x583b2e){_0x156f1c[_0x0a9e('0x1c')]=_0x583b2e;if(_0xca4ade[_0x0a9e('0x32')]['includeAll']){_0x5adf8f[_0x0a9e('0x49')]=[{'all':!![]}];}return db[_0x0a9e('0x5c')][_0x0a9e('0x4a')](_0x5adf8f);})[_0x0a9e('0x24')](function(_0x542ece){_0x156f1c[_0x0a9e('0x4b')]=_0x542ece;return _0x156f1c;});}})[_0x0a9e('0x24')](respondWithFilteredResult(_0x1f07cb,_0x5adf8f))[_0x0a9e('0x4c')](handleError(_0x1f07cb,null));};exports[_0x0a9e('0x5f')]=function(_0x5b7fc3,_0x109ccb,_0x3d91db){var _0x2d5506;return db[_0x0a9e('0x2e')]['find']({'where':{'id':_0x5b7fc3[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x109ccb,null))[_0x0a9e('0x24')](function(_0xf410e5){if(_0xf410e5){return _0xf410e5[_0x0a9e('0x5f')](_0x5b7fc3[_0x0a9e('0x32')][_0x0a9e('0x60')]);}})[_0x0a9e('0x24')](respondWithStatusCode(_0x109ccb,null))[_0x0a9e('0x4c')](handleError(_0x109ccb,null));};exports[_0x0a9e('0x61')]=function(_0xc4c230,_0x1f10ef,_0x25744a){return db[_0x0a9e('0x2e')]['find']({'where':{'id':_0xc4c230[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x1f10ef,null))[_0x0a9e('0x24')](function(_0x563627){if(_0x563627){var _0x3736e0=[];var _0x33dda0={'success':[],'errors':[]};return db[_0x0a9e('0x62')][_0x0a9e('0x59')]()['then'](function(_0x541e80){if(_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')]&&_['isArray'](_0xc4c230[_0x0a9e('0x52')]['tags'])){if(_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')]['length']){_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')]=_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')][_0x0a9e('0x64')](';')+';';}else{_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x63')]=null;}}else{_0xc4c230['body'][_0x0a9e('0x63')]=null;}if(_0xc4c230[_0x0a9e('0x52')]&&_[_0x0a9e('0x65')](_0xc4c230[_0x0a9e('0x52')])){for(var _0x492543=0x0;_0x492543<_0xc4c230[_0x0a9e('0x52')][_0x0a9e('0x4f')];_0x492543+=0x1){_0xc4c230['body'][_0x492543][_0x0a9e('0x5b')]=_0xc4c230['params']['id'];_0x3736e0[_0x0a9e('0x66')](_0xc4c230[_0x0a9e('0x52')][_0x492543]);}return BPromise[_0x0a9e('0x67')](_0x3736e0,function(_0x385d52){return db['CmContact']['create'](_[_0x0a9e('0x68')](_0x385d52,[_0x0a9e('0x60'),'id'])||{},{'fields':_[_0x0a9e('0x31')](_0x541e80),'raw':!![]})['then'](function(_0x3b4a9f){_0x33dda0[_0x0a9e('0x69')]['push'](_0x3b4a9f['dataValues']);})[_0x0a9e('0x4c')](function(_0x56acca){_0x33dda0['errors']['push']({'data':_0x385d52,'error':_0x56acca[_0x0a9e('0x6a')]});});})[_0x0a9e('0x24')](function(_0x9044fe){return _0x33dda0;})[_0x0a9e('0x4c')](function(_0x3c6dd6){return _0x3c6dd6;});}else{_0x1f10ef[_0x0a9e('0x19')](0x190)['json']({'message':_0x0a9e('0x6b')});}});}})['then'](respondWithResult(_0x1f10ef,null))[_0x0a9e('0x4c')](handleError(_0x1f10ef,null));};exports[_0x0a9e('0x6c')]=function(_0x18ad56,_0x4566b0,_0x50f8d7){var _0x46c9ac;return db[_0x0a9e('0x2e')][_0x0a9e('0x50')]({'where':{'id':_0x18ad56['params']['id']},'include':[{'model':db[_0x0a9e('0x6d')],'as':_0x0a9e('0x6e')}]})[_0x0a9e('0x24')](handleEntityNotFound(_0x4566b0,null))[_0x0a9e('0x24')](function(_0x255e49){if(_0x255e49){_0x46c9ac=_0x255e49;return db[_0x0a9e('0x62')][_0x0a9e('0x2f')];}})[_0x0a9e('0x24')](function(_0x509efe){if(_0x509efe){var _0x2645d6={};var _0x3325c5={};_0x3325c5['model']=_[_0x0a9e('0x6f')](_[_0x0a9e('0x31')](_0x509efe),_[_0x0a9e('0x42')](_0x46c9ac['CustomFields'],function(_0x96672f){return util['format'](_0x0a9e('0x70'),_0x96672f['id']);}));_0x3325c5[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x18ad56[_0x0a9e('0x32')]);_0x3325c5[_0x0a9e('0x35')]=_[_0x0a9e('0x37')](_0x3325c5[_0x0a9e('0x30')],_0x3325c5[_0x0a9e('0x32')]);_0x2645d6['attributes']=_[_0x0a9e('0x37')](_0x3325c5[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0x18ad56[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x2645d6[_0x0a9e('0x36')]=_0x2645d6[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x2645d6[_0x0a9e('0x36')]:_0x3325c5[_0x0a9e('0x30')];if(!_0x18ad56[_0x0a9e('0x32')][_0x0a9e('0x39')](_0x0a9e('0x5e'))){_0x2645d6['limit']=qs[_0x0a9e('0x1e')](_0x18ad56[_0x0a9e('0x32')][_0x0a9e('0x1e')]);_0x2645d6[_0x0a9e('0x1d')]=qs[_0x0a9e('0x1d')](_0x18ad56['query'][_0x0a9e('0x1d')]);}_0x2645d6[_0x0a9e('0x3a')]=qs['sort'](_0x18ad56[_0x0a9e('0x32')]['sort']);_0x2645d6[_0x0a9e('0x40')]=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x18ad56[_0x0a9e('0x32')],_0x3325c5['filters']));_0x2645d6[_0x0a9e('0x71')]=!![];if(_0x18ad56['query'][_0x0a9e('0x41')]){_0x2645d6[_0x0a9e('0x40')]=_['merge'](_0x2645d6[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x2645d6[_0x0a9e('0x36')],function(_0x4ab276){var _0x4c788f={};_0x4c788f[_0x4ab276]={'$like':'%'+_0x18ad56[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x4c788f;})});}_0x2645d6=_[_0x0a9e('0x3f')]({},_0x2645d6,_0x18ad56[_0x0a9e('0x47')]);return _0x46c9ac[_0x0a9e('0x6c')](_0x2645d6);}})[_0x0a9e('0x24')](respondWithResult(_0x4566b0,null))[_0x0a9e('0x4c')](handleError(_0x4566b0,null));};exports[_0x0a9e('0x72')]=function(_0x3f8124,_0x586510,_0x3156c7){var _0x517081;return db[_0x0a9e('0x2e')][_0x0a9e('0x50')]({'where':{'id':_0x3f8124[_0x0a9e('0x4e')]['id']},'include':[{'model':db[_0x0a9e('0x6d')],'as':_0x0a9e('0x6e')}]})['then'](handleEntityNotFound(_0x586510,null))[_0x0a9e('0x24')](function(_0x4667bf){if(_0x4667bf){_0x517081=_0x4667bf;return db[_0x0a9e('0x62')][_0x0a9e('0x2f')];}})[_0x0a9e('0x24')](function(_0x5c66ef){if(_0x5c66ef){var _0x4f074c={};var _0x22a3cb={};_0x22a3cb['model']=_[_0x0a9e('0x6f')](_[_0x0a9e('0x31')](_0x5c66ef),_[_0x0a9e('0x42')](_0x517081[_0x0a9e('0x6e')],function(_0x2ad54b){return util[_0x0a9e('0x73')]('cf_%d',_0x2ad54b['id']);}));_0x22a3cb['query']=_[_0x0a9e('0x31')](_0x3f8124['query']);_0x22a3cb[_0x0a9e('0x35')]=_['intersection'](_0x22a3cb[_0x0a9e('0x30')],_0x22a3cb['query']);_0x4f074c['attributes']=_[_0x0a9e('0x37')](_0x22a3cb[_0x0a9e('0x30')],qs['fields'](_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x4f074c[_0x0a9e('0x36')]=_0x4f074c[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x4f074c['attributes']:_0x22a3cb['model'];if(!_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x39')](_0x0a9e('0x5e'))){_0x4f074c[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0x3f8124['query'][_0x0a9e('0x1e')]);_0x4f074c[_0x0a9e('0x1d')]=qs['offset'](_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x1d')]);}_0x4f074c[_0x0a9e('0x3a')]=qs[_0x0a9e('0x3b')](_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x3b')]);_0x4f074c[_0x0a9e('0x40')]=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x3f8124[_0x0a9e('0x32')],_0x22a3cb['filters']));_0x4f074c[_0x0a9e('0x71')]=!![];if(_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x41')]){_0x4f074c[_0x0a9e('0x40')]=_[_0x0a9e('0x3f')](_0x4f074c['where'],{'$or':_['map'](_0x4f074c[_0x0a9e('0x36')],function(_0x16ae1a){var _0x466bbf={};_0x466bbf[_0x16ae1a]={'$like':'%'+_0x3f8124[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x466bbf;})});}_0x4f074c=_['merge']({},_0x4f074c,_0x3f8124[_0x0a9e('0x47')]);return _0x517081[_0x0a9e('0x6c')](_0x4f074c);}})[_0x0a9e('0x24')](function(_0x52b661){if(!_[_0x0a9e('0x74')](_0x52b661)){var _0x59aa7b=toCsv(_0x52b661);var _0x2144ca=Date['now']();fs[_0x0a9e('0x75')](util[_0x0a9e('0x73')](_0x0a9e('0x76'),_0x517081['id'],_0x2144ca),_0x59aa7b);_0x586510['setHeader'](_0x0a9e('0x77'),'attachment;\x20filename='+util[_0x0a9e('0x73')](_0x0a9e('0x78'),_0x517081['id'],_0x2144ca));_0x586510[_0x0a9e('0x79')](_0x0a9e('0x7a'),_0x0a9e('0x7b'));return _0x586510[_0x0a9e('0x7c')](util[_0x0a9e('0x73')](_0x0a9e('0x76'),_0x517081['id'],_0x2144ca));}else{return _0x586510[_0x0a9e('0x18')](0xcc);}})[_0x0a9e('0x4c')](handleError(_0x586510,null));};exports[_0x0a9e('0x7d')]=function(_0xc876d4,_0x2415fe,_0x399def){var _0x98c62c;delete _0xc876d4[_0x0a9e('0x52')]['id'];return db['CmList']['findOne']({'where':{'id':_0xc876d4[_0x0a9e('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2415fe,null))[_0x0a9e('0x24')](function(_0x3428c9){if(_0x3428c9){return db['sequelize'][_0x0a9e('0x7e')](function(_0xe2b083){return db[_0x0a9e('0x6d')][_0x0a9e('0x51')](_0xc876d4['body'],{'transaction':_0xe2b083})[_0x0a9e('0x24')](function(_0x26cb76){_0x98c62c=_0x26cb76;return _0x3428c9[_0x0a9e('0x7f')](_0x26cb76,{'transaction':_0xe2b083});})[_0x0a9e('0x24')](function(){var _0x5d0e1f={'type':db[_0x0a9e('0x80')][_0x0a9e('0x81')],'transaction':_0xe2b083};switch(_0xc876d4[_0x0a9e('0x52')]['type']){case _0x0a9e('0x82'):_0x5d0e1f[_0x0a9e('0x43')]=db[_0x0a9e('0x80')]['TEXT'];break;case _0x0a9e('0x83'):_0x5d0e1f[_0x0a9e('0x43')]=db[_0x0a9e('0x80')][_0x0a9e('0x84')];break;case _0x0a9e('0x85'):_0x5d0e1f['type']=db[_0x0a9e('0x80')][_0x0a9e('0x86')];_0x5d0e1f['defaultValue']=![];break;default:}return db[_0x0a9e('0x87')][_0x0a9e('0x88')][_0x0a9e('0x89')]('cm_contacts',util['format']('cf_%s',_0x98c62c['id']),_0x5d0e1f);})[_0x0a9e('0x24')](function(){return _0x98c62c;});});}})[_0x0a9e('0x24')](respondWithResult(_0x2415fe,null))['catch'](handleError(_0x2415fe,null));};exports[_0x0a9e('0x8a')]=function(_0x1f78b4,_0x2a8d55,_0x54ce11){var _0x9fc93e={};var _0x30e037={};var _0x213d4e;var _0x30b3b8;return db[_0x0a9e('0x2e')][_0x0a9e('0x5d')]({'where':{'id':_0x1f78b4[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x2a8d55,null))[_0x0a9e('0x24')](function(_0x5a1848){if(_0x5a1848){_0x213d4e=_0x5a1848;_0x30e037[_0x0a9e('0x30')]=_['keys'](db[_0x0a9e('0x6d')][_0x0a9e('0x2f')]);_0x30e037[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x1f78b4[_0x0a9e('0x32')]);_0x30e037[_0x0a9e('0x35')]=_['intersection'](_0x30e037[_0x0a9e('0x30')],_0x30e037[_0x0a9e('0x32')]);_0x9fc93e[_0x0a9e('0x36')]=_[_0x0a9e('0x37')](_0x30e037['model'],qs[_0x0a9e('0x38')](_0x1f78b4[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x9fc93e[_0x0a9e('0x36')]=_0x9fc93e[_0x0a9e('0x36')][_0x0a9e('0x4f')]?_0x9fc93e[_0x0a9e('0x36')]:_0x30e037[_0x0a9e('0x30')];_0x9fc93e[_0x0a9e('0x3a')]=qs[_0x0a9e('0x3b')](_0x1f78b4['query'][_0x0a9e('0x3b')]);_0x9fc93e[_0x0a9e('0x40')]=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x1f78b4[_0x0a9e('0x32')],_0x30e037[_0x0a9e('0x35')]));_0x9fc93e[_0x0a9e('0x40')]=_[_0x0a9e('0x3f')](_0x9fc93e['where'],{'$or':[{'ListId':_0x5a1848['id']},{'ListId':null}]});if(_0x1f78b4[_0x0a9e('0x32')][_0x0a9e('0x41')]){_0x9fc93e[_0x0a9e('0x40')]=_['merge'](_0x9fc93e[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x9fc93e[_0x0a9e('0x36')],function(_0x97d5b5){var _0x370b5e={};_0x370b5e[_0x97d5b5]={'$like':'%'+_0x1f78b4[_0x0a9e('0x32')][_0x0a9e('0x41')]+'%'};return _0x370b5e;})});}_0x9fc93e=_[_0x0a9e('0x3f')]({},_0x9fc93e,_0x1f78b4[_0x0a9e('0x47')]);return db[_0x0a9e('0x6d')]['findAndCountAll'](_0x9fc93e);}})[_0x0a9e('0x24')](respondWithResult(_0x2a8d55,null))[_0x0a9e('0x4c')](handleError(_0x2a8d55,null));};exports[_0x0a9e('0x8b')]=function(_0x3db98f,_0x2b624e,_0x3942fd){return db['CmList'][_0x0a9e('0x50')]({'where':{'id':_0x3db98f['params']['id']}})['then'](handleEntityNotFound(_0x2b624e,null))['then'](function(_0x19e4e6){if(_0x19e4e6){return _0x19e4e6[_0x0a9e('0x8b')](_0x3db98f[_0x0a9e('0x52')][_0x0a9e('0x60')],_['omit'](_0x3db98f[_0x0a9e('0x52')],[_0x0a9e('0x60'),'id'])||{})[_0x0a9e('0x8c')](function(_0x1fdb10){for(var _0x2c8d1d=0x0;_0x2c8d1d<_0x3db98f['body']['ids'][_0x0a9e('0x4f')];_0x2c8d1d+=0x1){socket[_0x0a9e('0x8d')](_0x0a9e('0x8e'),{'UserId':_0x3db98f['body'][_0x0a9e('0x60')][_0x2c8d1d],'CmListId':_0x3db98f[_0x0a9e('0x4e')]['id']});}return _0x1fdb10;});}})[_0x0a9e('0x24')](respondWithResult(_0x2b624e,null))['catch'](handleError(_0x2b624e,null));};exports[_0x0a9e('0x8f')]=function(_0x2bf85d,_0x15ba6b,_0x4eda8f){var _0x272291;return db[_0x0a9e('0x2e')][_0x0a9e('0x50')]({'where':{'id':_0x2bf85d['params']['id']}})['then'](handleEntityNotFound(_0x15ba6b,null))['then'](function(_0x3b04fd){if(_0x3b04fd){return _0x3b04fd[_0x0a9e('0x8f')](_0x2bf85d[_0x0a9e('0x32')][_0x0a9e('0x60')])['then'](function(_0x33f22a){if(_['isArray'](_0x2bf85d[_0x0a9e('0x32')][_0x0a9e('0x60')])){for(var _0x242f23=0x0;_0x242f23<_0x2bf85d['query'][_0x0a9e('0x60')][_0x0a9e('0x4f')];_0x242f23+=0x1){socket[_0x0a9e('0x8d')]('userCmList:remove',{'UserId':_0x2bf85d[_0x0a9e('0x32')]['ids'][_0x242f23],'CmListId':_0x2bf85d[_0x0a9e('0x4e')]['id']});}}else{socket['emit'](_0x0a9e('0x90'),{'UserId':_0x2bf85d['query'][_0x0a9e('0x60')],'CmListId':_0x2bf85d[_0x0a9e('0x4e')]['id']});}});}})[_0x0a9e('0x24')](respondWithStatusCode(_0x15ba6b,null))[_0x0a9e('0x4c')](handleError(_0x15ba6b,null));};exports[_0x0a9e('0x91')]=function(_0x251dd9,_0x1784c1,_0x5acdc9){var _0x35ace3={};var _0x1c9ea2={};var _0x567004;var _0xf4fb77;return db[_0x0a9e('0x2e')]['findOne']({'where':{'id':_0x251dd9[_0x0a9e('0x4e')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x1784c1,null))[_0x0a9e('0x24')](function(_0x569528){if(_0x569528){_0x567004=_0x569528;_0x1c9ea2[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](db[_0x0a9e('0x92')][_0x0a9e('0x2f')]);_0x1c9ea2[_0x0a9e('0x32')]=_[_0x0a9e('0x31')](_0x251dd9[_0x0a9e('0x32')]);_0x1c9ea2[_0x0a9e('0x35')]=_[_0x0a9e('0x37')](_0x1c9ea2[_0x0a9e('0x30')],_0x1c9ea2['query']);_0x35ace3[_0x0a9e('0x36')]=_['intersection'](_0x1c9ea2[_0x0a9e('0x30')],qs[_0x0a9e('0x38')](_0x251dd9[_0x0a9e('0x32')][_0x0a9e('0x38')]));_0x35ace3[_0x0a9e('0x36')]=_0x35ace3[_0x0a9e('0x36')]['length']?_0x35ace3[_0x0a9e('0x36')]:_0x1c9ea2[_0x0a9e('0x30')];_0x35ace3[_0x0a9e('0x3a')]=qs['sort'](_0x251dd9[_0x0a9e('0x32')][_0x0a9e('0x3b')]);_0x35ace3[_0x0a9e('0x40')]=qs[_0x0a9e('0x35')](_[_0x0a9e('0x3c')](_0x251dd9[_0x0a9e('0x32')],_0x1c9ea2[_0x0a9e('0x35')]));if(_0x251dd9['query'][_0x0a9e('0x41')]){_0x35ace3[_0x0a9e('0x40')]=_[_0x0a9e('0x3f')](_0x35ace3[_0x0a9e('0x40')],{'$or':_[_0x0a9e('0x42')](_0x35ace3[_0x0a9e('0x36')],function(_0x8120e){var _0x5d6a48={};_0x5d6a48[_0x8120e]={'$like':'%'+_0x251dd9['query'][_0x0a9e('0x41')]+'%'};return _0x5d6a48;})});}_0x35ace3=_[_0x0a9e('0x3f')]({},_0x35ace3,_0x251dd9[_0x0a9e('0x47')]);return _0x567004[_0x0a9e('0x91')](_0x35ace3);}})[_0x0a9e('0x24')](function(_0x131da8){if(_0x131da8){_0xf4fb77=_0x131da8[_0x0a9e('0x4f')];if(!_0x251dd9['query'][_0x0a9e('0x39')](_0x0a9e('0x5e'))){_0x35ace3[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0x251dd9[_0x0a9e('0x32')][_0x0a9e('0x1e')]);_0x35ace3[_0x0a9e('0x1d')]=qs['offset'](_0x251dd9[_0x0a9e('0x32')][_0x0a9e('0x1d')]);}return _0x567004[_0x0a9e('0x91')](_0x35ace3);}})['then'](function(_0x2b8ad4){if(_0x2b8ad4){return _0x2b8ad4?{'count':_0xf4fb77,'rows':_0x2b8ad4}:null;}})[_0x0a9e('0x24')](respondWithResult(_0x1784c1,null))[_0x0a9e('0x4c')](handleError(_0x1784c1,null));};
\ No newline at end of file
index b333d27..8bd818c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c8d=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0xc5bd5e,_0x3194b6){var _0x16e7f3=function(_0x32cc4f){while(--_0x32cc4f){_0xc5bd5e['push'](_0xc5bd5e['shift']());}};_0x16e7f3(++_0x3194b6);}(_0x3c8d,0x190));var _0xd3c8=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x3c8d[_0x2a6809];return _0x11c371;};'use strict';var EventEmitter=require(_0xd3c8('0x0'));var CmList=require(_0xd3c8('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0xd3c8('0x2')](0x0);var events={'afterCreate':_0xd3c8('0x3'),'afterUpdate':_0xd3c8('0x4'),'afterDestroy':_0xd3c8('0x5')};function emitEvent(_0x12d13f){return function(_0x16328d,_0x585dd1,_0x390076){CmListEvents[_0xd3c8('0x6')](_0x12d13f+':'+_0x16328d['id'],_0x16328d);CmListEvents['emit'](_0x12d13f,_0x16328d);_0x390076(null);};}for(var e in events){if(events[_0xd3c8('0x7')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
+var _0xdcde=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x3289a8,_0xfa44a4){var _0x5bb3e7=function(_0x1b7d69){while(--_0x1b7d69){_0x3289a8['push'](_0x3289a8['shift']());}};_0x5bb3e7(++_0xfa44a4);}(_0xdcde,0x1e6));var _0xedcd=function(_0x2a960f,_0x5aab73){_0x2a960f=_0x2a960f-0x0;var _0x5027df=_0xdcde[_0x2a960f];return _0x5027df;};'use strict';var EventEmitter=require(_0xedcd('0x0'));var CmList=require(_0xedcd('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xedcd('0x2'),'afterUpdate':'update','afterDestroy':_0xedcd('0x3')};function emitEvent(_0x5200c2){return function(_0x400679,_0x3cf32f,_0x2341bf){CmListEvents[_0xedcd('0x4')](_0x5200c2+':'+_0x400679['id'],_0x400679);CmListEvents['emit'](_0x5200c2,_0x400679);_0x2341bf(null);};}for(var e in events){if(events[_0xedcd('0x5')](e)){var event=events[e];CmList[_0xedcd('0x6')](e,emitEvent(event));}}module[_0xedcd('0x7')]=CmListEvents;
\ No newline at end of file
index 55fb3d8..329b1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd6=['moment','request-promise','./cmList.attributes','exports','define','CmList','cm_lists','lodash','util','../../config/logger','api'];(function(_0x26a6e2,_0x562b13){var _0xc0c708=function(_0x965f5a){while(--_0x965f5a){_0x26a6e2['push'](_0x26a6e2['shift']());}};_0xc0c708(++_0x562b13);}(_0x2bd6,0x193));var _0x62bd=function(_0x11ca63,_0xea9f9c){_0x11ca63=_0x11ca63-0x0;var _0x41f1f6=_0x2bd6[_0x11ca63];return _0x41f1f6;};'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 attributes=require(_0x62bd('0x6'));module[_0x62bd('0x7')]=function(_0x3a3c3d,_0x55e5d4){return _0x3a3c3d[_0x62bd('0x8')](_0x62bd('0x9'),attributes,{'tableName':_0x62bd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xca0e=['api','moment','bluebird','./cmList.attributes','exports','define','../../config/logger'];(function(_0x41c454,_0x59c6a1){var _0x46bb96=function(_0x3c1b5b){while(--_0x3c1b5b){_0x41c454['push'](_0x41c454['shift']());}};_0x46bb96(++_0x59c6a1);}(_0xca0e,0xca));var _0xeca0=function(_0x3e3a52,_0xc4923c){_0x3e3a52=_0x3e3a52-0x0;var _0x499f85=_0xca0e[_0x3e3a52];return _0x499f85;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xeca0('0x0'))(_0xeca0('0x1'));var moment=require(_0xeca0('0x2'));var BPromise=require(_0xeca0('0x3'));var rp=require('request-promise');var attributes=require(_0xeca0('0x4'));module[_0xeca0('0x5')]=function(_0x133e7a,_0x1957da){return _0x133e7a[_0xeca0('0x6')]('CmList',attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0bf0c3c..0d26c8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9b4=['debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','then','CmList,\x20%s,\x20%s','request\x20sent'];(function(_0x28f65d,_0x4b01b6){var _0x5f3041=function(_0x4f3cdc){while(--_0x4f3cdc){_0x28f65d['push'](_0x28f65d['shift']());}};_0x5f3041(++_0x4b01b6);}(_0xb9b4,0x77));var _0x4b9b=function(_0x58dddc,_0xc8de04){_0x58dddc=_0x58dddc-0x0;var _0x3749ec=_0xb9b4[_0x58dddc];return _0x3749ec;};'use strict';var _=require(_0x4b9b('0x0'));var util=require(_0x4b9b('0x1'));var moment=require(_0x4b9b('0x2'));var BPromise=require(_0x4b9b('0x3'));var rs=require(_0x4b9b('0x4'));var fs=require('fs');var Redis=require(_0x4b9b('0x5'));var db=require(_0x4b9b('0x6'))['db'];var utils=require(_0x4b9b('0x7'));var logger=require(_0x4b9b('0x8'))(_0x4b9b('0x9'));var config=require('../../config/environment');var jayson=require(_0x4b9b('0xa'));var client=jayson[_0x4b9b('0xb')][_0x4b9b('0xc')]({'port':0x232a});config[_0x4b9b('0xd')]=_[_0x4b9b('0xe')](config[_0x4b9b('0xd')],{'host':_0x4b9b('0xf'),'port':0x18eb});var socket=require(_0x4b9b('0x10'))(new Redis(config[_0x4b9b('0xd')]));require(_0x4b9b('0x11'))['register'](socket);function respondWithRpcPromise(_0x3a8998,_0x108467,_0x53d0f2){return new BPromise(function(_0x1a13fb,_0x24f937){return client['request'](_0x3a8998,_0x53d0f2)[_0x4b9b('0x12')](function(_0x577f4a){logger['info'](_0x4b9b('0x13'),_0x108467,_0x4b9b('0x14'));logger[_0x4b9b('0x15')](_0x4b9b('0x16'),_0x108467,_0x4b9b('0x14'),JSON[_0x4b9b('0x17')](_0x577f4a));if(_0x577f4a[_0x4b9b('0x18')]){if(_0x577f4a[_0x4b9b('0x18')]['code']===0x1f4){logger[_0x4b9b('0x18')](_0x4b9b('0x13'),_0x108467,_0x577f4a[_0x4b9b('0x18')][_0x4b9b('0x19')]);return _0x24f937(_0x577f4a[_0x4b9b('0x18')][_0x4b9b('0x19')]);}logger[_0x4b9b('0x18')](_0x4b9b('0x13'),_0x108467,_0x577f4a['error'][_0x4b9b('0x19')]);return _0x1a13fb(_0x577f4a[_0x4b9b('0x18')]['message']);}else{logger[_0x4b9b('0x1a')](_0x4b9b('0x13'),_0x108467,'request\x20sent');_0x1a13fb(_0x577f4a['result'][_0x4b9b('0x19')]);}})[_0x4b9b('0x1b')](function(_0x2d7596){logger[_0x4b9b('0x18')](_0x4b9b('0x13'),_0x108467,_0x2d7596);_0x24f937(_0x2d7596);});});}
\ No newline at end of file
+var _0x040f=['http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','then','CmList,\x20%s,\x20%s','request\x20sent','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x626a5b,_0x1944b2){var _0x333c50=function(_0x52c9cc){while(--_0x52c9cc){_0x626a5b['push'](_0x626a5b['shift']());}};_0x333c50(++_0x1944b2);}(_0x040f,0x93));var _0xf040=function(_0x3b8d58,_0x567981){_0x3b8d58=_0x3b8d58-0x0;var _0x4f14ba=_0x040f[_0x3b8d58];return _0x4f14ba;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf040('0x0'));var BPromise=require('bluebird');var rs=require(_0xf040('0x1'));var fs=require('fs');var Redis=require(_0xf040('0x2'));var db=require(_0xf040('0x3'))['db'];var utils=require(_0xf040('0x4'));var logger=require(_0xf040('0x5'))(_0xf040('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xf040('0x7')]({'port':0x232a});config[_0xf040('0x8')]=_[_0xf040('0x9')](config[_0xf040('0x8')],{'host':_0xf040('0xa'),'port':0x18eb});var socket=require(_0xf040('0xb'))(new Redis(config[_0xf040('0x8')]));require(_0xf040('0xc'))['register'](socket);function respondWithRpcPromise(_0x41ff1c,_0x327d71,_0x42db74){return new BPromise(function(_0x454d5a,_0x5a49d3){return client['request'](_0x41ff1c,_0x42db74)[_0xf040('0xd')](function(_0x542a36){logger['info'](_0xf040('0xe'),_0x327d71,_0xf040('0xf'));logger['debug'](_0xf040('0x10'),_0x327d71,_0xf040('0xf'),JSON[_0xf040('0x11')](_0x542a36));if(_0x542a36[_0xf040('0x12')]){if(_0x542a36[_0xf040('0x12')][_0xf040('0x13')]===0x1f4){logger[_0xf040('0x12')](_0xf040('0xe'),_0x327d71,_0x542a36[_0xf040('0x12')][_0xf040('0x14')]);return _0x5a49d3(_0x542a36[_0xf040('0x12')][_0xf040('0x14')]);}logger[_0xf040('0x12')](_0xf040('0xe'),_0x327d71,_0x542a36[_0xf040('0x12')][_0xf040('0x14')]);return _0x454d5a(_0x542a36[_0xf040('0x12')]['message']);}else{logger['info'](_0xf040('0xe'),_0x327d71,_0xf040('0xf'));_0x454d5a(_0x542a36[_0xf040('0x15')][_0xf040('0x14')]);}})['catch'](function(_0x362b43){logger[_0xf040('0x12')](_0xf040('0xe'),_0x327d71,_0x362b43);_0x5a49d3(_0x362b43);});});}
\ No newline at end of file
index 69ae131..c1801a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd56=['removeListener','length','cmList:','./cmList.events','save','remove','update','emit'];(function(_0x187693,_0x1d34db){var _0x23732b=function(_0x19a4cf){while(--_0x19a4cf){_0x187693['push'](_0x187693['shift']());}};_0x23732b(++_0x1d34db);}(_0xbd56,0x143));var _0x6bd5=function(_0x172803,_0x46cff2){_0x172803=_0x172803-0x0;var _0x1e06f1=_0xbd56[_0x172803];return _0x1e06f1;};'use strict';var CmListEvents=require(_0x6bd5('0x0'));var events=[_0x6bd5('0x1'),_0x6bd5('0x2'),_0x6bd5('0x3')];function createListener(_0x17e0da,_0x5a6d27){return function(_0x5325e5){_0x5a6d27[_0x6bd5('0x4')](_0x17e0da,_0x5325e5);};}function removeListener(_0x4b31f2,_0x36a018){return function(){CmListEvents[_0x6bd5('0x5')](_0x4b31f2,_0x36a018);};}exports['register']=function(_0x4f4301){for(var _0x303fb2=0x0,_0x1f2bbf=events[_0x6bd5('0x6')];_0x303fb2<_0x1f2bbf;_0x303fb2++){var _0x167808=events[_0x303fb2];var _0xa550de=createListener(_0x6bd5('0x7')+_0x167808,_0x4f4301);CmListEvents['on'](_0x167808,_0xa550de);}};
\ No newline at end of file
+var _0xc5f1=['length','cmList:','./cmList.events','save','remove','update','removeListener','register'];(function(_0x3e44fa,_0x75ed2a){var _0x2a0aba=function(_0x1db6a7){while(--_0x1db6a7){_0x3e44fa['push'](_0x3e44fa['shift']());}};_0x2a0aba(++_0x75ed2a);}(_0xc5f1,0x16a));var _0x1c5f=function(_0x3f4c9e,_0x8d49b){_0x3f4c9e=_0x3f4c9e-0x0;var _0x5c8dc1=_0xc5f1[_0x3f4c9e];return _0x5c8dc1;};'use strict';var CmListEvents=require(_0x1c5f('0x0'));var events=[_0x1c5f('0x1'),_0x1c5f('0x2'),_0x1c5f('0x3')];function createListener(_0x4ef38d,_0x1b289c){return function(_0x37ab52){_0x1b289c['emit'](_0x4ef38d,_0x37ab52);};}function removeListener(_0x20d5b9,_0x2c8626){return function(){CmListEvents[_0x1c5f('0x4')](_0x20d5b9,_0x2c8626);};}exports[_0x1c5f('0x5')]=function(_0x39ef9b){for(var _0x4eff9d=0x0,_0x2a5e61=events[_0x1c5f('0x6')];_0x4eff9d<_0x2a5e61;_0x4eff9d++){var _0x42a775=events[_0x4eff9d];var _0x29bce0=createListener(_0x1c5f('0x7')+_0x42a775,_0x39ef9b);CmListEvents['on'](_0x42a775,_0x29bce0);}};
\ No newline at end of file
index c62dfd3..75fc2d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0153=['multer','util','path','express','Router','../../components/interaction/service','../../config/environment','index','get','describe','isAuthenticated','show','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','getCustomFields','/:id/users','post','/:id/dispositions','addDisposition','/:id/fields','addCustomField','addAgents','put','/:id','delete','removeDispositions','exports'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x0153,0x15c));var _0x3015=function(_0x5c0daf,_0x3b13c9){_0x5c0daf=_0x5c0daf-0x0;var _0x1df75b=_0x0153[_0x5c0daf];return _0x1df75b;};'use strict';var multer=require(_0x3015('0x0'));var util=require(_0x3015('0x1'));var path=require(_0x3015('0x2'));var timeout=require('connect-timeout');var express=require(_0x3015('0x3'));var router=express[_0x3015('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0x3015('0x5'));var config=require(_0x3015('0x6'));var controller=require('./cmList.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x3015('0x7')]);router[_0x3015('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x3015('0x9')]);router[_0x3015('0x8')]('/:id',auth[_0x3015('0xa')](),controller[_0x3015('0xb')]);router[_0x3015('0x8')]('/:id/dispositions',auth['isAuthenticated'](),controller['getDispositions']);router[_0x3015('0x8')](_0x3015('0xc'),auth[_0x3015('0xa')](),controller[_0x3015('0xd')]);router[_0x3015('0x8')](_0x3015('0xe'),auth[_0x3015('0xa')](),controller[_0x3015('0xf')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller[_0x3015('0x10')]);router[_0x3015('0x8')](_0x3015('0x11'),auth['isAuthenticated'](),controller['getAgents']);router[_0x3015('0x12')]('/',auth[_0x3015('0xa')](),controller['create']);router[_0x3015('0x12')](_0x3015('0x13'),auth[_0x3015('0xa')](),controller[_0x3015('0x14')]);router[_0x3015('0x12')](_0x3015('0xc'),auth['isAuthenticated'](),controller['addContacts']);router[_0x3015('0x12')](_0x3015('0x15'),auth[_0x3015('0xa')](),controller[_0x3015('0x16')]);router['post'](_0x3015('0x11'),auth['isAuthenticated'](),controller[_0x3015('0x17')]);router[_0x3015('0x18')](_0x3015('0x19'),auth['isAuthenticated'](),controller['update']);router[_0x3015('0x1a')](_0x3015('0x19'),auth[_0x3015('0xa')](),controller['destroy']);router[_0x3015('0x1a')](_0x3015('0x13'),auth[_0x3015('0xa')](),controller[_0x3015('0x1b')]);router[_0x3015('0x1a')](_0x3015('0x11'),auth[_0x3015('0xa')](),controller['removeAgents']);module[_0x3015('0x1c')]=router;
\ No newline at end of file
+var _0x2d05=['/:id/contacts','getContacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','post','addDisposition','addContacts','addAgents','put','/:id','update','delete','destroy','removeDispositions','removeAgents','util','express','Router','../../components/auth/service','../../config/environment','./cmList.controller','isAuthenticated','get','/describe','/:id/dispositions','getDispositions'];(function(_0x1d1d09,_0x504d77){var _0x8827e=function(_0x4f3128){while(--_0x4f3128){_0x1d1d09['push'](_0x1d1d09['shift']());}};_0x8827e(++_0x504d77);}(_0x2d05,0x1b5));var _0x52d0=function(_0x27ae0b,_0x52a52f){_0x27ae0b=_0x27ae0b-0x0;var _0x57a73e=_0x2d05[_0x27ae0b];return _0x57a73e;};'use strict';var multer=require('multer');var util=require(_0x52d0('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x52d0('0x1'));var router=express[_0x52d0('0x2')]();var auth=require(_0x52d0('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x52d0('0x4'));var controller=require(_0x52d0('0x5'));router['get']('/',auth[_0x52d0('0x6')](),controller['index']);router[_0x52d0('0x7')](_0x52d0('0x8'),auth[_0x52d0('0x6')](),controller['describe']);router[_0x52d0('0x7')]('/:id',auth[_0x52d0('0x6')](),controller['show']);router[_0x52d0('0x7')](_0x52d0('0x9'),auth[_0x52d0('0x6')](),controller[_0x52d0('0xa')]);router[_0x52d0('0x7')](_0x52d0('0xb'),auth[_0x52d0('0x6')](),controller[_0x52d0('0xc')]);router['get']('/:id/contacts/csv',auth[_0x52d0('0x6')](),controller[_0x52d0('0xd')]);router[_0x52d0('0x7')](_0x52d0('0xe'),auth['isAuthenticated'](),controller[_0x52d0('0xf')]);router[_0x52d0('0x7')](_0x52d0('0x10'),auth[_0x52d0('0x6')](),controller['getAgents']);router[_0x52d0('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x52d0('0x11')](_0x52d0('0x9'),auth['isAuthenticated'](),controller[_0x52d0('0x12')]);router[_0x52d0('0x11')]('/:id/contacts',auth[_0x52d0('0x6')](),controller[_0x52d0('0x13')]);router['post'](_0x52d0('0xe'),auth[_0x52d0('0x6')](),controller['addCustomField']);router[_0x52d0('0x11')](_0x52d0('0x10'),auth[_0x52d0('0x6')](),controller[_0x52d0('0x14')]);router[_0x52d0('0x15')](_0x52d0('0x16'),auth[_0x52d0('0x6')](),controller[_0x52d0('0x17')]);router[_0x52d0('0x18')]('/:id',auth[_0x52d0('0x6')](),controller[_0x52d0('0x19')]);router[_0x52d0('0x18')](_0x52d0('0x9'),auth[_0x52d0('0x6')](),controller[_0x52d0('0x1a')]);router[_0x52d0('0x18')](_0x52d0('0x10'),auth[_0x52d0('0x6')](),controller[_0x52d0('0x1b')]);module['exports']=router;
\ No newline at end of file
index e616b48..0b0b9f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b0=['STRING','sequelize','exports','field'];(function(_0x39b199,_0x5a6f4e){var _0x37b8b4=function(_0x23b83b){while(--_0x23b83b){_0x39b199['push'](_0x39b199['shift']());}};_0x37b8b4(++_0x5a6f4e);}(_0x02b0,0x1d5));var _0x002b=function(_0x4ed17f,_0x800002){_0x4ed17f=_0x4ed17f-0x0;var _0x2b92c6=_0x02b0[_0x4ed17f];return _0x2b92c6;};'use strict';var Sequelize=require(_0x002b('0x0'));module[_0x002b('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x3ac05d){return this['getDataValue'](_0x002b('0x2'));}},'field':{'type':Sequelize[_0x002b('0x3')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x002b('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0xbac3=['sequelize','exports','getDataValue','field','STRING'];(function(_0x2c1e7a,_0x155f86){var _0xcacb4f=function(_0x2b2eb3){while(--_0x2b2eb3){_0x2c1e7a['push'](_0x2c1e7a['shift']());}};_0xcacb4f(++_0x155f86);}(_0xbac3,0x69));var _0x3bac=function(_0x8d3262,_0x439e73){_0x8d3262=_0x8d3262-0x0;var _0x45561c=_0xbac3[_0x8d3262];return _0x45561c;};'use strict';var Sequelize=require(_0x3bac('0x0'));module[_0x3bac('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x5874c5){return this[_0x3bac('0x2')](_0x3bac('0x3'));}},'field':{'type':Sequelize[_0x3bac('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x3bac('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x3bac('0x4')],'allowNull':![]}};
\ No newline at end of file
index a2a6203..e8a9ef4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47b9=['../../config/environment','../../mysqldb','status','end','json','count','offset','limit','set','Content-Range','update','then','destroy','sendStatus','error','stack','name','send','body','Condition','find','params','catch','html-pdf','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','lodash','squel','desk.js','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils'];(function(_0x460eb4,_0x2959e7){var _0x1a1874=function(_0x1d6dcb){while(--_0x1d6dcb){_0x460eb4['push'](_0x460eb4['shift']());}};_0x1a1874(++_0x2959e7);}(_0x47b9,0x14f));var _0x947b=function(_0x2650e9,_0xb91cc){_0x2650e9=_0x2650e9-0x0;var _0x3511c8=_0x47b9[_0x2650e9];return _0x3511c8;};'use strict';var pdf=require(_0x947b('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x947b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x947b('0x2'));var rp=require(_0x947b('0x3'));var moment=require('moment');var BPromise=require(_0x947b('0x4'));var Mustache=require(_0x947b('0x5'));var util=require(_0x947b('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x947b('0x7'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x947b('0x8'));var squel=require(_0x947b('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x947b('0xa'));var toCsv=require(_0x947b('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x947b('0xb'));var qs=require(_0x947b('0xc'));var logger=require(_0x947b('0xd'))(_0x947b('0xe'));var utils=require(_0x947b('0xf'));var config=require(_0x947b('0x10'));var db=require(_0x947b('0x11'))['db'];function respondWithStatusCode(_0x366aff,_0x5480bf){_0x5480bf=_0x5480bf||0xcc;return function(_0x8fc27e){if(_0x8fc27e){return _0x366aff['sendStatus'](_0x5480bf);}return _0x366aff[_0x947b('0x12')](_0x5480bf)[_0x947b('0x13')]();};}function respondWithResult(_0x3e910f,_0x5134dc){_0x5134dc=_0x5134dc||0xc8;return function(_0x18c17c){if(_0x18c17c){return _0x3e910f[_0x947b('0x12')](_0x5134dc)[_0x947b('0x14')](_0x18c17c);}};}function respondWithFilteredResult(_0x440452,_0x38afbc){return function(_0x578424){if(_0x578424){var _0xe970c=_0x578424[_0x947b('0x15')],_0x18e030=_0x38afbc[_0x947b('0x16')],_0x200d57=_0x38afbc[_0x947b('0x16')]+_0x38afbc[_0x947b('0x17')],_0x1a8a29;if(_0x200d57>=_0xe970c){_0x200d57=_0xe970c;_0x1a8a29=0xc8;}else{_0x1a8a29=0xce;}_0x440452[_0x947b('0x12')](_0x1a8a29);return _0x440452[_0x947b('0x18')](_0x947b('0x19'),_0x18e030+'-'+_0x200d57+'/'+_0xe970c)[_0x947b('0x14')](_0x578424);}return null;};}function patchUpdates(_0x2c6005){return function(_0x51c46d){try{jsonpatch['apply'](_0x51c46d,_0x2c6005,!![]);}catch(_0x48ac70){return BPromise['reject'](_0x48ac70);}return _0x51c46d['save']();};}function saveUpdates(_0xd9673,_0x190bc8){return function(_0xdd9158){if(_0xdd9158){return _0xdd9158[_0x947b('0x1a')](_0xd9673)[_0x947b('0x1b')](function(_0x1d4a1e){return _0x1d4a1e;});}return null;};}function removeEntity(_0x40dbc1,_0x1f0c52){return function(_0x2e7f9e){if(_0x2e7f9e){return _0x2e7f9e[_0x947b('0x1c')]()[_0x947b('0x1b')](function(){_0x40dbc1['status'](0xcc)[_0x947b('0x13')]();});}};}function handleEntityNotFound(_0x3f04f4,_0x12a3f1){return function(_0x4613f5){if(!_0x4613f5){_0x3f04f4[_0x947b('0x1d')](0x194);}return _0x4613f5;};}function handleError(_0x180081,_0x208ce9){_0x208ce9=_0x208ce9||0x1f4;return function(_0x3df152){logger[_0x947b('0x1e')](_0x3df152[_0x947b('0x1f')]);if(_0x3df152[_0x947b('0x20')]){delete _0x3df152[_0x947b('0x20')];}_0x180081[_0x947b('0x12')](_0x208ce9)[_0x947b('0x21')](_0x3df152);};}exports[_0x947b('0x1a')]=function(_0x2bd1e4,_0x5e5f49){if(_0x2bd1e4[_0x947b('0x22')]['id']){delete _0x2bd1e4['body']['id'];}return db[_0x947b('0x23')][_0x947b('0x24')]({'where':{'id':_0x2bd1e4[_0x947b('0x25')]['id']}})['then'](handleEntityNotFound(_0x5e5f49,null))[_0x947b('0x1b')](saveUpdates(_0x2bd1e4[_0x947b('0x22')],null))[_0x947b('0x1b')](respondWithResult(_0x5e5f49,null))[_0x947b('0x26')](handleError(_0x5e5f49,null));};exports['destroy']=function(_0x295904,_0x449a18){return db['Condition'][_0x947b('0x24')]({'where':{'id':_0x295904[_0x947b('0x25')]['id']}})[_0x947b('0x1b')](handleEntityNotFound(_0x449a18,null))['then'](removeEntity(_0x449a18,null))[_0x947b('0x26')](handleError(_0x449a18,null));};
\ No newline at end of file
+var _0xb613=['../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','limit','set','Content-Range','apply','save','then','end','error','stack','name','send','body','Condition','find','params','destroy','catch','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x4a9d83,_0x291512){var _0x3aade5=function(_0x2cbda1){while(--_0x2cbda1){_0x4a9d83['push'](_0x4a9d83['shift']());}};_0x3aade5(++_0x291512);}(_0xb613,0x17c));var _0x3b61=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xb613[_0x25bea7];return _0x175952;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x3b61('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3b61('0x1'));var rp=require(_0x3b61('0x2'));var moment=require(_0x3b61('0x3'));var BPromise=require(_0x3b61('0x4'));var Mustache=require(_0x3b61('0x5'));var util=require('util');var path=require(_0x3b61('0x6'));var sox=require('sox');var csv=require(_0x3b61('0x7'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x3b61('0x8'));var squel=require(_0x3b61('0x9'));var crypto=require(_0x3b61('0xa'));var jsforce=require(_0x3b61('0xb'));var deskjs=require(_0x3b61('0xc'));var toCsv=require(_0x3b61('0x7'));var querystring=require(_0x3b61('0xd'));var Papa=require(_0x3b61('0xe'));var Redis=require(_0x3b61('0xf'));var qs=require(_0x3b61('0x10'));var logger=require(_0x3b61('0x11'))(_0x3b61('0x12'));var utils=require(_0x3b61('0x13'));var config=require(_0x3b61('0x14'));var db=require(_0x3b61('0x15'))['db'];function respondWithStatusCode(_0x59a18,_0x53ca71){_0x53ca71=_0x53ca71||0xcc;return function(_0x1c9c36){if(_0x1c9c36){return _0x59a18[_0x3b61('0x16')](_0x53ca71);}return _0x59a18[_0x3b61('0x17')](_0x53ca71)['end']();};}function respondWithResult(_0x1e1b3d,_0x478af5){_0x478af5=_0x478af5||0xc8;return function(_0x3a5e87){if(_0x3a5e87){return _0x1e1b3d[_0x3b61('0x17')](_0x478af5)[_0x3b61('0x18')](_0x3a5e87);}};}function respondWithFilteredResult(_0x156103,_0xed22be){return function(_0x3421f3){if(_0x3421f3){var _0x42636f=_0x3421f3[_0x3b61('0x19')],_0x49a36e=_0xed22be[_0x3b61('0x1a')],_0x8ca798=_0xed22be[_0x3b61('0x1a')]+_0xed22be[_0x3b61('0x1b')],_0x333f4a;if(_0x8ca798>=_0x42636f){_0x8ca798=_0x42636f;_0x333f4a=0xc8;}else{_0x333f4a=0xce;}_0x156103[_0x3b61('0x17')](_0x333f4a);return _0x156103[_0x3b61('0x1c')](_0x3b61('0x1d'),_0x49a36e+'-'+_0x8ca798+'/'+_0x42636f)[_0x3b61('0x18')](_0x3421f3);}return null;};}function patchUpdates(_0x5b09de){return function(_0x22a058){try{jsonpatch[_0x3b61('0x1e')](_0x22a058,_0x5b09de,!![]);}catch(_0x1b0457){return BPromise['reject'](_0x1b0457);}return _0x22a058[_0x3b61('0x1f')]();};}function saveUpdates(_0x13a0a6,_0xcd646c){return function(_0x144dbc){if(_0x144dbc){return _0x144dbc['update'](_0x13a0a6)[_0x3b61('0x20')](function(_0x433319){return _0x433319;});}return null;};}function removeEntity(_0x1464d9,_0x29d6fa){return function(_0x19f911){if(_0x19f911){return _0x19f911['destroy']()['then'](function(){_0x1464d9[_0x3b61('0x17')](0xcc)[_0x3b61('0x21')]();});}};}function handleEntityNotFound(_0x4355ff,_0x43e56b){return function(_0x58b956){if(!_0x58b956){_0x4355ff[_0x3b61('0x16')](0x194);}return _0x58b956;};}function handleError(_0x42a669,_0x2fe1d9){_0x2fe1d9=_0x2fe1d9||0x1f4;return function(_0xf09e95){logger[_0x3b61('0x22')](_0xf09e95[_0x3b61('0x23')]);if(_0xf09e95[_0x3b61('0x24')]){delete _0xf09e95[_0x3b61('0x24')];}_0x42a669['status'](_0x2fe1d9)[_0x3b61('0x25')](_0xf09e95);};}exports['update']=function(_0x3c97d5,_0x329a27){if(_0x3c97d5['body']['id']){delete _0x3c97d5[_0x3b61('0x26')]['id'];}return db[_0x3b61('0x27')][_0x3b61('0x28')]({'where':{'id':_0x3c97d5[_0x3b61('0x29')]['id']}})['then'](handleEntityNotFound(_0x329a27,null))['then'](saveUpdates(_0x3c97d5['body'],null))[_0x3b61('0x20')](respondWithResult(_0x329a27,null))['catch'](handleError(_0x329a27,null));};exports[_0x3b61('0x2a')]=function(_0x12ba68,_0x220836){return db['Condition'][_0x3b61('0x28')]({'where':{'id':_0x12ba68[_0x3b61('0x29')]['id']}})[_0x3b61('0x20')](handleEntityNotFound(_0x220836,null))[_0x3b61('0x20')](removeEntity(_0x220836,null))[_0x3b61('0x2b')](handleError(_0x220836,null));};
\ No newline at end of file
index 0f7d147..77b3585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c77=['../../config/logger','api','moment','bluebird','./condition.attributes','exports','define','Condition','lodash'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x5c77,0xce));var _0x75c7=function(_0x2bbcda,_0x1b2b5e){_0x2bbcda=_0x2bbcda-0x0;var _0x571a2c=_0x5c77[_0x2bbcda];return _0x571a2c;};'use strict';var _=require(_0x75c7('0x0'));var util=require('util');var logger=require(_0x75c7('0x1'))(_0x75c7('0x2'));var moment=require(_0x75c7('0x3'));var BPromise=require(_0x75c7('0x4'));var rp=require('request-promise');var attributes=require(_0x75c7('0x5'));module[_0x75c7('0x6')]=function(_0x55542c,_0x2e8254){return _0x55542c[_0x75c7('0x7')](_0x75c7('0x8'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9acf=['tools_conditions','../../config/logger','api','moment','bluebird','request-promise','./condition.attributes','exports','define'];(function(_0x137c99,_0x1fd49b){var _0x400bf3=function(_0x5b8103){while(--_0x5b8103){_0x137c99['push'](_0x137c99['shift']());}};_0x400bf3(++_0x1fd49b);}(_0x9acf,0xbe));var _0xf9ac=function(_0x498526,_0x2d7c2f){_0x498526=_0x498526-0x0;var _0x2b5dd4=_0x9acf[_0x498526];return _0x2b5dd4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf9ac('0x0'))(_0xf9ac('0x1'));var moment=require(_0xf9ac('0x2'));var BPromise=require(_0xf9ac('0x3'));var rp=require(_0xf9ac('0x4'));var attributes=require(_0xf9ac('0x5'));module[_0xf9ac('0x6')]=function(_0x301cd4,_0x23c19f){return _0x301cd4[_0xf9ac('0x7')]('Condition',attributes,{'tableName':_0xf9ac('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1fe715f..8c0865f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6db=['rpc','jayson/promise','http','request','then','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','Condition,\x20%s,\x20%s','message','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xc6db,0x19d));var _0xbc6d=function(_0x339702,_0x465d98){_0x339702=_0x339702-0x0;var _0x55cc03=_0xc6db[_0x339702];return _0x55cc03;};'use strict';var _=require(_0xbc6d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbc6d('0x1'));var rs=require(_0xbc6d('0x2'));var fs=require('fs');var Redis=require(_0xbc6d('0x3'));var db=require(_0xbc6d('0x4'))['db'];var utils=require(_0xbc6d('0x5'));var logger=require(_0xbc6d('0x6'))(_0xbc6d('0x7'));var config=require('../../config/environment');var jayson=require(_0xbc6d('0x8'));var client=jayson['client'][_0xbc6d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x19d7af,_0x10d61b,_0x3efd0e){return new BPromise(function(_0xbb3ca9,_0x9f6e81){return client[_0xbc6d('0xa')](_0x19d7af,_0x3efd0e)[_0xbc6d('0xb')](function(_0x22fe8e){logger['info']('Condition,\x20%s,\x20%s',_0x10d61b,_0xbc6d('0xc'));logger[_0xbc6d('0xd')](_0xbc6d('0xe'),_0x10d61b,'request\x20sent',JSON[_0xbc6d('0xf')](_0x22fe8e));if(_0x22fe8e['error']){if(_0x22fe8e[_0xbc6d('0x10')]['code']===0x1f4){logger[_0xbc6d('0x10')](_0xbc6d('0x11'),_0x10d61b,_0x22fe8e[_0xbc6d('0x10')][_0xbc6d('0x12')]);return _0x9f6e81(_0x22fe8e[_0xbc6d('0x10')]['message']);}logger[_0xbc6d('0x10')](_0xbc6d('0x11'),_0x10d61b,_0x22fe8e['error'][_0xbc6d('0x12')]);return _0xbb3ca9(_0x22fe8e[_0xbc6d('0x10')][_0xbc6d('0x12')]);}else{logger['info'](_0xbc6d('0x11'),_0x10d61b,_0xbc6d('0xc'));_0xbb3ca9(_0x22fe8e['result'][_0xbc6d('0x12')]);}})[_0xbc6d('0x13')](function(_0x1f199a){logger['error']('Condition,\x20%s,\x20%s',_0x10d61b,_0x1f199a);_0x9f6e81(_0x1f199a);});});}
\ No newline at end of file
+var _0xe51d=['info','Condition,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','bluebird','../../config/utils','../../config/logger','../../config/environment','client','http','request','then'];(function(_0x175eab,_0x2ebf07){var _0x4281c8=function(_0x1fbdc5){while(--_0x1fbdc5){_0x175eab['push'](_0x175eab['shift']());}};_0x4281c8(++_0x2ebf07);}(_0xe51d,0xed));var _0xde51=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe51d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xde51('0x0'));var util=require(_0xde51('0x1'));var moment=require('moment');var BPromise=require(_0xde51('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xde51('0x3'));var logger=require(_0xde51('0x4'))('rpc');var config=require(_0xde51('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xde51('0x6')][_0xde51('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x544bb4,_0xb7fb11,_0x5b3340){return new BPromise(function(_0x36f2d2,_0x56cdd6){return client[_0xde51('0x8')](_0x544bb4,_0x5b3340)[_0xde51('0x9')](function(_0x48368e){logger[_0xde51('0xa')](_0xde51('0xb'),_0xb7fb11,_0xde51('0xc'));logger[_0xde51('0xd')]('Condition,\x20%s,\x20%s,\x20%s',_0xb7fb11,'request\x20sent',JSON[_0xde51('0xe')](_0x48368e));if(_0x48368e[_0xde51('0xf')]){if(_0x48368e[_0xde51('0xf')]['code']===0x1f4){logger['error']('Condition,\x20%s,\x20%s',_0xb7fb11,_0x48368e['error'][_0xde51('0x10')]);return _0x56cdd6(_0x48368e[_0xde51('0xf')][_0xde51('0x10')]);}logger[_0xde51('0xf')](_0xde51('0xb'),_0xb7fb11,_0x48368e[_0xde51('0xf')][_0xde51('0x10')]);return _0x36f2d2(_0x48368e[_0xde51('0xf')]['message']);}else{logger[_0xde51('0xa')]('Condition,\x20%s,\x20%s',_0xb7fb11,_0xde51('0xc'));_0x36f2d2(_0x48368e[_0xde51('0x11')][_0xde51('0x10')]);}})[_0xde51('0x12')](function(_0x4606d8){logger[_0xde51('0xf')]('Condition,\x20%s,\x20%s',_0xb7fb11,_0x4606d8);_0x56cdd6(_0x4606d8);});});}
\ No newline at end of file
index 685da0b..1ad2d63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a07=['/:id','isAuthenticated','update','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller'];(function(_0x211175,_0x15f647){var _0x2af97c=function(_0x441b5a){while(--_0x441b5a){_0x211175['push'](_0x211175['shift']());}};_0x2af97c(++_0x15f647);}(_0x0a07,0x1d7));var _0x70a0=function(_0x40a0a6,_0x461602){_0x40a0a6=_0x40a0a6-0x0;var _0x20aad7=_0x0a07[_0x40a0a6];return _0x20aad7;};'use strict';var multer=require(_0x70a0('0x0'));var util=require(_0x70a0('0x1'));var path=require('path');var timeout=require(_0x70a0('0x2'));var express=require(_0x70a0('0x3'));var router=express[_0x70a0('0x4')]();var auth=require(_0x70a0('0x5'));var interaction=require(_0x70a0('0x6'));var config=require(_0x70a0('0x7'));var controller=require(_0x70a0('0x8'));router['put'](_0x70a0('0x9'),auth[_0x70a0('0xa')](),controller[_0x70a0('0xb')]);router['delete'](_0x70a0('0x9'),auth[_0x70a0('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7afa=['../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','isAuthenticated','update','delete','destroy','multer','util','path','Router'];(function(_0x265d8d,_0x2ef29f){var _0x210a0a=function(_0x5480f9){while(--_0x5480f9){_0x265d8d['push'](_0x265d8d['shift']());}};_0x210a0a(++_0x2ef29f);}(_0x7afa,0x80));var _0xa7af=function(_0x4c1790,_0x3740c6){_0x4c1790=_0x4c1790-0x0;var _0x5e2295=_0x7afa[_0x4c1790];return _0x5e2295;};'use strict';var multer=require(_0xa7af('0x0'));var util=require(_0xa7af('0x1'));var path=require(_0xa7af('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa7af('0x3')]();var auth=require(_0xa7af('0x4'));var interaction=require(_0xa7af('0x5'));var config=require(_0xa7af('0x6'));var controller=require(_0xa7af('0x7'));router['put']('/:id',auth[_0xa7af('0x8')](),controller[_0xa7af('0x9')]);router[_0xa7af('0xa')]('/:id',auth[_0xa7af('0x8')](),controller[_0xa7af('0xb')]);module['exports']=router;
\ No newline at end of file
index 4b155c1..369d9f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0591=['exports','STRING','name','sequelize'];(function(_0x34bf97,_0xc60f9d){var _0x292719=function(_0x31354e){while(--_0x31354e){_0x34bf97['push'](_0x34bf97['shift']());}};_0x292719(++_0xc60f9d);}(_0x0591,0xfb));var _0x1059=function(_0x1d326a,_0x89b53){_0x1d326a=_0x1d326a-0x0;var _0x5804d5=_0x0591[_0x1d326a];return _0x5804d5;};'use strict';var Sequelize=require(_0x1059('0x0'));module[_0x1059('0x1')]={'name':{'type':Sequelize[_0x1059('0x2')],'allowNull':![],'unique':_0x1059('0x3')},'description':{'type':Sequelize[_0x1059('0x2')]}};
\ No newline at end of file
+var _0x7f5e=['sequelize','exports','STRING','name'];(function(_0x30b808,_0xd8130b){var _0x25cec0=function(_0x527929){while(--_0x527929){_0x30b808['push'](_0x30b808['shift']());}};_0x25cec0(++_0xd8130b);}(_0x7f5e,0x114));var _0xe7f5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7f5e[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xe7f5('0x0'));module[_0xe7f5('0x1')]={'name':{'type':Sequelize[_0xe7f5('0x2')],'allowNull':![],'unique':_0xe7f5('0x3')},'description':{'type':Sequelize[_0xe7f5('0x2')]}};
\ No newline at end of file
index 918faf8..10a87dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['https://','attrPath','attrHourFormat','HH:mm:ss','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','offset','limit','json','reject','save','update','then','destroy','get','CustomDashboards','UserProfileResource','error','name','send','Dashboard','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','day','filter','merge','map','type','key','options','count','includeAll','include','findAll','rows','catch','show','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','omit','createdAt','body','updatedAt','iframe','attrs','value'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0xedd9,0xfc));var _0x9edd=function(_0x34f690,_0x4e4e7e){_0x34f690=_0x34f690-0x0;var _0x55700b=_0xedd9[_0x34f690];return _0x55700b;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x9edd('0x0'));var rimraf=require(_0x9edd('0x1'));var zipdir=require(_0x9edd('0x2'));var jsonpatch=require(_0x9edd('0x3'));var rp=require(_0x9edd('0x4'));var moment=require(_0x9edd('0x5'));var BPromise=require(_0x9edd('0x6'));var Mustache=require(_0x9edd('0x7'));var util=require('util');var path=require(_0x9edd('0x8'));var sox=require(_0x9edd('0x9'));var csv=require(_0x9edd('0xa'));var ejs=require(_0x9edd('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0xa'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var qs=require('../../components/parsers/qs');var logger=require(_0x9edd('0x11'))(_0x9edd('0x12'));var utils=require('../../config/utils');var config=require(_0x9edd('0x13'));var db=require(_0x9edd('0x14'))['db'];config['redis']=_[_0x9edd('0x15')](config[_0x9edd('0x16')],{'host':_0x9edd('0x17'),'port':0x18eb});var socket=require(_0x9edd('0x18'))(new Redis(config[_0x9edd('0x16')]));require(_0x9edd('0x19'))[_0x9edd('0x1a')](socket);function respondWithStatusCode(_0xef5498,_0x47eb64){_0x47eb64=_0x47eb64||0xcc;return function(_0x176bfa){if(_0x176bfa){return _0xef5498[_0x9edd('0x1b')](_0x47eb64);}return _0xef5498[_0x9edd('0x1c')](_0x47eb64)[_0x9edd('0x1d')]();};}function respondWithResult(_0x13b6b6,_0x338f3c){_0x338f3c=_0x338f3c||0xc8;return function(_0x1042aa){if(_0x1042aa){return _0x13b6b6[_0x9edd('0x1c')](_0x338f3c)['json'](_0x1042aa);}};}function respondWithFilteredResult(_0x5f5bf4,_0x448996){return function(_0x449cee){if(_0x449cee){var _0x5acf65=_0x449cee['count'],_0x1b54c0=_0x448996[_0x9edd('0x1e')],_0x35f454=_0x448996['offset']+_0x448996[_0x9edd('0x1f')],_0x40ba32;if(_0x35f454>=_0x5acf65){_0x35f454=_0x5acf65;_0x40ba32=0xc8;}else{_0x40ba32=0xce;}_0x5f5bf4[_0x9edd('0x1c')](_0x40ba32);return _0x5f5bf4['set']('Content-Range',_0x1b54c0+'-'+_0x35f454+'/'+_0x5acf65)[_0x9edd('0x20')](_0x449cee);}return null;};}function patchUpdates(_0x50338f){return function(_0x27a95a){try{jsonpatch['apply'](_0x27a95a,_0x50338f,!![]);}catch(_0x535f37){return BPromise[_0x9edd('0x21')](_0x535f37);}return _0x27a95a[_0x9edd('0x22')]();};}function saveUpdates(_0x4fb7bf,_0x5823bc){return function(_0x341d67){if(_0x341d67){return _0x341d67[_0x9edd('0x23')](_0x4fb7bf)[_0x9edd('0x24')](function(_0x542172){return _0x542172;});}return null;};}function removeEntity(_0x3741c8,_0x1dca43){return function(_0x44a6c1){if(_0x44a6c1){return _0x44a6c1[_0x9edd('0x25')]()[_0x9edd('0x24')](function(){var _0x4c75d2=_0x44a6c1[_0x9edd('0x26')]({'plain':!![]});var _0xeaf55a=_0x9edd('0x27');return db[_0x9edd('0x28')][_0x9edd('0x25')]({'where':{'type':_0xeaf55a,'resourceId':_0x4c75d2['id']}})['then'](function(){return _0x44a6c1;});})['then'](function(){_0x3741c8[_0x9edd('0x1c')](0xcc)[_0x9edd('0x1d')]();});}};}function handleEntityNotFound(_0x8d67aa,_0x25e135){return function(_0x3c2227){if(!_0x3c2227){_0x8d67aa['sendStatus'](0x194);}return _0x3c2227;};}function handleError(_0x57a2cc,_0x214d0a){_0x214d0a=_0x214d0a||0x1f4;return function(_0x257a26){logger[_0x9edd('0x29')](_0x257a26['stack']);if(_0x257a26[_0x9edd('0x2a')]){delete _0x257a26[_0x9edd('0x2a')];}_0x57a2cc[_0x9edd('0x1c')](_0x214d0a)[_0x9edd('0x2b')](_0x257a26);};}exports['index']=function(_0x2155a1,_0x3fb556){var _0xbe87e1={},_0x12c1bc={},_0xbbf08f={'count':0x0,'rows':[]};var _0x42e664=db[_0x9edd('0x2c')][_0x9edd('0x2d')];_0x12c1bc[_0x9edd('0x2e')]=_[_0x9edd('0x2f')](_0x42e664);var _0x4fd03f={'dateStart':_0x2155a1[_0x9edd('0x30')][_0x9edd('0x31')],'dateEnd':_0x2155a1[_0x9edd('0x30')][_0x9edd('0x32')]};delete _0x2155a1['query'][_0x9edd('0x31')];delete _0x2155a1[_0x9edd('0x30')][_0x9edd('0x32')];_0x12c1bc['query']=_[_0x9edd('0x2f')](_0x2155a1[_0x9edd('0x30')]);_0x12c1bc[_0x9edd('0x33')]=_[_0x9edd('0x34')](_0x12c1bc[_0x9edd('0x2e')],_0x12c1bc[_0x9edd('0x30')]);_0xbe87e1[_0x9edd('0x35')]=_[_0x9edd('0x34')](_0x12c1bc[_0x9edd('0x2e')],qs[_0x9edd('0x36')](_0x2155a1[_0x9edd('0x30')][_0x9edd('0x36')]));_0xbe87e1[_0x9edd('0x35')]=_0xbe87e1[_0x9edd('0x35')]['length']?_0xbe87e1[_0x9edd('0x35')]:_0x12c1bc['model'];if(!_0x2155a1[_0x9edd('0x30')][_0x9edd('0x37')](_0x9edd('0x38'))){_0xbe87e1[_0x9edd('0x1f')]=qs[_0x9edd('0x1f')](_0x2155a1['query'][_0x9edd('0x1f')]);_0xbe87e1[_0x9edd('0x1e')]=qs[_0x9edd('0x1e')](_0x2155a1[_0x9edd('0x30')][_0x9edd('0x1e')]);}_0xbe87e1[_0x9edd('0x39')]=qs[_0x9edd('0x3a')](_0x2155a1[_0x9edd('0x30')][_0x9edd('0x3a')]);_0xbe87e1[_0x9edd('0x3b')]=qs['filters'](_[_0x9edd('0x3c')](_0x2155a1['query'],_0x12c1bc[_0x9edd('0x33')]));if(_0x4fd03f['dateStart']){if(_0x4fd03f[_0x9edd('0x32')]){_0x4fd03f[_0x9edd('0x32')]=moment(_0x4fd03f[_0x9edd('0x32')])['add'](0x1,_0x9edd('0x3d'));}else{_0x4fd03f[_0x9edd('0x32')]=moment(_0x4fd03f[_0x9edd('0x31')])['add'](0x1,_0x9edd('0x3d'));}_['merge'](_0xbe87e1[_0x9edd('0x3b')],{'createdAt':{'$gte':_0x4fd03f[_0x9edd('0x31')],'$lte':_0x4fd03f['dateEnd']}});}if(_0x2155a1[_0x9edd('0x30')][_0x9edd('0x3e')]){_0xbe87e1[_0x9edd('0x3b')]=_[_0x9edd('0x3f')](_0xbe87e1['where'],{'$or':_[_0x9edd('0x40')](_0x42e664,function(_0x5bbdf8){if(_0x5bbdf8[_0x9edd('0x41')][_0x9edd('0x42')]!=='VIRTUAL'){var _0x318757={};_0x318757[_0x5bbdf8['field']]={'$like':'%'+_0x2155a1['query'][_0x9edd('0x3e')]+'%'};return _0x318757;}})});}_0xbe87e1=_[_0x9edd('0x3f')]({},_0xbe87e1,_0x2155a1[_0x9edd('0x43')]);var _0x3cf92c={'where':_0xbe87e1[_0x9edd('0x3b')]};return db[_0x9edd('0x2c')][_0x9edd('0x44')](_0x3cf92c)[_0x9edd('0x24')](function(_0x18c149){_0xbbf08f[_0x9edd('0x44')]=_0x18c149;if(_0x2155a1[_0x9edd('0x30')][_0x9edd('0x45')]){_0xbe87e1[_0x9edd('0x46')]=[{'all':!![]}];}return db[_0x9edd('0x2c')][_0x9edd('0x47')](_0xbe87e1);})['then'](function(_0x13197d){_0xbbf08f[_0x9edd('0x48')]=_0x13197d;return _0xbbf08f;})[_0x9edd('0x24')](respondWithFilteredResult(_0x3fb556,_0xbe87e1))[_0x9edd('0x49')](handleError(_0x3fb556,null));};exports[_0x9edd('0x4a')]=function(_0x3ecdfd,_0x10d41e){var _0x4e9ad1={'raw':![],'where':{'id':_0x3ecdfd['params']['id']}},_0x4a4656={};_0x4a4656[_0x9edd('0x2e')]=_['keys'](db[_0x9edd('0x2c')][_0x9edd('0x2d')]);_0x4a4656[_0x9edd('0x30')]=_[_0x9edd('0x2f')](_0x3ecdfd[_0x9edd('0x30')]);_0x4a4656['filters']=_[_0x9edd('0x34')](_0x4a4656[_0x9edd('0x2e')],_0x4a4656[_0x9edd('0x30')]);_0x4e9ad1['attributes']=_[_0x9edd('0x34')](_0x4a4656[_0x9edd('0x2e')],qs[_0x9edd('0x36')](_0x3ecdfd[_0x9edd('0x30')][_0x9edd('0x36')]));_0x4e9ad1[_0x9edd('0x35')]=_0x4e9ad1['attributes'][_0x9edd('0x4b')]?_0x4e9ad1[_0x9edd('0x35')]:_0x4a4656['model'];if(_0x3ecdfd[_0x9edd('0x30')][_0x9edd('0x45')]){_0x4e9ad1['include']=[{'all':!![]}];}_0x4e9ad1=_[_0x9edd('0x3f')]({},_0x4e9ad1,_0x3ecdfd[_0x9edd('0x43')]);return db[_0x9edd('0x2c')]['find'](_0x4e9ad1)[_0x9edd('0x24')](handleEntityNotFound(_0x10d41e,null))[_0x9edd('0x24')](respondWithResult(_0x10d41e,null))[_0x9edd('0x49')](handleError(_0x10d41e,null));};exports[_0x9edd('0x4c')]=function(_0x53f6e3,_0x446443){return db[_0x9edd('0x2c')][_0x9edd('0x4c')](_0x53f6e3['body'],{})[_0x9edd('0x24')](function(_0x21f6ce){var _0x57db43=_0x53f6e3[_0x9edd('0x4d')]['get']({'plain':!![]});if(!_0x57db43)throw new Error(_0x9edd('0x4e'));if(_0x57db43[_0x9edd('0x4f')]===_0x9edd('0x4d')){var _0x3fcdf5=_0x21f6ce[_0x9edd('0x26')]({'plain':!![]});var _0x18548e=_0x9edd('0x27');return db[_0x9edd('0x50')][_0x9edd('0x51')]({'where':{'name':_0x18548e,'userProfileId':_0x57db43[_0x9edd('0x52')]},'raw':!![]})[_0x9edd('0x24')](function(_0x5a3b1d){if(_0x5a3b1d&&_0x5a3b1d[_0x9edd('0x53')]===0x0){return db[_0x9edd('0x28')][_0x9edd('0x4c')]({'name':_0x3fcdf5['name'],'resourceId':_0x3fcdf5['id'],'type':_0x5a3b1d[_0x9edd('0x2a')],'sectionId':_0x5a3b1d['id']},{})['then'](function(){return _0x21f6ce;});}else{return _0x21f6ce;}})['catch'](function(_0x54ecfa){logger[_0x9edd('0x29')](_0x9edd('0x54'),_0x54ecfa);throw _0x54ecfa;});}return _0x21f6ce;})[_0x9edd('0x24')](respondWithResult(_0x446443,0xc9))[_0x9edd('0x49')](handleError(_0x446443,null));};exports['clone']=function(_0x56b38b,_0x4e3c3e){var _0x71820f={'raw':![],'where':{'id':_0x56b38b[_0x9edd('0x55')]['id']}},_0x5f666b={};_0x5f666b[_0x9edd('0x2e')]=_[_0x9edd('0x2f')](db[_0x9edd('0x2c')][_0x9edd('0x2d')]);_0x71820f[_0x9edd('0x35')]=_['intersection'](_0x5f666b[_0x9edd('0x2e')],qs['fields'](_0x56b38b[_0x9edd('0x30')][_0x9edd('0x36')]));_0x71820f['attributes']=_0x71820f[_0x9edd('0x35')][_0x9edd('0x4b')]?_0x71820f[_0x9edd('0x35')]:_0x5f666b['model'];if(_0x56b38b[_0x9edd('0x30')][_0x9edd('0x45')]){_0x71820f[_0x9edd('0x46')]=[{'all':!![]}];}_0x71820f=_[_0x9edd('0x3f')]({},_0x71820f,_0x56b38b[_0x9edd('0x43')]);return db[_0x9edd('0x2c')]['find'](_0x71820f)['then'](handleEntityNotFound(_0x4e3c3e,null))[_0x9edd('0x24')](function(_0x54f96c){if(_0x54f96c){var _0x173ec9=_0x54f96c[_0x9edd('0x26')]({'plain':!![]});_0x173ec9=qs[_0x9edd('0x56')](_0x173ec9,['id',_0x9edd('0x57'),'updatedAt']);_0x56b38b[_0x9edd('0x58')]=_['omit'](_0x56b38b[_0x9edd('0x58')],['id',_0x9edd('0x57'),_0x9edd('0x59')]);return db['Dashboard'][_0x9edd('0x4c')](_['merge'](_0x173ec9,_0x56b38b[_0x9edd('0x58')]),{'include':_0x56b38b[_0x9edd('0x30')]['includeAll']?[{'all':!![]}]:undefined})[_0x9edd('0x24')](function(_0x4a72d0){var _0x141137=_0x56b38b[_0x9edd('0x4d')][_0x9edd('0x26')]({'plain':!![]});if(!_0x141137)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x141137[_0x9edd('0x4f')]===_0x9edd('0x4d')){var _0x45c17d=_0x4a72d0[_0x9edd('0x26')]({'plain':!![]});var _0x467512='CustomDashboards';return db['UserProfileSection'][_0x9edd('0x51')]({'where':{'name':_0x467512,'userProfileId':_0x141137[_0x9edd('0x52')]},'raw':!![]})['then'](function(_0x5496e9){if(_0x5496e9&&_0x5496e9['autoAssociation']===0x0){return db[_0x9edd('0x28')]['create']({'name':_0x45c17d['name'],'resourceId':_0x45c17d['id'],'type':_0x5496e9[_0x9edd('0x2a')],'sectionId':_0x5496e9['id']},{})[_0x9edd('0x24')](function(){return _0x4a72d0;});}else{return _0x4a72d0;}})['catch'](function(_0xb9ebeb){logger[_0x9edd('0x29')](_0x9edd('0x54'),_0xb9ebeb);throw _0xb9ebeb;});}return _0x4a72d0;});}})['then'](respondWithResult(_0x4e3c3e,0xc9))[_0x9edd('0x49')](handleError(_0x4e3c3e,null));};exports['update']=function(_0x37b018,_0x18d1a0){if(_0x37b018['body']['id']){delete _0x37b018[_0x9edd('0x58')]['id'];}return db[_0x9edd('0x2c')]['find']({'where':{'id':_0x37b018[_0x9edd('0x55')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x18d1a0,null))[_0x9edd('0x24')](saveUpdates(_0x37b018[_0x9edd('0x58')],null))['then'](respondWithResult(_0x18d1a0,null))[_0x9edd('0x49')](handleError(_0x18d1a0,null));};exports['destroy']=function(_0x1a618c,_0x1a5cdb){return db[_0x9edd('0x2c')]['find']({'where':{'id':_0x1a618c[_0x9edd('0x55')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x1a5cdb,null))[_0x9edd('0x24')](removeEntity(_0x1a5cdb,null))[_0x9edd('0x49')](handleError(_0x1a5cdb,null));};function widgetAttributes(_0x25626a){try{switch(_0x25626a[_0x9edd('0x41')]){case _0x9edd('0x5a'):return[{'name':'attrUrl','value':_0x25626a['attrUrl']||(_0x25626a[_0x9edd('0x5b')]&&_0x25626a[_0x9edd('0x5b')][0x0]?_0x25626a[_0x9edd('0x5b')][0x0][_0x9edd('0x5c')]:undefined)||_0x9edd('0x5d')}];case'custom':return[{'name':_0x9edd('0x5e'),'value':_0x25626a[_0x9edd('0x5e')]||(_0x25626a[_0x9edd('0x5b')]&&_0x25626a['attrs'][0x0]?_0x25626a[_0x9edd('0x5b')][0x0][_0x9edd('0x5c')]:undefined)||''}];case'clock':return[{'name':_0x9edd('0x5f'),'value':_0x25626a[_0x9edd('0x5f')]||(_0x25626a['attrs']&&_0x25626a[_0x9edd('0x5b')][0x0]?_0x25626a[_0x9edd('0x5b')][0x0]['value']:undefined)||_0x9edd('0x60')},{'name':'attrTimezone','value':_0x25626a['attrTimezone']||(_0x25626a[_0x9edd('0x5b')]&&_0x25626a[_0x9edd('0x5b')][0x1]?_0x25626a[_0x9edd('0x5b')][0x1]['value']:undefined)||_0x9edd('0x61')},{'name':_0x9edd('0x62'),'value':_0x25626a['attrFontSize']||(_0x25626a[_0x9edd('0x5b')]&&_0x25626a[_0x9edd('0x5b')][0x2]?_0x25626a[_0x9edd('0x5b')][0x2][_0x9edd('0x5c')]:undefined)||0xc}];case'counter':return[{'name':'attrMetric','value':_0x25626a[_0x9edd('0x63')]||(_0x25626a['attrs']&&_0x25626a[_0x9edd('0x5b')][0x0]?_0x25626a[_0x9edd('0x5b')][0x0][_0x9edd('0x5c')]:undefined)||_0x9edd('0x64')},{'name':_0x9edd('0x65'),'value':_0x25626a[_0x9edd('0x65')]||(_0x25626a[_0x9edd('0x5b')]&&_0x25626a[_0x9edd('0x5b')][0x1]?_0x25626a[_0x9edd('0x5b')][0x1]['value']:undefined)||[]},{'name':_0x9edd('0x62'),'value':_0x25626a[_0x9edd('0x62')]||(_0x25626a[_0x9edd('0x5b')]&&_0x25626a[_0x9edd('0x5b')][0x2]?_0x25626a[_0x9edd('0x5b')][0x2][_0x9edd('0x5c')]:undefined)||0x14}];case _0x9edd('0x66'):case'pie-chart':return[{'name':_0x9edd('0x67'),'value':_0x25626a[_0x9edd('0x67')]||(_0x25626a['attrs']&&_0x25626a[_0x9edd('0x5b')][0x0]?_0x25626a[_0x9edd('0x5b')][0x0]['value']:undefined)||_0x9edd('0x64')},{'name':_0x9edd('0x68'),'value':_0x25626a[_0x9edd('0x68')]||(_0x25626a['attrs']&&_0x25626a[_0x9edd('0x5b')][0x1]?_0x25626a[_0x9edd('0x5b')][0x1][_0x9edd('0x5c')]:undefined)||null},{'name':'attrSerie3','value':_0x25626a['attrSerie3']||(_0x25626a['attrs']&&_0x25626a['attrs'][0x2]?_0x25626a[_0x9edd('0x5b')][0x2][_0x9edd('0x5c')]:undefined)||null},{'name':_0x9edd('0x65'),'value':_0x25626a['attrVoiceQueues']||(_0x25626a['attrs']&&_0x25626a['attrs'][0x3]?_0x25626a[_0x9edd('0x5b')][0x3][_0x9edd('0x5c')]:undefined)||[]}];case _0x9edd('0x69'):return[{'name':_0x9edd('0x6a'),'type':_0x25626a[_0x9edd('0x6b')]||null,'value':_0x25626a[_0x9edd('0x6a')]||(_0x25626a[_0x9edd('0x5b')]&&_0x25626a[_0x9edd('0x5b')][0x0]?_0x25626a[_0x9edd('0x5b')][0x0][_0x9edd('0x5c')]:undefined)||null},{'name':_0x9edd('0x6c'),'value':_0x25626a[_0x9edd('0x6c')]||(_0x25626a['attrs']&&_0x25626a[_0x9edd('0x5b')][0x1]?_0x25626a[_0x9edd('0x5b')][0x1][_0x9edd('0x5c')]:undefined)||0x0}];default:return[];}}catch(_0x159314){logger[_0x9edd('0x29')](_0x9edd('0x6d'),JSON[_0x9edd('0x6e')](_0x159314));return[];}}exports[_0x9edd('0x6f')]=function(_0x4a7889,_0x5ada4e,_0xe02a6){if(_0x4a7889['body']['id']){delete _0x4a7889[_0x9edd('0x58')]['id'];}return db['Dashboard'][_0x9edd('0x51')]({'where':{'id':_0x4a7889[_0x9edd('0x55')]['id']}})['then'](handleEntityNotFound(_0x5ada4e,null))[_0x9edd('0x24')](function(_0x411134){if(_0x411134){_0x4a7889['body'][_0x9edd('0x70')]=_0x411134['id'];_0x4a7889[_0x9edd('0x58')][_0x9edd('0x5b')]=widgetAttributes(_0x4a7889[_0x9edd('0x58')]);return db[_0x9edd('0x71')]['create'](_0x4a7889[_0x9edd('0x58')]);}})[_0x9edd('0x24')](respondWithResult(_0x5ada4e,null))[_0x9edd('0x49')](handleError(_0x5ada4e,null));};exports[_0x9edd('0x72')]=function(_0xe898ec,_0x4b5169,_0x4870aa){var _0x5b8de0={};var _0x50316a={};var _0x514930;var _0x2da088;return db['Dashboard']['findOne']({'where':{'id':_0xe898ec[_0x9edd('0x55')]['id']}})[_0x9edd('0x24')](handleEntityNotFound(_0x4b5169,null))[_0x9edd('0x24')](function(_0x10e427){if(_0x10e427){_0x514930=_0x10e427;_0x50316a[_0x9edd('0x2e')]=_[_0x9edd('0x2f')](db[_0x9edd('0x71')][_0x9edd('0x2d')]);_0x50316a[_0x9edd('0x30')]=_[_0x9edd('0x2f')](_0xe898ec['query']);_0x50316a[_0x9edd('0x33')]=_[_0x9edd('0x34')](_0x50316a[_0x9edd('0x2e')],_0x50316a[_0x9edd('0x30')]);_0x5b8de0[_0x9edd('0x35')]=_[_0x9edd('0x34')](_0x50316a[_0x9edd('0x2e')],qs[_0x9edd('0x36')](_0xe898ec['query']['fields']));_0x5b8de0[_0x9edd('0x35')]=_0x5b8de0[_0x9edd('0x35')][_0x9edd('0x4b')]?_0x5b8de0[_0x9edd('0x35')]:_0x50316a[_0x9edd('0x2e')];_0x5b8de0[_0x9edd('0x39')]=qs[_0x9edd('0x3a')](_0xe898ec[_0x9edd('0x30')][_0x9edd('0x3a')]);_0x5b8de0[_0x9edd('0x3b')]=qs[_0x9edd('0x33')](_[_0x9edd('0x3c')](_0xe898ec[_0x9edd('0x30')],_0x50316a[_0x9edd('0x33')]));if(_0xe898ec['query'][_0x9edd('0x3e')]){_0x5b8de0[_0x9edd('0x3b')]=_['merge'](_0x5b8de0[_0x9edd('0x3b')],{'$or':_[_0x9edd('0x40')](_0x5b8de0[_0x9edd('0x35')],function(_0x2b4d4c){var _0x559503={};_0x559503[_0x2b4d4c]={'$like':'%'+_0xe898ec[_0x9edd('0x30')][_0x9edd('0x3e')]+'%'};return _0x559503;})});}_0x5b8de0=_[_0x9edd('0x3f')]({},_0x5b8de0,_0xe898ec[_0x9edd('0x43')]);return _0x514930[_0x9edd('0x72')](_0x5b8de0);}})['then'](function(_0x2fe939){if(_0x2fe939){_0x2da088=_0x2fe939[_0x9edd('0x4b')];if(!_0xe898ec[_0x9edd('0x30')][_0x9edd('0x37')](_0x9edd('0x38'))){_0x5b8de0['limit']=qs['limit'](_0xe898ec[_0x9edd('0x30')]['limit']);_0x5b8de0[_0x9edd('0x1e')]=qs['offset'](_0xe898ec[_0x9edd('0x30')][_0x9edd('0x1e')]);}return _0x514930[_0x9edd('0x72')](_0x5b8de0);}})[_0x9edd('0x24')](function(_0x2c7245){if(_0x2c7245){return _0x2c7245?{'count':_0x2da088,'rows':_0x2c7245}:null;}})[_0x9edd('0x24')](respondWithResult(_0x4b5169,null))['catch'](handleError(_0x4b5169,null));};
\ No newline at end of file
+var _0xcb91=['query','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','dateStart','add','day','merge','map','type','key','filter','Dashboard','count','includeAll','include','catch','show','params','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','UserProfileSection','userProfileId','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrMetric','total','attrVoiceQueues','attrFontSize','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','sort','getItems','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','lodash','crypto','jsforce','to-csv','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','register','status','end','offset','limit','set','Content-Range','json','save','update','then','CustomDashboards','UserProfileResource','destroy','sendStatus','error','stack','name','send','rawAttributes','keys'];(function(_0x2bb3f6,_0x25fde0){var _0x62b339=function(_0x53e014){while(--_0x53e014){_0x2bb3f6['push'](_0x2bb3f6['shift']());}};_0x62b339(++_0x25fde0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2d61b2,_0x142947){_0x2d61b2=_0x2d61b2-0x0;var _0x12df89=_0xcb91[_0x2d61b2];return _0x12df89;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x1cb9('0x0'));var zipdir=require(_0x1cb9('0x1'));var jsonpatch=require(_0x1cb9('0x2'));var rp=require(_0x1cb9('0x3'));var moment=require('moment');var BPromise=require(_0x1cb9('0x4'));var Mustache=require(_0x1cb9('0x5'));var util=require('util');var path=require(_0x1cb9('0x6'));var sox=require(_0x1cb9('0x7'));var csv=require('to-csv');var ejs=require(_0x1cb9('0x8'));var fs=require('fs');var _=require(_0x1cb9('0x9'));var squel=require('squel');var crypto=require(_0x1cb9('0xa'));var jsforce=require(_0x1cb9('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x1cb9('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1cb9('0xd'));var qs=require(_0x1cb9('0xe'));var logger=require(_0x1cb9('0xf'))(_0x1cb9('0x10'));var utils=require(_0x1cb9('0x11'));var config=require('../../config/environment');var db=require(_0x1cb9('0x12'))['db'];config[_0x1cb9('0x13')]=_[_0x1cb9('0x14')](config[_0x1cb9('0x13')],{'host':_0x1cb9('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./dashboard.socket')[_0x1cb9('0x16')](socket);function respondWithStatusCode(_0x282bc6,_0x384496){_0x384496=_0x384496||0xcc;return function(_0x1c714f){if(_0x1c714f){return _0x282bc6['sendStatus'](_0x384496);}return _0x282bc6[_0x1cb9('0x17')](_0x384496)[_0x1cb9('0x18')]();};}function respondWithResult(_0x1b3cd7,_0x8dfa55){_0x8dfa55=_0x8dfa55||0xc8;return function(_0x3e2d11){if(_0x3e2d11){return _0x1b3cd7['status'](_0x8dfa55)['json'](_0x3e2d11);}};}function respondWithFilteredResult(_0xd446a3,_0x3cc765){return function(_0x3904b7){if(_0x3904b7){var _0x3f1376=_0x3904b7['count'],_0x3e21e0=_0x3cc765['offset'],_0xf22920=_0x3cc765[_0x1cb9('0x19')]+_0x3cc765[_0x1cb9('0x1a')],_0x23d3a9;if(_0xf22920>=_0x3f1376){_0xf22920=_0x3f1376;_0x23d3a9=0xc8;}else{_0x23d3a9=0xce;}_0xd446a3[_0x1cb9('0x17')](_0x23d3a9);return _0xd446a3[_0x1cb9('0x1b')](_0x1cb9('0x1c'),_0x3e21e0+'-'+_0xf22920+'/'+_0x3f1376)[_0x1cb9('0x1d')](_0x3904b7);}return null;};}function patchUpdates(_0x24fa1f){return function(_0x4ac422){try{jsonpatch['apply'](_0x4ac422,_0x24fa1f,!![]);}catch(_0x1a5a72){return BPromise['reject'](_0x1a5a72);}return _0x4ac422[_0x1cb9('0x1e')]();};}function saveUpdates(_0x2265ea,_0x523b26){return function(_0x599275){if(_0x599275){return _0x599275[_0x1cb9('0x1f')](_0x2265ea)[_0x1cb9('0x20')](function(_0x103a63){return _0x103a63;});}return null;};}function removeEntity(_0x4601b8,_0x45b8d3){return function(_0x27db16){if(_0x27db16){return _0x27db16['destroy']()['then'](function(){var _0x6c6f61=_0x27db16['get']({'plain':!![]});var _0x10a419=_0x1cb9('0x21');return db[_0x1cb9('0x22')][_0x1cb9('0x23')]({'where':{'type':_0x10a419,'resourceId':_0x6c6f61['id']}})[_0x1cb9('0x20')](function(){return _0x27db16;});})['then'](function(){_0x4601b8[_0x1cb9('0x17')](0xcc)[_0x1cb9('0x18')]();});}};}function handleEntityNotFound(_0x4c8d76,_0xd6891c){return function(_0x21effa){if(!_0x21effa){_0x4c8d76[_0x1cb9('0x24')](0x194);}return _0x21effa;};}function handleError(_0x1804fd,_0x406821){_0x406821=_0x406821||0x1f4;return function(_0x21d6f5){logger[_0x1cb9('0x25')](_0x21d6f5[_0x1cb9('0x26')]);if(_0x21d6f5[_0x1cb9('0x27')]){delete _0x21d6f5[_0x1cb9('0x27')];}_0x1804fd['status'](_0x406821)[_0x1cb9('0x28')](_0x21d6f5);};}exports['index']=function(_0x110282,_0x4efebc){var _0x278327={},_0x41011c={},_0x3cd7f5={'count':0x0,'rows':[]};var _0x2038aa=db['Dashboard'][_0x1cb9('0x29')];_0x41011c['model']=_[_0x1cb9('0x2a')](_0x2038aa);var _0x336a98={'dateStart':_0x110282[_0x1cb9('0x2b')]['dateStart'],'dateEnd':_0x110282[_0x1cb9('0x2b')]['dateEnd']};delete _0x110282[_0x1cb9('0x2b')]['dateStart'];delete _0x110282[_0x1cb9('0x2b')][_0x1cb9('0x2c')];_0x41011c[_0x1cb9('0x2b')]=_[_0x1cb9('0x2a')](_0x110282['query']);_0x41011c[_0x1cb9('0x2d')]=_[_0x1cb9('0x2e')](_0x41011c[_0x1cb9('0x2f')],_0x41011c[_0x1cb9('0x2b')]);_0x278327[_0x1cb9('0x30')]=_[_0x1cb9('0x2e')](_0x41011c[_0x1cb9('0x2f')],qs[_0x1cb9('0x31')](_0x110282[_0x1cb9('0x2b')][_0x1cb9('0x31')]));_0x278327[_0x1cb9('0x30')]=_0x278327[_0x1cb9('0x30')][_0x1cb9('0x32')]?_0x278327['attributes']:_0x41011c['model'];if(!_0x110282[_0x1cb9('0x2b')][_0x1cb9('0x33')](_0x1cb9('0x34'))){_0x278327[_0x1cb9('0x1a')]=qs[_0x1cb9('0x1a')](_0x110282[_0x1cb9('0x2b')][_0x1cb9('0x1a')]);_0x278327[_0x1cb9('0x19')]=qs['offset'](_0x110282[_0x1cb9('0x2b')][_0x1cb9('0x19')]);}_0x278327[_0x1cb9('0x35')]=qs['sort'](_0x110282[_0x1cb9('0x2b')]['sort']);_0x278327[_0x1cb9('0x36')]=qs['filters'](_[_0x1cb9('0x37')](_0x110282[_0x1cb9('0x2b')],_0x41011c[_0x1cb9('0x2d')]));if(_0x336a98[_0x1cb9('0x38')]){if(_0x336a98[_0x1cb9('0x2c')]){_0x336a98[_0x1cb9('0x2c')]=moment(_0x336a98[_0x1cb9('0x2c')])['add'](0x1,'day');}else{_0x336a98[_0x1cb9('0x2c')]=moment(_0x336a98[_0x1cb9('0x38')])[_0x1cb9('0x39')](0x1,_0x1cb9('0x3a'));}_[_0x1cb9('0x3b')](_0x278327[_0x1cb9('0x36')],{'createdAt':{'$gte':_0x336a98[_0x1cb9('0x38')],'$lte':_0x336a98['dateEnd']}});}if(_0x110282[_0x1cb9('0x2b')]['filter']){_0x278327['where']=_['merge'](_0x278327[_0x1cb9('0x36')],{'$or':_[_0x1cb9('0x3c')](_0x2038aa,function(_0x1bf51c){if(_0x1bf51c[_0x1cb9('0x3d')][_0x1cb9('0x3e')]!=='VIRTUAL'){var _0x2a624f={};_0x2a624f[_0x1bf51c['field']]={'$like':'%'+_0x110282[_0x1cb9('0x2b')][_0x1cb9('0x3f')]+'%'};return _0x2a624f;}})});}_0x278327=_[_0x1cb9('0x3b')]({},_0x278327,_0x110282['options']);var _0x238ff6={'where':_0x278327['where']};return db[_0x1cb9('0x40')][_0x1cb9('0x41')](_0x238ff6)['then'](function(_0x5839aa){_0x3cd7f5[_0x1cb9('0x41')]=_0x5839aa;if(_0x110282[_0x1cb9('0x2b')][_0x1cb9('0x42')]){_0x278327[_0x1cb9('0x43')]=[{'all':!![]}];}return db[_0x1cb9('0x40')]['findAll'](_0x278327);})[_0x1cb9('0x20')](function(_0x5594fc){_0x3cd7f5['rows']=_0x5594fc;return _0x3cd7f5;})['then'](respondWithFilteredResult(_0x4efebc,_0x278327))[_0x1cb9('0x44')](handleError(_0x4efebc,null));};exports[_0x1cb9('0x45')]=function(_0x7405ac,_0x11cea5){var _0x116c05={'raw':![],'where':{'id':_0x7405ac[_0x1cb9('0x46')]['id']}},_0x2a8b7f={};_0x2a8b7f[_0x1cb9('0x2f')]=_[_0x1cb9('0x2a')](db[_0x1cb9('0x40')][_0x1cb9('0x29')]);_0x2a8b7f['query']=_[_0x1cb9('0x2a')](_0x7405ac[_0x1cb9('0x2b')]);_0x2a8b7f[_0x1cb9('0x2d')]=_['intersection'](_0x2a8b7f[_0x1cb9('0x2f')],_0x2a8b7f[_0x1cb9('0x2b')]);_0x116c05[_0x1cb9('0x30')]=_[_0x1cb9('0x2e')](_0x2a8b7f[_0x1cb9('0x2f')],qs['fields'](_0x7405ac[_0x1cb9('0x2b')]['fields']));_0x116c05[_0x1cb9('0x30')]=_0x116c05['attributes'][_0x1cb9('0x32')]?_0x116c05[_0x1cb9('0x30')]:_0x2a8b7f[_0x1cb9('0x2f')];if(_0x7405ac[_0x1cb9('0x2b')]['includeAll']){_0x116c05[_0x1cb9('0x43')]=[{'all':!![]}];}_0x116c05=_[_0x1cb9('0x3b')]({},_0x116c05,_0x7405ac[_0x1cb9('0x47')]);return db[_0x1cb9('0x40')][_0x1cb9('0x48')](_0x116c05)[_0x1cb9('0x20')](handleEntityNotFound(_0x11cea5,null))[_0x1cb9('0x20')](respondWithResult(_0x11cea5,null))[_0x1cb9('0x44')](handleError(_0x11cea5,null));};exports[_0x1cb9('0x49')]=function(_0x17f10e,_0x48dd4a){return db['Dashboard'][_0x1cb9('0x49')](_0x17f10e[_0x1cb9('0x4a')],{})[_0x1cb9('0x20')](function(_0x1e073d){var _0x20b253=_0x17f10e[_0x1cb9('0x4b')][_0x1cb9('0x4c')]({'plain':!![]});if(!_0x20b253)throw new Error(_0x1cb9('0x4d'));if(_0x20b253[_0x1cb9('0x4e')]===_0x1cb9('0x4b')){var _0x4a4b87=_0x1e073d[_0x1cb9('0x4c')]({'plain':!![]});var _0x5e773d=_0x1cb9('0x21');return db['UserProfileSection'][_0x1cb9('0x48')]({'where':{'name':_0x5e773d,'userProfileId':_0x20b253['userProfileId']},'raw':!![]})['then'](function(_0x44e918){if(_0x44e918&&_0x44e918[_0x1cb9('0x4f')]===0x0){return db[_0x1cb9('0x22')]['create']({'name':_0x4a4b87[_0x1cb9('0x27')],'resourceId':_0x4a4b87['id'],'type':_0x44e918[_0x1cb9('0x27')],'sectionId':_0x44e918['id']},{})['then'](function(){return _0x1e073d;});}else{return _0x1e073d;}})['catch'](function(_0x398d9d){logger[_0x1cb9('0x25')](_0x1cb9('0x50'),_0x398d9d);throw _0x398d9d;});}return _0x1e073d;})[_0x1cb9('0x20')](respondWithResult(_0x48dd4a,0xc9))[_0x1cb9('0x44')](handleError(_0x48dd4a,null));};exports[_0x1cb9('0x51')]=function(_0x17ce94,_0x5912f9){var _0x345ddd={'raw':![],'where':{'id':_0x17ce94[_0x1cb9('0x46')]['id']}},_0x2607c7={};_0x2607c7['model']=_[_0x1cb9('0x2a')](db[_0x1cb9('0x40')][_0x1cb9('0x29')]);_0x345ddd[_0x1cb9('0x30')]=_[_0x1cb9('0x2e')](_0x2607c7[_0x1cb9('0x2f')],qs['fields'](_0x17ce94[_0x1cb9('0x2b')][_0x1cb9('0x31')]));_0x345ddd[_0x1cb9('0x30')]=_0x345ddd[_0x1cb9('0x30')][_0x1cb9('0x32')]?_0x345ddd[_0x1cb9('0x30')]:_0x2607c7[_0x1cb9('0x2f')];if(_0x17ce94[_0x1cb9('0x2b')][_0x1cb9('0x42')]){_0x345ddd[_0x1cb9('0x43')]=[{'all':!![]}];}_0x345ddd=_[_0x1cb9('0x3b')]({},_0x345ddd,_0x17ce94['options']);return db[_0x1cb9('0x40')][_0x1cb9('0x48')](_0x345ddd)[_0x1cb9('0x20')](handleEntityNotFound(_0x5912f9,null))[_0x1cb9('0x20')](function(_0x4fc66b){if(_0x4fc66b){var _0x4a9cf8=_0x4fc66b[_0x1cb9('0x4c')]({'plain':!![]});_0x4a9cf8=qs[_0x1cb9('0x52')](_0x4a9cf8,['id',_0x1cb9('0x53'),_0x1cb9('0x54')]);_0x17ce94[_0x1cb9('0x4a')]=_[_0x1cb9('0x52')](_0x17ce94[_0x1cb9('0x4a')],['id',_0x1cb9('0x53'),'updatedAt']);return db['Dashboard'][_0x1cb9('0x49')](_['merge'](_0x4a9cf8,_0x17ce94['body']),{'include':_0x17ce94['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x455c40){var _0x3de895=_0x17ce94[_0x1cb9('0x4b')][_0x1cb9('0x4c')]({'plain':!![]});if(!_0x3de895)throw new Error(_0x1cb9('0x4d'));if(_0x3de895[_0x1cb9('0x4e')]==='user'){var _0x27d7ef=_0x455c40[_0x1cb9('0x4c')]({'plain':!![]});var _0x5a72c8='CustomDashboards';return db[_0x1cb9('0x55')][_0x1cb9('0x48')]({'where':{'name':_0x5a72c8,'userProfileId':_0x3de895[_0x1cb9('0x56')]},'raw':!![]})[_0x1cb9('0x20')](function(_0x13ff8b){if(_0x13ff8b&&_0x13ff8b['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x27d7ef[_0x1cb9('0x27')],'resourceId':_0x27d7ef['id'],'type':_0x13ff8b[_0x1cb9('0x27')],'sectionId':_0x13ff8b['id']},{})[_0x1cb9('0x20')](function(){return _0x455c40;});}else{return _0x455c40;}})[_0x1cb9('0x44')](function(_0x349f33){logger['error'](_0x1cb9('0x50'),_0x349f33);throw _0x349f33;});}return _0x455c40;});}})[_0x1cb9('0x20')](respondWithResult(_0x5912f9,0xc9))['catch'](handleError(_0x5912f9,null));};exports['update']=function(_0x1d914d,_0x49c03a){if(_0x1d914d[_0x1cb9('0x4a')]['id']){delete _0x1d914d[_0x1cb9('0x4a')]['id'];}return db[_0x1cb9('0x40')][_0x1cb9('0x48')]({'where':{'id':_0x1d914d[_0x1cb9('0x46')]['id']}})[_0x1cb9('0x20')](handleEntityNotFound(_0x49c03a,null))['then'](saveUpdates(_0x1d914d[_0x1cb9('0x4a')],null))[_0x1cb9('0x20')](respondWithResult(_0x49c03a,null))[_0x1cb9('0x44')](handleError(_0x49c03a,null));};exports[_0x1cb9('0x23')]=function(_0x5b5f0d,_0x520d98){return db[_0x1cb9('0x40')][_0x1cb9('0x48')]({'where':{'id':_0x5b5f0d[_0x1cb9('0x46')]['id']}})[_0x1cb9('0x20')](handleEntityNotFound(_0x520d98,null))[_0x1cb9('0x20')](removeEntity(_0x520d98,null))[_0x1cb9('0x44')](handleError(_0x520d98,null));};function widgetAttributes(_0x4f8756){try{switch(_0x4f8756[_0x1cb9('0x3d')]){case'iframe':return[{'name':_0x1cb9('0x57'),'value':_0x4f8756[_0x1cb9('0x57')]||(_0x4f8756['attrs']&&_0x4f8756[_0x1cb9('0x58')][0x0]?_0x4f8756[_0x1cb9('0x58')][0x0][_0x1cb9('0x59')]:undefined)||'https://'}];case _0x1cb9('0x5a'):return[{'name':_0x1cb9('0x5b'),'value':_0x4f8756[_0x1cb9('0x5b')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x0]?_0x4f8756[_0x1cb9('0x58')][0x0]['value']:undefined)||''}];case _0x1cb9('0x5c'):return[{'name':_0x1cb9('0x5d'),'value':_0x4f8756[_0x1cb9('0x5d')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x0]?_0x4f8756[_0x1cb9('0x58')][0x0][_0x1cb9('0x59')]:undefined)||_0x1cb9('0x5e')},{'name':'attrTimezone','value':_0x4f8756[_0x1cb9('0x5f')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756['attrs'][0x1]?_0x4f8756[_0x1cb9('0x58')][0x1]['value']:undefined)||_0x1cb9('0x60')},{'name':'attrFontSize','value':_0x4f8756['attrFontSize']||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x2]?_0x4f8756['attrs'][0x2][_0x1cb9('0x59')]:undefined)||0xc}];case'counter':return[{'name':_0x1cb9('0x61'),'value':_0x4f8756[_0x1cb9('0x61')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x0]?_0x4f8756['attrs'][0x0][_0x1cb9('0x59')]:undefined)||_0x1cb9('0x62')},{'name':_0x1cb9('0x63'),'value':_0x4f8756[_0x1cb9('0x63')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x1]?_0x4f8756['attrs'][0x1][_0x1cb9('0x59')]:undefined)||[]},{'name':_0x1cb9('0x64'),'value':_0x4f8756[_0x1cb9('0x64')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x2]?_0x4f8756[_0x1cb9('0x58')][0x2]['value']:undefined)||0x14}];case _0x1cb9('0x65'):case _0x1cb9('0x66'):return[{'name':'attrSerie1','value':_0x4f8756[_0x1cb9('0x67')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x0]?_0x4f8756[_0x1cb9('0x58')][0x0][_0x1cb9('0x59')]:undefined)||_0x1cb9('0x62')},{'name':_0x1cb9('0x68'),'value':_0x4f8756['attrSerie2']||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756['attrs'][0x1]?_0x4f8756[_0x1cb9('0x58')][0x1][_0x1cb9('0x59')]:undefined)||null},{'name':'attrSerie3','value':_0x4f8756[_0x1cb9('0x69')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x2]?_0x4f8756[_0x1cb9('0x58')][0x2]['value']:undefined)||null},{'name':_0x1cb9('0x63'),'value':_0x4f8756[_0x1cb9('0x63')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756['attrs'][0x3]?_0x4f8756[_0x1cb9('0x58')][0x3][_0x1cb9('0x59')]:undefined)||[]}];case _0x1cb9('0x6a'):return[{'name':_0x1cb9('0x6b'),'type':_0x4f8756[_0x1cb9('0x6c')]||null,'value':_0x4f8756[_0x1cb9('0x6b')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756['attrs'][0x0]?_0x4f8756[_0x1cb9('0x58')][0x0]['value']:undefined)||null},{'name':_0x1cb9('0x6d'),'value':_0x4f8756[_0x1cb9('0x6d')]||(_0x4f8756[_0x1cb9('0x58')]&&_0x4f8756[_0x1cb9('0x58')][0x1]?_0x4f8756['attrs'][0x1][_0x1cb9('0x59')]:undefined)||0x0}];default:return[];}}catch(_0x89d19b){logger['error'](_0x1cb9('0x6e'),JSON[_0x1cb9('0x6f')](_0x89d19b));return[];}}exports[_0x1cb9('0x70')]=function(_0x27532a,_0x453fa3,_0x52a3f1){if(_0x27532a['body']['id']){delete _0x27532a['body']['id'];}return db['Dashboard'][_0x1cb9('0x48')]({'where':{'id':_0x27532a[_0x1cb9('0x46')]['id']}})[_0x1cb9('0x20')](handleEntityNotFound(_0x453fa3,null))[_0x1cb9('0x20')](function(_0x3534b6){if(_0x3534b6){_0x27532a[_0x1cb9('0x4a')][_0x1cb9('0x71')]=_0x3534b6['id'];_0x27532a[_0x1cb9('0x4a')]['attrs']=widgetAttributes(_0x27532a[_0x1cb9('0x4a')]);return db[_0x1cb9('0x72')][_0x1cb9('0x49')](_0x27532a['body']);}})[_0x1cb9('0x20')](respondWithResult(_0x453fa3,null))[_0x1cb9('0x44')](handleError(_0x453fa3,null));};exports['getItems']=function(_0x287441,_0x31cc7c,_0x887adc){var _0x466dc7={};var _0x5cb5e5={};var _0x2c0416;var _0x282ffa;return db['Dashboard']['findOne']({'where':{'id':_0x287441[_0x1cb9('0x46')]['id']}})[_0x1cb9('0x20')](handleEntityNotFound(_0x31cc7c,null))['then'](function(_0x4e45f8){if(_0x4e45f8){_0x2c0416=_0x4e45f8;_0x5cb5e5[_0x1cb9('0x2f')]=_[_0x1cb9('0x2a')](db['DashboardItem']['rawAttributes']);_0x5cb5e5[_0x1cb9('0x2b')]=_['keys'](_0x287441['query']);_0x5cb5e5['filters']=_[_0x1cb9('0x2e')](_0x5cb5e5['model'],_0x5cb5e5[_0x1cb9('0x2b')]);_0x466dc7[_0x1cb9('0x30')]=_[_0x1cb9('0x2e')](_0x5cb5e5['model'],qs[_0x1cb9('0x31')](_0x287441[_0x1cb9('0x2b')][_0x1cb9('0x31')]));_0x466dc7['attributes']=_0x466dc7[_0x1cb9('0x30')][_0x1cb9('0x32')]?_0x466dc7[_0x1cb9('0x30')]:_0x5cb5e5[_0x1cb9('0x2f')];_0x466dc7[_0x1cb9('0x35')]=qs['sort'](_0x287441[_0x1cb9('0x2b')][_0x1cb9('0x73')]);_0x466dc7[_0x1cb9('0x36')]=qs['filters'](_[_0x1cb9('0x37')](_0x287441[_0x1cb9('0x2b')],_0x5cb5e5[_0x1cb9('0x2d')]));if(_0x287441[_0x1cb9('0x2b')][_0x1cb9('0x3f')]){_0x466dc7['where']=_[_0x1cb9('0x3b')](_0x466dc7[_0x1cb9('0x36')],{'$or':_[_0x1cb9('0x3c')](_0x466dc7[_0x1cb9('0x30')],function(_0x2f19e5){var _0x1768b8={};_0x1768b8[_0x2f19e5]={'$like':'%'+_0x287441[_0x1cb9('0x2b')][_0x1cb9('0x3f')]+'%'};return _0x1768b8;})});}_0x466dc7=_[_0x1cb9('0x3b')]({},_0x466dc7,_0x287441[_0x1cb9('0x47')]);return _0x2c0416[_0x1cb9('0x74')](_0x466dc7);}})[_0x1cb9('0x20')](function(_0x2f334c){if(_0x2f334c){_0x282ffa=_0x2f334c[_0x1cb9('0x32')];if(!_0x287441[_0x1cb9('0x2b')][_0x1cb9('0x33')](_0x1cb9('0x34'))){_0x466dc7[_0x1cb9('0x1a')]=qs['limit'](_0x287441['query'][_0x1cb9('0x1a')]);_0x466dc7[_0x1cb9('0x19')]=qs[_0x1cb9('0x19')](_0x287441[_0x1cb9('0x2b')][_0x1cb9('0x19')]);}return _0x2c0416[_0x1cb9('0x74')](_0x466dc7);}})[_0x1cb9('0x20')](function(_0x56251d){if(_0x56251d){return _0x56251d?{'count':_0x282ffa,'rows':_0x56251d}:null;}})['then'](respondWithResult(_0x31cc7c,null))[_0x1cb9('0x44')](handleError(_0x31cc7c,null));};
\ No newline at end of file
index 4f75597..00d813c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed3e=['update','emit','hasOwnProperty','exports','events','Dashboard','save'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xed3e,0x1c4));var _0xeed3=function(_0x45a8ab,_0x2cfb0f){_0x45a8ab=_0x45a8ab-0x0;var _0x51bc17=_0xed3e[_0x45a8ab];return _0x51bc17;};'use strict';var EventEmitter=require(_0xeed3('0x0'));var Dashboard=require('../../mysqldb')['db'][_0xeed3('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xeed3('0x2'),'afterUpdate':_0xeed3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x49ac50){return function(_0x3a21ce,_0x312855,_0x515b32){DashboardEvents[_0xeed3('0x4')](_0x49ac50+':'+_0x3a21ce['id'],_0x3a21ce);DashboardEvents[_0xeed3('0x4')](_0x49ac50,_0x3a21ce);_0x515b32(null);};}for(var e in events){if(events[_0xeed3('0x5')](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0xeed3('0x6')]=DashboardEvents;
\ No newline at end of file
+var _0xa65e=['hook','exports','../../mysqldb','Dashboard','save','update','remove','emit','hasOwnProperty'];(function(_0x27d513,_0x3123fc){var _0xd370b9=function(_0xfe61f2){while(--_0xfe61f2){_0x27d513['push'](_0x27d513['shift']());}};_0xd370b9(++_0x3123fc);}(_0xa65e,0xd1));var _0xea65=function(_0x27e811,_0x20137c){_0x27e811=_0x27e811-0x0;var _0x1627fa=_0xa65e[_0x27e811];return _0x1627fa;};'use strict';var EventEmitter=require('events');var Dashboard=require(_0xea65('0x0'))['db'][_0xea65('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xea65('0x2'),'afterUpdate':_0xea65('0x3'),'afterDestroy':_0xea65('0x4')};function emitEvent(_0x234b9d){return function(_0x1af138,_0x4c89d9,_0x36337e){DashboardEvents[_0xea65('0x5')](_0x234b9d+':'+_0x1af138['id'],_0x1af138);DashboardEvents[_0xea65('0x5')](_0x234b9d,_0x1af138);_0x36337e(null);};}for(var e in events){if(events[_0xea65('0x6')](e)){var event=events[e];Dashboard[_0xea65('0x7')](e,emitEvent(event));}}module[_0xea65('0x8')]=DashboardEvents;
\ No newline at end of file
index 01b64f2..2753249 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c8e=['dashboards','lodash','util','moment','bluebird','request-promise','exports','define'];(function(_0x4cb272,_0x52c0e9){var _0x57b4aa=function(_0x1efefb){while(--_0x1efefb){_0x4cb272['push'](_0x4cb272['shift']());}};_0x57b4aa(++_0x52c0e9);}(_0x3c8e,0x89));var _0xe3c8=function(_0x244bc7,_0x33b2b3){_0x244bc7=_0x244bc7-0x0;var _0x39f92c=_0x3c8e[_0x244bc7];return _0x39f92c;};'use strict';var _=require(_0xe3c8('0x0'));var util=require(_0xe3c8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe3c8('0x2'));var BPromise=require(_0xe3c8('0x3'));var rp=require(_0xe3c8('0x4'));var attributes=require('./dashboard.attributes');module[_0xe3c8('0x5')]=function(_0x21efc9,_0xbd43ef){return _0x21efc9[_0xe3c8('0x6')]('Dashboard',attributes,{'tableName':_0xe3c8('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ccd=['define','Dashboard','dashboards','lodash','../../config/logger','api','request-promise','exports'];(function(_0x51dc25,_0x3824ab){var _0x2efbc4=function(_0x4454dd){while(--_0x4454dd){_0x51dc25['push'](_0x51dc25['shift']());}};_0x2efbc4(++_0x3824ab);}(_0x9ccd,0x1a3));var _0xd9cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ccd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd9cc('0x0'));var util=require('util');var logger=require(_0xd9cc('0x1'))(_0xd9cc('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd9cc('0x3'));var attributes=require('./dashboard.attributes');module[_0xd9cc('0x4')]=function(_0x296228,_0x425ab8){return _0x296228[_0xd9cc('0x5')](_0xd9cc('0x6'),attributes,{'tableName':_0xd9cc('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index da9e923..546b3fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfbf=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x2d1067,_0x84fa8c){var _0x4ca52f=function(_0x2c18fe){while(--_0x2c18fe){_0x2d1067['push'](_0x2d1067['shift']());}};_0x4ca52f(++_0x84fa8c);}(_0xcfbf,0x11c));var _0xfcfb=function(_0x9ba9eb,_0x5f0375){_0x9ba9eb=_0x9ba9eb-0x0;var _0x3c452a=_0xcfbf[_0x9ba9eb];return _0x3c452a;};'use strict';var _=require(_0xfcfb('0x0'));var util=require(_0xfcfb('0x1'));var moment=require(_0xfcfb('0x2'));var BPromise=require(_0xfcfb('0x3'));var rs=require(_0xfcfb('0x4'));var fs=require('fs');var Redis=require(_0xfcfb('0x5'));var db=require(_0xfcfb('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xfcfb('0x7'))(_0xfcfb('0x8'));var config=require(_0xfcfb('0x9'));var jayson=require(_0xfcfb('0xa'));var client=jayson[_0xfcfb('0xb')][_0xfcfb('0xc')]({'port':0x232a});config[_0xfcfb('0xd')]=_[_0xfcfb('0xe')](config['redis'],{'host':_0xfcfb('0xf'),'port':0x18eb});var socket=require(_0xfcfb('0x10'))(new Redis(config[_0xfcfb('0xd')]));require(_0xfcfb('0x11'))[_0xfcfb('0x12')](socket);function respondWithRpcPromise(_0x455c47,_0x443c90,_0x43a06d){return new BPromise(function(_0x11eeb4,_0x5a78f9){return client[_0xfcfb('0x13')](_0x455c47,_0x43a06d)[_0xfcfb('0x14')](function(_0x252b8f){logger['info'](_0xfcfb('0x15'),_0x443c90,_0xfcfb('0x16'));logger['debug'](_0xfcfb('0x17'),_0x443c90,_0xfcfb('0x16'),JSON[_0xfcfb('0x18')](_0x252b8f));if(_0x252b8f[_0xfcfb('0x19')]){if(_0x252b8f[_0xfcfb('0x19')]['code']===0x1f4){logger[_0xfcfb('0x19')](_0xfcfb('0x15'),_0x443c90,_0x252b8f[_0xfcfb('0x19')][_0xfcfb('0x1a')]);return _0x5a78f9(_0x252b8f[_0xfcfb('0x19')][_0xfcfb('0x1a')]);}logger[_0xfcfb('0x19')](_0xfcfb('0x15'),_0x443c90,_0x252b8f[_0xfcfb('0x19')][_0xfcfb('0x1a')]);return _0x11eeb4(_0x252b8f[_0xfcfb('0x19')][_0xfcfb('0x1a')]);}else{logger[_0xfcfb('0x1b')](_0xfcfb('0x15'),_0x443c90,_0xfcfb('0x16'));_0x11eeb4(_0x252b8f['result'][_0xfcfb('0x1a')]);}})[_0xfcfb('0x1c')](function(_0x19002f){logger['error']('Dashboard,\x20%s,\x20%s',_0x443c90,_0x19002f);_0x5a78f9(_0x19002f);});});}
\ No newline at end of file
+var _0xdf71=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','then','info','Dashboard,\x20%s,\x20%s','debug','Dashboard,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xdf71,0x6f));var _0x1df7=function(_0x7f27a0,_0x15d0e0){_0x7f27a0=_0x7f27a0-0x0;var _0x6f8f3b=_0xdf71[_0x7f27a0];return _0x6f8f3b;};'use strict';var _=require(_0x1df7('0x0'));var util=require(_0x1df7('0x1'));var moment=require(_0x1df7('0x2'));var BPromise=require(_0x1df7('0x3'));var rs=require(_0x1df7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1df7('0x5'))['db'];var utils=require(_0x1df7('0x6'));var logger=require(_0x1df7('0x7'))(_0x1df7('0x8'));var config=require(_0x1df7('0x9'));var jayson=require(_0x1df7('0xa'));var client=jayson[_0x1df7('0xb')][_0x1df7('0xc')]({'port':0x232a});config[_0x1df7('0xd')]=_[_0x1df7('0xe')](config['redis'],{'host':_0x1df7('0xf'),'port':0x18eb});var socket=require(_0x1df7('0x10'))(new Redis(config[_0x1df7('0xd')]));require(_0x1df7('0x11'))['register'](socket);function respondWithRpcPromise(_0x59e2e4,_0x590a00,_0x2b42a7){return new BPromise(function(_0x409994,_0x5e3d68){return client['request'](_0x59e2e4,_0x2b42a7)[_0x1df7('0x12')](function(_0x35eabb){logger[_0x1df7('0x13')](_0x1df7('0x14'),_0x590a00,'request\x20sent');logger[_0x1df7('0x15')](_0x1df7('0x16'),_0x590a00,_0x1df7('0x17'),JSON[_0x1df7('0x18')](_0x35eabb));if(_0x35eabb['error']){if(_0x35eabb['error']['code']===0x1f4){logger[_0x1df7('0x19')](_0x1df7('0x14'),_0x590a00,_0x35eabb[_0x1df7('0x19')][_0x1df7('0x1a')]);return _0x5e3d68(_0x35eabb[_0x1df7('0x19')][_0x1df7('0x1a')]);}logger[_0x1df7('0x19')](_0x1df7('0x14'),_0x590a00,_0x35eabb['error'][_0x1df7('0x1a')]);return _0x409994(_0x35eabb['error']['message']);}else{logger[_0x1df7('0x13')](_0x1df7('0x14'),_0x590a00,'request\x20sent');_0x409994(_0x35eabb[_0x1df7('0x1b')][_0x1df7('0x1a')]);}})[_0x1df7('0x1c')](function(_0x1c1f38){logger[_0x1df7('0x19')](_0x1df7('0x14'),_0x590a00,_0x1c1f38);_0x5e3d68(_0x1c1f38);});});}
\ No newline at end of file
index dd9b157..ee3782b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f10=['remove','emit','register','length','dashboard:','./dashboard.events','save'];(function(_0x38a4ce,_0x1ac37c){var _0x29fccf=function(_0x5a5cc3){while(--_0x5a5cc3){_0x38a4ce['push'](_0x38a4ce['shift']());}};_0x29fccf(++_0x1ac37c);}(_0x0f10,0x1be));var _0x00f1=function(_0x252352,_0x13d52d){_0x252352=_0x252352-0x0;var _0x3ecb33=_0x0f10[_0x252352];return _0x3ecb33;};'use strict';var DashboardEvents=require(_0x00f1('0x0'));var events=[_0x00f1('0x1'),_0x00f1('0x2'),'update'];function createListener(_0x209e61,_0x33048a){return function(_0x2edb66){_0x33048a[_0x00f1('0x3')](_0x209e61,_0x2edb66);};}function removeListener(_0x877bdb,_0x36d0d2){return function(){DashboardEvents['removeListener'](_0x877bdb,_0x36d0d2);};}exports[_0x00f1('0x4')]=function(_0x2f51b5){for(var _0x1db60a=0x0,_0x1049d0=events[_0x00f1('0x5')];_0x1db60a<_0x1049d0;_0x1db60a++){var _0x54a6cb=events[_0x1db60a];var _0x136968=createListener(_0x00f1('0x6')+_0x54a6cb,_0x2f51b5);DashboardEvents['on'](_0x54a6cb,_0x136968);}};
\ No newline at end of file
+var _0xcebd=['./dashboard.events','save','remove','update','emit','removeListener','register'];(function(_0x51a7d5,_0x468b4b){var _0x51d1f8=function(_0x1f1d6d){while(--_0x1f1d6d){_0x51a7d5['push'](_0x51a7d5['shift']());}};_0x51d1f8(++_0x468b4b);}(_0xcebd,0x181));var _0xdceb=function(_0x1aa4a0,_0x348937){_0x1aa4a0=_0x1aa4a0-0x0;var _0x7cf8a5=_0xcebd[_0x1aa4a0];return _0x7cf8a5;};'use strict';var DashboardEvents=require(_0xdceb('0x0'));var events=[_0xdceb('0x1'),_0xdceb('0x2'),_0xdceb('0x3')];function createListener(_0x47d339,_0x515f4c){return function(_0x5a3c48){_0x515f4c[_0xdceb('0x4')](_0x47d339,_0x5a3c48);};}function removeListener(_0x116a7d,_0x5075e2){return function(){DashboardEvents[_0xdceb('0x5')](_0x116a7d,_0x5075e2);};}exports[_0xdceb('0x6')]=function(_0xf56a83){for(var _0x22700c=0x0,_0x4f79d5=events['length'];_0x22700c<_0x4f79d5;_0x22700c++){var _0x157898=events[_0x22700c];var _0x47ecff=createListener('dashboard:'+_0x157898,_0xf56a83);DashboardEvents['on'](_0x157898,_0x47ecff);}};
\ No newline at end of file
index 5a40874..5020ec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51a=['show','create','/:id/clone','clone','post','/:id/items','addItem','put','update','destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd51a,0x1ac));var _0xad51=function(_0x294f41,_0x4609ed){_0x294f41=_0x294f41-0x0;var _0xe90b47=_0xd51a[_0x294f41];return _0xe90b47;};'use strict';var multer=require('multer');var util=require(_0xad51('0x0'));var path=require(_0xad51('0x1'));var timeout=require(_0xad51('0x2'));var express=require(_0xad51('0x3'));var router=express[_0xad51('0x4')]();var auth=require(_0xad51('0x5'));var interaction=require(_0xad51('0x6'));var config=require(_0xad51('0x7'));var controller=require('./dashboard.controller');router[_0xad51('0x8')]('/',auth['isAuthenticated'](),controller[_0xad51('0x9')]);router[_0xad51('0x8')](_0xad51('0xa'),auth[_0xad51('0xb')](),controller[_0xad51('0xc')]);router[_0xad51('0x8')]('/:id/items',auth[_0xad51('0xb')](),controller['getItems']);router['post']('/',auth[_0xad51('0xb')](),controller[_0xad51('0xd')]);router['post'](_0xad51('0xe'),auth[_0xad51('0xb')](),controller[_0xad51('0xf')]);router[_0xad51('0x10')](_0xad51('0x11'),auth[_0xad51('0xb')](),controller[_0xad51('0x12')]);router[_0xad51('0x13')](_0xad51('0xa'),auth[_0xad51('0xb')](),controller[_0xad51('0x14')]);router['delete'](_0xad51('0xa'),auth[_0xad51('0xb')](),controller[_0xad51('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xf061=['multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/items','getItems','post','create','clone','put','update','destroy','exports'];(function(_0x4cb095,_0x58da07){var _0x2b565d=function(_0x4d41b3){while(--_0x4d41b3){_0x4cb095['push'](_0x4cb095['shift']());}};_0x2b565d(++_0x58da07);}(_0xf061,0x7e));var _0x1f06=function(_0x1c2cd1,_0x19868b){_0x1c2cd1=_0x1c2cd1-0x0;var _0x573fd0=_0xf061[_0x1c2cd1];return _0x573fd0;};'use strict';var multer=require(_0x1f06('0x0'));var util=require(_0x1f06('0x1'));var path=require(_0x1f06('0x2'));var timeout=require(_0x1f06('0x3'));var express=require(_0x1f06('0x4'));var router=express[_0x1f06('0x5')]();var auth=require('../../components/auth/service');var interaction=require(_0x1f06('0x6'));var config=require(_0x1f06('0x7'));var controller=require('./dashboard.controller');router[_0x1f06('0x8')]('/',auth[_0x1f06('0x9')](),controller[_0x1f06('0xa')]);router[_0x1f06('0x8')](_0x1f06('0xb'),auth[_0x1f06('0x9')](),controller['show']);router[_0x1f06('0x8')](_0x1f06('0xc'),auth[_0x1f06('0x9')](),controller[_0x1f06('0xd')]);router[_0x1f06('0xe')]('/',auth[_0x1f06('0x9')](),controller[_0x1f06('0xf')]);router[_0x1f06('0xe')]('/:id/clone',auth[_0x1f06('0x9')](),controller[_0x1f06('0x10')]);router[_0x1f06('0xe')](_0x1f06('0xc'),auth[_0x1f06('0x9')](),controller['addItem']);router[_0x1f06('0x11')](_0x1f06('0xb'),auth[_0x1f06('0x9')](),controller[_0x1f06('0x12')]);router['delete'](_0x1f06('0xb'),auth['isAuthenticated'](),controller[_0x1f06('0x13')]);module[_0x1f06('0x14')]=router;
\ No newline at end of file
index 293d294..29ddd9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c54=['#ffffff','sequelize','squel','lodash','exports','STRING','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0x8c54,0x187));var _0x48c5=function(_0x5483ba,_0x9b4f3a){_0x5483ba=_0x5483ba-0x0;var _0x5cfd75=_0x8c54[_0x5483ba];return _0x5cfd75;};'use strict';var Sequelize=require(_0x48c5('0x0'));var squel=require(_0x48c5('0x1'));var _=require(_0x48c5('0x2'));module[_0x48c5('0x3')]={'title':{'type':Sequelize[_0x48c5('0x4')],'allowNull':![]},'type':{'type':Sequelize[_0x48c5('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x48c5('0x5')),'get':function(){try{return JSON[_0x48c5('0x6')](this[_0x48c5('0x7')](_0x48c5('0x8')));}catch(_0x804e48){return[];}},'set':function(_0x45958c){try{this[_0x48c5('0x9')](_0x48c5('0x8'),JSON[_0x48c5('0xa')](_0x45958c));}catch(_0x3143e4){this[_0x48c5('0x9')](_0x48c5('0x8'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x48c5('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x48c5('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x48c5('0xb')]},'col':{'type':Sequelize[_0x48c5('0xb')]},'background':{'type':Sequelize[_0x48c5('0x4')],'allowNull':![],'defaultValue':_0x48c5('0xc'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x48c5('0x4')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x49c6=['attrs','stringify','setDataValue','INTEGER','#2196f3','sequelize','lodash','exports','STRING','TEXT','long'];(function(_0x3820d8,_0x44a971){var _0x3b7e3f=function(_0x5c9e5b){while(--_0x5c9e5b){_0x3820d8['push'](_0x3820d8['shift']());}};_0x3b7e3f(++_0x44a971);}(_0x49c6,0x10d));var _0x649c=function(_0x523212,_0x437cc3){_0x523212=_0x523212-0x0;var _0x38c3b2=_0x49c6[_0x523212];return _0x38c3b2;};'use strict';var Sequelize=require(_0x649c('0x0'));var squel=require('squel');var _=require(_0x649c('0x1'));module[_0x649c('0x2')]={'title':{'type':Sequelize[_0x649c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x649c('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x649c('0x4')](_0x649c('0x5')),'get':function(){try{return JSON['parse'](this['getDataValue'](_0x649c('0x6')));}catch(_0x4ad947){return[];}},'set':function(_0x467076){try{this['setDataValue'](_0x649c('0x6'),JSON[_0x649c('0x7')](_0x467076));}catch(_0x1b6562){this[_0x649c('0x8')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x649c('0x9')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x649c('0x9')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x649c('0x9')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x649c('0xa'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x649c('0x3')]}};
\ No newline at end of file
index 30d9d89..cdb0b36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['intersection','fields','length','includeAll','include','merge','find','catch','iframe','attrUrl','attrs','value','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','update','html-pdf','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','params','model','keys','DashboardItem','query','filters','attributes'];(function(_0x17614c,_0x501a70){var _0xa48162=function(_0x170740){while(--_0x170740){_0x17614c['push'](_0x17614c['shift']());}};_0xa48162(++_0x501a70);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'use strict';var pdf=require(_0x0a9e('0x0'));var emlformat=require(_0x0a9e('0x1'));var rimraf=require(_0x0a9e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a9e('0x3'));var moment=require('moment');var BPromise=require(_0x0a9e('0x4'));var Mustache=require(_0x0a9e('0x5'));var util=require(_0x0a9e('0x6'));var path=require(_0x0a9e('0x7'));var sox=require(_0x0a9e('0x8'));var csv=require('to-csv');var ejs=require(_0x0a9e('0x9'));var fs=require('fs');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 qs=require(_0x0a9e('0xf'));var logger=require(_0x0a9e('0x10'))(_0x0a9e('0x11'));var utils=require(_0x0a9e('0x12'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x0a9e('0x13')],{'host':_0x0a9e('0x14'),'port':0x18eb});var socket=require(_0x0a9e('0x15'))(new Redis(config[_0x0a9e('0x13')]));require(_0x0a9e('0x16'))[_0x0a9e('0x17')](socket);function respondWithStatusCode(_0x5db4b0,_0x4283ce){_0x4283ce=_0x4283ce||0xcc;return function(_0x239b12){if(_0x239b12){return _0x5db4b0[_0x0a9e('0x18')](_0x4283ce);}return _0x5db4b0[_0x0a9e('0x19')](_0x4283ce)[_0x0a9e('0x1a')]();};}function respondWithResult(_0x4d5611,_0x52a03d){_0x52a03d=_0x52a03d||0xc8;return function(_0x22dccb){if(_0x22dccb){return _0x4d5611['status'](_0x52a03d)[_0x0a9e('0x1b')](_0x22dccb);}};}function respondWithFilteredResult(_0x519dfd,_0x16033c){return function(_0x12066b){if(_0x12066b){var _0x48f32d=_0x12066b[_0x0a9e('0x1c')],_0x225616=_0x16033c[_0x0a9e('0x1d')],_0x5a0a06=_0x16033c[_0x0a9e('0x1d')]+_0x16033c[_0x0a9e('0x1e')],_0x459eb1;if(_0x5a0a06>=_0x48f32d){_0x5a0a06=_0x48f32d;_0x459eb1=0xc8;}else{_0x459eb1=0xce;}_0x519dfd[_0x0a9e('0x19')](_0x459eb1);return _0x519dfd[_0x0a9e('0x1f')](_0x0a9e('0x20'),_0x225616+'-'+_0x5a0a06+'/'+_0x48f32d)[_0x0a9e('0x1b')](_0x12066b);}return null;};}function patchUpdates(_0x112016){return function(_0x1c696a){try{jsonpatch[_0x0a9e('0x21')](_0x1c696a,_0x112016,!![]);}catch(_0x4bb1e3){return BPromise[_0x0a9e('0x22')](_0x4bb1e3);}return _0x1c696a[_0x0a9e('0x23')]();};}function saveUpdates(_0x53682f,_0x20f109){return function(_0x5a09ef){if(_0x5a09ef){return _0x5a09ef['update'](_0x53682f)[_0x0a9e('0x24')](function(_0x432e56){return _0x432e56;});}return null;};}function removeEntity(_0x38e7c4,_0x30bae6){return function(_0x4abc77){if(_0x4abc77){return _0x4abc77[_0x0a9e('0x25')]()[_0x0a9e('0x24')](function(){_0x38e7c4[_0x0a9e('0x19')](0xcc)[_0x0a9e('0x1a')]();});}};}function handleEntityNotFound(_0x370d86,_0x42ac8f){return function(_0x16b1ca){if(!_0x16b1ca){_0x370d86['sendStatus'](0x194);}return _0x16b1ca;};}function handleError(_0x59181e,_0x197ec0){_0x197ec0=_0x197ec0||0x1f4;return function(_0x3a8e58){logger[_0x0a9e('0x26')](_0x3a8e58[_0x0a9e('0x27')]);if(_0x3a8e58['name']){delete _0x3a8e58[_0x0a9e('0x28')];}_0x59181e['status'](_0x197ec0)[_0x0a9e('0x29')](_0x3a8e58);};}exports['show']=function(_0x1dc186,_0x34dc65){var _0x25fba9={'raw':![],'where':{'id':_0x1dc186[_0x0a9e('0x2a')]['id']}},_0x14433c={};_0x14433c[_0x0a9e('0x2b')]=_[_0x0a9e('0x2c')](db[_0x0a9e('0x2d')]['rawAttributes']);_0x14433c[_0x0a9e('0x2e')]=_[_0x0a9e('0x2c')](_0x1dc186[_0x0a9e('0x2e')]);_0x14433c[_0x0a9e('0x2f')]=_['intersection'](_0x14433c[_0x0a9e('0x2b')],_0x14433c[_0x0a9e('0x2e')]);_0x25fba9[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x14433c[_0x0a9e('0x2b')],qs[_0x0a9e('0x32')](_0x1dc186[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x25fba9[_0x0a9e('0x30')]=_0x25fba9['attributes'][_0x0a9e('0x33')]?_0x25fba9['attributes']:_0x14433c[_0x0a9e('0x2b')];if(_0x1dc186[_0x0a9e('0x2e')][_0x0a9e('0x34')]){_0x25fba9[_0x0a9e('0x35')]=[{'all':!![]}];}_0x25fba9=_[_0x0a9e('0x36')]({},_0x25fba9,_0x1dc186['options']);return db[_0x0a9e('0x2d')][_0x0a9e('0x37')](_0x25fba9)[_0x0a9e('0x24')](handleEntityNotFound(_0x34dc65,null))[_0x0a9e('0x24')](respondWithResult(_0x34dc65,null))[_0x0a9e('0x38')](handleError(_0x34dc65,null));};exports[_0x0a9e('0x25')]=function(_0x332d35,_0x39e565){return db['DashboardItem'][_0x0a9e('0x37')]({'where':{'id':_0x332d35['params']['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x39e565,null))[_0x0a9e('0x24')](removeEntity(_0x39e565,null))[_0x0a9e('0x38')](handleError(_0x39e565,null));};function widgetAttributes(_0x3f3d41){try{switch(_0x3f3d41['type']){case _0x0a9e('0x39'):return[{'name':_0x0a9e('0x3a'),'value':_0x3f3d41[_0x0a9e('0x3a')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41['attrs'][0x0]?_0x3f3d41['attrs'][0x0][_0x0a9e('0x3c')]:undefined)||'https://'}];case _0x0a9e('0x3d'):return[{'name':_0x0a9e('0x3e'),'value':_0x3f3d41[_0x0a9e('0x3e')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41['attrs'][0x0]?_0x3f3d41[_0x0a9e('0x3b')][0x0][_0x0a9e('0x3c')]:undefined)||''}];case _0x0a9e('0x3f'):return[{'name':'attrHourFormat','value':_0x3f3d41[_0x0a9e('0x40')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x0]?_0x3f3d41['attrs'][0x0]['value']:undefined)||_0x0a9e('0x41')},{'name':_0x0a9e('0x42'),'value':_0x3f3d41['attrTimezone']||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x1]?_0x3f3d41[_0x0a9e('0x3b')][0x1][_0x0a9e('0x3c')]:undefined)||'0.00'},{'name':'attrFontSize','value':_0x3f3d41[_0x0a9e('0x43')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41['attrs'][0x2]?_0x3f3d41[_0x0a9e('0x3b')][0x2][_0x0a9e('0x3c')]:undefined)||0xc}];case _0x0a9e('0x44'):return[{'name':'attrMetric','value':_0x3f3d41[_0x0a9e('0x45')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x0]?_0x3f3d41[_0x0a9e('0x3b')][0x0][_0x0a9e('0x3c')]:undefined)||_0x0a9e('0x46')},{'name':_0x0a9e('0x47'),'value':_0x3f3d41[_0x0a9e('0x47')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x1]?_0x3f3d41[_0x0a9e('0x3b')][0x1][_0x0a9e('0x3c')]:undefined)||[]},{'name':_0x0a9e('0x43'),'value':_0x3f3d41[_0x0a9e('0x43')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41['attrs'][0x2]?_0x3f3d41['attrs'][0x2][_0x0a9e('0x3c')]:undefined)||0x14}];case _0x0a9e('0x48'):case _0x0a9e('0x49'):return[{'name':_0x0a9e('0x4a'),'value':_0x3f3d41[_0x0a9e('0x4a')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x0]?_0x3f3d41[_0x0a9e('0x3b')][0x0][_0x0a9e('0x3c')]:undefined)||_0x0a9e('0x46')},{'name':_0x0a9e('0x4b'),'value':_0x3f3d41[_0x0a9e('0x4b')]||(_0x3f3d41['attrs']&&_0x3f3d41[_0x0a9e('0x3b')][0x1]?_0x3f3d41[_0x0a9e('0x3b')][0x1][_0x0a9e('0x3c')]:undefined)||null},{'name':_0x0a9e('0x4c'),'value':_0x3f3d41[_0x0a9e('0x4c')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x2]?_0x3f3d41[_0x0a9e('0x3b')][0x2]['value']:undefined)||null},{'name':_0x0a9e('0x47'),'value':_0x3f3d41['attrVoiceQueues']||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x3]?_0x3f3d41[_0x0a9e('0x3b')][0x3]['value']:undefined)||[]}];case _0x0a9e('0x4d'):return[{'name':_0x0a9e('0x4e'),'type':_0x3f3d41[_0x0a9e('0x4f')]||null,'value':_0x3f3d41[_0x0a9e('0x4e')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x0]?_0x3f3d41[_0x0a9e('0x3b')][0x0]['value']:undefined)||null},{'name':_0x0a9e('0x50'),'value':_0x3f3d41[_0x0a9e('0x50')]||(_0x3f3d41[_0x0a9e('0x3b')]&&_0x3f3d41[_0x0a9e('0x3b')][0x1]?_0x3f3d41[_0x0a9e('0x3b')][0x1][_0x0a9e('0x3c')]:undefined)||0x0}];default:return[];}}catch(_0x6054ee){logger[_0x0a9e('0x26')](_0x0a9e('0x51'),JSON['stringify'](_0x6054ee));return[];}}exports[_0x0a9e('0x52')]=function(_0x3fe430,_0x4f7240){if(_0x3fe430['body']){_0x3fe430['body'][_0x0a9e('0x3b')]=widgetAttributes(_0x3fe430[_0x0a9e('0x53')]);}return db[_0x0a9e('0x2d')][_0x0a9e('0x52')](_0x3fe430[_0x0a9e('0x53')],{})[_0x0a9e('0x24')](respondWithResult(_0x4f7240,0xc9))[_0x0a9e('0x38')](handleError(_0x4f7240,null));};exports[_0x0a9e('0x54')]=function(_0x5d38ae,_0x4b1b9f){if(_0x5d38ae['body']['id']){delete _0x5d38ae[_0x0a9e('0x53')]['id'];}_0x5d38ae[_0x0a9e('0x53')][_0x0a9e('0x3b')]=widgetAttributes(_0x5d38ae['body']);return db[_0x0a9e('0x2d')][_0x0a9e('0x37')]({'where':{'id':_0x5d38ae['params']['id']}})['then'](handleEntityNotFound(_0x4b1b9f,null))[_0x0a9e('0x24')](saveUpdates(_0x5d38ae['body'],null))[_0x0a9e('0x24')](respondWithResult(_0x4b1b9f,null))['catch'](handleError(_0x4b1b9f,null));};
\ No newline at end of file
+var _0xb10b=['rawAttributes','filters','query','attributes','fields','length','includeAll','merge','options','find','catch','iframe','attrUrl','attrs','https://','custom','value','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','stringify','create','body','html-pdf','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./dashboardItem.socket','register','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','save','update','then','destroy','error','name','send','show','params','model','keys','DashboardItem'];(function(_0x3d9775,_0x4533b8){var _0x85e597=function(_0x2f1d3a){while(--_0x2f1d3a){_0x3d9775['push'](_0x3d9775['shift']());}};_0x85e597(++_0x4533b8);}(_0xb10b,0x12a));var _0xbb10=function(_0x13e758,_0x317d23){_0x13e758=_0x13e758-0x0;var _0x5b53c3=_0xb10b[_0x13e758];return _0x5b53c3;};'use strict';var pdf=require(_0xbb10('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xbb10('0x1'));var zipdir=require(_0xbb10('0x2'));var jsonpatch=require(_0xbb10('0x3'));var rp=require('request-promise');var moment=require(_0xbb10('0x4'));var BPromise=require(_0xbb10('0x5'));var Mustache=require(_0xbb10('0x6'));var util=require(_0xbb10('0x7'));var path=require(_0xbb10('0x8'));var sox=require(_0xbb10('0x9'));var csv=require('to-csv');var ejs=require(_0xbb10('0xa'));var fs=require('fs');var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0xf'));var querystring=require(_0xbb10('0x10'));var Papa=require(_0xbb10('0x11'));var Redis=require(_0xbb10('0x12'));var qs=require(_0xbb10('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xbb10('0x14'));var config=require(_0xbb10('0x15'));var db=require(_0xbb10('0x16'))['db'];config['redis']=_[_0xbb10('0x17')](config['redis'],{'host':_0xbb10('0x18'),'port':0x18eb});var socket=require(_0xbb10('0x19'))(new Redis(config[_0xbb10('0x1a')]));require(_0xbb10('0x1b'))[_0xbb10('0x1c')](socket);function respondWithStatusCode(_0x147230,_0x58a612){_0x58a612=_0x58a612||0xcc;return function(_0x26e021){if(_0x26e021){return _0x147230[_0xbb10('0x1d')](_0x58a612);}return _0x147230[_0xbb10('0x1e')](_0x58a612)[_0xbb10('0x1f')]();};}function respondWithResult(_0x3df17b,_0x2f2ebf){_0x2f2ebf=_0x2f2ebf||0xc8;return function(_0x24a57b){if(_0x24a57b){return _0x3df17b[_0xbb10('0x1e')](_0x2f2ebf)[_0xbb10('0x20')](_0x24a57b);}};}function respondWithFilteredResult(_0x2b184e,_0x4a2bfc){return function(_0x2eca0f){if(_0x2eca0f){var _0x1145f1=_0x2eca0f[_0xbb10('0x21')],_0x133ac2=_0x4a2bfc[_0xbb10('0x22')],_0x42db98=_0x4a2bfc[_0xbb10('0x22')]+_0x4a2bfc[_0xbb10('0x23')],_0x378da8;if(_0x42db98>=_0x1145f1){_0x42db98=_0x1145f1;_0x378da8=0xc8;}else{_0x378da8=0xce;}_0x2b184e[_0xbb10('0x1e')](_0x378da8);return _0x2b184e['set'](_0xbb10('0x24'),_0x133ac2+'-'+_0x42db98+'/'+_0x1145f1)[_0xbb10('0x20')](_0x2eca0f);}return null;};}function patchUpdates(_0x388fab){return function(_0x109908){try{jsonpatch[_0xbb10('0x25')](_0x109908,_0x388fab,!![]);}catch(_0x44e563){return BPromise['reject'](_0x44e563);}return _0x109908[_0xbb10('0x26')]();};}function saveUpdates(_0x12ef77,_0x50aea1){return function(_0x4c4b0d){if(_0x4c4b0d){return _0x4c4b0d[_0xbb10('0x27')](_0x12ef77)[_0xbb10('0x28')](function(_0x2e911d){return _0x2e911d;});}return null;};}function removeEntity(_0x317da4,_0x445761){return function(_0x1824b7){if(_0x1824b7){return _0x1824b7[_0xbb10('0x29')]()[_0xbb10('0x28')](function(){_0x317da4[_0xbb10('0x1e')](0xcc)[_0xbb10('0x1f')]();});}};}function handleEntityNotFound(_0x3ba6cd,_0x26ad93){return function(_0x537898){if(!_0x537898){_0x3ba6cd['sendStatus'](0x194);}return _0x537898;};}function handleError(_0x4fb5e0,_0xc93a04){_0xc93a04=_0xc93a04||0x1f4;return function(_0x3c5ae7){logger[_0xbb10('0x2a')](_0x3c5ae7['stack']);if(_0x3c5ae7[_0xbb10('0x2b')]){delete _0x3c5ae7[_0xbb10('0x2b')];}_0x4fb5e0[_0xbb10('0x1e')](_0xc93a04)[_0xbb10('0x2c')](_0x3c5ae7);};}exports[_0xbb10('0x2d')]=function(_0x20d946,_0x2a0e8b){var _0x4aabb9={'raw':![],'where':{'id':_0x20d946[_0xbb10('0x2e')]['id']}},_0x3796c7={};_0x3796c7[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db[_0xbb10('0x31')][_0xbb10('0x32')]);_0x3796c7['query']=_[_0xbb10('0x30')](_0x20d946['query']);_0x3796c7[_0xbb10('0x33')]=_['intersection'](_0x3796c7[_0xbb10('0x2f')],_0x3796c7[_0xbb10('0x34')]);_0x4aabb9[_0xbb10('0x35')]=_['intersection'](_0x3796c7['model'],qs[_0xbb10('0x36')](_0x20d946[_0xbb10('0x34')]['fields']));_0x4aabb9[_0xbb10('0x35')]=_0x4aabb9[_0xbb10('0x35')][_0xbb10('0x37')]?_0x4aabb9[_0xbb10('0x35')]:_0x3796c7[_0xbb10('0x2f')];if(_0x20d946[_0xbb10('0x34')][_0xbb10('0x38')]){_0x4aabb9['include']=[{'all':!![]}];}_0x4aabb9=_[_0xbb10('0x39')]({},_0x4aabb9,_0x20d946[_0xbb10('0x3a')]);return db[_0xbb10('0x31')][_0xbb10('0x3b')](_0x4aabb9)[_0xbb10('0x28')](handleEntityNotFound(_0x2a0e8b,null))[_0xbb10('0x28')](respondWithResult(_0x2a0e8b,null))[_0xbb10('0x3c')](handleError(_0x2a0e8b,null));};exports[_0xbb10('0x29')]=function(_0x3c8d7d,_0x56943c){return db[_0xbb10('0x31')][_0xbb10('0x3b')]({'where':{'id':_0x3c8d7d[_0xbb10('0x2e')]['id']}})[_0xbb10('0x28')](handleEntityNotFound(_0x56943c,null))['then'](removeEntity(_0x56943c,null))[_0xbb10('0x3c')](handleError(_0x56943c,null));};function widgetAttributes(_0x5de37b){try{switch(_0x5de37b['type']){case _0xbb10('0x3d'):return[{'name':_0xbb10('0x3e'),'value':_0x5de37b[_0xbb10('0x3e')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b[_0xbb10('0x3f')][0x0]?_0x5de37b[_0xbb10('0x3f')][0x0]['value']:undefined)||_0xbb10('0x40')}];case _0xbb10('0x41'):return[{'name':'attrPath','value':_0x5de37b['attrPath']||(_0x5de37b['attrs']&&_0x5de37b[_0xbb10('0x3f')][0x0]?_0x5de37b[_0xbb10('0x3f')][0x0][_0xbb10('0x42')]:undefined)||''}];case'clock':return[{'name':_0xbb10('0x43'),'value':_0x5de37b[_0xbb10('0x43')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b['attrs'][0x0]?_0x5de37b[_0xbb10('0x3f')][0x0][_0xbb10('0x42')]:undefined)||_0xbb10('0x44')},{'name':_0xbb10('0x45'),'value':_0x5de37b['attrTimezone']||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b[_0xbb10('0x3f')][0x1]?_0x5de37b['attrs'][0x1][_0xbb10('0x42')]:undefined)||_0xbb10('0x46')},{'name':_0xbb10('0x47'),'value':_0x5de37b[_0xbb10('0x47')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b[_0xbb10('0x3f')][0x2]?_0x5de37b['attrs'][0x2][_0xbb10('0x42')]:undefined)||0xc}];case _0xbb10('0x48'):return[{'name':_0xbb10('0x49'),'value':_0x5de37b[_0xbb10('0x49')]||(_0x5de37b['attrs']&&_0x5de37b[_0xbb10('0x3f')][0x0]?_0x5de37b[_0xbb10('0x3f')][0x0][_0xbb10('0x42')]:undefined)||_0xbb10('0x4a')},{'name':'attrVoiceQueues','value':_0x5de37b[_0xbb10('0x4b')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b['attrs'][0x1]?_0x5de37b['attrs'][0x1][_0xbb10('0x42')]:undefined)||[]},{'name':'attrFontSize','value':_0x5de37b[_0xbb10('0x47')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b['attrs'][0x2]?_0x5de37b[_0xbb10('0x3f')][0x2][_0xbb10('0x42')]:undefined)||0x14}];case _0xbb10('0x4c'):case'pie-chart':return[{'name':_0xbb10('0x4d'),'value':_0x5de37b[_0xbb10('0x4d')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b[_0xbb10('0x3f')][0x0]?_0x5de37b[_0xbb10('0x3f')][0x0][_0xbb10('0x42')]:undefined)||_0xbb10('0x4a')},{'name':_0xbb10('0x4e'),'value':_0x5de37b[_0xbb10('0x4e')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b[_0xbb10('0x3f')][0x1]?_0x5de37b[_0xbb10('0x3f')][0x1]['value']:undefined)||null},{'name':_0xbb10('0x4f'),'value':_0x5de37b[_0xbb10('0x4f')]||(_0x5de37b['attrs']&&_0x5de37b[_0xbb10('0x3f')][0x2]?_0x5de37b[_0xbb10('0x3f')][0x2][_0xbb10('0x42')]:undefined)||null},{'name':_0xbb10('0x4b'),'value':_0x5de37b[_0xbb10('0x4b')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b[_0xbb10('0x3f')][0x3]?_0x5de37b['attrs'][0x3]['value']:undefined)||[]}];case _0xbb10('0x50'):return[{'name':_0xbb10('0x51'),'type':_0x5de37b[_0xbb10('0x52')]||null,'value':_0x5de37b['attrReport']||(_0x5de37b['attrs']&&_0x5de37b[_0xbb10('0x3f')][0x0]?_0x5de37b[_0xbb10('0x3f')][0x0][_0xbb10('0x42')]:undefined)||null},{'name':_0xbb10('0x53'),'value':_0x5de37b[_0xbb10('0x53')]||(_0x5de37b[_0xbb10('0x3f')]&&_0x5de37b[_0xbb10('0x3f')][0x1]?_0x5de37b[_0xbb10('0x3f')][0x1][_0xbb10('0x42')]:undefined)||0x0}];default:return[];}}catch(_0x3d7e7e){logger['error']('widgetAttributes:\x20%s',JSON[_0xbb10('0x54')](_0x3d7e7e));return[];}}exports[_0xbb10('0x55')]=function(_0x36ab7d,_0xb014b0){if(_0x36ab7d[_0xbb10('0x56')]){_0x36ab7d[_0xbb10('0x56')][_0xbb10('0x3f')]=widgetAttributes(_0x36ab7d[_0xbb10('0x56')]);}return db[_0xbb10('0x31')][_0xbb10('0x55')](_0x36ab7d[_0xbb10('0x56')],{})[_0xbb10('0x28')](respondWithResult(_0xb014b0,0xc9))[_0xbb10('0x3c')](handleError(_0xb014b0,null));};exports[_0xbb10('0x27')]=function(_0x1d15f4,_0x547a7a){if(_0x1d15f4[_0xbb10('0x56')]['id']){delete _0x1d15f4['body']['id'];}_0x1d15f4[_0xbb10('0x56')][_0xbb10('0x3f')]=widgetAttributes(_0x1d15f4[_0xbb10('0x56')]);return db[_0xbb10('0x31')][_0xbb10('0x3b')]({'where':{'id':_0x1d15f4[_0xbb10('0x2e')]['id']}})[_0xbb10('0x28')](handleEntityNotFound(_0x547a7a,null))[_0xbb10('0x28')](saveUpdates(_0x1d15f4[_0xbb10('0x56')],null))[_0xbb10('0x28')](respondWithResult(_0x547a7a,null))[_0xbb10('0x3c')](handleError(_0x547a7a,null));};
\ No newline at end of file
index 49559ac..c6741c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b8a=['../../mysqldb','DashboardItem','setMaxListeners','save','update','emit','hasOwnProperty','events'];(function(_0x5ed551,_0xe32ac0){var _0x2eb670=function(_0x34fd7e){while(--_0x34fd7e){_0x5ed551['push'](_0x5ed551['shift']());}};_0x2eb670(++_0xe32ac0);}(_0x0b8a,0x10f));var _0xa0b8=function(_0x2a214c,_0x37fa24){_0x2a214c=_0x2a214c-0x0;var _0x2fdae6=_0x0b8a[_0x2a214c];return _0x2fdae6;};'use strict';var EventEmitter=require(_0xa0b8('0x0'));var DashboardItem=require(_0xa0b8('0x1'))['db'][_0xa0b8('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xa0b8('0x3')](0x0);var events={'afterCreate':_0xa0b8('0x4'),'afterUpdate':_0xa0b8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4daff9){return function(_0x4017d8,_0x56491d,_0x213dd5){DashboardItemEvents[_0xa0b8('0x6')](_0x4daff9+':'+_0x4017d8['id'],_0x4017d8);DashboardItemEvents[_0xa0b8('0x6')](_0x4daff9,_0x4017d8);_0x213dd5(null);};}for(var e in events){if(events[_0xa0b8('0x7')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
+var _0xb333=['hook','exports','events','../../mysqldb','DashboardItem','setMaxListeners','save','emit','hasOwnProperty'];(function(_0x5db267,_0x1138d9){var _0x172cbe=function(_0x16b0e9){while(--_0x16b0e9){_0x5db267['push'](_0x5db267['shift']());}};_0x172cbe(++_0x1138d9);}(_0xb333,0x6e));var _0x3b33=function(_0x4ee485,_0x5c1338){_0x4ee485=_0x4ee485-0x0;var _0x25ede7=_0xb333[_0x4ee485];return _0x25ede7;};'use strict';var EventEmitter=require(_0x3b33('0x0'));var DashboardItem=require(_0x3b33('0x1'))['db'][_0x3b33('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x3b33('0x3')](0x0);var events={'afterCreate':_0x3b33('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x483c74){return function(_0x4a4ac9,_0x2790b7,_0x37deac){DashboardItemEvents['emit'](_0x483c74+':'+_0x4a4ac9['id'],_0x4a4ac9);DashboardItemEvents[_0x3b33('0x5')](_0x483c74,_0x4a4ac9);_0x37deac(null);};}for(var e in events){if(events[_0x3b33('0x6')](e)){var event=events[e];DashboardItem[_0x3b33('0x7')](e,emitEvent(event));}}module[_0x3b33('0x8')]=DashboardItemEvents;
\ No newline at end of file
index 6e7076e..2623931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dashboard_items','lodash','util','../../config/logger','moment','bluebird','./dashboardItem.attributes','exports','define'];(function(_0x3497b5,_0x5775b8){var _0x9c5460=function(_0x29d1e2){while(--_0x29d1e2){_0x3497b5['push'](_0x3497b5['shift']());}};_0x9c5460(++_0x5775b8);}(_0x7a54,0x106));var _0x47a5=function(_0x50a471,_0x42c3f9){_0x50a471=_0x50a471-0x0;var _0x24577d=_0x7a54[_0x50a471];return _0x24577d;};'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 attributes=require(_0x47a5('0x5'));module[_0x47a5('0x6')]=function(_0x2a1a7e,_0x3717e1){return _0x2a1a7e[_0x47a5('0x7')]('DashboardItem',attributes,{'tableName':_0x47a5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['dashboard_items','lodash','util','../../config/logger','moment','bluebird','./dashboardItem.attributes','exports','define'];(function(_0x578275,_0xe7ae46){var _0xf78041=function(_0x13148c){while(--_0x13148c){_0x578275['push'](_0x578275['shift']());}};_0xf78041(++_0xe7ae46);}(_0x7a54,0x106));var _0x47a5=function(_0x3e32af,_0x8c8d9c){_0x3e32af=_0x3e32af-0x0;var _0x103a01=_0x7a54[_0x3e32af];return _0x103a01;};'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 attributes=require(_0x47a5('0x5'));module[_0x47a5('0x6')]=function(_0x2a1a7e,_0x3717e1){return _0x2a1a7e[_0x47a5('0x7')]('DashboardItem',attributes,{'tableName':_0x47a5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 07c818b..df1c065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24a0=['defaults','localhost','socket.io-emitter','./dashboardItem.socket','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','redis'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0x24a0,0x11e));var _0x024a=function(_0xc22fdf,_0x9c9bf5){_0xc22fdf=_0xc22fdf-0x0;var _0xad7929=_0x24a0[_0xc22fdf];return _0xad7929;};'use strict';var _=require(_0x024a('0x0'));var util=require(_0x024a('0x1'));var moment=require('moment');var BPromise=require(_0x024a('0x2'));var rs=require(_0x024a('0x3'));var fs=require('fs');var Redis=require(_0x024a('0x4'));var db=require(_0x024a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x024a('0x6'));var jayson=require(_0x024a('0x7'));var client=jayson[_0x024a('0x8')][_0x024a('0x9')]({'port':0x232a});config[_0x024a('0xa')]=_[_0x024a('0xb')](config[_0x024a('0xa')],{'host':_0x024a('0xc'),'port':0x18eb});var socket=require(_0x024a('0xd'))(new Redis(config[_0x024a('0xa')]));require(_0x024a('0xe'))['register'](socket);function respondWithRpcPromise(_0x3a9113,_0x243632,_0x4763d8){return new BPromise(function(_0x292d1,_0x48d9da){return client[_0x024a('0xf')](_0x3a9113,_0x4763d8)[_0x024a('0x10')](function(_0x35477b){logger[_0x024a('0x11')](_0x024a('0x12'),_0x243632,_0x024a('0x13'));logger[_0x024a('0x14')](_0x024a('0x15'),_0x243632,'request\x20sent',JSON[_0x024a('0x16')](_0x35477b));if(_0x35477b['error']){if(_0x35477b['error'][_0x024a('0x17')]===0x1f4){logger['error'](_0x024a('0x12'),_0x243632,_0x35477b[_0x024a('0x18')][_0x024a('0x19')]);return _0x48d9da(_0x35477b[_0x024a('0x18')][_0x024a('0x19')]);}logger[_0x024a('0x18')](_0x024a('0x12'),_0x243632,_0x35477b[_0x024a('0x18')][_0x024a('0x19')]);return _0x292d1(_0x35477b[_0x024a('0x18')][_0x024a('0x19')]);}else{logger[_0x024a('0x11')](_0x024a('0x12'),_0x243632,_0x024a('0x13'));_0x292d1(_0x35477b['result'][_0x024a('0x19')]);}})[_0x024a('0x1a')](function(_0x545a84){logger[_0x024a('0x18')]('DashboardItem,\x20%s,\x20%s',_0x243632,_0x545a84);_0x48d9da(_0x545a84);});});}
\ No newline at end of file
+var _0x426b=['info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','request','then'];(function(_0x502e15,_0x49ff8f){var _0xadd0c4=function(_0xa1776){while(--_0xa1776){_0x502e15['push'](_0x502e15['shift']());}};_0xadd0c4(++_0x49ff8f);}(_0x426b,0x184));var _0xb426=function(_0x331a31,_0x116709){_0x331a31=_0x331a31-0x0;var _0x521de0=_0x426b[_0x331a31];return _0x521de0;};'use strict';var _=require(_0xb426('0x0'));var util=require('util');var moment=require(_0xb426('0x1'));var BPromise=require(_0xb426('0x2'));var rs=require(_0xb426('0x3'));var fs=require('fs');var Redis=require(_0xb426('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb426('0x5'))(_0xb426('0x6'));var config=require(_0xb426('0x7'));var jayson=require(_0xb426('0x8'));var client=jayson[_0xb426('0x9')][_0xb426('0xa')]({'port':0x232a});config[_0xb426('0xb')]=_[_0xb426('0xc')](config[_0xb426('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xb426('0xd'))(new Redis(config[_0xb426('0xb')]));require(_0xb426('0xe'))[_0xb426('0xf')](socket);function respondWithRpcPromise(_0x1953fb,_0x180b89,_0x36a89d){return new BPromise(function(_0x420a03,_0x42aa85){return client[_0xb426('0x10')](_0x1953fb,_0x36a89d)[_0xb426('0x11')](function(_0x364fb6){logger[_0xb426('0x12')](_0xb426('0x13'),_0x180b89,_0xb426('0x14'));logger[_0xb426('0x15')](_0xb426('0x16'),_0x180b89,_0xb426('0x14'),JSON[_0xb426('0x17')](_0x364fb6));if(_0x364fb6[_0xb426('0x18')]){if(_0x364fb6[_0xb426('0x18')][_0xb426('0x19')]===0x1f4){logger['error'](_0xb426('0x13'),_0x180b89,_0x364fb6['error'][_0xb426('0x1a')]);return _0x42aa85(_0x364fb6[_0xb426('0x18')]['message']);}logger[_0xb426('0x18')](_0xb426('0x13'),_0x180b89,_0x364fb6['error'][_0xb426('0x1a')]);return _0x420a03(_0x364fb6[_0xb426('0x18')][_0xb426('0x1a')]);}else{logger[_0xb426('0x12')]('DashboardItem,\x20%s,\x20%s',_0x180b89,'request\x20sent');_0x420a03(_0x364fb6[_0xb426('0x1b')][_0xb426('0x1a')]);}})[_0xb426('0x1c')](function(_0x16dbb4){logger[_0xb426('0x18')](_0xb426('0x13'),_0x180b89,_0x16dbb4);_0x42aa85(_0x16dbb4);});});}
\ No newline at end of file
index cc8deb6..976771d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['removeListener','register','./dashboardItem.events','save'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0x55ca,0x126));var _0xa55c=function(_0xab39a,_0x9d1016){_0xab39a=_0xab39a-0x0;var _0x17bbe2=_0x55ca[_0xab39a];return _0x17bbe2;};'use strict';var DashboardItemEvents=require(_0xa55c('0x0'));var events=[_0xa55c('0x1'),'remove','update'];function createListener(_0x49875a,_0x1c6ec3){return function(_0x267ea0){_0x1c6ec3['emit'](_0x49875a,_0x267ea0);};}function removeListener(_0x3b478a,_0x2db02a){return function(){DashboardItemEvents[_0xa55c('0x2')](_0x3b478a,_0x2db02a);};}exports[_0xa55c('0x3')]=function(_0x3c97c8){for(var _0x279caa=0x0,_0x36b623=events['length'];_0x279caa<_0x36b623;_0x279caa++){var _0x2121fd=events[_0x279caa];var _0x2537f0=createListener('dashboardItem:'+_0x2121fd,_0x3c97c8);DashboardItemEvents['on'](_0x2121fd,_0x2537f0);}};
\ No newline at end of file
+var _0x9957=['register','length','dashboardItem:','./dashboardItem.events','save','remove','update','emit','removeListener'];(function(_0x44c768,_0x552a5e){var _0x55daf5=function(_0x4958e8){while(--_0x4958e8){_0x44c768['push'](_0x44c768['shift']());}};_0x55daf5(++_0x552a5e);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var DashboardItemEvents=require(_0x7995('0x0'));var events=[_0x7995('0x1'),_0x7995('0x2'),_0x7995('0x3')];function createListener(_0x5b96eb,_0x86c128){return function(_0x3c58eb){_0x86c128[_0x7995('0x4')](_0x5b96eb,_0x3c58eb);};}function removeListener(_0x462a03,_0x576d89){return function(){DashboardItemEvents[_0x7995('0x5')](_0x462a03,_0x576d89);};}exports[_0x7995('0x6')]=function(_0x137b6b){for(var _0x219534=0x0,_0xbda126=events[_0x7995('0x7')];_0x219534<_0xbda126;_0x219534++){var _0x4996ca=events[_0x219534];var _0x465276=createListener(_0x7995('0x8')+_0x4996ca,_0x137b6b);DashboardItemEvents['on'](_0x4996ca,_0x465276);}};
\ No newline at end of file
index 1a49c79..a065887 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1604=['../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x20d72e,_0x534501){var _0x2580d6=function(_0x361b60){while(--_0x361b60){_0x20d72e['push'](_0x20d72e['shift']());}};_0x2580d6(++_0x534501);}(_0x1604,0x163));var _0x4160=function(_0x5d99a4,_0x2f3f88){_0x5d99a4=_0x5d99a4-0x0;var _0xcc7cd5=_0x1604[_0x5d99a4];return _0xcc7cd5;};'use strict';var multer=require(_0x4160('0x0'));var util=require('util');var path=require(_0x4160('0x1'));var timeout=require(_0x4160('0x2'));var express=require(_0x4160('0x3'));var router=express[_0x4160('0x4')]();var auth=require(_0x4160('0x5'));var interaction=require(_0x4160('0x6'));var config=require(_0x4160('0x7'));var controller=require(_0x4160('0x8'));router[_0x4160('0x9')](_0x4160('0xa'),auth[_0x4160('0xb')](),controller[_0x4160('0xc')]);router[_0x4160('0xd')]('/',auth[_0x4160('0xb')](),controller[_0x4160('0xe')]);router[_0x4160('0xf')](_0x4160('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x4160('0x10')](_0x4160('0xa'),auth[_0x4160('0xb')](),controller[_0x4160('0x11')]);module[_0x4160('0x12')]=router;
\ No newline at end of file
+var _0x9048=['util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','show','isAuthenticated','create','/:id','delete','multer'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x9048,0xf6));var _0x8904=function(_0x11d6c2,_0x550cad){_0x11d6c2=_0x11d6c2-0x0;var _0x407bd3=_0x9048[_0x11d6c2];return _0x407bd3;};'use strict';var multer=require(_0x8904('0x0'));var util=require(_0x8904('0x1'));var path=require(_0x8904('0x2'));var timeout=require('connect-timeout');var express=require(_0x8904('0x3'));var router=express['Router']();var auth=require(_0x8904('0x4'));var interaction=require(_0x8904('0x5'));var config=require(_0x8904('0x6'));var controller=require(_0x8904('0x7'));router['get']('/:id',auth['isAuthenticated'](),controller[_0x8904('0x8')]);router['post']('/',auth[_0x8904('0x9')](),controller[_0x8904('0xa')]);router['put'](_0x8904('0xb'),auth[_0x8904('0x9')](),controller['update']);router[_0x8904('0xc')]('/:id',auth[_0x8904('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 2006651..25b5eeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe3c=['exports','sequelize'];(function(_0x9df060,_0x253d33){var _0x338dfe=function(_0x17d9a5){while(--_0x17d9a5){_0x9df060['push'](_0x9df060['shift']());}};_0x338dfe(++_0x253d33);}(_0xfe3c,0xe5));var _0xcfe3=function(_0x5095ea,_0xb8983d){_0x5095ea=_0x5095ea-0x0;var _0x30d954=_0xfe3c[_0x5095ea];return _0x30d954;};'use strict';var Sequelize=require(_0xcfe3('0x0'));module[_0xcfe3('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x71e2=['exports','sequelize'];(function(_0x2ccbaf,_0x4a1c53){var _0x53a810=function(_0x589c07){while(--_0x589c07){_0x2ccbaf['push'](_0x2ccbaf['shift']());}};_0x53a810(++_0x4a1c53);}(_0x71e2,0x12d));var _0x271e=function(_0xa794f7,_0xc89806){_0xa794f7=_0xa794f7-0x0;var _0x12a6d2=_0x71e2[_0xa794f7];return _0x12a6d2;};'use strict';var Sequelize=require(_0x271e('0x0'));module[_0x271e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index ad76ba6..be383d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf99a=['sox','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','api','../../config/environment','../../mysqldb','status','end','json','count','offset','limit','Content-Range','apply','reject','update','then','get','destroy','sendStatus','error','stack','name','send','index','Disposition','rawAttributes','keys','query','dateEnd','dateStart','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','day','merge','filter','map','type','key','VIRTUAL','field','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation','UserProfileResource','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path'];(function(_0x38c772,_0x45db32){var _0xab79f2=function(_0x1e0618){while(--_0x1e0618){_0x38c772['push'](_0x38c772['shift']());}};_0xab79f2(++_0x45db32);}(_0xf99a,0x18b));var _0xaf99=function(_0x2dee94,_0x344855){_0x2dee94=_0x2dee94-0x0;var _0x3d2cda=_0xf99a[_0x2dee94];return _0x3d2cda;};'use strict';var pdf=require(_0xaf99('0x0'));var emlformat=require(_0xaf99('0x1'));var rimraf=require(_0xaf99('0x2'));var zipdir=require(_0xaf99('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaf99('0x4'));var moment=require(_0xaf99('0x5'));var BPromise=require(_0xaf99('0x6'));var Mustache=require(_0xaf99('0x7'));var util=require(_0xaf99('0x8'));var path=require(_0xaf99('0x9'));var sox=require(_0xaf99('0xa'));var csv=require('to-csv');var ejs=require(_0xaf99('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0xaf99('0xc'));var crypto=require(_0xaf99('0xd'));var jsforce=require(_0xaf99('0xe'));var deskjs=require(_0xaf99('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xaf99('0x10'));var Redis=require(_0xaf99('0x11'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xaf99('0x12'));var utils=require('../../config/utils');var config=require(_0xaf99('0x13'));var db=require(_0xaf99('0x14'))['db'];function respondWithStatusCode(_0x14923b,_0x455819){_0x455819=_0x455819||0xcc;return function(_0x357d97){if(_0x357d97){return _0x14923b['sendStatus'](_0x455819);}return _0x14923b[_0xaf99('0x15')](_0x455819)[_0xaf99('0x16')]();};}function respondWithResult(_0x3c02fb,_0x4c091b){_0x4c091b=_0x4c091b||0xc8;return function(_0x50b356){if(_0x50b356){return _0x3c02fb['status'](_0x4c091b)[_0xaf99('0x17')](_0x50b356);}};}function respondWithFilteredResult(_0x97c0d0,_0x1e0a3e){return function(_0x1f95d6){if(_0x1f95d6){var _0x190fa0=_0x1f95d6[_0xaf99('0x18')],_0x1a3453=_0x1e0a3e[_0xaf99('0x19')],_0x1f78c4=_0x1e0a3e[_0xaf99('0x19')]+_0x1e0a3e[_0xaf99('0x1a')],_0x9b1dd4;if(_0x1f78c4>=_0x190fa0){_0x1f78c4=_0x190fa0;_0x9b1dd4=0xc8;}else{_0x9b1dd4=0xce;}_0x97c0d0['status'](_0x9b1dd4);return _0x97c0d0['set'](_0xaf99('0x1b'),_0x1a3453+'-'+_0x1f78c4+'/'+_0x190fa0)[_0xaf99('0x17')](_0x1f95d6);}return null;};}function patchUpdates(_0x259831){return function(_0x321fdd){try{jsonpatch[_0xaf99('0x1c')](_0x321fdd,_0x259831,!![]);}catch(_0x325c0a){return BPromise[_0xaf99('0x1d')](_0x325c0a);}return _0x321fdd['save']();};}function saveUpdates(_0x4dbb12,_0x201b67){return function(_0x111d1a){if(_0x111d1a){return _0x111d1a[_0xaf99('0x1e')](_0x4dbb12)[_0xaf99('0x1f')](function(_0x11ff6e){return _0x11ff6e;});}return null;};}function removeEntity(_0x1238f2,_0x811b46){return function(_0x47366e){if(_0x47366e){return _0x47366e['destroy']()[_0xaf99('0x1f')](function(){var _0x4b57d0=_0x47366e[_0xaf99('0x20')]({'plain':!![]});var _0x3fd5b9='Dispositions';return db['UserProfileResource'][_0xaf99('0x21')]({'where':{'type':_0x3fd5b9,'resourceId':_0x4b57d0['id']}})[_0xaf99('0x1f')](function(){return _0x47366e;});})[_0xaf99('0x1f')](function(){_0x1238f2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x105643,_0x8aec1a){return function(_0x29f627){if(!_0x29f627){_0x105643[_0xaf99('0x22')](0x194);}return _0x29f627;};}function handleError(_0x5f1fdc,_0x432fd2){_0x432fd2=_0x432fd2||0x1f4;return function(_0x51f98c){logger[_0xaf99('0x23')](_0x51f98c[_0xaf99('0x24')]);if(_0x51f98c[_0xaf99('0x25')]){delete _0x51f98c[_0xaf99('0x25')];}_0x5f1fdc[_0xaf99('0x15')](_0x432fd2)[_0xaf99('0x26')](_0x51f98c);};}exports[_0xaf99('0x27')]=function(_0x4d7e32,_0x1f24fd){var _0x12204b={},_0xf19c55={},_0x5f1c20={'count':0x0,'rows':[]};var _0x48e780=db[_0xaf99('0x28')][_0xaf99('0x29')];_0xf19c55['model']=_[_0xaf99('0x2a')](_0x48e780);var _0x127fca={'dateStart':_0x4d7e32[_0xaf99('0x2b')]['dateStart'],'dateEnd':_0x4d7e32['query'][_0xaf99('0x2c')]};delete _0x4d7e32[_0xaf99('0x2b')][_0xaf99('0x2d')];delete _0x4d7e32[_0xaf99('0x2b')][_0xaf99('0x2c')];_0xf19c55[_0xaf99('0x2b')]=_['keys'](_0x4d7e32[_0xaf99('0x2b')]);_0xf19c55[_0xaf99('0x2e')]=_[_0xaf99('0x2f')](_0xf19c55[_0xaf99('0x30')],_0xf19c55[_0xaf99('0x2b')]);_0x12204b[_0xaf99('0x31')]=_[_0xaf99('0x2f')](_0xf19c55['model'],qs[_0xaf99('0x32')](_0x4d7e32[_0xaf99('0x2b')][_0xaf99('0x32')]));_0x12204b[_0xaf99('0x31')]=_0x12204b['attributes'][_0xaf99('0x33')]?_0x12204b[_0xaf99('0x31')]:_0xf19c55[_0xaf99('0x30')];if(!_0x4d7e32[_0xaf99('0x2b')][_0xaf99('0x34')](_0xaf99('0x35'))){_0x12204b[_0xaf99('0x1a')]=qs['limit'](_0x4d7e32['query'][_0xaf99('0x1a')]);_0x12204b['offset']=qs[_0xaf99('0x19')](_0x4d7e32['query']['offset']);}_0x12204b[_0xaf99('0x36')]=qs['sort'](_0x4d7e32[_0xaf99('0x2b')]['sort']);_0x12204b[_0xaf99('0x37')]=qs[_0xaf99('0x2e')](_[_0xaf99('0x38')](_0x4d7e32[_0xaf99('0x2b')],_0xf19c55['filters']));if(_0x127fca[_0xaf99('0x2d')]){if(_0x127fca[_0xaf99('0x2c')]){_0x127fca[_0xaf99('0x2c')]=moment(_0x127fca['dateEnd'])['add'](0x1,_0xaf99('0x39'));}else{_0x127fca[_0xaf99('0x2c')]=moment(_0x127fca['dateStart'])['add'](0x1,_0xaf99('0x39'));}_[_0xaf99('0x3a')](_0x12204b[_0xaf99('0x37')],{'createdAt':{'$gte':_0x127fca[_0xaf99('0x2d')],'$lte':_0x127fca[_0xaf99('0x2c')]}});}if(_0x4d7e32[_0xaf99('0x2b')][_0xaf99('0x3b')]){_0x12204b[_0xaf99('0x37')]=_[_0xaf99('0x3a')](_0x12204b[_0xaf99('0x37')],{'$or':_[_0xaf99('0x3c')](_0x48e780,function(_0x41f474){if(_0x41f474[_0xaf99('0x3d')][_0xaf99('0x3e')]!==_0xaf99('0x3f')){var _0x423a99={};_0x423a99[_0x41f474[_0xaf99('0x40')]]={'$like':'%'+_0x4d7e32['query'][_0xaf99('0x3b')]+'%'};return _0x423a99;}})});}_0x12204b=_[_0xaf99('0x3a')]({},_0x12204b,_0x4d7e32['options']);var _0x103d87={'where':_0x12204b['where']};return db['Disposition']['count'](_0x103d87)[_0xaf99('0x1f')](function(_0x259f83){_0x5f1c20[_0xaf99('0x18')]=_0x259f83;if(_0x4d7e32[_0xaf99('0x2b')][_0xaf99('0x41')]){_0x12204b[_0xaf99('0x42')]=[{'all':!![]}];}return db[_0xaf99('0x28')][_0xaf99('0x43')](_0x12204b);})[_0xaf99('0x1f')](function(_0x3e12dd){_0x5f1c20[_0xaf99('0x44')]=_0x3e12dd;return _0x5f1c20;})[_0xaf99('0x1f')](respondWithFilteredResult(_0x1f24fd,_0x12204b))[_0xaf99('0x45')](handleError(_0x1f24fd,null));};exports[_0xaf99('0x46')]=function(_0xb16e4d,_0x4ea306){var _0x2c757e={'raw':!![],'where':{'id':_0xb16e4d[_0xaf99('0x47')]['id']}},_0x38c25e={};_0x38c25e[_0xaf99('0x30')]=_[_0xaf99('0x2a')](db[_0xaf99('0x28')][_0xaf99('0x29')]);_0x38c25e['query']=_[_0xaf99('0x2a')](_0xb16e4d[_0xaf99('0x2b')]);_0x38c25e[_0xaf99('0x2e')]=_[_0xaf99('0x2f')](_0x38c25e[_0xaf99('0x30')],_0x38c25e[_0xaf99('0x2b')]);_0x2c757e[_0xaf99('0x31')]=_[_0xaf99('0x2f')](_0x38c25e[_0xaf99('0x30')],qs[_0xaf99('0x32')](_0xb16e4d['query'][_0xaf99('0x32')]));_0x2c757e[_0xaf99('0x31')]=_0x2c757e[_0xaf99('0x31')][_0xaf99('0x33')]?_0x2c757e[_0xaf99('0x31')]:_0x38c25e[_0xaf99('0x30')];if(_0xb16e4d[_0xaf99('0x2b')][_0xaf99('0x41')]){_0x2c757e[_0xaf99('0x42')]=[{'all':!![]}];}_0x2c757e=_[_0xaf99('0x3a')]({},_0x2c757e,_0xb16e4d[_0xaf99('0x48')]);return db['Disposition'][_0xaf99('0x49')](_0x2c757e)[_0xaf99('0x1f')](handleEntityNotFound(_0x4ea306,null))[_0xaf99('0x1f')](respondWithResult(_0x4ea306,null))[_0xaf99('0x45')](handleError(_0x4ea306,null));};exports[_0xaf99('0x4a')]=function(_0x38229b,_0x48f931){return db[_0xaf99('0x28')][_0xaf99('0x4a')](_0x38229b[_0xaf99('0x4b')],{})['then'](function(_0x1ed68f){var _0x4dae43=_0x38229b['user']['get']({'plain':!![]});if(!_0x4dae43)throw new Error(_0xaf99('0x4c'));if(_0x4dae43[_0xaf99('0x4d')]===_0xaf99('0x4e')){var _0x38b62b=_0x1ed68f['get']({'plain':!![]});var _0x32b1db='Dispositions';return db['UserProfileSection']['find']({'where':{'name':_0x32b1db,'userProfileId':_0x4dae43['userProfileId']},'raw':!![]})[_0xaf99('0x1f')](function(_0x4a6c5f){if(_0x4a6c5f&&_0x4a6c5f[_0xaf99('0x4f')]===0x0){return db[_0xaf99('0x50')][_0xaf99('0x4a')]({'name':_0x38b62b[_0xaf99('0x25')],'resourceId':_0x38b62b['id'],'type':_0x4a6c5f['name'],'sectionId':_0x4a6c5f['id']},{})[_0xaf99('0x1f')](function(){return _0x1ed68f;});}else{return _0x1ed68f;}})[_0xaf99('0x45')](function(_0x52d100){logger[_0xaf99('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x52d100);throw _0x52d100;});}return _0x1ed68f;})[_0xaf99('0x1f')](respondWithResult(_0x48f931,0xc9))['catch'](handleError(_0x48f931,null));};exports[_0xaf99('0x1e')]=function(_0x51d920,_0x184404){if(_0x51d920[_0xaf99('0x4b')]['id']){delete _0x51d920[_0xaf99('0x4b')]['id'];}return db['Disposition']['find']({'where':{'id':_0x51d920['params']['id']}})[_0xaf99('0x1f')](handleEntityNotFound(_0x184404,null))[_0xaf99('0x1f')](saveUpdates(_0x51d920[_0xaf99('0x4b')],null))[_0xaf99('0x1f')](respondWithResult(_0x184404,null))[_0xaf99('0x45')](handleError(_0x184404,null));};exports[_0xaf99('0x21')]=function(_0x4badbb,_0x113472){return db[_0xaf99('0x28')][_0xaf99('0x49')]({'where':{'id':_0x4badbb[_0xaf99('0x47')]['id']}})['then'](handleEntityNotFound(_0x113472,null))['then'](removeEntity(_0x113472,null))[_0xaf99('0x45')](handleError(_0x113472,null));};
\ No newline at end of file
+var _0x6ab0=['jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','Content-Range','apply','reject','save','update','then','destroy','get','Dispositions','UserProfileResource','error','stack','name','send','index','Disposition','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','add','day','merge','filter','map','type','key','VIRTUAL','field','count','includeAll','include','findAll','show','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','html-pdf','eml-format','rimraf','zip-dir','bluebird','path','sox','to-csv','lodash','squel'];(function(_0x2a29cc,_0x3d20de){var _0x2ee12a=function(_0x37af17){while(--_0x37af17){_0x2a29cc['push'](_0x2a29cc['shift']());}};_0x2ee12a(++_0x3d20de);}(_0x6ab0,0x9c));var _0x06ab=function(_0x142720,_0x19a7af){_0x142720=_0x142720-0x0;var _0x26c2af=_0x6ab0[_0x142720];return _0x26c2af;};'use strict';var pdf=require(_0x06ab('0x0'));var emlformat=require(_0x06ab('0x1'));var rimraf=require(_0x06ab('0x2'));var zipdir=require(_0x06ab('0x3'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x06ab('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x06ab('0x5'));var sox=require(_0x06ab('0x6'));var csv=require(_0x06ab('0x7'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x06ab('0x8'));var squel=require(_0x06ab('0x9'));var crypto=require('crypto');var jsforce=require(_0x06ab('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x06ab('0x7'));var querystring=require(_0x06ab('0xb'));var Papa=require(_0x06ab('0xc'));var Redis=require(_0x06ab('0xd'));var qs=require(_0x06ab('0xe'));var logger=require(_0x06ab('0xf'))('api');var utils=require(_0x06ab('0x10'));var config=require(_0x06ab('0x11'));var db=require(_0x06ab('0x12'))['db'];function respondWithStatusCode(_0xe3dfcf,_0x101e51){_0x101e51=_0x101e51||0xcc;return function(_0x43dafe){if(_0x43dafe){return _0xe3dfcf[_0x06ab('0x13')](_0x101e51);}return _0xe3dfcf['status'](_0x101e51)[_0x06ab('0x14')]();};}function respondWithResult(_0x416eff,_0x32242e){_0x32242e=_0x32242e||0xc8;return function(_0x538fb5){if(_0x538fb5){return _0x416eff[_0x06ab('0x15')](_0x32242e)[_0x06ab('0x16')](_0x538fb5);}};}function respondWithFilteredResult(_0x1da5e5,_0x18c029){return function(_0x120441){if(_0x120441){var _0xadb2aa=_0x120441['count'],_0x3ab1b9=_0x18c029[_0x06ab('0x17')],_0x26ff12=_0x18c029[_0x06ab('0x17')]+_0x18c029[_0x06ab('0x18')],_0x89a0b6;if(_0x26ff12>=_0xadb2aa){_0x26ff12=_0xadb2aa;_0x89a0b6=0xc8;}else{_0x89a0b6=0xce;}_0x1da5e5[_0x06ab('0x15')](_0x89a0b6);return _0x1da5e5['set'](_0x06ab('0x19'),_0x3ab1b9+'-'+_0x26ff12+'/'+_0xadb2aa)[_0x06ab('0x16')](_0x120441);}return null;};}function patchUpdates(_0x392633){return function(_0x40be40){try{jsonpatch[_0x06ab('0x1a')](_0x40be40,_0x392633,!![]);}catch(_0xb46761){return BPromise[_0x06ab('0x1b')](_0xb46761);}return _0x40be40[_0x06ab('0x1c')]();};}function saveUpdates(_0x28fd66,_0x542d88){return function(_0x1162b6){if(_0x1162b6){return _0x1162b6[_0x06ab('0x1d')](_0x28fd66)[_0x06ab('0x1e')](function(_0x3253bc){return _0x3253bc;});}return null;};}function removeEntity(_0x1174c7,_0x8f5895){return function(_0x2e1b24){if(_0x2e1b24){return _0x2e1b24[_0x06ab('0x1f')]()[_0x06ab('0x1e')](function(){var _0x457708=_0x2e1b24[_0x06ab('0x20')]({'plain':!![]});var _0x19dfe2=_0x06ab('0x21');return db[_0x06ab('0x22')][_0x06ab('0x1f')]({'where':{'type':_0x19dfe2,'resourceId':_0x457708['id']}})[_0x06ab('0x1e')](function(){return _0x2e1b24;});})['then'](function(){_0x1174c7[_0x06ab('0x15')](0xcc)[_0x06ab('0x14')]();});}};}function handleEntityNotFound(_0x50afdb,_0xcd4127){return function(_0x14865f){if(!_0x14865f){_0x50afdb['sendStatus'](0x194);}return _0x14865f;};}function handleError(_0x53922f,_0xf79d8b){_0xf79d8b=_0xf79d8b||0x1f4;return function(_0x4c48cf){logger[_0x06ab('0x23')](_0x4c48cf[_0x06ab('0x24')]);if(_0x4c48cf[_0x06ab('0x25')]){delete _0x4c48cf[_0x06ab('0x25')];}_0x53922f[_0x06ab('0x15')](_0xf79d8b)[_0x06ab('0x26')](_0x4c48cf);};}exports[_0x06ab('0x27')]=function(_0x36d1e3,_0x5c418a){var _0x182c73={},_0x344fa6={},_0x2cbe6b={'count':0x0,'rows':[]};var _0x20bacb=db[_0x06ab('0x28')][_0x06ab('0x29')];_0x344fa6[_0x06ab('0x2a')]=_[_0x06ab('0x2b')](_0x20bacb);var _0x34e23b={'dateStart':_0x36d1e3['query'][_0x06ab('0x2c')],'dateEnd':_0x36d1e3[_0x06ab('0x2d')]['dateEnd']};delete _0x36d1e3[_0x06ab('0x2d')][_0x06ab('0x2c')];delete _0x36d1e3[_0x06ab('0x2d')][_0x06ab('0x2e')];_0x344fa6[_0x06ab('0x2d')]=_['keys'](_0x36d1e3[_0x06ab('0x2d')]);_0x344fa6[_0x06ab('0x2f')]=_[_0x06ab('0x30')](_0x344fa6[_0x06ab('0x2a')],_0x344fa6[_0x06ab('0x2d')]);_0x182c73['attributes']=_[_0x06ab('0x30')](_0x344fa6[_0x06ab('0x2a')],qs['fields'](_0x36d1e3[_0x06ab('0x2d')][_0x06ab('0x31')]));_0x182c73['attributes']=_0x182c73[_0x06ab('0x32')][_0x06ab('0x33')]?_0x182c73['attributes']:_0x344fa6['model'];if(!_0x36d1e3['query'][_0x06ab('0x34')]('nolimit')){_0x182c73['limit']=qs['limit'](_0x36d1e3[_0x06ab('0x2d')][_0x06ab('0x18')]);_0x182c73[_0x06ab('0x17')]=qs[_0x06ab('0x17')](_0x36d1e3['query'][_0x06ab('0x17')]);}_0x182c73[_0x06ab('0x35')]=qs[_0x06ab('0x36')](_0x36d1e3[_0x06ab('0x2d')][_0x06ab('0x36')]);_0x182c73[_0x06ab('0x37')]=qs[_0x06ab('0x2f')](_[_0x06ab('0x38')](_0x36d1e3[_0x06ab('0x2d')],_0x344fa6[_0x06ab('0x2f')]));if(_0x34e23b[_0x06ab('0x2c')]){if(_0x34e23b[_0x06ab('0x2e')]){_0x34e23b[_0x06ab('0x2e')]=moment(_0x34e23b[_0x06ab('0x2e')])[_0x06ab('0x39')](0x1,_0x06ab('0x3a'));}else{_0x34e23b['dateEnd']=moment(_0x34e23b[_0x06ab('0x2c')])['add'](0x1,'day');}_[_0x06ab('0x3b')](_0x182c73[_0x06ab('0x37')],{'createdAt':{'$gte':_0x34e23b[_0x06ab('0x2c')],'$lte':_0x34e23b['dateEnd']}});}if(_0x36d1e3[_0x06ab('0x2d')][_0x06ab('0x3c')]){_0x182c73[_0x06ab('0x37')]=_[_0x06ab('0x3b')](_0x182c73[_0x06ab('0x37')],{'$or':_[_0x06ab('0x3d')](_0x20bacb,function(_0x10d3b3){if(_0x10d3b3[_0x06ab('0x3e')][_0x06ab('0x3f')]!==_0x06ab('0x40')){var _0x25d5a6={};_0x25d5a6[_0x10d3b3[_0x06ab('0x41')]]={'$like':'%'+_0x36d1e3[_0x06ab('0x2d')]['filter']+'%'};return _0x25d5a6;}})});}_0x182c73=_[_0x06ab('0x3b')]({},_0x182c73,_0x36d1e3['options']);var _0x2db8cd={'where':_0x182c73[_0x06ab('0x37')]};return db[_0x06ab('0x28')][_0x06ab('0x42')](_0x2db8cd)[_0x06ab('0x1e')](function(_0x2a4670){_0x2cbe6b[_0x06ab('0x42')]=_0x2a4670;if(_0x36d1e3[_0x06ab('0x2d')][_0x06ab('0x43')]){_0x182c73[_0x06ab('0x44')]=[{'all':!![]}];}return db['Disposition'][_0x06ab('0x45')](_0x182c73);})[_0x06ab('0x1e')](function(_0x4687a1){_0x2cbe6b['rows']=_0x4687a1;return _0x2cbe6b;})[_0x06ab('0x1e')](respondWithFilteredResult(_0x5c418a,_0x182c73))['catch'](handleError(_0x5c418a,null));};exports[_0x06ab('0x46')]=function(_0x2fe510,_0x3a8da6){var _0x4c8a6d={'raw':!![],'where':{'id':_0x2fe510[_0x06ab('0x47')]['id']}},_0x451ee9={};_0x451ee9[_0x06ab('0x2a')]=_['keys'](db[_0x06ab('0x28')][_0x06ab('0x29')]);_0x451ee9[_0x06ab('0x2d')]=_[_0x06ab('0x2b')](_0x2fe510[_0x06ab('0x2d')]);_0x451ee9[_0x06ab('0x2f')]=_[_0x06ab('0x30')](_0x451ee9[_0x06ab('0x2a')],_0x451ee9[_0x06ab('0x2d')]);_0x4c8a6d[_0x06ab('0x32')]=_[_0x06ab('0x30')](_0x451ee9[_0x06ab('0x2a')],qs[_0x06ab('0x31')](_0x2fe510[_0x06ab('0x2d')][_0x06ab('0x31')]));_0x4c8a6d[_0x06ab('0x32')]=_0x4c8a6d[_0x06ab('0x32')]['length']?_0x4c8a6d[_0x06ab('0x32')]:_0x451ee9[_0x06ab('0x2a')];if(_0x2fe510[_0x06ab('0x2d')][_0x06ab('0x43')]){_0x4c8a6d[_0x06ab('0x44')]=[{'all':!![]}];}_0x4c8a6d=_[_0x06ab('0x3b')]({},_0x4c8a6d,_0x2fe510[_0x06ab('0x48')]);return db[_0x06ab('0x28')][_0x06ab('0x49')](_0x4c8a6d)['then'](handleEntityNotFound(_0x3a8da6,null))[_0x06ab('0x1e')](respondWithResult(_0x3a8da6,null))['catch'](handleError(_0x3a8da6,null));};exports[_0x06ab('0x4a')]=function(_0x40a766,_0x5d62f7){return db['Disposition'][_0x06ab('0x4a')](_0x40a766[_0x06ab('0x4b')],{})[_0x06ab('0x1e')](function(_0x24a786){var _0x54e612=_0x40a766[_0x06ab('0x4c')][_0x06ab('0x20')]({'plain':!![]});if(!_0x54e612)throw new Error(_0x06ab('0x4d'));if(_0x54e612[_0x06ab('0x4e')]==='user'){var _0xadcd67=_0x24a786[_0x06ab('0x20')]({'plain':!![]});var _0x3fd888='Dispositions';return db[_0x06ab('0x4f')][_0x06ab('0x49')]({'where':{'name':_0x3fd888,'userProfileId':_0x54e612[_0x06ab('0x50')]},'raw':!![]})['then'](function(_0x1998e9){if(_0x1998e9&&_0x1998e9[_0x06ab('0x51')]===0x0){return db[_0x06ab('0x22')][_0x06ab('0x4a')]({'name':_0xadcd67[_0x06ab('0x25')],'resourceId':_0xadcd67['id'],'type':_0x1998e9[_0x06ab('0x25')],'sectionId':_0x1998e9['id']},{})[_0x06ab('0x1e')](function(){return _0x24a786;});}else{return _0x24a786;}})[_0x06ab('0x52')](function(_0x344be4){logger[_0x06ab('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x344be4);throw _0x344be4;});}return _0x24a786;})['then'](respondWithResult(_0x5d62f7,0xc9))[_0x06ab('0x52')](handleError(_0x5d62f7,null));};exports[_0x06ab('0x1d')]=function(_0xaf3c7,_0x2d0966){if(_0xaf3c7['body']['id']){delete _0xaf3c7[_0x06ab('0x4b')]['id'];}return db[_0x06ab('0x28')][_0x06ab('0x49')]({'where':{'id':_0xaf3c7['params']['id']}})['then'](handleEntityNotFound(_0x2d0966,null))[_0x06ab('0x1e')](saveUpdates(_0xaf3c7[_0x06ab('0x4b')],null))[_0x06ab('0x1e')](respondWithResult(_0x2d0966,null))['catch'](handleError(_0x2d0966,null));};exports[_0x06ab('0x1f')]=function(_0x258bcd,_0x4c035a){return db[_0x06ab('0x28')][_0x06ab('0x49')]({'where':{'id':_0x258bcd['params']['id']}})[_0x06ab('0x1e')](handleEntityNotFound(_0x4c035a,null))[_0x06ab('0x1e')](removeEntity(_0x4c035a,null))['catch'](handleError(_0x4c035a,null));};
\ No newline at end of file
index 64e9d09..67e4cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['api','moment','bluebird','request-promise','./disposition.attributes','define','Disposition','name','ListId','name_chat','name_mail','SmsAccountId','FaxAccountId','OpenchannelAccountId','util','../../config/logger'];(function(_0x14724e,_0x44aabe){var _0x179600=function(_0x20e49e){while(--_0x20e49e){_0x14724e['push'](_0x14724e['shift']());}};_0x179600(++_0x44aabe);}(_0x14a0,0x8e));var _0x014a=function(_0x56e86f,_0x91eb2d){_0x56e86f=_0x56e86f-0x0;var _0x30df16=_0x14a0[_0x56e86f];return _0x30df16;};'use strict';var _=require('lodash');var util=require(_0x014a('0x0'));var logger=require(_0x014a('0x1'))(_0x014a('0x2'));var moment=require(_0x014a('0x3'));var BPromise=require(_0x014a('0x4'));var rp=require(_0x014a('0x5'));var attributes=require(_0x014a('0x6'));module['exports']=function(_0x57a522,_0x1730a5){return _0x57a522[_0x014a('0x7')](_0x014a('0x8'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0x014a('0x9'),_0x014a('0xa')]},{'unique':!![],'name':_0x014a('0xb'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0x014a('0xc'),'fields':['name','MailAccountId']},{'unique':!![],'name':'name_sms','fields':['name',_0x014a('0xd')]},{'unique':!![],'name':'name_fax','fields':[_0x014a('0x9'),_0x014a('0xe')]},{'unique':!![],'name':'name_openchannel','fields':[_0x014a('0x9'),_0x014a('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x66fa=['tools_dispositions','name_voice','name','ListId','name_mail','MailAccountId','name_fax','name_openchannel','OpenchannelAccountId','lodash','util','api','moment','bluebird','request-promise','./disposition.attributes','exports','Disposition'];(function(_0x5cb2fe,_0x194b25){var _0x1cfbdb=function(_0x11077e){while(--_0x11077e){_0x5cb2fe['push'](_0x5cb2fe['shift']());}};_0x1cfbdb(++_0x194b25);}(_0x66fa,0x117));var _0xa66f=function(_0x15733c,_0x13f014){_0x15733c=_0x15733c-0x0;var _0x290eda=_0x66fa[_0x15733c];return _0x290eda;};'use strict';var _=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var logger=require('../../config/logger')(_0xa66f('0x2'));var moment=require(_0xa66f('0x3'));var BPromise=require(_0xa66f('0x4'));var rp=require(_0xa66f('0x5'));var attributes=require(_0xa66f('0x6'));module[_0xa66f('0x7')]=function(_0x3f4904,_0x5ebea5){return _0x3f4904['define'](_0xa66f('0x8'),attributes,{'tableName':_0xa66f('0x9'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xa66f('0xa'),'fields':[_0xa66f('0xb'),_0xa66f('0xc')]},{'unique':!![],'name':'name_chat','fields':[_0xa66f('0xb'),'ChatWebsiteId']},{'unique':!![],'name':_0xa66f('0xd'),'fields':['name',_0xa66f('0xe')]},{'unique':!![],'name':'name_sms','fields':['name','SmsAccountId']},{'unique':!![],'name':_0xa66f('0xf'),'fields':[_0xa66f('0xb'),'FaxAccountId']},{'unique':!![],'name':_0xa66f('0x10'),'fields':['name',_0xa66f('0x11')]}],'timestamps':!![]});};
\ No newline at end of file
index 9d5e335..0e3850d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b8f=['debug','Disposition,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','Disposition,\x20%s,\x20%s','request\x20sent'];(function(_0x3fe3d1,_0x285faf){var _0x135a9c=function(_0x3dbd6c){while(--_0x3dbd6c){_0x3fe3d1['push'](_0x3fe3d1['shift']());}};_0x135a9c(++_0x285faf);}(_0x6b8f,0x1bc));var _0xf6b8=function(_0xa2310f,_0x20deb1){_0xa2310f=_0xa2310f-0x0;var _0x37f762=_0x6b8f[_0xa2310f];return _0x37f762;};'use strict';var _=require('lodash');var util=require(_0xf6b8('0x0'));var moment=require('moment');var BPromise=require(_0xf6b8('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf6b8('0x2'))['db'];var utils=require(_0xf6b8('0x3'));var logger=require('../../config/logger')(_0xf6b8('0x4'));var config=require(_0xf6b8('0x5'));var jayson=require(_0xf6b8('0x6'));var client=jayson['client'][_0xf6b8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x79c66d,_0x446336,_0x3c3430){return new BPromise(function(_0x557910,_0x5f07f4){return client[_0xf6b8('0x8')](_0x79c66d,_0x3c3430)['then'](function(_0x24458c){logger[_0xf6b8('0x9')](_0xf6b8('0xa'),_0x446336,_0xf6b8('0xb'));logger[_0xf6b8('0xc')](_0xf6b8('0xd'),_0x446336,'request\x20sent',JSON['stringify'](_0x24458c));if(_0x24458c['error']){if(_0x24458c[_0xf6b8('0xe')][_0xf6b8('0xf')]===0x1f4){logger[_0xf6b8('0xe')](_0xf6b8('0xa'),_0x446336,_0x24458c['error']['message']);return _0x5f07f4(_0x24458c[_0xf6b8('0xe')][_0xf6b8('0x10')]);}logger['error'](_0xf6b8('0xa'),_0x446336,_0x24458c[_0xf6b8('0xe')][_0xf6b8('0x10')]);return _0x557910(_0x24458c['error'][_0xf6b8('0x10')]);}else{logger['info'](_0xf6b8('0xa'),_0x446336,_0xf6b8('0xb'));_0x557910(_0x24458c[_0xf6b8('0x11')][_0xf6b8('0x10')]);}})[_0xf6b8('0x12')](function(_0x567b58){logger['error'](_0xf6b8('0xa'),_0x446336,_0x567b58);_0x5f07f4(_0x567b58);});});}
\ No newline at end of file
+var _0x1883=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1d3d49,_0x253ee8){var _0x1e5383=function(_0x78af2b){while(--_0x78af2b){_0x1d3d49['push'](_0x1d3d49['shift']());}};_0x1e5383(++_0x253ee8);}(_0x1883,0xab));var _0x3188=function(_0x548be5,_0x59c526){_0x548be5=_0x548be5-0x0;var _0x133ba4=_0x1883[_0x548be5];return _0x133ba4;};'use strict';var _=require(_0x3188('0x0'));var util=require(_0x3188('0x1'));var moment=require(_0x3188('0x2'));var BPromise=require(_0x3188('0x3'));var rs=require(_0x3188('0x4'));var fs=require('fs');var Redis=require(_0x3188('0x5'));var db=require(_0x3188('0x6'))['db'];var utils=require(_0x3188('0x7'));var logger=require(_0x3188('0x8'))(_0x3188('0x9'));var config=require(_0x3188('0xa'));var jayson=require(_0x3188('0xb'));var client=jayson[_0x3188('0xc')][_0x3188('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x24f2f1,_0x3ce7fd,_0x3e3afb){return new BPromise(function(_0x5c8f26,_0x446ab7){return client[_0x3188('0xe')](_0x24f2f1,_0x3e3afb)['then'](function(_0x2213b5){logger['info'](_0x3188('0xf'),_0x3ce7fd,_0x3188('0x10'));logger[_0x3188('0x11')](_0x3188('0x12'),_0x3ce7fd,'request\x20sent',JSON[_0x3188('0x13')](_0x2213b5));if(_0x2213b5[_0x3188('0x14')]){if(_0x2213b5['error']['code']===0x1f4){logger[_0x3188('0x14')](_0x3188('0xf'),_0x3ce7fd,_0x2213b5[_0x3188('0x14')][_0x3188('0x15')]);return _0x446ab7(_0x2213b5[_0x3188('0x14')][_0x3188('0x15')]);}logger['error'](_0x3188('0xf'),_0x3ce7fd,_0x2213b5['error']['message']);return _0x5c8f26(_0x2213b5[_0x3188('0x14')]['message']);}else{logger['info'](_0x3188('0xf'),_0x3ce7fd,_0x3188('0x10'));_0x5c8f26(_0x2213b5[_0x3188('0x16')][_0x3188('0x15')]);}})[_0x3188('0x17')](function(_0x259321){logger['error'](_0x3188('0xf'),_0x3ce7fd,_0x259321);_0x446ab7(_0x259321);});});}
\ No newline at end of file
index c23e428..40a163b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce33=['create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../config/environment','./disposition.controller','index','get','/:id','show','post','isAuthenticated'];(function(_0x228ac9,_0x42f065){var _0x69fe02=function(_0x210551){while(--_0x210551){_0x228ac9['push'](_0x228ac9['shift']());}};_0x69fe02(++_0x42f065);}(_0xce33,0x113));var _0x3ce3=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xce33[_0xf50820];return _0x2a9b10;};'use strict';var multer=require(_0x3ce3('0x0'));var util=require('util');var path=require(_0x3ce3('0x1'));var timeout=require(_0x3ce3('0x2'));var express=require(_0x3ce3('0x3'));var router=express[_0x3ce3('0x4')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3ce3('0x5'));var controller=require(_0x3ce3('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x3ce3('0x7')]);router[_0x3ce3('0x8')](_0x3ce3('0x9'),auth['isAuthenticated'](),controller[_0x3ce3('0xa')]);router[_0x3ce3('0xb')]('/',auth[_0x3ce3('0xc')](),controller[_0x3ce3('0xd')]);router[_0x3ce3('0xe')](_0x3ce3('0x9'),auth[_0x3ce3('0xc')](),controller['update']);router[_0x3ce3('0xf')](_0x3ce3('0x9'),auth['isAuthenticated'](),controller[_0x3ce3('0x10')]);module[_0x3ce3('0x11')]=router;
\ No newline at end of file
+var _0x36d9=['/:id','show','create','put','update','delete','destroy','exports','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0xd6d0e1,_0x2f1237){var _0x1c8451=function(_0x184fe1){while(--_0x184fe1){_0xd6d0e1['push'](_0xd6d0e1['shift']());}};_0x1c8451(++_0x2f1237);}(_0x36d9,0xc3));var _0x936d=function(_0x414aa2,_0x1f12d2){_0x414aa2=_0x414aa2-0x0;var _0x33267e=_0x36d9[_0x414aa2];return _0x33267e;};'use strict';var multer=require('multer');var util=require(_0x936d('0x0'));var path=require(_0x936d('0x1'));var timeout=require('connect-timeout');var express=require(_0x936d('0x2'));var router=express['Router']();var auth=require(_0x936d('0x3'));var interaction=require(_0x936d('0x4'));var config=require(_0x936d('0x5'));var controller=require('./disposition.controller');router[_0x936d('0x6')]('/',auth[_0x936d('0x7')](),controller[_0x936d('0x8')]);router[_0x936d('0x6')](_0x936d('0x9'),auth[_0x936d('0x7')](),controller[_0x936d('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x936d('0xb')]);router[_0x936d('0xc')](_0x936d('0x9'),auth[_0x936d('0x7')](),controller[_0x936d('0xd')]);router[_0x936d('0xe')]('/:id',auth[_0x936d('0x7')](),controller[_0x936d('0xf')]);module[_0x936d('0x10')]=router;
\ No newline at end of file
index 2fb623d..3c12a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3482=['Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','ENUM','2400','4800','7200','9600','12000','14400','INTEGER','SIP','IAX','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3482,0x1bc));var _0x2348=function(_0x3d3e50,_0x67882c){_0x3d3e50=_0x3d3e50-0x0;var _0x4273cb=_0x3482[_0x3d3e50];return _0x4273cb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x2348('0x0')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x2348('0x0')]},'ecm':{'type':Sequelize['ENUM'](_0x2348('0x1'),'no'),'defaultValue':_0x2348('0x1')},'headerinfo':{'type':Sequelize[_0x2348('0x0')],'defaultValue':_0x2348('0x2')},'localstationid':{'type':Sequelize[_0x2348('0x0')],'unique':_0x2348('0x3')},'minrate':{'type':Sequelize[_0x2348('0x4')](_0x2348('0x5'),_0x2348('0x6'),_0x2348('0x7'),_0x2348('0x8'),_0x2348('0x9'),_0x2348('0xa')),'defaultValue':_0x2348('0x6')},'maxrate':{'type':Sequelize[_0x2348('0x4')](_0x2348('0x5'),_0x2348('0x6'),_0x2348('0x7'),_0x2348('0x8'),_0x2348('0x9'),_0x2348('0xa')),'defaultValue':'14400'},'modem':{'type':Sequelize[_0x2348('0x0')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x2348('0x0')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x2348('0x0')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x2348('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x2348('0x4')](_0x2348('0xc'),_0x2348('0xd'),'DADHI','KHOMP'),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x2348('0x0')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x2348('0xe')],'defaultValue':function(){return _0x2348('0xf');}},'notificationSound':{'type':Sequelize[_0x2348('0x10')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2348('0x10')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x2348('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x2348('0x10')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2348('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2348('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x2348('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c}};
\ No newline at end of file
+var _0xbbec=['7200','9600','12000','4800','14400','IAX','DADHI','KHOMP','SIP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','sequelize','exports','STRING','ENUM','yes','localstationid','2400'];(function(_0x5f59fa,_0x28ffb7){var _0x31cb42=function(_0x1cdc94){while(--_0x1cdc94){_0x5f59fa['push'](_0x5f59fa['shift']());}};_0x31cb42(++_0x28ffb7);}(_0xbbec,0x85));var _0xcbbe=function(_0x2df368,_0x143c01){_0x2df368=_0x2df368-0x0;var _0x1a7812=_0xbbec[_0x2df368];return _0x1a7812;};'use strict';var Sequelize=require(_0xcbbe('0x0'));module[_0xcbbe('0x1')]={'name':{'type':Sequelize[_0xcbbe('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xcbbe('0x2')]},'ecm':{'type':Sequelize[_0xcbbe('0x3')](_0xcbbe('0x4'),'no'),'defaultValue':_0xcbbe('0x4')},'headerinfo':{'type':Sequelize[_0xcbbe('0x2')],'defaultValue':'xCALLY\x20Motion\x20Fax'},'localstationid':{'type':Sequelize['STRING'],'unique':_0xcbbe('0x5')},'minrate':{'type':Sequelize[_0xcbbe('0x3')](_0xcbbe('0x6'),'4800',_0xcbbe('0x7'),_0xcbbe('0x8'),_0xcbbe('0x9'),'14400'),'defaultValue':_0xcbbe('0xa')},'maxrate':{'type':Sequelize[_0xcbbe('0x3')](_0xcbbe('0x6'),_0xcbbe('0xa'),'7200',_0xcbbe('0x8'),_0xcbbe('0x9'),_0xcbbe('0xb')),'defaultValue':_0xcbbe('0xb')},'modem':{'type':Sequelize[_0xcbbe('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0xcbbe('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xcbbe('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xcbbe('0x3')]('SIP',_0xcbbe('0xc'),_0xcbbe('0xd'),_0xcbbe('0xe')),'defaultValue':_0xcbbe('0xf')},'key':{'type':Sequelize[_0xcbbe('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xcbbe('0x10')],'defaultValue':function(){return _0xcbbe('0x11');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xcbbe('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xcbbe('0x13')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xcbbe('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xcbbe('0x13')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xcbbe('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xcbbe('0x13')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c}};
\ No newline at end of file
index 4cdf6b5..f70e3db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','FaxInteraction','addInteraction','getInteractions','CmContact','Contact','User','Owner','fullname','Tag','Tags','color','tag','sequelize','transaction','FaxApplication','priority','getApplications','context','from-voip-provider','description','CDR(type)=inbound-fax','Set','localstationid','faxdetect','maxrate','minrate','modem','push','FAXOPT(','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','bulkCreate','updateAccountApplications','omit','createdAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','YYYY-MM-DD\x20HH:mm:ss','CmList','updatedAt','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','format','\x22%s\x22\x20<%s>','List','Contacts','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','squel','crypto','desk.js','ioredis','../../components/parsers/qs','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','status','json','count','offset','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','then','sendStatus','stack','name','send','index','FaxAccount','rawAttributes','model','query','dateEnd','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','dateStart','add','day','merge','where','key','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','findOne','hasOwnProperty','limit','filter','map','rows'];(function(_0x3bea9c,_0x29b4dc){var _0x1ec3e1=function(_0xd29b33){while(--_0xd29b33){_0x3bea9c['push'](_0x3bea9c['shift']());}};_0x1ec3e1(++_0x29b4dc);}(_0x7a54,0x106));var _0x47a5=function(_0x871609,_0x37a407){_0x871609=_0x871609-0x0;var _0x13334a=_0x7a54[_0x871609];return _0x13334a;};'use strict';var pdf=require(_0x47a5('0x0'));var emlformat=require(_0x47a5('0x1'));var rimraf=require(_0x47a5('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x47a5('0x3'));var rp=require(_0x47a5('0x4'));var moment=require('moment');var BPromise=require(_0x47a5('0x5'));var Mustache=require(_0x47a5('0x6'));var util=require(_0x47a5('0x7'));var path=require(_0x47a5('0x8'));var sox=require(_0x47a5('0x9'));var csv=require('to-csv');var ejs=require(_0x47a5('0xa'));var fs=require('fs');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 qs=require(_0x47a5('0xf'));var logger=require('../../config/logger')(_0x47a5('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x47a5('0x11'))['db'];config[_0x47a5('0x12')]=_[_0x47a5('0x13')](config[_0x47a5('0x12')],{'host':_0x47a5('0x14'),'port':0x18eb});var socket=require(_0x47a5('0x15'))(new Redis(config[_0x47a5('0x12')]));require('./faxAccount.socket')[_0x47a5('0x16')](socket);var jayson=require(_0x47a5('0x17'));var client=jayson[_0x47a5('0x18')][_0x47a5('0x19')]({'port':0x232c});var client9002=jayson[_0x47a5('0x18')][_0x47a5('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x3c6c46,_0x190faa,_0x4e99a8,_0x362359){return new BPromise(function(_0x11faf5,_0x3b001e){var _0x2a2cbb=_0x362359||client;return _0x2a2cbb[_0x47a5('0x1a')](_0x3c6c46,_0x4e99a8)['then'](function(_0x549de3){logger[_0x47a5('0x1b')]('FaxAccount,\x20%s,\x20%s',_0x190faa,'request\x20sent');logger[_0x47a5('0x1c')](_0x47a5('0x1d'),_0x190faa,_0x47a5('0x1e'),JSON[_0x47a5('0x1f')](_0x549de3));if(_0x549de3[_0x47a5('0x20')]){if(_0x549de3[_0x47a5('0x20')][_0x47a5('0x21')]===0x1f4){logger[_0x47a5('0x20')](_0x47a5('0x22'),_0x190faa,_0x549de3['error'][_0x47a5('0x23')]);return _0x3b001e(_0x549de3[_0x47a5('0x20')]['message']);}logger[_0x47a5('0x20')](_0x47a5('0x22'),_0x190faa,_0x549de3[_0x47a5('0x20')]['message']);return _0x11faf5(_0x549de3[_0x47a5('0x20')][_0x47a5('0x23')]);}else{logger[_0x47a5('0x1b')](_0x47a5('0x22'),_0x190faa,'request\x20sent');_0x11faf5(_0x549de3[_0x47a5('0x24')][_0x47a5('0x23')]);}})['catch'](function(_0x28747d){logger[_0x47a5('0x20')](_0x47a5('0x22'),_0x190faa,_0x28747d);_0x3b001e(_0x28747d);});});}function respondWithStatusCode(_0x129ce5,_0x3abd6a){_0x3abd6a=_0x3abd6a||0xcc;return function(_0x50bf17){if(_0x50bf17){return _0x129ce5['sendStatus'](_0x3abd6a);}return _0x129ce5[_0x47a5('0x25')](_0x3abd6a)['end']();};}function respondWithResult(_0x1ea9c8,_0x5b6c4e){_0x5b6c4e=_0x5b6c4e||0xc8;return function(_0x23cb77){if(_0x23cb77){return _0x1ea9c8[_0x47a5('0x25')](_0x5b6c4e)[_0x47a5('0x26')](_0x23cb77);}};}function respondWithFilteredResult(_0x1dac65,_0x21f296){return function(_0x3ba0b7){if(_0x3ba0b7){var _0x24b162=_0x3ba0b7[_0x47a5('0x27')],_0x136b14=_0x21f296[_0x47a5('0x28')],_0x16631f=_0x21f296[_0x47a5('0x28')]+_0x21f296['limit'],_0x361bfa;if(_0x16631f>=_0x24b162){_0x16631f=_0x24b162;_0x361bfa=0xc8;}else{_0x361bfa=0xce;}_0x1dac65[_0x47a5('0x25')](_0x361bfa);return _0x1dac65['set'](_0x47a5('0x29'),_0x136b14+'-'+_0x16631f+'/'+_0x24b162)[_0x47a5('0x26')](_0x3ba0b7);}return null;};}function patchUpdates(_0x16901f){return function(_0x4d6b57){try{jsonpatch[_0x47a5('0x2a')](_0x4d6b57,_0x16901f,!![]);}catch(_0x625952){return BPromise[_0x47a5('0x2b')](_0x625952);}return _0x4d6b57[_0x47a5('0x2c')]();};}function saveUpdates(_0x51cc81,_0x50d875){return function(_0x6f9a12){if(_0x6f9a12){return _0x6f9a12[_0x47a5('0x2d')](_0x51cc81)['then'](function(_0x4e1006){return _0x4e1006;});}return null;};}function removeEntity(_0x836303,_0x51544e){return function(_0x57bff6){if(_0x57bff6){return _0x57bff6[_0x47a5('0x2e')]()['then'](function(){var _0x122ed6=_0x57bff6[_0x47a5('0x2f')]({'plain':!![]});var _0x5c5162='FaxAccounts';return db[_0x47a5('0x30')]['destroy']({'where':{'type':_0x5c5162,'resourceId':_0x122ed6['id']}})[_0x47a5('0x31')](function(){return _0x57bff6;});})[_0x47a5('0x31')](function(){_0x836303[_0x47a5('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18f7e9,_0x50c086){return function(_0x53c754){if(!_0x53c754){_0x18f7e9[_0x47a5('0x32')](0x194);}return _0x53c754;};}function handleError(_0x5a8a7c,_0x25cce0){_0x25cce0=_0x25cce0||0x1f4;return function(_0x5ef577){logger[_0x47a5('0x20')](_0x5ef577[_0x47a5('0x33')]);if(_0x5ef577[_0x47a5('0x34')]){delete _0x5ef577[_0x47a5('0x34')];}_0x5a8a7c[_0x47a5('0x25')](_0x25cce0)[_0x47a5('0x35')](_0x5ef577);};}exports[_0x47a5('0x36')]=function(_0x452be5,_0x1a0d23){var _0x4caed5={},_0x396a9a={},_0x10f136={'count':0x0,'rows':[]};var _0x511c06=db[_0x47a5('0x37')][_0x47a5('0x38')];_0x396a9a[_0x47a5('0x39')]=_['keys'](_0x511c06);var _0x101f70={'dateStart':_0x452be5[_0x47a5('0x3a')]['dateStart'],'dateEnd':_0x452be5[_0x47a5('0x3a')][_0x47a5('0x3b')]};delete _0x452be5['query']['dateStart'];delete _0x452be5['query'][_0x47a5('0x3b')];_0x396a9a['query']=_[_0x47a5('0x3c')](_0x452be5[_0x47a5('0x3a')]);_0x396a9a[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x396a9a[_0x47a5('0x39')],_0x396a9a[_0x47a5('0x3a')]);_0x4caed5[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x396a9a[_0x47a5('0x39')],qs[_0x47a5('0x40')](_0x452be5[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x4caed5[_0x47a5('0x3f')]=_0x4caed5['attributes'][_0x47a5('0x41')]?_0x4caed5[_0x47a5('0x3f')]:_0x396a9a[_0x47a5('0x39')];if(!_0x452be5[_0x47a5('0x3a')]['hasOwnProperty'](_0x47a5('0x42'))){_0x4caed5['limit']=qs['limit'](_0x452be5['query']['limit']);_0x4caed5[_0x47a5('0x28')]=qs['offset'](_0x452be5[_0x47a5('0x3a')][_0x47a5('0x28')]);}_0x4caed5[_0x47a5('0x43')]=qs['sort'](_0x452be5[_0x47a5('0x3a')][_0x47a5('0x44')]);_0x4caed5['where']=qs['filters'](_[_0x47a5('0x45')](_0x452be5['query'],_0x396a9a[_0x47a5('0x3d')]));if(_0x101f70[_0x47a5('0x46')]){if(_0x101f70[_0x47a5('0x3b')]){_0x101f70[_0x47a5('0x3b')]=moment(_0x101f70[_0x47a5('0x3b')])[_0x47a5('0x47')](0x1,_0x47a5('0x48'));}else{_0x101f70[_0x47a5('0x3b')]=moment(_0x101f70[_0x47a5('0x46')])[_0x47a5('0x47')](0x1,_0x47a5('0x48'));}_[_0x47a5('0x49')](_0x4caed5[_0x47a5('0x4a')],{'createdAt':{'$gte':_0x101f70[_0x47a5('0x46')],'$lte':_0x101f70[_0x47a5('0x3b')]}});}if(_0x452be5[_0x47a5('0x3a')]['filter']){_0x4caed5[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x4caed5['where'],{'$or':_['map'](_0x511c06,function(_0x3d0a88){if(_0x3d0a88['type'][_0x47a5('0x4b')]!==_0x47a5('0x4c')){var _0x54c35f={};_0x54c35f[_0x3d0a88['field']]={'$like':'%'+_0x452be5[_0x47a5('0x3a')]['filter']+'%'};return _0x54c35f;}})});}_0x4caed5=_[_0x47a5('0x49')]({},_0x4caed5,_0x452be5[_0x47a5('0x4d')]);var _0x3548bc={'where':_0x4caed5[_0x47a5('0x4a')]};return db[_0x47a5('0x37')][_0x47a5('0x27')](_0x3548bc)[_0x47a5('0x31')](function(_0x53e994){_0x10f136['count']=_0x53e994;if(_0x452be5[_0x47a5('0x3a')][_0x47a5('0x4e')]){_0x4caed5[_0x47a5('0x4f')]=[{'all':!![]}];}return db[_0x47a5('0x37')][_0x47a5('0x50')](_0x4caed5);})[_0x47a5('0x31')](function(_0x249de5){_0x10f136['rows']=_0x249de5;return _0x10f136;})[_0x47a5('0x31')](respondWithFilteredResult(_0x1a0d23,_0x4caed5))[_0x47a5('0x51')](handleError(_0x1a0d23,null));};exports[_0x47a5('0x52')]=function(_0x5c3c75,_0x12ca40){var _0x54bd83={'raw':![],'where':{'id':_0x5c3c75[_0x47a5('0x53')]['id']}},_0x2bf302={};_0x2bf302[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db['FaxAccount'][_0x47a5('0x38')]);_0x2bf302[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0x5c3c75[_0x47a5('0x3a')]);_0x2bf302[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x2bf302[_0x47a5('0x39')],_0x2bf302['query']);_0x54bd83[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x2bf302[_0x47a5('0x39')],qs[_0x47a5('0x40')](_0x5c3c75[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x54bd83['attributes']=_0x54bd83[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x54bd83[_0x47a5('0x3f')]:_0x2bf302['model'];if(_0x5c3c75[_0x47a5('0x3a')][_0x47a5('0x4e')]){_0x54bd83[_0x47a5('0x4f')]=[{'all':!![]}];}_0x54bd83=_['merge']({},_0x54bd83,_0x5c3c75['options']);return db[_0x47a5('0x37')][_0x47a5('0x54')](_0x54bd83)['then'](handleEntityNotFound(_0x12ca40,null))['then'](respondWithResult(_0x12ca40,null))[_0x47a5('0x51')](handleError(_0x12ca40,null));};exports['create']=function(_0x16bb8a,_0x5d383d){return db['FaxAccount'][_0x47a5('0x55')](_0x16bb8a[_0x47a5('0x56')],{})['then'](function(_0x1b958b){var _0x72fe=_0x16bb8a['user']['get']({'plain':!![]});if(!_0x72fe)throw new Error(_0x47a5('0x57'));if(_0x72fe[_0x47a5('0x58')]===_0x47a5('0x59')){var _0x2931e4=_0x1b958b['get']({'plain':!![]});var _0x199621=_0x47a5('0x5a');return db[_0x47a5('0x5b')]['find']({'where':{'name':_0x199621,'userProfileId':_0x72fe[_0x47a5('0x5c')]},'raw':!![]})['then'](function(_0x485e3c){if(_0x485e3c&&_0x485e3c[_0x47a5('0x5d')]===0x0){return db[_0x47a5('0x30')][_0x47a5('0x55')]({'name':_0x2931e4[_0x47a5('0x34')],'resourceId':_0x2931e4['id'],'type':_0x485e3c['name'],'sectionId':_0x485e3c['id']},{})[_0x47a5('0x31')](function(){return _0x1b958b;});}else{return _0x1b958b;}})['catch'](function(_0x5cbe97){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5cbe97);throw _0x5cbe97;});}return _0x1b958b;})[_0x47a5('0x31')](respondWithResult(_0x5d383d,0xc9))[_0x47a5('0x51')](handleError(_0x5d383d,null));};exports[_0x47a5('0x2d')]=function(_0x52e3ee,_0x4d3db1){if(_0x52e3ee[_0x47a5('0x56')]['id']){delete _0x52e3ee[_0x47a5('0x56')]['id'];}return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0x52e3ee[_0x47a5('0x53')]['id']}})['then'](handleEntityNotFound(_0x4d3db1,null))[_0x47a5('0x31')](saveUpdates(_0x52e3ee['body'],null))[_0x47a5('0x31')](respondWithResult(_0x4d3db1,null))[_0x47a5('0x51')](handleError(_0x4d3db1,null));};exports['destroy']=function(_0x32b4de,_0x345104){return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0x32b4de[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x345104,null))[_0x47a5('0x31')](removeEntity(_0x345104,null))[_0x47a5('0x51')](handleError(_0x345104,null));};exports['describe']=function(_0x2dcc3b,_0x2a3a57){return db[_0x47a5('0x37')][_0x47a5('0x5e')]()[_0x47a5('0x31')](respondWithResult(_0x2a3a57,null))['catch'](handleError(_0x2a3a57,null));};exports[_0x47a5('0x5f')]=function(_0xdfcecc,_0x1224bc,_0x144aaa){if(_0xdfcecc[_0x47a5('0x56')]['id']){delete _0xdfcecc[_0x47a5('0x56')]['id'];}return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0xdfcecc[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x1224bc,null))[_0x47a5('0x31')](function(_0x44fda9){if(_0x44fda9){_0xdfcecc[_0x47a5('0x56')][_0x47a5('0x60')]=_0x44fda9['id'];return db[_0x47a5('0x61')]['create'](_0xdfcecc[_0x47a5('0x56')]);}})[_0x47a5('0x31')](respondWithResult(_0x1224bc,null))[_0x47a5('0x51')](handleError(_0x1224bc,null));};exports['getDispositions']=function(_0x37ac59,_0x2e46af,_0x36c67){var _0x26f1ac={'raw':![],'where':{}};var _0x5d9822={};var _0x3ac402={'count':0x0,'rows':[]};return db['FaxAccount'][_0x47a5('0x62')]({'where':{'id':_0x37ac59['params']['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x2e46af,null))['then'](function(_0x7c1190){if(_0x7c1190){_0x5d9822[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db['Disposition']['rawAttributes']);_0x5d9822['query']=_[_0x47a5('0x3c')](_0x37ac59[_0x47a5('0x3a')]);_0x5d9822[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x5d9822['model'],_0x5d9822[_0x47a5('0x3a')]);_0x26f1ac[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x5d9822[_0x47a5('0x39')],qs[_0x47a5('0x40')](_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x26f1ac[_0x47a5('0x3f')]=_0x26f1ac[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x26f1ac[_0x47a5('0x3f')]:_0x5d9822[_0x47a5('0x39')];if(!_0x37ac59['query'][_0x47a5('0x63')]('nolimit')){_0x26f1ac[_0x47a5('0x64')]=qs[_0x47a5('0x64')](_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x64')]);_0x26f1ac[_0x47a5('0x28')]=qs[_0x47a5('0x28')](_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x28')]);}_0x26f1ac[_0x47a5('0x43')]=qs[_0x47a5('0x44')](_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x44')]);_0x26f1ac[_0x47a5('0x4a')]=qs[_0x47a5('0x3d')](_[_0x47a5('0x45')](_0x37ac59['query'],_0x5d9822['filters']));_0x26f1ac['where']['FaxAccountId']=_0x7c1190['id'];if(_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x65')]){_0x26f1ac['where']=_[_0x47a5('0x49')](_0x26f1ac[_0x47a5('0x4a')],{'$or':_[_0x47a5('0x66')](_0x26f1ac[_0x47a5('0x3f')],function(_0x3cd335){var _0x930d25={};_0x930d25[_0x3cd335]={'$like':'%'+_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x65')]+'%'};return _0x930d25;})});}_0x26f1ac=_[_0x47a5('0x49')]({},_0x26f1ac,_0x37ac59[_0x47a5('0x4d')]);return db[_0x47a5('0x61')]['count']({'where':_0x26f1ac[_0x47a5('0x4a')]})[_0x47a5('0x31')](function(_0x420671){_0x3ac402['count']=_0x420671;if(_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x4e')]){_0x26f1ac[_0x47a5('0x4f')]=[{'all':!![]}];}return db['Disposition'][_0x47a5('0x50')](_0x26f1ac);})['then'](function(_0x49d93d){_0x3ac402[_0x47a5('0x67')]=_0x49d93d;return _0x3ac402;});}})[_0x47a5('0x31')](respondWithFilteredResult(_0x2e46af,_0x26f1ac))[_0x47a5('0x51')](handleError(_0x2e46af,null));};exports[_0x47a5('0x68')]=function(_0x164d42,_0xea50f3,_0x479a82){var _0x592322;return db[_0x47a5('0x37')]['find']({'where':{'id':_0x164d42[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0xea50f3,null))[_0x47a5('0x31')](function(_0xb16bdd){if(_0xb16bdd){return _0xb16bdd['removeDispositions'](_0x164d42[_0x47a5('0x3a')]['ids']);}})['then'](respondWithStatusCode(_0xea50f3,null))[_0x47a5('0x51')](handleError(_0xea50f3,null));};exports[_0x47a5('0x69')]=function(_0x5b91f7,_0x1926bd,_0x21828e){if(_0x5b91f7[_0x47a5('0x56')]['id']){delete _0x5b91f7['body']['id'];}return db[_0x47a5('0x37')]['find']({'where':{'id':_0x5b91f7[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x1926bd,null))[_0x47a5('0x31')](function(_0x4a5ca1){if(_0x4a5ca1){_0x5b91f7[_0x47a5('0x56')][_0x47a5('0x60')]=_0x4a5ca1['id'];return db[_0x47a5('0x6a')]['create'](_0x5b91f7[_0x47a5('0x56')]);}})['then'](respondWithResult(_0x1926bd,null))[_0x47a5('0x51')](handleError(_0x1926bd,null));};exports['getAnswers']=function(_0x135d2e,_0x20d8bd,_0x20a742){var _0x211fbf={'raw':![],'where':{}};var _0x51738b={};var _0x42fcce={'count':0x0,'rows':[]};return db[_0x47a5('0x37')][_0x47a5('0x62')]({'where':{'id':_0x135d2e[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x20d8bd,null))['then'](function(_0x56c35e){if(_0x56c35e){_0x51738b[_0x47a5('0x39')]=_['keys'](db[_0x47a5('0x6a')][_0x47a5('0x38')]);_0x51738b[_0x47a5('0x3a')]=_['keys'](_0x135d2e[_0x47a5('0x3a')]);_0x51738b[_0x47a5('0x3d')]=_['intersection'](_0x51738b[_0x47a5('0x39')],_0x51738b[_0x47a5('0x3a')]);_0x211fbf[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x51738b['model'],qs['fields'](_0x135d2e[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x211fbf['attributes']=_0x211fbf[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x211fbf['attributes']:_0x51738b[_0x47a5('0x39')];if(!_0x135d2e[_0x47a5('0x3a')][_0x47a5('0x63')]('nolimit')){_0x211fbf[_0x47a5('0x64')]=qs['limit'](_0x135d2e[_0x47a5('0x3a')]['limit']);_0x211fbf[_0x47a5('0x28')]=qs[_0x47a5('0x28')](_0x135d2e['query'][_0x47a5('0x28')]);}_0x211fbf['order']=qs[_0x47a5('0x44')](_0x135d2e[_0x47a5('0x3a')][_0x47a5('0x44')]);_0x211fbf[_0x47a5('0x4a')]=qs['filters'](_[_0x47a5('0x45')](_0x135d2e['query'],_0x51738b['filters']));_0x211fbf[_0x47a5('0x4a')][_0x47a5('0x60')]=_0x56c35e['id'];if(_0x135d2e[_0x47a5('0x3a')][_0x47a5('0x65')]){_0x211fbf[_0x47a5('0x4a')]=_['merge'](_0x211fbf[_0x47a5('0x4a')],{'$or':_[_0x47a5('0x66')](_0x211fbf[_0x47a5('0x3f')],function(_0x11b68b){var _0x50b98e={};_0x50b98e[_0x11b68b]={'$like':'%'+_0x135d2e[_0x47a5('0x3a')]['filter']+'%'};return _0x50b98e;})});}_0x211fbf=_[_0x47a5('0x49')]({},_0x211fbf,_0x135d2e[_0x47a5('0x4d')]);return db[_0x47a5('0x6a')][_0x47a5('0x27')]({'where':_0x211fbf[_0x47a5('0x4a')]})[_0x47a5('0x31')](function(_0x92bfd7){_0x42fcce[_0x47a5('0x27')]=_0x92bfd7;if(_0x135d2e[_0x47a5('0x3a')]['includeAll']){_0x211fbf[_0x47a5('0x4f')]=[{'all':!![]}];}return db[_0x47a5('0x6a')]['findAll'](_0x211fbf);})[_0x47a5('0x31')](function(_0x32035e){_0x42fcce[_0x47a5('0x67')]=_0x32035e;return _0x42fcce;});}})['then'](respondWithFilteredResult(_0x20d8bd,_0x211fbf))['catch'](handleError(_0x20d8bd,null));};exports[_0x47a5('0x6b')]=function(_0x3d7371,_0x47fbb6,_0x537552){var _0x91aa99;return db[_0x47a5('0x37')]['find']({'where':{'id':_0x3d7371[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x47fbb6,null))['then'](function(_0x16097e){if(_0x16097e){return _0x16097e[_0x47a5('0x6b')](_0x3d7371[_0x47a5('0x3a')][_0x47a5('0x6c')]);}})[_0x47a5('0x31')](respondWithStatusCode(_0x47fbb6,null))[_0x47a5('0x51')](handleError(_0x47fbb6,null));};exports['addInteraction']=function(_0x4c9894,_0x5bd86e,_0x133b7a){return db[_0x47a5('0x6d')]['find']({'where':{'id':_0x4c9894[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x5bd86e,null))[_0x47a5('0x31')](function(_0x1752ce){if(_0x1752ce){return _0x1752ce[_0x47a5('0x6e')](_0x4c9894['body'][_0x47a5('0x6c')],_['omit'](_0x4c9894['body'],['ids','id'])||{});}})[_0x47a5('0x31')](respondWithResult(_0x5bd86e,null))['catch'](handleError(_0x5bd86e,null));};exports[_0x47a5('0x6f')]=function(_0xf3edc8,_0x5a316e,_0x49f791){var _0x4584f0={'raw':![],'where':{}};var _0x461d32={};var _0x35bf37={'count':0x0,'rows':[]};return db[_0x47a5('0x37')][_0x47a5('0x62')]({'where':{'id':_0xf3edc8['params']['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x5a316e,null))[_0x47a5('0x31')](function(_0x519f0a){if(_0x519f0a){_0x461d32[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db[_0x47a5('0x6d')][_0x47a5('0x38')]);_0x461d32[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0xf3edc8['query']);_0x461d32[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x461d32['model'],_0x461d32[_0x47a5('0x3a')]);_0x4584f0[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x461d32[_0x47a5('0x39')],qs['fields'](_0xf3edc8['query']['fields']));_0x4584f0['attributes']=_0x4584f0[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x4584f0[_0x47a5('0x3f')]:_0x461d32[_0x47a5('0x39')];if(!_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x63')](_0x47a5('0x42'))){_0x4584f0[_0x47a5('0x64')]=qs['limit'](_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x64')]);_0x4584f0[_0x47a5('0x28')]=qs[_0x47a5('0x28')](_0xf3edc8['query']['offset']);}_0x4584f0[_0x47a5('0x43')]=qs['sort'](_0xf3edc8['query'][_0x47a5('0x44')]);_0x4584f0[_0x47a5('0x4a')]=qs['filters'](_[_0x47a5('0x45')](_0xf3edc8[_0x47a5('0x3a')],_0x461d32[_0x47a5('0x3d')]));_0x4584f0['where'][_0x47a5('0x60')]=_0x519f0a['id'];if(_0xf3edc8[_0x47a5('0x3a')]['filter']){_0x4584f0[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x4584f0[_0x47a5('0x4a')],{'$or':_[_0x47a5('0x66')](_0x4584f0[_0x47a5('0x3f')],function(_0x475114){var _0x482c87={};_0x482c87[_0x475114]={'$like':'%'+_0xf3edc8[_0x47a5('0x3a')]['filter']+'%'};return _0x482c87;})});}_0x4584f0=_[_0x47a5('0x49')]({},_0x4584f0,_0xf3edc8[_0x47a5('0x4d')]);return db[_0x47a5('0x6d')][_0x47a5('0x27')]({'where':_0x4584f0['where']})[_0x47a5('0x31')](function(_0x281674){_0x35bf37[_0x47a5('0x27')]=_0x281674;if(_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x4e')]){_0x4584f0[_0x47a5('0x4f')]=[{'model':db[_0x47a5('0x70')],'as':_0x47a5('0x71'),'required':![]},{'model':db[_0x47a5('0x72')],'as':_0x47a5('0x73'),'attributes':[_0x47a5('0x34'),_0x47a5('0x74'),'internal'],'required':![]},{'model':db[_0x47a5('0x75')],'as':_0x47a5('0x76'),'attributes':['id','name',_0x47a5('0x77')],'where':_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x78')]?{'id':_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x78')]}:undefined,'required':_0xf3edc8['query'][_0x47a5('0x78')]?!![]:![]}];}return db[_0x47a5('0x6d')][_0x47a5('0x50')](_0x4584f0);})[_0x47a5('0x31')](function(_0x343214){_0x35bf37[_0x47a5('0x67')]=_0x343214;return _0x35bf37;});}})[_0x47a5('0x31')](respondWithFilteredResult(_0x5a316e,_0x4584f0))['catch'](handleError(_0x5a316e,null));};exports['addApplications']=function(_0xa3d578,_0x580ce8,_0xf105b8){return db['FaxAccount'][_0x47a5('0x62')]({'where':{'id':_0xa3d578[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x580ce8,null))[_0x47a5('0x31')](function(_0x49cb8c){if(_0x49cb8c){return db[_0x47a5('0x79')][_0x47a5('0x7a')](function(_0xaca12c){return db['FaxApplication']['destroy']({'where':{'FaxAccountId':_0xa3d578[_0x47a5('0x53')]['id']},'transaction':_0xaca12c})[_0x47a5('0x31')](function(_0x987752){var _0xfccf9c=_[_0x47a5('0x66')](_0xa3d578[_0x47a5('0x56')],function(_0x1c0323){_0x1c0323[_0x47a5('0x60')]=_0xa3d578['params']['id'];return _0x1c0323;});return db[_0x47a5('0x7b')]['bulkCreate'](_0xfccf9c,{'transaction':_0xaca12c});});})[_0x47a5('0x31')](function(){return db[_0x47a5('0x7b')]['findAndCountAll']({'where':{'FaxAccountId':_0xa3d578['params']['id']},'order':_0x47a5('0x7c')});});}})[_0x47a5('0x31')](respondWithResult(_0x580ce8,null))['catch'](handleError(_0x580ce8,null));};exports[_0x47a5('0x7d')]=function(_0x2b2693,_0x29e3ee,_0x44567e){var _0x5a7f32={};var _0x142012={};var _0x490947;var _0x56d81e;return db['FaxAccount'][_0x47a5('0x62')]({'where':{'id':_0x2b2693['params']['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x29e3ee,null))[_0x47a5('0x31')](function(_0x401139){if(_0x401139){_0x490947=_0x401139;_0x142012[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db[_0x47a5('0x7b')][_0x47a5('0x38')]);_0x142012[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0x2b2693[_0x47a5('0x3a')]);_0x142012[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x142012[_0x47a5('0x39')],_0x142012[_0x47a5('0x3a')]);_0x5a7f32[_0x47a5('0x3f')]=_['intersection'](_0x142012[_0x47a5('0x39')],qs[_0x47a5('0x40')](_0x2b2693[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x5a7f32['attributes']=_0x5a7f32[_0x47a5('0x3f')]['length']?_0x5a7f32[_0x47a5('0x3f')]:_0x142012['model'];_0x5a7f32[_0x47a5('0x43')]=qs[_0x47a5('0x44')](_0x2b2693[_0x47a5('0x3a')]['sort']);_0x5a7f32[_0x47a5('0x4a')]=qs[_0x47a5('0x3d')](_[_0x47a5('0x45')](_0x2b2693['query'],_0x142012['filters']));if(_0x2b2693[_0x47a5('0x3a')][_0x47a5('0x65')]){_0x5a7f32[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x5a7f32[_0x47a5('0x4a')],{'$or':_['map'](_0x5a7f32[_0x47a5('0x3f')],function(_0x4b3ae4){var _0xbcd492={};_0xbcd492[_0x4b3ae4]={'$like':'%'+_0x2b2693[_0x47a5('0x3a')][_0x47a5('0x65')]+'%'};return _0xbcd492;})});}_0x5a7f32=_[_0x47a5('0x49')]({},_0x5a7f32,_0x2b2693['options']);return _0x490947['getApplications'](_0x5a7f32);}})[_0x47a5('0x31')](function(_0x20034a){if(_0x20034a){_0x56d81e=_0x20034a[_0x47a5('0x41')];if(!_0x2b2693[_0x47a5('0x3a')][_0x47a5('0x63')](_0x47a5('0x42'))){_0x5a7f32[_0x47a5('0x64')]=qs[_0x47a5('0x64')](_0x2b2693[_0x47a5('0x3a')]['limit']);_0x5a7f32['offset']=qs[_0x47a5('0x28')](_0x2b2693['query'][_0x47a5('0x28')]);}return _0x490947[_0x47a5('0x7d')](_0x5a7f32);}})[_0x47a5('0x31')](function(_0x57ac20){if(_0x57ac20){return _0x57ac20?{'count':_0x56d81e,'rows':_0x57ac20}:null;}})[_0x47a5('0x31')](respondWithResult(_0x29e3ee,null))[_0x47a5('0x51')](handleError(_0x29e3ee,null));};function Extension(_0x4842c5,_0xcb6714,_0x51f6cf,_0x277255){this[_0x47a5('0x7e')]=_0x47a5('0x7f');this['exten']=_0x4842c5['localstationid'];this['app']=_0x277255;this['type']='system';this[_0x47a5('0x80')]='Fax\x20Extension';this[_0x47a5('0x60')]=_0x4842c5['id'];this[_0x47a5('0x7c')]=_0xcb6714;this['appdata']=_0x51f6cf;}function createExtensionsReciveFax(_0x49da2a){var _0x4b3529=0x1;var _0x2a6dca=[];_0x2a6dca['push'](new Extension(_0x49da2a,_0x4b3529,'','Answer'));_0x4b3529+=0x1;_0x2a6dca['push'](new Extension(_0x49da2a,_0x4b3529,_0x47a5('0x81'),_0x47a5('0x82')));_0x4b3529+=0x1;for(var _0x2844e7 in _0x49da2a){if(_0x49da2a[_0x47a5('0x63')](_0x2844e7)&&(_0x2844e7==='ecm'||_0x2844e7===_0x47a5('0x83')||_0x2844e7==='gateway'||_0x2844e7===_0x47a5('0x84')||_0x2844e7==='headerinfo'||_0x2844e7===_0x47a5('0x85')||_0x2844e7===_0x47a5('0x86')||_0x2844e7===_0x47a5('0x87')||_0x2844e7==='t38timeout')){_0x2a6dca[_0x47a5('0x88')](new Extension(_0x49da2a,_0x4b3529,_0x47a5('0x89')+_0x2844e7+')='+_0x49da2a[_0x2844e7],_0x47a5('0x82')));_0x4b3529+=0x1;}}_0x2a6dca[_0x47a5('0x88')](new Extension(_0x49da2a,_0x4b3529,'6','Wait'));_0x4b3529+=0x1;_0x2a6dca[_0x47a5('0x88')](new Extension(_0x49da2a,_0x4b3529,_0x47a5('0x8a'),_0x47a5('0x8b')));_0x4b3529=0x0;return _0x2a6dca;}exports[_0x47a5('0x8c')]=function(_0x1ab5c4,_0x338cf9,_0x598825){var _0x1339db;return db[_0x47a5('0x79')][_0x47a5('0x7a')](function(_0xac8d4f){return db[_0x47a5('0x37')][_0x47a5('0x55')](_0x1ab5c4[_0x47a5('0x56')],{'transaction':_0xac8d4f})[_0x47a5('0x31')](function(_0x408887){_0x1339db=_0x408887[_0x47a5('0x2f')]({'plain':!![]});return db[_0x47a5('0x8d')][_0x47a5('0x8e')](createExtensionsReciveFax(_0x1339db),{'transaction':_0xac8d4f});});})[_0x47a5('0x31')](function(){return _0x1339db;})[_0x47a5('0x31')](respondWithResult(_0x338cf9,null))[_0x47a5('0x51')](handleError(_0x338cf9,null));};exports[_0x47a5('0x8f')]=function(_0x40505e,_0x4c181e,_0xe0376c){var _0x5ee5c5;return db['sequelize'][_0x47a5('0x7a')](function(_0x154365){return db[_0x47a5('0x37')]['update'](_0x40505e[_0x47a5('0x56')],{'where':{'id':_0x40505e[_0x47a5('0x56')]['id']},'transaction':_0x154365})[_0x47a5('0x31')](function(_0x3e8fce){return db[_0x47a5('0x8d')][_0x47a5('0x2e')]({'where':{'FaxAccountId':_0x40505e[_0x47a5('0x56')]['id']},'transaction':_0x154365})[_0x47a5('0x31')](function(_0x176e71){return db[_0x47a5('0x8d')][_0x47a5('0x8e')](createExtensionsReciveFax(_[_0x47a5('0x90')](_0x40505e[_0x47a5('0x56')],['tech','key',_0x47a5('0x91'),'updatedAt',_0x47a5('0x92'),_0x47a5('0x93')])),{'transaction':_0x154365});});});})[_0x47a5('0x31')](function(){return db[_0x47a5('0x37')][_0x47a5('0x94')](_0x40505e[_0x47a5('0x56')]['id']);})['then'](respondWithResult(_0x4c181e,null))[_0x47a5('0x51')](handleError(_0x4c181e,null));};exports[_0x47a5('0x95')]=function(_0x380eca,_0x5ca5bc,_0x19c94a){var _0x439f60={'raw':!![],'where':{}};var _0x3ecc41={};var _0x3e4148={'count':0x0,'rows':[]};return db[_0x47a5('0x37')][_0x47a5('0x62')]({'where':{'id':_0x380eca[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x5ca5bc,null))[_0x47a5('0x31')](function(_0x1a4346){if(_0x1a4346){_0x3ecc41[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db[_0x47a5('0x96')][_0x47a5('0x38')]);_0x3ecc41[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0x380eca[_0x47a5('0x3a')]);_0x3ecc41[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x3ecc41[_0x47a5('0x39')],_0x3ecc41[_0x47a5('0x3a')]);_0x439f60[_0x47a5('0x3f')]=_['intersection'](_0x3ecc41[_0x47a5('0x39')],qs['fields'](_0x380eca[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x439f60[_0x47a5('0x3f')]=_0x439f60[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x439f60[_0x47a5('0x3f')]:_0x3ecc41[_0x47a5('0x39')];if(!_0x380eca[_0x47a5('0x3a')]['hasOwnProperty'](_0x47a5('0x42'))){_0x439f60[_0x47a5('0x64')]=qs[_0x47a5('0x64')](_0x380eca['query'][_0x47a5('0x64')]);_0x439f60[_0x47a5('0x28')]=qs[_0x47a5('0x28')](_0x380eca[_0x47a5('0x3a')]['offset']);}_0x439f60[_0x47a5('0x43')]=qs[_0x47a5('0x44')](_0x380eca[_0x47a5('0x3a')][_0x47a5('0x44')]);_0x439f60['where']=qs[_0x47a5('0x3d')](_['pick'](_0x380eca['query'],_0x3ecc41[_0x47a5('0x3d')]));_0x439f60[_0x47a5('0x4a')][_0x47a5('0x60')]=_0x1a4346['id'];if(_0x380eca[_0x47a5('0x3a')]['filter']){_0x439f60[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x439f60[_0x47a5('0x4a')],{'$or':_[_0x47a5('0x66')](_0x439f60[_0x47a5('0x3f')],function(_0x25549e){var _0x5eae8d={};_0x5eae8d[_0x25549e]={'$like':'%'+_0x380eca[_0x47a5('0x3a')][_0x47a5('0x65')]+'%'};return _0x5eae8d;})});}if(_0x380eca[_0x47a5('0x3a')][_0x47a5('0x97')]){var _0x201ed8=_0x380eca['query'][_0x47a5('0x97')]['split'](',');var _0x1fc6e9={};_0x1fc6e9[_0x201ed8[0x0]]={'$gte':moment(_0x201ed8[0x1])['format'](_0x47a5('0x98'))};_0x439f60['where']=_['merge'](_0x439f60[_0x47a5('0x4a')],_0x1fc6e9);}_0x439f60=_[_0x47a5('0x49')]({},_0x439f60,_0x380eca['options']);return db[_0x47a5('0x96')][_0x47a5('0x27')]({'where':_0x439f60['where']})[_0x47a5('0x31')](function(_0x112e1e){_0x3e4148[_0x47a5('0x27')]=_0x112e1e;if(_0x380eca['query'][_0x47a5('0x4e')]){_0x439f60[_0x47a5('0x4f')]=[{'all':!![]}];}return db[_0x47a5('0x96')][_0x47a5('0x50')](_0x439f60);})[_0x47a5('0x31')](function(_0x53cc9e){_0x3e4148['rows']=_0x53cc9e;return _0x3e4148;});}})[_0x47a5('0x31')](respondWithFilteredResult(_0x5ca5bc,_0x439f60))['catch'](handleError(_0x5ca5bc,null));};exports[_0x47a5('0x35')]=function(_0xa5e1f6,_0x5f5bdc,_0x50372c){var _0xb065db,_0x4997bc={},_0x1e38ce;if(_0xa5e1f6[_0x47a5('0x56')]['to']){_0x1e38ce=_0xa5e1f6[_0x47a5('0x56')]['to'][0x0];}return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0xa5e1f6[_0x47a5('0x53')]['id']},'include':[{'model':db[_0x47a5('0x99')],'as':'List','include':[{'model':db[_0x47a5('0x70')],'as':'Contacts','where':{'fax':_0x1e38ce},'limit':0x1,'order':[[_0x47a5('0x9a'),_0x47a5('0x9b')]]}]}]})[_0x47a5('0x31')](handleEntityNotFound(_0x5f5bdc,null))[_0x47a5('0x31')](function(_0x16f359){_0xb065db=_0x16f359;if(_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')]&&_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][_0x47a5('0x41')]){for(var _0x273f29=0x0;_0x273f29<_0xa5e1f6[_0x47a5('0x56')]['attachments'][_0x47a5('0x41')];_0x273f29+=0x1){_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][_0x273f29]={'filename':_0xa5e1f6['body'][_0x47a5('0x9c')][_0x273f29][_0x47a5('0x34')],'id':_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][_0x273f29]['id'],'path':path[_0x47a5('0x9d')](config[_0x47a5('0x9e')],'server/files/attachments',_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][_0x273f29][_0x47a5('0x9f')])};}}return respondWithRpcPromise(_0x47a5('0xa0'),_0x47a5('0xa0'),{'FaxAccountId':_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x53')]['id'])?undefined:_0xa5e1f6[_0x47a5('0x53')]['id'],'path':_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x56')]['attachments'][0x0]['path'])?undefined:_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0][_0x47a5('0x8')],'fax':_['isNil'](_0xa5e1f6[_0x47a5('0x56')]['to'][0x0])?undefined:_0xa5e1f6['body']['to'][0x0]},client9002);})['then'](function(){if(_0xb065db){if(_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0xa2')])){_0xa5e1f6[_0x47a5('0x56')]['from']=util[_0x47a5('0xa3')](_0x47a5('0xa4'),_0xb065db['name'],_0xb065db['fax']);}if(_0xb065db['List']){if(_0xb065db[_0x47a5('0xa5')][_0x47a5('0xa6')][_0x47a5('0x41')]){return _0xb065db[_0x47a5('0xa5')][_0x47a5('0xa6')][0x0];}else{return db['CmContact']['create'](_[_0x47a5('0x13')](_0xa5e1f6[_0x47a5('0x56')],{'firstName':_0xa5e1f6[_0x47a5('0x56')]['to'][0x0],'phone':_0xa5e1f6[_0x47a5('0x56')]['to'][0x0],'fax':_0xa5e1f6['body']['to'][0x0],'ListId':_0xb065db[_0x47a5('0x93')]}));}}else{throw new Error(_0x47a5('0xa7'));}}else{throw new Error(_0x47a5('0xa8'));}})[_0x47a5('0x31')](function(_0x5e7fac){if(_0x5e7fac){return db['FaxInteraction']['find']({'where':{'ContactId':_0x5e7fac['id'],'closed':![],'FaxAccountId':_0xb065db['id']}})[_0x47a5('0x31')](function(_0x15ddfc){if(_0x15ddfc){return[_0x15ddfc,![]];}return db[_0x47a5('0x6d')][_0x47a5('0x55')]({'UserId':_0xa5e1f6[_0x47a5('0x59')]['id'],'ContactId':_0x5e7fac['id'],'FaxAccountId':_0xb065db['id'],'fax':_0xa5e1f6[_0x47a5('0x56')]['to'][0x0],'firstMsgDirection':_0x47a5('0xa9'),'Messages':[_[_0x47a5('0x49')](_0xa5e1f6[_0x47a5('0x56')],{'read':![],'body':_0xa5e1f6['body'][_0x47a5('0x9c')][0x0][_0x47a5('0xaa')],'FaxAccountId':_0xb065db['id'],'UserId':_0xa5e1f6['user']['id'],'ContactId':_0x5e7fac['id'],'AttachmentId':_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0]['id']})]},{'include':[{'model':db[_0x47a5('0x96')],'as':_0x47a5('0xab')}]})['then'](function(_0xbf131c){return[_0xbf131c,!![]];});});}else{throw new Error(_0x47a5('0xac'));}})[_0x47a5('0xad')](function(_0x51e2c0,_0x5da197){if(_0x5da197){return _0x51e2c0;}return db[_0x47a5('0x96')]['create']({'direction':_0x47a5('0xa9'),'read':![],'body':_0xa5e1f6['body'][_0x47a5('0x9c')][0x0][_0x47a5('0xaa')],'FaxAccountId':_0xb065db['id'],'FaxInteractionId':_0x51e2c0['id'],'UserId':_0xa5e1f6[_0x47a5('0x59')]['id'],'ContactId':_0x51e2c0[_0x47a5('0xae')],'AttachmentId':_0xa5e1f6[_0x47a5('0x56')]['attachments'][0x0]['id']})['then'](function(_0x1b6b29){_0x51e2c0[_0x47a5('0xaf')][_0x47a5('0xab')]=[];_0x51e2c0[_0x47a5('0xaf')]['Messages']['push'](_0x1b6b29[_0x47a5('0xaf')]);return _0x51e2c0;});})['then'](function(_0x2a9619){respondWithRpcPromise('SendFax',_0x47a5('0xb0'),{'FaxAccountId':_['isNil'](_0xa5e1f6[_0x47a5('0x53')]['id'])?undefined:_0xa5e1f6[_0x47a5('0x53')]['id'],'path':_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0][_0x47a5('0x8')])?undefined:_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0]['path'],'fax':_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x56')]['to'][0x0])?undefined:_0xa5e1f6['body']['to'][0x0],'AttachmentId':_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0]['id']},client9002)['then'](function(_0x54d5bc){logger[_0x47a5('0x1b')]('SendFaxRpc,\x20%s',_0x54d5bc);})[_0x47a5('0x51')](function(_0x181b57){logger[_0x47a5('0x1b')]('SendFaxRpc,\x20%s',_0x181b57);});return _0x2a9619;})[_0x47a5('0x31')](respondWithResult(_0x5f5bdc,null))[_0x47a5('0x51')](handleError(_0x5f5bdc,null));};exports[_0x47a5('0xb1')]=function(_0x45dd6b,_0x19c824,_0x454609){return db[_0x47a5('0x37')]['find']({'where':{'id':_0x45dd6b[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x19c824,null))[_0x47a5('0x31')](function(_0xa6c86e){if(_0xa6c86e){return _0xa6c86e[_0x47a5('0xb1')](_0x45dd6b[_0x47a5('0x56')][_0x47a5('0x6c')],_['omit'](_0x45dd6b['body'],[_0x47a5('0x6c'),'id'])||{})[_0x47a5('0xad')](function(_0x2d0c51){for(var _0x4bbc94=0x0;_0x4bbc94<_0x45dd6b['body'][_0x47a5('0x6c')][_0x47a5('0x41')];_0x4bbc94+=0x1){socket[_0x47a5('0xb2')](_0x47a5('0xb3'),{'UserId':_0x45dd6b[_0x47a5('0x56')][_0x47a5('0x6c')][_0x4bbc94],'FaxAccountId':_0x45dd6b[_0x47a5('0x53')]['id']});}return _0x2d0c51;});}})['then'](respondWithResult(_0x19c824,null))[_0x47a5('0x51')](handleError(_0x19c824,null));};exports[_0x47a5('0xb4')]=function(_0x8a7b09,_0x540d7f,_0xc5f4a6){var _0x611b40;return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0x8a7b09[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x540d7f,null))[_0x47a5('0x31')](function(_0x3a52cf){if(_0x3a52cf){return _0x3a52cf[_0x47a5('0xb4')](_0x8a7b09[_0x47a5('0x3a')][_0x47a5('0x6c')])[_0x47a5('0x31')](function(_0x3bd9cf){if(_['isArray'](_0x8a7b09[_0x47a5('0x3a')]['ids'])){for(var _0x2e6477=0x0;_0x2e6477<_0x8a7b09['query'][_0x47a5('0x6c')][_0x47a5('0x41')];_0x2e6477+=0x1){socket[_0x47a5('0xb2')]('userFaxAccount:remove',{'UserId':_0x8a7b09[_0x47a5('0x3a')]['ids'][_0x2e6477],'FaxAccountId':_0x8a7b09[_0x47a5('0x53')]['id']});}}else{socket[_0x47a5('0xb2')](_0x47a5('0xb5'),{'UserId':_0x8a7b09[_0x47a5('0x3a')]['ids'],'FaxAccountId':_0x8a7b09[_0x47a5('0x53')]['id']});}});}})['then'](respondWithStatusCode(_0x540d7f,null))['catch'](handleError(_0x540d7f,null));};exports[_0x47a5('0xb6')]=function(_0x15e970,_0x41c23d,_0x17b95a){var _0x184a18={};var _0x11ae07={};var _0x10a789;var _0x33ac8b;return db[_0x47a5('0x37')]['findOne']({'where':{'id':_0x15e970['params']['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x41c23d,null))[_0x47a5('0x31')](function(_0x370de1){if(_0x370de1){_0x10a789=_0x370de1;_0x11ae07[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db['User'][_0x47a5('0x38')]);_0x11ae07[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0x15e970['query']);_0x11ae07['filters']=_[_0x47a5('0x3e')](_0x11ae07[_0x47a5('0x39')],_0x11ae07['query']);_0x184a18[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x11ae07[_0x47a5('0x39')],qs['fields'](_0x15e970[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x184a18[_0x47a5('0x3f')]=_0x184a18[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x184a18['attributes']:_0x11ae07[_0x47a5('0x39')];_0x184a18[_0x47a5('0x43')]=qs[_0x47a5('0x44')](_0x15e970[_0x47a5('0x3a')]['sort']);_0x184a18['where']=qs[_0x47a5('0x3d')](_['pick'](_0x15e970[_0x47a5('0x3a')],_0x11ae07[_0x47a5('0x3d')]));if(_0x15e970[_0x47a5('0x3a')][_0x47a5('0x65')]){_0x184a18[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x184a18['where'],{'$or':_[_0x47a5('0x66')](_0x184a18[_0x47a5('0x3f')],function(_0x32143a){var _0x52864b={};_0x52864b[_0x32143a]={'$like':'%'+_0x15e970['query'][_0x47a5('0x65')]+'%'};return _0x52864b;})});}_0x184a18=_['merge']({},_0x184a18,_0x15e970[_0x47a5('0x4d')]);return _0x10a789[_0x47a5('0xb6')](_0x184a18);}})[_0x47a5('0x31')](function(_0x22390f){if(_0x22390f){_0x33ac8b=_0x22390f[_0x47a5('0x41')];if(!_0x15e970['query']['hasOwnProperty'](_0x47a5('0x42'))){_0x184a18[_0x47a5('0x64')]=qs[_0x47a5('0x64')](_0x15e970[_0x47a5('0x3a')][_0x47a5('0x64')]);_0x184a18['offset']=qs[_0x47a5('0x28')](_0x15e970[_0x47a5('0x3a')][_0x47a5('0x28')]);}return _0x10a789[_0x47a5('0xb6')](_0x184a18);}})[_0x47a5('0x31')](function(_0x4df71d){if(_0x4df71d){return _0x4df71d?{'count':_0x33ac8b,'rows':_0x4df71d}:null;}})[_0x47a5('0x31')](respondWithResult(_0x41c23d,null))[_0x47a5('0x51')](handleError(_0x41c23d,null));};
\ No newline at end of file
+var _0x7a54=['removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','FaxInteraction','addInteraction','getInteractions','CmContact','Contact','User','Owner','fullname','Tag','Tags','color','tag','sequelize','transaction','FaxApplication','priority','getApplications','context','from-voip-provider','description','CDR(type)=inbound-fax','Set','localstationid','faxdetect','maxrate','minrate','modem','push','FAXOPT(','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','bulkCreate','updateAccountApplications','omit','createdAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','YYYY-MM-DD\x20HH:mm:ss','CmList','updatedAt','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','format','\x22%s\x22\x20<%s>','List','Contacts','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','squel','crypto','desk.js','ioredis','../../components/parsers/qs','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','status','json','count','offset','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','then','sendStatus','stack','name','send','index','FaxAccount','rawAttributes','model','query','dateEnd','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','dateStart','add','day','merge','where','key','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','findOne','hasOwnProperty','limit','filter','map','rows'];(function(_0x42b0f6,_0x437eec){var _0x4a54eb=function(_0x40b25a){while(--_0x40b25a){_0x42b0f6['push'](_0x42b0f6['shift']());}};_0x4a54eb(++_0x437eec);}(_0x7a54,0x106));var _0x47a5=function(_0x15eb42,_0x31ca30){_0x15eb42=_0x15eb42-0x0;var _0x1aa176=_0x7a54[_0x15eb42];return _0x1aa176;};'use strict';var pdf=require(_0x47a5('0x0'));var emlformat=require(_0x47a5('0x1'));var rimraf=require(_0x47a5('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x47a5('0x3'));var rp=require(_0x47a5('0x4'));var moment=require('moment');var BPromise=require(_0x47a5('0x5'));var Mustache=require(_0x47a5('0x6'));var util=require(_0x47a5('0x7'));var path=require(_0x47a5('0x8'));var sox=require(_0x47a5('0x9'));var csv=require('to-csv');var ejs=require(_0x47a5('0xa'));var fs=require('fs');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 qs=require(_0x47a5('0xf'));var logger=require('../../config/logger')(_0x47a5('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x47a5('0x11'))['db'];config[_0x47a5('0x12')]=_[_0x47a5('0x13')](config[_0x47a5('0x12')],{'host':_0x47a5('0x14'),'port':0x18eb});var socket=require(_0x47a5('0x15'))(new Redis(config[_0x47a5('0x12')]));require('./faxAccount.socket')[_0x47a5('0x16')](socket);var jayson=require(_0x47a5('0x17'));var client=jayson[_0x47a5('0x18')][_0x47a5('0x19')]({'port':0x232c});var client9002=jayson[_0x47a5('0x18')][_0x47a5('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x3c6c46,_0x190faa,_0x4e99a8,_0x362359){return new BPromise(function(_0x11faf5,_0x3b001e){var _0x2a2cbb=_0x362359||client;return _0x2a2cbb[_0x47a5('0x1a')](_0x3c6c46,_0x4e99a8)['then'](function(_0x549de3){logger[_0x47a5('0x1b')]('FaxAccount,\x20%s,\x20%s',_0x190faa,'request\x20sent');logger[_0x47a5('0x1c')](_0x47a5('0x1d'),_0x190faa,_0x47a5('0x1e'),JSON[_0x47a5('0x1f')](_0x549de3));if(_0x549de3[_0x47a5('0x20')]){if(_0x549de3[_0x47a5('0x20')][_0x47a5('0x21')]===0x1f4){logger[_0x47a5('0x20')](_0x47a5('0x22'),_0x190faa,_0x549de3['error'][_0x47a5('0x23')]);return _0x3b001e(_0x549de3[_0x47a5('0x20')]['message']);}logger[_0x47a5('0x20')](_0x47a5('0x22'),_0x190faa,_0x549de3[_0x47a5('0x20')]['message']);return _0x11faf5(_0x549de3[_0x47a5('0x20')][_0x47a5('0x23')]);}else{logger[_0x47a5('0x1b')](_0x47a5('0x22'),_0x190faa,'request\x20sent');_0x11faf5(_0x549de3[_0x47a5('0x24')][_0x47a5('0x23')]);}})['catch'](function(_0x28747d){logger[_0x47a5('0x20')](_0x47a5('0x22'),_0x190faa,_0x28747d);_0x3b001e(_0x28747d);});});}function respondWithStatusCode(_0x129ce5,_0x3abd6a){_0x3abd6a=_0x3abd6a||0xcc;return function(_0x50bf17){if(_0x50bf17){return _0x129ce5['sendStatus'](_0x3abd6a);}return _0x129ce5[_0x47a5('0x25')](_0x3abd6a)['end']();};}function respondWithResult(_0x1ea9c8,_0x5b6c4e){_0x5b6c4e=_0x5b6c4e||0xc8;return function(_0x23cb77){if(_0x23cb77){return _0x1ea9c8[_0x47a5('0x25')](_0x5b6c4e)[_0x47a5('0x26')](_0x23cb77);}};}function respondWithFilteredResult(_0x1dac65,_0x21f296){return function(_0x3ba0b7){if(_0x3ba0b7){var _0x24b162=_0x3ba0b7[_0x47a5('0x27')],_0x136b14=_0x21f296[_0x47a5('0x28')],_0x16631f=_0x21f296[_0x47a5('0x28')]+_0x21f296['limit'],_0x361bfa;if(_0x16631f>=_0x24b162){_0x16631f=_0x24b162;_0x361bfa=0xc8;}else{_0x361bfa=0xce;}_0x1dac65[_0x47a5('0x25')](_0x361bfa);return _0x1dac65['set'](_0x47a5('0x29'),_0x136b14+'-'+_0x16631f+'/'+_0x24b162)[_0x47a5('0x26')](_0x3ba0b7);}return null;};}function patchUpdates(_0x16901f){return function(_0x4d6b57){try{jsonpatch[_0x47a5('0x2a')](_0x4d6b57,_0x16901f,!![]);}catch(_0x625952){return BPromise[_0x47a5('0x2b')](_0x625952);}return _0x4d6b57[_0x47a5('0x2c')]();};}function saveUpdates(_0x51cc81,_0x50d875){return function(_0x6f9a12){if(_0x6f9a12){return _0x6f9a12[_0x47a5('0x2d')](_0x51cc81)['then'](function(_0x4e1006){return _0x4e1006;});}return null;};}function removeEntity(_0x836303,_0x51544e){return function(_0x57bff6){if(_0x57bff6){return _0x57bff6[_0x47a5('0x2e')]()['then'](function(){var _0x122ed6=_0x57bff6[_0x47a5('0x2f')]({'plain':!![]});var _0x5c5162='FaxAccounts';return db[_0x47a5('0x30')]['destroy']({'where':{'type':_0x5c5162,'resourceId':_0x122ed6['id']}})[_0x47a5('0x31')](function(){return _0x57bff6;});})[_0x47a5('0x31')](function(){_0x836303[_0x47a5('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18f7e9,_0x50c086){return function(_0x53c754){if(!_0x53c754){_0x18f7e9[_0x47a5('0x32')](0x194);}return _0x53c754;};}function handleError(_0x5a8a7c,_0x25cce0){_0x25cce0=_0x25cce0||0x1f4;return function(_0x5ef577){logger[_0x47a5('0x20')](_0x5ef577[_0x47a5('0x33')]);if(_0x5ef577[_0x47a5('0x34')]){delete _0x5ef577[_0x47a5('0x34')];}_0x5a8a7c[_0x47a5('0x25')](_0x25cce0)[_0x47a5('0x35')](_0x5ef577);};}exports[_0x47a5('0x36')]=function(_0x452be5,_0x1a0d23){var _0x4caed5={},_0x396a9a={},_0x10f136={'count':0x0,'rows':[]};var _0x511c06=db[_0x47a5('0x37')][_0x47a5('0x38')];_0x396a9a[_0x47a5('0x39')]=_['keys'](_0x511c06);var _0x101f70={'dateStart':_0x452be5[_0x47a5('0x3a')]['dateStart'],'dateEnd':_0x452be5[_0x47a5('0x3a')][_0x47a5('0x3b')]};delete _0x452be5['query']['dateStart'];delete _0x452be5['query'][_0x47a5('0x3b')];_0x396a9a['query']=_[_0x47a5('0x3c')](_0x452be5[_0x47a5('0x3a')]);_0x396a9a[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x396a9a[_0x47a5('0x39')],_0x396a9a[_0x47a5('0x3a')]);_0x4caed5[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x396a9a[_0x47a5('0x39')],qs[_0x47a5('0x40')](_0x452be5[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x4caed5[_0x47a5('0x3f')]=_0x4caed5['attributes'][_0x47a5('0x41')]?_0x4caed5[_0x47a5('0x3f')]:_0x396a9a[_0x47a5('0x39')];if(!_0x452be5[_0x47a5('0x3a')]['hasOwnProperty'](_0x47a5('0x42'))){_0x4caed5['limit']=qs['limit'](_0x452be5['query']['limit']);_0x4caed5[_0x47a5('0x28')]=qs['offset'](_0x452be5[_0x47a5('0x3a')][_0x47a5('0x28')]);}_0x4caed5[_0x47a5('0x43')]=qs['sort'](_0x452be5[_0x47a5('0x3a')][_0x47a5('0x44')]);_0x4caed5['where']=qs['filters'](_[_0x47a5('0x45')](_0x452be5['query'],_0x396a9a[_0x47a5('0x3d')]));if(_0x101f70[_0x47a5('0x46')]){if(_0x101f70[_0x47a5('0x3b')]){_0x101f70[_0x47a5('0x3b')]=moment(_0x101f70[_0x47a5('0x3b')])[_0x47a5('0x47')](0x1,_0x47a5('0x48'));}else{_0x101f70[_0x47a5('0x3b')]=moment(_0x101f70[_0x47a5('0x46')])[_0x47a5('0x47')](0x1,_0x47a5('0x48'));}_[_0x47a5('0x49')](_0x4caed5[_0x47a5('0x4a')],{'createdAt':{'$gte':_0x101f70[_0x47a5('0x46')],'$lte':_0x101f70[_0x47a5('0x3b')]}});}if(_0x452be5[_0x47a5('0x3a')]['filter']){_0x4caed5[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x4caed5['where'],{'$or':_['map'](_0x511c06,function(_0x3d0a88){if(_0x3d0a88['type'][_0x47a5('0x4b')]!==_0x47a5('0x4c')){var _0x54c35f={};_0x54c35f[_0x3d0a88['field']]={'$like':'%'+_0x452be5[_0x47a5('0x3a')]['filter']+'%'};return _0x54c35f;}})});}_0x4caed5=_[_0x47a5('0x49')]({},_0x4caed5,_0x452be5[_0x47a5('0x4d')]);var _0x3548bc={'where':_0x4caed5[_0x47a5('0x4a')]};return db[_0x47a5('0x37')][_0x47a5('0x27')](_0x3548bc)[_0x47a5('0x31')](function(_0x53e994){_0x10f136['count']=_0x53e994;if(_0x452be5[_0x47a5('0x3a')][_0x47a5('0x4e')]){_0x4caed5[_0x47a5('0x4f')]=[{'all':!![]}];}return db[_0x47a5('0x37')][_0x47a5('0x50')](_0x4caed5);})[_0x47a5('0x31')](function(_0x249de5){_0x10f136['rows']=_0x249de5;return _0x10f136;})[_0x47a5('0x31')](respondWithFilteredResult(_0x1a0d23,_0x4caed5))[_0x47a5('0x51')](handleError(_0x1a0d23,null));};exports[_0x47a5('0x52')]=function(_0x5c3c75,_0x12ca40){var _0x54bd83={'raw':![],'where':{'id':_0x5c3c75[_0x47a5('0x53')]['id']}},_0x2bf302={};_0x2bf302[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db['FaxAccount'][_0x47a5('0x38')]);_0x2bf302[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0x5c3c75[_0x47a5('0x3a')]);_0x2bf302[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x2bf302[_0x47a5('0x39')],_0x2bf302['query']);_0x54bd83[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x2bf302[_0x47a5('0x39')],qs[_0x47a5('0x40')](_0x5c3c75[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x54bd83['attributes']=_0x54bd83[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x54bd83[_0x47a5('0x3f')]:_0x2bf302['model'];if(_0x5c3c75[_0x47a5('0x3a')][_0x47a5('0x4e')]){_0x54bd83[_0x47a5('0x4f')]=[{'all':!![]}];}_0x54bd83=_['merge']({},_0x54bd83,_0x5c3c75['options']);return db[_0x47a5('0x37')][_0x47a5('0x54')](_0x54bd83)['then'](handleEntityNotFound(_0x12ca40,null))['then'](respondWithResult(_0x12ca40,null))[_0x47a5('0x51')](handleError(_0x12ca40,null));};exports['create']=function(_0x16bb8a,_0x5d383d){return db['FaxAccount'][_0x47a5('0x55')](_0x16bb8a[_0x47a5('0x56')],{})['then'](function(_0x1b958b){var _0x72fe=_0x16bb8a['user']['get']({'plain':!![]});if(!_0x72fe)throw new Error(_0x47a5('0x57'));if(_0x72fe[_0x47a5('0x58')]===_0x47a5('0x59')){var _0x2931e4=_0x1b958b['get']({'plain':!![]});var _0x199621=_0x47a5('0x5a');return db[_0x47a5('0x5b')]['find']({'where':{'name':_0x199621,'userProfileId':_0x72fe[_0x47a5('0x5c')]},'raw':!![]})['then'](function(_0x485e3c){if(_0x485e3c&&_0x485e3c[_0x47a5('0x5d')]===0x0){return db[_0x47a5('0x30')][_0x47a5('0x55')]({'name':_0x2931e4[_0x47a5('0x34')],'resourceId':_0x2931e4['id'],'type':_0x485e3c['name'],'sectionId':_0x485e3c['id']},{})[_0x47a5('0x31')](function(){return _0x1b958b;});}else{return _0x1b958b;}})['catch'](function(_0x5cbe97){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5cbe97);throw _0x5cbe97;});}return _0x1b958b;})[_0x47a5('0x31')](respondWithResult(_0x5d383d,0xc9))[_0x47a5('0x51')](handleError(_0x5d383d,null));};exports[_0x47a5('0x2d')]=function(_0x52e3ee,_0x4d3db1){if(_0x52e3ee[_0x47a5('0x56')]['id']){delete _0x52e3ee[_0x47a5('0x56')]['id'];}return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0x52e3ee[_0x47a5('0x53')]['id']}})['then'](handleEntityNotFound(_0x4d3db1,null))[_0x47a5('0x31')](saveUpdates(_0x52e3ee['body'],null))[_0x47a5('0x31')](respondWithResult(_0x4d3db1,null))[_0x47a5('0x51')](handleError(_0x4d3db1,null));};exports['destroy']=function(_0x32b4de,_0x345104){return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0x32b4de[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x345104,null))[_0x47a5('0x31')](removeEntity(_0x345104,null))[_0x47a5('0x51')](handleError(_0x345104,null));};exports['describe']=function(_0x2dcc3b,_0x2a3a57){return db[_0x47a5('0x37')][_0x47a5('0x5e')]()[_0x47a5('0x31')](respondWithResult(_0x2a3a57,null))['catch'](handleError(_0x2a3a57,null));};exports[_0x47a5('0x5f')]=function(_0xdfcecc,_0x1224bc,_0x144aaa){if(_0xdfcecc[_0x47a5('0x56')]['id']){delete _0xdfcecc[_0x47a5('0x56')]['id'];}return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0xdfcecc[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x1224bc,null))[_0x47a5('0x31')](function(_0x44fda9){if(_0x44fda9){_0xdfcecc[_0x47a5('0x56')][_0x47a5('0x60')]=_0x44fda9['id'];return db[_0x47a5('0x61')]['create'](_0xdfcecc[_0x47a5('0x56')]);}})[_0x47a5('0x31')](respondWithResult(_0x1224bc,null))[_0x47a5('0x51')](handleError(_0x1224bc,null));};exports['getDispositions']=function(_0x37ac59,_0x2e46af,_0x36c67){var _0x26f1ac={'raw':![],'where':{}};var _0x5d9822={};var _0x3ac402={'count':0x0,'rows':[]};return db['FaxAccount'][_0x47a5('0x62')]({'where':{'id':_0x37ac59['params']['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x2e46af,null))['then'](function(_0x7c1190){if(_0x7c1190){_0x5d9822[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db['Disposition']['rawAttributes']);_0x5d9822['query']=_[_0x47a5('0x3c')](_0x37ac59[_0x47a5('0x3a')]);_0x5d9822[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x5d9822['model'],_0x5d9822[_0x47a5('0x3a')]);_0x26f1ac[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x5d9822[_0x47a5('0x39')],qs[_0x47a5('0x40')](_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x26f1ac[_0x47a5('0x3f')]=_0x26f1ac[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x26f1ac[_0x47a5('0x3f')]:_0x5d9822[_0x47a5('0x39')];if(!_0x37ac59['query'][_0x47a5('0x63')]('nolimit')){_0x26f1ac[_0x47a5('0x64')]=qs[_0x47a5('0x64')](_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x64')]);_0x26f1ac[_0x47a5('0x28')]=qs[_0x47a5('0x28')](_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x28')]);}_0x26f1ac[_0x47a5('0x43')]=qs[_0x47a5('0x44')](_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x44')]);_0x26f1ac[_0x47a5('0x4a')]=qs[_0x47a5('0x3d')](_[_0x47a5('0x45')](_0x37ac59['query'],_0x5d9822['filters']));_0x26f1ac['where']['FaxAccountId']=_0x7c1190['id'];if(_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x65')]){_0x26f1ac['where']=_[_0x47a5('0x49')](_0x26f1ac[_0x47a5('0x4a')],{'$or':_[_0x47a5('0x66')](_0x26f1ac[_0x47a5('0x3f')],function(_0x3cd335){var _0x930d25={};_0x930d25[_0x3cd335]={'$like':'%'+_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x65')]+'%'};return _0x930d25;})});}_0x26f1ac=_[_0x47a5('0x49')]({},_0x26f1ac,_0x37ac59[_0x47a5('0x4d')]);return db[_0x47a5('0x61')]['count']({'where':_0x26f1ac[_0x47a5('0x4a')]})[_0x47a5('0x31')](function(_0x420671){_0x3ac402['count']=_0x420671;if(_0x37ac59[_0x47a5('0x3a')][_0x47a5('0x4e')]){_0x26f1ac[_0x47a5('0x4f')]=[{'all':!![]}];}return db['Disposition'][_0x47a5('0x50')](_0x26f1ac);})['then'](function(_0x49d93d){_0x3ac402[_0x47a5('0x67')]=_0x49d93d;return _0x3ac402;});}})[_0x47a5('0x31')](respondWithFilteredResult(_0x2e46af,_0x26f1ac))[_0x47a5('0x51')](handleError(_0x2e46af,null));};exports[_0x47a5('0x68')]=function(_0x164d42,_0xea50f3,_0x479a82){var _0x592322;return db[_0x47a5('0x37')]['find']({'where':{'id':_0x164d42[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0xea50f3,null))[_0x47a5('0x31')](function(_0xb16bdd){if(_0xb16bdd){return _0xb16bdd['removeDispositions'](_0x164d42[_0x47a5('0x3a')]['ids']);}})['then'](respondWithStatusCode(_0xea50f3,null))[_0x47a5('0x51')](handleError(_0xea50f3,null));};exports[_0x47a5('0x69')]=function(_0x5b91f7,_0x1926bd,_0x21828e){if(_0x5b91f7[_0x47a5('0x56')]['id']){delete _0x5b91f7['body']['id'];}return db[_0x47a5('0x37')]['find']({'where':{'id':_0x5b91f7[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x1926bd,null))[_0x47a5('0x31')](function(_0x4a5ca1){if(_0x4a5ca1){_0x5b91f7[_0x47a5('0x56')][_0x47a5('0x60')]=_0x4a5ca1['id'];return db[_0x47a5('0x6a')]['create'](_0x5b91f7[_0x47a5('0x56')]);}})['then'](respondWithResult(_0x1926bd,null))[_0x47a5('0x51')](handleError(_0x1926bd,null));};exports['getAnswers']=function(_0x135d2e,_0x20d8bd,_0x20a742){var _0x211fbf={'raw':![],'where':{}};var _0x51738b={};var _0x42fcce={'count':0x0,'rows':[]};return db[_0x47a5('0x37')][_0x47a5('0x62')]({'where':{'id':_0x135d2e[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x20d8bd,null))['then'](function(_0x56c35e){if(_0x56c35e){_0x51738b[_0x47a5('0x39')]=_['keys'](db[_0x47a5('0x6a')][_0x47a5('0x38')]);_0x51738b[_0x47a5('0x3a')]=_['keys'](_0x135d2e[_0x47a5('0x3a')]);_0x51738b[_0x47a5('0x3d')]=_['intersection'](_0x51738b[_0x47a5('0x39')],_0x51738b[_0x47a5('0x3a')]);_0x211fbf[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x51738b['model'],qs['fields'](_0x135d2e[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x211fbf['attributes']=_0x211fbf[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x211fbf['attributes']:_0x51738b[_0x47a5('0x39')];if(!_0x135d2e[_0x47a5('0x3a')][_0x47a5('0x63')]('nolimit')){_0x211fbf[_0x47a5('0x64')]=qs['limit'](_0x135d2e[_0x47a5('0x3a')]['limit']);_0x211fbf[_0x47a5('0x28')]=qs[_0x47a5('0x28')](_0x135d2e['query'][_0x47a5('0x28')]);}_0x211fbf['order']=qs[_0x47a5('0x44')](_0x135d2e[_0x47a5('0x3a')][_0x47a5('0x44')]);_0x211fbf[_0x47a5('0x4a')]=qs['filters'](_[_0x47a5('0x45')](_0x135d2e['query'],_0x51738b['filters']));_0x211fbf[_0x47a5('0x4a')][_0x47a5('0x60')]=_0x56c35e['id'];if(_0x135d2e[_0x47a5('0x3a')][_0x47a5('0x65')]){_0x211fbf[_0x47a5('0x4a')]=_['merge'](_0x211fbf[_0x47a5('0x4a')],{'$or':_[_0x47a5('0x66')](_0x211fbf[_0x47a5('0x3f')],function(_0x11b68b){var _0x50b98e={};_0x50b98e[_0x11b68b]={'$like':'%'+_0x135d2e[_0x47a5('0x3a')]['filter']+'%'};return _0x50b98e;})});}_0x211fbf=_[_0x47a5('0x49')]({},_0x211fbf,_0x135d2e[_0x47a5('0x4d')]);return db[_0x47a5('0x6a')][_0x47a5('0x27')]({'where':_0x211fbf[_0x47a5('0x4a')]})[_0x47a5('0x31')](function(_0x92bfd7){_0x42fcce[_0x47a5('0x27')]=_0x92bfd7;if(_0x135d2e[_0x47a5('0x3a')]['includeAll']){_0x211fbf[_0x47a5('0x4f')]=[{'all':!![]}];}return db[_0x47a5('0x6a')]['findAll'](_0x211fbf);})[_0x47a5('0x31')](function(_0x32035e){_0x42fcce[_0x47a5('0x67')]=_0x32035e;return _0x42fcce;});}})['then'](respondWithFilteredResult(_0x20d8bd,_0x211fbf))['catch'](handleError(_0x20d8bd,null));};exports[_0x47a5('0x6b')]=function(_0x3d7371,_0x47fbb6,_0x537552){var _0x91aa99;return db[_0x47a5('0x37')]['find']({'where':{'id':_0x3d7371[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x47fbb6,null))['then'](function(_0x16097e){if(_0x16097e){return _0x16097e[_0x47a5('0x6b')](_0x3d7371[_0x47a5('0x3a')][_0x47a5('0x6c')]);}})[_0x47a5('0x31')](respondWithStatusCode(_0x47fbb6,null))[_0x47a5('0x51')](handleError(_0x47fbb6,null));};exports['addInteraction']=function(_0x4c9894,_0x5bd86e,_0x133b7a){return db[_0x47a5('0x6d')]['find']({'where':{'id':_0x4c9894[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x5bd86e,null))[_0x47a5('0x31')](function(_0x1752ce){if(_0x1752ce){return _0x1752ce[_0x47a5('0x6e')](_0x4c9894['body'][_0x47a5('0x6c')],_['omit'](_0x4c9894['body'],['ids','id'])||{});}})[_0x47a5('0x31')](respondWithResult(_0x5bd86e,null))['catch'](handleError(_0x5bd86e,null));};exports[_0x47a5('0x6f')]=function(_0xf3edc8,_0x5a316e,_0x49f791){var _0x4584f0={'raw':![],'where':{}};var _0x461d32={};var _0x35bf37={'count':0x0,'rows':[]};return db[_0x47a5('0x37')][_0x47a5('0x62')]({'where':{'id':_0xf3edc8['params']['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x5a316e,null))[_0x47a5('0x31')](function(_0x519f0a){if(_0x519f0a){_0x461d32[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db[_0x47a5('0x6d')][_0x47a5('0x38')]);_0x461d32[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0xf3edc8['query']);_0x461d32[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x461d32['model'],_0x461d32[_0x47a5('0x3a')]);_0x4584f0[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x461d32[_0x47a5('0x39')],qs['fields'](_0xf3edc8['query']['fields']));_0x4584f0['attributes']=_0x4584f0[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x4584f0[_0x47a5('0x3f')]:_0x461d32[_0x47a5('0x39')];if(!_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x63')](_0x47a5('0x42'))){_0x4584f0[_0x47a5('0x64')]=qs['limit'](_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x64')]);_0x4584f0[_0x47a5('0x28')]=qs[_0x47a5('0x28')](_0xf3edc8['query']['offset']);}_0x4584f0[_0x47a5('0x43')]=qs['sort'](_0xf3edc8['query'][_0x47a5('0x44')]);_0x4584f0[_0x47a5('0x4a')]=qs['filters'](_[_0x47a5('0x45')](_0xf3edc8[_0x47a5('0x3a')],_0x461d32[_0x47a5('0x3d')]));_0x4584f0['where'][_0x47a5('0x60')]=_0x519f0a['id'];if(_0xf3edc8[_0x47a5('0x3a')]['filter']){_0x4584f0[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x4584f0[_0x47a5('0x4a')],{'$or':_[_0x47a5('0x66')](_0x4584f0[_0x47a5('0x3f')],function(_0x475114){var _0x482c87={};_0x482c87[_0x475114]={'$like':'%'+_0xf3edc8[_0x47a5('0x3a')]['filter']+'%'};return _0x482c87;})});}_0x4584f0=_[_0x47a5('0x49')]({},_0x4584f0,_0xf3edc8[_0x47a5('0x4d')]);return db[_0x47a5('0x6d')][_0x47a5('0x27')]({'where':_0x4584f0['where']})[_0x47a5('0x31')](function(_0x281674){_0x35bf37[_0x47a5('0x27')]=_0x281674;if(_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x4e')]){_0x4584f0[_0x47a5('0x4f')]=[{'model':db[_0x47a5('0x70')],'as':_0x47a5('0x71'),'required':![]},{'model':db[_0x47a5('0x72')],'as':_0x47a5('0x73'),'attributes':[_0x47a5('0x34'),_0x47a5('0x74'),'internal'],'required':![]},{'model':db[_0x47a5('0x75')],'as':_0x47a5('0x76'),'attributes':['id','name',_0x47a5('0x77')],'where':_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x78')]?{'id':_0xf3edc8[_0x47a5('0x3a')][_0x47a5('0x78')]}:undefined,'required':_0xf3edc8['query'][_0x47a5('0x78')]?!![]:![]}];}return db[_0x47a5('0x6d')][_0x47a5('0x50')](_0x4584f0);})[_0x47a5('0x31')](function(_0x343214){_0x35bf37[_0x47a5('0x67')]=_0x343214;return _0x35bf37;});}})[_0x47a5('0x31')](respondWithFilteredResult(_0x5a316e,_0x4584f0))['catch'](handleError(_0x5a316e,null));};exports['addApplications']=function(_0xa3d578,_0x580ce8,_0xf105b8){return db['FaxAccount'][_0x47a5('0x62')]({'where':{'id':_0xa3d578[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x580ce8,null))[_0x47a5('0x31')](function(_0x49cb8c){if(_0x49cb8c){return db[_0x47a5('0x79')][_0x47a5('0x7a')](function(_0xaca12c){return db['FaxApplication']['destroy']({'where':{'FaxAccountId':_0xa3d578[_0x47a5('0x53')]['id']},'transaction':_0xaca12c})[_0x47a5('0x31')](function(_0x987752){var _0xfccf9c=_[_0x47a5('0x66')](_0xa3d578[_0x47a5('0x56')],function(_0x1c0323){_0x1c0323[_0x47a5('0x60')]=_0xa3d578['params']['id'];return _0x1c0323;});return db[_0x47a5('0x7b')]['bulkCreate'](_0xfccf9c,{'transaction':_0xaca12c});});})[_0x47a5('0x31')](function(){return db[_0x47a5('0x7b')]['findAndCountAll']({'where':{'FaxAccountId':_0xa3d578['params']['id']},'order':_0x47a5('0x7c')});});}})[_0x47a5('0x31')](respondWithResult(_0x580ce8,null))['catch'](handleError(_0x580ce8,null));};exports[_0x47a5('0x7d')]=function(_0x2b2693,_0x29e3ee,_0x44567e){var _0x5a7f32={};var _0x142012={};var _0x490947;var _0x56d81e;return db['FaxAccount'][_0x47a5('0x62')]({'where':{'id':_0x2b2693['params']['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x29e3ee,null))[_0x47a5('0x31')](function(_0x401139){if(_0x401139){_0x490947=_0x401139;_0x142012[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db[_0x47a5('0x7b')][_0x47a5('0x38')]);_0x142012[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0x2b2693[_0x47a5('0x3a')]);_0x142012[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x142012[_0x47a5('0x39')],_0x142012[_0x47a5('0x3a')]);_0x5a7f32[_0x47a5('0x3f')]=_['intersection'](_0x142012[_0x47a5('0x39')],qs[_0x47a5('0x40')](_0x2b2693[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x5a7f32['attributes']=_0x5a7f32[_0x47a5('0x3f')]['length']?_0x5a7f32[_0x47a5('0x3f')]:_0x142012['model'];_0x5a7f32[_0x47a5('0x43')]=qs[_0x47a5('0x44')](_0x2b2693[_0x47a5('0x3a')]['sort']);_0x5a7f32[_0x47a5('0x4a')]=qs[_0x47a5('0x3d')](_[_0x47a5('0x45')](_0x2b2693['query'],_0x142012['filters']));if(_0x2b2693[_0x47a5('0x3a')][_0x47a5('0x65')]){_0x5a7f32[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x5a7f32[_0x47a5('0x4a')],{'$or':_['map'](_0x5a7f32[_0x47a5('0x3f')],function(_0x4b3ae4){var _0xbcd492={};_0xbcd492[_0x4b3ae4]={'$like':'%'+_0x2b2693[_0x47a5('0x3a')][_0x47a5('0x65')]+'%'};return _0xbcd492;})});}_0x5a7f32=_[_0x47a5('0x49')]({},_0x5a7f32,_0x2b2693['options']);return _0x490947['getApplications'](_0x5a7f32);}})[_0x47a5('0x31')](function(_0x20034a){if(_0x20034a){_0x56d81e=_0x20034a[_0x47a5('0x41')];if(!_0x2b2693[_0x47a5('0x3a')][_0x47a5('0x63')](_0x47a5('0x42'))){_0x5a7f32[_0x47a5('0x64')]=qs[_0x47a5('0x64')](_0x2b2693[_0x47a5('0x3a')]['limit']);_0x5a7f32['offset']=qs[_0x47a5('0x28')](_0x2b2693['query'][_0x47a5('0x28')]);}return _0x490947[_0x47a5('0x7d')](_0x5a7f32);}})[_0x47a5('0x31')](function(_0x57ac20){if(_0x57ac20){return _0x57ac20?{'count':_0x56d81e,'rows':_0x57ac20}:null;}})[_0x47a5('0x31')](respondWithResult(_0x29e3ee,null))[_0x47a5('0x51')](handleError(_0x29e3ee,null));};function Extension(_0x4842c5,_0xcb6714,_0x51f6cf,_0x277255){this[_0x47a5('0x7e')]=_0x47a5('0x7f');this['exten']=_0x4842c5['localstationid'];this['app']=_0x277255;this['type']='system';this[_0x47a5('0x80')]='Fax\x20Extension';this[_0x47a5('0x60')]=_0x4842c5['id'];this[_0x47a5('0x7c')]=_0xcb6714;this['appdata']=_0x51f6cf;}function createExtensionsReciveFax(_0x49da2a){var _0x4b3529=0x1;var _0x2a6dca=[];_0x2a6dca['push'](new Extension(_0x49da2a,_0x4b3529,'','Answer'));_0x4b3529+=0x1;_0x2a6dca['push'](new Extension(_0x49da2a,_0x4b3529,_0x47a5('0x81'),_0x47a5('0x82')));_0x4b3529+=0x1;for(var _0x2844e7 in _0x49da2a){if(_0x49da2a[_0x47a5('0x63')](_0x2844e7)&&(_0x2844e7==='ecm'||_0x2844e7===_0x47a5('0x83')||_0x2844e7==='gateway'||_0x2844e7===_0x47a5('0x84')||_0x2844e7==='headerinfo'||_0x2844e7===_0x47a5('0x85')||_0x2844e7===_0x47a5('0x86')||_0x2844e7===_0x47a5('0x87')||_0x2844e7==='t38timeout')){_0x2a6dca[_0x47a5('0x88')](new Extension(_0x49da2a,_0x4b3529,_0x47a5('0x89')+_0x2844e7+')='+_0x49da2a[_0x2844e7],_0x47a5('0x82')));_0x4b3529+=0x1;}}_0x2a6dca[_0x47a5('0x88')](new Extension(_0x49da2a,_0x4b3529,'6','Wait'));_0x4b3529+=0x1;_0x2a6dca[_0x47a5('0x88')](new Extension(_0x49da2a,_0x4b3529,_0x47a5('0x8a'),_0x47a5('0x8b')));_0x4b3529=0x0;return _0x2a6dca;}exports[_0x47a5('0x8c')]=function(_0x1ab5c4,_0x338cf9,_0x598825){var _0x1339db;return db[_0x47a5('0x79')][_0x47a5('0x7a')](function(_0xac8d4f){return db[_0x47a5('0x37')][_0x47a5('0x55')](_0x1ab5c4[_0x47a5('0x56')],{'transaction':_0xac8d4f})[_0x47a5('0x31')](function(_0x408887){_0x1339db=_0x408887[_0x47a5('0x2f')]({'plain':!![]});return db[_0x47a5('0x8d')][_0x47a5('0x8e')](createExtensionsReciveFax(_0x1339db),{'transaction':_0xac8d4f});});})[_0x47a5('0x31')](function(){return _0x1339db;})[_0x47a5('0x31')](respondWithResult(_0x338cf9,null))[_0x47a5('0x51')](handleError(_0x338cf9,null));};exports[_0x47a5('0x8f')]=function(_0x40505e,_0x4c181e,_0xe0376c){var _0x5ee5c5;return db['sequelize'][_0x47a5('0x7a')](function(_0x154365){return db[_0x47a5('0x37')]['update'](_0x40505e[_0x47a5('0x56')],{'where':{'id':_0x40505e[_0x47a5('0x56')]['id']},'transaction':_0x154365})[_0x47a5('0x31')](function(_0x3e8fce){return db[_0x47a5('0x8d')][_0x47a5('0x2e')]({'where':{'FaxAccountId':_0x40505e[_0x47a5('0x56')]['id']},'transaction':_0x154365})[_0x47a5('0x31')](function(_0x176e71){return db[_0x47a5('0x8d')][_0x47a5('0x8e')](createExtensionsReciveFax(_[_0x47a5('0x90')](_0x40505e[_0x47a5('0x56')],['tech','key',_0x47a5('0x91'),'updatedAt',_0x47a5('0x92'),_0x47a5('0x93')])),{'transaction':_0x154365});});});})[_0x47a5('0x31')](function(){return db[_0x47a5('0x37')][_0x47a5('0x94')](_0x40505e[_0x47a5('0x56')]['id']);})['then'](respondWithResult(_0x4c181e,null))[_0x47a5('0x51')](handleError(_0x4c181e,null));};exports[_0x47a5('0x95')]=function(_0x380eca,_0x5ca5bc,_0x19c94a){var _0x439f60={'raw':!![],'where':{}};var _0x3ecc41={};var _0x3e4148={'count':0x0,'rows':[]};return db[_0x47a5('0x37')][_0x47a5('0x62')]({'where':{'id':_0x380eca[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x5ca5bc,null))[_0x47a5('0x31')](function(_0x1a4346){if(_0x1a4346){_0x3ecc41[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db[_0x47a5('0x96')][_0x47a5('0x38')]);_0x3ecc41[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0x380eca[_0x47a5('0x3a')]);_0x3ecc41[_0x47a5('0x3d')]=_[_0x47a5('0x3e')](_0x3ecc41[_0x47a5('0x39')],_0x3ecc41[_0x47a5('0x3a')]);_0x439f60[_0x47a5('0x3f')]=_['intersection'](_0x3ecc41[_0x47a5('0x39')],qs['fields'](_0x380eca[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x439f60[_0x47a5('0x3f')]=_0x439f60[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x439f60[_0x47a5('0x3f')]:_0x3ecc41[_0x47a5('0x39')];if(!_0x380eca[_0x47a5('0x3a')]['hasOwnProperty'](_0x47a5('0x42'))){_0x439f60[_0x47a5('0x64')]=qs[_0x47a5('0x64')](_0x380eca['query'][_0x47a5('0x64')]);_0x439f60[_0x47a5('0x28')]=qs[_0x47a5('0x28')](_0x380eca[_0x47a5('0x3a')]['offset']);}_0x439f60[_0x47a5('0x43')]=qs[_0x47a5('0x44')](_0x380eca[_0x47a5('0x3a')][_0x47a5('0x44')]);_0x439f60['where']=qs[_0x47a5('0x3d')](_['pick'](_0x380eca['query'],_0x3ecc41[_0x47a5('0x3d')]));_0x439f60[_0x47a5('0x4a')][_0x47a5('0x60')]=_0x1a4346['id'];if(_0x380eca[_0x47a5('0x3a')]['filter']){_0x439f60[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x439f60[_0x47a5('0x4a')],{'$or':_[_0x47a5('0x66')](_0x439f60[_0x47a5('0x3f')],function(_0x25549e){var _0x5eae8d={};_0x5eae8d[_0x25549e]={'$like':'%'+_0x380eca[_0x47a5('0x3a')][_0x47a5('0x65')]+'%'};return _0x5eae8d;})});}if(_0x380eca[_0x47a5('0x3a')][_0x47a5('0x97')]){var _0x201ed8=_0x380eca['query'][_0x47a5('0x97')]['split'](',');var _0x1fc6e9={};_0x1fc6e9[_0x201ed8[0x0]]={'$gte':moment(_0x201ed8[0x1])['format'](_0x47a5('0x98'))};_0x439f60['where']=_['merge'](_0x439f60[_0x47a5('0x4a')],_0x1fc6e9);}_0x439f60=_[_0x47a5('0x49')]({},_0x439f60,_0x380eca['options']);return db[_0x47a5('0x96')][_0x47a5('0x27')]({'where':_0x439f60['where']})[_0x47a5('0x31')](function(_0x112e1e){_0x3e4148[_0x47a5('0x27')]=_0x112e1e;if(_0x380eca['query'][_0x47a5('0x4e')]){_0x439f60[_0x47a5('0x4f')]=[{'all':!![]}];}return db[_0x47a5('0x96')][_0x47a5('0x50')](_0x439f60);})[_0x47a5('0x31')](function(_0x53cc9e){_0x3e4148['rows']=_0x53cc9e;return _0x3e4148;});}})[_0x47a5('0x31')](respondWithFilteredResult(_0x5ca5bc,_0x439f60))['catch'](handleError(_0x5ca5bc,null));};exports[_0x47a5('0x35')]=function(_0xa5e1f6,_0x5f5bdc,_0x50372c){var _0xb065db,_0x4997bc={},_0x1e38ce;if(_0xa5e1f6[_0x47a5('0x56')]['to']){_0x1e38ce=_0xa5e1f6[_0x47a5('0x56')]['to'][0x0];}return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0xa5e1f6[_0x47a5('0x53')]['id']},'include':[{'model':db[_0x47a5('0x99')],'as':'List','include':[{'model':db[_0x47a5('0x70')],'as':'Contacts','where':{'fax':_0x1e38ce},'limit':0x1,'order':[[_0x47a5('0x9a'),_0x47a5('0x9b')]]}]}]})[_0x47a5('0x31')](handleEntityNotFound(_0x5f5bdc,null))[_0x47a5('0x31')](function(_0x16f359){_0xb065db=_0x16f359;if(_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')]&&_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][_0x47a5('0x41')]){for(var _0x273f29=0x0;_0x273f29<_0xa5e1f6[_0x47a5('0x56')]['attachments'][_0x47a5('0x41')];_0x273f29+=0x1){_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][_0x273f29]={'filename':_0xa5e1f6['body'][_0x47a5('0x9c')][_0x273f29][_0x47a5('0x34')],'id':_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][_0x273f29]['id'],'path':path[_0x47a5('0x9d')](config[_0x47a5('0x9e')],'server/files/attachments',_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][_0x273f29][_0x47a5('0x9f')])};}}return respondWithRpcPromise(_0x47a5('0xa0'),_0x47a5('0xa0'),{'FaxAccountId':_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x53')]['id'])?undefined:_0xa5e1f6[_0x47a5('0x53')]['id'],'path':_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x56')]['attachments'][0x0]['path'])?undefined:_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0][_0x47a5('0x8')],'fax':_['isNil'](_0xa5e1f6[_0x47a5('0x56')]['to'][0x0])?undefined:_0xa5e1f6['body']['to'][0x0]},client9002);})['then'](function(){if(_0xb065db){if(_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0xa2')])){_0xa5e1f6[_0x47a5('0x56')]['from']=util[_0x47a5('0xa3')](_0x47a5('0xa4'),_0xb065db['name'],_0xb065db['fax']);}if(_0xb065db['List']){if(_0xb065db[_0x47a5('0xa5')][_0x47a5('0xa6')][_0x47a5('0x41')]){return _0xb065db[_0x47a5('0xa5')][_0x47a5('0xa6')][0x0];}else{return db['CmContact']['create'](_[_0x47a5('0x13')](_0xa5e1f6[_0x47a5('0x56')],{'firstName':_0xa5e1f6[_0x47a5('0x56')]['to'][0x0],'phone':_0xa5e1f6[_0x47a5('0x56')]['to'][0x0],'fax':_0xa5e1f6['body']['to'][0x0],'ListId':_0xb065db[_0x47a5('0x93')]}));}}else{throw new Error(_0x47a5('0xa7'));}}else{throw new Error(_0x47a5('0xa8'));}})[_0x47a5('0x31')](function(_0x5e7fac){if(_0x5e7fac){return db['FaxInteraction']['find']({'where':{'ContactId':_0x5e7fac['id'],'closed':![],'FaxAccountId':_0xb065db['id']}})[_0x47a5('0x31')](function(_0x15ddfc){if(_0x15ddfc){return[_0x15ddfc,![]];}return db[_0x47a5('0x6d')][_0x47a5('0x55')]({'UserId':_0xa5e1f6[_0x47a5('0x59')]['id'],'ContactId':_0x5e7fac['id'],'FaxAccountId':_0xb065db['id'],'fax':_0xa5e1f6[_0x47a5('0x56')]['to'][0x0],'firstMsgDirection':_0x47a5('0xa9'),'Messages':[_[_0x47a5('0x49')](_0xa5e1f6[_0x47a5('0x56')],{'read':![],'body':_0xa5e1f6['body'][_0x47a5('0x9c')][0x0][_0x47a5('0xaa')],'FaxAccountId':_0xb065db['id'],'UserId':_0xa5e1f6['user']['id'],'ContactId':_0x5e7fac['id'],'AttachmentId':_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0]['id']})]},{'include':[{'model':db[_0x47a5('0x96')],'as':_0x47a5('0xab')}]})['then'](function(_0xbf131c){return[_0xbf131c,!![]];});});}else{throw new Error(_0x47a5('0xac'));}})[_0x47a5('0xad')](function(_0x51e2c0,_0x5da197){if(_0x5da197){return _0x51e2c0;}return db[_0x47a5('0x96')]['create']({'direction':_0x47a5('0xa9'),'read':![],'body':_0xa5e1f6['body'][_0x47a5('0x9c')][0x0][_0x47a5('0xaa')],'FaxAccountId':_0xb065db['id'],'FaxInteractionId':_0x51e2c0['id'],'UserId':_0xa5e1f6[_0x47a5('0x59')]['id'],'ContactId':_0x51e2c0[_0x47a5('0xae')],'AttachmentId':_0xa5e1f6[_0x47a5('0x56')]['attachments'][0x0]['id']})['then'](function(_0x1b6b29){_0x51e2c0[_0x47a5('0xaf')][_0x47a5('0xab')]=[];_0x51e2c0[_0x47a5('0xaf')]['Messages']['push'](_0x1b6b29[_0x47a5('0xaf')]);return _0x51e2c0;});})['then'](function(_0x2a9619){respondWithRpcPromise('SendFax',_0x47a5('0xb0'),{'FaxAccountId':_['isNil'](_0xa5e1f6[_0x47a5('0x53')]['id'])?undefined:_0xa5e1f6[_0x47a5('0x53')]['id'],'path':_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0][_0x47a5('0x8')])?undefined:_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0]['path'],'fax':_[_0x47a5('0xa1')](_0xa5e1f6[_0x47a5('0x56')]['to'][0x0])?undefined:_0xa5e1f6['body']['to'][0x0],'AttachmentId':_0xa5e1f6[_0x47a5('0x56')][_0x47a5('0x9c')][0x0]['id']},client9002)['then'](function(_0x54d5bc){logger[_0x47a5('0x1b')]('SendFaxRpc,\x20%s',_0x54d5bc);})[_0x47a5('0x51')](function(_0x181b57){logger[_0x47a5('0x1b')]('SendFaxRpc,\x20%s',_0x181b57);});return _0x2a9619;})[_0x47a5('0x31')](respondWithResult(_0x5f5bdc,null))[_0x47a5('0x51')](handleError(_0x5f5bdc,null));};exports[_0x47a5('0xb1')]=function(_0x45dd6b,_0x19c824,_0x454609){return db[_0x47a5('0x37')]['find']({'where':{'id':_0x45dd6b[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x19c824,null))[_0x47a5('0x31')](function(_0xa6c86e){if(_0xa6c86e){return _0xa6c86e[_0x47a5('0xb1')](_0x45dd6b[_0x47a5('0x56')][_0x47a5('0x6c')],_['omit'](_0x45dd6b['body'],[_0x47a5('0x6c'),'id'])||{})[_0x47a5('0xad')](function(_0x2d0c51){for(var _0x4bbc94=0x0;_0x4bbc94<_0x45dd6b['body'][_0x47a5('0x6c')][_0x47a5('0x41')];_0x4bbc94+=0x1){socket[_0x47a5('0xb2')](_0x47a5('0xb3'),{'UserId':_0x45dd6b[_0x47a5('0x56')][_0x47a5('0x6c')][_0x4bbc94],'FaxAccountId':_0x45dd6b[_0x47a5('0x53')]['id']});}return _0x2d0c51;});}})['then'](respondWithResult(_0x19c824,null))[_0x47a5('0x51')](handleError(_0x19c824,null));};exports[_0x47a5('0xb4')]=function(_0x8a7b09,_0x540d7f,_0xc5f4a6){var _0x611b40;return db[_0x47a5('0x37')][_0x47a5('0x54')]({'where':{'id':_0x8a7b09[_0x47a5('0x53')]['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x540d7f,null))[_0x47a5('0x31')](function(_0x3a52cf){if(_0x3a52cf){return _0x3a52cf[_0x47a5('0xb4')](_0x8a7b09[_0x47a5('0x3a')][_0x47a5('0x6c')])[_0x47a5('0x31')](function(_0x3bd9cf){if(_['isArray'](_0x8a7b09[_0x47a5('0x3a')]['ids'])){for(var _0x2e6477=0x0;_0x2e6477<_0x8a7b09['query'][_0x47a5('0x6c')][_0x47a5('0x41')];_0x2e6477+=0x1){socket[_0x47a5('0xb2')]('userFaxAccount:remove',{'UserId':_0x8a7b09[_0x47a5('0x3a')]['ids'][_0x2e6477],'FaxAccountId':_0x8a7b09[_0x47a5('0x53')]['id']});}}else{socket[_0x47a5('0xb2')](_0x47a5('0xb5'),{'UserId':_0x8a7b09[_0x47a5('0x3a')]['ids'],'FaxAccountId':_0x8a7b09[_0x47a5('0x53')]['id']});}});}})['then'](respondWithStatusCode(_0x540d7f,null))['catch'](handleError(_0x540d7f,null));};exports[_0x47a5('0xb6')]=function(_0x15e970,_0x41c23d,_0x17b95a){var _0x184a18={};var _0x11ae07={};var _0x10a789;var _0x33ac8b;return db[_0x47a5('0x37')]['findOne']({'where':{'id':_0x15e970['params']['id']}})[_0x47a5('0x31')](handleEntityNotFound(_0x41c23d,null))[_0x47a5('0x31')](function(_0x370de1){if(_0x370de1){_0x10a789=_0x370de1;_0x11ae07[_0x47a5('0x39')]=_[_0x47a5('0x3c')](db['User'][_0x47a5('0x38')]);_0x11ae07[_0x47a5('0x3a')]=_[_0x47a5('0x3c')](_0x15e970['query']);_0x11ae07['filters']=_[_0x47a5('0x3e')](_0x11ae07[_0x47a5('0x39')],_0x11ae07['query']);_0x184a18[_0x47a5('0x3f')]=_[_0x47a5('0x3e')](_0x11ae07[_0x47a5('0x39')],qs['fields'](_0x15e970[_0x47a5('0x3a')][_0x47a5('0x40')]));_0x184a18[_0x47a5('0x3f')]=_0x184a18[_0x47a5('0x3f')][_0x47a5('0x41')]?_0x184a18['attributes']:_0x11ae07[_0x47a5('0x39')];_0x184a18[_0x47a5('0x43')]=qs[_0x47a5('0x44')](_0x15e970[_0x47a5('0x3a')]['sort']);_0x184a18['where']=qs[_0x47a5('0x3d')](_['pick'](_0x15e970[_0x47a5('0x3a')],_0x11ae07[_0x47a5('0x3d')]));if(_0x15e970[_0x47a5('0x3a')][_0x47a5('0x65')]){_0x184a18[_0x47a5('0x4a')]=_[_0x47a5('0x49')](_0x184a18['where'],{'$or':_[_0x47a5('0x66')](_0x184a18[_0x47a5('0x3f')],function(_0x32143a){var _0x52864b={};_0x52864b[_0x32143a]={'$like':'%'+_0x15e970['query'][_0x47a5('0x65')]+'%'};return _0x52864b;})});}_0x184a18=_['merge']({},_0x184a18,_0x15e970[_0x47a5('0x4d')]);return _0x10a789[_0x47a5('0xb6')](_0x184a18);}})[_0x47a5('0x31')](function(_0x22390f){if(_0x22390f){_0x33ac8b=_0x22390f[_0x47a5('0x41')];if(!_0x15e970['query']['hasOwnProperty'](_0x47a5('0x42'))){_0x184a18[_0x47a5('0x64')]=qs[_0x47a5('0x64')](_0x15e970[_0x47a5('0x3a')][_0x47a5('0x64')]);_0x184a18['offset']=qs[_0x47a5('0x28')](_0x15e970[_0x47a5('0x3a')][_0x47a5('0x28')]);}return _0x10a789[_0x47a5('0xb6')](_0x184a18);}})[_0x47a5('0x31')](function(_0x4df71d){if(_0x4df71d){return _0x4df71d?{'count':_0x33ac8b,'rows':_0x4df71d}:null;}})[_0x47a5('0x31')](respondWithResult(_0x41c23d,null))[_0x47a5('0x51')](handleError(_0x41c23d,null));};
\ No newline at end of file
index 52dbe56..cfe4209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec0e=['hasOwnProperty','hook','exports','events','setMaxListeners','save','update','emit'];(function(_0xab2a11,_0x1b34fb){var _0x5421cc=function(_0x179064){while(--_0x179064){_0xab2a11['push'](_0xab2a11['shift']());}};_0x5421cc(++_0x1b34fb);}(_0xec0e,0x1b3));var _0xeec0=function(_0x459a0a,_0x25c46f){_0x459a0a=_0x459a0a-0x0;var _0x4ab46c=_0xec0e[_0x459a0a];return _0x4ab46c;};'use strict';var EventEmitter=require(_0xeec0('0x0'));var FaxAccount=require('../../mysqldb')['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xeec0('0x1')](0x0);var events={'afterCreate':_0xeec0('0x2'),'afterUpdate':_0xeec0('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4fcafd){return function(_0x311e74,_0x17dd24,_0x4e99ab){FaxAccountEvents[_0xeec0('0x4')](_0x4fcafd+':'+_0x311e74['id'],_0x311e74);FaxAccountEvents[_0xeec0('0x4')](_0x4fcafd,_0x311e74);_0x4e99ab(null);};}for(var e in events){if(events[_0xeec0('0x5')](e)){var event=events[e];FaxAccount[_0xeec0('0x6')](e,emitEvent(event));}}module[_0xeec0('0x7')]=FaxAccountEvents;
\ No newline at end of file
+var _0x6a0e=['hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x3ac312,_0x5d3903){var _0x36b673=function(_0x254b25){while(--_0x254b25){_0x3ac312['push'](_0x3ac312['shift']());}};_0x36b673(++_0x5d3903);}(_0x6a0e,0x18e));var _0xe6a0=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x6a0e[_0x47aa64];return _0x549c7a;};'use strict';var EventEmitter=require(_0xe6a0('0x0'));var FaxAccount=require(_0xe6a0('0x1'))['db'][_0xe6a0('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xe6a0('0x3')](0x0);var events={'afterCreate':_0xe6a0('0x4'),'afterUpdate':_0xe6a0('0x5'),'afterDestroy':_0xe6a0('0x6')};function emitEvent(_0x51b922){return function(_0x4b25be,_0xae3cf1,_0x128de3){FaxAccountEvents[_0xe6a0('0x7')](_0x51b922+':'+_0x4b25be['id'],_0x4b25be);FaxAccountEvents[_0xe6a0('0x7')](_0x51b922,_0x4b25be);_0x128de3(null);};}for(var e in events){if(events[_0xe6a0('0x8')](e)){var event=events[e];FaxAccount[_0xe6a0('0x9')](e,emitEvent(event));}}module[_0xe6a0('0xa')]=FaxAccountEvents;
\ No newline at end of file
index 30eff3d..04e3106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c37=['../../config/logger','api','moment','bluebird','request-promise','./faxAccount.attributes','exports','fax_accounts','lodash','util'];(function(_0x49b8cd,_0x2e1942){var _0x28bc32=function(_0x3cc6ad){while(--_0x3cc6ad){_0x49b8cd['push'](_0x49b8cd['shift']());}};_0x28bc32(++_0x2e1942);}(_0x4c37,0x8a));var _0x74c3=function(_0x107aaa,_0x2dafc4){_0x107aaa=_0x107aaa-0x0;var _0x13154a=_0x4c37[_0x107aaa];return _0x13154a;};'use strict';var _=require(_0x74c3('0x0'));var util=require(_0x74c3('0x1'));var logger=require(_0x74c3('0x2'))(_0x74c3('0x3'));var moment=require(_0x74c3('0x4'));var BPromise=require(_0x74c3('0x5'));var rp=require(_0x74c3('0x6'));var attributes=require(_0x74c3('0x7'));module[_0x74c3('0x8')]=function(_0x5ab0e7,_0x3430ec){return _0x5ab0e7['define']('FaxAccount',attributes,{'tableName':_0x74c3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdda7=['moment','bluebird','./faxAccount.attributes','fax_accounts','../../config/logger','api'];(function(_0x4b5f48,_0x1a5676){var _0x407512=function(_0x4bae95){while(--_0x4bae95){_0x4b5f48['push'](_0x4b5f48['shift']());}};_0x407512(++_0x1a5676);}(_0xdda7,0x184));var _0x7dda=function(_0x41f300,_0x5653bd){_0x41f300=_0x41f300-0x0;var _0x1f7767=_0xdda7[_0x41f300];return _0x1f7767;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7dda('0x0'))(_0x7dda('0x1'));var moment=require(_0x7dda('0x2'));var BPromise=require(_0x7dda('0x3'));var rp=require('request-promise');var attributes=require(_0x7dda('0x4'));module['exports']=function(_0x4b5629,_0x2c29a6){return _0x4b5629['define']('FaxAccount',attributes,{'tableName':_0x7dda('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 65a9b27..14eb17e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb98e=['FaxApplication','get','applications','Applications','list','orderBy','priority','asc','Contacts','length','defaults','CmContact','create','contact','FaxInteraction','Contact\x20not\x20found','spread','unmanaged','*,*,*,*','created','FaxMessage','interaction','UserId','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','FaxAccount','findAll','raw','options','where','attributes','limit','include','map','model','GetFaxAccount','stringify','NotifyFaxAccount','body','fax','describe','ValidationError','no\x20available\x20attributes','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','DESC'];(function(_0x30ba61,_0x48b905){var _0x7300ad=function(_0x3b4f73){while(--_0x3b4f73){_0x30ba61['push'](_0x30ba61['shift']());}};_0x7300ad(++_0x48b905);}(_0xb98e,0x184));var _0xeb98=function(_0x48b6f6,_0x512bfd){_0x48b6f6=_0x48b6f6-0x0;var _0x489e73=_0xb98e[_0x48b6f6];return _0x489e73;};'use strict';var _=require(_0xeb98('0x0'));var util=require(_0xeb98('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xeb98('0x2'));var fs=require('fs');var Redis=require(_0xeb98('0x3'));var db=require(_0xeb98('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb98('0x5'))(_0xeb98('0x6'));var config=require(_0xeb98('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xeb98('0x8')]['http']({'port':0x232c});config[_0xeb98('0x9')]=_['defaults'](config[_0xeb98('0x9')],{'host':_0xeb98('0xa'),'port':0x18eb});var socket=require(_0xeb98('0xb'))(new Redis(config[_0xeb98('0x9')]));require(_0xeb98('0xc'))[_0xeb98('0xd')](socket);function respondWithRpcPromise(_0x2669bb,_0x23edb5,_0x5ccd7f){return new BPromise(function(_0x28483,_0x8b537e){return client[_0xeb98('0xe')](_0x2669bb,_0x5ccd7f)[_0xeb98('0xf')](function(_0x1c8990){logger[_0xeb98('0x10')](_0xeb98('0x11'),_0x23edb5,_0xeb98('0x12'));logger[_0xeb98('0x13')](_0xeb98('0x14'),_0x23edb5,_0xeb98('0x12'),JSON['stringify'](_0x1c8990));if(_0x1c8990[_0xeb98('0x15')]){if(_0x1c8990[_0xeb98('0x15')]['code']===0x1f4){logger['error'](_0xeb98('0x11'),_0x23edb5,_0x1c8990[_0xeb98('0x15')][_0xeb98('0x16')]);return _0x8b537e(_0x1c8990[_0xeb98('0x15')][_0xeb98('0x16')]);}logger[_0xeb98('0x15')](_0xeb98('0x11'),_0x23edb5,_0x1c8990[_0xeb98('0x15')][_0xeb98('0x16')]);return _0x28483(_0x1c8990[_0xeb98('0x15')][_0xeb98('0x16')]);}else{logger[_0xeb98('0x10')](_0xeb98('0x11'),_0x23edb5,_0xeb98('0x12'));_0x28483(_0x1c8990[_0xeb98('0x17')][_0xeb98('0x16')]);}})[_0xeb98('0x18')](function(_0x25a13d){logger[_0xeb98('0x15')](_0xeb98('0x11'),_0x23edb5,_0x25a13d);_0x8b537e(_0x25a13d);});});}exports['GetFaxAccount']=function(_0x38e22e){var _0x396419=this;return new Promise(function(_0x4f5267,_0x56b018){return db[_0xeb98('0x19')][_0xeb98('0x1a')]({'raw':_0x38e22e['options']?_0x38e22e['options'][_0xeb98('0x1b')]===undefined?!![]:![]:!![],'where':_0x38e22e['options']?_0x38e22e[_0xeb98('0x1c')][_0xeb98('0x1d')]||null:null,'attributes':_0x38e22e['options']?_0x38e22e[_0xeb98('0x1c')][_0xeb98('0x1e')]||null:null,'limit':_0x38e22e[_0xeb98('0x1c')]?_0x38e22e[_0xeb98('0x1c')][_0xeb98('0x1f')]||null:null,'include':_0x38e22e[_0xeb98('0x1c')]?_0x38e22e[_0xeb98('0x1c')][_0xeb98('0x20')]?_[_0xeb98('0x21')](_0x38e22e[_0xeb98('0x1c')][_0xeb98('0x20')],function(_0x499ae8){return{'model':db[_0x499ae8[_0xeb98('0x22')]],'as':_0x499ae8['as'],'attributes':_0x499ae8[_0xeb98('0x1e')],'include':_0x499ae8[_0xeb98('0x20')]?_[_0xeb98('0x21')](_0x499ae8[_0xeb98('0x20')],function(_0x175a0f){return{'model':db[_0x175a0f[_0xeb98('0x22')]],'as':_0x175a0f['as'],'attributes':_0x175a0f[_0xeb98('0x1e')],'include':_0x175a0f[_0xeb98('0x20')]?_[_0xeb98('0x21')](_0x175a0f[_0xeb98('0x20')],function(_0x37fdd6){return{'model':db[_0x37fdd6['model']],'as':_0x37fdd6['as'],'attributes':_0x37fdd6[_0xeb98('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xeb98('0xf')](function(_0x2eb410){logger[_0xeb98('0x10')]('GetFaxAccount',_0x38e22e);logger[_0xeb98('0x13')](_0xeb98('0x23'),_0x38e22e,JSON[_0xeb98('0x24')](_0x2eb410));_0x4f5267(_0x2eb410);})[_0xeb98('0x18')](function(_0x430a6b){logger[_0xeb98('0x15')]('GetFaxAccount',_0x430a6b['message'],_0x38e22e);_0x56b018(_0x396419[_0xeb98('0x15')](0x1f4,_0x430a6b[_0xeb98('0x16')]));});});};exports[_0xeb98('0x25')]=function(_0x50cbc6,_0x3d3b87,_0x14a7e0){var _0x352215=this;return new Promise(function(_0xaf90b6,_0x159bbb){var _0x3ed523={'body':_0x50cbc6[_0xeb98('0x26')],'channel':_0xeb98('0x27')};var _0xff16=[];var _0x3428f7=[];var _0xb70ef8={};return db['CmContact'][_0xeb98('0x28')]()[_0xeb98('0xf')](function(_0x2df441){if(!_0x2df441){throw new db['Sequelize'][(_0xeb98('0x29'))](_0xeb98('0x2a'));}_0xff16=_['difference'](_[_0xeb98('0x2b')](_0x2df441),[_0xeb98('0x2c'),_0xeb98('0x2d')]);_0x3428f7=_['difference'](_['keys'](_0x2df441),[_0xeb98('0x2c'),_0xeb98('0x2d'),_0xeb98('0x2e'),_0xeb98('0x2f')]);if(_0x50cbc6['body']['id']){delete _0x50cbc6[_0xeb98('0x26')]['id'];}if(_[_0xeb98('0x30')](_0x50cbc6['body'][_0xeb98('0x31')])){throw new db['Sequelize'][(_0xeb98('0x29'))](_0xeb98('0x32'));}if(_[_0xeb98('0x30')](_0x50cbc6[_0xeb98('0x26')][_0xeb98('0x26')])||_0x50cbc6['body']['body']===''){throw new db[(_0xeb98('0x33'))][(_0xeb98('0x29'))](_0xeb98('0x34'));}if(_[_0xeb98('0x30')](_0x50cbc6[_0xeb98('0x26')][_0xeb98('0x35')])){throw new db[(_0xeb98('0x33'))][(_0xeb98('0x29'))](_0xeb98('0x36')+_0x3428f7);}if(!_[_0xeb98('0x37')](_0x3428f7,_0x50cbc6[_0xeb98('0x26')][_0xeb98('0x35')])){throw new db[(_0xeb98('0x33'))][(_0xeb98('0x29'))](_0xeb98('0x38')+_0x3428f7);}_0xb70ef8[_0x50cbc6['body'][_0xeb98('0x35')]]=_0x50cbc6[_0xeb98('0x26')]['from'];})[_0xeb98('0xf')](function(){return db[_0xeb98('0x19')][_0xeb98('0x39')]({'where':{'id':_0x50cbc6[_0xeb98('0x3a')]['id']},'include':[{'model':db[_0xeb98('0x3b')],'as':_0xeb98('0x3c'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0xb70ef8,'limit':0x1,'order':[[_0xeb98('0x2d'),_0xeb98('0x3d')]]}]},{'model':db[_0xeb98('0x3e')],'as':'Applications'}]});})[_0xeb98('0xf')](function(_0x3c8dab){if(_0x3c8dab&&_0x3c8dab['List']){var _0x4debec=_0x3c8dab[_0xeb98('0x3f')]({'plain':!![]});_0x3ed523[_0xeb98('0x3a')]=_0x4debec;_0x3ed523[_0xeb98('0x40')]=_0x4debec[_0xeb98('0x41')];_0x3ed523[_0xeb98('0x42')]=_0x4debec['List'];_0x3ed523[_0xeb98('0x40')]=_[_0xeb98('0x43')](_0x3ed523[_0xeb98('0x40')],[_0xeb98('0x44')],[_0xeb98('0x45')]);if(_0x3ed523[_0xeb98('0x3a')][_0xeb98('0x41')]){delete _0x3ed523[_0xeb98('0x3a')][_0xeb98('0x41')];}if(_0x3ed523[_0xeb98('0x3a')][_0xeb98('0x3c')]&&_0x3ed523[_0xeb98('0x3a')][_0xeb98('0x3c')][_0xeb98('0x46')][_0xeb98('0x47')]){return _0x3ed523[_0xeb98('0x3a')][_0xeb98('0x3c')]['Contacts'][0x0];}var _0x2a14ee=_[_0xeb98('0x48')](_0x50cbc6['body'],{'firstName':_0x50cbc6['body'][_0xeb98('0x31')],'ListId':_0x4debec['ListId']});_0x2a14ee[_0x50cbc6['body']['mapKey']]=_0x50cbc6['body'][_0xeb98('0x31')];return db[_0xeb98('0x49')][_0xeb98('0x4a')](_0x2a14ee,{'fields':_0xff16,'raw':!![]});}})[_0xeb98('0xf')](function(_0x3d8acf){_0x3ed523[_0xeb98('0x4b')]=_0x3d8acf;if(_0x3d8acf){var _0x34c3ff={'ContactId':_0x3d8acf['id'],'FaxAccountId':_0x50cbc6[_0xeb98('0x3a')]['id'],'fax':_0x3d8acf[_0xeb98('0x27')]};return db[_0xeb98('0x4c')][_0xeb98('0x39')]({'where':{'ContactId':_0x3d8acf['id'],'closed':![],'FaxAccountId':_0x50cbc6[_0xeb98('0x3a')]['id']}})[_0xeb98('0xf')](function(_0x297da2){if(_0x297da2){return[_0x297da2,![]];}return db[_0xeb98('0x4c')]['create'](_0x34c3ff)[_0xeb98('0xf')](function(_0x42289e){return[_0x42289e,!![]];});});}else{throw new Error(_0xeb98('0x4d'));}})[_0xeb98('0x4e')](function(_0x9b8715,_0x27bf6c){var _0x2dd8f4=_0x9b8715[_0xeb98('0x3f')]({'plain':!![]});if(_0x27bf6c){if(_0x3ed523['account']['autoclose']){_0x3ed523[_0xeb98('0x40')]['push']({'id':0x0,'priority':_0x3ed523[_0xeb98('0x40')][_0xeb98('0x47')]+0x1,'app':'close','appdata':_0xeb98('0x4f'),'interval':_0xeb98('0x50')});}_0x2dd8f4[_0xeb98('0x51')]=!![];}else{_0x2dd8f4[_0xeb98('0x51')]=![];}_0x3ed523['interaction']=_0x2dd8f4;return db[_0xeb98('0x52')][_0xeb98('0x4a')]({'body':_0x50cbc6[_0xeb98('0x26')][_0xeb98('0x26')],'FaxAccountId':_0x50cbc6['account']['id'],'FaxInteractionId':_0x9b8715['id'],'direction':'in','ContactId':_0x9b8715['ContactId'],'AttachmentId':_0x50cbc6[_0xeb98('0x26')]['AttachmentId']});})[_0xeb98('0xf')](function(_0x1a7ed7){_0x3ed523[_0xeb98('0x16')]=_0x1a7ed7;if(_0x3ed523[_0xeb98('0x53')][_0xeb98('0x54')]){return db['User'][_0xeb98('0x39')]({'attributes':['id','name'],'where':{'id':_0x3ed523[_0xeb98('0x53')]['UserId']}})['then'](function(_0x3ba7c3){if(_0x3ba7c3){_0x3ed523[_0xeb98('0x40')]['unshift']({'id':0x0,'priority':0x0,'app':_0xeb98('0x55'),'appdata':_0x3ba7c3[_0xeb98('0x56')]+','+(_0x3ed523[_0xeb98('0x3a')][_0xeb98('0x57')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xeb98('0x58'),'startRouting',_0x3ed523);});}return respondWithRpcPromise(_0xeb98('0x58'),_0xeb98('0x59'),_0x3ed523);})['then'](function(_0x782826){_0xaf90b6(_0x782826);})[_0xeb98('0x18')](function(_0x214d91){_0x159bbb(_0x352215[_0xeb98('0x15')](0x1f4,_0x214d91[_0xeb98('0x16')]));});});};
\ No newline at end of file
+var _0x4d54=['contact','fax','FaxInteraction','spread','autoclose','push','close','unmanaged','*,*,*,*','created','FaxMessage','ContactId','interaction','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','redis','defaults','localhost','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','limit','include','map','model','attributes','NotifyFaxAccount','body','CmContact','Sequelize','ValidationError','difference','keys','createdAt','updatedAt','CompanyId','from','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','find','account','CmList','Contacts','DESC','FaxApplication','List','applications','list','orderBy','priority','asc','Applications','ListId','create'];(function(_0x3c54a6,_0x1ddd4e){var _0x41eae1=function(_0x41c930){while(--_0x41c930){_0x3c54a6['push'](_0x3c54a6['shift']());}};_0x41eae1(++_0x1ddd4e);}(_0x4d54,0xc1));var _0x44d5=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x4d54[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x44d5('0x0'));var util=require('util');var moment=require(_0x44d5('0x1'));var BPromise=require(_0x44d5('0x2'));var rs=require(_0x44d5('0x3'));var fs=require('fs');var Redis=require(_0x44d5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x44d5('0x5'));var logger=require(_0x44d5('0x6'))(_0x44d5('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x44d5('0x8')]['http']({'port':0x232c});config[_0x44d5('0x9')]=_[_0x44d5('0xa')](config[_0x44d5('0x9')],{'host':_0x44d5('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x44d5('0x9')]));require('./faxAccount.socket')['register'](socket);function respondWithRpcPromise(_0x515284,_0x198cf3,_0x60aea7){return new BPromise(function(_0x1d1574,_0x8a9d4d){return client[_0x44d5('0xc')](_0x515284,_0x60aea7)[_0x44d5('0xd')](function(_0x3b46a2){logger[_0x44d5('0xe')](_0x44d5('0xf'),_0x198cf3,_0x44d5('0x10'));logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x198cf3,_0x44d5('0x10'),JSON[_0x44d5('0x11')](_0x3b46a2));if(_0x3b46a2['error']){if(_0x3b46a2[_0x44d5('0x12')]['code']===0x1f4){logger['error'](_0x44d5('0xf'),_0x198cf3,_0x3b46a2[_0x44d5('0x12')]['message']);return _0x8a9d4d(_0x3b46a2['error']['message']);}logger[_0x44d5('0x12')](_0x44d5('0xf'),_0x198cf3,_0x3b46a2[_0x44d5('0x12')][_0x44d5('0x13')]);return _0x1d1574(_0x3b46a2[_0x44d5('0x12')]['message']);}else{logger[_0x44d5('0xe')]('FaxAccount,\x20%s,\x20%s',_0x198cf3,_0x44d5('0x10'));_0x1d1574(_0x3b46a2[_0x44d5('0x14')][_0x44d5('0x13')]);}})[_0x44d5('0x15')](function(_0x49c5ba){logger[_0x44d5('0x12')]('FaxAccount,\x20%s,\x20%s',_0x198cf3,_0x49c5ba);_0x8a9d4d(_0x49c5ba);});});}exports[_0x44d5('0x16')]=function(_0x29b8d2){var _0x543bab=this;return new Promise(function(_0x471302,_0x177561){return db[_0x44d5('0x17')][_0x44d5('0x18')]({'raw':_0x29b8d2[_0x44d5('0x19')]?_0x29b8d2[_0x44d5('0x19')][_0x44d5('0x1a')]===undefined?!![]:![]:!![],'where':_0x29b8d2[_0x44d5('0x19')]?_0x29b8d2[_0x44d5('0x19')][_0x44d5('0x1b')]||null:null,'attributes':_0x29b8d2[_0x44d5('0x19')]?_0x29b8d2[_0x44d5('0x19')]['attributes']||null:null,'limit':_0x29b8d2[_0x44d5('0x19')]?_0x29b8d2[_0x44d5('0x19')][_0x44d5('0x1c')]||null:null,'include':_0x29b8d2[_0x44d5('0x19')]?_0x29b8d2[_0x44d5('0x19')][_0x44d5('0x1d')]?_[_0x44d5('0x1e')](_0x29b8d2['options'][_0x44d5('0x1d')],function(_0x588bf6){return{'model':db[_0x588bf6['model']],'as':_0x588bf6['as'],'attributes':_0x588bf6['attributes'],'include':_0x588bf6[_0x44d5('0x1d')]?_[_0x44d5('0x1e')](_0x588bf6[_0x44d5('0x1d')],function(_0x2a7c0d){return{'model':db[_0x2a7c0d[_0x44d5('0x1f')]],'as':_0x2a7c0d['as'],'attributes':_0x2a7c0d[_0x44d5('0x20')],'include':_0x2a7c0d[_0x44d5('0x1d')]?_[_0x44d5('0x1e')](_0x2a7c0d[_0x44d5('0x1d')],function(_0x4762cb){return{'model':db[_0x4762cb[_0x44d5('0x1f')]],'as':_0x4762cb['as'],'attributes':_0x4762cb['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2107ff){logger['info'](_0x44d5('0x16'),_0x29b8d2);logger['debug'](_0x44d5('0x16'),_0x29b8d2,JSON['stringify'](_0x2107ff));_0x471302(_0x2107ff);})[_0x44d5('0x15')](function(_0x53e073){logger[_0x44d5('0x12')]('GetFaxAccount',_0x53e073['message'],_0x29b8d2);_0x177561(_0x543bab['error'](0x1f4,_0x53e073[_0x44d5('0x13')]));});});};exports[_0x44d5('0x21')]=function(_0x8b4877,_0x443402,_0x23bd92){var _0x27d5dc=this;return new Promise(function(_0x10b15c,_0x89b4bc){var _0x468029={'body':_0x8b4877[_0x44d5('0x22')],'channel':'fax'};var _0x2b386a=[];var _0x157605=[];var _0x39705f={};return db[_0x44d5('0x23')]['describe']()[_0x44d5('0xd')](function(_0x1ebafb){if(!_0x1ebafb){throw new db[(_0x44d5('0x24'))][(_0x44d5('0x25'))]('no\x20available\x20attributes');}_0x2b386a=_[_0x44d5('0x26')](_[_0x44d5('0x27')](_0x1ebafb),[_0x44d5('0x28'),_0x44d5('0x29')]);_0x157605=_[_0x44d5('0x26')](_[_0x44d5('0x27')](_0x1ebafb),[_0x44d5('0x28'),_0x44d5('0x29'),_0x44d5('0x2a'),'ListId']);if(_0x8b4877['body']['id']){delete _0x8b4877['body']['id'];}if(_['isNil'](_0x8b4877[_0x44d5('0x22')][_0x44d5('0x2b')])){throw new db[(_0x44d5('0x24'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x44d5('0x2c')](_0x8b4877[_0x44d5('0x22')][_0x44d5('0x22')])||_0x8b4877['body'][_0x44d5('0x22')]===''){throw new db[(_0x44d5('0x24'))]['ValidationError'](_0x44d5('0x2d'));}if(_[_0x44d5('0x2c')](_0x8b4877['body'][_0x44d5('0x2e')])){throw new db['Sequelize']['ValidationError'](_0x44d5('0x2f')+_0x157605);}if(!_[_0x44d5('0x30')](_0x157605,_0x8b4877['body'][_0x44d5('0x2e')])){throw new db[(_0x44d5('0x24'))][(_0x44d5('0x25'))](_0x44d5('0x31')+_0x157605);}_0x39705f[_0x8b4877[_0x44d5('0x22')][_0x44d5('0x2e')]]=_0x8b4877[_0x44d5('0x22')][_0x44d5('0x2b')];})[_0x44d5('0xd')](function(){return db[_0x44d5('0x17')][_0x44d5('0x32')]({'where':{'id':_0x8b4877[_0x44d5('0x33')]['id']},'include':[{'model':db[_0x44d5('0x34')],'as':'List','include':[{'model':db[_0x44d5('0x23')],'as':_0x44d5('0x35'),'where':_0x39705f,'limit':0x1,'order':[[_0x44d5('0x29'),_0x44d5('0x36')]]}]},{'model':db[_0x44d5('0x37')],'as':'Applications'}]});})['then'](function(_0x36e0ff){if(_0x36e0ff&&_0x36e0ff[_0x44d5('0x38')]){var _0x3ef99a=_0x36e0ff['get']({'plain':!![]});_0x468029[_0x44d5('0x33')]=_0x3ef99a;_0x468029[_0x44d5('0x39')]=_0x3ef99a['Applications'];_0x468029[_0x44d5('0x3a')]=_0x3ef99a['List'];_0x468029['applications']=_[_0x44d5('0x3b')](_0x468029[_0x44d5('0x39')],[_0x44d5('0x3c')],[_0x44d5('0x3d')]);if(_0x468029[_0x44d5('0x33')][_0x44d5('0x3e')]){delete _0x468029[_0x44d5('0x33')][_0x44d5('0x3e')];}if(_0x468029[_0x44d5('0x33')][_0x44d5('0x38')]&&_0x468029[_0x44d5('0x33')]['List'][_0x44d5('0x35')]['length']){return _0x468029['account'][_0x44d5('0x38')]['Contacts'][0x0];}var _0x4ad0a4=_[_0x44d5('0xa')](_0x8b4877['body'],{'firstName':_0x8b4877[_0x44d5('0x22')][_0x44d5('0x2b')],'ListId':_0x3ef99a[_0x44d5('0x3f')]});_0x4ad0a4[_0x8b4877[_0x44d5('0x22')]['mapKey']]=_0x8b4877[_0x44d5('0x22')][_0x44d5('0x2b')];return db[_0x44d5('0x23')][_0x44d5('0x40')](_0x4ad0a4,{'fields':_0x2b386a,'raw':!![]});}})[_0x44d5('0xd')](function(_0xd778fe){_0x468029[_0x44d5('0x41')]=_0xd778fe;if(_0xd778fe){var _0x5056a8={'ContactId':_0xd778fe['id'],'FaxAccountId':_0x8b4877[_0x44d5('0x33')]['id'],'fax':_0xd778fe[_0x44d5('0x42')]};return db[_0x44d5('0x43')][_0x44d5('0x32')]({'where':{'ContactId':_0xd778fe['id'],'closed':![],'FaxAccountId':_0x8b4877[_0x44d5('0x33')]['id']}})[_0x44d5('0xd')](function(_0x164e6d){if(_0x164e6d){return[_0x164e6d,![]];}return db['FaxInteraction']['create'](_0x5056a8)['then'](function(_0x563bc4){return[_0x563bc4,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x44d5('0x44')](function(_0x5dd818,_0x5ee545){var _0x587dec=_0x5dd818['get']({'plain':!![]});if(_0x5ee545){if(_0x468029[_0x44d5('0x33')][_0x44d5('0x45')]){_0x468029[_0x44d5('0x39')][_0x44d5('0x46')]({'id':0x0,'priority':_0x468029[_0x44d5('0x39')]['length']+0x1,'app':_0x44d5('0x47'),'appdata':_0x44d5('0x48'),'interval':_0x44d5('0x49')});}_0x587dec[_0x44d5('0x4a')]=!![];}else{_0x587dec[_0x44d5('0x4a')]=![];}_0x468029['interaction']=_0x587dec;return db[_0x44d5('0x4b')][_0x44d5('0x40')]({'body':_0x8b4877['body'][_0x44d5('0x22')],'FaxAccountId':_0x8b4877[_0x44d5('0x33')]['id'],'FaxInteractionId':_0x5dd818['id'],'direction':'in','ContactId':_0x5dd818[_0x44d5('0x4c')],'AttachmentId':_0x8b4877['body']['AttachmentId']});})[_0x44d5('0xd')](function(_0x553a4a){_0x468029[_0x44d5('0x13')]=_0x553a4a;if(_0x468029[_0x44d5('0x4d')][_0x44d5('0x4e')]){return db[_0x44d5('0x4f')][_0x44d5('0x32')]({'attributes':['id',_0x44d5('0x50')],'where':{'id':_0x468029[_0x44d5('0x4d')][_0x44d5('0x4e')]}})[_0x44d5('0xd')](function(_0x5a98e6){if(_0x5a98e6){_0x468029[_0x44d5('0x39')][_0x44d5('0x51')]({'id':0x0,'priority':0x0,'app':_0x44d5('0x52'),'appdata':_0x5a98e6[_0x44d5('0x50')]+','+(_0x468029['account'][_0x44d5('0x53')]||0xa),'interval':_0x44d5('0x49')});}return respondWithRpcPromise(_0x44d5('0x54'),_0x44d5('0x55'),_0x468029);});}return respondWithRpcPromise(_0x44d5('0x54'),_0x44d5('0x55'),_0x468029);})[_0x44d5('0xd')](function(_0x1d613f){_0x10b15c(_0x1d613f);})[_0x44d5('0x15')](function(_0x31a551){_0x89b4bc(_0x27d5dc[_0x44d5('0x12')](0x1f4,_0x31a551[_0x44d5('0x13')]));});});};
\ No newline at end of file
index 5cb8661..15d2ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a12=['update','emit','removeListener','register','save','remove'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x1a12,0x124));var _0x21a1=function(_0x45595c,_0x40f4d9){_0x45595c=_0x45595c-0x0;var _0x56d561=_0x1a12[_0x45595c];return _0x56d561;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0x21a1('0x0'),_0x21a1('0x1'),_0x21a1('0x2')];function createListener(_0x5a17b7,_0x396276){return function(_0x213156){_0x396276[_0x21a1('0x3')](_0x5a17b7,_0x213156);};}function removeListener(_0x4dc7ce,_0x5d6f98){return function(){FaxAccountEvents[_0x21a1('0x4')](_0x4dc7ce,_0x5d6f98);};}exports[_0x21a1('0x5')]=function(_0xba19a9){for(var _0x741989=0x0,_0x455361=events['length'];_0x741989<_0x455361;_0x741989++){var _0x1c17ef=events[_0x741989];var _0x46db2a=createListener('faxAccount:'+_0x1c17ef,_0xba19a9);FaxAccountEvents['on'](_0x1c17ef,_0x46db2a);}};
\ No newline at end of file
+var _0x458f=['./faxAccount.events','save','update','emit','register','length','faxAccount:'];(function(_0x29c261,_0x3af39a){var _0x1a9335=function(_0x40d1e8){while(--_0x40d1e8){_0x29c261['push'](_0x29c261['shift']());}};_0x1a9335(++_0x3af39a);}(_0x458f,0x10a));var _0xf458=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x458f[_0x57b54c];return _0x59cc19;};'use strict';var FaxAccountEvents=require(_0xf458('0x0'));var events=[_0xf458('0x1'),'remove',_0xf458('0x2')];function createListener(_0x371855,_0x36183f){return function(_0x2c592b){_0x36183f[_0xf458('0x3')](_0x371855,_0x2c592b);};}function removeListener(_0x309e7b,_0x32ac7b){return function(){FaxAccountEvents['removeListener'](_0x309e7b,_0x32ac7b);};}exports[_0xf458('0x4')]=function(_0xa62360){for(var _0x4ea24f=0x0,_0x4c1c6d=events[_0xf458('0x5')];_0x4ea24f<_0x4c1c6d;_0x4ea24f++){var _0x8a2d17=events[_0x4ea24f];var _0x4f44d1=createListener(_0xf458('0x6')+_0x8a2d17,_0xa62360);FaxAccountEvents['on'](_0x8a2d17,_0x4f44d1);}};
\ No newline at end of file
index 9beb9c1..80e405b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a19=['/:id/dispositions','getDispositions','get','/:id/canned_answers','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/users','getAgents','post','create','addDisposition','addAnswer','addInteraction','addAccountApplications','/updateaccountapplications','updateAccountApplications','/:id/send','send','addAgents','put','update','delete','destroy','removeAnswers','exports','multer','path','express','Router','../../components/auth/service','./faxAccount.controller','index','/describe','isAuthenticated','describe','/:id'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x3a19,0xe5));var _0x93a1=function(_0x148267,_0x121776){_0x148267=_0x148267-0x0;var _0x39d319=_0x3a19[_0x148267];return _0x39d319;};'use strict';var multer=require(_0x93a1('0x0'));var util=require('util');var path=require(_0x93a1('0x1'));var timeout=require('connect-timeout');var express=require(_0x93a1('0x2'));var router=express[_0x93a1('0x3')]();var auth=require(_0x93a1('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x93a1('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x93a1('0x6')]);router['get'](_0x93a1('0x7'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x9')]);router['get'](_0x93a1('0xa'),auth[_0x93a1('0x8')](),controller['show']);router['get'](_0x93a1('0xb'),auth[_0x93a1('0x8')](),controller[_0x93a1('0xc')]);router[_0x93a1('0xd')](_0x93a1('0xe'),auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x93a1('0xf'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x10')]);router[_0x93a1('0xd')](_0x93a1('0x11'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x12')]);router[_0x93a1('0xd')](_0x93a1('0x13'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x14')]);router[_0x93a1('0xd')](_0x93a1('0x15'),auth['isAuthenticated'](),controller[_0x93a1('0x16')]);router[_0x93a1('0x17')]('/',auth[_0x93a1('0x8')](),controller[_0x93a1('0x18')]);router['post'](_0x93a1('0xb'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x19')]);router[_0x93a1('0x17')]('/:id/canned_answers',auth[_0x93a1('0x8')](),controller[_0x93a1('0x1a')]);router[_0x93a1('0x17')]('/:id/interactions',auth[_0x93a1('0x8')](),controller[_0x93a1('0x1b')]);router[_0x93a1('0x17')]('/:id/applications',auth['isAuthenticated'](),controller['addApplications']);router[_0x93a1('0x17')]('/addaccountapplications',auth[_0x93a1('0x8')](),controller[_0x93a1('0x1c')]);router[_0x93a1('0x17')](_0x93a1('0x1d'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x1e')]);router[_0x93a1('0x17')](_0x93a1('0x1f'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x20')]);router[_0x93a1('0x17')](_0x93a1('0x15'),auth['isAuthenticated'](),controller[_0x93a1('0x21')]);router[_0x93a1('0x22')]('/:id',auth[_0x93a1('0x8')](),controller[_0x93a1('0x23')]);router[_0x93a1('0x24')](_0x93a1('0xa'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x25')]);router[_0x93a1('0x24')](_0x93a1('0xb'),auth[_0x93a1('0x8')](),controller['removeDispositions']);router[_0x93a1('0x24')](_0x93a1('0xe'),auth[_0x93a1('0x8')](),controller[_0x93a1('0x26')]);router[_0x93a1('0x24')](_0x93a1('0x15'),auth[_0x93a1('0x8')](),controller['removeAgents']);module[_0x93a1('0x27')]=router;
\ No newline at end of file
+var _0xde6a=['express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','/:id/users','post','create','addDisposition','addAnswer','addApplications','/addaccountapplications','addAccountApplications','/updateaccountapplications','send','addAgents','put','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','util','connect-timeout'];(function(_0x2e41e2,_0x4e7250){var _0x2844d6=function(_0x28ce24){while(--_0x28ce24){_0x2e41e2['push'](_0x2e41e2['shift']());}};_0x2844d6(++_0x4e7250);}(_0xde6a,0x126));var _0xade6=function(_0x32d23b,_0x225be7){_0x32d23b=_0x32d23b-0x0;var _0x2b64b1=_0xde6a[_0x32d23b];return _0x2b64b1;};'use strict';var multer=require('multer');var util=require(_0xade6('0x0'));var path=require('path');var timeout=require(_0xade6('0x1'));var express=require(_0xade6('0x2'));var router=express['Router']();var auth=require(_0xade6('0x3'));var interaction=require(_0xade6('0x4'));var config=require('../../config/environment');var controller=require('./faxAccount.controller');router[_0xade6('0x5')]('/',auth[_0xade6('0x6')](),controller['index']);router[_0xade6('0x5')](_0xade6('0x7'),auth[_0xade6('0x6')](),controller[_0xade6('0x8')]);router['get'](_0xade6('0x9'),auth[_0xade6('0x6')](),controller[_0xade6('0xa')]);router[_0xade6('0x5')](_0xade6('0xb'),auth['isAuthenticated'](),controller['getDispositions']);router[_0xade6('0x5')](_0xade6('0xc'),auth[_0xade6('0x6')](),controller[_0xade6('0xd')]);router['get'](_0xade6('0xe'),auth[_0xade6('0x6')](),controller[_0xade6('0xf')]);router[_0xade6('0x5')](_0xade6('0x10'),auth[_0xade6('0x6')](),controller[_0xade6('0x11')]);router['get'](_0xade6('0x12'),auth[_0xade6('0x6')](),controller['getMessages']);router['get'](_0xade6('0x13'),auth['isAuthenticated'](),controller['getAgents']);router[_0xade6('0x14')]('/',auth['isAuthenticated'](),controller[_0xade6('0x15')]);router[_0xade6('0x14')](_0xade6('0xb'),auth[_0xade6('0x6')](),controller[_0xade6('0x16')]);router[_0xade6('0x14')](_0xade6('0xc'),auth[_0xade6('0x6')](),controller[_0xade6('0x17')]);router[_0xade6('0x14')](_0xade6('0xe'),auth['isAuthenticated'](),controller['addInteraction']);router[_0xade6('0x14')](_0xade6('0x10'),auth[_0xade6('0x6')](),controller[_0xade6('0x18')]);router[_0xade6('0x14')](_0xade6('0x19'),auth[_0xade6('0x6')](),controller[_0xade6('0x1a')]);router[_0xade6('0x14')](_0xade6('0x1b'),auth[_0xade6('0x6')](),controller['updateAccountApplications']);router[_0xade6('0x14')]('/:id/send',auth[_0xade6('0x6')](),controller[_0xade6('0x1c')]);router[_0xade6('0x14')]('/:id/users',auth[_0xade6('0x6')](),controller[_0xade6('0x1d')]);router[_0xade6('0x1e')]('/:id',auth[_0xade6('0x6')](),controller['update']);router['delete'](_0xade6('0x9'),auth[_0xade6('0x6')](),controller[_0xade6('0x1f')]);router[_0xade6('0x20')](_0xade6('0xb'),auth[_0xade6('0x6')](),controller[_0xade6('0x21')]);router[_0xade6('0x20')](_0xade6('0xc'),auth[_0xade6('0x6')](),controller[_0xade6('0x22')]);router[_0xade6('0x20')](_0xade6('0x13'),auth['isAuthenticated'](),controller[_0xade6('0x23')]);module[_0xade6('0x24')]=router;
\ No newline at end of file
index e43cc71..4ae6d39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e92=['*,*,*,*','sequelize','STRING','noop'];(function(_0x2624f7,_0x4175b9){var _0x3ea815=function(_0x3e0c8a){while(--_0x3e0c8a){_0x2624f7['push'](_0x2624f7['shift']());}};_0x3ea815(++_0x4175b9);}(_0x5e92,0x71));var _0x25e9=function(_0xafc3cd,_0x4b454b){_0xafc3cd=_0xafc3cd-0x0;var _0xda1e68=_0x5e92[_0xafc3cd];return _0xda1e68;};'use strict';var Sequelize=require(_0x25e9('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x25e9('0x1')],'allowNull':![],'defaultValue':_0x25e9('0x2')},'appdata':{'type':Sequelize['STRING'](0x1000),'defaultValue':''},'description':{'type':Sequelize[_0x25e9('0x1')]},'interval':{'type':Sequelize[_0x25e9('0x1')],'defaultValue':_0x25e9('0x3')}};
\ No newline at end of file
+var _0x5520=['STRING','sequelize','exports'];(function(_0xb63cd0,_0x46020d){var _0x55c0b8=function(_0x3b9c95){while(--_0x3b9c95){_0xb63cd0['push'](_0xb63cd0['shift']());}};_0x55c0b8(++_0x46020d);}(_0x5520,0x91));var _0x0552=function(_0x1f6e71,_0x19360b){_0x1f6e71=_0x1f6e71-0x0;var _0x2271aa=_0x5520[_0x1f6e71];return _0x2271aa;};'use strict';var Sequelize=require(_0x0552('0x0'));module[_0x0552('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x0552('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x0552('0x2')](0x1000),'defaultValue':''},'description':{'type':Sequelize[_0x0552('0x2')]},'interval':{'type':Sequelize[_0x0552('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 34e8f4d..ac5a112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc021=['json','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','stack','name','index','FaxApplication','rawAttributes','model','dateStart','dateEnd','query','filters','fields','attributes','length','hasOwnProperty','order','sort','pick','add','day','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','intersection','find','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end'];(function(_0x1fda3c,_0xefd4cb){var _0x1a2d1e=function(_0x31a6c3){while(--_0x31a6c3){_0x1fda3c['push'](_0x1fda3c['shift']());}};_0x1a2d1e(++_0xefd4cb);}(_0xc021,0x146));var _0x1c02=function(_0x52d739,_0x34401f){_0x52d739=_0x52d739-0x0;var _0x48832c=_0xc021[_0x52d739];return _0x48832c;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x1c02('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1c02('0x1'));var jsonpatch=require(_0x1c02('0x2'));var rp=require('request-promise');var moment=require(_0x1c02('0x3'));var BPromise=require(_0x1c02('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1c02('0x5'));var sox=require(_0x1c02('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x1c02('0x7'));var squel=require(_0x1c02('0x8'));var crypto=require(_0x1c02('0x9'));var jsforce=require(_0x1c02('0xa'));var deskjs=require(_0x1c02('0xb'));var toCsv=require(_0x1c02('0xc'));var querystring=require(_0x1c02('0xd'));var Papa=require(_0x1c02('0xe'));var Redis=require(_0x1c02('0xf'));var qs=require(_0x1c02('0x10'));var logger=require('../../config/logger')(_0x1c02('0x11'));var utils=require(_0x1c02('0x12'));var config=require(_0x1c02('0x13'));var db=require(_0x1c02('0x14'))['db'];function respondWithStatusCode(_0x58f7dd,_0x1a9e5e){_0x1a9e5e=_0x1a9e5e||0xcc;return function(_0x2dfd0c){if(_0x2dfd0c){return _0x58f7dd[_0x1c02('0x15')](_0x1a9e5e);}return _0x58f7dd[_0x1c02('0x16')](_0x1a9e5e)[_0x1c02('0x17')]();};}function respondWithResult(_0x5da7f7,_0x59bd18){_0x59bd18=_0x59bd18||0xc8;return function(_0x550bfd){if(_0x550bfd){return _0x5da7f7[_0x1c02('0x16')](_0x59bd18)[_0x1c02('0x18')](_0x550bfd);}};}function respondWithFilteredResult(_0x899581,_0x5c3a57){return function(_0x5b7cd1){if(_0x5b7cd1){var _0x270e4a=_0x5b7cd1[_0x1c02('0x19')],_0x4aa724=_0x5c3a57[_0x1c02('0x1a')],_0x5c2aa7=_0x5c3a57[_0x1c02('0x1a')]+_0x5c3a57[_0x1c02('0x1b')],_0x185ae3;if(_0x5c2aa7>=_0x270e4a){_0x5c2aa7=_0x270e4a;_0x185ae3=0xc8;}else{_0x185ae3=0xce;}_0x899581[_0x1c02('0x16')](_0x185ae3);return _0x899581[_0x1c02('0x1c')](_0x1c02('0x1d'),_0x4aa724+'-'+_0x5c2aa7+'/'+_0x270e4a)['json'](_0x5b7cd1);}return null;};}function patchUpdates(_0x34e127){return function(_0x56334c){try{jsonpatch[_0x1c02('0x1e')](_0x56334c,_0x34e127,!![]);}catch(_0x4eb1a3){return BPromise[_0x1c02('0x1f')](_0x4eb1a3);}return _0x56334c['save']();};}function saveUpdates(_0x1a0641,_0xbbe053){return function(_0x585e44){if(_0x585e44){return _0x585e44[_0x1c02('0x20')](_0x1a0641)[_0x1c02('0x21')](function(_0xb8e108){return _0xb8e108;});}return null;};}function removeEntity(_0x37f741,_0x5bfef9){return function(_0x1fc4df){if(_0x1fc4df){return _0x1fc4df[_0x1c02('0x22')]()[_0x1c02('0x21')](function(){_0x37f741[_0x1c02('0x16')](0xcc)[_0x1c02('0x17')]();});}};}function handleEntityNotFound(_0x89a1c9,_0x210ef6){return function(_0x5b721d){if(!_0x5b721d){_0x89a1c9['sendStatus'](0x194);}return _0x5b721d;};}function handleError(_0x3af983,_0x5958b2){_0x5958b2=_0x5958b2||0x1f4;return function(_0x572deb){logger['error'](_0x572deb[_0x1c02('0x23')]);if(_0x572deb[_0x1c02('0x24')]){delete _0x572deb[_0x1c02('0x24')];}_0x3af983['status'](_0x5958b2)['send'](_0x572deb);};}exports[_0x1c02('0x25')]=function(_0x270a94,_0x569b77){var _0x5a43e1={},_0x3283e7={},_0x59ebff={'count':0x0,'rows':[]};var _0x4916ba=db[_0x1c02('0x26')][_0x1c02('0x27')];_0x3283e7[_0x1c02('0x28')]=_['keys'](_0x4916ba);var _0x4e6d7f={'dateStart':_0x270a94['query'][_0x1c02('0x29')],'dateEnd':_0x270a94['query'][_0x1c02('0x2a')]};delete _0x270a94['query'][_0x1c02('0x29')];delete _0x270a94[_0x1c02('0x2b')][_0x1c02('0x2a')];_0x3283e7['query']=_['keys'](_0x270a94[_0x1c02('0x2b')]);_0x3283e7[_0x1c02('0x2c')]=_['intersection'](_0x3283e7[_0x1c02('0x28')],_0x3283e7[_0x1c02('0x2b')]);_0x5a43e1['attributes']=_['intersection'](_0x3283e7[_0x1c02('0x28')],qs[_0x1c02('0x2d')](_0x270a94[_0x1c02('0x2b')][_0x1c02('0x2d')]));_0x5a43e1[_0x1c02('0x2e')]=_0x5a43e1[_0x1c02('0x2e')][_0x1c02('0x2f')]?_0x5a43e1[_0x1c02('0x2e')]:_0x3283e7[_0x1c02('0x28')];if(!_0x270a94[_0x1c02('0x2b')][_0x1c02('0x30')]('nolimit')){_0x5a43e1[_0x1c02('0x1b')]=qs['limit'](_0x270a94['query']['limit']);_0x5a43e1[_0x1c02('0x1a')]=qs[_0x1c02('0x1a')](_0x270a94[_0x1c02('0x2b')][_0x1c02('0x1a')]);}_0x5a43e1[_0x1c02('0x31')]=qs[_0x1c02('0x32')](_0x270a94[_0x1c02('0x2b')][_0x1c02('0x32')]);_0x5a43e1['where']=qs[_0x1c02('0x2c')](_[_0x1c02('0x33')](_0x270a94['query'],_0x3283e7['filters']));if(_0x4e6d7f[_0x1c02('0x29')]){if(_0x4e6d7f[_0x1c02('0x2a')]){_0x4e6d7f[_0x1c02('0x2a')]=moment(_0x4e6d7f[_0x1c02('0x2a')])[_0x1c02('0x34')](0x1,_0x1c02('0x35'));}else{_0x4e6d7f[_0x1c02('0x2a')]=moment(_0x4e6d7f[_0x1c02('0x29')])[_0x1c02('0x34')](0x1,_0x1c02('0x35'));}_['merge'](_0x5a43e1[_0x1c02('0x36')],{'createdAt':{'$gte':_0x4e6d7f[_0x1c02('0x29')],'$lte':_0x4e6d7f['dateEnd']}});}if(_0x270a94[_0x1c02('0x2b')][_0x1c02('0x37')]){_0x5a43e1[_0x1c02('0x36')]=_[_0x1c02('0x38')](_0x5a43e1[_0x1c02('0x36')],{'$or':_['map'](_0x4916ba,function(_0x46e590){if(_0x46e590[_0x1c02('0x39')]['key']!==_0x1c02('0x3a')){var _0x37f767={};_0x37f767[_0x46e590['field']]={'$like':'%'+_0x270a94[_0x1c02('0x2b')][_0x1c02('0x37')]+'%'};return _0x37f767;}})});}_0x5a43e1=_[_0x1c02('0x38')]({},_0x5a43e1,_0x270a94[_0x1c02('0x3b')]);var _0x44cc0c={'where':_0x5a43e1[_0x1c02('0x36')]};return db[_0x1c02('0x26')][_0x1c02('0x19')](_0x44cc0c)['then'](function(_0xfe2506){_0x59ebff[_0x1c02('0x19')]=_0xfe2506;if(_0x270a94[_0x1c02('0x2b')][_0x1c02('0x3c')]){_0x5a43e1[_0x1c02('0x3d')]=[{'all':!![]}];}return db[_0x1c02('0x26')][_0x1c02('0x3e')](_0x5a43e1);})[_0x1c02('0x21')](function(_0x183930){_0x59ebff['rows']=_0x183930;return _0x59ebff;})[_0x1c02('0x21')](respondWithFilteredResult(_0x569b77,_0x5a43e1))[_0x1c02('0x3f')](handleError(_0x569b77,null));};exports[_0x1c02('0x40')]=function(_0x3436f5,_0x2f9cac){var _0x295876={'raw':!![],'where':{'id':_0x3436f5[_0x1c02('0x41')]['id']}},_0x582878={};_0x582878[_0x1c02('0x28')]=_[_0x1c02('0x42')](db[_0x1c02('0x26')][_0x1c02('0x27')]);_0x582878[_0x1c02('0x2b')]=_[_0x1c02('0x42')](_0x3436f5[_0x1c02('0x2b')]);_0x582878['filters']=_[_0x1c02('0x43')](_0x582878[_0x1c02('0x28')],_0x582878[_0x1c02('0x2b')]);_0x295876['attributes']=_[_0x1c02('0x43')](_0x582878[_0x1c02('0x28')],qs[_0x1c02('0x2d')](_0x3436f5['query']['fields']));_0x295876[_0x1c02('0x2e')]=_0x295876[_0x1c02('0x2e')]['length']?_0x295876[_0x1c02('0x2e')]:_0x582878[_0x1c02('0x28')];if(_0x3436f5[_0x1c02('0x2b')][_0x1c02('0x3c')]){_0x295876[_0x1c02('0x3d')]=[{'all':!![]}];}_0x295876=_[_0x1c02('0x38')]({},_0x295876,_0x3436f5[_0x1c02('0x3b')]);return db['FaxApplication'][_0x1c02('0x44')](_0x295876)['then'](handleEntityNotFound(_0x2f9cac,null))['then'](respondWithResult(_0x2f9cac,null))[_0x1c02('0x3f')](handleError(_0x2f9cac,null));};exports['create']=function(_0x26283a,_0x5852d0){return db[_0x1c02('0x26')]['create'](_0x26283a['body'],{})[_0x1c02('0x21')](respondWithResult(_0x5852d0,0xc9))['catch'](handleError(_0x5852d0,null));};exports[_0x1c02('0x20')]=function(_0x38846e,_0x26c16d){if(_0x38846e['body']['id']){delete _0x38846e[_0x1c02('0x45')]['id'];}return db[_0x1c02('0x26')][_0x1c02('0x44')]({'where':{'id':_0x38846e[_0x1c02('0x41')]['id']}})[_0x1c02('0x21')](handleEntityNotFound(_0x26c16d,null))[_0x1c02('0x21')](saveUpdates(_0x38846e[_0x1c02('0x45')],null))[_0x1c02('0x21')](respondWithResult(_0x26c16d,null))[_0x1c02('0x3f')](handleError(_0x26c16d,null));};exports['destroy']=function(_0x59ebd2,_0x477918){return db[_0x1c02('0x26')][_0x1c02('0x44')]({'where':{'id':_0x59ebd2[_0x1c02('0x41')]['id']}})[_0x1c02('0x21')](handleEntityNotFound(_0x477918,null))[_0x1c02('0x21')](removeEntity(_0x477918,null))[_0x1c02('0x3f')](handleError(_0x477918,null));};
\ No newline at end of file
+var _0x4c57=['rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','api','../../mysqldb','status','end','json','offset','limit','set','Content-Range','apply','reject','save','then','sendStatus','error','stack','name','send','index','FaxApplication','rawAttributes','model','keys','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','dateStart','add','merge','filter','map','type','key','VIRTUAL','field','options','count','includeAll','include','findAll','rows','catch','show','params','create','body','update','find','html-pdf','eml-format'];(function(_0x47eac5,_0x29fd1d){var _0x2bdbdb=function(_0x26d0ca){while(--_0x26d0ca){_0x47eac5['push'](_0x47eac5['shift']());}};_0x2bdbdb(++_0x29fd1d);}(_0x4c57,0x122));var _0x74c5=function(_0x52b842,_0x478563){_0x52b842=_0x52b842-0x0;var _0xf7084f=_0x4c57[_0x52b842];return _0xf7084f;};'use strict';var pdf=require(_0x74c5('0x0'));var emlformat=require(_0x74c5('0x1'));var rimraf=require(_0x74c5('0x2'));var zipdir=require(_0x74c5('0x3'));var jsonpatch=require(_0x74c5('0x4'));var rp=require(_0x74c5('0x5'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x74c5('0x6'));var util=require(_0x74c5('0x7'));var path=require('path');var sox=require(_0x74c5('0x8'));var csv=require(_0x74c5('0x9'));var ejs=require(_0x74c5('0xa'));var fs=require('fs');var _=require(_0x74c5('0xb'));var squel=require(_0x74c5('0xc'));var crypto=require(_0x74c5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x74c5('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x74c5('0xf'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x74c5('0x10'))['db'];function respondWithStatusCode(_0x5f3f03,_0x269b08){_0x269b08=_0x269b08||0xcc;return function(_0x193f88){if(_0x193f88){return _0x5f3f03['sendStatus'](_0x269b08);}return _0x5f3f03[_0x74c5('0x11')](_0x269b08)[_0x74c5('0x12')]();};}function respondWithResult(_0x25b813,_0x1dc187){_0x1dc187=_0x1dc187||0xc8;return function(_0x1a4d8d){if(_0x1a4d8d){return _0x25b813[_0x74c5('0x11')](_0x1dc187)[_0x74c5('0x13')](_0x1a4d8d);}};}function respondWithFilteredResult(_0x48a3dd,_0x561a11){return function(_0x1f66de){if(_0x1f66de){var _0x43e225=_0x1f66de['count'],_0x1354b5=_0x561a11[_0x74c5('0x14')],_0x288298=_0x561a11[_0x74c5('0x14')]+_0x561a11[_0x74c5('0x15')],_0x43f299;if(_0x288298>=_0x43e225){_0x288298=_0x43e225;_0x43f299=0xc8;}else{_0x43f299=0xce;}_0x48a3dd[_0x74c5('0x11')](_0x43f299);return _0x48a3dd[_0x74c5('0x16')](_0x74c5('0x17'),_0x1354b5+'-'+_0x288298+'/'+_0x43e225)[_0x74c5('0x13')](_0x1f66de);}return null;};}function patchUpdates(_0x39c5c8){return function(_0x28bfb8){try{jsonpatch[_0x74c5('0x18')](_0x28bfb8,_0x39c5c8,!![]);}catch(_0x37d952){return BPromise[_0x74c5('0x19')](_0x37d952);}return _0x28bfb8[_0x74c5('0x1a')]();};}function saveUpdates(_0x4a76cf,_0x59f361){return function(_0x4cc865){if(_0x4cc865){return _0x4cc865['update'](_0x4a76cf)['then'](function(_0x3fad64){return _0x3fad64;});}return null;};}function removeEntity(_0x5e7a58,_0x1fd08a){return function(_0x276411){if(_0x276411){return _0x276411['destroy']()[_0x74c5('0x1b')](function(){_0x5e7a58['status'](0xcc)[_0x74c5('0x12')]();});}};}function handleEntityNotFound(_0x1a3309,_0x4cd79d){return function(_0x4b092a){if(!_0x4b092a){_0x1a3309[_0x74c5('0x1c')](0x194);}return _0x4b092a;};}function handleError(_0x2fdcb1,_0x355410){_0x355410=_0x355410||0x1f4;return function(_0x624825){logger[_0x74c5('0x1d')](_0x624825[_0x74c5('0x1e')]);if(_0x624825['name']){delete _0x624825[_0x74c5('0x1f')];}_0x2fdcb1[_0x74c5('0x11')](_0x355410)[_0x74c5('0x20')](_0x624825);};}exports[_0x74c5('0x21')]=function(_0x506a89,_0x48cd5d){var _0xf9f021={},_0x4cf2af={},_0x2a5a57={'count':0x0,'rows':[]};var _0x573400=db[_0x74c5('0x22')][_0x74c5('0x23')];_0x4cf2af[_0x74c5('0x24')]=_[_0x74c5('0x25')](_0x573400);var _0x11c7e4={'dateStart':_0x506a89[_0x74c5('0x26')]['dateStart'],'dateEnd':_0x506a89[_0x74c5('0x26')][_0x74c5('0x27')]};delete _0x506a89[_0x74c5('0x26')]['dateStart'];delete _0x506a89[_0x74c5('0x26')][_0x74c5('0x27')];_0x4cf2af[_0x74c5('0x26')]=_[_0x74c5('0x25')](_0x506a89[_0x74c5('0x26')]);_0x4cf2af[_0x74c5('0x28')]=_[_0x74c5('0x29')](_0x4cf2af[_0x74c5('0x24')],_0x4cf2af[_0x74c5('0x26')]);_0xf9f021[_0x74c5('0x2a')]=_['intersection'](_0x4cf2af['model'],qs[_0x74c5('0x2b')](_0x506a89[_0x74c5('0x26')][_0x74c5('0x2b')]));_0xf9f021[_0x74c5('0x2a')]=_0xf9f021[_0x74c5('0x2a')][_0x74c5('0x2c')]?_0xf9f021[_0x74c5('0x2a')]:_0x4cf2af[_0x74c5('0x24')];if(!_0x506a89[_0x74c5('0x26')][_0x74c5('0x2d')](_0x74c5('0x2e'))){_0xf9f021[_0x74c5('0x15')]=qs[_0x74c5('0x15')](_0x506a89[_0x74c5('0x26')]['limit']);_0xf9f021[_0x74c5('0x14')]=qs[_0x74c5('0x14')](_0x506a89[_0x74c5('0x26')][_0x74c5('0x14')]);}_0xf9f021[_0x74c5('0x2f')]=qs[_0x74c5('0x30')](_0x506a89[_0x74c5('0x26')][_0x74c5('0x30')]);_0xf9f021[_0x74c5('0x31')]=qs['filters'](_[_0x74c5('0x32')](_0x506a89[_0x74c5('0x26')],_0x4cf2af[_0x74c5('0x28')]));if(_0x11c7e4[_0x74c5('0x33')]){if(_0x11c7e4['dateEnd']){_0x11c7e4[_0x74c5('0x27')]=moment(_0x11c7e4[_0x74c5('0x27')])[_0x74c5('0x34')](0x1,'day');}else{_0x11c7e4[_0x74c5('0x27')]=moment(_0x11c7e4[_0x74c5('0x33')])['add'](0x1,'day');}_[_0x74c5('0x35')](_0xf9f021[_0x74c5('0x31')],{'createdAt':{'$gte':_0x11c7e4[_0x74c5('0x33')],'$lte':_0x11c7e4[_0x74c5('0x27')]}});}if(_0x506a89[_0x74c5('0x26')][_0x74c5('0x36')]){_0xf9f021['where']=_[_0x74c5('0x35')](_0xf9f021[_0x74c5('0x31')],{'$or':_[_0x74c5('0x37')](_0x573400,function(_0x5b7e90){if(_0x5b7e90[_0x74c5('0x38')][_0x74c5('0x39')]!==_0x74c5('0x3a')){var _0x442762={};_0x442762[_0x5b7e90[_0x74c5('0x3b')]]={'$like':'%'+_0x506a89[_0x74c5('0x26')][_0x74c5('0x36')]+'%'};return _0x442762;}})});}_0xf9f021=_[_0x74c5('0x35')]({},_0xf9f021,_0x506a89[_0x74c5('0x3c')]);var _0x9506c6={'where':_0xf9f021['where']};return db[_0x74c5('0x22')][_0x74c5('0x3d')](_0x9506c6)['then'](function(_0x16a1c9){_0x2a5a57[_0x74c5('0x3d')]=_0x16a1c9;if(_0x506a89[_0x74c5('0x26')][_0x74c5('0x3e')]){_0xf9f021[_0x74c5('0x3f')]=[{'all':!![]}];}return db[_0x74c5('0x22')][_0x74c5('0x40')](_0xf9f021);})[_0x74c5('0x1b')](function(_0x27f6cc){_0x2a5a57[_0x74c5('0x41')]=_0x27f6cc;return _0x2a5a57;})[_0x74c5('0x1b')](respondWithFilteredResult(_0x48cd5d,_0xf9f021))[_0x74c5('0x42')](handleError(_0x48cd5d,null));};exports[_0x74c5('0x43')]=function(_0x2674b5,_0x219740){var _0x22fd13={'raw':!![],'where':{'id':_0x2674b5[_0x74c5('0x44')]['id']}},_0x3d2ad0={};_0x3d2ad0[_0x74c5('0x24')]=_['keys'](db[_0x74c5('0x22')][_0x74c5('0x23')]);_0x3d2ad0[_0x74c5('0x26')]=_[_0x74c5('0x25')](_0x2674b5['query']);_0x3d2ad0['filters']=_['intersection'](_0x3d2ad0[_0x74c5('0x24')],_0x3d2ad0[_0x74c5('0x26')]);_0x22fd13[_0x74c5('0x2a')]=_['intersection'](_0x3d2ad0['model'],qs['fields'](_0x2674b5[_0x74c5('0x26')][_0x74c5('0x2b')]));_0x22fd13['attributes']=_0x22fd13[_0x74c5('0x2a')][_0x74c5('0x2c')]?_0x22fd13['attributes']:_0x3d2ad0['model'];if(_0x2674b5['query'][_0x74c5('0x3e')]){_0x22fd13[_0x74c5('0x3f')]=[{'all':!![]}];}_0x22fd13=_[_0x74c5('0x35')]({},_0x22fd13,_0x2674b5['options']);return db[_0x74c5('0x22')]['find'](_0x22fd13)['then'](handleEntityNotFound(_0x219740,null))[_0x74c5('0x1b')](respondWithResult(_0x219740,null))['catch'](handleError(_0x219740,null));};exports['create']=function(_0x1e218c,_0xbf5967){return db[_0x74c5('0x22')][_0x74c5('0x45')](_0x1e218c[_0x74c5('0x46')],{})['then'](respondWithResult(_0xbf5967,0xc9))[_0x74c5('0x42')](handleError(_0xbf5967,null));};exports[_0x74c5('0x47')]=function(_0x4bb310,_0x2e80ab){if(_0x4bb310[_0x74c5('0x46')]['id']){delete _0x4bb310[_0x74c5('0x46')]['id'];}return db[_0x74c5('0x22')]['find']({'where':{'id':_0x4bb310[_0x74c5('0x44')]['id']}})[_0x74c5('0x1b')](handleEntityNotFound(_0x2e80ab,null))['then'](saveUpdates(_0x4bb310[_0x74c5('0x46')],null))[_0x74c5('0x1b')](respondWithResult(_0x2e80ab,null))[_0x74c5('0x42')](handleError(_0x2e80ab,null));};exports['destroy']=function(_0xd38ebe,_0x571071){return db[_0x74c5('0x22')][_0x74c5('0x48')]({'where':{'id':_0xd38ebe[_0x74c5('0x44')]['id']}})['then'](handleEntityNotFound(_0x571071,null))[_0x74c5('0x1b')](removeEntity(_0x571071,null))['catch'](handleError(_0x571071,null));};
\ No newline at end of file
index 0e96ae3..39cd85a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8068=['api','request-promise','exports','FaxApplication','lodash','util'];(function(_0x518b99,_0x4333e4){var _0x45faed=function(_0x48efa3){while(--_0x48efa3){_0x518b99['push'](_0x518b99['shift']());}};_0x45faed(++_0x4333e4);}(_0x8068,0x1f0));var _0x8806=function(_0x1a57d1,_0x4281ff){_0x1a57d1=_0x1a57d1-0x0;var _0x394876=_0x8068[_0x1a57d1];return _0x394876;};'use strict';var _=require(_0x8806('0x0'));var util=require(_0x8806('0x1'));var logger=require('../../config/logger')(_0x8806('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8806('0x3'));var attributes=require('./faxApplication.attributes');module[_0x8806('0x4')]=function(_0x3ca1d7,_0x266eb3){return _0x3ca1d7['define'](_0x8806('0x5'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x45a4=['api','moment','bluebird','./faxApplication.attributes','exports','FaxApplication','fax_applications','lodash','util'];(function(_0x5b9837,_0x2b11e4){var _0x2f220=function(_0x12e5f3){while(--_0x12e5f3){_0x5b9837['push'](_0x5b9837['shift']());}};_0x2f220(++_0x2b11e4);}(_0x45a4,0x181));var _0x445a=function(_0x3e8bfc,_0x4c480d){_0x3e8bfc=_0x3e8bfc-0x0;var _0x5574f0=_0x45a4[_0x3e8bfc];return _0x5574f0;};'use strict';var _=require(_0x445a('0x0'));var util=require(_0x445a('0x1'));var logger=require('../../config/logger')(_0x445a('0x2'));var moment=require(_0x445a('0x3'));var BPromise=require(_0x445a('0x4'));var rp=require('request-promise');var attributes=require(_0x445a('0x5'));module[_0x445a('0x6')]=function(_0x1e76c8,_0x431f86){return _0x1e76c8['define'](_0x445a('0x7'),attributes,{'tableName':_0x445a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f71929d..7717516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2f4=['attributes','limit','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','where'];(function(_0x20daba,_0x157cfb){var _0xcf3b31=function(_0x58bb5e){while(--_0x58bb5e){_0x20daba['push'](_0x20daba['shift']());}};_0xcf3b31(++_0x157cfb);}(_0xa2f4,0xa7));var _0x4a2f=function(_0x5e462b,_0x187b06){_0x5e462b=_0x5e462b-0x0;var _0xb01a65=_0xa2f4[_0x5e462b];return _0xb01a65;};'use strict';var _=require('lodash');var util=require(_0x4a2f('0x0'));var moment=require('moment');var BPromise=require(_0x4a2f('0x1'));var rs=require(_0x4a2f('0x2'));var fs=require('fs');var Redis=require(_0x4a2f('0x3'));var db=require(_0x4a2f('0x4'))['db'];var utils=require(_0x4a2f('0x5'));var logger=require(_0x4a2f('0x6'))(_0x4a2f('0x7'));var config=require(_0x4a2f('0x8'));var jayson=require(_0x4a2f('0x9'));var client=jayson[_0x4a2f('0xa')][_0x4a2f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x371e6c,_0x3ebf22,_0x3a21b3){return new BPromise(function(_0x488381,_0x2c190e){return client[_0x4a2f('0xc')](_0x371e6c,_0x3a21b3)[_0x4a2f('0xd')](function(_0x5c29e1){logger[_0x4a2f('0xe')](_0x4a2f('0xf'),_0x3ebf22,_0x4a2f('0x10'));logger[_0x4a2f('0x11')](_0x4a2f('0x12'),_0x3ebf22,'request\x20sent',JSON[_0x4a2f('0x13')](_0x5c29e1));if(_0x5c29e1[_0x4a2f('0x14')]){if(_0x5c29e1[_0x4a2f('0x14')][_0x4a2f('0x15')]===0x1f4){logger[_0x4a2f('0x14')]('FaxApplication,\x20%s,\x20%s',_0x3ebf22,_0x5c29e1[_0x4a2f('0x14')][_0x4a2f('0x16')]);return _0x2c190e(_0x5c29e1[_0x4a2f('0x14')][_0x4a2f('0x16')]);}logger[_0x4a2f('0x14')](_0x4a2f('0xf'),_0x3ebf22,_0x5c29e1[_0x4a2f('0x14')][_0x4a2f('0x16')]);return _0x488381(_0x5c29e1[_0x4a2f('0x14')]['message']);}else{logger[_0x4a2f('0xe')](_0x4a2f('0xf'),_0x3ebf22,_0x4a2f('0x10'));_0x488381(_0x5c29e1[_0x4a2f('0x17')][_0x4a2f('0x16')]);}})[_0x4a2f('0x18')](function(_0x5cb1f3){logger[_0x4a2f('0x14')](_0x4a2f('0xf'),_0x3ebf22,_0x5cb1f3);_0x2c190e(_0x5cb1f3);});});}exports[_0x4a2f('0x19')]=function(_0x17bf7a){var _0x340d5a=this;return new Promise(function(_0x52df4f,_0x7b9bc6){return db[_0x4a2f('0x1a')][_0x4a2f('0x1b')](_0x17bf7a[_0x4a2f('0x1c')],{'raw':_0x17bf7a[_0x4a2f('0x1d')]?_0x17bf7a[_0x4a2f('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x17bf7a[_0x4a2f('0x1d')]?_0x17bf7a[_0x4a2f('0x1d')][_0x4a2f('0x1e')]||null:null,'attributes':_0x17bf7a[_0x4a2f('0x1d')]?_0x17bf7a[_0x4a2f('0x1d')][_0x4a2f('0x1f')]||null:null,'limit':_0x17bf7a[_0x4a2f('0x1d')]?_0x17bf7a[_0x4a2f('0x1d')][_0x4a2f('0x20')]||null:null})[_0x4a2f('0xd')](function(_0x1ae143){logger[_0x4a2f('0xe')](_0x4a2f('0x19'),_0x17bf7a);logger[_0x4a2f('0x11')](_0x4a2f('0x19'),_0x17bf7a,JSON['stringify'](_0x1ae143));_0x52df4f(_0x1ae143);})[_0x4a2f('0x18')](function(_0x56ef0e){logger[_0x4a2f('0x14')](_0x4a2f('0x19'),_0x56ef0e['message'],_0x17bf7a);_0x7b9bc6(_0x340d5a[_0x4a2f('0x14')](0x1f4,_0x56ef0e[_0x4a2f('0x16')]));});});};
\ No newline at end of file
+var _0xfa53=['info','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','message','UpdateFaxApplication','FaxApplication','update','body','options','where','attributes','limit','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','http','request','then'];(function(_0x2e890e,_0x1a22b7){var _0x5d2b7f=function(_0x464442){while(--_0x464442){_0x2e890e['push'](_0x2e890e['shift']());}};_0x5d2b7f(++_0x1a22b7);}(_0xfa53,0x1a7));var _0x3fa5=function(_0x5cb5ea,_0x374462){_0x5cb5ea=_0x5cb5ea-0x0;var _0x1f9b1c=_0xfa53[_0x5cb5ea];return _0x1f9b1c;};'use strict';var _=require(_0x3fa5('0x0'));var util=require(_0x3fa5('0x1'));var moment=require(_0x3fa5('0x2'));var BPromise=require(_0x3fa5('0x3'));var rs=require(_0x3fa5('0x4'));var fs=require('fs');var Redis=require(_0x3fa5('0x5'));var db=require(_0x3fa5('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x3fa5('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3fa5('0x8'));var client=jayson['client'][_0x3fa5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f447e,_0x3ba6f3,_0x2193a4){return new BPromise(function(_0x404239,_0x1c2515){return client[_0x3fa5('0xa')](_0x3f447e,_0x2193a4)[_0x3fa5('0xb')](function(_0x427eca){logger[_0x3fa5('0xc')](_0x3fa5('0xd'),_0x3ba6f3,_0x3fa5('0xe'));logger['debug'](_0x3fa5('0xf'),_0x3ba6f3,'request\x20sent',JSON['stringify'](_0x427eca));if(_0x427eca[_0x3fa5('0x10')]){if(_0x427eca['error'][_0x3fa5('0x11')]===0x1f4){logger[_0x3fa5('0x10')]('FaxApplication,\x20%s,\x20%s',_0x3ba6f3,_0x427eca[_0x3fa5('0x10')][_0x3fa5('0x12')]);return _0x1c2515(_0x427eca[_0x3fa5('0x10')][_0x3fa5('0x12')]);}logger['error'](_0x3fa5('0xd'),_0x3ba6f3,_0x427eca[_0x3fa5('0x10')][_0x3fa5('0x12')]);return _0x404239(_0x427eca['error'][_0x3fa5('0x12')]);}else{logger[_0x3fa5('0xc')]('FaxApplication,\x20%s,\x20%s',_0x3ba6f3,_0x3fa5('0xe'));_0x404239(_0x427eca['result']['message']);}})['catch'](function(_0x4ab8f0){logger['error'](_0x3fa5('0xd'),_0x3ba6f3,_0x4ab8f0);_0x1c2515(_0x4ab8f0);});});}exports[_0x3fa5('0x13')]=function(_0x3d07d1){var _0x399052=this;return new Promise(function(_0x298448,_0x230bff){return db[_0x3fa5('0x14')][_0x3fa5('0x15')](_0x3d07d1[_0x3fa5('0x16')],{'raw':_0x3d07d1[_0x3fa5('0x17')]?_0x3d07d1['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d07d1[_0x3fa5('0x17')]?_0x3d07d1[_0x3fa5('0x17')][_0x3fa5('0x18')]||null:null,'attributes':_0x3d07d1[_0x3fa5('0x17')]?_0x3d07d1[_0x3fa5('0x17')][_0x3fa5('0x19')]||null:null,'limit':_0x3d07d1[_0x3fa5('0x17')]?_0x3d07d1[_0x3fa5('0x17')][_0x3fa5('0x1a')]||null:null})[_0x3fa5('0xb')](function(_0x45e497){logger[_0x3fa5('0xc')](_0x3fa5('0x13'),_0x3d07d1);logger[_0x3fa5('0x1b')](_0x3fa5('0x13'),_0x3d07d1,JSON['stringify'](_0x45e497));_0x298448(_0x45e497);})[_0x3fa5('0x1c')](function(_0x1dbab9){logger['error']('UpdateFaxApplication',_0x1dbab9[_0x3fa5('0x12')],_0x3d07d1);_0x230bff(_0x399052[_0x3fa5('0x10')](0x1f4,_0x1dbab9[_0x3fa5('0x12')]));});});};
\ No newline at end of file
index e8fdb10..848be6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf060=['../../components/auth/service','./faxApplication.controller','get','index','/:id','isAuthenticated','show','create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x5146ef,_0x5aa580){var _0x3894be=function(_0x528d06){while(--_0x528d06){_0x5146ef['push'](_0x5146ef['shift']());}};_0x3894be(++_0x5aa580);}(_0xf060,0xc6));var _0x0f06=function(_0x4624dc,_0x2d47e2){_0x4624dc=_0x4624dc-0x0;var _0x230719=_0xf060[_0x4624dc];return _0x230719;};'use strict';var multer=require(_0x0f06('0x0'));var util=require(_0x0f06('0x1'));var path=require(_0x0f06('0x2'));var timeout=require(_0x0f06('0x3'));var express=require(_0x0f06('0x4'));var router=express[_0x0f06('0x5')]();var auth=require(_0x0f06('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0f06('0x7'));router[_0x0f06('0x8')]('/',auth['isAuthenticated'](),controller[_0x0f06('0x9')]);router[_0x0f06('0x8')](_0x0f06('0xa'),auth[_0x0f06('0xb')](),controller[_0x0f06('0xc')]);router['post']('/',auth[_0x0f06('0xb')](),controller[_0x0f06('0xd')]);router['put'](_0x0f06('0xa'),auth[_0x0f06('0xb')](),controller['update']);router[_0x0f06('0xe')](_0x0f06('0xa'),auth[_0x0f06('0xb')](),controller[_0x0f06('0xf')]);module[_0x0f06('0x10')]=router;
\ No newline at end of file
+var _0x0f54=['create','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x65ff4f,_0x20c286){var _0x583441=function(_0x1d93c4){while(--_0x1d93c4){_0x65ff4f['push'](_0x65ff4f['shift']());}};_0x583441(++_0x20c286);}(_0x0f54,0xb8));var _0x40f5=function(_0x5b616e,_0x37f146){_0x5b616e=_0x5b616e-0x0;var _0xbac849=_0x0f54[_0x5b616e];return _0xbac849;};'use strict';var multer=require('multer');var util=require(_0x40f5('0x0'));var path=require(_0x40f5('0x1'));var timeout=require(_0x40f5('0x2'));var express=require(_0x40f5('0x3'));var router=express[_0x40f5('0x4')]();var auth=require(_0x40f5('0x5'));var interaction=require(_0x40f5('0x6'));var config=require(_0x40f5('0x7'));var controller=require(_0x40f5('0x8'));router[_0x40f5('0x9')]('/',auth[_0x40f5('0xa')](),controller[_0x40f5('0xb')]);router['get'](_0x40f5('0xc'),auth['isAuthenticated'](),controller[_0x40f5('0xd')]);router['post']('/',auth[_0x40f5('0xa')](),controller[_0x40f5('0xe')]);router['put'](_0x40f5('0xc'),auth[_0x40f5('0xa')](),controller[_0x40f5('0xf')]);router[_0x40f5('0x10')](_0x40f5('0xc'),auth[_0x40f5('0xa')](),controller['destroy']);module[_0x40f5('0x11')]=router;
\ No newline at end of file
index f2632f3..c5b923b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2313=['ENUM','sequelize','DATE','STRING','out'];(function(_0x57bb0a,_0xe86d2e){var _0x39dbf3=function(_0x1be992){while(--_0x1be992){_0x57bb0a['push'](_0x57bb0a['shift']());}};_0x39dbf3(++_0xe86d2e);}(_0x2313,0x191));var _0x3231=function(_0x386597,_0x1f7dc1){_0x386597=_0x386597-0x0;var _0x457b29=_0x2313[_0x386597];return _0x457b29;};'use strict';var Sequelize=require(_0x3231('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3231('0x1')]},'disposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x3231('0x2')]},'read1stAt':{'type':Sequelize[_0x3231('0x1')]},'fax':{'type':Sequelize[_0x3231('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x3231('0x3')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x3231('0x4')]('in',_0x3231('0x3')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xec9a=['out','sequelize','BOOLEAN','DATE','STRING','ENUM'];(function(_0x3bd478,_0x1bb19a){var _0x5d4211=function(_0xa26806){while(--_0xa26806){_0x3bd478['push'](_0x3bd478['shift']());}};_0x5d4211(++_0x1bb19a);}(_0xec9a,0xf7));var _0xaec9=function(_0x271caa,_0x485e70){_0x271caa=_0x271caa-0x0;var _0x18a8fa=_0xec9a[_0x271caa];return _0x18a8fa;};'use strict';var Sequelize=require(_0xaec9('0x0'));module['exports']={'closed':{'type':Sequelize[_0xaec9('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xaec9('0x2')]},'disposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xaec9('0x3')]},'read1stAt':{'type':Sequelize[_0xaec9('0x2')]},'fax':{'type':Sequelize[_0xaec9('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xaec9('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xaec9('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xaec9('0x4')]('in',_0xaec9('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 5c4b06b..29aab5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['params','describe','addMessage','ids','omit','getMessages','findOne','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','faxInteractionTags:save','removeTags','download','toString','join','server','files','attachments','root','interaction-%s.zip','Attachment','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','log','err','html-pdf','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','FaxInteraction','rawAttributes','keys','query','dateStart','dateEnd','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','add','day','merge','where','map','key','VIRTUAL','field','filter','options','include','tag','push','Tag','Tags','distinct','read','FaxMessage','Messages','direction','createdAt','includeAll','User','Users','fullname','CmContact','internal','Account','color','ThroughTags','findAll','catch','show','find','create','body','update'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'use strict';var pdf=require(_0x0a9e('0x0'));var emlformat=require(_0x0a9e('0x1'));var rimraf=require(_0x0a9e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a9e('0x3'));var moment=require('moment');var BPromise=require(_0x0a9e('0x4'));var Mustache=require(_0x0a9e('0x5'));var util=require(_0x0a9e('0x6'));var path=require(_0x0a9e('0x7'));var sox=require(_0x0a9e('0x8'));var csv=require('to-csv');var ejs=require(_0x0a9e('0x9'));var fs=require('fs');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 qs=require(_0x0a9e('0xf'));var logger=require(_0x0a9e('0x10'))(_0x0a9e('0x11'));var utils=require(_0x0a9e('0x12'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x0a9e('0x13')],{'host':_0x0a9e('0x14'),'port':0x18eb});var socket=require(_0x0a9e('0x15'))(new Redis(config[_0x0a9e('0x13')]));require(_0x0a9e('0x16'))[_0x0a9e('0x17')](socket);function respondWithStatusCode(_0x5db4b0,_0x4283ce){_0x4283ce=_0x4283ce||0xcc;return function(_0x239b12){if(_0x239b12){return _0x5db4b0[_0x0a9e('0x18')](_0x4283ce);}return _0x5db4b0[_0x0a9e('0x19')](_0x4283ce)[_0x0a9e('0x1a')]();};}function respondWithResult(_0x4d5611,_0x52a03d){_0x52a03d=_0x52a03d||0xc8;return function(_0x22dccb){if(_0x22dccb){return _0x4d5611['status'](_0x52a03d)[_0x0a9e('0x1b')](_0x22dccb);}};}function respondWithFilteredResult(_0x519dfd,_0x16033c){return function(_0x12066b){if(_0x12066b){var _0x48f32d=_0x12066b[_0x0a9e('0x1c')],_0x225616=_0x16033c[_0x0a9e('0x1d')],_0x5a0a06=_0x16033c[_0x0a9e('0x1d')]+_0x16033c[_0x0a9e('0x1e')],_0x459eb1;if(_0x5a0a06>=_0x48f32d){_0x5a0a06=_0x48f32d;_0x459eb1=0xc8;}else{_0x459eb1=0xce;}_0x519dfd[_0x0a9e('0x19')](_0x459eb1);return _0x519dfd[_0x0a9e('0x1f')](_0x0a9e('0x20'),_0x225616+'-'+_0x5a0a06+'/'+_0x48f32d)[_0x0a9e('0x1b')](_0x12066b);}return null;};}function patchUpdates(_0x112016){return function(_0x1c696a){try{jsonpatch[_0x0a9e('0x21')](_0x1c696a,_0x112016,!![]);}catch(_0x4bb1e3){return BPromise[_0x0a9e('0x22')](_0x4bb1e3);}return _0x1c696a[_0x0a9e('0x23')]();};}function saveUpdates(_0x53682f,_0x20f109){return function(_0x5a09ef){if(_0x5a09ef){return _0x5a09ef['update'](_0x53682f)[_0x0a9e('0x24')](function(_0x432e56){return _0x432e56;});}return null;};}function removeEntity(_0x38e7c4,_0x30bae6){return function(_0x4abc77){if(_0x4abc77){return _0x4abc77[_0x0a9e('0x25')]()[_0x0a9e('0x24')](function(){_0x38e7c4[_0x0a9e('0x19')](0xcc)[_0x0a9e('0x1a')]();});}};}function handleEntityNotFound(_0x370d86,_0x42ac8f){return function(_0x16b1ca){if(!_0x16b1ca){_0x370d86['sendStatus'](0x194);}return _0x16b1ca;};}function handleError(_0x59181e,_0x197ec0){_0x197ec0=_0x197ec0||0x1f4;return function(_0x3a8e58){logger[_0x0a9e('0x26')](_0x3a8e58[_0x0a9e('0x27')]);if(_0x3a8e58['name']){delete _0x3a8e58[_0x0a9e('0x28')];}_0x59181e['status'](_0x197ec0)[_0x0a9e('0x29')](_0x3a8e58);};}exports['index']=function(_0x1dc186,_0x34dc65){var _0x25fba9={},_0x14433c={},_0x140511={'count':0x0,'rows':[]};var _0x1538a4=db[_0x0a9e('0x2a')][_0x0a9e('0x2b')];_0x14433c['model']=_[_0x0a9e('0x2c')](_0x1538a4);var _0x468813={'dateStart':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x2e')],'dateEnd':_0x1dc186['query'][_0x0a9e('0x2f')]};delete _0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x2e')];delete _0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x2f')];_0x14433c[_0x0a9e('0x2d')]=_[_0x0a9e('0x2c')](_0x1dc186[_0x0a9e('0x2d')]);_0x14433c[_0x0a9e('0x30')]=_['intersection'](_0x14433c[_0x0a9e('0x31')],_0x14433c['query']);_0x25fba9[_0x0a9e('0x32')]=_[_0x0a9e('0x33')](_0x14433c[_0x0a9e('0x31')],qs[_0x0a9e('0x34')](_0x1dc186[_0x0a9e('0x2d')]['fields']));_0x25fba9[_0x0a9e('0x32')]=_0x25fba9[_0x0a9e('0x32')][_0x0a9e('0x35')]?_0x25fba9[_0x0a9e('0x32')]:_0x14433c[_0x0a9e('0x31')];if(!_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x36')](_0x0a9e('0x37'))){_0x25fba9['limit']=qs[_0x0a9e('0x1e')](_0x1dc186['query'][_0x0a9e('0x1e')]);_0x25fba9[_0x0a9e('0x1d')]=qs[_0x0a9e('0x1d')](_0x1dc186[_0x0a9e('0x2d')]['offset']);}_0x25fba9[_0x0a9e('0x38')]=qs[_0x0a9e('0x39')](_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x39')]);_0x25fba9['where']=qs['filters'](_[_0x0a9e('0x3a')](_0x1dc186['query'],_0x14433c[_0x0a9e('0x30')]));if(_0x468813[_0x0a9e('0x2e')]){if(_0x468813[_0x0a9e('0x2f')]){_0x468813[_0x0a9e('0x2f')]=moment(_0x468813['dateEnd'])[_0x0a9e('0x3b')](0x1,_0x0a9e('0x3c'));}else{_0x468813[_0x0a9e('0x2f')]=moment(_0x468813['dateStart'])[_0x0a9e('0x3b')](0x1,_0x0a9e('0x3c'));}_[_0x0a9e('0x3d')](_0x25fba9['where'],{'createdAt':{'$gte':_0x468813['dateStart'],'$lte':_0x468813[_0x0a9e('0x2f')]}});}if(_0x1dc186[_0x0a9e('0x2d')]['filter']){_0x25fba9[_0x0a9e('0x3e')]=_[_0x0a9e('0x3d')](_0x25fba9[_0x0a9e('0x3e')],{'$or':_[_0x0a9e('0x3f')](_0x1538a4,function(_0x4b38d9){if(_0x4b38d9['type'][_0x0a9e('0x40')]!==_0x0a9e('0x41')){var _0x53f3ee={};_0x53f3ee[_0x4b38d9[_0x0a9e('0x42')]]={'$like':'%'+_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x43')]+'%'};return _0x53f3ee;}})});}_0x25fba9=_['merge']({},_0x25fba9,_0x1dc186[_0x0a9e('0x44')]);var _0x2cfea9={'where':_0x25fba9[_0x0a9e('0x3e')]};_0x2cfea9[_0x0a9e('0x45')]=[];if(_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x46')]){_0x2cfea9[_0x0a9e('0x45')][_0x0a9e('0x47')]({'model':db[_0x0a9e('0x48')],'as':_0x0a9e('0x49'),'attributes':['id'],'where':{'id':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x46')]},'required':!![]});_0x2cfea9[_0x0a9e('0x4a')]=!![];}if(_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x4b')]){_0x2cfea9['include']['push']({'model':db[_0x0a9e('0x4c')],'as':_0x0a9e('0x4d'),'attributes':['id',_0x0a9e('0x4e'),_0x0a9e('0x4f'),_0x0a9e('0x4b')],'where':{'direction':'in','read':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x4b')]||![]},'required':!![]});_0x2cfea9[_0x0a9e('0x4a')]=!![];}return db[_0x0a9e('0x2a')][_0x0a9e('0x1c')](_0x2cfea9)[_0x0a9e('0x24')](function(_0x35ed4a){_0x140511['count']=_0x35ed4a;if(_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x50')]){_0x25fba9[_0x0a9e('0x45')]=[{'model':db[_0x0a9e('0x51')],'as':_0x0a9e('0x52'),'required':![],'attributes':['id',_0x0a9e('0x28'),_0x0a9e('0x53')]},{'model':db[_0x0a9e('0x54')],'as':'Contact','required':![]},{'model':db[_0x0a9e('0x51')],'as':'Owner','attributes':[_0x0a9e('0x28'),_0x0a9e('0x53'),_0x0a9e('0x55')],'required':![]},{'model':db['FaxAccount'],'as':_0x0a9e('0x56'),'attributes':[_0x0a9e('0x28'),_0x0a9e('0x40')],'required':![]},{'model':db[_0x0a9e('0x4c')],'as':_0x0a9e('0x4d'),'attributes':['id',_0x0a9e('0x4e'),_0x0a9e('0x4f'),'read'],'where':{'direction':'in','read':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x4b')]||![]},'required':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x4b')]||![]},{'model':db[_0x0a9e('0x48')],'as':_0x0a9e('0x49'),'attributes':['id',_0x0a9e('0x28'),_0x0a9e('0x57')],'required':_0x1dc186[_0x0a9e('0x2d')]['tag']?!![]:![]},{'model':db[_0x0a9e('0x48')],'as':_0x0a9e('0x58'),'attributes':['id','name','color'],'through':_0x1dc186['query'][_0x0a9e('0x46')]?{'attributes':[],'where':{'TagId':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x46')]||undefined}}:{},'required':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x46')]?!![]:![]}];}return db[_0x0a9e('0x2a')][_0x0a9e('0x59')](_0x25fba9);})[_0x0a9e('0x24')](function(_0x5d38ae){_0x140511['rows']=_0x5d38ae;return _0x140511;})['then'](respondWithFilteredResult(_0x34dc65,_0x25fba9))[_0x0a9e('0x5a')](handleError(_0x34dc65,null));};exports[_0x0a9e('0x5b')]=function(_0x14d602,_0x5bb3ed){var _0x2b69d9={'raw':![],'where':{'id':_0x14d602['params']['id']}},_0x161aa7={};_0x161aa7['model']=_[_0x0a9e('0x2c')](db['FaxInteraction'][_0x0a9e('0x2b')]);_0x161aa7['query']=_[_0x0a9e('0x2c')](_0x14d602[_0x0a9e('0x2d')]);_0x161aa7[_0x0a9e('0x30')]=_['intersection'](_0x161aa7[_0x0a9e('0x31')],_0x161aa7[_0x0a9e('0x2d')]);_0x2b69d9['attributes']=_['intersection'](_0x161aa7[_0x0a9e('0x31')],qs[_0x0a9e('0x34')](_0x14d602['query'][_0x0a9e('0x34')]));_0x2b69d9['attributes']=_0x2b69d9[_0x0a9e('0x32')]['length']?_0x2b69d9[_0x0a9e('0x32')]:_0x161aa7['model'];if(_0x14d602['query']['includeAll']){_0x2b69d9[_0x0a9e('0x45')]=[{'all':!![]}];}_0x2b69d9=_['merge']({},_0x2b69d9,_0x14d602[_0x0a9e('0x44')]);return db[_0x0a9e('0x2a')][_0x0a9e('0x5c')](_0x2b69d9)[_0x0a9e('0x24')](handleEntityNotFound(_0x5bb3ed,null))[_0x0a9e('0x24')](respondWithResult(_0x5bb3ed,null))[_0x0a9e('0x5a')](handleError(_0x5bb3ed,null));};exports[_0x0a9e('0x5d')]=function(_0x28d814,_0x4e67ab){return db[_0x0a9e('0x2a')][_0x0a9e('0x5d')](_0x28d814[_0x0a9e('0x5e')],{})[_0x0a9e('0x24')](respondWithResult(_0x4e67ab,0xc9))[_0x0a9e('0x5a')](handleError(_0x4e67ab,null));};exports[_0x0a9e('0x5f')]=function(_0x5d86e9,_0x956fbe){if(_0x5d86e9[_0x0a9e('0x5e')]['id']){delete _0x5d86e9['body']['id'];}return db[_0x0a9e('0x2a')]['find']({'where':{'id':_0x5d86e9[_0x0a9e('0x60')]['id']}})['then'](handleEntityNotFound(_0x956fbe,null))['then'](saveUpdates(_0x5d86e9['body'],null))[_0x0a9e('0x24')](respondWithResult(_0x956fbe,null))['catch'](handleError(_0x956fbe,null));};exports[_0x0a9e('0x25')]=function(_0x1fc70e,_0x261adb){return db[_0x0a9e('0x2a')][_0x0a9e('0x5c')]({'where':{'id':_0x1fc70e[_0x0a9e('0x60')]['id']}})['then'](handleEntityNotFound(_0x261adb,null))[_0x0a9e('0x24')](removeEntity(_0x261adb,null))['catch'](handleError(_0x261adb,null));};exports[_0x0a9e('0x61')]=function(_0x1f07cb,_0x51aaf7){return db['FaxInteraction'][_0x0a9e('0x61')]()[_0x0a9e('0x24')](respondWithResult(_0x51aaf7,null))[_0x0a9e('0x5a')](handleError(_0x51aaf7,null));};exports[_0x0a9e('0x62')]=function(_0x497d91,_0x1d0dc8,_0xe05a5a){return db['FaxMessage'][_0x0a9e('0x5c')]({'where':{'id':_0x497d91[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x1d0dc8,null))[_0x0a9e('0x24')](function(_0x401837){if(_0x401837){return _0x401837['addMessage'](_0x497d91[_0x0a9e('0x5e')][_0x0a9e('0x63')],_[_0x0a9e('0x64')](_0x497d91['body'],[_0x0a9e('0x63'),'id'])||{});}})['then'](respondWithResult(_0x1d0dc8,null))['catch'](handleError(_0x1d0dc8,null));};exports[_0x0a9e('0x65')]=function(_0x4556c5,_0x9375fb,_0x19c995){var _0x186f39={'raw':![],'where':{}};var _0xc8c264={};var _0x387489={'count':0x0,'rows':[]};return db[_0x0a9e('0x2a')][_0x0a9e('0x66')]({'where':{'id':_0x4556c5[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x9375fb,null))[_0x0a9e('0x24')](function(_0x2bbb86){if(_0x2bbb86){_0xc8c264[_0x0a9e('0x31')]=_[_0x0a9e('0x2c')](db[_0x0a9e('0x4c')][_0x0a9e('0x2b')]);_0xc8c264[_0x0a9e('0x2d')]=_['keys'](_0x4556c5[_0x0a9e('0x2d')]);_0xc8c264[_0x0a9e('0x30')]=_[_0x0a9e('0x33')](_0xc8c264['model'],_0xc8c264[_0x0a9e('0x2d')]);_0x186f39[_0x0a9e('0x32')]=_['intersection'](_0xc8c264[_0x0a9e('0x31')],qs[_0x0a9e('0x34')](_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x34')]));_0x186f39[_0x0a9e('0x32')]=_0x186f39['attributes']['length']?_0x186f39['attributes']:_0xc8c264[_0x0a9e('0x31')];if(!_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x36')](_0x0a9e('0x37'))){_0x186f39[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x1e')]);_0x186f39['offset']=qs[_0x0a9e('0x1d')](_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x1d')]);}_0x186f39['order']=qs[_0x0a9e('0x39')](_0x4556c5['query'][_0x0a9e('0x39')]);_0x186f39[_0x0a9e('0x3e')]=qs['filters'](_[_0x0a9e('0x3a')](_0x4556c5[_0x0a9e('0x2d')],_0xc8c264[_0x0a9e('0x30')]));_0x186f39[_0x0a9e('0x3e')]['FaxInteractionId']=_0x2bbb86['id'];if(_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x43')]){_0x186f39[_0x0a9e('0x3e')]=_[_0x0a9e('0x3d')](_0x186f39['where'],{'$or':_[_0x0a9e('0x3f')](_0x186f39[_0x0a9e('0x32')],function(_0x2d5506){var _0x361b21={};_0x361b21[_0x2d5506]={'$like':'%'+_0x4556c5['query'][_0x0a9e('0x43')]+'%'};return _0x361b21;})});}if(_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x67')]){var _0xf410e5=_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x67')][_0x0a9e('0x68')](',');var _0x3df0e3={};_0x3df0e3[_0xf410e5[0x0]]={'$gte':moment(_0xf410e5[0x1])[_0x0a9e('0x69')](_0x0a9e('0x6a'))};_0x186f39[_0x0a9e('0x3e')]=_[_0x0a9e('0x3d')](_0x186f39[_0x0a9e('0x3e')],_0x3df0e3);}_0x186f39=_[_0x0a9e('0x3d')]({},_0x186f39,_0x4556c5['options']);return db[_0x0a9e('0x4c')][_0x0a9e('0x1c')]({'where':_0x186f39[_0x0a9e('0x3e')]})['then'](function(_0x3736e0){_0x387489[_0x0a9e('0x1c')]=_0x3736e0;if(_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x50')]){_0x186f39['include']=[{'all':!![]}];}return db['FaxMessage'][_0x0a9e('0x59')](_0x186f39);})[_0x0a9e('0x24')](function(_0x4c54fa){_0x387489[_0x0a9e('0x6b')]=_0x4c54fa;return _0x387489;});}})['then'](respondWithFilteredResult(_0x9375fb,_0x186f39))[_0x0a9e('0x5a')](handleError(_0x9375fb,null));};exports[_0x0a9e('0x6c')]=function(_0x5637a1,_0x28a942,_0x41cf12){return db[_0x0a9e('0x2a')][_0x0a9e('0x5c')]({'where':{'id':_0x5637a1[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x28a942,null))[_0x0a9e('0x24')](function(_0x482ca2){if(_0x482ca2){return _0x482ca2[_0x0a9e('0x6d')](_0x5637a1[_0x0a9e('0x5e')][_0x0a9e('0x63')],_[_0x0a9e('0x64')](_0x5637a1['body'],[_0x0a9e('0x63'),'id'])||{})[_0x0a9e('0x6e')](function(){return db['Tag'][_0x0a9e('0x59')]({'attributes':['id','name',_0x0a9e('0x57')],'where':{'id':_0x5637a1[_0x0a9e('0x5e')][_0x0a9e('0x63')]}});})[_0x0a9e('0x24')](function(_0x5af453){socket['emit'](_0x0a9e('0x6f'),{'id':Number(_0x5637a1[_0x0a9e('0x60')]['id']),'tags':_0x5af453||[]});return{'id':Number(_0x5637a1[_0x0a9e('0x60')]['id']),'tags':_0x5af453||[]};});}})['then'](respondWithResult(_0x28a942,null))[_0x0a9e('0x5a')](handleError(_0x28a942,null));};exports[_0x0a9e('0x70')]=function(_0x524e38,_0x4e46b2,_0xf0a802){var _0x56acca;return db['FaxInteraction']['find']({'where':{'id':_0x524e38[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x4e46b2,null))[_0x0a9e('0x24')](function(_0x3bfadf){if(_0x3bfadf){return _0x3bfadf[_0x0a9e('0x70')](_0x524e38[_0x0a9e('0x2d')]['ids']);}})[_0x0a9e('0x24')](respondWithStatusCode(_0x4e46b2,null))['catch'](handleError(_0x4e46b2,null));};exports[_0x0a9e('0x71')]=function(_0x2aabab,_0x18ad56){var _0x4566b0=moment()['unix']()[_0x0a9e('0x72')]();var _0x32f761=path[_0x0a9e('0x73')](config['root'],_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'));var _0x22063c=path[_0x0a9e('0x73')](config[_0x0a9e('0x77')],_0x0a9e('0x74'),_0x0a9e('0x75'),'tmp');var _0x2645d6=path[_0x0a9e('0x73')](_0x22063c,_0x4566b0);var _0x589ff3=util[_0x0a9e('0x69')](_0x0a9e('0x78'),_0x4566b0);var _0x3a1974=path['join'](_0x22063c,_0x589ff3);var _0x96672f=![];return db['FaxInteraction'][_0x0a9e('0x5c')]({'where':{'id':_0x2aabab[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x18ad56,null))[_0x0a9e('0x24')](function(_0x842d6f){if(_0x842d6f){return _0x842d6f[_0x0a9e('0x65')]({'attributes':['id',_0x0a9e('0x5e'),_0x0a9e('0x4f')],'include':[{'model':db['Attachment'],'as':_0x0a9e('0x79')}]});}return[];})[_0x0a9e('0x24')](function(_0x17f692){_0x96672f=_0x17f692[_0x0a9e('0x35')];if(_0x17f692[_0x0a9e('0x35')]){fs[_0x0a9e('0x7a')](_0x2645d6);for(var _0x6803d6=0x0;_0x6803d6<_0x17f692[_0x0a9e('0x35')];_0x6803d6++){var _0x1808ba=_0x17f692[_0x6803d6];var _0x31af8c=_0x1808ba[_0x0a9e('0x79')];if(_0x31af8c){var _0x3754e2=path[_0x0a9e('0x73')](_0x32f761,_0x31af8c['basename']);if(fs[_0x0a9e('0x7b')](_0x3754e2)){fs[_0x0a9e('0x7c')](_0x3754e2)[_0x0a9e('0x7d')](fs[_0x0a9e('0x7e')](path[_0x0a9e('0x73')](_0x2645d6,_0x31af8c['basename'])));}}}}})[_0x0a9e('0x24')](function(){if(_0x96672f){return new BPromise(function(_0x1756c7,_0x5ce99d){zipdir(_0x2645d6,{'saveTo':_0x3a1974},function(_0x23b447,_0x5e725e){if(_0x23b447)return _0x5ce99d(_0x23b447);return _0x1756c7(_0x5e725e);});});}})[_0x0a9e('0x24')](function(){if(_0x96672f){return new BPromise(function(_0x27041d,_0x1d93b1){rimraf(_0x2645d6,function(_0xf8c6c4){if(_0xf8c6c4)_0x1d93b1(_0xf8c6c4);return _0x27041d();});});}})['then'](function(){if(_0x96672f){return _0x18ad56[_0x0a9e('0x71')](_0x3a1974,_0x589ff3,function(_0x4cf72d){if(_0x4cf72d){console[_0x0a9e('0x7f')](_0x0a9e('0x80'),_0x4cf72d);}else{fs['unlinkSync'](_0x3a1974);}});}else{return _0x18ad56[_0x0a9e('0x18')](0xc8);}})[_0x0a9e('0x5a')](handleError(_0x18ad56,null));};
\ No newline at end of file
+var _0xa9e0=['params','describe','addMessage','ids','omit','getMessages','findOne','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','setTags','spread','faxInteractionTags:save','removeTags','download','toString','join','server','files','attachments','root','interaction-%s.zip','Attachment','mkdirSync','existsSync','createReadStream','pipe','createWriteStream','log','err','html-pdf','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','FaxInteraction','rawAttributes','keys','query','dateStart','dateEnd','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','add','day','merge','where','map','key','VIRTUAL','field','filter','options','include','tag','push','Tag','Tags','distinct','read','FaxMessage','Messages','direction','createdAt','includeAll','User','Users','fullname','CmContact','internal','Account','color','ThroughTags','findAll','catch','show','find','create','body','update'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var pdf=require(_0x0a9e('0x0'));var emlformat=require(_0x0a9e('0x1'));var rimraf=require(_0x0a9e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a9e('0x3'));var moment=require('moment');var BPromise=require(_0x0a9e('0x4'));var Mustache=require(_0x0a9e('0x5'));var util=require(_0x0a9e('0x6'));var path=require(_0x0a9e('0x7'));var sox=require(_0x0a9e('0x8'));var csv=require('to-csv');var ejs=require(_0x0a9e('0x9'));var fs=require('fs');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 qs=require(_0x0a9e('0xf'));var logger=require(_0x0a9e('0x10'))(_0x0a9e('0x11'));var utils=require(_0x0a9e('0x12'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x0a9e('0x13')],{'host':_0x0a9e('0x14'),'port':0x18eb});var socket=require(_0x0a9e('0x15'))(new Redis(config[_0x0a9e('0x13')]));require(_0x0a9e('0x16'))[_0x0a9e('0x17')](socket);function respondWithStatusCode(_0x5db4b0,_0x4283ce){_0x4283ce=_0x4283ce||0xcc;return function(_0x239b12){if(_0x239b12){return _0x5db4b0[_0x0a9e('0x18')](_0x4283ce);}return _0x5db4b0[_0x0a9e('0x19')](_0x4283ce)[_0x0a9e('0x1a')]();};}function respondWithResult(_0x4d5611,_0x52a03d){_0x52a03d=_0x52a03d||0xc8;return function(_0x22dccb){if(_0x22dccb){return _0x4d5611['status'](_0x52a03d)[_0x0a9e('0x1b')](_0x22dccb);}};}function respondWithFilteredResult(_0x519dfd,_0x16033c){return function(_0x12066b){if(_0x12066b){var _0x48f32d=_0x12066b[_0x0a9e('0x1c')],_0x225616=_0x16033c[_0x0a9e('0x1d')],_0x5a0a06=_0x16033c[_0x0a9e('0x1d')]+_0x16033c[_0x0a9e('0x1e')],_0x459eb1;if(_0x5a0a06>=_0x48f32d){_0x5a0a06=_0x48f32d;_0x459eb1=0xc8;}else{_0x459eb1=0xce;}_0x519dfd[_0x0a9e('0x19')](_0x459eb1);return _0x519dfd[_0x0a9e('0x1f')](_0x0a9e('0x20'),_0x225616+'-'+_0x5a0a06+'/'+_0x48f32d)[_0x0a9e('0x1b')](_0x12066b);}return null;};}function patchUpdates(_0x112016){return function(_0x1c696a){try{jsonpatch[_0x0a9e('0x21')](_0x1c696a,_0x112016,!![]);}catch(_0x4bb1e3){return BPromise[_0x0a9e('0x22')](_0x4bb1e3);}return _0x1c696a[_0x0a9e('0x23')]();};}function saveUpdates(_0x53682f,_0x20f109){return function(_0x5a09ef){if(_0x5a09ef){return _0x5a09ef['update'](_0x53682f)[_0x0a9e('0x24')](function(_0x432e56){return _0x432e56;});}return null;};}function removeEntity(_0x38e7c4,_0x30bae6){return function(_0x4abc77){if(_0x4abc77){return _0x4abc77[_0x0a9e('0x25')]()[_0x0a9e('0x24')](function(){_0x38e7c4[_0x0a9e('0x19')](0xcc)[_0x0a9e('0x1a')]();});}};}function handleEntityNotFound(_0x370d86,_0x42ac8f){return function(_0x16b1ca){if(!_0x16b1ca){_0x370d86['sendStatus'](0x194);}return _0x16b1ca;};}function handleError(_0x59181e,_0x197ec0){_0x197ec0=_0x197ec0||0x1f4;return function(_0x3a8e58){logger[_0x0a9e('0x26')](_0x3a8e58[_0x0a9e('0x27')]);if(_0x3a8e58['name']){delete _0x3a8e58[_0x0a9e('0x28')];}_0x59181e['status'](_0x197ec0)[_0x0a9e('0x29')](_0x3a8e58);};}exports['index']=function(_0x1dc186,_0x34dc65){var _0x25fba9={},_0x14433c={},_0x140511={'count':0x0,'rows':[]};var _0x1538a4=db[_0x0a9e('0x2a')][_0x0a9e('0x2b')];_0x14433c['model']=_[_0x0a9e('0x2c')](_0x1538a4);var _0x468813={'dateStart':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x2e')],'dateEnd':_0x1dc186['query'][_0x0a9e('0x2f')]};delete _0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x2e')];delete _0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x2f')];_0x14433c[_0x0a9e('0x2d')]=_[_0x0a9e('0x2c')](_0x1dc186[_0x0a9e('0x2d')]);_0x14433c[_0x0a9e('0x30')]=_['intersection'](_0x14433c[_0x0a9e('0x31')],_0x14433c['query']);_0x25fba9[_0x0a9e('0x32')]=_[_0x0a9e('0x33')](_0x14433c[_0x0a9e('0x31')],qs[_0x0a9e('0x34')](_0x1dc186[_0x0a9e('0x2d')]['fields']));_0x25fba9[_0x0a9e('0x32')]=_0x25fba9[_0x0a9e('0x32')][_0x0a9e('0x35')]?_0x25fba9[_0x0a9e('0x32')]:_0x14433c[_0x0a9e('0x31')];if(!_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x36')](_0x0a9e('0x37'))){_0x25fba9['limit']=qs[_0x0a9e('0x1e')](_0x1dc186['query'][_0x0a9e('0x1e')]);_0x25fba9[_0x0a9e('0x1d')]=qs[_0x0a9e('0x1d')](_0x1dc186[_0x0a9e('0x2d')]['offset']);}_0x25fba9[_0x0a9e('0x38')]=qs[_0x0a9e('0x39')](_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x39')]);_0x25fba9['where']=qs['filters'](_[_0x0a9e('0x3a')](_0x1dc186['query'],_0x14433c[_0x0a9e('0x30')]));if(_0x468813[_0x0a9e('0x2e')]){if(_0x468813[_0x0a9e('0x2f')]){_0x468813[_0x0a9e('0x2f')]=moment(_0x468813['dateEnd'])[_0x0a9e('0x3b')](0x1,_0x0a9e('0x3c'));}else{_0x468813[_0x0a9e('0x2f')]=moment(_0x468813['dateStart'])[_0x0a9e('0x3b')](0x1,_0x0a9e('0x3c'));}_[_0x0a9e('0x3d')](_0x25fba9['where'],{'createdAt':{'$gte':_0x468813['dateStart'],'$lte':_0x468813[_0x0a9e('0x2f')]}});}if(_0x1dc186[_0x0a9e('0x2d')]['filter']){_0x25fba9[_0x0a9e('0x3e')]=_[_0x0a9e('0x3d')](_0x25fba9[_0x0a9e('0x3e')],{'$or':_[_0x0a9e('0x3f')](_0x1538a4,function(_0x4b38d9){if(_0x4b38d9['type'][_0x0a9e('0x40')]!==_0x0a9e('0x41')){var _0x53f3ee={};_0x53f3ee[_0x4b38d9[_0x0a9e('0x42')]]={'$like':'%'+_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x43')]+'%'};return _0x53f3ee;}})});}_0x25fba9=_['merge']({},_0x25fba9,_0x1dc186[_0x0a9e('0x44')]);var _0x2cfea9={'where':_0x25fba9[_0x0a9e('0x3e')]};_0x2cfea9[_0x0a9e('0x45')]=[];if(_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x46')]){_0x2cfea9[_0x0a9e('0x45')][_0x0a9e('0x47')]({'model':db[_0x0a9e('0x48')],'as':_0x0a9e('0x49'),'attributes':['id'],'where':{'id':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x46')]},'required':!![]});_0x2cfea9[_0x0a9e('0x4a')]=!![];}if(_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x4b')]){_0x2cfea9['include']['push']({'model':db[_0x0a9e('0x4c')],'as':_0x0a9e('0x4d'),'attributes':['id',_0x0a9e('0x4e'),_0x0a9e('0x4f'),_0x0a9e('0x4b')],'where':{'direction':'in','read':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x4b')]||![]},'required':!![]});_0x2cfea9[_0x0a9e('0x4a')]=!![];}return db[_0x0a9e('0x2a')][_0x0a9e('0x1c')](_0x2cfea9)[_0x0a9e('0x24')](function(_0x35ed4a){_0x140511['count']=_0x35ed4a;if(_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x50')]){_0x25fba9[_0x0a9e('0x45')]=[{'model':db[_0x0a9e('0x51')],'as':_0x0a9e('0x52'),'required':![],'attributes':['id',_0x0a9e('0x28'),_0x0a9e('0x53')]},{'model':db[_0x0a9e('0x54')],'as':'Contact','required':![]},{'model':db[_0x0a9e('0x51')],'as':'Owner','attributes':[_0x0a9e('0x28'),_0x0a9e('0x53'),_0x0a9e('0x55')],'required':![]},{'model':db['FaxAccount'],'as':_0x0a9e('0x56'),'attributes':[_0x0a9e('0x28'),_0x0a9e('0x40')],'required':![]},{'model':db[_0x0a9e('0x4c')],'as':_0x0a9e('0x4d'),'attributes':['id',_0x0a9e('0x4e'),_0x0a9e('0x4f'),'read'],'where':{'direction':'in','read':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x4b')]||![]},'required':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x4b')]||![]},{'model':db[_0x0a9e('0x48')],'as':_0x0a9e('0x49'),'attributes':['id',_0x0a9e('0x28'),_0x0a9e('0x57')],'required':_0x1dc186[_0x0a9e('0x2d')]['tag']?!![]:![]},{'model':db[_0x0a9e('0x48')],'as':_0x0a9e('0x58'),'attributes':['id','name','color'],'through':_0x1dc186['query'][_0x0a9e('0x46')]?{'attributes':[],'where':{'TagId':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x46')]||undefined}}:{},'required':_0x1dc186[_0x0a9e('0x2d')][_0x0a9e('0x46')]?!![]:![]}];}return db[_0x0a9e('0x2a')][_0x0a9e('0x59')](_0x25fba9);})[_0x0a9e('0x24')](function(_0x5d38ae){_0x140511['rows']=_0x5d38ae;return _0x140511;})['then'](respondWithFilteredResult(_0x34dc65,_0x25fba9))[_0x0a9e('0x5a')](handleError(_0x34dc65,null));};exports[_0x0a9e('0x5b')]=function(_0x14d602,_0x5bb3ed){var _0x2b69d9={'raw':![],'where':{'id':_0x14d602['params']['id']}},_0x161aa7={};_0x161aa7['model']=_[_0x0a9e('0x2c')](db['FaxInteraction'][_0x0a9e('0x2b')]);_0x161aa7['query']=_[_0x0a9e('0x2c')](_0x14d602[_0x0a9e('0x2d')]);_0x161aa7[_0x0a9e('0x30')]=_['intersection'](_0x161aa7[_0x0a9e('0x31')],_0x161aa7[_0x0a9e('0x2d')]);_0x2b69d9['attributes']=_['intersection'](_0x161aa7[_0x0a9e('0x31')],qs[_0x0a9e('0x34')](_0x14d602['query'][_0x0a9e('0x34')]));_0x2b69d9['attributes']=_0x2b69d9[_0x0a9e('0x32')]['length']?_0x2b69d9[_0x0a9e('0x32')]:_0x161aa7['model'];if(_0x14d602['query']['includeAll']){_0x2b69d9[_0x0a9e('0x45')]=[{'all':!![]}];}_0x2b69d9=_['merge']({},_0x2b69d9,_0x14d602[_0x0a9e('0x44')]);return db[_0x0a9e('0x2a')][_0x0a9e('0x5c')](_0x2b69d9)[_0x0a9e('0x24')](handleEntityNotFound(_0x5bb3ed,null))[_0x0a9e('0x24')](respondWithResult(_0x5bb3ed,null))[_0x0a9e('0x5a')](handleError(_0x5bb3ed,null));};exports[_0x0a9e('0x5d')]=function(_0x28d814,_0x4e67ab){return db[_0x0a9e('0x2a')][_0x0a9e('0x5d')](_0x28d814[_0x0a9e('0x5e')],{})[_0x0a9e('0x24')](respondWithResult(_0x4e67ab,0xc9))[_0x0a9e('0x5a')](handleError(_0x4e67ab,null));};exports[_0x0a9e('0x5f')]=function(_0x5d86e9,_0x956fbe){if(_0x5d86e9[_0x0a9e('0x5e')]['id']){delete _0x5d86e9['body']['id'];}return db[_0x0a9e('0x2a')]['find']({'where':{'id':_0x5d86e9[_0x0a9e('0x60')]['id']}})['then'](handleEntityNotFound(_0x956fbe,null))['then'](saveUpdates(_0x5d86e9['body'],null))[_0x0a9e('0x24')](respondWithResult(_0x956fbe,null))['catch'](handleError(_0x956fbe,null));};exports[_0x0a9e('0x25')]=function(_0x1fc70e,_0x261adb){return db[_0x0a9e('0x2a')][_0x0a9e('0x5c')]({'where':{'id':_0x1fc70e[_0x0a9e('0x60')]['id']}})['then'](handleEntityNotFound(_0x261adb,null))[_0x0a9e('0x24')](removeEntity(_0x261adb,null))['catch'](handleError(_0x261adb,null));};exports[_0x0a9e('0x61')]=function(_0x1f07cb,_0x51aaf7){return db['FaxInteraction'][_0x0a9e('0x61')]()[_0x0a9e('0x24')](respondWithResult(_0x51aaf7,null))[_0x0a9e('0x5a')](handleError(_0x51aaf7,null));};exports[_0x0a9e('0x62')]=function(_0x497d91,_0x1d0dc8,_0xe05a5a){return db['FaxMessage'][_0x0a9e('0x5c')]({'where':{'id':_0x497d91[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x1d0dc8,null))[_0x0a9e('0x24')](function(_0x401837){if(_0x401837){return _0x401837['addMessage'](_0x497d91[_0x0a9e('0x5e')][_0x0a9e('0x63')],_[_0x0a9e('0x64')](_0x497d91['body'],[_0x0a9e('0x63'),'id'])||{});}})['then'](respondWithResult(_0x1d0dc8,null))['catch'](handleError(_0x1d0dc8,null));};exports[_0x0a9e('0x65')]=function(_0x4556c5,_0x9375fb,_0x19c995){var _0x186f39={'raw':![],'where':{}};var _0xc8c264={};var _0x387489={'count':0x0,'rows':[]};return db[_0x0a9e('0x2a')][_0x0a9e('0x66')]({'where':{'id':_0x4556c5[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x9375fb,null))[_0x0a9e('0x24')](function(_0x2bbb86){if(_0x2bbb86){_0xc8c264[_0x0a9e('0x31')]=_[_0x0a9e('0x2c')](db[_0x0a9e('0x4c')][_0x0a9e('0x2b')]);_0xc8c264[_0x0a9e('0x2d')]=_['keys'](_0x4556c5[_0x0a9e('0x2d')]);_0xc8c264[_0x0a9e('0x30')]=_[_0x0a9e('0x33')](_0xc8c264['model'],_0xc8c264[_0x0a9e('0x2d')]);_0x186f39[_0x0a9e('0x32')]=_['intersection'](_0xc8c264[_0x0a9e('0x31')],qs[_0x0a9e('0x34')](_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x34')]));_0x186f39[_0x0a9e('0x32')]=_0x186f39['attributes']['length']?_0x186f39['attributes']:_0xc8c264[_0x0a9e('0x31')];if(!_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x36')](_0x0a9e('0x37'))){_0x186f39[_0x0a9e('0x1e')]=qs[_0x0a9e('0x1e')](_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x1e')]);_0x186f39['offset']=qs[_0x0a9e('0x1d')](_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x1d')]);}_0x186f39['order']=qs[_0x0a9e('0x39')](_0x4556c5['query'][_0x0a9e('0x39')]);_0x186f39[_0x0a9e('0x3e')]=qs['filters'](_[_0x0a9e('0x3a')](_0x4556c5[_0x0a9e('0x2d')],_0xc8c264[_0x0a9e('0x30')]));_0x186f39[_0x0a9e('0x3e')]['FaxInteractionId']=_0x2bbb86['id'];if(_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x43')]){_0x186f39[_0x0a9e('0x3e')]=_[_0x0a9e('0x3d')](_0x186f39['where'],{'$or':_[_0x0a9e('0x3f')](_0x186f39[_0x0a9e('0x32')],function(_0x2d5506){var _0x361b21={};_0x361b21[_0x2d5506]={'$like':'%'+_0x4556c5['query'][_0x0a9e('0x43')]+'%'};return _0x361b21;})});}if(_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x67')]){var _0xf410e5=_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x67')][_0x0a9e('0x68')](',');var _0x3df0e3={};_0x3df0e3[_0xf410e5[0x0]]={'$gte':moment(_0xf410e5[0x1])[_0x0a9e('0x69')](_0x0a9e('0x6a'))};_0x186f39[_0x0a9e('0x3e')]=_[_0x0a9e('0x3d')](_0x186f39[_0x0a9e('0x3e')],_0x3df0e3);}_0x186f39=_[_0x0a9e('0x3d')]({},_0x186f39,_0x4556c5['options']);return db[_0x0a9e('0x4c')][_0x0a9e('0x1c')]({'where':_0x186f39[_0x0a9e('0x3e')]})['then'](function(_0x3736e0){_0x387489[_0x0a9e('0x1c')]=_0x3736e0;if(_0x4556c5[_0x0a9e('0x2d')][_0x0a9e('0x50')]){_0x186f39['include']=[{'all':!![]}];}return db['FaxMessage'][_0x0a9e('0x59')](_0x186f39);})[_0x0a9e('0x24')](function(_0x4c54fa){_0x387489[_0x0a9e('0x6b')]=_0x4c54fa;return _0x387489;});}})['then'](respondWithFilteredResult(_0x9375fb,_0x186f39))[_0x0a9e('0x5a')](handleError(_0x9375fb,null));};exports[_0x0a9e('0x6c')]=function(_0x5637a1,_0x28a942,_0x41cf12){return db[_0x0a9e('0x2a')][_0x0a9e('0x5c')]({'where':{'id':_0x5637a1[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x28a942,null))[_0x0a9e('0x24')](function(_0x482ca2){if(_0x482ca2){return _0x482ca2[_0x0a9e('0x6d')](_0x5637a1[_0x0a9e('0x5e')][_0x0a9e('0x63')],_[_0x0a9e('0x64')](_0x5637a1['body'],[_0x0a9e('0x63'),'id'])||{})[_0x0a9e('0x6e')](function(){return db['Tag'][_0x0a9e('0x59')]({'attributes':['id','name',_0x0a9e('0x57')],'where':{'id':_0x5637a1[_0x0a9e('0x5e')][_0x0a9e('0x63')]}});})[_0x0a9e('0x24')](function(_0x5af453){socket['emit'](_0x0a9e('0x6f'),{'id':Number(_0x5637a1[_0x0a9e('0x60')]['id']),'tags':_0x5af453||[]});return{'id':Number(_0x5637a1[_0x0a9e('0x60')]['id']),'tags':_0x5af453||[]};});}})['then'](respondWithResult(_0x28a942,null))[_0x0a9e('0x5a')](handleError(_0x28a942,null));};exports[_0x0a9e('0x70')]=function(_0x524e38,_0x4e46b2,_0xf0a802){var _0x56acca;return db['FaxInteraction']['find']({'where':{'id':_0x524e38[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x4e46b2,null))[_0x0a9e('0x24')](function(_0x3bfadf){if(_0x3bfadf){return _0x3bfadf[_0x0a9e('0x70')](_0x524e38[_0x0a9e('0x2d')]['ids']);}})[_0x0a9e('0x24')](respondWithStatusCode(_0x4e46b2,null))['catch'](handleError(_0x4e46b2,null));};exports[_0x0a9e('0x71')]=function(_0x2aabab,_0x18ad56){var _0x4566b0=moment()['unix']()[_0x0a9e('0x72')]();var _0x32f761=path[_0x0a9e('0x73')](config['root'],_0x0a9e('0x74'),_0x0a9e('0x75'),_0x0a9e('0x76'));var _0x22063c=path[_0x0a9e('0x73')](config[_0x0a9e('0x77')],_0x0a9e('0x74'),_0x0a9e('0x75'),'tmp');var _0x2645d6=path[_0x0a9e('0x73')](_0x22063c,_0x4566b0);var _0x589ff3=util[_0x0a9e('0x69')](_0x0a9e('0x78'),_0x4566b0);var _0x3a1974=path['join'](_0x22063c,_0x589ff3);var _0x96672f=![];return db['FaxInteraction'][_0x0a9e('0x5c')]({'where':{'id':_0x2aabab[_0x0a9e('0x60')]['id']}})[_0x0a9e('0x24')](handleEntityNotFound(_0x18ad56,null))[_0x0a9e('0x24')](function(_0x842d6f){if(_0x842d6f){return _0x842d6f[_0x0a9e('0x65')]({'attributes':['id',_0x0a9e('0x5e'),_0x0a9e('0x4f')],'include':[{'model':db['Attachment'],'as':_0x0a9e('0x79')}]});}return[];})[_0x0a9e('0x24')](function(_0x17f692){_0x96672f=_0x17f692[_0x0a9e('0x35')];if(_0x17f692[_0x0a9e('0x35')]){fs[_0x0a9e('0x7a')](_0x2645d6);for(var _0x6803d6=0x0;_0x6803d6<_0x17f692[_0x0a9e('0x35')];_0x6803d6++){var _0x1808ba=_0x17f692[_0x6803d6];var _0x31af8c=_0x1808ba[_0x0a9e('0x79')];if(_0x31af8c){var _0x3754e2=path[_0x0a9e('0x73')](_0x32f761,_0x31af8c['basename']);if(fs[_0x0a9e('0x7b')](_0x3754e2)){fs[_0x0a9e('0x7c')](_0x3754e2)[_0x0a9e('0x7d')](fs[_0x0a9e('0x7e')](path[_0x0a9e('0x73')](_0x2645d6,_0x31af8c['basename'])));}}}}})[_0x0a9e('0x24')](function(){if(_0x96672f){return new BPromise(function(_0x1756c7,_0x5ce99d){zipdir(_0x2645d6,{'saveTo':_0x3a1974},function(_0x23b447,_0x5e725e){if(_0x23b447)return _0x5ce99d(_0x23b447);return _0x1756c7(_0x5e725e);});});}})[_0x0a9e('0x24')](function(){if(_0x96672f){return new BPromise(function(_0x27041d,_0x1d93b1){rimraf(_0x2645d6,function(_0xf8c6c4){if(_0xf8c6c4)_0x1d93b1(_0xf8c6c4);return _0x27041d();});});}})['then'](function(){if(_0x96672f){return _0x18ad56[_0x0a9e('0x71')](_0x3a1974,_0x589ff3,function(_0x4cf72d){if(_0x4cf72d){console[_0x0a9e('0x7f')](_0x0a9e('0x80'),_0x4cf72d);}else{fs['unlinkSync'](_0x3a1974);}});}else{return _0x18ad56[_0x0a9e('0x18')](0xc8);}})[_0x0a9e('0x5a')](handleError(_0x18ad56,null));};
\ No newline at end of file
index 39a3a76..07f4340 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6599=['hasOwnProperty','../../mysqldb','FaxInteraction','setMaxListeners','save','update','emit'];(function(_0x38685b,_0x66df1f){var _0x358d88=function(_0x1432bf){while(--_0x1432bf){_0x38685b['push'](_0x38685b['shift']());}};_0x358d88(++_0x66df1f);}(_0x6599,0xb0));var _0x9659=function(_0x145b3c,_0x31ea4a){_0x145b3c=_0x145b3c-0x0;var _0x1b6e36=_0x6599[_0x145b3c];return _0x1b6e36;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x9659('0x0'))['db'][_0x9659('0x1')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x9659('0x2')](0x0);var events={'afterCreate':_0x9659('0x3'),'afterUpdate':_0x9659('0x4'),'afterDestroy':'remove'};function emitEvent(_0xb8bddb){return function(_0x5e2a8e,_0x2f5d38,_0x4fd132){FaxInteractionEvents[_0x9659('0x5')](_0xb8bddb+':'+_0x5e2a8e['id'],_0x5e2a8e);FaxInteractionEvents[_0x9659('0x5')](_0xb8bddb,_0x5e2a8e);_0x4fd132(null);};}for(var e in events){if(events[_0x9659('0x6')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
+var _0x4fc2=['emit','hasOwnProperty','exports','events','../../mysqldb','FaxInteraction','setMaxListeners','update','remove'];(function(_0x164760,_0x5874b0){var _0x8b91b2=function(_0x40d20a){while(--_0x40d20a){_0x164760['push'](_0x164760['shift']());}};_0x8b91b2(++_0x5874b0);}(_0x4fc2,0x111));var _0x24fc=function(_0x275dfa,_0x3312f9){_0x275dfa=_0x275dfa-0x0;var _0x4a008c=_0x4fc2[_0x275dfa];return _0x4a008c;};'use strict';var EventEmitter=require(_0x24fc('0x0'));var FaxInteraction=require(_0x24fc('0x1'))['db'][_0x24fc('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x24fc('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x24fc('0x4'),'afterDestroy':_0x24fc('0x5')};function emitEvent(_0x1e7fdf){return function(_0x541ad2,_0x126d90,_0x3772eb){FaxInteractionEvents['emit'](_0x1e7fdf+':'+_0x541ad2['id'],_0x541ad2);FaxInteractionEvents[_0x24fc('0x6')](_0x1e7fdf,_0x541ad2);_0x3772eb(null);};}for(var e in events){if(events[_0x24fc('0x7')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x24fc('0x8')]=FaxInteractionEvents;
\ No newline at end of file
index 2ac2392..9826bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3df3=['exports','define','FaxInteraction','fax_interactions','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x42d78c,_0xc921e8){var _0x27a98a=function(_0x1a7615){while(--_0x1a7615){_0x42d78c['push'](_0x42d78c['shift']());}};_0x27a98a(++_0xc921e8);}(_0x3df3,0x1ee));var _0x33df=function(_0x5f6a8a,_0x45f474){_0x5f6a8a=_0x5f6a8a-0x0;var _0x2cce4d=_0x3df3[_0x5f6a8a];return _0x2cce4d;};'use strict';var _=require(_0x33df('0x0'));var util=require(_0x33df('0x1'));var logger=require(_0x33df('0x2'))(_0x33df('0x3'));var moment=require(_0x33df('0x4'));var BPromise=require('bluebird');var rp=require(_0x33df('0x5'));var attributes=require('./faxInteraction.attributes');module[_0x33df('0x6')]=function(_0x328514,_0x516b74){return _0x328514[_0x33df('0x7')](_0x33df('0x8'),attributes,{'tableName':_0x33df('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x02d8=['api','request-promise','./faxInteraction.attributes','define','fax_interactions','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x02d8,0x139));var _0x802d=function(_0x42aa0f,_0x1fbd4e){_0x42aa0f=_0x42aa0f-0x0;var _0x147477=_0x02d8[_0x42aa0f];return _0x147477;};'use strict';var _=require(_0x802d('0x0'));var util=require(_0x802d('0x1'));var logger=require('../../config/logger')(_0x802d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x802d('0x3'));var attributes=require(_0x802d('0x4'));module['exports']=function(_0x692ba1,_0x15ab8f){return _0x692ba1[_0x802d('0x5')]('FaxInteraction',attributes,{'tableName':_0x802d('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 41712ba..a0eff91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cd3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','client','http','redis','localhost','socket.io-emitter','./faxInteraction.socket','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','UpdateFaxInteraction','FaxInteraction','body','options','raw','where','attributes','limit','stringify','catch','find','addTags','ids','omit','spread','AddTags'];(function(_0x4c15e7,_0x4ad7f5){var _0x1f119a=function(_0x5b3da8){while(--_0x5b3da8){_0x4c15e7['push'](_0x4c15e7['shift']());}};_0x1f119a(++_0x4ad7f5);}(_0x7cd3,0x118));var _0x37cd=function(_0x30af07,_0x142a85){_0x30af07=_0x30af07-0x0;var _0x5d2c98=_0x7cd3[_0x30af07];return _0x5d2c98;};'use strict';var _=require(_0x37cd('0x0'));var util=require(_0x37cd('0x1'));var moment=require(_0x37cd('0x2'));var BPromise=require(_0x37cd('0x3'));var rs=require(_0x37cd('0x4'));var fs=require('fs');var Redis=require(_0x37cd('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x37cd('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x37cd('0x7'));var client=jayson[_0x37cd('0x8')][_0x37cd('0x9')]({'port':0x232a});config[_0x37cd('0xa')]=_['defaults'](config['redis'],{'host':_0x37cd('0xb'),'port':0x18eb});var socket=require(_0x37cd('0xc'))(new Redis(config[_0x37cd('0xa')]));require(_0x37cd('0xd'))['register'](socket);function respondWithRpcPromise(_0x42d307,_0x352a2e,_0x3e35ea){return new BPromise(function(_0x36a35e,_0x5c24dd){return client[_0x37cd('0xe')](_0x42d307,_0x3e35ea)[_0x37cd('0xf')](function(_0x513814){logger[_0x37cd('0x10')](_0x37cd('0x11'),_0x352a2e,_0x37cd('0x12'));logger['debug'](_0x37cd('0x13'),_0x352a2e,'request\x20sent',JSON['stringify'](_0x513814));if(_0x513814[_0x37cd('0x14')]){if(_0x513814[_0x37cd('0x14')][_0x37cd('0x15')]===0x1f4){logger[_0x37cd('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x352a2e,_0x513814[_0x37cd('0x14')][_0x37cd('0x16')]);return _0x5c24dd(_0x513814[_0x37cd('0x14')]['message']);}logger[_0x37cd('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x352a2e,_0x513814['error']['message']);return _0x36a35e(_0x513814['error'][_0x37cd('0x16')]);}else{logger[_0x37cd('0x10')](_0x37cd('0x11'),_0x352a2e,'request\x20sent');_0x36a35e(_0x513814[_0x37cd('0x17')]['message']);}})['catch'](function(_0x1ff57e){logger[_0x37cd('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x352a2e,_0x1ff57e);_0x5c24dd(_0x1ff57e);});});}exports[_0x37cd('0x18')]=function(_0x483ddc){var _0x5ab87d=this;return new Promise(function(_0x1288bd,_0x5c772e){return db[_0x37cd('0x19')]['update'](_0x483ddc[_0x37cd('0x1a')],{'raw':_0x483ddc[_0x37cd('0x1b')]?_0x483ddc['options'][_0x37cd('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x483ddc['options']?_0x483ddc[_0x37cd('0x1b')][_0x37cd('0x1d')]||null:null,'attributes':_0x483ddc['options']?_0x483ddc['options'][_0x37cd('0x1e')]||null:null,'limit':_0x483ddc['options']?_0x483ddc[_0x37cd('0x1b')][_0x37cd('0x1f')]||null:null})[_0x37cd('0xf')](function(_0x2eb442){logger[_0x37cd('0x10')](_0x37cd('0x18'),_0x483ddc);logger['debug'](_0x37cd('0x18'),_0x483ddc,JSON[_0x37cd('0x20')](_0x2eb442));_0x1288bd(_0x2eb442);})[_0x37cd('0x21')](function(_0x6c2a61){logger['error']('UpdateFaxInteraction',_0x6c2a61[_0x37cd('0x16')],_0x483ddc);_0x5c772e(_0x5ab87d[_0x37cd('0x14')](0x1f4,_0x6c2a61[_0x37cd('0x16')]));});});};exports['AddTagsToFaxInteraction']=function(_0x23dc30){return new Promise(function(_0x1b3135,_0x8be943){return db[_0x37cd('0x19')][_0x37cd('0x22')]({'where':_0x23dc30[_0x37cd('0x1b')]?_0x23dc30[_0x37cd('0x1b')]['where']||null:null})[_0x37cd('0xf')](function(_0x6ed2e0){if(_0x6ed2e0){return _0x6ed2e0[_0x37cd('0x23')](_0x23dc30['body'][_0x37cd('0x24')],_[_0x37cd('0x25')](_0x23dc30['body'],[_0x37cd('0x24'),'id'])||{});}})[_0x37cd('0x26')](function(_0x19afbc){logger[_0x37cd('0x10')](_0x37cd('0x27'),_0x23dc30);logger['debug'](_0x37cd('0x27'),_0x23dc30,JSON['stringify'](_0x19afbc));_0x1b3135(_0x19afbc);})['catch'](function(_0x1a1f9f){logger[_0x37cd('0x14')](_0x37cd('0x27'),_0x1a1f9f['message'],_0x23dc30);_0x8be943(_this[_0x37cd('0x14')](0x1f4,_0x1a1f9f[_0x37cd('0x16')]));});});};
\ No newline at end of file
+var _0xc61d=['stringify','lodash','util','moment','bluebird','ioredis','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','request','then','info','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','FaxInteraction,\x20%s,\x20%s','message','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','attributes','limit','AddTagsToFaxInteraction','find','addTags','omit','spread','AddTags'];(function(_0x144099,_0x2c10ef){var _0x4a8276=function(_0x11e8a3){while(--_0x11e8a3){_0x144099['push'](_0x144099['shift']());}};_0x4a8276(++_0x2c10ef);}(_0xc61d,0x1e1));var _0xdc61=function(_0x740555,_0x5a6b26){_0x740555=_0x740555-0x0;var _0x46c722=_0xc61d[_0x740555];return _0x46c722;};'use strict';var _=require(_0xdc61('0x0'));var util=require(_0xdc61('0x1'));var moment=require(_0xdc61('0x2'));var BPromise=require(_0xdc61('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdc61('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdc61('0x5'));var config=require(_0xdc61('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xdc61('0x7')][_0xdc61('0x8')]({'port':0x232a});config[_0xdc61('0x9')]=_[_0xdc61('0xa')](config[_0xdc61('0x9')],{'host':_0xdc61('0xb'),'port':0x18eb});var socket=require(_0xdc61('0xc'))(new Redis(config[_0xdc61('0x9')]));require(_0xdc61('0xd'))['register'](socket);function respondWithRpcPromise(_0x3473d0,_0x10220b,_0x4604f6){return new BPromise(function(_0x5d9707,_0x42767b){return client[_0xdc61('0xe')](_0x3473d0,_0x4604f6)[_0xdc61('0xf')](function(_0x45219e){logger[_0xdc61('0x10')]('FaxInteraction,\x20%s,\x20%s',_0x10220b,_0xdc61('0x11'));logger[_0xdc61('0x12')](_0xdc61('0x13'),_0x10220b,_0xdc61('0x11'),JSON['stringify'](_0x45219e));if(_0x45219e[_0xdc61('0x14')]){if(_0x45219e[_0xdc61('0x14')][_0xdc61('0x15')]===0x1f4){logger[_0xdc61('0x14')](_0xdc61('0x16'),_0x10220b,_0x45219e[_0xdc61('0x14')][_0xdc61('0x17')]);return _0x42767b(_0x45219e['error'][_0xdc61('0x17')]);}logger[_0xdc61('0x14')](_0xdc61('0x16'),_0x10220b,_0x45219e[_0xdc61('0x14')][_0xdc61('0x17')]);return _0x5d9707(_0x45219e[_0xdc61('0x14')][_0xdc61('0x17')]);}else{logger[_0xdc61('0x10')](_0xdc61('0x16'),_0x10220b,'request\x20sent');_0x5d9707(_0x45219e['result'][_0xdc61('0x17')]);}})[_0xdc61('0x18')](function(_0xbcf21b){logger[_0xdc61('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x10220b,_0xbcf21b);_0x42767b(_0xbcf21b);});});}exports[_0xdc61('0x19')]=function(_0x4a539e){var _0x33d5a1=this;return new Promise(function(_0x1f3c3c,_0x514ae3){return db[_0xdc61('0x1a')][_0xdc61('0x1b')](_0x4a539e[_0xdc61('0x1c')],{'raw':_0x4a539e[_0xdc61('0x1d')]?_0x4a539e[_0xdc61('0x1d')][_0xdc61('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a539e[_0xdc61('0x1d')]?_0x4a539e[_0xdc61('0x1d')]['where']||null:null,'attributes':_0x4a539e['options']?_0x4a539e['options'][_0xdc61('0x1f')]||null:null,'limit':_0x4a539e[_0xdc61('0x1d')]?_0x4a539e['options'][_0xdc61('0x20')]||null:null})[_0xdc61('0xf')](function(_0x53e146){logger[_0xdc61('0x10')](_0xdc61('0x19'),_0x4a539e);logger[_0xdc61('0x12')](_0xdc61('0x19'),_0x4a539e,JSON['stringify'](_0x53e146));_0x1f3c3c(_0x53e146);})[_0xdc61('0x18')](function(_0xa71961){logger[_0xdc61('0x14')](_0xdc61('0x19'),_0xa71961[_0xdc61('0x17')],_0x4a539e);_0x514ae3(_0x33d5a1[_0xdc61('0x14')](0x1f4,_0xa71961[_0xdc61('0x17')]));});});};exports[_0xdc61('0x21')]=function(_0x5b2939){return new Promise(function(_0x5c2220,_0x321b43){return db[_0xdc61('0x1a')][_0xdc61('0x22')]({'where':_0x5b2939[_0xdc61('0x1d')]?_0x5b2939[_0xdc61('0x1d')]['where']||null:null})[_0xdc61('0xf')](function(_0x28b6cc){if(_0x28b6cc){return _0x28b6cc[_0xdc61('0x23')](_0x5b2939[_0xdc61('0x1c')]['ids'],_[_0xdc61('0x24')](_0x5b2939[_0xdc61('0x1c')],['ids','id'])||{});}})[_0xdc61('0x25')](function(_0x5cd572){logger[_0xdc61('0x10')](_0xdc61('0x26'),_0x5b2939);logger[_0xdc61('0x12')](_0xdc61('0x26'),_0x5b2939,JSON[_0xdc61('0x27')](_0x5cd572));_0x5c2220(_0x5cd572);})[_0xdc61('0x18')](function(_0x4994dd){logger[_0xdc61('0x14')](_0xdc61('0x26'),_0x4994dd[_0xdc61('0x17')],_0x5b2939);_0x321b43(_this[_0xdc61('0x14')](0x1f4,_0x4994dd[_0xdc61('0x17')]));});});};
\ No newline at end of file
index 324a4a2..c07f3fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8de=['./faxInteraction.events','save','remove','emit','register','length'];(function(_0x2a1db7,_0x5dfed8){var _0x217a9d=function(_0x5068cd){while(--_0x5068cd){_0x2a1db7['push'](_0x2a1db7['shift']());}};_0x217a9d(++_0x5dfed8);}(_0xe8de,0x192));var _0xee8d=function(_0x488e67,_0x3fe10c){_0x488e67=_0x488e67-0x0;var _0x1b7ccd=_0xe8de[_0x488e67];return _0x1b7ccd;};'use strict';var FaxInteractionEvents=require(_0xee8d('0x0'));var events=[_0xee8d('0x1'),_0xee8d('0x2'),'update'];function createListener(_0x3c5077,_0xffe509){return function(_0x35ca14){_0xffe509[_0xee8d('0x3')](_0x3c5077,_0x35ca14);};}function removeListener(_0x1a1ccd,_0x14db26){return function(){FaxInteractionEvents['removeListener'](_0x1a1ccd,_0x14db26);};}exports[_0xee8d('0x4')]=function(_0x247a1e){for(var _0x591ebf=0x0,_0x53ff55=events[_0xee8d('0x5')];_0x591ebf<_0x53ff55;_0x591ebf++){var _0x318c5a=events[_0x591ebf];var _0xcfa67f=createListener('faxInteraction:'+_0x318c5a,_0x247a1e);FaxInteractionEvents['on'](_0x318c5a,_0xcfa67f);}};
\ No newline at end of file
+var _0x9189=['remove','update','emit','removeListener','register','length','faxInteraction:','./faxInteraction.events','save'];(function(_0x5a2285,_0x3212d1){var _0x48f6ed=function(_0x322127){while(--_0x322127){_0x5a2285['push'](_0x5a2285['shift']());}};_0x48f6ed(++_0x3212d1);}(_0x9189,0x1c9));var _0x9918=function(_0x2882d0,_0x5a7129){_0x2882d0=_0x2882d0-0x0;var _0x3519a5=_0x9189[_0x2882d0];return _0x3519a5;};'use strict';var FaxInteractionEvents=require(_0x9918('0x0'));var events=[_0x9918('0x1'),_0x9918('0x2'),_0x9918('0x3')];function createListener(_0x6b5280,_0x4c4fcf){return function(_0x25c0dc){_0x4c4fcf[_0x9918('0x4')](_0x6b5280,_0x25c0dc);};}function removeListener(_0x32d34d,_0x2cd693){return function(){FaxInteractionEvents[_0x9918('0x5')](_0x32d34d,_0x2cd693);};}exports[_0x9918('0x6')]=function(_0x443a20){for(var _0x5ccff5=0x0,_0x3357e7=events[_0x9918('0x7')];_0x5ccff5<_0x3357e7;_0x5ccff5++){var _0x433588=events[_0x5ccff5];var _0x3e68d4=createListener(_0x9918('0x8')+_0x433588,_0x443a20);FaxInteractionEvents['on'](_0x433588,_0x3e68d4);}};
\ No newline at end of file
index 5634a3a..a746356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x334d=['describe','/:id','show','getMessages','/:id/download','download','post','create','/:id/messages','/:id/tags','tracked','fax','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./faxInteraction.controller','isAuthenticated','get'];(function(_0x4dd4ad,_0x3eaa7c){var _0x5bee48=function(_0x20580d){while(--_0x20580d){_0x4dd4ad['push'](_0x4dd4ad['shift']());}};_0x5bee48(++_0x3eaa7c);}(_0x334d,0x1e6));var _0xd334=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x334d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd334('0x0'));var util=require(_0xd334('0x1'));var path=require(_0xd334('0x2'));var timeout=require(_0xd334('0x3'));var express=require(_0xd334('0x4'));var router=express[_0xd334('0x5')]();var auth=require(_0xd334('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd334('0x7'));router['get']('/',auth[_0xd334('0x8')](),controller['index']);router[_0xd334('0x9')]('/describe',auth['isAuthenticated'](),controller[_0xd334('0xa')]);router[_0xd334('0x9')](_0xd334('0xb'),auth[_0xd334('0x8')](),controller[_0xd334('0xc')]);router[_0xd334('0x9')]('/:id/messages',auth[_0xd334('0x8')](),controller[_0xd334('0xd')]);router[_0xd334('0x9')](_0xd334('0xe'),auth['isAuthenticated'](),controller[_0xd334('0xf')]);router[_0xd334('0x10')]('/',auth['isAuthenticated'](),controller[_0xd334('0x11')]);router[_0xd334('0x10')](_0xd334('0x12'),auth['isAuthenticated'](),controller['addMessage']);router[_0xd334('0x10')](_0xd334('0x13'),auth[_0xd334('0x8')](),interaction[_0xd334('0x14')](_0xd334('0x15'),'faxinteraction:addtags'),controller[_0xd334('0x16')]);router[_0xd334('0x17')](_0xd334('0xb'),auth[_0xd334('0x8')](),interaction[_0xd334('0x14')]('fax',_0xd334('0x18')),controller[_0xd334('0x19')]);router[_0xd334('0x1a')](_0xd334('0xb'),auth[_0xd334('0x8')](),interaction[_0xd334('0x14')](_0xd334('0x15'),_0xd334('0x1b')),controller[_0xd334('0x1c')]);router[_0xd334('0x1a')](_0xd334('0x13'),auth[_0xd334('0x8')](),controller[_0xd334('0x1d')]);module[_0xd334('0x1e')]=router;
\ No newline at end of file
+var _0xfc3e=['put','faxinteraction:update','update','delete','destroy','exports','multer','util','express','../../components/interaction/service','../../config/environment','./faxInteraction.controller','index','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags'];(function(_0x3d2d29,_0x3c56cc){var _0x5a9db4=function(_0x365de0){while(--_0x365de0){_0x3d2d29['push'](_0x3d2d29['shift']());}};_0x5a9db4(++_0x3c56cc);}(_0xfc3e,0xee));var _0xefc3=function(_0x291042,_0x459bb6){_0x291042=_0x291042-0x0;var _0x5b6cd8=_0xfc3e[_0x291042];return _0x5b6cd8;};'use strict';var multer=require(_0xefc3('0x0'));var util=require(_0xefc3('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xefc3('0x2'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0xefc3('0x3'));var config=require(_0xefc3('0x4'));var controller=require(_0xefc3('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xefc3('0x6')]);router['get']('/describe',auth[_0xefc3('0x7')](),controller[_0xefc3('0x8')]);router['get'](_0xefc3('0x9'),auth['isAuthenticated'](),controller[_0xefc3('0xa')]);router['get'](_0xefc3('0xb'),auth[_0xefc3('0x7')](),controller[_0xefc3('0xc')]);router['get'](_0xefc3('0xd'),auth[_0xefc3('0x7')](),controller[_0xefc3('0xe')]);router[_0xefc3('0xf')]('/',auth[_0xefc3('0x7')](),controller[_0xefc3('0x10')]);router[_0xefc3('0xf')]('/:id/messages',auth['isAuthenticated'](),controller[_0xefc3('0x11')]);router['post'](_0xefc3('0x12'),auth['isAuthenticated'](),interaction[_0xefc3('0x13')](_0xefc3('0x14'),_0xefc3('0x15')),controller[_0xefc3('0x16')]);router[_0xefc3('0x17')](_0xefc3('0x9'),auth['isAuthenticated'](),interaction[_0xefc3('0x13')](_0xefc3('0x14'),_0xefc3('0x18')),controller[_0xefc3('0x19')]);router[_0xefc3('0x1a')](_0xefc3('0x9'),auth[_0xefc3('0x7')](),interaction['tracked'](_0xefc3('0x14'),'faxinteraction:destroy'),controller[_0xefc3('0x1b')]);router[_0xefc3('0x1a')](_0xefc3('0x12'),auth[_0xefc3('0x7')](),controller['removeTags']);module[_0xefc3('0x1c')]=router;
\ No newline at end of file
index dc76cef..8f19db2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ca=['medium','BOOLEAN','ENUM','TEXT','DATE','exports'];(function(_0xa2bb37,_0x1622e){var _0x26052f=function(_0x4a8c4c){while(--_0x4a8c4c){_0xa2bb37['push'](_0xa2bb37['shift']());}};_0x26052f(++_0x1622e);}(_0x50ca,0xe3));var _0xa50c=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x50ca[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require('sequelize');module[_0xa50c('0x0')]={'body':{'type':Sequelize['TEXT'](_0xa50c('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xa50c('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xa50c('0x3')]('in','out'),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0xa50c('0x4')],'defaultValue':null},'readAt':{'type':Sequelize[_0xa50c('0x5')]}};
\ No newline at end of file
+var _0x9630=['out','DATE','exports','TEXT','BOOLEAN'];(function(_0x55ab4c,_0x3f7787){var _0x59cfd5=function(_0x5648b0){while(--_0x5648b0){_0x55ab4c['push'](_0x55ab4c['shift']());}};_0x59cfd5(++_0x3f7787);}(_0x9630,0xe3));var _0x0963=function(_0xf78f7b,_0x5a3256){_0xf78f7b=_0xf78f7b-0x0;var _0x31b61f=_0x9630[_0xf78f7b];return _0x31b61f;};'use strict';var Sequelize=require('sequelize');module[_0x0963('0x0')]={'body':{'type':Sequelize[_0x0963('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x0963('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x0963('0x3'),'allowNull':![]},'failMessage':{'type':Sequelize['TEXT'],'defaultValue':null},'readAt':{'type':Sequelize[_0x0963('0x4')]}};
\ No newline at end of file
index 7ff3df7..258d027 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ad3=['result','catch','sendStatus','status','count','offset','set','Content-Range','json','apply','reject','save','destroy','end','stack','send','index','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','attributes','hasOwnProperty','nolimit','limit','sort','where','filters','pick','add','day','merge','filter','map','type','key','VIRTUAL','field','options','includeAll','include','FaxMessage','rows','show','params','fields','length','find','body','describe','accept','fax','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','CmContact','Contact','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','format','interaction','user','role','acceptMessage','manual','interface','name','channel','event','EventManager','acceptmessage','agent','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','create','findOne','ContactId','Attachment','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','AttachmentId','download','join','root','server','files','attachments','html-pdf','rimraf','zip-dir','fast-json-patch','path','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','register','jayson/promise','client','http','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8ad3,0xe8));var _0x38ad=function(_0x3a9315,_0x4e2da2){_0x3a9315=_0x3a9315-0x0;var _0x2d4b53=_0x8ad3[_0x3a9315];return _0x2d4b53;};'use strict';var pdf=require(_0x38ad('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x38ad('0x1'));var zipdir=require(_0x38ad('0x2'));var jsonpatch=require(_0x38ad('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x38ad('0x4'));var sox=require('sox');var csv=require(_0x38ad('0x5'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x38ad('0x6'));var crypto=require(_0x38ad('0x7'));var jsforce=require(_0x38ad('0x8'));var deskjs=require(_0x38ad('0x9'));var toCsv=require(_0x38ad('0x5'));var querystring=require(_0x38ad('0xa'));var Papa=require(_0x38ad('0xb'));var Redis=require(_0x38ad('0xc'));var qs=require(_0x38ad('0xd'));var logger=require(_0x38ad('0xe'))(_0x38ad('0xf'));var utils=require(_0x38ad('0x10'));var config=require('../../config/environment');var db=require(_0x38ad('0x11'))['db'];config[_0x38ad('0x12')]=_[_0x38ad('0x13')](config[_0x38ad('0x12')],{'host':'localhost','port':0x18eb});var socket=require(_0x38ad('0x14'))(new Redis(config[_0x38ad('0x12')]));require('./faxMessage.socket')[_0x38ad('0x15')](socket);var jayson=require(_0x38ad('0x16'));var client=jayson[_0x38ad('0x17')][_0x38ad('0x18')]({'port':0x232c});var client9002=jayson[_0x38ad('0x17')][_0x38ad('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x3238ec,_0x29c2ae,_0x138ba4,_0x830599){return new BPromise(function(_0x85cac3,_0x319109){var _0x1a7b2f=_0x830599||client;return _0x1a7b2f[_0x38ad('0x19')](_0x3238ec,_0x138ba4)[_0x38ad('0x1a')](function(_0x41dfff){logger['info'](_0x38ad('0x1b'),_0x29c2ae,_0x38ad('0x1c'));logger[_0x38ad('0x1d')](_0x38ad('0x1e'),_0x29c2ae,_0x38ad('0x1c'),JSON[_0x38ad('0x1f')](_0x41dfff));if(_0x41dfff[_0x38ad('0x20')]){if(_0x41dfff[_0x38ad('0x20')][_0x38ad('0x21')]===0x1f4){logger[_0x38ad('0x20')](_0x38ad('0x1b'),_0x29c2ae,_0x41dfff[_0x38ad('0x20')][_0x38ad('0x22')]);return _0x319109(_0x41dfff[_0x38ad('0x20')][_0x38ad('0x22')]);}logger[_0x38ad('0x20')]('FaxMessage,\x20%s,\x20%s',_0x29c2ae,_0x41dfff[_0x38ad('0x20')][_0x38ad('0x22')]);return _0x85cac3(_0x41dfff['error'][_0x38ad('0x22')]);}else{logger[_0x38ad('0x23')](_0x38ad('0x1b'),_0x29c2ae,_0x38ad('0x1c'));_0x85cac3(_0x41dfff[_0x38ad('0x24')][_0x38ad('0x22')]);}})[_0x38ad('0x25')](function(_0xe2c38d){logger['error']('FaxMessage,\x20%s,\x20%s',_0x29c2ae,_0xe2c38d);_0x319109(_0xe2c38d);});});}function respondWithStatusCode(_0x75585d,_0x27bf09){_0x27bf09=_0x27bf09||0xcc;return function(_0x39e627){if(_0x39e627){return _0x75585d[_0x38ad('0x26')](_0x27bf09);}return _0x75585d[_0x38ad('0x27')](_0x27bf09)['end']();};}function respondWithResult(_0x24cd86,_0x5f5b64){_0x5f5b64=_0x5f5b64||0xc8;return function(_0x350b6d){if(_0x350b6d){return _0x24cd86['status'](_0x5f5b64)['json'](_0x350b6d);}};}function respondWithFilteredResult(_0x2dbc53,_0x331eb1){return function(_0x18886e){if(_0x18886e){var _0x1acf82=_0x18886e[_0x38ad('0x28')],_0x4350dc=_0x331eb1['offset'],_0x355d71=_0x331eb1[_0x38ad('0x29')]+_0x331eb1['limit'],_0xfa9484;if(_0x355d71>=_0x1acf82){_0x355d71=_0x1acf82;_0xfa9484=0xc8;}else{_0xfa9484=0xce;}_0x2dbc53[_0x38ad('0x27')](_0xfa9484);return _0x2dbc53[_0x38ad('0x2a')](_0x38ad('0x2b'),_0x4350dc+'-'+_0x355d71+'/'+_0x1acf82)[_0x38ad('0x2c')](_0x18886e);}return null;};}function patchUpdates(_0x17dddb){return function(_0x5b17e2){try{jsonpatch[_0x38ad('0x2d')](_0x5b17e2,_0x17dddb,!![]);}catch(_0x444cd3){return BPromise[_0x38ad('0x2e')](_0x444cd3);}return _0x5b17e2[_0x38ad('0x2f')]();};}function saveUpdates(_0x30b557,_0x497efc){return function(_0x28b125){if(_0x28b125){return _0x28b125['update'](_0x30b557)[_0x38ad('0x1a')](function(_0x29c4c8){return _0x29c4c8;});}return null;};}function removeEntity(_0x13a2d5,_0x7692c4){return function(_0x26822d){if(_0x26822d){return _0x26822d[_0x38ad('0x30')]()[_0x38ad('0x1a')](function(){_0x13a2d5[_0x38ad('0x27')](0xcc)[_0x38ad('0x31')]();});}};}function handleEntityNotFound(_0x3df572,_0x14fdc8){return function(_0x591cfc){if(!_0x591cfc){_0x3df572[_0x38ad('0x26')](0x194);}return _0x591cfc;};}function handleError(_0x47d42e,_0x25069b){_0x25069b=_0x25069b||0x1f4;return function(_0xf25c2a){logger[_0x38ad('0x20')](_0xf25c2a[_0x38ad('0x32')]);if(_0xf25c2a['name']){delete _0xf25c2a['name'];}_0x47d42e[_0x38ad('0x27')](_0x25069b)[_0x38ad('0x33')](_0xf25c2a);};}exports[_0x38ad('0x34')]=function(_0x388b15,_0x5e912a){var _0x3d3952={},_0x148bd5={},_0x1e0e3f={'count':0x0,'rows':[]};var _0x1f65a5=db['FaxMessage'][_0x38ad('0x35')];_0x148bd5[_0x38ad('0x36')]=_[_0x38ad('0x37')](_0x1f65a5);var _0x675649={'dateStart':_0x388b15[_0x38ad('0x38')][_0x38ad('0x39')],'dateEnd':_0x388b15[_0x38ad('0x38')][_0x38ad('0x3a')]};delete _0x388b15['query']['dateStart'];delete _0x388b15['query'][_0x38ad('0x3a')];_0x148bd5[_0x38ad('0x38')]=_[_0x38ad('0x37')](_0x388b15['query']);_0x148bd5['filters']=_[_0x38ad('0x3b')](_0x148bd5['model'],_0x148bd5[_0x38ad('0x38')]);_0x3d3952['attributes']=_[_0x38ad('0x3b')](_0x148bd5[_0x38ad('0x36')],qs['fields'](_0x388b15[_0x38ad('0x38')]['fields']));_0x3d3952[_0x38ad('0x3c')]=_0x3d3952[_0x38ad('0x3c')]['length']?_0x3d3952[_0x38ad('0x3c')]:_0x148bd5['model'];if(!_0x388b15[_0x38ad('0x38')][_0x38ad('0x3d')](_0x38ad('0x3e'))){_0x3d3952[_0x38ad('0x3f')]=qs[_0x38ad('0x3f')](_0x388b15[_0x38ad('0x38')][_0x38ad('0x3f')]);_0x3d3952[_0x38ad('0x29')]=qs[_0x38ad('0x29')](_0x388b15['query'][_0x38ad('0x29')]);}_0x3d3952['order']=qs[_0x38ad('0x40')](_0x388b15['query'][_0x38ad('0x40')]);_0x3d3952[_0x38ad('0x41')]=qs[_0x38ad('0x42')](_[_0x38ad('0x43')](_0x388b15['query'],_0x148bd5[_0x38ad('0x42')]));if(_0x675649[_0x38ad('0x39')]){if(_0x675649[_0x38ad('0x3a')]){_0x675649[_0x38ad('0x3a')]=moment(_0x675649[_0x38ad('0x3a')])[_0x38ad('0x44')](0x1,_0x38ad('0x45'));}else{_0x675649['dateEnd']=moment(_0x675649[_0x38ad('0x39')])['add'](0x1,_0x38ad('0x45'));}_[_0x38ad('0x46')](_0x3d3952[_0x38ad('0x41')],{'createdAt':{'$gte':_0x675649[_0x38ad('0x39')],'$lte':_0x675649[_0x38ad('0x3a')]}});}if(_0x388b15[_0x38ad('0x38')][_0x38ad('0x47')]){_0x3d3952['where']=_[_0x38ad('0x46')](_0x3d3952[_0x38ad('0x41')],{'$or':_[_0x38ad('0x48')](_0x1f65a5,function(_0x160fda){if(_0x160fda[_0x38ad('0x49')][_0x38ad('0x4a')]!==_0x38ad('0x4b')){var _0x48ddfc={};_0x48ddfc[_0x160fda[_0x38ad('0x4c')]]={'$like':'%'+_0x388b15[_0x38ad('0x38')][_0x38ad('0x47')]+'%'};return _0x48ddfc;}})});}_0x3d3952=_[_0x38ad('0x46')]({},_0x3d3952,_0x388b15[_0x38ad('0x4d')]);var _0x1752a7={'where':_0x3d3952['where']};return db['FaxMessage'][_0x38ad('0x28')](_0x1752a7)[_0x38ad('0x1a')](function(_0x3adb18){_0x1e0e3f['count']=_0x3adb18;if(_0x388b15['query'][_0x38ad('0x4e')]){_0x3d3952[_0x38ad('0x4f')]=[{'all':!![]}];}return db[_0x38ad('0x50')]['findAll'](_0x3d3952);})[_0x38ad('0x1a')](function(_0x7c4192){_0x1e0e3f[_0x38ad('0x51')]=_0x7c4192;return _0x1e0e3f;})['then'](respondWithFilteredResult(_0x5e912a,_0x3d3952))['catch'](handleError(_0x5e912a,null));};exports[_0x38ad('0x52')]=function(_0x206a35,_0x2587d0){var _0x285a33={'raw':!![],'where':{'id':_0x206a35[_0x38ad('0x53')]['id']}},_0x2ec086={};_0x2ec086[_0x38ad('0x36')]=_[_0x38ad('0x37')](db[_0x38ad('0x50')][_0x38ad('0x35')]);_0x2ec086[_0x38ad('0x38')]=_[_0x38ad('0x37')](_0x206a35[_0x38ad('0x38')]);_0x2ec086[_0x38ad('0x42')]=_['intersection'](_0x2ec086[_0x38ad('0x36')],_0x2ec086[_0x38ad('0x38')]);_0x285a33[_0x38ad('0x3c')]=_[_0x38ad('0x3b')](_0x2ec086[_0x38ad('0x36')],qs[_0x38ad('0x54')](_0x206a35[_0x38ad('0x38')][_0x38ad('0x54')]));_0x285a33[_0x38ad('0x3c')]=_0x285a33[_0x38ad('0x3c')][_0x38ad('0x55')]?_0x285a33[_0x38ad('0x3c')]:_0x2ec086['model'];if(_0x206a35['query'][_0x38ad('0x4e')]){_0x285a33[_0x38ad('0x4f')]=[{'all':!![]}];}_0x285a33=_[_0x38ad('0x46')]({},_0x285a33,_0x206a35['options']);return db['FaxMessage'][_0x38ad('0x56')](_0x285a33)['then'](handleEntityNotFound(_0x2587d0,null))[_0x38ad('0x1a')](respondWithResult(_0x2587d0,null))[_0x38ad('0x25')](handleError(_0x2587d0,null));};exports['update']=function(_0x312b3,_0x1168ea){if(_0x312b3[_0x38ad('0x57')]['id']){delete _0x312b3['body']['id'];}return db[_0x38ad('0x50')]['find']({'where':{'id':_0x312b3[_0x38ad('0x53')]['id']}})[_0x38ad('0x1a')](handleEntityNotFound(_0x1168ea,null))['then'](saveUpdates(_0x312b3[_0x38ad('0x57')],null))['then'](respondWithResult(_0x1168ea,null))[_0x38ad('0x25')](handleError(_0x1168ea,null));};exports[_0x38ad('0x30')]=function(_0x2dd179,_0xce619e){return db[_0x38ad('0x50')][_0x38ad('0x56')]({'where':{'id':_0x2dd179['params']['id']}})['then'](handleEntityNotFound(_0xce619e,null))[_0x38ad('0x1a')](removeEntity(_0xce619e,null))[_0x38ad('0x25')](handleError(_0xce619e,null));};exports[_0x38ad('0x58')]=function(_0xded8ce,_0x2178bd){return db['FaxMessage'][_0x38ad('0x58')]()['then'](respondWithResult(_0x2178bd,null))[_0x38ad('0x25')](handleError(_0x2178bd,null));};var interaction_log=require(_0x38ad('0xe'))('fax-interactions');exports[_0x38ad('0x59')]=function(_0x44e935,_0xb2d522,_0x1b3df5){var _0x161e9b={'channel':_0x38ad('0x5a')};if(_0x44e935['body']['id']){delete _0x44e935['body']['id'];}_0x44e935['body'][_0x38ad('0x5b')]=!![];_0x44e935[_0x38ad('0x57')][_0x38ad('0x5c')]=moment()['format'](_0x38ad('0x5d'));_0x44e935[_0x38ad('0x57')]['UserId']=_0x44e935[_0x38ad('0x57')][_0x38ad('0x5e')]||_0x44e935['user']['id'];return db[_0x38ad('0x50')][_0x38ad('0x56')]({'where':{'id':_0x44e935[_0x38ad('0x53')]['id'],'UserId':null},'include':[{'model':db[_0x38ad('0x5f')],'as':_0x38ad('0x60')}]})[_0x38ad('0x1a')](handleEntityNotFound(_0xb2d522,null))['then'](saveUpdates(_0x44e935[_0x38ad('0x57')],null))[_0x38ad('0x1a')](function(_0x1864e5){if(_0x1864e5){_0x161e9b[_0x38ad('0x22')]=_0x1864e5[_0x38ad('0x61')]({'plain':!![]});return db[_0x38ad('0x62')][_0x38ad('0x56')]({'where':{'id':_0x1864e5[_0x38ad('0x63')]}});}return null;})[_0x38ad('0x1a')](handleEntityNotFound(_0xb2d522,null))['then'](function(_0x25bfb6){if(_0x25bfb6){return _0x25bfb6['update']({'UserId':_0x44e935[_0x38ad('0x57')][_0x38ad('0x5e')],'read1stAt':_[_0x38ad('0x64')](_0x25bfb6[_0x38ad('0x65')])?moment()[_0x38ad('0x66')](_0x38ad('0x5d')):undefined});}return null;})['then'](function(_0x529f64){if(_0x529f64){_0x161e9b[_0x38ad('0x67')]=_0x529f64[_0x38ad('0x61')]({'plain':!![]});interaction_log[_0x38ad('0x23')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x44e935[_0x38ad('0x68')]['id'],_0x44e935[_0x38ad('0x68')]['name'],_0x44e935[_0x38ad('0x68')][_0x38ad('0x69')],_0x161e9b[_0x38ad('0x67')]['id'],_0x44e935[_0x38ad('0x57')]?JSON[_0x38ad('0x1f')](_0x44e935['body']):'null');return respondWithRpcPromise('AcceptMessage',_0x38ad('0x6a'),_0x161e9b);}return null;})[_0x38ad('0x1a')](function(_0x18b44b){if(_0x18b44b){if(_0x44e935[_0x38ad('0x57')][_0x38ad('0x6b')]){_0x161e9b[_0x38ad('0x22')][_0x38ad('0x6c')]=util[_0x38ad('0x66')]('SIP/%s',_0x44e935[_0x38ad('0x68')][_0x38ad('0x6d')]);_0x161e9b[_0x38ad('0x22')][_0x38ad('0x6e')]=_0x161e9b[_0x38ad('0x6e')];_0x161e9b[_0x38ad('0x22')][_0x38ad('0x6f')]=_0x38ad('0x59');return respondWithRpcPromise('EventManager',_0x38ad('0x70'),{'event':_0x38ad('0x71'),'message':_0x161e9b['message']},client9002)[_0x38ad('0x1a')](function(){return _0x161e9b;});}return _0x161e9b;}return null;})[_0x38ad('0x1a')](respondWithResult(_0xb2d522,null))['catch'](handleError(_0xb2d522,null));};var interaction_log=require(_0x38ad('0xe'))('fax-interactions');exports[_0x38ad('0x2e')]=function(_0x337dad,_0x13131f,_0x24be5b){var _0x1ae2d1={'agent':{},'channel':_0x38ad('0x5a')};if(_0x337dad[_0x38ad('0x57')]['id']){delete _0x337dad[_0x38ad('0x57')]['id'];}_0x337dad[_0x38ad('0x57')][_0x38ad('0x5e')]=_0x337dad['body'][_0x38ad('0x5e')]||_0x337dad[_0x38ad('0x68')]['id'];_0x1ae2d1[_0x38ad('0x72')]['id']=_0x337dad[_0x38ad('0x57')]['UserId'];return db[_0x38ad('0x50')]['find']({'where':{'id':_0x337dad[_0x38ad('0x53')]['id'],'UserId':null}})[_0x38ad('0x1a')](handleEntityNotFound(_0x13131f,null))[_0x38ad('0x1a')](function(_0x22d655){if(_0x22d655){_0x1ae2d1[_0x38ad('0x22')]=_0x22d655[_0x38ad('0x61')]({'plain':!![]});return db[_0x38ad('0x62')][_0x38ad('0x56')]({'where':{'id':_0x22d655[_0x38ad('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x13131f,null))[_0x38ad('0x1a')](function(_0x20b96b){if(_0x20b96b){_0x1ae2d1[_0x38ad('0x67')]=_0x20b96b[_0x38ad('0x61')]({'plain':!![]});interaction_log['info'](_0x38ad('0x73'),_0x337dad[_0x38ad('0x68')]['id'],_0x337dad[_0x38ad('0x68')][_0x38ad('0x6d')],_0x337dad['user'][_0x38ad('0x69')],_0x1ae2d1[_0x38ad('0x67')]['id'],_0x337dad['body']?JSON[_0x38ad('0x1f')](_0x337dad['body']):'null');return respondWithRpcPromise(_0x38ad('0x74'),_0x38ad('0x75'),_0x1ae2d1);}return null;})[_0x38ad('0x1a')](function(_0x22d25f){if(_0x22d25f){_0x22d25f[_0x38ad('0x22')][_0x38ad('0x6c')]=util[_0x38ad('0x66')]('SIP/%s',_0x337dad['user'][_0x38ad('0x6d')]);_0x22d25f[_0x38ad('0x22')]['channel']=_0x1ae2d1[_0x38ad('0x6e')];_0x22d25f['message']['event']=_0x38ad('0x2e');respondWithRpcPromise(_0x38ad('0x70'),_0x38ad('0x70'),{'event':_0x38ad('0x76'),'message':_0x22d25f[_0x38ad('0x22')]},client9002);return _0x1ae2d1;}return null;})[_0x38ad('0x1a')](respondWithResult(_0x13131f,null))[_0x38ad('0x25')](handleError(_0x13131f,null));};exports[_0x38ad('0x77')]=function(_0x455804,_0xca6290){var _0x5454c1;return db[_0x38ad('0x50')][_0x38ad('0x77')](_0x455804[_0x38ad('0x57')],{})[_0x38ad('0x1a')](function(_0x2ab0cd){_0x5454c1=_0x2ab0cd;return db[_0x38ad('0x5f')][_0x38ad('0x78')]({'where':{'id':_0x5454c1[_0x38ad('0x79')]}});})['then'](function(_0x2dc3dc){if(_[_0x38ad('0x64')](_0x2dc3dc)){return;}else{_0x5454c1[_0x38ad('0x5a')]=_0x2dc3dc[_0x38ad('0x5a')];return db[_0x38ad('0x7a')][_0x38ad('0x78')]({'where':{'id':_0x5454c1['AttachmentId']}});}})[_0x38ad('0x1a')](function(_0x2f603c){return respondWithRpcPromise(_0x38ad('0x7b'),_0x38ad('0x7b'),{'FaxAccountId':_[_0x38ad('0x64')](_0x455804[_0x38ad('0x57')])?undefined:_0x455804[_0x38ad('0x57')][_0x38ad('0x7c')],'path':_[_0x38ad('0x64')](_0x2f603c)?undefined:util[_0x38ad('0x66')](_0x38ad('0x7d'),_0x2f603c[_0x38ad('0x7e')]),'fax':_[_0x38ad('0x64')](_0x5454c1[_0x38ad('0x5a')])?undefined:_0x5454c1[_0x38ad('0x5a')],'AttachmentId':_0x5454c1[_0x38ad('0x7f')]},client9002);})[_0x38ad('0x1a')](respondWithResult(_0xca6290,0xc9))[_0x38ad('0x25')](handleError(_0xca6290,null));};exports[_0x38ad('0x80')]=function(_0xe05bb9,_0x4ea9ca){var _0x2feca6=path[_0x38ad('0x81')](config[_0x38ad('0x82')],_0x38ad('0x83'),_0x38ad('0x84'),_0x38ad('0x85'));return db[_0x38ad('0x50')][_0x38ad('0x56')]({'where':{'id':_0xe05bb9[_0x38ad('0x53')]['id']},'include':[{'model':db['Attachment'],'as':_0x38ad('0x7a')}]})['then'](handleEntityNotFound(_0x4ea9ca,null))[_0x38ad('0x1a')](function(_0x40475c){if(_0x40475c){return _0x4ea9ca[_0x38ad('0x80')](path[_0x38ad('0x81')](_0x2feca6,_0x40475c['Attachment'][_0x38ad('0x7e')]));}})[_0x38ad('0x25')](handleError(_0x4ea9ca,null));};
\ No newline at end of file
+var _0xd965=['[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','interface','rejectmessage','create','ContactId','isNil','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','server','files','attachments','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','redis','defaults','socket.io-emitter','./faxMessage.socket','register','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','result','catch','sendStatus','status','json','count','offset','limit','set','Content-Range','reject','save','then','destroy','name','send','keys','query','dateStart','dateEnd','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','day','merge','filter','map','key','VIRTUAL','field','options','FaxMessage','includeAll','include','findAll','rows','show','params','rawAttributes','find','update','body','describe','../../config/logger','fax-interactions','accept','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','Contact','get','FaxInteraction','FaxInteractionId','read1stAt','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','manual','SIP/%s','channel','event','EventManager','agent'];(function(_0x3dfdc8,_0x18547d){var _0x4ed744=function(_0x5253aa){while(--_0x5253aa){_0x3dfdc8['push'](_0x3dfdc8['shift']());}};_0x4ed744(++_0x18547d);}(_0xd965,0x128));var _0x5d96=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd965[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0x5d96('0x0'));var emlformat=require(_0x5d96('0x1'));var rimraf=require(_0x5d96('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5d96('0x3'));var rp=require(_0x5d96('0x4'));var moment=require(_0x5d96('0x5'));var BPromise=require(_0x5d96('0x6'));var Mustache=require(_0x5d96('0x7'));var util=require(_0x5d96('0x8'));var path=require(_0x5d96('0x9'));var sox=require(_0x5d96('0xa'));var csv=require(_0x5d96('0xb'));var ejs=require(_0x5d96('0xc'));var fs=require('fs');var _=require(_0x5d96('0xd'));var squel=require(_0x5d96('0xe'));var crypto=require('crypto');var jsforce=require(_0x5d96('0xf'));var deskjs=require(_0x5d96('0x10'));var toCsv=require(_0x5d96('0xb'));var querystring=require(_0x5d96('0x11'));var Papa=require('papaparse');var Redis=require(_0x5d96('0x12'));var qs=require(_0x5d96('0x13'));var logger=require('../../config/logger')(_0x5d96('0x14'));var utils=require(_0x5d96('0x15'));var config=require(_0x5d96('0x16'));var db=require('../../mysqldb')['db'];config[_0x5d96('0x17')]=_[_0x5d96('0x18')](config[_0x5d96('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x5d96('0x19'))(new Redis(config[_0x5d96('0x17')]));require(_0x5d96('0x1a'))[_0x5d96('0x1b')](socket);var jayson=require(_0x5d96('0x1c'));var client=jayson[_0x5d96('0x1d')][_0x5d96('0x1e')]({'port':0x232c});var client9002=jayson[_0x5d96('0x1d')][_0x5d96('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x44d28b,_0x295d1c,_0x2243e6,_0x4700b5){return new BPromise(function(_0x29ad22,_0x4056f6){var _0x50706f=_0x4700b5||client;return _0x50706f[_0x5d96('0x1f')](_0x44d28b,_0x2243e6)['then'](function(_0x38045b){logger[_0x5d96('0x20')](_0x5d96('0x21'),_0x295d1c,_0x5d96('0x22'));logger[_0x5d96('0x23')](_0x5d96('0x24'),_0x295d1c,_0x5d96('0x22'),JSON[_0x5d96('0x25')](_0x38045b));if(_0x38045b[_0x5d96('0x26')]){if(_0x38045b[_0x5d96('0x26')][_0x5d96('0x27')]===0x1f4){logger[_0x5d96('0x26')]('FaxMessage,\x20%s,\x20%s',_0x295d1c,_0x38045b[_0x5d96('0x26')]['message']);return _0x4056f6(_0x38045b[_0x5d96('0x26')][_0x5d96('0x28')]);}logger[_0x5d96('0x26')](_0x5d96('0x21'),_0x295d1c,_0x38045b['error'][_0x5d96('0x28')]);return _0x29ad22(_0x38045b[_0x5d96('0x26')][_0x5d96('0x28')]);}else{logger[_0x5d96('0x20')](_0x5d96('0x21'),_0x295d1c,_0x5d96('0x22'));_0x29ad22(_0x38045b[_0x5d96('0x29')]['message']);}})[_0x5d96('0x2a')](function(_0x54b4be){logger['error'](_0x5d96('0x21'),_0x295d1c,_0x54b4be);_0x4056f6(_0x54b4be);});});}function respondWithStatusCode(_0x2d86a3,_0x537d3d){_0x537d3d=_0x537d3d||0xcc;return function(_0xcc0b1f){if(_0xcc0b1f){return _0x2d86a3[_0x5d96('0x2b')](_0x537d3d);}return _0x2d86a3[_0x5d96('0x2c')](_0x537d3d)['end']();};}function respondWithResult(_0x27b39e,_0x4fb3be){_0x4fb3be=_0x4fb3be||0xc8;return function(_0x450dbe){if(_0x450dbe){return _0x27b39e['status'](_0x4fb3be)[_0x5d96('0x2d')](_0x450dbe);}};}function respondWithFilteredResult(_0x28f715,_0x40a725){return function(_0x4a0f1e){if(_0x4a0f1e){var _0x4efe17=_0x4a0f1e[_0x5d96('0x2e')],_0x23bd84=_0x40a725[_0x5d96('0x2f')],_0x3dd161=_0x40a725['offset']+_0x40a725[_0x5d96('0x30')],_0x1cd331;if(_0x3dd161>=_0x4efe17){_0x3dd161=_0x4efe17;_0x1cd331=0xc8;}else{_0x1cd331=0xce;}_0x28f715[_0x5d96('0x2c')](_0x1cd331);return _0x28f715[_0x5d96('0x31')](_0x5d96('0x32'),_0x23bd84+'-'+_0x3dd161+'/'+_0x4efe17)[_0x5d96('0x2d')](_0x4a0f1e);}return null;};}function patchUpdates(_0x120343){return function(_0x55ed46){try{jsonpatch['apply'](_0x55ed46,_0x120343,!![]);}catch(_0x10feaf){return BPromise[_0x5d96('0x33')](_0x10feaf);}return _0x55ed46[_0x5d96('0x34')]();};}function saveUpdates(_0x42ff2e,_0x5cad43){return function(_0x184176){if(_0x184176){return _0x184176['update'](_0x42ff2e)[_0x5d96('0x35')](function(_0x2de0b5){return _0x2de0b5;});}return null;};}function removeEntity(_0x46b9df,_0x281ed7){return function(_0x854390){if(_0x854390){return _0x854390[_0x5d96('0x36')]()[_0x5d96('0x35')](function(){_0x46b9df[_0x5d96('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13fa16,_0x332780){return function(_0x39f830){if(!_0x39f830){_0x13fa16[_0x5d96('0x2b')](0x194);}return _0x39f830;};}function handleError(_0x415d7c,_0x54ce98){_0x54ce98=_0x54ce98||0x1f4;return function(_0x381dc1){logger['error'](_0x381dc1['stack']);if(_0x381dc1[_0x5d96('0x37')]){delete _0x381dc1[_0x5d96('0x37')];}_0x415d7c[_0x5d96('0x2c')](_0x54ce98)[_0x5d96('0x38')](_0x381dc1);};}exports['index']=function(_0x28755a,_0x3354ac){var _0x24ee09={},_0x4f0ad6={},_0xa55242={'count':0x0,'rows':[]};var _0x3bf1bd=db['FaxMessage']['rawAttributes'];_0x4f0ad6['model']=_[_0x5d96('0x39')](_0x3bf1bd);var _0x27cd35={'dateStart':_0x28755a[_0x5d96('0x3a')][_0x5d96('0x3b')],'dateEnd':_0x28755a[_0x5d96('0x3a')][_0x5d96('0x3c')]};delete _0x28755a[_0x5d96('0x3a')][_0x5d96('0x3b')];delete _0x28755a[_0x5d96('0x3a')][_0x5d96('0x3c')];_0x4f0ad6[_0x5d96('0x3a')]=_[_0x5d96('0x39')](_0x28755a[_0x5d96('0x3a')]);_0x4f0ad6[_0x5d96('0x3d')]=_[_0x5d96('0x3e')](_0x4f0ad6[_0x5d96('0x3f')],_0x4f0ad6[_0x5d96('0x3a')]);_0x24ee09['attributes']=_['intersection'](_0x4f0ad6[_0x5d96('0x3f')],qs[_0x5d96('0x40')](_0x28755a['query']['fields']));_0x24ee09[_0x5d96('0x41')]=_0x24ee09[_0x5d96('0x41')][_0x5d96('0x42')]?_0x24ee09[_0x5d96('0x41')]:_0x4f0ad6[_0x5d96('0x3f')];if(!_0x28755a['query'][_0x5d96('0x43')](_0x5d96('0x44'))){_0x24ee09[_0x5d96('0x30')]=qs['limit'](_0x28755a['query'][_0x5d96('0x30')]);_0x24ee09[_0x5d96('0x2f')]=qs['offset'](_0x28755a[_0x5d96('0x3a')][_0x5d96('0x2f')]);}_0x24ee09[_0x5d96('0x45')]=qs['sort'](_0x28755a[_0x5d96('0x3a')][_0x5d96('0x46')]);_0x24ee09[_0x5d96('0x47')]=qs['filters'](_[_0x5d96('0x48')](_0x28755a[_0x5d96('0x3a')],_0x4f0ad6[_0x5d96('0x3d')]));if(_0x27cd35[_0x5d96('0x3b')]){if(_0x27cd35['dateEnd']){_0x27cd35['dateEnd']=moment(_0x27cd35[_0x5d96('0x3c')])['add'](0x1,_0x5d96('0x49'));}else{_0x27cd35[_0x5d96('0x3c')]=moment(_0x27cd35[_0x5d96('0x3b')])['add'](0x1,'day');}_[_0x5d96('0x4a')](_0x24ee09[_0x5d96('0x47')],{'createdAt':{'$gte':_0x27cd35[_0x5d96('0x3b')],'$lte':_0x27cd35[_0x5d96('0x3c')]}});}if(_0x28755a[_0x5d96('0x3a')][_0x5d96('0x4b')]){_0x24ee09[_0x5d96('0x47')]=_[_0x5d96('0x4a')](_0x24ee09[_0x5d96('0x47')],{'$or':_[_0x5d96('0x4c')](_0x3bf1bd,function(_0x2c961a){if(_0x2c961a['type'][_0x5d96('0x4d')]!==_0x5d96('0x4e')){var _0x3b8a56={};_0x3b8a56[_0x2c961a[_0x5d96('0x4f')]]={'$like':'%'+_0x28755a[_0x5d96('0x3a')][_0x5d96('0x4b')]+'%'};return _0x3b8a56;}})});}_0x24ee09=_['merge']({},_0x24ee09,_0x28755a[_0x5d96('0x50')]);var _0x4d44ae={'where':_0x24ee09['where']};return db[_0x5d96('0x51')][_0x5d96('0x2e')](_0x4d44ae)[_0x5d96('0x35')](function(_0x69f70b){_0xa55242[_0x5d96('0x2e')]=_0x69f70b;if(_0x28755a[_0x5d96('0x3a')][_0x5d96('0x52')]){_0x24ee09[_0x5d96('0x53')]=[{'all':!![]}];}return db[_0x5d96('0x51')][_0x5d96('0x54')](_0x24ee09);})[_0x5d96('0x35')](function(_0x42b4af){_0xa55242[_0x5d96('0x55')]=_0x42b4af;return _0xa55242;})[_0x5d96('0x35')](respondWithFilteredResult(_0x3354ac,_0x24ee09))[_0x5d96('0x2a')](handleError(_0x3354ac,null));};exports[_0x5d96('0x56')]=function(_0x4b18b7,_0x4e3707){var _0x4906b9={'raw':!![],'where':{'id':_0x4b18b7[_0x5d96('0x57')]['id']}},_0x464568={};_0x464568[_0x5d96('0x3f')]=_[_0x5d96('0x39')](db[_0x5d96('0x51')][_0x5d96('0x58')]);_0x464568[_0x5d96('0x3a')]=_[_0x5d96('0x39')](_0x4b18b7[_0x5d96('0x3a')]);_0x464568[_0x5d96('0x3d')]=_['intersection'](_0x464568[_0x5d96('0x3f')],_0x464568[_0x5d96('0x3a')]);_0x4906b9[_0x5d96('0x41')]=_[_0x5d96('0x3e')](_0x464568[_0x5d96('0x3f')],qs[_0x5d96('0x40')](_0x4b18b7[_0x5d96('0x3a')][_0x5d96('0x40')]));_0x4906b9['attributes']=_0x4906b9[_0x5d96('0x41')][_0x5d96('0x42')]?_0x4906b9['attributes']:_0x464568[_0x5d96('0x3f')];if(_0x4b18b7['query'][_0x5d96('0x52')]){_0x4906b9[_0x5d96('0x53')]=[{'all':!![]}];}_0x4906b9=_[_0x5d96('0x4a')]({},_0x4906b9,_0x4b18b7[_0x5d96('0x50')]);return db[_0x5d96('0x51')][_0x5d96('0x59')](_0x4906b9)[_0x5d96('0x35')](handleEntityNotFound(_0x4e3707,null))[_0x5d96('0x35')](respondWithResult(_0x4e3707,null))[_0x5d96('0x2a')](handleError(_0x4e3707,null));};exports[_0x5d96('0x5a')]=function(_0xcebe60,_0xeeeb9){if(_0xcebe60['body']['id']){delete _0xcebe60['body']['id'];}return db[_0x5d96('0x51')][_0x5d96('0x59')]({'where':{'id':_0xcebe60['params']['id']}})[_0x5d96('0x35')](handleEntityNotFound(_0xeeeb9,null))['then'](saveUpdates(_0xcebe60[_0x5d96('0x5b')],null))[_0x5d96('0x35')](respondWithResult(_0xeeeb9,null))[_0x5d96('0x2a')](handleError(_0xeeeb9,null));};exports[_0x5d96('0x36')]=function(_0x4ae4f0,_0x4d4d4f){return db['FaxMessage']['find']({'where':{'id':_0x4ae4f0['params']['id']}})[_0x5d96('0x35')](handleEntityNotFound(_0x4d4d4f,null))[_0x5d96('0x35')](removeEntity(_0x4d4d4f,null))['catch'](handleError(_0x4d4d4f,null));};exports[_0x5d96('0x5c')]=function(_0x827472,_0x8e4228){return db[_0x5d96('0x51')][_0x5d96('0x5c')]()['then'](respondWithResult(_0x8e4228,null))[_0x5d96('0x2a')](handleError(_0x8e4228,null));};var interaction_log=require(_0x5d96('0x5d'))(_0x5d96('0x5e'));exports[_0x5d96('0x5f')]=function(_0x3e9358,_0x6f3338,_0x4dee73){var _0x5f5298={'channel':_0x5d96('0x60')};if(_0x3e9358[_0x5d96('0x5b')]['id']){delete _0x3e9358[_0x5d96('0x5b')]['id'];}_0x3e9358[_0x5d96('0x5b')][_0x5d96('0x61')]=!![];_0x3e9358[_0x5d96('0x5b')][_0x5d96('0x62')]=moment()[_0x5d96('0x63')](_0x5d96('0x64'));_0x3e9358[_0x5d96('0x5b')][_0x5d96('0x65')]=_0x3e9358[_0x5d96('0x5b')][_0x5d96('0x65')]||_0x3e9358[_0x5d96('0x66')]['id'];return db['FaxMessage'][_0x5d96('0x59')]({'where':{'id':_0x3e9358[_0x5d96('0x57')]['id'],'UserId':null},'include':[{'model':db[_0x5d96('0x67')],'as':_0x5d96('0x68')}]})['then'](handleEntityNotFound(_0x6f3338,null))[_0x5d96('0x35')](saveUpdates(_0x3e9358[_0x5d96('0x5b')],null))[_0x5d96('0x35')](function(_0x18ada2){if(_0x18ada2){_0x5f5298[_0x5d96('0x28')]=_0x18ada2[_0x5d96('0x69')]({'plain':!![]});return db[_0x5d96('0x6a')]['find']({'where':{'id':_0x18ada2[_0x5d96('0x6b')]}});}return null;})[_0x5d96('0x35')](handleEntityNotFound(_0x6f3338,null))['then'](function(_0x18bc3d){if(_0x18bc3d){return _0x18bc3d[_0x5d96('0x5a')]({'UserId':_0x3e9358['body'][_0x5d96('0x65')],'read1stAt':_['isNil'](_0x18bc3d[_0x5d96('0x6c')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x5d96('0x35')](function(_0x3757a4){if(_0x3757a4){_0x5f5298['interaction']=_0x3757a4[_0x5d96('0x69')]({'plain':!![]});interaction_log[_0x5d96('0x20')](_0x5d96('0x6d'),_0x3e9358[_0x5d96('0x66')]['id'],_0x3e9358[_0x5d96('0x66')][_0x5d96('0x37')],_0x3e9358[_0x5d96('0x66')][_0x5d96('0x6e')],_0x5f5298[_0x5d96('0x6f')]['id'],_0x3e9358['body']?JSON[_0x5d96('0x25')](_0x3e9358[_0x5d96('0x5b')]):_0x5d96('0x70'));return respondWithRpcPromise(_0x5d96('0x71'),_0x5d96('0x72'),_0x5f5298);}return null;})[_0x5d96('0x35')](function(_0x55ca7b){if(_0x55ca7b){if(_0x3e9358['body'][_0x5d96('0x73')]){_0x5f5298[_0x5d96('0x28')]['interface']=util[_0x5d96('0x63')](_0x5d96('0x74'),_0x3e9358[_0x5d96('0x66')][_0x5d96('0x37')]);_0x5f5298['message'][_0x5d96('0x75')]=_0x5f5298[_0x5d96('0x75')];_0x5f5298['message'][_0x5d96('0x76')]=_0x5d96('0x5f');return respondWithRpcPromise(_0x5d96('0x77'),_0x5d96('0x77'),{'event':'acceptmessage','message':_0x5f5298[_0x5d96('0x28')]},client9002)[_0x5d96('0x35')](function(){return _0x5f5298;});}return _0x5f5298;}return null;})[_0x5d96('0x35')](respondWithResult(_0x6f3338,null))[_0x5d96('0x2a')](handleError(_0x6f3338,null));};var interaction_log=require(_0x5d96('0x5d'))(_0x5d96('0x5e'));exports[_0x5d96('0x33')]=function(_0x5d279,_0x1a6ed4,_0x4560e5){var _0x36de56={'agent':{},'channel':_0x5d96('0x60')};if(_0x5d279[_0x5d96('0x5b')]['id']){delete _0x5d279['body']['id'];}_0x5d279[_0x5d96('0x5b')][_0x5d96('0x65')]=_0x5d279[_0x5d96('0x5b')][_0x5d96('0x65')]||_0x5d279[_0x5d96('0x66')]['id'];_0x36de56[_0x5d96('0x78')]['id']=_0x5d279[_0x5d96('0x5b')]['UserId'];return db[_0x5d96('0x51')]['find']({'where':{'id':_0x5d279[_0x5d96('0x57')]['id'],'UserId':null}})[_0x5d96('0x35')](handleEntityNotFound(_0x1a6ed4,null))[_0x5d96('0x35')](function(_0x5ecb70){if(_0x5ecb70){_0x36de56[_0x5d96('0x28')]=_0x5ecb70[_0x5d96('0x69')]({'plain':!![]});return db['FaxInteraction'][_0x5d96('0x59')]({'where':{'id':_0x5ecb70[_0x5d96('0x6b')]}});}return null;})[_0x5d96('0x35')](handleEntityNotFound(_0x1a6ed4,null))[_0x5d96('0x35')](function(_0x8a7988){if(_0x8a7988){_0x36de56[_0x5d96('0x6f')]=_0x8a7988['get']({'plain':!![]});interaction_log[_0x5d96('0x20')](_0x5d96('0x79'),_0x5d279[_0x5d96('0x66')]['id'],_0x5d279['user']['name'],_0x5d279[_0x5d96('0x66')]['role'],_0x36de56[_0x5d96('0x6f')]['id'],_0x5d279[_0x5d96('0x5b')]?JSON['stringify'](_0x5d279[_0x5d96('0x5b')]):_0x5d96('0x70'));return respondWithRpcPromise(_0x5d96('0x7a'),'rejectMessage',_0x36de56);}return null;})['then'](function(_0x9bbaa7){if(_0x9bbaa7){_0x9bbaa7[_0x5d96('0x28')][_0x5d96('0x7b')]=util[_0x5d96('0x63')]('SIP/%s',_0x5d279[_0x5d96('0x66')]['name']);_0x9bbaa7['message']['channel']=_0x36de56[_0x5d96('0x75')];_0x9bbaa7[_0x5d96('0x28')][_0x5d96('0x76')]=_0x5d96('0x33');respondWithRpcPromise(_0x5d96('0x77'),_0x5d96('0x77'),{'event':_0x5d96('0x7c'),'message':_0x9bbaa7[_0x5d96('0x28')]},client9002);return _0x36de56;}return null;})[_0x5d96('0x35')](respondWithResult(_0x1a6ed4,null))['catch'](handleError(_0x1a6ed4,null));};exports[_0x5d96('0x7d')]=function(_0x1e798a,_0x390244){var _0x27a639;return db[_0x5d96('0x51')][_0x5d96('0x7d')](_0x1e798a[_0x5d96('0x5b')],{})[_0x5d96('0x35')](function(_0x47472c){_0x27a639=_0x47472c;return db[_0x5d96('0x67')]['findOne']({'where':{'id':_0x27a639[_0x5d96('0x7e')]}});})[_0x5d96('0x35')](function(_0x52223d){if(_[_0x5d96('0x7f')](_0x52223d)){return;}else{_0x27a639[_0x5d96('0x60')]=_0x52223d[_0x5d96('0x60')];return db[_0x5d96('0x80')]['findOne']({'where':{'id':_0x27a639[_0x5d96('0x81')]}});}})[_0x5d96('0x35')](function(_0xb9a1b0){return respondWithRpcPromise(_0x5d96('0x82'),_0x5d96('0x82'),{'FaxAccountId':_[_0x5d96('0x7f')](_0x1e798a[_0x5d96('0x5b')])?undefined:_0x1e798a[_0x5d96('0x5b')][_0x5d96('0x83')],'path':_[_0x5d96('0x7f')](_0xb9a1b0)?undefined:util[_0x5d96('0x63')](_0x5d96('0x84'),_0xb9a1b0[_0x5d96('0x85')]),'fax':_[_0x5d96('0x7f')](_0x27a639['fax'])?undefined:_0x27a639[_0x5d96('0x60')],'AttachmentId':_0x27a639[_0x5d96('0x81')]},client9002);})['then'](respondWithResult(_0x390244,0xc9))[_0x5d96('0x2a')](handleError(_0x390244,null));};exports[_0x5d96('0x86')]=function(_0x115e2c,_0x2c0c36){var _0x37f407=path[_0x5d96('0x87')](config['root'],_0x5d96('0x88'),_0x5d96('0x89'),_0x5d96('0x8a'));return db[_0x5d96('0x51')][_0x5d96('0x59')]({'where':{'id':_0x115e2c[_0x5d96('0x57')]['id']},'include':[{'model':db[_0x5d96('0x80')],'as':_0x5d96('0x80')}]})[_0x5d96('0x35')](handleEntityNotFound(_0x2c0c36,null))[_0x5d96('0x35')](function(_0x256871){if(_0x256871){return _0x2c0c36[_0x5d96('0x86')](path['join'](_0x37f407,_0x256871[_0x5d96('0x80')]['basename']));}})['catch'](handleError(_0x2c0c36,null));};
\ No newline at end of file
index f575853..d20f017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44c=['update','remove','emit','hook','exports','../../mysqldb','FaxMessage','setMaxListeners','save'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xb44c,0x1b5));var _0xcb44=function(_0xdad237,_0x361a1d){_0xdad237=_0xdad237-0x0;var _0x15c575=_0xb44c[_0xdad237];return _0x15c575;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0xcb44('0x0'))['db'][_0xcb44('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xcb44('0x2')](0x0);var events={'afterCreate':_0xcb44('0x3'),'afterUpdate':_0xcb44('0x4'),'afterDestroy':_0xcb44('0x5')};function emitEvent(_0xf6981d){return function(_0x20d056,_0x4e13d3,_0x4d22cf){FaxMessageEvents[_0xcb44('0x6')](_0xf6981d+':'+_0x20d056['id'],_0x20d056);FaxMessageEvents['emit'](_0xf6981d,_0x20d056);_0x4d22cf(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0xcb44('0x7')](e,emitEvent(event));}}module[_0xcb44('0x8')]=FaxMessageEvents;
\ No newline at end of file
+var _0x02c0=['events','../../mysqldb','FaxMessage','setMaxListeners','save','update','remove','hasOwnProperty','hook','exports'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x02c0,0x8c));var _0x002c=function(_0x45f825,_0x16b109){_0x45f825=_0x45f825-0x0;var _0x495af4=_0x02c0[_0x45f825];return _0x495af4;};'use strict';var EventEmitter=require(_0x002c('0x0'));var FaxMessage=require(_0x002c('0x1'))['db'][_0x002c('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x002c('0x3')](0x0);var events={'afterCreate':_0x002c('0x4'),'afterUpdate':_0x002c('0x5'),'afterDestroy':_0x002c('0x6')};function emitEvent(_0x4eca0f){return function(_0x48854e,_0x4e5f7,_0x9b54e2){FaxMessageEvents['emit'](_0x4eca0f+':'+_0x48854e['id'],_0x48854e);FaxMessageEvents['emit'](_0x4eca0f,_0x48854e);_0x9b54e2(null);};}for(var e in events){if(events[_0x002c('0x7')](e)){var event=events[e];FaxMessage[_0x002c('0x8')](e,emitEvent(event));}}module[_0x002c('0x9')]=FaxMessageEvents;
\ No newline at end of file
index 8e323a0..f24f04e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe262=['error','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','FaxMessage','fax_messages','direction','toLowerCase','isNil','findOne','FaxInteractionId','body','catch'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe262,0x16a));var _0x2e26=function(_0x5cd811,_0x176445){_0x5cd811=_0x5cd811-0x0;var _0x1a2a7b=_0xe262[_0x5cd811];return _0x1a2a7b;};'use strict';var _=require(_0x2e26('0x0'));var util=require(_0x2e26('0x1'));var logger=require(_0x2e26('0x2'))(_0x2e26('0x3'));var moment=require(_0x2e26('0x4'));var BPromise=require(_0x2e26('0x5'));var rp=require(_0x2e26('0x6'));var attributes=require('./faxMessage.attributes');module['exports']=function(_0x324a5a,_0x1b33c6){return _0x324a5a['define'](_0x2e26('0x7'),attributes,{'tableName':_0x2e26('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xb968a2,_0x25c71b,_0x2842f0){var _0x15b84c=_0x324a5a['models'];var _0x4b67cf=_0xb968a2['get']({'plain':!![]});if(_0x4b67cf['direction']['toLowerCase']()==='in'||_0x4b67cf[_0x2e26('0x9')][_0x2e26('0xa')]()==='out'&&!_0x4b67cf['secret']&&!_[_0x2e26('0xb')](_0x4b67cf['UserId'])){_0x15b84c['FaxInteraction'][_0x2e26('0xc')]({'where':{'id':_0x4b67cf[_0x2e26('0xd')]}})['then'](function(_0x40776d){if(_0x40776d){_0x40776d['update']({'lastMsgAt':_0x4b67cf['createdAt'],'lastMsgDirection':_0x4b67cf[_0x2e26('0x9')][_0x2e26('0xa')](),'lastMsgBody':_0x4b67cf[_0x2e26('0xe')]});}})[_0x2e26('0xf')](function(_0x3d0539){console[_0x2e26('0x10')](_0x3d0539);});}_0x2842f0();}},'charset':_0x2e26('0x11'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf500=['define','FaxMessage','fax_messages','direction','toLowerCase','secret','isNil','UserId','findOne','FaxInteractionId','then','update','createdAt','error','utf8mb4_unicode_ci','util','bluebird','request-promise','./faxMessage.attributes','exports'];(function(_0x575f37,_0x3821ca){var _0xe7215b=function(_0x5cb764){while(--_0x5cb764){_0x575f37['push'](_0x575f37['shift']());}};_0xe7215b(++_0x3821ca);}(_0xf500,0x163));var _0x0f50=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0xf500[_0x2080a3];return _0x8d7d17;};'use strict';var _=require('lodash');var util=require(_0x0f50('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0f50('0x1'));var rp=require(_0x0f50('0x2'));var attributes=require(_0x0f50('0x3'));module[_0x0f50('0x4')]=function(_0x5d3c93,_0x22ec47){return _0x5d3c93[_0x0f50('0x5')](_0x0f50('0x6'),attributes,{'tableName':_0x0f50('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5dc8d2,_0x251d08,_0x32c097){var _0x17538d=_0x5d3c93['models'];var _0x29205f=_0x5dc8d2['get']({'plain':!![]});if(_0x29205f[_0x0f50('0x8')][_0x0f50('0x9')]()==='in'||_0x29205f[_0x0f50('0x8')][_0x0f50('0x9')]()==='out'&&!_0x29205f[_0x0f50('0xa')]&&!_[_0x0f50('0xb')](_0x29205f[_0x0f50('0xc')])){_0x17538d['FaxInteraction'][_0x0f50('0xd')]({'where':{'id':_0x29205f[_0x0f50('0xe')]}})[_0x0f50('0xf')](function(_0x38933f){if(_0x38933f){_0x38933f[_0x0f50('0x10')]({'lastMsgAt':_0x29205f[_0x0f50('0x11')],'lastMsgDirection':_0x29205f[_0x0f50('0x8')][_0x0f50('0x9')](),'lastMsgBody':_0x29205f['body']});}})['catch'](function(_0x1934c0){console[_0x0f50('0x12')](_0x1934c0);});}_0x32c097();}},'charset':'utf8mb4','collate':_0x0f50('0x13')});};
\ No newline at end of file
index 9700166..3f14eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6753=['redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','then','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','CreateFaxMessage','FaxMessage','body','options','catch','UpdateFaxMessage','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','http'];(function(_0x4f8f3b,_0x43281b){var _0x4c250c=function(_0x19a7ff){while(--_0x19a7ff){_0x4f8f3b['push'](_0x4f8f3b['shift']());}};_0x4c250c(++_0x43281b);}(_0x6753,0xa1));var _0x3675=function(_0x2c5e2f,_0x4ee393){_0x2c5e2f=_0x2c5e2f-0x0;var _0x41d160=_0x6753[_0x2c5e2f];return _0x41d160;};'use strict';var _=require(_0x3675('0x0'));var util=require(_0x3675('0x1'));var moment=require(_0x3675('0x2'));var BPromise=require(_0x3675('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3675('0x4'));var db=require(_0x3675('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3675('0x6'))(_0x3675('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x3675('0x8')]({'port':0x232a});config[_0x3675('0x9')]=_[_0x3675('0xa')](config[_0x3675('0x9')],{'host':_0x3675('0xb'),'port':0x18eb});var socket=require(_0x3675('0xc'))(new Redis(config[_0x3675('0x9')]));require(_0x3675('0xd'))[_0x3675('0xe')](socket);function respondWithRpcPromise(_0x1d5d32,_0xa191a5,_0x2a8748){return new BPromise(function(_0x4441b8,_0x420ffa){return client['request'](_0x1d5d32,_0x2a8748)[_0x3675('0xf')](function(_0x173473){logger['info'](_0x3675('0x10'),_0xa191a5,_0x3675('0x11'));logger[_0x3675('0x12')](_0x3675('0x13'),_0xa191a5,_0x3675('0x11'),JSON[_0x3675('0x14')](_0x173473));if(_0x173473[_0x3675('0x15')]){if(_0x173473['error'][_0x3675('0x16')]===0x1f4){logger[_0x3675('0x15')](_0x3675('0x10'),_0xa191a5,_0x173473[_0x3675('0x15')]['message']);return _0x420ffa(_0x173473[_0x3675('0x15')][_0x3675('0x17')]);}logger[_0x3675('0x15')](_0x3675('0x10'),_0xa191a5,_0x173473['error'][_0x3675('0x17')]);return _0x4441b8(_0x173473[_0x3675('0x15')][_0x3675('0x17')]);}else{logger[_0x3675('0x18')](_0x3675('0x10'),_0xa191a5,'request\x20sent');_0x4441b8(_0x173473[_0x3675('0x19')][_0x3675('0x17')]);}})['catch'](function(_0xe9f968){logger['error'](_0x3675('0x10'),_0xa191a5,_0xe9f968);_0x420ffa(_0xe9f968);});});}exports[_0x3675('0x1a')]=function(_0x54d793){var _0x54ec46=this;return new Promise(function(_0x3d1067,_0x2f2faf){return db[_0x3675('0x1b')]['create'](_0x54d793[_0x3675('0x1c')],{'raw':_0x54d793[_0x3675('0x1d')]?_0x54d793['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x129078){logger[_0x3675('0x18')](_0x3675('0x1a'),_0x54d793);logger[_0x3675('0x12')](_0x3675('0x1a'),_0x54d793,JSON[_0x3675('0x14')](_0x129078));_0x3d1067(_0x129078);})[_0x3675('0x1e')](function(_0x5ca335){logger[_0x3675('0x15')](_0x3675('0x1a'),_0x5ca335[_0x3675('0x17')],_0x54d793);_0x2f2faf(_0x54ec46['error'](0x1f4,_0x5ca335['message']));});});};exports[_0x3675('0x1f')]=function(_0x461fc9){var _0x47b74e=this;return new Promise(function(_0x24560f,_0x2a9e65){return db['FaxMessage']['update'](_0x461fc9['body'],{'raw':_0x461fc9[_0x3675('0x1d')]?_0x461fc9[_0x3675('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x461fc9[_0x3675('0x1d')]?_0x461fc9[_0x3675('0x1d')][_0x3675('0x20')]||null:null,'attributes':_0x461fc9[_0x3675('0x1d')]?_0x461fc9['options']['attributes']||null:null,'limit':_0x461fc9[_0x3675('0x1d')]?_0x461fc9['options'][_0x3675('0x21')]||null:null})[_0x3675('0xf')](function(_0x5f3d76){logger[_0x3675('0x18')]('UpdateFaxMessage',_0x461fc9);logger[_0x3675('0x12')](_0x3675('0x1f'),_0x461fc9,JSON[_0x3675('0x14')](_0x5f3d76));_0x24560f(_0x5f3d76);})[_0x3675('0x1e')](function(_0x5c7331){logger[_0x3675('0x15')](_0x3675('0x1f'),_0x5c7331['message'],_0x461fc9);_0x2a9e65(_0x47b74e[_0x3675('0x15')](0x1f4,_0x5c7331[_0x3675('0x17')]));});});};
\ No newline at end of file
+var _0x08d9=['../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FaxMessage,\x20%s,\x20%s','FaxMessage','create','body','options','CreateFaxMessage','debug','UpdateFaxMessage','update','raw','where','attributes','limit','lodash','moment','randomstring','ioredis','../../mysqldb','rpc'];(function(_0x49aab7,_0x1d6397){var _0x587b6f=function(_0x2346ac){while(--_0x2346ac){_0x49aab7['push'](_0x49aab7['shift']());}};_0x587b6f(++_0x1d6397);}(_0x08d9,0xc2));var _0x908d=function(_0x4936fb,_0x10fda9){_0x4936fb=_0x4936fb-0x0;var _0x4430ab=_0x08d9[_0x4936fb];return _0x4430ab;};'use strict';var _=require(_0x908d('0x0'));var util=require('util');var moment=require(_0x908d('0x1'));var BPromise=require('bluebird');var rs=require(_0x908d('0x2'));var fs=require('fs');var Redis=require(_0x908d('0x3'));var db=require(_0x908d('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x908d('0x5'));var config=require(_0x908d('0x6'));var jayson=require(_0x908d('0x7'));var client=jayson[_0x908d('0x8')][_0x908d('0x9')]({'port':0x232a});config['redis']=_[_0x908d('0xa')](config[_0x908d('0xb')],{'host':_0x908d('0xc'),'port':0x18eb});var socket=require(_0x908d('0xd'))(new Redis(config[_0x908d('0xb')]));require(_0x908d('0xe'))[_0x908d('0xf')](socket);function respondWithRpcPromise(_0x24113f,_0x41b147,_0x2ac2b7){return new BPromise(function(_0x570b56,_0x938950){return client[_0x908d('0x10')](_0x24113f,_0x2ac2b7)[_0x908d('0x11')](function(_0x114027){logger[_0x908d('0x12')]('FaxMessage,\x20%s,\x20%s',_0x41b147,'request\x20sent');logger['debug'](_0x908d('0x13'),_0x41b147,_0x908d('0x14'),JSON[_0x908d('0x15')](_0x114027));if(_0x114027[_0x908d('0x16')]){if(_0x114027[_0x908d('0x16')][_0x908d('0x17')]===0x1f4){logger[_0x908d('0x16')]('FaxMessage,\x20%s,\x20%s',_0x41b147,_0x114027['error'][_0x908d('0x18')]);return _0x938950(_0x114027[_0x908d('0x16')][_0x908d('0x18')]);}logger[_0x908d('0x16')]('FaxMessage,\x20%s,\x20%s',_0x41b147,_0x114027['error'][_0x908d('0x18')]);return _0x570b56(_0x114027[_0x908d('0x16')][_0x908d('0x18')]);}else{logger[_0x908d('0x12')]('FaxMessage,\x20%s,\x20%s',_0x41b147,_0x908d('0x14'));_0x570b56(_0x114027[_0x908d('0x19')][_0x908d('0x18')]);}})[_0x908d('0x1a')](function(_0x209ffd){logger[_0x908d('0x16')](_0x908d('0x1b'),_0x41b147,_0x209ffd);_0x938950(_0x209ffd);});});}exports['CreateFaxMessage']=function(_0x34a524){var _0x10848a=this;return new Promise(function(_0x46dd69,_0x48ef83){return db[_0x908d('0x1c')][_0x908d('0x1d')](_0x34a524[_0x908d('0x1e')],{'raw':_0x34a524[_0x908d('0x1f')]?_0x34a524[_0x908d('0x1f')]['raw']===undefined?!![]:![]:!![]})[_0x908d('0x11')](function(_0x4a0875){logger[_0x908d('0x12')](_0x908d('0x20'),_0x34a524);logger[_0x908d('0x21')](_0x908d('0x20'),_0x34a524,JSON[_0x908d('0x15')](_0x4a0875));_0x46dd69(_0x4a0875);})[_0x908d('0x1a')](function(_0x27dec1){logger[_0x908d('0x16')]('CreateFaxMessage',_0x27dec1[_0x908d('0x18')],_0x34a524);_0x48ef83(_0x10848a[_0x908d('0x16')](0x1f4,_0x27dec1[_0x908d('0x18')]));});});};exports[_0x908d('0x22')]=function(_0x40af96){var _0x56538a=this;return new Promise(function(_0x5cd721,_0x4488e8){return db[_0x908d('0x1c')][_0x908d('0x23')](_0x40af96[_0x908d('0x1e')],{'raw':_0x40af96[_0x908d('0x1f')]?_0x40af96['options'][_0x908d('0x24')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40af96[_0x908d('0x1f')]?_0x40af96['options'][_0x908d('0x25')]||null:null,'attributes':_0x40af96[_0x908d('0x1f')]?_0x40af96[_0x908d('0x1f')][_0x908d('0x26')]||null:null,'limit':_0x40af96[_0x908d('0x1f')]?_0x40af96[_0x908d('0x1f')][_0x908d('0x27')]||null:null})[_0x908d('0x11')](function(_0x2b8fa3){logger[_0x908d('0x12')](_0x908d('0x22'),_0x40af96);logger['debug'](_0x908d('0x22'),_0x40af96,JSON[_0x908d('0x15')](_0x2b8fa3));_0x5cd721(_0x2b8fa3);})[_0x908d('0x1a')](function(_0x2d0e55){logger['error'](_0x908d('0x22'),_0x2d0e55[_0x908d('0x18')],_0x40af96);_0x4488e8(_0x56538a[_0x908d('0x16')](0x1f4,_0x2d0e55[_0x908d('0x18')]));});});};
\ No newline at end of file
index 010ceda..99edcae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44c5=['faxMessage:','./faxMessage.events','save','remove','update','emit','removeListener','register','length'];(function(_0xd3ec58,_0x4d024c){var _0x4e1e29=function(_0x4a14c2){while(--_0x4a14c2){_0xd3ec58['push'](_0xd3ec58['shift']());}};_0x4e1e29(++_0x4d024c);}(_0x44c5,0x76));var _0x544c=function(_0x30c649,_0x2ebbac){_0x30c649=_0x30c649-0x0;var _0x3edfb9=_0x44c5[_0x30c649];return _0x3edfb9;};'use strict';var FaxMessageEvents=require(_0x544c('0x0'));var events=[_0x544c('0x1'),_0x544c('0x2'),_0x544c('0x3')];function createListener(_0x544714,_0x1c1ae3){return function(_0x4709ca){_0x1c1ae3[_0x544c('0x4')](_0x544714,_0x4709ca);};}function removeListener(_0x2aacb3,_0x18703a){return function(){FaxMessageEvents[_0x544c('0x5')](_0x2aacb3,_0x18703a);};}exports[_0x544c('0x6')]=function(_0xcfd37a){for(var _0x45d35f=0x0,_0x1dfaea=events[_0x544c('0x7')];_0x45d35f<_0x1dfaea;_0x45d35f++){var _0x3cc3d5=events[_0x45d35f];var _0xceea0a=createListener(_0x544c('0x8')+_0x3cc3d5,_0xcfd37a);FaxMessageEvents['on'](_0x3cc3d5,_0xceea0a);}};
\ No newline at end of file
+var _0x5410=['remove','update','emit','removeListener','length','faxMessage:','save'];(function(_0x2bf466,_0x4929a5){var _0x856885=function(_0x102ef1){while(--_0x102ef1){_0x2bf466['push'](_0x2bf466['shift']());}};_0x856885(++_0x4929a5);}(_0x5410,0xa0));var _0x0541=function(_0x38c660,_0x345e6c){_0x38c660=_0x38c660-0x0;var _0x4a85e7=_0x5410[_0x38c660];return _0x4a85e7;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x0541('0x0'),_0x0541('0x1'),_0x0541('0x2')];function createListener(_0x301523,_0x2baa7f){return function(_0x13c7aa){_0x2baa7f[_0x0541('0x3')](_0x301523,_0x13c7aa);};}function removeListener(_0x102a10,_0x1098c3){return function(){FaxMessageEvents[_0x0541('0x4')](_0x102a10,_0x1098c3);};}exports['register']=function(_0x19e8e5){for(var _0x3a199b=0x0,_0x1a79e8=events[_0x0541('0x5')];_0x3a199b<_0x1a79e8;_0x3a199b++){var _0x4903c2=events[_0x3a199b];var _0x1ba982=createListener(_0x0541('0x6')+_0x4903c2,_0x19e8e5);FaxMessageEvents['on'](_0x4903c2,_0x1ba982);}};
\ No newline at end of file
index 615fc7a..e4790ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d04=['isAuthenticated','index','/:id','show','download','tracked','fax','faxmessage:create','create','put','/:id/accept','/:id/reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./faxMessage.controller','get'];(function(_0x57df11,_0x309cc6){var _0x111ccb=function(_0x3b6fba){while(--_0x3b6fba){_0x57df11['push'](_0x57df11['shift']());}};_0x111ccb(++_0x309cc6);}(_0x3d04,0xbe));var _0x43d0=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3d04[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var path=require(_0x43d0('0x2'));var timeout=require(_0x43d0('0x3'));var express=require(_0x43d0('0x4'));var router=express[_0x43d0('0x5')]();var auth=require(_0x43d0('0x6'));var interaction=require(_0x43d0('0x7'));var config=require('../../config/environment');var controller=require(_0x43d0('0x8'));router[_0x43d0('0x9')]('/',auth[_0x43d0('0xa')](),controller[_0x43d0('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x43d0('0x9')](_0x43d0('0xc'),auth[_0x43d0('0xa')](),controller[_0x43d0('0xd')]);router[_0x43d0('0x9')]('/:id/download',auth['isAuthenticated'](),controller[_0x43d0('0xe')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x43d0('0xf')](_0x43d0('0x10'),_0x43d0('0x11')),controller[_0x43d0('0x12')]);router['put'](_0x43d0('0xc'),auth[_0x43d0('0xa')](),controller['update']);router[_0x43d0('0x13')](_0x43d0('0x14'),auth[_0x43d0('0xa')](),controller['accept']);router[_0x43d0('0x13')](_0x43d0('0x15'),auth[_0x43d0('0xa')](),controller['reject']);router[_0x43d0('0x16')](_0x43d0('0xc'),auth[_0x43d0('0xa')](),controller[_0x43d0('0x17')]);module[_0x43d0('0x18')]=router;
\ No newline at end of file
+var _0x7096=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','show','/:id/download','download','post','fax','faxmessage:create','create','put','/:id','update','accept','/:id/reject','reject','destroy','exports','util','connect-timeout'];(function(_0x4014c8,_0x38efb6){var _0x194847=function(_0x83288a){while(--_0x83288a){_0x4014c8['push'](_0x4014c8['shift']());}};_0x194847(++_0x38efb6);}(_0x7096,0x10c));var _0x6709=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x7096[_0x2b7764];return _0x848dcb;};'use strict';var multer=require('multer');var util=require(_0x6709('0x0'));var path=require('path');var timeout=require(_0x6709('0x1'));var express=require('express');var router=express[_0x6709('0x2')]();var auth=require(_0x6709('0x3'));var interaction=require(_0x6709('0x4'));var config=require(_0x6709('0x5'));var controller=require(_0x6709('0x6'));router[_0x6709('0x7')]('/',auth[_0x6709('0x8')](),controller[_0x6709('0x9')]);router[_0x6709('0x7')](_0x6709('0xa'),auth[_0x6709('0x8')](),controller[_0x6709('0xb')]);router[_0x6709('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x6709('0xc')]);router[_0x6709('0x7')](_0x6709('0xd'),auth[_0x6709('0x8')](),controller[_0x6709('0xe')]);router[_0x6709('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x6709('0x10'),_0x6709('0x11')),controller[_0x6709('0x12')]);router[_0x6709('0x13')](_0x6709('0x14'),auth[_0x6709('0x8')](),controller[_0x6709('0x15')]);router[_0x6709('0x13')]('/:id/accept',auth[_0x6709('0x8')](),controller[_0x6709('0x16')]);router[_0x6709('0x13')](_0x6709('0x17'),auth['isAuthenticated'](),controller[_0x6709('0x18')]);router['delete'](_0x6709('0x14'),auth['isAuthenticated'](),controller[_0x6709('0x19')]);module[_0x6709('0x1a')]=router;
\ No newline at end of file
index a988426..b06e77e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d46=['exports','STRING','INTEGER','ENUM','rrmemory','roundrobin','sequelize'];(function(_0x28f1de,_0x355054){var _0x5b5dad=function(_0x399b72){while(--_0x399b72){_0x28f1de['push'](_0x28f1de['shift']());}};_0x5b5dad(++_0x355054);}(_0x0d46,0xb5));var _0x60d4=function(_0x1e60c6,_0x318f72){_0x1e60c6=_0x1e60c6-0x0;var _0x577cfa=_0x0d46[_0x1e60c6];return _0x577cfa;};'use strict';var Sequelize=require(_0x60d4('0x0'));module[_0x60d4('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x60d4('0x2')]},'timeout':{'type':Sequelize[_0x60d4('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x60d4('0x4')](_0x60d4('0x5'),'beepall',_0x60d4('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x60d4('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x07f7=['beepall','roundrobin','INTEGER','sequelize','exports','STRING','name','rrmemory'];(function(_0x31616c,_0x3fbdba){var _0x433895=function(_0x1a1405){while(--_0x1a1405){_0x31616c['push'](_0x31616c['shift']());}};_0x433895(++_0x3fbdba);}(_0x07f7,0x15b));var _0x707f=function(_0x21f931,_0x598b2d){_0x21f931=_0x21f931-0x0;var _0x3f083c=_0x07f7[_0x21f931];return _0x3f083c;};'use strict';var Sequelize=require(_0x707f('0x0'));module[_0x707f('0x1')]={'name':{'type':Sequelize[_0x707f('0x2')],'unique':_0x707f('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x707f('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x707f('0x4'),_0x707f('0x5'),_0x707f('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x707f('0x7')],'defaultValue':0x0}};
\ No newline at end of file
index 15c3c15..9220d61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4899=['apply','reject','destroy','then','error','stack','name','send','index','FaxQueue','rawAttributes','model','query','dateStart','dateEnd','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','add','day','filter','map','type','key','VIRTUAL','field','merge','includeAll','include','findAll','catch','show','params','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxQueues','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','pick','FaxQueueId','UserFaxQueue','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','Team','getTeams','addTeams','ids','Agents','union','removeTeams','User','removeAgents','addAgents','spread','emit','isArray','userFaxQueue:remove','getAgents','eml-format','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range'];(function(_0x2ecdbe,_0x114206){var _0x44d6d4=function(_0x2e592a){while(--_0x2e592a){_0x2ecdbe['push'](_0x2ecdbe['shift']());}};_0x44d6d4(++_0x114206);}(_0x4899,0x142));var _0x9489=function(_0x39ceba,_0x25ae02){_0x39ceba=_0x39ceba-0x0;var _0x56ea12=_0x4899[_0x39ceba];return _0x56ea12;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x9489('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9489('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9489('0x2'));var BPromise=require(_0x9489('0x3'));var Mustache=require(_0x9489('0x4'));var util=require(_0x9489('0x5'));var path=require(_0x9489('0x6'));var sox=require('sox');var csv=require(_0x9489('0x7'));var ejs=require(_0x9489('0x8'));var fs=require('fs');var _=require(_0x9489('0x9'));var squel=require(_0x9489('0xa'));var crypto=require(_0x9489('0xb'));var jsforce=require(_0x9489('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9489('0xd'));var Papa=require(_0x9489('0xe'));var Redis=require(_0x9489('0xf'));var qs=require(_0x9489('0x10'));var logger=require(_0x9489('0x11'))(_0x9489('0x12'));var utils=require('../../config/utils');var config=require(_0x9489('0x13'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9489('0x14')](config[_0x9489('0x15')],{'host':_0x9489('0x16'),'port':0x18eb});var socket=require(_0x9489('0x17'))(new Redis(config[_0x9489('0x15')]));require(_0x9489('0x18'))[_0x9489('0x19')](socket);function respondWithStatusCode(_0x3f9891,_0x159531){_0x159531=_0x159531||0xcc;return function(_0x2b4e63){if(_0x2b4e63){return _0x3f9891[_0x9489('0x1a')](_0x159531);}return _0x3f9891[_0x9489('0x1b')](_0x159531)[_0x9489('0x1c')]();};}function respondWithResult(_0x264632,_0x2c88be){_0x2c88be=_0x2c88be||0xc8;return function(_0x52e975){if(_0x52e975){return _0x264632[_0x9489('0x1b')](_0x2c88be)[_0x9489('0x1d')](_0x52e975);}};}function respondWithFilteredResult(_0x4bb3e9,_0x9f0a34){return function(_0xa2632f){if(_0xa2632f){var _0x46e6ca=_0xa2632f[_0x9489('0x1e')],_0x57b55d=_0x9f0a34[_0x9489('0x1f')],_0x2f11c4=_0x9f0a34[_0x9489('0x1f')]+_0x9f0a34[_0x9489('0x20')],_0xef4bf8;if(_0x2f11c4>=_0x46e6ca){_0x2f11c4=_0x46e6ca;_0xef4bf8=0xc8;}else{_0xef4bf8=0xce;}_0x4bb3e9[_0x9489('0x1b')](_0xef4bf8);return _0x4bb3e9[_0x9489('0x21')](_0x9489('0x22'),_0x57b55d+'-'+_0x2f11c4+'/'+_0x46e6ca)['json'](_0xa2632f);}return null;};}function patchUpdates(_0x2df7f9){return function(_0x450b69){try{jsonpatch[_0x9489('0x23')](_0x450b69,_0x2df7f9,!![]);}catch(_0x36e536){return BPromise[_0x9489('0x24')](_0x36e536);}return _0x450b69['save']();};}function saveUpdates(_0xf2b847,_0x5794d6){return function(_0x280ec8){if(_0x280ec8){return _0x280ec8['update'](_0xf2b847)['then'](function(_0x3b5118){return _0x3b5118;});}return null;};}function removeEntity(_0x147fec,_0x1b9e86){return function(_0x14c3ae){if(_0x14c3ae){return _0x14c3ae[_0x9489('0x25')]()['then'](function(){var _0x400fb4=_0x14c3ae['get']({'plain':!![]});var _0x26b732='FaxQueues';return db['UserProfileResource'][_0x9489('0x25')]({'where':{'type':_0x26b732,'resourceId':_0x400fb4['id']}})[_0x9489('0x26')](function(){return _0x14c3ae;});})['then'](function(){_0x147fec[_0x9489('0x1b')](0xcc)[_0x9489('0x1c')]();});}};}function handleEntityNotFound(_0x32e33e,_0x140fcb){return function(_0x116d6b){if(!_0x116d6b){_0x32e33e[_0x9489('0x1a')](0x194);}return _0x116d6b;};}function handleError(_0x31c846,_0x3b1bda){_0x3b1bda=_0x3b1bda||0x1f4;return function(_0x26e2a1){logger[_0x9489('0x27')](_0x26e2a1[_0x9489('0x28')]);if(_0x26e2a1[_0x9489('0x29')]){delete _0x26e2a1[_0x9489('0x29')];}_0x31c846[_0x9489('0x1b')](_0x3b1bda)[_0x9489('0x2a')](_0x26e2a1);};}exports[_0x9489('0x2b')]=function(_0x4b9675,_0x293717){var _0x4239e0={},_0x5c10ea={},_0x4b0d0c={'count':0x0,'rows':[]};var _0x3db299=db[_0x9489('0x2c')][_0x9489('0x2d')];_0x5c10ea[_0x9489('0x2e')]=_['keys'](_0x3db299);var _0x1fe645={'dateStart':_0x4b9675[_0x9489('0x2f')][_0x9489('0x30')],'dateEnd':_0x4b9675['query'][_0x9489('0x31')]};delete _0x4b9675[_0x9489('0x2f')][_0x9489('0x30')];delete _0x4b9675[_0x9489('0x2f')]['dateEnd'];_0x5c10ea[_0x9489('0x2f')]=_[_0x9489('0x32')](_0x4b9675[_0x9489('0x2f')]);_0x5c10ea[_0x9489('0x33')]=_[_0x9489('0x34')](_0x5c10ea['model'],_0x5c10ea[_0x9489('0x2f')]);_0x4239e0[_0x9489('0x35')]=_[_0x9489('0x34')](_0x5c10ea[_0x9489('0x2e')],qs[_0x9489('0x36')](_0x4b9675[_0x9489('0x2f')]['fields']));_0x4239e0[_0x9489('0x35')]=_0x4239e0['attributes'][_0x9489('0x37')]?_0x4239e0['attributes']:_0x5c10ea[_0x9489('0x2e')];if(!_0x4b9675[_0x9489('0x2f')][_0x9489('0x38')](_0x9489('0x39'))){_0x4239e0['limit']=qs['limit'](_0x4b9675[_0x9489('0x2f')]['limit']);_0x4239e0['offset']=qs[_0x9489('0x1f')](_0x4b9675[_0x9489('0x2f')][_0x9489('0x1f')]);}_0x4239e0[_0x9489('0x3a')]=qs[_0x9489('0x3b')](_0x4b9675['query'][_0x9489('0x3b')]);_0x4239e0[_0x9489('0x3c')]=qs[_0x9489('0x33')](_['pick'](_0x4b9675[_0x9489('0x2f')],_0x5c10ea[_0x9489('0x33')]));if(_0x1fe645['dateStart']){if(_0x1fe645[_0x9489('0x31')]){_0x1fe645[_0x9489('0x31')]=moment(_0x1fe645['dateEnd'])[_0x9489('0x3d')](0x1,_0x9489('0x3e'));}else{_0x1fe645[_0x9489('0x31')]=moment(_0x1fe645[_0x9489('0x30')])[_0x9489('0x3d')](0x1,_0x9489('0x3e'));}_['merge'](_0x4239e0[_0x9489('0x3c')],{'createdAt':{'$gte':_0x1fe645[_0x9489('0x30')],'$lte':_0x1fe645[_0x9489('0x31')]}});}if(_0x4b9675[_0x9489('0x2f')][_0x9489('0x3f')]){_0x4239e0[_0x9489('0x3c')]=_['merge'](_0x4239e0[_0x9489('0x3c')],{'$or':_[_0x9489('0x40')](_0x3db299,function(_0x458bc5){if(_0x458bc5[_0x9489('0x41')][_0x9489('0x42')]!==_0x9489('0x43')){var _0x4bb36d={};_0x4bb36d[_0x458bc5[_0x9489('0x44')]]={'$like':'%'+_0x4b9675[_0x9489('0x2f')][_0x9489('0x3f')]+'%'};return _0x4bb36d;}})});}_0x4239e0=_[_0x9489('0x45')]({},_0x4239e0,_0x4b9675['options']);var _0x350b60={'where':_0x4239e0['where']};return db[_0x9489('0x2c')][_0x9489('0x1e')](_0x350b60)['then'](function(_0x384495){_0x4b0d0c['count']=_0x384495;if(_0x4b9675['query'][_0x9489('0x46')]){_0x4239e0[_0x9489('0x47')]=[{'all':!![]}];}return db[_0x9489('0x2c')][_0x9489('0x48')](_0x4239e0);})['then'](function(_0x203014){_0x4b0d0c['rows']=_0x203014;return _0x4b0d0c;})[_0x9489('0x26')](respondWithFilteredResult(_0x293717,_0x4239e0))[_0x9489('0x49')](handleError(_0x293717,null));};exports[_0x9489('0x4a')]=function(_0x5a5a52,_0x1d8a26){var _0x32b51e={'raw':!![],'where':{'id':_0x5a5a52[_0x9489('0x4b')]['id']}},_0x3a4c4c={};_0x3a4c4c[_0x9489('0x2e')]=_[_0x9489('0x32')](db[_0x9489('0x2c')][_0x9489('0x2d')]);_0x3a4c4c[_0x9489('0x2f')]=_[_0x9489('0x32')](_0x5a5a52[_0x9489('0x2f')]);_0x3a4c4c['filters']=_[_0x9489('0x34')](_0x3a4c4c[_0x9489('0x2e')],_0x3a4c4c[_0x9489('0x2f')]);_0x32b51e[_0x9489('0x35')]=_['intersection'](_0x3a4c4c[_0x9489('0x2e')],qs[_0x9489('0x36')](_0x5a5a52[_0x9489('0x2f')]['fields']));_0x32b51e[_0x9489('0x35')]=_0x32b51e[_0x9489('0x35')][_0x9489('0x37')]?_0x32b51e[_0x9489('0x35')]:_0x3a4c4c[_0x9489('0x2e')];if(_0x5a5a52[_0x9489('0x2f')][_0x9489('0x46')]){_0x32b51e[_0x9489('0x47')]=[{'all':!![]}];}_0x32b51e=_[_0x9489('0x45')]({},_0x32b51e,_0x5a5a52[_0x9489('0x4c')]);return db['FaxQueue'][_0x9489('0x4d')](_0x32b51e)[_0x9489('0x26')](handleEntityNotFound(_0x1d8a26,null))[_0x9489('0x26')](respondWithResult(_0x1d8a26,null))[_0x9489('0x49')](handleError(_0x1d8a26,null));};exports[_0x9489('0x4e')]=function(_0x319490,_0x167687){return db[_0x9489('0x2c')]['create'](_0x319490[_0x9489('0x4f')],{})['then'](function(_0x24a0e2){var _0x5acdc0=_0x319490[_0x9489('0x50')][_0x9489('0x51')]({'plain':!![]});if(!_0x5acdc0)throw new Error(_0x9489('0x52'));if(_0x5acdc0[_0x9489('0x53')]===_0x9489('0x50')){var _0x2d25fc=_0x24a0e2[_0x9489('0x51')]({'plain':!![]});var _0x3961cc=_0x9489('0x54');return db[_0x9489('0x55')][_0x9489('0x4d')]({'where':{'name':_0x3961cc,'userProfileId':_0x5acdc0[_0x9489('0x56')]},'raw':!![]})[_0x9489('0x26')](function(_0x3edb04){if(_0x3edb04&&_0x3edb04[_0x9489('0x57')]===0x0){return db[_0x9489('0x58')][_0x9489('0x4e')]({'name':_0x2d25fc[_0x9489('0x29')],'resourceId':_0x2d25fc['id'],'type':_0x3edb04[_0x9489('0x29')],'sectionId':_0x3edb04['id']},{})[_0x9489('0x26')](function(){return _0x24a0e2;});}else{return _0x24a0e2;}})[_0x9489('0x49')](function(_0x462b3f){logger['error'](_0x9489('0x59'),_0x462b3f);throw _0x462b3f;});}return _0x24a0e2;})[_0x9489('0x26')](respondWithResult(_0x167687,0xc9))[_0x9489('0x49')](handleError(_0x167687,null));};exports[_0x9489('0x5a')]=function(_0x4deec7,_0x38774b){if(_0x4deec7[_0x9489('0x4f')]['id']){delete _0x4deec7['body']['id'];}return db['FaxQueue'][_0x9489('0x4d')]({'where':{'id':_0x4deec7[_0x9489('0x4b')]['id']}})['then'](handleEntityNotFound(_0x38774b,null))[_0x9489('0x26')](saveUpdates(_0x4deec7[_0x9489('0x4f')],null))[_0x9489('0x26')](respondWithResult(_0x38774b,null))['catch'](handleError(_0x38774b,null));};exports[_0x9489('0x25')]=function(_0x3c90f0,_0x4e757f){return db[_0x9489('0x2c')][_0x9489('0x4d')]({'where':{'id':_0x3c90f0[_0x9489('0x4b')]['id']}})[_0x9489('0x26')](handleEntityNotFound(_0x4e757f,null))[_0x9489('0x26')](removeEntity(_0x4e757f,null))[_0x9489('0x49')](handleError(_0x4e757f,null));};exports[_0x9489('0x5b')]=function(_0x3e6514,_0x5cd2eb){return db[_0x9489('0x2c')][_0x9489('0x5b')]()[_0x9489('0x26')](respondWithResult(_0x5cd2eb,null))[_0x9489('0x49')](handleError(_0x5cd2eb,null));};exports[_0x9489('0x5c')]=function(_0x2279b5,_0x1e50b1,_0xf7f40f){var _0x25fa1d={'raw':!![],'where':{}},_0x5bc2c1={},_0x4d8ad9;return db['FaxQueue'][_0x9489('0x5d')]({'where':{'id':_0x2279b5[_0x9489('0x4b')]['id']}})[_0x9489('0x26')](handleEntityNotFound(_0x1e50b1,null))['then'](function(_0x2e1ea1){if(_0x2e1ea1){_0x4d8ad9=_0x2e1ea1[_0x9489('0x51')]({'plain':!![]});_0x5bc2c1[_0x9489('0x2e')]=_[_0x9489('0x32')](db['UserFaxQueue']['rawAttributes']);_0x5bc2c1['query']=_[_0x9489('0x32')](_0x2279b5[_0x9489('0x2f')]);_0x5bc2c1['filters']=_[_0x9489('0x34')](_0x5bc2c1[_0x9489('0x2e')],_0x5bc2c1[_0x9489('0x2f')]);_0x25fa1d[_0x9489('0x35')]=_['intersection'](_0x5bc2c1[_0x9489('0x2e')],qs['fields'](_0x2279b5['query']['fields']));_0x25fa1d['attributes']=_0x25fa1d[_0x9489('0x35')][_0x9489('0x37')]?_0x25fa1d[_0x9489('0x35')]:_0x5bc2c1[_0x9489('0x2e')];if(!_0x2279b5[_0x9489('0x2f')][_0x9489('0x38')](_0x9489('0x39'))){_0x25fa1d['limit']=qs['limit'](_0x2279b5[_0x9489('0x2f')][_0x9489('0x20')]);_0x25fa1d['offset']=qs[_0x9489('0x1f')](_0x2279b5[_0x9489('0x2f')]['offset']);}_0x25fa1d['order']=qs[_0x9489('0x3b')](_0x2279b5[_0x9489('0x2f')]['sort']);_0x25fa1d[_0x9489('0x3c')]=qs[_0x9489('0x33')](_[_0x9489('0x5e')](_0x2279b5[_0x9489('0x2f')],_0x5bc2c1['filters']));_0x25fa1d['where'][_0x9489('0x5f')]=_0x2e1ea1['id'];if(_0x2279b5[_0x9489('0x2f')][_0x9489('0x3f')]){_0x25fa1d[_0x9489('0x3c')]=_[_0x9489('0x45')](_0x25fa1d[_0x9489('0x3c')],{'$or':_[_0x9489('0x40')](_0x25fa1d[_0x9489('0x35')],function(_0x3642a8){var _0x5439b7={};_0x5439b7[_0x3642a8]={'$like':'%'+_0x2279b5['query'][_0x9489('0x3f')]+'%'};return _0x5439b7;})});}_0x25fa1d=_['merge']({},_0x25fa1d,_0x2279b5[_0x9489('0x4c')]);return db[_0x9489('0x60')][_0x9489('0x48')](_0x25fa1d);}})['then'](function(_0x5e0126){if(_0x5e0126){return db['User']['findAndCountAll']({'where':{'id':_[_0x9489('0x40')](_0x5e0126,_0x9489('0x61')),'role':_0x9489('0x62')},'attributes':['id',_0x9489('0x29'),_0x9489('0x63'),_0x9489('0x64'),_0x9489('0x65')]});}})['then'](function(_0x32ce51){if(_0x32ce51){return{'count':_0x32ce51[_0x9489('0x1e')],'rows':_[_0x9489('0x40')](_0x32ce51['rows'],function(_0x462fc2){return{'membername':_0x462fc2[_0x9489('0x29')],'UserId':_0x462fc2['id'],'queue_name':_0x4d8ad9[_0x9489('0x29')],'FaxQueueId':_0x4d8ad9['id'],'interface':util[_0x9489('0x66')](_0x9489('0x67'),'SIP',_0x462fc2['name']),'penalty':0x0,'paused':_0x462fc2[_0x9489('0x63')],'createdAt':_0x462fc2['createdAt'],'updatedAt':_0x462fc2[_0x9489('0x64')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9489('0x26')](respondWithFilteredResult(_0x1e50b1,_0x25fa1d))[_0x9489('0x49')](handleError(_0x1e50b1,null));};exports['getTeams']=function(_0x36c505,_0x276830,_0x8585e){var _0x1a7072={};var _0x4e9e6d={};var _0x18fac7;var _0x44a865;return db[_0x9489('0x2c')][_0x9489('0x5d')]({'where':{'id':_0x36c505['params']['id']}})[_0x9489('0x26')](handleEntityNotFound(_0x276830,null))[_0x9489('0x26')](function(_0x3941f6){if(_0x3941f6){_0x18fac7=_0x3941f6;_0x4e9e6d[_0x9489('0x2e')]=_['keys'](db[_0x9489('0x68')][_0x9489('0x2d')]);_0x4e9e6d[_0x9489('0x2f')]=_[_0x9489('0x32')](_0x36c505[_0x9489('0x2f')]);_0x4e9e6d[_0x9489('0x33')]=_[_0x9489('0x34')](_0x4e9e6d[_0x9489('0x2e')],_0x4e9e6d[_0x9489('0x2f')]);_0x1a7072[_0x9489('0x35')]=_['intersection'](_0x4e9e6d[_0x9489('0x2e')],qs['fields'](_0x36c505[_0x9489('0x2f')]['fields']));_0x1a7072[_0x9489('0x35')]=_0x1a7072[_0x9489('0x35')]['length']?_0x1a7072[_0x9489('0x35')]:_0x4e9e6d[_0x9489('0x2e')];_0x1a7072[_0x9489('0x3a')]=qs[_0x9489('0x3b')](_0x36c505[_0x9489('0x2f')]['sort']);_0x1a7072[_0x9489('0x3c')]=qs[_0x9489('0x33')](_[_0x9489('0x5e')](_0x36c505['query'],_0x4e9e6d[_0x9489('0x33')]));if(_0x36c505[_0x9489('0x2f')][_0x9489('0x3f')]){_0x1a7072['where']=_[_0x9489('0x45')](_0x1a7072[_0x9489('0x3c')],{'$or':_[_0x9489('0x40')](_0x1a7072[_0x9489('0x35')],function(_0x36434f){var _0x34801b={};_0x34801b[_0x36434f]={'$like':'%'+_0x36c505[_0x9489('0x2f')][_0x9489('0x3f')]+'%'};return _0x34801b;})});}_0x1a7072=_[_0x9489('0x45')]({},_0x1a7072,_0x36c505[_0x9489('0x4c')]);return _0x18fac7[_0x9489('0x69')](_0x1a7072);}})['then'](function(_0x197d53){if(_0x197d53){_0x44a865=_0x197d53['length'];if(!_0x36c505[_0x9489('0x2f')]['hasOwnProperty']('nolimit')){_0x1a7072[_0x9489('0x20')]=qs[_0x9489('0x20')](_0x36c505[_0x9489('0x2f')][_0x9489('0x20')]);_0x1a7072[_0x9489('0x1f')]=qs[_0x9489('0x1f')](_0x36c505[_0x9489('0x2f')][_0x9489('0x1f')]);}return _0x18fac7[_0x9489('0x69')](_0x1a7072);}})[_0x9489('0x26')](function(_0xca95e){if(_0xca95e){return _0xca95e?{'count':_0x44a865,'rows':_0xca95e}:null;}})['then'](respondWithResult(_0x276830,null))[_0x9489('0x49')](handleError(_0x276830,null));};exports[_0x9489('0x6a')]=function(_0x90e921,_0x5b2932,_0x41faa3){var _0x1dce86=[];var _0x2c7115;return db[_0x9489('0x68')][_0x9489('0x48')]({'where':{'id':_0x90e921[_0x9489('0x4f')][_0x9489('0x6b')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9489('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x9489('0x26')](function(_0x530de1){if(_0x530de1){for(var _0x3630fc=0x0;_0x3630fc<_0x530de1[_0x9489('0x37')];_0x3630fc+=0x1){for(var _0x463e05=0x0;_0x463e05<_0x530de1[_0x3630fc][_0x9489('0x6c')][_0x9489('0x37')];_0x463e05+=0x1){_0x1dce86=_[_0x9489('0x6d')](_0x1dce86,[_0x530de1[_0x3630fc]['Agents'][_0x463e05]['id']]);}}return _0x1dce86;}})[_0x9489('0x26')](function(_0x308b86){if(_0x308b86){return db[_0x9489('0x2c')]['find']({'where':{'id':_0x90e921[_0x9489('0x4b')]['id']}});}})[_0x9489('0x26')](function(_0x1e7982){if(_0x1e7982){_0x2c7115=_0x1e7982;return _0x2c7115['addAgents'](_0x1dce86,{'penalty':_0x90e921['body']['penalty']});}})[_0x9489('0x26')](function(_0x1184cf){if(_0x1184cf){return _0x2c7115[_0x9489('0x6a')](_0x90e921[_0x9489('0x4f')]['ids']);}})[_0x9489('0x26')](handleEntityNotFound(_0x5b2932,null))['then'](respondWithStatusCode(_0x5b2932,null))[_0x9489('0x49')](handleError(_0x5b2932,null));};exports[_0x9489('0x6e')]=function(_0x30e5a2,_0x1a36c1,_0x6c988a){var _0x43c07a=[];var _0x4d0740;return db['Team']['findAll']({'where':{'id':_0x30e5a2[_0x9489('0x2f')][_0x9489('0x6b')]},'attributes':['id'],'include':[{'model':db[_0x9489('0x6f')],'as':_0x9489('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x9489('0x26')](function(_0x261189){if(_0x261189){for(var _0xef97ff=0x0;_0xef97ff<_0x261189[_0x9489('0x37')];_0xef97ff+=0x1){for(var _0x2806d9=0x0;_0x2806d9<_0x261189[_0xef97ff][_0x9489('0x6c')][_0x9489('0x37')];_0x2806d9+=0x1){_0x43c07a=_[_0x9489('0x6d')](_0x43c07a,[_0x261189[_0xef97ff]['Agents'][_0x2806d9]['id']]);}}return _0x43c07a;}})['then'](function(_0xe99872){if(_0xe99872){return db['FaxQueue'][_0x9489('0x4d')]({'where':{'id':_0x30e5a2[_0x9489('0x4b')]['id']}});}})[_0x9489('0x26')](function(_0x2c481d){if(_0x2c481d){_0x4d0740=_0x2c481d;return _0x4d0740[_0x9489('0x70')](_0x43c07a);}})[_0x9489('0x26')](function(_0x3b1797){if(_0x4d0740){return _0x4d0740[_0x9489('0x6e')](_0x30e5a2[_0x9489('0x2f')]['ids']);}})[_0x9489('0x26')](handleEntityNotFound(_0x1a36c1,null))['then'](respondWithStatusCode(_0x1a36c1,null))[_0x9489('0x49')](handleError(_0x1a36c1,null));};exports['addAgents']=function(_0x4765ca,_0x3d9119,_0x4f077a){return db[_0x9489('0x2c')][_0x9489('0x4d')]({'where':{'id':_0x4765ca[_0x9489('0x4b')]['id']}})[_0x9489('0x26')](handleEntityNotFound(_0x3d9119,null))[_0x9489('0x26')](function(_0x520613){if(_0x520613){return _0x520613[_0x9489('0x71')](_0x4765ca[_0x9489('0x4f')][_0x9489('0x6b')],_['omit'](_0x4765ca['body'],[_0x9489('0x6b'),'id'])||{})[_0x9489('0x72')](function(_0x5d57ea){for(var _0x3d58a5=0x0;_0x3d58a5<_0x4765ca[_0x9489('0x4f')][_0x9489('0x6b')][_0x9489('0x37')];_0x3d58a5+=0x1){socket[_0x9489('0x73')]('userFaxQueue:save',{'UserId':_0x4765ca[_0x9489('0x4f')]['ids'][_0x3d58a5],'FaxQueueId':_0x4765ca[_0x9489('0x4b')]['id']});}return _0x5d57ea;});}})[_0x9489('0x26')](respondWithResult(_0x3d9119,null))[_0x9489('0x49')](handleError(_0x3d9119,null));};exports[_0x9489('0x70')]=function(_0x151f62,_0x3bc5bc,_0x1b1404){var _0x39fe0e;return db[_0x9489('0x2c')][_0x9489('0x4d')]({'where':{'id':_0x151f62[_0x9489('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3bc5bc,null))[_0x9489('0x26')](function(_0x55ef70){if(_0x55ef70){return _0x55ef70[_0x9489('0x70')](_0x151f62[_0x9489('0x2f')][_0x9489('0x6b')])[_0x9489('0x26')](function(_0x113410){if(_[_0x9489('0x74')](_0x151f62['query'][_0x9489('0x6b')])){for(var _0x3cdb5f=0x0;_0x3cdb5f<_0x151f62['query']['ids'][_0x9489('0x37')];_0x3cdb5f+=0x1){socket[_0x9489('0x73')]('userFaxQueue:remove',{'UserId':_0x151f62['query'][_0x9489('0x6b')][_0x3cdb5f],'FaxQueueId':_0x151f62[_0x9489('0x4b')]['id']});}}else{socket[_0x9489('0x73')](_0x9489('0x75'),{'UserId':_0x151f62['query']['ids'],'FaxQueueId':_0x151f62['params']['id']});}});}})[_0x9489('0x26')](respondWithStatusCode(_0x3bc5bc,null))[_0x9489('0x49')](handleError(_0x3bc5bc,null));};exports[_0x9489('0x76')]=function(_0x48318c,_0x144f07,_0x475f7b){var _0x3e0f42={};var _0x2ff46c={};var _0x4c594c;var _0x1b8cd1;return db['FaxQueue'][_0x9489('0x5d')]({'where':{'id':_0x48318c[_0x9489('0x4b')]['id']}})[_0x9489('0x26')](handleEntityNotFound(_0x144f07,null))['then'](function(_0x3eccf7){if(_0x3eccf7){_0x4c594c=_0x3eccf7;_0x2ff46c['model']=_[_0x9489('0x32')](db['User'][_0x9489('0x2d')]);_0x2ff46c['query']=_[_0x9489('0x32')](_0x48318c['query']);_0x2ff46c[_0x9489('0x33')]=_['intersection'](_0x2ff46c[_0x9489('0x2e')],_0x2ff46c['query']);_0x3e0f42['attributes']=_['intersection'](_0x2ff46c['model'],qs[_0x9489('0x36')](_0x48318c[_0x9489('0x2f')][_0x9489('0x36')]));_0x3e0f42[_0x9489('0x35')]=_0x3e0f42[_0x9489('0x35')][_0x9489('0x37')]?_0x3e0f42[_0x9489('0x35')]:_0x2ff46c['model'];_0x3e0f42[_0x9489('0x3a')]=qs[_0x9489('0x3b')](_0x48318c[_0x9489('0x2f')][_0x9489('0x3b')]);_0x3e0f42[_0x9489('0x3c')]=qs[_0x9489('0x33')](_[_0x9489('0x5e')](_0x48318c[_0x9489('0x2f')],_0x2ff46c['filters']));if(_0x48318c[_0x9489('0x2f')]['filter']){_0x3e0f42[_0x9489('0x3c')]=_['merge'](_0x3e0f42[_0x9489('0x3c')],{'$or':_[_0x9489('0x40')](_0x3e0f42[_0x9489('0x35')],function(_0x42891d){var _0x41ab49={};_0x41ab49[_0x42891d]={'$like':'%'+_0x48318c['query'][_0x9489('0x3f')]+'%'};return _0x41ab49;})});}_0x3e0f42=_['merge']({},_0x3e0f42,_0x48318c['options']);return _0x4c594c[_0x9489('0x76')](_0x3e0f42);}})[_0x9489('0x26')](function(_0x99108c){if(_0x99108c){_0x1b8cd1=_0x99108c[_0x9489('0x37')];if(!_0x48318c[_0x9489('0x2f')][_0x9489('0x38')](_0x9489('0x39'))){_0x3e0f42[_0x9489('0x20')]=qs[_0x9489('0x20')](_0x48318c[_0x9489('0x2f')][_0x9489('0x20')]);_0x3e0f42['offset']=qs[_0x9489('0x1f')](_0x48318c[_0x9489('0x2f')]['offset']);}return _0x4c594c['getAgents'](_0x3e0f42);}})['then'](function(_0x15bba0){if(_0x15bba0){return _0x15bba0?{'count':_0x1b8cd1,'rows':_0x15bba0}:null;}})[_0x9489('0x26')](respondWithResult(_0x144f07,null))[_0x9489('0x49')](handleError(_0x144f07,null));};
\ No newline at end of file
+var _0xa30e=['find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserFaxQueue','pick','map','User','UserId','agent','updatedAt','createdAt','format','%s/%s','faxPause','getTeams','Team','ids','Agents','union','penalty','removeTeams','removeAgents','addAgents','omit','spread','emit','userFaxQueue:remove','getAgents','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','status','end','json','count','offset','limit','set','Content-Range','apply','reject','then','get','FaxQueues','UserProfileResource','destroy','sendStatus','stack','name','send','index','FaxQueue','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','day','add','merge','filter','type','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0xa30e,0x117));var _0xea30=function(_0x18aaaf,_0x385db6){_0x18aaaf=_0x18aaaf-0x0;var _0x52d892=_0xa30e[_0x18aaaf];return _0x52d892;};'use strict';var pdf=require(_0xea30('0x0'));var emlformat=require(_0xea30('0x1'));var rimraf=require(_0xea30('0x2'));var zipdir=require(_0xea30('0x3'));var jsonpatch=require(_0xea30('0x4'));var rp=require(_0xea30('0x5'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xea30('0x6'));var path=require(_0xea30('0x7'));var sox=require(_0xea30('0x8'));var csv=require('to-csv');var ejs=require(_0xea30('0x9'));var fs=require('fs');var _=require(_0xea30('0xa'));var squel=require(_0xea30('0xb'));var crypto=require(_0xea30('0xc'));var jsforce=require(_0xea30('0xd'));var deskjs=require(_0xea30('0xe'));var toCsv=require(_0xea30('0xf'));var querystring=require(_0xea30('0x10'));var Papa=require(_0xea30('0x11'));var Redis=require(_0xea30('0x12'));var qs=require(_0xea30('0x13'));var logger=require(_0xea30('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xea30('0x15'));var db=require(_0xea30('0x16'))['db'];config[_0xea30('0x17')]=_[_0xea30('0x18')](config[_0xea30('0x17')],{'host':_0xea30('0x19'),'port':0x18eb});var socket=require(_0xea30('0x1a'))(new Redis(config[_0xea30('0x17')]));require(_0xea30('0x1b'))[_0xea30('0x1c')](socket);function respondWithStatusCode(_0x33eadc,_0x178100){_0x178100=_0x178100||0xcc;return function(_0x3a15fc){if(_0x3a15fc){return _0x33eadc['sendStatus'](_0x178100);}return _0x33eadc[_0xea30('0x1d')](_0x178100)[_0xea30('0x1e')]();};}function respondWithResult(_0x36fbd1,_0x54235a){_0x54235a=_0x54235a||0xc8;return function(_0x27e663){if(_0x27e663){return _0x36fbd1[_0xea30('0x1d')](_0x54235a)[_0xea30('0x1f')](_0x27e663);}};}function respondWithFilteredResult(_0x37498d,_0x3a2824){return function(_0x36212e){if(_0x36212e){var _0x3951f8=_0x36212e[_0xea30('0x20')],_0x598d66=_0x3a2824[_0xea30('0x21')],_0xb37dc8=_0x3a2824[_0xea30('0x21')]+_0x3a2824[_0xea30('0x22')],_0x2e7504;if(_0xb37dc8>=_0x3951f8){_0xb37dc8=_0x3951f8;_0x2e7504=0xc8;}else{_0x2e7504=0xce;}_0x37498d['status'](_0x2e7504);return _0x37498d[_0xea30('0x23')](_0xea30('0x24'),_0x598d66+'-'+_0xb37dc8+'/'+_0x3951f8)[_0xea30('0x1f')](_0x36212e);}return null;};}function patchUpdates(_0x475147){return function(_0x3f9568){try{jsonpatch[_0xea30('0x25')](_0x3f9568,_0x475147,!![]);}catch(_0x21dd56){return BPromise[_0xea30('0x26')](_0x21dd56);}return _0x3f9568['save']();};}function saveUpdates(_0x1f6378,_0x4b63cf){return function(_0x54d817){if(_0x54d817){return _0x54d817['update'](_0x1f6378)[_0xea30('0x27')](function(_0x238e49){return _0x238e49;});}return null;};}function removeEntity(_0x45835b,_0x4345e0){return function(_0x23fc0f){if(_0x23fc0f){return _0x23fc0f['destroy']()[_0xea30('0x27')](function(){var _0xf974=_0x23fc0f[_0xea30('0x28')]({'plain':!![]});var _0x2b7805=_0xea30('0x29');return db[_0xea30('0x2a')][_0xea30('0x2b')]({'where':{'type':_0x2b7805,'resourceId':_0xf974['id']}})['then'](function(){return _0x23fc0f;});})['then'](function(){_0x45835b[_0xea30('0x1d')](0xcc)[_0xea30('0x1e')]();});}};}function handleEntityNotFound(_0xdf66f0,_0x4e02df){return function(_0x203554){if(!_0x203554){_0xdf66f0[_0xea30('0x2c')](0x194);}return _0x203554;};}function handleError(_0x2b5b4c,_0x123402){_0x123402=_0x123402||0x1f4;return function(_0x4a256e){logger['error'](_0x4a256e[_0xea30('0x2d')]);if(_0x4a256e[_0xea30('0x2e')]){delete _0x4a256e[_0xea30('0x2e')];}_0x2b5b4c[_0xea30('0x1d')](_0x123402)[_0xea30('0x2f')](_0x4a256e);};}exports[_0xea30('0x30')]=function(_0x57d9bd,_0x321517){var _0xdcf47e={},_0x35292c={},_0x2e957a={'count':0x0,'rows':[]};var _0x43de29=db[_0xea30('0x31')][_0xea30('0x32')];_0x35292c[_0xea30('0x33')]=_[_0xea30('0x34')](_0x43de29);var _0x5b6ba9={'dateStart':_0x57d9bd['query'][_0xea30('0x35')],'dateEnd':_0x57d9bd[_0xea30('0x36')]['dateEnd']};delete _0x57d9bd['query'][_0xea30('0x35')];delete _0x57d9bd[_0xea30('0x36')][_0xea30('0x37')];_0x35292c[_0xea30('0x36')]=_[_0xea30('0x34')](_0x57d9bd['query']);_0x35292c[_0xea30('0x38')]=_[_0xea30('0x39')](_0x35292c[_0xea30('0x33')],_0x35292c[_0xea30('0x36')]);_0xdcf47e[_0xea30('0x3a')]=_['intersection'](_0x35292c['model'],qs[_0xea30('0x3b')](_0x57d9bd[_0xea30('0x36')][_0xea30('0x3b')]));_0xdcf47e[_0xea30('0x3a')]=_0xdcf47e[_0xea30('0x3a')][_0xea30('0x3c')]?_0xdcf47e[_0xea30('0x3a')]:_0x35292c[_0xea30('0x33')];if(!_0x57d9bd[_0xea30('0x36')][_0xea30('0x3d')](_0xea30('0x3e'))){_0xdcf47e[_0xea30('0x22')]=qs['limit'](_0x57d9bd[_0xea30('0x36')][_0xea30('0x22')]);_0xdcf47e[_0xea30('0x21')]=qs['offset'](_0x57d9bd['query'][_0xea30('0x21')]);}_0xdcf47e[_0xea30('0x3f')]=qs[_0xea30('0x40')](_0x57d9bd[_0xea30('0x36')][_0xea30('0x40')]);_0xdcf47e[_0xea30('0x41')]=qs['filters'](_['pick'](_0x57d9bd[_0xea30('0x36')],_0x35292c[_0xea30('0x38')]));if(_0x5b6ba9['dateStart']){if(_0x5b6ba9[_0xea30('0x37')]){_0x5b6ba9[_0xea30('0x37')]=moment(_0x5b6ba9[_0xea30('0x37')])['add'](0x1,_0xea30('0x42'));}else{_0x5b6ba9[_0xea30('0x37')]=moment(_0x5b6ba9[_0xea30('0x35')])[_0xea30('0x43')](0x1,_0xea30('0x42'));}_[_0xea30('0x44')](_0xdcf47e[_0xea30('0x41')],{'createdAt':{'$gte':_0x5b6ba9[_0xea30('0x35')],'$lte':_0x5b6ba9['dateEnd']}});}if(_0x57d9bd[_0xea30('0x36')][_0xea30('0x45')]){_0xdcf47e[_0xea30('0x41')]=_[_0xea30('0x44')](_0xdcf47e['where'],{'$or':_['map'](_0x43de29,function(_0x413b31){if(_0x413b31[_0xea30('0x46')]['key']!==_0xea30('0x47')){var _0x23f6d3={};_0x23f6d3[_0x413b31[_0xea30('0x48')]]={'$like':'%'+_0x57d9bd[_0xea30('0x36')][_0xea30('0x45')]+'%'};return _0x23f6d3;}})});}_0xdcf47e=_[_0xea30('0x44')]({},_0xdcf47e,_0x57d9bd[_0xea30('0x49')]);var _0x11bde9={'where':_0xdcf47e[_0xea30('0x41')]};return db['FaxQueue']['count'](_0x11bde9)[_0xea30('0x27')](function(_0x3e058c){_0x2e957a['count']=_0x3e058c;if(_0x57d9bd[_0xea30('0x36')][_0xea30('0x4a')]){_0xdcf47e[_0xea30('0x4b')]=[{'all':!![]}];}return db[_0xea30('0x31')][_0xea30('0x4c')](_0xdcf47e);})[_0xea30('0x27')](function(_0x34ae60){_0x2e957a[_0xea30('0x4d')]=_0x34ae60;return _0x2e957a;})[_0xea30('0x27')](respondWithFilteredResult(_0x321517,_0xdcf47e))[_0xea30('0x4e')](handleError(_0x321517,null));};exports[_0xea30('0x4f')]=function(_0x3f93c5,_0x1399fc){var _0x40bdef={'raw':!![],'where':{'id':_0x3f93c5[_0xea30('0x50')]['id']}},_0x55a3f7={};_0x55a3f7['model']=_['keys'](db[_0xea30('0x31')]['rawAttributes']);_0x55a3f7['query']=_[_0xea30('0x34')](_0x3f93c5['query']);_0x55a3f7[_0xea30('0x38')]=_[_0xea30('0x39')](_0x55a3f7[_0xea30('0x33')],_0x55a3f7[_0xea30('0x36')]);_0x40bdef['attributes']=_[_0xea30('0x39')](_0x55a3f7[_0xea30('0x33')],qs[_0xea30('0x3b')](_0x3f93c5[_0xea30('0x36')][_0xea30('0x3b')]));_0x40bdef[_0xea30('0x3a')]=_0x40bdef[_0xea30('0x3a')][_0xea30('0x3c')]?_0x40bdef[_0xea30('0x3a')]:_0x55a3f7[_0xea30('0x33')];if(_0x3f93c5[_0xea30('0x36')][_0xea30('0x4a')]){_0x40bdef['include']=[{'all':!![]}];}_0x40bdef=_['merge']({},_0x40bdef,_0x3f93c5[_0xea30('0x49')]);return db[_0xea30('0x31')][_0xea30('0x51')](_0x40bdef)['then'](handleEntityNotFound(_0x1399fc,null))[_0xea30('0x27')](respondWithResult(_0x1399fc,null))[_0xea30('0x4e')](handleError(_0x1399fc,null));};exports[_0xea30('0x52')]=function(_0x2111bf,_0x39b75f){return db[_0xea30('0x31')][_0xea30('0x52')](_0x2111bf[_0xea30('0x53')],{})[_0xea30('0x27')](function(_0x9780b6){var _0x519b20=_0x2111bf[_0xea30('0x54')]['get']({'plain':!![]});if(!_0x519b20)throw new Error(_0xea30('0x55'));if(_0x519b20[_0xea30('0x56')]==='user'){var _0x20dce6=_0x9780b6[_0xea30('0x28')]({'plain':!![]});var _0x377da4='FaxQueues';return db[_0xea30('0x57')][_0xea30('0x51')]({'where':{'name':_0x377da4,'userProfileId':_0x519b20['userProfileId']},'raw':!![]})[_0xea30('0x27')](function(_0x2a4bfb){if(_0x2a4bfb&&_0x2a4bfb[_0xea30('0x58')]===0x0){return db[_0xea30('0x2a')]['create']({'name':_0x20dce6[_0xea30('0x2e')],'resourceId':_0x20dce6['id'],'type':_0x2a4bfb[_0xea30('0x2e')],'sectionId':_0x2a4bfb['id']},{})['then'](function(){return _0x9780b6;});}else{return _0x9780b6;}})['catch'](function(_0x5db7a3){logger[_0xea30('0x59')](_0xea30('0x5a'),_0x5db7a3);throw _0x5db7a3;});}return _0x9780b6;})['then'](respondWithResult(_0x39b75f,0xc9))[_0xea30('0x4e')](handleError(_0x39b75f,null));};exports[_0xea30('0x5b')]=function(_0x303513,_0x523248){if(_0x303513[_0xea30('0x53')]['id']){delete _0x303513[_0xea30('0x53')]['id'];}return db[_0xea30('0x31')][_0xea30('0x51')]({'where':{'id':_0x303513['params']['id']}})['then'](handleEntityNotFound(_0x523248,null))[_0xea30('0x27')](saveUpdates(_0x303513['body'],null))[_0xea30('0x27')](respondWithResult(_0x523248,null))[_0xea30('0x4e')](handleError(_0x523248,null));};exports['destroy']=function(_0x9fdc7e,_0x32e5bb){return db[_0xea30('0x31')]['find']({'where':{'id':_0x9fdc7e[_0xea30('0x50')]['id']}})[_0xea30('0x27')](handleEntityNotFound(_0x32e5bb,null))[_0xea30('0x27')](removeEntity(_0x32e5bb,null))[_0xea30('0x4e')](handleError(_0x32e5bb,null));};exports[_0xea30('0x5c')]=function(_0x5e17d7,_0x3af7bd){return db['FaxQueue'][_0xea30('0x5c')]()[_0xea30('0x27')](respondWithResult(_0x3af7bd,null))['catch'](handleError(_0x3af7bd,null));};exports[_0xea30('0x5d')]=function(_0x34d625,_0x19485e,_0x4ea130){var _0x474180={'raw':!![],'where':{}},_0x1fc9e9={},_0x149e53;return db[_0xea30('0x31')][_0xea30('0x5e')]({'where':{'id':_0x34d625['params']['id']}})[_0xea30('0x27')](handleEntityNotFound(_0x19485e,null))[_0xea30('0x27')](function(_0xe72409){if(_0xe72409){_0x149e53=_0xe72409[_0xea30('0x28')]({'plain':!![]});_0x1fc9e9[_0xea30('0x33')]=_[_0xea30('0x34')](db[_0xea30('0x5f')][_0xea30('0x32')]);_0x1fc9e9[_0xea30('0x36')]=_[_0xea30('0x34')](_0x34d625[_0xea30('0x36')]);_0x1fc9e9[_0xea30('0x38')]=_[_0xea30('0x39')](_0x1fc9e9['model'],_0x1fc9e9[_0xea30('0x36')]);_0x474180[_0xea30('0x3a')]=_[_0xea30('0x39')](_0x1fc9e9[_0xea30('0x33')],qs['fields'](_0x34d625[_0xea30('0x36')]['fields']));_0x474180[_0xea30('0x3a')]=_0x474180[_0xea30('0x3a')][_0xea30('0x3c')]?_0x474180[_0xea30('0x3a')]:_0x1fc9e9['model'];if(!_0x34d625[_0xea30('0x36')][_0xea30('0x3d')](_0xea30('0x3e'))){_0x474180['limit']=qs['limit'](_0x34d625[_0xea30('0x36')]['limit']);_0x474180[_0xea30('0x21')]=qs[_0xea30('0x21')](_0x34d625[_0xea30('0x36')][_0xea30('0x21')]);}_0x474180[_0xea30('0x3f')]=qs['sort'](_0x34d625[_0xea30('0x36')][_0xea30('0x40')]);_0x474180[_0xea30('0x41')]=qs[_0xea30('0x38')](_[_0xea30('0x60')](_0x34d625['query'],_0x1fc9e9['filters']));_0x474180[_0xea30('0x41')]['FaxQueueId']=_0xe72409['id'];if(_0x34d625['query'][_0xea30('0x45')]){_0x474180[_0xea30('0x41')]=_[_0xea30('0x44')](_0x474180[_0xea30('0x41')],{'$or':_[_0xea30('0x61')](_0x474180['attributes'],function(_0x40e1c7){var _0x5f06f0={};_0x5f06f0[_0x40e1c7]={'$like':'%'+_0x34d625[_0xea30('0x36')][_0xea30('0x45')]+'%'};return _0x5f06f0;})});}_0x474180=_[_0xea30('0x44')]({},_0x474180,_0x34d625[_0xea30('0x49')]);return db[_0xea30('0x5f')][_0xea30('0x4c')](_0x474180);}})[_0xea30('0x27')](function(_0x41a776){if(_0x41a776){return db[_0xea30('0x62')]['findAndCountAll']({'where':{'id':_[_0xea30('0x61')](_0x41a776,_0xea30('0x63')),'role':_0xea30('0x64')},'attributes':['id','name','faxPause',_0xea30('0x65'),_0xea30('0x66')]});}})['then'](function(_0x51d1e5){if(_0x51d1e5){return{'count':_0x51d1e5[_0xea30('0x20')],'rows':_[_0xea30('0x61')](_0x51d1e5[_0xea30('0x4d')],function(_0x4b3851){return{'membername':_0x4b3851['name'],'UserId':_0x4b3851['id'],'queue_name':_0x149e53[_0xea30('0x2e')],'FaxQueueId':_0x149e53['id'],'interface':util[_0xea30('0x67')](_0xea30('0x68'),'SIP',_0x4b3851['name']),'penalty':0x0,'paused':_0x4b3851[_0xea30('0x69')],'createdAt':_0x4b3851['createdAt'],'updatedAt':_0x4b3851[_0xea30('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x19485e,_0x474180))[_0xea30('0x4e')](handleError(_0x19485e,null));};exports[_0xea30('0x6a')]=function(_0x993968,_0x1a0a1e,_0x13f0de){var _0x26c776={};var _0x3cf9c6={};var _0x53a3e6;var _0x2ed457;return db[_0xea30('0x31')]['findOne']({'where':{'id':_0x993968[_0xea30('0x50')]['id']}})[_0xea30('0x27')](handleEntityNotFound(_0x1a0a1e,null))[_0xea30('0x27')](function(_0x980942){if(_0x980942){_0x53a3e6=_0x980942;_0x3cf9c6[_0xea30('0x33')]=_[_0xea30('0x34')](db[_0xea30('0x6b')]['rawAttributes']);_0x3cf9c6[_0xea30('0x36')]=_[_0xea30('0x34')](_0x993968[_0xea30('0x36')]);_0x3cf9c6[_0xea30('0x38')]=_[_0xea30('0x39')](_0x3cf9c6[_0xea30('0x33')],_0x3cf9c6[_0xea30('0x36')]);_0x26c776[_0xea30('0x3a')]=_[_0xea30('0x39')](_0x3cf9c6[_0xea30('0x33')],qs['fields'](_0x993968['query']['fields']));_0x26c776[_0xea30('0x3a')]=_0x26c776['attributes']['length']?_0x26c776[_0xea30('0x3a')]:_0x3cf9c6[_0xea30('0x33')];_0x26c776[_0xea30('0x3f')]=qs['sort'](_0x993968[_0xea30('0x36')][_0xea30('0x40')]);_0x26c776[_0xea30('0x41')]=qs[_0xea30('0x38')](_[_0xea30('0x60')](_0x993968['query'],_0x3cf9c6[_0xea30('0x38')]));if(_0x993968[_0xea30('0x36')][_0xea30('0x45')]){_0x26c776[_0xea30('0x41')]=_['merge'](_0x26c776['where'],{'$or':_[_0xea30('0x61')](_0x26c776['attributes'],function(_0x2aa77c){var _0x51ea27={};_0x51ea27[_0x2aa77c]={'$like':'%'+_0x993968[_0xea30('0x36')][_0xea30('0x45')]+'%'};return _0x51ea27;})});}_0x26c776=_[_0xea30('0x44')]({},_0x26c776,_0x993968[_0xea30('0x49')]);return _0x53a3e6['getTeams'](_0x26c776);}})['then'](function(_0x158343){if(_0x158343){_0x2ed457=_0x158343[_0xea30('0x3c')];if(!_0x993968[_0xea30('0x36')][_0xea30('0x3d')]('nolimit')){_0x26c776[_0xea30('0x22')]=qs[_0xea30('0x22')](_0x993968[_0xea30('0x36')][_0xea30('0x22')]);_0x26c776[_0xea30('0x21')]=qs[_0xea30('0x21')](_0x993968[_0xea30('0x36')][_0xea30('0x21')]);}return _0x53a3e6[_0xea30('0x6a')](_0x26c776);}})['then'](function(_0x11180a){if(_0x11180a){return _0x11180a?{'count':_0x2ed457,'rows':_0x11180a}:null;}})[_0xea30('0x27')](respondWithResult(_0x1a0a1e,null))['catch'](handleError(_0x1a0a1e,null));};exports['addTeams']=function(_0x4c4973,_0x181683,_0xc79d4c){var _0x21dedf=[];var _0x24c27a;return db[_0xea30('0x6b')]['findAll']({'where':{'id':_0x4c4973[_0xea30('0x53')][_0xea30('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xea30('0x62')],'as':_0xea30('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xea30('0x27')](function(_0x2f0e25){if(_0x2f0e25){for(var _0x21661e=0x0;_0x21661e<_0x2f0e25[_0xea30('0x3c')];_0x21661e+=0x1){for(var _0x7b8d3d=0x0;_0x7b8d3d<_0x2f0e25[_0x21661e][_0xea30('0x6d')][_0xea30('0x3c')];_0x7b8d3d+=0x1){_0x21dedf=_[_0xea30('0x6e')](_0x21dedf,[_0x2f0e25[_0x21661e][_0xea30('0x6d')][_0x7b8d3d]['id']]);}}return _0x21dedf;}})[_0xea30('0x27')](function(_0xc4a0c1){if(_0xc4a0c1){return db[_0xea30('0x31')]['find']({'where':{'id':_0x4c4973['params']['id']}});}})['then'](function(_0x2c6258){if(_0x2c6258){_0x24c27a=_0x2c6258;return _0x24c27a['addAgents'](_0x21dedf,{'penalty':_0x4c4973[_0xea30('0x53')][_0xea30('0x6f')]});}})[_0xea30('0x27')](function(_0x276d5b){if(_0x276d5b){return _0x24c27a['addTeams'](_0x4c4973[_0xea30('0x53')][_0xea30('0x6c')]);}})[_0xea30('0x27')](handleEntityNotFound(_0x181683,null))[_0xea30('0x27')](respondWithStatusCode(_0x181683,null))[_0xea30('0x4e')](handleError(_0x181683,null));};exports[_0xea30('0x70')]=function(_0x2c679e,_0x415817,_0x45c21a){var _0x13c60b=[];var _0x1ee471;return db[_0xea30('0x6b')]['findAll']({'where':{'id':_0x2c679e[_0xea30('0x36')][_0xea30('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xea30('0x62')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xea30('0x27')](function(_0x106b77){if(_0x106b77){for(var _0xa4f99f=0x0;_0xa4f99f<_0x106b77[_0xea30('0x3c')];_0xa4f99f+=0x1){for(var _0x211f25=0x0;_0x211f25<_0x106b77[_0xa4f99f][_0xea30('0x6d')]['length'];_0x211f25+=0x1){_0x13c60b=_[_0xea30('0x6e')](_0x13c60b,[_0x106b77[_0xa4f99f]['Agents'][_0x211f25]['id']]);}}return _0x13c60b;}})[_0xea30('0x27')](function(_0x1cb3df){if(_0x1cb3df){return db[_0xea30('0x31')]['find']({'where':{'id':_0x2c679e[_0xea30('0x50')]['id']}});}})['then'](function(_0x3825cd){if(_0x3825cd){_0x1ee471=_0x3825cd;return _0x1ee471[_0xea30('0x71')](_0x13c60b);}})[_0xea30('0x27')](function(_0x33cd1e){if(_0x1ee471){return _0x1ee471[_0xea30('0x70')](_0x2c679e[_0xea30('0x36')]['ids']);}})['then'](handleEntityNotFound(_0x415817,null))['then'](respondWithStatusCode(_0x415817,null))[_0xea30('0x4e')](handleError(_0x415817,null));};exports[_0xea30('0x72')]=function(_0x180c70,_0x4cd72f,_0x1f20a6){return db[_0xea30('0x31')][_0xea30('0x51')]({'where':{'id':_0x180c70[_0xea30('0x50')]['id']}})['then'](handleEntityNotFound(_0x4cd72f,null))[_0xea30('0x27')](function(_0x42e423){if(_0x42e423){return _0x42e423['addAgents'](_0x180c70[_0xea30('0x53')][_0xea30('0x6c')],_[_0xea30('0x73')](_0x180c70['body'],[_0xea30('0x6c'),'id'])||{})[_0xea30('0x74')](function(_0x4046ee){for(var _0x51aa75=0x0;_0x51aa75<_0x180c70[_0xea30('0x53')][_0xea30('0x6c')][_0xea30('0x3c')];_0x51aa75+=0x1){socket['emit']('userFaxQueue:save',{'UserId':_0x180c70[_0xea30('0x53')]['ids'][_0x51aa75],'FaxQueueId':_0x180c70['params']['id']});}return _0x4046ee;});}})[_0xea30('0x27')](respondWithResult(_0x4cd72f,null))['catch'](handleError(_0x4cd72f,null));};exports['removeAgents']=function(_0xba517f,_0x1ed192,_0x280f4c){var _0x372a1a;return db[_0xea30('0x31')]['find']({'where':{'id':_0xba517f[_0xea30('0x50')]['id']}})[_0xea30('0x27')](handleEntityNotFound(_0x1ed192,null))[_0xea30('0x27')](function(_0x2cb828){if(_0x2cb828){return _0x2cb828['removeAgents'](_0xba517f[_0xea30('0x36')]['ids'])[_0xea30('0x27')](function(_0x23a939){if(_['isArray'](_0xba517f[_0xea30('0x36')][_0xea30('0x6c')])){for(var _0x4e1d48=0x0;_0x4e1d48<_0xba517f[_0xea30('0x36')][_0xea30('0x6c')]['length'];_0x4e1d48+=0x1){socket[_0xea30('0x75')](_0xea30('0x76'),{'UserId':_0xba517f[_0xea30('0x36')][_0xea30('0x6c')][_0x4e1d48],'FaxQueueId':_0xba517f[_0xea30('0x50')]['id']});}}else{socket[_0xea30('0x75')](_0xea30('0x76'),{'UserId':_0xba517f[_0xea30('0x36')][_0xea30('0x6c')],'FaxQueueId':_0xba517f[_0xea30('0x50')]['id']});}});}})['then'](respondWithStatusCode(_0x1ed192,null))['catch'](handleError(_0x1ed192,null));};exports['getAgents']=function(_0x51b1fc,_0x5ad356,_0x1bca81){var _0xb8af39={};var _0x5d07bf={};var _0x3d46ef;var _0x1d60b8;return db[_0xea30('0x31')][_0xea30('0x5e')]({'where':{'id':_0x51b1fc['params']['id']}})[_0xea30('0x27')](handleEntityNotFound(_0x5ad356,null))['then'](function(_0x5b691c){if(_0x5b691c){_0x3d46ef=_0x5b691c;_0x5d07bf[_0xea30('0x33')]=_[_0xea30('0x34')](db[_0xea30('0x62')][_0xea30('0x32')]);_0x5d07bf[_0xea30('0x36')]=_[_0xea30('0x34')](_0x51b1fc[_0xea30('0x36')]);_0x5d07bf[_0xea30('0x38')]=_[_0xea30('0x39')](_0x5d07bf[_0xea30('0x33')],_0x5d07bf[_0xea30('0x36')]);_0xb8af39[_0xea30('0x3a')]=_[_0xea30('0x39')](_0x5d07bf[_0xea30('0x33')],qs['fields'](_0x51b1fc[_0xea30('0x36')]['fields']));_0xb8af39['attributes']=_0xb8af39[_0xea30('0x3a')]['length']?_0xb8af39['attributes']:_0x5d07bf[_0xea30('0x33')];_0xb8af39[_0xea30('0x3f')]=qs['sort'](_0x51b1fc[_0xea30('0x36')][_0xea30('0x40')]);_0xb8af39[_0xea30('0x41')]=qs[_0xea30('0x38')](_[_0xea30('0x60')](_0x51b1fc[_0xea30('0x36')],_0x5d07bf[_0xea30('0x38')]));if(_0x51b1fc[_0xea30('0x36')][_0xea30('0x45')]){_0xb8af39[_0xea30('0x41')]=_[_0xea30('0x44')](_0xb8af39['where'],{'$or':_['map'](_0xb8af39[_0xea30('0x3a')],function(_0x12d069){var _0x47ce97={};_0x47ce97[_0x12d069]={'$like':'%'+_0x51b1fc['query'][_0xea30('0x45')]+'%'};return _0x47ce97;})});}_0xb8af39=_[_0xea30('0x44')]({},_0xb8af39,_0x51b1fc[_0xea30('0x49')]);return _0x3d46ef[_0xea30('0x77')](_0xb8af39);}})[_0xea30('0x27')](function(_0x556f89){if(_0x556f89){_0x1d60b8=_0x556f89[_0xea30('0x3c')];if(!_0x51b1fc[_0xea30('0x36')][_0xea30('0x3d')](_0xea30('0x3e'))){_0xb8af39[_0xea30('0x22')]=qs[_0xea30('0x22')](_0x51b1fc['query'][_0xea30('0x22')]);_0xb8af39['offset']=qs['offset'](_0x51b1fc[_0xea30('0x36')]['offset']);}return _0x3d46ef[_0xea30('0x77')](_0xb8af39);}})['then'](function(_0x34ffe5){if(_0x34ffe5){return _0x34ffe5?{'count':_0x1d60b8,'rows':_0x34ffe5}:null;}})[_0xea30('0x27')](respondWithResult(_0x5ad356,null))[_0xea30('0x4e')](handleError(_0x5ad356,null));};
\ No newline at end of file
index 1d97c5c..210bb11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb8=['FaxQueue','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x4a0dd8,_0x420d6b){var _0x101dcc=function(_0x12395e){while(--_0x12395e){_0x4a0dd8['push'](_0x4a0dd8['shift']());}};_0x101dcc(++_0x420d6b);}(_0xadb8,0x1d0));var _0x8adb=function(_0x1190c2,_0x2c078b){_0x1190c2=_0x1190c2-0x0;var _0x6ec988=_0xadb8[_0x1190c2];return _0x6ec988;};'use strict';var EventEmitter=require('events');var FaxQueue=require('../../mysqldb')['db'][_0x8adb('0x0')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8adb('0x1'),'afterUpdate':_0x8adb('0x2'),'afterDestroy':_0x8adb('0x3')};function emitEvent(_0x1bf88c){return function(_0x44fdf7,_0x2baedb,_0x42a86f){FaxQueueEvents['emit'](_0x1bf88c+':'+_0x44fdf7['id'],_0x44fdf7);FaxQueueEvents[_0x8adb('0x4')](_0x1bf88c,_0x44fdf7);_0x42a86f(null);};}for(var e in events){if(events[_0x8adb('0x5')](e)){var event=events[e];FaxQueue[_0x8adb('0x6')](e,emitEvent(event));}}module[_0x8adb('0x7')]=FaxQueueEvents;
\ No newline at end of file
+var _0xd2ea=['events','../../mysqldb','FaxQueue','setMaxListeners','save','remove','emit','hook','exports'];(function(_0x49b1e3,_0x52e77b){var _0x4aa95b=function(_0x35026d){while(--_0x35026d){_0x49b1e3['push'](_0x49b1e3['shift']());}};_0x4aa95b(++_0x52e77b);}(_0xd2ea,0x15f));var _0xad2e=function(_0x15c5b8,_0x3b670f){_0x15c5b8=_0x15c5b8-0x0;var _0xd45fe6=_0xd2ea[_0x15c5b8];return _0xd45fe6;};'use strict';var EventEmitter=require(_0xad2e('0x0'));var FaxQueue=require(_0xad2e('0x1'))['db'][_0xad2e('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xad2e('0x3')](0x0);var events={'afterCreate':_0xad2e('0x4'),'afterUpdate':'update','afterDestroy':_0xad2e('0x5')};function emitEvent(_0x46a911){return function(_0xcba7cb,_0x3e0741,_0x2afdc4){FaxQueueEvents[_0xad2e('0x6')](_0x46a911+':'+_0xcba7cb['id'],_0xcba7cb);FaxQueueEvents[_0xad2e('0x6')](_0x46a911,_0xcba7cb);_0x2afdc4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0xad2e('0x7')](e,emitEvent(event));}}module[_0xad2e('0x8')]=FaxQueueEvents;
\ No newline at end of file
index afb4821..ee00b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff8=['FaxQueue','lodash','api','moment','bluebird','request-promise','./faxQueue.attributes','exports','define'];(function(_0x2d8357,_0x463fa4){var _0x442fc9=function(_0x519692){while(--_0x519692){_0x2d8357['push'](_0x2d8357['shift']());}};_0x442fc9(++_0x463fa4);}(_0xbff8,0xac));var _0x8bff=function(_0x21cd76,_0x4ba9f4){_0x21cd76=_0x21cd76-0x0;var _0x472c49=_0xbff8[_0x21cd76];return _0x472c49;};'use strict';var _=require(_0x8bff('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8bff('0x1'));var moment=require(_0x8bff('0x2'));var BPromise=require(_0x8bff('0x3'));var rp=require(_0x8bff('0x4'));var attributes=require(_0x8bff('0x5'));module[_0x8bff('0x6')]=function(_0x2796b9,_0x10a711){return _0x2796b9[_0x8bff('0x7')](_0x8bff('0x8'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf30e=['FaxQueue','fax_queues','lodash','util','api','moment','bluebird','request-promise','./faxQueue.attributes','define'];(function(_0x54f56c,_0x5ca2a6){var _0x3efaec=function(_0x2ab434){while(--_0x2ab434){_0x54f56c['push'](_0x54f56c['shift']());}};_0x3efaec(++_0x5ca2a6);}(_0xf30e,0xc0));var _0xef30=function(_0x5959c9,_0x2ed153){_0x5959c9=_0x5959c9-0x0;var _0x4ffcbc=_0xf30e[_0x5959c9];return _0x4ffcbc;};'use strict';var _=require(_0xef30('0x0'));var util=require(_0xef30('0x1'));var logger=require('../../config/logger')(_0xef30('0x2'));var moment=require(_0xef30('0x3'));var BPromise=require(_0xef30('0x4'));var rp=require(_0xef30('0x5'));var attributes=require(_0xef30('0x6'));module['exports']=function(_0x35f841,_0x29ba25){return _0x35f841[_0xef30('0x7')](_0xef30('0x8'),attributes,{'tableName':_0xef30('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1b6f46c..4d9ded5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1a=['map','model','debug','catch','ShowFaxQueue','find','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','include'];(function(_0x448bab,_0x25517b){var _0x5dc534=function(_0x2196ba){while(--_0x2196ba){_0x448bab['push'](_0x448bab['shift']());}};_0x5dc534(++_0x25517b);}(_0xbf1a,0xd3));var _0xabf1=function(_0x2348fd,_0x50273a){_0x2348fd=_0x2348fd-0x0;var _0x25dc5d=_0xbf1a[_0x2348fd];return _0x25dc5d;};'use strict';var _=require('lodash');var util=require(_0xabf1('0x0'));var moment=require(_0xabf1('0x1'));var BPromise=require('bluebird');var rs=require(_0xabf1('0x2'));var fs=require('fs');var Redis=require(_0xabf1('0x3'));var db=require(_0xabf1('0x4'))['db'];var utils=require(_0xabf1('0x5'));var logger=require('../../config/logger')(_0xabf1('0x6'));var config=require(_0xabf1('0x7'));var jayson=require(_0xabf1('0x8'));var client=jayson[_0xabf1('0x9')][_0xabf1('0xa')]({'port':0x232a});config['redis']=_[_0xabf1('0xb')](config[_0xabf1('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xabf1('0xd'))(new Redis(config['redis']));require(_0xabf1('0xe'))[_0xabf1('0xf')](socket);function respondWithRpcPromise(_0x59c5cc,_0x187602,_0x53466f){return new BPromise(function(_0x12f804,_0x190acb){return client[_0xabf1('0x10')](_0x59c5cc,_0x53466f)[_0xabf1('0x11')](function(_0xf098ec){logger[_0xabf1('0x12')](_0xabf1('0x13'),_0x187602,_0xabf1('0x14'));logger['debug'](_0xabf1('0x15'),_0x187602,'request\x20sent',JSON[_0xabf1('0x16')](_0xf098ec));if(_0xf098ec[_0xabf1('0x17')]){if(_0xf098ec[_0xabf1('0x17')][_0xabf1('0x18')]===0x1f4){logger[_0xabf1('0x17')](_0xabf1('0x13'),_0x187602,_0xf098ec[_0xabf1('0x17')]['message']);return _0x190acb(_0xf098ec[_0xabf1('0x17')][_0xabf1('0x19')]);}logger[_0xabf1('0x17')]('FaxQueue,\x20%s,\x20%s',_0x187602,_0xf098ec[_0xabf1('0x17')]['message']);return _0x12f804(_0xf098ec['error'][_0xabf1('0x19')]);}else{logger[_0xabf1('0x12')]('FaxQueue,\x20%s,\x20%s',_0x187602,_0xabf1('0x14'));_0x12f804(_0xf098ec[_0xabf1('0x1a')]['message']);}})['catch'](function(_0x2a0086){logger['error']('FaxQueue,\x20%s,\x20%s',_0x187602,_0x2a0086);_0x190acb(_0x2a0086);});});}exports[_0xabf1('0x1b')]=function(_0x17a4a8){var _0x266b6a=this;return new Promise(function(_0x4bdce7,_0xf0b9b2){return db[_0xabf1('0x1c')][_0xabf1('0x1d')]({'raw':_0x17a4a8['options']?_0x17a4a8[_0xabf1('0x1e')][_0xabf1('0x1f')]===undefined?!![]:![]:!![],'where':_0x17a4a8['options']?_0x17a4a8[_0xabf1('0x1e')][_0xabf1('0x20')]||null:null,'attributes':_0x17a4a8['options']?_0x17a4a8[_0xabf1('0x1e')][_0xabf1('0x21')]||null:null,'limit':_0x17a4a8[_0xabf1('0x1e')]?_0x17a4a8[_0xabf1('0x1e')]['limit']||null:null,'include':_0x17a4a8[_0xabf1('0x1e')]?_0x17a4a8[_0xabf1('0x1e')][_0xabf1('0x22')]?_[_0xabf1('0x23')](_0x17a4a8[_0xabf1('0x1e')][_0xabf1('0x22')],function(_0x2ca352){return{'model':db[_0x2ca352[_0xabf1('0x24')]],'as':_0x2ca352['as'],'attributes':_0x2ca352[_0xabf1('0x21')],'include':_0x2ca352[_0xabf1('0x22')]?_['map'](_0x2ca352['include'],function(_0x2f3c76){return{'model':db[_0x2f3c76[_0xabf1('0x24')]],'as':_0x2f3c76['as'],'attributes':_0x2f3c76[_0xabf1('0x21')],'include':_0x2f3c76['include']?_[_0xabf1('0x23')](_0x2f3c76['include'],function(_0x18cf05){return{'model':db[_0x18cf05[_0xabf1('0x24')]],'as':_0x18cf05['as'],'attributes':_0x18cf05[_0xabf1('0x21')]};}):[]};}):[]};}):[]:[]})[_0xabf1('0x11')](function(_0x3cdbd8){logger[_0xabf1('0x12')](_0xabf1('0x1b'),_0x17a4a8);logger[_0xabf1('0x25')](_0xabf1('0x1b'),_0x17a4a8,JSON[_0xabf1('0x16')](_0x3cdbd8));_0x4bdce7(_0x3cdbd8);})[_0xabf1('0x26')](function(_0x186a9d){logger['error'](_0xabf1('0x1b'),_0x186a9d[_0xabf1('0x19')],_0x17a4a8);_0xf0b9b2(_0x266b6a[_0xabf1('0x17')](0x1f4,_0x186a9d[_0xabf1('0x19')]));});});};exports[_0xabf1('0x27')]=function(_0x1018e9){var _0x297377=this;return new Promise(function(_0x5e3775,_0xc09d18){return db[_0xabf1('0x1c')][_0xabf1('0x28')]({'raw':_0x1018e9[_0xabf1('0x1e')]?_0x1018e9[_0xabf1('0x1e')][_0xabf1('0x1f')]===undefined?!![]:![]:!![],'where':_0x1018e9['options']?_0x1018e9[_0xabf1('0x1e')][_0xabf1('0x20')]||null:null,'attributes':_0x1018e9[_0xabf1('0x1e')]?_0x1018e9[_0xabf1('0x1e')][_0xabf1('0x21')]||null:null,'include':_0x1018e9[_0xabf1('0x1e')]?_0x1018e9[_0xabf1('0x1e')]['include']?_['map'](_0x1018e9[_0xabf1('0x1e')][_0xabf1('0x22')],function(_0x3fe443){return{'model':db[_0x3fe443[_0xabf1('0x24')]],'as':_0x3fe443['as'],'attributes':_0x3fe443[_0xabf1('0x21')],'include':_0x3fe443[_0xabf1('0x22')]?_[_0xabf1('0x23')](_0x3fe443[_0xabf1('0x22')],function(_0x33213b){return{'model':db[_0x33213b[_0xabf1('0x24')]],'as':_0x33213b['as'],'attributes':_0x33213b[_0xabf1('0x21')],'include':_0x33213b[_0xabf1('0x22')]?_[_0xabf1('0x23')](_0x33213b[_0xabf1('0x22')],function(_0x5dd657){return{'model':db[_0x5dd657[_0xabf1('0x24')]],'as':_0x5dd657['as'],'attributes':_0x5dd657['attributes']};}):[]};}):[]};}):[]:[]})[_0xabf1('0x11')](function(_0x58a28f){logger['info'](_0xabf1('0x27'),_0x1018e9);logger[_0xabf1('0x25')](_0xabf1('0x27'),_0x1018e9,JSON['stringify'](_0x58a28f));_0x5e3775(_0x58a28f);})[_0xabf1('0x26')](function(_0x445e14){logger[_0xabf1('0x17')]('ShowFaxQueue',_0x445e14['message'],_0x1018e9);_0xc09d18(_0x297377[_0xabf1('0x17')](0x1f4,_0x445e14['message']));});});};
\ No newline at end of file
+var _0xeaaf=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','register','info','request\x20sent','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','map','include','model','then','debug','find','ShowFaxQueue','moment','bluebird','randomstring'];(function(_0x27b6db,_0x3b0563){var _0x37f60c=function(_0x44caa4){while(--_0x44caa4){_0x27b6db['push'](_0x27b6db['shift']());}};_0x37f60c(++_0x3b0563);}(_0xeaaf,0xbb));var _0xfeaa=function(_0x2903e1,_0x3eb18c){_0x2903e1=_0x2903e1-0x0;var _0x17c019=_0xeaaf[_0x2903e1];return _0x17c019;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfeaa('0x0'));var BPromise=require(_0xfeaa('0x1'));var rs=require(_0xfeaa('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfeaa('0x3'))['db'];var utils=require(_0xfeaa('0x4'));var logger=require('../../config/logger')(_0xfeaa('0x5'));var config=require(_0xfeaa('0x6'));var jayson=require(_0xfeaa('0x7'));var client=jayson[_0xfeaa('0x8')][_0xfeaa('0x9')]({'port':0x232a});config[_0xfeaa('0xa')]=_[_0xfeaa('0xb')](config[_0xfeaa('0xa')],{'host':_0xfeaa('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfeaa('0xa')]));require('./faxQueue.socket')[_0xfeaa('0xd')](socket);function respondWithRpcPromise(_0x576585,_0x56d57e,_0x405f12){return new BPromise(function(_0x463fdb,_0x5d0e9a){return client['request'](_0x576585,_0x405f12)['then'](function(_0x584ca8){logger[_0xfeaa('0xe')]('FaxQueue,\x20%s,\x20%s',_0x56d57e,_0xfeaa('0xf'));logger['debug'](_0xfeaa('0x10'),_0x56d57e,'request\x20sent',JSON[_0xfeaa('0x11')](_0x584ca8));if(_0x584ca8[_0xfeaa('0x12')]){if(_0x584ca8[_0xfeaa('0x12')][_0xfeaa('0x13')]===0x1f4){logger[_0xfeaa('0x12')](_0xfeaa('0x14'),_0x56d57e,_0x584ca8[_0xfeaa('0x12')][_0xfeaa('0x15')]);return _0x5d0e9a(_0x584ca8[_0xfeaa('0x12')]['message']);}logger['error'](_0xfeaa('0x14'),_0x56d57e,_0x584ca8[_0xfeaa('0x12')][_0xfeaa('0x15')]);return _0x463fdb(_0x584ca8[_0xfeaa('0x12')][_0xfeaa('0x15')]);}else{logger[_0xfeaa('0xe')](_0xfeaa('0x14'),_0x56d57e,_0xfeaa('0xf'));_0x463fdb(_0x584ca8[_0xfeaa('0x16')][_0xfeaa('0x15')]);}})[_0xfeaa('0x17')](function(_0x324753){logger['error'](_0xfeaa('0x14'),_0x56d57e,_0x324753);_0x5d0e9a(_0x324753);});});}exports[_0xfeaa('0x18')]=function(_0x44de56){var _0x5085bc=this;return new Promise(function(_0x3c685f,_0x5b584e){return db[_0xfeaa('0x19')][_0xfeaa('0x1a')]({'raw':_0x44de56[_0xfeaa('0x1b')]?_0x44de56[_0xfeaa('0x1b')][_0xfeaa('0x1c')]===undefined?!![]:![]:!![],'where':_0x44de56[_0xfeaa('0x1b')]?_0x44de56['options'][_0xfeaa('0x1d')]||null:null,'attributes':_0x44de56[_0xfeaa('0x1b')]?_0x44de56[_0xfeaa('0x1b')][_0xfeaa('0x1e')]||null:null,'limit':_0x44de56[_0xfeaa('0x1b')]?_0x44de56[_0xfeaa('0x1b')]['limit']||null:null,'include':_0x44de56[_0xfeaa('0x1b')]?_0x44de56[_0xfeaa('0x1b')]['include']?_[_0xfeaa('0x1f')](_0x44de56[_0xfeaa('0x1b')][_0xfeaa('0x20')],function(_0x4b0e1e){return{'model':db[_0x4b0e1e['model']],'as':_0x4b0e1e['as'],'attributes':_0x4b0e1e[_0xfeaa('0x1e')],'include':_0x4b0e1e[_0xfeaa('0x20')]?_[_0xfeaa('0x1f')](_0x4b0e1e[_0xfeaa('0x20')],function(_0x251948){return{'model':db[_0x251948[_0xfeaa('0x21')]],'as':_0x251948['as'],'attributes':_0x251948[_0xfeaa('0x1e')],'include':_0x251948[_0xfeaa('0x20')]?_[_0xfeaa('0x1f')](_0x251948[_0xfeaa('0x20')],function(_0x2b7410){return{'model':db[_0x2b7410[_0xfeaa('0x21')]],'as':_0x2b7410['as'],'attributes':_0x2b7410['attributes']};}):[]};}):[]};}):[]:[]})[_0xfeaa('0x22')](function(_0x25fe32){logger[_0xfeaa('0xe')]('GetFaxQueue',_0x44de56);logger[_0xfeaa('0x23')]('GetFaxQueue',_0x44de56,JSON[_0xfeaa('0x11')](_0x25fe32));_0x3c685f(_0x25fe32);})[_0xfeaa('0x17')](function(_0x52bbb1){logger[_0xfeaa('0x12')]('GetFaxQueue',_0x52bbb1[_0xfeaa('0x15')],_0x44de56);_0x5b584e(_0x5085bc[_0xfeaa('0x12')](0x1f4,_0x52bbb1['message']));});});};exports['ShowFaxQueue']=function(_0x48a166){var _0x15f7eb=this;return new Promise(function(_0x5356b5,_0x4b92e4){return db[_0xfeaa('0x19')][_0xfeaa('0x24')]({'raw':_0x48a166[_0xfeaa('0x1b')]?_0x48a166[_0xfeaa('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x48a166['options']?_0x48a166[_0xfeaa('0x1b')][_0xfeaa('0x1d')]||null:null,'attributes':_0x48a166['options']?_0x48a166[_0xfeaa('0x1b')][_0xfeaa('0x1e')]||null:null,'include':_0x48a166[_0xfeaa('0x1b')]?_0x48a166[_0xfeaa('0x1b')][_0xfeaa('0x20')]?_[_0xfeaa('0x1f')](_0x48a166[_0xfeaa('0x1b')][_0xfeaa('0x20')],function(_0x5e55c0){return{'model':db[_0x5e55c0['model']],'as':_0x5e55c0['as'],'attributes':_0x5e55c0['attributes'],'include':_0x5e55c0[_0xfeaa('0x20')]?_[_0xfeaa('0x1f')](_0x5e55c0[_0xfeaa('0x20')],function(_0x328a41){return{'model':db[_0x328a41[_0xfeaa('0x21')]],'as':_0x328a41['as'],'attributes':_0x328a41[_0xfeaa('0x1e')],'include':_0x328a41['include']?_['map'](_0x328a41[_0xfeaa('0x20')],function(_0x4d5f3d){return{'model':db[_0x4d5f3d['model']],'as':_0x4d5f3d['as'],'attributes':_0x4d5f3d[_0xfeaa('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfeaa('0x22')](function(_0x12ee16){logger[_0xfeaa('0xe')](_0xfeaa('0x25'),_0x48a166);logger[_0xfeaa('0x23')](_0xfeaa('0x25'),_0x48a166,JSON[_0xfeaa('0x11')](_0x12ee16));_0x5356b5(_0x12ee16);})['catch'](function(_0x24a2d4){logger[_0xfeaa('0x12')]('ShowFaxQueue',_0x24a2d4[_0xfeaa('0x15')],_0x48a166);_0x4b92e4(_0x15f7eb[_0xfeaa('0x12')](0x1f4,_0x24a2d4['message']));});});};
\ No newline at end of file
index db39687..77bcc6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc144=['length','faxQueue:','./faxQueue.events','remove','removeListener','register'];(function(_0x3d9ba7,_0x1c8b5f){var _0x4621ce=function(_0x5e3283){while(--_0x5e3283){_0x3d9ba7['push'](_0x3d9ba7['shift']());}};_0x4621ce(++_0x1c8b5f);}(_0xc144,0x18e));var _0x4c14=function(_0x4dc61c,_0x2f3fd9){_0x4dc61c=_0x4dc61c-0x0;var _0x2d0101=_0xc144[_0x4dc61c];return _0x2d0101;};'use strict';var FaxQueueEvents=require(_0x4c14('0x0'));var events=['save',_0x4c14('0x1'),'update'];function createListener(_0x25b831,_0xfecec6){return function(_0x63253e){_0xfecec6['emit'](_0x25b831,_0x63253e);};}function removeListener(_0x18aeab,_0x2b57bf){return function(){FaxQueueEvents[_0x4c14('0x2')](_0x18aeab,_0x2b57bf);};}exports[_0x4c14('0x3')]=function(_0x5bbef1){for(var _0x2655b0=0x0,_0x505372=events[_0x4c14('0x4')];_0x2655b0<_0x505372;_0x2655b0++){var _0x2535c9=events[_0x2655b0];var _0x5ec6f4=createListener(_0x4c14('0x5')+_0x2535c9,_0x5bbef1);FaxQueueEvents['on'](_0x2535c9,_0x5ec6f4);}};
\ No newline at end of file
+var _0x4d14=['length','faxQueue:','./faxQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x3bf28e,_0x296152){var _0x1a53a5=function(_0x151973){while(--_0x151973){_0x3bf28e['push'](_0x3bf28e['shift']());}};_0x1a53a5(++_0x296152);}(_0x4d14,0x161));var _0x44d1=function(_0x1a0daa,_0x2a4634){_0x1a0daa=_0x1a0daa-0x0;var _0x1dbe15=_0x4d14[_0x1a0daa];return _0x1dbe15;};'use strict';var FaxQueueEvents=require(_0x44d1('0x0'));var events=[_0x44d1('0x1'),_0x44d1('0x2'),_0x44d1('0x3')];function createListener(_0x125581,_0x9946bc){return function(_0xcc3c26){_0x9946bc[_0x44d1('0x4')](_0x125581,_0xcc3c26);};}function removeListener(_0x57d167,_0x5056ce){return function(){FaxQueueEvents[_0x44d1('0x5')](_0x57d167,_0x5056ce);};}exports[_0x44d1('0x6')]=function(_0xe9b3eb){for(var _0x36b961=0x0,_0x11a8c7=events[_0x44d1('0x7')];_0x36b961<_0x11a8c7;_0x36b961++){var _0x383aac=events[_0x36b961];var _0x6db15c=createListener(_0x44d1('0x8')+_0x383aac,_0xe9b3eb);FaxQueueEvents['on'](_0x383aac,_0x6db15c);}};
\ No newline at end of file
index e7d480b..a43f482 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb163=['./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','create','post','delete','destroy','removeTeams','removeAgents','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x19fa6e,_0x107edf){var _0x4e57ff=function(_0xad0c53){while(--_0xad0c53){_0x19fa6e['push'](_0x19fa6e['shift']());}};_0x4e57ff(++_0x107edf);}(_0xb163,0x11b));var _0x3b16=function(_0x1ba476,_0x1b1803){_0x1ba476=_0x1ba476-0x0;var _0x1509b7=_0xb163[_0x1ba476];return _0x1509b7;};'use strict';var multer=require('multer');var util=require(_0x3b16('0x0'));var path=require(_0x3b16('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var auth=require(_0x3b16('0x2'));var interaction=require(_0x3b16('0x3'));var config=require(_0x3b16('0x4'));var controller=require(_0x3b16('0x5'));router[_0x3b16('0x6')]('/',auth[_0x3b16('0x7')](),controller[_0x3b16('0x8')]);router[_0x3b16('0x6')](_0x3b16('0x9'),auth[_0x3b16('0x7')](),controller[_0x3b16('0xa')]);router[_0x3b16('0x6')](_0x3b16('0xb'),auth['isAuthenticated'](),controller[_0x3b16('0xc')]);router['get'](_0x3b16('0xd'),auth[_0x3b16('0x7')](),controller[_0x3b16('0xe')]);router[_0x3b16('0x6')](_0x3b16('0xf'),auth[_0x3b16('0x7')](),controller['getTeams']);router[_0x3b16('0x6')](_0x3b16('0x10'),auth[_0x3b16('0x7')](),controller[_0x3b16('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3b16('0x12')]);router[_0x3b16('0x13')](_0x3b16('0xf'),auth[_0x3b16('0x7')](),controller['addTeams']);router[_0x3b16('0x13')](_0x3b16('0x10'),auth[_0x3b16('0x7')](),controller['addAgents']);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x3b16('0x14')](_0x3b16('0xb'),auth[_0x3b16('0x7')](),controller[_0x3b16('0x15')]);router[_0x3b16('0x14')]('/:id/teams',auth[_0x3b16('0x7')](),controller[_0x3b16('0x16')]);router[_0x3b16('0x14')](_0x3b16('0x10'),auth['isAuthenticated'](),controller[_0x3b16('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x7490=['path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','put','update','delete','removeTeams','exports','multer','util'];(function(_0x1e953d,_0x392216){var _0x48bcf3=function(_0x403562){while(--_0x403562){_0x1e953d['push'](_0x1e953d['shift']());}};_0x48bcf3(++_0x392216);}(_0x7490,0xa0));var _0x0749=function(_0x2d25d7,_0xa1a9f0){_0x2d25d7=_0x2d25d7-0x0;var _0xe8f39=_0x7490[_0x2d25d7];return _0xe8f39;};'use strict';var multer=require(_0x0749('0x0'));var util=require(_0x0749('0x1'));var path=require(_0x0749('0x2'));var timeout=require(_0x0749('0x3'));var express=require('express');var router=express[_0x0749('0x4')]();var auth=require(_0x0749('0x5'));var interaction=require(_0x0749('0x6'));var config=require(_0x0749('0x7'));var controller=require(_0x0749('0x8'));router[_0x0749('0x9')]('/',auth[_0x0749('0xa')](),controller['index']);router[_0x0749('0x9')]('/describe',auth[_0x0749('0xa')](),controller[_0x0749('0xb')]);router[_0x0749('0x9')](_0x0749('0xc'),auth[_0x0749('0xa')](),controller[_0x0749('0xd')]);router[_0x0749('0x9')]('/:id/members',auth[_0x0749('0xa')](),controller[_0x0749('0xe')]);router[_0x0749('0x9')](_0x0749('0xf'),auth[_0x0749('0xa')](),controller[_0x0749('0x10')]);router[_0x0749('0x9')](_0x0749('0x11'),auth[_0x0749('0xa')](),controller[_0x0749('0x12')]);router['post']('/',auth[_0x0749('0xa')](),controller[_0x0749('0x13')]);router[_0x0749('0x14')](_0x0749('0xf'),auth[_0x0749('0xa')](),controller[_0x0749('0x15')]);router['post'](_0x0749('0x11'),auth[_0x0749('0xa')](),controller['addAgents']);router[_0x0749('0x16')](_0x0749('0xc'),auth['isAuthenticated'](),controller[_0x0749('0x17')]);router[_0x0749('0x18')](_0x0749('0xc'),auth[_0x0749('0xa')](),controller['destroy']);router[_0x0749('0x18')]('/:id/teams',auth['isAuthenticated'](),controller[_0x0749('0x19')]);router[_0x0749('0x18')](_0x0749('0x11'),auth[_0x0749('0xa')](),controller['removeAgents']);module[_0x0749('0x1a')]=router;
\ No newline at end of file
index ab4d044..753ea52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec24=['exports','STRING','DATE','moment'];(function(_0x1922aa,_0x4f10a7){var _0x26c3fa=function(_0x105359){while(--_0x105359){_0x1922aa['push'](_0x1922aa['shift']());}};_0x26c3fa(++_0x4f10a7);}(_0xec24,0xaf));var _0x4ec2=function(_0x533836,_0x5517bc){_0x533836=_0x533836-0x0;var _0x15c234=_0xec24[_0x533836];return _0x15c234;};'use strict';var moment=require(_0x4ec2('0x0'));var Sequelize=require('sequelize');module[_0x4ec2('0x1')]={'uniqueid':{'type':Sequelize[_0x4ec2('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x4ec2('0x2')]},'joinAt':{'type':Sequelize[_0x4ec2('0x3')]},'leaveAt':{'type':Sequelize[_0x4ec2('0x3')]},'acceptAt':{'type':Sequelize[_0x4ec2('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x4ec2('0x2')]}};
\ No newline at end of file
+var _0xb531=['STRING','DATE','exports'];(function(_0x47d3ec,_0x54912d){var _0x19d199=function(_0x1b5535){while(--_0x1b5535){_0x47d3ec['push'](_0x47d3ec['shift']());}};_0x19d199(++_0x54912d);}(_0xb531,0x68));var _0x1b53=function(_0x6deddf,_0x3aa7da){_0x6deddf=_0x6deddf-0x0;var _0x53aa93=_0xb531[_0x6deddf];return _0x53aa93;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1b53('0x0')]={'uniqueid':{'type':Sequelize[_0x1b53('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x1b53('0x1')]},'joinAt':{'type':Sequelize[_0x1b53('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x1b53('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x1b53('0x1')]}};
\ No newline at end of file
index 0d7518b..b2da14a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf21c=['sendStatus','status','end','json','offset','limit','set','update','then','destroy','stack','name','send','index','FaxQueueReport','rawAttributes','model','keys','dateStart','dateEnd','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','filter','type','key','VIRTUAL','field','options','count','includeAll','include','rows','catch','show','params','find','create','body','describe','html-pdf','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x355842,_0x5010fd){var _0x4067de=function(_0x300c2b){while(--_0x300c2b){_0x355842['push'](_0x355842['shift']());}};_0x4067de(++_0x5010fd);}(_0xf21c,0x112));var _0xcf21=function(_0x223bdb,_0x5882e6){_0x223bdb=_0x223bdb-0x0;var _0xef8e68=_0xf21c[_0x223bdb];return _0xef8e68;};'use strict';var pdf=require(_0xcf21('0x0'));var emlformat=require(_0xcf21('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xcf21('0x2'));var jsonpatch=require(_0xcf21('0x3'));var rp=require('request-promise');var moment=require(_0xcf21('0x4'));var BPromise=require(_0xcf21('0x5'));var Mustache=require(_0xcf21('0x6'));var util=require(_0xcf21('0x7'));var path=require(_0xcf21('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xcf21('0x9'));var fs=require('fs');var _=require(_0xcf21('0xa'));var squel=require(_0xcf21('0xb'));var crypto=require(_0xcf21('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xcf21('0xd'));var toCsv=require('to-csv');var querystring=require(_0xcf21('0xe'));var Papa=require(_0xcf21('0xf'));var Redis=require(_0xcf21('0x10'));var qs=require(_0xcf21('0x11'));var logger=require(_0xcf21('0x12'))('api');var utils=require(_0xcf21('0x13'));var config=require(_0xcf21('0x14'));var db=require(_0xcf21('0x15'))['db'];function respondWithStatusCode(_0x528c08,_0xb36bc7){_0xb36bc7=_0xb36bc7||0xcc;return function(_0x3de118){if(_0x3de118){return _0x528c08[_0xcf21('0x16')](_0xb36bc7);}return _0x528c08[_0xcf21('0x17')](_0xb36bc7)[_0xcf21('0x18')]();};}function respondWithResult(_0x3ea6e6,_0x2722b9){_0x2722b9=_0x2722b9||0xc8;return function(_0x28d3e5){if(_0x28d3e5){return _0x3ea6e6[_0xcf21('0x17')](_0x2722b9)[_0xcf21('0x19')](_0x28d3e5);}};}function respondWithFilteredResult(_0x4a10df,_0x30ee20){return function(_0x1b2f58){if(_0x1b2f58){var _0x1cb16b=_0x1b2f58['count'],_0x4643d8=_0x30ee20[_0xcf21('0x1a')],_0x3853e3=_0x30ee20['offset']+_0x30ee20[_0xcf21('0x1b')],_0xc81563;if(_0x3853e3>=_0x1cb16b){_0x3853e3=_0x1cb16b;_0xc81563=0xc8;}else{_0xc81563=0xce;}_0x4a10df[_0xcf21('0x17')](_0xc81563);return _0x4a10df[_0xcf21('0x1c')]('Content-Range',_0x4643d8+'-'+_0x3853e3+'/'+_0x1cb16b)[_0xcf21('0x19')](_0x1b2f58);}return null;};}function patchUpdates(_0x1e992e){return function(_0x2e1a3e){try{jsonpatch['apply'](_0x2e1a3e,_0x1e992e,!![]);}catch(_0x5e232f){return BPromise['reject'](_0x5e232f);}return _0x2e1a3e['save']();};}function saveUpdates(_0x67d1fb,_0xa35f76){return function(_0x152372){if(_0x152372){return _0x152372[_0xcf21('0x1d')](_0x67d1fb)[_0xcf21('0x1e')](function(_0x19a9f7){return _0x19a9f7;});}return null;};}function removeEntity(_0x4349f3,_0x101a8c){return function(_0x1d7a97){if(_0x1d7a97){return _0x1d7a97[_0xcf21('0x1f')]()[_0xcf21('0x1e')](function(){_0x4349f3['status'](0xcc)[_0xcf21('0x18')]();});}};}function handleEntityNotFound(_0x2b1bb9,_0xaa098){return function(_0x1a01c4){if(!_0x1a01c4){_0x2b1bb9[_0xcf21('0x16')](0x194);}return _0x1a01c4;};}function handleError(_0x1e8ba8,_0x3e1f7a){_0x3e1f7a=_0x3e1f7a||0x1f4;return function(_0x4105c1){logger['error'](_0x4105c1[_0xcf21('0x20')]);if(_0x4105c1[_0xcf21('0x21')]){delete _0x4105c1[_0xcf21('0x21')];}_0x1e8ba8[_0xcf21('0x17')](_0x3e1f7a)[_0xcf21('0x22')](_0x4105c1);};}exports[_0xcf21('0x23')]=function(_0x4096dd,_0x576671){var _0x3383f3={},_0xcba0f1={},_0x2b33f6={'count':0x0,'rows':[]};var _0x56b87a=db[_0xcf21('0x24')][_0xcf21('0x25')];_0xcba0f1[_0xcf21('0x26')]=_[_0xcf21('0x27')](_0x56b87a);var _0x599fb9={'dateStart':_0x4096dd['query'][_0xcf21('0x28')],'dateEnd':_0x4096dd['query'][_0xcf21('0x29')]};delete _0x4096dd[_0xcf21('0x2a')]['dateStart'];delete _0x4096dd[_0xcf21('0x2a')]['dateEnd'];_0xcba0f1[_0xcf21('0x2a')]=_[_0xcf21('0x27')](_0x4096dd[_0xcf21('0x2a')]);_0xcba0f1[_0xcf21('0x2b')]=_[_0xcf21('0x2c')](_0xcba0f1[_0xcf21('0x26')],_0xcba0f1[_0xcf21('0x2a')]);_0x3383f3['attributes']=_['intersection'](_0xcba0f1[_0xcf21('0x26')],qs['fields'](_0x4096dd['query'][_0xcf21('0x2d')]));_0x3383f3[_0xcf21('0x2e')]=_0x3383f3[_0xcf21('0x2e')][_0xcf21('0x2f')]?_0x3383f3[_0xcf21('0x2e')]:_0xcba0f1[_0xcf21('0x26')];if(!_0x4096dd['query'][_0xcf21('0x30')](_0xcf21('0x31'))){_0x3383f3[_0xcf21('0x1b')]=qs[_0xcf21('0x1b')](_0x4096dd['query'][_0xcf21('0x1b')]);_0x3383f3['offset']=qs['offset'](_0x4096dd[_0xcf21('0x2a')][_0xcf21('0x1a')]);}_0x3383f3[_0xcf21('0x32')]=qs['sort'](_0x4096dd['query'][_0xcf21('0x33')]);_0x3383f3[_0xcf21('0x34')]=qs[_0xcf21('0x2b')](_[_0xcf21('0x35')](_0x4096dd[_0xcf21('0x2a')],_0xcba0f1[_0xcf21('0x2b')]));if(_0x599fb9[_0xcf21('0x28')]){if(_0x599fb9[_0xcf21('0x29')]){_0x599fb9[_0xcf21('0x29')]=moment(_0x599fb9[_0xcf21('0x29')])[_0xcf21('0x36')](0x1,'day');}else{_0x599fb9[_0xcf21('0x29')]=moment(_0x599fb9[_0xcf21('0x28')])[_0xcf21('0x36')](0x1,_0xcf21('0x37'));}_[_0xcf21('0x38')](_0x3383f3[_0xcf21('0x34')],{'createdAt':{'$gte':_0x599fb9[_0xcf21('0x28')],'$lte':_0x599fb9[_0xcf21('0x29')]}});}if(_0x4096dd[_0xcf21('0x2a')][_0xcf21('0x39')]){_0x3383f3[_0xcf21('0x34')]=_['merge'](_0x3383f3[_0xcf21('0x34')],{'$or':_['map'](_0x56b87a,function(_0x3a8931){if(_0x3a8931[_0xcf21('0x3a')][_0xcf21('0x3b')]!==_0xcf21('0x3c')){var _0x5f314e={};_0x5f314e[_0x3a8931[_0xcf21('0x3d')]]={'$like':'%'+_0x4096dd[_0xcf21('0x2a')][_0xcf21('0x39')]+'%'};return _0x5f314e;}})});}_0x3383f3=_[_0xcf21('0x38')]({},_0x3383f3,_0x4096dd[_0xcf21('0x3e')]);var _0x25d60d={'where':_0x3383f3[_0xcf21('0x34')]};return db[_0xcf21('0x24')][_0xcf21('0x3f')](_0x25d60d)['then'](function(_0x317fdc){_0x2b33f6[_0xcf21('0x3f')]=_0x317fdc;if(_0x4096dd[_0xcf21('0x2a')][_0xcf21('0x40')]){_0x3383f3[_0xcf21('0x41')]=[{'all':!![]}];}return db[_0xcf21('0x24')]['findAll'](_0x3383f3);})[_0xcf21('0x1e')](function(_0xa013a7){_0x2b33f6[_0xcf21('0x42')]=_0xa013a7;return _0x2b33f6;})[_0xcf21('0x1e')](respondWithFilteredResult(_0x576671,_0x3383f3))[_0xcf21('0x43')](handleError(_0x576671,null));};exports[_0xcf21('0x44')]=function(_0x49e7d8,_0x5c2cfb){var _0x4a1bf9={'raw':!![],'where':{'id':_0x49e7d8[_0xcf21('0x45')]['id']}},_0x21edd2={};_0x21edd2['model']=_[_0xcf21('0x27')](db[_0xcf21('0x24')]['rawAttributes']);_0x21edd2[_0xcf21('0x2a')]=_['keys'](_0x49e7d8['query']);_0x21edd2[_0xcf21('0x2b')]=_[_0xcf21('0x2c')](_0x21edd2['model'],_0x21edd2[_0xcf21('0x2a')]);_0x4a1bf9[_0xcf21('0x2e')]=_[_0xcf21('0x2c')](_0x21edd2['model'],qs[_0xcf21('0x2d')](_0x49e7d8[_0xcf21('0x2a')][_0xcf21('0x2d')]));_0x4a1bf9[_0xcf21('0x2e')]=_0x4a1bf9[_0xcf21('0x2e')][_0xcf21('0x2f')]?_0x4a1bf9[_0xcf21('0x2e')]:_0x21edd2[_0xcf21('0x26')];if(_0x49e7d8[_0xcf21('0x2a')]['includeAll']){_0x4a1bf9[_0xcf21('0x41')]=[{'all':!![]}];}_0x4a1bf9=_[_0xcf21('0x38')]({},_0x4a1bf9,_0x49e7d8[_0xcf21('0x3e')]);return db[_0xcf21('0x24')][_0xcf21('0x46')](_0x4a1bf9)[_0xcf21('0x1e')](handleEntityNotFound(_0x5c2cfb,null))[_0xcf21('0x1e')](respondWithResult(_0x5c2cfb,null))['catch'](handleError(_0x5c2cfb,null));};exports[_0xcf21('0x47')]=function(_0x202c8c,_0x27c3c4){return db[_0xcf21('0x24')][_0xcf21('0x47')](_0x202c8c[_0xcf21('0x48')],{})['then'](respondWithResult(_0x27c3c4,0xc9))[_0xcf21('0x43')](handleError(_0x27c3c4,null));};exports[_0xcf21('0x1d')]=function(_0x3605ff,_0x1fcacc){if(_0x3605ff[_0xcf21('0x48')]['id']){delete _0x3605ff['body']['id'];}return db[_0xcf21('0x24')][_0xcf21('0x46')]({'where':{'id':_0x3605ff[_0xcf21('0x45')]['id']}})[_0xcf21('0x1e')](handleEntityNotFound(_0x1fcacc,null))[_0xcf21('0x1e')](saveUpdates(_0x3605ff[_0xcf21('0x48')],null))[_0xcf21('0x1e')](respondWithResult(_0x1fcacc,null))[_0xcf21('0x43')](handleError(_0x1fcacc,null));};exports['destroy']=function(_0x461e52,_0x52f02e){return db[_0xcf21('0x24')][_0xcf21('0x46')]({'where':{'id':_0x461e52[_0xcf21('0x45')]['id']}})[_0xcf21('0x1e')](handleEntityNotFound(_0x52f02e,null))[_0xcf21('0x1e')](removeEntity(_0x52f02e,null))[_0xcf21('0x43')](handleError(_0x52f02e,null));};exports['describe']=function(_0x25ded3,_0xec9aaf){return db[_0xcf21('0x24')][_0xcf21('0x49')]()[_0xcf21('0x1e')](respondWithResult(_0xec9aaf,null))['catch'](handleError(_0xec9aaf,null));};
\ No newline at end of file
+var _0xd28c=['stack','name','send','FaxQueueReport','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','add','day','merge','filter','map','key','field','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','apply','reject','then','destroy','error'];(function(_0x224009,_0x2e44f8){var _0x4a0f8b=function(_0x27d0c4){while(--_0x27d0c4){_0x224009['push'](_0x224009['shift']());}};_0x4a0f8b(++_0x2e44f8);}(_0xd28c,0x72));var _0xcd28=function(_0x3dc4d8,_0x57388c){_0x3dc4d8=_0x3dc4d8-0x0;var _0x214cf7=_0xd28c[_0x3dc4d8];return _0x214cf7;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xcd28('0x0'));var rimraf=require(_0xcd28('0x1'));var zipdir=require(_0xcd28('0x2'));var jsonpatch=require(_0xcd28('0x3'));var rp=require(_0xcd28('0x4'));var moment=require(_0xcd28('0x5'));var BPromise=require(_0xcd28('0x6'));var Mustache=require(_0xcd28('0x7'));var util=require('util');var path=require(_0xcd28('0x8'));var sox=require(_0xcd28('0x9'));var csv=require('to-csv');var ejs=require(_0xcd28('0xa'));var fs=require('fs');var _=require(_0xcd28('0xb'));var squel=require('squel');var crypto=require(_0xcd28('0xc'));var jsforce=require(_0xcd28('0xd'));var deskjs=require(_0xcd28('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcd28('0xf'));var Papa=require(_0xcd28('0x10'));var Redis=require(_0xcd28('0x11'));var qs=require('../../components/parsers/qs');var logger=require(_0xcd28('0x12'))('api');var utils=require(_0xcd28('0x13'));var config=require('../../config/environment');var db=require(_0xcd28('0x14'))['db'];function respondWithStatusCode(_0x3a394c,_0x21951b){_0x21951b=_0x21951b||0xcc;return function(_0x192898){if(_0x192898){return _0x3a394c[_0xcd28('0x15')](_0x21951b);}return _0x3a394c[_0xcd28('0x16')](_0x21951b)[_0xcd28('0x17')]();};}function respondWithResult(_0x5cd396,_0x1b8b99){_0x1b8b99=_0x1b8b99||0xc8;return function(_0x35e2d4){if(_0x35e2d4){return _0x5cd396['status'](_0x1b8b99)[_0xcd28('0x18')](_0x35e2d4);}};}function respondWithFilteredResult(_0x6d51f7,_0x3e9ff2){return function(_0x4ba994){if(_0x4ba994){var _0x12fae4=_0x4ba994[_0xcd28('0x19')],_0x5c8035=_0x3e9ff2['offset'],_0x3a311b=_0x3e9ff2[_0xcd28('0x1a')]+_0x3e9ff2[_0xcd28('0x1b')],_0x1aae54;if(_0x3a311b>=_0x12fae4){_0x3a311b=_0x12fae4;_0x1aae54=0xc8;}else{_0x1aae54=0xce;}_0x6d51f7['status'](_0x1aae54);return _0x6d51f7[_0xcd28('0x1c')]('Content-Range',_0x5c8035+'-'+_0x3a311b+'/'+_0x12fae4)[_0xcd28('0x18')](_0x4ba994);}return null;};}function patchUpdates(_0x49f4f0){return function(_0x301b78){try{jsonpatch[_0xcd28('0x1d')](_0x301b78,_0x49f4f0,!![]);}catch(_0x155159){return BPromise[_0xcd28('0x1e')](_0x155159);}return _0x301b78['save']();};}function saveUpdates(_0x53b515,_0x1dd17d){return function(_0x360b08){if(_0x360b08){return _0x360b08['update'](_0x53b515)[_0xcd28('0x1f')](function(_0x40348e){return _0x40348e;});}return null;};}function removeEntity(_0xdaa8b9,_0x167b12){return function(_0x5d0a48){if(_0x5d0a48){return _0x5d0a48[_0xcd28('0x20')]()[_0xcd28('0x1f')](function(){_0xdaa8b9[_0xcd28('0x16')](0xcc)[_0xcd28('0x17')]();});}};}function handleEntityNotFound(_0x410149,_0x504d64){return function(_0x2366f9){if(!_0x2366f9){_0x410149[_0xcd28('0x15')](0x194);}return _0x2366f9;};}function handleError(_0x444b1f,_0x54e80e){_0x54e80e=_0x54e80e||0x1f4;return function(_0x3e57d5){logger[_0xcd28('0x21')](_0x3e57d5[_0xcd28('0x22')]);if(_0x3e57d5['name']){delete _0x3e57d5[_0xcd28('0x23')];}_0x444b1f[_0xcd28('0x16')](_0x54e80e)[_0xcd28('0x24')](_0x3e57d5);};}exports['index']=function(_0x153e72,_0x343295){var _0x5d697d={},_0x4d4ccb={},_0x5b4830={'count':0x0,'rows':[]};var _0xb593f1=db[_0xcd28('0x25')]['rawAttributes'];_0x4d4ccb[_0xcd28('0x26')]=_[_0xcd28('0x27')](_0xb593f1);var _0x50ca75={'dateStart':_0x153e72[_0xcd28('0x28')]['dateStart'],'dateEnd':_0x153e72[_0xcd28('0x28')]['dateEnd']};delete _0x153e72['query'][_0xcd28('0x29')];delete _0x153e72['query'][_0xcd28('0x2a')];_0x4d4ccb[_0xcd28('0x28')]=_[_0xcd28('0x27')](_0x153e72[_0xcd28('0x28')]);_0x4d4ccb[_0xcd28('0x2b')]=_[_0xcd28('0x2c')](_0x4d4ccb[_0xcd28('0x26')],_0x4d4ccb[_0xcd28('0x28')]);_0x5d697d['attributes']=_['intersection'](_0x4d4ccb[_0xcd28('0x26')],qs[_0xcd28('0x2d')](_0x153e72[_0xcd28('0x28')][_0xcd28('0x2d')]));_0x5d697d['attributes']=_0x5d697d[_0xcd28('0x2e')][_0xcd28('0x2f')]?_0x5d697d['attributes']:_0x4d4ccb[_0xcd28('0x26')];if(!_0x153e72[_0xcd28('0x28')]['hasOwnProperty'](_0xcd28('0x30'))){_0x5d697d[_0xcd28('0x1b')]=qs[_0xcd28('0x1b')](_0x153e72['query']['limit']);_0x5d697d[_0xcd28('0x1a')]=qs['offset'](_0x153e72[_0xcd28('0x28')]['offset']);}_0x5d697d[_0xcd28('0x31')]=qs['sort'](_0x153e72[_0xcd28('0x28')][_0xcd28('0x32')]);_0x5d697d[_0xcd28('0x33')]=qs[_0xcd28('0x2b')](_[_0xcd28('0x34')](_0x153e72['query'],_0x4d4ccb[_0xcd28('0x2b')]));if(_0x50ca75[_0xcd28('0x29')]){if(_0x50ca75['dateEnd']){_0x50ca75['dateEnd']=moment(_0x50ca75[_0xcd28('0x2a')])[_0xcd28('0x35')](0x1,_0xcd28('0x36'));}else{_0x50ca75[_0xcd28('0x2a')]=moment(_0x50ca75[_0xcd28('0x29')])[_0xcd28('0x35')](0x1,'day');}_[_0xcd28('0x37')](_0x5d697d[_0xcd28('0x33')],{'createdAt':{'$gte':_0x50ca75[_0xcd28('0x29')],'$lte':_0x50ca75['dateEnd']}});}if(_0x153e72[_0xcd28('0x28')][_0xcd28('0x38')]){_0x5d697d['where']=_['merge'](_0x5d697d[_0xcd28('0x33')],{'$or':_[_0xcd28('0x39')](_0xb593f1,function(_0x318e2c){if(_0x318e2c['type'][_0xcd28('0x3a')]!=='VIRTUAL'){var _0xd38a72={};_0xd38a72[_0x318e2c[_0xcd28('0x3b')]]={'$like':'%'+_0x153e72[_0xcd28('0x28')]['filter']+'%'};return _0xd38a72;}})});}_0x5d697d=_[_0xcd28('0x37')]({},_0x5d697d,_0x153e72[_0xcd28('0x3c')]);var _0x3e2047={'where':_0x5d697d[_0xcd28('0x33')]};return db[_0xcd28('0x25')][_0xcd28('0x19')](_0x3e2047)[_0xcd28('0x1f')](function(_0x2da941){_0x5b4830[_0xcd28('0x19')]=_0x2da941;if(_0x153e72[_0xcd28('0x28')][_0xcd28('0x3d')]){_0x5d697d['include']=[{'all':!![]}];}return db[_0xcd28('0x25')][_0xcd28('0x3e')](_0x5d697d);})[_0xcd28('0x1f')](function(_0x1f41f2){_0x5b4830[_0xcd28('0x3f')]=_0x1f41f2;return _0x5b4830;})[_0xcd28('0x1f')](respondWithFilteredResult(_0x343295,_0x5d697d))[_0xcd28('0x40')](handleError(_0x343295,null));};exports[_0xcd28('0x41')]=function(_0x24ac57,_0x5bb0fa){var _0x50946e={'raw':!![],'where':{'id':_0x24ac57[_0xcd28('0x42')]['id']}},_0x3e821c={};_0x3e821c[_0xcd28('0x26')]=_['keys'](db[_0xcd28('0x25')][_0xcd28('0x43')]);_0x3e821c[_0xcd28('0x28')]=_[_0xcd28('0x27')](_0x24ac57['query']);_0x3e821c[_0xcd28('0x2b')]=_['intersection'](_0x3e821c[_0xcd28('0x26')],_0x3e821c[_0xcd28('0x28')]);_0x50946e[_0xcd28('0x2e')]=_['intersection'](_0x3e821c[_0xcd28('0x26')],qs[_0xcd28('0x2d')](_0x24ac57[_0xcd28('0x28')][_0xcd28('0x2d')]));_0x50946e['attributes']=_0x50946e[_0xcd28('0x2e')]['length']?_0x50946e[_0xcd28('0x2e')]:_0x3e821c[_0xcd28('0x26')];if(_0x24ac57[_0xcd28('0x28')]['includeAll']){_0x50946e[_0xcd28('0x44')]=[{'all':!![]}];}_0x50946e=_[_0xcd28('0x37')]({},_0x50946e,_0x24ac57[_0xcd28('0x3c')]);return db['FaxQueueReport'][_0xcd28('0x45')](_0x50946e)['then'](handleEntityNotFound(_0x5bb0fa,null))[_0xcd28('0x1f')](respondWithResult(_0x5bb0fa,null))[_0xcd28('0x40')](handleError(_0x5bb0fa,null));};exports[_0xcd28('0x46')]=function(_0x18e0d2,_0xc28281){return db[_0xcd28('0x25')][_0xcd28('0x46')](_0x18e0d2[_0xcd28('0x47')],{})['then'](respondWithResult(_0xc28281,0xc9))['catch'](handleError(_0xc28281,null));};exports[_0xcd28('0x48')]=function(_0x5cdb1e,_0xaeaeff){if(_0x5cdb1e[_0xcd28('0x47')]['id']){delete _0x5cdb1e[_0xcd28('0x47')]['id'];}return db[_0xcd28('0x25')][_0xcd28('0x45')]({'where':{'id':_0x5cdb1e['params']['id']}})['then'](handleEntityNotFound(_0xaeaeff,null))[_0xcd28('0x1f')](saveUpdates(_0x5cdb1e['body'],null))[_0xcd28('0x1f')](respondWithResult(_0xaeaeff,null))[_0xcd28('0x40')](handleError(_0xaeaeff,null));};exports[_0xcd28('0x20')]=function(_0x2bd0d1,_0x4b4d88){return db[_0xcd28('0x25')][_0xcd28('0x45')]({'where':{'id':_0x2bd0d1[_0xcd28('0x42')]['id']}})[_0xcd28('0x1f')](handleEntityNotFound(_0x4b4d88,null))[_0xcd28('0x1f')](removeEntity(_0x4b4d88,null))[_0xcd28('0x40')](handleError(_0x4b4d88,null));};exports['describe']=function(_0x24459e,_0x5306cb){return db[_0xcd28('0x25')][_0xcd28('0x49')]()[_0xcd28('0x1f')](respondWithResult(_0x5306cb,null))['catch'](handleError(_0x5306cb,null));};
\ No newline at end of file
index f0b3fbc..3f0d685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1764=['./faxQueueReport.attributes','define','FaxQueueReport','report_fax_queue','uniqueid','lodash','util','api','moment','bluebird','request-promise'];(function(_0x27146d,_0x19dde0){var _0x20844f=function(_0x45dfad){while(--_0x45dfad){_0x27146d['push'](_0x27146d['shift']());}};_0x20844f(++_0x19dde0);}(_0x1764,0x1c8));var _0x4176=function(_0x287aca,_0x31a8b1){_0x287aca=_0x287aca-0x0;var _0x4aebe8=_0x1764[_0x287aca];return _0x4aebe8;};'use strict';var _=require(_0x4176('0x0'));var util=require(_0x4176('0x1'));var logger=require('../../config/logger')(_0x4176('0x2'));var moment=require(_0x4176('0x3'));var BPromise=require(_0x4176('0x4'));var rp=require(_0x4176('0x5'));var attributes=require(_0x4176('0x6'));module['exports']=function(_0x30bcd7,_0x47fb58){return _0x30bcd7[_0x4176('0x7')](_0x4176('0x8'),attributes,{'tableName':_0x4176('0x9'),'paranoid':![],'indexes':[{'name':_0x4176('0xa'),'fields':[_0x4176('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2095=['bluebird','request-promise','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash','util','api','moment'];(function(_0x59a293,_0x33b4b3){var _0xccdddb=function(_0x1d4be4){while(--_0x1d4be4){_0x59a293['push'](_0x59a293['shift']());}};_0xccdddb(++_0x33b4b3);}(_0x2095,0x170));var _0x5209=function(_0x528c8f,_0x4417ab){_0x528c8f=_0x528c8f-0x0;var _0x3b3aa2=_0x2095[_0x528c8f];return _0x3b3aa2;};'use strict';var _=require(_0x5209('0x0'));var util=require(_0x5209('0x1'));var logger=require('../../config/logger')(_0x5209('0x2'));var moment=require(_0x5209('0x3'));var BPromise=require(_0x5209('0x4'));var rp=require(_0x5209('0x5'));var attributes=require(_0x5209('0x6'));module[_0x5209('0x7')]=function(_0x5c7a8d,_0xb38817){return _0x5c7a8d[_0x5209('0x8')](_0x5209('0x9'),attributes,{'tableName':_0x5209('0xa'),'paranoid':![],'indexes':[{'name':_0x5209('0xb'),'fields':[_0x5209('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 825b98f..a01b937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d3=['attributes','limit','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','update','where'];(function(_0x44b67e,_0x1c0102){var _0x473e97=function(_0x48f39f){while(--_0x48f39f){_0x44b67e['push'](_0x44b67e['shift']());}};_0x473e97(++_0x1c0102);}(_0x85d3,0xc8));var _0x385d=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x85d3[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x385d('0x0'));var util=require(_0x385d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x385d('0x2'));var fs=require('fs');var Redis=require(_0x385d('0x3'));var db=require(_0x385d('0x4'))['db'];var utils=require(_0x385d('0x5'));var logger=require(_0x385d('0x6'))(_0x385d('0x7'));var config=require('../../config/environment');var jayson=require(_0x385d('0x8'));var client=jayson['client'][_0x385d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x132666,_0x1329cd,_0x2e7f52){return new BPromise(function(_0x4840db,_0x41008c){return client[_0x385d('0xa')](_0x132666,_0x2e7f52)[_0x385d('0xb')](function(_0x1b7329){logger[_0x385d('0xc')](_0x385d('0xd'),_0x1329cd,'request\x20sent');logger[_0x385d('0xe')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x1329cd,'request\x20sent',JSON[_0x385d('0xf')](_0x1b7329));if(_0x1b7329[_0x385d('0x10')]){if(_0x1b7329[_0x385d('0x10')][_0x385d('0x11')]===0x1f4){logger[_0x385d('0x10')](_0x385d('0xd'),_0x1329cd,_0x1b7329[_0x385d('0x10')]['message']);return _0x41008c(_0x1b7329['error'][_0x385d('0x12')]);}logger[_0x385d('0x10')](_0x385d('0xd'),_0x1329cd,_0x1b7329['error'][_0x385d('0x12')]);return _0x4840db(_0x1b7329[_0x385d('0x10')][_0x385d('0x12')]);}else{logger[_0x385d('0xc')](_0x385d('0xd'),_0x1329cd,_0x385d('0x13'));_0x4840db(_0x1b7329[_0x385d('0x14')]['message']);}})[_0x385d('0x15')](function(_0x5f47e5){logger[_0x385d('0x10')](_0x385d('0xd'),_0x1329cd,_0x5f47e5);_0x41008c(_0x5f47e5);});});}exports[_0x385d('0x16')]=function(_0x10f83b){var _0x5cf730=this;return new Promise(function(_0x2cb176,_0x5dc6bf){return db[_0x385d('0x17')][_0x385d('0x18')](_0x10f83b[_0x385d('0x19')],{'raw':_0x10f83b[_0x385d('0x1a')]?_0x10f83b['options'][_0x385d('0x1b')]===undefined?!![]:![]:!![]})[_0x385d('0xb')](function(_0x21d085){logger[_0x385d('0xc')](_0x385d('0x16'),_0x10f83b);logger['debug'](_0x385d('0x16'),_0x10f83b,JSON['stringify'](_0x21d085));_0x2cb176(_0x21d085);})['catch'](function(_0x446152){logger[_0x385d('0x10')](_0x385d('0x16'),_0x446152['message'],_0x10f83b);_0x5dc6bf(_0x5cf730['error'](0x1f4,_0x446152[_0x385d('0x12')]));});});};exports[_0x385d('0x1c')]=function(_0x52b031){var _0x51eeef=this;return new Promise(function(_0x7c120b,_0x4c3209){return db[_0x385d('0x17')][_0x385d('0x1d')](_0x52b031[_0x385d('0x19')],{'raw':_0x52b031[_0x385d('0x1a')]?_0x52b031['options'][_0x385d('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x52b031[_0x385d('0x1a')]?_0x52b031['options'][_0x385d('0x1e')]||null:null,'attributes':_0x52b031[_0x385d('0x1a')]?_0x52b031[_0x385d('0x1a')][_0x385d('0x1f')]||null:null,'limit':_0x52b031[_0x385d('0x1a')]?_0x52b031['options'][_0x385d('0x20')]||null:null})['then'](function(_0x3d49b4){logger[_0x385d('0xc')]('UpdateFaxQueueReport',_0x52b031);logger[_0x385d('0xe')](_0x385d('0x1c'),_0x52b031,JSON[_0x385d('0xf')](_0x3d49b4));_0x7c120b(_0x3d49b4);})[_0x385d('0x15')](function(_0x526db7){logger['error'](_0x385d('0x1c'),_0x526db7['message'],_0x52b031);_0x4c3209(_0x51eeef['error'](0x1f4,_0x526db7[_0x385d('0x12')]));});});};
\ No newline at end of file
+var _0x9348=['bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','FaxQueueReport,\x20%s,\x20%s','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','FaxQueueReport','create','body','options','then','CreateFaxQueueReport','catch','UpdateFaxQueueReport','update','raw','where','limit','lodash','util','moment'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x9348,0x10d));var _0x8934=function(_0x443cef,_0x2cd289){_0x443cef=_0x443cef-0x0;var _0x147c47=_0x9348[_0x443cef];return _0x147c47;};'use strict';var _=require(_0x8934('0x0'));var util=require(_0x8934('0x1'));var moment=require(_0x8934('0x2'));var BPromise=require(_0x8934('0x3'));var rs=require(_0x8934('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8934('0x5'))['db'];var utils=require(_0x8934('0x6'));var logger=require('../../config/logger')(_0x8934('0x7'));var config=require(_0x8934('0x8'));var jayson=require(_0x8934('0x9'));var client=jayson[_0x8934('0xa')][_0x8934('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3ee9b9,_0x512f30,_0x284a62){return new BPromise(function(_0x3734c5,_0x1c7f03){return client['request'](_0x3ee9b9,_0x284a62)['then'](function(_0x5ec16d){logger['info'](_0x8934('0xc'),_0x512f30,'request\x20sent');logger[_0x8934('0xd')](_0x8934('0xe'),_0x512f30,_0x8934('0xf'),JSON[_0x8934('0x10')](_0x5ec16d));if(_0x5ec16d[_0x8934('0x11')]){if(_0x5ec16d[_0x8934('0x11')][_0x8934('0x12')]===0x1f4){logger[_0x8934('0x11')]('FaxQueueReport,\x20%s,\x20%s',_0x512f30,_0x5ec16d[_0x8934('0x11')][_0x8934('0x13')]);return _0x1c7f03(_0x5ec16d[_0x8934('0x11')][_0x8934('0x13')]);}logger[_0x8934('0x11')](_0x8934('0xc'),_0x512f30,_0x5ec16d['error'][_0x8934('0x13')]);return _0x3734c5(_0x5ec16d[_0x8934('0x11')][_0x8934('0x13')]);}else{logger[_0x8934('0x14')](_0x8934('0xc'),_0x512f30,_0x8934('0xf'));_0x3734c5(_0x5ec16d[_0x8934('0x15')][_0x8934('0x13')]);}})['catch'](function(_0xb86bc9){logger[_0x8934('0x11')](_0x8934('0xc'),_0x512f30,_0xb86bc9);_0x1c7f03(_0xb86bc9);});});}exports['CreateFaxQueueReport']=function(_0x47f25e){var _0x597eed=this;return new Promise(function(_0x2ff9ce,_0x51f9ed){return db[_0x8934('0x16')][_0x8934('0x17')](_0x47f25e[_0x8934('0x18')],{'raw':_0x47f25e[_0x8934('0x19')]?_0x47f25e[_0x8934('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8934('0x1a')](function(_0x5ae49f){logger[_0x8934('0x14')](_0x8934('0x1b'),_0x47f25e);logger[_0x8934('0xd')](_0x8934('0x1b'),_0x47f25e,JSON[_0x8934('0x10')](_0x5ae49f));_0x2ff9ce(_0x5ae49f);})[_0x8934('0x1c')](function(_0x36fe20){logger['error'](_0x8934('0x1b'),_0x36fe20[_0x8934('0x13')],_0x47f25e);_0x51f9ed(_0x597eed[_0x8934('0x11')](0x1f4,_0x36fe20[_0x8934('0x13')]));});});};exports[_0x8934('0x1d')]=function(_0x5e593b){var _0x3cf295=this;return new Promise(function(_0x1c15c5,_0x1b5775){return db['FaxQueueReport'][_0x8934('0x1e')](_0x5e593b['body'],{'raw':_0x5e593b[_0x8934('0x19')]?_0x5e593b[_0x8934('0x19')][_0x8934('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e593b['options']?_0x5e593b[_0x8934('0x19')][_0x8934('0x20')]||null:null,'attributes':_0x5e593b[_0x8934('0x19')]?_0x5e593b[_0x8934('0x19')]['attributes']||null:null,'limit':_0x5e593b[_0x8934('0x19')]?_0x5e593b[_0x8934('0x19')][_0x8934('0x21')]||null:null})[_0x8934('0x1a')](function(_0x44972b){logger[_0x8934('0x14')](_0x8934('0x1d'),_0x5e593b);logger[_0x8934('0xd')](_0x8934('0x1d'),_0x5e593b,JSON[_0x8934('0x10')](_0x44972b));_0x1c15c5(_0x44972b);})['catch'](function(_0x1d068c){logger[_0x8934('0x11')]('UpdateFaxQueueReport',_0x1d068c[_0x8934('0x13')],_0x5e593b);_0x1b5775(_0x3cf295[_0x8934('0x11')](0x1f4,_0x1d068c[_0x8934('0x13')]));});});};
\ No newline at end of file
index eb6a859..6572193 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e3e=['util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','put','update','destroy','exports','multer'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6e3e,0x18e));var _0xe6e3=function(_0x1fd94a,_0x3197da){_0x1fd94a=_0x1fd94a-0x0;var _0x44b98a=_0x6e3e[_0x1fd94a];return _0x44b98a;};'use strict';var multer=require(_0xe6e3('0x0'));var util=require(_0xe6e3('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe6e3('0x2'));var router=express[_0xe6e3('0x3')]();var auth=require(_0xe6e3('0x4'));var interaction=require(_0xe6e3('0x5'));var config=require(_0xe6e3('0x6'));var controller=require(_0xe6e3('0x7'));router['get']('/',auth[_0xe6e3('0x8')](),controller[_0xe6e3('0x9')]);router[_0xe6e3('0xa')](_0xe6e3('0xb'),auth[_0xe6e3('0x8')](),controller[_0xe6e3('0xc')]);router['get'](_0xe6e3('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xe6e3('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe6e3('0xf')]('/:id',auth[_0xe6e3('0x8')](),controller[_0xe6e3('0x10')]);router['delete'](_0xe6e3('0xd'),auth['isAuthenticated'](),controller[_0xe6e3('0x11')]);module[_0xe6e3('0x12')]=router;
\ No newline at end of file
+var _0xefcd=['/describe','describe','/:id','post','create','update','delete','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated'];(function(_0x57ec1a,_0x2b7624){var _0x2159ad=function(_0x4738b4){while(--_0x4738b4){_0x57ec1a['push'](_0x57ec1a['shift']());}};_0x2159ad(++_0x2b7624);}(_0xefcd,0xe0));var _0xdefc=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xefcd[_0x46698a];return _0x356db0;};'use strict';var multer=require('multer');var util=require(_0xdefc('0x0'));var path=require(_0xdefc('0x1'));var timeout=require(_0xdefc('0x2'));var express=require(_0xdefc('0x3'));var router=express['Router']();var auth=require(_0xdefc('0x4'));var interaction=require(_0xdefc('0x5'));var config=require(_0xdefc('0x6'));var controller=require(_0xdefc('0x7'));router[_0xdefc('0x8')]('/',auth[_0xdefc('0x9')](),controller['index']);router[_0xdefc('0x8')](_0xdefc('0xa'),auth[_0xdefc('0x9')](),controller[_0xdefc('0xb')]);router[_0xdefc('0x8')](_0xdefc('0xc'),auth[_0xdefc('0x9')](),controller['show']);router[_0xdefc('0xd')]('/',auth['isAuthenticated'](),controller[_0xdefc('0xe')]);router['put']('/:id',auth[_0xdefc('0x9')](),controller[_0xdefc('0xf')]);router[_0xdefc('0x10')](_0xdefc('0xc'),auth[_0xdefc('0x9')](),controller['destroy']);module[_0xdefc('0x11')]=router;
\ No newline at end of file
index f73c917..950650d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d87=['STRING','ENUM','account','DATE','NOW','moment','sequelize','exports'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x9d87,0x17d));var _0x79d8=function(_0x2080f1,_0x1aa13f){_0x2080f1=_0x2080f1-0x0;var _0x11ddd4=_0x9d87[_0x2080f1];return _0x11ddd4;};'use strict';var moment=require(_0x79d8('0x0'));var Sequelize=require(_0x79d8('0x1'));module[_0x79d8('0x2')]={'uniqueid':{'type':Sequelize[_0x79d8('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x79d8('0x4')](_0x79d8('0x5'),'agent','queue'),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0x79d8('0x6')],'allowNull':![],'defaultValue':Sequelize[_0x79d8('0x7')]}};
\ No newline at end of file
+var _0x388c=['account','agent','queue','NOW','moment','exports','STRING'];(function(_0x1605b7,_0x13302a){var _0x3c6527=function(_0x3a2240){while(--_0x3a2240){_0x1605b7['push'](_0x1605b7['shift']());}};_0x3c6527(++_0x13302a);}(_0x388c,0xe4));var _0xc388=function(_0x5c70ae,_0x1ccbd6){_0x5c70ae=_0x5c70ae-0x0;var _0x2f6022=_0x388c[_0x5c70ae];return _0x2f6022;};'use strict';var moment=require(_0xc388('0x0'));var Sequelize=require('sequelize');module[_0xc388('0x1')]={'uniqueid':{'type':Sequelize[_0xc388('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xc388('0x3'),_0xc388('0x4'),'queue'),'allowNull':![],'defaultValue':_0xc388('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0xc388('0x6')]}};
\ No newline at end of file
index 29d2af1..29dd98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06bc=['apply','save','then','destroy','error','stack','name','send','index','FaxTransferReport','rawAttributes','model','keys','dateStart','query','dateEnd','intersection','fields','attributes','length','hasOwnProperty','sort','where','filters','add','day','merge','type','key','VIRTUAL','field','filter','includeAll','include','rows','catch','params','options','find','create','update','body','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','squel','jsforce','to-csv','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','count','offset','limit','set','Content-Range','json'];(function(_0x2b2335,_0x50fa9f){var _0x524dda=function(_0x554053){while(--_0x554053){_0x2b2335['push'](_0x2b2335['shift']());}};_0x524dda(++_0x50fa9f);}(_0x06bc,0x73));var _0xc06b=function(_0x4f5dff,_0x43d453){_0x4f5dff=_0x4f5dff-0x0;var _0x3ec3d5=_0x06bc[_0x4f5dff];return _0x3ec3d5;};'use strict';var pdf=require(_0xc06b('0x0'));var emlformat=require(_0xc06b('0x1'));var rimraf=require(_0xc06b('0x2'));var zipdir=require(_0xc06b('0x3'));var jsonpatch=require(_0xc06b('0x4'));var rp=require(_0xc06b('0x5'));var moment=require(_0xc06b('0x6'));var BPromise=require('bluebird');var Mustache=require(_0xc06b('0x7'));var util=require('util');var path=require(_0xc06b('0x8'));var sox=require(_0xc06b('0x9'));var csv=require('to-csv');var ejs=require(_0xc06b('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0xc06b('0xb'));var crypto=require('crypto');var jsforce=require(_0xc06b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc06b('0xd'));var querystring=require('querystring');var Papa=require(_0xc06b('0xe'));var Redis=require('ioredis');var qs=require(_0xc06b('0xf'));var logger=require(_0xc06b('0x10'))(_0xc06b('0x11'));var utils=require(_0xc06b('0x12'));var config=require('../../config/environment');var db=require(_0xc06b('0x13'))['db'];function respondWithStatusCode(_0x4a08fc,_0x254122){_0x254122=_0x254122||0xcc;return function(_0x38767e){if(_0x38767e){return _0x4a08fc[_0xc06b('0x14')](_0x254122);}return _0x4a08fc['status'](_0x254122)[_0xc06b('0x15')]();};}function respondWithResult(_0x6bd9c2,_0x5eee25){_0x5eee25=_0x5eee25||0xc8;return function(_0x4d827f){if(_0x4d827f){return _0x6bd9c2[_0xc06b('0x16')](_0x5eee25)['json'](_0x4d827f);}};}function respondWithFilteredResult(_0x58c255,_0x4600d6){return function(_0x14cc6f){if(_0x14cc6f){var _0x344041=_0x14cc6f[_0xc06b('0x17')],_0x49a792=_0x4600d6[_0xc06b('0x18')],_0x285086=_0x4600d6[_0xc06b('0x18')]+_0x4600d6[_0xc06b('0x19')],_0x2f2c35;if(_0x285086>=_0x344041){_0x285086=_0x344041;_0x2f2c35=0xc8;}else{_0x2f2c35=0xce;}_0x58c255[_0xc06b('0x16')](_0x2f2c35);return _0x58c255[_0xc06b('0x1a')](_0xc06b('0x1b'),_0x49a792+'-'+_0x285086+'/'+_0x344041)[_0xc06b('0x1c')](_0x14cc6f);}return null;};}function patchUpdates(_0x242365){return function(_0x3deeb8){try{jsonpatch[_0xc06b('0x1d')](_0x3deeb8,_0x242365,!![]);}catch(_0x29f4be){return BPromise['reject'](_0x29f4be);}return _0x3deeb8[_0xc06b('0x1e')]();};}function saveUpdates(_0x182572,_0x3cfd82){return function(_0x123a34){if(_0x123a34){return _0x123a34['update'](_0x182572)[_0xc06b('0x1f')](function(_0x3dabc9){return _0x3dabc9;});}return null;};}function removeEntity(_0x4cfa70,_0x204aa9){return function(_0x5b53a7){if(_0x5b53a7){return _0x5b53a7[_0xc06b('0x20')]()[_0xc06b('0x1f')](function(){_0x4cfa70[_0xc06b('0x16')](0xcc)[_0xc06b('0x15')]();});}};}function handleEntityNotFound(_0x4bd38a,_0x226904){return function(_0x16cdf0){if(!_0x16cdf0){_0x4bd38a[_0xc06b('0x14')](0x194);}return _0x16cdf0;};}function handleError(_0xf2d8d5,_0x225fbf){_0x225fbf=_0x225fbf||0x1f4;return function(_0xbbc847){logger[_0xc06b('0x21')](_0xbbc847[_0xc06b('0x22')]);if(_0xbbc847[_0xc06b('0x23')]){delete _0xbbc847[_0xc06b('0x23')];}_0xf2d8d5[_0xc06b('0x16')](_0x225fbf)[_0xc06b('0x24')](_0xbbc847);};}exports[_0xc06b('0x25')]=function(_0x542448,_0x5134b9){var _0x17c598={},_0x2e6fbf={},_0x30931e={'count':0x0,'rows':[]};var _0x393c1e=db[_0xc06b('0x26')][_0xc06b('0x27')];_0x2e6fbf[_0xc06b('0x28')]=_[_0xc06b('0x29')](_0x393c1e);var _0x490b9f={'dateStart':_0x542448['query'][_0xc06b('0x2a')],'dateEnd':_0x542448[_0xc06b('0x2b')][_0xc06b('0x2c')]};delete _0x542448[_0xc06b('0x2b')][_0xc06b('0x2a')];delete _0x542448[_0xc06b('0x2b')][_0xc06b('0x2c')];_0x2e6fbf['query']=_[_0xc06b('0x29')](_0x542448['query']);_0x2e6fbf['filters']=_[_0xc06b('0x2d')](_0x2e6fbf[_0xc06b('0x28')],_0x2e6fbf[_0xc06b('0x2b')]);_0x17c598['attributes']=_[_0xc06b('0x2d')](_0x2e6fbf['model'],qs[_0xc06b('0x2e')](_0x542448[_0xc06b('0x2b')][_0xc06b('0x2e')]));_0x17c598[_0xc06b('0x2f')]=_0x17c598[_0xc06b('0x2f')][_0xc06b('0x30')]?_0x17c598[_0xc06b('0x2f')]:_0x2e6fbf[_0xc06b('0x28')];if(!_0x542448[_0xc06b('0x2b')][_0xc06b('0x31')]('nolimit')){_0x17c598[_0xc06b('0x19')]=qs['limit'](_0x542448[_0xc06b('0x2b')][_0xc06b('0x19')]);_0x17c598[_0xc06b('0x18')]=qs['offset'](_0x542448[_0xc06b('0x2b')][_0xc06b('0x18')]);}_0x17c598['order']=qs['sort'](_0x542448[_0xc06b('0x2b')][_0xc06b('0x32')]);_0x17c598[_0xc06b('0x33')]=qs[_0xc06b('0x34')](_['pick'](_0x542448[_0xc06b('0x2b')],_0x2e6fbf[_0xc06b('0x34')]));if(_0x490b9f[_0xc06b('0x2a')]){if(_0x490b9f[_0xc06b('0x2c')]){_0x490b9f['dateEnd']=moment(_0x490b9f['dateEnd'])[_0xc06b('0x35')](0x1,_0xc06b('0x36'));}else{_0x490b9f[_0xc06b('0x2c')]=moment(_0x490b9f[_0xc06b('0x2a')])['add'](0x1,_0xc06b('0x36'));}_['merge'](_0x17c598[_0xc06b('0x33')],{'createdAt':{'$gte':_0x490b9f[_0xc06b('0x2a')],'$lte':_0x490b9f['dateEnd']}});}if(_0x542448[_0xc06b('0x2b')]['filter']){_0x17c598[_0xc06b('0x33')]=_[_0xc06b('0x37')](_0x17c598['where'],{'$or':_['map'](_0x393c1e,function(_0x5ed4bd){if(_0x5ed4bd[_0xc06b('0x38')][_0xc06b('0x39')]!==_0xc06b('0x3a')){var _0x2e757c={};_0x2e757c[_0x5ed4bd[_0xc06b('0x3b')]]={'$like':'%'+_0x542448['query'][_0xc06b('0x3c')]+'%'};return _0x2e757c;}})});}_0x17c598=_[_0xc06b('0x37')]({},_0x17c598,_0x542448['options']);var _0x81cf78={'where':_0x17c598['where']};return db[_0xc06b('0x26')][_0xc06b('0x17')](_0x81cf78)[_0xc06b('0x1f')](function(_0x5ea2a7){_0x30931e[_0xc06b('0x17')]=_0x5ea2a7;if(_0x542448[_0xc06b('0x2b')][_0xc06b('0x3d')]){_0x17c598[_0xc06b('0x3e')]=[{'all':!![]}];}return db[_0xc06b('0x26')]['findAll'](_0x17c598);})[_0xc06b('0x1f')](function(_0x438366){_0x30931e[_0xc06b('0x3f')]=_0x438366;return _0x30931e;})['then'](respondWithFilteredResult(_0x5134b9,_0x17c598))[_0xc06b('0x40')](handleError(_0x5134b9,null));};exports['show']=function(_0x5ad248,_0x3f2edb){var _0x481d97={'raw':!![],'where':{'id':_0x5ad248[_0xc06b('0x41')]['id']}},_0x3f4cbe={};_0x3f4cbe[_0xc06b('0x28')]=_[_0xc06b('0x29')](db[_0xc06b('0x26')]['rawAttributes']);_0x3f4cbe[_0xc06b('0x2b')]=_[_0xc06b('0x29')](_0x5ad248[_0xc06b('0x2b')]);_0x3f4cbe['filters']=_[_0xc06b('0x2d')](_0x3f4cbe['model'],_0x3f4cbe['query']);_0x481d97[_0xc06b('0x2f')]=_['intersection'](_0x3f4cbe[_0xc06b('0x28')],qs['fields'](_0x5ad248[_0xc06b('0x2b')][_0xc06b('0x2e')]));_0x481d97[_0xc06b('0x2f')]=_0x481d97[_0xc06b('0x2f')][_0xc06b('0x30')]?_0x481d97[_0xc06b('0x2f')]:_0x3f4cbe[_0xc06b('0x28')];if(_0x5ad248['query'][_0xc06b('0x3d')]){_0x481d97['include']=[{'all':!![]}];}_0x481d97=_[_0xc06b('0x37')]({},_0x481d97,_0x5ad248[_0xc06b('0x42')]);return db['FaxTransferReport'][_0xc06b('0x43')](_0x481d97)[_0xc06b('0x1f')](handleEntityNotFound(_0x3f2edb,null))[_0xc06b('0x1f')](respondWithResult(_0x3f2edb,null))[_0xc06b('0x40')](handleError(_0x3f2edb,null));};exports[_0xc06b('0x44')]=function(_0x581ed0,_0x274566){return db[_0xc06b('0x26')][_0xc06b('0x44')](_0x581ed0['body'],{})[_0xc06b('0x1f')](respondWithResult(_0x274566,0xc9))[_0xc06b('0x40')](handleError(_0x274566,null));};exports[_0xc06b('0x45')]=function(_0x136651,_0x265758){if(_0x136651['body']['id']){delete _0x136651[_0xc06b('0x46')]['id'];}return db[_0xc06b('0x26')][_0xc06b('0x43')]({'where':{'id':_0x136651['params']['id']}})['then'](handleEntityNotFound(_0x265758,null))[_0xc06b('0x1f')](saveUpdates(_0x136651['body'],null))['then'](respondWithResult(_0x265758,null))['catch'](handleError(_0x265758,null));};exports[_0xc06b('0x20')]=function(_0x4cbebb,_0x244c96){return db[_0xc06b('0x26')][_0xc06b('0x43')]({'where':{'id':_0x4cbebb[_0xc06b('0x41')]['id']}})[_0xc06b('0x1f')](handleEntityNotFound(_0x244c96,null))[_0xc06b('0x1f')](removeEntity(_0x244c96,null))['catch'](handleError(_0x244c96,null));};exports[_0xc06b('0x47')]=function(_0x1fa354,_0x4adc36){return db[_0xc06b('0x26')]['describe']()[_0xc06b('0x1f')](respondWithResult(_0x4adc36,null))['catch'](handleError(_0x4adc36,null));};
\ No newline at end of file
+var _0xd8b0=['attributes','length','model','nolimit','limit','order','sort','where','filters','dateStart','dateEnd','day','add','merge','filter','map','type','VIRTUAL','field','includeAll','include','catch','show','params','options','find','create','body','describe','html-pdf','eml-format','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','FaxTransferReport','rawAttributes','keys','query','intersection','fields'];(function(_0x155e04,_0x28cd61){var _0x4590d0=function(_0x3f685b){while(--_0x3f685b){_0x155e04['push'](_0x155e04['shift']());}};_0x4590d0(++_0x28cd61);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var pdf=require(_0x0d8b('0x0'));var emlformat=require(_0x0d8b('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0d8b('0x2'));var moment=require(_0x0d8b('0x3'));var BPromise=require(_0x0d8b('0x4'));var Mustache=require(_0x0d8b('0x5'));var util=require(_0x0d8b('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0d8b('0x7'));var ejs=require(_0x0d8b('0x8'));var fs=require('fs');var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0x7'));var querystring=require(_0x0d8b('0xc'));var Papa=require(_0x0d8b('0xd'));var Redis=require(_0x0d8b('0xe'));var qs=require(_0x0d8b('0xf'));var logger=require(_0x0d8b('0x10'))(_0x0d8b('0x11'));var utils=require(_0x0d8b('0x12'));var config=require('../../config/environment');var db=require(_0x0d8b('0x13'))['db'];function respondWithStatusCode(_0x4e0269,_0x4225c4){_0x4225c4=_0x4225c4||0xcc;return function(_0xc574a3){if(_0xc574a3){return _0x4e0269[_0x0d8b('0x14')](_0x4225c4);}return _0x4e0269[_0x0d8b('0x15')](_0x4225c4)[_0x0d8b('0x16')]();};}function respondWithResult(_0x32bb1a,_0x15dd0f){_0x15dd0f=_0x15dd0f||0xc8;return function(_0x31a8cc){if(_0x31a8cc){return _0x32bb1a[_0x0d8b('0x15')](_0x15dd0f)[_0x0d8b('0x17')](_0x31a8cc);}};}function respondWithFilteredResult(_0x5ad086,_0xe65334){return function(_0x1567ce){if(_0x1567ce){var _0x2d4e1c=_0x1567ce[_0x0d8b('0x18')],_0x4f6f21=_0xe65334[_0x0d8b('0x19')],_0x23eb7b=_0xe65334[_0x0d8b('0x19')]+_0xe65334['limit'],_0xa86349;if(_0x23eb7b>=_0x2d4e1c){_0x23eb7b=_0x2d4e1c;_0xa86349=0xc8;}else{_0xa86349=0xce;}_0x5ad086[_0x0d8b('0x15')](_0xa86349);return _0x5ad086[_0x0d8b('0x1a')](_0x0d8b('0x1b'),_0x4f6f21+'-'+_0x23eb7b+'/'+_0x2d4e1c)[_0x0d8b('0x17')](_0x1567ce);}return null;};}function patchUpdates(_0x333674){return function(_0x18dd2d){try{jsonpatch[_0x0d8b('0x1c')](_0x18dd2d,_0x333674,!![]);}catch(_0xa3612a){return BPromise['reject'](_0xa3612a);}return _0x18dd2d[_0x0d8b('0x1d')]();};}function saveUpdates(_0x23d58f,_0x196c0a){return function(_0x143372){if(_0x143372){return _0x143372[_0x0d8b('0x1e')](_0x23d58f)[_0x0d8b('0x1f')](function(_0x393beb){return _0x393beb;});}return null;};}function removeEntity(_0x352c17,_0x50ec1e){return function(_0x4f0a1a){if(_0x4f0a1a){return _0x4f0a1a[_0x0d8b('0x20')]()['then'](function(){_0x352c17['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x238728,_0x2b924f){return function(_0x214778){if(!_0x214778){_0x238728[_0x0d8b('0x14')](0x194);}return _0x214778;};}function handleError(_0x221071,_0x2c64e2){_0x2c64e2=_0x2c64e2||0x1f4;return function(_0x30980c){logger[_0x0d8b('0x21')](_0x30980c[_0x0d8b('0x22')]);if(_0x30980c['name']){delete _0x30980c[_0x0d8b('0x23')];}_0x221071[_0x0d8b('0x15')](_0x2c64e2)['send'](_0x30980c);};}exports[_0x0d8b('0x24')]=function(_0x4a0ae4,_0x3dd149){var _0x234bdd={},_0xa2af02={},_0x4fe6f9={'count':0x0,'rows':[]};var _0x59a905=db[_0x0d8b('0x25')][_0x0d8b('0x26')];_0xa2af02['model']=_[_0x0d8b('0x27')](_0x59a905);var _0x59aa83={'dateStart':_0x4a0ae4[_0x0d8b('0x28')]['dateStart'],'dateEnd':_0x4a0ae4[_0x0d8b('0x28')]['dateEnd']};delete _0x4a0ae4[_0x0d8b('0x28')]['dateStart'];delete _0x4a0ae4[_0x0d8b('0x28')]['dateEnd'];_0xa2af02[_0x0d8b('0x28')]=_[_0x0d8b('0x27')](_0x4a0ae4[_0x0d8b('0x28')]);_0xa2af02['filters']=_['intersection'](_0xa2af02['model'],_0xa2af02[_0x0d8b('0x28')]);_0x234bdd['attributes']=_[_0x0d8b('0x29')](_0xa2af02['model'],qs['fields'](_0x4a0ae4[_0x0d8b('0x28')][_0x0d8b('0x2a')]));_0x234bdd[_0x0d8b('0x2b')]=_0x234bdd[_0x0d8b('0x2b')][_0x0d8b('0x2c')]?_0x234bdd[_0x0d8b('0x2b')]:_0xa2af02[_0x0d8b('0x2d')];if(!_0x4a0ae4[_0x0d8b('0x28')]['hasOwnProperty'](_0x0d8b('0x2e'))){_0x234bdd[_0x0d8b('0x2f')]=qs['limit'](_0x4a0ae4[_0x0d8b('0x28')][_0x0d8b('0x2f')]);_0x234bdd[_0x0d8b('0x19')]=qs['offset'](_0x4a0ae4[_0x0d8b('0x28')][_0x0d8b('0x19')]);}_0x234bdd[_0x0d8b('0x30')]=qs[_0x0d8b('0x31')](_0x4a0ae4[_0x0d8b('0x28')]['sort']);_0x234bdd[_0x0d8b('0x32')]=qs[_0x0d8b('0x33')](_['pick'](_0x4a0ae4[_0x0d8b('0x28')],_0xa2af02[_0x0d8b('0x33')]));if(_0x59aa83[_0x0d8b('0x34')]){if(_0x59aa83[_0x0d8b('0x35')]){_0x59aa83[_0x0d8b('0x35')]=moment(_0x59aa83['dateEnd'])['add'](0x1,_0x0d8b('0x36'));}else{_0x59aa83['dateEnd']=moment(_0x59aa83['dateStart'])[_0x0d8b('0x37')](0x1,_0x0d8b('0x36'));}_[_0x0d8b('0x38')](_0x234bdd[_0x0d8b('0x32')],{'createdAt':{'$gte':_0x59aa83[_0x0d8b('0x34')],'$lte':_0x59aa83[_0x0d8b('0x35')]}});}if(_0x4a0ae4['query'][_0x0d8b('0x39')]){_0x234bdd[_0x0d8b('0x32')]=_[_0x0d8b('0x38')](_0x234bdd[_0x0d8b('0x32')],{'$or':_[_0x0d8b('0x3a')](_0x59a905,function(_0x1a39ad){if(_0x1a39ad[_0x0d8b('0x3b')]['key']!==_0x0d8b('0x3c')){var _0x34acb5={};_0x34acb5[_0x1a39ad[_0x0d8b('0x3d')]]={'$like':'%'+_0x4a0ae4[_0x0d8b('0x28')]['filter']+'%'};return _0x34acb5;}})});}_0x234bdd=_[_0x0d8b('0x38')]({},_0x234bdd,_0x4a0ae4['options']);var _0x37b26c={'where':_0x234bdd[_0x0d8b('0x32')]};return db[_0x0d8b('0x25')][_0x0d8b('0x18')](_0x37b26c)[_0x0d8b('0x1f')](function(_0x3e632e){_0x4fe6f9[_0x0d8b('0x18')]=_0x3e632e;if(_0x4a0ae4[_0x0d8b('0x28')][_0x0d8b('0x3e')]){_0x234bdd[_0x0d8b('0x3f')]=[{'all':!![]}];}return db['FaxTransferReport']['findAll'](_0x234bdd);})['then'](function(_0x4d0811){_0x4fe6f9['rows']=_0x4d0811;return _0x4fe6f9;})[_0x0d8b('0x1f')](respondWithFilteredResult(_0x3dd149,_0x234bdd))[_0x0d8b('0x40')](handleError(_0x3dd149,null));};exports[_0x0d8b('0x41')]=function(_0x5100cf,_0x4a76a3){var _0x1b216d={'raw':!![],'where':{'id':_0x5100cf[_0x0d8b('0x42')]['id']}},_0x192de1={};_0x192de1['model']=_[_0x0d8b('0x27')](db[_0x0d8b('0x25')]['rawAttributes']);_0x192de1['query']=_[_0x0d8b('0x27')](_0x5100cf['query']);_0x192de1[_0x0d8b('0x33')]=_['intersection'](_0x192de1['model'],_0x192de1[_0x0d8b('0x28')]);_0x1b216d[_0x0d8b('0x2b')]=_['intersection'](_0x192de1['model'],qs['fields'](_0x5100cf['query'][_0x0d8b('0x2a')]));_0x1b216d[_0x0d8b('0x2b')]=_0x1b216d[_0x0d8b('0x2b')]['length']?_0x1b216d[_0x0d8b('0x2b')]:_0x192de1[_0x0d8b('0x2d')];if(_0x5100cf[_0x0d8b('0x28')][_0x0d8b('0x3e')]){_0x1b216d[_0x0d8b('0x3f')]=[{'all':!![]}];}_0x1b216d=_[_0x0d8b('0x38')]({},_0x1b216d,_0x5100cf[_0x0d8b('0x43')]);return db[_0x0d8b('0x25')][_0x0d8b('0x44')](_0x1b216d)[_0x0d8b('0x1f')](handleEntityNotFound(_0x4a76a3,null))[_0x0d8b('0x1f')](respondWithResult(_0x4a76a3,null))[_0x0d8b('0x40')](handleError(_0x4a76a3,null));};exports[_0x0d8b('0x45')]=function(_0x3e569b,_0x570af8){return db[_0x0d8b('0x25')][_0x0d8b('0x45')](_0x3e569b[_0x0d8b('0x46')],{})[_0x0d8b('0x1f')](respondWithResult(_0x570af8,0xc9))['catch'](handleError(_0x570af8,null));};exports[_0x0d8b('0x1e')]=function(_0x4d8850,_0x5d29ab){if(_0x4d8850[_0x0d8b('0x46')]['id']){delete _0x4d8850[_0x0d8b('0x46')]['id'];}return db[_0x0d8b('0x25')][_0x0d8b('0x44')]({'where':{'id':_0x4d8850['params']['id']}})[_0x0d8b('0x1f')](handleEntityNotFound(_0x5d29ab,null))[_0x0d8b('0x1f')](saveUpdates(_0x4d8850[_0x0d8b('0x46')],null))[_0x0d8b('0x1f')](respondWithResult(_0x5d29ab,null))[_0x0d8b('0x40')](handleError(_0x5d29ab,null));};exports['destroy']=function(_0x5c0824,_0x4e4d5f){return db['FaxTransferReport'][_0x0d8b('0x44')]({'where':{'id':_0x5c0824[_0x0d8b('0x42')]['id']}})['then'](handleEntityNotFound(_0x4e4d5f,null))['then'](removeEntity(_0x4e4d5f,null))[_0x0d8b('0x40')](handleError(_0x4e4d5f,null));};exports[_0x0d8b('0x47')]=function(_0x5c5bd7,_0x5ef6c3){return db[_0x0d8b('0x25')][_0x0d8b('0x47')]()[_0x0d8b('0x1f')](respondWithResult(_0x5ef6c3,null))[_0x0d8b('0x40')](handleError(_0x5ef6c3,null));};
\ No newline at end of file
index 4e76421..739604f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8b7=['util','bluebird','./faxTransferReport.attributes','exports','define','report_fax_transfer','lodash'];(function(_0x21b397,_0x3d449a){var _0x7a1b9f=function(_0x2eb5d3){while(--_0x2eb5d3){_0x21b397['push'](_0x21b397['shift']());}};_0x7a1b9f(++_0x3d449a);}(_0xa8b7,0x68));var _0x7a8b=function(_0x4c2628,_0xe3e3){_0x4c2628=_0x4c2628-0x0;var _0x310bbc=_0xa8b7[_0x4c2628];return _0x310bbc;};'use strict';var _=require(_0x7a8b('0x0'));var util=require(_0x7a8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x7a8b('0x2'));var rp=require('request-promise');var attributes=require(_0x7a8b('0x3'));module[_0x7a8b('0x4')]=function(_0x57fc04,_0x52095b){return _0x57fc04[_0x7a8b('0x5')]('FaxTransferReport',attributes,{'tableName':_0x7a8b('0x6'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x581e=['moment','bluebird','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','api'];(function(_0xb4e663,_0x55a593){var _0x3fa134=function(_0x291d19){while(--_0x291d19){_0xb4e663['push'](_0xb4e663['shift']());}};_0x3fa134(++_0x55a593);}(_0x581e,0x13d));var _0xe581=function(_0x148ada,_0xdd1b6c){_0x148ada=_0x148ada-0x0;var _0xc10203=_0x581e[_0x148ada];return _0xc10203;};'use strict';var _=require(_0xe581('0x0'));var util=require(_0xe581('0x1'));var logger=require('../../config/logger')(_0xe581('0x2'));var moment=require(_0xe581('0x3'));var BPromise=require(_0xe581('0x4'));var rp=require('request-promise');var attributes=require(_0xe581('0x5'));module['exports']=function(_0x46dea0,_0x3dc079){return _0x46dea0[_0xe581('0x6')](_0xe581('0x7'),attributes,{'tableName':_0xe581('0x8'),'paranoid':![],'indexes':[{'name':_0xe581('0x9'),'fields':[_0xe581('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index aee41b7..85449eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1aa=['request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x134b5e,_0x38ffae){var _0x388a4a=function(_0x5ecb89){while(--_0x5ecb89){_0x134b5e['push'](_0x134b5e['shift']());}};_0x388a4a(++_0x38ffae);}(_0xb1aa,0x11a));var _0xab1a=function(_0x1b5d12,_0x4b3030){_0x1b5d12=_0x1b5d12-0x0;var _0x6117a6=_0xb1aa[_0x1b5d12];return _0x6117a6;};'use strict';var _=require(_0xab1a('0x0'));var util=require(_0xab1a('0x1'));var moment=require(_0xab1a('0x2'));var BPromise=require(_0xab1a('0x3'));var rs=require(_0xab1a('0x4'));var fs=require('fs');var Redis=require(_0xab1a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xab1a('0x6'));var logger=require('../../config/logger')(_0xab1a('0x7'));var config=require(_0xab1a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xab1a('0x9')][_0xab1a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30d411,_0x582b15,_0x31ecc5){return new BPromise(function(_0x3228f9,_0x5c1d1b){return client[_0xab1a('0xb')](_0x30d411,_0x31ecc5)[_0xab1a('0xc')](function(_0x4f2197){logger[_0xab1a('0xd')](_0xab1a('0xe'),_0x582b15,'request\x20sent');logger[_0xab1a('0xf')](_0xab1a('0x10'),_0x582b15,_0xab1a('0x11'),JSON[_0xab1a('0x12')](_0x4f2197));if(_0x4f2197[_0xab1a('0x13')]){if(_0x4f2197['error']['code']===0x1f4){logger[_0xab1a('0x13')](_0xab1a('0xe'),_0x582b15,_0x4f2197[_0xab1a('0x13')][_0xab1a('0x14')]);return _0x5c1d1b(_0x4f2197[_0xab1a('0x13')]['message']);}logger[_0xab1a('0x13')](_0xab1a('0xe'),_0x582b15,_0x4f2197['error']['message']);return _0x3228f9(_0x4f2197[_0xab1a('0x13')][_0xab1a('0x14')]);}else{logger[_0xab1a('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x582b15,_0xab1a('0x11'));_0x3228f9(_0x4f2197[_0xab1a('0x15')]['message']);}})[_0xab1a('0x16')](function(_0x55e56c){logger[_0xab1a('0x13')](_0xab1a('0xe'),_0x582b15,_0x55e56c);_0x5c1d1b(_0x55e56c);});});}
\ No newline at end of file
+var _0xc921=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxTransferReport,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','moment'];(function(_0x513f69,_0x591b05){var _0x142bad=function(_0x4a8826){while(--_0x4a8826){_0x513f69['push'](_0x513f69['shift']());}};_0x142bad(++_0x591b05);}(_0xc921,0x70));var _0x1c92=function(_0x235482,_0x14b833){_0x235482=_0x235482-0x0;var _0x5f5bea=_0xc921[_0x235482];return _0x5f5bea;};'use strict';var _=require(_0x1c92('0x0'));var util=require(_0x1c92('0x1'));var moment=require(_0x1c92('0x2'));var BPromise=require(_0x1c92('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1c92('0x4'));var db=require(_0x1c92('0x5'))['db'];var utils=require(_0x1c92('0x6'));var logger=require(_0x1c92('0x7'))(_0x1c92('0x8'));var config=require(_0x1c92('0x9'));var jayson=require(_0x1c92('0xa'));var client=jayson['client'][_0x1c92('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x7eb59a,_0x59729c,_0x54e525){return new BPromise(function(_0x449336,_0x625a01){return client['request'](_0x7eb59a,_0x54e525)['then'](function(_0x5aa361){logger[_0x1c92('0xc')]('FaxTransferReport,\x20%s,\x20%s',_0x59729c,'request\x20sent');logger[_0x1c92('0xd')](_0x1c92('0xe'),_0x59729c,'request\x20sent',JSON[_0x1c92('0xf')](_0x5aa361));if(_0x5aa361['error']){if(_0x5aa361[_0x1c92('0x10')][_0x1c92('0x11')]===0x1f4){logger[_0x1c92('0x10')](_0x1c92('0x12'),_0x59729c,_0x5aa361[_0x1c92('0x10')]['message']);return _0x625a01(_0x5aa361[_0x1c92('0x10')][_0x1c92('0x13')]);}logger[_0x1c92('0x10')](_0x1c92('0x12'),_0x59729c,_0x5aa361[_0x1c92('0x10')]['message']);return _0x449336(_0x5aa361[_0x1c92('0x10')][_0x1c92('0x13')]);}else{logger[_0x1c92('0xc')]('FaxTransferReport,\x20%s,\x20%s',_0x59729c,_0x1c92('0x14'));_0x449336(_0x5aa361[_0x1c92('0x15')][_0x1c92('0x13')]);}})[_0x1c92('0x16')](function(_0x2760ee){logger[_0x1c92('0x10')]('FaxTransferReport,\x20%s,\x20%s',_0x59729c,_0x2760ee);_0x625a01(_0x2760ee);});});}
\ No newline at end of file
index 40f74b2..a6cc879 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac31=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./faxTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','put'];(function(_0x4601fd,_0x4efca0){var _0x328970=function(_0x2269a6){while(--_0x2269a6){_0x4601fd['push'](_0x4601fd['shift']());}};_0x328970(++_0x4efca0);}(_0xac31,0xca));var _0x1ac3=function(_0x25bc47,_0x1b4615){_0x25bc47=_0x25bc47-0x0;var _0x24eb34=_0xac31[_0x25bc47];return _0x24eb34;};'use strict';var multer=require(_0x1ac3('0x0'));var util=require(_0x1ac3('0x1'));var path=require(_0x1ac3('0x2'));var timeout=require(_0x1ac3('0x3'));var express=require(_0x1ac3('0x4'));var router=express[_0x1ac3('0x5')]();var auth=require(_0x1ac3('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1ac3('0x7'));var controller=require(_0x1ac3('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x1ac3('0x9')]);router[_0x1ac3('0xa')](_0x1ac3('0xb'),auth[_0x1ac3('0xc')](),controller[_0x1ac3('0xd')]);router['get'](_0x1ac3('0xe'),auth['isAuthenticated'](),controller[_0x1ac3('0xf')]);router[_0x1ac3('0x10')]('/',auth[_0x1ac3('0xc')](),controller['create']);router[_0x1ac3('0x11')](_0x1ac3('0xe'),auth[_0x1ac3('0xc')](),controller[_0x1ac3('0x12')]);router[_0x1ac3('0x13')](_0x1ac3('0xe'),auth['isAuthenticated'](),controller[_0x1ac3('0x14')]);module[_0x1ac3('0x15')]=router;
\ No newline at end of file
+var _0x17ba=['describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe'];(function(_0x5b940b,_0x451fb5){var _0x4fc692=function(_0x1dffad){while(--_0x1dffad){_0x5b940b['push'](_0x5b940b['shift']());}};_0x4fc692(++_0x451fb5);}(_0x17ba,0xab));var _0xa17b=function(_0x23559d,_0x55e1c7){_0x23559d=_0x23559d-0x0;var _0x453b0f=_0x17ba[_0x23559d];return _0x453b0f;};'use strict';var multer=require(_0xa17b('0x0'));var util=require(_0xa17b('0x1'));var path=require('path');var timeout=require(_0xa17b('0x2'));var express=require(_0xa17b('0x3'));var router=express[_0xa17b('0x4')]();var auth=require(_0xa17b('0x5'));var interaction=require(_0xa17b('0x6'));var config=require(_0xa17b('0x7'));var controller=require(_0xa17b('0x8'));router[_0xa17b('0x9')]('/',auth[_0xa17b('0xa')](),controller[_0xa17b('0xb')]);router[_0xa17b('0x9')](_0xa17b('0xc'),auth[_0xa17b('0xa')](),controller[_0xa17b('0xd')]);router[_0xa17b('0x9')](_0xa17b('0xe'),auth[_0xa17b('0xa')](),controller[_0xa17b('0xf')]);router[_0xa17b('0x10')]('/',auth['isAuthenticated'](),controller[_0xa17b('0x11')]);router[_0xa17b('0x12')](_0xa17b('0xe'),auth[_0xa17b('0xa')](),controller[_0xa17b('0x13')]);router[_0xa17b('0x14')](_0xa17b('0xe'),auth['isAuthenticated'](),controller[_0xa17b('0x15')]);module[_0xa17b('0x16')]=router;
\ No newline at end of file
index 1efcee8..1ecd87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb90=['destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','delete'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xfb90,0xb1));var _0x0fb9=function(_0x3a21c0,_0x348451){_0x3a21c0=_0x3a21c0-0x0;var _0x411e84=_0xfb90[_0x3a21c0];return _0x411e84;};'use strict';var multer=require('multer');var util=require(_0x0fb9('0x0'));var path=require(_0x0fb9('0x1'));var timeout=require(_0x0fb9('0x2'));var express=require(_0x0fb9('0x3'));var router=express[_0x0fb9('0x4')]();var auth=require(_0x0fb9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0fb9('0x6'));var controller=require(_0x0fb9('0x7'));router[_0x0fb9('0x8')]('/',auth[_0x0fb9('0x9')](),controller[_0x0fb9('0xa')]);router[_0x0fb9('0x8')](_0x0fb9('0xb'),auth[_0x0fb9('0x9')](),controller[_0x0fb9('0xc')]);router['get'](_0x0fb9('0xd'),auth[_0x0fb9('0x9')](),controller[_0x0fb9('0xe')]);router[_0x0fb9('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0x0fb9('0xf')]);router[_0x0fb9('0x10')]('/',auth['isAuthenticated'](),controller[_0x0fb9('0x11')]);router[_0x0fb9('0x10')](_0x0fb9('0xd'),auth[_0x0fb9('0x9')](),controller[_0x0fb9('0x12')]);router[_0x0fb9('0x13')]('/:id',auth[_0x0fb9('0x9')](),controller['update']);router[_0x0fb9('0x14')](_0x0fb9('0xb'),auth['isAuthenticated'](),controller[_0x0fb9('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x744e=['path','express','Router','../../components/auth/service','../../config/environment','./intDeskAccount.controller','get','index','isAuthenticated','show','/:id/configurations','/:id/fields','getFields','create','post','addConfiguration','put','/:id','delete','exports','util'];(function(_0x204ad4,_0x502841){var _0x50675f=function(_0x30ad49){while(--_0x30ad49){_0x204ad4['push'](_0x204ad4['shift']());}};_0x50675f(++_0x502841);}(_0x744e,0xd1));var _0xe744=function(_0x664467,_0x380ff3){_0x664467=_0x664467-0x0;var _0x42b8d5=_0x744e[_0x664467];return _0x42b8d5;};'use strict';var multer=require('multer');var util=require(_0xe744('0x0'));var path=require(_0xe744('0x1'));var timeout=require('connect-timeout');var express=require(_0xe744('0x2'));var router=express[_0xe744('0x3')]();var auth=require(_0xe744('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe744('0x5'));var controller=require(_0xe744('0x6'));router[_0xe744('0x7')]('/',auth['isAuthenticated'](),controller[_0xe744('0x8')]);router[_0xe744('0x7')]('/:id',auth[_0xe744('0x9')](),controller[_0xe744('0xa')]);router[_0xe744('0x7')](_0xe744('0xb'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0xe744('0x7')](_0xe744('0xc'),auth[_0xe744('0x9')](),controller[_0xe744('0xd')]);router['post']('/',auth[_0xe744('0x9')](),controller[_0xe744('0xe')]);router[_0xe744('0xf')](_0xe744('0xb'),auth[_0xe744('0x9')](),controller[_0xe744('0x10')]);router[_0xe744('0x11')](_0xe744('0x12'),auth[_0xe744('0x9')](),controller['update']);router[_0xe744('0x13')]('/:id',auth[_0xe744('0x9')](),controller['destroy']);module[_0xe744('0x14')]=router;
\ No newline at end of file
index 8f2e5ab..f595d11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9da8=['basic','ENUM','newTab','integrationTab','sequelize','STRING'];(function(_0x3d25ae,_0x1a73e5){var _0x50b367=function(_0x52de92){while(--_0x52de92){_0x3d25ae['push'](_0x3d25ae['shift']());}};_0x50b367(++_0x1a73e5);}(_0x9da8,0x1ae));var _0x89da=function(_0x2388be,_0x43ebae){_0x2388be=_0x2388be-0x0;var _0x13ac52=_0x9da8[_0x2388be];return _0x13ac52;};'use strict';var Sequelize=require(_0x89da('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x89da('0x1')]},'username':{'type':Sequelize[_0x89da('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize['ENUM'](_0x89da('0x2')),'defaultValue':_0x89da('0x2')},'password':{'type':Sequelize[_0x89da('0x1')]},'consumerKey':{'type':Sequelize[_0x89da('0x1')]},'consumerSecret':{'type':Sequelize[_0x89da('0x1')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x89da('0x1')]},'type':{'type':Sequelize[_0x89da('0x3')]('integrationTab',_0x89da('0x4')),'defaultValue':_0x89da('0x5')}};
\ No newline at end of file
+var _0x50c4=['STRING','ENUM','basic','integrationTab','exports'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x50c4,0x1bc));var _0x450c=function(_0x3fee7e,_0xcaeb28){_0x3fee7e=_0x3fee7e-0x0;var _0x200ed5=_0x50c4[_0x3fee7e];return _0x200ed5;};'use strict';var Sequelize=require('sequelize');module[_0x450c('0x0')]={'name':{'type':Sequelize[_0x450c('0x1')]},'description':{'type':Sequelize[_0x450c('0x1')]},'username':{'type':Sequelize[_0x450c('0x1')]},'remoteUri':{'type':Sequelize[_0x450c('0x1')]},'authType':{'type':Sequelize[_0x450c('0x2')]('basic'),'defaultValue':_0x450c('0x3')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x450c('0x1')]},'consumerSecret':{'type':Sequelize[_0x450c('0x1')]},'token':{'type':Sequelize[_0x450c('0x1')]},'tokenSecret':{'type':Sequelize[_0x450c('0x1')]},'serverUrl':{'type':Sequelize[_0x450c('0x1')]},'type':{'type':Sequelize[_0x450c('0x2')](_0x450c('0x4'),'newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
index f5e9baf..a3cb7dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4616=['intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','add','merge','filter','map','key','VIRTUAL','field','DeskAccount','includeAll','include','show','params','rawAttributes','options','find','create','body','destroy','getConfigurations','findOne','AccountId','Subjects','getSubjects','type','Descriptions','getDescriptions','channel','DeskField','priority','authType','username','password','consumerKey','tokenSecret','GET','format','%s/custom_fields','application/json','basic','headers','Basic\x20%s','%s:%s','toString','base64','_embedded','entries','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','stack','name','send','index','model','keys','query','dateStart','dateEnd','filters','attributes'];(function(_0x2b2934,_0xfac4e4){var _0x2b4aea=function(_0xa1fbdc){while(--_0xa1fbdc){_0x2b2934['push'](_0x2b2934['shift']());}};_0x2b4aea(++_0xfac4e4);}(_0x4616,0x19c));var _0x6461=function(_0x4c27a5,_0x2355d6){_0x4c27a5=_0x4c27a5-0x0;var _0x41dca5=_0x4616[_0x4c27a5];return _0x41dca5;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x6461('0x0'));var rimraf=require(_0x6461('0x1'));var zipdir=require(_0x6461('0x2'));var jsonpatch=require(_0x6461('0x3'));var rp=require(_0x6461('0x4'));var moment=require('moment');var BPromise=require(_0x6461('0x5'));var Mustache=require(_0x6461('0x6'));var util=require(_0x6461('0x7'));var path=require(_0x6461('0x8'));var sox=require(_0x6461('0x9'));var csv=require('to-csv');var ejs=require(_0x6461('0xa'));var fs=require('fs');var _=require(_0x6461('0xb'));var squel=require(_0x6461('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6461('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6461('0xe'));var Papa=require(_0x6461('0xf'));var Redis=require(_0x6461('0x10'));var qs=require('../../components/parsers/qs');var logger=require(_0x6461('0x11'))('api');var utils=require(_0x6461('0x12'));var config=require(_0x6461('0x13'));var db=require(_0x6461('0x14'))['db'];var integrations=require(_0x6461('0x15'));var jayson=require(_0x6461('0x16'));var client=jayson[_0x6461('0x17')][_0x6461('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x435b34,_0x1370d5,_0x11dd93,_0x26df47){return new BPromise(function(_0x3f8a68,_0x2fc5b7){var _0x4e4bf7=_0x26df47||client;return _0x4e4bf7['request'](_0x435b34,_0x11dd93)[_0x6461('0x19')](function(_0x1974f5){logger[_0x6461('0x1a')](_0x6461('0x1b'),_0x1370d5,_0x6461('0x1c'));logger[_0x6461('0x1d')]('DeskAccount,\x20%s,\x20%s,\x20%s',_0x1370d5,_0x6461('0x1c'),JSON[_0x6461('0x1e')](_0x1974f5));if(_0x1974f5['error']){if(_0x1974f5[_0x6461('0x1f')][_0x6461('0x20')]===0x1f4){logger[_0x6461('0x1f')](_0x6461('0x1b'),_0x1370d5,_0x1974f5[_0x6461('0x1f')]['message']);return _0x2fc5b7(_0x1974f5['error'][_0x6461('0x21')]);}logger[_0x6461('0x1f')](_0x6461('0x1b'),_0x1370d5,_0x1974f5[_0x6461('0x1f')][_0x6461('0x21')]);return _0x3f8a68(_0x1974f5[_0x6461('0x1f')][_0x6461('0x21')]);}else{logger[_0x6461('0x1a')]('DeskAccount,\x20%s,\x20%s',_0x1370d5,_0x6461('0x1c'));_0x3f8a68(_0x1974f5[_0x6461('0x22')]['message']);}})[_0x6461('0x23')](function(_0xc77a5){logger[_0x6461('0x1f')](_0x6461('0x1b'),_0x1370d5,_0xc77a5);_0x2fc5b7(_0xc77a5);});});}function respondWithStatusCode(_0x3a330d,_0x4f0e66){_0x4f0e66=_0x4f0e66||0xcc;return function(_0x143b1a){if(_0x143b1a){return _0x3a330d[_0x6461('0x24')](_0x4f0e66);}return _0x3a330d[_0x6461('0x25')](_0x4f0e66)[_0x6461('0x26')]();};}function respondWithResult(_0x791147,_0x3dd566){_0x3dd566=_0x3dd566||0xc8;return function(_0x28be0a){if(_0x28be0a){return _0x791147[_0x6461('0x25')](_0x3dd566)[_0x6461('0x27')](_0x28be0a);}};}function respondWithFilteredResult(_0x5cdc7b,_0x249786){return function(_0x4a9b68){if(_0x4a9b68){var _0x369a81=_0x4a9b68[_0x6461('0x28')],_0x47a9d8=_0x249786[_0x6461('0x29')],_0x51cdf9=_0x249786[_0x6461('0x29')]+_0x249786[_0x6461('0x2a')],_0x5baaf2;if(_0x51cdf9>=_0x369a81){_0x51cdf9=_0x369a81;_0x5baaf2=0xc8;}else{_0x5baaf2=0xce;}_0x5cdc7b[_0x6461('0x25')](_0x5baaf2);return _0x5cdc7b[_0x6461('0x2b')](_0x6461('0x2c'),_0x47a9d8+'-'+_0x51cdf9+'/'+_0x369a81)[_0x6461('0x27')](_0x4a9b68);}return null;};}function patchUpdates(_0x114f89){return function(_0x253d37){try{jsonpatch[_0x6461('0x2d')](_0x253d37,_0x114f89,!![]);}catch(_0x35be4a){return BPromise[_0x6461('0x2e')](_0x35be4a);}return _0x253d37[_0x6461('0x2f')]();};}function saveUpdates(_0x4f9615,_0x574e12){return function(_0x572180){if(_0x572180){return _0x572180[_0x6461('0x30')](_0x4f9615)['then'](function(_0x3d5788){return _0x3d5788;});}return null;};}function removeEntity(_0x417057,_0x4795d1){return function(_0x3c0337){if(_0x3c0337){return _0x3c0337['destroy']()[_0x6461('0x19')](function(){_0x417057[_0x6461('0x25')](0xcc)[_0x6461('0x26')]();});}};}function handleEntityNotFound(_0x1c6ce6,_0x54534f){return function(_0x25d07d){if(!_0x25d07d){_0x1c6ce6[_0x6461('0x24')](0x194);}return _0x25d07d;};}function handleError(_0x349115,_0x52cf18){_0x52cf18=_0x52cf18||0x1f4;return function(_0x23821e){logger[_0x6461('0x1f')](_0x23821e[_0x6461('0x31')]);if(_0x23821e[_0x6461('0x32')]){delete _0x23821e['name'];}_0x349115[_0x6461('0x25')](_0x52cf18)[_0x6461('0x33')](_0x23821e);};}exports[_0x6461('0x34')]=function(_0x37bc1a,_0x3239af){var _0x3347cd={},_0x2da651={},_0x2c6d73={'count':0x0,'rows':[]};var _0x53857c=db['DeskAccount']['rawAttributes'];_0x2da651[_0x6461('0x35')]=_[_0x6461('0x36')](_0x53857c);var _0x3d2c49={'dateStart':_0x37bc1a[_0x6461('0x37')]['dateStart'],'dateEnd':_0x37bc1a['query']['dateEnd']};delete _0x37bc1a[_0x6461('0x37')][_0x6461('0x38')];delete _0x37bc1a['query'][_0x6461('0x39')];_0x2da651[_0x6461('0x37')]=_['keys'](_0x37bc1a[_0x6461('0x37')]);_0x2da651[_0x6461('0x3a')]=_['intersection'](_0x2da651[_0x6461('0x35')],_0x2da651[_0x6461('0x37')]);_0x3347cd[_0x6461('0x3b')]=_[_0x6461('0x3c')](_0x2da651['model'],qs[_0x6461('0x3d')](_0x37bc1a[_0x6461('0x37')][_0x6461('0x3d')]));_0x3347cd['attributes']=_0x3347cd[_0x6461('0x3b')][_0x6461('0x3e')]?_0x3347cd[_0x6461('0x3b')]:_0x2da651[_0x6461('0x35')];if(!_0x37bc1a['query'][_0x6461('0x3f')](_0x6461('0x40'))){_0x3347cd['limit']=qs[_0x6461('0x2a')](_0x37bc1a[_0x6461('0x37')][_0x6461('0x2a')]);_0x3347cd['offset']=qs[_0x6461('0x29')](_0x37bc1a[_0x6461('0x37')][_0x6461('0x29')]);}_0x3347cd[_0x6461('0x41')]=qs[_0x6461('0x42')](_0x37bc1a[_0x6461('0x37')][_0x6461('0x42')]);_0x3347cd[_0x6461('0x43')]=qs[_0x6461('0x3a')](_[_0x6461('0x44')](_0x37bc1a[_0x6461('0x37')],_0x2da651['filters']));if(_0x3d2c49[_0x6461('0x38')]){if(_0x3d2c49[_0x6461('0x39')]){_0x3d2c49[_0x6461('0x39')]=moment(_0x3d2c49[_0x6461('0x39')])[_0x6461('0x45')](0x1,'day');}else{_0x3d2c49['dateEnd']=moment(_0x3d2c49[_0x6461('0x38')])[_0x6461('0x45')](0x1,'day');}_[_0x6461('0x46')](_0x3347cd['where'],{'createdAt':{'$gte':_0x3d2c49[_0x6461('0x38')],'$lte':_0x3d2c49['dateEnd']}});}if(_0x37bc1a[_0x6461('0x37')][_0x6461('0x47')]){_0x3347cd['where']=_[_0x6461('0x46')](_0x3347cd[_0x6461('0x43')],{'$or':_[_0x6461('0x48')](_0x53857c,function(_0x105bcf){if(_0x105bcf['type'][_0x6461('0x49')]!==_0x6461('0x4a')){var _0x413929={};_0x413929[_0x105bcf[_0x6461('0x4b')]]={'$like':'%'+_0x37bc1a['query']['filter']+'%'};return _0x413929;}})});}_0x3347cd=_['merge']({},_0x3347cd,_0x37bc1a['options']);var _0x3d1df3={'where':_0x3347cd['where']};return db[_0x6461('0x4c')][_0x6461('0x28')](_0x3d1df3)[_0x6461('0x19')](function(_0x32ca87){_0x2c6d73[_0x6461('0x28')]=_0x32ca87;if(_0x37bc1a[_0x6461('0x37')][_0x6461('0x4d')]){_0x3347cd[_0x6461('0x4e')]=[{'all':!![]}];}return db['DeskAccount']['findAll'](_0x3347cd);})[_0x6461('0x19')](function(_0x345502){_0x2c6d73['rows']=_0x345502;return _0x2c6d73;})[_0x6461('0x19')](respondWithFilteredResult(_0x3239af,_0x3347cd))[_0x6461('0x23')](handleError(_0x3239af,null));};exports[_0x6461('0x4f')]=function(_0x5aef0a,_0x32f428){var _0x203360={'raw':![],'where':{'id':_0x5aef0a[_0x6461('0x50')]['id']}},_0x6ae05a={};_0x6ae05a[_0x6461('0x35')]=_[_0x6461('0x36')](db[_0x6461('0x4c')][_0x6461('0x51')]);_0x6ae05a[_0x6461('0x37')]=_['keys'](_0x5aef0a[_0x6461('0x37')]);_0x6ae05a[_0x6461('0x3a')]=_[_0x6461('0x3c')](_0x6ae05a['model'],_0x6ae05a[_0x6461('0x37')]);_0x203360['attributes']=_[_0x6461('0x3c')](_0x6ae05a[_0x6461('0x35')],qs['fields'](_0x5aef0a[_0x6461('0x37')][_0x6461('0x3d')]));_0x203360[_0x6461('0x3b')]=_0x203360[_0x6461('0x3b')]['length']?_0x203360['attributes']:_0x6ae05a[_0x6461('0x35')];if(_0x5aef0a[_0x6461('0x37')]['includeAll']){_0x203360[_0x6461('0x4e')]=[{'all':!![]}];}_0x203360=_[_0x6461('0x46')]({},_0x203360,_0x5aef0a[_0x6461('0x52')]);return db[_0x6461('0x4c')][_0x6461('0x53')](_0x203360)[_0x6461('0x19')](handleEntityNotFound(_0x32f428,null))[_0x6461('0x19')](respondWithResult(_0x32f428,null))[_0x6461('0x23')](handleError(_0x32f428,null));};exports[_0x6461('0x54')]=function(_0x2200aa,_0x2e5fa9){return db[_0x6461('0x4c')][_0x6461('0x54')](_0x2200aa[_0x6461('0x55')],{})[_0x6461('0x19')](respondWithResult(_0x2e5fa9,0xc9))[_0x6461('0x23')](handleError(_0x2e5fa9,null));};exports['update']=function(_0x586401,_0x1431f6){if(_0x586401[_0x6461('0x55')]['id']){delete _0x586401[_0x6461('0x55')]['id'];}return db[_0x6461('0x4c')][_0x6461('0x53')]({'where':{'id':_0x586401['params']['id']}})[_0x6461('0x19')](handleEntityNotFound(_0x1431f6,null))[_0x6461('0x19')](saveUpdates(_0x586401[_0x6461('0x55')],null))[_0x6461('0x19')](respondWithResult(_0x1431f6,null))['catch'](handleError(_0x1431f6,null));};exports[_0x6461('0x56')]=function(_0x251b0b,_0x81968a){return db[_0x6461('0x4c')]['find']({'where':{'id':_0x251b0b[_0x6461('0x50')]['id']}})[_0x6461('0x19')](handleEntityNotFound(_0x81968a,null))['then'](removeEntity(_0x81968a,null))[_0x6461('0x23')](handleError(_0x81968a,null));};exports[_0x6461('0x57')]=function(_0x2a3f1e,_0x1175f2,_0x507bbd){var _0x139fe5={};var _0x413d01={};var _0x43fc1b;var _0x23fab1;return db['DeskAccount'][_0x6461('0x58')]({'where':{'id':_0x2a3f1e['params']['id']}})['then'](handleEntityNotFound(_0x1175f2,null))['then'](function(_0x44359b){if(_0x44359b){_0x43fc1b=_0x44359b;_0x413d01[_0x6461('0x35')]=_[_0x6461('0x36')](db['DeskConfiguration']['rawAttributes']);_0x413d01['query']=_[_0x6461('0x36')](_0x2a3f1e[_0x6461('0x37')]);_0x413d01['filters']=_[_0x6461('0x3c')](_0x413d01[_0x6461('0x35')],_0x413d01[_0x6461('0x37')]);_0x139fe5[_0x6461('0x3b')]=_[_0x6461('0x3c')](_0x413d01[_0x6461('0x35')],qs[_0x6461('0x3d')](_0x2a3f1e[_0x6461('0x37')][_0x6461('0x3d')]));_0x139fe5[_0x6461('0x3b')]=_0x139fe5[_0x6461('0x3b')][_0x6461('0x3e')]?_0x139fe5[_0x6461('0x3b')]:_0x413d01[_0x6461('0x35')];_0x139fe5[_0x6461('0x41')]=qs['sort'](_0x2a3f1e[_0x6461('0x37')][_0x6461('0x42')]);_0x139fe5['where']=qs[_0x6461('0x3a')](_[_0x6461('0x44')](_0x2a3f1e[_0x6461('0x37')],_0x413d01[_0x6461('0x3a')]));if(_0x2a3f1e['query']['filter']){_0x139fe5['where']=_['merge'](_0x139fe5['where'],{'$or':_[_0x6461('0x48')](_0x139fe5['attributes'],function(_0xe4271){var _0x320541={};_0x320541[_0xe4271]={'$like':'%'+_0x2a3f1e[_0x6461('0x37')][_0x6461('0x47')]+'%'};return _0x320541;})});}_0x139fe5=_[_0x6461('0x46')]({},_0x139fe5,_0x2a3f1e[_0x6461('0x52')]);return _0x43fc1b[_0x6461('0x57')](_0x139fe5);}})[_0x6461('0x19')](function(_0x4bfb6c){if(_0x4bfb6c){_0x23fab1=_0x4bfb6c['length'];if(!_0x2a3f1e['query'][_0x6461('0x3f')]('nolimit')){_0x139fe5[_0x6461('0x2a')]=qs[_0x6461('0x2a')](_0x2a3f1e[_0x6461('0x37')][_0x6461('0x2a')]);_0x139fe5[_0x6461('0x29')]=qs[_0x6461('0x29')](_0x2a3f1e['query'][_0x6461('0x29')]);}return _0x43fc1b[_0x6461('0x57')](_0x139fe5);}})['then'](function(_0x566b7e){if(_0x566b7e){return _0x566b7e?{'count':_0x23fab1,'rows':_0x566b7e}:null;}})['then'](respondWithResult(_0x1175f2,null))[_0x6461('0x23')](handleError(_0x1175f2,null));};exports['addConfiguration']=function(_0xc52fdb,_0xaf0340,_0x363151){if(_0xc52fdb['body']['id']){delete _0xc52fdb[_0x6461('0x55')]['id'];}return db[_0x6461('0x4c')][_0x6461('0x58')]({'where':{'id':_0xc52fdb[_0x6461('0x50')]['id']}})[_0x6461('0x19')](handleEntityNotFound(_0xaf0340,null))[_0x6461('0x19')](function(_0x4e3b0d){if(_0x4e3b0d){_0xc52fdb[_0x6461('0x55')][_0x6461('0x59')]=_0x4e3b0d['id'];_0xc52fdb['body'][_0x6461('0x5a')]=integrations[_0x6461('0x5b')](_0xc52fdb[_0x6461('0x55')]['channel'],_0xc52fdb[_0x6461('0x55')][_0x6461('0x5c')]);_0xc52fdb[_0x6461('0x55')][_0x6461('0x5d')]=integrations[_0x6461('0x5e')](_0xc52fdb[_0x6461('0x55')][_0x6461('0x5f')],_0xc52fdb[_0x6461('0x55')][_0x6461('0x5c')]);return db['DeskConfiguration']['create'](_0xc52fdb['body'],{'include':[{'model':db[_0x6461('0x60')],'as':_0x6461('0x5a')},{'model':db['DeskField'],'as':_0x6461('0x5d')}]});}return null;})[_0x6461('0x19')](respondWithResult(_0xaf0340,null))[_0x6461('0x23')](handleError(_0xaf0340,null));};exports['getFields']=function(_0x195ba8,_0x365115,_0x354132){var _0x44d6d2=[{'name':'priority','label':_0x6461('0x61'),'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}]}];return db['DeskAccount'][_0x6461('0x58')]({'where':{'id':_0x195ba8[_0x6461('0x50')]['id']},'attributes':['id','remoteUri',_0x6461('0x62'),_0x6461('0x63'),_0x6461('0x64'),_0x6461('0x65'),'consumerSecret','token',_0x6461('0x66')]})[_0x6461('0x19')](handleEntityNotFound(_0x365115,null))[_0x6461('0x19')](function(_0x28c3c7){if(_0x28c3c7){var _0x2abcc6={'method':_0x6461('0x67'),'uri':util[_0x6461('0x68')](_0x6461('0x69'),_0x28c3c7['remoteUri']),'headers':{'Content-Type':_0x6461('0x6a'),'Accept':'application/json'},'json':!![]};if(_0x28c3c7[_0x6461('0x62')]===_0x6461('0x6b')){_0x2abcc6[_0x6461('0x6c')]['Authorization']=util[_0x6461('0x68')](_0x6461('0x6d'),new Buffer(util['format'](_0x6461('0x6e'),_0x28c3c7[_0x6461('0x63')],_0x28c3c7['password']))[_0x6461('0x6f')](_0x6461('0x70')));}return rp(_0x2abcc6)[_0x6461('0x19')](function(_0x4f789d){return _0x44d6d2['concat'](_['map'](_0x4f789d[_0x6461('0x71')][_0x6461('0x72')],function(_0x56df0a){return{'id':_0x56df0a[_0x6461('0x32')],'name':_0x56df0a[_0x6461('0x32')],'type':_0x56df0a[_0x6461('0x5c')],'active':_0x56df0a['active'],'label':_0x56df0a['label'],'custom':!![]};}));});}})[_0x6461('0x19')](function(_0x8e0329){return{'count':_0x8e0329[_0x6461('0x3e')],'rows':_0x8e0329};})[_0x6461('0x19')](respondWithResult(_0x365115,null))['catch'](function(_0x36eaf5){var _0x2bf315=_0x195ba8[_0x6461('0x37')][_0x6461('0x73')]?0x1f4:_0x36eaf5[_0x6461('0x74')]||0x1f4;logger['error'](_0x6461('0x75'),'getFields',_0x2bf315,JSON[_0x6461('0x1e')](_0x36eaf5));delete _0x36eaf5['name'];if(_0x2bf315===0x191){_0x2bf315=0x190;}_0x365115[_0x6461('0x25')](_0x2bf315)['send'](_0x195ba8[_0x6461('0x37')][_0x6461('0x73')]?{'message':'Wrong\x20credentials','statusCode':_0x36eaf5['statusCode']}:_0x36eaf5);});};
\ No newline at end of file
+var _0x9a8b=['info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','sendStatus','status','end','json','count','offset','set','reject','save','update','destroy','name','index','DeskAccount','rawAttributes','model','keys','query','dateStart','dateEnd','attributes','intersection','fields','length','limit','order','sort','where','filters','add','day','merge','filter','map','type','key','VIRTUAL','includeAll','findAll','rows','show','params','include','find','create','body','getConfigurations','findOne','DeskConfiguration','pick','hasOwnProperty','nolimit','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','DeskField','Subjects','getFields','priority','remoteUri','authType','consumerKey','consumerSecret','GET','format','%s/custom_fields','application/json','headers','%s:%s','username','toString','base64','concat','_embedded','entries','active','test','statusCode','stringify','send','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','request','then'];(function(_0x328534,_0x33b41e){var _0x2796c0=function(_0x1ba8ad){while(--_0x1ba8ad){_0x328534['push'](_0x328534['shift']());}};_0x2796c0(++_0x33b41e);}(_0x9a8b,0xd3));var _0xb9a8=function(_0x149df7,_0x424f3f){_0x149df7=_0x149df7-0x0;var _0xbad03f=_0x9a8b[_0x149df7];return _0xbad03f;};'use strict';var pdf=require(_0xb9a8('0x0'));var emlformat=require(_0xb9a8('0x1'));var rimraf=require(_0xb9a8('0x2'));var zipdir=require(_0xb9a8('0x3'));var jsonpatch=require(_0xb9a8('0x4'));var rp=require(_0xb9a8('0x5'));var moment=require('moment');var BPromise=require(_0xb9a8('0x6'));var Mustache=require('mustache');var util=require(_0xb9a8('0x7'));var path=require(_0xb9a8('0x8'));var sox=require(_0xb9a8('0x9'));var csv=require(_0xb9a8('0xa'));var ejs=require(_0xb9a8('0xb'));var fs=require('fs');var _=require(_0xb9a8('0xc'));var squel=require(_0xb9a8('0xd'));var crypto=require('crypto');var jsforce=require(_0xb9a8('0xe'));var deskjs=require(_0xb9a8('0xf'));var toCsv=require(_0xb9a8('0xa'));var querystring=require(_0xb9a8('0x10'));var Papa=require(_0xb9a8('0x11'));var Redis=require(_0xb9a8('0x12'));var qs=require(_0xb9a8('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xb9a8('0x14'));var config=require(_0xb9a8('0x15'));var db=require(_0xb9a8('0x16'))['db'];var integrations=require(_0xb9a8('0x17'));var jayson=require(_0xb9a8('0x18'));var client=jayson[_0xb9a8('0x19')][_0xb9a8('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x2c6697,_0x363202,_0x58819a,_0x1bfc07){return new BPromise(function(_0x54d301,_0x3efb5f){var _0x3b9e01=_0x1bfc07||client;return _0x3b9e01[_0xb9a8('0x1b')](_0x2c6697,_0x58819a)[_0xb9a8('0x1c')](function(_0x40c7c6){logger[_0xb9a8('0x1d')](_0xb9a8('0x1e'),_0x363202,_0xb9a8('0x1f'));logger[_0xb9a8('0x20')](_0xb9a8('0x21'),_0x363202,_0xb9a8('0x1f'),JSON['stringify'](_0x40c7c6));if(_0x40c7c6['error']){if(_0x40c7c6['error']['code']===0x1f4){logger[_0xb9a8('0x22')](_0xb9a8('0x1e'),_0x363202,_0x40c7c6['error'][_0xb9a8('0x23')]);return _0x3efb5f(_0x40c7c6[_0xb9a8('0x22')][_0xb9a8('0x23')]);}logger[_0xb9a8('0x22')](_0xb9a8('0x1e'),_0x363202,_0x40c7c6[_0xb9a8('0x22')][_0xb9a8('0x23')]);return _0x54d301(_0x40c7c6[_0xb9a8('0x22')][_0xb9a8('0x23')]);}else{logger[_0xb9a8('0x1d')]('DeskAccount,\x20%s,\x20%s',_0x363202,_0xb9a8('0x1f'));_0x54d301(_0x40c7c6[_0xb9a8('0x24')][_0xb9a8('0x23')]);}})[_0xb9a8('0x25')](function(_0x3e24a8){logger[_0xb9a8('0x22')](_0xb9a8('0x1e'),_0x363202,_0x3e24a8);_0x3efb5f(_0x3e24a8);});});}function respondWithStatusCode(_0xd8e89d,_0x52dc7c){_0x52dc7c=_0x52dc7c||0xcc;return function(_0x39cd7c){if(_0x39cd7c){return _0xd8e89d[_0xb9a8('0x26')](_0x52dc7c);}return _0xd8e89d[_0xb9a8('0x27')](_0x52dc7c)[_0xb9a8('0x28')]();};}function respondWithResult(_0x31b838,_0x3f9298){_0x3f9298=_0x3f9298||0xc8;return function(_0x3ec1bc){if(_0x3ec1bc){return _0x31b838[_0xb9a8('0x27')](_0x3f9298)[_0xb9a8('0x29')](_0x3ec1bc);}};}function respondWithFilteredResult(_0x52981e,_0x543c37){return function(_0x4d3b9e){if(_0x4d3b9e){var _0x4e3144=_0x4d3b9e[_0xb9a8('0x2a')],_0x1c5668=_0x543c37[_0xb9a8('0x2b')],_0x38bac9=_0x543c37[_0xb9a8('0x2b')]+_0x543c37['limit'],_0x23aa21;if(_0x38bac9>=_0x4e3144){_0x38bac9=_0x4e3144;_0x23aa21=0xc8;}else{_0x23aa21=0xce;}_0x52981e[_0xb9a8('0x27')](_0x23aa21);return _0x52981e[_0xb9a8('0x2c')]('Content-Range',_0x1c5668+'-'+_0x38bac9+'/'+_0x4e3144)['json'](_0x4d3b9e);}return null;};}function patchUpdates(_0x11b86f){return function(_0xe878e3){try{jsonpatch['apply'](_0xe878e3,_0x11b86f,!![]);}catch(_0x3777a7){return BPromise[_0xb9a8('0x2d')](_0x3777a7);}return _0xe878e3[_0xb9a8('0x2e')]();};}function saveUpdates(_0x2f4d8e,_0x349fc1){return function(_0x4f3874){if(_0x4f3874){return _0x4f3874[_0xb9a8('0x2f')](_0x2f4d8e)[_0xb9a8('0x1c')](function(_0x285d39){return _0x285d39;});}return null;};}function removeEntity(_0x48aa6b,_0x4b98a1){return function(_0x54c2a5){if(_0x54c2a5){return _0x54c2a5[_0xb9a8('0x30')]()['then'](function(){_0x48aa6b[_0xb9a8('0x27')](0xcc)[_0xb9a8('0x28')]();});}};}function handleEntityNotFound(_0x3d701d,_0x28ad0f){return function(_0x4d2806){if(!_0x4d2806){_0x3d701d[_0xb9a8('0x26')](0x194);}return _0x4d2806;};}function handleError(_0x1a2f72,_0x12d5d1){_0x12d5d1=_0x12d5d1||0x1f4;return function(_0x441fff){logger['error'](_0x441fff['stack']);if(_0x441fff[_0xb9a8('0x31')]){delete _0x441fff[_0xb9a8('0x31')];}_0x1a2f72[_0xb9a8('0x27')](_0x12d5d1)['send'](_0x441fff);};}exports[_0xb9a8('0x32')]=function(_0x26bc70,_0x3004f7){var _0x1ae83c={},_0x3669a3={},_0xe0a489={'count':0x0,'rows':[]};var _0x3d7508=db[_0xb9a8('0x33')][_0xb9a8('0x34')];_0x3669a3[_0xb9a8('0x35')]=_[_0xb9a8('0x36')](_0x3d7508);var _0x132693={'dateStart':_0x26bc70[_0xb9a8('0x37')][_0xb9a8('0x38')],'dateEnd':_0x26bc70['query'][_0xb9a8('0x39')]};delete _0x26bc70[_0xb9a8('0x37')]['dateStart'];delete _0x26bc70[_0xb9a8('0x37')]['dateEnd'];_0x3669a3[_0xb9a8('0x37')]=_[_0xb9a8('0x36')](_0x26bc70['query']);_0x3669a3['filters']=_['intersection'](_0x3669a3[_0xb9a8('0x35')],_0x3669a3[_0xb9a8('0x37')]);_0x1ae83c[_0xb9a8('0x3a')]=_[_0xb9a8('0x3b')](_0x3669a3[_0xb9a8('0x35')],qs[_0xb9a8('0x3c')](_0x26bc70[_0xb9a8('0x37')]['fields']));_0x1ae83c[_0xb9a8('0x3a')]=_0x1ae83c[_0xb9a8('0x3a')][_0xb9a8('0x3d')]?_0x1ae83c[_0xb9a8('0x3a')]:_0x3669a3[_0xb9a8('0x35')];if(!_0x26bc70[_0xb9a8('0x37')]['hasOwnProperty']('nolimit')){_0x1ae83c[_0xb9a8('0x3e')]=qs[_0xb9a8('0x3e')](_0x26bc70['query'][_0xb9a8('0x3e')]);_0x1ae83c[_0xb9a8('0x2b')]=qs[_0xb9a8('0x2b')](_0x26bc70['query'][_0xb9a8('0x2b')]);}_0x1ae83c[_0xb9a8('0x3f')]=qs[_0xb9a8('0x40')](_0x26bc70[_0xb9a8('0x37')]['sort']);_0x1ae83c[_0xb9a8('0x41')]=qs[_0xb9a8('0x42')](_['pick'](_0x26bc70['query'],_0x3669a3['filters']));if(_0x132693[_0xb9a8('0x38')]){if(_0x132693[_0xb9a8('0x39')]){_0x132693[_0xb9a8('0x39')]=moment(_0x132693[_0xb9a8('0x39')])['add'](0x1,'day');}else{_0x132693[_0xb9a8('0x39')]=moment(_0x132693['dateStart'])[_0xb9a8('0x43')](0x1,_0xb9a8('0x44'));}_[_0xb9a8('0x45')](_0x1ae83c[_0xb9a8('0x41')],{'createdAt':{'$gte':_0x132693['dateStart'],'$lte':_0x132693[_0xb9a8('0x39')]}});}if(_0x26bc70[_0xb9a8('0x37')][_0xb9a8('0x46')]){_0x1ae83c[_0xb9a8('0x41')]=_[_0xb9a8('0x45')](_0x1ae83c[_0xb9a8('0x41')],{'$or':_[_0xb9a8('0x47')](_0x3d7508,function(_0x4648f6){if(_0x4648f6[_0xb9a8('0x48')][_0xb9a8('0x49')]!==_0xb9a8('0x4a')){var _0x4c964b={};_0x4c964b[_0x4648f6['field']]={'$like':'%'+_0x26bc70[_0xb9a8('0x37')][_0xb9a8('0x46')]+'%'};return _0x4c964b;}})});}_0x1ae83c=_[_0xb9a8('0x45')]({},_0x1ae83c,_0x26bc70['options']);var _0x3e02ca={'where':_0x1ae83c['where']};return db[_0xb9a8('0x33')][_0xb9a8('0x2a')](_0x3e02ca)[_0xb9a8('0x1c')](function(_0x2799af){_0xe0a489[_0xb9a8('0x2a')]=_0x2799af;if(_0x26bc70['query'][_0xb9a8('0x4b')]){_0x1ae83c['include']=[{'all':!![]}];}return db[_0xb9a8('0x33')][_0xb9a8('0x4c')](_0x1ae83c);})[_0xb9a8('0x1c')](function(_0x29575a){_0xe0a489[_0xb9a8('0x4d')]=_0x29575a;return _0xe0a489;})[_0xb9a8('0x1c')](respondWithFilteredResult(_0x3004f7,_0x1ae83c))[_0xb9a8('0x25')](handleError(_0x3004f7,null));};exports[_0xb9a8('0x4e')]=function(_0x29e965,_0x5e023e){var _0x28ef79={'raw':![],'where':{'id':_0x29e965[_0xb9a8('0x4f')]['id']}},_0x760d05={};_0x760d05[_0xb9a8('0x35')]=_['keys'](db['DeskAccount']['rawAttributes']);_0x760d05[_0xb9a8('0x37')]=_[_0xb9a8('0x36')](_0x29e965[_0xb9a8('0x37')]);_0x760d05[_0xb9a8('0x42')]=_[_0xb9a8('0x3b')](_0x760d05[_0xb9a8('0x35')],_0x760d05[_0xb9a8('0x37')]);_0x28ef79[_0xb9a8('0x3a')]=_['intersection'](_0x760d05[_0xb9a8('0x35')],qs[_0xb9a8('0x3c')](_0x29e965['query'][_0xb9a8('0x3c')]));_0x28ef79[_0xb9a8('0x3a')]=_0x28ef79['attributes'][_0xb9a8('0x3d')]?_0x28ef79[_0xb9a8('0x3a')]:_0x760d05[_0xb9a8('0x35')];if(_0x29e965['query']['includeAll']){_0x28ef79[_0xb9a8('0x50')]=[{'all':!![]}];}_0x28ef79=_[_0xb9a8('0x45')]({},_0x28ef79,_0x29e965['options']);return db['DeskAccount'][_0xb9a8('0x51')](_0x28ef79)[_0xb9a8('0x1c')](handleEntityNotFound(_0x5e023e,null))[_0xb9a8('0x1c')](respondWithResult(_0x5e023e,null))['catch'](handleError(_0x5e023e,null));};exports[_0xb9a8('0x52')]=function(_0x4e9dfd,_0x136b69){return db[_0xb9a8('0x33')][_0xb9a8('0x52')](_0x4e9dfd['body'],{})['then'](respondWithResult(_0x136b69,0xc9))[_0xb9a8('0x25')](handleError(_0x136b69,null));};exports[_0xb9a8('0x2f')]=function(_0x23a500,_0xf20fd4){if(_0x23a500['body']['id']){delete _0x23a500[_0xb9a8('0x53')]['id'];}return db[_0xb9a8('0x33')]['find']({'where':{'id':_0x23a500['params']['id']}})[_0xb9a8('0x1c')](handleEntityNotFound(_0xf20fd4,null))[_0xb9a8('0x1c')](saveUpdates(_0x23a500['body'],null))[_0xb9a8('0x1c')](respondWithResult(_0xf20fd4,null))['catch'](handleError(_0xf20fd4,null));};exports[_0xb9a8('0x30')]=function(_0x36d00d,_0x43eef3){return db[_0xb9a8('0x33')][_0xb9a8('0x51')]({'where':{'id':_0x36d00d[_0xb9a8('0x4f')]['id']}})[_0xb9a8('0x1c')](handleEntityNotFound(_0x43eef3,null))['then'](removeEntity(_0x43eef3,null))[_0xb9a8('0x25')](handleError(_0x43eef3,null));};exports[_0xb9a8('0x54')]=function(_0x1ecf33,_0x4a29ac,_0xe088f4){var _0x6a159a={};var _0x428549={};var _0x2f7899;var _0x5a4874;return db[_0xb9a8('0x33')][_0xb9a8('0x55')]({'where':{'id':_0x1ecf33[_0xb9a8('0x4f')]['id']}})[_0xb9a8('0x1c')](handleEntityNotFound(_0x4a29ac,null))[_0xb9a8('0x1c')](function(_0x5da2d4){if(_0x5da2d4){_0x2f7899=_0x5da2d4;_0x428549['model']=_['keys'](db[_0xb9a8('0x56')][_0xb9a8('0x34')]);_0x428549[_0xb9a8('0x37')]=_['keys'](_0x1ecf33['query']);_0x428549[_0xb9a8('0x42')]=_[_0xb9a8('0x3b')](_0x428549['model'],_0x428549['query']);_0x6a159a[_0xb9a8('0x3a')]=_[_0xb9a8('0x3b')](_0x428549['model'],qs[_0xb9a8('0x3c')](_0x1ecf33['query'][_0xb9a8('0x3c')]));_0x6a159a[_0xb9a8('0x3a')]=_0x6a159a[_0xb9a8('0x3a')][_0xb9a8('0x3d')]?_0x6a159a[_0xb9a8('0x3a')]:_0x428549[_0xb9a8('0x35')];_0x6a159a[_0xb9a8('0x3f')]=qs[_0xb9a8('0x40')](_0x1ecf33[_0xb9a8('0x37')][_0xb9a8('0x40')]);_0x6a159a[_0xb9a8('0x41')]=qs['filters'](_[_0xb9a8('0x57')](_0x1ecf33[_0xb9a8('0x37')],_0x428549[_0xb9a8('0x42')]));if(_0x1ecf33[_0xb9a8('0x37')][_0xb9a8('0x46')]){_0x6a159a['where']=_['merge'](_0x6a159a[_0xb9a8('0x41')],{'$or':_[_0xb9a8('0x47')](_0x6a159a[_0xb9a8('0x3a')],function(_0x4df0a5){var _0x4a34a9={};_0x4a34a9[_0x4df0a5]={'$like':'%'+_0x1ecf33['query']['filter']+'%'};return _0x4a34a9;})});}_0x6a159a=_[_0xb9a8('0x45')]({},_0x6a159a,_0x1ecf33['options']);return _0x2f7899[_0xb9a8('0x54')](_0x6a159a);}})['then'](function(_0x5727ce){if(_0x5727ce){_0x5a4874=_0x5727ce['length'];if(!_0x1ecf33['query'][_0xb9a8('0x58')](_0xb9a8('0x59'))){_0x6a159a['limit']=qs[_0xb9a8('0x3e')](_0x1ecf33['query'][_0xb9a8('0x3e')]);_0x6a159a[_0xb9a8('0x2b')]=qs[_0xb9a8('0x2b')](_0x1ecf33['query'][_0xb9a8('0x2b')]);}return _0x2f7899[_0xb9a8('0x54')](_0x6a159a);}})['then'](function(_0x5d07d8){if(_0x5d07d8){return _0x5d07d8?{'count':_0x5a4874,'rows':_0x5d07d8}:null;}})[_0xb9a8('0x1c')](respondWithResult(_0x4a29ac,null))['catch'](handleError(_0x4a29ac,null));};exports[_0xb9a8('0x5a')]=function(_0x3f9135,_0x3226c3,_0x5d7718){if(_0x3f9135['body']['id']){delete _0x3f9135[_0xb9a8('0x53')]['id'];}return db[_0xb9a8('0x33')][_0xb9a8('0x55')]({'where':{'id':_0x3f9135['params']['id']}})[_0xb9a8('0x1c')](handleEntityNotFound(_0x3226c3,null))['then'](function(_0x53c07c){if(_0x53c07c){_0x3f9135[_0xb9a8('0x53')]['AccountId']=_0x53c07c['id'];_0x3f9135[_0xb9a8('0x53')]['Subjects']=integrations[_0xb9a8('0x5b')](_0x3f9135['body'][_0xb9a8('0x5c')],_0x3f9135[_0xb9a8('0x53')][_0xb9a8('0x48')]);_0x3f9135[_0xb9a8('0x53')][_0xb9a8('0x5d')]=integrations[_0xb9a8('0x5e')](_0x3f9135[_0xb9a8('0x53')][_0xb9a8('0x5c')],_0x3f9135[_0xb9a8('0x53')]['type']);return db['DeskConfiguration'][_0xb9a8('0x52')](_0x3f9135[_0xb9a8('0x53')],{'include':[{'model':db[_0xb9a8('0x5f')],'as':_0xb9a8('0x60')},{'model':db[_0xb9a8('0x5f')],'as':_0xb9a8('0x5d')}]});}return null;})[_0xb9a8('0x1c')](respondWithResult(_0x3226c3,null))[_0xb9a8('0x25')](handleError(_0x3226c3,null));};exports[_0xb9a8('0x61')]=function(_0x1960a6,_0x26c728,_0x282e9a){var _0x3943c=[{'name':_0xb9a8('0x62'),'label':_0xb9a8('0x62'),'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}]}];return db['DeskAccount'][_0xb9a8('0x55')]({'where':{'id':_0x1960a6[_0xb9a8('0x4f')]['id']},'attributes':['id',_0xb9a8('0x63'),_0xb9a8('0x64'),'username','password',_0xb9a8('0x65'),_0xb9a8('0x66'),'token','tokenSecret']})[_0xb9a8('0x1c')](handleEntityNotFound(_0x26c728,null))[_0xb9a8('0x1c')](function(_0x360c83){if(_0x360c83){var _0x4b16fd={'method':_0xb9a8('0x67'),'uri':util[_0xb9a8('0x68')](_0xb9a8('0x69'),_0x360c83['remoteUri']),'headers':{'Content-Type':'application/json','Accept':_0xb9a8('0x6a')},'json':!![]};if(_0x360c83[_0xb9a8('0x64')]==='basic'){_0x4b16fd[_0xb9a8('0x6b')]['Authorization']=util[_0xb9a8('0x68')]('Basic\x20%s',new Buffer(util['format'](_0xb9a8('0x6c'),_0x360c83[_0xb9a8('0x6d')],_0x360c83['password']))[_0xb9a8('0x6e')](_0xb9a8('0x6f')));}return rp(_0x4b16fd)[_0xb9a8('0x1c')](function(_0x251e49){return _0x3943c[_0xb9a8('0x70')](_[_0xb9a8('0x47')](_0x251e49[_0xb9a8('0x71')][_0xb9a8('0x72')],function(_0x1c00ac){return{'id':_0x1c00ac[_0xb9a8('0x31')],'name':_0x1c00ac[_0xb9a8('0x31')],'type':_0x1c00ac[_0xb9a8('0x48')],'active':_0x1c00ac[_0xb9a8('0x73')],'label':_0x1c00ac['label'],'custom':!![]};}));});}})[_0xb9a8('0x1c')](function(_0x5d19e0){return{'count':_0x5d19e0[_0xb9a8('0x3d')],'rows':_0x5d19e0};})['then'](respondWithResult(_0x26c728,null))[_0xb9a8('0x25')](function(_0x2a2b3a){var _0x5a13dd=_0x1960a6['query'][_0xb9a8('0x74')]?0x1f4:_0x2a2b3a[_0xb9a8('0x75')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xb9a8('0x61'),_0x5a13dd,JSON[_0xb9a8('0x76')](_0x2a2b3a));delete _0x2a2b3a[_0xb9a8('0x31')];if(_0x5a13dd===0x191){_0x5a13dd=0x190;}_0x26c728[_0xb9a8('0x27')](_0x5a13dd)[_0xb9a8('0x77')](_0x1960a6[_0xb9a8('0x37')][_0xb9a8('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x2a2b3a[_0xb9a8('0x75')]}:_0x2a2b3a);});};
\ No newline at end of file
index f3734da..1e63e25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f25=['../../config/logger','api','moment','bluebird','exports','DeskAccount','int_desk_accounts','lodash','util'];(function(_0x2b41d8,_0x55dd48){var _0x3fe4ce=function(_0x4b85aa){while(--_0x4b85aa){_0x2b41d8['push'](_0x2b41d8['shift']());}};_0x3fe4ce(++_0x55dd48);}(_0x8f25,0x14b));var _0x58f2=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x8f25[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x58f2('0x0'));var util=require(_0x58f2('0x1'));var logger=require(_0x58f2('0x2'))(_0x58f2('0x3'));var moment=require(_0x58f2('0x4'));var BPromise=require(_0x58f2('0x5'));var rp=require('request-promise');var attributes=require('./intDeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x58f2('0x6')]=function(_0x8487c3,_0x732ea6){return _0x8487c3['define'](_0x58f2('0x7'),attributes,{'tableName':_0x58f2('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8603=['../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','util','../../config/logger','api','request-promise','./intDeskAccount.attributes'];(function(_0x3bd5c1,_0x2af194){var _0xd0f143=function(_0x30f078){while(--_0x30f078){_0x3bd5c1['push'](_0x3bd5c1['shift']());}};_0xd0f143(++_0x2af194);}(_0x8603,0x190));var _0x3860=function(_0x40a740,_0x2810b0){_0x40a740=_0x40a740-0x0;var _0x58406d=_0x8603[_0x40a740];return _0x58406d;};'use strict';var _=require('lodash');var util=require(_0x3860('0x0'));var logger=require(_0x3860('0x1'))(_0x3860('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3860('0x3'));var attributes=require(_0x3860('0x4'));var integrations=require(_0x3860('0x5'));module['exports']=function(_0x2fc97a,_0x56f8c5){return _0x2fc97a[_0x3860('0x6')](_0x3860('0x7'),attributes,{'tableName':_0x3860('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 801a4e4..b59a1ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','info','catch','find','ShowDeskAccount','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','DeskAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5d05c5,_0x4741ab){var _0x428844=function(_0x59c4a6){while(--_0x59c4a6){_0x5d05c5['push'](_0x5d05c5['shift']());}};_0x428844(++_0x4741ab);}(_0xc2c7,0x134));var _0x7c2c=function(_0x6d3b3f,_0x3e93a1){_0x6d3b3f=_0x6d3b3f-0x0;var _0x4e57b5=_0xc2c7[_0x6d3b3f];return _0x4e57b5;};'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')]('DeskAccount,\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);});});}exports[_0x7c2c('0x15')]=function(_0x14453f){var _0x2a9539=this;return new Promise(function(_0x17df4a,_0x26be0f){return db[_0x7c2c('0x16')][_0x7c2c('0x17')]({'raw':_0x14453f[_0x7c2c('0x18')]?_0x14453f[_0x7c2c('0x18')][_0x7c2c('0x19')]===undefined?!![]:![]:!![],'where':_0x14453f[_0x7c2c('0x18')]?_0x14453f['options'][_0x7c2c('0x1a')]||null:null,'attributes':_0x14453f['options']?_0x14453f['options'][_0x7c2c('0x1b')]||null:null,'limit':_0x14453f[_0x7c2c('0x18')]?_0x14453f[_0x7c2c('0x18')][_0x7c2c('0x1c')]||null:null,'include':_0x14453f[_0x7c2c('0x18')]?_0x14453f[_0x7c2c('0x18')][_0x7c2c('0x1d')]?_['map'](_0x14453f[_0x7c2c('0x18')]['include'],function(_0x302c93){return{'model':db[_0x302c93['model']],'as':_0x302c93['as'],'attributes':_0x302c93[_0x7c2c('0x1b')],'include':_0x302c93[_0x7c2c('0x1d')]?_[_0x7c2c('0x1e')](_0x302c93['include'],function(_0x4d6ec7){return{'model':db[_0x4d6ec7[_0x7c2c('0x1f')]],'as':_0x4d6ec7['as'],'attributes':_0x4d6ec7[_0x7c2c('0x1b')],'include':_0x4d6ec7[_0x7c2c('0x1d')]?_[_0x7c2c('0x1e')](_0x4d6ec7[_0x7c2c('0x1d')],function(_0xa8e145){return{'model':db[_0xa8e145[_0x7c2c('0x1f')]],'as':_0xa8e145['as'],'attributes':_0xa8e145['attributes']};}):[]};}):[]};}):[]:[]})[_0x7c2c('0xc')](function(_0xf39941){logger[_0x7c2c('0x20')](_0x7c2c('0x15'),_0x14453f);logger[_0x7c2c('0xf')](_0x7c2c('0x15'),_0x14453f,JSON[_0x7c2c('0x11')](_0xf39941));_0x17df4a(_0xf39941);})[_0x7c2c('0x21')](function(_0xa040ff){logger['error'](_0x7c2c('0x15'),_0xa040ff[_0x7c2c('0x14')],_0x14453f);_0x26be0f(_0x2a9539[_0x7c2c('0x12')](0x1f4,_0xa040ff[_0x7c2c('0x14')]));});});};exports['ShowDeskAccount']=function(_0xcb98ba){var _0x30dd1c=this;return new Promise(function(_0x4192c8,_0x1ef88b){return db[_0x7c2c('0x16')][_0x7c2c('0x22')]({'raw':_0xcb98ba[_0x7c2c('0x18')]?_0xcb98ba['options'][_0x7c2c('0x19')]===undefined?!![]:![]:!![],'where':_0xcb98ba[_0x7c2c('0x18')]?_0xcb98ba[_0x7c2c('0x18')][_0x7c2c('0x1a')]||null:null,'attributes':_0xcb98ba[_0x7c2c('0x18')]?_0xcb98ba['options']['attributes']||null:null,'include':_0xcb98ba[_0x7c2c('0x18')]?_0xcb98ba['options']['include']?_[_0x7c2c('0x1e')](_0xcb98ba[_0x7c2c('0x18')][_0x7c2c('0x1d')],function(_0x156c03){return{'model':db[_0x156c03['model']],'as':_0x156c03['as'],'attributes':_0x156c03[_0x7c2c('0x1b')],'include':_0x156c03[_0x7c2c('0x1d')]?_[_0x7c2c('0x1e')](_0x156c03[_0x7c2c('0x1d')],function(_0x204968){return{'model':db[_0x204968[_0x7c2c('0x1f')]],'as':_0x204968['as'],'attributes':_0x204968[_0x7c2c('0x1b')],'include':_0x204968[_0x7c2c('0x1d')]?_[_0x7c2c('0x1e')](_0x204968[_0x7c2c('0x1d')],function(_0x3230a1){return{'model':db[_0x3230a1[_0x7c2c('0x1f')]],'as':_0x3230a1['as'],'attributes':_0x3230a1[_0x7c2c('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x54cbb7){logger[_0x7c2c('0x20')]('ShowDeskAccount',_0xcb98ba);logger['debug']('ShowDeskAccount',_0xcb98ba,JSON[_0x7c2c('0x11')](_0x54cbb7));_0x4192c8(_0x54cbb7);})[_0x7c2c('0x21')](function(_0x129bf0){logger[_0x7c2c('0x12')](_0x7c2c('0x23'),_0x129bf0[_0x7c2c('0x14')],_0xcb98ba);_0x1ef88b(_0x30dd1c[_0x7c2c('0x12')](0x1f4,_0x129bf0[_0x7c2c('0x14')]));});});};
\ No newline at end of file
+var _0x6b06=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','GetDeskAccount','DeskAccount','findAll','options','where','attributes','limit','include','map','model','debug','ShowDeskAccount','find','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x3e57ef,_0x388fab){var _0x5ade66=function(_0xcbbd3){while(--_0xcbbd3){_0x3e57ef['push'](_0x3e57ef['shift']());}};_0x5ade66(++_0x388fab);}(_0x6b06,0x1e4));var _0x66b0=function(_0x2a89ee,_0x2f5d1c){_0x2a89ee=_0x2a89ee-0x0;var _0xb24e70=_0x6b06[_0x2a89ee];return _0xb24e70;};'use strict';var _=require(_0x66b0('0x0'));var util=require(_0x66b0('0x1'));var moment=require(_0x66b0('0x2'));var BPromise=require('bluebird');var rs=require(_0x66b0('0x3'));var fs=require('fs');var Redis=require(_0x66b0('0x4'));var db=require(_0x66b0('0x5'))['db'];var utils=require(_0x66b0('0x6'));var logger=require(_0x66b0('0x7'))(_0x66b0('0x8'));var config=require(_0x66b0('0x9'));var jayson=require(_0x66b0('0xa'));var client=jayson['client'][_0x66b0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2fafa4,_0x52036c,_0xaab24d){return new BPromise(function(_0x1a3440,_0x47f0c4){return client[_0x66b0('0xc')](_0x2fafa4,_0xaab24d)[_0x66b0('0xd')](function(_0x1cf27a){logger[_0x66b0('0xe')](_0x66b0('0xf'),_0x52036c,_0x66b0('0x10'));logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x52036c,_0x66b0('0x10'),JSON[_0x66b0('0x11')](_0x1cf27a));if(_0x1cf27a['error']){if(_0x1cf27a['error'][_0x66b0('0x12')]===0x1f4){logger[_0x66b0('0x13')](_0x66b0('0xf'),_0x52036c,_0x1cf27a['error'][_0x66b0('0x14')]);return _0x47f0c4(_0x1cf27a[_0x66b0('0x13')][_0x66b0('0x14')]);}logger['error'](_0x66b0('0xf'),_0x52036c,_0x1cf27a[_0x66b0('0x13')][_0x66b0('0x14')]);return _0x1a3440(_0x1cf27a['error']['message']);}else{logger[_0x66b0('0xe')](_0x66b0('0xf'),_0x52036c,_0x66b0('0x10'));_0x1a3440(_0x1cf27a['result'][_0x66b0('0x14')]);}})[_0x66b0('0x15')](function(_0x4f0d75){logger[_0x66b0('0x13')](_0x66b0('0xf'),_0x52036c,_0x4f0d75);_0x47f0c4(_0x4f0d75);});});}exports[_0x66b0('0x16')]=function(_0xdd9f67){var _0x3a1852=this;return new Promise(function(_0x164ca5,_0x8d4d8){return db[_0x66b0('0x17')][_0x66b0('0x18')]({'raw':_0xdd9f67[_0x66b0('0x19')]?_0xdd9f67[_0x66b0('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xdd9f67[_0x66b0('0x19')]?_0xdd9f67[_0x66b0('0x19')][_0x66b0('0x1a')]||null:null,'attributes':_0xdd9f67[_0x66b0('0x19')]?_0xdd9f67['options'][_0x66b0('0x1b')]||null:null,'limit':_0xdd9f67[_0x66b0('0x19')]?_0xdd9f67[_0x66b0('0x19')][_0x66b0('0x1c')]||null:null,'include':_0xdd9f67[_0x66b0('0x19')]?_0xdd9f67[_0x66b0('0x19')][_0x66b0('0x1d')]?_[_0x66b0('0x1e')](_0xdd9f67[_0x66b0('0x19')][_0x66b0('0x1d')],function(_0x3be3d3){return{'model':db[_0x3be3d3['model']],'as':_0x3be3d3['as'],'attributes':_0x3be3d3[_0x66b0('0x1b')],'include':_0x3be3d3[_0x66b0('0x1d')]?_[_0x66b0('0x1e')](_0x3be3d3['include'],function(_0x59ae0d){return{'model':db[_0x59ae0d[_0x66b0('0x1f')]],'as':_0x59ae0d['as'],'attributes':_0x59ae0d[_0x66b0('0x1b')],'include':_0x59ae0d[_0x66b0('0x1d')]?_['map'](_0x59ae0d[_0x66b0('0x1d')],function(_0x190f85){return{'model':db[_0x190f85[_0x66b0('0x1f')]],'as':_0x190f85['as'],'attributes':_0x190f85['attributes']};}):[]};}):[]};}):[]:[]})[_0x66b0('0xd')](function(_0x5e646e){logger[_0x66b0('0xe')]('GetDeskAccount',_0xdd9f67);logger[_0x66b0('0x20')](_0x66b0('0x16'),_0xdd9f67,JSON[_0x66b0('0x11')](_0x5e646e));_0x164ca5(_0x5e646e);})[_0x66b0('0x15')](function(_0x5cb95e){logger['error'](_0x66b0('0x16'),_0x5cb95e[_0x66b0('0x14')],_0xdd9f67);_0x8d4d8(_0x3a1852[_0x66b0('0x13')](0x1f4,_0x5cb95e[_0x66b0('0x14')]));});});};exports[_0x66b0('0x21')]=function(_0x5ddc15){var _0x3636d5=this;return new Promise(function(_0xfa4041,_0xf37c08){return db['DeskAccount'][_0x66b0('0x22')]({'raw':_0x5ddc15[_0x66b0('0x19')]?_0x5ddc15[_0x66b0('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5ddc15[_0x66b0('0x19')]?_0x5ddc15[_0x66b0('0x19')]['where']||null:null,'attributes':_0x5ddc15[_0x66b0('0x19')]?_0x5ddc15[_0x66b0('0x19')]['attributes']||null:null,'include':_0x5ddc15[_0x66b0('0x19')]?_0x5ddc15[_0x66b0('0x19')][_0x66b0('0x1d')]?_[_0x66b0('0x1e')](_0x5ddc15['options']['include'],function(_0x4d354a){return{'model':db[_0x4d354a['model']],'as':_0x4d354a['as'],'attributes':_0x4d354a[_0x66b0('0x1b')],'include':_0x4d354a[_0x66b0('0x1d')]?_['map'](_0x4d354a[_0x66b0('0x1d')],function(_0x581483){return{'model':db[_0x581483[_0x66b0('0x1f')]],'as':_0x581483['as'],'attributes':_0x581483['attributes'],'include':_0x581483['include']?_[_0x66b0('0x1e')](_0x581483[_0x66b0('0x1d')],function(_0x2d31fe){return{'model':db[_0x2d31fe[_0x66b0('0x1f')]],'as':_0x2d31fe['as'],'attributes':_0x2d31fe[_0x66b0('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x66b0('0xd')](function(_0x27f3d4){logger[_0x66b0('0xe')](_0x66b0('0x21'),_0x5ddc15);logger[_0x66b0('0x20')]('ShowDeskAccount',_0x5ddc15,JSON[_0x66b0('0x11')](_0x27f3d4));_0xfa4041(_0x27f3d4);})['catch'](function(_0x6eba0b){logger[_0x66b0('0x13')](_0x66b0('0x21'),_0x6eba0b[_0x66b0('0x14')],_0x5ddc15);_0xf37c08(_0x3636d5[_0x66b0('0x13')](0x1f4,_0x6eba0b[_0x66b0('0x14')]));});});};
\ No newline at end of file
index b8e2daf..533c8f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebe7=['/:id','show','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags','update','delete','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated'];(function(_0x4331fc,_0x46db7b){var _0x4a6960=function(_0x5dd1f7){while(--_0x5dd1f7){_0x4331fc['push'](_0x4331fc['shift']());}};_0x4a6960(++_0x46db7b);}(_0xebe7,0x121));var _0x7ebe=function(_0x363f22,_0x20e327){_0x363f22=_0x363f22-0x0;var _0x81ef1b=_0xebe7[_0x363f22];return _0x81ef1b;};'use strict';var multer=require(_0x7ebe('0x0'));var util=require(_0x7ebe('0x1'));var path=require(_0x7ebe('0x2'));var timeout=require(_0x7ebe('0x3'));var express=require(_0x7ebe('0x4'));var router=express['Router']();var auth=require(_0x7ebe('0x5'));var interaction=require(_0x7ebe('0x6'));var config=require(_0x7ebe('0x7'));var controller=require(_0x7ebe('0x8'));router[_0x7ebe('0x9')]('/',auth[_0x7ebe('0xa')](),controller['index']);router[_0x7ebe('0x9')](_0x7ebe('0xb'),auth['isAuthenticated'](),controller[_0x7ebe('0xc')]);router['get']('/:id/fields',auth[_0x7ebe('0xa')](),controller[_0x7ebe('0xd')]);router['get']('/:id/subjects',auth['isAuthenticated'](),controller[_0x7ebe('0xe')]);router[_0x7ebe('0x9')](_0x7ebe('0xf'),auth[_0x7ebe('0xa')](),controller[_0x7ebe('0x10')]);router[_0x7ebe('0x9')](_0x7ebe('0x11'),auth[_0x7ebe('0xa')](),controller[_0x7ebe('0x12')]);router[_0x7ebe('0x13')]('/',auth[_0x7ebe('0xa')](),controller[_0x7ebe('0x14')]);router['post']('/:id/tags',auth[_0x7ebe('0xa')](),controller[_0x7ebe('0x15')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x7ebe('0x16')]);router[_0x7ebe('0x17')](_0x7ebe('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x7ebe('0x18')]=router;
\ No newline at end of file
+var _0xca5c=['getTags','post','create','setTags','update','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskConfiguration.controller','isAuthenticated','get','/:id','/:id/fields','/:id/subjects','getDescriptions','/:id/tags'];(function(_0x1f0427,_0x57eaa4){var _0x458afc=function(_0xed8e98){while(--_0xed8e98){_0x1f0427['push'](_0x1f0427['shift']());}};_0x458afc(++_0x57eaa4);}(_0xca5c,0x116));var _0xcca5=function(_0x45c48f,_0x4aa891){_0x45c48f=_0x45c48f-0x0;var _0xaf5037=_0xca5c[_0x45c48f];return _0xaf5037;};'use strict';var multer=require(_0xcca5('0x0'));var util=require(_0xcca5('0x1'));var path=require(_0xcca5('0x2'));var timeout=require(_0xcca5('0x3'));var express=require('express');var router=express[_0xcca5('0x4')]();var auth=require(_0xcca5('0x5'));var interaction=require(_0xcca5('0x6'));var config=require(_0xcca5('0x7'));var controller=require(_0xcca5('0x8'));router['get']('/',auth[_0xcca5('0x9')](),controller['index']);router[_0xcca5('0xa')](_0xcca5('0xb'),auth[_0xcca5('0x9')](),controller['show']);router['get'](_0xcca5('0xc'),auth[_0xcca5('0x9')](),controller['getFields']);router[_0xcca5('0xa')](_0xcca5('0xd'),auth[_0xcca5('0x9')](),controller['getSubjects']);router[_0xcca5('0xa')]('/:id/descriptions',auth[_0xcca5('0x9')](),controller[_0xcca5('0xe')]);router[_0xcca5('0xa')](_0xcca5('0xf'),auth[_0xcca5('0x9')](),controller[_0xcca5('0x10')]);router[_0xcca5('0x11')]('/',auth[_0xcca5('0x9')](),controller[_0xcca5('0x12')]);router['post'](_0xcca5('0xf'),auth['isAuthenticated'](),controller[_0xcca5('0x13')]);router['put']('/:id',auth[_0xcca5('0x9')](),controller[_0xcca5('0x14')]);router['delete'](_0xcca5('0xb'),auth[_0xcca5('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 222ea7d..d124b48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf4=['STRING','exports'];(function(_0x3fb84f,_0x526d87){var _0x48975c=function(_0x21bcfa){while(--_0x21bcfa){_0x3fb84f['push'](_0x3fb84f['shift']());}};_0x48975c(++_0x526d87);}(_0x1cf4,0x147));var _0x41cf=function(_0x17068f,_0x465e77){_0x17068f=_0x17068f-0x0;var _0xd05343=_0x1cf4[_0x17068f];return _0xd05343;};'use strict';var Sequelize=require('sequelize');module[_0x41cf('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x41cf('0x1')]}};
\ No newline at end of file
+var _0xdb79=['sequelize','STRING'];(function(_0x27f2b9,_0x144e11){var _0x440385=function(_0x72436d){while(--_0x72436d){_0x27f2b9['push'](_0x27f2b9['shift']());}};_0x440385(++_0x144e11);}(_0xdb79,0x154));var _0x9db7=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xdb79[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require(_0x9db7('0x0'));module['exports']={'name':{'type':Sequelize[_0x9db7('0x1')]},'description':{'type':Sequelize[_0x9db7('0x1')]}};
\ No newline at end of file
index f9bc958..b60eb90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51e6=['day','merge','filter','map','type','field','options','includeAll','include','rows','find','catch','create','body','params','DeskField','length','getFields','findOne','getDescriptions','getTags','Tag','setTags','ids','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','sendStatus','status','end','json','count','set','Content-Range','apply','reject','update','destroy','name','send','index','DeskConfiguration','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','where','pick','add'];(function(_0x4354e2,_0x3e8747){var _0x4117af=function(_0x333dc7){while(--_0x333dc7){_0x4354e2['push'](_0x4354e2['shift']());}};_0x4117af(++_0x3e8747);}(_0x51e6,0x1ee));var _0x651e=function(_0x590da5,_0x298084){_0x590da5=_0x590da5-0x0;var _0x54d4c4=_0x51e6[_0x590da5];return _0x54d4c4;};'use strict';var pdf=require(_0x651e('0x0'));var emlformat=require(_0x651e('0x1'));var rimraf=require(_0x651e('0x2'));var zipdir=require(_0x651e('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x651e('0x4'));var moment=require(_0x651e('0x5'));var BPromise=require(_0x651e('0x6'));var Mustache=require(_0x651e('0x7'));var util=require(_0x651e('0x8'));var path=require(_0x651e('0x9'));var sox=require(_0x651e('0xa'));var csv=require('to-csv');var ejs=require(_0x651e('0xb'));var fs=require('fs');var _=require(_0x651e('0xc'));var squel=require(_0x651e('0xd'));var crypto=require(_0x651e('0xe'));var jsforce=require(_0x651e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x651e('0x10'));var querystring=require(_0x651e('0x11'));var Papa=require('papaparse');var Redis=require(_0x651e('0x12'));var qs=require(_0x651e('0x13'));var logger=require('../../config/logger')(_0x651e('0x14'));var utils=require(_0x651e('0x15'));var config=require(_0x651e('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0x651e('0x17'));var client=jayson[_0x651e('0x18')][_0x651e('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x136d2d,_0x24afcd,_0x2edf49,_0xc984f2){return new BPromise(function(_0x2884cf,_0x57422e){var _0x5b6b94=_0xc984f2||client;return _0x5b6b94[_0x651e('0x1a')](_0x136d2d,_0x2edf49)[_0x651e('0x1b')](function(_0x4f14f2){logger[_0x651e('0x1c')](_0x651e('0x1d'),_0x24afcd,_0x651e('0x1e'));logger['debug'](_0x651e('0x1f'),_0x24afcd,_0x651e('0x1e'),JSON[_0x651e('0x20')](_0x4f14f2));if(_0x4f14f2[_0x651e('0x21')]){if(_0x4f14f2[_0x651e('0x21')]['code']===0x1f4){logger['error'](_0x651e('0x1d'),_0x24afcd,_0x4f14f2[_0x651e('0x21')][_0x651e('0x22')]);return _0x57422e(_0x4f14f2['error'][_0x651e('0x22')]);}logger['error'](_0x651e('0x1d'),_0x24afcd,_0x4f14f2['error']['message']);return _0x2884cf(_0x4f14f2[_0x651e('0x21')][_0x651e('0x22')]);}else{logger['info'](_0x651e('0x1d'),_0x24afcd,_0x651e('0x1e'));_0x2884cf(_0x4f14f2[_0x651e('0x23')][_0x651e('0x22')]);}})['catch'](function(_0x1e2fad){logger[_0x651e('0x21')](_0x651e('0x1d'),_0x24afcd,_0x1e2fad);_0x57422e(_0x1e2fad);});});}function respondWithStatusCode(_0x126e03,_0x2c247b){_0x2c247b=_0x2c247b||0xcc;return function(_0x36500f){if(_0x36500f){return _0x126e03[_0x651e('0x24')](_0x2c247b);}return _0x126e03[_0x651e('0x25')](_0x2c247b)[_0x651e('0x26')]();};}function respondWithResult(_0x29e4c5,_0x3932ed){_0x3932ed=_0x3932ed||0xc8;return function(_0x404231){if(_0x404231){return _0x29e4c5[_0x651e('0x25')](_0x3932ed)[_0x651e('0x27')](_0x404231);}};}function respondWithFilteredResult(_0x42e817,_0x141643){return function(_0x539eb9){if(_0x539eb9){var _0x325b26=_0x539eb9[_0x651e('0x28')],_0x125517=_0x141643['offset'],_0x378492=_0x141643['offset']+_0x141643['limit'],_0x2cbc66;if(_0x378492>=_0x325b26){_0x378492=_0x325b26;_0x2cbc66=0xc8;}else{_0x2cbc66=0xce;}_0x42e817[_0x651e('0x25')](_0x2cbc66);return _0x42e817[_0x651e('0x29')](_0x651e('0x2a'),_0x125517+'-'+_0x378492+'/'+_0x325b26)['json'](_0x539eb9);}return null;};}function patchUpdates(_0xc9dad8){return function(_0x27763f){try{jsonpatch[_0x651e('0x2b')](_0x27763f,_0xc9dad8,!![]);}catch(_0x412ec6){return BPromise[_0x651e('0x2c')](_0x412ec6);}return _0x27763f['save']();};}function saveUpdates(_0x2a6867,_0x24c19b){return function(_0x171a34){if(_0x171a34){return _0x171a34[_0x651e('0x2d')](_0x2a6867)[_0x651e('0x1b')](function(_0xcc3921){return _0xcc3921;});}return null;};}function removeEntity(_0x565a85,_0x5acf51){return function(_0x3855e0){if(_0x3855e0){return _0x3855e0[_0x651e('0x2e')]()[_0x651e('0x1b')](function(){_0x565a85[_0x651e('0x25')](0xcc)[_0x651e('0x26')]();});}};}function handleEntityNotFound(_0x364cfa,_0x108b02){return function(_0x45b0a5){if(!_0x45b0a5){_0x364cfa[_0x651e('0x24')](0x194);}return _0x45b0a5;};}function handleError(_0x25b44c,_0x3129d5){_0x3129d5=_0x3129d5||0x1f4;return function(_0xac0d8b){logger[_0x651e('0x21')](_0xac0d8b['stack']);if(_0xac0d8b[_0x651e('0x2f')]){delete _0xac0d8b[_0x651e('0x2f')];}_0x25b44c['status'](_0x3129d5)[_0x651e('0x30')](_0xac0d8b);};}exports[_0x651e('0x31')]=function(_0x422034,_0x4db9db){var _0x5db581={},_0x410f68={},_0x1e315c={'count':0x0,'rows':[]};var _0x5eb272=db[_0x651e('0x32')][_0x651e('0x33')];_0x410f68[_0x651e('0x34')]=_[_0x651e('0x35')](_0x5eb272);var _0x2c1c15={'dateStart':_0x422034['query'][_0x651e('0x36')],'dateEnd':_0x422034[_0x651e('0x37')][_0x651e('0x38')]};delete _0x422034[_0x651e('0x37')][_0x651e('0x36')];delete _0x422034[_0x651e('0x37')][_0x651e('0x38')];_0x410f68[_0x651e('0x37')]=_['keys'](_0x422034[_0x651e('0x37')]);_0x410f68[_0x651e('0x39')]=_[_0x651e('0x3a')](_0x410f68[_0x651e('0x34')],_0x410f68['query']);_0x5db581[_0x651e('0x3b')]=_['intersection'](_0x410f68[_0x651e('0x34')],qs['fields'](_0x422034[_0x651e('0x37')][_0x651e('0x3c')]));_0x5db581[_0x651e('0x3b')]=_0x5db581['attributes']['length']?_0x5db581['attributes']:_0x410f68[_0x651e('0x34')];if(!_0x422034[_0x651e('0x37')][_0x651e('0x3d')](_0x651e('0x3e'))){_0x5db581['limit']=qs[_0x651e('0x3f')](_0x422034[_0x651e('0x37')][_0x651e('0x3f')]);_0x5db581['offset']=qs[_0x651e('0x40')](_0x422034['query'][_0x651e('0x40')]);}_0x5db581[_0x651e('0x41')]=qs[_0x651e('0x42')](_0x422034['query']['sort']);_0x5db581[_0x651e('0x43')]=qs[_0x651e('0x39')](_[_0x651e('0x44')](_0x422034['query'],_0x410f68[_0x651e('0x39')]));if(_0x2c1c15[_0x651e('0x36')]){if(_0x2c1c15['dateEnd']){_0x2c1c15[_0x651e('0x38')]=moment(_0x2c1c15[_0x651e('0x38')])[_0x651e('0x45')](0x1,_0x651e('0x46'));}else{_0x2c1c15[_0x651e('0x38')]=moment(_0x2c1c15[_0x651e('0x36')])[_0x651e('0x45')](0x1,'day');}_[_0x651e('0x47')](_0x5db581[_0x651e('0x43')],{'createdAt':{'$gte':_0x2c1c15[_0x651e('0x36')],'$lte':_0x2c1c15[_0x651e('0x38')]}});}if(_0x422034[_0x651e('0x37')][_0x651e('0x48')]){_0x5db581[_0x651e('0x43')]=_[_0x651e('0x47')](_0x5db581[_0x651e('0x43')],{'$or':_[_0x651e('0x49')](_0x5eb272,function(_0x4d9867){if(_0x4d9867[_0x651e('0x4a')]['key']!=='VIRTUAL'){var _0x5a2260={};_0x5a2260[_0x4d9867[_0x651e('0x4b')]]={'$like':'%'+_0x422034[_0x651e('0x37')][_0x651e('0x48')]+'%'};return _0x5a2260;}})});}_0x5db581=_[_0x651e('0x47')]({},_0x5db581,_0x422034[_0x651e('0x4c')]);var _0x46186d={'where':_0x5db581['where']};return db['DeskConfiguration'][_0x651e('0x28')](_0x46186d)['then'](function(_0x548f17){_0x1e315c[_0x651e('0x28')]=_0x548f17;if(_0x422034['query'][_0x651e('0x4d')]){_0x5db581[_0x651e('0x4e')]=[{'all':!![]}];}return db['DeskConfiguration']['findAll'](_0x5db581);})['then'](function(_0x219a5e){_0x1e315c[_0x651e('0x4f')]=_0x219a5e;return _0x1e315c;})[_0x651e('0x1b')](respondWithFilteredResult(_0x4db9db,_0x5db581))['catch'](handleError(_0x4db9db,null));};exports['show']=function(_0x402f6c,_0x3b3dd3){var _0x1d0eab={'raw':![],'where':{'id':_0x402f6c['params']['id']}},_0x511d4a={};_0x511d4a[_0x651e('0x34')]=_['keys'](db[_0x651e('0x32')][_0x651e('0x33')]);_0x511d4a[_0x651e('0x37')]=_[_0x651e('0x35')](_0x402f6c[_0x651e('0x37')]);_0x511d4a[_0x651e('0x39')]=_[_0x651e('0x3a')](_0x511d4a[_0x651e('0x34')],_0x511d4a[_0x651e('0x37')]);_0x1d0eab[_0x651e('0x3b')]=_['intersection'](_0x511d4a[_0x651e('0x34')],qs[_0x651e('0x3c')](_0x402f6c[_0x651e('0x37')][_0x651e('0x3c')]));_0x1d0eab[_0x651e('0x3b')]=_0x1d0eab[_0x651e('0x3b')]['length']?_0x1d0eab[_0x651e('0x3b')]:_0x511d4a[_0x651e('0x34')];if(_0x402f6c[_0x651e('0x37')][_0x651e('0x4d')]){_0x1d0eab[_0x651e('0x4e')]=[{'all':!![]}];}_0x1d0eab=_['merge']({},_0x1d0eab,_0x402f6c[_0x651e('0x4c')]);return db[_0x651e('0x32')][_0x651e('0x50')](_0x1d0eab)[_0x651e('0x1b')](handleEntityNotFound(_0x3b3dd3,null))[_0x651e('0x1b')](respondWithResult(_0x3b3dd3,null))[_0x651e('0x51')](handleError(_0x3b3dd3,null));};exports[_0x651e('0x52')]=function(_0x306cc0,_0x37871a){return db['DeskConfiguration'][_0x651e('0x52')](_0x306cc0[_0x651e('0x53')],{})[_0x651e('0x1b')](respondWithResult(_0x37871a,0xc9))[_0x651e('0x51')](handleError(_0x37871a,null));};exports[_0x651e('0x2d')]=function(_0x45af46,_0x401ffb){if(_0x45af46[_0x651e('0x53')]['id']){delete _0x45af46[_0x651e('0x53')]['id'];}return db['DeskConfiguration'][_0x651e('0x50')]({'where':{'id':_0x45af46[_0x651e('0x54')]['id']}})[_0x651e('0x1b')](handleEntityNotFound(_0x401ffb,null))['then'](saveUpdates(_0x45af46[_0x651e('0x53')],null))[_0x651e('0x1b')](respondWithResult(_0x401ffb,null))['catch'](handleError(_0x401ffb,null));};exports[_0x651e('0x2e')]=function(_0x2bae77,_0x414242){return db[_0x651e('0x32')][_0x651e('0x50')]({'where':{'id':_0x2bae77[_0x651e('0x54')]['id']}})['then'](handleEntityNotFound(_0x414242,null))[_0x651e('0x1b')](removeEntity(_0x414242,null))[_0x651e('0x51')](handleError(_0x414242,null));};exports['getFields']=function(_0x1ca470,_0x22bf99,_0x151b7a){var _0x1aa38b={};var _0x5f39a6={};var _0x24124e;var _0x1f2469;return db[_0x651e('0x32')]['findOne']({'where':{'id':_0x1ca470[_0x651e('0x54')]['id']}})[_0x651e('0x1b')](handleEntityNotFound(_0x22bf99,null))[_0x651e('0x1b')](function(_0x46ea03){if(_0x46ea03){_0x24124e=_0x46ea03;_0x5f39a6[_0x651e('0x34')]=_[_0x651e('0x35')](db[_0x651e('0x55')]['rawAttributes']);_0x5f39a6[_0x651e('0x37')]=_[_0x651e('0x35')](_0x1ca470['query']);_0x5f39a6[_0x651e('0x39')]=_['intersection'](_0x5f39a6[_0x651e('0x34')],_0x5f39a6[_0x651e('0x37')]);_0x1aa38b[_0x651e('0x3b')]=_[_0x651e('0x3a')](_0x5f39a6[_0x651e('0x34')],qs[_0x651e('0x3c')](_0x1ca470[_0x651e('0x37')]['fields']));_0x1aa38b[_0x651e('0x3b')]=_0x1aa38b['attributes'][_0x651e('0x56')]?_0x1aa38b['attributes']:_0x5f39a6['model'];_0x1aa38b[_0x651e('0x41')]=qs[_0x651e('0x42')](_0x1ca470[_0x651e('0x37')][_0x651e('0x42')]);_0x1aa38b[_0x651e('0x43')]=qs['filters'](_[_0x651e('0x44')](_0x1ca470['query'],_0x5f39a6['filters']));if(_0x1ca470[_0x651e('0x37')][_0x651e('0x48')]){_0x1aa38b[_0x651e('0x43')]=_[_0x651e('0x47')](_0x1aa38b['where'],{'$or':_[_0x651e('0x49')](_0x1aa38b['attributes'],function(_0x574eab){var _0x63ed21={};_0x63ed21[_0x574eab]={'$like':'%'+_0x1ca470[_0x651e('0x37')][_0x651e('0x48')]+'%'};return _0x63ed21;})});}_0x1aa38b=_[_0x651e('0x47')]({},_0x1aa38b,_0x1ca470['options']);return _0x24124e[_0x651e('0x57')](_0x1aa38b);}})[_0x651e('0x1b')](function(_0x5c23a1){if(_0x5c23a1){_0x1f2469=_0x5c23a1[_0x651e('0x56')];if(!_0x1ca470[_0x651e('0x37')][_0x651e('0x3d')](_0x651e('0x3e'))){_0x1aa38b[_0x651e('0x3f')]=qs['limit'](_0x1ca470[_0x651e('0x37')][_0x651e('0x3f')]);_0x1aa38b[_0x651e('0x40')]=qs[_0x651e('0x40')](_0x1ca470[_0x651e('0x37')][_0x651e('0x40')]);}return _0x24124e[_0x651e('0x57')](_0x1aa38b);}})['then'](function(_0x237d35){if(_0x237d35){return _0x237d35?{'count':_0x1f2469,'rows':_0x237d35}:null;}})[_0x651e('0x1b')](respondWithResult(_0x22bf99,null))['catch'](handleError(_0x22bf99,null));};exports['getSubjects']=function(_0x2a1af7,_0x389ba9,_0xe1e91f){var _0x39904e={};var _0xf299e8={};var _0x112b9e;var _0x6783bb;return db[_0x651e('0x32')][_0x651e('0x58')]({'where':{'id':_0x2a1af7[_0x651e('0x54')]['id']}})['then'](handleEntityNotFound(_0x389ba9,null))[_0x651e('0x1b')](function(_0x42c3ba){if(_0x42c3ba){_0x112b9e=_0x42c3ba;_0xf299e8[_0x651e('0x34')]=_['keys'](db[_0x651e('0x55')][_0x651e('0x33')]);_0xf299e8[_0x651e('0x37')]=_[_0x651e('0x35')](_0x2a1af7['query']);_0xf299e8[_0x651e('0x39')]=_[_0x651e('0x3a')](_0xf299e8['model'],_0xf299e8[_0x651e('0x37')]);_0x39904e[_0x651e('0x3b')]=_['intersection'](_0xf299e8[_0x651e('0x34')],qs[_0x651e('0x3c')](_0x2a1af7[_0x651e('0x37')][_0x651e('0x3c')]));_0x39904e[_0x651e('0x3b')]=_0x39904e[_0x651e('0x3b')][_0x651e('0x56')]?_0x39904e['attributes']:_0xf299e8[_0x651e('0x34')];_0x39904e[_0x651e('0x41')]=qs['sort'](_0x2a1af7[_0x651e('0x37')][_0x651e('0x42')]);_0x39904e[_0x651e('0x43')]=qs[_0x651e('0x39')](_[_0x651e('0x44')](_0x2a1af7[_0x651e('0x37')],_0xf299e8[_0x651e('0x39')]));if(_0x2a1af7[_0x651e('0x37')][_0x651e('0x48')]){_0x39904e[_0x651e('0x43')]=_[_0x651e('0x47')](_0x39904e[_0x651e('0x43')],{'$or':_['map'](_0x39904e['attributes'],function(_0x217726){var _0x7ece9a={};_0x7ece9a[_0x217726]={'$like':'%'+_0x2a1af7[_0x651e('0x37')][_0x651e('0x48')]+'%'};return _0x7ece9a;})});}_0x39904e=_[_0x651e('0x47')]({},_0x39904e,_0x2a1af7['options']);return _0x112b9e['getSubjects'](_0x39904e);}})[_0x651e('0x1b')](function(_0x3d9751){if(_0x3d9751){_0x6783bb=_0x3d9751[_0x651e('0x56')];if(!_0x2a1af7[_0x651e('0x37')][_0x651e('0x3d')](_0x651e('0x3e'))){_0x39904e[_0x651e('0x3f')]=qs[_0x651e('0x3f')](_0x2a1af7['query'][_0x651e('0x3f')]);_0x39904e[_0x651e('0x40')]=qs[_0x651e('0x40')](_0x2a1af7[_0x651e('0x37')][_0x651e('0x40')]);}return _0x112b9e['getSubjects'](_0x39904e);}})['then'](function(_0x456b9e){if(_0x456b9e){return _0x456b9e?{'count':_0x6783bb,'rows':_0x456b9e}:null;}})[_0x651e('0x1b')](respondWithResult(_0x389ba9,null))[_0x651e('0x51')](handleError(_0x389ba9,null));};exports[_0x651e('0x59')]=function(_0x2b6fee,_0x2f5307,_0x489d18){var _0x4a2d21={};var _0x25c8ca={};var _0x36244b;var _0x1b9a15;return db[_0x651e('0x32')]['findOne']({'where':{'id':_0x2b6fee[_0x651e('0x54')]['id']}})[_0x651e('0x1b')](handleEntityNotFound(_0x2f5307,null))[_0x651e('0x1b')](function(_0x4af1e8){if(_0x4af1e8){_0x36244b=_0x4af1e8;_0x25c8ca[_0x651e('0x34')]=_[_0x651e('0x35')](db[_0x651e('0x55')][_0x651e('0x33')]);_0x25c8ca[_0x651e('0x37')]=_['keys'](_0x2b6fee[_0x651e('0x37')]);_0x25c8ca[_0x651e('0x39')]=_['intersection'](_0x25c8ca[_0x651e('0x34')],_0x25c8ca['query']);_0x4a2d21[_0x651e('0x3b')]=_[_0x651e('0x3a')](_0x25c8ca[_0x651e('0x34')],qs[_0x651e('0x3c')](_0x2b6fee[_0x651e('0x37')]['fields']));_0x4a2d21['attributes']=_0x4a2d21['attributes']['length']?_0x4a2d21[_0x651e('0x3b')]:_0x25c8ca[_0x651e('0x34')];_0x4a2d21['order']=qs['sort'](_0x2b6fee[_0x651e('0x37')][_0x651e('0x42')]);_0x4a2d21['where']=qs['filters'](_[_0x651e('0x44')](_0x2b6fee[_0x651e('0x37')],_0x25c8ca[_0x651e('0x39')]));if(_0x2b6fee['query'][_0x651e('0x48')]){_0x4a2d21[_0x651e('0x43')]=_[_0x651e('0x47')](_0x4a2d21[_0x651e('0x43')],{'$or':_['map'](_0x4a2d21['attributes'],function(_0x31cbe7){var _0x217b73={};_0x217b73[_0x31cbe7]={'$like':'%'+_0x2b6fee['query'][_0x651e('0x48')]+'%'};return _0x217b73;})});}_0x4a2d21=_['merge']({},_0x4a2d21,_0x2b6fee[_0x651e('0x4c')]);return _0x36244b[_0x651e('0x59')](_0x4a2d21);}})['then'](function(_0x23ee02){if(_0x23ee02){_0x1b9a15=_0x23ee02[_0x651e('0x56')];if(!_0x2b6fee[_0x651e('0x37')][_0x651e('0x3d')](_0x651e('0x3e'))){_0x4a2d21[_0x651e('0x3f')]=qs[_0x651e('0x3f')](_0x2b6fee[_0x651e('0x37')][_0x651e('0x3f')]);_0x4a2d21['offset']=qs[_0x651e('0x40')](_0x2b6fee[_0x651e('0x37')][_0x651e('0x40')]);}return _0x36244b[_0x651e('0x59')](_0x4a2d21);}})[_0x651e('0x1b')](function(_0x23c08e){if(_0x23c08e){return _0x23c08e?{'count':_0x1b9a15,'rows':_0x23c08e}:null;}})[_0x651e('0x1b')](respondWithResult(_0x2f5307,null))[_0x651e('0x51')](handleError(_0x2f5307,null));};exports[_0x651e('0x5a')]=function(_0x1a999f,_0x1ed967,_0x2cdb4c){var _0x17078f={};var _0x3aa218={};var _0x1b782b;var _0x2d3686;return db[_0x651e('0x32')]['findOne']({'where':{'id':_0x1a999f[_0x651e('0x54')]['id']}})[_0x651e('0x1b')](handleEntityNotFound(_0x1ed967,null))[_0x651e('0x1b')](function(_0xc19f3b){if(_0xc19f3b){_0x1b782b=_0xc19f3b;_0x3aa218[_0x651e('0x34')]=_[_0x651e('0x35')](db[_0x651e('0x5b')][_0x651e('0x33')]);_0x3aa218[_0x651e('0x37')]=_[_0x651e('0x35')](_0x1a999f[_0x651e('0x37')]);_0x3aa218[_0x651e('0x39')]=_[_0x651e('0x3a')](_0x3aa218[_0x651e('0x34')],_0x3aa218[_0x651e('0x37')]);_0x17078f[_0x651e('0x3b')]=_['intersection'](_0x3aa218['model'],qs['fields'](_0x1a999f[_0x651e('0x37')][_0x651e('0x3c')]));_0x17078f[_0x651e('0x3b')]=_0x17078f[_0x651e('0x3b')][_0x651e('0x56')]?_0x17078f[_0x651e('0x3b')]:_0x3aa218[_0x651e('0x34')];_0x17078f[_0x651e('0x41')]=qs['sort'](_0x1a999f[_0x651e('0x37')][_0x651e('0x42')]);_0x17078f['where']=qs[_0x651e('0x39')](_[_0x651e('0x44')](_0x1a999f[_0x651e('0x37')],_0x3aa218['filters']));if(_0x1a999f[_0x651e('0x37')][_0x651e('0x48')]){_0x17078f[_0x651e('0x43')]=_[_0x651e('0x47')](_0x17078f[_0x651e('0x43')],{'$or':_[_0x651e('0x49')](_0x17078f[_0x651e('0x3b')],function(_0x469013){var _0x518a7d={};_0x518a7d[_0x469013]={'$like':'%'+_0x1a999f[_0x651e('0x37')][_0x651e('0x48')]+'%'};return _0x518a7d;})});}_0x17078f=_[_0x651e('0x47')]({},_0x17078f,_0x1a999f['options']);return _0x1b782b[_0x651e('0x5a')](_0x17078f);}})[_0x651e('0x1b')](function(_0x24ee7a){if(_0x24ee7a){_0x2d3686=_0x24ee7a[_0x651e('0x56')];if(!_0x1a999f[_0x651e('0x37')][_0x651e('0x3d')]('nolimit')){_0x17078f[_0x651e('0x3f')]=qs[_0x651e('0x3f')](_0x1a999f['query'][_0x651e('0x3f')]);_0x17078f['offset']=qs[_0x651e('0x40')](_0x1a999f[_0x651e('0x37')]['offset']);}return _0x1b782b['getTags'](_0x17078f);}})[_0x651e('0x1b')](function(_0x389490){if(_0x389490){return _0x389490?{'count':_0x2d3686,'rows':_0x389490}:null;}})[_0x651e('0x1b')](respondWithResult(_0x1ed967,null))['catch'](handleError(_0x1ed967,null));};exports[_0x651e('0x5c')]=function(_0x2de11c,_0x364150,_0x580b5b){if(_0x2de11c[_0x651e('0x53')]['id']){delete _0x2de11c[_0x651e('0x53')]['id'];}return db['DeskConfiguration'][_0x651e('0x58')]({'where':{'id':_0x2de11c[_0x651e('0x54')]['id']}})[_0x651e('0x1b')](handleEntityNotFound(_0x364150,null))[_0x651e('0x1b')](function(_0x155f3b){if(_0x155f3b){return _0x155f3b[_0x651e('0x5c')](_0x2de11c['body'][_0x651e('0x5d')]||[]);}return null;})[_0x651e('0x1b')](respondWithResult(_0x364150,null))[_0x651e('0x51')](handleError(_0x364150,null));};
\ No newline at end of file
+var _0xe25f=['body','update','destroy','getFields','findOne','filter','getSubjects','DeskField','pick','getDescriptions','getTags','setTags','ids','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','json','count','offset','status','set','Content-Range','apply','reject','save','then','stack','name','send','index','rawAttributes','model','keys','query','dateStart','filters','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','dateEnd','add','merge','map','type','key','VIRTUAL','field','DeskConfiguration','includeAll','include','findAll','rows','show','params','intersection','options','find','create'];(function(_0xcc4d3a,_0x104f66){var _0x20bae1=function(_0x2403f8){while(--_0x2403f8){_0xcc4d3a['push'](_0xcc4d3a['shift']());}};_0x20bae1(++_0x104f66);}(_0xe25f,0x13c));var _0xfe25=function(_0x3f8896,_0x1491ff){_0x3f8896=_0x3f8896-0x0;var _0x286005=_0xe25f[_0x3f8896];return _0x286005;};'use strict';var pdf=require(_0xfe25('0x0'));var emlformat=require(_0xfe25('0x1'));var rimraf=require(_0xfe25('0x2'));var zipdir=require(_0xfe25('0x3'));var jsonpatch=require(_0xfe25('0x4'));var rp=require('request-promise');var moment=require(_0xfe25('0x5'));var BPromise=require(_0xfe25('0x6'));var Mustache=require(_0xfe25('0x7'));var util=require(_0xfe25('0x8'));var path=require(_0xfe25('0x9'));var sox=require(_0xfe25('0xa'));var csv=require(_0xfe25('0xb'));var ejs=require(_0xfe25('0xc'));var fs=require('fs');var _=require('lodash');var squel=require(_0xfe25('0xd'));var crypto=require(_0xfe25('0xe'));var jsforce=require(_0xfe25('0xf'));var deskjs=require(_0xfe25('0x10'));var toCsv=require(_0xfe25('0xb'));var querystring=require(_0xfe25('0x11'));var Papa=require(_0xfe25('0x12'));var Redis=require(_0xfe25('0x13'));var qs=require(_0xfe25('0x14'));var logger=require(_0xfe25('0x15'))(_0xfe25('0x16'));var utils=require(_0xfe25('0x17'));var config=require(_0xfe25('0x18'));var db=require(_0xfe25('0x19'))['db'];var jayson=require(_0xfe25('0x1a'));var client=jayson['client'][_0xfe25('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x3df27d,_0x2d0cee,_0x10e48d,_0x262acc){return new BPromise(function(_0x24a8fa,_0x59f7e4){var _0x5756cd=_0x262acc||client;return _0x5756cd[_0xfe25('0x1c')](_0x3df27d,_0x10e48d)['then'](function(_0x3a4c0c){logger['info'](_0xfe25('0x1d'),_0x2d0cee,_0xfe25('0x1e'));logger['debug'](_0xfe25('0x1f'),_0x2d0cee,_0xfe25('0x1e'),JSON[_0xfe25('0x20')](_0x3a4c0c));if(_0x3a4c0c[_0xfe25('0x21')]){if(_0x3a4c0c[_0xfe25('0x21')][_0xfe25('0x22')]===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x2d0cee,_0x3a4c0c[_0xfe25('0x21')][_0xfe25('0x23')]);return _0x59f7e4(_0x3a4c0c[_0xfe25('0x21')][_0xfe25('0x23')]);}logger[_0xfe25('0x21')](_0xfe25('0x1d'),_0x2d0cee,_0x3a4c0c[_0xfe25('0x21')]['message']);return _0x24a8fa(_0x3a4c0c[_0xfe25('0x21')]['message']);}else{logger[_0xfe25('0x24')](_0xfe25('0x1d'),_0x2d0cee,_0xfe25('0x1e'));_0x24a8fa(_0x3a4c0c[_0xfe25('0x25')][_0xfe25('0x23')]);}})[_0xfe25('0x26')](function(_0x1b8230){logger[_0xfe25('0x21')](_0xfe25('0x1d'),_0x2d0cee,_0x1b8230);_0x59f7e4(_0x1b8230);});});}function respondWithStatusCode(_0x1cfbd5,_0x58517e){_0x58517e=_0x58517e||0xcc;return function(_0x3a83cb){if(_0x3a83cb){return _0x1cfbd5[_0xfe25('0x27')](_0x58517e);}return _0x1cfbd5['status'](_0x58517e)['end']();};}function respondWithResult(_0x3a7ddf,_0x14b765){_0x14b765=_0x14b765||0xc8;return function(_0x2c29b0){if(_0x2c29b0){return _0x3a7ddf['status'](_0x14b765)[_0xfe25('0x28')](_0x2c29b0);}};}function respondWithFilteredResult(_0x733e03,_0x572d28){return function(_0x3aa84c){if(_0x3aa84c){var _0x26afa2=_0x3aa84c[_0xfe25('0x29')],_0x3b5dcb=_0x572d28[_0xfe25('0x2a')],_0x1b3d35=_0x572d28[_0xfe25('0x2a')]+_0x572d28['limit'],_0x2e2cca;if(_0x1b3d35>=_0x26afa2){_0x1b3d35=_0x26afa2;_0x2e2cca=0xc8;}else{_0x2e2cca=0xce;}_0x733e03[_0xfe25('0x2b')](_0x2e2cca);return _0x733e03[_0xfe25('0x2c')](_0xfe25('0x2d'),_0x3b5dcb+'-'+_0x1b3d35+'/'+_0x26afa2)[_0xfe25('0x28')](_0x3aa84c);}return null;};}function patchUpdates(_0x30aca1){return function(_0x5032bd){try{jsonpatch[_0xfe25('0x2e')](_0x5032bd,_0x30aca1,!![]);}catch(_0x3c6929){return BPromise[_0xfe25('0x2f')](_0x3c6929);}return _0x5032bd[_0xfe25('0x30')]();};}function saveUpdates(_0x24b4d6,_0x1e1e8b){return function(_0x15c967){if(_0x15c967){return _0x15c967['update'](_0x24b4d6)[_0xfe25('0x31')](function(_0x33bd56){return _0x33bd56;});}return null;};}function removeEntity(_0x32bcc8,_0x3fbca7){return function(_0x22809f){if(_0x22809f){return _0x22809f['destroy']()[_0xfe25('0x31')](function(){_0x32bcc8[_0xfe25('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55142b,_0x36d3b1){return function(_0x4d1848){if(!_0x4d1848){_0x55142b[_0xfe25('0x27')](0x194);}return _0x4d1848;};}function handleError(_0x2e3ec6,_0x1bf248){_0x1bf248=_0x1bf248||0x1f4;return function(_0x4fa5f1){logger[_0xfe25('0x21')](_0x4fa5f1[_0xfe25('0x32')]);if(_0x4fa5f1[_0xfe25('0x33')]){delete _0x4fa5f1['name'];}_0x2e3ec6[_0xfe25('0x2b')](_0x1bf248)[_0xfe25('0x34')](_0x4fa5f1);};}exports[_0xfe25('0x35')]=function(_0xbf9c46,_0x4451bd){var _0x43e0d0={},_0x3c2891={},_0x3f05a8={'count':0x0,'rows':[]};var _0xe759ec=db['DeskConfiguration'][_0xfe25('0x36')];_0x3c2891[_0xfe25('0x37')]=_[_0xfe25('0x38')](_0xe759ec);var _0xae4f81={'dateStart':_0xbf9c46[_0xfe25('0x39')][_0xfe25('0x3a')],'dateEnd':_0xbf9c46['query']['dateEnd']};delete _0xbf9c46['query']['dateStart'];delete _0xbf9c46[_0xfe25('0x39')]['dateEnd'];_0x3c2891[_0xfe25('0x39')]=_[_0xfe25('0x38')](_0xbf9c46[_0xfe25('0x39')]);_0x3c2891[_0xfe25('0x3b')]=_['intersection'](_0x3c2891[_0xfe25('0x37')],_0x3c2891[_0xfe25('0x39')]);_0x43e0d0[_0xfe25('0x3c')]=_['intersection'](_0x3c2891[_0xfe25('0x37')],qs[_0xfe25('0x3d')](_0xbf9c46[_0xfe25('0x39')]['fields']));_0x43e0d0[_0xfe25('0x3c')]=_0x43e0d0[_0xfe25('0x3c')][_0xfe25('0x3e')]?_0x43e0d0[_0xfe25('0x3c')]:_0x3c2891['model'];if(!_0xbf9c46[_0xfe25('0x39')][_0xfe25('0x3f')](_0xfe25('0x40'))){_0x43e0d0[_0xfe25('0x41')]=qs['limit'](_0xbf9c46[_0xfe25('0x39')][_0xfe25('0x41')]);_0x43e0d0[_0xfe25('0x2a')]=qs['offset'](_0xbf9c46[_0xfe25('0x39')]['offset']);}_0x43e0d0[_0xfe25('0x42')]=qs[_0xfe25('0x43')](_0xbf9c46[_0xfe25('0x39')][_0xfe25('0x43')]);_0x43e0d0[_0xfe25('0x44')]=qs[_0xfe25('0x3b')](_['pick'](_0xbf9c46['query'],_0x3c2891[_0xfe25('0x3b')]));if(_0xae4f81[_0xfe25('0x3a')]){if(_0xae4f81[_0xfe25('0x45')]){_0xae4f81['dateEnd']=moment(_0xae4f81[_0xfe25('0x45')])[_0xfe25('0x46')](0x1,'day');}else{_0xae4f81[_0xfe25('0x45')]=moment(_0xae4f81[_0xfe25('0x3a')])[_0xfe25('0x46')](0x1,'day');}_['merge'](_0x43e0d0[_0xfe25('0x44')],{'createdAt':{'$gte':_0xae4f81[_0xfe25('0x3a')],'$lte':_0xae4f81[_0xfe25('0x45')]}});}if(_0xbf9c46[_0xfe25('0x39')]['filter']){_0x43e0d0[_0xfe25('0x44')]=_[_0xfe25('0x47')](_0x43e0d0['where'],{'$or':_[_0xfe25('0x48')](_0xe759ec,function(_0x5e7552){if(_0x5e7552[_0xfe25('0x49')][_0xfe25('0x4a')]!==_0xfe25('0x4b')){var _0x275579={};_0x275579[_0x5e7552[_0xfe25('0x4c')]]={'$like':'%'+_0xbf9c46[_0xfe25('0x39')]['filter']+'%'};return _0x275579;}})});}_0x43e0d0=_[_0xfe25('0x47')]({},_0x43e0d0,_0xbf9c46['options']);var _0xc9fffc={'where':_0x43e0d0[_0xfe25('0x44')]};return db[_0xfe25('0x4d')][_0xfe25('0x29')](_0xc9fffc)['then'](function(_0x1e4ca4){_0x3f05a8[_0xfe25('0x29')]=_0x1e4ca4;if(_0xbf9c46[_0xfe25('0x39')][_0xfe25('0x4e')]){_0x43e0d0[_0xfe25('0x4f')]=[{'all':!![]}];}return db[_0xfe25('0x4d')][_0xfe25('0x50')](_0x43e0d0);})[_0xfe25('0x31')](function(_0x2e47f7){_0x3f05a8[_0xfe25('0x51')]=_0x2e47f7;return _0x3f05a8;})['then'](respondWithFilteredResult(_0x4451bd,_0x43e0d0))['catch'](handleError(_0x4451bd,null));};exports[_0xfe25('0x52')]=function(_0x2bdef9,_0x12bbf1){var _0x197469={'raw':![],'where':{'id':_0x2bdef9[_0xfe25('0x53')]['id']}},_0x5bc61e={};_0x5bc61e['model']=_[_0xfe25('0x38')](db[_0xfe25('0x4d')][_0xfe25('0x36')]);_0x5bc61e[_0xfe25('0x39')]=_[_0xfe25('0x38')](_0x2bdef9['query']);_0x5bc61e['filters']=_[_0xfe25('0x54')](_0x5bc61e[_0xfe25('0x37')],_0x5bc61e[_0xfe25('0x39')]);_0x197469[_0xfe25('0x3c')]=_[_0xfe25('0x54')](_0x5bc61e[_0xfe25('0x37')],qs[_0xfe25('0x3d')](_0x2bdef9[_0xfe25('0x39')][_0xfe25('0x3d')]));_0x197469[_0xfe25('0x3c')]=_0x197469['attributes'][_0xfe25('0x3e')]?_0x197469[_0xfe25('0x3c')]:_0x5bc61e[_0xfe25('0x37')];if(_0x2bdef9[_0xfe25('0x39')][_0xfe25('0x4e')]){_0x197469[_0xfe25('0x4f')]=[{'all':!![]}];}_0x197469=_[_0xfe25('0x47')]({},_0x197469,_0x2bdef9[_0xfe25('0x55')]);return db[_0xfe25('0x4d')][_0xfe25('0x56')](_0x197469)['then'](handleEntityNotFound(_0x12bbf1,null))['then'](respondWithResult(_0x12bbf1,null))[_0xfe25('0x26')](handleError(_0x12bbf1,null));};exports[_0xfe25('0x57')]=function(_0x8f50bf,_0x40a599){return db['DeskConfiguration'][_0xfe25('0x57')](_0x8f50bf[_0xfe25('0x58')],{})[_0xfe25('0x31')](respondWithResult(_0x40a599,0xc9))[_0xfe25('0x26')](handleError(_0x40a599,null));};exports[_0xfe25('0x59')]=function(_0x31500c,_0x1fee69){if(_0x31500c[_0xfe25('0x58')]['id']){delete _0x31500c[_0xfe25('0x58')]['id'];}return db[_0xfe25('0x4d')][_0xfe25('0x56')]({'where':{'id':_0x31500c[_0xfe25('0x53')]['id']}})['then'](handleEntityNotFound(_0x1fee69,null))[_0xfe25('0x31')](saveUpdates(_0x31500c[_0xfe25('0x58')],null))[_0xfe25('0x31')](respondWithResult(_0x1fee69,null))[_0xfe25('0x26')](handleError(_0x1fee69,null));};exports[_0xfe25('0x5a')]=function(_0x5d1ffc,_0x3585f8){return db[_0xfe25('0x4d')]['find']({'where':{'id':_0x5d1ffc[_0xfe25('0x53')]['id']}})[_0xfe25('0x31')](handleEntityNotFound(_0x3585f8,null))['then'](removeEntity(_0x3585f8,null))[_0xfe25('0x26')](handleError(_0x3585f8,null));};exports[_0xfe25('0x5b')]=function(_0x398177,_0x2c3d77,_0xe7cc6e){var _0x70ba86={};var _0x4592fc={};var _0x321180;var _0x3349c0;return db[_0xfe25('0x4d')][_0xfe25('0x5c')]({'where':{'id':_0x398177['params']['id']}})[_0xfe25('0x31')](handleEntityNotFound(_0x2c3d77,null))[_0xfe25('0x31')](function(_0x2d6c9d){if(_0x2d6c9d){_0x321180=_0x2d6c9d;_0x4592fc[_0xfe25('0x37')]=_[_0xfe25('0x38')](db['DeskField'][_0xfe25('0x36')]);_0x4592fc[_0xfe25('0x39')]=_[_0xfe25('0x38')](_0x398177[_0xfe25('0x39')]);_0x4592fc[_0xfe25('0x3b')]=_[_0xfe25('0x54')](_0x4592fc['model'],_0x4592fc[_0xfe25('0x39')]);_0x70ba86[_0xfe25('0x3c')]=_['intersection'](_0x4592fc['model'],qs[_0xfe25('0x3d')](_0x398177['query']['fields']));_0x70ba86[_0xfe25('0x3c')]=_0x70ba86[_0xfe25('0x3c')][_0xfe25('0x3e')]?_0x70ba86[_0xfe25('0x3c')]:_0x4592fc[_0xfe25('0x37')];_0x70ba86[_0xfe25('0x42')]=qs[_0xfe25('0x43')](_0x398177[_0xfe25('0x39')][_0xfe25('0x43')]);_0x70ba86[_0xfe25('0x44')]=qs['filters'](_['pick'](_0x398177[_0xfe25('0x39')],_0x4592fc[_0xfe25('0x3b')]));if(_0x398177[_0xfe25('0x39')][_0xfe25('0x5d')]){_0x70ba86[_0xfe25('0x44')]=_[_0xfe25('0x47')](_0x70ba86[_0xfe25('0x44')],{'$or':_[_0xfe25('0x48')](_0x70ba86['attributes'],function(_0x109612){var _0x3e55fd={};_0x3e55fd[_0x109612]={'$like':'%'+_0x398177[_0xfe25('0x39')][_0xfe25('0x5d')]+'%'};return _0x3e55fd;})});}_0x70ba86=_[_0xfe25('0x47')]({},_0x70ba86,_0x398177['options']);return _0x321180['getFields'](_0x70ba86);}})['then'](function(_0x4e527b){if(_0x4e527b){_0x3349c0=_0x4e527b[_0xfe25('0x3e')];if(!_0x398177['query'][_0xfe25('0x3f')](_0xfe25('0x40'))){_0x70ba86[_0xfe25('0x41')]=qs[_0xfe25('0x41')](_0x398177[_0xfe25('0x39')]['limit']);_0x70ba86[_0xfe25('0x2a')]=qs['offset'](_0x398177[_0xfe25('0x39')][_0xfe25('0x2a')]);}return _0x321180[_0xfe25('0x5b')](_0x70ba86);}})[_0xfe25('0x31')](function(_0x5e6e34){if(_0x5e6e34){return _0x5e6e34?{'count':_0x3349c0,'rows':_0x5e6e34}:null;}})[_0xfe25('0x31')](respondWithResult(_0x2c3d77,null))[_0xfe25('0x26')](handleError(_0x2c3d77,null));};exports[_0xfe25('0x5e')]=function(_0x4a0fc1,_0x1a52ce,_0x4579bc){var _0x56eaf0={};var _0x5e8efb={};var _0x364876;var _0x4cbb60;return db[_0xfe25('0x4d')][_0xfe25('0x5c')]({'where':{'id':_0x4a0fc1[_0xfe25('0x53')]['id']}})[_0xfe25('0x31')](handleEntityNotFound(_0x1a52ce,null))['then'](function(_0x55031a){if(_0x55031a){_0x364876=_0x55031a;_0x5e8efb[_0xfe25('0x37')]=_['keys'](db[_0xfe25('0x5f')][_0xfe25('0x36')]);_0x5e8efb[_0xfe25('0x39')]=_[_0xfe25('0x38')](_0x4a0fc1[_0xfe25('0x39')]);_0x5e8efb[_0xfe25('0x3b')]=_[_0xfe25('0x54')](_0x5e8efb[_0xfe25('0x37')],_0x5e8efb[_0xfe25('0x39')]);_0x56eaf0['attributes']=_['intersection'](_0x5e8efb[_0xfe25('0x37')],qs['fields'](_0x4a0fc1['query'][_0xfe25('0x3d')]));_0x56eaf0[_0xfe25('0x3c')]=_0x56eaf0['attributes']['length']?_0x56eaf0[_0xfe25('0x3c')]:_0x5e8efb[_0xfe25('0x37')];_0x56eaf0[_0xfe25('0x42')]=qs[_0xfe25('0x43')](_0x4a0fc1[_0xfe25('0x39')]['sort']);_0x56eaf0['where']=qs['filters'](_[_0xfe25('0x60')](_0x4a0fc1[_0xfe25('0x39')],_0x5e8efb[_0xfe25('0x3b')]));if(_0x4a0fc1[_0xfe25('0x39')][_0xfe25('0x5d')]){_0x56eaf0[_0xfe25('0x44')]=_['merge'](_0x56eaf0[_0xfe25('0x44')],{'$or':_['map'](_0x56eaf0[_0xfe25('0x3c')],function(_0x2f5dd7){var _0x2713e7={};_0x2713e7[_0x2f5dd7]={'$like':'%'+_0x4a0fc1[_0xfe25('0x39')][_0xfe25('0x5d')]+'%'};return _0x2713e7;})});}_0x56eaf0=_[_0xfe25('0x47')]({},_0x56eaf0,_0x4a0fc1[_0xfe25('0x55')]);return _0x364876[_0xfe25('0x5e')](_0x56eaf0);}})[_0xfe25('0x31')](function(_0x116c8f){if(_0x116c8f){_0x4cbb60=_0x116c8f[_0xfe25('0x3e')];if(!_0x4a0fc1['query']['hasOwnProperty']('nolimit')){_0x56eaf0['limit']=qs[_0xfe25('0x41')](_0x4a0fc1['query'][_0xfe25('0x41')]);_0x56eaf0[_0xfe25('0x2a')]=qs[_0xfe25('0x2a')](_0x4a0fc1[_0xfe25('0x39')][_0xfe25('0x2a')]);}return _0x364876[_0xfe25('0x5e')](_0x56eaf0);}})[_0xfe25('0x31')](function(_0x222a6c){if(_0x222a6c){return _0x222a6c?{'count':_0x4cbb60,'rows':_0x222a6c}:null;}})['then'](respondWithResult(_0x1a52ce,null))[_0xfe25('0x26')](handleError(_0x1a52ce,null));};exports[_0xfe25('0x61')]=function(_0x17b6a2,_0x1dc875,_0x2df829){var _0xa9f408={};var _0x5bb523={};var _0x5550c9;var _0x212841;return db[_0xfe25('0x4d')]['findOne']({'where':{'id':_0x17b6a2[_0xfe25('0x53')]['id']}})[_0xfe25('0x31')](handleEntityNotFound(_0x1dc875,null))[_0xfe25('0x31')](function(_0x1de010){if(_0x1de010){_0x5550c9=_0x1de010;_0x5bb523[_0xfe25('0x37')]=_[_0xfe25('0x38')](db[_0xfe25('0x5f')][_0xfe25('0x36')]);_0x5bb523[_0xfe25('0x39')]=_['keys'](_0x17b6a2['query']);_0x5bb523[_0xfe25('0x3b')]=_[_0xfe25('0x54')](_0x5bb523[_0xfe25('0x37')],_0x5bb523[_0xfe25('0x39')]);_0xa9f408['attributes']=_[_0xfe25('0x54')](_0x5bb523[_0xfe25('0x37')],qs[_0xfe25('0x3d')](_0x17b6a2['query'][_0xfe25('0x3d')]));_0xa9f408['attributes']=_0xa9f408[_0xfe25('0x3c')]['length']?_0xa9f408[_0xfe25('0x3c')]:_0x5bb523[_0xfe25('0x37')];_0xa9f408[_0xfe25('0x42')]=qs[_0xfe25('0x43')](_0x17b6a2['query'][_0xfe25('0x43')]);_0xa9f408['where']=qs[_0xfe25('0x3b')](_['pick'](_0x17b6a2[_0xfe25('0x39')],_0x5bb523[_0xfe25('0x3b')]));if(_0x17b6a2['query']['filter']){_0xa9f408[_0xfe25('0x44')]=_[_0xfe25('0x47')](_0xa9f408[_0xfe25('0x44')],{'$or':_[_0xfe25('0x48')](_0xa9f408['attributes'],function(_0x377220){var _0x5c1b10={};_0x5c1b10[_0x377220]={'$like':'%'+_0x17b6a2[_0xfe25('0x39')][_0xfe25('0x5d')]+'%'};return _0x5c1b10;})});}_0xa9f408=_[_0xfe25('0x47')]({},_0xa9f408,_0x17b6a2[_0xfe25('0x55')]);return _0x5550c9[_0xfe25('0x61')](_0xa9f408);}})[_0xfe25('0x31')](function(_0x1af1e9){if(_0x1af1e9){_0x212841=_0x1af1e9['length'];if(!_0x17b6a2[_0xfe25('0x39')][_0xfe25('0x3f')](_0xfe25('0x40'))){_0xa9f408[_0xfe25('0x41')]=qs['limit'](_0x17b6a2[_0xfe25('0x39')][_0xfe25('0x41')]);_0xa9f408[_0xfe25('0x2a')]=qs[_0xfe25('0x2a')](_0x17b6a2[_0xfe25('0x39')][_0xfe25('0x2a')]);}return _0x5550c9[_0xfe25('0x61')](_0xa9f408);}})[_0xfe25('0x31')](function(_0x1f9a9f){if(_0x1f9a9f){return _0x1f9a9f?{'count':_0x212841,'rows':_0x1f9a9f}:null;}})[_0xfe25('0x31')](respondWithResult(_0x1dc875,null))[_0xfe25('0x26')](handleError(_0x1dc875,null));};exports[_0xfe25('0x62')]=function(_0x31d69b,_0x267f54,_0x570868){var _0x852bd0={};var _0x305c2d={};var _0x1988a9;var _0x1d09df;return db[_0xfe25('0x4d')][_0xfe25('0x5c')]({'where':{'id':_0x31d69b[_0xfe25('0x53')]['id']}})[_0xfe25('0x31')](handleEntityNotFound(_0x267f54,null))['then'](function(_0x528c15){if(_0x528c15){_0x1988a9=_0x528c15;_0x305c2d['model']=_[_0xfe25('0x38')](db['Tag'][_0xfe25('0x36')]);_0x305c2d[_0xfe25('0x39')]=_['keys'](_0x31d69b['query']);_0x305c2d[_0xfe25('0x3b')]=_[_0xfe25('0x54')](_0x305c2d[_0xfe25('0x37')],_0x305c2d[_0xfe25('0x39')]);_0x852bd0[_0xfe25('0x3c')]=_[_0xfe25('0x54')](_0x305c2d['model'],qs[_0xfe25('0x3d')](_0x31d69b['query']['fields']));_0x852bd0['attributes']=_0x852bd0[_0xfe25('0x3c')]['length']?_0x852bd0[_0xfe25('0x3c')]:_0x305c2d[_0xfe25('0x37')];_0x852bd0['order']=qs[_0xfe25('0x43')](_0x31d69b[_0xfe25('0x39')][_0xfe25('0x43')]);_0x852bd0[_0xfe25('0x44')]=qs[_0xfe25('0x3b')](_[_0xfe25('0x60')](_0x31d69b[_0xfe25('0x39')],_0x305c2d[_0xfe25('0x3b')]));if(_0x31d69b[_0xfe25('0x39')][_0xfe25('0x5d')]){_0x852bd0[_0xfe25('0x44')]=_[_0xfe25('0x47')](_0x852bd0['where'],{'$or':_[_0xfe25('0x48')](_0x852bd0[_0xfe25('0x3c')],function(_0x1901ed){var _0x22354e={};_0x22354e[_0x1901ed]={'$like':'%'+_0x31d69b['query'][_0xfe25('0x5d')]+'%'};return _0x22354e;})});}_0x852bd0=_[_0xfe25('0x47')]({},_0x852bd0,_0x31d69b[_0xfe25('0x55')]);return _0x1988a9[_0xfe25('0x62')](_0x852bd0);}})[_0xfe25('0x31')](function(_0x38877f){if(_0x38877f){_0x1d09df=_0x38877f['length'];if(!_0x31d69b[_0xfe25('0x39')][_0xfe25('0x3f')]('nolimit')){_0x852bd0[_0xfe25('0x41')]=qs[_0xfe25('0x41')](_0x31d69b[_0xfe25('0x39')]['limit']);_0x852bd0[_0xfe25('0x2a')]=qs[_0xfe25('0x2a')](_0x31d69b[_0xfe25('0x39')][_0xfe25('0x2a')]);}return _0x1988a9['getTags'](_0x852bd0);}})['then'](function(_0x59b36a){if(_0x59b36a){return _0x59b36a?{'count':_0x1d09df,'rows':_0x59b36a}:null;}})[_0xfe25('0x31')](respondWithResult(_0x267f54,null))[_0xfe25('0x26')](handleError(_0x267f54,null));};exports[_0xfe25('0x63')]=function(_0x1d1594,_0x360425,_0x165c2e){if(_0x1d1594[_0xfe25('0x58')]['id']){delete _0x1d1594[_0xfe25('0x58')]['id'];}return db[_0xfe25('0x4d')]['findOne']({'where':{'id':_0x1d1594[_0xfe25('0x53')]['id']}})[_0xfe25('0x31')](handleEntityNotFound(_0x360425,null))['then'](function(_0x3bbda2){if(_0x3bbda2){return _0x3bbda2[_0xfe25('0x63')](_0x1d1594[_0xfe25('0x58')][_0xfe25('0x64')]||[]);}return null;})[_0xfe25('0x31')](respondWithResult(_0x360425,null))[_0xfe25('0x26')](handleError(_0x360425,null));};
\ No newline at end of file
index 73b42d2..c29e335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['bluebird','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','int_desk_configurations','lodash','moment'];(function(_0x431ae1,_0x385f06){var _0x27fcbd=function(_0x16e71f){while(--_0x16e71f){_0x431ae1['push'](_0x431ae1['shift']());}};_0x27fcbd(++_0x385f06);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x2a2abf,_0x4b5ef2){_0x2a2abf=_0x2a2abf-0x0;var _0x20077a=_0xdd4f[_0x2a2abf];return _0x20077a;};'use strict';var _=require(_0xfdd4('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xfdd4('0x1'));var BPromise=require(_0xfdd4('0x2'));var rp=require('request-promise');var attributes=require(_0xfdd4('0x3'));module[_0xfdd4('0x4')]=function(_0x6b2b0d,_0x554e44){return _0x6b2b0d[_0xfdd4('0x5')](_0xfdd4('0x6'),attributes,{'tableName':_0xfdd4('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x955f=['moment','request-promise','define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api'];(function(_0x432fca,_0xb0b1b5){var _0x3adba4=function(_0x5e3ae4){while(--_0x5e3ae4){_0x432fca['push'](_0x432fca['shift']());}};_0x3adba4(++_0xb0b1b5);}(_0x955f,0x1eb));var _0xf955=function(_0x313f77,_0x26245a){_0x313f77=_0x313f77-0x0;var _0x276462=_0x955f[_0x313f77];return _0x276462;};'use strict';var _=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var logger=require(_0xf955('0x2'))(_0xf955('0x3'));var moment=require(_0xf955('0x4'));var BPromise=require('bluebird');var rp=require(_0xf955('0x5'));var attributes=require('./intDeskConfiguration.attributes');module['exports']=function(_0x1db0dd,_0x5a20bc){return _0x1db0dd[_0xf955('0x6')](_0xf955('0x7'),attributes,{'tableName':_0xf955('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c326f8c..8e3d8ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x13241b,_0x3a42a0){var _0x4d54a7=function(_0x3db499){while(--_0x3db499){_0x13241b['push'](_0x13241b['shift']());}};_0x4d54a7(++_0x3a42a0);}(_0x326f,0xd1));var _0xf326=function(_0x13a346,_0x1bc7d0){_0x13a346=_0x13a346-0x0;var _0x171845=_0x326f[_0x13a346];return _0x171845;};'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')]('DeskConfiguration,\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')]('DeskConfiguration,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}
\ No newline at end of file
+var _0x7da7=['../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','ioredis'];(function(_0x319f9e,_0x52c643){var _0x8b4ada=function(_0x123e3e){while(--_0x123e3e){_0x319f9e['push'](_0x319f9e['shift']());}};_0x8b4ada(++_0x52c643);}(_0x7da7,0x10d));var _0x77da=function(_0xabfec4,_0x35076e){_0xabfec4=_0xabfec4-0x0;var _0x7bafa2=_0x7da7[_0xabfec4];return _0x7bafa2;};'use strict';var _=require(_0x77da('0x0'));var util=require(_0x77da('0x1'));var moment=require(_0x77da('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x77da('0x3'));var db=require(_0x77da('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x77da('0x5'))(_0x77da('0x6'));var config=require('../../config/environment');var jayson=require(_0x77da('0x7'));var client=jayson[_0x77da('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30afe0,_0x47cf1d,_0x1191de){return new BPromise(function(_0x13992e,_0x37c5ab){return client[_0x77da('0x9')](_0x30afe0,_0x1191de)[_0x77da('0xa')](function(_0x58f3fe){logger[_0x77da('0xb')](_0x77da('0xc'),_0x47cf1d,_0x77da('0xd'));logger['debug'](_0x77da('0xe'),_0x47cf1d,_0x77da('0xd'),JSON[_0x77da('0xf')](_0x58f3fe));if(_0x58f3fe[_0x77da('0x10')]){if(_0x58f3fe['error'][_0x77da('0x11')]===0x1f4){logger[_0x77da('0x10')](_0x77da('0xc'),_0x47cf1d,_0x58f3fe['error']['message']);return _0x37c5ab(_0x58f3fe[_0x77da('0x10')][_0x77da('0x12')]);}logger['error'](_0x77da('0xc'),_0x47cf1d,_0x58f3fe[_0x77da('0x10')][_0x77da('0x12')]);return _0x13992e(_0x58f3fe[_0x77da('0x10')]['message']);}else{logger[_0x77da('0xb')]('DeskConfiguration,\x20%s,\x20%s',_0x47cf1d,_0x77da('0xd'));_0x13992e(_0x58f3fe[_0x77da('0x13')][_0x77da('0x12')]);}})[_0x77da('0x14')](function(_0x4ecd98){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x47cf1d,_0x4ecd98);_0x37c5ab(_0x4ecd98);});});}
\ No newline at end of file
index 4b880df..7233a7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89ca=['create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0x3012b7,_0x1f4fa7){var _0x49df5e=function(_0x4b4bfa){while(--_0x4b4bfa){_0x3012b7['push'](_0x3012b7['shift']());}};_0x49df5e(++_0x1f4fa7);}(_0x89ca,0x1c8));var _0xa89c=function(_0x1a0b54,_0x4c5d34){_0x1a0b54=_0x1a0b54-0x0;var _0x1274bb=_0x89ca[_0x1a0b54];return _0x1274bb;};'use strict';var multer=require(_0xa89c('0x0'));var util=require('util');var path=require(_0xa89c('0x1'));var timeout=require(_0xa89c('0x2'));var express=require(_0xa89c('0x3'));var router=express[_0xa89c('0x4')]();var auth=require(_0xa89c('0x5'));var interaction=require(_0xa89c('0x6'));var config=require('../../config/environment');var controller=require('./intDeskField.controller');router[_0xa89c('0x7')]('/',auth[_0xa89c('0x8')](),controller[_0xa89c('0x9')]);router['get'](_0xa89c('0xa'),auth[_0xa89c('0x8')](),controller[_0xa89c('0xb')]);router['post']('/',auth[_0xa89c('0x8')](),controller[_0xa89c('0xc')]);router[_0xa89c('0xd')](_0xa89c('0xa'),auth[_0xa89c('0x8')](),controller[_0xa89c('0xe')]);router[_0xa89c('0xf')](_0xa89c('0xa'),auth['isAuthenticated'](),controller[_0xa89c('0x10')]);module[_0xa89c('0x11')]=router;
\ No newline at end of file
+var _0xe8a8=['get','isAuthenticated','/:id','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller'];(function(_0x47c459,_0x26b83d){var _0x4780ce=function(_0x1a63b2){while(--_0x1a63b2){_0x47c459['push'](_0x47c459['shift']());}};_0x4780ce(++_0x26b83d);}(_0xe8a8,0xd9));var _0x8e8a=function(_0x1111f5,_0xac54bd){_0x1111f5=_0x1111f5-0x0;var _0x2b2294=_0xe8a8[_0x1111f5];return _0x2b2294;};'use strict';var multer=require('multer');var util=require(_0x8e8a('0x0'));var path=require('path');var timeout=require(_0x8e8a('0x1'));var express=require(_0x8e8a('0x2'));var router=express[_0x8e8a('0x3')]();var auth=require(_0x8e8a('0x4'));var interaction=require(_0x8e8a('0x5'));var config=require(_0x8e8a('0x6'));var controller=require(_0x8e8a('0x7'));router[_0x8e8a('0x8')]('/',auth[_0x8e8a('0x9')](),controller['index']);router[_0x8e8a('0x8')](_0x8e8a('0xa'),auth[_0x8e8a('0x9')](),controller['show']);router['post']('/',auth[_0x8e8a('0x9')](),controller['create']);router['put'](_0x8e8a('0xa'),auth[_0x8e8a('0x9')](),controller[_0x8e8a('0xb')]);router[_0x8e8a('0xc')](_0x8e8a('0xa'),auth[_0x8e8a('0x9')](),controller[_0x8e8a('0xd')]);module[_0x8e8a('0xe')]=router;
\ No newline at end of file
index a2ff557..5daea87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['keyValue','string','STRING','BOOLEAN','ENUM','customVariable'];(function(_0x25e648,_0x1deed9){var _0x21f59e=function(_0x9ae79a){while(--_0x9ae79a){_0x25e648['push'](_0x25e648['shift']());}};_0x21f59e(++_0x1deed9);}(_0xa74f,0x9a));var _0xfa74=function(_0x1faaa1,_0x1568dd){_0x1faaa1=_0x1faaa1-0x0;var _0x994ec=_0xa74f[_0x1faaa1];return _0x994ec;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xfa74('0x0')]('string','variable',_0xfa74('0x1'),_0xfa74('0x2')),'defaultValue':_0xfa74('0x3')},'content':{'type':Sequelize[_0xfa74('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xfa74('0x0')]('string','variable',_0xfa74('0x1'))},'keyContent':{'type':Sequelize[_0xfa74('0x4')]},'idField':{'type':Sequelize[_0xfa74('0x4')]},'nameField':{'type':Sequelize[_0xfa74('0x4')]},'customField':{'type':Sequelize[_0xfa74('0x5')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xfa74('0x4')]}};
\ No newline at end of file
+var _0x0713=['BOOLEAN','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0x483102,_0x54e93d){var _0x5cc885=function(_0x54931c){while(--_0x54931c){_0x483102['push'](_0x483102['shift']());}};_0x5cc885(++_0x54e93d);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x3071('0x0')](_0x3071('0x1'),_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x3071('0x5')]},'key':{'type':Sequelize[_0x3071('0x5')]},'keyType':{'type':Sequelize[_0x3071('0x0')](_0x3071('0x1'),_0x3071('0x2'),_0x3071('0x3'))},'keyContent':{'type':Sequelize[_0x3071('0x5')]},'idField':{'type':Sequelize[_0x3071('0x5')]},'nameField':{'type':Sequelize[_0x3071('0x5')]},'customField':{'type':Sequelize[_0x3071('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3071('0x5')]}};
\ No newline at end of file
index eae1ca6..4ec2a6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5075=['then','destroy','error','stack','name','send','DeskField','rawAttributes','keys','query','dateStart','dateEnd','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','add','day','filter','merge','map','type','key','VIRTUAL','field','includeAll','include','findAll','rows','catch','show','params','options','create','body','find','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject','save','update'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x5075,0x73));var _0x5507=function(_0x22342c,_0x218835){_0x22342c=_0x22342c-0x0;var _0xd3b434=_0x5075[_0x22342c];return _0xd3b434;};'use strict';var pdf=require(_0x5507('0x0'));var emlformat=require(_0x5507('0x1'));var rimraf=require(_0x5507('0x2'));var zipdir=require(_0x5507('0x3'));var jsonpatch=require(_0x5507('0x4'));var rp=require(_0x5507('0x5'));var moment=require(_0x5507('0x6'));var BPromise=require('bluebird');var Mustache=require(_0x5507('0x7'));var util=require(_0x5507('0x8'));var path=require(_0x5507('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5507('0xa'));var fs=require('fs');var _=require(_0x5507('0xb'));var squel=require('squel');var crypto=require(_0x5507('0xc'));var jsforce=require(_0x5507('0xd'));var deskjs=require(_0x5507('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5507('0xf'));var Redis=require(_0x5507('0x10'));var qs=require(_0x5507('0x11'));var logger=require(_0x5507('0x12'))('api');var utils=require(_0x5507('0x13'));var config=require(_0x5507('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18601c,_0x5fbe08){_0x5fbe08=_0x5fbe08||0xcc;return function(_0x52caf2){if(_0x52caf2){return _0x18601c[_0x5507('0x15')](_0x5fbe08);}return _0x18601c[_0x5507('0x16')](_0x5fbe08)[_0x5507('0x17')]();};}function respondWithResult(_0x267f27,_0x13b60a){_0x13b60a=_0x13b60a||0xc8;return function(_0x1f3886){if(_0x1f3886){return _0x267f27['status'](_0x13b60a)[_0x5507('0x18')](_0x1f3886);}};}function respondWithFilteredResult(_0x2b7c43,_0xc828e5){return function(_0x46545d){if(_0x46545d){var _0x4df473=_0x46545d[_0x5507('0x19')],_0x49e400=_0xc828e5[_0x5507('0x1a')],_0x10d7b9=_0xc828e5[_0x5507('0x1a')]+_0xc828e5[_0x5507('0x1b')],_0x2dfd06;if(_0x10d7b9>=_0x4df473){_0x10d7b9=_0x4df473;_0x2dfd06=0xc8;}else{_0x2dfd06=0xce;}_0x2b7c43[_0x5507('0x16')](_0x2dfd06);return _0x2b7c43[_0x5507('0x1c')](_0x5507('0x1d'),_0x49e400+'-'+_0x10d7b9+'/'+_0x4df473)[_0x5507('0x18')](_0x46545d);}return null;};}function patchUpdates(_0x2260f7){return function(_0x3822dd){try{jsonpatch['apply'](_0x3822dd,_0x2260f7,!![]);}catch(_0x14dab0){return BPromise[_0x5507('0x1e')](_0x14dab0);}return _0x3822dd[_0x5507('0x1f')]();};}function saveUpdates(_0x193eda,_0x54f473){return function(_0x1dc53e){if(_0x1dc53e){return _0x1dc53e[_0x5507('0x20')](_0x193eda)[_0x5507('0x21')](function(_0x3ca1f7){return _0x3ca1f7;});}return null;};}function removeEntity(_0x68397c,_0x1be8b1){return function(_0x501a94){if(_0x501a94){return _0x501a94[_0x5507('0x22')]()[_0x5507('0x21')](function(){_0x68397c[_0x5507('0x16')](0xcc)[_0x5507('0x17')]();});}};}function handleEntityNotFound(_0x141d22,_0x2de482){return function(_0x1fcc8d){if(!_0x1fcc8d){_0x141d22[_0x5507('0x15')](0x194);}return _0x1fcc8d;};}function handleError(_0x398911,_0xa47641){_0xa47641=_0xa47641||0x1f4;return function(_0xc9a266){logger[_0x5507('0x23')](_0xc9a266[_0x5507('0x24')]);if(_0xc9a266[_0x5507('0x25')]){delete _0xc9a266[_0x5507('0x25')];}_0x398911['status'](_0xa47641)[_0x5507('0x26')](_0xc9a266);};}exports['index']=function(_0x26335e,_0x4ea271){var _0xa66a01={},_0x24668b={},_0x4beb0a={'count':0x0,'rows':[]};var _0x5cbb09=db[_0x5507('0x27')][_0x5507('0x28')];_0x24668b['model']=_[_0x5507('0x29')](_0x5cbb09);var _0x24574b={'dateStart':_0x26335e[_0x5507('0x2a')][_0x5507('0x2b')],'dateEnd':_0x26335e[_0x5507('0x2a')][_0x5507('0x2c')]};delete _0x26335e['query'][_0x5507('0x2b')];delete _0x26335e[_0x5507('0x2a')][_0x5507('0x2c')];_0x24668b[_0x5507('0x2a')]=_[_0x5507('0x29')](_0x26335e['query']);_0x24668b['filters']=_[_0x5507('0x2d')](_0x24668b[_0x5507('0x2e')],_0x24668b[_0x5507('0x2a')]);_0xa66a01[_0x5507('0x2f')]=_['intersection'](_0x24668b[_0x5507('0x2e')],qs[_0x5507('0x30')](_0x26335e[_0x5507('0x2a')][_0x5507('0x30')]));_0xa66a01[_0x5507('0x2f')]=_0xa66a01[_0x5507('0x2f')][_0x5507('0x31')]?_0xa66a01[_0x5507('0x2f')]:_0x24668b['model'];if(!_0x26335e[_0x5507('0x2a')][_0x5507('0x32')](_0x5507('0x33'))){_0xa66a01['limit']=qs['limit'](_0x26335e[_0x5507('0x2a')][_0x5507('0x1b')]);_0xa66a01[_0x5507('0x1a')]=qs[_0x5507('0x1a')](_0x26335e[_0x5507('0x2a')]['offset']);}_0xa66a01['order']=qs[_0x5507('0x34')](_0x26335e[_0x5507('0x2a')][_0x5507('0x34')]);_0xa66a01[_0x5507('0x35')]=qs['filters'](_['pick'](_0x26335e[_0x5507('0x2a')],_0x24668b['filters']));if(_0x24574b[_0x5507('0x2b')]){if(_0x24574b[_0x5507('0x2c')]){_0x24574b[_0x5507('0x2c')]=moment(_0x24574b[_0x5507('0x2c')])[_0x5507('0x36')](0x1,_0x5507('0x37'));}else{_0x24574b[_0x5507('0x2c')]=moment(_0x24574b[_0x5507('0x2b')])[_0x5507('0x36')](0x1,_0x5507('0x37'));}_['merge'](_0xa66a01['where'],{'createdAt':{'$gte':_0x24574b['dateStart'],'$lte':_0x24574b['dateEnd']}});}if(_0x26335e[_0x5507('0x2a')][_0x5507('0x38')]){_0xa66a01[_0x5507('0x35')]=_[_0x5507('0x39')](_0xa66a01[_0x5507('0x35')],{'$or':_[_0x5507('0x3a')](_0x5cbb09,function(_0xbef058){if(_0xbef058[_0x5507('0x3b')][_0x5507('0x3c')]!==_0x5507('0x3d')){var _0x3ec0ed={};_0x3ec0ed[_0xbef058[_0x5507('0x3e')]]={'$like':'%'+_0x26335e[_0x5507('0x2a')][_0x5507('0x38')]+'%'};return _0x3ec0ed;}})});}_0xa66a01=_['merge']({},_0xa66a01,_0x26335e['options']);var _0x50eb32={'where':_0xa66a01[_0x5507('0x35')]};return db[_0x5507('0x27')][_0x5507('0x19')](_0x50eb32)[_0x5507('0x21')](function(_0xcd4df5){_0x4beb0a[_0x5507('0x19')]=_0xcd4df5;if(_0x26335e[_0x5507('0x2a')][_0x5507('0x3f')]){_0xa66a01[_0x5507('0x40')]=[{'all':!![]}];}return db[_0x5507('0x27')][_0x5507('0x41')](_0xa66a01);})[_0x5507('0x21')](function(_0x24d7b5){_0x4beb0a[_0x5507('0x42')]=_0x24d7b5;return _0x4beb0a;})[_0x5507('0x21')](respondWithFilteredResult(_0x4ea271,_0xa66a01))[_0x5507('0x43')](handleError(_0x4ea271,null));};exports[_0x5507('0x44')]=function(_0x44adbd,_0x3ca494){var _0x4a8b67={'raw':!![],'where':{'id':_0x44adbd[_0x5507('0x45')]['id']}},_0x21f162={};_0x21f162['model']=_['keys'](db[_0x5507('0x27')][_0x5507('0x28')]);_0x21f162[_0x5507('0x2a')]=_[_0x5507('0x29')](_0x44adbd[_0x5507('0x2a')]);_0x21f162['filters']=_[_0x5507('0x2d')](_0x21f162[_0x5507('0x2e')],_0x21f162[_0x5507('0x2a')]);_0x4a8b67['attributes']=_[_0x5507('0x2d')](_0x21f162[_0x5507('0x2e')],qs[_0x5507('0x30')](_0x44adbd[_0x5507('0x2a')][_0x5507('0x30')]));_0x4a8b67['attributes']=_0x4a8b67[_0x5507('0x2f')]['length']?_0x4a8b67[_0x5507('0x2f')]:_0x21f162[_0x5507('0x2e')];if(_0x44adbd[_0x5507('0x2a')][_0x5507('0x3f')]){_0x4a8b67[_0x5507('0x40')]=[{'all':!![]}];}_0x4a8b67=_[_0x5507('0x39')]({},_0x4a8b67,_0x44adbd[_0x5507('0x46')]);return db[_0x5507('0x27')]['find'](_0x4a8b67)[_0x5507('0x21')](handleEntityNotFound(_0x3ca494,null))[_0x5507('0x21')](respondWithResult(_0x3ca494,null))['catch'](handleError(_0x3ca494,null));};exports['create']=function(_0x4e5825,_0x39b20f){return db['DeskField'][_0x5507('0x47')](_0x4e5825['body'],{})[_0x5507('0x21')](respondWithResult(_0x39b20f,0xc9))['catch'](handleError(_0x39b20f,null));};exports['update']=function(_0x3b98ae,_0x350c7e){if(_0x3b98ae[_0x5507('0x48')]['id']){delete _0x3b98ae[_0x5507('0x48')]['id'];}return db[_0x5507('0x27')][_0x5507('0x49')]({'where':{'id':_0x3b98ae['params']['id']}})[_0x5507('0x21')](handleEntityNotFound(_0x350c7e,null))[_0x5507('0x21')](saveUpdates(_0x3b98ae[_0x5507('0x48')],null))['then'](respondWithResult(_0x350c7e,null))[_0x5507('0x43')](handleError(_0x350c7e,null));};exports[_0x5507('0x22')]=function(_0x505e71,_0x2e0cfc){return db[_0x5507('0x27')][_0x5507('0x49')]({'where':{'id':_0x505e71[_0x5507('0x45')]['id']}})[_0x5507('0x21')](handleEntityNotFound(_0x2e0cfc,null))[_0x5507('0x21')](removeEntity(_0x2e0cfc,null))[_0x5507('0x43')](handleError(_0x2e0cfc,null));};
\ No newline at end of file
+var _0x46ed=['ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','count','offset','limit','status','set','reject','save','update','then','end','error','name','send','index','DeskField','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','add','day','merge','filter','map','type','key','options','includeAll','include','findAll','rows','params','find','catch','create','body','destroy','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv'];(function(_0x52860d,_0x2a54c1){var _0x173197=function(_0x2bdbd2){while(--_0x2bdbd2){_0x52860d['push'](_0x52860d['shift']());}};_0x173197(++_0x2a54c1);}(_0x46ed,0x168));var _0xd46e=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x46ed[_0x178e48];return _0x440d7e;};'use strict';var pdf=require(_0xd46e('0x0'));var emlformat=require(_0xd46e('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xd46e('0x2'));var jsonpatch=require(_0xd46e('0x3'));var rp=require(_0xd46e('0x4'));var moment=require('moment');var BPromise=require(_0xd46e('0x5'));var Mustache=require(_0xd46e('0x6'));var util=require('util');var path=require(_0xd46e('0x7'));var sox=require(_0xd46e('0x8'));var csv=require(_0xd46e('0x9'));var ejs=require(_0xd46e('0xa'));var fs=require('fs');var _=require(_0xd46e('0xb'));var squel=require(_0xd46e('0xc'));var crypto=require(_0xd46e('0xd'));var jsforce=require(_0xd46e('0xe'));var deskjs=require(_0xd46e('0xf'));var toCsv=require(_0xd46e('0x9'));var querystring=require(_0xd46e('0x10'));var Papa=require('papaparse');var Redis=require(_0xd46e('0x11'));var qs=require(_0xd46e('0x12'));var logger=require('../../config/logger')(_0xd46e('0x13'));var utils=require(_0xd46e('0x14'));var config=require(_0xd46e('0x15'));var db=require(_0xd46e('0x16'))['db'];function respondWithStatusCode(_0x1ad723,_0x2d95a9){_0x2d95a9=_0x2d95a9||0xcc;return function(_0x4920b6){if(_0x4920b6){return _0x1ad723[_0xd46e('0x17')](_0x2d95a9);}return _0x1ad723['status'](_0x2d95a9)['end']();};}function respondWithResult(_0xf3048c,_0x27dbfb){_0x27dbfb=_0x27dbfb||0xc8;return function(_0x53b309){if(_0x53b309){return _0xf3048c['status'](_0x27dbfb)[_0xd46e('0x18')](_0x53b309);}};}function respondWithFilteredResult(_0x4688ae,_0x1e9aae){return function(_0x3fdf88){if(_0x3fdf88){var _0x50c7c3=_0x3fdf88[_0xd46e('0x19')],_0x3b6d25=_0x1e9aae[_0xd46e('0x1a')],_0x44a620=_0x1e9aae['offset']+_0x1e9aae[_0xd46e('0x1b')],_0x417402;if(_0x44a620>=_0x50c7c3){_0x44a620=_0x50c7c3;_0x417402=0xc8;}else{_0x417402=0xce;}_0x4688ae[_0xd46e('0x1c')](_0x417402);return _0x4688ae[_0xd46e('0x1d')]('Content-Range',_0x3b6d25+'-'+_0x44a620+'/'+_0x50c7c3)['json'](_0x3fdf88);}return null;};}function patchUpdates(_0x2e8f6d){return function(_0x1bd574){try{jsonpatch['apply'](_0x1bd574,_0x2e8f6d,!![]);}catch(_0x4fd1f2){return BPromise[_0xd46e('0x1e')](_0x4fd1f2);}return _0x1bd574[_0xd46e('0x1f')]();};}function saveUpdates(_0x362885,_0x2273c5){return function(_0x409010){if(_0x409010){return _0x409010[_0xd46e('0x20')](_0x362885)[_0xd46e('0x21')](function(_0x327b7e){return _0x327b7e;});}return null;};}function removeEntity(_0xb4940,_0x3c7e91){return function(_0x468aba){if(_0x468aba){return _0x468aba['destroy']()[_0xd46e('0x21')](function(){_0xb4940[_0xd46e('0x1c')](0xcc)[_0xd46e('0x22')]();});}};}function handleEntityNotFound(_0x45ce0b,_0x128246){return function(_0xc1af7f){if(!_0xc1af7f){_0x45ce0b[_0xd46e('0x17')](0x194);}return _0xc1af7f;};}function handleError(_0x8a1be,_0x62dea5){_0x62dea5=_0x62dea5||0x1f4;return function(_0x4cf899){logger[_0xd46e('0x23')](_0x4cf899['stack']);if(_0x4cf899['name']){delete _0x4cf899[_0xd46e('0x24')];}_0x8a1be[_0xd46e('0x1c')](_0x62dea5)[_0xd46e('0x25')](_0x4cf899);};}exports[_0xd46e('0x26')]=function(_0x247b9f,_0x180851){var _0x1740d1={},_0x4dab6a={},_0x45d789={'count':0x0,'rows':[]};var _0x3c301a=db[_0xd46e('0x27')][_0xd46e('0x28')];_0x4dab6a[_0xd46e('0x29')]=_[_0xd46e('0x2a')](_0x3c301a);var _0x58aeef={'dateStart':_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x2c')],'dateEnd':_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x2d')]};delete _0x247b9f[_0xd46e('0x2b')][_0xd46e('0x2c')];delete _0x247b9f[_0xd46e('0x2b')][_0xd46e('0x2d')];_0x4dab6a[_0xd46e('0x2b')]=_[_0xd46e('0x2a')](_0x247b9f[_0xd46e('0x2b')]);_0x4dab6a[_0xd46e('0x2e')]=_[_0xd46e('0x2f')](_0x4dab6a['model'],_0x4dab6a[_0xd46e('0x2b')]);_0x1740d1[_0xd46e('0x30')]=_[_0xd46e('0x2f')](_0x4dab6a[_0xd46e('0x29')],qs['fields'](_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x31')]));_0x1740d1['attributes']=_0x1740d1[_0xd46e('0x30')][_0xd46e('0x32')]?_0x1740d1['attributes']:_0x4dab6a[_0xd46e('0x29')];if(!_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x33')]('nolimit')){_0x1740d1['limit']=qs[_0xd46e('0x1b')](_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x1b')]);_0x1740d1[_0xd46e('0x1a')]=qs[_0xd46e('0x1a')](_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x1a')]);}_0x1740d1[_0xd46e('0x34')]=qs['sort'](_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x35')]);_0x1740d1[_0xd46e('0x36')]=qs[_0xd46e('0x2e')](_[_0xd46e('0x37')](_0x247b9f[_0xd46e('0x2b')],_0x4dab6a[_0xd46e('0x2e')]));if(_0x58aeef['dateStart']){if(_0x58aeef[_0xd46e('0x2d')]){_0x58aeef[_0xd46e('0x2d')]=moment(_0x58aeef['dateEnd'])[_0xd46e('0x38')](0x1,_0xd46e('0x39'));}else{_0x58aeef[_0xd46e('0x2d')]=moment(_0x58aeef[_0xd46e('0x2c')])['add'](0x1,_0xd46e('0x39'));}_[_0xd46e('0x3a')](_0x1740d1[_0xd46e('0x36')],{'createdAt':{'$gte':_0x58aeef[_0xd46e('0x2c')],'$lte':_0x58aeef[_0xd46e('0x2d')]}});}if(_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x3b')]){_0x1740d1[_0xd46e('0x36')]=_['merge'](_0x1740d1[_0xd46e('0x36')],{'$or':_[_0xd46e('0x3c')](_0x3c301a,function(_0xc83ea1){if(_0xc83ea1[_0xd46e('0x3d')][_0xd46e('0x3e')]!=='VIRTUAL'){var _0x964c66={};_0x964c66[_0xc83ea1['field']]={'$like':'%'+_0x247b9f['query']['filter']+'%'};return _0x964c66;}})});}_0x1740d1=_['merge']({},_0x1740d1,_0x247b9f[_0xd46e('0x3f')]);var _0x54949f={'where':_0x1740d1[_0xd46e('0x36')]};return db[_0xd46e('0x27')]['count'](_0x54949f)[_0xd46e('0x21')](function(_0x4114e6){_0x45d789[_0xd46e('0x19')]=_0x4114e6;if(_0x247b9f[_0xd46e('0x2b')][_0xd46e('0x40')]){_0x1740d1[_0xd46e('0x41')]=[{'all':!![]}];}return db[_0xd46e('0x27')][_0xd46e('0x42')](_0x1740d1);})[_0xd46e('0x21')](function(_0xec367d){_0x45d789[_0xd46e('0x43')]=_0xec367d;return _0x45d789;})['then'](respondWithFilteredResult(_0x180851,_0x1740d1))['catch'](handleError(_0x180851,null));};exports['show']=function(_0x2b4a5a,_0x4e1d94){var _0x168d35={'raw':!![],'where':{'id':_0x2b4a5a[_0xd46e('0x44')]['id']}},_0x272f5f={};_0x272f5f[_0xd46e('0x29')]=_[_0xd46e('0x2a')](db[_0xd46e('0x27')][_0xd46e('0x28')]);_0x272f5f[_0xd46e('0x2b')]=_['keys'](_0x2b4a5a[_0xd46e('0x2b')]);_0x272f5f['filters']=_[_0xd46e('0x2f')](_0x272f5f[_0xd46e('0x29')],_0x272f5f[_0xd46e('0x2b')]);_0x168d35[_0xd46e('0x30')]=_[_0xd46e('0x2f')](_0x272f5f['model'],qs[_0xd46e('0x31')](_0x2b4a5a[_0xd46e('0x2b')][_0xd46e('0x31')]));_0x168d35[_0xd46e('0x30')]=_0x168d35[_0xd46e('0x30')]['length']?_0x168d35[_0xd46e('0x30')]:_0x272f5f[_0xd46e('0x29')];if(_0x2b4a5a[_0xd46e('0x2b')][_0xd46e('0x40')]){_0x168d35[_0xd46e('0x41')]=[{'all':!![]}];}_0x168d35=_['merge']({},_0x168d35,_0x2b4a5a[_0xd46e('0x3f')]);return db[_0xd46e('0x27')][_0xd46e('0x45')](_0x168d35)[_0xd46e('0x21')](handleEntityNotFound(_0x4e1d94,null))[_0xd46e('0x21')](respondWithResult(_0x4e1d94,null))[_0xd46e('0x46')](handleError(_0x4e1d94,null));};exports[_0xd46e('0x47')]=function(_0x440dcc,_0x5188f6){return db[_0xd46e('0x27')][_0xd46e('0x47')](_0x440dcc[_0xd46e('0x48')],{})[_0xd46e('0x21')](respondWithResult(_0x5188f6,0xc9))[_0xd46e('0x46')](handleError(_0x5188f6,null));};exports['update']=function(_0x4ae314,_0x3a94cf){if(_0x4ae314[_0xd46e('0x48')]['id']){delete _0x4ae314[_0xd46e('0x48')]['id'];}return db['DeskField']['find']({'where':{'id':_0x4ae314[_0xd46e('0x44')]['id']}})[_0xd46e('0x21')](handleEntityNotFound(_0x3a94cf,null))['then'](saveUpdates(_0x4ae314[_0xd46e('0x48')],null))[_0xd46e('0x21')](respondWithResult(_0x3a94cf,null))[_0xd46e('0x46')](handleError(_0x3a94cf,null));};exports[_0xd46e('0x49')]=function(_0x1bd8a5,_0x34d4ca){return db[_0xd46e('0x27')][_0xd46e('0x45')]({'where':{'id':_0x1bd8a5['params']['id']}})[_0xd46e('0x21')](handleEntityNotFound(_0x34d4ca,null))[_0xd46e('0x21')](removeEntity(_0x34d4ca,null))[_0xd46e('0x46')](handleError(_0x34d4ca,null));};
\ No newline at end of file
index e094d23..f57058b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['../../config/logger','bluebird','exports','define','int_desk_fields','util'];(function(_0x2a558d,_0x2df0ff){var _0xa7bc9c=function(_0x12a30e){while(--_0x12a30e){_0x2a558d['push'](_0x2a558d['shift']());}};_0xa7bc9c(++_0x2df0ff);}(_0xb821,0xa7));var _0x1b82=function(_0x21fe68,_0x3bb2b7){_0x21fe68=_0x21fe68-0x0;var _0xa6e74d=_0xb821[_0x21fe68];return _0xa6e74d;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var logger=require(_0x1b82('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1b82('0x2'));var rp=require('request-promise');var attributes=require('./intDeskField.attributes');module[_0x1b82('0x3')]=function(_0x1403ab,_0x3fadf0){return _0x1403ab[_0x1b82('0x4')]('DeskField',attributes,{'tableName':_0x1b82('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x17ba=['request-promise','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','lodash','util','api','moment','bluebird'];(function(_0x524207,_0x343c59){var _0x4575ac=function(_0x4a27c6){while(--_0x4a27c6){_0x524207['push'](_0x524207['shift']());}};_0x4575ac(++_0x343c59);}(_0x17ba,0xab));var _0xa17b=function(_0x584143,_0x5e8b01){_0x584143=_0x584143-0x0;var _0x312958=_0x17ba[_0x584143];return _0x312958;};'use strict';var _=require(_0xa17b('0x0'));var util=require(_0xa17b('0x1'));var logger=require('../../config/logger')(_0xa17b('0x2'));var moment=require(_0xa17b('0x3'));var BPromise=require(_0xa17b('0x4'));var rp=require(_0xa17b('0x5'));var attributes=require(_0xa17b('0x6'));module[_0xa17b('0x7')]=function(_0x11d7b7,_0x2f64d0){return _0x11d7b7[_0xa17b('0x8')](_0xa17b('0x9'),attributes,{'tableName':_0xa17b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c47624..e894ad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c12=['../../config/environment','client','http','request','then','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','error','message','info','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x56a871,_0x18b7fe){var _0x124954=function(_0x39b7a1){while(--_0x39b7a1){_0x56a871['push'](_0x56a871['shift']());}};_0x124954(++_0x18b7fe);}(_0x5c12,0x188));var _0x25c1=function(_0x2b737c,_0x274adf){_0x2b737c=_0x2b737c-0x0;var _0x466ed5=_0x5c12[_0x2b737c];return _0x466ed5;};'use strict';var _=require('lodash');var util=require(_0x25c1('0x0'));var moment=require(_0x25c1('0x1'));var BPromise=require('bluebird');var rs=require(_0x25c1('0x2'));var fs=require('fs');var Redis=require(_0x25c1('0x3'));var db=require(_0x25c1('0x4'))['db'];var utils=require(_0x25c1('0x5'));var logger=require(_0x25c1('0x6'))(_0x25c1('0x7'));var config=require(_0x25c1('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x25c1('0x9')][_0x25c1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x382922,_0x4ab674,_0x5c69b1){return new BPromise(function(_0x24981c,_0x3b69ba){return client[_0x25c1('0xb')](_0x382922,_0x5c69b1)[_0x25c1('0xc')](function(_0xf8363f){logger['info'](_0x25c1('0xd'),_0x4ab674,_0x25c1('0xe'));logger[_0x25c1('0xf')](_0x25c1('0x10'),_0x4ab674,_0x25c1('0xe'),JSON['stringify'](_0xf8363f));if(_0xf8363f[_0x25c1('0x11')]){if(_0xf8363f[_0x25c1('0x11')]['code']===0x1f4){logger[_0x25c1('0x11')](_0x25c1('0xd'),_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x3b69ba(_0xf8363f['error']['message']);}logger['error']('DeskField,\x20%s,\x20%s',_0x4ab674,_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);return _0x24981c(_0xf8363f[_0x25c1('0x11')][_0x25c1('0x12')]);}else{logger[_0x25c1('0x13')]('DeskField,\x20%s,\x20%s',_0x4ab674,_0x25c1('0xe'));_0x24981c(_0xf8363f['result']['message']);}})['catch'](function(_0x284712){logger[_0x25c1('0x11')]('DeskField,\x20%s,\x20%s',_0x4ab674,_0x284712);_0x3b69ba(_0x284712);});});}
\ No newline at end of file
+var _0xd6d6=['DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x37eace,_0x5b8519){var _0x4e36c3=function(_0x3a26c2){while(--_0x3a26c2){_0x37eace['push'](_0x37eace['shift']());}};_0x4e36c3(++_0x5b8519);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x507e1c,_0x4ea8e7){_0x507e1c=_0x507e1c-0x0;var _0x76227d=_0xd6d6[_0x507e1c];return _0x76227d;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var moment=require(_0x6d6d('0x2'));var BPromise=require(_0x6d6d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6d6d('0x4'));var db=require(_0x6d6d('0x5'))['db'];var utils=require(_0x6d6d('0x6'));var logger=require(_0x6d6d('0x7'))(_0x6d6d('0x8'));var config=require(_0x6d6d('0x9'));var jayson=require(_0x6d6d('0xa'));var client=jayson['client'][_0x6d6d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1bf731,_0x44f83d,_0x18f824){return new BPromise(function(_0xd49f57,_0x408f88){return client[_0x6d6d('0xc')](_0x1bf731,_0x18f824)['then'](function(_0x51dd38){logger[_0x6d6d('0xd')](_0x6d6d('0xe'),_0x44f83d,_0x6d6d('0xf'));logger[_0x6d6d('0x10')](_0x6d6d('0x11'),_0x44f83d,'request\x20sent',JSON[_0x6d6d('0x12')](_0x51dd38));if(_0x51dd38[_0x6d6d('0x13')]){if(_0x51dd38['error']['code']===0x1f4){logger[_0x6d6d('0x13')](_0x6d6d('0xe'),_0x44f83d,_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);return _0x408f88(_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);}logger[_0x6d6d('0x13')](_0x6d6d('0xe'),_0x44f83d,_0x51dd38['error'][_0x6d6d('0x14')]);return _0xd49f57(_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);}else{logger[_0x6d6d('0xd')](_0x6d6d('0xe'),_0x44f83d,'request\x20sent');_0xd49f57(_0x51dd38[_0x6d6d('0x15')]['message']);}})[_0x6d6d('0x16')](function(_0x2cbc86){logger[_0x6d6d('0x13')]('DeskField,\x20%s,\x20%s',_0x44f83d,_0x2cbc86);_0x408f88(_0x2cbc86);});});}
\ No newline at end of file
index db43124..fba5b47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x012a=['../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','show','getConfigurations','getFields','post','create','/:id/configurations','/:id','delete','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x012a,0x18a));var _0xa012=function(_0x5f0675,_0x46e184){_0x5f0675=_0x5f0675-0x0;var _0x51a313=_0x012a[_0x5f0675];return _0x51a313;};'use strict';var multer=require('multer');var util=require(_0xa012('0x0'));var path=require(_0xa012('0x1'));var timeout=require(_0xa012('0x2'));var express=require(_0xa012('0x3'));var router=express[_0xa012('0x4')]();var auth=require(_0xa012('0x5'));var interaction=require(_0xa012('0x6'));var config=require(_0xa012('0x7'));var controller=require(_0xa012('0x8'));router[_0xa012('0x9')]('/',auth[_0xa012('0xa')](),controller[_0xa012('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xa012('0xc')]);router[_0xa012('0x9')]('/:id/configurations',auth[_0xa012('0xa')](),controller[_0xa012('0xd')]);router[_0xa012('0x9')]('/:id/fields',auth[_0xa012('0xa')](),controller[_0xa012('0xe')]);router[_0xa012('0xf')]('/',auth[_0xa012('0xa')](),controller[_0xa012('0x10')]);router[_0xa012('0xf')](_0xa012('0x11'),auth[_0xa012('0xa')](),controller['addConfiguration']);router['put'](_0xa012('0x12'),auth[_0xa012('0xa')](),controller['update']);router[_0xa012('0x13')](_0xa012('0x12'),auth[_0xa012('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x9ac1=['post','create','addConfiguration','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','/:id','get','/:id/configurations','/:id/fields','getFields'];(function(_0xa94957,_0x44de11){var _0x1b6c46=function(_0x47d1c1){while(--_0x47d1c1){_0xa94957['push'](_0xa94957['shift']());}};_0x1b6c46(++_0x44de11);}(_0x9ac1,0xe3));var _0x19ac=function(_0x48527b,_0x5f0986){_0x48527b=_0x48527b-0x0;var _0x4ed64d=_0x9ac1[_0x48527b];return _0x4ed64d;};'use strict';var multer=require(_0x19ac('0x0'));var util=require(_0x19ac('0x1'));var path=require(_0x19ac('0x2'));var timeout=require(_0x19ac('0x3'));var express=require(_0x19ac('0x4'));var router=express[_0x19ac('0x5')]();var auth=require(_0x19ac('0x6'));var interaction=require(_0x19ac('0x7'));var config=require('../../config/environment');var controller=require('./intFreshdeskAccount.controller');router['get']('/',auth[_0x19ac('0x8')](),controller[_0x19ac('0x9')]);router['get'](_0x19ac('0xa'),auth[_0x19ac('0x8')](),controller['show']);router[_0x19ac('0xb')](_0x19ac('0xc'),auth[_0x19ac('0x8')](),controller['getConfigurations']);router[_0x19ac('0xb')](_0x19ac('0xd'),auth[_0x19ac('0x8')](),controller[_0x19ac('0xe')]);router[_0x19ac('0xf')]('/',auth[_0x19ac('0x8')](),controller[_0x19ac('0x10')]);router[_0x19ac('0xf')](_0x19ac('0xc'),auth[_0x19ac('0x8')](),controller[_0x19ac('0x11')]);router[_0x19ac('0x12')]('/:id',auth[_0x19ac('0x8')](),controller[_0x19ac('0x13')]);router['delete'](_0x19ac('0xa'),auth[_0x19ac('0x8')](),controller[_0x19ac('0x14')]);module[_0x19ac('0x15')]=router;
\ No newline at end of file
index 09aa58c..0ef180c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a86=['exports','STRING'];(function(_0x1034ca,_0x14ecd6){var _0x1a023a=function(_0x2cfa65){while(--_0x2cfa65){_0x1034ca['push'](_0x1034ca['shift']());}};_0x1a023a(++_0x14ecd6);}(_0x0a86,0xf6));var _0x60a8=function(_0x50018f,_0x1430fc){_0x50018f=_0x50018f-0x0;var _0x278cdf=_0x0a86[_0x50018f];return _0x278cdf;};'use strict';var Sequelize=require('sequelize');module[_0x60a8('0x0')]={'name':{'type':Sequelize[_0x60a8('0x1')]},'description':{'type':Sequelize[_0x60a8('0x1')]},'username':{'type':Sequelize[_0x60a8('0x1')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x60a8('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x60a8('0x1')]}};
\ No newline at end of file
+var _0xed39=['exports','STRING','sequelize'];(function(_0x3da675,_0x4b7c68){var _0x42e9ea=function(_0x2b57d1){while(--_0x2b57d1){_0x3da675['push'](_0x3da675['shift']());}};_0x42e9ea(++_0x4b7c68);}(_0xed39,0xa7));var _0x9ed3=function(_0x4cf58d,_0x3862e0){_0x4cf58d=_0x4cf58d-0x0;var _0x45ebfc=_0xed39[_0x4cf58d];return _0x45ebfc;};'use strict';var Sequelize=require(_0x9ed3('0x0'));module[_0x9ed3('0x1')]={'name':{'type':Sequelize[_0x9ed3('0x2')]},'description':{'type':Sequelize[_0x9ed3('0x2')]},'username':{'type':Sequelize[_0x9ed3('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x9ed3('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x9ed3('0x2')]}};
\ No newline at end of file
index 46a7af6..e05ae13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c9=['addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','remoteUri','apiKey','GET','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','description','group','source','ticket_type','company','remove','name','custom_text','label','default','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','Content-Range','apply','update','destroy','stack','send','index','FreshdeskAccount','rawAttributes','model','query','dateEnd','dateStart','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','add','day','merge','map','type','key','VIRTUAL','field','options','count','include','findAll','params','keys','length','create','body','find','getConfigurations','findOne','FreshdeskConfiguration','filter'];(function(_0x1be0d4,_0x89de6f){var _0xd1e879=function(_0x34ab57){while(--_0x34ab57){_0x1be0d4['push'](_0x1be0d4['shift']());}};_0xd1e879(++_0x89de6f);}(_0xc2c9,0x11b));var _0x9c2c=function(_0x227c9b,_0x34d983){_0x227c9b=_0x227c9b-0x0;var _0x37f247=_0xc2c9[_0x227c9b];return _0x37f247;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x9c2c('0x0'));var rimraf=require(_0x9c2c('0x1'));var zipdir=require(_0x9c2c('0x2'));var jsonpatch=require(_0x9c2c('0x3'));var rp=require(_0x9c2c('0x4'));var moment=require(_0x9c2c('0x5'));var BPromise=require(_0x9c2c('0x6'));var Mustache=require(_0x9c2c('0x7'));var util=require(_0x9c2c('0x8'));var path=require(_0x9c2c('0x9'));var sox=require('sox');var csv=require(_0x9c2c('0xa'));var ejs=require(_0x9c2c('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0x9c2c('0xc'));var crypto=require(_0x9c2c('0xd'));var jsforce=require(_0x9c2c('0xe'));var deskjs=require(_0x9c2c('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9c2c('0x10'));var Papa=require(_0x9c2c('0x11'));var Redis=require(_0x9c2c('0x12'));var qs=require(_0x9c2c('0x13'));var logger=require(_0x9c2c('0x14'))(_0x9c2c('0x15'));var utils=require(_0x9c2c('0x16'));var config=require(_0x9c2c('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');var jayson=require('jayson/promise');var client=jayson[_0x9c2c('0x18')][_0x9c2c('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x498403,_0x7847ac,_0x29ce65,_0x5720b8){return new BPromise(function(_0x255e20,_0x3b9ad1){var _0x124590=_0x5720b8||client;return _0x124590['request'](_0x498403,_0x29ce65)[_0x9c2c('0x1a')](function(_0x18026b){logger[_0x9c2c('0x1b')](_0x9c2c('0x1c'),_0x7847ac,_0x9c2c('0x1d'));logger[_0x9c2c('0x1e')](_0x9c2c('0x1f'),_0x7847ac,'request\x20sent',JSON[_0x9c2c('0x20')](_0x18026b));if(_0x18026b[_0x9c2c('0x21')]){if(_0x18026b[_0x9c2c('0x21')][_0x9c2c('0x22')]===0x1f4){logger[_0x9c2c('0x21')](_0x9c2c('0x1c'),_0x7847ac,_0x18026b['error'][_0x9c2c('0x23')]);return _0x3b9ad1(_0x18026b[_0x9c2c('0x21')][_0x9c2c('0x23')]);}logger[_0x9c2c('0x21')](_0x9c2c('0x1c'),_0x7847ac,_0x18026b['error']['message']);return _0x255e20(_0x18026b[_0x9c2c('0x21')]['message']);}else{logger['info'](_0x9c2c('0x1c'),_0x7847ac,_0x9c2c('0x1d'));_0x255e20(_0x18026b[_0x9c2c('0x24')]['message']);}})[_0x9c2c('0x25')](function(_0x2ccd75){logger[_0x9c2c('0x21')](_0x9c2c('0x1c'),_0x7847ac,_0x2ccd75);_0x3b9ad1(_0x2ccd75);});});}function respondWithStatusCode(_0xd37008,_0x377661){_0x377661=_0x377661||0xcc;return function(_0x3ae38c){if(_0x3ae38c){return _0xd37008[_0x9c2c('0x26')](_0x377661);}return _0xd37008[_0x9c2c('0x27')](_0x377661)[_0x9c2c('0x28')]();};}function respondWithResult(_0x80765,_0x57c28e){_0x57c28e=_0x57c28e||0xc8;return function(_0x2af56c){if(_0x2af56c){return _0x80765[_0x9c2c('0x27')](_0x57c28e)[_0x9c2c('0x29')](_0x2af56c);}};}function respondWithFilteredResult(_0x114df6,_0x4c8b4b){return function(_0x16a003){if(_0x16a003){var _0x5e4bd2=_0x16a003['count'],_0x40aec7=_0x4c8b4b['offset'],_0x5d10cb=_0x4c8b4b[_0x9c2c('0x2a')]+_0x4c8b4b[_0x9c2c('0x2b')],_0x5cbfb8;if(_0x5d10cb>=_0x5e4bd2){_0x5d10cb=_0x5e4bd2;_0x5cbfb8=0xc8;}else{_0x5cbfb8=0xce;}_0x114df6[_0x9c2c('0x27')](_0x5cbfb8);return _0x114df6['set'](_0x9c2c('0x2c'),_0x40aec7+'-'+_0x5d10cb+'/'+_0x5e4bd2)[_0x9c2c('0x29')](_0x16a003);}return null;};}function patchUpdates(_0x2a64c4){return function(_0xe501c6){try{jsonpatch[_0x9c2c('0x2d')](_0xe501c6,_0x2a64c4,!![]);}catch(_0x4c7f00){return BPromise['reject'](_0x4c7f00);}return _0xe501c6['save']();};}function saveUpdates(_0x4f6e4e,_0x428dcf){return function(_0xfe9179){if(_0xfe9179){return _0xfe9179[_0x9c2c('0x2e')](_0x4f6e4e)[_0x9c2c('0x1a')](function(_0x3d6ce7){return _0x3d6ce7;});}return null;};}function removeEntity(_0x1cdf79,_0x33d628){return function(_0x28e01d){if(_0x28e01d){return _0x28e01d[_0x9c2c('0x2f')]()[_0x9c2c('0x1a')](function(){_0x1cdf79[_0x9c2c('0x27')](0xcc)[_0x9c2c('0x28')]();});}};}function handleEntityNotFound(_0x351612,_0x461cc9){return function(_0x36624a){if(!_0x36624a){_0x351612[_0x9c2c('0x26')](0x194);}return _0x36624a;};}function handleError(_0x35ae20,_0x2657c2){_0x2657c2=_0x2657c2||0x1f4;return function(_0x581e1c){logger[_0x9c2c('0x21')](_0x581e1c[_0x9c2c('0x30')]);if(_0x581e1c['name']){delete _0x581e1c['name'];}_0x35ae20[_0x9c2c('0x27')](_0x2657c2)[_0x9c2c('0x31')](_0x581e1c);};}exports[_0x9c2c('0x32')]=function(_0x56bb91,_0x5d6ad8){var _0x464c96={},_0x10c44b={},_0x2d534e={'count':0x0,'rows':[]};var _0x5242e0=db[_0x9c2c('0x33')][_0x9c2c('0x34')];_0x10c44b[_0x9c2c('0x35')]=_['keys'](_0x5242e0);var _0xe7a336={'dateStart':_0x56bb91['query']['dateStart'],'dateEnd':_0x56bb91[_0x9c2c('0x36')][_0x9c2c('0x37')]};delete _0x56bb91[_0x9c2c('0x36')][_0x9c2c('0x38')];delete _0x56bb91[_0x9c2c('0x36')]['dateEnd'];_0x10c44b[_0x9c2c('0x36')]=_['keys'](_0x56bb91[_0x9c2c('0x36')]);_0x10c44b['filters']=_[_0x9c2c('0x39')](_0x10c44b[_0x9c2c('0x35')],_0x10c44b[_0x9c2c('0x36')]);_0x464c96[_0x9c2c('0x3a')]=_[_0x9c2c('0x39')](_0x10c44b[_0x9c2c('0x35')],qs[_0x9c2c('0x3b')](_0x56bb91[_0x9c2c('0x36')][_0x9c2c('0x3b')]));_0x464c96[_0x9c2c('0x3a')]=_0x464c96[_0x9c2c('0x3a')]['length']?_0x464c96[_0x9c2c('0x3a')]:_0x10c44b[_0x9c2c('0x35')];if(!_0x56bb91[_0x9c2c('0x36')][_0x9c2c('0x3c')](_0x9c2c('0x3d'))){_0x464c96['limit']=qs['limit'](_0x56bb91['query'][_0x9c2c('0x2b')]);_0x464c96[_0x9c2c('0x2a')]=qs['offset'](_0x56bb91[_0x9c2c('0x36')][_0x9c2c('0x2a')]);}_0x464c96[_0x9c2c('0x3e')]=qs[_0x9c2c('0x3f')](_0x56bb91['query'][_0x9c2c('0x3f')]);_0x464c96[_0x9c2c('0x40')]=qs['filters'](_[_0x9c2c('0x41')](_0x56bb91['query'],_0x10c44b[_0x9c2c('0x42')]));if(_0xe7a336[_0x9c2c('0x38')]){if(_0xe7a336[_0x9c2c('0x37')]){_0xe7a336['dateEnd']=moment(_0xe7a336[_0x9c2c('0x37')])[_0x9c2c('0x43')](0x1,_0x9c2c('0x44'));}else{_0xe7a336['dateEnd']=moment(_0xe7a336[_0x9c2c('0x38')])['add'](0x1,_0x9c2c('0x44'));}_[_0x9c2c('0x45')](_0x464c96[_0x9c2c('0x40')],{'createdAt':{'$gte':_0xe7a336[_0x9c2c('0x38')],'$lte':_0xe7a336[_0x9c2c('0x37')]}});}if(_0x56bb91[_0x9c2c('0x36')]['filter']){_0x464c96[_0x9c2c('0x40')]=_[_0x9c2c('0x45')](_0x464c96[_0x9c2c('0x40')],{'$or':_[_0x9c2c('0x46')](_0x5242e0,function(_0x5da40f){if(_0x5da40f[_0x9c2c('0x47')][_0x9c2c('0x48')]!==_0x9c2c('0x49')){var _0x3b8c1b={};_0x3b8c1b[_0x5da40f[_0x9c2c('0x4a')]]={'$like':'%'+_0x56bb91[_0x9c2c('0x36')]['filter']+'%'};return _0x3b8c1b;}})});}_0x464c96=_[_0x9c2c('0x45')]({},_0x464c96,_0x56bb91[_0x9c2c('0x4b')]);var _0x48af2c={'where':_0x464c96[_0x9c2c('0x40')]};return db[_0x9c2c('0x33')][_0x9c2c('0x4c')](_0x48af2c)['then'](function(_0xe727ea){_0x2d534e[_0x9c2c('0x4c')]=_0xe727ea;if(_0x56bb91[_0x9c2c('0x36')]['includeAll']){_0x464c96[_0x9c2c('0x4d')]=[{'all':!![]}];}return db[_0x9c2c('0x33')][_0x9c2c('0x4e')](_0x464c96);})['then'](function(_0x382444){_0x2d534e['rows']=_0x382444;return _0x2d534e;})[_0x9c2c('0x1a')](respondWithFilteredResult(_0x5d6ad8,_0x464c96))[_0x9c2c('0x25')](handleError(_0x5d6ad8,null));};exports['show']=function(_0x3b0072,_0x1ef937){var _0x13f2a3={'raw':![],'where':{'id':_0x3b0072[_0x9c2c('0x4f')]['id']}},_0x8fc2f5={};_0x8fc2f5[_0x9c2c('0x35')]=_['keys'](db[_0x9c2c('0x33')][_0x9c2c('0x34')]);_0x8fc2f5[_0x9c2c('0x36')]=_[_0x9c2c('0x50')](_0x3b0072['query']);_0x8fc2f5['filters']=_[_0x9c2c('0x39')](_0x8fc2f5[_0x9c2c('0x35')],_0x8fc2f5['query']);_0x13f2a3[_0x9c2c('0x3a')]=_[_0x9c2c('0x39')](_0x8fc2f5[_0x9c2c('0x35')],qs[_0x9c2c('0x3b')](_0x3b0072[_0x9c2c('0x36')]['fields']));_0x13f2a3[_0x9c2c('0x3a')]=_0x13f2a3[_0x9c2c('0x3a')][_0x9c2c('0x51')]?_0x13f2a3[_0x9c2c('0x3a')]:_0x8fc2f5['model'];if(_0x3b0072[_0x9c2c('0x36')]['includeAll']){_0x13f2a3[_0x9c2c('0x4d')]=[{'all':!![]}];}_0x13f2a3=_[_0x9c2c('0x45')]({},_0x13f2a3,_0x3b0072['options']);return db[_0x9c2c('0x33')]['find'](_0x13f2a3)[_0x9c2c('0x1a')](handleEntityNotFound(_0x1ef937,null))[_0x9c2c('0x1a')](respondWithResult(_0x1ef937,null))[_0x9c2c('0x25')](handleError(_0x1ef937,null));};exports[_0x9c2c('0x52')]=function(_0x145604,_0x4c3ccc){return db['FreshdeskAccount']['create'](_0x145604[_0x9c2c('0x53')],{})[_0x9c2c('0x1a')](respondWithResult(_0x4c3ccc,0xc9))[_0x9c2c('0x25')](handleError(_0x4c3ccc,null));};exports['update']=function(_0x48418a,_0x2cda6f){if(_0x48418a[_0x9c2c('0x53')]['id']){delete _0x48418a[_0x9c2c('0x53')]['id'];}return db['FreshdeskAccount'][_0x9c2c('0x54')]({'where':{'id':_0x48418a[_0x9c2c('0x4f')]['id']}})[_0x9c2c('0x1a')](handleEntityNotFound(_0x2cda6f,null))[_0x9c2c('0x1a')](saveUpdates(_0x48418a[_0x9c2c('0x53')],null))[_0x9c2c('0x1a')](respondWithResult(_0x2cda6f,null))['catch'](handleError(_0x2cda6f,null));};exports['destroy']=function(_0x404493,_0x4ff6af){return db[_0x9c2c('0x33')][_0x9c2c('0x54')]({'where':{'id':_0x404493['params']['id']}})[_0x9c2c('0x1a')](handleEntityNotFound(_0x4ff6af,null))[_0x9c2c('0x1a')](removeEntity(_0x4ff6af,null))[_0x9c2c('0x25')](handleError(_0x4ff6af,null));};exports[_0x9c2c('0x55')]=function(_0x3bad49,_0x55ccfb,_0x1a1843){var _0x275f66={};var _0x59624f={};var _0x249fca;var _0x27e7a7;return db[_0x9c2c('0x33')][_0x9c2c('0x56')]({'where':{'id':_0x3bad49[_0x9c2c('0x4f')]['id']}})['then'](handleEntityNotFound(_0x55ccfb,null))[_0x9c2c('0x1a')](function(_0x4ad643){if(_0x4ad643){_0x249fca=_0x4ad643;_0x59624f[_0x9c2c('0x35')]=_['keys'](db[_0x9c2c('0x57')][_0x9c2c('0x34')]);_0x59624f[_0x9c2c('0x36')]=_[_0x9c2c('0x50')](_0x3bad49['query']);_0x59624f[_0x9c2c('0x42')]=_[_0x9c2c('0x39')](_0x59624f[_0x9c2c('0x35')],_0x59624f[_0x9c2c('0x36')]);_0x275f66['attributes']=_[_0x9c2c('0x39')](_0x59624f['model'],qs[_0x9c2c('0x3b')](_0x3bad49[_0x9c2c('0x36')][_0x9c2c('0x3b')]));_0x275f66[_0x9c2c('0x3a')]=_0x275f66['attributes'][_0x9c2c('0x51')]?_0x275f66['attributes']:_0x59624f[_0x9c2c('0x35')];_0x275f66['order']=qs[_0x9c2c('0x3f')](_0x3bad49['query'][_0x9c2c('0x3f')]);_0x275f66[_0x9c2c('0x40')]=qs['filters'](_[_0x9c2c('0x41')](_0x3bad49[_0x9c2c('0x36')],_0x59624f[_0x9c2c('0x42')]));if(_0x3bad49[_0x9c2c('0x36')][_0x9c2c('0x58')]){_0x275f66[_0x9c2c('0x40')]=_[_0x9c2c('0x45')](_0x275f66[_0x9c2c('0x40')],{'$or':_[_0x9c2c('0x46')](_0x275f66[_0x9c2c('0x3a')],function(_0x186959){var _0x21d327={};_0x21d327[_0x186959]={'$like':'%'+_0x3bad49[_0x9c2c('0x36')]['filter']+'%'};return _0x21d327;})});}_0x275f66=_[_0x9c2c('0x45')]({},_0x275f66,_0x3bad49[_0x9c2c('0x4b')]);return _0x249fca[_0x9c2c('0x55')](_0x275f66);}})[_0x9c2c('0x1a')](function(_0x1b05ac){if(_0x1b05ac){_0x27e7a7=_0x1b05ac[_0x9c2c('0x51')];if(!_0x3bad49['query'][_0x9c2c('0x3c')](_0x9c2c('0x3d'))){_0x275f66[_0x9c2c('0x2b')]=qs[_0x9c2c('0x2b')](_0x3bad49['query'][_0x9c2c('0x2b')]);_0x275f66[_0x9c2c('0x2a')]=qs[_0x9c2c('0x2a')](_0x3bad49[_0x9c2c('0x36')][_0x9c2c('0x2a')]);}return _0x249fca[_0x9c2c('0x55')](_0x275f66);}})[_0x9c2c('0x1a')](function(_0x10b1d4){if(_0x10b1d4){return _0x10b1d4?{'count':_0x27e7a7,'rows':_0x10b1d4}:null;}})[_0x9c2c('0x1a')](respondWithResult(_0x55ccfb,null))[_0x9c2c('0x25')](handleError(_0x55ccfb,null));};exports[_0x9c2c('0x59')]=function(_0x305400,_0x4479a2,_0x148394){if(_0x305400['body']['id']){delete _0x305400[_0x9c2c('0x53')]['id'];}return db[_0x9c2c('0x33')][_0x9c2c('0x56')]({'where':{'id':_0x305400[_0x9c2c('0x4f')]['id']}})[_0x9c2c('0x1a')](handleEntityNotFound(_0x4479a2,null))[_0x9c2c('0x1a')](function(_0x4e53fd){if(_0x4e53fd){_0x305400[_0x9c2c('0x53')][_0x9c2c('0x5a')]=_0x4e53fd['id'];_0x305400[_0x9c2c('0x53')][_0x9c2c('0x5b')]=integrations[_0x9c2c('0x5c')](_0x305400['body'][_0x9c2c('0x5d')],_0x305400[_0x9c2c('0x53')][_0x9c2c('0x47')]);_0x305400['body'][_0x9c2c('0x5e')]=integrations[_0x9c2c('0x5f')](_0x305400[_0x9c2c('0x53')][_0x9c2c('0x5d')],_0x305400['body'][_0x9c2c('0x47')]);return db['FreshdeskConfiguration'][_0x9c2c('0x52')](_0x305400[_0x9c2c('0x53')],{'include':[{'model':db['FreshdeskField'],'as':_0x9c2c('0x5b')},{'model':db['FreshdeskField'],'as':_0x9c2c('0x5e')}]});}return null;})['then'](respondWithResult(_0x4479a2,null))[_0x9c2c('0x25')](handleError(_0x4479a2,null));};exports['getFields']=function(_0x5e9bba,_0x14e3ee,_0x4e4a0f){return db[_0x9c2c('0x33')][_0x9c2c('0x56')]({'where':{'id':_0x5e9bba[_0x9c2c('0x4f')]['id']},'attributes':['id',_0x9c2c('0x60'),_0x9c2c('0x61')]})[_0x9c2c('0x1a')](handleEntityNotFound(_0x14e3ee,null))[_0x9c2c('0x1a')](function(_0x1c86c2){if(_0x1c86c2){return rp({'method':_0x9c2c('0x62'),'uri':util[_0x9c2c('0x63')]('%s%s',_0x1c86c2[_0x9c2c('0x60')],_0x9c2c('0x64')),'headers':{'Authorization':util[_0x9c2c('0x63')](_0x9c2c('0x65'),new Buffer(util[_0x9c2c('0x63')](_0x9c2c('0x66'),_0x1c86c2['apiKey']))[_0x9c2c('0x67')](_0x9c2c('0x68')))},'json':!![]});}})[_0x9c2c('0x1a')](function(_0x143491){if(_0x143491){var _0xfbe6dd=[_0x9c2c('0x69'),_0x9c2c('0x6a'),_0x9c2c('0x6b'),_0x9c2c('0x6c'),_0x9c2c('0x27'),'priority',_0x9c2c('0x6d'),_0x9c2c('0x6e'),_0x9c2c('0x6f'),_0x9c2c('0x6d'),_0x9c2c('0x70')];_[_0x9c2c('0x71')](_0x143491,function(_0x322e75){return _0xfbe6dd['includes'](_0x322e75[_0x9c2c('0x72')])||!_0x322e75['default']&&_0x322e75[_0x9c2c('0x47')]!==_0x9c2c('0x73');});return{'count':_0x143491['length'],'rows':_[_0x9c2c('0x46')](_0x143491,function(_0x30772a){return{'id':_0x30772a['name'],'name':_0x30772a[_0x9c2c('0x74')],'custom':!_0x30772a[_0x9c2c('0x75')],'options':_0x30772a[_0x9c2c('0x76')]?_[_0x9c2c('0x46')](_0x30772a[_0x9c2c('0x76')],function(_0x534fd3){return{'name':_[_0x9c2c('0x77')](_0x534fd3),'value':_0x534fd3};}):[]};})};}})[_0x9c2c('0x1a')](respondWithResult(_0x14e3ee,null))[_0x9c2c('0x25')](function(_0x5641a7){var _0x110a65=_0x5e9bba[_0x9c2c('0x36')][_0x9c2c('0x78')]?0x1f4:_0x5641a7[_0x9c2c('0x79')]||0x1f4;logger[_0x9c2c('0x21')](_0x9c2c('0x7a'),_0x9c2c('0x7b'),_0x110a65,JSON[_0x9c2c('0x20')](_0x5641a7));delete _0x5641a7[_0x9c2c('0x72')];if(_0x110a65===0x191){_0x110a65=0x190;}_0x14e3ee['status'](_0x110a65)[_0x9c2c('0x31')](_0x5e9bba[_0x9c2c('0x36')][_0x9c2c('0x78')]?{'message':'Wrong\x20credentials','statusCode':_0x5641a7['statusCode']}:_0x5641a7);});};
\ No newline at end of file
+var _0x9d57=['lodash','squel','jsforce','desk.js','querystring','ioredis','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','count','limit','set','Content-Range','json','apply','reject','update','sendStatus','name','send','keys','query','dateStart','dateEnd','filters','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','offset','order','sort','where','pick','day','add','filter','map','type','key','VIRTUAL','field','merge','includeAll','include','FreshdeskAccount','findAll','rows','rawAttributes','options','create','body','find','params','destroy','FreshdeskConfiguration','getConfigurations','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','findOne','remoteUri','apiKey','GET','format','%s%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','requester','agent','source','group','company','includes','default','custom_text','label','choices','capitalize','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv'];(function(_0x2f6690,_0x49aa34){var _0x534194=function(_0xddc45e){while(--_0xddc45e){_0x2f6690['push'](_0x2f6690['shift']());}};_0x534194(++_0x49aa34);}(_0x9d57,0x1cb));var _0x79d5=function(_0xb8d37f,_0xf510ab){_0xb8d37f=_0xb8d37f-0x0;var _0x5b6e68=_0x9d57[_0xb8d37f];return _0x5b6e68;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x79d5('0x0'));var zipdir=require(_0x79d5('0x1'));var jsonpatch=require(_0x79d5('0x2'));var rp=require(_0x79d5('0x3'));var moment=require(_0x79d5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x79d5('0x5'));var path=require(_0x79d5('0x6'));var sox=require(_0x79d5('0x7'));var csv=require(_0x79d5('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x79d5('0x9'));var squel=require(_0x79d5('0xa'));var crypto=require('crypto');var jsforce=require(_0x79d5('0xb'));var deskjs=require(_0x79d5('0xc'));var toCsv=require(_0x79d5('0x8'));var querystring=require(_0x79d5('0xd'));var Papa=require('papaparse');var Redis=require(_0x79d5('0xe'));var qs=require('../../components/parsers/qs');var logger=require(_0x79d5('0xf'))(_0x79d5('0x10'));var utils=require(_0x79d5('0x11'));var config=require('../../config/environment');var db=require(_0x79d5('0x12'))['db'];var integrations=require(_0x79d5('0x13'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5b19b6,_0x5c10a0,_0x34b167,_0xa84dde){return new BPromise(function(_0x1bbfc5,_0x236a12){var _0x39d163=_0xa84dde||client;return _0x39d163['request'](_0x5b19b6,_0x34b167)[_0x79d5('0x14')](function(_0x16db99){logger[_0x79d5('0x15')](_0x79d5('0x16'),_0x5c10a0,_0x79d5('0x17'));logger[_0x79d5('0x18')](_0x79d5('0x19'),_0x5c10a0,_0x79d5('0x17'),JSON[_0x79d5('0x1a')](_0x16db99));if(_0x16db99[_0x79d5('0x1b')]){if(_0x16db99[_0x79d5('0x1b')][_0x79d5('0x1c')]===0x1f4){logger[_0x79d5('0x1b')](_0x79d5('0x16'),_0x5c10a0,_0x16db99[_0x79d5('0x1b')][_0x79d5('0x1d')]);return _0x236a12(_0x16db99['error']['message']);}logger['error'](_0x79d5('0x16'),_0x5c10a0,_0x16db99['error'][_0x79d5('0x1d')]);return _0x1bbfc5(_0x16db99['error'][_0x79d5('0x1d')]);}else{logger['info'](_0x79d5('0x16'),_0x5c10a0,_0x79d5('0x17'));_0x1bbfc5(_0x16db99[_0x79d5('0x1e')][_0x79d5('0x1d')]);}})[_0x79d5('0x1f')](function(_0x200744){logger[_0x79d5('0x1b')](_0x79d5('0x16'),_0x5c10a0,_0x200744);_0x236a12(_0x200744);});});}function respondWithStatusCode(_0x23752b,_0x2f9e8d){_0x2f9e8d=_0x2f9e8d||0xcc;return function(_0x561cf7){if(_0x561cf7){return _0x23752b['sendStatus'](_0x2f9e8d);}return _0x23752b[_0x79d5('0x20')](_0x2f9e8d)['end']();};}function respondWithResult(_0x230492,_0xcdb7b0){_0xcdb7b0=_0xcdb7b0||0xc8;return function(_0x260851){if(_0x260851){return _0x230492[_0x79d5('0x20')](_0xcdb7b0)['json'](_0x260851);}};}function respondWithFilteredResult(_0x273284,_0x5d0ef5){return function(_0x146551){if(_0x146551){var _0x4430a2=_0x146551[_0x79d5('0x21')],_0x6cfe9b=_0x5d0ef5['offset'],_0x56d078=_0x5d0ef5['offset']+_0x5d0ef5[_0x79d5('0x22')],_0x65b7c0;if(_0x56d078>=_0x4430a2){_0x56d078=_0x4430a2;_0x65b7c0=0xc8;}else{_0x65b7c0=0xce;}_0x273284[_0x79d5('0x20')](_0x65b7c0);return _0x273284[_0x79d5('0x23')](_0x79d5('0x24'),_0x6cfe9b+'-'+_0x56d078+'/'+_0x4430a2)[_0x79d5('0x25')](_0x146551);}return null;};}function patchUpdates(_0x2949fa){return function(_0x2e37df){try{jsonpatch[_0x79d5('0x26')](_0x2e37df,_0x2949fa,!![]);}catch(_0x2f3ca1){return BPromise[_0x79d5('0x27')](_0x2f3ca1);}return _0x2e37df['save']();};}function saveUpdates(_0x253fce,_0x578014){return function(_0x4cfc41){if(_0x4cfc41){return _0x4cfc41[_0x79d5('0x28')](_0x253fce)[_0x79d5('0x14')](function(_0x2a65e2){return _0x2a65e2;});}return null;};}function removeEntity(_0x3f6833,_0x1ba66e){return function(_0x8f1482){if(_0x8f1482){return _0x8f1482['destroy']()[_0x79d5('0x14')](function(){_0x3f6833[_0x79d5('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22805f,_0x983028){return function(_0x13472d){if(!_0x13472d){_0x22805f[_0x79d5('0x29')](0x194);}return _0x13472d;};}function handleError(_0x2df020,_0x263929){_0x263929=_0x263929||0x1f4;return function(_0x2749ea){logger['error'](_0x2749ea['stack']);if(_0x2749ea[_0x79d5('0x2a')]){delete _0x2749ea[_0x79d5('0x2a')];}_0x2df020[_0x79d5('0x20')](_0x263929)[_0x79d5('0x2b')](_0x2749ea);};}exports['index']=function(_0x2ad948,_0x48b384){var _0x4154e5={},_0x58d9b={},_0x4e97f9={'count':0x0,'rows':[]};var _0x124f2a=db['FreshdeskAccount']['rawAttributes'];_0x58d9b['model']=_[_0x79d5('0x2c')](_0x124f2a);var _0x7a7332={'dateStart':_0x2ad948[_0x79d5('0x2d')][_0x79d5('0x2e')],'dateEnd':_0x2ad948['query'][_0x79d5('0x2f')]};delete _0x2ad948[_0x79d5('0x2d')][_0x79d5('0x2e')];delete _0x2ad948[_0x79d5('0x2d')]['dateEnd'];_0x58d9b[_0x79d5('0x2d')]=_[_0x79d5('0x2c')](_0x2ad948[_0x79d5('0x2d')]);_0x58d9b[_0x79d5('0x30')]=_[_0x79d5('0x31')](_0x58d9b[_0x79d5('0x32')],_0x58d9b['query']);_0x4154e5['attributes']=_['intersection'](_0x58d9b[_0x79d5('0x32')],qs[_0x79d5('0x33')](_0x2ad948[_0x79d5('0x2d')][_0x79d5('0x33')]));_0x4154e5['attributes']=_0x4154e5['attributes'][_0x79d5('0x34')]?_0x4154e5[_0x79d5('0x35')]:_0x58d9b[_0x79d5('0x32')];if(!_0x2ad948[_0x79d5('0x2d')][_0x79d5('0x36')](_0x79d5('0x37'))){_0x4154e5[_0x79d5('0x22')]=qs[_0x79d5('0x22')](_0x2ad948['query'][_0x79d5('0x22')]);_0x4154e5[_0x79d5('0x38')]=qs[_0x79d5('0x38')](_0x2ad948[_0x79d5('0x2d')]['offset']);}_0x4154e5[_0x79d5('0x39')]=qs['sort'](_0x2ad948['query'][_0x79d5('0x3a')]);_0x4154e5[_0x79d5('0x3b')]=qs[_0x79d5('0x30')](_[_0x79d5('0x3c')](_0x2ad948[_0x79d5('0x2d')],_0x58d9b[_0x79d5('0x30')]));if(_0x7a7332[_0x79d5('0x2e')]){if(_0x7a7332[_0x79d5('0x2f')]){_0x7a7332[_0x79d5('0x2f')]=moment(_0x7a7332['dateEnd'])['add'](0x1,_0x79d5('0x3d'));}else{_0x7a7332[_0x79d5('0x2f')]=moment(_0x7a7332[_0x79d5('0x2e')])[_0x79d5('0x3e')](0x1,_0x79d5('0x3d'));}_['merge'](_0x4154e5[_0x79d5('0x3b')],{'createdAt':{'$gte':_0x7a7332[_0x79d5('0x2e')],'$lte':_0x7a7332['dateEnd']}});}if(_0x2ad948[_0x79d5('0x2d')][_0x79d5('0x3f')]){_0x4154e5[_0x79d5('0x3b')]=_['merge'](_0x4154e5[_0x79d5('0x3b')],{'$or':_[_0x79d5('0x40')](_0x124f2a,function(_0xfdb320){if(_0xfdb320[_0x79d5('0x41')][_0x79d5('0x42')]!==_0x79d5('0x43')){var _0x54b96a={};_0x54b96a[_0xfdb320[_0x79d5('0x44')]]={'$like':'%'+_0x2ad948['query'][_0x79d5('0x3f')]+'%'};return _0x54b96a;}})});}_0x4154e5=_[_0x79d5('0x45')]({},_0x4154e5,_0x2ad948['options']);var _0x4326c5={'where':_0x4154e5[_0x79d5('0x3b')]};return db['FreshdeskAccount'][_0x79d5('0x21')](_0x4326c5)[_0x79d5('0x14')](function(_0x7a5c46){_0x4e97f9[_0x79d5('0x21')]=_0x7a5c46;if(_0x2ad948[_0x79d5('0x2d')][_0x79d5('0x46')]){_0x4154e5[_0x79d5('0x47')]=[{'all':!![]}];}return db[_0x79d5('0x48')][_0x79d5('0x49')](_0x4154e5);})['then'](function(_0x52cde7){_0x4e97f9[_0x79d5('0x4a')]=_0x52cde7;return _0x4e97f9;})[_0x79d5('0x14')](respondWithFilteredResult(_0x48b384,_0x4154e5))['catch'](handleError(_0x48b384,null));};exports['show']=function(_0x319d28,_0xf01fce){var _0xd4511a={'raw':![],'where':{'id':_0x319d28['params']['id']}},_0x409090={};_0x409090[_0x79d5('0x32')]=_[_0x79d5('0x2c')](db[_0x79d5('0x48')][_0x79d5('0x4b')]);_0x409090[_0x79d5('0x2d')]=_[_0x79d5('0x2c')](_0x319d28[_0x79d5('0x2d')]);_0x409090['filters']=_[_0x79d5('0x31')](_0x409090['model'],_0x409090[_0x79d5('0x2d')]);_0xd4511a[_0x79d5('0x35')]=_[_0x79d5('0x31')](_0x409090[_0x79d5('0x32')],qs[_0x79d5('0x33')](_0x319d28[_0x79d5('0x2d')][_0x79d5('0x33')]));_0xd4511a[_0x79d5('0x35')]=_0xd4511a[_0x79d5('0x35')][_0x79d5('0x34')]?_0xd4511a[_0x79d5('0x35')]:_0x409090[_0x79d5('0x32')];if(_0x319d28[_0x79d5('0x2d')][_0x79d5('0x46')]){_0xd4511a[_0x79d5('0x47')]=[{'all':!![]}];}_0xd4511a=_[_0x79d5('0x45')]({},_0xd4511a,_0x319d28[_0x79d5('0x4c')]);return db['FreshdeskAccount']['find'](_0xd4511a)[_0x79d5('0x14')](handleEntityNotFound(_0xf01fce,null))[_0x79d5('0x14')](respondWithResult(_0xf01fce,null))[_0x79d5('0x1f')](handleError(_0xf01fce,null));};exports['create']=function(_0x53ee93,_0x3c305e){return db[_0x79d5('0x48')][_0x79d5('0x4d')](_0x53ee93[_0x79d5('0x4e')],{})[_0x79d5('0x14')](respondWithResult(_0x3c305e,0xc9))[_0x79d5('0x1f')](handleError(_0x3c305e,null));};exports['update']=function(_0x5f0f71,_0x997245){if(_0x5f0f71['body']['id']){delete _0x5f0f71[_0x79d5('0x4e')]['id'];}return db[_0x79d5('0x48')][_0x79d5('0x4f')]({'where':{'id':_0x5f0f71[_0x79d5('0x50')]['id']}})[_0x79d5('0x14')](handleEntityNotFound(_0x997245,null))[_0x79d5('0x14')](saveUpdates(_0x5f0f71[_0x79d5('0x4e')],null))[_0x79d5('0x14')](respondWithResult(_0x997245,null))[_0x79d5('0x1f')](handleError(_0x997245,null));};exports[_0x79d5('0x51')]=function(_0xd9bf6d,_0x418ad4){return db[_0x79d5('0x48')][_0x79d5('0x4f')]({'where':{'id':_0xd9bf6d[_0x79d5('0x50')]['id']}})[_0x79d5('0x14')](handleEntityNotFound(_0x418ad4,null))[_0x79d5('0x14')](removeEntity(_0x418ad4,null))['catch'](handleError(_0x418ad4,null));};exports['getConfigurations']=function(_0x2783bd,_0x21d867,_0xf9b557){var _0x29b15e={};var _0x3732d5={};var _0x5bb9cc;var _0x2d0c7b;return db[_0x79d5('0x48')]['findOne']({'where':{'id':_0x2783bd[_0x79d5('0x50')]['id']}})[_0x79d5('0x14')](handleEntityNotFound(_0x21d867,null))[_0x79d5('0x14')](function(_0x29e241){if(_0x29e241){_0x5bb9cc=_0x29e241;_0x3732d5[_0x79d5('0x32')]=_[_0x79d5('0x2c')](db[_0x79d5('0x52')][_0x79d5('0x4b')]);_0x3732d5['query']=_[_0x79d5('0x2c')](_0x2783bd[_0x79d5('0x2d')]);_0x3732d5[_0x79d5('0x30')]=_[_0x79d5('0x31')](_0x3732d5[_0x79d5('0x32')],_0x3732d5['query']);_0x29b15e['attributes']=_['intersection'](_0x3732d5[_0x79d5('0x32')],qs[_0x79d5('0x33')](_0x2783bd[_0x79d5('0x2d')]['fields']));_0x29b15e[_0x79d5('0x35')]=_0x29b15e['attributes']['length']?_0x29b15e[_0x79d5('0x35')]:_0x3732d5[_0x79d5('0x32')];_0x29b15e[_0x79d5('0x39')]=qs[_0x79d5('0x3a')](_0x2783bd[_0x79d5('0x2d')][_0x79d5('0x3a')]);_0x29b15e[_0x79d5('0x3b')]=qs['filters'](_[_0x79d5('0x3c')](_0x2783bd[_0x79d5('0x2d')],_0x3732d5[_0x79d5('0x30')]));if(_0x2783bd[_0x79d5('0x2d')]['filter']){_0x29b15e[_0x79d5('0x3b')]=_[_0x79d5('0x45')](_0x29b15e[_0x79d5('0x3b')],{'$or':_[_0x79d5('0x40')](_0x29b15e[_0x79d5('0x35')],function(_0x276ca7){var _0x8e1f31={};_0x8e1f31[_0x276ca7]={'$like':'%'+_0x2783bd[_0x79d5('0x2d')]['filter']+'%'};return _0x8e1f31;})});}_0x29b15e=_[_0x79d5('0x45')]({},_0x29b15e,_0x2783bd[_0x79d5('0x4c')]);return _0x5bb9cc[_0x79d5('0x53')](_0x29b15e);}})[_0x79d5('0x14')](function(_0x482e29){if(_0x482e29){_0x2d0c7b=_0x482e29[_0x79d5('0x34')];if(!_0x2783bd[_0x79d5('0x2d')]['hasOwnProperty']('nolimit')){_0x29b15e['limit']=qs['limit'](_0x2783bd['query'][_0x79d5('0x22')]);_0x29b15e[_0x79d5('0x38')]=qs[_0x79d5('0x38')](_0x2783bd['query'][_0x79d5('0x38')]);}return _0x5bb9cc['getConfigurations'](_0x29b15e);}})[_0x79d5('0x14')](function(_0x127ab5){if(_0x127ab5){return _0x127ab5?{'count':_0x2d0c7b,'rows':_0x127ab5}:null;}})[_0x79d5('0x14')](respondWithResult(_0x21d867,null))[_0x79d5('0x1f')](handleError(_0x21d867,null));};exports['addConfiguration']=function(_0x2131ca,_0x5256ca,_0x4ae3e3){if(_0x2131ca[_0x79d5('0x4e')]['id']){delete _0x2131ca[_0x79d5('0x4e')]['id'];}return db[_0x79d5('0x48')]['findOne']({'where':{'id':_0x2131ca[_0x79d5('0x50')]['id']}})[_0x79d5('0x14')](handleEntityNotFound(_0x5256ca,null))[_0x79d5('0x14')](function(_0x3ac67b){if(_0x3ac67b){_0x2131ca['body'][_0x79d5('0x54')]=_0x3ac67b['id'];_0x2131ca[_0x79d5('0x4e')][_0x79d5('0x55')]=integrations[_0x79d5('0x56')](_0x2131ca[_0x79d5('0x4e')][_0x79d5('0x57')],_0x2131ca[_0x79d5('0x4e')][_0x79d5('0x41')]);_0x2131ca['body'][_0x79d5('0x58')]=integrations[_0x79d5('0x59')](_0x2131ca[_0x79d5('0x4e')][_0x79d5('0x57')],_0x2131ca[_0x79d5('0x4e')][_0x79d5('0x41')]);return db['FreshdeskConfiguration'][_0x79d5('0x4d')](_0x2131ca[_0x79d5('0x4e')],{'include':[{'model':db[_0x79d5('0x5a')],'as':_0x79d5('0x55')},{'model':db[_0x79d5('0x5a')],'as':'Descriptions'}]});}return null;})[_0x79d5('0x14')](respondWithResult(_0x5256ca,null))[_0x79d5('0x1f')](handleError(_0x5256ca,null));};exports[_0x79d5('0x5b')]=function(_0xa287e2,_0x4fe8fb,_0x1e31dd){return db[_0x79d5('0x48')][_0x79d5('0x5c')]({'where':{'id':_0xa287e2[_0x79d5('0x50')]['id']},'attributes':['id',_0x79d5('0x5d'),_0x79d5('0x5e')]})[_0x79d5('0x14')](handleEntityNotFound(_0x4fe8fb,null))['then'](function(_0x587a78){if(_0x587a78){return rp({'method':_0x79d5('0x5f'),'uri':util[_0x79d5('0x60')](_0x79d5('0x61'),_0x587a78[_0x79d5('0x5d')],_0x79d5('0x62')),'headers':{'Authorization':util[_0x79d5('0x60')](_0x79d5('0x63'),new Buffer(util[_0x79d5('0x60')](_0x79d5('0x64'),_0x587a78[_0x79d5('0x5e')]))[_0x79d5('0x65')]('base64'))},'json':!![]});}})[_0x79d5('0x14')](function(_0x41ce3d){if(_0x41ce3d){var _0x2e64c5=[_0x79d5('0x66'),'subject',_0x79d5('0x67'),'description',_0x79d5('0x20'),'priority','group',_0x79d5('0x68'),'ticket_type',_0x79d5('0x69'),_0x79d5('0x6a')];_['remove'](_0x41ce3d,function(_0x2f89b4){return _0x2e64c5[_0x79d5('0x6b')](_0x2f89b4[_0x79d5('0x2a')])||!_0x2f89b4[_0x79d5('0x6c')]&&_0x2f89b4[_0x79d5('0x41')]!==_0x79d5('0x6d');});return{'count':_0x41ce3d[_0x79d5('0x34')],'rows':_[_0x79d5('0x40')](_0x41ce3d,function(_0x50e3ef){return{'id':_0x50e3ef[_0x79d5('0x2a')],'name':_0x50e3ef[_0x79d5('0x6e')],'custom':!_0x50e3ef[_0x79d5('0x6c')],'options':_0x50e3ef[_0x79d5('0x6f')]?_[_0x79d5('0x40')](_0x50e3ef[_0x79d5('0x6f')],function(_0x36953e){return{'name':_[_0x79d5('0x70')](_0x36953e),'value':_0x36953e};}):[]};})};}})[_0x79d5('0x14')](respondWithResult(_0x4fe8fb,null))['catch'](function(_0x43cc8f){var _0x358225=_0xa287e2[_0x79d5('0x2d')]['test']?0x1f4:_0x43cc8f[_0x79d5('0x71')]||0x1f4;logger[_0x79d5('0x1b')](_0x79d5('0x72'),_0x79d5('0x5b'),_0x358225,JSON[_0x79d5('0x1a')](_0x43cc8f));delete _0x43cc8f[_0x79d5('0x2a')];if(_0x358225===0x191){_0x358225=0x190;}_0x4fe8fb['status'](_0x358225)[_0x79d5('0x2b')](_0xa287e2['query'][_0x79d5('0x73')]?{'message':_0x79d5('0x74'),'statusCode':_0x43cc8f[_0x79d5('0x71')]}:_0x43cc8f);});};
\ No newline at end of file
index 3a866d3..f18be9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['./intFreshdeskAccount.attributes','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x5214fd,_0x238b9d){var _0x4c22f8=function(_0x53b8bf){while(--_0x53b8bf){_0x5214fd['push'](_0x5214fd['shift']());}};_0x4c22f8(++_0x238b9d);}(_0x9348,0x10d));var _0x8934=function(_0x140376,_0x3605c2){_0x140376=_0x140376-0x0;var _0x3a6fe9=_0x9348[_0x140376];return _0x3a6fe9;};'use strict';var _=require(_0x8934('0x0'));var util=require(_0x8934('0x1'));var logger=require(_0x8934('0x2'))(_0x8934('0x3'));var moment=require(_0x8934('0x4'));var BPromise=require('bluebird');var rp=require(_0x8934('0x5'));var attributes=require(_0x8934('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x8934('0x7')]=function(_0x923aa3,_0xefbef9){return _0x923aa3[_0x8934('0x8')](_0x8934('0x9'),attributes,{'tableName':_0x8934('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc423=['../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','request-promise','./intFreshdeskAccount.attributes'];(function(_0x3b88d1,_0x22075b){var _0x393ed5=function(_0x4ab3eb){while(--_0x4ab3eb){_0x3b88d1['push'](_0x3b88d1['shift']());}};_0x393ed5(++_0x22075b);}(_0xc423,0x159));var _0x3c42=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xc423[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x3c42('0x0'));var util=require(_0x3c42('0x1'));var logger=require(_0x3c42('0x2'))(_0x3c42('0x3'));var moment=require(_0x3c42('0x4'));var BPromise=require('bluebird');var rp=require(_0x3c42('0x5'));var attributes=require(_0x3c42('0x6'));var integrations=require(_0x3c42('0x7'));module['exports']=function(_0x2078b8,_0x15c741){return _0x2078b8[_0x3c42('0x8')](_0x3c42('0x9'),attributes,{'tableName':_0x3c42('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a6d87d..859631f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fe=['ShowFreshdeskAccount','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','FreshdeskAccount,\x20%s,\x20%s','result','catch','GetFreshdeskAccount','FreshdeskAccount','options','attributes','limit','include','model','then','find','raw','where','map'];(function(_0x4d1558,_0x3f18b6){var _0x17310c=function(_0x212a5d){while(--_0x212a5d){_0x4d1558['push'](_0x4d1558['shift']());}};_0x17310c(++_0x3f18b6);}(_0x22fe,0x15f));var _0xe22f=function(_0xa48cc1,_0x438f7e){_0xa48cc1=_0xa48cc1-0x0;var _0x42f2b2=_0x22fe[_0xa48cc1];return _0x42f2b2;};'use strict';var _=require(_0xe22f('0x0'));var util=require('util');var moment=require(_0xe22f('0x1'));var BPromise=require(_0xe22f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe22f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe22f('0x4'));var logger=require(_0xe22f('0x5'))(_0xe22f('0x6'));var config=require(_0xe22f('0x7'));var jayson=require(_0xe22f('0x8'));var client=jayson['client'][_0xe22f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b01cf,_0x492c4b,_0x6afebb){return new BPromise(function(_0x46d5df,_0xba5871){return client[_0xe22f('0xa')](_0x4b01cf,_0x6afebb)['then'](function(_0x1b26d0){logger[_0xe22f('0xb')]('FreshdeskAccount,\x20%s,\x20%s',_0x492c4b,'request\x20sent');logger[_0xe22f('0xc')](_0xe22f('0xd'),_0x492c4b,_0xe22f('0xe'),JSON[_0xe22f('0xf')](_0x1b26d0));if(_0x1b26d0[_0xe22f('0x10')]){if(_0x1b26d0[_0xe22f('0x10')][_0xe22f('0x11')]===0x1f4){logger[_0xe22f('0x10')]('FreshdeskAccount,\x20%s,\x20%s',_0x492c4b,_0x1b26d0['error'][_0xe22f('0x12')]);return _0xba5871(_0x1b26d0[_0xe22f('0x10')][_0xe22f('0x12')]);}logger[_0xe22f('0x10')](_0xe22f('0x13'),_0x492c4b,_0x1b26d0[_0xe22f('0x10')][_0xe22f('0x12')]);return _0x46d5df(_0x1b26d0[_0xe22f('0x10')][_0xe22f('0x12')]);}else{logger[_0xe22f('0xb')](_0xe22f('0x13'),_0x492c4b,'request\x20sent');_0x46d5df(_0x1b26d0[_0xe22f('0x14')][_0xe22f('0x12')]);}})[_0xe22f('0x15')](function(_0x2cb775){logger[_0xe22f('0x10')]('FreshdeskAccount,\x20%s,\x20%s',_0x492c4b,_0x2cb775);_0xba5871(_0x2cb775);});});}exports[_0xe22f('0x16')]=function(_0x31d544){var _0x528ce4=this;return new Promise(function(_0x536ef7,_0x2a39bc){return db[_0xe22f('0x17')]['findAll']({'raw':_0x31d544['options']?_0x31d544[_0xe22f('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x31d544[_0xe22f('0x18')]?_0x31d544[_0xe22f('0x18')]['where']||null:null,'attributes':_0x31d544[_0xe22f('0x18')]?_0x31d544[_0xe22f('0x18')][_0xe22f('0x19')]||null:null,'limit':_0x31d544[_0xe22f('0x18')]?_0x31d544[_0xe22f('0x18')][_0xe22f('0x1a')]||null:null,'include':_0x31d544['options']?_0x31d544[_0xe22f('0x18')][_0xe22f('0x1b')]?_['map'](_0x31d544['options'][_0xe22f('0x1b')],function(_0x345c2c){return{'model':db[_0x345c2c[_0xe22f('0x1c')]],'as':_0x345c2c['as'],'attributes':_0x345c2c['attributes'],'include':_0x345c2c[_0xe22f('0x1b')]?_['map'](_0x345c2c[_0xe22f('0x1b')],function(_0x9fc662){return{'model':db[_0x9fc662['model']],'as':_0x9fc662['as'],'attributes':_0x9fc662['attributes'],'include':_0x9fc662[_0xe22f('0x1b')]?_['map'](_0x9fc662[_0xe22f('0x1b')],function(_0x599cbd){return{'model':db[_0x599cbd[_0xe22f('0x1c')]],'as':_0x599cbd['as'],'attributes':_0x599cbd[_0xe22f('0x19')]};}):[]};}):[]};}):[]:[]})[_0xe22f('0x1d')](function(_0x3dc17d){logger[_0xe22f('0xb')](_0xe22f('0x16'),_0x31d544);logger[_0xe22f('0xc')](_0xe22f('0x16'),_0x31d544,JSON[_0xe22f('0xf')](_0x3dc17d));_0x536ef7(_0x3dc17d);})[_0xe22f('0x15')](function(_0x24f37c){logger[_0xe22f('0x10')](_0xe22f('0x16'),_0x24f37c[_0xe22f('0x12')],_0x31d544);_0x2a39bc(_0x528ce4['error'](0x1f4,_0x24f37c[_0xe22f('0x12')]));});});};exports['ShowFreshdeskAccount']=function(_0x57db14){var _0x131061=this;return new Promise(function(_0x3ae40c,_0x1ead22){return db[_0xe22f('0x17')][_0xe22f('0x1e')]({'raw':_0x57db14[_0xe22f('0x18')]?_0x57db14[_0xe22f('0x18')][_0xe22f('0x1f')]===undefined?!![]:![]:!![],'where':_0x57db14[_0xe22f('0x18')]?_0x57db14['options'][_0xe22f('0x20')]||null:null,'attributes':_0x57db14['options']?_0x57db14[_0xe22f('0x18')][_0xe22f('0x19')]||null:null,'include':_0x57db14[_0xe22f('0x18')]?_0x57db14[_0xe22f('0x18')][_0xe22f('0x1b')]?_[_0xe22f('0x21')](_0x57db14[_0xe22f('0x18')][_0xe22f('0x1b')],function(_0x2e3856){return{'model':db[_0x2e3856[_0xe22f('0x1c')]],'as':_0x2e3856['as'],'attributes':_0x2e3856[_0xe22f('0x19')],'include':_0x2e3856['include']?_[_0xe22f('0x21')](_0x2e3856[_0xe22f('0x1b')],function(_0x48812f){return{'model':db[_0x48812f[_0xe22f('0x1c')]],'as':_0x48812f['as'],'attributes':_0x48812f[_0xe22f('0x19')],'include':_0x48812f[_0xe22f('0x1b')]?_['map'](_0x48812f[_0xe22f('0x1b')],function(_0x2ca062){return{'model':db[_0x2ca062[_0xe22f('0x1c')]],'as':_0x2ca062['as'],'attributes':_0x2ca062['attributes']};}):[]};}):[]};}):[]:[]})[_0xe22f('0x1d')](function(_0x3e31e5){logger[_0xe22f('0xb')](_0xe22f('0x22'),_0x57db14);logger[_0xe22f('0xc')](_0xe22f('0x22'),_0x57db14,JSON['stringify'](_0x3e31e5));_0x3ae40c(_0x3e31e5);})[_0xe22f('0x15')](function(_0x2f07d7){logger['error'](_0xe22f('0x22'),_0x2f07d7[_0xe22f('0x12')],_0x57db14);_0x1ead22(_0x131061[_0xe22f('0x10')](0x1f4,_0x2f07d7[_0xe22f('0x12')]));});});};
\ No newline at end of file
+var _0x42c5=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetFreshdeskAccount','FreshdeskAccount','findAll','options','where','attributes','limit','include','map','model','catch','ShowFreshdeskAccount','find','raw','util'];(function(_0x19b358,_0x563684){var _0x24cf91=function(_0x291c1d){while(--_0x291c1d){_0x19b358['push'](_0x19b358['shift']());}};_0x24cf91(++_0x563684);}(_0x42c5,0x117));var _0x542c=function(_0x4a7f39,_0x2153bc){_0x4a7f39=_0x4a7f39-0x0;var _0x3a708e=_0x42c5[_0x4a7f39];return _0x3a708e;};'use strict';var _=require('lodash');var util=require(_0x542c('0x0'));var moment=require(_0x542c('0x1'));var BPromise=require(_0x542c('0x2'));var rs=require(_0x542c('0x3'));var fs=require('fs');var Redis=require(_0x542c('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x542c('0x5'));var config=require(_0x542c('0x6'));var jayson=require(_0x542c('0x7'));var client=jayson[_0x542c('0x8')][_0x542c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5dddf8,_0x2a648c,_0x4d2427){return new BPromise(function(_0x30cf4f,_0x4636aa){return client[_0x542c('0xa')](_0x5dddf8,_0x4d2427)[_0x542c('0xb')](function(_0x5ab0b1){logger[_0x542c('0xc')](_0x542c('0xd'),_0x2a648c,_0x542c('0xe'));logger[_0x542c('0xf')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x2a648c,_0x542c('0xe'),JSON[_0x542c('0x10')](_0x5ab0b1));if(_0x5ab0b1[_0x542c('0x11')]){if(_0x5ab0b1['error'][_0x542c('0x12')]===0x1f4){logger[_0x542c('0x11')](_0x542c('0xd'),_0x2a648c,_0x5ab0b1[_0x542c('0x11')][_0x542c('0x13')]);return _0x4636aa(_0x5ab0b1[_0x542c('0x11')]['message']);}logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x2a648c,_0x5ab0b1[_0x542c('0x11')]['message']);return _0x30cf4f(_0x5ab0b1[_0x542c('0x11')][_0x542c('0x13')]);}else{logger['info'](_0x542c('0xd'),_0x2a648c,_0x542c('0xe'));_0x30cf4f(_0x5ab0b1[_0x542c('0x14')]['message']);}})['catch'](function(_0x53e437){logger[_0x542c('0x11')](_0x542c('0xd'),_0x2a648c,_0x53e437);_0x4636aa(_0x53e437);});});}exports[_0x542c('0x15')]=function(_0x232b2c){var _0x3dc6a0=this;return new Promise(function(_0x55567a,_0x23cffb){return db[_0x542c('0x16')][_0x542c('0x17')]({'raw':_0x232b2c[_0x542c('0x18')]?_0x232b2c['options']['raw']===undefined?!![]:![]:!![],'where':_0x232b2c[_0x542c('0x18')]?_0x232b2c[_0x542c('0x18')][_0x542c('0x19')]||null:null,'attributes':_0x232b2c[_0x542c('0x18')]?_0x232b2c['options'][_0x542c('0x1a')]||null:null,'limit':_0x232b2c[_0x542c('0x18')]?_0x232b2c[_0x542c('0x18')][_0x542c('0x1b')]||null:null,'include':_0x232b2c['options']?_0x232b2c[_0x542c('0x18')][_0x542c('0x1c')]?_['map'](_0x232b2c[_0x542c('0x18')][_0x542c('0x1c')],function(_0x274fdb){return{'model':db[_0x274fdb['model']],'as':_0x274fdb['as'],'attributes':_0x274fdb[_0x542c('0x1a')],'include':_0x274fdb[_0x542c('0x1c')]?_[_0x542c('0x1d')](_0x274fdb[_0x542c('0x1c')],function(_0x230ff0){return{'model':db[_0x230ff0[_0x542c('0x1e')]],'as':_0x230ff0['as'],'attributes':_0x230ff0[_0x542c('0x1a')],'include':_0x230ff0['include']?_[_0x542c('0x1d')](_0x230ff0[_0x542c('0x1c')],function(_0x47a368){return{'model':db[_0x47a368[_0x542c('0x1e')]],'as':_0x47a368['as'],'attributes':_0x47a368[_0x542c('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x27f55b){logger[_0x542c('0xc')](_0x542c('0x15'),_0x232b2c);logger[_0x542c('0xf')](_0x542c('0x15'),_0x232b2c,JSON[_0x542c('0x10')](_0x27f55b));_0x55567a(_0x27f55b);})[_0x542c('0x1f')](function(_0x6263e1){logger['error'](_0x542c('0x15'),_0x6263e1[_0x542c('0x13')],_0x232b2c);_0x23cffb(_0x3dc6a0[_0x542c('0x11')](0x1f4,_0x6263e1[_0x542c('0x13')]));});});};exports[_0x542c('0x20')]=function(_0x393841){var _0xb88025=this;return new Promise(function(_0x36fd0f,_0x22002b){return db[_0x542c('0x16')][_0x542c('0x21')]({'raw':_0x393841[_0x542c('0x18')]?_0x393841[_0x542c('0x18')][_0x542c('0x22')]===undefined?!![]:![]:!![],'where':_0x393841['options']?_0x393841['options'][_0x542c('0x19')]||null:null,'attributes':_0x393841[_0x542c('0x18')]?_0x393841[_0x542c('0x18')][_0x542c('0x1a')]||null:null,'include':_0x393841[_0x542c('0x18')]?_0x393841[_0x542c('0x18')][_0x542c('0x1c')]?_[_0x542c('0x1d')](_0x393841[_0x542c('0x18')][_0x542c('0x1c')],function(_0xe3f1cd){return{'model':db[_0xe3f1cd[_0x542c('0x1e')]],'as':_0xe3f1cd['as'],'attributes':_0xe3f1cd['attributes'],'include':_0xe3f1cd[_0x542c('0x1c')]?_[_0x542c('0x1d')](_0xe3f1cd[_0x542c('0x1c')],function(_0x5ee5c5){return{'model':db[_0x5ee5c5[_0x542c('0x1e')]],'as':_0x5ee5c5['as'],'attributes':_0x5ee5c5[_0x542c('0x1a')],'include':_0x5ee5c5[_0x542c('0x1c')]?_[_0x542c('0x1d')](_0x5ee5c5[_0x542c('0x1c')],function(_0xbce31a){return{'model':db[_0xbce31a[_0x542c('0x1e')]],'as':_0xbce31a['as'],'attributes':_0xbce31a[_0x542c('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1b45ca){logger[_0x542c('0xc')](_0x542c('0x20'),_0x393841);logger['debug'](_0x542c('0x20'),_0x393841,JSON['stringify'](_0x1b45ca));_0x36fd0f(_0x1b45ca);})[_0x542c('0x1f')](function(_0x4a1a08){logger[_0x542c('0x11')]('ShowFreshdeskAccount',_0x4a1a08[_0x542c('0x13')],_0x393841);_0x22002b(_0xb88025[_0x542c('0x11')](0x1f4,_0x4a1a08['message']));});});};
\ No newline at end of file
index 6c0c955..a63c86a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['post','create','setTags','/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','index','show','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x1d1967,_0x52b368){var _0x5d6ce0=function(_0x41f793){while(--_0x41f793){_0x1d1967['push'](_0x1d1967['shift']());}};_0x5d6ce0(++_0x52b368);}(_0xa41a,0x6b));var _0xaa41=function(_0x296973,_0xdd05c5){_0x296973=_0x296973-0x0;var _0x5016db=_0xa41a[_0x296973];return _0x5016db;};'use strict';var multer=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var path=require('path');var timeout=require(_0xaa41('0x2'));var express=require(_0xaa41('0x3'));var router=express[_0xaa41('0x4')]();var auth=require(_0xaa41('0x5'));var interaction=require(_0xaa41('0x6'));var config=require(_0xaa41('0x7'));var controller=require(_0xaa41('0x8'));router[_0xaa41('0x9')]('/',auth['isAuthenticated'](),controller[_0xaa41('0xa')]);router[_0xaa41('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xaa41('0xb')]);router[_0xaa41('0x9')]('/:id/fields',auth[_0xaa41('0xc')](),controller[_0xaa41('0xd')]);router[_0xaa41('0x9')](_0xaa41('0xe'),auth[_0xaa41('0xc')](),controller[_0xaa41('0xf')]);router[_0xaa41('0x9')](_0xaa41('0x10'),auth[_0xaa41('0xc')](),controller['getDescriptions']);router[_0xaa41('0x9')](_0xaa41('0x11'),auth['isAuthenticated'](),controller['getTags']);router[_0xaa41('0x12')]('/',auth['isAuthenticated'](),controller[_0xaa41('0x13')]);router[_0xaa41('0x12')](_0xaa41('0x11'),auth[_0xaa41('0xc')](),controller[_0xaa41('0x14')]);router['put'](_0xaa41('0x15'),auth[_0xaa41('0xc')](),controller[_0xaa41('0x16')]);router[_0xaa41('0x17')](_0xaa41('0x15'),auth[_0xaa41('0xc')](),controller[_0xaa41('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xc3b5=['/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','setTags','put','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','/:id','show','get','getFields'];(function(_0x29a598,_0x5cb984){var _0x2bbc2d=function(_0x2ae906){while(--_0x2ae906){_0x29a598['push'](_0x29a598['shift']());}};_0x2bbc2d(++_0x5cb984);}(_0xc3b5,0x6f));var _0x5c3b=function(_0x314f10,_0x4e4704){_0x314f10=_0x314f10-0x0;var _0x5f130b=_0xc3b5[_0x314f10];return _0x5f130b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5c3b('0x0'));var timeout=require(_0x5c3b('0x1'));var express=require(_0x5c3b('0x2'));var router=express[_0x5c3b('0x3')]();var auth=require(_0x5c3b('0x4'));var interaction=require(_0x5c3b('0x5'));var config=require(_0x5c3b('0x6'));var controller=require(_0x5c3b('0x7'));router['get']('/',auth[_0x5c3b('0x8')](),controller[_0x5c3b('0x9')]);router['get'](_0x5c3b('0xa'),auth[_0x5c3b('0x8')](),controller[_0x5c3b('0xb')]);router[_0x5c3b('0xc')]('/:id/fields',auth[_0x5c3b('0x8')](),controller[_0x5c3b('0xd')]);router[_0x5c3b('0xc')](_0x5c3b('0xe'),auth['isAuthenticated'](),controller[_0x5c3b('0xf')]);router[_0x5c3b('0xc')](_0x5c3b('0x10'),auth[_0x5c3b('0x8')](),controller[_0x5c3b('0x11')]);router['get'](_0x5c3b('0x12'),auth[_0x5c3b('0x8')](),controller['getTags']);router[_0x5c3b('0x13')]('/',auth[_0x5c3b('0x8')](),controller['create']);router[_0x5c3b('0x13')](_0x5c3b('0x12'),auth[_0x5c3b('0x8')](),controller[_0x5c3b('0x14')]);router[_0x5c3b('0x15')](_0x5c3b('0xa'),auth[_0x5c3b('0x8')](),controller['update']);router[_0x5c3b('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x5c3b('0x17')]);module[_0x5c3b('0x18')]=router;
\ No newline at end of file
index 60c67fa..aad16cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cd9=['sequelize','STRING'];(function(_0x302ff4,_0x280ff1){var _0x2a1386=function(_0x40a743){while(--_0x40a743){_0x302ff4['push'](_0x302ff4['shift']());}};_0x2a1386(++_0x280ff1);}(_0x8cd9,0x14e));var _0x98cd=function(_0x105d38,_0x1520e9){_0x105d38=_0x105d38-0x0;var _0x753ca2=_0x8cd9[_0x105d38];return _0x753ca2;};'use strict';var Sequelize=require(_0x98cd('0x0'));module['exports']={'name':{'type':Sequelize[_0x98cd('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x38fb=['exports','STRING'];(function(_0x2ac42c,_0x400eff){var _0x29b7f3=function(_0x2f9606){while(--_0x2f9606){_0x2ac42c['push'](_0x2ac42c['shift']());}};_0x29b7f3(++_0x400eff);}(_0x38fb,0x16c));var _0xb38f=function(_0x1559a5,_0x41924e){_0x1559a5=_0x1559a5-0x0;var _0x17a783=_0x38fb[_0x1559a5];return _0x17a783;};'use strict';var Sequelize=require('sequelize');module[_0xb38f('0x0')]={'name':{'type':Sequelize[_0xb38f('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6665bbd..1e346c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['../../config/logger','../../config/environment','../../mysqldb','jayson/promise','http','request','then','FreshdeskConfiguration,\x20%s,\x20%s','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','sendStatus','status','json','offset','limit','set','Content-Range','apply','reject','save','update','destroy','name','index','rawAttributes','model','keys','dateStart','query','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','dateEnd','add','day','merge','filter','type','key','VIRTUAL','field','FreshdeskConfiguration','count','include','rows','show','includeAll','options','find','catch','create','body','params','getFields','findOne','FreshdeskField','order','map','getSubjects','getDescriptions','hasOwnProperty','Tag','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0xc4459c,_0x4297b6){var _0x5d2378=function(_0x4771ff){while(--_0x4771ff){_0xc4459c['push'](_0xc4459c['shift']());}};_0x5d2378(++_0x4297b6);}(_0xadb5,0xad));var _0x5adb=function(_0x5b9400,_0x54424b){_0x5b9400=_0x5b9400-0x0;var _0x365187=_0xadb5[_0x5b9400];return _0x365187;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x5adb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5adb('0x1'));var jsonpatch=require(_0x5adb('0x2'));var rp=require(_0x5adb('0x3'));var moment=require('moment');var BPromise=require(_0x5adb('0x4'));var Mustache=require(_0x5adb('0x5'));var util=require(_0x5adb('0x6'));var path=require('path');var sox=require(_0x5adb('0x7'));var csv=require(_0x5adb('0x8'));var ejs=require(_0x5adb('0x9'));var fs=require('fs');var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x8'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var qs=require(_0x5adb('0x12'));var logger=require(_0x5adb('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x5adb('0x14'));var db=require(_0x5adb('0x15'))['db'];var jayson=require(_0x5adb('0x16'));var client=jayson['client'][_0x5adb('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x56012f,_0x2a0b70,_0x5433bf,_0x8cfcc6){return new BPromise(function(_0x39a0b3,_0x44abe3){var _0x5c929a=_0x8cfcc6||client;return _0x5c929a[_0x5adb('0x18')](_0x56012f,_0x5433bf)[_0x5adb('0x19')](function(_0xf82f72){logger['info'](_0x5adb('0x1a'),_0x2a0b70,'request\x20sent');logger[_0x5adb('0x1b')](_0x5adb('0x1c'),_0x2a0b70,_0x5adb('0x1d'),JSON[_0x5adb('0x1e')](_0xf82f72));if(_0xf82f72[_0x5adb('0x1f')]){if(_0xf82f72[_0x5adb('0x1f')][_0x5adb('0x20')]===0x1f4){logger[_0x5adb('0x1f')](_0x5adb('0x1a'),_0x2a0b70,_0xf82f72['error'][_0x5adb('0x21')]);return _0x44abe3(_0xf82f72['error'][_0x5adb('0x21')]);}logger['error'](_0x5adb('0x1a'),_0x2a0b70,_0xf82f72['error']['message']);return _0x39a0b3(_0xf82f72[_0x5adb('0x1f')][_0x5adb('0x21')]);}else{logger[_0x5adb('0x22')](_0x5adb('0x1a'),_0x2a0b70,_0x5adb('0x1d'));_0x39a0b3(_0xf82f72['result'][_0x5adb('0x21')]);}})['catch'](function(_0x4e9f16){logger[_0x5adb('0x1f')](_0x5adb('0x1a'),_0x2a0b70,_0x4e9f16);_0x44abe3(_0x4e9f16);});});}function respondWithStatusCode(_0x1a38d3,_0x1a8014){_0x1a8014=_0x1a8014||0xcc;return function(_0x1e9ccf){if(_0x1e9ccf){return _0x1a38d3[_0x5adb('0x23')](_0x1a8014);}return _0x1a38d3[_0x5adb('0x24')](_0x1a8014)['end']();};}function respondWithResult(_0x4b1957,_0x373cc3){_0x373cc3=_0x373cc3||0xc8;return function(_0x3220cd){if(_0x3220cd){return _0x4b1957[_0x5adb('0x24')](_0x373cc3)[_0x5adb('0x25')](_0x3220cd);}};}function respondWithFilteredResult(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(_0x2e1e63){var _0x5aed76=_0x2e1e63['count'],_0x1feecf=_0x2fee18[_0x5adb('0x26')],_0x1ded9f=_0x2fee18[_0x5adb('0x26')]+_0x2fee18[_0x5adb('0x27')],_0x1a0acd;if(_0x1ded9f>=_0x5aed76){_0x1ded9f=_0x5aed76;_0x1a0acd=0xc8;}else{_0x1a0acd=0xce;}_0x49f203[_0x5adb('0x24')](_0x1a0acd);return _0x49f203[_0x5adb('0x28')](_0x5adb('0x29'),_0x1feecf+'-'+_0x1ded9f+'/'+_0x5aed76)['json'](_0x2e1e63);}return null;};}function patchUpdates(_0x49992e){return function(_0x5d457e){try{jsonpatch[_0x5adb('0x2a')](_0x5d457e,_0x49992e,!![]);}catch(_0x1eac55){return BPromise[_0x5adb('0x2b')](_0x1eac55);}return _0x5d457e[_0x5adb('0x2c')]();};}function saveUpdates(_0x137a5c,_0x4de310){return function(_0x11ec2a){if(_0x11ec2a){return _0x11ec2a[_0x5adb('0x2d')](_0x137a5c)[_0x5adb('0x19')](function(_0x3b1fed){return _0x3b1fed;});}return null;};}function removeEntity(_0x450169,_0x3145f2){return function(_0x28190d){if(_0x28190d){return _0x28190d[_0x5adb('0x2e')]()[_0x5adb('0x19')](function(){_0x450169[_0x5adb('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e46ce,_0x4c8b2e){return function(_0x12424d){if(!_0x12424d){_0x2e46ce[_0x5adb('0x23')](0x194);}return _0x12424d;};}function handleError(_0x5d1441,_0x226390){_0x226390=_0x226390||0x1f4;return function(_0xe389ca){logger[_0x5adb('0x1f')](_0xe389ca['stack']);if(_0xe389ca[_0x5adb('0x2f')]){delete _0xe389ca[_0x5adb('0x2f')];}_0x5d1441['status'](_0x226390)['send'](_0xe389ca);};}exports[_0x5adb('0x30')]=function(_0x49dd03,_0x663ea0){var _0x222568={},_0x3c2b07={},_0x2da912={'count':0x0,'rows':[]};var _0x9bdece=db['FreshdeskConfiguration'][_0x5adb('0x31')];_0x3c2b07[_0x5adb('0x32')]=_[_0x5adb('0x33')](_0x9bdece);var _0x54851b={'dateStart':_0x49dd03['query'][_0x5adb('0x34')],'dateEnd':_0x49dd03[_0x5adb('0x35')]['dateEnd']};delete _0x49dd03[_0x5adb('0x35')]['dateStart'];delete _0x49dd03[_0x5adb('0x35')]['dateEnd'];_0x3c2b07[_0x5adb('0x35')]=_['keys'](_0x49dd03[_0x5adb('0x35')]);_0x3c2b07[_0x5adb('0x36')]=_['intersection'](_0x3c2b07[_0x5adb('0x32')],_0x3c2b07['query']);_0x222568[_0x5adb('0x37')]=_[_0x5adb('0x38')](_0x3c2b07[_0x5adb('0x32')],qs['fields'](_0x49dd03[_0x5adb('0x35')][_0x5adb('0x39')]));_0x222568[_0x5adb('0x37')]=_0x222568[_0x5adb('0x37')][_0x5adb('0x3a')]?_0x222568['attributes']:_0x3c2b07['model'];if(!_0x49dd03['query']['hasOwnProperty'](_0x5adb('0x3b'))){_0x222568[_0x5adb('0x27')]=qs[_0x5adb('0x27')](_0x49dd03[_0x5adb('0x35')][_0x5adb('0x27')]);_0x222568[_0x5adb('0x26')]=qs[_0x5adb('0x26')](_0x49dd03[_0x5adb('0x35')]['offset']);}_0x222568['order']=qs[_0x5adb('0x3c')](_0x49dd03['query'][_0x5adb('0x3c')]);_0x222568[_0x5adb('0x3d')]=qs[_0x5adb('0x36')](_[_0x5adb('0x3e')](_0x49dd03[_0x5adb('0x35')],_0x3c2b07['filters']));if(_0x54851b[_0x5adb('0x34')]){if(_0x54851b[_0x5adb('0x3f')]){_0x54851b['dateEnd']=moment(_0x54851b[_0x5adb('0x3f')])[_0x5adb('0x40')](0x1,'day');}else{_0x54851b[_0x5adb('0x3f')]=moment(_0x54851b[_0x5adb('0x34')])[_0x5adb('0x40')](0x1,_0x5adb('0x41'));}_[_0x5adb('0x42')](_0x222568[_0x5adb('0x3d')],{'createdAt':{'$gte':_0x54851b[_0x5adb('0x34')],'$lte':_0x54851b['dateEnd']}});}if(_0x49dd03['query'][_0x5adb('0x43')]){_0x222568[_0x5adb('0x3d')]=_[_0x5adb('0x42')](_0x222568[_0x5adb('0x3d')],{'$or':_['map'](_0x9bdece,function(_0x507e48){if(_0x507e48[_0x5adb('0x44')][_0x5adb('0x45')]!==_0x5adb('0x46')){var _0x72218={};_0x72218[_0x507e48[_0x5adb('0x47')]]={'$like':'%'+_0x49dd03['query'][_0x5adb('0x43')]+'%'};return _0x72218;}})});}_0x222568=_[_0x5adb('0x42')]({},_0x222568,_0x49dd03['options']);var _0x7786c4={'where':_0x222568[_0x5adb('0x3d')]};return db[_0x5adb('0x48')][_0x5adb('0x49')](_0x7786c4)[_0x5adb('0x19')](function(_0x3a5409){_0x2da912[_0x5adb('0x49')]=_0x3a5409;if(_0x49dd03[_0x5adb('0x35')]['includeAll']){_0x222568[_0x5adb('0x4a')]=[{'all':!![]}];}return db['FreshdeskConfiguration']['findAll'](_0x222568);})['then'](function(_0x3cd211){_0x2da912[_0x5adb('0x4b')]=_0x3cd211;return _0x2da912;})[_0x5adb('0x19')](respondWithFilteredResult(_0x663ea0,_0x222568))['catch'](handleError(_0x663ea0,null));};exports[_0x5adb('0x4c')]=function(_0x5cbab5,_0x177a81){var _0x2c3f21={'raw':![],'where':{'id':_0x5cbab5['params']['id']}},_0x3f9dc7={};_0x3f9dc7[_0x5adb('0x32')]=_['keys'](db[_0x5adb('0x48')][_0x5adb('0x31')]);_0x3f9dc7['query']=_[_0x5adb('0x33')](_0x5cbab5[_0x5adb('0x35')]);_0x3f9dc7[_0x5adb('0x36')]=_[_0x5adb('0x38')](_0x3f9dc7[_0x5adb('0x32')],_0x3f9dc7['query']);_0x2c3f21[_0x5adb('0x37')]=_[_0x5adb('0x38')](_0x3f9dc7[_0x5adb('0x32')],qs[_0x5adb('0x39')](_0x5cbab5['query'][_0x5adb('0x39')]));_0x2c3f21[_0x5adb('0x37')]=_0x2c3f21[_0x5adb('0x37')]['length']?_0x2c3f21[_0x5adb('0x37')]:_0x3f9dc7[_0x5adb('0x32')];if(_0x5cbab5[_0x5adb('0x35')][_0x5adb('0x4d')]){_0x2c3f21['include']=[{'all':!![]}];}_0x2c3f21=_[_0x5adb('0x42')]({},_0x2c3f21,_0x5cbab5[_0x5adb('0x4e')]);return db[_0x5adb('0x48')][_0x5adb('0x4f')](_0x2c3f21)[_0x5adb('0x19')](handleEntityNotFound(_0x177a81,null))['then'](respondWithResult(_0x177a81,null))[_0x5adb('0x50')](handleError(_0x177a81,null));};exports['create']=function(_0x2b790d,_0x4f7227){return db[_0x5adb('0x48')][_0x5adb('0x51')](_0x2b790d[_0x5adb('0x52')],{})[_0x5adb('0x19')](respondWithResult(_0x4f7227,0xc9))['catch'](handleError(_0x4f7227,null));};exports[_0x5adb('0x2d')]=function(_0x229ae2,_0x24b1f1){if(_0x229ae2['body']['id']){delete _0x229ae2['body']['id'];}return db['FreshdeskConfiguration'][_0x5adb('0x4f')]({'where':{'id':_0x229ae2[_0x5adb('0x53')]['id']}})[_0x5adb('0x19')](handleEntityNotFound(_0x24b1f1,null))[_0x5adb('0x19')](saveUpdates(_0x229ae2[_0x5adb('0x52')],null))[_0x5adb('0x19')](respondWithResult(_0x24b1f1,null))[_0x5adb('0x50')](handleError(_0x24b1f1,null));};exports[_0x5adb('0x2e')]=function(_0xc880af,_0x380d76){return db[_0x5adb('0x48')][_0x5adb('0x4f')]({'where':{'id':_0xc880af[_0x5adb('0x53')]['id']}})['then'](handleEntityNotFound(_0x380d76,null))['then'](removeEntity(_0x380d76,null))[_0x5adb('0x50')](handleError(_0x380d76,null));};exports[_0x5adb('0x54')]=function(_0x43cde9,_0xdb7d8f,_0x5d7a9f){var _0xfba0d5={};var _0xddd468={};var _0x5d2d2f;var _0x5cb50e;return db[_0x5adb('0x48')][_0x5adb('0x55')]({'where':{'id':_0x43cde9['params']['id']}})[_0x5adb('0x19')](handleEntityNotFound(_0xdb7d8f,null))[_0x5adb('0x19')](function(_0x19df2f){if(_0x19df2f){_0x5d2d2f=_0x19df2f;_0xddd468[_0x5adb('0x32')]=_[_0x5adb('0x33')](db[_0x5adb('0x56')]['rawAttributes']);_0xddd468[_0x5adb('0x35')]=_[_0x5adb('0x33')](_0x43cde9[_0x5adb('0x35')]);_0xddd468['filters']=_[_0x5adb('0x38')](_0xddd468[_0x5adb('0x32')],_0xddd468[_0x5adb('0x35')]);_0xfba0d5['attributes']=_[_0x5adb('0x38')](_0xddd468['model'],qs[_0x5adb('0x39')](_0x43cde9[_0x5adb('0x35')][_0x5adb('0x39')]));_0xfba0d5['attributes']=_0xfba0d5[_0x5adb('0x37')][_0x5adb('0x3a')]?_0xfba0d5['attributes']:_0xddd468[_0x5adb('0x32')];_0xfba0d5[_0x5adb('0x57')]=qs[_0x5adb('0x3c')](_0x43cde9[_0x5adb('0x35')]['sort']);_0xfba0d5[_0x5adb('0x3d')]=qs[_0x5adb('0x36')](_[_0x5adb('0x3e')](_0x43cde9[_0x5adb('0x35')],_0xddd468['filters']));if(_0x43cde9['query'][_0x5adb('0x43')]){_0xfba0d5['where']=_['merge'](_0xfba0d5['where'],{'$or':_[_0x5adb('0x58')](_0xfba0d5[_0x5adb('0x37')],function(_0x48bb5c){var _0x395350={};_0x395350[_0x48bb5c]={'$like':'%'+_0x43cde9[_0x5adb('0x35')][_0x5adb('0x43')]+'%'};return _0x395350;})});}_0xfba0d5=_[_0x5adb('0x42')]({},_0xfba0d5,_0x43cde9[_0x5adb('0x4e')]);return _0x5d2d2f[_0x5adb('0x54')](_0xfba0d5);}})[_0x5adb('0x19')](function(_0x1ffcd3){if(_0x1ffcd3){_0x5cb50e=_0x1ffcd3['length'];if(!_0x43cde9['query']['hasOwnProperty'](_0x5adb('0x3b'))){_0xfba0d5[_0x5adb('0x27')]=qs[_0x5adb('0x27')](_0x43cde9[_0x5adb('0x35')][_0x5adb('0x27')]);_0xfba0d5[_0x5adb('0x26')]=qs[_0x5adb('0x26')](_0x43cde9[_0x5adb('0x35')]['offset']);}return _0x5d2d2f['getFields'](_0xfba0d5);}})[_0x5adb('0x19')](function(_0x56df90){if(_0x56df90){return _0x56df90?{'count':_0x5cb50e,'rows':_0x56df90}:null;}})[_0x5adb('0x19')](respondWithResult(_0xdb7d8f,null))[_0x5adb('0x50')](handleError(_0xdb7d8f,null));};exports[_0x5adb('0x59')]=function(_0x335de5,_0x40140f,_0x236f59){var _0x338aee={};var _0x3b5ecf={};var _0x484f3d;var _0xedde86;return db[_0x5adb('0x48')][_0x5adb('0x55')]({'where':{'id':_0x335de5['params']['id']}})[_0x5adb('0x19')](handleEntityNotFound(_0x40140f,null))[_0x5adb('0x19')](function(_0x4f7bd0){if(_0x4f7bd0){_0x484f3d=_0x4f7bd0;_0x3b5ecf[_0x5adb('0x32')]=_['keys'](db[_0x5adb('0x56')][_0x5adb('0x31')]);_0x3b5ecf['query']=_[_0x5adb('0x33')](_0x335de5[_0x5adb('0x35')]);_0x3b5ecf[_0x5adb('0x36')]=_[_0x5adb('0x38')](_0x3b5ecf[_0x5adb('0x32')],_0x3b5ecf[_0x5adb('0x35')]);_0x338aee[_0x5adb('0x37')]=_[_0x5adb('0x38')](_0x3b5ecf['model'],qs[_0x5adb('0x39')](_0x335de5[_0x5adb('0x35')][_0x5adb('0x39')]));_0x338aee['attributes']=_0x338aee['attributes'][_0x5adb('0x3a')]?_0x338aee['attributes']:_0x3b5ecf[_0x5adb('0x32')];_0x338aee[_0x5adb('0x57')]=qs[_0x5adb('0x3c')](_0x335de5['query'][_0x5adb('0x3c')]);_0x338aee[_0x5adb('0x3d')]=qs[_0x5adb('0x36')](_[_0x5adb('0x3e')](_0x335de5[_0x5adb('0x35')],_0x3b5ecf['filters']));if(_0x335de5[_0x5adb('0x35')][_0x5adb('0x43')]){_0x338aee[_0x5adb('0x3d')]=_[_0x5adb('0x42')](_0x338aee['where'],{'$or':_[_0x5adb('0x58')](_0x338aee[_0x5adb('0x37')],function(_0x182873){var _0x1e9cd1={};_0x1e9cd1[_0x182873]={'$like':'%'+_0x335de5[_0x5adb('0x35')][_0x5adb('0x43')]+'%'};return _0x1e9cd1;})});}_0x338aee=_[_0x5adb('0x42')]({},_0x338aee,_0x335de5['options']);return _0x484f3d[_0x5adb('0x59')](_0x338aee);}})[_0x5adb('0x19')](function(_0x5f36ec){if(_0x5f36ec){_0xedde86=_0x5f36ec[_0x5adb('0x3a')];if(!_0x335de5[_0x5adb('0x35')]['hasOwnProperty'](_0x5adb('0x3b'))){_0x338aee['limit']=qs[_0x5adb('0x27')](_0x335de5[_0x5adb('0x35')]['limit']);_0x338aee[_0x5adb('0x26')]=qs['offset'](_0x335de5[_0x5adb('0x35')][_0x5adb('0x26')]);}return _0x484f3d[_0x5adb('0x59')](_0x338aee);}})[_0x5adb('0x19')](function(_0x159b20){if(_0x159b20){return _0x159b20?{'count':_0xedde86,'rows':_0x159b20}:null;}})['then'](respondWithResult(_0x40140f,null))[_0x5adb('0x50')](handleError(_0x40140f,null));};exports[_0x5adb('0x5a')]=function(_0x3f33c0,_0x1c8988,_0x47c631){var _0x5e875c={};var _0x3f3db9={};var _0x461a07;var _0x2e5c96;return db[_0x5adb('0x48')][_0x5adb('0x55')]({'where':{'id':_0x3f33c0[_0x5adb('0x53')]['id']}})[_0x5adb('0x19')](handleEntityNotFound(_0x1c8988,null))['then'](function(_0xda26cc){if(_0xda26cc){_0x461a07=_0xda26cc;_0x3f3db9[_0x5adb('0x32')]=_[_0x5adb('0x33')](db[_0x5adb('0x56')]['rawAttributes']);_0x3f3db9[_0x5adb('0x35')]=_[_0x5adb('0x33')](_0x3f33c0[_0x5adb('0x35')]);_0x3f3db9[_0x5adb('0x36')]=_[_0x5adb('0x38')](_0x3f3db9[_0x5adb('0x32')],_0x3f3db9[_0x5adb('0x35')]);_0x5e875c[_0x5adb('0x37')]=_[_0x5adb('0x38')](_0x3f3db9['model'],qs[_0x5adb('0x39')](_0x3f33c0[_0x5adb('0x35')]['fields']));_0x5e875c[_0x5adb('0x37')]=_0x5e875c[_0x5adb('0x37')][_0x5adb('0x3a')]?_0x5e875c[_0x5adb('0x37')]:_0x3f3db9[_0x5adb('0x32')];_0x5e875c[_0x5adb('0x57')]=qs[_0x5adb('0x3c')](_0x3f33c0[_0x5adb('0x35')]['sort']);_0x5e875c[_0x5adb('0x3d')]=qs[_0x5adb('0x36')](_['pick'](_0x3f33c0[_0x5adb('0x35')],_0x3f3db9[_0x5adb('0x36')]));if(_0x3f33c0[_0x5adb('0x35')]['filter']){_0x5e875c['where']=_[_0x5adb('0x42')](_0x5e875c[_0x5adb('0x3d')],{'$or':_[_0x5adb('0x58')](_0x5e875c['attributes'],function(_0x14b36f){var _0x321c3a={};_0x321c3a[_0x14b36f]={'$like':'%'+_0x3f33c0[_0x5adb('0x35')][_0x5adb('0x43')]+'%'};return _0x321c3a;})});}_0x5e875c=_[_0x5adb('0x42')]({},_0x5e875c,_0x3f33c0[_0x5adb('0x4e')]);return _0x461a07[_0x5adb('0x5a')](_0x5e875c);}})[_0x5adb('0x19')](function(_0x28bd33){if(_0x28bd33){_0x2e5c96=_0x28bd33[_0x5adb('0x3a')];if(!_0x3f33c0[_0x5adb('0x35')][_0x5adb('0x5b')]('nolimit')){_0x5e875c['limit']=qs[_0x5adb('0x27')](_0x3f33c0[_0x5adb('0x35')]['limit']);_0x5e875c[_0x5adb('0x26')]=qs[_0x5adb('0x26')](_0x3f33c0[_0x5adb('0x35')][_0x5adb('0x26')]);}return _0x461a07[_0x5adb('0x5a')](_0x5e875c);}})[_0x5adb('0x19')](function(_0x15626b){if(_0x15626b){return _0x15626b?{'count':_0x2e5c96,'rows':_0x15626b}:null;}})[_0x5adb('0x19')](respondWithResult(_0x1c8988,null))[_0x5adb('0x50')](handleError(_0x1c8988,null));};exports['getTags']=function(_0x178051,_0x24a42c,_0x273785){var _0x4f0261={};var _0x312a90={};var _0x284f79;var _0x2b6e56;return db[_0x5adb('0x48')][_0x5adb('0x55')]({'where':{'id':_0x178051[_0x5adb('0x53')]['id']}})['then'](handleEntityNotFound(_0x24a42c,null))[_0x5adb('0x19')](function(_0x2c4129){if(_0x2c4129){_0x284f79=_0x2c4129;_0x312a90[_0x5adb('0x32')]=_[_0x5adb('0x33')](db[_0x5adb('0x5c')][_0x5adb('0x31')]);_0x312a90[_0x5adb('0x35')]=_[_0x5adb('0x33')](_0x178051[_0x5adb('0x35')]);_0x312a90[_0x5adb('0x36')]=_['intersection'](_0x312a90[_0x5adb('0x32')],_0x312a90['query']);_0x4f0261[_0x5adb('0x37')]=_[_0x5adb('0x38')](_0x312a90[_0x5adb('0x32')],qs[_0x5adb('0x39')](_0x178051[_0x5adb('0x35')]['fields']));_0x4f0261['attributes']=_0x4f0261[_0x5adb('0x37')][_0x5adb('0x3a')]?_0x4f0261[_0x5adb('0x37')]:_0x312a90[_0x5adb('0x32')];_0x4f0261[_0x5adb('0x57')]=qs[_0x5adb('0x3c')](_0x178051['query']['sort']);_0x4f0261[_0x5adb('0x3d')]=qs[_0x5adb('0x36')](_[_0x5adb('0x3e')](_0x178051['query'],_0x312a90['filters']));if(_0x178051[_0x5adb('0x35')]['filter']){_0x4f0261[_0x5adb('0x3d')]=_[_0x5adb('0x42')](_0x4f0261['where'],{'$or':_['map'](_0x4f0261[_0x5adb('0x37')],function(_0x4bb198){var _0x4961bc={};_0x4961bc[_0x4bb198]={'$like':'%'+_0x178051[_0x5adb('0x35')][_0x5adb('0x43')]+'%'};return _0x4961bc;})});}_0x4f0261=_[_0x5adb('0x42')]({},_0x4f0261,_0x178051[_0x5adb('0x4e')]);return _0x284f79[_0x5adb('0x5d')](_0x4f0261);}})[_0x5adb('0x19')](function(_0xa51ffc){if(_0xa51ffc){_0x2b6e56=_0xa51ffc[_0x5adb('0x3a')];if(!_0x178051[_0x5adb('0x35')][_0x5adb('0x5b')](_0x5adb('0x3b'))){_0x4f0261[_0x5adb('0x27')]=qs[_0x5adb('0x27')](_0x178051['query'][_0x5adb('0x27')]);_0x4f0261['offset']=qs[_0x5adb('0x26')](_0x178051[_0x5adb('0x35')][_0x5adb('0x26')]);}return _0x284f79[_0x5adb('0x5d')](_0x4f0261);}})[_0x5adb('0x19')](function(_0x455671){if(_0x455671){return _0x455671?{'count':_0x2b6e56,'rows':_0x455671}:null;}})[_0x5adb('0x19')](respondWithResult(_0x24a42c,null))[_0x5adb('0x50')](handleError(_0x24a42c,null));};exports[_0x5adb('0x5e')]=function(_0x36a8f0,_0x41fa3c,_0x18fc00){if(_0x36a8f0['body']['id']){delete _0x36a8f0[_0x5adb('0x52')]['id'];}return db[_0x5adb('0x48')][_0x5adb('0x55')]({'where':{'id':_0x36a8f0[_0x5adb('0x53')]['id']}})[_0x5adb('0x19')](handleEntityNotFound(_0x41fa3c,null))[_0x5adb('0x19')](function(_0x3d5220){if(_0x3d5220){return _0x3d5220[_0x5adb('0x5e')](_0x36a8f0['body'][_0x5adb('0x5f')]||[]);}return null;})[_0x5adb('0x19')](respondWithResult(_0x41fa3c,null))[_0x5adb('0x50')](handleError(_0x41fa3c,null));};
\ No newline at end of file
+var _0x5f2f=['includeAll','include','rows','params','create','body','find','findOne','FreshdeskField','order','pick','getFields','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','ids','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','api','../../mysqldb','jayson/promise','http','request','then','info','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','limit','set','Content-Range','apply','update','destroy','stack','name','send','index','FreshdeskConfiguration','rawAttributes','model','keys','dateStart','query','dateEnd','intersection','attributes','fields','length','hasOwnProperty','sort','filters','add','day','merge','where','map','type','key','VIRTUAL','field','filter','options','count'];(function(_0xa6a23e,_0x8b657a){var _0x210e65=function(_0x58b4b8){while(--_0x58b4b8){_0xa6a23e['push'](_0xa6a23e['shift']());}};_0x210e65(++_0x8b657a);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4efa8c,_0x391c2a){_0x4efa8c=_0x4efa8c-0x0;var _0x1b786b=_0x5f2f[_0x4efa8c];return _0x1b786b;};'use strict';var pdf=require(_0xf5f2('0x0'));var emlformat=require(_0xf5f2('0x1'));var rimraf=require(_0xf5f2('0x2'));var zipdir=require(_0xf5f2('0x3'));var jsonpatch=require(_0xf5f2('0x4'));var rp=require(_0xf5f2('0x5'));var moment=require(_0xf5f2('0x6'));var BPromise=require(_0xf5f2('0x7'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf5f2('0x8'));var sox=require(_0xf5f2('0x9'));var csv=require(_0xf5f2('0xa'));var ejs=require(_0xf5f2('0xb'));var fs=require('fs');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('0xa'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var qs=require(_0xf5f2('0x12'));var logger=require('../../config/logger')(_0xf5f2('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0xf5f2('0x14'))['db'];var jayson=require(_0xf5f2('0x15'));var client=jayson['client'][_0xf5f2('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x14b51f,_0x331482,_0x3f2997,_0x59bb6c){return new BPromise(function(_0x3e5956,_0x5c01b8){var _0x5850f4=_0x59bb6c||client;return _0x5850f4[_0xf5f2('0x17')](_0x14b51f,_0x3f2997)[_0xf5f2('0x18')](function(_0x1c1a5c){logger[_0xf5f2('0x19')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x331482,_0xf5f2('0x1a'));logger[_0xf5f2('0x1b')](_0xf5f2('0x1c'),_0x331482,_0xf5f2('0x1a'),JSON[_0xf5f2('0x1d')](_0x1c1a5c));if(_0x1c1a5c[_0xf5f2('0x1e')]){if(_0x1c1a5c[_0xf5f2('0x1e')][_0xf5f2('0x1f')]===0x1f4){logger[_0xf5f2('0x1e')](_0xf5f2('0x20'),_0x331482,_0x1c1a5c[_0xf5f2('0x1e')][_0xf5f2('0x21')]);return _0x5c01b8(_0x1c1a5c[_0xf5f2('0x1e')][_0xf5f2('0x21')]);}logger[_0xf5f2('0x1e')](_0xf5f2('0x20'),_0x331482,_0x1c1a5c[_0xf5f2('0x1e')]['message']);return _0x3e5956(_0x1c1a5c[_0xf5f2('0x1e')][_0xf5f2('0x21')]);}else{logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x331482,_0xf5f2('0x1a'));_0x3e5956(_0x1c1a5c[_0xf5f2('0x22')]['message']);}})[_0xf5f2('0x23')](function(_0x170042){logger[_0xf5f2('0x1e')](_0xf5f2('0x20'),_0x331482,_0x170042);_0x5c01b8(_0x170042);});});}function respondWithStatusCode(_0x36f1cb,_0x4c691a){_0x4c691a=_0x4c691a||0xcc;return function(_0x21cd91){if(_0x21cd91){return _0x36f1cb[_0xf5f2('0x24')](_0x4c691a);}return _0x36f1cb[_0xf5f2('0x25')](_0x4c691a)[_0xf5f2('0x26')]();};}function respondWithResult(_0x287ad5,_0x5bdf4a){_0x5bdf4a=_0x5bdf4a||0xc8;return function(_0x529f07){if(_0x529f07){return _0x287ad5[_0xf5f2('0x25')](_0x5bdf4a)[_0xf5f2('0x27')](_0x529f07);}};}function respondWithFilteredResult(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(_0xf6c58d){var _0x788a8d=_0xf6c58d['count'],_0x13a3be=_0x1a5bb3[_0xf5f2('0x28')],_0x281ec8=_0x1a5bb3[_0xf5f2('0x28')]+_0x1a5bb3[_0xf5f2('0x29')],_0x294414;if(_0x281ec8>=_0x788a8d){_0x281ec8=_0x788a8d;_0x294414=0xc8;}else{_0x294414=0xce;}_0x13da6f[_0xf5f2('0x25')](_0x294414);return _0x13da6f[_0xf5f2('0x2a')](_0xf5f2('0x2b'),_0x13a3be+'-'+_0x281ec8+'/'+_0x788a8d)['json'](_0xf6c58d);}return null;};}function patchUpdates(_0x53cb96){return function(_0x22c826){try{jsonpatch[_0xf5f2('0x2c')](_0x22c826,_0x53cb96,!![]);}catch(_0x11c771){return BPromise['reject'](_0x11c771);}return _0x22c826['save']();};}function saveUpdates(_0x29571b,_0x50b8a2){return function(_0x17394a){if(_0x17394a){return _0x17394a[_0xf5f2('0x2d')](_0x29571b)[_0xf5f2('0x18')](function(_0x54c0c8){return _0x54c0c8;});}return null;};}function removeEntity(_0x52e959,_0x2f4778){return function(_0x4e19cb){if(_0x4e19cb){return _0x4e19cb[_0xf5f2('0x2e')]()['then'](function(){_0x52e959[_0xf5f2('0x25')](0xcc)[_0xf5f2('0x26')]();});}};}function handleEntityNotFound(_0x7b6817,_0x428770){return function(_0x256bd9){if(!_0x256bd9){_0x7b6817[_0xf5f2('0x24')](0x194);}return _0x256bd9;};}function handleError(_0x2ac089,_0x2c0e05){_0x2c0e05=_0x2c0e05||0x1f4;return function(_0x5ca917){logger[_0xf5f2('0x1e')](_0x5ca917[_0xf5f2('0x2f')]);if(_0x5ca917[_0xf5f2('0x30')]){delete _0x5ca917[_0xf5f2('0x30')];}_0x2ac089[_0xf5f2('0x25')](_0x2c0e05)[_0xf5f2('0x31')](_0x5ca917);};}exports[_0xf5f2('0x32')]=function(_0x48d64d,_0x144646){var _0xf503e8={},_0x55989d={},_0x3fc168={'count':0x0,'rows':[]};var _0x4b8c42=db[_0xf5f2('0x33')][_0xf5f2('0x34')];_0x55989d[_0xf5f2('0x35')]=_[_0xf5f2('0x36')](_0x4b8c42);var _0x59a6dd={'dateStart':_0x48d64d['query'][_0xf5f2('0x37')],'dateEnd':_0x48d64d[_0xf5f2('0x38')][_0xf5f2('0x39')]};delete _0x48d64d['query'][_0xf5f2('0x37')];delete _0x48d64d['query'][_0xf5f2('0x39')];_0x55989d['query']=_[_0xf5f2('0x36')](_0x48d64d[_0xf5f2('0x38')]);_0x55989d['filters']=_[_0xf5f2('0x3a')](_0x55989d[_0xf5f2('0x35')],_0x55989d[_0xf5f2('0x38')]);_0xf503e8[_0xf5f2('0x3b')]=_['intersection'](_0x55989d['model'],qs[_0xf5f2('0x3c')](_0x48d64d[_0xf5f2('0x38')][_0xf5f2('0x3c')]));_0xf503e8[_0xf5f2('0x3b')]=_0xf503e8[_0xf5f2('0x3b')][_0xf5f2('0x3d')]?_0xf503e8[_0xf5f2('0x3b')]:_0x55989d['model'];if(!_0x48d64d[_0xf5f2('0x38')][_0xf5f2('0x3e')]('nolimit')){_0xf503e8[_0xf5f2('0x29')]=qs[_0xf5f2('0x29')](_0x48d64d[_0xf5f2('0x38')][_0xf5f2('0x29')]);_0xf503e8[_0xf5f2('0x28')]=qs[_0xf5f2('0x28')](_0x48d64d[_0xf5f2('0x38')][_0xf5f2('0x28')]);}_0xf503e8['order']=qs[_0xf5f2('0x3f')](_0x48d64d[_0xf5f2('0x38')][_0xf5f2('0x3f')]);_0xf503e8['where']=qs['filters'](_['pick'](_0x48d64d[_0xf5f2('0x38')],_0x55989d[_0xf5f2('0x40')]));if(_0x59a6dd['dateStart']){if(_0x59a6dd[_0xf5f2('0x39')]){_0x59a6dd[_0xf5f2('0x39')]=moment(_0x59a6dd[_0xf5f2('0x39')])[_0xf5f2('0x41')](0x1,_0xf5f2('0x42'));}else{_0x59a6dd[_0xf5f2('0x39')]=moment(_0x59a6dd[_0xf5f2('0x37')])[_0xf5f2('0x41')](0x1,_0xf5f2('0x42'));}_[_0xf5f2('0x43')](_0xf503e8[_0xf5f2('0x44')],{'createdAt':{'$gte':_0x59a6dd[_0xf5f2('0x37')],'$lte':_0x59a6dd[_0xf5f2('0x39')]}});}if(_0x48d64d[_0xf5f2('0x38')]['filter']){_0xf503e8[_0xf5f2('0x44')]=_['merge'](_0xf503e8[_0xf5f2('0x44')],{'$or':_[_0xf5f2('0x45')](_0x4b8c42,function(_0x218def){if(_0x218def[_0xf5f2('0x46')][_0xf5f2('0x47')]!==_0xf5f2('0x48')){var _0x55a633={};_0x55a633[_0x218def[_0xf5f2('0x49')]]={'$like':'%'+_0x48d64d[_0xf5f2('0x38')][_0xf5f2('0x4a')]+'%'};return _0x55a633;}})});}_0xf503e8=_[_0xf5f2('0x43')]({},_0xf503e8,_0x48d64d[_0xf5f2('0x4b')]);var _0x10753a={'where':_0xf503e8[_0xf5f2('0x44')]};return db[_0xf5f2('0x33')]['count'](_0x10753a)[_0xf5f2('0x18')](function(_0x33ec29){_0x3fc168[_0xf5f2('0x4c')]=_0x33ec29;if(_0x48d64d['query'][_0xf5f2('0x4d')]){_0xf503e8[_0xf5f2('0x4e')]=[{'all':!![]}];}return db[_0xf5f2('0x33')]['findAll'](_0xf503e8);})['then'](function(_0x7bb942){_0x3fc168[_0xf5f2('0x4f')]=_0x7bb942;return _0x3fc168;})['then'](respondWithFilteredResult(_0x144646,_0xf503e8))[_0xf5f2('0x23')](handleError(_0x144646,null));};exports['show']=function(_0x740321,_0x497eb8){var _0x2cbd9d={'raw':![],'where':{'id':_0x740321[_0xf5f2('0x50')]['id']}},_0x5d9120={};_0x5d9120[_0xf5f2('0x35')]=_[_0xf5f2('0x36')](db[_0xf5f2('0x33')]['rawAttributes']);_0x5d9120[_0xf5f2('0x38')]=_[_0xf5f2('0x36')](_0x740321['query']);_0x5d9120['filters']=_[_0xf5f2('0x3a')](_0x5d9120[_0xf5f2('0x35')],_0x5d9120['query']);_0x2cbd9d[_0xf5f2('0x3b')]=_[_0xf5f2('0x3a')](_0x5d9120[_0xf5f2('0x35')],qs[_0xf5f2('0x3c')](_0x740321['query']['fields']));_0x2cbd9d[_0xf5f2('0x3b')]=_0x2cbd9d[_0xf5f2('0x3b')]['length']?_0x2cbd9d[_0xf5f2('0x3b')]:_0x5d9120[_0xf5f2('0x35')];if(_0x740321[_0xf5f2('0x38')][_0xf5f2('0x4d')]){_0x2cbd9d[_0xf5f2('0x4e')]=[{'all':!![]}];}_0x2cbd9d=_[_0xf5f2('0x43')]({},_0x2cbd9d,_0x740321[_0xf5f2('0x4b')]);return db['FreshdeskConfiguration']['find'](_0x2cbd9d)[_0xf5f2('0x18')](handleEntityNotFound(_0x497eb8,null))[_0xf5f2('0x18')](respondWithResult(_0x497eb8,null))[_0xf5f2('0x23')](handleError(_0x497eb8,null));};exports[_0xf5f2('0x51')]=function(_0x21b0d3,_0x5a861d){return db[_0xf5f2('0x33')][_0xf5f2('0x51')](_0x21b0d3[_0xf5f2('0x52')],{})['then'](respondWithResult(_0x5a861d,0xc9))[_0xf5f2('0x23')](handleError(_0x5a861d,null));};exports['update']=function(_0x78f1d2,_0x1a8d33){if(_0x78f1d2[_0xf5f2('0x52')]['id']){delete _0x78f1d2[_0xf5f2('0x52')]['id'];}return db['FreshdeskConfiguration']['find']({'where':{'id':_0x78f1d2[_0xf5f2('0x50')]['id']}})['then'](handleEntityNotFound(_0x1a8d33,null))[_0xf5f2('0x18')](saveUpdates(_0x78f1d2[_0xf5f2('0x52')],null))['then'](respondWithResult(_0x1a8d33,null))[_0xf5f2('0x23')](handleError(_0x1a8d33,null));};exports[_0xf5f2('0x2e')]=function(_0x2a8f6d,_0x51ef09){return db[_0xf5f2('0x33')][_0xf5f2('0x53')]({'where':{'id':_0x2a8f6d[_0xf5f2('0x50')]['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x51ef09,null))['then'](removeEntity(_0x51ef09,null))[_0xf5f2('0x23')](handleError(_0x51ef09,null));};exports['getFields']=function(_0x2cbe1e,_0x2a773d,_0x2e6f5d){var _0x380c08={};var _0x9f210e={};var _0x5583c2;var _0xda8dda;return db[_0xf5f2('0x33')][_0xf5f2('0x54')]({'where':{'id':_0x2cbe1e[_0xf5f2('0x50')]['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x2a773d,null))['then'](function(_0x31e16b){if(_0x31e16b){_0x5583c2=_0x31e16b;_0x9f210e['model']=_['keys'](db[_0xf5f2('0x55')]['rawAttributes']);_0x9f210e[_0xf5f2('0x38')]=_[_0xf5f2('0x36')](_0x2cbe1e[_0xf5f2('0x38')]);_0x9f210e[_0xf5f2('0x40')]=_['intersection'](_0x9f210e[_0xf5f2('0x35')],_0x9f210e[_0xf5f2('0x38')]);_0x380c08[_0xf5f2('0x3b')]=_[_0xf5f2('0x3a')](_0x9f210e[_0xf5f2('0x35')],qs[_0xf5f2('0x3c')](_0x2cbe1e[_0xf5f2('0x38')]['fields']));_0x380c08[_0xf5f2('0x3b')]=_0x380c08[_0xf5f2('0x3b')][_0xf5f2('0x3d')]?_0x380c08[_0xf5f2('0x3b')]:_0x9f210e['model'];_0x380c08[_0xf5f2('0x56')]=qs['sort'](_0x2cbe1e[_0xf5f2('0x38')][_0xf5f2('0x3f')]);_0x380c08['where']=qs[_0xf5f2('0x40')](_[_0xf5f2('0x57')](_0x2cbe1e[_0xf5f2('0x38')],_0x9f210e[_0xf5f2('0x40')]));if(_0x2cbe1e[_0xf5f2('0x38')]['filter']){_0x380c08[_0xf5f2('0x44')]=_[_0xf5f2('0x43')](_0x380c08[_0xf5f2('0x44')],{'$or':_[_0xf5f2('0x45')](_0x380c08[_0xf5f2('0x3b')],function(_0xfe70c1){var _0x53284f={};_0x53284f[_0xfe70c1]={'$like':'%'+_0x2cbe1e[_0xf5f2('0x38')][_0xf5f2('0x4a')]+'%'};return _0x53284f;})});}_0x380c08=_['merge']({},_0x380c08,_0x2cbe1e[_0xf5f2('0x4b')]);return _0x5583c2[_0xf5f2('0x58')](_0x380c08);}})[_0xf5f2('0x18')](function(_0x51a3c7){if(_0x51a3c7){_0xda8dda=_0x51a3c7['length'];if(!_0x2cbe1e['query'][_0xf5f2('0x3e')](_0xf5f2('0x59'))){_0x380c08[_0xf5f2('0x29')]=qs[_0xf5f2('0x29')](_0x2cbe1e[_0xf5f2('0x38')]['limit']);_0x380c08[_0xf5f2('0x28')]=qs[_0xf5f2('0x28')](_0x2cbe1e[_0xf5f2('0x38')][_0xf5f2('0x28')]);}return _0x5583c2[_0xf5f2('0x58')](_0x380c08);}})[_0xf5f2('0x18')](function(_0x11c302){if(_0x11c302){return _0x11c302?{'count':_0xda8dda,'rows':_0x11c302}:null;}})[_0xf5f2('0x18')](respondWithResult(_0x2a773d,null))[_0xf5f2('0x23')](handleError(_0x2a773d,null));};exports[_0xf5f2('0x5a')]=function(_0x4457ab,_0x5679bc,_0x5e4e07){var _0x5a143f={};var _0x40f362={};var _0xafba8e;var _0x3d3181;return db[_0xf5f2('0x33')][_0xf5f2('0x54')]({'where':{'id':_0x4457ab['params']['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x5679bc,null))[_0xf5f2('0x18')](function(_0x301006){if(_0x301006){_0xafba8e=_0x301006;_0x40f362[_0xf5f2('0x35')]=_[_0xf5f2('0x36')](db['FreshdeskField'][_0xf5f2('0x34')]);_0x40f362[_0xf5f2('0x38')]=_['keys'](_0x4457ab[_0xf5f2('0x38')]);_0x40f362[_0xf5f2('0x40')]=_[_0xf5f2('0x3a')](_0x40f362[_0xf5f2('0x35')],_0x40f362['query']);_0x5a143f[_0xf5f2('0x3b')]=_[_0xf5f2('0x3a')](_0x40f362[_0xf5f2('0x35')],qs[_0xf5f2('0x3c')](_0x4457ab[_0xf5f2('0x38')]['fields']));_0x5a143f['attributes']=_0x5a143f[_0xf5f2('0x3b')][_0xf5f2('0x3d')]?_0x5a143f[_0xf5f2('0x3b')]:_0x40f362[_0xf5f2('0x35')];_0x5a143f['order']=qs['sort'](_0x4457ab[_0xf5f2('0x38')]['sort']);_0x5a143f['where']=qs['filters'](_['pick'](_0x4457ab[_0xf5f2('0x38')],_0x40f362[_0xf5f2('0x40')]));if(_0x4457ab[_0xf5f2('0x38')][_0xf5f2('0x4a')]){_0x5a143f[_0xf5f2('0x44')]=_[_0xf5f2('0x43')](_0x5a143f[_0xf5f2('0x44')],{'$or':_[_0xf5f2('0x45')](_0x5a143f[_0xf5f2('0x3b')],function(_0x26b251){var _0x9afb3c={};_0x9afb3c[_0x26b251]={'$like':'%'+_0x4457ab[_0xf5f2('0x38')][_0xf5f2('0x4a')]+'%'};return _0x9afb3c;})});}_0x5a143f=_[_0xf5f2('0x43')]({},_0x5a143f,_0x4457ab[_0xf5f2('0x4b')]);return _0xafba8e[_0xf5f2('0x5a')](_0x5a143f);}})[_0xf5f2('0x18')](function(_0x2778ed){if(_0x2778ed){_0x3d3181=_0x2778ed['length'];if(!_0x4457ab[_0xf5f2('0x38')][_0xf5f2('0x3e')](_0xf5f2('0x59'))){_0x5a143f[_0xf5f2('0x29')]=qs[_0xf5f2('0x29')](_0x4457ab[_0xf5f2('0x38')][_0xf5f2('0x29')]);_0x5a143f[_0xf5f2('0x28')]=qs['offset'](_0x4457ab[_0xf5f2('0x38')]['offset']);}return _0xafba8e['getSubjects'](_0x5a143f);}})['then'](function(_0x53449e){if(_0x53449e){return _0x53449e?{'count':_0x3d3181,'rows':_0x53449e}:null;}})['then'](respondWithResult(_0x5679bc,null))['catch'](handleError(_0x5679bc,null));};exports[_0xf5f2('0x5b')]=function(_0x18ce86,_0x26a57c,_0x375bc9){var _0x145d4d={};var _0x3cf857={};var _0x5dc63f;var _0x4a0005;return db[_0xf5f2('0x33')]['findOne']({'where':{'id':_0x18ce86[_0xf5f2('0x50')]['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x26a57c,null))['then'](function(_0x4f3ad4){if(_0x4f3ad4){_0x5dc63f=_0x4f3ad4;_0x3cf857[_0xf5f2('0x35')]=_[_0xf5f2('0x36')](db['FreshdeskField'][_0xf5f2('0x34')]);_0x3cf857[_0xf5f2('0x38')]=_['keys'](_0x18ce86[_0xf5f2('0x38')]);_0x3cf857[_0xf5f2('0x40')]=_[_0xf5f2('0x3a')](_0x3cf857['model'],_0x3cf857[_0xf5f2('0x38')]);_0x145d4d[_0xf5f2('0x3b')]=_[_0xf5f2('0x3a')](_0x3cf857[_0xf5f2('0x35')],qs[_0xf5f2('0x3c')](_0x18ce86[_0xf5f2('0x38')][_0xf5f2('0x3c')]));_0x145d4d[_0xf5f2('0x3b')]=_0x145d4d[_0xf5f2('0x3b')][_0xf5f2('0x3d')]?_0x145d4d[_0xf5f2('0x3b')]:_0x3cf857[_0xf5f2('0x35')];_0x145d4d[_0xf5f2('0x56')]=qs[_0xf5f2('0x3f')](_0x18ce86[_0xf5f2('0x38')][_0xf5f2('0x3f')]);_0x145d4d[_0xf5f2('0x44')]=qs[_0xf5f2('0x40')](_[_0xf5f2('0x57')](_0x18ce86[_0xf5f2('0x38')],_0x3cf857[_0xf5f2('0x40')]));if(_0x18ce86['query'][_0xf5f2('0x4a')]){_0x145d4d[_0xf5f2('0x44')]=_['merge'](_0x145d4d[_0xf5f2('0x44')],{'$or':_[_0xf5f2('0x45')](_0x145d4d['attributes'],function(_0xb56304){var _0x2f54eb={};_0x2f54eb[_0xb56304]={'$like':'%'+_0x18ce86[_0xf5f2('0x38')]['filter']+'%'};return _0x2f54eb;})});}_0x145d4d=_['merge']({},_0x145d4d,_0x18ce86[_0xf5f2('0x4b')]);return _0x5dc63f[_0xf5f2('0x5b')](_0x145d4d);}})[_0xf5f2('0x18')](function(_0x5ba275){if(_0x5ba275){_0x4a0005=_0x5ba275['length'];if(!_0x18ce86[_0xf5f2('0x38')][_0xf5f2('0x3e')](_0xf5f2('0x59'))){_0x145d4d['limit']=qs['limit'](_0x18ce86['query']['limit']);_0x145d4d['offset']=qs[_0xf5f2('0x28')](_0x18ce86['query'][_0xf5f2('0x28')]);}return _0x5dc63f[_0xf5f2('0x5b')](_0x145d4d);}})[_0xf5f2('0x18')](function(_0x43a167){if(_0x43a167){return _0x43a167?{'count':_0x4a0005,'rows':_0x43a167}:null;}})[_0xf5f2('0x18')](respondWithResult(_0x26a57c,null))[_0xf5f2('0x23')](handleError(_0x26a57c,null));};exports[_0xf5f2('0x5c')]=function(_0x40e921,_0x3dc051,_0x27ca4a){var _0x1bb4ac={};var _0x36c3c8={};var _0x10c982;var _0x5e69a2;return db[_0xf5f2('0x33')][_0xf5f2('0x54')]({'where':{'id':_0x40e921['params']['id']}})[_0xf5f2('0x18')](handleEntityNotFound(_0x3dc051,null))[_0xf5f2('0x18')](function(_0x537a7d){if(_0x537a7d){_0x10c982=_0x537a7d;_0x36c3c8[_0xf5f2('0x35')]=_[_0xf5f2('0x36')](db[_0xf5f2('0x5d')]['rawAttributes']);_0x36c3c8[_0xf5f2('0x38')]=_[_0xf5f2('0x36')](_0x40e921['query']);_0x36c3c8[_0xf5f2('0x40')]=_[_0xf5f2('0x3a')](_0x36c3c8[_0xf5f2('0x35')],_0x36c3c8['query']);_0x1bb4ac[_0xf5f2('0x3b')]=_['intersection'](_0x36c3c8[_0xf5f2('0x35')],qs['fields'](_0x40e921[_0xf5f2('0x38')][_0xf5f2('0x3c')]));_0x1bb4ac[_0xf5f2('0x3b')]=_0x1bb4ac[_0xf5f2('0x3b')]['length']?_0x1bb4ac[_0xf5f2('0x3b')]:_0x36c3c8['model'];_0x1bb4ac['order']=qs['sort'](_0x40e921[_0xf5f2('0x38')][_0xf5f2('0x3f')]);_0x1bb4ac['where']=qs[_0xf5f2('0x40')](_[_0xf5f2('0x57')](_0x40e921[_0xf5f2('0x38')],_0x36c3c8[_0xf5f2('0x40')]));if(_0x40e921[_0xf5f2('0x38')][_0xf5f2('0x4a')]){_0x1bb4ac['where']=_[_0xf5f2('0x43')](_0x1bb4ac[_0xf5f2('0x44')],{'$or':_['map'](_0x1bb4ac[_0xf5f2('0x3b')],function(_0x19cbff){var _0x58042c={};_0x58042c[_0x19cbff]={'$like':'%'+_0x40e921[_0xf5f2('0x38')][_0xf5f2('0x4a')]+'%'};return _0x58042c;})});}_0x1bb4ac=_[_0xf5f2('0x43')]({},_0x1bb4ac,_0x40e921[_0xf5f2('0x4b')]);return _0x10c982[_0xf5f2('0x5c')](_0x1bb4ac);}})[_0xf5f2('0x18')](function(_0x4df05c){if(_0x4df05c){_0x5e69a2=_0x4df05c[_0xf5f2('0x3d')];if(!_0x40e921[_0xf5f2('0x38')][_0xf5f2('0x3e')](_0xf5f2('0x59'))){_0x1bb4ac[_0xf5f2('0x29')]=qs[_0xf5f2('0x29')](_0x40e921[_0xf5f2('0x38')][_0xf5f2('0x29')]);_0x1bb4ac[_0xf5f2('0x28')]=qs['offset'](_0x40e921[_0xf5f2('0x38')][_0xf5f2('0x28')]);}return _0x10c982[_0xf5f2('0x5c')](_0x1bb4ac);}})[_0xf5f2('0x18')](function(_0x35fe1a){if(_0x35fe1a){return _0x35fe1a?{'count':_0x5e69a2,'rows':_0x35fe1a}:null;}})[_0xf5f2('0x18')](respondWithResult(_0x3dc051,null))[_0xf5f2('0x23')](handleError(_0x3dc051,null));};exports[_0xf5f2('0x5e')]=function(_0x33cfe7,_0x40d0eb,_0x4c138c){if(_0x33cfe7['body']['id']){delete _0x33cfe7[_0xf5f2('0x52')]['id'];}return db[_0xf5f2('0x33')][_0xf5f2('0x54')]({'where':{'id':_0x33cfe7[_0xf5f2('0x50')]['id']}})['then'](handleEntityNotFound(_0x40d0eb,null))[_0xf5f2('0x18')](function(_0xffb639){if(_0xffb639){return _0xffb639[_0xf5f2('0x5e')](_0x33cfe7[_0xf5f2('0x52')][_0xf5f2('0x5f')]||[]);}return null;})['then'](respondWithResult(_0x40d0eb,null))[_0xf5f2('0x23')](handleError(_0x40d0eb,null));};
\ No newline at end of file
index 17b796f..260443c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a8=['FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','moment','request-promise','./intFreshdeskConfiguration.attributes','exports','define'];(function(_0x8e5a9f,_0x13c5be){var _0x1b798f=function(_0x5457c4){while(--_0x5457c4){_0x8e5a9f['push'](_0x8e5a9f['shift']());}};_0x1b798f(++_0x13c5be);}(_0xc3a8,0xe8));var _0x8c3a=function(_0x455555,_0x2147fd){_0x455555=_0x455555-0x0;var _0x3cb183=_0xc3a8[_0x455555];return _0x3cb183;};'use strict';var _=require(_0x8c3a('0x0'));var util=require(_0x8c3a('0x1'));var logger=require(_0x8c3a('0x2'))('api');var moment=require(_0x8c3a('0x3'));var BPromise=require('bluebird');var rp=require(_0x8c3a('0x4'));var attributes=require(_0x8c3a('0x5'));module[_0x8c3a('0x6')]=function(_0x1d993b,_0x5b999e){return _0x1d993b[_0x8c3a('0x7')](_0x8c3a('0x8'),attributes,{'tableName':_0x8c3a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe292=['api','request-promise','./intFreshdeskConfiguration.attributes','int_freshdesk_configurations','../../config/logger'];(function(_0x53c256,_0x382a24){var _0x25feb6=function(_0x2652fd){while(--_0x2652fd){_0x53c256['push'](_0x53c256['shift']());}};_0x25feb6(++_0x382a24);}(_0xe292,0x19e));var _0x2e29=function(_0x2894ad,_0xc8b94a){_0x2894ad=_0x2894ad-0x0;var _0x2c925a=_0xe292[_0x2894ad];return _0x2c925a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2e29('0x0'))(_0x2e29('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2e29('0x2'));var attributes=require(_0x2e29('0x3'));module['exports']=function(_0x59d723,_0x80a47){return _0x59d723['define']('FreshdeskConfiguration',attributes,{'tableName':_0x2e29('0x4'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 463c563..83082c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95c5=['debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskConfiguration,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent'];(function(_0x17188e,_0x2528f3){var _0x114dbd=function(_0x331772){while(--_0x331772){_0x17188e['push'](_0x17188e['shift']());}};_0x114dbd(++_0x2528f3);}(_0x95c5,0x1aa));var _0x595c=function(_0x55677b,_0x3e5655){_0x55677b=_0x55677b-0x0;var _0x104b88=_0x95c5[_0x55677b];return _0x104b88;};'use strict';var _=require(_0x595c('0x0'));var util=require('util');var moment=require(_0x595c('0x1'));var BPromise=require(_0x595c('0x2'));var rs=require(_0x595c('0x3'));var fs=require('fs');var Redis=require(_0x595c('0x4'));var db=require(_0x595c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x595c('0x6'))(_0x595c('0x7'));var config=require(_0x595c('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x595c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1e01c5,_0x5a6e40,_0x33e876){return new BPromise(function(_0x4e091a,_0x1711bf){return client[_0x595c('0xa')](_0x1e01c5,_0x33e876)[_0x595c('0xb')](function(_0x5388ca){logger[_0x595c('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x5a6e40,_0x595c('0xd'));logger[_0x595c('0xe')](_0x595c('0xf'),_0x5a6e40,'request\x20sent',JSON[_0x595c('0x10')](_0x5388ca));if(_0x5388ca[_0x595c('0x11')]){if(_0x5388ca[_0x595c('0x11')][_0x595c('0x12')]===0x1f4){logger[_0x595c('0x11')](_0x595c('0x13'),_0x5a6e40,_0x5388ca['error'][_0x595c('0x14')]);return _0x1711bf(_0x5388ca[_0x595c('0x11')]['message']);}logger[_0x595c('0x11')](_0x595c('0x13'),_0x5a6e40,_0x5388ca[_0x595c('0x11')]['message']);return _0x4e091a(_0x5388ca[_0x595c('0x11')][_0x595c('0x14')]);}else{logger[_0x595c('0xc')](_0x595c('0x13'),_0x5a6e40,_0x595c('0xd'));_0x4e091a(_0x5388ca['result'][_0x595c('0x14')]);}})[_0x595c('0x15')](function(_0x2b19f6){logger[_0x595c('0x11')](_0x595c('0x13'),_0x5a6e40,_0x2b19f6);_0x1711bf(_0x2b19f6);});});}
\ No newline at end of file
+var _0xf2a2=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0xf2a2,0x121));var _0x2f2a=function(_0x3c9e47,_0x5c1342){_0x3c9e47=_0x3c9e47-0x0;var _0x38f4df=_0xf2a2[_0x3c9e47];return _0x38f4df;};'use strict';var _=require('lodash');var util=require(_0x2f2a('0x0'));var moment=require(_0x2f2a('0x1'));var BPromise=require(_0x2f2a('0x2'));var rs=require(_0x2f2a('0x3'));var fs=require('fs');var Redis=require(_0x2f2a('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2f2a('0x5'))(_0x2f2a('0x6'));var config=require('../../config/environment');var jayson=require(_0x2f2a('0x7'));var client=jayson[_0x2f2a('0x8')][_0x2f2a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5cd1a7,_0x124d4a,_0x3a9c38){return new BPromise(function(_0x5a31d7,_0x3e8fce){return client[_0x2f2a('0xa')](_0x5cd1a7,_0x3a9c38)[_0x2f2a('0xb')](function(_0x5aebaf){logger[_0x2f2a('0xc')](_0x2f2a('0xd'),_0x124d4a,'request\x20sent');logger[_0x2f2a('0xe')](_0x2f2a('0xf'),_0x124d4a,_0x2f2a('0x10'),JSON['stringify'](_0x5aebaf));if(_0x5aebaf[_0x2f2a('0x11')]){if(_0x5aebaf[_0x2f2a('0x11')]['code']===0x1f4){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x124d4a,_0x5aebaf[_0x2f2a('0x11')][_0x2f2a('0x12')]);return _0x3e8fce(_0x5aebaf[_0x2f2a('0x11')][_0x2f2a('0x12')]);}logger[_0x2f2a('0x11')](_0x2f2a('0xd'),_0x124d4a,_0x5aebaf['error'][_0x2f2a('0x12')]);return _0x5a31d7(_0x5aebaf[_0x2f2a('0x11')][_0x2f2a('0x12')]);}else{logger[_0x2f2a('0xc')](_0x2f2a('0xd'),_0x124d4a,_0x2f2a('0x10'));_0x5a31d7(_0x5aebaf[_0x2f2a('0x13')]['message']);}})[_0x2f2a('0x14')](function(_0x10ca2d){logger[_0x2f2a('0x11')](_0x2f2a('0xd'),_0x124d4a,_0x10ca2d);_0x3e8fce(_0x10ca2d);});});}
\ No newline at end of file
index bd6cbb5..e19f328 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7a1=['/:id','post','create','put','update','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','./intFreshdeskField.controller','isAuthenticated','index','get'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xd7a1,0x136));var _0x1d7a=function(_0x31fcb9,_0x350d71){_0x31fcb9=_0x31fcb9-0x0;var _0xb1eee9=_0xd7a1[_0x31fcb9];return _0xb1eee9;};'use strict';var multer=require(_0x1d7a('0x0'));var util=require('util');var path=require(_0x1d7a('0x1'));var timeout=require(_0x1d7a('0x2'));var express=require(_0x1d7a('0x3'));var router=express[_0x1d7a('0x4')]();var auth=require(_0x1d7a('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x1d7a('0x6'));router['get']('/',auth[_0x1d7a('0x7')](),controller[_0x1d7a('0x8')]);router[_0x1d7a('0x9')](_0x1d7a('0xa'),auth[_0x1d7a('0x7')](),controller['show']);router[_0x1d7a('0xb')]('/',auth[_0x1d7a('0x7')](),controller[_0x1d7a('0xc')]);router[_0x1d7a('0xd')](_0x1d7a('0xa'),auth[_0x1d7a('0x7')](),controller[_0x1d7a('0xe')]);router['delete'](_0x1d7a('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x1d7a('0xf')]=router;
\ No newline at end of file
+var _0x112f=['delete','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','isAuthenticated','index','get','/:id','show','put','update'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x112f,0x11e));var _0xf112=function(_0x2068ed,_0xfd9570){_0x2068ed=_0x2068ed-0x0;var _0x35cf82=_0x112f[_0x2068ed];return _0x35cf82;};'use strict';var multer=require(_0xf112('0x0'));var util=require('util');var path=require(_0xf112('0x1'));var timeout=require('connect-timeout');var express=require(_0xf112('0x2'));var router=express[_0xf112('0x3')]();var auth=require(_0xf112('0x4'));var interaction=require(_0xf112('0x5'));var config=require('../../config/environment');var controller=require(_0xf112('0x6'));router['get']('/',auth[_0xf112('0x7')](),controller[_0xf112('0x8')]);router[_0xf112('0x9')](_0xf112('0xa'),auth[_0xf112('0x7')](),controller[_0xf112('0xb')]);router['post']('/',auth[_0xf112('0x7')](),controller['create']);router[_0xf112('0xc')](_0xf112('0xa'),auth[_0xf112('0x7')](),controller[_0xf112('0xd')]);router[_0xf112('0xe')](_0xf112('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a6c1617..1310364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['variable','customVariable','keyValue','string','STRING','BOOLEAN','exports','ENUM'];(function(_0xc42753,_0x4bf197){var _0x51c4a6=function(_0x17e858){while(--_0x17e858){_0xc42753['push'](_0xc42753['shift']());}};_0x51c4a6(++_0x4bf197);}(_0x9354,0x96));var _0x4935=function(_0x2bfd4f,_0x1bbf2c){_0x2bfd4f=_0x2bfd4f-0x0;var _0x341849=_0x9354[_0x2bfd4f];return _0x341849;};'use strict';var Sequelize=require('sequelize');module[_0x4935('0x0')]={'type':{'type':Sequelize[_0x4935('0x1')]('string',_0x4935('0x2'),_0x4935('0x3'),_0x4935('0x4')),'defaultValue':_0x4935('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x4935('0x6')]},'keyType':{'type':Sequelize[_0x4935('0x1')](_0x4935('0x5'),_0x4935('0x2'),_0x4935('0x3'))},'keyContent':{'type':Sequelize[_0x4935('0x6')]},'idField':{'type':Sequelize[_0x4935('0x6')]},'nameField':{'type':Sequelize[_0x4935('0x6')]},'customField':{'type':Sequelize[_0x4935('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3c81=['customVariable','BOOLEAN','sequelize','exports','string','variable','STRING','ENUM'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x3c81,0x102));var _0x13c8=function(_0x2c8694,_0x5b6d4b){_0x2c8694=_0x2c8694-0x0;var _0xe2c98b=_0x3c81[_0x2c8694];return _0xe2c98b;};'use strict';var Sequelize=require(_0x13c8('0x0'));module[_0x13c8('0x1')]={'type':{'type':Sequelize['ENUM'](_0x13c8('0x2'),_0x13c8('0x3'),'customVariable','keyValue'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x13c8('0x4')]},'keyType':{'type':Sequelize[_0x13c8('0x5')](_0x13c8('0x2'),_0x13c8('0x3'),_0x13c8('0x6'))},'keyContent':{'type':Sequelize[_0x13c8('0x4')]},'idField':{'type':Sequelize[_0x13c8('0x4')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x13c8('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index acd8d26..80ca8ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea70=['where','pick','add','day','map','type','key','VIRTUAL','field','merge','includeAll','include','findAll','catch','params','options','find','create','body','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','sendStatus','status','end','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','FreshdeskField','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x4804d7,_0x56ef10){var _0x532259=function(_0x5929e3){while(--_0x5929e3){_0x4804d7['push'](_0x4804d7['shift']());}};_0x532259(++_0x56ef10);}(_0xea70,0x1cf));var _0x0ea7=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xea70[_0x4565bf];return _0x5610ba;};'use strict';var pdf=require(_0x0ea7('0x0'));var emlformat=require(_0x0ea7('0x1'));var rimraf=require(_0x0ea7('0x2'));var zipdir=require(_0x0ea7('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ea7('0x4'));var moment=require(_0x0ea7('0x5'));var BPromise=require(_0x0ea7('0x6'));var Mustache=require(_0x0ea7('0x7'));var util=require(_0x0ea7('0x8'));var path=require(_0x0ea7('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0ea7('0xa'));var fs=require('fs');var _=require(_0x0ea7('0xb'));var squel=require(_0x0ea7('0xc'));var crypto=require(_0x0ea7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0ea7('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0ea7('0xf'));var Papa=require(_0x0ea7('0x10'));var Redis=require(_0x0ea7('0x11'));var qs=require(_0x0ea7('0x12'));var logger=require(_0x0ea7('0x13'))(_0x0ea7('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3166e7,_0x2d3f11){_0x2d3f11=_0x2d3f11||0xcc;return function(_0x2b4b84){if(_0x2b4b84){return _0x3166e7[_0x0ea7('0x15')](_0x2d3f11);}return _0x3166e7[_0x0ea7('0x16')](_0x2d3f11)[_0x0ea7('0x17')]();};}function respondWithResult(_0x471de0,_0x32ff7d){_0x32ff7d=_0x32ff7d||0xc8;return function(_0x5affb6){if(_0x5affb6){return _0x471de0[_0x0ea7('0x16')](_0x32ff7d)['json'](_0x5affb6);}};}function respondWithFilteredResult(_0x4e5e93,_0x556c18){return function(_0x589c6e){if(_0x589c6e){var _0x59fec5=_0x589c6e[_0x0ea7('0x18')],_0x4a2455=_0x556c18[_0x0ea7('0x19')],_0x302b10=_0x556c18[_0x0ea7('0x19')]+_0x556c18[_0x0ea7('0x1a')],_0x4d22a6;if(_0x302b10>=_0x59fec5){_0x302b10=_0x59fec5;_0x4d22a6=0xc8;}else{_0x4d22a6=0xce;}_0x4e5e93[_0x0ea7('0x16')](_0x4d22a6);return _0x4e5e93[_0x0ea7('0x1b')]('Content-Range',_0x4a2455+'-'+_0x302b10+'/'+_0x59fec5)['json'](_0x589c6e);}return null;};}function patchUpdates(_0x4533da){return function(_0x2938ea){try{jsonpatch[_0x0ea7('0x1c')](_0x2938ea,_0x4533da,!![]);}catch(_0x414e6b){return BPromise[_0x0ea7('0x1d')](_0x414e6b);}return _0x2938ea[_0x0ea7('0x1e')]();};}function saveUpdates(_0x3b46d4,_0x4c05f6){return function(_0x4e9d3f){if(_0x4e9d3f){return _0x4e9d3f[_0x0ea7('0x1f')](_0x3b46d4)[_0x0ea7('0x20')](function(_0x242601){return _0x242601;});}return null;};}function removeEntity(_0x571f0e,_0x5ab4c5){return function(_0x147898){if(_0x147898){return _0x147898[_0x0ea7('0x21')]()[_0x0ea7('0x20')](function(){_0x571f0e[_0x0ea7('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2df6c8,_0x381b63){return function(_0x9a9853){if(!_0x9a9853){_0x2df6c8[_0x0ea7('0x15')](0x194);}return _0x9a9853;};}function handleError(_0x1bad20,_0x4f7ead){_0x4f7ead=_0x4f7ead||0x1f4;return function(_0x16ec0b){logger[_0x0ea7('0x22')](_0x16ec0b[_0x0ea7('0x23')]);if(_0x16ec0b[_0x0ea7('0x24')]){delete _0x16ec0b['name'];}_0x1bad20[_0x0ea7('0x16')](_0x4f7ead)[_0x0ea7('0x25')](_0x16ec0b);};}exports[_0x0ea7('0x26')]=function(_0x264db1,_0x3655d8){var _0x59489d={},_0x186f18={},_0x41a723={'count':0x0,'rows':[]};var _0x444e28=db[_0x0ea7('0x27')][_0x0ea7('0x28')];_0x186f18[_0x0ea7('0x29')]=_[_0x0ea7('0x2a')](_0x444e28);var _0x110246={'dateStart':_0x264db1[_0x0ea7('0x2b')][_0x0ea7('0x2c')],'dateEnd':_0x264db1[_0x0ea7('0x2b')]['dateEnd']};delete _0x264db1[_0x0ea7('0x2b')]['dateStart'];delete _0x264db1[_0x0ea7('0x2b')][_0x0ea7('0x2d')];_0x186f18[_0x0ea7('0x2b')]=_[_0x0ea7('0x2a')](_0x264db1['query']);_0x186f18[_0x0ea7('0x2e')]=_[_0x0ea7('0x2f')](_0x186f18['model'],_0x186f18[_0x0ea7('0x2b')]);_0x59489d[_0x0ea7('0x30')]=_['intersection'](_0x186f18[_0x0ea7('0x29')],qs[_0x0ea7('0x31')](_0x264db1[_0x0ea7('0x2b')][_0x0ea7('0x31')]));_0x59489d[_0x0ea7('0x30')]=_0x59489d[_0x0ea7('0x30')][_0x0ea7('0x32')]?_0x59489d['attributes']:_0x186f18[_0x0ea7('0x29')];if(!_0x264db1[_0x0ea7('0x2b')][_0x0ea7('0x33')](_0x0ea7('0x34'))){_0x59489d[_0x0ea7('0x1a')]=qs[_0x0ea7('0x1a')](_0x264db1[_0x0ea7('0x2b')][_0x0ea7('0x1a')]);_0x59489d['offset']=qs[_0x0ea7('0x19')](_0x264db1['query'][_0x0ea7('0x19')]);}_0x59489d[_0x0ea7('0x35')]=qs[_0x0ea7('0x36')](_0x264db1[_0x0ea7('0x2b')][_0x0ea7('0x36')]);_0x59489d[_0x0ea7('0x37')]=qs[_0x0ea7('0x2e')](_[_0x0ea7('0x38')](_0x264db1[_0x0ea7('0x2b')],_0x186f18[_0x0ea7('0x2e')]));if(_0x110246[_0x0ea7('0x2c')]){if(_0x110246['dateEnd']){_0x110246[_0x0ea7('0x2d')]=moment(_0x110246[_0x0ea7('0x2d')])[_0x0ea7('0x39')](0x1,_0x0ea7('0x3a'));}else{_0x110246['dateEnd']=moment(_0x110246[_0x0ea7('0x2c')])['add'](0x1,_0x0ea7('0x3a'));}_['merge'](_0x59489d[_0x0ea7('0x37')],{'createdAt':{'$gte':_0x110246[_0x0ea7('0x2c')],'$lte':_0x110246[_0x0ea7('0x2d')]}});}if(_0x264db1[_0x0ea7('0x2b')]['filter']){_0x59489d['where']=_['merge'](_0x59489d[_0x0ea7('0x37')],{'$or':_[_0x0ea7('0x3b')](_0x444e28,function(_0x316982){if(_0x316982[_0x0ea7('0x3c')][_0x0ea7('0x3d')]!==_0x0ea7('0x3e')){var _0x431c27={};_0x431c27[_0x316982[_0x0ea7('0x3f')]]={'$like':'%'+_0x264db1['query']['filter']+'%'};return _0x431c27;}})});}_0x59489d=_[_0x0ea7('0x40')]({},_0x59489d,_0x264db1['options']);var _0x45bbba={'where':_0x59489d[_0x0ea7('0x37')]};return db[_0x0ea7('0x27')][_0x0ea7('0x18')](_0x45bbba)[_0x0ea7('0x20')](function(_0x546699){_0x41a723[_0x0ea7('0x18')]=_0x546699;if(_0x264db1[_0x0ea7('0x2b')][_0x0ea7('0x41')]){_0x59489d[_0x0ea7('0x42')]=[{'all':!![]}];}return db[_0x0ea7('0x27')][_0x0ea7('0x43')](_0x59489d);})['then'](function(_0x5e09fe){_0x41a723['rows']=_0x5e09fe;return _0x41a723;})['then'](respondWithFilteredResult(_0x3655d8,_0x59489d))[_0x0ea7('0x44')](handleError(_0x3655d8,null));};exports['show']=function(_0x4c042,_0x590bc7){var _0x136dda={'raw':!![],'where':{'id':_0x4c042[_0x0ea7('0x45')]['id']}},_0x15620c={};_0x15620c['model']=_[_0x0ea7('0x2a')](db[_0x0ea7('0x27')][_0x0ea7('0x28')]);_0x15620c[_0x0ea7('0x2b')]=_[_0x0ea7('0x2a')](_0x4c042[_0x0ea7('0x2b')]);_0x15620c[_0x0ea7('0x2e')]=_[_0x0ea7('0x2f')](_0x15620c[_0x0ea7('0x29')],_0x15620c[_0x0ea7('0x2b')]);_0x136dda['attributes']=_['intersection'](_0x15620c[_0x0ea7('0x29')],qs['fields'](_0x4c042[_0x0ea7('0x2b')][_0x0ea7('0x31')]));_0x136dda[_0x0ea7('0x30')]=_0x136dda['attributes']['length']?_0x136dda[_0x0ea7('0x30')]:_0x15620c[_0x0ea7('0x29')];if(_0x4c042[_0x0ea7('0x2b')][_0x0ea7('0x41')]){_0x136dda[_0x0ea7('0x42')]=[{'all':!![]}];}_0x136dda=_[_0x0ea7('0x40')]({},_0x136dda,_0x4c042[_0x0ea7('0x46')]);return db[_0x0ea7('0x27')][_0x0ea7('0x47')](_0x136dda)[_0x0ea7('0x20')](handleEntityNotFound(_0x590bc7,null))[_0x0ea7('0x20')](respondWithResult(_0x590bc7,null))[_0x0ea7('0x44')](handleError(_0x590bc7,null));};exports['create']=function(_0x1506d0,_0x5e3a6a){return db['FreshdeskField'][_0x0ea7('0x48')](_0x1506d0['body'],{})[_0x0ea7('0x20')](respondWithResult(_0x5e3a6a,0xc9))['catch'](handleError(_0x5e3a6a,null));};exports['update']=function(_0x34e704,_0x5fd62c){if(_0x34e704[_0x0ea7('0x49')]['id']){delete _0x34e704[_0x0ea7('0x49')]['id'];}return db[_0x0ea7('0x27')][_0x0ea7('0x47')]({'where':{'id':_0x34e704[_0x0ea7('0x45')]['id']}})[_0x0ea7('0x20')](handleEntityNotFound(_0x5fd62c,null))[_0x0ea7('0x20')](saveUpdates(_0x34e704[_0x0ea7('0x49')],null))['then'](respondWithResult(_0x5fd62c,null))[_0x0ea7('0x44')](handleError(_0x5fd62c,null));};exports[_0x0ea7('0x21')]=function(_0x26e4b6,_0x32a349){return db[_0x0ea7('0x27')][_0x0ea7('0x47')]({'where':{'id':_0x26e4b6[_0x0ea7('0x45')]['id']}})[_0x0ea7('0x20')](handleEntityNotFound(_0x32a349,null))[_0x0ea7('0x20')](removeEntity(_0x32a349,null))['catch'](handleError(_0x32a349,null));};
\ No newline at end of file
+var _0xc6d4=['show','rawAttributes','length','options','create','body','find','params','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../config/logger','api','../../mysqldb','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','send','FreshdeskField','model','keys','query','dateStart','dateEnd','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','add','day','filter','merge','map','type','key','VIRTUAL','field','includeAll','include','rows','catch'];(function(_0x364288,_0x5e7b32){var _0x1e609d=function(_0x169a28){while(--_0x169a28){_0x364288['push'](_0x364288['shift']());}};_0x1e609d(++_0x5e7b32);}(_0xc6d4,0xa0));var _0x4c6d=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0xc6d4[_0x618414];return _0x21c19a;};'use strict';var pdf=require(_0x4c6d('0x0'));var emlformat=require(_0x4c6d('0x1'));var rimraf=require(_0x4c6d('0x2'));var zipdir=require(_0x4c6d('0x3'));var jsonpatch=require(_0x4c6d('0x4'));var rp=require('request-promise');var moment=require(_0x4c6d('0x5'));var BPromise=require(_0x4c6d('0x6'));var Mustache=require(_0x4c6d('0x7'));var util=require(_0x4c6d('0x8'));var path=require(_0x4c6d('0x9'));var sox=require(_0x4c6d('0xa'));var csv=require('to-csv');var ejs=require(_0x4c6d('0xb'));var fs=require('fs');var _=require(_0x4c6d('0xc'));var squel=require(_0x4c6d('0xd'));var crypto=require(_0x4c6d('0xe'));var jsforce=require(_0x4c6d('0xf'));var deskjs=require(_0x4c6d('0x10'));var toCsv=require('to-csv');var querystring=require(_0x4c6d('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x4c6d('0x12'))(_0x4c6d('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x4c6d('0x14'))['db'];function respondWithStatusCode(_0x20895a,_0x22d134){_0x22d134=_0x22d134||0xcc;return function(_0x4687a2){if(_0x4687a2){return _0x20895a[_0x4c6d('0x15')](_0x22d134);}return _0x20895a[_0x4c6d('0x16')](_0x22d134)[_0x4c6d('0x17')]();};}function respondWithResult(_0x48473a,_0x4d8acf){_0x4d8acf=_0x4d8acf||0xc8;return function(_0x6491ef){if(_0x6491ef){return _0x48473a['status'](_0x4d8acf)['json'](_0x6491ef);}};}function respondWithFilteredResult(_0x1fecb9,_0x44c4f4){return function(_0x3665fb){if(_0x3665fb){var _0x1619cd=_0x3665fb[_0x4c6d('0x18')],_0x377add=_0x44c4f4[_0x4c6d('0x19')],_0xf41248=_0x44c4f4['offset']+_0x44c4f4[_0x4c6d('0x1a')],_0x4b0063;if(_0xf41248>=_0x1619cd){_0xf41248=_0x1619cd;_0x4b0063=0xc8;}else{_0x4b0063=0xce;}_0x1fecb9['status'](_0x4b0063);return _0x1fecb9[_0x4c6d('0x1b')](_0x4c6d('0x1c'),_0x377add+'-'+_0xf41248+'/'+_0x1619cd)[_0x4c6d('0x1d')](_0x3665fb);}return null;};}function patchUpdates(_0x558b1d){return function(_0x42a9a2){try{jsonpatch[_0x4c6d('0x1e')](_0x42a9a2,_0x558b1d,!![]);}catch(_0x568015){return BPromise[_0x4c6d('0x1f')](_0x568015);}return _0x42a9a2['save']();};}function saveUpdates(_0x1e32f8,_0x5d5287){return function(_0x3d8508){if(_0x3d8508){return _0x3d8508[_0x4c6d('0x20')](_0x1e32f8)[_0x4c6d('0x21')](function(_0x48e33b){return _0x48e33b;});}return null;};}function removeEntity(_0x4dd41d,_0x2c32d3){return function(_0x2a9b4d){if(_0x2a9b4d){return _0x2a9b4d[_0x4c6d('0x22')]()['then'](function(){_0x4dd41d[_0x4c6d('0x16')](0xcc)[_0x4c6d('0x17')]();});}};}function handleEntityNotFound(_0x2691bd,_0x55e71d){return function(_0x826e50){if(!_0x826e50){_0x2691bd[_0x4c6d('0x15')](0x194);}return _0x826e50;};}function handleError(_0x4e69a5,_0x29ad7b){_0x29ad7b=_0x29ad7b||0x1f4;return function(_0x54b00d){logger[_0x4c6d('0x23')](_0x54b00d[_0x4c6d('0x24')]);if(_0x54b00d[_0x4c6d('0x25')]){delete _0x54b00d[_0x4c6d('0x25')];}_0x4e69a5[_0x4c6d('0x16')](_0x29ad7b)[_0x4c6d('0x26')](_0x54b00d);};}exports['index']=function(_0x5696ce,_0xfb374d){var _0x5e1ba7={},_0x476850={},_0x1fae32={'count':0x0,'rows':[]};var _0xdbb549=db[_0x4c6d('0x27')]['rawAttributes'];_0x476850[_0x4c6d('0x28')]=_[_0x4c6d('0x29')](_0xdbb549);var _0x4df067={'dateStart':_0x5696ce[_0x4c6d('0x2a')][_0x4c6d('0x2b')],'dateEnd':_0x5696ce[_0x4c6d('0x2a')][_0x4c6d('0x2c')]};delete _0x5696ce[_0x4c6d('0x2a')][_0x4c6d('0x2b')];delete _0x5696ce[_0x4c6d('0x2a')][_0x4c6d('0x2c')];_0x476850[_0x4c6d('0x2a')]=_['keys'](_0x5696ce[_0x4c6d('0x2a')]);_0x476850['filters']=_[_0x4c6d('0x2d')](_0x476850[_0x4c6d('0x28')],_0x476850['query']);_0x5e1ba7['attributes']=_[_0x4c6d('0x2d')](_0x476850[_0x4c6d('0x28')],qs[_0x4c6d('0x2e')](_0x5696ce[_0x4c6d('0x2a')][_0x4c6d('0x2e')]));_0x5e1ba7[_0x4c6d('0x2f')]=_0x5e1ba7[_0x4c6d('0x2f')]['length']?_0x5e1ba7[_0x4c6d('0x2f')]:_0x476850[_0x4c6d('0x28')];if(!_0x5696ce[_0x4c6d('0x2a')][_0x4c6d('0x30')](_0x4c6d('0x31'))){_0x5e1ba7[_0x4c6d('0x1a')]=qs[_0x4c6d('0x1a')](_0x5696ce['query'][_0x4c6d('0x1a')]);_0x5e1ba7['offset']=qs['offset'](_0x5696ce['query'][_0x4c6d('0x19')]);}_0x5e1ba7[_0x4c6d('0x32')]=qs[_0x4c6d('0x33')](_0x5696ce[_0x4c6d('0x2a')]['sort']);_0x5e1ba7[_0x4c6d('0x34')]=qs[_0x4c6d('0x35')](_[_0x4c6d('0x36')](_0x5696ce[_0x4c6d('0x2a')],_0x476850['filters']));if(_0x4df067[_0x4c6d('0x2b')]){if(_0x4df067['dateEnd']){_0x4df067[_0x4c6d('0x2c')]=moment(_0x4df067[_0x4c6d('0x2c')])[_0x4c6d('0x37')](0x1,'day');}else{_0x4df067[_0x4c6d('0x2c')]=moment(_0x4df067[_0x4c6d('0x2b')])[_0x4c6d('0x37')](0x1,_0x4c6d('0x38'));}_['merge'](_0x5e1ba7[_0x4c6d('0x34')],{'createdAt':{'$gte':_0x4df067[_0x4c6d('0x2b')],'$lte':_0x4df067[_0x4c6d('0x2c')]}});}if(_0x5696ce['query'][_0x4c6d('0x39')]){_0x5e1ba7[_0x4c6d('0x34')]=_[_0x4c6d('0x3a')](_0x5e1ba7[_0x4c6d('0x34')],{'$or':_[_0x4c6d('0x3b')](_0xdbb549,function(_0x5ef08c){if(_0x5ef08c[_0x4c6d('0x3c')][_0x4c6d('0x3d')]!==_0x4c6d('0x3e')){var _0xb9b2e9={};_0xb9b2e9[_0x5ef08c[_0x4c6d('0x3f')]]={'$like':'%'+_0x5696ce[_0x4c6d('0x2a')][_0x4c6d('0x39')]+'%'};return _0xb9b2e9;}})});}_0x5e1ba7=_[_0x4c6d('0x3a')]({},_0x5e1ba7,_0x5696ce['options']);var _0x237493={'where':_0x5e1ba7[_0x4c6d('0x34')]};return db[_0x4c6d('0x27')]['count'](_0x237493)[_0x4c6d('0x21')](function(_0x541e30){_0x1fae32[_0x4c6d('0x18')]=_0x541e30;if(_0x5696ce[_0x4c6d('0x2a')][_0x4c6d('0x40')]){_0x5e1ba7[_0x4c6d('0x41')]=[{'all':!![]}];}return db['FreshdeskField']['findAll'](_0x5e1ba7);})[_0x4c6d('0x21')](function(_0x20076d){_0x1fae32[_0x4c6d('0x42')]=_0x20076d;return _0x1fae32;})[_0x4c6d('0x21')](respondWithFilteredResult(_0xfb374d,_0x5e1ba7))[_0x4c6d('0x43')](handleError(_0xfb374d,null));};exports[_0x4c6d('0x44')]=function(_0x17a8e0,_0x18b572){var _0xdb7e1e={'raw':!![],'where':{'id':_0x17a8e0['params']['id']}},_0x2a8843={};_0x2a8843[_0x4c6d('0x28')]=_[_0x4c6d('0x29')](db[_0x4c6d('0x27')][_0x4c6d('0x45')]);_0x2a8843['query']=_['keys'](_0x17a8e0[_0x4c6d('0x2a')]);_0x2a8843[_0x4c6d('0x35')]=_[_0x4c6d('0x2d')](_0x2a8843['model'],_0x2a8843['query']);_0xdb7e1e['attributes']=_[_0x4c6d('0x2d')](_0x2a8843[_0x4c6d('0x28')],qs[_0x4c6d('0x2e')](_0x17a8e0[_0x4c6d('0x2a')][_0x4c6d('0x2e')]));_0xdb7e1e['attributes']=_0xdb7e1e[_0x4c6d('0x2f')][_0x4c6d('0x46')]?_0xdb7e1e[_0x4c6d('0x2f')]:_0x2a8843[_0x4c6d('0x28')];if(_0x17a8e0[_0x4c6d('0x2a')][_0x4c6d('0x40')]){_0xdb7e1e[_0x4c6d('0x41')]=[{'all':!![]}];}_0xdb7e1e=_[_0x4c6d('0x3a')]({},_0xdb7e1e,_0x17a8e0[_0x4c6d('0x47')]);return db[_0x4c6d('0x27')]['find'](_0xdb7e1e)[_0x4c6d('0x21')](handleEntityNotFound(_0x18b572,null))[_0x4c6d('0x21')](respondWithResult(_0x18b572,null))['catch'](handleError(_0x18b572,null));};exports['create']=function(_0x2c462d,_0x24e402){return db[_0x4c6d('0x27')][_0x4c6d('0x48')](_0x2c462d[_0x4c6d('0x49')],{})['then'](respondWithResult(_0x24e402,0xc9))[_0x4c6d('0x43')](handleError(_0x24e402,null));};exports['update']=function(_0x288e54,_0x2ca367){if(_0x288e54['body']['id']){delete _0x288e54[_0x4c6d('0x49')]['id'];}return db['FreshdeskField'][_0x4c6d('0x4a')]({'where':{'id':_0x288e54[_0x4c6d('0x4b')]['id']}})[_0x4c6d('0x21')](handleEntityNotFound(_0x2ca367,null))[_0x4c6d('0x21')](saveUpdates(_0x288e54[_0x4c6d('0x49')],null))['then'](respondWithResult(_0x2ca367,null))[_0x4c6d('0x43')](handleError(_0x2ca367,null));};exports['destroy']=function(_0x558241,_0x36b4ad){return db[_0x4c6d('0x27')]['find']({'where':{'id':_0x558241[_0x4c6d('0x4b')]['id']}})[_0x4c6d('0x21')](handleEntityNotFound(_0x36b4ad,null))[_0x4c6d('0x21')](removeEntity(_0x36b4ad,null))[_0x4c6d('0x43')](handleError(_0x36b4ad,null));};
\ No newline at end of file
index b056a29..fffb1bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a5=['lodash','../../config/logger','api','bluebird','request-promise','./intFreshdeskField.attributes','exports','FreshdeskField','int_freshdesk_fields'];(function(_0x41524e,_0x5c21c8){var _0x41ead8=function(_0x336c7b){while(--_0x336c7b){_0x41524e['push'](_0x41524e['shift']());}};_0x41ead8(++_0x5c21c8);}(_0x68a5,0xfc));var _0x568a=function(_0x2756d0,_0x345d7e){_0x2756d0=_0x2756d0-0x0;var _0x268d05=_0x68a5[_0x2756d0];return _0x268d05;};'use strict';var _=require(_0x568a('0x0'));var util=require('util');var logger=require(_0x568a('0x1'))(_0x568a('0x2'));var moment=require('moment');var BPromise=require(_0x568a('0x3'));var rp=require(_0x568a('0x4'));var attributes=require(_0x568a('0x5'));module[_0x568a('0x6')]=function(_0x53dca3,_0xac8b08){return _0x53dca3['define'](_0x568a('0x7'),attributes,{'tableName':_0x568a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7de=['int_freshdesk_fields','lodash','util','../../config/logger','moment','bluebird','request-promise','./intFreshdeskField.attributes','exports','define','FreshdeskField'];(function(_0x4f91aa,_0x474dd7){var _0x458374=function(_0x41c863){while(--_0x41c863){_0x4f91aa['push'](_0x4f91aa['shift']());}};_0x458374(++_0x474dd7);}(_0xb7de,0xc7));var _0xeb7d=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xb7de[_0x55f8b4];return _0x2475f9;};'use strict';var _=require(_0xeb7d('0x0'));var util=require(_0xeb7d('0x1'));var logger=require(_0xeb7d('0x2'))('api');var moment=require(_0xeb7d('0x3'));var BPromise=require(_0xeb7d('0x4'));var rp=require(_0xeb7d('0x5'));var attributes=require(_0xeb7d('0x6'));module[_0xeb7d('0x7')]=function(_0x57a908,_0x16d106){return _0x57a908[_0xeb7d('0x8')](_0xeb7d('0x9'),attributes,{'tableName':_0xeb7d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a0413cf..fc50069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe644=['../../config/logger','rpc','../../config/environment','jayson/promise','client','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x43b4b5,_0x3efc1b){var _0x2df432=function(_0x10b3bb){while(--_0x10b3bb){_0x43b4b5['push'](_0x43b4b5['shift']());}};_0x2df432(++_0x3efc1b);}(_0xe644,0x159));var _0x4e64=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe644[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4e64('0x0'));var util=require(_0x4e64('0x1'));var moment=require(_0x4e64('0x2'));var BPromise=require(_0x4e64('0x3'));var rs=require(_0x4e64('0x4'));var fs=require('fs');var Redis=require(_0x4e64('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4e64('0x6'));var logger=require(_0x4e64('0x7'))(_0x4e64('0x8'));var config=require(_0x4e64('0x9'));var jayson=require(_0x4e64('0xa'));var client=jayson[_0x4e64('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x66faf,_0x12c40d,_0x5cce6e){return new BPromise(function(_0x4d5aa6,_0x8573c1){return client['request'](_0x66faf,_0x5cce6e)['then'](function(_0x2ebcfe){logger[_0x4e64('0xc')](_0x4e64('0xd'),_0x12c40d,_0x4e64('0xe'));logger[_0x4e64('0xf')](_0x4e64('0x10'),_0x12c40d,'request\x20sent',JSON[_0x4e64('0x11')](_0x2ebcfe));if(_0x2ebcfe[_0x4e64('0x12')]){if(_0x2ebcfe['error'][_0x4e64('0x13')]===0x1f4){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x12c40d,_0x2ebcfe[_0x4e64('0x12')]['message']);return _0x8573c1(_0x2ebcfe[_0x4e64('0x12')][_0x4e64('0x14')]);}logger[_0x4e64('0x12')](_0x4e64('0xd'),_0x12c40d,_0x2ebcfe[_0x4e64('0x12')][_0x4e64('0x14')]);return _0x4d5aa6(_0x2ebcfe[_0x4e64('0x12')]['message']);}else{logger[_0x4e64('0xc')](_0x4e64('0xd'),_0x12c40d,_0x4e64('0xe'));_0x4d5aa6(_0x2ebcfe['result'][_0x4e64('0x14')]);}})[_0x4e64('0x15')](function(_0x452f34){logger[_0x4e64('0x12')](_0x4e64('0xd'),_0x12c40d,_0x452f34);_0x8573c1(_0x452f34);});});}
\ No newline at end of file
+var _0x0c02=['FreshdeskField,\x20%s,\x20%s','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0xf67b94,_0x220f25){var _0x4d0bdf=function(_0x521490){while(--_0x521490){_0xf67b94['push'](_0xf67b94['shift']());}};_0x4d0bdf(++_0x220f25);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x20c0('0x0'));var moment=require(_0x20c0('0x1'));var BPromise=require('bluebird');var rs=require(_0x20c0('0x2'));var fs=require('fs');var Redis=require(_0x20c0('0x3'));var db=require(_0x20c0('0x4'))['db'];var utils=require(_0x20c0('0x5'));var logger=require(_0x20c0('0x6'))(_0x20c0('0x7'));var config=require(_0x20c0('0x8'));var jayson=require(_0x20c0('0x9'));var client=jayson[_0x20c0('0xa')][_0x20c0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5d6408,_0x4e1dac,_0x5da127){return new BPromise(function(_0x4db532,_0x1e35e2){return client[_0x20c0('0xc')](_0x5d6408,_0x5da127)[_0x20c0('0xd')](function(_0x41a4af){logger[_0x20c0('0xe')](_0x20c0('0xf'),_0x4e1dac,'request\x20sent');logger['debug']('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x4e1dac,'request\x20sent',JSON['stringify'](_0x41a4af));if(_0x41a4af[_0x20c0('0x10')]){if(_0x41a4af[_0x20c0('0x10')][_0x20c0('0x11')]===0x1f4){logger[_0x20c0('0x10')]('FreshdeskField,\x20%s,\x20%s',_0x4e1dac,_0x41a4af[_0x20c0('0x10')]['message']);return _0x1e35e2(_0x41a4af['error'][_0x20c0('0x12')]);}logger[_0x20c0('0x10')](_0x20c0('0xf'),_0x4e1dac,_0x41a4af[_0x20c0('0x10')][_0x20c0('0x12')]);return _0x4db532(_0x41a4af[_0x20c0('0x10')][_0x20c0('0x12')]);}else{logger[_0x20c0('0xe')](_0x20c0('0xf'),_0x4e1dac,'request\x20sent');_0x4db532(_0x41a4af[_0x20c0('0x13')][_0x20c0('0x12')]);}})[_0x20c0('0x14')](function(_0x46b9e5){logger[_0x20c0('0x10')](_0x20c0('0xf'),_0x4e1dac,_0x46b9e5);_0x1e35e2(_0x46b9e5);});});}
\ No newline at end of file
index 2e34189..2251012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b5=['./intSalesforceAccount.controller','isAuthenticated','get','getConfigurations','/:id/fields','getFields','post','addConfiguration','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2e816b,_0x1c68d3){var _0x93151d=function(_0x179af2){while(--_0x179af2){_0x2e816b['push'](_0x2e816b['shift']());}};_0x93151d(++_0x1c68d3);}(_0x02b5,0x11e));var _0x502b=function(_0x3ae32d,_0x3361b8){_0x3ae32d=_0x3ae32d-0x0;var _0x339dfc=_0x02b5[_0x3ae32d];return _0x339dfc;};'use strict';var multer=require(_0x502b('0x0'));var util=require(_0x502b('0x1'));var path=require(_0x502b('0x2'));var timeout=require(_0x502b('0x3'));var express=require(_0x502b('0x4'));var router=express['Router']();var auth=require(_0x502b('0x5'));var interaction=require(_0x502b('0x6'));var config=require(_0x502b('0x7'));var controller=require(_0x502b('0x8'));router['get']('/',auth[_0x502b('0x9')](),controller['index']);router[_0x502b('0xa')]('/:id',auth[_0x502b('0x9')](),controller['show']);router[_0x502b('0xa')]('/:id/configurations',auth[_0x502b('0x9')](),controller[_0x502b('0xb')]);router['get'](_0x502b('0xc'),auth[_0x502b('0x9')](),controller[_0x502b('0xd')]);router[_0x502b('0xe')]('/',auth[_0x502b('0x9')](),controller['create']);router[_0x502b('0xe')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x502b('0xf')]);router['put'](_0x502b('0x10'),auth[_0x502b('0x9')](),controller[_0x502b('0x11')]);router[_0x502b('0x12')](_0x502b('0x10'),auth[_0x502b('0x9')](),controller[_0x502b('0x13')]);module[_0x502b('0x14')]=router;
\ No newline at end of file
+var _0x9a0b=['./intSalesforceAccount.controller','index','get','/:id','isAuthenticated','show','getConfigurations','/:id/fields','getFields','create','/:id/configurations','addConfiguration','put','update','destroy','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x9a0b,0x1f3));var _0xb9a0=function(_0x23545f,_0x32837c){_0x23545f=_0x23545f-0x0;var _0x1b7da5=_0x9a0b[_0x23545f];return _0x1b7da5;};'use strict';var multer=require('multer');var util=require(_0xb9a0('0x0'));var path=require(_0xb9a0('0x1'));var timeout=require(_0xb9a0('0x2'));var express=require(_0xb9a0('0x3'));var router=express[_0xb9a0('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0xb9a0('0x5'));var config=require(_0xb9a0('0x6'));var controller=require(_0xb9a0('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xb9a0('0x8')]);router[_0xb9a0('0x9')](_0xb9a0('0xa'),auth[_0xb9a0('0xb')](),controller[_0xb9a0('0xc')]);router[_0xb9a0('0x9')]('/:id/configurations',auth[_0xb9a0('0xb')](),controller[_0xb9a0('0xd')]);router['get'](_0xb9a0('0xe'),auth[_0xb9a0('0xb')](),controller[_0xb9a0('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb9a0('0x10')]);router['post'](_0xb9a0('0x11'),auth['isAuthenticated'](),controller[_0xb9a0('0x12')]);router[_0xb9a0('0x13')]('/:id',auth[_0xb9a0('0xb')](),controller[_0xb9a0('0x14')]);router['delete'](_0xb9a0('0xa'),auth[_0xb9a0('0xb')](),controller[_0xb9a0('0x15')]);module[_0xb9a0('0x16')]=router;
\ No newline at end of file
index 205d31e..35d3000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff1=['ENUM','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0x29e83b,_0x275a30){var _0x26cf3a=function(_0x26129e){while(--_0x26129e){_0x29e83b['push'](_0x29e83b['shift']());}};_0x26cf3a(++_0x275a30);}(_0x5ff1,0x1ca));var _0x15ff=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0x5ff1[_0x3b5250];return _0xc844a1;};'use strict';var Sequelize=require(_0x15ff('0x0'));module[_0x15ff('0x1')]={'name':{'type':Sequelize[_0x15ff('0x2')]},'description':{'type':Sequelize[_0x15ff('0x2')]},'username':{'type':Sequelize[_0x15ff('0x2')],'unique':_0x15ff('0x3')},'remoteUri':{'type':Sequelize[_0x15ff('0x2')]},'password':{'type':Sequelize[_0x15ff('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x15ff('0x2')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x15ff('0x2')]},'type':{'type':Sequelize[_0x15ff('0x4')](_0x15ff('0x5'),_0x15ff('0x6')),'defaultValue':_0x15ff('0x5')}};
\ No newline at end of file
+var _0x52d9=['STRING','username','ENUM','integrationTab','newTab','exports'];(function(_0x43dc7e,_0x49a390){var _0x21e12d=function(_0x15cc1a){while(--_0x15cc1a){_0x43dc7e['push'](_0x43dc7e['shift']());}};_0x21e12d(++_0x49a390);}(_0x52d9,0x1a3));var _0x952d=function(_0x2dea58,_0x59d6f0){_0x2dea58=_0x2dea58-0x0;var _0x2b23c2=_0x52d9[_0x2dea58];return _0x2b23c2;};'use strict';var Sequelize=require('sequelize');module[_0x952d('0x0')]={'name':{'type':Sequelize[_0x952d('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x952d('0x1')],'unique':_0x952d('0x2')},'remoteUri':{'type':Sequelize[_0x952d('0x1')]},'password':{'type':Sequelize[_0x952d('0x1')]},'clientId':{'type':Sequelize[_0x952d('0x1')]},'clientSecret':{'type':Sequelize[_0x952d('0x1')]},'securityToken':{'type':Sequelize[_0x952d('0x1')]},'serverUrl':{'type':Sequelize[_0x952d('0x1')]},'type':{'type':Sequelize[_0x952d('0x3')](_0x952d('0x4'),_0x952d('0x5')),'defaultValue':_0x952d('0x4')}};
\ No newline at end of file
index 4a5a4dd..d995a3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e90=['set','destroy','end','sendStatus','stack','name','send','index','SalesforceAccount','rawAttributes','model','keys','query','dateEnd','filters','attributes','fields','length','hasOwnProperty','nolimit','limit','order','pick','dateStart','add','day','where','filter','merge','type','key','VIRTUAL','field','includeAll','include','findAll','rows','catch','show','params','intersection','find','create','update','body','getConfigurations','findOne','SalesforceConfiguration','sort','map','options','AccountId','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','Subjects','getFields','remoteUri','clientId','username','password','securityToken','Connection','clientSecret','login','sobject','Task','describe','CallObject','IsArchived','Status','Type','remove','custom','includes','label','picklistValues','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','html-pdf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','status','json','count','offset'];(function(_0x17cc87,_0x529044){var _0x273964=function(_0x4bb73c){while(--_0x4bb73c){_0x17cc87['push'](_0x17cc87['shift']());}};_0x273964(++_0x529044);}(_0x6e90,0x148));var _0x06e9=function(_0x1a1ef3,_0x2a6ba3){_0x1a1ef3=_0x1a1ef3-0x0;var _0x14f5ed=_0x6e90[_0x1a1ef3];return _0x14f5ed;};'use strict';var pdf=require(_0x06e9('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x06e9('0x1'));var jsonpatch=require(_0x06e9('0x2'));var rp=require(_0x06e9('0x3'));var moment=require(_0x06e9('0x4'));var BPromise=require(_0x06e9('0x5'));var Mustache=require('mustache');var util=require(_0x06e9('0x6'));var path=require(_0x06e9('0x7'));var sox=require(_0x06e9('0x8'));var csv=require(_0x06e9('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x06e9('0xa'));var squel=require(_0x06e9('0xb'));var crypto=require(_0x06e9('0xc'));var jsforce=require(_0x06e9('0xd'));var deskjs=require(_0x06e9('0xe'));var toCsv=require(_0x06e9('0x9'));var querystring=require('querystring');var Papa=require(_0x06e9('0xf'));var Redis=require(_0x06e9('0x10'));var qs=require(_0x06e9('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x06e9('0x12'));var config=require(_0x06e9('0x13'));var db=require(_0x06e9('0x14'))['db'];var integrations=require(_0x06e9('0x15'));var jayson=require(_0x06e9('0x16'));var client=jayson[_0x06e9('0x17')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23180c,_0x454b5c,_0x43a5df,_0x5dbac0){return new BPromise(function(_0x25b72a,_0x5d5524){var _0x598a1f=_0x5dbac0||client;return _0x598a1f[_0x06e9('0x18')](_0x23180c,_0x43a5df)[_0x06e9('0x19')](function(_0x385230){logger[_0x06e9('0x1a')](_0x06e9('0x1b'),_0x454b5c,_0x06e9('0x1c'));logger[_0x06e9('0x1d')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x454b5c,'request\x20sent',JSON[_0x06e9('0x1e')](_0x385230));if(_0x385230[_0x06e9('0x1f')]){if(_0x385230[_0x06e9('0x1f')][_0x06e9('0x20')]===0x1f4){logger['error']('SalesforceAccount,\x20%s,\x20%s',_0x454b5c,_0x385230[_0x06e9('0x1f')]['message']);return _0x5d5524(_0x385230['error'][_0x06e9('0x21')]);}logger[_0x06e9('0x1f')](_0x06e9('0x1b'),_0x454b5c,_0x385230[_0x06e9('0x1f')][_0x06e9('0x21')]);return _0x25b72a(_0x385230['error'][_0x06e9('0x21')]);}else{logger[_0x06e9('0x1a')]('SalesforceAccount,\x20%s,\x20%s',_0x454b5c,_0x06e9('0x1c'));_0x25b72a(_0x385230['result'][_0x06e9('0x21')]);}})['catch'](function(_0x590186){logger['error'](_0x06e9('0x1b'),_0x454b5c,_0x590186);_0x5d5524(_0x590186);});});}function respondWithStatusCode(_0x4f1f89,_0x3e9724){_0x3e9724=_0x3e9724||0xcc;return function(_0x4dfc6f){if(_0x4dfc6f){return _0x4f1f89['sendStatus'](_0x3e9724);}return _0x4f1f89['status'](_0x3e9724)['end']();};}function respondWithResult(_0x42313e,_0x3679f1){_0x3679f1=_0x3679f1||0xc8;return function(_0x2f6f2e){if(_0x2f6f2e){return _0x42313e[_0x06e9('0x22')](_0x3679f1)[_0x06e9('0x23')](_0x2f6f2e);}};}function respondWithFilteredResult(_0x119d47,_0x52a024){return function(_0x50e475){if(_0x50e475){var _0x471950=_0x50e475[_0x06e9('0x24')],_0x206a91=_0x52a024[_0x06e9('0x25')],_0x3b04da=_0x52a024[_0x06e9('0x25')]+_0x52a024['limit'],_0x237549;if(_0x3b04da>=_0x471950){_0x3b04da=_0x471950;_0x237549=0xc8;}else{_0x237549=0xce;}_0x119d47[_0x06e9('0x22')](_0x237549);return _0x119d47[_0x06e9('0x26')]('Content-Range',_0x206a91+'-'+_0x3b04da+'/'+_0x471950)[_0x06e9('0x23')](_0x50e475);}return null;};}function patchUpdates(_0x3f4d25){return function(_0x31d1b4){try{jsonpatch['apply'](_0x31d1b4,_0x3f4d25,!![]);}catch(_0x29b115){return BPromise['reject'](_0x29b115);}return _0x31d1b4['save']();};}function saveUpdates(_0x1731db,_0x215f4d){return function(_0x44c255){if(_0x44c255){return _0x44c255['update'](_0x1731db)['then'](function(_0x2d1185){return _0x2d1185;});}return null;};}function removeEntity(_0x4e41b5,_0x63bb5c){return function(_0x576360){if(_0x576360){return _0x576360[_0x06e9('0x27')]()[_0x06e9('0x19')](function(){_0x4e41b5['status'](0xcc)[_0x06e9('0x28')]();});}};}function handleEntityNotFound(_0x4b1f8b,_0x26bf76){return function(_0x40386c){if(!_0x40386c){_0x4b1f8b[_0x06e9('0x29')](0x194);}return _0x40386c;};}function handleError(_0x2a8c49,_0xb843c5){_0xb843c5=_0xb843c5||0x1f4;return function(_0x3b811c){logger[_0x06e9('0x1f')](_0x3b811c[_0x06e9('0x2a')]);if(_0x3b811c[_0x06e9('0x2b')]){delete _0x3b811c[_0x06e9('0x2b')];}_0x2a8c49['status'](_0xb843c5)[_0x06e9('0x2c')](_0x3b811c);};}exports[_0x06e9('0x2d')]=function(_0x24212b,_0x39d714){var _0x56fa19={},_0x17247a={},_0x198a11={'count':0x0,'rows':[]};var _0xc5f21b=db[_0x06e9('0x2e')][_0x06e9('0x2f')];_0x17247a[_0x06e9('0x30')]=_[_0x06e9('0x31')](_0xc5f21b);var _0x448632={'dateStart':_0x24212b['query']['dateStart'],'dateEnd':_0x24212b[_0x06e9('0x32')][_0x06e9('0x33')]};delete _0x24212b[_0x06e9('0x32')]['dateStart'];delete _0x24212b[_0x06e9('0x32')][_0x06e9('0x33')];_0x17247a['query']=_[_0x06e9('0x31')](_0x24212b['query']);_0x17247a[_0x06e9('0x34')]=_['intersection'](_0x17247a['model'],_0x17247a[_0x06e9('0x32')]);_0x56fa19[_0x06e9('0x35')]=_['intersection'](_0x17247a[_0x06e9('0x30')],qs[_0x06e9('0x36')](_0x24212b[_0x06e9('0x32')]['fields']));_0x56fa19[_0x06e9('0x35')]=_0x56fa19[_0x06e9('0x35')][_0x06e9('0x37')]?_0x56fa19[_0x06e9('0x35')]:_0x17247a[_0x06e9('0x30')];if(!_0x24212b[_0x06e9('0x32')][_0x06e9('0x38')](_0x06e9('0x39'))){_0x56fa19[_0x06e9('0x3a')]=qs[_0x06e9('0x3a')](_0x24212b[_0x06e9('0x32')][_0x06e9('0x3a')]);_0x56fa19[_0x06e9('0x25')]=qs[_0x06e9('0x25')](_0x24212b[_0x06e9('0x32')][_0x06e9('0x25')]);}_0x56fa19[_0x06e9('0x3b')]=qs['sort'](_0x24212b['query']['sort']);_0x56fa19['where']=qs['filters'](_[_0x06e9('0x3c')](_0x24212b['query'],_0x17247a['filters']));if(_0x448632[_0x06e9('0x3d')]){if(_0x448632[_0x06e9('0x33')]){_0x448632[_0x06e9('0x33')]=moment(_0x448632[_0x06e9('0x33')])[_0x06e9('0x3e')](0x1,'day');}else{_0x448632['dateEnd']=moment(_0x448632[_0x06e9('0x3d')])[_0x06e9('0x3e')](0x1,_0x06e9('0x3f'));}_['merge'](_0x56fa19[_0x06e9('0x40')],{'createdAt':{'$gte':_0x448632[_0x06e9('0x3d')],'$lte':_0x448632[_0x06e9('0x33')]}});}if(_0x24212b['query'][_0x06e9('0x41')]){_0x56fa19[_0x06e9('0x40')]=_[_0x06e9('0x42')](_0x56fa19[_0x06e9('0x40')],{'$or':_['map'](_0xc5f21b,function(_0x1843fb){if(_0x1843fb[_0x06e9('0x43')][_0x06e9('0x44')]!==_0x06e9('0x45')){var _0x2f2381={};_0x2f2381[_0x1843fb[_0x06e9('0x46')]]={'$like':'%'+_0x24212b[_0x06e9('0x32')]['filter']+'%'};return _0x2f2381;}})});}_0x56fa19=_[_0x06e9('0x42')]({},_0x56fa19,_0x24212b['options']);var _0xd3c5bd={'where':_0x56fa19['where']};return db['SalesforceAccount'][_0x06e9('0x24')](_0xd3c5bd)['then'](function(_0x32cebe){_0x198a11[_0x06e9('0x24')]=_0x32cebe;if(_0x24212b['query'][_0x06e9('0x47')]){_0x56fa19[_0x06e9('0x48')]=[{'all':!![]}];}return db['SalesforceAccount'][_0x06e9('0x49')](_0x56fa19);})[_0x06e9('0x19')](function(_0x1c0147){_0x198a11[_0x06e9('0x4a')]=_0x1c0147;return _0x198a11;})[_0x06e9('0x19')](respondWithFilteredResult(_0x39d714,_0x56fa19))[_0x06e9('0x4b')](handleError(_0x39d714,null));};exports[_0x06e9('0x4c')]=function(_0xa65400,_0x5064f6){var _0xe7345c={'raw':![],'where':{'id':_0xa65400[_0x06e9('0x4d')]['id']}},_0x15e445={};_0x15e445[_0x06e9('0x30')]=_[_0x06e9('0x31')](db[_0x06e9('0x2e')][_0x06e9('0x2f')]);_0x15e445[_0x06e9('0x32')]=_['keys'](_0xa65400[_0x06e9('0x32')]);_0x15e445['filters']=_[_0x06e9('0x4e')](_0x15e445[_0x06e9('0x30')],_0x15e445[_0x06e9('0x32')]);_0xe7345c[_0x06e9('0x35')]=_[_0x06e9('0x4e')](_0x15e445[_0x06e9('0x30')],qs[_0x06e9('0x36')](_0xa65400[_0x06e9('0x32')][_0x06e9('0x36')]));_0xe7345c['attributes']=_0xe7345c[_0x06e9('0x35')]['length']?_0xe7345c[_0x06e9('0x35')]:_0x15e445[_0x06e9('0x30')];if(_0xa65400[_0x06e9('0x32')][_0x06e9('0x47')]){_0xe7345c[_0x06e9('0x48')]=[{'all':!![]}];}_0xe7345c=_[_0x06e9('0x42')]({},_0xe7345c,_0xa65400['options']);return db['SalesforceAccount'][_0x06e9('0x4f')](_0xe7345c)['then'](handleEntityNotFound(_0x5064f6,null))[_0x06e9('0x19')](respondWithResult(_0x5064f6,null))['catch'](handleError(_0x5064f6,null));};exports[_0x06e9('0x50')]=function(_0x3f6a45,_0x33f4f9){return db[_0x06e9('0x2e')][_0x06e9('0x50')](_0x3f6a45['body'],{})[_0x06e9('0x19')](respondWithResult(_0x33f4f9,0xc9))[_0x06e9('0x4b')](handleError(_0x33f4f9,null));};exports[_0x06e9('0x51')]=function(_0x1476e6,_0x2ac8df){if(_0x1476e6[_0x06e9('0x52')]['id']){delete _0x1476e6[_0x06e9('0x52')]['id'];}return db['SalesforceAccount'][_0x06e9('0x4f')]({'where':{'id':_0x1476e6[_0x06e9('0x4d')]['id']}})[_0x06e9('0x19')](handleEntityNotFound(_0x2ac8df,null))[_0x06e9('0x19')](saveUpdates(_0x1476e6[_0x06e9('0x52')],null))[_0x06e9('0x19')](respondWithResult(_0x2ac8df,null))[_0x06e9('0x4b')](handleError(_0x2ac8df,null));};exports['destroy']=function(_0xdb30c0,_0x2f8040){return db['SalesforceAccount']['find']({'where':{'id':_0xdb30c0[_0x06e9('0x4d')]['id']}})[_0x06e9('0x19')](handleEntityNotFound(_0x2f8040,null))[_0x06e9('0x19')](removeEntity(_0x2f8040,null))[_0x06e9('0x4b')](handleError(_0x2f8040,null));};exports[_0x06e9('0x53')]=function(_0x2a67b2,_0xbea8b4,_0x1fad27){var _0x245bf6={};var _0x9be5a8={};var _0x1438aa;var _0x25468c;return db['SalesforceAccount'][_0x06e9('0x54')]({'where':{'id':_0x2a67b2['params']['id']}})['then'](handleEntityNotFound(_0xbea8b4,null))[_0x06e9('0x19')](function(_0x44375f){if(_0x44375f){_0x1438aa=_0x44375f;_0x9be5a8[_0x06e9('0x30')]=_['keys'](db[_0x06e9('0x55')][_0x06e9('0x2f')]);_0x9be5a8[_0x06e9('0x32')]=_[_0x06e9('0x31')](_0x2a67b2['query']);_0x9be5a8[_0x06e9('0x34')]=_[_0x06e9('0x4e')](_0x9be5a8[_0x06e9('0x30')],_0x9be5a8['query']);_0x245bf6['attributes']=_['intersection'](_0x9be5a8[_0x06e9('0x30')],qs[_0x06e9('0x36')](_0x2a67b2[_0x06e9('0x32')][_0x06e9('0x36')]));_0x245bf6[_0x06e9('0x35')]=_0x245bf6[_0x06e9('0x35')][_0x06e9('0x37')]?_0x245bf6[_0x06e9('0x35')]:_0x9be5a8[_0x06e9('0x30')];_0x245bf6[_0x06e9('0x3b')]=qs[_0x06e9('0x56')](_0x2a67b2[_0x06e9('0x32')][_0x06e9('0x56')]);_0x245bf6[_0x06e9('0x40')]=qs[_0x06e9('0x34')](_['pick'](_0x2a67b2[_0x06e9('0x32')],_0x9be5a8[_0x06e9('0x34')]));if(_0x2a67b2[_0x06e9('0x32')][_0x06e9('0x41')]){_0x245bf6[_0x06e9('0x40')]=_['merge'](_0x245bf6[_0x06e9('0x40')],{'$or':_[_0x06e9('0x57')](_0x245bf6['attributes'],function(_0x3bea11){var _0x422644={};_0x422644[_0x3bea11]={'$like':'%'+_0x2a67b2[_0x06e9('0x32')][_0x06e9('0x41')]+'%'};return _0x422644;})});}_0x245bf6=_['merge']({},_0x245bf6,_0x2a67b2[_0x06e9('0x58')]);return _0x1438aa[_0x06e9('0x53')](_0x245bf6);}})['then'](function(_0x3ae184){if(_0x3ae184){_0x25468c=_0x3ae184[_0x06e9('0x37')];if(!_0x2a67b2[_0x06e9('0x32')][_0x06e9('0x38')](_0x06e9('0x39'))){_0x245bf6['limit']=qs[_0x06e9('0x3a')](_0x2a67b2[_0x06e9('0x32')][_0x06e9('0x3a')]);_0x245bf6['offset']=qs[_0x06e9('0x25')](_0x2a67b2[_0x06e9('0x32')][_0x06e9('0x25')]);}return _0x1438aa['getConfigurations'](_0x245bf6);}})[_0x06e9('0x19')](function(_0x2ffd69){if(_0x2ffd69){return _0x2ffd69?{'count':_0x25468c,'rows':_0x2ffd69}:null;}})[_0x06e9('0x19')](respondWithResult(_0xbea8b4,null))['catch'](handleError(_0xbea8b4,null));};exports['addConfiguration']=function(_0x3d3eaa,_0x4ac394,_0x21ffe2){if(_0x3d3eaa['body']['id']){delete _0x3d3eaa['body']['id'];}return db[_0x06e9('0x2e')]['findOne']({'where':{'id':_0x3d3eaa[_0x06e9('0x4d')]['id']}})[_0x06e9('0x19')](handleEntityNotFound(_0x4ac394,null))[_0x06e9('0x19')](function(_0x342444){if(_0x342444){_0x3d3eaa[_0x06e9('0x52')][_0x06e9('0x59')]=_0x342444['id'];_0x3d3eaa[_0x06e9('0x52')]['Subjects']=integrations[_0x06e9('0x5a')](_0x3d3eaa[_0x06e9('0x52')][_0x06e9('0x5b')],_0x3d3eaa[_0x06e9('0x52')][_0x06e9('0x43')]);_0x3d3eaa[_0x06e9('0x52')][_0x06e9('0x5c')]=integrations[_0x06e9('0x5d')](_0x3d3eaa['body'][_0x06e9('0x5b')],_0x3d3eaa['body'][_0x06e9('0x43')]);return db[_0x06e9('0x55')][_0x06e9('0x50')](_0x3d3eaa[_0x06e9('0x52')],{'include':[{'model':db[_0x06e9('0x5e')],'as':_0x06e9('0x5f')},{'model':db['SalesforceField'],'as':_0x06e9('0x5c')}]});}return null;})[_0x06e9('0x19')](respondWithResult(_0x4ac394,null))[_0x06e9('0x4b')](handleError(_0x4ac394,null));};exports[_0x06e9('0x60')]=function(_0x496772,_0xbb81df,_0x443457){var _0x4ad76a;return db[_0x06e9('0x2e')][_0x06e9('0x54')]({'where':{'id':_0x496772['params']['id']},'attributes':['id',_0x06e9('0x61'),_0x06e9('0x62'),'clientSecret',_0x06e9('0x63'),_0x06e9('0x64'),_0x06e9('0x65')]})[_0x06e9('0x19')](handleEntityNotFound(_0xbb81df,null))[_0x06e9('0x19')](function(_0x21900a){if(_0x21900a){_0x4ad76a=new jsforce[(_0x06e9('0x66'))]({'oauth2':{'loginUrl':_0x21900a[_0x06e9('0x61')],'clientId':_0x21900a[_0x06e9('0x62')],'clientSecret':_0x21900a[_0x06e9('0x67')]}});return _0x4ad76a[_0x06e9('0x68')](_0x21900a[_0x06e9('0x63')],_0x21900a['password']['concat'](_0x21900a[_0x06e9('0x65')]));}})[_0x06e9('0x19')](function(_0x583cc2){if(_0x583cc2){return _0x4ad76a[_0x06e9('0x69')](_0x06e9('0x6a'))[_0x06e9('0x6b')]();}})['then'](function(_0x2b9153){var _0x425862=['CallDisposition','CallDurationInSeconds',_0x06e9('0x6c'),'CallType',_0x06e9('0x6d'),'Priority',_0x06e9('0x6e'),_0x06e9('0x6f')];if(_0x2b9153){_[_0x06e9('0x70')](_0x2b9153['fields'],function(_0x3c0310){return _0x3c0310[_0x06e9('0x71')]===![]&&!_0x425862[_0x06e9('0x72')](_0x3c0310[_0x06e9('0x2b')]);});return{'count':_0x2b9153[_0x06e9('0x36')][_0x06e9('0x37')],'rows':_['map'](_0x2b9153['fields'],function(_0x66889b){return{'id':_0x66889b[_0x06e9('0x2b')],'name':_0x66889b[_0x06e9('0x73')],'custom':_0x66889b[_0x06e9('0x71')],'options':_0x66889b[_0x06e9('0x74')]?_[_0x06e9('0x57')](_0x66889b[_0x06e9('0x74')],function(_0x3222a7){return{'name':_0x3222a7[_0x06e9('0x73')],'value':_0x3222a7[_0x06e9('0x75')]};}):[]};})};}})[_0x06e9('0x19')](respondWithResult(_0xbb81df,null))[_0x06e9('0x4b')](function(_0x8b25ae){var _0x6d8fa5=_0x496772[_0x06e9('0x32')][_0x06e9('0x76')]?0x1f4:_0x8b25ae[_0x06e9('0x77')]||0x1f4;logger['error'](_0x06e9('0x78'),_0x06e9('0x60'),_0x6d8fa5,JSON[_0x06e9('0x1e')](_0x8b25ae));delete _0x8b25ae[_0x06e9('0x2b')];if(_0x6d8fa5===0x191){_0x6d8fa5=0x190;}_0xbb81df[_0x06e9('0x22')](_0x6d8fa5)[_0x06e9('0x2c')](_0x496772[_0x06e9('0x32')]['test']?{'message':_0x06e9('0x79'),'statusCode':_0x8b25ae[_0x06e9('0x77')]}:_0x8b25ae);});};
\ No newline at end of file
+var _0x6944=['querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../components/integrations/configuration','jayson/promise','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','count','offset','limit','set','apply','reject','save','destroy','stack','name','send','SalesforceAccount','rawAttributes','model','keys','query','dateStart','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','dateEnd','add','day','filter','key','VIRTUAL','field','merge','includeAll','include','findAll','rows','show','params','length','find','create','body','update','getConfigurations','findOne','SalesforceConfiguration','map','options','addConfiguration','AccountId','getSubjects','Descriptions','getDescriptions','channel','type','Subjects','SalesforceField','getFields','remoteUri','clientSecret','username','securityToken','concat','sobject','Task','describe','CallDisposition','CallDurationInSeconds','CallObject','IsArchived','Type','remove','includes','label','custom','picklistValues','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','html-pdf','eml-format','fast-json-patch','moment','bluebird','mustache','path','sox','squel','crypto','to-csv'];(function(_0x1f04df,_0x17de78){var _0x39f4e7=function(_0x1ddbb8){while(--_0x1ddbb8){_0x1f04df['push'](_0x1f04df['shift']());}};_0x39f4e7(++_0x17de78);}(_0x6944,0x1d1));var _0x4694=function(_0x38f6ee,_0xf06a6c){_0x38f6ee=_0x38f6ee-0x0;var _0x49aeef=_0x6944[_0x38f6ee];return _0x49aeef;};'use strict';var pdf=require(_0x4694('0x0'));var emlformat=require(_0x4694('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4694('0x2'));var rp=require('request-promise');var moment=require(_0x4694('0x3'));var BPromise=require(_0x4694('0x4'));var Mustache=require(_0x4694('0x5'));var util=require('util');var path=require(_0x4694('0x6'));var sox=require(_0x4694('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x4694('0x8'));var crypto=require(_0x4694('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4694('0xa'));var querystring=require(_0x4694('0xb'));var Papa=require(_0x4694('0xc'));var Redis=require(_0x4694('0xd'));var qs=require(_0x4694('0xe'));var logger=require(_0x4694('0xf'))('api');var utils=require(_0x4694('0x10'));var config=require(_0x4694('0x11'));var db=require('../../mysqldb')['db'];var integrations=require(_0x4694('0x12'));var jayson=require(_0x4694('0x13'));var client=jayson[_0x4694('0x14')][_0x4694('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x1d765c,_0x477bb1,_0x20fbc6,_0x505acd){return new BPromise(function(_0x37c357,_0x243244){var _0x2206c0=_0x505acd||client;return _0x2206c0[_0x4694('0x16')](_0x1d765c,_0x20fbc6)[_0x4694('0x17')](function(_0x269748){logger[_0x4694('0x18')](_0x4694('0x19'),_0x477bb1,_0x4694('0x1a'));logger['debug']('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x477bb1,_0x4694('0x1a'),JSON[_0x4694('0x1b')](_0x269748));if(_0x269748[_0x4694('0x1c')]){if(_0x269748['error']['code']===0x1f4){logger['error'](_0x4694('0x19'),_0x477bb1,_0x269748[_0x4694('0x1c')][_0x4694('0x1d')]);return _0x243244(_0x269748['error']['message']);}logger[_0x4694('0x1c')](_0x4694('0x19'),_0x477bb1,_0x269748['error'][_0x4694('0x1d')]);return _0x37c357(_0x269748[_0x4694('0x1c')]['message']);}else{logger['info'](_0x4694('0x19'),_0x477bb1,'request\x20sent');_0x37c357(_0x269748[_0x4694('0x1e')][_0x4694('0x1d')]);}})[_0x4694('0x1f')](function(_0x5f59fb){logger[_0x4694('0x1c')]('SalesforceAccount,\x20%s,\x20%s',_0x477bb1,_0x5f59fb);_0x243244(_0x5f59fb);});});}function respondWithStatusCode(_0x2ada10,_0x591551){_0x591551=_0x591551||0xcc;return function(_0x2eaeaa){if(_0x2eaeaa){return _0x2ada10[_0x4694('0x20')](_0x591551);}return _0x2ada10[_0x4694('0x21')](_0x591551)[_0x4694('0x22')]();};}function respondWithResult(_0x56d10e,_0x34c010){_0x34c010=_0x34c010||0xc8;return function(_0x21a42a){if(_0x21a42a){return _0x56d10e['status'](_0x34c010)['json'](_0x21a42a);}};}function respondWithFilteredResult(_0xeecd13,_0x8afaf7){return function(_0x39371b){if(_0x39371b){var _0x1c24f9=_0x39371b[_0x4694('0x23')],_0x3ff9d0=_0x8afaf7[_0x4694('0x24')],_0x5a455d=_0x8afaf7[_0x4694('0x24')]+_0x8afaf7[_0x4694('0x25')],_0x132b0d;if(_0x5a455d>=_0x1c24f9){_0x5a455d=_0x1c24f9;_0x132b0d=0xc8;}else{_0x132b0d=0xce;}_0xeecd13[_0x4694('0x21')](_0x132b0d);return _0xeecd13[_0x4694('0x26')]('Content-Range',_0x3ff9d0+'-'+_0x5a455d+'/'+_0x1c24f9)['json'](_0x39371b);}return null;};}function patchUpdates(_0x44b4eb){return function(_0xc610f8){try{jsonpatch[_0x4694('0x27')](_0xc610f8,_0x44b4eb,!![]);}catch(_0x1ee15c){return BPromise[_0x4694('0x28')](_0x1ee15c);}return _0xc610f8[_0x4694('0x29')]();};}function saveUpdates(_0x5a07ca,_0xf59feb){return function(_0x130ab8){if(_0x130ab8){return _0x130ab8['update'](_0x5a07ca)[_0x4694('0x17')](function(_0x366796){return _0x366796;});}return null;};}function removeEntity(_0x18ae87,_0x39152d){return function(_0x319e45){if(_0x319e45){return _0x319e45[_0x4694('0x2a')]()[_0x4694('0x17')](function(){_0x18ae87['status'](0xcc)[_0x4694('0x22')]();});}};}function handleEntityNotFound(_0x536d5a,_0x2601d9){return function(_0x481dd0){if(!_0x481dd0){_0x536d5a[_0x4694('0x20')](0x194);}return _0x481dd0;};}function handleError(_0x373c29,_0x24d8d0){_0x24d8d0=_0x24d8d0||0x1f4;return function(_0x51790a){logger[_0x4694('0x1c')](_0x51790a[_0x4694('0x2b')]);if(_0x51790a[_0x4694('0x2c')]){delete _0x51790a['name'];}_0x373c29[_0x4694('0x21')](_0x24d8d0)[_0x4694('0x2d')](_0x51790a);};}exports['index']=function(_0x55b8aa,_0x1af406){var _0x4e9e96={},_0x1cc274={},_0x2343d0={'count':0x0,'rows':[]};var _0x5eaeee=db[_0x4694('0x2e')][_0x4694('0x2f')];_0x1cc274[_0x4694('0x30')]=_[_0x4694('0x31')](_0x5eaeee);var _0x38b9e6={'dateStart':_0x55b8aa[_0x4694('0x32')]['dateStart'],'dateEnd':_0x55b8aa['query']['dateEnd']};delete _0x55b8aa['query'][_0x4694('0x33')];delete _0x55b8aa['query']['dateEnd'];_0x1cc274[_0x4694('0x32')]=_[_0x4694('0x31')](_0x55b8aa[_0x4694('0x32')]);_0x1cc274[_0x4694('0x34')]=_['intersection'](_0x1cc274[_0x4694('0x30')],_0x1cc274[_0x4694('0x32')]);_0x4e9e96[_0x4694('0x35')]=_[_0x4694('0x36')](_0x1cc274['model'],qs['fields'](_0x55b8aa[_0x4694('0x32')][_0x4694('0x37')]));_0x4e9e96[_0x4694('0x35')]=_0x4e9e96[_0x4694('0x35')]['length']?_0x4e9e96[_0x4694('0x35')]:_0x1cc274[_0x4694('0x30')];if(!_0x55b8aa[_0x4694('0x32')][_0x4694('0x38')](_0x4694('0x39'))){_0x4e9e96[_0x4694('0x25')]=qs['limit'](_0x55b8aa['query'][_0x4694('0x25')]);_0x4e9e96['offset']=qs[_0x4694('0x24')](_0x55b8aa[_0x4694('0x32')]['offset']);}_0x4e9e96[_0x4694('0x3a')]=qs[_0x4694('0x3b')](_0x55b8aa[_0x4694('0x32')][_0x4694('0x3b')]);_0x4e9e96[_0x4694('0x3c')]=qs[_0x4694('0x34')](_[_0x4694('0x3d')](_0x55b8aa[_0x4694('0x32')],_0x1cc274[_0x4694('0x34')]));if(_0x38b9e6[_0x4694('0x33')]){if(_0x38b9e6[_0x4694('0x3e')]){_0x38b9e6[_0x4694('0x3e')]=moment(_0x38b9e6[_0x4694('0x3e')])[_0x4694('0x3f')](0x1,'day');}else{_0x38b9e6[_0x4694('0x3e')]=moment(_0x38b9e6[_0x4694('0x33')])[_0x4694('0x3f')](0x1,_0x4694('0x40'));}_['merge'](_0x4e9e96[_0x4694('0x3c')],{'createdAt':{'$gte':_0x38b9e6[_0x4694('0x33')],'$lte':_0x38b9e6['dateEnd']}});}if(_0x55b8aa['query'][_0x4694('0x41')]){_0x4e9e96[_0x4694('0x3c')]=_['merge'](_0x4e9e96[_0x4694('0x3c')],{'$or':_['map'](_0x5eaeee,function(_0x32be02){if(_0x32be02['type'][_0x4694('0x42')]!==_0x4694('0x43')){var _0x5066f4={};_0x5066f4[_0x32be02[_0x4694('0x44')]]={'$like':'%'+_0x55b8aa[_0x4694('0x32')]['filter']+'%'};return _0x5066f4;}})});}_0x4e9e96=_[_0x4694('0x45')]({},_0x4e9e96,_0x55b8aa['options']);var _0x43d6bf={'where':_0x4e9e96[_0x4694('0x3c')]};return db[_0x4694('0x2e')]['count'](_0x43d6bf)[_0x4694('0x17')](function(_0x224991){_0x2343d0[_0x4694('0x23')]=_0x224991;if(_0x55b8aa['query'][_0x4694('0x46')]){_0x4e9e96[_0x4694('0x47')]=[{'all':!![]}];}return db[_0x4694('0x2e')][_0x4694('0x48')](_0x4e9e96);})[_0x4694('0x17')](function(_0x55650d){_0x2343d0[_0x4694('0x49')]=_0x55650d;return _0x2343d0;})[_0x4694('0x17')](respondWithFilteredResult(_0x1af406,_0x4e9e96))[_0x4694('0x1f')](handleError(_0x1af406,null));};exports[_0x4694('0x4a')]=function(_0x18729b,_0x15bf00){var _0x577034={'raw':![],'where':{'id':_0x18729b[_0x4694('0x4b')]['id']}},_0x4a0ab2={};_0x4a0ab2['model']=_['keys'](db[_0x4694('0x2e')]['rawAttributes']);_0x4a0ab2[_0x4694('0x32')]=_[_0x4694('0x31')](_0x18729b[_0x4694('0x32')]);_0x4a0ab2[_0x4694('0x34')]=_[_0x4694('0x36')](_0x4a0ab2['model'],_0x4a0ab2[_0x4694('0x32')]);_0x577034[_0x4694('0x35')]=_[_0x4694('0x36')](_0x4a0ab2[_0x4694('0x30')],qs[_0x4694('0x37')](_0x18729b[_0x4694('0x32')]['fields']));_0x577034[_0x4694('0x35')]=_0x577034[_0x4694('0x35')][_0x4694('0x4c')]?_0x577034['attributes']:_0x4a0ab2[_0x4694('0x30')];if(_0x18729b[_0x4694('0x32')][_0x4694('0x46')]){_0x577034['include']=[{'all':!![]}];}_0x577034=_[_0x4694('0x45')]({},_0x577034,_0x18729b['options']);return db['SalesforceAccount'][_0x4694('0x4d')](_0x577034)[_0x4694('0x17')](handleEntityNotFound(_0x15bf00,null))[_0x4694('0x17')](respondWithResult(_0x15bf00,null))['catch'](handleError(_0x15bf00,null));};exports['create']=function(_0x311467,_0x3b0164){return db[_0x4694('0x2e')][_0x4694('0x4e')](_0x311467[_0x4694('0x4f')],{})[_0x4694('0x17')](respondWithResult(_0x3b0164,0xc9))[_0x4694('0x1f')](handleError(_0x3b0164,null));};exports[_0x4694('0x50')]=function(_0x4f65cb,_0xf232a9){if(_0x4f65cb[_0x4694('0x4f')]['id']){delete _0x4f65cb[_0x4694('0x4f')]['id'];}return db[_0x4694('0x2e')]['find']({'where':{'id':_0x4f65cb[_0x4694('0x4b')]['id']}})[_0x4694('0x17')](handleEntityNotFound(_0xf232a9,null))[_0x4694('0x17')](saveUpdates(_0x4f65cb[_0x4694('0x4f')],null))[_0x4694('0x17')](respondWithResult(_0xf232a9,null))['catch'](handleError(_0xf232a9,null));};exports['destroy']=function(_0x5bd30e,_0x19e52a){return db[_0x4694('0x2e')][_0x4694('0x4d')]({'where':{'id':_0x5bd30e[_0x4694('0x4b')]['id']}})['then'](handleEntityNotFound(_0x19e52a,null))[_0x4694('0x17')](removeEntity(_0x19e52a,null))[_0x4694('0x1f')](handleError(_0x19e52a,null));};exports[_0x4694('0x51')]=function(_0x43f796,_0x390ae6,_0x17f1b6){var _0x4e26be={};var _0x303c4c={};var _0x114e9a;var _0x205acb;return db[_0x4694('0x2e')][_0x4694('0x52')]({'where':{'id':_0x43f796[_0x4694('0x4b')]['id']}})[_0x4694('0x17')](handleEntityNotFound(_0x390ae6,null))[_0x4694('0x17')](function(_0xb8a28f){if(_0xb8a28f){_0x114e9a=_0xb8a28f;_0x303c4c[_0x4694('0x30')]=_[_0x4694('0x31')](db[_0x4694('0x53')]['rawAttributes']);_0x303c4c[_0x4694('0x32')]=_[_0x4694('0x31')](_0x43f796[_0x4694('0x32')]);_0x303c4c['filters']=_[_0x4694('0x36')](_0x303c4c[_0x4694('0x30')],_0x303c4c[_0x4694('0x32')]);_0x4e26be[_0x4694('0x35')]=_['intersection'](_0x303c4c[_0x4694('0x30')],qs[_0x4694('0x37')](_0x43f796['query']['fields']));_0x4e26be['attributes']=_0x4e26be['attributes'][_0x4694('0x4c')]?_0x4e26be[_0x4694('0x35')]:_0x303c4c[_0x4694('0x30')];_0x4e26be[_0x4694('0x3a')]=qs[_0x4694('0x3b')](_0x43f796[_0x4694('0x32')][_0x4694('0x3b')]);_0x4e26be[_0x4694('0x3c')]=qs[_0x4694('0x34')](_['pick'](_0x43f796['query'],_0x303c4c[_0x4694('0x34')]));if(_0x43f796['query'][_0x4694('0x41')]){_0x4e26be[_0x4694('0x3c')]=_[_0x4694('0x45')](_0x4e26be['where'],{'$or':_[_0x4694('0x54')](_0x4e26be[_0x4694('0x35')],function(_0x9532b0){var _0x502423={};_0x502423[_0x9532b0]={'$like':'%'+_0x43f796[_0x4694('0x32')][_0x4694('0x41')]+'%'};return _0x502423;})});}_0x4e26be=_[_0x4694('0x45')]({},_0x4e26be,_0x43f796[_0x4694('0x55')]);return _0x114e9a['getConfigurations'](_0x4e26be);}})['then'](function(_0x193625){if(_0x193625){_0x205acb=_0x193625[_0x4694('0x4c')];if(!_0x43f796['query'][_0x4694('0x38')]('nolimit')){_0x4e26be[_0x4694('0x25')]=qs[_0x4694('0x25')](_0x43f796['query'][_0x4694('0x25')]);_0x4e26be['offset']=qs['offset'](_0x43f796[_0x4694('0x32')]['offset']);}return _0x114e9a[_0x4694('0x51')](_0x4e26be);}})[_0x4694('0x17')](function(_0x7302c8){if(_0x7302c8){return _0x7302c8?{'count':_0x205acb,'rows':_0x7302c8}:null;}})[_0x4694('0x17')](respondWithResult(_0x390ae6,null))['catch'](handleError(_0x390ae6,null));};exports[_0x4694('0x56')]=function(_0x365231,_0x1da2af,_0x2d7bda){if(_0x365231[_0x4694('0x4f')]['id']){delete _0x365231[_0x4694('0x4f')]['id'];}return db[_0x4694('0x2e')][_0x4694('0x52')]({'where':{'id':_0x365231['params']['id']}})[_0x4694('0x17')](handleEntityNotFound(_0x1da2af,null))[_0x4694('0x17')](function(_0x108936){if(_0x108936){_0x365231[_0x4694('0x4f')][_0x4694('0x57')]=_0x108936['id'];_0x365231[_0x4694('0x4f')]['Subjects']=integrations[_0x4694('0x58')](_0x365231[_0x4694('0x4f')]['channel'],_0x365231[_0x4694('0x4f')]['type']);_0x365231[_0x4694('0x4f')][_0x4694('0x59')]=integrations[_0x4694('0x5a')](_0x365231[_0x4694('0x4f')][_0x4694('0x5b')],_0x365231['body'][_0x4694('0x5c')]);return db['SalesforceConfiguration'][_0x4694('0x4e')](_0x365231['body'],{'include':[{'model':db['SalesforceField'],'as':_0x4694('0x5d')},{'model':db[_0x4694('0x5e')],'as':_0x4694('0x59')}]});}return null;})[_0x4694('0x17')](respondWithResult(_0x1da2af,null))[_0x4694('0x1f')](handleError(_0x1da2af,null));};exports[_0x4694('0x5f')]=function(_0x152cd5,_0x595fbd,_0x5515fb){var _0x382a18;return db['SalesforceAccount']['findOne']({'where':{'id':_0x152cd5['params']['id']},'attributes':['id',_0x4694('0x60'),'clientId',_0x4694('0x61'),_0x4694('0x62'),'password',_0x4694('0x63')]})[_0x4694('0x17')](handleEntityNotFound(_0x595fbd,null))['then'](function(_0x90127c){if(_0x90127c){_0x382a18=new jsforce['Connection']({'oauth2':{'loginUrl':_0x90127c[_0x4694('0x60')],'clientId':_0x90127c['clientId'],'clientSecret':_0x90127c[_0x4694('0x61')]}});return _0x382a18['login'](_0x90127c[_0x4694('0x62')],_0x90127c['password'][_0x4694('0x64')](_0x90127c[_0x4694('0x63')]));}})[_0x4694('0x17')](function(_0x532f12){if(_0x532f12){return _0x382a18[_0x4694('0x65')](_0x4694('0x66'))[_0x4694('0x67')]();}})[_0x4694('0x17')](function(_0x47540d){var _0x14b8fc=[_0x4694('0x68'),_0x4694('0x69'),_0x4694('0x6a'),'CallType',_0x4694('0x6b'),'Priority','Status',_0x4694('0x6c')];if(_0x47540d){_[_0x4694('0x6d')](_0x47540d[_0x4694('0x37')],function(_0x3475c5){return _0x3475c5['custom']===![]&&!_0x14b8fc[_0x4694('0x6e')](_0x3475c5[_0x4694('0x2c')]);});return{'count':_0x47540d[_0x4694('0x37')][_0x4694('0x4c')],'rows':_[_0x4694('0x54')](_0x47540d[_0x4694('0x37')],function(_0x59f595){return{'id':_0x59f595[_0x4694('0x2c')],'name':_0x59f595[_0x4694('0x6f')],'custom':_0x59f595[_0x4694('0x70')],'options':_0x59f595[_0x4694('0x71')]?_[_0x4694('0x54')](_0x59f595['picklistValues'],function(_0x4f9e24){return{'name':_0x4f9e24[_0x4694('0x6f')],'value':_0x4f9e24[_0x4694('0x72')]};}):[]};})};}})['then'](respondWithResult(_0x595fbd,null))[_0x4694('0x1f')](function(_0x5f4872){var _0xa93787=_0x152cd5[_0x4694('0x32')][_0x4694('0x73')]?0x1f4:_0x5f4872[_0x4694('0x74')]||0x1f4;logger[_0x4694('0x1c')](_0x4694('0x75'),_0x4694('0x5f'),_0xa93787,JSON[_0x4694('0x1b')](_0x5f4872));delete _0x5f4872[_0x4694('0x2c')];if(_0xa93787===0x191){_0xa93787=0x190;}_0x595fbd[_0x4694('0x21')](_0xa93787)[_0x4694('0x2d')](_0x152cd5[_0x4694('0x32')]['test']?{'message':_0x4694('0x76'),'statusCode':_0x5f4872[_0x4694('0x74')]}:_0x5f4872);});};
\ No newline at end of file
index 95da756..5a29eb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd286=['lodash','../../config/logger','api','moment','bluebird','request-promise','./intSalesforceAccount.attributes','../../components/integrations/configuration','define','int_salesforce_accounts'];(function(_0x604fe7,_0x1f8426){var _0x212bb9=function(_0x37d6b0){while(--_0x37d6b0){_0x604fe7['push'](_0x604fe7['shift']());}};_0x212bb9(++_0x1f8426);}(_0xd286,0x168));var _0x6d28=function(_0x45518f,_0x475a6b){_0x45518f=_0x45518f-0x0;var _0x198175=_0xd286[_0x45518f];return _0x198175;};'use strict';var _=require(_0x6d28('0x0'));var util=require('util');var logger=require(_0x6d28('0x1'))(_0x6d28('0x2'));var moment=require(_0x6d28('0x3'));var BPromise=require(_0x6d28('0x4'));var rp=require(_0x6d28('0x5'));var attributes=require(_0x6d28('0x6'));var integrations=require(_0x6d28('0x7'));module['exports']=function(_0x5b489f,_0x53d1b2){return _0x5b489f[_0x6d28('0x8')]('SalesforceAccount',attributes,{'tableName':_0x6d28('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8d20=['moment','bluebird','request-promise','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','util','../../config/logger','api'];(function(_0x3caa66,_0x48f53b){var _0x3b63e2=function(_0x3a4712){while(--_0x3a4712){_0x3caa66['push'](_0x3caa66['shift']());}};_0x3b63e2(++_0x48f53b);}(_0x8d20,0x1c5));var _0x08d2=function(_0x2a9ffa,_0x2b4ce4){_0x2a9ffa=_0x2a9ffa-0x0;var _0x1acd17=_0x8d20[_0x2a9ffa];return _0x1acd17;};'use strict';var _=require('lodash');var util=require(_0x08d2('0x0'));var logger=require(_0x08d2('0x1'))(_0x08d2('0x2'));var moment=require(_0x08d2('0x3'));var BPromise=require(_0x08d2('0x4'));var rp=require(_0x08d2('0x5'));var attributes=require(_0x08d2('0x6'));var integrations=require(_0x08d2('0x7'));module[_0x08d2('0x8')]=function(_0x480a7c,_0x2e07a0){return _0x480a7c[_0x08d2('0x9')](_0x08d2('0xa'),attributes,{'tableName':_0x08d2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a18191a..34b1639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c00=['ShowSalesforceAccount','SalesforceAccount','find','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetSalesforceAccount','findAll','options','raw','where','limit','map','model','attributes','include'];(function(_0x3cf9f5,_0x316df1){var _0x38f98c=function(_0x265359){while(--_0x265359){_0x3cf9f5['push'](_0x3cf9f5['shift']());}};_0x38f98c(++_0x316df1);}(_0x9c00,0x1ed));var _0x09c0=function(_0x2de66b,_0x33ae0c){_0x2de66b=_0x2de66b-0x0;var _0x19c1ea=_0x9c00[_0x2de66b];return _0x19c1ea;};'use strict';var _=require(_0x09c0('0x0'));var util=require(_0x09c0('0x1'));var moment=require(_0x09c0('0x2'));var BPromise=require(_0x09c0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x09c0('0x4'))['db'];var utils=require(_0x09c0('0x5'));var logger=require(_0x09c0('0x6'))(_0x09c0('0x7'));var config=require(_0x09c0('0x8'));var jayson=require(_0x09c0('0x9'));var client=jayson['client'][_0x09c0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d3dae,_0x3f28da,_0x1d0a35){return new BPromise(function(_0x401a84,_0x34eb5c){return client[_0x09c0('0xb')](_0x5d3dae,_0x1d0a35)[_0x09c0('0xc')](function(_0x329288){logger[_0x09c0('0xd')](_0x09c0('0xe'),_0x3f28da,_0x09c0('0xf'));logger['debug']('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x3f28da,_0x09c0('0xf'),JSON[_0x09c0('0x10')](_0x329288));if(_0x329288['error']){if(_0x329288[_0x09c0('0x11')][_0x09c0('0x12')]===0x1f4){logger[_0x09c0('0x11')]('SalesforceAccount,\x20%s,\x20%s',_0x3f28da,_0x329288[_0x09c0('0x11')]['message']);return _0x34eb5c(_0x329288[_0x09c0('0x11')][_0x09c0('0x13')]);}logger[_0x09c0('0x11')]('SalesforceAccount,\x20%s,\x20%s',_0x3f28da,_0x329288[_0x09c0('0x11')][_0x09c0('0x13')]);return _0x401a84(_0x329288[_0x09c0('0x11')]['message']);}else{logger['info'](_0x09c0('0xe'),_0x3f28da,'request\x20sent');_0x401a84(_0x329288[_0x09c0('0x14')]['message']);}})[_0x09c0('0x15')](function(_0x304198){logger[_0x09c0('0x11')](_0x09c0('0xe'),_0x3f28da,_0x304198);_0x34eb5c(_0x304198);});});}exports[_0x09c0('0x16')]=function(_0x1a991a){var _0x1bdde7=this;return new Promise(function(_0x34676e,_0x3426de){return db['SalesforceAccount'][_0x09c0('0x17')]({'raw':_0x1a991a[_0x09c0('0x18')]?_0x1a991a[_0x09c0('0x18')][_0x09c0('0x19')]===undefined?!![]:![]:!![],'where':_0x1a991a['options']?_0x1a991a['options'][_0x09c0('0x1a')]||null:null,'attributes':_0x1a991a[_0x09c0('0x18')]?_0x1a991a[_0x09c0('0x18')]['attributes']||null:null,'limit':_0x1a991a['options']?_0x1a991a[_0x09c0('0x18')][_0x09c0('0x1b')]||null:null,'include':_0x1a991a[_0x09c0('0x18')]?_0x1a991a['options']['include']?_[_0x09c0('0x1c')](_0x1a991a[_0x09c0('0x18')]['include'],function(_0x298adb){return{'model':db[_0x298adb[_0x09c0('0x1d')]],'as':_0x298adb['as'],'attributes':_0x298adb[_0x09c0('0x1e')],'include':_0x298adb[_0x09c0('0x1f')]?_[_0x09c0('0x1c')](_0x298adb[_0x09c0('0x1f')],function(_0x47011c){return{'model':db[_0x47011c[_0x09c0('0x1d')]],'as':_0x47011c['as'],'attributes':_0x47011c[_0x09c0('0x1e')],'include':_0x47011c[_0x09c0('0x1f')]?_[_0x09c0('0x1c')](_0x47011c[_0x09c0('0x1f')],function(_0xb10aff){return{'model':db[_0xb10aff['model']],'as':_0xb10aff['as'],'attributes':_0xb10aff[_0x09c0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x09c0('0xc')](function(_0x28bb49){logger[_0x09c0('0xd')]('GetSalesforceAccount',_0x1a991a);logger['debug'](_0x09c0('0x16'),_0x1a991a,JSON['stringify'](_0x28bb49));_0x34676e(_0x28bb49);})['catch'](function(_0x581a1d){logger[_0x09c0('0x11')](_0x09c0('0x16'),_0x581a1d[_0x09c0('0x13')],_0x1a991a);_0x3426de(_0x1bdde7[_0x09c0('0x11')](0x1f4,_0x581a1d[_0x09c0('0x13')]));});});};exports[_0x09c0('0x20')]=function(_0x197d04){var _0x29b6e1=this;return new Promise(function(_0x2c3ac5,_0x42a070){return db[_0x09c0('0x21')][_0x09c0('0x22')]({'raw':_0x197d04[_0x09c0('0x18')]?_0x197d04['options']['raw']===undefined?!![]:![]:!![],'where':_0x197d04[_0x09c0('0x18')]?_0x197d04[_0x09c0('0x18')][_0x09c0('0x1a')]||null:null,'attributes':_0x197d04[_0x09c0('0x18')]?_0x197d04[_0x09c0('0x18')]['attributes']||null:null,'include':_0x197d04[_0x09c0('0x18')]?_0x197d04[_0x09c0('0x18')]['include']?_[_0x09c0('0x1c')](_0x197d04[_0x09c0('0x18')]['include'],function(_0x2d4a37){return{'model':db[_0x2d4a37[_0x09c0('0x1d')]],'as':_0x2d4a37['as'],'attributes':_0x2d4a37[_0x09c0('0x1e')],'include':_0x2d4a37['include']?_[_0x09c0('0x1c')](_0x2d4a37[_0x09c0('0x1f')],function(_0x45f93c){return{'model':db[_0x45f93c['model']],'as':_0x45f93c['as'],'attributes':_0x45f93c[_0x09c0('0x1e')],'include':_0x45f93c[_0x09c0('0x1f')]?_[_0x09c0('0x1c')](_0x45f93c[_0x09c0('0x1f')],function(_0x5698d1){return{'model':db[_0x5698d1[_0x09c0('0x1d')]],'as':_0x5698d1['as'],'attributes':_0x5698d1['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x346461){logger['info'](_0x09c0('0x20'),_0x197d04);logger['debug'](_0x09c0('0x20'),_0x197d04,JSON[_0x09c0('0x10')](_0x346461));_0x2c3ac5(_0x346461);})[_0x09c0('0x15')](function(_0x43d3be){logger['error'](_0x09c0('0x20'),_0x43d3be[_0x09c0('0x13')],_0x197d04);_0x42a070(_0x29b6e1[_0x09c0('0x11')](0x1f4,_0x43d3be['message']));});});};
\ No newline at end of file
+var _0x0ef7=['code','message','request\x20sent','result','catch','SalesforceAccount','findAll','options','raw','where','attributes','limit','map','include','model','GetSalesforceAccount','ShowSalesforceAccount','find','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error'];(function(_0x1dee14,_0x276383){var _0x1cb726=function(_0x21dc60){while(--_0x21dc60){_0x1dee14['push'](_0x1dee14['shift']());}};_0x1cb726(++_0x276383);}(_0x0ef7,0xc2));var _0x70ef=function(_0x5027b1,_0x1409a5){_0x5027b1=_0x5027b1-0x0;var _0x4a46cf=_0x0ef7[_0x5027b1];return _0x4a46cf;};'use strict';var _=require('lodash');var util=require(_0x70ef('0x0'));var moment=require(_0x70ef('0x1'));var BPromise=require(_0x70ef('0x2'));var rs=require(_0x70ef('0x3'));var fs=require('fs');var Redis=require(_0x70ef('0x4'));var db=require(_0x70ef('0x5'))['db'];var utils=require(_0x70ef('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x70ef('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x70ef('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1a8666,_0x2c3b96,_0x1773c4){return new BPromise(function(_0xcbbc9a,_0x37db29){return client[_0x70ef('0x9')](_0x1a8666,_0x1773c4)[_0x70ef('0xa')](function(_0x40fe44){logger[_0x70ef('0xb')](_0x70ef('0xc'),_0x2c3b96,'request\x20sent');logger[_0x70ef('0xd')](_0x70ef('0xe'),_0x2c3b96,'request\x20sent',JSON['stringify'](_0x40fe44));if(_0x40fe44['error']){if(_0x40fe44[_0x70ef('0xf')][_0x70ef('0x10')]===0x1f4){logger[_0x70ef('0xf')](_0x70ef('0xc'),_0x2c3b96,_0x40fe44[_0x70ef('0xf')][_0x70ef('0x11')]);return _0x37db29(_0x40fe44[_0x70ef('0xf')][_0x70ef('0x11')]);}logger[_0x70ef('0xf')](_0x70ef('0xc'),_0x2c3b96,_0x40fe44[_0x70ef('0xf')][_0x70ef('0x11')]);return _0xcbbc9a(_0x40fe44['error'][_0x70ef('0x11')]);}else{logger[_0x70ef('0xb')](_0x70ef('0xc'),_0x2c3b96,_0x70ef('0x12'));_0xcbbc9a(_0x40fe44[_0x70ef('0x13')][_0x70ef('0x11')]);}})[_0x70ef('0x14')](function(_0x361901){logger['error']('SalesforceAccount,\x20%s,\x20%s',_0x2c3b96,_0x361901);_0x37db29(_0x361901);});});}exports['GetSalesforceAccount']=function(_0x4b7ed9){var _0x446394=this;return new Promise(function(_0xdff6d0,_0xfb4d6a){return db[_0x70ef('0x15')][_0x70ef('0x16')]({'raw':_0x4b7ed9[_0x70ef('0x17')]?_0x4b7ed9[_0x70ef('0x17')][_0x70ef('0x18')]===undefined?!![]:![]:!![],'where':_0x4b7ed9[_0x70ef('0x17')]?_0x4b7ed9[_0x70ef('0x17')][_0x70ef('0x19')]||null:null,'attributes':_0x4b7ed9['options']?_0x4b7ed9['options'][_0x70ef('0x1a')]||null:null,'limit':_0x4b7ed9[_0x70ef('0x17')]?_0x4b7ed9[_0x70ef('0x17')][_0x70ef('0x1b')]||null:null,'include':_0x4b7ed9[_0x70ef('0x17')]?_0x4b7ed9['options']['include']?_[_0x70ef('0x1c')](_0x4b7ed9[_0x70ef('0x17')][_0x70ef('0x1d')],function(_0xb8762){return{'model':db[_0xb8762[_0x70ef('0x1e')]],'as':_0xb8762['as'],'attributes':_0xb8762[_0x70ef('0x1a')],'include':_0xb8762[_0x70ef('0x1d')]?_[_0x70ef('0x1c')](_0xb8762[_0x70ef('0x1d')],function(_0x4ff3c9){return{'model':db[_0x4ff3c9[_0x70ef('0x1e')]],'as':_0x4ff3c9['as'],'attributes':_0x4ff3c9[_0x70ef('0x1a')],'include':_0x4ff3c9[_0x70ef('0x1d')]?_[_0x70ef('0x1c')](_0x4ff3c9[_0x70ef('0x1d')],function(_0x24e140){return{'model':db[_0x24e140[_0x70ef('0x1e')]],'as':_0x24e140['as'],'attributes':_0x24e140[_0x70ef('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x70ef('0xa')](function(_0x4924c4){logger['info'](_0x70ef('0x1f'),_0x4b7ed9);logger[_0x70ef('0xd')](_0x70ef('0x1f'),_0x4b7ed9,JSON['stringify'](_0x4924c4));_0xdff6d0(_0x4924c4);})[_0x70ef('0x14')](function(_0x6a245d){logger[_0x70ef('0xf')](_0x70ef('0x1f'),_0x6a245d[_0x70ef('0x11')],_0x4b7ed9);_0xfb4d6a(_0x446394[_0x70ef('0xf')](0x1f4,_0x6a245d[_0x70ef('0x11')]));});});};exports[_0x70ef('0x20')]=function(_0x365341){var _0x56f759=this;return new Promise(function(_0x215c4d,_0x1c5a5e){return db[_0x70ef('0x15')][_0x70ef('0x21')]({'raw':_0x365341['options']?_0x365341[_0x70ef('0x17')][_0x70ef('0x18')]===undefined?!![]:![]:!![],'where':_0x365341[_0x70ef('0x17')]?_0x365341[_0x70ef('0x17')][_0x70ef('0x19')]||null:null,'attributes':_0x365341['options']?_0x365341[_0x70ef('0x17')][_0x70ef('0x1a')]||null:null,'include':_0x365341[_0x70ef('0x17')]?_0x365341[_0x70ef('0x17')]['include']?_[_0x70ef('0x1c')](_0x365341[_0x70ef('0x17')][_0x70ef('0x1d')],function(_0x154972){return{'model':db[_0x154972[_0x70ef('0x1e')]],'as':_0x154972['as'],'attributes':_0x154972[_0x70ef('0x1a')],'include':_0x154972[_0x70ef('0x1d')]?_['map'](_0x154972['include'],function(_0x164359){return{'model':db[_0x164359['model']],'as':_0x164359['as'],'attributes':_0x164359[_0x70ef('0x1a')],'include':_0x164359[_0x70ef('0x1d')]?_[_0x70ef('0x1c')](_0x164359[_0x70ef('0x1d')],function(_0x1318ad){return{'model':db[_0x1318ad[_0x70ef('0x1e')]],'as':_0x1318ad['as'],'attributes':_0x1318ad[_0x70ef('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x70ef('0xa')](function(_0x5defdd){logger[_0x70ef('0xb')](_0x70ef('0x20'),_0x365341);logger[_0x70ef('0xd')](_0x70ef('0x20'),_0x365341,JSON[_0x70ef('0x22')](_0x5defdd));_0x215c4d(_0x5defdd);})['catch'](function(_0x1d117e){logger['error'](_0x70ef('0x20'),_0x1d117e['message'],_0x365341);_0x1c5a5e(_0x56f759['error'](0x1f4,_0x1d117e['message']));});});};
\ No newline at end of file
index 852a66c..e69c9fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5238=['post','create','put','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','show','/:id/fields','isAuthenticated','getFields','getSubjects'];(function(_0x28f5f6,_0x3bda53){var _0x541b8f=function(_0x1e3901){while(--_0x1e3901){_0x28f5f6['push'](_0x28f5f6['shift']());}};_0x541b8f(++_0x3bda53);}(_0x5238,0x165));var _0x8523=function(_0x3ede63,_0x4132d7){_0x3ede63=_0x3ede63-0x0;var _0x4d3a6d=_0x5238[_0x3ede63];return _0x4d3a6d;};'use strict';var multer=require(_0x8523('0x0'));var util=require(_0x8523('0x1'));var path=require(_0x8523('0x2'));var timeout=require('connect-timeout');var express=require(_0x8523('0x3'));var router=express[_0x8523('0x4')]();var auth=require(_0x8523('0x5'));var interaction=require(_0x8523('0x6'));var config=require(_0x8523('0x7'));var controller=require(_0x8523('0x8'));router[_0x8523('0x9')]('/',auth['isAuthenticated'](),controller[_0x8523('0xa')]);router['get'](_0x8523('0xb'),auth['isAuthenticated'](),controller[_0x8523('0xc')]);router[_0x8523('0x9')](_0x8523('0xd'),auth[_0x8523('0xe')](),controller[_0x8523('0xf')]);router[_0x8523('0x9')]('/:id/subjects',auth[_0x8523('0xe')](),controller[_0x8523('0x10')]);router[_0x8523('0x9')]('/:id/descriptions',auth[_0x8523('0xe')](),controller['getDescriptions']);router[_0x8523('0x11')]('/',auth[_0x8523('0xe')](),controller[_0x8523('0x12')]);router[_0x8523('0x13')](_0x8523('0xb'),auth[_0x8523('0xe')](),controller['update']);router['delete'](_0x8523('0xb'),auth[_0x8523('0xe')](),controller[_0x8523('0x14')]);module[_0x8523('0x15')]=router;
\ No newline at end of file
+var _0x0f19=['index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','delete','destroy','exports','multer','util','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x8b2bbd,_0x2b1ced){var _0x299614=function(_0x512aa8){while(--_0x512aa8){_0x8b2bbd['push'](_0x8b2bbd['shift']());}};_0x299614(++_0x2b1ced);}(_0x0f19,0x19a));var _0x90f1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0f19[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x90f1('0x0'));var util=require(_0x90f1('0x1'));var path=require('path');var timeout=require(_0x90f1('0x2'));var express=require('express');var router=express['Router']();var auth=require(_0x90f1('0x3'));var interaction=require(_0x90f1('0x4'));var config=require(_0x90f1('0x5'));var controller=require('./intSalesforceConfiguration.controller');router[_0x90f1('0x6')]('/',auth[_0x90f1('0x7')](),controller[_0x90f1('0x8')]);router['get'](_0x90f1('0x9'),auth[_0x90f1('0x7')](),controller[_0x90f1('0xa')]);router[_0x90f1('0x6')](_0x90f1('0xb'),auth['isAuthenticated'](),controller[_0x90f1('0xc')]);router[_0x90f1('0x6')](_0x90f1('0xd'),auth[_0x90f1('0x7')](),controller[_0x90f1('0xe')]);router[_0x90f1('0x6')](_0x90f1('0xf'),auth[_0x90f1('0x7')](),controller[_0x90f1('0x10')]);router[_0x90f1('0x11')]('/',auth[_0x90f1('0x7')](),controller[_0x90f1('0x12')]);router['put'](_0x90f1('0x9'),auth[_0x90f1('0x7')](),controller['update']);router[_0x90f1('0x13')](_0x90f1('0x9'),auth[_0x90f1('0x7')](),controller[_0x90f1('0x14')]);module[_0x90f1('0x15')]=router;
\ No newline at end of file
index ded0232..3cbe6d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e39=['contact','nothing','lead','sequelize','exports','STRING','ENUM','contact_lead'];(function(_0x553956,_0x57a991){var _0x2e4172=function(_0x2b5dda){while(--_0x2b5dda){_0x553956['push'](_0x553956['shift']());}};_0x2e4172(++_0x57a991);}(_0x5e39,0xbb));var _0x95e3=function(_0x16d30c,_0x70c255){_0x16d30c=_0x16d30c-0x0;var _0x1a1b75=_0x5e39[_0x16d30c];return _0x1a1b75;};'use strict';var Sequelize=require(_0x95e3('0x0'));module[_0x95e3('0x1')]={'name':{'type':Sequelize[_0x95e3('0x2')]},'description':{'type':Sequelize['STRING']},'moduleSearch':{'type':Sequelize[_0x95e3('0x3')](_0x95e3('0x4'),_0x95e3('0x5'),'lead'),'defaultValue':_0x95e3('0x4')},'moduleCreate':{'type':Sequelize[_0x95e3('0x3')](_0x95e3('0x6'),_0x95e3('0x5'),_0x95e3('0x7')),'defaultValue':_0x95e3('0x7')}};
\ No newline at end of file
+var _0x03e2=['lead','sequelize','STRING','ENUM','contact_lead','contact'];(function(_0x2405bc,_0x2f28a1){var _0x5272d4=function(_0x225294){while(--_0x225294){_0x2405bc['push'](_0x2405bc['shift']());}};_0x5272d4(++_0x2f28a1);}(_0x03e2,0xcd));var _0x203e=function(_0x8c66e5,_0x1aaf65){_0x8c66e5=_0x8c66e5-0x0;var _0x47ee73=_0x03e2[_0x8c66e5];return _0x47ee73;};'use strict';var Sequelize=require(_0x203e('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x203e('0x1')]},'moduleSearch':{'type':Sequelize[_0x203e('0x2')](_0x203e('0x3'),_0x203e('0x4'),_0x203e('0x5')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0x203e('0x2')]('nothing',_0x203e('0x4'),_0x203e('0x5')),'defaultValue':'lead'}};
\ No newline at end of file
index 65eb9be..0a8ad6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb300=['sort','where','pick','add','day','merge','map','key','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','length','create','update','find','body','destroy','findOne','SalesforceField','getFields','getSubjects','getDescriptions','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','http','request','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','end','status','json','count','offset','limit','reject','save','then','stack','name','send','index','SalesforceConfiguration','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x4adf7,_0x44d04a){var _0x3ee880=function(_0x26574a){while(--_0x26574a){_0x4adf7['push'](_0x4adf7['shift']());}};_0x3ee880(++_0x44d04a);}(_0xb300,0x130));var _0x0b30=function(_0x1a3fe2,_0x553b71){_0x1a3fe2=_0x1a3fe2-0x0;var _0x490ee2=_0xb300[_0x1a3fe2];return _0x490ee2;};'use strict';var pdf=require(_0x0b30('0x0'));var emlformat=require(_0x0b30('0x1'));var rimraf=require(_0x0b30('0x2'));var zipdir=require(_0x0b30('0x3'));var jsonpatch=require(_0x0b30('0x4'));var rp=require(_0x0b30('0x5'));var moment=require(_0x0b30('0x6'));var BPromise=require(_0x0b30('0x7'));var Mustache=require(_0x0b30('0x8'));var util=require(_0x0b30('0x9'));var path=require(_0x0b30('0xa'));var sox=require(_0x0b30('0xb'));var csv=require(_0x0b30('0xc'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x0b30('0xd'));var squel=require(_0x0b30('0xe'));var crypto=require(_0x0b30('0xf'));var jsforce=require(_0x0b30('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x0b30('0xc'));var querystring=require(_0x0b30('0x11'));var Papa=require(_0x0b30('0x12'));var Redis=require(_0x0b30('0x13'));var qs=require(_0x0b30('0x14'));var logger=require(_0x0b30('0x15'))(_0x0b30('0x16'));var utils=require(_0x0b30('0x17'));var config=require(_0x0b30('0x18'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x0b30('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x310181,_0x268ba3,_0x318b12,_0x20346c){return new BPromise(function(_0x3f6f1d,_0x521e3e){var _0x46a3d9=_0x20346c||client;return _0x46a3d9[_0x0b30('0x1a')](_0x310181,_0x318b12)['then'](function(_0x5cdd31){logger['info'](_0x0b30('0x1b'),_0x268ba3,_0x0b30('0x1c'));logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x268ba3,_0x0b30('0x1c'),JSON[_0x0b30('0x1d')](_0x5cdd31));if(_0x5cdd31[_0x0b30('0x1e')]){if(_0x5cdd31[_0x0b30('0x1e')][_0x0b30('0x1f')]===0x1f4){logger[_0x0b30('0x1e')](_0x0b30('0x1b'),_0x268ba3,_0x5cdd31[_0x0b30('0x1e')][_0x0b30('0x20')]);return _0x521e3e(_0x5cdd31[_0x0b30('0x1e')][_0x0b30('0x20')]);}logger[_0x0b30('0x1e')](_0x0b30('0x1b'),_0x268ba3,_0x5cdd31['error'][_0x0b30('0x20')]);return _0x3f6f1d(_0x5cdd31[_0x0b30('0x1e')][_0x0b30('0x20')]);}else{logger[_0x0b30('0x21')]('SalesforceConfiguration,\x20%s,\x20%s',_0x268ba3,_0x0b30('0x1c'));_0x3f6f1d(_0x5cdd31[_0x0b30('0x22')]['message']);}})[_0x0b30('0x23')](function(_0x348097){logger[_0x0b30('0x1e')]('SalesforceConfiguration,\x20%s,\x20%s',_0x268ba3,_0x348097);_0x521e3e(_0x348097);});});}function respondWithStatusCode(_0x29e56d,_0x4ccc85){_0x4ccc85=_0x4ccc85||0xcc;return function(_0x3be77c){if(_0x3be77c){return _0x29e56d[_0x0b30('0x24')](_0x4ccc85);}return _0x29e56d['status'](_0x4ccc85)[_0x0b30('0x25')]();};}function respondWithResult(_0x505520,_0x19bf7a){_0x19bf7a=_0x19bf7a||0xc8;return function(_0x354439){if(_0x354439){return _0x505520[_0x0b30('0x26')](_0x19bf7a)[_0x0b30('0x27')](_0x354439);}};}function respondWithFilteredResult(_0x337354,_0xd28a5e){return function(_0x2eed26){if(_0x2eed26){var _0x5970b9=_0x2eed26[_0x0b30('0x28')],_0x46bde2=_0xd28a5e[_0x0b30('0x29')],_0x23ad3b=_0xd28a5e[_0x0b30('0x29')]+_0xd28a5e[_0x0b30('0x2a')],_0x21b8bc;if(_0x23ad3b>=_0x5970b9){_0x23ad3b=_0x5970b9;_0x21b8bc=0xc8;}else{_0x21b8bc=0xce;}_0x337354[_0x0b30('0x26')](_0x21b8bc);return _0x337354['set']('Content-Range',_0x46bde2+'-'+_0x23ad3b+'/'+_0x5970b9)[_0x0b30('0x27')](_0x2eed26);}return null;};}function patchUpdates(_0x26088a){return function(_0x115c20){try{jsonpatch['apply'](_0x115c20,_0x26088a,!![]);}catch(_0x426321){return BPromise[_0x0b30('0x2b')](_0x426321);}return _0x115c20[_0x0b30('0x2c')]();};}function saveUpdates(_0x502cf8,_0x3d719c){return function(_0x26ae02){if(_0x26ae02){return _0x26ae02['update'](_0x502cf8)[_0x0b30('0x2d')](function(_0x5e385a){return _0x5e385a;});}return null;};}function removeEntity(_0x48ede7,_0x1f76d6){return function(_0x39472d){if(_0x39472d){return _0x39472d['destroy']()[_0x0b30('0x2d')](function(){_0x48ede7[_0x0b30('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12df93,_0x316f2f){return function(_0x43041c){if(!_0x43041c){_0x12df93[_0x0b30('0x24')](0x194);}return _0x43041c;};}function handleError(_0x54e91a,_0x2626d5){_0x2626d5=_0x2626d5||0x1f4;return function(_0x2a0010){logger[_0x0b30('0x1e')](_0x2a0010[_0x0b30('0x2e')]);if(_0x2a0010[_0x0b30('0x2f')]){delete _0x2a0010[_0x0b30('0x2f')];}_0x54e91a[_0x0b30('0x26')](_0x2626d5)[_0x0b30('0x30')](_0x2a0010);};}exports[_0x0b30('0x31')]=function(_0x3db20b,_0x5998ec){var _0x106d0c={},_0xfe207={},_0x1cec62={'count':0x0,'rows':[]};var _0x10e267=db[_0x0b30('0x32')][_0x0b30('0x33')];_0xfe207['model']=_[_0x0b30('0x34')](_0x10e267);var _0x266876={'dateStart':_0x3db20b[_0x0b30('0x35')][_0x0b30('0x36')],'dateEnd':_0x3db20b['query'][_0x0b30('0x37')]};delete _0x3db20b[_0x0b30('0x35')]['dateStart'];delete _0x3db20b[_0x0b30('0x35')][_0x0b30('0x37')];_0xfe207['query']=_['keys'](_0x3db20b[_0x0b30('0x35')]);_0xfe207[_0x0b30('0x38')]=_[_0x0b30('0x39')](_0xfe207[_0x0b30('0x3a')],_0xfe207['query']);_0x106d0c[_0x0b30('0x3b')]=_[_0x0b30('0x39')](_0xfe207[_0x0b30('0x3a')],qs[_0x0b30('0x3c')](_0x3db20b[_0x0b30('0x35')][_0x0b30('0x3c')]));_0x106d0c[_0x0b30('0x3b')]=_0x106d0c[_0x0b30('0x3b')]['length']?_0x106d0c[_0x0b30('0x3b')]:_0xfe207[_0x0b30('0x3a')];if(!_0x3db20b[_0x0b30('0x35')][_0x0b30('0x3d')](_0x0b30('0x3e'))){_0x106d0c[_0x0b30('0x2a')]=qs[_0x0b30('0x2a')](_0x3db20b[_0x0b30('0x35')][_0x0b30('0x2a')]);_0x106d0c[_0x0b30('0x29')]=qs['offset'](_0x3db20b[_0x0b30('0x35')]['offset']);}_0x106d0c[_0x0b30('0x3f')]=qs[_0x0b30('0x40')](_0x3db20b[_0x0b30('0x35')][_0x0b30('0x40')]);_0x106d0c[_0x0b30('0x41')]=qs[_0x0b30('0x38')](_[_0x0b30('0x42')](_0x3db20b[_0x0b30('0x35')],_0xfe207[_0x0b30('0x38')]));if(_0x266876[_0x0b30('0x36')]){if(_0x266876['dateEnd']){_0x266876[_0x0b30('0x37')]=moment(_0x266876[_0x0b30('0x37')])[_0x0b30('0x43')](0x1,_0x0b30('0x44'));}else{_0x266876[_0x0b30('0x37')]=moment(_0x266876[_0x0b30('0x36')])[_0x0b30('0x43')](0x1,_0x0b30('0x44'));}_[_0x0b30('0x45')](_0x106d0c['where'],{'createdAt':{'$gte':_0x266876[_0x0b30('0x36')],'$lte':_0x266876['dateEnd']}});}if(_0x3db20b['query']['filter']){_0x106d0c[_0x0b30('0x41')]=_[_0x0b30('0x45')](_0x106d0c['where'],{'$or':_[_0x0b30('0x46')](_0x10e267,function(_0x3e3867){if(_0x3e3867['type'][_0x0b30('0x47')]!==_0x0b30('0x48')){var _0x217301={};_0x217301[_0x3e3867['field']]={'$like':'%'+_0x3db20b[_0x0b30('0x35')][_0x0b30('0x49')]+'%'};return _0x217301;}})});}_0x106d0c=_[_0x0b30('0x45')]({},_0x106d0c,_0x3db20b[_0x0b30('0x4a')]);var _0x48bd6d={'where':_0x106d0c[_0x0b30('0x41')]};return db[_0x0b30('0x32')][_0x0b30('0x28')](_0x48bd6d)[_0x0b30('0x2d')](function(_0x46db21){_0x1cec62[_0x0b30('0x28')]=_0x46db21;if(_0x3db20b[_0x0b30('0x35')][_0x0b30('0x4b')]){_0x106d0c[_0x0b30('0x4c')]=[{'all':!![]}];}return db[_0x0b30('0x32')][_0x0b30('0x4d')](_0x106d0c);})[_0x0b30('0x2d')](function(_0x283043){_0x1cec62[_0x0b30('0x4e')]=_0x283043;return _0x1cec62;})[_0x0b30('0x2d')](respondWithFilteredResult(_0x5998ec,_0x106d0c))['catch'](handleError(_0x5998ec,null));};exports[_0x0b30('0x4f')]=function(_0x3d92ab,_0x33b04d){var _0x292c3e={'raw':![],'where':{'id':_0x3d92ab[_0x0b30('0x50')]['id']}},_0x26a4c2={};_0x26a4c2['model']=_[_0x0b30('0x34')](db[_0x0b30('0x32')][_0x0b30('0x33')]);_0x26a4c2['query']=_[_0x0b30('0x34')](_0x3d92ab[_0x0b30('0x35')]);_0x26a4c2[_0x0b30('0x38')]=_[_0x0b30('0x39')](_0x26a4c2['model'],_0x26a4c2[_0x0b30('0x35')]);_0x292c3e[_0x0b30('0x3b')]=_[_0x0b30('0x39')](_0x26a4c2['model'],qs[_0x0b30('0x3c')](_0x3d92ab[_0x0b30('0x35')]['fields']));_0x292c3e[_0x0b30('0x3b')]=_0x292c3e[_0x0b30('0x3b')][_0x0b30('0x51')]?_0x292c3e[_0x0b30('0x3b')]:_0x26a4c2[_0x0b30('0x3a')];if(_0x3d92ab[_0x0b30('0x35')][_0x0b30('0x4b')]){_0x292c3e[_0x0b30('0x4c')]=[{'all':!![]}];}_0x292c3e=_['merge']({},_0x292c3e,_0x3d92ab[_0x0b30('0x4a')]);return db['SalesforceConfiguration']['find'](_0x292c3e)[_0x0b30('0x2d')](handleEntityNotFound(_0x33b04d,null))[_0x0b30('0x2d')](respondWithResult(_0x33b04d,null))['catch'](handleError(_0x33b04d,null));};exports['create']=function(_0x17d147,_0x4d7ff7){return db[_0x0b30('0x32')][_0x0b30('0x52')](_0x17d147['body'],{})['then'](respondWithResult(_0x4d7ff7,0xc9))[_0x0b30('0x23')](handleError(_0x4d7ff7,null));};exports[_0x0b30('0x53')]=function(_0x4a254e,_0x1f5f93){if(_0x4a254e['body']['id']){delete _0x4a254e['body']['id'];}return db[_0x0b30('0x32')][_0x0b30('0x54')]({'where':{'id':_0x4a254e[_0x0b30('0x50')]['id']}})[_0x0b30('0x2d')](handleEntityNotFound(_0x1f5f93,null))[_0x0b30('0x2d')](saveUpdates(_0x4a254e[_0x0b30('0x55')],null))[_0x0b30('0x2d')](respondWithResult(_0x1f5f93,null))[_0x0b30('0x23')](handleError(_0x1f5f93,null));};exports[_0x0b30('0x56')]=function(_0x367e1e,_0x26f58f){return db[_0x0b30('0x32')][_0x0b30('0x54')]({'where':{'id':_0x367e1e[_0x0b30('0x50')]['id']}})['then'](handleEntityNotFound(_0x26f58f,null))[_0x0b30('0x2d')](removeEntity(_0x26f58f,null))[_0x0b30('0x23')](handleError(_0x26f58f,null));};exports['getFields']=function(_0x165c3a,_0x58974e,_0x5bb6a2){var _0x21db04={};var _0x342e5a={};var _0x47fad2;var _0x36e3b9;return db[_0x0b30('0x32')][_0x0b30('0x57')]({'where':{'id':_0x165c3a['params']['id']}})[_0x0b30('0x2d')](handleEntityNotFound(_0x58974e,null))[_0x0b30('0x2d')](function(_0x39c96f){if(_0x39c96f){_0x47fad2=_0x39c96f;_0x342e5a['model']=_[_0x0b30('0x34')](db[_0x0b30('0x58')][_0x0b30('0x33')]);_0x342e5a[_0x0b30('0x35')]=_[_0x0b30('0x34')](_0x165c3a[_0x0b30('0x35')]);_0x342e5a['filters']=_[_0x0b30('0x39')](_0x342e5a[_0x0b30('0x3a')],_0x342e5a[_0x0b30('0x35')]);_0x21db04['attributes']=_[_0x0b30('0x39')](_0x342e5a[_0x0b30('0x3a')],qs['fields'](_0x165c3a[_0x0b30('0x35')][_0x0b30('0x3c')]));_0x21db04['attributes']=_0x21db04[_0x0b30('0x3b')][_0x0b30('0x51')]?_0x21db04['attributes']:_0x342e5a[_0x0b30('0x3a')];_0x21db04[_0x0b30('0x3f')]=qs['sort'](_0x165c3a['query']['sort']);_0x21db04['where']=qs[_0x0b30('0x38')](_['pick'](_0x165c3a[_0x0b30('0x35')],_0x342e5a[_0x0b30('0x38')]));if(_0x165c3a[_0x0b30('0x35')][_0x0b30('0x49')]){_0x21db04[_0x0b30('0x41')]=_[_0x0b30('0x45')](_0x21db04['where'],{'$or':_[_0x0b30('0x46')](_0x21db04[_0x0b30('0x3b')],function(_0x177495){var _0x135baf={};_0x135baf[_0x177495]={'$like':'%'+_0x165c3a['query'][_0x0b30('0x49')]+'%'};return _0x135baf;})});}_0x21db04=_[_0x0b30('0x45')]({},_0x21db04,_0x165c3a[_0x0b30('0x4a')]);return _0x47fad2[_0x0b30('0x59')](_0x21db04);}})[_0x0b30('0x2d')](function(_0x1a223f){if(_0x1a223f){_0x36e3b9=_0x1a223f[_0x0b30('0x51')];if(!_0x165c3a[_0x0b30('0x35')][_0x0b30('0x3d')](_0x0b30('0x3e'))){_0x21db04['limit']=qs[_0x0b30('0x2a')](_0x165c3a[_0x0b30('0x35')][_0x0b30('0x2a')]);_0x21db04['offset']=qs[_0x0b30('0x29')](_0x165c3a[_0x0b30('0x35')][_0x0b30('0x29')]);}return _0x47fad2[_0x0b30('0x59')](_0x21db04);}})['then'](function(_0x28f492){if(_0x28f492){return _0x28f492?{'count':_0x36e3b9,'rows':_0x28f492}:null;}})[_0x0b30('0x2d')](respondWithResult(_0x58974e,null))['catch'](handleError(_0x58974e,null));};exports['getSubjects']=function(_0x2222d0,_0x36e551,_0x2b0e71){var _0x480aed={};var _0x259b9e={};var _0x45cd9b;var _0x18df79;return db['SalesforceConfiguration'][_0x0b30('0x57')]({'where':{'id':_0x2222d0[_0x0b30('0x50')]['id']}})[_0x0b30('0x2d')](handleEntityNotFound(_0x36e551,null))['then'](function(_0x8b1a02){if(_0x8b1a02){_0x45cd9b=_0x8b1a02;_0x259b9e['model']=_['keys'](db[_0x0b30('0x58')]['rawAttributes']);_0x259b9e[_0x0b30('0x35')]=_[_0x0b30('0x34')](_0x2222d0[_0x0b30('0x35')]);_0x259b9e['filters']=_[_0x0b30('0x39')](_0x259b9e[_0x0b30('0x3a')],_0x259b9e[_0x0b30('0x35')]);_0x480aed['attributes']=_[_0x0b30('0x39')](_0x259b9e['model'],qs[_0x0b30('0x3c')](_0x2222d0['query'][_0x0b30('0x3c')]));_0x480aed[_0x0b30('0x3b')]=_0x480aed[_0x0b30('0x3b')][_0x0b30('0x51')]?_0x480aed[_0x0b30('0x3b')]:_0x259b9e[_0x0b30('0x3a')];_0x480aed['order']=qs[_0x0b30('0x40')](_0x2222d0['query'][_0x0b30('0x40')]);_0x480aed['where']=qs[_0x0b30('0x38')](_[_0x0b30('0x42')](_0x2222d0[_0x0b30('0x35')],_0x259b9e[_0x0b30('0x38')]));if(_0x2222d0[_0x0b30('0x35')][_0x0b30('0x49')]){_0x480aed[_0x0b30('0x41')]=_[_0x0b30('0x45')](_0x480aed['where'],{'$or':_[_0x0b30('0x46')](_0x480aed[_0x0b30('0x3b')],function(_0x5a6064){var _0x4616d6={};_0x4616d6[_0x5a6064]={'$like':'%'+_0x2222d0[_0x0b30('0x35')][_0x0b30('0x49')]+'%'};return _0x4616d6;})});}_0x480aed=_[_0x0b30('0x45')]({},_0x480aed,_0x2222d0[_0x0b30('0x4a')]);return _0x45cd9b[_0x0b30('0x5a')](_0x480aed);}})[_0x0b30('0x2d')](function(_0x506522){if(_0x506522){_0x18df79=_0x506522[_0x0b30('0x51')];if(!_0x2222d0[_0x0b30('0x35')]['hasOwnProperty']('nolimit')){_0x480aed['limit']=qs[_0x0b30('0x2a')](_0x2222d0[_0x0b30('0x35')][_0x0b30('0x2a')]);_0x480aed['offset']=qs['offset'](_0x2222d0[_0x0b30('0x35')][_0x0b30('0x29')]);}return _0x45cd9b[_0x0b30('0x5a')](_0x480aed);}})[_0x0b30('0x2d')](function(_0x52832d){if(_0x52832d){return _0x52832d?{'count':_0x18df79,'rows':_0x52832d}:null;}})[_0x0b30('0x2d')](respondWithResult(_0x36e551,null))[_0x0b30('0x23')](handleError(_0x36e551,null));};exports[_0x0b30('0x5b')]=function(_0x5db815,_0x2c028c,_0xd4d212){var _0x33d6b1={};var _0x270b4d={};var _0x2753b6;var _0x4a541b;return db[_0x0b30('0x32')][_0x0b30('0x57')]({'where':{'id':_0x5db815[_0x0b30('0x50')]['id']}})[_0x0b30('0x2d')](handleEntityNotFound(_0x2c028c,null))['then'](function(_0x1e1d1b){if(_0x1e1d1b){_0x2753b6=_0x1e1d1b;_0x270b4d[_0x0b30('0x3a')]=_[_0x0b30('0x34')](db[_0x0b30('0x58')]['rawAttributes']);_0x270b4d['query']=_['keys'](_0x5db815['query']);_0x270b4d['filters']=_[_0x0b30('0x39')](_0x270b4d[_0x0b30('0x3a')],_0x270b4d[_0x0b30('0x35')]);_0x33d6b1['attributes']=_[_0x0b30('0x39')](_0x270b4d['model'],qs[_0x0b30('0x3c')](_0x5db815['query'][_0x0b30('0x3c')]));_0x33d6b1[_0x0b30('0x3b')]=_0x33d6b1[_0x0b30('0x3b')][_0x0b30('0x51')]?_0x33d6b1[_0x0b30('0x3b')]:_0x270b4d[_0x0b30('0x3a')];_0x33d6b1[_0x0b30('0x3f')]=qs[_0x0b30('0x40')](_0x5db815['query']['sort']);_0x33d6b1[_0x0b30('0x41')]=qs[_0x0b30('0x38')](_[_0x0b30('0x42')](_0x5db815[_0x0b30('0x35')],_0x270b4d[_0x0b30('0x38')]));if(_0x5db815['query'][_0x0b30('0x49')]){_0x33d6b1[_0x0b30('0x41')]=_[_0x0b30('0x45')](_0x33d6b1[_0x0b30('0x41')],{'$or':_['map'](_0x33d6b1[_0x0b30('0x3b')],function(_0x49814f){var _0x207c70={};_0x207c70[_0x49814f]={'$like':'%'+_0x5db815[_0x0b30('0x35')]['filter']+'%'};return _0x207c70;})});}_0x33d6b1=_['merge']({},_0x33d6b1,_0x5db815['options']);return _0x2753b6[_0x0b30('0x5b')](_0x33d6b1);}})[_0x0b30('0x2d')](function(_0x141903){if(_0x141903){_0x4a541b=_0x141903['length'];if(!_0x5db815['query']['hasOwnProperty'](_0x0b30('0x3e'))){_0x33d6b1[_0x0b30('0x2a')]=qs[_0x0b30('0x2a')](_0x5db815[_0x0b30('0x35')]['limit']);_0x33d6b1[_0x0b30('0x29')]=qs[_0x0b30('0x29')](_0x5db815[_0x0b30('0x35')][_0x0b30('0x29')]);}return _0x2753b6['getDescriptions'](_0x33d6b1);}})['then'](function(_0x4aa832){if(_0x4aa832){return _0x4aa832?{'count':_0x4a541b,'rows':_0x4aa832}:null;}})[_0x0b30('0x2d')](respondWithResult(_0x2c028c,null))['catch'](handleError(_0x2c028c,null));};
\ No newline at end of file
+var _0x0317=['SalesforceConfiguration','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','add','day','merge','filter','map','type','key','field','count','includeAll','include','rows','show','options','find','create','body','params','getFields','findOne','SalesforceField','length','getSubjects','getDescriptions','html-pdf','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','offset','limit','Content-Range','json','apply','reject','save','destroy','stack','name','send','index'];(function(_0xa35c6d,_0x416cd7){var _0x9475e5=function(_0x500ae2){while(--_0x500ae2){_0xa35c6d['push'](_0xa35c6d['shift']());}};_0x9475e5(++_0x416cd7);}(_0x0317,0x137));var _0x7031=function(_0x1a696f,_0x1e9b62){_0x1a696f=_0x1a696f-0x0;var _0x39057a=_0x0317[_0x1a696f];return _0x39057a;};'use strict';var pdf=require(_0x7031('0x0'));var emlformat=require(_0x7031('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x7031('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7031('0x3'));var moment=require(_0x7031('0x4'));var BPromise=require(_0x7031('0x5'));var Mustache=require(_0x7031('0x6'));var util=require(_0x7031('0x7'));var path=require(_0x7031('0x8'));var sox=require('sox');var csv=require(_0x7031('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x7031('0xa'));var squel=require(_0x7031('0xb'));var crypto=require(_0x7031('0xc'));var jsforce=require(_0x7031('0xd'));var deskjs=require(_0x7031('0xe'));var toCsv=require(_0x7031('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7031('0xf'));var qs=require(_0x7031('0x10'));var logger=require(_0x7031('0x11'))(_0x7031('0x12'));var utils=require(_0x7031('0x13'));var config=require(_0x7031('0x14'));var db=require('../../mysqldb')['db'];var jayson=require(_0x7031('0x15'));var client=jayson[_0x7031('0x16')][_0x7031('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x34c03b,_0x106385,_0x15b016,_0x4e9ed1){return new BPromise(function(_0x4ade17,_0x558660){var _0x2b643f=_0x4e9ed1||client;return _0x2b643f[_0x7031('0x18')](_0x34c03b,_0x15b016)[_0x7031('0x19')](function(_0x33eb07){logger[_0x7031('0x1a')](_0x7031('0x1b'),_0x106385,_0x7031('0x1c'));logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x106385,_0x7031('0x1c'),JSON[_0x7031('0x1d')](_0x33eb07));if(_0x33eb07[_0x7031('0x1e')]){if(_0x33eb07[_0x7031('0x1e')][_0x7031('0x1f')]===0x1f4){logger['error'](_0x7031('0x1b'),_0x106385,_0x33eb07[_0x7031('0x1e')][_0x7031('0x20')]);return _0x558660(_0x33eb07[_0x7031('0x1e')]['message']);}logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0x106385,_0x33eb07[_0x7031('0x1e')][_0x7031('0x20')]);return _0x4ade17(_0x33eb07[_0x7031('0x1e')][_0x7031('0x20')]);}else{logger['info'](_0x7031('0x1b'),_0x106385,_0x7031('0x1c'));_0x4ade17(_0x33eb07['result'][_0x7031('0x20')]);}})[_0x7031('0x21')](function(_0x306f1c){logger[_0x7031('0x1e')]('SalesforceConfiguration,\x20%s,\x20%s',_0x106385,_0x306f1c);_0x558660(_0x306f1c);});});}function respondWithStatusCode(_0x33d088,_0x343e2c){_0x343e2c=_0x343e2c||0xcc;return function(_0x70f484){if(_0x70f484){return _0x33d088[_0x7031('0x22')](_0x343e2c);}return _0x33d088[_0x7031('0x23')](_0x343e2c)[_0x7031('0x24')]();};}function respondWithResult(_0x510332,_0x2f759c){_0x2f759c=_0x2f759c||0xc8;return function(_0x539bc7){if(_0x539bc7){return _0x510332[_0x7031('0x23')](_0x2f759c)['json'](_0x539bc7);}};}function respondWithFilteredResult(_0x40a66c,_0x5b2986){return function(_0xde757c){if(_0xde757c){var _0x269a20=_0xde757c['count'],_0x72ab48=_0x5b2986[_0x7031('0x25')],_0x554a60=_0x5b2986[_0x7031('0x25')]+_0x5b2986[_0x7031('0x26')],_0x3c0aa7;if(_0x554a60>=_0x269a20){_0x554a60=_0x269a20;_0x3c0aa7=0xc8;}else{_0x3c0aa7=0xce;}_0x40a66c[_0x7031('0x23')](_0x3c0aa7);return _0x40a66c['set'](_0x7031('0x27'),_0x72ab48+'-'+_0x554a60+'/'+_0x269a20)[_0x7031('0x28')](_0xde757c);}return null;};}function patchUpdates(_0x17d4be){return function(_0x31036d){try{jsonpatch[_0x7031('0x29')](_0x31036d,_0x17d4be,!![]);}catch(_0x52bb56){return BPromise[_0x7031('0x2a')](_0x52bb56);}return _0x31036d[_0x7031('0x2b')]();};}function saveUpdates(_0x471aa3,_0x482be4){return function(_0x218cc7){if(_0x218cc7){return _0x218cc7['update'](_0x471aa3)[_0x7031('0x19')](function(_0x203e21){return _0x203e21;});}return null;};}function removeEntity(_0x5cd0ea,_0x2dd91f){return function(_0x132784){if(_0x132784){return _0x132784[_0x7031('0x2c')]()[_0x7031('0x19')](function(){_0x5cd0ea[_0x7031('0x23')](0xcc)[_0x7031('0x24')]();});}};}function handleEntityNotFound(_0xa198d9,_0x2ca31e){return function(_0x1e5959){if(!_0x1e5959){_0xa198d9[_0x7031('0x22')](0x194);}return _0x1e5959;};}function handleError(_0x1907b9,_0x3406f4){_0x3406f4=_0x3406f4||0x1f4;return function(_0x50beb9){logger[_0x7031('0x1e')](_0x50beb9[_0x7031('0x2d')]);if(_0x50beb9[_0x7031('0x2e')]){delete _0x50beb9[_0x7031('0x2e')];}_0x1907b9[_0x7031('0x23')](_0x3406f4)[_0x7031('0x2f')](_0x50beb9);};}exports[_0x7031('0x30')]=function(_0x35fddc,_0x49dc20){var _0x1c6bf6={},_0x58f279={},_0x231929={'count':0x0,'rows':[]};var _0x29b1e4=db[_0x7031('0x31')][_0x7031('0x32')];_0x58f279[_0x7031('0x33')]=_[_0x7031('0x34')](_0x29b1e4);var _0x22cfc0={'dateStart':_0x35fddc[_0x7031('0x35')][_0x7031('0x36')],'dateEnd':_0x35fddc[_0x7031('0x35')][_0x7031('0x37')]};delete _0x35fddc[_0x7031('0x35')]['dateStart'];delete _0x35fddc[_0x7031('0x35')]['dateEnd'];_0x58f279[_0x7031('0x35')]=_[_0x7031('0x34')](_0x35fddc['query']);_0x58f279['filters']=_[_0x7031('0x38')](_0x58f279[_0x7031('0x33')],_0x58f279[_0x7031('0x35')]);_0x1c6bf6[_0x7031('0x39')]=_[_0x7031('0x38')](_0x58f279[_0x7031('0x33')],qs[_0x7031('0x3a')](_0x35fddc[_0x7031('0x35')][_0x7031('0x3a')]));_0x1c6bf6[_0x7031('0x39')]=_0x1c6bf6[_0x7031('0x39')]['length']?_0x1c6bf6['attributes']:_0x58f279[_0x7031('0x33')];if(!_0x35fddc['query'][_0x7031('0x3b')](_0x7031('0x3c'))){_0x1c6bf6[_0x7031('0x26')]=qs['limit'](_0x35fddc['query']['limit']);_0x1c6bf6['offset']=qs[_0x7031('0x25')](_0x35fddc['query']['offset']);}_0x1c6bf6[_0x7031('0x3d')]=qs[_0x7031('0x3e')](_0x35fddc['query'][_0x7031('0x3e')]);_0x1c6bf6[_0x7031('0x3f')]=qs[_0x7031('0x40')](_[_0x7031('0x41')](_0x35fddc[_0x7031('0x35')],_0x58f279[_0x7031('0x40')]));if(_0x22cfc0['dateStart']){if(_0x22cfc0[_0x7031('0x37')]){_0x22cfc0[_0x7031('0x37')]=moment(_0x22cfc0[_0x7031('0x37')])[_0x7031('0x42')](0x1,'day');}else{_0x22cfc0['dateEnd']=moment(_0x22cfc0[_0x7031('0x36')])[_0x7031('0x42')](0x1,_0x7031('0x43'));}_[_0x7031('0x44')](_0x1c6bf6[_0x7031('0x3f')],{'createdAt':{'$gte':_0x22cfc0[_0x7031('0x36')],'$lte':_0x22cfc0['dateEnd']}});}if(_0x35fddc['query'][_0x7031('0x45')]){_0x1c6bf6[_0x7031('0x3f')]=_[_0x7031('0x44')](_0x1c6bf6['where'],{'$or':_[_0x7031('0x46')](_0x29b1e4,function(_0x42b1ad){if(_0x42b1ad[_0x7031('0x47')][_0x7031('0x48')]!=='VIRTUAL'){var _0x2bbb40={};_0x2bbb40[_0x42b1ad[_0x7031('0x49')]]={'$like':'%'+_0x35fddc[_0x7031('0x35')][_0x7031('0x45')]+'%'};return _0x2bbb40;}})});}_0x1c6bf6=_[_0x7031('0x44')]({},_0x1c6bf6,_0x35fddc['options']);var _0x865c33={'where':_0x1c6bf6[_0x7031('0x3f')]};return db[_0x7031('0x31')][_0x7031('0x4a')](_0x865c33)[_0x7031('0x19')](function(_0x3fb4de){_0x231929[_0x7031('0x4a')]=_0x3fb4de;if(_0x35fddc['query'][_0x7031('0x4b')]){_0x1c6bf6[_0x7031('0x4c')]=[{'all':!![]}];}return db[_0x7031('0x31')]['findAll'](_0x1c6bf6);})[_0x7031('0x19')](function(_0x21cccb){_0x231929[_0x7031('0x4d')]=_0x21cccb;return _0x231929;})[_0x7031('0x19')](respondWithFilteredResult(_0x49dc20,_0x1c6bf6))[_0x7031('0x21')](handleError(_0x49dc20,null));};exports[_0x7031('0x4e')]=function(_0x2f7e47,_0x59d8b6){var _0x16c830={'raw':![],'where':{'id':_0x2f7e47['params']['id']}},_0x3194ad={};_0x3194ad[_0x7031('0x33')]=_[_0x7031('0x34')](db[_0x7031('0x31')][_0x7031('0x32')]);_0x3194ad['query']=_[_0x7031('0x34')](_0x2f7e47[_0x7031('0x35')]);_0x3194ad[_0x7031('0x40')]=_['intersection'](_0x3194ad[_0x7031('0x33')],_0x3194ad[_0x7031('0x35')]);_0x16c830[_0x7031('0x39')]=_[_0x7031('0x38')](_0x3194ad[_0x7031('0x33')],qs[_0x7031('0x3a')](_0x2f7e47['query'][_0x7031('0x3a')]));_0x16c830[_0x7031('0x39')]=_0x16c830['attributes']['length']?_0x16c830[_0x7031('0x39')]:_0x3194ad[_0x7031('0x33')];if(_0x2f7e47[_0x7031('0x35')][_0x7031('0x4b')]){_0x16c830['include']=[{'all':!![]}];}_0x16c830=_[_0x7031('0x44')]({},_0x16c830,_0x2f7e47[_0x7031('0x4f')]);return db[_0x7031('0x31')][_0x7031('0x50')](_0x16c830)[_0x7031('0x19')](handleEntityNotFound(_0x59d8b6,null))[_0x7031('0x19')](respondWithResult(_0x59d8b6,null))[_0x7031('0x21')](handleError(_0x59d8b6,null));};exports['create']=function(_0x2ed496,_0x11488b){return db[_0x7031('0x31')][_0x7031('0x51')](_0x2ed496[_0x7031('0x52')],{})['then'](respondWithResult(_0x11488b,0xc9))[_0x7031('0x21')](handleError(_0x11488b,null));};exports['update']=function(_0x47db76,_0x10704c){if(_0x47db76['body']['id']){delete _0x47db76[_0x7031('0x52')]['id'];}return db[_0x7031('0x31')][_0x7031('0x50')]({'where':{'id':_0x47db76[_0x7031('0x53')]['id']}})[_0x7031('0x19')](handleEntityNotFound(_0x10704c,null))['then'](saveUpdates(_0x47db76[_0x7031('0x52')],null))['then'](respondWithResult(_0x10704c,null))[_0x7031('0x21')](handleError(_0x10704c,null));};exports['destroy']=function(_0x30c236,_0x21e330){return db[_0x7031('0x31')][_0x7031('0x50')]({'where':{'id':_0x30c236['params']['id']}})[_0x7031('0x19')](handleEntityNotFound(_0x21e330,null))[_0x7031('0x19')](removeEntity(_0x21e330,null))[_0x7031('0x21')](handleError(_0x21e330,null));};exports[_0x7031('0x54')]=function(_0x2dd835,_0x3d6e2c,_0x511d04){var _0xc737e1={};var _0xea6bf7={};var _0x502133;var _0x1da9e1;return db['SalesforceConfiguration'][_0x7031('0x55')]({'where':{'id':_0x2dd835[_0x7031('0x53')]['id']}})[_0x7031('0x19')](handleEntityNotFound(_0x3d6e2c,null))[_0x7031('0x19')](function(_0x2d0e66){if(_0x2d0e66){_0x502133=_0x2d0e66;_0xea6bf7['model']=_[_0x7031('0x34')](db[_0x7031('0x56')][_0x7031('0x32')]);_0xea6bf7['query']=_['keys'](_0x2dd835[_0x7031('0x35')]);_0xea6bf7[_0x7031('0x40')]=_['intersection'](_0xea6bf7[_0x7031('0x33')],_0xea6bf7[_0x7031('0x35')]);_0xc737e1[_0x7031('0x39')]=_['intersection'](_0xea6bf7[_0x7031('0x33')],qs['fields'](_0x2dd835['query'][_0x7031('0x3a')]));_0xc737e1[_0x7031('0x39')]=_0xc737e1[_0x7031('0x39')][_0x7031('0x57')]?_0xc737e1['attributes']:_0xea6bf7[_0x7031('0x33')];_0xc737e1[_0x7031('0x3d')]=qs[_0x7031('0x3e')](_0x2dd835[_0x7031('0x35')][_0x7031('0x3e')]);_0xc737e1[_0x7031('0x3f')]=qs['filters'](_[_0x7031('0x41')](_0x2dd835[_0x7031('0x35')],_0xea6bf7[_0x7031('0x40')]));if(_0x2dd835['query'][_0x7031('0x45')]){_0xc737e1['where']=_[_0x7031('0x44')](_0xc737e1[_0x7031('0x3f')],{'$or':_['map'](_0xc737e1['attributes'],function(_0x4d3390){var _0x349b56={};_0x349b56[_0x4d3390]={'$like':'%'+_0x2dd835[_0x7031('0x35')][_0x7031('0x45')]+'%'};return _0x349b56;})});}_0xc737e1=_[_0x7031('0x44')]({},_0xc737e1,_0x2dd835[_0x7031('0x4f')]);return _0x502133['getFields'](_0xc737e1);}})[_0x7031('0x19')](function(_0x505764){if(_0x505764){_0x1da9e1=_0x505764[_0x7031('0x57')];if(!_0x2dd835[_0x7031('0x35')][_0x7031('0x3b')](_0x7031('0x3c'))){_0xc737e1[_0x7031('0x26')]=qs[_0x7031('0x26')](_0x2dd835[_0x7031('0x35')][_0x7031('0x26')]);_0xc737e1['offset']=qs[_0x7031('0x25')](_0x2dd835[_0x7031('0x35')]['offset']);}return _0x502133['getFields'](_0xc737e1);}})[_0x7031('0x19')](function(_0x556e9c){if(_0x556e9c){return _0x556e9c?{'count':_0x1da9e1,'rows':_0x556e9c}:null;}})['then'](respondWithResult(_0x3d6e2c,null))[_0x7031('0x21')](handleError(_0x3d6e2c,null));};exports[_0x7031('0x58')]=function(_0xae3003,_0x2fead3,_0x4cb32b){var _0x2e169d={};var _0x426967={};var _0x4137e9;var _0x562f68;return db['SalesforceConfiguration'][_0x7031('0x55')]({'where':{'id':_0xae3003[_0x7031('0x53')]['id']}})[_0x7031('0x19')](handleEntityNotFound(_0x2fead3,null))[_0x7031('0x19')](function(_0x3293e3){if(_0x3293e3){_0x4137e9=_0x3293e3;_0x426967['model']=_[_0x7031('0x34')](db['SalesforceField'][_0x7031('0x32')]);_0x426967[_0x7031('0x35')]=_[_0x7031('0x34')](_0xae3003['query']);_0x426967[_0x7031('0x40')]=_['intersection'](_0x426967[_0x7031('0x33')],_0x426967[_0x7031('0x35')]);_0x2e169d[_0x7031('0x39')]=_['intersection'](_0x426967[_0x7031('0x33')],qs[_0x7031('0x3a')](_0xae3003['query'][_0x7031('0x3a')]));_0x2e169d[_0x7031('0x39')]=_0x2e169d['attributes']['length']?_0x2e169d['attributes']:_0x426967['model'];_0x2e169d[_0x7031('0x3d')]=qs[_0x7031('0x3e')](_0xae3003[_0x7031('0x35')][_0x7031('0x3e')]);_0x2e169d[_0x7031('0x3f')]=qs[_0x7031('0x40')](_[_0x7031('0x41')](_0xae3003['query'],_0x426967['filters']));if(_0xae3003[_0x7031('0x35')][_0x7031('0x45')]){_0x2e169d['where']=_[_0x7031('0x44')](_0x2e169d[_0x7031('0x3f')],{'$or':_['map'](_0x2e169d[_0x7031('0x39')],function(_0x555d17){var _0xc80e7e={};_0xc80e7e[_0x555d17]={'$like':'%'+_0xae3003[_0x7031('0x35')]['filter']+'%'};return _0xc80e7e;})});}_0x2e169d=_[_0x7031('0x44')]({},_0x2e169d,_0xae3003[_0x7031('0x4f')]);return _0x4137e9[_0x7031('0x58')](_0x2e169d);}})['then'](function(_0x48a91e){if(_0x48a91e){_0x562f68=_0x48a91e[_0x7031('0x57')];if(!_0xae3003[_0x7031('0x35')][_0x7031('0x3b')]('nolimit')){_0x2e169d[_0x7031('0x26')]=qs[_0x7031('0x26')](_0xae3003[_0x7031('0x35')][_0x7031('0x26')]);_0x2e169d[_0x7031('0x25')]=qs[_0x7031('0x25')](_0xae3003[_0x7031('0x35')][_0x7031('0x25')]);}return _0x4137e9['getSubjects'](_0x2e169d);}})[_0x7031('0x19')](function(_0x1075ef){if(_0x1075ef){return _0x1075ef?{'count':_0x562f68,'rows':_0x1075ef}:null;}})[_0x7031('0x19')](respondWithResult(_0x2fead3,null))[_0x7031('0x21')](handleError(_0x2fead3,null));};exports[_0x7031('0x59')]=function(_0x609287,_0x86d24c,_0x1c2004){var _0x3caf65={};var _0x204278={};var _0x2fa4b6;var _0xcb144;return db[_0x7031('0x31')]['findOne']({'where':{'id':_0x609287[_0x7031('0x53')]['id']}})['then'](handleEntityNotFound(_0x86d24c,null))[_0x7031('0x19')](function(_0x2f728f){if(_0x2f728f){_0x2fa4b6=_0x2f728f;_0x204278[_0x7031('0x33')]=_[_0x7031('0x34')](db['SalesforceField'][_0x7031('0x32')]);_0x204278[_0x7031('0x35')]=_[_0x7031('0x34')](_0x609287['query']);_0x204278[_0x7031('0x40')]=_[_0x7031('0x38')](_0x204278['model'],_0x204278[_0x7031('0x35')]);_0x3caf65[_0x7031('0x39')]=_[_0x7031('0x38')](_0x204278[_0x7031('0x33')],qs[_0x7031('0x3a')](_0x609287[_0x7031('0x35')][_0x7031('0x3a')]));_0x3caf65[_0x7031('0x39')]=_0x3caf65[_0x7031('0x39')]['length']?_0x3caf65[_0x7031('0x39')]:_0x204278['model'];_0x3caf65[_0x7031('0x3d')]=qs['sort'](_0x609287[_0x7031('0x35')][_0x7031('0x3e')]);_0x3caf65['where']=qs['filters'](_[_0x7031('0x41')](_0x609287['query'],_0x204278[_0x7031('0x40')]));if(_0x609287[_0x7031('0x35')][_0x7031('0x45')]){_0x3caf65[_0x7031('0x3f')]=_[_0x7031('0x44')](_0x3caf65[_0x7031('0x3f')],{'$or':_[_0x7031('0x46')](_0x3caf65['attributes'],function(_0x49c022){var _0x260266={};_0x260266[_0x49c022]={'$like':'%'+_0x609287[_0x7031('0x35')][_0x7031('0x45')]+'%'};return _0x260266;})});}_0x3caf65=_['merge']({},_0x3caf65,_0x609287[_0x7031('0x4f')]);return _0x2fa4b6[_0x7031('0x59')](_0x3caf65);}})[_0x7031('0x19')](function(_0x49701c){if(_0x49701c){_0xcb144=_0x49701c[_0x7031('0x57')];if(!_0x609287['query']['hasOwnProperty'](_0x7031('0x3c'))){_0x3caf65[_0x7031('0x26')]=qs[_0x7031('0x26')](_0x609287[_0x7031('0x35')][_0x7031('0x26')]);_0x3caf65['offset']=qs[_0x7031('0x25')](_0x609287['query'][_0x7031('0x25')]);}return _0x2fa4b6['getDescriptions'](_0x3caf65);}})['then'](function(_0x4685a3){if(_0x4685a3){return _0x4685a3?{'count':_0xcb144,'rows':_0x4685a3}:null;}})[_0x7031('0x19')](respondWithResult(_0x86d24c,null))[_0x7031('0x21')](handleError(_0x86d24c,null));};
\ No newline at end of file
index d35b129..a936075 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb90=['lodash','util','api','moment','bluebird','exports','define','SalesforceConfiguration'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xdb90,0xf8));var _0x0db9=function(_0x4acf20,_0x3f4636){_0x4acf20=_0x4acf20-0x0;var _0x50eabc=_0xdb90[_0x4acf20];return _0x50eabc;};'use strict';var _=require(_0x0db9('0x0'));var util=require(_0x0db9('0x1'));var logger=require('../../config/logger')(_0x0db9('0x2'));var moment=require(_0x0db9('0x3'));var BPromise=require(_0x0db9('0x4'));var rp=require('request-promise');var attributes=require('./intSalesforceConfiguration.attributes');module[_0x0db9('0x5')]=function(_0x4f929c,_0x4d7ede){return _0x4f929c[_0x0db9('0x6')](_0x0db9('0x7'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd758=['lodash','util','../../config/logger','api','moment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xd758,0x172));var _0x8d75=function(_0x5a5886,_0x4b8959){_0x5a5886=_0x5a5886-0x0;var _0x3eebd1=_0xd758[_0x5a5886];return _0x3eebd1;};'use strict';var _=require(_0x8d75('0x0'));var util=require(_0x8d75('0x1'));var logger=require(_0x8d75('0x2'))(_0x8d75('0x3'));var moment=require(_0x8d75('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x8d75('0x5'));module[_0x8d75('0x6')]=function(_0x2b06a7,_0x50247f){return _0x2b06a7[_0x8d75('0x7')](_0x8d75('0x8'),attributes,{'tableName':_0x8d75('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c61c36..064dfc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['../../config/environment','jayson/promise','client','http','then','info','SalesforceConfiguration,\x20%s,\x20%s','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils'];(function(_0x5aabfb,_0x3213d9){var _0x52f025=function(_0xa573f2){while(--_0xa573f2){_0x5aabfb['push'](_0x5aabfb['shift']());}};_0x52f025(++_0x3213d9);}(_0xe14b,0x93));var _0xbe14=function(_0x5999dd,_0x4407fc){_0x5999dd=_0x5999dd-0x0;var _0x5300a3=_0xe14b[_0x5999dd];return _0x5300a3;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbe14('0x2'));var fs=require('fs');var Redis=require(_0xbe14('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe14('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xbe14('0x5'));var jayson=require(_0xbe14('0x6'));var client=jayson[_0xbe14('0x7')][_0xbe14('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d9ade,_0x39387e,_0x196fca){return new BPromise(function(_0x566ae7,_0x50f909){return client['request'](_0x1d9ade,_0x196fca)[_0xbe14('0x9')](function(_0x6fceff){logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,'request\x20sent');logger['debug'](_0xbe14('0xc'),_0x39387e,_0xbe14('0xd'),JSON['stringify'](_0x6fceff));if(_0x6fceff[_0xbe14('0xe')]){if(_0x6fceff[_0xbe14('0xe')][_0xbe14('0xf')]===0x1f4){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x50f909(_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);}logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0x6fceff[_0xbe14('0xe')][_0xbe14('0x10')]);return _0x566ae7(_0x6fceff['error']['message']);}else{logger[_0xbe14('0xa')](_0xbe14('0xb'),_0x39387e,_0xbe14('0xd'));_0x566ae7(_0x6fceff[_0xbe14('0x11')]['message']);}})[_0xbe14('0x12')](function(_0xe9c3ec){logger[_0xbe14('0xe')](_0xbe14('0xb'),_0x39387e,_0xe9c3ec);_0x50f909(_0xe9c3ec);});});}
\ No newline at end of file
+var _0x7a54=['info','SalesforceConfiguration,\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(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7a54,0x106));var _0x47a5=function(_0x472584,_0x1b8b1a){_0x472584=_0x472584-0x0;var _0x135551=_0x7a54[_0x472584];return _0x135551;};'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')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index c313454..8d330f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3328=['connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path'];(function(_0x30b6b4,_0x5af717){var _0x5a1076=function(_0xbb613d){while(--_0xbb613d){_0x30b6b4['push'](_0x30b6b4['shift']());}};_0x5a1076(++_0x5af717);}(_0x3328,0x1a0));var _0x8332=function(_0x16479d,_0x105179){_0x16479d=_0x16479d-0x0;var _0x1b8bfc=_0x3328[_0x16479d];return _0x1b8bfc;};'use strict';var multer=require(_0x8332('0x0'));var util=require('util');var path=require(_0x8332('0x1'));var timeout=require(_0x8332('0x2'));var express=require(_0x8332('0x3'));var router=express[_0x8332('0x4')]();var auth=require(_0x8332('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8332('0x6'));var controller=require(_0x8332('0x7'));router[_0x8332('0x8')]('/',auth[_0x8332('0x9')](),controller[_0x8332('0xa')]);router[_0x8332('0x8')](_0x8332('0xb'),auth[_0x8332('0x9')](),controller[_0x8332('0xc')]);router[_0x8332('0xd')]('/',auth[_0x8332('0x9')](),controller[_0x8332('0xe')]);router[_0x8332('0xf')]('/:id',auth[_0x8332('0x9')](),controller['update']);router[_0x8332('0x10')](_0x8332('0xb'),auth['isAuthenticated'](),controller[_0x8332('0x11')]);module[_0x8332('0x12')]=router;
\ No newline at end of file
+var _0x7b92=['/:id','show','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated'];(function(_0x4c73ac,_0x46b73c){var _0x9839ee=function(_0x2076fb){while(--_0x2076fb){_0x4c73ac['push'](_0x4c73ac['shift']());}};_0x9839ee(++_0x46b73c);}(_0x7b92,0xd8));var _0x27b9=function(_0x50f0a9,_0x2b0c57){_0x50f0a9=_0x50f0a9-0x0;var _0x5a33d9=_0x7b92[_0x50f0a9];return _0x5a33d9;};'use strict';var multer=require(_0x27b9('0x0'));var util=require(_0x27b9('0x1'));var path=require(_0x27b9('0x2'));var timeout=require(_0x27b9('0x3'));var express=require(_0x27b9('0x4'));var router=express[_0x27b9('0x5')]();var auth=require(_0x27b9('0x6'));var interaction=require(_0x27b9('0x7'));var config=require(_0x27b9('0x8'));var controller=require(_0x27b9('0x9'));router[_0x27b9('0xa')]('/',auth[_0x27b9('0xb')](),controller['index']);router[_0x27b9('0xa')](_0x27b9('0xc'),auth['isAuthenticated'](),controller[_0x27b9('0xd')]);router[_0x27b9('0xe')]('/',auth[_0x27b9('0xb')](),controller[_0x27b9('0xf')]);router[_0x27b9('0x10')](_0x27b9('0xc'),auth[_0x27b9('0xb')](),controller[_0x27b9('0x11')]);router['delete']('/:id',auth[_0x27b9('0xb')](),controller['destroy']);module[_0x27b9('0x12')]=router;
\ No newline at end of file
index a58e54e..0a8a7d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7179=['STRING','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x4d2beb,_0x5d1c93){var _0x1b2622=function(_0x460913){while(--_0x460913){_0x4d2beb['push'](_0x4d2beb['shift']());}};_0x1b2622(++_0x5d1c93);}(_0x7179,0x143));var _0x9717=function(_0x66cd72,_0x3ca5e0){_0x66cd72=_0x66cd72-0x0;var _0x3efcf0=_0x7179[_0x66cd72];return _0x3efcf0;};'use strict';var Sequelize=require(_0x9717('0x0'));module[_0x9717('0x1')]={'type':{'type':Sequelize[_0x9717('0x2')](_0x9717('0x3'),_0x9717('0x4'),_0x9717('0x5'),'keyValue'),'defaultValue':_0x9717('0x3')},'content':{'type':Sequelize[_0x9717('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x9717('0x2')]('string',_0x9717('0x4'),_0x9717('0x5'))},'keyContent':{'type':Sequelize[_0x9717('0x6')]},'idField':{'type':Sequelize[_0x9717('0x6')]},'variableName':{'type':Sequelize[_0x9717('0x6')]}};
\ No newline at end of file
+var _0x29ce=['customVariable','sequelize','exports','ENUM','string','variable','keyValue','STRING'];(function(_0x145e2f,_0x2f3d1f){var _0x1aa0c3=function(_0x6de838){while(--_0x6de838){_0x145e2f['push'](_0x145e2f['shift']());}};_0x1aa0c3(++_0x2f3d1f);}(_0x29ce,0x189));var _0xe29c=function(_0x29d797,_0x5efe81){_0x29d797=_0x29d797-0x0;var _0x1b5e83=_0x29ce[_0x29d797];return _0x1b5e83;};'use strict';var Sequelize=require(_0xe29c('0x0'));module[_0xe29c('0x1')]={'type':{'type':Sequelize[_0xe29c('0x2')](_0xe29c('0x3'),_0xe29c('0x4'),'customVariable',_0xe29c('0x5')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xe29c('0x6')]},'keyType':{'type':Sequelize[_0xe29c('0x2')](_0xe29c('0x3'),'variable',_0xe29c('0x7'))},'keyContent':{'type':Sequelize[_0xe29c('0x6')]},'idField':{'type':Sequelize[_0xe29c('0x6')]},'variableName':{'type':Sequelize[_0xe29c('0x6')]}};
\ No newline at end of file
index 4ab9ebc..3194257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x950a=['json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','SalesforceField','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','day','add','filter','merge','map','type','key','VIRTUAL','options','includeAll','include','rows','catch','show','length','find','create','body','params','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/utils','../../mysqldb','sendStatus','end','status'];(function(_0x28faa4,_0x5e6ffd){var _0x31a96d=function(_0x1e6b62){while(--_0x1e6b62){_0x28faa4['push'](_0x28faa4['shift']());}};_0x31a96d(++_0x5e6ffd);}(_0x950a,0x111));var _0xa950=function(_0x2def05,_0x16fcc5){_0x2def05=_0x2def05-0x0;var _0x2adbb6=_0x950a[_0x2def05];return _0x2adbb6;};'use strict';var pdf=require(_0xa950('0x0'));var emlformat=require(_0xa950('0x1'));var rimraf=require(_0xa950('0x2'));var zipdir=require(_0xa950('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa950('0x4'));var moment=require(_0xa950('0x5'));var BPromise=require(_0xa950('0x6'));var Mustache=require(_0xa950('0x7'));var util=require('util');var path=require(_0xa950('0x8'));var sox=require(_0xa950('0x9'));var csv=require('to-csv');var ejs=require(_0xa950('0xa'));var fs=require('fs');var _=require(_0xa950('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa950('0xc'));var deskjs=require(_0xa950('0xd'));var toCsv=require(_0xa950('0xe'));var querystring=require(_0xa950('0xf'));var Papa=require(_0xa950('0x10'));var Redis=require(_0xa950('0x11'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var utils=require(_0xa950('0x12'));var config=require('../../config/environment');var db=require(_0xa950('0x13'))['db'];function respondWithStatusCode(_0x3c66c7,_0x10159b){_0x10159b=_0x10159b||0xcc;return function(_0x524c56){if(_0x524c56){return _0x3c66c7[_0xa950('0x14')](_0x10159b);}return _0x3c66c7['status'](_0x10159b)[_0xa950('0x15')]();};}function respondWithResult(_0x439097,_0x3cdf5d){_0x3cdf5d=_0x3cdf5d||0xc8;return function(_0x4c217c){if(_0x4c217c){return _0x439097[_0xa950('0x16')](_0x3cdf5d)[_0xa950('0x17')](_0x4c217c);}};}function respondWithFilteredResult(_0x1c7adb,_0x4ba74f){return function(_0x24fb36){if(_0x24fb36){var _0x462d92=_0x24fb36[_0xa950('0x18')],_0x425201=_0x4ba74f[_0xa950('0x19')],_0x5d5f4c=_0x4ba74f['offset']+_0x4ba74f[_0xa950('0x1a')],_0x31b25b;if(_0x5d5f4c>=_0x462d92){_0x5d5f4c=_0x462d92;_0x31b25b=0xc8;}else{_0x31b25b=0xce;}_0x1c7adb[_0xa950('0x16')](_0x31b25b);return _0x1c7adb[_0xa950('0x1b')](_0xa950('0x1c'),_0x425201+'-'+_0x5d5f4c+'/'+_0x462d92)[_0xa950('0x17')](_0x24fb36);}return null;};}function patchUpdates(_0x3f4c95){return function(_0x2b0e44){try{jsonpatch[_0xa950('0x1d')](_0x2b0e44,_0x3f4c95,!![]);}catch(_0x72e158){return BPromise[_0xa950('0x1e')](_0x72e158);}return _0x2b0e44[_0xa950('0x1f')]();};}function saveUpdates(_0x38fa5d,_0xc690ae){return function(_0x5aadd1){if(_0x5aadd1){return _0x5aadd1[_0xa950('0x20')](_0x38fa5d)[_0xa950('0x21')](function(_0x50abe1){return _0x50abe1;});}return null;};}function removeEntity(_0x1f9894,_0x41c405){return function(_0x53a657){if(_0x53a657){return _0x53a657[_0xa950('0x22')]()['then'](function(){_0x1f9894[_0xa950('0x16')](0xcc)[_0xa950('0x15')]();});}};}function handleEntityNotFound(_0x616269,_0x36a16c){return function(_0x5617cd){if(!_0x5617cd){_0x616269[_0xa950('0x14')](0x194);}return _0x5617cd;};}function handleError(_0x3f4633,_0x31c135){_0x31c135=_0x31c135||0x1f4;return function(_0x897178){logger[_0xa950('0x23')](_0x897178[_0xa950('0x24')]);if(_0x897178[_0xa950('0x25')]){delete _0x897178[_0xa950('0x25')];}_0x3f4633[_0xa950('0x16')](_0x31c135)[_0xa950('0x26')](_0x897178);};}exports[_0xa950('0x27')]=function(_0x26f366,_0x43f8c8){var _0x5d82d8={},_0x209eff={},_0x288934={'count':0x0,'rows':[]};var _0x3f37f8=db[_0xa950('0x28')][_0xa950('0x29')];_0x209eff[_0xa950('0x2a')]=_[_0xa950('0x2b')](_0x3f37f8);var _0x52e133={'dateStart':_0x26f366[_0xa950('0x2c')][_0xa950('0x2d')],'dateEnd':_0x26f366['query'][_0xa950('0x2e')]};delete _0x26f366[_0xa950('0x2c')][_0xa950('0x2d')];delete _0x26f366[_0xa950('0x2c')][_0xa950('0x2e')];_0x209eff[_0xa950('0x2c')]=_[_0xa950('0x2b')](_0x26f366[_0xa950('0x2c')]);_0x209eff[_0xa950('0x2f')]=_[_0xa950('0x30')](_0x209eff['model'],_0x209eff[_0xa950('0x2c')]);_0x5d82d8['attributes']=_['intersection'](_0x209eff[_0xa950('0x2a')],qs['fields'](_0x26f366[_0xa950('0x2c')][_0xa950('0x31')]));_0x5d82d8[_0xa950('0x32')]=_0x5d82d8[_0xa950('0x32')]['length']?_0x5d82d8[_0xa950('0x32')]:_0x209eff['model'];if(!_0x26f366[_0xa950('0x2c')][_0xa950('0x33')]('nolimit')){_0x5d82d8['limit']=qs[_0xa950('0x1a')](_0x26f366[_0xa950('0x2c')][_0xa950('0x1a')]);_0x5d82d8[_0xa950('0x19')]=qs[_0xa950('0x19')](_0x26f366[_0xa950('0x2c')]['offset']);}_0x5d82d8['order']=qs[_0xa950('0x34')](_0x26f366['query'][_0xa950('0x34')]);_0x5d82d8[_0xa950('0x35')]=qs[_0xa950('0x2f')](_[_0xa950('0x36')](_0x26f366[_0xa950('0x2c')],_0x209eff[_0xa950('0x2f')]));if(_0x52e133[_0xa950('0x2d')]){if(_0x52e133[_0xa950('0x2e')]){_0x52e133[_0xa950('0x2e')]=moment(_0x52e133[_0xa950('0x2e')])['add'](0x1,_0xa950('0x37'));}else{_0x52e133['dateEnd']=moment(_0x52e133[_0xa950('0x2d')])[_0xa950('0x38')](0x1,'day');}_['merge'](_0x5d82d8[_0xa950('0x35')],{'createdAt':{'$gte':_0x52e133[_0xa950('0x2d')],'$lte':_0x52e133['dateEnd']}});}if(_0x26f366[_0xa950('0x2c')][_0xa950('0x39')]){_0x5d82d8['where']=_[_0xa950('0x3a')](_0x5d82d8[_0xa950('0x35')],{'$or':_[_0xa950('0x3b')](_0x3f37f8,function(_0x2b1434){if(_0x2b1434[_0xa950('0x3c')][_0xa950('0x3d')]!==_0xa950('0x3e')){var _0x9b2a5b={};_0x9b2a5b[_0x2b1434['field']]={'$like':'%'+_0x26f366[_0xa950('0x2c')][_0xa950('0x39')]+'%'};return _0x9b2a5b;}})});}_0x5d82d8=_['merge']({},_0x5d82d8,_0x26f366[_0xa950('0x3f')]);var _0x115b35={'where':_0x5d82d8[_0xa950('0x35')]};return db['SalesforceField'][_0xa950('0x18')](_0x115b35)[_0xa950('0x21')](function(_0x8bdd37){_0x288934['count']=_0x8bdd37;if(_0x26f366['query'][_0xa950('0x40')]){_0x5d82d8[_0xa950('0x41')]=[{'all':!![]}];}return db[_0xa950('0x28')]['findAll'](_0x5d82d8);})['then'](function(_0x51f5a5){_0x288934[_0xa950('0x42')]=_0x51f5a5;return _0x288934;})[_0xa950('0x21')](respondWithFilteredResult(_0x43f8c8,_0x5d82d8))[_0xa950('0x43')](handleError(_0x43f8c8,null));};exports[_0xa950('0x44')]=function(_0x4036ef,_0x5c25fd){var _0x40a1e8={'raw':!![],'where':{'id':_0x4036ef['params']['id']}},_0x208063={};_0x208063['model']=_[_0xa950('0x2b')](db[_0xa950('0x28')]['rawAttributes']);_0x208063['query']=_['keys'](_0x4036ef['query']);_0x208063[_0xa950('0x2f')]=_[_0xa950('0x30')](_0x208063['model'],_0x208063['query']);_0x40a1e8[_0xa950('0x32')]=_['intersection'](_0x208063[_0xa950('0x2a')],qs[_0xa950('0x31')](_0x4036ef[_0xa950('0x2c')][_0xa950('0x31')]));_0x40a1e8[_0xa950('0x32')]=_0x40a1e8[_0xa950('0x32')][_0xa950('0x45')]?_0x40a1e8[_0xa950('0x32')]:_0x208063['model'];if(_0x4036ef[_0xa950('0x2c')]['includeAll']){_0x40a1e8[_0xa950('0x41')]=[{'all':!![]}];}_0x40a1e8=_[_0xa950('0x3a')]({},_0x40a1e8,_0x4036ef[_0xa950('0x3f')]);return db[_0xa950('0x28')][_0xa950('0x46')](_0x40a1e8)[_0xa950('0x21')](handleEntityNotFound(_0x5c25fd,null))[_0xa950('0x21')](respondWithResult(_0x5c25fd,null))[_0xa950('0x43')](handleError(_0x5c25fd,null));};exports[_0xa950('0x47')]=function(_0x4f777a,_0x3cf01c){return db[_0xa950('0x28')][_0xa950('0x47')](_0x4f777a[_0xa950('0x48')],{})[_0xa950('0x21')](respondWithResult(_0x3cf01c,0xc9))['catch'](handleError(_0x3cf01c,null));};exports[_0xa950('0x20')]=function(_0xde68b2,_0x3f0bb5){if(_0xde68b2[_0xa950('0x48')]['id']){delete _0xde68b2[_0xa950('0x48')]['id'];}return db[_0xa950('0x28')][_0xa950('0x46')]({'where':{'id':_0xde68b2['params']['id']}})[_0xa950('0x21')](handleEntityNotFound(_0x3f0bb5,null))[_0xa950('0x21')](saveUpdates(_0xde68b2[_0xa950('0x48')],null))['then'](respondWithResult(_0x3f0bb5,null))['catch'](handleError(_0x3f0bb5,null));};exports[_0xa950('0x22')]=function(_0x26216c,_0x38c370){return db[_0xa950('0x28')][_0xa950('0x46')]({'where':{'id':_0x26216c[_0xa950('0x49')]['id']}})[_0xa950('0x21')](handleEntityNotFound(_0x38c370,null))[_0xa950('0x21')](removeEntity(_0x38c370,null))['catch'](handleError(_0x38c370,null));};
\ No newline at end of file
+var _0x54ef=['end','error','stack','name','send','index','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','length','offset','sort','pick','add','day','where','filter','merge','map','type','key','VIRTUAL','field','options','includeAll','SalesforceField','findAll','rows','catch','show','params','include','find','create','body','update','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','count','limit','set','Content-Range','json','apply','reject','save','then','destroy'];(function(_0x1efac1,_0x5b2717){var _0x1ef022=function(_0x2ffd81){while(--_0x2ffd81){_0x1efac1['push'](_0x1efac1['shift']());}};_0x1ef022(++_0x5b2717);}(_0x54ef,0x112));var _0xf54e=function(_0x5b956d,_0x55fb24){_0x5b956d=_0x5b956d-0x0;var _0x8c559b=_0x54ef[_0x5b956d];return _0x8c559b;};'use strict';var pdf=require(_0xf54e('0x0'));var emlformat=require(_0xf54e('0x1'));var rimraf=require(_0xf54e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf54e('0x3'));var rp=require(_0xf54e('0x4'));var moment=require(_0xf54e('0x5'));var BPromise=require(_0xf54e('0x6'));var Mustache=require(_0xf54e('0x7'));var util=require(_0xf54e('0x8'));var path=require(_0xf54e('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf54e('0xa'));var fs=require('fs');var _=require(_0xf54e('0xb'));var squel=require(_0xf54e('0xc'));var crypto=require('crypto');var jsforce=require(_0xf54e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf54e('0xe'));var querystring=require(_0xf54e('0xf'));var Papa=require('papaparse');var Redis=require(_0xf54e('0x10'));var qs=require(_0xf54e('0x11'));var logger=require(_0xf54e('0x12'))(_0xf54e('0x13'));var utils=require('../../config/utils');var config=require(_0xf54e('0x14'));var db=require(_0xf54e('0x15'))['db'];function respondWithStatusCode(_0x143d66,_0x326eef){_0x326eef=_0x326eef||0xcc;return function(_0x553759){if(_0x553759){return _0x143d66[_0xf54e('0x16')](_0x326eef);}return _0x143d66['status'](_0x326eef)['end']();};}function respondWithResult(_0x15a9d4,_0x2033e9){_0x2033e9=_0x2033e9||0xc8;return function(_0x28f776){if(_0x28f776){return _0x15a9d4[_0xf54e('0x17')](_0x2033e9)['json'](_0x28f776);}};}function respondWithFilteredResult(_0x331732,_0x1bbeaa){return function(_0x1855fe){if(_0x1855fe){var _0x15f639=_0x1855fe[_0xf54e('0x18')],_0x56828e=_0x1bbeaa['offset'],_0x2366ee=_0x1bbeaa['offset']+_0x1bbeaa[_0xf54e('0x19')],_0x389abc;if(_0x2366ee>=_0x15f639){_0x2366ee=_0x15f639;_0x389abc=0xc8;}else{_0x389abc=0xce;}_0x331732[_0xf54e('0x17')](_0x389abc);return _0x331732[_0xf54e('0x1a')](_0xf54e('0x1b'),_0x56828e+'-'+_0x2366ee+'/'+_0x15f639)[_0xf54e('0x1c')](_0x1855fe);}return null;};}function patchUpdates(_0x3e7d96){return function(_0x2e27b6){try{jsonpatch[_0xf54e('0x1d')](_0x2e27b6,_0x3e7d96,!![]);}catch(_0x1dcc04){return BPromise[_0xf54e('0x1e')](_0x1dcc04);}return _0x2e27b6[_0xf54e('0x1f')]();};}function saveUpdates(_0x50fc66,_0x48a7e1){return function(_0x23e14){if(_0x23e14){return _0x23e14['update'](_0x50fc66)[_0xf54e('0x20')](function(_0x1bfe99){return _0x1bfe99;});}return null;};}function removeEntity(_0x106362,_0x9903fc){return function(_0xf64f12){if(_0xf64f12){return _0xf64f12[_0xf54e('0x21')]()[_0xf54e('0x20')](function(){_0x106362[_0xf54e('0x17')](0xcc)[_0xf54e('0x22')]();});}};}function handleEntityNotFound(_0x5f9eea,_0x1c58bd){return function(_0x5b83df){if(!_0x5b83df){_0x5f9eea[_0xf54e('0x16')](0x194);}return _0x5b83df;};}function handleError(_0x54f914,_0x264a8f){_0x264a8f=_0x264a8f||0x1f4;return function(_0x272df6){logger[_0xf54e('0x23')](_0x272df6[_0xf54e('0x24')]);if(_0x272df6[_0xf54e('0x25')]){delete _0x272df6[_0xf54e('0x25')];}_0x54f914[_0xf54e('0x17')](_0x264a8f)[_0xf54e('0x26')](_0x272df6);};}exports[_0xf54e('0x27')]=function(_0x33457f,_0xf6cdd7){var _0x39c0ae={},_0x2ea001={},_0x5390b8={'count':0x0,'rows':[]};var _0xb3706e=db['SalesforceField'][_0xf54e('0x28')];_0x2ea001['model']=_[_0xf54e('0x29')](_0xb3706e);var _0x269f47={'dateStart':_0x33457f[_0xf54e('0x2a')][_0xf54e('0x2b')],'dateEnd':_0x33457f[_0xf54e('0x2a')][_0xf54e('0x2c')]};delete _0x33457f[_0xf54e('0x2a')]['dateStart'];delete _0x33457f['query'][_0xf54e('0x2c')];_0x2ea001[_0xf54e('0x2a')]=_[_0xf54e('0x29')](_0x33457f[_0xf54e('0x2a')]);_0x2ea001[_0xf54e('0x2d')]=_[_0xf54e('0x2e')](_0x2ea001[_0xf54e('0x2f')],_0x2ea001[_0xf54e('0x2a')]);_0x39c0ae[_0xf54e('0x30')]=_[_0xf54e('0x2e')](_0x2ea001['model'],qs['fields'](_0x33457f[_0xf54e('0x2a')][_0xf54e('0x31')]));_0x39c0ae['attributes']=_0x39c0ae[_0xf54e('0x30')][_0xf54e('0x32')]?_0x39c0ae[_0xf54e('0x30')]:_0x2ea001[_0xf54e('0x2f')];if(!_0x33457f['query']['hasOwnProperty']('nolimit')){_0x39c0ae[_0xf54e('0x19')]=qs[_0xf54e('0x19')](_0x33457f[_0xf54e('0x2a')][_0xf54e('0x19')]);_0x39c0ae[_0xf54e('0x33')]=qs[_0xf54e('0x33')](_0x33457f['query']['offset']);}_0x39c0ae['order']=qs[_0xf54e('0x34')](_0x33457f[_0xf54e('0x2a')]['sort']);_0x39c0ae['where']=qs[_0xf54e('0x2d')](_[_0xf54e('0x35')](_0x33457f[_0xf54e('0x2a')],_0x2ea001['filters']));if(_0x269f47[_0xf54e('0x2b')]){if(_0x269f47[_0xf54e('0x2c')]){_0x269f47['dateEnd']=moment(_0x269f47[_0xf54e('0x2c')])[_0xf54e('0x36')](0x1,_0xf54e('0x37'));}else{_0x269f47[_0xf54e('0x2c')]=moment(_0x269f47[_0xf54e('0x2b')])[_0xf54e('0x36')](0x1,'day');}_['merge'](_0x39c0ae[_0xf54e('0x38')],{'createdAt':{'$gte':_0x269f47[_0xf54e('0x2b')],'$lte':_0x269f47[_0xf54e('0x2c')]}});}if(_0x33457f['query'][_0xf54e('0x39')]){_0x39c0ae[_0xf54e('0x38')]=_[_0xf54e('0x3a')](_0x39c0ae[_0xf54e('0x38')],{'$or':_[_0xf54e('0x3b')](_0xb3706e,function(_0x23f297){if(_0x23f297[_0xf54e('0x3c')][_0xf54e('0x3d')]!==_0xf54e('0x3e')){var _0x2087b3={};_0x2087b3[_0x23f297[_0xf54e('0x3f')]]={'$like':'%'+_0x33457f[_0xf54e('0x2a')][_0xf54e('0x39')]+'%'};return _0x2087b3;}})});}_0x39c0ae=_[_0xf54e('0x3a')]({},_0x39c0ae,_0x33457f[_0xf54e('0x40')]);var _0x5085c1={'where':_0x39c0ae['where']};return db['SalesforceField'][_0xf54e('0x18')](_0x5085c1)[_0xf54e('0x20')](function(_0x5398b2){_0x5390b8[_0xf54e('0x18')]=_0x5398b2;if(_0x33457f[_0xf54e('0x2a')][_0xf54e('0x41')]){_0x39c0ae['include']=[{'all':!![]}];}return db[_0xf54e('0x42')][_0xf54e('0x43')](_0x39c0ae);})[_0xf54e('0x20')](function(_0x794be7){_0x5390b8[_0xf54e('0x44')]=_0x794be7;return _0x5390b8;})[_0xf54e('0x20')](respondWithFilteredResult(_0xf6cdd7,_0x39c0ae))[_0xf54e('0x45')](handleError(_0xf6cdd7,null));};exports[_0xf54e('0x46')]=function(_0x5b4ea1,_0x47bedd){var _0x11c736={'raw':!![],'where':{'id':_0x5b4ea1[_0xf54e('0x47')]['id']}},_0x3447fd={};_0x3447fd[_0xf54e('0x2f')]=_[_0xf54e('0x29')](db[_0xf54e('0x42')]['rawAttributes']);_0x3447fd[_0xf54e('0x2a')]=_['keys'](_0x5b4ea1[_0xf54e('0x2a')]);_0x3447fd['filters']=_[_0xf54e('0x2e')](_0x3447fd[_0xf54e('0x2f')],_0x3447fd[_0xf54e('0x2a')]);_0x11c736['attributes']=_[_0xf54e('0x2e')](_0x3447fd[_0xf54e('0x2f')],qs[_0xf54e('0x31')](_0x5b4ea1[_0xf54e('0x2a')][_0xf54e('0x31')]));_0x11c736['attributes']=_0x11c736[_0xf54e('0x30')][_0xf54e('0x32')]?_0x11c736[_0xf54e('0x30')]:_0x3447fd[_0xf54e('0x2f')];if(_0x5b4ea1['query'][_0xf54e('0x41')]){_0x11c736[_0xf54e('0x48')]=[{'all':!![]}];}_0x11c736=_['merge']({},_0x11c736,_0x5b4ea1[_0xf54e('0x40')]);return db[_0xf54e('0x42')][_0xf54e('0x49')](_0x11c736)[_0xf54e('0x20')](handleEntityNotFound(_0x47bedd,null))['then'](respondWithResult(_0x47bedd,null))[_0xf54e('0x45')](handleError(_0x47bedd,null));};exports[_0xf54e('0x4a')]=function(_0x2527f6,_0xb4654f){return db[_0xf54e('0x42')][_0xf54e('0x4a')](_0x2527f6[_0xf54e('0x4b')],{})[_0xf54e('0x20')](respondWithResult(_0xb4654f,0xc9))[_0xf54e('0x45')](handleError(_0xb4654f,null));};exports[_0xf54e('0x4c')]=function(_0xaf9bf0,_0x1f4cf8){if(_0xaf9bf0[_0xf54e('0x4b')]['id']){delete _0xaf9bf0[_0xf54e('0x4b')]['id'];}return db[_0xf54e('0x42')][_0xf54e('0x49')]({'where':{'id':_0xaf9bf0[_0xf54e('0x47')]['id']}})[_0xf54e('0x20')](handleEntityNotFound(_0x1f4cf8,null))[_0xf54e('0x20')](saveUpdates(_0xaf9bf0[_0xf54e('0x4b')],null))['then'](respondWithResult(_0x1f4cf8,null))['catch'](handleError(_0x1f4cf8,null));};exports[_0xf54e('0x21')]=function(_0x1106bb,_0x45861b){return db[_0xf54e('0x42')][_0xf54e('0x49')]({'where':{'id':_0x1106bb[_0xf54e('0x47')]['id']}})[_0xf54e('0x20')](handleEntityNotFound(_0x45861b,null))[_0xf54e('0x20')](removeEntity(_0x45861b,null))[_0xf54e('0x45')](handleError(_0x45861b,null));};
\ No newline at end of file
index 03f5149..a954c2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d3a=['request-promise','./intSalesforceField.attributes','exports','SalesforceField','int_salesforce_fields','lodash','../../config/logger','moment','bluebird'];(function(_0x30f895,_0x4fd3e5){var _0x3149b8=function(_0xb11863){while(--_0xb11863){_0x30f895['push'](_0x30f895['shift']());}};_0x3149b8(++_0x4fd3e5);}(_0x1d3a,0xe6));var _0xa1d3=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x1d3a[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0xa1d3('0x0'));var util=require('util');var logger=require(_0xa1d3('0x1'))('api');var moment=require(_0xa1d3('0x2'));var BPromise=require(_0xa1d3('0x3'));var rp=require(_0xa1d3('0x4'));var attributes=require(_0xa1d3('0x5'));module[_0xa1d3('0x6')]=function(_0x11385a,_0x1c8b18){return _0x11385a['define'](_0xa1d3('0x7'),attributes,{'tableName':_0xa1d3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e7e=['../../config/logger','api','bluebird','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields','util'];(function(_0x12ed9b,_0x173526){var _0x345865=function(_0x320f8b){while(--_0x320f8b){_0x12ed9b['push'](_0x12ed9b['shift']());}};_0x345865(++_0x173526);}(_0x2e7e,0xce));var _0xe2e7=function(_0xd1179e,_0x5c65de){_0xd1179e=_0xd1179e-0x0;var _0x1c7c8e=_0x2e7e[_0xd1179e];return _0x1c7c8e;};'use strict';var _=require('lodash');var util=require(_0xe2e7('0x0'));var logger=require(_0xe2e7('0x1'))(_0xe2e7('0x2'));var moment=require('moment');var BPromise=require(_0xe2e7('0x3'));var rp=require('request-promise');var attributes=require(_0xe2e7('0x4'));module[_0xe2e7('0x5')]=function(_0x47f6da,_0x20cf4e){return _0x47f6da[_0xe2e7('0x6')](_0xe2e7('0x7'),attributes,{'tableName':_0xe2e7('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a3eecbe..3706598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ea3=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','error','code','message','util','bluebird','randomstring','ioredis'];(function(_0x16bc4e,_0x1fbce8){var _0x221153=function(_0x41ec1a){while(--_0x41ec1a){_0x16bc4e['push'](_0x16bc4e['shift']());}};_0x221153(++_0x1fbce8);}(_0x8ea3,0x65));var _0x38ea=function(_0x2f624b,_0x47fb5b){_0x2f624b=_0x2f624b-0x0;var _0x5b6b94=_0x8ea3[_0x2f624b];return _0x5b6b94;};'use strict';var _=require('lodash');var util=require(_0x38ea('0x0'));var moment=require('moment');var BPromise=require(_0x38ea('0x1'));var rs=require(_0x38ea('0x2'));var fs=require('fs');var Redis=require(_0x38ea('0x3'));var db=require(_0x38ea('0x4'))['db'];var utils=require(_0x38ea('0x5'));var logger=require(_0x38ea('0x6'))(_0x38ea('0x7'));var config=require(_0x38ea('0x8'));var jayson=require(_0x38ea('0x9'));var client=jayson[_0x38ea('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x459051,_0x359f21,_0x50c83d){return new BPromise(function(_0xe664fa,_0xa884b0){return client[_0x38ea('0xb')](_0x459051,_0x50c83d)[_0x38ea('0xc')](function(_0x208bc0){logger[_0x38ea('0xd')](_0x38ea('0xe'),_0x359f21,_0x38ea('0xf'));logger[_0x38ea('0x10')](_0x38ea('0x11'),_0x359f21,_0x38ea('0xf'),JSON['stringify'](_0x208bc0));if(_0x208bc0['error']){if(_0x208bc0[_0x38ea('0x12')][_0x38ea('0x13')]===0x1f4){logger[_0x38ea('0x12')](_0x38ea('0xe'),_0x359f21,_0x208bc0[_0x38ea('0x12')][_0x38ea('0x14')]);return _0xa884b0(_0x208bc0[_0x38ea('0x12')]['message']);}logger[_0x38ea('0x12')]('SalesforceField,\x20%s,\x20%s',_0x359f21,_0x208bc0['error'][_0x38ea('0x14')]);return _0xe664fa(_0x208bc0['error'][_0x38ea('0x14')]);}else{logger[_0x38ea('0xd')](_0x38ea('0xe'),_0x359f21,_0x38ea('0xf'));_0xe664fa(_0x208bc0['result'][_0x38ea('0x14')]);}})['catch'](function(_0x5434c2){logger['error'](_0x38ea('0xe'),_0x359f21,_0x5434c2);_0xa884b0(_0x5434c2);});});}
\ No newline at end of file
+var _0x0852=['message','info','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','code','error'];(function(_0x51b11d,_0x2e3d79){var _0x3cad6f=function(_0x315bbd){while(--_0x315bbd){_0x51b11d['push'](_0x51b11d['shift']());}};_0x3cad6f(++_0x2e3d79);}(_0x0852,0xdf));var _0x2085=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0852[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x2085('0x0'));var moment=require(_0x2085('0x1'));var BPromise=require(_0x2085('0x2'));var rs=require(_0x2085('0x3'));var fs=require('fs');var Redis=require(_0x2085('0x4'));var db=require(_0x2085('0x5'))['db'];var utils=require(_0x2085('0x6'));var logger=require('../../config/logger')(_0x2085('0x7'));var config=require('../../config/environment');var jayson=require(_0x2085('0x8'));var client=jayson[_0x2085('0x9')][_0x2085('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x26979b,_0xec8bf4,_0x44e312){return new BPromise(function(_0x5ce6d4,_0xaf093d){return client[_0x2085('0xb')](_0x26979b,_0x44e312)[_0x2085('0xc')](function(_0x5fab36){logger['info'](_0x2085('0xd'),_0xec8bf4,_0x2085('0xe'));logger['debug'](_0x2085('0xf'),_0xec8bf4,'request\x20sent',JSON[_0x2085('0x10')](_0x5fab36));if(_0x5fab36['error']){if(_0x5fab36['error'][_0x2085('0x11')]===0x1f4){logger[_0x2085('0x12')]('SalesforceField,\x20%s,\x20%s',_0xec8bf4,_0x5fab36[_0x2085('0x12')][_0x2085('0x13')]);return _0xaf093d(_0x5fab36[_0x2085('0x12')]['message']);}logger[_0x2085('0x12')](_0x2085('0xd'),_0xec8bf4,_0x5fab36[_0x2085('0x12')][_0x2085('0x13')]);return _0x5ce6d4(_0x5fab36[_0x2085('0x12')][_0x2085('0x13')]);}else{logger[_0x2085('0x14')](_0x2085('0xd'),_0xec8bf4,_0x2085('0xe'));_0x5ce6d4(_0x5fab36['result'][_0x2085('0x13')]);}})[_0x2085('0x15')](function(_0xe3dec6){logger[_0x2085('0x12')](_0x2085('0xd'),_0xec8bf4,_0xe3dec6);_0xaf093d(_0xe3dec6);});});}
\ No newline at end of file
index 2823d00..6350f6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdb8=['isAuthenticated','/:id','getConfigurations','/:id/fields','getFields','post','addConfiguration','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get'];(function(_0x1d00bd,_0x36901f){var _0x46b9fe=function(_0x2d580a){while(--_0x2d580a){_0x1d00bd['push'](_0x1d00bd['shift']());}};_0x46b9fe(++_0x36901f);}(_0xfdb8,0x109));var _0x8fdb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfdb8[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x8fdb('0x0'));var path=require(_0x8fdb('0x1'));var timeout=require(_0x8fdb('0x2'));var express=require('express');var router=express[_0x8fdb('0x3')]();var auth=require(_0x8fdb('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8fdb('0x5'));var controller=require('./intSugarcrmAccount.controller');router[_0x8fdb('0x6')]('/',auth[_0x8fdb('0x7')](),controller['index']);router['get'](_0x8fdb('0x8'),auth['isAuthenticated'](),controller['show']);router[_0x8fdb('0x6')]('/:id/configurations',auth[_0x8fdb('0x7')](),controller[_0x8fdb('0x9')]);router[_0x8fdb('0x6')](_0x8fdb('0xa'),auth[_0x8fdb('0x7')](),controller[_0x8fdb('0xb')]);router['post']('/',auth[_0x8fdb('0x7')](),controller['create']);router[_0x8fdb('0xc')]('/:id/configurations',auth[_0x8fdb('0x7')](),controller[_0x8fdb('0xd')]);router['put'](_0x8fdb('0x8'),auth['isAuthenticated'](),controller['update']);router[_0x8fdb('0xe')](_0x8fdb('0x8'),auth['isAuthenticated'](),controller[_0x8fdb('0xf')]);module[_0x8fdb('0x10')]=router;
\ No newline at end of file
+var _0xd91c=['isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./intSugarcrmAccount.controller'];(function(_0x47c59f,_0x45b81a){var _0x254828=function(_0x116da2){while(--_0x116da2){_0x47c59f['push'](_0x47c59f['shift']());}};_0x254828(++_0x45b81a);}(_0xd91c,0x19b));var _0xcd91=function(_0x35ad06,_0x573288){_0x35ad06=_0x35ad06-0x0;var _0xcff32a=_0xd91c[_0x35ad06];return _0xcff32a;};'use strict';var multer=require('multer');var util=require(_0xcd91('0x0'));var path=require(_0xcd91('0x1'));var timeout=require(_0xcd91('0x2'));var express=require('express');var router=express[_0xcd91('0x3')]();var auth=require(_0xcd91('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xcd91('0x5'));var controller=require(_0xcd91('0x6'));router['get']('/',auth[_0xcd91('0x7')](),controller[_0xcd91('0x8')]);router[_0xcd91('0x9')](_0xcd91('0xa'),auth[_0xcd91('0x7')](),controller[_0xcd91('0xb')]);router[_0xcd91('0x9')](_0xcd91('0xc'),auth[_0xcd91('0x7')](),controller[_0xcd91('0xd')]);router['get'](_0xcd91('0xe'),auth[_0xcd91('0x7')](),controller['getFields']);router[_0xcd91('0xf')]('/',auth[_0xcd91('0x7')](),controller[_0xcd91('0x10')]);router[_0xcd91('0xf')](_0xcd91('0xc'),auth[_0xcd91('0x7')](),controller[_0xcd91('0x11')]);router[_0xcd91('0x12')](_0xcd91('0xa'),auth[_0xcd91('0x7')](),controller[_0xcd91('0x13')]);router['delete'](_0xcd91('0xa'),auth[_0xcd91('0x7')](),controller[_0xcd91('0x14')]);module[_0xcd91('0x15')]=router;
\ No newline at end of file
index 805bdca..c58e89b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb690=['STRING','username','sequelize'];(function(_0x1a25da,_0x5323aa){var _0x1c522c=function(_0x2f7d76){while(--_0x2f7d76){_0x1a25da['push'](_0x1a25da['shift']());}};_0x1c522c(++_0x5323aa);}(_0xb690,0x1bb));var _0x0b69=function(_0xb7a459,_0xc13228){_0xb7a459=_0xb7a459-0x0;var _0x104ab5=_0xb690[_0xb7a459];return _0x104ab5;};'use strict';var Sequelize=require(_0x0b69('0x0'));module['exports']={'name':{'type':Sequelize[_0x0b69('0x1')]},'description':{'type':Sequelize[_0x0b69('0x1')]},'username':{'type':Sequelize[_0x0b69('0x1')],'unique':_0x0b69('0x2')},'password':{'type':Sequelize[_0x0b69('0x1')]},'remoteUri':{'type':Sequelize[_0x0b69('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x23dd=['remoteUri','STRING','username'];(function(_0x58f9ef,_0xe3bb46){var _0x12fcef=function(_0x35fce1){while(--_0x35fce1){_0x58f9ef['push'](_0x58f9ef['shift']());}};_0x12fcef(++_0xe3bb46);}(_0x23dd,0xac));var _0xd23d=function(_0x3647ab,_0x189698){_0x3647ab=_0x3647ab-0x0;var _0x158662=_0x23dd[_0x3647ab];return _0x158662;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd23d('0x0')]},'description':{'type':Sequelize[_0xd23d('0x0')]},'username':{'type':Sequelize[_0xd23d('0x0')],'unique':_0xd23d('0x1')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xd23d('0x2')},'serverUrl':{'type':Sequelize[_0xd23d('0x0')]}};
\ No newline at end of file
index e55c23c..67ecc83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eb4=['channel','type','Descriptions','getDescriptions','create','SugarcrmField','username','password','remoteUri','POST','%s%s','login','JSON','xCALLY\x20Motion\x20Integration','format','/service/v4_1/rest.php','get_module_fields','Calls','values','module_fields','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','html-pdf','zip-dir','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','client','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','end','status','count','offset','limit','set','Content-Range','apply','reject','save','update','stack','name','send','index','SugarcrmAccount','rawAttributes','model','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','day','merge','filter','VIRTUAL','field','includeAll','include','findAll','rows','keys','options','body','find','destroy','params','findOne','SugarcrmConfiguration','map','getConfigurations','AccountId','Subjects','getSubjects'];(function(_0x2b6cbc,_0x477292){var _0x49d8c9=function(_0x2ab13a){while(--_0x2ab13a){_0x2b6cbc['push'](_0x2b6cbc['shift']());}};_0x49d8c9(++_0x477292);}(_0x4eb4,0x1cd));var _0x44eb=function(_0x460fd7,_0x2012db){_0x460fd7=_0x460fd7-0x0;var _0x44d1c2=_0x4eb4[_0x460fd7];return _0x44d1c2;};'use strict';var pdf=require(_0x44eb('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x44eb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44eb('0x2'));var util=require('util');var path=require(_0x44eb('0x3'));var sox=require('sox');var csv=require(_0x44eb('0x4'));var ejs=require(_0x44eb('0x5'));var fs=require('fs');var _=require(_0x44eb('0x6'));var squel=require(_0x44eb('0x7'));var crypto=require(_0x44eb('0x8'));var jsforce=require(_0x44eb('0x9'));var deskjs=require(_0x44eb('0xa'));var toCsv=require(_0x44eb('0x4'));var querystring=require(_0x44eb('0xb'));var Papa=require(_0x44eb('0xc'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x44eb('0xd'))(_0x44eb('0xe'));var utils=require(_0x44eb('0xf'));var config=require('../../config/environment');var db=require(_0x44eb('0x10'))['db'];var integrations=require(_0x44eb('0x11'));var jayson=require('jayson/promise');var client=jayson[_0x44eb('0x12')]['http']({'port':0x232a});function respondWithRpcPromise(_0x403f44,_0x528ace,_0x50a178,_0x466968){return new BPromise(function(_0x34c325,_0x29afa1){var _0x994701=_0x466968||client;return _0x994701['request'](_0x403f44,_0x50a178)[_0x44eb('0x13')](function(_0x4c3b96){logger[_0x44eb('0x14')](_0x44eb('0x15'),_0x528ace,_0x44eb('0x16'));logger['debug'](_0x44eb('0x17'),_0x528ace,_0x44eb('0x16'),JSON[_0x44eb('0x18')](_0x4c3b96));if(_0x4c3b96[_0x44eb('0x19')]){if(_0x4c3b96[_0x44eb('0x19')][_0x44eb('0x1a')]===0x1f4){logger[_0x44eb('0x19')](_0x44eb('0x15'),_0x528ace,_0x4c3b96[_0x44eb('0x19')][_0x44eb('0x1b')]);return _0x29afa1(_0x4c3b96[_0x44eb('0x19')]['message']);}logger[_0x44eb('0x19')](_0x44eb('0x15'),_0x528ace,_0x4c3b96[_0x44eb('0x19')][_0x44eb('0x1b')]);return _0x34c325(_0x4c3b96[_0x44eb('0x19')][_0x44eb('0x1b')]);}else{logger[_0x44eb('0x14')]('SugarcrmAccount,\x20%s,\x20%s',_0x528ace,_0x44eb('0x16'));_0x34c325(_0x4c3b96['result'][_0x44eb('0x1b')]);}})[_0x44eb('0x1c')](function(_0xf1c891){logger[_0x44eb('0x19')](_0x44eb('0x15'),_0x528ace,_0xf1c891);_0x29afa1(_0xf1c891);});});}function respondWithStatusCode(_0x4d180d,_0xadb5b8){_0xadb5b8=_0xadb5b8||0xcc;return function(_0x115638){if(_0x115638){return _0x4d180d[_0x44eb('0x1d')](_0xadb5b8);}return _0x4d180d['status'](_0xadb5b8)[_0x44eb('0x1e')]();};}function respondWithResult(_0x224f76,_0x4fc33f){_0x4fc33f=_0x4fc33f||0xc8;return function(_0x112df4){if(_0x112df4){return _0x224f76[_0x44eb('0x1f')](_0x4fc33f)['json'](_0x112df4);}};}function respondWithFilteredResult(_0x2f800b,_0x4c1210){return function(_0x1cee7a){if(_0x1cee7a){var _0x592807=_0x1cee7a[_0x44eb('0x20')],_0x343c4e=_0x4c1210[_0x44eb('0x21')],_0x2bd0fb=_0x4c1210[_0x44eb('0x21')]+_0x4c1210[_0x44eb('0x22')],_0x5dbc7a;if(_0x2bd0fb>=_0x592807){_0x2bd0fb=_0x592807;_0x5dbc7a=0xc8;}else{_0x5dbc7a=0xce;}_0x2f800b[_0x44eb('0x1f')](_0x5dbc7a);return _0x2f800b[_0x44eb('0x23')](_0x44eb('0x24'),_0x343c4e+'-'+_0x2bd0fb+'/'+_0x592807)['json'](_0x1cee7a);}return null;};}function patchUpdates(_0x54f84e){return function(_0x4c1719){try{jsonpatch[_0x44eb('0x25')](_0x4c1719,_0x54f84e,!![]);}catch(_0x534c34){return BPromise[_0x44eb('0x26')](_0x534c34);}return _0x4c1719[_0x44eb('0x27')]();};}function saveUpdates(_0x39150c,_0xb80f6f){return function(_0x2bf7e0){if(_0x2bf7e0){return _0x2bf7e0[_0x44eb('0x28')](_0x39150c)[_0x44eb('0x13')](function(_0x231144){return _0x231144;});}return null;};}function removeEntity(_0x46a47a,_0x5a31d1){return function(_0x14dc57){if(_0x14dc57){return _0x14dc57['destroy']()[_0x44eb('0x13')](function(){_0x46a47a[_0x44eb('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x28e83b,_0x46d4a1){return function(_0xc0ced3){if(!_0xc0ced3){_0x28e83b[_0x44eb('0x1d')](0x194);}return _0xc0ced3;};}function handleError(_0xfcd62,_0x579658){_0x579658=_0x579658||0x1f4;return function(_0x560159){logger['error'](_0x560159[_0x44eb('0x29')]);if(_0x560159[_0x44eb('0x2a')]){delete _0x560159[_0x44eb('0x2a')];}_0xfcd62['status'](_0x579658)[_0x44eb('0x2b')](_0x560159);};}exports[_0x44eb('0x2c')]=function(_0x1f8568,_0x39c9ef){var _0x14373b={},_0x77424a={},_0x33daf4={'count':0x0,'rows':[]};var _0x26c8ef=db[_0x44eb('0x2d')][_0x44eb('0x2e')];_0x77424a[_0x44eb('0x2f')]=_['keys'](_0x26c8ef);var _0x53cac1={'dateStart':_0x1f8568[_0x44eb('0x30')][_0x44eb('0x31')],'dateEnd':_0x1f8568[_0x44eb('0x30')]['dateEnd']};delete _0x1f8568['query'][_0x44eb('0x31')];delete _0x1f8568[_0x44eb('0x30')][_0x44eb('0x32')];_0x77424a[_0x44eb('0x30')]=_['keys'](_0x1f8568[_0x44eb('0x30')]);_0x77424a[_0x44eb('0x33')]=_[_0x44eb('0x34')](_0x77424a[_0x44eb('0x2f')],_0x77424a[_0x44eb('0x30')]);_0x14373b[_0x44eb('0x35')]=_[_0x44eb('0x34')](_0x77424a[_0x44eb('0x2f')],qs['fields'](_0x1f8568[_0x44eb('0x30')][_0x44eb('0x36')]));_0x14373b['attributes']=_0x14373b[_0x44eb('0x35')][_0x44eb('0x37')]?_0x14373b[_0x44eb('0x35')]:_0x77424a[_0x44eb('0x2f')];if(!_0x1f8568[_0x44eb('0x30')][_0x44eb('0x38')](_0x44eb('0x39'))){_0x14373b[_0x44eb('0x22')]=qs[_0x44eb('0x22')](_0x1f8568[_0x44eb('0x30')]['limit']);_0x14373b[_0x44eb('0x21')]=qs['offset'](_0x1f8568[_0x44eb('0x30')][_0x44eb('0x21')]);}_0x14373b[_0x44eb('0x3a')]=qs['sort'](_0x1f8568[_0x44eb('0x30')][_0x44eb('0x3b')]);_0x14373b[_0x44eb('0x3c')]=qs[_0x44eb('0x33')](_[_0x44eb('0x3d')](_0x1f8568[_0x44eb('0x30')],_0x77424a[_0x44eb('0x33')]));if(_0x53cac1[_0x44eb('0x31')]){if(_0x53cac1[_0x44eb('0x32')]){_0x53cac1[_0x44eb('0x32')]=moment(_0x53cac1[_0x44eb('0x32')])['add'](0x1,_0x44eb('0x3e'));}else{_0x53cac1[_0x44eb('0x32')]=moment(_0x53cac1[_0x44eb('0x31')])['add'](0x1,_0x44eb('0x3e'));}_[_0x44eb('0x3f')](_0x14373b['where'],{'createdAt':{'$gte':_0x53cac1[_0x44eb('0x31')],'$lte':_0x53cac1['dateEnd']}});}if(_0x1f8568[_0x44eb('0x30')][_0x44eb('0x40')]){_0x14373b[_0x44eb('0x3c')]=_[_0x44eb('0x3f')](_0x14373b[_0x44eb('0x3c')],{'$or':_['map'](_0x26c8ef,function(_0x1295f8){if(_0x1295f8['type']['key']!==_0x44eb('0x41')){var _0x197cb3={};_0x197cb3[_0x1295f8[_0x44eb('0x42')]]={'$like':'%'+_0x1f8568[_0x44eb('0x30')][_0x44eb('0x40')]+'%'};return _0x197cb3;}})});}_0x14373b=_['merge']({},_0x14373b,_0x1f8568['options']);var _0x251dad={'where':_0x14373b[_0x44eb('0x3c')]};return db['SugarcrmAccount'][_0x44eb('0x20')](_0x251dad)['then'](function(_0x5c2c6e){_0x33daf4['count']=_0x5c2c6e;if(_0x1f8568['query'][_0x44eb('0x43')]){_0x14373b[_0x44eb('0x44')]=[{'all':!![]}];}return db[_0x44eb('0x2d')][_0x44eb('0x45')](_0x14373b);})[_0x44eb('0x13')](function(_0x549d7b){_0x33daf4[_0x44eb('0x46')]=_0x549d7b;return _0x33daf4;})[_0x44eb('0x13')](respondWithFilteredResult(_0x39c9ef,_0x14373b))[_0x44eb('0x1c')](handleError(_0x39c9ef,null));};exports['show']=function(_0x435fcb,_0x1dd24e){var _0xd7104b={'raw':![],'where':{'id':_0x435fcb['params']['id']}},_0x1d903d={};_0x1d903d[_0x44eb('0x2f')]=_[_0x44eb('0x47')](db['SugarcrmAccount'][_0x44eb('0x2e')]);_0x1d903d['query']=_['keys'](_0x435fcb[_0x44eb('0x30')]);_0x1d903d[_0x44eb('0x33')]=_['intersection'](_0x1d903d[_0x44eb('0x2f')],_0x1d903d['query']);_0xd7104b[_0x44eb('0x35')]=_[_0x44eb('0x34')](_0x1d903d[_0x44eb('0x2f')],qs[_0x44eb('0x36')](_0x435fcb['query'][_0x44eb('0x36')]));_0xd7104b[_0x44eb('0x35')]=_0xd7104b[_0x44eb('0x35')][_0x44eb('0x37')]?_0xd7104b[_0x44eb('0x35')]:_0x1d903d[_0x44eb('0x2f')];if(_0x435fcb[_0x44eb('0x30')]['includeAll']){_0xd7104b['include']=[{'all':!![]}];}_0xd7104b=_[_0x44eb('0x3f')]({},_0xd7104b,_0x435fcb[_0x44eb('0x48')]);return db[_0x44eb('0x2d')]['find'](_0xd7104b)[_0x44eb('0x13')](handleEntityNotFound(_0x1dd24e,null))[_0x44eb('0x13')](respondWithResult(_0x1dd24e,null))[_0x44eb('0x1c')](handleError(_0x1dd24e,null));};exports['create']=function(_0x1c6d02,_0x5edb35){return db[_0x44eb('0x2d')]['create'](_0x1c6d02['body'],{})[_0x44eb('0x13')](respondWithResult(_0x5edb35,0xc9))[_0x44eb('0x1c')](handleError(_0x5edb35,null));};exports[_0x44eb('0x28')]=function(_0x4c6c65,_0x58776c){if(_0x4c6c65['body']['id']){delete _0x4c6c65[_0x44eb('0x49')]['id'];}return db[_0x44eb('0x2d')][_0x44eb('0x4a')]({'where':{'id':_0x4c6c65['params']['id']}})[_0x44eb('0x13')](handleEntityNotFound(_0x58776c,null))[_0x44eb('0x13')](saveUpdates(_0x4c6c65[_0x44eb('0x49')],null))['then'](respondWithResult(_0x58776c,null))[_0x44eb('0x1c')](handleError(_0x58776c,null));};exports[_0x44eb('0x4b')]=function(_0x6b7a2e,_0x1e79ef){return db['SugarcrmAccount'][_0x44eb('0x4a')]({'where':{'id':_0x6b7a2e[_0x44eb('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1e79ef,null))[_0x44eb('0x13')](removeEntity(_0x1e79ef,null))['catch'](handleError(_0x1e79ef,null));};exports['getConfigurations']=function(_0x3505bf,_0x1d8f7c,_0x194ee0){var _0x3f5213={};var _0x16722a={};var _0x1086e9;var _0x2d6dbb;return db['SugarcrmAccount'][_0x44eb('0x4d')]({'where':{'id':_0x3505bf[_0x44eb('0x4c')]['id']}})[_0x44eb('0x13')](handleEntityNotFound(_0x1d8f7c,null))[_0x44eb('0x13')](function(_0x4a300f){if(_0x4a300f){_0x1086e9=_0x4a300f;_0x16722a[_0x44eb('0x2f')]=_[_0x44eb('0x47')](db[_0x44eb('0x4e')][_0x44eb('0x2e')]);_0x16722a['query']=_[_0x44eb('0x47')](_0x3505bf[_0x44eb('0x30')]);_0x16722a[_0x44eb('0x33')]=_[_0x44eb('0x34')](_0x16722a['model'],_0x16722a['query']);_0x3f5213[_0x44eb('0x35')]=_[_0x44eb('0x34')](_0x16722a['model'],qs[_0x44eb('0x36')](_0x3505bf[_0x44eb('0x30')][_0x44eb('0x36')]));_0x3f5213[_0x44eb('0x35')]=_0x3f5213[_0x44eb('0x35')][_0x44eb('0x37')]?_0x3f5213['attributes']:_0x16722a[_0x44eb('0x2f')];_0x3f5213[_0x44eb('0x3a')]=qs[_0x44eb('0x3b')](_0x3505bf['query'][_0x44eb('0x3b')]);_0x3f5213[_0x44eb('0x3c')]=qs[_0x44eb('0x33')](_[_0x44eb('0x3d')](_0x3505bf[_0x44eb('0x30')],_0x16722a[_0x44eb('0x33')]));if(_0x3505bf[_0x44eb('0x30')][_0x44eb('0x40')]){_0x3f5213[_0x44eb('0x3c')]=_[_0x44eb('0x3f')](_0x3f5213[_0x44eb('0x3c')],{'$or':_[_0x44eb('0x4f')](_0x3f5213[_0x44eb('0x35')],function(_0x55bbc5){var _0x5c9779={};_0x5c9779[_0x55bbc5]={'$like':'%'+_0x3505bf['query'][_0x44eb('0x40')]+'%'};return _0x5c9779;})});}_0x3f5213=_[_0x44eb('0x3f')]({},_0x3f5213,_0x3505bf[_0x44eb('0x48')]);return _0x1086e9[_0x44eb('0x50')](_0x3f5213);}})[_0x44eb('0x13')](function(_0x4655e1){if(_0x4655e1){_0x2d6dbb=_0x4655e1['length'];if(!_0x3505bf[_0x44eb('0x30')][_0x44eb('0x38')](_0x44eb('0x39'))){_0x3f5213[_0x44eb('0x22')]=qs[_0x44eb('0x22')](_0x3505bf[_0x44eb('0x30')][_0x44eb('0x22')]);_0x3f5213[_0x44eb('0x21')]=qs[_0x44eb('0x21')](_0x3505bf[_0x44eb('0x30')][_0x44eb('0x21')]);}return _0x1086e9[_0x44eb('0x50')](_0x3f5213);}})['then'](function(_0x166c49){if(_0x166c49){return _0x166c49?{'count':_0x2d6dbb,'rows':_0x166c49}:null;}})[_0x44eb('0x13')](respondWithResult(_0x1d8f7c,null))['catch'](handleError(_0x1d8f7c,null));};exports['addConfiguration']=function(_0x60f617,_0x54f49f,_0x7a0d69){if(_0x60f617[_0x44eb('0x49')]['id']){delete _0x60f617[_0x44eb('0x49')]['id'];}return db[_0x44eb('0x2d')][_0x44eb('0x4d')]({'where':{'id':_0x60f617[_0x44eb('0x4c')]['id']}})[_0x44eb('0x13')](handleEntityNotFound(_0x54f49f,null))[_0x44eb('0x13')](function(_0x1cd261){if(_0x1cd261){_0x60f617[_0x44eb('0x49')][_0x44eb('0x51')]=_0x1cd261['id'];_0x60f617[_0x44eb('0x49')][_0x44eb('0x52')]=integrations[_0x44eb('0x53')](_0x60f617[_0x44eb('0x49')][_0x44eb('0x54')],_0x60f617[_0x44eb('0x49')][_0x44eb('0x55')]);_0x60f617['body'][_0x44eb('0x56')]=integrations[_0x44eb('0x57')](_0x60f617[_0x44eb('0x49')][_0x44eb('0x54')],_0x60f617[_0x44eb('0x49')][_0x44eb('0x55')]);return db[_0x44eb('0x4e')][_0x44eb('0x58')](_0x60f617[_0x44eb('0x49')],{'include':[{'model':db[_0x44eb('0x59')],'as':'Subjects'},{'model':db[_0x44eb('0x59')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x54f49f,null))['catch'](handleError(_0x54f49f,null));};exports['getFields']=function(_0x4bd6df,_0x86f7e1,_0x437322){var _0x5972b6;return db['SugarcrmAccount'][_0x44eb('0x4d')]({'where':{'id':_0x4bd6df[_0x44eb('0x4c')]['id']},'attributes':['id',_0x44eb('0x5a'),_0x44eb('0x5b'),_0x44eb('0x5c')]})[_0x44eb('0x13')](handleEntityNotFound(_0x86f7e1,null))[_0x44eb('0x13')](function(_0x236675){if(_0x236675){_0x5972b6=_0x236675[_0x44eb('0x5c')];return rp({'method':_0x44eb('0x5d'),'uri':util['format'](_0x44eb('0x5e'),_0x5972b6,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x44eb('0x5f'),'input_type':_0x44eb('0x60'),'response_type':_0x44eb('0x60'),'rest_data':JSON[_0x44eb('0x18')]({'user_auth':{'user_name':_0x236675[_0x44eb('0x5a')],'password':_0x236675[_0x44eb('0x5b')],'encryption':'PLAIN'},'application':_0x44eb('0x61')})}});}})['then'](function(_0xae39e1){if(_0xae39e1){return rp({'method':_0x44eb('0x5d'),'uri':util[_0x44eb('0x62')](_0x44eb('0x5e'),_0x5972b6,_0x44eb('0x63')),'json':!![],'form':{'method':_0x44eb('0x64'),'input_type':_0x44eb('0x60'),'response_type':_0x44eb('0x60'),'rest_data':JSON[_0x44eb('0x18')]({'session':_0xae39e1['id'],'module_name':_0x44eb('0x65')})}});}})[_0x44eb('0x13')](function(_0x3f2bfc){if(_0x3f2bfc){var _0x5a4518=_[_0x44eb('0x66')](_0x3f2bfc[_0x44eb('0x67')]);return{'count':_0x5a4518['length'],'rows':_[_0x44eb('0x4f')](_0x5a4518,function(_0x9d3773){return{'id':_0x9d3773[_0x44eb('0x2a')],'name':_0x9d3773['label'],'custom':_['endsWith'](_0x9d3773['name'],'_c')?!![]:![],'options':_0x9d3773[_0x44eb('0x48')]?_[_0x44eb('0x4f')](_['values'](_0x9d3773[_0x44eb('0x48')]),function(_0x42a787){return{'name':_0x42a787[_0x44eb('0x68')],'value':_0x42a787['name']};}):[]};})};}})[_0x44eb('0x13')](respondWithResult(_0x86f7e1,null))[_0x44eb('0x1c')](function(_0x2c1034){var _0x4ba0e6=_0x4bd6df['query'][_0x44eb('0x69')]?0x1f4:_0x2c1034[_0x44eb('0x6a')]||0x1f4;logger['error'](_0x44eb('0x6b'),_0x44eb('0x6c'),_0x4ba0e6,JSON[_0x44eb('0x18')](_0x2c1034));delete _0x2c1034['name'];if(_0x4ba0e6===0x191){_0x4ba0e6=0x190;}_0x86f7e1['status'](_0x4ba0e6)[_0x44eb('0x2b')](_0x4bd6df[_0x44eb('0x30')][_0x44eb('0x69')]?{'message':'Wrong\x20credentials','statusCode':_0x2c1034[_0x44eb('0x6a')]}:_0x2c1034);});};
\ No newline at end of file
+var _0x62e6=['getFields','test','Wrong\x20credentials','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','ejs','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','request','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','count','offset','set','save','update','name','send','index','SugarcrmAccount','rawAttributes','model','keys','query','dateEnd','dateStart','filters','attributes','intersection','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','add','day','merge','filter','key','field','options','include','findAll','show','params','fields','find','create','body','findOne','SugarcrmConfiguration','getConfigurations','addConfiguration','getSubjects','type','Descriptions','getDescriptions','channel','SugarcrmField','Subjects','password','remoteUri','POST','format','%s%s','login','JSON','PLAIN','xCALLY\x20Motion\x20Integration','/service/v4_1/rest.php','get_module_fields','values','module_fields','map','label','endsWith','value','statusCode','getFields,\x20%s,\x20%s,\x20%s'];(function(_0xbdf7c1,_0x49e75e){var _0x4ba1f2=function(_0x5b1437){while(--_0x5b1437){_0xbdf7c1['push'](_0xbdf7c1['shift']());}};_0x4ba1f2(++_0x49e75e);}(_0x62e6,0x156));var _0x662e=function(_0x180c9b,_0x13d173){_0x180c9b=_0x180c9b-0x0;var _0x3ff116=_0x62e6[_0x180c9b];return _0x3ff116;};'use strict';var pdf=require(_0x662e('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x662e('0x1'));var zipdir=require(_0x662e('0x2'));var jsonpatch=require(_0x662e('0x3'));var rp=require(_0x662e('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x662e('0x5'));var util=require('util');var path=require(_0x662e('0x6'));var sox=require(_0x662e('0x7'));var csv=require('to-csv');var ejs=require(_0x662e('0x8'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x662e('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x662e('0xa'));var toCsv=require(_0x662e('0xb'));var querystring=require(_0x662e('0xc'));var Papa=require('papaparse');var Redis=require(_0x662e('0xd'));var qs=require(_0x662e('0xe'));var logger=require(_0x662e('0xf'))(_0x662e('0x10'));var utils=require('../../config/utils');var config=require(_0x662e('0x11'));var db=require(_0x662e('0x12'))['db'];var integrations=require(_0x662e('0x13'));var jayson=require(_0x662e('0x14'));var client=jayson[_0x662e('0x15')][_0x662e('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x528803,_0x4b55b7,_0x37ea03,_0x4fe5d0){return new BPromise(function(_0x2e63cd,_0x5862d6){var _0x42fdb0=_0x4fe5d0||client;return _0x42fdb0[_0x662e('0x17')](_0x528803,_0x37ea03)[_0x662e('0x18')](function(_0x1d8b4a){logger['info'](_0x662e('0x19'),_0x4b55b7,_0x662e('0x1a'));logger[_0x662e('0x1b')](_0x662e('0x1c'),_0x4b55b7,_0x662e('0x1a'),JSON[_0x662e('0x1d')](_0x1d8b4a));if(_0x1d8b4a[_0x662e('0x1e')]){if(_0x1d8b4a[_0x662e('0x1e')][_0x662e('0x1f')]===0x1f4){logger[_0x662e('0x1e')](_0x662e('0x19'),_0x4b55b7,_0x1d8b4a[_0x662e('0x1e')]['message']);return _0x5862d6(_0x1d8b4a[_0x662e('0x1e')][_0x662e('0x20')]);}logger['error'](_0x662e('0x19'),_0x4b55b7,_0x1d8b4a[_0x662e('0x1e')][_0x662e('0x20')]);return _0x2e63cd(_0x1d8b4a[_0x662e('0x1e')]['message']);}else{logger['info'](_0x662e('0x19'),_0x4b55b7,_0x662e('0x1a'));_0x2e63cd(_0x1d8b4a[_0x662e('0x21')][_0x662e('0x20')]);}})[_0x662e('0x22')](function(_0x24c34b){logger['error'](_0x662e('0x19'),_0x4b55b7,_0x24c34b);_0x5862d6(_0x24c34b);});});}function respondWithStatusCode(_0x19cf9f,_0x4c1995){_0x4c1995=_0x4c1995||0xcc;return function(_0x4b14ae){if(_0x4b14ae){return _0x19cf9f[_0x662e('0x23')](_0x4c1995);}return _0x19cf9f['status'](_0x4c1995)[_0x662e('0x24')]();};}function respondWithResult(_0x3a064e,_0x30b84a){_0x30b84a=_0x30b84a||0xc8;return function(_0x39225a){if(_0x39225a){return _0x3a064e[_0x662e('0x25')](_0x30b84a)[_0x662e('0x26')](_0x39225a);}};}function respondWithFilteredResult(_0x267abf,_0x3f4886){return function(_0xeca591){if(_0xeca591){var _0x973bce=_0xeca591[_0x662e('0x27')],_0x402fad=_0x3f4886[_0x662e('0x28')],_0x3380e4=_0x3f4886[_0x662e('0x28')]+_0x3f4886['limit'],_0x180291;if(_0x3380e4>=_0x973bce){_0x3380e4=_0x973bce;_0x180291=0xc8;}else{_0x180291=0xce;}_0x267abf[_0x662e('0x25')](_0x180291);return _0x267abf[_0x662e('0x29')]('Content-Range',_0x402fad+'-'+_0x3380e4+'/'+_0x973bce)['json'](_0xeca591);}return null;};}function patchUpdates(_0x4d8e66){return function(_0x329eb1){try{jsonpatch['apply'](_0x329eb1,_0x4d8e66,!![]);}catch(_0x1971e7){return BPromise['reject'](_0x1971e7);}return _0x329eb1[_0x662e('0x2a')]();};}function saveUpdates(_0x24e174,_0x2b87d9){return function(_0x1b7430){if(_0x1b7430){return _0x1b7430[_0x662e('0x2b')](_0x24e174)[_0x662e('0x18')](function(_0x24549a){return _0x24549a;});}return null;};}function removeEntity(_0xb0bb1d,_0x17eb6b){return function(_0x301208){if(_0x301208){return _0x301208['destroy']()[_0x662e('0x18')](function(){_0xb0bb1d[_0x662e('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2853b0,_0x43a042){return function(_0x36aa76){if(!_0x36aa76){_0x2853b0[_0x662e('0x23')](0x194);}return _0x36aa76;};}function handleError(_0x150c9c,_0x16f3a5){_0x16f3a5=_0x16f3a5||0x1f4;return function(_0x165780){logger[_0x662e('0x1e')](_0x165780['stack']);if(_0x165780[_0x662e('0x2c')]){delete _0x165780[_0x662e('0x2c')];}_0x150c9c['status'](_0x16f3a5)[_0x662e('0x2d')](_0x165780);};}exports[_0x662e('0x2e')]=function(_0x4ed324,_0x1c0c11){var _0x1696f0={},_0x2e7e1e={},_0x42a663={'count':0x0,'rows':[]};var _0x357bec=db[_0x662e('0x2f')][_0x662e('0x30')];_0x2e7e1e[_0x662e('0x31')]=_[_0x662e('0x32')](_0x357bec);var _0x33d52d={'dateStart':_0x4ed324[_0x662e('0x33')]['dateStart'],'dateEnd':_0x4ed324[_0x662e('0x33')][_0x662e('0x34')]};delete _0x4ed324[_0x662e('0x33')][_0x662e('0x35')];delete _0x4ed324[_0x662e('0x33')]['dateEnd'];_0x2e7e1e['query']=_['keys'](_0x4ed324[_0x662e('0x33')]);_0x2e7e1e[_0x662e('0x36')]=_['intersection'](_0x2e7e1e['model'],_0x2e7e1e[_0x662e('0x33')]);_0x1696f0[_0x662e('0x37')]=_[_0x662e('0x38')](_0x2e7e1e[_0x662e('0x31')],qs['fields'](_0x4ed324[_0x662e('0x33')]['fields']));_0x1696f0[_0x662e('0x37')]=_0x1696f0[_0x662e('0x37')][_0x662e('0x39')]?_0x1696f0[_0x662e('0x37')]:_0x2e7e1e[_0x662e('0x31')];if(!_0x4ed324[_0x662e('0x33')][_0x662e('0x3a')](_0x662e('0x3b'))){_0x1696f0[_0x662e('0x3c')]=qs[_0x662e('0x3c')](_0x4ed324[_0x662e('0x33')][_0x662e('0x3c')]);_0x1696f0[_0x662e('0x28')]=qs[_0x662e('0x28')](_0x4ed324[_0x662e('0x33')][_0x662e('0x28')]);}_0x1696f0[_0x662e('0x3d')]=qs['sort'](_0x4ed324[_0x662e('0x33')][_0x662e('0x3e')]);_0x1696f0[_0x662e('0x3f')]=qs[_0x662e('0x36')](_[_0x662e('0x40')](_0x4ed324['query'],_0x2e7e1e[_0x662e('0x36')]));if(_0x33d52d['dateStart']){if(_0x33d52d[_0x662e('0x34')]){_0x33d52d[_0x662e('0x34')]=moment(_0x33d52d[_0x662e('0x34')])[_0x662e('0x41')](0x1,_0x662e('0x42'));}else{_0x33d52d[_0x662e('0x34')]=moment(_0x33d52d['dateStart'])[_0x662e('0x41')](0x1,_0x662e('0x42'));}_[_0x662e('0x43')](_0x1696f0[_0x662e('0x3f')],{'createdAt':{'$gte':_0x33d52d[_0x662e('0x35')],'$lte':_0x33d52d[_0x662e('0x34')]}});}if(_0x4ed324['query'][_0x662e('0x44')]){_0x1696f0[_0x662e('0x3f')]=_['merge'](_0x1696f0[_0x662e('0x3f')],{'$or':_['map'](_0x357bec,function(_0x2a00cf){if(_0x2a00cf['type'][_0x662e('0x45')]!=='VIRTUAL'){var _0x12824f={};_0x12824f[_0x2a00cf[_0x662e('0x46')]]={'$like':'%'+_0x4ed324['query'][_0x662e('0x44')]+'%'};return _0x12824f;}})});}_0x1696f0=_[_0x662e('0x43')]({},_0x1696f0,_0x4ed324[_0x662e('0x47')]);var _0x55c584={'where':_0x1696f0[_0x662e('0x3f')]};return db['SugarcrmAccount'][_0x662e('0x27')](_0x55c584)[_0x662e('0x18')](function(_0x26c996){_0x42a663[_0x662e('0x27')]=_0x26c996;if(_0x4ed324[_0x662e('0x33')]['includeAll']){_0x1696f0[_0x662e('0x48')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0x662e('0x49')](_0x1696f0);})[_0x662e('0x18')](function(_0x19996d){_0x42a663['rows']=_0x19996d;return _0x42a663;})[_0x662e('0x18')](respondWithFilteredResult(_0x1c0c11,_0x1696f0))[_0x662e('0x22')](handleError(_0x1c0c11,null));};exports[_0x662e('0x4a')]=function(_0x246534,_0x9974f9){var _0x2a11d1={'raw':![],'where':{'id':_0x246534[_0x662e('0x4b')]['id']}},_0x1071dd={};_0x1071dd[_0x662e('0x31')]=_[_0x662e('0x32')](db[_0x662e('0x2f')][_0x662e('0x30')]);_0x1071dd[_0x662e('0x33')]=_['keys'](_0x246534[_0x662e('0x33')]);_0x1071dd[_0x662e('0x36')]=_[_0x662e('0x38')](_0x1071dd['model'],_0x1071dd['query']);_0x2a11d1[_0x662e('0x37')]=_[_0x662e('0x38')](_0x1071dd[_0x662e('0x31')],qs[_0x662e('0x4c')](_0x246534['query']['fields']));_0x2a11d1[_0x662e('0x37')]=_0x2a11d1[_0x662e('0x37')][_0x662e('0x39')]?_0x2a11d1[_0x662e('0x37')]:_0x1071dd[_0x662e('0x31')];if(_0x246534[_0x662e('0x33')]['includeAll']){_0x2a11d1['include']=[{'all':!![]}];}_0x2a11d1=_[_0x662e('0x43')]({},_0x2a11d1,_0x246534['options']);return db[_0x662e('0x2f')][_0x662e('0x4d')](_0x2a11d1)['then'](handleEntityNotFound(_0x9974f9,null))[_0x662e('0x18')](respondWithResult(_0x9974f9,null))[_0x662e('0x22')](handleError(_0x9974f9,null));};exports[_0x662e('0x4e')]=function(_0x2ecb9c,_0x20aeb0){return db[_0x662e('0x2f')]['create'](_0x2ecb9c['body'],{})[_0x662e('0x18')](respondWithResult(_0x20aeb0,0xc9))[_0x662e('0x22')](handleError(_0x20aeb0,null));};exports['update']=function(_0x4ea99d,_0xf50a11){if(_0x4ea99d[_0x662e('0x4f')]['id']){delete _0x4ea99d[_0x662e('0x4f')]['id'];}return db[_0x662e('0x2f')][_0x662e('0x4d')]({'where':{'id':_0x4ea99d[_0x662e('0x4b')]['id']}})[_0x662e('0x18')](handleEntityNotFound(_0xf50a11,null))[_0x662e('0x18')](saveUpdates(_0x4ea99d[_0x662e('0x4f')],null))[_0x662e('0x18')](respondWithResult(_0xf50a11,null))[_0x662e('0x22')](handleError(_0xf50a11,null));};exports['destroy']=function(_0x1889c9,_0x4de409){return db[_0x662e('0x2f')]['find']({'where':{'id':_0x1889c9[_0x662e('0x4b')]['id']}})[_0x662e('0x18')](handleEntityNotFound(_0x4de409,null))[_0x662e('0x18')](removeEntity(_0x4de409,null))[_0x662e('0x22')](handleError(_0x4de409,null));};exports['getConfigurations']=function(_0x586c80,_0x3b3564,_0x442316){var _0x50be37={};var _0xa74787={};var _0x38406e;var _0x2339ea;return db[_0x662e('0x2f')][_0x662e('0x50')]({'where':{'id':_0x586c80['params']['id']}})[_0x662e('0x18')](handleEntityNotFound(_0x3b3564,null))[_0x662e('0x18')](function(_0x25e27){if(_0x25e27){_0x38406e=_0x25e27;_0xa74787[_0x662e('0x31')]=_['keys'](db[_0x662e('0x51')]['rawAttributes']);_0xa74787[_0x662e('0x33')]=_['keys'](_0x586c80[_0x662e('0x33')]);_0xa74787[_0x662e('0x36')]=_[_0x662e('0x38')](_0xa74787[_0x662e('0x31')],_0xa74787[_0x662e('0x33')]);_0x50be37[_0x662e('0x37')]=_[_0x662e('0x38')](_0xa74787[_0x662e('0x31')],qs[_0x662e('0x4c')](_0x586c80[_0x662e('0x33')][_0x662e('0x4c')]));_0x50be37[_0x662e('0x37')]=_0x50be37['attributes'][_0x662e('0x39')]?_0x50be37[_0x662e('0x37')]:_0xa74787['model'];_0x50be37['order']=qs[_0x662e('0x3e')](_0x586c80[_0x662e('0x33')][_0x662e('0x3e')]);_0x50be37[_0x662e('0x3f')]=qs[_0x662e('0x36')](_[_0x662e('0x40')](_0x586c80[_0x662e('0x33')],_0xa74787[_0x662e('0x36')]));if(_0x586c80['query'][_0x662e('0x44')]){_0x50be37[_0x662e('0x3f')]=_[_0x662e('0x43')](_0x50be37[_0x662e('0x3f')],{'$or':_['map'](_0x50be37[_0x662e('0x37')],function(_0x4be890){var _0x591411={};_0x591411[_0x4be890]={'$like':'%'+_0x586c80[_0x662e('0x33')][_0x662e('0x44')]+'%'};return _0x591411;})});}_0x50be37=_[_0x662e('0x43')]({},_0x50be37,_0x586c80[_0x662e('0x47')]);return _0x38406e['getConfigurations'](_0x50be37);}})[_0x662e('0x18')](function(_0x3281de){if(_0x3281de){_0x2339ea=_0x3281de['length'];if(!_0x586c80['query'][_0x662e('0x3a')]('nolimit')){_0x50be37['limit']=qs['limit'](_0x586c80[_0x662e('0x33')]['limit']);_0x50be37[_0x662e('0x28')]=qs[_0x662e('0x28')](_0x586c80[_0x662e('0x33')]['offset']);}return _0x38406e[_0x662e('0x52')](_0x50be37);}})[_0x662e('0x18')](function(_0x506070){if(_0x506070){return _0x506070?{'count':_0x2339ea,'rows':_0x506070}:null;}})['then'](respondWithResult(_0x3b3564,null))['catch'](handleError(_0x3b3564,null));};exports[_0x662e('0x53')]=function(_0x107846,_0xdc6c65,_0x418d42){if(_0x107846[_0x662e('0x4f')]['id']){delete _0x107846[_0x662e('0x4f')]['id'];}return db['SugarcrmAccount'][_0x662e('0x50')]({'where':{'id':_0x107846[_0x662e('0x4b')]['id']}})[_0x662e('0x18')](handleEntityNotFound(_0xdc6c65,null))[_0x662e('0x18')](function(_0x423966){if(_0x423966){_0x107846[_0x662e('0x4f')]['AccountId']=_0x423966['id'];_0x107846[_0x662e('0x4f')]['Subjects']=integrations[_0x662e('0x54')](_0x107846[_0x662e('0x4f')]['channel'],_0x107846[_0x662e('0x4f')][_0x662e('0x55')]);_0x107846['body'][_0x662e('0x56')]=integrations[_0x662e('0x57')](_0x107846[_0x662e('0x4f')][_0x662e('0x58')],_0x107846[_0x662e('0x4f')][_0x662e('0x55')]);return db[_0x662e('0x51')][_0x662e('0x4e')](_0x107846[_0x662e('0x4f')],{'include':[{'model':db[_0x662e('0x59')],'as':_0x662e('0x5a')},{'model':db[_0x662e('0x59')],'as':_0x662e('0x56')}]});}return null;})['then'](respondWithResult(_0xdc6c65,null))[_0x662e('0x22')](handleError(_0xdc6c65,null));};exports['getFields']=function(_0x5a3572,_0x1e3f41,_0x419611){var _0x274b46;return db[_0x662e('0x2f')][_0x662e('0x50')]({'where':{'id':_0x5a3572[_0x662e('0x4b')]['id']},'attributes':['id','username',_0x662e('0x5b'),_0x662e('0x5c')]})[_0x662e('0x18')](handleEntityNotFound(_0x1e3f41,null))['then'](function(_0x1384b4){if(_0x1384b4){_0x274b46=_0x1384b4[_0x662e('0x5c')];return rp({'method':_0x662e('0x5d'),'uri':util[_0x662e('0x5e')](_0x662e('0x5f'),_0x274b46,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x662e('0x60'),'input_type':_0x662e('0x61'),'response_type':_0x662e('0x61'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x1384b4['username'],'password':_0x1384b4['password'],'encryption':_0x662e('0x62')},'application':_0x662e('0x63')})}});}})['then'](function(_0x47c2d9){if(_0x47c2d9){return rp({'method':_0x662e('0x5d'),'uri':util['format'](_0x662e('0x5f'),_0x274b46,_0x662e('0x64')),'json':!![],'form':{'method':_0x662e('0x65'),'input_type':_0x662e('0x61'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x47c2d9['id'],'module_name':'Calls'})}});}})[_0x662e('0x18')](function(_0xd77333){if(_0xd77333){var _0x3cc861=_[_0x662e('0x66')](_0xd77333[_0x662e('0x67')]);return{'count':_0x3cc861['length'],'rows':_[_0x662e('0x68')](_0x3cc861,function(_0x247ba9){return{'id':_0x247ba9[_0x662e('0x2c')],'name':_0x247ba9[_0x662e('0x69')],'custom':_[_0x662e('0x6a')](_0x247ba9[_0x662e('0x2c')],'_c')?!![]:![],'options':_0x247ba9['options']?_[_0x662e('0x68')](_[_0x662e('0x66')](_0x247ba9[_0x662e('0x47')]),function(_0x1cc554){return{'name':_0x1cc554[_0x662e('0x6b')],'value':_0x1cc554['name']};}):[]};})};}})[_0x662e('0x18')](respondWithResult(_0x1e3f41,null))['catch'](function(_0x504450){var _0x1f9edf=_0x5a3572['query']['test']?0x1f4:_0x504450[_0x662e('0x6c')]||0x1f4;logger[_0x662e('0x1e')](_0x662e('0x6d'),_0x662e('0x6e'),_0x1f9edf,JSON[_0x662e('0x1d')](_0x504450));delete _0x504450['name'];if(_0x1f9edf===0x191){_0x1f9edf=0x190;}_0x1e3f41[_0x662e('0x25')](_0x1f9edf)[_0x662e('0x2d')](_0x5a3572[_0x662e('0x33')][_0x662e('0x6f')]?{'message':_0x662e('0x70'),'statusCode':_0x504450[_0x662e('0x6c')]}:_0x504450);});};
\ No newline at end of file
index 8b271c5..ab6ebfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb994=['api','moment','bluebird','request-promise','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x39211c,_0x2bb85b){var _0x2a2cc5=function(_0x25e1ae){while(--_0x25e1ae){_0x39211c['push'](_0x39211c['shift']());}};_0x2a2cc5(++_0x2bb85b);}(_0xb994,0x70));var _0x4b99=function(_0x28714d,_0x4e2fd3){_0x28714d=_0x28714d-0x0;var _0x2233c4=_0xb994[_0x28714d];return _0x2233c4;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x4b99('0x0'));var moment=require(_0x4b99('0x1'));var BPromise=require(_0x4b99('0x2'));var rp=require(_0x4b99('0x3'));var attributes=require(_0x4b99('0x4'));var integrations=require(_0x4b99('0x5'));module[_0x4b99('0x6')]=function(_0x4d97e9,_0x9828f){return _0x4d97e9[_0x4b99('0x7')]('SugarcrmAccount',attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7efc=['SugarcrmAccount','int_sugarcrm_accounts','api','moment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0xc4a974,_0x57cc1a){var _0x33370f=function(_0x4470da){while(--_0x4470da){_0xc4a974['push'](_0xc4a974['shift']());}};_0x33370f(++_0x57cc1a);}(_0x7efc,0x182));var _0xc7ef=function(_0x4d2c26,_0x2701f9){_0x4d2c26=_0x4d2c26-0x0;var _0x5bf9b4=_0x7efc[_0x4d2c26];return _0x5bf9b4;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xc7ef('0x0'));var moment=require(_0xc7ef('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0xc7ef('0x2'));var integrations=require(_0xc7ef('0x3'));module[_0xc7ef('0x4')]=function(_0x445185,_0x2b5a05){return _0x445185[_0xc7ef('0x5')](_0xc7ef('0x6'),attributes,{'tableName':_0xc7ef('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 612da94..138dbe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x639c=['error','message','result','SugarcrmAccount','findAll','options','raw','where','attributes','limit','map','include','model','then','GetSugarcrmAccount','catch','ShowSugarcrmAccount','find','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x43c26d,_0x4cfd6c){var _0x331074=function(_0x169c61){while(--_0x169c61){_0x43c26d['push'](_0x43c26d['shift']());}};_0x331074(++_0x4cfd6c);}(_0x639c,0x123));var _0xc639=function(_0xe5f49c,_0x4959d9){_0xe5f49c=_0xe5f49c-0x0;var _0x392cee=_0x639c[_0xe5f49c];return _0x392cee;};'use strict';var _=require('lodash');var util=require(_0xc639('0x0'));var moment=require(_0xc639('0x1'));var BPromise=require(_0xc639('0x2'));var rs=require(_0xc639('0x3'));var fs=require('fs');var Redis=require(_0xc639('0x4'));var db=require(_0xc639('0x5'))['db'];var utils=require(_0xc639('0x6'));var logger=require(_0xc639('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc639('0x8')][_0xc639('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x37c642,_0x462c26,_0x2ccf91){return new BPromise(function(_0x528ce3,_0x4fafcc){return client[_0xc639('0xa')](_0x37c642,_0x2ccf91)['then'](function(_0x69c0bb){logger[_0xc639('0xb')](_0xc639('0xc'),_0x462c26,'request\x20sent');logger['debug']('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x462c26,_0xc639('0xd'),JSON[_0xc639('0xe')](_0x69c0bb));if(_0x69c0bb[_0xc639('0xf')]){if(_0x69c0bb[_0xc639('0xf')]['code']===0x1f4){logger[_0xc639('0xf')]('SugarcrmAccount,\x20%s,\x20%s',_0x462c26,_0x69c0bb[_0xc639('0xf')]['message']);return _0x4fafcc(_0x69c0bb[_0xc639('0xf')][_0xc639('0x10')]);}logger['error'](_0xc639('0xc'),_0x462c26,_0x69c0bb['error'][_0xc639('0x10')]);return _0x528ce3(_0x69c0bb['error'][_0xc639('0x10')]);}else{logger[_0xc639('0xb')](_0xc639('0xc'),_0x462c26,_0xc639('0xd'));_0x528ce3(_0x69c0bb[_0xc639('0x11')]['message']);}})['catch'](function(_0x553ae8){logger['error'](_0xc639('0xc'),_0x462c26,_0x553ae8);_0x4fafcc(_0x553ae8);});});}exports['GetSugarcrmAccount']=function(_0x40af79){var _0x368377=this;return new Promise(function(_0x13d98c,_0x14300){return db[_0xc639('0x12')][_0xc639('0x13')]({'raw':_0x40af79[_0xc639('0x14')]?_0x40af79[_0xc639('0x14')][_0xc639('0x15')]===undefined?!![]:![]:!![],'where':_0x40af79[_0xc639('0x14')]?_0x40af79[_0xc639('0x14')][_0xc639('0x16')]||null:null,'attributes':_0x40af79[_0xc639('0x14')]?_0x40af79[_0xc639('0x14')][_0xc639('0x17')]||null:null,'limit':_0x40af79[_0xc639('0x14')]?_0x40af79[_0xc639('0x14')][_0xc639('0x18')]||null:null,'include':_0x40af79[_0xc639('0x14')]?_0x40af79['options']['include']?_[_0xc639('0x19')](_0x40af79[_0xc639('0x14')][_0xc639('0x1a')],function(_0xcc9e62){return{'model':db[_0xcc9e62['model']],'as':_0xcc9e62['as'],'attributes':_0xcc9e62[_0xc639('0x17')],'include':_0xcc9e62[_0xc639('0x1a')]?_[_0xc639('0x19')](_0xcc9e62['include'],function(_0xb774ae){return{'model':db[_0xb774ae[_0xc639('0x1b')]],'as':_0xb774ae['as'],'attributes':_0xb774ae['attributes'],'include':_0xb774ae['include']?_[_0xc639('0x19')](_0xb774ae[_0xc639('0x1a')],function(_0x38db2e){return{'model':db[_0x38db2e[_0xc639('0x1b')]],'as':_0x38db2e['as'],'attributes':_0x38db2e[_0xc639('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc639('0x1c')](function(_0xbab2e4){logger['info'](_0xc639('0x1d'),_0x40af79);logger['debug'](_0xc639('0x1d'),_0x40af79,JSON[_0xc639('0xe')](_0xbab2e4));_0x13d98c(_0xbab2e4);})[_0xc639('0x1e')](function(_0x518a5f){logger[_0xc639('0xf')](_0xc639('0x1d'),_0x518a5f['message'],_0x40af79);_0x14300(_0x368377[_0xc639('0xf')](0x1f4,_0x518a5f[_0xc639('0x10')]));});});};exports[_0xc639('0x1f')]=function(_0x2ffb4d){var _0x15ed67=this;return new Promise(function(_0x47ba23,_0x3ab6b4){return db['SugarcrmAccount'][_0xc639('0x20')]({'raw':_0x2ffb4d[_0xc639('0x14')]?_0x2ffb4d['options'][_0xc639('0x15')]===undefined?!![]:![]:!![],'where':_0x2ffb4d[_0xc639('0x14')]?_0x2ffb4d[_0xc639('0x14')][_0xc639('0x16')]||null:null,'attributes':_0x2ffb4d[_0xc639('0x14')]?_0x2ffb4d['options'][_0xc639('0x17')]||null:null,'include':_0x2ffb4d['options']?_0x2ffb4d[_0xc639('0x14')][_0xc639('0x1a')]?_[_0xc639('0x19')](_0x2ffb4d[_0xc639('0x14')]['include'],function(_0xd237bd){return{'model':db[_0xd237bd['model']],'as':_0xd237bd['as'],'attributes':_0xd237bd[_0xc639('0x17')],'include':_0xd237bd[_0xc639('0x1a')]?_['map'](_0xd237bd[_0xc639('0x1a')],function(_0x115118){return{'model':db[_0x115118[_0xc639('0x1b')]],'as':_0x115118['as'],'attributes':_0x115118[_0xc639('0x17')],'include':_0x115118['include']?_[_0xc639('0x19')](_0x115118[_0xc639('0x1a')],function(_0x5d1c6f){return{'model':db[_0x5d1c6f[_0xc639('0x1b')]],'as':_0x5d1c6f['as'],'attributes':_0x5d1c6f[_0xc639('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x47851b){logger[_0xc639('0xb')](_0xc639('0x1f'),_0x2ffb4d);logger[_0xc639('0x21')]('ShowSugarcrmAccount',_0x2ffb4d,JSON[_0xc639('0xe')](_0x47851b));_0x47ba23(_0x47851b);})[_0xc639('0x1e')](function(_0xfb951e){logger[_0xc639('0xf')](_0xc639('0x1f'),_0xfb951e[_0xc639('0x10')],_0x2ffb4d);_0x3ab6b4(_0x15ed67['error'](0x1f4,_0xfb951e['message']));});});};
\ No newline at end of file
+var _0x4c27=['bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','SugarcrmAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetSugarcrmAccount','ShowSugarcrmAccount','find','util','moment'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x4c27,0x86));var _0x74c2=function(_0x41ad84,_0x2df4e4){_0x41ad84=_0x41ad84-0x0;var _0x29d7e5=_0x4c27[_0x41ad84];return _0x29d7e5;};'use strict';var _=require('lodash');var util=require(_0x74c2('0x0'));var moment=require(_0x74c2('0x1'));var BPromise=require(_0x74c2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x74c2('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x74c2('0x4'))(_0x74c2('0x5'));var config=require(_0x74c2('0x6'));var jayson=require(_0x74c2('0x7'));var client=jayson[_0x74c2('0x8')][_0x74c2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x465cf3,_0x15bdbe,_0x5ec67c){return new BPromise(function(_0x22cabe,_0x702cc2){return client[_0x74c2('0xa')](_0x465cf3,_0x5ec67c)[_0x74c2('0xb')](function(_0x55e311){logger['info'](_0x74c2('0xc'),_0x15bdbe,_0x74c2('0xd'));logger[_0x74c2('0xe')](_0x74c2('0xf'),_0x15bdbe,_0x74c2('0xd'),JSON[_0x74c2('0x10')](_0x55e311));if(_0x55e311[_0x74c2('0x11')]){if(_0x55e311[_0x74c2('0x11')]['code']===0x1f4){logger[_0x74c2('0x11')](_0x74c2('0xc'),_0x15bdbe,_0x55e311[_0x74c2('0x11')][_0x74c2('0x12')]);return _0x702cc2(_0x55e311[_0x74c2('0x11')][_0x74c2('0x12')]);}logger[_0x74c2('0x11')](_0x74c2('0xc'),_0x15bdbe,_0x55e311[_0x74c2('0x11')][_0x74c2('0x12')]);return _0x22cabe(_0x55e311[_0x74c2('0x11')][_0x74c2('0x12')]);}else{logger[_0x74c2('0x13')](_0x74c2('0xc'),_0x15bdbe,_0x74c2('0xd'));_0x22cabe(_0x55e311['result']['message']);}})[_0x74c2('0x14')](function(_0x2fa3ba){logger['error'](_0x74c2('0xc'),_0x15bdbe,_0x2fa3ba);_0x702cc2(_0x2fa3ba);});});}exports['GetSugarcrmAccount']=function(_0x874a40){var _0x5c370a=this;return new Promise(function(_0x57e8f7,_0x3375ce){return db[_0x74c2('0x15')][_0x74c2('0x16')]({'raw':_0x874a40[_0x74c2('0x17')]?_0x874a40[_0x74c2('0x17')][_0x74c2('0x18')]===undefined?!![]:![]:!![],'where':_0x874a40[_0x74c2('0x17')]?_0x874a40[_0x74c2('0x17')][_0x74c2('0x19')]||null:null,'attributes':_0x874a40[_0x74c2('0x17')]?_0x874a40[_0x74c2('0x17')][_0x74c2('0x1a')]||null:null,'limit':_0x874a40[_0x74c2('0x17')]?_0x874a40[_0x74c2('0x17')][_0x74c2('0x1b')]||null:null,'include':_0x874a40['options']?_0x874a40['options'][_0x74c2('0x1c')]?_[_0x74c2('0x1d')](_0x874a40[_0x74c2('0x17')][_0x74c2('0x1c')],function(_0xa1b777){return{'model':db[_0xa1b777['model']],'as':_0xa1b777['as'],'attributes':_0xa1b777['attributes'],'include':_0xa1b777[_0x74c2('0x1c')]?_[_0x74c2('0x1d')](_0xa1b777[_0x74c2('0x1c')],function(_0x446c2c){return{'model':db[_0x446c2c['model']],'as':_0x446c2c['as'],'attributes':_0x446c2c[_0x74c2('0x1a')],'include':_0x446c2c[_0x74c2('0x1c')]?_[_0x74c2('0x1d')](_0x446c2c[_0x74c2('0x1c')],function(_0x1be533){return{'model':db[_0x1be533[_0x74c2('0x1e')]],'as':_0x1be533['as'],'attributes':_0x1be533[_0x74c2('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x74c2('0xb')](function(_0x512a91){logger[_0x74c2('0x13')](_0x74c2('0x1f'),_0x874a40);logger[_0x74c2('0xe')](_0x74c2('0x1f'),_0x874a40,JSON[_0x74c2('0x10')](_0x512a91));_0x57e8f7(_0x512a91);})[_0x74c2('0x14')](function(_0x436e4c){logger['error'](_0x74c2('0x1f'),_0x436e4c[_0x74c2('0x12')],_0x874a40);_0x3375ce(_0x5c370a[_0x74c2('0x11')](0x1f4,_0x436e4c[_0x74c2('0x12')]));});});};exports[_0x74c2('0x20')]=function(_0x4576d8){var _0x2c2442=this;return new Promise(function(_0x3ffeba,_0x4dc080){return db[_0x74c2('0x15')][_0x74c2('0x21')]({'raw':_0x4576d8[_0x74c2('0x17')]?_0x4576d8['options'][_0x74c2('0x18')]===undefined?!![]:![]:!![],'where':_0x4576d8[_0x74c2('0x17')]?_0x4576d8[_0x74c2('0x17')]['where']||null:null,'attributes':_0x4576d8[_0x74c2('0x17')]?_0x4576d8[_0x74c2('0x17')][_0x74c2('0x1a')]||null:null,'include':_0x4576d8[_0x74c2('0x17')]?_0x4576d8[_0x74c2('0x17')][_0x74c2('0x1c')]?_[_0x74c2('0x1d')](_0x4576d8[_0x74c2('0x17')][_0x74c2('0x1c')],function(_0x362878){return{'model':db[_0x362878[_0x74c2('0x1e')]],'as':_0x362878['as'],'attributes':_0x362878[_0x74c2('0x1a')],'include':_0x362878[_0x74c2('0x1c')]?_[_0x74c2('0x1d')](_0x362878[_0x74c2('0x1c')],function(_0x3d0fa4){return{'model':db[_0x3d0fa4[_0x74c2('0x1e')]],'as':_0x3d0fa4['as'],'attributes':_0x3d0fa4[_0x74c2('0x1a')],'include':_0x3d0fa4['include']?_[_0x74c2('0x1d')](_0x3d0fa4['include'],function(_0x54b3d9){return{'model':db[_0x54b3d9[_0x74c2('0x1e')]],'as':_0x54b3d9['as'],'attributes':_0x54b3d9[_0x74c2('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x74c2('0xb')](function(_0x5cd550){logger[_0x74c2('0x13')](_0x74c2('0x20'),_0x4576d8);logger[_0x74c2('0xe')]('ShowSugarcrmAccount',_0x4576d8,JSON['stringify'](_0x5cd550));_0x3ffeba(_0x5cd550);})[_0x74c2('0x14')](function(_0x3ac1ae){logger[_0x74c2('0x11')]('ShowSugarcrmAccount',_0x3ac1ae['message'],_0x4576d8);_0x4dc080(_0x2c2442[_0x74c2('0x11')](0x1f4,_0x3ac1ae[_0x74c2('0x12')]));});});};
\ No newline at end of file
index df2e12f..3dec19c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7717=['exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','post','create','update','delete','destroy'];(function(_0x36f3df,_0x2b1621){var _0xcfb7b7=function(_0xcc9fc0){while(--_0xcc9fc0){_0x36f3df['push'](_0x36f3df['shift']());}};_0xcfb7b7(++_0x2b1621);}(_0x7717,0x11f));var _0x7771=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x7717[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0x7771('0x0'));var util=require(_0x7771('0x1'));var path=require(_0x7771('0x2'));var timeout=require('connect-timeout');var express=require(_0x7771('0x3'));var router=express[_0x7771('0x4')]();var auth=require(_0x7771('0x5'));var interaction=require(_0x7771('0x6'));var config=require(_0x7771('0x7'));var controller=require('./intSugarcrmConfiguration.controller');router[_0x7771('0x8')]('/',auth[_0x7771('0x9')](),controller['index']);router[_0x7771('0x8')](_0x7771('0xa'),auth[_0x7771('0x9')](),controller[_0x7771('0xb')]);router[_0x7771('0x8')](_0x7771('0xc'),auth['isAuthenticated'](),controller[_0x7771('0xd')]);router[_0x7771('0x8')](_0x7771('0xe'),auth['isAuthenticated'](),controller[_0x7771('0xf')]);router[_0x7771('0x8')]('/:id/descriptions',auth[_0x7771('0x9')](),controller['getDescriptions']);router[_0x7771('0x10')]('/',auth[_0x7771('0x9')](),controller[_0x7771('0x11')]);router['put'](_0x7771('0xa'),auth[_0x7771('0x9')](),controller[_0x7771('0x12')]);router[_0x7771('0x13')](_0x7771('0xa'),auth[_0x7771('0x9')](),controller[_0x7771('0x14')]);module[_0x7771('0x15')]=router;
\ No newline at end of file
+var _0xac25=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','/:id','update'];(function(_0x55587d,_0x2e13b7){var _0x440f69=function(_0x23abbd){while(--_0x23abbd){_0x55587d['push'](_0x55587d['shift']());}};_0x440f69(++_0x2e13b7);}(_0xac25,0x1e5));var _0x5ac2=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xac25[_0x2576d7];return _0x16a08c;};'use strict';var multer=require(_0x5ac2('0x0'));var util=require(_0x5ac2('0x1'));var path=require(_0x5ac2('0x2'));var timeout=require(_0x5ac2('0x3'));var express=require(_0x5ac2('0x4'));var router=express[_0x5ac2('0x5')]();var auth=require(_0x5ac2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5ac2('0x7'));var controller=require(_0x5ac2('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5ac2('0x9')]('/:id',auth[_0x5ac2('0xa')](),controller['show']);router['get']('/:id/fields',auth[_0x5ac2('0xa')](),controller[_0x5ac2('0xb')]);router['get'](_0x5ac2('0xc'),auth[_0x5ac2('0xa')](),controller[_0x5ac2('0xd')]);router[_0x5ac2('0x9')](_0x5ac2('0xe'),auth['isAuthenticated'](),controller[_0x5ac2('0xf')]);router[_0x5ac2('0x10')]('/',auth['isAuthenticated'](),controller[_0x5ac2('0x11')]);router[_0x5ac2('0x12')](_0x5ac2('0x13'),auth[_0x5ac2('0xa')](),controller[_0x5ac2('0x14')]);router['delete'](_0x5ac2('0x13'),auth[_0x5ac2('0xa')](),controller[_0x5ac2('0x15')]);module[_0x5ac2('0x16')]=router;
\ No newline at end of file
index c07bc47..1b0eb07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x784a=['sequelize','exports','STRING'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x784a,0xc3));var _0xa784=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x784a[_0x8c43de];return _0xa6591b;};'use strict';var Sequelize=require(_0xa784('0x0'));module[_0xa784('0x1')]={'name':{'type':Sequelize[_0xa784('0x2')]},'description':{'type':Sequelize[_0xa784('0x2')]}};
\ No newline at end of file
+var _0xbbfd=['STRING','sequelize','exports'];(function(_0x38aeea,_0x57522a){var _0x5e8d2c=function(_0xff08ce){while(--_0xff08ce){_0x38aeea['push'](_0x38aeea['shift']());}};_0x5e8d2c(++_0x57522a);}(_0xbbfd,0x1ae));var _0xdbbf=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xbbfd[_0x7e2eb0];return _0xd92de4;};'use strict';var Sequelize=require(_0xdbbf('0x0'));module[_0xdbbf('0x1')]={'name':{'type':Sequelize[_0xdbbf('0x2')]},'description':{'type':Sequelize[_0xdbbf('0x2')]}};
\ No newline at end of file
index 7f8071a..49ddab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70cb=['sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','then','destroy','name','send','index','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','add','day','merge','where','map','key','VIRTUAL','filter','options','includeAll','include','SugarcrmConfiguration','findAll','rows','show','create','body','update','find','params','findOne','SugarcrmField','pick','getFields','getSubjects','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0xd57bf1,_0x1e33c5){var _0x23e146=function(_0x64313a){while(--_0x64313a){_0xd57bf1['push'](_0xd57bf1['shift']());}};_0x23e146(++_0x1e33c5);}(_0x70cb,0x93));var _0xb70c=function(_0x66b54,_0x47a9c4){_0x66b54=_0x66b54-0x0;var _0xb3645b=_0x70cb[_0x66b54];return _0xb3645b;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xb70c('0x0'));var rimraf=require(_0xb70c('0x1'));var zipdir=require(_0xb70c('0x2'));var jsonpatch=require(_0xb70c('0x3'));var rp=require(_0xb70c('0x4'));var moment=require(_0xb70c('0x5'));var BPromise=require(_0xb70c('0x6'));var Mustache=require('mustache');var util=require(_0xb70c('0x7'));var path=require(_0xb70c('0x8'));var sox=require(_0xb70c('0x9'));var csv=require(_0xb70c('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xb70c('0xb'));var squel=require('squel');var crypto=require(_0xb70c('0xc'));var jsforce=require(_0xb70c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb70c('0xa'));var querystring=require(_0xb70c('0xe'));var Papa=require(_0xb70c('0xf'));var Redis=require(_0xb70c('0x10'));var qs=require(_0xb70c('0x11'));var logger=require(_0xb70c('0x12'))(_0xb70c('0x13'));var utils=require(_0xb70c('0x14'));var config=require('../../config/environment');var db=require(_0xb70c('0x15'))['db'];var jayson=require(_0xb70c('0x16'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x12c3a4,_0x3c4190,_0x1fc9da,_0x1ae133){return new BPromise(function(_0x39bc5f,_0x3fb780){var _0x456271=_0x1ae133||client;return _0x456271[_0xb70c('0x17')](_0x12c3a4,_0x1fc9da)['then'](function(_0x5367d6){logger[_0xb70c('0x18')](_0xb70c('0x19'),_0x3c4190,_0xb70c('0x1a'));logger['debug'](_0xb70c('0x1b'),_0x3c4190,_0xb70c('0x1a'),JSON[_0xb70c('0x1c')](_0x5367d6));if(_0x5367d6['error']){if(_0x5367d6[_0xb70c('0x1d')]['code']===0x1f4){logger[_0xb70c('0x1d')](_0xb70c('0x19'),_0x3c4190,_0x5367d6['error'][_0xb70c('0x1e')]);return _0x3fb780(_0x5367d6[_0xb70c('0x1d')][_0xb70c('0x1e')]);}logger[_0xb70c('0x1d')](_0xb70c('0x19'),_0x3c4190,_0x5367d6['error']['message']);return _0x39bc5f(_0x5367d6['error'][_0xb70c('0x1e')]);}else{logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x3c4190,_0xb70c('0x1a'));_0x39bc5f(_0x5367d6[_0xb70c('0x1f')][_0xb70c('0x1e')]);}})[_0xb70c('0x20')](function(_0x318374){logger[_0xb70c('0x1d')](_0xb70c('0x19'),_0x3c4190,_0x318374);_0x3fb780(_0x318374);});});}function respondWithStatusCode(_0x53a672,_0x493096){_0x493096=_0x493096||0xcc;return function(_0x189293){if(_0x189293){return _0x53a672[_0xb70c('0x21')](_0x493096);}return _0x53a672[_0xb70c('0x22')](_0x493096)[_0xb70c('0x23')]();};}function respondWithResult(_0x1e0d9e,_0x5c8b7a){_0x5c8b7a=_0x5c8b7a||0xc8;return function(_0x3337a0){if(_0x3337a0){return _0x1e0d9e[_0xb70c('0x22')](_0x5c8b7a)['json'](_0x3337a0);}};}function respondWithFilteredResult(_0xcae8d1,_0x5e8044){return function(_0x1aaecc){if(_0x1aaecc){var _0x9f4e35=_0x1aaecc[_0xb70c('0x24')],_0xfe56c6=_0x5e8044['offset'],_0x589923=_0x5e8044[_0xb70c('0x25')]+_0x5e8044[_0xb70c('0x26')],_0x5655e8;if(_0x589923>=_0x9f4e35){_0x589923=_0x9f4e35;_0x5655e8=0xc8;}else{_0x5655e8=0xce;}_0xcae8d1['status'](_0x5655e8);return _0xcae8d1[_0xb70c('0x27')](_0xb70c('0x28'),_0xfe56c6+'-'+_0x589923+'/'+_0x9f4e35)[_0xb70c('0x29')](_0x1aaecc);}return null;};}function patchUpdates(_0x54b4ae){return function(_0x1bf27c){try{jsonpatch[_0xb70c('0x2a')](_0x1bf27c,_0x54b4ae,!![]);}catch(_0x2bcd91){return BPromise[_0xb70c('0x2b')](_0x2bcd91);}return _0x1bf27c['save']();};}function saveUpdates(_0xfa0194,_0x244fc1){return function(_0x4abb8f){if(_0x4abb8f){return _0x4abb8f['update'](_0xfa0194)[_0xb70c('0x2c')](function(_0x597f5a){return _0x597f5a;});}return null;};}function removeEntity(_0x39a524,_0x9a9223){return function(_0x5f3e85){if(_0x5f3e85){return _0x5f3e85[_0xb70c('0x2d')]()['then'](function(){_0x39a524[_0xb70c('0x22')](0xcc)[_0xb70c('0x23')]();});}};}function handleEntityNotFound(_0x42f5f6,_0x4a23d4){return function(_0x7dd672){if(!_0x7dd672){_0x42f5f6[_0xb70c('0x21')](0x194);}return _0x7dd672;};}function handleError(_0x4f04c3,_0x1f873f){_0x1f873f=_0x1f873f||0x1f4;return function(_0x2fa475){logger[_0xb70c('0x1d')](_0x2fa475['stack']);if(_0x2fa475[_0xb70c('0x2e')]){delete _0x2fa475[_0xb70c('0x2e')];}_0x4f04c3[_0xb70c('0x22')](_0x1f873f)[_0xb70c('0x2f')](_0x2fa475);};}exports[_0xb70c('0x30')]=function(_0x33eea6,_0x52544b){var _0x22b3a5={},_0x955b96={},_0x24d96e={'count':0x0,'rows':[]};var _0x4bc113=db['SugarcrmConfiguration'][_0xb70c('0x31')];_0x955b96[_0xb70c('0x32')]=_[_0xb70c('0x33')](_0x4bc113);var _0x4f57e0={'dateStart':_0x33eea6['query'][_0xb70c('0x34')],'dateEnd':_0x33eea6[_0xb70c('0x35')][_0xb70c('0x36')]};delete _0x33eea6[_0xb70c('0x35')][_0xb70c('0x34')];delete _0x33eea6[_0xb70c('0x35')][_0xb70c('0x36')];_0x955b96[_0xb70c('0x35')]=_[_0xb70c('0x33')](_0x33eea6['query']);_0x955b96[_0xb70c('0x37')]=_[_0xb70c('0x38')](_0x955b96[_0xb70c('0x32')],_0x955b96[_0xb70c('0x35')]);_0x22b3a5[_0xb70c('0x39')]=_['intersection'](_0x955b96[_0xb70c('0x32')],qs[_0xb70c('0x3a')](_0x33eea6[_0xb70c('0x35')]['fields']));_0x22b3a5[_0xb70c('0x39')]=_0x22b3a5[_0xb70c('0x39')][_0xb70c('0x3b')]?_0x22b3a5[_0xb70c('0x39')]:_0x955b96[_0xb70c('0x32')];if(!_0x33eea6['query'][_0xb70c('0x3c')]('nolimit')){_0x22b3a5[_0xb70c('0x26')]=qs[_0xb70c('0x26')](_0x33eea6[_0xb70c('0x35')][_0xb70c('0x26')]);_0x22b3a5[_0xb70c('0x25')]=qs[_0xb70c('0x25')](_0x33eea6['query'][_0xb70c('0x25')]);}_0x22b3a5[_0xb70c('0x3d')]=qs[_0xb70c('0x3e')](_0x33eea6[_0xb70c('0x35')]['sort']);_0x22b3a5['where']=qs[_0xb70c('0x37')](_['pick'](_0x33eea6[_0xb70c('0x35')],_0x955b96[_0xb70c('0x37')]));if(_0x4f57e0[_0xb70c('0x34')]){if(_0x4f57e0[_0xb70c('0x36')]){_0x4f57e0[_0xb70c('0x36')]=moment(_0x4f57e0['dateEnd'])[_0xb70c('0x3f')](0x1,_0xb70c('0x40'));}else{_0x4f57e0[_0xb70c('0x36')]=moment(_0x4f57e0[_0xb70c('0x34')])[_0xb70c('0x3f')](0x1,_0xb70c('0x40'));}_[_0xb70c('0x41')](_0x22b3a5['where'],{'createdAt':{'$gte':_0x4f57e0[_0xb70c('0x34')],'$lte':_0x4f57e0[_0xb70c('0x36')]}});}if(_0x33eea6[_0xb70c('0x35')]['filter']){_0x22b3a5[_0xb70c('0x42')]=_[_0xb70c('0x41')](_0x22b3a5['where'],{'$or':_[_0xb70c('0x43')](_0x4bc113,function(_0x30a408){if(_0x30a408['type'][_0xb70c('0x44')]!==_0xb70c('0x45')){var _0x2038c9={};_0x2038c9[_0x30a408['field']]={'$like':'%'+_0x33eea6[_0xb70c('0x35')][_0xb70c('0x46')]+'%'};return _0x2038c9;}})});}_0x22b3a5=_['merge']({},_0x22b3a5,_0x33eea6[_0xb70c('0x47')]);var _0x4218a={'where':_0x22b3a5[_0xb70c('0x42')]};return db['SugarcrmConfiguration'][_0xb70c('0x24')](_0x4218a)[_0xb70c('0x2c')](function(_0x2f6383){_0x24d96e[_0xb70c('0x24')]=_0x2f6383;if(_0x33eea6['query'][_0xb70c('0x48')]){_0x22b3a5[_0xb70c('0x49')]=[{'all':!![]}];}return db[_0xb70c('0x4a')][_0xb70c('0x4b')](_0x22b3a5);})['then'](function(_0x814f7){_0x24d96e[_0xb70c('0x4c')]=_0x814f7;return _0x24d96e;})[_0xb70c('0x2c')](respondWithFilteredResult(_0x52544b,_0x22b3a5))[_0xb70c('0x20')](handleError(_0x52544b,null));};exports[_0xb70c('0x4d')]=function(_0x53aad5,_0x537bda){var _0x5afc81={'raw':![],'where':{'id':_0x53aad5['params']['id']}},_0x56029e={};_0x56029e[_0xb70c('0x32')]=_[_0xb70c('0x33')](db[_0xb70c('0x4a')][_0xb70c('0x31')]);_0x56029e[_0xb70c('0x35')]=_[_0xb70c('0x33')](_0x53aad5[_0xb70c('0x35')]);_0x56029e[_0xb70c('0x37')]=_['intersection'](_0x56029e[_0xb70c('0x32')],_0x56029e['query']);_0x5afc81[_0xb70c('0x39')]=_[_0xb70c('0x38')](_0x56029e[_0xb70c('0x32')],qs[_0xb70c('0x3a')](_0x53aad5[_0xb70c('0x35')][_0xb70c('0x3a')]));_0x5afc81[_0xb70c('0x39')]=_0x5afc81[_0xb70c('0x39')][_0xb70c('0x3b')]?_0x5afc81[_0xb70c('0x39')]:_0x56029e[_0xb70c('0x32')];if(_0x53aad5[_0xb70c('0x35')]['includeAll']){_0x5afc81['include']=[{'all':!![]}];}_0x5afc81=_[_0xb70c('0x41')]({},_0x5afc81,_0x53aad5['options']);return db['SugarcrmConfiguration']['find'](_0x5afc81)['then'](handleEntityNotFound(_0x537bda,null))[_0xb70c('0x2c')](respondWithResult(_0x537bda,null))[_0xb70c('0x20')](handleError(_0x537bda,null));};exports[_0xb70c('0x4e')]=function(_0x5c05f6,_0x42141c){return db['SugarcrmConfiguration'][_0xb70c('0x4e')](_0x5c05f6[_0xb70c('0x4f')],{})[_0xb70c('0x2c')](respondWithResult(_0x42141c,0xc9))[_0xb70c('0x20')](handleError(_0x42141c,null));};exports[_0xb70c('0x50')]=function(_0xa006fb,_0x2b45c5){if(_0xa006fb['body']['id']){delete _0xa006fb[_0xb70c('0x4f')]['id'];}return db['SugarcrmConfiguration'][_0xb70c('0x51')]({'where':{'id':_0xa006fb[_0xb70c('0x52')]['id']}})[_0xb70c('0x2c')](handleEntityNotFound(_0x2b45c5,null))[_0xb70c('0x2c')](saveUpdates(_0xa006fb['body'],null))[_0xb70c('0x2c')](respondWithResult(_0x2b45c5,null))[_0xb70c('0x20')](handleError(_0x2b45c5,null));};exports[_0xb70c('0x2d')]=function(_0x4f79e,_0x51a88d){return db[_0xb70c('0x4a')][_0xb70c('0x51')]({'where':{'id':_0x4f79e[_0xb70c('0x52')]['id']}})[_0xb70c('0x2c')](handleEntityNotFound(_0x51a88d,null))[_0xb70c('0x2c')](removeEntity(_0x51a88d,null))['catch'](handleError(_0x51a88d,null));};exports['getFields']=function(_0x2903b1,_0x25075c,_0x45aef8){var _0x27bf92={};var _0x4b1288={};var _0x1d3782;var _0x4041b3;return db[_0xb70c('0x4a')][_0xb70c('0x53')]({'where':{'id':_0x2903b1[_0xb70c('0x52')]['id']}})[_0xb70c('0x2c')](handleEntityNotFound(_0x25075c,null))[_0xb70c('0x2c')](function(_0x20742d){if(_0x20742d){_0x1d3782=_0x20742d;_0x4b1288[_0xb70c('0x32')]=_[_0xb70c('0x33')](db[_0xb70c('0x54')]['rawAttributes']);_0x4b1288[_0xb70c('0x35')]=_['keys'](_0x2903b1[_0xb70c('0x35')]);_0x4b1288[_0xb70c('0x37')]=_['intersection'](_0x4b1288[_0xb70c('0x32')],_0x4b1288[_0xb70c('0x35')]);_0x27bf92[_0xb70c('0x39')]=_[_0xb70c('0x38')](_0x4b1288[_0xb70c('0x32')],qs[_0xb70c('0x3a')](_0x2903b1[_0xb70c('0x35')][_0xb70c('0x3a')]));_0x27bf92[_0xb70c('0x39')]=_0x27bf92['attributes']['length']?_0x27bf92['attributes']:_0x4b1288[_0xb70c('0x32')];_0x27bf92[_0xb70c('0x3d')]=qs[_0xb70c('0x3e')](_0x2903b1[_0xb70c('0x35')][_0xb70c('0x3e')]);_0x27bf92[_0xb70c('0x42')]=qs[_0xb70c('0x37')](_[_0xb70c('0x55')](_0x2903b1[_0xb70c('0x35')],_0x4b1288[_0xb70c('0x37')]));if(_0x2903b1[_0xb70c('0x35')][_0xb70c('0x46')]){_0x27bf92[_0xb70c('0x42')]=_[_0xb70c('0x41')](_0x27bf92[_0xb70c('0x42')],{'$or':_['map'](_0x27bf92[_0xb70c('0x39')],function(_0x2ae41f){var _0x34fde8={};_0x34fde8[_0x2ae41f]={'$like':'%'+_0x2903b1[_0xb70c('0x35')][_0xb70c('0x46')]+'%'};return _0x34fde8;})});}_0x27bf92=_['merge']({},_0x27bf92,_0x2903b1['options']);return _0x1d3782[_0xb70c('0x56')](_0x27bf92);}})[_0xb70c('0x2c')](function(_0x19be32){if(_0x19be32){_0x4041b3=_0x19be32[_0xb70c('0x3b')];if(!_0x2903b1[_0xb70c('0x35')]['hasOwnProperty']('nolimit')){_0x27bf92[_0xb70c('0x26')]=qs[_0xb70c('0x26')](_0x2903b1['query'][_0xb70c('0x26')]);_0x27bf92['offset']=qs[_0xb70c('0x25')](_0x2903b1['query'][_0xb70c('0x25')]);}return _0x1d3782['getFields'](_0x27bf92);}})[_0xb70c('0x2c')](function(_0x33d1c4){if(_0x33d1c4){return _0x33d1c4?{'count':_0x4041b3,'rows':_0x33d1c4}:null;}})[_0xb70c('0x2c')](respondWithResult(_0x25075c,null))['catch'](handleError(_0x25075c,null));};exports[_0xb70c('0x57')]=function(_0x4b1607,_0x8078b6,_0x54f07e){var _0x44627d={};var _0x3a9ef2={};var _0x4587a0;var _0xdfd02e;return db[_0xb70c('0x4a')][_0xb70c('0x53')]({'where':{'id':_0x4b1607[_0xb70c('0x52')]['id']}})[_0xb70c('0x2c')](handleEntityNotFound(_0x8078b6,null))[_0xb70c('0x2c')](function(_0x21309a){if(_0x21309a){_0x4587a0=_0x21309a;_0x3a9ef2['model']=_[_0xb70c('0x33')](db['SugarcrmField']['rawAttributes']);_0x3a9ef2[_0xb70c('0x35')]=_[_0xb70c('0x33')](_0x4b1607[_0xb70c('0x35')]);_0x3a9ef2['filters']=_[_0xb70c('0x38')](_0x3a9ef2[_0xb70c('0x32')],_0x3a9ef2[_0xb70c('0x35')]);_0x44627d[_0xb70c('0x39')]=_['intersection'](_0x3a9ef2['model'],qs[_0xb70c('0x3a')](_0x4b1607[_0xb70c('0x35')]['fields']));_0x44627d[_0xb70c('0x39')]=_0x44627d['attributes'][_0xb70c('0x3b')]?_0x44627d[_0xb70c('0x39')]:_0x3a9ef2['model'];_0x44627d[_0xb70c('0x3d')]=qs[_0xb70c('0x3e')](_0x4b1607['query'][_0xb70c('0x3e')]);_0x44627d[_0xb70c('0x42')]=qs[_0xb70c('0x37')](_[_0xb70c('0x55')](_0x4b1607[_0xb70c('0x35')],_0x3a9ef2[_0xb70c('0x37')]));if(_0x4b1607[_0xb70c('0x35')][_0xb70c('0x46')]){_0x44627d['where']=_[_0xb70c('0x41')](_0x44627d[_0xb70c('0x42')],{'$or':_['map'](_0x44627d['attributes'],function(_0x57ef28){var _0x49cbfd={};_0x49cbfd[_0x57ef28]={'$like':'%'+_0x4b1607['query'][_0xb70c('0x46')]+'%'};return _0x49cbfd;})});}_0x44627d=_['merge']({},_0x44627d,_0x4b1607[_0xb70c('0x47')]);return _0x4587a0[_0xb70c('0x57')](_0x44627d);}})[_0xb70c('0x2c')](function(_0x237514){if(_0x237514){_0xdfd02e=_0x237514['length'];if(!_0x4b1607['query']['hasOwnProperty'](_0xb70c('0x58'))){_0x44627d[_0xb70c('0x26')]=qs[_0xb70c('0x26')](_0x4b1607[_0xb70c('0x35')][_0xb70c('0x26')]);_0x44627d['offset']=qs[_0xb70c('0x25')](_0x4b1607[_0xb70c('0x35')][_0xb70c('0x25')]);}return _0x4587a0[_0xb70c('0x57')](_0x44627d);}})[_0xb70c('0x2c')](function(_0x2d3769){if(_0x2d3769){return _0x2d3769?{'count':_0xdfd02e,'rows':_0x2d3769}:null;}})['then'](respondWithResult(_0x8078b6,null))[_0xb70c('0x20')](handleError(_0x8078b6,null));};exports['getDescriptions']=function(_0x23280e,_0x2473fa,_0x33eeaf){var _0x1cb15b={};var _0x4360c9={};var _0x490907;var _0x3622be;return db[_0xb70c('0x4a')][_0xb70c('0x53')]({'where':{'id':_0x23280e[_0xb70c('0x52')]['id']}})['then'](handleEntityNotFound(_0x2473fa,null))['then'](function(_0x182ca7){if(_0x182ca7){_0x490907=_0x182ca7;_0x4360c9[_0xb70c('0x32')]=_[_0xb70c('0x33')](db[_0xb70c('0x54')][_0xb70c('0x31')]);_0x4360c9[_0xb70c('0x35')]=_[_0xb70c('0x33')](_0x23280e['query']);_0x4360c9[_0xb70c('0x37')]=_[_0xb70c('0x38')](_0x4360c9[_0xb70c('0x32')],_0x4360c9[_0xb70c('0x35')]);_0x1cb15b[_0xb70c('0x39')]=_[_0xb70c('0x38')](_0x4360c9['model'],qs[_0xb70c('0x3a')](_0x23280e[_0xb70c('0x35')][_0xb70c('0x3a')]));_0x1cb15b[_0xb70c('0x39')]=_0x1cb15b[_0xb70c('0x39')]['length']?_0x1cb15b['attributes']:_0x4360c9[_0xb70c('0x32')];_0x1cb15b[_0xb70c('0x3d')]=qs['sort'](_0x23280e['query']['sort']);_0x1cb15b[_0xb70c('0x42')]=qs['filters'](_['pick'](_0x23280e[_0xb70c('0x35')],_0x4360c9[_0xb70c('0x37')]));if(_0x23280e[_0xb70c('0x35')][_0xb70c('0x46')]){_0x1cb15b['where']=_[_0xb70c('0x41')](_0x1cb15b[_0xb70c('0x42')],{'$or':_[_0xb70c('0x43')](_0x1cb15b['attributes'],function(_0x3d4a1a){var _0x3c3bb5={};_0x3c3bb5[_0x3d4a1a]={'$like':'%'+_0x23280e[_0xb70c('0x35')][_0xb70c('0x46')]+'%'};return _0x3c3bb5;})});}_0x1cb15b=_[_0xb70c('0x41')]({},_0x1cb15b,_0x23280e[_0xb70c('0x47')]);return _0x490907['getDescriptions'](_0x1cb15b);}})[_0xb70c('0x2c')](function(_0x48fb66){if(_0x48fb66){_0x3622be=_0x48fb66[_0xb70c('0x3b')];if(!_0x23280e['query'][_0xb70c('0x3c')](_0xb70c('0x58'))){_0x1cb15b[_0xb70c('0x26')]=qs[_0xb70c('0x26')](_0x23280e[_0xb70c('0x35')][_0xb70c('0x26')]);_0x1cb15b[_0xb70c('0x25')]=qs['offset'](_0x23280e[_0xb70c('0x35')][_0xb70c('0x25')]);}return _0x490907[_0xb70c('0x59')](_0x1cb15b);}})[_0xb70c('0x2c')](function(_0x1e83d5){if(_0x1e83d5){return _0x1e83d5?{'count':_0x3622be,'rows':_0x1e83d5}:null;}})['then'](respondWithResult(_0x2473fa,null))[_0xb70c('0x20')](handleError(_0x2473fa,null));};
\ No newline at end of file
+var _0xdab6=['filters','pick','add','day','merge','filter','field','options','SugarcrmConfiguration','include','findAll','params','rawAttributes','find','create','body','destroy','getFields','SugarcrmField','sort','map','getSubjects','findOne','getDescriptions','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','path','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','stack','name','send','model','dateStart','query','dateEnd','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where'];(function(_0xd511d,_0x3546b9){var _0x3f148e=function(_0x51f35f){while(--_0x51f35f){_0xd511d['push'](_0xd511d['shift']());}};_0x3f148e(++_0x3546b9);}(_0xdab6,0x6f));var _0x6dab=function(_0x5b7070,_0x2ef3e9){_0x5b7070=_0x5b7070-0x0;var _0x582712=_0xdab6[_0x5b7070];return _0x582712;};'use strict';var pdf=require(_0x6dab('0x0'));var emlformat=require(_0x6dab('0x1'));var rimraf=require(_0x6dab('0x2'));var zipdir=require(_0x6dab('0x3'));var jsonpatch=require(_0x6dab('0x4'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6dab('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6dab('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x6dab('0x7'));var squel=require('squel');var crypto=require(_0x6dab('0x8'));var jsforce=require(_0x6dab('0x9'));var deskjs=require(_0x6dab('0xa'));var toCsv=require(_0x6dab('0xb'));var querystring=require('querystring');var Papa=require(_0x6dab('0xc'));var Redis=require(_0x6dab('0xd'));var qs=require('../../components/parsers/qs');var logger=require(_0x6dab('0xe'))(_0x6dab('0xf'));var utils=require(_0x6dab('0x10'));var config=require(_0x6dab('0x11'));var db=require(_0x6dab('0x12'))['db'];var jayson=require(_0x6dab('0x13'));var client=jayson[_0x6dab('0x14')][_0x6dab('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x21da78,_0x47a14f,_0x43f47d,_0x2e5ac0){return new BPromise(function(_0x5e2477,_0x145101){var _0x378a25=_0x2e5ac0||client;return _0x378a25[_0x6dab('0x16')](_0x21da78,_0x43f47d)[_0x6dab('0x17')](function(_0x2fee87){logger['info'](_0x6dab('0x18'),_0x47a14f,_0x6dab('0x19'));logger[_0x6dab('0x1a')](_0x6dab('0x1b'),_0x47a14f,'request\x20sent',JSON[_0x6dab('0x1c')](_0x2fee87));if(_0x2fee87[_0x6dab('0x1d')]){if(_0x2fee87[_0x6dab('0x1d')]['code']===0x1f4){logger[_0x6dab('0x1d')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x47a14f,_0x2fee87[_0x6dab('0x1d')][_0x6dab('0x1e')]);return _0x145101(_0x2fee87[_0x6dab('0x1d')][_0x6dab('0x1e')]);}logger['error'](_0x6dab('0x18'),_0x47a14f,_0x2fee87[_0x6dab('0x1d')]['message']);return _0x5e2477(_0x2fee87[_0x6dab('0x1d')][_0x6dab('0x1e')]);}else{logger[_0x6dab('0x1f')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x47a14f,'request\x20sent');_0x5e2477(_0x2fee87[_0x6dab('0x20')]['message']);}})[_0x6dab('0x21')](function(_0x14e001){logger[_0x6dab('0x1d')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x47a14f,_0x14e001);_0x145101(_0x14e001);});});}function respondWithStatusCode(_0x3cfa6d,_0x38b0bc){_0x38b0bc=_0x38b0bc||0xcc;return function(_0x33935b){if(_0x33935b){return _0x3cfa6d[_0x6dab('0x22')](_0x38b0bc);}return _0x3cfa6d[_0x6dab('0x23')](_0x38b0bc)[_0x6dab('0x24')]();};}function respondWithResult(_0x35855a,_0x51541e){_0x51541e=_0x51541e||0xc8;return function(_0x5ceba7){if(_0x5ceba7){return _0x35855a[_0x6dab('0x23')](_0x51541e)[_0x6dab('0x25')](_0x5ceba7);}};}function respondWithFilteredResult(_0x40c1d5,_0x321e4d){return function(_0x115672){if(_0x115672){var _0x356be7=_0x115672[_0x6dab('0x26')],_0xc1ba6d=_0x321e4d[_0x6dab('0x27')],_0x13890e=_0x321e4d[_0x6dab('0x27')]+_0x321e4d[_0x6dab('0x28')],_0x696f4b;if(_0x13890e>=_0x356be7){_0x13890e=_0x356be7;_0x696f4b=0xc8;}else{_0x696f4b=0xce;}_0x40c1d5[_0x6dab('0x23')](_0x696f4b);return _0x40c1d5[_0x6dab('0x29')](_0x6dab('0x2a'),_0xc1ba6d+'-'+_0x13890e+'/'+_0x356be7)[_0x6dab('0x25')](_0x115672);}return null;};}function patchUpdates(_0x5aa4e1){return function(_0x2b6016){try{jsonpatch[_0x6dab('0x2b')](_0x2b6016,_0x5aa4e1,!![]);}catch(_0x3b4921){return BPromise[_0x6dab('0x2c')](_0x3b4921);}return _0x2b6016[_0x6dab('0x2d')]();};}function saveUpdates(_0x1bff11,_0x490ef3){return function(_0x5834bb){if(_0x5834bb){return _0x5834bb[_0x6dab('0x2e')](_0x1bff11)[_0x6dab('0x17')](function(_0x4ba9fa){return _0x4ba9fa;});}return null;};}function removeEntity(_0x48c903,_0x119945){return function(_0x3cc925){if(_0x3cc925){return _0x3cc925['destroy']()[_0x6dab('0x17')](function(){_0x48c903[_0x6dab('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5096ac,_0x44b5cb){return function(_0x846f03){if(!_0x846f03){_0x5096ac[_0x6dab('0x22')](0x194);}return _0x846f03;};}function handleError(_0x56f9a4,_0x5cd9ec){_0x5cd9ec=_0x5cd9ec||0x1f4;return function(_0x14c4a5){logger['error'](_0x14c4a5[_0x6dab('0x2f')]);if(_0x14c4a5[_0x6dab('0x30')]){delete _0x14c4a5['name'];}_0x56f9a4[_0x6dab('0x23')](_0x5cd9ec)[_0x6dab('0x31')](_0x14c4a5);};}exports['index']=function(_0x36a96f,_0x28c9c9){var _0x5ed8f5={},_0x57d0db={},_0x5b7939={'count':0x0,'rows':[]};var _0x37defe=db['SugarcrmConfiguration']['rawAttributes'];_0x57d0db[_0x6dab('0x32')]=_['keys'](_0x37defe);var _0x2ae5a7={'dateStart':_0x36a96f['query'][_0x6dab('0x33')],'dateEnd':_0x36a96f[_0x6dab('0x34')]['dateEnd']};delete _0x36a96f[_0x6dab('0x34')]['dateStart'];delete _0x36a96f[_0x6dab('0x34')][_0x6dab('0x35')];_0x57d0db['query']=_[_0x6dab('0x36')](_0x36a96f[_0x6dab('0x34')]);_0x57d0db['filters']=_['intersection'](_0x57d0db[_0x6dab('0x32')],_0x57d0db['query']);_0x5ed8f5['attributes']=_[_0x6dab('0x37')](_0x57d0db[_0x6dab('0x32')],qs[_0x6dab('0x38')](_0x36a96f['query'][_0x6dab('0x38')]));_0x5ed8f5[_0x6dab('0x39')]=_0x5ed8f5[_0x6dab('0x39')][_0x6dab('0x3a')]?_0x5ed8f5[_0x6dab('0x39')]:_0x57d0db[_0x6dab('0x32')];if(!_0x36a96f['query'][_0x6dab('0x3b')](_0x6dab('0x3c'))){_0x5ed8f5[_0x6dab('0x28')]=qs[_0x6dab('0x28')](_0x36a96f[_0x6dab('0x34')][_0x6dab('0x28')]);_0x5ed8f5[_0x6dab('0x27')]=qs[_0x6dab('0x27')](_0x36a96f[_0x6dab('0x34')][_0x6dab('0x27')]);}_0x5ed8f5[_0x6dab('0x3d')]=qs['sort'](_0x36a96f[_0x6dab('0x34')]['sort']);_0x5ed8f5[_0x6dab('0x3e')]=qs[_0x6dab('0x3f')](_[_0x6dab('0x40')](_0x36a96f[_0x6dab('0x34')],_0x57d0db['filters']));if(_0x2ae5a7[_0x6dab('0x33')]){if(_0x2ae5a7['dateEnd']){_0x2ae5a7[_0x6dab('0x35')]=moment(_0x2ae5a7[_0x6dab('0x35')])[_0x6dab('0x41')](0x1,_0x6dab('0x42'));}else{_0x2ae5a7[_0x6dab('0x35')]=moment(_0x2ae5a7[_0x6dab('0x33')])['add'](0x1,_0x6dab('0x42'));}_[_0x6dab('0x43')](_0x5ed8f5[_0x6dab('0x3e')],{'createdAt':{'$gte':_0x2ae5a7[_0x6dab('0x33')],'$lte':_0x2ae5a7[_0x6dab('0x35')]}});}if(_0x36a96f[_0x6dab('0x34')][_0x6dab('0x44')]){_0x5ed8f5[_0x6dab('0x3e')]=_[_0x6dab('0x43')](_0x5ed8f5[_0x6dab('0x3e')],{'$or':_['map'](_0x37defe,function(_0x29a978){if(_0x29a978['type']['key']!=='VIRTUAL'){var _0x210513={};_0x210513[_0x29a978[_0x6dab('0x45')]]={'$like':'%'+_0x36a96f[_0x6dab('0x34')][_0x6dab('0x44')]+'%'};return _0x210513;}})});}_0x5ed8f5=_['merge']({},_0x5ed8f5,_0x36a96f[_0x6dab('0x46')]);var _0xf17721={'where':_0x5ed8f5[_0x6dab('0x3e')]};return db[_0x6dab('0x47')][_0x6dab('0x26')](_0xf17721)[_0x6dab('0x17')](function(_0xa15e23){_0x5b7939['count']=_0xa15e23;if(_0x36a96f[_0x6dab('0x34')]['includeAll']){_0x5ed8f5[_0x6dab('0x48')]=[{'all':!![]}];}return db[_0x6dab('0x47')][_0x6dab('0x49')](_0x5ed8f5);})[_0x6dab('0x17')](function(_0x4bdd02){_0x5b7939['rows']=_0x4bdd02;return _0x5b7939;})[_0x6dab('0x17')](respondWithFilteredResult(_0x28c9c9,_0x5ed8f5))[_0x6dab('0x21')](handleError(_0x28c9c9,null));};exports['show']=function(_0x1bbf4b,_0x43d1d4){var _0x211f28={'raw':![],'where':{'id':_0x1bbf4b[_0x6dab('0x4a')]['id']}},_0x1c2bec={};_0x1c2bec[_0x6dab('0x32')]=_[_0x6dab('0x36')](db[_0x6dab('0x47')][_0x6dab('0x4b')]);_0x1c2bec[_0x6dab('0x34')]=_[_0x6dab('0x36')](_0x1bbf4b[_0x6dab('0x34')]);_0x1c2bec[_0x6dab('0x3f')]=_[_0x6dab('0x37')](_0x1c2bec[_0x6dab('0x32')],_0x1c2bec[_0x6dab('0x34')]);_0x211f28[_0x6dab('0x39')]=_[_0x6dab('0x37')](_0x1c2bec[_0x6dab('0x32')],qs[_0x6dab('0x38')](_0x1bbf4b[_0x6dab('0x34')][_0x6dab('0x38')]));_0x211f28[_0x6dab('0x39')]=_0x211f28[_0x6dab('0x39')][_0x6dab('0x3a')]?_0x211f28[_0x6dab('0x39')]:_0x1c2bec[_0x6dab('0x32')];if(_0x1bbf4b[_0x6dab('0x34')]['includeAll']){_0x211f28[_0x6dab('0x48')]=[{'all':!![]}];}_0x211f28=_['merge']({},_0x211f28,_0x1bbf4b[_0x6dab('0x46')]);return db[_0x6dab('0x47')][_0x6dab('0x4c')](_0x211f28)[_0x6dab('0x17')](handleEntityNotFound(_0x43d1d4,null))[_0x6dab('0x17')](respondWithResult(_0x43d1d4,null))[_0x6dab('0x21')](handleError(_0x43d1d4,null));};exports['create']=function(_0x3f9687,_0x35bffe){return db[_0x6dab('0x47')][_0x6dab('0x4d')](_0x3f9687[_0x6dab('0x4e')],{})[_0x6dab('0x17')](respondWithResult(_0x35bffe,0xc9))[_0x6dab('0x21')](handleError(_0x35bffe,null));};exports[_0x6dab('0x2e')]=function(_0x4da267,_0x5e26a6){if(_0x4da267[_0x6dab('0x4e')]['id']){delete _0x4da267[_0x6dab('0x4e')]['id'];}return db['SugarcrmConfiguration'][_0x6dab('0x4c')]({'where':{'id':_0x4da267[_0x6dab('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5e26a6,null))[_0x6dab('0x17')](saveUpdates(_0x4da267[_0x6dab('0x4e')],null))[_0x6dab('0x17')](respondWithResult(_0x5e26a6,null))['catch'](handleError(_0x5e26a6,null));};exports[_0x6dab('0x4f')]=function(_0x38ff67,_0x3baaa2){return db[_0x6dab('0x47')][_0x6dab('0x4c')]({'where':{'id':_0x38ff67[_0x6dab('0x4a')]['id']}})[_0x6dab('0x17')](handleEntityNotFound(_0x3baaa2,null))[_0x6dab('0x17')](removeEntity(_0x3baaa2,null))[_0x6dab('0x21')](handleError(_0x3baaa2,null));};exports[_0x6dab('0x50')]=function(_0x29e5d9,_0x473126,_0x8f7ca3){var _0x5abf89={};var _0x45c82b={};var _0x122dd1;var _0x458a07;return db[_0x6dab('0x47')]['findOne']({'where':{'id':_0x29e5d9[_0x6dab('0x4a')]['id']}})[_0x6dab('0x17')](handleEntityNotFound(_0x473126,null))[_0x6dab('0x17')](function(_0x46becc){if(_0x46becc){_0x122dd1=_0x46becc;_0x45c82b['model']=_['keys'](db[_0x6dab('0x51')][_0x6dab('0x4b')]);_0x45c82b[_0x6dab('0x34')]=_[_0x6dab('0x36')](_0x29e5d9[_0x6dab('0x34')]);_0x45c82b[_0x6dab('0x3f')]=_[_0x6dab('0x37')](_0x45c82b[_0x6dab('0x32')],_0x45c82b['query']);_0x5abf89[_0x6dab('0x39')]=_[_0x6dab('0x37')](_0x45c82b[_0x6dab('0x32')],qs[_0x6dab('0x38')](_0x29e5d9[_0x6dab('0x34')]['fields']));_0x5abf89[_0x6dab('0x39')]=_0x5abf89[_0x6dab('0x39')][_0x6dab('0x3a')]?_0x5abf89[_0x6dab('0x39')]:_0x45c82b[_0x6dab('0x32')];_0x5abf89[_0x6dab('0x3d')]=qs[_0x6dab('0x52')](_0x29e5d9['query'][_0x6dab('0x52')]);_0x5abf89[_0x6dab('0x3e')]=qs[_0x6dab('0x3f')](_[_0x6dab('0x40')](_0x29e5d9[_0x6dab('0x34')],_0x45c82b[_0x6dab('0x3f')]));if(_0x29e5d9[_0x6dab('0x34')][_0x6dab('0x44')]){_0x5abf89[_0x6dab('0x3e')]=_['merge'](_0x5abf89['where'],{'$or':_[_0x6dab('0x53')](_0x5abf89[_0x6dab('0x39')],function(_0x12544d){var _0x258f9e={};_0x258f9e[_0x12544d]={'$like':'%'+_0x29e5d9[_0x6dab('0x34')][_0x6dab('0x44')]+'%'};return _0x258f9e;})});}_0x5abf89=_[_0x6dab('0x43')]({},_0x5abf89,_0x29e5d9[_0x6dab('0x46')]);return _0x122dd1[_0x6dab('0x50')](_0x5abf89);}})[_0x6dab('0x17')](function(_0x27a97c){if(_0x27a97c){_0x458a07=_0x27a97c[_0x6dab('0x3a')];if(!_0x29e5d9[_0x6dab('0x34')][_0x6dab('0x3b')](_0x6dab('0x3c'))){_0x5abf89[_0x6dab('0x28')]=qs[_0x6dab('0x28')](_0x29e5d9[_0x6dab('0x34')][_0x6dab('0x28')]);_0x5abf89[_0x6dab('0x27')]=qs[_0x6dab('0x27')](_0x29e5d9[_0x6dab('0x34')][_0x6dab('0x27')]);}return _0x122dd1[_0x6dab('0x50')](_0x5abf89);}})[_0x6dab('0x17')](function(_0x2b493b){if(_0x2b493b){return _0x2b493b?{'count':_0x458a07,'rows':_0x2b493b}:null;}})[_0x6dab('0x17')](respondWithResult(_0x473126,null))[_0x6dab('0x21')](handleError(_0x473126,null));};exports[_0x6dab('0x54')]=function(_0x19397d,_0x35cc37,_0x2e3f52){var _0x377e45={};var _0x7dd293={};var _0x5a63a5;var _0x528b53;return db[_0x6dab('0x47')][_0x6dab('0x55')]({'where':{'id':_0x19397d[_0x6dab('0x4a')]['id']}})[_0x6dab('0x17')](handleEntityNotFound(_0x35cc37,null))[_0x6dab('0x17')](function(_0xc692a1){if(_0xc692a1){_0x5a63a5=_0xc692a1;_0x7dd293[_0x6dab('0x32')]=_[_0x6dab('0x36')](db[_0x6dab('0x51')][_0x6dab('0x4b')]);_0x7dd293[_0x6dab('0x34')]=_['keys'](_0x19397d[_0x6dab('0x34')]);_0x7dd293[_0x6dab('0x3f')]=_[_0x6dab('0x37')](_0x7dd293['model'],_0x7dd293['query']);_0x377e45[_0x6dab('0x39')]=_[_0x6dab('0x37')](_0x7dd293[_0x6dab('0x32')],qs['fields'](_0x19397d['query'][_0x6dab('0x38')]));_0x377e45[_0x6dab('0x39')]=_0x377e45[_0x6dab('0x39')]['length']?_0x377e45['attributes']:_0x7dd293[_0x6dab('0x32')];_0x377e45[_0x6dab('0x3d')]=qs[_0x6dab('0x52')](_0x19397d[_0x6dab('0x34')][_0x6dab('0x52')]);_0x377e45['where']=qs['filters'](_[_0x6dab('0x40')](_0x19397d['query'],_0x7dd293[_0x6dab('0x3f')]));if(_0x19397d[_0x6dab('0x34')][_0x6dab('0x44')]){_0x377e45[_0x6dab('0x3e')]=_[_0x6dab('0x43')](_0x377e45[_0x6dab('0x3e')],{'$or':_['map'](_0x377e45[_0x6dab('0x39')],function(_0x3deabe){var _0x257137={};_0x257137[_0x3deabe]={'$like':'%'+_0x19397d['query'][_0x6dab('0x44')]+'%'};return _0x257137;})});}_0x377e45=_[_0x6dab('0x43')]({},_0x377e45,_0x19397d['options']);return _0x5a63a5[_0x6dab('0x54')](_0x377e45);}})['then'](function(_0x2731fb){if(_0x2731fb){_0x528b53=_0x2731fb[_0x6dab('0x3a')];if(!_0x19397d['query'][_0x6dab('0x3b')](_0x6dab('0x3c'))){_0x377e45[_0x6dab('0x28')]=qs['limit'](_0x19397d[_0x6dab('0x34')][_0x6dab('0x28')]);_0x377e45['offset']=qs[_0x6dab('0x27')](_0x19397d[_0x6dab('0x34')][_0x6dab('0x27')]);}return _0x5a63a5['getSubjects'](_0x377e45);}})[_0x6dab('0x17')](function(_0x27b517){if(_0x27b517){return _0x27b517?{'count':_0x528b53,'rows':_0x27b517}:null;}})['then'](respondWithResult(_0x35cc37,null))[_0x6dab('0x21')](handleError(_0x35cc37,null));};exports[_0x6dab('0x56')]=function(_0x32d4c0,_0x4ee1e3,_0x2a3d17){var _0xa94dd5={};var _0x551a92={};var _0x418757;var _0x16a361;return db[_0x6dab('0x47')][_0x6dab('0x55')]({'where':{'id':_0x32d4c0[_0x6dab('0x4a')]['id']}})[_0x6dab('0x17')](handleEntityNotFound(_0x4ee1e3,null))[_0x6dab('0x17')](function(_0x522801){if(_0x522801){_0x418757=_0x522801;_0x551a92[_0x6dab('0x32')]=_['keys'](db[_0x6dab('0x51')][_0x6dab('0x4b')]);_0x551a92['query']=_[_0x6dab('0x36')](_0x32d4c0['query']);_0x551a92[_0x6dab('0x3f')]=_['intersection'](_0x551a92[_0x6dab('0x32')],_0x551a92[_0x6dab('0x34')]);_0xa94dd5[_0x6dab('0x39')]=_['intersection'](_0x551a92[_0x6dab('0x32')],qs['fields'](_0x32d4c0[_0x6dab('0x34')][_0x6dab('0x38')]));_0xa94dd5[_0x6dab('0x39')]=_0xa94dd5[_0x6dab('0x39')]['length']?_0xa94dd5[_0x6dab('0x39')]:_0x551a92[_0x6dab('0x32')];_0xa94dd5[_0x6dab('0x3d')]=qs[_0x6dab('0x52')](_0x32d4c0[_0x6dab('0x34')][_0x6dab('0x52')]);_0xa94dd5['where']=qs['filters'](_['pick'](_0x32d4c0['query'],_0x551a92[_0x6dab('0x3f')]));if(_0x32d4c0[_0x6dab('0x34')][_0x6dab('0x44')]){_0xa94dd5['where']=_[_0x6dab('0x43')](_0xa94dd5[_0x6dab('0x3e')],{'$or':_[_0x6dab('0x53')](_0xa94dd5[_0x6dab('0x39')],function(_0x4d0ed0){var _0xf44cd0={};_0xf44cd0[_0x4d0ed0]={'$like':'%'+_0x32d4c0['query'][_0x6dab('0x44')]+'%'};return _0xf44cd0;})});}_0xa94dd5=_[_0x6dab('0x43')]({},_0xa94dd5,_0x32d4c0[_0x6dab('0x46')]);return _0x418757[_0x6dab('0x56')](_0xa94dd5);}})[_0x6dab('0x17')](function(_0x2ac3b4){if(_0x2ac3b4){_0x16a361=_0x2ac3b4[_0x6dab('0x3a')];if(!_0x32d4c0['query'][_0x6dab('0x3b')](_0x6dab('0x3c'))){_0xa94dd5[_0x6dab('0x28')]=qs[_0x6dab('0x28')](_0x32d4c0[_0x6dab('0x34')]['limit']);_0xa94dd5[_0x6dab('0x27')]=qs['offset'](_0x32d4c0[_0x6dab('0x34')][_0x6dab('0x27')]);}return _0x418757[_0x6dab('0x56')](_0xa94dd5);}})[_0x6dab('0x17')](function(_0x290b80){if(_0x290b80){return _0x290b80?{'count':_0x16a361,'rows':_0x290b80}:null;}})[_0x6dab('0x17')](respondWithResult(_0x4ee1e3,null))[_0x6dab('0x21')](handleError(_0x4ee1e3,null));};
\ No newline at end of file
index 7a4b003..3476a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9613=['../../config/logger','api','bluebird','request-promise','./intSugarcrmConfiguration.attributes','exports','int_sugarcrm_configurations','lodash','util'];(function(_0x3c0c6e,_0x100f20){var _0x1f19b1=function(_0x47e705){while(--_0x47e705){_0x3c0c6e['push'](_0x3c0c6e['shift']());}};_0x1f19b1(++_0x100f20);}(_0x9613,0x1c9));var _0x3961=function(_0x40dd3f,_0x41101){_0x40dd3f=_0x40dd3f-0x0;var _0x6eb98e=_0x9613[_0x40dd3f];return _0x6eb98e;};'use strict';var _=require(_0x3961('0x0'));var util=require(_0x3961('0x1'));var logger=require(_0x3961('0x2'))(_0x3961('0x3'));var moment=require('moment');var BPromise=require(_0x3961('0x4'));var rp=require(_0x3961('0x5'));var attributes=require(_0x3961('0x6'));module[_0x3961('0x7')]=function(_0x5f567d,_0x26b49c){return _0x5f567d['define']('SugarcrmConfiguration',attributes,{'tableName':_0x3961('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e48=['api','moment','bluebird','request-promise','./intSugarcrmConfiguration.attributes','exports','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util'];(function(_0x5c598e,_0x1f444e){var _0x14704e=function(_0x4e39d7){while(--_0x4e39d7){_0x5c598e['push'](_0x5c598e['shift']());}};_0x14704e(++_0x1f444e);}(_0x2e48,0x76));var _0x82e4=function(_0x2ade6c,_0x2d42f2){_0x2ade6c=_0x2ade6c-0x0;var _0x2cb372=_0x2e48[_0x2ade6c];return _0x2cb372;};'use strict';var _=require(_0x82e4('0x0'));var util=require(_0x82e4('0x1'));var logger=require('../../config/logger')(_0x82e4('0x2'));var moment=require(_0x82e4('0x3'));var BPromise=require(_0x82e4('0x4'));var rp=require(_0x82e4('0x5'));var attributes=require(_0x82e4('0x6'));module[_0x82e4('0x7')]=function(_0x423455,_0x140611){return _0x423455['define'](_0x82e4('0x8'),attributes,{'tableName':_0x82e4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 887a9ff..bfb6003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2700=['client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x2700,0x1e9));var _0x0270=function(_0x4923ad,_0x1d11b3){_0x4923ad=_0x4923ad-0x0;var _0x4203ca=_0x2700[_0x4923ad];return _0x4203ca;};'use strict';var _=require(_0x0270('0x0'));var util=require('util');var moment=require(_0x0270('0x1'));var BPromise=require(_0x0270('0x2'));var rs=require(_0x0270('0x3'));var fs=require('fs');var Redis=require(_0x0270('0x4'));var db=require(_0x0270('0x5'))['db'];var utils=require(_0x0270('0x6'));var logger=require(_0x0270('0x7'))(_0x0270('0x8'));var config=require(_0x0270('0x9'));var jayson=require(_0x0270('0xa'));var client=jayson[_0x0270('0xb')][_0x0270('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x600010,_0x592750,_0xb7bd07){return new BPromise(function(_0x13edab,_0x39889c){return client[_0x0270('0xd')](_0x600010,_0xb7bd07)[_0x0270('0xe')](function(_0x512274){logger[_0x0270('0xf')](_0x0270('0x10'),_0x592750,_0x0270('0x11'));logger[_0x0270('0x12')](_0x0270('0x13'),_0x592750,_0x0270('0x11'),JSON[_0x0270('0x14')](_0x512274));if(_0x512274[_0x0270('0x15')]){if(_0x512274['error'][_0x0270('0x16')]===0x1f4){logger['error'](_0x0270('0x10'),_0x592750,_0x512274['error'][_0x0270('0x17')]);return _0x39889c(_0x512274[_0x0270('0x15')][_0x0270('0x17')]);}logger[_0x0270('0x15')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x592750,_0x512274[_0x0270('0x15')]['message']);return _0x13edab(_0x512274[_0x0270('0x15')][_0x0270('0x17')]);}else{logger[_0x0270('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x592750,_0x0270('0x11'));_0x13edab(_0x512274['result']['message']);}})[_0x0270('0x18')](function(_0x393034){logger[_0x0270('0x15')](_0x0270('0x10'),_0x592750,_0x393034);_0x39889c(_0x393034);});});}
\ No newline at end of file
+var _0x6699=['SugarcrmConfiguration,\x20%s,\x20%s','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','request\x20sent','stringify','error','code'];(function(_0x1f27df,_0x4f1a64){var _0x286ee2=function(_0x255ea7){while(--_0x255ea7){_0x1f27df['push'](_0x1f27df['shift']());}};_0x286ee2(++_0x4f1a64);}(_0x6699,0x168));var _0x9669=function(_0x5421eb,_0x426220){_0x5421eb=_0x5421eb-0x0;var _0x2a23e5=_0x6699[_0x5421eb];return _0x2a23e5;};'use strict';var _=require(_0x9669('0x0'));var util=require(_0x9669('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9669('0x2'));var fs=require('fs');var Redis=require(_0x9669('0x3'));var db=require(_0x9669('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9669('0x5'))(_0x9669('0x6'));var config=require(_0x9669('0x7'));var jayson=require(_0x9669('0x8'));var client=jayson[_0x9669('0x9')][_0x9669('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2886cb,_0xa1e729,_0x454461){return new BPromise(function(_0x199bc6,_0x20e224){return client['request'](_0x2886cb,_0x454461)[_0x9669('0xb')](function(_0x138fa5){logger[_0x9669('0xc')]('SugarcrmConfiguration,\x20%s,\x20%s',_0xa1e729,'request\x20sent');logger[_0x9669('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0xa1e729,_0x9669('0xe'),JSON[_0x9669('0xf')](_0x138fa5));if(_0x138fa5[_0x9669('0x10')]){if(_0x138fa5[_0x9669('0x10')][_0x9669('0x11')]===0x1f4){logger[_0x9669('0x10')](_0x9669('0x12'),_0xa1e729,_0x138fa5[_0x9669('0x10')][_0x9669('0x13')]);return _0x20e224(_0x138fa5[_0x9669('0x10')][_0x9669('0x13')]);}logger[_0x9669('0x10')](_0x9669('0x12'),_0xa1e729,_0x138fa5[_0x9669('0x10')][_0x9669('0x13')]);return _0x199bc6(_0x138fa5[_0x9669('0x10')][_0x9669('0x13')]);}else{logger[_0x9669('0xc')](_0x9669('0x12'),_0xa1e729,'request\x20sent');_0x199bc6(_0x138fa5['result'][_0x9669('0x13')]);}})[_0x9669('0x14')](function(_0x443389){logger[_0x9669('0x10')](_0x9669('0x12'),_0xa1e729,_0x443389);_0x20e224(_0x443389);});});}
\ No newline at end of file
index ffc9df0..8942b26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff73=['destroy','exports','multer','path','express','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete'];(function(_0x12da8c,_0x1efd55){var _0x5213d7=function(_0x5e09b9){while(--_0x5e09b9){_0x12da8c['push'](_0x12da8c['shift']());}};_0x5213d7(++_0x1efd55);}(_0xff73,0xac));var _0x3ff7=function(_0x26fc3b,_0x2b1be3){_0x26fc3b=_0x26fc3b-0x0;var _0x380e31=_0xff73[_0x26fc3b];return _0x380e31;};'use strict';var multer=require(_0x3ff7('0x0'));var util=require('util');var path=require(_0x3ff7('0x1'));var timeout=require('connect-timeout');var express=require(_0x3ff7('0x2'));var router=express['Router']();var auth=require(_0x3ff7('0x3'));var interaction=require(_0x3ff7('0x4'));var config=require('../../config/environment');var controller=require(_0x3ff7('0x5'));router[_0x3ff7('0x6')]('/',auth[_0x3ff7('0x7')](),controller[_0x3ff7('0x8')]);router[_0x3ff7('0x6')](_0x3ff7('0x9'),auth['isAuthenticated'](),controller[_0x3ff7('0xa')]);router['post']('/',auth[_0x3ff7('0x7')](),controller[_0x3ff7('0xb')]);router[_0x3ff7('0xc')](_0x3ff7('0x9'),auth[_0x3ff7('0x7')](),controller[_0x3ff7('0xd')]);router[_0x3ff7('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x3ff7('0xf')]);module[_0x3ff7('0x10')]=router;
\ No newline at end of file
+var _0xcaf7=['delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','create','update'];(function(_0x1873d3,_0x3fdc28){var _0x22554d=function(_0x2f8b03){while(--_0x2f8b03){_0x1873d3['push'](_0x1873d3['shift']());}};_0x22554d(++_0x3fdc28);}(_0xcaf7,0xa4));var _0x7caf=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xcaf7[_0x110c3d];return _0x226d67;};'use strict';var multer=require(_0x7caf('0x0'));var util=require(_0x7caf('0x1'));var path=require(_0x7caf('0x2'));var timeout=require(_0x7caf('0x3'));var express=require(_0x7caf('0x4'));var router=express[_0x7caf('0x5')]();var auth=require(_0x7caf('0x6'));var interaction=require(_0x7caf('0x7'));var config=require(_0x7caf('0x8'));var controller=require('./intSugarcrmField.controller');router[_0x7caf('0x9')]('/',auth[_0x7caf('0xa')](),controller[_0x7caf('0xb')]);router[_0x7caf('0x9')](_0x7caf('0xc'),auth[_0x7caf('0xa')](),controller['show']);router[_0x7caf('0xd')]('/',auth['isAuthenticated'](),controller[_0x7caf('0xe')]);router['put'](_0x7caf('0xc'),auth[_0x7caf('0xa')](),controller[_0x7caf('0xf')]);router[_0x7caf('0x10')](_0x7caf('0xc'),auth[_0x7caf('0xa')](),controller[_0x7caf('0x11')]);module['exports']=router;
\ No newline at end of file
index 58fdbf6..1572db2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['variable','keyValue','STRING','customVariable','BOOLEAN','sequelize','ENUM','string'];(function(_0x5e0045,_0x496a1b){var _0x414aec=function(_0x2aa742){while(--_0x2aa742){_0x5e0045['push'](_0x5e0045['shift']());}};_0x414aec(++_0x496a1b);}(_0xdace,0xc5));var _0xedac=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0xdace[_0x3305de];return _0x3b5a84;};'use strict';var Sequelize=require(_0xedac('0x0'));module['exports']={'type':{'type':Sequelize[_0xedac('0x1')](_0xedac('0x2'),_0xedac('0x3'),'customVariable',_0xedac('0x4')),'defaultValue':_0xedac('0x2')},'content':{'type':Sequelize[_0xedac('0x5')]},'key':{'type':Sequelize[_0xedac('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0xedac('0x2'),_0xedac('0x3'),_0xedac('0x6'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xedac('0x5')]},'nameField':{'type':Sequelize[_0xedac('0x5')]},'customField':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xac4a=['exports','ENUM','string','variable','customVariable','STRING','BOOLEAN','sequelize'];(function(_0x273f92,_0x5e6ea2){var _0x38b53c=function(_0x494d4e){while(--_0x494d4e){_0x273f92['push'](_0x273f92['shift']());}};_0x38b53c(++_0x5e6ea2);}(_0xac4a,0x13f));var _0xaac4=function(_0x20b9f1,_0x25711d){_0x20b9f1=_0x20b9f1-0x0;var _0x3b76e4=_0xac4a[_0x20b9f1];return _0x3b76e4;};'use strict';var Sequelize=require(_0xaac4('0x0'));module[_0xaac4('0x1')]={'type':{'type':Sequelize[_0xaac4('0x2')](_0xaac4('0x3'),_0xaac4('0x4'),_0xaac4('0x5'),'keyValue'),'defaultValue':'string'},'content':{'type':Sequelize[_0xaac4('0x6')]},'key':{'type':Sequelize[_0xaac4('0x6')]},'keyType':{'type':Sequelize[_0xaac4('0x2')]('string',_0xaac4('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xaac4('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xaac4('0x6')]},'customField':{'type':Sequelize[_0xaac4('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 52c7049..be8b80b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa884=['apply','save','update','then','destroy','error','name','send','SugarcrmField','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','add','day','merge','where','filter','map','key','VIRTUAL','field','options','count','include','findAll','rows','length','find','catch','create','body','html-pdf','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','set','Content-Range'];(function(_0x572637,_0x216d95){var _0xb6748=function(_0x3eeb8c){while(--_0x3eeb8c){_0x572637['push'](_0x572637['shift']());}};_0xb6748(++_0x216d95);}(_0xa884,0xfd));var _0x4a88=function(_0xc753c8,_0x5627ff){_0xc753c8=_0xc753c8-0x0;var _0xd02f5c=_0xa884[_0xc753c8];return _0xd02f5c;};'use strict';var pdf=require(_0x4a88('0x0'));var emlformat=require(_0x4a88('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x4a88('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4a88('0x3'));var moment=require(_0x4a88('0x4'));var BPromise=require(_0x4a88('0x5'));var Mustache=require(_0x4a88('0x6'));var util=require(_0x4a88('0x7'));var path=require('path');var sox=require(_0x4a88('0x8'));var csv=require(_0x4a88('0x9'));var ejs=require(_0x4a88('0xa'));var fs=require('fs');var _=require(_0x4a88('0xb'));var squel=require(_0x4a88('0xc'));var crypto=require(_0x4a88('0xd'));var jsforce=require(_0x4a88('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4a88('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x4a88('0xf'));var utils=require(_0x4a88('0x10'));var config=require(_0x4a88('0x11'));var db=require(_0x4a88('0x12'))['db'];function respondWithStatusCode(_0xc4bb26,_0x2bf22c){_0x2bf22c=_0x2bf22c||0xcc;return function(_0x363252){if(_0x363252){return _0xc4bb26[_0x4a88('0x13')](_0x2bf22c);}return _0xc4bb26[_0x4a88('0x14')](_0x2bf22c)[_0x4a88('0x15')]();};}function respondWithResult(_0xf641ad,_0x4a299e){_0x4a299e=_0x4a299e||0xc8;return function(_0x4e82b4){if(_0x4e82b4){return _0xf641ad[_0x4a88('0x14')](_0x4a299e)[_0x4a88('0x16')](_0x4e82b4);}};}function respondWithFilteredResult(_0x502c4e,_0x46dbec){return function(_0x4356c9){if(_0x4356c9){var _0x106569=_0x4356c9['count'],_0x113d9a=_0x46dbec['offset'],_0x109f6d=_0x46dbec[_0x4a88('0x17')]+_0x46dbec[_0x4a88('0x18')],_0x1ea46a;if(_0x109f6d>=_0x106569){_0x109f6d=_0x106569;_0x1ea46a=0xc8;}else{_0x1ea46a=0xce;}_0x502c4e[_0x4a88('0x14')](_0x1ea46a);return _0x502c4e[_0x4a88('0x19')](_0x4a88('0x1a'),_0x113d9a+'-'+_0x109f6d+'/'+_0x106569)[_0x4a88('0x16')](_0x4356c9);}return null;};}function patchUpdates(_0x3e31ab){return function(_0x3957df){try{jsonpatch[_0x4a88('0x1b')](_0x3957df,_0x3e31ab,!![]);}catch(_0x3f028e){return BPromise['reject'](_0x3f028e);}return _0x3957df[_0x4a88('0x1c')]();};}function saveUpdates(_0x3bbb40,_0x4ca38c){return function(_0x4a78e7){if(_0x4a78e7){return _0x4a78e7[_0x4a88('0x1d')](_0x3bbb40)[_0x4a88('0x1e')](function(_0xe98beb){return _0xe98beb;});}return null;};}function removeEntity(_0x22a922,_0xe1e677){return function(_0x5a3c96){if(_0x5a3c96){return _0x5a3c96[_0x4a88('0x1f')]()[_0x4a88('0x1e')](function(){_0x22a922['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x723b2e,_0x2eb254){return function(_0x39bf1f){if(!_0x39bf1f){_0x723b2e[_0x4a88('0x13')](0x194);}return _0x39bf1f;};}function handleError(_0x218778,_0x596d50){_0x596d50=_0x596d50||0x1f4;return function(_0x3ae911){logger[_0x4a88('0x20')](_0x3ae911['stack']);if(_0x3ae911[_0x4a88('0x21')]){delete _0x3ae911['name'];}_0x218778['status'](_0x596d50)[_0x4a88('0x22')](_0x3ae911);};}exports['index']=function(_0x57b920,_0x280025){var _0x56e0c5={},_0x4b28f3={},_0x3d3ea6={'count':0x0,'rows':[]};var _0x5b7b27=db[_0x4a88('0x23')][_0x4a88('0x24')];_0x4b28f3['model']=_[_0x4a88('0x25')](_0x5b7b27);var _0x8ca258={'dateStart':_0x57b920[_0x4a88('0x26')][_0x4a88('0x27')],'dateEnd':_0x57b920[_0x4a88('0x26')]['dateEnd']};delete _0x57b920['query']['dateStart'];delete _0x57b920[_0x4a88('0x26')][_0x4a88('0x28')];_0x4b28f3[_0x4a88('0x26')]=_[_0x4a88('0x25')](_0x57b920['query']);_0x4b28f3[_0x4a88('0x29')]=_[_0x4a88('0x2a')](_0x4b28f3[_0x4a88('0x2b')],_0x4b28f3[_0x4a88('0x26')]);_0x56e0c5[_0x4a88('0x2c')]=_[_0x4a88('0x2a')](_0x4b28f3[_0x4a88('0x2b')],qs[_0x4a88('0x2d')](_0x57b920['query']['fields']));_0x56e0c5['attributes']=_0x56e0c5['attributes']['length']?_0x56e0c5[_0x4a88('0x2c')]:_0x4b28f3[_0x4a88('0x2b')];if(!_0x57b920[_0x4a88('0x26')][_0x4a88('0x2e')](_0x4a88('0x2f'))){_0x56e0c5[_0x4a88('0x18')]=qs['limit'](_0x57b920[_0x4a88('0x26')][_0x4a88('0x18')]);_0x56e0c5[_0x4a88('0x17')]=qs[_0x4a88('0x17')](_0x57b920[_0x4a88('0x26')][_0x4a88('0x17')]);}_0x56e0c5[_0x4a88('0x30')]=qs['sort'](_0x57b920[_0x4a88('0x26')][_0x4a88('0x31')]);_0x56e0c5['where']=qs['filters'](_[_0x4a88('0x32')](_0x57b920[_0x4a88('0x26')],_0x4b28f3[_0x4a88('0x29')]));if(_0x8ca258[_0x4a88('0x27')]){if(_0x8ca258[_0x4a88('0x28')]){_0x8ca258[_0x4a88('0x28')]=moment(_0x8ca258['dateEnd'])[_0x4a88('0x33')](0x1,_0x4a88('0x34'));}else{_0x8ca258[_0x4a88('0x28')]=moment(_0x8ca258['dateStart'])[_0x4a88('0x33')](0x1,_0x4a88('0x34'));}_[_0x4a88('0x35')](_0x56e0c5[_0x4a88('0x36')],{'createdAt':{'$gte':_0x8ca258['dateStart'],'$lte':_0x8ca258['dateEnd']}});}if(_0x57b920[_0x4a88('0x26')][_0x4a88('0x37')]){_0x56e0c5[_0x4a88('0x36')]=_[_0x4a88('0x35')](_0x56e0c5[_0x4a88('0x36')],{'$or':_[_0x4a88('0x38')](_0x5b7b27,function(_0x1781fa){if(_0x1781fa['type'][_0x4a88('0x39')]!==_0x4a88('0x3a')){var _0x362582={};_0x362582[_0x1781fa[_0x4a88('0x3b')]]={'$like':'%'+_0x57b920[_0x4a88('0x26')][_0x4a88('0x37')]+'%'};return _0x362582;}})});}_0x56e0c5=_[_0x4a88('0x35')]({},_0x56e0c5,_0x57b920[_0x4a88('0x3c')]);var _0x338bde={'where':_0x56e0c5[_0x4a88('0x36')]};return db[_0x4a88('0x23')]['count'](_0x338bde)[_0x4a88('0x1e')](function(_0x1920da){_0x3d3ea6[_0x4a88('0x3d')]=_0x1920da;if(_0x57b920[_0x4a88('0x26')]['includeAll']){_0x56e0c5[_0x4a88('0x3e')]=[{'all':!![]}];}return db[_0x4a88('0x23')][_0x4a88('0x3f')](_0x56e0c5);})['then'](function(_0x41ada6){_0x3d3ea6[_0x4a88('0x40')]=_0x41ada6;return _0x3d3ea6;})['then'](respondWithFilteredResult(_0x280025,_0x56e0c5))['catch'](handleError(_0x280025,null));};exports['show']=function(_0x2c9123,_0x5e90fc){var _0x13b96b={'raw':!![],'where':{'id':_0x2c9123['params']['id']}},_0x1ed134={};_0x1ed134[_0x4a88('0x2b')]=_[_0x4a88('0x25')](db[_0x4a88('0x23')][_0x4a88('0x24')]);_0x1ed134['query']=_[_0x4a88('0x25')](_0x2c9123[_0x4a88('0x26')]);_0x1ed134[_0x4a88('0x29')]=_['intersection'](_0x1ed134[_0x4a88('0x2b')],_0x1ed134[_0x4a88('0x26')]);_0x13b96b[_0x4a88('0x2c')]=_[_0x4a88('0x2a')](_0x1ed134[_0x4a88('0x2b')],qs['fields'](_0x2c9123[_0x4a88('0x26')][_0x4a88('0x2d')]));_0x13b96b[_0x4a88('0x2c')]=_0x13b96b[_0x4a88('0x2c')][_0x4a88('0x41')]?_0x13b96b[_0x4a88('0x2c')]:_0x1ed134[_0x4a88('0x2b')];if(_0x2c9123['query']['includeAll']){_0x13b96b[_0x4a88('0x3e')]=[{'all':!![]}];}_0x13b96b=_[_0x4a88('0x35')]({},_0x13b96b,_0x2c9123[_0x4a88('0x3c')]);return db[_0x4a88('0x23')][_0x4a88('0x42')](_0x13b96b)['then'](handleEntityNotFound(_0x5e90fc,null))[_0x4a88('0x1e')](respondWithResult(_0x5e90fc,null))[_0x4a88('0x43')](handleError(_0x5e90fc,null));};exports[_0x4a88('0x44')]=function(_0x344010,_0x4c110a){return db[_0x4a88('0x23')]['create'](_0x344010[_0x4a88('0x45')],{})[_0x4a88('0x1e')](respondWithResult(_0x4c110a,0xc9))[_0x4a88('0x43')](handleError(_0x4c110a,null));};exports['update']=function(_0x269f5a,_0x46bbce){if(_0x269f5a['body']['id']){delete _0x269f5a[_0x4a88('0x45')]['id'];}return db[_0x4a88('0x23')][_0x4a88('0x42')]({'where':{'id':_0x269f5a['params']['id']}})[_0x4a88('0x1e')](handleEntityNotFound(_0x46bbce,null))[_0x4a88('0x1e')](saveUpdates(_0x269f5a['body'],null))[_0x4a88('0x1e')](respondWithResult(_0x46bbce,null))[_0x4a88('0x43')](handleError(_0x46bbce,null));};exports['destroy']=function(_0x5038c3,_0x997231){return db[_0x4a88('0x23')][_0x4a88('0x42')]({'where':{'id':_0x5038c3['params']['id']}})[_0x4a88('0x1e')](handleEntityNotFound(_0x997231,null))['then'](removeEntity(_0x997231,null))[_0x4a88('0x43')](handleError(_0x997231,null));};
\ No newline at end of file
+var _0x14e4=['key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','create','body','update','find','html-pdf','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','status','json','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','end','sendStatus','error','stack','name','SugarcrmField','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','order','sort','pick','add','day','merge','filter','where','map','type'];(function(_0xfc8cd8,_0x3073a7){var _0x55a1a1=function(_0x2291bb){while(--_0x2291bb){_0xfc8cd8['push'](_0xfc8cd8['shift']());}};_0x55a1a1(++_0x3073a7);}(_0x14e4,0x137));var _0x414e=function(_0x380457,_0x2ece0f){_0x380457=_0x380457-0x0;var _0x369601=_0x14e4[_0x380457];return _0x369601;};'use strict';var pdf=require(_0x414e('0x0'));var emlformat=require(_0x414e('0x1'));var rimraf=require(_0x414e('0x2'));var zipdir=require(_0x414e('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x414e('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x414e('0x5'));var util=require(_0x414e('0x6'));var path=require(_0x414e('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x414e('0x8'));var fs=require('fs');var _=require(_0x414e('0x9'));var squel=require(_0x414e('0xa'));var crypto=require(_0x414e('0xb'));var jsforce=require(_0x414e('0xc'));var deskjs=require(_0x414e('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x414e('0xe'));var Redis=require(_0x414e('0xf'));var qs=require(_0x414e('0x10'));var logger=require(_0x414e('0x11'))('api');var utils=require(_0x414e('0x12'));var config=require(_0x414e('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c726c,_0x5b924c){_0x5b924c=_0x5b924c||0xcc;return function(_0x4aee16){if(_0x4aee16){return _0x2c726c['sendStatus'](_0x5b924c);}return _0x2c726c[_0x414e('0x14')](_0x5b924c)['end']();};}function respondWithResult(_0x1cdcaa,_0x1e533f){_0x1e533f=_0x1e533f||0xc8;return function(_0x38012a){if(_0x38012a){return _0x1cdcaa[_0x414e('0x14')](_0x1e533f)[_0x414e('0x15')](_0x38012a);}};}function respondWithFilteredResult(_0x1b3e51,_0x388951){return function(_0x39e39e){if(_0x39e39e){var _0x4bf357=_0x39e39e[_0x414e('0x16')],_0x2ab357=_0x388951[_0x414e('0x17')],_0x5058cd=_0x388951[_0x414e('0x17')]+_0x388951[_0x414e('0x18')],_0x338334;if(_0x5058cd>=_0x4bf357){_0x5058cd=_0x4bf357;_0x338334=0xc8;}else{_0x338334=0xce;}_0x1b3e51[_0x414e('0x14')](_0x338334);return _0x1b3e51[_0x414e('0x19')](_0x414e('0x1a'),_0x2ab357+'-'+_0x5058cd+'/'+_0x4bf357)[_0x414e('0x15')](_0x39e39e);}return null;};}function patchUpdates(_0x2f038d){return function(_0x552d2f){try{jsonpatch[_0x414e('0x1b')](_0x552d2f,_0x2f038d,!![]);}catch(_0x3e782a){return BPromise[_0x414e('0x1c')](_0x3e782a);}return _0x552d2f[_0x414e('0x1d')]();};}function saveUpdates(_0x973438,_0xc3495){return function(_0x223c9c){if(_0x223c9c){return _0x223c9c['update'](_0x973438)[_0x414e('0x1e')](function(_0xc65151){return _0xc65151;});}return null;};}function removeEntity(_0x3b4469,_0x476017){return function(_0x2e183d){if(_0x2e183d){return _0x2e183d[_0x414e('0x1f')]()[_0x414e('0x1e')](function(){_0x3b4469['status'](0xcc)[_0x414e('0x20')]();});}};}function handleEntityNotFound(_0x318f95,_0x28eb01){return function(_0x1841f1){if(!_0x1841f1){_0x318f95[_0x414e('0x21')](0x194);}return _0x1841f1;};}function handleError(_0x3cb7b1,_0x4d927d){_0x4d927d=_0x4d927d||0x1f4;return function(_0x48d17b){logger[_0x414e('0x22')](_0x48d17b[_0x414e('0x23')]);if(_0x48d17b[_0x414e('0x24')]){delete _0x48d17b['name'];}_0x3cb7b1[_0x414e('0x14')](_0x4d927d)['send'](_0x48d17b);};}exports['index']=function(_0x19d67a,_0x3e8498){var _0x270070={},_0x4a4c99={},_0x33c90a={'count':0x0,'rows':[]};var _0x224784=db[_0x414e('0x25')][_0x414e('0x26')];_0x4a4c99[_0x414e('0x27')]=_[_0x414e('0x28')](_0x224784);var _0x3ed5ca={'dateStart':_0x19d67a[_0x414e('0x29')][_0x414e('0x2a')],'dateEnd':_0x19d67a[_0x414e('0x29')][_0x414e('0x2b')]};delete _0x19d67a['query'][_0x414e('0x2a')];delete _0x19d67a[_0x414e('0x29')][_0x414e('0x2b')];_0x4a4c99[_0x414e('0x29')]=_[_0x414e('0x28')](_0x19d67a[_0x414e('0x29')]);_0x4a4c99[_0x414e('0x2c')]=_[_0x414e('0x2d')](_0x4a4c99[_0x414e('0x27')],_0x4a4c99[_0x414e('0x29')]);_0x270070[_0x414e('0x2e')]=_[_0x414e('0x2d')](_0x4a4c99[_0x414e('0x27')],qs['fields'](_0x19d67a[_0x414e('0x29')][_0x414e('0x2f')]));_0x270070[_0x414e('0x2e')]=_0x270070['attributes']['length']?_0x270070[_0x414e('0x2e')]:_0x4a4c99[_0x414e('0x27')];if(!_0x19d67a[_0x414e('0x29')][_0x414e('0x30')]('nolimit')){_0x270070[_0x414e('0x18')]=qs[_0x414e('0x18')](_0x19d67a['query']['limit']);_0x270070[_0x414e('0x17')]=qs[_0x414e('0x17')](_0x19d67a[_0x414e('0x29')]['offset']);}_0x270070[_0x414e('0x31')]=qs[_0x414e('0x32')](_0x19d67a[_0x414e('0x29')][_0x414e('0x32')]);_0x270070['where']=qs[_0x414e('0x2c')](_[_0x414e('0x33')](_0x19d67a['query'],_0x4a4c99[_0x414e('0x2c')]));if(_0x3ed5ca[_0x414e('0x2a')]){if(_0x3ed5ca['dateEnd']){_0x3ed5ca['dateEnd']=moment(_0x3ed5ca[_0x414e('0x2b')])[_0x414e('0x34')](0x1,_0x414e('0x35'));}else{_0x3ed5ca[_0x414e('0x2b')]=moment(_0x3ed5ca['dateStart'])[_0x414e('0x34')](0x1,_0x414e('0x35'));}_[_0x414e('0x36')](_0x270070['where'],{'createdAt':{'$gte':_0x3ed5ca[_0x414e('0x2a')],'$lte':_0x3ed5ca[_0x414e('0x2b')]}});}if(_0x19d67a['query'][_0x414e('0x37')]){_0x270070['where']=_[_0x414e('0x36')](_0x270070[_0x414e('0x38')],{'$or':_[_0x414e('0x39')](_0x224784,function(_0x5da6b8){if(_0x5da6b8[_0x414e('0x3a')][_0x414e('0x3b')]!==_0x414e('0x3c')){var _0x31aec3={};_0x31aec3[_0x5da6b8[_0x414e('0x3d')]]={'$like':'%'+_0x19d67a[_0x414e('0x29')][_0x414e('0x37')]+'%'};return _0x31aec3;}})});}_0x270070=_[_0x414e('0x36')]({},_0x270070,_0x19d67a[_0x414e('0x3e')]);var _0x506341={'where':_0x270070[_0x414e('0x38')]};return db[_0x414e('0x25')][_0x414e('0x16')](_0x506341)['then'](function(_0x1259ea){_0x33c90a['count']=_0x1259ea;if(_0x19d67a[_0x414e('0x29')][_0x414e('0x3f')]){_0x270070[_0x414e('0x40')]=[{'all':!![]}];}return db[_0x414e('0x25')][_0x414e('0x41')](_0x270070);})[_0x414e('0x1e')](function(_0x3b1c23){_0x33c90a[_0x414e('0x42')]=_0x3b1c23;return _0x33c90a;})[_0x414e('0x1e')](respondWithFilteredResult(_0x3e8498,_0x270070))[_0x414e('0x43')](handleError(_0x3e8498,null));};exports[_0x414e('0x44')]=function(_0x384c27,_0x51c884){var _0x539ada={'raw':!![],'where':{'id':_0x384c27[_0x414e('0x45')]['id']}},_0xd8e296={};_0xd8e296[_0x414e('0x27')]=_['keys'](db['SugarcrmField'][_0x414e('0x26')]);_0xd8e296[_0x414e('0x29')]=_[_0x414e('0x28')](_0x384c27[_0x414e('0x29')]);_0xd8e296[_0x414e('0x2c')]=_[_0x414e('0x2d')](_0xd8e296[_0x414e('0x27')],_0xd8e296[_0x414e('0x29')]);_0x539ada[_0x414e('0x2e')]=_['intersection'](_0xd8e296['model'],qs[_0x414e('0x2f')](_0x384c27[_0x414e('0x29')][_0x414e('0x2f')]));_0x539ada[_0x414e('0x2e')]=_0x539ada[_0x414e('0x2e')]['length']?_0x539ada[_0x414e('0x2e')]:_0xd8e296['model'];if(_0x384c27[_0x414e('0x29')][_0x414e('0x3f')]){_0x539ada[_0x414e('0x40')]=[{'all':!![]}];}_0x539ada=_[_0x414e('0x36')]({},_0x539ada,_0x384c27['options']);return db[_0x414e('0x25')]['find'](_0x539ada)[_0x414e('0x1e')](handleEntityNotFound(_0x51c884,null))['then'](respondWithResult(_0x51c884,null))[_0x414e('0x43')](handleError(_0x51c884,null));};exports['create']=function(_0x1223c8,_0x397bc7){return db[_0x414e('0x25')][_0x414e('0x46')](_0x1223c8[_0x414e('0x47')],{})[_0x414e('0x1e')](respondWithResult(_0x397bc7,0xc9))['catch'](handleError(_0x397bc7,null));};exports[_0x414e('0x48')]=function(_0x503084,_0x58e147){if(_0x503084[_0x414e('0x47')]['id']){delete _0x503084[_0x414e('0x47')]['id'];}return db[_0x414e('0x25')][_0x414e('0x49')]({'where':{'id':_0x503084[_0x414e('0x45')]['id']}})[_0x414e('0x1e')](handleEntityNotFound(_0x58e147,null))['then'](saveUpdates(_0x503084[_0x414e('0x47')],null))[_0x414e('0x1e')](respondWithResult(_0x58e147,null))[_0x414e('0x43')](handleError(_0x58e147,null));};exports[_0x414e('0x1f')]=function(_0x2cfc46,_0x4ad851){return db[_0x414e('0x25')][_0x414e('0x49')]({'where':{'id':_0x2cfc46[_0x414e('0x45')]['id']}})[_0x414e('0x1e')](handleEntityNotFound(_0x4ad851,null))['then'](removeEntity(_0x4ad851,null))[_0x414e('0x43')](handleError(_0x4ad851,null));};
\ No newline at end of file
index 69c4e60..8bd97dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb2=['bluebird','request-promise','./intSugarcrmField.attributes','define','SugarcrmField','int_sugarcrm_fields','lodash','util','../../config/logger','api','moment'];(function(_0x33a02d,_0xe0770d){var _0x23437e=function(_0x4ebee5){while(--_0x4ebee5){_0x33a02d['push'](_0x33a02d['shift']());}};_0x23437e(++_0xe0770d);}(_0x1cb2,0x10e));var _0x21cb=function(_0x535a13,_0x4824b0){_0x535a13=_0x535a13-0x0;var _0x3f59ec=_0x1cb2[_0x535a13];return _0x3f59ec;};'use strict';var _=require(_0x21cb('0x0'));var util=require(_0x21cb('0x1'));var logger=require(_0x21cb('0x2'))(_0x21cb('0x3'));var moment=require(_0x21cb('0x4'));var BPromise=require(_0x21cb('0x5'));var rp=require(_0x21cb('0x6'));var attributes=require(_0x21cb('0x7'));module['exports']=function(_0x4d9df3,_0x2ad3e0){return _0x4d9df3[_0x21cb('0x8')](_0x21cb('0x9'),attributes,{'tableName':_0x21cb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xabe6=['SugarcrmField','int_sugarcrm_fields','util','../../config/logger','moment','bluebird','request-promise','./intSugarcrmField.attributes','exports'];(function(_0x310f1b,_0x48e137){var _0x2cc81c=function(_0x5bde88){while(--_0x5bde88){_0x310f1b['push'](_0x310f1b['shift']());}};_0x2cc81c(++_0x48e137);}(_0xabe6,0x173));var _0x6abe=function(_0x25e839,_0xd7f934){_0x25e839=_0x25e839-0x0;var _0x2cf882=_0xabe6[_0x25e839];return _0x2cf882;};'use strict';var _=require('lodash');var util=require(_0x6abe('0x0'));var logger=require(_0x6abe('0x1'))('api');var moment=require(_0x6abe('0x2'));var BPromise=require(_0x6abe('0x3'));var rp=require(_0x6abe('0x4'));var attributes=require(_0x6abe('0x5'));module[_0x6abe('0x6')]=function(_0x5db9d0,_0x2fd00d){return _0x5db9d0['define'](_0x6abe('0x7'),attributes,{'tableName':_0x6abe('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4210c42..2b3c8dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e8=['request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','SugarcrmField,\x20%s,\x20%s'];(function(_0x2b9348,_0x234efa){var _0xe63f6c=function(_0x3e2c8f){while(--_0x3e2c8f){_0x2b9348['push'](_0x2b9348['shift']());}};_0xe63f6c(++_0x234efa);}(_0x28e8,0x7b));var _0x828e=function(_0x3e6cb1,_0x405022){_0x3e6cb1=_0x3e6cb1-0x0;var _0x19ee10=_0x28e8[_0x3e6cb1];return _0x19ee10;};'use strict';var _=require(_0x828e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x828e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x828e('0x2'));var logger=require(_0x828e('0x3'))(_0x828e('0x4'));var config=require(_0x828e('0x5'));var jayson=require(_0x828e('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x34da74,_0x344941,_0x455cb3){return new BPromise(function(_0x5f2362,_0x8a5d06){return client['request'](_0x34da74,_0x455cb3)[_0x828e('0x7')](function(_0x3dd3ce){logger[_0x828e('0x8')](_0x828e('0x9'),_0x344941,_0x828e('0xa'));logger[_0x828e('0xb')](_0x828e('0xc'),_0x344941,_0x828e('0xa'),JSON[_0x828e('0xd')](_0x3dd3ce));if(_0x3dd3ce['error']){if(_0x3dd3ce[_0x828e('0xe')][_0x828e('0xf')]===0x1f4){logger[_0x828e('0xe')](_0x828e('0x9'),_0x344941,_0x3dd3ce['error'][_0x828e('0x10')]);return _0x8a5d06(_0x3dd3ce[_0x828e('0xe')][_0x828e('0x10')]);}logger[_0x828e('0xe')]('SugarcrmField,\x20%s,\x20%s',_0x344941,_0x3dd3ce[_0x828e('0xe')][_0x828e('0x10')]);return _0x5f2362(_0x3dd3ce[_0x828e('0xe')][_0x828e('0x10')]);}else{logger[_0x828e('0x8')]('SugarcrmField,\x20%s,\x20%s',_0x344941,_0x828e('0xa'));_0x5f2362(_0x3dd3ce[_0x828e('0x11')][_0x828e('0x10')]);}})[_0x828e('0x12')](function(_0x3cb595){logger[_0x828e('0xe')](_0x828e('0x9'),_0x344941,_0x3cb595);_0x8a5d06(_0x3cb595);});});}
\ No newline at end of file
+var _0xbf21=['../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error','message','SugarcrmField,\x20%s,\x20%s','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x59a588,_0x4841f4){var _0x5bd3a0=function(_0x45df10){while(--_0x45df10){_0x59a588['push'](_0x59a588['shift']());}};_0x5bd3a0(++_0x4841f4);}(_0xbf21,0x19d));var _0x1bf2=function(_0x505384,_0x555b97){_0x505384=_0x505384-0x0;var _0x5b8e09=_0xbf21[_0x505384];return _0x5b8e09;};'use strict';var _=require(_0x1bf2('0x0'));var util=require(_0x1bf2('0x1'));var moment=require(_0x1bf2('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1bf2('0x3'));var db=require(_0x1bf2('0x4'))['db'];var utils=require(_0x1bf2('0x5'));var logger=require(_0x1bf2('0x6'))('rpc');var config=require(_0x1bf2('0x7'));var jayson=require(_0x1bf2('0x8'));var client=jayson[_0x1bf2('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x375ad5,_0x3ab36d,_0x425729){return new BPromise(function(_0x3835e8,_0x55d068){return client[_0x1bf2('0xa')](_0x375ad5,_0x425729)[_0x1bf2('0xb')](function(_0x4d69c5){logger[_0x1bf2('0xc')]('SugarcrmField,\x20%s,\x20%s',_0x3ab36d,_0x1bf2('0xd'));logger[_0x1bf2('0xe')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x3ab36d,_0x1bf2('0xd'),JSON[_0x1bf2('0xf')](_0x4d69c5));if(_0x4d69c5['error']){if(_0x4d69c5[_0x1bf2('0x10')]['code']===0x1f4){logger[_0x1bf2('0x10')]('SugarcrmField,\x20%s,\x20%s',_0x3ab36d,_0x4d69c5[_0x1bf2('0x10')][_0x1bf2('0x11')]);return _0x55d068(_0x4d69c5[_0x1bf2('0x10')][_0x1bf2('0x11')]);}logger['error'](_0x1bf2('0x12'),_0x3ab36d,_0x4d69c5['error'][_0x1bf2('0x11')]);return _0x3835e8(_0x4d69c5[_0x1bf2('0x10')]['message']);}else{logger[_0x1bf2('0xc')]('SugarcrmField,\x20%s,\x20%s',_0x3ab36d,_0x1bf2('0xd'));_0x3835e8(_0x4d69c5[_0x1bf2('0x13')][_0x1bf2('0x11')]);}})[_0x1bf2('0x14')](function(_0x5123c1){logger[_0x1bf2('0x10')](_0x1bf2('0x12'),_0x3ab36d,_0x5123c1);_0x55d068(_0x5123c1);});});}
\ No newline at end of file
index 38270fa..c7f698a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x596a=['get','/:id','isAuthenticated','show','/:id/configurations','getFields','post','create','addConfiguration','update','delete','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller'];(function(_0x2fbba3,_0x30a7d9){var _0x26f102=function(_0x2548c9){while(--_0x2548c9){_0x2fbba3['push'](_0x2fbba3['shift']());}};_0x26f102(++_0x30a7d9);}(_0x596a,0x171));var _0xa596=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x596a[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0xa596('0x0'));var util=require(_0xa596('0x1'));var path=require(_0xa596('0x2'));var timeout=require('connect-timeout');var express=require(_0xa596('0x3'));var router=express[_0xa596('0x4')]();var auth=require(_0xa596('0x5'));var interaction=require(_0xa596('0x6'));var config=require(_0xa596('0x7'));var controller=require(_0xa596('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xa596('0x9')](_0xa596('0xa'),auth[_0xa596('0xb')](),controller[_0xa596('0xc')]);router[_0xa596('0x9')](_0xa596('0xd'),auth[_0xa596('0xb')](),controller['getConfigurations']);router[_0xa596('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0xa596('0xe')]);router[_0xa596('0xf')]('/',auth[_0xa596('0xb')](),controller[_0xa596('0x10')]);router[_0xa596('0xf')](_0xa596('0xd'),auth[_0xa596('0xb')](),controller[_0xa596('0x11')]);router['put'](_0xa596('0xa'),auth[_0xa596('0xb')](),controller[_0xa596('0x12')]);router[_0xa596('0x13')]('/:id',auth[_0xa596('0xb')](),controller['destroy']);module[_0xa596('0x14')]=router;
\ No newline at end of file
+var _0x485f=['/:id','show','/:id/configurations','getConfigurations','getFields','post','create','put','update','delete','destroy','exports','multer','util','express','Router','../../config/environment','get','isAuthenticated','index'];(function(_0x118c28,_0x348904){var _0x4afea9=function(_0x1ff3a3){while(--_0x1ff3a3){_0x118c28['push'](_0x118c28['shift']());}};_0x4afea9(++_0x348904);}(_0x485f,0x188));var _0xf485=function(_0x33d286,_0x1d83b7){_0x33d286=_0x33d286-0x0;var _0xd4859a=_0x485f[_0x33d286];return _0xd4859a;};'use strict';var multer=require(_0xf485('0x0'));var util=require(_0xf485('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf485('0x2'));var router=express[_0xf485('0x3')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf485('0x4'));var controller=require('./intVtigerAccount.controller');router[_0xf485('0x5')]('/',auth[_0xf485('0x6')](),controller[_0xf485('0x7')]);router[_0xf485('0x5')](_0xf485('0x8'),auth['isAuthenticated'](),controller[_0xf485('0x9')]);router[_0xf485('0x5')](_0xf485('0xa'),auth['isAuthenticated'](),controller[_0xf485('0xb')]);router[_0xf485('0x5')]('/:id/fields',auth[_0xf485('0x6')](),controller[_0xf485('0xc')]);router[_0xf485('0xd')]('/',auth[_0xf485('0x6')](),controller[_0xf485('0xe')]);router['post'](_0xf485('0xa'),auth[_0xf485('0x6')](),controller['addConfiguration']);router[_0xf485('0xf')](_0xf485('0x8'),auth[_0xf485('0x6')](),controller[_0xf485('0x10')]);router[_0xf485('0x11')](_0xf485('0x8'),auth[_0xf485('0x6')](),controller[_0xf485('0x12')]);module[_0xf485('0x13')]=router;
\ No newline at end of file
index c9a8e5c..e61e201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1950=['STRING','exports'];(function(_0x1fdcab,_0x9123aa){var _0x376b2f=function(_0x25c1d2){while(--_0x25c1d2){_0x1fdcab['push'](_0x1fdcab['shift']());}};_0x376b2f(++_0x9123aa);}(_0x1950,0xad));var _0x0195=function(_0x1919fa,_0x23a9c2){_0x1919fa=_0x1919fa-0x0;var _0x57b1b5=_0x1950[_0x1919fa];return _0x57b1b5;};'use strict';var Sequelize=require('sequelize');module[_0x0195('0x0')]={'name':{'type':Sequelize[_0x0195('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x0195('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x0195('0x1')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x0195('0x1')]},'accessKey':{'type':Sequelize[_0x0195('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x079b=['exports','STRING','sequelize'];(function(_0x584d66,_0x325223){var _0x4588f2=function(_0x5dd9e1){while(--_0x5dd9e1){_0x584d66['push'](_0x584d66['shift']());}};_0x4588f2(++_0x325223);}(_0x079b,0xef));var _0xb079=function(_0x4c587a,_0x3bf54a){_0x4c587a=_0x4c587a-0x0;var _0x3e66fc=_0x079b[_0x4c587a];return _0x3e66fc;};'use strict';var Sequelize=require(_0xb079('0x0'));module[_0xb079('0x1')]={'name':{'type':Sequelize[_0xb079('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb079('0x2')]},'username':{'type':Sequelize[_0xb079('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0xb079('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING']},'accessKey':{'type':Sequelize[_0xb079('0x2')],'allowNull':![]}};
\ No newline at end of file
index 945a93f..327e3b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf336=['client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject','save','update','destroy','name','send','index','keys','query','dateEnd','dateStart','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','filter','map','type','key','field','options','VtigerAccount','include','findAll','rows','show','params','rawAttributes','includeAll','find','create','body','findOne','VtigerConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','md5','username','description','remoteUri','serverUrl','accessKey','moduleName','format','%s/webservice.php','GET','getchallenge','success','POST','result','token','sessionName','autogenerated','owner','remove','false','label','startsWith','cf_','picklist','value','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','api','../../config/environment','../../components/integrations/configuration','jayson/promise'];(function(_0x1d5147,_0x20834d){var _0x23f052=function(_0xf9124e){while(--_0xf9124e){_0x1d5147['push'](_0x1d5147['shift']());}};_0x23f052(++_0x20834d);}(_0xf336,0x6a));var _0x6f33=function(_0x3b6ede,_0x179814){_0x3b6ede=_0x3b6ede-0x0;var _0x22ebe4=_0xf336[_0x3b6ede];return _0x22ebe4;};'use strict';var pdf=require(_0x6f33('0x0'));var emlformat=require(_0x6f33('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x6f33('0x2'));var jsonpatch=require(_0x6f33('0x3'));var rp=require(_0x6f33('0x4'));var moment=require(_0x6f33('0x5'));var BPromise=require(_0x6f33('0x6'));var Mustache=require(_0x6f33('0x7'));var util=require(_0x6f33('0x8'));var path=require(_0x6f33('0x9'));var sox=require(_0x6f33('0xa'));var csv=require('to-csv');var ejs=require(_0x6f33('0xb'));var fs=require('fs');var _=require(_0x6f33('0xc'));var squel=require('squel');var crypto=require(_0x6f33('0xd'));var jsforce=require(_0x6f33('0xe'));var deskjs=require(_0x6f33('0xf'));var toCsv=require(_0x6f33('0x10'));var querystring=require(_0x6f33('0x11'));var Papa=require(_0x6f33('0x12'));var Redis=require(_0x6f33('0x13'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x6f33('0x14'));var utils=require('../../config/utils');var config=require(_0x6f33('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x6f33('0x16'));var jayson=require(_0x6f33('0x17'));var client=jayson[_0x6f33('0x18')][_0x6f33('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x31531b,_0x415eca,_0x43a6c1,_0x3ad359){return new BPromise(function(_0x39b41e,_0x1e95bf){var _0x2c7892=_0x3ad359||client;return _0x2c7892[_0x6f33('0x1a')](_0x31531b,_0x43a6c1)[_0x6f33('0x1b')](function(_0x3d1efb){logger[_0x6f33('0x1c')](_0x6f33('0x1d'),_0x415eca,'request\x20sent');logger['debug'](_0x6f33('0x1e'),_0x415eca,_0x6f33('0x1f'),JSON[_0x6f33('0x20')](_0x3d1efb));if(_0x3d1efb[_0x6f33('0x21')]){if(_0x3d1efb[_0x6f33('0x21')]['code']===0x1f4){logger[_0x6f33('0x21')](_0x6f33('0x1d'),_0x415eca,_0x3d1efb[_0x6f33('0x21')][_0x6f33('0x22')]);return _0x1e95bf(_0x3d1efb[_0x6f33('0x21')]['message']);}logger['error'](_0x6f33('0x1d'),_0x415eca,_0x3d1efb[_0x6f33('0x21')][_0x6f33('0x22')]);return _0x39b41e(_0x3d1efb[_0x6f33('0x21')][_0x6f33('0x22')]);}else{logger['info'](_0x6f33('0x1d'),_0x415eca,_0x6f33('0x1f'));_0x39b41e(_0x3d1efb['result']['message']);}})[_0x6f33('0x23')](function(_0x5ee633){logger[_0x6f33('0x21')](_0x6f33('0x1d'),_0x415eca,_0x5ee633);_0x1e95bf(_0x5ee633);});});}function respondWithStatusCode(_0xa4b7d3,_0x43b3a2){_0x43b3a2=_0x43b3a2||0xcc;return function(_0x3aa070){if(_0x3aa070){return _0xa4b7d3[_0x6f33('0x24')](_0x43b3a2);}return _0xa4b7d3[_0x6f33('0x25')](_0x43b3a2)[_0x6f33('0x26')]();};}function respondWithResult(_0x4e226e,_0x548cfb){_0x548cfb=_0x548cfb||0xc8;return function(_0x128329){if(_0x128329){return _0x4e226e[_0x6f33('0x25')](_0x548cfb)[_0x6f33('0x27')](_0x128329);}};}function respondWithFilteredResult(_0x254d95,_0x443579){return function(_0x3b954d){if(_0x3b954d){var _0x2a2d42=_0x3b954d[_0x6f33('0x28')],_0x394bd6=_0x443579[_0x6f33('0x29')],_0x274e98=_0x443579['offset']+_0x443579[_0x6f33('0x2a')],_0x4aa137;if(_0x274e98>=_0x2a2d42){_0x274e98=_0x2a2d42;_0x4aa137=0xc8;}else{_0x4aa137=0xce;}_0x254d95[_0x6f33('0x25')](_0x4aa137);return _0x254d95[_0x6f33('0x2b')](_0x6f33('0x2c'),_0x394bd6+'-'+_0x274e98+'/'+_0x2a2d42)[_0x6f33('0x27')](_0x3b954d);}return null;};}function patchUpdates(_0x2b9897){return function(_0x40ebbf){try{jsonpatch['apply'](_0x40ebbf,_0x2b9897,!![]);}catch(_0x3e976b){return BPromise[_0x6f33('0x2d')](_0x3e976b);}return _0x40ebbf[_0x6f33('0x2e')]();};}function saveUpdates(_0x59822e,_0x5612ef){return function(_0x16638d){if(_0x16638d){return _0x16638d[_0x6f33('0x2f')](_0x59822e)[_0x6f33('0x1b')](function(_0x4e86f7){return _0x4e86f7;});}return null;};}function removeEntity(_0x583fb2,_0x123c13){return function(_0x1e3428){if(_0x1e3428){return _0x1e3428[_0x6f33('0x30')]()[_0x6f33('0x1b')](function(){_0x583fb2[_0x6f33('0x25')](0xcc)[_0x6f33('0x26')]();});}};}function handleEntityNotFound(_0x5fbf4f,_0x11c8c4){return function(_0x1059ac){if(!_0x1059ac){_0x5fbf4f[_0x6f33('0x24')](0x194);}return _0x1059ac;};}function handleError(_0x153e9c,_0x51a3a6){_0x51a3a6=_0x51a3a6||0x1f4;return function(_0x448208){logger[_0x6f33('0x21')](_0x448208['stack']);if(_0x448208[_0x6f33('0x31')]){delete _0x448208['name'];}_0x153e9c[_0x6f33('0x25')](_0x51a3a6)[_0x6f33('0x32')](_0x448208);};}exports[_0x6f33('0x33')]=function(_0x2c800f,_0x402cb6){var _0x188caf={},_0x3dbd77={},_0x49dfea={'count':0x0,'rows':[]};var _0x1cbb48=db['VtigerAccount']['rawAttributes'];_0x3dbd77['model']=_[_0x6f33('0x34')](_0x1cbb48);var _0x129ee2={'dateStart':_0x2c800f[_0x6f33('0x35')]['dateStart'],'dateEnd':_0x2c800f[_0x6f33('0x35')][_0x6f33('0x36')]};delete _0x2c800f[_0x6f33('0x35')][_0x6f33('0x37')];delete _0x2c800f[_0x6f33('0x35')][_0x6f33('0x36')];_0x3dbd77['query']=_['keys'](_0x2c800f[_0x6f33('0x35')]);_0x3dbd77[_0x6f33('0x38')]=_['intersection'](_0x3dbd77[_0x6f33('0x39')],_0x3dbd77[_0x6f33('0x35')]);_0x188caf[_0x6f33('0x3a')]=_[_0x6f33('0x3b')](_0x3dbd77['model'],qs[_0x6f33('0x3c')](_0x2c800f[_0x6f33('0x35')][_0x6f33('0x3c')]));_0x188caf['attributes']=_0x188caf[_0x6f33('0x3a')][_0x6f33('0x3d')]?_0x188caf[_0x6f33('0x3a')]:_0x3dbd77['model'];if(!_0x2c800f[_0x6f33('0x35')][_0x6f33('0x3e')](_0x6f33('0x3f'))){_0x188caf[_0x6f33('0x2a')]=qs[_0x6f33('0x2a')](_0x2c800f[_0x6f33('0x35')][_0x6f33('0x2a')]);_0x188caf['offset']=qs[_0x6f33('0x29')](_0x2c800f[_0x6f33('0x35')][_0x6f33('0x29')]);}_0x188caf[_0x6f33('0x40')]=qs[_0x6f33('0x41')](_0x2c800f[_0x6f33('0x35')][_0x6f33('0x41')]);_0x188caf[_0x6f33('0x42')]=qs[_0x6f33('0x38')](_[_0x6f33('0x43')](_0x2c800f[_0x6f33('0x35')],_0x3dbd77[_0x6f33('0x38')]));if(_0x129ee2[_0x6f33('0x37')]){if(_0x129ee2['dateEnd']){_0x129ee2[_0x6f33('0x36')]=moment(_0x129ee2['dateEnd'])[_0x6f33('0x44')](0x1,_0x6f33('0x45'));}else{_0x129ee2[_0x6f33('0x36')]=moment(_0x129ee2[_0x6f33('0x37')])[_0x6f33('0x44')](0x1,'day');}_[_0x6f33('0x46')](_0x188caf[_0x6f33('0x42')],{'createdAt':{'$gte':_0x129ee2[_0x6f33('0x37')],'$lte':_0x129ee2[_0x6f33('0x36')]}});}if(_0x2c800f[_0x6f33('0x35')][_0x6f33('0x47')]){_0x188caf[_0x6f33('0x42')]=_['merge'](_0x188caf['where'],{'$or':_[_0x6f33('0x48')](_0x1cbb48,function(_0x198ee7){if(_0x198ee7[_0x6f33('0x49')][_0x6f33('0x4a')]!=='VIRTUAL'){var _0x5a7579={};_0x5a7579[_0x198ee7[_0x6f33('0x4b')]]={'$like':'%'+_0x2c800f['query'][_0x6f33('0x47')]+'%'};return _0x5a7579;}})});}_0x188caf=_[_0x6f33('0x46')]({},_0x188caf,_0x2c800f[_0x6f33('0x4c')]);var _0x45946e={'where':_0x188caf[_0x6f33('0x42')]};return db[_0x6f33('0x4d')]['count'](_0x45946e)[_0x6f33('0x1b')](function(_0xcb5b51){_0x49dfea['count']=_0xcb5b51;if(_0x2c800f['query']['includeAll']){_0x188caf[_0x6f33('0x4e')]=[{'all':!![]}];}return db[_0x6f33('0x4d')][_0x6f33('0x4f')](_0x188caf);})['then'](function(_0xa7a163){_0x49dfea[_0x6f33('0x50')]=_0xa7a163;return _0x49dfea;})[_0x6f33('0x1b')](respondWithFilteredResult(_0x402cb6,_0x188caf))[_0x6f33('0x23')](handleError(_0x402cb6,null));};exports[_0x6f33('0x51')]=function(_0x53a55b,_0x2f3ab5){var _0x59df5c={'raw':![],'where':{'id':_0x53a55b[_0x6f33('0x52')]['id']}},_0x630143={};_0x630143['model']=_[_0x6f33('0x34')](db[_0x6f33('0x4d')][_0x6f33('0x53')]);_0x630143[_0x6f33('0x35')]=_['keys'](_0x53a55b['query']);_0x630143[_0x6f33('0x38')]=_[_0x6f33('0x3b')](_0x630143['model'],_0x630143['query']);_0x59df5c[_0x6f33('0x3a')]=_['intersection'](_0x630143[_0x6f33('0x39')],qs[_0x6f33('0x3c')](_0x53a55b[_0x6f33('0x35')][_0x6f33('0x3c')]));_0x59df5c['attributes']=_0x59df5c['attributes'][_0x6f33('0x3d')]?_0x59df5c[_0x6f33('0x3a')]:_0x630143[_0x6f33('0x39')];if(_0x53a55b[_0x6f33('0x35')][_0x6f33('0x54')]){_0x59df5c['include']=[{'all':!![]}];}_0x59df5c=_[_0x6f33('0x46')]({},_0x59df5c,_0x53a55b[_0x6f33('0x4c')]);return db[_0x6f33('0x4d')][_0x6f33('0x55')](_0x59df5c)['then'](handleEntityNotFound(_0x2f3ab5,null))[_0x6f33('0x1b')](respondWithResult(_0x2f3ab5,null))[_0x6f33('0x23')](handleError(_0x2f3ab5,null));};exports[_0x6f33('0x56')]=function(_0x2e5061,_0x2921d4){return db['VtigerAccount']['create'](_0x2e5061['body'],{})[_0x6f33('0x1b')](respondWithResult(_0x2921d4,0xc9))[_0x6f33('0x23')](handleError(_0x2921d4,null));};exports['update']=function(_0x16726a,_0xc2ef){if(_0x16726a['body']['id']){delete _0x16726a[_0x6f33('0x57')]['id'];}return db[_0x6f33('0x4d')]['find']({'where':{'id':_0x16726a['params']['id']}})[_0x6f33('0x1b')](handleEntityNotFound(_0xc2ef,null))[_0x6f33('0x1b')](saveUpdates(_0x16726a['body'],null))[_0x6f33('0x1b')](respondWithResult(_0xc2ef,null))['catch'](handleError(_0xc2ef,null));};exports[_0x6f33('0x30')]=function(_0x254069,_0x254c7b){return db['VtigerAccount'][_0x6f33('0x55')]({'where':{'id':_0x254069['params']['id']}})[_0x6f33('0x1b')](handleEntityNotFound(_0x254c7b,null))['then'](removeEntity(_0x254c7b,null))['catch'](handleError(_0x254c7b,null));};exports['getConfigurations']=function(_0x20f8a9,_0x3d8d45,_0x5919f2){var _0x5c43fb={};var _0x3e6c78={};var _0x1b2328;var _0xbfd978;return db[_0x6f33('0x4d')][_0x6f33('0x58')]({'where':{'id':_0x20f8a9[_0x6f33('0x52')]['id']}})[_0x6f33('0x1b')](handleEntityNotFound(_0x3d8d45,null))['then'](function(_0x4dbb15){if(_0x4dbb15){_0x1b2328=_0x4dbb15;_0x3e6c78[_0x6f33('0x39')]=_[_0x6f33('0x34')](db[_0x6f33('0x59')][_0x6f33('0x53')]);_0x3e6c78['query']=_[_0x6f33('0x34')](_0x20f8a9[_0x6f33('0x35')]);_0x3e6c78[_0x6f33('0x38')]=_[_0x6f33('0x3b')](_0x3e6c78[_0x6f33('0x39')],_0x3e6c78[_0x6f33('0x35')]);_0x5c43fb[_0x6f33('0x3a')]=_[_0x6f33('0x3b')](_0x3e6c78[_0x6f33('0x39')],qs['fields'](_0x20f8a9['query'][_0x6f33('0x3c')]));_0x5c43fb[_0x6f33('0x3a')]=_0x5c43fb[_0x6f33('0x3a')][_0x6f33('0x3d')]?_0x5c43fb[_0x6f33('0x3a')]:_0x3e6c78['model'];_0x5c43fb[_0x6f33('0x40')]=qs[_0x6f33('0x41')](_0x20f8a9[_0x6f33('0x35')][_0x6f33('0x41')]);_0x5c43fb[_0x6f33('0x42')]=qs[_0x6f33('0x38')](_[_0x6f33('0x43')](_0x20f8a9['query'],_0x3e6c78[_0x6f33('0x38')]));if(_0x20f8a9[_0x6f33('0x35')]['filter']){_0x5c43fb[_0x6f33('0x42')]=_[_0x6f33('0x46')](_0x5c43fb[_0x6f33('0x42')],{'$or':_[_0x6f33('0x48')](_0x5c43fb[_0x6f33('0x3a')],function(_0x5365df){var _0x5cc801={};_0x5cc801[_0x5365df]={'$like':'%'+_0x20f8a9['query'][_0x6f33('0x47')]+'%'};return _0x5cc801;})});}_0x5c43fb=_[_0x6f33('0x46')]({},_0x5c43fb,_0x20f8a9[_0x6f33('0x4c')]);return _0x1b2328[_0x6f33('0x5a')](_0x5c43fb);}})['then'](function(_0x3a8044){if(_0x3a8044){_0xbfd978=_0x3a8044[_0x6f33('0x3d')];if(!_0x20f8a9[_0x6f33('0x35')][_0x6f33('0x3e')](_0x6f33('0x3f'))){_0x5c43fb['limit']=qs[_0x6f33('0x2a')](_0x20f8a9[_0x6f33('0x35')][_0x6f33('0x2a')]);_0x5c43fb[_0x6f33('0x29')]=qs['offset'](_0x20f8a9['query']['offset']);}return _0x1b2328[_0x6f33('0x5a')](_0x5c43fb);}})[_0x6f33('0x1b')](function(_0x28bb74){if(_0x28bb74){return _0x28bb74?{'count':_0xbfd978,'rows':_0x28bb74}:null;}})[_0x6f33('0x1b')](respondWithResult(_0x3d8d45,null))[_0x6f33('0x23')](handleError(_0x3d8d45,null));};exports[_0x6f33('0x5b')]=function(_0x294141,_0x29f57b,_0x3f5dd4){if(_0x294141[_0x6f33('0x57')]['id']){delete _0x294141[_0x6f33('0x57')]['id'];}return db[_0x6f33('0x4d')]['findOne']({'where':{'id':_0x294141[_0x6f33('0x52')]['id']}})[_0x6f33('0x1b')](handleEntityNotFound(_0x29f57b,null))['then'](function(_0x1cffe6){if(_0x1cffe6){_0x294141[_0x6f33('0x57')][_0x6f33('0x5c')]=_0x1cffe6['id'];_0x294141[_0x6f33('0x57')][_0x6f33('0x5d')]=integrations[_0x6f33('0x5e')](_0x294141[_0x6f33('0x57')][_0x6f33('0x5f')],_0x294141['body'][_0x6f33('0x49')]);_0x294141[_0x6f33('0x57')][_0x6f33('0x60')]=integrations[_0x6f33('0x61')](_0x294141[_0x6f33('0x57')]['channel'],_0x294141[_0x6f33('0x57')][_0x6f33('0x49')]);return db[_0x6f33('0x59')][_0x6f33('0x56')](_0x294141[_0x6f33('0x57')],{'include':[{'model':db[_0x6f33('0x62')],'as':'Subjects'},{'model':db[_0x6f33('0x62')],'as':_0x6f33('0x60')}]});}return null;})[_0x6f33('0x1b')](respondWithResult(_0x29f57b,null))[_0x6f33('0x23')](handleError(_0x29f57b,null));};var md5=require(_0x6f33('0x63'));exports['getFields']=function(_0x9cc17c,_0x44256b,_0x221251){var _0x11164b=null;var _0x46d088=null;var _0x42659e=null;var _0x1b2f61=null;return db[_0x6f33('0x4d')][_0x6f33('0x58')]({'where':{'id':_0x9cc17c['params']['id']},'attributes':['id','name',_0x6f33('0x64'),_0x6f33('0x65'),'moduleName',_0x6f33('0x66'),_0x6f33('0x67'),_0x6f33('0x68')]})[_0x6f33('0x1b')](handleEntityNotFound(_0x44256b,null))[_0x6f33('0x1b')](function(_0xe810aa){if(_0xe810aa){_0x11164b=_0xe810aa[_0x6f33('0x64')];_0x46d088=_0xe810aa[_0x6f33('0x68')];_0x42659e=_0xe810aa[_0x6f33('0x69')];_0x1b2f61=util[_0x6f33('0x6a')](_0x6f33('0x6b'),_0xe810aa[_0x6f33('0x66')]);var _0x362008={'method':_0x6f33('0x6c'),'uri':_0x1b2f61,'qs':{'operation':_0x6f33('0x6d'),'username':_0xe810aa[_0x6f33('0x64')]},'json':!![]};return rp(_0x362008);}})[_0x6f33('0x1b')](function(_0x2b3c81){if(_0x2b3c81[_0x6f33('0x6e')]){var _0x1673ff={'method':_0x6f33('0x6f'),'uri':_0x1b2f61,'form':{'operation':'login','username':_0x11164b,'accessKey':md5(_0x2b3c81[_0x6f33('0x70')][_0x6f33('0x71')]+_0x46d088)},'json':!![]};return rp(_0x1673ff);}})['then'](function(_0xa30ae5){if(_0xa30ae5['success']){var _0x8473d1={'method':_0x6f33('0x6c'),'uri':_0x1b2f61,'qs':{'operation':'describe','username':_0x11164b,'sessionName':_0xa30ae5[_0x6f33('0x70')][_0x6f33('0x72')],'elementType':_0x42659e},'json':!![]};return rp(_0x8473d1);}})[_0x6f33('0x1b')](function(_0x31a8d0){if(_0x31a8d0[_0x6f33('0x6e')]){var _0x20583a=[_0x6f33('0x73'),'reference',_0x6f33('0x74')];_[_0x6f33('0x75')](_0x31a8d0[_0x6f33('0x70')][_0x6f33('0x3c')],function(_0x4f5471){return _0x20583a['includes'](_0x4f5471[_0x6f33('0x49')][_0x6f33('0x31')]);});_['remove'](_0x31a8d0[_0x6f33('0x70')][_0x6f33('0x3c')],function(_0x2aa1f2){return _0x2aa1f2['editable']===_0x6f33('0x76');});return{'count':_0x31a8d0[_0x6f33('0x70')]['fields'][_0x6f33('0x3d')],'rows':_[_0x6f33('0x48')](_0x31a8d0[_0x6f33('0x70')][_0x6f33('0x3c')],function(_0xb51902){return{'id':_0xb51902[_0x6f33('0x31')],'name':_0xb51902[_0x6f33('0x77')],'custom':_[_0x6f33('0x78')](_0xb51902[_0x6f33('0x31')],_0x6f33('0x79'))?!![]:![],'options':_0xb51902[_0x6f33('0x49')][_0x6f33('0x31')]===_0x6f33('0x7a')&&_0xb51902[_0x6f33('0x49')]['picklistValues'][_0x6f33('0x3d')]>0x0?_[_0x6f33('0x48')](_0xb51902[_0x6f33('0x49')]['picklistValues'],function(_0x5d2e2e){return{'name':_0x5d2e2e[_0x6f33('0x77')],'value':_0x5d2e2e[_0x6f33('0x7b')]};}):[]};})};}})[_0x6f33('0x1b')](respondWithResult(_0x44256b,null))[_0x6f33('0x23')](function(_0xb34515){console['log'](_0x6f33('0x7c')+_0xb34515);var _0x1e5f63=_0x9cc17c[_0x6f33('0x35')][_0x6f33('0x7d')]?0x1f4:_0xb34515[_0x6f33('0x7e')]||0x1f4;logger[_0x6f33('0x21')](_0x6f33('0x7f'),_0x6f33('0x80'),_0x1e5f63,JSON[_0x6f33('0x20')](_0xb34515));delete _0xb34515['name'];if(_0x1e5f63===0x191){_0x1e5f63=0x190;}_0x44256b[_0x6f33('0x25')](_0x1e5f63)[_0x6f33('0x32')](_0x9cc17c[_0x6f33('0x35')][_0x6f33('0x7d')]?{'message':_0x6f33('0x81'),'statusCode':_0xb34515[_0x6f33('0x7e')]}:_0xb34515);});};
\ No newline at end of file
+var _0x7ddf=['includes','remove','editable','false','map','label','startsWith','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','statusCode','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','request','then','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','save','update','destroy','stack','name','send','index','VtigerAccount','rawAttributes','keys','query','dateStart','dateEnd','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','day','merge','where','type','key','VIRTUAL','filter','options','includeAll','include','rows','show','find','create','body','params','getConfigurations','findOne','VtigerConfiguration','pick','AccountId','Subjects','channel','Descriptions','getDescriptions','VtigerField','md5','description','moduleName','remoteUri','serverUrl','accessKey','username','format','%s/webservice.php','GET','getchallenge','success','POST','login','token','describe','sessionName','autogenerated','reference'];(function(_0x1843b3,_0x10995a){var _0x3c7de0=function(_0xe28643){while(--_0xe28643){_0x1843b3['push'](_0x1843b3['shift']());}};_0x3c7de0(++_0x10995a);}(_0x7ddf,0x94));var _0xf7dd=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0x7ddf[_0x1eda20];return _0x31b953;};'use strict';var pdf=require(_0xf7dd('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xf7dd('0x1'));var zipdir=require(_0xf7dd('0x2'));var jsonpatch=require(_0xf7dd('0x3'));var rp=require(_0xf7dd('0x4'));var moment=require(_0xf7dd('0x5'));var BPromise=require(_0xf7dd('0x6'));var Mustache=require('mustache');var util=require(_0xf7dd('0x7'));var path=require(_0xf7dd('0x8'));var sox=require(_0xf7dd('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0xf7dd('0xa'));var crypto=require('crypto');var jsforce=require(_0xf7dd('0xb'));var deskjs=require(_0xf7dd('0xc'));var toCsv=require('to-csv');var querystring=require(_0xf7dd('0xd'));var Papa=require(_0xf7dd('0xe'));var Redis=require(_0xf7dd('0xf'));var qs=require(_0xf7dd('0x10'));var logger=require('../../config/logger')(_0xf7dd('0x11'));var utils=require(_0xf7dd('0x12'));var config=require(_0xf7dd('0x13'));var db=require(_0xf7dd('0x14'))['db'];var integrations=require(_0xf7dd('0x15'));var jayson=require(_0xf7dd('0x16'));var client=jayson[_0xf7dd('0x17')][_0xf7dd('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x234d95,_0x1a12d1,_0x35e2f9,_0x54aa79){return new BPromise(function(_0x25bbc3,_0x283cb2){var _0x32e204=_0x54aa79||client;return _0x32e204[_0xf7dd('0x19')](_0x234d95,_0x35e2f9)[_0xf7dd('0x1a')](function(_0x1c6df2){logger['info'](_0xf7dd('0x1b'),_0x1a12d1,'request\x20sent');logger[_0xf7dd('0x1c')](_0xf7dd('0x1d'),_0x1a12d1,'request\x20sent',JSON[_0xf7dd('0x1e')](_0x1c6df2));if(_0x1c6df2[_0xf7dd('0x1f')]){if(_0x1c6df2[_0xf7dd('0x1f')]['code']===0x1f4){logger[_0xf7dd('0x1f')](_0xf7dd('0x1b'),_0x1a12d1,_0x1c6df2[_0xf7dd('0x1f')][_0xf7dd('0x20')]);return _0x283cb2(_0x1c6df2[_0xf7dd('0x1f')][_0xf7dd('0x20')]);}logger[_0xf7dd('0x1f')](_0xf7dd('0x1b'),_0x1a12d1,_0x1c6df2[_0xf7dd('0x1f')][_0xf7dd('0x20')]);return _0x25bbc3(_0x1c6df2[_0xf7dd('0x1f')][_0xf7dd('0x20')]);}else{logger['info']('VtigerAccount,\x20%s,\x20%s',_0x1a12d1,_0xf7dd('0x21'));_0x25bbc3(_0x1c6df2[_0xf7dd('0x22')][_0xf7dd('0x20')]);}})[_0xf7dd('0x23')](function(_0x1ff999){logger[_0xf7dd('0x1f')]('VtigerAccount,\x20%s,\x20%s',_0x1a12d1,_0x1ff999);_0x283cb2(_0x1ff999);});});}function respondWithStatusCode(_0x156d38,_0x43d4fd){_0x43d4fd=_0x43d4fd||0xcc;return function(_0x3fe822){if(_0x3fe822){return _0x156d38[_0xf7dd('0x24')](_0x43d4fd);}return _0x156d38[_0xf7dd('0x25')](_0x43d4fd)[_0xf7dd('0x26')]();};}function respondWithResult(_0xa4ea5,_0x5999de){_0x5999de=_0x5999de||0xc8;return function(_0x22f8f6){if(_0x22f8f6){return _0xa4ea5[_0xf7dd('0x25')](_0x5999de)[_0xf7dd('0x27')](_0x22f8f6);}};}function respondWithFilteredResult(_0x1da5fd,_0x36b6c2){return function(_0x5284ff){if(_0x5284ff){var _0x5c00aa=_0x5284ff[_0xf7dd('0x28')],_0x23f9f3=_0x36b6c2[_0xf7dd('0x29')],_0x187925=_0x36b6c2[_0xf7dd('0x29')]+_0x36b6c2[_0xf7dd('0x2a')],_0x40f346;if(_0x187925>=_0x5c00aa){_0x187925=_0x5c00aa;_0x40f346=0xc8;}else{_0x40f346=0xce;}_0x1da5fd[_0xf7dd('0x25')](_0x40f346);return _0x1da5fd[_0xf7dd('0x2b')](_0xf7dd('0x2c'),_0x23f9f3+'-'+_0x187925+'/'+_0x5c00aa)[_0xf7dd('0x27')](_0x5284ff);}return null;};}function patchUpdates(_0x16d822){return function(_0x162168){try{jsonpatch[_0xf7dd('0x2d')](_0x162168,_0x16d822,!![]);}catch(_0x2bcb43){return BPromise['reject'](_0x2bcb43);}return _0x162168[_0xf7dd('0x2e')]();};}function saveUpdates(_0xd4c9cd,_0xf05634){return function(_0x15bd8b){if(_0x15bd8b){return _0x15bd8b[_0xf7dd('0x2f')](_0xd4c9cd)['then'](function(_0x208701){return _0x208701;});}return null;};}function removeEntity(_0x40c914,_0x17d2cd){return function(_0x551e25){if(_0x551e25){return _0x551e25[_0xf7dd('0x30')]()[_0xf7dd('0x1a')](function(){_0x40c914['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c2bc3,_0x112396){return function(_0x2f3f6b){if(!_0x2f3f6b){_0x5c2bc3[_0xf7dd('0x24')](0x194);}return _0x2f3f6b;};}function handleError(_0x55d16e,_0x2ba99f){_0x2ba99f=_0x2ba99f||0x1f4;return function(_0x19b59d){logger[_0xf7dd('0x1f')](_0x19b59d[_0xf7dd('0x31')]);if(_0x19b59d[_0xf7dd('0x32')]){delete _0x19b59d[_0xf7dd('0x32')];}_0x55d16e[_0xf7dd('0x25')](_0x2ba99f)[_0xf7dd('0x33')](_0x19b59d);};}exports[_0xf7dd('0x34')]=function(_0x3e9648,_0x37fc04){var _0x59036a={},_0x3677cc={},_0x3eadc5={'count':0x0,'rows':[]};var _0x379b21=db[_0xf7dd('0x35')][_0xf7dd('0x36')];_0x3677cc['model']=_[_0xf7dd('0x37')](_0x379b21);var _0x1fc782={'dateStart':_0x3e9648[_0xf7dd('0x38')][_0xf7dd('0x39')],'dateEnd':_0x3e9648['query']['dateEnd']};delete _0x3e9648[_0xf7dd('0x38')]['dateStart'];delete _0x3e9648[_0xf7dd('0x38')][_0xf7dd('0x3a')];_0x3677cc['query']=_[_0xf7dd('0x37')](_0x3e9648[_0xf7dd('0x38')]);_0x3677cc['filters']=_[_0xf7dd('0x3b')](_0x3677cc[_0xf7dd('0x3c')],_0x3677cc[_0xf7dd('0x38')]);_0x59036a[_0xf7dd('0x3d')]=_['intersection'](_0x3677cc[_0xf7dd('0x3c')],qs['fields'](_0x3e9648[_0xf7dd('0x38')][_0xf7dd('0x3e')]));_0x59036a['attributes']=_0x59036a[_0xf7dd('0x3d')][_0xf7dd('0x3f')]?_0x59036a[_0xf7dd('0x3d')]:_0x3677cc['model'];if(!_0x3e9648[_0xf7dd('0x38')][_0xf7dd('0x40')](_0xf7dd('0x41'))){_0x59036a[_0xf7dd('0x2a')]=qs[_0xf7dd('0x2a')](_0x3e9648[_0xf7dd('0x38')]['limit']);_0x59036a[_0xf7dd('0x29')]=qs[_0xf7dd('0x29')](_0x3e9648[_0xf7dd('0x38')][_0xf7dd('0x29')]);}_0x59036a[_0xf7dd('0x42')]=qs[_0xf7dd('0x43')](_0x3e9648[_0xf7dd('0x38')]['sort']);_0x59036a['where']=qs[_0xf7dd('0x44')](_['pick'](_0x3e9648[_0xf7dd('0x38')],_0x3677cc[_0xf7dd('0x44')]));if(_0x1fc782[_0xf7dd('0x39')]){if(_0x1fc782['dateEnd']){_0x1fc782[_0xf7dd('0x3a')]=moment(_0x1fc782[_0xf7dd('0x3a')])['add'](0x1,_0xf7dd('0x45'));}else{_0x1fc782['dateEnd']=moment(_0x1fc782[_0xf7dd('0x39')])['add'](0x1,_0xf7dd('0x45'));}_[_0xf7dd('0x46')](_0x59036a[_0xf7dd('0x47')],{'createdAt':{'$gte':_0x1fc782[_0xf7dd('0x39')],'$lte':_0x1fc782[_0xf7dd('0x3a')]}});}if(_0x3e9648['query']['filter']){_0x59036a[_0xf7dd('0x47')]=_[_0xf7dd('0x46')](_0x59036a[_0xf7dd('0x47')],{'$or':_['map'](_0x379b21,function(_0x54fb55){if(_0x54fb55[_0xf7dd('0x48')][_0xf7dd('0x49')]!==_0xf7dd('0x4a')){var _0x33fe3c={};_0x33fe3c[_0x54fb55['field']]={'$like':'%'+_0x3e9648[_0xf7dd('0x38')][_0xf7dd('0x4b')]+'%'};return _0x33fe3c;}})});}_0x59036a=_['merge']({},_0x59036a,_0x3e9648[_0xf7dd('0x4c')]);var _0x1db659={'where':_0x59036a['where']};return db[_0xf7dd('0x35')][_0xf7dd('0x28')](_0x1db659)[_0xf7dd('0x1a')](function(_0x50bc5f){_0x3eadc5[_0xf7dd('0x28')]=_0x50bc5f;if(_0x3e9648['query'][_0xf7dd('0x4d')]){_0x59036a[_0xf7dd('0x4e')]=[{'all':!![]}];}return db[_0xf7dd('0x35')]['findAll'](_0x59036a);})[_0xf7dd('0x1a')](function(_0x36e761){_0x3eadc5[_0xf7dd('0x4f')]=_0x36e761;return _0x3eadc5;})[_0xf7dd('0x1a')](respondWithFilteredResult(_0x37fc04,_0x59036a))[_0xf7dd('0x23')](handleError(_0x37fc04,null));};exports[_0xf7dd('0x50')]=function(_0x452db7,_0x2d89ab){var _0x34204a={'raw':![],'where':{'id':_0x452db7['params']['id']}},_0x256a1a={};_0x256a1a[_0xf7dd('0x3c')]=_[_0xf7dd('0x37')](db[_0xf7dd('0x35')][_0xf7dd('0x36')]);_0x256a1a[_0xf7dd('0x38')]=_[_0xf7dd('0x37')](_0x452db7[_0xf7dd('0x38')]);_0x256a1a['filters']=_[_0xf7dd('0x3b')](_0x256a1a[_0xf7dd('0x3c')],_0x256a1a[_0xf7dd('0x38')]);_0x34204a[_0xf7dd('0x3d')]=_[_0xf7dd('0x3b')](_0x256a1a[_0xf7dd('0x3c')],qs[_0xf7dd('0x3e')](_0x452db7[_0xf7dd('0x38')][_0xf7dd('0x3e')]));_0x34204a[_0xf7dd('0x3d')]=_0x34204a['attributes']['length']?_0x34204a['attributes']:_0x256a1a[_0xf7dd('0x3c')];if(_0x452db7[_0xf7dd('0x38')][_0xf7dd('0x4d')]){_0x34204a[_0xf7dd('0x4e')]=[{'all':!![]}];}_0x34204a=_[_0xf7dd('0x46')]({},_0x34204a,_0x452db7[_0xf7dd('0x4c')]);return db[_0xf7dd('0x35')][_0xf7dd('0x51')](_0x34204a)[_0xf7dd('0x1a')](handleEntityNotFound(_0x2d89ab,null))['then'](respondWithResult(_0x2d89ab,null))[_0xf7dd('0x23')](handleError(_0x2d89ab,null));};exports[_0xf7dd('0x52')]=function(_0x174754,_0x5d41c1){return db[_0xf7dd('0x35')][_0xf7dd('0x52')](_0x174754[_0xf7dd('0x53')],{})[_0xf7dd('0x1a')](respondWithResult(_0x5d41c1,0xc9))[_0xf7dd('0x23')](handleError(_0x5d41c1,null));};exports[_0xf7dd('0x2f')]=function(_0x5de230,_0x5577bb){if(_0x5de230['body']['id']){delete _0x5de230[_0xf7dd('0x53')]['id'];}return db[_0xf7dd('0x35')][_0xf7dd('0x51')]({'where':{'id':_0x5de230[_0xf7dd('0x54')]['id']}})[_0xf7dd('0x1a')](handleEntityNotFound(_0x5577bb,null))[_0xf7dd('0x1a')](saveUpdates(_0x5de230[_0xf7dd('0x53')],null))[_0xf7dd('0x1a')](respondWithResult(_0x5577bb,null))['catch'](handleError(_0x5577bb,null));};exports['destroy']=function(_0x12d40e,_0x535b01){return db['VtigerAccount'][_0xf7dd('0x51')]({'where':{'id':_0x12d40e[_0xf7dd('0x54')]['id']}})[_0xf7dd('0x1a')](handleEntityNotFound(_0x535b01,null))[_0xf7dd('0x1a')](removeEntity(_0x535b01,null))[_0xf7dd('0x23')](handleError(_0x535b01,null));};exports[_0xf7dd('0x55')]=function(_0x390805,_0x28e25e,_0x328ae4){var _0x3490de={};var _0x44374d={};var _0x2c61b4;var _0x53a443;return db[_0xf7dd('0x35')][_0xf7dd('0x56')]({'where':{'id':_0x390805[_0xf7dd('0x54')]['id']}})[_0xf7dd('0x1a')](handleEntityNotFound(_0x28e25e,null))['then'](function(_0x1d6e0a){if(_0x1d6e0a){_0x2c61b4=_0x1d6e0a;_0x44374d[_0xf7dd('0x3c')]=_[_0xf7dd('0x37')](db[_0xf7dd('0x57')]['rawAttributes']);_0x44374d[_0xf7dd('0x38')]=_[_0xf7dd('0x37')](_0x390805['query']);_0x44374d['filters']=_['intersection'](_0x44374d[_0xf7dd('0x3c')],_0x44374d[_0xf7dd('0x38')]);_0x3490de[_0xf7dd('0x3d')]=_['intersection'](_0x44374d[_0xf7dd('0x3c')],qs[_0xf7dd('0x3e')](_0x390805[_0xf7dd('0x38')][_0xf7dd('0x3e')]));_0x3490de[_0xf7dd('0x3d')]=_0x3490de['attributes'][_0xf7dd('0x3f')]?_0x3490de[_0xf7dd('0x3d')]:_0x44374d['model'];_0x3490de[_0xf7dd('0x42')]=qs[_0xf7dd('0x43')](_0x390805[_0xf7dd('0x38')][_0xf7dd('0x43')]);_0x3490de[_0xf7dd('0x47')]=qs[_0xf7dd('0x44')](_[_0xf7dd('0x58')](_0x390805['query'],_0x44374d['filters']));if(_0x390805[_0xf7dd('0x38')][_0xf7dd('0x4b')]){_0x3490de['where']=_['merge'](_0x3490de[_0xf7dd('0x47')],{'$or':_['map'](_0x3490de[_0xf7dd('0x3d')],function(_0x12864d){var _0x199827={};_0x199827[_0x12864d]={'$like':'%'+_0x390805['query'][_0xf7dd('0x4b')]+'%'};return _0x199827;})});}_0x3490de=_[_0xf7dd('0x46')]({},_0x3490de,_0x390805[_0xf7dd('0x4c')]);return _0x2c61b4['getConfigurations'](_0x3490de);}})['then'](function(_0x43e1d7){if(_0x43e1d7){_0x53a443=_0x43e1d7[_0xf7dd('0x3f')];if(!_0x390805[_0xf7dd('0x38')]['hasOwnProperty'](_0xf7dd('0x41'))){_0x3490de[_0xf7dd('0x2a')]=qs[_0xf7dd('0x2a')](_0x390805[_0xf7dd('0x38')]['limit']);_0x3490de[_0xf7dd('0x29')]=qs[_0xf7dd('0x29')](_0x390805[_0xf7dd('0x38')]['offset']);}return _0x2c61b4[_0xf7dd('0x55')](_0x3490de);}})[_0xf7dd('0x1a')](function(_0x421b13){if(_0x421b13){return _0x421b13?{'count':_0x53a443,'rows':_0x421b13}:null;}})['then'](respondWithResult(_0x28e25e,null))[_0xf7dd('0x23')](handleError(_0x28e25e,null));};exports['addConfiguration']=function(_0x2f0b63,_0x39fc2d,_0xfbaed1){if(_0x2f0b63[_0xf7dd('0x53')]['id']){delete _0x2f0b63[_0xf7dd('0x53')]['id'];}return db['VtigerAccount'][_0xf7dd('0x56')]({'where':{'id':_0x2f0b63[_0xf7dd('0x54')]['id']}})[_0xf7dd('0x1a')](handleEntityNotFound(_0x39fc2d,null))[_0xf7dd('0x1a')](function(_0x5d1ded){if(_0x5d1ded){_0x2f0b63[_0xf7dd('0x53')][_0xf7dd('0x59')]=_0x5d1ded['id'];_0x2f0b63[_0xf7dd('0x53')][_0xf7dd('0x5a')]=integrations['getSubjects'](_0x2f0b63[_0xf7dd('0x53')][_0xf7dd('0x5b')],_0x2f0b63['body'][_0xf7dd('0x48')]);_0x2f0b63[_0xf7dd('0x53')][_0xf7dd('0x5c')]=integrations[_0xf7dd('0x5d')](_0x2f0b63['body'][_0xf7dd('0x5b')],_0x2f0b63[_0xf7dd('0x53')][_0xf7dd('0x48')]);return db[_0xf7dd('0x57')][_0xf7dd('0x52')](_0x2f0b63[_0xf7dd('0x53')],{'include':[{'model':db['VtigerField'],'as':_0xf7dd('0x5a')},{'model':db[_0xf7dd('0x5e')],'as':_0xf7dd('0x5c')}]});}return null;})['then'](respondWithResult(_0x39fc2d,null))[_0xf7dd('0x23')](handleError(_0x39fc2d,null));};var md5=require(_0xf7dd('0x5f'));exports['getFields']=function(_0x2dbee4,_0x1d86c6,_0x3abbb0){var _0x153f34=null;var _0x3d9b51=null;var _0x16f64e=null;var _0x1b8a3f=null;return db[_0xf7dd('0x35')][_0xf7dd('0x56')]({'where':{'id':_0x2dbee4[_0xf7dd('0x54')]['id']},'attributes':['id','name','username',_0xf7dd('0x60'),_0xf7dd('0x61'),_0xf7dd('0x62'),_0xf7dd('0x63'),_0xf7dd('0x64')]})['then'](handleEntityNotFound(_0x1d86c6,null))[_0xf7dd('0x1a')](function(_0x1a6a84){if(_0x1a6a84){_0x153f34=_0x1a6a84[_0xf7dd('0x65')];_0x3d9b51=_0x1a6a84[_0xf7dd('0x64')];_0x16f64e=_0x1a6a84[_0xf7dd('0x61')];_0x1b8a3f=util[_0xf7dd('0x66')](_0xf7dd('0x67'),_0x1a6a84['remoteUri']);var _0x371346={'method':_0xf7dd('0x68'),'uri':_0x1b8a3f,'qs':{'operation':_0xf7dd('0x69'),'username':_0x1a6a84['username']},'json':!![]};return rp(_0x371346);}})[_0xf7dd('0x1a')](function(_0x31d44f){if(_0x31d44f[_0xf7dd('0x6a')]){var _0x302c34={'method':_0xf7dd('0x6b'),'uri':_0x1b8a3f,'form':{'operation':_0xf7dd('0x6c'),'username':_0x153f34,'accessKey':md5(_0x31d44f[_0xf7dd('0x22')][_0xf7dd('0x6d')]+_0x3d9b51)},'json':!![]};return rp(_0x302c34);}})[_0xf7dd('0x1a')](function(_0x267fae){if(_0x267fae[_0xf7dd('0x6a')]){var _0x1400cc={'method':_0xf7dd('0x68'),'uri':_0x1b8a3f,'qs':{'operation':_0xf7dd('0x6e'),'username':_0x153f34,'sessionName':_0x267fae[_0xf7dd('0x22')][_0xf7dd('0x6f')],'elementType':_0x16f64e},'json':!![]};return rp(_0x1400cc);}})[_0xf7dd('0x1a')](function(_0x492ec9){if(_0x492ec9[_0xf7dd('0x6a')]){var _0x97a033=[_0xf7dd('0x70'),_0xf7dd('0x71'),'owner'];_['remove'](_0x492ec9[_0xf7dd('0x22')]['fields'],function(_0xe1199c){return _0x97a033[_0xf7dd('0x72')](_0xe1199c[_0xf7dd('0x48')]['name']);});_[_0xf7dd('0x73')](_0x492ec9[_0xf7dd('0x22')][_0xf7dd('0x3e')],function(_0x5b5ff0){return _0x5b5ff0[_0xf7dd('0x74')]===_0xf7dd('0x75');});return{'count':_0x492ec9[_0xf7dd('0x22')][_0xf7dd('0x3e')][_0xf7dd('0x3f')],'rows':_[_0xf7dd('0x76')](_0x492ec9[_0xf7dd('0x22')]['fields'],function(_0x3c79d8){return{'id':_0x3c79d8['name'],'name':_0x3c79d8[_0xf7dd('0x77')],'custom':_[_0xf7dd('0x78')](_0x3c79d8[_0xf7dd('0x32')],'cf_')?!![]:![],'options':_0x3c79d8[_0xf7dd('0x48')][_0xf7dd('0x32')]===_0xf7dd('0x79')&&_0x3c79d8[_0xf7dd('0x48')][_0xf7dd('0x7a')][_0xf7dd('0x3f')]>0x0?_[_0xf7dd('0x76')](_0x3c79d8[_0xf7dd('0x48')]['picklistValues'],function(_0x1fbee3){return{'name':_0x1fbee3[_0xf7dd('0x77')],'value':_0x1fbee3[_0xf7dd('0x7b')]};}):[]};})};}})[_0xf7dd('0x1a')](respondWithResult(_0x1d86c6,null))[_0xf7dd('0x23')](function(_0x43583e){console[_0xf7dd('0x7c')](_0xf7dd('0x7d')+_0x43583e);var _0x41a098=_0x2dbee4[_0xf7dd('0x38')][_0xf7dd('0x7e')]?0x1f4:_0x43583e['statusCode']||0x1f4;logger[_0xf7dd('0x1f')](_0xf7dd('0x7f'),_0xf7dd('0x80'),_0x41a098,JSON[_0xf7dd('0x1e')](_0x43583e));delete _0x43583e[_0xf7dd('0x32')];if(_0x41a098===0x191){_0x41a098=0x190;}_0x1d86c6['status'](_0x41a098)['send'](_0x2dbee4[_0xf7dd('0x38')][_0xf7dd('0x7e')]?{'message':_0xf7dd('0x81'),'statusCode':_0x43583e[_0xf7dd('0x82')]}:_0x43583e);});};
\ No newline at end of file
index c83a408..3827bd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48df=['VtigerAccount','int_vtiger_accounts','lodash','util','api','bluebird','request-promise','./intVtigerAccount.attributes','../../components/integrations/configuration'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x48df,0x16a));var _0xf48d=function(_0x470f63,_0x48d80b){_0x470f63=_0x470f63-0x0;var _0x4f09e2=_0x48df[_0x470f63];return _0x4f09e2;};'use strict';var _=require(_0xf48d('0x0'));var util=require(_0xf48d('0x1'));var logger=require('../../config/logger')(_0xf48d('0x2'));var moment=require('moment');var BPromise=require(_0xf48d('0x3'));var rp=require(_0xf48d('0x4'));var attributes=require(_0xf48d('0x5'));var integrations=require(_0xf48d('0x6'));module['exports']=function(_0x4ca348,_0x25b959){return _0x4ca348['define'](_0xf48d('0x7'),attributes,{'tableName':_0xf48d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3ae9=['../../config/logger','bluebird','request-promise','./intVtigerAccount.attributes','../../components/integrations/configuration','define','VtigerAccount','lodash','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3ae9,0x18a));var _0x93ae=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0x3ae9[_0x2ec461];return _0x28603d;};'use strict';var _=require(_0x93ae('0x0'));var util=require(_0x93ae('0x1'));var logger=require(_0x93ae('0x2'))('api');var moment=require('moment');var BPromise=require(_0x93ae('0x3'));var rp=require(_0x93ae('0x4'));var attributes=require(_0x93ae('0x5'));var integrations=require(_0x93ae('0x6'));module['exports']=function(_0x3164b5,_0x20f11c){return _0x3164b5[_0x93ae('0x7')](_0x93ae('0x8'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a5cf0a..b3d33e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dfd=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','attributes','include','model','map','debug','ShowVtigerAccount','find','where','stringify','lodash','moment'];(function(_0x3c7930,_0x588bb0){var _0x1259e4=function(_0x3143a3){while(--_0x3143a3){_0x3c7930['push'](_0x3c7930['shift']());}};_0x1259e4(++_0x588bb0);}(_0x6dfd,0x142));var _0xd6df=function(_0x262e6f,_0x2b29aa){_0x262e6f=_0x262e6f-0x0;var _0x44b895=_0x6dfd[_0x262e6f];return _0x44b895;};'use strict';var _=require(_0xd6df('0x0'));var util=require('util');var moment=require(_0xd6df('0x1'));var BPromise=require(_0xd6df('0x2'));var rs=require(_0xd6df('0x3'));var fs=require('fs');var Redis=require(_0xd6df('0x4'));var db=require(_0xd6df('0x5'))['db'];var utils=require(_0xd6df('0x6'));var logger=require(_0xd6df('0x7'))(_0xd6df('0x8'));var config=require(_0xd6df('0x9'));var jayson=require(_0xd6df('0xa'));var client=jayson[_0xd6df('0xb')][_0xd6df('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4d7df9,_0x29e11f,_0x587f3a){return new BPromise(function(_0x414ca8,_0x5bc7a9){return client[_0xd6df('0xd')](_0x4d7df9,_0x587f3a)[_0xd6df('0xe')](function(_0x1dea77){logger[_0xd6df('0xf')](_0xd6df('0x10'),_0x29e11f,_0xd6df('0x11'));logger['debug']('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x29e11f,'request\x20sent',JSON['stringify'](_0x1dea77));if(_0x1dea77[_0xd6df('0x12')]){if(_0x1dea77[_0xd6df('0x12')][_0xd6df('0x13')]===0x1f4){logger[_0xd6df('0x12')](_0xd6df('0x10'),_0x29e11f,_0x1dea77[_0xd6df('0x12')]['message']);return _0x5bc7a9(_0x1dea77[_0xd6df('0x12')][_0xd6df('0x14')]);}logger[_0xd6df('0x12')](_0xd6df('0x10'),_0x29e11f,_0x1dea77['error']['message']);return _0x414ca8(_0x1dea77['error']['message']);}else{logger[_0xd6df('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x29e11f,_0xd6df('0x11'));_0x414ca8(_0x1dea77[_0xd6df('0x15')][_0xd6df('0x14')]);}})[_0xd6df('0x16')](function(_0x4ab7f5){logger['error'](_0xd6df('0x10'),_0x29e11f,_0x4ab7f5);_0x5bc7a9(_0x4ab7f5);});});}exports[_0xd6df('0x17')]=function(_0x53b400){var _0x27a927=this;return new Promise(function(_0x2b3ccb,_0x2d0640){return db[_0xd6df('0x18')][_0xd6df('0x19')]({'raw':_0x53b400[_0xd6df('0x1a')]?_0x53b400[_0xd6df('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x53b400[_0xd6df('0x1a')]?_0x53b400['options']['where']||null:null,'attributes':_0x53b400[_0xd6df('0x1a')]?_0x53b400['options'][_0xd6df('0x1b')]||null:null,'limit':_0x53b400[_0xd6df('0x1a')]?_0x53b400['options']['limit']||null:null,'include':_0x53b400[_0xd6df('0x1a')]?_0x53b400[_0xd6df('0x1a')][_0xd6df('0x1c')]?_['map'](_0x53b400[_0xd6df('0x1a')][_0xd6df('0x1c')],function(_0x2c4f65){return{'model':db[_0x2c4f65[_0xd6df('0x1d')]],'as':_0x2c4f65['as'],'attributes':_0x2c4f65[_0xd6df('0x1b')],'include':_0x2c4f65['include']?_['map'](_0x2c4f65['include'],function(_0xfdfcc8){return{'model':db[_0xfdfcc8['model']],'as':_0xfdfcc8['as'],'attributes':_0xfdfcc8[_0xd6df('0x1b')],'include':_0xfdfcc8[_0xd6df('0x1c')]?_[_0xd6df('0x1e')](_0xfdfcc8[_0xd6df('0x1c')],function(_0x202917){return{'model':db[_0x202917['model']],'as':_0x202917['as'],'attributes':_0x202917[_0xd6df('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xb9e6d6){logger[_0xd6df('0xf')](_0xd6df('0x17'),_0x53b400);logger[_0xd6df('0x1f')](_0xd6df('0x17'),_0x53b400,JSON['stringify'](_0xb9e6d6));_0x2b3ccb(_0xb9e6d6);})[_0xd6df('0x16')](function(_0x626778){logger['error'](_0xd6df('0x17'),_0x626778[_0xd6df('0x14')],_0x53b400);_0x2d0640(_0x27a927[_0xd6df('0x12')](0x1f4,_0x626778['message']));});});};exports[_0xd6df('0x20')]=function(_0x411f47){var _0x4d3eeb=this;return new Promise(function(_0x12ca2d,_0x7ca063){return db[_0xd6df('0x18')][_0xd6df('0x21')]({'raw':_0x411f47['options']?_0x411f47[_0xd6df('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x411f47[_0xd6df('0x1a')]?_0x411f47[_0xd6df('0x1a')][_0xd6df('0x22')]||null:null,'attributes':_0x411f47[_0xd6df('0x1a')]?_0x411f47['options'][_0xd6df('0x1b')]||null:null,'include':_0x411f47[_0xd6df('0x1a')]?_0x411f47[_0xd6df('0x1a')][_0xd6df('0x1c')]?_[_0xd6df('0x1e')](_0x411f47[_0xd6df('0x1a')]['include'],function(_0x53a5c4){return{'model':db[_0x53a5c4[_0xd6df('0x1d')]],'as':_0x53a5c4['as'],'attributes':_0x53a5c4[_0xd6df('0x1b')],'include':_0x53a5c4['include']?_['map'](_0x53a5c4[_0xd6df('0x1c')],function(_0x2672b9){return{'model':db[_0x2672b9[_0xd6df('0x1d')]],'as':_0x2672b9['as'],'attributes':_0x2672b9[_0xd6df('0x1b')],'include':_0x2672b9['include']?_[_0xd6df('0x1e')](_0x2672b9[_0xd6df('0x1c')],function(_0x16ec78){return{'model':db[_0x16ec78[_0xd6df('0x1d')]],'as':_0x16ec78['as'],'attributes':_0x16ec78[_0xd6df('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd6df('0xe')](function(_0x1f9ac7){logger['info'](_0xd6df('0x20'),_0x411f47);logger[_0xd6df('0x1f')](_0xd6df('0x20'),_0x411f47,JSON[_0xd6df('0x23')](_0x1f9ac7));_0x12ca2d(_0x1f9ac7);})[_0xd6df('0x16')](function(_0x1345c0){logger[_0xd6df('0x12')]('ShowVtigerAccount',_0x1345c0[_0xd6df('0x14')],_0x411f47);_0x7ca063(_0x4d3eeb['error'](0x1f4,_0x1345c0[_0xd6df('0x14')]));});});};
\ No newline at end of file
+var _0x5a50=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','attributes','limit','include','map','model','find','where','ShowVtigerAccount','moment'];(function(_0x452dc4,_0x2f30d0){var _0x11a908=function(_0x12d509){while(--_0x12d509){_0x452dc4['push'](_0x452dc4['shift']());}};_0x11a908(++_0x2f30d0);}(_0x5a50,0x1cd));var _0x05a5=function(_0x41ea1b,_0x19ebd1){_0x41ea1b=_0x41ea1b-0x0;var _0x178f31=_0x5a50[_0x41ea1b];return _0x178f31;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x05a5('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x05a5('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x05a5('0x2'));var logger=require(_0x05a5('0x3'))(_0x05a5('0x4'));var config=require(_0x05a5('0x5'));var jayson=require(_0x05a5('0x6'));var client=jayson[_0x05a5('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b53c,_0x3fdd68,_0x58c9bc){return new BPromise(function(_0x16fffa,_0x522bd9){return client[_0x05a5('0x8')](_0x2b53c,_0x58c9bc)[_0x05a5('0x9')](function(_0x48af97){logger[_0x05a5('0xa')](_0x05a5('0xb'),_0x3fdd68,_0x05a5('0xc'));logger[_0x05a5('0xd')](_0x05a5('0xe'),_0x3fdd68,_0x05a5('0xc'),JSON[_0x05a5('0xf')](_0x48af97));if(_0x48af97['error']){if(_0x48af97[_0x05a5('0x10')][_0x05a5('0x11')]===0x1f4){logger[_0x05a5('0x10')](_0x05a5('0xb'),_0x3fdd68,_0x48af97[_0x05a5('0x10')][_0x05a5('0x12')]);return _0x522bd9(_0x48af97[_0x05a5('0x10')][_0x05a5('0x12')]);}logger[_0x05a5('0x10')]('VtigerAccount,\x20%s,\x20%s',_0x3fdd68,_0x48af97[_0x05a5('0x10')]['message']);return _0x16fffa(_0x48af97[_0x05a5('0x10')]['message']);}else{logger[_0x05a5('0xa')](_0x05a5('0xb'),_0x3fdd68,_0x05a5('0xc'));_0x16fffa(_0x48af97['result'][_0x05a5('0x12')]);}})[_0x05a5('0x13')](function(_0xaf0adb){logger[_0x05a5('0x10')](_0x05a5('0xb'),_0x3fdd68,_0xaf0adb);_0x522bd9(_0xaf0adb);});});}exports[_0x05a5('0x14')]=function(_0x5c74ef){var _0x3ccefa=this;return new Promise(function(_0x335d04,_0x404082){return db[_0x05a5('0x15')][_0x05a5('0x16')]({'raw':_0x5c74ef[_0x05a5('0x17')]?_0x5c74ef[_0x05a5('0x17')][_0x05a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5c74ef[_0x05a5('0x17')]?_0x5c74ef[_0x05a5('0x17')]['where']||null:null,'attributes':_0x5c74ef[_0x05a5('0x17')]?_0x5c74ef[_0x05a5('0x17')][_0x05a5('0x19')]||null:null,'limit':_0x5c74ef['options']?_0x5c74ef[_0x05a5('0x17')][_0x05a5('0x1a')]||null:null,'include':_0x5c74ef[_0x05a5('0x17')]?_0x5c74ef['options'][_0x05a5('0x1b')]?_[_0x05a5('0x1c')](_0x5c74ef['options']['include'],function(_0x62ac8c){return{'model':db[_0x62ac8c[_0x05a5('0x1d')]],'as':_0x62ac8c['as'],'attributes':_0x62ac8c[_0x05a5('0x19')],'include':_0x62ac8c['include']?_['map'](_0x62ac8c[_0x05a5('0x1b')],function(_0x311660){return{'model':db[_0x311660[_0x05a5('0x1d')]],'as':_0x311660['as'],'attributes':_0x311660['attributes'],'include':_0x311660[_0x05a5('0x1b')]?_[_0x05a5('0x1c')](_0x311660[_0x05a5('0x1b')],function(_0x3df54c){return{'model':db[_0x3df54c[_0x05a5('0x1d')]],'as':_0x3df54c['as'],'attributes':_0x3df54c[_0x05a5('0x19')]};}):[]};}):[]};}):[]:[]})[_0x05a5('0x9')](function(_0x33f15f){logger[_0x05a5('0xa')](_0x05a5('0x14'),_0x5c74ef);logger[_0x05a5('0xd')]('GetVtigerAccount',_0x5c74ef,JSON[_0x05a5('0xf')](_0x33f15f));_0x335d04(_0x33f15f);})[_0x05a5('0x13')](function(_0x42d230){logger[_0x05a5('0x10')](_0x05a5('0x14'),_0x42d230[_0x05a5('0x12')],_0x5c74ef);_0x404082(_0x3ccefa['error'](0x1f4,_0x42d230['message']));});});};exports['ShowVtigerAccount']=function(_0x29d649){var _0x1972b7=this;return new Promise(function(_0x625e89,_0x31a395){return db[_0x05a5('0x15')][_0x05a5('0x1e')]({'raw':_0x29d649[_0x05a5('0x17')]?_0x29d649[_0x05a5('0x17')][_0x05a5('0x18')]===undefined?!![]:![]:!![],'where':_0x29d649['options']?_0x29d649[_0x05a5('0x17')][_0x05a5('0x1f')]||null:null,'attributes':_0x29d649[_0x05a5('0x17')]?_0x29d649['options'][_0x05a5('0x19')]||null:null,'include':_0x29d649['options']?_0x29d649['options'][_0x05a5('0x1b')]?_[_0x05a5('0x1c')](_0x29d649[_0x05a5('0x17')][_0x05a5('0x1b')],function(_0x447ee8){return{'model':db[_0x447ee8[_0x05a5('0x1d')]],'as':_0x447ee8['as'],'attributes':_0x447ee8[_0x05a5('0x19')],'include':_0x447ee8['include']?_[_0x05a5('0x1c')](_0x447ee8[_0x05a5('0x1b')],function(_0x5173ff){return{'model':db[_0x5173ff[_0x05a5('0x1d')]],'as':_0x5173ff['as'],'attributes':_0x5173ff['attributes'],'include':_0x5173ff['include']?_[_0x05a5('0x1c')](_0x5173ff[_0x05a5('0x1b')],function(_0x5452ae){return{'model':db[_0x5452ae['model']],'as':_0x5452ae['as'],'attributes':_0x5452ae[_0x05a5('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b3de5){logger['info']('ShowVtigerAccount',_0x29d649);logger[_0x05a5('0xd')](_0x05a5('0x20'),_0x29d649,JSON[_0x05a5('0xf')](_0x4b3de5));_0x625e89(_0x4b3de5);})['catch'](function(_0xf6badd){logger[_0x05a5('0x10')](_0x05a5('0x20'),_0xf6badd[_0x05a5('0x12')],_0x29d649);_0x31a395(_0x1972b7[_0x05a5('0x10')](0x1f4,_0xf6badd[_0x05a5('0x12')]));});});};
\ No newline at end of file
index a6a418d..1cd5c49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['create','put','update','delete','multer','path','express','../../components/auth/service','../../config/environment','./intVtigerConfiguration.controller','get','/:id','isAuthenticated','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post'];(function(_0x4bfade,_0xb26c0e){var _0x272465=function(_0x3b38cb){while(--_0x3b38cb){_0x4bfade['push'](_0x4bfade['shift']());}};_0x272465(++_0xb26c0e);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xb7e7[_0x3ab9ee];return _0x82ee88;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var auth=require(_0x7b7e('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x7b7e('0x4'));var controller=require(_0x7b7e('0x5'));router[_0x7b7e('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7b7e('0x6')](_0x7b7e('0x7'),auth[_0x7b7e('0x8')](),controller['show']);router[_0x7b7e('0x6')](_0x7b7e('0x9'),auth[_0x7b7e('0x8')](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0x6')](_0x7b7e('0xb'),auth[_0x7b7e('0x8')](),controller['getSubjects']);router[_0x7b7e('0x6')](_0x7b7e('0xc'),auth[_0x7b7e('0x8')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')]('/',auth[_0x7b7e('0x8')](),controller[_0x7b7e('0xf')]);router[_0x7b7e('0x10')](_0x7b7e('0x7'),auth['isAuthenticated'](),controller[_0x7b7e('0x11')]);router[_0x7b7e('0x12')]('/:id',auth[_0x7b7e('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0713=['post','create','put','update','exports','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0xb0f78d,_0x39b0a0){var _0x28c9a0=function(_0x90bee1){while(--_0x90bee1){_0xb0f78d['push'](_0xb0f78d['shift']());}};_0x28c9a0(++_0x39b0a0);}(_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 auth=require(_0x3071('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x3071('0x5'));var controller=require(_0x3071('0x6'));router[_0x3071('0x7')]('/',auth[_0x3071('0x8')](),controller[_0x3071('0x9')]);router[_0x3071('0x7')](_0x3071('0xa'),auth[_0x3071('0x8')](),controller[_0x3071('0xb')]);router[_0x3071('0x7')](_0x3071('0xc'),auth[_0x3071('0x8')](),controller[_0x3071('0xd')]);router['get'](_0x3071('0xe'),auth[_0x3071('0x8')](),controller[_0x3071('0xf')]);router[_0x3071('0x7')](_0x3071('0x10'),auth['isAuthenticated'](),controller[_0x3071('0x11')]);router[_0x3071('0x12')]('/',auth[_0x3071('0x8')](),controller[_0x3071('0x13')]);router[_0x3071('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x3071('0x15')]);router['delete'](_0x3071('0xa'),auth[_0x3071('0x8')](),controller['destroy']);module[_0x3071('0x16')]=router;
\ No newline at end of file
index 652bc9b..31fc15a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd18=['exports','STRING'];(function(_0x3074f3,_0x4f2c03){var _0x53f112=function(_0x4a17af){while(--_0x4a17af){_0x3074f3['push'](_0x3074f3['shift']());}};_0x53f112(++_0x4f2c03);}(_0xdd18,0xf0));var _0x8dd1=function(_0x3de0b3,_0x12fd64){_0x3de0b3=_0x3de0b3-0x0;var _0x4fdb4c=_0xdd18[_0x3de0b3];return _0x4fdb4c;};'use strict';var Sequelize=require('sequelize');module[_0x8dd1('0x0')]={'name':{'type':Sequelize[_0x8dd1('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xdd0b=['STRING','sequelize'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0xdd0b,0x1c3));var _0xbdd0=function(_0x52a33e,_0x35b536){_0x52a33e=_0x52a33e-0x0;var _0x38c24f=_0xdd0b[_0x52a33e];return _0x38c24f;};'use strict';var Sequelize=require(_0xbdd0('0x0'));module['exports']={'name':{'type':Sequelize[_0xbdd0('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c7af857..0233b9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x938f=['stringify','error','code','message','result','sendStatus','status','end','json','offset','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','VtigerConfiguration','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','pick','add','day','merge','filter','where','type','key','field','options','count','includeAll','include','findAll','catch','params','find','create','body','getFields','findOne','VtigerField','order','map','getSubjects','getDescriptions','html-pdf','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x2bb997,_0x27f487){var _0x152f7e=function(_0x22496a){while(--_0x22496a){_0x2bb997['push'](_0x2bb997['shift']());}};_0x152f7e(++_0x27f487);}(_0x938f,0x9e));var _0xf938=function(_0x39cd3c,_0xa21102){_0x39cd3c=_0x39cd3c-0x0;var _0x47a0ae=_0x938f[_0x39cd3c];return _0x47a0ae;};'use strict';var pdf=require(_0xf938('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xf938('0x1'));var zipdir=require(_0xf938('0x2'));var jsonpatch=require(_0xf938('0x3'));var rp=require('request-promise');var moment=require(_0xf938('0x4'));var BPromise=require(_0xf938('0x5'));var Mustache=require(_0xf938('0x6'));var util=require(_0xf938('0x7'));var path=require(_0xf938('0x8'));var sox=require(_0xf938('0x9'));var csv=require(_0xf938('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xf938('0xb'));var squel=require(_0xf938('0xc'));var crypto=require(_0xf938('0xd'));var jsforce=require(_0xf938('0xe'));var deskjs=require(_0xf938('0xf'));var toCsv=require(_0xf938('0xa'));var querystring=require(_0xf938('0x10'));var Papa=require(_0xf938('0x11'));var Redis=require('ioredis');var qs=require(_0xf938('0x12'));var logger=require(_0xf938('0x13'))(_0xf938('0x14'));var utils=require(_0xf938('0x15'));var config=require(_0xf938('0x16'));var db=require('../../mysqldb')['db'];var jayson=require(_0xf938('0x17'));var client=jayson[_0xf938('0x18')][_0xf938('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x4320e0,_0x46923f,_0x1813a1,_0x5bb37e){return new BPromise(function(_0x3d58f8,_0x333d11){var _0x34e038=_0x5bb37e||client;return _0x34e038[_0xf938('0x1a')](_0x4320e0,_0x1813a1)[_0xf938('0x1b')](function(_0x28985e){logger[_0xf938('0x1c')](_0xf938('0x1d'),_0x46923f,_0xf938('0x1e'));logger['debug'](_0xf938('0x1f'),_0x46923f,_0xf938('0x1e'),JSON[_0xf938('0x20')](_0x28985e));if(_0x28985e[_0xf938('0x21')]){if(_0x28985e['error'][_0xf938('0x22')]===0x1f4){logger[_0xf938('0x21')](_0xf938('0x1d'),_0x46923f,_0x28985e[_0xf938('0x21')][_0xf938('0x23')]);return _0x333d11(_0x28985e['error']['message']);}logger[_0xf938('0x21')](_0xf938('0x1d'),_0x46923f,_0x28985e[_0xf938('0x21')][_0xf938('0x23')]);return _0x3d58f8(_0x28985e[_0xf938('0x21')][_0xf938('0x23')]);}else{logger[_0xf938('0x1c')]('VtigerConfiguration,\x20%s,\x20%s',_0x46923f,'request\x20sent');_0x3d58f8(_0x28985e[_0xf938('0x24')][_0xf938('0x23')]);}})['catch'](function(_0x1c0f44){logger[_0xf938('0x21')](_0xf938('0x1d'),_0x46923f,_0x1c0f44);_0x333d11(_0x1c0f44);});});}function respondWithStatusCode(_0x157c37,_0x3f9e72){_0x3f9e72=_0x3f9e72||0xcc;return function(_0x4c1ac4){if(_0x4c1ac4){return _0x157c37[_0xf938('0x25')](_0x3f9e72);}return _0x157c37[_0xf938('0x26')](_0x3f9e72)[_0xf938('0x27')]();};}function respondWithResult(_0x57ad54,_0x1b73f0){_0x1b73f0=_0x1b73f0||0xc8;return function(_0x332019){if(_0x332019){return _0x57ad54[_0xf938('0x26')](_0x1b73f0)[_0xf938('0x28')](_0x332019);}};}function respondWithFilteredResult(_0x533352,_0x51681e){return function(_0x21e730){if(_0x21e730){var _0x38d975=_0x21e730['count'],_0x794c36=_0x51681e[_0xf938('0x29')],_0x5b3882=_0x51681e[_0xf938('0x29')]+_0x51681e['limit'],_0x1a2bb6;if(_0x5b3882>=_0x38d975){_0x5b3882=_0x38d975;_0x1a2bb6=0xc8;}else{_0x1a2bb6=0xce;}_0x533352['status'](_0x1a2bb6);return _0x533352[_0xf938('0x2a')](_0xf938('0x2b'),_0x794c36+'-'+_0x5b3882+'/'+_0x38d975)[_0xf938('0x28')](_0x21e730);}return null;};}function patchUpdates(_0x5cc84e){return function(_0x45e387){try{jsonpatch[_0xf938('0x2c')](_0x45e387,_0x5cc84e,!![]);}catch(_0x3d5c05){return BPromise[_0xf938('0x2d')](_0x3d5c05);}return _0x45e387[_0xf938('0x2e')]();};}function saveUpdates(_0x8b7c39,_0x46dd36){return function(_0x4c27f5){if(_0x4c27f5){return _0x4c27f5[_0xf938('0x2f')](_0x8b7c39)[_0xf938('0x1b')](function(_0x3a90c3){return _0x3a90c3;});}return null;};}function removeEntity(_0x4d6b52,_0x3939c9){return function(_0x20b531){if(_0x20b531){return _0x20b531[_0xf938('0x30')]()[_0xf938('0x1b')](function(){_0x4d6b52[_0xf938('0x26')](0xcc)[_0xf938('0x27')]();});}};}function handleEntityNotFound(_0x42ff76,_0x2cf0b5){return function(_0x45df00){if(!_0x45df00){_0x42ff76[_0xf938('0x25')](0x194);}return _0x45df00;};}function handleError(_0x139ad5,_0x237bfb){_0x237bfb=_0x237bfb||0x1f4;return function(_0x292f2a){logger[_0xf938('0x21')](_0x292f2a[_0xf938('0x31')]);if(_0x292f2a[_0xf938('0x32')]){delete _0x292f2a[_0xf938('0x32')];}_0x139ad5[_0xf938('0x26')](_0x237bfb)[_0xf938('0x33')](_0x292f2a);};}exports[_0xf938('0x34')]=function(_0x50cd7f,_0x529c26){var _0x2b1097={},_0x20fb9c={},_0x1dfd9a={'count':0x0,'rows':[]};var _0x15d8d3=db[_0xf938('0x35')][_0xf938('0x36')];_0x20fb9c[_0xf938('0x37')]=_[_0xf938('0x38')](_0x15d8d3);var _0x3b001c={'dateStart':_0x50cd7f[_0xf938('0x39')][_0xf938('0x3a')],'dateEnd':_0x50cd7f[_0xf938('0x39')][_0xf938('0x3b')]};delete _0x50cd7f[_0xf938('0x39')][_0xf938('0x3a')];delete _0x50cd7f['query'][_0xf938('0x3b')];_0x20fb9c[_0xf938('0x39')]=_[_0xf938('0x38')](_0x50cd7f[_0xf938('0x39')]);_0x20fb9c[_0xf938('0x3c')]=_[_0xf938('0x3d')](_0x20fb9c['model'],_0x20fb9c[_0xf938('0x39')]);_0x2b1097[_0xf938('0x3e')]=_['intersection'](_0x20fb9c[_0xf938('0x37')],qs[_0xf938('0x3f')](_0x50cd7f['query']['fields']));_0x2b1097[_0xf938('0x3e')]=_0x2b1097[_0xf938('0x3e')][_0xf938('0x40')]?_0x2b1097['attributes']:_0x20fb9c[_0xf938('0x37')];if(!_0x50cd7f[_0xf938('0x39')][_0xf938('0x41')](_0xf938('0x42'))){_0x2b1097[_0xf938('0x43')]=qs[_0xf938('0x43')](_0x50cd7f[_0xf938('0x39')]['limit']);_0x2b1097[_0xf938('0x29')]=qs['offset'](_0x50cd7f[_0xf938('0x39')][_0xf938('0x29')]);}_0x2b1097['order']=qs[_0xf938('0x44')](_0x50cd7f[_0xf938('0x39')]['sort']);_0x2b1097['where']=qs['filters'](_[_0xf938('0x45')](_0x50cd7f[_0xf938('0x39')],_0x20fb9c[_0xf938('0x3c')]));if(_0x3b001c[_0xf938('0x3a')]){if(_0x3b001c['dateEnd']){_0x3b001c[_0xf938('0x3b')]=moment(_0x3b001c[_0xf938('0x3b')])[_0xf938('0x46')](0x1,_0xf938('0x47'));}else{_0x3b001c[_0xf938('0x3b')]=moment(_0x3b001c[_0xf938('0x3a')])[_0xf938('0x46')](0x1,_0xf938('0x47'));}_[_0xf938('0x48')](_0x2b1097['where'],{'createdAt':{'$gte':_0x3b001c[_0xf938('0x3a')],'$lte':_0x3b001c[_0xf938('0x3b')]}});}if(_0x50cd7f[_0xf938('0x39')][_0xf938('0x49')]){_0x2b1097[_0xf938('0x4a')]=_[_0xf938('0x48')](_0x2b1097[_0xf938('0x4a')],{'$or':_['map'](_0x15d8d3,function(_0x33c696){if(_0x33c696[_0xf938('0x4b')][_0xf938('0x4c')]!=='VIRTUAL'){var _0x53953d={};_0x53953d[_0x33c696[_0xf938('0x4d')]]={'$like':'%'+_0x50cd7f[_0xf938('0x39')][_0xf938('0x49')]+'%'};return _0x53953d;}})});}_0x2b1097=_[_0xf938('0x48')]({},_0x2b1097,_0x50cd7f[_0xf938('0x4e')]);var _0x303840={'where':_0x2b1097['where']};return db[_0xf938('0x35')][_0xf938('0x4f')](_0x303840)[_0xf938('0x1b')](function(_0x4fe703){_0x1dfd9a[_0xf938('0x4f')]=_0x4fe703;if(_0x50cd7f['query'][_0xf938('0x50')]){_0x2b1097[_0xf938('0x51')]=[{'all':!![]}];}return db[_0xf938('0x35')][_0xf938('0x52')](_0x2b1097);})['then'](function(_0x107470){_0x1dfd9a['rows']=_0x107470;return _0x1dfd9a;})[_0xf938('0x1b')](respondWithFilteredResult(_0x529c26,_0x2b1097))[_0xf938('0x53')](handleError(_0x529c26,null));};exports['show']=function(_0x389436,_0x5cc09a){var _0x44ab02={'raw':![],'where':{'id':_0x389436[_0xf938('0x54')]['id']}},_0x22ff13={};_0x22ff13[_0xf938('0x37')]=_[_0xf938('0x38')](db[_0xf938('0x35')]['rawAttributes']);_0x22ff13[_0xf938('0x39')]=_[_0xf938('0x38')](_0x389436[_0xf938('0x39')]);_0x22ff13[_0xf938('0x3c')]=_[_0xf938('0x3d')](_0x22ff13['model'],_0x22ff13[_0xf938('0x39')]);_0x44ab02[_0xf938('0x3e')]=_[_0xf938('0x3d')](_0x22ff13[_0xf938('0x37')],qs[_0xf938('0x3f')](_0x389436[_0xf938('0x39')][_0xf938('0x3f')]));_0x44ab02['attributes']=_0x44ab02[_0xf938('0x3e')][_0xf938('0x40')]?_0x44ab02['attributes']:_0x22ff13['model'];if(_0x389436[_0xf938('0x39')][_0xf938('0x50')]){_0x44ab02['include']=[{'all':!![]}];}_0x44ab02=_[_0xf938('0x48')]({},_0x44ab02,_0x389436[_0xf938('0x4e')]);return db[_0xf938('0x35')][_0xf938('0x55')](_0x44ab02)[_0xf938('0x1b')](handleEntityNotFound(_0x5cc09a,null))[_0xf938('0x1b')](respondWithResult(_0x5cc09a,null))[_0xf938('0x53')](handleError(_0x5cc09a,null));};exports['create']=function(_0x43444c,_0x102a42){return db[_0xf938('0x35')][_0xf938('0x56')](_0x43444c[_0xf938('0x57')],{})[_0xf938('0x1b')](respondWithResult(_0x102a42,0xc9))['catch'](handleError(_0x102a42,null));};exports['update']=function(_0x5a34cf,_0x144c8b){if(_0x5a34cf[_0xf938('0x57')]['id']){delete _0x5a34cf[_0xf938('0x57')]['id'];}return db[_0xf938('0x35')][_0xf938('0x55')]({'where':{'id':_0x5a34cf[_0xf938('0x54')]['id']}})['then'](handleEntityNotFound(_0x144c8b,null))[_0xf938('0x1b')](saveUpdates(_0x5a34cf['body'],null))[_0xf938('0x1b')](respondWithResult(_0x144c8b,null))[_0xf938('0x53')](handleError(_0x144c8b,null));};exports[_0xf938('0x30')]=function(_0x45e51c,_0x39c153){return db[_0xf938('0x35')][_0xf938('0x55')]({'where':{'id':_0x45e51c[_0xf938('0x54')]['id']}})['then'](handleEntityNotFound(_0x39c153,null))[_0xf938('0x1b')](removeEntity(_0x39c153,null))[_0xf938('0x53')](handleError(_0x39c153,null));};exports[_0xf938('0x58')]=function(_0x427eb6,_0x3a0b1f,_0x4f8108){var _0x390bb1={};var _0xb0bd01={};var _0x5dcb7a;var _0x27cdd5;return db['VtigerConfiguration'][_0xf938('0x59')]({'where':{'id':_0x427eb6[_0xf938('0x54')]['id']}})['then'](handleEntityNotFound(_0x3a0b1f,null))[_0xf938('0x1b')](function(_0x5eb115){if(_0x5eb115){_0x5dcb7a=_0x5eb115;_0xb0bd01[_0xf938('0x37')]=_[_0xf938('0x38')](db[_0xf938('0x5a')][_0xf938('0x36')]);_0xb0bd01[_0xf938('0x39')]=_['keys'](_0x427eb6['query']);_0xb0bd01[_0xf938('0x3c')]=_[_0xf938('0x3d')](_0xb0bd01[_0xf938('0x37')],_0xb0bd01[_0xf938('0x39')]);_0x390bb1[_0xf938('0x3e')]=_['intersection'](_0xb0bd01[_0xf938('0x37')],qs[_0xf938('0x3f')](_0x427eb6['query']['fields']));_0x390bb1[_0xf938('0x3e')]=_0x390bb1['attributes'][_0xf938('0x40')]?_0x390bb1['attributes']:_0xb0bd01['model'];_0x390bb1[_0xf938('0x5b')]=qs[_0xf938('0x44')](_0x427eb6[_0xf938('0x39')]['sort']);_0x390bb1[_0xf938('0x4a')]=qs[_0xf938('0x3c')](_[_0xf938('0x45')](_0x427eb6[_0xf938('0x39')],_0xb0bd01[_0xf938('0x3c')]));if(_0x427eb6[_0xf938('0x39')]['filter']){_0x390bb1['where']=_[_0xf938('0x48')](_0x390bb1[_0xf938('0x4a')],{'$or':_[_0xf938('0x5c')](_0x390bb1['attributes'],function(_0x481899){var _0x3f64ba={};_0x3f64ba[_0x481899]={'$like':'%'+_0x427eb6['query'][_0xf938('0x49')]+'%'};return _0x3f64ba;})});}_0x390bb1=_[_0xf938('0x48')]({},_0x390bb1,_0x427eb6[_0xf938('0x4e')]);return _0x5dcb7a[_0xf938('0x58')](_0x390bb1);}})['then'](function(_0x17deb3){if(_0x17deb3){_0x27cdd5=_0x17deb3['length'];if(!_0x427eb6['query']['hasOwnProperty']('nolimit')){_0x390bb1['limit']=qs[_0xf938('0x43')](_0x427eb6['query']['limit']);_0x390bb1[_0xf938('0x29')]=qs[_0xf938('0x29')](_0x427eb6[_0xf938('0x39')][_0xf938('0x29')]);}return _0x5dcb7a[_0xf938('0x58')](_0x390bb1);}})[_0xf938('0x1b')](function(_0x1b6edf){if(_0x1b6edf){return _0x1b6edf?{'count':_0x27cdd5,'rows':_0x1b6edf}:null;}})[_0xf938('0x1b')](respondWithResult(_0x3a0b1f,null))[_0xf938('0x53')](handleError(_0x3a0b1f,null));};exports['getSubjects']=function(_0x5f46b5,_0x4c50c4,_0xcb1bae){var _0x496cb7={};var _0x41c753={};var _0x33020a;var _0x49133c;return db[_0xf938('0x35')][_0xf938('0x59')]({'where':{'id':_0x5f46b5[_0xf938('0x54')]['id']}})[_0xf938('0x1b')](handleEntityNotFound(_0x4c50c4,null))['then'](function(_0x396912){if(_0x396912){_0x33020a=_0x396912;_0x41c753[_0xf938('0x37')]=_['keys'](db['VtigerField'][_0xf938('0x36')]);_0x41c753[_0xf938('0x39')]=_[_0xf938('0x38')](_0x5f46b5[_0xf938('0x39')]);_0x41c753['filters']=_[_0xf938('0x3d')](_0x41c753[_0xf938('0x37')],_0x41c753[_0xf938('0x39')]);_0x496cb7[_0xf938('0x3e')]=_[_0xf938('0x3d')](_0x41c753[_0xf938('0x37')],qs[_0xf938('0x3f')](_0x5f46b5[_0xf938('0x39')][_0xf938('0x3f')]));_0x496cb7['attributes']=_0x496cb7[_0xf938('0x3e')][_0xf938('0x40')]?_0x496cb7[_0xf938('0x3e')]:_0x41c753[_0xf938('0x37')];_0x496cb7[_0xf938('0x5b')]=qs[_0xf938('0x44')](_0x5f46b5[_0xf938('0x39')][_0xf938('0x44')]);_0x496cb7[_0xf938('0x4a')]=qs[_0xf938('0x3c')](_['pick'](_0x5f46b5[_0xf938('0x39')],_0x41c753[_0xf938('0x3c')]));if(_0x5f46b5['query'][_0xf938('0x49')]){_0x496cb7['where']=_['merge'](_0x496cb7[_0xf938('0x4a')],{'$or':_['map'](_0x496cb7[_0xf938('0x3e')],function(_0xf4957c){var _0x42e0b3={};_0x42e0b3[_0xf4957c]={'$like':'%'+_0x5f46b5[_0xf938('0x39')]['filter']+'%'};return _0x42e0b3;})});}_0x496cb7=_['merge']({},_0x496cb7,_0x5f46b5[_0xf938('0x4e')]);return _0x33020a[_0xf938('0x5d')](_0x496cb7);}})[_0xf938('0x1b')](function(_0x3ee832){if(_0x3ee832){_0x49133c=_0x3ee832[_0xf938('0x40')];if(!_0x5f46b5[_0xf938('0x39')][_0xf938('0x41')](_0xf938('0x42'))){_0x496cb7[_0xf938('0x43')]=qs[_0xf938('0x43')](_0x5f46b5['query'][_0xf938('0x43')]);_0x496cb7[_0xf938('0x29')]=qs[_0xf938('0x29')](_0x5f46b5[_0xf938('0x39')]['offset']);}return _0x33020a[_0xf938('0x5d')](_0x496cb7);}})[_0xf938('0x1b')](function(_0x582c21){if(_0x582c21){return _0x582c21?{'count':_0x49133c,'rows':_0x582c21}:null;}})['then'](respondWithResult(_0x4c50c4,null))[_0xf938('0x53')](handleError(_0x4c50c4,null));};exports[_0xf938('0x5e')]=function(_0x2957cb,_0x172342,_0x27f2e5){var _0x426a46={};var _0x2f5e84={};var _0x281319;var _0x5315c0;return db[_0xf938('0x35')][_0xf938('0x59')]({'where':{'id':_0x2957cb[_0xf938('0x54')]['id']}})['then'](handleEntityNotFound(_0x172342,null))[_0xf938('0x1b')](function(_0x283b98){if(_0x283b98){_0x281319=_0x283b98;_0x2f5e84['model']=_['keys'](db['VtigerField'][_0xf938('0x36')]);_0x2f5e84[_0xf938('0x39')]=_['keys'](_0x2957cb[_0xf938('0x39')]);_0x2f5e84[_0xf938('0x3c')]=_[_0xf938('0x3d')](_0x2f5e84[_0xf938('0x37')],_0x2f5e84[_0xf938('0x39')]);_0x426a46[_0xf938('0x3e')]=_[_0xf938('0x3d')](_0x2f5e84[_0xf938('0x37')],qs['fields'](_0x2957cb[_0xf938('0x39')]['fields']));_0x426a46[_0xf938('0x3e')]=_0x426a46[_0xf938('0x3e')][_0xf938('0x40')]?_0x426a46[_0xf938('0x3e')]:_0x2f5e84['model'];_0x426a46[_0xf938('0x5b')]=qs[_0xf938('0x44')](_0x2957cb[_0xf938('0x39')][_0xf938('0x44')]);_0x426a46[_0xf938('0x4a')]=qs[_0xf938('0x3c')](_[_0xf938('0x45')](_0x2957cb[_0xf938('0x39')],_0x2f5e84[_0xf938('0x3c')]));if(_0x2957cb[_0xf938('0x39')][_0xf938('0x49')]){_0x426a46[_0xf938('0x4a')]=_['merge'](_0x426a46['where'],{'$or':_[_0xf938('0x5c')](_0x426a46[_0xf938('0x3e')],function(_0x3113ba){var _0x1d3d73={};_0x1d3d73[_0x3113ba]={'$like':'%'+_0x2957cb[_0xf938('0x39')]['filter']+'%'};return _0x1d3d73;})});}_0x426a46=_[_0xf938('0x48')]({},_0x426a46,_0x2957cb[_0xf938('0x4e')]);return _0x281319[_0xf938('0x5e')](_0x426a46);}})[_0xf938('0x1b')](function(_0x23569d){if(_0x23569d){_0x5315c0=_0x23569d['length'];if(!_0x2957cb[_0xf938('0x39')]['hasOwnProperty'](_0xf938('0x42'))){_0x426a46[_0xf938('0x43')]=qs[_0xf938('0x43')](_0x2957cb['query'][_0xf938('0x43')]);_0x426a46[_0xf938('0x29')]=qs['offset'](_0x2957cb[_0xf938('0x39')][_0xf938('0x29')]);}return _0x281319[_0xf938('0x5e')](_0x426a46);}})['then'](function(_0x235739){if(_0x235739){return _0x235739?{'count':_0x5315c0,'rows':_0x235739}:null;}})[_0xf938('0x1b')](respondWithResult(_0x172342,null))[_0xf938('0x53')](handleError(_0x172342,null));};
\ No newline at end of file
+var _0xcbb6=['then','info','VtigerConfiguration,\x20%s,\x20%s','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','json','offset','limit','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','add','day','filter','map','type','key','field','VtigerConfiguration','count','includeAll','findAll','rows','catch','params','rawAttributes','length','include','merge','create','body','find','findOne','VtigerField','order','options','getFields','getSubjects','getDescriptions','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../mysqldb','jayson/promise','client','request'];(function(_0x390808,_0x4a820a){var _0x527273=function(_0x390860){while(--_0x390860){_0x390808['push'](_0x390808['shift']());}};_0x527273(++_0x4a820a);}(_0xcbb6,0x15d));var _0x6cbb=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xcbb6[_0x502c7d];return _0x30b7ed;};'use strict';var pdf=require(_0x6cbb('0x0'));var emlformat=require(_0x6cbb('0x1'));var rimraf=require(_0x6cbb('0x2'));var zipdir=require(_0x6cbb('0x3'));var jsonpatch=require(_0x6cbb('0x4'));var rp=require(_0x6cbb('0x5'));var moment=require(_0x6cbb('0x6'));var BPromise=require('bluebird');var Mustache=require(_0x6cbb('0x7'));var util=require(_0x6cbb('0x8'));var path=require(_0x6cbb('0x9'));var sox=require(_0x6cbb('0xa'));var csv=require(_0x6cbb('0xb'));var ejs=require(_0x6cbb('0xc'));var fs=require('fs');var _=require(_0x6cbb('0xd'));var squel=require(_0x6cbb('0xe'));var crypto=require(_0x6cbb('0xf'));var jsforce=require(_0x6cbb('0x10'));var deskjs=require(_0x6cbb('0x11'));var toCsv=require(_0x6cbb('0xb'));var querystring=require(_0x6cbb('0x12'));var Papa=require(_0x6cbb('0x13'));var Redis=require(_0x6cbb('0x14'));var qs=require(_0x6cbb('0x15'));var logger=require(_0x6cbb('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x6cbb('0x17'))['db'];var jayson=require(_0x6cbb('0x18'));var client=jayson[_0x6cbb('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x19c6ca,_0x55cbc7,_0x3dba6a,_0x3eedf5){return new BPromise(function(_0x160a2e,_0x1b6e9c){var _0x315c22=_0x3eedf5||client;return _0x315c22[_0x6cbb('0x1a')](_0x19c6ca,_0x3dba6a)[_0x6cbb('0x1b')](function(_0x18c4c4){logger[_0x6cbb('0x1c')](_0x6cbb('0x1d'),_0x55cbc7,'request\x20sent');logger[_0x6cbb('0x1e')](_0x6cbb('0x1f'),_0x55cbc7,'request\x20sent',JSON[_0x6cbb('0x20')](_0x18c4c4));if(_0x18c4c4['error']){if(_0x18c4c4[_0x6cbb('0x21')][_0x6cbb('0x22')]===0x1f4){logger[_0x6cbb('0x21')](_0x6cbb('0x1d'),_0x55cbc7,_0x18c4c4[_0x6cbb('0x21')][_0x6cbb('0x23')]);return _0x1b6e9c(_0x18c4c4[_0x6cbb('0x21')][_0x6cbb('0x23')]);}logger[_0x6cbb('0x21')](_0x6cbb('0x1d'),_0x55cbc7,_0x18c4c4[_0x6cbb('0x21')][_0x6cbb('0x23')]);return _0x160a2e(_0x18c4c4['error'][_0x6cbb('0x23')]);}else{logger['info'](_0x6cbb('0x1d'),_0x55cbc7,'request\x20sent');_0x160a2e(_0x18c4c4['result'][_0x6cbb('0x23')]);}})['catch'](function(_0x467465){logger[_0x6cbb('0x21')](_0x6cbb('0x1d'),_0x55cbc7,_0x467465);_0x1b6e9c(_0x467465);});});}function respondWithStatusCode(_0x106fa7,_0x430fbf){_0x430fbf=_0x430fbf||0xcc;return function(_0xea1e58){if(_0xea1e58){return _0x106fa7[_0x6cbb('0x24')](_0x430fbf);}return _0x106fa7[_0x6cbb('0x25')](_0x430fbf)['end']();};}function respondWithResult(_0xcd7300,_0xfd7281){_0xfd7281=_0xfd7281||0xc8;return function(_0x1f9c4a){if(_0x1f9c4a){return _0xcd7300[_0x6cbb('0x25')](_0xfd7281)[_0x6cbb('0x26')](_0x1f9c4a);}};}function respondWithFilteredResult(_0xf1f1fc,_0x2f1988){return function(_0x1a2a25){if(_0x1a2a25){var _0x2e1400=_0x1a2a25['count'],_0x3e6240=_0x2f1988[_0x6cbb('0x27')],_0x33b346=_0x2f1988[_0x6cbb('0x27')]+_0x2f1988[_0x6cbb('0x28')],_0x36a7ff;if(_0x33b346>=_0x2e1400){_0x33b346=_0x2e1400;_0x36a7ff=0xc8;}else{_0x36a7ff=0xce;}_0xf1f1fc[_0x6cbb('0x25')](_0x36a7ff);return _0xf1f1fc[_0x6cbb('0x29')](_0x6cbb('0x2a'),_0x3e6240+'-'+_0x33b346+'/'+_0x2e1400)['json'](_0x1a2a25);}return null;};}function patchUpdates(_0x10ef99){return function(_0x258d72){try{jsonpatch[_0x6cbb('0x2b')](_0x258d72,_0x10ef99,!![]);}catch(_0x111aff){return BPromise[_0x6cbb('0x2c')](_0x111aff);}return _0x258d72[_0x6cbb('0x2d')]();};}function saveUpdates(_0x5db1b4,_0x2e2ee6){return function(_0x2cb0da){if(_0x2cb0da){return _0x2cb0da[_0x6cbb('0x2e')](_0x5db1b4)[_0x6cbb('0x1b')](function(_0x3658f5){return _0x3658f5;});}return null;};}function removeEntity(_0x52cd08,_0x9d73f3){return function(_0x25373d){if(_0x25373d){return _0x25373d[_0x6cbb('0x2f')]()[_0x6cbb('0x1b')](function(){_0x52cd08[_0x6cbb('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c66e1,_0xbbedfd){return function(_0x21cc72){if(!_0x21cc72){_0x3c66e1[_0x6cbb('0x24')](0x194);}return _0x21cc72;};}function handleError(_0x27c9f0,_0x2d28a3){_0x2d28a3=_0x2d28a3||0x1f4;return function(_0x2926cc){logger[_0x6cbb('0x21')](_0x2926cc[_0x6cbb('0x30')]);if(_0x2926cc[_0x6cbb('0x31')]){delete _0x2926cc[_0x6cbb('0x31')];}_0x27c9f0[_0x6cbb('0x25')](_0x2d28a3)[_0x6cbb('0x32')](_0x2926cc);};}exports[_0x6cbb('0x33')]=function(_0x342041,_0x30a915){var _0x2adca3={},_0x4987c3={},_0x29202e={'count':0x0,'rows':[]};var _0x2d29a4=db['VtigerConfiguration']['rawAttributes'];_0x4987c3[_0x6cbb('0x34')]=_[_0x6cbb('0x35')](_0x2d29a4);var _0x3c02d0={'dateStart':_0x342041[_0x6cbb('0x36')][_0x6cbb('0x37')],'dateEnd':_0x342041['query']['dateEnd']};delete _0x342041[_0x6cbb('0x36')][_0x6cbb('0x37')];delete _0x342041['query'][_0x6cbb('0x38')];_0x4987c3[_0x6cbb('0x36')]=_[_0x6cbb('0x35')](_0x342041[_0x6cbb('0x36')]);_0x4987c3[_0x6cbb('0x39')]=_[_0x6cbb('0x3a')](_0x4987c3[_0x6cbb('0x34')],_0x4987c3[_0x6cbb('0x36')]);_0x2adca3[_0x6cbb('0x3b')]=_[_0x6cbb('0x3a')](_0x4987c3['model'],qs[_0x6cbb('0x3c')](_0x342041[_0x6cbb('0x36')][_0x6cbb('0x3c')]));_0x2adca3[_0x6cbb('0x3b')]=_0x2adca3[_0x6cbb('0x3b')]['length']?_0x2adca3[_0x6cbb('0x3b')]:_0x4987c3['model'];if(!_0x342041[_0x6cbb('0x36')][_0x6cbb('0x3d')](_0x6cbb('0x3e'))){_0x2adca3['limit']=qs[_0x6cbb('0x28')](_0x342041[_0x6cbb('0x36')][_0x6cbb('0x28')]);_0x2adca3['offset']=qs['offset'](_0x342041['query'][_0x6cbb('0x27')]);}_0x2adca3['order']=qs[_0x6cbb('0x3f')](_0x342041[_0x6cbb('0x36')][_0x6cbb('0x3f')]);_0x2adca3[_0x6cbb('0x40')]=qs[_0x6cbb('0x39')](_[_0x6cbb('0x41')](_0x342041['query'],_0x4987c3[_0x6cbb('0x39')]));if(_0x3c02d0[_0x6cbb('0x37')]){if(_0x3c02d0['dateEnd']){_0x3c02d0['dateEnd']=moment(_0x3c02d0[_0x6cbb('0x38')])[_0x6cbb('0x42')](0x1,_0x6cbb('0x43'));}else{_0x3c02d0[_0x6cbb('0x38')]=moment(_0x3c02d0['dateStart'])[_0x6cbb('0x42')](0x1,_0x6cbb('0x43'));}_['merge'](_0x2adca3['where'],{'createdAt':{'$gte':_0x3c02d0['dateStart'],'$lte':_0x3c02d0[_0x6cbb('0x38')]}});}if(_0x342041[_0x6cbb('0x36')][_0x6cbb('0x44')]){_0x2adca3[_0x6cbb('0x40')]=_['merge'](_0x2adca3[_0x6cbb('0x40')],{'$or':_[_0x6cbb('0x45')](_0x2d29a4,function(_0x2d92ce){if(_0x2d92ce[_0x6cbb('0x46')][_0x6cbb('0x47')]!=='VIRTUAL'){var _0x2f06b2={};_0x2f06b2[_0x2d92ce[_0x6cbb('0x48')]]={'$like':'%'+_0x342041['query'][_0x6cbb('0x44')]+'%'};return _0x2f06b2;}})});}_0x2adca3=_['merge']({},_0x2adca3,_0x342041['options']);var _0x4175ad={'where':_0x2adca3[_0x6cbb('0x40')]};return db[_0x6cbb('0x49')][_0x6cbb('0x4a')](_0x4175ad)[_0x6cbb('0x1b')](function(_0x4789ed){_0x29202e[_0x6cbb('0x4a')]=_0x4789ed;if(_0x342041[_0x6cbb('0x36')][_0x6cbb('0x4b')]){_0x2adca3['include']=[{'all':!![]}];}return db[_0x6cbb('0x49')][_0x6cbb('0x4c')](_0x2adca3);})[_0x6cbb('0x1b')](function(_0x2b0efd){_0x29202e[_0x6cbb('0x4d')]=_0x2b0efd;return _0x29202e;})[_0x6cbb('0x1b')](respondWithFilteredResult(_0x30a915,_0x2adca3))[_0x6cbb('0x4e')](handleError(_0x30a915,null));};exports['show']=function(_0x8ca527,_0xafd52e){var _0x1dce37={'raw':![],'where':{'id':_0x8ca527[_0x6cbb('0x4f')]['id']}},_0x385028={};_0x385028[_0x6cbb('0x34')]=_[_0x6cbb('0x35')](db[_0x6cbb('0x49')][_0x6cbb('0x50')]);_0x385028[_0x6cbb('0x36')]=_[_0x6cbb('0x35')](_0x8ca527[_0x6cbb('0x36')]);_0x385028[_0x6cbb('0x39')]=_[_0x6cbb('0x3a')](_0x385028['model'],_0x385028[_0x6cbb('0x36')]);_0x1dce37[_0x6cbb('0x3b')]=_[_0x6cbb('0x3a')](_0x385028[_0x6cbb('0x34')],qs[_0x6cbb('0x3c')](_0x8ca527['query'][_0x6cbb('0x3c')]));_0x1dce37[_0x6cbb('0x3b')]=_0x1dce37[_0x6cbb('0x3b')][_0x6cbb('0x51')]?_0x1dce37['attributes']:_0x385028[_0x6cbb('0x34')];if(_0x8ca527['query'][_0x6cbb('0x4b')]){_0x1dce37[_0x6cbb('0x52')]=[{'all':!![]}];}_0x1dce37=_[_0x6cbb('0x53')]({},_0x1dce37,_0x8ca527['options']);return db[_0x6cbb('0x49')]['find'](_0x1dce37)[_0x6cbb('0x1b')](handleEntityNotFound(_0xafd52e,null))[_0x6cbb('0x1b')](respondWithResult(_0xafd52e,null))[_0x6cbb('0x4e')](handleError(_0xafd52e,null));};exports[_0x6cbb('0x54')]=function(_0x2c5352,_0x404451){return db['VtigerConfiguration'][_0x6cbb('0x54')](_0x2c5352['body'],{})[_0x6cbb('0x1b')](respondWithResult(_0x404451,0xc9))[_0x6cbb('0x4e')](handleError(_0x404451,null));};exports[_0x6cbb('0x2e')]=function(_0x45d5a5,_0x152dd5){if(_0x45d5a5['body']['id']){delete _0x45d5a5[_0x6cbb('0x55')]['id'];}return db[_0x6cbb('0x49')][_0x6cbb('0x56')]({'where':{'id':_0x45d5a5[_0x6cbb('0x4f')]['id']}})[_0x6cbb('0x1b')](handleEntityNotFound(_0x152dd5,null))['then'](saveUpdates(_0x45d5a5[_0x6cbb('0x55')],null))[_0x6cbb('0x1b')](respondWithResult(_0x152dd5,null))[_0x6cbb('0x4e')](handleError(_0x152dd5,null));};exports['destroy']=function(_0x9c9a55,_0x281059){return db[_0x6cbb('0x49')][_0x6cbb('0x56')]({'where':{'id':_0x9c9a55[_0x6cbb('0x4f')]['id']}})[_0x6cbb('0x1b')](handleEntityNotFound(_0x281059,null))[_0x6cbb('0x1b')](removeEntity(_0x281059,null))[_0x6cbb('0x4e')](handleError(_0x281059,null));};exports['getFields']=function(_0x28df30,_0x4c1570,_0x812555){var _0x4d5fdb={};var _0x2801fb={};var _0x365c2a;var _0x5967df;return db['VtigerConfiguration'][_0x6cbb('0x57')]({'where':{'id':_0x28df30[_0x6cbb('0x4f')]['id']}})[_0x6cbb('0x1b')](handleEntityNotFound(_0x4c1570,null))['then'](function(_0x4ef1b2){if(_0x4ef1b2){_0x365c2a=_0x4ef1b2;_0x2801fb['model']=_[_0x6cbb('0x35')](db[_0x6cbb('0x58')][_0x6cbb('0x50')]);_0x2801fb['query']=_[_0x6cbb('0x35')](_0x28df30['query']);_0x2801fb[_0x6cbb('0x39')]=_[_0x6cbb('0x3a')](_0x2801fb[_0x6cbb('0x34')],_0x2801fb['query']);_0x4d5fdb[_0x6cbb('0x3b')]=_[_0x6cbb('0x3a')](_0x2801fb[_0x6cbb('0x34')],qs[_0x6cbb('0x3c')](_0x28df30['query'][_0x6cbb('0x3c')]));_0x4d5fdb[_0x6cbb('0x3b')]=_0x4d5fdb[_0x6cbb('0x3b')][_0x6cbb('0x51')]?_0x4d5fdb[_0x6cbb('0x3b')]:_0x2801fb[_0x6cbb('0x34')];_0x4d5fdb[_0x6cbb('0x59')]=qs[_0x6cbb('0x3f')](_0x28df30[_0x6cbb('0x36')][_0x6cbb('0x3f')]);_0x4d5fdb[_0x6cbb('0x40')]=qs['filters'](_[_0x6cbb('0x41')](_0x28df30['query'],_0x2801fb[_0x6cbb('0x39')]));if(_0x28df30[_0x6cbb('0x36')]['filter']){_0x4d5fdb[_0x6cbb('0x40')]=_[_0x6cbb('0x53')](_0x4d5fdb['where'],{'$or':_[_0x6cbb('0x45')](_0x4d5fdb[_0x6cbb('0x3b')],function(_0x4ac4fb){var _0x3952c6={};_0x3952c6[_0x4ac4fb]={'$like':'%'+_0x28df30['query'][_0x6cbb('0x44')]+'%'};return _0x3952c6;})});}_0x4d5fdb=_[_0x6cbb('0x53')]({},_0x4d5fdb,_0x28df30[_0x6cbb('0x5a')]);return _0x365c2a[_0x6cbb('0x5b')](_0x4d5fdb);}})['then'](function(_0x4cbcb3){if(_0x4cbcb3){_0x5967df=_0x4cbcb3['length'];if(!_0x28df30[_0x6cbb('0x36')][_0x6cbb('0x3d')](_0x6cbb('0x3e'))){_0x4d5fdb['limit']=qs[_0x6cbb('0x28')](_0x28df30[_0x6cbb('0x36')][_0x6cbb('0x28')]);_0x4d5fdb['offset']=qs[_0x6cbb('0x27')](_0x28df30[_0x6cbb('0x36')][_0x6cbb('0x27')]);}return _0x365c2a[_0x6cbb('0x5b')](_0x4d5fdb);}})[_0x6cbb('0x1b')](function(_0xb5a135){if(_0xb5a135){return _0xb5a135?{'count':_0x5967df,'rows':_0xb5a135}:null;}})[_0x6cbb('0x1b')](respondWithResult(_0x4c1570,null))[_0x6cbb('0x4e')](handleError(_0x4c1570,null));};exports['getSubjects']=function(_0x5f2648,_0x29a1f0,_0x44c222){var _0x391295={};var _0x2d9b8d={};var _0x5ec1c2;var _0x5eeaa0;return db[_0x6cbb('0x49')][_0x6cbb('0x57')]({'where':{'id':_0x5f2648['params']['id']}})['then'](handleEntityNotFound(_0x29a1f0,null))[_0x6cbb('0x1b')](function(_0x2563bf){if(_0x2563bf){_0x5ec1c2=_0x2563bf;_0x2d9b8d[_0x6cbb('0x34')]=_[_0x6cbb('0x35')](db[_0x6cbb('0x58')][_0x6cbb('0x50')]);_0x2d9b8d['query']=_[_0x6cbb('0x35')](_0x5f2648[_0x6cbb('0x36')]);_0x2d9b8d[_0x6cbb('0x39')]=_[_0x6cbb('0x3a')](_0x2d9b8d[_0x6cbb('0x34')],_0x2d9b8d[_0x6cbb('0x36')]);_0x391295['attributes']=_['intersection'](_0x2d9b8d['model'],qs[_0x6cbb('0x3c')](_0x5f2648[_0x6cbb('0x36')][_0x6cbb('0x3c')]));_0x391295[_0x6cbb('0x3b')]=_0x391295[_0x6cbb('0x3b')][_0x6cbb('0x51')]?_0x391295['attributes']:_0x2d9b8d[_0x6cbb('0x34')];_0x391295['order']=qs[_0x6cbb('0x3f')](_0x5f2648[_0x6cbb('0x36')]['sort']);_0x391295[_0x6cbb('0x40')]=qs[_0x6cbb('0x39')](_[_0x6cbb('0x41')](_0x5f2648['query'],_0x2d9b8d[_0x6cbb('0x39')]));if(_0x5f2648['query'][_0x6cbb('0x44')]){_0x391295['where']=_[_0x6cbb('0x53')](_0x391295['where'],{'$or':_['map'](_0x391295['attributes'],function(_0x2e3172){var _0x2efe1d={};_0x2efe1d[_0x2e3172]={'$like':'%'+_0x5f2648[_0x6cbb('0x36')][_0x6cbb('0x44')]+'%'};return _0x2efe1d;})});}_0x391295=_['merge']({},_0x391295,_0x5f2648[_0x6cbb('0x5a')]);return _0x5ec1c2[_0x6cbb('0x5c')](_0x391295);}})['then'](function(_0x3c7528){if(_0x3c7528){_0x5eeaa0=_0x3c7528[_0x6cbb('0x51')];if(!_0x5f2648['query'][_0x6cbb('0x3d')](_0x6cbb('0x3e'))){_0x391295[_0x6cbb('0x28')]=qs[_0x6cbb('0x28')](_0x5f2648[_0x6cbb('0x36')][_0x6cbb('0x28')]);_0x391295[_0x6cbb('0x27')]=qs[_0x6cbb('0x27')](_0x5f2648['query'][_0x6cbb('0x27')]);}return _0x5ec1c2[_0x6cbb('0x5c')](_0x391295);}})['then'](function(_0xe4d7a5){if(_0xe4d7a5){return _0xe4d7a5?{'count':_0x5eeaa0,'rows':_0xe4d7a5}:null;}})[_0x6cbb('0x1b')](respondWithResult(_0x29a1f0,null))[_0x6cbb('0x4e')](handleError(_0x29a1f0,null));};exports[_0x6cbb('0x5d')]=function(_0x40474e,_0x5255ac,_0x1f741b){var _0x2561a4={};var _0x5498ca={};var _0x564d67;var _0x2597c7;return db[_0x6cbb('0x49')][_0x6cbb('0x57')]({'where':{'id':_0x40474e[_0x6cbb('0x4f')]['id']}})[_0x6cbb('0x1b')](handleEntityNotFound(_0x5255ac,null))[_0x6cbb('0x1b')](function(_0x36849e){if(_0x36849e){_0x564d67=_0x36849e;_0x5498ca[_0x6cbb('0x34')]=_[_0x6cbb('0x35')](db[_0x6cbb('0x58')]['rawAttributes']);_0x5498ca[_0x6cbb('0x36')]=_[_0x6cbb('0x35')](_0x40474e[_0x6cbb('0x36')]);_0x5498ca['filters']=_[_0x6cbb('0x3a')](_0x5498ca[_0x6cbb('0x34')],_0x5498ca[_0x6cbb('0x36')]);_0x2561a4[_0x6cbb('0x3b')]=_['intersection'](_0x5498ca[_0x6cbb('0x34')],qs['fields'](_0x40474e[_0x6cbb('0x36')][_0x6cbb('0x3c')]));_0x2561a4[_0x6cbb('0x3b')]=_0x2561a4['attributes'][_0x6cbb('0x51')]?_0x2561a4[_0x6cbb('0x3b')]:_0x5498ca[_0x6cbb('0x34')];_0x2561a4['order']=qs[_0x6cbb('0x3f')](_0x40474e[_0x6cbb('0x36')][_0x6cbb('0x3f')]);_0x2561a4[_0x6cbb('0x40')]=qs[_0x6cbb('0x39')](_[_0x6cbb('0x41')](_0x40474e[_0x6cbb('0x36')],_0x5498ca['filters']));if(_0x40474e[_0x6cbb('0x36')][_0x6cbb('0x44')]){_0x2561a4['where']=_[_0x6cbb('0x53')](_0x2561a4[_0x6cbb('0x40')],{'$or':_[_0x6cbb('0x45')](_0x2561a4[_0x6cbb('0x3b')],function(_0x1b85a3){var _0x30a6b2={};_0x30a6b2[_0x1b85a3]={'$like':'%'+_0x40474e[_0x6cbb('0x36')][_0x6cbb('0x44')]+'%'};return _0x30a6b2;})});}_0x2561a4=_['merge']({},_0x2561a4,_0x40474e[_0x6cbb('0x5a')]);return _0x564d67[_0x6cbb('0x5d')](_0x2561a4);}})[_0x6cbb('0x1b')](function(_0x41e35e){if(_0x41e35e){_0x2597c7=_0x41e35e[_0x6cbb('0x51')];if(!_0x40474e[_0x6cbb('0x36')][_0x6cbb('0x3d')](_0x6cbb('0x3e'))){_0x2561a4[_0x6cbb('0x28')]=qs[_0x6cbb('0x28')](_0x40474e[_0x6cbb('0x36')][_0x6cbb('0x28')]);_0x2561a4['offset']=qs[_0x6cbb('0x27')](_0x40474e[_0x6cbb('0x36')]['offset']);}return _0x564d67[_0x6cbb('0x5d')](_0x2561a4);}})[_0x6cbb('0x1b')](function(_0x27f279){if(_0x27f279){return _0x27f279?{'count':_0x2597c7,'rows':_0x27f279}:null;}})['then'](respondWithResult(_0x5255ac,null))[_0x6cbb('0x4e')](handleError(_0x5255ac,null));};
\ No newline at end of file
index 6651104..f2f8bbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb56a=['bluebird','request-promise','./intVtigerConfiguration.attributes','exports','int_vtiger_configurations','lodash','util','../../config/logger','api'];(function(_0x2ed8f3,_0x4aa12f){var _0x525a55=function(_0x4cfb58){while(--_0x4cfb58){_0x2ed8f3['push'](_0x2ed8f3['shift']());}};_0x525a55(++_0x4aa12f);}(_0xb56a,0x15b));var _0xab56=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0xb56a[_0x19b3f9];return _0x18c3f6;};'use strict';var _=require(_0xab56('0x0'));var util=require(_0xab56('0x1'));var logger=require(_0xab56('0x2'))(_0xab56('0x3'));var moment=require('moment');var BPromise=require(_0xab56('0x4'));var rp=require(_0xab56('0x5'));var attributes=require(_0xab56('0x6'));module[_0xab56('0x7')]=function(_0xdb651f,_0x572e43){return _0xdb651f['define']('VtigerConfiguration',attributes,{'tableName':_0xab56('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x63e5=['util','../../config/logger','api','moment','request-promise','./intVtigerConfiguration.attributes','exports','define'];(function(_0x486684,_0x56b2c8){var _0x56278b=function(_0x4be895){while(--_0x4be895){_0x486684['push'](_0x486684['shift']());}};_0x56278b(++_0x56b2c8);}(_0x63e5,0x150));var _0x563e=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x63e5[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require('lodash');var util=require(_0x563e('0x0'));var logger=require(_0x563e('0x1'))(_0x563e('0x2'));var moment=require(_0x563e('0x3'));var BPromise=require('bluebird');var rp=require(_0x563e('0x4'));var attributes=require(_0x563e('0x5'));module[_0x563e('0x6')]=function(_0x356038,_0x3955e3){return _0x356038[_0x563e('0x7')]('VtigerConfiguration',attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d49c9d7..cbd9884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0af4=['code','VtigerConfiguration,\x20%s,\x20%s','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error'];(function(_0xd1630e,_0x506259){var _0x4c4188=function(_0x51f4c5){while(--_0x51f4c5){_0xd1630e['push'](_0xd1630e['shift']());}};_0x4c4188(++_0x506259);}(_0x0af4,0x1e7));var _0x40af=function(_0x536a1f,_0x5c3648){_0x536a1f=_0x536a1f-0x0;var _0x4dcbe3=_0x0af4[_0x536a1f];return _0x4dcbe3;};'use strict';var _=require('lodash');var util=require(_0x40af('0x0'));var moment=require(_0x40af('0x1'));var BPromise=require(_0x40af('0x2'));var rs=require(_0x40af('0x3'));var fs=require('fs');var Redis=require(_0x40af('0x4'));var db=require(_0x40af('0x5'))['db'];var utils=require(_0x40af('0x6'));var logger=require(_0x40af('0x7'))(_0x40af('0x8'));var config=require(_0x40af('0x9'));var jayson=require(_0x40af('0xa'));var client=jayson[_0x40af('0xb')][_0x40af('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xbdb3e9,_0x2b4012,_0x23d3b7){return new BPromise(function(_0x536918,_0x19bb17){return client[_0x40af('0xd')](_0xbdb3e9,_0x23d3b7)[_0x40af('0xe')](function(_0xc8f5bf){logger[_0x40af('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x2b4012,_0x40af('0x10'));logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x2b4012,_0x40af('0x10'),JSON[_0x40af('0x11')](_0xc8f5bf));if(_0xc8f5bf[_0x40af('0x12')]){if(_0xc8f5bf[_0x40af('0x12')][_0x40af('0x13')]===0x1f4){logger['error'](_0x40af('0x14'),_0x2b4012,_0xc8f5bf[_0x40af('0x12')][_0x40af('0x15')]);return _0x19bb17(_0xc8f5bf[_0x40af('0x12')]['message']);}logger[_0x40af('0x12')](_0x40af('0x14'),_0x2b4012,_0xc8f5bf[_0x40af('0x12')][_0x40af('0x15')]);return _0x536918(_0xc8f5bf[_0x40af('0x12')][_0x40af('0x15')]);}else{logger['info'](_0x40af('0x14'),_0x2b4012,_0x40af('0x10'));_0x536918(_0xc8f5bf['result'][_0x40af('0x15')]);}})[_0x40af('0x16')](function(_0x4fafb8){logger[_0x40af('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x2b4012,_0x4fafb8);_0x19bb17(_0x4fafb8);});});}
\ No newline at end of file
+var _0xa3e1=['request','then','VtigerConfiguration,\x20%s,\x20%s','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4bbbfe,_0xcf1d6d){var _0x4ecb82=function(_0x1c97ae){while(--_0x1c97ae){_0x4bbbfe['push'](_0x4bbbfe['shift']());}};_0x4ecb82(++_0xcf1d6d);}(_0xa3e1,0x144));var _0x1a3e=function(_0xf73390,_0x14c109){_0xf73390=_0xf73390-0x0;var _0x4b212f=_0xa3e1[_0xf73390];return _0x4b212f;};'use strict';var _=require('lodash');var util=require(_0x1a3e('0x0'));var moment=require(_0x1a3e('0x1'));var BPromise=require('bluebird');var rs=require(_0x1a3e('0x2'));var fs=require('fs');var Redis=require(_0x1a3e('0x3'));var db=require(_0x1a3e('0x4'))['db'];var utils=require(_0x1a3e('0x5'));var logger=require(_0x1a3e('0x6'))(_0x1a3e('0x7'));var config=require(_0x1a3e('0x8'));var jayson=require(_0x1a3e('0x9'));var client=jayson[_0x1a3e('0xa')][_0x1a3e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f5bcd,_0x5c3c98,_0x35ef10){return new BPromise(function(_0x4944d0,_0x5e974b){return client[_0x1a3e('0xc')](_0x4f5bcd,_0x35ef10)[_0x1a3e('0xd')](function(_0x44232c){logger['info'](_0x1a3e('0xe'),_0x5c3c98,'request\x20sent');logger[_0x1a3e('0xf')](_0x1a3e('0x10'),_0x5c3c98,_0x1a3e('0x11'),JSON[_0x1a3e('0x12')](_0x44232c));if(_0x44232c[_0x1a3e('0x13')]){if(_0x44232c[_0x1a3e('0x13')][_0x1a3e('0x14')]===0x1f4){logger['error'](_0x1a3e('0xe'),_0x5c3c98,_0x44232c[_0x1a3e('0x13')][_0x1a3e('0x15')]);return _0x5e974b(_0x44232c['error']['message']);}logger[_0x1a3e('0x13')](_0x1a3e('0xe'),_0x5c3c98,_0x44232c[_0x1a3e('0x13')][_0x1a3e('0x15')]);return _0x4944d0(_0x44232c[_0x1a3e('0x13')][_0x1a3e('0x15')]);}else{logger[_0x1a3e('0x16')](_0x1a3e('0xe'),_0x5c3c98,_0x1a3e('0x11'));_0x4944d0(_0x44232c[_0x1a3e('0x17')][_0x1a3e('0x15')]);}})['catch'](function(_0x56ef1f){logger['error'](_0x1a3e('0xe'),_0x5c3c98,_0x56ef1f);_0x5e974b(_0x56ef1f);});});}
\ No newline at end of file
index a5650a5..5645599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ec=['express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','util','path','connect-timeout'];(function(_0x50260d,_0x51144d){var _0x4393e0=function(_0x23e0ca){while(--_0x23e0ca){_0x50260d['push'](_0x50260d['shift']());}};_0x4393e0(++_0x51144d);}(_0x91ec,0x1e3));var _0xc91e=function(_0x550210,_0x2a952b){_0x550210=_0x550210-0x0;var _0x3702fa=_0x91ec[_0x550210];return _0x3702fa;};'use strict';var multer=require('multer');var util=require(_0xc91e('0x0'));var path=require(_0xc91e('0x1'));var timeout=require(_0xc91e('0x2'));var express=require(_0xc91e('0x3'));var router=express[_0xc91e('0x4')]();var auth=require(_0xc91e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc91e('0x6'));var controller=require('./intVtigerField.controller');router[_0xc91e('0x7')]('/',auth[_0xc91e('0x8')](),controller[_0xc91e('0x9')]);router[_0xc91e('0x7')](_0xc91e('0xa'),auth['isAuthenticated'](),controller[_0xc91e('0xb')]);router[_0xc91e('0xc')]('/',auth['isAuthenticated'](),controller[_0xc91e('0xd')]);router[_0xc91e('0xe')]('/:id',auth[_0xc91e('0x8')](),controller[_0xc91e('0xf')]);router[_0xc91e('0x10')](_0xc91e('0xa'),auth[_0xc91e('0x8')](),controller['destroy']);module[_0xc91e('0x11')]=router;
\ No newline at end of file
+var _0x8917=['put','update','delete','destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x25a6cc,_0xcc8370){var _0x35baf4=function(_0x125711){while(--_0x125711){_0x25a6cc['push'](_0x25a6cc['shift']());}};_0x35baf4(++_0xcc8370);}(_0x8917,0x121));var _0x7891=function(_0x4269de,_0x363fdd){_0x4269de=_0x4269de-0x0;var _0x2a39fd=_0x8917[_0x4269de];return _0x2a39fd;};'use strict';var multer=require('multer');var util=require(_0x7891('0x0'));var path=require(_0x7891('0x1'));var timeout=require(_0x7891('0x2'));var express=require(_0x7891('0x3'));var router=express[_0x7891('0x4')]();var auth=require(_0x7891('0x5'));var interaction=require(_0x7891('0x6'));var config=require(_0x7891('0x7'));var controller=require('./intVtigerField.controller');router[_0x7891('0x8')]('/',auth[_0x7891('0x9')](),controller[_0x7891('0xa')]);router['get'](_0x7891('0xb'),auth['isAuthenticated'](),controller[_0x7891('0xc')]);router[_0x7891('0xd')]('/',auth['isAuthenticated'](),controller[_0x7891('0xe')]);router[_0x7891('0xf')](_0x7891('0xb'),auth[_0x7891('0x9')](),controller[_0x7891('0x10')]);router[_0x7891('0x11')](_0x7891('0xb'),auth[_0x7891('0x9')](),controller[_0x7891('0x12')]);module['exports']=router;
\ No newline at end of file
index ba8a55d..18398c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['string','STRING','ENUM','BOOLEAN','sequelize','exports','variable','customVariable','keyValue'];(function(_0x52085a,_0x3717ca){var _0x5afc1a=function(_0x2aa175){while(--_0x2aa175){_0x52085a['push'](_0x52085a['shift']());}};_0x5afc1a(++_0x3717ca);}(_0x0bb5,0x148));var _0x50bb=function(_0x19fabd,_0x4a2bc2){_0x19fabd=_0x19fabd-0x0;var _0x58ecd9=_0x0bb5[_0x19fabd];return _0x58ecd9;};'use strict';var Sequelize=require(_0x50bb('0x0'));module[_0x50bb('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0x50bb('0x2'),_0x50bb('0x3'),_0x50bb('0x4')),'defaultValue':_0x50bb('0x5')},'content':{'type':Sequelize[_0x50bb('0x6')]},'key':{'type':Sequelize[_0x50bb('0x6')]},'keyType':{'type':Sequelize[_0x50bb('0x7')](_0x50bb('0x5'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x50bb('0x6')]},'idField':{'type':Sequelize[_0x50bb('0x6')]},'nameField':{'type':Sequelize[_0x50bb('0x6')]},'customField':{'type':Sequelize[_0x50bb('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb688=['ENUM','string','variable','customVariable','keyValue','STRING','BOOLEAN','exports'];(function(_0x26a56a,_0x270ee9){var _0x36d273=function(_0x3b836b){while(--_0x3b836b){_0x26a56a['push'](_0x26a56a['shift']());}};_0x36d273(++_0x270ee9);}(_0xb688,0xcf));var _0x8b68=function(_0x181061,_0x455557){_0x181061=_0x181061-0x0;var _0x57eda3=_0xb688[_0x181061];return _0x57eda3;};'use strict';var Sequelize=require('sequelize');module[_0x8b68('0x0')]={'type':{'type':Sequelize[_0x8b68('0x1')](_0x8b68('0x2'),_0x8b68('0x3'),_0x8b68('0x4'),_0x8b68('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x8b68('0x6')]},'key':{'type':Sequelize[_0x8b68('0x6')]},'keyType':{'type':Sequelize[_0x8b68('0x1')](_0x8b68('0x2'),'variable',_0x8b68('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8b68('0x6')]},'nameField':{'type':Sequelize[_0x8b68('0x6')]},'customField':{'type':Sequelize[_0x8b68('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8b68('0x6')]}};
\ No newline at end of file
index 98cd96c..5a6eb26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec2b=['VtigerField','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','add','day','merge','map','type','key','field','filter','options','includeAll','include','then','rows','catch','show','find','create','body','update','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/logger','api','../../config/environment','status','json','count','offset','limit','set','Content-Range','apply','reject','save','destroy','end','sendStatus','error','name','send','index'];(function(_0x420513,_0x30eae3){var _0x1b44ec=function(_0x644f88){while(--_0x644f88){_0x420513['push'](_0x420513['shift']());}};_0x1b44ec(++_0x30eae3);}(_0xec2b,0x1e6));var _0xbec2=function(_0x33a82d,_0x3e28f7){_0x33a82d=_0x33a82d-0x0;var _0x3fe38d=_0xec2b[_0x33a82d];return _0x3fe38d;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0xbec2('0x0'));var zipdir=require(_0xbec2('0x1'));var jsonpatch=require(_0xbec2('0x2'));var rp=require(_0xbec2('0x3'));var moment=require(_0xbec2('0x4'));var BPromise=require(_0xbec2('0x5'));var Mustache=require(_0xbec2('0x6'));var util=require(_0xbec2('0x7'));var path=require(_0xbec2('0x8'));var sox=require(_0xbec2('0x9'));var csv=require(_0xbec2('0xa'));var ejs=require(_0xbec2('0xb'));var fs=require('fs');var _=require(_0xbec2('0xc'));var squel=require(_0xbec2('0xd'));var crypto=require(_0xbec2('0xe'));var jsforce=require(_0xbec2('0xf'));var deskjs=require(_0xbec2('0x10'));var toCsv=require(_0xbec2('0xa'));var querystring=require(_0xbec2('0x11'));var Papa=require(_0xbec2('0x12'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0xbec2('0x13'))(_0xbec2('0x14'));var utils=require('../../config/utils');var config=require(_0xbec2('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4e011e,_0x552033){_0x552033=_0x552033||0xcc;return function(_0x2cf369){if(_0x2cf369){return _0x4e011e['sendStatus'](_0x552033);}return _0x4e011e[_0xbec2('0x16')](_0x552033)['end']();};}function respondWithResult(_0x286d22,_0x20817d){_0x20817d=_0x20817d||0xc8;return function(_0x448767){if(_0x448767){return _0x286d22[_0xbec2('0x16')](_0x20817d)[_0xbec2('0x17')](_0x448767);}};}function respondWithFilteredResult(_0x4d8f38,_0x342ae6){return function(_0x33cdb9){if(_0x33cdb9){var _0x433401=_0x33cdb9[_0xbec2('0x18')],_0x57369f=_0x342ae6[_0xbec2('0x19')],_0x540176=_0x342ae6[_0xbec2('0x19')]+_0x342ae6[_0xbec2('0x1a')],_0x4f0ab7;if(_0x540176>=_0x433401){_0x540176=_0x433401;_0x4f0ab7=0xc8;}else{_0x4f0ab7=0xce;}_0x4d8f38['status'](_0x4f0ab7);return _0x4d8f38[_0xbec2('0x1b')](_0xbec2('0x1c'),_0x57369f+'-'+_0x540176+'/'+_0x433401)['json'](_0x33cdb9);}return null;};}function patchUpdates(_0x52803b){return function(_0x47b0e5){try{jsonpatch[_0xbec2('0x1d')](_0x47b0e5,_0x52803b,!![]);}catch(_0x3714e7){return BPromise[_0xbec2('0x1e')](_0x3714e7);}return _0x47b0e5[_0xbec2('0x1f')]();};}function saveUpdates(_0x46dcf8,_0x483f30){return function(_0x16a112){if(_0x16a112){return _0x16a112['update'](_0x46dcf8)['then'](function(_0x5f31d4){return _0x5f31d4;});}return null;};}function removeEntity(_0x326e49,_0x30892f){return function(_0x1605a5){if(_0x1605a5){return _0x1605a5[_0xbec2('0x20')]()['then'](function(){_0x326e49[_0xbec2('0x16')](0xcc)[_0xbec2('0x21')]();});}};}function handleEntityNotFound(_0x1b04b8,_0x40ac2e){return function(_0x31af19){if(!_0x31af19){_0x1b04b8[_0xbec2('0x22')](0x194);}return _0x31af19;};}function handleError(_0x42cf5d,_0xb9a9ea){_0xb9a9ea=_0xb9a9ea||0x1f4;return function(_0x549a10){logger[_0xbec2('0x23')](_0x549a10['stack']);if(_0x549a10[_0xbec2('0x24')]){delete _0x549a10[_0xbec2('0x24')];}_0x42cf5d[_0xbec2('0x16')](_0xb9a9ea)[_0xbec2('0x25')](_0x549a10);};}exports[_0xbec2('0x26')]=function(_0x244107,_0xba7e87){var _0x59815d={},_0x30ac30={},_0x5d80f8={'count':0x0,'rows':[]};var _0x3bfb93=db[_0xbec2('0x27')][_0xbec2('0x28')];_0x30ac30[_0xbec2('0x29')]=_[_0xbec2('0x2a')](_0x3bfb93);var _0x404b15={'dateStart':_0x244107[_0xbec2('0x2b')][_0xbec2('0x2c')],'dateEnd':_0x244107[_0xbec2('0x2b')][_0xbec2('0x2d')]};delete _0x244107['query'][_0xbec2('0x2c')];delete _0x244107[_0xbec2('0x2b')][_0xbec2('0x2d')];_0x30ac30[_0xbec2('0x2b')]=_[_0xbec2('0x2a')](_0x244107[_0xbec2('0x2b')]);_0x30ac30[_0xbec2('0x2e')]=_[_0xbec2('0x2f')](_0x30ac30['model'],_0x30ac30[_0xbec2('0x2b')]);_0x59815d[_0xbec2('0x30')]=_['intersection'](_0x30ac30[_0xbec2('0x29')],qs['fields'](_0x244107[_0xbec2('0x2b')][_0xbec2('0x31')]));_0x59815d['attributes']=_0x59815d[_0xbec2('0x30')][_0xbec2('0x32')]?_0x59815d[_0xbec2('0x30')]:_0x30ac30[_0xbec2('0x29')];if(!_0x244107['query'][_0xbec2('0x33')](_0xbec2('0x34'))){_0x59815d[_0xbec2('0x1a')]=qs[_0xbec2('0x1a')](_0x244107[_0xbec2('0x2b')][_0xbec2('0x1a')]);_0x59815d[_0xbec2('0x19')]=qs[_0xbec2('0x19')](_0x244107[_0xbec2('0x2b')]['offset']);}_0x59815d['order']=qs[_0xbec2('0x35')](_0x244107[_0xbec2('0x2b')][_0xbec2('0x35')]);_0x59815d[_0xbec2('0x36')]=qs['filters'](_['pick'](_0x244107[_0xbec2('0x2b')],_0x30ac30[_0xbec2('0x2e')]));if(_0x404b15[_0xbec2('0x2c')]){if(_0x404b15[_0xbec2('0x2d')]){_0x404b15[_0xbec2('0x2d')]=moment(_0x404b15['dateEnd'])[_0xbec2('0x37')](0x1,'day');}else{_0x404b15[_0xbec2('0x2d')]=moment(_0x404b15[_0xbec2('0x2c')])[_0xbec2('0x37')](0x1,_0xbec2('0x38'));}_[_0xbec2('0x39')](_0x59815d[_0xbec2('0x36')],{'createdAt':{'$gte':_0x404b15[_0xbec2('0x2c')],'$lte':_0x404b15[_0xbec2('0x2d')]}});}if(_0x244107[_0xbec2('0x2b')]['filter']){_0x59815d[_0xbec2('0x36')]=_[_0xbec2('0x39')](_0x59815d['where'],{'$or':_[_0xbec2('0x3a')](_0x3bfb93,function(_0x2b2230){if(_0x2b2230[_0xbec2('0x3b')][_0xbec2('0x3c')]!=='VIRTUAL'){var _0x43b608={};_0x43b608[_0x2b2230[_0xbec2('0x3d')]]={'$like':'%'+_0x244107[_0xbec2('0x2b')][_0xbec2('0x3e')]+'%'};return _0x43b608;}})});}_0x59815d=_[_0xbec2('0x39')]({},_0x59815d,_0x244107[_0xbec2('0x3f')]);var _0x4dfc31={'where':_0x59815d[_0xbec2('0x36')]};return db[_0xbec2('0x27')][_0xbec2('0x18')](_0x4dfc31)['then'](function(_0x41e1c7){_0x5d80f8['count']=_0x41e1c7;if(_0x244107['query'][_0xbec2('0x40')]){_0x59815d[_0xbec2('0x41')]=[{'all':!![]}];}return db[_0xbec2('0x27')]['findAll'](_0x59815d);})[_0xbec2('0x42')](function(_0x51f5d7){_0x5d80f8[_0xbec2('0x43')]=_0x51f5d7;return _0x5d80f8;})[_0xbec2('0x42')](respondWithFilteredResult(_0xba7e87,_0x59815d))[_0xbec2('0x44')](handleError(_0xba7e87,null));};exports[_0xbec2('0x45')]=function(_0x386906,_0x2ef8d9){var _0x4a3c0f={'raw':!![],'where':{'id':_0x386906['params']['id']}},_0x394434={};_0x394434[_0xbec2('0x29')]=_[_0xbec2('0x2a')](db['VtigerField'][_0xbec2('0x28')]);_0x394434[_0xbec2('0x2b')]=_['keys'](_0x386906['query']);_0x394434[_0xbec2('0x2e')]=_[_0xbec2('0x2f')](_0x394434[_0xbec2('0x29')],_0x394434['query']);_0x4a3c0f[_0xbec2('0x30')]=_['intersection'](_0x394434[_0xbec2('0x29')],qs[_0xbec2('0x31')](_0x386906[_0xbec2('0x2b')][_0xbec2('0x31')]));_0x4a3c0f[_0xbec2('0x30')]=_0x4a3c0f['attributes'][_0xbec2('0x32')]?_0x4a3c0f['attributes']:_0x394434[_0xbec2('0x29')];if(_0x386906[_0xbec2('0x2b')]['includeAll']){_0x4a3c0f[_0xbec2('0x41')]=[{'all':!![]}];}_0x4a3c0f=_[_0xbec2('0x39')]({},_0x4a3c0f,_0x386906['options']);return db[_0xbec2('0x27')][_0xbec2('0x46')](_0x4a3c0f)['then'](handleEntityNotFound(_0x2ef8d9,null))[_0xbec2('0x42')](respondWithResult(_0x2ef8d9,null))['catch'](handleError(_0x2ef8d9,null));};exports[_0xbec2('0x47')]=function(_0x1fdb77,_0x34fd70){return db['VtigerField'][_0xbec2('0x47')](_0x1fdb77[_0xbec2('0x48')],{})[_0xbec2('0x42')](respondWithResult(_0x34fd70,0xc9))[_0xbec2('0x44')](handleError(_0x34fd70,null));};exports[_0xbec2('0x49')]=function(_0x429e24,_0x5a4a92){if(_0x429e24[_0xbec2('0x48')]['id']){delete _0x429e24[_0xbec2('0x48')]['id'];}return db[_0xbec2('0x27')]['find']({'where':{'id':_0x429e24[_0xbec2('0x4a')]['id']}})[_0xbec2('0x42')](handleEntityNotFound(_0x5a4a92,null))[_0xbec2('0x42')](saveUpdates(_0x429e24['body'],null))[_0xbec2('0x42')](respondWithResult(_0x5a4a92,null))[_0xbec2('0x44')](handleError(_0x5a4a92,null));};exports[_0xbec2('0x20')]=function(_0x5db7f8,_0x1b4b4d){return db[_0xbec2('0x27')]['find']({'where':{'id':_0x5db7f8['params']['id']}})[_0xbec2('0x42')](handleEntityNotFound(_0x1b4b4d,null))[_0xbec2('0x42')](removeEntity(_0x1b4b4d,null))[_0xbec2('0x44')](handleError(_0x1b4b4d,null));};
\ No newline at end of file
+var _0x9e79=['name','send','index','VtigerField','rawAttributes','model','keys','query','dateEnd','dateStart','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','add','day','merge','filter','map','key','VIRTUAL','field','count','include','rows','show','options','find','catch','create','body','params','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','set','Content-Range','apply','reject','save','destroy','then','sendStatus','stack'];(function(_0x4e8706,_0x4bfa96){var _0x30a322=function(_0x58e0f0){while(--_0x58e0f0){_0x4e8706['push'](_0x4e8706['shift']());}};_0x30a322(++_0x4bfa96);}(_0x9e79,0xba));var _0x99e7=function(_0x2b4e1c,_0x25a2a1){_0x2b4e1c=_0x2b4e1c-0x0;var _0x2036b8=_0x9e79[_0x2b4e1c];return _0x2036b8;};'use strict';var pdf=require(_0x99e7('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x99e7('0x1'));var zipdir=require(_0x99e7('0x2'));var jsonpatch=require(_0x99e7('0x3'));var rp=require(_0x99e7('0x4'));var moment=require(_0x99e7('0x5'));var BPromise=require(_0x99e7('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x99e7('0x7'));var sox=require(_0x99e7('0x8'));var csv=require(_0x99e7('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x99e7('0xa'));var squel=require(_0x99e7('0xb'));var crypto=require(_0x99e7('0xc'));var jsforce=require(_0x99e7('0xd'));var deskjs=require(_0x99e7('0xe'));var toCsv=require(_0x99e7('0x9'));var querystring=require(_0x99e7('0xf'));var Papa=require(_0x99e7('0x10'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x99e7('0x11'))(_0x99e7('0x12'));var utils=require(_0x99e7('0x13'));var config=require(_0x99e7('0x14'));var db=require(_0x99e7('0x15'))['db'];function respondWithStatusCode(_0x1ccb4d,_0x308243){_0x308243=_0x308243||0xcc;return function(_0x53d086){if(_0x53d086){return _0x1ccb4d['sendStatus'](_0x308243);}return _0x1ccb4d[_0x99e7('0x16')](_0x308243)[_0x99e7('0x17')]();};}function respondWithResult(_0x504e6f,_0x2c08cd){_0x2c08cd=_0x2c08cd||0xc8;return function(_0x19a138){if(_0x19a138){return _0x504e6f[_0x99e7('0x16')](_0x2c08cd)[_0x99e7('0x18')](_0x19a138);}};}function respondWithFilteredResult(_0x584ba5,_0x4951b7){return function(_0x5b4776){if(_0x5b4776){var _0x456844=_0x5b4776['count'],_0x6ca0d1=_0x4951b7[_0x99e7('0x19')],_0x35cfab=_0x4951b7['offset']+_0x4951b7[_0x99e7('0x1a')],_0x4d790c;if(_0x35cfab>=_0x456844){_0x35cfab=_0x456844;_0x4d790c=0xc8;}else{_0x4d790c=0xce;}_0x584ba5[_0x99e7('0x16')](_0x4d790c);return _0x584ba5[_0x99e7('0x1b')](_0x99e7('0x1c'),_0x6ca0d1+'-'+_0x35cfab+'/'+_0x456844)[_0x99e7('0x18')](_0x5b4776);}return null;};}function patchUpdates(_0x50d250){return function(_0x26c5b6){try{jsonpatch[_0x99e7('0x1d')](_0x26c5b6,_0x50d250,!![]);}catch(_0xc326fa){return BPromise[_0x99e7('0x1e')](_0xc326fa);}return _0x26c5b6[_0x99e7('0x1f')]();};}function saveUpdates(_0x57b28a,_0x3eda8c){return function(_0x51ca87){if(_0x51ca87){return _0x51ca87['update'](_0x57b28a)['then'](function(_0x20cf4b){return _0x20cf4b;});}return null;};}function removeEntity(_0x505429,_0x135954){return function(_0x4e0e91){if(_0x4e0e91){return _0x4e0e91[_0x99e7('0x20')]()[_0x99e7('0x21')](function(){_0x505429[_0x99e7('0x16')](0xcc)[_0x99e7('0x17')]();});}};}function handleEntityNotFound(_0x55c74f,_0x2b9150){return function(_0x5f08e7){if(!_0x5f08e7){_0x55c74f[_0x99e7('0x22')](0x194);}return _0x5f08e7;};}function handleError(_0x1664a7,_0x10a59b){_0x10a59b=_0x10a59b||0x1f4;return function(_0x83949b){logger['error'](_0x83949b[_0x99e7('0x23')]);if(_0x83949b[_0x99e7('0x24')]){delete _0x83949b[_0x99e7('0x24')];}_0x1664a7[_0x99e7('0x16')](_0x10a59b)[_0x99e7('0x25')](_0x83949b);};}exports[_0x99e7('0x26')]=function(_0x5af528,_0x340e90){var _0x327857={},_0x38a912={},_0xedf2e2={'count':0x0,'rows':[]};var _0x25f13b=db[_0x99e7('0x27')][_0x99e7('0x28')];_0x38a912[_0x99e7('0x29')]=_[_0x99e7('0x2a')](_0x25f13b);var _0x594ab2={'dateStart':_0x5af528[_0x99e7('0x2b')]['dateStart'],'dateEnd':_0x5af528['query'][_0x99e7('0x2c')]};delete _0x5af528[_0x99e7('0x2b')][_0x99e7('0x2d')];delete _0x5af528[_0x99e7('0x2b')][_0x99e7('0x2c')];_0x38a912[_0x99e7('0x2b')]=_[_0x99e7('0x2a')](_0x5af528[_0x99e7('0x2b')]);_0x38a912[_0x99e7('0x2e')]=_[_0x99e7('0x2f')](_0x38a912[_0x99e7('0x29')],_0x38a912['query']);_0x327857[_0x99e7('0x30')]=_[_0x99e7('0x2f')](_0x38a912['model'],qs[_0x99e7('0x31')](_0x5af528[_0x99e7('0x2b')][_0x99e7('0x31')]));_0x327857[_0x99e7('0x30')]=_0x327857['attributes'][_0x99e7('0x32')]?_0x327857[_0x99e7('0x30')]:_0x38a912[_0x99e7('0x29')];if(!_0x5af528['query'][_0x99e7('0x33')](_0x99e7('0x34'))){_0x327857[_0x99e7('0x1a')]=qs[_0x99e7('0x1a')](_0x5af528['query'][_0x99e7('0x1a')]);_0x327857[_0x99e7('0x19')]=qs[_0x99e7('0x19')](_0x5af528['query'][_0x99e7('0x19')]);}_0x327857['order']=qs['sort'](_0x5af528[_0x99e7('0x2b')][_0x99e7('0x35')]);_0x327857[_0x99e7('0x36')]=qs[_0x99e7('0x2e')](_[_0x99e7('0x37')](_0x5af528['query'],_0x38a912[_0x99e7('0x2e')]));if(_0x594ab2[_0x99e7('0x2d')]){if(_0x594ab2[_0x99e7('0x2c')]){_0x594ab2['dateEnd']=moment(_0x594ab2[_0x99e7('0x2c')])[_0x99e7('0x38')](0x1,_0x99e7('0x39'));}else{_0x594ab2[_0x99e7('0x2c')]=moment(_0x594ab2[_0x99e7('0x2d')])[_0x99e7('0x38')](0x1,_0x99e7('0x39'));}_[_0x99e7('0x3a')](_0x327857[_0x99e7('0x36')],{'createdAt':{'$gte':_0x594ab2[_0x99e7('0x2d')],'$lte':_0x594ab2[_0x99e7('0x2c')]}});}if(_0x5af528[_0x99e7('0x2b')][_0x99e7('0x3b')]){_0x327857['where']=_[_0x99e7('0x3a')](_0x327857[_0x99e7('0x36')],{'$or':_[_0x99e7('0x3c')](_0x25f13b,function(_0x37a0eb){if(_0x37a0eb['type'][_0x99e7('0x3d')]!==_0x99e7('0x3e')){var _0x3f984e={};_0x3f984e[_0x37a0eb[_0x99e7('0x3f')]]={'$like':'%'+_0x5af528[_0x99e7('0x2b')][_0x99e7('0x3b')]+'%'};return _0x3f984e;}})});}_0x327857=_[_0x99e7('0x3a')]({},_0x327857,_0x5af528['options']);var _0x5aa353={'where':_0x327857[_0x99e7('0x36')]};return db['VtigerField']['count'](_0x5aa353)[_0x99e7('0x21')](function(_0x2b540d){_0xedf2e2[_0x99e7('0x40')]=_0x2b540d;if(_0x5af528[_0x99e7('0x2b')]['includeAll']){_0x327857[_0x99e7('0x41')]=[{'all':!![]}];}return db[_0x99e7('0x27')]['findAll'](_0x327857);})[_0x99e7('0x21')](function(_0x27aa99){_0xedf2e2[_0x99e7('0x42')]=_0x27aa99;return _0xedf2e2;})[_0x99e7('0x21')](respondWithFilteredResult(_0x340e90,_0x327857))['catch'](handleError(_0x340e90,null));};exports[_0x99e7('0x43')]=function(_0x3345d5,_0x237071){var _0x135b7b={'raw':!![],'where':{'id':_0x3345d5['params']['id']}},_0x262e8b={};_0x262e8b['model']=_[_0x99e7('0x2a')](db['VtigerField'][_0x99e7('0x28')]);_0x262e8b['query']=_[_0x99e7('0x2a')](_0x3345d5[_0x99e7('0x2b')]);_0x262e8b[_0x99e7('0x2e')]=_[_0x99e7('0x2f')](_0x262e8b['model'],_0x262e8b[_0x99e7('0x2b')]);_0x135b7b[_0x99e7('0x30')]=_[_0x99e7('0x2f')](_0x262e8b[_0x99e7('0x29')],qs['fields'](_0x3345d5[_0x99e7('0x2b')]['fields']));_0x135b7b[_0x99e7('0x30')]=_0x135b7b[_0x99e7('0x30')][_0x99e7('0x32')]?_0x135b7b[_0x99e7('0x30')]:_0x262e8b[_0x99e7('0x29')];if(_0x3345d5['query']['includeAll']){_0x135b7b[_0x99e7('0x41')]=[{'all':!![]}];}_0x135b7b=_[_0x99e7('0x3a')]({},_0x135b7b,_0x3345d5[_0x99e7('0x44')]);return db[_0x99e7('0x27')][_0x99e7('0x45')](_0x135b7b)[_0x99e7('0x21')](handleEntityNotFound(_0x237071,null))['then'](respondWithResult(_0x237071,null))[_0x99e7('0x46')](handleError(_0x237071,null));};exports[_0x99e7('0x47')]=function(_0x5cd993,_0x565bb9){return db[_0x99e7('0x27')][_0x99e7('0x47')](_0x5cd993[_0x99e7('0x48')],{})[_0x99e7('0x21')](respondWithResult(_0x565bb9,0xc9))[_0x99e7('0x46')](handleError(_0x565bb9,null));};exports['update']=function(_0x54b681,_0x1ac639){if(_0x54b681['body']['id']){delete _0x54b681[_0x99e7('0x48')]['id'];}return db['VtigerField'][_0x99e7('0x45')]({'where':{'id':_0x54b681[_0x99e7('0x49')]['id']}})['then'](handleEntityNotFound(_0x1ac639,null))[_0x99e7('0x21')](saveUpdates(_0x54b681[_0x99e7('0x48')],null))[_0x99e7('0x21')](respondWithResult(_0x1ac639,null))[_0x99e7('0x46')](handleError(_0x1ac639,null));};exports[_0x99e7('0x20')]=function(_0x3f235b,_0x497fa0){return db['VtigerField'][_0x99e7('0x45')]({'where':{'id':_0x3f235b['params']['id']}})[_0x99e7('0x21')](handleEntityNotFound(_0x497fa0,null))[_0x99e7('0x21')](removeEntity(_0x497fa0,null))[_0x99e7('0x46')](handleError(_0x497fa0,null));};
\ No newline at end of file
index 9385994..b5a07b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc956=['./intVtigerField.attributes','exports','define','int_vtiger_fields','lodash','util','moment','bluebird','request-promise'];(function(_0x15928f,_0x5daa84){var _0x19ada3=function(_0x557b6b){while(--_0x557b6b){_0x15928f['push'](_0x15928f['shift']());}};_0x19ada3(++_0x5daa84);}(_0xc956,0xee));var _0x6c95=function(_0x6d9717,_0x472a26){_0x6d9717=_0x6d9717-0x0;var _0x29a41b=_0xc956[_0x6d9717];return _0x29a41b;};'use strict';var _=require(_0x6c95('0x0'));var util=require(_0x6c95('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6c95('0x2'));var BPromise=require(_0x6c95('0x3'));var rp=require(_0x6c95('0x4'));var attributes=require(_0x6c95('0x5'));module[_0x6c95('0x6')]=function(_0x406714,_0x5c07c6){return _0x406714[_0x6c95('0x7')]('VtigerField',attributes,{'tableName':_0x6c95('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde14=['request-promise','./intVtigerField.attributes','exports','define','VtigerField','util','../../config/logger','api','moment'];(function(_0x2b854e,_0x523aef){var _0xf20386=function(_0x171287){while(--_0x171287){_0x2b854e['push'](_0x2b854e['shift']());}};_0xf20386(++_0x523aef);}(_0xde14,0xa7));var _0x4de1=function(_0x36a2af,_0x17f27d){_0x36a2af=_0x36a2af-0x0;var _0xe0bc84=_0xde14[_0x36a2af];return _0xe0bc84;};'use strict';var _=require('lodash');var util=require(_0x4de1('0x0'));var logger=require(_0x4de1('0x1'))(_0x4de1('0x2'));var moment=require(_0x4de1('0x3'));var BPromise=require('bluebird');var rp=require(_0x4de1('0x4'));var attributes=require(_0x4de1('0x5'));module[_0x4de1('0x6')]=function(_0x590d97,_0x2f1cdd){return _0x590d97[_0x4de1('0x7')](_0x4de1('0x8'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4e98e6c..e0f3e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aee=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x2fc120,_0x284c76){var _0x2ae06e=function(_0x33d47c){while(--_0x33d47c){_0x2fc120['push'](_0x2fc120['shift']());}};_0x2ae06e(++_0x284c76);}(_0x7aee,0x1c3));var _0xe7ae=function(_0x459c34,_0x2d8640){_0x459c34=_0x459c34-0x0;var _0x11bd40=_0x7aee[_0x459c34];return _0x11bd40;};'use strict';var _=require(_0xe7ae('0x0'));var util=require('util');var moment=require(_0xe7ae('0x1'));var BPromise=require(_0xe7ae('0x2'));var rs=require(_0xe7ae('0x3'));var fs=require('fs');var Redis=require(_0xe7ae('0x4'));var db=require(_0xe7ae('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe7ae('0x6'))(_0xe7ae('0x7'));var config=require(_0xe7ae('0x8'));var jayson=require(_0xe7ae('0x9'));var client=jayson[_0xe7ae('0xa')][_0xe7ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x328ff7,_0x10d64a,_0xf4e629){return new BPromise(function(_0x3383bf,_0x245aaa){return client[_0xe7ae('0xc')](_0x328ff7,_0xf4e629)['then'](function(_0x1274d2){logger[_0xe7ae('0xd')](_0xe7ae('0xe'),_0x10d64a,_0xe7ae('0xf'));logger[_0xe7ae('0x10')](_0xe7ae('0x11'),_0x10d64a,_0xe7ae('0xf'),JSON[_0xe7ae('0x12')](_0x1274d2));if(_0x1274d2['error']){if(_0x1274d2[_0xe7ae('0x13')][_0xe7ae('0x14')]===0x1f4){logger[_0xe7ae('0x13')]('VtigerField,\x20%s,\x20%s',_0x10d64a,_0x1274d2['error'][_0xe7ae('0x15')]);return _0x245aaa(_0x1274d2[_0xe7ae('0x13')][_0xe7ae('0x15')]);}logger[_0xe7ae('0x13')](_0xe7ae('0xe'),_0x10d64a,_0x1274d2[_0xe7ae('0x13')][_0xe7ae('0x15')]);return _0x3383bf(_0x1274d2[_0xe7ae('0x13')][_0xe7ae('0x15')]);}else{logger[_0xe7ae('0xd')](_0xe7ae('0xe'),_0x10d64a,_0xe7ae('0xf'));_0x3383bf(_0x1274d2[_0xe7ae('0x16')][_0xe7ae('0x15')]);}})[_0xe7ae('0x17')](function(_0x215ea1){logger[_0xe7ae('0x13')](_0xe7ae('0xe'),_0x10d64a,_0x215ea1);_0x245aaa(_0x215ea1);});});}
\ No newline at end of file
+var _0x89ec=['debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','VtigerField,\x20%s,\x20%s','message','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','request\x20sent'];(function(_0x28af34,_0x44bdbe){var _0x52ebfb=function(_0x1d578c){while(--_0x1d578c){_0x28af34['push'](_0x28af34['shift']());}};_0x52ebfb(++_0x44bdbe);}(_0x89ec,0x8c));var _0xc89e=function(_0x12dcef,_0x19c54c){_0x12dcef=_0x12dcef-0x0;var _0x3010d4=_0x89ec[_0x12dcef];return _0x3010d4;};'use strict';var _=require(_0xc89e('0x0'));var util=require(_0xc89e('0x1'));var moment=require('moment');var BPromise=require(_0xc89e('0x2'));var rs=require(_0xc89e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc89e('0x4'))['db'];var utils=require(_0xc89e('0x5'));var logger=require(_0xc89e('0x6'))(_0xc89e('0x7'));var config=require('../../config/environment');var jayson=require(_0xc89e('0x8'));var client=jayson['client'][_0xc89e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x428a0f,_0x47e976,_0x3509dc){return new BPromise(function(_0x162050,_0x40cd34){return client[_0xc89e('0xa')](_0x428a0f,_0x3509dc)[_0xc89e('0xb')](function(_0x121a80){logger[_0xc89e('0xc')]('VtigerField,\x20%s,\x20%s',_0x47e976,_0xc89e('0xd'));logger[_0xc89e('0xe')](_0xc89e('0xf'),_0x47e976,_0xc89e('0xd'),JSON[_0xc89e('0x10')](_0x121a80));if(_0x121a80[_0xc89e('0x11')]){if(_0x121a80[_0xc89e('0x11')][_0xc89e('0x12')]===0x1f4){logger['error'](_0xc89e('0x13'),_0x47e976,_0x121a80['error'][_0xc89e('0x14')]);return _0x40cd34(_0x121a80[_0xc89e('0x11')]['message']);}logger[_0xc89e('0x11')](_0xc89e('0x13'),_0x47e976,_0x121a80[_0xc89e('0x11')][_0xc89e('0x14')]);return _0x162050(_0x121a80[_0xc89e('0x11')]['message']);}else{logger[_0xc89e('0xc')](_0xc89e('0x13'),_0x47e976,_0xc89e('0xd'));_0x162050(_0x121a80[_0xc89e('0x15')]['message']);}})['catch'](function(_0x3f513c){logger[_0xc89e('0x11')]('VtigerField,\x20%s,\x20%s',_0x47e976,_0x3f513c);_0x40cd34(_0x3f513c);});});}
\ No newline at end of file
index d6c3d74..1185a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb25b=['update','destroy','exports','multer','path','connect-timeout','express','Router','../../config/environment','./intZendeskAccount.controller','get','index','/:id','isAuthenticated','getFields','post','/:id/configurations','addConfiguration','put'];(function(_0x515e57,_0x44c4a3){var _0x27e14d=function(_0x281d1b){while(--_0x281d1b){_0x515e57['push'](_0x515e57['shift']());}};_0x27e14d(++_0x44c4a3);}(_0xb25b,0x1cb));var _0xbb25=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xb25b[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require(_0xbb25('0x0'));var util=require('util');var path=require(_0xbb25('0x1'));var timeout=require(_0xbb25('0x2'));var express=require(_0xbb25('0x3'));var router=express[_0xbb25('0x4')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xbb25('0x5'));var controller=require(_0xbb25('0x6'));router[_0xbb25('0x7')]('/',auth['isAuthenticated'](),controller[_0xbb25('0x8')]);router['get'](_0xbb25('0x9'),auth[_0xbb25('0xa')](),controller['show']);router[_0xbb25('0x7')]('/:id/configurations',auth[_0xbb25('0xa')](),controller['getConfigurations']);router[_0xbb25('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0xbb25('0xb')]);router[_0xbb25('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xbb25('0xc')](_0xbb25('0xd'),auth['isAuthenticated'](),controller[_0xbb25('0xe')]);router[_0xbb25('0xf')](_0xbb25('0x9'),auth[_0xbb25('0xa')](),controller[_0xbb25('0x10')]);router['delete']('/:id',auth[_0xbb25('0xa')](),controller[_0xbb25('0x11')]);module[_0xbb25('0x12')]=router;
\ No newline at end of file
+var _0xd75a=['../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','getConfigurations','getFields','create','post','/:id/configurations','addConfiguration','put','delete','exports','multer','path','connect-timeout','express','Router'];(function(_0x4fd109,_0x33c503){var _0x30f0a6=function(_0xc11c0d){while(--_0xc11c0d){_0x4fd109['push'](_0x4fd109['shift']());}};_0x30f0a6(++_0x33c503);}(_0xd75a,0x160));var _0xad75=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xd75a[_0x2be8c2];return _0x97f531;};'use strict';var multer=require(_0xad75('0x0'));var util=require('util');var path=require(_0xad75('0x1'));var timeout=require(_0xad75('0x2'));var express=require(_0xad75('0x3'));var router=express[_0xad75('0x4')]();var auth=require(_0xad75('0x5'));var interaction=require(_0xad75('0x6'));var config=require(_0xad75('0x7'));var controller=require('./intZendeskAccount.controller');router['get']('/',auth[_0xad75('0x8')](),controller[_0xad75('0x9')]);router[_0xad75('0xa')](_0xad75('0xb'),auth[_0xad75('0x8')](),controller['show']);router[_0xad75('0xa')]('/:id/configurations',auth[_0xad75('0x8')](),controller[_0xad75('0xc')]);router[_0xad75('0xa')]('/:id/fields',auth[_0xad75('0x8')](),controller[_0xad75('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xad75('0xe')]);router[_0xad75('0xf')](_0xad75('0x10'),auth[_0xad75('0x8')](),controller[_0xad75('0x11')]);router[_0xad75('0x12')](_0xad75('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xad75('0x13')](_0xad75('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xad75('0x14')]=router;
\ No newline at end of file
index d1b9608..12ecfda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x514e=['password','integrationTab','sequelize','exports','STRING','username','remoteUri','ENUM','token'];(function(_0x3cd863,_0x26031d){var _0x285f47=function(_0x137500){while(--_0x137500){_0x3cd863['push'](_0x3cd863['shift']());}};_0x285f47(++_0x26031d);}(_0x514e,0x146));var _0xe514=function(_0x5bd151,_0x177ad2){_0x5bd151=_0x5bd151-0x0;var _0x507cd8=_0x514e[_0x5bd151];return _0x507cd8;};'use strict';var Sequelize=require(_0xe514('0x0'));module[_0xe514('0x1')]={'name':{'type':Sequelize[_0xe514('0x2')]},'description':{'type':Sequelize[_0xe514('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xe514('0x3')},'password':{'type':Sequelize[_0xe514('0x2')]},'token':{'type':Sequelize[_0xe514('0x2')]},'remoteUri':{'type':Sequelize[_0xe514('0x2')],'unique':_0xe514('0x4')},'authType':{'type':Sequelize[_0xe514('0x5')]('password',_0xe514('0x6')),'defaultValue':_0xe514('0x7')},'serverUrl':{'type':Sequelize[_0xe514('0x2')]},'type':{'type':Sequelize[_0xe514('0x5')](_0xe514('0x8'),'newTab'),'defaultValue':_0xe514('0x8')}};
\ No newline at end of file
+var _0xf881=['username','remoteUri','password','token','ENUM','integrationTab','sequelize','exports','STRING'];(function(_0x1359f6,_0xee1049){var _0x13d652=function(_0x347f4f){while(--_0x347f4f){_0x1359f6['push'](_0x1359f6['shift']());}};_0x13d652(++_0xee1049);}(_0xf881,0x9f));var _0x1f88=function(_0x4bdc05,_0x623370){_0x4bdc05=_0x4bdc05-0x0;var _0x43f1b3=_0xf881[_0x4bdc05];return _0x43f1b3;};'use strict';var Sequelize=require(_0x1f88('0x0'));module[_0x1f88('0x1')]={'name':{'type':Sequelize[_0x1f88('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x1f88('0x2')],'unique':_0x1f88('0x3')},'password':{'type':Sequelize[_0x1f88('0x2')]},'token':{'type':Sequelize[_0x1f88('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x1f88('0x4')},'authType':{'type':Sequelize['ENUM'](_0x1f88('0x5'),_0x1f88('0x6')),'defaultValue':'password'},'serverUrl':{'type':Sequelize[_0x1f88('0x2')]},'type':{'type':Sequelize[_0x1f88('0x7')](_0x1f88('0x8'),'newTab'),'defaultValue':_0x1f88('0x8')}};
\ No newline at end of file
index 5dbe09c..75eaa04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['body','params','findOne','ZendeskConfiguration','getConfigurations','hasOwnProperty','nolimit','addConfiguration','Subjects','channel','Descriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','GET','%s%s','ticket_fields','headers','format','Basic\x20%s','base64','Sequelize','Unknown\x20authentication\x20type','subject','description','group','remove','includes','position','title','system_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','Content-Range','apply','reject','save','stack','name','send','index','ZendeskAccount','model','keys','query','dateStart','dateEnd','intersection','fields','attributes','limit','order','sort','filters','pick','add','day','where','filter','merge','map','type','key','VIRTUAL','field','options','count','includeAll','include','rows','show','rawAttributes','length','find','create'];(function(_0x2882fa,_0x4cb328){var _0x1d80b2=function(_0x579ee5){while(--_0x579ee5){_0x2882fa['push'](_0x2882fa['shift']());}};_0x1d80b2(++_0x4cb328);}(_0x53ec,0x192));var _0xc53e=function(_0x2819cd,_0x1f7703){_0x2819cd=_0x2819cd-0x0;var _0x47874c=_0x53ec[_0x2819cd];return _0x47874c;};'use strict';var pdf=require(_0xc53e('0x0'));var emlformat=require(_0xc53e('0x1'));var rimraf=require(_0xc53e('0x2'));var zipdir=require(_0xc53e('0x3'));var jsonpatch=require(_0xc53e('0x4'));var rp=require(_0xc53e('0x5'));var moment=require('moment');var BPromise=require(_0xc53e('0x6'));var Mustache=require('mustache');var util=require(_0xc53e('0x7'));var path=require(_0xc53e('0x8'));var sox=require('sox');var csv=require(_0xc53e('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0x9'));var querystring=require(_0xc53e('0xe'));var Papa=require(_0xc53e('0xf'));var Redis=require(_0xc53e('0x10'));var qs=require(_0xc53e('0x11'));var logger=require(_0xc53e('0x12'))(_0xc53e('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0xc53e('0x14'))['db'];var integrations=require('../../components/integrations/configuration');var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x15')][_0xc53e('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x863fa,_0x4203aa,_0x56f0e5,_0x4e74c9){return new BPromise(function(_0x1c06cd,_0x19a772){var _0x7cd798=_0x4e74c9||client;return _0x7cd798[_0xc53e('0x17')](_0x863fa,_0x56f0e5)[_0xc53e('0x18')](function(_0x382e87){logger[_0xc53e('0x19')](_0xc53e('0x1a'),_0x4203aa,_0xc53e('0x1b'));logger[_0xc53e('0x1c')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x4203aa,_0xc53e('0x1b'),JSON[_0xc53e('0x1d')](_0x382e87));if(_0x382e87[_0xc53e('0x1e')]){if(_0x382e87[_0xc53e('0x1e')][_0xc53e('0x1f')]===0x1f4){logger[_0xc53e('0x1e')](_0xc53e('0x1a'),_0x4203aa,_0x382e87[_0xc53e('0x1e')][_0xc53e('0x20')]);return _0x19a772(_0x382e87['error']['message']);}logger[_0xc53e('0x1e')](_0xc53e('0x1a'),_0x4203aa,_0x382e87[_0xc53e('0x1e')][_0xc53e('0x20')]);return _0x1c06cd(_0x382e87[_0xc53e('0x1e')][_0xc53e('0x20')]);}else{logger[_0xc53e('0x19')](_0xc53e('0x1a'),_0x4203aa,_0xc53e('0x1b'));_0x1c06cd(_0x382e87[_0xc53e('0x21')][_0xc53e('0x20')]);}})[_0xc53e('0x22')](function(_0x426467){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x4203aa,_0x426467);_0x19a772(_0x426467);});});}function respondWithStatusCode(_0x531ede,_0x4f4304){_0x4f4304=_0x4f4304||0xcc;return function(_0x384218){if(_0x384218){return _0x531ede[_0xc53e('0x23')](_0x4f4304);}return _0x531ede[_0xc53e('0x24')](_0x4f4304)[_0xc53e('0x25')]();};}function respondWithResult(_0x5009e1,_0x5e5377){_0x5e5377=_0x5e5377||0xc8;return function(_0xe06e42){if(_0xe06e42){return _0x5009e1['status'](_0x5e5377)[_0xc53e('0x26')](_0xe06e42);}};}function respondWithFilteredResult(_0x3a5ce8,_0x443179){return function(_0x1166e6){if(_0x1166e6){var _0x63c5dc=_0x1166e6['count'],_0x4df8cf=_0x443179['offset'],_0x398e7a=_0x443179[_0xc53e('0x27')]+_0x443179['limit'],_0x4b9f6a;if(_0x398e7a>=_0x63c5dc){_0x398e7a=_0x63c5dc;_0x4b9f6a=0xc8;}else{_0x4b9f6a=0xce;}_0x3a5ce8[_0xc53e('0x24')](_0x4b9f6a);return _0x3a5ce8['set'](_0xc53e('0x28'),_0x4df8cf+'-'+_0x398e7a+'/'+_0x63c5dc)['json'](_0x1166e6);}return null;};}function patchUpdates(_0x5ce216){return function(_0x8f0ee6){try{jsonpatch[_0xc53e('0x29')](_0x8f0ee6,_0x5ce216,!![]);}catch(_0x42dec1){return BPromise[_0xc53e('0x2a')](_0x42dec1);}return _0x8f0ee6[_0xc53e('0x2b')]();};}function saveUpdates(_0xf97d78,_0x3280fe){return function(_0x2a2ca9){if(_0x2a2ca9){return _0x2a2ca9['update'](_0xf97d78)[_0xc53e('0x18')](function(_0x311835){return _0x311835;});}return null;};}function removeEntity(_0x2d36c0,_0x56206b){return function(_0x4057f9){if(_0x4057f9){return _0x4057f9['destroy']()[_0xc53e('0x18')](function(){_0x2d36c0[_0xc53e('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a64e2,_0x3cd8a1){return function(_0x42efad){if(!_0x42efad){_0x5a64e2[_0xc53e('0x23')](0x194);}return _0x42efad;};}function handleError(_0x30d037,_0x1b95c2){_0x1b95c2=_0x1b95c2||0x1f4;return function(_0x45fedc){logger[_0xc53e('0x1e')](_0x45fedc[_0xc53e('0x2c')]);if(_0x45fedc['name']){delete _0x45fedc[_0xc53e('0x2d')];}_0x30d037[_0xc53e('0x24')](_0x1b95c2)[_0xc53e('0x2e')](_0x45fedc);};}exports[_0xc53e('0x2f')]=function(_0x1eca5b,_0x12b32c){var _0x1920c8={},_0x16942c={},_0x215abe={'count':0x0,'rows':[]};var _0x595efb=db[_0xc53e('0x30')]['rawAttributes'];_0x16942c[_0xc53e('0x31')]=_[_0xc53e('0x32')](_0x595efb);var _0x5e9377={'dateStart':_0x1eca5b[_0xc53e('0x33')][_0xc53e('0x34')],'dateEnd':_0x1eca5b[_0xc53e('0x33')]['dateEnd']};delete _0x1eca5b[_0xc53e('0x33')][_0xc53e('0x34')];delete _0x1eca5b[_0xc53e('0x33')][_0xc53e('0x35')];_0x16942c[_0xc53e('0x33')]=_[_0xc53e('0x32')](_0x1eca5b[_0xc53e('0x33')]);_0x16942c['filters']=_[_0xc53e('0x36')](_0x16942c[_0xc53e('0x31')],_0x16942c[_0xc53e('0x33')]);_0x1920c8['attributes']=_[_0xc53e('0x36')](_0x16942c['model'],qs[_0xc53e('0x37')](_0x1eca5b[_0xc53e('0x33')][_0xc53e('0x37')]));_0x1920c8[_0xc53e('0x38')]=_0x1920c8[_0xc53e('0x38')]['length']?_0x1920c8[_0xc53e('0x38')]:_0x16942c[_0xc53e('0x31')];if(!_0x1eca5b['query']['hasOwnProperty']('nolimit')){_0x1920c8['limit']=qs[_0xc53e('0x39')](_0x1eca5b[_0xc53e('0x33')]['limit']);_0x1920c8[_0xc53e('0x27')]=qs['offset'](_0x1eca5b['query']['offset']);}_0x1920c8[_0xc53e('0x3a')]=qs['sort'](_0x1eca5b['query'][_0xc53e('0x3b')]);_0x1920c8['where']=qs[_0xc53e('0x3c')](_[_0xc53e('0x3d')](_0x1eca5b['query'],_0x16942c[_0xc53e('0x3c')]));if(_0x5e9377[_0xc53e('0x34')]){if(_0x5e9377['dateEnd']){_0x5e9377[_0xc53e('0x35')]=moment(_0x5e9377['dateEnd'])['add'](0x1,'day');}else{_0x5e9377['dateEnd']=moment(_0x5e9377[_0xc53e('0x34')])[_0xc53e('0x3e')](0x1,_0xc53e('0x3f'));}_['merge'](_0x1920c8[_0xc53e('0x40')],{'createdAt':{'$gte':_0x5e9377[_0xc53e('0x34')],'$lte':_0x5e9377['dateEnd']}});}if(_0x1eca5b['query'][_0xc53e('0x41')]){_0x1920c8[_0xc53e('0x40')]=_[_0xc53e('0x42')](_0x1920c8['where'],{'$or':_[_0xc53e('0x43')](_0x595efb,function(_0x1fb82c){if(_0x1fb82c[_0xc53e('0x44')][_0xc53e('0x45')]!==_0xc53e('0x46')){var _0x3428f4={};_0x3428f4[_0x1fb82c[_0xc53e('0x47')]]={'$like':'%'+_0x1eca5b['query'][_0xc53e('0x41')]+'%'};return _0x3428f4;}})});}_0x1920c8=_[_0xc53e('0x42')]({},_0x1920c8,_0x1eca5b[_0xc53e('0x48')]);var _0x599e0c={'where':_0x1920c8[_0xc53e('0x40')]};return db[_0xc53e('0x30')][_0xc53e('0x49')](_0x599e0c)[_0xc53e('0x18')](function(_0xa7d256){_0x215abe[_0xc53e('0x49')]=_0xa7d256;if(_0x1eca5b['query'][_0xc53e('0x4a')]){_0x1920c8[_0xc53e('0x4b')]=[{'all':!![]}];}return db[_0xc53e('0x30')]['findAll'](_0x1920c8);})[_0xc53e('0x18')](function(_0x1d2491){_0x215abe[_0xc53e('0x4c')]=_0x1d2491;return _0x215abe;})[_0xc53e('0x18')](respondWithFilteredResult(_0x12b32c,_0x1920c8))[_0xc53e('0x22')](handleError(_0x12b32c,null));};exports[_0xc53e('0x4d')]=function(_0x1a5a8f,_0x2ba2b4){var _0x34de2d={'raw':![],'where':{'id':_0x1a5a8f['params']['id']}},_0x430512={};_0x430512[_0xc53e('0x31')]=_[_0xc53e('0x32')](db[_0xc53e('0x30')][_0xc53e('0x4e')]);_0x430512[_0xc53e('0x33')]=_['keys'](_0x1a5a8f['query']);_0x430512[_0xc53e('0x3c')]=_['intersection'](_0x430512[_0xc53e('0x31')],_0x430512['query']);_0x34de2d[_0xc53e('0x38')]=_[_0xc53e('0x36')](_0x430512[_0xc53e('0x31')],qs['fields'](_0x1a5a8f[_0xc53e('0x33')][_0xc53e('0x37')]));_0x34de2d[_0xc53e('0x38')]=_0x34de2d['attributes'][_0xc53e('0x4f')]?_0x34de2d['attributes']:_0x430512[_0xc53e('0x31')];if(_0x1a5a8f[_0xc53e('0x33')]['includeAll']){_0x34de2d[_0xc53e('0x4b')]=[{'all':!![]}];}_0x34de2d=_[_0xc53e('0x42')]({},_0x34de2d,_0x1a5a8f['options']);return db[_0xc53e('0x30')][_0xc53e('0x50')](_0x34de2d)[_0xc53e('0x18')](handleEntityNotFound(_0x2ba2b4,null))[_0xc53e('0x18')](respondWithResult(_0x2ba2b4,null))[_0xc53e('0x22')](handleError(_0x2ba2b4,null));};exports[_0xc53e('0x51')]=function(_0x27b6d4,_0x117c9b){return db[_0xc53e('0x30')][_0xc53e('0x51')](_0x27b6d4[_0xc53e('0x52')],{})['then'](respondWithResult(_0x117c9b,0xc9))[_0xc53e('0x22')](handleError(_0x117c9b,null));};exports['update']=function(_0x37f459,_0x4f1d34){if(_0x37f459[_0xc53e('0x52')]['id']){delete _0x37f459[_0xc53e('0x52')]['id'];}return db['ZendeskAccount'][_0xc53e('0x50')]({'where':{'id':_0x37f459[_0xc53e('0x53')]['id']}})[_0xc53e('0x18')](handleEntityNotFound(_0x4f1d34,null))[_0xc53e('0x18')](saveUpdates(_0x37f459['body'],null))[_0xc53e('0x18')](respondWithResult(_0x4f1d34,null))[_0xc53e('0x22')](handleError(_0x4f1d34,null));};exports['destroy']=function(_0x5ea1da,_0x3c0aa1){return db['ZendeskAccount']['find']({'where':{'id':_0x5ea1da['params']['id']}})[_0xc53e('0x18')](handleEntityNotFound(_0x3c0aa1,null))['then'](removeEntity(_0x3c0aa1,null))[_0xc53e('0x22')](handleError(_0x3c0aa1,null));};exports['getConfigurations']=function(_0x26bab2,_0x4274da,_0x5fcd58){var _0x5cd004={};var _0x202a30={};var _0x4caf5f;var _0x55e068;return db[_0xc53e('0x30')][_0xc53e('0x54')]({'where':{'id':_0x26bab2[_0xc53e('0x53')]['id']}})[_0xc53e('0x18')](handleEntityNotFound(_0x4274da,null))[_0xc53e('0x18')](function(_0x2487ad){if(_0x2487ad){_0x4caf5f=_0x2487ad;_0x202a30[_0xc53e('0x31')]=_[_0xc53e('0x32')](db[_0xc53e('0x55')][_0xc53e('0x4e')]);_0x202a30[_0xc53e('0x33')]=_[_0xc53e('0x32')](_0x26bab2[_0xc53e('0x33')]);_0x202a30['filters']=_[_0xc53e('0x36')](_0x202a30['model'],_0x202a30[_0xc53e('0x33')]);_0x5cd004[_0xc53e('0x38')]=_[_0xc53e('0x36')](_0x202a30[_0xc53e('0x31')],qs[_0xc53e('0x37')](_0x26bab2[_0xc53e('0x33')][_0xc53e('0x37')]));_0x5cd004[_0xc53e('0x38')]=_0x5cd004['attributes']['length']?_0x5cd004['attributes']:_0x202a30[_0xc53e('0x31')];_0x5cd004[_0xc53e('0x3a')]=qs[_0xc53e('0x3b')](_0x26bab2[_0xc53e('0x33')][_0xc53e('0x3b')]);_0x5cd004[_0xc53e('0x40')]=qs[_0xc53e('0x3c')](_['pick'](_0x26bab2['query'],_0x202a30['filters']));if(_0x26bab2[_0xc53e('0x33')][_0xc53e('0x41')]){_0x5cd004['where']=_[_0xc53e('0x42')](_0x5cd004[_0xc53e('0x40')],{'$or':_[_0xc53e('0x43')](_0x5cd004[_0xc53e('0x38')],function(_0x22829b){var _0x20cb31={};_0x20cb31[_0x22829b]={'$like':'%'+_0x26bab2['query']['filter']+'%'};return _0x20cb31;})});}_0x5cd004=_[_0xc53e('0x42')]({},_0x5cd004,_0x26bab2[_0xc53e('0x48')]);return _0x4caf5f[_0xc53e('0x56')](_0x5cd004);}})[_0xc53e('0x18')](function(_0x29ee08){if(_0x29ee08){_0x55e068=_0x29ee08[_0xc53e('0x4f')];if(!_0x26bab2['query'][_0xc53e('0x57')](_0xc53e('0x58'))){_0x5cd004[_0xc53e('0x39')]=qs[_0xc53e('0x39')](_0x26bab2['query'][_0xc53e('0x39')]);_0x5cd004[_0xc53e('0x27')]=qs[_0xc53e('0x27')](_0x26bab2[_0xc53e('0x33')][_0xc53e('0x27')]);}return _0x4caf5f[_0xc53e('0x56')](_0x5cd004);}})['then'](function(_0x1020a0){if(_0x1020a0){return _0x1020a0?{'count':_0x55e068,'rows':_0x1020a0}:null;}})[_0xc53e('0x18')](respondWithResult(_0x4274da,null))[_0xc53e('0x22')](handleError(_0x4274da,null));};exports[_0xc53e('0x59')]=function(_0x548d63,_0x5e1f4a,_0x57edb){if(_0x548d63[_0xc53e('0x52')]['id']){delete _0x548d63[_0xc53e('0x52')]['id'];}return db[_0xc53e('0x30')]['findOne']({'where':{'id':_0x548d63[_0xc53e('0x53')]['id']}})['then'](handleEntityNotFound(_0x5e1f4a,null))[_0xc53e('0x18')](function(_0x58e1fa){if(_0x58e1fa){_0x548d63[_0xc53e('0x52')]['AccountId']=_0x58e1fa['id'];_0x548d63[_0xc53e('0x52')][_0xc53e('0x5a')]=integrations['getSubjects'](_0x548d63[_0xc53e('0x52')][_0xc53e('0x5b')],_0x548d63['body']['type']);_0x548d63[_0xc53e('0x52')][_0xc53e('0x5c')]=integrations['getDescriptions'](_0x548d63['body'][_0xc53e('0x5b')],_0x548d63['body'][_0xc53e('0x44')]);return db['ZendeskConfiguration'][_0xc53e('0x51')](_0x548d63[_0xc53e('0x52')],{'include':[{'model':db[_0xc53e('0x5d')],'as':_0xc53e('0x5a')},{'model':db[_0xc53e('0x5d')],'as':_0xc53e('0x5c')}]});}return null;})[_0xc53e('0x18')](respondWithResult(_0x5e1f4a,null))[_0xc53e('0x22')](handleError(_0x5e1f4a,null));};exports[_0xc53e('0x5e')]=function(_0x2cd553,_0x576c27,_0x38976f){return db['ZendeskAccount'][_0xc53e('0x54')]({'where':{'id':_0x2cd553[_0xc53e('0x53')]['id']},'attributes':['id',_0xc53e('0x5f'),_0xc53e('0x60'),_0xc53e('0x61'),_0xc53e('0x62'),_0xc53e('0x63')]})[_0xc53e('0x18')](handleEntityNotFound(_0x576c27,null))[_0xc53e('0x18')](function(_0x1f572b){if(_0x1f572b){var _0x5deb38={'method':_0xc53e('0x64'),'uri':util['format'](_0xc53e('0x65'),_0x1f572b[_0xc53e('0x63')],_0xc53e('0x66')),'json':!![]};switch(_0x1f572b['authType']){case _0xc53e('0x60'):_0x5deb38[_0xc53e('0x67')]={'Authorization':util[_0xc53e('0x68')](_0xc53e('0x69'),new Buffer(util[_0xc53e('0x68')]('%s:%s',_0x1f572b[_0xc53e('0x5f')],_0x1f572b[_0xc53e('0x60')]))['toString'](_0xc53e('0x6a')))};break;case _0xc53e('0x61'):_0x5deb38[_0xc53e('0x67')]={'Authorization':util['format'](_0xc53e('0x69'),new Buffer(util[_0xc53e('0x68')]('%s/token:%s',_0x1f572b[_0xc53e('0x5f')],_0x1f572b[_0xc53e('0x61')]))['toString']('base64'))};break;default:throw new db[(_0xc53e('0x6b'))]['ValidationError'](_0xc53e('0x6c'));}return rp(_0x5deb38);}})[_0xc53e('0x18')](function(_0x263d97){if(_0x263d97){var _0x58684c=[_0xc53e('0x6d'),_0xc53e('0x6e'),_0xc53e('0x6f'),'assignee'];_[_0xc53e('0x70')](_0x263d97[_0xc53e('0x66')],function(_0x1c24e6){return _0x58684c[_0xc53e('0x71')](_0x1c24e6[_0xc53e('0x44')]);});return{'count':_0x263d97['ticket_fields'][_0xc53e('0x4f')],'rows':_[_0xc53e('0x43')](_0x263d97[_0xc53e('0x66')],function(_0x2f0a47){return{'id':_0x2f0a47['id'],'name':_0x2f0a47[_0xc53e('0x72')]>0x7?_0x2f0a47[_0xc53e('0x73')]:_0x2f0a47[_0xc53e('0x44')],'custom':_0x2f0a47[_0xc53e('0x72')]>0x7?!![]:![],'options':_0x2f0a47[_0xc53e('0x74')]?_0x2f0a47['system_field_options']:[]};})};}})[_0xc53e('0x18')](respondWithResult(_0x576c27,null))[_0xc53e('0x22')](function(_0x1c06bc){var _0x402b94=_0x2cd553[_0xc53e('0x33')][_0xc53e('0x75')]?0x1f4:_0x1c06bc[_0xc53e('0x76')]||0x1f4;logger[_0xc53e('0x1e')](_0xc53e('0x77'),'getFields',_0x402b94,JSON[_0xc53e('0x1d')](_0x1c06bc));delete _0x1c06bc[_0xc53e('0x2d')];if(_0x402b94===0x191){_0x402b94=0x190;}_0x576c27[_0xc53e('0x24')](_0x402b94)[_0xc53e('0x2e')](_0x2cd553['query'][_0xc53e('0x75')]?{'message':_0xc53e('0x78'),'statusCode':_0x1c06bc[_0xc53e('0x76')]}:_0x1c06bc);});};
\ No newline at end of file
+var _0x598a=['base64','%s/token:%s','Sequelize','ValidationError','subject','assignee','remove','position','system_field_options','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','set','apply','reject','destroy','name','send','ZendeskAccount','model','keys','query','dateStart','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','where','pick','dateEnd','add','day','merge','filter','map','type','key','VIRTUAL','field','count','includeAll','include','rows','rawAttributes','options','find','create','body','update','params','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','getDescriptions','channel','ZendeskField','Descriptions','getFields','username','password','token','authType','remoteUri','format','ticket_fields','headers','Basic\x20%s','%s:%s','toString'];(function(_0x5f572d,_0x28819d){var _0x59f7a2=function(_0xe1dc9d){while(--_0xe1dc9d){_0x5f572d['push'](_0x5f572d['shift']());}};_0x59f7a2(++_0x28819d);}(_0x598a,0xfb));var _0xa598=function(_0x53c96b,_0x157db4){_0x53c96b=_0x53c96b-0x0;var _0x18480f=_0x598a[_0x53c96b];return _0x18480f;};'use strict';var pdf=require(_0xa598('0x0'));var emlformat=require(_0xa598('0x1'));var rimraf=require(_0xa598('0x2'));var zipdir=require(_0xa598('0x3'));var jsonpatch=require(_0xa598('0x4'));var rp=require('request-promise');var moment=require(_0xa598('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xa598('0x6'));var sox=require(_0xa598('0x7'));var csv=require(_0xa598('0x8'));var ejs=require(_0xa598('0x9'));var fs=require('fs');var _=require(_0xa598('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa598('0xb'));var deskjs=require(_0xa598('0xc'));var toCsv=require(_0xa598('0x8'));var querystring=require(_0xa598('0xd'));var Papa=require(_0xa598('0xe'));var Redis=require(_0xa598('0xf'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xa598('0x10'));var utils=require(_0xa598('0x11'));var config=require(_0xa598('0x12'));var db=require(_0xa598('0x13'))['db'];var integrations=require(_0xa598('0x14'));var jayson=require('jayson/promise');var client=jayson[_0xa598('0x15')][_0xa598('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x468710,_0x5041d4,_0xe8f905,_0x4919eb){return new BPromise(function(_0x3a88f9,_0x23b343){var _0xb3288a=_0x4919eb||client;return _0xb3288a[_0xa598('0x17')](_0x468710,_0xe8f905)[_0xa598('0x18')](function(_0x21f1d8){logger[_0xa598('0x19')](_0xa598('0x1a'),_0x5041d4,_0xa598('0x1b'));logger['debug'](_0xa598('0x1c'),_0x5041d4,_0xa598('0x1b'),JSON[_0xa598('0x1d')](_0x21f1d8));if(_0x21f1d8[_0xa598('0x1e')]){if(_0x21f1d8[_0xa598('0x1e')][_0xa598('0x1f')]===0x1f4){logger[_0xa598('0x1e')](_0xa598('0x1a'),_0x5041d4,_0x21f1d8[_0xa598('0x1e')][_0xa598('0x20')]);return _0x23b343(_0x21f1d8['error'][_0xa598('0x20')]);}logger[_0xa598('0x1e')](_0xa598('0x1a'),_0x5041d4,_0x21f1d8[_0xa598('0x1e')][_0xa598('0x20')]);return _0x3a88f9(_0x21f1d8[_0xa598('0x1e')]['message']);}else{logger['info'](_0xa598('0x1a'),_0x5041d4,'request\x20sent');_0x3a88f9(_0x21f1d8[_0xa598('0x21')][_0xa598('0x20')]);}})[_0xa598('0x22')](function(_0x2222b0){logger[_0xa598('0x1e')](_0xa598('0x1a'),_0x5041d4,_0x2222b0);_0x23b343(_0x2222b0);});});}function respondWithStatusCode(_0x483556,_0x44e211){_0x44e211=_0x44e211||0xcc;return function(_0x46d225){if(_0x46d225){return _0x483556[_0xa598('0x23')](_0x44e211);}return _0x483556[_0xa598('0x24')](_0x44e211)[_0xa598('0x25')]();};}function respondWithResult(_0x3c533a,_0x2c9a9b){_0x2c9a9b=_0x2c9a9b||0xc8;return function(_0xf366b1){if(_0xf366b1){return _0x3c533a['status'](_0x2c9a9b)[_0xa598('0x26')](_0xf366b1);}};}function respondWithFilteredResult(_0x414d2c,_0x499565){return function(_0x4ae8b1){if(_0x4ae8b1){var _0x35b669=_0x4ae8b1['count'],_0x559038=_0x499565[_0xa598('0x27')],_0x527c9f=_0x499565['offset']+_0x499565['limit'],_0x234a98;if(_0x527c9f>=_0x35b669){_0x527c9f=_0x35b669;_0x234a98=0xc8;}else{_0x234a98=0xce;}_0x414d2c[_0xa598('0x24')](_0x234a98);return _0x414d2c[_0xa598('0x28')]('Content-Range',_0x559038+'-'+_0x527c9f+'/'+_0x35b669)[_0xa598('0x26')](_0x4ae8b1);}return null;};}function patchUpdates(_0x2823f7){return function(_0x3cdc59){try{jsonpatch[_0xa598('0x29')](_0x3cdc59,_0x2823f7,!![]);}catch(_0x523392){return BPromise[_0xa598('0x2a')](_0x523392);}return _0x3cdc59['save']();};}function saveUpdates(_0x5d70aa,_0x587d11){return function(_0x25b8fe){if(_0x25b8fe){return _0x25b8fe['update'](_0x5d70aa)[_0xa598('0x18')](function(_0x3324df){return _0x3324df;});}return null;};}function removeEntity(_0x282294,_0x5a18ec){return function(_0x3ccace){if(_0x3ccace){return _0x3ccace[_0xa598('0x2b')]()[_0xa598('0x18')](function(){_0x282294[_0xa598('0x24')](0xcc)[_0xa598('0x25')]();});}};}function handleEntityNotFound(_0x4e5f9b,_0x430d21){return function(_0x39a83e){if(!_0x39a83e){_0x4e5f9b[_0xa598('0x23')](0x194);}return _0x39a83e;};}function handleError(_0x3fd327,_0x58e2a6){_0x58e2a6=_0x58e2a6||0x1f4;return function(_0x145fdf){logger[_0xa598('0x1e')](_0x145fdf['stack']);if(_0x145fdf['name']){delete _0x145fdf[_0xa598('0x2c')];}_0x3fd327[_0xa598('0x24')](_0x58e2a6)[_0xa598('0x2d')](_0x145fdf);};}exports['index']=function(_0x1fed30,_0x3928a1){var _0x556d2d={},_0x45e006={},_0x5b338e={'count':0x0,'rows':[]};var _0x16785f=db[_0xa598('0x2e')]['rawAttributes'];_0x45e006[_0xa598('0x2f')]=_[_0xa598('0x30')](_0x16785f);var _0x5eb96d={'dateStart':_0x1fed30[_0xa598('0x31')][_0xa598('0x32')],'dateEnd':_0x1fed30[_0xa598('0x31')]['dateEnd']};delete _0x1fed30[_0xa598('0x31')][_0xa598('0x32')];delete _0x1fed30[_0xa598('0x31')]['dateEnd'];_0x45e006[_0xa598('0x31')]=_['keys'](_0x1fed30[_0xa598('0x31')]);_0x45e006[_0xa598('0x33')]=_[_0xa598('0x34')](_0x45e006['model'],_0x45e006['query']);_0x556d2d['attributes']=_['intersection'](_0x45e006[_0xa598('0x2f')],qs[_0xa598('0x35')](_0x1fed30[_0xa598('0x31')][_0xa598('0x35')]));_0x556d2d[_0xa598('0x36')]=_0x556d2d[_0xa598('0x36')][_0xa598('0x37')]?_0x556d2d[_0xa598('0x36')]:_0x45e006[_0xa598('0x2f')];if(!_0x1fed30[_0xa598('0x31')]['hasOwnProperty'](_0xa598('0x38'))){_0x556d2d[_0xa598('0x39')]=qs[_0xa598('0x39')](_0x1fed30['query'][_0xa598('0x39')]);_0x556d2d[_0xa598('0x27')]=qs[_0xa598('0x27')](_0x1fed30[_0xa598('0x31')][_0xa598('0x27')]);}_0x556d2d[_0xa598('0x3a')]=qs['sort'](_0x1fed30['query'][_0xa598('0x3b')]);_0x556d2d[_0xa598('0x3c')]=qs['filters'](_[_0xa598('0x3d')](_0x1fed30['query'],_0x45e006['filters']));if(_0x5eb96d[_0xa598('0x32')]){if(_0x5eb96d['dateEnd']){_0x5eb96d[_0xa598('0x3e')]=moment(_0x5eb96d[_0xa598('0x3e')])[_0xa598('0x3f')](0x1,_0xa598('0x40'));}else{_0x5eb96d[_0xa598('0x3e')]=moment(_0x5eb96d[_0xa598('0x32')])[_0xa598('0x3f')](0x1,_0xa598('0x40'));}_[_0xa598('0x41')](_0x556d2d[_0xa598('0x3c')],{'createdAt':{'$gte':_0x5eb96d['dateStart'],'$lte':_0x5eb96d[_0xa598('0x3e')]}});}if(_0x1fed30[_0xa598('0x31')][_0xa598('0x42')]){_0x556d2d[_0xa598('0x3c')]=_[_0xa598('0x41')](_0x556d2d[_0xa598('0x3c')],{'$or':_[_0xa598('0x43')](_0x16785f,function(_0x53acb7){if(_0x53acb7[_0xa598('0x44')][_0xa598('0x45')]!==_0xa598('0x46')){var _0x1a8f63={};_0x1a8f63[_0x53acb7[_0xa598('0x47')]]={'$like':'%'+_0x1fed30[_0xa598('0x31')][_0xa598('0x42')]+'%'};return _0x1a8f63;}})});}_0x556d2d=_[_0xa598('0x41')]({},_0x556d2d,_0x1fed30['options']);var _0x2df028={'where':_0x556d2d['where']};return db[_0xa598('0x2e')][_0xa598('0x48')](_0x2df028)[_0xa598('0x18')](function(_0x19628b){_0x5b338e[_0xa598('0x48')]=_0x19628b;if(_0x1fed30[_0xa598('0x31')][_0xa598('0x49')]){_0x556d2d[_0xa598('0x4a')]=[{'all':!![]}];}return db[_0xa598('0x2e')]['findAll'](_0x556d2d);})['then'](function(_0x74239d){_0x5b338e[_0xa598('0x4b')]=_0x74239d;return _0x5b338e;})[_0xa598('0x18')](respondWithFilteredResult(_0x3928a1,_0x556d2d))[_0xa598('0x22')](handleError(_0x3928a1,null));};exports['show']=function(_0x550391,_0x5b3641){var _0xb40248={'raw':![],'where':{'id':_0x550391['params']['id']}},_0x2e102f={};_0x2e102f['model']=_['keys'](db[_0xa598('0x2e')][_0xa598('0x4c')]);_0x2e102f[_0xa598('0x31')]=_[_0xa598('0x30')](_0x550391['query']);_0x2e102f[_0xa598('0x33')]=_[_0xa598('0x34')](_0x2e102f[_0xa598('0x2f')],_0x2e102f[_0xa598('0x31')]);_0xb40248[_0xa598('0x36')]=_[_0xa598('0x34')](_0x2e102f[_0xa598('0x2f')],qs[_0xa598('0x35')](_0x550391[_0xa598('0x31')]['fields']));_0xb40248[_0xa598('0x36')]=_0xb40248['attributes']['length']?_0xb40248[_0xa598('0x36')]:_0x2e102f['model'];if(_0x550391['query'][_0xa598('0x49')]){_0xb40248[_0xa598('0x4a')]=[{'all':!![]}];}_0xb40248=_['merge']({},_0xb40248,_0x550391[_0xa598('0x4d')]);return db['ZendeskAccount'][_0xa598('0x4e')](_0xb40248)[_0xa598('0x18')](handleEntityNotFound(_0x5b3641,null))[_0xa598('0x18')](respondWithResult(_0x5b3641,null))[_0xa598('0x22')](handleError(_0x5b3641,null));};exports[_0xa598('0x4f')]=function(_0xa4d02b,_0x3d4e38){return db[_0xa598('0x2e')][_0xa598('0x4f')](_0xa4d02b[_0xa598('0x50')],{})[_0xa598('0x18')](respondWithResult(_0x3d4e38,0xc9))[_0xa598('0x22')](handleError(_0x3d4e38,null));};exports[_0xa598('0x51')]=function(_0x58a182,_0x12602){if(_0x58a182[_0xa598('0x50')]['id']){delete _0x58a182[_0xa598('0x50')]['id'];}return db['ZendeskAccount'][_0xa598('0x4e')]({'where':{'id':_0x58a182[_0xa598('0x52')]['id']}})[_0xa598('0x18')](handleEntityNotFound(_0x12602,null))['then'](saveUpdates(_0x58a182[_0xa598('0x50')],null))[_0xa598('0x18')](respondWithResult(_0x12602,null))['catch'](handleError(_0x12602,null));};exports['destroy']=function(_0x94e4f,_0x4d00c1){return db[_0xa598('0x2e')][_0xa598('0x4e')]({'where':{'id':_0x94e4f['params']['id']}})[_0xa598('0x18')](handleEntityNotFound(_0x4d00c1,null))[_0xa598('0x18')](removeEntity(_0x4d00c1,null))[_0xa598('0x22')](handleError(_0x4d00c1,null));};exports[_0xa598('0x53')]=function(_0x4c647f,_0x3eeb0d,_0x98cd12){var _0x3675f9={};var _0x40b541={};var _0x4838c4;var _0x5dd568;return db[_0xa598('0x2e')][_0xa598('0x54')]({'where':{'id':_0x4c647f['params']['id']}})[_0xa598('0x18')](handleEntityNotFound(_0x3eeb0d,null))[_0xa598('0x18')](function(_0x15c04a){if(_0x15c04a){_0x4838c4=_0x15c04a;_0x40b541['model']=_[_0xa598('0x30')](db[_0xa598('0x55')][_0xa598('0x4c')]);_0x40b541['query']=_[_0xa598('0x30')](_0x4c647f[_0xa598('0x31')]);_0x40b541['filters']=_[_0xa598('0x34')](_0x40b541['model'],_0x40b541['query']);_0x3675f9[_0xa598('0x36')]=_[_0xa598('0x34')](_0x40b541[_0xa598('0x2f')],qs[_0xa598('0x35')](_0x4c647f['query'][_0xa598('0x35')]));_0x3675f9[_0xa598('0x36')]=_0x3675f9[_0xa598('0x36')][_0xa598('0x37')]?_0x3675f9[_0xa598('0x36')]:_0x40b541[_0xa598('0x2f')];_0x3675f9[_0xa598('0x3a')]=qs[_0xa598('0x3b')](_0x4c647f[_0xa598('0x31')][_0xa598('0x3b')]);_0x3675f9['where']=qs[_0xa598('0x33')](_[_0xa598('0x3d')](_0x4c647f[_0xa598('0x31')],_0x40b541[_0xa598('0x33')]));if(_0x4c647f['query'][_0xa598('0x42')]){_0x3675f9[_0xa598('0x3c')]=_['merge'](_0x3675f9[_0xa598('0x3c')],{'$or':_['map'](_0x3675f9[_0xa598('0x36')],function(_0x4ff75d){var _0x4c493f={};_0x4c493f[_0x4ff75d]={'$like':'%'+_0x4c647f['query'][_0xa598('0x42')]+'%'};return _0x4c493f;})});}_0x3675f9=_[_0xa598('0x41')]({},_0x3675f9,_0x4c647f['options']);return _0x4838c4['getConfigurations'](_0x3675f9);}})[_0xa598('0x18')](function(_0x2cc54c){if(_0x2cc54c){_0x5dd568=_0x2cc54c[_0xa598('0x37')];if(!_0x4c647f[_0xa598('0x31')]['hasOwnProperty'](_0xa598('0x38'))){_0x3675f9[_0xa598('0x39')]=qs[_0xa598('0x39')](_0x4c647f[_0xa598('0x31')][_0xa598('0x39')]);_0x3675f9[_0xa598('0x27')]=qs['offset'](_0x4c647f[_0xa598('0x31')][_0xa598('0x27')]);}return _0x4838c4[_0xa598('0x53')](_0x3675f9);}})[_0xa598('0x18')](function(_0x2d0007){if(_0x2d0007){return _0x2d0007?{'count':_0x5dd568,'rows':_0x2d0007}:null;}})[_0xa598('0x18')](respondWithResult(_0x3eeb0d,null))[_0xa598('0x22')](handleError(_0x3eeb0d,null));};exports[_0xa598('0x56')]=function(_0x1b55b7,_0x42aeed,_0x400502){if(_0x1b55b7[_0xa598('0x50')]['id']){delete _0x1b55b7[_0xa598('0x50')]['id'];}return db[_0xa598('0x2e')][_0xa598('0x54')]({'where':{'id':_0x1b55b7['params']['id']}})['then'](handleEntityNotFound(_0x42aeed,null))[_0xa598('0x18')](function(_0x57c4d5){if(_0x57c4d5){_0x1b55b7['body'][_0xa598('0x57')]=_0x57c4d5['id'];_0x1b55b7['body'][_0xa598('0x58')]=integrations[_0xa598('0x59')](_0x1b55b7['body']['channel'],_0x1b55b7[_0xa598('0x50')][_0xa598('0x44')]);_0x1b55b7[_0xa598('0x50')]['Descriptions']=integrations[_0xa598('0x5a')](_0x1b55b7[_0xa598('0x50')][_0xa598('0x5b')],_0x1b55b7[_0xa598('0x50')][_0xa598('0x44')]);return db[_0xa598('0x55')]['create'](_0x1b55b7[_0xa598('0x50')],{'include':[{'model':db['ZendeskField'],'as':_0xa598('0x58')},{'model':db[_0xa598('0x5c')],'as':_0xa598('0x5d')}]});}return null;})[_0xa598('0x18')](respondWithResult(_0x42aeed,null))['catch'](handleError(_0x42aeed,null));};exports[_0xa598('0x5e')]=function(_0x48ac5e,_0x38ddb1,_0x28cbe7){return db[_0xa598('0x2e')][_0xa598('0x54')]({'where':{'id':_0x48ac5e[_0xa598('0x52')]['id']},'attributes':['id',_0xa598('0x5f'),_0xa598('0x60'),_0xa598('0x61'),_0xa598('0x62'),_0xa598('0x63')]})['then'](handleEntityNotFound(_0x38ddb1,null))['then'](function(_0x4479a0){if(_0x4479a0){var _0x311cca={'method':'GET','uri':util[_0xa598('0x64')]('%s%s',_0x4479a0[_0xa598('0x63')],_0xa598('0x65')),'json':!![]};switch(_0x4479a0[_0xa598('0x62')]){case _0xa598('0x60'):_0x311cca[_0xa598('0x66')]={'Authorization':util[_0xa598('0x64')](_0xa598('0x67'),new Buffer(util[_0xa598('0x64')](_0xa598('0x68'),_0x4479a0[_0xa598('0x5f')],_0x4479a0[_0xa598('0x60')]))[_0xa598('0x69')](_0xa598('0x6a')))};break;case _0xa598('0x61'):_0x311cca[_0xa598('0x66')]={'Authorization':util[_0xa598('0x64')](_0xa598('0x67'),new Buffer(util[_0xa598('0x64')](_0xa598('0x6b'),_0x4479a0[_0xa598('0x5f')],_0x4479a0[_0xa598('0x61')]))[_0xa598('0x69')](_0xa598('0x6a')))};break;default:throw new db[(_0xa598('0x6c'))][(_0xa598('0x6d'))]('Unknown\x20authentication\x20type');}return rp(_0x311cca);}})[_0xa598('0x18')](function(_0xecf761){if(_0xecf761){var _0x1e7df1=[_0xa598('0x6e'),'description','group',_0xa598('0x6f')];_[_0xa598('0x70')](_0xecf761['ticket_fields'],function(_0x4826d2){return _0x1e7df1['includes'](_0x4826d2[_0xa598('0x44')]);});return{'count':_0xecf761[_0xa598('0x65')][_0xa598('0x37')],'rows':_['map'](_0xecf761[_0xa598('0x65')],function(_0x14aed0){return{'id':_0x14aed0['id'],'name':_0x14aed0[_0xa598('0x71')]>0x7?_0x14aed0['title']:_0x14aed0[_0xa598('0x44')],'custom':_0x14aed0[_0xa598('0x71')]>0x7?!![]:![],'options':_0x14aed0[_0xa598('0x72')]?_0x14aed0[_0xa598('0x72')]:[]};})};}})['then'](respondWithResult(_0x38ddb1,null))['catch'](function(_0x5441c6){var _0x1f3acd=_0x48ac5e[_0xa598('0x31')]['test']?0x1f4:_0x5441c6[_0xa598('0x73')]||0x1f4;logger['error'](_0xa598('0x74'),_0xa598('0x5e'),_0x1f3acd,JSON[_0xa598('0x1d')](_0x5441c6));delete _0x5441c6[_0xa598('0x2c')];if(_0x1f3acd===0x191){_0x1f3acd=0x190;}_0x38ddb1['status'](_0x1f3acd)[_0xa598('0x2d')](_0x48ac5e[_0xa598('0x31')][_0xa598('0x75')]?{'message':_0xa598('0x76'),'statusCode':_0x5441c6[_0xa598('0x73')]}:_0x5441c6);});};
\ No newline at end of file
index 51115a5..ea0fe95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2854=['../../components/integrations/configuration','exports','define','ZendeskAccount','lodash','util','../../config/logger','moment','bluebird','request-promise','./intZendeskAccount.attributes'];(function(_0x1b0c08,_0xd7531f){var _0x123dbf=function(_0xc34596){while(--_0xc34596){_0x1b0c08['push'](_0x1b0c08['shift']());}};_0x123dbf(++_0xd7531f);}(_0x2854,0x138));var _0x4285=function(_0x4859b0,_0x5792c){_0x4859b0=_0x4859b0-0x0;var _0x122f91=_0x2854[_0x4859b0];return _0x122f91;};'use strict';var _=require(_0x4285('0x0'));var util=require(_0x4285('0x1'));var logger=require(_0x4285('0x2'))('api');var moment=require(_0x4285('0x3'));var BPromise=require(_0x4285('0x4'));var rp=require(_0x4285('0x5'));var attributes=require(_0x4285('0x6'));var integrations=require(_0x4285('0x7'));module[_0x4285('0x8')]=function(_0x53ec63,_0x282f9e){return _0x53ec63[_0x4285('0x9')](_0x4285('0xa'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4921=['exports','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x462816,_0x55ec9f){var _0x45b088=function(_0x270c6f){while(--_0x270c6f){_0x462816['push'](_0x462816['shift']());}};_0x45b088(++_0x55ec9f);}(_0x4921,0x8f));var _0x1492=function(_0x2920dd,_0x19d049){_0x2920dd=_0x2920dd-0x0;var _0x5d4e52=_0x4921[_0x2920dd];return _0x5d4e52;};'use strict';var _=require(_0x1492('0x0'));var util=require(_0x1492('0x1'));var logger=require(_0x1492('0x2'))(_0x1492('0x3'));var moment=require(_0x1492('0x4'));var BPromise=require(_0x1492('0x5'));var rp=require(_0x1492('0x6'));var attributes=require('./intZendeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x1492('0x7')]=function(_0x5a4adc,_0x4712a6){return _0x5a4adc['define'](_0x1492('0x8'),attributes,{'tableName':_0x1492('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 46ae71a..9d8b418 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb209=['then','info','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','GetZendeskAccount','ZendeskAccount','findAll','options','raw','attributes','limit','include','map','catch','where','model','ShowZendeskAccount','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0xb209,0x16e));var _0x9b20=function(_0x382168,_0xe03b6a){_0x382168=_0x382168-0x0;var _0x3ecf7e=_0xb209[_0x382168];return _0x3ecf7e;};'use strict';var _=require(_0x9b20('0x0'));var util=require('util');var moment=require(_0x9b20('0x1'));var BPromise=require(_0x9b20('0x2'));var rs=require(_0x9b20('0x3'));var fs=require('fs');var Redis=require(_0x9b20('0x4'));var db=require(_0x9b20('0x5'))['db'];var utils=require(_0x9b20('0x6'));var logger=require(_0x9b20('0x7'))(_0x9b20('0x8'));var config=require(_0x9b20('0x9'));var jayson=require(_0x9b20('0xa'));var client=jayson[_0x9b20('0xb')][_0x9b20('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x28eaa1,_0x5ea012,_0x279552){return new BPromise(function(_0x10dfd1,_0x48d4a8){return client[_0x9b20('0xd')](_0x28eaa1,_0x279552)[_0x9b20('0xe')](function(_0xdb916d){logger[_0x9b20('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x5ea012,_0x9b20('0x10'));logger[_0x9b20('0x11')](_0x9b20('0x12'),_0x5ea012,'request\x20sent',JSON[_0x9b20('0x13')](_0xdb916d));if(_0xdb916d[_0x9b20('0x14')]){if(_0xdb916d[_0x9b20('0x14')][_0x9b20('0x15')]===0x1f4){logger[_0x9b20('0x14')](_0x9b20('0x16'),_0x5ea012,_0xdb916d['error'][_0x9b20('0x17')]);return _0x48d4a8(_0xdb916d[_0x9b20('0x14')]['message']);}logger[_0x9b20('0x14')](_0x9b20('0x16'),_0x5ea012,_0xdb916d['error'][_0x9b20('0x17')]);return _0x10dfd1(_0xdb916d[_0x9b20('0x14')][_0x9b20('0x17')]);}else{logger[_0x9b20('0xf')](_0x9b20('0x16'),_0x5ea012,_0x9b20('0x10'));_0x10dfd1(_0xdb916d[_0x9b20('0x18')][_0x9b20('0x17')]);}})['catch'](function(_0x3cdc95){logger[_0x9b20('0x14')](_0x9b20('0x16'),_0x5ea012,_0x3cdc95);_0x48d4a8(_0x3cdc95);});});}exports[_0x9b20('0x19')]=function(_0x452ff4){var _0x2e4963=this;return new Promise(function(_0x3a8289,_0x567e2b){return db[_0x9b20('0x1a')][_0x9b20('0x1b')]({'raw':_0x452ff4[_0x9b20('0x1c')]?_0x452ff4[_0x9b20('0x1c')][_0x9b20('0x1d')]===undefined?!![]:![]:!![],'where':_0x452ff4[_0x9b20('0x1c')]?_0x452ff4[_0x9b20('0x1c')]['where']||null:null,'attributes':_0x452ff4['options']?_0x452ff4['options'][_0x9b20('0x1e')]||null:null,'limit':_0x452ff4[_0x9b20('0x1c')]?_0x452ff4[_0x9b20('0x1c')][_0x9b20('0x1f')]||null:null,'include':_0x452ff4[_0x9b20('0x1c')]?_0x452ff4['options'][_0x9b20('0x20')]?_['map'](_0x452ff4[_0x9b20('0x1c')][_0x9b20('0x20')],function(_0x582ad2){return{'model':db[_0x582ad2['model']],'as':_0x582ad2['as'],'attributes':_0x582ad2['attributes'],'include':_0x582ad2[_0x9b20('0x20')]?_[_0x9b20('0x21')](_0x582ad2[_0x9b20('0x20')],function(_0x18dfc1){return{'model':db[_0x18dfc1['model']],'as':_0x18dfc1['as'],'attributes':_0x18dfc1[_0x9b20('0x1e')],'include':_0x18dfc1['include']?_[_0x9b20('0x21')](_0x18dfc1[_0x9b20('0x20')],function(_0x3d56a1){return{'model':db[_0x3d56a1['model']],'as':_0x3d56a1['as'],'attributes':_0x3d56a1[_0x9b20('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9b20('0xe')](function(_0x5c00a4){logger[_0x9b20('0xf')]('GetZendeskAccount',_0x452ff4);logger[_0x9b20('0x11')]('GetZendeskAccount',_0x452ff4,JSON['stringify'](_0x5c00a4));_0x3a8289(_0x5c00a4);})[_0x9b20('0x22')](function(_0x1aaee9){logger[_0x9b20('0x14')]('GetZendeskAccount',_0x1aaee9[_0x9b20('0x17')],_0x452ff4);_0x567e2b(_0x2e4963[_0x9b20('0x14')](0x1f4,_0x1aaee9[_0x9b20('0x17')]));});});};exports['ShowZendeskAccount']=function(_0x1730f6){var _0x41b59f=this;return new Promise(function(_0x1cfd82,_0x5cb771){return db[_0x9b20('0x1a')]['find']({'raw':_0x1730f6[_0x9b20('0x1c')]?_0x1730f6[_0x9b20('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x1730f6[_0x9b20('0x1c')]?_0x1730f6[_0x9b20('0x1c')][_0x9b20('0x23')]||null:null,'attributes':_0x1730f6[_0x9b20('0x1c')]?_0x1730f6['options'][_0x9b20('0x1e')]||null:null,'include':_0x1730f6[_0x9b20('0x1c')]?_0x1730f6[_0x9b20('0x1c')][_0x9b20('0x20')]?_[_0x9b20('0x21')](_0x1730f6['options'][_0x9b20('0x20')],function(_0x5a8539){return{'model':db[_0x5a8539[_0x9b20('0x24')]],'as':_0x5a8539['as'],'attributes':_0x5a8539[_0x9b20('0x1e')],'include':_0x5a8539[_0x9b20('0x20')]?_['map'](_0x5a8539[_0x9b20('0x20')],function(_0x609a95){return{'model':db[_0x609a95[_0x9b20('0x24')]],'as':_0x609a95['as'],'attributes':_0x609a95[_0x9b20('0x1e')],'include':_0x609a95[_0x9b20('0x20')]?_['map'](_0x609a95[_0x9b20('0x20')],function(_0x2ee8b3){return{'model':db[_0x2ee8b3[_0x9b20('0x24')]],'as':_0x2ee8b3['as'],'attributes':_0x2ee8b3[_0x9b20('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9b20('0xe')](function(_0x22c997){logger[_0x9b20('0xf')](_0x9b20('0x25'),_0x1730f6);logger['debug'](_0x9b20('0x25'),_0x1730f6,JSON[_0x9b20('0x13')](_0x22c997));_0x1cfd82(_0x22c997);})['catch'](function(_0x56da67){logger['error']('ShowZendeskAccount',_0x56da67[_0x9b20('0x17')],_0x1730f6);_0x5cb771(_0x41b59f['error'](0x1f4,_0x56da67[_0x9b20('0x17')]));});});};
\ No newline at end of file
+var _0x8aeb=['attributes','limit','include','model','map','ShowZendeskAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','where'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8aeb,0x1ce));var _0xb8ae=function(_0x2731f0,_0x126b1b){_0x2731f0=_0x2731f0-0x0;var _0x36a180=_0x8aeb[_0x2731f0];return _0x36a180;};'use strict';var _=require(_0xb8ae('0x0'));var util=require(_0xb8ae('0x1'));var moment=require(_0xb8ae('0x2'));var BPromise=require(_0xb8ae('0x3'));var rs=require(_0xb8ae('0x4'));var fs=require('fs');var Redis=require(_0xb8ae('0x5'));var db=require(_0xb8ae('0x6'))['db'];var utils=require(_0xb8ae('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xb8ae('0x8'));var jayson=require(_0xb8ae('0x9'));var client=jayson['client'][_0xb8ae('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f380b,_0x1e3124,_0x883a53){return new BPromise(function(_0x49c3e8,_0x463594){return client['request'](_0x5f380b,_0x883a53)[_0xb8ae('0xb')](function(_0x57fe79){logger[_0xb8ae('0xc')](_0xb8ae('0xd'),_0x1e3124,_0xb8ae('0xe'));logger[_0xb8ae('0xf')](_0xb8ae('0x10'),_0x1e3124,_0xb8ae('0xe'),JSON[_0xb8ae('0x11')](_0x57fe79));if(_0x57fe79[_0xb8ae('0x12')]){if(_0x57fe79[_0xb8ae('0x12')][_0xb8ae('0x13')]===0x1f4){logger[_0xb8ae('0x12')](_0xb8ae('0xd'),_0x1e3124,_0x57fe79[_0xb8ae('0x12')][_0xb8ae('0x14')]);return _0x463594(_0x57fe79[_0xb8ae('0x12')][_0xb8ae('0x14')]);}logger['error'](_0xb8ae('0xd'),_0x1e3124,_0x57fe79['error'][_0xb8ae('0x14')]);return _0x49c3e8(_0x57fe79[_0xb8ae('0x12')]['message']);}else{logger[_0xb8ae('0xc')](_0xb8ae('0xd'),_0x1e3124,_0xb8ae('0xe'));_0x49c3e8(_0x57fe79[_0xb8ae('0x15')][_0xb8ae('0x14')]);}})[_0xb8ae('0x16')](function(_0x27a53c){logger[_0xb8ae('0x12')](_0xb8ae('0xd'),_0x1e3124,_0x27a53c);_0x463594(_0x27a53c);});});}exports[_0xb8ae('0x17')]=function(_0x1a6544){var _0xb2f222=this;return new Promise(function(_0x47b19c,_0x181d92){return db[_0xb8ae('0x18')][_0xb8ae('0x19')]({'raw':_0x1a6544[_0xb8ae('0x1a')]?_0x1a6544[_0xb8ae('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1a6544['options']?_0x1a6544[_0xb8ae('0x1a')][_0xb8ae('0x1b')]||null:null,'attributes':_0x1a6544[_0xb8ae('0x1a')]?_0x1a6544[_0xb8ae('0x1a')][_0xb8ae('0x1c')]||null:null,'limit':_0x1a6544[_0xb8ae('0x1a')]?_0x1a6544[_0xb8ae('0x1a')][_0xb8ae('0x1d')]||null:null,'include':_0x1a6544[_0xb8ae('0x1a')]?_0x1a6544[_0xb8ae('0x1a')][_0xb8ae('0x1e')]?_['map'](_0x1a6544[_0xb8ae('0x1a')][_0xb8ae('0x1e')],function(_0x1638e4){return{'model':db[_0x1638e4[_0xb8ae('0x1f')]],'as':_0x1638e4['as'],'attributes':_0x1638e4['attributes'],'include':_0x1638e4[_0xb8ae('0x1e')]?_[_0xb8ae('0x20')](_0x1638e4[_0xb8ae('0x1e')],function(_0x5a6667){return{'model':db[_0x5a6667[_0xb8ae('0x1f')]],'as':_0x5a6667['as'],'attributes':_0x5a6667[_0xb8ae('0x1c')],'include':_0x5a6667[_0xb8ae('0x1e')]?_[_0xb8ae('0x20')](_0x5a6667[_0xb8ae('0x1e')],function(_0xb81a8){return{'model':db[_0xb81a8[_0xb8ae('0x1f')]],'as':_0xb81a8['as'],'attributes':_0xb81a8[_0xb8ae('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb8ae('0xb')](function(_0x5dde6c){logger['info'](_0xb8ae('0x17'),_0x1a6544);logger[_0xb8ae('0xf')](_0xb8ae('0x17'),_0x1a6544,JSON['stringify'](_0x5dde6c));_0x47b19c(_0x5dde6c);})[_0xb8ae('0x16')](function(_0x2866e5){logger[_0xb8ae('0x12')]('GetZendeskAccount',_0x2866e5['message'],_0x1a6544);_0x181d92(_0xb2f222[_0xb8ae('0x12')](0x1f4,_0x2866e5[_0xb8ae('0x14')]));});});};exports[_0xb8ae('0x21')]=function(_0x242f02){var _0x1a23e0=this;return new Promise(function(_0x46d595,_0x2a6650){return db[_0xb8ae('0x18')][_0xb8ae('0x22')]({'raw':_0x242f02[_0xb8ae('0x1a')]?_0x242f02[_0xb8ae('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x242f02[_0xb8ae('0x1a')]?_0x242f02[_0xb8ae('0x1a')][_0xb8ae('0x1b')]||null:null,'attributes':_0x242f02[_0xb8ae('0x1a')]?_0x242f02[_0xb8ae('0x1a')]['attributes']||null:null,'include':_0x242f02[_0xb8ae('0x1a')]?_0x242f02[_0xb8ae('0x1a')][_0xb8ae('0x1e')]?_[_0xb8ae('0x20')](_0x242f02[_0xb8ae('0x1a')]['include'],function(_0x104dea){return{'model':db[_0x104dea[_0xb8ae('0x1f')]],'as':_0x104dea['as'],'attributes':_0x104dea[_0xb8ae('0x1c')],'include':_0x104dea[_0xb8ae('0x1e')]?_[_0xb8ae('0x20')](_0x104dea[_0xb8ae('0x1e')],function(_0x576ba3){return{'model':db[_0x576ba3[_0xb8ae('0x1f')]],'as':_0x576ba3['as'],'attributes':_0x576ba3[_0xb8ae('0x1c')],'include':_0x576ba3[_0xb8ae('0x1e')]?_[_0xb8ae('0x20')](_0x576ba3[_0xb8ae('0x1e')],function(_0x5d0142){return{'model':db[_0x5d0142[_0xb8ae('0x1f')]],'as':_0x5d0142['as'],'attributes':_0x5d0142[_0xb8ae('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb8ae('0xb')](function(_0x25c5be){logger[_0xb8ae('0xc')](_0xb8ae('0x21'),_0x242f02);logger['debug'](_0xb8ae('0x21'),_0x242f02,JSON[_0xb8ae('0x11')](_0x25c5be));_0x46d595(_0x25c5be);})[_0xb8ae('0x16')](function(_0x114fe2){logger[_0xb8ae('0x12')]('ShowZendeskAccount',_0x114fe2['message'],_0x242f02);_0x2a6650(_0x1a23e0[_0xb8ae('0x12')](0x1f4,_0x114fe2[_0xb8ae('0x14')]));});});};
\ No newline at end of file
index 3b33e40..5031314 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5a3=['/:id/descriptions','/:id/tags','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects'];(function(_0x406115,_0x19f7a1){var _0xbbabdb=function(_0x28554d){while(--_0x28554d){_0x406115['push'](_0x406115['shift']());}};_0xbbabdb(++_0x19f7a1);}(_0xe5a3,0x14b));var _0x3e5a=function(_0x2c0697,_0x15c276){_0x2c0697=_0x2c0697-0x0;var _0x4068d5=_0xe5a3[_0x2c0697];return _0x4068d5;};'use strict';var multer=require(_0x3e5a('0x0'));var util=require('util');var path=require(_0x3e5a('0x1'));var timeout=require(_0x3e5a('0x2'));var express=require(_0x3e5a('0x3'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3e5a('0x4'));var controller=require(_0x3e5a('0x5'));router[_0x3e5a('0x6')]('/',auth[_0x3e5a('0x7')](),controller[_0x3e5a('0x8')]);router[_0x3e5a('0x6')](_0x3e5a('0x9'),auth[_0x3e5a('0x7')](),controller[_0x3e5a('0xa')]);router[_0x3e5a('0x6')](_0x3e5a('0xb'),auth[_0x3e5a('0x7')](),controller[_0x3e5a('0xc')]);router['get'](_0x3e5a('0xd'),auth[_0x3e5a('0x7')](),controller['getSubjects']);router['get'](_0x3e5a('0xe'),auth[_0x3e5a('0x7')](),controller['getDescriptions']);router[_0x3e5a('0x6')](_0x3e5a('0xf'),auth[_0x3e5a('0x7')](),controller['getTags']);router[_0x3e5a('0x10')]('/',auth[_0x3e5a('0x7')](),controller[_0x3e5a('0x11')]);router[_0x3e5a('0x10')](_0x3e5a('0xf'),auth[_0x3e5a('0x7')](),controller['setTags']);router[_0x3e5a('0x12')](_0x3e5a('0x9'),auth['isAuthenticated'](),controller[_0x3e5a('0x13')]);router[_0x3e5a('0x14')]('/:id',auth[_0x3e5a('0x7')](),controller[_0x3e5a('0x15')]);module[_0x3e5a('0x16')]=router;
\ No newline at end of file
+var _0x770e=['/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create','setTags','delete','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x770e,0x194));var _0xe770=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x770e[_0x13e741];return _0x3f8bb3;};'use strict';var multer=require(_0xe770('0x0'));var util=require('util');var path=require(_0xe770('0x1'));var timeout=require(_0xe770('0x2'));var express=require(_0xe770('0x3'));var router=express['Router']();var auth=require(_0xe770('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe770('0x5'));var controller=require('./intZendeskConfiguration.controller');router[_0xe770('0x6')]('/',auth[_0xe770('0x7')](),controller['index']);router['get'](_0xe770('0x8'),auth[_0xe770('0x7')](),controller[_0xe770('0x9')]);router['get'](_0xe770('0xa'),auth[_0xe770('0x7')](),controller[_0xe770('0xb')]);router[_0xe770('0x6')](_0xe770('0xc'),auth[_0xe770('0x7')](),controller['getSubjects']);router[_0xe770('0x6')](_0xe770('0xd'),auth['isAuthenticated'](),controller[_0xe770('0xe')]);router[_0xe770('0x6')](_0xe770('0xf'),auth['isAuthenticated'](),controller[_0xe770('0x10')]);router[_0xe770('0x11')]('/',auth[_0xe770('0x7')](),controller[_0xe770('0x12')]);router[_0xe770('0x11')](_0xe770('0xf'),auth[_0xe770('0x7')](),controller[_0xe770('0x13')]);router['put'](_0xe770('0x8'),auth['isAuthenticated'](),controller['update']);router[_0xe770('0x14')](_0xe770('0x8'),auth[_0xe770('0x7')](),controller[_0xe770('0x15')]);module[_0xe770('0x16')]=router;
\ No newline at end of file
index 1d1d9c9..7f885d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6e9=['STRING','sequelize','exports'];(function(_0x57cedc,_0x87e2b0){var _0x8814fd=function(_0x4ea99a){while(--_0x4ea99a){_0x57cedc['push'](_0x57cedc['shift']());}};_0x8814fd(++_0x87e2b0);}(_0xa6e9,0x67));var _0x9a6e=function(_0x1dec2d,_0xc18e54){_0x1dec2d=_0x1dec2d-0x0;var _0x2fab53=_0xa6e9[_0x1dec2d];return _0x2fab53;};'use strict';var Sequelize=require(_0x9a6e('0x0'));module[_0x9a6e('0x1')]={'name':{'type':Sequelize[_0x9a6e('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1690=['exports','STRING','sequelize'];(function(_0x9bcc0b,_0x120f6c){var _0x195399=function(_0x5be8b9){while(--_0x5be8b9){_0x9bcc0b['push'](_0x9bcc0b['shift']());}};_0x195399(++_0x120f6c);}(_0x1690,0x188));var _0x0169=function(_0xee83db,_0x50965c){_0xee83db=_0xee83db-0x0;var _0x247ce5=_0x1690[_0xee83db];return _0x247ce5;};'use strict';var Sequelize=require(_0x0169('0x0'));module[_0x0169('0x1')]={'name':{'type':Sequelize[_0x0169('0x2')]},'description':{'type':Sequelize[_0x0169('0x2')]}};
\ No newline at end of file
index 49eac3c..04173cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc9d=['http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','count','offset','limit','set','Content-Range','apply','reject','save','update','stack','name','send','index','ZendeskConfiguration','rawAttributes','model','keys','query','dateStart','dateEnd','attributes','fields','length','hasOwnProperty','sort','filters','pick','add','day','merge','filter','where','key','VIRTUAL','options','includeAll','include','findAll','show','params','intersection','find','create','body','getFields','findOne','ZendeskField','order','map','nolimit','getSubjects','getDescriptions','getTags','setTags','ids','html-pdf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','jayson/promise','client'];(function(_0x26eb44,_0xe60f64){var _0x2aef22=function(_0x5295ec){while(--_0x5295ec){_0x26eb44['push'](_0x26eb44['shift']());}};_0x2aef22(++_0xe60f64);}(_0xcc9d,0x101));var _0xdcc9=function(_0xb707e8,_0x1c94c6){_0xb707e8=_0xb707e8-0x0;var _0x2174db=_0xcc9d[_0xb707e8];return _0x2174db;};'use strict';var pdf=require(_0xdcc9('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xdcc9('0x1'));var jsonpatch=require(_0xdcc9('0x2'));var rp=require(_0xdcc9('0x3'));var moment=require(_0xdcc9('0x4'));var BPromise=require(_0xdcc9('0x5'));var Mustache=require(_0xdcc9('0x6'));var util=require(_0xdcc9('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xdcc9('0x8'));var ejs=require(_0xdcc9('0x9'));var fs=require('fs');var _=require(_0xdcc9('0xa'));var squel=require(_0xdcc9('0xb'));var crypto=require(_0xdcc9('0xc'));var jsforce=require(_0xdcc9('0xd'));var deskjs=require(_0xdcc9('0xe'));var toCsv=require(_0xdcc9('0x8'));var querystring=require(_0xdcc9('0xf'));var Papa=require(_0xdcc9('0x10'));var Redis=require('ioredis');var qs=require(_0xdcc9('0x11'));var logger=require(_0xdcc9('0x12'))(_0xdcc9('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var jayson=require(_0xdcc9('0x14'));var client=jayson[_0xdcc9('0x15')][_0xdcc9('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x2dab23,_0x152d0f,_0x2f74ce,_0xb460eb){return new BPromise(function(_0x1b43bd,_0x5e4b4e){var _0x1e63e5=_0xb460eb||client;return _0x1e63e5[_0xdcc9('0x17')](_0x2dab23,_0x2f74ce)[_0xdcc9('0x18')](function(_0x5eae06){logger[_0xdcc9('0x19')](_0xdcc9('0x1a'),_0x152d0f,_0xdcc9('0x1b'));logger[_0xdcc9('0x1c')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x152d0f,_0xdcc9('0x1b'),JSON[_0xdcc9('0x1d')](_0x5eae06));if(_0x5eae06[_0xdcc9('0x1e')]){if(_0x5eae06[_0xdcc9('0x1e')][_0xdcc9('0x1f')]===0x1f4){logger[_0xdcc9('0x1e')](_0xdcc9('0x1a'),_0x152d0f,_0x5eae06['error']['message']);return _0x5e4b4e(_0x5eae06[_0xdcc9('0x1e')][_0xdcc9('0x20')]);}logger[_0xdcc9('0x1e')](_0xdcc9('0x1a'),_0x152d0f,_0x5eae06[_0xdcc9('0x1e')][_0xdcc9('0x20')]);return _0x1b43bd(_0x5eae06[_0xdcc9('0x1e')]['message']);}else{logger['info'](_0xdcc9('0x1a'),_0x152d0f,_0xdcc9('0x1b'));_0x1b43bd(_0x5eae06[_0xdcc9('0x21')][_0xdcc9('0x20')]);}})[_0xdcc9('0x22')](function(_0x50c5d8){logger[_0xdcc9('0x1e')](_0xdcc9('0x1a'),_0x152d0f,_0x50c5d8);_0x5e4b4e(_0x50c5d8);});});}function respondWithStatusCode(_0x63613f,_0x1986ce){_0x1986ce=_0x1986ce||0xcc;return function(_0x4fc510){if(_0x4fc510){return _0x63613f[_0xdcc9('0x23')](_0x1986ce);}return _0x63613f[_0xdcc9('0x24')](_0x1986ce)[_0xdcc9('0x25')]();};}function respondWithResult(_0x14acb2,_0x584ac7){_0x584ac7=_0x584ac7||0xc8;return function(_0x26016e){if(_0x26016e){return _0x14acb2['status'](_0x584ac7)['json'](_0x26016e);}};}function respondWithFilteredResult(_0x22f779,_0x27534e){return function(_0x14ae06){if(_0x14ae06){var _0x32822c=_0x14ae06[_0xdcc9('0x26')],_0x315c3d=_0x27534e[_0xdcc9('0x27')],_0x25e6c1=_0x27534e[_0xdcc9('0x27')]+_0x27534e[_0xdcc9('0x28')],_0x141391;if(_0x25e6c1>=_0x32822c){_0x25e6c1=_0x32822c;_0x141391=0xc8;}else{_0x141391=0xce;}_0x22f779[_0xdcc9('0x24')](_0x141391);return _0x22f779[_0xdcc9('0x29')](_0xdcc9('0x2a'),_0x315c3d+'-'+_0x25e6c1+'/'+_0x32822c)['json'](_0x14ae06);}return null;};}function patchUpdates(_0x30ca09){return function(_0x132394){try{jsonpatch[_0xdcc9('0x2b')](_0x132394,_0x30ca09,!![]);}catch(_0x1f369a){return BPromise[_0xdcc9('0x2c')](_0x1f369a);}return _0x132394[_0xdcc9('0x2d')]();};}function saveUpdates(_0x3e931,_0x581e78){return function(_0x1d4f4c){if(_0x1d4f4c){return _0x1d4f4c[_0xdcc9('0x2e')](_0x3e931)[_0xdcc9('0x18')](function(_0xf180ae){return _0xf180ae;});}return null;};}function removeEntity(_0x21d3ed,_0x45f2bb){return function(_0x4fb469){if(_0x4fb469){return _0x4fb469['destroy']()[_0xdcc9('0x18')](function(){_0x21d3ed['status'](0xcc)[_0xdcc9('0x25')]();});}};}function handleEntityNotFound(_0x311fec,_0x1d8706){return function(_0x521bc4){if(!_0x521bc4){_0x311fec[_0xdcc9('0x23')](0x194);}return _0x521bc4;};}function handleError(_0x5a6c35,_0xa502b0){_0xa502b0=_0xa502b0||0x1f4;return function(_0x372505){logger[_0xdcc9('0x1e')](_0x372505[_0xdcc9('0x2f')]);if(_0x372505[_0xdcc9('0x30')]){delete _0x372505[_0xdcc9('0x30')];}_0x5a6c35[_0xdcc9('0x24')](_0xa502b0)[_0xdcc9('0x31')](_0x372505);};}exports[_0xdcc9('0x32')]=function(_0x1b55f2,_0x220d7f){var _0x22f119={},_0x9edcea={},_0x459a94={'count':0x0,'rows':[]};var _0x4c0744=db[_0xdcc9('0x33')][_0xdcc9('0x34')];_0x9edcea[_0xdcc9('0x35')]=_[_0xdcc9('0x36')](_0x4c0744);var _0x22b525={'dateStart':_0x1b55f2[_0xdcc9('0x37')][_0xdcc9('0x38')],'dateEnd':_0x1b55f2['query']['dateEnd']};delete _0x1b55f2['query']['dateStart'];delete _0x1b55f2[_0xdcc9('0x37')][_0xdcc9('0x39')];_0x9edcea[_0xdcc9('0x37')]=_[_0xdcc9('0x36')](_0x1b55f2['query']);_0x9edcea['filters']=_['intersection'](_0x9edcea[_0xdcc9('0x35')],_0x9edcea[_0xdcc9('0x37')]);_0x22f119[_0xdcc9('0x3a')]=_['intersection'](_0x9edcea[_0xdcc9('0x35')],qs['fields'](_0x1b55f2['query'][_0xdcc9('0x3b')]));_0x22f119[_0xdcc9('0x3a')]=_0x22f119[_0xdcc9('0x3a')][_0xdcc9('0x3c')]?_0x22f119[_0xdcc9('0x3a')]:_0x9edcea[_0xdcc9('0x35')];if(!_0x1b55f2[_0xdcc9('0x37')][_0xdcc9('0x3d')]('nolimit')){_0x22f119[_0xdcc9('0x28')]=qs['limit'](_0x1b55f2['query'][_0xdcc9('0x28')]);_0x22f119[_0xdcc9('0x27')]=qs[_0xdcc9('0x27')](_0x1b55f2['query'][_0xdcc9('0x27')]);}_0x22f119['order']=qs['sort'](_0x1b55f2[_0xdcc9('0x37')][_0xdcc9('0x3e')]);_0x22f119['where']=qs[_0xdcc9('0x3f')](_[_0xdcc9('0x40')](_0x1b55f2[_0xdcc9('0x37')],_0x9edcea[_0xdcc9('0x3f')]));if(_0x22b525['dateStart']){if(_0x22b525[_0xdcc9('0x39')]){_0x22b525[_0xdcc9('0x39')]=moment(_0x22b525['dateEnd'])[_0xdcc9('0x41')](0x1,_0xdcc9('0x42'));}else{_0x22b525[_0xdcc9('0x39')]=moment(_0x22b525[_0xdcc9('0x38')])['add'](0x1,_0xdcc9('0x42'));}_[_0xdcc9('0x43')](_0x22f119['where'],{'createdAt':{'$gte':_0x22b525['dateStart'],'$lte':_0x22b525[_0xdcc9('0x39')]}});}if(_0x1b55f2['query'][_0xdcc9('0x44')]){_0x22f119[_0xdcc9('0x45')]=_[_0xdcc9('0x43')](_0x22f119[_0xdcc9('0x45')],{'$or':_['map'](_0x4c0744,function(_0x50c09b){if(_0x50c09b['type'][_0xdcc9('0x46')]!==_0xdcc9('0x47')){var _0xc3ca0={};_0xc3ca0[_0x50c09b['field']]={'$like':'%'+_0x1b55f2[_0xdcc9('0x37')][_0xdcc9('0x44')]+'%'};return _0xc3ca0;}})});}_0x22f119=_['merge']({},_0x22f119,_0x1b55f2[_0xdcc9('0x48')]);var _0x284a80={'where':_0x22f119['where']};return db['ZendeskConfiguration']['count'](_0x284a80)[_0xdcc9('0x18')](function(_0x2f6f50){_0x459a94[_0xdcc9('0x26')]=_0x2f6f50;if(_0x1b55f2[_0xdcc9('0x37')][_0xdcc9('0x49')]){_0x22f119[_0xdcc9('0x4a')]=[{'all':!![]}];}return db[_0xdcc9('0x33')][_0xdcc9('0x4b')](_0x22f119);})[_0xdcc9('0x18')](function(_0x58f5a5){_0x459a94['rows']=_0x58f5a5;return _0x459a94;})[_0xdcc9('0x18')](respondWithFilteredResult(_0x220d7f,_0x22f119))[_0xdcc9('0x22')](handleError(_0x220d7f,null));};exports[_0xdcc9('0x4c')]=function(_0x4786ef,_0x26f17c){var _0x11a1e5={'raw':![],'where':{'id':_0x4786ef[_0xdcc9('0x4d')]['id']}},_0x2cca86={};_0x2cca86['model']=_[_0xdcc9('0x36')](db[_0xdcc9('0x33')][_0xdcc9('0x34')]);_0x2cca86[_0xdcc9('0x37')]=_[_0xdcc9('0x36')](_0x4786ef['query']);_0x2cca86[_0xdcc9('0x3f')]=_[_0xdcc9('0x4e')](_0x2cca86[_0xdcc9('0x35')],_0x2cca86[_0xdcc9('0x37')]);_0x11a1e5[_0xdcc9('0x3a')]=_[_0xdcc9('0x4e')](_0x2cca86['model'],qs[_0xdcc9('0x3b')](_0x4786ef['query']['fields']));_0x11a1e5[_0xdcc9('0x3a')]=_0x11a1e5[_0xdcc9('0x3a')][_0xdcc9('0x3c')]?_0x11a1e5['attributes']:_0x2cca86[_0xdcc9('0x35')];if(_0x4786ef[_0xdcc9('0x37')]['includeAll']){_0x11a1e5[_0xdcc9('0x4a')]=[{'all':!![]}];}_0x11a1e5=_['merge']({},_0x11a1e5,_0x4786ef[_0xdcc9('0x48')]);return db['ZendeskConfiguration'][_0xdcc9('0x4f')](_0x11a1e5)['then'](handleEntityNotFound(_0x26f17c,null))[_0xdcc9('0x18')](respondWithResult(_0x26f17c,null))[_0xdcc9('0x22')](handleError(_0x26f17c,null));};exports['create']=function(_0x2feed0,_0x3e6d92){return db[_0xdcc9('0x33')][_0xdcc9('0x50')](_0x2feed0[_0xdcc9('0x51')],{})[_0xdcc9('0x18')](respondWithResult(_0x3e6d92,0xc9))[_0xdcc9('0x22')](handleError(_0x3e6d92,null));};exports['update']=function(_0x15b725,_0x2e07fd){if(_0x15b725[_0xdcc9('0x51')]['id']){delete _0x15b725[_0xdcc9('0x51')]['id'];}return db[_0xdcc9('0x33')]['find']({'where':{'id':_0x15b725[_0xdcc9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2e07fd,null))['then'](saveUpdates(_0x15b725['body'],null))[_0xdcc9('0x18')](respondWithResult(_0x2e07fd,null))['catch'](handleError(_0x2e07fd,null));};exports['destroy']=function(_0x370221,_0x2b6a46){return db[_0xdcc9('0x33')][_0xdcc9('0x4f')]({'where':{'id':_0x370221[_0xdcc9('0x4d')]['id']}})[_0xdcc9('0x18')](handleEntityNotFound(_0x2b6a46,null))[_0xdcc9('0x18')](removeEntity(_0x2b6a46,null))[_0xdcc9('0x22')](handleError(_0x2b6a46,null));};exports[_0xdcc9('0x52')]=function(_0x40558e,_0x115e2f,_0x2435b8){var _0x31f6fb={};var _0x248080={};var _0x4f4f0a;var _0x482be6;return db[_0xdcc9('0x33')][_0xdcc9('0x53')]({'where':{'id':_0x40558e['params']['id']}})[_0xdcc9('0x18')](handleEntityNotFound(_0x115e2f,null))[_0xdcc9('0x18')](function(_0x468bc3){if(_0x468bc3){_0x4f4f0a=_0x468bc3;_0x248080['model']=_[_0xdcc9('0x36')](db[_0xdcc9('0x54')][_0xdcc9('0x34')]);_0x248080[_0xdcc9('0x37')]=_[_0xdcc9('0x36')](_0x40558e['query']);_0x248080[_0xdcc9('0x3f')]=_[_0xdcc9('0x4e')](_0x248080[_0xdcc9('0x35')],_0x248080['query']);_0x31f6fb[_0xdcc9('0x3a')]=_[_0xdcc9('0x4e')](_0x248080[_0xdcc9('0x35')],qs[_0xdcc9('0x3b')](_0x40558e[_0xdcc9('0x37')]['fields']));_0x31f6fb[_0xdcc9('0x3a')]=_0x31f6fb[_0xdcc9('0x3a')][_0xdcc9('0x3c')]?_0x31f6fb[_0xdcc9('0x3a')]:_0x248080[_0xdcc9('0x35')];_0x31f6fb[_0xdcc9('0x55')]=qs['sort'](_0x40558e[_0xdcc9('0x37')][_0xdcc9('0x3e')]);_0x31f6fb[_0xdcc9('0x45')]=qs[_0xdcc9('0x3f')](_[_0xdcc9('0x40')](_0x40558e[_0xdcc9('0x37')],_0x248080[_0xdcc9('0x3f')]));if(_0x40558e['query'][_0xdcc9('0x44')]){_0x31f6fb['where']=_[_0xdcc9('0x43')](_0x31f6fb[_0xdcc9('0x45')],{'$or':_[_0xdcc9('0x56')](_0x31f6fb[_0xdcc9('0x3a')],function(_0x59148f){var _0x5bd3c4={};_0x5bd3c4[_0x59148f]={'$like':'%'+_0x40558e[_0xdcc9('0x37')][_0xdcc9('0x44')]+'%'};return _0x5bd3c4;})});}_0x31f6fb=_['merge']({},_0x31f6fb,_0x40558e[_0xdcc9('0x48')]);return _0x4f4f0a[_0xdcc9('0x52')](_0x31f6fb);}})[_0xdcc9('0x18')](function(_0x502bbf){if(_0x502bbf){_0x482be6=_0x502bbf[_0xdcc9('0x3c')];if(!_0x40558e['query'][_0xdcc9('0x3d')](_0xdcc9('0x57'))){_0x31f6fb[_0xdcc9('0x28')]=qs[_0xdcc9('0x28')](_0x40558e[_0xdcc9('0x37')][_0xdcc9('0x28')]);_0x31f6fb['offset']=qs[_0xdcc9('0x27')](_0x40558e[_0xdcc9('0x37')][_0xdcc9('0x27')]);}return _0x4f4f0a[_0xdcc9('0x52')](_0x31f6fb);}})['then'](function(_0x4f90c8){if(_0x4f90c8){return _0x4f90c8?{'count':_0x482be6,'rows':_0x4f90c8}:null;}})['then'](respondWithResult(_0x115e2f,null))['catch'](handleError(_0x115e2f,null));};exports['getSubjects']=function(_0x174666,_0x3bf643,_0x7f52b6){var _0x49076c={};var _0x5462bf={};var _0x446eb6;var _0xe7cdc9;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x174666['params']['id']}})[_0xdcc9('0x18')](handleEntityNotFound(_0x3bf643,null))[_0xdcc9('0x18')](function(_0x5c9cf8){if(_0x5c9cf8){_0x446eb6=_0x5c9cf8;_0x5462bf[_0xdcc9('0x35')]=_['keys'](db[_0xdcc9('0x54')]['rawAttributes']);_0x5462bf[_0xdcc9('0x37')]=_[_0xdcc9('0x36')](_0x174666[_0xdcc9('0x37')]);_0x5462bf[_0xdcc9('0x3f')]=_[_0xdcc9('0x4e')](_0x5462bf[_0xdcc9('0x35')],_0x5462bf[_0xdcc9('0x37')]);_0x49076c[_0xdcc9('0x3a')]=_['intersection'](_0x5462bf['model'],qs[_0xdcc9('0x3b')](_0x174666[_0xdcc9('0x37')][_0xdcc9('0x3b')]));_0x49076c[_0xdcc9('0x3a')]=_0x49076c[_0xdcc9('0x3a')][_0xdcc9('0x3c')]?_0x49076c[_0xdcc9('0x3a')]:_0x5462bf[_0xdcc9('0x35')];_0x49076c['order']=qs['sort'](_0x174666[_0xdcc9('0x37')][_0xdcc9('0x3e')]);_0x49076c['where']=qs[_0xdcc9('0x3f')](_[_0xdcc9('0x40')](_0x174666[_0xdcc9('0x37')],_0x5462bf[_0xdcc9('0x3f')]));if(_0x174666[_0xdcc9('0x37')][_0xdcc9('0x44')]){_0x49076c[_0xdcc9('0x45')]=_['merge'](_0x49076c[_0xdcc9('0x45')],{'$or':_[_0xdcc9('0x56')](_0x49076c[_0xdcc9('0x3a')],function(_0x24b76d){var _0x19854e={};_0x19854e[_0x24b76d]={'$like':'%'+_0x174666[_0xdcc9('0x37')][_0xdcc9('0x44')]+'%'};return _0x19854e;})});}_0x49076c=_[_0xdcc9('0x43')]({},_0x49076c,_0x174666['options']);return _0x446eb6[_0xdcc9('0x58')](_0x49076c);}})['then'](function(_0x2addea){if(_0x2addea){_0xe7cdc9=_0x2addea[_0xdcc9('0x3c')];if(!_0x174666[_0xdcc9('0x37')][_0xdcc9('0x3d')]('nolimit')){_0x49076c[_0xdcc9('0x28')]=qs[_0xdcc9('0x28')](_0x174666[_0xdcc9('0x37')]['limit']);_0x49076c['offset']=qs[_0xdcc9('0x27')](_0x174666[_0xdcc9('0x37')]['offset']);}return _0x446eb6[_0xdcc9('0x58')](_0x49076c);}})[_0xdcc9('0x18')](function(_0x329ebe){if(_0x329ebe){return _0x329ebe?{'count':_0xe7cdc9,'rows':_0x329ebe}:null;}})[_0xdcc9('0x18')](respondWithResult(_0x3bf643,null))['catch'](handleError(_0x3bf643,null));};exports[_0xdcc9('0x59')]=function(_0xfbae77,_0x2d0a50,_0x13d60f){var _0x3d7b4b={};var _0x3cd479={};var _0x1d9616;var _0xd41702;return db[_0xdcc9('0x33')][_0xdcc9('0x53')]({'where':{'id':_0xfbae77[_0xdcc9('0x4d')]['id']}})[_0xdcc9('0x18')](handleEntityNotFound(_0x2d0a50,null))[_0xdcc9('0x18')](function(_0x534cae){if(_0x534cae){_0x1d9616=_0x534cae;_0x3cd479['model']=_[_0xdcc9('0x36')](db[_0xdcc9('0x54')][_0xdcc9('0x34')]);_0x3cd479[_0xdcc9('0x37')]=_[_0xdcc9('0x36')](_0xfbae77[_0xdcc9('0x37')]);_0x3cd479[_0xdcc9('0x3f')]=_[_0xdcc9('0x4e')](_0x3cd479[_0xdcc9('0x35')],_0x3cd479['query']);_0x3d7b4b[_0xdcc9('0x3a')]=_[_0xdcc9('0x4e')](_0x3cd479[_0xdcc9('0x35')],qs[_0xdcc9('0x3b')](_0xfbae77[_0xdcc9('0x37')][_0xdcc9('0x3b')]));_0x3d7b4b[_0xdcc9('0x3a')]=_0x3d7b4b[_0xdcc9('0x3a')][_0xdcc9('0x3c')]?_0x3d7b4b[_0xdcc9('0x3a')]:_0x3cd479[_0xdcc9('0x35')];_0x3d7b4b[_0xdcc9('0x55')]=qs[_0xdcc9('0x3e')](_0xfbae77['query'][_0xdcc9('0x3e')]);_0x3d7b4b['where']=qs['filters'](_['pick'](_0xfbae77[_0xdcc9('0x37')],_0x3cd479[_0xdcc9('0x3f')]));if(_0xfbae77[_0xdcc9('0x37')][_0xdcc9('0x44')]){_0x3d7b4b['where']=_[_0xdcc9('0x43')](_0x3d7b4b['where'],{'$or':_[_0xdcc9('0x56')](_0x3d7b4b[_0xdcc9('0x3a')],function(_0x599903){var _0x20aea6={};_0x20aea6[_0x599903]={'$like':'%'+_0xfbae77[_0xdcc9('0x37')][_0xdcc9('0x44')]+'%'};return _0x20aea6;})});}_0x3d7b4b=_[_0xdcc9('0x43')]({},_0x3d7b4b,_0xfbae77['options']);return _0x1d9616['getDescriptions'](_0x3d7b4b);}})['then'](function(_0x33ad22){if(_0x33ad22){_0xd41702=_0x33ad22[_0xdcc9('0x3c')];if(!_0xfbae77[_0xdcc9('0x37')][_0xdcc9('0x3d')](_0xdcc9('0x57'))){_0x3d7b4b['limit']=qs['limit'](_0xfbae77[_0xdcc9('0x37')]['limit']);_0x3d7b4b[_0xdcc9('0x27')]=qs[_0xdcc9('0x27')](_0xfbae77['query']['offset']);}return _0x1d9616[_0xdcc9('0x59')](_0x3d7b4b);}})[_0xdcc9('0x18')](function(_0x587ffb){if(_0x587ffb){return _0x587ffb?{'count':_0xd41702,'rows':_0x587ffb}:null;}})[_0xdcc9('0x18')](respondWithResult(_0x2d0a50,null))[_0xdcc9('0x22')](handleError(_0x2d0a50,null));};exports['getTags']=function(_0x2683b0,_0x3662c8,_0x35609a){var _0x244873={};var _0x37fc6f={};var _0x4f405f;var _0xe2fe59;return db[_0xdcc9('0x33')][_0xdcc9('0x53')]({'where':{'id':_0x2683b0[_0xdcc9('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3662c8,null))[_0xdcc9('0x18')](function(_0x3a0c01){if(_0x3a0c01){_0x4f405f=_0x3a0c01;_0x37fc6f[_0xdcc9('0x35')]=_[_0xdcc9('0x36')](db['Tag'][_0xdcc9('0x34')]);_0x37fc6f['query']=_[_0xdcc9('0x36')](_0x2683b0['query']);_0x37fc6f[_0xdcc9('0x3f')]=_['intersection'](_0x37fc6f[_0xdcc9('0x35')],_0x37fc6f['query']);_0x244873['attributes']=_['intersection'](_0x37fc6f[_0xdcc9('0x35')],qs['fields'](_0x2683b0[_0xdcc9('0x37')][_0xdcc9('0x3b')]));_0x244873[_0xdcc9('0x3a')]=_0x244873[_0xdcc9('0x3a')][_0xdcc9('0x3c')]?_0x244873['attributes']:_0x37fc6f[_0xdcc9('0x35')];_0x244873[_0xdcc9('0x55')]=qs['sort'](_0x2683b0[_0xdcc9('0x37')][_0xdcc9('0x3e')]);_0x244873['where']=qs['filters'](_[_0xdcc9('0x40')](_0x2683b0[_0xdcc9('0x37')],_0x37fc6f[_0xdcc9('0x3f')]));if(_0x2683b0[_0xdcc9('0x37')]['filter']){_0x244873[_0xdcc9('0x45')]=_[_0xdcc9('0x43')](_0x244873[_0xdcc9('0x45')],{'$or':_[_0xdcc9('0x56')](_0x244873[_0xdcc9('0x3a')],function(_0x415189){var _0x11583c={};_0x11583c[_0x415189]={'$like':'%'+_0x2683b0[_0xdcc9('0x37')]['filter']+'%'};return _0x11583c;})});}_0x244873=_[_0xdcc9('0x43')]({},_0x244873,_0x2683b0[_0xdcc9('0x48')]);return _0x4f405f[_0xdcc9('0x5a')](_0x244873);}})[_0xdcc9('0x18')](function(_0x51795b){if(_0x51795b){_0xe2fe59=_0x51795b[_0xdcc9('0x3c')];if(!_0x2683b0[_0xdcc9('0x37')][_0xdcc9('0x3d')]('nolimit')){_0x244873[_0xdcc9('0x28')]=qs[_0xdcc9('0x28')](_0x2683b0['query'][_0xdcc9('0x28')]);_0x244873['offset']=qs[_0xdcc9('0x27')](_0x2683b0[_0xdcc9('0x37')][_0xdcc9('0x27')]);}return _0x4f405f[_0xdcc9('0x5a')](_0x244873);}})[_0xdcc9('0x18')](function(_0x16d09e){if(_0x16d09e){return _0x16d09e?{'count':_0xe2fe59,'rows':_0x16d09e}:null;}})[_0xdcc9('0x18')](respondWithResult(_0x3662c8,null))[_0xdcc9('0x22')](handleError(_0x3662c8,null));};exports[_0xdcc9('0x5b')]=function(_0x28a395,_0x354308,_0x6951f8){if(_0x28a395['body']['id']){delete _0x28a395[_0xdcc9('0x51')]['id'];}return db[_0xdcc9('0x33')][_0xdcc9('0x53')]({'where':{'id':_0x28a395['params']['id']}})[_0xdcc9('0x18')](handleEntityNotFound(_0x354308,null))[_0xdcc9('0x18')](function(_0x25d9ca){if(_0x25d9ca){return _0x25d9ca[_0xdcc9('0x5b')](_0x28a395[_0xdcc9('0x51')][_0xdcc9('0x5c')]||[]);}return null;})[_0xdcc9('0x18')](respondWithResult(_0x354308,null))[_0xdcc9('0x22')](handleError(_0x354308,null));};
\ No newline at end of file
+var _0x57b5=['setTags','ids','html-pdf','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','request','then','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','count','offset','status','set','Content-Range','json','apply','reject','save','update','destroy','stack','name','send','index','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','add','day','where','filter','map','type','key','VIRTUAL','field','merge','options','ZendeskConfiguration','includeAll','include','findAll','rows','show','params','find','create','body','getFields','findOne','ZendeskField','order','limit','getSubjects','getDescriptions','getTags','Tag'];(function(_0x7f71c3,_0x7e57f2){var _0x2cfb77=function(_0x10f0df){while(--_0x10f0df){_0x7f71c3['push'](_0x7f71c3['shift']());}};_0x2cfb77(++_0x7e57f2);}(_0x57b5,0x65));var _0x557b=function(_0x161f03,_0x5d141b){_0x161f03=_0x161f03-0x0;var _0x2f396f=_0x57b5[_0x161f03];return _0x2f396f;};'use strict';var pdf=require(_0x557b('0x0'));var emlformat=require(_0x557b('0x1'));var rimraf=require(_0x557b('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x557b('0x3'));var moment=require(_0x557b('0x4'));var BPromise=require(_0x557b('0x5'));var Mustache=require(_0x557b('0x6'));var util=require('util');var path=require(_0x557b('0x7'));var sox=require(_0x557b('0x8'));var csv=require(_0x557b('0x9'));var ejs=require(_0x557b('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x557b('0xb'));var crypto=require(_0x557b('0xc'));var jsforce=require(_0x557b('0xd'));var deskjs=require(_0x557b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x557b('0xf'));var Papa=require(_0x557b('0x10'));var Redis=require(_0x557b('0x11'));var qs=require(_0x557b('0x12'));var logger=require('../../config/logger')(_0x557b('0x13'));var utils=require(_0x557b('0x14'));var config=require(_0x557b('0x15'));var db=require(_0x557b('0x16'))['db'];var jayson=require(_0x557b('0x17'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x18f65a,_0x2eb58c,_0x279d07,_0x24377d){return new BPromise(function(_0xfa4faf,_0x35668c){var _0x20517a=_0x24377d||client;return _0x20517a[_0x557b('0x18')](_0x18f65a,_0x279d07)[_0x557b('0x19')](function(_0x2e1b12){logger['info'](_0x557b('0x1a'),_0x2eb58c,'request\x20sent');logger[_0x557b('0x1b')](_0x557b('0x1c'),_0x2eb58c,_0x557b('0x1d'),JSON[_0x557b('0x1e')](_0x2e1b12));if(_0x2e1b12[_0x557b('0x1f')]){if(_0x2e1b12[_0x557b('0x1f')][_0x557b('0x20')]===0x1f4){logger[_0x557b('0x1f')](_0x557b('0x1a'),_0x2eb58c,_0x2e1b12[_0x557b('0x1f')]['message']);return _0x35668c(_0x2e1b12[_0x557b('0x1f')]['message']);}logger[_0x557b('0x1f')](_0x557b('0x1a'),_0x2eb58c,_0x2e1b12[_0x557b('0x1f')][_0x557b('0x21')]);return _0xfa4faf(_0x2e1b12[_0x557b('0x1f')][_0x557b('0x21')]);}else{logger['info'](_0x557b('0x1a'),_0x2eb58c,_0x557b('0x1d'));_0xfa4faf(_0x2e1b12[_0x557b('0x22')][_0x557b('0x21')]);}})[_0x557b('0x23')](function(_0x357b8c){logger[_0x557b('0x1f')](_0x557b('0x1a'),_0x2eb58c,_0x357b8c);_0x35668c(_0x357b8c);});});}function respondWithStatusCode(_0x1d548f,_0x53a242){_0x53a242=_0x53a242||0xcc;return function(_0x4b55fe){if(_0x4b55fe){return _0x1d548f[_0x557b('0x24')](_0x53a242);}return _0x1d548f['status'](_0x53a242)['end']();};}function respondWithResult(_0x4591dd,_0x109fc1){_0x109fc1=_0x109fc1||0xc8;return function(_0x34144e){if(_0x34144e){return _0x4591dd['status'](_0x109fc1)['json'](_0x34144e);}};}function respondWithFilteredResult(_0x96d5b2,_0x21c38d){return function(_0x508434){if(_0x508434){var _0x1f730d=_0x508434[_0x557b('0x25')],_0x222b87=_0x21c38d['offset'],_0x4dadd5=_0x21c38d[_0x557b('0x26')]+_0x21c38d['limit'],_0xda8f46;if(_0x4dadd5>=_0x1f730d){_0x4dadd5=_0x1f730d;_0xda8f46=0xc8;}else{_0xda8f46=0xce;}_0x96d5b2[_0x557b('0x27')](_0xda8f46);return _0x96d5b2[_0x557b('0x28')](_0x557b('0x29'),_0x222b87+'-'+_0x4dadd5+'/'+_0x1f730d)[_0x557b('0x2a')](_0x508434);}return null;};}function patchUpdates(_0x2e1c2c){return function(_0x90660){try{jsonpatch[_0x557b('0x2b')](_0x90660,_0x2e1c2c,!![]);}catch(_0x340d80){return BPromise[_0x557b('0x2c')](_0x340d80);}return _0x90660[_0x557b('0x2d')]();};}function saveUpdates(_0x33327e,_0x4e3caa){return function(_0x32a3ad){if(_0x32a3ad){return _0x32a3ad[_0x557b('0x2e')](_0x33327e)[_0x557b('0x19')](function(_0x591497){return _0x591497;});}return null;};}function removeEntity(_0x4e5c65,_0x22ff06){return function(_0x5a3cfa){if(_0x5a3cfa){return _0x5a3cfa[_0x557b('0x2f')]()['then'](function(){_0x4e5c65[_0x557b('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14fc98,_0x43ed29){return function(_0x2e890e){if(!_0x2e890e){_0x14fc98[_0x557b('0x24')](0x194);}return _0x2e890e;};}function handleError(_0x4c48e1,_0x294b79){_0x294b79=_0x294b79||0x1f4;return function(_0x357f6f){logger['error'](_0x357f6f[_0x557b('0x30')]);if(_0x357f6f[_0x557b('0x31')]){delete _0x357f6f[_0x557b('0x31')];}_0x4c48e1['status'](_0x294b79)[_0x557b('0x32')](_0x357f6f);};}exports[_0x557b('0x33')]=function(_0xc7beaa,_0x43fa7d){var _0x2ac3dd={},_0x4c22d6={},_0x251fbe={'count':0x0,'rows':[]};var _0x13b117=db['ZendeskConfiguration'][_0x557b('0x34')];_0x4c22d6[_0x557b('0x35')]=_[_0x557b('0x36')](_0x13b117);var _0x2a94f4={'dateStart':_0xc7beaa[_0x557b('0x37')][_0x557b('0x38')],'dateEnd':_0xc7beaa[_0x557b('0x37')][_0x557b('0x39')]};delete _0xc7beaa[_0x557b('0x37')][_0x557b('0x38')];delete _0xc7beaa[_0x557b('0x37')][_0x557b('0x39')];_0x4c22d6['query']=_[_0x557b('0x36')](_0xc7beaa[_0x557b('0x37')]);_0x4c22d6[_0x557b('0x3a')]=_[_0x557b('0x3b')](_0x4c22d6[_0x557b('0x35')],_0x4c22d6[_0x557b('0x37')]);_0x2ac3dd[_0x557b('0x3c')]=_[_0x557b('0x3b')](_0x4c22d6[_0x557b('0x35')],qs[_0x557b('0x3d')](_0xc7beaa['query'][_0x557b('0x3d')]));_0x2ac3dd[_0x557b('0x3c')]=_0x2ac3dd[_0x557b('0x3c')][_0x557b('0x3e')]?_0x2ac3dd[_0x557b('0x3c')]:_0x4c22d6[_0x557b('0x35')];if(!_0xc7beaa[_0x557b('0x37')][_0x557b('0x3f')](_0x557b('0x40'))){_0x2ac3dd['limit']=qs['limit'](_0xc7beaa[_0x557b('0x37')]['limit']);_0x2ac3dd[_0x557b('0x26')]=qs[_0x557b('0x26')](_0xc7beaa[_0x557b('0x37')]['offset']);}_0x2ac3dd['order']=qs[_0x557b('0x41')](_0xc7beaa[_0x557b('0x37')][_0x557b('0x41')]);_0x2ac3dd['where']=qs['filters'](_[_0x557b('0x42')](_0xc7beaa[_0x557b('0x37')],_0x4c22d6[_0x557b('0x3a')]));if(_0x2a94f4[_0x557b('0x38')]){if(_0x2a94f4[_0x557b('0x39')]){_0x2a94f4[_0x557b('0x39')]=moment(_0x2a94f4['dateEnd'])[_0x557b('0x43')](0x1,_0x557b('0x44'));}else{_0x2a94f4[_0x557b('0x39')]=moment(_0x2a94f4[_0x557b('0x38')])[_0x557b('0x43')](0x1,_0x557b('0x44'));}_['merge'](_0x2ac3dd[_0x557b('0x45')],{'createdAt':{'$gte':_0x2a94f4[_0x557b('0x38')],'$lte':_0x2a94f4[_0x557b('0x39')]}});}if(_0xc7beaa[_0x557b('0x37')][_0x557b('0x46')]){_0x2ac3dd[_0x557b('0x45')]=_['merge'](_0x2ac3dd[_0x557b('0x45')],{'$or':_[_0x557b('0x47')](_0x13b117,function(_0x474f54){if(_0x474f54[_0x557b('0x48')][_0x557b('0x49')]!==_0x557b('0x4a')){var _0x44213b={};_0x44213b[_0x474f54[_0x557b('0x4b')]]={'$like':'%'+_0xc7beaa[_0x557b('0x37')][_0x557b('0x46')]+'%'};return _0x44213b;}})});}_0x2ac3dd=_[_0x557b('0x4c')]({},_0x2ac3dd,_0xc7beaa[_0x557b('0x4d')]);var _0x18b8ed={'where':_0x2ac3dd[_0x557b('0x45')]};return db[_0x557b('0x4e')]['count'](_0x18b8ed)[_0x557b('0x19')](function(_0x184518){_0x251fbe[_0x557b('0x25')]=_0x184518;if(_0xc7beaa['query'][_0x557b('0x4f')]){_0x2ac3dd[_0x557b('0x50')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0x557b('0x51')](_0x2ac3dd);})[_0x557b('0x19')](function(_0x2a01f3){_0x251fbe[_0x557b('0x52')]=_0x2a01f3;return _0x251fbe;})['then'](respondWithFilteredResult(_0x43fa7d,_0x2ac3dd))[_0x557b('0x23')](handleError(_0x43fa7d,null));};exports[_0x557b('0x53')]=function(_0x3d3b36,_0x4722ce){var _0x3d291f={'raw':![],'where':{'id':_0x3d3b36[_0x557b('0x54')]['id']}},_0x31aa79={};_0x31aa79[_0x557b('0x35')]=_[_0x557b('0x36')](db[_0x557b('0x4e')][_0x557b('0x34')]);_0x31aa79[_0x557b('0x37')]=_[_0x557b('0x36')](_0x3d3b36['query']);_0x31aa79[_0x557b('0x3a')]=_['intersection'](_0x31aa79[_0x557b('0x35')],_0x31aa79[_0x557b('0x37')]);_0x3d291f[_0x557b('0x3c')]=_['intersection'](_0x31aa79[_0x557b('0x35')],qs[_0x557b('0x3d')](_0x3d3b36['query'][_0x557b('0x3d')]));_0x3d291f[_0x557b('0x3c')]=_0x3d291f[_0x557b('0x3c')][_0x557b('0x3e')]?_0x3d291f[_0x557b('0x3c')]:_0x31aa79[_0x557b('0x35')];if(_0x3d3b36['query'][_0x557b('0x4f')]){_0x3d291f[_0x557b('0x50')]=[{'all':!![]}];}_0x3d291f=_['merge']({},_0x3d291f,_0x3d3b36[_0x557b('0x4d')]);return db[_0x557b('0x4e')][_0x557b('0x55')](_0x3d291f)[_0x557b('0x19')](handleEntityNotFound(_0x4722ce,null))['then'](respondWithResult(_0x4722ce,null))[_0x557b('0x23')](handleError(_0x4722ce,null));};exports[_0x557b('0x56')]=function(_0x411ae9,_0xdf4fb9){return db['ZendeskConfiguration'][_0x557b('0x56')](_0x411ae9[_0x557b('0x57')],{})['then'](respondWithResult(_0xdf4fb9,0xc9))[_0x557b('0x23')](handleError(_0xdf4fb9,null));};exports[_0x557b('0x2e')]=function(_0x379c9a,_0xb1dfd1){if(_0x379c9a[_0x557b('0x57')]['id']){delete _0x379c9a[_0x557b('0x57')]['id'];}return db[_0x557b('0x4e')][_0x557b('0x55')]({'where':{'id':_0x379c9a['params']['id']}})['then'](handleEntityNotFound(_0xb1dfd1,null))[_0x557b('0x19')](saveUpdates(_0x379c9a['body'],null))[_0x557b('0x19')](respondWithResult(_0xb1dfd1,null))[_0x557b('0x23')](handleError(_0xb1dfd1,null));};exports['destroy']=function(_0x351f09,_0x45a57f){return db[_0x557b('0x4e')][_0x557b('0x55')]({'where':{'id':_0x351f09[_0x557b('0x54')]['id']}})[_0x557b('0x19')](handleEntityNotFound(_0x45a57f,null))[_0x557b('0x19')](removeEntity(_0x45a57f,null))[_0x557b('0x23')](handleError(_0x45a57f,null));};exports[_0x557b('0x58')]=function(_0x218d44,_0x9d4f10,_0xb38892){var _0x2eb4c1={};var _0x44163d={};var _0x1bdf86;var _0x27b900;return db['ZendeskConfiguration'][_0x557b('0x59')]({'where':{'id':_0x218d44['params']['id']}})[_0x557b('0x19')](handleEntityNotFound(_0x9d4f10,null))[_0x557b('0x19')](function(_0x105349){if(_0x105349){_0x1bdf86=_0x105349;_0x44163d[_0x557b('0x35')]=_[_0x557b('0x36')](db[_0x557b('0x5a')][_0x557b('0x34')]);_0x44163d[_0x557b('0x37')]=_[_0x557b('0x36')](_0x218d44[_0x557b('0x37')]);_0x44163d[_0x557b('0x3a')]=_[_0x557b('0x3b')](_0x44163d['model'],_0x44163d[_0x557b('0x37')]);_0x2eb4c1[_0x557b('0x3c')]=_['intersection'](_0x44163d[_0x557b('0x35')],qs[_0x557b('0x3d')](_0x218d44[_0x557b('0x37')][_0x557b('0x3d')]));_0x2eb4c1['attributes']=_0x2eb4c1[_0x557b('0x3c')]['length']?_0x2eb4c1[_0x557b('0x3c')]:_0x44163d['model'];_0x2eb4c1[_0x557b('0x5b')]=qs['sort'](_0x218d44[_0x557b('0x37')][_0x557b('0x41')]);_0x2eb4c1[_0x557b('0x45')]=qs['filters'](_[_0x557b('0x42')](_0x218d44[_0x557b('0x37')],_0x44163d[_0x557b('0x3a')]));if(_0x218d44[_0x557b('0x37')][_0x557b('0x46')]){_0x2eb4c1[_0x557b('0x45')]=_[_0x557b('0x4c')](_0x2eb4c1['where'],{'$or':_[_0x557b('0x47')](_0x2eb4c1[_0x557b('0x3c')],function(_0x28651b){var _0x16b025={};_0x16b025[_0x28651b]={'$like':'%'+_0x218d44[_0x557b('0x37')][_0x557b('0x46')]+'%'};return _0x16b025;})});}_0x2eb4c1=_[_0x557b('0x4c')]({},_0x2eb4c1,_0x218d44[_0x557b('0x4d')]);return _0x1bdf86['getFields'](_0x2eb4c1);}})[_0x557b('0x19')](function(_0x2a35a0){if(_0x2a35a0){_0x27b900=_0x2a35a0[_0x557b('0x3e')];if(!_0x218d44[_0x557b('0x37')][_0x557b('0x3f')](_0x557b('0x40'))){_0x2eb4c1['limit']=qs[_0x557b('0x5c')](_0x218d44[_0x557b('0x37')][_0x557b('0x5c')]);_0x2eb4c1[_0x557b('0x26')]=qs[_0x557b('0x26')](_0x218d44[_0x557b('0x37')][_0x557b('0x26')]);}return _0x1bdf86[_0x557b('0x58')](_0x2eb4c1);}})[_0x557b('0x19')](function(_0x5a8172){if(_0x5a8172){return _0x5a8172?{'count':_0x27b900,'rows':_0x5a8172}:null;}})[_0x557b('0x19')](respondWithResult(_0x9d4f10,null))[_0x557b('0x23')](handleError(_0x9d4f10,null));};exports[_0x557b('0x5d')]=function(_0x2bd50f,_0x76e103,_0x49acd1){var _0x5f2f44={};var _0x1b571c={};var _0x2a99b3;var _0x2faf75;return db[_0x557b('0x4e')][_0x557b('0x59')]({'where':{'id':_0x2bd50f['params']['id']}})[_0x557b('0x19')](handleEntityNotFound(_0x76e103,null))[_0x557b('0x19')](function(_0x1a309b){if(_0x1a309b){_0x2a99b3=_0x1a309b;_0x1b571c[_0x557b('0x35')]=_['keys'](db[_0x557b('0x5a')]['rawAttributes']);_0x1b571c[_0x557b('0x37')]=_['keys'](_0x2bd50f[_0x557b('0x37')]);_0x1b571c[_0x557b('0x3a')]=_['intersection'](_0x1b571c[_0x557b('0x35')],_0x1b571c['query']);_0x5f2f44[_0x557b('0x3c')]=_[_0x557b('0x3b')](_0x1b571c['model'],qs[_0x557b('0x3d')](_0x2bd50f[_0x557b('0x37')]['fields']));_0x5f2f44[_0x557b('0x3c')]=_0x5f2f44[_0x557b('0x3c')]['length']?_0x5f2f44[_0x557b('0x3c')]:_0x1b571c[_0x557b('0x35')];_0x5f2f44[_0x557b('0x5b')]=qs[_0x557b('0x41')](_0x2bd50f[_0x557b('0x37')]['sort']);_0x5f2f44['where']=qs['filters'](_[_0x557b('0x42')](_0x2bd50f[_0x557b('0x37')],_0x1b571c[_0x557b('0x3a')]));if(_0x2bd50f[_0x557b('0x37')][_0x557b('0x46')]){_0x5f2f44['where']=_[_0x557b('0x4c')](_0x5f2f44[_0x557b('0x45')],{'$or':_[_0x557b('0x47')](_0x5f2f44[_0x557b('0x3c')],function(_0x67c44d){var _0x28bb55={};_0x28bb55[_0x67c44d]={'$like':'%'+_0x2bd50f[_0x557b('0x37')]['filter']+'%'};return _0x28bb55;})});}_0x5f2f44=_[_0x557b('0x4c')]({},_0x5f2f44,_0x2bd50f[_0x557b('0x4d')]);return _0x2a99b3[_0x557b('0x5d')](_0x5f2f44);}})[_0x557b('0x19')](function(_0x4784d2){if(_0x4784d2){_0x2faf75=_0x4784d2['length'];if(!_0x2bd50f['query']['hasOwnProperty'](_0x557b('0x40'))){_0x5f2f44[_0x557b('0x5c')]=qs[_0x557b('0x5c')](_0x2bd50f[_0x557b('0x37')][_0x557b('0x5c')]);_0x5f2f44[_0x557b('0x26')]=qs[_0x557b('0x26')](_0x2bd50f['query']['offset']);}return _0x2a99b3[_0x557b('0x5d')](_0x5f2f44);}})[_0x557b('0x19')](function(_0x182eec){if(_0x182eec){return _0x182eec?{'count':_0x2faf75,'rows':_0x182eec}:null;}})[_0x557b('0x19')](respondWithResult(_0x76e103,null))['catch'](handleError(_0x76e103,null));};exports[_0x557b('0x5e')]=function(_0x519cc9,_0x3d270e,_0x40a67b){var _0x11b17a={};var _0x7f4493={};var _0x1b733b;var _0x27830f;return db[_0x557b('0x4e')]['findOne']({'where':{'id':_0x519cc9[_0x557b('0x54')]['id']}})['then'](handleEntityNotFound(_0x3d270e,null))[_0x557b('0x19')](function(_0x35582d){if(_0x35582d){_0x1b733b=_0x35582d;_0x7f4493['model']=_[_0x557b('0x36')](db[_0x557b('0x5a')][_0x557b('0x34')]);_0x7f4493[_0x557b('0x37')]=_[_0x557b('0x36')](_0x519cc9[_0x557b('0x37')]);_0x7f4493[_0x557b('0x3a')]=_[_0x557b('0x3b')](_0x7f4493['model'],_0x7f4493[_0x557b('0x37')]);_0x11b17a[_0x557b('0x3c')]=_[_0x557b('0x3b')](_0x7f4493[_0x557b('0x35')],qs[_0x557b('0x3d')](_0x519cc9[_0x557b('0x37')]['fields']));_0x11b17a[_0x557b('0x3c')]=_0x11b17a[_0x557b('0x3c')]['length']?_0x11b17a[_0x557b('0x3c')]:_0x7f4493[_0x557b('0x35')];_0x11b17a[_0x557b('0x5b')]=qs[_0x557b('0x41')](_0x519cc9['query'][_0x557b('0x41')]);_0x11b17a[_0x557b('0x45')]=qs[_0x557b('0x3a')](_[_0x557b('0x42')](_0x519cc9[_0x557b('0x37')],_0x7f4493[_0x557b('0x3a')]));if(_0x519cc9[_0x557b('0x37')][_0x557b('0x46')]){_0x11b17a[_0x557b('0x45')]=_[_0x557b('0x4c')](_0x11b17a['where'],{'$or':_[_0x557b('0x47')](_0x11b17a[_0x557b('0x3c')],function(_0x32866d){var _0x3a667e={};_0x3a667e[_0x32866d]={'$like':'%'+_0x519cc9[_0x557b('0x37')][_0x557b('0x46')]+'%'};return _0x3a667e;})});}_0x11b17a=_[_0x557b('0x4c')]({},_0x11b17a,_0x519cc9[_0x557b('0x4d')]);return _0x1b733b[_0x557b('0x5e')](_0x11b17a);}})[_0x557b('0x19')](function(_0x3bc407){if(_0x3bc407){_0x27830f=_0x3bc407[_0x557b('0x3e')];if(!_0x519cc9[_0x557b('0x37')][_0x557b('0x3f')]('nolimit')){_0x11b17a[_0x557b('0x5c')]=qs[_0x557b('0x5c')](_0x519cc9[_0x557b('0x37')]['limit']);_0x11b17a['offset']=qs[_0x557b('0x26')](_0x519cc9[_0x557b('0x37')][_0x557b('0x26')]);}return _0x1b733b[_0x557b('0x5e')](_0x11b17a);}})[_0x557b('0x19')](function(_0x46ca09){if(_0x46ca09){return _0x46ca09?{'count':_0x27830f,'rows':_0x46ca09}:null;}})[_0x557b('0x19')](respondWithResult(_0x3d270e,null))['catch'](handleError(_0x3d270e,null));};exports[_0x557b('0x5f')]=function(_0x3bab32,_0x8b15d4,_0x4c8b31){var _0x2f17ad={};var _0x336eee={};var _0x369f2f;var _0x4cfd4f;return db[_0x557b('0x4e')][_0x557b('0x59')]({'where':{'id':_0x3bab32[_0x557b('0x54')]['id']}})[_0x557b('0x19')](handleEntityNotFound(_0x8b15d4,null))[_0x557b('0x19')](function(_0xba0e68){if(_0xba0e68){_0x369f2f=_0xba0e68;_0x336eee['model']=_['keys'](db[_0x557b('0x60')][_0x557b('0x34')]);_0x336eee[_0x557b('0x37')]=_[_0x557b('0x36')](_0x3bab32['query']);_0x336eee[_0x557b('0x3a')]=_['intersection'](_0x336eee[_0x557b('0x35')],_0x336eee[_0x557b('0x37')]);_0x2f17ad['attributes']=_[_0x557b('0x3b')](_0x336eee[_0x557b('0x35')],qs[_0x557b('0x3d')](_0x3bab32[_0x557b('0x37')][_0x557b('0x3d')]));_0x2f17ad[_0x557b('0x3c')]=_0x2f17ad[_0x557b('0x3c')]['length']?_0x2f17ad[_0x557b('0x3c')]:_0x336eee[_0x557b('0x35')];_0x2f17ad['order']=qs[_0x557b('0x41')](_0x3bab32[_0x557b('0x37')][_0x557b('0x41')]);_0x2f17ad[_0x557b('0x45')]=qs[_0x557b('0x3a')](_[_0x557b('0x42')](_0x3bab32[_0x557b('0x37')],_0x336eee[_0x557b('0x3a')]));if(_0x3bab32[_0x557b('0x37')]['filter']){_0x2f17ad[_0x557b('0x45')]=_[_0x557b('0x4c')](_0x2f17ad[_0x557b('0x45')],{'$or':_['map'](_0x2f17ad['attributes'],function(_0x51f064){var _0x208d42={};_0x208d42[_0x51f064]={'$like':'%'+_0x3bab32['query'][_0x557b('0x46')]+'%'};return _0x208d42;})});}_0x2f17ad=_[_0x557b('0x4c')]({},_0x2f17ad,_0x3bab32[_0x557b('0x4d')]);return _0x369f2f[_0x557b('0x5f')](_0x2f17ad);}})[_0x557b('0x19')](function(_0x351609){if(_0x351609){_0x4cfd4f=_0x351609[_0x557b('0x3e')];if(!_0x3bab32[_0x557b('0x37')]['hasOwnProperty'](_0x557b('0x40'))){_0x2f17ad['limit']=qs[_0x557b('0x5c')](_0x3bab32['query'][_0x557b('0x5c')]);_0x2f17ad[_0x557b('0x26')]=qs['offset'](_0x3bab32[_0x557b('0x37')][_0x557b('0x26')]);}return _0x369f2f[_0x557b('0x5f')](_0x2f17ad);}})[_0x557b('0x19')](function(_0x560d62){if(_0x560d62){return _0x560d62?{'count':_0x4cfd4f,'rows':_0x560d62}:null;}})['then'](respondWithResult(_0x8b15d4,null))['catch'](handleError(_0x8b15d4,null));};exports[_0x557b('0x61')]=function(_0x2ba1e9,_0xb81241,_0x4764d5){if(_0x2ba1e9[_0x557b('0x57')]['id']){delete _0x2ba1e9[_0x557b('0x57')]['id'];}return db['ZendeskConfiguration'][_0x557b('0x59')]({'where':{'id':_0x2ba1e9[_0x557b('0x54')]['id']}})[_0x557b('0x19')](handleEntityNotFound(_0xb81241,null))['then'](function(_0x2100ee){if(_0x2100ee){return _0x2100ee[_0x557b('0x61')](_0x2ba1e9[_0x557b('0x57')][_0x557b('0x62')]||[]);}return null;})[_0x557b('0x19')](respondWithResult(_0xb81241,null))[_0x557b('0x23')](handleError(_0xb81241,null));};
\ No newline at end of file
index 01e3b08..f4eb4dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd4b=['int_zendesk_configurations','util','../../config/logger','api','moment','bluebird','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration'];(function(_0x52e9d1,_0x169a33){var _0x136e19=function(_0x45de75){while(--_0x45de75){_0x52e9d1['push'](_0x52e9d1['shift']());}};_0x136e19(++_0x169a33);}(_0xcd4b,0x191));var _0xbcd4=function(_0x2e4cf7,_0x57b858){_0x2e4cf7=_0x2e4cf7-0x0;var _0xf137a3=_0xcd4b[_0x2e4cf7];return _0xf137a3;};'use strict';var _=require('lodash');var util=require(_0xbcd4('0x0'));var logger=require(_0xbcd4('0x1'))(_0xbcd4('0x2'));var moment=require(_0xbcd4('0x3'));var BPromise=require(_0xbcd4('0x4'));var rp=require('request-promise');var attributes=require(_0xbcd4('0x5'));module[_0xbcd4('0x6')]=function(_0x25557d,_0xfaabab){return _0x25557d[_0xbcd4('0x7')](_0xbcd4('0x8'),attributes,{'tableName':_0xbcd4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdae0=['moment','request-promise','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger'];(function(_0x10e119,_0x1c2921){var _0xe820f2=function(_0x1a0a42){while(--_0x1a0a42){_0x10e119['push'](_0x10e119['shift']());}};_0xe820f2(++_0x1c2921);}(_0xdae0,0x9d));var _0x0dae=function(_0x146d64,_0x20642a){_0x146d64=_0x146d64-0x0;var _0xd513c0=_0xdae0[_0x146d64];return _0xd513c0;};'use strict';var _=require(_0x0dae('0x0'));var util=require(_0x0dae('0x1'));var logger=require(_0x0dae('0x2'))('api');var moment=require(_0x0dae('0x3'));var BPromise=require('bluebird');var rp=require(_0x0dae('0x4'));var attributes=require(_0x0dae('0x5'));module[_0x0dae('0x6')]=function(_0x41cb91,_0x3c0b8e){return _0x41cb91[_0x0dae('0x7')](_0x0dae('0x8'),attributes,{'tableName':_0x0dae('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6404af7..5a2f5c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcb7=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x49aa7d,_0x5d46d8){var _0xdd0d26=function(_0x159df7){while(--_0x159df7){_0x49aa7d['push'](_0x49aa7d['shift']());}};_0xdd0d26(++_0x5d46d8);}(_0xbcb7,0x8b));var _0x7bcb=function(_0x1ee5ef,_0x38d42b){_0x1ee5ef=_0x1ee5ef-0x0;var _0x448ab8=_0xbcb7[_0x1ee5ef];return _0x448ab8;};'use strict';var _=require(_0x7bcb('0x0'));var util=require(_0x7bcb('0x1'));var moment=require(_0x7bcb('0x2'));var BPromise=require(_0x7bcb('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7bcb('0x4'));var db=require(_0x7bcb('0x5'))['db'];var utils=require(_0x7bcb('0x6'));var logger=require('../../config/logger')(_0x7bcb('0x7'));var config=require(_0x7bcb('0x8'));var jayson=require(_0x7bcb('0x9'));var client=jayson[_0x7bcb('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x51ab28,_0x21065a,_0x243907){return new BPromise(function(_0x49df01,_0x4ab8a6){return client[_0x7bcb('0xb')](_0x51ab28,_0x243907)[_0x7bcb('0xc')](function(_0x6fba6e){logger['info'](_0x7bcb('0xd'),_0x21065a,_0x7bcb('0xe'));logger[_0x7bcb('0xf')](_0x7bcb('0x10'),_0x21065a,_0x7bcb('0xe'),JSON[_0x7bcb('0x11')](_0x6fba6e));if(_0x6fba6e[_0x7bcb('0x12')]){if(_0x6fba6e['error'][_0x7bcb('0x13')]===0x1f4){logger[_0x7bcb('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x21065a,_0x6fba6e[_0x7bcb('0x12')]['message']);return _0x4ab8a6(_0x6fba6e[_0x7bcb('0x12')][_0x7bcb('0x14')]);}logger[_0x7bcb('0x12')](_0x7bcb('0xd'),_0x21065a,_0x6fba6e[_0x7bcb('0x12')][_0x7bcb('0x14')]);return _0x49df01(_0x6fba6e[_0x7bcb('0x12')][_0x7bcb('0x14')]);}else{logger[_0x7bcb('0x15')](_0x7bcb('0xd'),_0x21065a,_0x7bcb('0xe'));_0x49df01(_0x6fba6e[_0x7bcb('0x16')]['message']);}})[_0x7bcb('0x17')](function(_0x267e65){logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x21065a,_0x267e65);_0x4ab8a6(_0x267e65);});});}
\ No newline at end of file
+var _0xc1c8=['stringify','error','code','ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x58682e,_0x48176d){var _0x533e59=function(_0x4a5513){while(--_0x4a5513){_0x58682e['push'](_0x58682e['shift']());}};_0x533e59(++_0x48176d);}(_0xc1c8,0xcd));var _0x8c1c=function(_0x425c47,_0x5282b1){_0x425c47=_0x425c47-0x0;var _0x16fb90=_0xc1c8[_0x425c47];return _0x16fb90;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8c1c('0x0'));var BPromise=require(_0x8c1c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8c1c('0x2'))['db'];var utils=require(_0x8c1c('0x3'));var logger=require(_0x8c1c('0x4'))('rpc');var config=require(_0x8c1c('0x5'));var jayson=require(_0x8c1c('0x6'));var client=jayson[_0x8c1c('0x7')][_0x8c1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x11a029,_0x5da252,_0x35f4e6){return new BPromise(function(_0x488250,_0x3ae10c){return client[_0x8c1c('0x9')](_0x11a029,_0x35f4e6)[_0x8c1c('0xa')](function(_0x3c943e){logger[_0x8c1c('0xb')]('ZendeskConfiguration,\x20%s,\x20%s',_0x5da252,_0x8c1c('0xc'));logger[_0x8c1c('0xd')](_0x8c1c('0xe'),_0x5da252,_0x8c1c('0xc'),JSON[_0x8c1c('0xf')](_0x3c943e));if(_0x3c943e[_0x8c1c('0x10')]){if(_0x3c943e[_0x8c1c('0x10')][_0x8c1c('0x11')]===0x1f4){logger[_0x8c1c('0x10')](_0x8c1c('0x12'),_0x5da252,_0x3c943e[_0x8c1c('0x10')][_0x8c1c('0x13')]);return _0x3ae10c(_0x3c943e[_0x8c1c('0x10')][_0x8c1c('0x13')]);}logger['error'](_0x8c1c('0x12'),_0x5da252,_0x3c943e['error'][_0x8c1c('0x13')]);return _0x488250(_0x3c943e[_0x8c1c('0x10')]['message']);}else{logger[_0x8c1c('0xb')](_0x8c1c('0x12'),_0x5da252,_0x8c1c('0xc'));_0x488250(_0x3c943e[_0x8c1c('0x14')][_0x8c1c('0x13')]);}})[_0x8c1c('0x15')](function(_0x47cb14){logger[_0x8c1c('0x10')](_0x8c1c('0x12'),_0x5da252,_0x47cb14);_0x3ae10c(_0x47cb14);});});}
\ No newline at end of file
index 6fc2799..8fae80a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','put','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x3ddfa2,_0x20fdbf){var _0x5bf0d6=function(_0x3d03a7){while(--_0x3d03a7){_0x3ddfa2['push'](_0x3ddfa2['shift']());}};_0x5bf0d6(++_0x20fdbf);}(_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 auth=require(_0x7995('0x5'));var interaction=require(_0x7995('0x6'));var config=require(_0x7995('0x7'));var controller=require('./intZendeskField.controller');router[_0x7995('0x8')]('/',auth[_0x7995('0x9')](),controller[_0x7995('0xa')]);router[_0x7995('0x8')](_0x7995('0xb'),auth[_0x7995('0x9')](),controller['show']);router[_0x7995('0xc')]('/',auth[_0x7995('0x9')](),controller['create']);router[_0x7995('0xd')](_0x7995('0xb'),auth[_0x7995('0x9')](),controller[_0x7995('0xe')]);router[_0x7995('0xf')](_0x7995('0xb'),auth[_0x7995('0x9')](),controller['destroy']);module[_0x7995('0x10')]=router;
\ No newline at end of file
+var _0xa9e0=['/:id','update','delete','multer','util','path','Router','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated'];(function(_0x174314,_0x36270d){var _0x54f363=function(_0x30d8e8){while(--_0x30d8e8){_0x174314['push'](_0x174314['shift']());}};_0x54f363(++_0x36270d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var auth=require('../../components/auth/service');var interaction=require(_0x0a9e('0x4'));var config=require(_0x0a9e('0x5'));var controller=require(_0x0a9e('0x6'));router[_0x0a9e('0x7')]('/',auth[_0x0a9e('0x8')](),controller['index']);router[_0x0a9e('0x7')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller['show']);router['post']('/',auth[_0x0a9e('0x8')](),controller['create']);router['put'](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xa')]);router[_0x0a9e('0xb')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index f8dc8a8..43974c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x750a=['customVariable','keyValue','string','STRING','ENUM','exports','variable'];(function(_0x54ffd1,_0x10568f){var _0x32b057=function(_0x4637cd){while(--_0x4637cd){_0x54ffd1['push'](_0x54ffd1['shift']());}};_0x32b057(++_0x10568f);}(_0x750a,0x140));var _0xa750=function(_0x305e5c,_0x4f2822){_0x305e5c=_0x305e5c-0x0;var _0x445b7a=_0x750a[_0x305e5c];return _0x445b7a;};'use strict';var Sequelize=require('sequelize');module[_0xa750('0x0')]={'type':{'type':Sequelize['ENUM']('string',_0xa750('0x1'),_0xa750('0x2'),_0xa750('0x3')),'defaultValue':_0xa750('0x4')},'content':{'type':Sequelize[_0xa750('0x5')]},'key':{'type':Sequelize[_0xa750('0x5')]},'keyType':{'type':Sequelize[_0xa750('0x6')](_0xa750('0x4'),_0xa750('0x1'),_0xa750('0x2'))},'keyContent':{'type':Sequelize[_0xa750('0x5')]},'idField':{'type':Sequelize[_0xa750('0x5')]},'nameField':{'type':Sequelize[_0xa750('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x750a=['customVariable','keyValue','string','STRING','ENUM','exports','variable'];(function(_0x64706b,_0x494f8e){var _0x17c16f=function(_0x19891d){while(--_0x19891d){_0x64706b['push'](_0x64706b['shift']());}};_0x17c16f(++_0x494f8e);}(_0x750a,0x140));var _0xa750=function(_0x2a60c0,_0x5f49db){_0x2a60c0=_0x2a60c0-0x0;var _0x1fdb20=_0x750a[_0x2a60c0];return _0x1fdb20;};'use strict';var Sequelize=require('sequelize');module[_0xa750('0x0')]={'type':{'type':Sequelize['ENUM']('string',_0xa750('0x1'),_0xa750('0x2'),_0xa750('0x3')),'defaultValue':_0xa750('0x4')},'content':{'type':Sequelize[_0xa750('0x5')]},'key':{'type':Sequelize[_0xa750('0x5')]},'keyType':{'type':Sequelize[_0xa750('0x6')](_0xa750('0x4'),_0xa750('0x1'),_0xa750('0x2'))},'keyContent':{'type':Sequelize[_0xa750('0x5')]},'idField':{'type':Sequelize[_0xa750('0x5')]},'nameField':{'type':Sequelize[_0xa750('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 212beae..5c844b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78c8=['find','create','body','destroy','html-pdf','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','error','name','send','index','ZendeskField','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','add','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','options'];(function(_0x430944,_0x2be4ed){var _0x285134=function(_0x5d1a07){while(--_0x5d1a07){_0x430944['push'](_0x430944['shift']());}};_0x285134(++_0x2be4ed);}(_0x78c8,0x176));var _0x878c=function(_0x20bc1a,_0x623730){_0x20bc1a=_0x20bc1a-0x0;var _0x1c0e96=_0x78c8[_0x20bc1a];return _0x1c0e96;};'use strict';var pdf=require(_0x878c('0x0'));var emlformat=require(_0x878c('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x878c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x878c('0x3'));var moment=require(_0x878c('0x4'));var BPromise=require(_0x878c('0x5'));var Mustache=require(_0x878c('0x6'));var util=require(_0x878c('0x7'));var path=require(_0x878c('0x8'));var sox=require(_0x878c('0x9'));var csv=require(_0x878c('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x878c('0xb'));var squel=require(_0x878c('0xc'));var crypto=require(_0x878c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x878c('0xe'));var toCsv=require(_0x878c('0xa'));var querystring=require(_0x878c('0xf'));var Papa=require(_0x878c('0x10'));var Redis=require(_0x878c('0x11'));var qs=require(_0x878c('0x12'));var logger=require('../../config/logger')(_0x878c('0x13'));var utils=require(_0x878c('0x14'));var config=require(_0x878c('0x15'));var db=require(_0x878c('0x16'))['db'];function respondWithStatusCode(_0xfebd38,_0x3e3079){_0x3e3079=_0x3e3079||0xcc;return function(_0x1cb013){if(_0x1cb013){return _0xfebd38[_0x878c('0x17')](_0x3e3079);}return _0xfebd38[_0x878c('0x18')](_0x3e3079)[_0x878c('0x19')]();};}function respondWithResult(_0x5c3a1e,_0x5a8bc2){_0x5a8bc2=_0x5a8bc2||0xc8;return function(_0x3c791d){if(_0x3c791d){return _0x5c3a1e[_0x878c('0x18')](_0x5a8bc2)[_0x878c('0x1a')](_0x3c791d);}};}function respondWithFilteredResult(_0x390015,_0x2c72fa){return function(_0x280d89){if(_0x280d89){var _0x4d92a3=_0x280d89[_0x878c('0x1b')],_0xa657f0=_0x2c72fa['offset'],_0x307fbd=_0x2c72fa[_0x878c('0x1c')]+_0x2c72fa[_0x878c('0x1d')],_0x1a3a73;if(_0x307fbd>=_0x4d92a3){_0x307fbd=_0x4d92a3;_0x1a3a73=0xc8;}else{_0x1a3a73=0xce;}_0x390015[_0x878c('0x18')](_0x1a3a73);return _0x390015[_0x878c('0x1e')](_0x878c('0x1f'),_0xa657f0+'-'+_0x307fbd+'/'+_0x4d92a3)['json'](_0x280d89);}return null;};}function patchUpdates(_0x3db8b5){return function(_0x3439de){try{jsonpatch[_0x878c('0x20')](_0x3439de,_0x3db8b5,!![]);}catch(_0x1299d6){return BPromise[_0x878c('0x21')](_0x1299d6);}return _0x3439de[_0x878c('0x22')]();};}function saveUpdates(_0x1cc5b6,_0x24d5a4){return function(_0x5426e5){if(_0x5426e5){return _0x5426e5[_0x878c('0x23')](_0x1cc5b6)[_0x878c('0x24')](function(_0x510ca8){return _0x510ca8;});}return null;};}function removeEntity(_0x46cbe2,_0xec7baf){return function(_0x39ecde){if(_0x39ecde){return _0x39ecde['destroy']()[_0x878c('0x24')](function(){_0x46cbe2[_0x878c('0x18')](0xcc)[_0x878c('0x19')]();});}};}function handleEntityNotFound(_0x14a20b,_0x14410a){return function(_0x4c0fe9){if(!_0x4c0fe9){_0x14a20b[_0x878c('0x17')](0x194);}return _0x4c0fe9;};}function handleError(_0x292bf7,_0x184e51){_0x184e51=_0x184e51||0x1f4;return function(_0xeb88fe){logger[_0x878c('0x25')](_0xeb88fe['stack']);if(_0xeb88fe[_0x878c('0x26')]){delete _0xeb88fe[_0x878c('0x26')];}_0x292bf7[_0x878c('0x18')](_0x184e51)[_0x878c('0x27')](_0xeb88fe);};}exports[_0x878c('0x28')]=function(_0x16373b,_0x33a95e){var _0x46da9c={},_0x4893ab={},_0x20af86={'count':0x0,'rows':[]};var _0x3d620b=db[_0x878c('0x29')][_0x878c('0x2a')];_0x4893ab['model']=_[_0x878c('0x2b')](_0x3d620b);var _0x47eee5={'dateStart':_0x16373b[_0x878c('0x2c')][_0x878c('0x2d')],'dateEnd':_0x16373b[_0x878c('0x2c')][_0x878c('0x2e')]};delete _0x16373b[_0x878c('0x2c')][_0x878c('0x2d')];delete _0x16373b[_0x878c('0x2c')]['dateEnd'];_0x4893ab[_0x878c('0x2c')]=_[_0x878c('0x2b')](_0x16373b[_0x878c('0x2c')]);_0x4893ab[_0x878c('0x2f')]=_[_0x878c('0x30')](_0x4893ab[_0x878c('0x31')],_0x4893ab[_0x878c('0x2c')]);_0x46da9c[_0x878c('0x32')]=_['intersection'](_0x4893ab['model'],qs[_0x878c('0x33')](_0x16373b['query'][_0x878c('0x33')]));_0x46da9c[_0x878c('0x32')]=_0x46da9c[_0x878c('0x32')][_0x878c('0x34')]?_0x46da9c[_0x878c('0x32')]:_0x4893ab[_0x878c('0x31')];if(!_0x16373b[_0x878c('0x2c')][_0x878c('0x35')](_0x878c('0x36'))){_0x46da9c[_0x878c('0x1d')]=qs[_0x878c('0x1d')](_0x16373b[_0x878c('0x2c')][_0x878c('0x1d')]);_0x46da9c['offset']=qs['offset'](_0x16373b[_0x878c('0x2c')][_0x878c('0x1c')]);}_0x46da9c['order']=qs[_0x878c('0x37')](_0x16373b['query']['sort']);_0x46da9c[_0x878c('0x38')]=qs[_0x878c('0x2f')](_[_0x878c('0x39')](_0x16373b[_0x878c('0x2c')],_0x4893ab['filters']));if(_0x47eee5['dateStart']){if(_0x47eee5[_0x878c('0x2e')]){_0x47eee5[_0x878c('0x2e')]=moment(_0x47eee5['dateEnd'])[_0x878c('0x3a')](0x1,'day');}else{_0x47eee5[_0x878c('0x2e')]=moment(_0x47eee5['dateStart'])[_0x878c('0x3a')](0x1,'day');}_[_0x878c('0x3b')](_0x46da9c[_0x878c('0x38')],{'createdAt':{'$gte':_0x47eee5[_0x878c('0x2d')],'$lte':_0x47eee5[_0x878c('0x2e')]}});}if(_0x16373b[_0x878c('0x2c')]['filter']){_0x46da9c[_0x878c('0x38')]=_['merge'](_0x46da9c[_0x878c('0x38')],{'$or':_['map'](_0x3d620b,function(_0x4220c4){if(_0x4220c4['type']['key']!==_0x878c('0x3c')){var _0x477904={};_0x477904[_0x4220c4['field']]={'$like':'%'+_0x16373b[_0x878c('0x2c')][_0x878c('0x3d')]+'%'};return _0x477904;}})});}_0x46da9c=_[_0x878c('0x3b')]({},_0x46da9c,_0x16373b['options']);var _0x518739={'where':_0x46da9c[_0x878c('0x38')]};return db[_0x878c('0x29')][_0x878c('0x1b')](_0x518739)['then'](function(_0x33c310){_0x20af86['count']=_0x33c310;if(_0x16373b['query'][_0x878c('0x3e')]){_0x46da9c[_0x878c('0x3f')]=[{'all':!![]}];}return db['ZendeskField'][_0x878c('0x40')](_0x46da9c);})[_0x878c('0x24')](function(_0x554f30){_0x20af86[_0x878c('0x41')]=_0x554f30;return _0x20af86;})[_0x878c('0x24')](respondWithFilteredResult(_0x33a95e,_0x46da9c))[_0x878c('0x42')](handleError(_0x33a95e,null));};exports[_0x878c('0x43')]=function(_0x4f094b,_0xb55616){var _0xdbf6fc={'raw':!![],'where':{'id':_0x4f094b[_0x878c('0x44')]['id']}},_0x59407e={};_0x59407e[_0x878c('0x31')]=_[_0x878c('0x2b')](db[_0x878c('0x29')][_0x878c('0x2a')]);_0x59407e[_0x878c('0x2c')]=_[_0x878c('0x2b')](_0x4f094b[_0x878c('0x2c')]);_0x59407e[_0x878c('0x2f')]=_[_0x878c('0x30')](_0x59407e[_0x878c('0x31')],_0x59407e[_0x878c('0x2c')]);_0xdbf6fc[_0x878c('0x32')]=_['intersection'](_0x59407e[_0x878c('0x31')],qs[_0x878c('0x33')](_0x4f094b[_0x878c('0x2c')][_0x878c('0x33')]));_0xdbf6fc['attributes']=_0xdbf6fc[_0x878c('0x32')][_0x878c('0x34')]?_0xdbf6fc[_0x878c('0x32')]:_0x59407e[_0x878c('0x31')];if(_0x4f094b[_0x878c('0x2c')][_0x878c('0x3e')]){_0xdbf6fc[_0x878c('0x3f')]=[{'all':!![]}];}_0xdbf6fc=_['merge']({},_0xdbf6fc,_0x4f094b[_0x878c('0x45')]);return db['ZendeskField'][_0x878c('0x46')](_0xdbf6fc)[_0x878c('0x24')](handleEntityNotFound(_0xb55616,null))[_0x878c('0x24')](respondWithResult(_0xb55616,null))['catch'](handleError(_0xb55616,null));};exports[_0x878c('0x47')]=function(_0x4697f4,_0x47f38f){return db[_0x878c('0x29')][_0x878c('0x47')](_0x4697f4['body'],{})[_0x878c('0x24')](respondWithResult(_0x47f38f,0xc9))[_0x878c('0x42')](handleError(_0x47f38f,null));};exports[_0x878c('0x23')]=function(_0x99d223,_0x5472ee){if(_0x99d223[_0x878c('0x48')]['id']){delete _0x99d223[_0x878c('0x48')]['id'];}return db[_0x878c('0x29')][_0x878c('0x46')]({'where':{'id':_0x99d223[_0x878c('0x44')]['id']}})[_0x878c('0x24')](handleEntityNotFound(_0x5472ee,null))[_0x878c('0x24')](saveUpdates(_0x99d223[_0x878c('0x48')],null))['then'](respondWithResult(_0x5472ee,null))['catch'](handleError(_0x5472ee,null));};exports[_0x878c('0x49')]=function(_0x4c5f34,_0x185545){return db['ZendeskField'][_0x878c('0x46')]({'where':{'id':_0x4c5f34[_0x878c('0x44')]['id']}})['then'](handleEntityNotFound(_0x185545,null))[_0x878c('0x24')](removeEntity(_0x185545,null))[_0x878c('0x42')](handleError(_0x185545,null));};
\ No newline at end of file
+var _0x3239=['merge','filter','map','VIRTUAL','options','includeAll','include','findAll','catch','show','length','create','body','params','find','html-pdf','eml-format','rimraf','request-promise','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','count','offset','status','set','apply','update','destroy','then','end','error','stack','name','send','index','ZendeskField','rawAttributes','keys','query','dateEnd','dateStart','intersection','model','attributes','fields','nolimit','limit','order','sort','where','filters','pick','add','day'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x3239,0x168));var _0x9323=function(_0x2cc8d9,_0x431513){_0x2cc8d9=_0x2cc8d9-0x0;var _0x568579=_0x3239[_0x2cc8d9];return _0x568579;};'use strict';var pdf=require(_0x9323('0x0'));var emlformat=require(_0x9323('0x1'));var rimraf=require(_0x9323('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9323('0x3'));var moment=require('moment');var BPromise=require(_0x9323('0x4'));var Mustache=require(_0x9323('0x5'));var util=require('util');var path=require(_0x9323('0x6'));var sox=require(_0x9323('0x7'));var csv=require(_0x9323('0x8'));var ejs=require(_0x9323('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0x9323('0xa'));var crypto=require(_0x9323('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9323('0xc'));var Papa=require(_0x9323('0xd'));var Redis=require('ioredis');var qs=require(_0x9323('0xe'));var logger=require(_0x9323('0xf'))('api');var utils=require(_0x9323('0x10'));var config=require(_0x9323('0x11'));var db=require(_0x9323('0x12'))['db'];function respondWithStatusCode(_0x137bd4,_0x317be8){_0x317be8=_0x317be8||0xcc;return function(_0x1efb1b){if(_0x1efb1b){return _0x137bd4[_0x9323('0x13')](_0x317be8);}return _0x137bd4['status'](_0x317be8)['end']();};}function respondWithResult(_0x2fe961,_0x16a73f){_0x16a73f=_0x16a73f||0xc8;return function(_0x31da86){if(_0x31da86){return _0x2fe961['status'](_0x16a73f)[_0x9323('0x14')](_0x31da86);}};}function respondWithFilteredResult(_0x45397b,_0x29f6d8){return function(_0x492a20){if(_0x492a20){var _0x2b5cbf=_0x492a20[_0x9323('0x15')],_0x1620e4=_0x29f6d8['offset'],_0x29bb15=_0x29f6d8[_0x9323('0x16')]+_0x29f6d8['limit'],_0x18d04c;if(_0x29bb15>=_0x2b5cbf){_0x29bb15=_0x2b5cbf;_0x18d04c=0xc8;}else{_0x18d04c=0xce;}_0x45397b[_0x9323('0x17')](_0x18d04c);return _0x45397b[_0x9323('0x18')]('Content-Range',_0x1620e4+'-'+_0x29bb15+'/'+_0x2b5cbf)[_0x9323('0x14')](_0x492a20);}return null;};}function patchUpdates(_0x21ada8){return function(_0x33f824){try{jsonpatch[_0x9323('0x19')](_0x33f824,_0x21ada8,!![]);}catch(_0x53b8b0){return BPromise['reject'](_0x53b8b0);}return _0x33f824['save']();};}function saveUpdates(_0xc8f92e,_0x3c2d3f){return function(_0x122339){if(_0x122339){return _0x122339[_0x9323('0x1a')](_0xc8f92e)['then'](function(_0x2379d4){return _0x2379d4;});}return null;};}function removeEntity(_0x1aac42,_0x5d1679){return function(_0x2a67a3){if(_0x2a67a3){return _0x2a67a3[_0x9323('0x1b')]()[_0x9323('0x1c')](function(){_0x1aac42[_0x9323('0x17')](0xcc)[_0x9323('0x1d')]();});}};}function handleEntityNotFound(_0x4ff0d3,_0x4683c3){return function(_0x2b7083){if(!_0x2b7083){_0x4ff0d3[_0x9323('0x13')](0x194);}return _0x2b7083;};}function handleError(_0x2ad327,_0x18e150){_0x18e150=_0x18e150||0x1f4;return function(_0x3e74be){logger[_0x9323('0x1e')](_0x3e74be[_0x9323('0x1f')]);if(_0x3e74be['name']){delete _0x3e74be[_0x9323('0x20')];}_0x2ad327[_0x9323('0x17')](_0x18e150)[_0x9323('0x21')](_0x3e74be);};}exports[_0x9323('0x22')]=function(_0x145b3b,_0x4710b1){var _0xf7e7b7={},_0xe0467d={},_0x16e1ef={'count':0x0,'rows':[]};var _0x5447cc=db[_0x9323('0x23')][_0x9323('0x24')];_0xe0467d['model']=_[_0x9323('0x25')](_0x5447cc);var _0x2a4a10={'dateStart':_0x145b3b['query']['dateStart'],'dateEnd':_0x145b3b[_0x9323('0x26')][_0x9323('0x27')]};delete _0x145b3b['query'][_0x9323('0x28')];delete _0x145b3b[_0x9323('0x26')][_0x9323('0x27')];_0xe0467d['query']=_[_0x9323('0x25')](_0x145b3b[_0x9323('0x26')]);_0xe0467d['filters']=_[_0x9323('0x29')](_0xe0467d[_0x9323('0x2a')],_0xe0467d[_0x9323('0x26')]);_0xf7e7b7[_0x9323('0x2b')]=_[_0x9323('0x29')](_0xe0467d[_0x9323('0x2a')],qs[_0x9323('0x2c')](_0x145b3b[_0x9323('0x26')][_0x9323('0x2c')]));_0xf7e7b7[_0x9323('0x2b')]=_0xf7e7b7[_0x9323('0x2b')]['length']?_0xf7e7b7[_0x9323('0x2b')]:_0xe0467d[_0x9323('0x2a')];if(!_0x145b3b['query']['hasOwnProperty'](_0x9323('0x2d'))){_0xf7e7b7[_0x9323('0x2e')]=qs[_0x9323('0x2e')](_0x145b3b[_0x9323('0x26')][_0x9323('0x2e')]);_0xf7e7b7['offset']=qs[_0x9323('0x16')](_0x145b3b[_0x9323('0x26')][_0x9323('0x16')]);}_0xf7e7b7[_0x9323('0x2f')]=qs[_0x9323('0x30')](_0x145b3b[_0x9323('0x26')][_0x9323('0x30')]);_0xf7e7b7[_0x9323('0x31')]=qs[_0x9323('0x32')](_[_0x9323('0x33')](_0x145b3b[_0x9323('0x26')],_0xe0467d[_0x9323('0x32')]));if(_0x2a4a10[_0x9323('0x28')]){if(_0x2a4a10[_0x9323('0x27')]){_0x2a4a10[_0x9323('0x27')]=moment(_0x2a4a10[_0x9323('0x27')])[_0x9323('0x34')](0x1,_0x9323('0x35'));}else{_0x2a4a10[_0x9323('0x27')]=moment(_0x2a4a10['dateStart'])[_0x9323('0x34')](0x1,'day');}_[_0x9323('0x36')](_0xf7e7b7[_0x9323('0x31')],{'createdAt':{'$gte':_0x2a4a10[_0x9323('0x28')],'$lte':_0x2a4a10['dateEnd']}});}if(_0x145b3b['query'][_0x9323('0x37')]){_0xf7e7b7[_0x9323('0x31')]=_[_0x9323('0x36')](_0xf7e7b7['where'],{'$or':_[_0x9323('0x38')](_0x5447cc,function(_0x272f93){if(_0x272f93['type']['key']!==_0x9323('0x39')){var _0x1e624e={};_0x1e624e[_0x272f93['field']]={'$like':'%'+_0x145b3b[_0x9323('0x26')][_0x9323('0x37')]+'%'};return _0x1e624e;}})});}_0xf7e7b7=_[_0x9323('0x36')]({},_0xf7e7b7,_0x145b3b[_0x9323('0x3a')]);var _0x35d685={'where':_0xf7e7b7[_0x9323('0x31')]};return db['ZendeskField'][_0x9323('0x15')](_0x35d685)['then'](function(_0x24e1a8){_0x16e1ef[_0x9323('0x15')]=_0x24e1a8;if(_0x145b3b['query'][_0x9323('0x3b')]){_0xf7e7b7[_0x9323('0x3c')]=[{'all':!![]}];}return db[_0x9323('0x23')][_0x9323('0x3d')](_0xf7e7b7);})['then'](function(_0x4f7c97){_0x16e1ef['rows']=_0x4f7c97;return _0x16e1ef;})['then'](respondWithFilteredResult(_0x4710b1,_0xf7e7b7))[_0x9323('0x3e')](handleError(_0x4710b1,null));};exports[_0x9323('0x3f')]=function(_0x2a656e,_0x1d5fae){var _0x352ade={'raw':!![],'where':{'id':_0x2a656e['params']['id']}},_0x2c9a23={};_0x2c9a23['model']=_[_0x9323('0x25')](db[_0x9323('0x23')][_0x9323('0x24')]);_0x2c9a23[_0x9323('0x26')]=_[_0x9323('0x25')](_0x2a656e[_0x9323('0x26')]);_0x2c9a23[_0x9323('0x32')]=_[_0x9323('0x29')](_0x2c9a23['model'],_0x2c9a23[_0x9323('0x26')]);_0x352ade[_0x9323('0x2b')]=_[_0x9323('0x29')](_0x2c9a23[_0x9323('0x2a')],qs['fields'](_0x2a656e[_0x9323('0x26')][_0x9323('0x2c')]));_0x352ade[_0x9323('0x2b')]=_0x352ade[_0x9323('0x2b')][_0x9323('0x40')]?_0x352ade['attributes']:_0x2c9a23['model'];if(_0x2a656e[_0x9323('0x26')][_0x9323('0x3b')]){_0x352ade[_0x9323('0x3c')]=[{'all':!![]}];}_0x352ade=_['merge']({},_0x352ade,_0x2a656e['options']);return db['ZendeskField']['find'](_0x352ade)[_0x9323('0x1c')](handleEntityNotFound(_0x1d5fae,null))[_0x9323('0x1c')](respondWithResult(_0x1d5fae,null))[_0x9323('0x3e')](handleError(_0x1d5fae,null));};exports['create']=function(_0xa233a8,_0x1f2cfa){return db[_0x9323('0x23')][_0x9323('0x41')](_0xa233a8[_0x9323('0x42')],{})['then'](respondWithResult(_0x1f2cfa,0xc9))[_0x9323('0x3e')](handleError(_0x1f2cfa,null));};exports['update']=function(_0x5859b7,_0x53ebd2){if(_0x5859b7[_0x9323('0x42')]['id']){delete _0x5859b7[_0x9323('0x42')]['id'];}return db[_0x9323('0x23')]['find']({'where':{'id':_0x5859b7[_0x9323('0x43')]['id']}})[_0x9323('0x1c')](handleEntityNotFound(_0x53ebd2,null))[_0x9323('0x1c')](saveUpdates(_0x5859b7[_0x9323('0x42')],null))[_0x9323('0x1c')](respondWithResult(_0x53ebd2,null))['catch'](handleError(_0x53ebd2,null));};exports[_0x9323('0x1b')]=function(_0x2d9d39,_0x279c00){return db[_0x9323('0x23')][_0x9323('0x44')]({'where':{'id':_0x2d9d39[_0x9323('0x43')]['id']}})[_0x9323('0x1c')](handleEntityNotFound(_0x279c00,null))[_0x9323('0x1c')](removeEntity(_0x279c00,null))['catch'](handleError(_0x279c00,null));};
\ No newline at end of file
index c20e40f..ad9885f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1813=['ZendeskField','int_zendesk_fields','util','api','moment','./intZendeskField.attributes','exports','define'];(function(_0x3341df,_0x34a448){var _0xea17b3=function(_0x17bc87){while(--_0x17bc87){_0x3341df['push'](_0x3341df['shift']());}};_0xea17b3(++_0x34a448);}(_0x1813,0x192));var _0x3181=function(_0x4ea0c9,_0x210c3a){_0x4ea0c9=_0x4ea0c9-0x0;var _0x494a23=_0x1813[_0x4ea0c9];return _0x494a23;};'use strict';var _=require('lodash');var util=require(_0x3181('0x0'));var logger=require('../../config/logger')(_0x3181('0x1'));var moment=require(_0x3181('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x3181('0x3'));module[_0x3181('0x4')]=function(_0x14d41b,_0x15a5e6){return _0x14d41b[_0x3181('0x5')](_0x3181('0x6'),attributes,{'tableName':_0x3181('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0774=['bluebird','request-promise','./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','../../config/logger','moment'];(function(_0x222d49,_0x422ac3){var _0x264eb=function(_0xae622b){while(--_0xae622b){_0x222d49['push'](_0x222d49['shift']());}};_0x264eb(++_0x422ac3);}(_0x0774,0x103));var _0x4077=function(_0x2e2b8e,_0x365ada){_0x2e2b8e=_0x2e2b8e-0x0;var _0x5d2b16=_0x0774[_0x2e2b8e];return _0x5d2b16;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4077('0x0'))('api');var moment=require(_0x4077('0x1'));var BPromise=require(_0x4077('0x2'));var rp=require(_0x4077('0x3'));var attributes=require(_0x4077('0x4'));module[_0x4077('0x5')]=function(_0x31c4d5,_0x446fc8){return _0x31c4d5[_0x4077('0x6')](_0x4077('0x7'),attributes,{'tableName':_0x4077('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e69403..592fe7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6582=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','error','code','message','result','catch'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x6582,0x108));var _0x2658=function(_0x5a1d97,_0x265b5a){_0x5a1d97=_0x5a1d97-0x0;var _0x401646=_0x6582[_0x5a1d97];return _0x401646;};'use strict';var _=require(_0x2658('0x0'));var util=require(_0x2658('0x1'));var moment=require(_0x2658('0x2'));var BPromise=require(_0x2658('0x3'));var rs=require(_0x2658('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2658('0x5'))['db'];var utils=require(_0x2658('0x6'));var logger=require(_0x2658('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2658('0x8')][_0x2658('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cb94f,_0x3f53e7,_0x443df){return new BPromise(function(_0x412a9f,_0x52ef38){return client[_0x2658('0xa')](_0x2cb94f,_0x443df)[_0x2658('0xb')](function(_0x426744){logger[_0x2658('0xc')](_0x2658('0xd'),_0x3f53e7,_0x2658('0xe'));logger[_0x2658('0xf')](_0x2658('0x10'),_0x3f53e7,_0x2658('0xe'),JSON['stringify'](_0x426744));if(_0x426744[_0x2658('0x11')]){if(_0x426744['error'][_0x2658('0x12')]===0x1f4){logger[_0x2658('0x11')](_0x2658('0xd'),_0x3f53e7,_0x426744[_0x2658('0x11')][_0x2658('0x13')]);return _0x52ef38(_0x426744[_0x2658('0x11')][_0x2658('0x13')]);}logger['error'](_0x2658('0xd'),_0x3f53e7,_0x426744[_0x2658('0x11')][_0x2658('0x13')]);return _0x412a9f(_0x426744[_0x2658('0x11')][_0x2658('0x13')]);}else{logger['info'](_0x2658('0xd'),_0x3f53e7,_0x2658('0xe'));_0x412a9f(_0x426744[_0x2658('0x14')]['message']);}})[_0x2658('0x15')](function(_0x44c6d2){logger[_0x2658('0x11')](_0x2658('0xd'),_0x3f53e7,_0x44c6d2);_0x52ef38(_0x44c6d2);});});}
\ No newline at end of file
+var _0x5eb1=['../../config/environment','jayson/promise','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x121886,_0x8cd8e5){var _0x20ca01=function(_0x15e144){while(--_0x15e144){_0x121886['push'](_0x121886['shift']());}};_0x20ca01(++_0x8cd8e5);}(_0x5eb1,0x7c));var _0x15eb=function(_0x397004,_0x7949f){_0x397004=_0x397004-0x0;var _0xa7a10=_0x5eb1[_0x397004];return _0xa7a10;};'use strict';var _=require('lodash');var util=require(_0x15eb('0x0'));var moment=require(_0x15eb('0x1'));var BPromise=require(_0x15eb('0x2'));var rs=require(_0x15eb('0x3'));var fs=require('fs');var Redis=require(_0x15eb('0x4'));var db=require(_0x15eb('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x15eb('0x6'))(_0x15eb('0x7'));var config=require(_0x15eb('0x8'));var jayson=require(_0x15eb('0x9'));var client=jayson['client'][_0x15eb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x212692,_0x594f54,_0xe4d8ce){return new BPromise(function(_0x160879,_0x730b12){return client[_0x15eb('0xb')](_0x212692,_0xe4d8ce)[_0x15eb('0xc')](function(_0x2ad2c1){logger[_0x15eb('0xd')](_0x15eb('0xe'),_0x594f54,_0x15eb('0xf'));logger[_0x15eb('0x10')](_0x15eb('0x11'),_0x594f54,_0x15eb('0xf'),JSON[_0x15eb('0x12')](_0x2ad2c1));if(_0x2ad2c1['error']){if(_0x2ad2c1[_0x15eb('0x13')]['code']===0x1f4){logger['error']('ZendeskField,\x20%s,\x20%s',_0x594f54,_0x2ad2c1[_0x15eb('0x13')][_0x15eb('0x14')]);return _0x730b12(_0x2ad2c1[_0x15eb('0x13')][_0x15eb('0x14')]);}logger['error'](_0x15eb('0xe'),_0x594f54,_0x2ad2c1[_0x15eb('0x13')][_0x15eb('0x14')]);return _0x160879(_0x2ad2c1[_0x15eb('0x13')]['message']);}else{logger['info']('ZendeskField,\x20%s,\x20%s',_0x594f54,'request\x20sent');_0x160879(_0x2ad2c1[_0x15eb('0x15')]['message']);}})['catch'](function(_0x3a78e9){logger['error'](_0x15eb('0xe'),_0x594f54,_0x3a78e9);_0x730b12(_0x3a78e9);});});}
\ No newline at end of file
index 30ca773..f4b8853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f4=['/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intZohoAccount.controller','isAuthenticated','index','get','/:id','show'];(function(_0x26f0d0,_0x43d083){var _0x13ca0f=function(_0x214289){while(--_0x214289){_0x26f0d0['push'](_0x26f0d0['shift']());}};_0x13ca0f(++_0x43d083);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x5e668f,_0x4a2f8d){_0x5e668f=_0x5e668f-0x0;var _0x23444c=_0xf4f4[_0x5e668f];return _0x23444c;};'use strict';var multer=require(_0x4f4f('0x0'));var util=require(_0x4f4f('0x1'));var path=require('path');var timeout=require(_0x4f4f('0x2'));var express=require(_0x4f4f('0x3'));var router=express[_0x4f4f('0x4')]();var auth=require(_0x4f4f('0x5'));var interaction=require(_0x4f4f('0x6'));var config=require('../../config/environment');var controller=require(_0x4f4f('0x7'));router['get']('/',auth[_0x4f4f('0x8')](),controller[_0x4f4f('0x9')]);router[_0x4f4f('0xa')](_0x4f4f('0xb'),auth[_0x4f4f('0x8')](),controller[_0x4f4f('0xc')]);router[_0x4f4f('0xa')](_0x4f4f('0xd'),auth['isAuthenticated'](),controller[_0x4f4f('0xe')]);router[_0x4f4f('0xa')](_0x4f4f('0xf'),auth[_0x4f4f('0x8')](),controller[_0x4f4f('0x10')]);router[_0x4f4f('0x11')]('/',auth[_0x4f4f('0x8')](),controller[_0x4f4f('0x12')]);router['post']('/:id/configurations',auth[_0x4f4f('0x8')](),controller[_0x4f4f('0x13')]);router[_0x4f4f('0x14')](_0x4f4f('0xb'),auth[_0x4f4f('0x8')](),controller[_0x4f4f('0x15')]);router['delete'](_0x4f4f('0xb'),auth['isAuthenticated'](),controller[_0x4f4f('0x16')]);module[_0x4f4f('0x17')]=router;
\ No newline at end of file
+var _0x14a0=['../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','getConfigurations','post','create','addConfiguration','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x14a0,0x8e));var _0x014a=function(_0x320bcf,_0x2051fb){_0x320bcf=_0x320bcf-0x0;var _0x4c0dde=_0x14a0[_0x320bcf];return _0x4c0dde;};'use strict';var multer=require('multer');var util=require(_0x014a('0x0'));var path=require(_0x014a('0x1'));var timeout=require(_0x014a('0x2'));var express=require(_0x014a('0x3'));var router=express[_0x014a('0x4')]();var auth=require(_0x014a('0x5'));var interaction=require(_0x014a('0x6'));var config=require('../../config/environment');var controller=require('./intZohoAccount.controller');router[_0x014a('0x7')]('/',auth[_0x014a('0x8')](),controller[_0x014a('0x9')]);router['get']('/:id',auth[_0x014a('0x8')](),controller[_0x014a('0xa')]);router[_0x014a('0x7')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x014a('0xb')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x014a('0xc')]('/',auth['isAuthenticated'](),controller[_0x014a('0xd')]);router[_0x014a('0xc')]('/:id/configurations',auth[_0x014a('0x8')](),controller[_0x014a('0xe')]);router[_0x014a('0xf')](_0x014a('0x10'),auth[_0x014a('0x8')](),controller[_0x014a('0x11')]);router[_0x014a('0x12')](_0x014a('0x10'),auth[_0x014a('0x8')](),controller[_0x014a('0x13')]);module[_0x014a('0x14')]=router;
\ No newline at end of file
index 5cdbe61..a77646c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4111=['STRING','sequelize','exports'];(function(_0x39a6e4,_0x23f981){var _0x32439e=function(_0x5876a1){while(--_0x5876a1){_0x39a6e4['push'](_0x39a6e4['shift']());}};_0x32439e(++_0x23f981);}(_0x4111,0x1e7));var _0x1411=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4111[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x1411('0x0'));module[_0x1411('0x1')]={'name':{'type':Sequelize[_0x1411('0x2')]},'description':{'type':Sequelize[_0x1411('0x2')]},'authToken':{'type':Sequelize[_0x1411('0x2')]},'host':{'type':Sequelize[_0x1411('0x2')]},'serverUrl':{'type':Sequelize[_0x1411('0x2')]}};
\ No newline at end of file
+var _0xf5ab=['sequelize','STRING'];(function(_0x35ce74,_0x333bdc){var _0x488bff=function(_0x222442){while(--_0x222442){_0x35ce74['push'](_0x35ce74['shift']());}};_0x488bff(++_0x333bdc);}(_0xf5ab,0xae));var _0xbf5a=function(_0x26f06b,_0x56432e){_0x26f06b=_0x26f06b-0x0;var _0x5ab5b7=_0xf5ab[_0x26f06b];return _0x5ab5b7;};'use strict';var Sequelize=require(_0xbf5a('0x0'));module['exports']={'name':{'type':Sequelize[_0xbf5a('0x1')]},'description':{'type':Sequelize[_0xbf5a('0x1')]},'authToken':{'type':Sequelize[_0xbf5a('0x1')]},'host':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xbf5a('0x1')]}};
\ No newline at end of file
index 4445d3c..4171c0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','count','offset','json','apply','reject','update','destroy','stack','name','send','index','ZohoAccount','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','pick','add','day','where','merge','map','key','VIRTUAL','field','filter','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','ZohoField','getFields','host','authToken','format','crmapi','response','Calls','section','includes','push','label','customfield','true','Pick\x20List','val','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','eml-format','rimraf','moment','bluebird','mustache','util','path','sox'];(function(_0x37862a,_0x2bc98e){var _0x5b0104=function(_0x391413){while(--_0x391413){_0x37862a['push'](_0x37862a['shift']());}};_0x5b0104(++_0x2bc98e);}(_0x757a,0xde));var _0xa757=function(_0x189798,_0x42ad5b){_0x189798=_0x189798-0x0;var _0x571213=_0x757a[_0x189798];return _0x571213;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xa757('0x0'));var rimraf=require(_0xa757('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa757('0x2'));var BPromise=require(_0xa757('0x3'));var Mustache=require(_0xa757('0x4'));var util=require(_0xa757('0x5'));var path=require(_0xa757('0x6'));var sox=require(_0xa757('0x7'));var csv=require('to-csv');var ejs=require(_0xa757('0x8'));var fs=require('fs');var _=require(_0xa757('0x9'));var squel=require('squel');var crypto=require(_0xa757('0xa'));var jsforce=require(_0xa757('0xb'));var deskjs=require(_0xa757('0xc'));var toCsv=require(_0xa757('0xd'));var querystring=require(_0xa757('0xe'));var Papa=require('papaparse');var Redis=require(_0xa757('0xf'));var qs=require(_0xa757('0x10'));var logger=require(_0xa757('0x11'))(_0xa757('0x12'));var utils=require(_0xa757('0x13'));var config=require(_0xa757('0x14'));var db=require(_0xa757('0x15'))['db'];var integrations=require('../../components/integrations/configuration');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4db68e,_0x421040,_0x544b45,_0x564187){return new BPromise(function(_0x2ed0d2,_0x513b1f){var _0x481508=_0x564187||client;return _0x481508[_0xa757('0x16')](_0x4db68e,_0x544b45)[_0xa757('0x17')](function(_0x355f0a){logger[_0xa757('0x18')](_0xa757('0x19'),_0x421040,_0xa757('0x1a'));logger[_0xa757('0x1b')](_0xa757('0x1c'),_0x421040,_0xa757('0x1a'),JSON[_0xa757('0x1d')](_0x355f0a));if(_0x355f0a['error']){if(_0x355f0a[_0xa757('0x1e')][_0xa757('0x1f')]===0x1f4){logger[_0xa757('0x1e')]('ZohoAccount,\x20%s,\x20%s',_0x421040,_0x355f0a['error'][_0xa757('0x20')]);return _0x513b1f(_0x355f0a[_0xa757('0x1e')][_0xa757('0x20')]);}logger[_0xa757('0x1e')](_0xa757('0x19'),_0x421040,_0x355f0a[_0xa757('0x1e')]['message']);return _0x2ed0d2(_0x355f0a[_0xa757('0x1e')]['message']);}else{logger[_0xa757('0x18')](_0xa757('0x19'),_0x421040,_0xa757('0x1a'));_0x2ed0d2(_0x355f0a[_0xa757('0x21')]['message']);}})['catch'](function(_0x40ec48){logger[_0xa757('0x1e')](_0xa757('0x19'),_0x421040,_0x40ec48);_0x513b1f(_0x40ec48);});});}function respondWithStatusCode(_0x8d121f,_0x1d6e2){_0x1d6e2=_0x1d6e2||0xcc;return function(_0x40562f){if(_0x40562f){return _0x8d121f[_0xa757('0x22')](_0x1d6e2);}return _0x8d121f[_0xa757('0x23')](_0x1d6e2)[_0xa757('0x24')]();};}function respondWithResult(_0x59fae6,_0x3707c1){_0x3707c1=_0x3707c1||0xc8;return function(_0x59e9d4){if(_0x59e9d4){return _0x59fae6[_0xa757('0x23')](_0x3707c1)['json'](_0x59e9d4);}};}function respondWithFilteredResult(_0x40551d,_0x3859ce){return function(_0x37c7e6){if(_0x37c7e6){var _0x4d58a4=_0x37c7e6[_0xa757('0x25')],_0x2b19d5=_0x3859ce['offset'],_0xcd98bd=_0x3859ce[_0xa757('0x26')]+_0x3859ce['limit'],_0x471e84;if(_0xcd98bd>=_0x4d58a4){_0xcd98bd=_0x4d58a4;_0x471e84=0xc8;}else{_0x471e84=0xce;}_0x40551d['status'](_0x471e84);return _0x40551d['set']('Content-Range',_0x2b19d5+'-'+_0xcd98bd+'/'+_0x4d58a4)[_0xa757('0x27')](_0x37c7e6);}return null;};}function patchUpdates(_0x596ae2){return function(_0x2208f9){try{jsonpatch[_0xa757('0x28')](_0x2208f9,_0x596ae2,!![]);}catch(_0x55c5f8){return BPromise[_0xa757('0x29')](_0x55c5f8);}return _0x2208f9['save']();};}function saveUpdates(_0x2c4823,_0xa6d0f6){return function(_0x5307c3){if(_0x5307c3){return _0x5307c3[_0xa757('0x2a')](_0x2c4823)['then'](function(_0x3a4a66){return _0x3a4a66;});}return null;};}function removeEntity(_0x27b3e2,_0x458974){return function(_0x300dc4){if(_0x300dc4){return _0x300dc4[_0xa757('0x2b')]()[_0xa757('0x17')](function(){_0x27b3e2[_0xa757('0x23')](0xcc)[_0xa757('0x24')]();});}};}function handleEntityNotFound(_0x112282,_0x384424){return function(_0x1f5d5a){if(!_0x1f5d5a){_0x112282[_0xa757('0x22')](0x194);}return _0x1f5d5a;};}function handleError(_0x25dfbb,_0x2dfb33){_0x2dfb33=_0x2dfb33||0x1f4;return function(_0x27be88){logger[_0xa757('0x1e')](_0x27be88[_0xa757('0x2c')]);if(_0x27be88[_0xa757('0x2d')]){delete _0x27be88[_0xa757('0x2d')];}_0x25dfbb[_0xa757('0x23')](_0x2dfb33)[_0xa757('0x2e')](_0x27be88);};}exports[_0xa757('0x2f')]=function(_0x379de7,_0x3aae1e){var _0x59700d={},_0x2adf93={},_0x21d6b3={'count':0x0,'rows':[]};var _0x1e9d63=db[_0xa757('0x30')][_0xa757('0x31')];_0x2adf93['model']=_[_0xa757('0x32')](_0x1e9d63);var _0x2af470={'dateStart':_0x379de7[_0xa757('0x33')][_0xa757('0x34')],'dateEnd':_0x379de7[_0xa757('0x33')][_0xa757('0x35')]};delete _0x379de7['query'][_0xa757('0x34')];delete _0x379de7[_0xa757('0x33')][_0xa757('0x35')];_0x2adf93[_0xa757('0x33')]=_[_0xa757('0x32')](_0x379de7[_0xa757('0x33')]);_0x2adf93[_0xa757('0x36')]=_[_0xa757('0x37')](_0x2adf93[_0xa757('0x38')],_0x2adf93['query']);_0x59700d[_0xa757('0x39')]=_[_0xa757('0x37')](_0x2adf93[_0xa757('0x38')],qs[_0xa757('0x3a')](_0x379de7[_0xa757('0x33')][_0xa757('0x3a')]));_0x59700d['attributes']=_0x59700d[_0xa757('0x39')][_0xa757('0x3b')]?_0x59700d['attributes']:_0x2adf93['model'];if(!_0x379de7[_0xa757('0x33')][_0xa757('0x3c')]('nolimit')){_0x59700d['limit']=qs[_0xa757('0x3d')](_0x379de7[_0xa757('0x33')][_0xa757('0x3d')]);_0x59700d['offset']=qs[_0xa757('0x26')](_0x379de7[_0xa757('0x33')][_0xa757('0x26')]);}_0x59700d[_0xa757('0x3e')]=qs[_0xa757('0x3f')](_0x379de7['query'][_0xa757('0x3f')]);_0x59700d['where']=qs['filters'](_[_0xa757('0x40')](_0x379de7[_0xa757('0x33')],_0x2adf93[_0xa757('0x36')]));if(_0x2af470[_0xa757('0x34')]){if(_0x2af470[_0xa757('0x35')]){_0x2af470['dateEnd']=moment(_0x2af470['dateEnd'])[_0xa757('0x41')](0x1,_0xa757('0x42'));}else{_0x2af470[_0xa757('0x35')]=moment(_0x2af470[_0xa757('0x34')])[_0xa757('0x41')](0x1,_0xa757('0x42'));}_['merge'](_0x59700d[_0xa757('0x43')],{'createdAt':{'$gte':_0x2af470[_0xa757('0x34')],'$lte':_0x2af470['dateEnd']}});}if(_0x379de7[_0xa757('0x33')]['filter']){_0x59700d[_0xa757('0x43')]=_[_0xa757('0x44')](_0x59700d['where'],{'$or':_[_0xa757('0x45')](_0x1e9d63,function(_0x23efad){if(_0x23efad['type'][_0xa757('0x46')]!==_0xa757('0x47')){var _0x27ae35={};_0x27ae35[_0x23efad[_0xa757('0x48')]]={'$like':'%'+_0x379de7['query'][_0xa757('0x49')]+'%'};return _0x27ae35;}})});}_0x59700d=_[_0xa757('0x44')]({},_0x59700d,_0x379de7[_0xa757('0x4a')]);var _0xec4610={'where':_0x59700d['where']};return db[_0xa757('0x30')]['count'](_0xec4610)['then'](function(_0x2acf88){_0x21d6b3[_0xa757('0x25')]=_0x2acf88;if(_0x379de7[_0xa757('0x33')]['includeAll']){_0x59700d[_0xa757('0x4b')]=[{'all':!![]}];}return db['ZohoAccount'][_0xa757('0x4c')](_0x59700d);})[_0xa757('0x17')](function(_0x265793){_0x21d6b3[_0xa757('0x4d')]=_0x265793;return _0x21d6b3;})[_0xa757('0x17')](respondWithFilteredResult(_0x3aae1e,_0x59700d))[_0xa757('0x4e')](handleError(_0x3aae1e,null));};exports[_0xa757('0x4f')]=function(_0x505cd,_0x581e95){var _0x2de226={'raw':![],'where':{'id':_0x505cd[_0xa757('0x50')]['id']}},_0x7411a3={};_0x7411a3[_0xa757('0x38')]=_[_0xa757('0x32')](db[_0xa757('0x30')][_0xa757('0x31')]);_0x7411a3[_0xa757('0x33')]=_[_0xa757('0x32')](_0x505cd[_0xa757('0x33')]);_0x7411a3[_0xa757('0x36')]=_[_0xa757('0x37')](_0x7411a3[_0xa757('0x38')],_0x7411a3[_0xa757('0x33')]);_0x2de226[_0xa757('0x39')]=_[_0xa757('0x37')](_0x7411a3['model'],qs[_0xa757('0x3a')](_0x505cd['query'][_0xa757('0x3a')]));_0x2de226[_0xa757('0x39')]=_0x2de226[_0xa757('0x39')][_0xa757('0x3b')]?_0x2de226['attributes']:_0x7411a3[_0xa757('0x38')];if(_0x505cd[_0xa757('0x33')][_0xa757('0x51')]){_0x2de226[_0xa757('0x4b')]=[{'all':!![]}];}_0x2de226=_['merge']({},_0x2de226,_0x505cd[_0xa757('0x4a')]);return db[_0xa757('0x30')][_0xa757('0x52')](_0x2de226)[_0xa757('0x17')](handleEntityNotFound(_0x581e95,null))[_0xa757('0x17')](respondWithResult(_0x581e95,null))[_0xa757('0x4e')](handleError(_0x581e95,null));};exports['create']=function(_0x485100,_0x5d21c1){return db['ZohoAccount'][_0xa757('0x53')](_0x485100[_0xa757('0x54')],{})[_0xa757('0x17')](respondWithResult(_0x5d21c1,0xc9))[_0xa757('0x4e')](handleError(_0x5d21c1,null));};exports[_0xa757('0x2a')]=function(_0x2d290b,_0x5efb32){if(_0x2d290b[_0xa757('0x54')]['id']){delete _0x2d290b[_0xa757('0x54')]['id'];}return db[_0xa757('0x30')][_0xa757('0x52')]({'where':{'id':_0x2d290b['params']['id']}})[_0xa757('0x17')](handleEntityNotFound(_0x5efb32,null))[_0xa757('0x17')](saveUpdates(_0x2d290b['body'],null))[_0xa757('0x17')](respondWithResult(_0x5efb32,null))['catch'](handleError(_0x5efb32,null));};exports[_0xa757('0x2b')]=function(_0x5d375c,_0x51be6e){return db['ZohoAccount']['find']({'where':{'id':_0x5d375c[_0xa757('0x50')]['id']}})[_0xa757('0x17')](handleEntityNotFound(_0x51be6e,null))[_0xa757('0x17')](removeEntity(_0x51be6e,null))[_0xa757('0x4e')](handleError(_0x51be6e,null));};exports[_0xa757('0x55')]=function(_0xc5ae37,_0x4c19a6,_0x4f0d7b){var _0x201557={};var _0x3afa56={};var _0x3ca1ef;var _0x4a5ad5;return db['ZohoAccount'][_0xa757('0x56')]({'where':{'id':_0xc5ae37[_0xa757('0x50')]['id']}})[_0xa757('0x17')](handleEntityNotFound(_0x4c19a6,null))[_0xa757('0x17')](function(_0x12b802){if(_0x12b802){_0x3ca1ef=_0x12b802;_0x3afa56[_0xa757('0x38')]=_['keys'](db[_0xa757('0x57')][_0xa757('0x31')]);_0x3afa56[_0xa757('0x33')]=_[_0xa757('0x32')](_0xc5ae37[_0xa757('0x33')]);_0x3afa56[_0xa757('0x36')]=_[_0xa757('0x37')](_0x3afa56[_0xa757('0x38')],_0x3afa56[_0xa757('0x33')]);_0x201557[_0xa757('0x39')]=_['intersection'](_0x3afa56[_0xa757('0x38')],qs['fields'](_0xc5ae37['query'][_0xa757('0x3a')]));_0x201557[_0xa757('0x39')]=_0x201557[_0xa757('0x39')][_0xa757('0x3b')]?_0x201557[_0xa757('0x39')]:_0x3afa56[_0xa757('0x38')];_0x201557[_0xa757('0x3e')]=qs[_0xa757('0x3f')](_0xc5ae37[_0xa757('0x33')][_0xa757('0x3f')]);_0x201557[_0xa757('0x43')]=qs['filters'](_[_0xa757('0x40')](_0xc5ae37[_0xa757('0x33')],_0x3afa56['filters']));if(_0xc5ae37[_0xa757('0x33')][_0xa757('0x49')]){_0x201557[_0xa757('0x43')]=_[_0xa757('0x44')](_0x201557[_0xa757('0x43')],{'$or':_[_0xa757('0x45')](_0x201557['attributes'],function(_0x413217){var _0x4ab31d={};_0x4ab31d[_0x413217]={'$like':'%'+_0xc5ae37[_0xa757('0x33')][_0xa757('0x49')]+'%'};return _0x4ab31d;})});}_0x201557=_[_0xa757('0x44')]({},_0x201557,_0xc5ae37[_0xa757('0x4a')]);return _0x3ca1ef[_0xa757('0x55')](_0x201557);}})['then'](function(_0x57ec52){if(_0x57ec52){_0x4a5ad5=_0x57ec52[_0xa757('0x3b')];if(!_0xc5ae37[_0xa757('0x33')][_0xa757('0x3c')]('nolimit')){_0x201557[_0xa757('0x3d')]=qs['limit'](_0xc5ae37[_0xa757('0x33')][_0xa757('0x3d')]);_0x201557[_0xa757('0x26')]=qs[_0xa757('0x26')](_0xc5ae37[_0xa757('0x33')][_0xa757('0x26')]);}return _0x3ca1ef['getConfigurations'](_0x201557);}})[_0xa757('0x17')](function(_0x193233){if(_0x193233){return _0x193233?{'count':_0x4a5ad5,'rows':_0x193233}:null;}})[_0xa757('0x17')](respondWithResult(_0x4c19a6,null))[_0xa757('0x4e')](handleError(_0x4c19a6,null));};exports[_0xa757('0x58')]=function(_0x518abb,_0x2586f9,_0x423f3a){if(_0x518abb[_0xa757('0x54')]['id']){delete _0x518abb[_0xa757('0x54')]['id'];}return db[_0xa757('0x30')]['findOne']({'where':{'id':_0x518abb[_0xa757('0x50')]['id']}})[_0xa757('0x17')](handleEntityNotFound(_0x2586f9,null))[_0xa757('0x17')](function(_0x529298){if(_0x529298){_0x518abb[_0xa757('0x54')][_0xa757('0x59')]=_0x529298['id'];_0x518abb[_0xa757('0x54')][_0xa757('0x5a')]=integrations[_0xa757('0x5b')](_0x518abb[_0xa757('0x54')][_0xa757('0x5c')],_0x518abb[_0xa757('0x54')][_0xa757('0x5d')]);_0x518abb[_0xa757('0x54')][_0xa757('0x5e')]=integrations[_0xa757('0x5f')](_0x518abb[_0xa757('0x54')][_0xa757('0x5c')],_0x518abb['body'][_0xa757('0x5d')]);return db[_0xa757('0x57')]['create'](_0x518abb[_0xa757('0x54')],{'include':[{'model':db[_0xa757('0x60')],'as':'Subjects'},{'model':db[_0xa757('0x60')],'as':_0xa757('0x5e')}]});}return null;})[_0xa757('0x17')](respondWithResult(_0x2586f9,null))[_0xa757('0x4e')](handleError(_0x2586f9,null));};exports[_0xa757('0x61')]=function(_0x312542,_0xdb2ac6,_0x2b4b1e){return db[_0xa757('0x30')][_0xa757('0x56')]({'where':{'id':_0x312542[_0xa757('0x50')]['id']},'attributes':['id',_0xa757('0x62'),_0xa757('0x63')]})[_0xa757('0x17')](handleEntityNotFound(_0xdb2ac6,null))[_0xa757('0x17')](function(_0x355b17){if(_0x355b17){return rp({'method':'GET','uri':util[_0xa757('0x64')]('https://crm.%s/crm/private/json/Calls/getFields',_0x355b17[_0xa757('0x62')]),'qs':{'authtoken':_0x355b17[_0xa757('0x63')],'scope':_0xa757('0x65')},'json':!![]});}})[_0xa757('0x17')](function(_0x283ee0){if(_0x283ee0){if(_0x283ee0['response']&&_0x283ee0[_0xa757('0x66')][_0xa757('0x1e')]){throw new Error(_0x283ee0[_0xa757('0x66')]['error'][_0xa757('0x20')]);}var _0x3619ec=[];if(_0x283ee0[_0xa757('0x67')]&&_0x283ee0['Calls']['section']){if(_0x283ee0[_0xa757('0x67')][_0xa757('0x68')]['FL']){var _0x388e6d=['Call\x20Purpose'];for(var _0x5dcd35=0x0,_0x4cc1ad=_0x283ee0['Calls'][_0xa757('0x68')]['FL'][_0xa757('0x3b')];_0x5dcd35<_0x4cc1ad;_0x5dcd35++){if(_[_0xa757('0x69')](_0x388e6d,_0x283ee0['Calls'][_0xa757('0x68')]['FL'][_0x5dcd35]['dv'])){_0x3619ec[_0xa757('0x6a')]({'id':_0x283ee0[_0xa757('0x67')][_0xa757('0x68')]['FL'][_0x5dcd35]['dv'],'name':_0x283ee0[_0xa757('0x67')][_0xa757('0x68')]['FL'][_0x5dcd35][_0xa757('0x6b')],'custom':_0x283ee0[_0xa757('0x67')][_0xa757('0x68')]['FL'][_0x5dcd35][_0xa757('0x6c')]===_0xa757('0x6d')?!![]:![],'options':_0x283ee0[_0xa757('0x67')]['section']['FL'][_0x5dcd35][_0xa757('0x5d')]===_0xa757('0x6e')&&_0x283ee0[_0xa757('0x67')][_0xa757('0x68')]['FL'][_0x5dcd35][_0xa757('0x6f')]?_[_0xa757('0x45')](_0x283ee0[_0xa757('0x67')][_0xa757('0x68')]['FL'][_0x5dcd35][_0xa757('0x6f')],function(_0x2d34b7){return{'name':_0x2d34b7,'value':_0x2d34b7};}):[]});}}}}return{'count':_0x3619ec[_0xa757('0x3b')],'rows':_0x3619ec};}})[_0xa757('0x17')](respondWithResult(_0xdb2ac6,null))[_0xa757('0x4e')](function(_0x3a258f){var _0x1b6adb=_0x312542[_0xa757('0x33')][_0xa757('0x70')]?0x1f4:_0x3a258f[_0xa757('0x71')]||0x1f4;logger[_0xa757('0x1e')](_0xa757('0x72'),_0xa757('0x61'),_0x1b6adb,JSON[_0xa757('0x1d')](_0x3a258f));delete _0x3a258f['name'];if(_0x1b6adb===0x191){_0x1b6adb=0x190;}_0xdb2ac6[_0xa757('0x23')](_0x1b6adb)[_0xa757('0x2e')](_0x312542['query'][_0xa757('0x70')]?{'message':'Wrong\x20credentials','statusCode':_0x3a258f[_0xa757('0x71')]}:_0x3a258f);});};
\ No newline at end of file
+var _0x9ffd=['sort','where','pick','dateStart','add','day','filter','merge','key','field','options','ZohoAccount','count','includeAll','findAll','rows','catch','show','include','find','create','body','params','getConfigurations','findOne','ZohoConfiguration','map','nolimit','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','type','ZohoField','host','authToken','GET','format','https://crm.%s/crm/private/json/Calls/getFields','crmapi','response','Calls','section','length','includes','label','customfield','true','Pick\x20List','val','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','then','ZohoAccount,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','sendStatus','status','end','json','offset','limit','Content-Range','apply','reject','save','destroy','stack','name','send','index','rawAttributes','keys','query','dateEnd','filters','intersection','model','fields','attributes','hasOwnProperty','order'];(function(_0x542739,_0x527cfc){var _0x40b9dd=function(_0x16525e){while(--_0x16525e){_0x542739['push'](_0x542739['shift']());}};_0x40b9dd(++_0x527cfc);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x4f22b5,_0x338847){_0x4f22b5=_0x4f22b5-0x0;var _0x2f94b7=_0x9ffd[_0x4f22b5];return _0x2f94b7;};'use strict';var pdf=require(_0xd9ff('0x0'));var emlformat=require(_0xd9ff('0x1'));var rimraf=require(_0xd9ff('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd9ff('0x3'));var rp=require(_0xd9ff('0x4'));var moment=require(_0xd9ff('0x5'));var BPromise=require(_0xd9ff('0x6'));var Mustache=require('mustache');var util=require(_0xd9ff('0x7'));var path=require(_0xd9ff('0x8'));var sox=require('sox');var csv=require(_0xd9ff('0x9'));var ejs=require(_0xd9ff('0xa'));var fs=require('fs');var _=require(_0xd9ff('0xb'));var squel=require(_0xd9ff('0xc'));var crypto=require(_0xd9ff('0xd'));var jsforce=require(_0xd9ff('0xe'));var deskjs=require(_0xd9ff('0xf'));var toCsv=require(_0xd9ff('0x9'));var querystring=require(_0xd9ff('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xd9ff('0x11'));var utils=require(_0xd9ff('0x12'));var config=require(_0xd9ff('0x13'));var db=require(_0xd9ff('0x14'))['db'];var integrations=require(_0xd9ff('0x15'));var jayson=require(_0xd9ff('0x16'));var client=jayson[_0xd9ff('0x17')][_0xd9ff('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x47d842,_0x47b0d7,_0xaaf7af,_0x16a0d9){return new BPromise(function(_0x415c58,_0x350a5d){var _0x12c39a=_0x16a0d9||client;return _0x12c39a['request'](_0x47d842,_0xaaf7af)[_0xd9ff('0x19')](function(_0x3c9ace){logger['info'](_0xd9ff('0x1a'),_0x47b0d7,'request\x20sent');logger['debug']('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x47b0d7,'request\x20sent',JSON[_0xd9ff('0x1b')](_0x3c9ace));if(_0x3c9ace['error']){if(_0x3c9ace[_0xd9ff('0x1c')][_0xd9ff('0x1d')]===0x1f4){logger[_0xd9ff('0x1c')](_0xd9ff('0x1a'),_0x47b0d7,_0x3c9ace[_0xd9ff('0x1c')][_0xd9ff('0x1e')]);return _0x350a5d(_0x3c9ace[_0xd9ff('0x1c')][_0xd9ff('0x1e')]);}logger[_0xd9ff('0x1c')](_0xd9ff('0x1a'),_0x47b0d7,_0x3c9ace[_0xd9ff('0x1c')][_0xd9ff('0x1e')]);return _0x415c58(_0x3c9ace[_0xd9ff('0x1c')]['message']);}else{logger['info'](_0xd9ff('0x1a'),_0x47b0d7,_0xd9ff('0x1f'));_0x415c58(_0x3c9ace['result']['message']);}})['catch'](function(_0x4b1477){logger[_0xd9ff('0x1c')]('ZohoAccount,\x20%s,\x20%s',_0x47b0d7,_0x4b1477);_0x350a5d(_0x4b1477);});});}function respondWithStatusCode(_0x4c486a,_0x3fd141){_0x3fd141=_0x3fd141||0xcc;return function(_0x291f52){if(_0x291f52){return _0x4c486a[_0xd9ff('0x20')](_0x3fd141);}return _0x4c486a[_0xd9ff('0x21')](_0x3fd141)[_0xd9ff('0x22')]();};}function respondWithResult(_0x4b058a,_0x4fada1){_0x4fada1=_0x4fada1||0xc8;return function(_0x1136e9){if(_0x1136e9){return _0x4b058a['status'](_0x4fada1)[_0xd9ff('0x23')](_0x1136e9);}};}function respondWithFilteredResult(_0x4d86fe,_0x285002){return function(_0x5d45b3){if(_0x5d45b3){var _0x10cbdd=_0x5d45b3['count'],_0x159e56=_0x285002[_0xd9ff('0x24')],_0x2138b4=_0x285002[_0xd9ff('0x24')]+_0x285002[_0xd9ff('0x25')],_0x2970e8;if(_0x2138b4>=_0x10cbdd){_0x2138b4=_0x10cbdd;_0x2970e8=0xc8;}else{_0x2970e8=0xce;}_0x4d86fe[_0xd9ff('0x21')](_0x2970e8);return _0x4d86fe['set'](_0xd9ff('0x26'),_0x159e56+'-'+_0x2138b4+'/'+_0x10cbdd)[_0xd9ff('0x23')](_0x5d45b3);}return null;};}function patchUpdates(_0x44b5a7){return function(_0x45fb63){try{jsonpatch[_0xd9ff('0x27')](_0x45fb63,_0x44b5a7,!![]);}catch(_0xe516e2){return BPromise[_0xd9ff('0x28')](_0xe516e2);}return _0x45fb63[_0xd9ff('0x29')]();};}function saveUpdates(_0x3dc443,_0x5706cf){return function(_0xcea5db){if(_0xcea5db){return _0xcea5db['update'](_0x3dc443)[_0xd9ff('0x19')](function(_0x29c532){return _0x29c532;});}return null;};}function removeEntity(_0xbdd352,_0x552d08){return function(_0x2ba4d3){if(_0x2ba4d3){return _0x2ba4d3[_0xd9ff('0x2a')]()[_0xd9ff('0x19')](function(){_0xbdd352[_0xd9ff('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41adb1,_0x5743de){return function(_0x18c28b){if(!_0x18c28b){_0x41adb1[_0xd9ff('0x20')](0x194);}return _0x18c28b;};}function handleError(_0x323cb5,_0x206424){_0x206424=_0x206424||0x1f4;return function(_0x20685b){logger[_0xd9ff('0x1c')](_0x20685b[_0xd9ff('0x2b')]);if(_0x20685b[_0xd9ff('0x2c')]){delete _0x20685b[_0xd9ff('0x2c')];}_0x323cb5[_0xd9ff('0x21')](_0x206424)[_0xd9ff('0x2d')](_0x20685b);};}exports[_0xd9ff('0x2e')]=function(_0x4670e4,_0x66f4d){var _0x498025={},_0x13322f={},_0x1ef7c3={'count':0x0,'rows':[]};var _0x2bde85=db['ZohoAccount'][_0xd9ff('0x2f')];_0x13322f['model']=_[_0xd9ff('0x30')](_0x2bde85);var _0x4ae56b={'dateStart':_0x4670e4[_0xd9ff('0x31')]['dateStart'],'dateEnd':_0x4670e4[_0xd9ff('0x31')][_0xd9ff('0x32')]};delete _0x4670e4[_0xd9ff('0x31')]['dateStart'];delete _0x4670e4['query']['dateEnd'];_0x13322f[_0xd9ff('0x31')]=_[_0xd9ff('0x30')](_0x4670e4[_0xd9ff('0x31')]);_0x13322f[_0xd9ff('0x33')]=_[_0xd9ff('0x34')](_0x13322f[_0xd9ff('0x35')],_0x13322f['query']);_0x498025['attributes']=_['intersection'](_0x13322f[_0xd9ff('0x35')],qs[_0xd9ff('0x36')](_0x4670e4[_0xd9ff('0x31')][_0xd9ff('0x36')]));_0x498025['attributes']=_0x498025[_0xd9ff('0x37')]['length']?_0x498025[_0xd9ff('0x37')]:_0x13322f[_0xd9ff('0x35')];if(!_0x4670e4[_0xd9ff('0x31')][_0xd9ff('0x38')]('nolimit')){_0x498025[_0xd9ff('0x25')]=qs[_0xd9ff('0x25')](_0x4670e4['query'][_0xd9ff('0x25')]);_0x498025[_0xd9ff('0x24')]=qs[_0xd9ff('0x24')](_0x4670e4[_0xd9ff('0x31')][_0xd9ff('0x24')]);}_0x498025[_0xd9ff('0x39')]=qs['sort'](_0x4670e4[_0xd9ff('0x31')][_0xd9ff('0x3a')]);_0x498025[_0xd9ff('0x3b')]=qs[_0xd9ff('0x33')](_[_0xd9ff('0x3c')](_0x4670e4['query'],_0x13322f[_0xd9ff('0x33')]));if(_0x4ae56b[_0xd9ff('0x3d')]){if(_0x4ae56b[_0xd9ff('0x32')]){_0x4ae56b['dateEnd']=moment(_0x4ae56b['dateEnd'])[_0xd9ff('0x3e')](0x1,_0xd9ff('0x3f'));}else{_0x4ae56b[_0xd9ff('0x32')]=moment(_0x4ae56b[_0xd9ff('0x3d')])[_0xd9ff('0x3e')](0x1,_0xd9ff('0x3f'));}_['merge'](_0x498025[_0xd9ff('0x3b')],{'createdAt':{'$gte':_0x4ae56b[_0xd9ff('0x3d')],'$lte':_0x4ae56b['dateEnd']}});}if(_0x4670e4[_0xd9ff('0x31')][_0xd9ff('0x40')]){_0x498025[_0xd9ff('0x3b')]=_[_0xd9ff('0x41')](_0x498025[_0xd9ff('0x3b')],{'$or':_['map'](_0x2bde85,function(_0x5cf34e){if(_0x5cf34e['type'][_0xd9ff('0x42')]!=='VIRTUAL'){var _0x4528c1={};_0x4528c1[_0x5cf34e[_0xd9ff('0x43')]]={'$like':'%'+_0x4670e4[_0xd9ff('0x31')]['filter']+'%'};return _0x4528c1;}})});}_0x498025=_[_0xd9ff('0x41')]({},_0x498025,_0x4670e4[_0xd9ff('0x44')]);var _0x536a3b={'where':_0x498025[_0xd9ff('0x3b')]};return db[_0xd9ff('0x45')][_0xd9ff('0x46')](_0x536a3b)[_0xd9ff('0x19')](function(_0x559101){_0x1ef7c3[_0xd9ff('0x46')]=_0x559101;if(_0x4670e4['query'][_0xd9ff('0x47')]){_0x498025['include']=[{'all':!![]}];}return db[_0xd9ff('0x45')][_0xd9ff('0x48')](_0x498025);})[_0xd9ff('0x19')](function(_0x1760c3){_0x1ef7c3[_0xd9ff('0x49')]=_0x1760c3;return _0x1ef7c3;})['then'](respondWithFilteredResult(_0x66f4d,_0x498025))[_0xd9ff('0x4a')](handleError(_0x66f4d,null));};exports[_0xd9ff('0x4b')]=function(_0x2fbe53,_0xa3f86d){var _0x5c3e11={'raw':![],'where':{'id':_0x2fbe53['params']['id']}},_0x537282={};_0x537282[_0xd9ff('0x35')]=_[_0xd9ff('0x30')](db[_0xd9ff('0x45')]['rawAttributes']);_0x537282[_0xd9ff('0x31')]=_[_0xd9ff('0x30')](_0x2fbe53[_0xd9ff('0x31')]);_0x537282[_0xd9ff('0x33')]=_[_0xd9ff('0x34')](_0x537282[_0xd9ff('0x35')],_0x537282[_0xd9ff('0x31')]);_0x5c3e11[_0xd9ff('0x37')]=_[_0xd9ff('0x34')](_0x537282[_0xd9ff('0x35')],qs[_0xd9ff('0x36')](_0x2fbe53[_0xd9ff('0x31')][_0xd9ff('0x36')]));_0x5c3e11['attributes']=_0x5c3e11[_0xd9ff('0x37')]['length']?_0x5c3e11[_0xd9ff('0x37')]:_0x537282['model'];if(_0x2fbe53[_0xd9ff('0x31')]['includeAll']){_0x5c3e11[_0xd9ff('0x4c')]=[{'all':!![]}];}_0x5c3e11=_['merge']({},_0x5c3e11,_0x2fbe53[_0xd9ff('0x44')]);return db['ZohoAccount'][_0xd9ff('0x4d')](_0x5c3e11)['then'](handleEntityNotFound(_0xa3f86d,null))[_0xd9ff('0x19')](respondWithResult(_0xa3f86d,null))['catch'](handleError(_0xa3f86d,null));};exports[_0xd9ff('0x4e')]=function(_0x103c99,_0x122c9d){return db[_0xd9ff('0x45')]['create'](_0x103c99[_0xd9ff('0x4f')],{})[_0xd9ff('0x19')](respondWithResult(_0x122c9d,0xc9))[_0xd9ff('0x4a')](handleError(_0x122c9d,null));};exports['update']=function(_0x2d6c3,_0x32e1b9){if(_0x2d6c3[_0xd9ff('0x4f')]['id']){delete _0x2d6c3[_0xd9ff('0x4f')]['id'];}return db[_0xd9ff('0x45')]['find']({'where':{'id':_0x2d6c3[_0xd9ff('0x50')]['id']}})[_0xd9ff('0x19')](handleEntityNotFound(_0x32e1b9,null))[_0xd9ff('0x19')](saveUpdates(_0x2d6c3[_0xd9ff('0x4f')],null))[_0xd9ff('0x19')](respondWithResult(_0x32e1b9,null))[_0xd9ff('0x4a')](handleError(_0x32e1b9,null));};exports[_0xd9ff('0x2a')]=function(_0x5bac6f,_0x3be850){return db[_0xd9ff('0x45')]['find']({'where':{'id':_0x5bac6f[_0xd9ff('0x50')]['id']}})[_0xd9ff('0x19')](handleEntityNotFound(_0x3be850,null))['then'](removeEntity(_0x3be850,null))[_0xd9ff('0x4a')](handleError(_0x3be850,null));};exports[_0xd9ff('0x51')]=function(_0x25d8d1,_0x54ea27,_0x4ea9c6){var _0x39473e={};var _0x4f0c33={};var _0x34dc83;var _0x1e4d0c;return db[_0xd9ff('0x45')][_0xd9ff('0x52')]({'where':{'id':_0x25d8d1['params']['id']}})['then'](handleEntityNotFound(_0x54ea27,null))['then'](function(_0x188b58){if(_0x188b58){_0x34dc83=_0x188b58;_0x4f0c33[_0xd9ff('0x35')]=_[_0xd9ff('0x30')](db[_0xd9ff('0x53')][_0xd9ff('0x2f')]);_0x4f0c33['query']=_[_0xd9ff('0x30')](_0x25d8d1['query']);_0x4f0c33[_0xd9ff('0x33')]=_[_0xd9ff('0x34')](_0x4f0c33[_0xd9ff('0x35')],_0x4f0c33[_0xd9ff('0x31')]);_0x39473e[_0xd9ff('0x37')]=_[_0xd9ff('0x34')](_0x4f0c33[_0xd9ff('0x35')],qs[_0xd9ff('0x36')](_0x25d8d1['query'][_0xd9ff('0x36')]));_0x39473e[_0xd9ff('0x37')]=_0x39473e['attributes']['length']?_0x39473e[_0xd9ff('0x37')]:_0x4f0c33['model'];_0x39473e[_0xd9ff('0x39')]=qs[_0xd9ff('0x3a')](_0x25d8d1['query'][_0xd9ff('0x3a')]);_0x39473e[_0xd9ff('0x3b')]=qs[_0xd9ff('0x33')](_[_0xd9ff('0x3c')](_0x25d8d1[_0xd9ff('0x31')],_0x4f0c33['filters']));if(_0x25d8d1[_0xd9ff('0x31')]['filter']){_0x39473e['where']=_[_0xd9ff('0x41')](_0x39473e[_0xd9ff('0x3b')],{'$or':_[_0xd9ff('0x54')](_0x39473e[_0xd9ff('0x37')],function(_0x56d822){var _0x13f6ab={};_0x13f6ab[_0x56d822]={'$like':'%'+_0x25d8d1[_0xd9ff('0x31')][_0xd9ff('0x40')]+'%'};return _0x13f6ab;})});}_0x39473e=_[_0xd9ff('0x41')]({},_0x39473e,_0x25d8d1[_0xd9ff('0x44')]);return _0x34dc83[_0xd9ff('0x51')](_0x39473e);}})[_0xd9ff('0x19')](function(_0x1d80f1){if(_0x1d80f1){_0x1e4d0c=_0x1d80f1['length'];if(!_0x25d8d1['query']['hasOwnProperty'](_0xd9ff('0x55'))){_0x39473e[_0xd9ff('0x25')]=qs['limit'](_0x25d8d1[_0xd9ff('0x31')][_0xd9ff('0x25')]);_0x39473e[_0xd9ff('0x24')]=qs[_0xd9ff('0x24')](_0x25d8d1[_0xd9ff('0x31')][_0xd9ff('0x24')]);}return _0x34dc83[_0xd9ff('0x51')](_0x39473e);}})[_0xd9ff('0x19')](function(_0x5e5460){if(_0x5e5460){return _0x5e5460?{'count':_0x1e4d0c,'rows':_0x5e5460}:null;}})[_0xd9ff('0x19')](respondWithResult(_0x54ea27,null))[_0xd9ff('0x4a')](handleError(_0x54ea27,null));};exports[_0xd9ff('0x56')]=function(_0x533050,_0x14e936,_0x58c9c2){if(_0x533050[_0xd9ff('0x4f')]['id']){delete _0x533050[_0xd9ff('0x4f')]['id'];}return db[_0xd9ff('0x45')]['findOne']({'where':{'id':_0x533050[_0xd9ff('0x50')]['id']}})[_0xd9ff('0x19')](handleEntityNotFound(_0x14e936,null))[_0xd9ff('0x19')](function(_0x1cd620){if(_0x1cd620){_0x533050['body'][_0xd9ff('0x57')]=_0x1cd620['id'];_0x533050[_0xd9ff('0x4f')][_0xd9ff('0x58')]=integrations['getSubjects'](_0x533050[_0xd9ff('0x4f')][_0xd9ff('0x59')],_0x533050[_0xd9ff('0x4f')]['type']);_0x533050[_0xd9ff('0x4f')][_0xd9ff('0x5a')]=integrations[_0xd9ff('0x5b')](_0x533050[_0xd9ff('0x4f')][_0xd9ff('0x59')],_0x533050['body'][_0xd9ff('0x5c')]);return db[_0xd9ff('0x53')]['create'](_0x533050[_0xd9ff('0x4f')],{'include':[{'model':db[_0xd9ff('0x5d')],'as':_0xd9ff('0x58')},{'model':db['ZohoField'],'as':_0xd9ff('0x5a')}]});}return null;})['then'](respondWithResult(_0x14e936,null))[_0xd9ff('0x4a')](handleError(_0x14e936,null));};exports['getFields']=function(_0x3b2848,_0x227124,_0x3e6c28){return db[_0xd9ff('0x45')][_0xd9ff('0x52')]({'where':{'id':_0x3b2848[_0xd9ff('0x50')]['id']},'attributes':['id',_0xd9ff('0x5e'),_0xd9ff('0x5f')]})[_0xd9ff('0x19')](handleEntityNotFound(_0x227124,null))[_0xd9ff('0x19')](function(_0x4955cc){if(_0x4955cc){return rp({'method':_0xd9ff('0x60'),'uri':util[_0xd9ff('0x61')](_0xd9ff('0x62'),_0x4955cc[_0xd9ff('0x5e')]),'qs':{'authtoken':_0x4955cc[_0xd9ff('0x5f')],'scope':_0xd9ff('0x63')},'json':!![]});}})['then'](function(_0x4b2b32){if(_0x4b2b32){if(_0x4b2b32[_0xd9ff('0x64')]&&_0x4b2b32[_0xd9ff('0x64')][_0xd9ff('0x1c')]){throw new Error(_0x4b2b32[_0xd9ff('0x64')][_0xd9ff('0x1c')][_0xd9ff('0x1e')]);}var _0x5b234c=[];if(_0x4b2b32[_0xd9ff('0x65')]&&_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]){if(_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]['FL']){var _0x32aa19=['Call\x20Purpose'];for(var _0x124214=0x0,_0x3aef79=_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]['FL'][_0xd9ff('0x67')];_0x124214<_0x3aef79;_0x124214++){if(_[_0xd9ff('0x68')](_0x32aa19,_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]['FL'][_0x124214]['dv'])){_0x5b234c['push']({'id':_0x4b2b32[_0xd9ff('0x65')]['section']['FL'][_0x124214]['dv'],'name':_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]['FL'][_0x124214][_0xd9ff('0x69')],'custom':_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]['FL'][_0x124214][_0xd9ff('0x6a')]===_0xd9ff('0x6b')?!![]:![],'options':_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]['FL'][_0x124214][_0xd9ff('0x5c')]===_0xd9ff('0x6c')&&_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]['FL'][_0x124214]['val']?_[_0xd9ff('0x54')](_0x4b2b32[_0xd9ff('0x65')][_0xd9ff('0x66')]['FL'][_0x124214][_0xd9ff('0x6d')],function(_0x4c9b1b){return{'name':_0x4c9b1b,'value':_0x4c9b1b};}):[]});}}}}return{'count':_0x5b234c[_0xd9ff('0x67')],'rows':_0x5b234c};}})[_0xd9ff('0x19')](respondWithResult(_0x227124,null))['catch'](function(_0xd2ff57){var _0x1afdd4=_0x3b2848[_0xd9ff('0x31')][_0xd9ff('0x6e')]?0x1f4:_0xd2ff57[_0xd9ff('0x6f')]||0x1f4;logger[_0xd9ff('0x1c')](_0xd9ff('0x70'),'getFields',_0x1afdd4,JSON[_0xd9ff('0x1b')](_0xd2ff57));delete _0xd2ff57['name'];if(_0x1afdd4===0x191){_0x1afdd4=0x190;}_0x227124[_0xd9ff('0x21')](_0x1afdd4)[_0xd9ff('0x2d')](_0x3b2848[_0xd9ff('0x31')][_0xd9ff('0x6e')]?{'message':_0xd9ff('0x71'),'statusCode':_0xd2ff57[_0xd9ff('0x6f')]}:_0xd2ff57);});};
\ No newline at end of file
index d490ef4..dbd84a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b2b=['define','ZohoAccount','int_zoho_accounts','lodash','util','../../config/logger','moment','bluebird','./intZohoAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x44029c,_0x426690){var _0x547fa1=function(_0x37b1f9){while(--_0x37b1f9){_0x44029c['push'](_0x44029c['shift']());}};_0x547fa1(++_0x426690);}(_0x1b2b,0xc9));var _0xb1b2=function(_0x2b29ab,_0x201845){_0x2b29ab=_0x2b29ab-0x0;var _0x16e64b=_0x1b2b[_0x2b29ab];return _0x16e64b;};'use strict';var _=require(_0xb1b2('0x0'));var util=require(_0xb1b2('0x1'));var logger=require(_0xb1b2('0x2'))('api');var moment=require(_0xb1b2('0x3'));var BPromise=require(_0xb1b2('0x4'));var rp=require('request-promise');var attributes=require(_0xb1b2('0x5'));var integrations=require(_0xb1b2('0x6'));module[_0xb1b2('0x7')]=function(_0x4c0daa,_0x1caedc){return _0x4c0daa[_0xb1b2('0x8')](_0xb1b2('0x9'),attributes,{'tableName':_0xb1b2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x87eb=['bluebird','request-promise','./intZohoAccount.attributes','../../components/integrations/configuration','exports','int_zoho_accounts','lodash','util','../../config/logger','api'];(function(_0x892fed,_0xb9234d){var _0x301ff4=function(_0x2ac34f){while(--_0x2ac34f){_0x892fed['push'](_0x892fed['shift']());}};_0x301ff4(++_0xb9234d);}(_0x87eb,0x178));var _0xb87e=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0x87eb[_0x11ce46];return _0x368a1e;};'use strict';var _=require(_0xb87e('0x0'));var util=require(_0xb87e('0x1'));var logger=require(_0xb87e('0x2'))(_0xb87e('0x3'));var moment=require('moment');var BPromise=require(_0xb87e('0x4'));var rp=require(_0xb87e('0x5'));var attributes=require(_0xb87e('0x6'));var integrations=require(_0xb87e('0x7'));module[_0xb87e('0x8')]=function(_0x3abe46,_0x40ec12){return _0x3abe46['define']('ZohoAccount',attributes,{'tableName':_0xb87e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9a37577..8f147b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e4e=['lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','ZohoAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetZohoAccount','ShowZohoAccount','find'];(function(_0x226903,_0x46c946){var _0x3f63bf=function(_0x5eefef){while(--_0x5eefef){_0x226903['push'](_0x226903['shift']());}};_0x3f63bf(++_0x46c946);}(_0x1e4e,0xaf));var _0xe1e4=function(_0x43db7a,_0x2d8c41){_0x43db7a=_0x43db7a-0x0;var _0x1e029f=_0x1e4e[_0x43db7a];return _0x1e029f;};'use strict';var _=require(_0xe1e4('0x0'));var util=require(_0xe1e4('0x1'));var moment=require('moment');var BPromise=require(_0xe1e4('0x2'));var rs=require(_0xe1e4('0x3'));var fs=require('fs');var Redis=require(_0xe1e4('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe1e4('0x5'));var logger=require('../../config/logger')(_0xe1e4('0x6'));var config=require(_0xe1e4('0x7'));var jayson=require(_0xe1e4('0x8'));var client=jayson[_0xe1e4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x9a0a7d,_0x5292a8,_0x25a083){return new BPromise(function(_0x47bc2f,_0x428b49){return client[_0xe1e4('0xa')](_0x9a0a7d,_0x25a083)[_0xe1e4('0xb')](function(_0x452f2b){logger[_0xe1e4('0xc')](_0xe1e4('0xd'),_0x5292a8,_0xe1e4('0xe'));logger[_0xe1e4('0xf')](_0xe1e4('0x10'),_0x5292a8,_0xe1e4('0xe'),JSON['stringify'](_0x452f2b));if(_0x452f2b['error']){if(_0x452f2b['error'][_0xe1e4('0x11')]===0x1f4){logger[_0xe1e4('0x12')](_0xe1e4('0xd'),_0x5292a8,_0x452f2b[_0xe1e4('0x12')][_0xe1e4('0x13')]);return _0x428b49(_0x452f2b[_0xe1e4('0x12')]['message']);}logger[_0xe1e4('0x12')]('ZohoAccount,\x20%s,\x20%s',_0x5292a8,_0x452f2b[_0xe1e4('0x12')][_0xe1e4('0x13')]);return _0x47bc2f(_0x452f2b[_0xe1e4('0x12')][_0xe1e4('0x13')]);}else{logger[_0xe1e4('0xc')](_0xe1e4('0xd'),_0x5292a8,'request\x20sent');_0x47bc2f(_0x452f2b[_0xe1e4('0x14')][_0xe1e4('0x13')]);}})[_0xe1e4('0x15')](function(_0xfe628a){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x5292a8,_0xfe628a);_0x428b49(_0xfe628a);});});}exports['GetZohoAccount']=function(_0x2ee00a){var _0x1c9e59=this;return new Promise(function(_0x30b9f9,_0x563c39){return db[_0xe1e4('0x16')][_0xe1e4('0x17')]({'raw':_0x2ee00a['options']?_0x2ee00a[_0xe1e4('0x18')][_0xe1e4('0x19')]===undefined?!![]:![]:!![],'where':_0x2ee00a[_0xe1e4('0x18')]?_0x2ee00a['options'][_0xe1e4('0x1a')]||null:null,'attributes':_0x2ee00a[_0xe1e4('0x18')]?_0x2ee00a[_0xe1e4('0x18')][_0xe1e4('0x1b')]||null:null,'limit':_0x2ee00a[_0xe1e4('0x18')]?_0x2ee00a[_0xe1e4('0x18')][_0xe1e4('0x1c')]||null:null,'include':_0x2ee00a[_0xe1e4('0x18')]?_0x2ee00a[_0xe1e4('0x18')][_0xe1e4('0x1d')]?_[_0xe1e4('0x1e')](_0x2ee00a[_0xe1e4('0x18')][_0xe1e4('0x1d')],function(_0xe98a3){return{'model':db[_0xe98a3['model']],'as':_0xe98a3['as'],'attributes':_0xe98a3[_0xe1e4('0x1b')],'include':_0xe98a3[_0xe1e4('0x1d')]?_['map'](_0xe98a3['include'],function(_0x556ab7){return{'model':db[_0x556ab7[_0xe1e4('0x1f')]],'as':_0x556ab7['as'],'attributes':_0x556ab7[_0xe1e4('0x1b')],'include':_0x556ab7[_0xe1e4('0x1d')]?_[_0xe1e4('0x1e')](_0x556ab7[_0xe1e4('0x1d')],function(_0x421c86){return{'model':db[_0x421c86[_0xe1e4('0x1f')]],'as':_0x421c86['as'],'attributes':_0x421c86[_0xe1e4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xe1e4('0xb')](function(_0x15aa58){logger[_0xe1e4('0xc')](_0xe1e4('0x20'),_0x2ee00a);logger['debug'](_0xe1e4('0x20'),_0x2ee00a,JSON['stringify'](_0x15aa58));_0x30b9f9(_0x15aa58);})[_0xe1e4('0x15')](function(_0x3fc0d9){logger[_0xe1e4('0x12')](_0xe1e4('0x20'),_0x3fc0d9[_0xe1e4('0x13')],_0x2ee00a);_0x563c39(_0x1c9e59[_0xe1e4('0x12')](0x1f4,_0x3fc0d9[_0xe1e4('0x13')]));});});};exports[_0xe1e4('0x21')]=function(_0x1a6d63){var _0x23c72b=this;return new Promise(function(_0x298861,_0x8bbe18){return db['ZohoAccount'][_0xe1e4('0x22')]({'raw':_0x1a6d63[_0xe1e4('0x18')]?_0x1a6d63[_0xe1e4('0x18')][_0xe1e4('0x19')]===undefined?!![]:![]:!![],'where':_0x1a6d63[_0xe1e4('0x18')]?_0x1a6d63[_0xe1e4('0x18')]['where']||null:null,'attributes':_0x1a6d63[_0xe1e4('0x18')]?_0x1a6d63[_0xe1e4('0x18')][_0xe1e4('0x1b')]||null:null,'include':_0x1a6d63[_0xe1e4('0x18')]?_0x1a6d63[_0xe1e4('0x18')][_0xe1e4('0x1d')]?_[_0xe1e4('0x1e')](_0x1a6d63[_0xe1e4('0x18')]['include'],function(_0x45448c){return{'model':db[_0x45448c[_0xe1e4('0x1f')]],'as':_0x45448c['as'],'attributes':_0x45448c['attributes'],'include':_0x45448c[_0xe1e4('0x1d')]?_[_0xe1e4('0x1e')](_0x45448c[_0xe1e4('0x1d')],function(_0x3f3a5d){return{'model':db[_0x3f3a5d['model']],'as':_0x3f3a5d['as'],'attributes':_0x3f3a5d[_0xe1e4('0x1b')],'include':_0x3f3a5d[_0xe1e4('0x1d')]?_['map'](_0x3f3a5d['include'],function(_0x4aa379){return{'model':db[_0x4aa379[_0xe1e4('0x1f')]],'as':_0x4aa379['as'],'attributes':_0x4aa379[_0xe1e4('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x44e91a){logger[_0xe1e4('0xc')](_0xe1e4('0x21'),_0x1a6d63);logger[_0xe1e4('0xf')](_0xe1e4('0x21'),_0x1a6d63,JSON['stringify'](_0x44e91a));_0x298861(_0x44e91a);})['catch'](function(_0x149d5c){logger[_0xe1e4('0x12')](_0xe1e4('0x21'),_0x149d5c[_0xe1e4('0x13')],_0x1a6d63);_0x8bbe18(_0x23c72b[_0xe1e4('0x12')](0x1f4,_0x149d5c[_0xe1e4('0x13')]));});});};
\ No newline at end of file
+var _0x5673=['raw','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','then','request\x20sent','debug','error','ZohoAccount,\x20%s,\x20%s','message','info','result','catch','GetZohoAccount','ZohoAccount','options','attributes','map','include','model','stringify','ShowZohoAccount'];(function(_0xcb8ab,_0x252f1e){var _0x3c5d2b=function(_0x488e22){while(--_0x488e22){_0xcb8ab['push'](_0xcb8ab['shift']());}};_0x3c5d2b(++_0x252f1e);}(_0x5673,0x145));var _0x3567=function(_0x33ebf5,_0x258ec6){_0x33ebf5=_0x33ebf5-0x0;var _0x66957b=_0x5673[_0x33ebf5];return _0x66957b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3567('0x0'));var BPromise=require(_0x3567('0x1'));var rs=require(_0x3567('0x2'));var fs=require('fs');var Redis=require(_0x3567('0x3'));var db=require(_0x3567('0x4'))['db'];var utils=require(_0x3567('0x5'));var logger=require(_0x3567('0x6'))(_0x3567('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2dcb47,_0x8c6e84,_0x183902){return new BPromise(function(_0x205495,_0x14923f){return client['request'](_0x2dcb47,_0x183902)[_0x3567('0x8')](function(_0x518f75){logger['info']('ZohoAccount,\x20%s,\x20%s',_0x8c6e84,_0x3567('0x9'));logger[_0x3567('0xa')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x8c6e84,'request\x20sent',JSON['stringify'](_0x518f75));if(_0x518f75['error']){if(_0x518f75[_0x3567('0xb')]['code']===0x1f4){logger['error'](_0x3567('0xc'),_0x8c6e84,_0x518f75['error']['message']);return _0x14923f(_0x518f75[_0x3567('0xb')][_0x3567('0xd')]);}logger[_0x3567('0xb')](_0x3567('0xc'),_0x8c6e84,_0x518f75['error']['message']);return _0x205495(_0x518f75['error'][_0x3567('0xd')]);}else{logger[_0x3567('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x8c6e84,'request\x20sent');_0x205495(_0x518f75[_0x3567('0xf')]['message']);}})[_0x3567('0x10')](function(_0x276b03){logger[_0x3567('0xb')](_0x3567('0xc'),_0x8c6e84,_0x276b03);_0x14923f(_0x276b03);});});}exports[_0x3567('0x11')]=function(_0x4517f5){var _0x3f28bf=this;return new Promise(function(_0x8fa98e,_0x8d6606){return db[_0x3567('0x12')]['findAll']({'raw':_0x4517f5[_0x3567('0x13')]?_0x4517f5[_0x3567('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x4517f5['options']?_0x4517f5[_0x3567('0x13')]['where']||null:null,'attributes':_0x4517f5['options']?_0x4517f5[_0x3567('0x13')][_0x3567('0x14')]||null:null,'limit':_0x4517f5[_0x3567('0x13')]?_0x4517f5[_0x3567('0x13')]['limit']||null:null,'include':_0x4517f5[_0x3567('0x13')]?_0x4517f5[_0x3567('0x13')]['include']?_[_0x3567('0x15')](_0x4517f5[_0x3567('0x13')][_0x3567('0x16')],function(_0x31ec69){return{'model':db[_0x31ec69[_0x3567('0x17')]],'as':_0x31ec69['as'],'attributes':_0x31ec69['attributes'],'include':_0x31ec69[_0x3567('0x16')]?_[_0x3567('0x15')](_0x31ec69[_0x3567('0x16')],function(_0x35c9bc){return{'model':db[_0x35c9bc[_0x3567('0x17')]],'as':_0x35c9bc['as'],'attributes':_0x35c9bc[_0x3567('0x14')],'include':_0x35c9bc['include']?_[_0x3567('0x15')](_0x35c9bc[_0x3567('0x16')],function(_0x11a651){return{'model':db[_0x11a651[_0x3567('0x17')]],'as':_0x11a651['as'],'attributes':_0x11a651[_0x3567('0x14')]};}):[]};}):[]};}):[]:[]})[_0x3567('0x8')](function(_0x5b7a14){logger[_0x3567('0xe')](_0x3567('0x11'),_0x4517f5);logger[_0x3567('0xa')](_0x3567('0x11'),_0x4517f5,JSON[_0x3567('0x18')](_0x5b7a14));_0x8fa98e(_0x5b7a14);})[_0x3567('0x10')](function(_0x40bfc8){logger[_0x3567('0xb')]('GetZohoAccount',_0x40bfc8[_0x3567('0xd')],_0x4517f5);_0x8d6606(_0x3f28bf['error'](0x1f4,_0x40bfc8[_0x3567('0xd')]));});});};exports[_0x3567('0x19')]=function(_0x5abf19){var _0x617829=this;return new Promise(function(_0x20a981,_0xa7fc9e){return db[_0x3567('0x12')]['find']({'raw':_0x5abf19[_0x3567('0x13')]?_0x5abf19[_0x3567('0x13')][_0x3567('0x1a')]===undefined?!![]:![]:!![],'where':_0x5abf19[_0x3567('0x13')]?_0x5abf19[_0x3567('0x13')]['where']||null:null,'attributes':_0x5abf19[_0x3567('0x13')]?_0x5abf19[_0x3567('0x13')][_0x3567('0x14')]||null:null,'include':_0x5abf19[_0x3567('0x13')]?_0x5abf19[_0x3567('0x13')]['include']?_[_0x3567('0x15')](_0x5abf19[_0x3567('0x13')]['include'],function(_0x28e3d2){return{'model':db[_0x28e3d2[_0x3567('0x17')]],'as':_0x28e3d2['as'],'attributes':_0x28e3d2[_0x3567('0x14')],'include':_0x28e3d2[_0x3567('0x16')]?_[_0x3567('0x15')](_0x28e3d2[_0x3567('0x16')],function(_0x1b2f29){return{'model':db[_0x1b2f29[_0x3567('0x17')]],'as':_0x1b2f29['as'],'attributes':_0x1b2f29[_0x3567('0x14')],'include':_0x1b2f29[_0x3567('0x16')]?_[_0x3567('0x15')](_0x1b2f29[_0x3567('0x16')],function(_0x255c5d){return{'model':db[_0x255c5d[_0x3567('0x17')]],'as':_0x255c5d['as'],'attributes':_0x255c5d[_0x3567('0x14')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a599e){logger[_0x3567('0xe')](_0x3567('0x19'),_0x5abf19);logger[_0x3567('0xa')](_0x3567('0x19'),_0x5abf19,JSON[_0x3567('0x18')](_0x1a599e));_0x20a981(_0x1a599e);})[_0x3567('0x10')](function(_0x4bc964){logger['error']('ShowZohoAccount',_0x4bc964['message'],_0x5abf19);_0xa7fc9e(_0x617829['error'](0x1f4,_0x4bc964[_0x3567('0xd')]));});});};
\ No newline at end of file
index edb855c..208057f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecd5=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','update','delete','/:id','exports','util','path','connect-timeout','Router'];(function(_0x5bc0f9,_0x1de7b0){var _0x50c294=function(_0x14a9b9){while(--_0x14a9b9){_0x5bc0f9['push'](_0x5bc0f9['shift']());}};_0x50c294(++_0x1de7b0);}(_0xecd5,0x110));var _0x5ecd=function(_0x398c1b,_0x5b8fe3){_0x398c1b=_0x398c1b-0x0;var _0x2c30e9=_0xecd5[_0x398c1b];return _0x2c30e9;};'use strict';var multer=require('multer');var util=require(_0x5ecd('0x0'));var path=require(_0x5ecd('0x1'));var timeout=require(_0x5ecd('0x2'));var express=require('express');var router=express[_0x5ecd('0x3')]();var auth=require(_0x5ecd('0x4'));var interaction=require(_0x5ecd('0x5'));var config=require(_0x5ecd('0x6'));var controller=require('./intZohoConfiguration.controller');router[_0x5ecd('0x7')]('/',auth['isAuthenticated'](),controller[_0x5ecd('0x8')]);router[_0x5ecd('0x7')]('/:id',auth[_0x5ecd('0x9')](),controller[_0x5ecd('0xa')]);router[_0x5ecd('0x7')](_0x5ecd('0xb'),auth[_0x5ecd('0x9')](),controller[_0x5ecd('0xc')]);router[_0x5ecd('0x7')](_0x5ecd('0xd'),auth[_0x5ecd('0x9')](),controller[_0x5ecd('0xe')]);router[_0x5ecd('0x7')](_0x5ecd('0xf'),auth['isAuthenticated'](),controller[_0x5ecd('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5ecd('0x11')]);router[_0x5ecd('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x5ecd('0x13')]);router[_0x5ecd('0x14')](_0x5ecd('0x15'),auth[_0x5ecd('0x9')](),controller['destroy']);module[_0x5ecd('0x16')]=router;
\ No newline at end of file
+var _0xb31a=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','create','put'];(function(_0x365e3f,_0x5113da){var _0x5acf4a=function(_0x3ed90a){while(--_0x3ed90a){_0x365e3f['push'](_0x365e3f['shift']());}};_0x5acf4a(++_0x5113da);}(_0xb31a,0xd4));var _0xab31=function(_0x4124b3,_0x8dc708){_0x4124b3=_0x4124b3-0x0;var _0x41b54f=_0xb31a[_0x4124b3];return _0x41b54f;};'use strict';var multer=require(_0xab31('0x0'));var util=require(_0xab31('0x1'));var path=require(_0xab31('0x2'));var timeout=require(_0xab31('0x3'));var express=require(_0xab31('0x4'));var router=express[_0xab31('0x5')]();var auth=require(_0xab31('0x6'));var interaction=require(_0xab31('0x7'));var config=require(_0xab31('0x8'));var controller=require(_0xab31('0x9'));router[_0xab31('0xa')]('/',auth[_0xab31('0xb')](),controller[_0xab31('0xc')]);router[_0xab31('0xa')](_0xab31('0xd'),auth['isAuthenticated'](),controller[_0xab31('0xe')]);router[_0xab31('0xa')](_0xab31('0xf'),auth[_0xab31('0xb')](),controller[_0xab31('0x10')]);router[_0xab31('0xa')](_0xab31('0x11'),auth[_0xab31('0xb')](),controller[_0xab31('0x12')]);router['get']('/:id/descriptions',auth[_0xab31('0xb')](),controller[_0xab31('0x13')]);router['post']('/',auth[_0xab31('0xb')](),controller[_0xab31('0x14')]);router[_0xab31('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xab31('0x16')]);router[_0xab31('0x17')](_0xab31('0xd'),auth[_0xab31('0xb')](),controller[_0xab31('0x18')]);module[_0xab31('0x19')]=router;
\ No newline at end of file
index 91de876..b005c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e4c=['sequelize','exports','STRING'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x2e4c,0x14a));var _0xc2e4=function(_0x364b32,_0x4dec35){_0x364b32=_0x364b32-0x0;var _0x3f3ea0=_0x2e4c[_0x364b32];return _0x3f3ea0;};'use strict';var Sequelize=require(_0xc2e4('0x0'));module[_0xc2e4('0x1')]={'name':{'type':Sequelize[_0xc2e4('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6e88=['sequelize','STRING'];(function(_0x5cc068,_0x30849f){var _0x307ac3=function(_0x4469b9){while(--_0x4469b9){_0x5cc068['push'](_0x5cc068['shift']());}};_0x307ac3(++_0x30849f);}(_0x6e88,0xb4));var _0x86e8=function(_0x42dea5,_0xaffe71){_0x42dea5=_0x42dea5-0x0;var _0x4c646a=_0x6e88[_0x42dea5];return _0x4c646a;};'use strict';var Sequelize=require(_0x86e8('0x0'));module['exports']={'name':{'type':Sequelize[_0x86e8('0x1')]},'description':{'type':Sequelize[_0x86e8('0x1')]}};
\ No newline at end of file
index 59ffa0f..9a6c9ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1411=['create','body','destroy','getFields','findOne','ZohoField','getSubjects','getDescriptions','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','debug','request\x20sent','stringify','error','ZohoConfiguration,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','offset','limit','Content-Range','json','apply','reject','save','update','name','send','rawAttributes','model','keys','dateStart','dateEnd','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','filter','merge','map','type','key','VIRTUAL','options','ZohoConfiguration','count','include','findAll','params','find'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x1411,0x1d9));var _0x1141=function(_0x128239,_0x30a688){_0x128239=_0x128239-0x0;var _0x5543df=_0x1411[_0x128239];return _0x5543df;};'use strict';var pdf=require(_0x1141('0x0'));var emlformat=require(_0x1141('0x1'));var rimraf=require(_0x1141('0x2'));var zipdir=require(_0x1141('0x3'));var jsonpatch=require(_0x1141('0x4'));var rp=require(_0x1141('0x5'));var moment=require(_0x1141('0x6'));var BPromise=require(_0x1141('0x7'));var Mustache=require(_0x1141('0x8'));var util=require(_0x1141('0x9'));var path=require(_0x1141('0xa'));var sox=require(_0x1141('0xb'));var csv=require(_0x1141('0xc'));var ejs=require(_0x1141('0xd'));var fs=require('fs');var _=require(_0x1141('0xe'));var squel=require(_0x1141('0xf'));var crypto=require(_0x1141('0x10'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1141('0xc'));var querystring=require(_0x1141('0x11'));var Papa=require(_0x1141('0x12'));var Redis=require(_0x1141('0x13'));var qs=require(_0x1141('0x14'));var logger=require(_0x1141('0x15'))(_0x1141('0x16'));var utils=require(_0x1141('0x17'));var config=require(_0x1141('0x18'));var db=require(_0x1141('0x19'))['db'];var jayson=require(_0x1141('0x1a'));var client=jayson[_0x1141('0x1b')][_0x1141('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x1a3e77,_0x30b02b,_0x45a031,_0x46012e){return new BPromise(function(_0x192c62,_0xb8d77c){var _0x4d117d=_0x46012e||client;return _0x4d117d[_0x1141('0x1d')](_0x1a3e77,_0x45a031)[_0x1141('0x1e')](function(_0x34b98f){logger['info']('ZohoConfiguration,\x20%s,\x20%s',_0x30b02b,'request\x20sent');logger[_0x1141('0x1f')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x30b02b,_0x1141('0x20'),JSON[_0x1141('0x21')](_0x34b98f));if(_0x34b98f['error']){if(_0x34b98f[_0x1141('0x22')]['code']===0x1f4){logger[_0x1141('0x22')](_0x1141('0x23'),_0x30b02b,_0x34b98f[_0x1141('0x22')][_0x1141('0x24')]);return _0xb8d77c(_0x34b98f[_0x1141('0x22')][_0x1141('0x24')]);}logger[_0x1141('0x22')](_0x1141('0x23'),_0x30b02b,_0x34b98f[_0x1141('0x22')][_0x1141('0x24')]);return _0x192c62(_0x34b98f[_0x1141('0x22')][_0x1141('0x24')]);}else{logger[_0x1141('0x25')](_0x1141('0x23'),_0x30b02b,'request\x20sent');_0x192c62(_0x34b98f[_0x1141('0x26')]['message']);}})[_0x1141('0x27')](function(_0x35c2b4){logger[_0x1141('0x22')]('ZohoConfiguration,\x20%s,\x20%s',_0x30b02b,_0x35c2b4);_0xb8d77c(_0x35c2b4);});});}function respondWithStatusCode(_0x570896,_0x3e877c){_0x3e877c=_0x3e877c||0xcc;return function(_0x42d0e8){if(_0x42d0e8){return _0x570896[_0x1141('0x28')](_0x3e877c);}return _0x570896[_0x1141('0x29')](_0x3e877c)[_0x1141('0x2a')]();};}function respondWithResult(_0x49637e,_0x344354){_0x344354=_0x344354||0xc8;return function(_0x3fbe4f){if(_0x3fbe4f){return _0x49637e[_0x1141('0x29')](_0x344354)['json'](_0x3fbe4f);}};}function respondWithFilteredResult(_0x4169c6,_0x1b3e3b){return function(_0x47e74c){if(_0x47e74c){var _0x501e67=_0x47e74c['count'],_0x575024=_0x1b3e3b['offset'],_0x259d44=_0x1b3e3b[_0x1141('0x2b')]+_0x1b3e3b[_0x1141('0x2c')],_0x2cee9a;if(_0x259d44>=_0x501e67){_0x259d44=_0x501e67;_0x2cee9a=0xc8;}else{_0x2cee9a=0xce;}_0x4169c6[_0x1141('0x29')](_0x2cee9a);return _0x4169c6['set'](_0x1141('0x2d'),_0x575024+'-'+_0x259d44+'/'+_0x501e67)[_0x1141('0x2e')](_0x47e74c);}return null;};}function patchUpdates(_0x40bd4d){return function(_0x10830f){try{jsonpatch[_0x1141('0x2f')](_0x10830f,_0x40bd4d,!![]);}catch(_0x4db51e){return BPromise[_0x1141('0x30')](_0x4db51e);}return _0x10830f[_0x1141('0x31')]();};}function saveUpdates(_0x2238c1,_0x4b3383){return function(_0x3b6e28){if(_0x3b6e28){return _0x3b6e28[_0x1141('0x32')](_0x2238c1)[_0x1141('0x1e')](function(_0xed5519){return _0xed5519;});}return null;};}function removeEntity(_0x284af8,_0x2a6fe3){return function(_0x19e3c2){if(_0x19e3c2){return _0x19e3c2['destroy']()[_0x1141('0x1e')](function(){_0x284af8[_0x1141('0x29')](0xcc)[_0x1141('0x2a')]();});}};}function handleEntityNotFound(_0x401208,_0x13fa60){return function(_0x31da0f){if(!_0x31da0f){_0x401208['sendStatus'](0x194);}return _0x31da0f;};}function handleError(_0x4ee0dd,_0x4c2514){_0x4c2514=_0x4c2514||0x1f4;return function(_0x463896){logger[_0x1141('0x22')](_0x463896['stack']);if(_0x463896['name']){delete _0x463896[_0x1141('0x33')];}_0x4ee0dd[_0x1141('0x29')](_0x4c2514)[_0x1141('0x34')](_0x463896);};}exports['index']=function(_0x446222,_0x162339){var _0x54827a={},_0x577d65={},_0x35a558={'count':0x0,'rows':[]};var _0x3042f3=db['ZohoConfiguration'][_0x1141('0x35')];_0x577d65[_0x1141('0x36')]=_[_0x1141('0x37')](_0x3042f3);var _0x39f76f={'dateStart':_0x446222['query'][_0x1141('0x38')],'dateEnd':_0x446222['query'][_0x1141('0x39')]};delete _0x446222[_0x1141('0x3a')][_0x1141('0x38')];delete _0x446222[_0x1141('0x3a')][_0x1141('0x39')];_0x577d65[_0x1141('0x3a')]=_[_0x1141('0x37')](_0x446222['query']);_0x577d65[_0x1141('0x3b')]=_[_0x1141('0x3c')](_0x577d65[_0x1141('0x36')],_0x577d65[_0x1141('0x3a')]);_0x54827a[_0x1141('0x3d')]=_['intersection'](_0x577d65[_0x1141('0x36')],qs[_0x1141('0x3e')](_0x446222[_0x1141('0x3a')][_0x1141('0x3e')]));_0x54827a[_0x1141('0x3d')]=_0x54827a[_0x1141('0x3d')][_0x1141('0x3f')]?_0x54827a[_0x1141('0x3d')]:_0x577d65[_0x1141('0x36')];if(!_0x446222[_0x1141('0x3a')][_0x1141('0x40')](_0x1141('0x41'))){_0x54827a[_0x1141('0x2c')]=qs[_0x1141('0x2c')](_0x446222[_0x1141('0x3a')]['limit']);_0x54827a[_0x1141('0x2b')]=qs['offset'](_0x446222[_0x1141('0x3a')][_0x1141('0x2b')]);}_0x54827a[_0x1141('0x42')]=qs[_0x1141('0x43')](_0x446222[_0x1141('0x3a')][_0x1141('0x43')]);_0x54827a[_0x1141('0x44')]=qs[_0x1141('0x3b')](_[_0x1141('0x45')](_0x446222['query'],_0x577d65[_0x1141('0x3b')]));if(_0x39f76f[_0x1141('0x38')]){if(_0x39f76f['dateEnd']){_0x39f76f[_0x1141('0x39')]=moment(_0x39f76f['dateEnd'])[_0x1141('0x46')](0x1,_0x1141('0x47'));}else{_0x39f76f[_0x1141('0x39')]=moment(_0x39f76f[_0x1141('0x38')])['add'](0x1,_0x1141('0x47'));}_['merge'](_0x54827a['where'],{'createdAt':{'$gte':_0x39f76f[_0x1141('0x38')],'$lte':_0x39f76f[_0x1141('0x39')]}});}if(_0x446222['query'][_0x1141('0x48')]){_0x54827a['where']=_[_0x1141('0x49')](_0x54827a[_0x1141('0x44')],{'$or':_[_0x1141('0x4a')](_0x3042f3,function(_0x220424){if(_0x220424[_0x1141('0x4b')][_0x1141('0x4c')]!==_0x1141('0x4d')){var _0x107068={};_0x107068[_0x220424['field']]={'$like':'%'+_0x446222[_0x1141('0x3a')][_0x1141('0x48')]+'%'};return _0x107068;}})});}_0x54827a=_['merge']({},_0x54827a,_0x446222[_0x1141('0x4e')]);var _0x3fe348={'where':_0x54827a['where']};return db[_0x1141('0x4f')][_0x1141('0x50')](_0x3fe348)['then'](function(_0x40fa3f){_0x35a558['count']=_0x40fa3f;if(_0x446222[_0x1141('0x3a')]['includeAll']){_0x54827a[_0x1141('0x51')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0x1141('0x52')](_0x54827a);})[_0x1141('0x1e')](function(_0x1c0858){_0x35a558['rows']=_0x1c0858;return _0x35a558;})[_0x1141('0x1e')](respondWithFilteredResult(_0x162339,_0x54827a))[_0x1141('0x27')](handleError(_0x162339,null));};exports['show']=function(_0x2738f5,_0x2d8f0a){var _0x3bab6b={'raw':![],'where':{'id':_0x2738f5[_0x1141('0x53')]['id']}},_0x5153de={};_0x5153de[_0x1141('0x36')]=_[_0x1141('0x37')](db['ZohoConfiguration'][_0x1141('0x35')]);_0x5153de['query']=_[_0x1141('0x37')](_0x2738f5[_0x1141('0x3a')]);_0x5153de['filters']=_[_0x1141('0x3c')](_0x5153de['model'],_0x5153de['query']);_0x3bab6b[_0x1141('0x3d')]=_[_0x1141('0x3c')](_0x5153de[_0x1141('0x36')],qs[_0x1141('0x3e')](_0x2738f5[_0x1141('0x3a')][_0x1141('0x3e')]));_0x3bab6b['attributes']=_0x3bab6b[_0x1141('0x3d')][_0x1141('0x3f')]?_0x3bab6b[_0x1141('0x3d')]:_0x5153de[_0x1141('0x36')];if(_0x2738f5[_0x1141('0x3a')]['includeAll']){_0x3bab6b[_0x1141('0x51')]=[{'all':!![]}];}_0x3bab6b=_[_0x1141('0x49')]({},_0x3bab6b,_0x2738f5[_0x1141('0x4e')]);return db['ZohoConfiguration'][_0x1141('0x54')](_0x3bab6b)[_0x1141('0x1e')](handleEntityNotFound(_0x2d8f0a,null))[_0x1141('0x1e')](respondWithResult(_0x2d8f0a,null))[_0x1141('0x27')](handleError(_0x2d8f0a,null));};exports[_0x1141('0x55')]=function(_0x4bc550,_0x3d6436){return db[_0x1141('0x4f')]['create'](_0x4bc550[_0x1141('0x56')],{})[_0x1141('0x1e')](respondWithResult(_0x3d6436,0xc9))[_0x1141('0x27')](handleError(_0x3d6436,null));};exports[_0x1141('0x32')]=function(_0x197ad,_0x5baaf3){if(_0x197ad['body']['id']){delete _0x197ad[_0x1141('0x56')]['id'];}return db[_0x1141('0x4f')][_0x1141('0x54')]({'where':{'id':_0x197ad[_0x1141('0x53')]['id']}})[_0x1141('0x1e')](handleEntityNotFound(_0x5baaf3,null))[_0x1141('0x1e')](saveUpdates(_0x197ad[_0x1141('0x56')],null))[_0x1141('0x1e')](respondWithResult(_0x5baaf3,null))['catch'](handleError(_0x5baaf3,null));};exports[_0x1141('0x57')]=function(_0x73b00c,_0x5dd23d){return db[_0x1141('0x4f')][_0x1141('0x54')]({'where':{'id':_0x73b00c[_0x1141('0x53')]['id']}})[_0x1141('0x1e')](handleEntityNotFound(_0x5dd23d,null))[_0x1141('0x1e')](removeEntity(_0x5dd23d,null))[_0x1141('0x27')](handleError(_0x5dd23d,null));};exports[_0x1141('0x58')]=function(_0x466152,_0x49caf6,_0xc61ef2){var _0x27e27f={};var _0x23737c={};var _0x1009ca;var _0xb2e2ac;return db[_0x1141('0x4f')][_0x1141('0x59')]({'where':{'id':_0x466152[_0x1141('0x53')]['id']}})['then'](handleEntityNotFound(_0x49caf6,null))[_0x1141('0x1e')](function(_0x1d8ae1){if(_0x1d8ae1){_0x1009ca=_0x1d8ae1;_0x23737c[_0x1141('0x36')]=_[_0x1141('0x37')](db[_0x1141('0x5a')][_0x1141('0x35')]);_0x23737c['query']=_[_0x1141('0x37')](_0x466152['query']);_0x23737c[_0x1141('0x3b')]=_[_0x1141('0x3c')](_0x23737c['model'],_0x23737c[_0x1141('0x3a')]);_0x27e27f[_0x1141('0x3d')]=_[_0x1141('0x3c')](_0x23737c[_0x1141('0x36')],qs['fields'](_0x466152[_0x1141('0x3a')][_0x1141('0x3e')]));_0x27e27f[_0x1141('0x3d')]=_0x27e27f['attributes'][_0x1141('0x3f')]?_0x27e27f[_0x1141('0x3d')]:_0x23737c[_0x1141('0x36')];_0x27e27f[_0x1141('0x42')]=qs['sort'](_0x466152[_0x1141('0x3a')]['sort']);_0x27e27f[_0x1141('0x44')]=qs[_0x1141('0x3b')](_[_0x1141('0x45')](_0x466152[_0x1141('0x3a')],_0x23737c['filters']));if(_0x466152[_0x1141('0x3a')]['filter']){_0x27e27f[_0x1141('0x44')]=_[_0x1141('0x49')](_0x27e27f[_0x1141('0x44')],{'$or':_[_0x1141('0x4a')](_0x27e27f[_0x1141('0x3d')],function(_0x43b4d8){var _0x4c7fe9={};_0x4c7fe9[_0x43b4d8]={'$like':'%'+_0x466152[_0x1141('0x3a')]['filter']+'%'};return _0x4c7fe9;})});}_0x27e27f=_['merge']({},_0x27e27f,_0x466152[_0x1141('0x4e')]);return _0x1009ca[_0x1141('0x58')](_0x27e27f);}})[_0x1141('0x1e')](function(_0x1aac22){if(_0x1aac22){_0xb2e2ac=_0x1aac22[_0x1141('0x3f')];if(!_0x466152[_0x1141('0x3a')]['hasOwnProperty'](_0x1141('0x41'))){_0x27e27f[_0x1141('0x2c')]=qs[_0x1141('0x2c')](_0x466152[_0x1141('0x3a')][_0x1141('0x2c')]);_0x27e27f[_0x1141('0x2b')]=qs[_0x1141('0x2b')](_0x466152[_0x1141('0x3a')][_0x1141('0x2b')]);}return _0x1009ca[_0x1141('0x58')](_0x27e27f);}})[_0x1141('0x1e')](function(_0x37064e){if(_0x37064e){return _0x37064e?{'count':_0xb2e2ac,'rows':_0x37064e}:null;}})['then'](respondWithResult(_0x49caf6,null))[_0x1141('0x27')](handleError(_0x49caf6,null));};exports[_0x1141('0x5b')]=function(_0x2c2caf,_0x3b94bb,_0x58ebd0){var _0x152408={};var _0x7b3ae9={};var _0x403690;var _0x42e635;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x2c2caf[_0x1141('0x53')]['id']}})[_0x1141('0x1e')](handleEntityNotFound(_0x3b94bb,null))[_0x1141('0x1e')](function(_0x366375){if(_0x366375){_0x403690=_0x366375;_0x7b3ae9['model']=_[_0x1141('0x37')](db[_0x1141('0x5a')]['rawAttributes']);_0x7b3ae9[_0x1141('0x3a')]=_['keys'](_0x2c2caf[_0x1141('0x3a')]);_0x7b3ae9[_0x1141('0x3b')]=_[_0x1141('0x3c')](_0x7b3ae9[_0x1141('0x36')],_0x7b3ae9[_0x1141('0x3a')]);_0x152408[_0x1141('0x3d')]=_[_0x1141('0x3c')](_0x7b3ae9[_0x1141('0x36')],qs['fields'](_0x2c2caf[_0x1141('0x3a')][_0x1141('0x3e')]));_0x152408['attributes']=_0x152408['attributes'][_0x1141('0x3f')]?_0x152408[_0x1141('0x3d')]:_0x7b3ae9[_0x1141('0x36')];_0x152408['order']=qs[_0x1141('0x43')](_0x2c2caf[_0x1141('0x3a')][_0x1141('0x43')]);_0x152408[_0x1141('0x44')]=qs[_0x1141('0x3b')](_['pick'](_0x2c2caf[_0x1141('0x3a')],_0x7b3ae9[_0x1141('0x3b')]));if(_0x2c2caf['query'][_0x1141('0x48')]){_0x152408['where']=_[_0x1141('0x49')](_0x152408['where'],{'$or':_[_0x1141('0x4a')](_0x152408[_0x1141('0x3d')],function(_0x6d6c0e){var _0xb73801={};_0xb73801[_0x6d6c0e]={'$like':'%'+_0x2c2caf[_0x1141('0x3a')]['filter']+'%'};return _0xb73801;})});}_0x152408=_['merge']({},_0x152408,_0x2c2caf[_0x1141('0x4e')]);return _0x403690[_0x1141('0x5b')](_0x152408);}})[_0x1141('0x1e')](function(_0x48e3db){if(_0x48e3db){_0x42e635=_0x48e3db[_0x1141('0x3f')];if(!_0x2c2caf[_0x1141('0x3a')][_0x1141('0x40')](_0x1141('0x41'))){_0x152408['limit']=qs[_0x1141('0x2c')](_0x2c2caf['query'][_0x1141('0x2c')]);_0x152408[_0x1141('0x2b')]=qs['offset'](_0x2c2caf[_0x1141('0x3a')][_0x1141('0x2b')]);}return _0x403690['getSubjects'](_0x152408);}})[_0x1141('0x1e')](function(_0x2fce57){if(_0x2fce57){return _0x2fce57?{'count':_0x42e635,'rows':_0x2fce57}:null;}})[_0x1141('0x1e')](respondWithResult(_0x3b94bb,null))[_0x1141('0x27')](handleError(_0x3b94bb,null));};exports[_0x1141('0x5c')]=function(_0x27dab5,_0x252ef1,_0x22bbec){var _0x42280b={};var _0x4a2da0={};var _0x3fc7af;var _0x2b9b74;return db[_0x1141('0x4f')]['findOne']({'where':{'id':_0x27dab5[_0x1141('0x53')]['id']}})[_0x1141('0x1e')](handleEntityNotFound(_0x252ef1,null))['then'](function(_0x3d0ca4){if(_0x3d0ca4){_0x3fc7af=_0x3d0ca4;_0x4a2da0[_0x1141('0x36')]=_['keys'](db[_0x1141('0x5a')]['rawAttributes']);_0x4a2da0['query']=_['keys'](_0x27dab5['query']);_0x4a2da0[_0x1141('0x3b')]=_[_0x1141('0x3c')](_0x4a2da0['model'],_0x4a2da0[_0x1141('0x3a')]);_0x42280b['attributes']=_['intersection'](_0x4a2da0['model'],qs['fields'](_0x27dab5[_0x1141('0x3a')][_0x1141('0x3e')]));_0x42280b[_0x1141('0x3d')]=_0x42280b[_0x1141('0x3d')][_0x1141('0x3f')]?_0x42280b[_0x1141('0x3d')]:_0x4a2da0[_0x1141('0x36')];_0x42280b['order']=qs[_0x1141('0x43')](_0x27dab5[_0x1141('0x3a')]['sort']);_0x42280b[_0x1141('0x44')]=qs[_0x1141('0x3b')](_[_0x1141('0x45')](_0x27dab5['query'],_0x4a2da0[_0x1141('0x3b')]));if(_0x27dab5[_0x1141('0x3a')]['filter']){_0x42280b[_0x1141('0x44')]=_[_0x1141('0x49')](_0x42280b[_0x1141('0x44')],{'$or':_[_0x1141('0x4a')](_0x42280b[_0x1141('0x3d')],function(_0x3dba49){var _0x16d259={};_0x16d259[_0x3dba49]={'$like':'%'+_0x27dab5[_0x1141('0x3a')][_0x1141('0x48')]+'%'};return _0x16d259;})});}_0x42280b=_['merge']({},_0x42280b,_0x27dab5['options']);return _0x3fc7af[_0x1141('0x5c')](_0x42280b);}})[_0x1141('0x1e')](function(_0xe0b67c){if(_0xe0b67c){_0x2b9b74=_0xe0b67c[_0x1141('0x3f')];if(!_0x27dab5['query']['hasOwnProperty']('nolimit')){_0x42280b['limit']=qs['limit'](_0x27dab5[_0x1141('0x3a')][_0x1141('0x2c')]);_0x42280b[_0x1141('0x2b')]=qs[_0x1141('0x2b')](_0x27dab5[_0x1141('0x3a')][_0x1141('0x2b')]);}return _0x3fc7af[_0x1141('0x5c')](_0x42280b);}})[_0x1141('0x1e')](function(_0x206e59){if(_0x206e59){return _0x206e59?{'count':_0x2b9b74,'rows':_0x206e59}:null;}})[_0x1141('0x1e')](respondWithResult(_0x252ef1,null))['catch'](handleError(_0x252ef1,null));};
\ No newline at end of file
+var _0x3aa9=['../../config/utils','../../config/environment','../../mysqldb','client','http','request','then','ZohoConfiguration,\x20%s,\x20%s','error','code','message','info','request\x20sent','result','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','name','send','index','ZohoConfiguration','rawAttributes','keys','query','dateEnd','dateStart','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','add','day','merge','filter','map','type','VIRTUAL','field','options','include','findAll','rows','show','params','includeAll','find','catch','create','body','destroy','findOne','ZohoField','getFields','getSubjects','getDescriptions','rimraf','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api'];(function(_0x4c1846,_0x1f46ab){var _0x4e7270=function(_0x17e183){while(--_0x17e183){_0x4c1846['push'](_0x4c1846['shift']());}};_0x4e7270(++_0x1f46ab);}(_0x3aa9,0x1b1));var _0x93aa=function(_0x2099c4,_0x43e128){_0x2099c4=_0x2099c4-0x0;var _0x1b84ca=_0x3aa9[_0x2099c4];return _0x1b84ca;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x93aa('0x0'));var zipdir=require(_0x93aa('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x93aa('0x2'));var moment=require(_0x93aa('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x93aa('0x4'));var util=require('util');var path=require(_0x93aa('0x5'));var sox=require(_0x93aa('0x6'));var csv=require(_0x93aa('0x7'));var ejs=require(_0x93aa('0x8'));var fs=require('fs');var _=require(_0x93aa('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x93aa('0xa'));var deskjs=require(_0x93aa('0xb'));var toCsv=require('to-csv');var querystring=require(_0x93aa('0xc'));var Papa=require(_0x93aa('0xd'));var Redis=require(_0x93aa('0xe'));var qs=require(_0x93aa('0xf'));var logger=require('../../config/logger')(_0x93aa('0x10'));var utils=require(_0x93aa('0x11'));var config=require(_0x93aa('0x12'));var db=require(_0x93aa('0x13'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x93aa('0x14')][_0x93aa('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x4b3b3c,_0x4c439f,_0x3981bc,_0x183f78){return new BPromise(function(_0x41a0e2,_0x31365c){var _0xdb92ce=_0x183f78||client;return _0xdb92ce[_0x93aa('0x16')](_0x4b3b3c,_0x3981bc)[_0x93aa('0x17')](function(_0x667862){logger['info'](_0x93aa('0x18'),_0x4c439f,'request\x20sent');logger['debug']('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x4c439f,'request\x20sent',JSON['stringify'](_0x667862));if(_0x667862[_0x93aa('0x19')]){if(_0x667862[_0x93aa('0x19')][_0x93aa('0x1a')]===0x1f4){logger[_0x93aa('0x19')](_0x93aa('0x18'),_0x4c439f,_0x667862[_0x93aa('0x19')][_0x93aa('0x1b')]);return _0x31365c(_0x667862['error'][_0x93aa('0x1b')]);}logger[_0x93aa('0x19')](_0x93aa('0x18'),_0x4c439f,_0x667862['error'][_0x93aa('0x1b')]);return _0x41a0e2(_0x667862['error']['message']);}else{logger[_0x93aa('0x1c')](_0x93aa('0x18'),_0x4c439f,_0x93aa('0x1d'));_0x41a0e2(_0x667862[_0x93aa('0x1e')][_0x93aa('0x1b')]);}})['catch'](function(_0x21ff77){logger[_0x93aa('0x19')](_0x93aa('0x18'),_0x4c439f,_0x21ff77);_0x31365c(_0x21ff77);});});}function respondWithStatusCode(_0x226eac,_0x51aa5a){_0x51aa5a=_0x51aa5a||0xcc;return function(_0x2d22cf){if(_0x2d22cf){return _0x226eac[_0x93aa('0x1f')](_0x51aa5a);}return _0x226eac[_0x93aa('0x20')](_0x51aa5a)[_0x93aa('0x21')]();};}function respondWithResult(_0x4272a6,_0x23b948){_0x23b948=_0x23b948||0xc8;return function(_0x45abde){if(_0x45abde){return _0x4272a6['status'](_0x23b948)[_0x93aa('0x22')](_0x45abde);}};}function respondWithFilteredResult(_0x2ea6a8,_0x46cfa3){return function(_0x5021c8){if(_0x5021c8){var _0x328d2a=_0x5021c8[_0x93aa('0x23')],_0x4a5927=_0x46cfa3[_0x93aa('0x24')],_0x261266=_0x46cfa3['offset']+_0x46cfa3[_0x93aa('0x25')],_0x6d9b8f;if(_0x261266>=_0x328d2a){_0x261266=_0x328d2a;_0x6d9b8f=0xc8;}else{_0x6d9b8f=0xce;}_0x2ea6a8[_0x93aa('0x20')](_0x6d9b8f);return _0x2ea6a8[_0x93aa('0x26')](_0x93aa('0x27'),_0x4a5927+'-'+_0x261266+'/'+_0x328d2a)[_0x93aa('0x22')](_0x5021c8);}return null;};}function patchUpdates(_0x1443ae){return function(_0x553578){try{jsonpatch[_0x93aa('0x28')](_0x553578,_0x1443ae,!![]);}catch(_0x55c9df){return BPromise[_0x93aa('0x29')](_0x55c9df);}return _0x553578[_0x93aa('0x2a')]();};}function saveUpdates(_0x482a39,_0x466075){return function(_0x77d626){if(_0x77d626){return _0x77d626[_0x93aa('0x2b')](_0x482a39)['then'](function(_0x440175){return _0x440175;});}return null;};}function removeEntity(_0x28a92a,_0x22c870){return function(_0x37592f){if(_0x37592f){return _0x37592f['destroy']()['then'](function(){_0x28a92a[_0x93aa('0x20')](0xcc)[_0x93aa('0x21')]();});}};}function handleEntityNotFound(_0x3b13ff,_0x4d04ea){return function(_0x34c5c2){if(!_0x34c5c2){_0x3b13ff[_0x93aa('0x1f')](0x194);}return _0x34c5c2;};}function handleError(_0xf5ac3e,_0x21bb3d){_0x21bb3d=_0x21bb3d||0x1f4;return function(_0x5ae28b){logger['error'](_0x5ae28b['stack']);if(_0x5ae28b[_0x93aa('0x2c')]){delete _0x5ae28b[_0x93aa('0x2c')];}_0xf5ac3e[_0x93aa('0x20')](_0x21bb3d)[_0x93aa('0x2d')](_0x5ae28b);};}exports[_0x93aa('0x2e')]=function(_0xde8ba5,_0x40f88e){var _0x5547cc={},_0x2648de={},_0x3946d4={'count':0x0,'rows':[]};var _0x4877c2=db[_0x93aa('0x2f')][_0x93aa('0x30')];_0x2648de['model']=_[_0x93aa('0x31')](_0x4877c2);var _0x43d557={'dateStart':_0xde8ba5[_0x93aa('0x32')]['dateStart'],'dateEnd':_0xde8ba5['query'][_0x93aa('0x33')]};delete _0xde8ba5[_0x93aa('0x32')][_0x93aa('0x34')];delete _0xde8ba5[_0x93aa('0x32')][_0x93aa('0x33')];_0x2648de['query']=_[_0x93aa('0x31')](_0xde8ba5[_0x93aa('0x32')]);_0x2648de['filters']=_[_0x93aa('0x35')](_0x2648de[_0x93aa('0x36')],_0x2648de[_0x93aa('0x32')]);_0x5547cc['attributes']=_[_0x93aa('0x35')](_0x2648de[_0x93aa('0x36')],qs[_0x93aa('0x37')](_0xde8ba5[_0x93aa('0x32')]['fields']));_0x5547cc[_0x93aa('0x38')]=_0x5547cc['attributes'][_0x93aa('0x39')]?_0x5547cc[_0x93aa('0x38')]:_0x2648de[_0x93aa('0x36')];if(!_0xde8ba5[_0x93aa('0x32')][_0x93aa('0x3a')](_0x93aa('0x3b'))){_0x5547cc[_0x93aa('0x25')]=qs[_0x93aa('0x25')](_0xde8ba5[_0x93aa('0x32')]['limit']);_0x5547cc[_0x93aa('0x24')]=qs[_0x93aa('0x24')](_0xde8ba5['query']['offset']);}_0x5547cc[_0x93aa('0x3c')]=qs[_0x93aa('0x3d')](_0xde8ba5[_0x93aa('0x32')][_0x93aa('0x3d')]);_0x5547cc[_0x93aa('0x3e')]=qs[_0x93aa('0x3f')](_[_0x93aa('0x40')](_0xde8ba5[_0x93aa('0x32')],_0x2648de[_0x93aa('0x3f')]));if(_0x43d557[_0x93aa('0x34')]){if(_0x43d557[_0x93aa('0x33')]){_0x43d557[_0x93aa('0x33')]=moment(_0x43d557[_0x93aa('0x33')])[_0x93aa('0x41')](0x1,_0x93aa('0x42'));}else{_0x43d557[_0x93aa('0x33')]=moment(_0x43d557['dateStart'])[_0x93aa('0x41')](0x1,'day');}_[_0x93aa('0x43')](_0x5547cc['where'],{'createdAt':{'$gte':_0x43d557[_0x93aa('0x34')],'$lte':_0x43d557[_0x93aa('0x33')]}});}if(_0xde8ba5[_0x93aa('0x32')][_0x93aa('0x44')]){_0x5547cc[_0x93aa('0x3e')]=_[_0x93aa('0x43')](_0x5547cc[_0x93aa('0x3e')],{'$or':_[_0x93aa('0x45')](_0x4877c2,function(_0x41136f){if(_0x41136f[_0x93aa('0x46')]['key']!==_0x93aa('0x47')){var _0x18552f={};_0x18552f[_0x41136f[_0x93aa('0x48')]]={'$like':'%'+_0xde8ba5[_0x93aa('0x32')][_0x93aa('0x44')]+'%'};return _0x18552f;}})});}_0x5547cc=_[_0x93aa('0x43')]({},_0x5547cc,_0xde8ba5[_0x93aa('0x49')]);var _0x486243={'where':_0x5547cc['where']};return db['ZohoConfiguration'][_0x93aa('0x23')](_0x486243)[_0x93aa('0x17')](function(_0x40adb5){_0x3946d4[_0x93aa('0x23')]=_0x40adb5;if(_0xde8ba5[_0x93aa('0x32')]['includeAll']){_0x5547cc[_0x93aa('0x4a')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0x93aa('0x4b')](_0x5547cc);})['then'](function(_0x2525d7){_0x3946d4[_0x93aa('0x4c')]=_0x2525d7;return _0x3946d4;})[_0x93aa('0x17')](respondWithFilteredResult(_0x40f88e,_0x5547cc))['catch'](handleError(_0x40f88e,null));};exports[_0x93aa('0x4d')]=function(_0x1d113c,_0x4ee42f){var _0x51472={'raw':![],'where':{'id':_0x1d113c[_0x93aa('0x4e')]['id']}},_0x3ada89={};_0x3ada89[_0x93aa('0x36')]=_[_0x93aa('0x31')](db['ZohoConfiguration'][_0x93aa('0x30')]);_0x3ada89['query']=_[_0x93aa('0x31')](_0x1d113c[_0x93aa('0x32')]);_0x3ada89[_0x93aa('0x3f')]=_['intersection'](_0x3ada89[_0x93aa('0x36')],_0x3ada89['query']);_0x51472[_0x93aa('0x38')]=_[_0x93aa('0x35')](_0x3ada89[_0x93aa('0x36')],qs[_0x93aa('0x37')](_0x1d113c[_0x93aa('0x32')][_0x93aa('0x37')]));_0x51472[_0x93aa('0x38')]=_0x51472[_0x93aa('0x38')][_0x93aa('0x39')]?_0x51472[_0x93aa('0x38')]:_0x3ada89[_0x93aa('0x36')];if(_0x1d113c['query'][_0x93aa('0x4f')]){_0x51472[_0x93aa('0x4a')]=[{'all':!![]}];}_0x51472=_['merge']({},_0x51472,_0x1d113c[_0x93aa('0x49')]);return db[_0x93aa('0x2f')][_0x93aa('0x50')](_0x51472)['then'](handleEntityNotFound(_0x4ee42f,null))[_0x93aa('0x17')](respondWithResult(_0x4ee42f,null))[_0x93aa('0x51')](handleError(_0x4ee42f,null));};exports[_0x93aa('0x52')]=function(_0xb8537,_0x46ca48){return db[_0x93aa('0x2f')][_0x93aa('0x52')](_0xb8537[_0x93aa('0x53')],{})[_0x93aa('0x17')](respondWithResult(_0x46ca48,0xc9))[_0x93aa('0x51')](handleError(_0x46ca48,null));};exports[_0x93aa('0x2b')]=function(_0x3e39ca,_0x4daee4){if(_0x3e39ca['body']['id']){delete _0x3e39ca[_0x93aa('0x53')]['id'];}return db[_0x93aa('0x2f')][_0x93aa('0x50')]({'where':{'id':_0x3e39ca['params']['id']}})[_0x93aa('0x17')](handleEntityNotFound(_0x4daee4,null))[_0x93aa('0x17')](saveUpdates(_0x3e39ca[_0x93aa('0x53')],null))[_0x93aa('0x17')](respondWithResult(_0x4daee4,null))[_0x93aa('0x51')](handleError(_0x4daee4,null));};exports[_0x93aa('0x54')]=function(_0x880851,_0xc0da65){return db[_0x93aa('0x2f')][_0x93aa('0x50')]({'where':{'id':_0x880851[_0x93aa('0x4e')]['id']}})[_0x93aa('0x17')](handleEntityNotFound(_0xc0da65,null))[_0x93aa('0x17')](removeEntity(_0xc0da65,null))[_0x93aa('0x51')](handleError(_0xc0da65,null));};exports['getFields']=function(_0x1d4775,_0x395cd4,_0x5f0046){var _0x2868a8={};var _0x24eb92={};var _0x38d75c;var _0x1ca7be;return db['ZohoConfiguration'][_0x93aa('0x55')]({'where':{'id':_0x1d4775[_0x93aa('0x4e')]['id']}})[_0x93aa('0x17')](handleEntityNotFound(_0x395cd4,null))[_0x93aa('0x17')](function(_0x202945){if(_0x202945){_0x38d75c=_0x202945;_0x24eb92[_0x93aa('0x36')]=_[_0x93aa('0x31')](db[_0x93aa('0x56')][_0x93aa('0x30')]);_0x24eb92[_0x93aa('0x32')]=_['keys'](_0x1d4775[_0x93aa('0x32')]);_0x24eb92[_0x93aa('0x3f')]=_[_0x93aa('0x35')](_0x24eb92[_0x93aa('0x36')],_0x24eb92['query']);_0x2868a8[_0x93aa('0x38')]=_[_0x93aa('0x35')](_0x24eb92[_0x93aa('0x36')],qs[_0x93aa('0x37')](_0x1d4775[_0x93aa('0x32')][_0x93aa('0x37')]));_0x2868a8[_0x93aa('0x38')]=_0x2868a8[_0x93aa('0x38')][_0x93aa('0x39')]?_0x2868a8[_0x93aa('0x38')]:_0x24eb92[_0x93aa('0x36')];_0x2868a8[_0x93aa('0x3c')]=qs[_0x93aa('0x3d')](_0x1d4775['query'][_0x93aa('0x3d')]);_0x2868a8[_0x93aa('0x3e')]=qs['filters'](_[_0x93aa('0x40')](_0x1d4775[_0x93aa('0x32')],_0x24eb92['filters']));if(_0x1d4775[_0x93aa('0x32')]['filter']){_0x2868a8['where']=_[_0x93aa('0x43')](_0x2868a8[_0x93aa('0x3e')],{'$or':_['map'](_0x2868a8[_0x93aa('0x38')],function(_0x171598){var _0x2e3449={};_0x2e3449[_0x171598]={'$like':'%'+_0x1d4775['query'][_0x93aa('0x44')]+'%'};return _0x2e3449;})});}_0x2868a8=_[_0x93aa('0x43')]({},_0x2868a8,_0x1d4775[_0x93aa('0x49')]);return _0x38d75c['getFields'](_0x2868a8);}})[_0x93aa('0x17')](function(_0x11c1e0){if(_0x11c1e0){_0x1ca7be=_0x11c1e0['length'];if(!_0x1d4775['query']['hasOwnProperty']('nolimit')){_0x2868a8[_0x93aa('0x25')]=qs[_0x93aa('0x25')](_0x1d4775['query'][_0x93aa('0x25')]);_0x2868a8[_0x93aa('0x24')]=qs[_0x93aa('0x24')](_0x1d4775[_0x93aa('0x32')][_0x93aa('0x24')]);}return _0x38d75c[_0x93aa('0x57')](_0x2868a8);}})[_0x93aa('0x17')](function(_0x3f317e){if(_0x3f317e){return _0x3f317e?{'count':_0x1ca7be,'rows':_0x3f317e}:null;}})[_0x93aa('0x17')](respondWithResult(_0x395cd4,null))[_0x93aa('0x51')](handleError(_0x395cd4,null));};exports['getSubjects']=function(_0x3c5093,_0x5a61a0,_0x2f2121){var _0x41a0fd={};var _0x36cf93={};var _0x1d8aaa;var _0x56d6e8;return db[_0x93aa('0x2f')][_0x93aa('0x55')]({'where':{'id':_0x3c5093[_0x93aa('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5a61a0,null))[_0x93aa('0x17')](function(_0x123d0d){if(_0x123d0d){_0x1d8aaa=_0x123d0d;_0x36cf93[_0x93aa('0x36')]=_[_0x93aa('0x31')](db[_0x93aa('0x56')][_0x93aa('0x30')]);_0x36cf93[_0x93aa('0x32')]=_[_0x93aa('0x31')](_0x3c5093[_0x93aa('0x32')]);_0x36cf93[_0x93aa('0x3f')]=_[_0x93aa('0x35')](_0x36cf93['model'],_0x36cf93[_0x93aa('0x32')]);_0x41a0fd[_0x93aa('0x38')]=_[_0x93aa('0x35')](_0x36cf93[_0x93aa('0x36')],qs['fields'](_0x3c5093[_0x93aa('0x32')][_0x93aa('0x37')]));_0x41a0fd[_0x93aa('0x38')]=_0x41a0fd['attributes'][_0x93aa('0x39')]?_0x41a0fd['attributes']:_0x36cf93[_0x93aa('0x36')];_0x41a0fd['order']=qs[_0x93aa('0x3d')](_0x3c5093[_0x93aa('0x32')]['sort']);_0x41a0fd[_0x93aa('0x3e')]=qs[_0x93aa('0x3f')](_[_0x93aa('0x40')](_0x3c5093['query'],_0x36cf93[_0x93aa('0x3f')]));if(_0x3c5093[_0x93aa('0x32')]['filter']){_0x41a0fd[_0x93aa('0x3e')]=_[_0x93aa('0x43')](_0x41a0fd[_0x93aa('0x3e')],{'$or':_[_0x93aa('0x45')](_0x41a0fd[_0x93aa('0x38')],function(_0x13320d){var _0x3eafcd={};_0x3eafcd[_0x13320d]={'$like':'%'+_0x3c5093[_0x93aa('0x32')][_0x93aa('0x44')]+'%'};return _0x3eafcd;})});}_0x41a0fd=_[_0x93aa('0x43')]({},_0x41a0fd,_0x3c5093['options']);return _0x1d8aaa['getSubjects'](_0x41a0fd);}})[_0x93aa('0x17')](function(_0x2c32d4){if(_0x2c32d4){_0x56d6e8=_0x2c32d4['length'];if(!_0x3c5093[_0x93aa('0x32')][_0x93aa('0x3a')](_0x93aa('0x3b'))){_0x41a0fd['limit']=qs[_0x93aa('0x25')](_0x3c5093['query'][_0x93aa('0x25')]);_0x41a0fd['offset']=qs[_0x93aa('0x24')](_0x3c5093[_0x93aa('0x32')][_0x93aa('0x24')]);}return _0x1d8aaa[_0x93aa('0x58')](_0x41a0fd);}})[_0x93aa('0x17')](function(_0x3f8961){if(_0x3f8961){return _0x3f8961?{'count':_0x56d6e8,'rows':_0x3f8961}:null;}})['then'](respondWithResult(_0x5a61a0,null))['catch'](handleError(_0x5a61a0,null));};exports['getDescriptions']=function(_0x8dd835,_0x57e724,_0x451026){var _0x38000b={};var _0x5fc5b1={};var _0x1e2de1;var _0x276f84;return db[_0x93aa('0x2f')][_0x93aa('0x55')]({'where':{'id':_0x8dd835[_0x93aa('0x4e')]['id']}})[_0x93aa('0x17')](handleEntityNotFound(_0x57e724,null))[_0x93aa('0x17')](function(_0x3870b2){if(_0x3870b2){_0x1e2de1=_0x3870b2;_0x5fc5b1[_0x93aa('0x36')]=_[_0x93aa('0x31')](db[_0x93aa('0x56')][_0x93aa('0x30')]);_0x5fc5b1['query']=_[_0x93aa('0x31')](_0x8dd835[_0x93aa('0x32')]);_0x5fc5b1[_0x93aa('0x3f')]=_[_0x93aa('0x35')](_0x5fc5b1[_0x93aa('0x36')],_0x5fc5b1[_0x93aa('0x32')]);_0x38000b[_0x93aa('0x38')]=_['intersection'](_0x5fc5b1[_0x93aa('0x36')],qs[_0x93aa('0x37')](_0x8dd835[_0x93aa('0x32')][_0x93aa('0x37')]));_0x38000b['attributes']=_0x38000b[_0x93aa('0x38')][_0x93aa('0x39')]?_0x38000b[_0x93aa('0x38')]:_0x5fc5b1[_0x93aa('0x36')];_0x38000b['order']=qs[_0x93aa('0x3d')](_0x8dd835[_0x93aa('0x32')]['sort']);_0x38000b['where']=qs[_0x93aa('0x3f')](_[_0x93aa('0x40')](_0x8dd835[_0x93aa('0x32')],_0x5fc5b1[_0x93aa('0x3f')]));if(_0x8dd835[_0x93aa('0x32')][_0x93aa('0x44')]){_0x38000b[_0x93aa('0x3e')]=_[_0x93aa('0x43')](_0x38000b[_0x93aa('0x3e')],{'$or':_[_0x93aa('0x45')](_0x38000b[_0x93aa('0x38')],function(_0x44a2ef){var _0x41a0c4={};_0x41a0c4[_0x44a2ef]={'$like':'%'+_0x8dd835['query']['filter']+'%'};return _0x41a0c4;})});}_0x38000b=_['merge']({},_0x38000b,_0x8dd835[_0x93aa('0x49')]);return _0x1e2de1['getDescriptions'](_0x38000b);}})[_0x93aa('0x17')](function(_0x4fe6f9){if(_0x4fe6f9){_0x276f84=_0x4fe6f9[_0x93aa('0x39')];if(!_0x8dd835[_0x93aa('0x32')]['hasOwnProperty']('nolimit')){_0x38000b[_0x93aa('0x25')]=qs[_0x93aa('0x25')](_0x8dd835[_0x93aa('0x32')]['limit']);_0x38000b['offset']=qs['offset'](_0x8dd835['query'][_0x93aa('0x24')]);}return _0x1e2de1[_0x93aa('0x59')](_0x38000b);}})[_0x93aa('0x17')](function(_0x3d6930){if(_0x3d6930){return _0x3d6930?{'count':_0x276f84,'rows':_0x3d6930}:null;}})[_0x93aa('0x17')](respondWithResult(_0x57e724,null))[_0x93aa('0x51')](handleError(_0x57e724,null));};
\ No newline at end of file
index ea156cd..756a6b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf120=['../../config/logger','api','bluebird','request-promise','./intZohoConfiguration.attributes','define','ZohoConfiguration','int_zoho_configurations','util'];(function(_0xb4f47d,_0x2be075){var _0x39b73d=function(_0x1a9991){while(--_0x1a9991){_0xb4f47d['push'](_0xb4f47d['shift']());}};_0x39b73d(++_0x2be075);}(_0xf120,0x179));var _0x0f12=function(_0x3c7ae9,_0xc48f9a){_0x3c7ae9=_0x3c7ae9-0x0;var _0x1f0320=_0xf120[_0x3c7ae9];return _0x1f0320;};'use strict';var _=require('lodash');var util=require(_0x0f12('0x0'));var logger=require(_0x0f12('0x1'))(_0x0f12('0x2'));var moment=require('moment');var BPromise=require(_0x0f12('0x3'));var rp=require(_0x0f12('0x4'));var attributes=require(_0x0f12('0x5'));module['exports']=function(_0x1a4043,_0x294e21){return _0x1a4043[_0x0f12('0x6')](_0x0f12('0x7'),attributes,{'tableName':_0x0f12('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4226=['define','util','bluebird','request-promise','exports'];(function(_0x54b283,_0x5eb8a6){var _0x2462b3=function(_0x13fca7){while(--_0x13fca7){_0x54b283['push'](_0x54b283['shift']());}};_0x2462b3(++_0x5eb8a6);}(_0x4226,0x1dc));var _0x6422=function(_0x5afe82,_0x515648){_0x5afe82=_0x5afe82-0x0;var _0x23b46b=_0x4226[_0x5afe82];return _0x23b46b;};'use strict';var _=require('lodash');var util=require(_0x6422('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6422('0x1'));var rp=require(_0x6422('0x2'));var attributes=require('./intZohoConfiguration.attributes');module[_0x6422('0x3')]=function(_0x3b39f2,_0x244313){return _0x3b39f2[_0x6422('0x4')]('ZohoConfiguration',attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 33f8bb8..c4cc67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3083=['result','catch','util','bluebird','randomstring','../../config/utils','jayson/promise','http','request','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x49f2c7,_0x2bacda){var _0x41623b=function(_0x5a5767){while(--_0x5a5767){_0x49f2c7['push'](_0x49f2c7['shift']());}};_0x41623b(++_0x2bacda);}(_0x3083,0x9b));var _0x3308=function(_0x3a73bc,_0x550aef){_0x3a73bc=_0x3a73bc-0x0;var _0x32891b=_0x3083[_0x3a73bc];return _0x32891b;};'use strict';var _=require('lodash');var util=require(_0x3308('0x0'));var moment=require('moment');var BPromise=require(_0x3308('0x1'));var rs=require(_0x3308('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3308('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x3308('0x4'));var client=jayson['client'][_0x3308('0x5')]({'port':0x232a});function respondWithRpcPromise(_0xf1ff4e,_0x57e9e1,_0x174418){return new BPromise(function(_0xf433a1,_0x29d538){return client[_0x3308('0x6')](_0xf1ff4e,_0x174418)['then'](function(_0x35b444){logger[_0x3308('0x7')](_0x3308('0x8'),_0x57e9e1,_0x3308('0x9'));logger[_0x3308('0xa')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x57e9e1,_0x3308('0x9'),JSON[_0x3308('0xb')](_0x35b444));if(_0x35b444[_0x3308('0xc')]){if(_0x35b444['error'][_0x3308('0xd')]===0x1f4){logger['error'](_0x3308('0x8'),_0x57e9e1,_0x35b444[_0x3308('0xc')][_0x3308('0xe')]);return _0x29d538(_0x35b444['error']['message']);}logger[_0x3308('0xc')](_0x3308('0x8'),_0x57e9e1,_0x35b444['error'][_0x3308('0xe')]);return _0xf433a1(_0x35b444[_0x3308('0xc')]['message']);}else{logger[_0x3308('0x7')](_0x3308('0x8'),_0x57e9e1,_0x3308('0x9'));_0xf433a1(_0x35b444[_0x3308('0xf')]['message']);}})[_0x3308('0x10')](function(_0x18c08d){logger[_0x3308('0xc')](_0x3308('0x8'),_0x57e9e1,_0x18c08d);_0x29d538(_0x18c08d);});});}
\ No newline at end of file
+var _0x95ad=['rpc','../../config/environment','client','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x26f5e0,_0x5bfd89){var _0x202204=function(_0x38ea36){while(--_0x38ea36){_0x26f5e0['push'](_0x26f5e0['shift']());}};_0x202204(++_0x5bfd89);}(_0x95ad,0x1d9));var _0xd95a=function(_0x9cad5b,_0x49d9e0){_0x9cad5b=_0x9cad5b-0x0;var _0x4044a8=_0x95ad[_0x9cad5b];return _0x4044a8;};'use strict';var _=require('lodash');var util=require(_0xd95a('0x0'));var moment=require(_0xd95a('0x1'));var BPromise=require('bluebird');var rs=require(_0xd95a('0x2'));var fs=require('fs');var Redis=require(_0xd95a('0x3'));var db=require(_0xd95a('0x4'))['db'];var utils=require(_0xd95a('0x5'));var logger=require(_0xd95a('0x6'))(_0xd95a('0x7'));var config=require(_0xd95a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd95a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x142a58,_0x37ae11,_0x19adac){return new BPromise(function(_0x34bbea,_0x477fde){return client['request'](_0x142a58,_0x19adac)[_0xd95a('0xa')](function(_0x54f44a){logger[_0xd95a('0xb')](_0xd95a('0xc'),_0x37ae11,_0xd95a('0xd'));logger[_0xd95a('0xe')](_0xd95a('0xf'),_0x37ae11,'request\x20sent',JSON['stringify'](_0x54f44a));if(_0x54f44a['error']){if(_0x54f44a[_0xd95a('0x10')]['code']===0x1f4){logger[_0xd95a('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x37ae11,_0x54f44a[_0xd95a('0x10')][_0xd95a('0x11')]);return _0x477fde(_0x54f44a['error'][_0xd95a('0x11')]);}logger[_0xd95a('0x10')](_0xd95a('0xc'),_0x37ae11,_0x54f44a[_0xd95a('0x10')][_0xd95a('0x11')]);return _0x34bbea(_0x54f44a['error'][_0xd95a('0x11')]);}else{logger['info'](_0xd95a('0xc'),_0x37ae11,_0xd95a('0xd'));_0x34bbea(_0x54f44a[_0xd95a('0x12')][_0xd95a('0x11')]);}})[_0xd95a('0x13')](function(_0x1894c2){logger[_0xd95a('0x10')](_0xd95a('0xc'),_0x37ae11,_0x1894c2);_0x477fde(_0x1894c2);});});}
\ No newline at end of file
index 38bb565..7daff88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a0=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x416a0b,_0x5d1c04){var _0x3a1501=function(_0x3f4e3c){while(--_0x3f4e3c){_0x416a0b['push'](_0x416a0b['shift']());}};_0x3a1501(++_0x5d1c04);}(_0x72a0,0xe8));var _0x072a=function(_0xe14f8e,_0x4175df){_0xe14f8e=_0xe14f8e-0x0;var _0x583797=_0x72a0[_0xe14f8e];return _0x583797;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x072a('0x0'));var express=require('express');var router=express[_0x072a('0x1')]();var auth=require(_0x072a('0x2'));var interaction=require(_0x072a('0x3'));var config=require(_0x072a('0x4'));var controller=require('./intZohoField.controller');router[_0x072a('0x5')]('/',auth[_0x072a('0x6')](),controller[_0x072a('0x7')]);router[_0x072a('0x5')](_0x072a('0x8'),auth[_0x072a('0x6')](),controller[_0x072a('0x9')]);router[_0x072a('0xa')]('/',auth[_0x072a('0x6')](),controller[_0x072a('0xb')]);router[_0x072a('0xc')](_0x072a('0x8'),auth[_0x072a('0x6')](),controller[_0x072a('0xd')]);router[_0x072a('0xe')](_0x072a('0x8'),auth[_0x072a('0x6')](),controller[_0x072a('0xf')]);module[_0x072a('0x10')]=router;
\ No newline at end of file
+var _0x4db2=['/:id','show','post','create','put','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x23d957,_0x5d2176){var _0x568ff2=function(_0x6ad689){while(--_0x6ad689){_0x23d957['push'](_0x23d957['shift']());}};_0x568ff2(++_0x5d2176);}(_0x4db2,0x170));var _0x24db=function(_0x45ffc0,_0x4f090b){_0x45ffc0=_0x45ffc0-0x0;var _0x1f0074=_0x4db2[_0x45ffc0];return _0x1f0074;};'use strict';var multer=require(_0x24db('0x0'));var util=require(_0x24db('0x1'));var path=require(_0x24db('0x2'));var timeout=require(_0x24db('0x3'));var express=require(_0x24db('0x4'));var router=express[_0x24db('0x5')]();var auth=require(_0x24db('0x6'));var interaction=require(_0x24db('0x7'));var config=require(_0x24db('0x8'));var controller=require('./intZohoField.controller');router['get']('/',auth[_0x24db('0x9')](),controller[_0x24db('0xa')]);router[_0x24db('0xb')](_0x24db('0xc'),auth[_0x24db('0x9')](),controller[_0x24db('0xd')]);router[_0x24db('0xe')]('/',auth['isAuthenticated'](),controller[_0x24db('0xf')]);router[_0x24db('0x10')](_0x24db('0xc'),auth[_0x24db('0x9')](),controller[_0x24db('0x11')]);router['delete'](_0x24db('0xc'),auth[_0x24db('0x9')](),controller['destroy']);module[_0x24db('0x12')]=router;
\ No newline at end of file
index a0c9ce4..2547025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['BOOLEAN','sequelize','exports','ENUM','customVariable','keyValue','string','STRING','variable'];(function(_0x5655f3,_0xba5260){var _0x16bda1=function(_0x35ea4e){while(--_0x35ea4e){_0x5655f3['push'](_0x5655f3['shift']());}};_0x16bda1(++_0xba5260);}(_0x70e0,0x17b));var _0x070e=function(_0x1193db,_0x3f9754){_0x1193db=_0x1193db-0x0;var _0x47c8d3=_0x70e0[_0x1193db];return _0x47c8d3;};'use strict';var Sequelize=require(_0x070e('0x0'));module[_0x070e('0x1')]={'type':{'type':Sequelize[_0x070e('0x2')]('string','variable',_0x070e('0x3'),_0x070e('0x4')),'defaultValue':_0x070e('0x5')},'content':{'type':Sequelize[_0x070e('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x070e('0x2')]('string',_0x070e('0x7'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x070e('0x6')]},'customField':{'type':Sequelize[_0x070e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
+var _0x4483=['customVariable','keyValue','string','STRING','BOOLEAN','sequelize','exports','ENUM','variable'];(function(_0x210580,_0x1329d5){var _0x477835=function(_0x202c95){while(--_0x202c95){_0x210580['push'](_0x210580['shift']());}};_0x477835(++_0x1329d5);}(_0x4483,0x1a3));var _0x3448=function(_0xdb4579,_0x306808){_0xdb4579=_0xdb4579-0x0;var _0x5baee7=_0x4483[_0xdb4579];return _0x5baee7;};'use strict';var Sequelize=require(_0x3448('0x0'));module[_0x3448('0x1')]={'type':{'type':Sequelize[_0x3448('0x2')]('string',_0x3448('0x3'),_0x3448('0x4'),_0x3448('0x5')),'defaultValue':_0x3448('0x6')},'content':{'type':Sequelize[_0x3448('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3448('0x2')](_0x3448('0x6'),_0x3448('0x3'),_0x3448('0x4'))},'keyContent':{'type':Sequelize[_0x3448('0x7')]},'idField':{'type':Sequelize[_0x3448('0x7')]},'nameField':{'type':Sequelize[_0x3448('0x7')]},'customField':{'type':Sequelize[_0x3448('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7d5e979..b30e2ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79fb=['dateStart','dateEnd','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','add','merge','map','type','VIRTUAL','field','filter','options','count','includeAll','show','params','keys','find','catch','create','body','html-pdf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','ZohoField','rawAttributes','model','query'];(function(_0x4b5697,_0x1a032c){var _0x4cf60d=function(_0x4a15d0){while(--_0x4a15d0){_0x4b5697['push'](_0x4b5697['shift']());}};_0x4cf60d(++_0x1a032c);}(_0x79fb,0xf8));var _0xb79f=function(_0x167a32,_0x35d64f){_0x167a32=_0x167a32-0x0;var _0x4566e8=_0x79fb[_0x167a32];return _0x4566e8;};'use strict';var pdf=require(_0xb79f('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb79f('0x1'));var jsonpatch=require(_0xb79f('0x2'));var rp=require('request-promise');var moment=require(_0xb79f('0x3'));var BPromise=require(_0xb79f('0x4'));var Mustache=require(_0xb79f('0x5'));var util=require('util');var path=require(_0xb79f('0x6'));var sox=require(_0xb79f('0x7'));var csv=require(_0xb79f('0x8'));var ejs=require(_0xb79f('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0xb79f('0xa'));var crypto=require(_0xb79f('0xb'));var jsforce=require(_0xb79f('0xc'));var deskjs=require(_0xb79f('0xd'));var toCsv=require(_0xb79f('0x8'));var querystring=require(_0xb79f('0xe'));var Papa=require(_0xb79f('0xf'));var Redis=require('ioredis');var qs=require(_0xb79f('0x10'));var logger=require(_0xb79f('0x11'))(_0xb79f('0x12'));var utils=require(_0xb79f('0x13'));var config=require(_0xb79f('0x14'));var db=require(_0xb79f('0x15'))['db'];function respondWithStatusCode(_0x1953ad,_0x2f956b){_0x2f956b=_0x2f956b||0xcc;return function(_0x291b2){if(_0x291b2){return _0x1953ad[_0xb79f('0x16')](_0x2f956b);}return _0x1953ad[_0xb79f('0x17')](_0x2f956b)[_0xb79f('0x18')]();};}function respondWithResult(_0xf0655a,_0x4d863e){_0x4d863e=_0x4d863e||0xc8;return function(_0x245442){if(_0x245442){return _0xf0655a[_0xb79f('0x17')](_0x4d863e)[_0xb79f('0x19')](_0x245442);}};}function respondWithFilteredResult(_0x14455f,_0xffd2ed){return function(_0x56eb0b){if(_0x56eb0b){var _0x3e8407=_0x56eb0b['count'],_0x1f1020=_0xffd2ed[_0xb79f('0x1a')],_0x2d92e3=_0xffd2ed['offset']+_0xffd2ed[_0xb79f('0x1b')],_0x36c7c7;if(_0x2d92e3>=_0x3e8407){_0x2d92e3=_0x3e8407;_0x36c7c7=0xc8;}else{_0x36c7c7=0xce;}_0x14455f[_0xb79f('0x17')](_0x36c7c7);return _0x14455f[_0xb79f('0x1c')](_0xb79f('0x1d'),_0x1f1020+'-'+_0x2d92e3+'/'+_0x3e8407)[_0xb79f('0x19')](_0x56eb0b);}return null;};}function patchUpdates(_0x554f50){return function(_0x189300){try{jsonpatch['apply'](_0x189300,_0x554f50,!![]);}catch(_0x40e6ce){return BPromise[_0xb79f('0x1e')](_0x40e6ce);}return _0x189300[_0xb79f('0x1f')]();};}function saveUpdates(_0x10cf03,_0x3e6fec){return function(_0x53fd7c){if(_0x53fd7c){return _0x53fd7c[_0xb79f('0x20')](_0x10cf03)['then'](function(_0x1c62a5){return _0x1c62a5;});}return null;};}function removeEntity(_0x329a58,_0x5675e7){return function(_0x3c65c9){if(_0x3c65c9){return _0x3c65c9[_0xb79f('0x21')]()[_0xb79f('0x22')](function(){_0x329a58['status'](0xcc)[_0xb79f('0x18')]();});}};}function handleEntityNotFound(_0x488ad5,_0x1a414e){return function(_0x1d1b3a){if(!_0x1d1b3a){_0x488ad5[_0xb79f('0x16')](0x194);}return _0x1d1b3a;};}function handleError(_0x1bafbf,_0x300e06){_0x300e06=_0x300e06||0x1f4;return function(_0x4c43d0){logger[_0xb79f('0x23')](_0x4c43d0[_0xb79f('0x24')]);if(_0x4c43d0[_0xb79f('0x25')]){delete _0x4c43d0['name'];}_0x1bafbf[_0xb79f('0x17')](_0x300e06)[_0xb79f('0x26')](_0x4c43d0);};}exports[_0xb79f('0x27')]=function(_0x5e0af3,_0x29fce7){var _0x1499db={},_0x54e6d2={},_0x2c064f={'count':0x0,'rows':[]};var _0x482c85=db[_0xb79f('0x28')][_0xb79f('0x29')];_0x54e6d2[_0xb79f('0x2a')]=_['keys'](_0x482c85);var _0x387efb={'dateStart':_0x5e0af3[_0xb79f('0x2b')][_0xb79f('0x2c')],'dateEnd':_0x5e0af3[_0xb79f('0x2b')][_0xb79f('0x2d')]};delete _0x5e0af3[_0xb79f('0x2b')][_0xb79f('0x2c')];delete _0x5e0af3['query'][_0xb79f('0x2d')];_0x54e6d2['query']=_['keys'](_0x5e0af3['query']);_0x54e6d2[_0xb79f('0x2e')]=_[_0xb79f('0x2f')](_0x54e6d2['model'],_0x54e6d2[_0xb79f('0x2b')]);_0x1499db[_0xb79f('0x30')]=_[_0xb79f('0x2f')](_0x54e6d2[_0xb79f('0x2a')],qs['fields'](_0x5e0af3['query'][_0xb79f('0x31')]));_0x1499db[_0xb79f('0x30')]=_0x1499db[_0xb79f('0x30')][_0xb79f('0x32')]?_0x1499db[_0xb79f('0x30')]:_0x54e6d2[_0xb79f('0x2a')];if(!_0x5e0af3[_0xb79f('0x2b')]['hasOwnProperty'](_0xb79f('0x33'))){_0x1499db['limit']=qs[_0xb79f('0x1b')](_0x5e0af3[_0xb79f('0x2b')][_0xb79f('0x1b')]);_0x1499db[_0xb79f('0x1a')]=qs[_0xb79f('0x1a')](_0x5e0af3[_0xb79f('0x2b')][_0xb79f('0x1a')]);}_0x1499db[_0xb79f('0x34')]=qs[_0xb79f('0x35')](_0x5e0af3[_0xb79f('0x2b')][_0xb79f('0x35')]);_0x1499db[_0xb79f('0x36')]=qs['filters'](_[_0xb79f('0x37')](_0x5e0af3['query'],_0x54e6d2[_0xb79f('0x2e')]));if(_0x387efb[_0xb79f('0x2c')]){if(_0x387efb['dateEnd']){_0x387efb[_0xb79f('0x2d')]=moment(_0x387efb['dateEnd'])[_0xb79f('0x38')](0x1,'day');}else{_0x387efb['dateEnd']=moment(_0x387efb['dateStart'])[_0xb79f('0x38')](0x1,'day');}_[_0xb79f('0x39')](_0x1499db['where'],{'createdAt':{'$gte':_0x387efb[_0xb79f('0x2c')],'$lte':_0x387efb[_0xb79f('0x2d')]}});}if(_0x5e0af3[_0xb79f('0x2b')]['filter']){_0x1499db[_0xb79f('0x36')]=_[_0xb79f('0x39')](_0x1499db['where'],{'$or':_[_0xb79f('0x3a')](_0x482c85,function(_0x5c3848){if(_0x5c3848[_0xb79f('0x3b')]['key']!==_0xb79f('0x3c')){var _0x78d0={};_0x78d0[_0x5c3848[_0xb79f('0x3d')]]={'$like':'%'+_0x5e0af3[_0xb79f('0x2b')][_0xb79f('0x3e')]+'%'};return _0x78d0;}})});}_0x1499db=_[_0xb79f('0x39')]({},_0x1499db,_0x5e0af3[_0xb79f('0x3f')]);var _0x1d9c4d={'where':_0x1499db[_0xb79f('0x36')]};return db[_0xb79f('0x28')][_0xb79f('0x40')](_0x1d9c4d)[_0xb79f('0x22')](function(_0x594f66){_0x2c064f[_0xb79f('0x40')]=_0x594f66;if(_0x5e0af3[_0xb79f('0x2b')][_0xb79f('0x41')]){_0x1499db['include']=[{'all':!![]}];}return db[_0xb79f('0x28')]['findAll'](_0x1499db);})[_0xb79f('0x22')](function(_0x8103bf){_0x2c064f['rows']=_0x8103bf;return _0x2c064f;})[_0xb79f('0x22')](respondWithFilteredResult(_0x29fce7,_0x1499db))['catch'](handleError(_0x29fce7,null));};exports[_0xb79f('0x42')]=function(_0x1036bd,_0x3b6eaf){var _0xfbff7e={'raw':!![],'where':{'id':_0x1036bd[_0xb79f('0x43')]['id']}},_0x31900b={};_0x31900b[_0xb79f('0x2a')]=_[_0xb79f('0x44')](db['ZohoField'][_0xb79f('0x29')]);_0x31900b[_0xb79f('0x2b')]=_[_0xb79f('0x44')](_0x1036bd[_0xb79f('0x2b')]);_0x31900b[_0xb79f('0x2e')]=_['intersection'](_0x31900b[_0xb79f('0x2a')],_0x31900b['query']);_0xfbff7e[_0xb79f('0x30')]=_[_0xb79f('0x2f')](_0x31900b[_0xb79f('0x2a')],qs[_0xb79f('0x31')](_0x1036bd[_0xb79f('0x2b')][_0xb79f('0x31')]));_0xfbff7e['attributes']=_0xfbff7e[_0xb79f('0x30')]['length']?_0xfbff7e[_0xb79f('0x30')]:_0x31900b[_0xb79f('0x2a')];if(_0x1036bd[_0xb79f('0x2b')][_0xb79f('0x41')]){_0xfbff7e['include']=[{'all':!![]}];}_0xfbff7e=_[_0xb79f('0x39')]({},_0xfbff7e,_0x1036bd[_0xb79f('0x3f')]);return db[_0xb79f('0x28')][_0xb79f('0x45')](_0xfbff7e)[_0xb79f('0x22')](handleEntityNotFound(_0x3b6eaf,null))[_0xb79f('0x22')](respondWithResult(_0x3b6eaf,null))[_0xb79f('0x46')](handleError(_0x3b6eaf,null));};exports[_0xb79f('0x47')]=function(_0x337fa2,_0x4bb8c4){return db[_0xb79f('0x28')][_0xb79f('0x47')](_0x337fa2['body'],{})[_0xb79f('0x22')](respondWithResult(_0x4bb8c4,0xc9))[_0xb79f('0x46')](handleError(_0x4bb8c4,null));};exports['update']=function(_0x506115,_0xe06a7a){if(_0x506115['body']['id']){delete _0x506115[_0xb79f('0x48')]['id'];}return db[_0xb79f('0x28')][_0xb79f('0x45')]({'where':{'id':_0x506115[_0xb79f('0x43')]['id']}})[_0xb79f('0x22')](handleEntityNotFound(_0xe06a7a,null))[_0xb79f('0x22')](saveUpdates(_0x506115[_0xb79f('0x48')],null))['then'](respondWithResult(_0xe06a7a,null))[_0xb79f('0x46')](handleError(_0xe06a7a,null));};exports['destroy']=function(_0x2f373e,_0xc2a6b2){return db[_0xb79f('0x28')]['find']({'where':{'id':_0x2f373e[_0xb79f('0x43')]['id']}})[_0xb79f('0x22')](handleEntityNotFound(_0xc2a6b2,null))[_0xb79f('0x22')](removeEntity(_0xc2a6b2,null))[_0xb79f('0x46')](handleError(_0xc2a6b2,null));};
\ No newline at end of file
+var _0xbfa7=['count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','index','ZohoField','rawAttributes','model','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','filter','map','key','VIRTUAL','field','options','findAll','rows','catch','show','keys','include','find','create','body','params','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json'];(function(_0x4d84cb,_0x4c81e3){var _0x40c301=function(_0x5e7fab){while(--_0x5e7fab){_0x4d84cb['push'](_0x4d84cb['shift']());}};_0x40c301(++_0x4c81e3);}(_0xbfa7,0x83));var _0x7bfa=function(_0x2ad40a,_0x5c3d62){_0x2ad40a=_0x2ad40a-0x0;var _0x405e4a=_0xbfa7[_0x2ad40a];return _0x405e4a;};'use strict';var pdf=require(_0x7bfa('0x0'));var emlformat=require(_0x7bfa('0x1'));var rimraf=require(_0x7bfa('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7bfa('0x3'));var rp=require(_0x7bfa('0x4'));var moment=require(_0x7bfa('0x5'));var BPromise=require(_0x7bfa('0x6'));var Mustache=require(_0x7bfa('0x7'));var util=require(_0x7bfa('0x8'));var path=require('path');var sox=require(_0x7bfa('0x9'));var csv=require('to-csv');var ejs=require(_0x7bfa('0xa'));var fs=require('fs');var _=require(_0x7bfa('0xb'));var squel=require(_0x7bfa('0xc'));var crypto=require(_0x7bfa('0xd'));var jsforce=require(_0x7bfa('0xe'));var deskjs=require(_0x7bfa('0xf'));var toCsv=require(_0x7bfa('0x10'));var querystring=require(_0x7bfa('0x11'));var Papa=require(_0x7bfa('0x12'));var Redis=require('ioredis');var qs=require(_0x7bfa('0x13'));var logger=require(_0x7bfa('0x14'))('api');var utils=require(_0x7bfa('0x15'));var config=require(_0x7bfa('0x16'));var db=require(_0x7bfa('0x17'))['db'];function respondWithStatusCode(_0xb9c40b,_0x5a68a3){_0x5a68a3=_0x5a68a3||0xcc;return function(_0x212962){if(_0x212962){return _0xb9c40b[_0x7bfa('0x18')](_0x5a68a3);}return _0xb9c40b[_0x7bfa('0x19')](_0x5a68a3)['end']();};}function respondWithResult(_0x4a9d55,_0x555af7){_0x555af7=_0x555af7||0xc8;return function(_0x1d7293){if(_0x1d7293){return _0x4a9d55[_0x7bfa('0x19')](_0x555af7)[_0x7bfa('0x1a')](_0x1d7293);}};}function respondWithFilteredResult(_0x5c5b23,_0x1fc2c9){return function(_0x231b3a){if(_0x231b3a){var _0x5d1c3d=_0x231b3a[_0x7bfa('0x1b')],_0x2f9ec4=_0x1fc2c9[_0x7bfa('0x1c')],_0x52bf3c=_0x1fc2c9[_0x7bfa('0x1c')]+_0x1fc2c9[_0x7bfa('0x1d')],_0x2a43af;if(_0x52bf3c>=_0x5d1c3d){_0x52bf3c=_0x5d1c3d;_0x2a43af=0xc8;}else{_0x2a43af=0xce;}_0x5c5b23[_0x7bfa('0x19')](_0x2a43af);return _0x5c5b23[_0x7bfa('0x1e')](_0x7bfa('0x1f'),_0x2f9ec4+'-'+_0x52bf3c+'/'+_0x5d1c3d)[_0x7bfa('0x1a')](_0x231b3a);}return null;};}function patchUpdates(_0x4b91a2){return function(_0xa7abd3){try{jsonpatch[_0x7bfa('0x20')](_0xa7abd3,_0x4b91a2,!![]);}catch(_0x5a3eee){return BPromise[_0x7bfa('0x21')](_0x5a3eee);}return _0xa7abd3[_0x7bfa('0x22')]();};}function saveUpdates(_0x26324b,_0x1f913e){return function(_0x1d8a80){if(_0x1d8a80){return _0x1d8a80[_0x7bfa('0x23')](_0x26324b)[_0x7bfa('0x24')](function(_0x57e894){return _0x57e894;});}return null;};}function removeEntity(_0x2a1853,_0x46d267){return function(_0x31e696){if(_0x31e696){return _0x31e696[_0x7bfa('0x25')]()['then'](function(){_0x2a1853[_0x7bfa('0x19')](0xcc)[_0x7bfa('0x26')]();});}};}function handleEntityNotFound(_0x2c4aef,_0x41b766){return function(_0x1cdfe0){if(!_0x1cdfe0){_0x2c4aef[_0x7bfa('0x18')](0x194);}return _0x1cdfe0;};}function handleError(_0x44fcc1,_0x46ce5a){_0x46ce5a=_0x46ce5a||0x1f4;return function(_0x46a01f){logger['error'](_0x46a01f[_0x7bfa('0x27')]);if(_0x46a01f['name']){delete _0x46a01f[_0x7bfa('0x28')];}_0x44fcc1[_0x7bfa('0x19')](_0x46ce5a)[_0x7bfa('0x29')](_0x46a01f);};}exports[_0x7bfa('0x2a')]=function(_0x27770b,_0x22e21c){var _0x1bbfee={},_0x294e78={},_0x82fc2={'count':0x0,'rows':[]};var _0x48ddc0=db[_0x7bfa('0x2b')][_0x7bfa('0x2c')];_0x294e78[_0x7bfa('0x2d')]=_['keys'](_0x48ddc0);var _0x48ad76={'dateStart':_0x27770b['query'][_0x7bfa('0x2e')],'dateEnd':_0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x30')]};delete _0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x2e')];delete _0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x30')];_0x294e78[_0x7bfa('0x2f')]=_['keys'](_0x27770b[_0x7bfa('0x2f')]);_0x294e78[_0x7bfa('0x31')]=_[_0x7bfa('0x32')](_0x294e78[_0x7bfa('0x2d')],_0x294e78[_0x7bfa('0x2f')]);_0x1bbfee[_0x7bfa('0x33')]=_[_0x7bfa('0x32')](_0x294e78[_0x7bfa('0x2d')],qs[_0x7bfa('0x34')](_0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x34')]));_0x1bbfee[_0x7bfa('0x33')]=_0x1bbfee['attributes'][_0x7bfa('0x35')]?_0x1bbfee[_0x7bfa('0x33')]:_0x294e78[_0x7bfa('0x2d')];if(!_0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x36')](_0x7bfa('0x37'))){_0x1bbfee['limit']=qs[_0x7bfa('0x1d')](_0x27770b['query'][_0x7bfa('0x1d')]);_0x1bbfee[_0x7bfa('0x1c')]=qs[_0x7bfa('0x1c')](_0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x1c')]);}_0x1bbfee[_0x7bfa('0x38')]=qs[_0x7bfa('0x39')](_0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x39')]);_0x1bbfee[_0x7bfa('0x3a')]=qs[_0x7bfa('0x31')](_[_0x7bfa('0x3b')](_0x27770b['query'],_0x294e78[_0x7bfa('0x31')]));if(_0x48ad76['dateStart']){if(_0x48ad76[_0x7bfa('0x30')]){_0x48ad76[_0x7bfa('0x30')]=moment(_0x48ad76['dateEnd'])[_0x7bfa('0x3c')](0x1,_0x7bfa('0x3d'));}else{_0x48ad76[_0x7bfa('0x30')]=moment(_0x48ad76['dateStart'])['add'](0x1,_0x7bfa('0x3d'));}_[_0x7bfa('0x3e')](_0x1bbfee[_0x7bfa('0x3a')],{'createdAt':{'$gte':_0x48ad76[_0x7bfa('0x2e')],'$lte':_0x48ad76[_0x7bfa('0x30')]}});}if(_0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x3f')]){_0x1bbfee['where']=_[_0x7bfa('0x3e')](_0x1bbfee[_0x7bfa('0x3a')],{'$or':_[_0x7bfa('0x40')](_0x48ddc0,function(_0x438405){if(_0x438405['type'][_0x7bfa('0x41')]!==_0x7bfa('0x42')){var _0x31f4ad={};_0x31f4ad[_0x438405[_0x7bfa('0x43')]]={'$like':'%'+_0x27770b[_0x7bfa('0x2f')][_0x7bfa('0x3f')]+'%'};return _0x31f4ad;}})});}_0x1bbfee=_['merge']({},_0x1bbfee,_0x27770b[_0x7bfa('0x44')]);var _0x5d4b1b={'where':_0x1bbfee[_0x7bfa('0x3a')]};return db[_0x7bfa('0x2b')][_0x7bfa('0x1b')](_0x5d4b1b)['then'](function(_0x53d115){_0x82fc2[_0x7bfa('0x1b')]=_0x53d115;if(_0x27770b['query']['includeAll']){_0x1bbfee['include']=[{'all':!![]}];}return db[_0x7bfa('0x2b')][_0x7bfa('0x45')](_0x1bbfee);})[_0x7bfa('0x24')](function(_0x1af76e){_0x82fc2[_0x7bfa('0x46')]=_0x1af76e;return _0x82fc2;})[_0x7bfa('0x24')](respondWithFilteredResult(_0x22e21c,_0x1bbfee))[_0x7bfa('0x47')](handleError(_0x22e21c,null));};exports[_0x7bfa('0x48')]=function(_0x41cfb5,_0x52560c){var _0x32f4ac={'raw':!![],'where':{'id':_0x41cfb5['params']['id']}},_0x1f72ec={};_0x1f72ec['model']=_[_0x7bfa('0x49')](db['ZohoField'][_0x7bfa('0x2c')]);_0x1f72ec['query']=_[_0x7bfa('0x49')](_0x41cfb5[_0x7bfa('0x2f')]);_0x1f72ec[_0x7bfa('0x31')]=_[_0x7bfa('0x32')](_0x1f72ec[_0x7bfa('0x2d')],_0x1f72ec[_0x7bfa('0x2f')]);_0x32f4ac['attributes']=_[_0x7bfa('0x32')](_0x1f72ec[_0x7bfa('0x2d')],qs[_0x7bfa('0x34')](_0x41cfb5[_0x7bfa('0x2f')][_0x7bfa('0x34')]));_0x32f4ac[_0x7bfa('0x33')]=_0x32f4ac[_0x7bfa('0x33')][_0x7bfa('0x35')]?_0x32f4ac['attributes']:_0x1f72ec[_0x7bfa('0x2d')];if(_0x41cfb5[_0x7bfa('0x2f')]['includeAll']){_0x32f4ac[_0x7bfa('0x4a')]=[{'all':!![]}];}_0x32f4ac=_[_0x7bfa('0x3e')]({},_0x32f4ac,_0x41cfb5[_0x7bfa('0x44')]);return db[_0x7bfa('0x2b')][_0x7bfa('0x4b')](_0x32f4ac)[_0x7bfa('0x24')](handleEntityNotFound(_0x52560c,null))[_0x7bfa('0x24')](respondWithResult(_0x52560c,null))['catch'](handleError(_0x52560c,null));};exports['create']=function(_0x112693,_0x48dcad){return db[_0x7bfa('0x2b')][_0x7bfa('0x4c')](_0x112693[_0x7bfa('0x4d')],{})[_0x7bfa('0x24')](respondWithResult(_0x48dcad,0xc9))[_0x7bfa('0x47')](handleError(_0x48dcad,null));};exports[_0x7bfa('0x23')]=function(_0x1b0d1f,_0x33deca){if(_0x1b0d1f[_0x7bfa('0x4d')]['id']){delete _0x1b0d1f[_0x7bfa('0x4d')]['id'];}return db[_0x7bfa('0x2b')][_0x7bfa('0x4b')]({'where':{'id':_0x1b0d1f[_0x7bfa('0x4e')]['id']}})[_0x7bfa('0x24')](handleEntityNotFound(_0x33deca,null))['then'](saveUpdates(_0x1b0d1f['body'],null))[_0x7bfa('0x24')](respondWithResult(_0x33deca,null))[_0x7bfa('0x47')](handleError(_0x33deca,null));};exports[_0x7bfa('0x25')]=function(_0x2fe7d2,_0x25bcb6){return db[_0x7bfa('0x2b')][_0x7bfa('0x4b')]({'where':{'id':_0x2fe7d2['params']['id']}})[_0x7bfa('0x24')](handleEntityNotFound(_0x25bcb6,null))['then'](removeEntity(_0x25bcb6,null))['catch'](handleError(_0x25bcb6,null));};
\ No newline at end of file
index 5ada966..1525258 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83a7=['../../config/logger','moment','bluebird','request-promise','./intZohoField.attributes','lodash'];(function(_0x179e0d,_0x5dd8fe){var _0x329f6b=function(_0xc0e828){while(--_0xc0e828){_0x179e0d['push'](_0x179e0d['shift']());}};_0x329f6b(++_0x5dd8fe);}(_0x83a7,0x71));var _0x783a=function(_0xae62d5,_0x53ce18){_0xae62d5=_0xae62d5-0x0;var _0x5d0bb0=_0x83a7[_0xae62d5];return _0x5d0bb0;};'use strict';var _=require(_0x783a('0x0'));var util=require('util');var logger=require(_0x783a('0x1'))('api');var moment=require(_0x783a('0x2'));var BPromise=require(_0x783a('0x3'));var rp=require(_0x783a('0x4'));var attributes=require(_0x783a('0x5'));module['exports']=function(_0x1cc44a,_0x772240){return _0x1cc44a['define']('ZohoField',attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa223=['define','ZohoField','int_zoho_fields','util','api','moment','bluebird'];(function(_0x44ba49,_0x225349){var _0x57fbbe=function(_0x180fdf){while(--_0x180fdf){_0x44ba49['push'](_0x44ba49['shift']());}};_0x57fbbe(++_0x225349);}(_0xa223,0xea));var _0x3a22=function(_0x52408f,_0x194727){_0x52408f=_0x52408f-0x0;var _0x593e80=_0xa223[_0x52408f];return _0x593e80;};'use strict';var _=require('lodash');var util=require(_0x3a22('0x0'));var logger=require('../../config/logger')(_0x3a22('0x1'));var moment=require(_0x3a22('0x2'));var BPromise=require(_0x3a22('0x3'));var rp=require('request-promise');var attributes=require('./intZohoField.attributes');module['exports']=function(_0x4ec28f,_0x2edf8a){return _0x4ec28f[_0x3a22('0x4')](_0x3a22('0x5'),attributes,{'tableName':_0x3a22('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4376e0a..577d887 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ab=['../../config/logger','rpc','../../config/environment','client','request','then','request\x20sent','debug','stringify','error','code','ZohoField,\x20%s,\x20%s','message','info','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x367e5b,_0x5721e4){var _0x4b909e=function(_0x22c6a4){while(--_0x22c6a4){_0x367e5b['push'](_0x367e5b['shift']());}};_0x4b909e(++_0x5721e4);}(_0xd2ab,0x8d));var _0xbd2a=function(_0x3a7894,_0x3bc493){_0x3a7894=_0x3a7894-0x0;var _0x4e5eaa=_0xd2ab[_0x3a7894];return _0x4e5eaa;};'use strict';var _=require(_0xbd2a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xbd2a('0x1'));var rs=require(_0xbd2a('0x2'));var fs=require('fs');var Redis=require(_0xbd2a('0x3'));var db=require(_0xbd2a('0x4'))['db'];var utils=require(_0xbd2a('0x5'));var logger=require(_0xbd2a('0x6'))(_0xbd2a('0x7'));var config=require(_0xbd2a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbd2a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xefb3b1,_0x26047d,_0x3f42fb){return new BPromise(function(_0x5b83dc,_0x126033){return client[_0xbd2a('0xa')](_0xefb3b1,_0x3f42fb)[_0xbd2a('0xb')](function(_0x444cba){logger['info']('ZohoField,\x20%s,\x20%s',_0x26047d,_0xbd2a('0xc'));logger[_0xbd2a('0xd')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x26047d,_0xbd2a('0xc'),JSON[_0xbd2a('0xe')](_0x444cba));if(_0x444cba['error']){if(_0x444cba[_0xbd2a('0xf')][_0xbd2a('0x10')]===0x1f4){logger[_0xbd2a('0xf')](_0xbd2a('0x11'),_0x26047d,_0x444cba[_0xbd2a('0xf')]['message']);return _0x126033(_0x444cba[_0xbd2a('0xf')][_0xbd2a('0x12')]);}logger[_0xbd2a('0xf')](_0xbd2a('0x11'),_0x26047d,_0x444cba['error']['message']);return _0x5b83dc(_0x444cba['error'][_0xbd2a('0x12')]);}else{logger[_0xbd2a('0x13')](_0xbd2a('0x11'),_0x26047d,_0xbd2a('0xc'));_0x5b83dc(_0x444cba['result'][_0xbd2a('0x12')]);}})[_0xbd2a('0x14')](function(_0x3adfb3){logger[_0xbd2a('0xf')](_0xbd2a('0x11'),_0x26047d,_0x3adfb3);_0x126033(_0x3adfb3);});});}
\ No newline at end of file
+var _0x5fea=['ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ZohoField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2e7368,_0x5bced5){var _0x2f4efc=function(_0x4ff510){while(--_0x4ff510){_0x2e7368['push'](_0x2e7368['shift']());}};_0x2f4efc(++_0x5bced5);}(_0x5fea,0x1b0));var _0xa5fe=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x5fea[_0x4bb66f];return _0xf2772f;};'use strict';var _=require(_0xa5fe('0x0'));var util=require(_0xa5fe('0x1'));var moment=require('moment');var BPromise=require(_0xa5fe('0x2'));var rs=require(_0xa5fe('0x3'));var fs=require('fs');var Redis=require(_0xa5fe('0x4'));var db=require(_0xa5fe('0x5'))['db'];var utils=require(_0xa5fe('0x6'));var logger=require(_0xa5fe('0x7'))(_0xa5fe('0x8'));var config=require(_0xa5fe('0x9'));var jayson=require(_0xa5fe('0xa'));var client=jayson[_0xa5fe('0xb')][_0xa5fe('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4102cb,_0x1479fa,_0x5176f7){return new BPromise(function(_0x16790a,_0x47c892){return client[_0xa5fe('0xd')](_0x4102cb,_0x5176f7)[_0xa5fe('0xe')](function(_0x462190){logger['info'](_0xa5fe('0xf'),_0x1479fa,_0xa5fe('0x10'));logger[_0xa5fe('0x11')](_0xa5fe('0x12'),_0x1479fa,_0xa5fe('0x10'),JSON[_0xa5fe('0x13')](_0x462190));if(_0x462190[_0xa5fe('0x14')]){if(_0x462190[_0xa5fe('0x14')][_0xa5fe('0x15')]===0x1f4){logger[_0xa5fe('0x14')](_0xa5fe('0xf'),_0x1479fa,_0x462190['error']['message']);return _0x47c892(_0x462190[_0xa5fe('0x14')]['message']);}logger[_0xa5fe('0x14')](_0xa5fe('0xf'),_0x1479fa,_0x462190[_0xa5fe('0x14')][_0xa5fe('0x16')]);return _0x16790a(_0x462190[_0xa5fe('0x14')][_0xa5fe('0x16')]);}else{logger[_0xa5fe('0x17')](_0xa5fe('0xf'),_0x1479fa,_0xa5fe('0x10'));_0x16790a(_0x462190[_0xa5fe('0x18')]['message']);}})['catch'](function(_0x45e2f7){logger['error']('ZohoField,\x20%s,\x20%s',_0x1479fa,_0x45e2f7);_0x47c892(_0x45e2f7);});});}
\ No newline at end of file
index 6bc53d8..136dcf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80c3=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','multer'];(function(_0x11a142,_0x3e2fbb){var _0x5638c5=function(_0x2af0e7){while(--_0x2af0e7){_0x11a142['push'](_0x11a142['shift']());}};_0x5638c5(++_0x3e2fbb);}(_0x80c3,0x18f));var _0x380c=function(_0x421cf8,_0x23152c){_0x421cf8=_0x421cf8-0x0;var _0x145c48=_0x80c3[_0x421cf8];return _0x145c48;};'use strict';var multer=require(_0x380c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x380c('0x1'));var express=require('express');var router=express[_0x380c('0x2')]();var auth=require(_0x380c('0x3'));var interaction=require(_0x380c('0x4'));var config=require('../../config/environment');module['exports']=router;
\ No newline at end of file
+var _0xfc17=['../../components/auth/service','../../components/interaction/service','../../config/environment','exports','multer','util','path','connect-timeout','Router'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0xfc17,0x1b4));var _0x7fc1=function(_0x2bb6d9,_0x150b3d){_0x2bb6d9=_0x2bb6d9-0x0;var _0x3a91cd=_0xfc17[_0x2bb6d9];return _0x3a91cd;};'use strict';var multer=require(_0x7fc1('0x0'));var util=require(_0x7fc1('0x1'));var path=require(_0x7fc1('0x2'));var timeout=require(_0x7fc1('0x3'));var express=require('express');var router=express[_0x7fc1('0x4')]();var auth=require(_0x7fc1('0x5'));var interaction=require(_0x7fc1('0x6'));var config=require(_0x7fc1('0x7'));module[_0x7fc1('0x8')]=router;
\ No newline at end of file
index 2675f0a..8d22fe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ced=['STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN','state','sequelize','exports'];(function(_0x1667df,_0x266940){var _0x341abf=function(_0x123c3f){while(--_0x123c3f){_0x1667df['push'](_0x1667df['shift']());}};_0x341abf(++_0x266940);}(_0x4ced,0x1d6));var _0xd4ce=function(_0x3981b0,_0x497c90){_0x3981b0=_0x3981b0-0x0;var _0x5aa7e6=_0x4ced[_0x3981b0];return _0x5aa7e6;};'use strict';var Sequelize=require(_0xd4ce('0x0'));module[_0xd4ce('0x1')]={'name':{'type':Sequelize[_0xd4ce('0x2')],'allowNull':![],'unique':_0xd4ce('0x3')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xd4ce('0x3')},'main':{'type':Sequelize[_0xd4ce('0x2')],'defaultValue':_0xd4ce('0x4')},'filename':{'type':Sequelize[_0xd4ce('0x2')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0xd4ce('0x5')]},'active':{'type':Sequelize[_0xd4ce('0x6')],'defaultValue':![]},'author':{'type':Sequelize[_0xd4ce('0x2')]},'logo':{'type':Sequelize[_0xd4ce('0x2')]},'state':{'type':Sequelize[_0xd4ce('0x2')],'unique':_0xd4ce('0x7')},'description':{'type':Sequelize[_0xd4ce('0x2')]},'title':{'type':Sequelize[_0xd4ce('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0xeb34=['sequelize','STRING','unique_name_and_version','app.js','INTEGER','BOOLEAN'];(function(_0x3f9aa0,_0x478ec3){var _0x4a82c0=function(_0x279091){while(--_0x279091){_0x3f9aa0['push'](_0x3f9aa0['shift']());}};_0x4a82c0(++_0x478ec3);}(_0xeb34,0x138));var _0x4eb3=function(_0x2a7b50,_0x545d55){_0x2a7b50=_0x2a7b50-0x0;var _0x4224c9=_0xeb34[_0x2a7b50];return _0x4224c9;};'use strict';var Sequelize=require(_0x4eb3('0x0'));module['exports']={'name':{'type':Sequelize[_0x4eb3('0x1')],'allowNull':![],'unique':_0x4eb3('0x2')},'version':{'type':Sequelize[_0x4eb3('0x1')],'allowNull':![],'unique':_0x4eb3('0x2')},'main':{'type':Sequelize['STRING'],'defaultValue':_0x4eb3('0x3')},'filename':{'type':Sequelize[_0x4eb3('0x1')]},'path':{'type':Sequelize[_0x4eb3('0x1')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x4eb3('0x4')]},'active':{'type':Sequelize[_0x4eb3('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x4eb3('0x1')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x4eb3('0x1')],'unique':'state'},'description':{'type':Sequelize[_0x4eb3('0x1')]},'title':{'type':Sequelize[_0x4eb3('0x1')]},'remoteUri':{'type':Sequelize[_0x4eb3('0x1')]},'link':{'type':Sequelize[_0x4eb3('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index 399388a..b841c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dcc=['html-pdf','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','to-csv','ejs','lodash','crypto','jsforce','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','count','offset','limit','set','reject','save','update','then','destroy','sendStatus','error','name','send','Integration','rawAttributes','model','query','dateStart','dateEnd','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','add','day','merge','map','type','VIRTUAL','field','filter','includeAll','include','rows','params','options','catch','create','body','find'];(function(_0x55663e,_0x1bf3a8){var _0x1b7211=function(_0x4e05a9){while(--_0x4e05a9){_0x55663e['push'](_0x55663e['shift']());}};_0x1b7211(++_0x1bf3a8);}(_0x1dcc,0x1ea));var _0xc1dc=function(_0x5b87cb,_0xa5f06b){_0x5b87cb=_0x5b87cb-0x0;var _0x42a10c=_0x1dcc[_0x5b87cb];return _0x42a10c;};'use strict';var pdf=require(_0xc1dc('0x0'));var emlformat=require(_0xc1dc('0x1'));var rimraf=require(_0xc1dc('0x2'));var zipdir=require(_0xc1dc('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc1dc('0x4'));var moment=require('moment');var BPromise=require(_0xc1dc('0x5'));var Mustache=require(_0xc1dc('0x6'));var util=require(_0xc1dc('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xc1dc('0x8'));var ejs=require(_0xc1dc('0x9'));var fs=require('fs');var _=require(_0xc1dc('0xa'));var squel=require('squel');var crypto=require(_0xc1dc('0xb'));var jsforce=require(_0xc1dc('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xc1dc('0x8'));var querystring=require('querystring');var Papa=require(_0xc1dc('0xd'));var Redis=require('ioredis');var qs=require(_0xc1dc('0xe'));var logger=require(_0xc1dc('0xf'))(_0xc1dc('0x10'));var utils=require(_0xc1dc('0x11'));var config=require(_0xc1dc('0x12'));var db=require(_0xc1dc('0x13'))['db'];function respondWithStatusCode(_0x23a4f8,_0x39a95b){_0x39a95b=_0x39a95b||0xcc;return function(_0x20dcc8){if(_0x20dcc8){return _0x23a4f8['sendStatus'](_0x39a95b);}return _0x23a4f8[_0xc1dc('0x14')](_0x39a95b)[_0xc1dc('0x15')]();};}function respondWithResult(_0xb7e667,_0x58cc30){_0x58cc30=_0x58cc30||0xc8;return function(_0x73b54c){if(_0x73b54c){return _0xb7e667[_0xc1dc('0x14')](_0x58cc30)[_0xc1dc('0x16')](_0x73b54c);}};}function respondWithFilteredResult(_0xd51b1e,_0x145708){return function(_0x322868){if(_0x322868){var _0x188182=_0x322868[_0xc1dc('0x17')],_0x21aed1=_0x145708['offset'],_0x265929=_0x145708[_0xc1dc('0x18')]+_0x145708[_0xc1dc('0x19')],_0x37b23a;if(_0x265929>=_0x188182){_0x265929=_0x188182;_0x37b23a=0xc8;}else{_0x37b23a=0xce;}_0xd51b1e[_0xc1dc('0x14')](_0x37b23a);return _0xd51b1e[_0xc1dc('0x1a')]('Content-Range',_0x21aed1+'-'+_0x265929+'/'+_0x188182)[_0xc1dc('0x16')](_0x322868);}return null;};}function patchUpdates(_0xc01137){return function(_0x499a42){try{jsonpatch['apply'](_0x499a42,_0xc01137,!![]);}catch(_0x3f96d3){return BPromise[_0xc1dc('0x1b')](_0x3f96d3);}return _0x499a42[_0xc1dc('0x1c')]();};}function saveUpdates(_0x2c41bf,_0x1707dc){return function(_0x3570f0){if(_0x3570f0){return _0x3570f0[_0xc1dc('0x1d')](_0x2c41bf)[_0xc1dc('0x1e')](function(_0x5762e5){return _0x5762e5;});}return null;};}function removeEntity(_0x52bf2d,_0x4efe0d){return function(_0x477998){if(_0x477998){return _0x477998[_0xc1dc('0x1f')]()['then'](function(){_0x52bf2d[_0xc1dc('0x14')](0xcc)[_0xc1dc('0x15')]();});}};}function handleEntityNotFound(_0x3f6552,_0x34e72b){return function(_0x22b80d){if(!_0x22b80d){_0x3f6552[_0xc1dc('0x20')](0x194);}return _0x22b80d;};}function handleError(_0x353bf3,_0x18ba56){_0x18ba56=_0x18ba56||0x1f4;return function(_0x3efff1){logger[_0xc1dc('0x21')](_0x3efff1['stack']);if(_0x3efff1[_0xc1dc('0x22')]){delete _0x3efff1[_0xc1dc('0x22')];}_0x353bf3[_0xc1dc('0x14')](_0x18ba56)[_0xc1dc('0x23')](_0x3efff1);};}exports['index']=function(_0x296523,_0x109e88){var _0xfd3f88={},_0x7c0254={},_0x354e71={'count':0x0,'rows':[]};var _0x152a50=db[_0xc1dc('0x24')][_0xc1dc('0x25')];_0x7c0254[_0xc1dc('0x26')]=_['keys'](_0x152a50);var _0x2d5a57={'dateStart':_0x296523[_0xc1dc('0x27')][_0xc1dc('0x28')],'dateEnd':_0x296523[_0xc1dc('0x27')][_0xc1dc('0x29')]};delete _0x296523[_0xc1dc('0x27')][_0xc1dc('0x28')];delete _0x296523[_0xc1dc('0x27')][_0xc1dc('0x29')];_0x7c0254[_0xc1dc('0x27')]=_[_0xc1dc('0x2a')](_0x296523['query']);_0x7c0254[_0xc1dc('0x2b')]=_[_0xc1dc('0x2c')](_0x7c0254[_0xc1dc('0x26')],_0x7c0254[_0xc1dc('0x27')]);_0xfd3f88[_0xc1dc('0x2d')]=_[_0xc1dc('0x2c')](_0x7c0254[_0xc1dc('0x26')],qs[_0xc1dc('0x2e')](_0x296523[_0xc1dc('0x27')]['fields']));_0xfd3f88['attributes']=_0xfd3f88[_0xc1dc('0x2d')][_0xc1dc('0x2f')]?_0xfd3f88[_0xc1dc('0x2d')]:_0x7c0254[_0xc1dc('0x26')];if(!_0x296523[_0xc1dc('0x27')][_0xc1dc('0x30')]('nolimit')){_0xfd3f88[_0xc1dc('0x19')]=qs[_0xc1dc('0x19')](_0x296523['query'][_0xc1dc('0x19')]);_0xfd3f88[_0xc1dc('0x18')]=qs['offset'](_0x296523[_0xc1dc('0x27')][_0xc1dc('0x18')]);}_0xfd3f88[_0xc1dc('0x31')]=qs['sort'](_0x296523[_0xc1dc('0x27')][_0xc1dc('0x32')]);_0xfd3f88[_0xc1dc('0x33')]=qs[_0xc1dc('0x2b')](_[_0xc1dc('0x34')](_0x296523[_0xc1dc('0x27')],_0x7c0254[_0xc1dc('0x2b')]));if(_0x2d5a57[_0xc1dc('0x28')]){if(_0x2d5a57[_0xc1dc('0x29')]){_0x2d5a57['dateEnd']=moment(_0x2d5a57[_0xc1dc('0x29')])[_0xc1dc('0x35')](0x1,_0xc1dc('0x36'));}else{_0x2d5a57['dateEnd']=moment(_0x2d5a57[_0xc1dc('0x28')])[_0xc1dc('0x35')](0x1,_0xc1dc('0x36'));}_[_0xc1dc('0x37')](_0xfd3f88[_0xc1dc('0x33')],{'createdAt':{'$gte':_0x2d5a57[_0xc1dc('0x28')],'$lte':_0x2d5a57[_0xc1dc('0x29')]}});}if(_0x296523[_0xc1dc('0x27')]['filter']){_0xfd3f88[_0xc1dc('0x33')]=_[_0xc1dc('0x37')](_0xfd3f88[_0xc1dc('0x33')],{'$or':_[_0xc1dc('0x38')](_0x152a50,function(_0x1d8107){if(_0x1d8107[_0xc1dc('0x39')]['key']!==_0xc1dc('0x3a')){var _0x2476b6={};_0x2476b6[_0x1d8107[_0xc1dc('0x3b')]]={'$like':'%'+_0x296523[_0xc1dc('0x27')][_0xc1dc('0x3c')]+'%'};return _0x2476b6;}})});}_0xfd3f88=_['merge']({},_0xfd3f88,_0x296523['options']);var _0x16d288={'where':_0xfd3f88[_0xc1dc('0x33')]};return db[_0xc1dc('0x24')][_0xc1dc('0x17')](_0x16d288)[_0xc1dc('0x1e')](function(_0x2b4190){_0x354e71[_0xc1dc('0x17')]=_0x2b4190;if(_0x296523['query'][_0xc1dc('0x3d')]){_0xfd3f88[_0xc1dc('0x3e')]=[{'all':!![]}];}return db[_0xc1dc('0x24')]['findAll'](_0xfd3f88);})[_0xc1dc('0x1e')](function(_0x2f52f7){_0x354e71[_0xc1dc('0x3f')]=_0x2f52f7;return _0x354e71;})[_0xc1dc('0x1e')](respondWithFilteredResult(_0x109e88,_0xfd3f88))['catch'](handleError(_0x109e88,null));};exports['show']=function(_0x1d9ae1,_0xb0563){var _0x5aa50b={'raw':![],'where':{'id':_0x1d9ae1[_0xc1dc('0x40')]['id']}},_0x192604={};_0x192604[_0xc1dc('0x26')]=_[_0xc1dc('0x2a')](db[_0xc1dc('0x24')][_0xc1dc('0x25')]);_0x192604[_0xc1dc('0x27')]=_['keys'](_0x1d9ae1['query']);_0x192604[_0xc1dc('0x2b')]=_['intersection'](_0x192604[_0xc1dc('0x26')],_0x192604[_0xc1dc('0x27')]);_0x5aa50b[_0xc1dc('0x2d')]=_[_0xc1dc('0x2c')](_0x192604[_0xc1dc('0x26')],qs[_0xc1dc('0x2e')](_0x1d9ae1[_0xc1dc('0x27')][_0xc1dc('0x2e')]));_0x5aa50b['attributes']=_0x5aa50b[_0xc1dc('0x2d')][_0xc1dc('0x2f')]?_0x5aa50b[_0xc1dc('0x2d')]:_0x192604[_0xc1dc('0x26')];if(_0x1d9ae1[_0xc1dc('0x27')][_0xc1dc('0x3d')]){_0x5aa50b[_0xc1dc('0x3e')]=[{'all':!![]}];}_0x5aa50b=_[_0xc1dc('0x37')]({},_0x5aa50b,_0x1d9ae1[_0xc1dc('0x41')]);return db[_0xc1dc('0x24')]['find'](_0x5aa50b)['then'](handleEntityNotFound(_0xb0563,null))['then'](respondWithResult(_0xb0563,null))[_0xc1dc('0x42')](handleError(_0xb0563,null));};exports[_0xc1dc('0x43')]=function(_0x57b792,_0x129e23){return db[_0xc1dc('0x24')]['create'](_0x57b792[_0xc1dc('0x44')],{})['then'](respondWithResult(_0x129e23,0xc9))[_0xc1dc('0x42')](handleError(_0x129e23,null));};exports[_0xc1dc('0x1d')]=function(_0x639ed,_0x1d0308){if(_0x639ed[_0xc1dc('0x44')]['id']){delete _0x639ed[_0xc1dc('0x44')]['id'];}return db[_0xc1dc('0x24')][_0xc1dc('0x45')]({'where':{'id':_0x639ed['params']['id']}})[_0xc1dc('0x1e')](handleEntityNotFound(_0x1d0308,null))[_0xc1dc('0x1e')](saveUpdates(_0x639ed[_0xc1dc('0x44')],null))[_0xc1dc('0x1e')](respondWithResult(_0x1d0308,null))['catch'](handleError(_0x1d0308,null));};exports[_0xc1dc('0x1f')]=function(_0x216aca,_0x3e3e6c){return db[_0xc1dc('0x24')][_0xc1dc('0x45')]({'where':{'id':_0x216aca[_0xc1dc('0x40')]['id']}})[_0xc1dc('0x1e')](handleEntityNotFound(_0x3e3e6c,null))[_0xc1dc('0x1e')](removeEntity(_0x3e3e6c,null))['catch'](handleError(_0x3e3e6c,null));};
\ No newline at end of file
+var _0xf9d5=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','count','offset','Content-Range','apply','reject','update','then','error','stack','name','send','index','Integration','rawAttributes','keys','query','dateStart','dateEnd','intersection','model','fields','attributes','hasOwnProperty','limit','order','sort','where','filters','pick','day','add','filter','merge','type','key','field','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','destroy','eml-format','rimraf'];(function(_0x18e52b,_0x1fae35){var _0x3d3062=function(_0x133b14){while(--_0x133b14){_0x18e52b['push'](_0x18e52b['shift']());}};_0x3d3062(++_0x1fae35);}(_0xf9d5,0x122));var _0x5f9d=function(_0x1e0919,_0x350959){_0x1e0919=_0x1e0919-0x0;var _0x44dac5=_0xf9d5[_0x1e0919];return _0x44dac5;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x5f9d('0x0'));var rimraf=require(_0x5f9d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5f9d('0x2'));var rp=require(_0x5f9d('0x3'));var moment=require(_0x5f9d('0x4'));var BPromise=require(_0x5f9d('0x5'));var Mustache=require(_0x5f9d('0x6'));var util=require(_0x5f9d('0x7'));var path=require(_0x5f9d('0x8'));var sox=require('sox');var csv=require(_0x5f9d('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x5f9d('0xa'));var squel=require(_0x5f9d('0xb'));var crypto=require('crypto');var jsforce=require(_0x5f9d('0xc'));var deskjs=require(_0x5f9d('0xd'));var toCsv=require(_0x5f9d('0x9'));var querystring=require(_0x5f9d('0xe'));var Papa=require(_0x5f9d('0xf'));var Redis=require(_0x5f9d('0x10'));var qs=require('../../components/parsers/qs');var logger=require(_0x5f9d('0x11'))(_0x5f9d('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x5f9d('0x13'))['db'];function respondWithStatusCode(_0x261a17,_0x35993b){_0x35993b=_0x35993b||0xcc;return function(_0x4c3b1a){if(_0x4c3b1a){return _0x261a17[_0x5f9d('0x14')](_0x35993b);}return _0x261a17[_0x5f9d('0x15')](_0x35993b)[_0x5f9d('0x16')]();};}function respondWithResult(_0x23a39f,_0x550655){_0x550655=_0x550655||0xc8;return function(_0x5d42fd){if(_0x5d42fd){return _0x23a39f[_0x5f9d('0x15')](_0x550655)[_0x5f9d('0x17')](_0x5d42fd);}};}function respondWithFilteredResult(_0x5aacdc,_0x8e2381){return function(_0x3ae401){if(_0x3ae401){var _0x57cb1a=_0x3ae401[_0x5f9d('0x18')],_0x4fd1cb=_0x8e2381[_0x5f9d('0x19')],_0x2f0154=_0x8e2381[_0x5f9d('0x19')]+_0x8e2381['limit'],_0x334cea;if(_0x2f0154>=_0x57cb1a){_0x2f0154=_0x57cb1a;_0x334cea=0xc8;}else{_0x334cea=0xce;}_0x5aacdc['status'](_0x334cea);return _0x5aacdc['set'](_0x5f9d('0x1a'),_0x4fd1cb+'-'+_0x2f0154+'/'+_0x57cb1a)['json'](_0x3ae401);}return null;};}function patchUpdates(_0x432f1a){return function(_0x48448e){try{jsonpatch[_0x5f9d('0x1b')](_0x48448e,_0x432f1a,!![]);}catch(_0x453285){return BPromise[_0x5f9d('0x1c')](_0x453285);}return _0x48448e['save']();};}function saveUpdates(_0x42e2f9,_0x16de94){return function(_0x3a2999){if(_0x3a2999){return _0x3a2999[_0x5f9d('0x1d')](_0x42e2f9)[_0x5f9d('0x1e')](function(_0xa62826){return _0xa62826;});}return null;};}function removeEntity(_0x32adab,_0x2563d5){return function(_0x3cd7a4){if(_0x3cd7a4){return _0x3cd7a4['destroy']()['then'](function(){_0x32adab['status'](0xcc)[_0x5f9d('0x16')]();});}};}function handleEntityNotFound(_0x4bd98f,_0xcb239b){return function(_0x5a3472){if(!_0x5a3472){_0x4bd98f[_0x5f9d('0x14')](0x194);}return _0x5a3472;};}function handleError(_0x564886,_0x4875c5){_0x4875c5=_0x4875c5||0x1f4;return function(_0x5086da){logger[_0x5f9d('0x1f')](_0x5086da[_0x5f9d('0x20')]);if(_0x5086da[_0x5f9d('0x21')]){delete _0x5086da[_0x5f9d('0x21')];}_0x564886['status'](_0x4875c5)[_0x5f9d('0x22')](_0x5086da);};}exports[_0x5f9d('0x23')]=function(_0x190402,_0x74f212){var _0x2d097f={},_0x14aaca={},_0x2d66cc={'count':0x0,'rows':[]};var _0x21cc63=db[_0x5f9d('0x24')][_0x5f9d('0x25')];_0x14aaca['model']=_[_0x5f9d('0x26')](_0x21cc63);var _0x1b9054={'dateStart':_0x190402[_0x5f9d('0x27')][_0x5f9d('0x28')],'dateEnd':_0x190402[_0x5f9d('0x27')][_0x5f9d('0x29')]};delete _0x190402[_0x5f9d('0x27')][_0x5f9d('0x28')];delete _0x190402[_0x5f9d('0x27')]['dateEnd'];_0x14aaca['query']=_['keys'](_0x190402[_0x5f9d('0x27')]);_0x14aaca['filters']=_[_0x5f9d('0x2a')](_0x14aaca['model'],_0x14aaca[_0x5f9d('0x27')]);_0x2d097f['attributes']=_[_0x5f9d('0x2a')](_0x14aaca[_0x5f9d('0x2b')],qs[_0x5f9d('0x2c')](_0x190402[_0x5f9d('0x27')][_0x5f9d('0x2c')]));_0x2d097f['attributes']=_0x2d097f[_0x5f9d('0x2d')]['length']?_0x2d097f[_0x5f9d('0x2d')]:_0x14aaca['model'];if(!_0x190402[_0x5f9d('0x27')][_0x5f9d('0x2e')]('nolimit')){_0x2d097f[_0x5f9d('0x2f')]=qs[_0x5f9d('0x2f')](_0x190402[_0x5f9d('0x27')]['limit']);_0x2d097f[_0x5f9d('0x19')]=qs[_0x5f9d('0x19')](_0x190402[_0x5f9d('0x27')][_0x5f9d('0x19')]);}_0x2d097f[_0x5f9d('0x30')]=qs['sort'](_0x190402[_0x5f9d('0x27')][_0x5f9d('0x31')]);_0x2d097f[_0x5f9d('0x32')]=qs[_0x5f9d('0x33')](_[_0x5f9d('0x34')](_0x190402[_0x5f9d('0x27')],_0x14aaca['filters']));if(_0x1b9054[_0x5f9d('0x28')]){if(_0x1b9054[_0x5f9d('0x29')]){_0x1b9054[_0x5f9d('0x29')]=moment(_0x1b9054['dateEnd'])['add'](0x1,_0x5f9d('0x35'));}else{_0x1b9054[_0x5f9d('0x29')]=moment(_0x1b9054[_0x5f9d('0x28')])[_0x5f9d('0x36')](0x1,_0x5f9d('0x35'));}_['merge'](_0x2d097f['where'],{'createdAt':{'$gte':_0x1b9054[_0x5f9d('0x28')],'$lte':_0x1b9054[_0x5f9d('0x29')]}});}if(_0x190402['query'][_0x5f9d('0x37')]){_0x2d097f['where']=_[_0x5f9d('0x38')](_0x2d097f[_0x5f9d('0x32')],{'$or':_['map'](_0x21cc63,function(_0x6fb378){if(_0x6fb378[_0x5f9d('0x39')][_0x5f9d('0x3a')]!=='VIRTUAL'){var _0x2e5361={};_0x2e5361[_0x6fb378[_0x5f9d('0x3b')]]={'$like':'%'+_0x190402[_0x5f9d('0x27')][_0x5f9d('0x37')]+'%'};return _0x2e5361;}})});}_0x2d097f=_[_0x5f9d('0x38')]({},_0x2d097f,_0x190402[_0x5f9d('0x3c')]);var _0x114a69={'where':_0x2d097f[_0x5f9d('0x32')]};return db[_0x5f9d('0x24')][_0x5f9d('0x18')](_0x114a69)[_0x5f9d('0x1e')](function(_0x227ef6){_0x2d66cc[_0x5f9d('0x18')]=_0x227ef6;if(_0x190402[_0x5f9d('0x27')][_0x5f9d('0x3d')]){_0x2d097f[_0x5f9d('0x3e')]=[{'all':!![]}];}return db[_0x5f9d('0x24')][_0x5f9d('0x3f')](_0x2d097f);})[_0x5f9d('0x1e')](function(_0x21b5d1){_0x2d66cc[_0x5f9d('0x40')]=_0x21b5d1;return _0x2d66cc;})[_0x5f9d('0x1e')](respondWithFilteredResult(_0x74f212,_0x2d097f))[_0x5f9d('0x41')](handleError(_0x74f212,null));};exports[_0x5f9d('0x42')]=function(_0x13d343,_0x9afb54){var _0x3accf9={'raw':![],'where':{'id':_0x13d343[_0x5f9d('0x43')]['id']}},_0x1fd561={};_0x1fd561[_0x5f9d('0x2b')]=_['keys'](db[_0x5f9d('0x24')]['rawAttributes']);_0x1fd561[_0x5f9d('0x27')]=_[_0x5f9d('0x26')](_0x13d343[_0x5f9d('0x27')]);_0x1fd561[_0x5f9d('0x33')]=_[_0x5f9d('0x2a')](_0x1fd561[_0x5f9d('0x2b')],_0x1fd561[_0x5f9d('0x27')]);_0x3accf9['attributes']=_[_0x5f9d('0x2a')](_0x1fd561[_0x5f9d('0x2b')],qs[_0x5f9d('0x2c')](_0x13d343['query'][_0x5f9d('0x2c')]));_0x3accf9['attributes']=_0x3accf9[_0x5f9d('0x2d')][_0x5f9d('0x44')]?_0x3accf9[_0x5f9d('0x2d')]:_0x1fd561['model'];if(_0x13d343['query'][_0x5f9d('0x3d')]){_0x3accf9[_0x5f9d('0x3e')]=[{'all':!![]}];}_0x3accf9=_['merge']({},_0x3accf9,_0x13d343[_0x5f9d('0x3c')]);return db['Integration'][_0x5f9d('0x45')](_0x3accf9)[_0x5f9d('0x1e')](handleEntityNotFound(_0x9afb54,null))[_0x5f9d('0x1e')](respondWithResult(_0x9afb54,null))[_0x5f9d('0x41')](handleError(_0x9afb54,null));};exports[_0x5f9d('0x46')]=function(_0x16a9fa,_0x3aa63c){return db[_0x5f9d('0x24')][_0x5f9d('0x46')](_0x16a9fa[_0x5f9d('0x47')],{})['then'](respondWithResult(_0x3aa63c,0xc9))[_0x5f9d('0x41')](handleError(_0x3aa63c,null));};exports[_0x5f9d('0x1d')]=function(_0x4e6d65,_0x29bf01){if(_0x4e6d65[_0x5f9d('0x47')]['id']){delete _0x4e6d65[_0x5f9d('0x47')]['id'];}return db[_0x5f9d('0x24')][_0x5f9d('0x45')]({'where':{'id':_0x4e6d65[_0x5f9d('0x43')]['id']}})[_0x5f9d('0x1e')](handleEntityNotFound(_0x29bf01,null))[_0x5f9d('0x1e')](saveUpdates(_0x4e6d65['body'],null))['then'](respondWithResult(_0x29bf01,null))[_0x5f9d('0x41')](handleError(_0x29bf01,null));};exports[_0x5f9d('0x48')]=function(_0x2c2de6,_0x101616){return db[_0x5f9d('0x24')][_0x5f9d('0x45')]({'where':{'id':_0x2c2de6[_0x5f9d('0x43')]['id']}})[_0x5f9d('0x1e')](handleEntityNotFound(_0x101616,null))[_0x5f9d('0x1e')](removeEntity(_0x101616,null))['catch'](handleError(_0x101616,null));};
\ No newline at end of file
index 2cd78cc..8c2eb26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['../../config/logger','api','bluebird','request-promise','./integration.attributes','exports','Integration','lodash','util'];(function(_0x25cdbf,_0x4a6277){var _0x3f41e9=function(_0x2bccda){while(--_0x2bccda){_0x25cdbf['push'](_0x25cdbf['shift']());}};_0x3f41e9(++_0x4a6277);}(_0xd943,0x15d));var _0x3d94=function(_0x31ec60,_0x500684){_0x31ec60=_0x31ec60-0x0;var _0x326990=_0xd943[_0x31ec60];return _0x326990;};'use strict';var _=require(_0x3d94('0x0'));var util=require(_0x3d94('0x1'));var logger=require(_0x3d94('0x2'))(_0x3d94('0x3'));var moment=require('moment');var BPromise=require(_0x3d94('0x4'));var rp=require(_0x3d94('0x5'));var attributes=require(_0x3d94('0x6'));module[_0x3d94('0x7')]=function(_0xaf8962,_0x5751f6){return _0xaf8962['define'](_0x3d94('0x8'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2542=['integrations','lodash','util','../../config/logger','api','bluebird','./integration.attributes','exports','define'];(function(_0x3cc8b0,_0x5dc0c8){var _0x427886=function(_0x18fe1b){while(--_0x18fe1b){_0x3cc8b0['push'](_0x3cc8b0['shift']());}};_0x427886(++_0x5dc0c8);}(_0x2542,0x169));var _0x2254=function(_0x3ea2c7,_0x180049){_0x3ea2c7=_0x3ea2c7-0x0;var _0xf72b5d=_0x2542[_0x3ea2c7];return _0xf72b5d;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var logger=require(_0x2254('0x2'))(_0x2254('0x3'));var moment=require('moment');var BPromise=require(_0x2254('0x4'));var rp=require('request-promise');var attributes=require(_0x2254('0x5'));module[_0x2254('0x6')]=function(_0x27f5c9,_0x456612){return _0x27f5c9[_0x2254('0x7')]('Integration',attributes,{'tableName':_0x2254('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 547cf08..f4dd454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db9=['../../config/logger','rpc','http','request','then','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','Integration,\x20%s,\x20%s','info','catch','lodash','util','moment','bluebird','ioredis','../../config/utils'];(function(_0x2d1be7,_0x3df12e){var _0x4abad8=function(_0x547337){while(--_0x547337){_0x2d1be7['push'](_0x2d1be7['shift']());}};_0x4abad8(++_0x3df12e);}(_0x0db9,0xa2));var _0x90db=function(_0x547add,_0x387042){_0x547add=_0x547add-0x0;var _0x2ed1f3=_0x0db9[_0x547add];return _0x2ed1f3;};'use strict';var _=require(_0x90db('0x0'));var util=require(_0x90db('0x1'));var moment=require(_0x90db('0x2'));var BPromise=require(_0x90db('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x90db('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x90db('0x5'));var logger=require(_0x90db('0x6'))(_0x90db('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x90db('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2caca1,_0x179aed,_0x4dd923){return new BPromise(function(_0x1765ae,_0x378881){return client[_0x90db('0x9')](_0x2caca1,_0x4dd923)[_0x90db('0xa')](function(_0x49a6a3){logger['info']('Integration,\x20%s,\x20%s',_0x179aed,'request\x20sent');logger[_0x90db('0xb')](_0x90db('0xc'),_0x179aed,_0x90db('0xd'),JSON[_0x90db('0xe')](_0x49a6a3));if(_0x49a6a3[_0x90db('0xf')]){if(_0x49a6a3['error'][_0x90db('0x10')]===0x1f4){logger[_0x90db('0xf')]('Integration,\x20%s,\x20%s',_0x179aed,_0x49a6a3[_0x90db('0xf')][_0x90db('0x11')]);return _0x378881(_0x49a6a3[_0x90db('0xf')]['message']);}logger[_0x90db('0xf')](_0x90db('0x12'),_0x179aed,_0x49a6a3[_0x90db('0xf')][_0x90db('0x11')]);return _0x1765ae(_0x49a6a3['error'][_0x90db('0x11')]);}else{logger[_0x90db('0x13')]('Integration,\x20%s,\x20%s',_0x179aed,_0x90db('0xd'));_0x1765ae(_0x49a6a3['result'][_0x90db('0x11')]);}})[_0x90db('0x14')](function(_0x5f588e){logger['error'](_0x90db('0x12'),_0x179aed,_0x5f588e);_0x378881(_0x5f588e);});});}
\ No newline at end of file
+var _0xd9e9=['rpc','jayson/promise','client','http','request','then','info','Integration,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x26658e,_0x1bb1a9){var _0x572802=function(_0x168565){while(--_0x168565){_0x26658e['push'](_0x26658e['shift']());}};_0x572802(++_0x1bb1a9);}(_0xd9e9,0x1b1));var _0x9d9e=function(_0x51d633,_0x1af977){_0x51d633=_0x51d633-0x0;var _0x3e75b2=_0xd9e9[_0x51d633];return _0x3e75b2;};'use strict';var _=require('lodash');var util=require(_0x9d9e('0x0'));var moment=require('moment');var BPromise=require(_0x9d9e('0x1'));var rs=require(_0x9d9e('0x2'));var fs=require('fs');var Redis=require(_0x9d9e('0x3'));var db=require(_0x9d9e('0x4'))['db'];var utils=require(_0x9d9e('0x5'));var logger=require(_0x9d9e('0x6'))(_0x9d9e('0x7'));var config=require('../../config/environment');var jayson=require(_0x9d9e('0x8'));var client=jayson[_0x9d9e('0x9')][_0x9d9e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x215a49,_0x24a1bd,_0x3207aa){return new BPromise(function(_0x23bd7a,_0x293742){return client[_0x9d9e('0xb')](_0x215a49,_0x3207aa)[_0x9d9e('0xc')](function(_0x3ae6cc){logger[_0x9d9e('0xd')](_0x9d9e('0xe'),_0x24a1bd,'request\x20sent');logger['debug']('Integration,\x20%s,\x20%s,\x20%s',_0x24a1bd,'request\x20sent',JSON[_0x9d9e('0xf')](_0x3ae6cc));if(_0x3ae6cc[_0x9d9e('0x10')]){if(_0x3ae6cc[_0x9d9e('0x10')][_0x9d9e('0x11')]===0x1f4){logger[_0x9d9e('0x10')](_0x9d9e('0xe'),_0x24a1bd,_0x3ae6cc[_0x9d9e('0x10')][_0x9d9e('0x12')]);return _0x293742(_0x3ae6cc[_0x9d9e('0x10')][_0x9d9e('0x12')]);}logger[_0x9d9e('0x10')](_0x9d9e('0xe'),_0x24a1bd,_0x3ae6cc[_0x9d9e('0x10')][_0x9d9e('0x12')]);return _0x23bd7a(_0x3ae6cc['error'][_0x9d9e('0x12')]);}else{logger['info'](_0x9d9e('0xe'),_0x24a1bd,_0x9d9e('0x13'));_0x23bd7a(_0x3ae6cc[_0x9d9e('0x14')][_0x9d9e('0x12')]);}})[_0x9d9e('0x15')](function(_0x857586){logger['error']('Integration,\x20%s,\x20%s',_0x24a1bd,_0x857586);_0x293742(_0x857586);});});}
\ No newline at end of file
index 0fc9217..7a028ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5752=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy','exports','multer'];(function(_0x4a7b2e,_0x10b286){var _0x33f733=function(_0x4ce110){while(--_0x4ce110){_0x4a7b2e['push'](_0x4a7b2e['shift']());}};_0x33f733(++_0x10b286);}(_0x5752,0x99));var _0x2575=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0x5752[_0x3d42d8];return _0x27fc41;};'use strict';var multer=require(_0x2575('0x0'));var util=require(_0x2575('0x1'));var path=require(_0x2575('0x2'));var timeout=require(_0x2575('0x3'));var express=require(_0x2575('0x4'));var router=express[_0x2575('0x5')]();var auth=require(_0x2575('0x6'));var interaction=require(_0x2575('0x7'));var config=require(_0x2575('0x8'));var controller=require('./integrationReport.controller');router[_0x2575('0x9')]('/',auth[_0x2575('0xa')](),controller[_0x2575('0xb')]);router[_0x2575('0x9')](_0x2575('0xc'),auth[_0x2575('0xa')](),controller[_0x2575('0xd')]);router[_0x2575('0x9')](_0x2575('0xe'),auth[_0x2575('0xa')](),controller[_0x2575('0xf')]);router[_0x2575('0x10')]('/',auth[_0x2575('0xa')](),controller['create']);router[_0x2575('0x11')](_0x2575('0xe'),auth[_0x2575('0xa')](),controller[_0x2575('0x12')]);router[_0x2575('0x13')](_0x2575('0xe'),auth[_0x2575('0xa')](),controller[_0x2575('0x14')]);module[_0x2575('0x15')]=router;
\ No newline at end of file
+var _0x82b0=['describe','/:id','show','post','create','put','update','delete','destroy','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','isAuthenticated','index'];(function(_0x369289,_0xb779d8){var _0x1c8ba4=function(_0x28cc27){while(--_0x28cc27){_0x369289['push'](_0x369289['shift']());}};_0x1c8ba4(++_0xb779d8);}(_0x82b0,0x81));var _0x082b=function(_0x160cd5,_0x19c58e){_0x160cd5=_0x160cd5-0x0;var _0x366763=_0x82b0[_0x160cd5];return _0x366763;};'use strict';var multer=require(_0x082b('0x0'));var util=require(_0x082b('0x1'));var path=require(_0x082b('0x2'));var timeout=require('connect-timeout');var express=require(_0x082b('0x3'));var router=express[_0x082b('0x4')]();var auth=require(_0x082b('0x5'));var interaction=require(_0x082b('0x6'));var config=require('../../config/environment');var controller=require(_0x082b('0x7'));router[_0x082b('0x8')]('/',auth[_0x082b('0x9')](),controller[_0x082b('0xa')]);router[_0x082b('0x8')]('/describe',auth[_0x082b('0x9')](),controller[_0x082b('0xb')]);router[_0x082b('0x8')](_0x082b('0xc'),auth[_0x082b('0x9')](),controller[_0x082b('0xd')]);router[_0x082b('0xe')]('/',auth[_0x082b('0x9')](),controller[_0x082b('0xf')]);router[_0x082b('0x10')](_0x082b('0xc'),auth[_0x082b('0x9')](),controller[_0x082b('0x11')]);router[_0x082b('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x082b('0x13')]);module['exports']=router;
\ No newline at end of file
index a891ff9..02f860b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6520=['ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING','DATE','INTEGER','BOOLEAN','TEXT'];(function(_0x2c7615,_0x242eeb){var _0x582a6d=function(_0xa54ee4){while(--_0xa54ee4){_0x2c7615['push'](_0x2c7615['shift']());}};_0x582a6d(++_0x242eeb);}(_0x6520,0x101));var _0x0652=function(_0x4af411,_0x10de52){_0x4af411=_0x4af411-0x0;var _0x3abe9b=_0x6520[_0x4af411];return _0x3abe9b;};'use strict';var Sequelize=require(_0x0652('0x0'));module[_0x0652('0x1')]={'integration':{'type':Sequelize[_0x0652('0x2')]},'eventChannel':{'type':Sequelize[_0x0652('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x0652('0x2')]},'calleridname':{'type':Sequelize[_0x0652('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x0652('0x3')]},'agentconnectAt':{'type':Sequelize[_0x0652('0x3')]},'holdtime':{'type':Sequelize[_0x0652('0x4')]},'agentcomplete':{'type':Sequelize[_0x0652('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x0652('0x3')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x0652('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x0652('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x0652('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x0652('0x3')]},'lastevent':{'type':Sequelize[_0x0652('0x2')]},'channel':{'type':Sequelize[_0x0652('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x0652('0x2')]},'connectedlinenum':{'type':Sequelize[_0x0652('0x2')]},'connectedlinename':{'type':Sequelize[_0x0652('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x0652('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x0652('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x0652('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x0652('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x0652('0x2')]},'destexten':{'type':Sequelize[_0x0652('0x2')]},'destpriority':{'type':Sequelize[_0x0652('0x2')]},'destuniqueid':{'type':Sequelize[_0x0652('0x2')]},'messageId':{'type':Sequelize[_0x0652('0x2')]},'inReplyTo':{'type':Sequelize[_0x0652('0x2')]},'subject':{'type':Sequelize[_0x0652('0x2')]},'from':{'type':Sequelize[_0x0652('0x2')]},'to':{'type':Sequelize[_0x0652('0x2')]},'cc':{'type':Sequelize[_0x0652('0x2')]},'attachment':{'type':Sequelize[_0x0652('0x6')]},'html':{'type':Sequelize[_0x0652('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0x0652('0x7')](_0x0652('0x8'),_0x0652('0x9'),_0x0652('0xa'),_0x0652('0xb'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize[_0x0652('0x2')]},'appdata':{'type':Sequelize[_0x0652('0x2')]},'projectId':{'type':Sequelize[_0x0652('0x4')]}};
\ No newline at end of file
+var _0x0e44=['FAILED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','SENDING'];(function(_0x4e0a03,_0x5eb6b0){var _0x2478fc=function(_0x59afcc){while(--_0x59afcc){_0x4e0a03['push'](_0x4e0a03['shift']());}};_0x2478fc(++_0x5eb6b0);}(_0x0e44,0x1f0));var _0x40e4=function(_0x1bbe99,_0x401abc){_0x1bbe99=_0x1bbe99-0x0;var _0x3939df=_0x0e44[_0x1bbe99];return _0x3939df;};'use strict';var Sequelize=require(_0x40e4('0x0'));module[_0x40e4('0x1')]={'integration':{'type':Sequelize[_0x40e4('0x2')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x40e4('0x2')]},'integrationId':{'type':Sequelize[_0x40e4('0x3')]},'contacts':{'type':Sequelize[_0x40e4('0x2')]},'uniqueid':{'type':Sequelize[_0x40e4('0x2')]},'calleridnum':{'type':Sequelize[_0x40e4('0x2')]},'calleridname':{'type':Sequelize[_0x40e4('0x2')]},'queue':{'type':Sequelize[_0x40e4('0x2')]},'interface':{'type':Sequelize[_0x40e4('0x2')]},'membername':{'type':Sequelize[_0x40e4('0x2')]},'agentcalledAt':{'type':Sequelize[_0x40e4('0x4')]},'agentconnectAt':{'type':Sequelize[_0x40e4('0x4')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x40e4('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x40e4('0x4')]},'talktime':{'type':Sequelize[_0x40e4('0x3')]},'agentacw':{'type':Sequelize[_0x40e4('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x40e4('0x3')]},'reason':{'type':Sequelize[_0x40e4('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x40e4('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x40e4('0x4')]},'agentdump':{'type':Sequelize[_0x40e4('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x40e4('0x2')]},'channelstate':{'type':Sequelize[_0x40e4('0x3')]},'channelstatedesc':{'type':Sequelize[_0x40e4('0x2')]},'connectedlinenum':{'type':Sequelize[_0x40e4('0x2')]},'connectedlinename':{'type':Sequelize[_0x40e4('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x40e4('0x2')]},'exten':{'type':Sequelize[_0x40e4('0x2')]},'priority':{'type':Sequelize[_0x40e4('0x2')]},'destchannel':{'type':Sequelize[_0x40e4('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x40e4('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x40e4('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x40e4('0x2')]},'destlanguage':{'type':Sequelize[_0x40e4('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x40e4('0x2')]},'destexten':{'type':Sequelize[_0x40e4('0x2')]},'destpriority':{'type':Sequelize[_0x40e4('0x2')]},'destuniqueid':{'type':Sequelize[_0x40e4('0x2')]},'messageId':{'type':Sequelize[_0x40e4('0x2')]},'inReplyTo':{'type':Sequelize[_0x40e4('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x40e4('0x2')]},'cc':{'type':Sequelize[_0x40e4('0x2')]},'attachment':{'type':Sequelize[_0x40e4('0x6')]},'html':{'type':Sequelize[_0x40e4('0x6')]},'text':{'type':Sequelize[_0x40e4('0x6')]},'status':{'type':Sequelize['ENUM']('SENT',_0x40e4('0x7'),'RECEIVED',_0x40e4('0x8'))},'url':{'type':Sequelize[_0x40e4('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0x40e4('0x2')]},'projectId':{'type':Sequelize[_0x40e4('0x3')]}};
\ No newline at end of file
index a924900..a4cb5d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c2a=['Content-Range','json','apply','reject','save','update','destroy','then','error','send','index','IntegrationReport','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','pick','add','day','merge','where','filter','map','type','field','options','includeAll','findAll','rows','catch','show','params','find','create','body','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','squel','jsforce','desk.js','papaparse','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','count','offset','limit','status','set'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7c2a,0x190));var _0xa7c2=function(_0x460ee8,_0x28cd64){_0x460ee8=_0x460ee8-0x0;var _0x552f2b=_0x7c2a[_0x460ee8];return _0x552f2b;};'use strict';var pdf=require(_0xa7c2('0x0'));var emlformat=require(_0xa7c2('0x1'));var rimraf=require(_0xa7c2('0x2'));var zipdir=require(_0xa7c2('0x3'));var jsonpatch=require(_0xa7c2('0x4'));var rp=require('request-promise');var moment=require(_0xa7c2('0x5'));var BPromise=require(_0xa7c2('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa7c2('0x7'));var sox=require(_0xa7c2('0x8'));var csv=require(_0xa7c2('0x9'));var ejs=require(_0xa7c2('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0xa7c2('0xb'));var crypto=require('crypto');var jsforce=require(_0xa7c2('0xc'));var deskjs=require(_0xa7c2('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa7c2('0xe'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0xa7c2('0xf'))('api');var utils=require(_0xa7c2('0x10'));var config=require(_0xa7c2('0x11'));var db=require(_0xa7c2('0x12'))['db'];function respondWithStatusCode(_0x459561,_0x4d0a62){_0x4d0a62=_0x4d0a62||0xcc;return function(_0x4ca166){if(_0x4ca166){return _0x459561[_0xa7c2('0x13')](_0x4d0a62);}return _0x459561['status'](_0x4d0a62)[_0xa7c2('0x14')]();};}function respondWithResult(_0x59473c,_0xbcfb31){_0xbcfb31=_0xbcfb31||0xc8;return function(_0x43643f){if(_0x43643f){return _0x59473c['status'](_0xbcfb31)['json'](_0x43643f);}};}function respondWithFilteredResult(_0x3e1a5e,_0x4162cc){return function(_0x328d19){if(_0x328d19){var _0x5de6b8=_0x328d19[_0xa7c2('0x15')],_0x184ee2=_0x4162cc[_0xa7c2('0x16')],_0x3f7510=_0x4162cc[_0xa7c2('0x16')]+_0x4162cc[_0xa7c2('0x17')],_0x1dfe58;if(_0x3f7510>=_0x5de6b8){_0x3f7510=_0x5de6b8;_0x1dfe58=0xc8;}else{_0x1dfe58=0xce;}_0x3e1a5e[_0xa7c2('0x18')](_0x1dfe58);return _0x3e1a5e[_0xa7c2('0x19')](_0xa7c2('0x1a'),_0x184ee2+'-'+_0x3f7510+'/'+_0x5de6b8)[_0xa7c2('0x1b')](_0x328d19);}return null;};}function patchUpdates(_0x328ef3){return function(_0x2e0b20){try{jsonpatch[_0xa7c2('0x1c')](_0x2e0b20,_0x328ef3,!![]);}catch(_0x3b1dc6){return BPromise[_0xa7c2('0x1d')](_0x3b1dc6);}return _0x2e0b20[_0xa7c2('0x1e')]();};}function saveUpdates(_0x235cf0,_0x177fec){return function(_0x546e99){if(_0x546e99){return _0x546e99[_0xa7c2('0x1f')](_0x235cf0)['then'](function(_0x495f8f){return _0x495f8f;});}return null;};}function removeEntity(_0x3cc8cb,_0x435d86){return function(_0x2e7b3a){if(_0x2e7b3a){return _0x2e7b3a[_0xa7c2('0x20')]()[_0xa7c2('0x21')](function(){_0x3cc8cb[_0xa7c2('0x18')](0xcc)[_0xa7c2('0x14')]();});}};}function handleEntityNotFound(_0x50cea6,_0x1fa768){return function(_0x236d22){if(!_0x236d22){_0x50cea6[_0xa7c2('0x13')](0x194);}return _0x236d22;};}function handleError(_0x5e424c,_0x19361a){_0x19361a=_0x19361a||0x1f4;return function(_0x56eeb2){logger[_0xa7c2('0x22')](_0x56eeb2['stack']);if(_0x56eeb2['name']){delete _0x56eeb2['name'];}_0x5e424c[_0xa7c2('0x18')](_0x19361a)[_0xa7c2('0x23')](_0x56eeb2);};}exports[_0xa7c2('0x24')]=function(_0x1e5406,_0x533849){var _0x37ffcb={},_0x3b6a21={},_0x2179e9={'count':0x0,'rows':[]};var _0x78fc60=db[_0xa7c2('0x25')][_0xa7c2('0x26')];_0x3b6a21[_0xa7c2('0x27')]=_[_0xa7c2('0x28')](_0x78fc60);var _0x2e77e8={'dateStart':_0x1e5406[_0xa7c2('0x29')][_0xa7c2('0x2a')],'dateEnd':_0x1e5406[_0xa7c2('0x29')][_0xa7c2('0x2b')]};delete _0x1e5406['query'][_0xa7c2('0x2a')];delete _0x1e5406[_0xa7c2('0x29')][_0xa7c2('0x2b')];_0x3b6a21[_0xa7c2('0x29')]=_[_0xa7c2('0x28')](_0x1e5406['query']);_0x3b6a21[_0xa7c2('0x2c')]=_[_0xa7c2('0x2d')](_0x3b6a21[_0xa7c2('0x27')],_0x3b6a21[_0xa7c2('0x29')]);_0x37ffcb[_0xa7c2('0x2e')]=_['intersection'](_0x3b6a21[_0xa7c2('0x27')],qs['fields'](_0x1e5406[_0xa7c2('0x29')]['fields']));_0x37ffcb['attributes']=_0x37ffcb[_0xa7c2('0x2e')][_0xa7c2('0x2f')]?_0x37ffcb[_0xa7c2('0x2e')]:_0x3b6a21[_0xa7c2('0x27')];if(!_0x1e5406['query'][_0xa7c2('0x30')](_0xa7c2('0x31'))){_0x37ffcb['limit']=qs[_0xa7c2('0x17')](_0x1e5406[_0xa7c2('0x29')][_0xa7c2('0x17')]);_0x37ffcb[_0xa7c2('0x16')]=qs[_0xa7c2('0x16')](_0x1e5406[_0xa7c2('0x29')][_0xa7c2('0x16')]);}_0x37ffcb[_0xa7c2('0x32')]=qs['sort'](_0x1e5406[_0xa7c2('0x29')]['sort']);_0x37ffcb['where']=qs[_0xa7c2('0x2c')](_[_0xa7c2('0x33')](_0x1e5406['query'],_0x3b6a21['filters']));if(_0x2e77e8[_0xa7c2('0x2a')]){if(_0x2e77e8[_0xa7c2('0x2b')]){_0x2e77e8[_0xa7c2('0x2b')]=moment(_0x2e77e8[_0xa7c2('0x2b')])[_0xa7c2('0x34')](0x1,_0xa7c2('0x35'));}else{_0x2e77e8['dateEnd']=moment(_0x2e77e8[_0xa7c2('0x2a')])[_0xa7c2('0x34')](0x1,_0xa7c2('0x35'));}_[_0xa7c2('0x36')](_0x37ffcb[_0xa7c2('0x37')],{'createdAt':{'$gte':_0x2e77e8[_0xa7c2('0x2a')],'$lte':_0x2e77e8[_0xa7c2('0x2b')]}});}if(_0x1e5406[_0xa7c2('0x29')][_0xa7c2('0x38')]){_0x37ffcb['where']=_['merge'](_0x37ffcb[_0xa7c2('0x37')],{'$or':_[_0xa7c2('0x39')](_0x78fc60,function(_0x17a1e9){if(_0x17a1e9[_0xa7c2('0x3a')]['key']!=='VIRTUAL'){var _0x5b8c43={};_0x5b8c43[_0x17a1e9[_0xa7c2('0x3b')]]={'$like':'%'+_0x1e5406[_0xa7c2('0x29')][_0xa7c2('0x38')]+'%'};return _0x5b8c43;}})});}_0x37ffcb=_[_0xa7c2('0x36')]({},_0x37ffcb,_0x1e5406[_0xa7c2('0x3c')]);var _0x351903={'where':_0x37ffcb[_0xa7c2('0x37')]};return db[_0xa7c2('0x25')][_0xa7c2('0x15')](_0x351903)[_0xa7c2('0x21')](function(_0x207af3){_0x2179e9['count']=_0x207af3;if(_0x1e5406[_0xa7c2('0x29')][_0xa7c2('0x3d')]){_0x37ffcb['include']=[{'all':!![]}];}return db[_0xa7c2('0x25')][_0xa7c2('0x3e')](_0x37ffcb);})[_0xa7c2('0x21')](function(_0x5c3264){_0x2179e9[_0xa7c2('0x3f')]=_0x5c3264;return _0x2179e9;})[_0xa7c2('0x21')](respondWithFilteredResult(_0x533849,_0x37ffcb))[_0xa7c2('0x40')](handleError(_0x533849,null));};exports[_0xa7c2('0x41')]=function(_0x48a71c,_0x2928f2){var _0x3e0e97={'raw':![],'where':{'id':_0x48a71c[_0xa7c2('0x42')]['id']}},_0x2e4d64={};_0x2e4d64[_0xa7c2('0x27')]=_['keys'](db[_0xa7c2('0x25')][_0xa7c2('0x26')]);_0x2e4d64['query']=_[_0xa7c2('0x28')](_0x48a71c[_0xa7c2('0x29')]);_0x2e4d64[_0xa7c2('0x2c')]=_[_0xa7c2('0x2d')](_0x2e4d64[_0xa7c2('0x27')],_0x2e4d64[_0xa7c2('0x29')]);_0x3e0e97['attributes']=_['intersection'](_0x2e4d64[_0xa7c2('0x27')],qs['fields'](_0x48a71c[_0xa7c2('0x29')]['fields']));_0x3e0e97[_0xa7c2('0x2e')]=_0x3e0e97[_0xa7c2('0x2e')][_0xa7c2('0x2f')]?_0x3e0e97['attributes']:_0x2e4d64[_0xa7c2('0x27')];if(_0x48a71c[_0xa7c2('0x29')][_0xa7c2('0x3d')]){_0x3e0e97['include']=[{'all':!![]}];}_0x3e0e97=_[_0xa7c2('0x36')]({},_0x3e0e97,_0x48a71c[_0xa7c2('0x3c')]);return db['IntegrationReport'][_0xa7c2('0x43')](_0x3e0e97)[_0xa7c2('0x21')](handleEntityNotFound(_0x2928f2,null))[_0xa7c2('0x21')](respondWithResult(_0x2928f2,null))[_0xa7c2('0x40')](handleError(_0x2928f2,null));};exports['create']=function(_0x304cf5,_0x4cc716){return db[_0xa7c2('0x25')][_0xa7c2('0x44')](_0x304cf5[_0xa7c2('0x45')],{})['then'](respondWithResult(_0x4cc716,0xc9))[_0xa7c2('0x40')](handleError(_0x4cc716,null));};exports[_0xa7c2('0x1f')]=function(_0x3100cf,_0x484214){if(_0x3100cf[_0xa7c2('0x45')]['id']){delete _0x3100cf[_0xa7c2('0x45')]['id'];}return db[_0xa7c2('0x25')][_0xa7c2('0x43')]({'where':{'id':_0x3100cf[_0xa7c2('0x42')]['id']}})[_0xa7c2('0x21')](handleEntityNotFound(_0x484214,null))['then'](saveUpdates(_0x3100cf[_0xa7c2('0x45')],null))['then'](respondWithResult(_0x484214,null))[_0xa7c2('0x40')](handleError(_0x484214,null));};exports['destroy']=function(_0x399fbb,_0x24d8b6){return db[_0xa7c2('0x25')]['find']({'where':{'id':_0x399fbb[_0xa7c2('0x42')]['id']}})['then'](handleEntityNotFound(_0x24d8b6,null))[_0xa7c2('0x21')](removeEntity(_0x24d8b6,null))[_0xa7c2('0x40')](handleError(_0x24d8b6,null));};exports['describe']=function(_0x5a91c7,_0x34763c){return db[_0xa7c2('0x25')][_0xa7c2('0x46')]()['then'](respondWithResult(_0x34763c,null))[_0xa7c2('0x40')](handleError(_0x34763c,null));};
\ No newline at end of file
+var _0x3856=['field','filter','options','IntegrationReport','include','rows','catch','params','length','includeAll','find','create','body','destroy','describe','eml-format','rimraf','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','reject','save','then','error','stack','name','send','index','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','add','day','merge','type','key','VIRTUAL'];(function(_0x251ce6,_0x286185){var _0x258a81=function(_0x30ce00){while(--_0x30ce00){_0x251ce6['push'](_0x251ce6['shift']());}};_0x258a81(++_0x286185);}(_0x3856,0x16d));var _0x6385=function(_0x231e16,_0x67347b){_0x231e16=_0x231e16-0x0;var _0x570a7c=_0x3856[_0x231e16];return _0x570a7c;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x6385('0x0'));var rimraf=require(_0x6385('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6385('0x2'));var moment=require('moment');var BPromise=require(_0x6385('0x3'));var Mustache=require(_0x6385('0x4'));var util=require('util');var path=require(_0x6385('0x5'));var sox=require(_0x6385('0x6'));var csv=require(_0x6385('0x7'));var ejs=require(_0x6385('0x8'));var fs=require('fs');var _=require(_0x6385('0x9'));var squel=require(_0x6385('0xa'));var crypto=require(_0x6385('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6385('0x7'));var querystring=require('querystring');var Papa=require(_0x6385('0xc'));var Redis=require(_0x6385('0xd'));var qs=require(_0x6385('0xe'));var logger=require('../../config/logger')('api');var utils=require(_0x6385('0xf'));var config=require('../../config/environment');var db=require(_0x6385('0x10'))['db'];function respondWithStatusCode(_0x1b8c24,_0x207589){_0x207589=_0x207589||0xcc;return function(_0x402c38){if(_0x402c38){return _0x1b8c24[_0x6385('0x11')](_0x207589);}return _0x1b8c24[_0x6385('0x12')](_0x207589)[_0x6385('0x13')]();};}function respondWithResult(_0x34ece8,_0x4c87d9){_0x4c87d9=_0x4c87d9||0xc8;return function(_0x3aed87){if(_0x3aed87){return _0x34ece8['status'](_0x4c87d9)[_0x6385('0x14')](_0x3aed87);}};}function respondWithFilteredResult(_0x2aaf3a,_0x485a33){return function(_0x10051e){if(_0x10051e){var _0x163b93=_0x10051e[_0x6385('0x15')],_0x384d9d=_0x485a33[_0x6385('0x16')],_0x1c87b8=_0x485a33[_0x6385('0x16')]+_0x485a33[_0x6385('0x17')],_0x4a3ce7;if(_0x1c87b8>=_0x163b93){_0x1c87b8=_0x163b93;_0x4a3ce7=0xc8;}else{_0x4a3ce7=0xce;}_0x2aaf3a[_0x6385('0x12')](_0x4a3ce7);return _0x2aaf3a[_0x6385('0x18')](_0x6385('0x19'),_0x384d9d+'-'+_0x1c87b8+'/'+_0x163b93)[_0x6385('0x14')](_0x10051e);}return null;};}function patchUpdates(_0xb176a3){return function(_0x4837b3){try{jsonpatch['apply'](_0x4837b3,_0xb176a3,!![]);}catch(_0x276414){return BPromise[_0x6385('0x1a')](_0x276414);}return _0x4837b3[_0x6385('0x1b')]();};}function saveUpdates(_0x4c91d8,_0x34295c){return function(_0xf44972){if(_0xf44972){return _0xf44972['update'](_0x4c91d8)[_0x6385('0x1c')](function(_0x5039e5){return _0x5039e5;});}return null;};}function removeEntity(_0x2ad574,_0x560adb){return function(_0x63c984){if(_0x63c984){return _0x63c984['destroy']()[_0x6385('0x1c')](function(){_0x2ad574['status'](0xcc)[_0x6385('0x13')]();});}};}function handleEntityNotFound(_0x13c69e,_0x1b0ad0){return function(_0x36b94f){if(!_0x36b94f){_0x13c69e[_0x6385('0x11')](0x194);}return _0x36b94f;};}function handleError(_0x167e6f,_0x3f920d){_0x3f920d=_0x3f920d||0x1f4;return function(_0x4a1d8f){logger[_0x6385('0x1d')](_0x4a1d8f[_0x6385('0x1e')]);if(_0x4a1d8f['name']){delete _0x4a1d8f[_0x6385('0x1f')];}_0x167e6f[_0x6385('0x12')](_0x3f920d)[_0x6385('0x20')](_0x4a1d8f);};}exports[_0x6385('0x21')]=function(_0x49a74c,_0x1de0db){var _0x1781eb={},_0x5e276f={},_0x3ca98d={'count':0x0,'rows':[]};var _0x12af1f=db['IntegrationReport'][_0x6385('0x22')];_0x5e276f[_0x6385('0x23')]=_[_0x6385('0x24')](_0x12af1f);var _0x365847={'dateStart':_0x49a74c['query'][_0x6385('0x25')],'dateEnd':_0x49a74c[_0x6385('0x26')][_0x6385('0x27')]};delete _0x49a74c[_0x6385('0x26')][_0x6385('0x25')];delete _0x49a74c['query'][_0x6385('0x27')];_0x5e276f[_0x6385('0x26')]=_[_0x6385('0x24')](_0x49a74c[_0x6385('0x26')]);_0x5e276f[_0x6385('0x28')]=_[_0x6385('0x29')](_0x5e276f['model'],_0x5e276f['query']);_0x1781eb['attributes']=_[_0x6385('0x29')](_0x5e276f[_0x6385('0x23')],qs[_0x6385('0x2a')](_0x49a74c['query'][_0x6385('0x2a')]));_0x1781eb['attributes']=_0x1781eb[_0x6385('0x2b')]['length']?_0x1781eb[_0x6385('0x2b')]:_0x5e276f['model'];if(!_0x49a74c[_0x6385('0x26')][_0x6385('0x2c')](_0x6385('0x2d'))){_0x1781eb[_0x6385('0x17')]=qs[_0x6385('0x17')](_0x49a74c['query'][_0x6385('0x17')]);_0x1781eb[_0x6385('0x16')]=qs[_0x6385('0x16')](_0x49a74c[_0x6385('0x26')][_0x6385('0x16')]);}_0x1781eb[_0x6385('0x2e')]=qs[_0x6385('0x2f')](_0x49a74c[_0x6385('0x26')][_0x6385('0x2f')]);_0x1781eb[_0x6385('0x30')]=qs['filters'](_['pick'](_0x49a74c[_0x6385('0x26')],_0x5e276f[_0x6385('0x28')]));if(_0x365847['dateStart']){if(_0x365847[_0x6385('0x27')]){_0x365847['dateEnd']=moment(_0x365847[_0x6385('0x27')])[_0x6385('0x31')](0x1,_0x6385('0x32'));}else{_0x365847[_0x6385('0x27')]=moment(_0x365847[_0x6385('0x25')])['add'](0x1,_0x6385('0x32'));}_[_0x6385('0x33')](_0x1781eb[_0x6385('0x30')],{'createdAt':{'$gte':_0x365847['dateStart'],'$lte':_0x365847[_0x6385('0x27')]}});}if(_0x49a74c[_0x6385('0x26')]['filter']){_0x1781eb[_0x6385('0x30')]=_['merge'](_0x1781eb[_0x6385('0x30')],{'$or':_['map'](_0x12af1f,function(_0x933d58){if(_0x933d58[_0x6385('0x34')][_0x6385('0x35')]!==_0x6385('0x36')){var _0x4106b7={};_0x4106b7[_0x933d58[_0x6385('0x37')]]={'$like':'%'+_0x49a74c['query'][_0x6385('0x38')]+'%'};return _0x4106b7;}})});}_0x1781eb=_[_0x6385('0x33')]({},_0x1781eb,_0x49a74c[_0x6385('0x39')]);var _0x3e95bb={'where':_0x1781eb[_0x6385('0x30')]};return db[_0x6385('0x3a')][_0x6385('0x15')](_0x3e95bb)[_0x6385('0x1c')](function(_0x4c1b96){_0x3ca98d[_0x6385('0x15')]=_0x4c1b96;if(_0x49a74c['query']['includeAll']){_0x1781eb[_0x6385('0x3b')]=[{'all':!![]}];}return db[_0x6385('0x3a')]['findAll'](_0x1781eb);})[_0x6385('0x1c')](function(_0x136541){_0x3ca98d[_0x6385('0x3c')]=_0x136541;return _0x3ca98d;})[_0x6385('0x1c')](respondWithFilteredResult(_0x1de0db,_0x1781eb))[_0x6385('0x3d')](handleError(_0x1de0db,null));};exports['show']=function(_0x51a405,_0x359f6c){var _0x371fd4={'raw':![],'where':{'id':_0x51a405[_0x6385('0x3e')]['id']}},_0xe3493a={};_0xe3493a[_0x6385('0x23')]=_[_0x6385('0x24')](db[_0x6385('0x3a')][_0x6385('0x22')]);_0xe3493a[_0x6385('0x26')]=_[_0x6385('0x24')](_0x51a405['query']);_0xe3493a[_0x6385('0x28')]=_[_0x6385('0x29')](_0xe3493a['model'],_0xe3493a[_0x6385('0x26')]);_0x371fd4[_0x6385('0x2b')]=_[_0x6385('0x29')](_0xe3493a[_0x6385('0x23')],qs[_0x6385('0x2a')](_0x51a405[_0x6385('0x26')][_0x6385('0x2a')]));_0x371fd4[_0x6385('0x2b')]=_0x371fd4[_0x6385('0x2b')][_0x6385('0x3f')]?_0x371fd4[_0x6385('0x2b')]:_0xe3493a[_0x6385('0x23')];if(_0x51a405[_0x6385('0x26')][_0x6385('0x40')]){_0x371fd4['include']=[{'all':!![]}];}_0x371fd4=_[_0x6385('0x33')]({},_0x371fd4,_0x51a405[_0x6385('0x39')]);return db[_0x6385('0x3a')][_0x6385('0x41')](_0x371fd4)[_0x6385('0x1c')](handleEntityNotFound(_0x359f6c,null))[_0x6385('0x1c')](respondWithResult(_0x359f6c,null))[_0x6385('0x3d')](handleError(_0x359f6c,null));};exports[_0x6385('0x42')]=function(_0x5bc515,_0x5bb2e4){return db['IntegrationReport'][_0x6385('0x42')](_0x5bc515['body'],{})['then'](respondWithResult(_0x5bb2e4,0xc9))['catch'](handleError(_0x5bb2e4,null));};exports['update']=function(_0x47e200,_0x54872a){if(_0x47e200[_0x6385('0x43')]['id']){delete _0x47e200[_0x6385('0x43')]['id'];}return db[_0x6385('0x3a')][_0x6385('0x41')]({'where':{'id':_0x47e200[_0x6385('0x3e')]['id']}})[_0x6385('0x1c')](handleEntityNotFound(_0x54872a,null))[_0x6385('0x1c')](saveUpdates(_0x47e200[_0x6385('0x43')],null))[_0x6385('0x1c')](respondWithResult(_0x54872a,null))['catch'](handleError(_0x54872a,null));};exports[_0x6385('0x44')]=function(_0x13f2ae,_0x13d437){return db[_0x6385('0x3a')][_0x6385('0x41')]({'where':{'id':_0x13f2ae[_0x6385('0x3e')]['id']}})[_0x6385('0x1c')](handleEntityNotFound(_0x13d437,null))[_0x6385('0x1c')](removeEntity(_0x13d437,null))[_0x6385('0x3d')](handleError(_0x13d437,null));};exports[_0x6385('0x45')]=function(_0x2c9980,_0x1ceeba){return db[_0x6385('0x3a')][_0x6385('0x45')]()[_0x6385('0x1c')](respondWithResult(_0x1ceeba,null))['catch'](handleError(_0x1ceeba,null));};
\ No newline at end of file
index d2a33c6..d7e579b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b20=['define','IntegrationReport','report_integration','util','../../config/logger','bluebird','request-promise','./integrationReport.attributes','exports'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x1b20,0x66));var _0x01b2=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1b20[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0x01b2('0x0'));var logger=require(_0x01b2('0x1'))('api');var moment=require('moment');var BPromise=require(_0x01b2('0x2'));var rp=require(_0x01b2('0x3'));var attributes=require(_0x01b2('0x4'));module[_0x01b2('0x5')]=function(_0x1cf757,_0x365550){return _0x1cf757[_0x01b2('0x6')](_0x01b2('0x7'),attributes,{'tableName':_0x01b2('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c7b=['define','IntegrationReport','report_integration','lodash','moment','request-promise','./integrationReport.attributes','exports'];(function(_0x546aaf,_0x1ed138){var _0x1cbf6d=function(_0x36c837){while(--_0x36c837){_0x546aaf['push'](_0x546aaf['shift']());}};_0x1cbf6d(++_0x1ed138);}(_0x6c7b,0x10b));var _0xb6c7=function(_0x1ae152,_0x21f035){_0x1ae152=_0x1ae152-0x0;var _0x265ede=_0x6c7b[_0x1ae152];return _0x265ede;};'use strict';var _=require(_0xb6c7('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb6c7('0x1'));var BPromise=require('bluebird');var rp=require(_0xb6c7('0x2'));var attributes=require(_0xb6c7('0x3'));module[_0xb6c7('0x4')]=function(_0x5857e0,_0x294dc9){return _0x5857e0[_0xb6c7('0x5')](_0xb6c7('0x6'),attributes,{'tableName':_0xb6c7('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fe8d01b..48e6394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x284c=['IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info'];(function(_0x59a40c,_0x35999f){var _0x3cf340=function(_0x3d2c47){while(--_0x3d2c47){_0x59a40c['push'](_0x59a40c['shift']());}};_0x3cf340(++_0x35999f);}(_0x284c,0x1a2));var _0xc284=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x284c[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xc284('0x0'));var util=require(_0xc284('0x1'));var moment=require('moment');var BPromise=require(_0xc284('0x2'));var rs=require(_0xc284('0x3'));var fs=require('fs');var Redis=require(_0xc284('0x4'));var db=require(_0xc284('0x5'))['db'];var utils=require(_0xc284('0x6'));var logger=require(_0xc284('0x7'))(_0xc284('0x8'));var config=require(_0xc284('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xc284('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f0b1c,_0x35636c,_0x4c7909){return new BPromise(function(_0x2f61af,_0x3c589c){return client[_0xc284('0xb')](_0x1f0b1c,_0x4c7909)[_0xc284('0xc')](function(_0x3b8678){logger[_0xc284('0xd')](_0xc284('0xe'),_0x35636c,_0xc284('0xf'));logger[_0xc284('0x10')](_0xc284('0x11'),_0x35636c,_0xc284('0xf'),JSON[_0xc284('0x12')](_0x3b8678));if(_0x3b8678[_0xc284('0x13')]){if(_0x3b8678[_0xc284('0x13')][_0xc284('0x14')]===0x1f4){logger[_0xc284('0x13')](_0xc284('0xe'),_0x35636c,_0x3b8678[_0xc284('0x13')][_0xc284('0x15')]);return _0x3c589c(_0x3b8678[_0xc284('0x13')][_0xc284('0x15')]);}logger[_0xc284('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x35636c,_0x3b8678['error'][_0xc284('0x15')]);return _0x2f61af(_0x3b8678[_0xc284('0x13')][_0xc284('0x15')]);}else{logger[_0xc284('0xd')]('IntegrationReport,\x20%s,\x20%s',_0x35636c,_0xc284('0xf'));_0x2f61af(_0x3b8678[_0xc284('0x16')][_0xc284('0x15')]);}})[_0xc284('0x17')](function(_0x5b12c2){logger[_0xc284('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x35636c,_0x5b12c2);_0x3c589c(_0x5b12c2);});});}
\ No newline at end of file
+var _0x1329=['then','IntegrationReport,\x20%s,\x20%s','IntegrationReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x1329,0x199));var _0x9132=function(_0xac79e4,_0x5772ab){_0xac79e4=_0xac79e4-0x0;var _0xf98867=_0x1329[_0xac79e4];return _0xf98867;};'use strict';var _=require(_0x9132('0x0'));var util=require(_0x9132('0x1'));var moment=require(_0x9132('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9132('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9132('0x4'));var logger=require(_0x9132('0x5'))(_0x9132('0x6'));var config=require(_0x9132('0x7'));var jayson=require(_0x9132('0x8'));var client=jayson['client'][_0x9132('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46e1ac,_0x3e6659,_0x5b24b4){return new BPromise(function(_0x4873d2,_0x3ceac0){return client[_0x9132('0xa')](_0x46e1ac,_0x5b24b4)[_0x9132('0xb')](function(_0x208f21){logger['info'](_0x9132('0xc'),_0x3e6659,'request\x20sent');logger['debug'](_0x9132('0xd'),_0x3e6659,_0x9132('0xe'),JSON[_0x9132('0xf')](_0x208f21));if(_0x208f21[_0x9132('0x10')]){if(_0x208f21[_0x9132('0x10')][_0x9132('0x11')]===0x1f4){logger[_0x9132('0x10')](_0x9132('0xc'),_0x3e6659,_0x208f21['error']['message']);return _0x3ceac0(_0x208f21[_0x9132('0x10')][_0x9132('0x12')]);}logger[_0x9132('0x10')](_0x9132('0xc'),_0x3e6659,_0x208f21[_0x9132('0x10')]['message']);return _0x4873d2(_0x208f21[_0x9132('0x10')]['message']);}else{logger[_0x9132('0x13')](_0x9132('0xc'),_0x3e6659,'request\x20sent');_0x4873d2(_0x208f21['result']['message']);}})[_0x9132('0x14')](function(_0x4aa33d){logger[_0x9132('0x10')](_0x9132('0xc'),_0x3e6659,_0x4aa33d);_0x3ceac0(_0x4aa33d);});});}
\ No newline at end of file
index e0e68ff..25038d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b05=['express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','getIntervals','post','create','/:id/sub_intervals','/:id/sub_intervals/create_many','addIntervals','put','update','/:id','destroy','exports','util','path','connect-timeout'];(function(_0x2e41e2,_0x4e7250){var _0x2844d6=function(_0x28ce24){while(--_0x28ce24){_0x2e41e2['push'](_0x2e41e2['shift']());}};_0x2844d6(++_0x4e7250);}(_0x9b05,0x1cb));var _0x59b0=function(_0x699072,_0x3aca68){_0x699072=_0x699072-0x0;var _0x44edc2=_0x9b05[_0x699072];return _0x44edc2;};'use strict';var multer=require('multer');var util=require(_0x59b0('0x0'));var path=require(_0x59b0('0x1'));var timeout=require(_0x59b0('0x2'));var express=require(_0x59b0('0x3'));var router=express[_0x59b0('0x4')]();var auth=require(_0x59b0('0x5'));var interaction=require(_0x59b0('0x6'));var config=require('../../config/environment');var controller=require('./interval.controller');router[_0x59b0('0x7')]('/',auth[_0x59b0('0x8')](),controller[_0x59b0('0x9')]);router[_0x59b0('0x7')]('/:id',auth[_0x59b0('0x8')](),controller[_0x59b0('0xa')]);router[_0x59b0('0x7')]('/:id/sub_intervals',auth[_0x59b0('0x8')](),controller[_0x59b0('0xb')]);router[_0x59b0('0xc')]('/',auth['isAuthenticated'](),controller[_0x59b0('0xd')]);router[_0x59b0('0xc')](_0x59b0('0xe'),auth[_0x59b0('0x8')](),controller['addInterval']);router[_0x59b0('0xc')](_0x59b0('0xf'),auth[_0x59b0('0x8')](),controller[_0x59b0('0x10')]);router[_0x59b0('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x59b0('0x12')]);router['delete'](_0x59b0('0x13'),auth['isAuthenticated'](),controller[_0x59b0('0x14')]);module[_0x59b0('0x15')]=router;
\ No newline at end of file
+var _0x1c9a=['put','/:id','update','delete','destroy','multer','path','express','Router','../../components/auth/service','../../config/environment','./interval.controller','get','isAuthenticated','show','getIntervals','post','/:id/sub_intervals','addInterval','/:id/sub_intervals/create_many','addIntervals'];(function(_0x1277ef,_0xf002b3){var _0x5caab6=function(_0xcb84d2){while(--_0xcb84d2){_0x1277ef['push'](_0x1277ef['shift']());}};_0x5caab6(++_0xf002b3);}(_0x1c9a,0x98));var _0xa1c9=function(_0x5a85e4,_0x50f776){_0x5a85e4=_0x5a85e4-0x0;var _0x2bd827=_0x1c9a[_0x5a85e4];return _0x2bd827;};'use strict';var multer=require(_0xa1c9('0x0'));var util=require('util');var path=require(_0xa1c9('0x1'));var timeout=require('connect-timeout');var express=require(_0xa1c9('0x2'));var router=express[_0xa1c9('0x3')]();var auth=require(_0xa1c9('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa1c9('0x5'));var controller=require(_0xa1c9('0x6'));router[_0xa1c9('0x7')]('/',auth[_0xa1c9('0x8')](),controller['index']);router[_0xa1c9('0x7')]('/:id',auth[_0xa1c9('0x8')](),controller[_0xa1c9('0x9')]);router[_0xa1c9('0x7')]('/:id/sub_intervals',auth[_0xa1c9('0x8')](),controller[_0xa1c9('0xa')]);router[_0xa1c9('0xb')]('/',auth[_0xa1c9('0x8')](),controller['create']);router[_0xa1c9('0xb')](_0xa1c9('0xc'),auth[_0xa1c9('0x8')](),controller[_0xa1c9('0xd')]);router[_0xa1c9('0xb')](_0xa1c9('0xe'),auth[_0xa1c9('0x8')](),controller[_0xa1c9('0xf')]);router[_0xa1c9('0x10')](_0xa1c9('0x11'),auth['isAuthenticated'](),controller[_0xa1c9('0x12')]);router[_0xa1c9('0x13')](_0xa1c9('0x11'),auth[_0xa1c9('0x8')](),controller[_0xa1c9('0x14')]);module['exports']=router;
\ No newline at end of file
index 100ecb8..4fb9210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3116=['STRING','sequelize','exports'];(function(_0x56c758,_0x540591){var _0x9bb0db=function(_0xdaa197){while(--_0xdaa197){_0x56c758['push'](_0x56c758['shift']());}};_0x9bb0db(++_0x540591);}(_0x3116,0x17e));var _0x6311=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0x3116[_0x3635ce];return _0x97ecd0;};'use strict';var Sequelize=require(_0x6311('0x0'));module[_0x6311('0x1')]={'name':{'type':Sequelize[_0x6311('0x2')]},'description':{'type':Sequelize[_0x6311('0x2')]},'interval':{'type':Sequelize[_0x6311('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x0eea=['exports','STRING'];(function(_0x58366c,_0x184b3a){var _0x24c709=function(_0x5e6fb6){while(--_0x5e6fb6){_0x58366c['push'](_0x58366c['shift']());}};_0x24c709(++_0x184b3a);}(_0x0eea,0xdc));var _0xa0ee=function(_0x3819ed,_0x199c96){_0x3819ed=_0x3819ed-0x0;var _0x58eb98=_0x0eea[_0x3819ed];return _0x58eb98;};'use strict';var Sequelize=require('sequelize');module[_0xa0ee('0x0')]={'name':{'type':Sequelize[_0xa0ee('0x1')]},'description':{'type':Sequelize[_0xa0ee('0x1')]},'interval':{'type':Sequelize[_0xa0ee('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 9646e6d..05e2f4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a25=['VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','length','find','create','body','user','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','IntervalId','getIntervals','findOne','order','hasOwnProperty','addIntervals','sequelize','transaction','bulkCreate','html-pdf','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','count','offset','limit','reject','save','update','then','destroy','get','Intervals','UserProfileResource','error','stack','name','send','index','Interval','model','query','dateStart','dateEnd','filters','intersection','fields','attributes','nolimit','sort','where','pick','add','day','merge','filter','map','key'];(function(_0x2fe689,_0x5794e5){var _0x35ea44=function(_0x51b9d6){while(--_0x51b9d6){_0x2fe689['push'](_0x2fe689['shift']());}};_0x35ea44(++_0x5794e5);}(_0x4a25,0x1d4));var _0x54a2=function(_0x5341ff,_0x1de6df){_0x5341ff=_0x5341ff-0x0;var _0x53be58=_0x4a25[_0x5341ff];return _0x53be58;};'use strict';var pdf=require(_0x54a2('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x54a2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x54a2('0x2'));var rp=require(_0x54a2('0x3'));var moment=require(_0x54a2('0x4'));var BPromise=require(_0x54a2('0x5'));var Mustache=require('mustache');var util=require(_0x54a2('0x6'));var path=require(_0x54a2('0x7'));var sox=require(_0x54a2('0x8'));var csv=require(_0x54a2('0x9'));var ejs=require(_0x54a2('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x54a2('0xb'));var crypto=require(_0x54a2('0xc'));var jsforce=require(_0x54a2('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x54a2('0xe'));var Papa=require('papaparse');var Redis=require(_0x54a2('0xf'));var qs=require(_0x54a2('0x10'));var logger=require('../../config/logger')(_0x54a2('0x11'));var utils=require(_0x54a2('0x12'));var config=require('../../config/environment');var db=require(_0x54a2('0x13'))['db'];var extensions=require(_0x54a2('0x14'));function respondWithStatusCode(_0x562770,_0x16b0f0){_0x16b0f0=_0x16b0f0||0xcc;return function(_0x1ec864){if(_0x1ec864){return _0x562770[_0x54a2('0x15')](_0x16b0f0);}return _0x562770[_0x54a2('0x16')](_0x16b0f0)[_0x54a2('0x17')]();};}function respondWithResult(_0x352200,_0x191ee0){_0x191ee0=_0x191ee0||0xc8;return function(_0x2319bd){if(_0x2319bd){return _0x352200['status'](_0x191ee0)[_0x54a2('0x18')](_0x2319bd);}};}function respondWithFilteredResult(_0x5e2e9a,_0x339d74){return function(_0x259a7a){if(_0x259a7a){var _0xb61800=_0x259a7a[_0x54a2('0x19')],_0x1fcc41=_0x339d74[_0x54a2('0x1a')],_0x38beb0=_0x339d74[_0x54a2('0x1a')]+_0x339d74[_0x54a2('0x1b')],_0xc45719;if(_0x38beb0>=_0xb61800){_0x38beb0=_0xb61800;_0xc45719=0xc8;}else{_0xc45719=0xce;}_0x5e2e9a['status'](_0xc45719);return _0x5e2e9a['set']('Content-Range',_0x1fcc41+'-'+_0x38beb0+'/'+_0xb61800)[_0x54a2('0x18')](_0x259a7a);}return null;};}function patchUpdates(_0x5356ea){return function(_0x54a8b9){try{jsonpatch['apply'](_0x54a8b9,_0x5356ea,!![]);}catch(_0x54543e){return BPromise[_0x54a2('0x1c')](_0x54543e);}return _0x54a8b9[_0x54a2('0x1d')]();};}function saveUpdates(_0x33f9a0,_0x300f10){return function(_0xd9a51d){if(_0xd9a51d){return _0xd9a51d[_0x54a2('0x1e')](_0x33f9a0)[_0x54a2('0x1f')](function(_0x7bcd00){return _0x7bcd00;});}return null;};}function removeEntity(_0x4c1545,_0x57efab){return function(_0x12e7e0){if(_0x12e7e0){return _0x12e7e0[_0x54a2('0x20')]()['then'](function(){var _0x3a080a=_0x12e7e0[_0x54a2('0x21')]({'plain':!![]});var _0x57c95b=_0x54a2('0x22');return db[_0x54a2('0x23')]['destroy']({'where':{'type':_0x57c95b,'resourceId':_0x3a080a['id']}})[_0x54a2('0x1f')](function(){return _0x12e7e0;});})[_0x54a2('0x1f')](function(){_0x4c1545[_0x54a2('0x16')](0xcc)[_0x54a2('0x17')]();});}};}function handleEntityNotFound(_0x35b3f2,_0x3bedac){return function(_0x5a5c09){if(!_0x5a5c09){_0x35b3f2[_0x54a2('0x15')](0x194);}return _0x5a5c09;};}function handleError(_0x3f6095,_0x498d31){_0x498d31=_0x498d31||0x1f4;return function(_0x32c99b){logger[_0x54a2('0x24')](_0x32c99b[_0x54a2('0x25')]);if(_0x32c99b[_0x54a2('0x26')]){delete _0x32c99b[_0x54a2('0x26')];}_0x3f6095['status'](_0x498d31)[_0x54a2('0x27')](_0x32c99b);};}exports[_0x54a2('0x28')]=function(_0x261eaf,_0x3a2690){var _0x43ac71={},_0x1737c8={},_0x2a1a80={'count':0x0,'rows':[]};var _0x12cb29=db[_0x54a2('0x29')]['rawAttributes'];_0x1737c8[_0x54a2('0x2a')]=_['keys'](_0x12cb29);var _0x4db7b5={'dateStart':_0x261eaf[_0x54a2('0x2b')][_0x54a2('0x2c')],'dateEnd':_0x261eaf[_0x54a2('0x2b')][_0x54a2('0x2d')]};delete _0x261eaf[_0x54a2('0x2b')][_0x54a2('0x2c')];delete _0x261eaf[_0x54a2('0x2b')]['dateEnd'];_0x1737c8[_0x54a2('0x2b')]=_['keys'](_0x261eaf['query']);_0x1737c8[_0x54a2('0x2e')]=_[_0x54a2('0x2f')](_0x1737c8[_0x54a2('0x2a')],_0x1737c8[_0x54a2('0x2b')]);_0x43ac71['attributes']=_['intersection'](_0x1737c8['model'],qs[_0x54a2('0x30')](_0x261eaf[_0x54a2('0x2b')]['fields']));_0x43ac71[_0x54a2('0x31')]=_0x43ac71[_0x54a2('0x31')]['length']?_0x43ac71[_0x54a2('0x31')]:_0x1737c8[_0x54a2('0x2a')];if(!_0x261eaf[_0x54a2('0x2b')]['hasOwnProperty'](_0x54a2('0x32'))){_0x43ac71[_0x54a2('0x1b')]=qs['limit'](_0x261eaf[_0x54a2('0x2b')][_0x54a2('0x1b')]);_0x43ac71['offset']=qs[_0x54a2('0x1a')](_0x261eaf[_0x54a2('0x2b')][_0x54a2('0x1a')]);}_0x43ac71['order']=qs[_0x54a2('0x33')](_0x261eaf['query'][_0x54a2('0x33')]);_0x43ac71[_0x54a2('0x34')]=qs[_0x54a2('0x2e')](_[_0x54a2('0x35')](_0x261eaf[_0x54a2('0x2b')],_0x1737c8[_0x54a2('0x2e')]));if(_0x4db7b5['dateStart']){if(_0x4db7b5[_0x54a2('0x2d')]){_0x4db7b5[_0x54a2('0x2d')]=moment(_0x4db7b5['dateEnd'])[_0x54a2('0x36')](0x1,_0x54a2('0x37'));}else{_0x4db7b5[_0x54a2('0x2d')]=moment(_0x4db7b5[_0x54a2('0x2c')])[_0x54a2('0x36')](0x1,_0x54a2('0x37'));}_[_0x54a2('0x38')](_0x43ac71[_0x54a2('0x34')],{'createdAt':{'$gte':_0x4db7b5['dateStart'],'$lte':_0x4db7b5['dateEnd']}});}if(_0x261eaf[_0x54a2('0x2b')][_0x54a2('0x39')]){_0x43ac71[_0x54a2('0x34')]=_[_0x54a2('0x38')](_0x43ac71[_0x54a2('0x34')],{'$or':_[_0x54a2('0x3a')](_0x12cb29,function(_0x315134){if(_0x315134['type'][_0x54a2('0x3b')]!==_0x54a2('0x3c')){var _0x21b10d={};_0x21b10d[_0x315134[_0x54a2('0x3d')]]={'$like':'%'+_0x261eaf[_0x54a2('0x2b')][_0x54a2('0x39')]+'%'};return _0x21b10d;}})});}_0x43ac71=_['merge']({},_0x43ac71,_0x261eaf[_0x54a2('0x3e')]);var _0x22f482={'where':_0x43ac71[_0x54a2('0x34')]};return db[_0x54a2('0x29')][_0x54a2('0x19')](_0x22f482)[_0x54a2('0x1f')](function(_0x229e2c){_0x2a1a80['count']=_0x229e2c;if(_0x261eaf[_0x54a2('0x2b')][_0x54a2('0x3f')]){_0x43ac71[_0x54a2('0x40')]=[{'all':!![]}];}return db[_0x54a2('0x29')][_0x54a2('0x41')](_0x43ac71);})['then'](function(_0x17fcdc){_0x2a1a80[_0x54a2('0x42')]=_0x17fcdc;return _0x2a1a80;})[_0x54a2('0x1f')](respondWithFilteredResult(_0x3a2690,_0x43ac71))[_0x54a2('0x43')](handleError(_0x3a2690,null));};exports[_0x54a2('0x44')]=function(_0x69dc82,_0x17ac08){var _0xf6607d={'raw':!![],'where':{'id':_0x69dc82[_0x54a2('0x45')]['id']}},_0x5bc878={};_0x5bc878[_0x54a2('0x2a')]=_[_0x54a2('0x46')](db['Interval'][_0x54a2('0x47')]);_0x5bc878['query']=_[_0x54a2('0x46')](_0x69dc82[_0x54a2('0x2b')]);_0x5bc878[_0x54a2('0x2e')]=_[_0x54a2('0x2f')](_0x5bc878['model'],_0x5bc878['query']);_0xf6607d['attributes']=_[_0x54a2('0x2f')](_0x5bc878[_0x54a2('0x2a')],qs[_0x54a2('0x30')](_0x69dc82[_0x54a2('0x2b')][_0x54a2('0x30')]));_0xf6607d['attributes']=_0xf6607d['attributes'][_0x54a2('0x48')]?_0xf6607d[_0x54a2('0x31')]:_0x5bc878[_0x54a2('0x2a')];if(_0x69dc82['query'][_0x54a2('0x3f')]){_0xf6607d[_0x54a2('0x40')]=[{'all':!![]}];}_0xf6607d=_[_0x54a2('0x38')]({},_0xf6607d,_0x69dc82[_0x54a2('0x3e')]);return db[_0x54a2('0x29')][_0x54a2('0x49')](_0xf6607d)[_0x54a2('0x1f')](handleEntityNotFound(_0x17ac08,null))[_0x54a2('0x1f')](respondWithResult(_0x17ac08,null))[_0x54a2('0x43')](handleError(_0x17ac08,null));};exports[_0x54a2('0x4a')]=function(_0x1cafb7,_0x410187){return db[_0x54a2('0x29')][_0x54a2('0x4a')](_0x1cafb7[_0x54a2('0x4b')],{})[_0x54a2('0x1f')](function(_0x1c7403){var _0x1d14af=_0x1cafb7[_0x54a2('0x4c')][_0x54a2('0x21')]({'plain':!![]});if(!_0x1d14af)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1d14af[_0x54a2('0x4d')]==='user'){var _0x97049f=_0x1c7403[_0x54a2('0x21')]({'plain':!![]});var _0x2c1068=_0x54a2('0x22');return db['UserProfileSection']['find']({'where':{'name':_0x2c1068,'userProfileId':_0x1d14af['userProfileId']},'raw':!![]})['then'](function(_0x311335){if(_0x311335&&_0x311335['autoAssociation']===0x0){return db[_0x54a2('0x23')][_0x54a2('0x4a')]({'name':_0x97049f[_0x54a2('0x26')],'resourceId':_0x97049f['id'],'type':_0x311335[_0x54a2('0x26')],'sectionId':_0x311335['id']},{})[_0x54a2('0x1f')](function(){return _0x1c7403;});}else{return _0x1c7403;}})['catch'](function(_0x529ac3){logger[_0x54a2('0x24')](_0x54a2('0x4e'),_0x529ac3);throw _0x529ac3;});}return _0x1c7403;})['then'](respondWithResult(_0x410187,0xc9))['catch'](handleError(_0x410187,null));};exports['update']=function(_0x50e8a4,_0x56f1dd){if(_0x50e8a4[_0x54a2('0x4b')]['id']){delete _0x50e8a4[_0x54a2('0x4b')]['id'];}return db[_0x54a2('0x29')][_0x54a2('0x49')]({'where':{'id':_0x50e8a4[_0x54a2('0x45')]['id']}})[_0x54a2('0x1f')](handleEntityNotFound(_0x56f1dd,null))[_0x54a2('0x1f')](saveUpdates(_0x50e8a4[_0x54a2('0x4b')],null))[_0x54a2('0x1f')](respondWithResult(_0x56f1dd,null))[_0x54a2('0x43')](handleError(_0x56f1dd,null));};exports[_0x54a2('0x20')]=function(_0x96671a,_0x24a8e4){return db[_0x54a2('0x29')][_0x54a2('0x49')]({'where':{'id':_0x96671a[_0x54a2('0x45')]['id']}})[_0x54a2('0x1f')](handleEntityNotFound(_0x24a8e4,null))[_0x54a2('0x1f')](removeEntity(_0x24a8e4,null))[_0x54a2('0x43')](handleError(_0x24a8e4,null));};exports['addInterval']=function(_0x2fecbf,_0x1dbb91,_0x138e6c){if(_0x2fecbf['body']['id']){delete _0x2fecbf[_0x54a2('0x4b')]['id'];}return db[_0x54a2('0x29')][_0x54a2('0x49')]({'where':{'id':_0x2fecbf['params']['id']}})['then'](handleEntityNotFound(_0x1dbb91,null))[_0x54a2('0x1f')](function(_0x481669){if(_0x481669){_0x2fecbf[_0x54a2('0x4b')][_0x54a2('0x4f')]=_0x481669['id'];return db[_0x54a2('0x29')][_0x54a2('0x4a')](_0x2fecbf[_0x54a2('0x4b')]);}})['then'](respondWithResult(_0x1dbb91,null))[_0x54a2('0x43')](handleError(_0x1dbb91,null));};exports[_0x54a2('0x50')]=function(_0x53219d,_0x26e45d,_0x1d0873){var _0x27c820={};var _0x406773={};var _0x108104;var _0x154128;return db[_0x54a2('0x29')][_0x54a2('0x51')]({'where':{'id':_0x53219d[_0x54a2('0x45')]['id']}})[_0x54a2('0x1f')](handleEntityNotFound(_0x26e45d,null))[_0x54a2('0x1f')](function(_0x13ff30){if(_0x13ff30){_0x108104=_0x13ff30;_0x406773[_0x54a2('0x2a')]=_[_0x54a2('0x46')](db[_0x54a2('0x29')][_0x54a2('0x47')]);_0x406773[_0x54a2('0x2b')]=_['keys'](_0x53219d[_0x54a2('0x2b')]);_0x406773[_0x54a2('0x2e')]=_['intersection'](_0x406773['model'],_0x406773[_0x54a2('0x2b')]);_0x27c820['attributes']=_['intersection'](_0x406773['model'],qs[_0x54a2('0x30')](_0x53219d[_0x54a2('0x2b')]['fields']));_0x27c820[_0x54a2('0x31')]=_0x27c820[_0x54a2('0x31')]['length']?_0x27c820[_0x54a2('0x31')]:_0x406773['model'];_0x27c820[_0x54a2('0x52')]=qs[_0x54a2('0x33')](_0x53219d[_0x54a2('0x2b')][_0x54a2('0x33')]);_0x27c820['where']=qs['filters'](_[_0x54a2('0x35')](_0x53219d[_0x54a2('0x2b')],_0x406773['filters']));if(_0x53219d[_0x54a2('0x2b')][_0x54a2('0x39')]){_0x27c820[_0x54a2('0x34')]=_[_0x54a2('0x38')](_0x27c820['where'],{'$or':_[_0x54a2('0x3a')](_0x27c820[_0x54a2('0x31')],function(_0x411c91){var _0x1c6d74={};_0x1c6d74[_0x411c91]={'$like':'%'+_0x53219d[_0x54a2('0x2b')][_0x54a2('0x39')]+'%'};return _0x1c6d74;})});}_0x27c820=_['merge']({},_0x27c820,_0x53219d[_0x54a2('0x3e')]);return _0x108104[_0x54a2('0x50')](_0x27c820);}})['then'](function(_0x274a83){if(_0x274a83){_0x154128=_0x274a83[_0x54a2('0x48')];if(!_0x53219d['query'][_0x54a2('0x53')]('nolimit')){_0x27c820[_0x54a2('0x1b')]=qs['limit'](_0x53219d[_0x54a2('0x2b')][_0x54a2('0x1b')]);_0x27c820[_0x54a2('0x1a')]=qs[_0x54a2('0x1a')](_0x53219d[_0x54a2('0x2b')]['offset']);}return _0x108104[_0x54a2('0x50')](_0x27c820);}})[_0x54a2('0x1f')](function(_0x22e31e){if(_0x22e31e){return _0x22e31e?{'count':_0x154128,'rows':_0x22e31e}:null;}})[_0x54a2('0x1f')](respondWithResult(_0x26e45d,null))[_0x54a2('0x43')](handleError(_0x26e45d,null));};exports[_0x54a2('0x54')]=function(_0x1f5feb,_0x5ed184,_0x5c2061){return db[_0x54a2('0x29')][_0x54a2('0x51')]({'where':{'id':_0x1f5feb[_0x54a2('0x45')]['id']}})[_0x54a2('0x1f')](handleEntityNotFound(_0x5ed184,null))[_0x54a2('0x1f')](function(_0x59cb2d){if(_0x59cb2d){return db[_0x54a2('0x55')][_0x54a2('0x56')](function(_0x28d735){return db[_0x54a2('0x29')][_0x54a2('0x20')]({'where':{'IntervalId':_0x1f5feb[_0x54a2('0x45')]['id']},'transaction':_0x28d735})[_0x54a2('0x1f')](function(_0x368753){var _0x5ca696=_[_0x54a2('0x3a')](_0x1f5feb[_0x54a2('0x4b')],function(_0x4fa8fe){delete _0x4fa8fe['id'];_0x4fa8fe['IntervalId']=_0x1f5feb[_0x54a2('0x45')]['id'];return _0x4fa8fe;});return db[_0x54a2('0x29')][_0x54a2('0x57')](_0x5ca696,{'transaction':_0x28d735});});})['then'](function(){return db['Interval'][_0x54a2('0x41')]({'where':{'IntervalId':_0x1f5feb[_0x54a2('0x45')]['id']}});});}})[_0x54a2('0x1f')](respondWithResult(_0x5ed184,null))[_0x54a2('0x43')](handleError(_0x5ed184,null));};
\ No newline at end of file
+var _0xdab2=['day','merge','filter','map','type','key','VIRTUAL','field','rows','catch','show','params','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','IntervalId','getIntervals','findOne','nolimit','sequelize','bulkCreate','findAll','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/logger','api','../../mysqldb','../../components/extensions/rewrite','status','end','count','offset','limit','set','Content-Range','json','apply','save','update','then','Intervals','UserProfileResource','destroy','sendStatus','stack','name','index','Interval','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filters','add'];(function(_0x5bd571,_0x484d47){var _0x93b12a=function(_0x2846ea){while(--_0x2846ea){_0x5bd571['push'](_0x5bd571['shift']());}};_0x93b12a(++_0x484d47);}(_0xdab2,0x130));var _0x2dab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdab2[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0x2dab('0x0'));var emlformat=require(_0x2dab('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x2dab('0x2'));var jsonpatch=require(_0x2dab('0x3'));var rp=require(_0x2dab('0x4'));var moment=require(_0x2dab('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2dab('0x6'));var util=require(_0x2dab('0x7'));var path=require(_0x2dab('0x8'));var sox=require(_0x2dab('0x9'));var csv=require(_0x2dab('0xa'));var ejs=require(_0x2dab('0xb'));var fs=require('fs');var _=require(_0x2dab('0xc'));var squel=require(_0x2dab('0xd'));var crypto=require(_0x2dab('0xe'));var jsforce=require(_0x2dab('0xf'));var deskjs=require(_0x2dab('0x10'));var toCsv=require(_0x2dab('0xa'));var querystring=require(_0x2dab('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0x2dab('0x12'));var logger=require(_0x2dab('0x13'))(_0x2dab('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x2dab('0x15'))['db'];var extensions=require(_0x2dab('0x16'));function respondWithStatusCode(_0x2c4560,_0x1e6b24){_0x1e6b24=_0x1e6b24||0xcc;return function(_0x268d4b){if(_0x268d4b){return _0x2c4560['sendStatus'](_0x1e6b24);}return _0x2c4560[_0x2dab('0x17')](_0x1e6b24)[_0x2dab('0x18')]();};}function respondWithResult(_0x4b47e1,_0x11a7f5){_0x11a7f5=_0x11a7f5||0xc8;return function(_0x1bd1d2){if(_0x1bd1d2){return _0x4b47e1[_0x2dab('0x17')](_0x11a7f5)['json'](_0x1bd1d2);}};}function respondWithFilteredResult(_0x4040d8,_0x149867){return function(_0x50b496){if(_0x50b496){var _0x3c00b1=_0x50b496[_0x2dab('0x19')],_0x15a9e7=_0x149867['offset'],_0x3e8613=_0x149867[_0x2dab('0x1a')]+_0x149867[_0x2dab('0x1b')],_0x2f64c8;if(_0x3e8613>=_0x3c00b1){_0x3e8613=_0x3c00b1;_0x2f64c8=0xc8;}else{_0x2f64c8=0xce;}_0x4040d8[_0x2dab('0x17')](_0x2f64c8);return _0x4040d8[_0x2dab('0x1c')](_0x2dab('0x1d'),_0x15a9e7+'-'+_0x3e8613+'/'+_0x3c00b1)[_0x2dab('0x1e')](_0x50b496);}return null;};}function patchUpdates(_0x4ff9be){return function(_0x9436f0){try{jsonpatch[_0x2dab('0x1f')](_0x9436f0,_0x4ff9be,!![]);}catch(_0x2ad762){return BPromise['reject'](_0x2ad762);}return _0x9436f0[_0x2dab('0x20')]();};}function saveUpdates(_0x46de22,_0x3acee3){return function(_0x5b45b9){if(_0x5b45b9){return _0x5b45b9[_0x2dab('0x21')](_0x46de22)[_0x2dab('0x22')](function(_0x114697){return _0x114697;});}return null;};}function removeEntity(_0x37a4c0,_0x2225dd){return function(_0x1987c2){if(_0x1987c2){return _0x1987c2['destroy']()[_0x2dab('0x22')](function(){var _0x321469=_0x1987c2['get']({'plain':!![]});var _0x2d1032=_0x2dab('0x23');return db[_0x2dab('0x24')][_0x2dab('0x25')]({'where':{'type':_0x2d1032,'resourceId':_0x321469['id']}})[_0x2dab('0x22')](function(){return _0x1987c2;});})[_0x2dab('0x22')](function(){_0x37a4c0[_0x2dab('0x17')](0xcc)[_0x2dab('0x18')]();});}};}function handleEntityNotFound(_0xb01e46,_0x1b1c5b){return function(_0x50153d){if(!_0x50153d){_0xb01e46[_0x2dab('0x26')](0x194);}return _0x50153d;};}function handleError(_0x485443,_0xbe611){_0xbe611=_0xbe611||0x1f4;return function(_0x11454f){logger['error'](_0x11454f[_0x2dab('0x27')]);if(_0x11454f[_0x2dab('0x28')]){delete _0x11454f[_0x2dab('0x28')];}_0x485443[_0x2dab('0x17')](_0xbe611)['send'](_0x11454f);};}exports[_0x2dab('0x29')]=function(_0x26d6d2,_0xa93e){var _0x2b15c0={},_0x31cde1={},_0x577a09={'count':0x0,'rows':[]};var _0x39a899=db[_0x2dab('0x2a')][_0x2dab('0x2b')];_0x31cde1[_0x2dab('0x2c')]=_[_0x2dab('0x2d')](_0x39a899);var _0x11582d={'dateStart':_0x26d6d2[_0x2dab('0x2e')][_0x2dab('0x2f')],'dateEnd':_0x26d6d2[_0x2dab('0x2e')]['dateEnd']};delete _0x26d6d2['query']['dateStart'];delete _0x26d6d2[_0x2dab('0x2e')][_0x2dab('0x30')];_0x31cde1[_0x2dab('0x2e')]=_[_0x2dab('0x2d')](_0x26d6d2[_0x2dab('0x2e')]);_0x31cde1['filters']=_[_0x2dab('0x31')](_0x31cde1['model'],_0x31cde1['query']);_0x2b15c0['attributes']=_[_0x2dab('0x31')](_0x31cde1[_0x2dab('0x2c')],qs['fields'](_0x26d6d2['query'][_0x2dab('0x32')]));_0x2b15c0[_0x2dab('0x33')]=_0x2b15c0[_0x2dab('0x33')][_0x2dab('0x34')]?_0x2b15c0[_0x2dab('0x33')]:_0x31cde1[_0x2dab('0x2c')];if(!_0x26d6d2['query'][_0x2dab('0x35')]('nolimit')){_0x2b15c0[_0x2dab('0x1b')]=qs[_0x2dab('0x1b')](_0x26d6d2[_0x2dab('0x2e')][_0x2dab('0x1b')]);_0x2b15c0[_0x2dab('0x1a')]=qs[_0x2dab('0x1a')](_0x26d6d2['query']['offset']);}_0x2b15c0[_0x2dab('0x36')]=qs[_0x2dab('0x37')](_0x26d6d2[_0x2dab('0x2e')][_0x2dab('0x37')]);_0x2b15c0[_0x2dab('0x38')]=qs['filters'](_[_0x2dab('0x39')](_0x26d6d2[_0x2dab('0x2e')],_0x31cde1[_0x2dab('0x3a')]));if(_0x11582d[_0x2dab('0x2f')]){if(_0x11582d[_0x2dab('0x30')]){_0x11582d[_0x2dab('0x30')]=moment(_0x11582d[_0x2dab('0x30')])[_0x2dab('0x3b')](0x1,_0x2dab('0x3c'));}else{_0x11582d[_0x2dab('0x30')]=moment(_0x11582d[_0x2dab('0x2f')])[_0x2dab('0x3b')](0x1,'day');}_[_0x2dab('0x3d')](_0x2b15c0['where'],{'createdAt':{'$gte':_0x11582d[_0x2dab('0x2f')],'$lte':_0x11582d['dateEnd']}});}if(_0x26d6d2['query'][_0x2dab('0x3e')]){_0x2b15c0[_0x2dab('0x38')]=_[_0x2dab('0x3d')](_0x2b15c0['where'],{'$or':_[_0x2dab('0x3f')](_0x39a899,function(_0x19c521){if(_0x19c521[_0x2dab('0x40')][_0x2dab('0x41')]!==_0x2dab('0x42')){var _0x2be2f4={};_0x2be2f4[_0x19c521[_0x2dab('0x43')]]={'$like':'%'+_0x26d6d2[_0x2dab('0x2e')][_0x2dab('0x3e')]+'%'};return _0x2be2f4;}})});}_0x2b15c0=_[_0x2dab('0x3d')]({},_0x2b15c0,_0x26d6d2['options']);var _0x1b6c87={'where':_0x2b15c0['where']};return db['Interval'][_0x2dab('0x19')](_0x1b6c87)[_0x2dab('0x22')](function(_0xd53d79){_0x577a09['count']=_0xd53d79;if(_0x26d6d2['query']['includeAll']){_0x2b15c0['include']=[{'all':!![]}];}return db[_0x2dab('0x2a')]['findAll'](_0x2b15c0);})[_0x2dab('0x22')](function(_0x371545){_0x577a09[_0x2dab('0x44')]=_0x371545;return _0x577a09;})[_0x2dab('0x22')](respondWithFilteredResult(_0xa93e,_0x2b15c0))[_0x2dab('0x45')](handleError(_0xa93e,null));};exports[_0x2dab('0x46')]=function(_0x531bbc,_0x2e22fa){var _0x139438={'raw':!![],'where':{'id':_0x531bbc[_0x2dab('0x47')]['id']}},_0x590439={};_0x590439[_0x2dab('0x2c')]=_['keys'](db['Interval'][_0x2dab('0x2b')]);_0x590439[_0x2dab('0x2e')]=_[_0x2dab('0x2d')](_0x531bbc[_0x2dab('0x2e')]);_0x590439['filters']=_[_0x2dab('0x31')](_0x590439[_0x2dab('0x2c')],_0x590439['query']);_0x139438[_0x2dab('0x33')]=_[_0x2dab('0x31')](_0x590439[_0x2dab('0x2c')],qs[_0x2dab('0x32')](_0x531bbc[_0x2dab('0x2e')][_0x2dab('0x32')]));_0x139438[_0x2dab('0x33')]=_0x139438[_0x2dab('0x33')][_0x2dab('0x34')]?_0x139438['attributes']:_0x590439['model'];if(_0x531bbc['query']['includeAll']){_0x139438['include']=[{'all':!![]}];}_0x139438=_[_0x2dab('0x3d')]({},_0x139438,_0x531bbc[_0x2dab('0x48')]);return db[_0x2dab('0x2a')]['find'](_0x139438)[_0x2dab('0x22')](handleEntityNotFound(_0x2e22fa,null))[_0x2dab('0x22')](respondWithResult(_0x2e22fa,null))[_0x2dab('0x45')](handleError(_0x2e22fa,null));};exports['create']=function(_0x1740fc,_0x5bee18){return db[_0x2dab('0x2a')][_0x2dab('0x49')](_0x1740fc[_0x2dab('0x4a')],{})[_0x2dab('0x22')](function(_0x251cd6){var _0x5cec3f=_0x1740fc[_0x2dab('0x4b')][_0x2dab('0x4c')]({'plain':!![]});if(!_0x5cec3f)throw new Error(_0x2dab('0x4d'));if(_0x5cec3f['role']==='user'){var _0x580a33=_0x251cd6[_0x2dab('0x4c')]({'plain':!![]});var _0x2509a7='Intervals';return db[_0x2dab('0x4e')][_0x2dab('0x4f')]({'where':{'name':_0x2509a7,'userProfileId':_0x5cec3f[_0x2dab('0x50')]},'raw':!![]})['then'](function(_0x271c24){if(_0x271c24&&_0x271c24[_0x2dab('0x51')]===0x0){return db[_0x2dab('0x24')][_0x2dab('0x49')]({'name':_0x580a33[_0x2dab('0x28')],'resourceId':_0x580a33['id'],'type':_0x271c24[_0x2dab('0x28')],'sectionId':_0x271c24['id']},{})['then'](function(){return _0x251cd6;});}else{return _0x251cd6;}})[_0x2dab('0x45')](function(_0x486fb7){logger[_0x2dab('0x52')](_0x2dab('0x53'),_0x486fb7);throw _0x486fb7;});}return _0x251cd6;})['then'](respondWithResult(_0x5bee18,0xc9))[_0x2dab('0x45')](handleError(_0x5bee18,null));};exports[_0x2dab('0x21')]=function(_0x3e049f,_0x3713bf){if(_0x3e049f[_0x2dab('0x4a')]['id']){delete _0x3e049f[_0x2dab('0x4a')]['id'];}return db['Interval']['find']({'where':{'id':_0x3e049f[_0x2dab('0x47')]['id']}})[_0x2dab('0x22')](handleEntityNotFound(_0x3713bf,null))[_0x2dab('0x22')](saveUpdates(_0x3e049f[_0x2dab('0x4a')],null))[_0x2dab('0x22')](respondWithResult(_0x3713bf,null))['catch'](handleError(_0x3713bf,null));};exports['destroy']=function(_0x1e3e0c,_0x4ef191){return db[_0x2dab('0x2a')]['find']({'where':{'id':_0x1e3e0c[_0x2dab('0x47')]['id']}})[_0x2dab('0x22')](handleEntityNotFound(_0x4ef191,null))[_0x2dab('0x22')](removeEntity(_0x4ef191,null))[_0x2dab('0x45')](handleError(_0x4ef191,null));};exports['addInterval']=function(_0x289087,_0x3ebec5,_0x4fcb75){if(_0x289087[_0x2dab('0x4a')]['id']){delete _0x289087[_0x2dab('0x4a')]['id'];}return db['Interval'][_0x2dab('0x4f')]({'where':{'id':_0x289087['params']['id']}})[_0x2dab('0x22')](handleEntityNotFound(_0x3ebec5,null))[_0x2dab('0x22')](function(_0x22b618){if(_0x22b618){_0x289087[_0x2dab('0x4a')][_0x2dab('0x54')]=_0x22b618['id'];return db[_0x2dab('0x2a')][_0x2dab('0x49')](_0x289087[_0x2dab('0x4a')]);}})[_0x2dab('0x22')](respondWithResult(_0x3ebec5,null))[_0x2dab('0x45')](handleError(_0x3ebec5,null));};exports[_0x2dab('0x55')]=function(_0x4bad64,_0x47ad1a,_0x4eed66){var _0x3d09d8={};var _0x28605f={};var _0x38b0e3;var _0x2ac43b;return db[_0x2dab('0x2a')][_0x2dab('0x56')]({'where':{'id':_0x4bad64[_0x2dab('0x47')]['id']}})[_0x2dab('0x22')](handleEntityNotFound(_0x47ad1a,null))[_0x2dab('0x22')](function(_0x4bd2c8){if(_0x4bd2c8){_0x38b0e3=_0x4bd2c8;_0x28605f['model']=_['keys'](db['Interval']['rawAttributes']);_0x28605f[_0x2dab('0x2e')]=_[_0x2dab('0x2d')](_0x4bad64[_0x2dab('0x2e')]);_0x28605f[_0x2dab('0x3a')]=_['intersection'](_0x28605f[_0x2dab('0x2c')],_0x28605f['query']);_0x3d09d8[_0x2dab('0x33')]=_[_0x2dab('0x31')](_0x28605f[_0x2dab('0x2c')],qs[_0x2dab('0x32')](_0x4bad64[_0x2dab('0x2e')][_0x2dab('0x32')]));_0x3d09d8[_0x2dab('0x33')]=_0x3d09d8[_0x2dab('0x33')][_0x2dab('0x34')]?_0x3d09d8['attributes']:_0x28605f[_0x2dab('0x2c')];_0x3d09d8['order']=qs[_0x2dab('0x37')](_0x4bad64['query']['sort']);_0x3d09d8[_0x2dab('0x38')]=qs[_0x2dab('0x3a')](_[_0x2dab('0x39')](_0x4bad64[_0x2dab('0x2e')],_0x28605f[_0x2dab('0x3a')]));if(_0x4bad64[_0x2dab('0x2e')][_0x2dab('0x3e')]){_0x3d09d8[_0x2dab('0x38')]=_[_0x2dab('0x3d')](_0x3d09d8[_0x2dab('0x38')],{'$or':_[_0x2dab('0x3f')](_0x3d09d8[_0x2dab('0x33')],function(_0x40ea59){var _0xbf3a60={};_0xbf3a60[_0x40ea59]={'$like':'%'+_0x4bad64[_0x2dab('0x2e')]['filter']+'%'};return _0xbf3a60;})});}_0x3d09d8=_[_0x2dab('0x3d')]({},_0x3d09d8,_0x4bad64[_0x2dab('0x48')]);return _0x38b0e3[_0x2dab('0x55')](_0x3d09d8);}})[_0x2dab('0x22')](function(_0x1fe75a){if(_0x1fe75a){_0x2ac43b=_0x1fe75a[_0x2dab('0x34')];if(!_0x4bad64['query'][_0x2dab('0x35')](_0x2dab('0x57'))){_0x3d09d8['limit']=qs[_0x2dab('0x1b')](_0x4bad64['query'][_0x2dab('0x1b')]);_0x3d09d8[_0x2dab('0x1a')]=qs['offset'](_0x4bad64['query']['offset']);}return _0x38b0e3['getIntervals'](_0x3d09d8);}})[_0x2dab('0x22')](function(_0x1a92c0){if(_0x1a92c0){return _0x1a92c0?{'count':_0x2ac43b,'rows':_0x1a92c0}:null;}})[_0x2dab('0x22')](respondWithResult(_0x47ad1a,null))['catch'](handleError(_0x47ad1a,null));};exports['addIntervals']=function(_0x2ad42a,_0x4abb09,_0xf8aae){return db[_0x2dab('0x2a')][_0x2dab('0x56')]({'where':{'id':_0x2ad42a[_0x2dab('0x47')]['id']}})[_0x2dab('0x22')](handleEntityNotFound(_0x4abb09,null))['then'](function(_0x4606d9){if(_0x4606d9){return db[_0x2dab('0x58')]['transaction'](function(_0x36b882){return db['Interval'][_0x2dab('0x25')]({'where':{'IntervalId':_0x2ad42a[_0x2dab('0x47')]['id']},'transaction':_0x36b882})['then'](function(_0x4aa6d1){var _0x56e9d6=_[_0x2dab('0x3f')](_0x2ad42a[_0x2dab('0x4a')],function(_0x215536){delete _0x215536['id'];_0x215536[_0x2dab('0x54')]=_0x2ad42a[_0x2dab('0x47')]['id'];return _0x215536;});return db[_0x2dab('0x2a')][_0x2dab('0x59')](_0x56e9d6,{'transaction':_0x36b882});});})[_0x2dab('0x22')](function(){return db[_0x2dab('0x2a')][_0x2dab('0x5a')]({'where':{'IntervalId':_0x2ad42a['params']['id']}});});}})['then'](respondWithResult(_0x4abb09,null))[_0x2dab('0x45')](handleError(_0x4abb09,null));};
\ No newline at end of file
index 5b598c9..e74c769 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafe3=['define','Interval','tools_intervals','rewrite','util','../../config/logger','api','moment','request-promise','../../components/extensions/rewrite','exports'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xafe3,0x1dd));var _0x3afe=function(_0x1dfa57,_0x4d982d){_0x1dfa57=_0x1dfa57-0x0;var _0x5ad5d5=_0xafe3[_0x1dfa57];return _0x5ad5d5;};'use strict';var _=require('lodash');var util=require(_0x3afe('0x0'));var logger=require(_0x3afe('0x1'))(_0x3afe('0x2'));var moment=require(_0x3afe('0x3'));var BPromise=require('bluebird');var rp=require(_0x3afe('0x4'));var attributes=require('./interval.attributes');var extensions=require(_0x3afe('0x5'));module[_0x3afe('0x6')]=function(_0x34a5b0,_0x5e5625){return _0x34a5b0[_0x3afe('0x7')](_0x3afe('0x8'),attributes,{'tableName':_0x3afe('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x33e5b6,_0x4d71b6){extensions['rewrite'](_0x34a5b0,_0x33e5b6);},'afterBulkCreate':function(_0x4960a3,_0x3be117,_0x4c6cc8){_0x4c6cc8();extensions[_0x3afe('0xa')](_0x34a5b0,_0x4960a3[0x0]);},'afterUpdate':function(_0x155065,_0x3f1276){extensions[_0x3afe('0xa')](_0x34a5b0,_0x155065);},'afterDestroy':function(_0x5194f9,_0x2e5631){extensions['rewrite'](_0x34a5b0,_0x5194f9);}}});};
\ No newline at end of file
+var _0xe73f=['util','api','moment','bluebird','request-promise','./interval.attributes','tools_intervals','rewrite','lodash'];(function(_0x166742,_0x55520c){var _0xb7814a=function(_0x18feaf){while(--_0x18feaf){_0x166742['push'](_0x166742['shift']());}};_0xb7814a(++_0x55520c);}(_0xe73f,0x8f));var _0xfe73=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xe73f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xfe73('0x0'));var util=require(_0xfe73('0x1'));var logger=require('../../config/logger')(_0xfe73('0x2'));var moment=require(_0xfe73('0x3'));var BPromise=require(_0xfe73('0x4'));var rp=require(_0xfe73('0x5'));var attributes=require(_0xfe73('0x6'));var extensions=require('../../components/extensions/rewrite');module['exports']=function(_0x17fe43,_0x35c827){return _0x17fe43['define']('Interval',attributes,{'tableName':_0xfe73('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2acd09,_0x55cd2b){extensions[_0xfe73('0x8')](_0x17fe43,_0x2acd09);},'afterBulkCreate':function(_0x31c4f9,_0x4bcff8,_0x459226){_0x459226();extensions['rewrite'](_0x17fe43,_0x31c4f9[0x0]);},'afterUpdate':function(_0x3e0e88,_0x54a071){extensions[_0xfe73('0x8')](_0x17fe43,_0x3e0e88);},'afterDestroy':function(_0x16e67e,_0x1a4a5c){extensions['rewrite'](_0x17fe43,_0x16e67e);}}});};
\ No newline at end of file
index 0029979..5e837b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3435=['info','GetInterval','stringify','ShowInterval','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','request','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','Interval','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0x7513d6,_0x469564){var _0x31802f=function(_0x39335d){while(--_0x39335d){_0x7513d6['push'](_0x7513d6['shift']());}};_0x31802f(++_0x469564);}(_0x3435,0xfa));var _0x5343=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0x3435[_0x4792c8];return _0x35edb1;};'use strict';var _=require(_0x5343('0x0'));var util=require(_0x5343('0x1'));var moment=require(_0x5343('0x2'));var BPromise=require(_0x5343('0x3'));var rs=require(_0x5343('0x4'));var fs=require('fs');var Redis=require(_0x5343('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5343('0x6'));var logger=require(_0x5343('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5343('0x8'));var client=jayson[_0x5343('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x544b29,_0x13641f,_0x1e1911){return new BPromise(function(_0x9ea9b6,_0x245034){return client[_0x5343('0xa')](_0x544b29,_0x1e1911)['then'](function(_0x44421c){logger['info'](_0x5343('0xb'),_0x13641f,_0x5343('0xc'));logger[_0x5343('0xd')](_0x5343('0xe'),_0x13641f,_0x5343('0xc'),JSON['stringify'](_0x44421c));if(_0x44421c[_0x5343('0xf')]){if(_0x44421c[_0x5343('0xf')][_0x5343('0x10')]===0x1f4){logger['error'](_0x5343('0xb'),_0x13641f,_0x44421c['error'][_0x5343('0x11')]);return _0x245034(_0x44421c[_0x5343('0xf')]['message']);}logger[_0x5343('0xf')]('Interval,\x20%s,\x20%s',_0x13641f,_0x44421c[_0x5343('0xf')][_0x5343('0x11')]);return _0x9ea9b6(_0x44421c[_0x5343('0xf')][_0x5343('0x11')]);}else{logger['info'](_0x5343('0xb'),_0x13641f,_0x5343('0xc'));_0x9ea9b6(_0x44421c[_0x5343('0x12')][_0x5343('0x11')]);}})[_0x5343('0x13')](function(_0x2913e8){logger[_0x5343('0xf')](_0x5343('0xb'),_0x13641f,_0x2913e8);_0x245034(_0x2913e8);});});}exports['GetInterval']=function(_0x432992){var _0xec1ba0=this;return new Promise(function(_0x1f5098,_0x489e1c){return db[_0x5343('0x14')][_0x5343('0x15')]({'raw':_0x432992[_0x5343('0x16')]?_0x432992[_0x5343('0x16')][_0x5343('0x17')]===undefined?!![]:![]:!![],'where':_0x432992[_0x5343('0x16')]?_0x432992[_0x5343('0x16')][_0x5343('0x18')]||null:null,'attributes':_0x432992[_0x5343('0x16')]?_0x432992['options'][_0x5343('0x19')]||null:null,'limit':_0x432992[_0x5343('0x16')]?_0x432992[_0x5343('0x16')][_0x5343('0x1a')]||null:null,'include':_0x432992[_0x5343('0x16')]?_0x432992['options'][_0x5343('0x1b')]?_[_0x5343('0x1c')](_0x432992[_0x5343('0x16')][_0x5343('0x1b')],function(_0x290ce8){return{'model':db[_0x290ce8['model']],'as':_0x290ce8['as'],'attributes':_0x290ce8[_0x5343('0x19')],'include':_0x290ce8[_0x5343('0x1b')]?_['map'](_0x290ce8[_0x5343('0x1b')],function(_0x96bbf6){return{'model':db[_0x96bbf6[_0x5343('0x1d')]],'as':_0x96bbf6['as'],'attributes':_0x96bbf6['attributes'],'include':_0x96bbf6['include']?_[_0x5343('0x1c')](_0x96bbf6['include'],function(_0x14d05a){return{'model':db[_0x14d05a['model']],'as':_0x14d05a['as'],'attributes':_0x14d05a[_0x5343('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x50c584){logger[_0x5343('0x1e')](_0x5343('0x1f'),_0x432992);logger['debug']('GetInterval',_0x432992,JSON[_0x5343('0x20')](_0x50c584));_0x1f5098(_0x50c584);})['catch'](function(_0x2ed8c9){logger['error']('GetInterval',_0x2ed8c9[_0x5343('0x11')],_0x432992);_0x489e1c(_0xec1ba0['error'](0x1f4,_0x2ed8c9['message']));});});};exports[_0x5343('0x21')]=function(_0x250788){var _0x2f446b=this;return new Promise(function(_0x249059,_0x4a31e8){return db['Interval'][_0x5343('0x22')]({'raw':_0x250788[_0x5343('0x16')]?_0x250788[_0x5343('0x16')][_0x5343('0x17')]===undefined?!![]:![]:!![],'where':_0x250788[_0x5343('0x16')]?_0x250788[_0x5343('0x16')][_0x5343('0x18')]||null:null,'attributes':_0x250788[_0x5343('0x16')]?_0x250788[_0x5343('0x16')][_0x5343('0x19')]||null:null,'include':_0x250788[_0x5343('0x16')]?_0x250788[_0x5343('0x16')]['include']?_['map'](_0x250788[_0x5343('0x16')][_0x5343('0x1b')],function(_0x501083){return{'model':db[_0x501083[_0x5343('0x1d')]],'as':_0x501083['as'],'attributes':_0x501083['attributes'],'include':_0x501083[_0x5343('0x1b')]?_[_0x5343('0x1c')](_0x501083[_0x5343('0x1b')],function(_0xcb89df){return{'model':db[_0xcb89df['model']],'as':_0xcb89df['as'],'attributes':_0xcb89df['attributes'],'include':_0xcb89df[_0x5343('0x1b')]?_['map'](_0xcb89df[_0x5343('0x1b')],function(_0x11954b){return{'model':db[_0x11954b['model']],'as':_0x11954b['as'],'attributes':_0x11954b[_0x5343('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x487250){logger[_0x5343('0x1e')](_0x5343('0x21'),_0x250788);logger[_0x5343('0xd')](_0x5343('0x21'),_0x250788,JSON['stringify'](_0x487250));_0x249059(_0x487250);})['catch'](function(_0x5a0663){logger['error'](_0x5343('0x21'),_0x5a0663[_0x5343('0x11')],_0x250788);_0x4a31e8(_0x2f446b[_0x5343('0xf')](0x1f4,_0x5a0663[_0x5343('0x11')]));});});};
\ No newline at end of file
+var _0x5292=['info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetInterval','Interval','findAll','options','where','attributes','include','map','model','then','catch','raw','ShowInterval','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','request'];(function(_0x280436,_0xf4e795){var _0xc71df1=function(_0x3ca417){while(--_0x3ca417){_0x280436['push'](_0x280436['shift']());}};_0xc71df1(++_0xf4e795);}(_0x5292,0xf7));var _0x2529=function(_0x8a2dae,_0x2a21a7){_0x8a2dae=_0x8a2dae-0x0;var _0x308f20=_0x5292[_0x8a2dae];return _0x308f20;};'use strict';var _=require(_0x2529('0x0'));var util=require(_0x2529('0x1'));var moment=require('moment');var BPromise=require(_0x2529('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2529('0x3'));var db=require(_0x2529('0x4'))['db'];var utils=require(_0x2529('0x5'));var logger=require(_0x2529('0x6'))('rpc');var config=require(_0x2529('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x407277,_0x43cbef,_0x5bb8a1){return new BPromise(function(_0x5c3355,_0x395ba9){return client[_0x2529('0x8')](_0x407277,_0x5bb8a1)['then'](function(_0xa234ac){logger[_0x2529('0x9')](_0x2529('0xa'),_0x43cbef,_0x2529('0xb'));logger[_0x2529('0xc')](_0x2529('0xd'),_0x43cbef,_0x2529('0xb'),JSON[_0x2529('0xe')](_0xa234ac));if(_0xa234ac['error']){if(_0xa234ac[_0x2529('0xf')][_0x2529('0x10')]===0x1f4){logger['error'](_0x2529('0xa'),_0x43cbef,_0xa234ac[_0x2529('0xf')][_0x2529('0x11')]);return _0x395ba9(_0xa234ac[_0x2529('0xf')][_0x2529('0x11')]);}logger[_0x2529('0xf')](_0x2529('0xa'),_0x43cbef,_0xa234ac['error'][_0x2529('0x11')]);return _0x5c3355(_0xa234ac[_0x2529('0xf')][_0x2529('0x11')]);}else{logger[_0x2529('0x9')](_0x2529('0xa'),_0x43cbef,_0x2529('0xb'));_0x5c3355(_0xa234ac[_0x2529('0x12')][_0x2529('0x11')]);}})['catch'](function(_0x163bf4){logger['error'](_0x2529('0xa'),_0x43cbef,_0x163bf4);_0x395ba9(_0x163bf4);});});}exports[_0x2529('0x13')]=function(_0x89be58){var _0x49aa27=this;return new Promise(function(_0x5b4d0d,_0xed24cf){return db[_0x2529('0x14')][_0x2529('0x15')]({'raw':_0x89be58[_0x2529('0x16')]?_0x89be58[_0x2529('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x89be58[_0x2529('0x16')]?_0x89be58[_0x2529('0x16')][_0x2529('0x17')]||null:null,'attributes':_0x89be58[_0x2529('0x16')]?_0x89be58['options'][_0x2529('0x18')]||null:null,'limit':_0x89be58[_0x2529('0x16')]?_0x89be58[_0x2529('0x16')]['limit']||null:null,'include':_0x89be58[_0x2529('0x16')]?_0x89be58[_0x2529('0x16')][_0x2529('0x19')]?_[_0x2529('0x1a')](_0x89be58['options'][_0x2529('0x19')],function(_0x2d0c6d){return{'model':db[_0x2d0c6d[_0x2529('0x1b')]],'as':_0x2d0c6d['as'],'attributes':_0x2d0c6d[_0x2529('0x18')],'include':_0x2d0c6d[_0x2529('0x19')]?_[_0x2529('0x1a')](_0x2d0c6d['include'],function(_0x5539ef){return{'model':db[_0x5539ef[_0x2529('0x1b')]],'as':_0x5539ef['as'],'attributes':_0x5539ef[_0x2529('0x18')],'include':_0x5539ef[_0x2529('0x19')]?_[_0x2529('0x1a')](_0x5539ef[_0x2529('0x19')],function(_0x2a8371){return{'model':db[_0x2a8371[_0x2529('0x1b')]],'as':_0x2a8371['as'],'attributes':_0x2a8371[_0x2529('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2529('0x1c')](function(_0x113df6){logger['info'](_0x2529('0x13'),_0x89be58);logger[_0x2529('0xc')]('GetInterval',_0x89be58,JSON[_0x2529('0xe')](_0x113df6));_0x5b4d0d(_0x113df6);})[_0x2529('0x1d')](function(_0x5bea2d){logger[_0x2529('0xf')](_0x2529('0x13'),_0x5bea2d['message'],_0x89be58);_0xed24cf(_0x49aa27[_0x2529('0xf')](0x1f4,_0x5bea2d[_0x2529('0x11')]));});});};exports['ShowInterval']=function(_0x96bd62){var _0x24e437=this;return new Promise(function(_0x3c2dba,_0x203acb){return db[_0x2529('0x14')]['find']({'raw':_0x96bd62[_0x2529('0x16')]?_0x96bd62[_0x2529('0x16')][_0x2529('0x1e')]===undefined?!![]:![]:!![],'where':_0x96bd62[_0x2529('0x16')]?_0x96bd62[_0x2529('0x16')][_0x2529('0x17')]||null:null,'attributes':_0x96bd62[_0x2529('0x16')]?_0x96bd62['options']['attributes']||null:null,'include':_0x96bd62[_0x2529('0x16')]?_0x96bd62['options'][_0x2529('0x19')]?_['map'](_0x96bd62['options']['include'],function(_0x30cdfb){return{'model':db[_0x30cdfb[_0x2529('0x1b')]],'as':_0x30cdfb['as'],'attributes':_0x30cdfb[_0x2529('0x18')],'include':_0x30cdfb['include']?_[_0x2529('0x1a')](_0x30cdfb['include'],function(_0x585ab5){return{'model':db[_0x585ab5['model']],'as':_0x585ab5['as'],'attributes':_0x585ab5[_0x2529('0x18')],'include':_0x585ab5[_0x2529('0x19')]?_[_0x2529('0x1a')](_0x585ab5[_0x2529('0x19')],function(_0x42551b){return{'model':db[_0x42551b[_0x2529('0x1b')]],'as':_0x42551b['as'],'attributes':_0x42551b[_0x2529('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2529('0x1c')](function(_0xd6e419){logger[_0x2529('0x9')](_0x2529('0x1f'),_0x96bd62);logger[_0x2529('0xc')](_0x2529('0x1f'),_0x96bd62,JSON['stringify'](_0xd6e419));_0x3c2dba(_0xd6e419);})['catch'](function(_0xadb4a2){logger[_0x2529('0xf')]('ShowInterval',_0xadb4a2[_0x2529('0x11')],_0x96bd62);_0x203acb(_0x24e437[_0x2529('0xf')](0x1f4,_0xadb4a2[_0x2529('0x11')]));});});};
\ No newline at end of file
index eec8c55..7a9e1a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x277107,_0x3420dc){var _0x1da046=function(_0x47122d){while(--_0x47122d){_0x277107['push'](_0x277107['shift']());}};_0x1da046(++_0x3420dc);}(_0x5f66,0x1a0));var _0x65f6=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x5f66[_0x580576];return _0x3f55a0;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
+var _0xb10b=['./jira.controller','post','send','exports','express','../../components/auth/service'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xb10b,0x12a));var _0xbb10=function(_0x110924,_0x1374bb){_0x110924=_0x110924-0x0;var _0x12905b=_0xb10b[_0x110924];return _0x12905b;};'use strict';var express=require(_0xbb10('0x0'));var router=express['Router']();var auth=require(_0xbb10('0x1'));var controller=require(_0xbb10('0x2'));router[_0xbb10('0x3')]('/',auth['isAuthenticated'](),controller[_0xbb10('0x4')]);module[_0xbb10('0x5')]=router;
\ No newline at end of file
index 4e396c6..8cfbb9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','body','headers','x-forwarded-for','connection','remoteAddress','socket','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','/rest/api/2/issue','POST','Basic\x20','base64','request','setEncoding','utf8','data','end','status','statusCode','json','parse','error'];(function(_0x45ec6b,_0x32134f){var _0x496c8a=function(_0x19689e){while(--_0x19689e){_0x45ec6b['push'](_0x45ec6b['shift']());}};_0x496c8a(++_0x32134f);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var https=require('https');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var USERNAME=_0x3071('0x2');var PASSWORD=_0x3071('0x3');function openIssue(_0x864539,_0x52b5fb){var _0x2c547f={'fields':{'project':{'key':_0x864539[_0x3071('0x4')]||_0x3071('0x5')},'summary':(_0x864539[_0x3071('0x6')]||_0x3071('0x7'))+_0x3071('0x8')+_0x864539['ip'],'description':_0x864539[_0x3071('0x9')]||JSON[_0x3071('0xa')](_0x864539),'issuetype':{'name':_0x864539[_0x3071('0xb')]||_0x3071('0xc')}}};_0x2c547f[_0x3071('0xd')][_0x3071('0xe')]=_0x864539[_0x3071('0xf')];_0x2c547f['fields'][_0x3071('0x10')]=_0x864539[_0x3071('0x11')];_0x2c547f[_0x3071('0xd')][_0x3071('0x12')]=_0x864539[_0x3071('0x13')];_0x2c547f['fields'][_0x3071('0x14')]=_0x864539[_0x3071('0x15')];_0x2c547f[_0x3071('0xd')][_0x3071('0x16')]=_0x864539[_0x3071('0x17')];_0x2c547f['fields']['customfield_10102']=_0x864539['ip'];var _0x1826ca={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x3071('0x18'),'method':_0x3071('0x19'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0x3071('0x1a')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x3071('0x1b'))}};var _0x45c93b=JSON[_0x3071('0xa')](_0x2c547f);var _0x1f14e1=https[_0x3071('0x1c')](_0x1826ca,function(_0x2a6a4b){_0x2a6a4b[_0x3071('0x1d')](_0x3071('0x1e'));var _0x21aad3='';_0x2a6a4b['on'](_0x3071('0x1f'),function(_0x5f3c22){_0x21aad3+=_0x5f3c22;});_0x2a6a4b['on'](_0x3071('0x20'),function(){if(_0x52b5fb){return _0x52b5fb[_0x3071('0x21')](_0x2a6a4b[_0x3071('0x22')])[_0x3071('0x23')](JSON[_0x3071('0x24')](_0x21aad3));}});});_0x1f14e1['on'](_0x3071('0x25'),function(_0x105bbb){if(_0x52b5fb){return _0x52b5fb[_0x3071('0x21')](0x1f4)['json']({'errors':[{'message':_0x3071('0x26'),'type':_0x3071('0x27')}]});}});_0x1f14e1[_0x3071('0x28')](_0x45c93b);_0x1f14e1['end']();}exports[_0x3071('0x29')]=openIssue;exports['send']=function(_0x833074,_0x43128c){_0x833074[_0x3071('0x2a')]['ip']=_0x833074[_0x3071('0x2b')][_0x3071('0x2c')]||_0x833074[_0x3071('0x2d')][_0x3071('0x2e')]||_0x833074[_0x3071('0x2f')]['remoteAddress']||_0x833074['connection'][_0x3071('0x2f')][_0x3071('0x2e')];return openIssue(_0x833074[_0x3071('0x2a')],_0x43128c);};
\ No newline at end of file
+var _0xe706=['key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','toString','utf8','end','statusCode','json','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','x-forwarded-for','remoteAddress','socket','bluebird','https','../../config/logger','support','3eAmWpBVP0'];(function(_0x1b80b8,_0x1221e1){var _0x5c1a4f=function(_0x13c972){while(--_0x13c972){_0x1b80b8['push'](_0x1b80b8['shift']());}};_0x5c1a4f(++_0x1221e1);}(_0xe706,0xa3));var _0x6e70=function(_0x2af3e1,_0xb5207f){_0x2af3e1=_0x2af3e1-0x0;var _0xfa27d=_0xe706[_0x2af3e1];return _0xfa27d;};'use strict';var BPromise=require(_0x6e70('0x0'));var https=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var USERNAME=_0x6e70('0x3');var PASSWORD=_0x6e70('0x4');function openIssue(_0x2ca810,_0x7dfbc3){var _0x142c27={'fields':{'project':{'key':_0x2ca810[_0x6e70('0x5')]||_0x6e70('0x6')},'summary':(_0x2ca810[_0x6e70('0x7')]||_0x6e70('0x8'))+_0x6e70('0x9')+_0x2ca810['ip'],'description':_0x2ca810[_0x6e70('0xa')]||JSON[_0x6e70('0xb')](_0x2ca810),'issuetype':{'name':_0x2ca810[_0x6e70('0xc')]||_0x6e70('0xd')}}};_0x142c27[_0x6e70('0xe')][_0x6e70('0xf')]=_0x2ca810[_0x6e70('0x10')];_0x142c27[_0x6e70('0xe')][_0x6e70('0x11')]=_0x2ca810[_0x6e70('0x12')];_0x142c27[_0x6e70('0xe')][_0x6e70('0x13')]=_0x2ca810[_0x6e70('0x14')];_0x142c27[_0x6e70('0xe')]['customfield_11503']=_0x2ca810['name'];_0x142c27[_0x6e70('0xe')][_0x6e70('0x15')]=_0x2ca810[_0x6e70('0x16')];_0x142c27[_0x6e70('0xe')][_0x6e70('0x17')]=_0x2ca810['ip'];var _0x310eb7={'host':_0x6e70('0x18'),'port':0x1bb,'path':_0x6e70('0x19'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x6e70('0x1a')]('base64')}};var _0x53aed0=JSON[_0x6e70('0xb')](_0x142c27);var _0x22c50c=https['request'](_0x310eb7,function(_0x24f3ac){_0x24f3ac['setEncoding'](_0x6e70('0x1b'));var _0x161f23='';_0x24f3ac['on']('data',function(_0x49029f){_0x161f23+=_0x49029f;});_0x24f3ac['on'](_0x6e70('0x1c'),function(){if(_0x7dfbc3){return _0x7dfbc3['status'](_0x24f3ac[_0x6e70('0x1d')])[_0x6e70('0x1e')](JSON['parse'](_0x161f23));}});});_0x22c50c['on']('error',function(_0xc238ba){if(_0x7dfbc3){return _0x7dfbc3[_0x6e70('0x1f')](0x1f4)[_0x6e70('0x1e')]({'errors':[{'message':_0x6e70('0x20'),'type':_0x6e70('0x21')}]});}});_0x22c50c[_0x6e70('0x22')](_0x53aed0);_0x22c50c[_0x6e70('0x1c')]();}exports[_0x6e70('0x23')]=openIssue;exports[_0x6e70('0x24')]=function(_0xb29a2a,_0x4a0cfe){_0xb29a2a[_0x6e70('0x25')]['ip']=_0xb29a2a[_0x6e70('0x26')][_0x6e70('0x27')]||_0xb29a2a['connection'][_0x6e70('0x28')]||_0xb29a2a[_0x6e70('0x29')][_0x6e70('0x28')]||_0xb29a2a['connection'][_0x6e70('0x29')]['remoteAddress'];return openIssue(_0xb29a2a['body'],_0x4a0cfe);};
\ No newline at end of file
index 09c387f..595d274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8e0=['post','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show'];(function(_0x3fe47f,_0x1a2b5b){var _0x55d8d9=function(_0x13b799){while(--_0x13b799){_0x3fe47f['push'](_0x3fe47f['shift']());}};_0x55d8d9(++_0x1a2b5b);}(_0xd8e0,0x16a));var _0x0d8e=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xd8e0[_0xefd519];return _0x4bb882;};'use strict';var multer=require(_0x0d8e('0x0'));var util=require(_0x0d8e('0x1'));var path=require(_0x0d8e('0x2'));var timeout=require(_0x0d8e('0x3'));var express=require(_0x0d8e('0x4'));var router=express[_0x0d8e('0x5')]();var auth=require(_0x0d8e('0x6'));var interaction=require(_0x0d8e('0x7'));var config=require(_0x0d8e('0x8'));var controller=require('./jscriptyAnswerReport.controller');router[_0x0d8e('0x9')]('/',auth['isAuthenticated'](),controller[_0x0d8e('0xa')]);router[_0x0d8e('0x9')](_0x0d8e('0xb'),auth[_0x0d8e('0xc')](),controller[_0x0d8e('0xd')]);router[_0x0d8e('0x9')](_0x0d8e('0xe'),auth[_0x0d8e('0xc')](),controller[_0x0d8e('0xf')]);router[_0x0d8e('0x10')]('/',auth[_0x0d8e('0xc')](),controller['create']);router[_0x0d8e('0x11')]('/:id',auth[_0x0d8e('0xc')](),controller[_0x0d8e('0x12')]);router[_0x0d8e('0x13')](_0x0d8e('0xe'),auth[_0x0d8e('0xc')](),controller[_0x0d8e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x3ae8=['exports','util','path','express','Router','../../components/auth/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','create','put','delete','destroy'];(function(_0x48861e,_0x123e0c){var _0xcdc443=function(_0x5d7495){while(--_0x5d7495){_0x48861e['push'](_0x48861e['shift']());}};_0xcdc443(++_0x123e0c);}(_0x3ae8,0x100));var _0x83ae=function(_0x1d8bb6,_0xd4c47a){_0x1d8bb6=_0x1d8bb6-0x0;var _0x4ea498=_0x3ae8[_0x1d8bb6];return _0x4ea498;};'use strict';var multer=require('multer');var util=require(_0x83ae('0x0'));var path=require(_0x83ae('0x1'));var timeout=require('connect-timeout');var express=require(_0x83ae('0x2'));var router=express[_0x83ae('0x3')]();var auth=require(_0x83ae('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x83ae('0x5'));var controller=require('./jscriptyAnswerReport.controller');router[_0x83ae('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x83ae('0x6')](_0x83ae('0x7'),auth[_0x83ae('0x8')](),controller[_0x83ae('0x9')]);router[_0x83ae('0x6')](_0x83ae('0xa'),auth[_0x83ae('0x8')](),controller[_0x83ae('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x83ae('0xc')]);router[_0x83ae('0xd')](_0x83ae('0xa'),auth[_0x83ae('0x8')](),controller['update']);router[_0x83ae('0xe')](_0x83ae('0xa'),auth[_0x83ae('0x8')](),controller[_0x83ae('0xf')]);module[_0x83ae('0x10')]=router;
\ No newline at end of file
index 14ea36d..986475d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe80c=['TEXT','long','exports','STRING'];(function(_0x4fc5b3,_0x20ab48){var _0x24c967=function(_0x3ab41b){while(--_0x3ab41b){_0x4fc5b3['push'](_0x4fc5b3['shift']());}};_0x24c967(++_0x20ab48);}(_0xe80c,0x1c2));var _0xce80=function(_0x558e81,_0x5133ec){_0x558e81=_0x558e81-0x0;var _0x1464c1=_0xe80c[_0x558e81];return _0x1464c1;};'use strict';var Sequelize=require('sequelize');module[_0xce80('0x0')]={'question':{'type':Sequelize[_0xce80('0x1')]},'answer':{'type':Sequelize[_0xce80('0x2')](_0xce80('0x3'))},'membername':{'type':Sequelize[_0xce80('0x1')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xce80('0x1')]},'uniqueid':{'type':Sequelize[_0xce80('0x1')]},'calleridname':{'type':Sequelize[_0xce80('0x1')]},'calleridnum':{'type':Sequelize[_0xce80('0x1')]},'questionId':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2e54=['STRING','sequelize','TEXT','long'];(function(_0x131b9f,_0x4d58ce){var _0x118bb4=function(_0x278a3d){while(--_0x278a3d){_0x131b9f['push'](_0x131b9f['shift']());}};_0x118bb4(++_0x4d58ce);}(_0x2e54,0x1dd));var _0x42e5=function(_0x317937,_0x29f3fc){_0x317937=_0x317937-0x0;var _0x5bd62f=_0x2e54[_0x317937];return _0x5bd62f;};'use strict';var Sequelize=require(_0x42e5('0x0'));module['exports']={'question':{'type':Sequelize['STRING']},'answer':{'type':Sequelize[_0x42e5('0x1')](_0x42e5('0x2'))},'membername':{'type':Sequelize[_0x42e5('0x3')]},'projectname':{'type':Sequelize[_0x42e5('0x3')]},'queue':{'type':Sequelize[_0x42e5('0x3')]},'uniqueid':{'type':Sequelize[_0x42e5('0x3')]},'calleridname':{'type':Sequelize[_0x42e5('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'questionId':{'type':Sequelize[_0x42e5('0x3')]}};
\ No newline at end of file
index 259fb8f..3ed2829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd4=['key','VIRTUAL','field','options','JscriptyAnswerReport','includeAll','findAll','catch','show','length','include','find','create','body','destroy','params','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','end','status','json','count','offset','set','apply','update','then','sendStatus','error','stack','name','send','rawAttributes','keys','query','dateStart','dateEnd','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','day','add','merge','filter','map'];(function(_0x4fd249,_0x4a7052){var _0x53a1cd=function(_0x33d99f){while(--_0x33d99f){_0x4fd249['push'](_0x4fd249['shift']());}};_0x53a1cd(++_0x4a7052);}(_0x5fd4,0x14d));var _0x45fd=function(_0x5ec054,_0x5adcd7){_0x5ec054=_0x5ec054-0x0;var _0x542985=_0x5fd4[_0x5ec054];return _0x542985;};'use strict';var pdf=require(_0x45fd('0x0'));var emlformat=require(_0x45fd('0x1'));var rimraf=require(_0x45fd('0x2'));var zipdir=require(_0x45fd('0x3'));var jsonpatch=require(_0x45fd('0x4'));var rp=require(_0x45fd('0x5'));var moment=require(_0x45fd('0x6'));var BPromise=require(_0x45fd('0x7'));var Mustache=require(_0x45fd('0x8'));var util=require(_0x45fd('0x9'));var path=require('path');var sox=require(_0x45fd('0xa'));var csv=require(_0x45fd('0xb'));var ejs=require(_0x45fd('0xc'));var fs=require('fs');var _=require(_0x45fd('0xd'));var squel=require(_0x45fd('0xe'));var crypto=require(_0x45fd('0xf'));var jsforce=require(_0x45fd('0x10'));var deskjs=require(_0x45fd('0x11'));var toCsv=require('to-csv');var querystring=require(_0x45fd('0x12'));var Papa=require(_0x45fd('0x13'));var Redis=require(_0x45fd('0x14'));var qs=require(_0x45fd('0x15'));var logger=require(_0x45fd('0x16'))(_0x45fd('0x17'));var utils=require(_0x45fd('0x18'));var config=require('../../config/environment');var db=require(_0x45fd('0x19'))['db'];function respondWithStatusCode(_0x47f95f,_0x1ded00){_0x1ded00=_0x1ded00||0xcc;return function(_0x5ab2b9){if(_0x5ab2b9){return _0x47f95f['sendStatus'](_0x1ded00);}return _0x47f95f['status'](_0x1ded00)[_0x45fd('0x1a')]();};}function respondWithResult(_0x116939,_0x5867af){_0x5867af=_0x5867af||0xc8;return function(_0x37b283){if(_0x37b283){return _0x116939[_0x45fd('0x1b')](_0x5867af)[_0x45fd('0x1c')](_0x37b283);}};}function respondWithFilteredResult(_0x52ad32,_0x3d68b8){return function(_0x200be4){if(_0x200be4){var _0x304630=_0x200be4[_0x45fd('0x1d')],_0x5a61f6=_0x3d68b8[_0x45fd('0x1e')],_0x311359=_0x3d68b8[_0x45fd('0x1e')]+_0x3d68b8['limit'],_0x5303c7;if(_0x311359>=_0x304630){_0x311359=_0x304630;_0x5303c7=0xc8;}else{_0x5303c7=0xce;}_0x52ad32['status'](_0x5303c7);return _0x52ad32[_0x45fd('0x1f')]('Content-Range',_0x5a61f6+'-'+_0x311359+'/'+_0x304630)[_0x45fd('0x1c')](_0x200be4);}return null;};}function patchUpdates(_0x2d3999){return function(_0x243868){try{jsonpatch[_0x45fd('0x20')](_0x243868,_0x2d3999,!![]);}catch(_0xb61469){return BPromise['reject'](_0xb61469);}return _0x243868['save']();};}function saveUpdates(_0x1ea145,_0x377a26){return function(_0x3fa534){if(_0x3fa534){return _0x3fa534[_0x45fd('0x21')](_0x1ea145)[_0x45fd('0x22')](function(_0x1b6bb5){return _0x1b6bb5;});}return null;};}function removeEntity(_0x21c62f,_0x4e618b){return function(_0x2ab6b4){if(_0x2ab6b4){return _0x2ab6b4['destroy']()['then'](function(){_0x21c62f[_0x45fd('0x1b')](0xcc)[_0x45fd('0x1a')]();});}};}function handleEntityNotFound(_0x20681b,_0x5b645d){return function(_0x34f11a){if(!_0x34f11a){_0x20681b[_0x45fd('0x23')](0x194);}return _0x34f11a;};}function handleError(_0x2b48f6,_0x431859){_0x431859=_0x431859||0x1f4;return function(_0x470eb8){logger[_0x45fd('0x24')](_0x470eb8[_0x45fd('0x25')]);if(_0x470eb8[_0x45fd('0x26')]){delete _0x470eb8[_0x45fd('0x26')];}_0x2b48f6['status'](_0x431859)[_0x45fd('0x27')](_0x470eb8);};}exports['index']=function(_0x2d38b4,_0x2fd8f0){var _0x42f520={},_0x289c4c={},_0x39543c={'count':0x0,'rows':[]};var _0x28be3e=db['JscriptyAnswerReport'][_0x45fd('0x28')];_0x289c4c['model']=_[_0x45fd('0x29')](_0x28be3e);var _0x3fb113={'dateStart':_0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x2b')],'dateEnd':_0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x2c')]};delete _0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x2b')];delete _0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x2c')];_0x289c4c[_0x45fd('0x2a')]=_[_0x45fd('0x29')](_0x2d38b4[_0x45fd('0x2a')]);_0x289c4c[_0x45fd('0x2d')]=_['intersection'](_0x289c4c[_0x45fd('0x2e')],_0x289c4c[_0x45fd('0x2a')]);_0x42f520[_0x45fd('0x2f')]=_[_0x45fd('0x30')](_0x289c4c[_0x45fd('0x2e')],qs[_0x45fd('0x31')](_0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x31')]));_0x42f520[_0x45fd('0x2f')]=_0x42f520[_0x45fd('0x2f')]['length']?_0x42f520[_0x45fd('0x2f')]:_0x289c4c[_0x45fd('0x2e')];if(!_0x2d38b4['query'][_0x45fd('0x32')](_0x45fd('0x33'))){_0x42f520[_0x45fd('0x34')]=qs[_0x45fd('0x34')](_0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x34')]);_0x42f520[_0x45fd('0x1e')]=qs['offset'](_0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x1e')]);}_0x42f520[_0x45fd('0x35')]=qs[_0x45fd('0x36')](_0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x36')]);_0x42f520[_0x45fd('0x37')]=qs[_0x45fd('0x2d')](_[_0x45fd('0x38')](_0x2d38b4[_0x45fd('0x2a')],_0x289c4c[_0x45fd('0x2d')]));if(_0x3fb113[_0x45fd('0x2b')]){if(_0x3fb113[_0x45fd('0x2c')]){_0x3fb113[_0x45fd('0x2c')]=moment(_0x3fb113[_0x45fd('0x2c')])['add'](0x1,_0x45fd('0x39'));}else{_0x3fb113[_0x45fd('0x2c')]=moment(_0x3fb113['dateStart'])[_0x45fd('0x3a')](0x1,'day');}_[_0x45fd('0x3b')](_0x42f520[_0x45fd('0x37')],{'createdAt':{'$gte':_0x3fb113[_0x45fd('0x2b')],'$lte':_0x3fb113[_0x45fd('0x2c')]}});}if(_0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x3c')]){_0x42f520[_0x45fd('0x37')]=_[_0x45fd('0x3b')](_0x42f520[_0x45fd('0x37')],{'$or':_[_0x45fd('0x3d')](_0x28be3e,function(_0x4a6b37){if(_0x4a6b37['type'][_0x45fd('0x3e')]!==_0x45fd('0x3f')){var _0x4ee12c={};_0x4ee12c[_0x4a6b37[_0x45fd('0x40')]]={'$like':'%'+_0x2d38b4['query'][_0x45fd('0x3c')]+'%'};return _0x4ee12c;}})});}_0x42f520=_[_0x45fd('0x3b')]({},_0x42f520,_0x2d38b4[_0x45fd('0x41')]);var _0x3398ee={'where':_0x42f520['where']};return db[_0x45fd('0x42')]['count'](_0x3398ee)[_0x45fd('0x22')](function(_0x8b05a9){_0x39543c['count']=_0x8b05a9;if(_0x2d38b4[_0x45fd('0x2a')][_0x45fd('0x43')]){_0x42f520['include']=[{'all':!![]}];}return db[_0x45fd('0x42')][_0x45fd('0x44')](_0x42f520);})[_0x45fd('0x22')](function(_0x34f0cd){_0x39543c['rows']=_0x34f0cd;return _0x39543c;})[_0x45fd('0x22')](respondWithFilteredResult(_0x2fd8f0,_0x42f520))[_0x45fd('0x45')](handleError(_0x2fd8f0,null));};exports[_0x45fd('0x46')]=function(_0x551599,_0x316227){var _0x5cf1d1={'raw':!![],'where':{'id':_0x551599['params']['id']}},_0x4df0bd={};_0x4df0bd[_0x45fd('0x2e')]=_[_0x45fd('0x29')](db[_0x45fd('0x42')][_0x45fd('0x28')]);_0x4df0bd[_0x45fd('0x2a')]=_[_0x45fd('0x29')](_0x551599[_0x45fd('0x2a')]);_0x4df0bd[_0x45fd('0x2d')]=_[_0x45fd('0x30')](_0x4df0bd[_0x45fd('0x2e')],_0x4df0bd[_0x45fd('0x2a')]);_0x5cf1d1[_0x45fd('0x2f')]=_[_0x45fd('0x30')](_0x4df0bd[_0x45fd('0x2e')],qs[_0x45fd('0x31')](_0x551599[_0x45fd('0x2a')][_0x45fd('0x31')]));_0x5cf1d1[_0x45fd('0x2f')]=_0x5cf1d1[_0x45fd('0x2f')][_0x45fd('0x47')]?_0x5cf1d1['attributes']:_0x4df0bd['model'];if(_0x551599['query'][_0x45fd('0x43')]){_0x5cf1d1[_0x45fd('0x48')]=[{'all':!![]}];}_0x5cf1d1=_[_0x45fd('0x3b')]({},_0x5cf1d1,_0x551599[_0x45fd('0x41')]);return db[_0x45fd('0x42')][_0x45fd('0x49')](_0x5cf1d1)['then'](handleEntityNotFound(_0x316227,null))[_0x45fd('0x22')](respondWithResult(_0x316227,null))['catch'](handleError(_0x316227,null));};exports[_0x45fd('0x4a')]=function(_0x479791,_0x37b7a2){return db[_0x45fd('0x42')][_0x45fd('0x4a')](_0x479791['body'],{})[_0x45fd('0x22')](respondWithResult(_0x37b7a2,0xc9))[_0x45fd('0x45')](handleError(_0x37b7a2,null));};exports[_0x45fd('0x21')]=function(_0x4357f2,_0x56374f){if(_0x4357f2[_0x45fd('0x4b')]['id']){delete _0x4357f2['body']['id'];}return db[_0x45fd('0x42')]['find']({'where':{'id':_0x4357f2['params']['id']}})[_0x45fd('0x22')](handleEntityNotFound(_0x56374f,null))['then'](saveUpdates(_0x4357f2[_0x45fd('0x4b')],null))[_0x45fd('0x22')](respondWithResult(_0x56374f,null))['catch'](handleError(_0x56374f,null));};exports[_0x45fd('0x4c')]=function(_0x153cde,_0xc86eae){return db[_0x45fd('0x42')][_0x45fd('0x49')]({'where':{'id':_0x153cde[_0x45fd('0x4d')]['id']}})[_0x45fd('0x22')](handleEntityNotFound(_0xc86eae,null))['then'](removeEntity(_0xc86eae,null))[_0x45fd('0x45')](handleError(_0xc86eae,null));};exports[_0x45fd('0x4e')]=function(_0x475257,_0x57f2e0){return db[_0x45fd('0x42')]['describe']()[_0x45fd('0x22')](respondWithResult(_0x57f2e0,null))['catch'](handleError(_0x57f2e0,null));};
\ No newline at end of file
+var _0x7f51=['destroy','describe','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','Content-Range','apply','reject','save','update','then','name','send','JscriptyAnswerReport','rawAttributes','keys','query','dateEnd','dateStart','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','add','day','filter','merge','map','type','key','VIRTUAL','field','options','count','includeAll','rows','catch','show','params','length','include','find','create','body'];(function(_0x59ae80,_0x56b205){var _0x473bf9=function(_0x2f484e){while(--_0x2f484e){_0x59ae80['push'](_0x59ae80['shift']());}};_0x473bf9(++_0x56b205);}(_0x7f51,0xe3));var _0x17f5=function(_0x1d4e98,_0x446c3a){_0x1d4e98=_0x1d4e98-0x0;var _0x48cd7e=_0x7f51[_0x1d4e98];return _0x48cd7e;};'use strict';var pdf=require(_0x17f5('0x0'));var emlformat=require(_0x17f5('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x17f5('0x2'));var jsonpatch=require(_0x17f5('0x3'));var rp=require(_0x17f5('0x4'));var moment=require('moment');var BPromise=require(_0x17f5('0x5'));var Mustache=require(_0x17f5('0x6'));var util=require(_0x17f5('0x7'));var path=require(_0x17f5('0x8'));var sox=require('sox');var csv=require(_0x17f5('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x17f5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x17f5('0xb'));var deskjs=require(_0x17f5('0xc'));var toCsv=require('to-csv');var querystring=require(_0x17f5('0xd'));var Papa=require(_0x17f5('0xe'));var Redis=require(_0x17f5('0xf'));var qs=require(_0x17f5('0x10'));var logger=require(_0x17f5('0x11'))(_0x17f5('0x12'));var utils=require(_0x17f5('0x13'));var config=require(_0x17f5('0x14'));var db=require(_0x17f5('0x15'))['db'];function respondWithStatusCode(_0x3af5e9,_0xd1fcbd){_0xd1fcbd=_0xd1fcbd||0xcc;return function(_0x514c09){if(_0x514c09){return _0x3af5e9[_0x17f5('0x16')](_0xd1fcbd);}return _0x3af5e9[_0x17f5('0x17')](_0xd1fcbd)[_0x17f5('0x18')]();};}function respondWithResult(_0x1c9ef1,_0xc27a97){_0xc27a97=_0xc27a97||0xc8;return function(_0x40be8f){if(_0x40be8f){return _0x1c9ef1[_0x17f5('0x17')](_0xc27a97)[_0x17f5('0x19')](_0x40be8f);}};}function respondWithFilteredResult(_0x1bffe5,_0x1667b9){return function(_0x235136){if(_0x235136){var _0x36eef0=_0x235136['count'],_0x5ee640=_0x1667b9['offset'],_0x27942e=_0x1667b9[_0x17f5('0x1a')]+_0x1667b9[_0x17f5('0x1b')],_0x35a6de;if(_0x27942e>=_0x36eef0){_0x27942e=_0x36eef0;_0x35a6de=0xc8;}else{_0x35a6de=0xce;}_0x1bffe5[_0x17f5('0x17')](_0x35a6de);return _0x1bffe5['set'](_0x17f5('0x1c'),_0x5ee640+'-'+_0x27942e+'/'+_0x36eef0)['json'](_0x235136);}return null;};}function patchUpdates(_0x5c8efb){return function(_0x2bfc45){try{jsonpatch[_0x17f5('0x1d')](_0x2bfc45,_0x5c8efb,!![]);}catch(_0x5abd22){return BPromise[_0x17f5('0x1e')](_0x5abd22);}return _0x2bfc45[_0x17f5('0x1f')]();};}function saveUpdates(_0x182a8a,_0x203c84){return function(_0x698674){if(_0x698674){return _0x698674[_0x17f5('0x20')](_0x182a8a)[_0x17f5('0x21')](function(_0x4c7956){return _0x4c7956;});}return null;};}function removeEntity(_0xdda7ce,_0x43cb94){return function(_0x2827c0){if(_0x2827c0){return _0x2827c0['destroy']()[_0x17f5('0x21')](function(){_0xdda7ce[_0x17f5('0x17')](0xcc)[_0x17f5('0x18')]();});}};}function handleEntityNotFound(_0x14471f,_0x46a708){return function(_0xfac0e9){if(!_0xfac0e9){_0x14471f[_0x17f5('0x16')](0x194);}return _0xfac0e9;};}function handleError(_0x17d489,_0x1dfdfa){_0x1dfdfa=_0x1dfdfa||0x1f4;return function(_0x1913d6){logger['error'](_0x1913d6['stack']);if(_0x1913d6[_0x17f5('0x22')]){delete _0x1913d6[_0x17f5('0x22')];}_0x17d489['status'](_0x1dfdfa)[_0x17f5('0x23')](_0x1913d6);};}exports['index']=function(_0x5c3658,_0x42414a){var _0x412bef={},_0x2952a0={},_0x545140={'count':0x0,'rows':[]};var _0x48757a=db[_0x17f5('0x24')][_0x17f5('0x25')];_0x2952a0['model']=_[_0x17f5('0x26')](_0x48757a);var _0x16830a={'dateStart':_0x5c3658[_0x17f5('0x27')]['dateStart'],'dateEnd':_0x5c3658[_0x17f5('0x27')][_0x17f5('0x28')]};delete _0x5c3658[_0x17f5('0x27')][_0x17f5('0x29')];delete _0x5c3658[_0x17f5('0x27')][_0x17f5('0x28')];_0x2952a0['query']=_[_0x17f5('0x26')](_0x5c3658[_0x17f5('0x27')]);_0x2952a0[_0x17f5('0x2a')]=_[_0x17f5('0x2b')](_0x2952a0[_0x17f5('0x2c')],_0x2952a0['query']);_0x412bef[_0x17f5('0x2d')]=_[_0x17f5('0x2b')](_0x2952a0[_0x17f5('0x2c')],qs['fields'](_0x5c3658[_0x17f5('0x27')][_0x17f5('0x2e')]));_0x412bef['attributes']=_0x412bef[_0x17f5('0x2d')]['length']?_0x412bef['attributes']:_0x2952a0[_0x17f5('0x2c')];if(!_0x5c3658[_0x17f5('0x27')][_0x17f5('0x2f')]('nolimit')){_0x412bef[_0x17f5('0x1b')]=qs[_0x17f5('0x1b')](_0x5c3658[_0x17f5('0x27')][_0x17f5('0x1b')]);_0x412bef[_0x17f5('0x1a')]=qs[_0x17f5('0x1a')](_0x5c3658[_0x17f5('0x27')][_0x17f5('0x1a')]);}_0x412bef[_0x17f5('0x30')]=qs[_0x17f5('0x31')](_0x5c3658[_0x17f5('0x27')][_0x17f5('0x31')]);_0x412bef[_0x17f5('0x32')]=qs[_0x17f5('0x2a')](_[_0x17f5('0x33')](_0x5c3658[_0x17f5('0x27')],_0x2952a0[_0x17f5('0x2a')]));if(_0x16830a['dateStart']){if(_0x16830a['dateEnd']){_0x16830a['dateEnd']=moment(_0x16830a['dateEnd'])[_0x17f5('0x34')](0x1,_0x17f5('0x35'));}else{_0x16830a[_0x17f5('0x28')]=moment(_0x16830a[_0x17f5('0x29')])[_0x17f5('0x34')](0x1,_0x17f5('0x35'));}_['merge'](_0x412bef['where'],{'createdAt':{'$gte':_0x16830a['dateStart'],'$lte':_0x16830a[_0x17f5('0x28')]}});}if(_0x5c3658[_0x17f5('0x27')][_0x17f5('0x36')]){_0x412bef[_0x17f5('0x32')]=_[_0x17f5('0x37')](_0x412bef['where'],{'$or':_[_0x17f5('0x38')](_0x48757a,function(_0x1317f1){if(_0x1317f1[_0x17f5('0x39')][_0x17f5('0x3a')]!==_0x17f5('0x3b')){var _0x385287={};_0x385287[_0x1317f1[_0x17f5('0x3c')]]={'$like':'%'+_0x5c3658[_0x17f5('0x27')]['filter']+'%'};return _0x385287;}})});}_0x412bef=_[_0x17f5('0x37')]({},_0x412bef,_0x5c3658[_0x17f5('0x3d')]);var _0x579fba={'where':_0x412bef['where']};return db['JscriptyAnswerReport'][_0x17f5('0x3e')](_0x579fba)['then'](function(_0x54062d){_0x545140[_0x17f5('0x3e')]=_0x54062d;if(_0x5c3658[_0x17f5('0x27')][_0x17f5('0x3f')]){_0x412bef['include']=[{'all':!![]}];}return db[_0x17f5('0x24')]['findAll'](_0x412bef);})[_0x17f5('0x21')](function(_0x8b792b){_0x545140[_0x17f5('0x40')]=_0x8b792b;return _0x545140;})[_0x17f5('0x21')](respondWithFilteredResult(_0x42414a,_0x412bef))[_0x17f5('0x41')](handleError(_0x42414a,null));};exports[_0x17f5('0x42')]=function(_0x242ac5,_0x5e62f2){var _0x56d017={'raw':!![],'where':{'id':_0x242ac5[_0x17f5('0x43')]['id']}},_0x2f641d={};_0x2f641d[_0x17f5('0x2c')]=_[_0x17f5('0x26')](db['JscriptyAnswerReport'][_0x17f5('0x25')]);_0x2f641d[_0x17f5('0x27')]=_['keys'](_0x242ac5[_0x17f5('0x27')]);_0x2f641d[_0x17f5('0x2a')]=_[_0x17f5('0x2b')](_0x2f641d['model'],_0x2f641d[_0x17f5('0x27')]);_0x56d017[_0x17f5('0x2d')]=_[_0x17f5('0x2b')](_0x2f641d[_0x17f5('0x2c')],qs[_0x17f5('0x2e')](_0x242ac5['query'][_0x17f5('0x2e')]));_0x56d017[_0x17f5('0x2d')]=_0x56d017['attributes'][_0x17f5('0x44')]?_0x56d017[_0x17f5('0x2d')]:_0x2f641d[_0x17f5('0x2c')];if(_0x242ac5[_0x17f5('0x27')][_0x17f5('0x3f')]){_0x56d017[_0x17f5('0x45')]=[{'all':!![]}];}_0x56d017=_['merge']({},_0x56d017,_0x242ac5['options']);return db[_0x17f5('0x24')][_0x17f5('0x46')](_0x56d017)[_0x17f5('0x21')](handleEntityNotFound(_0x5e62f2,null))[_0x17f5('0x21')](respondWithResult(_0x5e62f2,null))[_0x17f5('0x41')](handleError(_0x5e62f2,null));};exports[_0x17f5('0x47')]=function(_0x55d126,_0x126901){return db[_0x17f5('0x24')][_0x17f5('0x47')](_0x55d126[_0x17f5('0x48')],{})[_0x17f5('0x21')](respondWithResult(_0x126901,0xc9))['catch'](handleError(_0x126901,null));};exports[_0x17f5('0x20')]=function(_0x584d20,_0x3be616){if(_0x584d20[_0x17f5('0x48')]['id']){delete _0x584d20[_0x17f5('0x48')]['id'];}return db[_0x17f5('0x24')][_0x17f5('0x46')]({'where':{'id':_0x584d20['params']['id']}})[_0x17f5('0x21')](handleEntityNotFound(_0x3be616,null))[_0x17f5('0x21')](saveUpdates(_0x584d20[_0x17f5('0x48')],null))[_0x17f5('0x21')](respondWithResult(_0x3be616,null))[_0x17f5('0x41')](handleError(_0x3be616,null));};exports[_0x17f5('0x49')]=function(_0x42c3d5,_0x9fec5c){return db[_0x17f5('0x24')][_0x17f5('0x46')]({'where':{'id':_0x42c3d5['params']['id']}})[_0x17f5('0x21')](handleEntityNotFound(_0x9fec5c,null))['then'](removeEntity(_0x9fec5c,null))[_0x17f5('0x41')](handleError(_0x9fec5c,null));};exports[_0x17f5('0x4a')]=function(_0x530ada,_0x5ca6cc){return db[_0x17f5('0x24')][_0x17f5('0x4a')]()[_0x17f5('0x21')](respondWithResult(_0x5ca6cc,null))[_0x17f5('0x41')](handleError(_0x5ca6cc,null));};
\ No newline at end of file
index 077b493..70cee07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b7=['bluebird','exports','JscriptyAnswerReport','report_jscripty_answers','lodash','../../config/logger','api','moment'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0xc7b7,0x1f4));var _0x7c7b=function(_0x2e890e,_0x1a22b7){_0x2e890e=_0x2e890e-0x0;var _0x5d2b7f=_0xc7b7[_0x2e890e];return _0x5d2b7f;};'use strict';var _=require(_0x7c7b('0x0'));var util=require('util');var logger=require(_0x7c7b('0x1'))(_0x7c7b('0x2'));var moment=require(_0x7c7b('0x3'));var BPromise=require(_0x7c7b('0x4'));var rp=require('request-promise');var attributes=require('./jscriptyAnswerReport.attributes');module[_0x7c7b('0x5')]=function(_0x5c4c78,_0x4bf83b){return _0x5c4c78['define'](_0x7c7b('0x6'),attributes,{'tableName':_0x7c7b('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x90fc=['lodash','util','api','bluebird','request-promise','exports','JscriptyAnswerReport','report_jscripty_answers'];(function(_0x28d225,_0x43be18){var _0x1f79e1=function(_0x362c23){while(--_0x362c23){_0x28d225['push'](_0x28d225['shift']());}};_0x1f79e1(++_0x43be18);}(_0x90fc,0xb0));var _0xc90f=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x90fc[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0xc90f('0x0'));var util=require(_0xc90f('0x1'));var logger=require('../../config/logger')(_0xc90f('0x2'));var moment=require('moment');var BPromise=require(_0xc90f('0x3'));var rp=require(_0xc90f('0x4'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0xc90f('0x5')]=function(_0x400cbb,_0x559744){return _0x400cbb['define'](_0xc90f('0x6'),attributes,{'tableName':_0xc90f('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2467454..84ace56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1564=['rpc','client','http','info','request\x20sent','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','result','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x3ea37c,_0x3232db){var _0x42ecce=function(_0x3edbd8){while(--_0x3edbd8){_0x3ea37c['push'](_0x3ea37c['shift']());}};_0x42ecce(++_0x3232db);}(_0x1564,0x13e));var _0x4156=function(_0x2e030a,_0x8e4c48){_0x2e030a=_0x2e030a-0x0;var _0x597df6=_0x1564[_0x2e030a];return _0x597df6;};'use strict';var _=require('lodash');var util=require(_0x4156('0x0'));var moment=require(_0x4156('0x1'));var BPromise=require(_0x4156('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4156('0x3'));var db=require(_0x4156('0x4'))['db'];var utils=require(_0x4156('0x5'));var logger=require('../../config/logger')(_0x4156('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4156('0x7')][_0x4156('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x7f0d5,_0x289220,_0x58b6c8){return new BPromise(function(_0x493f7d,_0x185e99){return client['request'](_0x7f0d5,_0x58b6c8)['then'](function(_0x3228cc){logger[_0x4156('0x9')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x289220,_0x4156('0xa'));logger['debug'](_0x4156('0xb'),_0x289220,'request\x20sent',JSON[_0x4156('0xc')](_0x3228cc));if(_0x3228cc[_0x4156('0xd')]){if(_0x3228cc[_0x4156('0xd')][_0x4156('0xe')]===0x1f4){logger[_0x4156('0xd')](_0x4156('0xf'),_0x289220,_0x3228cc[_0x4156('0xd')]['message']);return _0x185e99(_0x3228cc[_0x4156('0xd')][_0x4156('0x10')]);}logger[_0x4156('0xd')](_0x4156('0xf'),_0x289220,_0x3228cc[_0x4156('0xd')][_0x4156('0x10')]);return _0x493f7d(_0x3228cc[_0x4156('0xd')][_0x4156('0x10')]);}else{logger[_0x4156('0x9')](_0x4156('0xf'),_0x289220,_0x4156('0xa'));_0x493f7d(_0x3228cc[_0x4156('0x11')]['message']);}})['catch'](function(_0x10d27c){logger[_0x4156('0xd')](_0x4156('0xf'),_0x289220,_0x10d27c);_0x185e99(_0x10d27c);});});}
\ No newline at end of file
+var _0xf674=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','JscriptyAnswerReport,\x20%s,\x20%s','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','util','moment','randomstring'];(function(_0x344a50,_0x3acecb){var _0x2140c6=function(_0x456b7e){while(--_0x456b7e){_0x344a50['push'](_0x344a50['shift']());}};_0x2140c6(++_0x3acecb);}(_0xf674,0x18c));var _0x4f67=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xf674[_0x17b6e3];return _0x3906f3;};'use strict';var _=require('lodash');var util=require(_0x4f67('0x0'));var moment=require(_0x4f67('0x1'));var BPromise=require('bluebird');var rs=require(_0x4f67('0x2'));var fs=require('fs');var Redis=require(_0x4f67('0x3'));var db=require(_0x4f67('0x4'))['db'];var utils=require(_0x4f67('0x5'));var logger=require('../../config/logger')(_0x4f67('0x6'));var config=require(_0x4f67('0x7'));var jayson=require(_0x4f67('0x8'));var client=jayson[_0x4f67('0x9')][_0x4f67('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5576e3,_0x2a6538,_0xc1ebb9){return new BPromise(function(_0x21e54d,_0x5ca3cf){return client[_0x4f67('0xb')](_0x5576e3,_0xc1ebb9)['then'](function(_0x457a77){logger[_0x4f67('0xc')](_0x4f67('0xd'),_0x2a6538,'request\x20sent');logger[_0x4f67('0xe')](_0x4f67('0xf'),_0x2a6538,_0x4f67('0x10'),JSON[_0x4f67('0x11')](_0x457a77));if(_0x457a77[_0x4f67('0x12')]){if(_0x457a77[_0x4f67('0x12')]['code']===0x1f4){logger[_0x4f67('0x12')](_0x4f67('0xd'),_0x2a6538,_0x457a77[_0x4f67('0x12')][_0x4f67('0x13')]);return _0x5ca3cf(_0x457a77['error'][_0x4f67('0x13')]);}logger[_0x4f67('0x12')](_0x4f67('0xd'),_0x2a6538,_0x457a77[_0x4f67('0x12')][_0x4f67('0x13')]);return _0x21e54d(_0x457a77[_0x4f67('0x12')][_0x4f67('0x13')]);}else{logger[_0x4f67('0xc')](_0x4f67('0xd'),_0x2a6538,_0x4f67('0x10'));_0x21e54d(_0x457a77['result'][_0x4f67('0x13')]);}})[_0x4f67('0x14')](function(_0x5e7c39){logger['error'](_0x4f67('0xd'),_0x2a6538,_0x5e7c39);_0x5ca3cf(_0x5e7c39);});});}
\ No newline at end of file
index fa4d953..0cf840e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf57e=['delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','show','get','/:id/sessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put','/:id','update'];(function(_0x576ef3,_0x570615){var _0x3decf3=function(_0x5c8709){while(--_0x5c8709){_0x576ef3['push'](_0x576ef3['shift']());}};_0x3decf3(++_0x570615);}(_0xf57e,0x1e9));var _0xef57=function(_0xe5f51d,_0x1c12be){_0xe5f51d=_0xe5f51d-0x0;var _0x3bedf0=_0xf57e[_0xe5f51d];return _0x3bedf0;};'use strict';var multer=require(_0xef57('0x0'));var util=require(_0xef57('0x1'));var path=require(_0xef57('0x2'));var timeout=require(_0xef57('0x3'));var express=require(_0xef57('0x4'));var router=express['Router']();var auth=require(_0xef57('0x5'));var interaction=require(_0xef57('0x6'));var config=require('../../config/environment');var controller=require('./jscriptyProject.controller');router['get']('/',auth[_0xef57('0x7')](),controller[_0xef57('0x8')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xef57('0x9')]);router[_0xef57('0xa')](_0xef57('0xb'),auth[_0xef57('0x7')](),controller['getSessions']);router[_0xef57('0xa')](_0xef57('0xc'),auth['isAuthenticated'](),controller[_0xef57('0xd')]);router[_0xef57('0xa')](_0xef57('0xe'),auth['isAuthenticated'](),timeout(_0xef57('0xf')),controller[_0xef57('0x10')]);router[_0xef57('0x11')]('/',auth[_0xef57('0x7')](),controller[_0xef57('0x12')]);router[_0xef57('0x11')](_0xef57('0x13'),auth[_0xef57('0x7')](),controller[_0xef57('0x14')]);router[_0xef57('0x15')](_0xef57('0x16'),auth[_0xef57('0x7')](),controller[_0xef57('0x17')]);router[_0xef57('0x18')]('/:id',auth[_0xef57('0x7')](),controller[_0xef57('0x19')]);module[_0xef57('0x1a')]=router;
\ No newline at end of file
+var _0x6e5e=['/:id','isAuthenticated','show','get','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put','update','delete','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../config/environment','./jscriptyProject.controller','index'];(function(_0x12118d,_0x200420){var _0x1c23ae=function(_0x8011e){while(--_0x8011e){_0x12118d['push'](_0x12118d['shift']());}};_0x1c23ae(++_0x200420);}(_0x6e5e,0x1de));var _0xe6e5=function(_0xad0887,_0x2bd60d){_0xad0887=_0xad0887-0x0;var _0x5c44e4=_0x6e5e[_0xad0887];return _0x5c44e4;};'use strict';var multer=require(_0xe6e5('0x0'));var util=require(_0xe6e5('0x1'));var path=require('path');var timeout=require(_0xe6e5('0x2'));var express=require('express');var router=express[_0xe6e5('0x3')]();var auth=require(_0xe6e5('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe6e5('0x5'));var controller=require(_0xe6e5('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xe6e5('0x7')]);router['get'](_0xe6e5('0x8'),auth[_0xe6e5('0x9')](),controller[_0xe6e5('0xa')]);router[_0xe6e5('0xb')](_0xe6e5('0xc'),auth[_0xe6e5('0x9')](),controller[_0xe6e5('0xd')]);router['get'](_0xe6e5('0xe'),auth['isAuthenticated'](),controller[_0xe6e5('0xf')]);router['get'](_0xe6e5('0x10'),auth['isAuthenticated'](),timeout(_0xe6e5('0x11')),controller[_0xe6e5('0x12')]);router[_0xe6e5('0x13')]('/',auth['isAuthenticated'](),controller[_0xe6e5('0x14')]);router[_0xe6e5('0x13')](_0xe6e5('0x15'),auth[_0xe6e5('0x9')](),controller[_0xe6e5('0x16')]);router[_0xe6e5('0x17')]('/:id',auth[_0xe6e5('0x9')](),controller[_0xe6e5('0x18')]);router[_0xe6e5('0x19')](_0xe6e5('0x8'),auth[_0xe6e5('0x9')](),controller['destroy']);module[_0xe6e5('0x1a')]=router;
\ No newline at end of file
index ccc49b0..907b3ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd84e=['formData','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','sequelize','lodash','STRING','TEXT','long','isObjectLike','stringify','isString','setDataValue'];(function(_0x5179a5,_0x419746){var _0x15c8ce=function(_0x1b13c4){while(--_0x1b13c4){_0x5179a5['push'](_0x5179a5['shift']());}};_0x15c8ce(++_0x419746);}(_0xd84e,0x17f));var _0xed84=function(_0x26bc47,_0x45b613){_0x26bc47=_0x26bc47-0x0;var _0x1b219f=_0xd84e[_0x26bc47];return _0x1b219f;};'use strict';var Sequelize=require(_0xed84('0x0'));var _=require(_0xed84('0x1'));var util=require('util');module['exports']={'name':{'type':Sequelize[_0xed84('0x2')],'unique':'name'},'description':{'type':Sequelize[_0xed84('0x2')]},'formData':{'type':Sequelize[_0xed84('0x3')](_0xed84('0x4')),'set':function(_0x5eb1bc){if(_[_0xed84('0x5')](_0x5eb1bc)){this['setDataValue']('formData',JSON[_0xed84('0x6')](_0x5eb1bc));}else if(_[_0xed84('0x7')](_0x5eb1bc)){this[_0xed84('0x8')](_0xed84('0x9'),_0x5eb1bc);}else{this[_0xed84('0x8')](_0xed84('0x9'),util['format'](_0xed84('0xa'),this[_0xed84('0xb')](_0xed84('0xc'))||'',this[_0xed84('0xb')](_0xed84('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x66d3=['description','BOOLEAN','sequelize','lodash','util','exports','STRING','name','TEXT','long','isObjectLike','setDataValue','formData','stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue'];(function(_0x20c064,_0x383ee1){var _0x4af7fc=function(_0x338a5d){while(--_0x338a5d){_0x20c064['push'](_0x20c064['shift']());}};_0x4af7fc(++_0x383ee1);}(_0x66d3,0x16a));var _0x366d=function(_0x55f4e5,_0x1d34a8){_0x55f4e5=_0x55f4e5-0x0;var _0x5b67b3=_0x66d3[_0x55f4e5];return _0x5b67b3;};'use strict';var Sequelize=require(_0x366d('0x0'));var _=require(_0x366d('0x1'));var util=require(_0x366d('0x2'));module[_0x366d('0x3')]={'name':{'type':Sequelize[_0x366d('0x4')],'unique':_0x366d('0x5')},'description':{'type':Sequelize[_0x366d('0x4')]},'formData':{'type':Sequelize[_0x366d('0x6')](_0x366d('0x7')),'set':function(_0x25b194){if(_[_0x366d('0x8')](_0x25b194)){this[_0x366d('0x9')](_0x366d('0xa'),JSON[_0x366d('0xb')](_0x25b194));}else if(_[_0x366d('0xc')](_0x25b194)){this[_0x366d('0x9')]('formData',_0x25b194);}else{this['setDataValue']('formData',util[_0x366d('0xd')](_0x366d('0xe'),this['getDataValue'](_0x366d('0x5'))||'',this[_0x366d('0xf')](_0x366d('0x10'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x366d('0x11')],'defaultValue':!![]}};
\ No newline at end of file
index 644a291..ed7f4c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd67e=['writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','format','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','html-pdf','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','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','send','index','JscriptyProject','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','add','filter','merge','map','type','key','field','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Projects','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','body','omit','userProfileId','autoAssociation','findOne','JscriptySessionReport','JscriptyAnswerReport','ProjectId','day','number','toString','indexOf','JscriptyQuestionReport','-createdAt','questionId','question','starttime','SessionId','answer','now'];(function(_0xf5d92d,_0x25cf5d){var _0x4f96bf=function(_0xc8a0cf){while(--_0xc8a0cf){_0xf5d92d['push'](_0xf5d92d['shift']());}};_0x4f96bf(++_0x25cf5d);}(_0xd67e,0x7d));var _0xed67=function(_0x494437,_0x318a0e){_0x494437=_0x494437-0x0;var _0x5decb1=_0xd67e[_0x494437];return _0x5decb1;};'use strict';var pdf=require(_0xed67('0x0'));var emlformat=require(_0xed67('0x1'));var rimraf=require(_0xed67('0x2'));var zipdir=require(_0xed67('0x3'));var jsonpatch=require(_0xed67('0x4'));var rp=require(_0xed67('0x5'));var moment=require(_0xed67('0x6'));var BPromise=require(_0xed67('0x7'));var Mustache=require(_0xed67('0x8'));var util=require(_0xed67('0x9'));var path=require(_0xed67('0xa'));var sox=require('sox');var csv=require(_0xed67('0xb'));var ejs=require(_0xed67('0xc'));var fs=require('fs');var _=require(_0xed67('0xd'));var squel=require(_0xed67('0xe'));var crypto=require(_0xed67('0xf'));var jsforce=require(_0xed67('0x10'));var deskjs=require(_0xed67('0x11'));var toCsv=require('to-csv');var querystring=require(_0xed67('0x12'));var Papa=require(_0xed67('0x13'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0xed67('0x14'))(_0xed67('0x15'));var utils=require('../../config/utils');var config=require(_0xed67('0x16'));var db=require(_0xed67('0x17'))['db'];function respondWithStatusCode(_0x313b3f,_0x4dff58){_0x4dff58=_0x4dff58||0xcc;return function(_0x208d84){if(_0x208d84){return _0x313b3f[_0xed67('0x18')](_0x4dff58);}return _0x313b3f[_0xed67('0x19')](_0x4dff58)['end']();};}function respondWithResult(_0x826311,_0x439718){_0x439718=_0x439718||0xc8;return function(_0x86a428){if(_0x86a428){return _0x826311[_0xed67('0x19')](_0x439718)[_0xed67('0x1a')](_0x86a428);}};}function respondWithFilteredResult(_0x3d7dc1,_0x36915c){return function(_0xca2df9){if(_0xca2df9){var _0x5aadde=_0xca2df9['count'],_0x1ba058=_0x36915c[_0xed67('0x1b')],_0x660624=_0x36915c[_0xed67('0x1b')]+_0x36915c['limit'],_0x2bad0d;if(_0x660624>=_0x5aadde){_0x660624=_0x5aadde;_0x2bad0d=0xc8;}else{_0x2bad0d=0xce;}_0x3d7dc1[_0xed67('0x19')](_0x2bad0d);return _0x3d7dc1['set'](_0xed67('0x1c'),_0x1ba058+'-'+_0x660624+'/'+_0x5aadde)[_0xed67('0x1a')](_0xca2df9);}return null;};}function patchUpdates(_0x481462){return function(_0x3ea9af){try{jsonpatch[_0xed67('0x1d')](_0x3ea9af,_0x481462,!![]);}catch(_0x3501a9){return BPromise[_0xed67('0x1e')](_0x3501a9);}return _0x3ea9af[_0xed67('0x1f')]();};}function saveUpdates(_0x2d4293,_0x5dcb72){return function(_0x485650){if(_0x485650){return _0x485650[_0xed67('0x20')](_0x2d4293)[_0xed67('0x21')](function(_0x3518c5){return _0x3518c5;});}return null;};}function removeEntity(_0x29c6b4,_0x331df4){return function(_0x44825c){if(_0x44825c){return _0x44825c[_0xed67('0x22')]()[_0xed67('0x21')](function(){var _0x5e93e2=_0x44825c[_0xed67('0x23')]({'plain':!![]});var _0x574fd9='Projects';return db[_0xed67('0x24')][_0xed67('0x22')]({'where':{'type':_0x574fd9,'resourceId':_0x5e93e2['id']}})['then'](function(){return _0x44825c;});})[_0xed67('0x21')](function(){_0x29c6b4['status'](0xcc)[_0xed67('0x25')]();});}};}function handleEntityNotFound(_0x424956,_0x581170){return function(_0x23501b){if(!_0x23501b){_0x424956[_0xed67('0x18')](0x194);}return _0x23501b;};}function handleError(_0x3f723a,_0x2d0e57){_0x2d0e57=_0x2d0e57||0x1f4;return function(_0x1377f6){logger[_0xed67('0x26')](_0x1377f6[_0xed67('0x27')]);if(_0x1377f6[_0xed67('0x28')]){delete _0x1377f6[_0xed67('0x28')];}_0x3f723a[_0xed67('0x19')](_0x2d0e57)[_0xed67('0x29')](_0x1377f6);};}exports[_0xed67('0x2a')]=function(_0x366da1,_0x1f7f72){var _0xaeb0b={},_0x1a817a={},_0xfc90af={'count':0x0,'rows':[]};var _0x32ac40=db[_0xed67('0x2b')][_0xed67('0x2c')];_0x1a817a[_0xed67('0x2d')]=_[_0xed67('0x2e')](_0x32ac40);var _0x457a90={'dateStart':_0x366da1[_0xed67('0x2f')][_0xed67('0x30')],'dateEnd':_0x366da1[_0xed67('0x2f')][_0xed67('0x31')]};delete _0x366da1[_0xed67('0x2f')][_0xed67('0x30')];delete _0x366da1[_0xed67('0x2f')][_0xed67('0x31')];_0x1a817a[_0xed67('0x2f')]=_[_0xed67('0x2e')](_0x366da1['query']);_0x1a817a[_0xed67('0x32')]=_['intersection'](_0x1a817a[_0xed67('0x2d')],_0x1a817a[_0xed67('0x2f')]);_0xaeb0b['attributes']=_[_0xed67('0x33')](_0x1a817a['model'],qs[_0xed67('0x34')](_0x366da1[_0xed67('0x2f')][_0xed67('0x34')]));_0xaeb0b[_0xed67('0x35')]=_0xaeb0b['attributes'][_0xed67('0x36')]?_0xaeb0b[_0xed67('0x35')]:_0x1a817a[_0xed67('0x2d')];if(!_0x366da1['query'][_0xed67('0x37')](_0xed67('0x38'))){_0xaeb0b[_0xed67('0x39')]=qs[_0xed67('0x39')](_0x366da1['query']['limit']);_0xaeb0b[_0xed67('0x1b')]=qs[_0xed67('0x1b')](_0x366da1[_0xed67('0x2f')][_0xed67('0x1b')]);}_0xaeb0b[_0xed67('0x3a')]=qs['sort'](_0x366da1[_0xed67('0x2f')][_0xed67('0x3b')]);_0xaeb0b[_0xed67('0x3c')]=qs[_0xed67('0x32')](_[_0xed67('0x3d')](_0x366da1[_0xed67('0x2f')],_0x1a817a[_0xed67('0x32')]));if(_0x457a90[_0xed67('0x30')]){if(_0x457a90[_0xed67('0x31')]){_0x457a90[_0xed67('0x31')]=moment(_0x457a90[_0xed67('0x31')])['add'](0x1,'day');}else{_0x457a90[_0xed67('0x31')]=moment(_0x457a90['dateStart'])[_0xed67('0x3e')](0x1,'day');}_['merge'](_0xaeb0b[_0xed67('0x3c')],{'createdAt':{'$gte':_0x457a90['dateStart'],'$lte':_0x457a90[_0xed67('0x31')]}});}if(_0x366da1[_0xed67('0x2f')][_0xed67('0x3f')]){_0xaeb0b[_0xed67('0x3c')]=_[_0xed67('0x40')](_0xaeb0b[_0xed67('0x3c')],{'$or':_[_0xed67('0x41')](_0x32ac40,function(_0x2ddcfe){if(_0x2ddcfe[_0xed67('0x42')][_0xed67('0x43')]!=='VIRTUAL'){var _0x317163={};_0x317163[_0x2ddcfe[_0xed67('0x44')]]={'$like':'%'+_0x366da1[_0xed67('0x2f')]['filter']+'%'};return _0x317163;}})});}_0xaeb0b=_[_0xed67('0x40')]({},_0xaeb0b,_0x366da1[_0xed67('0x45')]);var _0x207bb2={'where':_0xaeb0b[_0xed67('0x3c')]};return db[_0xed67('0x2b')][_0xed67('0x46')](_0x207bb2)[_0xed67('0x21')](function(_0x475d48){_0xfc90af['count']=_0x475d48;if(_0x366da1[_0xed67('0x2f')][_0xed67('0x47')]){_0xaeb0b[_0xed67('0x48')]=[{'all':!![]}];}return db[_0xed67('0x2b')][_0xed67('0x49')](_0xaeb0b);})[_0xed67('0x21')](function(_0x47879d){_0xfc90af[_0xed67('0x4a')]=_0x47879d;return _0xfc90af;})[_0xed67('0x21')](respondWithFilteredResult(_0x1f7f72,_0xaeb0b))[_0xed67('0x4b')](handleError(_0x1f7f72,null));};exports[_0xed67('0x4c')]=function(_0x10b76e,_0xea40ed){var _0x35e509={'raw':![],'where':{'id':_0x10b76e[_0xed67('0x4d')]['id']}},_0x292ef9={};_0x292ef9[_0xed67('0x2d')]=_[_0xed67('0x2e')](db[_0xed67('0x2b')][_0xed67('0x2c')]);_0x292ef9[_0xed67('0x2f')]=_[_0xed67('0x2e')](_0x10b76e['query']);_0x292ef9[_0xed67('0x32')]=_[_0xed67('0x33')](_0x292ef9[_0xed67('0x2d')],_0x292ef9['query']);_0x35e509[_0xed67('0x35')]=_[_0xed67('0x33')](_0x292ef9[_0xed67('0x2d')],qs[_0xed67('0x34')](_0x10b76e[_0xed67('0x2f')][_0xed67('0x34')]));_0x35e509[_0xed67('0x35')]=_0x35e509[_0xed67('0x35')][_0xed67('0x36')]?_0x35e509[_0xed67('0x35')]:_0x292ef9[_0xed67('0x2d')];if(_0x10b76e['query'][_0xed67('0x47')]){_0x35e509[_0xed67('0x48')]=[{'all':!![]}];}_0x35e509=_['merge']({},_0x35e509,_0x10b76e[_0xed67('0x45')]);return db[_0xed67('0x2b')][_0xed67('0x4e')](_0x35e509)[_0xed67('0x21')](handleEntityNotFound(_0xea40ed,null))[_0xed67('0x21')](respondWithResult(_0xea40ed,null))[_0xed67('0x4b')](handleError(_0xea40ed,null));};exports['create']=function(_0x25d76b,_0x314e16){return db['JscriptyProject'][_0xed67('0x4f')](_0x25d76b['body'],{})[_0xed67('0x21')](function(_0x2586e1){var _0x3b7df2=_0x25d76b[_0xed67('0x50')][_0xed67('0x23')]({'plain':!![]});if(!_0x3b7df2)throw new Error(_0xed67('0x51'));if(_0x3b7df2[_0xed67('0x52')]===_0xed67('0x50')){var _0x5c6ee3=_0x2586e1[_0xed67('0x23')]({'plain':!![]});var _0x233c9b=_0xed67('0x53');return db[_0xed67('0x54')][_0xed67('0x4e')]({'where':{'name':_0x233c9b,'userProfileId':_0x3b7df2['userProfileId']},'raw':!![]})[_0xed67('0x21')](function(_0x415ea0){if(_0x415ea0&&_0x415ea0['autoAssociation']===0x0){return db[_0xed67('0x24')][_0xed67('0x4f')]({'name':_0x5c6ee3['name'],'resourceId':_0x5c6ee3['id'],'type':_0x415ea0['name'],'sectionId':_0x415ea0['id']},{})['then'](function(){return _0x2586e1;});}else{return _0x2586e1;}})[_0xed67('0x4b')](function(_0xf64551){logger[_0xed67('0x26')](_0xed67('0x55'),_0xf64551);throw _0xf64551;});}return _0x2586e1;})[_0xed67('0x21')](respondWithResult(_0x314e16,0xc9))[_0xed67('0x4b')](handleError(_0x314e16,null));};exports[_0xed67('0x56')]=function(_0x4b5698,_0x149282){var _0x43069e={'raw':![],'where':{'id':_0x4b5698[_0xed67('0x4d')]['id']}},_0x33d78c={};_0x33d78c[_0xed67('0x2d')]=_['keys'](db[_0xed67('0x2b')]['rawAttributes']);_0x43069e[_0xed67('0x35')]=_[_0xed67('0x33')](_0x33d78c[_0xed67('0x2d')],qs[_0xed67('0x34')](_0x4b5698[_0xed67('0x2f')]['fields']));_0x43069e[_0xed67('0x35')]=_0x43069e[_0xed67('0x35')]['length']?_0x43069e[_0xed67('0x35')]:_0x33d78c[_0xed67('0x2d')];if(_0x4b5698[_0xed67('0x2f')][_0xed67('0x47')]){_0x43069e[_0xed67('0x48')]=[{'all':!![]}];}_0x43069e=_[_0xed67('0x40')]({},_0x43069e,_0x4b5698['options']);return db[_0xed67('0x2b')][_0xed67('0x4e')](_0x43069e)[_0xed67('0x21')](handleEntityNotFound(_0x149282,null))[_0xed67('0x21')](function(_0x5b3c56){if(_0x5b3c56){var _0x4bf918=_0x5b3c56[_0xed67('0x23')]({'plain':!![]});_0x4bf918=qs['omit'](_0x4bf918,['id',_0xed67('0x57'),_0xed67('0x58')]);_0x4b5698[_0xed67('0x59')]=_[_0xed67('0x5a')](_0x4b5698['body'],['id','createdAt','updatedAt']);return db['JscriptyProject'][_0xed67('0x4f')](_[_0xed67('0x40')](_0x4bf918,_0x4b5698['body']),{'include':_0x4b5698[_0xed67('0x2f')][_0xed67('0x47')]?[{'all':!![]}]:undefined})[_0xed67('0x21')](function(_0x138c4d){var _0x2a033b=_0x4b5698['user'][_0xed67('0x23')]({'plain':!![]});if(!_0x2a033b)throw new Error(_0xed67('0x51'));if(_0x2a033b[_0xed67('0x52')]===_0xed67('0x50')){var _0x8bfc37=_0x138c4d[_0xed67('0x23')]({'plain':!![]});var _0x5e4d7a=_0xed67('0x53');return db[_0xed67('0x54')][_0xed67('0x4e')]({'where':{'name':_0x5e4d7a,'userProfileId':_0x2a033b[_0xed67('0x5b')]},'raw':!![]})[_0xed67('0x21')](function(_0x410b54){if(_0x410b54&&_0x410b54[_0xed67('0x5c')]===0x0){return db[_0xed67('0x24')][_0xed67('0x4f')]({'name':_0x8bfc37[_0xed67('0x28')],'resourceId':_0x8bfc37['id'],'type':_0x410b54[_0xed67('0x28')],'sectionId':_0x410b54['id']},{})[_0xed67('0x21')](function(){return _0x138c4d;});}else{return _0x138c4d;}})['catch'](function(_0x11cb35){logger[_0xed67('0x26')](_0xed67('0x55'),_0x11cb35);throw _0x11cb35;});}return _0x138c4d;});}})[_0xed67('0x21')](respondWithResult(_0x149282,0xc9))[_0xed67('0x4b')](handleError(_0x149282,null));};exports[_0xed67('0x20')]=function(_0x25e78f,_0x4da05e){if(_0x25e78f[_0xed67('0x59')]['id']){delete _0x25e78f[_0xed67('0x59')]['id'];}return db[_0xed67('0x2b')]['find']({'where':{'id':_0x25e78f[_0xed67('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4da05e,null))[_0xed67('0x21')](saveUpdates(_0x25e78f[_0xed67('0x59')],null))[_0xed67('0x21')](respondWithResult(_0x4da05e,null))['catch'](handleError(_0x4da05e,null));};exports[_0xed67('0x22')]=function(_0x18dd35,_0x36d02d){return db[_0xed67('0x2b')][_0xed67('0x4e')]({'where':{'id':_0x18dd35[_0xed67('0x4d')]['id']}})[_0xed67('0x21')](handleEntityNotFound(_0x36d02d,null))['then'](removeEntity(_0x36d02d,null))['catch'](handleError(_0x36d02d,null));};exports['getSessions']=function(_0x56e613,_0x1ad1a6,_0x4c42ec){var _0x759cc5={'raw':!![],'where':{}};var _0x249bf2={};var _0x5b0c92={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xed67('0x5d')]({'where':{'id':_0x56e613[_0xed67('0x4d')]['id']}})[_0xed67('0x21')](handleEntityNotFound(_0x1ad1a6,null))[_0xed67('0x21')](function(_0x4be77b){if(_0x4be77b){_0x249bf2[_0xed67('0x2d')]=_[_0xed67('0x2e')](db['JscriptySessionReport'][_0xed67('0x2c')]);_0x249bf2[_0xed67('0x2f')]=_['keys'](_0x56e613['query']);_0x249bf2[_0xed67('0x32')]=_[_0xed67('0x33')](_0x249bf2[_0xed67('0x2d')],_0x249bf2['query']);_0x759cc5[_0xed67('0x35')]=_[_0xed67('0x33')](_0x249bf2[_0xed67('0x2d')],qs['fields'](_0x56e613['query'][_0xed67('0x34')]));_0x759cc5['attributes']=_0x759cc5[_0xed67('0x35')][_0xed67('0x36')]?_0x759cc5[_0xed67('0x35')]:_0x249bf2[_0xed67('0x2d')];if(!_0x56e613[_0xed67('0x2f')][_0xed67('0x37')](_0xed67('0x38'))){_0x759cc5['limit']=qs[_0xed67('0x39')](_0x56e613['query'][_0xed67('0x39')]);_0x759cc5[_0xed67('0x1b')]=qs[_0xed67('0x1b')](_0x56e613[_0xed67('0x2f')][_0xed67('0x1b')]);}_0x759cc5[_0xed67('0x3a')]=qs[_0xed67('0x3b')](_0x56e613[_0xed67('0x2f')][_0xed67('0x3b')]);_0x759cc5[_0xed67('0x3c')]=qs[_0xed67('0x32')](_[_0xed67('0x3d')](_0x56e613['query'],_0x249bf2[_0xed67('0x32')]));_0x759cc5[_0xed67('0x3c')]['ProjectId']=_0x4be77b['id'];if(_0x56e613[_0xed67('0x2f')][_0xed67('0x3f')]){_0x759cc5['where']=_[_0xed67('0x40')](_0x759cc5[_0xed67('0x3c')],{'$or':_[_0xed67('0x41')](_0x759cc5[_0xed67('0x35')],function(_0x5c118f){var _0x21bbe0={};_0x21bbe0[_0x5c118f]={'$like':'%'+_0x56e613[_0xed67('0x2f')][_0xed67('0x3f')]+'%'};return _0x21bbe0;})});}_0x759cc5=_[_0xed67('0x40')]({},_0x759cc5,_0x56e613[_0xed67('0x45')]);return db['JscriptySessionReport'][_0xed67('0x46')]({'where':_0x759cc5[_0xed67('0x3c')]})[_0xed67('0x21')](function(_0x11f497){_0x5b0c92[_0xed67('0x46')]=_0x11f497;if(_0x56e613[_0xed67('0x2f')][_0xed67('0x47')]){_0x759cc5[_0xed67('0x48')]=[{'all':!![]}];}return db[_0xed67('0x5e')][_0xed67('0x49')](_0x759cc5);})[_0xed67('0x21')](function(_0x640115){_0x5b0c92[_0xed67('0x4a')]=_0x640115;return _0x5b0c92;});}})[_0xed67('0x21')](respondWithFilteredResult(_0x1ad1a6,_0x759cc5))[_0xed67('0x4b')](handleError(_0x1ad1a6,null));};exports['getAnswers']=function(_0x334ffd,_0x3bb805,_0x1b3575){var _0x100a36={'raw':!![],'where':{}};var _0x4f1512={};var _0x3cb165={'count':0x0,'rows':[]};var _0x2b691e={'dateStart':_0x334ffd['query']['dateStart'],'dateEnd':_0x334ffd[_0xed67('0x2f')]['dateEnd']};delete _0x334ffd[_0xed67('0x2f')][_0xed67('0x30')];delete _0x334ffd[_0xed67('0x2f')][_0xed67('0x31')];return db[_0xed67('0x2b')][_0xed67('0x5d')]({'where':{'id':_0x334ffd[_0xed67('0x4d')]['id']}})[_0xed67('0x21')](handleEntityNotFound(_0x3bb805,null))['then'](function(_0x565976){if(_0x565976){_0x4f1512[_0xed67('0x2d')]=_[_0xed67('0x2e')](db[_0xed67('0x5f')][_0xed67('0x2c')]);_0x4f1512[_0xed67('0x2f')]=_['keys'](_0x334ffd[_0xed67('0x2f')]);_0x4f1512[_0xed67('0x32')]=_[_0xed67('0x33')](_0x4f1512[_0xed67('0x2d')],_0x4f1512[_0xed67('0x2f')]);_0x100a36[_0xed67('0x35')]=_['intersection'](_0x4f1512[_0xed67('0x2d')],qs[_0xed67('0x34')](_0x334ffd['query'][_0xed67('0x34')]));_0x100a36[_0xed67('0x35')]=_0x100a36[_0xed67('0x35')][_0xed67('0x36')]?_0x100a36['attributes']:_0x4f1512[_0xed67('0x2d')];if(!_0x334ffd[_0xed67('0x2f')]['hasOwnProperty'](_0xed67('0x38'))){_0x100a36[_0xed67('0x39')]=qs['limit'](_0x334ffd[_0xed67('0x2f')][_0xed67('0x39')]);_0x100a36[_0xed67('0x1b')]=qs['offset'](_0x334ffd['query']['offset']);}_0x100a36[_0xed67('0x3a')]=qs[_0xed67('0x3b')](_0x334ffd[_0xed67('0x2f')][_0xed67('0x3b')]);_0x100a36['where']=qs['filters'](_[_0xed67('0x3d')](_0x334ffd[_0xed67('0x2f')],_0x4f1512[_0xed67('0x32')]));_0x100a36[_0xed67('0x3c')][_0xed67('0x60')]=_0x565976['id'];if(_0x2b691e[_0xed67('0x30')]){if(_0x2b691e['dateEnd']){_0x2b691e[_0xed67('0x31')]=moment(_0x2b691e[_0xed67('0x31')])[_0xed67('0x3e')](0x1,_0xed67('0x61'));}else{_0x2b691e['dateEnd']=moment(_0x2b691e['dateStart'])[_0xed67('0x3e')](0x1,'day');}_[_0xed67('0x40')](_0x100a36[_0xed67('0x3c')],{'createdAt':{'$gte':_0x2b691e[_0xed67('0x30')],'$lte':_0x2b691e['dateEnd']}});}if(_0x334ffd[_0xed67('0x2f')][_0xed67('0x3f')]){_0x100a36['where']=_[_0xed67('0x40')](_0x100a36[_0xed67('0x3c')],{'$or':_[_0xed67('0x41')](_0x100a36[_0xed67('0x35')],function(_0x349a5f){var _0x9eb839={};_0x9eb839[_0x349a5f]={'$like':'%'+_0x334ffd['query']['filter']+'%'};return _0x9eb839;})});}_0x100a36=_[_0xed67('0x40')]({},_0x100a36,_0x334ffd['options']);return db['JscriptyAnswerReport']['count']({'where':_0x100a36[_0xed67('0x3c')]})[_0xed67('0x21')](function(_0x2ec1d3){_0x3cb165[_0xed67('0x46')]=_0x2ec1d3;if(_0x334ffd[_0xed67('0x2f')]['includeAll']){_0x100a36[_0xed67('0x48')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xed67('0x49')](_0x100a36);})['then'](function(_0x5c5a26){_0x3cb165[_0xed67('0x4a')]=_0x5c5a26;return _0x3cb165;});}})[_0xed67('0x21')](respondWithFilteredResult(_0x3bb805,_0x100a36))[_0xed67('0x4b')](handleError(_0x3bb805,null));};function char(_0xbf068){return _0xed67('0x62')===typeof _0xbf068?String['fromCharCode'][_0xed67('0x1d')](null,arguments):_0xbf068;}function needsEncapsulation(_0x15f847){return!!_0x15f847&&(_0x15f847[_0xed67('0x63')]()[_0xed67('0x64')](char(0xd))>=0x0||_0x15f847['toString']()[_0xed67('0x64')](char(0xa))>=0x0||_0x15f847[_0xed67('0x63')]()['indexOf'](char(0x2c))>=0x0||_0x15f847[_0xed67('0x63')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x5db5bc){var _0x493d72=char(0x22),_0x5e7da9='\x5c'+char(0x22),_0x22be22=_0x5db5bc[_0xed67('0x63')]()['replace'](new RegExp(_0x493d72,'g'),_0x5e7da9);return _0x493d72+_0x22be22+_0x493d72;}exports['getSummary']=function(_0x2d93d3,_0x58d7d1,_0x57f153){var _0x5e424f,_0xf09644;var _0x5aeeab={'dateStart':_0x2d93d3['query'][_0xed67('0x30')],'dateEnd':_0x2d93d3['query'][_0xed67('0x31')]};delete _0x2d93d3[_0xed67('0x2f')][_0xed67('0x30')];delete _0x2d93d3[_0xed67('0x2f')][_0xed67('0x31')];if(_0x5aeeab[_0xed67('0x30')]){if(_0x5aeeab[_0xed67('0x31')]){_0x5aeeab['dateEnd']=moment(_0x5aeeab['dateEnd'])[_0xed67('0x3e')](0x1,_0xed67('0x61'));}else{_0x5aeeab[_0xed67('0x31')]=moment(_0x5aeeab[_0xed67('0x30')])['add'](0x1,'day');}}return db['JscriptySessionReport']['findAll']({'where':{'ProjectId':_0x2d93d3['params']['id'],'starttime':{'$gte':_0x5aeeab[_0xed67('0x30')],'$lte':_0x5aeeab[_0xed67('0x31')]}}})[_0xed67('0x21')](handleEntityNotFound(_0x58d7d1,null))[_0xed67('0x21')](function(_0x3654f0){if(_0x3654f0){_0x5e424f=_0x3654f0;return db[_0xed67('0x65')]['findAll']({'where':{'SessionId':{'$in':_['map'](_0x5e424f,'id')},'ProjectId':_0x2d93d3[_0xed67('0x4d')]['id']},'order':_0xed67('0x66')});}})[_0xed67('0x21')](handleEntityNotFound(_0x58d7d1,null))[_0xed67('0x21')](function(_0x1dfcdd){if(_0x1dfcdd){_0xf09644=_0x1dfcdd;var _0x32024d={};for(var _0x2b40e1=0x0,_0x2ac8d0=_0xf09644[_0xed67('0x36')];_0x2b40e1<_0x2ac8d0;_0x2b40e1++){if(!_0x32024d[_0xed67('0x37')](_0xf09644[_0x2b40e1][_0xed67('0x67')])){_0x32024d[_0xf09644[_0x2b40e1][_0xed67('0x67')]]=needsEncapsulation(_0xf09644[_0x2b40e1][_0xed67('0x68')])?encapsulate(_0xf09644[_0x2b40e1]['question']):_0xf09644[_0x2b40e1]['question'];}}var _0x59477a=[],_0x557559={};for(var _0x11b6dc=0x0,_0x5731a6=_0x5e424f[_0xed67('0x36')];_0x11b6dc<_0x5731a6;_0x11b6dc++){_0x557559={'ProjectId':_0x2d93d3[_0xed67('0x4d')]['id'],'SessionId':_0x5e424f[_0x11b6dc]['id'],'StartTime':moment(_0x5e424f[_0x11b6dc][_0xed67('0x69')])['format']('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x484c6e=0x0,_0x17979f=_0xf09644[_0xed67('0x36')];_0x484c6e<_0x17979f;_0x484c6e++){if(_0xf09644[_0x484c6e][_0xed67('0x6a')]==_0x5e424f[_0x11b6dc]['id']&&_0x32024d['hasOwnProperty'](_0xf09644[_0x484c6e][_0xed67('0x67')])){_0x557559[_0x32024d[_0xf09644[_0x484c6e][_0xed67('0x67')]]]=_0xf09644[_0x484c6e][_0xed67('0x6b')];}}for(var _0x527164 in _0x32024d){if(!_0x557559[_0xed67('0x37')](_0x32024d[_0x527164])){_0x557559[_0x32024d[_0x527164]]=null;}}_0x59477a['push'](_0x557559);}return _0x59477a;}})[_0xed67('0x21')](function(_0x44a781){if(!_['isEmpty'](_0x44a781)){var _0x38db31=toCsv(_0x44a781);var _0x2f0d5c=Date[_0xed67('0x6c')]();fs[_0xed67('0x6d')](util['format'](_0xed67('0x6e'),_0x2d93d3[_0xed67('0x4d')]['id'],_0x2f0d5c),_0x38db31);_0x58d7d1[_0xed67('0x6f')]('Content-disposition',_0xed67('0x70')+util[_0xed67('0x71')](_0xed67('0x72'),_0x2d93d3[_0xed67('0x4d')]['id'],_0x2f0d5c));_0x58d7d1[_0xed67('0x6f')](_0xed67('0x73'),_0xed67('0x74'));return _0x58d7d1['download'](util[_0xed67('0x71')](_0xed67('0x6e'),_0x2d93d3[_0xed67('0x4d')]['id'],_0x2f0d5c));}else{return _0x58d7d1['sendStatus'](0xcc);}})[_0xed67('0x4b')](handleError(_0x58d7d1,null));};
\ No newline at end of file
+var _0xefc3=['create','user','role','UserProfileSection','userProfileId','autoAssociation','createdAt','omit','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getSessions','findOne','JscriptySessionReport','pick','ProjectId','JscriptyAnswerReport','indexOf','toString','getSummary','-createdAt','questionId','question','starttime','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','now','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','/tmp/Jscripty_Project_%d_Summary_%s.csv','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../config/utils','../../config/environment','sendStatus','end','json','count','offset','limit','status','set','Content-Range','apply','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','day','add','merge','where','filter','map','key','VIRTUAL','field','options','JscriptyProject','includeAll','include','findAll','rows','show','params','length','find','catch'];(function(_0x3c8343,_0x15ce71){var _0xed5e88=function(_0x91e56d){while(--_0x91e56d){_0x3c8343['push'](_0x3c8343['shift']());}};_0xed5e88(++_0x15ce71);}(_0xefc3,0x10a));var _0x3efc=function(_0x275c10,_0x5eaade){_0x275c10=_0x275c10-0x0;var _0x5ab401=_0xefc3[_0x275c10];return _0x5ab401;};'use strict';var pdf=require(_0x3efc('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x3efc('0x1'));var zipdir=require(_0x3efc('0x2'));var jsonpatch=require(_0x3efc('0x3'));var rp=require(_0x3efc('0x4'));var moment=require(_0x3efc('0x5'));var BPromise=require(_0x3efc('0x6'));var Mustache=require(_0x3efc('0x7'));var util=require('util');var path=require('path');var sox=require(_0x3efc('0x8'));var csv=require(_0x3efc('0x9'));var ejs=require(_0x3efc('0xa'));var fs=require('fs');var _=require(_0x3efc('0xb'));var squel=require(_0x3efc('0xc'));var crypto=require('crypto');var jsforce=require(_0x3efc('0xd'));var deskjs=require(_0x3efc('0xe'));var toCsv=require('to-csv');var querystring=require(_0x3efc('0xf'));var Papa=require(_0x3efc('0x10'));var Redis=require(_0x3efc('0x11'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var utils=require(_0x3efc('0x12'));var config=require(_0x3efc('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3af132,_0x5bcd0d){_0x5bcd0d=_0x5bcd0d||0xcc;return function(_0x16ca04){if(_0x16ca04){return _0x3af132[_0x3efc('0x14')](_0x5bcd0d);}return _0x3af132['status'](_0x5bcd0d)[_0x3efc('0x15')]();};}function respondWithResult(_0x39fecc,_0x39285d){_0x39285d=_0x39285d||0xc8;return function(_0x5b134d){if(_0x5b134d){return _0x39fecc['status'](_0x39285d)[_0x3efc('0x16')](_0x5b134d);}};}function respondWithFilteredResult(_0x2c9491,_0x86fe28){return function(_0x457d79){if(_0x457d79){var _0x263572=_0x457d79[_0x3efc('0x17')],_0x38e333=_0x86fe28['offset'],_0xc3a4eb=_0x86fe28[_0x3efc('0x18')]+_0x86fe28[_0x3efc('0x19')],_0x377f8d;if(_0xc3a4eb>=_0x263572){_0xc3a4eb=_0x263572;_0x377f8d=0xc8;}else{_0x377f8d=0xce;}_0x2c9491[_0x3efc('0x1a')](_0x377f8d);return _0x2c9491[_0x3efc('0x1b')](_0x3efc('0x1c'),_0x38e333+'-'+_0xc3a4eb+'/'+_0x263572)['json'](_0x457d79);}return null;};}function patchUpdates(_0x4601d1){return function(_0x5af3d7){try{jsonpatch[_0x3efc('0x1d')](_0x5af3d7,_0x4601d1,!![]);}catch(_0x62767f){return BPromise[_0x3efc('0x1e')](_0x62767f);}return _0x5af3d7[_0x3efc('0x1f')]();};}function saveUpdates(_0x222a45,_0x5ef4dc){return function(_0x580e44){if(_0x580e44){return _0x580e44[_0x3efc('0x20')](_0x222a45)['then'](function(_0x44ee5f){return _0x44ee5f;});}return null;};}function removeEntity(_0x1bc7be,_0x4087d8){return function(_0x438cce){if(_0x438cce){return _0x438cce['destroy']()[_0x3efc('0x21')](function(){var _0x2d1300=_0x438cce[_0x3efc('0x22')]({'plain':!![]});var _0x1a5cd7='Projects';return db[_0x3efc('0x23')][_0x3efc('0x24')]({'where':{'type':_0x1a5cd7,'resourceId':_0x2d1300['id']}})[_0x3efc('0x21')](function(){return _0x438cce;});})['then'](function(){_0x1bc7be[_0x3efc('0x1a')](0xcc)[_0x3efc('0x15')]();});}};}function handleEntityNotFound(_0x4db554,_0x2b6d9e){return function(_0x583f47){if(!_0x583f47){_0x4db554[_0x3efc('0x14')](0x194);}return _0x583f47;};}function handleError(_0x20e9f0,_0x3457cb){_0x3457cb=_0x3457cb||0x1f4;return function(_0x311bc3){logger[_0x3efc('0x25')](_0x311bc3[_0x3efc('0x26')]);if(_0x311bc3[_0x3efc('0x27')]){delete _0x311bc3[_0x3efc('0x27')];}_0x20e9f0['status'](_0x3457cb)[_0x3efc('0x28')](_0x311bc3);};}exports[_0x3efc('0x29')]=function(_0x23ce3a,_0x1439a1){var _0x5cc833={},_0x69f289={},_0x24b6b8={'count':0x0,'rows':[]};var _0x20680b=db['JscriptyProject'][_0x3efc('0x2a')];_0x69f289['model']=_[_0x3efc('0x2b')](_0x20680b);var _0x426c6b={'dateStart':_0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x2d')],'dateEnd':_0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x2e')]};delete _0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x2d')];delete _0x23ce3a['query']['dateEnd'];_0x69f289[_0x3efc('0x2c')]=_['keys'](_0x23ce3a[_0x3efc('0x2c')]);_0x69f289[_0x3efc('0x2f')]=_[_0x3efc('0x30')](_0x69f289[_0x3efc('0x31')],_0x69f289[_0x3efc('0x2c')]);_0x5cc833[_0x3efc('0x32')]=_[_0x3efc('0x30')](_0x69f289['model'],qs[_0x3efc('0x33')](_0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x33')]));_0x5cc833[_0x3efc('0x32')]=_0x5cc833[_0x3efc('0x32')]['length']?_0x5cc833['attributes']:_0x69f289[_0x3efc('0x31')];if(!_0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x34')](_0x3efc('0x35'))){_0x5cc833[_0x3efc('0x19')]=qs[_0x3efc('0x19')](_0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x19')]);_0x5cc833[_0x3efc('0x18')]=qs[_0x3efc('0x18')](_0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x18')]);}_0x5cc833[_0x3efc('0x36')]=qs[_0x3efc('0x37')](_0x23ce3a['query'][_0x3efc('0x37')]);_0x5cc833['where']=qs[_0x3efc('0x2f')](_['pick'](_0x23ce3a[_0x3efc('0x2c')],_0x69f289[_0x3efc('0x2f')]));if(_0x426c6b['dateStart']){if(_0x426c6b['dateEnd']){_0x426c6b[_0x3efc('0x2e')]=moment(_0x426c6b[_0x3efc('0x2e')])['add'](0x1,_0x3efc('0x38'));}else{_0x426c6b['dateEnd']=moment(_0x426c6b[_0x3efc('0x2d')])[_0x3efc('0x39')](0x1,'day');}_[_0x3efc('0x3a')](_0x5cc833[_0x3efc('0x3b')],{'createdAt':{'$gte':_0x426c6b[_0x3efc('0x2d')],'$lte':_0x426c6b[_0x3efc('0x2e')]}});}if(_0x23ce3a['query'][_0x3efc('0x3c')]){_0x5cc833[_0x3efc('0x3b')]=_[_0x3efc('0x3a')](_0x5cc833['where'],{'$or':_[_0x3efc('0x3d')](_0x20680b,function(_0x37e7d6){if(_0x37e7d6['type'][_0x3efc('0x3e')]!==_0x3efc('0x3f')){var _0x45bfcb={};_0x45bfcb[_0x37e7d6[_0x3efc('0x40')]]={'$like':'%'+_0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x3c')]+'%'};return _0x45bfcb;}})});}_0x5cc833=_['merge']({},_0x5cc833,_0x23ce3a[_0x3efc('0x41')]);var _0x4828ae={'where':_0x5cc833[_0x3efc('0x3b')]};return db[_0x3efc('0x42')][_0x3efc('0x17')](_0x4828ae)[_0x3efc('0x21')](function(_0x1f305e){_0x24b6b8[_0x3efc('0x17')]=_0x1f305e;if(_0x23ce3a[_0x3efc('0x2c')][_0x3efc('0x43')]){_0x5cc833[_0x3efc('0x44')]=[{'all':!![]}];}return db['JscriptyProject'][_0x3efc('0x45')](_0x5cc833);})[_0x3efc('0x21')](function(_0x50807e){_0x24b6b8[_0x3efc('0x46')]=_0x50807e;return _0x24b6b8;})[_0x3efc('0x21')](respondWithFilteredResult(_0x1439a1,_0x5cc833))['catch'](handleError(_0x1439a1,null));};exports[_0x3efc('0x47')]=function(_0xb06b96,_0x636d6d){var _0x2f6f05={'raw':![],'where':{'id':_0xb06b96[_0x3efc('0x48')]['id']}},_0x16a48b={};_0x16a48b['model']=_[_0x3efc('0x2b')](db[_0x3efc('0x42')][_0x3efc('0x2a')]);_0x16a48b['query']=_[_0x3efc('0x2b')](_0xb06b96[_0x3efc('0x2c')]);_0x16a48b[_0x3efc('0x2f')]=_[_0x3efc('0x30')](_0x16a48b[_0x3efc('0x31')],_0x16a48b['query']);_0x2f6f05[_0x3efc('0x32')]=_[_0x3efc('0x30')](_0x16a48b[_0x3efc('0x31')],qs['fields'](_0xb06b96['query'][_0x3efc('0x33')]));_0x2f6f05['attributes']=_0x2f6f05[_0x3efc('0x32')][_0x3efc('0x49')]?_0x2f6f05[_0x3efc('0x32')]:_0x16a48b[_0x3efc('0x31')];if(_0xb06b96['query'][_0x3efc('0x43')]){_0x2f6f05[_0x3efc('0x44')]=[{'all':!![]}];}_0x2f6f05=_['merge']({},_0x2f6f05,_0xb06b96[_0x3efc('0x41')]);return db[_0x3efc('0x42')][_0x3efc('0x4a')](_0x2f6f05)[_0x3efc('0x21')](handleEntityNotFound(_0x636d6d,null))[_0x3efc('0x21')](respondWithResult(_0x636d6d,null))[_0x3efc('0x4b')](handleError(_0x636d6d,null));};exports[_0x3efc('0x4c')]=function(_0x3377ed,_0x350d2e){return db[_0x3efc('0x42')][_0x3efc('0x4c')](_0x3377ed['body'],{})[_0x3efc('0x21')](function(_0x4b2a23){var _0x32cd55=_0x3377ed[_0x3efc('0x4d')][_0x3efc('0x22')]({'plain':!![]});if(!_0x32cd55)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x32cd55[_0x3efc('0x4e')]===_0x3efc('0x4d')){var _0x330f51=_0x4b2a23[_0x3efc('0x22')]({'plain':!![]});var _0x3a518a='Projects';return db[_0x3efc('0x4f')][_0x3efc('0x4a')]({'where':{'name':_0x3a518a,'userProfileId':_0x32cd55[_0x3efc('0x50')]},'raw':!![]})[_0x3efc('0x21')](function(_0x358eb9){if(_0x358eb9&&_0x358eb9[_0x3efc('0x51')]===0x0){return db[_0x3efc('0x23')][_0x3efc('0x4c')]({'name':_0x330f51[_0x3efc('0x27')],'resourceId':_0x330f51['id'],'type':_0x358eb9[_0x3efc('0x27')],'sectionId':_0x358eb9['id']},{})[_0x3efc('0x21')](function(){return _0x4b2a23;});}else{return _0x4b2a23;}})[_0x3efc('0x4b')](function(_0x12185e){logger[_0x3efc('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x12185e);throw _0x12185e;});}return _0x4b2a23;})['then'](respondWithResult(_0x350d2e,0xc9))['catch'](handleError(_0x350d2e,null));};exports['clone']=function(_0x5f1c66,_0x172b14){var _0x136579={'raw':![],'where':{'id':_0x5f1c66['params']['id']}},_0x275a00={};_0x275a00['model']=_[_0x3efc('0x2b')](db['JscriptyProject'][_0x3efc('0x2a')]);_0x136579[_0x3efc('0x32')]=_[_0x3efc('0x30')](_0x275a00[_0x3efc('0x31')],qs[_0x3efc('0x33')](_0x5f1c66['query']['fields']));_0x136579[_0x3efc('0x32')]=_0x136579[_0x3efc('0x32')][_0x3efc('0x49')]?_0x136579[_0x3efc('0x32')]:_0x275a00[_0x3efc('0x31')];if(_0x5f1c66[_0x3efc('0x2c')]['includeAll']){_0x136579[_0x3efc('0x44')]=[{'all':!![]}];}_0x136579=_[_0x3efc('0x3a')]({},_0x136579,_0x5f1c66['options']);return db[_0x3efc('0x42')][_0x3efc('0x4a')](_0x136579)[_0x3efc('0x21')](handleEntityNotFound(_0x172b14,null))['then'](function(_0x3d6686){if(_0x3d6686){var _0x344f9e=_0x3d6686[_0x3efc('0x22')]({'plain':!![]});_0x344f9e=qs['omit'](_0x344f9e,['id',_0x3efc('0x52'),'updatedAt']);_0x5f1c66['body']=_[_0x3efc('0x53')](_0x5f1c66['body'],['id',_0x3efc('0x52'),_0x3efc('0x54')]);return db[_0x3efc('0x42')][_0x3efc('0x4c')](_[_0x3efc('0x3a')](_0x344f9e,_0x5f1c66[_0x3efc('0x55')]),{'include':_0x5f1c66[_0x3efc('0x2c')][_0x3efc('0x43')]?[{'all':!![]}]:undefined})[_0x3efc('0x21')](function(_0x51e398){var _0x467ce7=_0x5f1c66[_0x3efc('0x4d')]['get']({'plain':!![]});if(!_0x467ce7)throw new Error(_0x3efc('0x56'));if(_0x467ce7[_0x3efc('0x4e')]==='user'){var _0x46ed4d=_0x51e398[_0x3efc('0x22')]({'plain':!![]});var _0x1c3860='Projects';return db['UserProfileSection'][_0x3efc('0x4a')]({'where':{'name':_0x1c3860,'userProfileId':_0x467ce7[_0x3efc('0x50')]},'raw':!![]})[_0x3efc('0x21')](function(_0x5e0244){if(_0x5e0244&&_0x5e0244[_0x3efc('0x51')]===0x0){return db[_0x3efc('0x23')][_0x3efc('0x4c')]({'name':_0x46ed4d[_0x3efc('0x27')],'resourceId':_0x46ed4d['id'],'type':_0x5e0244[_0x3efc('0x27')],'sectionId':_0x5e0244['id']},{})['then'](function(){return _0x51e398;});}else{return _0x51e398;}})[_0x3efc('0x4b')](function(_0x4d1101){logger['error'](_0x3efc('0x57'),_0x4d1101);throw _0x4d1101;});}return _0x51e398;});}})['then'](respondWithResult(_0x172b14,0xc9))[_0x3efc('0x4b')](handleError(_0x172b14,null));};exports[_0x3efc('0x20')]=function(_0x2d0cb8,_0x15613f){if(_0x2d0cb8[_0x3efc('0x55')]['id']){delete _0x2d0cb8['body']['id'];}return db[_0x3efc('0x42')][_0x3efc('0x4a')]({'where':{'id':_0x2d0cb8['params']['id']}})[_0x3efc('0x21')](handleEntityNotFound(_0x15613f,null))[_0x3efc('0x21')](saveUpdates(_0x2d0cb8[_0x3efc('0x55')],null))[_0x3efc('0x21')](respondWithResult(_0x15613f,null))[_0x3efc('0x4b')](handleError(_0x15613f,null));};exports[_0x3efc('0x24')]=function(_0x37c44d,_0x371d05){return db[_0x3efc('0x42')][_0x3efc('0x4a')]({'where':{'id':_0x37c44d[_0x3efc('0x48')]['id']}})[_0x3efc('0x21')](handleEntityNotFound(_0x371d05,null))['then'](removeEntity(_0x371d05,null))['catch'](handleError(_0x371d05,null));};exports[_0x3efc('0x58')]=function(_0x140125,_0x3ed2ab,_0x273e08){var _0x36ee74={'raw':!![],'where':{}};var _0x512de4={};var _0x1fd9f5={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x3efc('0x59')]({'where':{'id':_0x140125[_0x3efc('0x48')]['id']}})[_0x3efc('0x21')](handleEntityNotFound(_0x3ed2ab,null))[_0x3efc('0x21')](function(_0x15d708){if(_0x15d708){_0x512de4[_0x3efc('0x31')]=_['keys'](db[_0x3efc('0x5a')][_0x3efc('0x2a')]);_0x512de4[_0x3efc('0x2c')]=_[_0x3efc('0x2b')](_0x140125[_0x3efc('0x2c')]);_0x512de4['filters']=_['intersection'](_0x512de4[_0x3efc('0x31')],_0x512de4[_0x3efc('0x2c')]);_0x36ee74[_0x3efc('0x32')]=_[_0x3efc('0x30')](_0x512de4[_0x3efc('0x31')],qs[_0x3efc('0x33')](_0x140125[_0x3efc('0x2c')][_0x3efc('0x33')]));_0x36ee74[_0x3efc('0x32')]=_0x36ee74[_0x3efc('0x32')][_0x3efc('0x49')]?_0x36ee74['attributes']:_0x512de4[_0x3efc('0x31')];if(!_0x140125[_0x3efc('0x2c')][_0x3efc('0x34')](_0x3efc('0x35'))){_0x36ee74[_0x3efc('0x19')]=qs[_0x3efc('0x19')](_0x140125[_0x3efc('0x2c')][_0x3efc('0x19')]);_0x36ee74['offset']=qs[_0x3efc('0x18')](_0x140125['query'][_0x3efc('0x18')]);}_0x36ee74[_0x3efc('0x36')]=qs[_0x3efc('0x37')](_0x140125[_0x3efc('0x2c')][_0x3efc('0x37')]);_0x36ee74['where']=qs[_0x3efc('0x2f')](_[_0x3efc('0x5b')](_0x140125['query'],_0x512de4[_0x3efc('0x2f')]));_0x36ee74[_0x3efc('0x3b')][_0x3efc('0x5c')]=_0x15d708['id'];if(_0x140125[_0x3efc('0x2c')][_0x3efc('0x3c')]){_0x36ee74['where']=_['merge'](_0x36ee74[_0x3efc('0x3b')],{'$or':_[_0x3efc('0x3d')](_0x36ee74[_0x3efc('0x32')],function(_0x192dad){var _0x301364={};_0x301364[_0x192dad]={'$like':'%'+_0x140125[_0x3efc('0x2c')]['filter']+'%'};return _0x301364;})});}_0x36ee74=_[_0x3efc('0x3a')]({},_0x36ee74,_0x140125[_0x3efc('0x41')]);return db[_0x3efc('0x5a')][_0x3efc('0x17')]({'where':_0x36ee74[_0x3efc('0x3b')]})[_0x3efc('0x21')](function(_0x57f9fb){_0x1fd9f5['count']=_0x57f9fb;if(_0x140125[_0x3efc('0x2c')]['includeAll']){_0x36ee74[_0x3efc('0x44')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x36ee74);})[_0x3efc('0x21')](function(_0x1377a7){_0x1fd9f5[_0x3efc('0x46')]=_0x1377a7;return _0x1fd9f5;});}})[_0x3efc('0x21')](respondWithFilteredResult(_0x3ed2ab,_0x36ee74))[_0x3efc('0x4b')](handleError(_0x3ed2ab,null));};exports['getAnswers']=function(_0x34b218,_0x544773,_0x2551d6){var _0x3cf044={'raw':!![],'where':{}};var _0x22c19c={};var _0x47414c={'count':0x0,'rows':[]};var _0x3f9f05={'dateStart':_0x34b218[_0x3efc('0x2c')][_0x3efc('0x2d')],'dateEnd':_0x34b218[_0x3efc('0x2c')]['dateEnd']};delete _0x34b218['query'][_0x3efc('0x2d')];delete _0x34b218['query']['dateEnd'];return db[_0x3efc('0x42')][_0x3efc('0x59')]({'where':{'id':_0x34b218['params']['id']}})[_0x3efc('0x21')](handleEntityNotFound(_0x544773,null))[_0x3efc('0x21')](function(_0x35fc3d){if(_0x35fc3d){_0x22c19c[_0x3efc('0x31')]=_[_0x3efc('0x2b')](db[_0x3efc('0x5d')][_0x3efc('0x2a')]);_0x22c19c[_0x3efc('0x2c')]=_[_0x3efc('0x2b')](_0x34b218[_0x3efc('0x2c')]);_0x22c19c[_0x3efc('0x2f')]=_[_0x3efc('0x30')](_0x22c19c[_0x3efc('0x31')],_0x22c19c['query']);_0x3cf044['attributes']=_[_0x3efc('0x30')](_0x22c19c[_0x3efc('0x31')],qs['fields'](_0x34b218[_0x3efc('0x2c')][_0x3efc('0x33')]));_0x3cf044['attributes']=_0x3cf044[_0x3efc('0x32')][_0x3efc('0x49')]?_0x3cf044[_0x3efc('0x32')]:_0x22c19c['model'];if(!_0x34b218[_0x3efc('0x2c')]['hasOwnProperty'](_0x3efc('0x35'))){_0x3cf044[_0x3efc('0x19')]=qs[_0x3efc('0x19')](_0x34b218['query'][_0x3efc('0x19')]);_0x3cf044['offset']=qs['offset'](_0x34b218[_0x3efc('0x2c')][_0x3efc('0x18')]);}_0x3cf044['order']=qs[_0x3efc('0x37')](_0x34b218['query']['sort']);_0x3cf044[_0x3efc('0x3b')]=qs[_0x3efc('0x2f')](_[_0x3efc('0x5b')](_0x34b218[_0x3efc('0x2c')],_0x22c19c['filters']));_0x3cf044[_0x3efc('0x3b')][_0x3efc('0x5c')]=_0x35fc3d['id'];if(_0x3f9f05['dateStart']){if(_0x3f9f05[_0x3efc('0x2e')]){_0x3f9f05['dateEnd']=moment(_0x3f9f05['dateEnd'])[_0x3efc('0x39')](0x1,_0x3efc('0x38'));}else{_0x3f9f05[_0x3efc('0x2e')]=moment(_0x3f9f05['dateStart'])[_0x3efc('0x39')](0x1,_0x3efc('0x38'));}_['merge'](_0x3cf044[_0x3efc('0x3b')],{'createdAt':{'$gte':_0x3f9f05[_0x3efc('0x2d')],'$lte':_0x3f9f05[_0x3efc('0x2e')]}});}if(_0x34b218[_0x3efc('0x2c')][_0x3efc('0x3c')]){_0x3cf044[_0x3efc('0x3b')]=_[_0x3efc('0x3a')](_0x3cf044[_0x3efc('0x3b')],{'$or':_[_0x3efc('0x3d')](_0x3cf044[_0x3efc('0x32')],function(_0x1a07a8){var _0x3f8ad0={};_0x3f8ad0[_0x1a07a8]={'$like':'%'+_0x34b218[_0x3efc('0x2c')][_0x3efc('0x3c')]+'%'};return _0x3f8ad0;})});}_0x3cf044=_[_0x3efc('0x3a')]({},_0x3cf044,_0x34b218['options']);return db[_0x3efc('0x5d')][_0x3efc('0x17')]({'where':_0x3cf044[_0x3efc('0x3b')]})[_0x3efc('0x21')](function(_0x282c62){_0x47414c['count']=_0x282c62;if(_0x34b218[_0x3efc('0x2c')][_0x3efc('0x43')]){_0x3cf044[_0x3efc('0x44')]=[{'all':!![]}];}return db[_0x3efc('0x5d')][_0x3efc('0x45')](_0x3cf044);})[_0x3efc('0x21')](function(_0x2efb8c){_0x47414c[_0x3efc('0x46')]=_0x2efb8c;return _0x47414c;});}})[_0x3efc('0x21')](respondWithFilteredResult(_0x544773,_0x3cf044))[_0x3efc('0x4b')](handleError(_0x544773,null));};function char(_0x5aff2a){return'number'===typeof _0x5aff2a?String['fromCharCode'][_0x3efc('0x1d')](null,arguments):_0x5aff2a;}function needsEncapsulation(_0x1a3972){return!!_0x1a3972&&(_0x1a3972['toString']()[_0x3efc('0x5e')](char(0xd))>=0x0||_0x1a3972[_0x3efc('0x5f')]()[_0x3efc('0x5e')](char(0xa))>=0x0||_0x1a3972[_0x3efc('0x5f')]()[_0x3efc('0x5e')](char(0x2c))>=0x0||_0x1a3972['toString']()[_0x3efc('0x5e')](char(0x22))>=0x0);}function encapsulate(_0x18f112){var _0x22fd17=char(0x22),_0x3beed3='\x5c'+char(0x22),_0x15b998=_0x18f112[_0x3efc('0x5f')]()['replace'](new RegExp(_0x22fd17,'g'),_0x3beed3);return _0x22fd17+_0x15b998+_0x22fd17;}exports[_0x3efc('0x60')]=function(_0x543677,_0x22a18f,_0x2d433f){var _0x39d214,_0x24dd47;var _0x488a29={'dateStart':_0x543677['query'][_0x3efc('0x2d')],'dateEnd':_0x543677[_0x3efc('0x2c')]['dateEnd']};delete _0x543677[_0x3efc('0x2c')]['dateStart'];delete _0x543677[_0x3efc('0x2c')][_0x3efc('0x2e')];if(_0x488a29[_0x3efc('0x2d')]){if(_0x488a29[_0x3efc('0x2e')]){_0x488a29[_0x3efc('0x2e')]=moment(_0x488a29['dateEnd'])[_0x3efc('0x39')](0x1,_0x3efc('0x38'));}else{_0x488a29[_0x3efc('0x2e')]=moment(_0x488a29['dateStart'])[_0x3efc('0x39')](0x1,_0x3efc('0x38'));}}return db[_0x3efc('0x5a')][_0x3efc('0x45')]({'where':{'ProjectId':_0x543677[_0x3efc('0x48')]['id'],'starttime':{'$gte':_0x488a29[_0x3efc('0x2d')],'$lte':_0x488a29[_0x3efc('0x2e')]}}})['then'](handleEntityNotFound(_0x22a18f,null))[_0x3efc('0x21')](function(_0x52ddf5){if(_0x52ddf5){_0x39d214=_0x52ddf5;return db['JscriptyQuestionReport'][_0x3efc('0x45')]({'where':{'SessionId':{'$in':_[_0x3efc('0x3d')](_0x39d214,'id')},'ProjectId':_0x543677[_0x3efc('0x48')]['id']},'order':_0x3efc('0x61')});}})[_0x3efc('0x21')](handleEntityNotFound(_0x22a18f,null))[_0x3efc('0x21')](function(_0x513785){if(_0x513785){_0x24dd47=_0x513785;var _0x49f6cf={};for(var _0x1ada55=0x0,_0x3ef01a=_0x24dd47[_0x3efc('0x49')];_0x1ada55<_0x3ef01a;_0x1ada55++){if(!_0x49f6cf[_0x3efc('0x34')](_0x24dd47[_0x1ada55][_0x3efc('0x62')])){_0x49f6cf[_0x24dd47[_0x1ada55][_0x3efc('0x62')]]=needsEncapsulation(_0x24dd47[_0x1ada55][_0x3efc('0x63')])?encapsulate(_0x24dd47[_0x1ada55][_0x3efc('0x63')]):_0x24dd47[_0x1ada55]['question'];}}var _0x15f4ba=[],_0x11ecb6={};for(var _0x30eed8=0x0,_0x33f57f=_0x39d214[_0x3efc('0x49')];_0x30eed8<_0x33f57f;_0x30eed8++){_0x11ecb6={'ProjectId':_0x543677[_0x3efc('0x48')]['id'],'SessionId':_0x39d214[_0x30eed8]['id'],'StartTime':moment(_0x39d214[_0x30eed8][_0x3efc('0x64')])[_0x3efc('0x65')](_0x3efc('0x66'))};for(var _0x51ed65=0x0,_0x8637d0=_0x24dd47[_0x3efc('0x49')];_0x51ed65<_0x8637d0;_0x51ed65++){if(_0x24dd47[_0x51ed65][_0x3efc('0x67')]==_0x39d214[_0x30eed8]['id']&&_0x49f6cf[_0x3efc('0x34')](_0x24dd47[_0x51ed65][_0x3efc('0x62')])){_0x11ecb6[_0x49f6cf[_0x24dd47[_0x51ed65][_0x3efc('0x62')]]]=_0x24dd47[_0x51ed65]['answer'];}}for(var _0x31b363 in _0x49f6cf){if(!_0x11ecb6[_0x3efc('0x34')](_0x49f6cf[_0x31b363])){_0x11ecb6[_0x49f6cf[_0x31b363]]=null;}}_0x15f4ba['push'](_0x11ecb6);}return _0x15f4ba;}})['then'](function(_0x2317f3){if(!_['isEmpty'](_0x2317f3)){var _0x332e3f=toCsv(_0x2317f3);var _0x2adedb=Date[_0x3efc('0x68')]();fs[_0x3efc('0x69')](util[_0x3efc('0x65')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x543677[_0x3efc('0x48')]['id'],_0x2adedb),_0x332e3f);_0x22a18f[_0x3efc('0x6a')](_0x3efc('0x6b'),_0x3efc('0x6c')+util[_0x3efc('0x65')](_0x3efc('0x6d'),_0x543677[_0x3efc('0x48')]['id'],_0x2adedb));_0x22a18f['setHeader'](_0x3efc('0x6e'),_0x3efc('0x6f'));return _0x22a18f[_0x3efc('0x70')](util[_0x3efc('0x65')](_0x3efc('0x71'),_0x543677[_0x3efc('0x48')]['id'],_0x2adedb));}else{return _0x22a18f[_0x3efc('0x14')](0xcc);}})[_0x3efc('0x4b')](handleError(_0x22a18f,null));};
\ No newline at end of file
index 8584112..362b7f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdef9=['jscripty_projects','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./jscriptyProject.attributes','exports','define','JscriptyProject'];(function(_0x452ac4,_0x1378c2){var _0x2a3fdf=function(_0x3bb89c){while(--_0x3bb89c){_0x452ac4['push'](_0x452ac4['shift']());}};_0x2a3fdf(++_0x1378c2);}(_0xdef9,0x1ed));var _0x9def=function(_0x3ceb54,_0x5bddfd){_0x3ceb54=_0x3ceb54-0x0;var _0x26d8a6=_0xdef9[_0x3ceb54];return _0x26d8a6;};'use strict';var _=require(_0x9def('0x0'));var util=require(_0x9def('0x1'));var logger=require(_0x9def('0x2'))(_0x9def('0x3'));var moment=require(_0x9def('0x4'));var BPromise=require(_0x9def('0x5'));var rp=require(_0x9def('0x6'));var attributes=require(_0x9def('0x7'));module[_0x9def('0x8')]=function(_0x1f80c1,_0x11584c){return _0x1f80c1[_0x9def('0x9')](_0x9def('0xa'),attributes,{'tableName':_0x9def('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5eb3=['util','../../config/logger','api','moment','bluebird','request-promise','./jscriptyProject.attributes','define','JscriptyProject','jscripty_projects','lodash'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x5eb3,0xd0));var _0x35eb=function(_0x2becba,_0x4ea656){_0x2becba=_0x2becba-0x0;var _0x90b5dd=_0x5eb3[_0x2becba];return _0x90b5dd;};'use strict';var _=require(_0x35eb('0x0'));var util=require(_0x35eb('0x1'));var logger=require(_0x35eb('0x2'))(_0x35eb('0x3'));var moment=require(_0x35eb('0x4'));var BPromise=require(_0x35eb('0x5'));var rp=require(_0x35eb('0x6'));var attributes=require(_0x35eb('0x7'));module['exports']=function(_0x252036,_0x204392){return _0x252036[_0x35eb('0x8')](_0x35eb('0x9'),attributes,{'tableName':_0x35eb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf6eed3..f47ca71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2af=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe2af,0xc5));var _0xfe2a=function(_0x2f95e3,_0x22a31c){_0x2f95e3=_0x2f95e3-0x0;var _0x1386fc=_0xe2af[_0x2f95e3];return _0x1386fc;};'use strict';var _=require(_0xfe2a('0x0'));var util=require(_0xfe2a('0x1'));var moment=require(_0xfe2a('0x2'));var BPromise=require(_0xfe2a('0x3'));var rs=require(_0xfe2a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfe2a('0x5'))['db'];var utils=require(_0xfe2a('0x6'));var logger=require(_0xfe2a('0x7'))(_0xfe2a('0x8'));var config=require(_0xfe2a('0x9'));var jayson=require(_0xfe2a('0xa'));var client=jayson[_0xfe2a('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3efaf4,_0x3c282c,_0x1fff7a){return new BPromise(function(_0x3bcae2,_0x2768fa){return client[_0xfe2a('0xc')](_0x3efaf4,_0x1fff7a)[_0xfe2a('0xd')](function(_0x45f1e0){logger[_0xfe2a('0xe')](_0xfe2a('0xf'),_0x3c282c,_0xfe2a('0x10'));logger[_0xfe2a('0x11')](_0xfe2a('0x12'),_0x3c282c,_0xfe2a('0x10'),JSON[_0xfe2a('0x13')](_0x45f1e0));if(_0x45f1e0[_0xfe2a('0x14')]){if(_0x45f1e0[_0xfe2a('0x14')][_0xfe2a('0x15')]===0x1f4){logger[_0xfe2a('0x14')](_0xfe2a('0xf'),_0x3c282c,_0x45f1e0[_0xfe2a('0x14')][_0xfe2a('0x16')]);return _0x2768fa(_0x45f1e0['error'][_0xfe2a('0x16')]);}logger[_0xfe2a('0x14')]('JscriptyProject,\x20%s,\x20%s',_0x3c282c,_0x45f1e0[_0xfe2a('0x14')][_0xfe2a('0x16')]);return _0x3bcae2(_0x45f1e0[_0xfe2a('0x14')]['message']);}else{logger[_0xfe2a('0xe')](_0xfe2a('0xf'),_0x3c282c,'request\x20sent');_0x3bcae2(_0x45f1e0[_0xfe2a('0x17')][_0xfe2a('0x16')]);}})[_0xfe2a('0x18')](function(_0x3e0e49){logger['error'](_0xfe2a('0xf'),_0x3c282c,_0x3e0e49);_0x2768fa(_0x3e0e49);});});}
\ No newline at end of file
+var _0x4e16=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','code','error','message','result','util','moment','bluebird','randomstring'];(function(_0x2341c6,_0x3af092){var _0x54c34d=function(_0x3091f9){while(--_0x3091f9){_0x2341c6['push'](_0x2341c6['shift']());}};_0x54c34d(++_0x3af092);}(_0x4e16,0x1df));var _0x64e1=function(_0x25207d,_0x5cce53){_0x25207d=_0x25207d-0x0;var _0x547923=_0x4e16[_0x25207d];return _0x547923;};'use strict';var _=require('lodash');var util=require(_0x64e1('0x0'));var moment=require(_0x64e1('0x1'));var BPromise=require(_0x64e1('0x2'));var rs=require(_0x64e1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x64e1('0x4'))['db'];var utils=require(_0x64e1('0x5'));var logger=require('../../config/logger')(_0x64e1('0x6'));var config=require(_0x64e1('0x7'));var jayson=require(_0x64e1('0x8'));var client=jayson[_0x64e1('0x9')][_0x64e1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3892bc,_0x20ae89,_0x1123ac){return new BPromise(function(_0x599363,_0x131216){return client[_0x64e1('0xb')](_0x3892bc,_0x1123ac)['then'](function(_0x521a10){logger[_0x64e1('0xc')](_0x64e1('0xd'),_0x20ae89,_0x64e1('0xe'));logger[_0x64e1('0xf')](_0x64e1('0x10'),_0x20ae89,_0x64e1('0xe'),JSON['stringify'](_0x521a10));if(_0x521a10['error']){if(_0x521a10['error'][_0x64e1('0x11')]===0x1f4){logger[_0x64e1('0x12')](_0x64e1('0xd'),_0x20ae89,_0x521a10[_0x64e1('0x12')][_0x64e1('0x13')]);return _0x131216(_0x521a10[_0x64e1('0x12')]['message']);}logger[_0x64e1('0x12')](_0x64e1('0xd'),_0x20ae89,_0x521a10['error'][_0x64e1('0x13')]);return _0x599363(_0x521a10['error']['message']);}else{logger[_0x64e1('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x20ae89,'request\x20sent');_0x599363(_0x521a10[_0x64e1('0x14')][_0x64e1('0x13')]);}})['catch'](function(_0x41b503){logger[_0x64e1('0x12')](_0x64e1('0xd'),_0x20ae89,_0x41b503);_0x131216(_0x41b503);});});}
\ No newline at end of file
index d242134..deaf137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc795=['describe','post','create','put','delete','/:id','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./jscriptyQuestionReport.controller','isAuthenticated','get','/describe'];(function(_0x2f961b,_0x253f4f){var _0x4f7ffc=function(_0x19236b){while(--_0x19236b){_0x2f961b['push'](_0x2f961b['shift']());}};_0x4f7ffc(++_0x253f4f);}(_0xc795,0x85));var _0x5c79=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xc795[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require(_0x5c79('0x0'));var util=require(_0x5c79('0x1'));var path=require(_0x5c79('0x2'));var timeout=require(_0x5c79('0x3'));var express=require('express');var router=express[_0x5c79('0x4')]();var auth=require(_0x5c79('0x5'));var interaction=require(_0x5c79('0x6'));var config=require('../../config/environment');var controller=require(_0x5c79('0x7'));router['get']('/',auth[_0x5c79('0x8')](),controller['index']);router[_0x5c79('0x9')](_0x5c79('0xa'),auth[_0x5c79('0x8')](),controller[_0x5c79('0xb')]);router['get']('/:id',auth[_0x5c79('0x8')](),controller['show']);router[_0x5c79('0xc')]('/',auth[_0x5c79('0x8')](),controller[_0x5c79('0xd')]);router[_0x5c79('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x5c79('0xf')](_0x5c79('0x10'),auth[_0x5c79('0x8')](),controller[_0x5c79('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x969d=['update','delete','/:id','destroy','exports','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','describe','put'];(function(_0x3f55f0,_0x322fdf){var _0x405e92=function(_0x85df9d){while(--_0x85df9d){_0x3f55f0['push'](_0x3f55f0['shift']());}};_0x405e92(++_0x322fdf);}(_0x969d,0xc5));var _0xd969=function(_0x23d2d2,_0xae4a93){_0x23d2d2=_0x23d2d2-0x0;var _0x52749f=_0x969d[_0x23d2d2];return _0x52749f;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd969('0x0'));var express=require(_0xd969('0x1'));var router=express[_0xd969('0x2')]();var auth=require('../../components/auth/service');var interaction=require(_0xd969('0x3'));var config=require(_0xd969('0x4'));var controller=require(_0xd969('0x5'));router[_0xd969('0x6')]('/',auth[_0xd969('0x7')](),controller[_0xd969('0x8')]);router[_0xd969('0x6')]('/describe',auth[_0xd969('0x7')](),controller[_0xd969('0x9')]);router[_0xd969('0x6')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xd969('0x7')](),controller['create']);router[_0xd969('0xa')]('/:id',auth[_0xd969('0x7')](),controller[_0xd969('0xb')]);router[_0xd969('0xc')](_0xd969('0xd'),auth['isAuthenticated'](),controller[_0xd969('0xe')]);module[_0xd969('0xf')]=router;
\ No newline at end of file
index c1ff68b..300d388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf46a=['STRING','TEXT','sequelize'];(function(_0x38ec07,_0x5d430a){var _0x322f99=function(_0x2745e7){while(--_0x2745e7){_0x38ec07['push'](_0x38ec07['shift']());}};_0x322f99(++_0x5d430a);}(_0xf46a,0xa4));var _0xaf46=function(_0x4c09ec,_0x510db0){_0x4c09ec=_0x4c09ec-0x0;var _0x617dcd=_0xf46a[_0x4c09ec];return _0x617dcd;};'use strict';var Sequelize=require(_0xaf46('0x0'));module['exports']={'question':{'type':Sequelize[_0xaf46('0x1')]},'answer':{'type':Sequelize[_0xaf46('0x2')]('long')},'membername':{'type':Sequelize[_0xaf46('0x1')]},'projectname':{'type':Sequelize[_0xaf46('0x1')]},'queue':{'type':Sequelize[_0xaf46('0x1')]},'uniqueid':{'type':Sequelize[_0xaf46('0x1')]},'calleridname':{'type':Sequelize[_0xaf46('0x1')]},'calleridnum':{'type':Sequelize[_0xaf46('0x1')]},'questionId':{'type':Sequelize[_0xaf46('0x1')]}};
\ No newline at end of file
+var _0x50c1=['sequelize','STRING','long'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x50c1,0x1b6));var _0x150c=function(_0x472021,_0x118384){_0x472021=_0x472021-0x0;var _0x558e08=_0x50c1[_0x472021];return _0x558e08;};'use strict';var Sequelize=require(_0x150c('0x0'));module['exports']={'question':{'type':Sequelize[_0x150c('0x1')]},'answer':{'type':Sequelize['TEXT'](_0x150c('0x2'))},'membername':{'type':Sequelize[_0x150c('0x1')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x150c('0x1')]},'uniqueid':{'type':Sequelize[_0x150c('0x1')]},'calleridname':{'type':Sequelize[_0x150c('0x1')]},'calleridnum':{'type':Sequelize[_0x150c('0x1')]},'questionId':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b786dd1..68525f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['send','index','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','length','offset','sort','pick','add','day','where','filter','merge','map','type','key','VIRTUAL','field','options','includeAll','JscriptyQuestionReport','findAll','rows','catch','show','params','include','find','create','body','update','describe','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','count','limit','set','Content-Range','json','apply','reject','save','then','destroy','end','error','stack','name'];(function(_0x40c84c,_0x483fcb){var _0x447e63=function(_0x23e36f){while(--_0x23e36f){_0x40c84c['push'](_0x40c84c['shift']());}};_0x447e63(++_0x483fcb);}(_0x54ef,0x112));var _0xf54e=function(_0x118232,_0x495bd2){_0x118232=_0x118232-0x0;var _0x543710=_0x54ef[_0x118232];return _0x543710;};'use strict';var pdf=require(_0xf54e('0x0'));var emlformat=require(_0xf54e('0x1'));var rimraf=require(_0xf54e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf54e('0x3'));var rp=require(_0xf54e('0x4'));var moment=require(_0xf54e('0x5'));var BPromise=require(_0xf54e('0x6'));var Mustache=require(_0xf54e('0x7'));var util=require(_0xf54e('0x8'));var path=require(_0xf54e('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf54e('0xa'));var fs=require('fs');var _=require(_0xf54e('0xb'));var squel=require(_0xf54e('0xc'));var crypto=require('crypto');var jsforce=require(_0xf54e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf54e('0xe'));var querystring=require(_0xf54e('0xf'));var Papa=require('papaparse');var Redis=require(_0xf54e('0x10'));var qs=require(_0xf54e('0x11'));var logger=require(_0xf54e('0x12'))(_0xf54e('0x13'));var utils=require('../../config/utils');var config=require(_0xf54e('0x14'));var db=require(_0xf54e('0x15'))['db'];function respondWithStatusCode(_0x143d66,_0x326eef){_0x326eef=_0x326eef||0xcc;return function(_0x553759){if(_0x553759){return _0x143d66[_0xf54e('0x16')](_0x326eef);}return _0x143d66['status'](_0x326eef)['end']();};}function respondWithResult(_0x15a9d4,_0x2033e9){_0x2033e9=_0x2033e9||0xc8;return function(_0x28f776){if(_0x28f776){return _0x15a9d4[_0xf54e('0x17')](_0x2033e9)['json'](_0x28f776);}};}function respondWithFilteredResult(_0x331732,_0x1bbeaa){return function(_0x1855fe){if(_0x1855fe){var _0x15f639=_0x1855fe[_0xf54e('0x18')],_0x56828e=_0x1bbeaa['offset'],_0x2366ee=_0x1bbeaa['offset']+_0x1bbeaa[_0xf54e('0x19')],_0x389abc;if(_0x2366ee>=_0x15f639){_0x2366ee=_0x15f639;_0x389abc=0xc8;}else{_0x389abc=0xce;}_0x331732[_0xf54e('0x17')](_0x389abc);return _0x331732[_0xf54e('0x1a')](_0xf54e('0x1b'),_0x56828e+'-'+_0x2366ee+'/'+_0x15f639)[_0xf54e('0x1c')](_0x1855fe);}return null;};}function patchUpdates(_0x3e7d96){return function(_0x2e27b6){try{jsonpatch[_0xf54e('0x1d')](_0x2e27b6,_0x3e7d96,!![]);}catch(_0x1dcc04){return BPromise[_0xf54e('0x1e')](_0x1dcc04);}return _0x2e27b6[_0xf54e('0x1f')]();};}function saveUpdates(_0x50fc66,_0x48a7e1){return function(_0x23e14){if(_0x23e14){return _0x23e14['update'](_0x50fc66)[_0xf54e('0x20')](function(_0x1bfe99){return _0x1bfe99;});}return null;};}function removeEntity(_0x106362,_0x9903fc){return function(_0xf64f12){if(_0xf64f12){return _0xf64f12[_0xf54e('0x21')]()[_0xf54e('0x20')](function(){_0x106362[_0xf54e('0x17')](0xcc)[_0xf54e('0x22')]();});}};}function handleEntityNotFound(_0x5f9eea,_0x1c58bd){return function(_0x5b83df){if(!_0x5b83df){_0x5f9eea[_0xf54e('0x16')](0x194);}return _0x5b83df;};}function handleError(_0x54f914,_0x264a8f){_0x264a8f=_0x264a8f||0x1f4;return function(_0x272df6){logger[_0xf54e('0x23')](_0x272df6[_0xf54e('0x24')]);if(_0x272df6[_0xf54e('0x25')]){delete _0x272df6[_0xf54e('0x25')];}_0x54f914[_0xf54e('0x17')](_0x264a8f)[_0xf54e('0x26')](_0x272df6);};}exports[_0xf54e('0x27')]=function(_0x33457f,_0xf6cdd7){var _0x39c0ae={},_0x2ea001={},_0x5390b8={'count':0x0,'rows':[]};var _0xb3706e=db['JscriptyQuestionReport'][_0xf54e('0x28')];_0x2ea001['model']=_[_0xf54e('0x29')](_0xb3706e);var _0x269f47={'dateStart':_0x33457f[_0xf54e('0x2a')][_0xf54e('0x2b')],'dateEnd':_0x33457f[_0xf54e('0x2a')][_0xf54e('0x2c')]};delete _0x33457f[_0xf54e('0x2a')]['dateStart'];delete _0x33457f['query'][_0xf54e('0x2c')];_0x2ea001[_0xf54e('0x2a')]=_[_0xf54e('0x29')](_0x33457f[_0xf54e('0x2a')]);_0x2ea001[_0xf54e('0x2d')]=_[_0xf54e('0x2e')](_0x2ea001[_0xf54e('0x2f')],_0x2ea001[_0xf54e('0x2a')]);_0x39c0ae[_0xf54e('0x30')]=_[_0xf54e('0x2e')](_0x2ea001['model'],qs['fields'](_0x33457f[_0xf54e('0x2a')][_0xf54e('0x31')]));_0x39c0ae['attributes']=_0x39c0ae[_0xf54e('0x30')][_0xf54e('0x32')]?_0x39c0ae[_0xf54e('0x30')]:_0x2ea001[_0xf54e('0x2f')];if(!_0x33457f['query']['hasOwnProperty']('nolimit')){_0x39c0ae[_0xf54e('0x19')]=qs[_0xf54e('0x19')](_0x33457f[_0xf54e('0x2a')][_0xf54e('0x19')]);_0x39c0ae[_0xf54e('0x33')]=qs[_0xf54e('0x33')](_0x33457f['query']['offset']);}_0x39c0ae['order']=qs[_0xf54e('0x34')](_0x33457f[_0xf54e('0x2a')]['sort']);_0x39c0ae['where']=qs[_0xf54e('0x2d')](_[_0xf54e('0x35')](_0x33457f[_0xf54e('0x2a')],_0x2ea001['filters']));if(_0x269f47[_0xf54e('0x2b')]){if(_0x269f47[_0xf54e('0x2c')]){_0x269f47['dateEnd']=moment(_0x269f47[_0xf54e('0x2c')])[_0xf54e('0x36')](0x1,_0xf54e('0x37'));}else{_0x269f47[_0xf54e('0x2c')]=moment(_0x269f47[_0xf54e('0x2b')])[_0xf54e('0x36')](0x1,'day');}_['merge'](_0x39c0ae[_0xf54e('0x38')],{'createdAt':{'$gte':_0x269f47[_0xf54e('0x2b')],'$lte':_0x269f47[_0xf54e('0x2c')]}});}if(_0x33457f['query'][_0xf54e('0x39')]){_0x39c0ae[_0xf54e('0x38')]=_[_0xf54e('0x3a')](_0x39c0ae[_0xf54e('0x38')],{'$or':_[_0xf54e('0x3b')](_0xb3706e,function(_0x23f297){if(_0x23f297[_0xf54e('0x3c')][_0xf54e('0x3d')]!==_0xf54e('0x3e')){var _0x2087b3={};_0x2087b3[_0x23f297[_0xf54e('0x3f')]]={'$like':'%'+_0x33457f[_0xf54e('0x2a')][_0xf54e('0x39')]+'%'};return _0x2087b3;}})});}_0x39c0ae=_[_0xf54e('0x3a')]({},_0x39c0ae,_0x33457f[_0xf54e('0x40')]);var _0x5085c1={'where':_0x39c0ae['where']};return db['JscriptyQuestionReport'][_0xf54e('0x18')](_0x5085c1)[_0xf54e('0x20')](function(_0x5398b2){_0x5390b8[_0xf54e('0x18')]=_0x5398b2;if(_0x33457f[_0xf54e('0x2a')][_0xf54e('0x41')]){_0x39c0ae['include']=[{'all':!![]}];}return db[_0xf54e('0x42')][_0xf54e('0x43')](_0x39c0ae);})[_0xf54e('0x20')](function(_0x794be7){_0x5390b8[_0xf54e('0x44')]=_0x794be7;return _0x5390b8;})[_0xf54e('0x20')](respondWithFilteredResult(_0xf6cdd7,_0x39c0ae))[_0xf54e('0x45')](handleError(_0xf6cdd7,null));};exports[_0xf54e('0x46')]=function(_0x5b4ea1,_0x47bedd){var _0x11c736={'raw':!![],'where':{'id':_0x5b4ea1[_0xf54e('0x47')]['id']}},_0x3447fd={};_0x3447fd[_0xf54e('0x2f')]=_[_0xf54e('0x29')](db[_0xf54e('0x42')]['rawAttributes']);_0x3447fd[_0xf54e('0x2a')]=_['keys'](_0x5b4ea1[_0xf54e('0x2a')]);_0x3447fd['filters']=_[_0xf54e('0x2e')](_0x3447fd[_0xf54e('0x2f')],_0x3447fd[_0xf54e('0x2a')]);_0x11c736['attributes']=_[_0xf54e('0x2e')](_0x3447fd[_0xf54e('0x2f')],qs[_0xf54e('0x31')](_0x5b4ea1[_0xf54e('0x2a')][_0xf54e('0x31')]));_0x11c736['attributes']=_0x11c736[_0xf54e('0x30')][_0xf54e('0x32')]?_0x11c736[_0xf54e('0x30')]:_0x3447fd[_0xf54e('0x2f')];if(_0x5b4ea1['query'][_0xf54e('0x41')]){_0x11c736[_0xf54e('0x48')]=[{'all':!![]}];}_0x11c736=_['merge']({},_0x11c736,_0x5b4ea1[_0xf54e('0x40')]);return db[_0xf54e('0x42')][_0xf54e('0x49')](_0x11c736)[_0xf54e('0x20')](handleEntityNotFound(_0x47bedd,null))['then'](respondWithResult(_0x47bedd,null))[_0xf54e('0x45')](handleError(_0x47bedd,null));};exports[_0xf54e('0x4a')]=function(_0x2527f6,_0xb4654f){return db[_0xf54e('0x42')][_0xf54e('0x4a')](_0x2527f6[_0xf54e('0x4b')],{})[_0xf54e('0x20')](respondWithResult(_0xb4654f,0xc9))[_0xf54e('0x45')](handleError(_0xb4654f,null));};exports[_0xf54e('0x4c')]=function(_0xaf9bf0,_0x1f4cf8){if(_0xaf9bf0[_0xf54e('0x4b')]['id']){delete _0xaf9bf0[_0xf54e('0x4b')]['id'];}return db[_0xf54e('0x42')][_0xf54e('0x49')]({'where':{'id':_0xaf9bf0[_0xf54e('0x47')]['id']}})[_0xf54e('0x20')](handleEntityNotFound(_0x1f4cf8,null))[_0xf54e('0x20')](saveUpdates(_0xaf9bf0[_0xf54e('0x4b')],null))['then'](respondWithResult(_0x1f4cf8,null))['catch'](handleError(_0x1f4cf8,null));};exports[_0xf54e('0x21')]=function(_0x1106bb,_0x45861b){return db[_0xf54e('0x42')][_0xf54e('0x49')]({'where':{'id':_0x1106bb[_0xf54e('0x47')]['id']}})[_0xf54e('0x20')](handleEntityNotFound(_0x45861b,null))[_0xf54e('0x20')](removeEntity(_0x45861b,null))[_0xf54e('0x45')](handleError(_0x45861b,null));};exports[_0xf54e('0x4d')]=function(_0x1df308,_0x59c313){return db[_0xf54e('0x42')][_0xf54e('0x4d')]()[_0xf54e('0x20')](respondWithResult(_0x59c313,null))[_0xf54e('0x45')](handleError(_0x59c313,null));};
\ No newline at end of file
+var _0x7bae=['fields','attributes','length','hasOwnProperty','offset','order','sort','where','pick','day','add','merge','map','type','key','field','filter','options','includeAll','include','rows','catch','params','find','create','body','describe','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','limit','set','apply','reject','save','update','then','destroy','name','JscriptyQuestionReport','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model'];(function(_0x33a35d,_0x365515){var _0x1113a4=function(_0x2028c){while(--_0x2028c){_0x33a35d['push'](_0x33a35d['shift']());}};_0x1113a4(++_0x365515);}(_0x7bae,0x13b));var _0xe7ba=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x7bae[_0x1035c1];return _0x308d67;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0xe7ba('0x0'));var zipdir=require(_0xe7ba('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe7ba('0x2'));var moment=require('moment');var BPromise=require(_0xe7ba('0x3'));var Mustache=require(_0xe7ba('0x4'));var util=require(_0xe7ba('0x5'));var path=require(_0xe7ba('0x6'));var sox=require(_0xe7ba('0x7'));var csv=require(_0xe7ba('0x8'));var ejs=require(_0xe7ba('0x9'));var fs=require('fs');var _=require(_0xe7ba('0xa'));var squel=require(_0xe7ba('0xb'));var crypto=require(_0xe7ba('0xc'));var jsforce=require(_0xe7ba('0xd'));var deskjs=require(_0xe7ba('0xe'));var toCsv=require(_0xe7ba('0x8'));var querystring=require(_0xe7ba('0xf'));var Papa=require('papaparse');var Redis=require(_0xe7ba('0x10'));var qs=require(_0xe7ba('0x11'));var logger=require(_0xe7ba('0x12'))(_0xe7ba('0x13'));var utils=require(_0xe7ba('0x14'));var config=require(_0xe7ba('0x15'));var db=require(_0xe7ba('0x16'))['db'];function respondWithStatusCode(_0x448bcc,_0x194447){_0x194447=_0x194447||0xcc;return function(_0x4b6597){if(_0x4b6597){return _0x448bcc[_0xe7ba('0x17')](_0x194447);}return _0x448bcc['status'](_0x194447)[_0xe7ba('0x18')]();};}function respondWithResult(_0x45229c,_0x390596){_0x390596=_0x390596||0xc8;return function(_0x17e4e6){if(_0x17e4e6){return _0x45229c[_0xe7ba('0x19')](_0x390596)[_0xe7ba('0x1a')](_0x17e4e6);}};}function respondWithFilteredResult(_0x561dbb,_0x561c48){return function(_0x2a5183){if(_0x2a5183){var _0x7ba72a=_0x2a5183['count'],_0x359f6f=_0x561c48['offset'],_0x5d1d03=_0x561c48['offset']+_0x561c48[_0xe7ba('0x1b')],_0x4390e3;if(_0x5d1d03>=_0x7ba72a){_0x5d1d03=_0x7ba72a;_0x4390e3=0xc8;}else{_0x4390e3=0xce;}_0x561dbb['status'](_0x4390e3);return _0x561dbb[_0xe7ba('0x1c')]('Content-Range',_0x359f6f+'-'+_0x5d1d03+'/'+_0x7ba72a)['json'](_0x2a5183);}return null;};}function patchUpdates(_0x5a82b5){return function(_0x3f326a){try{jsonpatch[_0xe7ba('0x1d')](_0x3f326a,_0x5a82b5,!![]);}catch(_0x39ca38){return BPromise[_0xe7ba('0x1e')](_0x39ca38);}return _0x3f326a[_0xe7ba('0x1f')]();};}function saveUpdates(_0x58550c,_0x149c62){return function(_0x20c653){if(_0x20c653){return _0x20c653[_0xe7ba('0x20')](_0x58550c)[_0xe7ba('0x21')](function(_0x4aaf35){return _0x4aaf35;});}return null;};}function removeEntity(_0x1076c5,_0x2936b7){return function(_0x5a158f){if(_0x5a158f){return _0x5a158f[_0xe7ba('0x22')]()[_0xe7ba('0x21')](function(){_0x1076c5[_0xe7ba('0x19')](0xcc)[_0xe7ba('0x18')]();});}};}function handleEntityNotFound(_0x394b69,_0x2acfc2){return function(_0x293b14){if(!_0x293b14){_0x394b69[_0xe7ba('0x17')](0x194);}return _0x293b14;};}function handleError(_0x41cbd9,_0xa72f1c){_0xa72f1c=_0xa72f1c||0x1f4;return function(_0x58cf43){logger['error'](_0x58cf43['stack']);if(_0x58cf43['name']){delete _0x58cf43[_0xe7ba('0x23')];}_0x41cbd9['status'](_0xa72f1c)['send'](_0x58cf43);};}exports['index']=function(_0x255def,_0x32cc00){var _0xe32862={},_0x2ea78a={},_0x3435c6={'count':0x0,'rows':[]};var _0xc88099=db[_0xe7ba('0x24')][_0xe7ba('0x25')];_0x2ea78a['model']=_[_0xe7ba('0x26')](_0xc88099);var _0x48c869={'dateStart':_0x255def[_0xe7ba('0x27')][_0xe7ba('0x28')],'dateEnd':_0x255def[_0xe7ba('0x27')]['dateEnd']};delete _0x255def['query'][_0xe7ba('0x28')];delete _0x255def[_0xe7ba('0x27')][_0xe7ba('0x29')];_0x2ea78a[_0xe7ba('0x27')]=_[_0xe7ba('0x26')](_0x255def['query']);_0x2ea78a[_0xe7ba('0x2a')]=_[_0xe7ba('0x2b')](_0x2ea78a['model'],_0x2ea78a[_0xe7ba('0x27')]);_0xe32862['attributes']=_['intersection'](_0x2ea78a[_0xe7ba('0x2c')],qs[_0xe7ba('0x2d')](_0x255def[_0xe7ba('0x27')]['fields']));_0xe32862[_0xe7ba('0x2e')]=_0xe32862['attributes'][_0xe7ba('0x2f')]?_0xe32862[_0xe7ba('0x2e')]:_0x2ea78a[_0xe7ba('0x2c')];if(!_0x255def[_0xe7ba('0x27')][_0xe7ba('0x30')]('nolimit')){_0xe32862[_0xe7ba('0x1b')]=qs[_0xe7ba('0x1b')](_0x255def['query'][_0xe7ba('0x1b')]);_0xe32862[_0xe7ba('0x31')]=qs[_0xe7ba('0x31')](_0x255def['query'][_0xe7ba('0x31')]);}_0xe32862[_0xe7ba('0x32')]=qs['sort'](_0x255def[_0xe7ba('0x27')][_0xe7ba('0x33')]);_0xe32862[_0xe7ba('0x34')]=qs['filters'](_[_0xe7ba('0x35')](_0x255def[_0xe7ba('0x27')],_0x2ea78a['filters']));if(_0x48c869[_0xe7ba('0x28')]){if(_0x48c869[_0xe7ba('0x29')]){_0x48c869[_0xe7ba('0x29')]=moment(_0x48c869['dateEnd'])['add'](0x1,_0xe7ba('0x36'));}else{_0x48c869[_0xe7ba('0x29')]=moment(_0x48c869[_0xe7ba('0x28')])[_0xe7ba('0x37')](0x1,_0xe7ba('0x36'));}_['merge'](_0xe32862[_0xe7ba('0x34')],{'createdAt':{'$gte':_0x48c869[_0xe7ba('0x28')],'$lte':_0x48c869[_0xe7ba('0x29')]}});}if(_0x255def[_0xe7ba('0x27')]['filter']){_0xe32862[_0xe7ba('0x34')]=_[_0xe7ba('0x38')](_0xe32862[_0xe7ba('0x34')],{'$or':_[_0xe7ba('0x39')](_0xc88099,function(_0x35a5f3){if(_0x35a5f3[_0xe7ba('0x3a')][_0xe7ba('0x3b')]!=='VIRTUAL'){var _0x3429fa={};_0x3429fa[_0x35a5f3[_0xe7ba('0x3c')]]={'$like':'%'+_0x255def[_0xe7ba('0x27')][_0xe7ba('0x3d')]+'%'};return _0x3429fa;}})});}_0xe32862=_[_0xe7ba('0x38')]({},_0xe32862,_0x255def[_0xe7ba('0x3e')]);var _0x220c3b={'where':_0xe32862[_0xe7ba('0x34')]};return db[_0xe7ba('0x24')]['count'](_0x220c3b)[_0xe7ba('0x21')](function(_0x417734){_0x3435c6['count']=_0x417734;if(_0x255def['query'][_0xe7ba('0x3f')]){_0xe32862[_0xe7ba('0x40')]=[{'all':!![]}];}return db[_0xe7ba('0x24')]['findAll'](_0xe32862);})[_0xe7ba('0x21')](function(_0x82246e){_0x3435c6[_0xe7ba('0x41')]=_0x82246e;return _0x3435c6;})[_0xe7ba('0x21')](respondWithFilteredResult(_0x32cc00,_0xe32862))[_0xe7ba('0x42')](handleError(_0x32cc00,null));};exports['show']=function(_0x165558,_0x54ef49){var _0x30a1c8={'raw':!![],'where':{'id':_0x165558[_0xe7ba('0x43')]['id']}},_0x2d9d85={};_0x2d9d85[_0xe7ba('0x2c')]=_[_0xe7ba('0x26')](db[_0xe7ba('0x24')][_0xe7ba('0x25')]);_0x2d9d85[_0xe7ba('0x27')]=_['keys'](_0x165558[_0xe7ba('0x27')]);_0x2d9d85[_0xe7ba('0x2a')]=_[_0xe7ba('0x2b')](_0x2d9d85[_0xe7ba('0x2c')],_0x2d9d85[_0xe7ba('0x27')]);_0x30a1c8[_0xe7ba('0x2e')]=_[_0xe7ba('0x2b')](_0x2d9d85[_0xe7ba('0x2c')],qs[_0xe7ba('0x2d')](_0x165558[_0xe7ba('0x27')]['fields']));_0x30a1c8[_0xe7ba('0x2e')]=_0x30a1c8['attributes'][_0xe7ba('0x2f')]?_0x30a1c8[_0xe7ba('0x2e')]:_0x2d9d85[_0xe7ba('0x2c')];if(_0x165558[_0xe7ba('0x27')][_0xe7ba('0x3f')]){_0x30a1c8[_0xe7ba('0x40')]=[{'all':!![]}];}_0x30a1c8=_['merge']({},_0x30a1c8,_0x165558[_0xe7ba('0x3e')]);return db[_0xe7ba('0x24')][_0xe7ba('0x44')](_0x30a1c8)[_0xe7ba('0x21')](handleEntityNotFound(_0x54ef49,null))[_0xe7ba('0x21')](respondWithResult(_0x54ef49,null))[_0xe7ba('0x42')](handleError(_0x54ef49,null));};exports[_0xe7ba('0x45')]=function(_0x266ace,_0x272cb9){return db[_0xe7ba('0x24')][_0xe7ba('0x45')](_0x266ace['body'],{})[_0xe7ba('0x21')](respondWithResult(_0x272cb9,0xc9))[_0xe7ba('0x42')](handleError(_0x272cb9,null));};exports[_0xe7ba('0x20')]=function(_0x24c7d9,_0x3ae802){if(_0x24c7d9[_0xe7ba('0x46')]['id']){delete _0x24c7d9['body']['id'];}return db[_0xe7ba('0x24')][_0xe7ba('0x44')]({'where':{'id':_0x24c7d9['params']['id']}})[_0xe7ba('0x21')](handleEntityNotFound(_0x3ae802,null))[_0xe7ba('0x21')](saveUpdates(_0x24c7d9[_0xe7ba('0x46')],null))[_0xe7ba('0x21')](respondWithResult(_0x3ae802,null))['catch'](handleError(_0x3ae802,null));};exports['destroy']=function(_0xa80cf,_0x2cfdc3){return db[_0xe7ba('0x24')]['find']({'where':{'id':_0xa80cf[_0xe7ba('0x43')]['id']}})[_0xe7ba('0x21')](handleEntityNotFound(_0x2cfdc3,null))[_0xe7ba('0x21')](removeEntity(_0x2cfdc3,null))[_0xe7ba('0x42')](handleError(_0x2cfdc3,null));};exports[_0xe7ba('0x47')]=function(_0x6b6f1,_0xf3a41f){return db['JscriptyQuestionReport'][_0xe7ba('0x47')]()[_0xe7ba('0x21')](respondWithResult(_0xf3a41f,null))[_0xe7ba('0x42')](handleError(_0xf3a41f,null));};
\ No newline at end of file
index 403d052..3cdb9f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3495=['request-promise','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x1f9178,_0x28d706){var _0x113880=function(_0x29fc97){while(--_0x29fc97){_0x1f9178['push'](_0x1f9178['shift']());}};_0x113880(++_0x28d706);}(_0x3495,0x1de));var _0x5349=function(_0x424069,_0x4c1ff3){_0x424069=_0x424069-0x0;var _0x486736=_0x3495[_0x424069];return _0x486736;};'use strict';var _=require(_0x5349('0x0'));var util=require(_0x5349('0x1'));var logger=require(_0x5349('0x2'))(_0x5349('0x3'));var moment=require(_0x5349('0x4'));var BPromise=require(_0x5349('0x5'));var rp=require(_0x5349('0x6'));var attributes=require(_0x5349('0x7'));module[_0x5349('0x8')]=function(_0x5912ac,_0x4034ba){return _0x5912ac[_0x5349('0x9')]('JscriptyQuestionReport',attributes,{'tableName':_0x5349('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70a8=['define','JscriptyQuestionReport','report_jscripty_questions','../../config/logger','api','bluebird','./jscriptyQuestionReport.attributes'];(function(_0x38ce1e,_0x9a65ce){var _0x4bcf40=function(_0x3e8912){while(--_0x3e8912){_0x38ce1e['push'](_0x38ce1e['shift']());}};_0x4bcf40(++_0x9a65ce);}(_0x70a8,0x1f4));var _0x870a=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x70a8[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x870a('0x0'))(_0x870a('0x1'));var moment=require('moment');var BPromise=require(_0x870a('0x2'));var rp=require('request-promise');var attributes=require(_0x870a('0x3'));module['exports']=function(_0x3a3213,_0x3e2935){return _0x3a3213[_0x870a('0x4')](_0x870a('0x5'),attributes,{'tableName':_0x870a('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2819496..1476984 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65e4=['debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','info','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','request\x20sent'];(function(_0x367284,_0x26688c){var _0xe5c015=function(_0x19705e){while(--_0x19705e){_0x367284['push'](_0x367284['shift']());}};_0xe5c015(++_0x26688c);}(_0x65e4,0x195));var _0x465e=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x65e4[_0x3b380d];return _0x54502b;};'use strict';var _=require('lodash');var util=require(_0x465e('0x0'));var moment=require(_0x465e('0x1'));var BPromise=require(_0x465e('0x2'));var rs=require(_0x465e('0x3'));var fs=require('fs');var Redis=require(_0x465e('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x465e('0x5'));var logger=require('../../config/logger')(_0x465e('0x6'));var config=require(_0x465e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x465e('0x8')][_0x465e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4571be,_0x29d764,_0x83d9e){return new BPromise(function(_0x33a0eb,_0x317b83){return client[_0x465e('0xa')](_0x4571be,_0x83d9e)[_0x465e('0xb')](function(_0x2f9dfa){logger['info']('JscriptyQuestionReport,\x20%s,\x20%s',_0x29d764,_0x465e('0xc'));logger[_0x465e('0xd')](_0x465e('0xe'),_0x29d764,_0x465e('0xc'),JSON[_0x465e('0xf')](_0x2f9dfa));if(_0x2f9dfa[_0x465e('0x10')]){if(_0x2f9dfa[_0x465e('0x10')][_0x465e('0x11')]===0x1f4){logger[_0x465e('0x10')](_0x465e('0x12'),_0x29d764,_0x2f9dfa[_0x465e('0x10')][_0x465e('0x13')]);return _0x317b83(_0x2f9dfa[_0x465e('0x10')][_0x465e('0x13')]);}logger[_0x465e('0x10')](_0x465e('0x12'),_0x29d764,_0x2f9dfa[_0x465e('0x10')][_0x465e('0x13')]);return _0x33a0eb(_0x2f9dfa[_0x465e('0x10')]['message']);}else{logger[_0x465e('0x14')](_0x465e('0x12'),_0x29d764,'request\x20sent');_0x33a0eb(_0x2f9dfa['result'][_0x465e('0x13')]);}})[_0x465e('0x15')](function(_0x3c55ba){logger[_0x465e('0x10')](_0x465e('0x12'),_0x29d764,_0x3c55ba);_0x317b83(_0x3c55ba);});});}
\ No newline at end of file
+var _0x1506=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x4d2263,_0x3fbf0d){var _0x24aba0=function(_0x389a59){while(--_0x389a59){_0x4d2263['push'](_0x4d2263['shift']());}};_0x24aba0(++_0x3fbf0d);}(_0x1506,0x154));var _0x6150=function(_0x12b5f1,_0x2ad05e){_0x12b5f1=_0x12b5f1-0x0;var _0x5f2511=_0x1506[_0x12b5f1];return _0x5f2511;};'use strict';var _=require(_0x6150('0x0'));var util=require(_0x6150('0x1'));var moment=require('moment');var BPromise=require(_0x6150('0x2'));var rs=require(_0x6150('0x3'));var fs=require('fs');var Redis=require(_0x6150('0x4'));var db=require(_0x6150('0x5'))['db'];var utils=require(_0x6150('0x6'));var logger=require(_0x6150('0x7'))(_0x6150('0x8'));var config=require(_0x6150('0x9'));var jayson=require(_0x6150('0xa'));var client=jayson[_0x6150('0xb')][_0x6150('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1ecc10,_0x34c170,_0x2839e9){return new BPromise(function(_0x4fb9df,_0x18833d){return client['request'](_0x1ecc10,_0x2839e9)[_0x6150('0xd')](function(_0x3be2f6){logger[_0x6150('0xe')](_0x6150('0xf'),_0x34c170,_0x6150('0x10'));logger['debug']('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x34c170,'request\x20sent',JSON[_0x6150('0x11')](_0x3be2f6));if(_0x3be2f6[_0x6150('0x12')]){if(_0x3be2f6[_0x6150('0x12')][_0x6150('0x13')]===0x1f4){logger[_0x6150('0x12')](_0x6150('0xf'),_0x34c170,_0x3be2f6[_0x6150('0x12')]['message']);return _0x18833d(_0x3be2f6['error'][_0x6150('0x14')]);}logger[_0x6150('0x12')](_0x6150('0xf'),_0x34c170,_0x3be2f6[_0x6150('0x12')][_0x6150('0x14')]);return _0x4fb9df(_0x3be2f6[_0x6150('0x12')][_0x6150('0x14')]);}else{logger[_0x6150('0xe')](_0x6150('0xf'),_0x34c170,'request\x20sent');_0x4fb9df(_0x3be2f6[_0x6150('0x15')][_0x6150('0x14')]);}})[_0x6150('0x16')](function(_0x597bc1){logger[_0x6150('0x12')](_0x6150('0xf'),_0x34c170,_0x597bc1);_0x18833d(_0x597bc1);});});}
\ No newline at end of file
index c3bf61d..dc418b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa61b=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/questions','getQuestions','create','update','delete','destroy','connect-timeout'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xa61b,0x18f));var _0xba61=function(_0x385299,_0x3d5cd9){_0x385299=_0x385299-0x0;var _0x2ba940=_0xa61b[_0x385299];return _0x2ba940;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xba61('0x0'));var express=require(_0xba61('0x1'));var router=express[_0xba61('0x2')]();var auth=require(_0xba61('0x3'));var interaction=require(_0xba61('0x4'));var config=require(_0xba61('0x5'));var controller=require(_0xba61('0x6'));router[_0xba61('0x7')]('/',auth[_0xba61('0x8')](),controller[_0xba61('0x9')]);router[_0xba61('0x7')](_0xba61('0xa'),auth[_0xba61('0x8')](),controller[_0xba61('0xb')]);router[_0xba61('0x7')](_0xba61('0xc'),auth[_0xba61('0x8')](),controller[_0xba61('0xd')]);router[_0xba61('0x7')](_0xba61('0xe'),auth[_0xba61('0x8')](),controller[_0xba61('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xba61('0x10')]);router['put'](_0xba61('0xc'),auth[_0xba61('0x8')](),controller[_0xba61('0x11')]);router[_0xba61('0x12')](_0xba61('0xc'),auth[_0xba61('0x8')](),controller[_0xba61('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xef6e=['get','/describe','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller'];(function(_0x20e882,_0x16185c){var _0x3e0dbe=function(_0x3d0129){while(--_0x3d0129){_0x20e882['push'](_0x20e882['shift']());}};_0x3e0dbe(++_0x16185c);}(_0xef6e,0xce));var _0xeef6=function(_0x49cbda,_0x4f2482){_0x49cbda=_0x49cbda-0x0;var _0x1ce6a1=_0xef6e[_0x49cbda];return _0x1ce6a1;};'use strict';var multer=require(_0xeef6('0x0'));var util=require(_0xeef6('0x1'));var path=require(_0xeef6('0x2'));var timeout=require(_0xeef6('0x3'));var express=require(_0xeef6('0x4'));var router=express[_0xeef6('0x5')]();var auth=require(_0xeef6('0x6'));var interaction=require(_0xeef6('0x7'));var config=require(_0xeef6('0x8'));var controller=require(_0xeef6('0x9'));router[_0xeef6('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xeef6('0xa')](_0xeef6('0xb'),auth[_0xeef6('0xc')](),controller[_0xeef6('0xd')]);router[_0xeef6('0xa')](_0xeef6('0xe'),auth['isAuthenticated'](),controller[_0xeef6('0xf')]);router[_0xeef6('0xa')](_0xeef6('0x10'),auth[_0xeef6('0xc')](),controller[_0xeef6('0x11')]);router[_0xeef6('0x12')]('/',auth[_0xeef6('0xc')](),controller['create']);router[_0xeef6('0x13')](_0xeef6('0xe'),auth['isAuthenticated'](),controller[_0xeef6('0x14')]);router[_0xeef6('0x15')](_0xeef6('0xe'),auth[_0xeef6('0xc')](),controller[_0xeef6('0x16')]);module[_0xeef6('0x17')]=router;
\ No newline at end of file
index 5bd3330..3e5cf5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0818=['STRING','BOOLEAN','moment','DATE','setDataValue','starttime','endtime','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0818,0x1da));var _0x8081=function(_0x113e32,_0x5339f0){_0x113e32=_0x113e32-0x0;var _0x4ff939=_0x0818[_0x113e32];return _0x4ff939;};'use strict';var moment=require(_0x8081('0x0'));var Sequelize=require('sequelize');module['exports']={'starttime':{'type':Sequelize[_0x8081('0x1')],'set':function(_0x11d6ce){this[_0x8081('0x2')](_0x8081('0x3'),_0x11d6ce);this['setDataValue'](_0x8081('0x4'),moment()['format'](_0x8081('0x5')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x8081('0x6')]},'projectname':{'type':Sequelize[_0x8081('0x6')]},'queue':{'type':Sequelize[_0x8081('0x6')]},'uniqueid':{'type':Sequelize[_0x8081('0x6')]},'calleridname':{'type':Sequelize[_0x8081('0x6')]},'calleridnum':{'type':Sequelize[_0x8081('0x6')]},'completed':{'type':Sequelize[_0x8081('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb264=['format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','sequelize','DATE','starttime','setDataValue','endtime'];(function(_0x5c5cc5,_0x4d2d09){var _0x27ecdc=function(_0x54da31){while(--_0x54da31){_0x5c5cc5['push'](_0x5c5cc5['shift']());}};_0x27ecdc(++_0x4d2d09);}(_0xb264,0x108));var _0x4b26=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb264[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x4b26('0x0'));var Sequelize=require(_0x4b26('0x1'));module['exports']={'starttime':{'type':Sequelize[_0x4b26('0x2')],'set':function(_0x5148a6){this['setDataValue'](_0x4b26('0x3'),_0x5148a6);this[_0x4b26('0x4')](_0x4b26('0x5'),moment()[_0x4b26('0x6')](_0x4b26('0x7')));}},'endtime':{'type':Sequelize[_0x4b26('0x2')]},'membername':{'type':Sequelize[_0x4b26('0x8')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x4b26('0x8')]},'uniqueid':{'type':Sequelize[_0x4b26('0x8')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x4b26('0x8')]},'completed':{'type':Sequelize[_0x4b26('0x9')],'defaultValue':![]}};
\ No newline at end of file
index 9da7c25..89a2e66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['api','../../config/utils','../../config/environment','../../mysqldb','end','count','offset','status','set','Content-Range','apply','reject','save','then','sendStatus','error','name','send','index','JscriptySessionReport','query','dateEnd','dateStart','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filters','add','day','merge','filter','map','type','key','field','options','include','rows','catch','params','keys','rawAttributes','find','create','body','update','destroy','describe','getQuestions','JscriptyQuestionReport','SessionId','includeAll','findAll','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger'];(function(_0x80fdca,_0x4a38c3){var _0x90ad66=function(_0x460f31){while(--_0x460f31){_0x80fdca['push'](_0x80fdca['shift']());}};_0x90ad66(++_0x4a38c3);}(_0x757a,0xde));var _0xa757=function(_0x26bc75,_0x11c9b1){_0x26bc75=_0x26bc75-0x0;var _0x871da=_0x757a[_0x26bc75];return _0x871da;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xa757('0x0'));var rimraf=require(_0xa757('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa757('0x2'));var BPromise=require(_0xa757('0x3'));var Mustache=require(_0xa757('0x4'));var util=require(_0xa757('0x5'));var path=require(_0xa757('0x6'));var sox=require(_0xa757('0x7'));var csv=require('to-csv');var ejs=require(_0xa757('0x8'));var fs=require('fs');var _=require(_0xa757('0x9'));var squel=require('squel');var crypto=require(_0xa757('0xa'));var jsforce=require(_0xa757('0xb'));var deskjs=require(_0xa757('0xc'));var toCsv=require(_0xa757('0xd'));var querystring=require(_0xa757('0xe'));var Papa=require('papaparse');var Redis=require(_0xa757('0xf'));var qs=require(_0xa757('0x10'));var logger=require(_0xa757('0x11'))(_0xa757('0x12'));var utils=require(_0xa757('0x13'));var config=require(_0xa757('0x14'));var db=require(_0xa757('0x15'))['db'];function respondWithStatusCode(_0x483d77,_0x4ec453){_0x4ec453=_0x4ec453||0xcc;return function(_0x5958c2){if(_0x5958c2){return _0x483d77['sendStatus'](_0x4ec453);}return _0x483d77['status'](_0x4ec453)[_0xa757('0x16')]();};}function respondWithResult(_0x544b45,_0x564187){_0x564187=_0x564187||0xc8;return function(_0x2ed0d2){if(_0x2ed0d2){return _0x544b45['status'](_0x564187)['json'](_0x2ed0d2);}};}function respondWithFilteredResult(_0x32112b,_0x1b670e){return function(_0x355f0a){if(_0x355f0a){var _0x4a0c38=_0x355f0a[_0xa757('0x17')],_0x86abd=_0x1b670e[_0xa757('0x18')],_0x31cfd2=_0x1b670e[_0xa757('0x18')]+_0x1b670e['limit'],_0xf12b68;if(_0x31cfd2>=_0x4a0c38){_0x31cfd2=_0x4a0c38;_0xf12b68=0xc8;}else{_0xf12b68=0xce;}_0x32112b[_0xa757('0x19')](_0xf12b68);return _0x32112b[_0xa757('0x1a')](_0xa757('0x1b'),_0x86abd+'-'+_0x31cfd2+'/'+_0x4a0c38)['json'](_0x355f0a);}return null;};}function patchUpdates(_0x54b305){return function(_0x151c04){try{jsonpatch[_0xa757('0x1c')](_0x151c04,_0x54b305,!![]);}catch(_0x1bd14c){return BPromise[_0xa757('0x1d')](_0x1bd14c);}return _0x151c04[_0xa757('0x1e')]();};}function saveUpdates(_0xe2d567,_0x4bd137){return function(_0x58954){if(_0x58954){return _0x58954['update'](_0xe2d567)[_0xa757('0x1f')](function(_0x167640){return _0x167640;});}return null;};}function removeEntity(_0x14014c,_0x2c9ec6){return function(_0x4d598c){if(_0x4d598c){return _0x4d598c['destroy']()[_0xa757('0x1f')](function(){_0x14014c[_0xa757('0x19')](0xcc)[_0xa757('0x16')]();});}};}function handleEntityNotFound(_0x8d121f,_0x1d6e2){return function(_0x40562f){if(!_0x40562f){_0x8d121f[_0xa757('0x20')](0x194);}return _0x40562f;};}function handleError(_0x21f1af,_0x2bf276){_0x2bf276=_0x2bf276||0x1f4;return function(_0x59fae6){logger[_0xa757('0x21')](_0x59fae6['stack']);if(_0x59fae6[_0xa757('0x22')]){delete _0x59fae6['name'];}_0x21f1af[_0xa757('0x19')](_0x2bf276)[_0xa757('0x23')](_0x59fae6);};}exports[_0xa757('0x24')]=function(_0x4d58a4,_0x2b19d5){var _0xcd98bd={},_0x471e84={},_0x3bf7f3={'count':0x0,'rows':[]};var _0x5b4779=db[_0xa757('0x25')]['rawAttributes'];_0x471e84['model']=_['keys'](_0x5b4779);var _0x4f8de2={'dateStart':_0x4d58a4[_0xa757('0x26')]['dateStart'],'dateEnd':_0x4d58a4[_0xa757('0x26')][_0xa757('0x27')]};delete _0x4d58a4['query'][_0xa757('0x28')];delete _0x4d58a4['query'][_0xa757('0x27')];_0x471e84[_0xa757('0x26')]=_['keys'](_0x4d58a4[_0xa757('0x26')]);_0x471e84['filters']=_[_0xa757('0x29')](_0x471e84[_0xa757('0x2a')],_0x471e84[_0xa757('0x26')]);_0xcd98bd[_0xa757('0x2b')]=_[_0xa757('0x29')](_0x471e84[_0xa757('0x2a')],qs[_0xa757('0x2c')](_0x4d58a4[_0xa757('0x26')][_0xa757('0x2c')]));_0xcd98bd[_0xa757('0x2b')]=_0xcd98bd[_0xa757('0x2b')][_0xa757('0x2d')]?_0xcd98bd[_0xa757('0x2b')]:_0x471e84[_0xa757('0x2a')];if(!_0x4d58a4[_0xa757('0x26')][_0xa757('0x2e')](_0xa757('0x2f'))){_0xcd98bd[_0xa757('0x30')]=qs[_0xa757('0x30')](_0x4d58a4[_0xa757('0x26')][_0xa757('0x30')]);_0xcd98bd[_0xa757('0x18')]=qs[_0xa757('0x18')](_0x4d58a4[_0xa757('0x26')]['offset']);}_0xcd98bd[_0xa757('0x31')]=qs[_0xa757('0x32')](_0x4d58a4[_0xa757('0x26')][_0xa757('0x32')]);_0xcd98bd[_0xa757('0x33')]=qs['filters'](_[_0xa757('0x34')](_0x4d58a4[_0xa757('0x26')],_0x471e84[_0xa757('0x35')]));if(_0x4f8de2[_0xa757('0x28')]){if(_0x4f8de2[_0xa757('0x27')]){_0x4f8de2[_0xa757('0x27')]=moment(_0x4f8de2['dateEnd'])[_0xa757('0x36')](0x1,_0xa757('0x37'));}else{_0x4f8de2[_0xa757('0x27')]=moment(_0x4f8de2[_0xa757('0x28')])[_0xa757('0x36')](0x1,_0xa757('0x37'));}_[_0xa757('0x38')](_0xcd98bd[_0xa757('0x33')],{'createdAt':{'$gte':_0x4f8de2[_0xa757('0x28')],'$lte':_0x4f8de2['dateEnd']}});}if(_0x4d58a4[_0xa757('0x26')][_0xa757('0x39')]){_0xcd98bd[_0xa757('0x33')]=_[_0xa757('0x38')](_0xcd98bd[_0xa757('0x33')],{'$or':_[_0xa757('0x3a')](_0x5b4779,function(_0x501e26){if(_0x501e26[_0xa757('0x3b')][_0xa757('0x3c')]!=='VIRTUAL'){var _0x5eae0b={};_0x5eae0b[_0x501e26[_0xa757('0x3d')]]={'$like':'%'+_0x4d58a4[_0xa757('0x26')]['filter']+'%'};return _0x5eae0b;}})});}_0xcd98bd=_['merge']({},_0xcd98bd,_0x4d58a4[_0xa757('0x3e')]);var _0x1725a2={'where':_0xcd98bd[_0xa757('0x33')]};return db['JscriptySessionReport'][_0xa757('0x17')](_0x1725a2)[_0xa757('0x1f')](function(_0x26802c){_0x3bf7f3[_0xa757('0x17')]=_0x26802c;if(_0x4d58a4[_0xa757('0x26')]['includeAll']){_0xcd98bd[_0xa757('0x3f')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0xcd98bd);})[_0xa757('0x1f')](function(_0x57298b){_0x3bf7f3[_0xa757('0x40')]=_0x57298b;return _0x3bf7f3;})[_0xa757('0x1f')](respondWithFilteredResult(_0x2b19d5,_0xcd98bd))[_0xa757('0x41')](handleError(_0x2b19d5,null));};exports['show']=function(_0x5d25bb,_0x11e141){var _0x129d77={'raw':!![],'where':{'id':_0x5d25bb[_0xa757('0x42')]['id']}},_0x2b171c={};_0x2b171c[_0xa757('0x2a')]=_[_0xa757('0x43')](db['JscriptySessionReport'][_0xa757('0x44')]);_0x2b171c[_0xa757('0x26')]=_['keys'](_0x5d25bb[_0xa757('0x26')]);_0x2b171c['filters']=_[_0xa757('0x29')](_0x2b171c[_0xa757('0x2a')],_0x2b171c['query']);_0x129d77[_0xa757('0x2b')]=_[_0xa757('0x29')](_0x2b171c['model'],qs[_0xa757('0x2c')](_0x5d25bb[_0xa757('0x26')][_0xa757('0x2c')]));_0x129d77[_0xa757('0x2b')]=_0x129d77['attributes'][_0xa757('0x2d')]?_0x129d77[_0xa757('0x2b')]:_0x2b171c[_0xa757('0x2a')];if(_0x5d25bb[_0xa757('0x26')]['includeAll']){_0x129d77[_0xa757('0x3f')]=[{'all':!![]}];}_0x129d77=_['merge']({},_0x129d77,_0x5d25bb['options']);return db[_0xa757('0x25')][_0xa757('0x45')](_0x129d77)[_0xa757('0x1f')](handleEntityNotFound(_0x11e141,null))['then'](respondWithResult(_0x11e141,null))[_0xa757('0x41')](handleError(_0x11e141,null));};exports['create']=function(_0x2ed63f,_0x151cc3){return db[_0xa757('0x25')][_0xa757('0x46')](_0x2ed63f[_0xa757('0x47')],{})[_0xa757('0x1f')](respondWithResult(_0x151cc3,0xc9))[_0xa757('0x41')](handleError(_0x151cc3,null));};exports[_0xa757('0x48')]=function(_0x581e95,_0x2de226){if(_0x581e95[_0xa757('0x47')]['id']){delete _0x581e95[_0xa757('0x47')]['id'];}return db[_0xa757('0x25')][_0xa757('0x45')]({'where':{'id':_0x581e95[_0xa757('0x42')]['id']}})[_0xa757('0x1f')](handleEntityNotFound(_0x2de226,null))[_0xa757('0x1f')](saveUpdates(_0x581e95[_0xa757('0x47')],null))[_0xa757('0x1f')](respondWithResult(_0x2de226,null))[_0xa757('0x41')](handleError(_0x2de226,null));};exports[_0xa757('0x49')]=function(_0x2367c7,_0x354ad5){return db[_0xa757('0x25')][_0xa757('0x45')]({'where':{'id':_0x2367c7['params']['id']}})[_0xa757('0x1f')](handleEntityNotFound(_0x354ad5,null))['then'](removeEntity(_0x354ad5,null))[_0xa757('0x41')](handleError(_0x354ad5,null));};exports[_0xa757('0x4a')]=function(_0xa89d24,_0x24c0ad){return db['JscriptySessionReport'][_0xa757('0x4a')]()[_0xa757('0x1f')](respondWithResult(_0x24c0ad,null))[_0xa757('0x41')](handleError(_0x24c0ad,null));};exports[_0xa757('0x4b')]=function(_0x595f16,_0x383674,_0x2df5e1){var _0x216b32={'raw':!![],'where':{}};var _0x1c9f1e={};var _0x33666d={'count':0x0,'rows':[]};return db[_0xa757('0x25')]['findOne']({'where':{'id':_0x595f16['params']['id']}})['then'](handleEntityNotFound(_0x383674,null))['then'](function(_0x1d8742){if(_0x1d8742){_0x1c9f1e[_0xa757('0x2a')]=_[_0xa757('0x43')](db[_0xa757('0x4c')][_0xa757('0x44')]);_0x1c9f1e[_0xa757('0x26')]=_['keys'](_0x595f16[_0xa757('0x26')]);_0x1c9f1e[_0xa757('0x35')]=_[_0xa757('0x29')](_0x1c9f1e[_0xa757('0x2a')],_0x1c9f1e['query']);_0x216b32[_0xa757('0x2b')]=_[_0xa757('0x29')](_0x1c9f1e['model'],qs[_0xa757('0x2c')](_0x595f16['query'][_0xa757('0x2c')]));_0x216b32['attributes']=_0x216b32[_0xa757('0x2b')]['length']?_0x216b32['attributes']:_0x1c9f1e[_0xa757('0x2a')];if(!_0x595f16[_0xa757('0x26')][_0xa757('0x2e')](_0xa757('0x2f'))){_0x216b32[_0xa757('0x30')]=qs[_0xa757('0x30')](_0x595f16['query']['limit']);_0x216b32[_0xa757('0x18')]=qs[_0xa757('0x18')](_0x595f16[_0xa757('0x26')]['offset']);}_0x216b32['order']=qs[_0xa757('0x32')](_0x595f16[_0xa757('0x26')][_0xa757('0x32')]);_0x216b32[_0xa757('0x33')]=qs[_0xa757('0x35')](_[_0xa757('0x34')](_0x595f16['query'],_0x1c9f1e[_0xa757('0x35')]));_0x216b32[_0xa757('0x33')][_0xa757('0x4d')]=_0x1d8742['id'];if(_0x595f16[_0xa757('0x26')][_0xa757('0x39')]){_0x216b32[_0xa757('0x33')]=_[_0xa757('0x38')](_0x216b32[_0xa757('0x33')],{'$or':_[_0xa757('0x3a')](_0x216b32[_0xa757('0x2b')],function(_0x5d3219){var _0x9e96e6={};_0x9e96e6[_0x5d3219]={'$like':'%'+_0x595f16['query']['filter']+'%'};return _0x9e96e6;})});}_0x216b32=_[_0xa757('0x38')]({},_0x216b32,_0x595f16[_0xa757('0x3e')]);return db[_0xa757('0x4c')][_0xa757('0x17')]({'where':_0x216b32[_0xa757('0x33')]})[_0xa757('0x1f')](function(_0x1b34ad){_0x33666d[_0xa757('0x17')]=_0x1b34ad;if(_0x595f16[_0xa757('0x26')][_0xa757('0x4e')]){_0x216b32[_0xa757('0x3f')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xa757('0x4f')](_0x216b32);})[_0xa757('0x1f')](function(_0x5f0b71){_0x33666d[_0xa757('0x40')]=_0x5f0b71;return _0x33666d;});}})[_0xa757('0x1f')](respondWithFilteredResult(_0x383674,_0x216b32))[_0xa757('0x41')](handleError(_0x383674,null));};
\ No newline at end of file
+var _0xd8b0=['field','includeAll','include','catch','show','params','options','find','create','body','describe','getQuestions','JscriptyQuestionReport','hasOwnProperty','SessionId','findAll','rows','html-pdf','eml-format','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','JscriptySessionReport','rawAttributes','keys','query','intersection','fields','attributes','length','model','nolimit','limit','order','sort','where','filters','dateStart','dateEnd','day','add','merge','filter','map','type','VIRTUAL'];(function(_0x1e69f0,_0x68ccf6){var _0x3ba4aa=function(_0x13fdff){while(--_0x13fdff){_0x1e69f0['push'](_0x1e69f0['shift']());}};_0x3ba4aa(++_0x68ccf6);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var pdf=require(_0x0d8b('0x0'));var emlformat=require(_0x0d8b('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0d8b('0x2'));var moment=require(_0x0d8b('0x3'));var BPromise=require(_0x0d8b('0x4'));var Mustache=require(_0x0d8b('0x5'));var util=require(_0x0d8b('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0d8b('0x7'));var ejs=require(_0x0d8b('0x8'));var fs=require('fs');var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0x7'));var querystring=require(_0x0d8b('0xc'));var Papa=require(_0x0d8b('0xd'));var Redis=require(_0x0d8b('0xe'));var qs=require(_0x0d8b('0xf'));var logger=require(_0x0d8b('0x10'))(_0x0d8b('0x11'));var utils=require(_0x0d8b('0x12'));var config=require('../../config/environment');var db=require(_0x0d8b('0x13'))['db'];function respondWithStatusCode(_0x4e0269,_0x4225c4){_0x4225c4=_0x4225c4||0xcc;return function(_0xc574a3){if(_0xc574a3){return _0x4e0269[_0x0d8b('0x14')](_0x4225c4);}return _0x4e0269[_0x0d8b('0x15')](_0x4225c4)[_0x0d8b('0x16')]();};}function respondWithResult(_0x32bb1a,_0x15dd0f){_0x15dd0f=_0x15dd0f||0xc8;return function(_0x31a8cc){if(_0x31a8cc){return _0x32bb1a[_0x0d8b('0x15')](_0x15dd0f)[_0x0d8b('0x17')](_0x31a8cc);}};}function respondWithFilteredResult(_0x5ad086,_0xe65334){return function(_0x1567ce){if(_0x1567ce){var _0x2d4e1c=_0x1567ce[_0x0d8b('0x18')],_0x4f6f21=_0xe65334[_0x0d8b('0x19')],_0x23eb7b=_0xe65334[_0x0d8b('0x19')]+_0xe65334['limit'],_0xa86349;if(_0x23eb7b>=_0x2d4e1c){_0x23eb7b=_0x2d4e1c;_0xa86349=0xc8;}else{_0xa86349=0xce;}_0x5ad086[_0x0d8b('0x15')](_0xa86349);return _0x5ad086[_0x0d8b('0x1a')](_0x0d8b('0x1b'),_0x4f6f21+'-'+_0x23eb7b+'/'+_0x2d4e1c)[_0x0d8b('0x17')](_0x1567ce);}return null;};}function patchUpdates(_0x333674){return function(_0x18dd2d){try{jsonpatch[_0x0d8b('0x1c')](_0x18dd2d,_0x333674,!![]);}catch(_0xa3612a){return BPromise['reject'](_0xa3612a);}return _0x18dd2d[_0x0d8b('0x1d')]();};}function saveUpdates(_0x23d58f,_0x196c0a){return function(_0x143372){if(_0x143372){return _0x143372[_0x0d8b('0x1e')](_0x23d58f)[_0x0d8b('0x1f')](function(_0x393beb){return _0x393beb;});}return null;};}function removeEntity(_0x352c17,_0x50ec1e){return function(_0x4f0a1a){if(_0x4f0a1a){return _0x4f0a1a[_0x0d8b('0x20')]()['then'](function(){_0x352c17['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x238728,_0x2b924f){return function(_0x214778){if(!_0x214778){_0x238728[_0x0d8b('0x14')](0x194);}return _0x214778;};}function handleError(_0x221071,_0x2c64e2){_0x2c64e2=_0x2c64e2||0x1f4;return function(_0x30980c){logger[_0x0d8b('0x21')](_0x30980c[_0x0d8b('0x22')]);if(_0x30980c['name']){delete _0x30980c[_0x0d8b('0x23')];}_0x221071[_0x0d8b('0x15')](_0x2c64e2)['send'](_0x30980c);};}exports[_0x0d8b('0x24')]=function(_0x4a0ae4,_0x3dd149){var _0x234bdd={},_0xa2af02={},_0x4fe6f9={'count':0x0,'rows':[]};var _0x59a905=db[_0x0d8b('0x25')][_0x0d8b('0x26')];_0xa2af02['model']=_[_0x0d8b('0x27')](_0x59a905);var _0x59aa83={'dateStart':_0x4a0ae4[_0x0d8b('0x28')]['dateStart'],'dateEnd':_0x4a0ae4[_0x0d8b('0x28')]['dateEnd']};delete _0x4a0ae4[_0x0d8b('0x28')]['dateStart'];delete _0x4a0ae4[_0x0d8b('0x28')]['dateEnd'];_0xa2af02[_0x0d8b('0x28')]=_[_0x0d8b('0x27')](_0x4a0ae4[_0x0d8b('0x28')]);_0xa2af02['filters']=_['intersection'](_0xa2af02['model'],_0xa2af02[_0x0d8b('0x28')]);_0x234bdd['attributes']=_[_0x0d8b('0x29')](_0xa2af02['model'],qs['fields'](_0x4a0ae4[_0x0d8b('0x28')][_0x0d8b('0x2a')]));_0x234bdd[_0x0d8b('0x2b')]=_0x234bdd[_0x0d8b('0x2b')][_0x0d8b('0x2c')]?_0x234bdd[_0x0d8b('0x2b')]:_0xa2af02[_0x0d8b('0x2d')];if(!_0x4a0ae4[_0x0d8b('0x28')]['hasOwnProperty'](_0x0d8b('0x2e'))){_0x234bdd[_0x0d8b('0x2f')]=qs['limit'](_0x4a0ae4[_0x0d8b('0x28')][_0x0d8b('0x2f')]);_0x234bdd[_0x0d8b('0x19')]=qs['offset'](_0x4a0ae4[_0x0d8b('0x28')][_0x0d8b('0x19')]);}_0x234bdd[_0x0d8b('0x30')]=qs[_0x0d8b('0x31')](_0x4a0ae4[_0x0d8b('0x28')]['sort']);_0x234bdd[_0x0d8b('0x32')]=qs[_0x0d8b('0x33')](_['pick'](_0x4a0ae4[_0x0d8b('0x28')],_0xa2af02[_0x0d8b('0x33')]));if(_0x59aa83[_0x0d8b('0x34')]){if(_0x59aa83[_0x0d8b('0x35')]){_0x59aa83[_0x0d8b('0x35')]=moment(_0x59aa83['dateEnd'])['add'](0x1,_0x0d8b('0x36'));}else{_0x59aa83['dateEnd']=moment(_0x59aa83['dateStart'])[_0x0d8b('0x37')](0x1,_0x0d8b('0x36'));}_[_0x0d8b('0x38')](_0x234bdd[_0x0d8b('0x32')],{'createdAt':{'$gte':_0x59aa83[_0x0d8b('0x34')],'$lte':_0x59aa83[_0x0d8b('0x35')]}});}if(_0x4a0ae4['query'][_0x0d8b('0x39')]){_0x234bdd[_0x0d8b('0x32')]=_[_0x0d8b('0x38')](_0x234bdd[_0x0d8b('0x32')],{'$or':_[_0x0d8b('0x3a')](_0x59a905,function(_0x1a39ad){if(_0x1a39ad[_0x0d8b('0x3b')]['key']!==_0x0d8b('0x3c')){var _0x34acb5={};_0x34acb5[_0x1a39ad[_0x0d8b('0x3d')]]={'$like':'%'+_0x4a0ae4[_0x0d8b('0x28')]['filter']+'%'};return _0x34acb5;}})});}_0x234bdd=_[_0x0d8b('0x38')]({},_0x234bdd,_0x4a0ae4['options']);var _0x37b26c={'where':_0x234bdd[_0x0d8b('0x32')]};return db[_0x0d8b('0x25')][_0x0d8b('0x18')](_0x37b26c)[_0x0d8b('0x1f')](function(_0x3e632e){_0x4fe6f9[_0x0d8b('0x18')]=_0x3e632e;if(_0x4a0ae4[_0x0d8b('0x28')][_0x0d8b('0x3e')]){_0x234bdd[_0x0d8b('0x3f')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x234bdd);})['then'](function(_0x4d0811){_0x4fe6f9['rows']=_0x4d0811;return _0x4fe6f9;})[_0x0d8b('0x1f')](respondWithFilteredResult(_0x3dd149,_0x234bdd))[_0x0d8b('0x40')](handleError(_0x3dd149,null));};exports[_0x0d8b('0x41')]=function(_0x5100cf,_0x4a76a3){var _0x1b216d={'raw':!![],'where':{'id':_0x5100cf[_0x0d8b('0x42')]['id']}},_0x192de1={};_0x192de1['model']=_[_0x0d8b('0x27')](db[_0x0d8b('0x25')]['rawAttributes']);_0x192de1['query']=_[_0x0d8b('0x27')](_0x5100cf['query']);_0x192de1[_0x0d8b('0x33')]=_['intersection'](_0x192de1['model'],_0x192de1[_0x0d8b('0x28')]);_0x1b216d[_0x0d8b('0x2b')]=_['intersection'](_0x192de1['model'],qs['fields'](_0x5100cf['query'][_0x0d8b('0x2a')]));_0x1b216d[_0x0d8b('0x2b')]=_0x1b216d[_0x0d8b('0x2b')]['length']?_0x1b216d[_0x0d8b('0x2b')]:_0x192de1[_0x0d8b('0x2d')];if(_0x5100cf[_0x0d8b('0x28')][_0x0d8b('0x3e')]){_0x1b216d[_0x0d8b('0x3f')]=[{'all':!![]}];}_0x1b216d=_[_0x0d8b('0x38')]({},_0x1b216d,_0x5100cf[_0x0d8b('0x43')]);return db[_0x0d8b('0x25')][_0x0d8b('0x44')](_0x1b216d)[_0x0d8b('0x1f')](handleEntityNotFound(_0x4a76a3,null))[_0x0d8b('0x1f')](respondWithResult(_0x4a76a3,null))[_0x0d8b('0x40')](handleError(_0x4a76a3,null));};exports[_0x0d8b('0x45')]=function(_0x3e569b,_0x570af8){return db[_0x0d8b('0x25')][_0x0d8b('0x45')](_0x3e569b[_0x0d8b('0x46')],{})[_0x0d8b('0x1f')](respondWithResult(_0x570af8,0xc9))['catch'](handleError(_0x570af8,null));};exports[_0x0d8b('0x1e')]=function(_0x4d8850,_0x5d29ab){if(_0x4d8850[_0x0d8b('0x46')]['id']){delete _0x4d8850[_0x0d8b('0x46')]['id'];}return db[_0x0d8b('0x25')][_0x0d8b('0x44')]({'where':{'id':_0x4d8850['params']['id']}})[_0x0d8b('0x1f')](handleEntityNotFound(_0x5d29ab,null))[_0x0d8b('0x1f')](saveUpdates(_0x4d8850[_0x0d8b('0x46')],null))[_0x0d8b('0x1f')](respondWithResult(_0x5d29ab,null))[_0x0d8b('0x40')](handleError(_0x5d29ab,null));};exports['destroy']=function(_0x5c0824,_0x4e4d5f){return db['JscriptySessionReport'][_0x0d8b('0x44')]({'where':{'id':_0x5c0824[_0x0d8b('0x42')]['id']}})['then'](handleEntityNotFound(_0x4e4d5f,null))['then'](removeEntity(_0x4e4d5f,null))[_0x0d8b('0x40')](handleError(_0x4e4d5f,null));};exports[_0x0d8b('0x47')]=function(_0x5c5bd7,_0x5ef6c3){return db[_0x0d8b('0x25')][_0x0d8b('0x47')]()[_0x0d8b('0x1f')](respondWithResult(_0x5ef6c3,null))[_0x0d8b('0x40')](handleError(_0x5ef6c3,null));};exports[_0x0d8b('0x48')]=function(_0x506a79,_0x2de903,_0x2afe34){var _0x5481fc={'raw':!![],'where':{}};var _0x580580={};var _0xf6a773={'count':0x0,'rows':[]};return db[_0x0d8b('0x25')]['findOne']({'where':{'id':_0x506a79['params']['id']}})[_0x0d8b('0x1f')](handleEntityNotFound(_0x2de903,null))[_0x0d8b('0x1f')](function(_0x377027){if(_0x377027){_0x580580[_0x0d8b('0x2d')]=_['keys'](db[_0x0d8b('0x49')]['rawAttributes']);_0x580580['query']=_[_0x0d8b('0x27')](_0x506a79[_0x0d8b('0x28')]);_0x580580['filters']=_['intersection'](_0x580580[_0x0d8b('0x2d')],_0x580580[_0x0d8b('0x28')]);_0x5481fc[_0x0d8b('0x2b')]=_[_0x0d8b('0x29')](_0x580580[_0x0d8b('0x2d')],qs[_0x0d8b('0x2a')](_0x506a79[_0x0d8b('0x28')][_0x0d8b('0x2a')]));_0x5481fc['attributes']=_0x5481fc[_0x0d8b('0x2b')][_0x0d8b('0x2c')]?_0x5481fc[_0x0d8b('0x2b')]:_0x580580[_0x0d8b('0x2d')];if(!_0x506a79[_0x0d8b('0x28')][_0x0d8b('0x4a')](_0x0d8b('0x2e'))){_0x5481fc[_0x0d8b('0x2f')]=qs[_0x0d8b('0x2f')](_0x506a79['query'][_0x0d8b('0x2f')]);_0x5481fc[_0x0d8b('0x19')]=qs[_0x0d8b('0x19')](_0x506a79[_0x0d8b('0x28')][_0x0d8b('0x19')]);}_0x5481fc['order']=qs[_0x0d8b('0x31')](_0x506a79[_0x0d8b('0x28')][_0x0d8b('0x31')]);_0x5481fc[_0x0d8b('0x32')]=qs[_0x0d8b('0x33')](_['pick'](_0x506a79['query'],_0x580580[_0x0d8b('0x33')]));_0x5481fc[_0x0d8b('0x32')][_0x0d8b('0x4b')]=_0x377027['id'];if(_0x506a79[_0x0d8b('0x28')]['filter']){_0x5481fc[_0x0d8b('0x32')]=_[_0x0d8b('0x38')](_0x5481fc[_0x0d8b('0x32')],{'$or':_['map'](_0x5481fc[_0x0d8b('0x2b')],function(_0x532a85){var _0x2fce07={};_0x2fce07[_0x532a85]={'$like':'%'+_0x506a79[_0x0d8b('0x28')][_0x0d8b('0x39')]+'%'};return _0x2fce07;})});}_0x5481fc=_[_0x0d8b('0x38')]({},_0x5481fc,_0x506a79[_0x0d8b('0x43')]);return db[_0x0d8b('0x49')]['count']({'where':_0x5481fc[_0x0d8b('0x32')]})['then'](function(_0x71e8d8){_0xf6a773[_0x0d8b('0x18')]=_0x71e8d8;if(_0x506a79[_0x0d8b('0x28')][_0x0d8b('0x3e')]){_0x5481fc['include']=[{'all':!![]}];}return db[_0x0d8b('0x49')][_0x0d8b('0x4c')](_0x5481fc);})[_0x0d8b('0x1f')](function(_0x2332fc){_0xf6a773[_0x0d8b('0x4d')]=_0x2332fc;return _0xf6a773;});}})[_0x0d8b('0x1f')](respondWithFilteredResult(_0x2de903,_0x5481fc))[_0x0d8b('0x40')](handleError(_0x2de903,null));};
\ No newline at end of file
index 09effb5..f23bee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x273c=['bluebird','request-promise','./jscriptySessionReport.attributes','lodash','util','moment'];(function(_0x41dbb8,_0x1c7d9a){var _0x106668=function(_0x3f1d9d){while(--_0x3f1d9d){_0x41dbb8['push'](_0x41dbb8['shift']());}};_0x106668(++_0x1c7d9a);}(_0x273c,0xe7));var _0xc273=function(_0x4327fe,_0x4f8040){_0x4327fe=_0x4327fe-0x0;var _0x138651=_0x273c[_0x4327fe];return _0x138651;};'use strict';var _=require(_0xc273('0x0'));var util=require(_0xc273('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc273('0x2'));var BPromise=require(_0xc273('0x3'));var rp=require(_0xc273('0x4'));var attributes=require(_0xc273('0x5'));module['exports']=function(_0x1c67bf,_0x1a8a59){return _0x1c67bf['define']('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb5fc=['api','moment','bluebird','request-promise','./jscriptySessionReport.attributes','define','report_jscripty_sessions','lodash','util'];(function(_0xe70d16,_0x4acf0a){var _0x1b01e7=function(_0x3cd066){while(--_0x3cd066){_0xe70d16['push'](_0xe70d16['shift']());}};_0x1b01e7(++_0x4acf0a);}(_0xb5fc,0x11e));var _0xcb5f=function(_0x54f1ce,_0x481a01){_0x54f1ce=_0x54f1ce-0x0;var _0x4f1712=_0xb5fc[_0x54f1ce];return _0x4f1712;};'use strict';var _=require(_0xcb5f('0x0'));var util=require(_0xcb5f('0x1'));var logger=require('../../config/logger')(_0xcb5f('0x2'));var moment=require(_0xcb5f('0x3'));var BPromise=require(_0xcb5f('0x4'));var rp=require(_0xcb5f('0x5'));var attributes=require(_0xcb5f('0x6'));module['exports']=function(_0x4fbc91,_0x11b2d2){return _0x4fbc91[_0xcb5f('0x7')]('JscriptySessionReport',attributes,{'tableName':_0xcb5f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 256b979..3a7ba2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8af6=['JscriptySessionReport,\x20%s,\x20%s','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info'];(function(_0x1696a0,_0x4c9f56){var _0x50bf7a=function(_0x20e696){while(--_0x20e696){_0x1696a0['push'](_0x1696a0['shift']());}};_0x50bf7a(++_0x4c9f56);}(_0x8af6,0x76));var _0x68af=function(_0x4ab618,_0x116321){_0x4ab618=_0x4ab618-0x0;var _0x9e21f7=_0x8af6[_0x4ab618];return _0x9e21f7;};'use strict';var _=require(_0x68af('0x0'));var util=require(_0x68af('0x1'));var moment=require(_0x68af('0x2'));var BPromise=require(_0x68af('0x3'));var rs=require(_0x68af('0x4'));var fs=require('fs');var Redis=require(_0x68af('0x5'));var db=require(_0x68af('0x6'))['db'];var utils=require(_0x68af('0x7'));var logger=require(_0x68af('0x8'))(_0x68af('0x9'));var config=require('../../config/environment');var jayson=require(_0x68af('0xa'));var client=jayson['client'][_0x68af('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2be0c1,_0x89146f,_0x1e77b0){return new BPromise(function(_0x3c6018,_0x20d61c){return client[_0x68af('0xc')](_0x2be0c1,_0x1e77b0)['then'](function(_0x56bc37){logger[_0x68af('0xd')](_0x68af('0xe'),_0x89146f,'request\x20sent');logger[_0x68af('0xf')](_0x68af('0x10'),_0x89146f,_0x68af('0x11'),JSON[_0x68af('0x12')](_0x56bc37));if(_0x56bc37[_0x68af('0x13')]){if(_0x56bc37[_0x68af('0x13')]['code']===0x1f4){logger['error'](_0x68af('0xe'),_0x89146f,_0x56bc37['error']['message']);return _0x20d61c(_0x56bc37[_0x68af('0x13')][_0x68af('0x14')]);}logger[_0x68af('0x13')]('JscriptySessionReport,\x20%s,\x20%s',_0x89146f,_0x56bc37[_0x68af('0x13')]['message']);return _0x3c6018(_0x56bc37[_0x68af('0x13')][_0x68af('0x14')]);}else{logger[_0x68af('0xd')](_0x68af('0xe'),_0x89146f,_0x68af('0x11'));_0x3c6018(_0x56bc37['result'][_0x68af('0x14')]);}})[_0x68af('0x15')](function(_0x326b12){logger[_0x68af('0x13')]('JscriptySessionReport,\x20%s,\x20%s',_0x89146f,_0x326b12);_0x20d61c(_0x326b12);});});}
\ No newline at end of file
+var _0xd98a=['client','http','then','info','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','JscriptySessionReport,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x598bf4,_0x1d3f14){var _0x2000d3=function(_0x513036){while(--_0x513036){_0x598bf4['push'](_0x598bf4['shift']());}};_0x2000d3(++_0x1d3f14);}(_0xd98a,0xfc));var _0xad98=function(_0x3edb48,_0x5546ad){_0x3edb48=_0x3edb48-0x0;var _0x1e1be9=_0xd98a[_0x3edb48];return _0x1e1be9;};'use strict';var _=require(_0xad98('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xad98('0x1'));var rs=require(_0xad98('0x2'));var fs=require('fs');var Redis=require(_0xad98('0x3'));var db=require(_0xad98('0x4'))['db'];var utils=require(_0xad98('0x5'));var logger=require(_0xad98('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xad98('0x7'));var client=jayson[_0xad98('0x8')][_0xad98('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cd316,_0x2bf76c,_0x480c93){return new BPromise(function(_0x20712b,_0x34eb2d){return client['request'](_0x2cd316,_0x480c93)[_0xad98('0xa')](function(_0x5016b4){logger[_0xad98('0xb')]('JscriptySessionReport,\x20%s,\x20%s',_0x2bf76c,'request\x20sent');logger['debug'](_0xad98('0xc'),_0x2bf76c,_0xad98('0xd'),JSON[_0xad98('0xe')](_0x5016b4));if(_0x5016b4[_0xad98('0xf')]){if(_0x5016b4['error']['code']===0x1f4){logger[_0xad98('0xf')](_0xad98('0x10'),_0x2bf76c,_0x5016b4[_0xad98('0xf')][_0xad98('0x11')]);return _0x34eb2d(_0x5016b4[_0xad98('0xf')][_0xad98('0x11')]);}logger[_0xad98('0xf')](_0xad98('0x10'),_0x2bf76c,_0x5016b4[_0xad98('0xf')]['message']);return _0x20712b(_0x5016b4[_0xad98('0xf')][_0xad98('0x11')]);}else{logger[_0xad98('0xb')](_0xad98('0x10'),_0x2bf76c,_0xad98('0xd'));_0x20712b(_0x5016b4[_0xad98('0x12')][_0xad98('0x11')]);}})[_0xad98('0x13')](function(_0x1c98e7){logger['error']('JscriptySessionReport,\x20%s,\x20%s',_0x2bf76c,_0x1c98e7);_0x34eb2d(_0x1c98e7);});});}
\ No newline at end of file
index ddee677..a0a1c40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd462=['../../components/interaction/service','../../config/environment','./license.controller','index','put','/:id','update','exports','multer','path','express','Router'];(function(_0x4f11cb,_0x14e174){var _0x491488=function(_0x2904a9){while(--_0x2904a9){_0x4f11cb['push'](_0x4f11cb['shift']());}};_0x491488(++_0x14e174);}(_0xd462,0x188));var _0x2d46=function(_0x99868f,_0xbdb8e7){_0x99868f=_0x99868f-0x0;var _0x27a71b=_0xd462[_0x99868f];return _0x27a71b;};'use strict';var multer=require(_0x2d46('0x0'));var util=require('util');var path=require(_0x2d46('0x1'));var timeout=require('connect-timeout');var express=require(_0x2d46('0x2'));var router=express[_0x2d46('0x3')]();var auth=require('../../components/auth/service');var interaction=require(_0x2d46('0x4'));var config=require(_0x2d46('0x5'));var controller=require(_0x2d46('0x6'));router['get']('/',controller[_0x2d46('0x7')]);router[_0x2d46('0x8')](_0x2d46('0x9'),auth['isAuthenticated'](),controller[_0x2d46('0xa')]);module[_0x2d46('0xb')]=router;
\ No newline at end of file
+var _0x54ee=['update','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','put','/:id','isAuthenticated'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x54ee,0x17c));var _0xe54e=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x54ee[_0x2d7f0e];return _0x110b07;};'use strict';var multer=require(_0xe54e('0x0'));var util=require('util');var path=require(_0xe54e('0x1'));var timeout=require('connect-timeout');var express=require(_0xe54e('0x2'));var router=express[_0xe54e('0x3')]();var auth=require(_0xe54e('0x4'));var interaction=require(_0xe54e('0x5'));var config=require(_0xe54e('0x6'));var controller=require(_0xe54e('0x7'));router[_0xe54e('0x8')]('/',controller['index']);router[_0xe54e('0x9')](_0xe54e('0xa'),auth[_0xe54e('0xb')](),controller[_0xe54e('0xc')]);module[_0xe54e('0xd')]=router;
\ No newline at end of file
index 4f51272..c56d85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d5e=['INTEGER','sequelize','TEXT','STRING'];(function(_0x58ceae,_0x569df3){var _0x5187e5=function(_0x53d693){while(--_0x53d693){_0x58ceae['push'](_0x58ceae['shift']());}};_0x5187e5(++_0x569df3);}(_0x3d5e,0x65));var _0xe3d5=function(_0x532a8f,_0x8b69a4){_0x532a8f=_0x532a8f-0x0;var _0xfc5446=_0x3d5e[_0x532a8f];return _0xfc5446;};'use strict';var Sequelize=require(_0xe3d5('0x0'));module['exports']={'license':{'type':Sequelize[_0xe3d5('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xe3d5('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0xe3d5('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf0c5=['INTEGER','sequelize','exports','TEXT','STRING'];(function(_0x23bb77,_0x4d374a){var _0x3d6761=function(_0x581a66){while(--_0x581a66){_0x23bb77['push'](_0x23bb77['shift']());}};_0x3d6761(++_0x4d374a);}(_0xf0c5,0xdd));var _0x5f0c=function(_0x52d72b,_0x1604c4){_0x52d72b=_0x52d72b-0x0;var _0x547c18=_0xf0c5[_0x52d72b];return _0x547c18;};'use strict';var Sequelize=require(_0x5f0c('0x0'));module[_0x5f0c('0x1')]={'license':{'type':Sequelize[_0x5f0c('0x2')]},'data1':{'type':Sequelize[_0x5f0c('0x3')]},'data2':{'type':Sequelize[_0x5f0c('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x5f0c('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index 7542a85..ed4b1c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['update','body','find','params','get','checkLicense','key','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','send','../../config/license/util','index','model','keys','License','rawAttributes','query','filters','intersection','attributes','fields','length','options','getLicense','catch'];(function(_0x32cd83,_0x461b3b){var _0x100e05=function(_0x4213ce){while(--_0x4213ce){_0x32cd83['push'](_0x32cd83['shift']());}};_0x100e05(++_0x461b3b);}(_0xc2c7,0x134));var _0x7c2c=function(_0x1231b0,_0x401319){_0x1231b0=_0x1231b0-0x0;var _0xf6af13=_0xc2c7[_0x1231b0];return _0xf6af13;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x7c2c('0x0'));var rimraf=require(_0x7c2c('0x1'));var zipdir=require(_0x7c2c('0x2'));var jsonpatch=require(_0x7c2c('0x3'));var rp=require(_0x7c2c('0x4'));var moment=require(_0x7c2c('0x5'));var BPromise=require(_0x7c2c('0x6'));var Mustache=require(_0x7c2c('0x7'));var util=require('util');var path=require('path');var sox=require(_0x7c2c('0x8'));var csv=require(_0x7c2c('0x9'));var ejs=require(_0x7c2c('0xa'));var fs=require('fs');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('0x9'));var querystring=require(_0x7c2c('0xd'));var Papa=require(_0x7c2c('0xe'));var Redis=require('ioredis');var qs=require(_0x7c2c('0xf'));var logger=require(_0x7c2c('0x10'))(_0x7c2c('0x11'));var utils=require(_0x7c2c('0x12'));var config=require(_0x7c2c('0x13'));var db=require(_0x7c2c('0x14'))['db'];function respondWithStatusCode(_0x2cb057,_0x38fc25){_0x38fc25=_0x38fc25||0xcc;return function(_0xed73e8){if(_0xed73e8){return _0x2cb057[_0x7c2c('0x15')](_0x38fc25);}return _0x2cb057[_0x7c2c('0x16')](_0x38fc25)[_0x7c2c('0x17')]();};}function respondWithResult(_0x68398a,_0x132133){_0x132133=_0x132133||0xc8;return function(_0x177f14){if(_0x177f14){return _0x68398a[_0x7c2c('0x16')](_0x132133)['json'](_0x177f14);}};}function respondWithFilteredResult(_0x5b5729,_0x102778){return function(_0xd1a3db){if(_0xd1a3db){var _0x4678a8=_0xd1a3db['count'],_0x5ae94f=_0x102778[_0x7c2c('0x18')],_0x11424c=_0x102778['offset']+_0x102778[_0x7c2c('0x19')],_0x206ecd;if(_0x11424c>=_0x4678a8){_0x11424c=_0x4678a8;_0x206ecd=0xc8;}else{_0x206ecd=0xce;}_0x5b5729['status'](_0x206ecd);return _0x5b5729[_0x7c2c('0x1a')](_0x7c2c('0x1b'),_0x5ae94f+'-'+_0x11424c+'/'+_0x4678a8)[_0x7c2c('0x1c')](_0xd1a3db);}return null;};}function patchUpdates(_0x2a9539){return function(_0x17df4a){try{jsonpatch[_0x7c2c('0x1d')](_0x17df4a,_0x2a9539,!![]);}catch(_0x2c1378){return BPromise[_0x7c2c('0x1e')](_0x2c1378);}return _0x17df4a[_0x7c2c('0x1f')]();};}function saveUpdates(_0x39c5f3,_0x40eaef){return function(_0x2381b4){if(_0x2381b4){return _0x2381b4['update'](_0x39c5f3)[_0x7c2c('0x20')](function(_0x4adb62){return _0x4adb62;});}return null;};}function removeEntity(_0x506d47,_0x15ae33){return function(_0x3a71d7){if(_0x3a71d7){return _0x3a71d7[_0x7c2c('0x21')]()[_0x7c2c('0x20')](function(){_0x506d47[_0x7c2c('0x16')](0xcc)[_0x7c2c('0x17')]();});}};}function handleEntityNotFound(_0xa84620,_0x541368){return function(_0x10c356){if(!_0x10c356){_0xa84620['sendStatus'](0x194);}return _0x10c356;};}function handleError(_0x302c93,_0x57f510){_0x57f510=_0x57f510||0x1f4;return function(_0x3d4387){logger[_0x7c2c('0x22')](_0x3d4387[_0x7c2c('0x23')]);if(_0x3d4387['name']){delete _0x3d4387['name'];}_0x302c93[_0x7c2c('0x16')](_0x57f510)[_0x7c2c('0x24')](_0x3d4387);};}var utilLicense=require(_0x7c2c('0x25'));exports[_0x7c2c('0x26')]=function(_0x31d8f3,_0xa8e145){var _0x3f4618={'raw':!![],'where':{'id':0x1}},_0x4b1dd0={};_0x4b1dd0[_0x7c2c('0x27')]=_[_0x7c2c('0x28')](db[_0x7c2c('0x29')][_0x7c2c('0x2a')]);_0x4b1dd0[_0x7c2c('0x2b')]=_[_0x7c2c('0x28')](_0x31d8f3[_0x7c2c('0x2b')]);_0x4b1dd0[_0x7c2c('0x2c')]=_[_0x7c2c('0x2d')](_0x4b1dd0['model'],_0x4b1dd0[_0x7c2c('0x2b')]);_0x3f4618[_0x7c2c('0x2e')]=_[_0x7c2c('0x2d')](_0x4b1dd0[_0x7c2c('0x27')],qs['fields'](_0x31d8f3[_0x7c2c('0x2b')][_0x7c2c('0x2f')]));_0x3f4618[_0x7c2c('0x2e')]=_0x3f4618[_0x7c2c('0x2e')][_0x7c2c('0x30')]?_0x3f4618[_0x7c2c('0x2e')]:_0x4b1dd0[_0x7c2c('0x27')];_0x3f4618=_['merge']({},_0x3f4618,_0x31d8f3[_0x7c2c('0x31')]);return utilLicense[_0x7c2c('0x32')](_0x3f4618)[_0x7c2c('0x20')](respondWithResult(_0xa8e145,null))[_0x7c2c('0x33')](handleError(_0xa8e145,null));};exports[_0x7c2c('0x34')]=function(_0x5147c1,_0x47ef3c){if(_0x5147c1[_0x7c2c('0x35')]['id']){delete _0x5147c1['body']['id'];}return db['License'][_0x7c2c('0x36')]({'where':{'id':_0x5147c1[_0x7c2c('0x37')]['id']}})[_0x7c2c('0x20')](handleEntityNotFound(_0x47ef3c,null))[_0x7c2c('0x20')](function(_0x536dcf){var _0x447a52=_0x536dcf[_0x7c2c('0x38')]({'plain':!![]});return utilLicense[_0x7c2c('0x39')](_0x447a52,_0x5147c1[_0x7c2c('0x35')][_0x7c2c('0x3a')]);})[_0x7c2c('0x20')](function(_0x18795b){if(!_0x18795b[_0x7c2c('0x3b')]){return saveUpdates(_0x5147c1[_0x7c2c('0x35')],null);}return _0x18795b;})[_0x7c2c('0x20')](respondWithResult(_0x47ef3c,null))[_0x7c2c('0x33')](handleError(_0x47ef3c,null));};
\ No newline at end of file
+var _0xadb5=['body','params','checkLicense','key','catch','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','status','json','count','offset','limit','set','Content-Range','apply','reject','update','then','end','sendStatus','error','stack','name','send','index','model','keys','License','rawAttributes','query','intersection','attributes','fields','length','merge','options'];(function(_0x14bed5,_0x49a3d8){var _0x4fdc80=function(_0x4edc2a){while(--_0x4edc2a){_0x14bed5['push'](_0x14bed5['shift']());}};_0x4fdc80(++_0x49a3d8);}(_0xadb5,0xad));var _0x5adb=function(_0x3c5b39,_0x31fa08){_0x3c5b39=_0x3c5b39-0x0;var _0x20b214=_0xadb5[_0x3c5b39];return _0x20b214;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x5adb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5adb('0x1'));var jsonpatch=require(_0x5adb('0x2'));var rp=require(_0x5adb('0x3'));var moment=require('moment');var BPromise=require(_0x5adb('0x4'));var Mustache=require(_0x5adb('0x5'));var util=require(_0x5adb('0x6'));var path=require('path');var sox=require(_0x5adb('0x7'));var csv=require(_0x5adb('0x8'));var ejs=require(_0x5adb('0x9'));var fs=require('fs');var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x8'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var qs=require(_0x5adb('0x12'));var logger=require(_0x5adb('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x5adb('0x14'));var db=require(_0x5adb('0x15'))['db'];function respondWithStatusCode(_0x82e67e,_0x53b772){_0x53b772=_0x53b772||0xcc;return function(_0x29f0d5){if(_0x29f0d5){return _0x82e67e['sendStatus'](_0x53b772);}return _0x82e67e[_0x5adb('0x16')](_0x53b772)['end']();};}function respondWithResult(_0x8cfcc6,_0x39a0b3){_0x39a0b3=_0x39a0b3||0xc8;return function(_0x44abe3){if(_0x44abe3){return _0x8cfcc6['status'](_0x39a0b3)[_0x5adb('0x17')](_0x44abe3);}};}function respondWithFilteredResult(_0x34af2c,_0xf82f72){return function(_0x5263ec){if(_0x5263ec){var _0x2312de=_0x5263ec[_0x5adb('0x18')],_0x518823=_0xf82f72[_0x5adb('0x19')],_0x367d82=_0xf82f72[_0x5adb('0x19')]+_0xf82f72[_0x5adb('0x1a')],_0x42a482;if(_0x367d82>=_0x2312de){_0x367d82=_0x2312de;_0x42a482=0xc8;}else{_0x42a482=0xce;}_0x34af2c[_0x5adb('0x16')](_0x42a482);return _0x34af2c[_0x5adb('0x1b')](_0x5adb('0x1c'),_0x518823+'-'+_0x367d82+'/'+_0x2312de)['json'](_0x5263ec);}return null;};}function patchUpdates(_0x3fff62){return function(_0x5de028){try{jsonpatch[_0x5adb('0x1d')](_0x5de028,_0x3fff62,!![]);}catch(_0x558f76){return BPromise[_0x5adb('0x1e')](_0x558f76);}return _0x5de028['save']();};}function saveUpdates(_0x5e218c,_0x1fbaa5){return function(_0x1bed20){if(_0x1bed20){return _0x1bed20[_0x5adb('0x1f')](_0x5e218c)[_0x5adb('0x20')](function(_0x99bc6c){return _0x99bc6c;});}return null;};}function removeEntity(_0x5af69d,_0x3255b3){return function(_0x5c296e){if(_0x5c296e){return _0x5c296e['destroy']()[_0x5adb('0x20')](function(){_0x5af69d[_0x5adb('0x16')](0xcc)[_0x5adb('0x21')]();});}};}function handleEntityNotFound(_0x1a8014,_0x1e9ccf){return function(_0x413911){if(!_0x413911){_0x1a8014[_0x5adb('0x22')](0x194);}return _0x413911;};}function handleError(_0x4ca150,_0x4b1957){_0x4b1957=_0x4b1957||0x1f4;return function(_0x373cc3){logger[_0x5adb('0x23')](_0x373cc3[_0x5adb('0x24')]);if(_0x373cc3[_0x5adb('0x25')]){delete _0x373cc3['name'];}_0x4ca150[_0x5adb('0x16')](_0x4b1957)[_0x5adb('0x26')](_0x373cc3);};}var utilLicense=require('../../config/license/util');exports[_0x5adb('0x27')]=function(_0x1ded9f,_0x1a0acd){var _0x55b40a={'raw':!![],'where':{'id':0x1}},_0x13ad1d={};_0x13ad1d[_0x5adb('0x28')]=_[_0x5adb('0x29')](db[_0x5adb('0x2a')][_0x5adb('0x2b')]);_0x13ad1d[_0x5adb('0x2c')]=_['keys'](_0x1ded9f['query']);_0x13ad1d['filters']=_[_0x5adb('0x2d')](_0x13ad1d[_0x5adb('0x28')],_0x13ad1d[_0x5adb('0x2c')]);_0x55b40a[_0x5adb('0x2e')]=_[_0x5adb('0x2d')](_0x13ad1d['model'],qs[_0x5adb('0x2f')](_0x1ded9f[_0x5adb('0x2c')][_0x5adb('0x2f')]));_0x55b40a[_0x5adb('0x2e')]=_0x55b40a[_0x5adb('0x2e')][_0x5adb('0x30')]?_0x55b40a[_0x5adb('0x2e')]:_0x13ad1d[_0x5adb('0x28')];_0x55b40a=_[_0x5adb('0x31')]({},_0x55b40a,_0x1ded9f[_0x5adb('0x32')]);return utilLicense['getLicense'](_0x55b40a)[_0x5adb('0x20')](respondWithResult(_0x1a0acd,null))['catch'](handleError(_0x1a0acd,null));};exports[_0x5adb('0x1f')]=function(_0x20cde6,_0x5d1441){if(_0x20cde6[_0x5adb('0x33')]['id']){delete _0x20cde6[_0x5adb('0x33')]['id'];}return db[_0x5adb('0x2a')]['find']({'where':{'id':_0x20cde6[_0x5adb('0x34')]['id']}})[_0x5adb('0x20')](handleEntityNotFound(_0x5d1441,null))['then'](function(_0x5bb227){var _0x1ed9ea=_0x5bb227['get']({'plain':!![]});return utilLicense[_0x5adb('0x35')](_0x1ed9ea,_0x20cde6[_0x5adb('0x33')][_0x5adb('0x36')]);})[_0x5adb('0x20')](function(_0x9bdece){if(!_0x9bdece['demo']){return saveUpdates(_0x20cde6[_0x5adb('0x33')],null);}return _0x9bdece;})[_0x5adb('0x20')](respondWithResult(_0x5d1441,null))[_0x5adb('0x37')](handleError(_0x5d1441,null));};
\ No newline at end of file
index 990a23b..4b3b0c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1f0=['exports','License','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x16ded9,_0x36e636){var _0x1d7418=function(_0x155ca0){while(--_0x155ca0){_0x16ded9['push'](_0x16ded9['shift']());}};_0x1d7418(++_0x36e636);}(_0xe1f0,0x1c2));var _0x0e1f=function(_0x563d6f,_0x168f4a){_0x563d6f=_0x563d6f-0x0;var _0x155d4e=_0xe1f0[_0x563d6f];return _0x155d4e;};'use strict';var _=require('lodash');var util=require(_0x0e1f('0x0'));var logger=require(_0x0e1f('0x1'))('api');var moment=require(_0x0e1f('0x2'));var BPromise=require(_0x0e1f('0x3'));var rp=require(_0x0e1f('0x4'));var attributes=require('./license.attributes');module[_0x0e1f('0x5')]=function(_0x3c7961,_0x432348){return _0x3c7961['define'](_0x0e1f('0x6'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc01b=['bluebird','request-promise','exports','define','License','license','lodash','util','../../config/logger','api','moment'];(function(_0x3fc726,_0x3bb2d3){var _0x4ca942=function(_0x23c5a6){while(--_0x23c5a6){_0x3fc726['push'](_0x3fc726['shift']());}};_0x4ca942(++_0x3bb2d3);}(_0xc01b,0x74));var _0xbc01=function(_0x56bee1,_0x1d459b){_0x56bee1=_0x56bee1-0x0;var _0x5a2d14=_0xc01b[_0x56bee1];return _0x5a2d14;};'use strict';var _=require(_0xbc01('0x0'));var util=require(_0xbc01('0x1'));var logger=require(_0xbc01('0x2'))(_0xbc01('0x3'));var moment=require(_0xbc01('0x4'));var BPromise=require(_0xbc01('0x5'));var rp=require(_0xbc01('0x6'));var attributes=require('./license.attributes');module[_0xbc01('0x7')]=function(_0x133078,_0x222fa3){return _0x133078[_0xbc01('0x8')](_0xbc01('0x9'),attributes,{'tableName':_0xbc01('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 57e2f2e..ea26d6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6986=['jayson/promise','client','http','request','info','License,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x140dae,_0x28601d){var _0x3d4663=function(_0x512458){while(--_0x512458){_0x140dae['push'](_0x140dae['shift']());}};_0x3d4663(++_0x28601d);}(_0x6986,0xfc));var _0x6698=function(_0x1762b4,_0x33d836){_0x1762b4=_0x1762b4-0x0;var _0x29beda=_0x6986[_0x1762b4];return _0x29beda;};'use strict';var _=require(_0x6698('0x0'));var util=require(_0x6698('0x1'));var moment=require(_0x6698('0x2'));var BPromise=require('bluebird');var rs=require(_0x6698('0x3'));var fs=require('fs');var Redis=require(_0x6698('0x4'));var db=require(_0x6698('0x5'))['db'];var utils=require(_0x6698('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x6698('0x7'));var jayson=require(_0x6698('0x8'));var client=jayson[_0x6698('0x9')][_0x6698('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xff53c3,_0xfa91e0,_0x2c6c57){return new BPromise(function(_0x404c53,_0x43371e){return client[_0x6698('0xb')](_0xff53c3,_0x2c6c57)['then'](function(_0x25071d){logger[_0x6698('0xc')](_0x6698('0xd'),_0xfa91e0,_0x6698('0xe'));logger[_0x6698('0xf')]('License,\x20%s,\x20%s,\x20%s',_0xfa91e0,_0x6698('0xe'),JSON[_0x6698('0x10')](_0x25071d));if(_0x25071d['error']){if(_0x25071d['error'][_0x6698('0x11')]===0x1f4){logger['error'](_0x6698('0xd'),_0xfa91e0,_0x25071d['error']['message']);return _0x43371e(_0x25071d[_0x6698('0x12')][_0x6698('0x13')]);}logger[_0x6698('0x12')]('License,\x20%s,\x20%s',_0xfa91e0,_0x25071d[_0x6698('0x12')][_0x6698('0x13')]);return _0x404c53(_0x25071d[_0x6698('0x12')][_0x6698('0x13')]);}else{logger['info'](_0x6698('0xd'),_0xfa91e0,_0x6698('0xe'));_0x404c53(_0x25071d['result']['message']);}})['catch'](function(_0x26aa75){logger[_0x6698('0x12')](_0x6698('0xd'),_0xfa91e0,_0x26aa75);_0x43371e(_0x26aa75);});});}
\ No newline at end of file
+var _0x7202=['debug','License,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','License,\x20%s,\x20%s'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x7202,0x110));var _0x2720=function(_0x2341a7,_0x2378bf){_0x2341a7=_0x2341a7-0x0;var _0x277d41=_0x7202[_0x2341a7];return _0x277d41;};'use strict';var _=require(_0x2720('0x0'));var util=require('util');var moment=require(_0x2720('0x1'));var BPromise=require(_0x2720('0x2'));var rs=require(_0x2720('0x3'));var fs=require('fs');var Redis=require(_0x2720('0x4'));var db=require(_0x2720('0x5'))['db'];var utils=require(_0x2720('0x6'));var logger=require(_0x2720('0x7'))('rpc');var config=require(_0x2720('0x8'));var jayson=require(_0x2720('0x9'));var client=jayson[_0x2720('0xa')][_0x2720('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xce7575,_0x3f8029,_0xea2783){return new BPromise(function(_0xf98362,_0x26442f){return client['request'](_0xce7575,_0xea2783)['then'](function(_0x52ee24){logger[_0x2720('0xc')](_0x2720('0xd'),_0x3f8029,'request\x20sent');logger[_0x2720('0xe')](_0x2720('0xf'),_0x3f8029,'request\x20sent',JSON['stringify'](_0x52ee24));if(_0x52ee24[_0x2720('0x10')]){if(_0x52ee24['error'][_0x2720('0x11')]===0x1f4){logger[_0x2720('0x10')](_0x2720('0xd'),_0x3f8029,_0x52ee24[_0x2720('0x10')][_0x2720('0x12')]);return _0x26442f(_0x52ee24['error']['message']);}logger['error'](_0x2720('0xd'),_0x3f8029,_0x52ee24[_0x2720('0x10')][_0x2720('0x12')]);return _0xf98362(_0x52ee24[_0x2720('0x10')][_0x2720('0x12')]);}else{logger[_0x2720('0xc')](_0x2720('0xd'),_0x3f8029,_0x2720('0x13'));_0xf98362(_0x52ee24[_0x2720('0x14')][_0x2720('0x12')]);}})[_0x2720('0x15')](function(_0x1279a1){logger[_0x2720('0x10')](_0x2720('0xd'),_0x3f8029,_0x1279a1);_0x26442f(_0x1279a1);});});}
\ No newline at end of file
index fc31c9b..e89abbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['removeImap','removeSmtp','destroy','exports','multer','util','path','Router','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','/describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','/:id/verify','verifySmtp','/:id/users','getAgents','post','addDisposition','addAnswer','create','addSmtp','addInteraction','addApplications','send','put','delete','removeDispositions','removeAnswers','/:id/in_servers'];(function(_0x408132,_0x9d7534){var _0x4c1382=function(_0x3eecf7){while(--_0x3eecf7){_0x408132['push'](_0x408132['shift']());}};_0x4c1382(++_0x9d7534);}(_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 auth=require('../../components/auth/service');var interaction=require(_0x0a9e('0x4'));var config=require(_0x0a9e('0x5'));var controller=require(_0x0a9e('0x6'));router[_0x0a9e('0x7')]('/',auth[_0x0a9e('0x8')](),controller['index']);router[_0x0a9e('0x7')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller['describe']);router['get'](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x7')](_0x0a9e('0xb'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xc')]);router[_0x0a9e('0x7')](_0x0a9e('0xd'),auth['isAuthenticated'](),controller['getAnswers']);router['get']('/:id/in_servers',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x7')](_0x0a9e('0xf'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x10')]);router['get'](_0x0a9e('0x11'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x7')](_0x0a9e('0x13'),auth[_0x0a9e('0x8')](),controller['getApplications']);router[_0x0a9e('0x7')]('/:id/messages',auth[_0x0a9e('0x8')](),controller['getMessages']);router[_0x0a9e('0x7')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')](_0x0a9e('0xb'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0xd'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x18')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')]('/:id/in_servers',auth[_0x0a9e('0x8')](),controller['addImap']);router['post'](_0x0a9e('0xf'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/interactions',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1d')]);router[_0x0a9e('0x18')](_0x0a9e('0x13'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1e')]);router[_0x0a9e('0x18')]('/:id/send',auth['isAuthenticated'](),controller[_0x0a9e('0x1f')]);router[_0x0a9e('0x18')](_0x0a9e('0x16'),auth[_0x0a9e('0x8')](),controller['addAgents']);router[_0x0a9e('0x20')]('/:id',auth[_0x0a9e('0x8')](),controller['update']);router[_0x0a9e('0x21')](_0x0a9e('0xb'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x22')]);router[_0x0a9e('0x21')](_0x0a9e('0xd'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x23')]);router['delete'](_0x0a9e('0x24'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')]('/:id/out_servers',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x26')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x21')](_0x0a9e('0x16'),auth[_0x0a9e('0x8')](),controller['removeAgents']);module[_0x0a9e('0x28')]=router;
\ No newline at end of file
+var _0x9957=['update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','destroy','removeAgents','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','/:id/out_servers','getSmtp','getInteractions','/:id/applications','getApplications','/:id/messages','verifySmtp','/:id/users','getAgents','post','/:id/in_servers','addImap','addSmtp','/:id/interactions','addInteraction','/:id/send','send','addAgents'];(function(_0x26462c,_0xd20a35){var _0x509a42=function(_0x1b22c9){while(--_0x1b22c9){_0x26462c['push'](_0x26462c['shift']());}};_0x509a42(++_0xd20a35);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'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 auth=require(_0x7995('0x5'));var interaction=require(_0x7995('0x6'));var config=require(_0x7995('0x7'));var controller=require('./mailAccount.controller');router[_0x7995('0x8')]('/',auth[_0x7995('0x9')](),controller[_0x7995('0xa')]);router[_0x7995('0x8')](_0x7995('0xb'),auth[_0x7995('0x9')](),controller['describe']);router[_0x7995('0x8')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x8')](_0x7995('0xe'),auth[_0x7995('0x9')](),controller[_0x7995('0xf')]);router[_0x7995('0x8')](_0x7995('0x10'),auth['isAuthenticated'](),controller[_0x7995('0x11')]);router[_0x7995('0x8')]('/:id/in_servers',auth[_0x7995('0x9')](),controller[_0x7995('0x12')]);router[_0x7995('0x8')](_0x7995('0x13'),auth[_0x7995('0x9')](),controller[_0x7995('0x14')]);router[_0x7995('0x8')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x7995('0x15')]);router[_0x7995('0x8')](_0x7995('0x16'),auth[_0x7995('0x9')](),controller[_0x7995('0x17')]);router[_0x7995('0x8')](_0x7995('0x18'),auth[_0x7995('0x9')](),controller['getMessages']);router[_0x7995('0x8')]('/:id/verify',auth[_0x7995('0x9')](),controller[_0x7995('0x19')]);router[_0x7995('0x8')](_0x7995('0x1a'),auth[_0x7995('0x9')](),controller[_0x7995('0x1b')]);router['post']('/:id/dispositions',auth[_0x7995('0x9')](),controller['addDisposition']);router['post'](_0x7995('0x10'),auth[_0x7995('0x9')](),controller['addAnswer']);router[_0x7995('0x1c')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7995('0x1c')](_0x7995('0x1d'),auth[_0x7995('0x9')](),controller[_0x7995('0x1e')]);router[_0x7995('0x1c')](_0x7995('0x13'),auth['isAuthenticated'](),controller[_0x7995('0x1f')]);router[_0x7995('0x1c')](_0x7995('0x20'),auth[_0x7995('0x9')](),controller[_0x7995('0x21')]);router[_0x7995('0x1c')](_0x7995('0x16'),auth[_0x7995('0x9')](),controller['addApplications']);router[_0x7995('0x1c')](_0x7995('0x22'),auth[_0x7995('0x9')](),controller[_0x7995('0x23')]);router[_0x7995('0x1c')](_0x7995('0x1a'),auth['isAuthenticated'](),controller[_0x7995('0x24')]);router['put'](_0x7995('0xc'),auth[_0x7995('0x9')](),controller[_0x7995('0x25')]);router[_0x7995('0x26')](_0x7995('0xe'),auth['isAuthenticated'](),controller[_0x7995('0x27')]);router['delete'](_0x7995('0x10'),auth[_0x7995('0x9')](),controller[_0x7995('0x28')]);router['delete']('/:id/in_servers',auth['isAuthenticated'](),controller[_0x7995('0x29')]);router[_0x7995('0x26')](_0x7995('0x13'),auth[_0x7995('0x9')](),controller[_0x7995('0x2a')]);router[_0x7995('0x26')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x2b')]);router['delete'](_0x7995('0x1a'),auth[_0x7995('0x9')](),controller[_0x7995('0x2c')]);module[_0x7995('0x2d')]=router;
\ No newline at end of file
index a91a865..d4926e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe356=['STRING','TEXT','BOOLEAN','Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','sequelize','exports'];(function(_0x4f7f52,_0x7058e0){var _0x32699e=function(_0x6c0c91){while(--_0x6c0c91){_0x4f7f52['push'](_0x4f7f52['shift']());}};_0x32699e(++_0x7058e0);}(_0xe356,0x1ee));var _0x6e35=function(_0x557703,_0x30d644){_0x557703=_0x557703-0x0;var _0x4fc068=_0xe356[_0x557703];return _0x4fc068;};'use strict';var Sequelize=require(_0x6e35('0x0'));module[_0x6e35('0x1')]={'description':{'type':Sequelize[_0x6e35('0x2')]},'name':{'type':Sequelize[_0x6e35('0x2')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x6e35('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x6e35('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x6e35('0x3')]},'markAsUnread':{'type':Sequelize[_0x6e35('0x4')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6e35('0x5')},'fontSize':{'type':Sequelize[_0x6e35('0x6')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x6e35('0x3')],'defaultValue':function(){return _0x6e35('0x7');}},'notificationSound':{'type':Sequelize[_0x6e35('0x4')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6e35('0x4')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6e35('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6e35('0x4')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c}};
\ No newline at end of file
+var _0x78f0=['BOOLEAN','Arial,Helvetica,sans-serif','INTEGER','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','sequelize','exports','STRING'];(function(_0x5da1dd,_0xbb48ef){var _0x4f4fdc=function(_0xb23b78){while(--_0xb23b78){_0x5da1dd['push'](_0x5da1dd['shift']());}};_0x4f4fdc(++_0xbb48ef);}(_0x78f0,0x15d));var _0x078f=function(_0x2ceac2,_0x35ade2){_0x2ceac2=_0x2ceac2-0x0;var _0x4c3be7=_0x78f0[_0x2ceac2];return _0x4c3be7;};'use strict';var Sequelize=require(_0x078f('0x0'));module[_0x078f('0x1')]={'description':{'type':Sequelize[_0x078f('0x2')]},'name':{'type':Sequelize[_0x078f('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x078f('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x078f('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x078f('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x078f('0x2')],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize[_0x078f('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x078f('0x2')],'allowNull':![],'defaultValue':_0x078f('0x4')},'fontSize':{'type':Sequelize[_0x078f('0x5')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x078f('0x6')],'defaultValue':function(){return _0x078f('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x078f('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x078f('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x078f('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x078f('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x078f('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x078f('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c}};
\ No newline at end of file
index 52e3e22..4ac62f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b2=['api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','register','client','http','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','offset','limit','set','Content-Range','save','update','then','get','MailAccounts','UserProfileResource','stack','name','index','MailServerOut','Smtp','MailAccount','rawAttributes','model','dateStart','query','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','filter','merge','map','type','key','VIRTUAL','count','includeAll','findAll','rows','MailServerIn','Imap','keys','include','find','body','params','describe','MailAccountId','Disposition','create','getDispositions','findOne','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','options','removeAnswers','email','ListId','active','description','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','setSmtp','MailInteraction','addInteraction','omit','getInteractions','Contact','User','Owner','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','destroy','MailApplication','bulkCreate','findAndCountAll','getApplications','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','send','CmList','CmContact','Contacts','updatedAt','DESC','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','isNil','secure','auth','SendMail','List\x20not\x20found','List','messageId','subject','attach','out','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../config/logger'];(function(_0x409353,_0xe9f04d){var _0x4f4b59=function(_0x64b587){while(--_0x64b587){_0x409353['push'](_0x409353['shift']());}};_0x4f4b59(++_0xe9f04d);}(_0xc7b2,0x176));var _0x2c7b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc7b2[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0x2c7b('0x0'));var emlformat=require(_0x2c7b('0x1'));var rimraf=require(_0x2c7b('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2c7b('0x3'));var rp=require(_0x2c7b('0x4'));var moment=require(_0x2c7b('0x5'));var BPromise=require(_0x2c7b('0x6'));var Mustache=require(_0x2c7b('0x7'));var util=require(_0x2c7b('0x8'));var path=require(_0x2c7b('0x9'));var sox=require(_0x2c7b('0xa'));var csv=require(_0x2c7b('0xb'));var ejs=require(_0x2c7b('0xc'));var fs=require('fs');var _=require(_0x2c7b('0xd'));var squel=require('squel');var crypto=require(_0x2c7b('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x2c7b('0xf'));var toCsv=require(_0x2c7b('0xb'));var querystring=require(_0x2c7b('0x10'));var Papa=require(_0x2c7b('0x11'));var Redis=require(_0x2c7b('0x12'));var qs=require('../../components/parsers/qs');var logger=require(_0x2c7b('0x13'))(_0x2c7b('0x14'));var utils=require(_0x2c7b('0x15'));var config=require(_0x2c7b('0x16'));var db=require(_0x2c7b('0x17'))['db'];config[_0x2c7b('0x18')]=_[_0x2c7b('0x19')](config[_0x2c7b('0x18')],{'host':_0x2c7b('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2c7b('0x18')]));require('./mailAccount.socket')[_0x2c7b('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x2c7b('0x1c')][_0x2c7b('0x1d')]({'port':0x232b});function respondWithRpcPromise(_0x106c67,_0x3327fd,_0x429bc2,_0x360891){return new BPromise(function(_0x50c89f,_0x1a860f){var _0x3056fb=_0x360891||client;return _0x3056fb[_0x2c7b('0x1e')](_0x106c67,_0x429bc2)['then'](function(_0x43eb11){logger[_0x2c7b('0x1f')](_0x2c7b('0x20'),_0x3327fd,_0x2c7b('0x21'));logger[_0x2c7b('0x22')](_0x2c7b('0x23'),_0x3327fd,_0x2c7b('0x21'),JSON[_0x2c7b('0x24')](_0x43eb11));if(_0x43eb11[_0x2c7b('0x25')]){if(_0x43eb11[_0x2c7b('0x25')][_0x2c7b('0x26')]===0x1f4){logger[_0x2c7b('0x25')](_0x2c7b('0x20'),_0x3327fd,_0x43eb11[_0x2c7b('0x25')][_0x2c7b('0x27')]);return _0x1a860f(_0x43eb11[_0x2c7b('0x25')][_0x2c7b('0x27')]);}logger[_0x2c7b('0x25')](_0x2c7b('0x20'),_0x3327fd,_0x43eb11['error'][_0x2c7b('0x27')]);return _0x50c89f(_0x43eb11[_0x2c7b('0x25')][_0x2c7b('0x27')]);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x3327fd,_0x2c7b('0x21'));_0x50c89f(_0x43eb11['result'][_0x2c7b('0x27')]);}})[_0x2c7b('0x28')](function(_0x37e84e){logger[_0x2c7b('0x25')](_0x2c7b('0x20'),_0x3327fd,_0x37e84e);_0x1a860f(_0x37e84e);});});}function respondWithStatusCode(_0x529dd7,_0x2dc2c5){_0x2dc2c5=_0x2dc2c5||0xcc;return function(_0x2c1e79){if(_0x2c1e79){return _0x529dd7[_0x2c7b('0x29')](_0x2dc2c5);}return _0x529dd7[_0x2c7b('0x2a')](_0x2dc2c5)[_0x2c7b('0x2b')]();};}function respondWithResult(_0x2a3054,_0x8dc5a5){_0x8dc5a5=_0x8dc5a5||0xc8;return function(_0x40c35b){if(_0x40c35b){return _0x2a3054[_0x2c7b('0x2a')](_0x8dc5a5)[_0x2c7b('0x2c')](_0x40c35b);}};}function respondWithFilteredResult(_0x142650,_0x2e6c4b){return function(_0x10b8c3){if(_0x10b8c3){var _0x2f4101=_0x10b8c3['count'],_0x5d5003=_0x2e6c4b[_0x2c7b('0x2d')],_0x4ae60f=_0x2e6c4b[_0x2c7b('0x2d')]+_0x2e6c4b[_0x2c7b('0x2e')],_0x54b442;if(_0x4ae60f>=_0x2f4101){_0x4ae60f=_0x2f4101;_0x54b442=0xc8;}else{_0x54b442=0xce;}_0x142650[_0x2c7b('0x2a')](_0x54b442);return _0x142650[_0x2c7b('0x2f')](_0x2c7b('0x30'),_0x5d5003+'-'+_0x4ae60f+'/'+_0x2f4101)[_0x2c7b('0x2c')](_0x10b8c3);}return null;};}function patchUpdates(_0x441f0b){return function(_0x211d96){try{jsonpatch['apply'](_0x211d96,_0x441f0b,!![]);}catch(_0xf28f89){return BPromise['reject'](_0xf28f89);}return _0x211d96[_0x2c7b('0x31')]();};}function saveUpdates(_0x406266,_0x5a5b2a){return function(_0x2795e1){if(_0x2795e1){return _0x2795e1[_0x2c7b('0x32')](_0x406266)[_0x2c7b('0x33')](function(_0x2de87f){return _0x2de87f;});}return null;};}function removeEntity(_0x500d85,_0x59f9a0){return function(_0x5bc786){if(_0x5bc786){return _0x5bc786['destroy']()[_0x2c7b('0x33')](function(){var _0x140229=_0x5bc786[_0x2c7b('0x34')]({'plain':!![]});var _0x152643=_0x2c7b('0x35');return db[_0x2c7b('0x36')]['destroy']({'where':{'type':_0x152643,'resourceId':_0x140229['id']}})['then'](function(){return _0x5bc786;});})[_0x2c7b('0x33')](function(){_0x500d85[_0x2c7b('0x2a')](0xcc)[_0x2c7b('0x2b')]();});}};}function handleEntityNotFound(_0x1f6cf3,_0x242fdc){return function(_0x5a9154){if(!_0x5a9154){_0x1f6cf3[_0x2c7b('0x29')](0x194);}return _0x5a9154;};}function handleError(_0x2cbb28,_0x4695a7){_0x4695a7=_0x4695a7||0x1f4;return function(_0x488b9e){logger['error'](_0x488b9e[_0x2c7b('0x37')]);if(_0x488b9e['name']){delete _0x488b9e[_0x2c7b('0x38')];}_0x2cbb28[_0x2c7b('0x2a')](_0x4695a7)['send'](_0x488b9e);};}exports[_0x2c7b('0x39')]=function(_0x47c055,_0x501725){var _0x230c68={'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0x2c7b('0x3a')],'as':_0x2c7b('0x3b')}]},_0x4595d6={},_0x2c1304={'count':0x0,'rows':[]};var _0xbabe1b=db[_0x2c7b('0x3c')][_0x2c7b('0x3d')];_0x4595d6[_0x2c7b('0x3e')]=_['keys'](_0xbabe1b);var _0x1a3198={'dateStart':_0x47c055['query'][_0x2c7b('0x3f')],'dateEnd':_0x47c055[_0x2c7b('0x40')][_0x2c7b('0x41')]};delete _0x47c055['query'][_0x2c7b('0x3f')];delete _0x47c055['query'][_0x2c7b('0x41')];_0x4595d6[_0x2c7b('0x40')]=_['keys'](_0x47c055[_0x2c7b('0x40')]);_0x4595d6[_0x2c7b('0x42')]=_[_0x2c7b('0x43')](_0x4595d6[_0x2c7b('0x3e')],_0x4595d6[_0x2c7b('0x40')]);_0x230c68['attributes']=_['intersection'](_0x4595d6['model'],qs['fields'](_0x47c055[_0x2c7b('0x40')][_0x2c7b('0x44')]));_0x230c68[_0x2c7b('0x45')]=_0x230c68[_0x2c7b('0x45')][_0x2c7b('0x46')]?_0x230c68[_0x2c7b('0x45')]:_0x4595d6[_0x2c7b('0x3e')];if(!_0x47c055['query'][_0x2c7b('0x47')](_0x2c7b('0x48'))){_0x230c68[_0x2c7b('0x2e')]=qs['limit'](_0x47c055['query']['limit']);_0x230c68[_0x2c7b('0x2d')]=qs[_0x2c7b('0x2d')](_0x47c055[_0x2c7b('0x40')]['offset']);}_0x230c68[_0x2c7b('0x49')]=qs[_0x2c7b('0x4a')](_0x47c055[_0x2c7b('0x40')][_0x2c7b('0x4a')]);_0x230c68[_0x2c7b('0x4b')]=qs[_0x2c7b('0x42')](_[_0x2c7b('0x4c')](_0x47c055[_0x2c7b('0x40')],_0x4595d6[_0x2c7b('0x42')]));if(_0x1a3198['dateStart']){if(_0x1a3198[_0x2c7b('0x41')]){_0x1a3198[_0x2c7b('0x41')]=moment(_0x1a3198[_0x2c7b('0x41')])[_0x2c7b('0x4d')](0x1,'day');}else{_0x1a3198[_0x2c7b('0x41')]=moment(_0x1a3198[_0x2c7b('0x3f')])[_0x2c7b('0x4d')](0x1,_0x2c7b('0x4e'));}_['merge'](_0x230c68[_0x2c7b('0x4b')],{'createdAt':{'$gte':_0x1a3198[_0x2c7b('0x3f')],'$lte':_0x1a3198[_0x2c7b('0x41')]}});}if(_0x47c055['query'][_0x2c7b('0x4f')]){_0x230c68['where']=_[_0x2c7b('0x50')](_0x230c68[_0x2c7b('0x4b')],{'$or':_[_0x2c7b('0x51')](_0xbabe1b,function(_0xd3ea2a){if(_0xd3ea2a[_0x2c7b('0x52')][_0x2c7b('0x53')]!==_0x2c7b('0x54')){var _0x48ea52={};_0x48ea52[_0xd3ea2a['field']]={'$like':'%'+_0x47c055[_0x2c7b('0x40')][_0x2c7b('0x4f')]+'%'};return _0x48ea52;}})});}_0x230c68=_[_0x2c7b('0x50')]({},_0x230c68,_0x47c055['options']);var _0x3c0413={'where':_0x230c68[_0x2c7b('0x4b')]};return db[_0x2c7b('0x3c')][_0x2c7b('0x55')](_0x3c0413)['then'](function(_0x1ee7ae){_0x2c1304[_0x2c7b('0x55')]=_0x1ee7ae;if(_0x47c055[_0x2c7b('0x40')][_0x2c7b('0x56')]){_0x230c68['include']=[{'all':!![]}];}return db['MailAccount'][_0x2c7b('0x57')](_0x230c68);})[_0x2c7b('0x33')](function(_0x3d5478){_0x2c1304[_0x2c7b('0x58')]=_0x3d5478;return _0x2c1304;})[_0x2c7b('0x33')](respondWithFilteredResult(_0x501725,_0x230c68))['catch'](handleError(_0x501725,null));};exports['show']=function(_0x5a70e8,_0x547085){var _0x206e7a={'raw':![],'where':{'id':_0x5a70e8['params']['id']},'include':[{'model':db[_0x2c7b('0x59')],'as':_0x2c7b('0x5a')},{'model':db['MailServerOut'],'as':'Smtp'}]},_0x1e703b={};_0x1e703b[_0x2c7b('0x3e')]=_[_0x2c7b('0x5b')](db[_0x2c7b('0x3c')][_0x2c7b('0x3d')]);_0x1e703b[_0x2c7b('0x40')]=_[_0x2c7b('0x5b')](_0x5a70e8[_0x2c7b('0x40')]);_0x1e703b['filters']=_['intersection'](_0x1e703b[_0x2c7b('0x3e')],_0x1e703b[_0x2c7b('0x40')]);_0x206e7a[_0x2c7b('0x45')]=_[_0x2c7b('0x43')](_0x1e703b['model'],qs[_0x2c7b('0x44')](_0x5a70e8[_0x2c7b('0x40')][_0x2c7b('0x44')]));_0x206e7a['attributes']=_0x206e7a[_0x2c7b('0x45')][_0x2c7b('0x46')]?_0x206e7a[_0x2c7b('0x45')]:_0x1e703b['model'];if(_0x5a70e8[_0x2c7b('0x40')][_0x2c7b('0x56')]){_0x206e7a[_0x2c7b('0x5c')]=[{'all':!![]}];}_0x206e7a=_['merge']({},_0x206e7a,_0x5a70e8['options']);return db[_0x2c7b('0x3c')][_0x2c7b('0x5d')](_0x206e7a)['then'](handleEntityNotFound(_0x547085,null))['then'](respondWithResult(_0x547085,null))[_0x2c7b('0x28')](handleError(_0x547085,null));};exports[_0x2c7b('0x32')]=function(_0x194a3d,_0x19322f){if(_0x194a3d[_0x2c7b('0x5e')]['id']){delete _0x194a3d['body']['id'];}return db['MailAccount']['find']({'where':{'id':_0x194a3d[_0x2c7b('0x5f')]['id']},'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0x2c7b('0x3a')],'as':_0x2c7b('0x3b')}]})['then'](handleEntityNotFound(_0x19322f,null))['then'](saveUpdates(_0x194a3d[_0x2c7b('0x5e')],null))[_0x2c7b('0x33')](function(_0x4c6365){if(_0x4c6365&&_0x194a3d[_0x2c7b('0x5e')][_0x2c7b('0x5a')]){return db[_0x2c7b('0x59')][_0x2c7b('0x32')](_0x194a3d[_0x2c7b('0x5e')][_0x2c7b('0x5a')],{'where':{'MailAccountId':_0x4c6365['id']}})[_0x2c7b('0x33')](function(){return _0x4c6365;});}return _0x4c6365;})[_0x2c7b('0x33')](function(_0x58c052){if(_0x58c052&&_0x194a3d['body'][_0x2c7b('0x3b')]){return db[_0x2c7b('0x3a')][_0x2c7b('0x32')](_0x194a3d[_0x2c7b('0x5e')][_0x2c7b('0x3b')],{'where':{'MailAccountId':_0x58c052['id']}})[_0x2c7b('0x33')](function(){return _0x58c052;});}return _0x58c052;})[_0x2c7b('0x33')](respondWithResult(_0x19322f,null))[_0x2c7b('0x28')](handleError(_0x19322f,null));};exports[_0x2c7b('0x60')]=function(_0x144bcb,_0x47763a){return db[_0x2c7b('0x3c')]['describe']()[_0x2c7b('0x33')](respondWithResult(_0x47763a,null))[_0x2c7b('0x28')](handleError(_0x47763a,null));};exports['addDisposition']=function(_0x2d9a03,_0xa59f57,_0x3424c2){if(_0x2d9a03[_0x2c7b('0x5e')]['id']){delete _0x2d9a03[_0x2c7b('0x5e')]['id'];}return db[_0x2c7b('0x3c')]['find']({'where':{'id':_0x2d9a03['params']['id']}})['then'](handleEntityNotFound(_0xa59f57,null))['then'](function(_0x154e12){if(_0x154e12){_0x2d9a03[_0x2c7b('0x5e')][_0x2c7b('0x61')]=_0x154e12['id'];return db[_0x2c7b('0x62')][_0x2c7b('0x63')](_0x2d9a03[_0x2c7b('0x5e')]);}})[_0x2c7b('0x33')](respondWithResult(_0xa59f57,null))['catch'](handleError(_0xa59f57,null));};exports[_0x2c7b('0x64')]=function(_0x5911a8,_0x481401,_0x534c1f){var _0x10a898={'raw':![],'where':{}};var _0xebe9e={};var _0x1fb956={'count':0x0,'rows':[]};return db[_0x2c7b('0x3c')][_0x2c7b('0x65')]({'where':{'id':_0x5911a8[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x481401,null))[_0x2c7b('0x33')](function(_0x50d086){if(_0x50d086){_0xebe9e['model']=_[_0x2c7b('0x5b')](db[_0x2c7b('0x62')][_0x2c7b('0x3d')]);_0xebe9e[_0x2c7b('0x40')]=_[_0x2c7b('0x5b')](_0x5911a8[_0x2c7b('0x40')]);_0xebe9e['filters']=_[_0x2c7b('0x43')](_0xebe9e[_0x2c7b('0x3e')],_0xebe9e[_0x2c7b('0x40')]);_0x10a898[_0x2c7b('0x45')]=_[_0x2c7b('0x43')](_0xebe9e[_0x2c7b('0x3e')],qs[_0x2c7b('0x44')](_0x5911a8[_0x2c7b('0x40')][_0x2c7b('0x44')]));_0x10a898[_0x2c7b('0x45')]=_0x10a898[_0x2c7b('0x45')][_0x2c7b('0x46')]?_0x10a898['attributes']:_0xebe9e['model'];if(!_0x5911a8[_0x2c7b('0x40')][_0x2c7b('0x47')](_0x2c7b('0x48'))){_0x10a898['limit']=qs[_0x2c7b('0x2e')](_0x5911a8[_0x2c7b('0x40')][_0x2c7b('0x2e')]);_0x10a898[_0x2c7b('0x2d')]=qs['offset'](_0x5911a8[_0x2c7b('0x40')][_0x2c7b('0x2d')]);}_0x10a898[_0x2c7b('0x49')]=qs['sort'](_0x5911a8['query'][_0x2c7b('0x4a')]);_0x10a898['where']=qs[_0x2c7b('0x42')](_[_0x2c7b('0x4c')](_0x5911a8['query'],_0xebe9e[_0x2c7b('0x42')]));_0x10a898['where']['MailAccountId']=_0x50d086['id'];if(_0x5911a8[_0x2c7b('0x40')][_0x2c7b('0x4f')]){_0x10a898[_0x2c7b('0x4b')]=_['merge'](_0x10a898[_0x2c7b('0x4b')],{'$or':_['map'](_0x10a898[_0x2c7b('0x45')],function(_0x450ee3){var _0x5cddf4={};_0x5cddf4[_0x450ee3]={'$like':'%'+_0x5911a8[_0x2c7b('0x40')][_0x2c7b('0x4f')]+'%'};return _0x5cddf4;})});}_0x10a898=_[_0x2c7b('0x50')]({},_0x10a898,_0x5911a8['options']);return db[_0x2c7b('0x62')][_0x2c7b('0x55')]({'where':_0x10a898[_0x2c7b('0x4b')]})['then'](function(_0x1c01b9){_0x1fb956[_0x2c7b('0x55')]=_0x1c01b9;if(_0x5911a8['query'][_0x2c7b('0x56')]){_0x10a898[_0x2c7b('0x5c')]=[{'all':!![]}];}return db[_0x2c7b('0x62')][_0x2c7b('0x57')](_0x10a898);})[_0x2c7b('0x33')](function(_0x5d5956){_0x1fb956[_0x2c7b('0x58')]=_0x5d5956;return _0x1fb956;});}})['then'](respondWithFilteredResult(_0x481401,_0x10a898))[_0x2c7b('0x28')](handleError(_0x481401,null));};exports[_0x2c7b('0x66')]=function(_0x2ae4ff,_0x54c717,_0x119721){var _0x2cbcc4;return db['MailAccount'][_0x2c7b('0x5d')]({'where':{'id':_0x2ae4ff[_0x2c7b('0x5f')]['id']}})['then'](handleEntityNotFound(_0x54c717,null))['then'](function(_0x31703d){if(_0x31703d){return _0x31703d[_0x2c7b('0x66')](_0x2ae4ff[_0x2c7b('0x40')][_0x2c7b('0x67')]);}})['then'](respondWithStatusCode(_0x54c717,null))[_0x2c7b('0x28')](handleError(_0x54c717,null));};exports[_0x2c7b('0x68')]=function(_0x1f0586,_0x23dfa5,_0x3808ec){if(_0x1f0586[_0x2c7b('0x5e')]['id']){delete _0x1f0586[_0x2c7b('0x5e')]['id'];}return db[_0x2c7b('0x3c')][_0x2c7b('0x5d')]({'where':{'id':_0x1f0586[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x23dfa5,null))[_0x2c7b('0x33')](function(_0x55b181){if(_0x55b181){_0x1f0586[_0x2c7b('0x5e')][_0x2c7b('0x61')]=_0x55b181['id'];return db['CannedAnswer'][_0x2c7b('0x63')](_0x1f0586[_0x2c7b('0x5e')]);}})[_0x2c7b('0x33')](respondWithResult(_0x23dfa5,null))[_0x2c7b('0x28')](handleError(_0x23dfa5,null));};exports[_0x2c7b('0x69')]=function(_0x4bc274,_0x5e0251,_0x58e07c){var _0x579c77={'raw':![],'where':{}};var _0xea6853={};var _0x40b053={'count':0x0,'rows':[]};return db['MailAccount'][_0x2c7b('0x65')]({'where':{'id':_0x4bc274['params']['id']}})['then'](handleEntityNotFound(_0x5e0251,null))[_0x2c7b('0x33')](function(_0x5386ea){if(_0x5386ea){_0xea6853[_0x2c7b('0x3e')]=_[_0x2c7b('0x5b')](db[_0x2c7b('0x6a')][_0x2c7b('0x3d')]);_0xea6853[_0x2c7b('0x40')]=_[_0x2c7b('0x5b')](_0x4bc274[_0x2c7b('0x40')]);_0xea6853[_0x2c7b('0x42')]=_[_0x2c7b('0x43')](_0xea6853[_0x2c7b('0x3e')],_0xea6853[_0x2c7b('0x40')]);_0x579c77[_0x2c7b('0x45')]=_[_0x2c7b('0x43')](_0xea6853[_0x2c7b('0x3e')],qs[_0x2c7b('0x44')](_0x4bc274[_0x2c7b('0x40')][_0x2c7b('0x44')]));_0x579c77[_0x2c7b('0x45')]=_0x579c77[_0x2c7b('0x45')][_0x2c7b('0x46')]?_0x579c77[_0x2c7b('0x45')]:_0xea6853[_0x2c7b('0x3e')];if(!_0x4bc274['query']['hasOwnProperty'](_0x2c7b('0x48'))){_0x579c77[_0x2c7b('0x2e')]=qs[_0x2c7b('0x2e')](_0x4bc274[_0x2c7b('0x40')][_0x2c7b('0x2e')]);_0x579c77[_0x2c7b('0x2d')]=qs[_0x2c7b('0x2d')](_0x4bc274['query'][_0x2c7b('0x2d')]);}_0x579c77[_0x2c7b('0x49')]=qs['sort'](_0x4bc274[_0x2c7b('0x40')][_0x2c7b('0x4a')]);_0x579c77[_0x2c7b('0x4b')]=qs[_0x2c7b('0x42')](_['pick'](_0x4bc274[_0x2c7b('0x40')],_0xea6853[_0x2c7b('0x42')]));_0x579c77[_0x2c7b('0x4b')][_0x2c7b('0x61')]=_0x5386ea['id'];if(_0x4bc274[_0x2c7b('0x40')][_0x2c7b('0x4f')]){_0x579c77['where']=_[_0x2c7b('0x50')](_0x579c77[_0x2c7b('0x4b')],{'$or':_['map'](_0x579c77[_0x2c7b('0x45')],function(_0x4c18ec){var _0x7f6620={};_0x7f6620[_0x4c18ec]={'$like':'%'+_0x4bc274[_0x2c7b('0x40')][_0x2c7b('0x4f')]+'%'};return _0x7f6620;})});}_0x579c77=_['merge']({},_0x579c77,_0x4bc274[_0x2c7b('0x6b')]);return db[_0x2c7b('0x6a')]['count']({'where':_0x579c77[_0x2c7b('0x4b')]})[_0x2c7b('0x33')](function(_0x289b75){_0x40b053[_0x2c7b('0x55')]=_0x289b75;if(_0x4bc274[_0x2c7b('0x40')][_0x2c7b('0x56')]){_0x579c77[_0x2c7b('0x5c')]=[{'all':!![]}];}return db['CannedAnswer'][_0x2c7b('0x57')](_0x579c77);})[_0x2c7b('0x33')](function(_0x1ff7c1){_0x40b053['rows']=_0x1ff7c1;return _0x40b053;});}})[_0x2c7b('0x33')](respondWithFilteredResult(_0x5e0251,_0x579c77))['catch'](handleError(_0x5e0251,null));};exports['removeAnswers']=function(_0x32c1f2,_0x4efca9,_0x1ded18){var _0x5e0444;return db[_0x2c7b('0x3c')][_0x2c7b('0x5d')]({'where':{'id':_0x32c1f2[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x4efca9,null))[_0x2c7b('0x33')](function(_0x11c75){if(_0x11c75){return _0x11c75[_0x2c7b('0x6c')](_0x32c1f2[_0x2c7b('0x40')][_0x2c7b('0x67')]);}})[_0x2c7b('0x33')](respondWithStatusCode(_0x4efca9,null))[_0x2c7b('0x28')](handleError(_0x4efca9,null));};exports[_0x2c7b('0x63')]=function(_0x4d0c48,_0x11b20d){var _0x5b24d3={'name':_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x38')],'key':_0x4d0c48[_0x2c7b('0x5e')]['key'],'email':_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x6d')],'ListId':_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x6e')],'active':!_['isNil'](_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x6f')])?_0x4d0c48[_0x2c7b('0x5e')]['active']:!![],'description':_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x70')]||null,'Imap':{},'Smtp':{}};if(_['isNil'](_0x4d0c48['body'][_0x2c7b('0x71')])){if(_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x72')]){_0x5b24d3['Imap'][_0x2c7b('0x73')]=_0x5b24d3[_0x2c7b('0x3b')]['user']=_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x74')];_0x5b24d3[_0x2c7b('0x5a')][_0x2c7b('0x75')]=_0x5b24d3[_0x2c7b('0x3b')][_0x2c7b('0x76')]=_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x77')];}else{_0x5b24d3['Imap'][_0x2c7b('0x78')]=_0x5b24d3[_0x2c7b('0x3b')][_0x2c7b('0x78')]=![];}_0x5b24d3[_0x2c7b('0x5a')][_0x2c7b('0x79')]=_0x4d0c48['body'][_0x2c7b('0x5a')]['host'];_0x5b24d3['Imap']['port']=_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x5a')][_0x2c7b('0x7a')];_0x5b24d3[_0x2c7b('0x3b')][_0x2c7b('0x79')]=_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x3b')][_0x2c7b('0x79')];_0x5b24d3['Smtp']['port']=_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x3b')][_0x2c7b('0x7a')];}else{_0x5b24d3[_0x2c7b('0x5a')][_0x2c7b('0x7b')]=_0x5b24d3[_0x2c7b('0x3b')]['service']=_0x4d0c48['body'][_0x2c7b('0x71')];_0x5b24d3[_0x2c7b('0x5a')]['user']=_0x5b24d3[_0x2c7b('0x3b')][_0x2c7b('0x73')]=_0x4d0c48[_0x2c7b('0x5e')]['cuser'];_0x5b24d3[_0x2c7b('0x5a')]['password']=_0x5b24d3[_0x2c7b('0x3b')][_0x2c7b('0x76')]=_0x4d0c48[_0x2c7b('0x5e')][_0x2c7b('0x77')];}return db[_0x2c7b('0x3c')][_0x2c7b('0x63')](_0x5b24d3,{'include':[{'model':db[_0x2c7b('0x3a')],'as':_0x2c7b('0x3b')},{'model':db[_0x2c7b('0x59')],'as':_0x2c7b('0x5a')}]})[_0x2c7b('0x33')](function(_0xd22a57){var _0x35029f=_0x4d0c48['user'][_0x2c7b('0x34')]({'plain':!![]});if(!_0x35029f)throw new Error(_0x2c7b('0x7c'));if(_0x35029f[_0x2c7b('0x7d')]===_0x2c7b('0x73')){var _0x4ec02a=_0xd22a57[_0x2c7b('0x34')]({'plain':!![]});return db['UserProfileSection'][_0x2c7b('0x5d')]({'where':{'name':'MailAccounts','userProfileId':_0x35029f['userProfileId']},'raw':!![]})[_0x2c7b('0x33')](function(_0x5d837f){if(_0x5d837f&&_0x5d837f[_0x2c7b('0x7e')]===0x0){return db[_0x2c7b('0x36')]['create']({'name':_0x4ec02a[_0x2c7b('0x38')],'resourceId':_0x4ec02a['id'],'type':_0x5d837f[_0x2c7b('0x38')],'sectionId':_0x5d837f['id']},{})[_0x2c7b('0x33')](function(){return _0xd22a57;});}else{return _0xd22a57;}})[_0x2c7b('0x28')](function(_0x36a149){logger[_0x2c7b('0x25')](_0x2c7b('0x7f'),_0x36a149);throw _0x36a149;});}return _0xd22a57;})[_0x2c7b('0x33')](respondWithResult(_0x11b20d,0xc9))['catch'](handleError(_0x11b20d,null));};exports[_0x2c7b('0x80')]=function(_0x5bfba6,_0x5373ba,_0x94a4){return db[_0x2c7b('0x3c')][_0x2c7b('0x65')]({'where':{'id':_0x5bfba6['params']['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x5373ba,null))['then'](function(_0x58dd4a){if(_0x58dd4a){return _0x58dd4a[_0x2c7b('0x80')]();}return null;})['then'](respondWithResult(_0x5373ba,null))[_0x2c7b('0x28')](handleError(_0x5373ba,null));};exports[_0x2c7b('0x81')]=function(_0x3f78c6,_0x3a8cf6,_0x4c7902){if(_0x3f78c6[_0x2c7b('0x5e')]['id']){delete _0x3f78c6['body']['id'];}return db[_0x2c7b('0x3c')][_0x2c7b('0x5d')]({'where':{'id':_0x3f78c6[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x3a8cf6,null))[_0x2c7b('0x33')](function(_0x4b08a7){if(_0x4b08a7){_0x3f78c6[_0x2c7b('0x5e')]['MailAccountId']=_0x4b08a7['id'];return db[_0x2c7b('0x59')][_0x2c7b('0x63')](_0x3f78c6['body']);}})[_0x2c7b('0x33')](respondWithResult(_0x3a8cf6,null))[_0x2c7b('0x28')](handleError(_0x3a8cf6,null));};exports[_0x2c7b('0x82')]=function(_0x3887d9,_0x17a2de,_0x1c1f8d){return db[_0x2c7b('0x3c')]['findOne']({'where':{'id':_0x3887d9[_0x2c7b('0x5f')]['id']}})['then'](handleEntityNotFound(_0x17a2de,null))[_0x2c7b('0x33')](function(_0x3b6c86){if(_0x3b6c86){return _0x3b6c86[_0x2c7b('0x83')](null);}return null;})[_0x2c7b('0x33')](respondWithStatusCode(_0x17a2de,null))[_0x2c7b('0x28')](handleError(_0x17a2de,null));};exports[_0x2c7b('0x84')]=function(_0x22b6fb,_0x2089ab,_0x32cb61){return db['MailAccount'][_0x2c7b('0x65')]({'where':{'id':_0x22b6fb[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x2089ab,null))['then'](function(_0x35e9e5){if(_0x35e9e5){return _0x35e9e5[_0x2c7b('0x84')]();}return null;})[_0x2c7b('0x33')](respondWithResult(_0x2089ab,null))['catch'](handleError(_0x2089ab,null));};exports[_0x2c7b('0x85')]=function(_0x58a00c,_0x40ccd3,_0xe0d7fb){if(_0x58a00c[_0x2c7b('0x5e')]['id']){delete _0x58a00c[_0x2c7b('0x5e')]['id'];}return db[_0x2c7b('0x3c')][_0x2c7b('0x5d')]({'where':{'id':_0x58a00c[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x40ccd3,null))[_0x2c7b('0x33')](function(_0x5b60af){if(_0x5b60af){_0x58a00c[_0x2c7b('0x5e')][_0x2c7b('0x61')]=_0x5b60af['id'];return db[_0x2c7b('0x3a')]['create'](_0x58a00c[_0x2c7b('0x5e')]);}})[_0x2c7b('0x33')](respondWithResult(_0x40ccd3,null))[_0x2c7b('0x28')](handleError(_0x40ccd3,null));};exports['removeSmtp']=function(_0x54ad51,_0xb13233,_0xb16f0b){return db[_0x2c7b('0x3c')][_0x2c7b('0x65')]({'where':{'id':_0x54ad51['params']['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0xb13233,null))[_0x2c7b('0x33')](function(_0x3444fc){if(_0x3444fc){return _0x3444fc[_0x2c7b('0x86')](null);}return null;})[_0x2c7b('0x33')](respondWithStatusCode(_0xb13233,null))['catch'](handleError(_0xb13233,null));};exports['addInteraction']=function(_0xec79f5,_0x5310bb,_0x544d44){return db[_0x2c7b('0x87')][_0x2c7b('0x5d')]({'where':{'id':_0xec79f5[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x5310bb,null))[_0x2c7b('0x33')](function(_0x5a8ef0){if(_0x5a8ef0){return _0x5a8ef0[_0x2c7b('0x88')](_0xec79f5[_0x2c7b('0x5e')][_0x2c7b('0x67')],_[_0x2c7b('0x89')](_0xec79f5[_0x2c7b('0x5e')],['ids','id'])||{});}})[_0x2c7b('0x33')](respondWithResult(_0x5310bb,null))[_0x2c7b('0x28')](handleError(_0x5310bb,null));};exports[_0x2c7b('0x8a')]=function(_0x5cf746,_0x322f13,_0x138bf1){var _0x4330fe={'raw':![],'where':{}};var _0x43ff1f={};var _0x3abe35={'count':0x0,'rows':[]};return db[_0x2c7b('0x3c')][_0x2c7b('0x65')]({'where':{'id':_0x5cf746[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x322f13,null))[_0x2c7b('0x33')](function(_0x446ac5){if(_0x446ac5){_0x43ff1f[_0x2c7b('0x3e')]=_['keys'](db[_0x2c7b('0x87')]['rawAttributes']);_0x43ff1f[_0x2c7b('0x40')]=_[_0x2c7b('0x5b')](_0x5cf746[_0x2c7b('0x40')]);_0x43ff1f[_0x2c7b('0x42')]=_['intersection'](_0x43ff1f[_0x2c7b('0x3e')],_0x43ff1f['query']);_0x4330fe[_0x2c7b('0x45')]=_[_0x2c7b('0x43')](_0x43ff1f[_0x2c7b('0x3e')],qs[_0x2c7b('0x44')](_0x5cf746[_0x2c7b('0x40')]['fields']));_0x4330fe[_0x2c7b('0x45')]=_0x4330fe['attributes'][_0x2c7b('0x46')]?_0x4330fe[_0x2c7b('0x45')]:_0x43ff1f[_0x2c7b('0x3e')];if(!_0x5cf746['query'][_0x2c7b('0x47')](_0x2c7b('0x48'))){_0x4330fe[_0x2c7b('0x2e')]=qs['limit'](_0x5cf746[_0x2c7b('0x40')][_0x2c7b('0x2e')]);_0x4330fe[_0x2c7b('0x2d')]=qs[_0x2c7b('0x2d')](_0x5cf746[_0x2c7b('0x40')]['offset']);}_0x4330fe[_0x2c7b('0x49')]=qs[_0x2c7b('0x4a')](_0x5cf746[_0x2c7b('0x40')][_0x2c7b('0x4a')]);_0x4330fe[_0x2c7b('0x4b')]=qs[_0x2c7b('0x42')](_['pick'](_0x5cf746[_0x2c7b('0x40')],_0x43ff1f[_0x2c7b('0x42')]));_0x4330fe['where'][_0x2c7b('0x61')]=_0x446ac5['id'];if(_0x5cf746[_0x2c7b('0x40')]['filter']){_0x4330fe['where']=_[_0x2c7b('0x50')](_0x4330fe[_0x2c7b('0x4b')],{'$or':_[_0x2c7b('0x51')](_0x4330fe[_0x2c7b('0x45')],function(_0x24f2de){var _0xa9c8f1={};_0xa9c8f1[_0x24f2de]={'$like':'%'+_0x5cf746[_0x2c7b('0x40')][_0x2c7b('0x4f')]+'%'};return _0xa9c8f1;})});}_0x4330fe=_[_0x2c7b('0x50')]({},_0x4330fe,_0x5cf746['options']);return db[_0x2c7b('0x87')][_0x2c7b('0x55')]({'where':_0x4330fe[_0x2c7b('0x4b')]})[_0x2c7b('0x33')](function(_0x6b5664){_0x3abe35[_0x2c7b('0x55')]=_0x6b5664;if(_0x5cf746['query'][_0x2c7b('0x56')]){_0x4330fe[_0x2c7b('0x5c')]=[{'model':db['CmContact'],'as':_0x2c7b('0x8b'),'required':![]},{'model':db[_0x2c7b('0x8c')],'as':_0x2c7b('0x8d'),'attributes':['name','fullname',_0x2c7b('0x8e')],'required':![]},{'model':db[_0x2c7b('0x8f')],'as':_0x2c7b('0x90'),'attributes':['id','name',_0x2c7b('0x91')],'where':_0x5cf746[_0x2c7b('0x40')][_0x2c7b('0x92')]?{'id':_0x5cf746[_0x2c7b('0x40')][_0x2c7b('0x92')]}:undefined,'required':_0x5cf746[_0x2c7b('0x40')][_0x2c7b('0x92')]?!![]:![]}];}return db['MailInteraction'][_0x2c7b('0x57')](_0x4330fe);})[_0x2c7b('0x33')](function(_0x34b2ce){_0x3abe35[_0x2c7b('0x58')]=_0x34b2ce;return _0x3abe35;});}})[_0x2c7b('0x33')](respondWithFilteredResult(_0x322f13,_0x4330fe))[_0x2c7b('0x28')](handleError(_0x322f13,null));};exports[_0x2c7b('0x93')]=function(_0x63532c,_0xf45bbb,_0x1d01a6){return db[_0x2c7b('0x3c')][_0x2c7b('0x65')]({'where':{'id':_0x63532c[_0x2c7b('0x5f')]['id']}})['then'](handleEntityNotFound(_0xf45bbb,null))[_0x2c7b('0x33')](function(_0x550c46){if(_0x550c46){return db[_0x2c7b('0x94')][_0x2c7b('0x95')](function(_0x33cc68){return db['MailApplication'][_0x2c7b('0x96')]({'where':{'MailAccountId':_0x63532c['params']['id']},'transaction':_0x33cc68})[_0x2c7b('0x33')](function(_0x5a59cf){var _0x1fa98c=_[_0x2c7b('0x51')](_0x63532c['body'],function(_0x1a2b40){_0x1a2b40[_0x2c7b('0x61')]=_0x63532c[_0x2c7b('0x5f')]['id'];return _0x1a2b40;});return db[_0x2c7b('0x97')][_0x2c7b('0x98')](_0x1fa98c,{'transaction':_0x33cc68});});})[_0x2c7b('0x33')](function(){return db[_0x2c7b('0x97')][_0x2c7b('0x99')]({'where':{'MailAccountId':_0x63532c['params']['id']},'order':'priority'});});}})[_0x2c7b('0x33')](respondWithResult(_0xf45bbb,null))[_0x2c7b('0x28')](handleError(_0xf45bbb,null));};exports[_0x2c7b('0x9a')]=function(_0x5897e8,_0xee5dba,_0x3bfb9a){var _0x45cbae={};var _0xae7a76={};var _0x185031;var _0x33074d;return db[_0x2c7b('0x3c')]['findOne']({'where':{'id':_0x5897e8[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0xee5dba,null))[_0x2c7b('0x33')](function(_0x56bbf5){if(_0x56bbf5){_0x185031=_0x56bbf5;_0xae7a76['model']=_[_0x2c7b('0x5b')](db['MailApplication'][_0x2c7b('0x3d')]);_0xae7a76[_0x2c7b('0x40')]=_[_0x2c7b('0x5b')](_0x5897e8[_0x2c7b('0x40')]);_0xae7a76['filters']=_['intersection'](_0xae7a76[_0x2c7b('0x3e')],_0xae7a76[_0x2c7b('0x40')]);_0x45cbae[_0x2c7b('0x45')]=_['intersection'](_0xae7a76[_0x2c7b('0x3e')],qs[_0x2c7b('0x44')](_0x5897e8[_0x2c7b('0x40')][_0x2c7b('0x44')]));_0x45cbae[_0x2c7b('0x45')]=_0x45cbae['attributes'][_0x2c7b('0x46')]?_0x45cbae[_0x2c7b('0x45')]:_0xae7a76[_0x2c7b('0x3e')];_0x45cbae['order']=qs['sort'](_0x5897e8[_0x2c7b('0x40')][_0x2c7b('0x4a')]);_0x45cbae[_0x2c7b('0x4b')]=qs['filters'](_[_0x2c7b('0x4c')](_0x5897e8[_0x2c7b('0x40')],_0xae7a76[_0x2c7b('0x42')]));if(_0x5897e8[_0x2c7b('0x40')]['filter']){_0x45cbae['where']=_[_0x2c7b('0x50')](_0x45cbae[_0x2c7b('0x4b')],{'$or':_[_0x2c7b('0x51')](_0x45cbae[_0x2c7b('0x45')],function(_0xd61bb){var _0x51fb39={};_0x51fb39[_0xd61bb]={'$like':'%'+_0x5897e8['query']['filter']+'%'};return _0x51fb39;})});}_0x45cbae=_['merge']({},_0x45cbae,_0x5897e8[_0x2c7b('0x6b')]);return _0x185031[_0x2c7b('0x9a')](_0x45cbae);}})[_0x2c7b('0x33')](function(_0x718a19){if(_0x718a19){_0x33074d=_0x718a19[_0x2c7b('0x46')];if(!_0x5897e8[_0x2c7b('0x40')][_0x2c7b('0x47')](_0x2c7b('0x48'))){_0x45cbae[_0x2c7b('0x2e')]=qs[_0x2c7b('0x2e')](_0x5897e8[_0x2c7b('0x40')][_0x2c7b('0x2e')]);_0x45cbae[_0x2c7b('0x2d')]=qs[_0x2c7b('0x2d')](_0x5897e8[_0x2c7b('0x40')][_0x2c7b('0x2d')]);}return _0x185031[_0x2c7b('0x9a')](_0x45cbae);}})[_0x2c7b('0x33')](function(_0xe053b6){if(_0xe053b6){return _0xe053b6?{'count':_0x33074d,'rows':_0xe053b6}:null;}})[_0x2c7b('0x33')](respondWithResult(_0xee5dba,null))['catch'](handleError(_0xee5dba,null));};exports[_0x2c7b('0x9b')]=function(_0x3a6abd,_0x30bfd5,_0x37b8a7){var _0x1cfcb8={'raw':!![],'where':{}};var _0x16d764={};var _0x253d3a={'count':0x0,'rows':[]};return db[_0x2c7b('0x3c')][_0x2c7b('0x65')]({'where':{'id':_0x3a6abd[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x30bfd5,null))['then'](function(_0x17a4a1){if(_0x17a4a1){_0x16d764[_0x2c7b('0x3e')]=_[_0x2c7b('0x5b')](db['MailMessage'][_0x2c7b('0x3d')]);_0x16d764[_0x2c7b('0x40')]=_[_0x2c7b('0x5b')](_0x3a6abd[_0x2c7b('0x40')]);_0x16d764[_0x2c7b('0x42')]=_[_0x2c7b('0x43')](_0x16d764[_0x2c7b('0x3e')],_0x16d764[_0x2c7b('0x40')]);_0x1cfcb8[_0x2c7b('0x45')]=_[_0x2c7b('0x43')](_0x16d764[_0x2c7b('0x3e')],qs['fields'](_0x3a6abd[_0x2c7b('0x40')][_0x2c7b('0x44')]));_0x1cfcb8['attributes']=_0x1cfcb8[_0x2c7b('0x45')][_0x2c7b('0x46')]?_0x1cfcb8[_0x2c7b('0x45')]:_0x16d764[_0x2c7b('0x3e')];if(!_0x3a6abd[_0x2c7b('0x40')][_0x2c7b('0x47')]('nolimit')){_0x1cfcb8[_0x2c7b('0x2e')]=qs[_0x2c7b('0x2e')](_0x3a6abd[_0x2c7b('0x40')][_0x2c7b('0x2e')]);_0x1cfcb8[_0x2c7b('0x2d')]=qs[_0x2c7b('0x2d')](_0x3a6abd['query'][_0x2c7b('0x2d')]);}_0x1cfcb8[_0x2c7b('0x49')]=qs[_0x2c7b('0x4a')](_0x3a6abd['query'][_0x2c7b('0x4a')]);_0x1cfcb8[_0x2c7b('0x4b')]=qs[_0x2c7b('0x42')](_[_0x2c7b('0x4c')](_0x3a6abd[_0x2c7b('0x40')],_0x16d764[_0x2c7b('0x42')]));_0x1cfcb8[_0x2c7b('0x4b')][_0x2c7b('0x61')]=_0x17a4a1['id'];if(_0x3a6abd[_0x2c7b('0x40')]['filter']){_0x1cfcb8[_0x2c7b('0x4b')]=_[_0x2c7b('0x50')](_0x1cfcb8[_0x2c7b('0x4b')],{'$or':_['map'](_0x1cfcb8['attributes'],function(_0x3d6c93){var _0xcbbeab={};_0xcbbeab[_0x3d6c93]={'$like':'%'+_0x3a6abd['query'][_0x2c7b('0x4f')]+'%'};return _0xcbbeab;})});}if(_0x3a6abd[_0x2c7b('0x40')][_0x2c7b('0x9c')]){var _0x695033=_0x3a6abd[_0x2c7b('0x40')][_0x2c7b('0x9c')][_0x2c7b('0x9d')](',');var _0x500bb3={};_0x500bb3[_0x695033[0x0]]={'$gte':moment(_0x695033[0x1])[_0x2c7b('0x9e')](_0x2c7b('0x9f'))};_0x1cfcb8[_0x2c7b('0x4b')]=_[_0x2c7b('0x50')](_0x1cfcb8[_0x2c7b('0x4b')],_0x500bb3);}_0x1cfcb8=_[_0x2c7b('0x50')]({},_0x1cfcb8,_0x3a6abd[_0x2c7b('0x6b')]);return db['MailMessage']['count']({'where':_0x1cfcb8[_0x2c7b('0x4b')]})[_0x2c7b('0x33')](function(_0x23cc5a){_0x253d3a['count']=_0x23cc5a;if(_0x3a6abd[_0x2c7b('0x40')]['includeAll']){_0x1cfcb8[_0x2c7b('0x5c')]=[{'all':!![]}];}return db[_0x2c7b('0xa0')][_0x2c7b('0x57')](_0x1cfcb8);})[_0x2c7b('0x33')](function(_0x3ba399){_0x253d3a[_0x2c7b('0x58')]=_0x3ba399;return _0x253d3a;});}})[_0x2c7b('0x33')](respondWithFilteredResult(_0x30bfd5,_0x1cfcb8))['catch'](handleError(_0x30bfd5,null));};exports[_0x2c7b('0xa1')]=function(_0x59faca,_0x298c7a,_0x80527b){var _0x119c59,_0x1e03f2={},_0x2cbe75;if(_0x59faca[_0x2c7b('0x5e')]['to']){_0x2cbe75=_0x59faca[_0x2c7b('0x5e')]['to'][_0x2c7b('0x9d')](',')[0x0];}return db[_0x2c7b('0x3c')][_0x2c7b('0x5d')]({'where':{'id':_0x59faca['params']['id']},'include':[{'model':db[_0x2c7b('0xa2')],'as':'List','include':[{'model':db[_0x2c7b('0xa3')],'as':_0x2c7b('0xa4'),'where':{'email':_0x2cbe75},'limit':0x1,'order':[[_0x2c7b('0xa5'),_0x2c7b('0xa6')]]}]},{'model':db['MailServerOut'],'as':_0x2c7b('0x3b'),'raw':!![]}]})[_0x2c7b('0x33')](handleEntityNotFound(_0x298c7a,null))[_0x2c7b('0x33')](function(_0x3acb25){if(_0x3acb25){_0x119c59=_0x3acb25;if(_0x3acb25[_0x2c7b('0x3b')]){if(_['isNil'](_0x59faca[_0x2c7b('0x5e')]['from'])){_0x59faca['body']['from']=util[_0x2c7b('0x9e')](_0x2c7b('0xa7'),_0x3acb25['name'],_0x3acb25[_0x2c7b('0x6d')]||_0x3acb25['Smtp'][_0x2c7b('0x73')]);}if(_0x59faca['body'][_0x2c7b('0xa8')]&&_0x59faca[_0x2c7b('0x5e')][_0x2c7b('0xa8')][_0x2c7b('0x46')]){for(var _0x1d387b=0x0;_0x1d387b<_0x59faca['body']['attachments'][_0x2c7b('0x46')];_0x1d387b+=0x1){_0x59faca[_0x2c7b('0x5e')][_0x2c7b('0xa8')][_0x1d387b]={'filename':_0x59faca[_0x2c7b('0x5e')][_0x2c7b('0xa8')][_0x1d387b]['name'],'path':path[_0x2c7b('0xa9')](config[_0x2c7b('0xaa')],_0x2c7b('0xab'),_0x59faca[_0x2c7b('0x5e')]['attachments'][_0x1d387b][_0x2c7b('0xac')])};}}var _0x43266a={'tls':{'rejectUnauthorized':![]}};if(_[_0x2c7b('0xad')](_0x3acb25[_0x2c7b('0x3b')][_0x2c7b('0x7b')])){if(_0x3acb25['Smtp'][_0x2c7b('0x78')]){_0x43266a['auth']={'user':_0x3acb25[_0x2c7b('0x3b')]['user'],'pass':_0x3acb25['Smtp'][_0x2c7b('0x76')]};}_0x43266a[_0x2c7b('0x79')]=_0x3acb25[_0x2c7b('0x3b')][_0x2c7b('0x79')];_0x43266a[_0x2c7b('0x7a')]=_0x3acb25[_0x2c7b('0x3b')][_0x2c7b('0x7a')];_0x43266a[_0x2c7b('0xae')]=_0x3acb25['Smtp'][_0x2c7b('0xae')];}else{_0x43266a['service']=_0x3acb25[_0x2c7b('0x3b')][_0x2c7b('0x7b')];_0x43266a[_0x2c7b('0xaf')]={'user':_0x3acb25[_0x2c7b('0x3b')][_0x2c7b('0x73')],'pass':_0x3acb25['Smtp']['pass']};}return respondWithRpcPromise(_0x2c7b('0xb0'),'sendMail',{'account':_0x43266a,'message':_0x59faca[_0x2c7b('0x5e')]});}else{throw new Error(_0x2c7b('0xb1'));}}})[_0x2c7b('0x33')](function(_0x3de82a){if(_0x3de82a){_0x1e03f2=_0x3de82a;if(_0x119c59[_0x2c7b('0xb2')]){if(_0x119c59['List'][_0x2c7b('0xa4')][_0x2c7b('0x46')]){return _0x119c59[_0x2c7b('0xb2')][_0x2c7b('0xa4')][0x0];}else{return db[_0x2c7b('0xa3')]['create'](_[_0x2c7b('0x19')](_0x59faca[_0x2c7b('0x5e')],{'firstName':_0x59faca[_0x2c7b('0x5e')]['to'],'email':_0x59faca['body']['to'],'phone':_0x59faca[_0x2c7b('0x5e')]['to'],'ListId':_0x119c59[_0x2c7b('0x6e')]}));}}else{throw new Error(_0x2c7b('0xb1'));}}})[_0x2c7b('0x33')](function(_0x42c9e6){if(_0x42c9e6){var _0x1ded32={'UserId':_0x59faca['user']['id'],'ContactId':_0x42c9e6['id'],'MailAccountId':_0x119c59['id'],'inReplyTo':_0x1e03f2[_0x2c7b('0xb3')],'to':_0x59faca[_0x2c7b('0x5e')]['from'],'cc':_0x59faca[_0x2c7b('0x5e')]['cc'],'subject':_0x59faca[_0x2c7b('0x5e')][_0x2c7b('0xb4')],'attach':_0x59faca[_0x2c7b('0x5e')][_0x2c7b('0xb5')],'firstMsgDirection':_0x2c7b('0xb6'),'lastMsgAt':moment()['format'](_0x2c7b('0x9f')),'lastMsgDirection':_0x2c7b('0xb6'),'lastMsgBody':_0x59faca[_0x2c7b('0x5e')][_0x2c7b('0x5e')],'Messages':[_[_0x2c7b('0x50')](_0x59faca[_0x2c7b('0x5e')],{'messageId':_0x1e03f2[_0x2c7b('0xb3')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x119c59['id'],'UserId':_0x59faca[_0x2c7b('0x73')]['id'],'ContactId':_0x42c9e6['id']})]};if(_0x59faca[_0x2c7b('0x5e')][_0x2c7b('0xb7')]){_0x1ded32=_[_0x2c7b('0x50')](_0x1ded32,_0x59faca[_0x2c7b('0x5e')][_0x2c7b('0xb7')]);}return db[_0x2c7b('0x87')]['create'](_0x1ded32,{'include':[{'model':db[_0x2c7b('0xa0')],'as':_0x2c7b('0xb8')}]});}})[_0x2c7b('0x33')](respondWithResult(_0x298c7a,null))[_0x2c7b('0x28')](handleError(_0x298c7a,null));};exports[_0x2c7b('0xb9')]=function(_0x10dc8e,_0x3aeb2a,_0x1794d0){return db[_0x2c7b('0x3c')][_0x2c7b('0x5d')]({'where':{'id':_0x10dc8e[_0x2c7b('0x5f')]['id']},'include':[{'model':db['MailServerOut'],'as':_0x2c7b('0x3b'),'raw':!![]}]})['then'](handleEntityNotFound(_0x3aeb2a,null))['then'](function(_0x350f42){if(_0x350f42&&_0x350f42[_0x2c7b('0x3b')]){var _0x38378f={'id':_0x350f42['id'],'tls':{'rejectUnauthorized':![]}};if(_0x350f42[_0x2c7b('0x3b')]['service']){_0x38378f['service']=_0x350f42['Smtp'][_0x2c7b('0x7b')];}else{_0x38378f['host']=_0x350f42['Smtp'][_0x2c7b('0x79')];_0x38378f[_0x2c7b('0x7a')]=_0x350f42[_0x2c7b('0x3b')][_0x2c7b('0x7a')];_0x38378f[_0x2c7b('0xae')]=_0x350f42[_0x2c7b('0x3b')][_0x2c7b('0xae')];}if(_0x350f42['Smtp'][_0x2c7b('0x78')]){_0x38378f[_0x2c7b('0xaf')]={'user':_0x350f42[_0x2c7b('0x3b')][_0x2c7b('0x73')],'pass':_0x350f42[_0x2c7b('0x3b')][_0x2c7b('0x76')]};}return respondWithRpcPromise(_0x2c7b('0xba'),'verifySmtp',{'account':_0x38378f});}})[_0x2c7b('0x33')](respondWithResult(_0x3aeb2a,null))['catch'](handleError(_0x3aeb2a,null));};exports[_0x2c7b('0x96')]=function(_0x1ff130,_0x357b1a){return db[_0x2c7b('0x3c')][_0x2c7b('0x5d')]({'where':{'id':_0x1ff130[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x357b1a,null))[_0x2c7b('0x33')](function(_0x4a8cd2){if(_0x4a8cd2&&_0x4a8cd2[_0x2c7b('0x7b')]){throw new db[(_0x2c7b('0xbb'))][(_0x2c7b('0xbc'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x4a8cd2;})[_0x2c7b('0x33')](removeEntity(_0x357b1a,null))[_0x2c7b('0x28')](handleError(_0x357b1a,null));};exports[_0x2c7b('0xbd')]=function(_0x409141,_0x5b890c,_0x5463fc){return db['MailAccount'][_0x2c7b('0x5d')]({'where':{'id':_0x409141['params']['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x5b890c,null))[_0x2c7b('0x33')](function(_0x37d730){if(_0x37d730){return _0x37d730[_0x2c7b('0xbd')](_0x409141['body'][_0x2c7b('0x67')],_['omit'](_0x409141[_0x2c7b('0x5e')],[_0x2c7b('0x67'),'id'])||{})[_0x2c7b('0xbe')](function(_0x55ae13){for(var _0xa56b7b=0x0;_0xa56b7b<_0x409141[_0x2c7b('0x5e')][_0x2c7b('0x67')][_0x2c7b('0x46')];_0xa56b7b+=0x1){socket[_0x2c7b('0xbf')](_0x2c7b('0xc0'),{'UserId':_0x409141[_0x2c7b('0x5e')][_0x2c7b('0x67')][_0xa56b7b],'MailAccountId':_0x409141[_0x2c7b('0x5f')]['id']});}return _0x55ae13;});}})['then'](respondWithResult(_0x5b890c,null))[_0x2c7b('0x28')](handleError(_0x5b890c,null));};exports[_0x2c7b('0xc1')]=function(_0x51f45a,_0x43c6d1,_0x45ea9c){var _0x556027;return db[_0x2c7b('0x3c')]['find']({'where':{'id':_0x51f45a[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x43c6d1,null))[_0x2c7b('0x33')](function(_0x3a0c22){if(_0x3a0c22){return _0x3a0c22['removeAgents'](_0x51f45a['query'][_0x2c7b('0x67')])[_0x2c7b('0x33')](function(_0x137167){if(_[_0x2c7b('0xc2')](_0x51f45a[_0x2c7b('0x40')][_0x2c7b('0x67')])){for(var _0x5e410b=0x0;_0x5e410b<_0x51f45a[_0x2c7b('0x40')][_0x2c7b('0x67')][_0x2c7b('0x46')];_0x5e410b+=0x1){socket[_0x2c7b('0xbf')](_0x2c7b('0xc3'),{'UserId':_0x51f45a[_0x2c7b('0x40')][_0x2c7b('0x67')][_0x5e410b],'MailAccountId':_0x51f45a[_0x2c7b('0x5f')]['id']});}}else{socket[_0x2c7b('0xbf')](_0x2c7b('0xc3'),{'UserId':_0x51f45a[_0x2c7b('0x40')]['ids'],'MailAccountId':_0x51f45a[_0x2c7b('0x5f')]['id']});}});}})['then'](respondWithStatusCode(_0x43c6d1,null))[_0x2c7b('0x28')](handleError(_0x43c6d1,null));};exports[_0x2c7b('0xc4')]=function(_0x63743f,_0x329505,_0x37082a){var _0x3609d3={};var _0x46a017={};var _0x46333a;var _0x5c7a8b;return db[_0x2c7b('0x3c')][_0x2c7b('0x65')]({'where':{'id':_0x63743f[_0x2c7b('0x5f')]['id']}})[_0x2c7b('0x33')](handleEntityNotFound(_0x329505,null))[_0x2c7b('0x33')](function(_0x3a15f3){if(_0x3a15f3){_0x46333a=_0x3a15f3;_0x46a017['model']=_[_0x2c7b('0x5b')](db['User'][_0x2c7b('0x3d')]);_0x46a017[_0x2c7b('0x40')]=_[_0x2c7b('0x5b')](_0x63743f['query']);_0x46a017[_0x2c7b('0x42')]=_[_0x2c7b('0x43')](_0x46a017['model'],_0x46a017[_0x2c7b('0x40')]);_0x3609d3['attributes']=_['intersection'](_0x46a017[_0x2c7b('0x3e')],qs[_0x2c7b('0x44')](_0x63743f[_0x2c7b('0x40')]['fields']));_0x3609d3[_0x2c7b('0x45')]=_0x3609d3['attributes'][_0x2c7b('0x46')]?_0x3609d3[_0x2c7b('0x45')]:_0x46a017['model'];_0x3609d3[_0x2c7b('0x49')]=qs[_0x2c7b('0x4a')](_0x63743f[_0x2c7b('0x40')][_0x2c7b('0x4a')]);_0x3609d3[_0x2c7b('0x4b')]=qs[_0x2c7b('0x42')](_[_0x2c7b('0x4c')](_0x63743f[_0x2c7b('0x40')],_0x46a017['filters']));if(_0x63743f[_0x2c7b('0x40')][_0x2c7b('0x4f')]){_0x3609d3['where']=_['merge'](_0x3609d3[_0x2c7b('0x4b')],{'$or':_[_0x2c7b('0x51')](_0x3609d3['attributes'],function(_0x4ab131){var _0x1b1110={};_0x1b1110[_0x4ab131]={'$like':'%'+_0x63743f[_0x2c7b('0x40')][_0x2c7b('0x4f')]+'%'};return _0x1b1110;})});}_0x3609d3=_[_0x2c7b('0x50')]({},_0x3609d3,_0x63743f[_0x2c7b('0x6b')]);return _0x46333a['getAgents'](_0x3609d3);}})[_0x2c7b('0x33')](function(_0x2695f6){if(_0x2695f6){_0x5c7a8b=_0x2695f6[_0x2c7b('0x46')];if(!_0x63743f[_0x2c7b('0x40')][_0x2c7b('0x47')](_0x2c7b('0x48'))){_0x3609d3['limit']=qs[_0x2c7b('0x2e')](_0x63743f[_0x2c7b('0x40')][_0x2c7b('0x2e')]);_0x3609d3[_0x2c7b('0x2d')]=qs[_0x2c7b('0x2d')](_0x63743f['query'][_0x2c7b('0x2d')]);}return _0x46333a[_0x2c7b('0xc4')](_0x3609d3);}})[_0x2c7b('0x33')](function(_0x4ebaab){if(_0x4ebaab){return _0x4ebaab?{'count':_0x5c7a8b,'rows':_0x4ebaab}:null;}})[_0x2c7b('0x33')](respondWithResult(_0x329505,null))['catch'](handleError(_0x329505,null));};
\ No newline at end of file
+var _0xca2f=['debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailAccount,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','stack','name','send','index','MailServerIn','Imap','MailServerOut','Smtp','MailAccount','rawAttributes','model','keys','query','dateStart','dateEnd','filters','attributes','intersection','fields','hasOwnProperty','limit','order','sort','where','day','merge','map','type','key','VIRTUAL','filter','count','includeAll','include','rows','show','params','length','options','find','body','describe','addDisposition','MailAccountId','Disposition','findOne','nolimit','findAll','removeDispositions','ids','addAnswer','CannedAnswer','create','getAnswers','pick','active','description','isNil','user','cuser','password','pass','authentication','host','port','service','cservice','cpassword','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','removeImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','omit','getInteractions','MailInteraction','User','fullname','Tag','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','findAndCountAll','getApplications','getMessages','MailMessage','$gte','split','format','CmList','List','Contacts','updatedAt','DESC','from','%s\x20<%s>','email','attachments','root','server/files/attachments','basename','auth','secure','SendMail','sendMail','List\x20not\x20found','CmContact','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','removeAgents','isArray','emit','userMailAccount:remove','html-pdf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','http','request','then','info'];(function(_0x128d68,_0x555a32){var _0x24ad4d=function(_0x101a3a){while(--_0x101a3a){_0x128d68['push'](_0x128d68['shift']());}};_0x24ad4d(++_0x555a32);}(_0xca2f,0x15d));var _0xfca2=function(_0x459e67,_0x5ecf3a){_0x459e67=_0x459e67-0x0;var _0x2308a9=_0xca2f[_0x459e67];return _0x2308a9;};'use strict';var pdf=require(_0xfca2('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfca2('0x1'));var jsonpatch=require(_0xfca2('0x2'));var rp=require(_0xfca2('0x3'));var moment=require('moment');var BPromise=require(_0xfca2('0x4'));var Mustache=require('mustache');var util=require(_0xfca2('0x5'));var path=require(_0xfca2('0x6'));var sox=require(_0xfca2('0x7'));var csv=require(_0xfca2('0x8'));var ejs=require(_0xfca2('0x9'));var fs=require('fs');var _=require(_0xfca2('0xa'));var squel=require(_0xfca2('0xb'));var crypto=require(_0xfca2('0xc'));var jsforce=require(_0xfca2('0xd'));var deskjs=require(_0xfca2('0xe'));var toCsv=require(_0xfca2('0x8'));var querystring=require(_0xfca2('0xf'));var Papa=require(_0xfca2('0x10'));var Redis=require(_0xfca2('0x11'));var qs=require(_0xfca2('0x12'));var logger=require(_0xfca2('0x13'))(_0xfca2('0x14'));var utils=require(_0xfca2('0x15'));var config=require(_0xfca2('0x16'));var db=require(_0xfca2('0x17'))['db'];config[_0xfca2('0x18')]=_[_0xfca2('0x19')](config[_0xfca2('0x18')],{'host':_0xfca2('0x1a'),'port':0x18eb});var socket=require(_0xfca2('0x1b'))(new Redis(config[_0xfca2('0x18')]));require(_0xfca2('0x1c'))['register'](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xfca2('0x1d')]({'port':0x232b});function respondWithRpcPromise(_0x150f2b,_0x49644f,_0x1e6524,_0x159cc7){return new BPromise(function(_0x49b32c,_0x3388b1){var _0x3768df=_0x159cc7||client;return _0x3768df[_0xfca2('0x1e')](_0x150f2b,_0x1e6524)[_0xfca2('0x1f')](function(_0x284b81){logger[_0xfca2('0x20')]('MailAccount,\x20%s,\x20%s',_0x49644f,'request\x20sent');logger[_0xfca2('0x21')](_0xfca2('0x22'),_0x49644f,_0xfca2('0x23'),JSON[_0xfca2('0x24')](_0x284b81));if(_0x284b81[_0xfca2('0x25')]){if(_0x284b81[_0xfca2('0x25')][_0xfca2('0x26')]===0x1f4){logger[_0xfca2('0x25')](_0xfca2('0x27'),_0x49644f,_0x284b81['error'][_0xfca2('0x28')]);return _0x3388b1(_0x284b81[_0xfca2('0x25')][_0xfca2('0x28')]);}logger['error'](_0xfca2('0x27'),_0x49644f,_0x284b81[_0xfca2('0x25')][_0xfca2('0x28')]);return _0x49b32c(_0x284b81[_0xfca2('0x25')][_0xfca2('0x28')]);}else{logger[_0xfca2('0x20')](_0xfca2('0x27'),_0x49644f,_0xfca2('0x23'));_0x49b32c(_0x284b81['result'][_0xfca2('0x28')]);}})[_0xfca2('0x29')](function(_0xddc6d4){logger[_0xfca2('0x25')](_0xfca2('0x27'),_0x49644f,_0xddc6d4);_0x3388b1(_0xddc6d4);});});}function respondWithStatusCode(_0x1eabdd,_0x5e79b2){_0x5e79b2=_0x5e79b2||0xcc;return function(_0x280a71){if(_0x280a71){return _0x1eabdd[_0xfca2('0x2a')](_0x5e79b2);}return _0x1eabdd[_0xfca2('0x2b')](_0x5e79b2)[_0xfca2('0x2c')]();};}function respondWithResult(_0x392137,_0x59958d){_0x59958d=_0x59958d||0xc8;return function(_0x1b3156){if(_0x1b3156){return _0x392137[_0xfca2('0x2b')](_0x59958d)[_0xfca2('0x2d')](_0x1b3156);}};}function respondWithFilteredResult(_0x4fc3ab,_0x3eb62d){return function(_0x21360b){if(_0x21360b){var _0x32169a=_0x21360b['count'],_0x59421e=_0x3eb62d[_0xfca2('0x2e')],_0x29a8da=_0x3eb62d[_0xfca2('0x2e')]+_0x3eb62d['limit'],_0x490b6b;if(_0x29a8da>=_0x32169a){_0x29a8da=_0x32169a;_0x490b6b=0xc8;}else{_0x490b6b=0xce;}_0x4fc3ab[_0xfca2('0x2b')](_0x490b6b);return _0x4fc3ab[_0xfca2('0x2f')](_0xfca2('0x30'),_0x59421e+'-'+_0x29a8da+'/'+_0x32169a)[_0xfca2('0x2d')](_0x21360b);}return null;};}function patchUpdates(_0x4f5042){return function(_0x4bd02b){try{jsonpatch[_0xfca2('0x31')](_0x4bd02b,_0x4f5042,!![]);}catch(_0x3748c4){return BPromise[_0xfca2('0x32')](_0x3748c4);}return _0x4bd02b[_0xfca2('0x33')]();};}function saveUpdates(_0x44da9f,_0x53d76a){return function(_0x57ae11){if(_0x57ae11){return _0x57ae11[_0xfca2('0x34')](_0x44da9f)[_0xfca2('0x1f')](function(_0x4e8a46){return _0x4e8a46;});}return null;};}function removeEntity(_0x14ce80,_0x2fbce3){return function(_0x2caa42){if(_0x2caa42){return _0x2caa42[_0xfca2('0x35')]()[_0xfca2('0x1f')](function(){var _0x6e2a8b=_0x2caa42[_0xfca2('0x36')]({'plain':!![]});var _0x6a64b3='MailAccounts';return db[_0xfca2('0x37')][_0xfca2('0x35')]({'where':{'type':_0x6a64b3,'resourceId':_0x6e2a8b['id']}})[_0xfca2('0x1f')](function(){return _0x2caa42;});})[_0xfca2('0x1f')](function(){_0x14ce80[_0xfca2('0x2b')](0xcc)[_0xfca2('0x2c')]();});}};}function handleEntityNotFound(_0x2cf856,_0x34e206){return function(_0x157709){if(!_0x157709){_0x2cf856[_0xfca2('0x2a')](0x194);}return _0x157709;};}function handleError(_0x192bb3,_0x4ad2a9){_0x4ad2a9=_0x4ad2a9||0x1f4;return function(_0x68beb2){logger[_0xfca2('0x25')](_0x68beb2[_0xfca2('0x38')]);if(_0x68beb2[_0xfca2('0x39')]){delete _0x68beb2['name'];}_0x192bb3[_0xfca2('0x2b')](_0x4ad2a9)[_0xfca2('0x3a')](_0x68beb2);};}exports[_0xfca2('0x3b')]=function(_0x5db331,_0x502b5e){var _0x3226ee={'include':[{'model':db[_0xfca2('0x3c')],'as':_0xfca2('0x3d')},{'model':db[_0xfca2('0x3e')],'as':_0xfca2('0x3f')}]},_0x355534={},_0xcbf69a={'count':0x0,'rows':[]};var _0x5112c1=db[_0xfca2('0x40')][_0xfca2('0x41')];_0x355534[_0xfca2('0x42')]=_[_0xfca2('0x43')](_0x5112c1);var _0x24a351={'dateStart':_0x5db331[_0xfca2('0x44')][_0xfca2('0x45')],'dateEnd':_0x5db331['query'][_0xfca2('0x46')]};delete _0x5db331[_0xfca2('0x44')][_0xfca2('0x45')];delete _0x5db331[_0xfca2('0x44')][_0xfca2('0x46')];_0x355534[_0xfca2('0x44')]=_['keys'](_0x5db331[_0xfca2('0x44')]);_0x355534[_0xfca2('0x47')]=_['intersection'](_0x355534[_0xfca2('0x42')],_0x355534[_0xfca2('0x44')]);_0x3226ee[_0xfca2('0x48')]=_[_0xfca2('0x49')](_0x355534['model'],qs[_0xfca2('0x4a')](_0x5db331[_0xfca2('0x44')][_0xfca2('0x4a')]));_0x3226ee[_0xfca2('0x48')]=_0x3226ee[_0xfca2('0x48')]['length']?_0x3226ee['attributes']:_0x355534[_0xfca2('0x42')];if(!_0x5db331['query'][_0xfca2('0x4b')]('nolimit')){_0x3226ee[_0xfca2('0x4c')]=qs[_0xfca2('0x4c')](_0x5db331[_0xfca2('0x44')]['limit']);_0x3226ee[_0xfca2('0x2e')]=qs[_0xfca2('0x2e')](_0x5db331[_0xfca2('0x44')][_0xfca2('0x2e')]);}_0x3226ee[_0xfca2('0x4d')]=qs['sort'](_0x5db331[_0xfca2('0x44')][_0xfca2('0x4e')]);_0x3226ee[_0xfca2('0x4f')]=qs[_0xfca2('0x47')](_['pick'](_0x5db331[_0xfca2('0x44')],_0x355534[_0xfca2('0x47')]));if(_0x24a351[_0xfca2('0x45')]){if(_0x24a351[_0xfca2('0x46')]){_0x24a351[_0xfca2('0x46')]=moment(_0x24a351[_0xfca2('0x46')])['add'](0x1,_0xfca2('0x50'));}else{_0x24a351[_0xfca2('0x46')]=moment(_0x24a351[_0xfca2('0x45')])['add'](0x1,_0xfca2('0x50'));}_[_0xfca2('0x51')](_0x3226ee['where'],{'createdAt':{'$gte':_0x24a351[_0xfca2('0x45')],'$lte':_0x24a351[_0xfca2('0x46')]}});}if(_0x5db331['query']['filter']){_0x3226ee[_0xfca2('0x4f')]=_['merge'](_0x3226ee[_0xfca2('0x4f')],{'$or':_[_0xfca2('0x52')](_0x5112c1,function(_0x4c44af){if(_0x4c44af[_0xfca2('0x53')][_0xfca2('0x54')]!==_0xfca2('0x55')){var _0x37e855={};_0x37e855[_0x4c44af['field']]={'$like':'%'+_0x5db331[_0xfca2('0x44')][_0xfca2('0x56')]+'%'};return _0x37e855;}})});}_0x3226ee=_['merge']({},_0x3226ee,_0x5db331['options']);var _0x1b82c4={'where':_0x3226ee['where']};return db['MailAccount'][_0xfca2('0x57')](_0x1b82c4)[_0xfca2('0x1f')](function(_0xe0511b){_0xcbf69a['count']=_0xe0511b;if(_0x5db331['query'][_0xfca2('0x58')]){_0x3226ee[_0xfca2('0x59')]=[{'all':!![]}];}return db['MailAccount']['findAll'](_0x3226ee);})['then'](function(_0x272b19){_0xcbf69a[_0xfca2('0x5a')]=_0x272b19;return _0xcbf69a;})[_0xfca2('0x1f')](respondWithFilteredResult(_0x502b5e,_0x3226ee))[_0xfca2('0x29')](handleError(_0x502b5e,null));};exports[_0xfca2('0x5b')]=function(_0x2ae174,_0x301f15){var _0xee55e9={'raw':![],'where':{'id':_0x2ae174[_0xfca2('0x5c')]['id']},'include':[{'model':db[_0xfca2('0x3c')],'as':'Imap'},{'model':db[_0xfca2('0x3e')],'as':_0xfca2('0x3f')}]},_0x545151={};_0x545151['model']=_[_0xfca2('0x43')](db[_0xfca2('0x40')][_0xfca2('0x41')]);_0x545151[_0xfca2('0x44')]=_[_0xfca2('0x43')](_0x2ae174[_0xfca2('0x44')]);_0x545151['filters']=_[_0xfca2('0x49')](_0x545151[_0xfca2('0x42')],_0x545151['query']);_0xee55e9[_0xfca2('0x48')]=_[_0xfca2('0x49')](_0x545151[_0xfca2('0x42')],qs[_0xfca2('0x4a')](_0x2ae174[_0xfca2('0x44')]['fields']));_0xee55e9[_0xfca2('0x48')]=_0xee55e9[_0xfca2('0x48')][_0xfca2('0x5d')]?_0xee55e9[_0xfca2('0x48')]:_0x545151[_0xfca2('0x42')];if(_0x2ae174[_0xfca2('0x44')][_0xfca2('0x58')]){_0xee55e9[_0xfca2('0x59')]=[{'all':!![]}];}_0xee55e9=_[_0xfca2('0x51')]({},_0xee55e9,_0x2ae174[_0xfca2('0x5e')]);return db['MailAccount'][_0xfca2('0x5f')](_0xee55e9)['then'](handleEntityNotFound(_0x301f15,null))[_0xfca2('0x1f')](respondWithResult(_0x301f15,null))['catch'](handleError(_0x301f15,null));};exports[_0xfca2('0x34')]=function(_0x468792,_0x5cc5a1){if(_0x468792['body']['id']){delete _0x468792['body']['id'];}return db['MailAccount'][_0xfca2('0x5f')]({'where':{'id':_0x468792[_0xfca2('0x5c')]['id']},'include':[{'model':db['MailServerIn'],'as':_0xfca2('0x3d')},{'model':db[_0xfca2('0x3e')],'as':'Smtp'}]})[_0xfca2('0x1f')](handleEntityNotFound(_0x5cc5a1,null))[_0xfca2('0x1f')](saveUpdates(_0x468792[_0xfca2('0x60')],null))[_0xfca2('0x1f')](function(_0x559dfe){if(_0x559dfe&&_0x468792['body']['Imap']){return db[_0xfca2('0x3c')][_0xfca2('0x34')](_0x468792[_0xfca2('0x60')][_0xfca2('0x3d')],{'where':{'MailAccountId':_0x559dfe['id']}})[_0xfca2('0x1f')](function(){return _0x559dfe;});}return _0x559dfe;})[_0xfca2('0x1f')](function(_0x12b79f){if(_0x12b79f&&_0x468792['body'][_0xfca2('0x3f')]){return db[_0xfca2('0x3e')][_0xfca2('0x34')](_0x468792[_0xfca2('0x60')][_0xfca2('0x3f')],{'where':{'MailAccountId':_0x12b79f['id']}})[_0xfca2('0x1f')](function(){return _0x12b79f;});}return _0x12b79f;})['then'](respondWithResult(_0x5cc5a1,null))[_0xfca2('0x29')](handleError(_0x5cc5a1,null));};exports['describe']=function(_0x4088c2,_0x37cc62){return db['MailAccount'][_0xfca2('0x61')]()[_0xfca2('0x1f')](respondWithResult(_0x37cc62,null))[_0xfca2('0x29')](handleError(_0x37cc62,null));};exports[_0xfca2('0x62')]=function(_0x233810,_0xaffcf8,_0x30a6ec){if(_0x233810['body']['id']){delete _0x233810[_0xfca2('0x60')]['id'];}return db[_0xfca2('0x40')][_0xfca2('0x5f')]({'where':{'id':_0x233810[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0xaffcf8,null))[_0xfca2('0x1f')](function(_0x5beaef){if(_0x5beaef){_0x233810[_0xfca2('0x60')][_0xfca2('0x63')]=_0x5beaef['id'];return db[_0xfca2('0x64')]['create'](_0x233810['body']);}})[_0xfca2('0x1f')](respondWithResult(_0xaffcf8,null))[_0xfca2('0x29')](handleError(_0xaffcf8,null));};exports['getDispositions']=function(_0x4b991f,_0xf7b2a0,_0xd0109e){var _0x259cf0={'raw':![],'where':{}};var _0x23ad15={};var _0x123c81={'count':0x0,'rows':[]};return db[_0xfca2('0x40')][_0xfca2('0x65')]({'where':{'id':_0x4b991f[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0xf7b2a0,null))[_0xfca2('0x1f')](function(_0x3879d7){if(_0x3879d7){_0x23ad15['model']=_['keys'](db[_0xfca2('0x64')][_0xfca2('0x41')]);_0x23ad15[_0xfca2('0x44')]=_['keys'](_0x4b991f[_0xfca2('0x44')]);_0x23ad15[_0xfca2('0x47')]=_['intersection'](_0x23ad15[_0xfca2('0x42')],_0x23ad15['query']);_0x259cf0[_0xfca2('0x48')]=_[_0xfca2('0x49')](_0x23ad15[_0xfca2('0x42')],qs[_0xfca2('0x4a')](_0x4b991f[_0xfca2('0x44')][_0xfca2('0x4a')]));_0x259cf0[_0xfca2('0x48')]=_0x259cf0[_0xfca2('0x48')]['length']?_0x259cf0[_0xfca2('0x48')]:_0x23ad15['model'];if(!_0x4b991f[_0xfca2('0x44')][_0xfca2('0x4b')](_0xfca2('0x66'))){_0x259cf0[_0xfca2('0x4c')]=qs['limit'](_0x4b991f['query'][_0xfca2('0x4c')]);_0x259cf0['offset']=qs['offset'](_0x4b991f['query'][_0xfca2('0x2e')]);}_0x259cf0[_0xfca2('0x4d')]=qs[_0xfca2('0x4e')](_0x4b991f[_0xfca2('0x44')]['sort']);_0x259cf0[_0xfca2('0x4f')]=qs[_0xfca2('0x47')](_['pick'](_0x4b991f['query'],_0x23ad15['filters']));_0x259cf0[_0xfca2('0x4f')][_0xfca2('0x63')]=_0x3879d7['id'];if(_0x4b991f[_0xfca2('0x44')][_0xfca2('0x56')]){_0x259cf0[_0xfca2('0x4f')]=_[_0xfca2('0x51')](_0x259cf0[_0xfca2('0x4f')],{'$or':_[_0xfca2('0x52')](_0x259cf0['attributes'],function(_0x189710){var _0x2d6e4f={};_0x2d6e4f[_0x189710]={'$like':'%'+_0x4b991f[_0xfca2('0x44')][_0xfca2('0x56')]+'%'};return _0x2d6e4f;})});}_0x259cf0=_[_0xfca2('0x51')]({},_0x259cf0,_0x4b991f['options']);return db['Disposition']['count']({'where':_0x259cf0[_0xfca2('0x4f')]})[_0xfca2('0x1f')](function(_0x14c5d3){_0x123c81['count']=_0x14c5d3;if(_0x4b991f['query'][_0xfca2('0x58')]){_0x259cf0[_0xfca2('0x59')]=[{'all':!![]}];}return db[_0xfca2('0x64')][_0xfca2('0x67')](_0x259cf0);})[_0xfca2('0x1f')](function(_0x505ea6){_0x123c81[_0xfca2('0x5a')]=_0x505ea6;return _0x123c81;});}})[_0xfca2('0x1f')](respondWithFilteredResult(_0xf7b2a0,_0x259cf0))[_0xfca2('0x29')](handleError(_0xf7b2a0,null));};exports['removeDispositions']=function(_0x561624,_0x3e561c,_0x394800){var _0x331c64;return db[_0xfca2('0x40')][_0xfca2('0x5f')]({'where':{'id':_0x561624[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x3e561c,null))[_0xfca2('0x1f')](function(_0x36749c){if(_0x36749c){return _0x36749c[_0xfca2('0x68')](_0x561624[_0xfca2('0x44')][_0xfca2('0x69')]);}})[_0xfca2('0x1f')](respondWithStatusCode(_0x3e561c,null))[_0xfca2('0x29')](handleError(_0x3e561c,null));};exports[_0xfca2('0x6a')]=function(_0x4a98a9,_0x5c35af,_0x272987){if(_0x4a98a9[_0xfca2('0x60')]['id']){delete _0x4a98a9['body']['id'];}return db[_0xfca2('0x40')][_0xfca2('0x5f')]({'where':{'id':_0x4a98a9[_0xfca2('0x5c')]['id']}})['then'](handleEntityNotFound(_0x5c35af,null))[_0xfca2('0x1f')](function(_0x554a50){if(_0x554a50){_0x4a98a9[_0xfca2('0x60')]['MailAccountId']=_0x554a50['id'];return db[_0xfca2('0x6b')][_0xfca2('0x6c')](_0x4a98a9[_0xfca2('0x60')]);}})['then'](respondWithResult(_0x5c35af,null))[_0xfca2('0x29')](handleError(_0x5c35af,null));};exports[_0xfca2('0x6d')]=function(_0x8084aa,_0x5ceaba,_0x13ead5){var _0x94c77e={'raw':![],'where':{}};var _0x49bb19={};var _0x2cac71={'count':0x0,'rows':[]};return db[_0xfca2('0x40')][_0xfca2('0x65')]({'where':{'id':_0x8084aa[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x5ceaba,null))[_0xfca2('0x1f')](function(_0x588b06){if(_0x588b06){_0x49bb19[_0xfca2('0x42')]=_[_0xfca2('0x43')](db['CannedAnswer'][_0xfca2('0x41')]);_0x49bb19['query']=_[_0xfca2('0x43')](_0x8084aa[_0xfca2('0x44')]);_0x49bb19[_0xfca2('0x47')]=_[_0xfca2('0x49')](_0x49bb19[_0xfca2('0x42')],_0x49bb19[_0xfca2('0x44')]);_0x94c77e[_0xfca2('0x48')]=_[_0xfca2('0x49')](_0x49bb19['model'],qs[_0xfca2('0x4a')](_0x8084aa['query'][_0xfca2('0x4a')]));_0x94c77e[_0xfca2('0x48')]=_0x94c77e[_0xfca2('0x48')]['length']?_0x94c77e[_0xfca2('0x48')]:_0x49bb19['model'];if(!_0x8084aa['query'][_0xfca2('0x4b')]('nolimit')){_0x94c77e['limit']=qs[_0xfca2('0x4c')](_0x8084aa[_0xfca2('0x44')][_0xfca2('0x4c')]);_0x94c77e[_0xfca2('0x2e')]=qs[_0xfca2('0x2e')](_0x8084aa[_0xfca2('0x44')]['offset']);}_0x94c77e[_0xfca2('0x4d')]=qs[_0xfca2('0x4e')](_0x8084aa['query'][_0xfca2('0x4e')]);_0x94c77e[_0xfca2('0x4f')]=qs[_0xfca2('0x47')](_[_0xfca2('0x6e')](_0x8084aa[_0xfca2('0x44')],_0x49bb19['filters']));_0x94c77e[_0xfca2('0x4f')][_0xfca2('0x63')]=_0x588b06['id'];if(_0x8084aa[_0xfca2('0x44')][_0xfca2('0x56')]){_0x94c77e['where']=_[_0xfca2('0x51')](_0x94c77e[_0xfca2('0x4f')],{'$or':_[_0xfca2('0x52')](_0x94c77e[_0xfca2('0x48')],function(_0x309d89){var _0x4a4500={};_0x4a4500[_0x309d89]={'$like':'%'+_0x8084aa[_0xfca2('0x44')][_0xfca2('0x56')]+'%'};return _0x4a4500;})});}_0x94c77e=_[_0xfca2('0x51')]({},_0x94c77e,_0x8084aa[_0xfca2('0x5e')]);return db[_0xfca2('0x6b')][_0xfca2('0x57')]({'where':_0x94c77e[_0xfca2('0x4f')]})[_0xfca2('0x1f')](function(_0x272061){_0x2cac71['count']=_0x272061;if(_0x8084aa['query'][_0xfca2('0x58')]){_0x94c77e[_0xfca2('0x59')]=[{'all':!![]}];}return db[_0xfca2('0x6b')][_0xfca2('0x67')](_0x94c77e);})[_0xfca2('0x1f')](function(_0x40fcfa){_0x2cac71[_0xfca2('0x5a')]=_0x40fcfa;return _0x2cac71;});}})[_0xfca2('0x1f')](respondWithFilteredResult(_0x5ceaba,_0x94c77e))['catch'](handleError(_0x5ceaba,null));};exports['removeAnswers']=function(_0x205a89,_0x1f5362,_0x330ed7){var _0x291a72;return db[_0xfca2('0x40')][_0xfca2('0x5f')]({'where':{'id':_0x205a89[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x1f5362,null))[_0xfca2('0x1f')](function(_0x1a6d0){if(_0x1a6d0){return _0x1a6d0['removeAnswers'](_0x205a89[_0xfca2('0x44')][_0xfca2('0x69')]);}})[_0xfca2('0x1f')](respondWithStatusCode(_0x1f5362,null))[_0xfca2('0x29')](handleError(_0x1f5362,null));};exports[_0xfca2('0x6c')]=function(_0x455f6f,_0x2573df){var _0x3aba5c={'name':_0x455f6f[_0xfca2('0x60')][_0xfca2('0x39')],'key':_0x455f6f['body'][_0xfca2('0x54')],'email':_0x455f6f['body']['email'],'ListId':_0x455f6f[_0xfca2('0x60')]['ListId'],'active':!_['isNil'](_0x455f6f[_0xfca2('0x60')][_0xfca2('0x6f')])?_0x455f6f[_0xfca2('0x60')]['active']:!![],'description':_0x455f6f[_0xfca2('0x60')][_0xfca2('0x70')]||null,'Imap':{},'Smtp':{}};if(_[_0xfca2('0x71')](_0x455f6f['body']['cservice'])){if(_0x455f6f[_0xfca2('0x60')]['cauthentication']){_0x3aba5c[_0xfca2('0x3d')][_0xfca2('0x72')]=_0x3aba5c[_0xfca2('0x3f')][_0xfca2('0x72')]=_0x455f6f[_0xfca2('0x60')][_0xfca2('0x73')];_0x3aba5c[_0xfca2('0x3d')][_0xfca2('0x74')]=_0x3aba5c[_0xfca2('0x3f')][_0xfca2('0x75')]=_0x455f6f['body']['cpassword'];}else{_0x3aba5c['Imap'][_0xfca2('0x76')]=_0x3aba5c[_0xfca2('0x3f')]['authentication']=![];}_0x3aba5c[_0xfca2('0x3d')][_0xfca2('0x77')]=_0x455f6f[_0xfca2('0x60')][_0xfca2('0x3d')][_0xfca2('0x77')];_0x3aba5c['Imap'][_0xfca2('0x78')]=_0x455f6f['body']['Imap']['port'];_0x3aba5c[_0xfca2('0x3f')]['host']=_0x455f6f[_0xfca2('0x60')][_0xfca2('0x3f')][_0xfca2('0x77')];_0x3aba5c[_0xfca2('0x3f')][_0xfca2('0x78')]=_0x455f6f[_0xfca2('0x60')][_0xfca2('0x3f')][_0xfca2('0x78')];}else{_0x3aba5c['Imap'][_0xfca2('0x79')]=_0x3aba5c[_0xfca2('0x3f')][_0xfca2('0x79')]=_0x455f6f[_0xfca2('0x60')][_0xfca2('0x7a')];_0x3aba5c[_0xfca2('0x3d')][_0xfca2('0x72')]=_0x3aba5c[_0xfca2('0x3f')][_0xfca2('0x72')]=_0x455f6f[_0xfca2('0x60')]['cuser'];_0x3aba5c[_0xfca2('0x3d')][_0xfca2('0x74')]=_0x3aba5c[_0xfca2('0x3f')]['pass']=_0x455f6f['body'][_0xfca2('0x7b')];}return db[_0xfca2('0x40')][_0xfca2('0x6c')](_0x3aba5c,{'include':[{'model':db[_0xfca2('0x3e')],'as':'Smtp'},{'model':db['MailServerIn'],'as':_0xfca2('0x3d')}]})['then'](function(_0x2e585d){var _0xb04153=_0x455f6f[_0xfca2('0x72')][_0xfca2('0x36')]({'plain':!![]});if(!_0xb04153)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xb04153[_0xfca2('0x7c')]===_0xfca2('0x72')){var _0x1d07c4=_0x2e585d[_0xfca2('0x36')]({'plain':!![]});return db[_0xfca2('0x7d')][_0xfca2('0x5f')]({'where':{'name':_0xfca2('0x7e'),'userProfileId':_0xb04153[_0xfca2('0x7f')]},'raw':!![]})[_0xfca2('0x1f')](function(_0x49b345){if(_0x49b345&&_0x49b345[_0xfca2('0x80')]===0x0){return db[_0xfca2('0x37')][_0xfca2('0x6c')]({'name':_0x1d07c4[_0xfca2('0x39')],'resourceId':_0x1d07c4['id'],'type':_0x49b345[_0xfca2('0x39')],'sectionId':_0x49b345['id']},{})[_0xfca2('0x1f')](function(){return _0x2e585d;});}else{return _0x2e585d;}})['catch'](function(_0x5637b8){logger[_0xfca2('0x25')](_0xfca2('0x81'),_0x5637b8);throw _0x5637b8;});}return _0x2e585d;})[_0xfca2('0x1f')](respondWithResult(_0x2573df,0xc9))[_0xfca2('0x29')](handleError(_0x2573df,null));};exports['getImap']=function(_0x526271,_0x1b0843,_0x2066e5){return db[_0xfca2('0x40')][_0xfca2('0x65')]({'where':{'id':_0x526271[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x1b0843,null))['then'](function(_0x5e1b99){if(_0x5e1b99){return _0x5e1b99['getImap']();}return null;})[_0xfca2('0x1f')](respondWithResult(_0x1b0843,null))[_0xfca2('0x29')](handleError(_0x1b0843,null));};exports['addImap']=function(_0x31a1ce,_0x2e09ae,_0x2198d6){if(_0x31a1ce[_0xfca2('0x60')]['id']){delete _0x31a1ce[_0xfca2('0x60')]['id'];}return db[_0xfca2('0x40')]['find']({'where':{'id':_0x31a1ce['params']['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x2e09ae,null))[_0xfca2('0x1f')](function(_0x345be4){if(_0x345be4){_0x31a1ce['body'][_0xfca2('0x63')]=_0x345be4['id'];return db['MailServerIn'][_0xfca2('0x6c')](_0x31a1ce[_0xfca2('0x60')]);}})[_0xfca2('0x1f')](respondWithResult(_0x2e09ae,null))[_0xfca2('0x29')](handleError(_0x2e09ae,null));};exports[_0xfca2('0x82')]=function(_0x4fc4a8,_0x39f509,_0x191a8e){return db[_0xfca2('0x40')][_0xfca2('0x65')]({'where':{'id':_0x4fc4a8[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x39f509,null))['then'](function(_0x543899){if(_0x543899){return _0x543899[_0xfca2('0x83')](null);}return null;})[_0xfca2('0x1f')](respondWithStatusCode(_0x39f509,null))[_0xfca2('0x29')](handleError(_0x39f509,null));};exports[_0xfca2('0x84')]=function(_0x300ed0,_0x400570,_0x164338){return db[_0xfca2('0x40')]['findOne']({'where':{'id':_0x300ed0[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x400570,null))[_0xfca2('0x1f')](function(_0x65bb62){if(_0x65bb62){return _0x65bb62['getSmtp']();}return null;})['then'](respondWithResult(_0x400570,null))[_0xfca2('0x29')](handleError(_0x400570,null));};exports['addSmtp']=function(_0x285ff1,_0x44f04f,_0x1a34eb){if(_0x285ff1[_0xfca2('0x60')]['id']){delete _0x285ff1[_0xfca2('0x60')]['id'];}return db[_0xfca2('0x40')][_0xfca2('0x5f')]({'where':{'id':_0x285ff1[_0xfca2('0x5c')]['id']}})['then'](handleEntityNotFound(_0x44f04f,null))[_0xfca2('0x1f')](function(_0x42752c){if(_0x42752c){_0x285ff1[_0xfca2('0x60')][_0xfca2('0x63')]=_0x42752c['id'];return db[_0xfca2('0x3e')]['create'](_0x285ff1['body']);}})[_0xfca2('0x1f')](respondWithResult(_0x44f04f,null))['catch'](handleError(_0x44f04f,null));};exports[_0xfca2('0x85')]=function(_0xee6d7e,_0x4ce658,_0x5958b4){return db[_0xfca2('0x40')][_0xfca2('0x65')]({'where':{'id':_0xee6d7e['params']['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x4ce658,null))[_0xfca2('0x1f')](function(_0x3d0093){if(_0x3d0093){return _0x3d0093[_0xfca2('0x86')](null);}return null;})[_0xfca2('0x1f')](respondWithStatusCode(_0x4ce658,null))[_0xfca2('0x29')](handleError(_0x4ce658,null));};exports[_0xfca2('0x87')]=function(_0x3b143d,_0xe33637,_0x4f89fa){return db['MailInteraction'][_0xfca2('0x5f')]({'where':{'id':_0x3b143d[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0xe33637,null))[_0xfca2('0x1f')](function(_0x19bf1c){if(_0x19bf1c){return _0x19bf1c[_0xfca2('0x87')](_0x3b143d[_0xfca2('0x60')][_0xfca2('0x69')],_[_0xfca2('0x88')](_0x3b143d[_0xfca2('0x60')],[_0xfca2('0x69'),'id'])||{});}})[_0xfca2('0x1f')](respondWithResult(_0xe33637,null))['catch'](handleError(_0xe33637,null));};exports[_0xfca2('0x89')]=function(_0x1e45b4,_0x562a24,_0x94fd0a){var _0x1b603e={'raw':![],'where':{}};var _0x5c0968={};var _0xb9279a={'count':0x0,'rows':[]};return db[_0xfca2('0x40')]['findOne']({'where':{'id':_0x1e45b4[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x562a24,null))['then'](function(_0x52f76f){if(_0x52f76f){_0x5c0968[_0xfca2('0x42')]=_[_0xfca2('0x43')](db[_0xfca2('0x8a')][_0xfca2('0x41')]);_0x5c0968[_0xfca2('0x44')]=_[_0xfca2('0x43')](_0x1e45b4[_0xfca2('0x44')]);_0x5c0968[_0xfca2('0x47')]=_[_0xfca2('0x49')](_0x5c0968[_0xfca2('0x42')],_0x5c0968[_0xfca2('0x44')]);_0x1b603e['attributes']=_[_0xfca2('0x49')](_0x5c0968['model'],qs[_0xfca2('0x4a')](_0x1e45b4['query'][_0xfca2('0x4a')]));_0x1b603e[_0xfca2('0x48')]=_0x1b603e[_0xfca2('0x48')][_0xfca2('0x5d')]?_0x1b603e['attributes']:_0x5c0968['model'];if(!_0x1e45b4[_0xfca2('0x44')][_0xfca2('0x4b')](_0xfca2('0x66'))){_0x1b603e['limit']=qs[_0xfca2('0x4c')](_0x1e45b4[_0xfca2('0x44')][_0xfca2('0x4c')]);_0x1b603e['offset']=qs['offset'](_0x1e45b4[_0xfca2('0x44')][_0xfca2('0x2e')]);}_0x1b603e[_0xfca2('0x4d')]=qs['sort'](_0x1e45b4[_0xfca2('0x44')][_0xfca2('0x4e')]);_0x1b603e['where']=qs[_0xfca2('0x47')](_['pick'](_0x1e45b4[_0xfca2('0x44')],_0x5c0968[_0xfca2('0x47')]));_0x1b603e[_0xfca2('0x4f')]['MailAccountId']=_0x52f76f['id'];if(_0x1e45b4[_0xfca2('0x44')][_0xfca2('0x56')]){_0x1b603e[_0xfca2('0x4f')]=_[_0xfca2('0x51')](_0x1b603e[_0xfca2('0x4f')],{'$or':_[_0xfca2('0x52')](_0x1b603e['attributes'],function(_0x37e0ae){var _0x590269={};_0x590269[_0x37e0ae]={'$like':'%'+_0x1e45b4[_0xfca2('0x44')][_0xfca2('0x56')]+'%'};return _0x590269;})});}_0x1b603e=_['merge']({},_0x1b603e,_0x1e45b4[_0xfca2('0x5e')]);return db[_0xfca2('0x8a')][_0xfca2('0x57')]({'where':_0x1b603e['where']})[_0xfca2('0x1f')](function(_0x39e80e){_0xb9279a[_0xfca2('0x57')]=_0x39e80e;if(_0x1e45b4['query'][_0xfca2('0x58')]){_0x1b603e['include']=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0xfca2('0x8b')],'as':'Owner','attributes':[_0xfca2('0x39'),_0xfca2('0x8c'),'internal'],'required':![]},{'model':db[_0xfca2('0x8d')],'as':_0xfca2('0x8e'),'attributes':['id',_0xfca2('0x39'),_0xfca2('0x8f')],'where':_0x1e45b4[_0xfca2('0x44')][_0xfca2('0x90')]?{'id':_0x1e45b4[_0xfca2('0x44')]['tag']}:undefined,'required':_0x1e45b4[_0xfca2('0x44')][_0xfca2('0x90')]?!![]:![]}];}return db['MailInteraction'][_0xfca2('0x67')](_0x1b603e);})[_0xfca2('0x1f')](function(_0x5b5538){_0xb9279a['rows']=_0x5b5538;return _0xb9279a;});}})[_0xfca2('0x1f')](respondWithFilteredResult(_0x562a24,_0x1b603e))[_0xfca2('0x29')](handleError(_0x562a24,null));};exports[_0xfca2('0x91')]=function(_0x368923,_0x3c72b7,_0x2929bd){return db['MailAccount'][_0xfca2('0x65')]({'where':{'id':_0x368923[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x3c72b7,null))['then'](function(_0x1e2456){if(_0x1e2456){return db[_0xfca2('0x92')][_0xfca2('0x93')](function(_0x5848c2){return db['MailApplication']['destroy']({'where':{'MailAccountId':_0x368923[_0xfca2('0x5c')]['id']},'transaction':_0x5848c2})[_0xfca2('0x1f')](function(_0x57fda){var _0x556acf=_[_0xfca2('0x52')](_0x368923[_0xfca2('0x60')],function(_0x4b3dfe){_0x4b3dfe[_0xfca2('0x63')]=_0x368923[_0xfca2('0x5c')]['id'];return _0x4b3dfe;});return db[_0xfca2('0x94')]['bulkCreate'](_0x556acf,{'transaction':_0x5848c2});});})[_0xfca2('0x1f')](function(){return db[_0xfca2('0x94')][_0xfca2('0x95')]({'where':{'MailAccountId':_0x368923[_0xfca2('0x5c')]['id']},'order':'priority'});});}})[_0xfca2('0x1f')](respondWithResult(_0x3c72b7,null))[_0xfca2('0x29')](handleError(_0x3c72b7,null));};exports[_0xfca2('0x96')]=function(_0x1996a5,_0x336e4e,_0x450bac){var _0x12c04c={};var _0xf598d6={};var _0x54438a;var _0x15de20;return db[_0xfca2('0x40')][_0xfca2('0x65')]({'where':{'id':_0x1996a5[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x336e4e,null))[_0xfca2('0x1f')](function(_0x132665){if(_0x132665){_0x54438a=_0x132665;_0xf598d6[_0xfca2('0x42')]=_['keys'](db[_0xfca2('0x94')][_0xfca2('0x41')]);_0xf598d6[_0xfca2('0x44')]=_[_0xfca2('0x43')](_0x1996a5[_0xfca2('0x44')]);_0xf598d6[_0xfca2('0x47')]=_['intersection'](_0xf598d6[_0xfca2('0x42')],_0xf598d6[_0xfca2('0x44')]);_0x12c04c['attributes']=_['intersection'](_0xf598d6[_0xfca2('0x42')],qs[_0xfca2('0x4a')](_0x1996a5[_0xfca2('0x44')][_0xfca2('0x4a')]));_0x12c04c[_0xfca2('0x48')]=_0x12c04c[_0xfca2('0x48')][_0xfca2('0x5d')]?_0x12c04c[_0xfca2('0x48')]:_0xf598d6['model'];_0x12c04c[_0xfca2('0x4d')]=qs['sort'](_0x1996a5[_0xfca2('0x44')]['sort']);_0x12c04c['where']=qs[_0xfca2('0x47')](_[_0xfca2('0x6e')](_0x1996a5[_0xfca2('0x44')],_0xf598d6[_0xfca2('0x47')]));if(_0x1996a5[_0xfca2('0x44')]['filter']){_0x12c04c[_0xfca2('0x4f')]=_[_0xfca2('0x51')](_0x12c04c[_0xfca2('0x4f')],{'$or':_[_0xfca2('0x52')](_0x12c04c[_0xfca2('0x48')],function(_0x16b12c){var _0x4ecd5c={};_0x4ecd5c[_0x16b12c]={'$like':'%'+_0x1996a5[_0xfca2('0x44')][_0xfca2('0x56')]+'%'};return _0x4ecd5c;})});}_0x12c04c=_[_0xfca2('0x51')]({},_0x12c04c,_0x1996a5[_0xfca2('0x5e')]);return _0x54438a[_0xfca2('0x96')](_0x12c04c);}})[_0xfca2('0x1f')](function(_0x3bd890){if(_0x3bd890){_0x15de20=_0x3bd890['length'];if(!_0x1996a5[_0xfca2('0x44')]['hasOwnProperty'](_0xfca2('0x66'))){_0x12c04c['limit']=qs[_0xfca2('0x4c')](_0x1996a5[_0xfca2('0x44')][_0xfca2('0x4c')]);_0x12c04c['offset']=qs[_0xfca2('0x2e')](_0x1996a5[_0xfca2('0x44')][_0xfca2('0x2e')]);}return _0x54438a['getApplications'](_0x12c04c);}})['then'](function(_0x3a80e9){if(_0x3a80e9){return _0x3a80e9?{'count':_0x15de20,'rows':_0x3a80e9}:null;}})[_0xfca2('0x1f')](respondWithResult(_0x336e4e,null))[_0xfca2('0x29')](handleError(_0x336e4e,null));};exports[_0xfca2('0x97')]=function(_0x37880f,_0x4bfa74,_0x364066){var _0x1db3dd={'raw':!![],'where':{}};var _0x112596={};var _0x2aedc7={'count':0x0,'rows':[]};return db[_0xfca2('0x40')][_0xfca2('0x65')]({'where':{'id':_0x37880f[_0xfca2('0x5c')]['id']}})['then'](handleEntityNotFound(_0x4bfa74,null))['then'](function(_0x81be5d){if(_0x81be5d){_0x112596['model']=_[_0xfca2('0x43')](db[_0xfca2('0x98')][_0xfca2('0x41')]);_0x112596[_0xfca2('0x44')]=_[_0xfca2('0x43')](_0x37880f['query']);_0x112596[_0xfca2('0x47')]=_[_0xfca2('0x49')](_0x112596['model'],_0x112596[_0xfca2('0x44')]);_0x1db3dd[_0xfca2('0x48')]=_[_0xfca2('0x49')](_0x112596['model'],qs[_0xfca2('0x4a')](_0x37880f[_0xfca2('0x44')][_0xfca2('0x4a')]));_0x1db3dd['attributes']=_0x1db3dd[_0xfca2('0x48')][_0xfca2('0x5d')]?_0x1db3dd[_0xfca2('0x48')]:_0x112596[_0xfca2('0x42')];if(!_0x37880f[_0xfca2('0x44')][_0xfca2('0x4b')]('nolimit')){_0x1db3dd[_0xfca2('0x4c')]=qs[_0xfca2('0x4c')](_0x37880f[_0xfca2('0x44')][_0xfca2('0x4c')]);_0x1db3dd['offset']=qs[_0xfca2('0x2e')](_0x37880f[_0xfca2('0x44')][_0xfca2('0x2e')]);}_0x1db3dd['order']=qs[_0xfca2('0x4e')](_0x37880f[_0xfca2('0x44')][_0xfca2('0x4e')]);_0x1db3dd[_0xfca2('0x4f')]=qs[_0xfca2('0x47')](_[_0xfca2('0x6e')](_0x37880f[_0xfca2('0x44')],_0x112596[_0xfca2('0x47')]));_0x1db3dd[_0xfca2('0x4f')][_0xfca2('0x63')]=_0x81be5d['id'];if(_0x37880f[_0xfca2('0x44')][_0xfca2('0x56')]){_0x1db3dd[_0xfca2('0x4f')]=_['merge'](_0x1db3dd['where'],{'$or':_[_0xfca2('0x52')](_0x1db3dd[_0xfca2('0x48')],function(_0x5ac945){var _0x16bd22={};_0x16bd22[_0x5ac945]={'$like':'%'+_0x37880f[_0xfca2('0x44')][_0xfca2('0x56')]+'%'};return _0x16bd22;})});}if(_0x37880f[_0xfca2('0x44')]['$gte']){var _0x98fca2=_0x37880f[_0xfca2('0x44')][_0xfca2('0x99')][_0xfca2('0x9a')](',');var _0xdc6704={};_0xdc6704[_0x98fca2[0x0]]={'$gte':moment(_0x98fca2[0x1])[_0xfca2('0x9b')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1db3dd[_0xfca2('0x4f')]=_[_0xfca2('0x51')](_0x1db3dd[_0xfca2('0x4f')],_0xdc6704);}_0x1db3dd=_[_0xfca2('0x51')]({},_0x1db3dd,_0x37880f[_0xfca2('0x5e')]);return db[_0xfca2('0x98')][_0xfca2('0x57')]({'where':_0x1db3dd[_0xfca2('0x4f')]})[_0xfca2('0x1f')](function(_0x42b522){_0x2aedc7[_0xfca2('0x57')]=_0x42b522;if(_0x37880f[_0xfca2('0x44')]['includeAll']){_0x1db3dd['include']=[{'all':!![]}];}return db[_0xfca2('0x98')]['findAll'](_0x1db3dd);})[_0xfca2('0x1f')](function(_0x1e53f5){_0x2aedc7[_0xfca2('0x5a')]=_0x1e53f5;return _0x2aedc7;});}})[_0xfca2('0x1f')](respondWithFilteredResult(_0x4bfa74,_0x1db3dd))[_0xfca2('0x29')](handleError(_0x4bfa74,null));};exports[_0xfca2('0x3a')]=function(_0x2978eb,_0x149e59,_0x4c38eb){var _0x235801,_0x359bbc={},_0x50a93c;if(_0x2978eb[_0xfca2('0x60')]['to']){_0x50a93c=_0x2978eb['body']['to'][_0xfca2('0x9a')](',')[0x0];}return db['MailAccount'][_0xfca2('0x5f')]({'where':{'id':_0x2978eb[_0xfca2('0x5c')]['id']},'include':[{'model':db[_0xfca2('0x9c')],'as':_0xfca2('0x9d'),'include':[{'model':db['CmContact'],'as':_0xfca2('0x9e'),'where':{'email':_0x50a93c},'limit':0x1,'order':[[_0xfca2('0x9f'),_0xfca2('0xa0')]]}]},{'model':db['MailServerOut'],'as':_0xfca2('0x3f'),'raw':!![]}]})[_0xfca2('0x1f')](handleEntityNotFound(_0x149e59,null))['then'](function(_0x52917c){if(_0x52917c){_0x235801=_0x52917c;if(_0x52917c[_0xfca2('0x3f')]){if(_['isNil'](_0x2978eb[_0xfca2('0x60')]['from'])){_0x2978eb['body'][_0xfca2('0xa1')]=util[_0xfca2('0x9b')](_0xfca2('0xa2'),_0x52917c[_0xfca2('0x39')],_0x52917c[_0xfca2('0xa3')]||_0x52917c['Smtp'][_0xfca2('0x72')]);}if(_0x2978eb[_0xfca2('0x60')][_0xfca2('0xa4')]&&_0x2978eb[_0xfca2('0x60')]['attachments'][_0xfca2('0x5d')]){for(var _0x60fa23=0x0;_0x60fa23<_0x2978eb[_0xfca2('0x60')][_0xfca2('0xa4')][_0xfca2('0x5d')];_0x60fa23+=0x1){_0x2978eb['body'][_0xfca2('0xa4')][_0x60fa23]={'filename':_0x2978eb[_0xfca2('0x60')][_0xfca2('0xa4')][_0x60fa23][_0xfca2('0x39')],'path':path['join'](config[_0xfca2('0xa5')],_0xfca2('0xa6'),_0x2978eb[_0xfca2('0x60')][_0xfca2('0xa4')][_0x60fa23][_0xfca2('0xa7')])};}}var _0x8a0878={'tls':{'rejectUnauthorized':![]}};if(_[_0xfca2('0x71')](_0x52917c[_0xfca2('0x3f')][_0xfca2('0x79')])){if(_0x52917c[_0xfca2('0x3f')][_0xfca2('0x76')]){_0x8a0878[_0xfca2('0xa8')]={'user':_0x52917c['Smtp'][_0xfca2('0x72')],'pass':_0x52917c[_0xfca2('0x3f')]['pass']};}_0x8a0878[_0xfca2('0x77')]=_0x52917c[_0xfca2('0x3f')][_0xfca2('0x77')];_0x8a0878[_0xfca2('0x78')]=_0x52917c[_0xfca2('0x3f')]['port'];_0x8a0878[_0xfca2('0xa9')]=_0x52917c[_0xfca2('0x3f')]['secure'];}else{_0x8a0878['service']=_0x52917c['Smtp'][_0xfca2('0x79')];_0x8a0878[_0xfca2('0xa8')]={'user':_0x52917c[_0xfca2('0x3f')]['user'],'pass':_0x52917c[_0xfca2('0x3f')][_0xfca2('0x75')]};}return respondWithRpcPromise(_0xfca2('0xaa'),_0xfca2('0xab'),{'account':_0x8a0878,'message':_0x2978eb[_0xfca2('0x60')]});}else{throw new Error(_0xfca2('0xac'));}}})[_0xfca2('0x1f')](function(_0x167b55){if(_0x167b55){_0x359bbc=_0x167b55;if(_0x235801[_0xfca2('0x9d')]){if(_0x235801['List'][_0xfca2('0x9e')][_0xfca2('0x5d')]){return _0x235801['List'][_0xfca2('0x9e')][0x0];}else{return db[_0xfca2('0xad')]['create'](_[_0xfca2('0x19')](_0x2978eb[_0xfca2('0x60')],{'firstName':_0x2978eb[_0xfca2('0x60')]['to'],'email':_0x2978eb[_0xfca2('0x60')]['to'],'phone':_0x2978eb['body']['to'],'ListId':_0x235801['ListId']}));}}else{throw new Error(_0xfca2('0xac'));}}})['then'](function(_0x5278c3){if(_0x5278c3){var _0x668ec4={'UserId':_0x2978eb[_0xfca2('0x72')]['id'],'ContactId':_0x5278c3['id'],'MailAccountId':_0x235801['id'],'inReplyTo':_0x359bbc[_0xfca2('0xae')],'to':_0x2978eb[_0xfca2('0x60')]['from'],'cc':_0x2978eb[_0xfca2('0x60')]['cc'],'subject':_0x2978eb[_0xfca2('0x60')][_0xfca2('0xaf')],'attach':_0x2978eb[_0xfca2('0x60')][_0xfca2('0xb0')],'firstMsgDirection':_0xfca2('0xb1'),'lastMsgAt':moment()[_0xfca2('0x9b')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0xfca2('0xb1'),'lastMsgBody':_0x2978eb[_0xfca2('0x60')][_0xfca2('0x60')],'Messages':[_[_0xfca2('0x51')](_0x2978eb[_0xfca2('0x60')],{'messageId':_0x359bbc['messageId'],'sentAt':moment()[_0xfca2('0x9b')](_0xfca2('0xb2')),'read':!![],'MailAccountId':_0x235801['id'],'UserId':_0x2978eb['user']['id'],'ContactId':_0x5278c3['id']})]};if(_0x2978eb[_0xfca2('0x60')]['Interaction']){_0x668ec4=_[_0xfca2('0x51')](_0x668ec4,_0x2978eb['body'][_0xfca2('0xb3')]);}return db['MailInteraction'][_0xfca2('0x6c')](_0x668ec4,{'include':[{'model':db[_0xfca2('0x98')],'as':'Messages'}]});}})['then'](respondWithResult(_0x149e59,null))[_0xfca2('0x29')](handleError(_0x149e59,null));};exports[_0xfca2('0xb4')]=function(_0xe1ae57,_0x355520,_0x401155){return db[_0xfca2('0x40')][_0xfca2('0x5f')]({'where':{'id':_0xe1ae57[_0xfca2('0x5c')]['id']},'include':[{'model':db['MailServerOut'],'as':_0xfca2('0x3f'),'raw':!![]}]})[_0xfca2('0x1f')](handleEntityNotFound(_0x355520,null))['then'](function(_0x3c566f){if(_0x3c566f&&_0x3c566f[_0xfca2('0x3f')]){var _0x5c4253={'id':_0x3c566f['id'],'tls':{'rejectUnauthorized':![]}};if(_0x3c566f[_0xfca2('0x3f')][_0xfca2('0x79')]){_0x5c4253[_0xfca2('0x79')]=_0x3c566f[_0xfca2('0x3f')][_0xfca2('0x79')];}else{_0x5c4253[_0xfca2('0x77')]=_0x3c566f[_0xfca2('0x3f')][_0xfca2('0x77')];_0x5c4253[_0xfca2('0x78')]=_0x3c566f[_0xfca2('0x3f')][_0xfca2('0x78')];_0x5c4253[_0xfca2('0xa9')]=_0x3c566f[_0xfca2('0x3f')]['secure'];}if(_0x3c566f[_0xfca2('0x3f')][_0xfca2('0x76')]){_0x5c4253[_0xfca2('0xa8')]={'user':_0x3c566f[_0xfca2('0x3f')][_0xfca2('0x72')],'pass':_0x3c566f[_0xfca2('0x3f')][_0xfca2('0x75')]};}return respondWithRpcPromise(_0xfca2('0xb5'),'verifySmtp',{'account':_0x5c4253});}})['then'](respondWithResult(_0x355520,null))[_0xfca2('0x29')](handleError(_0x355520,null));};exports['destroy']=function(_0x349dbb,_0x1e7d1c){return db[_0xfca2('0x40')][_0xfca2('0x5f')]({'where':{'id':_0x349dbb['params']['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x1e7d1c,null))['then'](function(_0x190e96){if(_0x190e96&&_0x190e96[_0xfca2('0x79')]){throw new db[(_0xfca2('0xb6'))][(_0xfca2('0xb7'))](_0xfca2('0xb8'));}return _0x190e96;})[_0xfca2('0x1f')](removeEntity(_0x1e7d1c,null))[_0xfca2('0x29')](handleError(_0x1e7d1c,null));};exports[_0xfca2('0xb9')]=function(_0x2f0f82,_0x3bb157,_0x503c9c){return db['MailAccount'][_0xfca2('0x5f')]({'where':{'id':_0x2f0f82[_0xfca2('0x5c')]['id']}})['then'](handleEntityNotFound(_0x3bb157,null))[_0xfca2('0x1f')](function(_0x5704ed){if(_0x5704ed){return _0x5704ed[_0xfca2('0xb9')](_0x2f0f82[_0xfca2('0x60')][_0xfca2('0x69')],_[_0xfca2('0x88')](_0x2f0f82[_0xfca2('0x60')],[_0xfca2('0x69'),'id'])||{})[_0xfca2('0xba')](function(_0x4bd14c){for(var _0x27cf52=0x0;_0x27cf52<_0x2f0f82[_0xfca2('0x60')]['ids'][_0xfca2('0x5d')];_0x27cf52+=0x1){socket['emit']('userMailAccount:save',{'UserId':_0x2f0f82['body'][_0xfca2('0x69')][_0x27cf52],'MailAccountId':_0x2f0f82['params']['id']});}return _0x4bd14c;});}})[_0xfca2('0x1f')](respondWithResult(_0x3bb157,null))['catch'](handleError(_0x3bb157,null));};exports[_0xfca2('0xbb')]=function(_0xe57ac1,_0x3f5f29,_0x4c8488){var _0x140808;return db[_0xfca2('0x40')][_0xfca2('0x5f')]({'where':{'id':_0xe57ac1[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x3f5f29,null))[_0xfca2('0x1f')](function(_0x54a518){if(_0x54a518){return _0x54a518[_0xfca2('0xbb')](_0xe57ac1['query'][_0xfca2('0x69')])[_0xfca2('0x1f')](function(_0xffb63e){if(_[_0xfca2('0xbc')](_0xe57ac1[_0xfca2('0x44')][_0xfca2('0x69')])){for(var _0x2098ac=0x0;_0x2098ac<_0xe57ac1['query'][_0xfca2('0x69')][_0xfca2('0x5d')];_0x2098ac+=0x1){socket['emit']('userMailAccount:remove',{'UserId':_0xe57ac1[_0xfca2('0x44')]['ids'][_0x2098ac],'MailAccountId':_0xe57ac1['params']['id']});}}else{socket[_0xfca2('0xbd')](_0xfca2('0xbe'),{'UserId':_0xe57ac1[_0xfca2('0x44')][_0xfca2('0x69')],'MailAccountId':_0xe57ac1[_0xfca2('0x5c')]['id']});}});}})[_0xfca2('0x1f')](respondWithStatusCode(_0x3f5f29,null))[_0xfca2('0x29')](handleError(_0x3f5f29,null));};exports['getAgents']=function(_0x1e03e2,_0x243758,_0x510695){var _0x40e3a1={};var _0x4a176f={};var _0x3049db;var _0x211c52;return db[_0xfca2('0x40')][_0xfca2('0x65')]({'where':{'id':_0x1e03e2[_0xfca2('0x5c')]['id']}})[_0xfca2('0x1f')](handleEntityNotFound(_0x243758,null))[_0xfca2('0x1f')](function(_0x4a41bc){if(_0x4a41bc){_0x3049db=_0x4a41bc;_0x4a176f[_0xfca2('0x42')]=_[_0xfca2('0x43')](db[_0xfca2('0x8b')][_0xfca2('0x41')]);_0x4a176f[_0xfca2('0x44')]=_[_0xfca2('0x43')](_0x1e03e2[_0xfca2('0x44')]);_0x4a176f[_0xfca2('0x47')]=_[_0xfca2('0x49')](_0x4a176f[_0xfca2('0x42')],_0x4a176f[_0xfca2('0x44')]);_0x40e3a1[_0xfca2('0x48')]=_[_0xfca2('0x49')](_0x4a176f['model'],qs[_0xfca2('0x4a')](_0x1e03e2[_0xfca2('0x44')][_0xfca2('0x4a')]));_0x40e3a1[_0xfca2('0x48')]=_0x40e3a1[_0xfca2('0x48')][_0xfca2('0x5d')]?_0x40e3a1[_0xfca2('0x48')]:_0x4a176f[_0xfca2('0x42')];_0x40e3a1[_0xfca2('0x4d')]=qs['sort'](_0x1e03e2[_0xfca2('0x44')]['sort']);_0x40e3a1[_0xfca2('0x4f')]=qs[_0xfca2('0x47')](_[_0xfca2('0x6e')](_0x1e03e2['query'],_0x4a176f[_0xfca2('0x47')]));if(_0x1e03e2[_0xfca2('0x44')][_0xfca2('0x56')]){_0x40e3a1[_0xfca2('0x4f')]=_['merge'](_0x40e3a1[_0xfca2('0x4f')],{'$or':_[_0xfca2('0x52')](_0x40e3a1[_0xfca2('0x48')],function(_0x3d149f){var _0x5d80ed={};_0x5d80ed[_0x3d149f]={'$like':'%'+_0x1e03e2[_0xfca2('0x44')][_0xfca2('0x56')]+'%'};return _0x5d80ed;})});}_0x40e3a1=_[_0xfca2('0x51')]({},_0x40e3a1,_0x1e03e2[_0xfca2('0x5e')]);return _0x3049db['getAgents'](_0x40e3a1);}})[_0xfca2('0x1f')](function(_0x4c3e4e){if(_0x4c3e4e){_0x211c52=_0x4c3e4e[_0xfca2('0x5d')];if(!_0x1e03e2[_0xfca2('0x44')][_0xfca2('0x4b')]('nolimit')){_0x40e3a1[_0xfca2('0x4c')]=qs[_0xfca2('0x4c')](_0x1e03e2[_0xfca2('0x44')][_0xfca2('0x4c')]);_0x40e3a1[_0xfca2('0x2e')]=qs[_0xfca2('0x2e')](_0x1e03e2[_0xfca2('0x44')][_0xfca2('0x2e')]);}return _0x3049db['getAgents'](_0x40e3a1);}})['then'](function(_0x25c875){if(_0x25c875){return _0x25c875?{'count':_0x211c52,'rows':_0x25c875}:null;}})[_0xfca2('0x1f')](respondWithResult(_0x243758,null))[_0xfca2('0x29')](handleError(_0x243758,null));};
\ No newline at end of file
index 3f49bf0..753f64e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca6d=['emit','hook','setMaxListeners','save','update','remove'];(function(_0x2dc2bf,_0x445916){var _0x5d1be8=function(_0x9577bd){while(--_0x9577bd){_0x2dc2bf['push'](_0x2dc2bf['shift']());}};_0x5d1be8(++_0x445916);}(_0xca6d,0x1ee));var _0xdca6=function(_0x569407,_0x115d0f){_0x569407=_0x569407-0x0;var _0x51d1e3=_0xca6d[_0x569407];return _0x51d1e3;};'use strict';var EventEmitter=require('events');var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xdca6('0x0')](0x0);var events={'afterCreate':_0xdca6('0x1'),'afterUpdate':_0xdca6('0x2'),'afterDestroy':_0xdca6('0x3')};function emitEvent(_0x49fda4){return function(_0x442383,_0xf051b0,_0x40ae21){MailAccountEvents[_0xdca6('0x4')](_0x49fda4+':'+_0x442383['id'],_0x442383);MailAccountEvents[_0xdca6('0x4')](_0x49fda4,_0x442383);_0x40ae21(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0xdca6('0x5')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0x5fc4=['MailAccount','setMaxListeners','save','update','remove','emit','hook','events','../../mysqldb'];(function(_0x2dfa1f,_0x234b78){var _0x4f0528=function(_0x1406c6){while(--_0x1406c6){_0x2dfa1f['push'](_0x2dfa1f['shift']());}};_0x4f0528(++_0x234b78);}(_0x5fc4,0xa9));var _0x45fc=function(_0x228af0,_0x4e0026){_0x228af0=_0x228af0-0x0;var _0x1a450e=_0x5fc4[_0x228af0];return _0x1a450e;};'use strict';var EventEmitter=require(_0x45fc('0x0'));var MailAccount=require(_0x45fc('0x1'))['db'][_0x45fc('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x45fc('0x3')](0x0);var events={'afterCreate':_0x45fc('0x4'),'afterUpdate':_0x45fc('0x5'),'afterDestroy':_0x45fc('0x6')};function emitEvent(_0x1ab130){return function(_0x28f34f,_0x35d05a,_0x3f95d0){MailAccountEvents[_0x45fc('0x7')](_0x1ab130+':'+_0x28f34f['id'],_0x28f34f);MailAccountEvents[_0x45fc('0x7')](_0x1ab130,_0x28f34f);_0x3f95d0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0x45fc('0x8')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index d9d7839..e1ef5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d3d=['MailAccount','moment','bluebird','request-promise','./mailAccount.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4d3d,0xc5));var _0xd4d3=function(_0x1af8d3,_0x544d86){_0x1af8d3=_0x1af8d3-0x0;var _0x3a50c5=_0x4d3d[_0x1af8d3];return _0x3a50c5;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xd4d3('0x0'));var BPromise=require(_0xd4d3('0x1'));var rp=require(_0xd4d3('0x2'));var attributes=require(_0xd4d3('0x3'));module[_0xd4d3('0x4')]=function(_0x43e11b,_0x145fb7){return _0x43e11b[_0xd4d3('0x5')](_0xd4d3('0x6'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x285e=['request-promise','./mailAccount.attributes','exports','MailAccount','mail_accounts','util','api','bluebird'];(function(_0x1174d3,_0x17fe65){var _0xb58ebd=function(_0x32835f){while(--_0x32835f){_0x1174d3['push'](_0x1174d3['shift']());}};_0xb58ebd(++_0x17fe65);}(_0x285e,0x11d));var _0xe285=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x285e[_0x2e4e19];return _0x9ba20b;};'use strict';var _=require('lodash');var util=require(_0xe285('0x0'));var logger=require('../../config/logger')(_0xe285('0x1'));var moment=require('moment');var BPromise=require(_0xe285('0x2'));var rp=require(_0xe285('0x3'));var attributes=require(_0xe285('0x4'));module[_0xe285('0x5')]=function(_0x29b2ab,_0x5d46f8){return _0x29b2ab['define'](_0xe285('0x6'),attributes,{'tableName':_0xe285('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1cda6bf..af9492e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae6b=['catch','GetMailAccount','findAll','raw','options','where','attributes','limit','map','include','model','stringify','ShowMailAccount','NotifyMailAccount','body','difference','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','account','List','Contacts','DESC','Applications','MailServerOut','Smtp','get','omit','applications','orderBy','priority','asc','autoclose','length','close','create','List\x20not\x20found','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','find','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','update','interaction','created','contact','attachments','originTo','bcc','Attachment','Attachments','User','name','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','MailAccount,\x20%s,\x20%s','message','result'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xae6b,0x1ee));var _0xbae6=function(_0x240289,_0x2b1170){_0x240289=_0x240289-0x0;var _0x242b43=_0xae6b[_0x240289];return _0x242b43;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbae6('0x0'));var BPromise=require('bluebird');var rs=require(_0xbae6('0x1'));var fs=require('fs');var Redis=require(_0xbae6('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xbae6('0x3'));var logger=require(_0xbae6('0x4'))('rpc');var config=require(_0xbae6('0x5'));var jayson=require(_0xbae6('0x6'));var client=jayson[_0xbae6('0x7')][_0xbae6('0x8')]({'port':0x232c});config[_0xbae6('0x9')]=_[_0xbae6('0xa')](config['redis'],{'host':_0xbae6('0xb'),'port':0x18eb});var socket=require(_0xbae6('0xc'))(new Redis(config['redis']));require(_0xbae6('0xd'))[_0xbae6('0xe')](socket);function respondWithRpcPromise(_0x408a59,_0x10670,_0x1da160){return new BPromise(function(_0x3547d1,_0x27cbc8){return client[_0xbae6('0xf')](_0x408a59,_0x1da160)[_0xbae6('0x10')](function(_0x53de7c){logger[_0xbae6('0x11')]('MailAccount,\x20%s,\x20%s',_0x10670,_0xbae6('0x12'));logger[_0xbae6('0x13')](_0xbae6('0x14'),_0x10670,_0xbae6('0x12'),JSON['stringify'](_0x53de7c));if(_0x53de7c[_0xbae6('0x15')]){if(_0x53de7c[_0xbae6('0x15')][_0xbae6('0x16')]===0x1f4){logger[_0xbae6('0x15')](_0xbae6('0x17'),_0x10670,_0x53de7c['error']['message']);return _0x27cbc8(_0x53de7c[_0xbae6('0x15')][_0xbae6('0x18')]);}logger['error'](_0xbae6('0x17'),_0x10670,_0x53de7c['error'][_0xbae6('0x18')]);return _0x3547d1(_0x53de7c['error']['message']);}else{logger[_0xbae6('0x11')](_0xbae6('0x17'),_0x10670,_0xbae6('0x12'));_0x3547d1(_0x53de7c[_0xbae6('0x19')]['message']);}})[_0xbae6('0x1a')](function(_0x29cae9){logger['error']('MailAccount,\x20%s,\x20%s',_0x10670,_0x29cae9);_0x27cbc8(_0x29cae9);});});}exports[_0xbae6('0x1b')]=function(_0x27629d){var _0x347b27=this;return new Promise(function(_0x1c7936,_0x30d315){return db['MailAccount'][_0xbae6('0x1c')]({'raw':_0x27629d['options']?_0x27629d['options'][_0xbae6('0x1d')]===undefined?!![]:![]:!![],'where':_0x27629d['options']?_0x27629d[_0xbae6('0x1e')][_0xbae6('0x1f')]||null:null,'attributes':_0x27629d[_0xbae6('0x1e')]?_0x27629d[_0xbae6('0x1e')][_0xbae6('0x20')]||null:null,'limit':_0x27629d[_0xbae6('0x1e')]?_0x27629d[_0xbae6('0x1e')][_0xbae6('0x21')]||null:null,'include':_0x27629d['options']?_0x27629d[_0xbae6('0x1e')]['include']?_[_0xbae6('0x22')](_0x27629d[_0xbae6('0x1e')][_0xbae6('0x23')],function(_0x547a90){return{'model':db[_0x547a90[_0xbae6('0x24')]],'as':_0x547a90['as'],'attributes':_0x547a90['attributes'],'include':_0x547a90['include']?_[_0xbae6('0x22')](_0x547a90[_0xbae6('0x23')],function(_0x24d6b1){return{'model':db[_0x24d6b1[_0xbae6('0x24')]],'as':_0x24d6b1['as'],'attributes':_0x24d6b1[_0xbae6('0x20')],'include':_0x24d6b1[_0xbae6('0x23')]?_['map'](_0x24d6b1[_0xbae6('0x23')],function(_0x5e0f26){return{'model':db[_0x5e0f26[_0xbae6('0x24')]],'as':_0x5e0f26['as'],'attributes':_0x5e0f26[_0xbae6('0x20')]};}):[]};}):[]};}):[]:[]})[_0xbae6('0x10')](function(_0x25069a){logger[_0xbae6('0x11')](_0xbae6('0x1b'),_0x27629d);logger[_0xbae6('0x13')](_0xbae6('0x1b'),_0x27629d,JSON[_0xbae6('0x25')](_0x25069a));_0x1c7936(_0x25069a);})[_0xbae6('0x1a')](function(_0x4605f6){logger[_0xbae6('0x15')](_0xbae6('0x1b'),_0x4605f6[_0xbae6('0x18')],_0x27629d);_0x30d315(_0x347b27[_0xbae6('0x15')](0x1f4,_0x4605f6['message']));});});};exports['ShowMailAccount']=function(_0x54cae7){var _0x14acf9=this;return new Promise(function(_0x596520,_0x4fda4c){return db['MailAccount']['find']({'raw':_0x54cae7['options']?_0x54cae7[_0xbae6('0x1e')][_0xbae6('0x1d')]===undefined?!![]:![]:!![],'where':_0x54cae7[_0xbae6('0x1e')]?_0x54cae7['options'][_0xbae6('0x1f')]||null:null,'attributes':_0x54cae7[_0xbae6('0x1e')]?_0x54cae7['options']['attributes']||null:null,'include':_0x54cae7[_0xbae6('0x1e')]?_0x54cae7['options']['include']?_[_0xbae6('0x22')](_0x54cae7[_0xbae6('0x1e')][_0xbae6('0x23')],function(_0x29aa04){return{'model':db[_0x29aa04['model']],'as':_0x29aa04['as'],'attributes':_0x29aa04['attributes'],'include':_0x29aa04[_0xbae6('0x23')]?_[_0xbae6('0x22')](_0x29aa04[_0xbae6('0x23')],function(_0x12f396){return{'model':db[_0x12f396[_0xbae6('0x24')]],'as':_0x12f396['as'],'attributes':_0x12f396[_0xbae6('0x20')],'include':_0x12f396[_0xbae6('0x23')]?_[_0xbae6('0x22')](_0x12f396[_0xbae6('0x23')],function(_0x26b701){return{'model':db[_0x26b701[_0xbae6('0x24')]],'as':_0x26b701['as'],'attributes':_0x26b701[_0xbae6('0x20')]};}):[]};}):[]};}):[]:[]})[_0xbae6('0x10')](function(_0x4e2cf0){logger[_0xbae6('0x11')]('ShowMailAccount',_0x54cae7);logger[_0xbae6('0x13')](_0xbae6('0x26'),_0x54cae7,JSON[_0xbae6('0x25')](_0x4e2cf0));_0x596520(_0x4e2cf0);})[_0xbae6('0x1a')](function(_0x28b0d7){logger[_0xbae6('0x15')](_0xbae6('0x26'),_0x28b0d7[_0xbae6('0x18')],_0x54cae7);_0x4fda4c(_0x14acf9[_0xbae6('0x15')](0x1f4,_0x28b0d7[_0xbae6('0x18')]));});});};exports[_0xbae6('0x27')]=function(_0x19b9f0){var _0x3e8b13=this;return new Promise(function(_0x406103,_0x368a99){var _0x58bde7={'body':_0x19b9f0[_0xbae6('0x28')],'channel':'mail'};var _0x1c18ac=_[_0xbae6('0x29')](_['keys'](db[_0xbae6('0x2a')][_0xbae6('0x2b')]),[_0xbae6('0x2c'),_0xbae6('0x2d'),_0xbae6('0x2e'),_0xbae6('0x2f')]);var _0x44c589=![];if(_0x19b9f0[_0xbae6('0x28')]['id']){delete _0x19b9f0[_0xbae6('0x28')]['id'];}if(_[_0xbae6('0x30')](_0x19b9f0['body'][_0xbae6('0x31')])){return _0x368a99(_0x3e8b13['error'](0x1f4,_0xbae6('0x32')));}if(_['isNil'](_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x28')])||_0x19b9f0[_0xbae6('0x28')]['body']===''){return _0x368a99(_0x3e8b13['error'](0x1f4,_0xbae6('0x33')));}if(_[_0xbae6('0x30')](_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x34')])){return _0x368a99(_0x3e8b13['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1c18ac));}if(!_[_0xbae6('0x35')](_0x1c18ac,_0x19b9f0[_0xbae6('0x28')]['mapKey'])){return _0x368a99(_0x3e8b13[_0xbae6('0x15')](0x1f4,_0xbae6('0x36')+_0x1c18ac));}var _0x4c15c3={};_0x4c15c3[_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x34')]]=_0x19b9f0[_0xbae6('0x28')]['from'];return db[_0xbae6('0x37')]['find']({'where':{'id':_0x19b9f0[_0xbae6('0x38')]['id']},'include':[{'model':db['CmList'],'as':_0xbae6('0x39'),'include':[{'model':db['CmContact'],'as':_0xbae6('0x3a'),'where':_0x4c15c3,'limit':0x1,'order':[[_0xbae6('0x2d'),_0xbae6('0x3b')]]}]},{'model':db['MailApplication'],'as':_0xbae6('0x3c')},{'model':db[_0xbae6('0x3d')],'as':_0xbae6('0x3e')}]})[_0xbae6('0x10')](function(_0x22a094){if(_0x22a094&&_0x22a094[_0xbae6('0x39')]){var _0x86513e=_0x22a094[_0xbae6('0x3f')]({'plain':!![]});_0x58bde7['account']=_[_0xbae6('0x40')](_0x86513e,[_0xbae6('0x3c'),_0xbae6('0x39')]);_0x58bde7[_0xbae6('0x41')]=_0x86513e[_0xbae6('0x3c')];_0x58bde7['list']=_0x86513e[_0xbae6('0x39')];_0x58bde7[_0xbae6('0x41')]=_[_0xbae6('0x42')](_0x58bde7[_0xbae6('0x41')],[_0xbae6('0x43')],[_0xbae6('0x44')]);if(_0x58bde7['account']&&_0x58bde7['account'][_0xbae6('0x45')]){_0x58bde7[_0xbae6('0x41')]['push']({'id':0x0,'priority':_0x58bde7['applications'][_0xbae6('0x46')]+0x1,'app':_0xbae6('0x47'),'appdata':_0xbae6('0x45'),'interval':'*,*,*,*'});}if(_0x58bde7[_0xbae6('0x38')][_0xbae6('0x3c')]){delete _0x58bde7['account'][_0xbae6('0x3c')];}if(_0x58bde7['account'][_0xbae6('0x39')]){delete _0x58bde7[_0xbae6('0x38')]['List'];}if(_0x86513e[_0xbae6('0x39')]['Contacts'][_0xbae6('0x46')]){return _0x86513e[_0xbae6('0x39')][_0xbae6('0x3a')][0x0];}var _0x1fbe6e=_[_0xbae6('0xa')](_0x19b9f0[_0xbae6('0x28')],{'firstName':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x31')],'ListId':_0x86513e['ListId']});_0x1fbe6e[_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x34')]]=_0x19b9f0['body'][_0xbae6('0x31')];return db[_0xbae6('0x2a')][_0xbae6('0x48')](_0x1fbe6e);}else{throw new Error(_0xbae6('0x49'));}})['then'](function(_0x44d3e1){_0x58bde7['contact']=_0x44d3e1;if(_0x44d3e1){if(!_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x4a')]){_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x4a')]=rs[_0xbae6('0x4b')]()+'\x20'+_0x19b9f0['body'][_0xbae6('0x18')][_0xbae6('0x31')];}var _0x1bc5a8={'ContactId':_0x44d3e1['id'],'MailAccountId':_0x19b9f0[_0xbae6('0x38')]['id'],'inReplyTo':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x4a')],'to':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x31')],'cc':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')]['cc'],'subject':_0x19b9f0['body']['message'][_0xbae6('0x4c')],'attach':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x4d')],'lastMsgAt':moment()[_0xbae6('0x4e')](_0xbae6('0x4f')),'lastMsgDirection':'in','lastMsgBody':_0x19b9f0['body'][_0xbae6('0x28')]};return db[_0xbae6('0x50')][_0xbae6('0x51')]({'where':{'closed':![],'MailAccountId':_0x19b9f0[_0xbae6('0x38')]['id']},'include':[{'model':db[_0xbae6('0x52')],'as':_0xbae6('0x53'),'attributes':[_0xbae6('0x4a')],'where':{'messageId':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x54')]}}]})['then'](function(_0xa8e69e){if(_0xa8e69e){return[_0xa8e69e,![]];}return db['MailInteraction'][_0xbae6('0x48')](_0x1bc5a8)[_0xbae6('0x10')](function(_0x31115c){return[_0x31115c,!![]];});});}else{throw new Error(_0xbae6('0x55'));}})['spread'](function(_0x411c9b,_0x37c4e9){if(_0x411c9b){_0x44c589=_0x37c4e9;if(!_0x37c4e9){return _0x411c9b[_0xbae6('0x56')]({'inReplyTo':_0x19b9f0['body']['message'][_0xbae6('0x4a')],'to':_0x19b9f0[_0xbae6('0x28')]['message'][_0xbae6('0x31')],'cc':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')]['cc'],'subject':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x4c')],'attach':_0x411c9b['attach']?_0x411c9b['attach']:_0x19b9f0['body']['message'][_0xbae6('0x4d')],'substatus':null,'substatusAt':moment()[_0xbae6('0x4e')](_0xbae6('0x4f')),'lastMsgAt':moment()[_0xbae6('0x4e')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in','lastMsgBody':_0x19b9f0['body'][_0xbae6('0x28')]});}else{return _0x411c9b;}}})['then'](function(_0xf1d9d4){_0x58bde7[_0xbae6('0x57')]=_0xf1d9d4[_0xbae6('0x3f')]({'plain':!![]});_0x58bde7[_0xbae6('0x57')][_0xbae6('0x58')]=_0x44c589;return db['MailMessage'][_0xbae6('0x48')]({'body':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x28')],'MailAccountId':_0x19b9f0[_0xbae6('0x38')]['id'],'MailInteractionId':_0xf1d9d4['id'],'direction':'in','ContactId':_0x58bde7[_0xbae6('0x59')]['id'],'messageId':_0x19b9f0['body']['message'][_0xbae6('0x4a')],'from':_0x19b9f0['body'][_0xbae6('0x18')][_0xbae6('0x31')],'to':_0x19b9f0[_0xbae6('0x28')]['message']['to'],'cc':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')]['cc'],'subject':_0x19b9f0[_0xbae6('0x28')]['message']['subject'],'attach':_0x19b9f0[_0xbae6('0x28')]['message'][_0xbae6('0x4d')],'Attachments':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x5a')],'originTo':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x5b')],'originCc':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')]['originCc'],'bcc':_0x19b9f0[_0xbae6('0x28')][_0xbae6('0x18')][_0xbae6('0x5c')]},{'include':[{'model':db[_0xbae6('0x5d')],'as':_0xbae6('0x5e')}]});})[_0xbae6('0x10')](function(_0x194a68){_0x58bde7[_0xbae6('0x18')]=_0x194a68;if(_0x58bde7[_0xbae6('0x57')]['UserId']){return db[_0xbae6('0x5f')][_0xbae6('0x51')]({'attributes':['id',_0xbae6('0x60')],'where':{'id':_0x58bde7[_0xbae6('0x57')][_0xbae6('0x61')]}})[_0xbae6('0x10')](function(_0x490f0f){if(_0x490f0f){_0x58bde7['applications'][_0xbae6('0x62')]({'id':0x0,'priority':0x0,'app':_0xbae6('0x63'),'appdata':_0x490f0f[_0xbae6('0x60')]+','+(_0x58bde7['account'][_0xbae6('0x64')]||0xa),'interval':_0xbae6('0x65')});}return respondWithRpcPromise(_0xbae6('0x66'),_0xbae6('0x67'),_0x58bde7);});}return respondWithRpcPromise('Start',_0xbae6('0x67'),_0x58bde7);})['then'](function(_0x1221b9){_0x406103(_0x1221b9);})['catch'](function(_0x294750){_0x368a99(_0x3e8b13['error'](0x1f4,_0x294750['message']));});});};
\ No newline at end of file
+var _0x8a19=['messageId','generate','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','Contact\x20not\x20found','spread','update','subject','interaction','created','create','contact','attachments','originTo','originCc','bcc','Attachment','Attachments','User','name','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailAccount','MailAccount','findAll','options','attributes','limit','include','map','model','then','info','ShowMailAccount','raw','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','updatedAt','CompanyId','from','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','find','account','CmList','Contacts','DESC','Applications','MailServerOut','Smtp','get','omit','List','applications','orderBy','priority','autoclose','*,*,*,*','length','List\x20not\x20found'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x8a19,0xe8));var _0x98a1=function(_0x3b0025,_0x29991e){_0x3b0025=_0x3b0025-0x0;var _0x239bc8=_0x8a19[_0x3b0025];return _0x239bc8;};'use strict';var _=require('lodash');var util=require(_0x98a1('0x0'));var moment=require(_0x98a1('0x1'));var BPromise=require(_0x98a1('0x2'));var rs=require(_0x98a1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x98a1('0x4'))['db'];var utils=require(_0x98a1('0x5'));var logger=require('../../config/logger')(_0x98a1('0x6'));var config=require(_0x98a1('0x7'));var jayson=require(_0x98a1('0x8'));var client=jayson['client']['http']({'port':0x232c});config[_0x98a1('0x9')]=_[_0x98a1('0xa')](config[_0x98a1('0x9')],{'host':_0x98a1('0xb'),'port':0x18eb});var socket=require(_0x98a1('0xc'))(new Redis(config[_0x98a1('0x9')]));require(_0x98a1('0xd'))[_0x98a1('0xe')](socket);function respondWithRpcPromise(_0x4a2209,_0x4982f8,_0x4d802b){return new BPromise(function(_0x32bf1f,_0x3c95d5){return client[_0x98a1('0xf')](_0x4a2209,_0x4d802b)['then'](function(_0x206fd6){logger['info'](_0x98a1('0x10'),_0x4982f8,_0x98a1('0x11'));logger[_0x98a1('0x12')](_0x98a1('0x13'),_0x4982f8,_0x98a1('0x11'),JSON[_0x98a1('0x14')](_0x206fd6));if(_0x206fd6[_0x98a1('0x15')]){if(_0x206fd6[_0x98a1('0x15')][_0x98a1('0x16')]===0x1f4){logger[_0x98a1('0x15')](_0x98a1('0x10'),_0x4982f8,_0x206fd6[_0x98a1('0x15')][_0x98a1('0x17')]);return _0x3c95d5(_0x206fd6[_0x98a1('0x15')]['message']);}logger['error'](_0x98a1('0x10'),_0x4982f8,_0x206fd6['error'][_0x98a1('0x17')]);return _0x32bf1f(_0x206fd6[_0x98a1('0x15')]['message']);}else{logger['info'](_0x98a1('0x10'),_0x4982f8,_0x98a1('0x11'));_0x32bf1f(_0x206fd6['result'][_0x98a1('0x17')]);}})[_0x98a1('0x18')](function(_0x2ec10e){logger['error']('MailAccount,\x20%s,\x20%s',_0x4982f8,_0x2ec10e);_0x3c95d5(_0x2ec10e);});});}exports[_0x98a1('0x19')]=function(_0x97bf8){var _0x541b6e=this;return new Promise(function(_0x4cbb0a,_0x5b250a){return db[_0x98a1('0x1a')][_0x98a1('0x1b')]({'raw':_0x97bf8['options']?_0x97bf8['options']['raw']===undefined?!![]:![]:!![],'where':_0x97bf8[_0x98a1('0x1c')]?_0x97bf8[_0x98a1('0x1c')]['where']||null:null,'attributes':_0x97bf8[_0x98a1('0x1c')]?_0x97bf8[_0x98a1('0x1c')][_0x98a1('0x1d')]||null:null,'limit':_0x97bf8[_0x98a1('0x1c')]?_0x97bf8[_0x98a1('0x1c')][_0x98a1('0x1e')]||null:null,'include':_0x97bf8['options']?_0x97bf8[_0x98a1('0x1c')][_0x98a1('0x1f')]?_[_0x98a1('0x20')](_0x97bf8[_0x98a1('0x1c')]['include'],function(_0x1ff907){return{'model':db[_0x1ff907[_0x98a1('0x21')]],'as':_0x1ff907['as'],'attributes':_0x1ff907['attributes'],'include':_0x1ff907['include']?_[_0x98a1('0x20')](_0x1ff907[_0x98a1('0x1f')],function(_0x23f9e9){return{'model':db[_0x23f9e9[_0x98a1('0x21')]],'as':_0x23f9e9['as'],'attributes':_0x23f9e9[_0x98a1('0x1d')],'include':_0x23f9e9['include']?_[_0x98a1('0x20')](_0x23f9e9[_0x98a1('0x1f')],function(_0x5db428){return{'model':db[_0x5db428[_0x98a1('0x21')]],'as':_0x5db428['as'],'attributes':_0x5db428[_0x98a1('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x98a1('0x22')](function(_0x451508){logger[_0x98a1('0x23')](_0x98a1('0x19'),_0x97bf8);logger[_0x98a1('0x12')](_0x98a1('0x19'),_0x97bf8,JSON[_0x98a1('0x14')](_0x451508));_0x4cbb0a(_0x451508);})['catch'](function(_0x5486b6){logger['error'](_0x98a1('0x19'),_0x5486b6['message'],_0x97bf8);_0x5b250a(_0x541b6e['error'](0x1f4,_0x5486b6[_0x98a1('0x17')]));});});};exports[_0x98a1('0x24')]=function(_0x2b0e76){var _0x1bce18=this;return new Promise(function(_0x37d8e0,_0x30b622){return db[_0x98a1('0x1a')]['find']({'raw':_0x2b0e76[_0x98a1('0x1c')]?_0x2b0e76[_0x98a1('0x1c')][_0x98a1('0x25')]===undefined?!![]:![]:!![],'where':_0x2b0e76[_0x98a1('0x1c')]?_0x2b0e76[_0x98a1('0x1c')]['where']||null:null,'attributes':_0x2b0e76[_0x98a1('0x1c')]?_0x2b0e76[_0x98a1('0x1c')][_0x98a1('0x1d')]||null:null,'include':_0x2b0e76[_0x98a1('0x1c')]?_0x2b0e76['options'][_0x98a1('0x1f')]?_['map'](_0x2b0e76[_0x98a1('0x1c')]['include'],function(_0x26083d){return{'model':db[_0x26083d['model']],'as':_0x26083d['as'],'attributes':_0x26083d['attributes'],'include':_0x26083d['include']?_[_0x98a1('0x20')](_0x26083d[_0x98a1('0x1f')],function(_0x446e76){return{'model':db[_0x446e76[_0x98a1('0x21')]],'as':_0x446e76['as'],'attributes':_0x446e76[_0x98a1('0x1d')],'include':_0x446e76['include']?_['map'](_0x446e76[_0x98a1('0x1f')],function(_0x4c6411){return{'model':db[_0x4c6411['model']],'as':_0x4c6411['as'],'attributes':_0x4c6411[_0x98a1('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x98a1('0x22')](function(_0x3183bc){logger['info'](_0x98a1('0x24'),_0x2b0e76);logger['debug']('ShowMailAccount',_0x2b0e76,JSON['stringify'](_0x3183bc));_0x37d8e0(_0x3183bc);})[_0x98a1('0x18')](function(_0x3bd6da){logger['error'](_0x98a1('0x24'),_0x3bd6da[_0x98a1('0x17')],_0x2b0e76);_0x30b622(_0x1bce18['error'](0x1f4,_0x3bd6da[_0x98a1('0x17')]));});});};exports[_0x98a1('0x26')]=function(_0xa5e6aa){var _0x2575f7=this;return new Promise(function(_0x18069e,_0x35cc6e){var _0x2425cb={'body':_0xa5e6aa[_0x98a1('0x27')],'channel':_0x98a1('0x28')};var _0x594b85=_[_0x98a1('0x29')](_[_0x98a1('0x2a')](db[_0x98a1('0x2b')]['rawAttributes']),[_0x98a1('0x2c'),_0x98a1('0x2d'),_0x98a1('0x2e'),'ListId']);var _0x359a7d=![];if(_0xa5e6aa[_0x98a1('0x27')]['id']){delete _0xa5e6aa[_0x98a1('0x27')]['id'];}if(_['isNil'](_0xa5e6aa['body'][_0x98a1('0x2f')])){return _0x35cc6e(_0x2575f7['error'](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x98a1('0x30')](_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x27')])||_0xa5e6aa['body']['body']===''){return _0x35cc6e(_0x2575f7[_0x98a1('0x15')](0x1f4,_0x98a1('0x31')));}if(_[_0x98a1('0x30')](_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x32')])){return _0x35cc6e(_0x2575f7[_0x98a1('0x15')](0x1f4,_0x98a1('0x33')+_0x594b85));}if(!_['includes'](_0x594b85,_0xa5e6aa[_0x98a1('0x27')]['mapKey'])){return _0x35cc6e(_0x2575f7['error'](0x1f4,_0x98a1('0x34')+_0x594b85));}var _0x29e952={};_0x29e952[_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x32')]]=_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x2f')];return db[_0x98a1('0x1a')][_0x98a1('0x35')]({'where':{'id':_0xa5e6aa[_0x98a1('0x36')]['id']},'include':[{'model':db[_0x98a1('0x37')],'as':'List','include':[{'model':db['CmContact'],'as':_0x98a1('0x38'),'where':_0x29e952,'limit':0x1,'order':[['updatedAt',_0x98a1('0x39')]]}]},{'model':db['MailApplication'],'as':_0x98a1('0x3a')},{'model':db[_0x98a1('0x3b')],'as':_0x98a1('0x3c')}]})[_0x98a1('0x22')](function(_0x43c335){if(_0x43c335&&_0x43c335['List']){var _0x3f0ec9=_0x43c335[_0x98a1('0x3d')]({'plain':!![]});_0x2425cb[_0x98a1('0x36')]=_[_0x98a1('0x3e')](_0x3f0ec9,[_0x98a1('0x3a'),_0x98a1('0x3f')]);_0x2425cb[_0x98a1('0x40')]=_0x3f0ec9[_0x98a1('0x3a')];_0x2425cb['list']=_0x3f0ec9[_0x98a1('0x3f')];_0x2425cb['applications']=_[_0x98a1('0x41')](_0x2425cb[_0x98a1('0x40')],[_0x98a1('0x42')],['asc']);if(_0x2425cb[_0x98a1('0x36')]&&_0x2425cb[_0x98a1('0x36')][_0x98a1('0x43')]){_0x2425cb['applications']['push']({'id':0x0,'priority':_0x2425cb[_0x98a1('0x40')]['length']+0x1,'app':'close','appdata':'autoclose','interval':_0x98a1('0x44')});}if(_0x2425cb[_0x98a1('0x36')][_0x98a1('0x3a')]){delete _0x2425cb['account'][_0x98a1('0x3a')];}if(_0x2425cb[_0x98a1('0x36')][_0x98a1('0x3f')]){delete _0x2425cb['account']['List'];}if(_0x3f0ec9[_0x98a1('0x3f')][_0x98a1('0x38')][_0x98a1('0x45')]){return _0x3f0ec9[_0x98a1('0x3f')][_0x98a1('0x38')][0x0];}var _0x5c254d=_[_0x98a1('0xa')](_0xa5e6aa['body'],{'firstName':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x2f')],'ListId':_0x3f0ec9['ListId']});_0x5c254d[_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x32')]]=_0xa5e6aa['body'][_0x98a1('0x2f')];return db['CmContact']['create'](_0x5c254d);}else{throw new Error(_0x98a1('0x46'));}})['then'](function(_0x559a79){_0x2425cb['contact']=_0x559a79;if(_0x559a79){if(!_0xa5e6aa['body'][_0x98a1('0x17')][_0x98a1('0x47')]){_0xa5e6aa[_0x98a1('0x27')]['message'][_0x98a1('0x47')]=rs[_0x98a1('0x48')]()+'\x20'+_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')][_0x98a1('0x2f')];}var _0x287151={'ContactId':_0x559a79['id'],'MailAccountId':_0xa5e6aa[_0x98a1('0x36')]['id'],'inReplyTo':_0xa5e6aa[_0x98a1('0x27')]['message'][_0x98a1('0x47')],'to':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')]['from'],'cc':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')]['cc'],'subject':_0xa5e6aa[_0x98a1('0x27')]['message']['subject'],'attach':_0xa5e6aa['body'][_0x98a1('0x17')][_0x98a1('0x49')],'lastMsgAt':moment()[_0x98a1('0x4a')](_0x98a1('0x4b')),'lastMsgDirection':'in','lastMsgBody':_0xa5e6aa[_0x98a1('0x27')]['body']};return db[_0x98a1('0x4c')]['find']({'where':{'closed':![],'MailAccountId':_0xa5e6aa[_0x98a1('0x36')]['id']},'include':[{'model':db[_0x98a1('0x4d')],'as':_0x98a1('0x4e'),'attributes':[_0x98a1('0x47')],'where':{'messageId':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')]['inReplyTo']}}]})[_0x98a1('0x22')](function(_0x5c7466){if(_0x5c7466){return[_0x5c7466,![]];}return db[_0x98a1('0x4c')]['create'](_0x287151)['then'](function(_0x4924d8){return[_0x4924d8,!![]];});});}else{throw new Error(_0x98a1('0x4f'));}})[_0x98a1('0x50')](function(_0xd6d274,_0x57c746){if(_0xd6d274){_0x359a7d=_0x57c746;if(!_0x57c746){return _0xd6d274[_0x98a1('0x51')]({'inReplyTo':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')][_0x98a1('0x47')],'to':_0xa5e6aa['body'][_0x98a1('0x17')][_0x98a1('0x2f')],'cc':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')]['cc'],'subject':_0xa5e6aa[_0x98a1('0x27')]['message'][_0x98a1('0x52')],'attach':_0xd6d274[_0x98a1('0x49')]?_0xd6d274[_0x98a1('0x49')]:_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')][_0x98a1('0x49')],'substatus':null,'substatusAt':moment()['format'](_0x98a1('0x4b')),'lastMsgAt':moment()[_0x98a1('0x4a')](_0x98a1('0x4b')),'lastMsgDirection':'in','lastMsgBody':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x27')]});}else{return _0xd6d274;}}})[_0x98a1('0x22')](function(_0x448779){_0x2425cb[_0x98a1('0x53')]=_0x448779['get']({'plain':!![]});_0x2425cb[_0x98a1('0x53')][_0x98a1('0x54')]=_0x359a7d;return db[_0x98a1('0x4d')][_0x98a1('0x55')]({'body':_0xa5e6aa[_0x98a1('0x27')]['body'],'MailAccountId':_0xa5e6aa['account']['id'],'MailInteractionId':_0x448779['id'],'direction':'in','ContactId':_0x2425cb[_0x98a1('0x56')]['id'],'messageId':_0xa5e6aa[_0x98a1('0x27')]['message'][_0x98a1('0x47')],'from':_0xa5e6aa['body'][_0x98a1('0x17')][_0x98a1('0x2f')],'to':_0xa5e6aa['body'][_0x98a1('0x17')]['to'],'cc':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')]['cc'],'subject':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')][_0x98a1('0x52')],'attach':_0xa5e6aa[_0x98a1('0x27')]['message'][_0x98a1('0x49')],'Attachments':_0xa5e6aa['body'][_0x98a1('0x17')][_0x98a1('0x57')],'originTo':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')][_0x98a1('0x58')],'originCc':_0xa5e6aa[_0x98a1('0x27')][_0x98a1('0x17')][_0x98a1('0x59')],'bcc':_0xa5e6aa['body'][_0x98a1('0x17')][_0x98a1('0x5a')]},{'include':[{'model':db[_0x98a1('0x5b')],'as':_0x98a1('0x5c')}]});})[_0x98a1('0x22')](function(_0x114479){_0x2425cb['message']=_0x114479;if(_0x2425cb[_0x98a1('0x53')]['UserId']){return db[_0x98a1('0x5d')][_0x98a1('0x35')]({'attributes':['id',_0x98a1('0x5e')],'where':{'id':_0x2425cb[_0x98a1('0x53')][_0x98a1('0x5f')]}})['then'](function(_0x132f8a){if(_0x132f8a){_0x2425cb[_0x98a1('0x40')][_0x98a1('0x60')]({'id':0x0,'priority':0x0,'app':_0x98a1('0x61'),'appdata':_0x132f8a['name']+','+(_0x2425cb[_0x98a1('0x36')][_0x98a1('0x62')]||0xa),'interval':_0x98a1('0x44')});}return respondWithRpcPromise(_0x98a1('0x63'),_0x98a1('0x64'),_0x2425cb);});}return respondWithRpcPromise('Start',_0x98a1('0x64'),_0x2425cb);})[_0x98a1('0x22')](function(_0x3363a0){_0x18069e(_0x3363a0);})[_0x98a1('0x18')](function(_0x1df57d){_0x35cc6e(_0x2575f7[_0x98a1('0x15')](0x1f4,_0x1df57d[_0x98a1('0x17')]));});});};
\ No newline at end of file
index 6a4342c..ec2e63a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3092=['length','mailAccount:','./mailAccount.events','update','register'];(function(_0x313692,_0x28f6d1){var _0x39f489=function(_0x11b3fe){while(--_0x11b3fe){_0x313692['push'](_0x313692['shift']());}};_0x39f489(++_0x28f6d1);}(_0x3092,0xf7));var _0x2309=function(_0xfd495c,_0x4a3c1a){_0xfd495c=_0xfd495c-0x0;var _0x561dd8=_0x3092[_0xfd495c];return _0x561dd8;};'use strict';var MailAccountEvents=require(_0x2309('0x0'));var events=['save','remove',_0x2309('0x1')];function createListener(_0x4eb63e,_0x430f73){return function(_0x3df08c){_0x430f73['emit'](_0x4eb63e,_0x3df08c);};}function removeListener(_0xc44412,_0x27041f){return function(){MailAccountEvents['removeListener'](_0xc44412,_0x27041f);};}exports[_0x2309('0x2')]=function(_0xcb58ef){for(var _0x581486=0x0,_0x2a3e95=events[_0x2309('0x3')];_0x581486<_0x2a3e95;_0x581486++){var _0x332fb5=events[_0x581486];var _0x3cac4c=createListener(_0x2309('0x4')+_0x332fb5,_0xcb58ef);MailAccountEvents['on'](_0x332fb5,_0x3cac4c);}};
\ No newline at end of file
+var _0x74c2=['remove','update','emit','removeListener','register','length','mailAccount:','./mailAccount.events','save'];(function(_0x4bb2b9,_0x459c78){var _0x40e2a2=function(_0x19a26c){while(--_0x19a26c){_0x4bb2b9['push'](_0x4bb2b9['shift']());}};_0x40e2a2(++_0x459c78);}(_0x74c2,0x1e4));var _0x274c=function(_0x17d6a2,_0xa09537){_0x17d6a2=_0x17d6a2-0x0;var _0x2103b0=_0x74c2[_0x17d6a2];return _0x2103b0;};'use strict';var MailAccountEvents=require(_0x274c('0x0'));var events=[_0x274c('0x1'),_0x274c('0x2'),_0x274c('0x3')];function createListener(_0x14da1f,_0x768676){return function(_0x5ab461){_0x768676[_0x274c('0x4')](_0x14da1f,_0x5ab461);};}function removeListener(_0x428d58,_0x4ab0b9){return function(){MailAccountEvents[_0x274c('0x5')](_0x428d58,_0x4ab0b9);};}exports[_0x274c('0x6')]=function(_0x317ff4){for(var _0xb087e9=0x0,_0x74bb29=events[_0x274c('0x7')];_0xb087e9<_0x74bb29;_0xb087e9++){var _0xb2ac07=events[_0xb087e9];var _0x581e4c=createListener(_0x274c('0x8')+_0xb2ac07,_0x317ff4);MailAccountEvents['on'](_0xb2ac07,_0x581e4c);}};
\ No newline at end of file
index fec6615..ac1553c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','show','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x2c76e2,_0xb8f2b3){var _0x48bf15=function(_0x3ced58){while(--_0x3ced58){_0x2c76e2['push'](_0x2c76e2['shift']());}};_0x48bf15(++_0xb8f2b3);}(_0x34e8,0x12c));var _0x834e=function(_0x3fe844,_0x2da222){_0x3fe844=_0x3fe844-0x0;var _0x5b62b7=_0x34e8[_0x3fe844];return _0x5b62b7;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var auth=require(_0x834e('0x5'));var interaction=require(_0x834e('0x6'));var config=require(_0x834e('0x7'));var controller=require(_0x834e('0x8'));router[_0x834e('0x9')](_0x834e('0xa'),auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['put'](_0x834e('0xa'),auth[_0x834e('0xc')](),controller[_0x834e('0xd')]);router[_0x834e('0xe')](_0x834e('0xa'),auth[_0x834e('0xc')](),controller[_0x834e('0xf')]);module[_0x834e('0x10')]=router;
\ No newline at end of file
+var _0x984b=['./mailApplication.controller','isAuthenticated','show','/:id','delete','destroy','exports','connect-timeout','express','Router','../../config/environment'];(function(_0x240261,_0x4fe66c){var _0x45c332=function(_0x4f367a){while(--_0x4f367a){_0x240261['push'](_0x240261['shift']());}};_0x45c332(++_0x4fe66c);}(_0x984b,0xee));var _0xb984=function(_0x143638,_0x1da3ff){_0x143638=_0x143638-0x0;var _0x341af5=_0x984b[_0x143638];return _0x341af5;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb984('0x0'));var express=require(_0xb984('0x1'));var router=express[_0xb984('0x2')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb984('0x3'));var controller=require(_0xb984('0x4'));router['get']('/:id',auth[_0xb984('0x5')](),controller[_0xb984('0x6')]);router['put'](_0xb984('0x7'),auth[_0xb984('0x5')](),controller['update']);router[_0xb984('0x8')]('/:id',auth[_0xb984('0x5')](),controller[_0xb984('0x9')]);module[_0xb984('0xa')]=router;
\ No newline at end of file
index 5e24f06..40d08ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59a3=['sequelize','exports','noop','*,*,*,*'];(function(_0x1f0824,_0x1be6a8){var _0x59d1df=function(_0x2343b5){while(--_0x2343b5){_0x1f0824['push'](_0x1f0824['shift']());}};_0x59d1df(++_0x1be6a8);}(_0x59a3,0xbc));var _0x359a=function(_0x3bf404,_0x145667){_0x3bf404=_0x3bf404-0x0;var _0x160fdf=_0x59a3[_0x3bf404];return _0x160fdf;};'use strict';var Sequelize=require(_0x359a('0x0'));module[_0x359a('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x359a('0x2')},'appdata':{'type':Sequelize['STRING'](0x1000),'defaultValue':''},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x359a('0x3')}};
\ No newline at end of file
+var _0x4975=['noop','sequelize','exports','INTEGER','STRING'];(function(_0x24c137,_0x123891){var _0x4d1c12=function(_0xe75c69){while(--_0xe75c69){_0x24c137['push'](_0x24c137['shift']());}};_0x4d1c12(++_0x123891);}(_0x4975,0xc9));var _0x5497=function(_0x25a610,_0x2e5ef6){_0x25a610=_0x25a610-0x0;var _0x235dbe=_0x4975[_0x25a610];return _0x235dbe;};'use strict';var Sequelize=require(_0x5497('0x0'));module[_0x5497('0x1')]={'priority':{'type':Sequelize[_0x5497('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x5497('0x3')],'allowNull':![],'defaultValue':_0x5497('0x4')},'appdata':{'type':Sequelize[_0x5497('0x3')](0x1000),'defaultValue':''},'description':{'type':Sequelize[_0x5497('0x3')]},'interval':{'type':Sequelize[_0x5497('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 36aac48..68426a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e5=['zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','ioredis','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','limit','set','Content-Range','reject','save','update','then','destroy','error','name','send','show','params','MailApplication','query','keys','filters','intersection','model','fields','attributes','length','includeAll','include','options','catch','body','find','eml-format'];(function(_0x2ba671,_0x4ec91f){var _0x418b9c=function(_0x4f114c){while(--_0x4f114c){_0x2ba671['push'](_0x2ba671['shift']());}};_0x418b9c(++_0x4ec91f);}(_0x34e5,0x172));var _0x534e=function(_0x1ab054,_0x1e31a3){_0x1ab054=_0x1ab054-0x0;var _0x52b2be=_0x34e5[_0x1ab054];return _0x52b2be;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x534e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x534e('0x1'));var jsonpatch=require(_0x534e('0x2'));var rp=require(_0x534e('0x3'));var moment=require(_0x534e('0x4'));var BPromise=require(_0x534e('0x5'));var Mustache=require('mustache');var util=require(_0x534e('0x6'));var path=require(_0x534e('0x7'));var sox=require(_0x534e('0x8'));var csv=require(_0x534e('0x9'));var ejs=require(_0x534e('0xa'));var fs=require('fs');var _=require(_0x534e('0xb'));var squel=require(_0x534e('0xc'));var crypto=require('crypto');var jsforce=require(_0x534e('0xd'));var deskjs=require(_0x534e('0xe'));var toCsv=require(_0x534e('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x534e('0xf'));var qs=require('../../components/parsers/qs');var logger=require(_0x534e('0x10'))('api');var utils=require(_0x534e('0x11'));var config=require(_0x534e('0x12'));var db=require(_0x534e('0x13'))['db'];function respondWithStatusCode(_0x529726,_0x1b7a5a){_0x1b7a5a=_0x1b7a5a||0xcc;return function(_0x229352){if(_0x229352){return _0x529726[_0x534e('0x14')](_0x1b7a5a);}return _0x529726[_0x534e('0x15')](_0x1b7a5a)[_0x534e('0x16')]();};}function respondWithResult(_0x5ef1b1,_0x31d764){_0x31d764=_0x31d764||0xc8;return function(_0x23c11c){if(_0x23c11c){return _0x5ef1b1[_0x534e('0x15')](_0x31d764)[_0x534e('0x17')](_0x23c11c);}};}function respondWithFilteredResult(_0x359565,_0x478027){return function(_0x3e1411){if(_0x3e1411){var _0x17c068=_0x3e1411[_0x534e('0x18')],_0x536c9e=_0x478027['offset'],_0x5282cb=_0x478027['offset']+_0x478027[_0x534e('0x19')],_0x4171d6;if(_0x5282cb>=_0x17c068){_0x5282cb=_0x17c068;_0x4171d6=0xc8;}else{_0x4171d6=0xce;}_0x359565[_0x534e('0x15')](_0x4171d6);return _0x359565[_0x534e('0x1a')](_0x534e('0x1b'),_0x536c9e+'-'+_0x5282cb+'/'+_0x17c068)[_0x534e('0x17')](_0x3e1411);}return null;};}function patchUpdates(_0x26938d){return function(_0x100751){try{jsonpatch['apply'](_0x100751,_0x26938d,!![]);}catch(_0x1a7790){return BPromise[_0x534e('0x1c')](_0x1a7790);}return _0x100751[_0x534e('0x1d')]();};}function saveUpdates(_0x1bef0a,_0x95748b){return function(_0x524f19){if(_0x524f19){return _0x524f19[_0x534e('0x1e')](_0x1bef0a)[_0x534e('0x1f')](function(_0x5f9ae9){return _0x5f9ae9;});}return null;};}function removeEntity(_0x325005,_0x4724f9){return function(_0xb558fd){if(_0xb558fd){return _0xb558fd[_0x534e('0x20')]()[_0x534e('0x1f')](function(){_0x325005[_0x534e('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x188020,_0x3f6bf5){return function(_0x39466c){if(!_0x39466c){_0x188020[_0x534e('0x14')](0x194);}return _0x39466c;};}function handleError(_0x324205,_0x44bbc1){_0x44bbc1=_0x44bbc1||0x1f4;return function(_0xf60d40){logger[_0x534e('0x21')](_0xf60d40['stack']);if(_0xf60d40[_0x534e('0x22')]){delete _0xf60d40['name'];}_0x324205[_0x534e('0x15')](_0x44bbc1)[_0x534e('0x23')](_0xf60d40);};}exports[_0x534e('0x24')]=function(_0x1720f4,_0x174577){var _0x57b216={'raw':!![],'where':{'id':_0x1720f4[_0x534e('0x25')]['id']}},_0x743974={};_0x743974['model']=_['keys'](db[_0x534e('0x26')]['rawAttributes']);_0x743974[_0x534e('0x27')]=_[_0x534e('0x28')](_0x1720f4[_0x534e('0x27')]);_0x743974[_0x534e('0x29')]=_[_0x534e('0x2a')](_0x743974[_0x534e('0x2b')],_0x743974[_0x534e('0x27')]);_0x57b216['attributes']=_['intersection'](_0x743974[_0x534e('0x2b')],qs[_0x534e('0x2c')](_0x1720f4[_0x534e('0x27')][_0x534e('0x2c')]));_0x57b216[_0x534e('0x2d')]=_0x57b216[_0x534e('0x2d')][_0x534e('0x2e')]?_0x57b216[_0x534e('0x2d')]:_0x743974[_0x534e('0x2b')];if(_0x1720f4[_0x534e('0x27')][_0x534e('0x2f')]){_0x57b216[_0x534e('0x30')]=[{'all':!![]}];}_0x57b216=_['merge']({},_0x57b216,_0x1720f4[_0x534e('0x31')]);return db[_0x534e('0x26')]['find'](_0x57b216)[_0x534e('0x1f')](handleEntityNotFound(_0x174577,null))['then'](respondWithResult(_0x174577,null))[_0x534e('0x32')](handleError(_0x174577,null));};exports[_0x534e('0x1e')]=function(_0x2b565a,_0x38f9e5){if(_0x2b565a['body']['id']){delete _0x2b565a[_0x534e('0x33')]['id'];}return db[_0x534e('0x26')]['find']({'where':{'id':_0x2b565a['params']['id']}})[_0x534e('0x1f')](handleEntityNotFound(_0x38f9e5,null))[_0x534e('0x1f')](saveUpdates(_0x2b565a[_0x534e('0x33')],null))[_0x534e('0x1f')](respondWithResult(_0x38f9e5,null))['catch'](handleError(_0x38f9e5,null));};exports[_0x534e('0x20')]=function(_0x5490bb,_0x3e2445){return db['MailApplication'][_0x534e('0x34')]({'where':{'id':_0x5490bb[_0x534e('0x25')]['id']}})['then'](handleEntityNotFound(_0x3e2445,null))[_0x534e('0x1f')](removeEntity(_0x3e2445,null))['catch'](handleError(_0x3e2445,null));};
\ No newline at end of file
+var _0xe94a=['squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','apply','reject','save','then','destroy','name','show','rawAttributes','keys','filters','intersection','model','fields','query','attributes','include','merge','options','MailApplication','catch','update','body','params','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash'];(function(_0xa2fc86,_0x28fa6e){var _0x4578ec=function(_0x3535ff){while(--_0x3535ff){_0xa2fc86['push'](_0xa2fc86['shift']());}};_0x4578ec(++_0x28fa6e);}(_0xe94a,0x1c7));var _0xae94=function(_0x489c95,_0x53159c){_0x489c95=_0x489c95-0x0;var _0x10e7a7=_0xe94a[_0x489c95];return _0x10e7a7;};'use strict';var pdf=require(_0xae94('0x0'));var emlformat=require(_0xae94('0x1'));var rimraf=require(_0xae94('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xae94('0x3'));var rp=require(_0xae94('0x4'));var moment=require(_0xae94('0x5'));var BPromise=require(_0xae94('0x6'));var Mustache=require(_0xae94('0x7'));var util=require(_0xae94('0x8'));var path=require('path');var sox=require(_0xae94('0x9'));var csv=require(_0xae94('0xa'));var ejs=require(_0xae94('0xb'));var fs=require('fs');var _=require(_0xae94('0xc'));var squel=require(_0xae94('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xae94('0xe'));var toCsv=require(_0xae94('0xa'));var querystring=require('querystring');var Papa=require(_0xae94('0xf'));var Redis=require(_0xae94('0x10'));var qs=require(_0xae94('0x11'));var logger=require(_0xae94('0x12'))(_0xae94('0x13'));var utils=require(_0xae94('0x14'));var config=require(_0xae94('0x15'));var db=require(_0xae94('0x16'))['db'];function respondWithStatusCode(_0x4cb724,_0x59a9ba){_0x59a9ba=_0x59a9ba||0xcc;return function(_0x8430b){if(_0x8430b){return _0x4cb724[_0xae94('0x17')](_0x59a9ba);}return _0x4cb724['status'](_0x59a9ba)[_0xae94('0x18')]();};}function respondWithResult(_0x488159,_0x506e6d){_0x506e6d=_0x506e6d||0xc8;return function(_0x295017){if(_0x295017){return _0x488159[_0xae94('0x19')](_0x506e6d)[_0xae94('0x1a')](_0x295017);}};}function respondWithFilteredResult(_0x223e35,_0x48bf46){return function(_0x444a92){if(_0x444a92){var _0x92a18=_0x444a92['count'],_0x17589d=_0x48bf46[_0xae94('0x1b')],_0x56a922=_0x48bf46['offset']+_0x48bf46[_0xae94('0x1c')],_0x274fb3;if(_0x56a922>=_0x92a18){_0x56a922=_0x92a18;_0x274fb3=0xc8;}else{_0x274fb3=0xce;}_0x223e35[_0xae94('0x19')](_0x274fb3);return _0x223e35['set']('Content-Range',_0x17589d+'-'+_0x56a922+'/'+_0x92a18)[_0xae94('0x1a')](_0x444a92);}return null;};}function patchUpdates(_0x382b4a){return function(_0x296009){try{jsonpatch[_0xae94('0x1d')](_0x296009,_0x382b4a,!![]);}catch(_0x5d4379){return BPromise[_0xae94('0x1e')](_0x5d4379);}return _0x296009[_0xae94('0x1f')]();};}function saveUpdates(_0x5a0cdd,_0x2e2745){return function(_0x1b3e4){if(_0x1b3e4){return _0x1b3e4['update'](_0x5a0cdd)[_0xae94('0x20')](function(_0xb9b721){return _0xb9b721;});}return null;};}function removeEntity(_0x432f26,_0xb42887){return function(_0x4267f5){if(_0x4267f5){return _0x4267f5[_0xae94('0x21')]()[_0xae94('0x20')](function(){_0x432f26[_0xae94('0x19')](0xcc)[_0xae94('0x18')]();});}};}function handleEntityNotFound(_0x5e42ec,_0xea0193){return function(_0x123dd6){if(!_0x123dd6){_0x5e42ec['sendStatus'](0x194);}return _0x123dd6;};}function handleError(_0x111bd8,_0xea4b73){_0xea4b73=_0xea4b73||0x1f4;return function(_0x3990aa){logger['error'](_0x3990aa['stack']);if(_0x3990aa[_0xae94('0x22')]){delete _0x3990aa[_0xae94('0x22')];}_0x111bd8[_0xae94('0x19')](_0xea4b73)['send'](_0x3990aa);};}exports[_0xae94('0x23')]=function(_0xc51ace,_0x3ea78a){var _0xf67ced={'raw':!![],'where':{'id':_0xc51ace['params']['id']}},_0x5e6932={};_0x5e6932['model']=_['keys'](db['MailApplication'][_0xae94('0x24')]);_0x5e6932['query']=_[_0xae94('0x25')](_0xc51ace['query']);_0x5e6932[_0xae94('0x26')]=_[_0xae94('0x27')](_0x5e6932[_0xae94('0x28')],_0x5e6932['query']);_0xf67ced['attributes']=_[_0xae94('0x27')](_0x5e6932[_0xae94('0x28')],qs[_0xae94('0x29')](_0xc51ace[_0xae94('0x2a')][_0xae94('0x29')]));_0xf67ced[_0xae94('0x2b')]=_0xf67ced[_0xae94('0x2b')]['length']?_0xf67ced[_0xae94('0x2b')]:_0x5e6932['model'];if(_0xc51ace['query']['includeAll']){_0xf67ced[_0xae94('0x2c')]=[{'all':!![]}];}_0xf67ced=_[_0xae94('0x2d')]({},_0xf67ced,_0xc51ace[_0xae94('0x2e')]);return db[_0xae94('0x2f')]['find'](_0xf67ced)['then'](handleEntityNotFound(_0x3ea78a,null))[_0xae94('0x20')](respondWithResult(_0x3ea78a,null))[_0xae94('0x30')](handleError(_0x3ea78a,null));};exports[_0xae94('0x31')]=function(_0x9f5067,_0x5381ef){if(_0x9f5067['body']['id']){delete _0x9f5067[_0xae94('0x32')]['id'];}return db[_0xae94('0x2f')]['find']({'where':{'id':_0x9f5067[_0xae94('0x33')]['id']}})[_0xae94('0x20')](handleEntityNotFound(_0x5381ef,null))[_0xae94('0x20')](saveUpdates(_0x9f5067[_0xae94('0x32')],null))[_0xae94('0x20')](respondWithResult(_0x5381ef,null))[_0xae94('0x30')](handleError(_0x5381ef,null));};exports[_0xae94('0x21')]=function(_0x587caa,_0x3d8e08){return db[_0xae94('0x2f')]['find']({'where':{'id':_0x587caa[_0xae94('0x33')]['id']}})[_0xae94('0x20')](handleEntityNotFound(_0x3d8e08,null))[_0xae94('0x20')](removeEntity(_0x3d8e08,null))[_0xae94('0x30')](handleError(_0x3d8e08,null));};
\ No newline at end of file
index 5dba988..7037f3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1efd=['moment','bluebird','request-promise','./mailApplication.attributes','exports','define','MailApplication','mail_applications','lodash','../../config/logger'];(function(_0x234e93,_0x5a5f21){var _0x7d6e93=function(_0x19400b){while(--_0x19400b){_0x234e93['push'](_0x234e93['shift']());}};_0x7d6e93(++_0x5a5f21);}(_0x1efd,0x1de));var _0xd1ef=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1efd[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd1ef('0x0'));var util=require('util');var logger=require(_0xd1ef('0x1'))('api');var moment=require(_0xd1ef('0x2'));var BPromise=require(_0xd1ef('0x3'));var rp=require(_0xd1ef('0x4'));var attributes=require(_0xd1ef('0x5'));module[_0xd1ef('0x6')]=function(_0x42940f,_0x425d36){return _0x42940f[_0xd1ef('0x7')](_0xd1ef('0x8'),attributes,{'tableName':_0xd1ef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1463=['./mailApplication.attributes','exports','MailApplication','mail_applications','util','api','moment','bluebird','request-promise'];(function(_0x1dc93c,_0x2411a3){var _0x54699e=function(_0x6e1a76){while(--_0x6e1a76){_0x1dc93c['push'](_0x1dc93c['shift']());}};_0x54699e(++_0x2411a3);}(_0x1463,0x163));var _0x3146=function(_0x1fe07f,_0x45de29){_0x1fe07f=_0x1fe07f-0x0;var _0x58070c=_0x1463[_0x1fe07f];return _0x58070c;};'use strict';var _=require('lodash');var util=require(_0x3146('0x0'));var logger=require('../../config/logger')(_0x3146('0x1'));var moment=require(_0x3146('0x2'));var BPromise=require(_0x3146('0x3'));var rp=require(_0x3146('0x4'));var attributes=require(_0x3146('0x5'));module[_0x3146('0x6')]=function(_0x23d980,_0x15518b){return _0x23d980['define'](_0x3146('0x7'),attributes,{'tableName':_0x3146('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a5c72a..d3251c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateMailApplication','update','options','raw','attributes','limit','lodash','util','moment'];(function(_0x362761,_0x5694e2){var _0x168fca=function(_0x39b538){while(--_0x39b538){_0x362761['push'](_0x362761['shift']());}};_0x168fca(++_0x5694e2);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var 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']('MailApplication,\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);});});}exports[_0x7995('0x18')]=function(_0x291317){var _0x1e1415=this;return new Promise(function(_0x37a7d4,_0x4faa60){return db['MailApplication'][_0x7995('0x19')](_0x291317['body'],{'raw':_0x291317['options']?_0x291317[_0x7995('0x1a')][_0x7995('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x291317['options']?_0x291317[_0x7995('0x1a')]['where']||null:null,'attributes':_0x291317['options']?_0x291317[_0x7995('0x1a')][_0x7995('0x1c')]||null:null,'limit':_0x291317[_0x7995('0x1a')]?_0x291317[_0x7995('0x1a')][_0x7995('0x1d')]||null:null})[_0x7995('0xc')](function(_0x5d40ae){logger[_0x7995('0xd')](_0x7995('0x18'),_0x291317);logger[_0x7995('0x10')](_0x7995('0x18'),_0x291317,JSON[_0x7995('0x12')](_0x5d40ae));_0x37a7d4(_0x5d40ae);})[_0x7995('0x17')](function(_0x475351){logger[_0x7995('0x13')]('UpdateMailApplication',_0x475351[_0x7995('0x15')],_0x291317);_0x4faa60(_0x1e1415[_0x7995('0x13')](0x1f4,_0x475351[_0x7995('0x15')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','MailApplication','update','body','options','raw','where','attributes','limit','then','UpdateMailApplication','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailApplication,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x3055b4,_0x40b87a){var _0x273b9c=function(_0x69af09){while(--_0x69af09){_0x3055b4['push'](_0x3055b4['shift']());}};_0x273b9c(++_0x40b87a);}(_0x7a54,0x106));var _0x47a5=function(_0x4e69a9,_0x450c7c){_0x4e69a9=_0x4e69a9-0x0;var _0x59e34a=_0x7a54[_0x4e69a9];return _0x59e34a;};'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')]('MailApplication,\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['UpdateMailApplication']=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?!![]:![]:!![],'individualHooks':!![],'where':_0x5247fd['options']?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x1a')]||null:null,'attributes':_0x5247fd['options']?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x1b')]||null:null,'limit':_0x5247fd[_0x47a5('0x18')]?_0x5247fd['options'][_0x47a5('0x1c')]||null:null})[_0x47a5('0x1d')](function(_0x23db32){logger[_0x47a5('0xb')]('UpdateMailApplication',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON['stringify'](_0x23db32));_0xaf70a6(_0x23db32);})[_0x47a5('0x14')](function(_0xc4cd63){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0xc4cd63[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xc4cd63['message']));});});};
\ No newline at end of file
index 78bef75..b29d7e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe295=['addMessage','post','tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailInteraction.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download'];(function(_0x454830,_0x10fa3d){var _0x36fcf8=function(_0x7ac190){while(--_0x7ac190){_0x454830['push'](_0x454830['shift']());}};_0x36fcf8(++_0x10fa3d);}(_0xe295,0x141));var _0x5e29=function(_0x1c0f8d,_0x1adacb){_0x1c0f8d=_0x1c0f8d-0x0;var _0x108dd2=_0xe295[_0x1c0f8d];return _0x108dd2;};'use strict';var multer=require(_0x5e29('0x0'));var util=require(_0x5e29('0x1'));var path=require(_0x5e29('0x2'));var timeout=require('connect-timeout');var express=require(_0x5e29('0x3'));var router=express[_0x5e29('0x4')]();var auth=require(_0x5e29('0x5'));var interaction=require(_0x5e29('0x6'));var config=require(_0x5e29('0x7'));var controller=require(_0x5e29('0x8'));router[_0x5e29('0x9')]('/',auth[_0x5e29('0xa')](),controller[_0x5e29('0xb')]);router[_0x5e29('0x9')](_0x5e29('0xc'),auth[_0x5e29('0xa')](),controller['describe']);router[_0x5e29('0x9')](_0x5e29('0xd'),auth[_0x5e29('0xa')](),controller[_0x5e29('0xe')]);router[_0x5e29('0x9')](_0x5e29('0xf'),auth[_0x5e29('0xa')](),controller[_0x5e29('0x10')]);router['get'](_0x5e29('0x11'),auth[_0x5e29('0xa')](),controller[_0x5e29('0x12')]);router['post']('/',auth[_0x5e29('0xa')](),controller['create']);router['post']('/:id/messages',auth[_0x5e29('0xa')](),controller[_0x5e29('0x13')]);router[_0x5e29('0x14')]('/:id/tags',auth[_0x5e29('0xa')](),interaction[_0x5e29('0x15')](_0x5e29('0x16'),_0x5e29('0x17')),controller[_0x5e29('0x18')]);router[_0x5e29('0x19')](_0x5e29('0xd'),auth['isAuthenticated'](),interaction[_0x5e29('0x15')](_0x5e29('0x16'),_0x5e29('0x1a')),controller[_0x5e29('0x1b')]);router[_0x5e29('0x1c')]('/:id',auth[_0x5e29('0xa')](),interaction[_0x5e29('0x15')](_0x5e29('0x16'),_0x5e29('0x1d')),controller[_0x5e29('0x1e')]);router['delete'](_0x5e29('0x1f'),auth[_0x5e29('0xa')](),controller[_0x5e29('0x20')]);module[_0x5e29('0x21')]=router;
\ No newline at end of file
+var _0x0fe8=['describe','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','mail','mailinteraction:addtags','addTags','put','/:id','tracked','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','get'];(function(_0x1a45c2,_0x4d0a47){var _0x571691=function(_0x43be22){while(--_0x43be22){_0x1a45c2['push'](_0x1a45c2['shift']());}};_0x571691(++_0x4d0a47);}(_0x0fe8,0x89));var _0x80fe=function(_0x1a87c2,_0x47c3cb){_0x1a87c2=_0x1a87c2-0x0;var _0x51d0d9=_0x0fe8[_0x1a87c2];return _0x51d0d9;};'use strict';var multer=require(_0x80fe('0x0'));var util=require(_0x80fe('0x1'));var path=require(_0x80fe('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x80fe('0x3')]();var auth=require(_0x80fe('0x4'));var interaction=require(_0x80fe('0x5'));var config=require('../../config/environment');var controller=require('./mailInteraction.controller');router['get']('/',auth[_0x80fe('0x6')](),controller['index']);router[_0x80fe('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x80fe('0x8')]);router[_0x80fe('0x7')]('/:id',auth[_0x80fe('0x6')](),controller[_0x80fe('0x9')]);router[_0x80fe('0x7')](_0x80fe('0xa'),auth[_0x80fe('0x6')](),controller[_0x80fe('0xb')]);router[_0x80fe('0x7')]('/:id/download',auth[_0x80fe('0x6')](),controller['download']);router[_0x80fe('0xc')]('/',auth[_0x80fe('0x6')](),controller[_0x80fe('0xd')]);router[_0x80fe('0xc')]('/:id/messages',auth['isAuthenticated'](),controller[_0x80fe('0xe')]);router[_0x80fe('0xc')](_0x80fe('0xf'),auth[_0x80fe('0x6')](),interaction['tracked'](_0x80fe('0x10'),_0x80fe('0x11')),controller[_0x80fe('0x12')]);router[_0x80fe('0x13')](_0x80fe('0x14'),auth['isAuthenticated'](),interaction[_0x80fe('0x15')](_0x80fe('0x10'),_0x80fe('0x16')),controller[_0x80fe('0x17')]);router[_0x80fe('0x18')](_0x80fe('0x14'),auth[_0x80fe('0x6')](),interaction['tracked'](_0x80fe('0x10'),_0x80fe('0x19')),controller[_0x80fe('0x1a')]);router[_0x80fe('0x18')](_0x80fe('0xf'),auth[_0x80fe('0x6')](),controller[_0x80fe('0x1b')]);module[_0x80fe('0x1c')]=router;
\ No newline at end of file
index 0ac43a6..89d1f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe7e=['exports','BOOLEAN','DATE','STRING','TEXT','long','out','\x20CHARSET\x20utf8mb4\x20COLLATE\x20utf8mb4_unicode_ci','fromString','getDataValue','split','slice','sequelize','html-to-text','iconv'];(function(_0x175184,_0x222440){var _0x4ac623=function(_0x4387b6){while(--_0x4387b6){_0x175184['push'](_0x175184['shift']());}};_0x4ac623(++_0x222440);}(_0xbe7e,0x93));var _0xebe7=function(_0x1e3453,_0x930eeb){_0x1e3453=_0x1e3453-0x0;var _0x158ad1=_0xbe7e[_0x1e3453];return _0x158ad1;};'use strict';var Sequelize=require(_0xebe7('0x0'));var htmlToText=require(_0xebe7('0x1'));var iconv=require(_0xebe7('0x2'));module[_0xebe7('0x3')]={'closed':{'type':Sequelize[_0xebe7('0x4')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xebe7('0x5')]},'disposition':{'type':Sequelize[_0xebe7('0x6')]},'note':{'type':Sequelize[_0xebe7('0x6')]},'inReplyTo':{'type':Sequelize[_0xebe7('0x6')](0xbe)},'to':{'type':Sequelize[_0xebe7('0x6')]},'cc':{'type':Sequelize[_0xebe7('0x7')](_0xebe7('0x8'))},'subject':{'type':Sequelize[_0xebe7('0x7')]('')+'\x20CHARSET\x20utf8mb4\x20COLLATE\x20utf8mb4_unicode_ci'},'attach':{'type':Sequelize[_0xebe7('0x4')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xebe7('0x5')]},'substatus':{'type':Sequelize[_0xebe7('0x6')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xebe7('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgBody':{'type':Sequelize[_0xebe7('0x7')](_0xebe7('0x8'))+_0xebe7('0xa'),'get':function(){try{return this['getDataValue']('lastMsgBody')?htmlToText[_0xebe7('0xb')](this[_0xebe7('0xc')]('lastMsgBody'),{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'ignoreImage':!![]})[_0xebe7('0xd')]('\x0a')[_0xebe7('0xe')](0x0,0x6)['join']('\x0a'):null;}catch(_0x588590){return null;}}}};
\ No newline at end of file
+var _0xd131=['slice','join','sequelize','html-to-text','iconv','exports','BOOLEAN','DATE','STRING','TEXT','long','\x20CHARSET\x20utf8mb4\x20COLLATE\x20utf8mb4_unicode_ci','ENUM','out','getDataValue','fromString','split'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xd131,0xbd));var _0x1d13=function(_0x4ddb06,_0x394cc8){_0x4ddb06=_0x4ddb06-0x0;var _0x1b610a=_0xd131[_0x4ddb06];return _0x1b610a;};'use strict';var Sequelize=require(_0x1d13('0x0'));var htmlToText=require(_0x1d13('0x1'));var iconv=require(_0x1d13('0x2'));module[_0x1d13('0x3')]={'closed':{'type':Sequelize[_0x1d13('0x4')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1d13('0x5')]},'disposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x1d13('0x6')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0x1d13('0x6')]},'cc':{'type':Sequelize[_0x1d13('0x7')](_0x1d13('0x8'))},'subject':{'type':Sequelize[_0x1d13('0x7')]('')+_0x1d13('0x9')},'attach':{'type':Sequelize[_0x1d13('0x4')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x1d13('0x5')]},'substatus':{'type':Sequelize[_0x1d13('0x6')](0x3c)},'substatusAt':{'type':Sequelize[_0x1d13('0x5')]},'firstMsgDirection':{'type':Sequelize[_0x1d13('0xa')]('in',_0x1d13('0xb')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1d13('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x1d13('0xa')]('in',_0x1d13('0xb')),'defaultValue':'in','allowNull':![]},'lastMsgBody':{'type':Sequelize[_0x1d13('0x7')]('long')+_0x1d13('0x9'),'get':function(){try{return this[_0x1d13('0xc')]('lastMsgBody')?htmlToText[_0x1d13('0xd')](this[_0x1d13('0xc')]('lastMsgBody'),{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'ignoreImage':!![]})[_0x1d13('0xe')]('\x0a')[_0x1d13('0xf')](0x0,0x6)[_0x1d13('0x10')]('\x0a'):null;}catch(_0x484795){return null;}}}};
\ No newline at end of file
index cd7d28a..06d44df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x128e=['Attachment','Attachments','mkdirSync','each','from','basename','existsSync','readFileSync','build','writeFileSync','message%d.eml','download','unlinkSync','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','json','count','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','send','index','MailInteraction','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','limit','offset','sort','pick','add','day','merge','where','filter','key','VIRTUAL','field','options','include','tag','push','Tag','Tags','read','MailMessage','Messages','direction','createdAt','distinct','User','Users','fullname','CmContact','Contact','Owner','internal','MailAccount','Account','email','color','ThroughTags','catch','show','params','length','includeAll','find','create','body','describe','addMessage','ids','getMessages','findOne','hasOwnProperty','nolimit','order','map','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','omit','emit','removeTags','toString','root','server','files','attachments','join','tmp','subject'];(function(_0x398b2a,_0x22c3fc){var _0x4f914c=function(_0xd73961){while(--_0xd73961){_0x398b2a['push'](_0x398b2a['shift']());}};_0x4f914c(++_0x22c3fc);}(_0x128e,0x95));var _0xe128=function(_0x464d65,_0x557dc1){_0x464d65=_0x464d65-0x0;var _0x47d95b=_0x128e[_0x464d65];return _0x47d95b;};'use strict';var pdf=require(_0xe128('0x0'));var emlformat=require(_0xe128('0x1'));var rimraf=require(_0xe128('0x2'));var zipdir=require(_0xe128('0x3'));var jsonpatch=require(_0xe128('0x4'));var rp=require(_0xe128('0x5'));var moment=require(_0xe128('0x6'));var BPromise=require('bluebird');var Mustache=require(_0xe128('0x7'));var util=require(_0xe128('0x8'));var path=require(_0xe128('0x9'));var sox=require('sox');var csv=require(_0xe128('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xe128('0xb'));var squel=require(_0xe128('0xc'));var crypto=require('crypto');var jsforce=require(_0xe128('0xd'));var deskjs=require(_0xe128('0xe'));var toCsv=require(_0xe128('0xa'));var querystring=require(_0xe128('0xf'));var Papa=require('papaparse');var Redis=require(_0xe128('0x10'));var qs=require(_0xe128('0x11'));var logger=require('../../config/logger')(_0xe128('0x12'));var utils=require('../../config/utils');var config=require(_0xe128('0x13'));var db=require(_0xe128('0x14'))['db'];config['redis']=_[_0xe128('0x15')](config['redis'],{'host':_0xe128('0x16'),'port':0x18eb});var socket=require(_0xe128('0x17'))(new Redis(config['redis']));require(_0xe128('0x18'))[_0xe128('0x19')](socket);function respondWithStatusCode(_0x3dcb4a,_0x3ac04d){_0x3ac04d=_0x3ac04d||0xcc;return function(_0x56d1cb){if(_0x56d1cb){return _0x3dcb4a[_0xe128('0x1a')](_0x3ac04d);}return _0x3dcb4a['status'](_0x3ac04d)['end']();};}function respondWithResult(_0x5bc65f,_0x562617){_0x562617=_0x562617||0xc8;return function(_0x2168df){if(_0x2168df){return _0x5bc65f[_0xe128('0x1b')](_0x562617)[_0xe128('0x1c')](_0x2168df);}};}function respondWithFilteredResult(_0xc5f15,_0x31bc4c){return function(_0x513e44){if(_0x513e44){var _0x65ed50=_0x513e44[_0xe128('0x1d')],_0x314dba=_0x31bc4c['offset'],_0x325903=_0x31bc4c['offset']+_0x31bc4c['limit'],_0x3f23f6;if(_0x325903>=_0x65ed50){_0x325903=_0x65ed50;_0x3f23f6=0xc8;}else{_0x3f23f6=0xce;}_0xc5f15[_0xe128('0x1b')](_0x3f23f6);return _0xc5f15['set'](_0xe128('0x1e'),_0x314dba+'-'+_0x325903+'/'+_0x65ed50)[_0xe128('0x1c')](_0x513e44);}return null;};}function patchUpdates(_0x27455e){return function(_0x53bda0){try{jsonpatch[_0xe128('0x1f')](_0x53bda0,_0x27455e,!![]);}catch(_0x46f0b6){return BPromise[_0xe128('0x20')](_0x46f0b6);}return _0x53bda0[_0xe128('0x21')]();};}function saveUpdates(_0x21381b,_0x1393e7){return function(_0x133664){if(_0x133664){return _0x133664['update'](_0x21381b)[_0xe128('0x22')](function(_0x53afad){return _0x53afad;});}return null;};}function removeEntity(_0x3b67e2,_0x3c8b5a){return function(_0x41de1c){if(_0x41de1c){return _0x41de1c[_0xe128('0x23')]()[_0xe128('0x22')](function(){_0x3b67e2[_0xe128('0x1b')](0xcc)[_0xe128('0x24')]();});}};}function handleEntityNotFound(_0x2bc53a,_0x2a77f9){return function(_0x49aa75){if(!_0x49aa75){_0x2bc53a[_0xe128('0x1a')](0x194);}return _0x49aa75;};}function handleError(_0x25e6e3,_0x5d4ad1){_0x5d4ad1=_0x5d4ad1||0x1f4;return function(_0x4a1711){logger[_0xe128('0x25')](_0x4a1711[_0xe128('0x26')]);if(_0x4a1711[_0xe128('0x27')]){delete _0x4a1711[_0xe128('0x27')];}_0x25e6e3[_0xe128('0x1b')](_0x5d4ad1)[_0xe128('0x28')](_0x4a1711);};}exports[_0xe128('0x29')]=function(_0x48fa5b,_0xc82d10){var _0xc2ccd9={},_0x1449d9={},_0x2e64c5={'count':0x0,'rows':[]};var _0x1f46a0=db[_0xe128('0x2a')][_0xe128('0x2b')];_0x1449d9[_0xe128('0x2c')]=_[_0xe128('0x2d')](_0x1f46a0);var _0x165a9d={'dateStart':_0x48fa5b[_0xe128('0x2e')][_0xe128('0x2f')],'dateEnd':_0x48fa5b[_0xe128('0x2e')][_0xe128('0x30')]};delete _0x48fa5b[_0xe128('0x2e')][_0xe128('0x2f')];delete _0x48fa5b['query']['dateEnd'];_0x1449d9[_0xe128('0x2e')]=_[_0xe128('0x2d')](_0x48fa5b['query']);_0x1449d9[_0xe128('0x31')]=_[_0xe128('0x32')](_0x1449d9[_0xe128('0x2c')],_0x1449d9[_0xe128('0x2e')]);_0xc2ccd9[_0xe128('0x33')]=_['intersection'](_0x1449d9[_0xe128('0x2c')],qs['fields'](_0x48fa5b['query'][_0xe128('0x34')]));_0xc2ccd9[_0xe128('0x33')]=_0xc2ccd9[_0xe128('0x33')]['length']?_0xc2ccd9[_0xe128('0x33')]:_0x1449d9[_0xe128('0x2c')];if(!_0x48fa5b['query']['hasOwnProperty']('nolimit')){_0xc2ccd9[_0xe128('0x35')]=qs['limit'](_0x48fa5b[_0xe128('0x2e')][_0xe128('0x35')]);_0xc2ccd9[_0xe128('0x36')]=qs['offset'](_0x48fa5b[_0xe128('0x2e')][_0xe128('0x36')]);}_0xc2ccd9['order']=qs[_0xe128('0x37')](_0x48fa5b['query'][_0xe128('0x37')]);_0xc2ccd9['where']=qs['filters'](_[_0xe128('0x38')](_0x48fa5b[_0xe128('0x2e')],_0x1449d9['filters']));if(_0x165a9d[_0xe128('0x2f')]){if(_0x165a9d[_0xe128('0x30')]){_0x165a9d[_0xe128('0x30')]=moment(_0x165a9d[_0xe128('0x30')])[_0xe128('0x39')](0x1,_0xe128('0x3a'));}else{_0x165a9d[_0xe128('0x30')]=moment(_0x165a9d[_0xe128('0x2f')])[_0xe128('0x39')](0x1,_0xe128('0x3a'));}_[_0xe128('0x3b')](_0xc2ccd9[_0xe128('0x3c')],{'createdAt':{'$gte':_0x165a9d[_0xe128('0x2f')],'$lte':_0x165a9d['dateEnd']}});}if(_0x48fa5b[_0xe128('0x2e')][_0xe128('0x3d')]){_0xc2ccd9[_0xe128('0x3c')]=_['merge'](_0xc2ccd9[_0xe128('0x3c')],{'$or':_['map'](_0x1f46a0,function(_0x5d4ed9){if(_0x5d4ed9['type'][_0xe128('0x3e')]!==_0xe128('0x3f')){var _0x4a5c69={};_0x4a5c69[_0x5d4ed9[_0xe128('0x40')]]={'$like':'%'+_0x48fa5b[_0xe128('0x2e')]['filter']+'%'};return _0x4a5c69;}})});}_0xc2ccd9=_[_0xe128('0x3b')]({},_0xc2ccd9,_0x48fa5b[_0xe128('0x41')]);var _0x1e9287={'where':_0xc2ccd9[_0xe128('0x3c')]};_0x1e9287[_0xe128('0x42')]=[];if(_0x48fa5b[_0xe128('0x2e')][_0xe128('0x43')]){_0x1e9287[_0xe128('0x42')][_0xe128('0x44')]({'model':db[_0xe128('0x45')],'as':_0xe128('0x46'),'attributes':['id'],'where':{'id':_0x48fa5b['query'][_0xe128('0x43')]},'required':!![]});_0x1e9287['distinct']=!![];}if(_0x48fa5b['query'][_0xe128('0x47')]){_0x1e9287[_0xe128('0x42')]['push']({'model':db[_0xe128('0x48')],'as':_0xe128('0x49'),'attributes':['id',_0xe128('0x4a'),_0xe128('0x4b'),_0xe128('0x47')],'where':{'direction':'in','read':_0x48fa5b[_0xe128('0x2e')]['read']||![]},'required':!![]});_0x1e9287[_0xe128('0x4c')]=!![];}return db[_0xe128('0x2a')][_0xe128('0x1d')](_0x1e9287)[_0xe128('0x22')](function(_0x687114){_0x2e64c5[_0xe128('0x1d')]=_0x687114;if(_0x48fa5b['query']['includeAll']){_0xc2ccd9[_0xe128('0x42')]=[{'model':db[_0xe128('0x4d')],'as':_0xe128('0x4e'),'required':![],'attributes':['id',_0xe128('0x27'),_0xe128('0x4f')]},{'model':db[_0xe128('0x50')],'as':_0xe128('0x51'),'required':![]},{'model':db[_0xe128('0x4d')],'as':_0xe128('0x52'),'attributes':[_0xe128('0x27'),'fullname',_0xe128('0x53')],'required':![]},{'model':db[_0xe128('0x54')],'as':_0xe128('0x55'),'attributes':[_0xe128('0x27'),_0xe128('0x3e'),_0xe128('0x56')],'required':![]},{'model':db[_0xe128('0x48')],'as':'Messages','attributes':['id',_0xe128('0x4a'),_0xe128('0x4b'),_0xe128('0x47')],'where':{'direction':'in','read':_0x48fa5b['query'][_0xe128('0x47')]||![]},'required':_0x48fa5b[_0xe128('0x2e')][_0xe128('0x47')]||![]},{'model':db['Tag'],'as':_0xe128('0x46'),'attributes':['id',_0xe128('0x27'),_0xe128('0x57')],'required':_0x48fa5b['query']['tag']?!![]:![]},{'model':db[_0xe128('0x45')],'as':_0xe128('0x58'),'attributes':['id','name','color'],'through':_0x48fa5b['query']['tag']?{'attributes':[],'where':{'TagId':_0x48fa5b['query'][_0xe128('0x43')]||undefined}}:{},'required':_0x48fa5b[_0xe128('0x2e')][_0xe128('0x43')]?!![]:![]}];}return db[_0xe128('0x2a')]['findAll'](_0xc2ccd9);})[_0xe128('0x22')](function(_0x1e8383){_0x2e64c5['rows']=_0x1e8383;return _0x2e64c5;})[_0xe128('0x22')](respondWithFilteredResult(_0xc82d10,_0xc2ccd9))[_0xe128('0x59')](handleError(_0xc82d10,null));};exports[_0xe128('0x5a')]=function(_0x5c1b80,_0x49e1bd){var _0x46132c={'raw':![],'where':{'id':_0x5c1b80[_0xe128('0x5b')]['id']}},_0x6141e3={};_0x6141e3[_0xe128('0x2c')]=_[_0xe128('0x2d')](db[_0xe128('0x2a')][_0xe128('0x2b')]);_0x6141e3[_0xe128('0x2e')]=_['keys'](_0x5c1b80[_0xe128('0x2e')]);_0x6141e3[_0xe128('0x31')]=_['intersection'](_0x6141e3[_0xe128('0x2c')],_0x6141e3[_0xe128('0x2e')]);_0x46132c[_0xe128('0x33')]=_['intersection'](_0x6141e3[_0xe128('0x2c')],qs[_0xe128('0x34')](_0x5c1b80[_0xe128('0x2e')]['fields']));_0x46132c[_0xe128('0x33')]=_0x46132c[_0xe128('0x33')][_0xe128('0x5c')]?_0x46132c[_0xe128('0x33')]:_0x6141e3['model'];if(_0x5c1b80['query'][_0xe128('0x5d')]){_0x46132c[_0xe128('0x42')]=[{'all':!![]}];}_0x46132c=_[_0xe128('0x3b')]({},_0x46132c,_0x5c1b80[_0xe128('0x41')]);return db[_0xe128('0x2a')][_0xe128('0x5e')](_0x46132c)['then'](handleEntityNotFound(_0x49e1bd,null))[_0xe128('0x22')](respondWithResult(_0x49e1bd,null))[_0xe128('0x59')](handleError(_0x49e1bd,null));};exports[_0xe128('0x5f')]=function(_0x56efd4,_0x4f8e08){return db[_0xe128('0x2a')][_0xe128('0x5f')](_0x56efd4[_0xe128('0x60')],{})[_0xe128('0x22')](respondWithResult(_0x4f8e08,0xc9))[_0xe128('0x59')](handleError(_0x4f8e08,null));};exports['update']=function(_0x218087,_0x5a76b6){if(_0x218087[_0xe128('0x60')]['id']){delete _0x218087['body']['id'];}return db[_0xe128('0x2a')]['find']({'where':{'id':_0x218087[_0xe128('0x5b')]['id']}})[_0xe128('0x22')](handleEntityNotFound(_0x5a76b6,null))[_0xe128('0x22')](saveUpdates(_0x218087[_0xe128('0x60')],null))[_0xe128('0x22')](respondWithResult(_0x5a76b6,null))[_0xe128('0x59')](handleError(_0x5a76b6,null));};exports[_0xe128('0x23')]=function(_0x17fa58,_0x3f1225){return db['MailInteraction'][_0xe128('0x5e')]({'where':{'id':_0x17fa58[_0xe128('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3f1225,null))[_0xe128('0x22')](removeEntity(_0x3f1225,null))[_0xe128('0x59')](handleError(_0x3f1225,null));};exports['describe']=function(_0x2309d4,_0x2f37ce){return db[_0xe128('0x2a')][_0xe128('0x61')]()['then'](respondWithResult(_0x2f37ce,null))[_0xe128('0x59')](handleError(_0x2f37ce,null));};exports[_0xe128('0x62')]=function(_0x3c98b8,_0xfef4dd,_0x52c003){return db['MailMessage']['find']({'where':{'id':_0x3c98b8[_0xe128('0x5b')]['id']}})[_0xe128('0x22')](handleEntityNotFound(_0xfef4dd,null))[_0xe128('0x22')](function(_0x46b192){if(_0x46b192){return _0x46b192['addMessage'](_0x3c98b8['body']['ids'],_['omit'](_0x3c98b8[_0xe128('0x60')],[_0xe128('0x63'),'id'])||{});}})[_0xe128('0x22')](respondWithResult(_0xfef4dd,null))[_0xe128('0x59')](handleError(_0xfef4dd,null));};exports[_0xe128('0x64')]=function(_0x4a63ee,_0x152150,_0x15482c){var _0x29a519={'raw':![],'where':{}};var _0x4b3e6a={};var _0x25d838={'count':0x0,'rows':[]};return db[_0xe128('0x2a')][_0xe128('0x65')]({'where':{'id':_0x4a63ee['params']['id']}})[_0xe128('0x22')](handleEntityNotFound(_0x152150,null))['then'](function(_0x1a12ab){if(_0x1a12ab){_0x4b3e6a[_0xe128('0x2c')]=_['keys'](db[_0xe128('0x48')]['rawAttributes']);_0x4b3e6a['query']=_[_0xe128('0x2d')](_0x4a63ee[_0xe128('0x2e')]);_0x4b3e6a[_0xe128('0x31')]=_['intersection'](_0x4b3e6a[_0xe128('0x2c')],_0x4b3e6a[_0xe128('0x2e')]);_0x29a519[_0xe128('0x33')]=_[_0xe128('0x32')](_0x4b3e6a[_0xe128('0x2c')],qs[_0xe128('0x34')](_0x4a63ee['query']['fields']));_0x29a519[_0xe128('0x33')]=_0x29a519[_0xe128('0x33')]['length']?_0x29a519[_0xe128('0x33')]:_0x4b3e6a[_0xe128('0x2c')];if(!_0x4a63ee[_0xe128('0x2e')][_0xe128('0x66')](_0xe128('0x67'))){_0x29a519['limit']=qs[_0xe128('0x35')](_0x4a63ee[_0xe128('0x2e')][_0xe128('0x35')]);_0x29a519[_0xe128('0x36')]=qs[_0xe128('0x36')](_0x4a63ee[_0xe128('0x2e')][_0xe128('0x36')]);}_0x29a519[_0xe128('0x68')]=qs['sort'](_0x4a63ee[_0xe128('0x2e')][_0xe128('0x37')]);_0x29a519[_0xe128('0x3c')]=qs[_0xe128('0x31')](_[_0xe128('0x38')](_0x4a63ee[_0xe128('0x2e')],_0x4b3e6a[_0xe128('0x31')]));_0x29a519[_0xe128('0x3c')]['MailInteractionId']=_0x1a12ab['id'];if(_0x4a63ee[_0xe128('0x2e')]['filter']){_0x29a519[_0xe128('0x3c')]=_['merge'](_0x29a519[_0xe128('0x3c')],{'$or':_[_0xe128('0x69')](_0x29a519[_0xe128('0x33')],function(_0x446803){var _0x2230cc={};_0x2230cc[_0x446803]={'$like':'%'+_0x4a63ee[_0xe128('0x2e')]['filter']+'%'};return _0x2230cc;})});}if(_0x4a63ee[_0xe128('0x2e')]['$gte']){var _0x4375a5=_0x4a63ee['query']['$gte'][_0xe128('0x6a')](',');var _0x558fc7={};_0x558fc7[_0x4375a5[0x0]]={'$gte':moment(_0x4375a5[0x1])[_0xe128('0x6b')](_0xe128('0x6c'))};_0x29a519[_0xe128('0x3c')]=_[_0xe128('0x3b')](_0x29a519[_0xe128('0x3c')],_0x558fc7);}_0x29a519=_['merge']({},_0x29a519,_0x4a63ee['options']);return db[_0xe128('0x48')]['count']({'where':_0x29a519[_0xe128('0x3c')]})[_0xe128('0x22')](function(_0x437715){_0x25d838[_0xe128('0x1d')]=_0x437715;if(_0x4a63ee[_0xe128('0x2e')][_0xe128('0x5d')]){_0x29a519[_0xe128('0x42')]=[{'all':!![]}];}return db[_0xe128('0x48')][_0xe128('0x6d')](_0x29a519);})[_0xe128('0x22')](function(_0x30de60){_0x25d838[_0xe128('0x6e')]=_0x30de60;return _0x25d838;});}})[_0xe128('0x22')](respondWithFilteredResult(_0x152150,_0x29a519))[_0xe128('0x59')](handleError(_0x152150,null));};exports[_0xe128('0x6f')]=function(_0xcebb28,_0x437ec3,_0x264586){return db['MailInteraction'][_0xe128('0x5e')]({'where':{'id':_0xcebb28[_0xe128('0x5b')]['id']}})[_0xe128('0x22')](handleEntityNotFound(_0x437ec3,null))[_0xe128('0x22')](function(_0x1e3e83){if(_0x1e3e83){return _0x1e3e83['setTags'](_0xcebb28[_0xe128('0x60')]['ids'],_[_0xe128('0x70')](_0xcebb28[_0xe128('0x60')],[_0xe128('0x63'),'id'])||{})['spread'](function(){return db['Tag'][_0xe128('0x6d')]({'attributes':['id',_0xe128('0x27'),_0xe128('0x57')],'where':{'id':_0xcebb28[_0xe128('0x60')][_0xe128('0x63')]}});})[_0xe128('0x22')](function(_0x3e4514){socket[_0xe128('0x71')]('mailInteractionTags:save',{'id':Number(_0xcebb28[_0xe128('0x5b')]['id']),'tags':_0x3e4514||[]});return{'id':Number(_0xcebb28[_0xe128('0x5b')]['id']),'tags':_0x3e4514||[]};});}})[_0xe128('0x22')](respondWithResult(_0x437ec3,null))['catch'](handleError(_0x437ec3,null));};exports[_0xe128('0x72')]=function(_0x2cb918,_0x2e7658,_0x1d8e21){var _0x2bbd3f;return db[_0xe128('0x2a')][_0xe128('0x5e')]({'where':{'id':_0x2cb918[_0xe128('0x5b')]['id']}})[_0xe128('0x22')](handleEntityNotFound(_0x2e7658,null))[_0xe128('0x22')](function(_0x3abd50){if(_0x3abd50){return _0x3abd50[_0xe128('0x72')](_0x2cb918[_0xe128('0x2e')][_0xe128('0x63')]);}})[_0xe128('0x22')](respondWithStatusCode(_0x2e7658,null))['catch'](handleError(_0x2e7658,null));};exports['download']=function(_0x33cfa1,_0x2111c0){var _0x23320e=moment()['unix']()[_0xe128('0x73')]();var _0x288cfa=path['join'](config[_0xe128('0x74')],_0xe128('0x75'),_0xe128('0x76'),_0xe128('0x77'));var _0x3db10c=path[_0xe128('0x78')](config[_0xe128('0x74')],'server',_0xe128('0x76'),_0xe128('0x79'));var _0x3007ec=path[_0xe128('0x78')](_0x3db10c,_0x23320e);var _0x2ee4d5=util[_0xe128('0x6b')]('interaction-%s.zip',_0x23320e);var _0x3fbe61=path['join'](_0x3db10c,_0x2ee4d5);var _0x275969=![];return db[_0xe128('0x2a')][_0xe128('0x5e')]({'where':{'id':_0x33cfa1[_0xe128('0x5b')]['id']}})[_0xe128('0x22')](handleEntityNotFound(_0x2111c0,null))[_0xe128('0x22')](function(_0x3b6010){if(_0x3b6010){return _0x3b6010['getMessages']({'attributes':['id','body','from','to','cc',_0xe128('0x7a'),_0xe128('0x4b')],'where':{'secret':![]},'include':_0x33cfa1[_0xe128('0x2e')]['attachments']?[{'model':db[_0xe128('0x7b')],'as':_0xe128('0x7c')}]:undefined,'order':qs['sort']('id')});}return[];})[_0xe128('0x22')](function(_0x3ffc0e){_0x275969=_0x3ffc0e['length'];if(_0x3ffc0e[_0xe128('0x5c')]){fs[_0xe128('0x7d')](_0x3007ec);return BPromise[_0xe128('0x7e')](_0x3ffc0e,function(_0x2b0522,_0x288ea0){var _0x3aaaed=_0x2b0522;var _0x2f33d0={'from':_0x3aaaed[_0xe128('0x7f')],'to':_0x3aaaed['to'],'subject':_0x3aaaed['subject'],'html':_0x3aaaed[_0xe128('0x60')],'attachments':[]};return new BPromise(function(_0x28c9f0,_0x37f5a2){if(_0x2b0522[_0xe128('0x7c')]){for(var _0x5965c2=0x0;_0x5965c2<_0x2b0522[_0xe128('0x7c')][_0xe128('0x5c')];_0x5965c2++){var _0x14ba37=_0x2b0522[_0xe128('0x7c')][_0x5965c2];var _0x10a512=path[_0xe128('0x78')](_0x288cfa,_0x14ba37[_0xe128('0x80')]);if(fs[_0xe128('0x81')](_0x10a512)){_0x2f33d0[_0xe128('0x77')][_0xe128('0x44')]({'name':_0x14ba37[_0xe128('0x27')],'contentType':_0x14ba37['type'],'data':fs[_0xe128('0x82')](_0x10a512)});}}}emlformat[_0xe128('0x83')](_0x2f33d0,function(_0x5def80,_0x19d312){if(_0x5def80)return _0x37f5a2(_0x5def80);fs[_0xe128('0x84')](path['join'](_0x3007ec,util[_0xe128('0x6b')](_0xe128('0x85'),_0x288ea0)),_0x19d312);return _0x28c9f0(_0x19d312);});});});}})[_0xe128('0x22')](function(){if(_0x275969){return new BPromise(function(_0x7960e0,_0x4b1589){zipdir(_0x3007ec,{'saveTo':_0x3fbe61},function(_0x263489,_0x158f69){if(_0x263489)return _0x4b1589(_0x263489);return _0x7960e0(_0x158f69);});});}})[_0xe128('0x22')](function(){if(_0x275969){return new BPromise(function(_0x473929,_0x5200c5){rimraf(_0x3007ec,function(_0x328cc2){if(_0x328cc2)_0x5200c5(_0x328cc2);return _0x473929();});});}})['then'](function(){if(_0x275969){return _0x2111c0[_0xe128('0x86')](_0x3fbe61,_0x2ee4d5,function(_0x1b619f){if(_0x1b619f){console['log']('err',_0x1b619f);}else{fs[_0xe128('0x87')](_0x3fbe61);}});}else{return _0x2111c0[_0xe128('0x1a')](0xc8);}})[_0xe128('0x59')](handleError(_0x2111c0,null));};
\ No newline at end of file
+var _0x03cd=['includeAll','User','Users','fullname','CmContact','Contact','Owner','internal','Account','email','color','Tag','ThroughTags','rows','show','params','options','find','catch','create','body','destroy','describe','addMessage','ids','getMessages','findOne','MailInteractionId','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','omit','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','files','attachments','server','tmp','interaction-%s.zip','from','subject','Attachment','Attachments','mkdirSync','each','basename','existsSync','build','writeFileSync','message%d.eml','log','err','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','end','json','count','offset','status','Content-Range','reject','save','update','then','error','stack','name','send','MailInteraction','rawAttributes','query','dateStart','dateEnd','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','add','day','merge','map','type','key','filter','tag','push','distinct','read','include','MailMessage','Messages','direction','createdAt'];(function(_0x3dc55d,_0xd07e93){var _0x3aa7f3=function(_0x506b46){while(--_0x506b46){_0x3dc55d['push'](_0x3dc55d['shift']());}};_0x3aa7f3(++_0xd07e93);}(_0x03cd,0x1e8));var _0xd03c=function(_0x12fbd7,_0x271c13){_0x12fbd7=_0x12fbd7-0x0;var _0x381f9e=_0x03cd[_0x12fbd7];return _0x381f9e;};'use strict';var pdf=require(_0xd03c('0x0'));var emlformat=require(_0xd03c('0x1'));var rimraf=require(_0xd03c('0x2'));var zipdir=require(_0xd03c('0x3'));var jsonpatch=require(_0xd03c('0x4'));var rp=require(_0xd03c('0x5'));var moment=require(_0xd03c('0x6'));var BPromise=require(_0xd03c('0x7'));var Mustache=require(_0xd03c('0x8'));var util=require('util');var path=require(_0xd03c('0x9'));var sox=require(_0xd03c('0xa'));var csv=require(_0xd03c('0xb'));var ejs=require(_0xd03c('0xc'));var fs=require('fs');var _=require(_0xd03c('0xd'));var squel=require(_0xd03c('0xe'));var crypto=require(_0xd03c('0xf'));var jsforce=require(_0xd03c('0x10'));var deskjs=require(_0xd03c('0x11'));var toCsv=require(_0xd03c('0xb'));var querystring=require(_0xd03c('0x12'));var Papa=require(_0xd03c('0x13'));var Redis=require('ioredis');var qs=require(_0xd03c('0x14'));var logger=require(_0xd03c('0x15'))(_0xd03c('0x16'));var utils=require('../../config/utils');var config=require(_0xd03c('0x17'));var db=require(_0xd03c('0x18'))['db'];config['redis']=_[_0xd03c('0x19')](config[_0xd03c('0x1a')],{'host':_0xd03c('0x1b'),'port':0x18eb});var socket=require(_0xd03c('0x1c'))(new Redis(config[_0xd03c('0x1a')]));require(_0xd03c('0x1d'))['register'](socket);function respondWithStatusCode(_0xa6b9e9,_0x2cf1be){_0x2cf1be=_0x2cf1be||0xcc;return function(_0x13050e){if(_0x13050e){return _0xa6b9e9[_0xd03c('0x1e')](_0x2cf1be);}return _0xa6b9e9['status'](_0x2cf1be)[_0xd03c('0x1f')]();};}function respondWithResult(_0x177ce8,_0x1f2191){_0x1f2191=_0x1f2191||0xc8;return function(_0x1c2934){if(_0x1c2934){return _0x177ce8['status'](_0x1f2191)[_0xd03c('0x20')](_0x1c2934);}};}function respondWithFilteredResult(_0xd08195,_0x56e8af){return function(_0x534c68){if(_0x534c68){var _0x12f65d=_0x534c68[_0xd03c('0x21')],_0x42edcf=_0x56e8af[_0xd03c('0x22')],_0x4d2f14=_0x56e8af[_0xd03c('0x22')]+_0x56e8af['limit'],_0x198be9;if(_0x4d2f14>=_0x12f65d){_0x4d2f14=_0x12f65d;_0x198be9=0xc8;}else{_0x198be9=0xce;}_0xd08195[_0xd03c('0x23')](_0x198be9);return _0xd08195['set'](_0xd03c('0x24'),_0x42edcf+'-'+_0x4d2f14+'/'+_0x12f65d)[_0xd03c('0x20')](_0x534c68);}return null;};}function patchUpdates(_0x5c5b29){return function(_0x985416){try{jsonpatch['apply'](_0x985416,_0x5c5b29,!![]);}catch(_0xc1c3bd){return BPromise[_0xd03c('0x25')](_0xc1c3bd);}return _0x985416[_0xd03c('0x26')]();};}function saveUpdates(_0xc6baed,_0x2faf40){return function(_0x442ab8){if(_0x442ab8){return _0x442ab8[_0xd03c('0x27')](_0xc6baed)[_0xd03c('0x28')](function(_0x260319){return _0x260319;});}return null;};}function removeEntity(_0x3abd75,_0x1cb9e8){return function(_0x57c815){if(_0x57c815){return _0x57c815['destroy']()[_0xd03c('0x28')](function(){_0x3abd75[_0xd03c('0x23')](0xcc)[_0xd03c('0x1f')]();});}};}function handleEntityNotFound(_0x133c26,_0x234adc){return function(_0xe0c6af){if(!_0xe0c6af){_0x133c26[_0xd03c('0x1e')](0x194);}return _0xe0c6af;};}function handleError(_0x23862,_0x53ddc7){_0x53ddc7=_0x53ddc7||0x1f4;return function(_0x394d33){logger[_0xd03c('0x29')](_0x394d33[_0xd03c('0x2a')]);if(_0x394d33[_0xd03c('0x2b')]){delete _0x394d33[_0xd03c('0x2b')];}_0x23862[_0xd03c('0x23')](_0x53ddc7)[_0xd03c('0x2c')](_0x394d33);};}exports['index']=function(_0x3b75b0,_0x5eca8e){var _0x153481={},_0x74e671={},_0x13db0c={'count':0x0,'rows':[]};var _0x20ea86=db[_0xd03c('0x2d')][_0xd03c('0x2e')];_0x74e671['model']=_['keys'](_0x20ea86);var _0x3db994={'dateStart':_0x3b75b0[_0xd03c('0x2f')]['dateStart'],'dateEnd':_0x3b75b0[_0xd03c('0x2f')]['dateEnd']};delete _0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x30')];delete _0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x31')];_0x74e671[_0xd03c('0x2f')]=_[_0xd03c('0x32')](_0x3b75b0['query']);_0x74e671['filters']=_[_0xd03c('0x33')](_0x74e671['model'],_0x74e671[_0xd03c('0x2f')]);_0x153481['attributes']=_[_0xd03c('0x33')](_0x74e671[_0xd03c('0x34')],qs[_0xd03c('0x35')](_0x3b75b0['query']['fields']));_0x153481[_0xd03c('0x36')]=_0x153481['attributes'][_0xd03c('0x37')]?_0x153481['attributes']:_0x74e671['model'];if(!_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x38')](_0xd03c('0x39'))){_0x153481['limit']=qs[_0xd03c('0x3a')](_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x3a')]);_0x153481['offset']=qs[_0xd03c('0x22')](_0x3b75b0['query']['offset']);}_0x153481[_0xd03c('0x3b')]=qs['sort'](_0x3b75b0['query'][_0xd03c('0x3c')]);_0x153481[_0xd03c('0x3d')]=qs[_0xd03c('0x3e')](_[_0xd03c('0x3f')](_0x3b75b0[_0xd03c('0x2f')],_0x74e671[_0xd03c('0x3e')]));if(_0x3db994[_0xd03c('0x30')]){if(_0x3db994[_0xd03c('0x31')]){_0x3db994[_0xd03c('0x31')]=moment(_0x3db994[_0xd03c('0x31')])[_0xd03c('0x40')](0x1,_0xd03c('0x41'));}else{_0x3db994[_0xd03c('0x31')]=moment(_0x3db994[_0xd03c('0x30')])[_0xd03c('0x40')](0x1,'day');}_[_0xd03c('0x42')](_0x153481[_0xd03c('0x3d')],{'createdAt':{'$gte':_0x3db994[_0xd03c('0x30')],'$lte':_0x3db994[_0xd03c('0x31')]}});}if(_0x3b75b0['query']['filter']){_0x153481[_0xd03c('0x3d')]=_['merge'](_0x153481['where'],{'$or':_[_0xd03c('0x43')](_0x20ea86,function(_0x55e8b3){if(_0x55e8b3[_0xd03c('0x44')][_0xd03c('0x45')]!=='VIRTUAL'){var _0x6c7f2={};_0x6c7f2[_0x55e8b3['field']]={'$like':'%'+_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x46')]+'%'};return _0x6c7f2;}})});}_0x153481=_[_0xd03c('0x42')]({},_0x153481,_0x3b75b0['options']);var _0x339133={'where':_0x153481['where']};_0x339133['include']=[];if(_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x47')]){_0x339133['include'][_0xd03c('0x48')]({'model':db['Tag'],'as':'Tags','attributes':['id'],'where':{'id':_0x3b75b0[_0xd03c('0x2f')]['tag']},'required':!![]});_0x339133[_0xd03c('0x49')]=!![];}if(_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x4a')]){_0x339133[_0xd03c('0x4b')]['push']({'model':db[_0xd03c('0x4c')],'as':_0xd03c('0x4d'),'attributes':['id',_0xd03c('0x4e'),_0xd03c('0x4f'),_0xd03c('0x4a')],'where':{'direction':'in','read':_0x3b75b0['query'][_0xd03c('0x4a')]||![]},'required':!![]});_0x339133[_0xd03c('0x49')]=!![];}return db[_0xd03c('0x2d')]['count'](_0x339133)[_0xd03c('0x28')](function(_0x329ab5){_0x13db0c[_0xd03c('0x21')]=_0x329ab5;if(_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x50')]){_0x153481[_0xd03c('0x4b')]=[{'model':db[_0xd03c('0x51')],'as':_0xd03c('0x52'),'required':![],'attributes':['id',_0xd03c('0x2b'),_0xd03c('0x53')]},{'model':db[_0xd03c('0x54')],'as':_0xd03c('0x55'),'required':![]},{'model':db[_0xd03c('0x51')],'as':_0xd03c('0x56'),'attributes':[_0xd03c('0x2b'),_0xd03c('0x53'),_0xd03c('0x57')],'required':![]},{'model':db['MailAccount'],'as':_0xd03c('0x58'),'attributes':[_0xd03c('0x2b'),'key',_0xd03c('0x59')],'required':![]},{'model':db[_0xd03c('0x4c')],'as':_0xd03c('0x4d'),'attributes':['id',_0xd03c('0x4e'),_0xd03c('0x4f'),_0xd03c('0x4a')],'where':{'direction':'in','read':_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x4a')]||![]},'required':_0x3b75b0[_0xd03c('0x2f')]['read']||![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0xd03c('0x2b'),_0xd03c('0x5a')],'required':_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x47')]?!![]:![]},{'model':db[_0xd03c('0x5b')],'as':_0xd03c('0x5c'),'attributes':['id',_0xd03c('0x2b'),_0xd03c('0x5a')],'through':_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x47')]?{'attributes':[],'where':{'TagId':_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x47')]||undefined}}:{},'required':_0x3b75b0[_0xd03c('0x2f')][_0xd03c('0x47')]?!![]:![]}];}return db['MailInteraction']['findAll'](_0x153481);})[_0xd03c('0x28')](function(_0x3aa049){_0x13db0c[_0xd03c('0x5d')]=_0x3aa049;return _0x13db0c;})['then'](respondWithFilteredResult(_0x5eca8e,_0x153481))['catch'](handleError(_0x5eca8e,null));};exports[_0xd03c('0x5e')]=function(_0x58bc67,_0x578263){var _0x3360b5={'raw':![],'where':{'id':_0x58bc67[_0xd03c('0x5f')]['id']}},_0x406b8b={};_0x406b8b[_0xd03c('0x34')]=_[_0xd03c('0x32')](db[_0xd03c('0x2d')][_0xd03c('0x2e')]);_0x406b8b['query']=_['keys'](_0x58bc67[_0xd03c('0x2f')]);_0x406b8b[_0xd03c('0x3e')]=_[_0xd03c('0x33')](_0x406b8b[_0xd03c('0x34')],_0x406b8b[_0xd03c('0x2f')]);_0x3360b5['attributes']=_[_0xd03c('0x33')](_0x406b8b[_0xd03c('0x34')],qs[_0xd03c('0x35')](_0x58bc67[_0xd03c('0x2f')][_0xd03c('0x35')]));_0x3360b5[_0xd03c('0x36')]=_0x3360b5['attributes'][_0xd03c('0x37')]?_0x3360b5[_0xd03c('0x36')]:_0x406b8b[_0xd03c('0x34')];if(_0x58bc67[_0xd03c('0x2f')][_0xd03c('0x50')]){_0x3360b5[_0xd03c('0x4b')]=[{'all':!![]}];}_0x3360b5=_['merge']({},_0x3360b5,_0x58bc67[_0xd03c('0x60')]);return db[_0xd03c('0x2d')][_0xd03c('0x61')](_0x3360b5)[_0xd03c('0x28')](handleEntityNotFound(_0x578263,null))[_0xd03c('0x28')](respondWithResult(_0x578263,null))[_0xd03c('0x62')](handleError(_0x578263,null));};exports['create']=function(_0x1697f9,_0x55addf){return db['MailInteraction'][_0xd03c('0x63')](_0x1697f9[_0xd03c('0x64')],{})[_0xd03c('0x28')](respondWithResult(_0x55addf,0xc9))[_0xd03c('0x62')](handleError(_0x55addf,null));};exports['update']=function(_0x41bf16,_0x65264c){if(_0x41bf16[_0xd03c('0x64')]['id']){delete _0x41bf16[_0xd03c('0x64')]['id'];}return db['MailInteraction'][_0xd03c('0x61')]({'where':{'id':_0x41bf16[_0xd03c('0x5f')]['id']}})[_0xd03c('0x28')](handleEntityNotFound(_0x65264c,null))[_0xd03c('0x28')](saveUpdates(_0x41bf16['body'],null))['then'](respondWithResult(_0x65264c,null))[_0xd03c('0x62')](handleError(_0x65264c,null));};exports[_0xd03c('0x65')]=function(_0x5221b9,_0x530206){return db[_0xd03c('0x2d')][_0xd03c('0x61')]({'where':{'id':_0x5221b9[_0xd03c('0x5f')]['id']}})['then'](handleEntityNotFound(_0x530206,null))[_0xd03c('0x28')](removeEntity(_0x530206,null))[_0xd03c('0x62')](handleError(_0x530206,null));};exports[_0xd03c('0x66')]=function(_0x408bef,_0x476902){return db['MailInteraction'][_0xd03c('0x66')]()[_0xd03c('0x28')](respondWithResult(_0x476902,null))['catch'](handleError(_0x476902,null));};exports['addMessage']=function(_0x18f21a,_0x532427,_0xd587a6){return db[_0xd03c('0x4c')]['find']({'where':{'id':_0x18f21a[_0xd03c('0x5f')]['id']}})['then'](handleEntityNotFound(_0x532427,null))[_0xd03c('0x28')](function(_0x259b76){if(_0x259b76){return _0x259b76[_0xd03c('0x67')](_0x18f21a[_0xd03c('0x64')][_0xd03c('0x68')],_['omit'](_0x18f21a[_0xd03c('0x64')],['ids','id'])||{});}})['then'](respondWithResult(_0x532427,null))[_0xd03c('0x62')](handleError(_0x532427,null));};exports[_0xd03c('0x69')]=function(_0x4d3d86,_0x3f24df,_0x23adeb){var _0x5b5f43={'raw':![],'where':{}};var _0x4e073a={};var _0x15fa76={'count':0x0,'rows':[]};return db[_0xd03c('0x2d')][_0xd03c('0x6a')]({'where':{'id':_0x4d3d86[_0xd03c('0x5f')]['id']}})[_0xd03c('0x28')](handleEntityNotFound(_0x3f24df,null))['then'](function(_0x13cc0d){if(_0x13cc0d){_0x4e073a[_0xd03c('0x34')]=_['keys'](db[_0xd03c('0x4c')][_0xd03c('0x2e')]);_0x4e073a[_0xd03c('0x2f')]=_[_0xd03c('0x32')](_0x4d3d86['query']);_0x4e073a[_0xd03c('0x3e')]=_[_0xd03c('0x33')](_0x4e073a[_0xd03c('0x34')],_0x4e073a[_0xd03c('0x2f')]);_0x5b5f43[_0xd03c('0x36')]=_['intersection'](_0x4e073a[_0xd03c('0x34')],qs[_0xd03c('0x35')](_0x4d3d86[_0xd03c('0x2f')]['fields']));_0x5b5f43[_0xd03c('0x36')]=_0x5b5f43['attributes'][_0xd03c('0x37')]?_0x5b5f43['attributes']:_0x4e073a[_0xd03c('0x34')];if(!_0x4d3d86[_0xd03c('0x2f')][_0xd03c('0x38')](_0xd03c('0x39'))){_0x5b5f43[_0xd03c('0x3a')]=qs['limit'](_0x4d3d86['query']['limit']);_0x5b5f43[_0xd03c('0x22')]=qs[_0xd03c('0x22')](_0x4d3d86[_0xd03c('0x2f')][_0xd03c('0x22')]);}_0x5b5f43[_0xd03c('0x3b')]=qs[_0xd03c('0x3c')](_0x4d3d86[_0xd03c('0x2f')][_0xd03c('0x3c')]);_0x5b5f43[_0xd03c('0x3d')]=qs[_0xd03c('0x3e')](_[_0xd03c('0x3f')](_0x4d3d86[_0xd03c('0x2f')],_0x4e073a['filters']));_0x5b5f43[_0xd03c('0x3d')][_0xd03c('0x6b')]=_0x13cc0d['id'];if(_0x4d3d86[_0xd03c('0x2f')][_0xd03c('0x46')]){_0x5b5f43[_0xd03c('0x3d')]=_[_0xd03c('0x42')](_0x5b5f43[_0xd03c('0x3d')],{'$or':_[_0xd03c('0x43')](_0x5b5f43[_0xd03c('0x36')],function(_0x1b7711){var _0x3dfc49={};_0x3dfc49[_0x1b7711]={'$like':'%'+_0x4d3d86[_0xd03c('0x2f')][_0xd03c('0x46')]+'%'};return _0x3dfc49;})});}if(_0x4d3d86[_0xd03c('0x2f')][_0xd03c('0x6c')]){var _0x578183=_0x4d3d86[_0xd03c('0x2f')][_0xd03c('0x6c')][_0xd03c('0x6d')](',');var _0x47d9a2={};_0x47d9a2[_0x578183[0x0]]={'$gte':moment(_0x578183[0x1])[_0xd03c('0x6e')](_0xd03c('0x6f'))};_0x5b5f43[_0xd03c('0x3d')]=_[_0xd03c('0x42')](_0x5b5f43[_0xd03c('0x3d')],_0x47d9a2);}_0x5b5f43=_['merge']({},_0x5b5f43,_0x4d3d86[_0xd03c('0x60')]);return db[_0xd03c('0x4c')][_0xd03c('0x21')]({'where':_0x5b5f43[_0xd03c('0x3d')]})['then'](function(_0x5015b8){_0x15fa76['count']=_0x5015b8;if(_0x4d3d86[_0xd03c('0x2f')][_0xd03c('0x50')]){_0x5b5f43[_0xd03c('0x4b')]=[{'all':!![]}];}return db['MailMessage'][_0xd03c('0x70')](_0x5b5f43);})[_0xd03c('0x28')](function(_0x1558f7){_0x15fa76[_0xd03c('0x5d')]=_0x1558f7;return _0x15fa76;});}})[_0xd03c('0x28')](respondWithFilteredResult(_0x3f24df,_0x5b5f43))[_0xd03c('0x62')](handleError(_0x3f24df,null));};exports[_0xd03c('0x71')]=function(_0x36927a,_0x50ee6b,_0x566fb7){return db['MailInteraction']['find']({'where':{'id':_0x36927a[_0xd03c('0x5f')]['id']}})['then'](handleEntityNotFound(_0x50ee6b,null))['then'](function(_0xa5c88f){if(_0xa5c88f){return _0xa5c88f[_0xd03c('0x72')](_0x36927a[_0xd03c('0x64')][_0xd03c('0x68')],_[_0xd03c('0x73')](_0x36927a[_0xd03c('0x64')],[_0xd03c('0x68'),'id'])||{})['spread'](function(){return db[_0xd03c('0x5b')][_0xd03c('0x70')]({'attributes':['id',_0xd03c('0x2b'),_0xd03c('0x5a')],'where':{'id':_0x36927a[_0xd03c('0x64')][_0xd03c('0x68')]}});})[_0xd03c('0x28')](function(_0x396d51){socket[_0xd03c('0x74')](_0xd03c('0x75'),{'id':Number(_0x36927a[_0xd03c('0x5f')]['id']),'tags':_0x396d51||[]});return{'id':Number(_0x36927a['params']['id']),'tags':_0x396d51||[]};});}})[_0xd03c('0x28')](respondWithResult(_0x50ee6b,null))['catch'](handleError(_0x50ee6b,null));};exports[_0xd03c('0x76')]=function(_0x56719b,_0x10c47b,_0x453f1b){var _0x27d101;return db[_0xd03c('0x2d')][_0xd03c('0x61')]({'where':{'id':_0x56719b[_0xd03c('0x5f')]['id']}})[_0xd03c('0x28')](handleEntityNotFound(_0x10c47b,null))[_0xd03c('0x28')](function(_0x109190){if(_0x109190){return _0x109190[_0xd03c('0x76')](_0x56719b['query'][_0xd03c('0x68')]);}})[_0xd03c('0x28')](respondWithStatusCode(_0x10c47b,null))[_0xd03c('0x62')](handleError(_0x10c47b,null));};exports[_0xd03c('0x77')]=function(_0x1413d5,_0x58dc9f){var _0x45372f=moment()[_0xd03c('0x78')]()[_0xd03c('0x79')]();var _0x4cf599=path[_0xd03c('0x7a')](config[_0xd03c('0x7b')],'server',_0xd03c('0x7c'),_0xd03c('0x7d'));var _0x10d4a0=path[_0xd03c('0x7a')](config['root'],_0xd03c('0x7e'),'files',_0xd03c('0x7f'));var _0x39465c=path[_0xd03c('0x7a')](_0x10d4a0,_0x45372f);var _0x21d47a=util[_0xd03c('0x6e')](_0xd03c('0x80'),_0x45372f);var _0x5d93b0=path[_0xd03c('0x7a')](_0x10d4a0,_0x21d47a);var _0x1fc86b=![];return db['MailInteraction'][_0xd03c('0x61')]({'where':{'id':_0x1413d5[_0xd03c('0x5f')]['id']}})['then'](handleEntityNotFound(_0x58dc9f,null))[_0xd03c('0x28')](function(_0x1ca566){if(_0x1ca566){return _0x1ca566[_0xd03c('0x69')]({'attributes':['id',_0xd03c('0x64'),_0xd03c('0x81'),'to','cc',_0xd03c('0x82'),'createdAt'],'where':{'secret':![]},'include':_0x1413d5['query'][_0xd03c('0x7d')]?[{'model':db[_0xd03c('0x83')],'as':_0xd03c('0x84')}]:undefined,'order':qs['sort']('id')});}return[];})[_0xd03c('0x28')](function(_0x2be99f){_0x1fc86b=_0x2be99f['length'];if(_0x2be99f[_0xd03c('0x37')]){fs[_0xd03c('0x85')](_0x39465c);return BPromise[_0xd03c('0x86')](_0x2be99f,function(_0x44894c,_0x28c1ca){var _0x1fa4eb=_0x44894c;var _0x10385={'from':_0x1fa4eb[_0xd03c('0x81')],'to':_0x1fa4eb['to'],'subject':_0x1fa4eb[_0xd03c('0x82')],'html':_0x1fa4eb[_0xd03c('0x64')],'attachments':[]};return new BPromise(function(_0x551119,_0x4b3d9d){if(_0x44894c['Attachments']){for(var _0x34835b=0x0;_0x34835b<_0x44894c[_0xd03c('0x84')][_0xd03c('0x37')];_0x34835b++){var _0x3ec001=_0x44894c['Attachments'][_0x34835b];var _0x56d094=path['join'](_0x4cf599,_0x3ec001[_0xd03c('0x87')]);if(fs[_0xd03c('0x88')](_0x56d094)){_0x10385[_0xd03c('0x7d')][_0xd03c('0x48')]({'name':_0x3ec001[_0xd03c('0x2b')],'contentType':_0x3ec001[_0xd03c('0x44')],'data':fs['readFileSync'](_0x56d094)});}}}emlformat[_0xd03c('0x89')](_0x10385,function(_0x546ee7,_0x555de7){if(_0x546ee7)return _0x4b3d9d(_0x546ee7);fs[_0xd03c('0x8a')](path['join'](_0x39465c,util[_0xd03c('0x6e')](_0xd03c('0x8b'),_0x28c1ca)),_0x555de7);return _0x551119(_0x555de7);});});});}})['then'](function(){if(_0x1fc86b){return new BPromise(function(_0x22a0f0,_0x45a7fd){zipdir(_0x39465c,{'saveTo':_0x5d93b0},function(_0x346456,_0x3f929c){if(_0x346456)return _0x45a7fd(_0x346456);return _0x22a0f0(_0x3f929c);});});}})[_0xd03c('0x28')](function(){if(_0x1fc86b){return new BPromise(function(_0x4dda36,_0x1f3070){rimraf(_0x39465c,function(_0x127cc3){if(_0x127cc3)_0x1f3070(_0x127cc3);return _0x4dda36();});});}})[_0xd03c('0x28')](function(){if(_0x1fc86b){return _0x58dc9f[_0xd03c('0x77')](_0x5d93b0,_0x21d47a,function(_0xae8be0){if(_0xae8be0){console[_0xd03c('0x8c')](_0xd03c('0x8d'),_0xae8be0);}else{fs['unlinkSync'](_0x5d93b0);}});}else{return _0x58dc9f[_0xd03c('0x1e')](0xc8);}})[_0xd03c('0x62')](handleError(_0x58dc9f,null));};
\ No newline at end of file
index 22912f1..900ee9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8abc=['../../mysqldb','MailInteraction','setMaxListeners','update','remove','emit','hasOwnProperty','exports','events'];(function(_0x1776ad,_0x587310){var _0x54c329=function(_0x1cf363){while(--_0x1cf363){_0x1776ad['push'](_0x1776ad['shift']());}};_0x54c329(++_0x587310);}(_0x8abc,0xe9));var _0xc8ab=function(_0x12aa0d,_0x46735a){_0x12aa0d=_0x12aa0d-0x0;var _0x30ee40=_0x8abc[_0x12aa0d];return _0x30ee40;};'use strict';var EventEmitter=require(_0xc8ab('0x0'));var MailInteraction=require(_0xc8ab('0x1'))['db'][_0xc8ab('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xc8ab('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc8ab('0x4'),'afterDestroy':_0xc8ab('0x5')};function emitEvent(_0x13dac5){return function(_0x571ecb,_0x10a6f6,_0xaab0f7){MailInteractionEvents[_0xc8ab('0x6')](_0x13dac5+':'+_0x571ecb['id'],_0x571ecb);MailInteractionEvents['emit'](_0x13dac5,_0x571ecb);_0xaab0f7(null);};}for(var e in events){if(events[_0xc8ab('0x7')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0xc8ab('0x8')]=MailInteractionEvents;
\ No newline at end of file
+var _0x6c76=['events','MailInteraction','emit','hasOwnProperty','hook','exports'];(function(_0x362c3e,_0x118ca3){var _0x35e5d3=function(_0x525a2c){while(--_0x525a2c){_0x362c3e['push'](_0x362c3e['shift']());}};_0x35e5d3(++_0x118ca3);}(_0x6c76,0xea));var _0x66c7=function(_0x21aabd,_0x1c5e9b){_0x21aabd=_0x21aabd-0x0;var _0xfc577a=_0x6c76[_0x21aabd];return _0xfc577a;};'use strict';var EventEmitter=require(_0x66c7('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x66c7('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2abeae){return function(_0x21823b,_0x283ea9,_0x538112){MailInteractionEvents['emit'](_0x2abeae+':'+_0x21823b['id'],_0x21823b);MailInteractionEvents[_0x66c7('0x2')](_0x2abeae,_0x21823b);_0x538112(null);};}for(var e in events){if(events[_0x66c7('0x3')](e)){var event=events[e];MailInteraction[_0x66c7('0x4')](e,emitEvent(event));}}module[_0x66c7('0x5')]=MailInteractionEvents;
\ No newline at end of file
index 4725f4e..2eac79a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1805=['bluebird','request-promise','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','util','../../config/logger','api'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1805,0x1bf));var _0x5180=function(_0x13ad8f,_0x41d562){_0x13ad8f=_0x13ad8f-0x0;var _0x2a92c8=_0x1805[_0x13ad8f];return _0x2a92c8;};'use strict';var _=require('lodash');var util=require(_0x5180('0x0'));var logger=require(_0x5180('0x1'))(_0x5180('0x2'));var moment=require('moment');var BPromise=require(_0x5180('0x3'));var rp=require(_0x5180('0x4'));var attributes=require(_0x5180('0x5'));module[_0x5180('0x6')]=function(_0x2fa8d7,_0x33a7f7){return _0x2fa8d7[_0x5180('0x7')](_0x5180('0x8'),attributes,{'tableName':_0x5180('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x40cb=['./mailInteraction.attributes','exports','define','mail_interactions','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x171bdf,_0x393bb8){var _0x3a8702=function(_0x293ae2){while(--_0x293ae2){_0x171bdf['push'](_0x171bdf['shift']());}};_0x3a8702(++_0x393bb8);}(_0x40cb,0x108));var _0xb40c=function(_0x49c5b8,_0x422a0d){_0x49c5b8=_0x49c5b8-0x0;var _0x3e362d=_0x40cb[_0x49c5b8];return _0x3e362d;};'use strict';var _=require(_0xb40c('0x0'));var util=require(_0xb40c('0x1'));var logger=require(_0xb40c('0x2'))(_0xb40c('0x3'));var moment=require('moment');var BPromise=require(_0xb40c('0x4'));var rp=require(_0xb40c('0x5'));var attributes=require(_0xb40c('0x6'));module[_0xb40c('0x7')]=function(_0x52aacd,_0x712159){return _0x52aacd[_0xb40c('0x8')]('MailInteraction',attributes,{'tableName':_0xb40c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10186ad..6dcc7fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6691=['find','addTags','body','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','socket.io-emitter','request','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','update','options','raw','attributes','AddTagsToMailInteraction'];(function(_0x4c7079,_0x29bf2d){var _0x2ded55=function(_0x129c40){while(--_0x129c40){_0x4c7079['push'](_0x4c7079['shift']());}};_0x2ded55(++_0x29bf2d);}(_0x6691,0x12d));var _0x1669=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x6691[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x1669('0x0'));var util=require(_0x1669('0x1'));var moment=require(_0x1669('0x2'));var BPromise=require(_0x1669('0x3'));var rs=require(_0x1669('0x4'));var fs=require('fs');var Redis=require(_0x1669('0x5'));var db=require(_0x1669('0x6'))['db'];var utils=require(_0x1669('0x7'));var logger=require(_0x1669('0x8'))(_0x1669('0x9'));var config=require('../../config/environment');var jayson=require(_0x1669('0xa'));var client=jayson[_0x1669('0xb')][_0x1669('0xc')]({'port':0x232a});config[_0x1669('0xd')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1669('0xe'))(new Redis(config['redis']));require('./mailInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x56e0ee,_0x52b44f,_0x408538){return new BPromise(function(_0x93d633,_0xdf793d){return client[_0x1669('0xf')](_0x56e0ee,_0x408538)[_0x1669('0x10')](function(_0x3d6f5e){logger[_0x1669('0x11')](_0x1669('0x12'),_0x52b44f,_0x1669('0x13'));logger[_0x1669('0x14')](_0x1669('0x15'),_0x52b44f,_0x1669('0x13'),JSON[_0x1669('0x16')](_0x3d6f5e));if(_0x3d6f5e[_0x1669('0x17')]){if(_0x3d6f5e[_0x1669('0x17')][_0x1669('0x18')]===0x1f4){logger[_0x1669('0x17')](_0x1669('0x12'),_0x52b44f,_0x3d6f5e[_0x1669('0x17')][_0x1669('0x19')]);return _0xdf793d(_0x3d6f5e[_0x1669('0x17')][_0x1669('0x19')]);}logger[_0x1669('0x17')]('MailInteraction,\x20%s,\x20%s',_0x52b44f,_0x3d6f5e[_0x1669('0x17')][_0x1669('0x19')]);return _0x93d633(_0x3d6f5e[_0x1669('0x17')][_0x1669('0x19')]);}else{logger[_0x1669('0x11')]('MailInteraction,\x20%s,\x20%s',_0x52b44f,'request\x20sent');_0x93d633(_0x3d6f5e[_0x1669('0x1a')][_0x1669('0x19')]);}})[_0x1669('0x1b')](function(_0x4fcf1c){logger[_0x1669('0x17')](_0x1669('0x12'),_0x52b44f,_0x4fcf1c);_0xdf793d(_0x4fcf1c);});});}exports[_0x1669('0x1c')]=function(_0x59853b){var _0x31483f=this;return new Promise(function(_0x42cc8a,_0x51297e){return db[_0x1669('0x1d')][_0x1669('0x1e')](_0x59853b['body'],{'raw':_0x59853b[_0x1669('0x1f')]?_0x59853b[_0x1669('0x1f')][_0x1669('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59853b[_0x1669('0x1f')]?_0x59853b[_0x1669('0x1f')]['where']||null:null,'attributes':_0x59853b[_0x1669('0x1f')]?_0x59853b[_0x1669('0x1f')][_0x1669('0x21')]||null:null,'limit':_0x59853b['options']?_0x59853b[_0x1669('0x1f')]['limit']||null:null})['then'](function(_0x238ce2){logger['info'](_0x1669('0x1c'),_0x59853b);logger[_0x1669('0x14')](_0x1669('0x1c'),_0x59853b,JSON[_0x1669('0x16')](_0x238ce2));_0x42cc8a(_0x238ce2);})[_0x1669('0x1b')](function(_0x660cc7){logger[_0x1669('0x17')]('UpdateMailInteraction',_0x660cc7[_0x1669('0x19')],_0x59853b);_0x51297e(_0x31483f['error'](0x1f4,_0x660cc7[_0x1669('0x19')]));});});};exports[_0x1669('0x22')]=function(_0x4fcf88){return new Promise(function(_0xfca7c6,_0x590053){return db[_0x1669('0x1d')][_0x1669('0x23')]({'where':_0x4fcf88[_0x1669('0x1f')]?_0x4fcf88[_0x1669('0x1f')]['where']||null:null})['then'](function(_0x47fbda){if(_0x47fbda){return _0x47fbda[_0x1669('0x24')](_0x4fcf88[_0x1669('0x25')][_0x1669('0x26')],_[_0x1669('0x27')](_0x4fcf88[_0x1669('0x25')],['ids','id'])||{});}})[_0x1669('0x28')](function(_0xc17e95){logger[_0x1669('0x11')](_0x1669('0x29'),_0x4fcf88);logger[_0x1669('0x14')](_0x1669('0x29'),_0x4fcf88,JSON[_0x1669('0x16')](_0xc17e95));_0xfca7c6(_0xc17e95);})[_0x1669('0x1b')](function(_0x496df9){logger[_0x1669('0x17')]('AddTags',_0x496df9[_0x1669('0x19')],_0x4fcf88);_0x590053(_this['error'](0x1f4,_0x496df9['message']));});});};
\ No newline at end of file
+var _0xbb61=['register','then','debug','MailInteraction,\x20%s,\x20%s,\x20%s','error','code','MailInteraction,\x20%s,\x20%s','message','info','request\x20sent','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','stringify','catch','find','addTags','ids','omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./mailInteraction.socket'];(function(_0x4d3bf9,_0x1c31fd){var _0xac8bc3=function(_0x462df8){while(--_0x462df8){_0x4d3bf9['push'](_0x4d3bf9['shift']());}};_0xac8bc3(++_0x1c31fd);}(_0xbb61,0x131));var _0x1bb6=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xbb61[_0x1928c9];return _0x51b5fb;};'use strict';var _=require(_0x1bb6('0x0'));var util=require('util');var moment=require(_0x1bb6('0x1'));var BPromise=require(_0x1bb6('0x2'));var rs=require(_0x1bb6('0x3'));var fs=require('fs');var Redis=require(_0x1bb6('0x4'));var db=require(_0x1bb6('0x5'))['db'];var utils=require(_0x1bb6('0x6'));var logger=require(_0x1bb6('0x7'))('rpc');var config=require(_0x1bb6('0x8'));var jayson=require(_0x1bb6('0x9'));var client=jayson[_0x1bb6('0xa')]['http']({'port':0x232a});config[_0x1bb6('0xb')]=_[_0x1bb6('0xc')](config[_0x1bb6('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x1bb6('0xd'))(new Redis(config[_0x1bb6('0xb')]));require(_0x1bb6('0xe'))[_0x1bb6('0xf')](socket);function respondWithRpcPromise(_0x1a18bf,_0x359a49,_0x5c8d00){return new BPromise(function(_0xe24210,_0x29ee41){return client['request'](_0x1a18bf,_0x5c8d00)[_0x1bb6('0x10')](function(_0x5988f4){logger['info']('MailInteraction,\x20%s,\x20%s',_0x359a49,'request\x20sent');logger[_0x1bb6('0x11')](_0x1bb6('0x12'),_0x359a49,'request\x20sent',JSON['stringify'](_0x5988f4));if(_0x5988f4[_0x1bb6('0x13')]){if(_0x5988f4[_0x1bb6('0x13')][_0x1bb6('0x14')]===0x1f4){logger[_0x1bb6('0x13')](_0x1bb6('0x15'),_0x359a49,_0x5988f4[_0x1bb6('0x13')][_0x1bb6('0x16')]);return _0x29ee41(_0x5988f4[_0x1bb6('0x13')]['message']);}logger[_0x1bb6('0x13')](_0x1bb6('0x15'),_0x359a49,_0x5988f4[_0x1bb6('0x13')][_0x1bb6('0x16')]);return _0xe24210(_0x5988f4[_0x1bb6('0x13')]['message']);}else{logger[_0x1bb6('0x17')](_0x1bb6('0x15'),_0x359a49,_0x1bb6('0x18'));_0xe24210(_0x5988f4['result'][_0x1bb6('0x16')]);}})['catch'](function(_0x203f2b){logger['error'](_0x1bb6('0x15'),_0x359a49,_0x203f2b);_0x29ee41(_0x203f2b);});});}exports[_0x1bb6('0x19')]=function(_0x44190f){var _0x457d46=this;return new Promise(function(_0x138300,_0xb05bd){return db[_0x1bb6('0x1a')][_0x1bb6('0x1b')](_0x44190f[_0x1bb6('0x1c')],{'raw':_0x44190f['options']?_0x44190f[_0x1bb6('0x1d')][_0x1bb6('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x44190f['options']?_0x44190f[_0x1bb6('0x1d')][_0x1bb6('0x1f')]||null:null,'attributes':_0x44190f[_0x1bb6('0x1d')]?_0x44190f[_0x1bb6('0x1d')]['attributes']||null:null,'limit':_0x44190f['options']?_0x44190f['options']['limit']||null:null})['then'](function(_0x2bdcd3){logger[_0x1bb6('0x17')](_0x1bb6('0x19'),_0x44190f);logger['debug'](_0x1bb6('0x19'),_0x44190f,JSON[_0x1bb6('0x20')](_0x2bdcd3));_0x138300(_0x2bdcd3);})[_0x1bb6('0x21')](function(_0x320512){logger[_0x1bb6('0x13')]('UpdateMailInteraction',_0x320512['message'],_0x44190f);_0xb05bd(_0x457d46['error'](0x1f4,_0x320512[_0x1bb6('0x16')]));});});};exports['AddTagsToMailInteraction']=function(_0x569f85){return new Promise(function(_0x17cde9,_0x501cb3){return db['MailInteraction'][_0x1bb6('0x22')]({'where':_0x569f85[_0x1bb6('0x1d')]?_0x569f85[_0x1bb6('0x1d')][_0x1bb6('0x1f')]||null:null})['then'](function(_0x1bc261){if(_0x1bc261){return _0x1bc261[_0x1bb6('0x23')](_0x569f85['body'][_0x1bb6('0x24')],_[_0x1bb6('0x25')](_0x569f85[_0x1bb6('0x1c')],['ids','id'])||{});}})[_0x1bb6('0x26')](function(_0x25a6a6){logger[_0x1bb6('0x17')](_0x1bb6('0x27'),_0x569f85);logger['debug'](_0x1bb6('0x27'),_0x569f85,JSON[_0x1bb6('0x20')](_0x25a6a6));_0x17cde9(_0x25a6a6);})['catch'](function(_0x2ad17d){logger[_0x1bb6('0x13')](_0x1bb6('0x27'),_0x2ad17d['message'],_0x569f85);_0x501cb3(_this[_0x1bb6('0x13')](0x1f4,_0x2ad17d[_0x1bb6('0x16')]));});});};
\ No newline at end of file
index 77db8ba..bc34380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa072=['removeListener','register','length','./mailInteraction.events','remove','emit'];(function(_0x40795f,_0x28270c){var _0xa80bb2=function(_0xa9e74c){while(--_0xa9e74c){_0x40795f['push'](_0x40795f['shift']());}};_0xa80bb2(++_0x28270c);}(_0xa072,0x1bf));var _0x2a07=function(_0x548200,_0x3241b8){_0x548200=_0x548200-0x0;var _0x1a6d74=_0xa072[_0x548200];return _0x1a6d74;};'use strict';var MailInteractionEvents=require(_0x2a07('0x0'));var events=['save',_0x2a07('0x1'),'update'];function createListener(_0x1ab542,_0x483292){return function(_0x40744){_0x483292[_0x2a07('0x2')](_0x1ab542,_0x40744);};}function removeListener(_0x3acac9,_0x4964b8){return function(){MailInteractionEvents[_0x2a07('0x3')](_0x3acac9,_0x4964b8);};}exports[_0x2a07('0x4')]=function(_0x2c189c){for(var _0x5bfc02=0x0,_0x43cd49=events[_0x2a07('0x5')];_0x5bfc02<_0x43cd49;_0x5bfc02++){var _0x521b04=events[_0x5bfc02];var _0x10d5e9=createListener('mailInteraction:'+_0x521b04,_0x2c189c);MailInteractionEvents['on'](_0x521b04,_0x10d5e9);}};
\ No newline at end of file
+var _0x28b0=['register','length','mailInteraction:','./mailInteraction.events','save','update','emit'];(function(_0x173a3c,_0x59b034){var _0xe6344=function(_0x43b3d9){while(--_0x43b3d9){_0x173a3c['push'](_0x173a3c['shift']());}};_0xe6344(++_0x59b034);}(_0x28b0,0x1a0));var _0x028b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x28b0[_0x3dd15e];return _0x231fd0;};'use strict';var MailInteractionEvents=require(_0x028b('0x0'));var events=[_0x028b('0x1'),'remove',_0x028b('0x2')];function createListener(_0xa9269b,_0x2fe02f){return function(_0x385c73){_0x2fe02f[_0x028b('0x3')](_0xa9269b,_0x385c73);};}function removeListener(_0x39cb49,_0x33a3a0){return function(){MailInteractionEvents['removeListener'](_0x39cb49,_0x33a3a0);};}exports[_0x028b('0x4')]=function(_0x54dae4){for(var _0x5988be=0x0,_0x22e3c6=events[_0x028b('0x5')];_0x5988be<_0x22e3c6;_0x5988be++){var _0x3d8152=events[_0x5988be];var _0xe30b30=createListener(_0x028b('0x6')+_0x3d8152,_0x54dae4);MailInteractionEvents['on'](_0x3d8152,_0xe30b30);}};
\ No newline at end of file
index 4338f14..44c0a82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd8=['accept','put','reject','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','mailmessage:create','create','/:id','update','/:id/accept'];(function(_0x2b48a8,_0x55644e){var _0x5e17dd=function(_0x7bd8b){while(--_0x7bd8b){_0x2b48a8['push'](_0x2b48a8['shift']());}};_0x5e17dd(++_0x55644e);}(_0x2bd8,0x130));var _0x82bd=function(_0x57e0a0,_0x207a89){_0x57e0a0=_0x57e0a0-0x0;var _0x5f1653=_0x2bd8[_0x57e0a0];return _0x5f1653;};'use strict';var multer=require(_0x82bd('0x0'));var util=require('util');var path=require(_0x82bd('0x1'));var timeout=require(_0x82bd('0x2'));var express=require(_0x82bd('0x3'));var router=express[_0x82bd('0x4')]();var auth=require(_0x82bd('0x5'));var interaction=require(_0x82bd('0x6'));var config=require(_0x82bd('0x7'));var controller=require('./mailMessage.controller');router[_0x82bd('0x8')]('/',auth[_0x82bd('0x9')](),controller[_0x82bd('0xa')]);router['get'](_0x82bd('0xb'),auth[_0x82bd('0x9')](),controller[_0x82bd('0xc')]);router[_0x82bd('0x8')]('/:id',auth[_0x82bd('0x9')](),controller['show']);router['get']('/:id/download',auth[_0x82bd('0x9')](),controller['download']);router['post']('/',auth[_0x82bd('0x9')](),interaction['tracked']('mail',_0x82bd('0xd')),controller[_0x82bd('0xe')]);router['put'](_0x82bd('0xf'),auth['isAuthenticated'](),controller[_0x82bd('0x10')]);router['put'](_0x82bd('0x11'),auth[_0x82bd('0x9')](),controller[_0x82bd('0x12')]);router[_0x82bd('0x13')]('/:id/reject',auth[_0x82bd('0x9')](),controller[_0x82bd('0x14')]);router['delete'](_0x82bd('0xf'),auth['isAuthenticated'](),controller[_0x82bd('0x15')]);module[_0x82bd('0x16')]=router;
\ No newline at end of file
+var _0x71ab=['../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','tracked','mail','create','put','/:id/accept','accept','reject','delete','destroy','exports','util','connect-timeout','Router','../../components/auth/service'];(function(_0x17d856,_0x1b4820){var _0x2b2b17=function(_0x47852d){while(--_0x47852d){_0x17d856['push'](_0x17d856['shift']());}};_0x2b2b17(++_0x1b4820);}(_0x71ab,0x64));var _0xb71a=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x71ab[_0x2b4411];return _0x8e41ef;};'use strict';var multer=require('multer');var util=require(_0xb71a('0x0'));var path=require('path');var timeout=require(_0xb71a('0x1'));var express=require('express');var router=express[_0xb71a('0x2')]();var auth=require(_0xb71a('0x3'));var interaction=require(_0xb71a('0x4'));var config=require(_0xb71a('0x5'));var controller=require(_0xb71a('0x6'));router[_0xb71a('0x7')]('/',auth[_0xb71a('0x8')](),controller[_0xb71a('0x9')]);router[_0xb71a('0x7')](_0xb71a('0xa'),auth[_0xb71a('0x8')](),controller[_0xb71a('0xb')]);router[_0xb71a('0x7')](_0xb71a('0xc'),auth[_0xb71a('0x8')](),controller[_0xb71a('0xd')]);router[_0xb71a('0x7')](_0xb71a('0xe'),auth['isAuthenticated'](),controller[_0xb71a('0xf')]);router['post']('/',auth[_0xb71a('0x8')](),interaction[_0xb71a('0x10')](_0xb71a('0x11'),'mailmessage:create'),controller[_0xb71a('0x12')]);router['put'](_0xb71a('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xb71a('0x13')](_0xb71a('0x14'),auth[_0xb71a('0x8')](),controller[_0xb71a('0x15')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0xb71a('0x16')]);router[_0xb71a('0x17')](_0xb71a('0xc'),auth[_0xb71a('0x8')](),controller[_0xb71a('0x18')]);module[_0xb71a('0x19')]=router;
\ No newline at end of file
index 9507ba9..d7deeab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x684d=['long','INTEGER','DATE','lodash','exports','TEXT','BOOLEAN','out','STRING'];(function(_0x4c9ec0,_0xef9fed){var _0x5cb601=function(_0x5160de){while(--_0x5160de){_0x4c9ec0['push'](_0x4c9ec0['shift']());}};_0x5cb601(++_0xef9fed);}(_0x684d,0x174));var _0xd684=function(_0xe23cf4,_0x4b036e){_0xe23cf4=_0xe23cf4-0x0;var _0x1ed1dd=_0x684d[_0xe23cf4];return _0x1ed1dd;};'use strict';var Sequelize=require('sequelize');var _=require(_0xd684('0x0'));module[_0xd684('0x1')]={'body':{'type':Sequelize[_0xd684('0x2')]('long'),'allowNull':![]},'read':{'type':Sequelize[_0xd684('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xd684('0x4')),'defaultValue':_0xd684('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xd684('0x5')](0xbe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xd684('0x2')]('long')},'cc':{'type':Sequelize[_0xd684('0x2')]('long')},'bcc':{'type':Sequelize[_0xd684('0x2')](_0xd684('0x6'))},'subject':{'type':Sequelize[_0xd684('0x2')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0xd684('0x7')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0xd684('0x8')]},'originTo':{'type':Sequelize[_0xd684('0x2')](_0xd684('0x6'))},'originCc':{'type':Sequelize[_0xd684('0x2')](_0xd684('0x6'))}};
\ No newline at end of file
+var _0xf5b3=['ENUM','out','STRING','DATE','lodash','TEXT','long','BOOLEAN'];(function(_0x358cb7,_0x56cd12){var _0x2e2870=function(_0x245fbf){while(--_0x245fbf){_0x358cb7['push'](_0x358cb7['shift']());}};_0x2e2870(++_0x56cd12);}(_0xf5b3,0x7c));var _0x3f5b=function(_0x35d586,_0x43094a){_0x35d586=_0x35d586-0x0;var _0x4288ae=_0xf5b3[_0x35d586];return _0x4288ae;};'use strict';var Sequelize=require('sequelize');var _=require(_0x3f5b('0x0'));module['exports']={'body':{'type':Sequelize[_0x3f5b('0x1')](_0x3f5b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x3f5b('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3f5b('0x4')]('in',_0x3f5b('0x5')),'defaultValue':_0x3f5b('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x3f5b('0x6')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x3f5b('0x1')](_0x3f5b('0x2'))},'cc':{'type':Sequelize['TEXT'](_0x3f5b('0x2'))},'bcc':{'type':Sequelize[_0x3f5b('0x1')](_0x3f5b('0x2'))},'subject':{'type':Sequelize[_0x3f5b('0x1')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x3f5b('0x3')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x3f5b('0x7')]},'originTo':{'type':Sequelize[_0x3f5b('0x1')](_0x3f5b('0x2'))},'originCc':{'type':Sequelize['TEXT']('long')}};
\ No newline at end of file
index ae13420..c7621b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd629=['acceptmessage','mail-interactions','reject','mail','agent','MailInteractionId','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','interface','SIP/%s','rejectmessage','download','files','tmp','server','message-%s.eml','from','Attachment','subject','Attachments','build','err','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','../../components/parsers/qs','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','client','http','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','count','offset','set','Content-Range','save','update','destroy','name','send','index','MailMessage','query','dateStart','dateEnd','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','add','day','merge','map','type','key','options','includeAll','include','rows','show','params','rawAttributes','find','body','describe','create','direction','out','secret','MailAccount','findOne','MailAccountId','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','basename','SendMail','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','read','format','UserId','Contact','get','MailInteraction','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','manual','channel','event','accept','EventManager'];(function(_0x299a64,_0xf59b16){var _0x5a052f=function(_0xc8275b){while(--_0xc8275b){_0x299a64['push'](_0x299a64['shift']());}};_0x5a052f(++_0xf59b16);}(_0xd629,0x140));var _0x9d62=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xd629[_0x1a36a5];return _0x746243;};'use strict';var pdf=require(_0x9d62('0x0'));var emlformat=require(_0x9d62('0x1'));var rimraf=require(_0x9d62('0x2'));var zipdir=require(_0x9d62('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9d62('0x4'));var moment=require(_0x9d62('0x5'));var BPromise=require(_0x9d62('0x6'));var Mustache=require('mustache');var util=require(_0x9d62('0x7'));var path=require('path');var sox=require(_0x9d62('0x8'));var csv=require(_0x9d62('0x9'));var ejs=require(_0x9d62('0xa'));var fs=require('fs');var _=require(_0x9d62('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9d62('0xc'));var deskjs=require(_0x9d62('0xd'));var toCsv=require(_0x9d62('0x9'));var querystring=require(_0x9d62('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0x9d62('0xf'));var logger=require('../../config/logger')(_0x9d62('0x10'));var utils=require(_0x9d62('0x11'));var config=require('../../config/environment');var db=require(_0x9d62('0x12'))['db'];config[_0x9d62('0x13')]=_[_0x9d62('0x14')](config[_0x9d62('0x13')],{'host':_0x9d62('0x15'),'port':0x18eb});var socket=require(_0x9d62('0x16'))(new Redis(config['redis']));require(_0x9d62('0x17'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x9d62('0x18')][_0x9d62('0x19')]({'port':0x232c});var client9003=jayson[_0x9d62('0x18')][_0x9d62('0x19')]({'port':0x232b});var client9002=jayson[_0x9d62('0x18')][_0x9d62('0x19')]({'port':0x232a});function respondWithRpcPromise(_0xd6fc59,_0x4d538b,_0xb34ddf,_0xb02874){return new BPromise(function(_0x41a7c4,_0x30bb46){var _0x6e0977=_0xb02874||client;return _0x6e0977['request'](_0xd6fc59,_0xb34ddf)[_0x9d62('0x1a')](function(_0x32c11f){logger[_0x9d62('0x1b')](_0x9d62('0x1c'),_0x4d538b,_0x9d62('0x1d'));logger[_0x9d62('0x1e')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x4d538b,_0x9d62('0x1d'),JSON[_0x9d62('0x1f')](_0x32c11f));if(_0x32c11f[_0x9d62('0x20')]){if(_0x32c11f[_0x9d62('0x20')][_0x9d62('0x21')]===0x1f4){logger[_0x9d62('0x20')](_0x9d62('0x1c'),_0x4d538b,_0x32c11f[_0x9d62('0x20')][_0x9d62('0x22')]);return _0x30bb46(_0x32c11f[_0x9d62('0x20')][_0x9d62('0x22')]);}logger['error'](_0x9d62('0x1c'),_0x4d538b,_0x32c11f[_0x9d62('0x20')][_0x9d62('0x22')]);return _0x41a7c4(_0x32c11f[_0x9d62('0x20')]['message']);}else{logger[_0x9d62('0x1b')](_0x9d62('0x1c'),_0x4d538b,_0x9d62('0x1d'));_0x41a7c4(_0x32c11f[_0x9d62('0x23')][_0x9d62('0x22')]);}})[_0x9d62('0x24')](function(_0x3f930e){logger[_0x9d62('0x20')](_0x9d62('0x1c'),_0x4d538b,_0x3f930e);_0x30bb46(_0x3f930e);});});}function respondWithStatusCode(_0x5c7147,_0x5655fb){_0x5655fb=_0x5655fb||0xcc;return function(_0x552c7d){if(_0x552c7d){return _0x5c7147[_0x9d62('0x25')](_0x5655fb);}return _0x5c7147[_0x9d62('0x26')](_0x5655fb)[_0x9d62('0x27')]();};}function respondWithResult(_0x12a7e8,_0x3687c4){_0x3687c4=_0x3687c4||0xc8;return function(_0x3febec){if(_0x3febec){return _0x12a7e8[_0x9d62('0x26')](_0x3687c4)[_0x9d62('0x28')](_0x3febec);}};}function respondWithFilteredResult(_0x1c7cc4,_0x496fea){return function(_0xfdfb08){if(_0xfdfb08){var _0x274909=_0xfdfb08[_0x9d62('0x29')],_0xa4abda=_0x496fea[_0x9d62('0x2a')],_0x3a93fe=_0x496fea[_0x9d62('0x2a')]+_0x496fea['limit'],_0x25dc57;if(_0x3a93fe>=_0x274909){_0x3a93fe=_0x274909;_0x25dc57=0xc8;}else{_0x25dc57=0xce;}_0x1c7cc4[_0x9d62('0x26')](_0x25dc57);return _0x1c7cc4[_0x9d62('0x2b')](_0x9d62('0x2c'),_0xa4abda+'-'+_0x3a93fe+'/'+_0x274909)[_0x9d62('0x28')](_0xfdfb08);}return null;};}function patchUpdates(_0x500a53){return function(_0x30707a){try{jsonpatch['apply'](_0x30707a,_0x500a53,!![]);}catch(_0x1db168){return BPromise['reject'](_0x1db168);}return _0x30707a[_0x9d62('0x2d')]();};}function saveUpdates(_0x558d13,_0x44dd0f){return function(_0x286889){if(_0x286889){return _0x286889[_0x9d62('0x2e')](_0x558d13)['then'](function(_0x3ab944){return _0x3ab944;});}return null;};}function removeEntity(_0xd39ee,_0x113a64){return function(_0x33386){if(_0x33386){return _0x33386[_0x9d62('0x2f')]()[_0x9d62('0x1a')](function(){_0xd39ee['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x165e97,_0x4ccf9d){return function(_0x5d68a8){if(!_0x5d68a8){_0x165e97[_0x9d62('0x25')](0x194);}return _0x5d68a8;};}function handleError(_0x248b56,_0x375f3d){_0x375f3d=_0x375f3d||0x1f4;return function(_0x30f0c1){logger[_0x9d62('0x20')](_0x30f0c1['stack']);if(_0x30f0c1[_0x9d62('0x30')]){delete _0x30f0c1['name'];}_0x248b56[_0x9d62('0x26')](_0x375f3d)[_0x9d62('0x31')](_0x30f0c1);};}exports[_0x9d62('0x32')]=function(_0x36a843,_0x5f63a1){var _0x37aed8={},_0x3c71b1={},_0x1056fe={'count':0x0,'rows':[]};var _0x46548f=db[_0x9d62('0x33')]['rawAttributes'];_0x3c71b1['model']=_['keys'](_0x46548f);var _0x5ab64d={'dateStart':_0x36a843[_0x9d62('0x34')][_0x9d62('0x35')],'dateEnd':_0x36a843[_0x9d62('0x34')][_0x9d62('0x36')]};delete _0x36a843[_0x9d62('0x34')][_0x9d62('0x35')];delete _0x36a843['query'][_0x9d62('0x36')];_0x3c71b1['query']=_[_0x9d62('0x37')](_0x36a843[_0x9d62('0x34')]);_0x3c71b1[_0x9d62('0x38')]=_[_0x9d62('0x39')](_0x3c71b1[_0x9d62('0x3a')],_0x3c71b1[_0x9d62('0x34')]);_0x37aed8[_0x9d62('0x3b')]=_[_0x9d62('0x39')](_0x3c71b1[_0x9d62('0x3a')],qs[_0x9d62('0x3c')](_0x36a843[_0x9d62('0x34')][_0x9d62('0x3c')]));_0x37aed8['attributes']=_0x37aed8[_0x9d62('0x3b')][_0x9d62('0x3d')]?_0x37aed8[_0x9d62('0x3b')]:_0x3c71b1[_0x9d62('0x3a')];if(!_0x36a843[_0x9d62('0x34')][_0x9d62('0x3e')](_0x9d62('0x3f'))){_0x37aed8[_0x9d62('0x40')]=qs[_0x9d62('0x40')](_0x36a843[_0x9d62('0x34')]['limit']);_0x37aed8[_0x9d62('0x2a')]=qs[_0x9d62('0x2a')](_0x36a843['query'][_0x9d62('0x2a')]);}_0x37aed8['order']=qs[_0x9d62('0x41')](_0x36a843[_0x9d62('0x34')]['sort']);_0x37aed8[_0x9d62('0x42')]=qs['filters'](_[_0x9d62('0x43')](_0x36a843['query'],_0x3c71b1[_0x9d62('0x38')]));if(_0x5ab64d[_0x9d62('0x35')]){if(_0x5ab64d[_0x9d62('0x36')]){_0x5ab64d[_0x9d62('0x36')]=moment(_0x5ab64d['dateEnd'])[_0x9d62('0x44')](0x1,_0x9d62('0x45'));}else{_0x5ab64d['dateEnd']=moment(_0x5ab64d[_0x9d62('0x35')])[_0x9d62('0x44')](0x1,_0x9d62('0x45'));}_[_0x9d62('0x46')](_0x37aed8[_0x9d62('0x42')],{'createdAt':{'$gte':_0x5ab64d[_0x9d62('0x35')],'$lte':_0x5ab64d[_0x9d62('0x36')]}});}if(_0x36a843[_0x9d62('0x34')]['filter']){_0x37aed8[_0x9d62('0x42')]=_['merge'](_0x37aed8[_0x9d62('0x42')],{'$or':_[_0x9d62('0x47')](_0x46548f,function(_0x281d8d){if(_0x281d8d[_0x9d62('0x48')][_0x9d62('0x49')]!=='VIRTUAL'){var _0x18edca={};_0x18edca[_0x281d8d['field']]={'$like':'%'+_0x36a843['query']['filter']+'%'};return _0x18edca;}})});}_0x37aed8=_[_0x9d62('0x46')]({},_0x37aed8,_0x36a843[_0x9d62('0x4a')]);var _0x485724={'where':_0x37aed8[_0x9d62('0x42')]};return db['MailMessage'][_0x9d62('0x29')](_0x485724)['then'](function(_0xf0aa81){_0x1056fe[_0x9d62('0x29')]=_0xf0aa81;if(_0x36a843[_0x9d62('0x34')][_0x9d62('0x4b')]){_0x37aed8[_0x9d62('0x4c')]=[{'all':!![]}];}return db[_0x9d62('0x33')]['findAll'](_0x37aed8);})[_0x9d62('0x1a')](function(_0x94c078){_0x1056fe[_0x9d62('0x4d')]=_0x94c078;return _0x1056fe;})[_0x9d62('0x1a')](respondWithFilteredResult(_0x5f63a1,_0x37aed8))['catch'](handleError(_0x5f63a1,null));};exports[_0x9d62('0x4e')]=function(_0x59ad41,_0x4e5211){var _0x2fb232={'raw':!![],'where':{'id':_0x59ad41[_0x9d62('0x4f')]['id']}},_0x5f51ab={};_0x5f51ab['model']=_[_0x9d62('0x37')](db['MailMessage'][_0x9d62('0x50')]);_0x5f51ab[_0x9d62('0x34')]=_[_0x9d62('0x37')](_0x59ad41[_0x9d62('0x34')]);_0x5f51ab['filters']=_[_0x9d62('0x39')](_0x5f51ab[_0x9d62('0x3a')],_0x5f51ab['query']);_0x2fb232[_0x9d62('0x3b')]=_['intersection'](_0x5f51ab['model'],qs['fields'](_0x59ad41[_0x9d62('0x34')]['fields']));_0x2fb232[_0x9d62('0x3b')]=_0x2fb232[_0x9d62('0x3b')]['length']?_0x2fb232['attributes']:_0x5f51ab[_0x9d62('0x3a')];if(_0x59ad41['query'][_0x9d62('0x4b')]){_0x2fb232[_0x9d62('0x4c')]=[{'all':!![]}];}_0x2fb232=_[_0x9d62('0x46')]({},_0x2fb232,_0x59ad41[_0x9d62('0x4a')]);return db['MailMessage'][_0x9d62('0x51')](_0x2fb232)['then'](handleEntityNotFound(_0x4e5211,null))['then'](respondWithResult(_0x4e5211,null))['catch'](handleError(_0x4e5211,null));};exports[_0x9d62('0x2e')]=function(_0x8bfe9a,_0x5087a8){if(_0x8bfe9a['body']['id']){delete _0x8bfe9a[_0x9d62('0x52')]['id'];}return db[_0x9d62('0x33')]['find']({'where':{'id':_0x8bfe9a[_0x9d62('0x4f')]['id']}})[_0x9d62('0x1a')](handleEntityNotFound(_0x5087a8,null))[_0x9d62('0x1a')](saveUpdates(_0x8bfe9a[_0x9d62('0x52')],null))[_0x9d62('0x1a')](respondWithResult(_0x5087a8,null))[_0x9d62('0x24')](handleError(_0x5087a8,null));};exports['destroy']=function(_0x1ae098,_0x43965f){return db[_0x9d62('0x33')][_0x9d62('0x51')]({'where':{'id':_0x1ae098[_0x9d62('0x4f')]['id']}})['then'](handleEntityNotFound(_0x43965f,null))[_0x9d62('0x1a')](removeEntity(_0x43965f,null))['catch'](handleError(_0x43965f,null));};exports[_0x9d62('0x53')]=function(_0x31f491,_0x5e5183){return db['MailMessage'][_0x9d62('0x53')]()['then'](respondWithResult(_0x5e5183,null))[_0x9d62('0x24')](handleError(_0x5e5183,null));};exports[_0x9d62('0x54')]=function(_0x23bb40,_0x196d8f){return db[_0x9d62('0x33')]['create'](_0x23bb40[_0x9d62('0x52')])[_0x9d62('0x1a')](function(_0x1dbc0d){if(_0x1dbc0d){if(_0x1dbc0d[_0x9d62('0x55')]===_0x9d62('0x56')&&!_0x1dbc0d[_0x9d62('0x57')]){return db[_0x9d62('0x58')][_0x9d62('0x59')]({'where':{'id':_0x1dbc0d[_0x9d62('0x5a')]},'include':[{'model':db[_0x9d62('0x5b')],'as':_0x9d62('0x5c'),'raw':!![]}]})[_0x9d62('0x1a')](function(_0x1805a7){if(_0x1805a7&&_0x1805a7[_0x9d62('0x5c')]){var _0x25e14d={'tls':{'rejectUnauthorized':![]}};if(_[_0x9d62('0x5d')](_0x1805a7['Smtp'][_0x9d62('0x5e')])){_0x25e14d['host']=_0x1805a7[_0x9d62('0x5c')][_0x9d62('0x5f')];_0x25e14d[_0x9d62('0x60')]=_0x1805a7['Smtp'][_0x9d62('0x60')];_0x25e14d['secure']=_0x1805a7[_0x9d62('0x5c')][_0x9d62('0x61')];if(_0x1805a7[_0x9d62('0x5c')][_0x9d62('0x62')]){_0x25e14d[_0x9d62('0x63')]={'user':_0x1805a7['Smtp'][_0x9d62('0x64')],'pass':_0x1805a7[_0x9d62('0x5c')][_0x9d62('0x65')]};}}else{_0x25e14d[_0x9d62('0x5e')]=_0x1805a7[_0x9d62('0x5c')][_0x9d62('0x5e')];_0x25e14d[_0x9d62('0x63')]={'user':_0x1805a7[_0x9d62('0x5c')][_0x9d62('0x64')],'pass':_0x1805a7[_0x9d62('0x5c')][_0x9d62('0x65')]};_0x25e14d['secure']=_0x1805a7[_0x9d62('0x5c')][_0x9d62('0x61')];}if(_0x23bb40[_0x9d62('0x52')]['attachments']&&_0x23bb40['body'][_0x9d62('0x66')][_0x9d62('0x3d')]){for(var _0x18d205=0x0;_0x18d205<_0x23bb40[_0x9d62('0x52')][_0x9d62('0x66')][_0x9d62('0x3d')];_0x18d205+=0x1){_0x23bb40[_0x9d62('0x52')][_0x9d62('0x66')][_0x18d205]={'filename':_0x23bb40[_0x9d62('0x52')][_0x9d62('0x66')][_0x18d205][_0x9d62('0x30')],'path':path[_0x9d62('0x67')](config[_0x9d62('0x68')],'server/files/attachments',_0x23bb40[_0x9d62('0x52')][_0x9d62('0x66')][_0x18d205][_0x9d62('0x69')])};}}return{'account':_0x25e14d,'message':_0x23bb40[_0x9d62('0x52')]};}})[_0x9d62('0x1a')](function(_0x5ab8ca){if(_0x5ab8ca){return respondWithRpcPromise(_0x9d62('0x6a'),_0x9d62('0x6b'),_0x5ab8ca,client9003)[_0x9d62('0x1a')](function(_0x17d903){return _0x1dbc0d[_0x9d62('0x2e')]({'read':!![],'messageId':_0x17d903[_0x9d62('0x6c')],'sentAt':moment()['format'](_0x9d62('0x6d'))});})[_0x9d62('0x24')](function(_0x3b6187){logger[_0x9d62('0x20')]('%s',JSON[_0x9d62('0x1f')](_0x3b6187));return _0x1dbc0d;});}return _0x1dbc0d;});}return _0x1dbc0d;}})[_0x9d62('0x1a')](respondWithResult(_0x196d8f,0xc9))[_0x9d62('0x24')](handleError(_0x196d8f,null));};var interaction_log=require('../../config/logger')('mail-interactions');exports['accept']=function(_0x5e9503,_0x467bef,_0x3c8e9c){var _0x2b8479={'channel':'mail'};if(_0x5e9503[_0x9d62('0x52')]['id']){delete _0x5e9503[_0x9d62('0x52')]['id'];}_0x5e9503[_0x9d62('0x52')][_0x9d62('0x6e')]=!![];_0x5e9503[_0x9d62('0x52')]['readAt']=moment()[_0x9d62('0x6f')]('YYYY-MM-DD\x20HH:mm:ss');_0x5e9503[_0x9d62('0x52')][_0x9d62('0x70')]=_0x5e9503[_0x9d62('0x52')]['UserId']||_0x5e9503[_0x9d62('0x64')]['id'];return db[_0x9d62('0x33')][_0x9d62('0x51')]({'where':{'id':_0x5e9503[_0x9d62('0x4f')]['id'],'UserId':null},'include':[{'model':db['CmContact'],'as':_0x9d62('0x71')}]})['then'](handleEntityNotFound(_0x467bef,null))['then'](saveUpdates(_0x5e9503[_0x9d62('0x52')],null))[_0x9d62('0x1a')](function(_0x9d8ea4){if(_0x9d8ea4){_0x2b8479[_0x9d62('0x22')]=_0x9d8ea4[_0x9d62('0x72')]({'plain':!![]});return db[_0x9d62('0x73')][_0x9d62('0x51')]({'where':{'id':_0x9d8ea4['MailInteractionId']}});}return null;})[_0x9d62('0x1a')](handleEntityNotFound(_0x467bef,null))[_0x9d62('0x1a')](function(_0x33ac25){if(_0x33ac25){return _0x33ac25[_0x9d62('0x2e')]({'UserId':_0x5e9503[_0x9d62('0x52')]['UserId'],'read1stAt':_['isNil'](_0x33ac25[_0x9d62('0x74')])?moment()[_0x9d62('0x6f')](_0x9d62('0x6d')):undefined});}return null;})[_0x9d62('0x1a')](function(_0x41a376){if(_0x41a376){_0x2b8479[_0x9d62('0x75')]=_0x41a376['get']({'plain':!![]});interaction_log[_0x9d62('0x1b')](_0x9d62('0x76'),_0x5e9503['user']['id'],_0x5e9503[_0x9d62('0x64')][_0x9d62('0x30')],_0x5e9503['user'][_0x9d62('0x77')],_0x2b8479['interaction']['id'],_0x5e9503[_0x9d62('0x52')]?JSON[_0x9d62('0x1f')](_0x5e9503['body']):_0x9d62('0x78'));return respondWithRpcPromise(_0x9d62('0x79'),'acceptMessage',_0x2b8479);}return null;})[_0x9d62('0x1a')](function(_0x424bab){if(_0x424bab){if(_0x5e9503[_0x9d62('0x52')][_0x9d62('0x7a')]){_0x2b8479['message']['interface']=util[_0x9d62('0x6f')]('SIP/%s',_0x5e9503['user'][_0x9d62('0x30')]);_0x2b8479[_0x9d62('0x22')][_0x9d62('0x7b')]=_0x2b8479['channel'];_0x2b8479[_0x9d62('0x22')][_0x9d62('0x7c')]=_0x9d62('0x7d');return respondWithRpcPromise(_0x9d62('0x7e'),_0x9d62('0x7e'),{'event':_0x9d62('0x7f'),'message':_0x2b8479[_0x9d62('0x22')]},client9002)[_0x9d62('0x1a')](function(){return _0x2b8479;});}return _0x2b8479;}return null;})['then'](respondWithResult(_0x467bef,null))[_0x9d62('0x24')](handleError(_0x467bef,null));};var interaction_log=require('../../config/logger')(_0x9d62('0x80'));exports[_0x9d62('0x81')]=function(_0x4190d4,_0x5b0177,_0x2ac42b){var _0x13906d={'agent':{},'channel':_0x9d62('0x82')};if(_0x4190d4[_0x9d62('0x52')]['id']){delete _0x4190d4['body']['id'];}_0x4190d4[_0x9d62('0x52')][_0x9d62('0x70')]=_0x4190d4[_0x9d62('0x52')][_0x9d62('0x70')]||_0x4190d4[_0x9d62('0x64')]['id'];_0x13906d[_0x9d62('0x83')]['id']=_0x4190d4[_0x9d62('0x52')]['UserId'];return db['MailMessage'][_0x9d62('0x51')]({'where':{'id':_0x4190d4['params']['id'],'UserId':null}})[_0x9d62('0x1a')](handleEntityNotFound(_0x5b0177,null))[_0x9d62('0x1a')](function(_0x3f4bfa){if(_0x3f4bfa){_0x13906d[_0x9d62('0x22')]=_0x3f4bfa[_0x9d62('0x72')]({'plain':!![]});return db[_0x9d62('0x73')]['find']({'where':{'id':_0x3f4bfa[_0x9d62('0x84')]}});}return null;})[_0x9d62('0x1a')](handleEntityNotFound(_0x5b0177,null))['then'](function(_0x5a669f){if(_0x5a669f){_0x13906d[_0x9d62('0x75')]=_0x5a669f[_0x9d62('0x72')]({'plain':!![]});interaction_log[_0x9d62('0x1b')](_0x9d62('0x85'),_0x4190d4[_0x9d62('0x64')]['id'],_0x4190d4[_0x9d62('0x64')]['name'],_0x4190d4['user'][_0x9d62('0x77')],_0x13906d[_0x9d62('0x75')]['id'],_0x4190d4[_0x9d62('0x52')]?JSON[_0x9d62('0x1f')](_0x4190d4[_0x9d62('0x52')]):_0x9d62('0x78'));return respondWithRpcPromise(_0x9d62('0x86'),'rejectMessage',_0x13906d);}return null;})['then'](function(_0x5d2e88){if(_0x5d2e88){_0x5d2e88['message'][_0x9d62('0x87')]=util[_0x9d62('0x6f')](_0x9d62('0x88'),_0x4190d4['user'][_0x9d62('0x30')]);_0x5d2e88[_0x9d62('0x22')][_0x9d62('0x7b')]=_0x13906d['channel'];_0x5d2e88[_0x9d62('0x22')][_0x9d62('0x7c')]=_0x9d62('0x81');respondWithRpcPromise(_0x9d62('0x7e'),_0x9d62('0x7e'),{'event':_0x9d62('0x89'),'message':_0x5d2e88[_0x9d62('0x22')]},client9002);return _0x13906d;}return null;})[_0x9d62('0x1a')](respondWithResult(_0x5b0177,null))[_0x9d62('0x24')](handleError(_0x5b0177,null));};exports[_0x9d62('0x8a')]=function(_0x5568c8,_0x2e214d){var _0x26a73c=moment()['unix']()['toString']();var _0x53b786=path['join'](config['root'],'server',_0x9d62('0x8b'),_0x9d62('0x8c'));var _0x24aff3=path[_0x9d62('0x67')](config[_0x9d62('0x68')],_0x9d62('0x8d'),_0x9d62('0x8b'),_0x9d62('0x66'));var _0x1ca058=util['format'](_0x9d62('0x8e'),_0x26a73c);return db['MailMessage'][_0x9d62('0x51')]({'where':{'id':_0x5568c8['params']['id']},'attributes':['id',_0x9d62('0x52'),_0x9d62('0x8f'),'to','cc','subject','createdAt'],'include':_0x5568c8[_0x9d62('0x34')][_0x9d62('0x66')]?[{'model':db[_0x9d62('0x90')],'as':'Attachments'}]:undefined})[_0x9d62('0x1a')](handleEntityNotFound(_0x2e214d,null))[_0x9d62('0x1a')](function(_0xbce500){if(_0xbce500){var _0x22e0ae=_0xbce500;var _0x30a0bd={'from':_0x22e0ae[_0x9d62('0x8f')],'to':_0x22e0ae['to'],'subject':_0x22e0ae[_0x9d62('0x91')],'html':_0x22e0ae[_0x9d62('0x52')],'attachments':[]};return new BPromise(function(_0x21bc1e,_0x369778){if(_0xbce500[_0x9d62('0x92')]){for(var _0x1a2bb9=0x0;_0x1a2bb9<_0xbce500[_0x9d62('0x92')][_0x9d62('0x3d')];_0x1a2bb9++){var _0x1998fa=_0xbce500[_0x9d62('0x92')][_0x1a2bb9];var _0x591861=path[_0x9d62('0x67')](_0x24aff3,_0x1998fa['basename']);if(fs['existsSync'](_0x591861)){_0x30a0bd['attachments']['push']({'name':_0x1998fa[_0x9d62('0x30')],'contentType':_0x1998fa[_0x9d62('0x48')],'data':fs['readFileSync'](_0x591861)});}}}emlformat[_0x9d62('0x93')](_0x30a0bd,function(_0x5f2437,_0x499367){if(_0x5f2437)return _0x369778(_0x5f2437);fs['writeFileSync'](path['join'](_0x53b786,_0x1ca058),_0x499367);return _0x21bc1e(_0x499367);});});}})[_0x9d62('0x1a')](function(_0x8afafe){if(_0x8afafe){return _0x2e214d['download'](path[_0x9d62('0x67')](_0x53b786,_0x1ca058),_0x1ca058,function(_0x2ef907){if(_0x2ef907){console['log'](_0x9d62('0x94'),_0x2ef907);}else{fs['unlinkSync'](path[_0x9d62('0x67')](_0x53b786,_0x1ca058));}});}})['catch'](handleError(_0x2e214d,null));};
\ No newline at end of file
+var _0x12db=['end','name','MailMessage','rawAttributes','model','query','dateStart','dateEnd','keys','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filters','day','add','merge','map','type','key','VIRTUAL','field','filter','includeAll','include','show','params','options','find','body','describe','create','direction','secret','findOne','MailAccountId','MailServerOut','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','mail-interactions','mail','readAt','UserId','CmContact','Contact','get','MailInteraction','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','manual','channel','accept','EventManager','acceptmessage','agent','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','interface','SIP/%s','event','rejectmessage','download','unix','toString','server','tmp','files','message-%s.eml','from','subject','createdAt','Attachment','Attachments','basename','existsSync','readFileSync','build','writeFileSync','log','unlinkSync','html-pdf','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./mailMessage.socket','register','client','http','request','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','json','count','offset','Content-Range','reject','save','update','destroy'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0x12db,0x107));var _0xb12d=function(_0x3c4f1f,_0x20d3ec){_0x3c4f1f=_0x3c4f1f-0x0;var _0x19cb69=_0x12db[_0x3c4f1f];return _0x19cb69;};'use strict';var pdf=require(_0xb12d('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xb12d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb12d('0x2'));var rp=require(_0xb12d('0x3'));var moment=require('moment');var BPromise=require(_0xb12d('0x4'));var Mustache=require(_0xb12d('0x5'));var util=require(_0xb12d('0x6'));var path=require(_0xb12d('0x7'));var sox=require(_0xb12d('0x8'));var csv=require(_0xb12d('0x9'));var ejs=require(_0xb12d('0xa'));var fs=require('fs');var _=require(_0xb12d('0xb'));var squel=require('squel');var crypto=require(_0xb12d('0xc'));var jsforce=require(_0xb12d('0xd'));var deskjs=require(_0xb12d('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb12d('0xf'));var Papa=require('papaparse');var Redis=require(_0xb12d('0x10'));var qs=require(_0xb12d('0x11'));var logger=require(_0xb12d('0x12'))(_0xb12d('0x13'));var utils=require('../../config/utils');var config=require(_0xb12d('0x14'));var db=require(_0xb12d('0x15'))['db'];config[_0xb12d('0x16')]=_[_0xb12d('0x17')](config[_0xb12d('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xb12d('0x18'))(new Redis(config[_0xb12d('0x16')]));require(_0xb12d('0x19'))[_0xb12d('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0xb12d('0x1b')]['http']({'port':0x232c});var client9003=jayson[_0xb12d('0x1b')][_0xb12d('0x1c')]({'port':0x232b});var client9002=jayson[_0xb12d('0x1b')][_0xb12d('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x1b7d50,_0xfdfd1,_0x445d04,_0x5a79b2){return new BPromise(function(_0x39024a,_0x5591a1){var _0x27f10e=_0x5a79b2||client;return _0x27f10e[_0xb12d('0x1d')](_0x1b7d50,_0x445d04)[_0xb12d('0x1e')](function(_0x15f3d5){logger[_0xb12d('0x1f')](_0xb12d('0x20'),_0xfdfd1,'request\x20sent');logger[_0xb12d('0x21')](_0xb12d('0x22'),_0xfdfd1,_0xb12d('0x23'),JSON[_0xb12d('0x24')](_0x15f3d5));if(_0x15f3d5[_0xb12d('0x25')]){if(_0x15f3d5[_0xb12d('0x25')][_0xb12d('0x26')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0xfdfd1,_0x15f3d5['error'][_0xb12d('0x27')]);return _0x5591a1(_0x15f3d5[_0xb12d('0x25')][_0xb12d('0x27')]);}logger[_0xb12d('0x25')](_0xb12d('0x20'),_0xfdfd1,_0x15f3d5[_0xb12d('0x25')][_0xb12d('0x27')]);return _0x39024a(_0x15f3d5[_0xb12d('0x25')][_0xb12d('0x27')]);}else{logger[_0xb12d('0x1f')](_0xb12d('0x20'),_0xfdfd1,'request\x20sent');_0x39024a(_0x15f3d5['result'][_0xb12d('0x27')]);}})[_0xb12d('0x28')](function(_0x57a8e8){logger['error'](_0xb12d('0x20'),_0xfdfd1,_0x57a8e8);_0x5591a1(_0x57a8e8);});});}function respondWithStatusCode(_0x19575a,_0x1e444e){_0x1e444e=_0x1e444e||0xcc;return function(_0x432003){if(_0x432003){return _0x19575a[_0xb12d('0x29')](_0x1e444e);}return _0x19575a[_0xb12d('0x2a')](_0x1e444e)['end']();};}function respondWithResult(_0x4af0c4,_0xd9c37){_0xd9c37=_0xd9c37||0xc8;return function(_0x2f4651){if(_0x2f4651){return _0x4af0c4['status'](_0xd9c37)[_0xb12d('0x2b')](_0x2f4651);}};}function respondWithFilteredResult(_0x1f534d,_0x28f908){return function(_0x429ab4){if(_0x429ab4){var _0x2b4d24=_0x429ab4[_0xb12d('0x2c')],_0x336f69=_0x28f908[_0xb12d('0x2d')],_0x3404d6=_0x28f908['offset']+_0x28f908['limit'],_0x20498d;if(_0x3404d6>=_0x2b4d24){_0x3404d6=_0x2b4d24;_0x20498d=0xc8;}else{_0x20498d=0xce;}_0x1f534d['status'](_0x20498d);return _0x1f534d['set'](_0xb12d('0x2e'),_0x336f69+'-'+_0x3404d6+'/'+_0x2b4d24)[_0xb12d('0x2b')](_0x429ab4);}return null;};}function patchUpdates(_0x2c9fc3){return function(_0x1312bd){try{jsonpatch['apply'](_0x1312bd,_0x2c9fc3,!![]);}catch(_0x5dd518){return BPromise[_0xb12d('0x2f')](_0x5dd518);}return _0x1312bd[_0xb12d('0x30')]();};}function saveUpdates(_0x4c5a1e,_0x179285){return function(_0x1fd068){if(_0x1fd068){return _0x1fd068[_0xb12d('0x31')](_0x4c5a1e)[_0xb12d('0x1e')](function(_0x12ed66){return _0x12ed66;});}return null;};}function removeEntity(_0x415111,_0x24463a){return function(_0x4523f0){if(_0x4523f0){return _0x4523f0[_0xb12d('0x32')]()[_0xb12d('0x1e')](function(){_0x415111['status'](0xcc)[_0xb12d('0x33')]();});}};}function handleEntityNotFound(_0x3e602c,_0x484769){return function(_0x4f9e2b){if(!_0x4f9e2b){_0x3e602c[_0xb12d('0x29')](0x194);}return _0x4f9e2b;};}function handleError(_0x4ec0e8,_0x45fc49){_0x45fc49=_0x45fc49||0x1f4;return function(_0x1d2569){logger[_0xb12d('0x25')](_0x1d2569['stack']);if(_0x1d2569[_0xb12d('0x34')]){delete _0x1d2569[_0xb12d('0x34')];}_0x4ec0e8[_0xb12d('0x2a')](_0x45fc49)['send'](_0x1d2569);};}exports['index']=function(_0xb58f74,_0x558b25){var _0x1fd6ef={},_0x3fdfe1={},_0x133389={'count':0x0,'rows':[]};var _0x52ede9=db[_0xb12d('0x35')][_0xb12d('0x36')];_0x3fdfe1[_0xb12d('0x37')]=_['keys'](_0x52ede9);var _0x4dd630={'dateStart':_0xb58f74[_0xb12d('0x38')][_0xb12d('0x39')],'dateEnd':_0xb58f74[_0xb12d('0x38')]['dateEnd']};delete _0xb58f74[_0xb12d('0x38')]['dateStart'];delete _0xb58f74[_0xb12d('0x38')][_0xb12d('0x3a')];_0x3fdfe1['query']=_[_0xb12d('0x3b')](_0xb58f74[_0xb12d('0x38')]);_0x3fdfe1['filters']=_[_0xb12d('0x3c')](_0x3fdfe1[_0xb12d('0x37')],_0x3fdfe1['query']);_0x1fd6ef[_0xb12d('0x3d')]=_['intersection'](_0x3fdfe1[_0xb12d('0x37')],qs[_0xb12d('0x3e')](_0xb58f74[_0xb12d('0x38')][_0xb12d('0x3e')]));_0x1fd6ef['attributes']=_0x1fd6ef[_0xb12d('0x3d')][_0xb12d('0x3f')]?_0x1fd6ef[_0xb12d('0x3d')]:_0x3fdfe1[_0xb12d('0x37')];if(!_0xb58f74[_0xb12d('0x38')]['hasOwnProperty'](_0xb12d('0x40'))){_0x1fd6ef[_0xb12d('0x41')]=qs[_0xb12d('0x41')](_0xb58f74[_0xb12d('0x38')][_0xb12d('0x41')]);_0x1fd6ef[_0xb12d('0x2d')]=qs['offset'](_0xb58f74['query'][_0xb12d('0x2d')]);}_0x1fd6ef[_0xb12d('0x42')]=qs[_0xb12d('0x43')](_0xb58f74[_0xb12d('0x38')][_0xb12d('0x43')]);_0x1fd6ef[_0xb12d('0x44')]=qs['filters'](_[_0xb12d('0x45')](_0xb58f74[_0xb12d('0x38')],_0x3fdfe1[_0xb12d('0x46')]));if(_0x4dd630[_0xb12d('0x39')]){if(_0x4dd630[_0xb12d('0x3a')]){_0x4dd630['dateEnd']=moment(_0x4dd630[_0xb12d('0x3a')])['add'](0x1,_0xb12d('0x47'));}else{_0x4dd630['dateEnd']=moment(_0x4dd630[_0xb12d('0x39')])[_0xb12d('0x48')](0x1,_0xb12d('0x47'));}_[_0xb12d('0x49')](_0x1fd6ef[_0xb12d('0x44')],{'createdAt':{'$gte':_0x4dd630[_0xb12d('0x39')],'$lte':_0x4dd630['dateEnd']}});}if(_0xb58f74[_0xb12d('0x38')]['filter']){_0x1fd6ef['where']=_[_0xb12d('0x49')](_0x1fd6ef[_0xb12d('0x44')],{'$or':_[_0xb12d('0x4a')](_0x52ede9,function(_0x5c4654){if(_0x5c4654[_0xb12d('0x4b')][_0xb12d('0x4c')]!==_0xb12d('0x4d')){var _0x4faa4c={};_0x4faa4c[_0x5c4654[_0xb12d('0x4e')]]={'$like':'%'+_0xb58f74[_0xb12d('0x38')][_0xb12d('0x4f')]+'%'};return _0x4faa4c;}})});}_0x1fd6ef=_['merge']({},_0x1fd6ef,_0xb58f74['options']);var _0x3aa7ee={'where':_0x1fd6ef['where']};return db['MailMessage'][_0xb12d('0x2c')](_0x3aa7ee)[_0xb12d('0x1e')](function(_0x48684e){_0x133389['count']=_0x48684e;if(_0xb58f74[_0xb12d('0x38')][_0xb12d('0x50')]){_0x1fd6ef[_0xb12d('0x51')]=[{'all':!![]}];}return db[_0xb12d('0x35')]['findAll'](_0x1fd6ef);})[_0xb12d('0x1e')](function(_0x4fa36f){_0x133389['rows']=_0x4fa36f;return _0x133389;})[_0xb12d('0x1e')](respondWithFilteredResult(_0x558b25,_0x1fd6ef))[_0xb12d('0x28')](handleError(_0x558b25,null));};exports[_0xb12d('0x52')]=function(_0x5c8dcf,_0x574dfe){var _0x3cdf74={'raw':!![],'where':{'id':_0x5c8dcf[_0xb12d('0x53')]['id']}},_0x35b7ab={};_0x35b7ab[_0xb12d('0x37')]=_[_0xb12d('0x3b')](db[_0xb12d('0x35')][_0xb12d('0x36')]);_0x35b7ab['query']=_[_0xb12d('0x3b')](_0x5c8dcf[_0xb12d('0x38')]);_0x35b7ab[_0xb12d('0x46')]=_[_0xb12d('0x3c')](_0x35b7ab[_0xb12d('0x37')],_0x35b7ab[_0xb12d('0x38')]);_0x3cdf74[_0xb12d('0x3d')]=_['intersection'](_0x35b7ab[_0xb12d('0x37')],qs[_0xb12d('0x3e')](_0x5c8dcf[_0xb12d('0x38')][_0xb12d('0x3e')]));_0x3cdf74[_0xb12d('0x3d')]=_0x3cdf74[_0xb12d('0x3d')][_0xb12d('0x3f')]?_0x3cdf74['attributes']:_0x35b7ab['model'];if(_0x5c8dcf[_0xb12d('0x38')]['includeAll']){_0x3cdf74[_0xb12d('0x51')]=[{'all':!![]}];}_0x3cdf74=_[_0xb12d('0x49')]({},_0x3cdf74,_0x5c8dcf[_0xb12d('0x54')]);return db[_0xb12d('0x35')][_0xb12d('0x55')](_0x3cdf74)['then'](handleEntityNotFound(_0x574dfe,null))['then'](respondWithResult(_0x574dfe,null))['catch'](handleError(_0x574dfe,null));};exports[_0xb12d('0x31')]=function(_0x3966f4,_0x592cc4){if(_0x3966f4[_0xb12d('0x56')]['id']){delete _0x3966f4[_0xb12d('0x56')]['id'];}return db['MailMessage'][_0xb12d('0x55')]({'where':{'id':_0x3966f4[_0xb12d('0x53')]['id']}})[_0xb12d('0x1e')](handleEntityNotFound(_0x592cc4,null))[_0xb12d('0x1e')](saveUpdates(_0x3966f4[_0xb12d('0x56')],null))[_0xb12d('0x1e')](respondWithResult(_0x592cc4,null))[_0xb12d('0x28')](handleError(_0x592cc4,null));};exports[_0xb12d('0x32')]=function(_0x13e518,_0x4871f5){return db[_0xb12d('0x35')]['find']({'where':{'id':_0x13e518['params']['id']}})['then'](handleEntityNotFound(_0x4871f5,null))[_0xb12d('0x1e')](removeEntity(_0x4871f5,null))[_0xb12d('0x28')](handleError(_0x4871f5,null));};exports['describe']=function(_0x50305c,_0x3b917a){return db[_0xb12d('0x35')][_0xb12d('0x57')]()[_0xb12d('0x1e')](respondWithResult(_0x3b917a,null))[_0xb12d('0x28')](handleError(_0x3b917a,null));};exports[_0xb12d('0x58')]=function(_0x3374f3,_0x17d895){return db['MailMessage']['create'](_0x3374f3[_0xb12d('0x56')])['then'](function(_0x50b3b6){if(_0x50b3b6){if(_0x50b3b6[_0xb12d('0x59')]==='out'&&!_0x50b3b6[_0xb12d('0x5a')]){return db['MailAccount'][_0xb12d('0x5b')]({'where':{'id':_0x50b3b6[_0xb12d('0x5c')]},'include':[{'model':db[_0xb12d('0x5d')],'as':_0xb12d('0x5e'),'raw':!![]}]})[_0xb12d('0x1e')](function(_0x6e5704){if(_0x6e5704&&_0x6e5704[_0xb12d('0x5e')]){var _0x1e5eef={'tls':{'rejectUnauthorized':![]}};if(_[_0xb12d('0x5f')](_0x6e5704['Smtp'][_0xb12d('0x60')])){_0x1e5eef['host']=_0x6e5704['Smtp'][_0xb12d('0x61')];_0x1e5eef[_0xb12d('0x62')]=_0x6e5704[_0xb12d('0x5e')][_0xb12d('0x62')];_0x1e5eef[_0xb12d('0x63')]=_0x6e5704[_0xb12d('0x5e')][_0xb12d('0x63')];if(_0x6e5704['Smtp'][_0xb12d('0x64')]){_0x1e5eef[_0xb12d('0x65')]={'user':_0x6e5704[_0xb12d('0x5e')][_0xb12d('0x66')],'pass':_0x6e5704[_0xb12d('0x5e')][_0xb12d('0x67')]};}}else{_0x1e5eef[_0xb12d('0x60')]=_0x6e5704[_0xb12d('0x5e')][_0xb12d('0x60')];_0x1e5eef[_0xb12d('0x65')]={'user':_0x6e5704[_0xb12d('0x5e')][_0xb12d('0x66')],'pass':_0x6e5704['Smtp'][_0xb12d('0x67')]};_0x1e5eef['secure']=_0x6e5704['Smtp'][_0xb12d('0x63')];}if(_0x3374f3[_0xb12d('0x56')][_0xb12d('0x68')]&&_0x3374f3[_0xb12d('0x56')][_0xb12d('0x68')][_0xb12d('0x3f')]){for(var _0x5e07ca=0x0;_0x5e07ca<_0x3374f3[_0xb12d('0x56')][_0xb12d('0x68')][_0xb12d('0x3f')];_0x5e07ca+=0x1){_0x3374f3['body']['attachments'][_0x5e07ca]={'filename':_0x3374f3[_0xb12d('0x56')][_0xb12d('0x68')][_0x5e07ca][_0xb12d('0x34')],'path':path[_0xb12d('0x69')](config[_0xb12d('0x6a')],'server/files/attachments',_0x3374f3[_0xb12d('0x56')][_0xb12d('0x68')][_0x5e07ca]['basename'])};}}return{'account':_0x1e5eef,'message':_0x3374f3[_0xb12d('0x56')]};}})['then'](function(_0x12160a){if(_0x12160a){return respondWithRpcPromise(_0xb12d('0x6b'),_0xb12d('0x6c'),_0x12160a,client9003)['then'](function(_0x43d714){return _0x50b3b6[_0xb12d('0x31')]({'read':!![],'messageId':_0x43d714[_0xb12d('0x6d')],'sentAt':moment()[_0xb12d('0x6e')](_0xb12d('0x6f'))});})[_0xb12d('0x28')](function(_0x3b29d0){logger['error']('%s',JSON[_0xb12d('0x24')](_0x3b29d0));return _0x50b3b6;});}return _0x50b3b6;});}return _0x50b3b6;}})[_0xb12d('0x1e')](respondWithResult(_0x17d895,0xc9))['catch'](handleError(_0x17d895,null));};var interaction_log=require(_0xb12d('0x12'))(_0xb12d('0x70'));exports['accept']=function(_0x3e2532,_0x573340,_0x10c498){var _0x353e3a={'channel':_0xb12d('0x71')};if(_0x3e2532['body']['id']){delete _0x3e2532[_0xb12d('0x56')]['id'];}_0x3e2532[_0xb12d('0x56')]['read']=!![];_0x3e2532['body'][_0xb12d('0x72')]=moment()['format'](_0xb12d('0x6f'));_0x3e2532[_0xb12d('0x56')][_0xb12d('0x73')]=_0x3e2532['body']['UserId']||_0x3e2532[_0xb12d('0x66')]['id'];return db[_0xb12d('0x35')][_0xb12d('0x55')]({'where':{'id':_0x3e2532['params']['id'],'UserId':null},'include':[{'model':db[_0xb12d('0x74')],'as':_0xb12d('0x75')}]})[_0xb12d('0x1e')](handleEntityNotFound(_0x573340,null))[_0xb12d('0x1e')](saveUpdates(_0x3e2532[_0xb12d('0x56')],null))[_0xb12d('0x1e')](function(_0xe01966){if(_0xe01966){_0x353e3a[_0xb12d('0x27')]=_0xe01966[_0xb12d('0x76')]({'plain':!![]});return db[_0xb12d('0x77')][_0xb12d('0x55')]({'where':{'id':_0xe01966['MailInteractionId']}});}return null;})[_0xb12d('0x1e')](handleEntityNotFound(_0x573340,null))['then'](function(_0x47eea0){if(_0x47eea0){return _0x47eea0[_0xb12d('0x31')]({'UserId':_0x3e2532[_0xb12d('0x56')][_0xb12d('0x73')],'read1stAt':_[_0xb12d('0x5f')](_0x47eea0[_0xb12d('0x78')])?moment()[_0xb12d('0x6e')](_0xb12d('0x6f')):undefined});}return null;})[_0xb12d('0x1e')](function(_0x42fc10){if(_0x42fc10){_0x353e3a[_0xb12d('0x79')]=_0x42fc10[_0xb12d('0x76')]({'plain':!![]});interaction_log[_0xb12d('0x1f')](_0xb12d('0x7a'),_0x3e2532['user']['id'],_0x3e2532['user']['name'],_0x3e2532[_0xb12d('0x66')][_0xb12d('0x7b')],_0x353e3a[_0xb12d('0x79')]['id'],_0x3e2532[_0xb12d('0x56')]?JSON['stringify'](_0x3e2532['body']):'null');return respondWithRpcPromise(_0xb12d('0x7c'),_0xb12d('0x7d'),_0x353e3a);}return null;})['then'](function(_0x1e29f3){if(_0x1e29f3){if(_0x3e2532[_0xb12d('0x56')][_0xb12d('0x7e')]){_0x353e3a[_0xb12d('0x27')]['interface']=util['format']('SIP/%s',_0x3e2532[_0xb12d('0x66')]['name']);_0x353e3a['message']['channel']=_0x353e3a[_0xb12d('0x7f')];_0x353e3a['message']['event']=_0xb12d('0x80');return respondWithRpcPromise('EventManager',_0xb12d('0x81'),{'event':_0xb12d('0x82'),'message':_0x353e3a['message']},client9002)[_0xb12d('0x1e')](function(){return _0x353e3a;});}return _0x353e3a;}return null;})[_0xb12d('0x1e')](respondWithResult(_0x573340,null))[_0xb12d('0x28')](handleError(_0x573340,null));};var interaction_log=require(_0xb12d('0x12'))('mail-interactions');exports[_0xb12d('0x2f')]=function(_0x5b4af4,_0x13bd10,_0x28a171){var _0xde6389={'agent':{},'channel':_0xb12d('0x71')};if(_0x5b4af4[_0xb12d('0x56')]['id']){delete _0x5b4af4[_0xb12d('0x56')]['id'];}_0x5b4af4['body']['UserId']=_0x5b4af4['body']['UserId']||_0x5b4af4['user']['id'];_0xde6389[_0xb12d('0x83')]['id']=_0x5b4af4['body'][_0xb12d('0x73')];return db[_0xb12d('0x35')][_0xb12d('0x55')]({'where':{'id':_0x5b4af4['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x13bd10,null))[_0xb12d('0x1e')](function(_0x406cf9){if(_0x406cf9){_0xde6389['message']=_0x406cf9[_0xb12d('0x76')]({'plain':!![]});return db[_0xb12d('0x77')][_0xb12d('0x55')]({'where':{'id':_0x406cf9['MailInteractionId']}});}return null;})[_0xb12d('0x1e')](handleEntityNotFound(_0x13bd10,null))['then'](function(_0x508fdb){if(_0x508fdb){_0xde6389[_0xb12d('0x79')]=_0x508fdb['get']({'plain':!![]});interaction_log[_0xb12d('0x1f')](_0xb12d('0x84'),_0x5b4af4[_0xb12d('0x66')]['id'],_0x5b4af4[_0xb12d('0x66')][_0xb12d('0x34')],_0x5b4af4[_0xb12d('0x66')][_0xb12d('0x7b')],_0xde6389[_0xb12d('0x79')]['id'],_0x5b4af4[_0xb12d('0x56')]?JSON[_0xb12d('0x24')](_0x5b4af4[_0xb12d('0x56')]):'null');return respondWithRpcPromise('RejectMessage',_0xb12d('0x85'),_0xde6389);}return null;})['then'](function(_0x3030b8){if(_0x3030b8){_0x3030b8[_0xb12d('0x27')][_0xb12d('0x86')]=util[_0xb12d('0x6e')](_0xb12d('0x87'),_0x5b4af4[_0xb12d('0x66')]['name']);_0x3030b8[_0xb12d('0x27')][_0xb12d('0x7f')]=_0xde6389[_0xb12d('0x7f')];_0x3030b8[_0xb12d('0x27')][_0xb12d('0x88')]=_0xb12d('0x2f');respondWithRpcPromise(_0xb12d('0x81'),'EventManager',{'event':_0xb12d('0x89'),'message':_0x3030b8[_0xb12d('0x27')]},client9002);return _0xde6389;}return null;})['then'](respondWithResult(_0x13bd10,null))[_0xb12d('0x28')](handleError(_0x13bd10,null));};exports[_0xb12d('0x8a')]=function(_0x47b74f,_0x55ed48){var _0x126847=moment()[_0xb12d('0x8b')]()[_0xb12d('0x8c')]();var _0x1b4474=path[_0xb12d('0x69')](config[_0xb12d('0x6a')],_0xb12d('0x8d'),'files',_0xb12d('0x8e'));var _0x35625d=path[_0xb12d('0x69')](config[_0xb12d('0x6a')],'server',_0xb12d('0x8f'),'attachments');var _0x4c51ff=util[_0xb12d('0x6e')](_0xb12d('0x90'),_0x126847);return db[_0xb12d('0x35')]['find']({'where':{'id':_0x47b74f[_0xb12d('0x53')]['id']},'attributes':['id',_0xb12d('0x56'),_0xb12d('0x91'),'to','cc',_0xb12d('0x92'),_0xb12d('0x93')],'include':_0x47b74f[_0xb12d('0x38')][_0xb12d('0x68')]?[{'model':db[_0xb12d('0x94')],'as':_0xb12d('0x95')}]:undefined})['then'](handleEntityNotFound(_0x55ed48,null))[_0xb12d('0x1e')](function(_0x5ab461){if(_0x5ab461){var _0x579379=_0x5ab461;var _0x350a32={'from':_0x579379['from'],'to':_0x579379['to'],'subject':_0x579379['subject'],'html':_0x579379['body'],'attachments':[]};return new BPromise(function(_0x1e7372,_0x58fef8){if(_0x5ab461[_0xb12d('0x95')]){for(var _0x2785a2=0x0;_0x2785a2<_0x5ab461[_0xb12d('0x95')]['length'];_0x2785a2++){var _0x15a0d4=_0x5ab461[_0xb12d('0x95')][_0x2785a2];var _0x5814d4=path[_0xb12d('0x69')](_0x35625d,_0x15a0d4[_0xb12d('0x96')]);if(fs[_0xb12d('0x97')](_0x5814d4)){_0x350a32[_0xb12d('0x68')]['push']({'name':_0x15a0d4[_0xb12d('0x34')],'contentType':_0x15a0d4[_0xb12d('0x4b')],'data':fs[_0xb12d('0x98')](_0x5814d4)});}}}emlformat[_0xb12d('0x99')](_0x350a32,function(_0x3e4867,_0x31570e){if(_0x3e4867)return _0x58fef8(_0x3e4867);fs[_0xb12d('0x9a')](path['join'](_0x1b4474,_0x4c51ff),_0x31570e);return _0x1e7372(_0x31570e);});});}})['then'](function(_0x4436b1){if(_0x4436b1){return _0x55ed48[_0xb12d('0x8a')](path['join'](_0x1b4474,_0x4c51ff),_0x4c51ff,function(_0x4b28f4){if(_0x4b28f4){console[_0xb12d('0x9b')]('err',_0x4b28f4);}else{fs[_0xb12d('0x9c')](path[_0xb12d('0x69')](_0x1b4474,_0x4c51ff));}});}})[_0xb12d('0x28')](handleError(_0x55ed48,null));};
\ No newline at end of file
index c96e231..569254d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33c5=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','MailMessage','save','update'];(function(_0x27c43b,_0x24916f){var _0x12de33=function(_0x29e2e){while(--_0x29e2e){_0x27c43b['push'](_0x27c43b['shift']());}};_0x12de33(++_0x24916f);}(_0x33c5,0xe6));var _0x533c=function(_0xcdf809,_0x2881f0){_0xcdf809=_0xcdf809-0x0;var _0x4d4d70=_0x33c5[_0xcdf809];return _0x4d4d70;};'use strict';var EventEmitter=require('events');var MailMessage=require(_0x533c('0x0'))['db'][_0x533c('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x533c('0x2'),'afterUpdate':_0x533c('0x3'),'afterDestroy':_0x533c('0x4')};function emitEvent(_0x23a12d){return function(_0x358127,_0x49609e,_0x10943d){MailMessageEvents[_0x533c('0x5')](_0x23a12d+':'+_0x358127['id'],_0x358127);MailMessageEvents[_0x533c('0x5')](_0x23a12d,_0x358127);_0x10943d(null);};}for(var e in events){if(events[_0x533c('0x6')](e)){var event=events[e];MailMessage[_0x533c('0x7')](e,emitEvent(event));}}module[_0x533c('0x8')]=MailMessageEvents;
\ No newline at end of file
+var _0x8bc3=['hook','exports','events','MailMessage','save','update','emit','hasOwnProperty'];(function(_0x4789b3,_0x4f98e1){var _0x27b5c1=function(_0x1c1056){while(--_0x1c1056){_0x4789b3['push'](_0x4789b3['shift']());}};_0x27b5c1(++_0x4f98e1);}(_0x8bc3,0x82));var _0x38bc=function(_0x5e2a0f,_0x447ab4){_0x5e2a0f=_0x5e2a0f-0x0;var _0x3e8c10=_0x8bc3[_0x5e2a0f];return _0x3e8c10;};'use strict';var EventEmitter=require(_0x38bc('0x0'));var MailMessage=require('../../mysqldb')['db'][_0x38bc('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x38bc('0x2'),'afterUpdate':_0x38bc('0x3'),'afterDestroy':'remove'};function emitEvent(_0x38862e){return function(_0x24ad99,_0x20d785,_0x265fd7){MailMessageEvents['emit'](_0x38862e+':'+_0x24ad99['id'],_0x24ad99);MailMessageEvents[_0x38bc('0x4')](_0x38862e,_0x24ad99);_0x265fd7(null);};}for(var e in events){if(events[_0x38bc('0x5')](e)){var event=events[e];MailMessage[_0x38bc('0x6')](e,emitEvent(event));}}module[_0x38bc('0x7')]=MailMessageEvents;
\ No newline at end of file
index d26351e..c94602e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eb0=['../../config/logger','bluebird','request-promise','./mailMessage.attributes','define','MailMessage','mail_messages','messageId','lodash','util'];(function(_0x3f92c7,_0x863c8){var _0x2e7f61=function(_0x2aa370){while(--_0x2aa370){_0x3f92c7['push'](_0x3f92c7['shift']());}};_0x2e7f61(++_0x863c8);}(_0x4eb0,0xd0));var _0x04eb=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4eb0[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x04eb('0x0'));var util=require(_0x04eb('0x1'));var logger=require(_0x04eb('0x2'))('api');var moment=require('moment');var BPromise=require(_0x04eb('0x3'));var rp=require(_0x04eb('0x4'));var attributes=require(_0x04eb('0x5'));module['exports']=function(_0xb277f8,_0x4550de){return _0xb277f8[_0x04eb('0x6')](_0x04eb('0x7'),attributes,{'tableName':_0x04eb('0x8'),'paranoid':![],'indexes':[{'name':_0x04eb('0x9'),'fields':['messageId']}],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x6f0d=['utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','./mailMessage.attributes','define','MailMessage','mail_messages','messageId','utf8mb4'];(function(_0x982824,_0x1edf88){var _0x50a65a=function(_0x2aa471){while(--_0x2aa471){_0x982824['push'](_0x982824['shift']());}};_0x50a65a(++_0x1edf88);}(_0x6f0d,0xeb));var _0xd6f0=function(_0x384d7b,_0x2475bf){_0x384d7b=_0x384d7b-0x0;var _0x389b7e=_0x6f0d[_0x384d7b];return _0x389b7e;};'use strict';var _=require('lodash');var util=require(_0xd6f0('0x0'));var logger=require(_0xd6f0('0x1'))(_0xd6f0('0x2'));var moment=require(_0xd6f0('0x3'));var BPromise=require(_0xd6f0('0x4'));var rp=require(_0xd6f0('0x5'));var attributes=require(_0xd6f0('0x6'));module['exports']=function(_0x326310,_0x1ed64d){return _0x326310[_0xd6f0('0x7')](_0xd6f0('0x8'),attributes,{'tableName':_0xd6f0('0x9'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xd6f0('0xa')]}],'timestamps':!![],'charset':_0xd6f0('0xb'),'collate':_0xd6f0('0xc')});};
\ No newline at end of file
index 8e15885..bf21619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9b1=['./mailMessage.socket','register','request','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','CreateMailMessage','MailMessage','create','body','options','then','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xa9b1,0x133));var _0x1a9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9b1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1a9b('0x0'));var BPromise=require(_0x1a9b('0x1'));var rs=require(_0x1a9b('0x2'));var fs=require('fs');var Redis=require(_0x1a9b('0x3'));var db=require(_0x1a9b('0x4'))['db'];var utils=require(_0x1a9b('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x1a9b('0x6'));var client=jayson[_0x1a9b('0x7')][_0x1a9b('0x8')]({'port':0x232a});config[_0x1a9b('0x9')]=_[_0x1a9b('0xa')](config[_0x1a9b('0x9')],{'host':_0x1a9b('0xb'),'port':0x18eb});var socket=require(_0x1a9b('0xc'))(new Redis(config[_0x1a9b('0x9')]));require(_0x1a9b('0xd'))[_0x1a9b('0xe')](socket);function respondWithRpcPromise(_0x57659a,_0x55f1aa,_0x4e1aef){return new BPromise(function(_0x3f0e5f,_0x3de4ed){return client[_0x1a9b('0xf')](_0x57659a,_0x4e1aef)['then'](function(_0x5e48cd){logger['info'](_0x1a9b('0x10'),_0x55f1aa,_0x1a9b('0x11'));logger[_0x1a9b('0x12')](_0x1a9b('0x13'),_0x55f1aa,_0x1a9b('0x11'),JSON[_0x1a9b('0x14')](_0x5e48cd));if(_0x5e48cd['error']){if(_0x5e48cd[_0x1a9b('0x15')][_0x1a9b('0x16')]===0x1f4){logger[_0x1a9b('0x15')]('MailMessage,\x20%s,\x20%s',_0x55f1aa,_0x5e48cd[_0x1a9b('0x15')][_0x1a9b('0x17')]);return _0x3de4ed(_0x5e48cd['error'][_0x1a9b('0x17')]);}logger['error'](_0x1a9b('0x10'),_0x55f1aa,_0x5e48cd[_0x1a9b('0x15')][_0x1a9b('0x17')]);return _0x3f0e5f(_0x5e48cd[_0x1a9b('0x15')][_0x1a9b('0x17')]);}else{logger[_0x1a9b('0x18')](_0x1a9b('0x10'),_0x55f1aa,_0x1a9b('0x11'));_0x3f0e5f(_0x5e48cd[_0x1a9b('0x19')][_0x1a9b('0x17')]);}})['catch'](function(_0x13be9a){logger[_0x1a9b('0x15')](_0x1a9b('0x10'),_0x55f1aa,_0x13be9a);_0x3de4ed(_0x13be9a);});});}exports[_0x1a9b('0x1a')]=function(_0x5687fc){var _0x208e1f=this;return new Promise(function(_0x427d6c,_0x4b3cd3){return db[_0x1a9b('0x1b')][_0x1a9b('0x1c')](_0x5687fc[_0x1a9b('0x1d')],{'raw':_0x5687fc[_0x1a9b('0x1e')]?_0x5687fc[_0x1a9b('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0x1a9b('0x1f')](function(_0x17b1dd){logger[_0x1a9b('0x18')](_0x1a9b('0x1a'),_0x5687fc);logger[_0x1a9b('0x12')](_0x1a9b('0x1a'),_0x5687fc,JSON[_0x1a9b('0x14')](_0x17b1dd));_0x427d6c(_0x17b1dd);})['catch'](function(_0xabfc95){logger['error'](_0x1a9b('0x1a'),_0xabfc95[_0x1a9b('0x17')],_0x5687fc);_0x4b3cd3(_0x208e1f[_0x1a9b('0x15')](0x1f4,_0xabfc95['message']));});});};
\ No newline at end of file
+var _0x63b6=['../../config/logger','rpc','../../config/environment','client','redis','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailMessage','MailMessage','create','options','debug','lodash','util','moment','randomstring','../../mysqldb'];(function(_0x31c81b,_0x4a2b1c){var _0x52ab34=function(_0x2e6c48){while(--_0x2e6c48){_0x31c81b['push'](_0x31c81b['shift']());}};_0x52ab34(++_0x4a2b1c);}(_0x63b6,0x127));var _0x663b=function(_0x102b2b,_0x45d45e){_0x102b2b=_0x102b2b-0x0;var _0x55db93=_0x63b6[_0x102b2b];return _0x55db93;};'use strict';var _=require(_0x663b('0x0'));var util=require(_0x663b('0x1'));var moment=require(_0x663b('0x2'));var BPromise=require('bluebird');var rs=require(_0x663b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x663b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x663b('0x5'))(_0x663b('0x6'));var config=require(_0x663b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x663b('0x8')]['http']({'port':0x232a});config[_0x663b('0x9')]=_['defaults'](config[_0x663b('0x9')],{'host':_0x663b('0xa'),'port':0x18eb});var socket=require(_0x663b('0xb'))(new Redis(config[_0x663b('0x9')]));require(_0x663b('0xc'))[_0x663b('0xd')](socket);function respondWithRpcPromise(_0x4a9838,_0x31106e,_0x1a00e3){return new BPromise(function(_0x1d0dba,_0x213994){return client[_0x663b('0xe')](_0x4a9838,_0x1a00e3)[_0x663b('0xf')](function(_0xb70cbe){logger[_0x663b('0x10')](_0x663b('0x11'),_0x31106e,_0x663b('0x12'));logger['debug']('MailMessage,\x20%s,\x20%s,\x20%s',_0x31106e,_0x663b('0x12'),JSON[_0x663b('0x13')](_0xb70cbe));if(_0xb70cbe[_0x663b('0x14')]){if(_0xb70cbe[_0x663b('0x14')][_0x663b('0x15')]===0x1f4){logger[_0x663b('0x14')]('MailMessage,\x20%s,\x20%s',_0x31106e,_0xb70cbe[_0x663b('0x14')][_0x663b('0x16')]);return _0x213994(_0xb70cbe[_0x663b('0x14')][_0x663b('0x16')]);}logger[_0x663b('0x14')](_0x663b('0x11'),_0x31106e,_0xb70cbe[_0x663b('0x14')][_0x663b('0x16')]);return _0x1d0dba(_0xb70cbe[_0x663b('0x14')][_0x663b('0x16')]);}else{logger[_0x663b('0x10')](_0x663b('0x11'),_0x31106e,_0x663b('0x12'));_0x1d0dba(_0xb70cbe[_0x663b('0x17')]['message']);}})[_0x663b('0x18')](function(_0x455dd5){logger['error'](_0x663b('0x11'),_0x31106e,_0x455dd5);_0x213994(_0x455dd5);});});}exports[_0x663b('0x19')]=function(_0x50786f){var _0x593db6=this;return new Promise(function(_0x1f7dd9,_0x12a5b7){return db[_0x663b('0x1a')][_0x663b('0x1b')](_0x50786f['body'],{'raw':_0x50786f[_0x663b('0x1c')]?_0x50786f[_0x663b('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x521a89){logger['info'](_0x663b('0x19'),_0x50786f);logger[_0x663b('0x1d')](_0x663b('0x19'),_0x50786f,JSON[_0x663b('0x13')](_0x521a89));_0x1f7dd9(_0x521a89);})[_0x663b('0x18')](function(_0x43b58a){logger[_0x663b('0x14')](_0x663b('0x19'),_0x43b58a[_0x663b('0x16')],_0x50786f);_0x12a5b7(_0x593db6['error'](0x1f4,_0x43b58a[_0x663b('0x16')]));});});};
\ No newline at end of file
index b20dd75..7b33d1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x500e=['length','mailMessage:','save','remove','update','emit','register'];(function(_0x4bd350,_0x9be9fd){var _0x224acc=function(_0x2b70fa){while(--_0x2b70fa){_0x4bd350['push'](_0x4bd350['shift']());}};_0x224acc(++_0x9be9fd);}(_0x500e,0xbf));var _0xe500=function(_0x11a55c,_0x4eced9){_0x11a55c=_0x11a55c-0x0;var _0x26c390=_0x500e[_0x11a55c];return _0x26c390;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xe500('0x0'),_0xe500('0x1'),_0xe500('0x2')];function createListener(_0x2b47d1,_0x22d0ae){return function(_0x3ea7ad){_0x22d0ae[_0xe500('0x3')](_0x2b47d1,_0x3ea7ad);};}function removeListener(_0x3b0fc9,_0x11b4cd){return function(){MailMessageEvents['removeListener'](_0x3b0fc9,_0x11b4cd);};}exports[_0xe500('0x4')]=function(_0x14fe0a){for(var _0x136378=0x0,_0x5db309=events[_0xe500('0x5')];_0x136378<_0x5db309;_0x136378++){var _0x2f6d0a=events[_0x136378];var _0x57bd54=createListener(_0xe500('0x6')+_0x2f6d0a,_0x14fe0a);MailMessageEvents['on'](_0x2f6d0a,_0x57bd54);}};
\ No newline at end of file
+var _0x9fc3=['emit','removeListener','register','length','mailMessage:','./mailMessage.events','save','remove','update'];(function(_0x3ad614,_0x5286da){var _0x2c620d=function(_0x41fc6e){while(--_0x41fc6e){_0x3ad614['push'](_0x3ad614['shift']());}};_0x2c620d(++_0x5286da);}(_0x9fc3,0xcb));var _0x39fc=function(_0x476b2c,_0x36b29c){_0x476b2c=_0x476b2c-0x0;var _0x2dc822=_0x9fc3[_0x476b2c];return _0x2dc822;};'use strict';var MailMessageEvents=require(_0x39fc('0x0'));var events=[_0x39fc('0x1'),_0x39fc('0x2'),_0x39fc('0x3')];function createListener(_0x293689,_0x5c6007){return function(_0x504c52){_0x5c6007[_0x39fc('0x4')](_0x293689,_0x504c52);};}function removeListener(_0xe79d81,_0x59808d){return function(){MailMessageEvents[_0x39fc('0x5')](_0xe79d81,_0x59808d);};}exports[_0x39fc('0x6')]=function(_0x1ad379){for(var _0x4496d0=0x0,_0x39d163=events[_0x39fc('0x7')];_0x4496d0<_0x39d163;_0x4496d0++){var _0x4e70fa=events[_0x4496d0];var _0x108460=createListener(_0x39fc('0x8')+_0x4e70fa,_0x1ad379);MailMessageEvents['on'](_0x4e70fa,_0x108460);}};
\ No newline at end of file
index 519aaac..ec76b25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b9=['/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create','addTeams','/:id/users','addAgents','put','update','destroy','delete','removeTeams','removeAgents','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','isAuthenticated','index','get','describe'];(function(_0x59c8b7,_0x5e0eca){var _0x4f723a=function(_0x4dd66f){while(--_0x4dd66f){_0x59c8b7['push'](_0x59c8b7['shift']());}};_0x4f723a(++_0x5e0eca);}(_0x83b9,0xf3));var _0x983b=function(_0x5c5bf5,_0x2b3e1b){_0x5c5bf5=_0x5c5bf5-0x0;var _0x188b4b=_0x83b9[_0x5c5bf5];return _0x188b4b;};'use strict';var multer=require('multer');var util=require(_0x983b('0x0'));var path=require(_0x983b('0x1'));var timeout=require(_0x983b('0x2'));var express=require(_0x983b('0x3'));var router=express[_0x983b('0x4')]();var auth=require(_0x983b('0x5'));var interaction=require(_0x983b('0x6'));var config=require(_0x983b('0x7'));var controller=require(_0x983b('0x8'));router['get']('/',auth[_0x983b('0x9')](),controller[_0x983b('0xa')]);router[_0x983b('0xb')]('/describe',auth[_0x983b('0x9')](),controller[_0x983b('0xc')]);router[_0x983b('0xb')](_0x983b('0xd'),auth[_0x983b('0x9')](),controller[_0x983b('0xe')]);router[_0x983b('0xb')](_0x983b('0xf'),auth[_0x983b('0x9')](),controller[_0x983b('0x10')]);router[_0x983b('0xb')](_0x983b('0x11'),auth[_0x983b('0x9')](),controller[_0x983b('0x12')]);router[_0x983b('0xb')]('/:id/users',auth['isAuthenticated'](),controller[_0x983b('0x13')]);router[_0x983b('0x14')]('/',auth[_0x983b('0x9')](),controller[_0x983b('0x15')]);router[_0x983b('0x14')](_0x983b('0x11'),auth[_0x983b('0x9')](),controller[_0x983b('0x16')]);router[_0x983b('0x14')](_0x983b('0x17'),auth['isAuthenticated'](),controller[_0x983b('0x18')]);router[_0x983b('0x19')]('/:id',auth[_0x983b('0x9')](),controller[_0x983b('0x1a')]);router['delete'](_0x983b('0xd'),auth[_0x983b('0x9')](),controller[_0x983b('0x1b')]);router[_0x983b('0x1c')]('/:id/teams',auth[_0x983b('0x9')](),controller[_0x983b('0x1d')]);router['delete'](_0x983b('0x17'),auth[_0x983b('0x9')](),controller[_0x983b('0x1e')]);module[_0x983b('0x1f')]=router;
\ No newline at end of file
+var _0xf518=['post','create','addAgents','put','update','delete','destroy','removeTeams','removeAgents','util','path','express','Router','../../components/interaction/service','./mailQueue.controller','get','isAuthenticated','index','/describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents'];(function(_0x338cff,_0x26894f){var _0x4892d6=function(_0x3f0876){while(--_0x3f0876){_0x338cff['push'](_0x338cff['shift']());}};_0x4892d6(++_0x26894f);}(_0xf518,0x18f));var _0x8f51=function(_0x59b2a1,_0x1f631f){_0x59b2a1=_0x59b2a1-0x0;var _0x4908d1=_0xf518[_0x59b2a1];return _0x4908d1;};'use strict';var multer=require('multer');var util=require(_0x8f51('0x0'));var path=require(_0x8f51('0x1'));var timeout=require('connect-timeout');var express=require(_0x8f51('0x2'));var router=express[_0x8f51('0x3')]();var auth=require('../../components/auth/service');var interaction=require(_0x8f51('0x4'));var config=require('../../config/environment');var controller=require(_0x8f51('0x5'));router[_0x8f51('0x6')]('/',auth[_0x8f51('0x7')](),controller[_0x8f51('0x8')]);router[_0x8f51('0x6')](_0x8f51('0x9'),auth[_0x8f51('0x7')](),controller['describe']);router[_0x8f51('0x6')](_0x8f51('0xa'),auth[_0x8f51('0x7')](),controller[_0x8f51('0xb')]);router[_0x8f51('0x6')]('/:id/members',auth['isAuthenticated'](),controller[_0x8f51('0xc')]);router['get'](_0x8f51('0xd'),auth['isAuthenticated'](),controller[_0x8f51('0xe')]);router[_0x8f51('0x6')](_0x8f51('0xf'),auth[_0x8f51('0x7')](),controller[_0x8f51('0x10')]);router[_0x8f51('0x11')]('/',auth[_0x8f51('0x7')](),controller[_0x8f51('0x12')]);router[_0x8f51('0x11')](_0x8f51('0xd'),auth['isAuthenticated'](),controller['addTeams']);router[_0x8f51('0x11')](_0x8f51('0xf'),auth['isAuthenticated'](),controller[_0x8f51('0x13')]);router[_0x8f51('0x14')](_0x8f51('0xa'),auth[_0x8f51('0x7')](),controller[_0x8f51('0x15')]);router[_0x8f51('0x16')](_0x8f51('0xa'),auth['isAuthenticated'](),controller[_0x8f51('0x17')]);router[_0x8f51('0x16')]('/:id/teams',auth[_0x8f51('0x7')](),controller[_0x8f51('0x18')]);router['delete'](_0x8f51('0xf'),auth[_0x8f51('0x7')](),controller[_0x8f51('0x19')]);module['exports']=router;
\ No newline at end of file
index be1843a..c36bfbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c3=['beepall','sequelize','exports','STRING','name','INTEGER'];(function(_0x2c8c7e,_0x4a9cb0){var _0x44d5f0=function(_0x48f67c){while(--_0x48f67c){_0x2c8c7e['push'](_0x2c8c7e['shift']());}};_0x44d5f0(++_0x4a9cb0);}(_0xc2c3,0x139));var _0x3c2c=function(_0x3b5fc5,_0x48a26c){_0x3b5fc5=_0x3b5fc5-0x0;var _0x40b83f=_0xc2c3[_0x3b5fc5];return _0x40b83f;};'use strict';var Sequelize=require(_0x3c2c('0x0'));module[_0x3c2c('0x1')]={'name':{'type':Sequelize[_0x3c2c('0x2')],'unique':_0x3c2c('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x3c2c('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x3c2c('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x1ae5=['INTEGER','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x4bb541,_0xfe74c5){var _0x30958f=function(_0x41ed68){while(--_0x41ed68){_0x4bb541['push'](_0x4bb541['shift']());}};_0x30958f(++_0xfe74c5);}(_0x1ae5,0x1f4));var _0x51ae=function(_0x33af97,_0x28a560){_0x33af97=_0x33af97-0x0;var _0x4729b1=_0x1ae5[_0x33af97];return _0x4729b1;};'use strict';var Sequelize=require(_0x51ae('0x0'));module[_0x51ae('0x1')]={'name':{'type':Sequelize[_0x51ae('0x2')],'unique':_0x51ae('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x51ae('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x51ae('0x5'),_0x51ae('0x6'),_0x51ae('0x7'))}};
\ No newline at end of file
index ec353e1..e77253d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcf0=['error','stack','name','index','MailQueue','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','where','pick','add','day','merge','filter','map','type','key','field','includeAll','include','findAll','rows','catch','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','params','describe','UserMailQueue','sort','User','UserId','agent','mailPause','updatedAt','count','format','%s/%s','SIP','createdAt','getTeams','findOne','Team','ids','Agents','union','addAgents','penalty','addTeams','removeTeams','removeAgents','spread','emit','userMailQueue:save','isArray','userMailQueue:remove','getAgents','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./mailQueue.socket','register','status','end','json','offset','set','apply','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','sendStatus'];(function(_0x1a9390,_0x3339e6){var _0x2b4514=function(_0x1c07d5){while(--_0x1c07d5){_0x1a9390['push'](_0x1a9390['shift']());}};_0x2b4514(++_0x3339e6);}(_0xfcf0,0x138));var _0x0fcf=function(_0x10a212,_0x579d85){_0x10a212=_0x10a212-0x0;var _0x23c82b=_0xfcf0[_0x10a212];return _0x23c82b;};'use strict';var pdf=require(_0x0fcf('0x0'));var emlformat=require(_0x0fcf('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x0fcf('0x2'));var jsonpatch=require(_0x0fcf('0x3'));var rp=require(_0x0fcf('0x4'));var moment=require(_0x0fcf('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0fcf('0x6'));var util=require(_0x0fcf('0x7'));var path=require(_0x0fcf('0x8'));var sox=require(_0x0fcf('0x9'));var csv=require(_0x0fcf('0xa'));var ejs=require(_0x0fcf('0xb'));var fs=require('fs');var _=require(_0x0fcf('0xc'));var squel=require(_0x0fcf('0xd'));var crypto=require('crypto');var jsforce=require(_0x0fcf('0xe'));var deskjs=require(_0x0fcf('0xf'));var toCsv=require(_0x0fcf('0xa'));var querystring=require('querystring');var Papa=require(_0x0fcf('0x10'));var Redis=require(_0x0fcf('0x11'));var qs=require(_0x0fcf('0x12'));var logger=require('../../config/logger')(_0x0fcf('0x13'));var utils=require('../../config/utils');var config=require(_0x0fcf('0x14'));var db=require(_0x0fcf('0x15'))['db'];config[_0x0fcf('0x16')]=_['defaults'](config['redis'],{'host':_0x0fcf('0x17'),'port':0x18eb});var socket=require(_0x0fcf('0x18'))(new Redis(config['redis']));require(_0x0fcf('0x19'))[_0x0fcf('0x1a')](socket);function respondWithStatusCode(_0x160d2c,_0x26b169){_0x26b169=_0x26b169||0xcc;return function(_0x25fadc){if(_0x25fadc){return _0x160d2c['sendStatus'](_0x26b169);}return _0x160d2c[_0x0fcf('0x1b')](_0x26b169)[_0x0fcf('0x1c')]();};}function respondWithResult(_0x1fcb47,_0x5e867f){_0x5e867f=_0x5e867f||0xc8;return function(_0x3c09c4){if(_0x3c09c4){return _0x1fcb47[_0x0fcf('0x1b')](_0x5e867f)[_0x0fcf('0x1d')](_0x3c09c4);}};}function respondWithFilteredResult(_0x177c8f,_0x48dd53){return function(_0x3e78d0){if(_0x3e78d0){var _0x2f8289=_0x3e78d0['count'],_0x1a8477=_0x48dd53[_0x0fcf('0x1e')],_0x8581bd=_0x48dd53[_0x0fcf('0x1e')]+_0x48dd53['limit'],_0x19cfbd;if(_0x8581bd>=_0x2f8289){_0x8581bd=_0x2f8289;_0x19cfbd=0xc8;}else{_0x19cfbd=0xce;}_0x177c8f[_0x0fcf('0x1b')](_0x19cfbd);return _0x177c8f[_0x0fcf('0x1f')]('Content-Range',_0x1a8477+'-'+_0x8581bd+'/'+_0x2f8289)[_0x0fcf('0x1d')](_0x3e78d0);}return null;};}function patchUpdates(_0x50ac4a){return function(_0x3fc9e6){try{jsonpatch[_0x0fcf('0x20')](_0x3fc9e6,_0x50ac4a,!![]);}catch(_0x5c8279){return BPromise[_0x0fcf('0x21')](_0x5c8279);}return _0x3fc9e6[_0x0fcf('0x22')]();};}function saveUpdates(_0x29dbdf,_0x5c459c){return function(_0x2f03ce){if(_0x2f03ce){return _0x2f03ce[_0x0fcf('0x23')](_0x29dbdf)[_0x0fcf('0x24')](function(_0x41b20b){return _0x41b20b;});}return null;};}function removeEntity(_0x18af5c,_0x30e1b0){return function(_0x5841a9){if(_0x5841a9){return _0x5841a9[_0x0fcf('0x25')]()[_0x0fcf('0x24')](function(){var _0x6021b4=_0x5841a9[_0x0fcf('0x26')]({'plain':!![]});var _0x233ac9=_0x0fcf('0x27');return db[_0x0fcf('0x28')][_0x0fcf('0x25')]({'where':{'type':_0x233ac9,'resourceId':_0x6021b4['id']}})[_0x0fcf('0x24')](function(){return _0x5841a9;});})['then'](function(){_0x18af5c[_0x0fcf('0x1b')](0xcc)[_0x0fcf('0x1c')]();});}};}function handleEntityNotFound(_0x41b7a2,_0x2f198b){return function(_0x3876ed){if(!_0x3876ed){_0x41b7a2[_0x0fcf('0x29')](0x194);}return _0x3876ed;};}function handleError(_0x2730b0,_0x527d43){_0x527d43=_0x527d43||0x1f4;return function(_0x137e10){logger[_0x0fcf('0x2a')](_0x137e10[_0x0fcf('0x2b')]);if(_0x137e10[_0x0fcf('0x2c')]){delete _0x137e10['name'];}_0x2730b0['status'](_0x527d43)['send'](_0x137e10);};}exports[_0x0fcf('0x2d')]=function(_0x50b7df,_0x26c3bc){var _0x9ccae3={},_0x56a416={},_0xdfd3ec={'count':0x0,'rows':[]};var _0x117041=db[_0x0fcf('0x2e')][_0x0fcf('0x2f')];_0x56a416[_0x0fcf('0x30')]=_[_0x0fcf('0x31')](_0x117041);var _0x583b59={'dateStart':_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x33')],'dateEnd':_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x34')]};delete _0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x33')];delete _0x50b7df['query'][_0x0fcf('0x34')];_0x56a416[_0x0fcf('0x32')]=_[_0x0fcf('0x31')](_0x50b7df[_0x0fcf('0x32')]);_0x56a416[_0x0fcf('0x35')]=_[_0x0fcf('0x36')](_0x56a416[_0x0fcf('0x30')],_0x56a416[_0x0fcf('0x32')]);_0x9ccae3[_0x0fcf('0x37')]=_[_0x0fcf('0x36')](_0x56a416[_0x0fcf('0x30')],qs[_0x0fcf('0x38')](_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x38')]));_0x9ccae3['attributes']=_0x9ccae3['attributes'][_0x0fcf('0x39')]?_0x9ccae3['attributes']:_0x56a416['model'];if(!_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x3a')](_0x0fcf('0x3b'))){_0x9ccae3['limit']=qs['limit'](_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x3c')]);_0x9ccae3[_0x0fcf('0x1e')]=qs['offset'](_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x1e')]);}_0x9ccae3[_0x0fcf('0x3d')]=qs['sort'](_0x50b7df['query']['sort']);_0x9ccae3[_0x0fcf('0x3e')]=qs[_0x0fcf('0x35')](_[_0x0fcf('0x3f')](_0x50b7df[_0x0fcf('0x32')],_0x56a416[_0x0fcf('0x35')]));if(_0x583b59['dateStart']){if(_0x583b59[_0x0fcf('0x34')]){_0x583b59[_0x0fcf('0x34')]=moment(_0x583b59[_0x0fcf('0x34')])['add'](0x1,'day');}else{_0x583b59[_0x0fcf('0x34')]=moment(_0x583b59[_0x0fcf('0x33')])[_0x0fcf('0x40')](0x1,_0x0fcf('0x41'));}_[_0x0fcf('0x42')](_0x9ccae3['where'],{'createdAt':{'$gte':_0x583b59[_0x0fcf('0x33')],'$lte':_0x583b59[_0x0fcf('0x34')]}});}if(_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x43')]){_0x9ccae3['where']=_['merge'](_0x9ccae3[_0x0fcf('0x3e')],{'$or':_[_0x0fcf('0x44')](_0x117041,function(_0x5544e3){if(_0x5544e3[_0x0fcf('0x45')][_0x0fcf('0x46')]!=='VIRTUAL'){var _0x237fa6={};_0x237fa6[_0x5544e3[_0x0fcf('0x47')]]={'$like':'%'+_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x43')]+'%'};return _0x237fa6;}})});}_0x9ccae3=_[_0x0fcf('0x42')]({},_0x9ccae3,_0x50b7df['options']);var _0x30dbda={'where':_0x9ccae3[_0x0fcf('0x3e')]};return db['MailQueue']['count'](_0x30dbda)[_0x0fcf('0x24')](function(_0x4cc328){_0xdfd3ec['count']=_0x4cc328;if(_0x50b7df[_0x0fcf('0x32')][_0x0fcf('0x48')]){_0x9ccae3[_0x0fcf('0x49')]=[{'all':!![]}];}return db[_0x0fcf('0x2e')][_0x0fcf('0x4a')](_0x9ccae3);})[_0x0fcf('0x24')](function(_0x5848c4){_0xdfd3ec[_0x0fcf('0x4b')]=_0x5848c4;return _0xdfd3ec;})[_0x0fcf('0x24')](respondWithFilteredResult(_0x26c3bc,_0x9ccae3))[_0x0fcf('0x4c')](handleError(_0x26c3bc,null));};exports['show']=function(_0x39e927,_0x227dd5){var _0x3e24fc={'raw':!![],'where':{'id':_0x39e927['params']['id']}},_0x4b2308={};_0x4b2308[_0x0fcf('0x30')]=_[_0x0fcf('0x31')](db[_0x0fcf('0x2e')][_0x0fcf('0x2f')]);_0x4b2308['query']=_['keys'](_0x39e927[_0x0fcf('0x32')]);_0x4b2308[_0x0fcf('0x35')]=_[_0x0fcf('0x36')](_0x4b2308[_0x0fcf('0x30')],_0x4b2308[_0x0fcf('0x32')]);_0x3e24fc[_0x0fcf('0x37')]=_[_0x0fcf('0x36')](_0x4b2308[_0x0fcf('0x30')],qs['fields'](_0x39e927['query'][_0x0fcf('0x38')]));_0x3e24fc[_0x0fcf('0x37')]=_0x3e24fc[_0x0fcf('0x37')][_0x0fcf('0x39')]?_0x3e24fc[_0x0fcf('0x37')]:_0x4b2308[_0x0fcf('0x30')];if(_0x39e927['query'][_0x0fcf('0x48')]){_0x3e24fc[_0x0fcf('0x49')]=[{'all':!![]}];}_0x3e24fc=_['merge']({},_0x3e24fc,_0x39e927[_0x0fcf('0x4d')]);return db[_0x0fcf('0x2e')][_0x0fcf('0x4e')](_0x3e24fc)[_0x0fcf('0x24')](handleEntityNotFound(_0x227dd5,null))['then'](respondWithResult(_0x227dd5,null))[_0x0fcf('0x4c')](handleError(_0x227dd5,null));};exports[_0x0fcf('0x4f')]=function(_0x1bb062,_0x1b5ae4){return db[_0x0fcf('0x2e')][_0x0fcf('0x4f')](_0x1bb062[_0x0fcf('0x50')],{})[_0x0fcf('0x24')](function(_0x389d71){var _0x3a473c=_0x1bb062[_0x0fcf('0x51')][_0x0fcf('0x26')]({'plain':!![]});if(!_0x3a473c)throw new Error(_0x0fcf('0x52'));if(_0x3a473c[_0x0fcf('0x53')]==='user'){var _0x30032e=_0x389d71['get']({'plain':!![]});var _0x469fa3=_0x0fcf('0x27');return db[_0x0fcf('0x54')][_0x0fcf('0x4e')]({'where':{'name':_0x469fa3,'userProfileId':_0x3a473c[_0x0fcf('0x55')]},'raw':!![]})['then'](function(_0x12b8d2){if(_0x12b8d2&&_0x12b8d2['autoAssociation']===0x0){return db[_0x0fcf('0x28')][_0x0fcf('0x4f')]({'name':_0x30032e['name'],'resourceId':_0x30032e['id'],'type':_0x12b8d2[_0x0fcf('0x2c')],'sectionId':_0x12b8d2['id']},{})[_0x0fcf('0x24')](function(){return _0x389d71;});}else{return _0x389d71;}})['catch'](function(_0x41288d){logger[_0x0fcf('0x2a')](_0x0fcf('0x56'),_0x41288d);throw _0x41288d;});}return _0x389d71;})[_0x0fcf('0x24')](respondWithResult(_0x1b5ae4,0xc9))[_0x0fcf('0x4c')](handleError(_0x1b5ae4,null));};exports['update']=function(_0x531d70,_0x5d3006){if(_0x531d70['body']['id']){delete _0x531d70[_0x0fcf('0x50')]['id'];}return db[_0x0fcf('0x2e')]['find']({'where':{'id':_0x531d70['params']['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0x5d3006,null))[_0x0fcf('0x24')](saveUpdates(_0x531d70[_0x0fcf('0x50')],null))['then'](respondWithResult(_0x5d3006,null))[_0x0fcf('0x4c')](handleError(_0x5d3006,null));};exports['destroy']=function(_0x2ed8d8,_0x386101){return db[_0x0fcf('0x2e')]['find']({'where':{'id':_0x2ed8d8[_0x0fcf('0x57')]['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0x386101,null))[_0x0fcf('0x24')](removeEntity(_0x386101,null))[_0x0fcf('0x4c')](handleError(_0x386101,null));};exports[_0x0fcf('0x58')]=function(_0x381884,_0x4a20a1){return db[_0x0fcf('0x2e')][_0x0fcf('0x58')]()[_0x0fcf('0x24')](respondWithResult(_0x4a20a1,null))[_0x0fcf('0x4c')](handleError(_0x4a20a1,null));};exports['getMembers']=function(_0x62d12e,_0x1dda2e,_0x6af0f5){var _0x13b5c5={'raw':!![],'where':{}},_0xa42e82={},_0x1b6028;return db[_0x0fcf('0x2e')]['findOne']({'where':{'id':_0x62d12e['params']['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0x1dda2e,null))[_0x0fcf('0x24')](function(_0x58607c){if(_0x58607c){_0x1b6028=_0x58607c[_0x0fcf('0x26')]({'plain':!![]});_0xa42e82[_0x0fcf('0x30')]=_[_0x0fcf('0x31')](db[_0x0fcf('0x59')]['rawAttributes']);_0xa42e82[_0x0fcf('0x32')]=_[_0x0fcf('0x31')](_0x62d12e[_0x0fcf('0x32')]);_0xa42e82[_0x0fcf('0x35')]=_[_0x0fcf('0x36')](_0xa42e82[_0x0fcf('0x30')],_0xa42e82['query']);_0x13b5c5[_0x0fcf('0x37')]=_[_0x0fcf('0x36')](_0xa42e82[_0x0fcf('0x30')],qs[_0x0fcf('0x38')](_0x62d12e[_0x0fcf('0x32')]['fields']));_0x13b5c5['attributes']=_0x13b5c5[_0x0fcf('0x37')][_0x0fcf('0x39')]?_0x13b5c5[_0x0fcf('0x37')]:_0xa42e82[_0x0fcf('0x30')];if(!_0x62d12e[_0x0fcf('0x32')][_0x0fcf('0x3a')](_0x0fcf('0x3b'))){_0x13b5c5[_0x0fcf('0x3c')]=qs[_0x0fcf('0x3c')](_0x62d12e[_0x0fcf('0x32')]['limit']);_0x13b5c5[_0x0fcf('0x1e')]=qs[_0x0fcf('0x1e')](_0x62d12e[_0x0fcf('0x32')][_0x0fcf('0x1e')]);}_0x13b5c5[_0x0fcf('0x3d')]=qs[_0x0fcf('0x5a')](_0x62d12e[_0x0fcf('0x32')][_0x0fcf('0x5a')]);_0x13b5c5[_0x0fcf('0x3e')]=qs['filters'](_['pick'](_0x62d12e['query'],_0xa42e82['filters']));_0x13b5c5[_0x0fcf('0x3e')]['MailQueueId']=_0x58607c['id'];if(_0x62d12e[_0x0fcf('0x32')][_0x0fcf('0x43')]){_0x13b5c5[_0x0fcf('0x3e')]=_['merge'](_0x13b5c5['where'],{'$or':_[_0x0fcf('0x44')](_0x13b5c5[_0x0fcf('0x37')],function(_0x590973){var _0x105c75={};_0x105c75[_0x590973]={'$like':'%'+_0x62d12e[_0x0fcf('0x32')]['filter']+'%'};return _0x105c75;})});}_0x13b5c5=_[_0x0fcf('0x42')]({},_0x13b5c5,_0x62d12e[_0x0fcf('0x4d')]);return db[_0x0fcf('0x59')][_0x0fcf('0x4a')](_0x13b5c5);}})[_0x0fcf('0x24')](function(_0x79e33f){if(_0x79e33f){return db[_0x0fcf('0x5b')]['findAndCountAll']({'where':{'id':_[_0x0fcf('0x44')](_0x79e33f,_0x0fcf('0x5c')),'role':_0x0fcf('0x5d')},'attributes':['id',_0x0fcf('0x2c'),_0x0fcf('0x5e'),_0x0fcf('0x5f'),'createdAt']});}})['then'](function(_0x39b8da){if(_0x39b8da){return{'count':_0x39b8da[_0x0fcf('0x60')],'rows':_[_0x0fcf('0x44')](_0x39b8da[_0x0fcf('0x4b')],function(_0x4e2c00){return{'membername':_0x4e2c00[_0x0fcf('0x2c')],'UserId':_0x4e2c00['id'],'queue_name':_0x1b6028[_0x0fcf('0x2c')],'MailQueueId':_0x1b6028['id'],'interface':util[_0x0fcf('0x61')](_0x0fcf('0x62'),_0x0fcf('0x63'),_0x4e2c00['name']),'penalty':0x0,'paused':_0x4e2c00['mailPause'],'createdAt':_0x4e2c00[_0x0fcf('0x64')],'updatedAt':_0x4e2c00['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x0fcf('0x24')](respondWithFilteredResult(_0x1dda2e,_0x13b5c5))['catch'](handleError(_0x1dda2e,null));};exports[_0x0fcf('0x65')]=function(_0x21abc5,_0x3bd23e,_0x9ede45){var _0x2bde0e={};var _0x5c45b6={};var _0x34e0f3;var _0x209c52;return db[_0x0fcf('0x2e')][_0x0fcf('0x66')]({'where':{'id':_0x21abc5['params']['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0x3bd23e,null))['then'](function(_0x2a6084){if(_0x2a6084){_0x34e0f3=_0x2a6084;_0x5c45b6['model']=_[_0x0fcf('0x31')](db[_0x0fcf('0x67')]['rawAttributes']);_0x5c45b6[_0x0fcf('0x32')]=_[_0x0fcf('0x31')](_0x21abc5[_0x0fcf('0x32')]);_0x5c45b6['filters']=_['intersection'](_0x5c45b6['model'],_0x5c45b6[_0x0fcf('0x32')]);_0x2bde0e['attributes']=_[_0x0fcf('0x36')](_0x5c45b6[_0x0fcf('0x30')],qs[_0x0fcf('0x38')](_0x21abc5[_0x0fcf('0x32')][_0x0fcf('0x38')]));_0x2bde0e[_0x0fcf('0x37')]=_0x2bde0e[_0x0fcf('0x37')][_0x0fcf('0x39')]?_0x2bde0e[_0x0fcf('0x37')]:_0x5c45b6['model'];_0x2bde0e[_0x0fcf('0x3d')]=qs[_0x0fcf('0x5a')](_0x21abc5[_0x0fcf('0x32')][_0x0fcf('0x5a')]);_0x2bde0e[_0x0fcf('0x3e')]=qs[_0x0fcf('0x35')](_[_0x0fcf('0x3f')](_0x21abc5[_0x0fcf('0x32')],_0x5c45b6['filters']));if(_0x21abc5[_0x0fcf('0x32')][_0x0fcf('0x43')]){_0x2bde0e[_0x0fcf('0x3e')]=_[_0x0fcf('0x42')](_0x2bde0e[_0x0fcf('0x3e')],{'$or':_[_0x0fcf('0x44')](_0x2bde0e[_0x0fcf('0x37')],function(_0x5d63f5){var _0x2d9214={};_0x2d9214[_0x5d63f5]={'$like':'%'+_0x21abc5['query'][_0x0fcf('0x43')]+'%'};return _0x2d9214;})});}_0x2bde0e=_[_0x0fcf('0x42')]({},_0x2bde0e,_0x21abc5[_0x0fcf('0x4d')]);return _0x34e0f3['getTeams'](_0x2bde0e);}})['then'](function(_0x5547bd){if(_0x5547bd){_0x209c52=_0x5547bd['length'];if(!_0x21abc5[_0x0fcf('0x32')][_0x0fcf('0x3a')](_0x0fcf('0x3b'))){_0x2bde0e[_0x0fcf('0x3c')]=qs[_0x0fcf('0x3c')](_0x21abc5[_0x0fcf('0x32')][_0x0fcf('0x3c')]);_0x2bde0e[_0x0fcf('0x1e')]=qs[_0x0fcf('0x1e')](_0x21abc5[_0x0fcf('0x32')][_0x0fcf('0x1e')]);}return _0x34e0f3['getTeams'](_0x2bde0e);}})[_0x0fcf('0x24')](function(_0xdfdf98){if(_0xdfdf98){return _0xdfdf98?{'count':_0x209c52,'rows':_0xdfdf98}:null;}})['then'](respondWithResult(_0x3bd23e,null))[_0x0fcf('0x4c')](handleError(_0x3bd23e,null));};exports['addTeams']=function(_0x33d024,_0x2e0a03,_0x5f1927){var _0x57a045=[];var _0x36d4e5;return db[_0x0fcf('0x67')]['findAll']({'where':{'id':_0x33d024[_0x0fcf('0x50')][_0x0fcf('0x68')]},'attributes':['id'],'include':[{'model':db[_0x0fcf('0x5b')],'as':_0x0fcf('0x69'),'attributes':['id'],'raw':!![]}]})[_0x0fcf('0x24')](function(_0xbe94a7){if(_0xbe94a7){for(var _0x332407=0x0;_0x332407<_0xbe94a7[_0x0fcf('0x39')];_0x332407+=0x1){for(var _0x52c0cf=0x0;_0x52c0cf<_0xbe94a7[_0x332407][_0x0fcf('0x69')][_0x0fcf('0x39')];_0x52c0cf+=0x1){_0x57a045=_[_0x0fcf('0x6a')](_0x57a045,[_0xbe94a7[_0x332407][_0x0fcf('0x69')][_0x52c0cf]['id']]);}}return _0x57a045;}})['then'](function(_0x488cee){if(_0x488cee){return db['MailQueue']['find']({'where':{'id':_0x33d024['params']['id']}});}})[_0x0fcf('0x24')](function(_0x27bc63){if(_0x27bc63){_0x36d4e5=_0x27bc63;return _0x36d4e5[_0x0fcf('0x6b')](_0x57a045,{'penalty':_0x33d024[_0x0fcf('0x50')][_0x0fcf('0x6c')]});}})[_0x0fcf('0x24')](function(_0x1bfd4b){if(_0x1bfd4b){return _0x36d4e5[_0x0fcf('0x6d')](_0x33d024[_0x0fcf('0x50')]['ids']);}})[_0x0fcf('0x24')](handleEntityNotFound(_0x2e0a03,null))[_0x0fcf('0x24')](respondWithStatusCode(_0x2e0a03,null))[_0x0fcf('0x4c')](handleError(_0x2e0a03,null));};exports[_0x0fcf('0x6e')]=function(_0x1d83bb,_0x414e43,_0x194e2b){var _0x18c269=[];var _0x13b26f;return db['Team']['findAll']({'where':{'id':_0x1d83bb['query'][_0x0fcf('0x68')]},'attributes':['id'],'include':[{'model':db[_0x0fcf('0x5b')],'as':_0x0fcf('0x69'),'attributes':['id'],'raw':!![]}]})[_0x0fcf('0x24')](function(_0x52e2e6){if(_0x52e2e6){for(var _0x5a37a4=0x0;_0x5a37a4<_0x52e2e6['length'];_0x5a37a4+=0x1){for(var _0x9f5010=0x0;_0x9f5010<_0x52e2e6[_0x5a37a4]['Agents'][_0x0fcf('0x39')];_0x9f5010+=0x1){_0x18c269=_['union'](_0x18c269,[_0x52e2e6[_0x5a37a4][_0x0fcf('0x69')][_0x9f5010]['id']]);}}return _0x18c269;}})['then'](function(_0x30edd0){if(_0x30edd0){return db['MailQueue']['find']({'where':{'id':_0x1d83bb[_0x0fcf('0x57')]['id']}});}})['then'](function(_0x2905fa){if(_0x2905fa){_0x13b26f=_0x2905fa;return _0x13b26f[_0x0fcf('0x6f')](_0x18c269);}})[_0x0fcf('0x24')](function(_0x1d75d3){if(_0x13b26f){return _0x13b26f[_0x0fcf('0x6e')](_0x1d83bb[_0x0fcf('0x32')][_0x0fcf('0x68')]);}})[_0x0fcf('0x24')](handleEntityNotFound(_0x414e43,null))[_0x0fcf('0x24')](respondWithStatusCode(_0x414e43,null))[_0x0fcf('0x4c')](handleError(_0x414e43,null));};exports[_0x0fcf('0x6b')]=function(_0x274aa9,_0x180702,_0x57a1c0){return db[_0x0fcf('0x2e')][_0x0fcf('0x4e')]({'where':{'id':_0x274aa9[_0x0fcf('0x57')]['id']}})[_0x0fcf('0x24')](handleEntityNotFound(_0x180702,null))[_0x0fcf('0x24')](function(_0x318dbd){if(_0x318dbd){return _0x318dbd[_0x0fcf('0x6b')](_0x274aa9[_0x0fcf('0x50')][_0x0fcf('0x68')],_['omit'](_0x274aa9[_0x0fcf('0x50')],[_0x0fcf('0x68'),'id'])||{})[_0x0fcf('0x70')](function(_0x319770){for(var _0x235e57=0x0;_0x235e57<_0x274aa9[_0x0fcf('0x50')][_0x0fcf('0x68')][_0x0fcf('0x39')];_0x235e57+=0x1){socket[_0x0fcf('0x71')](_0x0fcf('0x72'),{'UserId':_0x274aa9[_0x0fcf('0x50')][_0x0fcf('0x68')][_0x235e57],'MailQueueId':_0x274aa9[_0x0fcf('0x57')]['id']});}return _0x319770;});}})['then'](respondWithResult(_0x180702,null))[_0x0fcf('0x4c')](handleError(_0x180702,null));};exports[_0x0fcf('0x6f')]=function(_0x521bdf,_0x15aa4e,_0x39b86f){var _0x2b087b;return db[_0x0fcf('0x2e')][_0x0fcf('0x4e')]({'where':{'id':_0x521bdf['params']['id']}})['then'](handleEntityNotFound(_0x15aa4e,null))['then'](function(_0x2e60de){if(_0x2e60de){return _0x2e60de['removeAgents'](_0x521bdf[_0x0fcf('0x32')][_0x0fcf('0x68')])['then'](function(_0x53295b){if(_[_0x0fcf('0x73')](_0x521bdf[_0x0fcf('0x32')][_0x0fcf('0x68')])){for(var _0x173f04=0x0;_0x173f04<_0x521bdf[_0x0fcf('0x32')][_0x0fcf('0x68')][_0x0fcf('0x39')];_0x173f04+=0x1){socket[_0x0fcf('0x71')]('userMailQueue:remove',{'UserId':_0x521bdf[_0x0fcf('0x32')][_0x0fcf('0x68')][_0x173f04],'MailQueueId':_0x521bdf[_0x0fcf('0x57')]['id']});}}else{socket['emit'](_0x0fcf('0x74'),{'UserId':_0x521bdf[_0x0fcf('0x32')][_0x0fcf('0x68')],'MailQueueId':_0x521bdf[_0x0fcf('0x57')]['id']});}});}})[_0x0fcf('0x24')](respondWithStatusCode(_0x15aa4e,null))[_0x0fcf('0x4c')](handleError(_0x15aa4e,null));};exports[_0x0fcf('0x75')]=function(_0x52262e,_0x1afa1c,_0xeb06c6){var _0x2a72c0={};var _0x2f2e24={};var _0x57d614;var _0x42a9e8;return db['MailQueue'][_0x0fcf('0x66')]({'where':{'id':_0x52262e[_0x0fcf('0x57')]['id']}})['then'](handleEntityNotFound(_0x1afa1c,null))['then'](function(_0x10d4d0){if(_0x10d4d0){_0x57d614=_0x10d4d0;_0x2f2e24[_0x0fcf('0x30')]=_[_0x0fcf('0x31')](db[_0x0fcf('0x5b')][_0x0fcf('0x2f')]);_0x2f2e24[_0x0fcf('0x32')]=_[_0x0fcf('0x31')](_0x52262e[_0x0fcf('0x32')]);_0x2f2e24[_0x0fcf('0x35')]=_[_0x0fcf('0x36')](_0x2f2e24['model'],_0x2f2e24[_0x0fcf('0x32')]);_0x2a72c0['attributes']=_['intersection'](_0x2f2e24[_0x0fcf('0x30')],qs['fields'](_0x52262e['query']['fields']));_0x2a72c0[_0x0fcf('0x37')]=_0x2a72c0[_0x0fcf('0x37')][_0x0fcf('0x39')]?_0x2a72c0[_0x0fcf('0x37')]:_0x2f2e24[_0x0fcf('0x30')];_0x2a72c0[_0x0fcf('0x3d')]=qs[_0x0fcf('0x5a')](_0x52262e[_0x0fcf('0x32')][_0x0fcf('0x5a')]);_0x2a72c0['where']=qs[_0x0fcf('0x35')](_[_0x0fcf('0x3f')](_0x52262e[_0x0fcf('0x32')],_0x2f2e24[_0x0fcf('0x35')]));if(_0x52262e[_0x0fcf('0x32')][_0x0fcf('0x43')]){_0x2a72c0['where']=_[_0x0fcf('0x42')](_0x2a72c0[_0x0fcf('0x3e')],{'$or':_[_0x0fcf('0x44')](_0x2a72c0[_0x0fcf('0x37')],function(_0x2c7a69){var _0x4c7549={};_0x4c7549[_0x2c7a69]={'$like':'%'+_0x52262e[_0x0fcf('0x32')][_0x0fcf('0x43')]+'%'};return _0x4c7549;})});}_0x2a72c0=_[_0x0fcf('0x42')]({},_0x2a72c0,_0x52262e[_0x0fcf('0x4d')]);return _0x57d614[_0x0fcf('0x75')](_0x2a72c0);}})['then'](function(_0x333da9){if(_0x333da9){_0x42a9e8=_0x333da9[_0x0fcf('0x39')];if(!_0x52262e[_0x0fcf('0x32')][_0x0fcf('0x3a')]('nolimit')){_0x2a72c0[_0x0fcf('0x3c')]=qs[_0x0fcf('0x3c')](_0x52262e[_0x0fcf('0x32')]['limit']);_0x2a72c0['offset']=qs[_0x0fcf('0x1e')](_0x52262e[_0x0fcf('0x32')][_0x0fcf('0x1e')]);}return _0x57d614[_0x0fcf('0x75')](_0x2a72c0);}})[_0x0fcf('0x24')](function(_0x492a49){if(_0x492a49){return _0x492a49?{'count':_0x42a9e8,'rows':_0x492a49}:null;}})[_0x0fcf('0x24')](respondWithResult(_0x1afa1c,null))[_0x0fcf('0x4c')](handleError(_0x1afa1c,null));};
\ No newline at end of file
+var _0x4fb4=['include','params','options','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserMailQueue','hasOwnProperty','MailQueueId','findAll','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','addAgents','removeTeams','union','removeAgents','omit','spread','userMailQueue:remove','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./mailQueue.socket','sendStatus','status','json','count','offset','limit','set','apply','save','then','destroy','MailQueues','UserProfileResource','error','stack','name','index','MailQueue','rawAttributes','model','query','dateEnd','dateStart','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','add','day','merge','map','type','VIRTUAL','field','filter','includeAll'];(function(_0x579f8,_0x4c0de5){var _0x2d2d64=function(_0x4cd9bb){while(--_0x4cd9bb){_0x579f8['push'](_0x579f8['shift']());}};_0x2d2d64(++_0x4c0de5);}(_0x4fb4,0x190));var _0x44fb=function(_0x14d6eb,_0x11359b){_0x14d6eb=_0x14d6eb-0x0;var _0x4f8df1=_0x4fb4[_0x14d6eb];return _0x4f8df1;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x44fb('0x0'));var rimraf=require(_0x44fb('0x1'));var zipdir=require(_0x44fb('0x2'));var jsonpatch=require(_0x44fb('0x3'));var rp=require(_0x44fb('0x4'));var moment=require(_0x44fb('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x44fb('0x6'));var util=require(_0x44fb('0x7'));var path=require(_0x44fb('0x8'));var sox=require(_0x44fb('0x9'));var csv=require(_0x44fb('0xa'));var ejs=require(_0x44fb('0xb'));var fs=require('fs');var _=require(_0x44fb('0xc'));var squel=require(_0x44fb('0xd'));var crypto=require('crypto');var jsforce=require(_0x44fb('0xe'));var deskjs=require(_0x44fb('0xf'));var toCsv=require('to-csv');var querystring=require(_0x44fb('0x10'));var Papa=require(_0x44fb('0x11'));var Redis=require(_0x44fb('0x12'));var qs=require(_0x44fb('0x13'));var logger=require(_0x44fb('0x14'))(_0x44fb('0x15'));var utils=require(_0x44fb('0x16'));var config=require(_0x44fb('0x17'));var db=require(_0x44fb('0x18'))['db'];config[_0x44fb('0x19')]=_['defaults'](config[_0x44fb('0x19')],{'host':_0x44fb('0x1a'),'port':0x18eb});var socket=require(_0x44fb('0x1b'))(new Redis(config[_0x44fb('0x19')]));require(_0x44fb('0x1c'))['register'](socket);function respondWithStatusCode(_0x1fc8fa,_0xaedd7f){_0xaedd7f=_0xaedd7f||0xcc;return function(_0x39fb83){if(_0x39fb83){return _0x1fc8fa[_0x44fb('0x1d')](_0xaedd7f);}return _0x1fc8fa[_0x44fb('0x1e')](_0xaedd7f)['end']();};}function respondWithResult(_0xbc84db,_0x18268c){_0x18268c=_0x18268c||0xc8;return function(_0x472658){if(_0x472658){return _0xbc84db[_0x44fb('0x1e')](_0x18268c)[_0x44fb('0x1f')](_0x472658);}};}function respondWithFilteredResult(_0x43ce3,_0x19b828){return function(_0x585559){if(_0x585559){var _0x2c622f=_0x585559[_0x44fb('0x20')],_0x21886d=_0x19b828[_0x44fb('0x21')],_0x2e0efd=_0x19b828[_0x44fb('0x21')]+_0x19b828[_0x44fb('0x22')],_0x13cf75;if(_0x2e0efd>=_0x2c622f){_0x2e0efd=_0x2c622f;_0x13cf75=0xc8;}else{_0x13cf75=0xce;}_0x43ce3[_0x44fb('0x1e')](_0x13cf75);return _0x43ce3[_0x44fb('0x23')]('Content-Range',_0x21886d+'-'+_0x2e0efd+'/'+_0x2c622f)['json'](_0x585559);}return null;};}function patchUpdates(_0x4b50f5){return function(_0x4188f9){try{jsonpatch[_0x44fb('0x24')](_0x4188f9,_0x4b50f5,!![]);}catch(_0x2dd412){return BPromise['reject'](_0x2dd412);}return _0x4188f9[_0x44fb('0x25')]();};}function saveUpdates(_0x11449d,_0x3394e2){return function(_0x5adc98){if(_0x5adc98){return _0x5adc98['update'](_0x11449d)[_0x44fb('0x26')](function(_0x5cf7ec){return _0x5cf7ec;});}return null;};}function removeEntity(_0x441d79,_0x4fc66d){return function(_0x954b1d){if(_0x954b1d){return _0x954b1d[_0x44fb('0x27')]()[_0x44fb('0x26')](function(){var _0x4a27b6=_0x954b1d['get']({'plain':!![]});var _0x105b88=_0x44fb('0x28');return db[_0x44fb('0x29')][_0x44fb('0x27')]({'where':{'type':_0x105b88,'resourceId':_0x4a27b6['id']}})['then'](function(){return _0x954b1d;});})[_0x44fb('0x26')](function(){_0x441d79[_0x44fb('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b6ce5,_0x4aaab6){return function(_0x2611d6){if(!_0x2611d6){_0x5b6ce5[_0x44fb('0x1d')](0x194);}return _0x2611d6;};}function handleError(_0x1f5d4c,_0xb7e5e8){_0xb7e5e8=_0xb7e5e8||0x1f4;return function(_0x15e748){logger[_0x44fb('0x2a')](_0x15e748[_0x44fb('0x2b')]);if(_0x15e748[_0x44fb('0x2c')]){delete _0x15e748['name'];}_0x1f5d4c['status'](_0xb7e5e8)['send'](_0x15e748);};}exports[_0x44fb('0x2d')]=function(_0x4a957f,_0x14099b){var _0x253e16={},_0x5e3639={},_0x212b10={'count':0x0,'rows':[]};var _0x262aa1=db[_0x44fb('0x2e')][_0x44fb('0x2f')];_0x5e3639[_0x44fb('0x30')]=_['keys'](_0x262aa1);var _0x50ce63={'dateStart':_0x4a957f[_0x44fb('0x31')]['dateStart'],'dateEnd':_0x4a957f[_0x44fb('0x31')][_0x44fb('0x32')]};delete _0x4a957f[_0x44fb('0x31')][_0x44fb('0x33')];delete _0x4a957f[_0x44fb('0x31')][_0x44fb('0x32')];_0x5e3639[_0x44fb('0x31')]=_[_0x44fb('0x34')](_0x4a957f[_0x44fb('0x31')]);_0x5e3639[_0x44fb('0x35')]=_[_0x44fb('0x36')](_0x5e3639[_0x44fb('0x30')],_0x5e3639[_0x44fb('0x31')]);_0x253e16[_0x44fb('0x37')]=_[_0x44fb('0x36')](_0x5e3639['model'],qs['fields'](_0x4a957f['query'][_0x44fb('0x38')]));_0x253e16[_0x44fb('0x37')]=_0x253e16[_0x44fb('0x37')][_0x44fb('0x39')]?_0x253e16['attributes']:_0x5e3639[_0x44fb('0x30')];if(!_0x4a957f[_0x44fb('0x31')]['hasOwnProperty'](_0x44fb('0x3a'))){_0x253e16['limit']=qs[_0x44fb('0x22')](_0x4a957f['query'][_0x44fb('0x22')]);_0x253e16['offset']=qs[_0x44fb('0x21')](_0x4a957f['query']['offset']);}_0x253e16[_0x44fb('0x3b')]=qs[_0x44fb('0x3c')](_0x4a957f[_0x44fb('0x31')][_0x44fb('0x3c')]);_0x253e16[_0x44fb('0x3d')]=qs[_0x44fb('0x35')](_[_0x44fb('0x3e')](_0x4a957f[_0x44fb('0x31')],_0x5e3639[_0x44fb('0x35')]));if(_0x50ce63[_0x44fb('0x33')]){if(_0x50ce63['dateEnd']){_0x50ce63[_0x44fb('0x32')]=moment(_0x50ce63[_0x44fb('0x32')])[_0x44fb('0x3f')](0x1,_0x44fb('0x40'));}else{_0x50ce63[_0x44fb('0x32')]=moment(_0x50ce63['dateStart'])[_0x44fb('0x3f')](0x1,_0x44fb('0x40'));}_['merge'](_0x253e16['where'],{'createdAt':{'$gte':_0x50ce63[_0x44fb('0x33')],'$lte':_0x50ce63[_0x44fb('0x32')]}});}if(_0x4a957f[_0x44fb('0x31')]['filter']){_0x253e16[_0x44fb('0x3d')]=_[_0x44fb('0x41')](_0x253e16[_0x44fb('0x3d')],{'$or':_[_0x44fb('0x42')](_0x262aa1,function(_0x8f8aae){if(_0x8f8aae[_0x44fb('0x43')]['key']!==_0x44fb('0x44')){var _0x537535={};_0x537535[_0x8f8aae[_0x44fb('0x45')]]={'$like':'%'+_0x4a957f[_0x44fb('0x31')][_0x44fb('0x46')]+'%'};return _0x537535;}})});}_0x253e16=_[_0x44fb('0x41')]({},_0x253e16,_0x4a957f['options']);var _0x322269={'where':_0x253e16[_0x44fb('0x3d')]};return db[_0x44fb('0x2e')][_0x44fb('0x20')](_0x322269)[_0x44fb('0x26')](function(_0x5b38e0){_0x212b10[_0x44fb('0x20')]=_0x5b38e0;if(_0x4a957f[_0x44fb('0x31')][_0x44fb('0x47')]){_0x253e16[_0x44fb('0x48')]=[{'all':!![]}];}return db['MailQueue']['findAll'](_0x253e16);})[_0x44fb('0x26')](function(_0x439725){_0x212b10['rows']=_0x439725;return _0x212b10;})[_0x44fb('0x26')](respondWithFilteredResult(_0x14099b,_0x253e16))['catch'](handleError(_0x14099b,null));};exports['show']=function(_0x5519d9,_0x5d5317){var _0x396bdc={'raw':!![],'where':{'id':_0x5519d9[_0x44fb('0x49')]['id']}},_0x1a7acd={};_0x1a7acd[_0x44fb('0x30')]=_['keys'](db[_0x44fb('0x2e')][_0x44fb('0x2f')]);_0x1a7acd[_0x44fb('0x31')]=_[_0x44fb('0x34')](_0x5519d9[_0x44fb('0x31')]);_0x1a7acd[_0x44fb('0x35')]=_[_0x44fb('0x36')](_0x1a7acd[_0x44fb('0x30')],_0x1a7acd['query']);_0x396bdc[_0x44fb('0x37')]=_['intersection'](_0x1a7acd['model'],qs[_0x44fb('0x38')](_0x5519d9[_0x44fb('0x31')][_0x44fb('0x38')]));_0x396bdc['attributes']=_0x396bdc[_0x44fb('0x37')][_0x44fb('0x39')]?_0x396bdc[_0x44fb('0x37')]:_0x1a7acd[_0x44fb('0x30')];if(_0x5519d9[_0x44fb('0x31')][_0x44fb('0x47')]){_0x396bdc[_0x44fb('0x48')]=[{'all':!![]}];}_0x396bdc=_['merge']({},_0x396bdc,_0x5519d9[_0x44fb('0x4a')]);return db['MailQueue'][_0x44fb('0x4b')](_0x396bdc)['then'](handleEntityNotFound(_0x5d5317,null))[_0x44fb('0x26')](respondWithResult(_0x5d5317,null))[_0x44fb('0x4c')](handleError(_0x5d5317,null));};exports[_0x44fb('0x4d')]=function(_0x82975,_0x5847e8){return db[_0x44fb('0x2e')][_0x44fb('0x4d')](_0x82975[_0x44fb('0x4e')],{})[_0x44fb('0x26')](function(_0x20094d){var _0x32b166=_0x82975[_0x44fb('0x4f')][_0x44fb('0x50')]({'plain':!![]});if(!_0x32b166)throw new Error(_0x44fb('0x51'));if(_0x32b166[_0x44fb('0x52')]===_0x44fb('0x4f')){var _0x2ebfc7=_0x20094d['get']({'plain':!![]});var _0x2dcdf6='MailQueues';return db[_0x44fb('0x53')][_0x44fb('0x4b')]({'where':{'name':_0x2dcdf6,'userProfileId':_0x32b166['userProfileId']},'raw':!![]})['then'](function(_0x4ff11b){if(_0x4ff11b&&_0x4ff11b[_0x44fb('0x54')]===0x0){return db[_0x44fb('0x29')][_0x44fb('0x4d')]({'name':_0x2ebfc7[_0x44fb('0x2c')],'resourceId':_0x2ebfc7['id'],'type':_0x4ff11b[_0x44fb('0x2c')],'sectionId':_0x4ff11b['id']},{})[_0x44fb('0x26')](function(){return _0x20094d;});}else{return _0x20094d;}})[_0x44fb('0x4c')](function(_0x3c0c8c){logger[_0x44fb('0x2a')](_0x44fb('0x55'),_0x3c0c8c);throw _0x3c0c8c;});}return _0x20094d;})[_0x44fb('0x26')](respondWithResult(_0x5847e8,0xc9))[_0x44fb('0x4c')](handleError(_0x5847e8,null));};exports[_0x44fb('0x56')]=function(_0x3e1ca3,_0x709b9b){if(_0x3e1ca3[_0x44fb('0x4e')]['id']){delete _0x3e1ca3[_0x44fb('0x4e')]['id'];}return db[_0x44fb('0x2e')][_0x44fb('0x4b')]({'where':{'id':_0x3e1ca3['params']['id']}})['then'](handleEntityNotFound(_0x709b9b,null))[_0x44fb('0x26')](saveUpdates(_0x3e1ca3['body'],null))['then'](respondWithResult(_0x709b9b,null))['catch'](handleError(_0x709b9b,null));};exports[_0x44fb('0x27')]=function(_0x399586,_0x174fcf){return db['MailQueue'][_0x44fb('0x4b')]({'where':{'id':_0x399586['params']['id']}})[_0x44fb('0x26')](handleEntityNotFound(_0x174fcf,null))['then'](removeEntity(_0x174fcf,null))[_0x44fb('0x4c')](handleError(_0x174fcf,null));};exports[_0x44fb('0x57')]=function(_0xdbfdab,_0x4ff7ac){return db[_0x44fb('0x2e')][_0x44fb('0x57')]()[_0x44fb('0x26')](respondWithResult(_0x4ff7ac,null))['catch'](handleError(_0x4ff7ac,null));};exports[_0x44fb('0x58')]=function(_0x2e633c,_0x293849,_0x4b7445){var _0x54b1fb={'raw':!![],'where':{}},_0x1ed4a0={},_0x35a96b;return db[_0x44fb('0x2e')][_0x44fb('0x59')]({'where':{'id':_0x2e633c['params']['id']}})['then'](handleEntityNotFound(_0x293849,null))[_0x44fb('0x26')](function(_0xc81529){if(_0xc81529){_0x35a96b=_0xc81529[_0x44fb('0x50')]({'plain':!![]});_0x1ed4a0[_0x44fb('0x30')]=_[_0x44fb('0x34')](db[_0x44fb('0x5a')]['rawAttributes']);_0x1ed4a0[_0x44fb('0x31')]=_[_0x44fb('0x34')](_0x2e633c[_0x44fb('0x31')]);_0x1ed4a0[_0x44fb('0x35')]=_['intersection'](_0x1ed4a0['model'],_0x1ed4a0[_0x44fb('0x31')]);_0x54b1fb[_0x44fb('0x37')]=_[_0x44fb('0x36')](_0x1ed4a0['model'],qs[_0x44fb('0x38')](_0x2e633c['query'][_0x44fb('0x38')]));_0x54b1fb[_0x44fb('0x37')]=_0x54b1fb[_0x44fb('0x37')][_0x44fb('0x39')]?_0x54b1fb[_0x44fb('0x37')]:_0x1ed4a0['model'];if(!_0x2e633c[_0x44fb('0x31')][_0x44fb('0x5b')](_0x44fb('0x3a'))){_0x54b1fb[_0x44fb('0x22')]=qs['limit'](_0x2e633c[_0x44fb('0x31')][_0x44fb('0x22')]);_0x54b1fb[_0x44fb('0x21')]=qs[_0x44fb('0x21')](_0x2e633c[_0x44fb('0x31')][_0x44fb('0x21')]);}_0x54b1fb[_0x44fb('0x3b')]=qs[_0x44fb('0x3c')](_0x2e633c[_0x44fb('0x31')][_0x44fb('0x3c')]);_0x54b1fb[_0x44fb('0x3d')]=qs[_0x44fb('0x35')](_[_0x44fb('0x3e')](_0x2e633c[_0x44fb('0x31')],_0x1ed4a0[_0x44fb('0x35')]));_0x54b1fb[_0x44fb('0x3d')][_0x44fb('0x5c')]=_0xc81529['id'];if(_0x2e633c[_0x44fb('0x31')][_0x44fb('0x46')]){_0x54b1fb['where']=_['merge'](_0x54b1fb[_0x44fb('0x3d')],{'$or':_[_0x44fb('0x42')](_0x54b1fb[_0x44fb('0x37')],function(_0x1feabd){var _0x7123bb={};_0x7123bb[_0x1feabd]={'$like':'%'+_0x2e633c[_0x44fb('0x31')]['filter']+'%'};return _0x7123bb;})});}_0x54b1fb=_['merge']({},_0x54b1fb,_0x2e633c[_0x44fb('0x4a')]);return db[_0x44fb('0x5a')][_0x44fb('0x5d')](_0x54b1fb);}})[_0x44fb('0x26')](function(_0x5db677){if(_0x5db677){return db[_0x44fb('0x5e')][_0x44fb('0x5f')]({'where':{'id':_[_0x44fb('0x42')](_0x5db677,_0x44fb('0x60')),'role':_0x44fb('0x61')},'attributes':['id',_0x44fb('0x2c'),_0x44fb('0x62'),_0x44fb('0x63'),_0x44fb('0x64')]});}})[_0x44fb('0x26')](function(_0x5231ac){if(_0x5231ac){return{'count':_0x5231ac[_0x44fb('0x20')],'rows':_[_0x44fb('0x42')](_0x5231ac['rows'],function(_0x4395ae){return{'membername':_0x4395ae[_0x44fb('0x2c')],'UserId':_0x4395ae['id'],'queue_name':_0x35a96b['name'],'MailQueueId':_0x35a96b['id'],'interface':util[_0x44fb('0x65')](_0x44fb('0x66'),_0x44fb('0x67'),_0x4395ae['name']),'penalty':0x0,'paused':_0x4395ae['mailPause'],'createdAt':_0x4395ae['createdAt'],'updatedAt':_0x4395ae[_0x44fb('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x44fb('0x26')](respondWithFilteredResult(_0x293849,_0x54b1fb))[_0x44fb('0x4c')](handleError(_0x293849,null));};exports[_0x44fb('0x68')]=function(_0x2a472f,_0x1f890e,_0x212b96){var _0x33c7a2={};var _0x55905f={};var _0x3781f8;var _0x100636;return db[_0x44fb('0x2e')][_0x44fb('0x59')]({'where':{'id':_0x2a472f[_0x44fb('0x49')]['id']}})['then'](handleEntityNotFound(_0x1f890e,null))[_0x44fb('0x26')](function(_0x21785b){if(_0x21785b){_0x3781f8=_0x21785b;_0x55905f[_0x44fb('0x30')]=_['keys'](db[_0x44fb('0x69')][_0x44fb('0x2f')]);_0x55905f[_0x44fb('0x31')]=_[_0x44fb('0x34')](_0x2a472f[_0x44fb('0x31')]);_0x55905f[_0x44fb('0x35')]=_[_0x44fb('0x36')](_0x55905f[_0x44fb('0x30')],_0x55905f[_0x44fb('0x31')]);_0x33c7a2[_0x44fb('0x37')]=_[_0x44fb('0x36')](_0x55905f[_0x44fb('0x30')],qs[_0x44fb('0x38')](_0x2a472f[_0x44fb('0x31')]['fields']));_0x33c7a2[_0x44fb('0x37')]=_0x33c7a2[_0x44fb('0x37')][_0x44fb('0x39')]?_0x33c7a2[_0x44fb('0x37')]:_0x55905f[_0x44fb('0x30')];_0x33c7a2[_0x44fb('0x3b')]=qs[_0x44fb('0x3c')](_0x2a472f[_0x44fb('0x31')][_0x44fb('0x3c')]);_0x33c7a2['where']=qs[_0x44fb('0x35')](_['pick'](_0x2a472f[_0x44fb('0x31')],_0x55905f[_0x44fb('0x35')]));if(_0x2a472f['query']['filter']){_0x33c7a2[_0x44fb('0x3d')]=_[_0x44fb('0x41')](_0x33c7a2['where'],{'$or':_[_0x44fb('0x42')](_0x33c7a2['attributes'],function(_0x4b46b4){var _0x246b60={};_0x246b60[_0x4b46b4]={'$like':'%'+_0x2a472f[_0x44fb('0x31')][_0x44fb('0x46')]+'%'};return _0x246b60;})});}_0x33c7a2=_[_0x44fb('0x41')]({},_0x33c7a2,_0x2a472f[_0x44fb('0x4a')]);return _0x3781f8['getTeams'](_0x33c7a2);}})['then'](function(_0x546aed){if(_0x546aed){_0x100636=_0x546aed[_0x44fb('0x39')];if(!_0x2a472f[_0x44fb('0x31')][_0x44fb('0x5b')](_0x44fb('0x3a'))){_0x33c7a2[_0x44fb('0x22')]=qs[_0x44fb('0x22')](_0x2a472f[_0x44fb('0x31')][_0x44fb('0x22')]);_0x33c7a2[_0x44fb('0x21')]=qs[_0x44fb('0x21')](_0x2a472f[_0x44fb('0x31')][_0x44fb('0x21')]);}return _0x3781f8[_0x44fb('0x68')](_0x33c7a2);}})[_0x44fb('0x26')](function(_0x55f5c8){if(_0x55f5c8){return _0x55f5c8?{'count':_0x100636,'rows':_0x55f5c8}:null;}})[_0x44fb('0x26')](respondWithResult(_0x1f890e,null))['catch'](handleError(_0x1f890e,null));};exports[_0x44fb('0x6a')]=function(_0x83e778,_0x5e1c14,_0x1792e7){var _0x152963=[];var _0x2b5583;return db[_0x44fb('0x69')]['findAll']({'where':{'id':_0x83e778['body'][_0x44fb('0x6b')]},'attributes':['id'],'include':[{'model':db[_0x44fb('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x44fb('0x26')](function(_0x162e4f){if(_0x162e4f){for(var _0xe94110=0x0;_0xe94110<_0x162e4f[_0x44fb('0x39')];_0xe94110+=0x1){for(var _0x3fac48=0x0;_0x3fac48<_0x162e4f[_0xe94110][_0x44fb('0x6c')][_0x44fb('0x39')];_0x3fac48+=0x1){_0x152963=_['union'](_0x152963,[_0x162e4f[_0xe94110]['Agents'][_0x3fac48]['id']]);}}return _0x152963;}})['then'](function(_0x3fed28){if(_0x3fed28){return db['MailQueue'][_0x44fb('0x4b')]({'where':{'id':_0x83e778[_0x44fb('0x49')]['id']}});}})[_0x44fb('0x26')](function(_0x15c6ee){if(_0x15c6ee){_0x2b5583=_0x15c6ee;return _0x2b5583[_0x44fb('0x6d')](_0x152963,{'penalty':_0x83e778['body']['penalty']});}})['then'](function(_0x129076){if(_0x129076){return _0x2b5583[_0x44fb('0x6a')](_0x83e778['body'][_0x44fb('0x6b')]);}})['then'](handleEntityNotFound(_0x5e1c14,null))['then'](respondWithStatusCode(_0x5e1c14,null))[_0x44fb('0x4c')](handleError(_0x5e1c14,null));};exports[_0x44fb('0x6e')]=function(_0x4c4843,_0xa4e785,_0x1b8ab7){var _0x214496=[];var _0xe3b820;return db['Team'][_0x44fb('0x5d')]({'where':{'id':_0x4c4843[_0x44fb('0x31')][_0x44fb('0x6b')]},'attributes':['id'],'include':[{'model':db[_0x44fb('0x5e')],'as':_0x44fb('0x6c'),'attributes':['id'],'raw':!![]}]})[_0x44fb('0x26')](function(_0x420365){if(_0x420365){for(var _0xb828e6=0x0;_0xb828e6<_0x420365[_0x44fb('0x39')];_0xb828e6+=0x1){for(var _0xef4cf0=0x0;_0xef4cf0<_0x420365[_0xb828e6][_0x44fb('0x6c')][_0x44fb('0x39')];_0xef4cf0+=0x1){_0x214496=_[_0x44fb('0x6f')](_0x214496,[_0x420365[_0xb828e6][_0x44fb('0x6c')][_0xef4cf0]['id']]);}}return _0x214496;}})[_0x44fb('0x26')](function(_0x2b3fef){if(_0x2b3fef){return db[_0x44fb('0x2e')]['find']({'where':{'id':_0x4c4843[_0x44fb('0x49')]['id']}});}})[_0x44fb('0x26')](function(_0x50f5bd){if(_0x50f5bd){_0xe3b820=_0x50f5bd;return _0xe3b820[_0x44fb('0x70')](_0x214496);}})[_0x44fb('0x26')](function(_0x95de68){if(_0xe3b820){return _0xe3b820['removeTeams'](_0x4c4843[_0x44fb('0x31')][_0x44fb('0x6b')]);}})[_0x44fb('0x26')](handleEntityNotFound(_0xa4e785,null))[_0x44fb('0x26')](respondWithStatusCode(_0xa4e785,null))[_0x44fb('0x4c')](handleError(_0xa4e785,null));};exports[_0x44fb('0x6d')]=function(_0x37aa8c,_0x45f8d3,_0x190e04){return db['MailQueue'][_0x44fb('0x4b')]({'where':{'id':_0x37aa8c[_0x44fb('0x49')]['id']}})['then'](handleEntityNotFound(_0x45f8d3,null))[_0x44fb('0x26')](function(_0x1a0c70){if(_0x1a0c70){return _0x1a0c70[_0x44fb('0x6d')](_0x37aa8c['body'][_0x44fb('0x6b')],_[_0x44fb('0x71')](_0x37aa8c[_0x44fb('0x4e')],[_0x44fb('0x6b'),'id'])||{})[_0x44fb('0x72')](function(_0x43db61){for(var _0x3b8b46=0x0;_0x3b8b46<_0x37aa8c[_0x44fb('0x4e')]['ids'][_0x44fb('0x39')];_0x3b8b46+=0x1){socket['emit']('userMailQueue:save',{'UserId':_0x37aa8c['body']['ids'][_0x3b8b46],'MailQueueId':_0x37aa8c['params']['id']});}return _0x43db61;});}})[_0x44fb('0x26')](respondWithResult(_0x45f8d3,null))[_0x44fb('0x4c')](handleError(_0x45f8d3,null));};exports[_0x44fb('0x70')]=function(_0x43e7e3,_0x2242b6,_0x42e94e){var _0x18176a;return db[_0x44fb('0x2e')][_0x44fb('0x4b')]({'where':{'id':_0x43e7e3[_0x44fb('0x49')]['id']}})[_0x44fb('0x26')](handleEntityNotFound(_0x2242b6,null))[_0x44fb('0x26')](function(_0x4e0583){if(_0x4e0583){return _0x4e0583[_0x44fb('0x70')](_0x43e7e3[_0x44fb('0x31')][_0x44fb('0x6b')])[_0x44fb('0x26')](function(_0x1bf195){if(_['isArray'](_0x43e7e3[_0x44fb('0x31')]['ids'])){for(var _0x15e4e1=0x0;_0x15e4e1<_0x43e7e3['query']['ids']['length'];_0x15e4e1+=0x1){socket['emit'](_0x44fb('0x73'),{'UserId':_0x43e7e3[_0x44fb('0x31')][_0x44fb('0x6b')][_0x15e4e1],'MailQueueId':_0x43e7e3[_0x44fb('0x49')]['id']});}}else{socket[_0x44fb('0x74')](_0x44fb('0x73'),{'UserId':_0x43e7e3[_0x44fb('0x31')]['ids'],'MailQueueId':_0x43e7e3[_0x44fb('0x49')]['id']});}});}})[_0x44fb('0x26')](respondWithStatusCode(_0x2242b6,null))['catch'](handleError(_0x2242b6,null));};exports['getAgents']=function(_0x23df45,_0x25c0e1,_0x4e5434){var _0x3f5c39={};var _0x56ead7={};var _0x2236e0;var _0x2b6d9c;return db[_0x44fb('0x2e')][_0x44fb('0x59')]({'where':{'id':_0x23df45[_0x44fb('0x49')]['id']}})['then'](handleEntityNotFound(_0x25c0e1,null))['then'](function(_0x2e77f7){if(_0x2e77f7){_0x2236e0=_0x2e77f7;_0x56ead7[_0x44fb('0x30')]=_[_0x44fb('0x34')](db[_0x44fb('0x5e')][_0x44fb('0x2f')]);_0x56ead7[_0x44fb('0x31')]=_['keys'](_0x23df45[_0x44fb('0x31')]);_0x56ead7[_0x44fb('0x35')]=_[_0x44fb('0x36')](_0x56ead7[_0x44fb('0x30')],_0x56ead7[_0x44fb('0x31')]);_0x3f5c39[_0x44fb('0x37')]=_[_0x44fb('0x36')](_0x56ead7[_0x44fb('0x30')],qs[_0x44fb('0x38')](_0x23df45[_0x44fb('0x31')][_0x44fb('0x38')]));_0x3f5c39['attributes']=_0x3f5c39['attributes']['length']?_0x3f5c39[_0x44fb('0x37')]:_0x56ead7[_0x44fb('0x30')];_0x3f5c39[_0x44fb('0x3b')]=qs[_0x44fb('0x3c')](_0x23df45[_0x44fb('0x31')][_0x44fb('0x3c')]);_0x3f5c39[_0x44fb('0x3d')]=qs[_0x44fb('0x35')](_[_0x44fb('0x3e')](_0x23df45[_0x44fb('0x31')],_0x56ead7['filters']));if(_0x23df45[_0x44fb('0x31')][_0x44fb('0x46')]){_0x3f5c39[_0x44fb('0x3d')]=_[_0x44fb('0x41')](_0x3f5c39[_0x44fb('0x3d')],{'$or':_[_0x44fb('0x42')](_0x3f5c39[_0x44fb('0x37')],function(_0x44c60c){var _0x1a35b5={};_0x1a35b5[_0x44c60c]={'$like':'%'+_0x23df45[_0x44fb('0x31')]['filter']+'%'};return _0x1a35b5;})});}_0x3f5c39=_[_0x44fb('0x41')]({},_0x3f5c39,_0x23df45[_0x44fb('0x4a')]);return _0x2236e0[_0x44fb('0x75')](_0x3f5c39);}})[_0x44fb('0x26')](function(_0x1aecad){if(_0x1aecad){_0x2b6d9c=_0x1aecad[_0x44fb('0x39')];if(!_0x23df45[_0x44fb('0x31')][_0x44fb('0x5b')](_0x44fb('0x3a'))){_0x3f5c39['limit']=qs['limit'](_0x23df45[_0x44fb('0x31')]['limit']);_0x3f5c39[_0x44fb('0x21')]=qs[_0x44fb('0x21')](_0x23df45[_0x44fb('0x31')][_0x44fb('0x21')]);}return _0x2236e0['getAgents'](_0x3f5c39);}})[_0x44fb('0x26')](function(_0x2fb148){if(_0x2fb148){return _0x2fb148?{'count':_0x2b6d9c,'rows':_0x2fb148}:null;}})[_0x44fb('0x26')](respondWithResult(_0x25c0e1,null))[_0x44fb('0x4c')](handleError(_0x25c0e1,null));};
\ No newline at end of file
index 6acd07a..eb33feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8793=['hasOwnProperty','hook','exports','events','../../mysqldb','MailQueue','save','update','emit'];(function(_0x46359f,_0x121565){var _0x8d250b=function(_0x18a693){while(--_0x18a693){_0x46359f['push'](_0x46359f['shift']());}};_0x8d250b(++_0x121565);}(_0x8793,0x147));var _0x3879=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x8793[_0x59ee6f];return _0x4c0979;};'use strict';var EventEmitter=require(_0x3879('0x0'));var MailQueue=require(_0x3879('0x1'))['db'][_0x3879('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3879('0x3'),'afterUpdate':_0x3879('0x4'),'afterDestroy':'remove'};function emitEvent(_0x17935a){return function(_0x15167a,_0x14e9e2,_0x463b86){MailQueueEvents[_0x3879('0x5')](_0x17935a+':'+_0x15167a['id'],_0x15167a);MailQueueEvents[_0x3879('0x5')](_0x17935a,_0x15167a);_0x463b86(null);};}for(var e in events){if(events[_0x3879('0x6')](e)){var event=events[e];MailQueue[_0x3879('0x7')](e,emitEvent(event));}}module[_0x3879('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0xbcad=['hook','exports','events','../../mysqldb','MailQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x279d05,_0xca64b9){var _0x115161=function(_0x4ee4d2){while(--_0x4ee4d2){_0x279d05['push'](_0x279d05['shift']());}};_0x115161(++_0xca64b9);}(_0xbcad,0xde));var _0xdbca=function(_0x1838dd,_0x4963f6){_0x1838dd=_0x1838dd-0x0;var _0x2aa3ab=_0xbcad[_0x1838dd];return _0x2aa3ab;};'use strict';var EventEmitter=require(_0xdbca('0x0'));var MailQueue=require(_0xdbca('0x1'))['db'][_0xdbca('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xdbca('0x3')](0x0);var events={'afterCreate':_0xdbca('0x4'),'afterUpdate':_0xdbca('0x5'),'afterDestroy':_0xdbca('0x6')};function emitEvent(_0x657d88){return function(_0x36496e,_0x5d12ab,_0x5ed436){MailQueueEvents['emit'](_0x657d88+':'+_0x36496e['id'],_0x36496e);MailQueueEvents[_0xdbca('0x7')](_0x657d88,_0x36496e);_0x5ed436(null);};}for(var e in events){if(events[_0xdbca('0x8')](e)){var event=events[e];MailQueue[_0xdbca('0x9')](e,emitEvent(event));}}module[_0xdbca('0xa')]=MailQueueEvents;
\ No newline at end of file
index 2cfe6fc..24f8911 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79c7=['lodash','util','../../config/logger','api','moment','bluebird','./mailQueue.attributes','exports','define','MailQueue','mail_queues'];(function(_0x14477e,_0x44d4da){var _0x5d4a05=function(_0x5e0fa3){while(--_0x5e0fa3){_0x14477e['push'](_0x14477e['shift']());}};_0x5d4a05(++_0x44d4da);}(_0x79c7,0xb0));var _0x779c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x79c7[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x779c('0x0'));var util=require(_0x779c('0x1'));var logger=require(_0x779c('0x2'))(_0x779c('0x3'));var moment=require(_0x779c('0x4'));var BPromise=require(_0x779c('0x5'));var rp=require('request-promise');var attributes=require(_0x779c('0x6'));module[_0x779c('0x7')]=function(_0x3464b5,_0x581ecb){return _0x3464b5[_0x779c('0x8')](_0x779c('0x9'),attributes,{'tableName':_0x779c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f9a=['moment','bluebird','exports','define','MailQueue','lodash','api'];(function(_0x284506,_0x191316){var _0x1e9ee5=function(_0xe7eaa){while(--_0xe7eaa){_0x284506['push'](_0x284506['shift']());}};_0x1e9ee5(++_0x191316);}(_0x8f9a,0xad));var _0xa8f9=function(_0x1d9ba7,_0x3709a2){_0x1d9ba7=_0x1d9ba7-0x0;var _0xfbb9c9=_0x8f9a[_0x1d9ba7];return _0xfbb9c9;};'use strict';var _=require(_0xa8f9('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa8f9('0x1'));var moment=require(_0xa8f9('0x2'));var BPromise=require(_0xa8f9('0x3'));var rp=require('request-promise');var attributes=require('./mailQueue.attributes');module[_0xa8f9('0x4')]=function(_0x23f488,_0xc08958){return _0x23f488[_0xa8f9('0x5')](_0xa8f9('0x6'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4682d95..1c794bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70b9=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailQueue','MailQueue','options','where','attributes','limit','include','model','map','ShowMailQueue','find','lodash','util','bluebird'];(function(_0x22f635,_0x4a0def){var _0x41b2b3=function(_0x3ad6cf){while(--_0x3ad6cf){_0x22f635['push'](_0x22f635['shift']());}};_0x41b2b3(++_0x4a0def);}(_0x70b9,0x165));var _0x970b=function(_0x2f14da,_0x11c49d){_0x2f14da=_0x2f14da-0x0;var _0x15993e=_0x70b9[_0x2f14da];return _0x15993e;};'use strict';var _=require(_0x970b('0x0'));var util=require(_0x970b('0x1'));var moment=require('moment');var BPromise=require(_0x970b('0x2'));var rs=require(_0x970b('0x3'));var fs=require('fs');var Redis=require(_0x970b('0x4'));var db=require(_0x970b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x970b('0x6'))(_0x970b('0x7'));var config=require(_0x970b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x970b('0x9')]['http']({'port':0x232a});config[_0x970b('0xa')]=_[_0x970b('0xb')](config[_0x970b('0xa')],{'host':_0x970b('0xc'),'port':0x18eb});var socket=require(_0x970b('0xd'))(new Redis(config[_0x970b('0xa')]));require(_0x970b('0xe'))[_0x970b('0xf')](socket);function respondWithRpcPromise(_0x364bd7,_0xc45d62,_0x5a5a59){return new BPromise(function(_0x5c4e93,_0x1b72a3){return client[_0x970b('0x10')](_0x364bd7,_0x5a5a59)[_0x970b('0x11')](function(_0x542596){logger[_0x970b('0x12')](_0x970b('0x13'),_0xc45d62,_0x970b('0x14'));logger[_0x970b('0x15')](_0x970b('0x16'),_0xc45d62,_0x970b('0x14'),JSON[_0x970b('0x17')](_0x542596));if(_0x542596[_0x970b('0x18')]){if(_0x542596[_0x970b('0x18')][_0x970b('0x19')]===0x1f4){logger[_0x970b('0x18')](_0x970b('0x13'),_0xc45d62,_0x542596[_0x970b('0x18')][_0x970b('0x1a')]);return _0x1b72a3(_0x542596[_0x970b('0x18')][_0x970b('0x1a')]);}logger[_0x970b('0x18')](_0x970b('0x13'),_0xc45d62,_0x542596[_0x970b('0x18')][_0x970b('0x1a')]);return _0x5c4e93(_0x542596[_0x970b('0x18')]['message']);}else{logger[_0x970b('0x12')](_0x970b('0x13'),_0xc45d62,_0x970b('0x14'));_0x5c4e93(_0x542596[_0x970b('0x1b')]['message']);}})[_0x970b('0x1c')](function(_0x7a65e5){logger['error'](_0x970b('0x13'),_0xc45d62,_0x7a65e5);_0x1b72a3(_0x7a65e5);});});}exports[_0x970b('0x1d')]=function(_0x1ba9eb){var _0x3448c7=this;return new Promise(function(_0x1e8368,_0x1e2d57){return db[_0x970b('0x1e')]['findAll']({'raw':_0x1ba9eb[_0x970b('0x1f')]?_0x1ba9eb['options']['raw']===undefined?!![]:![]:!![],'where':_0x1ba9eb['options']?_0x1ba9eb[_0x970b('0x1f')][_0x970b('0x20')]||null:null,'attributes':_0x1ba9eb['options']?_0x1ba9eb[_0x970b('0x1f')][_0x970b('0x21')]||null:null,'limit':_0x1ba9eb[_0x970b('0x1f')]?_0x1ba9eb[_0x970b('0x1f')][_0x970b('0x22')]||null:null,'include':_0x1ba9eb[_0x970b('0x1f')]?_0x1ba9eb[_0x970b('0x1f')][_0x970b('0x23')]?_['map'](_0x1ba9eb[_0x970b('0x1f')][_0x970b('0x23')],function(_0x1865e1){return{'model':db[_0x1865e1[_0x970b('0x24')]],'as':_0x1865e1['as'],'attributes':_0x1865e1[_0x970b('0x21')],'include':_0x1865e1[_0x970b('0x23')]?_[_0x970b('0x25')](_0x1865e1[_0x970b('0x23')],function(_0x4e2afd){return{'model':db[_0x4e2afd['model']],'as':_0x4e2afd['as'],'attributes':_0x4e2afd[_0x970b('0x21')],'include':_0x4e2afd[_0x970b('0x23')]?_[_0x970b('0x25')](_0x4e2afd['include'],function(_0x1fe60b){return{'model':db[_0x1fe60b[_0x970b('0x24')]],'as':_0x1fe60b['as'],'attributes':_0x1fe60b[_0x970b('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x127317){logger[_0x970b('0x12')]('GetMailQueue',_0x1ba9eb);logger[_0x970b('0x15')](_0x970b('0x1d'),_0x1ba9eb,JSON[_0x970b('0x17')](_0x127317));_0x1e8368(_0x127317);})['catch'](function(_0x4734e8){logger[_0x970b('0x18')](_0x970b('0x1d'),_0x4734e8[_0x970b('0x1a')],_0x1ba9eb);_0x1e2d57(_0x3448c7[_0x970b('0x18')](0x1f4,_0x4734e8[_0x970b('0x1a')]));});});};exports[_0x970b('0x26')]=function(_0x16bfaf){var _0x425fda=this;return new Promise(function(_0x1b05e1,_0x438fd3){return db['MailQueue'][_0x970b('0x27')]({'raw':_0x16bfaf[_0x970b('0x1f')]?_0x16bfaf['options']['raw']===undefined?!![]:![]:!![],'where':_0x16bfaf[_0x970b('0x1f')]?_0x16bfaf['options']['where']||null:null,'attributes':_0x16bfaf[_0x970b('0x1f')]?_0x16bfaf[_0x970b('0x1f')][_0x970b('0x21')]||null:null,'include':_0x16bfaf['options']?_0x16bfaf['options'][_0x970b('0x23')]?_['map'](_0x16bfaf[_0x970b('0x1f')][_0x970b('0x23')],function(_0x2027fe){return{'model':db[_0x2027fe['model']],'as':_0x2027fe['as'],'attributes':_0x2027fe[_0x970b('0x21')],'include':_0x2027fe[_0x970b('0x23')]?_[_0x970b('0x25')](_0x2027fe[_0x970b('0x23')],function(_0x2cd617){return{'model':db[_0x2cd617['model']],'as':_0x2cd617['as'],'attributes':_0x2cd617[_0x970b('0x21')],'include':_0x2cd617[_0x970b('0x23')]?_['map'](_0x2cd617[_0x970b('0x23')],function(_0x106b4c){return{'model':db[_0x106b4c['model']],'as':_0x106b4c['as'],'attributes':_0x106b4c[_0x970b('0x21')]};}):[]};}):[]};}):[]:[]})[_0x970b('0x11')](function(_0x51440b){logger[_0x970b('0x12')](_0x970b('0x26'),_0x16bfaf);logger[_0x970b('0x15')](_0x970b('0x26'),_0x16bfaf,JSON[_0x970b('0x17')](_0x51440b));_0x1b05e1(_0x51440b);})['catch'](function(_0x5c56df){logger[_0x970b('0x18')](_0x970b('0x26'),_0x5c56df[_0x970b('0x1a')],_0x16bfaf);_0x438fd3(_0x425fda[_0x970b('0x18')](0x1f4,_0x5c56df[_0x970b('0x1a')]));});});};
\ No newline at end of file
+var _0x1840=['socket.io-emitter','register','request','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailQueue','findAll','options','raw','where','limit','include','attributes','map','model','debug','MailQueue','find','ShowMailQueue','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1840,0xde));var _0x0184=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x1840[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x0184('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0184('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0184('0x2'));var db=require(_0x0184('0x3'))['db'];var utils=require(_0x0184('0x4'));var logger=require(_0x0184('0x5'))('rpc');var config=require(_0x0184('0x6'));var jayson=require(_0x0184('0x7'));var client=jayson['client'][_0x0184('0x8')]({'port':0x232a});config[_0x0184('0x9')]=_[_0x0184('0xa')](config[_0x0184('0x9')],{'host':_0x0184('0xb'),'port':0x18eb});var socket=require(_0x0184('0xc'))(new Redis(config[_0x0184('0x9')]));require('./mailQueue.socket')[_0x0184('0xd')](socket);function respondWithRpcPromise(_0x296805,_0x12fdf7,_0x2fe04f){return new BPromise(function(_0x315f26,_0x975987){return client[_0x0184('0xe')](_0x296805,_0x2fe04f)[_0x0184('0xf')](function(_0xf76637){logger[_0x0184('0x10')](_0x0184('0x11'),_0x12fdf7,_0x0184('0x12'));logger['debug'](_0x0184('0x13'),_0x12fdf7,_0x0184('0x12'),JSON[_0x0184('0x14')](_0xf76637));if(_0xf76637[_0x0184('0x15')]){if(_0xf76637[_0x0184('0x15')][_0x0184('0x16')]===0x1f4){logger[_0x0184('0x15')](_0x0184('0x11'),_0x12fdf7,_0xf76637[_0x0184('0x15')]['message']);return _0x975987(_0xf76637[_0x0184('0x15')][_0x0184('0x17')]);}logger[_0x0184('0x15')](_0x0184('0x11'),_0x12fdf7,_0xf76637['error'][_0x0184('0x17')]);return _0x315f26(_0xf76637[_0x0184('0x15')][_0x0184('0x17')]);}else{logger[_0x0184('0x10')]('MailQueue,\x20%s,\x20%s',_0x12fdf7,'request\x20sent');_0x315f26(_0xf76637['result'][_0x0184('0x17')]);}})[_0x0184('0x18')](function(_0x3e81db){logger[_0x0184('0x15')](_0x0184('0x11'),_0x12fdf7,_0x3e81db);_0x975987(_0x3e81db);});});}exports[_0x0184('0x19')]=function(_0x58ce76){var _0x4a47c1=this;return new Promise(function(_0x7a13fc,_0x24d1ed){return db['MailQueue'][_0x0184('0x1a')]({'raw':_0x58ce76[_0x0184('0x1b')]?_0x58ce76[_0x0184('0x1b')][_0x0184('0x1c')]===undefined?!![]:![]:!![],'where':_0x58ce76[_0x0184('0x1b')]?_0x58ce76[_0x0184('0x1b')][_0x0184('0x1d')]||null:null,'attributes':_0x58ce76[_0x0184('0x1b')]?_0x58ce76[_0x0184('0x1b')]['attributes']||null:null,'limit':_0x58ce76[_0x0184('0x1b')]?_0x58ce76[_0x0184('0x1b')][_0x0184('0x1e')]||null:null,'include':_0x58ce76[_0x0184('0x1b')]?_0x58ce76[_0x0184('0x1b')][_0x0184('0x1f')]?_['map'](_0x58ce76[_0x0184('0x1b')][_0x0184('0x1f')],function(_0xe66774){return{'model':db[_0xe66774['model']],'as':_0xe66774['as'],'attributes':_0xe66774[_0x0184('0x20')],'include':_0xe66774['include']?_[_0x0184('0x21')](_0xe66774[_0x0184('0x1f')],function(_0x5761ec){return{'model':db[_0x5761ec[_0x0184('0x22')]],'as':_0x5761ec['as'],'attributes':_0x5761ec[_0x0184('0x20')],'include':_0x5761ec[_0x0184('0x1f')]?_[_0x0184('0x21')](_0x5761ec[_0x0184('0x1f')],function(_0x1e7a2d){return{'model':db[_0x1e7a2d[_0x0184('0x22')]],'as':_0x1e7a2d['as'],'attributes':_0x1e7a2d[_0x0184('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xab883a){logger[_0x0184('0x10')]('GetMailQueue',_0x58ce76);logger[_0x0184('0x23')](_0x0184('0x19'),_0x58ce76,JSON['stringify'](_0xab883a));_0x7a13fc(_0xab883a);})[_0x0184('0x18')](function(_0x1430ba){logger['error'](_0x0184('0x19'),_0x1430ba[_0x0184('0x17')],_0x58ce76);_0x24d1ed(_0x4a47c1[_0x0184('0x15')](0x1f4,_0x1430ba['message']));});});};exports['ShowMailQueue']=function(_0x9a5842){var _0x573ac6=this;return new Promise(function(_0x35295a,_0x12aa71){return db[_0x0184('0x24')][_0x0184('0x25')]({'raw':_0x9a5842[_0x0184('0x1b')]?_0x9a5842[_0x0184('0x1b')][_0x0184('0x1c')]===undefined?!![]:![]:!![],'where':_0x9a5842[_0x0184('0x1b')]?_0x9a5842['options'][_0x0184('0x1d')]||null:null,'attributes':_0x9a5842[_0x0184('0x1b')]?_0x9a5842['options']['attributes']||null:null,'include':_0x9a5842['options']?_0x9a5842[_0x0184('0x1b')][_0x0184('0x1f')]?_[_0x0184('0x21')](_0x9a5842['options']['include'],function(_0x519ed9){return{'model':db[_0x519ed9[_0x0184('0x22')]],'as':_0x519ed9['as'],'attributes':_0x519ed9[_0x0184('0x20')],'include':_0x519ed9['include']?_[_0x0184('0x21')](_0x519ed9[_0x0184('0x1f')],function(_0x22d12f){return{'model':db[_0x22d12f[_0x0184('0x22')]],'as':_0x22d12f['as'],'attributes':_0x22d12f[_0x0184('0x20')],'include':_0x22d12f[_0x0184('0x1f')]?_[_0x0184('0x21')](_0x22d12f['include'],function(_0x2a0051){return{'model':db[_0x2a0051[_0x0184('0x22')]],'as':_0x2a0051['as'],'attributes':_0x2a0051[_0x0184('0x20')]};}):[]};}):[]};}):[]:[]})[_0x0184('0xf')](function(_0x161ec0){logger[_0x0184('0x10')](_0x0184('0x26'),_0x9a5842);logger['debug']('ShowMailQueue',_0x9a5842,JSON[_0x0184('0x14')](_0x161ec0));_0x35295a(_0x161ec0);})[_0x0184('0x18')](function(_0x3d75a9){logger[_0x0184('0x15')](_0x0184('0x26'),_0x3d75a9['message'],_0x9a5842);_0x12aa71(_0x573ac6[_0x0184('0x15')](0x1f4,_0x3d75a9['message']));});});};
\ No newline at end of file
index 257e48d..402da3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1518=['remove','removeListener','length','mailQueue:','./mailQueue.events'];(function(_0x445fb5,_0x49a5a0){var _0x10e38a=function(_0x1bed47){while(--_0x1bed47){_0x445fb5['push'](_0x445fb5['shift']());}};_0x10e38a(++_0x49a5a0);}(_0x1518,0x18a));var _0x8151=function(_0x4c10c2,_0x477a47){_0x4c10c2=_0x4c10c2-0x0;var _0x4ab308=_0x1518[_0x4c10c2];return _0x4ab308;};'use strict';var MailQueueEvents=require(_0x8151('0x0'));var events=['save',_0x8151('0x1'),'update'];function createListener(_0x9a8d35,_0x5a525a){return function(_0x353d24){_0x5a525a['emit'](_0x9a8d35,_0x353d24);};}function removeListener(_0x4a844a,_0x2cdf4b){return function(){MailQueueEvents[_0x8151('0x2')](_0x4a844a,_0x2cdf4b);};}exports['register']=function(_0x278ad8){for(var _0x2aeb09=0x0,_0x28a673=events[_0x8151('0x3')];_0x2aeb09<_0x28a673;_0x2aeb09++){var _0x27be34=events[_0x2aeb09];var _0x4946ba=createListener(_0x8151('0x4')+_0x27be34,_0x278ad8);MailQueueEvents['on'](_0x27be34,_0x4946ba);}};
\ No newline at end of file
+var _0xbb36=['./mailQueue.events','save','remove','update','register','length','mailQueue:'];(function(_0x5d5c49,_0x528f94){var _0x41cb72=function(_0x4fe8e2){while(--_0x4fe8e2){_0x5d5c49['push'](_0x5d5c49['shift']());}};_0x41cb72(++_0x528f94);}(_0xbb36,0x1a4));var _0x6bb3=function(_0x145607,_0x2045d0){_0x145607=_0x145607-0x0;var _0xc18527=_0xbb36[_0x145607];return _0xc18527;};'use strict';var MailQueueEvents=require(_0x6bb3('0x0'));var events=[_0x6bb3('0x1'),_0x6bb3('0x2'),_0x6bb3('0x3')];function createListener(_0x33444f,_0x34ba11){return function(_0x1739aa){_0x34ba11['emit'](_0x33444f,_0x1739aa);};}function removeListener(_0x2380ab,_0x5b7c2b){return function(){MailQueueEvents['removeListener'](_0x2380ab,_0x5b7c2b);};}exports[_0x6bb3('0x4')]=function(_0x16cc76){for(var _0x143280=0x0,_0x5d7238=events[_0x6bb3('0x5')];_0x143280<_0x5d7238;_0x143280++){var _0x532a3e=events[_0x143280];var _0x409c74=createListener(_0x6bb3('0x6')+_0x532a3e,_0x16cc76);MailQueueEvents['on'](_0x532a3e,_0x409c74);}};
\ No newline at end of file
index c7902df..4e8e9cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa24c=['/:id','isAuthenticated','show','post','create','put','delete','destroy','exports','multer','util','path','express','../../components/auth/service','./mailQueueReport.controller','index','get','/describe'];(function(_0x472f71,_0x304ba5){var _0x3ec1e9=function(_0x9fede3){while(--_0x9fede3){_0x472f71['push'](_0x472f71['shift']());}};_0x3ec1e9(++_0x304ba5);}(_0xa24c,0x129));var _0xca24=function(_0x56785b,_0xc24ac){_0x56785b=_0x56785b-0x0;var _0x391f09=_0xa24c[_0x56785b];return _0x391f09;};'use strict';var multer=require(_0xca24('0x0'));var util=require(_0xca24('0x1'));var path=require(_0xca24('0x2'));var timeout=require('connect-timeout');var express=require(_0xca24('0x3'));var router=express['Router']();var auth=require(_0xca24('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xca24('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xca24('0x6')]);router[_0xca24('0x7')](_0xca24('0x8'),auth['isAuthenticated'](),controller['describe']);router['get'](_0xca24('0x9'),auth[_0xca24('0xa')](),controller[_0xca24('0xb')]);router[_0xca24('0xc')]('/',auth[_0xca24('0xa')](),controller[_0xca24('0xd')]);router[_0xca24('0xe')](_0xca24('0x9'),auth[_0xca24('0xa')](),controller['update']);router[_0xca24('0xf')]('/:id',auth[_0xca24('0xa')](),controller[_0xca24('0x10')]);module[_0xca24('0x11')]=router;
\ No newline at end of file
+var _0x033a=['post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','./mailQueueReport.controller','get','/describe','isAuthenticated','describe','/:id'];(function(_0x307af3,_0x4ed88c){var _0x51216d=function(_0x3cec36){while(--_0x3cec36){_0x307af3['push'](_0x307af3['shift']());}};_0x51216d(++_0x4ed88c);}(_0x033a,0x133));var _0xa033=function(_0x2dacca,_0x3b55a5){_0x2dacca=_0x2dacca-0x0;var _0x4e8745=_0x033a[_0x2dacca];return _0x4e8745;};'use strict';var multer=require(_0xa033('0x0'));var util=require(_0xa033('0x1'));var path=require(_0xa033('0x2'));var timeout=require(_0xa033('0x3'));var express=require(_0xa033('0x4'));var router=express[_0xa033('0x5')]();var auth=require(_0xa033('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa033('0x7'));router[_0xa033('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xa033('0x9'),auth[_0xa033('0xa')](),controller[_0xa033('0xb')]);router['get'](_0xa033('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xa033('0xd')]('/',auth['isAuthenticated'](),controller[_0xa033('0xe')]);router[_0xa033('0xf')]('/:id',auth[_0xa033('0xa')](),controller[_0xa033('0x10')]);router[_0xa033('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xa033('0x12')]);module[_0xa033('0x13')]=router;
\ No newline at end of file
index c9670d9..7d5b8e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f2=['sequelize','exports','STRING','DATE','moment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x39f2,0x1e4));var _0x239f=function(_0x1fc5ef,_0x30eb00){_0x1fc5ef=_0x1fc5ef-0x0;var _0x2f3a62=_0x39f2[_0x1fc5ef];return _0x2f3a62;};'use strict';var moment=require(_0x239f('0x0'));var Sequelize=require(_0x239f('0x1'));module[_0x239f('0x2')]={'uniqueid':{'type':Sequelize[_0x239f('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x239f('0x3')]},'joinAt':{'type':Sequelize[_0x239f('0x4')]},'leaveAt':{'type':Sequelize[_0x239f('0x4')]},'acceptAt':{'type':Sequelize[_0x239f('0x4')]},'exitAt':{'type':Sequelize[_0x239f('0x4')]},'reason':{'type':Sequelize[_0x239f('0x3')]}};
\ No newline at end of file
+var _0xc152=['STRING','moment','sequelize','exports'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xc152,0xb1));var _0x2c15=function(_0x213dd5,_0x1b5e50){_0x213dd5=_0x213dd5-0x0;var _0x39955a=_0xc152[_0x213dd5];return _0x39955a;};'use strict';var moment=require(_0x2c15('0x0'));var Sequelize=require(_0x2c15('0x1'));module[_0x2c15('0x2')]={'uniqueid':{'type':Sequelize[_0x2c15('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x2c15('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x2c15('0x3')]}};
\ No newline at end of file
index 8de6ab0..9cedf45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b29=['querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','MailQueueReport','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','where','add','merge','filter','map','key','VIRTUAL','field','count','includeAll','include','rows','options','find','catch','create','body','destroy','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','desk.js','to-csv'];(function(_0x4b975b,_0x3b1e75){var _0x4cbdf3=function(_0x30b817){while(--_0x30b817){_0x4b975b['push'](_0x4b975b['shift']());}};_0x4cbdf3(++_0x3b1e75);}(_0x2b29,0x163));var _0x92b2=function(_0x2b8df8,_0x450756){_0x2b8df8=_0x2b8df8-0x0;var _0x14d355=_0x2b29[_0x2b8df8];return _0x14d355;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x92b2('0x0'));var rimraf=require(_0x92b2('0x1'));var zipdir=require(_0x92b2('0x2'));var jsonpatch=require(_0x92b2('0x3'));var rp=require('request-promise');var moment=require(_0x92b2('0x4'));var BPromise=require(_0x92b2('0x5'));var Mustache=require(_0x92b2('0x6'));var util=require(_0x92b2('0x7'));var path=require(_0x92b2('0x8'));var sox=require(_0x92b2('0x9'));var csv=require('to-csv');var ejs=require(_0x92b2('0xa'));var fs=require('fs');var _=require('lodash');var squel=require(_0x92b2('0xb'));var crypto=require(_0x92b2('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x92b2('0xd'));var toCsv=require(_0x92b2('0xe'));var querystring=require(_0x92b2('0xf'));var Papa=require(_0x92b2('0x10'));var Redis=require('ioredis');var qs=require(_0x92b2('0x11'));var logger=require(_0x92b2('0x12'))(_0x92b2('0x13'));var utils=require(_0x92b2('0x14'));var config=require(_0x92b2('0x15'));var db=require(_0x92b2('0x16'))['db'];function respondWithStatusCode(_0xa18d4e,_0x492e48){_0x492e48=_0x492e48||0xcc;return function(_0x3e6a2a){if(_0x3e6a2a){return _0xa18d4e[_0x92b2('0x17')](_0x492e48);}return _0xa18d4e[_0x92b2('0x18')](_0x492e48)['end']();};}function respondWithResult(_0x1b7dd6,_0x3e5309){_0x3e5309=_0x3e5309||0xc8;return function(_0x3c5db1){if(_0x3c5db1){return _0x1b7dd6[_0x92b2('0x18')](_0x3e5309)[_0x92b2('0x19')](_0x3c5db1);}};}function respondWithFilteredResult(_0x179834,_0x52ef07){return function(_0x11e175){if(_0x11e175){var _0x5c42b5=_0x11e175['count'],_0x299a9d=_0x52ef07['offset'],_0x2be641=_0x52ef07[_0x92b2('0x1a')]+_0x52ef07['limit'],_0x2ac0c8;if(_0x2be641>=_0x5c42b5){_0x2be641=_0x5c42b5;_0x2ac0c8=0xc8;}else{_0x2ac0c8=0xce;}_0x179834[_0x92b2('0x18')](_0x2ac0c8);return _0x179834['set'](_0x92b2('0x1b'),_0x299a9d+'-'+_0x2be641+'/'+_0x5c42b5)[_0x92b2('0x19')](_0x11e175);}return null;};}function patchUpdates(_0x39d811){return function(_0xceaa2f){try{jsonpatch[_0x92b2('0x1c')](_0xceaa2f,_0x39d811,!![]);}catch(_0x3dfd47){return BPromise[_0x92b2('0x1d')](_0x3dfd47);}return _0xceaa2f[_0x92b2('0x1e')]();};}function saveUpdates(_0x21bc07,_0xa08831){return function(_0xfd81c5){if(_0xfd81c5){return _0xfd81c5[_0x92b2('0x1f')](_0x21bc07)[_0x92b2('0x20')](function(_0x422ab6){return _0x422ab6;});}return null;};}function removeEntity(_0x2f0e68,_0x4d2850){return function(_0x46078b){if(_0x46078b){return _0x46078b['destroy']()[_0x92b2('0x20')](function(){_0x2f0e68[_0x92b2('0x18')](0xcc)[_0x92b2('0x21')]();});}};}function handleEntityNotFound(_0x1e09b6,_0x13f46b){return function(_0x574c3e){if(!_0x574c3e){_0x1e09b6['sendStatus'](0x194);}return _0x574c3e;};}function handleError(_0x131b6b,_0x31567c){_0x31567c=_0x31567c||0x1f4;return function(_0x8ed58d){logger[_0x92b2('0x22')](_0x8ed58d[_0x92b2('0x23')]);if(_0x8ed58d[_0x92b2('0x24')]){delete _0x8ed58d[_0x92b2('0x24')];}_0x131b6b[_0x92b2('0x18')](_0x31567c)[_0x92b2('0x25')](_0x8ed58d);};}exports['index']=function(_0xd31d50,_0x57c1ff){var _0x183f81={},_0x4a587f={},_0x5e9688={'count':0x0,'rows':[]};var _0x105270=db[_0x92b2('0x26')][_0x92b2('0x27')];_0x4a587f['model']=_[_0x92b2('0x28')](_0x105270);var _0x482706={'dateStart':_0xd31d50[_0x92b2('0x29')][_0x92b2('0x2a')],'dateEnd':_0xd31d50[_0x92b2('0x29')][_0x92b2('0x2b')]};delete _0xd31d50[_0x92b2('0x29')][_0x92b2('0x2a')];delete _0xd31d50[_0x92b2('0x29')]['dateEnd'];_0x4a587f['query']=_['keys'](_0xd31d50[_0x92b2('0x29')]);_0x4a587f[_0x92b2('0x2c')]=_[_0x92b2('0x2d')](_0x4a587f['model'],_0x4a587f['query']);_0x183f81[_0x92b2('0x2e')]=_[_0x92b2('0x2d')](_0x4a587f[_0x92b2('0x2f')],qs[_0x92b2('0x30')](_0xd31d50[_0x92b2('0x29')]['fields']));_0x183f81['attributes']=_0x183f81['attributes'][_0x92b2('0x31')]?_0x183f81[_0x92b2('0x2e')]:_0x4a587f['model'];if(!_0xd31d50[_0x92b2('0x29')][_0x92b2('0x32')](_0x92b2('0x33'))){_0x183f81[_0x92b2('0x34')]=qs[_0x92b2('0x34')](_0xd31d50[_0x92b2('0x29')][_0x92b2('0x34')]);_0x183f81[_0x92b2('0x1a')]=qs['offset'](_0xd31d50[_0x92b2('0x29')][_0x92b2('0x1a')]);}_0x183f81[_0x92b2('0x35')]=qs['sort'](_0xd31d50[_0x92b2('0x29')]['sort']);_0x183f81[_0x92b2('0x36')]=qs[_0x92b2('0x2c')](_['pick'](_0xd31d50['query'],_0x4a587f[_0x92b2('0x2c')]));if(_0x482706[_0x92b2('0x2a')]){if(_0x482706['dateEnd']){_0x482706['dateEnd']=moment(_0x482706[_0x92b2('0x2b')])[_0x92b2('0x37')](0x1,'day');}else{_0x482706[_0x92b2('0x2b')]=moment(_0x482706[_0x92b2('0x2a')])[_0x92b2('0x37')](0x1,'day');}_[_0x92b2('0x38')](_0x183f81['where'],{'createdAt':{'$gte':_0x482706[_0x92b2('0x2a')],'$lte':_0x482706[_0x92b2('0x2b')]}});}if(_0xd31d50[_0x92b2('0x29')][_0x92b2('0x39')]){_0x183f81[_0x92b2('0x36')]=_[_0x92b2('0x38')](_0x183f81['where'],{'$or':_[_0x92b2('0x3a')](_0x105270,function(_0x35ca4d){if(_0x35ca4d['type'][_0x92b2('0x3b')]!==_0x92b2('0x3c')){var _0x129af1={};_0x129af1[_0x35ca4d[_0x92b2('0x3d')]]={'$like':'%'+_0xd31d50[_0x92b2('0x29')][_0x92b2('0x39')]+'%'};return _0x129af1;}})});}_0x183f81=_[_0x92b2('0x38')]({},_0x183f81,_0xd31d50['options']);var _0x19efe0={'where':_0x183f81['where']};return db[_0x92b2('0x26')]['count'](_0x19efe0)[_0x92b2('0x20')](function(_0xefc848){_0x5e9688[_0x92b2('0x3e')]=_0xefc848;if(_0xd31d50['query'][_0x92b2('0x3f')]){_0x183f81[_0x92b2('0x40')]=[{'all':!![]}];}return db[_0x92b2('0x26')]['findAll'](_0x183f81);})[_0x92b2('0x20')](function(_0x19fe8f){_0x5e9688[_0x92b2('0x41')]=_0x19fe8f;return _0x5e9688;})[_0x92b2('0x20')](respondWithFilteredResult(_0x57c1ff,_0x183f81))['catch'](handleError(_0x57c1ff,null));};exports['show']=function(_0x49ca54,_0x399bb7){var _0x150958={'raw':!![],'where':{'id':_0x49ca54['params']['id']}},_0x423c41={};_0x423c41[_0x92b2('0x2f')]=_['keys'](db[_0x92b2('0x26')][_0x92b2('0x27')]);_0x423c41[_0x92b2('0x29')]=_[_0x92b2('0x28')](_0x49ca54[_0x92b2('0x29')]);_0x423c41[_0x92b2('0x2c')]=_[_0x92b2('0x2d')](_0x423c41[_0x92b2('0x2f')],_0x423c41[_0x92b2('0x29')]);_0x150958[_0x92b2('0x2e')]=_[_0x92b2('0x2d')](_0x423c41[_0x92b2('0x2f')],qs['fields'](_0x49ca54[_0x92b2('0x29')]['fields']));_0x150958[_0x92b2('0x2e')]=_0x150958['attributes'][_0x92b2('0x31')]?_0x150958[_0x92b2('0x2e')]:_0x423c41[_0x92b2('0x2f')];if(_0x49ca54['query'][_0x92b2('0x3f')]){_0x150958['include']=[{'all':!![]}];}_0x150958=_[_0x92b2('0x38')]({},_0x150958,_0x49ca54[_0x92b2('0x42')]);return db['MailQueueReport'][_0x92b2('0x43')](_0x150958)[_0x92b2('0x20')](handleEntityNotFound(_0x399bb7,null))[_0x92b2('0x20')](respondWithResult(_0x399bb7,null))[_0x92b2('0x44')](handleError(_0x399bb7,null));};exports[_0x92b2('0x45')]=function(_0x7d6dcf,_0x2c4531){return db[_0x92b2('0x26')][_0x92b2('0x45')](_0x7d6dcf[_0x92b2('0x46')],{})[_0x92b2('0x20')](respondWithResult(_0x2c4531,0xc9))[_0x92b2('0x44')](handleError(_0x2c4531,null));};exports[_0x92b2('0x1f')]=function(_0x12f255,_0x563ded){if(_0x12f255[_0x92b2('0x46')]['id']){delete _0x12f255[_0x92b2('0x46')]['id'];}return db['MailQueueReport']['find']({'where':{'id':_0x12f255['params']['id']}})[_0x92b2('0x20')](handleEntityNotFound(_0x563ded,null))[_0x92b2('0x20')](saveUpdates(_0x12f255['body'],null))['then'](respondWithResult(_0x563ded,null))['catch'](handleError(_0x563ded,null));};exports[_0x92b2('0x47')]=function(_0x1cb272,_0x4265f6){return db[_0x92b2('0x26')][_0x92b2('0x43')]({'where':{'id':_0x1cb272[_0x92b2('0x48')]['id']}})[_0x92b2('0x20')](handleEntityNotFound(_0x4265f6,null))[_0x92b2('0x20')](removeEntity(_0x4265f6,null))['catch'](handleError(_0x4265f6,null));};exports['describe']=function(_0x4dd900,_0x32fa61){return db['MailQueueReport'][_0x92b2('0x49')]()['then'](respondWithResult(_0x32fa61,null))[_0x92b2('0x44')](handleError(_0x32fa61,null));};
\ No newline at end of file
+var _0x33ad=['reject','save','then','error','stack','name','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','day','merge','filter','map','type','key','VIRTUAL','field','options','MailQueueReport','includeAll','include','rows','catch','show','params','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply'];(function(_0x2f8ff6,_0x5a83bb){var _0x1cc75a=function(_0x17b872){while(--_0x17b872){_0x2f8ff6['push'](_0x2f8ff6['shift']());}};_0x1cc75a(++_0x5a83bb);}(_0x33ad,0x74));var _0xd33a=function(_0x71c12a,_0x420c10){_0x71c12a=_0x71c12a-0x0;var _0x422206=_0x33ad[_0x71c12a];return _0x422206;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xd33a('0x0'));var rimraf=require(_0xd33a('0x1'));var zipdir=require(_0xd33a('0x2'));var jsonpatch=require(_0xd33a('0x3'));var rp=require(_0xd33a('0x4'));var moment=require(_0xd33a('0x5'));var BPromise=require(_0xd33a('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xd33a('0x7'));var ejs=require(_0xd33a('0x8'));var fs=require('fs');var _=require(_0xd33a('0x9'));var squel=require(_0xd33a('0xa'));var crypto=require(_0xd33a('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd33a('0x7'));var querystring=require(_0xd33a('0xc'));var Papa=require(_0xd33a('0xd'));var Redis=require('ioredis');var qs=require(_0xd33a('0xe'));var logger=require('../../config/logger')('api');var utils=require(_0xd33a('0xf'));var config=require(_0xd33a('0x10'));var db=require(_0xd33a('0x11'))['db'];function respondWithStatusCode(_0x1497e4,_0x224e1b){_0x224e1b=_0x224e1b||0xcc;return function(_0xf89b19){if(_0xf89b19){return _0x1497e4[_0xd33a('0x12')](_0x224e1b);}return _0x1497e4[_0xd33a('0x13')](_0x224e1b)[_0xd33a('0x14')]();};}function respondWithResult(_0x15e8fe,_0x14c679){_0x14c679=_0x14c679||0xc8;return function(_0x414ce0){if(_0x414ce0){return _0x15e8fe[_0xd33a('0x13')](_0x14c679)[_0xd33a('0x15')](_0x414ce0);}};}function respondWithFilteredResult(_0x49f102,_0x3bd9f6){return function(_0x4a0d62){if(_0x4a0d62){var _0x16db6b=_0x4a0d62[_0xd33a('0x16')],_0x74c31b=_0x3bd9f6[_0xd33a('0x17')],_0x4c41a3=_0x3bd9f6['offset']+_0x3bd9f6[_0xd33a('0x18')],_0x289dc5;if(_0x4c41a3>=_0x16db6b){_0x4c41a3=_0x16db6b;_0x289dc5=0xc8;}else{_0x289dc5=0xce;}_0x49f102[_0xd33a('0x13')](_0x289dc5);return _0x49f102[_0xd33a('0x19')](_0xd33a('0x1a'),_0x74c31b+'-'+_0x4c41a3+'/'+_0x16db6b)[_0xd33a('0x15')](_0x4a0d62);}return null;};}function patchUpdates(_0x56e93a){return function(_0x5d680a){try{jsonpatch[_0xd33a('0x1b')](_0x5d680a,_0x56e93a,!![]);}catch(_0x25c234){return BPromise[_0xd33a('0x1c')](_0x25c234);}return _0x5d680a[_0xd33a('0x1d')]();};}function saveUpdates(_0x4bb5a1,_0x50cb97){return function(_0x242d08){if(_0x242d08){return _0x242d08['update'](_0x4bb5a1)['then'](function(_0x1b4d42){return _0x1b4d42;});}return null;};}function removeEntity(_0x62d8c,_0x5d93d4){return function(_0x2c5fe3){if(_0x2c5fe3){return _0x2c5fe3['destroy']()[_0xd33a('0x1e')](function(){_0x62d8c[_0xd33a('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d012e,_0x220c22){return function(_0x10070c){if(!_0x10070c){_0x2d012e[_0xd33a('0x12')](0x194);}return _0x10070c;};}function handleError(_0x24a570,_0x431604){_0x431604=_0x431604||0x1f4;return function(_0x2c0af4){logger[_0xd33a('0x1f')](_0x2c0af4[_0xd33a('0x20')]);if(_0x2c0af4[_0xd33a('0x21')]){delete _0x2c0af4[_0xd33a('0x21')];}_0x24a570[_0xd33a('0x13')](_0x431604)['send'](_0x2c0af4);};}exports['index']=function(_0x79a742,_0x31a67b){var _0x57d09f={},_0x113419={},_0x155383={'count':0x0,'rows':[]};var _0x343889=db['MailQueueReport'][_0xd33a('0x22')];_0x113419['model']=_[_0xd33a('0x23')](_0x343889);var _0x5df0de={'dateStart':_0x79a742[_0xd33a('0x24')][_0xd33a('0x25')],'dateEnd':_0x79a742[_0xd33a('0x24')][_0xd33a('0x26')]};delete _0x79a742[_0xd33a('0x24')][_0xd33a('0x25')];delete _0x79a742[_0xd33a('0x24')][_0xd33a('0x26')];_0x113419[_0xd33a('0x24')]=_[_0xd33a('0x23')](_0x79a742['query']);_0x113419[_0xd33a('0x27')]=_[_0xd33a('0x28')](_0x113419[_0xd33a('0x29')],_0x113419[_0xd33a('0x24')]);_0x57d09f[_0xd33a('0x2a')]=_[_0xd33a('0x28')](_0x113419[_0xd33a('0x29')],qs[_0xd33a('0x2b')](_0x79a742[_0xd33a('0x24')][_0xd33a('0x2b')]));_0x57d09f[_0xd33a('0x2a')]=_0x57d09f[_0xd33a('0x2a')][_0xd33a('0x2c')]?_0x57d09f[_0xd33a('0x2a')]:_0x113419[_0xd33a('0x29')];if(!_0x79a742[_0xd33a('0x24')][_0xd33a('0x2d')](_0xd33a('0x2e'))){_0x57d09f['limit']=qs[_0xd33a('0x18')](_0x79a742[_0xd33a('0x24')][_0xd33a('0x18')]);_0x57d09f[_0xd33a('0x17')]=qs[_0xd33a('0x17')](_0x79a742['query'][_0xd33a('0x17')]);}_0x57d09f['order']=qs['sort'](_0x79a742[_0xd33a('0x24')][_0xd33a('0x2f')]);_0x57d09f[_0xd33a('0x30')]=qs[_0xd33a('0x27')](_[_0xd33a('0x31')](_0x79a742['query'],_0x113419['filters']));if(_0x5df0de[_0xd33a('0x25')]){if(_0x5df0de['dateEnd']){_0x5df0de[_0xd33a('0x26')]=moment(_0x5df0de[_0xd33a('0x26')])['add'](0x1,'day');}else{_0x5df0de[_0xd33a('0x26')]=moment(_0x5df0de[_0xd33a('0x25')])['add'](0x1,_0xd33a('0x32'));}_[_0xd33a('0x33')](_0x57d09f[_0xd33a('0x30')],{'createdAt':{'$gte':_0x5df0de[_0xd33a('0x25')],'$lte':_0x5df0de[_0xd33a('0x26')]}});}if(_0x79a742['query'][_0xd33a('0x34')]){_0x57d09f[_0xd33a('0x30')]=_[_0xd33a('0x33')](_0x57d09f[_0xd33a('0x30')],{'$or':_[_0xd33a('0x35')](_0x343889,function(_0x1eddd8){if(_0x1eddd8[_0xd33a('0x36')][_0xd33a('0x37')]!==_0xd33a('0x38')){var _0x52c4a5={};_0x52c4a5[_0x1eddd8[_0xd33a('0x39')]]={'$like':'%'+_0x79a742[_0xd33a('0x24')][_0xd33a('0x34')]+'%'};return _0x52c4a5;}})});}_0x57d09f=_[_0xd33a('0x33')]({},_0x57d09f,_0x79a742[_0xd33a('0x3a')]);var _0x264d0b={'where':_0x57d09f[_0xd33a('0x30')]};return db[_0xd33a('0x3b')][_0xd33a('0x16')](_0x264d0b)['then'](function(_0x5be473){_0x155383[_0xd33a('0x16')]=_0x5be473;if(_0x79a742[_0xd33a('0x24')][_0xd33a('0x3c')]){_0x57d09f[_0xd33a('0x3d')]=[{'all':!![]}];}return db[_0xd33a('0x3b')]['findAll'](_0x57d09f);})['then'](function(_0x9c3d45){_0x155383[_0xd33a('0x3e')]=_0x9c3d45;return _0x155383;})[_0xd33a('0x1e')](respondWithFilteredResult(_0x31a67b,_0x57d09f))[_0xd33a('0x3f')](handleError(_0x31a67b,null));};exports[_0xd33a('0x40')]=function(_0x1535a1,_0x1276aa){var _0x52f4ff={'raw':!![],'where':{'id':_0x1535a1[_0xd33a('0x41')]['id']}},_0x22a2dd={};_0x22a2dd[_0xd33a('0x29')]=_[_0xd33a('0x23')](db[_0xd33a('0x3b')][_0xd33a('0x22')]);_0x22a2dd[_0xd33a('0x24')]=_['keys'](_0x1535a1[_0xd33a('0x24')]);_0x22a2dd[_0xd33a('0x27')]=_[_0xd33a('0x28')](_0x22a2dd[_0xd33a('0x29')],_0x22a2dd[_0xd33a('0x24')]);_0x52f4ff[_0xd33a('0x2a')]=_['intersection'](_0x22a2dd['model'],qs[_0xd33a('0x2b')](_0x1535a1[_0xd33a('0x24')]['fields']));_0x52f4ff[_0xd33a('0x2a')]=_0x52f4ff[_0xd33a('0x2a')]['length']?_0x52f4ff['attributes']:_0x22a2dd['model'];if(_0x1535a1[_0xd33a('0x24')][_0xd33a('0x3c')]){_0x52f4ff[_0xd33a('0x3d')]=[{'all':!![]}];}_0x52f4ff=_[_0xd33a('0x33')]({},_0x52f4ff,_0x1535a1['options']);return db['MailQueueReport'][_0xd33a('0x42')](_0x52f4ff)['then'](handleEntityNotFound(_0x1276aa,null))[_0xd33a('0x1e')](respondWithResult(_0x1276aa,null))[_0xd33a('0x3f')](handleError(_0x1276aa,null));};exports[_0xd33a('0x43')]=function(_0x2db177,_0x11b328){return db[_0xd33a('0x3b')]['create'](_0x2db177[_0xd33a('0x44')],{})[_0xd33a('0x1e')](respondWithResult(_0x11b328,0xc9))[_0xd33a('0x3f')](handleError(_0x11b328,null));};exports[_0xd33a('0x45')]=function(_0x5aaf6d,_0x3600b1){if(_0x5aaf6d[_0xd33a('0x44')]['id']){delete _0x5aaf6d[_0xd33a('0x44')]['id'];}return db[_0xd33a('0x3b')][_0xd33a('0x42')]({'where':{'id':_0x5aaf6d['params']['id']}})[_0xd33a('0x1e')](handleEntityNotFound(_0x3600b1,null))[_0xd33a('0x1e')](saveUpdates(_0x5aaf6d[_0xd33a('0x44')],null))[_0xd33a('0x1e')](respondWithResult(_0x3600b1,null))[_0xd33a('0x3f')](handleError(_0x3600b1,null));};exports[_0xd33a('0x46')]=function(_0x54fc54,_0x156434){return db['MailQueueReport'][_0xd33a('0x42')]({'where':{'id':_0x54fc54[_0xd33a('0x41')]['id']}})[_0xd33a('0x1e')](handleEntityNotFound(_0x156434,null))[_0xd33a('0x1e')](removeEntity(_0x156434,null))[_0xd33a('0x3f')](handleError(_0x156434,null));};exports['describe']=function(_0x2a5aa2,_0x4023ec){return db[_0xd33a('0x3b')][_0xd33a('0x47')]()[_0xd33a('0x1e')](respondWithResult(_0x4023ec,null))[_0xd33a('0x3f')](handleError(_0x4023ec,null));};
\ No newline at end of file
index 0a30be0..7127c39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30f=['util','../../config/logger','api','request-promise','./mailQueueReport.attributes','exports','define','MailQueueReport'];(function(_0x11df49,_0x31ab0b){var _0x299835=function(_0x46c3a8){while(--_0x46c3a8){_0x11df49['push'](_0x11df49['shift']());}};_0x299835(++_0x31ab0b);}(_0xa30f,0xe0));var _0xfa30=function(_0x4bb756,_0x492ca7){_0x4bb756=_0x4bb756-0x0;var _0xea3275=_0xa30f[_0x4bb756];return _0xea3275;};'use strict';var _=require('lodash');var util=require(_0xfa30('0x0'));var logger=require(_0xfa30('0x1'))(_0xfa30('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfa30('0x3'));var attributes=require(_0xfa30('0x4'));module[_0xfa30('0x5')]=function(_0x4d7c2f,_0x2e693d){return _0x4d7c2f[_0xfa30('0x6')](_0xfa30('0x7'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x514d=['MailQueueReport','uniqueid','util','../../config/logger','api','request-promise','./mailQueueReport.attributes','define'];(function(_0x46ef2d,_0x535cdf){var _0xc36575=function(_0x3c2741){while(--_0x3c2741){_0x46ef2d['push'](_0x46ef2d['shift']());}};_0xc36575(++_0x535cdf);}(_0x514d,0x172));var _0xd514=function(_0x45b098,_0x12fa2b){_0x45b098=_0x45b098-0x0;var _0x341ce7=_0x514d[_0x45b098];return _0x341ce7;};'use strict';var _=require('lodash');var util=require(_0xd514('0x0'));var logger=require(_0xd514('0x1'))(_0xd514('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd514('0x3'));var attributes=require(_0xd514('0x4'));module['exports']=function(_0x3c2163,_0x559995){return _0x3c2163[_0xd514('0x5')](_0xd514('0x6'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':_0xd514('0x7'),'fields':[_0xd514('0x7')]}],'timestamps':!![]});};
\ No newline at end of file
index 7651c6d..2af80eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22f4=['jayson/promise','client','http','request','info','MailQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MailQueueReport,\x20%s,\x20%s','message','request\x20sent','result','catch','CreateMailQueueReport','MailQueueReport','create','options','raw','then','debug','UpdateMailQueueReport','update','body','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x31d3a7,_0x45d710){var _0x39c032=function(_0x549f95){while(--_0x549f95){_0x31d3a7['push'](_0x31d3a7['shift']());}};_0x39c032(++_0x45d710);}(_0x22f4,0xc8));var _0x422f=function(_0x5ee3d3,_0x537c30){_0x5ee3d3=_0x5ee3d3-0x0;var _0x4b272f=_0x22f4[_0x5ee3d3];return _0x4b272f;};'use strict';var _=require(_0x422f('0x0'));var util=require(_0x422f('0x1'));var moment=require(_0x422f('0x2'));var BPromise=require(_0x422f('0x3'));var rs=require(_0x422f('0x4'));var fs=require('fs');var Redis=require(_0x422f('0x5'));var db=require(_0x422f('0x6'))['db'];var utils=require(_0x422f('0x7'));var logger=require('../../config/logger')(_0x422f('0x8'));var config=require(_0x422f('0x9'));var jayson=require(_0x422f('0xa'));var client=jayson[_0x422f('0xb')][_0x422f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5be9e7,_0x552761,_0x1bfc22){return new BPromise(function(_0x30541a,_0x2c2cb9){return client[_0x422f('0xd')](_0x5be9e7,_0x1bfc22)['then'](function(_0x455666){logger[_0x422f('0xe')]('MailQueueReport,\x20%s,\x20%s',_0x552761,'request\x20sent');logger['debug'](_0x422f('0xf'),_0x552761,'request\x20sent',JSON[_0x422f('0x10')](_0x455666));if(_0x455666[_0x422f('0x11')]){if(_0x455666[_0x422f('0x11')][_0x422f('0x12')]===0x1f4){logger['error'](_0x422f('0x13'),_0x552761,_0x455666[_0x422f('0x11')][_0x422f('0x14')]);return _0x2c2cb9(_0x455666['error'][_0x422f('0x14')]);}logger['error'](_0x422f('0x13'),_0x552761,_0x455666[_0x422f('0x11')][_0x422f('0x14')]);return _0x30541a(_0x455666[_0x422f('0x11')][_0x422f('0x14')]);}else{logger[_0x422f('0xe')](_0x422f('0x13'),_0x552761,_0x422f('0x15'));_0x30541a(_0x455666[_0x422f('0x16')][_0x422f('0x14')]);}})[_0x422f('0x17')](function(_0x31c745){logger[_0x422f('0x11')](_0x422f('0x13'),_0x552761,_0x31c745);_0x2c2cb9(_0x31c745);});});}exports[_0x422f('0x18')]=function(_0x1f82d1){var _0x41b500=this;return new Promise(function(_0x57a328,_0x36d2c2){return db[_0x422f('0x19')][_0x422f('0x1a')](_0x1f82d1['body'],{'raw':_0x1f82d1[_0x422f('0x1b')]?_0x1f82d1['options'][_0x422f('0x1c')]===undefined?!![]:![]:!![]})[_0x422f('0x1d')](function(_0x15fa74){logger[_0x422f('0xe')](_0x422f('0x18'),_0x1f82d1);logger[_0x422f('0x1e')](_0x422f('0x18'),_0x1f82d1,JSON[_0x422f('0x10')](_0x15fa74));_0x57a328(_0x15fa74);})[_0x422f('0x17')](function(_0x1b1590){logger[_0x422f('0x11')](_0x422f('0x18'),_0x1b1590[_0x422f('0x14')],_0x1f82d1);_0x36d2c2(_0x41b500['error'](0x1f4,_0x1b1590['message']));});});};exports[_0x422f('0x1f')]=function(_0x3ea98d){var _0x3d52a1=this;return new Promise(function(_0x58008c,_0x2a7a6d){return db[_0x422f('0x19')][_0x422f('0x20')](_0x3ea98d[_0x422f('0x21')],{'raw':_0x3ea98d[_0x422f('0x1b')]?_0x3ea98d[_0x422f('0x1b')][_0x422f('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ea98d[_0x422f('0x1b')]?_0x3ea98d['options'][_0x422f('0x22')]||null:null,'attributes':_0x3ea98d['options']?_0x3ea98d[_0x422f('0x1b')]['attributes']||null:null,'limit':_0x3ea98d[_0x422f('0x1b')]?_0x3ea98d[_0x422f('0x1b')]['limit']||null:null})[_0x422f('0x1d')](function(_0x3d7b86){logger[_0x422f('0xe')](_0x422f('0x1f'),_0x3ea98d);logger[_0x422f('0x1e')](_0x422f('0x1f'),_0x3ea98d,JSON[_0x422f('0x10')](_0x3d7b86));_0x58008c(_0x3d7b86);})['catch'](function(_0x461a39){logger['error']('UpdateMailQueueReport',_0x461a39[_0x422f('0x14')],_0x3ea98d);_0x2a7a6d(_0x3d52a1[_0x422f('0x11')](0x1f4,_0x461a39[_0x422f('0x14')]));});});};
\ No newline at end of file
+var _0x1636=['MailQueueReport,\x20%s,\x20%s','result','catch','CreateMailQueueReport','create','body','options','raw','UpdateMailQueueReport','MailQueueReport','update','attributes','limit','lodash','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug','MailQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x350a47,_0x1dd7ea){var _0x5cabeb=function(_0x1c0dbf){while(--_0x1c0dbf){_0x350a47['push'](_0x350a47['shift']());}};_0x5cabeb(++_0x1dd7ea);}(_0x1636,0x1b1));var _0x6163=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x1636[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x6163('0x0'));var util=require('util');var moment=require(_0x6163('0x1'));var BPromise=require('bluebird');var rs=require(_0x6163('0x2'));var fs=require('fs');var Redis=require(_0x6163('0x3'));var db=require(_0x6163('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6163('0x5'));var config=require(_0x6163('0x6'));var jayson=require(_0x6163('0x7'));var client=jayson['client'][_0x6163('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3705ec,_0x3c2b1a,_0x417353){return new BPromise(function(_0x332d4e,_0x29f3c3){return client['request'](_0x3705ec,_0x417353)[_0x6163('0x9')](function(_0x203021){logger[_0x6163('0xa')]('MailQueueReport,\x20%s,\x20%s',_0x3c2b1a,_0x6163('0xb'));logger[_0x6163('0xc')](_0x6163('0xd'),_0x3c2b1a,'request\x20sent',JSON[_0x6163('0xe')](_0x203021));if(_0x203021['error']){if(_0x203021[_0x6163('0xf')]['code']===0x1f4){logger[_0x6163('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3c2b1a,_0x203021[_0x6163('0xf')][_0x6163('0x10')]);return _0x29f3c3(_0x203021[_0x6163('0xf')][_0x6163('0x10')]);}logger[_0x6163('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3c2b1a,_0x203021[_0x6163('0xf')][_0x6163('0x10')]);return _0x332d4e(_0x203021['error'][_0x6163('0x10')]);}else{logger['info'](_0x6163('0x11'),_0x3c2b1a,_0x6163('0xb'));_0x332d4e(_0x203021[_0x6163('0x12')][_0x6163('0x10')]);}})[_0x6163('0x13')](function(_0x250e6e){logger['error'](_0x6163('0x11'),_0x3c2b1a,_0x250e6e);_0x29f3c3(_0x250e6e);});});}exports[_0x6163('0x14')]=function(_0x2500e0){var _0x47d9b5=this;return new Promise(function(_0x1dffc4,_0x393ef9){return db['MailQueueReport'][_0x6163('0x15')](_0x2500e0[_0x6163('0x16')],{'raw':_0x2500e0[_0x6163('0x17')]?_0x2500e0['options'][_0x6163('0x18')]===undefined?!![]:![]:!![]})[_0x6163('0x9')](function(_0x36b795){logger[_0x6163('0xa')](_0x6163('0x14'),_0x2500e0);logger[_0x6163('0xc')]('CreateMailQueueReport',_0x2500e0,JSON[_0x6163('0xe')](_0x36b795));_0x1dffc4(_0x36b795);})[_0x6163('0x13')](function(_0x2c6ae2){logger['error'](_0x6163('0x14'),_0x2c6ae2[_0x6163('0x10')],_0x2500e0);_0x393ef9(_0x47d9b5[_0x6163('0xf')](0x1f4,_0x2c6ae2[_0x6163('0x10')]));});});};exports[_0x6163('0x19')]=function(_0xe7883e){var _0x2c7a45=this;return new Promise(function(_0x51e53c,_0x5f5de3){return db[_0x6163('0x1a')][_0x6163('0x1b')](_0xe7883e[_0x6163('0x16')],{'raw':_0xe7883e[_0x6163('0x17')]?_0xe7883e[_0x6163('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe7883e['options']?_0xe7883e[_0x6163('0x17')]['where']||null:null,'attributes':_0xe7883e[_0x6163('0x17')]?_0xe7883e[_0x6163('0x17')][_0x6163('0x1c')]||null:null,'limit':_0xe7883e[_0x6163('0x17')]?_0xe7883e['options'][_0x6163('0x1d')]||null:null})[_0x6163('0x9')](function(_0x48168d){logger[_0x6163('0xa')](_0x6163('0x19'),_0xe7883e);logger['debug'](_0x6163('0x19'),_0xe7883e,JSON[_0x6163('0xe')](_0x48168d));_0x51e53c(_0x48168d);})['catch'](function(_0x30695b){logger[_0x6163('0xf')]('UpdateMailQueueReport',_0x30695b[_0x6163('0x10')],_0xe7883e);_0x5f5de3(_0x2c7a45['error'](0x1f4,_0x30695b[_0x6163('0x10')]));});});};
\ No newline at end of file
index f01cec3..c2d65d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['path','connect-timeout','Router','multer','util'];(function(_0x1c8cc6,_0x411e5c){var _0x522936=function(_0x38d044){while(--_0x38d044){_0x1c8cc6['push'](_0x1c8cc6['shift']());}};_0x522936(++_0x411e5c);}(_0x4c60,0xc1));var _0x04c6=function(_0x9049e6,_0x419afe){_0x9049e6=_0x9049e6-0x0;var _0x45555f=_0x4c60[_0x9049e6];return _0x45555f;};'use strict';var multer=require(_0x04c6('0x0'));var util=require(_0x04c6('0x1'));var path=require(_0x04c6('0x2'));var timeout=require(_0x04c6('0x3'));var express=require('express');var router=express[_0x04c6('0x4')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module['exports']=router;
\ No newline at end of file
+var _0x2b47=['path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','exports','multer'];(function(_0x36403f,_0x3fb52a){var _0x1ca1cf=function(_0x4e2455){while(--_0x4e2455){_0x36403f['push'](_0x36403f['shift']());}};_0x1ca1cf(++_0x3fb52a);}(_0x2b47,0x177));var _0x72b4=function(_0x5d0db6,_0x40828f){_0x5d0db6=_0x5d0db6-0x0;var _0x267c66=_0x2b47[_0x5d0db6];return _0x267c66;};'use strict';var multer=require(_0x72b4('0x0'));var util=require('util');var path=require(_0x72b4('0x1'));var timeout=require(_0x72b4('0x2'));var express=require(_0x72b4('0x3'));var router=express['Router']();var auth=require(_0x72b4('0x4'));var interaction=require(_0x72b4('0x5'));var config=require(_0x72b4('0x6'));module[_0x72b4('0x7')]=router;
\ No newline at end of file
index e044a25..873f32b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c00=['BOOLEAN','username','INTEGER','INBOX','sequelize','exports','STRING'];(function(_0x26cdcb,_0x53ad2f){var _0x3f6347=function(_0x35a7c9){while(--_0x35a7c9){_0x26cdcb['push'](_0x26cdcb['shift']());}};_0x3f6347(++_0x53ad2f);}(_0x5c00,0x17e));var _0x05c0=function(_0x2bde9f,_0x3ccd1b){_0x2bde9f=_0x2bde9f-0x0;var _0x3e8886=_0x5c00[_0x2bde9f];return _0x3e8886;};'use strict';var Sequelize=require(_0x05c0('0x0'));module[_0x05c0('0x1')]={'description':{'type':Sequelize[_0x05c0('0x2')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x05c0('0x3')],'defaultValue':!![]},'user':{'type':Sequelize['STRING'],'unique':_0x05c0('0x4')},'password':{'type':Sequelize[_0x05c0('0x2')]},'port':{'type':Sequelize[_0x05c0('0x5')]},'tls':{'type':Sequelize[_0x05c0('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0x05c0('0x6')},'connTimeout':{'type':Sequelize[_0x05c0('0x5')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x05c0('0x5')],'defaultValue':0x5},'service':{'type':Sequelize[_0x05c0('0x2')]}};
\ No newline at end of file
+var _0x9e0d=['BOOLEAN','sequelize','exports','STRING','username','INTEGER'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x9e0d,0xf7));var _0xd9e0=function(_0x5dd789,_0x4a15c2){_0x5dd789=_0x5dd789-0x0;var _0x259a41=_0x9e0d[_0x5dd789];return _0x259a41;};'use strict';var Sequelize=require(_0xd9e0('0x0'));module[_0xd9e0('0x1')]={'description':{'type':Sequelize[_0xd9e0('0x2')]},'host':{'type':Sequelize[_0xd9e0('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xd9e0('0x2')],'unique':_0xd9e0('0x3')},'password':{'type':Sequelize[_0xd9e0('0x2')]},'port':{'type':Sequelize[_0xd9e0('0x4')]},'tls':{'type':Sequelize[_0xd9e0('0x5')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xd9e0('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xd9e0('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0xd9e0('0x2')]}};
\ No newline at end of file
index cfe1190..a2f5e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0269=['request-promise','./mailServerIn.attributes','exports','define','MailServerIn','lodash','../../config/logger','moment'];(function(_0x484fc9,_0x4598aa){var _0x89aa01=function(_0x5256e1){while(--_0x5256e1){_0x484fc9['push'](_0x484fc9['shift']());}};_0x89aa01(++_0x4598aa);}(_0x0269,0x135));var _0x9026=function(_0x23727d,_0x2ff1c3){_0x23727d=_0x23727d-0x0;var _0x526c9d=_0x0269[_0x23727d];return _0x526c9d;};'use strict';var _=require(_0x9026('0x0'));var util=require('util');var logger=require(_0x9026('0x1'))('api');var moment=require(_0x9026('0x2'));var BPromise=require('bluebird');var rp=require(_0x9026('0x3'));var attributes=require(_0x9026('0x4'));module[_0x9026('0x5')]=function(_0xa3ba06,_0x5e9212){return _0xa3ba06[_0x9026('0x6')](_0x9026('0x7'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b59=['./mailServerIn.attributes','define','MailServerIn','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5d0354,_0x4cfec4){var _0x367575=function(_0x58a202){while(--_0x58a202){_0x5d0354['push'](_0x5d0354['shift']());}};_0x367575(++_0x4cfec4);}(_0x3b59,0x9c));var _0x93b5=function(_0x398b34,_0xfedab3){_0x398b34=_0x398b34-0x0;var _0x518a80=_0x3b59[_0x398b34];return _0x518a80;};'use strict';var _=require(_0x93b5('0x0'));var util=require(_0x93b5('0x1'));var logger=require(_0x93b5('0x2'))(_0x93b5('0x3'));var moment=require(_0x93b5('0x4'));var BPromise=require(_0x93b5('0x5'));var rp=require('request-promise');var attributes=require(_0x93b5('0x6'));module['exports']=function(_0x3c6e23,_0x33930f){return _0x3c6e23[_0x93b5('0x7')](_0x93b5('0x8'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf182d1..8b494e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf440=['catch','GetMailServerIn','MailServerIn','options','attributes','limit','include','model','map','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','MailServerIn,\x20%s,\x20%s','message'];(function(_0x4999db,_0x4f350b){var _0x1c4c71=function(_0x395b5b){while(--_0x395b5b){_0x4999db['push'](_0x4999db['shift']());}};_0x1c4c71(++_0x4f350b);}(_0xf440,0x1ea));var _0x0f44=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xf440[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x0f44('0x0'));var util=require(_0x0f44('0x1'));var moment=require('moment');var BPromise=require(_0x0f44('0x2'));var rs=require(_0x0f44('0x3'));var fs=require('fs');var Redis=require(_0x0f44('0x4'));var db=require(_0x0f44('0x5'))['db'];var utils=require(_0x0f44('0x6'));var logger=require('../../config/logger')(_0x0f44('0x7'));var config=require(_0x0f44('0x8'));var jayson=require(_0x0f44('0x9'));var client=jayson[_0x0f44('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23036f,_0x25f828,_0x4b43eb){return new BPromise(function(_0x597b26,_0x3da012){return client['request'](_0x23036f,_0x4b43eb)[_0x0f44('0xb')](function(_0x5640ac){logger[_0x0f44('0xc')]('MailServerIn,\x20%s,\x20%s',_0x25f828,_0x0f44('0xd'));logger[_0x0f44('0xe')](_0x0f44('0xf'),_0x25f828,_0x0f44('0xd'),JSON['stringify'](_0x5640ac));if(_0x5640ac[_0x0f44('0x10')]){if(_0x5640ac[_0x0f44('0x10')][_0x0f44('0x11')]===0x1f4){logger[_0x0f44('0x10')](_0x0f44('0x12'),_0x25f828,_0x5640ac['error'][_0x0f44('0x13')]);return _0x3da012(_0x5640ac[_0x0f44('0x10')][_0x0f44('0x13')]);}logger[_0x0f44('0x10')](_0x0f44('0x12'),_0x25f828,_0x5640ac[_0x0f44('0x10')][_0x0f44('0x13')]);return _0x597b26(_0x5640ac['error'][_0x0f44('0x13')]);}else{logger['info'](_0x0f44('0x12'),_0x25f828,_0x0f44('0xd'));_0x597b26(_0x5640ac['result'][_0x0f44('0x13')]);}})[_0x0f44('0x14')](function(_0x5bb2f2){logger[_0x0f44('0x10')](_0x0f44('0x12'),_0x25f828,_0x5bb2f2);_0x3da012(_0x5bb2f2);});});}exports[_0x0f44('0x15')]=function(_0x59d211){var _0x231f7a=this;return new Promise(function(_0x59391e,_0x4f38f7){return db[_0x0f44('0x16')]['findAll']({'raw':_0x59d211[_0x0f44('0x17')]?_0x59d211[_0x0f44('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x59d211[_0x0f44('0x17')]?_0x59d211['options']['where']||null:null,'attributes':_0x59d211[_0x0f44('0x17')]?_0x59d211[_0x0f44('0x17')][_0x0f44('0x18')]||null:null,'limit':_0x59d211[_0x0f44('0x17')]?_0x59d211[_0x0f44('0x17')][_0x0f44('0x19')]||null:null,'include':_0x59d211[_0x0f44('0x17')]?_0x59d211['options'][_0x0f44('0x1a')]?_['map'](_0x59d211[_0x0f44('0x17')]['include'],function(_0x3f9baa){return{'model':db[_0x3f9baa[_0x0f44('0x1b')]],'as':_0x3f9baa['as'],'attributes':_0x3f9baa[_0x0f44('0x18')],'include':_0x3f9baa['include']?_[_0x0f44('0x1c')](_0x3f9baa[_0x0f44('0x1a')],function(_0x2da3ea){return{'model':db[_0x2da3ea[_0x0f44('0x1b')]],'as':_0x2da3ea['as'],'attributes':_0x2da3ea[_0x0f44('0x18')],'include':_0x2da3ea['include']?_[_0x0f44('0x1c')](_0x2da3ea[_0x0f44('0x1a')],function(_0xc07d44){return{'model':db[_0xc07d44['model']],'as':_0xc07d44['as'],'attributes':_0xc07d44[_0x0f44('0x18')]};}):[]};}):[]};}):[]:[]})[_0x0f44('0xb')](function(_0x5e714c){logger['info'](_0x0f44('0x15'),_0x59d211);logger[_0x0f44('0xe')](_0x0f44('0x15'),_0x59d211,JSON[_0x0f44('0x1d')](_0x5e714c));_0x59391e(_0x5e714c);})[_0x0f44('0x14')](function(_0x126204){logger['error'](_0x0f44('0x15'),_0x126204[_0x0f44('0x13')],_0x59d211);_0x4f38f7(_0x231f7a[_0x0f44('0x10')](0x1f4,_0x126204[_0x0f44('0x13')]));});});};
\ No newline at end of file
+var _0xb2fe=['raw','where','attributes','limit','map','model','include','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','MailServerIn,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','catch','GetMailServerIn','MailServerIn','findAll','options'];(function(_0x22ac47,_0x396e8d){var _0x3566cb=function(_0xe835b3){while(--_0xe835b3){_0x22ac47['push'](_0x22ac47['shift']());}};_0x3566cb(++_0x396e8d);}(_0xb2fe,0xfc));var _0xeb2f=function(_0x9b2bb0,_0x3965b1){_0x9b2bb0=_0x9b2bb0-0x0;var _0x2cdb3b=_0xb2fe[_0x9b2bb0];return _0x2cdb3b;};'use strict';var _=require(_0xeb2f('0x0'));var util=require(_0xeb2f('0x1'));var moment=require(_0xeb2f('0x2'));var BPromise=require(_0xeb2f('0x3'));var rs=require(_0xeb2f('0x4'));var fs=require('fs');var Redis=require(_0xeb2f('0x5'));var db=require(_0xeb2f('0x6'))['db'];var utils=require(_0xeb2f('0x7'));var logger=require(_0xeb2f('0x8'))(_0xeb2f('0x9'));var config=require(_0xeb2f('0xa'));var jayson=require(_0xeb2f('0xb'));var client=jayson[_0xeb2f('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x567ce3,_0x5ecb9a,_0x368ae4){return new BPromise(function(_0x5a73e4,_0x11e61a){return client[_0xeb2f('0xd')](_0x567ce3,_0x368ae4)[_0xeb2f('0xe')](function(_0x4fde4e){logger['info'](_0xeb2f('0xf'),_0x5ecb9a,'request\x20sent');logger[_0xeb2f('0x10')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x5ecb9a,_0xeb2f('0x11'),JSON[_0xeb2f('0x12')](_0x4fde4e));if(_0x4fde4e['error']){if(_0x4fde4e[_0xeb2f('0x13')]['code']===0x1f4){logger[_0xeb2f('0x13')](_0xeb2f('0xf'),_0x5ecb9a,_0x4fde4e['error']['message']);return _0x11e61a(_0x4fde4e[_0xeb2f('0x13')][_0xeb2f('0x14')]);}logger[_0xeb2f('0x13')](_0xeb2f('0xf'),_0x5ecb9a,_0x4fde4e[_0xeb2f('0x13')]['message']);return _0x5a73e4(_0x4fde4e[_0xeb2f('0x13')][_0xeb2f('0x14')]);}else{logger[_0xeb2f('0x15')](_0xeb2f('0xf'),_0x5ecb9a,'request\x20sent');_0x5a73e4(_0x4fde4e[_0xeb2f('0x16')][_0xeb2f('0x14')]);}})[_0xeb2f('0x17')](function(_0x47a2cf){logger[_0xeb2f('0x13')](_0xeb2f('0xf'),_0x5ecb9a,_0x47a2cf);_0x11e61a(_0x47a2cf);});});}exports[_0xeb2f('0x18')]=function(_0x235bc8){var _0x12bd6e=this;return new Promise(function(_0x4e3708,_0x260b06){return db[_0xeb2f('0x19')][_0xeb2f('0x1a')]({'raw':_0x235bc8['options']?_0x235bc8[_0xeb2f('0x1b')][_0xeb2f('0x1c')]===undefined?!![]:![]:!![],'where':_0x235bc8[_0xeb2f('0x1b')]?_0x235bc8[_0xeb2f('0x1b')][_0xeb2f('0x1d')]||null:null,'attributes':_0x235bc8[_0xeb2f('0x1b')]?_0x235bc8[_0xeb2f('0x1b')][_0xeb2f('0x1e')]||null:null,'limit':_0x235bc8['options']?_0x235bc8[_0xeb2f('0x1b')][_0xeb2f('0x1f')]||null:null,'include':_0x235bc8[_0xeb2f('0x1b')]?_0x235bc8[_0xeb2f('0x1b')]['include']?_[_0xeb2f('0x20')](_0x235bc8['options']['include'],function(_0x551eea){return{'model':db[_0x551eea[_0xeb2f('0x21')]],'as':_0x551eea['as'],'attributes':_0x551eea[_0xeb2f('0x1e')],'include':_0x551eea[_0xeb2f('0x22')]?_[_0xeb2f('0x20')](_0x551eea[_0xeb2f('0x22')],function(_0x336452){return{'model':db[_0x336452[_0xeb2f('0x21')]],'as':_0x336452['as'],'attributes':_0x336452[_0xeb2f('0x1e')],'include':_0x336452[_0xeb2f('0x22')]?_['map'](_0x336452[_0xeb2f('0x22')],function(_0x457010){return{'model':db[_0x457010['model']],'as':_0x457010['as'],'attributes':_0x457010[_0xeb2f('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xeb2f('0xe')](function(_0x2d344a){logger[_0xeb2f('0x15')](_0xeb2f('0x18'),_0x235bc8);logger[_0xeb2f('0x10')](_0xeb2f('0x18'),_0x235bc8,JSON[_0xeb2f('0x12')](_0x2d344a));_0x4e3708(_0x2d344a);})['catch'](function(_0x223fac){logger['error']('GetMailServerIn',_0x223fac[_0xeb2f('0x14')],_0x235bc8);_0x260b06(_0x12bd6e['error'](0x1f4,_0x223fac[_0xeb2f('0x14')]));});});};
\ No newline at end of file
index bc3325c..56604cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf5b=['put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./mailServerOut.controller','get','isAuthenticated','index','post','create'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xbf5b,0x1ce));var _0xbbf5=function(_0x56c37d,_0x486618){_0x56c37d=_0x56c37d-0x0;var _0x120476=_0xbf5b[_0x56c37d];return _0x120476;};'use strict';var multer=require(_0xbbf5('0x0'));var util=require('util');var path=require(_0xbbf5('0x1'));var timeout=require(_0xbbf5('0x2'));var express=require(_0xbbf5('0x3'));var router=express[_0xbbf5('0x4')]();var auth=require(_0xbbf5('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbbf5('0x6'));var controller=require(_0xbbf5('0x7'));router[_0xbbf5('0x8')]('/',auth[_0xbbf5('0x9')](),controller[_0xbbf5('0xa')]);router[_0xbbf5('0x8')]('/:id',auth[_0xbbf5('0x9')](),controller['show']);router[_0xbbf5('0xb')]('/',auth[_0xbbf5('0x9')](),controller[_0xbbf5('0xc')]);router[_0xbbf5('0xd')](_0xbbf5('0xe'),auth['isAuthenticated'](),controller[_0xbbf5('0xf')]);router[_0xbbf5('0x10')](_0xbbf5('0xe'),auth[_0xbbf5('0x9')](),controller[_0xbbf5('0x11')]);module[_0xbbf5('0x12')]=router;
\ No newline at end of file
+var _0x2656=['express','Router','../../components/auth/service','../../config/environment','./mailServerOut.controller','get','isAuthenticated','/:id','show','put','delete','destroy','exports','util','path','connect-timeout'];(function(_0x1acf77,_0x3ec597){var _0x4bddb1=function(_0x45e602){while(--_0x45e602){_0x1acf77['push'](_0x1acf77['shift']());}};_0x4bddb1(++_0x3ec597);}(_0x2656,0x8d));var _0x6265=function(_0x367e5b,_0x5721e4){_0x367e5b=_0x367e5b-0x0;var _0x4b909e=_0x2656[_0x367e5b];return _0x4b909e;};'use strict';var multer=require('multer');var util=require(_0x6265('0x0'));var path=require(_0x6265('0x1'));var timeout=require(_0x6265('0x2'));var express=require(_0x6265('0x3'));var router=express[_0x6265('0x4')]();var auth=require(_0x6265('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6265('0x6'));var controller=require(_0x6265('0x7'));router[_0x6265('0x8')]('/',auth[_0x6265('0x9')](),controller['index']);router[_0x6265('0x8')](_0x6265('0xa'),auth['isAuthenticated'](),controller[_0x6265('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x6265('0xc')](_0x6265('0xa'),auth[_0x6265('0x9')](),controller['update']);router[_0x6265('0xd')]('/:id',auth[_0x6265('0x9')](),controller[_0x6265('0xe')]);module[_0x6265('0xf')]=router;
\ No newline at end of file
index 37370c4..c6dc1f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ae6=['STRING','INTEGER','BOOLEAN','sequelize','exports'];(function(_0xf82b1b,_0x5fc61a){var _0x36bc9a=function(_0x5d64b4){while(--_0x5d64b4){_0xf82b1b['push'](_0xf82b1b['shift']());}};_0x36bc9a(++_0x5fc61a);}(_0x9ae6,0xda));var _0x69ae=function(_0x8330a2,_0x177ecc){_0x8330a2=_0x8330a2-0x0;var _0x5243c6=_0x9ae6[_0x8330a2];return _0x5243c6;};'use strict';var Sequelize=require(_0x69ae('0x0'));module[_0x69ae('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x69ae('0x2')]},'user':{'type':Sequelize[_0x69ae('0x2')]},'pass':{'type':Sequelize[_0x69ae('0x2')]},'port':{'type':Sequelize[_0x69ae('0x3')]},'secure':{'type':Sequelize[_0x69ae('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x69ae('0x2')]},'authentication':{'type':Sequelize[_0x69ae('0x4')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc8d7=['sequelize','exports','STRING','BOOLEAN'];(function(_0x946518,_0x22816f){var _0x909b69=function(_0x2fa5a4){while(--_0x2fa5a4){_0x946518['push'](_0x946518['shift']());}};_0x909b69(++_0x22816f);}(_0xc8d7,0xf8));var _0x7c8d=function(_0x4410ae,_0x2094d4){_0x4410ae=_0x4410ae-0x0;var _0x19cc05=_0xc8d7[_0x4410ae];return _0x19cc05;};'use strict';var Sequelize=require(_0x7c8d('0x0'));module[_0x7c8d('0x1')]={'description':{'type':Sequelize[_0x7c8d('0x2')]},'host':{'type':Sequelize[_0x7c8d('0x2')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x7c8d('0x2')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0x7c8d('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0x7c8d('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 79c3ea5..37cea28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ac=['util','path','to-csv','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','MailServerOut','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','add','day','merge','filter','map','type','key','field','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x3a233b,_0x5a356c){var _0x5d5f43=function(_0x31344e){while(--_0x31344e){_0x3a233b['push'](_0x3a233b['shift']());}};_0x5d5f43(++_0x5a356c);}(_0x32ac,0x91));var _0xc32a=function(_0x3cf2da,_0x579521){_0x3cf2da=_0x3cf2da-0x0;var _0x833c37=_0x32ac[_0x3cf2da];return _0x833c37;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xc32a('0x0'));var rimraf=require(_0xc32a('0x1'));var zipdir=require(_0xc32a('0x2'));var jsonpatch=require(_0xc32a('0x3'));var rp=require(_0xc32a('0x4'));var moment=require(_0xc32a('0x5'));var BPromise=require(_0xc32a('0x6'));var Mustache=require('mustache');var util=require(_0xc32a('0x7'));var path=require(_0xc32a('0x8'));var sox=require('sox');var csv=require(_0xc32a('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xc32a('0xa'));var squel=require(_0xc32a('0xb'));var crypto=require(_0xc32a('0xc'));var jsforce=require(_0xc32a('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc32a('0xe'));var Papa=require('papaparse');var Redis=require(_0xc32a('0xf'));var qs=require(_0xc32a('0x10'));var logger=require(_0xc32a('0x11'))('api');var utils=require(_0xc32a('0x12'));var config=require(_0xc32a('0x13'));var db=require(_0xc32a('0x14'))['db'];function respondWithStatusCode(_0xcc2d06,_0x441447){_0x441447=_0x441447||0xcc;return function(_0x19894c){if(_0x19894c){return _0xcc2d06[_0xc32a('0x15')](_0x441447);}return _0xcc2d06[_0xc32a('0x16')](_0x441447)[_0xc32a('0x17')]();};}function respondWithResult(_0x146d36,_0x2d9c42){_0x2d9c42=_0x2d9c42||0xc8;return function(_0x470c27){if(_0x470c27){return _0x146d36['status'](_0x2d9c42)[_0xc32a('0x18')](_0x470c27);}};}function respondWithFilteredResult(_0x5b4326,_0x2c9fe9){return function(_0x4de344){if(_0x4de344){var _0x2988ef=_0x4de344[_0xc32a('0x19')],_0x64014=_0x2c9fe9['offset'],_0x429b58=_0x2c9fe9[_0xc32a('0x1a')]+_0x2c9fe9[_0xc32a('0x1b')],_0x279508;if(_0x429b58>=_0x2988ef){_0x429b58=_0x2988ef;_0x279508=0xc8;}else{_0x279508=0xce;}_0x5b4326[_0xc32a('0x16')](_0x279508);return _0x5b4326['set'](_0xc32a('0x1c'),_0x64014+'-'+_0x429b58+'/'+_0x2988ef)[_0xc32a('0x18')](_0x4de344);}return null;};}function patchUpdates(_0x200407){return function(_0x43b42a){try{jsonpatch[_0xc32a('0x1d')](_0x43b42a,_0x200407,!![]);}catch(_0xfb3cc6){return BPromise[_0xc32a('0x1e')](_0xfb3cc6);}return _0x43b42a[_0xc32a('0x1f')]();};}function saveUpdates(_0x30c17e,_0x4620a8){return function(_0x53ae74){if(_0x53ae74){return _0x53ae74[_0xc32a('0x20')](_0x30c17e)[_0xc32a('0x21')](function(_0x514f32){return _0x514f32;});}return null;};}function removeEntity(_0x573780,_0x5b3c79){return function(_0x505ad8){if(_0x505ad8){return _0x505ad8[_0xc32a('0x22')]()[_0xc32a('0x21')](function(){_0x573780[_0xc32a('0x16')](0xcc)[_0xc32a('0x17')]();});}};}function handleEntityNotFound(_0x3ad912,_0x1b72fc){return function(_0x44eda7){if(!_0x44eda7){_0x3ad912[_0xc32a('0x15')](0x194);}return _0x44eda7;};}function handleError(_0x27f24b,_0x42958c){_0x42958c=_0x42958c||0x1f4;return function(_0x373a0a){logger['error'](_0x373a0a[_0xc32a('0x23')]);if(_0x373a0a[_0xc32a('0x24')]){delete _0x373a0a[_0xc32a('0x24')];}_0x27f24b[_0xc32a('0x16')](_0x42958c)[_0xc32a('0x25')](_0x373a0a);};}exports[_0xc32a('0x26')]=function(_0x554b6d,_0x4021c1){var _0x2fb48={},_0x21ff6c={},_0x2bffaf={'count':0x0,'rows':[]};var _0x29b5cb=db[_0xc32a('0x27')][_0xc32a('0x28')];_0x21ff6c[_0xc32a('0x29')]=_[_0xc32a('0x2a')](_0x29b5cb);var _0x3207f5={'dateStart':_0x554b6d[_0xc32a('0x2b')]['dateStart'],'dateEnd':_0x554b6d[_0xc32a('0x2b')]['dateEnd']};delete _0x554b6d[_0xc32a('0x2b')][_0xc32a('0x2c')];delete _0x554b6d[_0xc32a('0x2b')][_0xc32a('0x2d')];_0x21ff6c['query']=_['keys'](_0x554b6d[_0xc32a('0x2b')]);_0x21ff6c['filters']=_[_0xc32a('0x2e')](_0x21ff6c[_0xc32a('0x29')],_0x21ff6c[_0xc32a('0x2b')]);_0x2fb48[_0xc32a('0x2f')]=_[_0xc32a('0x2e')](_0x21ff6c[_0xc32a('0x29')],qs[_0xc32a('0x30')](_0x554b6d[_0xc32a('0x2b')]['fields']));_0x2fb48[_0xc32a('0x2f')]=_0x2fb48[_0xc32a('0x2f')][_0xc32a('0x31')]?_0x2fb48[_0xc32a('0x2f')]:_0x21ff6c['model'];if(!_0x554b6d[_0xc32a('0x2b')][_0xc32a('0x32')](_0xc32a('0x33'))){_0x2fb48['limit']=qs[_0xc32a('0x1b')](_0x554b6d[_0xc32a('0x2b')][_0xc32a('0x1b')]);_0x2fb48['offset']=qs['offset'](_0x554b6d[_0xc32a('0x2b')][_0xc32a('0x1a')]);}_0x2fb48[_0xc32a('0x34')]=qs[_0xc32a('0x35')](_0x554b6d[_0xc32a('0x2b')][_0xc32a('0x35')]);_0x2fb48[_0xc32a('0x36')]=qs[_0xc32a('0x37')](_[_0xc32a('0x38')](_0x554b6d[_0xc32a('0x2b')],_0x21ff6c[_0xc32a('0x37')]));if(_0x3207f5[_0xc32a('0x2c')]){if(_0x3207f5['dateEnd']){_0x3207f5[_0xc32a('0x2d')]=moment(_0x3207f5['dateEnd'])[_0xc32a('0x39')](0x1,_0xc32a('0x3a'));}else{_0x3207f5['dateEnd']=moment(_0x3207f5[_0xc32a('0x2c')])['add'](0x1,_0xc32a('0x3a'));}_[_0xc32a('0x3b')](_0x2fb48[_0xc32a('0x36')],{'createdAt':{'$gte':_0x3207f5[_0xc32a('0x2c')],'$lte':_0x3207f5['dateEnd']}});}if(_0x554b6d[_0xc32a('0x2b')][_0xc32a('0x3c')]){_0x2fb48[_0xc32a('0x36')]=_['merge'](_0x2fb48[_0xc32a('0x36')],{'$or':_[_0xc32a('0x3d')](_0x29b5cb,function(_0x3b28ea){if(_0x3b28ea[_0xc32a('0x3e')][_0xc32a('0x3f')]!=='VIRTUAL'){var _0x33dbb5={};_0x33dbb5[_0x3b28ea[_0xc32a('0x40')]]={'$like':'%'+_0x554b6d[_0xc32a('0x2b')][_0xc32a('0x3c')]+'%'};return _0x33dbb5;}})});}_0x2fb48=_[_0xc32a('0x3b')]({},_0x2fb48,_0x554b6d['options']);var _0x35dadd={'where':_0x2fb48[_0xc32a('0x36')]};return db[_0xc32a('0x27')]['count'](_0x35dadd)[_0xc32a('0x21')](function(_0x1d5d74){_0x2bffaf['count']=_0x1d5d74;if(_0x554b6d['query'][_0xc32a('0x41')]){_0x2fb48['include']=[{'all':!![]}];}return db[_0xc32a('0x27')][_0xc32a('0x42')](_0x2fb48);})[_0xc32a('0x21')](function(_0x2d87e5){_0x2bffaf[_0xc32a('0x43')]=_0x2d87e5;return _0x2bffaf;})[_0xc32a('0x21')](respondWithFilteredResult(_0x4021c1,_0x2fb48))[_0xc32a('0x44')](handleError(_0x4021c1,null));};exports[_0xc32a('0x45')]=function(_0x2bd065,_0x193df7){var _0x29e273={'raw':!![],'where':{'id':_0x2bd065[_0xc32a('0x46')]['id']}},_0x3c223c={};_0x3c223c[_0xc32a('0x29')]=_['keys'](db[_0xc32a('0x27')]['rawAttributes']);_0x3c223c['query']=_[_0xc32a('0x2a')](_0x2bd065['query']);_0x3c223c['filters']=_[_0xc32a('0x2e')](_0x3c223c[_0xc32a('0x29')],_0x3c223c[_0xc32a('0x2b')]);_0x29e273[_0xc32a('0x2f')]=_[_0xc32a('0x2e')](_0x3c223c[_0xc32a('0x29')],qs[_0xc32a('0x30')](_0x2bd065[_0xc32a('0x2b')][_0xc32a('0x30')]));_0x29e273[_0xc32a('0x2f')]=_0x29e273[_0xc32a('0x2f')][_0xc32a('0x31')]?_0x29e273['attributes']:_0x3c223c['model'];if(_0x2bd065[_0xc32a('0x2b')]['includeAll']){_0x29e273[_0xc32a('0x47')]=[{'all':!![]}];}_0x29e273=_[_0xc32a('0x3b')]({},_0x29e273,_0x2bd065[_0xc32a('0x48')]);return db['MailServerOut'][_0xc32a('0x49')](_0x29e273)[_0xc32a('0x21')](handleEntityNotFound(_0x193df7,null))['then'](respondWithResult(_0x193df7,null))[_0xc32a('0x44')](handleError(_0x193df7,null));};exports[_0xc32a('0x4a')]=function(_0x538c63,_0xd5d22b){return db[_0xc32a('0x27')]['create'](_0x538c63[_0xc32a('0x4b')],{})[_0xc32a('0x21')](respondWithResult(_0xd5d22b,0xc9))[_0xc32a('0x44')](handleError(_0xd5d22b,null));};exports[_0xc32a('0x20')]=function(_0x536898,_0x4519de){if(_0x536898['body']['id']){delete _0x536898[_0xc32a('0x4b')]['id'];}return db[_0xc32a('0x27')][_0xc32a('0x49')]({'where':{'id':_0x536898[_0xc32a('0x46')]['id']}})['then'](handleEntityNotFound(_0x4519de,null))['then'](saveUpdates(_0x536898[_0xc32a('0x4b')],null))[_0xc32a('0x21')](respondWithResult(_0x4519de,null))[_0xc32a('0x44')](handleError(_0x4519de,null));};exports[_0xc32a('0x22')]=function(_0x1e69ae,_0x2c2bfd){return db['MailServerOut']['find']({'where':{'id':_0x1e69ae[_0xc32a('0x46')]['id']}})['then'](handleEntityNotFound(_0x2c2bfd,null))['then'](removeEntity(_0x2c2bfd,null))['catch'](handleError(_0x2c2bfd,null));};
\ No newline at end of file
+var _0x5e57=['sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','sendStatus','status','end','json','offset','limit','set','Content-Range','apply','reject','then','error','stack','name','send','index','MailServerOut','rawAttributes','model','keys','query','dateEnd','dateStart','intersection','attributes','length','nolimit','order','sort','where','filters','add','day','merge','filter','type','VIRTUAL','field','options','count','includeAll','include','findAll','rows','catch','params','fields','find','create','body','update','destroy','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path'];(function(_0x826c87,_0x4f721e){var _0x3143f5=function(_0x3acf10){while(--_0x3acf10){_0x826c87['push'](_0x826c87['shift']());}};_0x3143f5(++_0x4f721e);}(_0x5e57,0x8d));var _0x75e5=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x5e57[_0x42cae2];return _0x5f256f;};'use strict';var pdf=require(_0x75e5('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x75e5('0x1'));var zipdir=require(_0x75e5('0x2'));var jsonpatch=require(_0x75e5('0x3'));var rp=require(_0x75e5('0x4'));var moment=require(_0x75e5('0x5'));var BPromise=require(_0x75e5('0x6'));var Mustache=require(_0x75e5('0x7'));var util=require('util');var path=require(_0x75e5('0x8'));var sox=require(_0x75e5('0x9'));var csv=require(_0x75e5('0xa'));var ejs=require(_0x75e5('0xb'));var fs=require('fs');var _=require(_0x75e5('0xc'));var squel=require(_0x75e5('0xd'));var crypto=require(_0x75e5('0xe'));var jsforce=require(_0x75e5('0xf'));var deskjs=require(_0x75e5('0x10'));var toCsv=require(_0x75e5('0xa'));var querystring=require(_0x75e5('0x11'));var Papa=require(_0x75e5('0x12'));var Redis=require(_0x75e5('0x13'));var qs=require(_0x75e5('0x14'));var logger=require(_0x75e5('0x15'))(_0x75e5('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c0064,_0x554e8b){_0x554e8b=_0x554e8b||0xcc;return function(_0x315329){if(_0x315329){return _0x4c0064[_0x75e5('0x17')](_0x554e8b);}return _0x4c0064[_0x75e5('0x18')](_0x554e8b)[_0x75e5('0x19')]();};}function respondWithResult(_0x335111,_0x178f29){_0x178f29=_0x178f29||0xc8;return function(_0x28d02a){if(_0x28d02a){return _0x335111[_0x75e5('0x18')](_0x178f29)[_0x75e5('0x1a')](_0x28d02a);}};}function respondWithFilteredResult(_0x3ebfb0,_0x443ab3){return function(_0x20bb1a){if(_0x20bb1a){var _0x51a6a9=_0x20bb1a['count'],_0x49a22e=_0x443ab3['offset'],_0x44f2a4=_0x443ab3[_0x75e5('0x1b')]+_0x443ab3[_0x75e5('0x1c')],_0x260dde;if(_0x44f2a4>=_0x51a6a9){_0x44f2a4=_0x51a6a9;_0x260dde=0xc8;}else{_0x260dde=0xce;}_0x3ebfb0[_0x75e5('0x18')](_0x260dde);return _0x3ebfb0[_0x75e5('0x1d')](_0x75e5('0x1e'),_0x49a22e+'-'+_0x44f2a4+'/'+_0x51a6a9)[_0x75e5('0x1a')](_0x20bb1a);}return null;};}function patchUpdates(_0x438f2c){return function(_0x948d23){try{jsonpatch[_0x75e5('0x1f')](_0x948d23,_0x438f2c,!![]);}catch(_0x5b4b79){return BPromise[_0x75e5('0x20')](_0x5b4b79);}return _0x948d23['save']();};}function saveUpdates(_0x5cb0ac,_0x399c92){return function(_0x52f77c){if(_0x52f77c){return _0x52f77c['update'](_0x5cb0ac)[_0x75e5('0x21')](function(_0x23dd1b){return _0x23dd1b;});}return null;};}function removeEntity(_0x4e17e2,_0x252df2){return function(_0x2a445f){if(_0x2a445f){return _0x2a445f['destroy']()[_0x75e5('0x21')](function(){_0x4e17e2[_0x75e5('0x18')](0xcc)[_0x75e5('0x19')]();});}};}function handleEntityNotFound(_0x14482b,_0x3e1b52){return function(_0x1be097){if(!_0x1be097){_0x14482b['sendStatus'](0x194);}return _0x1be097;};}function handleError(_0x13c047,_0x20a435){_0x20a435=_0x20a435||0x1f4;return function(_0x4be630){logger[_0x75e5('0x22')](_0x4be630[_0x75e5('0x23')]);if(_0x4be630[_0x75e5('0x24')]){delete _0x4be630[_0x75e5('0x24')];}_0x13c047['status'](_0x20a435)[_0x75e5('0x25')](_0x4be630);};}exports[_0x75e5('0x26')]=function(_0x5b311f,_0x4ea1d2){var _0x55d97d={},_0x1abb17={},_0x26128d={'count':0x0,'rows':[]};var _0x28ab90=db[_0x75e5('0x27')][_0x75e5('0x28')];_0x1abb17[_0x75e5('0x29')]=_[_0x75e5('0x2a')](_0x28ab90);var _0xdf5d59={'dateStart':_0x5b311f[_0x75e5('0x2b')]['dateStart'],'dateEnd':_0x5b311f[_0x75e5('0x2b')][_0x75e5('0x2c')]};delete _0x5b311f['query'][_0x75e5('0x2d')];delete _0x5b311f[_0x75e5('0x2b')][_0x75e5('0x2c')];_0x1abb17[_0x75e5('0x2b')]=_[_0x75e5('0x2a')](_0x5b311f[_0x75e5('0x2b')]);_0x1abb17['filters']=_[_0x75e5('0x2e')](_0x1abb17['model'],_0x1abb17[_0x75e5('0x2b')]);_0x55d97d[_0x75e5('0x2f')]=_[_0x75e5('0x2e')](_0x1abb17[_0x75e5('0x29')],qs['fields'](_0x5b311f[_0x75e5('0x2b')]['fields']));_0x55d97d[_0x75e5('0x2f')]=_0x55d97d[_0x75e5('0x2f')][_0x75e5('0x30')]?_0x55d97d[_0x75e5('0x2f')]:_0x1abb17[_0x75e5('0x29')];if(!_0x5b311f['query']['hasOwnProperty'](_0x75e5('0x31'))){_0x55d97d['limit']=qs[_0x75e5('0x1c')](_0x5b311f['query'][_0x75e5('0x1c')]);_0x55d97d[_0x75e5('0x1b')]=qs['offset'](_0x5b311f[_0x75e5('0x2b')]['offset']);}_0x55d97d[_0x75e5('0x32')]=qs[_0x75e5('0x33')](_0x5b311f[_0x75e5('0x2b')][_0x75e5('0x33')]);_0x55d97d[_0x75e5('0x34')]=qs[_0x75e5('0x35')](_['pick'](_0x5b311f[_0x75e5('0x2b')],_0x1abb17[_0x75e5('0x35')]));if(_0xdf5d59[_0x75e5('0x2d')]){if(_0xdf5d59[_0x75e5('0x2c')]){_0xdf5d59['dateEnd']=moment(_0xdf5d59[_0x75e5('0x2c')])[_0x75e5('0x36')](0x1,_0x75e5('0x37'));}else{_0xdf5d59[_0x75e5('0x2c')]=moment(_0xdf5d59[_0x75e5('0x2d')])['add'](0x1,'day');}_[_0x75e5('0x38')](_0x55d97d[_0x75e5('0x34')],{'createdAt':{'$gte':_0xdf5d59['dateStart'],'$lte':_0xdf5d59[_0x75e5('0x2c')]}});}if(_0x5b311f[_0x75e5('0x2b')][_0x75e5('0x39')]){_0x55d97d['where']=_['merge'](_0x55d97d[_0x75e5('0x34')],{'$or':_['map'](_0x28ab90,function(_0x1552ce){if(_0x1552ce[_0x75e5('0x3a')]['key']!==_0x75e5('0x3b')){var _0x499b96={};_0x499b96[_0x1552ce[_0x75e5('0x3c')]]={'$like':'%'+_0x5b311f[_0x75e5('0x2b')]['filter']+'%'};return _0x499b96;}})});}_0x55d97d=_['merge']({},_0x55d97d,_0x5b311f[_0x75e5('0x3d')]);var _0x4dd1aa={'where':_0x55d97d['where']};return db[_0x75e5('0x27')][_0x75e5('0x3e')](_0x4dd1aa)['then'](function(_0x2ce774){_0x26128d[_0x75e5('0x3e')]=_0x2ce774;if(_0x5b311f[_0x75e5('0x2b')][_0x75e5('0x3f')]){_0x55d97d[_0x75e5('0x40')]=[{'all':!![]}];}return db[_0x75e5('0x27')][_0x75e5('0x41')](_0x55d97d);})['then'](function(_0x2f0350){_0x26128d[_0x75e5('0x42')]=_0x2f0350;return _0x26128d;})['then'](respondWithFilteredResult(_0x4ea1d2,_0x55d97d))[_0x75e5('0x43')](handleError(_0x4ea1d2,null));};exports['show']=function(_0x16ef5f,_0x4f4dd4){var _0x5994d9={'raw':!![],'where':{'id':_0x16ef5f[_0x75e5('0x44')]['id']}},_0x26afaf={};_0x26afaf[_0x75e5('0x29')]=_[_0x75e5('0x2a')](db[_0x75e5('0x27')][_0x75e5('0x28')]);_0x26afaf[_0x75e5('0x2b')]=_[_0x75e5('0x2a')](_0x16ef5f[_0x75e5('0x2b')]);_0x26afaf[_0x75e5('0x35')]=_[_0x75e5('0x2e')](_0x26afaf['model'],_0x26afaf['query']);_0x5994d9[_0x75e5('0x2f')]=_[_0x75e5('0x2e')](_0x26afaf['model'],qs[_0x75e5('0x45')](_0x16ef5f[_0x75e5('0x2b')][_0x75e5('0x45')]));_0x5994d9[_0x75e5('0x2f')]=_0x5994d9['attributes']['length']?_0x5994d9[_0x75e5('0x2f')]:_0x26afaf[_0x75e5('0x29')];if(_0x16ef5f[_0x75e5('0x2b')][_0x75e5('0x3f')]){_0x5994d9[_0x75e5('0x40')]=[{'all':!![]}];}_0x5994d9=_[_0x75e5('0x38')]({},_0x5994d9,_0x16ef5f[_0x75e5('0x3d')]);return db[_0x75e5('0x27')][_0x75e5('0x46')](_0x5994d9)[_0x75e5('0x21')](handleEntityNotFound(_0x4f4dd4,null))[_0x75e5('0x21')](respondWithResult(_0x4f4dd4,null))['catch'](handleError(_0x4f4dd4,null));};exports[_0x75e5('0x47')]=function(_0x4b54c6,_0x4ef421){return db['MailServerOut'][_0x75e5('0x47')](_0x4b54c6[_0x75e5('0x48')],{})[_0x75e5('0x21')](respondWithResult(_0x4ef421,0xc9))[_0x75e5('0x43')](handleError(_0x4ef421,null));};exports[_0x75e5('0x49')]=function(_0x53bde0,_0x411105){if(_0x53bde0[_0x75e5('0x48')]['id']){delete _0x53bde0[_0x75e5('0x48')]['id'];}return db[_0x75e5('0x27')]['find']({'where':{'id':_0x53bde0[_0x75e5('0x44')]['id']}})[_0x75e5('0x21')](handleEntityNotFound(_0x411105,null))[_0x75e5('0x21')](saveUpdates(_0x53bde0[_0x75e5('0x48')],null))[_0x75e5('0x21')](respondWithResult(_0x411105,null))[_0x75e5('0x43')](handleError(_0x411105,null));};exports[_0x75e5('0x4a')]=function(_0x429767,_0x1b7eba){return db['MailServerOut'][_0x75e5('0x46')]({'where':{'id':_0x429767[_0x75e5('0x44')]['id']}})[_0x75e5('0x21')](handleEntityNotFound(_0x1b7eba,null))['then'](removeEntity(_0x1b7eba,null))[_0x75e5('0x43')](handleError(_0x1b7eba,null));};
\ No newline at end of file
index c639065..704dbb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0689=['define','MailServerOut','util','api','moment','bluebird','request-promise','./mailServerOut.attributes','exports'];(function(_0x1c5142,_0x30ea72){var _0x1268cb=function(_0xaa2299){while(--_0xaa2299){_0x1c5142['push'](_0x1c5142['shift']());}};_0x1268cb(++_0x30ea72);}(_0x0689,0x161));var _0x9068=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0x0689[_0x45e98e];return _0x374dba;};'use strict';var _=require('lodash');var util=require(_0x9068('0x0'));var logger=require('../../config/logger')(_0x9068('0x1'));var moment=require(_0x9068('0x2'));var BPromise=require(_0x9068('0x3'));var rp=require(_0x9068('0x4'));var attributes=require(_0x9068('0x5'));module[_0x9068('0x6')]=function(_0x3b12f4,_0x1dbc6f){return _0x3b12f4[_0x9068('0x7')](_0x9068('0x8'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','./mailServerOut.attributes','exports','define','MailServerOut','lodash','util'];(function(_0x364cf8,_0x146b9b){var _0x6a59ee=function(_0x3d81eb){while(--_0x3d81eb){_0x364cf8['push'](_0x364cf8['shift']());}};_0x6a59ee(++_0x146b9b);}(_0x814b,0x1a2));var _0xb814=function(_0x2af29a,_0x4f44bc){_0x2af29a=_0x2af29a-0x0;var _0x5ef02f=_0x814b[_0x2af29a];return _0x5ef02f;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var attributes=require(_0xb814('0x6'));module[_0xb814('0x7')]=function(_0x258866,_0x4237bc){return _0x258866[_0xb814('0x8')](_0xb814('0x9'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 668be87..ae04d09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce56=['client','http','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','MailServerOut,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x458094,_0x9e67f2){var _0x471f3e=function(_0x4b691c){while(--_0x4b691c){_0x458094['push'](_0x458094['shift']());}};_0x471f3e(++_0x9e67f2);}(_0xce56,0x172));var _0x6ce5=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0xce56[_0x365be9];return _0x185c12;};'use strict';var _=require(_0x6ce5('0x0'));var util=require(_0x6ce5('0x1'));var moment=require(_0x6ce5('0x2'));var BPromise=require(_0x6ce5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ce5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6ce5('0x5'));var logger=require(_0x6ce5('0x6'))('rpc');var config=require(_0x6ce5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6ce5('0x8')][_0x6ce5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x557b68,_0x21413d,_0x46c9da){return new BPromise(function(_0x41e7be,_0x5c54d0){return client['request'](_0x557b68,_0x46c9da)['then'](function(_0x432995){logger['info'](_0x6ce5('0xa'),_0x21413d,_0x6ce5('0xb'));logger[_0x6ce5('0xc')](_0x6ce5('0xd'),_0x21413d,_0x6ce5('0xb'),JSON[_0x6ce5('0xe')](_0x432995));if(_0x432995[_0x6ce5('0xf')]){if(_0x432995[_0x6ce5('0xf')][_0x6ce5('0x10')]===0x1f4){logger[_0x6ce5('0xf')](_0x6ce5('0xa'),_0x21413d,_0x432995[_0x6ce5('0xf')]['message']);return _0x5c54d0(_0x432995[_0x6ce5('0xf')][_0x6ce5('0x11')]);}logger[_0x6ce5('0xf')](_0x6ce5('0xa'),_0x21413d,_0x432995[_0x6ce5('0xf')]['message']);return _0x41e7be(_0x432995[_0x6ce5('0xf')][_0x6ce5('0x11')]);}else{logger[_0x6ce5('0x12')](_0x6ce5('0xa'),_0x21413d,_0x6ce5('0xb'));_0x41e7be(_0x432995[_0x6ce5('0x13')][_0x6ce5('0x11')]);}})[_0x6ce5('0x14')](function(_0x30a218){logger[_0x6ce5('0xf')]('MailServerOut,\x20%s,\x20%s',_0x21413d,_0x30a218);_0x5c54d0(_0x30a218);});});}
\ No newline at end of file
+var _0x29be=['message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x19d350,_0x3c843f){var _0x3bfc8d=function(_0xd89003){while(--_0xd89003){_0x19d350['push'](_0x19d350['shift']());}};_0x3bfc8d(++_0x3c843f);}(_0x29be,0x70));var _0xe29b=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x29be[_0x42245d];return _0x4b211a;};'use strict';var _=require(_0xe29b('0x0'));var util=require(_0xe29b('0x1'));var moment=require(_0xe29b('0x2'));var BPromise=require(_0xe29b('0x3'));var rs=require(_0xe29b('0x4'));var fs=require('fs');var Redis=require(_0xe29b('0x5'));var db=require(_0xe29b('0x6'))['db'];var utils=require(_0xe29b('0x7'));var logger=require(_0xe29b('0x8'))('rpc');var config=require(_0xe29b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xe29b('0xa')][_0xe29b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27b88f,_0x15edc7,_0x28390b){return new BPromise(function(_0x13c431,_0x1bc4f7){return client[_0xe29b('0xc')](_0x27b88f,_0x28390b)[_0xe29b('0xd')](function(_0xd69b6b){logger[_0xe29b('0xe')](_0xe29b('0xf'),_0x15edc7,_0xe29b('0x10'));logger[_0xe29b('0x11')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x15edc7,_0xe29b('0x10'),JSON[_0xe29b('0x12')](_0xd69b6b));if(_0xd69b6b[_0xe29b('0x13')]){if(_0xd69b6b[_0xe29b('0x13')]['code']===0x1f4){logger[_0xe29b('0x13')](_0xe29b('0xf'),_0x15edc7,_0xd69b6b[_0xe29b('0x13')]['message']);return _0x1bc4f7(_0xd69b6b[_0xe29b('0x13')][_0xe29b('0x14')]);}logger[_0xe29b('0x13')](_0xe29b('0xf'),_0x15edc7,_0xd69b6b[_0xe29b('0x13')][_0xe29b('0x14')]);return _0x13c431(_0xd69b6b[_0xe29b('0x13')][_0xe29b('0x14')]);}else{logger[_0xe29b('0xe')](_0xe29b('0xf'),_0x15edc7,_0xe29b('0x10'));_0x13c431(_0xd69b6b['result']['message']);}})[_0xe29b('0x15')](function(_0x2dcfba){logger[_0xe29b('0x13')](_0xe29b('0xf'),_0x15edc7,_0x2dcfba);_0x1bc4f7(_0x2dcfba);});});}
\ No newline at end of file
index 6f244c1..05ae4a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f13=['util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','delete','exports'];(function(_0x3c82f8,_0x25f8d4){var _0x30abc9=function(_0x29a977){while(--_0x29a977){_0x3c82f8['push'](_0x3c82f8['shift']());}};_0x30abc9(++_0x25f8d4);}(_0x7f13,0x1f0));var _0x37f1=function(_0x51ac09,_0x383098){_0x51ac09=_0x51ac09-0x0;var _0x3f827d=_0x7f13[_0x51ac09];return _0x3f827d;};'use strict';var multer=require('multer');var util=require(_0x37f1('0x0'));var path=require('path');var timeout=require(_0x37f1('0x1'));var express=require(_0x37f1('0x2'));var router=express['Router']();var auth=require(_0x37f1('0x3'));var interaction=require(_0x37f1('0x4'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0x37f1('0x5')]('/',auth[_0x37f1('0x6')](),controller[_0x37f1('0x7')]);router[_0x37f1('0x5')](_0x37f1('0x8'),auth[_0x37f1('0x6')](),controller[_0x37f1('0x9')]);router[_0x37f1('0x5')](_0x37f1('0xa'),auth[_0x37f1('0x6')](),controller['show']);router[_0x37f1('0xb')]('/',auth[_0x37f1('0x6')](),controller[_0x37f1('0xc')]);router[_0x37f1('0xd')](_0x37f1('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x37f1('0xe')]('/:id',auth[_0x37f1('0x6')](),controller['destroy']);module[_0x37f1('0xf')]=router;
\ No newline at end of file
+var _0x4858=['show','post','put','update','delete','destroy','exports','util','path','connect-timeout','express','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x5ebf44,_0x4e543e){var _0x2fef12=function(_0x59d629){while(--_0x59d629){_0x5ebf44['push'](_0x5ebf44['shift']());}};_0x2fef12(++_0x4e543e);}(_0x4858,0x17d));var _0x8485=function(_0x2dc35f,_0x2fb239){_0x2dc35f=_0x2dc35f-0x0;var _0x4f0eac=_0x4858[_0x2dc35f];return _0x4f0eac;};'use strict';var multer=require('multer');var util=require(_0x8485('0x0'));var path=require(_0x8485('0x1'));var timeout=require(_0x8485('0x2'));var express=require(_0x8485('0x3'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0x8485('0x4')]('/',auth[_0x8485('0x5')](),controller[_0x8485('0x6')]);router['get'](_0x8485('0x7'),auth[_0x8485('0x5')](),controller[_0x8485('0x8')]);router[_0x8485('0x4')](_0x8485('0x9'),auth['isAuthenticated'](),controller[_0x8485('0xa')]);router[_0x8485('0xb')]('/',auth[_0x8485('0x5')](),controller['create']);router[_0x8485('0xc')]('/:id',auth[_0x8485('0x5')](),controller[_0x8485('0xd')]);router[_0x8485('0xe')](_0x8485('0x9'),auth[_0x8485('0x5')](),controller[_0x8485('0xf')]);module[_0x8485('0x10')]=router;
\ No newline at end of file
index a1b0951..100a34d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3d4=['exports','STRING','name'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xe3d4,0xc6));var _0x4e3d=function(_0x5a516a,_0x541200){_0x5a516a=_0x5a516a-0x0;var _0x38c0d9=_0xe3d4[_0x5a516a];return _0x38c0d9;};'use strict';var Sequelize=require('sequelize');module[_0x4e3d('0x0')]={'name':{'type':Sequelize[_0x4e3d('0x1')],'unique':_0x4e3d('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xceb0=['STRING'];(function(_0x3da59f,_0x334632){var _0xe0d91d=function(_0x4dbc5a){while(--_0x4dbc5a){_0x3da59f['push'](_0x3da59f['shift']());}};_0xe0d91d(++_0x334632);}(_0xceb0,0x173));var _0x0ceb=function(_0x377df2,_0x529be4){_0x377df2=_0x377df2-0x0;var _0x2db88c=_0xceb0[_0x377df2];return _0x2db88c;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x0ceb('0x0')]}};
\ No newline at end of file
index 7929259..1b266b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['nolimit','order','sort','where','add','day','filter','merge','map','type','options','includeAll','include','findAll','rows','show','params','fields','length','find','create','body','catch','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','status','json','count','offset','limit','set','Content-Range','apply','reject','update','then','end','sendStatus','error','stack','name','send','MailSubstatus','rawAttributes','model','keys','query','dateEnd','dateStart','filters','intersection','attributes'];(function(_0x2a3c4d,_0x9c6b37){var _0x55c390=function(_0x4871cf){while(--_0x4871cf){_0x2a3c4d['push'](_0x2a3c4d['shift']());}};_0x55c390(++_0x9c6b37);}(_0xadb5,0xad));var _0x5adb=function(_0x4ce2e6,_0x366ec9){_0x4ce2e6=_0x4ce2e6-0x0;var _0x3d2c1f=_0xadb5[_0x4ce2e6];return _0x3d2c1f;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x5adb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5adb('0x1'));var jsonpatch=require(_0x5adb('0x2'));var rp=require(_0x5adb('0x3'));var moment=require('moment');var BPromise=require(_0x5adb('0x4'));var Mustache=require(_0x5adb('0x5'));var util=require(_0x5adb('0x6'));var path=require('path');var sox=require(_0x5adb('0x7'));var csv=require(_0x5adb('0x8'));var ejs=require(_0x5adb('0x9'));var fs=require('fs');var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x8'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var qs=require(_0x5adb('0x12'));var logger=require(_0x5adb('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x5adb('0x14'));var db=require(_0x5adb('0x15'))['db'];function respondWithStatusCode(_0x82e67e,_0x53b772){_0x53b772=_0x53b772||0xcc;return function(_0x29f0d5){if(_0x29f0d5){return _0x82e67e['sendStatus'](_0x53b772);}return _0x82e67e[_0x5adb('0x16')](_0x53b772)['end']();};}function respondWithResult(_0x8cfcc6,_0x39a0b3){_0x39a0b3=_0x39a0b3||0xc8;return function(_0x44abe3){if(_0x44abe3){return _0x8cfcc6['status'](_0x39a0b3)[_0x5adb('0x17')](_0x44abe3);}};}function respondWithFilteredResult(_0x34af2c,_0xf82f72){return function(_0x5263ec){if(_0x5263ec){var _0x2312de=_0x5263ec[_0x5adb('0x18')],_0x518823=_0xf82f72[_0x5adb('0x19')],_0x367d82=_0xf82f72[_0x5adb('0x19')]+_0xf82f72[_0x5adb('0x1a')],_0x42a482;if(_0x367d82>=_0x2312de){_0x367d82=_0x2312de;_0x42a482=0xc8;}else{_0x42a482=0xce;}_0x34af2c[_0x5adb('0x16')](_0x42a482);return _0x34af2c[_0x5adb('0x1b')](_0x5adb('0x1c'),_0x518823+'-'+_0x367d82+'/'+_0x2312de)['json'](_0x5263ec);}return null;};}function patchUpdates(_0x3fff62){return function(_0x5de028){try{jsonpatch[_0x5adb('0x1d')](_0x5de028,_0x3fff62,!![]);}catch(_0x558f76){return BPromise[_0x5adb('0x1e')](_0x558f76);}return _0x5de028['save']();};}function saveUpdates(_0x5e218c,_0x1fbaa5){return function(_0x1bed20){if(_0x1bed20){return _0x1bed20[_0x5adb('0x1f')](_0x5e218c)[_0x5adb('0x20')](function(_0x99bc6c){return _0x99bc6c;});}return null;};}function removeEntity(_0x5af69d,_0x3255b3){return function(_0x5c296e){if(_0x5c296e){return _0x5c296e['destroy']()[_0x5adb('0x20')](function(){_0x5af69d[_0x5adb('0x16')](0xcc)[_0x5adb('0x21')]();});}};}function handleEntityNotFound(_0x1a8014,_0x1e9ccf){return function(_0x413911){if(!_0x413911){_0x1a8014[_0x5adb('0x22')](0x194);}return _0x413911;};}function handleError(_0x4ca150,_0x4b1957){_0x4b1957=_0x4b1957||0x1f4;return function(_0x373cc3){logger[_0x5adb('0x23')](_0x373cc3[_0x5adb('0x24')]);if(_0x373cc3[_0x5adb('0x25')]){delete _0x373cc3['name'];}_0x4ca150[_0x5adb('0x16')](_0x4b1957)[_0x5adb('0x26')](_0x373cc3);};}exports['index']=function(_0x1feecf,_0x1ded9f){var _0x1a0acd={},_0x55b40a={},_0x13ad1d={'count':0x0,'rows':[]};var _0xbe21b1=db[_0x5adb('0x27')][_0x5adb('0x28')];_0x55b40a[_0x5adb('0x29')]=_[_0x5adb('0x2a')](_0xbe21b1);var _0x4a5d46={'dateStart':_0x1feecf['query']['dateStart'],'dateEnd':_0x1feecf[_0x5adb('0x2b')][_0x5adb('0x2c')]};delete _0x1feecf[_0x5adb('0x2b')][_0x5adb('0x2d')];delete _0x1feecf[_0x5adb('0x2b')]['dateEnd'];_0x55b40a[_0x5adb('0x2b')]=_[_0x5adb('0x2a')](_0x1feecf[_0x5adb('0x2b')]);_0x55b40a[_0x5adb('0x2e')]=_[_0x5adb('0x2f')](_0x55b40a[_0x5adb('0x29')],_0x55b40a[_0x5adb('0x2b')]);_0x1a0acd[_0x5adb('0x30')]=_[_0x5adb('0x2f')](_0x55b40a[_0x5adb('0x29')],qs['fields'](_0x1feecf[_0x5adb('0x2b')]['fields']));_0x1a0acd[_0x5adb('0x30')]=_0x1a0acd[_0x5adb('0x30')]['length']?_0x1a0acd[_0x5adb('0x30')]:_0x55b40a[_0x5adb('0x29')];if(!_0x1feecf[_0x5adb('0x2b')]['hasOwnProperty'](_0x5adb('0x31'))){_0x1a0acd[_0x5adb('0x1a')]=qs['limit'](_0x1feecf['query'][_0x5adb('0x1a')]);_0x1a0acd['offset']=qs[_0x5adb('0x19')](_0x1feecf[_0x5adb('0x2b')][_0x5adb('0x19')]);}_0x1a0acd[_0x5adb('0x32')]=qs[_0x5adb('0x33')](_0x1feecf['query'][_0x5adb('0x33')]);_0x1a0acd[_0x5adb('0x34')]=qs[_0x5adb('0x2e')](_['pick'](_0x1feecf['query'],_0x55b40a[_0x5adb('0x2e')]));if(_0x4a5d46[_0x5adb('0x2d')]){if(_0x4a5d46['dateEnd']){_0x4a5d46[_0x5adb('0x2c')]=moment(_0x4a5d46['dateEnd'])[_0x5adb('0x35')](0x1,'day');}else{_0x4a5d46[_0x5adb('0x2c')]=moment(_0x4a5d46['dateStart'])[_0x5adb('0x35')](0x1,_0x5adb('0x36'));}_['merge'](_0x1a0acd[_0x5adb('0x34')],{'createdAt':{'$gte':_0x4a5d46['dateStart'],'$lte':_0x4a5d46[_0x5adb('0x2c')]}});}if(_0x1feecf[_0x5adb('0x2b')][_0x5adb('0x37')]){_0x1a0acd['where']=_[_0x5adb('0x38')](_0x1a0acd[_0x5adb('0x34')],{'$or':_[_0x5adb('0x39')](_0xbe21b1,function(_0x132803){if(_0x132803[_0x5adb('0x3a')]['key']!=='VIRTUAL'){var _0x4f491a={};_0x4f491a[_0x132803['field']]={'$like':'%'+_0x1feecf[_0x5adb('0x2b')][_0x5adb('0x37')]+'%'};return _0x4f491a;}})});}_0x1a0acd=_[_0x5adb('0x38')]({},_0x1a0acd,_0x1feecf[_0x5adb('0x3b')]);var _0x130e18={'where':_0x1a0acd[_0x5adb('0x34')]};return db[_0x5adb('0x27')][_0x5adb('0x18')](_0x130e18)['then'](function(_0x53f2c6){_0x13ad1d[_0x5adb('0x18')]=_0x53f2c6;if(_0x1feecf['query'][_0x5adb('0x3c')]){_0x1a0acd[_0x5adb('0x3d')]=[{'all':!![]}];}return db[_0x5adb('0x27')][_0x5adb('0x3e')](_0x1a0acd);})[_0x5adb('0x20')](function(_0x522ee5){_0x13ad1d[_0x5adb('0x3f')]=_0x522ee5;return _0x13ad1d;})[_0x5adb('0x20')](respondWithFilteredResult(_0x1ded9f,_0x1a0acd))['catch'](handleError(_0x1ded9f,null));};exports[_0x5adb('0x40')]=function(_0x1a256c,_0x5833c8){var _0x120497={'raw':!![],'where':{'id':_0x1a256c[_0x5adb('0x41')]['id']}},_0x407a4c={};_0x407a4c[_0x5adb('0x29')]=_[_0x5adb('0x2a')](db[_0x5adb('0x27')][_0x5adb('0x28')]);_0x407a4c['query']=_['keys'](_0x1a256c[_0x5adb('0x2b')]);_0x407a4c[_0x5adb('0x2e')]=_[_0x5adb('0x2f')](_0x407a4c[_0x5adb('0x29')],_0x407a4c['query']);_0x120497['attributes']=_[_0x5adb('0x2f')](_0x407a4c[_0x5adb('0x29')],qs[_0x5adb('0x42')](_0x1a256c[_0x5adb('0x2b')][_0x5adb('0x42')]));_0x120497['attributes']=_0x120497[_0x5adb('0x30')][_0x5adb('0x43')]?_0x120497['attributes']:_0x407a4c[_0x5adb('0x29')];if(_0x1a256c[_0x5adb('0x2b')][_0x5adb('0x3c')]){_0x120497[_0x5adb('0x3d')]=[{'all':!![]}];}_0x120497=_[_0x5adb('0x38')]({},_0x120497,_0x1a256c[_0x5adb('0x3b')]);return db[_0x5adb('0x27')][_0x5adb('0x44')](_0x120497)['then'](handleEntityNotFound(_0x5833c8,null))[_0x5adb('0x20')](respondWithResult(_0x5833c8,null))['catch'](handleError(_0x5833c8,null));};exports['create']=function(_0x5015ee,_0x3cd211){return db[_0x5adb('0x27')][_0x5adb('0x45')](_0x5015ee['body'],{})[_0x5adb('0x20')](respondWithResult(_0x3cd211,0xc9))['catch'](handleError(_0x3cd211,null));};exports[_0x5adb('0x1f')]=function(_0x2c3f21,_0x3f9dc7){if(_0x2c3f21['body']['id']){delete _0x2c3f21[_0x5adb('0x46')]['id'];}return db['MailSubstatus'][_0x5adb('0x44')]({'where':{'id':_0x2c3f21[_0x5adb('0x41')]['id']}})['then'](handleEntityNotFound(_0x3f9dc7,null))[_0x5adb('0x20')](saveUpdates(_0x2c3f21[_0x5adb('0x46')],null))[_0x5adb('0x20')](respondWithResult(_0x3f9dc7,null))[_0x5adb('0x47')](handleError(_0x3f9dc7,null));};exports[_0x5adb('0x48')]=function(_0x4cb36c,_0x36b847){return db[_0x5adb('0x27')][_0x5adb('0x44')]({'where':{'id':_0x4cb36c[_0x5adb('0x41')]['id']}})['then'](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x20')](removeEntity(_0x36b847,null))[_0x5adb('0x47')](handleError(_0x36b847,null));};exports[_0x5adb('0x49')]=function(_0x4d98d0,_0x2b34a8){return db[_0x5adb('0x27')][_0x5adb('0x49')]()[_0x5adb('0x20')](respondWithResult(_0x2b34a8,null))['catch'](handleError(_0x2b34a8,null));};
\ No newline at end of file
+var _0xdb28=['dateEnd','filters','attributes','intersection','fields','hasOwnProperty','nolimit','limit','sort','day','add','where','filter','map','type','key','VIRTUAL','field','merge','options','MailSubstatus','count','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','set','Content-Range','reject','save','update','then','destroy','name','send','index','rawAttributes','model','keys','query','dateStart'];(function(_0x29999e,_0x5d8368){var _0x57f419=function(_0x35030a){while(--_0x35030a){_0x29999e['push'](_0x29999e['shift']());}};_0x57f419(++_0x5d8368);}(_0xdb28,0x106));var _0x8db2=function(_0x2d3bf5,_0x2cd91f){_0x2d3bf5=_0x2d3bf5-0x0;var _0x3632b3=_0xdb28[_0x2d3bf5];return _0x3632b3;};'use strict';var pdf=require(_0x8db2('0x0'));var emlformat=require(_0x8db2('0x1'));var rimraf=require(_0x8db2('0x2'));var zipdir=require(_0x8db2('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8db2('0x4'));var moment=require(_0x8db2('0x5'));var BPromise=require(_0x8db2('0x6'));var Mustache=require(_0x8db2('0x7'));var util=require(_0x8db2('0x8'));var path=require('path');var sox=require(_0x8db2('0x9'));var csv=require(_0x8db2('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0xa'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var qs=require(_0x8db2('0x11'));var logger=require(_0x8db2('0x12'))(_0x8db2('0x13'));var utils=require('../../config/utils');var config=require(_0x8db2('0x14'));var db=require(_0x8db2('0x15'))['db'];function respondWithStatusCode(_0x576475,_0x41beda){_0x41beda=_0x41beda||0xcc;return function(_0x3b2faa){if(_0x3b2faa){return _0x576475[_0x8db2('0x16')](_0x41beda);}return _0x576475[_0x8db2('0x17')](_0x41beda)[_0x8db2('0x18')]();};}function respondWithResult(_0x559fb1,_0x49fadc){_0x49fadc=_0x49fadc||0xc8;return function(_0x15070d){if(_0x15070d){return _0x559fb1[_0x8db2('0x17')](_0x49fadc)[_0x8db2('0x19')](_0x15070d);}};}function respondWithFilteredResult(_0x1d6a15,_0x227355){return function(_0xfa285b){if(_0xfa285b){var _0x2f177a=_0xfa285b['count'],_0x3c96a7=_0x227355[_0x8db2('0x1a')],_0x131252=_0x227355[_0x8db2('0x1a')]+_0x227355['limit'],_0x16c8c2;if(_0x131252>=_0x2f177a){_0x131252=_0x2f177a;_0x16c8c2=0xc8;}else{_0x16c8c2=0xce;}_0x1d6a15[_0x8db2('0x17')](_0x16c8c2);return _0x1d6a15[_0x8db2('0x1b')](_0x8db2('0x1c'),_0x3c96a7+'-'+_0x131252+'/'+_0x2f177a)[_0x8db2('0x19')](_0xfa285b);}return null;};}function patchUpdates(_0x2efd06){return function(_0x46ce14){try{jsonpatch['apply'](_0x46ce14,_0x2efd06,!![]);}catch(_0x5df464){return BPromise[_0x8db2('0x1d')](_0x5df464);}return _0x46ce14[_0x8db2('0x1e')]();};}function saveUpdates(_0x1310d3,_0x1b64e4){return function(_0x58562e){if(_0x58562e){return _0x58562e[_0x8db2('0x1f')](_0x1310d3)[_0x8db2('0x20')](function(_0x260940){return _0x260940;});}return null;};}function removeEntity(_0x297ba3,_0x3dbe8e){return function(_0x597260){if(_0x597260){return _0x597260[_0x8db2('0x21')]()[_0x8db2('0x20')](function(){_0x297ba3[_0x8db2('0x17')](0xcc)[_0x8db2('0x18')]();});}};}function handleEntityNotFound(_0x2260d8,_0x21704c){return function(_0x796ec1){if(!_0x796ec1){_0x2260d8['sendStatus'](0x194);}return _0x796ec1;};}function handleError(_0x256202,_0x4f6516){_0x4f6516=_0x4f6516||0x1f4;return function(_0x5725f0){logger['error'](_0x5725f0['stack']);if(_0x5725f0[_0x8db2('0x22')]){delete _0x5725f0[_0x8db2('0x22')];}_0x256202[_0x8db2('0x17')](_0x4f6516)[_0x8db2('0x23')](_0x5725f0);};}exports[_0x8db2('0x24')]=function(_0x8d4f54,_0x58cd9d){var _0x3544ba={},_0x372311={},_0x430dd5={'count':0x0,'rows':[]};var _0x8b7cec=db['MailSubstatus'][_0x8db2('0x25')];_0x372311[_0x8db2('0x26')]=_[_0x8db2('0x27')](_0x8b7cec);var _0x1687ed={'dateStart':_0x8d4f54[_0x8db2('0x28')][_0x8db2('0x29')],'dateEnd':_0x8d4f54[_0x8db2('0x28')][_0x8db2('0x2a')]};delete _0x8d4f54[_0x8db2('0x28')]['dateStart'];delete _0x8d4f54[_0x8db2('0x28')]['dateEnd'];_0x372311['query']=_[_0x8db2('0x27')](_0x8d4f54[_0x8db2('0x28')]);_0x372311[_0x8db2('0x2b')]=_['intersection'](_0x372311[_0x8db2('0x26')],_0x372311['query']);_0x3544ba[_0x8db2('0x2c')]=_[_0x8db2('0x2d')](_0x372311[_0x8db2('0x26')],qs['fields'](_0x8d4f54['query'][_0x8db2('0x2e')]));_0x3544ba[_0x8db2('0x2c')]=_0x3544ba['attributes']['length']?_0x3544ba[_0x8db2('0x2c')]:_0x372311[_0x8db2('0x26')];if(!_0x8d4f54[_0x8db2('0x28')][_0x8db2('0x2f')](_0x8db2('0x30'))){_0x3544ba[_0x8db2('0x31')]=qs[_0x8db2('0x31')](_0x8d4f54[_0x8db2('0x28')][_0x8db2('0x31')]);_0x3544ba[_0x8db2('0x1a')]=qs['offset'](_0x8d4f54[_0x8db2('0x28')][_0x8db2('0x1a')]);}_0x3544ba['order']=qs[_0x8db2('0x32')](_0x8d4f54[_0x8db2('0x28')]['sort']);_0x3544ba['where']=qs[_0x8db2('0x2b')](_['pick'](_0x8d4f54[_0x8db2('0x28')],_0x372311[_0x8db2('0x2b')]));if(_0x1687ed[_0x8db2('0x29')]){if(_0x1687ed[_0x8db2('0x2a')]){_0x1687ed['dateEnd']=moment(_0x1687ed[_0x8db2('0x2a')])['add'](0x1,_0x8db2('0x33'));}else{_0x1687ed[_0x8db2('0x2a')]=moment(_0x1687ed[_0x8db2('0x29')])[_0x8db2('0x34')](0x1,'day');}_['merge'](_0x3544ba[_0x8db2('0x35')],{'createdAt':{'$gte':_0x1687ed[_0x8db2('0x29')],'$lte':_0x1687ed['dateEnd']}});}if(_0x8d4f54[_0x8db2('0x28')][_0x8db2('0x36')]){_0x3544ba[_0x8db2('0x35')]=_['merge'](_0x3544ba[_0x8db2('0x35')],{'$or':_[_0x8db2('0x37')](_0x8b7cec,function(_0x953349){if(_0x953349[_0x8db2('0x38')][_0x8db2('0x39')]!==_0x8db2('0x3a')){var _0x380046={};_0x380046[_0x953349[_0x8db2('0x3b')]]={'$like':'%'+_0x8d4f54[_0x8db2('0x28')][_0x8db2('0x36')]+'%'};return _0x380046;}})});}_0x3544ba=_[_0x8db2('0x3c')]({},_0x3544ba,_0x8d4f54[_0x8db2('0x3d')]);var _0x1d9025={'where':_0x3544ba['where']};return db[_0x8db2('0x3e')][_0x8db2('0x3f')](_0x1d9025)['then'](function(_0x49a7ae){_0x430dd5[_0x8db2('0x3f')]=_0x49a7ae;if(_0x8d4f54['query'][_0x8db2('0x40')]){_0x3544ba[_0x8db2('0x41')]=[{'all':!![]}];}return db[_0x8db2('0x3e')][_0x8db2('0x42')](_0x3544ba);})[_0x8db2('0x20')](function(_0x30d606){_0x430dd5[_0x8db2('0x43')]=_0x30d606;return _0x430dd5;})['then'](respondWithFilteredResult(_0x58cd9d,_0x3544ba))[_0x8db2('0x44')](handleError(_0x58cd9d,null));};exports[_0x8db2('0x45')]=function(_0x40c69e,_0x4a0b56){var _0x482b26={'raw':!![],'where':{'id':_0x40c69e[_0x8db2('0x46')]['id']}},_0x424c27={};_0x424c27[_0x8db2('0x26')]=_[_0x8db2('0x27')](db['MailSubstatus'][_0x8db2('0x25')]);_0x424c27['query']=_[_0x8db2('0x27')](_0x40c69e[_0x8db2('0x28')]);_0x424c27[_0x8db2('0x2b')]=_['intersection'](_0x424c27['model'],_0x424c27[_0x8db2('0x28')]);_0x482b26['attributes']=_[_0x8db2('0x2d')](_0x424c27[_0x8db2('0x26')],qs[_0x8db2('0x2e')](_0x40c69e[_0x8db2('0x28')][_0x8db2('0x2e')]));_0x482b26[_0x8db2('0x2c')]=_0x482b26[_0x8db2('0x2c')][_0x8db2('0x47')]?_0x482b26[_0x8db2('0x2c')]:_0x424c27[_0x8db2('0x26')];if(_0x40c69e[_0x8db2('0x28')][_0x8db2('0x40')]){_0x482b26['include']=[{'all':!![]}];}_0x482b26=_[_0x8db2('0x3c')]({},_0x482b26,_0x40c69e[_0x8db2('0x3d')]);return db[_0x8db2('0x3e')][_0x8db2('0x48')](_0x482b26)['then'](handleEntityNotFound(_0x4a0b56,null))['then'](respondWithResult(_0x4a0b56,null))[_0x8db2('0x44')](handleError(_0x4a0b56,null));};exports[_0x8db2('0x49')]=function(_0x164020,_0x4c66e5){return db['MailSubstatus']['create'](_0x164020[_0x8db2('0x4a')],{})[_0x8db2('0x20')](respondWithResult(_0x4c66e5,0xc9))[_0x8db2('0x44')](handleError(_0x4c66e5,null));};exports[_0x8db2('0x1f')]=function(_0xaab731,_0x4195ef){if(_0xaab731[_0x8db2('0x4a')]['id']){delete _0xaab731['body']['id'];}return db['MailSubstatus'][_0x8db2('0x48')]({'where':{'id':_0xaab731[_0x8db2('0x46')]['id']}})[_0x8db2('0x20')](handleEntityNotFound(_0x4195ef,null))[_0x8db2('0x20')](saveUpdates(_0xaab731[_0x8db2('0x4a')],null))[_0x8db2('0x20')](respondWithResult(_0x4195ef,null))[_0x8db2('0x44')](handleError(_0x4195ef,null));};exports[_0x8db2('0x21')]=function(_0x4187d6,_0x426ae0){return db[_0x8db2('0x3e')][_0x8db2('0x48')]({'where':{'id':_0x4187d6[_0x8db2('0x46')]['id']}})[_0x8db2('0x20')](handleEntityNotFound(_0x426ae0,null))[_0x8db2('0x20')](removeEntity(_0x426ae0,null))['catch'](handleError(_0x426ae0,null));};exports[_0x8db2('0x4b')]=function(_0xb4b0a,_0x579317){return db[_0x8db2('0x3e')][_0x8db2('0x4b')]()[_0x8db2('0x20')](respondWithResult(_0x579317,null))['catch'](handleError(_0x579317,null));};
\ No newline at end of file
index def6c5e..3e67fc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x192c=['MailSubstatus','mail_substatuses','util','api','moment','bluebird','./mailSubstatus.attributes'];(function(_0x2fb87c,_0x2dee49){var _0x43038b=function(_0x7e5396){while(--_0x7e5396){_0x2fb87c['push'](_0x2fb87c['shift']());}};_0x43038b(++_0x2dee49);}(_0x192c,0x8e));var _0xc192=function(_0x425ecd,_0x1e1bed){_0x425ecd=_0x425ecd-0x0;var _0xddc406=_0x192c[_0x425ecd];return _0xddc406;};'use strict';var _=require('lodash');var util=require(_0xc192('0x0'));var logger=require('../../config/logger')(_0xc192('0x1'));var moment=require(_0xc192('0x2'));var BPromise=require(_0xc192('0x3'));var rp=require('request-promise');var attributes=require(_0xc192('0x4'));module['exports']=function(_0xb901e2,_0x2cf9c9){return _0xb901e2['define'](_0xc192('0x5'),attributes,{'tableName':_0xc192('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a4c=['bluebird','./mailSubstatus.attributes','define','mail_substatuses','lodash','../../config/logger','api','moment'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0x8a4c,0x194));var _0xc8a4=function(_0x4ca288,_0x254dd8){_0x4ca288=_0x4ca288-0x0;var _0x2362c1=_0x8a4c[_0x4ca288];return _0x2362c1;};'use strict';var _=require(_0xc8a4('0x0'));var util=require('util');var logger=require(_0xc8a4('0x1'))(_0xc8a4('0x2'));var moment=require(_0xc8a4('0x3'));var BPromise=require(_0xc8a4('0x4'));var rp=require('request-promise');var attributes=require(_0xc8a4('0x5'));module['exports']=function(_0x466a70,_0x4bc1c8){return _0x466a70[_0xc8a4('0x6')]('MailSubstatus',attributes,{'tableName':_0xc8a4('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f4951fe..37b080e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c9c=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2b70df,_0x224881){var _0x44b705=function(_0x4d79f0){while(--_0x4d79f0){_0x2b70df['push'](_0x2b70df['shift']());}};_0x44b705(++_0x224881);}(_0x0c9c,0xcd));var _0xc0c9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c9c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc0c9('0x0'));var BPromise=require(_0xc0c9('0x1'));var rs=require(_0xc0c9('0x2'));var fs=require('fs');var Redis=require(_0xc0c9('0x3'));var db=require(_0xc0c9('0x4'))['db'];var utils=require(_0xc0c9('0x5'));var logger=require(_0xc0c9('0x6'))(_0xc0c9('0x7'));var config=require(_0xc0c9('0x8'));var jayson=require(_0xc0c9('0x9'));var client=jayson[_0xc0c9('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2282ca,_0x461eba,_0x15c2d3){return new BPromise(function(_0xce75d6,_0x3c7681){return client[_0xc0c9('0xb')](_0x2282ca,_0x15c2d3)['then'](function(_0x456d79){logger[_0xc0c9('0xc')](_0xc0c9('0xd'),_0x461eba,_0xc0c9('0xe'));logger[_0xc0c9('0xf')](_0xc0c9('0x10'),_0x461eba,_0xc0c9('0xe'),JSON[_0xc0c9('0x11')](_0x456d79));if(_0x456d79[_0xc0c9('0x12')]){if(_0x456d79[_0xc0c9('0x12')]['code']===0x1f4){logger['error'](_0xc0c9('0xd'),_0x461eba,_0x456d79[_0xc0c9('0x12')][_0xc0c9('0x13')]);return _0x3c7681(_0x456d79[_0xc0c9('0x12')]['message']);}logger[_0xc0c9('0x12')](_0xc0c9('0xd'),_0x461eba,_0x456d79['error'][_0xc0c9('0x13')]);return _0xce75d6(_0x456d79[_0xc0c9('0x12')][_0xc0c9('0x13')]);}else{logger[_0xc0c9('0xc')](_0xc0c9('0xd'),_0x461eba,'request\x20sent');_0xce75d6(_0x456d79['result'][_0xc0c9('0x13')]);}})[_0xc0c9('0x14')](function(_0x1458f1){logger['error'](_0xc0c9('0xd'),_0x461eba,_0x1458f1);_0x3c7681(_0x1458f1);});});}
\ No newline at end of file
+var _0xe0ad=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','randomstring'];(function(_0x573faa,_0x5563b3){var _0x2760e9=function(_0x1a001e){while(--_0x1a001e){_0x573faa['push'](_0x573faa['shift']());}};_0x2760e9(++_0x5563b3);}(_0xe0ad,0x1f1));var _0xde0a=function(_0x4b82b7,_0x4e4616){_0x4b82b7=_0x4b82b7-0x0;var _0x2dde86=_0xe0ad[_0x4b82b7];return _0x2dde86;};'use strict';var _=require(_0xde0a('0x0'));var util=require(_0xde0a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xde0a('0x2'));var fs=require('fs');var Redis=require(_0xde0a('0x3'));var db=require(_0xde0a('0x4'))['db'];var utils=require(_0xde0a('0x5'));var logger=require(_0xde0a('0x6'))('rpc');var config=require(_0xde0a('0x7'));var jayson=require(_0xde0a('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xde2ecc,_0x3af294,_0x3c3ddf){return new BPromise(function(_0x241d21,_0x5f2c3b){return client['request'](_0xde2ecc,_0x3c3ddf)[_0xde0a('0x9')](function(_0x3de4c6){logger[_0xde0a('0xa')](_0xde0a('0xb'),_0x3af294,_0xde0a('0xc'));logger[_0xde0a('0xd')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x3af294,_0xde0a('0xc'),JSON[_0xde0a('0xe')](_0x3de4c6));if(_0x3de4c6[_0xde0a('0xf')]){if(_0x3de4c6[_0xde0a('0xf')][_0xde0a('0x10')]===0x1f4){logger[_0xde0a('0xf')](_0xde0a('0xb'),_0x3af294,_0x3de4c6[_0xde0a('0xf')][_0xde0a('0x11')]);return _0x5f2c3b(_0x3de4c6[_0xde0a('0xf')][_0xde0a('0x11')]);}logger[_0xde0a('0xf')]('MailSubstatus,\x20%s,\x20%s',_0x3af294,_0x3de4c6[_0xde0a('0xf')][_0xde0a('0x11')]);return _0x241d21(_0x3de4c6['error'][_0xde0a('0x11')]);}else{logger[_0xde0a('0xa')](_0xde0a('0xb'),_0x3af294,_0xde0a('0xc'));_0x241d21(_0x3de4c6[_0xde0a('0x12')]['message']);}})[_0xde0a('0x13')](function(_0x7eb930){logger[_0xde0a('0xf')](_0xde0a('0xb'),_0x3af294,_0x7eb930);_0x5f2c3b(_0x7eb930);});});}
\ No newline at end of file
index 50a5472..3218090 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca9=['express','Router','../../components/auth/service','./mailTransferReport.controller','isAuthenticated','get','/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x21105e,_0x4a91a7){var _0x15988c=function(_0x3d0f02){while(--_0x3d0f02){_0x21105e['push'](_0x21105e['shift']());}};_0x15988c(++_0x4a91a7);}(_0x8ca9,0x9c));var _0x98ca=function(_0xf7b2eb,_0x53777f){_0xf7b2eb=_0xf7b2eb-0x0;var _0x444e0e=_0x8ca9[_0xf7b2eb];return _0x444e0e;};'use strict';var multer=require(_0x98ca('0x0'));var util=require(_0x98ca('0x1'));var path=require(_0x98ca('0x2'));var timeout=require(_0x98ca('0x3'));var express=require(_0x98ca('0x4'));var router=express[_0x98ca('0x5')]();var auth=require(_0x98ca('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x98ca('0x7'));router['get']('/',auth[_0x98ca('0x8')](),controller['index']);router[_0x98ca('0x9')](_0x98ca('0xa'),auth[_0x98ca('0x8')](),controller[_0x98ca('0xb')]);router[_0x98ca('0x9')](_0x98ca('0xc'),auth[_0x98ca('0x8')](),controller[_0x98ca('0xd')]);router[_0x98ca('0xe')]('/',auth[_0x98ca('0x8')](),controller[_0x98ca('0xf')]);router[_0x98ca('0x10')](_0x98ca('0xc'),auth[_0x98ca('0x8')](),controller[_0x98ca('0x11')]);router[_0x98ca('0x12')](_0x98ca('0xc'),auth[_0x98ca('0x8')](),controller['destroy']);module[_0x98ca('0x13')]=router;
\ No newline at end of file
+var _0x1b65=['util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','post','put','update','delete','destroy','multer'];(function(_0x132d8f,_0x4ccb46){var _0x41821d=function(_0x374129){while(--_0x374129){_0x132d8f['push'](_0x132d8f['shift']());}};_0x41821d(++_0x4ccb46);}(_0x1b65,0x1b4));var _0x51b6=function(_0x414bee,_0x1b19a4){_0x414bee=_0x414bee-0x0;var _0x3ab4df=_0x1b65[_0x414bee];return _0x3ab4df;};'use strict';var multer=require(_0x51b6('0x0'));var util=require(_0x51b6('0x1'));var path=require(_0x51b6('0x2'));var timeout=require(_0x51b6('0x3'));var express=require('express');var router=express[_0x51b6('0x4')]();var auth=require(_0x51b6('0x5'));var interaction=require(_0x51b6('0x6'));var config=require(_0x51b6('0x7'));var controller=require(_0x51b6('0x8'));router[_0x51b6('0x9')]('/',auth[_0x51b6('0xa')](),controller['index']);router[_0x51b6('0x9')](_0x51b6('0xb'),auth[_0x51b6('0xa')](),controller[_0x51b6('0xc')]);router['get'](_0x51b6('0xd'),auth[_0x51b6('0xa')](),controller['show']);router[_0x51b6('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x51b6('0xf')](_0x51b6('0xd'),auth[_0x51b6('0xa')](),controller[_0x51b6('0x10')]);router[_0x51b6('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x51b6('0x12')]);module['exports']=router;
\ No newline at end of file
index b74f796..29d7619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf254=['queue','DATE','moment','sequelize','STRING','ENUM','account'];(function(_0x321621,_0x37f64e){var _0x2d57d0=function(_0x38c353){while(--_0x38c353){_0x321621['push'](_0x321621['shift']());}};_0x2d57d0(++_0x37f64e);}(_0xf254,0xbf));var _0x4f25=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xf254[_0x1ac595];return _0x455fff;};'use strict';var moment=require(_0x4f25('0x0'));var Sequelize=require(_0x4f25('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x4f25('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x4f25('0x3')](_0x4f25('0x4'),'agent',_0x4f25('0x5')),'allowNull':![],'defaultValue':_0x4f25('0x5')},'transferredAt':{'type':Sequelize[_0x4f25('0x6')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x3630=['sequelize','STRING','ENUM','account','agent','queue','DATE','NOW','moment'];(function(_0x1f2a24,_0x551eae){var _0x1a9f5f=function(_0x3af021){while(--_0x3af021){_0x1f2a24['push'](_0x1f2a24['shift']());}};_0x1a9f5f(++_0x551eae);}(_0x3630,0x1d3));var _0x0363=function(_0x4d2b68,_0x55c0d8){_0x4d2b68=_0x4d2b68-0x0;var _0x2009d4=_0x3630[_0x4d2b68];return _0x2009d4;};'use strict';var moment=require(_0x0363('0x0'));var Sequelize=require(_0x0363('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x0363('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x0363('0x3')](_0x0363('0x4'),_0x0363('0x5'),_0x0363('0x6')),'allowNull':![],'defaultValue':_0x0363('0x6')},'transferredAt':{'type':Sequelize[_0x0363('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x0363('0x8')]}};
\ No newline at end of file
index d40126e..af2dccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x612e=['papaparse','ioredis','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','error','stack','name','send','index','MailTransferReport','rawAttributes','query','dateStart','dateEnd','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','map','key','VIRTUAL','filter','options','then','includeAll','include','rows','catch','show','find','create','body','params','describe','html-pdf','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','lodash','squel','crypto','to-csv'];(function(_0x3bc81b,_0x596ec8){var _0xb7e333=function(_0x40f6f8){while(--_0x40f6f8){_0x3bc81b['push'](_0x3bc81b['shift']());}};_0xb7e333(++_0x596ec8);}(_0x612e,0x11b));var _0xe612=function(_0x267550,_0xaabe5){_0x267550=_0x267550-0x0;var _0x33bd3a=_0x612e[_0x267550];return _0x33bd3a;};'use strict';var pdf=require(_0xe612('0x0'));var emlformat=require(_0xe612('0x1'));var rimraf=require(_0xe612('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe612('0x3'));var rp=require('request-promise');var moment=require(_0xe612('0x4'));var BPromise=require(_0xe612('0x5'));var Mustache=require(_0xe612('0x6'));var util=require(_0xe612('0x7'));var path=require(_0xe612('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0xe612('0x9'));var squel=require(_0xe612('0xa'));var crypto=require(_0xe612('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe612('0xc'));var querystring=require('querystring');var Papa=require(_0xe612('0xd'));var Redis=require(_0xe612('0xe'));var qs=require('../../components/parsers/qs');var logger=require(_0xe612('0xf'))('api');var utils=require(_0xe612('0x10'));var config=require(_0xe612('0x11'));var db=require(_0xe612('0x12'))['db'];function respondWithStatusCode(_0x3551de,_0xbd35a6){_0xbd35a6=_0xbd35a6||0xcc;return function(_0x12962d){if(_0x12962d){return _0x3551de[_0xe612('0x13')](_0xbd35a6);}return _0x3551de[_0xe612('0x14')](_0xbd35a6)[_0xe612('0x15')]();};}function respondWithResult(_0x6afa13,_0x37c65c){_0x37c65c=_0x37c65c||0xc8;return function(_0x22fcc9){if(_0x22fcc9){return _0x6afa13['status'](_0x37c65c)['json'](_0x22fcc9);}};}function respondWithFilteredResult(_0x337c1a,_0x1af4da){return function(_0x1a54bb){if(_0x1a54bb){var _0x3a69bb=_0x1a54bb[_0xe612('0x16')],_0x10ffb5=_0x1af4da[_0xe612('0x17')],_0x545f87=_0x1af4da[_0xe612('0x17')]+_0x1af4da[_0xe612('0x18')],_0x4994a;if(_0x545f87>=_0x3a69bb){_0x545f87=_0x3a69bb;_0x4994a=0xc8;}else{_0x4994a=0xce;}_0x337c1a[_0xe612('0x14')](_0x4994a);return _0x337c1a[_0xe612('0x19')](_0xe612('0x1a'),_0x10ffb5+'-'+_0x545f87+'/'+_0x3a69bb)[_0xe612('0x1b')](_0x1a54bb);}return null;};}function patchUpdates(_0x2fc3b2){return function(_0x444fc4){try{jsonpatch[_0xe612('0x1c')](_0x444fc4,_0x2fc3b2,!![]);}catch(_0x11a747){return BPromise[_0xe612('0x1d')](_0x11a747);}return _0x444fc4['save']();};}function saveUpdates(_0x4d9e68,_0x2244a8){return function(_0x4fbaea){if(_0x4fbaea){return _0x4fbaea[_0xe612('0x1e')](_0x4d9e68)['then'](function(_0x27cf7d){return _0x27cf7d;});}return null;};}function removeEntity(_0x3c9a00,_0x409479){return function(_0x22f881){if(_0x22f881){return _0x22f881[_0xe612('0x1f')]()['then'](function(){_0x3c9a00[_0xe612('0x14')](0xcc)[_0xe612('0x15')]();});}};}function handleEntityNotFound(_0xfcc79e,_0x5e978b){return function(_0x3362b9){if(!_0x3362b9){_0xfcc79e[_0xe612('0x13')](0x194);}return _0x3362b9;};}function handleError(_0x5243b8,_0xba78ce){_0xba78ce=_0xba78ce||0x1f4;return function(_0xe6ca08){logger[_0xe612('0x20')](_0xe6ca08[_0xe612('0x21')]);if(_0xe6ca08[_0xe612('0x22')]){delete _0xe6ca08[_0xe612('0x22')];}_0x5243b8[_0xe612('0x14')](_0xba78ce)[_0xe612('0x23')](_0xe6ca08);};}exports[_0xe612('0x24')]=function(_0x3b8581,_0x55b8f5){var _0x46f89b={},_0x3df8bc={},_0x1a2034={'count':0x0,'rows':[]};var _0x391c58=db[_0xe612('0x25')][_0xe612('0x26')];_0x3df8bc['model']=_['keys'](_0x391c58);var _0x5ae6bf={'dateStart':_0x3b8581[_0xe612('0x27')][_0xe612('0x28')],'dateEnd':_0x3b8581['query'][_0xe612('0x29')]};delete _0x3b8581[_0xe612('0x27')]['dateStart'];delete _0x3b8581[_0xe612('0x27')]['dateEnd'];_0x3df8bc[_0xe612('0x27')]=_[_0xe612('0x2a')](_0x3b8581['query']);_0x3df8bc[_0xe612('0x2b')]=_[_0xe612('0x2c')](_0x3df8bc[_0xe612('0x2d')],_0x3df8bc['query']);_0x46f89b['attributes']=_[_0xe612('0x2c')](_0x3df8bc['model'],qs['fields'](_0x3b8581['query'][_0xe612('0x2e')]));_0x46f89b['attributes']=_0x46f89b[_0xe612('0x2f')][_0xe612('0x30')]?_0x46f89b['attributes']:_0x3df8bc[_0xe612('0x2d')];if(!_0x3b8581['query'][_0xe612('0x31')](_0xe612('0x32'))){_0x46f89b['limit']=qs['limit'](_0x3b8581[_0xe612('0x27')][_0xe612('0x18')]);_0x46f89b[_0xe612('0x17')]=qs['offset'](_0x3b8581[_0xe612('0x27')][_0xe612('0x17')]);}_0x46f89b[_0xe612('0x33')]=qs[_0xe612('0x34')](_0x3b8581[_0xe612('0x27')]['sort']);_0x46f89b[_0xe612('0x35')]=qs[_0xe612('0x2b')](_[_0xe612('0x36')](_0x3b8581[_0xe612('0x27')],_0x3df8bc[_0xe612('0x2b')]));if(_0x5ae6bf[_0xe612('0x28')]){if(_0x5ae6bf[_0xe612('0x29')]){_0x5ae6bf[_0xe612('0x29')]=moment(_0x5ae6bf[_0xe612('0x29')])[_0xe612('0x37')](0x1,'day');}else{_0x5ae6bf['dateEnd']=moment(_0x5ae6bf[_0xe612('0x28')])['add'](0x1,_0xe612('0x38'));}_[_0xe612('0x39')](_0x46f89b[_0xe612('0x35')],{'createdAt':{'$gte':_0x5ae6bf[_0xe612('0x28')],'$lte':_0x5ae6bf[_0xe612('0x29')]}});}if(_0x3b8581[_0xe612('0x27')]['filter']){_0x46f89b[_0xe612('0x35')]=_['merge'](_0x46f89b[_0xe612('0x35')],{'$or':_[_0xe612('0x3a')](_0x391c58,function(_0x5e24f5){if(_0x5e24f5['type'][_0xe612('0x3b')]!==_0xe612('0x3c')){var _0x183960={};_0x183960[_0x5e24f5['field']]={'$like':'%'+_0x3b8581[_0xe612('0x27')][_0xe612('0x3d')]+'%'};return _0x183960;}})});}_0x46f89b=_['merge']({},_0x46f89b,_0x3b8581[_0xe612('0x3e')]);var _0x1df6ea={'where':_0x46f89b[_0xe612('0x35')]};return db[_0xe612('0x25')][_0xe612('0x16')](_0x1df6ea)[_0xe612('0x3f')](function(_0x3f1de4){_0x1a2034[_0xe612('0x16')]=_0x3f1de4;if(_0x3b8581['query'][_0xe612('0x40')]){_0x46f89b[_0xe612('0x41')]=[{'all':!![]}];}return db[_0xe612('0x25')]['findAll'](_0x46f89b);})[_0xe612('0x3f')](function(_0x4e2f37){_0x1a2034[_0xe612('0x42')]=_0x4e2f37;return _0x1a2034;})['then'](respondWithFilteredResult(_0x55b8f5,_0x46f89b))[_0xe612('0x43')](handleError(_0x55b8f5,null));};exports[_0xe612('0x44')]=function(_0xd9c28e,_0x5839d6){var _0x36f320={'raw':!![],'where':{'id':_0xd9c28e['params']['id']}},_0x56a012={};_0x56a012[_0xe612('0x2d')]=_[_0xe612('0x2a')](db[_0xe612('0x25')]['rawAttributes']);_0x56a012['query']=_[_0xe612('0x2a')](_0xd9c28e[_0xe612('0x27')]);_0x56a012[_0xe612('0x2b')]=_[_0xe612('0x2c')](_0x56a012['model'],_0x56a012[_0xe612('0x27')]);_0x36f320[_0xe612('0x2f')]=_[_0xe612('0x2c')](_0x56a012[_0xe612('0x2d')],qs[_0xe612('0x2e')](_0xd9c28e[_0xe612('0x27')][_0xe612('0x2e')]));_0x36f320[_0xe612('0x2f')]=_0x36f320['attributes']['length']?_0x36f320[_0xe612('0x2f')]:_0x56a012[_0xe612('0x2d')];if(_0xd9c28e[_0xe612('0x27')]['includeAll']){_0x36f320['include']=[{'all':!![]}];}_0x36f320=_['merge']({},_0x36f320,_0xd9c28e[_0xe612('0x3e')]);return db[_0xe612('0x25')][_0xe612('0x45')](_0x36f320)['then'](handleEntityNotFound(_0x5839d6,null))[_0xe612('0x3f')](respondWithResult(_0x5839d6,null))[_0xe612('0x43')](handleError(_0x5839d6,null));};exports['create']=function(_0x3e594f,_0x1f9f45){return db[_0xe612('0x25')][_0xe612('0x46')](_0x3e594f[_0xe612('0x47')],{})['then'](respondWithResult(_0x1f9f45,0xc9))[_0xe612('0x43')](handleError(_0x1f9f45,null));};exports[_0xe612('0x1e')]=function(_0x10a058,_0x5301fd){if(_0x10a058[_0xe612('0x47')]['id']){delete _0x10a058[_0xe612('0x47')]['id'];}return db[_0xe612('0x25')][_0xe612('0x45')]({'where':{'id':_0x10a058[_0xe612('0x48')]['id']}})[_0xe612('0x3f')](handleEntityNotFound(_0x5301fd,null))[_0xe612('0x3f')](saveUpdates(_0x10a058[_0xe612('0x47')],null))['then'](respondWithResult(_0x5301fd,null))[_0xe612('0x43')](handleError(_0x5301fd,null));};exports[_0xe612('0x1f')]=function(_0x5ac8f2,_0x5d54f8){return db['MailTransferReport'][_0xe612('0x45')]({'where':{'id':_0x5ac8f2[_0xe612('0x48')]['id']}})[_0xe612('0x3f')](handleEntityNotFound(_0x5d54f8,null))[_0xe612('0x3f')](removeEntity(_0x5d54f8,null))[_0xe612('0x43')](handleError(_0x5d54f8,null));};exports[_0xe612('0x49')]=function(_0x52f03f,_0x2c7586){return db[_0xe612('0x25')]['describe']()[_0xe612('0x3f')](respondWithResult(_0x2c7586,null))['catch'](handleError(_0x2c7586,null));};
\ No newline at end of file
+var _0xb130=['../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','set','Content-Range','apply','reject','then','destroy','error','name','send','MailTransferReport','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','pick','add','day','merge','where','key','VIRTUAL','field','filter','count','include','findAll','show','params','includeAll','options','find','catch','create','body','update','describe','html-pdf','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x5e3b04,_0xbb6795){var _0x1fc44d=function(_0x3472a1){while(--_0x3472a1){_0x5e3b04['push'](_0x5e3b04['shift']());}};_0x1fc44d(++_0xbb6795);}(_0xb130,0x117));var _0x0b13=function(_0xc9cd47,_0x35a546){_0xc9cd47=_0xc9cd47-0x0;var _0x26827e=_0xb130[_0xc9cd47];return _0x26827e;};'use strict';var pdf=require(_0x0b13('0x0'));var emlformat=require(_0x0b13('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0b13('0x2'));var rp=require(_0x0b13('0x3'));var moment=require('moment');var BPromise=require(_0x0b13('0x4'));var Mustache=require(_0x0b13('0x5'));var util=require(_0x0b13('0x6'));var path=require(_0x0b13('0x7'));var sox=require(_0x0b13('0x8'));var csv=require(_0x0b13('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x0b13('0xa'));var squel=require(_0x0b13('0xb'));var crypto=require('crypto');var jsforce=require(_0x0b13('0xc'));var deskjs=require(_0x0b13('0xd'));var toCsv=require(_0x0b13('0x9'));var querystring=require(_0x0b13('0xe'));var Papa=require(_0x0b13('0xf'));var Redis=require(_0x0b13('0x10'));var qs=require(_0x0b13('0x11'));var logger=require(_0x0b13('0x12'))(_0x0b13('0x13'));var utils=require(_0x0b13('0x14'));var config=require(_0x0b13('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x253899,_0x316cfc){_0x316cfc=_0x316cfc||0xcc;return function(_0x4e2167){if(_0x4e2167){return _0x253899[_0x0b13('0x16')](_0x316cfc);}return _0x253899[_0x0b13('0x17')](_0x316cfc)[_0x0b13('0x18')]();};}function respondWithResult(_0x565e46,_0x146465){_0x146465=_0x146465||0xc8;return function(_0x404800){if(_0x404800){return _0x565e46[_0x0b13('0x17')](_0x146465)[_0x0b13('0x19')](_0x404800);}};}function respondWithFilteredResult(_0x4c9a4d,_0x53d3c8){return function(_0x3566f6){if(_0x3566f6){var _0x4727a9=_0x3566f6['count'],_0x3d12bb=_0x53d3c8[_0x0b13('0x1a')],_0x275bbf=_0x53d3c8[_0x0b13('0x1a')]+_0x53d3c8['limit'],_0x58b1e9;if(_0x275bbf>=_0x4727a9){_0x275bbf=_0x4727a9;_0x58b1e9=0xc8;}else{_0x58b1e9=0xce;}_0x4c9a4d[_0x0b13('0x17')](_0x58b1e9);return _0x4c9a4d[_0x0b13('0x1b')](_0x0b13('0x1c'),_0x3d12bb+'-'+_0x275bbf+'/'+_0x4727a9)[_0x0b13('0x19')](_0x3566f6);}return null;};}function patchUpdates(_0x37401f){return function(_0x3bd19a){try{jsonpatch[_0x0b13('0x1d')](_0x3bd19a,_0x37401f,!![]);}catch(_0x334e65){return BPromise[_0x0b13('0x1e')](_0x334e65);}return _0x3bd19a['save']();};}function saveUpdates(_0x4d89cc,_0x14b675){return function(_0x362b07){if(_0x362b07){return _0x362b07['update'](_0x4d89cc)[_0x0b13('0x1f')](function(_0x5da07e){return _0x5da07e;});}return null;};}function removeEntity(_0x3b1b05,_0x4013c0){return function(_0x1790ce){if(_0x1790ce){return _0x1790ce[_0x0b13('0x20')]()['then'](function(){_0x3b1b05[_0x0b13('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x37ad7b,_0xc29f5f){return function(_0x3a6ee9){if(!_0x3a6ee9){_0x37ad7b['sendStatus'](0x194);}return _0x3a6ee9;};}function handleError(_0x3169c7,_0x49fde6){_0x49fde6=_0x49fde6||0x1f4;return function(_0x50830c){logger[_0x0b13('0x21')](_0x50830c['stack']);if(_0x50830c[_0x0b13('0x22')]){delete _0x50830c[_0x0b13('0x22')];}_0x3169c7[_0x0b13('0x17')](_0x49fde6)[_0x0b13('0x23')](_0x50830c);};}exports['index']=function(_0x233388,_0x1ed2c7){var _0xe61d63={},_0x4d438a={},_0x3c44bb={'count':0x0,'rows':[]};var _0xa35168=db[_0x0b13('0x24')][_0x0b13('0x25')];_0x4d438a[_0x0b13('0x26')]=_[_0x0b13('0x27')](_0xa35168);var _0x132cc8={'dateStart':_0x233388[_0x0b13('0x28')][_0x0b13('0x29')],'dateEnd':_0x233388[_0x0b13('0x28')][_0x0b13('0x2a')]};delete _0x233388[_0x0b13('0x28')][_0x0b13('0x29')];delete _0x233388['query'][_0x0b13('0x2a')];_0x4d438a['query']=_[_0x0b13('0x27')](_0x233388[_0x0b13('0x28')]);_0x4d438a[_0x0b13('0x2b')]=_[_0x0b13('0x2c')](_0x4d438a['model'],_0x4d438a['query']);_0xe61d63[_0x0b13('0x2d')]=_[_0x0b13('0x2c')](_0x4d438a['model'],qs[_0x0b13('0x2e')](_0x233388[_0x0b13('0x28')][_0x0b13('0x2e')]));_0xe61d63['attributes']=_0xe61d63[_0x0b13('0x2d')][_0x0b13('0x2f')]?_0xe61d63['attributes']:_0x4d438a[_0x0b13('0x26')];if(!_0x233388['query'][_0x0b13('0x30')]('nolimit')){_0xe61d63['limit']=qs[_0x0b13('0x31')](_0x233388[_0x0b13('0x28')][_0x0b13('0x31')]);_0xe61d63[_0x0b13('0x1a')]=qs[_0x0b13('0x1a')](_0x233388[_0x0b13('0x28')][_0x0b13('0x1a')]);}_0xe61d63[_0x0b13('0x32')]=qs[_0x0b13('0x33')](_0x233388['query'][_0x0b13('0x33')]);_0xe61d63['where']=qs[_0x0b13('0x2b')](_[_0x0b13('0x34')](_0x233388[_0x0b13('0x28')],_0x4d438a[_0x0b13('0x2b')]));if(_0x132cc8[_0x0b13('0x29')]){if(_0x132cc8['dateEnd']){_0x132cc8[_0x0b13('0x2a')]=moment(_0x132cc8[_0x0b13('0x2a')])['add'](0x1,'day');}else{_0x132cc8['dateEnd']=moment(_0x132cc8['dateStart'])[_0x0b13('0x35')](0x1,_0x0b13('0x36'));}_[_0x0b13('0x37')](_0xe61d63[_0x0b13('0x38')],{'createdAt':{'$gte':_0x132cc8[_0x0b13('0x29')],'$lte':_0x132cc8[_0x0b13('0x2a')]}});}if(_0x233388[_0x0b13('0x28')]['filter']){_0xe61d63['where']=_['merge'](_0xe61d63[_0x0b13('0x38')],{'$or':_['map'](_0xa35168,function(_0x5ee8af){if(_0x5ee8af['type'][_0x0b13('0x39')]!==_0x0b13('0x3a')){var _0x56ff13={};_0x56ff13[_0x5ee8af[_0x0b13('0x3b')]]={'$like':'%'+_0x233388[_0x0b13('0x28')][_0x0b13('0x3c')]+'%'};return _0x56ff13;}})});}_0xe61d63=_[_0x0b13('0x37')]({},_0xe61d63,_0x233388['options']);var _0x1a46bb={'where':_0xe61d63[_0x0b13('0x38')]};return db[_0x0b13('0x24')][_0x0b13('0x3d')](_0x1a46bb)['then'](function(_0x145db1){_0x3c44bb[_0x0b13('0x3d')]=_0x145db1;if(_0x233388['query']['includeAll']){_0xe61d63[_0x0b13('0x3e')]=[{'all':!![]}];}return db[_0x0b13('0x24')][_0x0b13('0x3f')](_0xe61d63);})['then'](function(_0x3b0a5d){_0x3c44bb['rows']=_0x3b0a5d;return _0x3c44bb;})[_0x0b13('0x1f')](respondWithFilteredResult(_0x1ed2c7,_0xe61d63))['catch'](handleError(_0x1ed2c7,null));};exports[_0x0b13('0x40')]=function(_0x131d71,_0x147558){var _0x572f05={'raw':!![],'where':{'id':_0x131d71[_0x0b13('0x41')]['id']}},_0x23b2f2={};_0x23b2f2[_0x0b13('0x26')]=_[_0x0b13('0x27')](db['MailTransferReport'][_0x0b13('0x25')]);_0x23b2f2['query']=_[_0x0b13('0x27')](_0x131d71[_0x0b13('0x28')]);_0x23b2f2[_0x0b13('0x2b')]=_[_0x0b13('0x2c')](_0x23b2f2[_0x0b13('0x26')],_0x23b2f2[_0x0b13('0x28')]);_0x572f05[_0x0b13('0x2d')]=_[_0x0b13('0x2c')](_0x23b2f2[_0x0b13('0x26')],qs['fields'](_0x131d71[_0x0b13('0x28')][_0x0b13('0x2e')]));_0x572f05[_0x0b13('0x2d')]=_0x572f05[_0x0b13('0x2d')][_0x0b13('0x2f')]?_0x572f05[_0x0b13('0x2d')]:_0x23b2f2[_0x0b13('0x26')];if(_0x131d71[_0x0b13('0x28')][_0x0b13('0x42')]){_0x572f05[_0x0b13('0x3e')]=[{'all':!![]}];}_0x572f05=_[_0x0b13('0x37')]({},_0x572f05,_0x131d71[_0x0b13('0x43')]);return db[_0x0b13('0x24')][_0x0b13('0x44')](_0x572f05)['then'](handleEntityNotFound(_0x147558,null))['then'](respondWithResult(_0x147558,null))[_0x0b13('0x45')](handleError(_0x147558,null));};exports[_0x0b13('0x46')]=function(_0x38ef72,_0x2c250a){return db['MailTransferReport'][_0x0b13('0x46')](_0x38ef72[_0x0b13('0x47')],{})[_0x0b13('0x1f')](respondWithResult(_0x2c250a,0xc9))[_0x0b13('0x45')](handleError(_0x2c250a,null));};exports[_0x0b13('0x48')]=function(_0x22127e,_0x4fc0c9){if(_0x22127e['body']['id']){delete _0x22127e[_0x0b13('0x47')]['id'];}return db['MailTransferReport'][_0x0b13('0x44')]({'where':{'id':_0x22127e[_0x0b13('0x41')]['id']}})['then'](handleEntityNotFound(_0x4fc0c9,null))[_0x0b13('0x1f')](saveUpdates(_0x22127e['body'],null))[_0x0b13('0x1f')](respondWithResult(_0x4fc0c9,null))['catch'](handleError(_0x4fc0c9,null));};exports[_0x0b13('0x20')]=function(_0x45fdb6,_0x1cd316){return db[_0x0b13('0x24')]['find']({'where':{'id':_0x45fdb6[_0x0b13('0x41')]['id']}})['then'](handleEntityNotFound(_0x1cd316,null))[_0x0b13('0x1f')](removeEntity(_0x1cd316,null))[_0x0b13('0x45')](handleError(_0x1cd316,null));};exports[_0x0b13('0x49')]=function(_0x5bd8f2,_0x482a04){return db[_0x0b13('0x24')][_0x0b13('0x49')]()[_0x0b13('0x1f')](respondWithResult(_0x482a04,null))[_0x0b13('0x45')](handleError(_0x482a04,null));};
\ No newline at end of file
index a8ba8a6..b5014c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb974=['util','bluebird','exports','MailTransferReport','uniqueid','lodash'];(function(_0x2d240b,_0x28245c){var _0x6543c5=function(_0x118a1f){while(--_0x118a1f){_0x2d240b['push'](_0x2d240b['shift']());}};_0x6543c5(++_0x28245c);}(_0xb974,0xb3));var _0x4b97=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xb974[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x4b97('0x0'));var util=require(_0x4b97('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x4b97('0x2'));var rp=require('request-promise');var attributes=require('./mailTransferReport.attributes');module[_0x4b97('0x3')]=function(_0xb3aca8,_0x306bfb){return _0xb3aca8['define'](_0x4b97('0x4'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x4b97('0x5'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcdb9=['./mailTransferReport.attributes','exports','MailTransferReport','uniqueid','util','../../config/logger','api','bluebird','request-promise'];(function(_0x5d5045,_0x107f38){var _0xe7d49e=function(_0x1c9290){while(--_0x1c9290){_0x5d5045['push'](_0x5d5045['shift']());}};_0xe7d49e(++_0x107f38);}(_0xcdb9,0x82));var _0x9cdb=function(_0x42e473,_0x35ff20){_0x42e473=_0x42e473-0x0;var _0x4f7b46=_0xcdb9[_0x42e473];return _0x4f7b46;};'use strict';var _=require('lodash');var util=require(_0x9cdb('0x0'));var logger=require(_0x9cdb('0x1'))(_0x9cdb('0x2'));var moment=require('moment');var BPromise=require(_0x9cdb('0x3'));var rp=require(_0x9cdb('0x4'));var attributes=require(_0x9cdb('0x5'));module[_0x9cdb('0x6')]=function(_0x366bab,_0x5ba925){return _0x366bab['define'](_0x9cdb('0x7'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x9cdb('0x8'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 488208b..001d94d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b47=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x294f8f,_0x1976df){var _0x437448=function(_0x12c551){while(--_0x12c551){_0x294f8f['push'](_0x294f8f['shift']());}};_0x437448(++_0x1976df);}(_0x2b47,0x7f));var _0x72b4=function(_0x23d870,_0x11b01d){_0x23d870=_0x23d870-0x0;var _0x559592=_0x2b47[_0x23d870];return _0x559592;};'use strict';var _=require(_0x72b4('0x0'));var util=require(_0x72b4('0x1'));var moment=require(_0x72b4('0x2'));var BPromise=require(_0x72b4('0x3'));var rs=require(_0x72b4('0x4'));var fs=require('fs');var Redis=require(_0x72b4('0x5'));var db=require(_0x72b4('0x6'))['db'];var utils=require(_0x72b4('0x7'));var logger=require(_0x72b4('0x8'))(_0x72b4('0x9'));var config=require('../../config/environment');var jayson=require(_0x72b4('0xa'));var client=jayson[_0x72b4('0xb')][_0x72b4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x507c45,_0x262f50,_0x50a687){return new BPromise(function(_0x9c3e3a,_0x5b599f){return client[_0x72b4('0xd')](_0x507c45,_0x50a687)[_0x72b4('0xe')](function(_0x4827de){logger[_0x72b4('0xf')](_0x72b4('0x10'),_0x262f50,'request\x20sent');logger[_0x72b4('0x11')](_0x72b4('0x12'),_0x262f50,'request\x20sent',JSON[_0x72b4('0x13')](_0x4827de));if(_0x4827de[_0x72b4('0x14')]){if(_0x4827de['error'][_0x72b4('0x15')]===0x1f4){logger['error'](_0x72b4('0x10'),_0x262f50,_0x4827de[_0x72b4('0x14')][_0x72b4('0x16')]);return _0x5b599f(_0x4827de[_0x72b4('0x14')][_0x72b4('0x16')]);}logger[_0x72b4('0x14')](_0x72b4('0x10'),_0x262f50,_0x4827de['error'][_0x72b4('0x16')]);return _0x9c3e3a(_0x4827de[_0x72b4('0x14')][_0x72b4('0x16')]);}else{logger['info'](_0x72b4('0x10'),_0x262f50,'request\x20sent');_0x9c3e3a(_0x4827de[_0x72b4('0x17')][_0x72b4('0x16')]);}})[_0x72b4('0x18')](function(_0x2ccfa3){logger[_0x72b4('0x14')](_0x72b4('0x10'),_0x262f50,_0x2ccfa3);_0x5b599f(_0x2ccfa3);});});}
\ No newline at end of file
+var _0xcf72=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','MailTransferReport,\x20%s,\x20%s','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xcf72,0x198));var _0x2cf7=function(_0x31083d,_0xb3a299){_0x31083d=_0x31083d-0x0;var _0x27a2ad=_0xcf72[_0x31083d];return _0x27a2ad;};'use strict';var _=require(_0x2cf7('0x0'));var util=require(_0x2cf7('0x1'));var moment=require(_0x2cf7('0x2'));var BPromise=require('bluebird');var rs=require(_0x2cf7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2cf7('0x4'))['db'];var utils=require(_0x2cf7('0x5'));var logger=require(_0x2cf7('0x6'))(_0x2cf7('0x7'));var config=require(_0x2cf7('0x8'));var jayson=require(_0x2cf7('0x9'));var client=jayson[_0x2cf7('0xa')][_0x2cf7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9e6588,_0x17f347,_0x1c0503){return new BPromise(function(_0x55c249,_0x1f9e60){return client[_0x2cf7('0xc')](_0x9e6588,_0x1c0503)[_0x2cf7('0xd')](function(_0x18be74){logger[_0x2cf7('0xe')]('MailTransferReport,\x20%s,\x20%s',_0x17f347,_0x2cf7('0xf'));logger[_0x2cf7('0x10')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x17f347,_0x2cf7('0xf'),JSON[_0x2cf7('0x11')](_0x18be74));if(_0x18be74[_0x2cf7('0x12')]){if(_0x18be74[_0x2cf7('0x12')][_0x2cf7('0x13')]===0x1f4){logger[_0x2cf7('0x12')]('MailTransferReport,\x20%s,\x20%s',_0x17f347,_0x18be74[_0x2cf7('0x12')][_0x2cf7('0x14')]);return _0x1f9e60(_0x18be74['error'][_0x2cf7('0x14')]);}logger[_0x2cf7('0x12')](_0x2cf7('0x15'),_0x17f347,_0x18be74[_0x2cf7('0x12')][_0x2cf7('0x14')]);return _0x55c249(_0x18be74[_0x2cf7('0x12')][_0x2cf7('0x14')]);}else{logger[_0x2cf7('0xe')]('MailTransferReport,\x20%s,\x20%s',_0x17f347,_0x2cf7('0xf'));_0x55c249(_0x18be74[_0x2cf7('0x16')]['message']);}})['catch'](function(_0xd374e4){logger[_0x2cf7('0x12')](_0x2cf7('0x15'),_0x17f347,_0xd374e4);_0x1f9e60(_0xd374e4);});});}
\ No newline at end of file
index 54b749c..f475ec7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c10=['../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','../../components/auth/service'];(function(_0x48a3e4,_0x1f7d42){var _0x438cf5=function(_0x1169fb){while(--_0x1169fb){_0x48a3e4['push'](_0x48a3e4['shift']());}};_0x438cf5(++_0x1f7d42);}(_0x7c10,0x177));var _0x07c1=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x7c10[_0x160c73];return _0xd9302;};'use strict';var multer=require(_0x07c1('0x0'));var util=require(_0x07c1('0x1'));var path=require(_0x07c1('0x2'));var timeout=require(_0x07c1('0x3'));var express=require('express');var router=express['Router']();var auth=require(_0x07c1('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x07c1('0x5'));var controller=require(_0x07c1('0x6'));router[_0x07c1('0x7')]('/',auth[_0x07c1('0x8')](),controller[_0x07c1('0x9')]);router['get'](_0x07c1('0xa'),auth['isAuthenticated'](),controller[_0x07c1('0xb')]);router['get'](_0x07c1('0xc'),auth[_0x07c1('0x8')](),controller['show']);router['post']('/',auth[_0x07c1('0x8')](),controller[_0x07c1('0xd')]);router[_0x07c1('0xe')]('/:id',auth[_0x07c1('0x8')](),controller[_0x07c1('0xf')]);router[_0x07c1('0x10')](_0x07c1('0xc'),auth[_0x07c1('0x8')](),controller[_0x07c1('0x11')]);module[_0x07c1('0x12')]=router;
\ No newline at end of file
+var _0x42e0=['get','/describe','describe','show','post','create','put','/:id','update','destroy','util','express','Router','../../components/interaction/service','../../config/environment','./memberReport.controller','isAuthenticated'];(function(_0x585eaa,_0x185d64){var _0x2234ad=function(_0x12d732){while(--_0x12d732){_0x585eaa['push'](_0x585eaa['shift']());}};_0x2234ad(++_0x185d64);}(_0x42e0,0x1c4));var _0x042e=function(_0x43c80e,_0x573e6d){_0x43c80e=_0x43c80e-0x0;var _0x128bb7=_0x42e0[_0x43c80e];return _0x128bb7;};'use strict';var multer=require('multer');var util=require(_0x042e('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x042e('0x1'));var router=express[_0x042e('0x2')]();var auth=require('../../components/auth/service');var interaction=require(_0x042e('0x3'));var config=require(_0x042e('0x4'));var controller=require(_0x042e('0x5'));router['get']('/',auth[_0x042e('0x6')](),controller['index']);router[_0x042e('0x7')](_0x042e('0x8'),auth[_0x042e('0x6')](),controller[_0x042e('0x9')]);router[_0x042e('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x042e('0xa')]);router[_0x042e('0xb')]('/',auth[_0x042e('0x6')](),controller[_0x042e('0xc')]);router[_0x042e('0xd')](_0x042e('0xe'),auth[_0x042e('0x6')](),controller[_0x042e('0xf')]);router['delete'](_0x042e('0xe'),auth[_0x042e('0x6')](),controller[_0x042e('0x10')]);module['exports']=router;
\ No newline at end of file
index 8b804e2..ad84db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6726=['duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','getDataValue','enterAt','diff','seconds','setDataValue','exitAt'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x6726,0x1d9));var _0x6672=function(_0x4f83ca,_0x46f67a){_0x4f83ca=_0x4f83ca-0x0;var _0x1fbac3=_0x6726[_0x4f83ca];return _0x1fbac3;};'use strict';var Sequelize=require(_0x6672('0x0'));var moment=require(_0x6672('0x1'));module[_0x6672('0x2')]={'channel':{'type':Sequelize[_0x6672('0x3')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x6672('0x3')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0x6672('0x4'),'comment':_0x6672('0x5')},'duration':{'type':Sequelize[_0x6672('0x6')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x394b82){var _0xae5b36=moment(_0x394b82);var _0xfd68b3=moment(this[_0x6672('0x7')](_0x6672('0x8')));var _0x30c8ce=_0xae5b36[_0x6672('0x9')](_0xfd68b3,_0x6672('0xa'));this[_0x6672('0xb')](_0x6672('0xc'),_0x394b82);this[_0x6672('0xb')](_0x6672('0xd'),_0x30c8ce||null);}},'data1':{'type':Sequelize[_0x6672('0x3')],'comment':_0x6672('0xe')},'data2':{'type':Sequelize['STRING'],'comment':_0x6672('0xf')},'data3':{'type':Sequelize['STRING'],'comment':_0x6672('0x10')},'data4':{'type':Sequelize[_0x6672('0x3')],'comment':_0x6672('0x11')},'data5':{'type':Sequelize[_0x6672('0x3')],'comment':'talk:[queue]'},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x6672('0x6')]},'uniqueid':{'type':Sequelize[_0x6672('0x3')]}};
\ No newline at end of file
+var _0x80d7=['enterAt','diff','seconds','setDataValue','exitAt','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','talk:[queue]','sequelize','exports','STRING','INTEGER','DATE','getDataValue'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x80d7,0xb0));var _0x780d=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x80d7[_0x20a558];return _0x53d3f7;};'use strict';var Sequelize=require(_0x780d('0x0'));var moment=require('moment');module[_0x780d('0x1')]={'channel':{'type':Sequelize[_0x780d('0x2')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x780d('0x2')]},'type':{'type':Sequelize[_0x780d('0x2')],'defaultValue':'DEFAULT\x20PAUSE','comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x780d('0x3')]},'enterAt':{'type':Sequelize[_0x780d('0x4')]},'exitAt':{'type':Sequelize[_0x780d('0x4')],'set':function(_0x433590){var _0x528aba=moment(_0x433590);var _0x404d91=moment(this[_0x780d('0x5')](_0x780d('0x6')));var _0x78bd3e=_0x528aba[_0x780d('0x7')](_0x404d91,_0x780d('0x8'));this[_0x780d('0x9')](_0x780d('0xa'),_0x433590);this[_0x780d('0x9')]('duration',_0x78bd3e||null);}},'data1':{'type':Sequelize[_0x780d('0x2')],'comment':_0x780d('0xb')},'data2':{'type':Sequelize[_0x780d('0x2')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0x780d('0x2')],'comment':_0x780d('0xc')},'data4':{'type':Sequelize[_0x780d('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0x780d('0xd')},'role':{'type':Sequelize[_0x780d('0x2')]},'internal':{'type':Sequelize[_0x780d('0x3')]},'uniqueid':{'type':Sequelize[_0x780d('0x2')]}};
\ No newline at end of file
index 92b845c..ee10e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6334=['set','apply','reject','save','update','then','destroy','stack','name','send','index','MemberReport','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','day','add','merge','map','type','key','VIRTUAL','field','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/utils','sendStatus','status','end','json','count','offset'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x6334,0x15d));var _0x4633=function(_0x4ed37d,_0x1a84c9){_0x4ed37d=_0x4ed37d-0x0;var _0x4fb2c5=_0x6334[_0x4ed37d];return _0x4fb2c5;};'use strict';var pdf=require(_0x4633('0x0'));var emlformat=require(_0x4633('0x1'));var rimraf=require(_0x4633('0x2'));var zipdir=require(_0x4633('0x3'));var jsonpatch=require(_0x4633('0x4'));var rp=require(_0x4633('0x5'));var moment=require(_0x4633('0x6'));var BPromise=require(_0x4633('0x7'));var Mustache=require('mustache');var util=require(_0x4633('0x8'));var path=require('path');var sox=require(_0x4633('0x9'));var csv=require(_0x4633('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x4633('0xb'));var squel=require(_0x4633('0xc'));var crypto=require(_0x4633('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4633('0xe'));var toCsv=require(_0x4633('0xa'));var querystring=require(_0x4633('0xf'));var Papa=require(_0x4633('0x10'));var Redis=require('ioredis');var qs=require(_0x4633('0x11'));var logger=require('../../config/logger')(_0x4633('0x12'));var utils=require(_0x4633('0x13'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x210b6a,_0x5602a2){_0x5602a2=_0x5602a2||0xcc;return function(_0x5f25ff){if(_0x5f25ff){return _0x210b6a[_0x4633('0x14')](_0x5602a2);}return _0x210b6a[_0x4633('0x15')](_0x5602a2)[_0x4633('0x16')]();};}function respondWithResult(_0x417ff8,_0x2137e4){_0x2137e4=_0x2137e4||0xc8;return function(_0x461dde){if(_0x461dde){return _0x417ff8[_0x4633('0x15')](_0x2137e4)[_0x4633('0x17')](_0x461dde);}};}function respondWithFilteredResult(_0x46dea1,_0x25f685){return function(_0x1a5b17){if(_0x1a5b17){var _0x4ef423=_0x1a5b17[_0x4633('0x18')],_0x5657ab=_0x25f685[_0x4633('0x19')],_0x32c3a6=_0x25f685[_0x4633('0x19')]+_0x25f685['limit'],_0x2b0773;if(_0x32c3a6>=_0x4ef423){_0x32c3a6=_0x4ef423;_0x2b0773=0xc8;}else{_0x2b0773=0xce;}_0x46dea1[_0x4633('0x15')](_0x2b0773);return _0x46dea1[_0x4633('0x1a')]('Content-Range',_0x5657ab+'-'+_0x32c3a6+'/'+_0x4ef423)[_0x4633('0x17')](_0x1a5b17);}return null;};}function patchUpdates(_0x38780d){return function(_0x261641){try{jsonpatch[_0x4633('0x1b')](_0x261641,_0x38780d,!![]);}catch(_0x3b39f8){return BPromise[_0x4633('0x1c')](_0x3b39f8);}return _0x261641[_0x4633('0x1d')]();};}function saveUpdates(_0x383561,_0x1398b3){return function(_0x2484bb){if(_0x2484bb){return _0x2484bb[_0x4633('0x1e')](_0x383561)[_0x4633('0x1f')](function(_0x137641){return _0x137641;});}return null;};}function removeEntity(_0x53617e,_0x2a6ec6){return function(_0x224219){if(_0x224219){return _0x224219[_0x4633('0x20')]()[_0x4633('0x1f')](function(){_0x53617e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xc86715,_0xf646db){return function(_0x1cd68f){if(!_0x1cd68f){_0xc86715[_0x4633('0x14')](0x194);}return _0x1cd68f;};}function handleError(_0x44020,_0x737400){_0x737400=_0x737400||0x1f4;return function(_0x4f331c){logger['error'](_0x4f331c[_0x4633('0x21')]);if(_0x4f331c[_0x4633('0x22')]){delete _0x4f331c[_0x4633('0x22')];}_0x44020['status'](_0x737400)[_0x4633('0x23')](_0x4f331c);};}exports[_0x4633('0x24')]=function(_0x59edc3,_0x28127f){var _0x50599d={},_0x52c77c={},_0xcc9cfa={'count':0x0,'rows':[]};var _0x55633e=db[_0x4633('0x25')]['rawAttributes'];_0x52c77c[_0x4633('0x26')]=_[_0x4633('0x27')](_0x55633e);var _0x3076c2={'dateStart':_0x59edc3[_0x4633('0x28')][_0x4633('0x29')],'dateEnd':_0x59edc3[_0x4633('0x28')][_0x4633('0x2a')]};delete _0x59edc3['query'][_0x4633('0x29')];delete _0x59edc3[_0x4633('0x28')][_0x4633('0x2a')];_0x52c77c[_0x4633('0x28')]=_['keys'](_0x59edc3['query']);_0x52c77c[_0x4633('0x2b')]=_[_0x4633('0x2c')](_0x52c77c[_0x4633('0x26')],_0x52c77c[_0x4633('0x28')]);_0x50599d[_0x4633('0x2d')]=_[_0x4633('0x2c')](_0x52c77c['model'],qs[_0x4633('0x2e')](_0x59edc3[_0x4633('0x28')][_0x4633('0x2e')]));_0x50599d[_0x4633('0x2d')]=_0x50599d[_0x4633('0x2d')][_0x4633('0x2f')]?_0x50599d['attributes']:_0x52c77c[_0x4633('0x26')];if(!_0x59edc3['query'][_0x4633('0x30')]('nolimit')){_0x50599d[_0x4633('0x31')]=qs['limit'](_0x59edc3[_0x4633('0x28')][_0x4633('0x31')]);_0x50599d['offset']=qs[_0x4633('0x19')](_0x59edc3[_0x4633('0x28')]['offset']);}_0x50599d[_0x4633('0x32')]=qs[_0x4633('0x33')](_0x59edc3[_0x4633('0x28')][_0x4633('0x33')]);_0x50599d[_0x4633('0x34')]=qs[_0x4633('0x2b')](_[_0x4633('0x35')](_0x59edc3['query'],_0x52c77c[_0x4633('0x2b')]));if(_0x3076c2['dateStart']){if(_0x3076c2[_0x4633('0x2a')]){_0x3076c2[_0x4633('0x2a')]=moment(_0x3076c2[_0x4633('0x2a')])['add'](0x1,_0x4633('0x36'));}else{_0x3076c2[_0x4633('0x2a')]=moment(_0x3076c2[_0x4633('0x29')])[_0x4633('0x37')](0x1,_0x4633('0x36'));}_[_0x4633('0x38')](_0x50599d['where'],{'createdAt':{'$gte':_0x3076c2[_0x4633('0x29')],'$lte':_0x3076c2[_0x4633('0x2a')]}});}if(_0x59edc3['query']['filter']){_0x50599d[_0x4633('0x34')]=_[_0x4633('0x38')](_0x50599d[_0x4633('0x34')],{'$or':_[_0x4633('0x39')](_0x55633e,function(_0x298f86){if(_0x298f86[_0x4633('0x3a')][_0x4633('0x3b')]!==_0x4633('0x3c')){var _0x401b95={};_0x401b95[_0x298f86[_0x4633('0x3d')]]={'$like':'%'+_0x59edc3[_0x4633('0x28')][_0x4633('0x3e')]+'%'};return _0x401b95;}})});}_0x50599d=_[_0x4633('0x38')]({},_0x50599d,_0x59edc3[_0x4633('0x3f')]);var _0x29fee4={'where':_0x50599d[_0x4633('0x34')]};return db[_0x4633('0x25')][_0x4633('0x18')](_0x29fee4)[_0x4633('0x1f')](function(_0x330528){_0xcc9cfa[_0x4633('0x18')]=_0x330528;if(_0x59edc3[_0x4633('0x28')][_0x4633('0x40')]){_0x50599d[_0x4633('0x41')]=[{'all':!![]}];}return db[_0x4633('0x25')][_0x4633('0x42')](_0x50599d);})['then'](function(_0x424ff8){_0xcc9cfa[_0x4633('0x43')]=_0x424ff8;return _0xcc9cfa;})['then'](respondWithFilteredResult(_0x28127f,_0x50599d))[_0x4633('0x44')](handleError(_0x28127f,null));};exports[_0x4633('0x45')]=function(_0x21a7e3,_0xd945f7){var _0x2f6e47={'raw':!![],'where':{'id':_0x21a7e3['params']['id']}},_0x56ac00={};_0x56ac00['model']=_[_0x4633('0x27')](db[_0x4633('0x25')]['rawAttributes']);_0x56ac00['query']=_['keys'](_0x21a7e3[_0x4633('0x28')]);_0x56ac00[_0x4633('0x2b')]=_[_0x4633('0x2c')](_0x56ac00[_0x4633('0x26')],_0x56ac00[_0x4633('0x28')]);_0x2f6e47[_0x4633('0x2d')]=_['intersection'](_0x56ac00[_0x4633('0x26')],qs[_0x4633('0x2e')](_0x21a7e3['query'][_0x4633('0x2e')]));_0x2f6e47['attributes']=_0x2f6e47['attributes'][_0x4633('0x2f')]?_0x2f6e47['attributes']:_0x56ac00[_0x4633('0x26')];if(_0x21a7e3[_0x4633('0x28')][_0x4633('0x40')]){_0x2f6e47[_0x4633('0x41')]=[{'all':!![]}];}_0x2f6e47=_['merge']({},_0x2f6e47,_0x21a7e3[_0x4633('0x3f')]);return db[_0x4633('0x25')][_0x4633('0x46')](_0x2f6e47)[_0x4633('0x1f')](handleEntityNotFound(_0xd945f7,null))[_0x4633('0x1f')](respondWithResult(_0xd945f7,null))[_0x4633('0x44')](handleError(_0xd945f7,null));};exports['create']=function(_0x26be8c,_0x28be1c){return db[_0x4633('0x25')][_0x4633('0x47')](_0x26be8c[_0x4633('0x48')],{})[_0x4633('0x1f')](respondWithResult(_0x28be1c,0xc9))[_0x4633('0x44')](handleError(_0x28be1c,null));};exports[_0x4633('0x1e')]=function(_0x113bc7,_0xee7e09){if(_0x113bc7[_0x4633('0x48')]['id']){delete _0x113bc7[_0x4633('0x48')]['id'];}return db[_0x4633('0x25')][_0x4633('0x46')]({'where':{'id':_0x113bc7[_0x4633('0x49')]['id']}})[_0x4633('0x1f')](handleEntityNotFound(_0xee7e09,null))[_0x4633('0x1f')](saveUpdates(_0x113bc7['body'],null))[_0x4633('0x1f')](respondWithResult(_0xee7e09,null))[_0x4633('0x44')](handleError(_0xee7e09,null));};exports['destroy']=function(_0x2eb55c,_0x363032){return db[_0x4633('0x25')][_0x4633('0x46')]({'where':{'id':_0x2eb55c[_0x4633('0x49')]['id']}})[_0x4633('0x1f')](handleEntityNotFound(_0x363032,null))[_0x4633('0x1f')](removeEntity(_0x363032,null))[_0x4633('0x44')](handleError(_0x363032,null));};exports[_0x4633('0x4a')]=function(_0x59aa3b,_0x1ae407){return db[_0x4633('0x25')][_0x4633('0x4a')]()['then'](respondWithResult(_0x1ae407,null))['catch'](handleError(_0x1ae407,null));};
\ No newline at end of file
+var _0xa6db=['limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','send','index','MemberReport','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','add','day','merge','filter','map','type','key','VIRTUAL','field','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','update','body','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','count','offset'];(function(_0x4b5813,_0x5769de){var _0x423465=function(_0x18071f){while(--_0x18071f){_0x4b5813['push'](_0x4b5813['shift']());}};_0x423465(++_0x5769de);}(_0xa6db,0x84));var _0xba6d=function(_0x57c340,_0x5ae0f7){_0x57c340=_0x57c340-0x0;var _0x48dbd2=_0xa6db[_0x57c340];return _0x48dbd2;};'use strict';var pdf=require(_0xba6d('0x0'));var emlformat=require(_0xba6d('0x1'));var rimraf=require(_0xba6d('0x2'));var zipdir=require(_0xba6d('0x3'));var jsonpatch=require(_0xba6d('0x4'));var rp=require(_0xba6d('0x5'));var moment=require(_0xba6d('0x6'));var BPromise=require(_0xba6d('0x7'));var Mustache=require(_0xba6d('0x8'));var util=require(_0xba6d('0x9'));var path=require(_0xba6d('0xa'));var sox=require(_0xba6d('0xb'));var csv=require(_0xba6d('0xc'));var ejs=require(_0xba6d('0xd'));var fs=require('fs');var _=require(_0xba6d('0xe'));var squel=require(_0xba6d('0xf'));var crypto=require(_0xba6d('0x10'));var jsforce=require(_0xba6d('0x11'));var deskjs=require(_0xba6d('0x12'));var toCsv=require(_0xba6d('0xc'));var querystring=require(_0xba6d('0x13'));var Papa=require(_0xba6d('0x14'));var Redis=require(_0xba6d('0x15'));var qs=require('../../components/parsers/qs');var logger=require(_0xba6d('0x16'))(_0xba6d('0x17'));var utils=require(_0xba6d('0x18'));var config=require(_0xba6d('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x295892,_0x32901a){_0x32901a=_0x32901a||0xcc;return function(_0x10083a){if(_0x10083a){return _0x295892[_0xba6d('0x1a')](_0x32901a);}return _0x295892['status'](_0x32901a)[_0xba6d('0x1b')]();};}function respondWithResult(_0x4dde30,_0x951c41){_0x951c41=_0x951c41||0xc8;return function(_0x4379fe){if(_0x4379fe){return _0x4dde30[_0xba6d('0x1c')](_0x951c41)[_0xba6d('0x1d')](_0x4379fe);}};}function respondWithFilteredResult(_0x231de9,_0x31cc12){return function(_0x865350){if(_0x865350){var _0x5e10bf=_0x865350[_0xba6d('0x1e')],_0x342817=_0x31cc12[_0xba6d('0x1f')],_0x3445c5=_0x31cc12[_0xba6d('0x1f')]+_0x31cc12[_0xba6d('0x20')],_0x4c2c29;if(_0x3445c5>=_0x5e10bf){_0x3445c5=_0x5e10bf;_0x4c2c29=0xc8;}else{_0x4c2c29=0xce;}_0x231de9[_0xba6d('0x1c')](_0x4c2c29);return _0x231de9[_0xba6d('0x21')](_0xba6d('0x22'),_0x342817+'-'+_0x3445c5+'/'+_0x5e10bf)[_0xba6d('0x1d')](_0x865350);}return null;};}function patchUpdates(_0x21d54c){return function(_0xe92b66){try{jsonpatch[_0xba6d('0x23')](_0xe92b66,_0x21d54c,!![]);}catch(_0x10573a){return BPromise[_0xba6d('0x24')](_0x10573a);}return _0xe92b66[_0xba6d('0x25')]();};}function saveUpdates(_0x107e59,_0x28210f){return function(_0x152193){if(_0x152193){return _0x152193['update'](_0x107e59)[_0xba6d('0x26')](function(_0x33346f){return _0x33346f;});}return null;};}function removeEntity(_0x493a67,_0x43fac1){return function(_0x21b9ae){if(_0x21b9ae){return _0x21b9ae[_0xba6d('0x27')]()[_0xba6d('0x26')](function(){_0x493a67[_0xba6d('0x1c')](0xcc)[_0xba6d('0x1b')]();});}};}function handleEntityNotFound(_0x321ea0,_0x59beba){return function(_0x321225){if(!_0x321225){_0x321ea0[_0xba6d('0x1a')](0x194);}return _0x321225;};}function handleError(_0x417536,_0x17cb24){_0x17cb24=_0x17cb24||0x1f4;return function(_0x167988){logger[_0xba6d('0x28')](_0x167988[_0xba6d('0x29')]);if(_0x167988['name']){delete _0x167988['name'];}_0x417536[_0xba6d('0x1c')](_0x17cb24)[_0xba6d('0x2a')](_0x167988);};}exports[_0xba6d('0x2b')]=function(_0x2c1938,_0x4fec2e){var _0x56cb79={},_0x212fed={},_0x38f57e={'count':0x0,'rows':[]};var _0x5b644e=db[_0xba6d('0x2c')]['rawAttributes'];_0x212fed[_0xba6d('0x2d')]=_[_0xba6d('0x2e')](_0x5b644e);var _0xbea2a4={'dateStart':_0x2c1938['query'][_0xba6d('0x2f')],'dateEnd':_0x2c1938[_0xba6d('0x30')][_0xba6d('0x31')]};delete _0x2c1938[_0xba6d('0x30')]['dateStart'];delete _0x2c1938[_0xba6d('0x30')][_0xba6d('0x31')];_0x212fed[_0xba6d('0x30')]=_['keys'](_0x2c1938['query']);_0x212fed[_0xba6d('0x32')]=_[_0xba6d('0x33')](_0x212fed[_0xba6d('0x2d')],_0x212fed[_0xba6d('0x30')]);_0x56cb79[_0xba6d('0x34')]=_[_0xba6d('0x33')](_0x212fed[_0xba6d('0x2d')],qs[_0xba6d('0x35')](_0x2c1938[_0xba6d('0x30')][_0xba6d('0x35')]));_0x56cb79[_0xba6d('0x34')]=_0x56cb79[_0xba6d('0x34')][_0xba6d('0x36')]?_0x56cb79[_0xba6d('0x34')]:_0x212fed[_0xba6d('0x2d')];if(!_0x2c1938[_0xba6d('0x30')][_0xba6d('0x37')]('nolimit')){_0x56cb79[_0xba6d('0x20')]=qs[_0xba6d('0x20')](_0x2c1938[_0xba6d('0x30')][_0xba6d('0x20')]);_0x56cb79[_0xba6d('0x1f')]=qs['offset'](_0x2c1938['query'][_0xba6d('0x1f')]);}_0x56cb79[_0xba6d('0x38')]=qs['sort'](_0x2c1938[_0xba6d('0x30')]['sort']);_0x56cb79[_0xba6d('0x39')]=qs[_0xba6d('0x32')](_[_0xba6d('0x3a')](_0x2c1938['query'],_0x212fed[_0xba6d('0x32')]));if(_0xbea2a4[_0xba6d('0x2f')]){if(_0xbea2a4[_0xba6d('0x31')]){_0xbea2a4[_0xba6d('0x31')]=moment(_0xbea2a4[_0xba6d('0x31')])[_0xba6d('0x3b')](0x1,_0xba6d('0x3c'));}else{_0xbea2a4[_0xba6d('0x31')]=moment(_0xbea2a4['dateStart'])[_0xba6d('0x3b')](0x1,_0xba6d('0x3c'));}_[_0xba6d('0x3d')](_0x56cb79[_0xba6d('0x39')],{'createdAt':{'$gte':_0xbea2a4[_0xba6d('0x2f')],'$lte':_0xbea2a4[_0xba6d('0x31')]}});}if(_0x2c1938[_0xba6d('0x30')][_0xba6d('0x3e')]){_0x56cb79[_0xba6d('0x39')]=_[_0xba6d('0x3d')](_0x56cb79[_0xba6d('0x39')],{'$or':_[_0xba6d('0x3f')](_0x5b644e,function(_0x8f3128){if(_0x8f3128[_0xba6d('0x40')][_0xba6d('0x41')]!==_0xba6d('0x42')){var _0x4123c3={};_0x4123c3[_0x8f3128[_0xba6d('0x43')]]={'$like':'%'+_0x2c1938[_0xba6d('0x30')][_0xba6d('0x3e')]+'%'};return _0x4123c3;}})});}_0x56cb79=_['merge']({},_0x56cb79,_0x2c1938['options']);var _0x2650a9={'where':_0x56cb79[_0xba6d('0x39')]};return db[_0xba6d('0x2c')][_0xba6d('0x1e')](_0x2650a9)[_0xba6d('0x26')](function(_0xbfc9ac){_0x38f57e['count']=_0xbfc9ac;if(_0x2c1938[_0xba6d('0x30')][_0xba6d('0x44')]){_0x56cb79[_0xba6d('0x45')]=[{'all':!![]}];}return db[_0xba6d('0x2c')][_0xba6d('0x46')](_0x56cb79);})[_0xba6d('0x26')](function(_0x10b6b0){_0x38f57e[_0xba6d('0x47')]=_0x10b6b0;return _0x38f57e;})[_0xba6d('0x26')](respondWithFilteredResult(_0x4fec2e,_0x56cb79))[_0xba6d('0x48')](handleError(_0x4fec2e,null));};exports[_0xba6d('0x49')]=function(_0x3f07b2,_0x3e7e7c){var _0x21b768={'raw':!![],'where':{'id':_0x3f07b2[_0xba6d('0x4a')]['id']}},_0x9a3b11={};_0x9a3b11[_0xba6d('0x2d')]=_[_0xba6d('0x2e')](db[_0xba6d('0x2c')][_0xba6d('0x4b')]);_0x9a3b11['query']=_['keys'](_0x3f07b2[_0xba6d('0x30')]);_0x9a3b11[_0xba6d('0x32')]=_['intersection'](_0x9a3b11[_0xba6d('0x2d')],_0x9a3b11[_0xba6d('0x30')]);_0x21b768[_0xba6d('0x34')]=_['intersection'](_0x9a3b11['model'],qs[_0xba6d('0x35')](_0x3f07b2['query'][_0xba6d('0x35')]));_0x21b768[_0xba6d('0x34')]=_0x21b768[_0xba6d('0x34')][_0xba6d('0x36')]?_0x21b768[_0xba6d('0x34')]:_0x9a3b11[_0xba6d('0x2d')];if(_0x3f07b2[_0xba6d('0x30')][_0xba6d('0x44')]){_0x21b768[_0xba6d('0x45')]=[{'all':!![]}];}_0x21b768=_[_0xba6d('0x3d')]({},_0x21b768,_0x3f07b2[_0xba6d('0x4c')]);return db[_0xba6d('0x2c')][_0xba6d('0x4d')](_0x21b768)[_0xba6d('0x26')](handleEntityNotFound(_0x3e7e7c,null))[_0xba6d('0x26')](respondWithResult(_0x3e7e7c,null))[_0xba6d('0x48')](handleError(_0x3e7e7c,null));};exports['create']=function(_0x318296,_0x17d566){return db[_0xba6d('0x2c')][_0xba6d('0x4e')](_0x318296['body'],{})[_0xba6d('0x26')](respondWithResult(_0x17d566,0xc9))[_0xba6d('0x48')](handleError(_0x17d566,null));};exports[_0xba6d('0x4f')]=function(_0x1e3844,_0x18bf97){if(_0x1e3844[_0xba6d('0x50')]['id']){delete _0x1e3844[_0xba6d('0x50')]['id'];}return db[_0xba6d('0x2c')][_0xba6d('0x4d')]({'where':{'id':_0x1e3844[_0xba6d('0x4a')]['id']}})[_0xba6d('0x26')](handleEntityNotFound(_0x18bf97,null))[_0xba6d('0x26')](saveUpdates(_0x1e3844[_0xba6d('0x50')],null))[_0xba6d('0x26')](respondWithResult(_0x18bf97,null))['catch'](handleError(_0x18bf97,null));};exports[_0xba6d('0x27')]=function(_0x202a7b,_0x4400d6){return db[_0xba6d('0x2c')][_0xba6d('0x4d')]({'where':{'id':_0x202a7b[_0xba6d('0x4a')]['id']}})[_0xba6d('0x26')](handleEntityNotFound(_0x4400d6,null))[_0xba6d('0x26')](removeEntity(_0x4400d6,null))[_0xba6d('0x48')](handleError(_0x4400d6,null));};exports[_0xba6d('0x51')]=function(_0x2ed816,_0x11918f){return db['MemberReport']['describe']()['then'](respondWithResult(_0x11918f,null))[_0xba6d('0x48')](handleError(_0x11918f,null));};
\ No newline at end of file
index 9dcd052..99c699d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28fd=['request-promise','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x28fd,0x90));var _0xd28f=function(_0x1d2195,_0x4b8096){_0x1d2195=_0x1d2195-0x0;var _0x4962cd=_0x28fd[_0x1d2195];return _0x4962cd;};'use strict';var _=require(_0xd28f('0x0'));var util=require(_0xd28f('0x1'));var logger=require(_0xd28f('0x2'))(_0xd28f('0x3'));var moment=require(_0xd28f('0x4'));var BPromise=require(_0xd28f('0x5'));var rp=require(_0xd28f('0x6'));var attributes=require(_0xd28f('0x7'));module[_0xd28f('0x8')]=function(_0x2174af,_0x3c2d3b){return _0x2174af[_0xd28f('0x9')](_0xd28f('0xa'),attributes,{'tableName':_0xd28f('0xb'),'paranoid':![],'indexes':[{'name':_0xd28f('0xc'),'fields':[_0xd28f('0xd'),_0xd28f('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5da=['request-promise','./memberReport.attributes','exports','define','MemberReport','membername_interface','membername','interface','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x42bb6d,_0x412255){var _0x1db89b=function(_0x5da43a){while(--_0x5da43a){_0x42bb6d['push'](_0x42bb6d['shift']());}};_0x1db89b(++_0x412255);}(_0xa5da,0xbe));var _0xaa5d=function(_0x23c251,_0x8770d6){_0x23c251=_0x23c251-0x0;var _0x4f7070=_0xa5da[_0x23c251];return _0x4f7070;};'use strict';var _=require(_0xaa5d('0x0'));var util=require(_0xaa5d('0x1'));var logger=require(_0xaa5d('0x2'))(_0xaa5d('0x3'));var moment=require(_0xaa5d('0x4'));var BPromise=require(_0xaa5d('0x5'));var rp=require(_0xaa5d('0x6'));var attributes=require(_0xaa5d('0x7'));module[_0xaa5d('0x8')]=function(_0x2c19ef,_0x4a9ea1){return _0x2c19ef[_0xaa5d('0x9')](_0xaa5d('0xa'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0xaa5d('0xb'),'fields':[_0xaa5d('0xc'),_0xaa5d('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index ada87a4..d88cafd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf759=['update','body','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMemberReport','MemberReport','findAll','options','raw','where','include','attributes','model','map','CreateMemberReport','create','UpdateMemberReport'];(function(_0x3d9b4d,_0x11c58e){var _0x3c5ea0=function(_0x19bd84){while(--_0x19bd84){_0x3d9b4d['push'](_0x3d9b4d['shift']());}};_0x3c5ea0(++_0x11c58e);}(_0xf759,0xa7));var _0x9f75=function(_0x20c8bc,_0x146824){_0x20c8bc=_0x20c8bc-0x0;var _0x5419f4=_0xf759[_0x20c8bc];return _0x5419f4;};'use strict';var _=require(_0x9f75('0x0'));var util=require(_0x9f75('0x1'));var moment=require('moment');var BPromise=require(_0x9f75('0x2'));var rs=require(_0x9f75('0x3'));var fs=require('fs');var Redis=require(_0x9f75('0x4'));var db=require(_0x9f75('0x5'))['db'];var utils=require(_0x9f75('0x6'));var logger=require('../../config/logger')(_0x9f75('0x7'));var config=require(_0x9f75('0x8'));var jayson=require(_0x9f75('0x9'));var client=jayson[_0x9f75('0xa')][_0x9f75('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1028c2,_0x3ff568,_0x3795c7){return new BPromise(function(_0x2913bd,_0x2d3523){return client[_0x9f75('0xc')](_0x1028c2,_0x3795c7)[_0x9f75('0xd')](function(_0x938499){logger[_0x9f75('0xe')](_0x9f75('0xf'),_0x3ff568,_0x9f75('0x10'));logger[_0x9f75('0x11')](_0x9f75('0x12'),_0x3ff568,_0x9f75('0x10'),JSON[_0x9f75('0x13')](_0x938499));if(_0x938499[_0x9f75('0x14')]){if(_0x938499[_0x9f75('0x14')][_0x9f75('0x15')]===0x1f4){logger['error'](_0x9f75('0xf'),_0x3ff568,_0x938499[_0x9f75('0x14')][_0x9f75('0x16')]);return _0x2d3523(_0x938499['error'][_0x9f75('0x16')]);}logger['error'](_0x9f75('0xf'),_0x3ff568,_0x938499[_0x9f75('0x14')][_0x9f75('0x16')]);return _0x2913bd(_0x938499[_0x9f75('0x14')]['message']);}else{logger[_0x9f75('0xe')](_0x9f75('0xf'),_0x3ff568,_0x9f75('0x10'));_0x2913bd(_0x938499[_0x9f75('0x17')][_0x9f75('0x16')]);}})[_0x9f75('0x18')](function(_0x3df3cd){logger[_0x9f75('0x14')](_0x9f75('0xf'),_0x3ff568,_0x3df3cd);_0x2d3523(_0x3df3cd);});});}exports[_0x9f75('0x19')]=function(_0xa8f6e2){var _0x588f2d=this;return new Promise(function(_0x19c797,_0x537b72){return db[_0x9f75('0x1a')][_0x9f75('0x1b')]({'raw':_0xa8f6e2[_0x9f75('0x1c')]?_0xa8f6e2[_0x9f75('0x1c')][_0x9f75('0x1d')]===undefined?!![]:![]:!![],'where':_0xa8f6e2[_0x9f75('0x1c')]?_0xa8f6e2['options'][_0x9f75('0x1e')]||null:null,'attributes':_0xa8f6e2[_0x9f75('0x1c')]?_0xa8f6e2[_0x9f75('0x1c')]['attributes']||null:null,'limit':_0xa8f6e2[_0x9f75('0x1c')]?_0xa8f6e2['options']['limit']||null:null,'include':_0xa8f6e2[_0x9f75('0x1c')]?_0xa8f6e2[_0x9f75('0x1c')][_0x9f75('0x1f')]?_['map'](_0xa8f6e2[_0x9f75('0x1c')][_0x9f75('0x1f')],function(_0x3b59c1){return{'model':db[_0x3b59c1['model']],'as':_0x3b59c1['as'],'attributes':_0x3b59c1[_0x9f75('0x20')],'include':_0x3b59c1[_0x9f75('0x1f')]?_['map'](_0x3b59c1[_0x9f75('0x1f')],function(_0x47b26e){return{'model':db[_0x47b26e[_0x9f75('0x21')]],'as':_0x47b26e['as'],'attributes':_0x47b26e[_0x9f75('0x20')],'include':_0x47b26e[_0x9f75('0x1f')]?_[_0x9f75('0x22')](_0x47b26e['include'],function(_0x1d51e1){return{'model':db[_0x1d51e1[_0x9f75('0x21')]],'as':_0x1d51e1['as'],'attributes':_0x1d51e1[_0x9f75('0x20')]};}):[]};}):[]};}):[]:[]})[_0x9f75('0xd')](function(_0x7fa027){logger[_0x9f75('0xe')]('GetMemberReport',_0xa8f6e2);logger[_0x9f75('0x11')](_0x9f75('0x19'),_0xa8f6e2,JSON[_0x9f75('0x13')](_0x7fa027));_0x19c797(_0x7fa027);})[_0x9f75('0x18')](function(_0x35ad51){logger['error'](_0x9f75('0x19'),_0x35ad51['message'],_0xa8f6e2);_0x537b72(_0x588f2d[_0x9f75('0x14')](0x1f4,_0x35ad51['message']));});});};exports[_0x9f75('0x23')]=function(_0x593a7d){var _0x2da8ea=this;return new Promise(function(_0x29726a,_0x1e3717){return db[_0x9f75('0x1a')][_0x9f75('0x24')](_0x593a7d['body'],{'raw':_0x593a7d[_0x9f75('0x1c')]?_0x593a7d['options']['raw']===undefined?!![]:![]:!![]})[_0x9f75('0xd')](function(_0x5f1ed1){logger[_0x9f75('0xe')](_0x9f75('0x23'),_0x593a7d);logger[_0x9f75('0x11')](_0x9f75('0x23'),_0x593a7d,JSON[_0x9f75('0x13')](_0x5f1ed1));_0x29726a(_0x5f1ed1);})[_0x9f75('0x18')](function(_0x20ddc6){logger['error'](_0x9f75('0x23'),_0x20ddc6[_0x9f75('0x16')],_0x593a7d);_0x1e3717(_0x2da8ea[_0x9f75('0x14')](0x1f4,_0x20ddc6['message']));});});};exports[_0x9f75('0x25')]=function(_0x3669a3){var _0x3dd3c0=this;return new Promise(function(_0x2db03b,_0x38c14c){return db[_0x9f75('0x1a')][_0x9f75('0x26')](_0x3669a3[_0x9f75('0x27')],{'raw':_0x3669a3[_0x9f75('0x1c')]?_0x3669a3[_0x9f75('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3669a3['options']?_0x3669a3[_0x9f75('0x1c')]['where']||null:null,'attributes':_0x3669a3[_0x9f75('0x1c')]?_0x3669a3['options'][_0x9f75('0x20')]||null:null,'limit':_0x3669a3[_0x9f75('0x1c')]?_0x3669a3[_0x9f75('0x1c')][_0x9f75('0x28')]||null:null})[_0x9f75('0xd')](function(_0x10a612){logger[_0x9f75('0xe')](_0x9f75('0x25'),_0x3669a3);logger[_0x9f75('0x11')]('UpdateMemberReport',_0x3669a3,JSON[_0x9f75('0x13')](_0x10a612));_0x2db03b(_0x10a612);})[_0x9f75('0x18')](function(_0xb2cd7){logger['error']('UpdateMemberReport',_0xb2cd7[_0x9f75('0x16')],_0x3669a3);_0x38c14c(_0x3dd3c0[_0x9f75('0x14')](0x1f4,_0xb2cd7['message']));});});};
\ No newline at end of file
+var _0xc40a=['http','request','then','info','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','code','error','MemberReport,\x20%s,\x20%s','message','catch','GetMemberReport','MemberReport','findAll','options','raw','limit','model','attributes','include','map','debug','body','CreateMemberReport','where','UpdateMemberReport','moment','randomstring','../../config/utils','../../config/logger'];(function(_0x3e75f1,_0x231535){var _0x5258f6=function(_0x2cdfd6){while(--_0x2cdfd6){_0x3e75f1['push'](_0x3e75f1['shift']());}};_0x5258f6(++_0x231535);}(_0xc40a,0x18f));var _0xac40=function(_0x186bc4,_0x2c73c9){_0x186bc4=_0x186bc4-0x0;var _0x55ba8f=_0xc40a[_0x186bc4];return _0x55ba8f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xac40('0x0'));var BPromise=require('bluebird');var rs=require(_0xac40('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xac40('0x2'));var logger=require(_0xac40('0x3'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xac40('0x4')]({'port':0x232a});function respondWithRpcPromise(_0x400034,_0x546346,_0x449a6d){return new BPromise(function(_0x536f29,_0x1b05a2){return client[_0xac40('0x5')](_0x400034,_0x449a6d)[_0xac40('0x6')](function(_0x3511aa){logger[_0xac40('0x7')]('MemberReport,\x20%s,\x20%s',_0x546346,_0xac40('0x8'));logger['debug'](_0xac40('0x9'),_0x546346,_0xac40('0x8'),JSON[_0xac40('0xa')](_0x3511aa));if(_0x3511aa['error']){if(_0x3511aa['error'][_0xac40('0xb')]===0x1f4){logger[_0xac40('0xc')](_0xac40('0xd'),_0x546346,_0x3511aa['error'][_0xac40('0xe')]);return _0x1b05a2(_0x3511aa[_0xac40('0xc')][_0xac40('0xe')]);}logger[_0xac40('0xc')](_0xac40('0xd'),_0x546346,_0x3511aa[_0xac40('0xc')][_0xac40('0xe')]);return _0x536f29(_0x3511aa['error'][_0xac40('0xe')]);}else{logger['info'](_0xac40('0xd'),_0x546346,_0xac40('0x8'));_0x536f29(_0x3511aa['result'][_0xac40('0xe')]);}})[_0xac40('0xf')](function(_0x40b84d){logger[_0xac40('0xc')](_0xac40('0xd'),_0x546346,_0x40b84d);_0x1b05a2(_0x40b84d);});});}exports[_0xac40('0x10')]=function(_0x19fb94){var _0x364569=this;return new Promise(function(_0x3163c8,_0x3372ce){return db[_0xac40('0x11')][_0xac40('0x12')]({'raw':_0x19fb94[_0xac40('0x13')]?_0x19fb94['options'][_0xac40('0x14')]===undefined?!![]:![]:!![],'where':_0x19fb94[_0xac40('0x13')]?_0x19fb94[_0xac40('0x13')]['where']||null:null,'attributes':_0x19fb94[_0xac40('0x13')]?_0x19fb94[_0xac40('0x13')]['attributes']||null:null,'limit':_0x19fb94['options']?_0x19fb94[_0xac40('0x13')][_0xac40('0x15')]||null:null,'include':_0x19fb94[_0xac40('0x13')]?_0x19fb94[_0xac40('0x13')]['include']?_['map'](_0x19fb94[_0xac40('0x13')]['include'],function(_0x5b922f){return{'model':db[_0x5b922f[_0xac40('0x16')]],'as':_0x5b922f['as'],'attributes':_0x5b922f[_0xac40('0x17')],'include':_0x5b922f[_0xac40('0x18')]?_[_0xac40('0x19')](_0x5b922f['include'],function(_0xd1024c){return{'model':db[_0xd1024c[_0xac40('0x16')]],'as':_0xd1024c['as'],'attributes':_0xd1024c[_0xac40('0x17')],'include':_0xd1024c[_0xac40('0x18')]?_[_0xac40('0x19')](_0xd1024c[_0xac40('0x18')],function(_0x496af0){return{'model':db[_0x496af0[_0xac40('0x16')]],'as':_0x496af0['as'],'attributes':_0x496af0[_0xac40('0x17')]};}):[]};}):[]};}):[]:[]})[_0xac40('0x6')](function(_0x4025c7){logger[_0xac40('0x7')](_0xac40('0x10'),_0x19fb94);logger[_0xac40('0x1a')](_0xac40('0x10'),_0x19fb94,JSON[_0xac40('0xa')](_0x4025c7));_0x3163c8(_0x4025c7);})[_0xac40('0xf')](function(_0x1a035f){logger[_0xac40('0xc')](_0xac40('0x10'),_0x1a035f[_0xac40('0xe')],_0x19fb94);_0x3372ce(_0x364569[_0xac40('0xc')](0x1f4,_0x1a035f[_0xac40('0xe')]));});});};exports['CreateMemberReport']=function(_0x5f1f88){var _0x20bf1f=this;return new Promise(function(_0x177219,_0xc23867){return db['MemberReport']['create'](_0x5f1f88[_0xac40('0x1b')],{'raw':_0x5f1f88[_0xac40('0x13')]?_0x5f1f88['options'][_0xac40('0x14')]===undefined?!![]:![]:!![]})[_0xac40('0x6')](function(_0x154b07){logger[_0xac40('0x7')]('CreateMemberReport',_0x5f1f88);logger[_0xac40('0x1a')](_0xac40('0x1c'),_0x5f1f88,JSON['stringify'](_0x154b07));_0x177219(_0x154b07);})['catch'](function(_0x34e83b){logger[_0xac40('0xc')](_0xac40('0x1c'),_0x34e83b[_0xac40('0xe')],_0x5f1f88);_0xc23867(_0x20bf1f['error'](0x1f4,_0x34e83b['message']));});});};exports['UpdateMemberReport']=function(_0x55048d){var _0x113844=this;return new Promise(function(_0x48e97d,_0x27c220){return db[_0xac40('0x11')]['update'](_0x55048d[_0xac40('0x1b')],{'raw':_0x55048d[_0xac40('0x13')]?_0x55048d[_0xac40('0x13')][_0xac40('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x55048d[_0xac40('0x13')]?_0x55048d[_0xac40('0x13')][_0xac40('0x1d')]||null:null,'attributes':_0x55048d[_0xac40('0x13')]?_0x55048d[_0xac40('0x13')][_0xac40('0x17')]||null:null,'limit':_0x55048d['options']?_0x55048d[_0xac40('0x13')][_0xac40('0x15')]||null:null})[_0xac40('0x6')](function(_0x5c6c70){logger['info']('UpdateMemberReport',_0x55048d);logger[_0xac40('0x1a')]('UpdateMemberReport',_0x55048d,JSON['stringify'](_0x5c6c70));_0x48e97d(_0x5c6c70);})[_0xac40('0xf')](function(_0x4854a2){logger['error'](_0xac40('0x1e'),_0x4854a2['message'],_0x55048d);_0x27c220(_0x113844[_0xac40('0xc')](0x1f4,_0x4854a2[_0xac40('0xe')]));});});};
\ No newline at end of file
index e8230a6..889479e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfba9=['index','exports','multer','util','path','express','../../components/auth/service','../../config/environment','./migration.controller','get'];(function(_0x34261e,_0x238ea7){var _0x457940=function(_0x534846){while(--_0x534846){_0x34261e['push'](_0x34261e['shift']());}};_0x457940(++_0x238ea7);}(_0xfba9,0x1a6));var _0x9fba=function(_0x58010d,_0x49b16a){_0x58010d=_0x58010d-0x0;var _0x4f93db=_0xfba9[_0x58010d];return _0x4f93db;};'use strict';var multer=require(_0x9fba('0x0'));var util=require(_0x9fba('0x1'));var path=require(_0x9fba('0x2'));var timeout=require('connect-timeout');var express=require(_0x9fba('0x3'));var router=express['Router']();var auth=require(_0x9fba('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x9fba('0x5'));var controller=require(_0x9fba('0x6'));router[_0x9fba('0x7')]('/',controller[_0x9fba('0x8')]);module[_0x9fba('0x9')]=router;
\ No newline at end of file
+var _0xf7c1=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','multer','connect-timeout'];(function(_0x4258a1,_0x304c73){var _0x5057e4=function(_0x5eb4dd){while(--_0x5eb4dd){_0x4258a1['push'](_0x4258a1['shift']());}};_0x5057e4(++_0x304c73);}(_0xf7c1,0x18a));var _0x1f7c=function(_0x39ef5b,_0x211511){_0x39ef5b=_0x39ef5b-0x0;var _0x7e21c2=_0xf7c1[_0x39ef5b];return _0x7e21c2;};'use strict';var multer=require(_0x1f7c('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1f7c('0x1'));var express=require(_0x1f7c('0x2'));var router=express[_0x1f7c('0x3')]();var auth=require(_0x1f7c('0x4'));var interaction=require(_0x1f7c('0x5'));var config=require(_0x1f7c('0x6'));var controller=require(_0x1f7c('0x7'));router[_0x1f7c('0x8')]('/',controller[_0x1f7c('0x9')]);module[_0x1f7c('0xa')]=router;
\ No newline at end of file
index eb1c273..aa247bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4ad=['sequelize','exports','STRING'];(function(_0x2b5b8d,_0x45c1bb){var _0x3c77af=function(_0xf5efe4){while(--_0xf5efe4){_0x2b5b8d['push'](_0x2b5b8d['shift']());}};_0x3c77af(++_0x45c1bb);}(_0xb4ad,0x153));var _0xdb4a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb4ad[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xdb4a('0x0'));module[_0xdb4a('0x1')]={'version':{'type':Sequelize[_0xdb4a('0x2')],'primaryKey':!![],'autoIncrement':![]}};
\ No newline at end of file
+var _0x16a2=['sequelize','exports','STRING'];(function(_0x3bd0a3,_0x334334){var _0x574e9a=function(_0x483779){while(--_0x483779){_0x3bd0a3['push'](_0x3bd0a3['shift']());}};_0x574e9a(++_0x334334);}(_0x16a2,0x105));var _0x216a=function(_0xbe40ad,_0x44343c){_0xbe40ad=_0xbe40ad-0x0;var _0x50fac9=_0x16a2[_0xbe40ad];return _0x50fac9;};'use strict';var Sequelize=require(_0x216a('0x0'));module[_0x216a('0x1')]={'version':{'type':Sequelize[_0x216a('0x2')],'primaryKey':!![],'autoIncrement':![]}};
\ No newline at end of file
index 00b7c7e..d36e4c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb796=['request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','status','json','offset','limit','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','Migration','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','filter','map','type','key','field','options','count','includeAll','findAll','rows','catch','html-pdf','eml-format','rimraf'];(function(_0x5a3ac7,_0xa2bf9b){var _0x11678a=function(_0x36469f){while(--_0x36469f){_0x5a3ac7['push'](_0x5a3ac7['shift']());}};_0x11678a(++_0xa2bf9b);}(_0xb796,0xd2));var _0x6b79=function(_0x1da26d,_0x54c253){_0x1da26d=_0x1da26d-0x0;var _0x3340d1=_0xb796[_0x1da26d];return _0x3340d1;};'use strict';var pdf=require(_0x6b79('0x0'));var emlformat=require(_0x6b79('0x1'));var rimraf=require(_0x6b79('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6b79('0x3'));var moment=require(_0x6b79('0x4'));var BPromise=require(_0x6b79('0x5'));var Mustache=require(_0x6b79('0x6'));var util=require(_0x6b79('0x7'));var path=require(_0x6b79('0x8'));var sox=require(_0x6b79('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x6b79('0xa'));var squel=require(_0x6b79('0xb'));var crypto=require(_0x6b79('0xc'));var jsforce=require(_0x6b79('0xd'));var deskjs=require(_0x6b79('0xe'));var toCsv=require(_0x6b79('0xf'));var querystring=require(_0x6b79('0x10'));var Papa=require(_0x6b79('0x11'));var Redis=require(_0x6b79('0x12'));var qs=require(_0x6b79('0x13'));var logger=require(_0x6b79('0x14'))(_0x6b79('0x15'));var utils=require(_0x6b79('0x16'));var config=require('../../config/environment');var db=require(_0x6b79('0x17'))['db'];function respondWithStatusCode(_0x23ba37,_0x33c821){_0x33c821=_0x33c821||0xcc;return function(_0x1b405c){if(_0x1b405c){return _0x23ba37['sendStatus'](_0x33c821);}return _0x23ba37[_0x6b79('0x18')](_0x33c821)['end']();};}function respondWithResult(_0x2d4526,_0x1fc0f5){_0x1fc0f5=_0x1fc0f5||0xc8;return function(_0x81a97e){if(_0x81a97e){return _0x2d4526[_0x6b79('0x18')](_0x1fc0f5)[_0x6b79('0x19')](_0x81a97e);}};}function respondWithFilteredResult(_0x322d83,_0x103d66){return function(_0x306947){if(_0x306947){var _0x4ba5c9=_0x306947['count'],_0x54f137=_0x103d66[_0x6b79('0x1a')],_0x55a566=_0x103d66[_0x6b79('0x1a')]+_0x103d66[_0x6b79('0x1b')],_0x3d8c31;if(_0x55a566>=_0x4ba5c9){_0x55a566=_0x4ba5c9;_0x3d8c31=0xc8;}else{_0x3d8c31=0xce;}_0x322d83['status'](_0x3d8c31);return _0x322d83['set'](_0x6b79('0x1c'),_0x54f137+'-'+_0x55a566+'/'+_0x4ba5c9)[_0x6b79('0x19')](_0x306947);}return null;};}function patchUpdates(_0x415f23){return function(_0xa06de1){try{jsonpatch[_0x6b79('0x1d')](_0xa06de1,_0x415f23,!![]);}catch(_0x36a4ac){return BPromise[_0x6b79('0x1e')](_0x36a4ac);}return _0xa06de1[_0x6b79('0x1f')]();};}function saveUpdates(_0x2d2239,_0x16e432){return function(_0x346a8a){if(_0x346a8a){return _0x346a8a[_0x6b79('0x20')](_0x2d2239)[_0x6b79('0x21')](function(_0x12d15a){return _0x12d15a;});}return null;};}function removeEntity(_0x3888ed,_0x4ed0cd){return function(_0x529aa9){if(_0x529aa9){return _0x529aa9[_0x6b79('0x22')]()[_0x6b79('0x21')](function(){_0x3888ed[_0x6b79('0x18')](0xcc)[_0x6b79('0x23')]();});}};}function handleEntityNotFound(_0x1894a7,_0x435342){return function(_0x51a14a){if(!_0x51a14a){_0x1894a7[_0x6b79('0x24')](0x194);}return _0x51a14a;};}function handleError(_0x728db6,_0x11ffdf){_0x11ffdf=_0x11ffdf||0x1f4;return function(_0x5b2b6e){logger['error'](_0x5b2b6e[_0x6b79('0x25')]);if(_0x5b2b6e[_0x6b79('0x26')]){delete _0x5b2b6e['name'];}_0x728db6[_0x6b79('0x18')](_0x11ffdf)['send'](_0x5b2b6e);};}exports['index']=function(_0x438c34,_0x3d1b0d){var _0x18d0fd={},_0x308368={},_0x36d5d4={'count':0x0,'rows':[]};var _0x2f5993=db[_0x6b79('0x27')][_0x6b79('0x28')];_0x308368[_0x6b79('0x29')]=_[_0x6b79('0x2a')](_0x2f5993);var _0x5aeed2={'dateStart':_0x438c34[_0x6b79('0x2b')][_0x6b79('0x2c')],'dateEnd':_0x438c34['query'][_0x6b79('0x2d')]};delete _0x438c34[_0x6b79('0x2b')]['dateStart'];delete _0x438c34[_0x6b79('0x2b')][_0x6b79('0x2d')];_0x308368[_0x6b79('0x2b')]=_[_0x6b79('0x2a')](_0x438c34[_0x6b79('0x2b')]);_0x308368[_0x6b79('0x2e')]=_[_0x6b79('0x2f')](_0x308368['model'],_0x308368[_0x6b79('0x2b')]);_0x18d0fd[_0x6b79('0x30')]=_['intersection'](_0x308368[_0x6b79('0x29')],qs[_0x6b79('0x31')](_0x438c34[_0x6b79('0x2b')]['fields']));_0x18d0fd[_0x6b79('0x30')]=_0x18d0fd[_0x6b79('0x30')][_0x6b79('0x32')]?_0x18d0fd[_0x6b79('0x30')]:_0x308368[_0x6b79('0x29')];if(!_0x438c34[_0x6b79('0x2b')][_0x6b79('0x33')](_0x6b79('0x34'))){_0x18d0fd[_0x6b79('0x1b')]=qs[_0x6b79('0x1b')](_0x438c34['query'][_0x6b79('0x1b')]);_0x18d0fd['offset']=qs[_0x6b79('0x1a')](_0x438c34[_0x6b79('0x2b')][_0x6b79('0x1a')]);}_0x18d0fd[_0x6b79('0x35')]=qs[_0x6b79('0x36')](_0x438c34[_0x6b79('0x2b')][_0x6b79('0x36')]);_0x18d0fd[_0x6b79('0x37')]=qs[_0x6b79('0x2e')](_[_0x6b79('0x38')](_0x438c34[_0x6b79('0x2b')],_0x308368[_0x6b79('0x2e')]));if(_0x5aeed2[_0x6b79('0x2c')]){if(_0x5aeed2[_0x6b79('0x2d')]){_0x5aeed2[_0x6b79('0x2d')]=moment(_0x5aeed2[_0x6b79('0x2d')])[_0x6b79('0x39')](0x1,_0x6b79('0x3a'));}else{_0x5aeed2[_0x6b79('0x2d')]=moment(_0x5aeed2[_0x6b79('0x2c')])[_0x6b79('0x39')](0x1,'day');}_[_0x6b79('0x3b')](_0x18d0fd[_0x6b79('0x37')],{'createdAt':{'$gte':_0x5aeed2['dateStart'],'$lte':_0x5aeed2[_0x6b79('0x2d')]}});}if(_0x438c34['query'][_0x6b79('0x3c')]){_0x18d0fd['where']=_[_0x6b79('0x3b')](_0x18d0fd[_0x6b79('0x37')],{'$or':_[_0x6b79('0x3d')](_0x2f5993,function(_0x19b49c){if(_0x19b49c[_0x6b79('0x3e')][_0x6b79('0x3f')]!=='VIRTUAL'){var _0x4dfce4={};_0x4dfce4[_0x19b49c[_0x6b79('0x40')]]={'$like':'%'+_0x438c34[_0x6b79('0x2b')][_0x6b79('0x3c')]+'%'};return _0x4dfce4;}})});}_0x18d0fd=_[_0x6b79('0x3b')]({},_0x18d0fd,_0x438c34[_0x6b79('0x41')]);var _0x353c86={'where':_0x18d0fd[_0x6b79('0x37')]};return db[_0x6b79('0x27')][_0x6b79('0x42')](_0x353c86)['then'](function(_0x3eddfb){_0x36d5d4[_0x6b79('0x42')]=_0x3eddfb;if(_0x438c34[_0x6b79('0x2b')][_0x6b79('0x43')]){_0x18d0fd['include']=[{'all':!![]}];}return db[_0x6b79('0x27')][_0x6b79('0x44')](_0x18d0fd);})[_0x6b79('0x21')](function(_0x3c162c){_0x36d5d4[_0x6b79('0x45')]=_0x3c162c;return _0x36d5d4;})[_0x6b79('0x21')](respondWithFilteredResult(_0x3d1b0d,_0x18d0fd))[_0x6b79('0x46')](handleError(_0x3d1b0d,null));};
\ No newline at end of file
+var _0x6906=['merge','filter','map','type','key','field','options','includeAll','include','findAll','rows','catch','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','limit','set','apply','save','update','then','destroy','error','name','index','Migration','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day'];(function(_0x464e1f,_0x2aa86f){var _0x1c1ce2=function(_0x543c79){while(--_0x543c79){_0x464e1f['push'](_0x464e1f['shift']());}};_0x1c1ce2(++_0x2aa86f);}(_0x6906,0x1da));var _0x6690=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x6906[_0x5b644e];return _0x49c6bf;};'use strict';var pdf=require(_0x6690('0x0'));var emlformat=require(_0x6690('0x1'));var rimraf=require(_0x6690('0x2'));var zipdir=require(_0x6690('0x3'));var jsonpatch=require(_0x6690('0x4'));var rp=require(_0x6690('0x5'));var moment=require('moment');var BPromise=require(_0x6690('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x6690('0x7'));var csv=require(_0x6690('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x6690('0x9'));var squel=require(_0x6690('0xa'));var crypto=require(_0x6690('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x6690('0xc'));var toCsv=require(_0x6690('0x8'));var querystring=require(_0x6690('0xd'));var Papa=require(_0x6690('0xe'));var Redis=require('ioredis');var qs=require(_0x6690('0xf'));var logger=require('../../config/logger')(_0x6690('0x10'));var utils=require(_0x6690('0x11'));var config=require(_0x6690('0x12'));var db=require(_0x6690('0x13'))['db'];function respondWithStatusCode(_0x85c646,_0x1e2976){_0x1e2976=_0x1e2976||0xcc;return function(_0x4abb9d){if(_0x4abb9d){return _0x85c646[_0x6690('0x14')](_0x1e2976);}return _0x85c646[_0x6690('0x15')](_0x1e2976)['end']();};}function respondWithResult(_0x558e75,_0x1c1654){_0x1c1654=_0x1c1654||0xc8;return function(_0x41e7e1){if(_0x41e7e1){return _0x558e75[_0x6690('0x15')](_0x1c1654)[_0x6690('0x16')](_0x41e7e1);}};}function respondWithFilteredResult(_0x5bc183,_0x4e7b97){return function(_0x30b924){if(_0x30b924){var _0x4716a4=_0x30b924[_0x6690('0x17')],_0xe50dcf=_0x4e7b97[_0x6690('0x18')],_0x560621=_0x4e7b97['offset']+_0x4e7b97[_0x6690('0x19')],_0x1d38ba;if(_0x560621>=_0x4716a4){_0x560621=_0x4716a4;_0x1d38ba=0xc8;}else{_0x1d38ba=0xce;}_0x5bc183[_0x6690('0x15')](_0x1d38ba);return _0x5bc183[_0x6690('0x1a')]('Content-Range',_0xe50dcf+'-'+_0x560621+'/'+_0x4716a4)[_0x6690('0x16')](_0x30b924);}return null;};}function patchUpdates(_0x5f127e){return function(_0x24eb3b){try{jsonpatch[_0x6690('0x1b')](_0x24eb3b,_0x5f127e,!![]);}catch(_0x334fdc){return BPromise['reject'](_0x334fdc);}return _0x24eb3b[_0x6690('0x1c')]();};}function saveUpdates(_0x3f9ab2,_0x100aa9){return function(_0x54fdaa){if(_0x54fdaa){return _0x54fdaa[_0x6690('0x1d')](_0x3f9ab2)[_0x6690('0x1e')](function(_0x48b4ee){return _0x48b4ee;});}return null;};}function removeEntity(_0x574186,_0x3ebeea){return function(_0x4e2a75){if(_0x4e2a75){return _0x4e2a75[_0x6690('0x1f')]()[_0x6690('0x1e')](function(){_0x574186[_0x6690('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e368f,_0x35e162){return function(_0x29970c){if(!_0x29970c){_0x1e368f['sendStatus'](0x194);}return _0x29970c;};}function handleError(_0x321468,_0x109f4d){_0x109f4d=_0x109f4d||0x1f4;return function(_0x567d56){logger[_0x6690('0x20')](_0x567d56['stack']);if(_0x567d56[_0x6690('0x21')]){delete _0x567d56[_0x6690('0x21')];}_0x321468[_0x6690('0x15')](_0x109f4d)['send'](_0x567d56);};}exports[_0x6690('0x22')]=function(_0x301236,_0x48b92f){var _0x282b27={},_0x33d60e={},_0x48f977={'count':0x0,'rows':[]};var _0x5274a3=db[_0x6690('0x23')][_0x6690('0x24')];_0x33d60e[_0x6690('0x25')]=_[_0x6690('0x26')](_0x5274a3);var _0x212e45={'dateStart':_0x301236[_0x6690('0x27')][_0x6690('0x28')],'dateEnd':_0x301236['query'][_0x6690('0x29')]};delete _0x301236[_0x6690('0x27')][_0x6690('0x28')];delete _0x301236[_0x6690('0x27')][_0x6690('0x29')];_0x33d60e[_0x6690('0x27')]=_[_0x6690('0x26')](_0x301236['query']);_0x33d60e[_0x6690('0x2a')]=_[_0x6690('0x2b')](_0x33d60e['model'],_0x33d60e[_0x6690('0x27')]);_0x282b27[_0x6690('0x2c')]=_['intersection'](_0x33d60e[_0x6690('0x25')],qs['fields'](_0x301236['query']['fields']));_0x282b27[_0x6690('0x2c')]=_0x282b27[_0x6690('0x2c')][_0x6690('0x2d')]?_0x282b27[_0x6690('0x2c')]:_0x33d60e['model'];if(!_0x301236[_0x6690('0x27')][_0x6690('0x2e')](_0x6690('0x2f'))){_0x282b27[_0x6690('0x19')]=qs['limit'](_0x301236['query'][_0x6690('0x19')]);_0x282b27[_0x6690('0x18')]=qs[_0x6690('0x18')](_0x301236[_0x6690('0x27')]['offset']);}_0x282b27[_0x6690('0x30')]=qs[_0x6690('0x31')](_0x301236[_0x6690('0x27')][_0x6690('0x31')]);_0x282b27[_0x6690('0x32')]=qs['filters'](_[_0x6690('0x33')](_0x301236[_0x6690('0x27')],_0x33d60e['filters']));if(_0x212e45[_0x6690('0x28')]){if(_0x212e45[_0x6690('0x29')]){_0x212e45[_0x6690('0x29')]=moment(_0x212e45['dateEnd'])[_0x6690('0x34')](0x1,_0x6690('0x35'));}else{_0x212e45[_0x6690('0x29')]=moment(_0x212e45['dateStart'])['add'](0x1,'day');}_[_0x6690('0x36')](_0x282b27[_0x6690('0x32')],{'createdAt':{'$gte':_0x212e45['dateStart'],'$lte':_0x212e45[_0x6690('0x29')]}});}if(_0x301236[_0x6690('0x27')][_0x6690('0x37')]){_0x282b27[_0x6690('0x32')]=_[_0x6690('0x36')](_0x282b27[_0x6690('0x32')],{'$or':_[_0x6690('0x38')](_0x5274a3,function(_0x5de6a0){if(_0x5de6a0[_0x6690('0x39')][_0x6690('0x3a')]!=='VIRTUAL'){var _0x171c5a={};_0x171c5a[_0x5de6a0[_0x6690('0x3b')]]={'$like':'%'+_0x301236['query'][_0x6690('0x37')]+'%'};return _0x171c5a;}})});}_0x282b27=_[_0x6690('0x36')]({},_0x282b27,_0x301236[_0x6690('0x3c')]);var _0x5e09c9={'where':_0x282b27[_0x6690('0x32')]};return db[_0x6690('0x23')][_0x6690('0x17')](_0x5e09c9)[_0x6690('0x1e')](function(_0x792664){_0x48f977['count']=_0x792664;if(_0x301236[_0x6690('0x27')][_0x6690('0x3d')]){_0x282b27[_0x6690('0x3e')]=[{'all':!![]}];}return db[_0x6690('0x23')][_0x6690('0x3f')](_0x282b27);})[_0x6690('0x1e')](function(_0x102f3e){_0x48f977[_0x6690('0x40')]=_0x102f3e;return _0x48f977;})[_0x6690('0x1e')](respondWithFilteredResult(_0x48b92f,_0x282b27))[_0x6690('0x41')](handleError(_0x48b92f,null));};
\ No newline at end of file
index e4876e5..037c4c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00f0=['request-promise','exports','define','migrations','lodash','util','../../config/logger','api'];(function(_0x10dbf6,_0x3ff964){var _0x452147=function(_0x7476e0){while(--_0x7476e0){_0x10dbf6['push'](_0x10dbf6['shift']());}};_0x452147(++_0x3ff964);}(_0x00f0,0xec));var _0x000f=function(_0x532ce4,_0x2f8ba5){_0x532ce4=_0x532ce4-0x0;var _0x2c77e4=_0x00f0[_0x532ce4];return _0x2c77e4;};'use strict';var _=require(_0x000f('0x0'));var util=require(_0x000f('0x1'));var logger=require(_0x000f('0x2'))(_0x000f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x000f('0x4'));var attributes=require('./migration.attributes');module[_0x000f('0x5')]=function(_0x53989d,_0x3a0613){return _0x53989d[_0x000f('0x6')]('Migration',attributes,{'tableName':_0x000f('0x7'),'paranoid':![],'indexes':[],'timestamps':![]});};
\ No newline at end of file
+var _0x2faf=['bluebird','./migration.attributes','exports','define','Migration','migrations','lodash','util','../../config/logger','moment'];(function(_0x364bb4,_0x5f23e3){var _0x3c47bc=function(_0x44f0fa){while(--_0x44f0fa){_0x364bb4['push'](_0x364bb4['shift']());}};_0x3c47bc(++_0x5f23e3);}(_0x2faf,0xb0));var _0xf2fa=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2faf[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xf2fa('0x0'));var util=require(_0xf2fa('0x1'));var logger=require(_0xf2fa('0x2'))('api');var moment=require(_0xf2fa('0x3'));var BPromise=require(_0xf2fa('0x4'));var rp=require('request-promise');var attributes=require(_0xf2fa('0x5'));module[_0xf2fa('0x6')]=function(_0x2884e3,_0x4cfc9d){return _0x2884e3[_0xf2fa('0x7')](_0xf2fa('0x8'),attributes,{'tableName':_0xf2fa('0x9'),'paranoid':![],'indexes':[],'timestamps':![]});};
\ No newline at end of file
index 3ec7533..ebfb558 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c4e=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0xad85d8,_0x17a6a6){var _0x1aec47=function(_0x499897){while(--_0x499897){_0xad85d8['push'](_0xad85d8['shift']());}};_0x1aec47(++_0x17a6a6);}(_0x4c4e,0x152));var _0xe4c4=function(_0x23f4ae,_0x39bd3d){_0x23f4ae=_0x23f4ae-0x0;var _0x1dedd5=_0x4c4e[_0x23f4ae];return _0x1dedd5;};'use strict';var _=require(_0xe4c4('0x0'));var util=require('util');var moment=require(_0xe4c4('0x1'));var BPromise=require(_0xe4c4('0x2'));var rs=require(_0xe4c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4c4('0x4'))['db'];var utils=require(_0xe4c4('0x5'));var logger=require(_0xe4c4('0x6'))('rpc');var config=require(_0xe4c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe4c4('0x8')][_0xe4c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x262b64,_0xad105,_0x22085a){return new BPromise(function(_0x329d29,_0x28a42e){return client[_0xe4c4('0xa')](_0x262b64,_0x22085a)['then'](function(_0x589b2e){logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));logger[_0xe4c4('0xe')](_0xe4c4('0xf'),_0xad105,_0xe4c4('0xd'),JSON['stringify'](_0x589b2e));if(_0x589b2e[_0xe4c4('0x10')]){if(_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x11')]===0x1f4){logger[_0xe4c4('0x10')]('Migration,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x28a42e(_0x589b2e['error'][_0xe4c4('0x12')]);}logger[_0xe4c4('0x10')]('Migration,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x329d29(_0x589b2e['error'][_0xe4c4('0x12')]);}else{logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));_0x329d29(_0x589b2e[_0xe4c4('0x13')][_0xe4c4('0x12')]);}})[_0xe4c4('0x14')](function(_0x1038cb){logger[_0xe4c4('0x10')](_0xe4c4('0xc'),_0xad105,_0x1038cb);_0x28a42e(_0x1038cb);});});}
\ No newline at end of file
+var _0x4b19=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s'];(function(_0x197896,_0x2abee1){var _0x2c67d5=function(_0x5e3ce0){while(--_0x5e3ce0){_0x197896['push'](_0x197896['shift']());}};_0x2c67d5(++_0x2abee1);}(_0x4b19,0x195));var _0x94b1=function(_0x35e79e,_0x55020d){_0x35e79e=_0x35e79e-0x0;var _0x25de3b=_0x4b19[_0x35e79e];return _0x25de3b;};'use strict';var _=require(_0x94b1('0x0'));var util=require('util');var moment=require(_0x94b1('0x1'));var BPromise=require(_0x94b1('0x2'));var rs=require(_0x94b1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x94b1('0x4'))['db'];var utils=require(_0x94b1('0x5'));var logger=require(_0x94b1('0x6'))('rpc');var config=require(_0x94b1('0x7'));var jayson=require(_0x94b1('0x8'));var client=jayson['client'][_0x94b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x110a52,_0x4ea1f9,_0x40c69c){return new BPromise(function(_0x201a02,_0xad0a85){return client['request'](_0x110a52,_0x40c69c)[_0x94b1('0xa')](function(_0x4f948b){logger['info'](_0x94b1('0xb'),_0x4ea1f9,_0x94b1('0xc'));logger[_0x94b1('0xd')](_0x94b1('0xe'),_0x4ea1f9,_0x94b1('0xc'),JSON[_0x94b1('0xf')](_0x4f948b));if(_0x4f948b['error']){if(_0x4f948b[_0x94b1('0x10')][_0x94b1('0x11')]===0x1f4){logger[_0x94b1('0x10')](_0x94b1('0xb'),_0x4ea1f9,_0x4f948b['error']['message']);return _0xad0a85(_0x4f948b[_0x94b1('0x10')][_0x94b1('0x12')]);}logger['error']('Migration,\x20%s,\x20%s',_0x4ea1f9,_0x4f948b[_0x94b1('0x10')][_0x94b1('0x12')]);return _0x201a02(_0x4f948b['error'][_0x94b1('0x12')]);}else{logger['info']('Migration,\x20%s,\x20%s',_0x4ea1f9,_0x94b1('0xc'));_0x201a02(_0x4f948b[_0x94b1('0x13')][_0x94b1('0x12')]);}})[_0x94b1('0x14')](function(_0x494138){logger[_0x94b1('0x10')](_0x94b1('0xb'),_0x4ea1f9,_0x494138);_0xad0a85(_0x494138);});});}
\ No newline at end of file
index 381afc1..8567119 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc61a=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','show','post','create','put','update','exports','util','path'];(function(_0x139f3a,_0x55343d){var _0xb0e81e=function(_0x7f95ee){while(--_0x7f95ee){_0x139f3a['push'](_0x139f3a['shift']());}};_0xb0e81e(++_0x55343d);}(_0xc61a,0x6e));var _0xac61=function(_0x3b9569,_0x8021bc){_0x3b9569=_0x3b9569-0x0;var _0x19892d=_0xc61a[_0x3b9569];return _0x19892d;};'use strict';var multer=require('multer');var util=require(_0xac61('0x0'));var path=require(_0xac61('0x1'));var timeout=require(_0xac61('0x2'));var express=require(_0xac61('0x3'));var router=express[_0xac61('0x4')]();var auth=require(_0xac61('0x5'));var interaction=require(_0xac61('0x6'));var config=require(_0xac61('0x7'));var controller=require('./network.controller');router['get']('/',auth[_0xac61('0x8')](),controller[_0xac61('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xac61('0xa')]);router[_0xac61('0xb')]('/',auth[_0xac61('0x8')](),controller[_0xac61('0xc')]);router[_0xac61('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xac61('0xe')]);router['delete']('/:id',auth[_0xac61('0x8')](),controller['destroy']);module[_0xac61('0xf')]=router;
\ No newline at end of file
+var _0x614b=['index','/:id','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0x614b,0xb3));var _0xb614=function(_0x3bdaf7,_0x4b61c2){_0x3bdaf7=_0x3bdaf7-0x0;var _0x483c43=_0x614b[_0x3bdaf7];return _0x483c43;};'use strict';var multer=require(_0xb614('0x0'));var util=require(_0xb614('0x1'));var path=require('path');var timeout=require(_0xb614('0x2'));var express=require(_0xb614('0x3'));var router=express[_0xb614('0x4')]();var auth=require(_0xb614('0x5'));var interaction=require(_0xb614('0x6'));var config=require(_0xb614('0x7'));var controller=require(_0xb614('0x8'));router[_0xb614('0x9')]('/',auth[_0xb614('0xa')](),controller[_0xb614('0xb')]);router[_0xb614('0x9')](_0xb614('0xc'),auth[_0xb614('0xa')](),controller['show']);router[_0xb614('0xd')]('/',auth[_0xb614('0xa')](),controller[_0xb614('0xe')]);router[_0xb614('0xf')](_0xb614('0xc'),auth['isAuthenticated'](),controller[_0xb614('0x10')]);router[_0xb614('0x11')](_0xb614('0xc'),auth[_0xb614('0xa')](),controller[_0xb614('0x12')]);module['exports']=router;
\ No newline at end of file
index ee45cfc..9447dcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b6c=['sequelize','exports','ENUM','localnet','externip'];(function(_0x1c84cc,_0x4f8bf5){var _0x1904db=function(_0x401d57){while(--_0x401d57){_0x1c84cc['push'](_0x1c84cc['shift']());}};_0x1904db(++_0x4f8bf5);}(_0x8b6c,0x17c));var _0xc8b6=function(_0x518f67,_0x553bfb){_0x518f67=_0x518f67-0x0;var _0x551a96=_0x8b6c[_0x518f67];return _0x551a96;};'use strict';var Sequelize=require(_0xc8b6('0x0'));module[_0xc8b6('0x1')]={'type':{'type':Sequelize[_0xc8b6('0x2')](_0xc8b6('0x3'),_0xc8b6('0x4'))},'value':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x26cc=['ENUM','localnet','externip','STRING','exports'];(function(_0xff8595,_0x39341d){var _0x31e49e=function(_0x23ee7b){while(--_0x23ee7b){_0xff8595['push'](_0xff8595['shift']());}};_0x31e49e(++_0x39341d);}(_0x26cc,0x149));var _0xc26c=function(_0xdefbc3,_0x1ea49a){_0xdefbc3=_0xdefbc3-0x0;var _0x367798=_0x26cc[_0xdefbc3];return _0x367798;};'use strict';var Sequelize=require('sequelize');module[_0xc26c('0x0')]={'type':{'type':Sequelize[_0xc26c('0x1')](_0xc26c('0x2'),_0xc26c('0x3'))},'value':{'type':Sequelize[_0xc26c('0x4')]}};
\ No newline at end of file
index 1130e4a..05664d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e19=['querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','end','json','count','offset','limit','set','apply','save','update','stack','name','send','index','Network','query','dateStart','dateEnd','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','add','day','merge','where','filter','type','field','include','findAll','rows','params','rawAttributes','length','includeAll','options','find','create','transaction','body','join','root','server/files/templates/network.ejs','utf8','render','format','/etc/asterisk/sip_xcally_%s.conf','sequelize','toLowerCase','chan_sip.so','destroy','readFileSync','Reload','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','squel','jsforce','desk.js'];(function(_0x170d53,_0x44a13e){var _0x5c21e1=function(_0x6a64e5){while(--_0x6a64e5){_0x170d53['push'](_0x170d53['shift']());}};_0x5c21e1(++_0x44a13e);}(_0x1e19,0x1c9));var _0x91e1=function(_0x57b5d5,_0x25b4ee){_0x57b5d5=_0x57b5d5-0x0;var _0x24e2b5=_0x1e19[_0x57b5d5];return _0x24e2b5;};'use strict';var pdf=require(_0x91e1('0x0'));var emlformat=require(_0x91e1('0x1'));var rimraf=require(_0x91e1('0x2'));var zipdir=require(_0x91e1('0x3'));var jsonpatch=require(_0x91e1('0x4'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x91e1('0x5'));var path=require(_0x91e1('0x6'));var sox=require(_0x91e1('0x7'));var csv=require(_0x91e1('0x8'));var ejs=require(_0x91e1('0x9'));var fs=require('fs');var _=require('lodash');var squel=require(_0x91e1('0xa'));var crypto=require('crypto');var jsforce=require(_0x91e1('0xb'));var deskjs=require(_0x91e1('0xc'));var toCsv=require(_0x91e1('0x8'));var querystring=require(_0x91e1('0xd'));var Papa=require(_0x91e1('0xe'));var Redis=require('ioredis');var qs=require(_0x91e1('0xf'));var logger=require(_0x91e1('0x10'))('api');var utils=require(_0x91e1('0x11'));var config=require(_0x91e1('0x12'));var db=require(_0x91e1('0x13'))['db'];var jayson=require(_0x91e1('0x14'));var client=jayson[_0x91e1('0x15')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e0b23,_0x40b3f6,_0x463abd,_0x36660b){return new BPromise(function(_0xc8b555,_0xb0f9e0){var _0x8e8cf7=_0x36660b||client;return _0x8e8cf7[_0x91e1('0x16')](_0x5e0b23,_0x463abd)[_0x91e1('0x17')](function(_0x511333){logger[_0x91e1('0x18')](_0x91e1('0x19'),_0x40b3f6,_0x91e1('0x1a'));logger[_0x91e1('0x1b')](_0x91e1('0x1c'),_0x40b3f6,_0x91e1('0x1a'),JSON['stringify'](_0x511333));if(_0x511333[_0x91e1('0x1d')]){if(_0x511333['error'][_0x91e1('0x1e')]===0x1f4){logger[_0x91e1('0x1d')]('Network,\x20%s,\x20%s',_0x40b3f6,_0x511333[_0x91e1('0x1d')][_0x91e1('0x1f')]);return _0xb0f9e0(_0x511333[_0x91e1('0x1d')]['message']);}logger['error'](_0x91e1('0x19'),_0x40b3f6,_0x511333['error'][_0x91e1('0x1f')]);return _0xc8b555(_0x511333[_0x91e1('0x1d')][_0x91e1('0x1f')]);}else{logger[_0x91e1('0x18')](_0x91e1('0x19'),_0x40b3f6,_0x91e1('0x1a'));_0xc8b555(_0x511333[_0x91e1('0x20')][_0x91e1('0x1f')]);}})[_0x91e1('0x21')](function(_0x10a610){logger[_0x91e1('0x1d')]('Network,\x20%s,\x20%s',_0x40b3f6,_0x10a610);_0xb0f9e0(_0x10a610);});});}function respondWithStatusCode(_0x218a5a,_0x3e39e3){_0x3e39e3=_0x3e39e3||0xcc;return function(_0x8d2bd1){if(_0x8d2bd1){return _0x218a5a['sendStatus'](_0x3e39e3);}return _0x218a5a[_0x91e1('0x22')](_0x3e39e3)[_0x91e1('0x23')]();};}function respondWithResult(_0x3c7631,_0x45a24){_0x45a24=_0x45a24||0xc8;return function(_0x4281ef){if(_0x4281ef){return _0x3c7631[_0x91e1('0x22')](_0x45a24)[_0x91e1('0x24')](_0x4281ef);}};}function respondWithFilteredResult(_0xe97618,_0xca52f1){return function(_0x1b5f7e){if(_0x1b5f7e){var _0x2fccaf=_0x1b5f7e[_0x91e1('0x25')],_0xaacfcd=_0xca52f1[_0x91e1('0x26')],_0x3dbb13=_0xca52f1[_0x91e1('0x26')]+_0xca52f1[_0x91e1('0x27')],_0xf3bbb8;if(_0x3dbb13>=_0x2fccaf){_0x3dbb13=_0x2fccaf;_0xf3bbb8=0xc8;}else{_0xf3bbb8=0xce;}_0xe97618[_0x91e1('0x22')](_0xf3bbb8);return _0xe97618[_0x91e1('0x28')]('Content-Range',_0xaacfcd+'-'+_0x3dbb13+'/'+_0x2fccaf)[_0x91e1('0x24')](_0x1b5f7e);}return null;};}function patchUpdates(_0xec7e07){return function(_0x5bae2b){try{jsonpatch[_0x91e1('0x29')](_0x5bae2b,_0xec7e07,!![]);}catch(_0x568027){return BPromise['reject'](_0x568027);}return _0x5bae2b[_0x91e1('0x2a')]();};}function saveUpdates(_0x37b017,_0xf516d3){return function(_0x4913a8){if(_0x4913a8){return _0x4913a8[_0x91e1('0x2b')](_0x37b017)[_0x91e1('0x17')](function(_0x1237ab){return _0x1237ab;});}return null;};}function removeEntity(_0x266f08,_0x1fe96a){return function(_0x3a4e9a){if(_0x3a4e9a){return _0x3a4e9a['destroy']()['then'](function(){_0x266f08[_0x91e1('0x22')](0xcc)[_0x91e1('0x23')]();});}};}function handleEntityNotFound(_0x2911f0,_0x40fe22){return function(_0x164312){if(!_0x164312){_0x2911f0['sendStatus'](0x194);}return _0x164312;};}function handleError(_0x12e26f,_0xdf6718){_0xdf6718=_0xdf6718||0x1f4;return function(_0x427394){logger[_0x91e1('0x1d')](_0x427394[_0x91e1('0x2c')]);if(_0x427394[_0x91e1('0x2d')]){delete _0x427394[_0x91e1('0x2d')];}_0x12e26f[_0x91e1('0x22')](_0xdf6718)[_0x91e1('0x2e')](_0x427394);};}exports[_0x91e1('0x2f')]=function(_0x10bd07,_0x48a6e0){var _0x1247c1={},_0x17225c={},_0x38d556={'count':0x0,'rows':[]};var _0x35fdcd=db[_0x91e1('0x30')]['rawAttributes'];_0x17225c['model']=_['keys'](_0x35fdcd);var _0x294016={'dateStart':_0x10bd07[_0x91e1('0x31')][_0x91e1('0x32')],'dateEnd':_0x10bd07['query']['dateEnd']};delete _0x10bd07[_0x91e1('0x31')][_0x91e1('0x32')];delete _0x10bd07[_0x91e1('0x31')][_0x91e1('0x33')];_0x17225c[_0x91e1('0x31')]=_[_0x91e1('0x34')](_0x10bd07[_0x91e1('0x31')]);_0x17225c[_0x91e1('0x35')]=_[_0x91e1('0x36')](_0x17225c['model'],_0x17225c[_0x91e1('0x31')]);_0x1247c1['attributes']=_[_0x91e1('0x36')](_0x17225c[_0x91e1('0x37')],qs['fields'](_0x10bd07[_0x91e1('0x31')][_0x91e1('0x38')]));_0x1247c1[_0x91e1('0x39')]=_0x1247c1['attributes']['length']?_0x1247c1[_0x91e1('0x39')]:_0x17225c['model'];if(!_0x10bd07[_0x91e1('0x31')][_0x91e1('0x3a')](_0x91e1('0x3b'))){_0x1247c1[_0x91e1('0x27')]=qs[_0x91e1('0x27')](_0x10bd07[_0x91e1('0x31')]['limit']);_0x1247c1[_0x91e1('0x26')]=qs[_0x91e1('0x26')](_0x10bd07['query'][_0x91e1('0x26')]);}_0x1247c1[_0x91e1('0x3c')]=qs[_0x91e1('0x3d')](_0x10bd07['query'][_0x91e1('0x3d')]);_0x1247c1['where']=qs[_0x91e1('0x35')](_['pick'](_0x10bd07['query'],_0x17225c[_0x91e1('0x35')]));if(_0x294016[_0x91e1('0x32')]){if(_0x294016[_0x91e1('0x33')]){_0x294016[_0x91e1('0x33')]=moment(_0x294016['dateEnd'])[_0x91e1('0x3e')](0x1,_0x91e1('0x3f'));}else{_0x294016[_0x91e1('0x33')]=moment(_0x294016['dateStart'])['add'](0x1,_0x91e1('0x3f'));}_[_0x91e1('0x40')](_0x1247c1[_0x91e1('0x41')],{'createdAt':{'$gte':_0x294016['dateStart'],'$lte':_0x294016['dateEnd']}});}if(_0x10bd07[_0x91e1('0x31')][_0x91e1('0x42')]){_0x1247c1[_0x91e1('0x41')]=_[_0x91e1('0x40')](_0x1247c1['where'],{'$or':_['map'](_0x35fdcd,function(_0xd1f3e){if(_0xd1f3e[_0x91e1('0x43')]['key']!=='VIRTUAL'){var _0x469886={};_0x469886[_0xd1f3e[_0x91e1('0x44')]]={'$like':'%'+_0x10bd07[_0x91e1('0x31')][_0x91e1('0x42')]+'%'};return _0x469886;}})});}_0x1247c1=_[_0x91e1('0x40')]({},_0x1247c1,_0x10bd07['options']);var _0x4e3fd4={'where':_0x1247c1[_0x91e1('0x41')]};return db[_0x91e1('0x30')][_0x91e1('0x25')](_0x4e3fd4)[_0x91e1('0x17')](function(_0x1a928b){_0x38d556[_0x91e1('0x25')]=_0x1a928b;if(_0x10bd07[_0x91e1('0x31')]['includeAll']){_0x1247c1[_0x91e1('0x45')]=[{'all':!![]}];}return db[_0x91e1('0x30')][_0x91e1('0x46')](_0x1247c1);})[_0x91e1('0x17')](function(_0x481598){_0x38d556[_0x91e1('0x47')]=_0x481598;return _0x38d556;})['then'](respondWithFilteredResult(_0x48a6e0,_0x1247c1))[_0x91e1('0x21')](handleError(_0x48a6e0,null));};exports['show']=function(_0x724686,_0x1acf4f){var _0x39c80d={'raw':!![],'where':{'id':_0x724686[_0x91e1('0x48')]['id']}},_0x120cfa={};_0x120cfa[_0x91e1('0x37')]=_[_0x91e1('0x34')](db[_0x91e1('0x30')][_0x91e1('0x49')]);_0x120cfa[_0x91e1('0x31')]=_[_0x91e1('0x34')](_0x724686['query']);_0x120cfa[_0x91e1('0x35')]=_['intersection'](_0x120cfa['model'],_0x120cfa[_0x91e1('0x31')]);_0x39c80d[_0x91e1('0x39')]=_[_0x91e1('0x36')](_0x120cfa[_0x91e1('0x37')],qs['fields'](_0x724686[_0x91e1('0x31')][_0x91e1('0x38')]));_0x39c80d['attributes']=_0x39c80d[_0x91e1('0x39')][_0x91e1('0x4a')]?_0x39c80d[_0x91e1('0x39')]:_0x120cfa[_0x91e1('0x37')];if(_0x724686[_0x91e1('0x31')][_0x91e1('0x4b')]){_0x39c80d['include']=[{'all':!![]}];}_0x39c80d=_[_0x91e1('0x40')]({},_0x39c80d,_0x724686[_0x91e1('0x4c')]);return db['Network'][_0x91e1('0x4d')](_0x39c80d)[_0x91e1('0x17')](handleEntityNotFound(_0x1acf4f,null))[_0x91e1('0x17')](respondWithResult(_0x1acf4f,null))[_0x91e1('0x21')](handleError(_0x1acf4f,null));};exports[_0x91e1('0x4e')]=function(_0x5672bd,_0x163ee1,_0x5c0b99){var _0x40e151;return db['sequelize'][_0x91e1('0x4f')](function(_0x2eb5fe){return db[_0x91e1('0x30')][_0x91e1('0x4e')](_0x5672bd['body'],{'raw':!![]})[_0x91e1('0x17')](function(_0x4d74b5){_0x40e151=_0x4d74b5;return db[_0x91e1('0x30')][_0x91e1('0x46')]({'where':{'type':_0x5672bd[_0x91e1('0x50')][_0x91e1('0x43')]},'raw':!![]});})[_0x91e1('0x17')](function(_0x3dbe6d){var _0xbcaecc=fs['readFileSync'](path[_0x91e1('0x51')](config[_0x91e1('0x52')],_0x91e1('0x53')),_0x91e1('0x54'));var _0x465909=ejs[_0x91e1('0x55')](_0xbcaecc,{'networks':_0x3dbe6d||[]});fs['writeFileSync'](util[_0x91e1('0x56')](_0x91e1('0x57'),_0x5672bd[_0x91e1('0x50')][_0x91e1('0x43')]['toLowerCase']()),_0x465909);})[_0x91e1('0x17')](function(){return respondWithRpcPromise('Reload',_0x91e1('0x4e'),{'module':'chan_sip.so'});})['then'](function(){return _0x40e151;});})['then'](respondWithResult(_0x163ee1,0xc9))[_0x91e1('0x21')](handleError(_0x163ee1,null));};exports[_0x91e1('0x2b')]=function(_0x2e84ed,_0x264cff,_0x4b9d34){var _0x1d6a15;return db[_0x91e1('0x58')][_0x91e1('0x4f')](function(_0x59e001){return db['Network']['find']({'where':{'id':_0x2e84ed['params']['id']}})['then'](handleEntityNotFound(_0x264cff,null))[_0x91e1('0x17')](saveUpdates(_0x2e84ed[_0x91e1('0x50')],null))['then'](function(_0x8fb225){if(_0x8fb225){_0x1d6a15=_0x8fb225;return db[_0x91e1('0x30')][_0x91e1('0x46')]({'where':{'type':_0x1d6a15['type']},'raw':!![]});}return null;})[_0x91e1('0x17')](function(_0x1b0314){if(_0x1b0314){var _0x2a6410=fs['readFileSync'](path['join'](config[_0x91e1('0x52')],'server/files/templates/network.ejs'),'utf8');var _0x2c088c=ejs['render'](_0x2a6410,{'networks':_0x1b0314||[]});fs['writeFileSync'](util[_0x91e1('0x56')](_0x91e1('0x57'),_0x1d6a15['type'][_0x91e1('0x59')]()),_0x2c088c);return respondWithRpcPromise('Reload','update',{'module':_0x91e1('0x5a')});}return null;})[_0x91e1('0x17')](function(_0x26c412){if(_0x26c412){return _0x1d6a15;}return null;});})['then'](respondWithResult(_0x264cff,null))[_0x91e1('0x21')](handleError(_0x264cff,null));};exports[_0x91e1('0x5b')]=function(_0x589ce9,_0xe7ba4f,_0x496c91){var _0x994e93;return db[_0x91e1('0x30')][_0x91e1('0x4d')]({'where':{'id':_0x589ce9[_0x91e1('0x48')]['id']}})[_0x91e1('0x17')](function(_0x17b0b6){_0x994e93=_0x17b0b6;return _0x17b0b6;})[_0x91e1('0x17')](handleEntityNotFound(_0xe7ba4f,null))[_0x91e1('0x17')](removeEntity(_0xe7ba4f,null))[_0x91e1('0x17')](function(){if(_0x994e93){return db[_0x91e1('0x30')]['findAll']({'where':{'type':_0x994e93[_0x91e1('0x43')]},'raw':!![]});}})[_0x91e1('0x17')](function(_0x4533a8){if(_0x4533a8){var _0x4d3d8b=fs[_0x91e1('0x5c')](path[_0x91e1('0x51')](config[_0x91e1('0x52')],_0x91e1('0x53')),_0x91e1('0x54'));var _0x4d1299=ejs[_0x91e1('0x55')](_0x4d3d8b,{'networks':_0x4533a8||[]});fs['writeFileSync'](util[_0x91e1('0x56')](_0x91e1('0x57'),_0x994e93[_0x91e1('0x43')][_0x91e1('0x59')]()),_0x4d1299);return respondWithRpcPromise(_0x91e1('0x5d'),'destroy',{'module':_0x91e1('0x5a')});}})[_0x91e1('0x21')](handleError(_0xe7ba4f,null));};
\ No newline at end of file
+var _0xcf1c=['fast-json-patch','request-promise','moment','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','http','request','then','info','request\x20sent','stringify','error','code','Network,\x20%s,\x20%s','message','result','sendStatus','status','end','json','count','offset','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','Network','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','add','day','merge','filter','map','key','VIRTUAL','field','options','includeAll','findAll','catch','show','include','find','create','sequelize','body','type','server/files/templates/network.ejs','render','Reload','chan_sip.so','params','readFileSync','join','root','utf8','writeFileSync','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','html-pdf','eml-format','zip-dir'];(function(_0x351b05,_0x3fe0ea){var _0x19e3c4=function(_0x109b0b){while(--_0x109b0b){_0x351b05['push'](_0x351b05['shift']());}};_0x19e3c4(++_0x3fe0ea);}(_0xcf1c,0x18d));var _0xccf1=function(_0x4521e3,_0x10a8a4){_0x4521e3=_0x4521e3-0x0;var _0x46a272=_0xcf1c[_0x4521e3];return _0x46a272;};'use strict';var pdf=require(_0xccf1('0x0'));var emlformat=require(_0xccf1('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xccf1('0x2'));var jsonpatch=require(_0xccf1('0x3'));var rp=require(_0xccf1('0x4'));var moment=require(_0xccf1('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xccf1('0x6'));var sox=require('sox');var csv=require(_0xccf1('0x7'));var ejs=require(_0xccf1('0x8'));var fs=require('fs');var _=require(_0xccf1('0x9'));var squel=require(_0xccf1('0xa'));var crypto=require(_0xccf1('0xb'));var jsforce=require(_0xccf1('0xc'));var deskjs=require(_0xccf1('0xd'));var toCsv=require(_0xccf1('0x7'));var querystring=require(_0xccf1('0xe'));var Papa=require(_0xccf1('0xf'));var Redis=require(_0xccf1('0x10'));var qs=require(_0xccf1('0x11'));var logger=require(_0xccf1('0x12'))(_0xccf1('0x13'));var utils=require(_0xccf1('0x14'));var config=require(_0xccf1('0x15'));var db=require(_0xccf1('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xccf1('0x17')]({'port':0x232a});function respondWithRpcPromise(_0xdf5ed4,_0x1bbfb0,_0x3789c2,_0x3da424){return new BPromise(function(_0x568b81,_0x592a7e){var _0x41b3e4=_0x3da424||client;return _0x41b3e4[_0xccf1('0x18')](_0xdf5ed4,_0x3789c2)[_0xccf1('0x19')](function(_0x44b68a){logger[_0xccf1('0x1a')]('Network,\x20%s,\x20%s',_0x1bbfb0,_0xccf1('0x1b'));logger['debug']('Network,\x20%s,\x20%s,\x20%s',_0x1bbfb0,_0xccf1('0x1b'),JSON[_0xccf1('0x1c')](_0x44b68a));if(_0x44b68a[_0xccf1('0x1d')]){if(_0x44b68a[_0xccf1('0x1d')][_0xccf1('0x1e')]===0x1f4){logger[_0xccf1('0x1d')](_0xccf1('0x1f'),_0x1bbfb0,_0x44b68a['error'][_0xccf1('0x20')]);return _0x592a7e(_0x44b68a['error'][_0xccf1('0x20')]);}logger['error'](_0xccf1('0x1f'),_0x1bbfb0,_0x44b68a[_0xccf1('0x1d')]['message']);return _0x568b81(_0x44b68a[_0xccf1('0x1d')][_0xccf1('0x20')]);}else{logger['info']('Network,\x20%s,\x20%s',_0x1bbfb0,'request\x20sent');_0x568b81(_0x44b68a[_0xccf1('0x21')][_0xccf1('0x20')]);}})['catch'](function(_0x4d4666){logger[_0xccf1('0x1d')](_0xccf1('0x1f'),_0x1bbfb0,_0x4d4666);_0x592a7e(_0x4d4666);});});}function respondWithStatusCode(_0x43d622,_0xe8c94){_0xe8c94=_0xe8c94||0xcc;return function(_0x1ad23c){if(_0x1ad23c){return _0x43d622[_0xccf1('0x22')](_0xe8c94);}return _0x43d622[_0xccf1('0x23')](_0xe8c94)[_0xccf1('0x24')]();};}function respondWithResult(_0x75b9f6,_0x4a4de5){_0x4a4de5=_0x4a4de5||0xc8;return function(_0x2702a2){if(_0x2702a2){return _0x75b9f6[_0xccf1('0x23')](_0x4a4de5)[_0xccf1('0x25')](_0x2702a2);}};}function respondWithFilteredResult(_0x2c9e07,_0x17f5a9){return function(_0x13827d){if(_0x13827d){var _0x3d1011=_0x13827d[_0xccf1('0x26')],_0x29f095=_0x17f5a9[_0xccf1('0x27')],_0x34799e=_0x17f5a9[_0xccf1('0x27')]+_0x17f5a9['limit'],_0xec56ce;if(_0x34799e>=_0x3d1011){_0x34799e=_0x3d1011;_0xec56ce=0xc8;}else{_0xec56ce=0xce;}_0x2c9e07[_0xccf1('0x23')](_0xec56ce);return _0x2c9e07[_0xccf1('0x28')](_0xccf1('0x29'),_0x29f095+'-'+_0x34799e+'/'+_0x3d1011)[_0xccf1('0x25')](_0x13827d);}return null;};}function patchUpdates(_0x5a83b8){return function(_0x2b069f){try{jsonpatch[_0xccf1('0x2a')](_0x2b069f,_0x5a83b8,!![]);}catch(_0x39f66a){return BPromise[_0xccf1('0x2b')](_0x39f66a);}return _0x2b069f[_0xccf1('0x2c')]();};}function saveUpdates(_0x1fc293,_0xc5cb28){return function(_0x3bafc5){if(_0x3bafc5){return _0x3bafc5[_0xccf1('0x2d')](_0x1fc293)['then'](function(_0x1082b5){return _0x1082b5;});}return null;};}function removeEntity(_0x71e3d8,_0x47034f){return function(_0x46b513){if(_0x46b513){return _0x46b513[_0xccf1('0x2e')]()['then'](function(){_0x71e3d8[_0xccf1('0x23')](0xcc)[_0xccf1('0x24')]();});}};}function handleEntityNotFound(_0x27bd37,_0x236dc8){return function(_0x3c0526){if(!_0x3c0526){_0x27bd37['sendStatus'](0x194);}return _0x3c0526;};}function handleError(_0x5dd1df,_0x22c20d){_0x22c20d=_0x22c20d||0x1f4;return function(_0x3dc8a9){logger[_0xccf1('0x1d')](_0x3dc8a9[_0xccf1('0x2f')]);if(_0x3dc8a9['name']){delete _0x3dc8a9[_0xccf1('0x30')];}_0x5dd1df[_0xccf1('0x23')](_0x22c20d)[_0xccf1('0x31')](_0x3dc8a9);};}exports[_0xccf1('0x32')]=function(_0x1ba5e9,_0x23513f){var _0x31436a={},_0x5c1848={},_0x23e912={'count':0x0,'rows':[]};var _0xf664ab=db[_0xccf1('0x33')][_0xccf1('0x34')];_0x5c1848[_0xccf1('0x35')]=_[_0xccf1('0x36')](_0xf664ab);var _0x269737={'dateStart':_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x38')],'dateEnd':_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x39')]};delete _0x1ba5e9[_0xccf1('0x37')]['dateStart'];delete _0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x39')];_0x5c1848['query']=_[_0xccf1('0x36')](_0x1ba5e9[_0xccf1('0x37')]);_0x5c1848[_0xccf1('0x3a')]=_[_0xccf1('0x3b')](_0x5c1848[_0xccf1('0x35')],_0x5c1848[_0xccf1('0x37')]);_0x31436a[_0xccf1('0x3c')]=_[_0xccf1('0x3b')](_0x5c1848[_0xccf1('0x35')],qs[_0xccf1('0x3d')](_0x1ba5e9['query'][_0xccf1('0x3d')]));_0x31436a['attributes']=_0x31436a['attributes'][_0xccf1('0x3e')]?_0x31436a[_0xccf1('0x3c')]:_0x5c1848['model'];if(!_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x3f')]('nolimit')){_0x31436a['limit']=qs[_0xccf1('0x40')](_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x40')]);_0x31436a[_0xccf1('0x27')]=qs[_0xccf1('0x27')](_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x27')]);}_0x31436a[_0xccf1('0x41')]=qs['sort'](_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x42')]);_0x31436a[_0xccf1('0x43')]=qs[_0xccf1('0x3a')](_['pick'](_0x1ba5e9[_0xccf1('0x37')],_0x5c1848[_0xccf1('0x3a')]));if(_0x269737[_0xccf1('0x38')]){if(_0x269737['dateEnd']){_0x269737['dateEnd']=moment(_0x269737[_0xccf1('0x39')])[_0xccf1('0x44')](0x1,'day');}else{_0x269737[_0xccf1('0x39')]=moment(_0x269737['dateStart'])[_0xccf1('0x44')](0x1,_0xccf1('0x45'));}_[_0xccf1('0x46')](_0x31436a[_0xccf1('0x43')],{'createdAt':{'$gte':_0x269737[_0xccf1('0x38')],'$lte':_0x269737[_0xccf1('0x39')]}});}if(_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x47')]){_0x31436a[_0xccf1('0x43')]=_[_0xccf1('0x46')](_0x31436a[_0xccf1('0x43')],{'$or':_[_0xccf1('0x48')](_0xf664ab,function(_0x3f38a3){if(_0x3f38a3['type'][_0xccf1('0x49')]!==_0xccf1('0x4a')){var _0x360a9e={};_0x360a9e[_0x3f38a3[_0xccf1('0x4b')]]={'$like':'%'+_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x47')]+'%'};return _0x360a9e;}})});}_0x31436a=_[_0xccf1('0x46')]({},_0x31436a,_0x1ba5e9[_0xccf1('0x4c')]);var _0xef0944={'where':_0x31436a[_0xccf1('0x43')]};return db['Network'][_0xccf1('0x26')](_0xef0944)[_0xccf1('0x19')](function(_0x2d14f1){_0x23e912[_0xccf1('0x26')]=_0x2d14f1;if(_0x1ba5e9[_0xccf1('0x37')][_0xccf1('0x4d')]){_0x31436a['include']=[{'all':!![]}];}return db['Network'][_0xccf1('0x4e')](_0x31436a);})[_0xccf1('0x19')](function(_0x4955a2){_0x23e912['rows']=_0x4955a2;return _0x23e912;})[_0xccf1('0x19')](respondWithFilteredResult(_0x23513f,_0x31436a))[_0xccf1('0x4f')](handleError(_0x23513f,null));};exports[_0xccf1('0x50')]=function(_0x1fb7dc,_0x11ef95){var _0x1a7d83={'raw':!![],'where':{'id':_0x1fb7dc['params']['id']}},_0x4dc6cd={};_0x4dc6cd[_0xccf1('0x35')]=_[_0xccf1('0x36')](db['Network'][_0xccf1('0x34')]);_0x4dc6cd[_0xccf1('0x37')]=_[_0xccf1('0x36')](_0x1fb7dc['query']);_0x4dc6cd[_0xccf1('0x3a')]=_['intersection'](_0x4dc6cd['model'],_0x4dc6cd[_0xccf1('0x37')]);_0x1a7d83[_0xccf1('0x3c')]=_[_0xccf1('0x3b')](_0x4dc6cd[_0xccf1('0x35')],qs[_0xccf1('0x3d')](_0x1fb7dc[_0xccf1('0x37')]['fields']));_0x1a7d83[_0xccf1('0x3c')]=_0x1a7d83[_0xccf1('0x3c')][_0xccf1('0x3e')]?_0x1a7d83['attributes']:_0x4dc6cd[_0xccf1('0x35')];if(_0x1fb7dc[_0xccf1('0x37')][_0xccf1('0x4d')]){_0x1a7d83[_0xccf1('0x51')]=[{'all':!![]}];}_0x1a7d83=_['merge']({},_0x1a7d83,_0x1fb7dc[_0xccf1('0x4c')]);return db[_0xccf1('0x33')][_0xccf1('0x52')](_0x1a7d83)[_0xccf1('0x19')](handleEntityNotFound(_0x11ef95,null))['then'](respondWithResult(_0x11ef95,null))['catch'](handleError(_0x11ef95,null));};exports[_0xccf1('0x53')]=function(_0x2306d0,_0x2b9bbf,_0x474238){var _0x4255d8;return db[_0xccf1('0x54')]['transaction'](function(_0x360c2c){return db[_0xccf1('0x33')][_0xccf1('0x53')](_0x2306d0['body'],{'raw':!![]})[_0xccf1('0x19')](function(_0x5da043){_0x4255d8=_0x5da043;return db[_0xccf1('0x33')][_0xccf1('0x4e')]({'where':{'type':_0x2306d0[_0xccf1('0x55')][_0xccf1('0x56')]},'raw':!![]});})[_0xccf1('0x19')](function(_0x4f2035){var _0x5a56ad=fs['readFileSync'](path['join'](config['root'],_0xccf1('0x57')),'utf8');var _0xcebd0a=ejs[_0xccf1('0x58')](_0x5a56ad,{'networks':_0x4f2035||[]});fs['writeFileSync'](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x2306d0['body'][_0xccf1('0x56')]['toLowerCase']()),_0xcebd0a);})[_0xccf1('0x19')](function(){return respondWithRpcPromise(_0xccf1('0x59'),_0xccf1('0x53'),{'module':_0xccf1('0x5a')});})[_0xccf1('0x19')](function(){return _0x4255d8;});})['then'](respondWithResult(_0x2b9bbf,0xc9))[_0xccf1('0x4f')](handleError(_0x2b9bbf,null));};exports['update']=function(_0x2e38f5,_0x3e38b9,_0x46cb0e){var _0x18631d;return db[_0xccf1('0x54')]['transaction'](function(_0x44da74){return db[_0xccf1('0x33')][_0xccf1('0x52')]({'where':{'id':_0x2e38f5[_0xccf1('0x5b')]['id']}})[_0xccf1('0x19')](handleEntityNotFound(_0x3e38b9,null))['then'](saveUpdates(_0x2e38f5[_0xccf1('0x55')],null))[_0xccf1('0x19')](function(_0x400e52){if(_0x400e52){_0x18631d=_0x400e52;return db['Network'][_0xccf1('0x4e')]({'where':{'type':_0x18631d[_0xccf1('0x56')]},'raw':!![]});}return null;})['then'](function(_0x4a5f22){if(_0x4a5f22){var _0x443fe0=fs[_0xccf1('0x5c')](path[_0xccf1('0x5d')](config[_0xccf1('0x5e')],_0xccf1('0x57')),_0xccf1('0x5f'));var _0x3f6f06=ejs[_0xccf1('0x58')](_0x443fe0,{'networks':_0x4a5f22||[]});fs[_0xccf1('0x60')](util[_0xccf1('0x61')](_0xccf1('0x62'),_0x18631d[_0xccf1('0x56')][_0xccf1('0x63')]()),_0x3f6f06);return respondWithRpcPromise('Reload',_0xccf1('0x2d'),{'module':_0xccf1('0x5a')});}return null;})[_0xccf1('0x19')](function(_0x47cd9a){if(_0x47cd9a){return _0x18631d;}return null;});})[_0xccf1('0x19')](respondWithResult(_0x3e38b9,null))[_0xccf1('0x4f')](handleError(_0x3e38b9,null));};exports[_0xccf1('0x2e')]=function(_0x2ae648,_0x286476,_0x5203d0){var _0x4f9760;return db[_0xccf1('0x33')]['find']({'where':{'id':_0x2ae648['params']['id']}})[_0xccf1('0x19')](function(_0x2ad500){_0x4f9760=_0x2ad500;return _0x2ad500;})[_0xccf1('0x19')](handleEntityNotFound(_0x286476,null))[_0xccf1('0x19')](removeEntity(_0x286476,null))['then'](function(){if(_0x4f9760){return db[_0xccf1('0x33')]['findAll']({'where':{'type':_0x4f9760[_0xccf1('0x56')]},'raw':!![]});}})['then'](function(_0x300437){if(_0x300437){var _0x4e3b06=fs['readFileSync'](path['join'](config[_0xccf1('0x5e')],'server/files/templates/network.ejs'),'utf8');var _0x237874=ejs[_0xccf1('0x58')](_0x4e3b06,{'networks':_0x300437||[]});fs[_0xccf1('0x60')](util[_0xccf1('0x61')](_0xccf1('0x62'),_0x4f9760['type'][_0xccf1('0x63')]()),_0x237874);return respondWithRpcPromise(_0xccf1('0x59'),_0xccf1('0x2e'),{'module':_0xccf1('0x5a')});}})[_0xccf1('0x4f')](handleError(_0x286476,null));};
\ No newline at end of file
index e4f01e6..2907b1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f21=['lodash','../../config/logger','api','moment','bluebird','request-promise','./network.attributes','exports','Network','network'];(function(_0x38b401,_0x517c12){var _0x46bd8c=function(_0x54c6d3){while(--_0x54c6d3){_0x38b401['push'](_0x38b401['shift']());}};_0x46bd8c(++_0x517c12);}(_0x7f21,0x78));var _0x17f2=function(_0x536036,_0x4c3d55){_0x536036=_0x536036-0x0;var _0x295629=_0x7f21[_0x536036];return _0x295629;};'use strict';var _=require(_0x17f2('0x0'));var util=require('util');var logger=require(_0x17f2('0x1'))(_0x17f2('0x2'));var moment=require(_0x17f2('0x3'));var BPromise=require(_0x17f2('0x4'));var rp=require(_0x17f2('0x5'));var attributes=require(_0x17f2('0x6'));module[_0x17f2('0x7')]=function(_0x229287,_0x46843f){return _0x229287['define'](_0x17f2('0x8'),attributes,{'tableName':_0x17f2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf700=['util','../../config/logger','api','bluebird','exports','Network','network'];(function(_0x5cde70,_0x5275c5){var _0x559b7c=function(_0x5e54b2){while(--_0x5e54b2){_0x5cde70['push'](_0x5cde70['shift']());}};_0x559b7c(++_0x5275c5);}(_0xf700,0x7e));var _0x0f70=function(_0x5df023,_0x43ebe3){_0x5df023=_0x5df023-0x0;var _0x5bd677=_0xf700[_0x5df023];return _0x5bd677;};'use strict';var _=require('lodash');var util=require(_0x0f70('0x0'));var logger=require(_0x0f70('0x1'))(_0x0f70('0x2'));var moment=require('moment');var BPromise=require(_0x0f70('0x3'));var rp=require('request-promise');var attributes=require('./network.attributes');module[_0x0f70('0x4')]=function(_0x33b821,_0x2fc6e4){return _0x33b821['define'](_0x0f70('0x5'),attributes,{'tableName':_0x0f70('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index db6bcf7..2574f2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7a3=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','Network,\x20%s,\x20%s','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x4b96eb,_0x3d0933){var _0xe9debc=function(_0xa6cf1a){while(--_0xa6cf1a){_0x4b96eb['push'](_0x4b96eb['shift']());}};_0xe9debc(++_0x3d0933);}(_0xc7a3,0xbd));var _0x3c7a=function(_0x5d4eca,_0x5f0929){_0x5d4eca=_0x5d4eca-0x0;var _0x51bc55=_0xc7a3[_0x5d4eca];return _0x51bc55;};'use strict';var _=require('lodash');var util=require(_0x3c7a('0x0'));var moment=require(_0x3c7a('0x1'));var BPromise=require(_0x3c7a('0x2'));var rs=require(_0x3c7a('0x3'));var fs=require('fs');var Redis=require(_0x3c7a('0x4'));var db=require(_0x3c7a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3c7a('0x6'))(_0x3c7a('0x7'));var config=require('../../config/environment');var jayson=require(_0x3c7a('0x8'));var client=jayson[_0x3c7a('0x9')][_0x3c7a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x48e820,_0x115c8a,_0x4f0608){return new BPromise(function(_0x20d36c,_0x5a6fbf){return client[_0x3c7a('0xb')](_0x48e820,_0x4f0608)[_0x3c7a('0xc')](function(_0x132476){logger['info'](_0x3c7a('0xd'),_0x115c8a,_0x3c7a('0xe'));logger['debug'](_0x3c7a('0xf'),_0x115c8a,'request\x20sent',JSON[_0x3c7a('0x10')](_0x132476));if(_0x132476['error']){if(_0x132476[_0x3c7a('0x11')][_0x3c7a('0x12')]===0x1f4){logger[_0x3c7a('0x11')](_0x3c7a('0xd'),_0x115c8a,_0x132476[_0x3c7a('0x11')]['message']);return _0x5a6fbf(_0x132476[_0x3c7a('0x11')][_0x3c7a('0x13')]);}logger[_0x3c7a('0x11')](_0x3c7a('0xd'),_0x115c8a,_0x132476[_0x3c7a('0x11')]['message']);return _0x20d36c(_0x132476[_0x3c7a('0x11')][_0x3c7a('0x13')]);}else{logger['info']('Network,\x20%s,\x20%s',_0x115c8a,_0x3c7a('0xe'));_0x20d36c(_0x132476[_0x3c7a('0x14')][_0x3c7a('0x13')]);}})['catch'](function(_0x1bae30){logger['error'](_0x3c7a('0xd'),_0x115c8a,_0x1bae30);_0x5a6fbf(_0x1bae30);});});}
\ No newline at end of file
+var _0x7217=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','debug','Network,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x7217,0x19e));var _0x7721=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0x7217[_0x36dfbd];return _0x4ecad9;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Network,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Network,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}
\ No newline at end of file
index 7adc5f2..e21d8b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fef=['index','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/interactions','getInteractions','/:id/users','getAgents','post','addDisposition','addAnswer','/:id/notify','notify','/:id/applications','addAgents','/:id/send','send','put','/:id','update','removeDispositions','removeAnswers','delete','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0xe0427b,_0x4b032b){var _0x193182=function(_0x53b586){while(--_0x53b586){_0xe0427b['push'](_0xe0427b['shift']());}};_0x193182(++_0x4b032b);}(_0x4fef,0xb9));var _0xf4fe=function(_0x3de7c1,_0x5baab6){_0x3de7c1=_0x3de7c1-0x0;var _0x2a6c15=_0x4fef[_0x3de7c1];return _0x2a6c15;};'use strict';var multer=require(_0xf4fe('0x0'));var util=require(_0xf4fe('0x1'));var path=require(_0xf4fe('0x2'));var timeout=require(_0xf4fe('0x3'));var express=require(_0xf4fe('0x4'));var router=express[_0xf4fe('0x5')]();var auth=require(_0xf4fe('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf4fe('0x7'));var controller=require('./openchannelAccount.controller');router[_0xf4fe('0x8')]('/',auth[_0xf4fe('0x9')](),controller[_0xf4fe('0xa')]);router[_0xf4fe('0x8')](_0xf4fe('0xb'),auth['isAuthenticated'](),controller[_0xf4fe('0xc')]);router[_0xf4fe('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xf4fe('0xd')]);router[_0xf4fe('0x8')](_0xf4fe('0xe'),auth[_0xf4fe('0x9')](),controller[_0xf4fe('0xf')]);router[_0xf4fe('0x8')](_0xf4fe('0x10'),auth[_0xf4fe('0x9')](),controller[_0xf4fe('0x11')]);router[_0xf4fe('0x8')]('/:id/applications',auth['isAuthenticated'](),controller['getApplications']);router[_0xf4fe('0x8')](_0xf4fe('0x12'),auth['isAuthenticated'](),controller[_0xf4fe('0x13')]);router[_0xf4fe('0x8')](_0xf4fe('0x14'),auth[_0xf4fe('0x9')](),controller[_0xf4fe('0x15')]);router[_0xf4fe('0x16')]('/',auth[_0xf4fe('0x9')](),controller['create']);router[_0xf4fe('0x16')](_0xf4fe('0xe'),auth[_0xf4fe('0x9')](),controller[_0xf4fe('0x17')]);router[_0xf4fe('0x16')](_0xf4fe('0x10'),auth[_0xf4fe('0x9')](),controller[_0xf4fe('0x18')]);router[_0xf4fe('0x16')](_0xf4fe('0x19'),controller[_0xf4fe('0x1a')]);router['post'](_0xf4fe('0x1b'),auth['isAuthenticated'](),controller['addApplications']);router[_0xf4fe('0x16')](_0xf4fe('0x14'),auth['isAuthenticated'](),controller[_0xf4fe('0x1c')]);router[_0xf4fe('0x16')](_0xf4fe('0x1d'),auth[_0xf4fe('0x9')](),controller[_0xf4fe('0x1e')]);router[_0xf4fe('0x1f')](_0xf4fe('0x20'),auth[_0xf4fe('0x9')](),controller[_0xf4fe('0x21')]);router['delete'](_0xf4fe('0x20'),auth[_0xf4fe('0x9')](),controller['destroy']);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xf4fe('0x22')]);router['delete'](_0xf4fe('0x10'),auth[_0xf4fe('0x9')](),controller[_0xf4fe('0x23')]);router[_0xf4fe('0x24')]('/:id/users',auth['isAuthenticated'](),controller[_0xf4fe('0x25')]);module[_0xf4fe('0x26')]=router;
\ No newline at end of file
+var _0xd845=['/describe','describe','/:id','/:id/canned_answers','/:id/applications','/:id/interactions','post','create','/:id/dispositions','addAnswer','/:id/notify','notify','addApplications','/:id/users','addAgents','/:id/send','update','destroy','removeDispositions','delete','removeAnswers','removeAgents','exports','multer','util','path','express','../../components/auth/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index'];(function(_0x185ad6,_0x1a135f){var _0x5e2b14=function(_0x5c6293){while(--_0x5c6293){_0x185ad6['push'](_0x185ad6['shift']());}};_0x5e2b14(++_0x1a135f);}(_0xd845,0x1c4));var _0x5d84=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0xd845[_0x1b5aea];return _0x15cfc6;};'use strict';var multer=require(_0x5d84('0x0'));var util=require(_0x5d84('0x1'));var path=require(_0x5d84('0x2'));var timeout=require('connect-timeout');var express=require(_0x5d84('0x3'));var router=express['Router']();var auth=require(_0x5d84('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x5d84('0x5'));var controller=require(_0x5d84('0x6'));router[_0x5d84('0x7')]('/',auth[_0x5d84('0x8')](),controller[_0x5d84('0x9')]);router[_0x5d84('0x7')](_0x5d84('0xa'),auth[_0x5d84('0x8')](),controller[_0x5d84('0xb')]);router[_0x5d84('0x7')](_0x5d84('0xc'),auth[_0x5d84('0x8')](),controller['show']);router['get']('/:id/dispositions',auth[_0x5d84('0x8')](),controller['getDispositions']);router[_0x5d84('0x7')](_0x5d84('0xd'),auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x5d84('0xe'),auth[_0x5d84('0x8')](),controller['getApplications']);router[_0x5d84('0x7')](_0x5d84('0xf'),auth[_0x5d84('0x8')](),controller['getInteractions']);router['get']('/:id/users',auth[_0x5d84('0x8')](),controller['getAgents']);router[_0x5d84('0x10')]('/',auth[_0x5d84('0x8')](),controller[_0x5d84('0x11')]);router[_0x5d84('0x10')](_0x5d84('0x12'),auth[_0x5d84('0x8')](),controller['addDisposition']);router['post'](_0x5d84('0xd'),auth['isAuthenticated'](),controller[_0x5d84('0x13')]);router[_0x5d84('0x10')](_0x5d84('0x14'),controller[_0x5d84('0x15')]);router[_0x5d84('0x10')](_0x5d84('0xe'),auth['isAuthenticated'](),controller[_0x5d84('0x16')]);router[_0x5d84('0x10')](_0x5d84('0x17'),auth[_0x5d84('0x8')](),controller[_0x5d84('0x18')]);router[_0x5d84('0x10')](_0x5d84('0x19'),auth[_0x5d84('0x8')](),controller['send']);router['put'](_0x5d84('0xc'),auth[_0x5d84('0x8')](),controller[_0x5d84('0x1a')]);router['delete'](_0x5d84('0xc'),auth[_0x5d84('0x8')](),controller[_0x5d84('0x1b')]);router['delete'](_0x5d84('0x12'),auth[_0x5d84('0x8')](),controller[_0x5d84('0x1c')]);router[_0x5d84('0x1d')](_0x5d84('0xd'),auth[_0x5d84('0x8')](),controller[_0x5d84('0x1e')]);router[_0x5d84('0x1d')](_0x5d84('0x17'),auth[_0x5d84('0x8')](),controller[_0x5d84('0x1f')]);module[_0x5d84('0x20')]=router;
\ No newline at end of file
index d89a53f..f1531f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['sequelize','randomstring','STRING','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER'];(function(_0x183788,_0x48fe0c){var _0x44b8c0=function(_0x2b0632){while(--_0x2b0632){_0x183788['push'](_0x183788['shift']());}};_0x44b8c0(++_0x48fe0c);}(_0x55ca,0x126));var _0xa55c=function(_0xec05a,_0xae2200){_0xec05a=_0xec05a-0x0;var _0x5911e2=_0x55ca[_0xec05a];return _0x5911e2;};'use strict';var Sequelize=require(_0xa55c('0x0'));var rs=require(_0xa55c('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xa55c('0x2')]},'token':{'type':Sequelize[_0xa55c('0x2')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xa55c('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xa55c('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xa55c('0x3')],'defaultValue':function(){return _0xa55c('0x4');}},'notificationSound':{'type':Sequelize[_0xa55c('0x5')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa55c('0x5')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa55c('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0xa55c('0x5')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa55c('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa55c('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c}};
\ No newline at end of file
+var _0xa41a=['TEXT','BOOLEAN','INTEGER','sequelize','randomstring','STRING','name','generate'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xa41a,0x6b));var _0xaa41=function(_0x1a6213,_0x4c6230){_0x1a6213=_0x1a6213-0x0;var _0x18f0b4=_0xa41a[_0x1a6213];return _0x18f0b4;};'use strict';var Sequelize=require(_0xaa41('0x0'));var rs=require(_0xaa41('0x1'));module['exports']={'name':{'type':Sequelize[_0xaa41('0x2')],'unique':_0xaa41('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xaa41('0x2')]},'token':{'type':Sequelize[_0xaa41('0x2')],'defaultValue':function(){return rs[_0xaa41('0x4')]();}},'replyUri':{'type':Sequelize[_0xaa41('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xaa41('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xaa41('0x5')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xaa41('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xaa41('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0xaa41('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xaa41('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xaa41('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c}};
\ No newline at end of file
index 3941c59..2e9572c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb7c=['sort','day','add','merge','filter','where','type','key','VIRTUAL','field','options','includeAll','include','OpenchannelAccount','findAll','rows','catch','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','getDispositions','Disposition','length','pick','OpenchannelAccountId','map','ids','addAnswer','CannedAnswer','getAnswers','order','removeAnswers','openchannel','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','isNil','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','Contacts','Applications','applications','list','orderBy','priority','asc','account','defaults','contact','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','update','interaction','created','autoclose','push','unmanaged','AttachmentId','UserId','User','agent','Start','startRouting','notify','sequelize','transaction','OpenchannelApplication','bulkCreate','findAndCountAll','getApplications','findOne','getInteractions','Contact','Owner','fullname','Tag','Tags','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','send','DESC','out','OpenchannelMessage','Messages','dataValues','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','jayson/promise','client','http','request','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','sendStatus','status','end','count','offset','limit','set','json','apply','reject','save','destroy','get','OpenchannelAccounts','UserProfileResource','stack','name','index','rawAttributes','keys','query','dateEnd','dateStart','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit'];(function(_0x1fe387,_0x50b157){var _0x59be5c=function(_0x338c0c){while(--_0x338c0c){_0x1fe387['push'](_0x1fe387['shift']());}};_0x59be5c(++_0x50b157);}(_0xfb7c,0x1f3));var _0xcfb7=function(_0x39b6ad,_0xb1937a){_0x39b6ad=_0x39b6ad-0x0;var _0x43ae7a=_0xfb7c[_0x39b6ad];return _0x43ae7a;};'use strict';var pdf=require(_0xcfb7('0x0'));var emlformat=require(_0xcfb7('0x1'));var rimraf=require(_0xcfb7('0x2'));var zipdir=require(_0xcfb7('0x3'));var jsonpatch=require(_0xcfb7('0x4'));var rp=require(_0xcfb7('0x5'));var moment=require(_0xcfb7('0x6'));var BPromise=require(_0xcfb7('0x7'));var Mustache=require(_0xcfb7('0x8'));var util=require(_0xcfb7('0x9'));var path=require('path');var sox=require(_0xcfb7('0xa'));var csv=require(_0xcfb7('0xb'));var ejs=require(_0xcfb7('0xc'));var fs=require('fs');var _=require(_0xcfb7('0xd'));var squel=require('squel');var crypto=require(_0xcfb7('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcfb7('0xf'));var Papa=require(_0xcfb7('0x10'));var Redis=require(_0xcfb7('0x11'));var qs=require(_0xcfb7('0x12'));var logger=require(_0xcfb7('0x13'))('api');var utils=require(_0xcfb7('0x14'));var config=require(_0xcfb7('0x15'));var db=require(_0xcfb7('0x16'))['db'];config[_0xcfb7('0x17')]=_['defaults'](config['redis'],{'host':_0xcfb7('0x18'),'port':0x18eb});var socket=require(_0xcfb7('0x19'))(new Redis(config[_0xcfb7('0x17')]));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0xcfb7('0x1a'));var client=jayson[_0xcfb7('0x1b')][_0xcfb7('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0xcfb7('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x487379,_0x5e15bc,_0x1931d9,_0x49ffb7){return new BPromise(function(_0x150a51,_0x44cee0){var _0x1a83d3=_0x49ffb7||client;return _0x1a83d3[_0xcfb7('0x1d')](_0x487379,_0x1931d9)[_0xcfb7('0x1e')](function(_0x2e1700){logger['info'](_0xcfb7('0x1f'),_0x5e15bc,_0xcfb7('0x20'));logger[_0xcfb7('0x21')](_0xcfb7('0x22'),_0x5e15bc,_0xcfb7('0x20'),JSON[_0xcfb7('0x23')](_0x2e1700));if(_0x2e1700[_0xcfb7('0x24')]){if(_0x2e1700[_0xcfb7('0x24')][_0xcfb7('0x25')]===0x1f4){logger[_0xcfb7('0x24')](_0xcfb7('0x1f'),_0x5e15bc,_0x2e1700['error'][_0xcfb7('0x26')]);return _0x44cee0(_0x2e1700[_0xcfb7('0x24')][_0xcfb7('0x26')]);}logger['error'](_0xcfb7('0x1f'),_0x5e15bc,_0x2e1700[_0xcfb7('0x24')][_0xcfb7('0x26')]);return _0x150a51(_0x2e1700[_0xcfb7('0x24')]['message']);}else{logger[_0xcfb7('0x27')](_0xcfb7('0x1f'),_0x5e15bc,'request\x20sent');_0x150a51(_0x2e1700[_0xcfb7('0x28')][_0xcfb7('0x26')]);}})['catch'](function(_0x4cd092){logger[_0xcfb7('0x24')](_0xcfb7('0x1f'),_0x5e15bc,_0x4cd092);_0x44cee0(_0x4cd092);});});}function respondWithStatusCode(_0x18e322,_0x5f24d6){_0x5f24d6=_0x5f24d6||0xcc;return function(_0x5d7927){if(_0x5d7927){return _0x18e322[_0xcfb7('0x29')](_0x5f24d6);}return _0x18e322[_0xcfb7('0x2a')](_0x5f24d6)[_0xcfb7('0x2b')]();};}function respondWithResult(_0x5d2019,_0x55e3ce){_0x55e3ce=_0x55e3ce||0xc8;return function(_0x47c42c){if(_0x47c42c){return _0x5d2019[_0xcfb7('0x2a')](_0x55e3ce)['json'](_0x47c42c);}};}function respondWithFilteredResult(_0x3a857e,_0x4953cc){return function(_0x18db56){if(_0x18db56){var _0x110e47=_0x18db56[_0xcfb7('0x2c')],_0x4c5c26=_0x4953cc[_0xcfb7('0x2d')],_0x13b9cc=_0x4953cc[_0xcfb7('0x2d')]+_0x4953cc[_0xcfb7('0x2e')],_0x6ecf0;if(_0x13b9cc>=_0x110e47){_0x13b9cc=_0x110e47;_0x6ecf0=0xc8;}else{_0x6ecf0=0xce;}_0x3a857e['status'](_0x6ecf0);return _0x3a857e[_0xcfb7('0x2f')]('Content-Range',_0x4c5c26+'-'+_0x13b9cc+'/'+_0x110e47)[_0xcfb7('0x30')](_0x18db56);}return null;};}function patchUpdates(_0x138246){return function(_0xd14f51){try{jsonpatch[_0xcfb7('0x31')](_0xd14f51,_0x138246,!![]);}catch(_0x5a38cd){return BPromise[_0xcfb7('0x32')](_0x5a38cd);}return _0xd14f51[_0xcfb7('0x33')]();};}function saveUpdates(_0x94aacb,_0x5ef56c){return function(_0x408fd4){if(_0x408fd4){return _0x408fd4['update'](_0x94aacb)[_0xcfb7('0x1e')](function(_0x2bfcd7){return _0x2bfcd7;});}return null;};}function removeEntity(_0x33cefd,_0x31ecb0){return function(_0x57091d){if(_0x57091d){return _0x57091d[_0xcfb7('0x34')]()[_0xcfb7('0x1e')](function(){var _0x1aa746=_0x57091d[_0xcfb7('0x35')]({'plain':!![]});var _0x5f013f=_0xcfb7('0x36');return db[_0xcfb7('0x37')][_0xcfb7('0x34')]({'where':{'type':_0x5f013f,'resourceId':_0x1aa746['id']}})[_0xcfb7('0x1e')](function(){return _0x57091d;});})['then'](function(){_0x33cefd[_0xcfb7('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b65a2,_0x3df44b){return function(_0x2be8c3){if(!_0x2be8c3){_0x2b65a2['sendStatus'](0x194);}return _0x2be8c3;};}function handleError(_0x122c02,_0x48c580){_0x48c580=_0x48c580||0x1f4;return function(_0xec8521){logger[_0xcfb7('0x24')](_0xec8521[_0xcfb7('0x38')]);if(_0xec8521[_0xcfb7('0x39')]){delete _0xec8521[_0xcfb7('0x39')];}_0x122c02['status'](_0x48c580)['send'](_0xec8521);};}exports[_0xcfb7('0x3a')]=function(_0x574b08,_0x34e22a){var _0x45b5f8={},_0x3310fb={},_0x5c5423={'count':0x0,'rows':[]};var _0x3e463c=db['OpenchannelAccount'][_0xcfb7('0x3b')];_0x3310fb['model']=_[_0xcfb7('0x3c')](_0x3e463c);var _0x14f8ee={'dateStart':_0x574b08[_0xcfb7('0x3d')]['dateStart'],'dateEnd':_0x574b08[_0xcfb7('0x3d')][_0xcfb7('0x3e')]};delete _0x574b08['query'][_0xcfb7('0x3f')];delete _0x574b08[_0xcfb7('0x3d')][_0xcfb7('0x3e')];_0x3310fb[_0xcfb7('0x3d')]=_[_0xcfb7('0x3c')](_0x574b08[_0xcfb7('0x3d')]);_0x3310fb[_0xcfb7('0x40')]=_[_0xcfb7('0x41')](_0x3310fb[_0xcfb7('0x42')],_0x3310fb[_0xcfb7('0x3d')]);_0x45b5f8[_0xcfb7('0x43')]=_[_0xcfb7('0x41')](_0x3310fb['model'],qs[_0xcfb7('0x44')](_0x574b08[_0xcfb7('0x3d')][_0xcfb7('0x44')]));_0x45b5f8[_0xcfb7('0x43')]=_0x45b5f8[_0xcfb7('0x43')]['length']?_0x45b5f8[_0xcfb7('0x43')]:_0x3310fb['model'];if(!_0x574b08[_0xcfb7('0x3d')][_0xcfb7('0x45')](_0xcfb7('0x46'))){_0x45b5f8[_0xcfb7('0x2e')]=qs[_0xcfb7('0x2e')](_0x574b08[_0xcfb7('0x3d')]['limit']);_0x45b5f8[_0xcfb7('0x2d')]=qs['offset'](_0x574b08[_0xcfb7('0x3d')][_0xcfb7('0x2d')]);}_0x45b5f8['order']=qs[_0xcfb7('0x47')](_0x574b08[_0xcfb7('0x3d')][_0xcfb7('0x47')]);_0x45b5f8['where']=qs[_0xcfb7('0x40')](_['pick'](_0x574b08[_0xcfb7('0x3d')],_0x3310fb[_0xcfb7('0x40')]));if(_0x14f8ee['dateStart']){if(_0x14f8ee['dateEnd']){_0x14f8ee[_0xcfb7('0x3e')]=moment(_0x14f8ee[_0xcfb7('0x3e')])['add'](0x1,_0xcfb7('0x48'));}else{_0x14f8ee[_0xcfb7('0x3e')]=moment(_0x14f8ee[_0xcfb7('0x3f')])[_0xcfb7('0x49')](0x1,_0xcfb7('0x48'));}_[_0xcfb7('0x4a')](_0x45b5f8['where'],{'createdAt':{'$gte':_0x14f8ee[_0xcfb7('0x3f')],'$lte':_0x14f8ee['dateEnd']}});}if(_0x574b08[_0xcfb7('0x3d')][_0xcfb7('0x4b')]){_0x45b5f8[_0xcfb7('0x4c')]=_[_0xcfb7('0x4a')](_0x45b5f8[_0xcfb7('0x4c')],{'$or':_['map'](_0x3e463c,function(_0xaa212){if(_0xaa212[_0xcfb7('0x4d')][_0xcfb7('0x4e')]!==_0xcfb7('0x4f')){var _0x5594c5={};_0x5594c5[_0xaa212[_0xcfb7('0x50')]]={'$like':'%'+_0x574b08[_0xcfb7('0x3d')]['filter']+'%'};return _0x5594c5;}})});}_0x45b5f8=_['merge']({},_0x45b5f8,_0x574b08[_0xcfb7('0x51')]);var _0x50300c={'where':_0x45b5f8[_0xcfb7('0x4c')]};return db['OpenchannelAccount'][_0xcfb7('0x2c')](_0x50300c)[_0xcfb7('0x1e')](function(_0x42a7da){_0x5c5423[_0xcfb7('0x2c')]=_0x42a7da;if(_0x574b08[_0xcfb7('0x3d')][_0xcfb7('0x52')]){_0x45b5f8[_0xcfb7('0x53')]=[{'all':!![]}];}return db[_0xcfb7('0x54')][_0xcfb7('0x55')](_0x45b5f8);})[_0xcfb7('0x1e')](function(_0x2f913a){_0x5c5423[_0xcfb7('0x56')]=_0x2f913a;return _0x5c5423;})[_0xcfb7('0x1e')](respondWithFilteredResult(_0x34e22a,_0x45b5f8))[_0xcfb7('0x57')](handleError(_0x34e22a,null));};exports[_0xcfb7('0x58')]=function(_0x7056fc,_0x303fe8){var _0x1936a6={'raw':![],'where':{'id':_0x7056fc[_0xcfb7('0x59')]['id']}},_0x298d5b={};_0x298d5b[_0xcfb7('0x42')]=_[_0xcfb7('0x3c')](db['OpenchannelAccount']['rawAttributes']);_0x298d5b[_0xcfb7('0x3d')]=_['keys'](_0x7056fc['query']);_0x298d5b[_0xcfb7('0x40')]=_[_0xcfb7('0x41')](_0x298d5b[_0xcfb7('0x42')],_0x298d5b[_0xcfb7('0x3d')]);_0x1936a6[_0xcfb7('0x43')]=_['intersection'](_0x298d5b[_0xcfb7('0x42')],qs[_0xcfb7('0x44')](_0x7056fc[_0xcfb7('0x3d')][_0xcfb7('0x44')]));_0x1936a6[_0xcfb7('0x43')]=_0x1936a6['attributes']['length']?_0x1936a6[_0xcfb7('0x43')]:_0x298d5b[_0xcfb7('0x42')];if(_0x7056fc[_0xcfb7('0x3d')][_0xcfb7('0x52')]){_0x1936a6[_0xcfb7('0x53')]=[{'all':!![]}];}_0x1936a6=_['merge']({},_0x1936a6,_0x7056fc[_0xcfb7('0x51')]);return db[_0xcfb7('0x54')][_0xcfb7('0x5a')](_0x1936a6)[_0xcfb7('0x1e')](handleEntityNotFound(_0x303fe8,null))[_0xcfb7('0x1e')](respondWithResult(_0x303fe8,null))[_0xcfb7('0x57')](handleError(_0x303fe8,null));};exports[_0xcfb7('0x5b')]=function(_0x5b3c50,_0x5434d5){return db[_0xcfb7('0x54')][_0xcfb7('0x5b')](_0x5b3c50['body'],{})[_0xcfb7('0x1e')](function(_0x8772b8){var _0x370118=_0x5b3c50['user'][_0xcfb7('0x35')]({'plain':!![]});if(!_0x370118)throw new Error(_0xcfb7('0x5c'));if(_0x370118[_0xcfb7('0x5d')]===_0xcfb7('0x5e')){var _0x374d72=_0x8772b8[_0xcfb7('0x35')]({'plain':!![]});var _0x5ee438=_0xcfb7('0x36');return db[_0xcfb7('0x5f')][_0xcfb7('0x5a')]({'where':{'name':_0x5ee438,'userProfileId':_0x370118[_0xcfb7('0x60')]},'raw':!![]})[_0xcfb7('0x1e')](function(_0x99673f){if(_0x99673f&&_0x99673f[_0xcfb7('0x61')]===0x0){return db[_0xcfb7('0x37')]['create']({'name':_0x374d72[_0xcfb7('0x39')],'resourceId':_0x374d72['id'],'type':_0x99673f[_0xcfb7('0x39')],'sectionId':_0x99673f['id']},{})[_0xcfb7('0x1e')](function(){return _0x8772b8;});}else{return _0x8772b8;}})['catch'](function(_0x3a206){logger['error'](_0xcfb7('0x62'),_0x3a206);throw _0x3a206;});}return _0x8772b8;})[_0xcfb7('0x1e')](respondWithResult(_0x5434d5,0xc9))[_0xcfb7('0x57')](handleError(_0x5434d5,null));};exports['update']=function(_0x3ecf3d,_0x4893f9){if(_0x3ecf3d['body']['id']){delete _0x3ecf3d[_0xcfb7('0x63')]['id'];}return db[_0xcfb7('0x54')]['find']({'where':{'id':_0x3ecf3d[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x4893f9,null))[_0xcfb7('0x1e')](saveUpdates(_0x3ecf3d[_0xcfb7('0x63')],null))[_0xcfb7('0x1e')](respondWithResult(_0x4893f9,null))['catch'](handleError(_0x4893f9,null));};exports[_0xcfb7('0x34')]=function(_0x3f9a15,_0xb8573c){return db['OpenchannelAccount'][_0xcfb7('0x5a')]({'where':{'id':_0x3f9a15[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0xb8573c,null))[_0xcfb7('0x1e')](removeEntity(_0xb8573c,null))[_0xcfb7('0x57')](handleError(_0xb8573c,null));};exports[_0xcfb7('0x64')]=function(_0x5fd9c8,_0x53c72f){return db['OpenchannelAccount'][_0xcfb7('0x64')]()[_0xcfb7('0x1e')](respondWithResult(_0x53c72f,null))['catch'](handleError(_0x53c72f,null));};exports[_0xcfb7('0x65')]=function(_0x3acc5a,_0x5c31f8,_0x32fee3){if(_0x3acc5a[_0xcfb7('0x63')]['id']){delete _0x3acc5a[_0xcfb7('0x63')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x3acc5a[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x5c31f8,null))['then'](function(_0x4496ad){if(_0x4496ad){_0x3acc5a['body']['OpnechannelAccountId']=_0x4496ad['id'];return db['Disposition'][_0xcfb7('0x5b')](_0x3acc5a[_0xcfb7('0x63')]);}})[_0xcfb7('0x1e')](respondWithResult(_0x5c31f8,null))[_0xcfb7('0x57')](handleError(_0x5c31f8,null));};exports[_0xcfb7('0x66')]=function(_0x166778,_0x24f8a1,_0x51ac14){var _0x2e0dc9={'raw':![],'where':{}};var _0x467406={};var _0x685ab0={'count':0x0,'rows':[]};return db[_0xcfb7('0x54')]['findOne']({'where':{'id':_0x166778[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x24f8a1,null))[_0xcfb7('0x1e')](function(_0x339e29){if(_0x339e29){_0x467406[_0xcfb7('0x42')]=_[_0xcfb7('0x3c')](db[_0xcfb7('0x67')][_0xcfb7('0x3b')]);_0x467406[_0xcfb7('0x3d')]=_[_0xcfb7('0x3c')](_0x166778['query']);_0x467406[_0xcfb7('0x40')]=_[_0xcfb7('0x41')](_0x467406[_0xcfb7('0x42')],_0x467406['query']);_0x2e0dc9['attributes']=_[_0xcfb7('0x41')](_0x467406[_0xcfb7('0x42')],qs[_0xcfb7('0x44')](_0x166778[_0xcfb7('0x3d')]['fields']));_0x2e0dc9[_0xcfb7('0x43')]=_0x2e0dc9[_0xcfb7('0x43')][_0xcfb7('0x68')]?_0x2e0dc9[_0xcfb7('0x43')]:_0x467406[_0xcfb7('0x42')];if(!_0x166778['query'][_0xcfb7('0x45')](_0xcfb7('0x46'))){_0x2e0dc9['limit']=qs[_0xcfb7('0x2e')](_0x166778[_0xcfb7('0x3d')][_0xcfb7('0x2e')]);_0x2e0dc9['offset']=qs[_0xcfb7('0x2d')](_0x166778[_0xcfb7('0x3d')][_0xcfb7('0x2d')]);}_0x2e0dc9['order']=qs[_0xcfb7('0x47')](_0x166778[_0xcfb7('0x3d')]['sort']);_0x2e0dc9[_0xcfb7('0x4c')]=qs[_0xcfb7('0x40')](_[_0xcfb7('0x69')](_0x166778['query'],_0x467406[_0xcfb7('0x40')]));_0x2e0dc9[_0xcfb7('0x4c')][_0xcfb7('0x6a')]=_0x339e29['id'];if(_0x166778[_0xcfb7('0x3d')]['filter']){_0x2e0dc9['where']=_[_0xcfb7('0x4a')](_0x2e0dc9[_0xcfb7('0x4c')],{'$or':_[_0xcfb7('0x6b')](_0x2e0dc9[_0xcfb7('0x43')],function(_0x568996){var _0x22f00f={};_0x22f00f[_0x568996]={'$like':'%'+_0x166778[_0xcfb7('0x3d')][_0xcfb7('0x4b')]+'%'};return _0x22f00f;})});}_0x2e0dc9=_[_0xcfb7('0x4a')]({},_0x2e0dc9,_0x166778[_0xcfb7('0x51')]);return db['Disposition'][_0xcfb7('0x2c')]({'where':_0x2e0dc9[_0xcfb7('0x4c')]})['then'](function(_0xe972e7){_0x685ab0[_0xcfb7('0x2c')]=_0xe972e7;if(_0x166778[_0xcfb7('0x3d')][_0xcfb7('0x52')]){_0x2e0dc9[_0xcfb7('0x53')]=[{'all':!![]}];}return db[_0xcfb7('0x67')]['findAll'](_0x2e0dc9);})[_0xcfb7('0x1e')](function(_0x12bc97){_0x685ab0[_0xcfb7('0x56')]=_0x12bc97;return _0x685ab0;});}})[_0xcfb7('0x1e')](respondWithFilteredResult(_0x24f8a1,_0x2e0dc9))['catch'](handleError(_0x24f8a1,null));};exports['removeDispositions']=function(_0x38d4fb,_0x1f9ebc,_0x383ee2){var _0x301211;return db['OpenchannelAccount']['find']({'where':{'id':_0x38d4fb[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x1f9ebc,null))[_0xcfb7('0x1e')](function(_0x39c456){if(_0x39c456){return _0x39c456['removeDispositions'](_0x38d4fb['query'][_0xcfb7('0x6c')]);}})[_0xcfb7('0x1e')](respondWithStatusCode(_0x1f9ebc,null))[_0xcfb7('0x57')](handleError(_0x1f9ebc,null));};exports[_0xcfb7('0x6d')]=function(_0x822b8e,_0x1361d0,_0x55edc9){if(_0x822b8e['body']['id']){delete _0x822b8e[_0xcfb7('0x63')]['id'];}return db[_0xcfb7('0x54')][_0xcfb7('0x5a')]({'where':{'id':_0x822b8e['params']['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x1361d0,null))['then'](function(_0xc5d4c8){if(_0xc5d4c8){_0x822b8e[_0xcfb7('0x63')][_0xcfb7('0x6a')]=_0xc5d4c8['id'];return db[_0xcfb7('0x6e')][_0xcfb7('0x5b')](_0x822b8e['body']);}})[_0xcfb7('0x1e')](respondWithResult(_0x1361d0,null))[_0xcfb7('0x57')](handleError(_0x1361d0,null));};exports[_0xcfb7('0x6f')]=function(_0xc8a645,_0x1c1655,_0x51e3de){var _0x566ae9={'raw':![],'where':{}};var _0x46045d={};var _0x208510={'count':0x0,'rows':[]};return db[_0xcfb7('0x54')]['findOne']({'where':{'id':_0xc8a645[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x1c1655,null))[_0xcfb7('0x1e')](function(_0x1eb379){if(_0x1eb379){_0x46045d[_0xcfb7('0x42')]=_[_0xcfb7('0x3c')](db[_0xcfb7('0x6e')][_0xcfb7('0x3b')]);_0x46045d[_0xcfb7('0x3d')]=_[_0xcfb7('0x3c')](_0xc8a645['query']);_0x46045d[_0xcfb7('0x40')]=_[_0xcfb7('0x41')](_0x46045d[_0xcfb7('0x42')],_0x46045d[_0xcfb7('0x3d')]);_0x566ae9[_0xcfb7('0x43')]=_[_0xcfb7('0x41')](_0x46045d['model'],qs[_0xcfb7('0x44')](_0xc8a645[_0xcfb7('0x3d')][_0xcfb7('0x44')]));_0x566ae9[_0xcfb7('0x43')]=_0x566ae9[_0xcfb7('0x43')][_0xcfb7('0x68')]?_0x566ae9[_0xcfb7('0x43')]:_0x46045d[_0xcfb7('0x42')];if(!_0xc8a645[_0xcfb7('0x3d')]['hasOwnProperty']('nolimit')){_0x566ae9['limit']=qs[_0xcfb7('0x2e')](_0xc8a645[_0xcfb7('0x3d')][_0xcfb7('0x2e')]);_0x566ae9['offset']=qs[_0xcfb7('0x2d')](_0xc8a645[_0xcfb7('0x3d')][_0xcfb7('0x2d')]);}_0x566ae9[_0xcfb7('0x70')]=qs[_0xcfb7('0x47')](_0xc8a645[_0xcfb7('0x3d')][_0xcfb7('0x47')]);_0x566ae9[_0xcfb7('0x4c')]=qs['filters'](_[_0xcfb7('0x69')](_0xc8a645[_0xcfb7('0x3d')],_0x46045d[_0xcfb7('0x40')]));_0x566ae9['where'][_0xcfb7('0x6a')]=_0x1eb379['id'];if(_0xc8a645[_0xcfb7('0x3d')][_0xcfb7('0x4b')]){_0x566ae9[_0xcfb7('0x4c')]=_[_0xcfb7('0x4a')](_0x566ae9[_0xcfb7('0x4c')],{'$or':_[_0xcfb7('0x6b')](_0x566ae9[_0xcfb7('0x43')],function(_0x4caf49){var _0x273efb={};_0x273efb[_0x4caf49]={'$like':'%'+_0xc8a645[_0xcfb7('0x3d')]['filter']+'%'};return _0x273efb;})});}_0x566ae9=_[_0xcfb7('0x4a')]({},_0x566ae9,_0xc8a645['options']);return db[_0xcfb7('0x6e')][_0xcfb7('0x2c')]({'where':_0x566ae9[_0xcfb7('0x4c')]})[_0xcfb7('0x1e')](function(_0x330909){_0x208510[_0xcfb7('0x2c')]=_0x330909;if(_0xc8a645[_0xcfb7('0x3d')][_0xcfb7('0x52')]){_0x566ae9[_0xcfb7('0x53')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x566ae9);})['then'](function(_0x508d2a){_0x208510['rows']=_0x508d2a;return _0x208510;});}})[_0xcfb7('0x1e')](respondWithFilteredResult(_0x1c1655,_0x566ae9))[_0xcfb7('0x57')](handleError(_0x1c1655,null));};exports[_0xcfb7('0x71')]=function(_0x3caf97,_0x49f5d3,_0x35ded1){var _0x146a05;return db[_0xcfb7('0x54')][_0xcfb7('0x5a')]({'where':{'id':_0x3caf97[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x49f5d3,null))['then'](function(_0x5aabd0){if(_0x5aabd0){return _0x5aabd0[_0xcfb7('0x71')](_0x3caf97['query'][_0xcfb7('0x6c')]);}})['then'](respondWithStatusCode(_0x49f5d3,null))['catch'](handleError(_0x49f5d3,null));};exports['notify']=function(_0x5cd7aa,_0x4280d9,_0x1554c3){var _0x28cea6={'body':_0x5cd7aa['body'],'channel':_0xcfb7('0x72')};var _0x339381=[];var _0x3f779c=[];var _0x21a639={};var _0x42c2dd=![];return db[_0xcfb7('0x73')][_0xcfb7('0x64')]()[_0xcfb7('0x1e')](function(_0x20c03e){if(!_0x20c03e){throw new db[(_0xcfb7('0x74'))]['ValidationError'](_0xcfb7('0x75'));}_0x339381=_[_0xcfb7('0x76')](_[_0xcfb7('0x3c')](_0x20c03e),[_0xcfb7('0x77'),_0xcfb7('0x78')]);_0x3f779c=_[_0xcfb7('0x76')](_[_0xcfb7('0x3c')](_0x20c03e),[_0xcfb7('0x77'),_0xcfb7('0x78'),'CompanyId',_0xcfb7('0x79')]);if(_0x5cd7aa[_0xcfb7('0x63')]['id']){delete _0x5cd7aa[_0xcfb7('0x63')]['id'];}if(_[_0xcfb7('0x7a')](_0x5cd7aa['body']['from'])){throw new db['Sequelize'][(_0xcfb7('0x7b'))](_0xcfb7('0x7c'));}if(_['isNil'](_0x5cd7aa[_0xcfb7('0x63')]['body'])||_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x63')]===''){throw new db[(_0xcfb7('0x74'))][(_0xcfb7('0x7b'))](_0xcfb7('0x7d'));}if(_[_0xcfb7('0x7a')](_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x7e')])){throw new db[(_0xcfb7('0x74'))][(_0xcfb7('0x7b'))](_0xcfb7('0x7f')+_0x3f779c);}if(!_[_0xcfb7('0x80')](_0x3f779c,_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x7e')])){throw new db[(_0xcfb7('0x74'))][(_0xcfb7('0x7b'))](_0xcfb7('0x81')+_0x3f779c);}_0x21a639[_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x7e')]]=_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x82')];})[_0xcfb7('0x1e')](function(){return db[_0xcfb7('0x54')][_0xcfb7('0x5a')]({'where':{'id':_0x5cd7aa[_0xcfb7('0x59')]['id']},'include':[{'model':db[_0xcfb7('0x83')],'as':_0xcfb7('0x84'),'include':[{'model':db[_0xcfb7('0x73')],'as':_0xcfb7('0x85'),'where':_0x21a639,'limit':0x1,'order':[[_0xcfb7('0x78'),'DESC']]}]},{'model':db['OpenchannelApplication'],'as':_0xcfb7('0x86')}]});})[_0xcfb7('0x1e')](handleEntityNotFound(_0x4280d9,null))['then'](function(_0xbac69f){if(_0xbac69f&&_0xbac69f['List']){_0x28cea6['account']=_0xbac69f;_0x28cea6[_0xcfb7('0x87')]=_0xbac69f[_0xcfb7('0x86')];_0x28cea6[_0xcfb7('0x88')]=_0xbac69f[_0xcfb7('0x84')];_0x28cea6[_0xcfb7('0x87')]=_[_0xcfb7('0x89')](_0x28cea6[_0xcfb7('0x87')],[_0xcfb7('0x8a')],[_0xcfb7('0x8b')]);if(_0x28cea6[_0xcfb7('0x8c')][_0xcfb7('0x86')]){delete _0x28cea6[_0xcfb7('0x8c')][_0xcfb7('0x86')];}if(_0x28cea6['account'][_0xcfb7('0x84')]&&_0x28cea6[_0xcfb7('0x8c')]['List'][_0xcfb7('0x85')][_0xcfb7('0x68')]){return _0x28cea6[_0xcfb7('0x8c')][_0xcfb7('0x84')][_0xcfb7('0x85')][0x0];}var _0x31e9fc=_[_0xcfb7('0x8d')](_0x5cd7aa[_0xcfb7('0x63')],{'firstName':_0x5cd7aa['body']['from'],'ListId':_0xbac69f[_0xcfb7('0x79')]});_0x31e9fc[_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x7e')]]=_0x5cd7aa['body'][_0xcfb7('0x82')];return db[_0xcfb7('0x73')][_0xcfb7('0x5b')](_0x31e9fc,{'fields':_0x339381,'raw':!![]});}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x4280d9,null))[_0xcfb7('0x1e')](function(_0x367eef){_0x28cea6[_0xcfb7('0x8e')]=_0x367eef;if(_0x367eef){var _0x229550={'ContactId':_0x367eef['id'],'OpenchannelAccountId':_0x5cd7aa[_0xcfb7('0x59')]['id'],'from':(_0x367eef[_0xcfb7('0x8f')]||'')+'\x20'+(_0x367eef[_0xcfb7('0x90')]||'')};var _0x5ac01e={'OpenchannelAccountId':_0x5cd7aa[_0xcfb7('0x59')]['id'],'closed':![]};if(_0x5cd7aa[_0xcfb7('0x63')]['threadId']){_0x5ac01e['threadId']=_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x91')];return db['OpenchannelInteraction'][_0xcfb7('0x5a')]({'where':_0x5ac01e})[_0xcfb7('0x1e')](function(_0xecc7d9){if(_0xecc7d9){return[_0xecc7d9,![]];}_0x229550['threadId']=_0x5cd7aa['body'][_0xcfb7('0x91')];_0x229550['externalUrl']=_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x92')];return db[_0xcfb7('0x93')][_0xcfb7('0x5b')](_0x229550)['then'](function(_0x4ce175){return[_0x4ce175,!![]];});});}else{_0x5ac01e['threadId']=null;}_0x5ac01e[_0xcfb7('0x94')]=_0x367eef['id'];return db[_0xcfb7('0x93')][_0xcfb7('0x5a')]({'where':_0x5ac01e})[_0xcfb7('0x1e')](function(_0x1325da){if(_0x1325da){return[_0x1325da,![]];}return db[_0xcfb7('0x93')][_0xcfb7('0x5b')](_0x229550)[_0xcfb7('0x1e')](function(_0x2e6e79){return[_0x2e6e79,!![]];});});}})[_0xcfb7('0x95')](function(_0x45da9e,_0x5b56d8){if(_0x45da9e){_0x42c2dd=_0x5b56d8;if(!_0x5b56d8){var _0x3968c8={'from':(_0x28cea6['contact'][_0xcfb7('0x8f')]||'')+'\x20'+(_0x28cea6[_0xcfb7('0x8e')][_0xcfb7('0x90')]||'')};if(_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x91')]&&_0x5cd7aa[_0xcfb7('0x63')]['messageId']&&_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x91')]!=_0x5cd7aa['body']['messageId']){_0x3968c8['threadId']=_0x5cd7aa[_0xcfb7('0x63')]['messageId'];}return _0x45da9e[_0xcfb7('0x96')](_0x3968c8);}else{return _0x45da9e;}}})[_0xcfb7('0x1e')](function(_0x111d5d){_0x28cea6[_0xcfb7('0x97')]=_0x111d5d['get']({'plain':!![]});_0x28cea6[_0xcfb7('0x97')][_0xcfb7('0x98')]=_0x42c2dd;if(_0x28cea6[_0xcfb7('0x97')]['created']){if(_0x28cea6['account'][_0xcfb7('0x99')]){_0x28cea6['applications'][_0xcfb7('0x9a')]({'id':0x0,'priority':_0x28cea6[_0xcfb7('0x87')][_0xcfb7('0x68')]+0x1,'app':'close','appdata':_0xcfb7('0x9b'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage'][_0xcfb7('0x5b')]({'body':_0x5cd7aa['body']['body'],'OpenchannelAccountId':_0x5cd7aa[_0xcfb7('0x59')]['id'],'OpenchannelInteractionId':_0x111d5d['id'],'direction':'in','ContactId':_0x28cea6[_0xcfb7('0x8e')]['id'],'AttachmentId':_0x5cd7aa[_0xcfb7('0x63')][_0xcfb7('0x9c')]});})[_0xcfb7('0x1e')](function(_0x30b2f1){_0x28cea6['message']=_0x30b2f1;if(_0x28cea6[_0xcfb7('0x97')][_0xcfb7('0x9d')]){return db[_0xcfb7('0x9e')][_0xcfb7('0x5a')]({'attributes':['id','name'],'where':{'id':_0x28cea6[_0xcfb7('0x97')]['UserId']}})[_0xcfb7('0x1e')](function(_0xcdf56c){if(_0xcdf56c){_0x28cea6[_0xcfb7('0x87')]['unshift']({'id':0x0,'priority':0x0,'app':_0xcfb7('0x9f'),'appdata':_0xcdf56c[_0xcfb7('0x39')]+','+(_0x28cea6[_0xcfb7('0x8c')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});_0x28cea6['forcedOwnership']=![];}return respondWithRpcPromise(_0xcfb7('0xa0'),_0xcfb7('0xa1'),_0x28cea6);});}return respondWithRpcPromise('Start',_0xcfb7('0xa1'),_0x28cea6);})['then'](function(_0x982535){respondWithRpcPromise('EventManager','EventManager',{'event':_0xcfb7('0xa2'),'message':_0x982535},client9002);return _0x982535;})['then'](respondWithResult(_0x4280d9,null))[_0xcfb7('0x57')](handleError(_0x4280d9,null));};exports['addApplications']=function(_0x13dcca,_0x45dd1a,_0x523390){return db[_0xcfb7('0x54')]['findOne']({'where':{'id':_0x13dcca[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x45dd1a,null))[_0xcfb7('0x1e')](function(_0x3d9245){if(_0x3d9245){return db[_0xcfb7('0xa3')][_0xcfb7('0xa4')](function(_0x257da7){return db[_0xcfb7('0xa5')][_0xcfb7('0x34')]({'where':{'OpenchannelAccountId':_0x13dcca[_0xcfb7('0x59')]['id']},'transaction':_0x257da7})[_0xcfb7('0x1e')](function(_0x45b9fd){var _0x319490=_[_0xcfb7('0x6b')](_0x13dcca[_0xcfb7('0x63')],function(_0x4cabb5){_0x4cabb5[_0xcfb7('0x6a')]=_0x13dcca[_0xcfb7('0x59')]['id'];return _0x4cabb5;});return db[_0xcfb7('0xa5')][_0xcfb7('0xa6')](_0x319490,{'transaction':_0x257da7});});})[_0xcfb7('0x1e')](function(){return db[_0xcfb7('0xa5')][_0xcfb7('0xa7')]({'where':{'OpenchannelAccountId':_0x13dcca[_0xcfb7('0x59')]['id']},'order':_0xcfb7('0x8a')});});}})['then'](respondWithResult(_0x45dd1a,null))[_0xcfb7('0x57')](handleError(_0x45dd1a,null));};exports[_0xcfb7('0xa8')]=function(_0x52df70,_0x364818,_0x2033b6){var _0x2cf812={};var _0x4d174b={};var _0x2aa5c6;var _0x5ecae9;return db[_0xcfb7('0x54')][_0xcfb7('0xa9')]({'where':{'id':_0x52df70[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x364818,null))[_0xcfb7('0x1e')](function(_0x4777c6){if(_0x4777c6){_0x2aa5c6=_0x4777c6;_0x4d174b[_0xcfb7('0x42')]=_['keys'](db[_0xcfb7('0xa5')][_0xcfb7('0x3b')]);_0x4d174b[_0xcfb7('0x3d')]=_['keys'](_0x52df70[_0xcfb7('0x3d')]);_0x4d174b[_0xcfb7('0x40')]=_['intersection'](_0x4d174b[_0xcfb7('0x42')],_0x4d174b[_0xcfb7('0x3d')]);_0x2cf812[_0xcfb7('0x43')]=_[_0xcfb7('0x41')](_0x4d174b['model'],qs[_0xcfb7('0x44')](_0x52df70[_0xcfb7('0x3d')][_0xcfb7('0x44')]));_0x2cf812[_0xcfb7('0x43')]=_0x2cf812[_0xcfb7('0x43')]['length']?_0x2cf812['attributes']:_0x4d174b['model'];_0x2cf812[_0xcfb7('0x70')]=qs[_0xcfb7('0x47')](_0x52df70['query']['sort']);_0x2cf812['where']=qs['filters'](_[_0xcfb7('0x69')](_0x52df70['query'],_0x4d174b[_0xcfb7('0x40')]));if(_0x52df70[_0xcfb7('0x3d')]['filter']){_0x2cf812['where']=_[_0xcfb7('0x4a')](_0x2cf812['where'],{'$or':_[_0xcfb7('0x6b')](_0x2cf812[_0xcfb7('0x43')],function(_0x109b09){var _0x193ec5={};_0x193ec5[_0x109b09]={'$like':'%'+_0x52df70[_0xcfb7('0x3d')][_0xcfb7('0x4b')]+'%'};return _0x193ec5;})});}_0x2cf812=_[_0xcfb7('0x4a')]({},_0x2cf812,_0x52df70[_0xcfb7('0x51')]);return _0x2aa5c6['getApplications'](_0x2cf812);}})['then'](function(_0x2fa9b1){if(_0x2fa9b1){_0x5ecae9=_0x2fa9b1[_0xcfb7('0x68')];if(!_0x52df70[_0xcfb7('0x3d')][_0xcfb7('0x45')]('nolimit')){_0x2cf812[_0xcfb7('0x2e')]=qs[_0xcfb7('0x2e')](_0x52df70[_0xcfb7('0x3d')][_0xcfb7('0x2e')]);_0x2cf812[_0xcfb7('0x2d')]=qs[_0xcfb7('0x2d')](_0x52df70[_0xcfb7('0x3d')][_0xcfb7('0x2d')]);}return _0x2aa5c6['getApplications'](_0x2cf812);}})[_0xcfb7('0x1e')](function(_0x5846a7){if(_0x5846a7){return _0x5846a7?{'count':_0x5ecae9,'rows':_0x5846a7}:null;}})[_0xcfb7('0x1e')](respondWithResult(_0x364818,null))['catch'](handleError(_0x364818,null));};exports[_0xcfb7('0xaa')]=function(_0x1ab2df,_0x1dfe2c,_0x29ceab){var _0x21ff3c={'raw':![],'where':{}};var _0x5886f9={};var _0x1031b8={'count':0x0,'rows':[]};return db[_0xcfb7('0x54')]['findOne']({'where':{'id':_0x1ab2df['params']['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x1dfe2c,null))['then'](function(_0x40a13f){if(_0x40a13f){_0x5886f9[_0xcfb7('0x42')]=_[_0xcfb7('0x3c')](db['OpenchannelInteraction']['rawAttributes']);_0x5886f9[_0xcfb7('0x3d')]=_[_0xcfb7('0x3c')](_0x1ab2df[_0xcfb7('0x3d')]);_0x5886f9[_0xcfb7('0x40')]=_[_0xcfb7('0x41')](_0x5886f9['model'],_0x5886f9[_0xcfb7('0x3d')]);_0x21ff3c[_0xcfb7('0x43')]=_[_0xcfb7('0x41')](_0x5886f9[_0xcfb7('0x42')],qs[_0xcfb7('0x44')](_0x1ab2df['query'][_0xcfb7('0x44')]));_0x21ff3c[_0xcfb7('0x43')]=_0x21ff3c[_0xcfb7('0x43')]['length']?_0x21ff3c['attributes']:_0x5886f9['model'];if(!_0x1ab2df[_0xcfb7('0x3d')][_0xcfb7('0x45')](_0xcfb7('0x46'))){_0x21ff3c['limit']=qs[_0xcfb7('0x2e')](_0x1ab2df[_0xcfb7('0x3d')][_0xcfb7('0x2e')]);_0x21ff3c[_0xcfb7('0x2d')]=qs[_0xcfb7('0x2d')](_0x1ab2df['query'][_0xcfb7('0x2d')]);}_0x21ff3c[_0xcfb7('0x70')]=qs['sort'](_0x1ab2df[_0xcfb7('0x3d')][_0xcfb7('0x47')]);_0x21ff3c['where']=qs[_0xcfb7('0x40')](_[_0xcfb7('0x69')](_0x1ab2df['query'],_0x5886f9[_0xcfb7('0x40')]));_0x21ff3c[_0xcfb7('0x4c')][_0xcfb7('0x6a')]=_0x40a13f['id'];if(_0x1ab2df[_0xcfb7('0x3d')][_0xcfb7('0x4b')]){_0x21ff3c[_0xcfb7('0x4c')]=_[_0xcfb7('0x4a')](_0x21ff3c[_0xcfb7('0x4c')],{'$or':_[_0xcfb7('0x6b')](_0x21ff3c[_0xcfb7('0x43')],function(_0x49eced){var _0x59cb2f={};_0x59cb2f[_0x49eced]={'$like':'%'+_0x1ab2df[_0xcfb7('0x3d')][_0xcfb7('0x4b')]+'%'};return _0x59cb2f;})});}_0x21ff3c=_[_0xcfb7('0x4a')]({},_0x21ff3c,_0x1ab2df[_0xcfb7('0x51')]);return db[_0xcfb7('0x93')][_0xcfb7('0x2c')]({'where':_0x21ff3c[_0xcfb7('0x4c')]})[_0xcfb7('0x1e')](function(_0x4d2293){_0x1031b8[_0xcfb7('0x2c')]=_0x4d2293;if(_0x1ab2df['query']['includeAll']){_0x21ff3c[_0xcfb7('0x53')]=[{'model':db[_0xcfb7('0x73')],'as':_0xcfb7('0xab'),'required':![]},{'model':db[_0xcfb7('0x9e')],'as':_0xcfb7('0xac'),'attributes':[_0xcfb7('0x39'),_0xcfb7('0xad'),'internal'],'required':![]},{'model':db[_0xcfb7('0xae')],'as':_0xcfb7('0xaf'),'attributes':['id',_0xcfb7('0x39'),'color'],'where':_0x1ab2df[_0xcfb7('0x3d')][_0xcfb7('0xb0')]?{'id':_0x1ab2df[_0xcfb7('0x3d')][_0xcfb7('0xb0')]}:undefined,'required':_0x1ab2df[_0xcfb7('0x3d')]['tag']?!![]:![]}];}return db['OpenchannelInteraction'][_0xcfb7('0x55')](_0x21ff3c);})[_0xcfb7('0x1e')](function(_0x10464d){_0x1031b8[_0xcfb7('0x56')]=_0x10464d;return _0x1031b8;});}})['then'](respondWithFilteredResult(_0x1dfe2c,_0x21ff3c))['catch'](handleError(_0x1dfe2c,null));};exports[_0xcfb7('0xb1')]=function(_0x56bafc,_0x6af9d2,_0x3a2733){return db[_0xcfb7('0x54')][_0xcfb7('0x5a')]({'where':{'id':_0x56bafc['params']['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x6af9d2,null))['then'](function(_0x1bdf14){if(_0x1bdf14){return _0x1bdf14[_0xcfb7('0xb1')](_0x56bafc[_0xcfb7('0x63')]['ids'],_[_0xcfb7('0xb2')](_0x56bafc[_0xcfb7('0x63')],[_0xcfb7('0x6c'),'id'])||{})[_0xcfb7('0x95')](function(_0x1399e0){for(var _0x165692=0x0;_0x165692<_0x56bafc[_0xcfb7('0x63')][_0xcfb7('0x6c')]['length'];_0x165692+=0x1){socket[_0xcfb7('0xb3')](_0xcfb7('0xb4'),{'UserId':_0x56bafc['body'][_0xcfb7('0x6c')][_0x165692],'OpenchannelAccountId':_0x56bafc['params']['id']});}return _0x1399e0;});}})[_0xcfb7('0x1e')](respondWithResult(_0x6af9d2,null))['catch'](handleError(_0x6af9d2,null));};exports[_0xcfb7('0xb5')]=function(_0x1bf747,_0x8de65b,_0x1ffbb2){var _0x1cbefc;return db['OpenchannelAccount'][_0xcfb7('0x5a')]({'where':{'id':_0x1bf747[_0xcfb7('0x59')]['id']}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x8de65b,null))[_0xcfb7('0x1e')](function(_0x3fb571){if(_0x3fb571){return _0x3fb571[_0xcfb7('0xb5')](_0x1bf747[_0xcfb7('0x3d')][_0xcfb7('0x6c')])[_0xcfb7('0x1e')](function(_0x2d6cfa){if(_['isArray'](_0x1bf747[_0xcfb7('0x3d')]['ids'])){for(var _0x50bb3b=0x0;_0x50bb3b<_0x1bf747[_0xcfb7('0x3d')]['ids'][_0xcfb7('0x68')];_0x50bb3b+=0x1){socket[_0xcfb7('0xb3')](_0xcfb7('0xb6'),{'UserId':_0x1bf747[_0xcfb7('0x3d')][_0xcfb7('0x6c')][_0x50bb3b],'OpenchannelAccountId':_0x1bf747[_0xcfb7('0x59')]['id']});}}else{socket[_0xcfb7('0xb3')](_0xcfb7('0xb6'),{'UserId':_0x1bf747[_0xcfb7('0x3d')]['ids'],'OpenchannelAccountId':_0x1bf747[_0xcfb7('0x59')]['id']});}});}})[_0xcfb7('0x1e')](respondWithStatusCode(_0x8de65b,null))[_0xcfb7('0x57')](handleError(_0x8de65b,null));};exports[_0xcfb7('0xb7')]=function(_0x6d1cc6,_0x906996,_0x1fb760){var _0x5022fb={};var _0x211621={};var _0x21545e;var _0x3b5483;return db[_0xcfb7('0x54')][_0xcfb7('0xa9')]({'where':{'id':_0x6d1cc6[_0xcfb7('0x59')]['id']}})['then'](handleEntityNotFound(_0x906996,null))[_0xcfb7('0x1e')](function(_0x4c971c){if(_0x4c971c){_0x21545e=_0x4c971c;_0x211621['model']=_['keys'](db[_0xcfb7('0x9e')][_0xcfb7('0x3b')]);_0x211621[_0xcfb7('0x3d')]=_[_0xcfb7('0x3c')](_0x6d1cc6[_0xcfb7('0x3d')]);_0x211621[_0xcfb7('0x40')]=_[_0xcfb7('0x41')](_0x211621[_0xcfb7('0x42')],_0x211621['query']);_0x5022fb[_0xcfb7('0x43')]=_[_0xcfb7('0x41')](_0x211621['model'],qs[_0xcfb7('0x44')](_0x6d1cc6[_0xcfb7('0x3d')]['fields']));_0x5022fb[_0xcfb7('0x43')]=_0x5022fb[_0xcfb7('0x43')][_0xcfb7('0x68')]?_0x5022fb[_0xcfb7('0x43')]:_0x211621['model'];_0x5022fb[_0xcfb7('0x70')]=qs[_0xcfb7('0x47')](_0x6d1cc6[_0xcfb7('0x3d')][_0xcfb7('0x47')]);_0x5022fb['where']=qs[_0xcfb7('0x40')](_[_0xcfb7('0x69')](_0x6d1cc6[_0xcfb7('0x3d')],_0x211621['filters']));if(_0x6d1cc6[_0xcfb7('0x3d')]['filter']){_0x5022fb[_0xcfb7('0x4c')]=_['merge'](_0x5022fb[_0xcfb7('0x4c')],{'$or':_[_0xcfb7('0x6b')](_0x5022fb[_0xcfb7('0x43')],function(_0x3f6a1f){var _0x91dc21={};_0x91dc21[_0x3f6a1f]={'$like':'%'+_0x6d1cc6['query'][_0xcfb7('0x4b')]+'%'};return _0x91dc21;})});}_0x5022fb=_['merge']({},_0x5022fb,_0x6d1cc6[_0xcfb7('0x51')]);return _0x21545e['getAgents'](_0x5022fb);}})[_0xcfb7('0x1e')](function(_0x33bdaf){if(_0x33bdaf){_0x3b5483=_0x33bdaf['length'];if(!_0x6d1cc6[_0xcfb7('0x3d')][_0xcfb7('0x45')](_0xcfb7('0x46'))){_0x5022fb[_0xcfb7('0x2e')]=qs[_0xcfb7('0x2e')](_0x6d1cc6[_0xcfb7('0x3d')][_0xcfb7('0x2e')]);_0x5022fb[_0xcfb7('0x2d')]=qs[_0xcfb7('0x2d')](_0x6d1cc6[_0xcfb7('0x3d')][_0xcfb7('0x2d')]);}return _0x21545e[_0xcfb7('0xb7')](_0x5022fb);}})[_0xcfb7('0x1e')](function(_0xe6b95e){if(_0xe6b95e){return _0xe6b95e?{'count':_0x3b5483,'rows':_0xe6b95e}:null;}})[_0xcfb7('0x1e')](respondWithResult(_0x906996,null))[_0xcfb7('0x57')](handleError(_0x906996,null));};exports[_0xcfb7('0xb8')]=function(_0x484a30,_0x5edd2d,_0x2a034f){var _0x3427fe,_0x422757,_0x4d3818;if(_[_0xcfb7('0x7a')](_0x484a30[_0xcfb7('0x63')]['body'])||_0x484a30[_0xcfb7('0x63')]['body']===''){throw new db['Sequelize'][(_0xcfb7('0x7b'))](_0xcfb7('0x7d'));}if(_[_0xcfb7('0x7a')](_0x484a30[_0xcfb7('0x63')]['to'])){}_0x3427fe=_0x484a30[_0xcfb7('0x63')]['to'];return db[_0xcfb7('0x54')][_0xcfb7('0xa9')]({'where':{'id':_0x484a30[_0xcfb7('0x59')]['id']}})['then'](handleEntityNotFound(_0x5edd2d,null))['then'](function(_0x38e22c){if(_0x38e22c){return db[_0xcfb7('0x54')]['find']({'where':{'id':_0x38e22c['id']},'include':[{'model':db['CmList'],'as':_0xcfb7('0x84'),'include':[{'model':db[_0xcfb7('0x73')],'as':_0xcfb7('0x85'),'where':{[_0x38e22c['mapKey']]:_0x3427fe},'limit':0x1,'order':[['updatedAt',_0xcfb7('0xb9')]]}]}]})['then'](handleEntityNotFound(_0x5edd2d,null))[_0xcfb7('0x1e')](function(_0x238d2a){if(_0x238d2a&&_0x238d2a[_0xcfb7('0x84')]){_0x422757=_0x238d2a[_0xcfb7('0x35')]({'plain':!![]});if(_0x422757[_0xcfb7('0x84')]&&_0x422757['List'][_0xcfb7('0x85')][_0xcfb7('0x68')]){return _0x422757[_0xcfb7('0x84')][_0xcfb7('0x85')][0x0];}return db[_0xcfb7('0x73')][_0xcfb7('0x5b')](_[_0xcfb7('0x8d')](_0x484a30[_0xcfb7('0x63')],{'firstName':_0x3427fe,[_0x238d2a[_0xcfb7('0x7e')]]:_0x3427fe,'phone':_0x3427fe,'ListId':_0x422757['ListId']}));}})[_0xcfb7('0x1e')](handleEntityNotFound(_0x5edd2d,null))[_0xcfb7('0x1e')](function(_0xb03418){if(_0xb03418){_0x4d3818=_0xb03418;return db[_0xcfb7('0x93')][_0xcfb7('0x5a')]({'where':{'ContactId':_0x4d3818['id'],'closed':![],'OpenchannelAccountId':_0x422757['id']}})[_0xcfb7('0x1e')](function(_0x24e39f){if(_0x24e39f){return[_0x24e39f,![]];}return db[_0xcfb7('0x93')][_0xcfb7('0x5b')]({'UserId':_0x484a30['user']['id'],'ContactId':_0x4d3818['id'],'OpenchannelAccountId':_0x422757['id'],'lastMsgDirection':_0xcfb7('0xba'),'Messages':[_[_0xcfb7('0x4a')](_0x484a30[_0xcfb7('0x63')],{'read':![],'body':_0x484a30[_0xcfb7('0x63')][_0xcfb7('0x63')],'OpenchannelAccountId':_0x422757['id'],'UserId':_0x484a30['user']['id'],'ContactId':_0x4d3818['id']})]},{'include':[{'model':db[_0xcfb7('0xbb')],'as':_0xcfb7('0xbc')}]})['then'](function(_0xcafcb4){return[_0xcafcb4,!![]];});});}})[_0xcfb7('0x95')](function(_0x3912b2,_0x3723d7){if(_0x3723d7){return _0x3912b2;}return db['OpenchannelMessage'][_0xcfb7('0x5b')](_[_0xcfb7('0x4a')](_0x484a30[_0xcfb7('0x63')],{'read':![],'body':_0x484a30[_0xcfb7('0x63')][_0xcfb7('0x63')],'OpenchannelAccountId':_0x422757['id'],'OpenchannelInteractionId':_0x3912b2['id'],'UserId':_0x484a30['user']['id'],'ContactId':_0x4d3818['id']}))[_0xcfb7('0x1e')](function(_0x5f5868){_0x3912b2[_0xcfb7('0xbd')][_0xcfb7('0xbc')]=[];_0x3912b2[_0xcfb7('0xbd')][_0xcfb7('0xbc')][_0xcfb7('0x9a')](_0x5f5868[_0xcfb7('0xbd')]);return _0x3912b2;});});}})[_0xcfb7('0x1e')](respondWithResult(_0x5edd2d,null))[_0xcfb7('0x57')](handleError(_0x5edd2d,null));};
\ No newline at end of file
+var _0x37c5=['VIRTUAL','field','options','includeAll','findAll','rows','catch','show','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','OpnechannelAccountId','Disposition','getDispositions','findOne','hasOwnProperty','nolimit','OpenchannelAccountId','map','include','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','CmContact','ValidationError','createdAt','difference','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','Sequelize','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','DESC','OpenchannelApplication','account','applications','Applications','list','orderBy','priority','defaults','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','contact','messageId','interaction','created','autoclose','push','unmanaged','*,*,*,*','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','addApplications','transaction','bulkCreate','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','User','CmList','out','OpenchannelMessage','dataValues','Messages','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../mysqldb','redis','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','http','request','then','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','OpenchannelAccount,\x20%s,\x20%s','sendStatus','status','json','count','offset','limit','set','Content-Range','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','end','stack','name','send','OpenchannelAccount','rawAttributes','model','keys','query','dateEnd','dateStart','intersection','attributes','fields','length','order','sort','filters','pick','add','day','where','filter','merge','type'];(function(_0x38fbda,_0x28c441){var _0x4402f3=function(_0x433b88){while(--_0x433b88){_0x38fbda['push'](_0x38fbda['shift']());}};_0x4402f3(++_0x28c441);}(_0x37c5,0x1ec));var _0x537c=function(_0x35ac99,_0x314ff4){_0x35ac99=_0x35ac99-0x0;var _0x22b115=_0x37c5[_0x35ac99];return _0x22b115;};'use strict';var pdf=require(_0x537c('0x0'));var emlformat=require(_0x537c('0x1'));var rimraf=require(_0x537c('0x2'));var zipdir=require(_0x537c('0x3'));var jsonpatch=require(_0x537c('0x4'));var rp=require(_0x537c('0x5'));var moment=require(_0x537c('0x6'));var BPromise=require(_0x537c('0x7'));var Mustache=require('mustache');var util=require(_0x537c('0x8'));var path=require(_0x537c('0x9'));var sox=require('sox');var csv=require(_0x537c('0xa'));var ejs=require(_0x537c('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0x537c('0xc'));var crypto=require(_0x537c('0xd'));var jsforce=require(_0x537c('0xe'));var deskjs=require(_0x537c('0xf'));var toCsv=require(_0x537c('0xa'));var querystring=require(_0x537c('0x10'));var Papa=require(_0x537c('0x11'));var Redis=require(_0x537c('0x12'));var qs=require(_0x537c('0x13'));var logger=require(_0x537c('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x537c('0x15'))['db'];config[_0x537c('0x16')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x537c('0x17'))(new Redis(config['redis']));require(_0x537c('0x18'))['register'](socket);var jayson=require(_0x537c('0x19'));var client=jayson[_0x537c('0x1a')][_0x537c('0x1b')]({'port':0x232c});var client9002=jayson[_0x537c('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c6c49,_0x323cae,_0xddcee2,_0x8e7feb){return new BPromise(function(_0x2b3652,_0x3bd902){var _0xb95284=_0x8e7feb||client;return _0xb95284[_0x537c('0x1c')](_0x1c6c49,_0xddcee2)[_0x537c('0x1d')](function(_0x810dc5){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x323cae,_0x537c('0x1e'));logger[_0x537c('0x1f')](_0x537c('0x20'),_0x323cae,_0x537c('0x1e'),JSON[_0x537c('0x21')](_0x810dc5));if(_0x810dc5[_0x537c('0x22')]){if(_0x810dc5[_0x537c('0x22')][_0x537c('0x23')]===0x1f4){logger[_0x537c('0x22')]('OpenchannelAccount,\x20%s,\x20%s',_0x323cae,_0x810dc5[_0x537c('0x22')][_0x537c('0x24')]);return _0x3bd902(_0x810dc5[_0x537c('0x22')][_0x537c('0x24')]);}logger[_0x537c('0x22')]('OpenchannelAccount,\x20%s,\x20%s',_0x323cae,_0x810dc5[_0x537c('0x22')][_0x537c('0x24')]);return _0x2b3652(_0x810dc5[_0x537c('0x22')]['message']);}else{logger[_0x537c('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x323cae,_0x537c('0x1e'));_0x2b3652(_0x810dc5['result'][_0x537c('0x24')]);}})['catch'](function(_0x1ba8d5){logger['error'](_0x537c('0x26'),_0x323cae,_0x1ba8d5);_0x3bd902(_0x1ba8d5);});});}function respondWithStatusCode(_0xe17925,_0x8a45f5){_0x8a45f5=_0x8a45f5||0xcc;return function(_0x28ce3e){if(_0x28ce3e){return _0xe17925[_0x537c('0x27')](_0x8a45f5);}return _0xe17925[_0x537c('0x28')](_0x8a45f5)['end']();};}function respondWithResult(_0x29af18,_0x2e0b41){_0x2e0b41=_0x2e0b41||0xc8;return function(_0x4bb3ed){if(_0x4bb3ed){return _0x29af18[_0x537c('0x28')](_0x2e0b41)[_0x537c('0x29')](_0x4bb3ed);}};}function respondWithFilteredResult(_0x171bd6,_0x163dda){return function(_0x19a1de){if(_0x19a1de){var _0x2f06fe=_0x19a1de[_0x537c('0x2a')],_0x14af52=_0x163dda[_0x537c('0x2b')],_0x275eff=_0x163dda[_0x537c('0x2b')]+_0x163dda[_0x537c('0x2c')],_0x46ab2d;if(_0x275eff>=_0x2f06fe){_0x275eff=_0x2f06fe;_0x46ab2d=0xc8;}else{_0x46ab2d=0xce;}_0x171bd6[_0x537c('0x28')](_0x46ab2d);return _0x171bd6[_0x537c('0x2d')](_0x537c('0x2e'),_0x14af52+'-'+_0x275eff+'/'+_0x2f06fe)[_0x537c('0x29')](_0x19a1de);}return null;};}function patchUpdates(_0x4907fe){return function(_0x249aaa){try{jsonpatch['apply'](_0x249aaa,_0x4907fe,!![]);}catch(_0x2348a6){return BPromise['reject'](_0x2348a6);}return _0x249aaa[_0x537c('0x2f')]();};}function saveUpdates(_0x46c25d,_0x749538){return function(_0x12baf9){if(_0x12baf9){return _0x12baf9[_0x537c('0x30')](_0x46c25d)[_0x537c('0x1d')](function(_0xad297){return _0xad297;});}return null;};}function removeEntity(_0x195924,_0x5d69ce){return function(_0x368cb7){if(_0x368cb7){return _0x368cb7[_0x537c('0x31')]()[_0x537c('0x1d')](function(){var _0x500bba=_0x368cb7[_0x537c('0x32')]({'plain':!![]});var _0x1b9ce8=_0x537c('0x33');return db[_0x537c('0x34')]['destroy']({'where':{'type':_0x1b9ce8,'resourceId':_0x500bba['id']}})[_0x537c('0x1d')](function(){return _0x368cb7;});})['then'](function(){_0x195924[_0x537c('0x28')](0xcc)[_0x537c('0x35')]();});}};}function handleEntityNotFound(_0xa73fbd,_0x243085){return function(_0x20beb5){if(!_0x20beb5){_0xa73fbd[_0x537c('0x27')](0x194);}return _0x20beb5;};}function handleError(_0x33aed3,_0x567312){_0x567312=_0x567312||0x1f4;return function(_0x4d2795){logger['error'](_0x4d2795[_0x537c('0x36')]);if(_0x4d2795[_0x537c('0x37')]){delete _0x4d2795[_0x537c('0x37')];}_0x33aed3[_0x537c('0x28')](_0x567312)[_0x537c('0x38')](_0x4d2795);};}exports['index']=function(_0x24eabe,_0x35abf7){var _0x4283aa={},_0xf25ff={},_0x53db5c={'count':0x0,'rows':[]};var _0x2f61b6=db[_0x537c('0x39')][_0x537c('0x3a')];_0xf25ff[_0x537c('0x3b')]=_[_0x537c('0x3c')](_0x2f61b6);var _0xe95c8c={'dateStart':_0x24eabe[_0x537c('0x3d')]['dateStart'],'dateEnd':_0x24eabe[_0x537c('0x3d')][_0x537c('0x3e')]};delete _0x24eabe['query'][_0x537c('0x3f')];delete _0x24eabe['query'][_0x537c('0x3e')];_0xf25ff[_0x537c('0x3d')]=_[_0x537c('0x3c')](_0x24eabe[_0x537c('0x3d')]);_0xf25ff['filters']=_[_0x537c('0x40')](_0xf25ff[_0x537c('0x3b')],_0xf25ff['query']);_0x4283aa[_0x537c('0x41')]=_[_0x537c('0x40')](_0xf25ff['model'],qs['fields'](_0x24eabe[_0x537c('0x3d')][_0x537c('0x42')]));_0x4283aa[_0x537c('0x41')]=_0x4283aa[_0x537c('0x41')][_0x537c('0x43')]?_0x4283aa['attributes']:_0xf25ff['model'];if(!_0x24eabe[_0x537c('0x3d')]['hasOwnProperty']('nolimit')){_0x4283aa['limit']=qs['limit'](_0x24eabe[_0x537c('0x3d')][_0x537c('0x2c')]);_0x4283aa[_0x537c('0x2b')]=qs['offset'](_0x24eabe['query'][_0x537c('0x2b')]);}_0x4283aa[_0x537c('0x44')]=qs[_0x537c('0x45')](_0x24eabe[_0x537c('0x3d')][_0x537c('0x45')]);_0x4283aa['where']=qs[_0x537c('0x46')](_[_0x537c('0x47')](_0x24eabe['query'],_0xf25ff['filters']));if(_0xe95c8c[_0x537c('0x3f')]){if(_0xe95c8c[_0x537c('0x3e')]){_0xe95c8c[_0x537c('0x3e')]=moment(_0xe95c8c[_0x537c('0x3e')])[_0x537c('0x48')](0x1,'day');}else{_0xe95c8c[_0x537c('0x3e')]=moment(_0xe95c8c['dateStart'])[_0x537c('0x48')](0x1,_0x537c('0x49'));}_['merge'](_0x4283aa[_0x537c('0x4a')],{'createdAt':{'$gte':_0xe95c8c['dateStart'],'$lte':_0xe95c8c[_0x537c('0x3e')]}});}if(_0x24eabe[_0x537c('0x3d')][_0x537c('0x4b')]){_0x4283aa[_0x537c('0x4a')]=_[_0x537c('0x4c')](_0x4283aa[_0x537c('0x4a')],{'$or':_['map'](_0x2f61b6,function(_0xdf86ed){if(_0xdf86ed[_0x537c('0x4d')]['key']!==_0x537c('0x4e')){var _0x54cb21={};_0x54cb21[_0xdf86ed[_0x537c('0x4f')]]={'$like':'%'+_0x24eabe['query'][_0x537c('0x4b')]+'%'};return _0x54cb21;}})});}_0x4283aa=_[_0x537c('0x4c')]({},_0x4283aa,_0x24eabe[_0x537c('0x50')]);var _0x404556={'where':_0x4283aa[_0x537c('0x4a')]};return db[_0x537c('0x39')][_0x537c('0x2a')](_0x404556)['then'](function(_0x952e17){_0x53db5c['count']=_0x952e17;if(_0x24eabe[_0x537c('0x3d')][_0x537c('0x51')]){_0x4283aa['include']=[{'all':!![]}];}return db[_0x537c('0x39')][_0x537c('0x52')](_0x4283aa);})[_0x537c('0x1d')](function(_0x26477c){_0x53db5c[_0x537c('0x53')]=_0x26477c;return _0x53db5c;})[_0x537c('0x1d')](respondWithFilteredResult(_0x35abf7,_0x4283aa))[_0x537c('0x54')](handleError(_0x35abf7,null));};exports[_0x537c('0x55')]=function(_0x523d30,_0xc6b834){var _0x598a4b={'raw':![],'where':{'id':_0x523d30['params']['id']}},_0x1d02ba={};_0x1d02ba[_0x537c('0x3b')]=_[_0x537c('0x3c')](db[_0x537c('0x39')][_0x537c('0x3a')]);_0x1d02ba[_0x537c('0x3d')]=_['keys'](_0x523d30['query']);_0x1d02ba['filters']=_[_0x537c('0x40')](_0x1d02ba[_0x537c('0x3b')],_0x1d02ba[_0x537c('0x3d')]);_0x598a4b['attributes']=_[_0x537c('0x40')](_0x1d02ba[_0x537c('0x3b')],qs['fields'](_0x523d30[_0x537c('0x3d')][_0x537c('0x42')]));_0x598a4b[_0x537c('0x41')]=_0x598a4b[_0x537c('0x41')]['length']?_0x598a4b[_0x537c('0x41')]:_0x1d02ba[_0x537c('0x3b')];if(_0x523d30[_0x537c('0x3d')]['includeAll']){_0x598a4b['include']=[{'all':!![]}];}_0x598a4b=_[_0x537c('0x4c')]({},_0x598a4b,_0x523d30[_0x537c('0x50')]);return db[_0x537c('0x39')]['find'](_0x598a4b)[_0x537c('0x1d')](handleEntityNotFound(_0xc6b834,null))[_0x537c('0x1d')](respondWithResult(_0xc6b834,null))['catch'](handleError(_0xc6b834,null));};exports[_0x537c('0x56')]=function(_0x419e79,_0x1c952f){return db[_0x537c('0x39')][_0x537c('0x56')](_0x419e79[_0x537c('0x57')],{})[_0x537c('0x1d')](function(_0x570157){var _0x428ae8=_0x419e79[_0x537c('0x58')][_0x537c('0x32')]({'plain':!![]});if(!_0x428ae8)throw new Error(_0x537c('0x59'));if(_0x428ae8[_0x537c('0x5a')]==='user'){var _0x59e9e3=_0x570157[_0x537c('0x32')]({'plain':!![]});var _0x4b2ff0=_0x537c('0x33');return db[_0x537c('0x5b')][_0x537c('0x5c')]({'where':{'name':_0x4b2ff0,'userProfileId':_0x428ae8[_0x537c('0x5d')]},'raw':!![]})['then'](function(_0x27c934){if(_0x27c934&&_0x27c934[_0x537c('0x5e')]===0x0){return db['UserProfileResource']['create']({'name':_0x59e9e3['name'],'resourceId':_0x59e9e3['id'],'type':_0x27c934[_0x537c('0x37')],'sectionId':_0x27c934['id']},{})[_0x537c('0x1d')](function(){return _0x570157;});}else{return _0x570157;}})[_0x537c('0x54')](function(_0x2c85e3){logger['error'](_0x537c('0x5f'),_0x2c85e3);throw _0x2c85e3;});}return _0x570157;})[_0x537c('0x1d')](respondWithResult(_0x1c952f,0xc9))['catch'](handleError(_0x1c952f,null));};exports[_0x537c('0x30')]=function(_0x4a4eb8,_0x26eca8){if(_0x4a4eb8['body']['id']){delete _0x4a4eb8[_0x537c('0x57')]['id'];}return db[_0x537c('0x39')][_0x537c('0x5c')]({'where':{'id':_0x4a4eb8[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x26eca8,null))['then'](saveUpdates(_0x4a4eb8['body'],null))['then'](respondWithResult(_0x26eca8,null))[_0x537c('0x54')](handleError(_0x26eca8,null));};exports[_0x537c('0x31')]=function(_0x57195c,_0x28f631){return db[_0x537c('0x39')][_0x537c('0x5c')]({'where':{'id':_0x57195c[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x28f631,null))[_0x537c('0x1d')](removeEntity(_0x28f631,null))['catch'](handleError(_0x28f631,null));};exports[_0x537c('0x61')]=function(_0x1f789a,_0xb24bbb){return db[_0x537c('0x39')][_0x537c('0x61')]()[_0x537c('0x1d')](respondWithResult(_0xb24bbb,null))[_0x537c('0x54')](handleError(_0xb24bbb,null));};exports[_0x537c('0x62')]=function(_0x14c6e4,_0x424671,_0x41212e){if(_0x14c6e4[_0x537c('0x57')]['id']){delete _0x14c6e4[_0x537c('0x57')]['id'];}return db[_0x537c('0x39')][_0x537c('0x5c')]({'where':{'id':_0x14c6e4[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x424671,null))[_0x537c('0x1d')](function(_0x1a65d0){if(_0x1a65d0){_0x14c6e4[_0x537c('0x57')][_0x537c('0x63')]=_0x1a65d0['id'];return db[_0x537c('0x64')][_0x537c('0x56')](_0x14c6e4[_0x537c('0x57')]);}})['then'](respondWithResult(_0x424671,null))[_0x537c('0x54')](handleError(_0x424671,null));};exports[_0x537c('0x65')]=function(_0xb62bdb,_0x290847,_0x1f57f6){var _0x3df577={'raw':![],'where':{}};var _0x584423={};var _0x22637b={'count':0x0,'rows':[]};return db[_0x537c('0x39')][_0x537c('0x66')]({'where':{'id':_0xb62bdb[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x290847,null))[_0x537c('0x1d')](function(_0x4fa5e2){if(_0x4fa5e2){_0x584423[_0x537c('0x3b')]=_[_0x537c('0x3c')](db[_0x537c('0x64')][_0x537c('0x3a')]);_0x584423['query']=_[_0x537c('0x3c')](_0xb62bdb['query']);_0x584423[_0x537c('0x46')]=_[_0x537c('0x40')](_0x584423[_0x537c('0x3b')],_0x584423[_0x537c('0x3d')]);_0x3df577[_0x537c('0x41')]=_[_0x537c('0x40')](_0x584423[_0x537c('0x3b')],qs['fields'](_0xb62bdb[_0x537c('0x3d')][_0x537c('0x42')]));_0x3df577[_0x537c('0x41')]=_0x3df577['attributes']['length']?_0x3df577[_0x537c('0x41')]:_0x584423[_0x537c('0x3b')];if(!_0xb62bdb[_0x537c('0x3d')][_0x537c('0x67')](_0x537c('0x68'))){_0x3df577[_0x537c('0x2c')]=qs['limit'](_0xb62bdb['query']['limit']);_0x3df577[_0x537c('0x2b')]=qs[_0x537c('0x2b')](_0xb62bdb[_0x537c('0x3d')][_0x537c('0x2b')]);}_0x3df577[_0x537c('0x44')]=qs[_0x537c('0x45')](_0xb62bdb[_0x537c('0x3d')]['sort']);_0x3df577[_0x537c('0x4a')]=qs[_0x537c('0x46')](_['pick'](_0xb62bdb[_0x537c('0x3d')],_0x584423[_0x537c('0x46')]));_0x3df577[_0x537c('0x4a')][_0x537c('0x69')]=_0x4fa5e2['id'];if(_0xb62bdb[_0x537c('0x3d')][_0x537c('0x4b')]){_0x3df577[_0x537c('0x4a')]=_[_0x537c('0x4c')](_0x3df577['where'],{'$or':_[_0x537c('0x6a')](_0x3df577[_0x537c('0x41')],function(_0x3d9334){var _0x2cf509={};_0x2cf509[_0x3d9334]={'$like':'%'+_0xb62bdb[_0x537c('0x3d')][_0x537c('0x4b')]+'%'};return _0x2cf509;})});}_0x3df577=_[_0x537c('0x4c')]({},_0x3df577,_0xb62bdb[_0x537c('0x50')]);return db[_0x537c('0x64')][_0x537c('0x2a')]({'where':_0x3df577[_0x537c('0x4a')]})['then'](function(_0x60f27d){_0x22637b[_0x537c('0x2a')]=_0x60f27d;if(_0xb62bdb[_0x537c('0x3d')][_0x537c('0x51')]){_0x3df577[_0x537c('0x6b')]=[{'all':!![]}];}return db[_0x537c('0x64')][_0x537c('0x52')](_0x3df577);})[_0x537c('0x1d')](function(_0x11628b){_0x22637b['rows']=_0x11628b;return _0x22637b;});}})[_0x537c('0x1d')](respondWithFilteredResult(_0x290847,_0x3df577))[_0x537c('0x54')](handleError(_0x290847,null));};exports[_0x537c('0x6c')]=function(_0x4289ad,_0x1c1178,_0x5d903a){var _0xb7425f;return db[_0x537c('0x39')]['find']({'where':{'id':_0x4289ad[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x1c1178,null))['then'](function(_0x4e24b3){if(_0x4e24b3){return _0x4e24b3[_0x537c('0x6c')](_0x4289ad[_0x537c('0x3d')][_0x537c('0x6d')]);}})['then'](respondWithStatusCode(_0x1c1178,null))[_0x537c('0x54')](handleError(_0x1c1178,null));};exports[_0x537c('0x6e')]=function(_0x8ca7a7,_0x35ad15,_0xe5d3c7){if(_0x8ca7a7['body']['id']){delete _0x8ca7a7[_0x537c('0x57')]['id'];}return db[_0x537c('0x39')]['find']({'where':{'id':_0x8ca7a7[_0x537c('0x60')]['id']}})['then'](handleEntityNotFound(_0x35ad15,null))[_0x537c('0x1d')](function(_0x20afff){if(_0x20afff){_0x8ca7a7['body'][_0x537c('0x69')]=_0x20afff['id'];return db[_0x537c('0x6f')][_0x537c('0x56')](_0x8ca7a7[_0x537c('0x57')]);}})['then'](respondWithResult(_0x35ad15,null))[_0x537c('0x54')](handleError(_0x35ad15,null));};exports[_0x537c('0x70')]=function(_0xc2649d,_0x27e914,_0x33f0cc){var _0xedc500={'raw':![],'where':{}};var _0x4e6b69={};var _0x415157={'count':0x0,'rows':[]};return db[_0x537c('0x39')][_0x537c('0x66')]({'where':{'id':_0xc2649d[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x27e914,null))[_0x537c('0x1d')](function(_0x26a3e5){if(_0x26a3e5){_0x4e6b69['model']=_['keys'](db['CannedAnswer'][_0x537c('0x3a')]);_0x4e6b69[_0x537c('0x3d')]=_[_0x537c('0x3c')](_0xc2649d[_0x537c('0x3d')]);_0x4e6b69[_0x537c('0x46')]=_[_0x537c('0x40')](_0x4e6b69['model'],_0x4e6b69[_0x537c('0x3d')]);_0xedc500[_0x537c('0x41')]=_[_0x537c('0x40')](_0x4e6b69[_0x537c('0x3b')],qs[_0x537c('0x42')](_0xc2649d[_0x537c('0x3d')][_0x537c('0x42')]));_0xedc500[_0x537c('0x41')]=_0xedc500['attributes'][_0x537c('0x43')]?_0xedc500[_0x537c('0x41')]:_0x4e6b69[_0x537c('0x3b')];if(!_0xc2649d[_0x537c('0x3d')][_0x537c('0x67')](_0x537c('0x68'))){_0xedc500['limit']=qs[_0x537c('0x2c')](_0xc2649d['query'][_0x537c('0x2c')]);_0xedc500['offset']=qs['offset'](_0xc2649d[_0x537c('0x3d')]['offset']);}_0xedc500[_0x537c('0x44')]=qs[_0x537c('0x45')](_0xc2649d[_0x537c('0x3d')][_0x537c('0x45')]);_0xedc500[_0x537c('0x4a')]=qs['filters'](_[_0x537c('0x47')](_0xc2649d[_0x537c('0x3d')],_0x4e6b69[_0x537c('0x46')]));_0xedc500['where']['OpenchannelAccountId']=_0x26a3e5['id'];if(_0xc2649d[_0x537c('0x3d')][_0x537c('0x4b')]){_0xedc500['where']=_[_0x537c('0x4c')](_0xedc500[_0x537c('0x4a')],{'$or':_[_0x537c('0x6a')](_0xedc500[_0x537c('0x41')],function(_0x529f18){var _0x25c80f={};_0x25c80f[_0x529f18]={'$like':'%'+_0xc2649d[_0x537c('0x3d')][_0x537c('0x4b')]+'%'};return _0x25c80f;})});}_0xedc500=_['merge']({},_0xedc500,_0xc2649d['options']);return db[_0x537c('0x6f')]['count']({'where':_0xedc500['where']})[_0x537c('0x1d')](function(_0x5e09c2){_0x415157[_0x537c('0x2a')]=_0x5e09c2;if(_0xc2649d[_0x537c('0x3d')][_0x537c('0x51')]){_0xedc500[_0x537c('0x6b')]=[{'all':!![]}];}return db[_0x537c('0x6f')]['findAll'](_0xedc500);})[_0x537c('0x1d')](function(_0x3c73a3){_0x415157[_0x537c('0x53')]=_0x3c73a3;return _0x415157;});}})[_0x537c('0x1d')](respondWithFilteredResult(_0x27e914,_0xedc500))[_0x537c('0x54')](handleError(_0x27e914,null));};exports[_0x537c('0x71')]=function(_0x557bd5,_0x3f197b,_0x4521af){var _0x549449;return db[_0x537c('0x39')]['find']({'where':{'id':_0x557bd5[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x3f197b,null))[_0x537c('0x1d')](function(_0x4aad63){if(_0x4aad63){return _0x4aad63[_0x537c('0x71')](_0x557bd5['query'][_0x537c('0x6d')]);}})[_0x537c('0x1d')](respondWithStatusCode(_0x3f197b,null))[_0x537c('0x54')](handleError(_0x3f197b,null));};exports[_0x537c('0x72')]=function(_0xb85673,_0x1a4022,_0x397ba8){var _0x5c67b2={'body':_0xb85673['body'],'channel':'openchannel'};var _0x323c31=[];var _0x1d46ef=[];var _0x59725b={};var _0x2d898e=![];return db[_0x537c('0x73')]['describe']()[_0x537c('0x1d')](function(_0xb801ef){if(!_0xb801ef){throw new db['Sequelize'][(_0x537c('0x74'))]('no\x20available\x20attributes');}_0x323c31=_['difference'](_['keys'](_0xb801ef),[_0x537c('0x75'),'updatedAt']);_0x1d46ef=_[_0x537c('0x76')](_['keys'](_0xb801ef),[_0x537c('0x75'),_0x537c('0x77'),_0x537c('0x78'),_0x537c('0x79')]);if(_0xb85673['body']['id']){delete _0xb85673['body']['id'];}if(_[_0x537c('0x7a')](_0xb85673[_0x537c('0x57')][_0x537c('0x7b')])){throw new db['Sequelize'][(_0x537c('0x74'))](_0x537c('0x7c'));}if(_['isNil'](_0xb85673[_0x537c('0x57')][_0x537c('0x57')])||_0xb85673[_0x537c('0x57')][_0x537c('0x57')]===''){throw new db[(_0x537c('0x7d'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x537c('0x7a')](_0xb85673[_0x537c('0x57')]['mapKey'])){throw new db['Sequelize'][(_0x537c('0x74'))](_0x537c('0x7e')+_0x1d46ef);}if(!_[_0x537c('0x7f')](_0x1d46ef,_0xb85673[_0x537c('0x57')][_0x537c('0x80')])){throw new db['Sequelize'][(_0x537c('0x74'))](_0x537c('0x81')+_0x1d46ef);}_0x59725b[_0xb85673[_0x537c('0x57')][_0x537c('0x80')]]=_0xb85673['body']['from'];})['then'](function(){return db[_0x537c('0x39')][_0x537c('0x5c')]({'where':{'id':_0xb85673[_0x537c('0x60')]['id']},'include':[{'model':db['CmList'],'as':_0x537c('0x82'),'include':[{'model':db[_0x537c('0x73')],'as':_0x537c('0x83'),'where':_0x59725b,'limit':0x1,'order':[['updatedAt',_0x537c('0x84')]]}]},{'model':db[_0x537c('0x85')],'as':'Applications'}]});})[_0x537c('0x1d')](handleEntityNotFound(_0x1a4022,null))[_0x537c('0x1d')](function(_0x37143b){if(_0x37143b&&_0x37143b[_0x537c('0x82')]){_0x5c67b2[_0x537c('0x86')]=_0x37143b;_0x5c67b2[_0x537c('0x87')]=_0x37143b[_0x537c('0x88')];_0x5c67b2[_0x537c('0x89')]=_0x37143b[_0x537c('0x82')];_0x5c67b2[_0x537c('0x87')]=_[_0x537c('0x8a')](_0x5c67b2['applications'],[_0x537c('0x8b')],['asc']);if(_0x5c67b2[_0x537c('0x86')][_0x537c('0x88')]){delete _0x5c67b2['account']['Applications'];}if(_0x5c67b2[_0x537c('0x86')][_0x537c('0x82')]&&_0x5c67b2[_0x537c('0x86')]['List'][_0x537c('0x83')][_0x537c('0x43')]){return _0x5c67b2[_0x537c('0x86')][_0x537c('0x82')][_0x537c('0x83')][0x0];}var _0x4def2c=_[_0x537c('0x8c')](_0xb85673[_0x537c('0x57')],{'firstName':_0xb85673['body'][_0x537c('0x7b')],'ListId':_0x37143b[_0x537c('0x79')]});_0x4def2c[_0xb85673['body'][_0x537c('0x80')]]=_0xb85673[_0x537c('0x57')][_0x537c('0x7b')];return db[_0x537c('0x73')][_0x537c('0x56')](_0x4def2c,{'fields':_0x323c31,'raw':!![]});}})[_0x537c('0x1d')](handleEntityNotFound(_0x1a4022,null))[_0x537c('0x1d')](function(_0x1b4bcc){_0x5c67b2['contact']=_0x1b4bcc;if(_0x1b4bcc){var _0x2f36cd={'ContactId':_0x1b4bcc['id'],'OpenchannelAccountId':_0xb85673[_0x537c('0x60')]['id'],'from':(_0x1b4bcc[_0x537c('0x8d')]||'')+'\x20'+(_0x1b4bcc[_0x537c('0x8e')]||'')};var _0x3c7121={'OpenchannelAccountId':_0xb85673[_0x537c('0x60')]['id'],'closed':![]};if(_0xb85673[_0x537c('0x57')][_0x537c('0x8f')]){_0x3c7121[_0x537c('0x8f')]=_0xb85673['body'][_0x537c('0x8f')];return db['OpenchannelInteraction'][_0x537c('0x5c')]({'where':_0x3c7121})[_0x537c('0x1d')](function(_0x12f7e0){if(_0x12f7e0){return[_0x12f7e0,![]];}_0x2f36cd[_0x537c('0x8f')]=_0xb85673[_0x537c('0x57')][_0x537c('0x8f')];_0x2f36cd[_0x537c('0x90')]=_0xb85673[_0x537c('0x57')][_0x537c('0x90')];return db[_0x537c('0x91')][_0x537c('0x56')](_0x2f36cd)[_0x537c('0x1d')](function(_0xcb8733){return[_0xcb8733,!![]];});});}else{_0x3c7121['threadId']=null;}_0x3c7121[_0x537c('0x92')]=_0x1b4bcc['id'];return db[_0x537c('0x91')][_0x537c('0x5c')]({'where':_0x3c7121})[_0x537c('0x1d')](function(_0xb61990){if(_0xb61990){return[_0xb61990,![]];}return db[_0x537c('0x91')]['create'](_0x2f36cd)[_0x537c('0x1d')](function(_0x33962d){return[_0x33962d,!![]];});});}})[_0x537c('0x93')](function(_0x5e7200,_0x4d6a07){if(_0x5e7200){_0x2d898e=_0x4d6a07;if(!_0x4d6a07){var _0x4af236={'from':(_0x5c67b2[_0x537c('0x94')][_0x537c('0x8d')]||'')+'\x20'+(_0x5c67b2[_0x537c('0x94')]['lastName']||'')};if(_0xb85673['body'][_0x537c('0x8f')]&&_0xb85673[_0x537c('0x57')][_0x537c('0x95')]&&_0xb85673[_0x537c('0x57')][_0x537c('0x8f')]!=_0xb85673[_0x537c('0x57')]['messageId']){_0x4af236['threadId']=_0xb85673[_0x537c('0x57')]['messageId'];}return _0x5e7200['update'](_0x4af236);}else{return _0x5e7200;}}})[_0x537c('0x1d')](function(_0x320d9e){_0x5c67b2['interaction']=_0x320d9e[_0x537c('0x32')]({'plain':!![]});_0x5c67b2[_0x537c('0x96')][_0x537c('0x97')]=_0x2d898e;if(_0x5c67b2[_0x537c('0x96')][_0x537c('0x97')]){if(_0x5c67b2[_0x537c('0x86')][_0x537c('0x98')]){_0x5c67b2[_0x537c('0x87')][_0x537c('0x99')]({'id':0x0,'priority':_0x5c67b2[_0x537c('0x87')]['length']+0x1,'app':'close','appdata':_0x537c('0x9a'),'interval':_0x537c('0x9b')});}}return db['OpenchannelMessage'][_0x537c('0x56')]({'body':_0xb85673['body'][_0x537c('0x57')],'OpenchannelAccountId':_0xb85673[_0x537c('0x60')]['id'],'OpenchannelInteractionId':_0x320d9e['id'],'direction':'in','ContactId':_0x5c67b2[_0x537c('0x94')]['id'],'AttachmentId':_0xb85673[_0x537c('0x57')][_0x537c('0x9c')]});})['then'](function(_0x36bd05){_0x5c67b2[_0x537c('0x24')]=_0x36bd05;if(_0x5c67b2[_0x537c('0x96')][_0x537c('0x9d')]){return db['User'][_0x537c('0x5c')]({'attributes':['id',_0x537c('0x37')],'where':{'id':_0x5c67b2['interaction'][_0x537c('0x9d')]}})['then'](function(_0x112c38){if(_0x112c38){_0x5c67b2[_0x537c('0x87')][_0x537c('0x9e')]({'id':0x0,'priority':0x0,'app':_0x537c('0x9f'),'appdata':_0x112c38[_0x537c('0x37')]+','+(_0x5c67b2[_0x537c('0x86')][_0x537c('0xa0')]||0xa),'interval':_0x537c('0x9b')});_0x5c67b2['forcedOwnership']=![];}return respondWithRpcPromise(_0x537c('0xa1'),_0x537c('0xa2'),_0x5c67b2);});}return respondWithRpcPromise(_0x537c('0xa1'),_0x537c('0xa2'),_0x5c67b2);})[_0x537c('0x1d')](function(_0x3a3b69){respondWithRpcPromise(_0x537c('0xa3'),_0x537c('0xa3'),{'event':_0x537c('0x72'),'message':_0x3a3b69},client9002);return _0x3a3b69;})['then'](respondWithResult(_0x1a4022,null))[_0x537c('0x54')](handleError(_0x1a4022,null));};exports[_0x537c('0xa4')]=function(_0x4697d7,_0x3451ec,_0x24138a){return db[_0x537c('0x39')][_0x537c('0x66')]({'where':{'id':_0x4697d7[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x3451ec,null))[_0x537c('0x1d')](function(_0x4272de){if(_0x4272de){return db['sequelize'][_0x537c('0xa5')](function(_0x5186f1){return db[_0x537c('0x85')][_0x537c('0x31')]({'where':{'OpenchannelAccountId':_0x4697d7['params']['id']},'transaction':_0x5186f1})[_0x537c('0x1d')](function(_0x4be34f){var _0x4f584d=_['map'](_0x4697d7[_0x537c('0x57')],function(_0x2250ed){_0x2250ed[_0x537c('0x69')]=_0x4697d7['params']['id'];return _0x2250ed;});return db[_0x537c('0x85')][_0x537c('0xa6')](_0x4f584d,{'transaction':_0x5186f1});});})[_0x537c('0x1d')](function(){return db[_0x537c('0x85')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x4697d7['params']['id']},'order':_0x537c('0x8b')});});}})['then'](respondWithResult(_0x3451ec,null))['catch'](handleError(_0x3451ec,null));};exports[_0x537c('0xa7')]=function(_0x5248bb,_0x22ddcd,_0x3e570f){var _0x15378e={};var _0x3f25cd={};var _0x493536;var _0xf0fac3;return db[_0x537c('0x39')]['findOne']({'where':{'id':_0x5248bb[_0x537c('0x60')]['id']}})['then'](handleEntityNotFound(_0x22ddcd,null))[_0x537c('0x1d')](function(_0x250e84){if(_0x250e84){_0x493536=_0x250e84;_0x3f25cd[_0x537c('0x3b')]=_[_0x537c('0x3c')](db[_0x537c('0x85')][_0x537c('0x3a')]);_0x3f25cd[_0x537c('0x3d')]=_['keys'](_0x5248bb[_0x537c('0x3d')]);_0x3f25cd[_0x537c('0x46')]=_[_0x537c('0x40')](_0x3f25cd[_0x537c('0x3b')],_0x3f25cd['query']);_0x15378e[_0x537c('0x41')]=_[_0x537c('0x40')](_0x3f25cd['model'],qs[_0x537c('0x42')](_0x5248bb[_0x537c('0x3d')][_0x537c('0x42')]));_0x15378e[_0x537c('0x41')]=_0x15378e['attributes'][_0x537c('0x43')]?_0x15378e[_0x537c('0x41')]:_0x3f25cd[_0x537c('0x3b')];_0x15378e['order']=qs[_0x537c('0x45')](_0x5248bb[_0x537c('0x3d')][_0x537c('0x45')]);_0x15378e['where']=qs['filters'](_['pick'](_0x5248bb['query'],_0x3f25cd[_0x537c('0x46')]));if(_0x5248bb[_0x537c('0x3d')][_0x537c('0x4b')]){_0x15378e[_0x537c('0x4a')]=_['merge'](_0x15378e['where'],{'$or':_[_0x537c('0x6a')](_0x15378e[_0x537c('0x41')],function(_0x20bc2d){var _0x4837ab={};_0x4837ab[_0x20bc2d]={'$like':'%'+_0x5248bb['query'][_0x537c('0x4b')]+'%'};return _0x4837ab;})});}_0x15378e=_[_0x537c('0x4c')]({},_0x15378e,_0x5248bb[_0x537c('0x50')]);return _0x493536[_0x537c('0xa7')](_0x15378e);}})['then'](function(_0x83aae3){if(_0x83aae3){_0xf0fac3=_0x83aae3[_0x537c('0x43')];if(!_0x5248bb['query'][_0x537c('0x67')](_0x537c('0x68'))){_0x15378e[_0x537c('0x2c')]=qs['limit'](_0x5248bb[_0x537c('0x3d')][_0x537c('0x2c')]);_0x15378e[_0x537c('0x2b')]=qs[_0x537c('0x2b')](_0x5248bb[_0x537c('0x3d')]['offset']);}return _0x493536[_0x537c('0xa7')](_0x15378e);}})[_0x537c('0x1d')](function(_0x50ff99){if(_0x50ff99){return _0x50ff99?{'count':_0xf0fac3,'rows':_0x50ff99}:null;}})[_0x537c('0x1d')](respondWithResult(_0x22ddcd,null))[_0x537c('0x54')](handleError(_0x22ddcd,null));};exports[_0x537c('0xa8')]=function(_0x3eaa40,_0x1a0955,_0x1a27fd){var _0x2fe50b={'raw':![],'where':{}};var _0x55142e={};var _0x490f2f={'count':0x0,'rows':[]};return db[_0x537c('0x39')][_0x537c('0x66')]({'where':{'id':_0x3eaa40[_0x537c('0x60')]['id']}})['then'](handleEntityNotFound(_0x1a0955,null))['then'](function(_0x55b9a1){if(_0x55b9a1){_0x55142e[_0x537c('0x3b')]=_[_0x537c('0x3c')](db[_0x537c('0x91')][_0x537c('0x3a')]);_0x55142e[_0x537c('0x3d')]=_[_0x537c('0x3c')](_0x3eaa40[_0x537c('0x3d')]);_0x55142e['filters']=_['intersection'](_0x55142e[_0x537c('0x3b')],_0x55142e['query']);_0x2fe50b[_0x537c('0x41')]=_['intersection'](_0x55142e[_0x537c('0x3b')],qs[_0x537c('0x42')](_0x3eaa40[_0x537c('0x3d')]['fields']));_0x2fe50b['attributes']=_0x2fe50b['attributes'][_0x537c('0x43')]?_0x2fe50b[_0x537c('0x41')]:_0x55142e[_0x537c('0x3b')];if(!_0x3eaa40['query'][_0x537c('0x67')]('nolimit')){_0x2fe50b[_0x537c('0x2c')]=qs[_0x537c('0x2c')](_0x3eaa40['query'][_0x537c('0x2c')]);_0x2fe50b[_0x537c('0x2b')]=qs[_0x537c('0x2b')](_0x3eaa40[_0x537c('0x3d')][_0x537c('0x2b')]);}_0x2fe50b[_0x537c('0x44')]=qs['sort'](_0x3eaa40[_0x537c('0x3d')]['sort']);_0x2fe50b[_0x537c('0x4a')]=qs[_0x537c('0x46')](_['pick'](_0x3eaa40[_0x537c('0x3d')],_0x55142e[_0x537c('0x46')]));_0x2fe50b[_0x537c('0x4a')][_0x537c('0x69')]=_0x55b9a1['id'];if(_0x3eaa40[_0x537c('0x3d')][_0x537c('0x4b')]){_0x2fe50b['where']=_['merge'](_0x2fe50b['where'],{'$or':_[_0x537c('0x6a')](_0x2fe50b[_0x537c('0x41')],function(_0x401ca8){var _0x5283ca={};_0x5283ca[_0x401ca8]={'$like':'%'+_0x3eaa40[_0x537c('0x3d')]['filter']+'%'};return _0x5283ca;})});}_0x2fe50b=_[_0x537c('0x4c')]({},_0x2fe50b,_0x3eaa40[_0x537c('0x50')]);return db['OpenchannelInteraction']['count']({'where':_0x2fe50b['where']})['then'](function(_0x228e52){_0x490f2f[_0x537c('0x2a')]=_0x228e52;if(_0x3eaa40[_0x537c('0x3d')][_0x537c('0x51')]){_0x2fe50b['include']=[{'model':db[_0x537c('0x73')],'as':_0x537c('0xa9'),'required':![]},{'model':db['User'],'as':_0x537c('0xaa'),'attributes':['name',_0x537c('0xab'),'internal'],'required':![]},{'model':db[_0x537c('0xac')],'as':_0x537c('0xad'),'attributes':['id',_0x537c('0x37'),_0x537c('0xae')],'where':_0x3eaa40[_0x537c('0x3d')][_0x537c('0xaf')]?{'id':_0x3eaa40[_0x537c('0x3d')][_0x537c('0xaf')]}:undefined,'required':_0x3eaa40[_0x537c('0x3d')][_0x537c('0xaf')]?!![]:![]}];}return db['OpenchannelInteraction'][_0x537c('0x52')](_0x2fe50b);})['then'](function(_0x147280){_0x490f2f[_0x537c('0x53')]=_0x147280;return _0x490f2f;});}})[_0x537c('0x1d')](respondWithFilteredResult(_0x1a0955,_0x2fe50b))[_0x537c('0x54')](handleError(_0x1a0955,null));};exports[_0x537c('0xb0')]=function(_0x21f322,_0x1c35d9,_0x276c02){return db[_0x537c('0x39')][_0x537c('0x5c')]({'where':{'id':_0x21f322[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x1c35d9,null))[_0x537c('0x1d')](function(_0x310527){if(_0x310527){return _0x310527[_0x537c('0xb0')](_0x21f322[_0x537c('0x57')]['ids'],_[_0x537c('0xb1')](_0x21f322[_0x537c('0x57')],[_0x537c('0x6d'),'id'])||{})[_0x537c('0x93')](function(_0x4e9adf){for(var _0x4bfc12=0x0;_0x4bfc12<_0x21f322[_0x537c('0x57')][_0x537c('0x6d')][_0x537c('0x43')];_0x4bfc12+=0x1){socket[_0x537c('0xb2')](_0x537c('0xb3'),{'UserId':_0x21f322[_0x537c('0x57')][_0x537c('0x6d')][_0x4bfc12],'OpenchannelAccountId':_0x21f322['params']['id']});}return _0x4e9adf;});}})[_0x537c('0x1d')](respondWithResult(_0x1c35d9,null))[_0x537c('0x54')](handleError(_0x1c35d9,null));};exports[_0x537c('0xb4')]=function(_0x527c40,_0x21faf1,_0x318298){var _0x100504;return db[_0x537c('0x39')][_0x537c('0x5c')]({'where':{'id':_0x527c40[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x21faf1,null))[_0x537c('0x1d')](function(_0x2bf8a2){if(_0x2bf8a2){return _0x2bf8a2[_0x537c('0xb4')](_0x527c40[_0x537c('0x3d')][_0x537c('0x6d')])['then'](function(_0x5814a3){if(_[_0x537c('0xb5')](_0x527c40[_0x537c('0x3d')][_0x537c('0x6d')])){for(var _0x17ba08=0x0;_0x17ba08<_0x527c40['query'][_0x537c('0x6d')]['length'];_0x17ba08+=0x1){socket['emit'](_0x537c('0xb6'),{'UserId':_0x527c40[_0x537c('0x3d')][_0x537c('0x6d')][_0x17ba08],'OpenchannelAccountId':_0x527c40[_0x537c('0x60')]['id']});}}else{socket['emit'](_0x537c('0xb6'),{'UserId':_0x527c40[_0x537c('0x3d')][_0x537c('0x6d')],'OpenchannelAccountId':_0x527c40['params']['id']});}});}})[_0x537c('0x1d')](respondWithStatusCode(_0x21faf1,null))['catch'](handleError(_0x21faf1,null));};exports[_0x537c('0xb7')]=function(_0x38b91e,_0x2453c2,_0x29eb93){var _0x598ad4={};var _0x3b0ffd={};var _0x211306;var _0x3bad01;return db[_0x537c('0x39')][_0x537c('0x66')]({'where':{'id':_0x38b91e[_0x537c('0x60')]['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0x2453c2,null))['then'](function(_0x25ceea){if(_0x25ceea){_0x211306=_0x25ceea;_0x3b0ffd['model']=_['keys'](db[_0x537c('0xb8')]['rawAttributes']);_0x3b0ffd['query']=_[_0x537c('0x3c')](_0x38b91e['query']);_0x3b0ffd[_0x537c('0x46')]=_['intersection'](_0x3b0ffd['model'],_0x3b0ffd[_0x537c('0x3d')]);_0x598ad4[_0x537c('0x41')]=_['intersection'](_0x3b0ffd[_0x537c('0x3b')],qs[_0x537c('0x42')](_0x38b91e[_0x537c('0x3d')][_0x537c('0x42')]));_0x598ad4['attributes']=_0x598ad4[_0x537c('0x41')]['length']?_0x598ad4[_0x537c('0x41')]:_0x3b0ffd['model'];_0x598ad4['order']=qs[_0x537c('0x45')](_0x38b91e[_0x537c('0x3d')]['sort']);_0x598ad4['where']=qs[_0x537c('0x46')](_[_0x537c('0x47')](_0x38b91e[_0x537c('0x3d')],_0x3b0ffd[_0x537c('0x46')]));if(_0x38b91e[_0x537c('0x3d')][_0x537c('0x4b')]){_0x598ad4[_0x537c('0x4a')]=_[_0x537c('0x4c')](_0x598ad4['where'],{'$or':_[_0x537c('0x6a')](_0x598ad4['attributes'],function(_0x4f9bb0){var _0x5bdf3b={};_0x5bdf3b[_0x4f9bb0]={'$like':'%'+_0x38b91e[_0x537c('0x3d')]['filter']+'%'};return _0x5bdf3b;})});}_0x598ad4=_['merge']({},_0x598ad4,_0x38b91e['options']);return _0x211306[_0x537c('0xb7')](_0x598ad4);}})['then'](function(_0x483ff4){if(_0x483ff4){_0x3bad01=_0x483ff4['length'];if(!_0x38b91e[_0x537c('0x3d')][_0x537c('0x67')](_0x537c('0x68'))){_0x598ad4[_0x537c('0x2c')]=qs[_0x537c('0x2c')](_0x38b91e[_0x537c('0x3d')][_0x537c('0x2c')]);_0x598ad4[_0x537c('0x2b')]=qs[_0x537c('0x2b')](_0x38b91e[_0x537c('0x3d')][_0x537c('0x2b')]);}return _0x211306[_0x537c('0xb7')](_0x598ad4);}})[_0x537c('0x1d')](function(_0x96e913){if(_0x96e913){return _0x96e913?{'count':_0x3bad01,'rows':_0x96e913}:null;}})['then'](respondWithResult(_0x2453c2,null))[_0x537c('0x54')](handleError(_0x2453c2,null));};exports[_0x537c('0x38')]=function(_0x5a1cb9,_0xeb359f,_0x38b776){var _0x18f84a,_0x4ca3de,_0x40f28d;if(_[_0x537c('0x7a')](_0x5a1cb9['body']['body'])||_0x5a1cb9[_0x537c('0x57')][_0x537c('0x57')]===''){throw new db['Sequelize'][(_0x537c('0x74'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x537c('0x7a')](_0x5a1cb9[_0x537c('0x57')]['to'])){}_0x18f84a=_0x5a1cb9[_0x537c('0x57')]['to'];return db[_0x537c('0x39')][_0x537c('0x66')]({'where':{'id':_0x5a1cb9['params']['id']}})[_0x537c('0x1d')](handleEntityNotFound(_0xeb359f,null))[_0x537c('0x1d')](function(_0x17ae77){if(_0x17ae77){return db[_0x537c('0x39')][_0x537c('0x5c')]({'where':{'id':_0x17ae77['id']},'include':[{'model':db[_0x537c('0xb9')],'as':_0x537c('0x82'),'include':[{'model':db[_0x537c('0x73')],'as':_0x537c('0x83'),'where':{[_0x17ae77[_0x537c('0x80')]]:_0x18f84a},'limit':0x1,'order':[[_0x537c('0x77'),_0x537c('0x84')]]}]}]})[_0x537c('0x1d')](handleEntityNotFound(_0xeb359f,null))[_0x537c('0x1d')](function(_0x3eecd6){if(_0x3eecd6&&_0x3eecd6[_0x537c('0x82')]){_0x4ca3de=_0x3eecd6[_0x537c('0x32')]({'plain':!![]});if(_0x4ca3de[_0x537c('0x82')]&&_0x4ca3de[_0x537c('0x82')][_0x537c('0x83')][_0x537c('0x43')]){return _0x4ca3de['List'][_0x537c('0x83')][0x0];}return db[_0x537c('0x73')]['create'](_['defaults'](_0x5a1cb9['body'],{'firstName':_0x18f84a,[_0x3eecd6[_0x537c('0x80')]]:_0x18f84a,'phone':_0x18f84a,'ListId':_0x4ca3de[_0x537c('0x79')]}));}})[_0x537c('0x1d')](handleEntityNotFound(_0xeb359f,null))['then'](function(_0x27f408){if(_0x27f408){_0x40f28d=_0x27f408;return db['OpenchannelInteraction'][_0x537c('0x5c')]({'where':{'ContactId':_0x40f28d['id'],'closed':![],'OpenchannelAccountId':_0x4ca3de['id']}})[_0x537c('0x1d')](function(_0x12d701){if(_0x12d701){return[_0x12d701,![]];}return db[_0x537c('0x91')][_0x537c('0x56')]({'UserId':_0x5a1cb9[_0x537c('0x58')]['id'],'ContactId':_0x40f28d['id'],'OpenchannelAccountId':_0x4ca3de['id'],'lastMsgDirection':_0x537c('0xba'),'Messages':[_[_0x537c('0x4c')](_0x5a1cb9['body'],{'read':![],'body':_0x5a1cb9['body'][_0x537c('0x57')],'OpenchannelAccountId':_0x4ca3de['id'],'UserId':_0x5a1cb9['user']['id'],'ContactId':_0x40f28d['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':'Messages'}]})[_0x537c('0x1d')](function(_0x3a18a1){return[_0x3a18a1,!![]];});});}})[_0x537c('0x93')](function(_0x5539b9,_0xc89f9a){if(_0xc89f9a){return _0x5539b9;}return db[_0x537c('0xbb')][_0x537c('0x56')](_[_0x537c('0x4c')](_0x5a1cb9[_0x537c('0x57')],{'read':![],'body':_0x5a1cb9[_0x537c('0x57')][_0x537c('0x57')],'OpenchannelAccountId':_0x4ca3de['id'],'OpenchannelInteractionId':_0x5539b9['id'],'UserId':_0x5a1cb9['user']['id'],'ContactId':_0x40f28d['id']}))[_0x537c('0x1d')](function(_0x123544){_0x5539b9[_0x537c('0xbc')]['Messages']=[];_0x5539b9[_0x537c('0xbc')][_0x537c('0xbd')][_0x537c('0x99')](_0x123544[_0x537c('0xbc')]);return _0x5539b9;});});}})[_0x537c('0x1d')](respondWithResult(_0xeb359f,null))['catch'](handleError(_0xeb359f,null));};
\ No newline at end of file
index 55789b1..b13a111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb6e=['update','remove','hasOwnProperty','hook','exports','events','OpenchannelAccount','save'];(function(_0x26855d,_0x569302){var _0x349816=function(_0x5bafbe){while(--_0x5bafbe){_0x26855d['push'](_0x26855d['shift']());}};_0x349816(++_0x569302);}(_0xbb6e,0x115));var _0xebb6=function(_0x269954,_0x151585){_0x269954=_0x269954-0x0;var _0x1aa238=_0xbb6e[_0x269954];return _0x1aa238;};'use strict';var EventEmitter=require(_0xebb6('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xebb6('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xebb6('0x2'),'afterUpdate':_0xebb6('0x3'),'afterDestroy':_0xebb6('0x4')};function emitEvent(_0xfb59e3){return function(_0x3529f9,_0x3a3bc7,_0x4a5186){OpenchannelAccountEvents['emit'](_0xfb59e3+':'+_0x3529f9['id'],_0x3529f9);OpenchannelAccountEvents['emit'](_0xfb59e3,_0x3529f9);_0x4a5186(null);};}for(var e in events){if(events[_0xebb6('0x5')](e)){var event=events[e];OpenchannelAccount[_0xebb6('0x6')](e,emitEvent(event));}}module[_0xebb6('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x8a81=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','OpenchannelAccount'];(function(_0x529f4a,_0xfde501){var _0x56ac2d=function(_0x11bd6f){while(--_0x11bd6f){_0x529f4a['push'](_0x529f4a['shift']());}};_0x56ac2d(++_0xfde501);}(_0x8a81,0x1da));var _0x18a8=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x8a81[_0x46698a];return _0x356db0;};'use strict';var EventEmitter=require(_0x18a8('0x0'));var OpenchannelAccount=require(_0x18a8('0x1'))['db'][_0x18a8('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x18a8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x18a8('0x4'),'afterDestroy':_0x18a8('0x5')};function emitEvent(_0x137a14){return function(_0x22c518,_0x24a716,_0x1a1221){OpenchannelAccountEvents['emit'](_0x137a14+':'+_0x22c518['id'],_0x22c518);OpenchannelAccountEvents[_0x18a8('0x6')](_0x137a14,_0x22c518);_0x1a1221(null);};}for(var e in events){if(events[_0x18a8('0x7')](e)){var event=events[e];OpenchannelAccount[_0x18a8('0x8')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index fe4f16a..08cd569 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['request-promise','./openchannelAccount.attributes','exports','define','openchannel_accounts','util','../../config/logger'];(function(_0x2baca1,_0x2f3557){var _0x9aa62a=function(_0x5c47d5){while(--_0x5c47d5){_0x2baca1['push'](_0x2baca1['shift']());}};_0x9aa62a(++_0x2f3557);}(_0x757a,0xde));var _0xa757=function(_0x5e2f22,_0x275fae){_0x5e2f22=_0x5e2f22-0x0;var _0x145860=_0x757a[_0x5e2f22];return _0x145860;};'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 attributes=require(_0xa757('0x3'));module[_0xa757('0x4')]=function(_0x453d07,_0x32630d){return _0x453d07[_0xa757('0x5')]('OpenchannelAccount',attributes,{'tableName':_0xa757('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb10b=['openchannel_accounts','lodash','../../config/logger','api','moment','request-promise','./openchannelAccount.attributes','exports','define'];(function(_0x4866f3,_0x556a62){var _0x7847c=function(_0x5bc5db){while(--_0x5bc5db){_0x4866f3['push'](_0x4866f3['shift']());}};_0x7847c(++_0x556a62);}(_0xb10b,0x12a));var _0xbb10=function(_0x405dc0,_0x5f2898){_0x405dc0=_0x405dc0-0x0;var _0x1ed46d=_0xb10b[_0x405dc0];return _0x1ed46d;};'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 attributes=require(_0xbb10('0x5'));module[_0xbb10('0x6')]=function(_0x22320e,_0x49baf4){return _0x22320e[_0xbb10('0x7')]('OpenchannelAccount',attributes,{'tableName':_0xbb10('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 016adfb..55360e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','register','request','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result'];(function(_0xd3354,_0x5433ab){var _0xdcff2=function(_0x38527c){while(--_0x38527c){_0xd3354['push'](_0xd3354['shift']());}};_0xdcff2(++_0x5433ab);}(_0x326f,0xd1));var _0xf326=function(_0x270c7b,_0x4d92ad){_0x270c7b=_0x270c7b-0x0;var _0x1f7ce4=_0x326f[_0x270c7b];return _0x1f7ce4;};'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});config[_0xf326('0xb')]=_[_0xf326('0xc')](config[_0xf326('0xb')],{'host':_0xf326('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./openchannelAccount.socket')[_0xf326('0xe')](socket);function respondWithRpcPromise(_0x1fc80e,_0x163416,_0x2686e1){return new BPromise(function(_0x1f3a33,_0x5db9d7){return client[_0xf326('0xf')](_0x1fc80e,_0x2686e1)['then'](function(_0x1cf441){logger['info'](_0xf326('0x10'),_0x163416,'request\x20sent');logger[_0xf326('0x11')](_0xf326('0x12'),_0x163416,'request\x20sent',JSON[_0xf326('0x13')](_0x1cf441));if(_0x1cf441[_0xf326('0x14')]){if(_0x1cf441[_0xf326('0x14')][_0xf326('0x15')]===0x1f4){logger['error'](_0xf326('0x10'),_0x163416,_0x1cf441['error']['message']);return _0x5db9d7(_0x1cf441[_0xf326('0x14')][_0xf326('0x16')]);}logger[_0xf326('0x14')](_0xf326('0x10'),_0x163416,_0x1cf441[_0xf326('0x14')][_0xf326('0x16')]);return _0x1f3a33(_0x1cf441[_0xf326('0x14')][_0xf326('0x16')]);}else{logger['info'](_0xf326('0x10'),_0x163416,_0xf326('0x17'));_0x1f3a33(_0x1cf441[_0xf326('0x18')][_0xf326('0x16')]);}})[_0xf326('0x19')](function(_0x311af0){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x163416,_0x311af0);_0x5db9d7(_0x311af0);});});}
\ No newline at end of file
+var _0x814b=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x57a81a,_0x4cbe1c){var _0x2b76dd=function(_0x5f080a){while(--_0x5f080a){_0x57a81a['push'](_0x57a81a['shift']());}};_0x2b76dd(++_0x4cbe1c);}(_0x814b,0x1a2));var _0xb814=function(_0x3358ba,_0x24c5fc){_0x3358ba=_0x3358ba-0x0;var _0x296e73=_0x814b[_0x3358ba];return _0x296e73;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});config[_0xb814('0xc')]=_[_0xb814('0xd')](config['redis'],{'host':_0xb814('0xe'),'port':0x18eb});var socket=require(_0xb814('0xf'))(new Redis(config[_0xb814('0xc')]));require(_0xb814('0x10'))[_0xb814('0x11')](socket);function respondWithRpcPromise(_0x21d4a5,_0x1086f8,_0x19aad8){return new BPromise(function(_0x207dbc,_0x3450f2){return client[_0xb814('0x12')](_0x21d4a5,_0x19aad8)['then'](function(_0x43dfe6){logger['info'](_0xb814('0x13'),_0x1086f8,_0xb814('0x14'));logger[_0xb814('0x15')](_0xb814('0x16'),_0x1086f8,_0xb814('0x14'),JSON[_0xb814('0x17')](_0x43dfe6));if(_0x43dfe6[_0xb814('0x18')]){if(_0x43dfe6[_0xb814('0x18')][_0xb814('0x19')]===0x1f4){logger[_0xb814('0x18')](_0xb814('0x13'),_0x1086f8,_0x43dfe6[_0xb814('0x18')][_0xb814('0x1a')]);return _0x3450f2(_0x43dfe6[_0xb814('0x18')][_0xb814('0x1a')]);}logger[_0xb814('0x18')](_0xb814('0x13'),_0x1086f8,_0x43dfe6[_0xb814('0x18')][_0xb814('0x1a')]);return _0x207dbc(_0x43dfe6[_0xb814('0x18')][_0xb814('0x1a')]);}else{logger['info'](_0xb814('0x13'),_0x1086f8,'request\x20sent');_0x207dbc(_0x43dfe6[_0xb814('0x1b')][_0xb814('0x1a')]);}})['catch'](function(_0x4b55a7){logger['error'](_0xb814('0x13'),_0x1086f8,_0x4b55a7);_0x3450f2(_0x4b55a7);});});}
\ No newline at end of file
index aa2cf2e..d477ec2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf34f=['./openchannelAccount.events','remove','update','emit','removeListener','register','length','openchannelAccount:'];(function(_0x221f71,_0x221c04){var _0x2df2e5=function(_0x242926){while(--_0x242926){_0x221f71['push'](_0x221f71['shift']());}};_0x2df2e5(++_0x221c04);}(_0xf34f,0xc0));var _0xff34=function(_0x5f5d59,_0x399231){_0x5f5d59=_0x5f5d59-0x0;var _0x362d72=_0xf34f[_0x5f5d59];return _0x362d72;};'use strict';var OpenchannelAccountEvents=require(_0xff34('0x0'));var events=['save',_0xff34('0x1'),_0xff34('0x2')];function createListener(_0x68aac7,_0x3968dc){return function(_0x3d2623){_0x3968dc[_0xff34('0x3')](_0x68aac7,_0x3d2623);};}function removeListener(_0xadc0f7,_0x452236){return function(){OpenchannelAccountEvents[_0xff34('0x4')](_0xadc0f7,_0x452236);};}exports[_0xff34('0x5')]=function(_0x11e992){for(var _0x5e570e=0x0,_0x1688e9=events[_0xff34('0x6')];_0x5e570e<_0x1688e9;_0x5e570e++){var _0x4d17c1=events[_0x5e570e];var _0x71f833=createListener(_0xff34('0x7')+_0x4d17c1,_0x11e992);OpenchannelAccountEvents['on'](_0x4d17c1,_0x71f833);}};
\ No newline at end of file
+var _0xdf3c=['register','length','remove','update'];(function(_0x545bed,_0x221e96){var _0x16c79c=function(_0x465346){while(--_0x465346){_0x545bed['push'](_0x545bed['shift']());}};_0x16c79c(++_0x221e96);}(_0xdf3c,0x6e));var _0xcdf3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xdf3c[_0x321bb2];return _0x9c12ed;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=['save',_0xcdf3('0x0'),_0xcdf3('0x1')];function createListener(_0xa7104,_0x11404c){return function(_0x22f477){_0x11404c['emit'](_0xa7104,_0x22f477);};}function removeListener(_0x36e084,_0x1506c0){return function(){OpenchannelAccountEvents['removeListener'](_0x36e084,_0x1506c0);};}exports[_0xcdf3('0x2')]=function(_0x57ef59){for(var _0x32aea7=0x0,_0x458681=events[_0xcdf3('0x3')];_0x32aea7<_0x458681;_0x32aea7++){var _0x464362=events[_0x32aea7];var _0x512a4f=createListener('openchannelAccount:'+_0x464362,_0x57ef59);OpenchannelAccountEvents['on'](_0x464362,_0x512a4f);}};
\ No newline at end of file
index d7a9fec..6e976bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4580=['../../config/environment','./openchannelApplication.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','util','connect-timeout','Router','../../components/interaction/service'];(function(_0x4c0ee3,_0x5e8da2){var _0x1f1bf8=function(_0x266e23){while(--_0x266e23){_0x4c0ee3['push'](_0x4c0ee3['shift']());}};_0x1f1bf8(++_0x5e8da2);}(_0x4580,0x13c));var _0x0458=function(_0x3c7869,_0x207240){_0x3c7869=_0x3c7869-0x0;var _0x23bc0b=_0x4580[_0x3c7869];return _0x23bc0b;};'use strict';var multer=require('multer');var util=require(_0x0458('0x0'));var path=require('path');var timeout=require(_0x0458('0x1'));var express=require('express');var router=express[_0x0458('0x2')]();var auth=require('../../components/auth/service');var interaction=require(_0x0458('0x3'));var config=require(_0x0458('0x4'));var controller=require(_0x0458('0x5'));router[_0x0458('0x6')]('/',auth[_0x0458('0x7')](),controller[_0x0458('0x8')]);router[_0x0458('0x6')](_0x0458('0x9'),auth['isAuthenticated'](),controller['show']);router[_0x0458('0xa')]('/',auth[_0x0458('0x7')](),controller[_0x0458('0xb')]);router[_0x0458('0xc')](_0x0458('0x9'),auth['isAuthenticated'](),controller[_0x0458('0xd')]);router[_0x0458('0xe')](_0x0458('0x9'),auth[_0x0458('0x7')](),controller[_0x0458('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x3d2f=['path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','post','create','delete','destroy','multer','util'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x3d2f,0x16e));var _0xf3d2=function(_0x2efda4,_0x86b53b){_0x2efda4=_0x2efda4-0x0;var _0x1b5c11=_0x3d2f[_0x2efda4];return _0x1b5c11;};'use strict';var multer=require(_0xf3d2('0x0'));var util=require(_0xf3d2('0x1'));var path=require(_0xf3d2('0x2'));var timeout=require(_0xf3d2('0x3'));var express=require('express');var router=express[_0xf3d2('0x4')]();var auth=require(_0xf3d2('0x5'));var interaction=require(_0xf3d2('0x6'));var config=require(_0xf3d2('0x7'));var controller=require('./openchannelApplication.controller');router['get']('/',auth[_0xf3d2('0x8')](),controller[_0xf3d2('0x9')]);router['get'](_0xf3d2('0xa'),auth[_0xf3d2('0x8')](),controller[_0xf3d2('0xb')]);router[_0xf3d2('0xc')]('/',auth[_0xf3d2('0x8')](),controller[_0xf3d2('0xd')]);router['put'](_0xf3d2('0xa'),auth[_0xf3d2('0x8')](),controller['update']);router[_0xf3d2('0xe')](_0xf3d2('0xa'),auth[_0xf3d2('0x8')](),controller[_0xf3d2('0xf')]);module['exports']=router;
\ No newline at end of file
index 4dd3f6c..ace5a6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf854=['sequelize','exports','INTEGER','STRING','*,*,*,*'];(function(_0x249fed,_0x14436a){var _0x4832c7=function(_0x53c5c0){while(--_0x53c5c0){_0x249fed['push'](_0x249fed['shift']());}};_0x4832c7(++_0x14436a);}(_0xf854,0xa0));var _0x4f85=function(_0x31f664,_0x5d38b9){_0x31f664=_0x31f664-0x0;var _0x408513=_0xf854[_0x31f664];return _0x408513;};'use strict';var Sequelize=require(_0x4f85('0x0'));module[_0x4f85('0x1')]={'priority':{'type':Sequelize[_0x4f85('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x4f85('0x3')](0x1000),'defaultValue':''},'description':{'type':Sequelize[_0x4f85('0x3')]},'interval':{'type':Sequelize[_0x4f85('0x3')],'defaultValue':_0x4f85('0x4')}};
\ No newline at end of file
+var _0x2089=['exports','INTEGER','STRING','noop','*,*,*,*'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2089,0x17c));var _0x9208=function(_0x2a4c8b,_0x397e8f){_0x2a4c8b=_0x2a4c8b-0x0;var _0x5009e2=_0x2089[_0x2a4c8b];return _0x5009e2;};'use strict';var Sequelize=require('sequelize');module[_0x9208('0x0')]={'priority':{'type':Sequelize[_0x9208('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x9208('0x2')],'allowNull':![],'defaultValue':_0x9208('0x3')},'appdata':{'type':Sequelize['STRING'](0x1000),'defaultValue':''},'description':{'type':Sequelize[_0x9208('0x2')]},'interval':{'type':Sequelize[_0x9208('0x2')],'defaultValue':_0x9208('0x4')}};
\ No newline at end of file
index e0fab97..0764f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99bb=['params','include','find','create','body','destroy','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','save','update','then','name','index','OpenchannelApplication','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','add','day','merge','map','type','VIRTUAL','field','filter','options','includeAll','findAll','rows','catch','show'];(function(_0x3b5ad9,_0x223867){var _0x611ae9=function(_0x1c5e28){while(--_0x1c5e28){_0x3b5ad9['push'](_0x3b5ad9['shift']());}};_0x611ae9(++_0x223867);}(_0x99bb,0x136));var _0xb99b=function(_0x2ffc7d,_0x3dc79a){_0x2ffc7d=_0x2ffc7d-0x0;var _0x2b6de0=_0x99bb[_0x2ffc7d];return _0x2b6de0;};'use strict';var pdf=require(_0xb99b('0x0'));var emlformat=require(_0xb99b('0x1'));var rimraf=require(_0xb99b('0x2'));var zipdir=require(_0xb99b('0x3'));var jsonpatch=require(_0xb99b('0x4'));var rp=require(_0xb99b('0x5'));var moment=require(_0xb99b('0x6'));var BPromise=require('bluebird');var Mustache=require(_0xb99b('0x7'));var util=require(_0xb99b('0x8'));var path=require(_0xb99b('0x9'));var sox=require(_0xb99b('0xa'));var csv=require(_0xb99b('0xb'));var ejs=require(_0xb99b('0xc'));var fs=require('fs');var _=require(_0xb99b('0xd'));var squel=require(_0xb99b('0xe'));var crypto=require(_0xb99b('0xf'));var jsforce=require(_0xb99b('0x10'));var deskjs=require(_0xb99b('0x11'));var toCsv=require('to-csv');var querystring=require(_0xb99b('0x12'));var Papa=require('papaparse');var Redis=require(_0xb99b('0x13'));var qs=require(_0xb99b('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xb99b('0x15'));var config=require(_0xb99b('0x16'));var db=require(_0xb99b('0x17'))['db'];function respondWithStatusCode(_0x2733d9,_0x49b01b){_0x49b01b=_0x49b01b||0xcc;return function(_0x3f124f){if(_0x3f124f){return _0x2733d9[_0xb99b('0x18')](_0x49b01b);}return _0x2733d9[_0xb99b('0x19')](_0x49b01b)[_0xb99b('0x1a')]();};}function respondWithResult(_0x3b7931,_0x2ed090){_0x2ed090=_0x2ed090||0xc8;return function(_0xbcdc56){if(_0xbcdc56){return _0x3b7931[_0xb99b('0x19')](_0x2ed090)[_0xb99b('0x1b')](_0xbcdc56);}};}function respondWithFilteredResult(_0x8c1ef7,_0x2b668a){return function(_0x31595c){if(_0x31595c){var _0x17d0e1=_0x31595c[_0xb99b('0x1c')],_0x22a497=_0x2b668a[_0xb99b('0x1d')],_0x34fa23=_0x2b668a['offset']+_0x2b668a[_0xb99b('0x1e')],_0x3d9b23;if(_0x34fa23>=_0x17d0e1){_0x34fa23=_0x17d0e1;_0x3d9b23=0xc8;}else{_0x3d9b23=0xce;}_0x8c1ef7[_0xb99b('0x19')](_0x3d9b23);return _0x8c1ef7[_0xb99b('0x1f')](_0xb99b('0x20'),_0x22a497+'-'+_0x34fa23+'/'+_0x17d0e1)[_0xb99b('0x1b')](_0x31595c);}return null;};}function patchUpdates(_0x6c4492){return function(_0x151630){try{jsonpatch[_0xb99b('0x21')](_0x151630,_0x6c4492,!![]);}catch(_0x13c506){return BPromise['reject'](_0x13c506);}return _0x151630[_0xb99b('0x22')]();};}function saveUpdates(_0x310c1f,_0x5cfdc5){return function(_0x3c1d21){if(_0x3c1d21){return _0x3c1d21[_0xb99b('0x23')](_0x310c1f)[_0xb99b('0x24')](function(_0x53e213){return _0x53e213;});}return null;};}function removeEntity(_0x370d96,_0x326a21){return function(_0x14837a){if(_0x14837a){return _0x14837a['destroy']()[_0xb99b('0x24')](function(){_0x370d96[_0xb99b('0x19')](0xcc)[_0xb99b('0x1a')]();});}};}function handleEntityNotFound(_0x546738,_0x126115){return function(_0x8dc722){if(!_0x8dc722){_0x546738[_0xb99b('0x18')](0x194);}return _0x8dc722;};}function handleError(_0x3aefd8,_0x3d3154){_0x3d3154=_0x3d3154||0x1f4;return function(_0x31dadc){logger['error'](_0x31dadc['stack']);if(_0x31dadc['name']){delete _0x31dadc[_0xb99b('0x25')];}_0x3aefd8['status'](_0x3d3154)['send'](_0x31dadc);};}exports[_0xb99b('0x26')]=function(_0x42367e,_0x287bec){var _0x591562={},_0x2799b1={},_0x513394={'count':0x0,'rows':[]};var _0x37d349=db[_0xb99b('0x27')][_0xb99b('0x28')];_0x2799b1[_0xb99b('0x29')]=_[_0xb99b('0x2a')](_0x37d349);var _0x2767ff={'dateStart':_0x42367e[_0xb99b('0x2b')][_0xb99b('0x2c')],'dateEnd':_0x42367e[_0xb99b('0x2b')][_0xb99b('0x2d')]};delete _0x42367e['query']['dateStart'];delete _0x42367e[_0xb99b('0x2b')][_0xb99b('0x2d')];_0x2799b1[_0xb99b('0x2b')]=_['keys'](_0x42367e['query']);_0x2799b1[_0xb99b('0x2e')]=_[_0xb99b('0x2f')](_0x2799b1[_0xb99b('0x29')],_0x2799b1[_0xb99b('0x2b')]);_0x591562[_0xb99b('0x30')]=_[_0xb99b('0x2f')](_0x2799b1[_0xb99b('0x29')],qs[_0xb99b('0x31')](_0x42367e[_0xb99b('0x2b')][_0xb99b('0x31')]));_0x591562[_0xb99b('0x30')]=_0x591562[_0xb99b('0x30')][_0xb99b('0x32')]?_0x591562['attributes']:_0x2799b1[_0xb99b('0x29')];if(!_0x42367e[_0xb99b('0x2b')][_0xb99b('0x33')](_0xb99b('0x34'))){_0x591562[_0xb99b('0x1e')]=qs[_0xb99b('0x1e')](_0x42367e[_0xb99b('0x2b')][_0xb99b('0x1e')]);_0x591562[_0xb99b('0x1d')]=qs[_0xb99b('0x1d')](_0x42367e[_0xb99b('0x2b')][_0xb99b('0x1d')]);}_0x591562[_0xb99b('0x35')]=qs[_0xb99b('0x36')](_0x42367e[_0xb99b('0x2b')][_0xb99b('0x36')]);_0x591562[_0xb99b('0x37')]=qs['filters'](_['pick'](_0x42367e['query'],_0x2799b1[_0xb99b('0x2e')]));if(_0x2767ff[_0xb99b('0x2c')]){if(_0x2767ff['dateEnd']){_0x2767ff[_0xb99b('0x2d')]=moment(_0x2767ff['dateEnd'])[_0xb99b('0x38')](0x1,_0xb99b('0x39'));}else{_0x2767ff[_0xb99b('0x2d')]=moment(_0x2767ff[_0xb99b('0x2c')])[_0xb99b('0x38')](0x1,'day');}_[_0xb99b('0x3a')](_0x591562[_0xb99b('0x37')],{'createdAt':{'$gte':_0x2767ff[_0xb99b('0x2c')],'$lte':_0x2767ff[_0xb99b('0x2d')]}});}if(_0x42367e['query']['filter']){_0x591562['where']=_[_0xb99b('0x3a')](_0x591562[_0xb99b('0x37')],{'$or':_[_0xb99b('0x3b')](_0x37d349,function(_0x24b243){if(_0x24b243[_0xb99b('0x3c')]['key']!==_0xb99b('0x3d')){var _0x344fc8={};_0x344fc8[_0x24b243[_0xb99b('0x3e')]]={'$like':'%'+_0x42367e[_0xb99b('0x2b')][_0xb99b('0x3f')]+'%'};return _0x344fc8;}})});}_0x591562=_[_0xb99b('0x3a')]({},_0x591562,_0x42367e[_0xb99b('0x40')]);var _0x4775ed={'where':_0x591562[_0xb99b('0x37')]};return db[_0xb99b('0x27')][_0xb99b('0x1c')](_0x4775ed)['then'](function(_0x240f11){_0x513394['count']=_0x240f11;if(_0x42367e['query'][_0xb99b('0x41')]){_0x591562['include']=[{'all':!![]}];}return db[_0xb99b('0x27')][_0xb99b('0x42')](_0x591562);})[_0xb99b('0x24')](function(_0x3f6227){_0x513394[_0xb99b('0x43')]=_0x3f6227;return _0x513394;})[_0xb99b('0x24')](respondWithFilteredResult(_0x287bec,_0x591562))[_0xb99b('0x44')](handleError(_0x287bec,null));};exports[_0xb99b('0x45')]=function(_0x222cc3,_0x32732f){var _0x2067ff={'raw':!![],'where':{'id':_0x222cc3[_0xb99b('0x46')]['id']}},_0x1688af={};_0x1688af['model']=_[_0xb99b('0x2a')](db[_0xb99b('0x27')][_0xb99b('0x28')]);_0x1688af[_0xb99b('0x2b')]=_[_0xb99b('0x2a')](_0x222cc3['query']);_0x1688af[_0xb99b('0x2e')]=_['intersection'](_0x1688af[_0xb99b('0x29')],_0x1688af[_0xb99b('0x2b')]);_0x2067ff['attributes']=_['intersection'](_0x1688af['model'],qs['fields'](_0x222cc3[_0xb99b('0x2b')]['fields']));_0x2067ff[_0xb99b('0x30')]=_0x2067ff[_0xb99b('0x30')][_0xb99b('0x32')]?_0x2067ff[_0xb99b('0x30')]:_0x1688af[_0xb99b('0x29')];if(_0x222cc3[_0xb99b('0x2b')]['includeAll']){_0x2067ff[_0xb99b('0x47')]=[{'all':!![]}];}_0x2067ff=_['merge']({},_0x2067ff,_0x222cc3[_0xb99b('0x40')]);return db[_0xb99b('0x27')][_0xb99b('0x48')](_0x2067ff)['then'](handleEntityNotFound(_0x32732f,null))['then'](respondWithResult(_0x32732f,null))[_0xb99b('0x44')](handleError(_0x32732f,null));};exports['create']=function(_0x599b00,_0x3eab4e){return db[_0xb99b('0x27')][_0xb99b('0x49')](_0x599b00[_0xb99b('0x4a')],{})[_0xb99b('0x24')](respondWithResult(_0x3eab4e,0xc9))[_0xb99b('0x44')](handleError(_0x3eab4e,null));};exports[_0xb99b('0x23')]=function(_0x52716d,_0x1be266){if(_0x52716d[_0xb99b('0x4a')]['id']){delete _0x52716d[_0xb99b('0x4a')]['id'];}return db[_0xb99b('0x27')][_0xb99b('0x48')]({'where':{'id':_0x52716d['params']['id']}})['then'](handleEntityNotFound(_0x1be266,null))[_0xb99b('0x24')](saveUpdates(_0x52716d[_0xb99b('0x4a')],null))[_0xb99b('0x24')](respondWithResult(_0x1be266,null))['catch'](handleError(_0x1be266,null));};exports[_0xb99b('0x4b')]=function(_0x11a5db,_0x1b191c){return db[_0xb99b('0x27')][_0xb99b('0x48')]({'where':{'id':_0x11a5db['params']['id']}})[_0xb99b('0x24')](handleEntityNotFound(_0x1b191c,null))[_0xb99b('0x24')](removeEntity(_0x1b191c,null))['catch'](handleError(_0x1b191c,null));};
\ No newline at end of file
+var _0x6e4b=['nolimit','order','sort','where','filters','add','day','merge','filter','map','type','key','field','count','includeAll','findAll','catch','show','params','rawAttributes','include','options','find','create','body','html-pdf','eml-format','zip-dir','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','limit','status','set','Content-Range','json','apply','save','then','destroy','error','stack','name','send','index','OpenchannelApplication','model','dateStart','dateEnd','query','keys','attributes','intersection','fields','length','hasOwnProperty'];(function(_0x26a906,_0x3d135c){var _0x495575=function(_0x2365af){while(--_0x2365af){_0x26a906['push'](_0x26a906['shift']());}};_0x495575(++_0x3d135c);}(_0x6e4b,0x139));var _0xb6e4=function(_0x5f149a,_0x5a9a87){_0x5f149a=_0x5f149a-0x0;var _0x2d0bd8=_0x6e4b[_0x5f149a];return _0x2d0bd8;};'use strict';var pdf=require(_0xb6e4('0x0'));var emlformat=require(_0xb6e4('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xb6e4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb6e4('0x3'));var util=require(_0xb6e4('0x4'));var path=require(_0xb6e4('0x5'));var sox=require('sox');var csv=require(_0xb6e4('0x6'));var ejs=require(_0xb6e4('0x7'));var fs=require('fs');var _=require(_0xb6e4('0x8'));var squel=require(_0xb6e4('0x9'));var crypto=require(_0xb6e4('0xa'));var jsforce=require(_0xb6e4('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb6e4('0x6'));var querystring=require(_0xb6e4('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0xb6e4('0xd'));var logger=require(_0xb6e4('0xe'))(_0xb6e4('0xf'));var utils=require(_0xb6e4('0x10'));var config=require(_0xb6e4('0x11'));var db=require(_0xb6e4('0x12'))['db'];function respondWithStatusCode(_0x4b49bf,_0x17665b){_0x17665b=_0x17665b||0xcc;return function(_0x40f9af){if(_0x40f9af){return _0x4b49bf[_0xb6e4('0x13')](_0x17665b);}return _0x4b49bf['status'](_0x17665b)[_0xb6e4('0x14')]();};}function respondWithResult(_0x22b39f,_0x4690d4){_0x4690d4=_0x4690d4||0xc8;return function(_0x19a351){if(_0x19a351){return _0x22b39f['status'](_0x4690d4)['json'](_0x19a351);}};}function respondWithFilteredResult(_0x56c32b,_0xab3ef5){return function(_0x2e0dc3){if(_0x2e0dc3){var _0x163f70=_0x2e0dc3['count'],_0x81dad1=_0xab3ef5['offset'],_0x44230d=_0xab3ef5[_0xb6e4('0x15')]+_0xab3ef5[_0xb6e4('0x16')],_0x11ae26;if(_0x44230d>=_0x163f70){_0x44230d=_0x163f70;_0x11ae26=0xc8;}else{_0x11ae26=0xce;}_0x56c32b[_0xb6e4('0x17')](_0x11ae26);return _0x56c32b[_0xb6e4('0x18')](_0xb6e4('0x19'),_0x81dad1+'-'+_0x44230d+'/'+_0x163f70)[_0xb6e4('0x1a')](_0x2e0dc3);}return null;};}function patchUpdates(_0x4473ca){return function(_0x3b0eb5){try{jsonpatch[_0xb6e4('0x1b')](_0x3b0eb5,_0x4473ca,!![]);}catch(_0x40ec9f){return BPromise['reject'](_0x40ec9f);}return _0x3b0eb5[_0xb6e4('0x1c')]();};}function saveUpdates(_0x18476b,_0x58acb6){return function(_0x4e47f9){if(_0x4e47f9){return _0x4e47f9['update'](_0x18476b)[_0xb6e4('0x1d')](function(_0x489f8c){return _0x489f8c;});}return null;};}function removeEntity(_0x4c4307,_0x1c9ec3){return function(_0x136344){if(_0x136344){return _0x136344[_0xb6e4('0x1e')]()['then'](function(){_0x4c4307['status'](0xcc)[_0xb6e4('0x14')]();});}};}function handleEntityNotFound(_0xf3d5a2,_0x4ffa1e){return function(_0x17e29a){if(!_0x17e29a){_0xf3d5a2[_0xb6e4('0x13')](0x194);}return _0x17e29a;};}function handleError(_0x46bcc9,_0x4c408e){_0x4c408e=_0x4c408e||0x1f4;return function(_0x3d88ea){logger[_0xb6e4('0x1f')](_0x3d88ea[_0xb6e4('0x20')]);if(_0x3d88ea[_0xb6e4('0x21')]){delete _0x3d88ea[_0xb6e4('0x21')];}_0x46bcc9[_0xb6e4('0x17')](_0x4c408e)[_0xb6e4('0x22')](_0x3d88ea);};}exports[_0xb6e4('0x23')]=function(_0x1913c9,_0x5a7cac){var _0x2d66c0={},_0x351ac2={},_0x50802c={'count':0x0,'rows':[]};var _0x3b3612=db[_0xb6e4('0x24')]['rawAttributes'];_0x351ac2[_0xb6e4('0x25')]=_['keys'](_0x3b3612);var _0x1b2c3a={'dateStart':_0x1913c9['query'][_0xb6e4('0x26')],'dateEnd':_0x1913c9['query'][_0xb6e4('0x27')]};delete _0x1913c9['query'][_0xb6e4('0x26')];delete _0x1913c9['query'][_0xb6e4('0x27')];_0x351ac2[_0xb6e4('0x28')]=_[_0xb6e4('0x29')](_0x1913c9['query']);_0x351ac2['filters']=_['intersection'](_0x351ac2[_0xb6e4('0x25')],_0x351ac2[_0xb6e4('0x28')]);_0x2d66c0[_0xb6e4('0x2a')]=_[_0xb6e4('0x2b')](_0x351ac2['model'],qs[_0xb6e4('0x2c')](_0x1913c9[_0xb6e4('0x28')][_0xb6e4('0x2c')]));_0x2d66c0[_0xb6e4('0x2a')]=_0x2d66c0['attributes'][_0xb6e4('0x2d')]?_0x2d66c0['attributes']:_0x351ac2['model'];if(!_0x1913c9['query'][_0xb6e4('0x2e')](_0xb6e4('0x2f'))){_0x2d66c0['limit']=qs[_0xb6e4('0x16')](_0x1913c9[_0xb6e4('0x28')][_0xb6e4('0x16')]);_0x2d66c0[_0xb6e4('0x15')]=qs[_0xb6e4('0x15')](_0x1913c9[_0xb6e4('0x28')]['offset']);}_0x2d66c0[_0xb6e4('0x30')]=qs[_0xb6e4('0x31')](_0x1913c9['query'][_0xb6e4('0x31')]);_0x2d66c0[_0xb6e4('0x32')]=qs[_0xb6e4('0x33')](_['pick'](_0x1913c9['query'],_0x351ac2[_0xb6e4('0x33')]));if(_0x1b2c3a['dateStart']){if(_0x1b2c3a['dateEnd']){_0x1b2c3a[_0xb6e4('0x27')]=moment(_0x1b2c3a['dateEnd'])[_0xb6e4('0x34')](0x1,_0xb6e4('0x35'));}else{_0x1b2c3a[_0xb6e4('0x27')]=moment(_0x1b2c3a[_0xb6e4('0x26')])['add'](0x1,'day');}_[_0xb6e4('0x36')](_0x2d66c0['where'],{'createdAt':{'$gte':_0x1b2c3a[_0xb6e4('0x26')],'$lte':_0x1b2c3a['dateEnd']}});}if(_0x1913c9[_0xb6e4('0x28')][_0xb6e4('0x37')]){_0x2d66c0[_0xb6e4('0x32')]=_['merge'](_0x2d66c0[_0xb6e4('0x32')],{'$or':_[_0xb6e4('0x38')](_0x3b3612,function(_0x57d5ed){if(_0x57d5ed[_0xb6e4('0x39')][_0xb6e4('0x3a')]!=='VIRTUAL'){var _0x2f96ff={};_0x2f96ff[_0x57d5ed[_0xb6e4('0x3b')]]={'$like':'%'+_0x1913c9[_0xb6e4('0x28')]['filter']+'%'};return _0x2f96ff;}})});}_0x2d66c0=_[_0xb6e4('0x36')]({},_0x2d66c0,_0x1913c9['options']);var _0x2380e8={'where':_0x2d66c0[_0xb6e4('0x32')]};return db[_0xb6e4('0x24')]['count'](_0x2380e8)['then'](function(_0xae338f){_0x50802c[_0xb6e4('0x3c')]=_0xae338f;if(_0x1913c9[_0xb6e4('0x28')][_0xb6e4('0x3d')]){_0x2d66c0['include']=[{'all':!![]}];}return db[_0xb6e4('0x24')][_0xb6e4('0x3e')](_0x2d66c0);})[_0xb6e4('0x1d')](function(_0x109d94){_0x50802c['rows']=_0x109d94;return _0x50802c;})[_0xb6e4('0x1d')](respondWithFilteredResult(_0x5a7cac,_0x2d66c0))[_0xb6e4('0x3f')](handleError(_0x5a7cac,null));};exports[_0xb6e4('0x40')]=function(_0x31d147,_0x340473){var _0x163739={'raw':!![],'where':{'id':_0x31d147[_0xb6e4('0x41')]['id']}},_0x1ec542={};_0x1ec542['model']=_[_0xb6e4('0x29')](db['OpenchannelApplication'][_0xb6e4('0x42')]);_0x1ec542['query']=_['keys'](_0x31d147[_0xb6e4('0x28')]);_0x1ec542['filters']=_['intersection'](_0x1ec542['model'],_0x1ec542[_0xb6e4('0x28')]);_0x163739[_0xb6e4('0x2a')]=_[_0xb6e4('0x2b')](_0x1ec542[_0xb6e4('0x25')],qs[_0xb6e4('0x2c')](_0x31d147[_0xb6e4('0x28')][_0xb6e4('0x2c')]));_0x163739[_0xb6e4('0x2a')]=_0x163739[_0xb6e4('0x2a')][_0xb6e4('0x2d')]?_0x163739[_0xb6e4('0x2a')]:_0x1ec542['model'];if(_0x31d147[_0xb6e4('0x28')][_0xb6e4('0x3d')]){_0x163739[_0xb6e4('0x43')]=[{'all':!![]}];}_0x163739=_['merge']({},_0x163739,_0x31d147[_0xb6e4('0x44')]);return db['OpenchannelApplication'][_0xb6e4('0x45')](_0x163739)[_0xb6e4('0x1d')](handleEntityNotFound(_0x340473,null))[_0xb6e4('0x1d')](respondWithResult(_0x340473,null))['catch'](handleError(_0x340473,null));};exports[_0xb6e4('0x46')]=function(_0x213d41,_0xf764d5){return db[_0xb6e4('0x24')]['create'](_0x213d41[_0xb6e4('0x47')],{})[_0xb6e4('0x1d')](respondWithResult(_0xf764d5,0xc9))[_0xb6e4('0x3f')](handleError(_0xf764d5,null));};exports['update']=function(_0x198055,_0x496539){if(_0x198055[_0xb6e4('0x47')]['id']){delete _0x198055[_0xb6e4('0x47')]['id'];}return db[_0xb6e4('0x24')][_0xb6e4('0x45')]({'where':{'id':_0x198055['params']['id']}})[_0xb6e4('0x1d')](handleEntityNotFound(_0x496539,null))['then'](saveUpdates(_0x198055['body'],null))[_0xb6e4('0x1d')](respondWithResult(_0x496539,null))[_0xb6e4('0x3f')](handleError(_0x496539,null));};exports[_0xb6e4('0x1e')]=function(_0x1d7c4f,_0x2a879b){return db[_0xb6e4('0x24')]['find']({'where':{'id':_0x1d7c4f[_0xb6e4('0x41')]['id']}})[_0xb6e4('0x1d')](handleEntityNotFound(_0x2a879b,null))[_0xb6e4('0x1d')](removeEntity(_0x2a879b,null))['catch'](handleError(_0x2a879b,null));};
\ No newline at end of file
index 7093e4d..799c1b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5108=['OpenchannelApplication','openchannel_applications','lodash','util','api','moment','bluebird','request-promise','./openchannelApplication.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5108,0xb6));var _0x8510=function(_0x33cc79,_0x463c46){_0x33cc79=_0x33cc79-0x0;var _0x356451=_0x5108[_0x33cc79];return _0x356451;};'use strict';var _=require(_0x8510('0x0'));var util=require(_0x8510('0x1'));var logger=require('../../config/logger')(_0x8510('0x2'));var moment=require(_0x8510('0x3'));var BPromise=require(_0x8510('0x4'));var rp=require(_0x8510('0x5'));var attributes=require(_0x8510('0x6'));module[_0x8510('0x7')]=function(_0x403546,_0x5a6245){return _0x403546['define'](_0x8510('0x8'),attributes,{'tableName':_0x8510('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1495=['openchannel_applications','lodash','util','../../config/logger','api','bluebird','request-promise','exports','define','OpenchannelApplication'];(function(_0x503195,_0xe0dc3e){var _0x88762b=function(_0x31045e){while(--_0x31045e){_0x503195['push'](_0x503195['shift']());}};_0x88762b(++_0xe0dc3e);}(_0x1495,0x6f));var _0x5149=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1495[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x5149('0x0'));var util=require(_0x5149('0x1'));var logger=require(_0x5149('0x2'))(_0x5149('0x3'));var moment=require('moment');var BPromise=require(_0x5149('0x4'));var rp=require(_0x5149('0x5'));var attributes=require('./openchannelApplication.attributes');module[_0x5149('0x6')]=function(_0x14369b,_0x3828e9){return _0x14369b[_0x5149('0x7')](_0x5149('0x8'),attributes,{'tableName':_0x5149('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f7d7903..a19bf78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc392=['request','then','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelApplication,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','body','options','limit','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x1e5cc3,_0x238a87){var _0x15c596=function(_0x27bb04){while(--_0x27bb04){_0x1e5cc3['push'](_0x1e5cc3['shift']());}};_0x15c596(++_0x238a87);}(_0xc392,0x13b));var _0x2c39=function(_0x1b13c3,_0x2368ac){_0x1b13c3=_0x1b13c3-0x0;var _0x15e8dc=_0xc392[_0x1b13c3];return _0x15e8dc;};'use strict';var _=require('lodash');var util=require(_0x2c39('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2c39('0x1'));var db=require(_0x2c39('0x2'))['db'];var utils=require(_0x2c39('0x3'));var logger=require(_0x2c39('0x4'))(_0x2c39('0x5'));var config=require(_0x2c39('0x6'));var jayson=require(_0x2c39('0x7'));var client=jayson['client'][_0x2c39('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5ee9d5,_0x19f4db,_0x509ec8){return new BPromise(function(_0x45c56f,_0x19dd38){return client[_0x2c39('0x9')](_0x5ee9d5,_0x509ec8)[_0x2c39('0xa')](function(_0x2b8e88){logger[_0x2c39('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0x19f4db,_0x2c39('0xc'));logger[_0x2c39('0xd')](_0x2c39('0xe'),_0x19f4db,_0x2c39('0xc'),JSON[_0x2c39('0xf')](_0x2b8e88));if(_0x2b8e88[_0x2c39('0x10')]){if(_0x2b8e88[_0x2c39('0x10')][_0x2c39('0x11')]===0x1f4){logger[_0x2c39('0x10')](_0x2c39('0x12'),_0x19f4db,_0x2b8e88['error'][_0x2c39('0x13')]);return _0x19dd38(_0x2b8e88[_0x2c39('0x10')][_0x2c39('0x13')]);}logger[_0x2c39('0x10')](_0x2c39('0x12'),_0x19f4db,_0x2b8e88['error']['message']);return _0x45c56f(_0x2b8e88['error'][_0x2c39('0x13')]);}else{logger['info'](_0x2c39('0x12'),_0x19f4db,'request\x20sent');_0x45c56f(_0x2b8e88[_0x2c39('0x14')]['message']);}})[_0x2c39('0x15')](function(_0x8b7d15){logger[_0x2c39('0x10')]('OpenchannelApplication,\x20%s,\x20%s',_0x19f4db,_0x8b7d15);_0x19dd38(_0x8b7d15);});});}exports[_0x2c39('0x16')]=function(_0x5b0764){var _0x1646c1=this;return new Promise(function(_0x3cb8d6,_0x1db426){return db[_0x2c39('0x17')]['update'](_0x5b0764[_0x2c39('0x18')],{'raw':_0x5b0764[_0x2c39('0x19')]?_0x5b0764['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b0764['options']?_0x5b0764[_0x2c39('0x19')]['where']||null:null,'attributes':_0x5b0764['options']?_0x5b0764[_0x2c39('0x19')]['attributes']||null:null,'limit':_0x5b0764['options']?_0x5b0764[_0x2c39('0x19')][_0x2c39('0x1a')]||null:null})[_0x2c39('0xa')](function(_0x3d7cb5){logger['info'](_0x2c39('0x16'),_0x5b0764);logger[_0x2c39('0xd')](_0x2c39('0x16'),_0x5b0764,JSON[_0x2c39('0xf')](_0x3d7cb5));_0x3cb8d6(_0x3d7cb5);})[_0x2c39('0x15')](function(_0x69ce1a){logger[_0x2c39('0x10')](_0x2c39('0x16'),_0x69ce1a[_0x2c39('0x13')],_0x5b0764);_0x1db426(_0x1646c1[_0x2c39('0x10')](0x1f4,_0x69ce1a[_0x2c39('0x13')]));});});};
\ No newline at end of file
+var _0x6a58=['http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','UpdateOpenchannelApplication','update','options','raw','where','limit','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2e042d,_0x192c48){var _0x1f7171=function(_0x178b22){while(--_0x178b22){_0x2e042d['push'](_0x2e042d['shift']());}};_0x1f7171(++_0x192c48);}(_0x6a58,0x120));var _0x86a5=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x6a58[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x86a5('0x0'));var util=require(_0x86a5('0x1'));var moment=require('moment');var BPromise=require(_0x86a5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x86a5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x86a5('0x4'));var logger=require(_0x86a5('0x5'))(_0x86a5('0x6'));var config=require(_0x86a5('0x7'));var jayson=require(_0x86a5('0x8'));var client=jayson['client'][_0x86a5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd0a4f4,_0x5749e8,_0x425c8f){return new BPromise(function(_0xe98bdc,_0x43a1a2){return client[_0x86a5('0xa')](_0xd0a4f4,_0x425c8f)[_0x86a5('0xb')](function(_0x3084f3){logger[_0x86a5('0xc')](_0x86a5('0xd'),_0x5749e8,_0x86a5('0xe'));logger[_0x86a5('0xf')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x5749e8,'request\x20sent',JSON[_0x86a5('0x10')](_0x3084f3));if(_0x3084f3['error']){if(_0x3084f3[_0x86a5('0x11')][_0x86a5('0x12')]===0x1f4){logger['error'](_0x86a5('0xd'),_0x5749e8,_0x3084f3[_0x86a5('0x11')]['message']);return _0x43a1a2(_0x3084f3[_0x86a5('0x11')][_0x86a5('0x13')]);}logger['error'](_0x86a5('0xd'),_0x5749e8,_0x3084f3[_0x86a5('0x11')][_0x86a5('0x13')]);return _0xe98bdc(_0x3084f3[_0x86a5('0x11')][_0x86a5('0x13')]);}else{logger['info']('OpenchannelApplication,\x20%s,\x20%s',_0x5749e8,_0x86a5('0xe'));_0xe98bdc(_0x3084f3['result'][_0x86a5('0x13')]);}})[_0x86a5('0x14')](function(_0x69a6ec){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0x5749e8,_0x69a6ec);_0x43a1a2(_0x69a6ec);});});}exports[_0x86a5('0x15')]=function(_0x173005){var _0x146327=this;return new Promise(function(_0x130048,_0x3628a2){return db['OpenchannelApplication'][_0x86a5('0x16')](_0x173005['body'],{'raw':_0x173005[_0x86a5('0x17')]?_0x173005[_0x86a5('0x17')][_0x86a5('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x173005[_0x86a5('0x17')]?_0x173005[_0x86a5('0x17')][_0x86a5('0x19')]||null:null,'attributes':_0x173005[_0x86a5('0x17')]?_0x173005[_0x86a5('0x17')]['attributes']||null:null,'limit':_0x173005['options']?_0x173005[_0x86a5('0x17')][_0x86a5('0x1a')]||null:null})['then'](function(_0x5cc8f0){logger['info'](_0x86a5('0x15'),_0x173005);logger[_0x86a5('0xf')](_0x86a5('0x15'),_0x173005,JSON['stringify'](_0x5cc8f0));_0x130048(_0x5cc8f0);})['catch'](function(_0x2a9dee){logger[_0x86a5('0x11')](_0x86a5('0x15'),_0x2a9dee['message'],_0x173005);_0x3628a2(_0x146327[_0x86a5('0x11')](0x1f4,_0x2a9dee['message']));});});};
\ No newline at end of file
index 10faa73..ccfe921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb19=['/:id','/:id/messages','getMessages','download','create','addMessage','post','tracked','openchannel','addTags','put','update','delete','/:id/tags','removeTags','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','get','/describe','isAuthenticated','describe'];(function(_0x5e4b85,_0x6cf965){var _0x5cd3cb=function(_0x589c9e){while(--_0x589c9e){_0x5e4b85['push'](_0x5e4b85['shift']());}};_0x5cd3cb(++_0x6cf965);}(_0xfb19,0x64));var _0x9fb1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfb19[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x9fb1('0x0'));var util=require('util');var path=require(_0x9fb1('0x1'));var timeout=require(_0x9fb1('0x2'));var express=require(_0x9fb1('0x3'));var router=express[_0x9fb1('0x4')]();var auth=require(_0x9fb1('0x5'));var interaction=require(_0x9fb1('0x6'));var config=require('../../config/environment');var controller=require(_0x9fb1('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x9fb1('0x8')](_0x9fb1('0x9'),auth[_0x9fb1('0xa')](),controller[_0x9fb1('0xb')]);router['get'](_0x9fb1('0xc'),auth[_0x9fb1('0xa')](),controller['show']);router[_0x9fb1('0x8')](_0x9fb1('0xd'),auth[_0x9fb1('0xa')](),controller[_0x9fb1('0xe')]);router['get']('/:id/download',auth[_0x9fb1('0xa')](),controller[_0x9fb1('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9fb1('0x10')]);router['post'](_0x9fb1('0xd'),auth[_0x9fb1('0xa')](),controller[_0x9fb1('0x11')]);router[_0x9fb1('0x12')]('/:id/tags',auth[_0x9fb1('0xa')](),interaction[_0x9fb1('0x13')](_0x9fb1('0x14'),'openchannelinteraction:addtags'),controller[_0x9fb1('0x15')]);router[_0x9fb1('0x16')](_0x9fb1('0xc'),auth[_0x9fb1('0xa')](),interaction[_0x9fb1('0x13')]('openchannel','openchannelinteraction:update'),controller[_0x9fb1('0x17')]);router[_0x9fb1('0x18')](_0x9fb1('0xc'),auth['isAuthenticated'](),interaction['tracked'](_0x9fb1('0x14'),'openchannelinteraction:destroy'),controller['destroy']);router[_0x9fb1('0x18')](_0x9fb1('0x19'),auth[_0x9fb1('0xa')](),controller[_0x9fb1('0x1a')]);module[_0x9fb1('0x1b')]=router;
\ No newline at end of file
+var _0x9de4=['/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','update','delete','openchannelinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','getMessages','/:id/download','download','post','/:id/messages','addMessage'];(function(_0x34aaa1,_0x30e563){var _0x85c43f=function(_0x10e8da){while(--_0x10e8da){_0x34aaa1['push'](_0x34aaa1['shift']());}};_0x85c43f(++_0x30e563);}(_0x9de4,0xfb));var _0x49de=function(_0x5610df,_0x2831f5){_0x5610df=_0x5610df-0x0;var _0x404e73=_0x9de4[_0x5610df];return _0x404e73;};'use strict';var multer=require(_0x49de('0x0'));var util=require(_0x49de('0x1'));var path=require(_0x49de('0x2'));var timeout=require(_0x49de('0x3'));var express=require(_0x49de('0x4'));var router=express['Router']();var auth=require(_0x49de('0x5'));var interaction=require(_0x49de('0x6'));var config=require(_0x49de('0x7'));var controller=require('./openchannelInteraction.controller');router['get']('/',auth[_0x49de('0x8')](),controller[_0x49de('0x9')]);router[_0x49de('0xa')](_0x49de('0xb'),auth[_0x49de('0x8')](),controller[_0x49de('0xc')]);router[_0x49de('0xa')](_0x49de('0xd'),auth[_0x49de('0x8')](),controller[_0x49de('0xe')]);router[_0x49de('0xa')]('/:id/messages',auth[_0x49de('0x8')](),controller[_0x49de('0xf')]);router['get'](_0x49de('0x10'),auth[_0x49de('0x8')](),controller[_0x49de('0x11')]);router[_0x49de('0x12')]('/',auth[_0x49de('0x8')](),controller['create']);router[_0x49de('0x12')](_0x49de('0x13'),auth[_0x49de('0x8')](),controller[_0x49de('0x14')]);router[_0x49de('0x12')](_0x49de('0x15'),auth['isAuthenticated'](),interaction[_0x49de('0x16')](_0x49de('0x17'),_0x49de('0x18')),controller[_0x49de('0x19')]);router[_0x49de('0x1a')](_0x49de('0xd'),auth[_0x49de('0x8')](),interaction[_0x49de('0x16')]('openchannel',_0x49de('0x1b')),controller[_0x49de('0x1c')]);router[_0x49de('0x1d')](_0x49de('0xd'),auth[_0x49de('0x8')](),interaction[_0x49de('0x16')](_0x49de('0x17'),_0x49de('0x1e')),controller[_0x49de('0x1f')]);router[_0x49de('0x1d')](_0x49de('0x15'),auth[_0x49de('0x8')](),controller[_0x49de('0x20')]);module[_0x49de('0x21')]=router;
\ No newline at end of file
index c21508b..046555c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0506=['sequelize','exports','BOOLEAN','STRING','DATE'];(function(_0xcfed91,_0x29b51b){var _0x42e245=function(_0x1a131c){while(--_0x1a131c){_0xcfed91['push'](_0xcfed91['shift']());}};_0x42e245(++_0x29b51b);}(_0x0506,0x1d1));var _0x6050=function(_0x437d88,_0x37dbe6){_0x437d88=_0x437d88-0x0;var _0xca9f2d=_0x0506[_0x437d88];return _0xca9f2d;};'use strict';var Sequelize=require(_0x6050('0x0'));module[_0x6050('0x1')]={'closed':{'type':Sequelize[_0x6050('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x6050('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x6050('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x6050('0x3')]}};
\ No newline at end of file
+var _0x4c6d=['ENUM','out','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0xfc4a88,_0x546f2a){var _0x3d54b3=function(_0x9c859d){while(--_0x9c859d){_0xfc4a88['push'](_0xfc4a88['shift']());}};_0x3d54b3(++_0x546f2a);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x5cdfa4,_0x400cfa){_0x5cdfa4=_0x5cdfa4-0x0;var _0x598cec=_0x4c6d[_0x5cdfa4];return _0x598cec;};'use strict';var Sequelize=require(_0xd4c6('0x0'));module[_0xd4c6('0x1')]={'closed':{'type':Sequelize[_0xd4c6('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xd4c6('0x3')]},'disposition':{'type':Sequelize[_0xd4c6('0x4')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xd4c6('0x3')]},'threadId':{'type':Sequelize[_0xd4c6('0x4')]},'externalUrl':{'type':Sequelize[_0xd4c6('0x4')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xd4c6('0x5')]('in',_0xd4c6('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 30ab4e4..43d22b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbdd=['rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','nolimit','order','sort','where','day','merge','filter','map','type','key','VIRTUAL','field','options','include','push','Tags','tag','distinct','read','OpenchannelMessage','Messages','direction','includeAll','User','Users','fullname','CmContact','Contact','Owner','internal','OpenchannelAccount','Account','createdAt','Tag','color','ThroughTags','catch','show','params','find','create','body','describe','addMessage','omit','ids','getMessages','hasOwnProperty','pick','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','setTags','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','attachments','firstName','Attachment','Letter','<h1>Openchannel\x20Interaction:\x20#%d</h1>','<h2>Date:\x20%s</h2>','MMMM\x20Do\x20YYYY,\x20HH:mm:ss','<hr>','<div\x20style=\x22border-style:\x20solid;\x20border-width:\x201px;\x20margin:\x203px;\x22>','basename','existsSync','createReadStream','pipe','createWriteStream','toFile','.pdf','log','unlinkSync','html-pdf','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','end','status','count','offset','limit','json','apply','save','update','then','destroy','error','stack','name','send','index','OpenchannelInteraction'];(function(_0x4fa010,_0x17d350){var _0x32ddce=function(_0xc2381a){while(--_0xc2381a){_0x4fa010['push'](_0x4fa010['shift']());}};_0x32ddce(++_0x17d350);}(_0xcbdd,0xec));var _0xdcbd=function(_0x78911b,_0x3f4a40){_0x78911b=_0x78911b-0x0;var _0x2538eb=_0xcbdd[_0x78911b];return _0x2538eb;};'use strict';var pdf=require(_0xdcbd('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xdcbd('0x1'));var zipdir=require(_0xdcbd('0x2'));var jsonpatch=require(_0xdcbd('0x3'));var rp=require('request-promise');var moment=require(_0xdcbd('0x4'));var BPromise=require(_0xdcbd('0x5'));var Mustache=require(_0xdcbd('0x6'));var util=require('util');var path=require(_0xdcbd('0x7'));var sox=require('sox');var csv=require(_0xdcbd('0x8'));var ejs=require(_0xdcbd('0x9'));var fs=require('fs');var _=require(_0xdcbd('0xa'));var squel=require(_0xdcbd('0xb'));var crypto=require(_0xdcbd('0xc'));var jsforce=require(_0xdcbd('0xd'));var deskjs=require(_0xdcbd('0xe'));var toCsv=require(_0xdcbd('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xdcbd('0xf'));var qs=require(_0xdcbd('0x10'));var logger=require(_0xdcbd('0x11'))(_0xdcbd('0x12'));var utils=require(_0xdcbd('0x13'));var config=require(_0xdcbd('0x14'));var db=require(_0xdcbd('0x15'))['db'];config[_0xdcbd('0x16')]=_[_0xdcbd('0x17')](config[_0xdcbd('0x16')],{'host':_0xdcbd('0x18'),'port':0x18eb});var socket=require(_0xdcbd('0x19'))(new Redis(config[_0xdcbd('0x16')]));require(_0xdcbd('0x1a'))[_0xdcbd('0x1b')](socket);function respondWithStatusCode(_0x331d8,_0x42aa44){_0x42aa44=_0x42aa44||0xcc;return function(_0x13f934){if(_0x13f934){return _0x331d8[_0xdcbd('0x1c')](_0x42aa44);}return _0x331d8['status'](_0x42aa44)[_0xdcbd('0x1d')]();};}function respondWithResult(_0x2b984f,_0x3fe1ad){_0x3fe1ad=_0x3fe1ad||0xc8;return function(_0x32c841){if(_0x32c841){return _0x2b984f[_0xdcbd('0x1e')](_0x3fe1ad)['json'](_0x32c841);}};}function respondWithFilteredResult(_0x34df49,_0x5dd38d){return function(_0x2ab84c){if(_0x2ab84c){var _0x5a4cc2=_0x2ab84c[_0xdcbd('0x1f')],_0x55b094=_0x5dd38d['offset'],_0x375c6f=_0x5dd38d[_0xdcbd('0x20')]+_0x5dd38d[_0xdcbd('0x21')],_0x4c3de0;if(_0x375c6f>=_0x5a4cc2){_0x375c6f=_0x5a4cc2;_0x4c3de0=0xc8;}else{_0x4c3de0=0xce;}_0x34df49[_0xdcbd('0x1e')](_0x4c3de0);return _0x34df49['set']('Content-Range',_0x55b094+'-'+_0x375c6f+'/'+_0x5a4cc2)[_0xdcbd('0x22')](_0x2ab84c);}return null;};}function patchUpdates(_0x2d4e2d){return function(_0x328c4f){try{jsonpatch[_0xdcbd('0x23')](_0x328c4f,_0x2d4e2d,!![]);}catch(_0x51f41e){return BPromise['reject'](_0x51f41e);}return _0x328c4f[_0xdcbd('0x24')]();};}function saveUpdates(_0x404a9b,_0x507ec1){return function(_0x4cf049){if(_0x4cf049){return _0x4cf049[_0xdcbd('0x25')](_0x404a9b)[_0xdcbd('0x26')](function(_0x508740){return _0x508740;});}return null;};}function removeEntity(_0x216fe7,_0xd389b6){return function(_0x3a354c){if(_0x3a354c){return _0x3a354c[_0xdcbd('0x27')]()[_0xdcbd('0x26')](function(){_0x216fe7[_0xdcbd('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x328da8,_0x44c610){return function(_0x503294){if(!_0x503294){_0x328da8[_0xdcbd('0x1c')](0x194);}return _0x503294;};}function handleError(_0x5e7bcb,_0x166579){_0x166579=_0x166579||0x1f4;return function(_0x19617d){logger[_0xdcbd('0x28')](_0x19617d[_0xdcbd('0x29')]);if(_0x19617d[_0xdcbd('0x2a')]){delete _0x19617d['name'];}_0x5e7bcb['status'](_0x166579)[_0xdcbd('0x2b')](_0x19617d);};}exports[_0xdcbd('0x2c')]=function(_0x56661c,_0x285100){var _0x13bf63={},_0x32900d={},_0x11e7c6={'count':0x0,'rows':[]};var _0x493311=db[_0xdcbd('0x2d')][_0xdcbd('0x2e')];_0x32900d[_0xdcbd('0x2f')]=_[_0xdcbd('0x30')](_0x493311);var _0x1f2781={'dateStart':_0x56661c['query'][_0xdcbd('0x31')],'dateEnd':_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x33')]};delete _0x56661c[_0xdcbd('0x32')][_0xdcbd('0x31')];delete _0x56661c[_0xdcbd('0x32')][_0xdcbd('0x33')];_0x32900d[_0xdcbd('0x32')]=_[_0xdcbd('0x30')](_0x56661c[_0xdcbd('0x32')]);_0x32900d[_0xdcbd('0x34')]=_[_0xdcbd('0x35')](_0x32900d['model'],_0x32900d['query']);_0x13bf63[_0xdcbd('0x36')]=_[_0xdcbd('0x35')](_0x32900d['model'],qs[_0xdcbd('0x37')](_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x37')]));_0x13bf63[_0xdcbd('0x36')]=_0x13bf63['attributes'][_0xdcbd('0x38')]?_0x13bf63[_0xdcbd('0x36')]:_0x32900d[_0xdcbd('0x2f')];if(!_0x56661c[_0xdcbd('0x32')]['hasOwnProperty'](_0xdcbd('0x39'))){_0x13bf63[_0xdcbd('0x21')]=qs['limit'](_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x21')]);_0x13bf63[_0xdcbd('0x20')]=qs[_0xdcbd('0x20')](_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x20')]);}_0x13bf63[_0xdcbd('0x3a')]=qs[_0xdcbd('0x3b')](_0x56661c['query'][_0xdcbd('0x3b')]);_0x13bf63[_0xdcbd('0x3c')]=qs[_0xdcbd('0x34')](_['pick'](_0x56661c['query'],_0x32900d[_0xdcbd('0x34')]));if(_0x1f2781[_0xdcbd('0x31')]){if(_0x1f2781[_0xdcbd('0x33')]){_0x1f2781[_0xdcbd('0x33')]=moment(_0x1f2781[_0xdcbd('0x33')])['add'](0x1,_0xdcbd('0x3d'));}else{_0x1f2781[_0xdcbd('0x33')]=moment(_0x1f2781[_0xdcbd('0x31')])['add'](0x1,_0xdcbd('0x3d'));}_[_0xdcbd('0x3e')](_0x13bf63[_0xdcbd('0x3c')],{'createdAt':{'$gte':_0x1f2781[_0xdcbd('0x31')],'$lte':_0x1f2781[_0xdcbd('0x33')]}});}if(_0x56661c['query'][_0xdcbd('0x3f')]){_0x13bf63[_0xdcbd('0x3c')]=_[_0xdcbd('0x3e')](_0x13bf63[_0xdcbd('0x3c')],{'$or':_[_0xdcbd('0x40')](_0x493311,function(_0x248cf3){if(_0x248cf3[_0xdcbd('0x41')][_0xdcbd('0x42')]!==_0xdcbd('0x43')){var _0x12a8fd={};_0x12a8fd[_0x248cf3[_0xdcbd('0x44')]]={'$like':'%'+_0x56661c['query']['filter']+'%'};return _0x12a8fd;}})});}_0x13bf63=_[_0xdcbd('0x3e')]({},_0x13bf63,_0x56661c[_0xdcbd('0x45')]);var _0x42f975={'where':_0x13bf63[_0xdcbd('0x3c')]};_0x42f975[_0xdcbd('0x46')]=[];if(_0x56661c[_0xdcbd('0x32')]['tag']){_0x42f975[_0xdcbd('0x46')][_0xdcbd('0x47')]({'model':db['Tag'],'as':_0xdcbd('0x48'),'attributes':['id'],'where':{'id':_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x49')]},'required':!![]});_0x42f975[_0xdcbd('0x4a')]=!![];}if(_0x56661c['query'][_0xdcbd('0x4b')]){_0x42f975['include']['push']({'model':db[_0xdcbd('0x4c')],'as':_0xdcbd('0x4d'),'attributes':['id',_0xdcbd('0x4e'),'createdAt',_0xdcbd('0x4b')],'where':{'direction':'in','read':_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x4b')]||![]},'required':!![]});_0x42f975[_0xdcbd('0x4a')]=!![];}return db[_0xdcbd('0x2d')]['count'](_0x42f975)[_0xdcbd('0x26')](function(_0x29c7c7){_0x11e7c6[_0xdcbd('0x1f')]=_0x29c7c7;if(_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x4f')]){_0x13bf63[_0xdcbd('0x46')]=[{'model':db[_0xdcbd('0x50')],'as':_0xdcbd('0x51'),'required':![],'attributes':['id',_0xdcbd('0x2a'),_0xdcbd('0x52')]},{'model':db[_0xdcbd('0x53')],'as':_0xdcbd('0x54'),'required':![]},{'model':db['User'],'as':_0xdcbd('0x55'),'attributes':['name',_0xdcbd('0x52'),_0xdcbd('0x56')],'required':![]},{'model':db[_0xdcbd('0x57')],'as':_0xdcbd('0x58'),'attributes':[_0xdcbd('0x2a'),_0xdcbd('0x42')],'required':![]},{'model':db[_0xdcbd('0x4c')],'as':'Messages','attributes':['id','direction',_0xdcbd('0x59'),_0xdcbd('0x4b')],'where':{'direction':'in','read':_0x56661c['query'][_0xdcbd('0x4b')]||![]},'required':_0x56661c[_0xdcbd('0x32')]['read']||![]},{'model':db[_0xdcbd('0x5a')],'as':_0xdcbd('0x48'),'attributes':['id','name',_0xdcbd('0x5b')],'required':_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x49')]?!![]:![]},{'model':db[_0xdcbd('0x5a')],'as':_0xdcbd('0x5c'),'attributes':['id',_0xdcbd('0x2a'),'color'],'through':_0x56661c[_0xdcbd('0x32')]['tag']?{'attributes':[],'where':{'TagId':_0x56661c[_0xdcbd('0x32')]['tag']||undefined}}:{},'required':_0x56661c[_0xdcbd('0x32')][_0xdcbd('0x49')]?!![]:![]}];}return db[_0xdcbd('0x2d')]['findAll'](_0x13bf63);})[_0xdcbd('0x26')](function(_0x39da5b){_0x11e7c6['rows']=_0x39da5b;return _0x11e7c6;})['then'](respondWithFilteredResult(_0x285100,_0x13bf63))[_0xdcbd('0x5d')](handleError(_0x285100,null));};exports[_0xdcbd('0x5e')]=function(_0x57125d,_0x2ed99c){var _0xc64680={'raw':![],'where':{'id':_0x57125d[_0xdcbd('0x5f')]['id']}},_0x31cbc1={};_0x31cbc1['model']=_['keys'](db[_0xdcbd('0x2d')][_0xdcbd('0x2e')]);_0x31cbc1['query']=_[_0xdcbd('0x30')](_0x57125d[_0xdcbd('0x32')]);_0x31cbc1[_0xdcbd('0x34')]=_[_0xdcbd('0x35')](_0x31cbc1[_0xdcbd('0x2f')],_0x31cbc1[_0xdcbd('0x32')]);_0xc64680[_0xdcbd('0x36')]=_[_0xdcbd('0x35')](_0x31cbc1[_0xdcbd('0x2f')],qs[_0xdcbd('0x37')](_0x57125d[_0xdcbd('0x32')][_0xdcbd('0x37')]));_0xc64680[_0xdcbd('0x36')]=_0xc64680[_0xdcbd('0x36')]['length']?_0xc64680[_0xdcbd('0x36')]:_0x31cbc1[_0xdcbd('0x2f')];if(_0x57125d[_0xdcbd('0x32')][_0xdcbd('0x4f')]){_0xc64680[_0xdcbd('0x46')]=[{'all':!![]}];}_0xc64680=_['merge']({},_0xc64680,_0x57125d[_0xdcbd('0x45')]);return db[_0xdcbd('0x2d')][_0xdcbd('0x60')](_0xc64680)[_0xdcbd('0x26')](handleEntityNotFound(_0x2ed99c,null))[_0xdcbd('0x26')](respondWithResult(_0x2ed99c,null))[_0xdcbd('0x5d')](handleError(_0x2ed99c,null));};exports[_0xdcbd('0x61')]=function(_0x3ce0c3,_0x14af14){return db[_0xdcbd('0x2d')][_0xdcbd('0x61')](_0x3ce0c3[_0xdcbd('0x62')],{})[_0xdcbd('0x26')](respondWithResult(_0x14af14,0xc9))[_0xdcbd('0x5d')](handleError(_0x14af14,null));};exports[_0xdcbd('0x25')]=function(_0x343fff,_0x25267e){if(_0x343fff[_0xdcbd('0x62')]['id']){delete _0x343fff[_0xdcbd('0x62')]['id'];}return db[_0xdcbd('0x2d')][_0xdcbd('0x60')]({'where':{'id':_0x343fff[_0xdcbd('0x5f')]['id']}})[_0xdcbd('0x26')](handleEntityNotFound(_0x25267e,null))[_0xdcbd('0x26')](saveUpdates(_0x343fff[_0xdcbd('0x62')],null))[_0xdcbd('0x26')](respondWithResult(_0x25267e,null))['catch'](handleError(_0x25267e,null));};exports[_0xdcbd('0x27')]=function(_0x1fe7f7,_0x9b446c){return db[_0xdcbd('0x2d')][_0xdcbd('0x60')]({'where':{'id':_0x1fe7f7[_0xdcbd('0x5f')]['id']}})['then'](handleEntityNotFound(_0x9b446c,null))[_0xdcbd('0x26')](removeEntity(_0x9b446c,null))['catch'](handleError(_0x9b446c,null));};exports[_0xdcbd('0x63')]=function(_0x214f5a,_0x2423ca){return db[_0xdcbd('0x2d')][_0xdcbd('0x63')]()[_0xdcbd('0x26')](respondWithResult(_0x2423ca,null))[_0xdcbd('0x5d')](handleError(_0x2423ca,null));};exports[_0xdcbd('0x64')]=function(_0x3bacd0,_0x43765b,_0x50e779){return db[_0xdcbd('0x4c')][_0xdcbd('0x60')]({'where':{'id':_0x3bacd0[_0xdcbd('0x5f')]['id']}})[_0xdcbd('0x26')](handleEntityNotFound(_0x43765b,null))['then'](function(_0x3fb06d){if(_0x3fb06d){return _0x3fb06d[_0xdcbd('0x64')](_0x3bacd0[_0xdcbd('0x62')]['ids'],_[_0xdcbd('0x65')](_0x3bacd0['body'],[_0xdcbd('0x66'),'id'])||{});}})['then'](respondWithResult(_0x43765b,null))[_0xdcbd('0x5d')](handleError(_0x43765b,null));};exports[_0xdcbd('0x67')]=function(_0x55e5ab,_0x311ca5,_0x42bc54){var _0x14c58f={'raw':![],'where':{}};var _0x368f48={};var _0x1feeb8={'count':0x0,'rows':[]};return db[_0xdcbd('0x2d')]['findOne']({'where':{'id':_0x55e5ab[_0xdcbd('0x5f')]['id']}})[_0xdcbd('0x26')](handleEntityNotFound(_0x311ca5,null))[_0xdcbd('0x26')](function(_0x5352b4){if(_0x5352b4){_0x368f48[_0xdcbd('0x2f')]=_[_0xdcbd('0x30')](db[_0xdcbd('0x4c')][_0xdcbd('0x2e')]);_0x368f48[_0xdcbd('0x32')]=_['keys'](_0x55e5ab[_0xdcbd('0x32')]);_0x368f48[_0xdcbd('0x34')]=_[_0xdcbd('0x35')](_0x368f48[_0xdcbd('0x2f')],_0x368f48[_0xdcbd('0x32')]);_0x14c58f[_0xdcbd('0x36')]=_[_0xdcbd('0x35')](_0x368f48[_0xdcbd('0x2f')],qs[_0xdcbd('0x37')](_0x55e5ab['query'][_0xdcbd('0x37')]));_0x14c58f[_0xdcbd('0x36')]=_0x14c58f[_0xdcbd('0x36')]['length']?_0x14c58f[_0xdcbd('0x36')]:_0x368f48['model'];if(!_0x55e5ab[_0xdcbd('0x32')][_0xdcbd('0x68')](_0xdcbd('0x39'))){_0x14c58f[_0xdcbd('0x21')]=qs[_0xdcbd('0x21')](_0x55e5ab[_0xdcbd('0x32')]['limit']);_0x14c58f['offset']=qs['offset'](_0x55e5ab[_0xdcbd('0x32')][_0xdcbd('0x20')]);}_0x14c58f[_0xdcbd('0x3a')]=qs['sort'](_0x55e5ab[_0xdcbd('0x32')]['sort']);_0x14c58f[_0xdcbd('0x3c')]=qs[_0xdcbd('0x34')](_[_0xdcbd('0x69')](_0x55e5ab[_0xdcbd('0x32')],_0x368f48[_0xdcbd('0x34')]));_0x14c58f['where']['OpenchannelInteractionId']=_0x5352b4['id'];if(_0x55e5ab[_0xdcbd('0x32')]['filter']){_0x14c58f['where']=_[_0xdcbd('0x3e')](_0x14c58f[_0xdcbd('0x3c')],{'$or':_[_0xdcbd('0x40')](_0x14c58f[_0xdcbd('0x36')],function(_0x2becbb){var _0x276c53={};_0x276c53[_0x2becbb]={'$like':'%'+_0x55e5ab[_0xdcbd('0x32')]['filter']+'%'};return _0x276c53;})});}if(_0x55e5ab[_0xdcbd('0x32')][_0xdcbd('0x6a')]){var _0x2ab0c0=_0x55e5ab['query'][_0xdcbd('0x6a')][_0xdcbd('0x6b')](',');var _0x417bf8={};_0x417bf8[_0x2ab0c0[0x0]]={'$gte':moment(_0x2ab0c0[0x1])[_0xdcbd('0x6c')](_0xdcbd('0x6d'))};_0x14c58f[_0xdcbd('0x3c')]=_[_0xdcbd('0x3e')](_0x14c58f[_0xdcbd('0x3c')],_0x417bf8);}_0x14c58f=_['merge']({},_0x14c58f,_0x55e5ab[_0xdcbd('0x45')]);return db[_0xdcbd('0x4c')]['count']({'where':_0x14c58f[_0xdcbd('0x3c')]})[_0xdcbd('0x26')](function(_0x3e3c67){_0x1feeb8[_0xdcbd('0x1f')]=_0x3e3c67;if(_0x55e5ab[_0xdcbd('0x32')][_0xdcbd('0x4f')]){_0x14c58f[_0xdcbd('0x46')]=[{'all':!![]}];}return db[_0xdcbd('0x4c')][_0xdcbd('0x6e')](_0x14c58f);})['then'](function(_0xff04d2){_0x1feeb8[_0xdcbd('0x6f')]=_0xff04d2;return _0x1feeb8;});}})['then'](respondWithFilteredResult(_0x311ca5,_0x14c58f))[_0xdcbd('0x5d')](handleError(_0x311ca5,null));};exports['addTags']=function(_0x3cec79,_0x73fa9,_0x57324d){return db['OpenchannelInteraction'][_0xdcbd('0x60')]({'where':{'id':_0x3cec79[_0xdcbd('0x5f')]['id']}})[_0xdcbd('0x26')](handleEntityNotFound(_0x73fa9,null))[_0xdcbd('0x26')](function(_0x3de36f){if(_0x3de36f){return _0x3de36f[_0xdcbd('0x70')](_0x3cec79[_0xdcbd('0x62')][_0xdcbd('0x66')],_[_0xdcbd('0x65')](_0x3cec79['body'],['ids','id'])||{})['spread'](function(){return db[_0xdcbd('0x5a')][_0xdcbd('0x6e')]({'attributes':['id',_0xdcbd('0x2a'),'color'],'where':{'id':_0x3cec79[_0xdcbd('0x62')][_0xdcbd('0x66')]}});})['then'](function(_0x11fd16){socket[_0xdcbd('0x71')](_0xdcbd('0x72'),{'id':Number(_0x3cec79['params']['id']),'tags':_0x11fd16||[]});return{'id':Number(_0x3cec79[_0xdcbd('0x5f')]['id']),'tags':_0x11fd16||[]};});}})[_0xdcbd('0x26')](respondWithResult(_0x73fa9,null))[_0xdcbd('0x5d')](handleError(_0x73fa9,null));};exports[_0xdcbd('0x73')]=function(_0x1dbc0d,_0x1e16ef,_0x1a99e8){var _0x1f3f19;return db[_0xdcbd('0x2d')]['find']({'where':{'id':_0x1dbc0d[_0xdcbd('0x5f')]['id']}})[_0xdcbd('0x26')](handleEntityNotFound(_0x1e16ef,null))['then'](function(_0x2d2939){if(_0x2d2939){return _0x2d2939[_0xdcbd('0x73')](_0x1dbc0d[_0xdcbd('0x32')][_0xdcbd('0x66')]);}})[_0xdcbd('0x26')](respondWithStatusCode(_0x1e16ef,null))[_0xdcbd('0x5d')](handleError(_0x1e16ef,null));};exports[_0xdcbd('0x74')]=function(_0x93f2ce,_0x52feec){var _0xf7257a=moment()[_0xdcbd('0x75')]()[_0xdcbd('0x76')]();var _0x2ff535=path[_0xdcbd('0x77')](config[_0xdcbd('0x78')],_0xdcbd('0x79'),'files','tmp');var _0x164ef9=path['join'](config[_0xdcbd('0x78')],_0xdcbd('0x79'),_0xdcbd('0x7a'),_0xdcbd('0x7b'));var _0xe7b72=path[_0xdcbd('0x77')](_0x2ff535,_0xf7257a);var _0x463d6f=util[_0xdcbd('0x6c')]('interaction-%s.zip',_0xf7257a);var _0xe0a511=path['join'](_0x2ff535,_0x463d6f);var _0x2e0e5b=![];return db[_0xdcbd('0x2d')][_0xdcbd('0x60')]({'where':{'id':_0x93f2ce[_0xdcbd('0x5f')]['id']},'include':[{'model':db[_0xdcbd('0x4c')],'as':_0xdcbd('0x4d'),'attributes':['id',_0xdcbd('0x62')],'include':[{'model':db[_0xdcbd('0x50')],'as':_0xdcbd('0x50'),'attributes':['id',_0xdcbd('0x52')],'raw':!![]},{'model':db['CmContact'],'as':_0xdcbd('0x54'),'attributes':['id',_0xdcbd('0x7c')],'raw':!![]},{'model':db[_0xdcbd('0x7d')],'as':_0xdcbd('0x7d'),'raw':!![]}]}]})[_0xdcbd('0x26')](handleEntityNotFound(_0x52feec,null))[_0xdcbd('0x26')](function(_0x19e6e1){if(_0x19e6e1){_0x2e0e5b=!![];var _0x28432d='';var _0x5dfeff={'format':_0xdcbd('0x7e'),'border':'1cm'};fs['mkdirSync'](_0xe7b72);_0x28432d+=util['format'](_0xdcbd('0x7f'),_0x19e6e1['id']);_0x28432d+=util[_0xdcbd('0x6c')](_0xdcbd('0x80'),moment()[_0xdcbd('0x6c')](_0xdcbd('0x81'))[_0xdcbd('0x76')]());_0x28432d+=_0xdcbd('0x82');for(var _0x5ac001=0x0;_0x5ac001<_0x19e6e1['Messages'][_0xdcbd('0x38')];_0x5ac001++){var _0x29d5cd=_0x19e6e1[_0xdcbd('0x4d')][_0x5ac001];_0x28432d+=_0xdcbd('0x83');_0x28432d+=util[_0xdcbd('0x6c')]('<p\x20style=\x22margin:\x203px;\x22>%s:\x20%s</p>',_0x29d5cd[_0xdcbd('0x50')]?_0x29d5cd[_0xdcbd('0x50')][_0xdcbd('0x52')]:_0x29d5cd[_0xdcbd('0x54')][_0xdcbd('0x7c')],_0x29d5cd['body']);_0x28432d+='</div>';if(_0x29d5cd[_0xdcbd('0x7d')]){var _0x9f8fb=_0x29d5cd['Attachment'];var _0xf60f35=path[_0xdcbd('0x77')](_0x164ef9,_0x9f8fb[_0xdcbd('0x84')]);if(fs[_0xdcbd('0x85')](_0xf60f35)){fs[_0xdcbd('0x86')](_0xf60f35)[_0xdcbd('0x87')](fs[_0xdcbd('0x88')](path[_0xdcbd('0x77')](_0xe7b72,_0x9f8fb[_0xdcbd('0x84')])));}}}return new BPromise(function(_0x22cfcd,_0x3424ec){pdf[_0xdcbd('0x61')](_0x28432d,_0x5dfeff)[_0xdcbd('0x89')](path[_0xdcbd('0x77')](_0xe7b72,'interaction-'+_0xf7257a+_0xdcbd('0x8a')),function(_0x875896,_0x24b631){if(_0x875896)return _0x3424ec(_0x875896);_0x22cfcd(_0x24b631);});});}})['then'](function(){if(_0x2e0e5b){return new BPromise(function(_0xfffa9c,_0x469001){zipdir(_0xe7b72,{'saveTo':_0xe0a511},function(_0x4142b5,_0x10c5c4){if(_0x4142b5)return _0x469001(_0x4142b5);return _0xfffa9c(_0x10c5c4);});});}})['then'](function(){if(_0x2e0e5b){return new BPromise(function(_0x138bd1,_0x47d78b){rimraf(_0xe7b72,function(_0x4ec70a){if(_0x4ec70a)_0x47d78b(_0x4ec70a);return _0x138bd1();});});}})[_0xdcbd('0x26')](function(){if(_0x2e0e5b){return _0x52feec[_0xdcbd('0x74')](_0xe0a511,_0x463d6f,function(_0x147554){if(_0x147554){console[_0xdcbd('0x8b')]('err',_0x147554);}else{fs[_0xdcbd('0x8c')](_0xe0a511);}});}else{return _0x52feec[_0xdcbd('0x1c')](0xc8);}})[_0xdcbd('0x5d')](handleError(_0x52feec,null));};
\ No newline at end of file
+var _0x2b88=['findAll','rows','catch','show','rawAttributes','find','create','body','params','describe','addMessage','ids','omit','getMessages','findOne','hasOwnProperty','OpenchannelInteractionId','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','addTags','spread','emit','removeTags','download','unix','toString','join','root','files','tmp','server','firstName','Attachment','Letter','1cm','mkdirSync','<h1>Openchannel\x20Interaction:\x20#%d</h1>','MMMM\x20Do\x20YYYY,\x20HH:mm:ss','<hr>','<div\x20style=\x22border-style:\x20solid;\x20border-width:\x201px;\x20margin:\x203px;\x22>','<p\x20style=\x22margin:\x203px;\x22>%s:\x20%s</p>','</div>','basename','existsSync','createWriteStream','toFile','interaction-','.pdf','log','unlinkSync','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/logger','../../mysqldb','redis','defaults','localhost','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','limit','set','reject','update','then','destroy','error','name','model','keys','query','dateEnd','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','dateStart','add','day','filter','merge','map','type','key','VIRTUAL','options','tag','include','push','Tags','distinct','OpenchannelMessage','direction','createdAt','read','OpenchannelInteraction','count','includeAll','Users','fullname','CmContact','Contact','User','Owner','internal','OpenchannelAccount','Account','Messages','Tag','ThroughTags','color'];(function(_0x365dd,_0x827328){var _0x391fc2=function(_0xa7943f){while(--_0xa7943f){_0x365dd['push'](_0x365dd['shift']());}};_0x391fc2(++_0x827328);}(_0x2b88,0xc1));var _0x82b8=function(_0x5b7788,_0x309ae5){_0x5b7788=_0x5b7788-0x0;var _0x573871=_0x2b88[_0x5b7788];return _0x573871;};'use strict';var pdf=require(_0x82b8('0x0'));var emlformat=require(_0x82b8('0x1'));var rimraf=require(_0x82b8('0x2'));var zipdir=require(_0x82b8('0x3'));var jsonpatch=require(_0x82b8('0x4'));var rp=require(_0x82b8('0x5'));var moment=require(_0x82b8('0x6'));var BPromise=require(_0x82b8('0x7'));var Mustache=require('mustache');var util=require(_0x82b8('0x8'));var path=require(_0x82b8('0x9'));var sox=require(_0x82b8('0xa'));var csv=require(_0x82b8('0xb'));var ejs=require(_0x82b8('0xc'));var fs=require('fs');var _=require(_0x82b8('0xd'));var squel=require(_0x82b8('0xe'));var crypto=require(_0x82b8('0xf'));var jsforce=require(_0x82b8('0x10'));var deskjs=require(_0x82b8('0x11'));var toCsv=require(_0x82b8('0xb'));var querystring=require(_0x82b8('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0x82b8('0x13'));var logger=require(_0x82b8('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x82b8('0x15'))['db'];config[_0x82b8('0x16')]=_[_0x82b8('0x17')](config[_0x82b8('0x16')],{'host':_0x82b8('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x82b8('0x16')]));require(_0x82b8('0x19'))[_0x82b8('0x1a')](socket);function respondWithStatusCode(_0x427c7d,_0x15a80b){_0x15a80b=_0x15a80b||0xcc;return function(_0x1153cb){if(_0x1153cb){return _0x427c7d[_0x82b8('0x1b')](_0x15a80b);}return _0x427c7d[_0x82b8('0x1c')](_0x15a80b)[_0x82b8('0x1d')]();};}function respondWithResult(_0x2c6131,_0x50b7cc){_0x50b7cc=_0x50b7cc||0xc8;return function(_0x507cab){if(_0x507cab){return _0x2c6131[_0x82b8('0x1c')](_0x50b7cc)[_0x82b8('0x1e')](_0x507cab);}};}function respondWithFilteredResult(_0x2c8613,_0x2060c6){return function(_0x76df92){if(_0x76df92){var _0x59e372=_0x76df92['count'],_0x505b41=_0x2060c6[_0x82b8('0x1f')],_0x359a9e=_0x2060c6[_0x82b8('0x1f')]+_0x2060c6[_0x82b8('0x20')],_0x3f9021;if(_0x359a9e>=_0x59e372){_0x359a9e=_0x59e372;_0x3f9021=0xc8;}else{_0x3f9021=0xce;}_0x2c8613[_0x82b8('0x1c')](_0x3f9021);return _0x2c8613[_0x82b8('0x21')]('Content-Range',_0x505b41+'-'+_0x359a9e+'/'+_0x59e372)[_0x82b8('0x1e')](_0x76df92);}return null;};}function patchUpdates(_0x1a1813){return function(_0x242f1a){try{jsonpatch['apply'](_0x242f1a,_0x1a1813,!![]);}catch(_0x43d39b){return BPromise[_0x82b8('0x22')](_0x43d39b);}return _0x242f1a['save']();};}function saveUpdates(_0x32b398,_0x2ff0be){return function(_0x4269ad){if(_0x4269ad){return _0x4269ad[_0x82b8('0x23')](_0x32b398)[_0x82b8('0x24')](function(_0x12aa1d){return _0x12aa1d;});}return null;};}function removeEntity(_0x3fbca9,_0x24de9f){return function(_0x5e83f5){if(_0x5e83f5){return _0x5e83f5[_0x82b8('0x25')]()[_0x82b8('0x24')](function(){_0x3fbca9[_0x82b8('0x1c')](0xcc)[_0x82b8('0x1d')]();});}};}function handleEntityNotFound(_0x23110c,_0x225946){return function(_0x4b208d){if(!_0x4b208d){_0x23110c[_0x82b8('0x1b')](0x194);}return _0x4b208d;};}function handleError(_0x33c817,_0x389eeb){_0x389eeb=_0x389eeb||0x1f4;return function(_0x192661){logger[_0x82b8('0x26')](_0x192661['stack']);if(_0x192661[_0x82b8('0x27')]){delete _0x192661['name'];}_0x33c817['status'](_0x389eeb)['send'](_0x192661);};}exports['index']=function(_0x164909,_0x4faa3c){var _0x582d9c={},_0x331929={},_0x4d4a4d={'count':0x0,'rows':[]};var _0xe041e9=db['OpenchannelInteraction']['rawAttributes'];_0x331929[_0x82b8('0x28')]=_[_0x82b8('0x29')](_0xe041e9);var _0x490ad6={'dateStart':_0x164909[_0x82b8('0x2a')]['dateStart'],'dateEnd':_0x164909[_0x82b8('0x2a')][_0x82b8('0x2b')]};delete _0x164909[_0x82b8('0x2a')]['dateStart'];delete _0x164909['query'][_0x82b8('0x2b')];_0x331929[_0x82b8('0x2a')]=_[_0x82b8('0x29')](_0x164909[_0x82b8('0x2a')]);_0x331929[_0x82b8('0x2c')]=_[_0x82b8('0x2d')](_0x331929[_0x82b8('0x28')],_0x331929['query']);_0x582d9c[_0x82b8('0x2e')]=_[_0x82b8('0x2d')](_0x331929[_0x82b8('0x28')],qs[_0x82b8('0x2f')](_0x164909[_0x82b8('0x2a')][_0x82b8('0x2f')]));_0x582d9c[_0x82b8('0x2e')]=_0x582d9c[_0x82b8('0x2e')][_0x82b8('0x30')]?_0x582d9c[_0x82b8('0x2e')]:_0x331929[_0x82b8('0x28')];if(!_0x164909['query']['hasOwnProperty'](_0x82b8('0x31'))){_0x582d9c[_0x82b8('0x20')]=qs[_0x82b8('0x20')](_0x164909[_0x82b8('0x2a')]['limit']);_0x582d9c[_0x82b8('0x1f')]=qs[_0x82b8('0x1f')](_0x164909['query']['offset']);}_0x582d9c[_0x82b8('0x32')]=qs[_0x82b8('0x33')](_0x164909[_0x82b8('0x2a')][_0x82b8('0x33')]);_0x582d9c[_0x82b8('0x34')]=qs[_0x82b8('0x2c')](_[_0x82b8('0x35')](_0x164909[_0x82b8('0x2a')],_0x331929['filters']));if(_0x490ad6[_0x82b8('0x36')]){if(_0x490ad6[_0x82b8('0x2b')]){_0x490ad6[_0x82b8('0x2b')]=moment(_0x490ad6[_0x82b8('0x2b')])[_0x82b8('0x37')](0x1,_0x82b8('0x38'));}else{_0x490ad6[_0x82b8('0x2b')]=moment(_0x490ad6[_0x82b8('0x36')])[_0x82b8('0x37')](0x1,_0x82b8('0x38'));}_['merge'](_0x582d9c[_0x82b8('0x34')],{'createdAt':{'$gte':_0x490ad6[_0x82b8('0x36')],'$lte':_0x490ad6[_0x82b8('0x2b')]}});}if(_0x164909[_0x82b8('0x2a')][_0x82b8('0x39')]){_0x582d9c['where']=_[_0x82b8('0x3a')](_0x582d9c[_0x82b8('0x34')],{'$or':_[_0x82b8('0x3b')](_0xe041e9,function(_0x261859){if(_0x261859[_0x82b8('0x3c')][_0x82b8('0x3d')]!==_0x82b8('0x3e')){var _0x5408cf={};_0x5408cf[_0x261859['field']]={'$like':'%'+_0x164909[_0x82b8('0x2a')][_0x82b8('0x39')]+'%'};return _0x5408cf;}})});}_0x582d9c=_[_0x82b8('0x3a')]({},_0x582d9c,_0x164909[_0x82b8('0x3f')]);var _0x5c570d={'where':_0x582d9c[_0x82b8('0x34')]};_0x5c570d['include']=[];if(_0x164909[_0x82b8('0x2a')][_0x82b8('0x40')]){_0x5c570d[_0x82b8('0x41')][_0x82b8('0x42')]({'model':db['Tag'],'as':_0x82b8('0x43'),'attributes':['id'],'where':{'id':_0x164909['query']['tag']},'required':!![]});_0x5c570d[_0x82b8('0x44')]=!![];}if(_0x164909[_0x82b8('0x2a')]['read']){_0x5c570d[_0x82b8('0x41')][_0x82b8('0x42')]({'model':db[_0x82b8('0x45')],'as':'Messages','attributes':['id',_0x82b8('0x46'),_0x82b8('0x47'),_0x82b8('0x48')],'where':{'direction':'in','read':_0x164909[_0x82b8('0x2a')][_0x82b8('0x48')]||![]},'required':!![]});_0x5c570d[_0x82b8('0x44')]=!![];}return db[_0x82b8('0x49')][_0x82b8('0x4a')](_0x5c570d)['then'](function(_0x17c48b){_0x4d4a4d[_0x82b8('0x4a')]=_0x17c48b;if(_0x164909[_0x82b8('0x2a')][_0x82b8('0x4b')]){_0x582d9c[_0x82b8('0x41')]=[{'model':db['User'],'as':_0x82b8('0x4c'),'required':![],'attributes':['id',_0x82b8('0x27'),_0x82b8('0x4d')]},{'model':db[_0x82b8('0x4e')],'as':_0x82b8('0x4f'),'required':![]},{'model':db[_0x82b8('0x50')],'as':_0x82b8('0x51'),'attributes':[_0x82b8('0x27'),_0x82b8('0x4d'),_0x82b8('0x52')],'required':![]},{'model':db[_0x82b8('0x53')],'as':_0x82b8('0x54'),'attributes':[_0x82b8('0x27'),_0x82b8('0x3d')],'required':![]},{'model':db['OpenchannelMessage'],'as':_0x82b8('0x55'),'attributes':['id',_0x82b8('0x46'),_0x82b8('0x47'),_0x82b8('0x48')],'where':{'direction':'in','read':_0x164909['query'][_0x82b8('0x48')]||![]},'required':_0x164909[_0x82b8('0x2a')][_0x82b8('0x48')]||![]},{'model':db['Tag'],'as':_0x82b8('0x43'),'attributes':['id',_0x82b8('0x27'),'color'],'required':_0x164909[_0x82b8('0x2a')][_0x82b8('0x40')]?!![]:![]},{'model':db[_0x82b8('0x56')],'as':_0x82b8('0x57'),'attributes':['id',_0x82b8('0x27'),_0x82b8('0x58')],'through':_0x164909[_0x82b8('0x2a')][_0x82b8('0x40')]?{'attributes':[],'where':{'TagId':_0x164909[_0x82b8('0x2a')]['tag']||undefined}}:{},'required':_0x164909['query'][_0x82b8('0x40')]?!![]:![]}];}return db[_0x82b8('0x49')][_0x82b8('0x59')](_0x582d9c);})[_0x82b8('0x24')](function(_0x47c5f5){_0x4d4a4d[_0x82b8('0x5a')]=_0x47c5f5;return _0x4d4a4d;})[_0x82b8('0x24')](respondWithFilteredResult(_0x4faa3c,_0x582d9c))[_0x82b8('0x5b')](handleError(_0x4faa3c,null));};exports[_0x82b8('0x5c')]=function(_0x45b382,_0x4c9667){var _0x4e3c3f={'raw':![],'where':{'id':_0x45b382['params']['id']}},_0x324723={};_0x324723[_0x82b8('0x28')]=_[_0x82b8('0x29')](db[_0x82b8('0x49')][_0x82b8('0x5d')]);_0x324723['query']=_[_0x82b8('0x29')](_0x45b382[_0x82b8('0x2a')]);_0x324723['filters']=_[_0x82b8('0x2d')](_0x324723[_0x82b8('0x28')],_0x324723['query']);_0x4e3c3f[_0x82b8('0x2e')]=_[_0x82b8('0x2d')](_0x324723[_0x82b8('0x28')],qs[_0x82b8('0x2f')](_0x45b382[_0x82b8('0x2a')]['fields']));_0x4e3c3f[_0x82b8('0x2e')]=_0x4e3c3f[_0x82b8('0x2e')][_0x82b8('0x30')]?_0x4e3c3f[_0x82b8('0x2e')]:_0x324723[_0x82b8('0x28')];if(_0x45b382[_0x82b8('0x2a')]['includeAll']){_0x4e3c3f[_0x82b8('0x41')]=[{'all':!![]}];}_0x4e3c3f=_['merge']({},_0x4e3c3f,_0x45b382[_0x82b8('0x3f')]);return db[_0x82b8('0x49')][_0x82b8('0x5e')](_0x4e3c3f)[_0x82b8('0x24')](handleEntityNotFound(_0x4c9667,null))[_0x82b8('0x24')](respondWithResult(_0x4c9667,null))[_0x82b8('0x5b')](handleError(_0x4c9667,null));};exports[_0x82b8('0x5f')]=function(_0x12c54f,_0x37d4e9){return db['OpenchannelInteraction'][_0x82b8('0x5f')](_0x12c54f[_0x82b8('0x60')],{})[_0x82b8('0x24')](respondWithResult(_0x37d4e9,0xc9))[_0x82b8('0x5b')](handleError(_0x37d4e9,null));};exports['update']=function(_0x2910ed,_0x1cde8a){if(_0x2910ed[_0x82b8('0x60')]['id']){delete _0x2910ed[_0x82b8('0x60')]['id'];}return db[_0x82b8('0x49')][_0x82b8('0x5e')]({'where':{'id':_0x2910ed['params']['id']}})[_0x82b8('0x24')](handleEntityNotFound(_0x1cde8a,null))[_0x82b8('0x24')](saveUpdates(_0x2910ed[_0x82b8('0x60')],null))[_0x82b8('0x24')](respondWithResult(_0x1cde8a,null))[_0x82b8('0x5b')](handleError(_0x1cde8a,null));};exports[_0x82b8('0x25')]=function(_0x2335f4,_0x35adfb){return db[_0x82b8('0x49')][_0x82b8('0x5e')]({'where':{'id':_0x2335f4[_0x82b8('0x61')]['id']}})[_0x82b8('0x24')](handleEntityNotFound(_0x35adfb,null))[_0x82b8('0x24')](removeEntity(_0x35adfb,null))[_0x82b8('0x5b')](handleError(_0x35adfb,null));};exports[_0x82b8('0x62')]=function(_0x55a86b,_0x1d0bad){return db[_0x82b8('0x49')][_0x82b8('0x62')]()[_0x82b8('0x24')](respondWithResult(_0x1d0bad,null))[_0x82b8('0x5b')](handleError(_0x1d0bad,null));};exports['addMessage']=function(_0x38ee05,_0x327ece,_0x392a45){return db[_0x82b8('0x45')][_0x82b8('0x5e')]({'where':{'id':_0x38ee05[_0x82b8('0x61')]['id']}})[_0x82b8('0x24')](handleEntityNotFound(_0x327ece,null))[_0x82b8('0x24')](function(_0x7a26f4){if(_0x7a26f4){return _0x7a26f4[_0x82b8('0x63')](_0x38ee05[_0x82b8('0x60')][_0x82b8('0x64')],_[_0x82b8('0x65')](_0x38ee05[_0x82b8('0x60')],[_0x82b8('0x64'),'id'])||{});}})[_0x82b8('0x24')](respondWithResult(_0x327ece,null))[_0x82b8('0x5b')](handleError(_0x327ece,null));};exports[_0x82b8('0x66')]=function(_0x35bf6e,_0x3a6d13,_0x6478e0){var _0x310d2b={'raw':![],'where':{}};var _0x3b2b6f={};var _0x492aac={'count':0x0,'rows':[]};return db[_0x82b8('0x49')][_0x82b8('0x67')]({'where':{'id':_0x35bf6e[_0x82b8('0x61')]['id']}})[_0x82b8('0x24')](handleEntityNotFound(_0x3a6d13,null))[_0x82b8('0x24')](function(_0x1b958f){if(_0x1b958f){_0x3b2b6f[_0x82b8('0x28')]=_[_0x82b8('0x29')](db[_0x82b8('0x45')][_0x82b8('0x5d')]);_0x3b2b6f[_0x82b8('0x2a')]=_['keys'](_0x35bf6e[_0x82b8('0x2a')]);_0x3b2b6f[_0x82b8('0x2c')]=_[_0x82b8('0x2d')](_0x3b2b6f['model'],_0x3b2b6f[_0x82b8('0x2a')]);_0x310d2b[_0x82b8('0x2e')]=_[_0x82b8('0x2d')](_0x3b2b6f['model'],qs['fields'](_0x35bf6e[_0x82b8('0x2a')][_0x82b8('0x2f')]));_0x310d2b[_0x82b8('0x2e')]=_0x310d2b[_0x82b8('0x2e')][_0x82b8('0x30')]?_0x310d2b['attributes']:_0x3b2b6f['model'];if(!_0x35bf6e[_0x82b8('0x2a')][_0x82b8('0x68')]('nolimit')){_0x310d2b['limit']=qs[_0x82b8('0x20')](_0x35bf6e[_0x82b8('0x2a')][_0x82b8('0x20')]);_0x310d2b[_0x82b8('0x1f')]=qs[_0x82b8('0x1f')](_0x35bf6e['query'][_0x82b8('0x1f')]);}_0x310d2b[_0x82b8('0x32')]=qs[_0x82b8('0x33')](_0x35bf6e[_0x82b8('0x2a')][_0x82b8('0x33')]);_0x310d2b[_0x82b8('0x34')]=qs[_0x82b8('0x2c')](_['pick'](_0x35bf6e[_0x82b8('0x2a')],_0x3b2b6f[_0x82b8('0x2c')]));_0x310d2b[_0x82b8('0x34')][_0x82b8('0x69')]=_0x1b958f['id'];if(_0x35bf6e[_0x82b8('0x2a')][_0x82b8('0x39')]){_0x310d2b[_0x82b8('0x34')]=_['merge'](_0x310d2b[_0x82b8('0x34')],{'$or':_[_0x82b8('0x3b')](_0x310d2b[_0x82b8('0x2e')],function(_0x5b796a){var _0x9d92c5={};_0x9d92c5[_0x5b796a]={'$like':'%'+_0x35bf6e[_0x82b8('0x2a')][_0x82b8('0x39')]+'%'};return _0x9d92c5;})});}if(_0x35bf6e[_0x82b8('0x2a')][_0x82b8('0x6a')]){var _0x3d6a40=_0x35bf6e['query'][_0x82b8('0x6a')][_0x82b8('0x6b')](',');var _0xa130db={};_0xa130db[_0x3d6a40[0x0]]={'$gte':moment(_0x3d6a40[0x1])[_0x82b8('0x6c')](_0x82b8('0x6d'))};_0x310d2b[_0x82b8('0x34')]=_[_0x82b8('0x3a')](_0x310d2b[_0x82b8('0x34')],_0xa130db);}_0x310d2b=_[_0x82b8('0x3a')]({},_0x310d2b,_0x35bf6e['options']);return db[_0x82b8('0x45')][_0x82b8('0x4a')]({'where':_0x310d2b['where']})[_0x82b8('0x24')](function(_0x892e0f){_0x492aac[_0x82b8('0x4a')]=_0x892e0f;if(_0x35bf6e[_0x82b8('0x2a')][_0x82b8('0x4b')]){_0x310d2b[_0x82b8('0x41')]=[{'all':!![]}];}return db[_0x82b8('0x45')]['findAll'](_0x310d2b);})[_0x82b8('0x24')](function(_0x409f1d){_0x492aac[_0x82b8('0x5a')]=_0x409f1d;return _0x492aac;});}})[_0x82b8('0x24')](respondWithFilteredResult(_0x3a6d13,_0x310d2b))[_0x82b8('0x5b')](handleError(_0x3a6d13,null));};exports[_0x82b8('0x6e')]=function(_0x41aad8,_0x5d8d14,_0x2733ff){return db[_0x82b8('0x49')]['find']({'where':{'id':_0x41aad8[_0x82b8('0x61')]['id']}})[_0x82b8('0x24')](handleEntityNotFound(_0x5d8d14,null))['then'](function(_0x5e5f84){if(_0x5e5f84){return _0x5e5f84['setTags'](_0x41aad8[_0x82b8('0x60')][_0x82b8('0x64')],_[_0x82b8('0x65')](_0x41aad8['body'],['ids','id'])||{})[_0x82b8('0x6f')](function(){return db[_0x82b8('0x56')][_0x82b8('0x59')]({'attributes':['id',_0x82b8('0x27'),_0x82b8('0x58')],'where':{'id':_0x41aad8[_0x82b8('0x60')]['ids']}});})['then'](function(_0x297963){socket[_0x82b8('0x70')]('openchannelInteractionTags:save',{'id':Number(_0x41aad8[_0x82b8('0x61')]['id']),'tags':_0x297963||[]});return{'id':Number(_0x41aad8[_0x82b8('0x61')]['id']),'tags':_0x297963||[]};});}})[_0x82b8('0x24')](respondWithResult(_0x5d8d14,null))[_0x82b8('0x5b')](handleError(_0x5d8d14,null));};exports[_0x82b8('0x71')]=function(_0x1dcb72,_0x114fcb,_0x37940b){var _0x6baad9;return db[_0x82b8('0x49')][_0x82b8('0x5e')]({'where':{'id':_0x1dcb72[_0x82b8('0x61')]['id']}})[_0x82b8('0x24')](handleEntityNotFound(_0x114fcb,null))[_0x82b8('0x24')](function(_0x28fbad){if(_0x28fbad){return _0x28fbad[_0x82b8('0x71')](_0x1dcb72[_0x82b8('0x2a')]['ids']);}})[_0x82b8('0x24')](respondWithStatusCode(_0x114fcb,null))['catch'](handleError(_0x114fcb,null));};exports[_0x82b8('0x72')]=function(_0x1a6f5b,_0x112574){var _0x4c4669=moment()[_0x82b8('0x73')]()[_0x82b8('0x74')]();var _0x5c03d6=path[_0x82b8('0x75')](config[_0x82b8('0x76')],'server',_0x82b8('0x77'),_0x82b8('0x78'));var _0x25685f=path['join'](config[_0x82b8('0x76')],_0x82b8('0x79'),'files','attachments');var _0x22c85a=path[_0x82b8('0x75')](_0x5c03d6,_0x4c4669);var _0x252e59=util[_0x82b8('0x6c')]('interaction-%s.zip',_0x4c4669);var _0x2a0a71=path[_0x82b8('0x75')](_0x5c03d6,_0x252e59);var _0x7a08d2=![];return db[_0x82b8('0x49')][_0x82b8('0x5e')]({'where':{'id':_0x1a6f5b['params']['id']},'include':[{'model':db[_0x82b8('0x45')],'as':'Messages','attributes':['id',_0x82b8('0x60')],'include':[{'model':db['User'],'as':_0x82b8('0x50'),'attributes':['id',_0x82b8('0x4d')],'raw':!![]},{'model':db['CmContact'],'as':_0x82b8('0x4f'),'attributes':['id',_0x82b8('0x7a')],'raw':!![]},{'model':db[_0x82b8('0x7b')],'as':_0x82b8('0x7b'),'raw':!![]}]}]})[_0x82b8('0x24')](handleEntityNotFound(_0x112574,null))[_0x82b8('0x24')](function(_0xa8ae26){if(_0xa8ae26){_0x7a08d2=!![];var _0x36a0e1='';var _0x936781={'format':_0x82b8('0x7c'),'border':_0x82b8('0x7d')};fs[_0x82b8('0x7e')](_0x22c85a);_0x36a0e1+=util[_0x82b8('0x6c')](_0x82b8('0x7f'),_0xa8ae26['id']);_0x36a0e1+=util[_0x82b8('0x6c')]('<h2>Date:\x20%s</h2>',moment()[_0x82b8('0x6c')](_0x82b8('0x80'))[_0x82b8('0x74')]());_0x36a0e1+=_0x82b8('0x81');for(var _0x2f0ce2=0x0;_0x2f0ce2<_0xa8ae26[_0x82b8('0x55')]['length'];_0x2f0ce2++){var _0x482fbb=_0xa8ae26[_0x82b8('0x55')][_0x2f0ce2];_0x36a0e1+=_0x82b8('0x82');_0x36a0e1+=util[_0x82b8('0x6c')](_0x82b8('0x83'),_0x482fbb[_0x82b8('0x50')]?_0x482fbb[_0x82b8('0x50')][_0x82b8('0x4d')]:_0x482fbb[_0x82b8('0x4f')]['firstName'],_0x482fbb[_0x82b8('0x60')]);_0x36a0e1+=_0x82b8('0x84');if(_0x482fbb[_0x82b8('0x7b')]){var _0x4d5aac=_0x482fbb[_0x82b8('0x7b')];var _0x567f03=path[_0x82b8('0x75')](_0x25685f,_0x4d5aac[_0x82b8('0x85')]);if(fs[_0x82b8('0x86')](_0x567f03)){fs['createReadStream'](_0x567f03)['pipe'](fs[_0x82b8('0x87')](path[_0x82b8('0x75')](_0x22c85a,_0x4d5aac['basename'])));}}}return new BPromise(function(_0x2be9d3,_0x31c1ab){pdf[_0x82b8('0x5f')](_0x36a0e1,_0x936781)[_0x82b8('0x88')](path[_0x82b8('0x75')](_0x22c85a,_0x82b8('0x89')+_0x4c4669+_0x82b8('0x8a')),function(_0x57bb0f,_0x217d12){if(_0x57bb0f)return _0x31c1ab(_0x57bb0f);_0x2be9d3(_0x217d12);});});}})['then'](function(){if(_0x7a08d2){return new BPromise(function(_0x185c4c,_0x302b88){zipdir(_0x22c85a,{'saveTo':_0x2a0a71},function(_0x4405e0,_0xd2065f){if(_0x4405e0)return _0x302b88(_0x4405e0);return _0x185c4c(_0xd2065f);});});}})[_0x82b8('0x24')](function(){if(_0x7a08d2){return new BPromise(function(_0x34fd04,_0x14d787){rimraf(_0x22c85a,function(_0x46e737){if(_0x46e737)_0x14d787(_0x46e737);return _0x34fd04();});});}})[_0x82b8('0x24')](function(){if(_0x7a08d2){return _0x112574['download'](_0x2a0a71,_0x252e59,function(_0x1b651f){if(_0x1b651f){console[_0x82b8('0x8b')]('err',_0x1b651f);}else{fs[_0x82b8('0x8c')](_0x2a0a71);}});}else{return _0x112574['sendStatus'](0xc8);}})['catch'](handleError(_0x112574,null));};
\ No newline at end of file
index f25fec5..50cb0be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0fe=['emit','hasOwnProperty','hook','events','../../mysqldb','OpenchannelInteraction','setMaxListeners','save','update','remove'];(function(_0x4ff001,_0x4ea3c7){var _0x1700dd=function(_0x1efe54){while(--_0x1efe54){_0x4ff001['push'](_0x4ff001['shift']());}};_0x1700dd(++_0x4ea3c7);}(_0xc0fe,0x125));var _0xec0f=function(_0x162891,_0xe51495){_0x162891=_0x162891-0x0;var _0x5d7409=_0xc0fe[_0x162891];return _0x5d7409;};'use strict';var EventEmitter=require(_0xec0f('0x0'));var OpenchannelInteraction=require(_0xec0f('0x1'))['db'][_0xec0f('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xec0f('0x3')](0x0);var events={'afterCreate':_0xec0f('0x4'),'afterUpdate':_0xec0f('0x5'),'afterDestroy':_0xec0f('0x6')};function emitEvent(_0x316b1f){return function(_0x46b6b1,_0x532290,_0x2faae5){OpenchannelInteractionEvents[_0xec0f('0x7')](_0x316b1f+':'+_0x46b6b1['id'],_0x46b6b1);OpenchannelInteractionEvents[_0xec0f('0x7')](_0x316b1f,_0x46b6b1);_0x2faae5(null);};}for(var e in events){if(events[_0xec0f('0x8')](e)){var event=events[e];OpenchannelInteraction[_0xec0f('0x9')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x7947=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','OpenchannelInteraction','setMaxListeners'];(function(_0xcbd776,_0x302fe8){var _0x13d4b4=function(_0x5b8046){while(--_0x5b8046){_0xcbd776['push'](_0xcbd776['shift']());}};_0x13d4b4(++_0x302fe8);}(_0x7947,0x146));var _0x7794=function(_0x559ecc,_0x591615){_0x559ecc=_0x559ecc-0x0;var _0x16dd7b=_0x7947[_0x559ecc];return _0x16dd7b;};'use strict';var EventEmitter=require(_0x7794('0x0'));var OpenchannelInteraction=require(_0x7794('0x1'))['db'][_0x7794('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x7794('0x3')](0x0);var events={'afterCreate':_0x7794('0x4'),'afterUpdate':_0x7794('0x5'),'afterDestroy':_0x7794('0x6')};function emitEvent(_0x1a8f8d){return function(_0x4338ee,_0x5af573,_0x89cd57){OpenchannelInteractionEvents['emit'](_0x1a8f8d+':'+_0x4338ee['id'],_0x4338ee);OpenchannelInteractionEvents[_0x7794('0x7')](_0x1a8f8d,_0x4338ee);_0x89cd57(null);};}for(var e in events){if(events[_0x7794('0x8')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x7794('0x9')]=OpenchannelInteractionEvents;
\ No newline at end of file
index f16ad59..59e3358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecde=['define','openchannel_interactions','util','../../config/logger','api','bluebird','request-promise','./openchannelInteraction.attributes','exports'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0xecde,0x1cd));var _0xeecd=function(_0x3282d2,_0x3debf9){_0x3282d2=_0x3282d2-0x0;var _0x47a46b=_0xecde[_0x3282d2];return _0x47a46b;};'use strict';var _=require('lodash');var util=require(_0xeecd('0x0'));var logger=require(_0xeecd('0x1'))(_0xeecd('0x2'));var moment=require('moment');var BPromise=require(_0xeecd('0x3'));var rp=require(_0xeecd('0x4'));var attributes=require(_0xeecd('0x5'));module[_0xeecd('0x6')]=function(_0x20eae9,_0x4788c4){return _0x20eae9[_0xeecd('0x7')]('OpenchannelInteraction',attributes,{'tableName':_0xeecd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa4b1=['util','../../config/logger','moment','bluebird','request-promise','exports','define','lodash'];(function(_0x59ae80,_0x56b205){var _0x473bf9=function(_0x2f484e){while(--_0x2f484e){_0x59ae80['push'](_0x59ae80['shift']());}};_0x473bf9(++_0x56b205);}(_0xa4b1,0xc7));var _0x1a4b=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0xa4b1[_0x50aa2e];return _0x5e07f0;};'use strict';var _=require(_0x1a4b('0x0'));var util=require(_0x1a4b('0x1'));var logger=require(_0x1a4b('0x2'))('api');var moment=require(_0x1a4b('0x3'));var BPromise=require(_0x1a4b('0x4'));var rp=require(_0x1a4b('0x5'));var attributes=require('./openchannelInteraction.attributes');module[_0x1a4b('0x6')]=function(_0x2d8a09,_0x3787c8){return _0x2d8a09[_0x1a4b('0x7')]('OpenchannelInteraction',attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c3c2a8..ce74e11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['bluebird','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','register','info','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','raw','where','attributes','then','catch','AddTagsToOpenchannelInteraction','find','addTags','ids','spread','AddTags','lodash','util','moment'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xd8fb,0x99));var _0xbd8f=function(_0x3d053c,_0x2f522d){_0x3d053c=_0x3d053c-0x0;var _0xfca599=_0xd8fb[_0x3d053c];return _0xfca599;};'use strict';var _=require(_0xbd8f('0x0'));var util=require(_0xbd8f('0x1'));var moment=require(_0xbd8f('0x2'));var BPromise=require(_0xbd8f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbd8f('0x4'));var logger=require(_0xbd8f('0x5'))('rpc');var config=require(_0xbd8f('0x6'));var jayson=require(_0xbd8f('0x7'));var client=jayson['client'][_0xbd8f('0x8')]({'port':0x232a});config['redis']=_[_0xbd8f('0x9')](config['redis'],{'host':_0xbd8f('0xa'),'port':0x18eb});var socket=require(_0xbd8f('0xb'))(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0xbd8f('0xc')](socket);function respondWithRpcPromise(_0x2393a9,_0x2a55b5,_0x53a2c6){return new BPromise(function(_0x255af3,_0x42ae20){return client['request'](_0x2393a9,_0x53a2c6)['then'](function(_0x342bcb){logger[_0xbd8f('0xd')](_0xbd8f('0xe'),_0x2a55b5,'request\x20sent');logger[_0xbd8f('0xf')](_0xbd8f('0x10'),_0x2a55b5,_0xbd8f('0x11'),JSON[_0xbd8f('0x12')](_0x342bcb));if(_0x342bcb[_0xbd8f('0x13')]){if(_0x342bcb[_0xbd8f('0x13')][_0xbd8f('0x14')]===0x1f4){logger[_0xbd8f('0x13')](_0xbd8f('0xe'),_0x2a55b5,_0x342bcb['error'][_0xbd8f('0x15')]);return _0x42ae20(_0x342bcb[_0xbd8f('0x13')][_0xbd8f('0x15')]);}logger[_0xbd8f('0x13')]('OpenchannelInteraction,\x20%s,\x20%s',_0x2a55b5,_0x342bcb[_0xbd8f('0x13')][_0xbd8f('0x15')]);return _0x255af3(_0x342bcb['error'][_0xbd8f('0x15')]);}else{logger[_0xbd8f('0xd')]('OpenchannelInteraction,\x20%s,\x20%s',_0x2a55b5,_0xbd8f('0x11'));_0x255af3(_0x342bcb[_0xbd8f('0x16')]['message']);}})['catch'](function(_0x33f77c){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x2a55b5,_0x33f77c);_0x42ae20(_0x33f77c);});});}exports[_0xbd8f('0x17')]=function(_0x4b5fac){var _0xd706bc=this;return new Promise(function(_0x7f46d4,_0xb47c8e){return db[_0xbd8f('0x18')][_0xbd8f('0x19')](_0x4b5fac[_0xbd8f('0x1a')],{'raw':_0x4b5fac[_0xbd8f('0x1b')]?_0x4b5fac[_0xbd8f('0x1b')][_0xbd8f('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b5fac[_0xbd8f('0x1b')]?_0x4b5fac[_0xbd8f('0x1b')][_0xbd8f('0x1d')]||null:null,'attributes':_0x4b5fac[_0xbd8f('0x1b')]?_0x4b5fac[_0xbd8f('0x1b')][_0xbd8f('0x1e')]||null:null,'limit':_0x4b5fac[_0xbd8f('0x1b')]?_0x4b5fac[_0xbd8f('0x1b')]['limit']||null:null})[_0xbd8f('0x1f')](function(_0x9fa3b1){logger[_0xbd8f('0xd')](_0xbd8f('0x17'),_0x4b5fac);logger[_0xbd8f('0xf')](_0xbd8f('0x17'),_0x4b5fac,JSON[_0xbd8f('0x12')](_0x9fa3b1));_0x7f46d4(_0x9fa3b1);})[_0xbd8f('0x20')](function(_0x4ea554){logger[_0xbd8f('0x13')](_0xbd8f('0x17'),_0x4ea554['message'],_0x4b5fac);_0xb47c8e(_0xd706bc[_0xbd8f('0x13')](0x1f4,_0x4ea554['message']));});});};exports[_0xbd8f('0x21')]=function(_0x30d62e){return new Promise(function(_0x991401,_0x202126){return db[_0xbd8f('0x18')][_0xbd8f('0x22')]({'where':_0x30d62e['options']?_0x30d62e[_0xbd8f('0x1b')][_0xbd8f('0x1d')]||null:null})[_0xbd8f('0x1f')](function(_0x3ee851){if(_0x3ee851){return _0x3ee851[_0xbd8f('0x23')](_0x30d62e[_0xbd8f('0x1a')][_0xbd8f('0x24')],_['omit'](_0x30d62e[_0xbd8f('0x1a')],[_0xbd8f('0x24'),'id'])||{});}})[_0xbd8f('0x25')](function(_0x7ca145){logger['info']('AddTags',_0x30d62e);logger[_0xbd8f('0xf')](_0xbd8f('0x26'),_0x30d62e,JSON[_0xbd8f('0x12')](_0x7ca145));_0x991401(_0x7ca145);})[_0xbd8f('0x20')](function(_0x57c0cc){logger[_0xbd8f('0x13')](_0xbd8f('0x26'),_0x57c0cc[_0xbd8f('0x15')],_0x30d62e);_0x202126(_this[_0xbd8f('0x13')](0x1f4,_0x57c0cc[_0xbd8f('0x15')]));});});};
\ No newline at end of file
+var _0x3435=['info','OpenchannelInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','body','options','raw','where','attributes','limit','then','catch','AddTagsToOpenchannelInteraction','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','register','request'];(function(_0x295a3d,_0x56d487){var _0x23a732=function(_0x15cfc2){while(--_0x15cfc2){_0x295a3d['push'](_0x295a3d['shift']());}};_0x23a732(++_0x56d487);}(_0x3435,0xfa));var _0x5343=function(_0x1589dd,_0x2b9d22){_0x1589dd=_0x1589dd-0x0;var _0x1bddd1=_0x3435[_0x1589dd];return _0x1bddd1;};'use strict';var _=require(_0x5343('0x0'));var util=require(_0x5343('0x1'));var moment=require(_0x5343('0x2'));var BPromise=require(_0x5343('0x3'));var rs=require(_0x5343('0x4'));var fs=require('fs');var Redis=require(_0x5343('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5343('0x6'));var logger=require(_0x5343('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5343('0x8'));var client=jayson[_0x5343('0x9')]['http']({'port':0x232a});config['redis']=_[_0x5343('0xa')](config[_0x5343('0xb')],{'host':_0x5343('0xc'),'port':0x18eb});var socket=require(_0x5343('0xd'))(new Redis(config[_0x5343('0xb')]));require('./openchannelInteraction.socket')[_0x5343('0xe')](socket);function respondWithRpcPromise(_0x50d857,_0x1b310a,_0x328e54){return new BPromise(function(_0x27ed68,_0x2e6df1){return client[_0x5343('0xf')](_0x50d857,_0x328e54)['then'](function(_0x42a94a){logger[_0x5343('0x10')](_0x5343('0x11'),_0x1b310a,'request\x20sent');logger[_0x5343('0x12')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x1b310a,_0x5343('0x13'),JSON[_0x5343('0x14')](_0x42a94a));if(_0x42a94a['error']){if(_0x42a94a[_0x5343('0x15')]['code']===0x1f4){logger[_0x5343('0x15')](_0x5343('0x11'),_0x1b310a,_0x42a94a[_0x5343('0x15')][_0x5343('0x16')]);return _0x2e6df1(_0x42a94a['error'][_0x5343('0x16')]);}logger[_0x5343('0x15')](_0x5343('0x11'),_0x1b310a,_0x42a94a[_0x5343('0x15')][_0x5343('0x16')]);return _0x27ed68(_0x42a94a[_0x5343('0x15')][_0x5343('0x16')]);}else{logger[_0x5343('0x10')]('OpenchannelInteraction,\x20%s,\x20%s',_0x1b310a,_0x5343('0x13'));_0x27ed68(_0x42a94a[_0x5343('0x17')][_0x5343('0x16')]);}})['catch'](function(_0x1eb3bd){logger[_0x5343('0x15')](_0x5343('0x11'),_0x1b310a,_0x1eb3bd);_0x2e6df1(_0x1eb3bd);});});}exports[_0x5343('0x18')]=function(_0x35e68c){var _0xd93241=this;return new Promise(function(_0x132505,_0x40ba38){return db[_0x5343('0x19')]['update'](_0x35e68c[_0x5343('0x1a')],{'raw':_0x35e68c[_0x5343('0x1b')]?_0x35e68c[_0x5343('0x1b')][_0x5343('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35e68c[_0x5343('0x1b')]?_0x35e68c['options'][_0x5343('0x1d')]||null:null,'attributes':_0x35e68c[_0x5343('0x1b')]?_0x35e68c[_0x5343('0x1b')][_0x5343('0x1e')]||null:null,'limit':_0x35e68c[_0x5343('0x1b')]?_0x35e68c['options'][_0x5343('0x1f')]||null:null})[_0x5343('0x20')](function(_0x584034){logger[_0x5343('0x10')](_0x5343('0x18'),_0x35e68c);logger[_0x5343('0x12')]('UpdateOpenchannelInteraction',_0x35e68c,JSON['stringify'](_0x584034));_0x132505(_0x584034);})[_0x5343('0x21')](function(_0x5871de){logger[_0x5343('0x15')]('UpdateOpenchannelInteraction',_0x5871de[_0x5343('0x16')],_0x35e68c);_0x40ba38(_0xd93241['error'](0x1f4,_0x5871de['message']));});});};exports[_0x5343('0x22')]=function(_0x4cb858){return new Promise(function(_0x551bf4,_0x5d597e){return db[_0x5343('0x19')]['find']({'where':_0x4cb858[_0x5343('0x1b')]?_0x4cb858['options']['where']||null:null})[_0x5343('0x20')](function(_0x5b44d7){if(_0x5b44d7){return _0x5b44d7['addTags'](_0x4cb858[_0x5343('0x1a')][_0x5343('0x23')],_[_0x5343('0x24')](_0x4cb858[_0x5343('0x1a')],['ids','id'])||{});}})['spread'](function(_0x1f8ee9){logger[_0x5343('0x10')](_0x5343('0x25'),_0x4cb858);logger[_0x5343('0x12')](_0x5343('0x25'),_0x4cb858,JSON[_0x5343('0x14')](_0x1f8ee9));_0x551bf4(_0x1f8ee9);})[_0x5343('0x21')](function(_0x3e4f8f){logger[_0x5343('0x15')](_0x5343('0x25'),_0x3e4f8f[_0x5343('0x16')],_0x4cb858);_0x5d597e(_this[_0x5343('0x15')](0x1f4,_0x3e4f8f['message']));});});};
\ No newline at end of file
index e86f7af..18f6a71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddf0=['save','update','emit','length','openchannelInteraction:','./openchannelInteraction.events'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xddf0,0x101));var _0x0ddf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xddf0[_0x3dd15e];return _0x231fd0;};'use strict';var OpenchannelInteractionEvents=require(_0x0ddf('0x0'));var events=[_0x0ddf('0x1'),'remove',_0x0ddf('0x2')];function createListener(_0x22d1dd,_0x19177c){return function(_0x4b9399){_0x19177c[_0x0ddf('0x3')](_0x22d1dd,_0x4b9399);};}function removeListener(_0x3e3a9f,_0x2aeb02){return function(){OpenchannelInteractionEvents['removeListener'](_0x3e3a9f,_0x2aeb02);};}exports['register']=function(_0x5f20d2){for(var _0x9bfcf8=0x0,_0xf87bb9=events[_0x0ddf('0x4')];_0x9bfcf8<_0xf87bb9;_0x9bfcf8++){var _0xe2b624=events[_0x9bfcf8];var _0x437001=createListener(_0x0ddf('0x5')+_0xe2b624,_0x5f20d2);OpenchannelInteractionEvents['on'](_0xe2b624,_0x437001);}};
\ No newline at end of file
+var _0x9af8=['update','emit','removeListener','register','length','openchannelInteraction:','./openchannelInteraction.events','remove'];(function(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0x9af8,0x14e));var _0x89af=function(_0x1292ef,_0x2e2781){_0x1292ef=_0x1292ef-0x0;var _0x264248=_0x9af8[_0x1292ef];return _0x264248;};'use strict';var OpenchannelInteractionEvents=require(_0x89af('0x0'));var events=['save',_0x89af('0x1'),_0x89af('0x2')];function createListener(_0x3c41d5,_0x17f6f9){return function(_0x237791){_0x17f6f9[_0x89af('0x3')](_0x3c41d5,_0x237791);};}function removeListener(_0x27a0b1,_0xbdee3b){return function(){OpenchannelInteractionEvents[_0x89af('0x4')](_0x27a0b1,_0xbdee3b);};}exports[_0x89af('0x5')]=function(_0x78eb52){for(var _0x22269c=0x0,_0x43c44e=events[_0x89af('0x6')];_0x22269c<_0x43c44e;_0x22269c++){var _0x3052f9=events[_0x22269c];var _0x557936=createListener(_0x89af('0x7')+_0x3052f9,_0x78eb52);OpenchannelInteractionEvents['on'](_0x3052f9,_0x557936);}};
\ No newline at end of file
index af98377..32b58a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a1c=['update','/:id/accept','accept','put','/:id/reject','reject','destroy','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','isAuthenticated','index','/describe','show','openchannel','openchannelmessage:create','create','/:id'];(function(_0x1f2b8a,_0x1273f0){var _0x551652=function(_0x4457dd){while(--_0x4457dd){_0x1f2b8a['push'](_0x1f2b8a['shift']());}};_0x551652(++_0x1273f0);}(_0x0a1c,0x7a));var _0xc0a1=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x0a1c[_0x484e36];return _0xafc85d;};'use strict';var multer=require(_0xc0a1('0x0'));var util=require(_0xc0a1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc0a1('0x2'));var router=express[_0xc0a1('0x3')]();var auth=require(_0xc0a1('0x4'));var interaction=require(_0xc0a1('0x5'));var config=require('../../config/environment');var controller=require(_0xc0a1('0x6'));router[_0xc0a1('0x7')]('/',auth[_0xc0a1('0x8')](),controller[_0xc0a1('0x9')]);router[_0xc0a1('0x7')](_0xc0a1('0xa'),auth[_0xc0a1('0x8')](),controller['describe']);router[_0xc0a1('0x7')]('/:id',auth[_0xc0a1('0x8')](),controller[_0xc0a1('0xb')]);router['post']('/',auth[_0xc0a1('0x8')](),interaction['tracked'](_0xc0a1('0xc'),_0xc0a1('0xd')),controller[_0xc0a1('0xe')]);router['put'](_0xc0a1('0xf'),auth[_0xc0a1('0x8')](),controller[_0xc0a1('0x10')]);router['put'](_0xc0a1('0x11'),auth[_0xc0a1('0x8')](),controller[_0xc0a1('0x12')]);router[_0xc0a1('0x13')](_0xc0a1('0x14'),auth[_0xc0a1('0x8')](),controller[_0xc0a1('0x15')]);router['delete'](_0xc0a1('0xf'),auth[_0xc0a1('0x8')](),controller[_0xc0a1('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x5e67=['reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get','isAuthenticated','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','/:id/accept','accept','put','/:id/reject'];(function(_0x576170,_0x1712ae){var _0x397c70=function(_0x2eb9de){while(--_0x2eb9de){_0x576170['push'](_0x576170['shift']());}};_0x397c70(++_0x1712ae);}(_0x5e67,0x70));var _0x75e6=function(_0x502056,_0x2e7f78){_0x502056=_0x502056-0x0;var _0x53ddde=_0x5e67[_0x502056];return _0x53ddde;};'use strict';var multer=require(_0x75e6('0x0'));var util=require(_0x75e6('0x1'));var path=require(_0x75e6('0x2'));var timeout=require(_0x75e6('0x3'));var express=require(_0x75e6('0x4'));var router=express[_0x75e6('0x5')]();var auth=require(_0x75e6('0x6'));var interaction=require(_0x75e6('0x7'));var config=require(_0x75e6('0x8'));var controller=require(_0x75e6('0x9'));router[_0x75e6('0xa')]('/',auth[_0x75e6('0xb')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0x75e6('0xc')]);router['get'](_0x75e6('0xd'),auth[_0x75e6('0xb')](),controller[_0x75e6('0xe')]);router[_0x75e6('0xf')]('/',auth['isAuthenticated'](),interaction[_0x75e6('0x10')](_0x75e6('0x11'),_0x75e6('0x12')),controller['create']);router['put'](_0x75e6('0xd'),auth[_0x75e6('0xb')](),controller['update']);router['put'](_0x75e6('0x13'),auth[_0x75e6('0xb')](),controller[_0x75e6('0x14')]);router[_0x75e6('0x15')](_0x75e6('0x16'),auth[_0x75e6('0xb')](),controller[_0x75e6('0x17')]);router[_0x75e6('0x18')]('/:id',auth[_0x75e6('0xb')](),controller[_0x75e6('0x19')]);module[_0x75e6('0x1a')]=router;
\ No newline at end of file
index 2e9bb51..0b96cc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed0d=['exports','TEXT','medium','DATE','sequelize'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xed0d,0x1ad));var _0xded0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xed0d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xded0('0x0'));module[_0xded0('0x1')]={'body':{'type':Sequelize[_0xded0('0x2')](_0xded0('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0xded0('0x4')]}};
\ No newline at end of file
+var _0xeb2b=['TEXT','medium','BOOLEAN','ENUM','out','sequelize','exports'];(function(_0xf2662b,_0x4d8f41){var _0x257dc7=function(_0x46b1d1){while(--_0x46b1d1){_0xf2662b['push'](_0xf2662b['shift']());}};_0x257dc7(++_0x4d8f41);}(_0xeb2b,0x10f));var _0xbeb2=function(_0x200f29,_0x3af579){_0x200f29=_0x200f29-0x0;var _0x200077=_0xeb2b[_0x200f29];return _0x200077;};'use strict';var Sequelize=require(_0xbeb2('0x0'));module[_0xbeb2('0x1')]={'body':{'type':Sequelize[_0xbeb2('0x2')](_0xbeb2('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xbeb2('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xbeb2('0x5')]('in',_0xbeb2('0x6')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index df44c3e..8ad4b13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5f8=['squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','count','offset','limit','set','apply','update','then','destroy','end','stack','name','send','index','OpenchannelMessage','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','day','merge','filter','VIRTUAL','field','options','includeAll','include','rows','show','params','find','create','body','describe','openchannel-interactions','accept','openchannel','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','CmContact','Contact','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','format','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','manual','interface','channel','event','acceptmessage','reject','SIP/%s','EventManager','rejectmessage','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','lodash'];(function(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0xb5f8,0x6d));var _0x8b5f=function(_0x3fbfb6,_0x5be059){_0x3fbfb6=_0x3fbfb6-0x0;var _0x59ed60=_0xb5f8[_0x3fbfb6];return _0x59ed60;};'use strict';var pdf=require(_0x8b5f('0x0'));var emlformat=require(_0x8b5f('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x8b5f('0x2'));var jsonpatch=require(_0x8b5f('0x3'));var rp=require(_0x8b5f('0x4'));var moment=require(_0x8b5f('0x5'));var BPromise=require(_0x8b5f('0x6'));var Mustache=require('mustache');var util=require(_0x8b5f('0x7'));var path=require(_0x8b5f('0x8'));var sox=require(_0x8b5f('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x8b5f('0xa'));var squel=require(_0x8b5f('0xb'));var crypto=require(_0x8b5f('0xc'));var jsforce=require(_0x8b5f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8b5f('0xe'));var querystring=require(_0x8b5f('0xf'));var Papa=require(_0x8b5f('0x10'));var Redis=require(_0x8b5f('0x11'));var qs=require(_0x8b5f('0x12'));var logger=require(_0x8b5f('0x13'))(_0x8b5f('0x14'));var utils=require(_0x8b5f('0x15'));var config=require('../../config/environment');var db=require(_0x8b5f('0x16'))['db'];config['redis']=_['defaults'](config[_0x8b5f('0x17')],{'host':_0x8b5f('0x18'),'port':0x18eb});var socket=require(_0x8b5f('0x19'))(new Redis(config[_0x8b5f('0x17')]));require(_0x8b5f('0x1a'))[_0x8b5f('0x1b')](socket);var jayson=require(_0x8b5f('0x1c'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x8b5f('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41d871,_0x1155d1,_0x4f30e5,_0x5df3e8){return new BPromise(function(_0x24a7f2,_0xb12785){var _0x4e8172=_0x5df3e8||client;return _0x4e8172[_0x8b5f('0x1e')](_0x41d871,_0x4f30e5)['then'](function(_0x42ef2d){logger[_0x8b5f('0x1f')](_0x8b5f('0x20'),_0x1155d1,_0x8b5f('0x21'));logger[_0x8b5f('0x22')](_0x8b5f('0x23'),_0x1155d1,_0x8b5f('0x21'),JSON[_0x8b5f('0x24')](_0x42ef2d));if(_0x42ef2d['error']){if(_0x42ef2d[_0x8b5f('0x25')][_0x8b5f('0x26')]===0x1f4){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x1155d1,_0x42ef2d['error'][_0x8b5f('0x27')]);return _0xb12785(_0x42ef2d['error'][_0x8b5f('0x27')]);}logger[_0x8b5f('0x25')](_0x8b5f('0x20'),_0x1155d1,_0x42ef2d[_0x8b5f('0x25')]['message']);return _0x24a7f2(_0x42ef2d['error']['message']);}else{logger[_0x8b5f('0x1f')](_0x8b5f('0x20'),_0x1155d1,_0x8b5f('0x21'));_0x24a7f2(_0x42ef2d[_0x8b5f('0x28')]['message']);}})[_0x8b5f('0x29')](function(_0x32079f){logger['error'](_0x8b5f('0x20'),_0x1155d1,_0x32079f);_0xb12785(_0x32079f);});});}function respondWithStatusCode(_0x2868ba,_0x360b0a){_0x360b0a=_0x360b0a||0xcc;return function(_0x3f332a){if(_0x3f332a){return _0x2868ba[_0x8b5f('0x2a')](_0x360b0a);}return _0x2868ba['status'](_0x360b0a)['end']();};}function respondWithResult(_0x195249,_0x11113d){_0x11113d=_0x11113d||0xc8;return function(_0x496e4d){if(_0x496e4d){return _0x195249[_0x8b5f('0x2b')](_0x11113d)[_0x8b5f('0x2c')](_0x496e4d);}};}function respondWithFilteredResult(_0x4443f6,_0x3de2ea){return function(_0x2dd090){if(_0x2dd090){var _0x275d61=_0x2dd090[_0x8b5f('0x2d')],_0x616918=_0x3de2ea[_0x8b5f('0x2e')],_0x271eb3=_0x3de2ea[_0x8b5f('0x2e')]+_0x3de2ea[_0x8b5f('0x2f')],_0x3f30bc;if(_0x271eb3>=_0x275d61){_0x271eb3=_0x275d61;_0x3f30bc=0xc8;}else{_0x3f30bc=0xce;}_0x4443f6[_0x8b5f('0x2b')](_0x3f30bc);return _0x4443f6[_0x8b5f('0x30')]('Content-Range',_0x616918+'-'+_0x271eb3+'/'+_0x275d61)[_0x8b5f('0x2c')](_0x2dd090);}return null;};}function patchUpdates(_0x40749d){return function(_0x2ae36a){try{jsonpatch[_0x8b5f('0x31')](_0x2ae36a,_0x40749d,!![]);}catch(_0x1b948d){return BPromise['reject'](_0x1b948d);}return _0x2ae36a['save']();};}function saveUpdates(_0x537d63,_0x4fd2e6){return function(_0x13eb4c){if(_0x13eb4c){return _0x13eb4c[_0x8b5f('0x32')](_0x537d63)[_0x8b5f('0x33')](function(_0x17a2ff){return _0x17a2ff;});}return null;};}function removeEntity(_0x4f7c6d,_0x38b8aa){return function(_0x1af2b8){if(_0x1af2b8){return _0x1af2b8[_0x8b5f('0x34')]()['then'](function(){_0x4f7c6d['status'](0xcc)[_0x8b5f('0x35')]();});}};}function handleEntityNotFound(_0x1ddccd,_0x42154e){return function(_0x3acc4f){if(!_0x3acc4f){_0x1ddccd[_0x8b5f('0x2a')](0x194);}return _0x3acc4f;};}function handleError(_0x52310b,_0x19646c){_0x19646c=_0x19646c||0x1f4;return function(_0x152090){logger[_0x8b5f('0x25')](_0x152090[_0x8b5f('0x36')]);if(_0x152090[_0x8b5f('0x37')]){delete _0x152090[_0x8b5f('0x37')];}_0x52310b[_0x8b5f('0x2b')](_0x19646c)[_0x8b5f('0x38')](_0x152090);};}exports[_0x8b5f('0x39')]=function(_0x581ca0,_0x2aeceb){var _0xfe8381={},_0x525686={},_0x9bdd7d={'count':0x0,'rows':[]};var _0xde40c2=db[_0x8b5f('0x3a')][_0x8b5f('0x3b')];_0x525686[_0x8b5f('0x3c')]=_[_0x8b5f('0x3d')](_0xde40c2);var _0xe7527f={'dateStart':_0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x3f')],'dateEnd':_0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x40')]};delete _0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x3f')];delete _0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x40')];_0x525686[_0x8b5f('0x3e')]=_[_0x8b5f('0x3d')](_0x581ca0[_0x8b5f('0x3e')]);_0x525686[_0x8b5f('0x41')]=_[_0x8b5f('0x42')](_0x525686[_0x8b5f('0x3c')],_0x525686[_0x8b5f('0x3e')]);_0xfe8381[_0x8b5f('0x43')]=_[_0x8b5f('0x42')](_0x525686[_0x8b5f('0x3c')],qs[_0x8b5f('0x44')](_0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x44')]));_0xfe8381[_0x8b5f('0x43')]=_0xfe8381[_0x8b5f('0x43')][_0x8b5f('0x45')]?_0xfe8381[_0x8b5f('0x43')]:_0x525686[_0x8b5f('0x3c')];if(!_0x581ca0['query'][_0x8b5f('0x46')]('nolimit')){_0xfe8381['limit']=qs['limit'](_0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x2f')]);_0xfe8381[_0x8b5f('0x2e')]=qs[_0x8b5f('0x2e')](_0x581ca0['query'][_0x8b5f('0x2e')]);}_0xfe8381['order']=qs[_0x8b5f('0x47')](_0x581ca0['query']['sort']);_0xfe8381[_0x8b5f('0x48')]=qs['filters'](_[_0x8b5f('0x49')](_0x581ca0[_0x8b5f('0x3e')],_0x525686[_0x8b5f('0x41')]));if(_0xe7527f[_0x8b5f('0x3f')]){if(_0xe7527f[_0x8b5f('0x40')]){_0xe7527f['dateEnd']=moment(_0xe7527f[_0x8b5f('0x40')])['add'](0x1,_0x8b5f('0x4a'));}else{_0xe7527f['dateEnd']=moment(_0xe7527f[_0x8b5f('0x3f')])['add'](0x1,_0x8b5f('0x4a'));}_[_0x8b5f('0x4b')](_0xfe8381[_0x8b5f('0x48')],{'createdAt':{'$gte':_0xe7527f['dateStart'],'$lte':_0xe7527f[_0x8b5f('0x40')]}});}if(_0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x4c')]){_0xfe8381['where']=_[_0x8b5f('0x4b')](_0xfe8381[_0x8b5f('0x48')],{'$or':_['map'](_0xde40c2,function(_0x109435){if(_0x109435['type']['key']!==_0x8b5f('0x4d')){var _0x19d1c4={};_0x19d1c4[_0x109435[_0x8b5f('0x4e')]]={'$like':'%'+_0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x4c')]+'%'};return _0x19d1c4;}})});}_0xfe8381=_[_0x8b5f('0x4b')]({},_0xfe8381,_0x581ca0[_0x8b5f('0x4f')]);var _0xa0bf3f={'where':_0xfe8381['where']};return db[_0x8b5f('0x3a')]['count'](_0xa0bf3f)[_0x8b5f('0x33')](function(_0x5a60fd){_0x9bdd7d[_0x8b5f('0x2d')]=_0x5a60fd;if(_0x581ca0[_0x8b5f('0x3e')][_0x8b5f('0x50')]){_0xfe8381[_0x8b5f('0x51')]=[{'all':!![]}];}return db[_0x8b5f('0x3a')]['findAll'](_0xfe8381);})['then'](function(_0x580225){_0x9bdd7d[_0x8b5f('0x52')]=_0x580225;return _0x9bdd7d;})[_0x8b5f('0x33')](respondWithFilteredResult(_0x2aeceb,_0xfe8381))['catch'](handleError(_0x2aeceb,null));};exports[_0x8b5f('0x53')]=function(_0x24cf9e,_0x5d1637){var _0x43ec6d={'raw':!![],'where':{'id':_0x24cf9e[_0x8b5f('0x54')]['id']}},_0x41724b={};_0x41724b[_0x8b5f('0x3c')]=_[_0x8b5f('0x3d')](db[_0x8b5f('0x3a')]['rawAttributes']);_0x41724b[_0x8b5f('0x3e')]=_[_0x8b5f('0x3d')](_0x24cf9e[_0x8b5f('0x3e')]);_0x41724b[_0x8b5f('0x41')]=_[_0x8b5f('0x42')](_0x41724b[_0x8b5f('0x3c')],_0x41724b[_0x8b5f('0x3e')]);_0x43ec6d[_0x8b5f('0x43')]=_[_0x8b5f('0x42')](_0x41724b[_0x8b5f('0x3c')],qs[_0x8b5f('0x44')](_0x24cf9e[_0x8b5f('0x3e')][_0x8b5f('0x44')]));_0x43ec6d[_0x8b5f('0x43')]=_0x43ec6d[_0x8b5f('0x43')][_0x8b5f('0x45')]?_0x43ec6d['attributes']:_0x41724b[_0x8b5f('0x3c')];if(_0x24cf9e[_0x8b5f('0x3e')][_0x8b5f('0x50')]){_0x43ec6d[_0x8b5f('0x51')]=[{'all':!![]}];}_0x43ec6d=_[_0x8b5f('0x4b')]({},_0x43ec6d,_0x24cf9e[_0x8b5f('0x4f')]);return db[_0x8b5f('0x3a')][_0x8b5f('0x55')](_0x43ec6d)[_0x8b5f('0x33')](handleEntityNotFound(_0x5d1637,null))[_0x8b5f('0x33')](respondWithResult(_0x5d1637,null))[_0x8b5f('0x29')](handleError(_0x5d1637,null));};exports[_0x8b5f('0x56')]=function(_0x50659c,_0x4e29d6){return db[_0x8b5f('0x3a')][_0x8b5f('0x56')](_0x50659c[_0x8b5f('0x57')],{})[_0x8b5f('0x33')](respondWithResult(_0x4e29d6,0xc9))['catch'](handleError(_0x4e29d6,null));};exports['update']=function(_0x1b6dd8,_0x1e9219){if(_0x1b6dd8[_0x8b5f('0x57')]['id']){delete _0x1b6dd8[_0x8b5f('0x57')]['id'];}return db[_0x8b5f('0x3a')][_0x8b5f('0x55')]({'where':{'id':_0x1b6dd8[_0x8b5f('0x54')]['id']}})['then'](handleEntityNotFound(_0x1e9219,null))[_0x8b5f('0x33')](saveUpdates(_0x1b6dd8[_0x8b5f('0x57')],null))[_0x8b5f('0x33')](respondWithResult(_0x1e9219,null))['catch'](handleError(_0x1e9219,null));};exports[_0x8b5f('0x34')]=function(_0x1cfc7c,_0x2f844b){return db[_0x8b5f('0x3a')][_0x8b5f('0x55')]({'where':{'id':_0x1cfc7c[_0x8b5f('0x54')]['id']}})[_0x8b5f('0x33')](handleEntityNotFound(_0x2f844b,null))[_0x8b5f('0x33')](removeEntity(_0x2f844b,null))[_0x8b5f('0x29')](handleError(_0x2f844b,null));};exports[_0x8b5f('0x58')]=function(_0x340a5d,_0x5263ef){return db[_0x8b5f('0x3a')][_0x8b5f('0x58')]()[_0x8b5f('0x33')](respondWithResult(_0x5263ef,null))[_0x8b5f('0x29')](handleError(_0x5263ef,null));};var interaction_log=require(_0x8b5f('0x13'))(_0x8b5f('0x59'));exports[_0x8b5f('0x5a')]=function(_0x22ef6e,_0x52eeab,_0x45003d){var _0x13d5c6={'channel':_0x8b5f('0x5b')};if(_0x22ef6e[_0x8b5f('0x57')]['id']){delete _0x22ef6e[_0x8b5f('0x57')]['id'];}_0x22ef6e[_0x8b5f('0x57')][_0x8b5f('0x5c')]=!![];_0x22ef6e[_0x8b5f('0x57')][_0x8b5f('0x5d')]=moment()['format'](_0x8b5f('0x5e'));_0x22ef6e[_0x8b5f('0x57')]['UserId']=_0x22ef6e[_0x8b5f('0x57')][_0x8b5f('0x5f')]||_0x22ef6e['user']['id'];return db[_0x8b5f('0x3a')][_0x8b5f('0x55')]({'where':{'id':_0x22ef6e[_0x8b5f('0x54')]['id'],'UserId':null},'include':[{'model':db[_0x8b5f('0x60')],'as':_0x8b5f('0x61')}]})[_0x8b5f('0x33')](handleEntityNotFound(_0x52eeab,null))[_0x8b5f('0x33')](saveUpdates(_0x22ef6e[_0x8b5f('0x57')],null))[_0x8b5f('0x33')](function(_0x5d766c){if(_0x5d766c){_0x13d5c6[_0x8b5f('0x27')]=_0x5d766c['get']({'plain':!![]});return db[_0x8b5f('0x62')][_0x8b5f('0x55')]({'where':{'id':_0x5d766c[_0x8b5f('0x63')]}});}return null;})[_0x8b5f('0x33')](handleEntityNotFound(_0x52eeab,null))[_0x8b5f('0x33')](function(_0x15e2e8){if(_0x15e2e8){return _0x15e2e8['update']({'UserId':_0x22ef6e[_0x8b5f('0x57')]['UserId'],'read1stAt':_[_0x8b5f('0x64')](_0x15e2e8[_0x8b5f('0x65')])?moment()[_0x8b5f('0x66')](_0x8b5f('0x5e')):undefined});}return null;})['then'](function(_0x3cbbd5){if(_0x3cbbd5){_0x13d5c6[_0x8b5f('0x67')]=_0x3cbbd5[_0x8b5f('0x68')]({'plain':!![]});interaction_log[_0x8b5f('0x1f')](_0x8b5f('0x69'),_0x22ef6e['user']['id'],_0x22ef6e['user'][_0x8b5f('0x37')],_0x22ef6e[_0x8b5f('0x6a')][_0x8b5f('0x6b')],_0x13d5c6['interaction']['id'],_0x22ef6e[_0x8b5f('0x57')]?JSON[_0x8b5f('0x24')](_0x22ef6e[_0x8b5f('0x57')]):_0x8b5f('0x6c'));return respondWithRpcPromise(_0x8b5f('0x6d'),_0x8b5f('0x6e'),_0x13d5c6);}return null;})[_0x8b5f('0x33')](function(_0x28ad73){if(_0x28ad73){if(_0x22ef6e[_0x8b5f('0x57')][_0x8b5f('0x6f')]){_0x13d5c6['message'][_0x8b5f('0x70')]=util[_0x8b5f('0x66')]('SIP/%s',_0x22ef6e[_0x8b5f('0x6a')][_0x8b5f('0x37')]);_0x13d5c6[_0x8b5f('0x27')][_0x8b5f('0x71')]=_0x13d5c6[_0x8b5f('0x71')];_0x13d5c6['message'][_0x8b5f('0x72')]='accept';return respondWithRpcPromise('EventManager','EventManager',{'event':_0x8b5f('0x73'),'message':_0x13d5c6[_0x8b5f('0x27')]},client9002)['then'](function(){return _0x13d5c6;});}return _0x13d5c6;}return null;})[_0x8b5f('0x33')](respondWithResult(_0x52eeab,null))[_0x8b5f('0x29')](handleError(_0x52eeab,null));};var interaction_log=require(_0x8b5f('0x13'))('openchannel-interactions');exports[_0x8b5f('0x74')]=function(_0x3c935f,_0x3b338f,_0x575150){var _0x264150={'agent':{},'channel':_0x8b5f('0x5b')};if(_0x3c935f['body']['id']){delete _0x3c935f['body']['id'];}_0x3c935f[_0x8b5f('0x57')][_0x8b5f('0x5f')]=_0x3c935f[_0x8b5f('0x57')][_0x8b5f('0x5f')]||_0x3c935f[_0x8b5f('0x6a')]['id'];_0x264150['agent']['id']=_0x3c935f[_0x8b5f('0x57')]['UserId'];return db[_0x8b5f('0x3a')][_0x8b5f('0x55')]({'where':{'id':_0x3c935f[_0x8b5f('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3b338f,null))[_0x8b5f('0x33')](function(_0x51bae0){if(_0x51bae0){_0x264150[_0x8b5f('0x27')]=_0x51bae0[_0x8b5f('0x68')]({'plain':!![]});return db[_0x8b5f('0x62')][_0x8b5f('0x55')]({'where':{'id':_0x51bae0[_0x8b5f('0x63')]}});}return null;})[_0x8b5f('0x33')](handleEntityNotFound(_0x3b338f,null))[_0x8b5f('0x33')](function(_0x21f792){if(_0x21f792){_0x264150[_0x8b5f('0x67')]=_0x21f792[_0x8b5f('0x68')]({'plain':!![]});interaction_log[_0x8b5f('0x1f')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3c935f[_0x8b5f('0x6a')]['id'],_0x3c935f[_0x8b5f('0x6a')][_0x8b5f('0x37')],_0x3c935f['user']['role'],_0x264150[_0x8b5f('0x67')]['id'],_0x3c935f[_0x8b5f('0x57')]?JSON['stringify'](_0x3c935f[_0x8b5f('0x57')]):_0x8b5f('0x6c'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x264150);}return null;})[_0x8b5f('0x33')](function(_0xb408a5){if(_0xb408a5){_0xb408a5[_0x8b5f('0x27')][_0x8b5f('0x70')]=util[_0x8b5f('0x66')](_0x8b5f('0x75'),_0x3c935f[_0x8b5f('0x6a')][_0x8b5f('0x37')]);_0xb408a5[_0x8b5f('0x27')]['channel']=_0x264150[_0x8b5f('0x71')];_0xb408a5[_0x8b5f('0x27')]['event']=_0x8b5f('0x74');respondWithRpcPromise(_0x8b5f('0x76'),_0x8b5f('0x76'),{'event':_0x8b5f('0x77'),'message':_0xb408a5['message']},client9002);return _0x264150;}return null;})['then'](respondWithResult(_0x3b338f,null))[_0x8b5f('0x29')](handleError(_0x3b338f,null));};
\ No newline at end of file
+var _0x33ee=['register','jayson/promise','http','client','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','sendStatus','status','end','offset','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','name','index','OpenchannelMessage','rawAttributes','model','keys','query','dateStart','dateEnd','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','add','day','merge','type','key','VIRTUAL','field','options','count','includeAll','include','rows','show','params','length','find','body','../../config/logger','openchannel-interactions','accept','openchannel','read','readAt','format','UserId','user','CmContact','Contact','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','AcceptMessage','manual','interface','channel','event','EventManager','acceptmessage','agent','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','RejectMessage','rejectMessage','SIP/%s','rejectmessage','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket'];(function(_0x21125f,_0x8079f8){var _0x2f421d=function(_0x231299){while(--_0x231299){_0x21125f['push'](_0x21125f['shift']());}};_0x2f421d(++_0x8079f8);}(_0x33ee,0xde));var _0xe33e=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x33ee[_0x255d5b];return _0x3e141a;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xe33e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe33e('0x1'));var jsonpatch=require(_0xe33e('0x2'));var rp=require(_0xe33e('0x3'));var moment=require(_0xe33e('0x4'));var BPromise=require(_0xe33e('0x5'));var Mustache=require(_0xe33e('0x6'));var util=require('util');var path=require(_0xe33e('0x7'));var sox=require(_0xe33e('0x8'));var csv=require(_0xe33e('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xe33e('0xa'));var squel=require(_0xe33e('0xb'));var crypto=require(_0xe33e('0xc'));var jsforce=require(_0xe33e('0xd'));var deskjs=require(_0xe33e('0xe'));var toCsv=require(_0xe33e('0x9'));var querystring=require(_0xe33e('0xf'));var Papa=require('papaparse');var Redis=require(_0xe33e('0x10'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xe33e('0x11'));var utils=require('../../config/utils');var config=require(_0xe33e('0x12'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xe33e('0x13')](config[_0xe33e('0x14')],{'host':_0xe33e('0x15'),'port':0x18eb});var socket=require(_0xe33e('0x16'))(new Redis(config[_0xe33e('0x14')]));require(_0xe33e('0x17'))[_0xe33e('0x18')](socket);var jayson=require(_0xe33e('0x19'));var client=jayson['client'][_0xe33e('0x1a')]({'port':0x232c});var client9002=jayson[_0xe33e('0x1b')][_0xe33e('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x47537d,_0x14026a,_0xfc4032,_0x2eca6c){return new BPromise(function(_0x4bee51,_0x5bb82e){var _0x1a14f7=_0x2eca6c||client;return _0x1a14f7[_0xe33e('0x1c')](_0x47537d,_0xfc4032)['then'](function(_0x5c27b5){logger[_0xe33e('0x1d')](_0xe33e('0x1e'),_0x14026a,_0xe33e('0x1f'));logger['debug'](_0xe33e('0x20'),_0x14026a,_0xe33e('0x1f'),JSON[_0xe33e('0x21')](_0x5c27b5));if(_0x5c27b5['error']){if(_0x5c27b5['error'][_0xe33e('0x22')]===0x1f4){logger[_0xe33e('0x23')](_0xe33e('0x1e'),_0x14026a,_0x5c27b5[_0xe33e('0x23')][_0xe33e('0x24')]);return _0x5bb82e(_0x5c27b5['error'][_0xe33e('0x24')]);}logger[_0xe33e('0x23')]('OpenchannelMessage,\x20%s,\x20%s',_0x14026a,_0x5c27b5[_0xe33e('0x23')][_0xe33e('0x24')]);return _0x4bee51(_0x5c27b5['error']['message']);}else{logger[_0xe33e('0x1d')]('OpenchannelMessage,\x20%s,\x20%s',_0x14026a,_0xe33e('0x1f'));_0x4bee51(_0x5c27b5[_0xe33e('0x25')][_0xe33e('0x24')]);}})[_0xe33e('0x26')](function(_0x4d213d){logger[_0xe33e('0x23')](_0xe33e('0x1e'),_0x14026a,_0x4d213d);_0x5bb82e(_0x4d213d);});});}function respondWithStatusCode(_0x29682b,_0x2b9447){_0x2b9447=_0x2b9447||0xcc;return function(_0x54554c){if(_0x54554c){return _0x29682b[_0xe33e('0x27')](_0x2b9447);}return _0x29682b[_0xe33e('0x28')](_0x2b9447)[_0xe33e('0x29')]();};}function respondWithResult(_0x510bcc,_0x24df53){_0x24df53=_0x24df53||0xc8;return function(_0x32ff0a){if(_0x32ff0a){return _0x510bcc['status'](_0x24df53)['json'](_0x32ff0a);}};}function respondWithFilteredResult(_0x497d70,_0x9edc87){return function(_0x470a31){if(_0x470a31){var _0x574e62=_0x470a31['count'],_0x450c1d=_0x9edc87[_0xe33e('0x2a')],_0x19f03c=_0x9edc87['offset']+_0x9edc87[_0xe33e('0x2b')],_0x3599bd;if(_0x19f03c>=_0x574e62){_0x19f03c=_0x574e62;_0x3599bd=0xc8;}else{_0x3599bd=0xce;}_0x497d70[_0xe33e('0x28')](_0x3599bd);return _0x497d70[_0xe33e('0x2c')](_0xe33e('0x2d'),_0x450c1d+'-'+_0x19f03c+'/'+_0x574e62)[_0xe33e('0x2e')](_0x470a31);}return null;};}function patchUpdates(_0x205312){return function(_0x3739a7){try{jsonpatch[_0xe33e('0x2f')](_0x3739a7,_0x205312,!![]);}catch(_0x3936ab){return BPromise[_0xe33e('0x30')](_0x3936ab);}return _0x3739a7[_0xe33e('0x31')]();};}function saveUpdates(_0x10c7e5,_0x4f4fef){return function(_0x218872){if(_0x218872){return _0x218872[_0xe33e('0x32')](_0x10c7e5)['then'](function(_0x250bee){return _0x250bee;});}return null;};}function removeEntity(_0x1535ff,_0xe357b){return function(_0x2022ae){if(_0x2022ae){return _0x2022ae[_0xe33e('0x33')]()[_0xe33e('0x34')](function(){_0x1535ff['status'](0xcc)[_0xe33e('0x29')]();});}};}function handleEntityNotFound(_0x31d863,_0x860f1e){return function(_0x1245ff){if(!_0x1245ff){_0x31d863[_0xe33e('0x27')](0x194);}return _0x1245ff;};}function handleError(_0x3b2ae2,_0x478777){_0x478777=_0x478777||0x1f4;return function(_0x202c4e){logger['error'](_0x202c4e['stack']);if(_0x202c4e['name']){delete _0x202c4e[_0xe33e('0x35')];}_0x3b2ae2[_0xe33e('0x28')](_0x478777)['send'](_0x202c4e);};}exports[_0xe33e('0x36')]=function(_0x52aa41,_0x1cfb71){var _0x58947c={},_0x3a5b46={},_0x2f3786={'count':0x0,'rows':[]};var _0x1a99fd=db[_0xe33e('0x37')][_0xe33e('0x38')];_0x3a5b46[_0xe33e('0x39')]=_[_0xe33e('0x3a')](_0x1a99fd);var _0x5c60ee={'dateStart':_0x52aa41[_0xe33e('0x3b')][_0xe33e('0x3c')],'dateEnd':_0x52aa41['query'][_0xe33e('0x3d')]};delete _0x52aa41['query'][_0xe33e('0x3c')];delete _0x52aa41[_0xe33e('0x3b')][_0xe33e('0x3d')];_0x3a5b46[_0xe33e('0x3b')]=_['keys'](_0x52aa41['query']);_0x3a5b46['filters']=_['intersection'](_0x3a5b46[_0xe33e('0x39')],_0x3a5b46[_0xe33e('0x3b')]);_0x58947c[_0xe33e('0x3e')]=_[_0xe33e('0x3f')](_0x3a5b46['model'],qs[_0xe33e('0x40')](_0x52aa41[_0xe33e('0x3b')]['fields']));_0x58947c[_0xe33e('0x3e')]=_0x58947c[_0xe33e('0x3e')]['length']?_0x58947c[_0xe33e('0x3e')]:_0x3a5b46[_0xe33e('0x39')];if(!_0x52aa41[_0xe33e('0x3b')][_0xe33e('0x41')](_0xe33e('0x42'))){_0x58947c[_0xe33e('0x2b')]=qs[_0xe33e('0x2b')](_0x52aa41[_0xe33e('0x3b')][_0xe33e('0x2b')]);_0x58947c[_0xe33e('0x2a')]=qs[_0xe33e('0x2a')](_0x52aa41[_0xe33e('0x3b')][_0xe33e('0x2a')]);}_0x58947c[_0xe33e('0x43')]=qs['sort'](_0x52aa41[_0xe33e('0x3b')][_0xe33e('0x44')]);_0x58947c[_0xe33e('0x45')]=qs[_0xe33e('0x46')](_[_0xe33e('0x47')](_0x52aa41[_0xe33e('0x3b')],_0x3a5b46[_0xe33e('0x46')]));if(_0x5c60ee[_0xe33e('0x3c')]){if(_0x5c60ee[_0xe33e('0x3d')]){_0x5c60ee[_0xe33e('0x3d')]=moment(_0x5c60ee[_0xe33e('0x3d')])[_0xe33e('0x48')](0x1,_0xe33e('0x49'));}else{_0x5c60ee[_0xe33e('0x3d')]=moment(_0x5c60ee[_0xe33e('0x3c')])[_0xe33e('0x48')](0x1,'day');}_['merge'](_0x58947c[_0xe33e('0x45')],{'createdAt':{'$gte':_0x5c60ee[_0xe33e('0x3c')],'$lte':_0x5c60ee[_0xe33e('0x3d')]}});}if(_0x52aa41[_0xe33e('0x3b')]['filter']){_0x58947c[_0xe33e('0x45')]=_[_0xe33e('0x4a')](_0x58947c[_0xe33e('0x45')],{'$or':_['map'](_0x1a99fd,function(_0x30ab9d){if(_0x30ab9d[_0xe33e('0x4b')][_0xe33e('0x4c')]!==_0xe33e('0x4d')){var _0x5480dd={};_0x5480dd[_0x30ab9d[_0xe33e('0x4e')]]={'$like':'%'+_0x52aa41[_0xe33e('0x3b')]['filter']+'%'};return _0x5480dd;}})});}_0x58947c=_['merge']({},_0x58947c,_0x52aa41[_0xe33e('0x4f')]);var _0x2e8ebc={'where':_0x58947c[_0xe33e('0x45')]};return db[_0xe33e('0x37')][_0xe33e('0x50')](_0x2e8ebc)[_0xe33e('0x34')](function(_0x12112a){_0x2f3786[_0xe33e('0x50')]=_0x12112a;if(_0x52aa41[_0xe33e('0x3b')][_0xe33e('0x51')]){_0x58947c[_0xe33e('0x52')]=[{'all':!![]}];}return db[_0xe33e('0x37')]['findAll'](_0x58947c);})[_0xe33e('0x34')](function(_0x51b518){_0x2f3786[_0xe33e('0x53')]=_0x51b518;return _0x2f3786;})[_0xe33e('0x34')](respondWithFilteredResult(_0x1cfb71,_0x58947c))[_0xe33e('0x26')](handleError(_0x1cfb71,null));};exports[_0xe33e('0x54')]=function(_0x20632e,_0x586912){var _0x59407b={'raw':!![],'where':{'id':_0x20632e[_0xe33e('0x55')]['id']}},_0x4a4214={};_0x4a4214[_0xe33e('0x39')]=_[_0xe33e('0x3a')](db[_0xe33e('0x37')][_0xe33e('0x38')]);_0x4a4214['query']=_[_0xe33e('0x3a')](_0x20632e['query']);_0x4a4214[_0xe33e('0x46')]=_[_0xe33e('0x3f')](_0x4a4214[_0xe33e('0x39')],_0x4a4214[_0xe33e('0x3b')]);_0x59407b[_0xe33e('0x3e')]=_[_0xe33e('0x3f')](_0x4a4214[_0xe33e('0x39')],qs[_0xe33e('0x40')](_0x20632e[_0xe33e('0x3b')][_0xe33e('0x40')]));_0x59407b['attributes']=_0x59407b[_0xe33e('0x3e')][_0xe33e('0x56')]?_0x59407b[_0xe33e('0x3e')]:_0x4a4214['model'];if(_0x20632e[_0xe33e('0x3b')][_0xe33e('0x51')]){_0x59407b[_0xe33e('0x52')]=[{'all':!![]}];}_0x59407b=_['merge']({},_0x59407b,_0x20632e['options']);return db[_0xe33e('0x37')][_0xe33e('0x57')](_0x59407b)[_0xe33e('0x34')](handleEntityNotFound(_0x586912,null))[_0xe33e('0x34')](respondWithResult(_0x586912,null))[_0xe33e('0x26')](handleError(_0x586912,null));};exports['create']=function(_0x3bbacf,_0x39cbaa){return db[_0xe33e('0x37')]['create'](_0x3bbacf[_0xe33e('0x58')],{})['then'](respondWithResult(_0x39cbaa,0xc9))['catch'](handleError(_0x39cbaa,null));};exports['update']=function(_0x5c7998,_0x4dfc62){if(_0x5c7998[_0xe33e('0x58')]['id']){delete _0x5c7998[_0xe33e('0x58')]['id'];}return db[_0xe33e('0x37')][_0xe33e('0x57')]({'where':{'id':_0x5c7998[_0xe33e('0x55')]['id']}})['then'](handleEntityNotFound(_0x4dfc62,null))[_0xe33e('0x34')](saveUpdates(_0x5c7998[_0xe33e('0x58')],null))['then'](respondWithResult(_0x4dfc62,null))[_0xe33e('0x26')](handleError(_0x4dfc62,null));};exports[_0xe33e('0x33')]=function(_0x117eaf,_0x533515){return db[_0xe33e('0x37')][_0xe33e('0x57')]({'where':{'id':_0x117eaf[_0xe33e('0x55')]['id']}})[_0xe33e('0x34')](handleEntityNotFound(_0x533515,null))[_0xe33e('0x34')](removeEntity(_0x533515,null))[_0xe33e('0x26')](handleError(_0x533515,null));};exports['describe']=function(_0x4f47f3,_0x31d222){return db['OpenchannelMessage']['describe']()[_0xe33e('0x34')](respondWithResult(_0x31d222,null))[_0xe33e('0x26')](handleError(_0x31d222,null));};var interaction_log=require(_0xe33e('0x59'))(_0xe33e('0x5a'));exports[_0xe33e('0x5b')]=function(_0x46ecac,_0x206c4c,_0x47b2b3){var _0x111faa={'channel':_0xe33e('0x5c')};if(_0x46ecac['body']['id']){delete _0x46ecac['body']['id'];}_0x46ecac[_0xe33e('0x58')][_0xe33e('0x5d')]=!![];_0x46ecac[_0xe33e('0x58')][_0xe33e('0x5e')]=moment()[_0xe33e('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x46ecac[_0xe33e('0x58')][_0xe33e('0x60')]=_0x46ecac[_0xe33e('0x58')]['UserId']||_0x46ecac[_0xe33e('0x61')]['id'];return db['OpenchannelMessage'][_0xe33e('0x57')]({'where':{'id':_0x46ecac[_0xe33e('0x55')]['id'],'UserId':null},'include':[{'model':db[_0xe33e('0x62')],'as':_0xe33e('0x63')}]})[_0xe33e('0x34')](handleEntityNotFound(_0x206c4c,null))[_0xe33e('0x34')](saveUpdates(_0x46ecac['body'],null))[_0xe33e('0x34')](function(_0x5e9b2f){if(_0x5e9b2f){_0x111faa[_0xe33e('0x24')]=_0x5e9b2f['get']({'plain':!![]});return db[_0xe33e('0x64')][_0xe33e('0x57')]({'where':{'id':_0x5e9b2f[_0xe33e('0x65')]}});}return null;})[_0xe33e('0x34')](handleEntityNotFound(_0x206c4c,null))[_0xe33e('0x34')](function(_0x2b9823){if(_0x2b9823){return _0x2b9823[_0xe33e('0x32')]({'UserId':_0x46ecac[_0xe33e('0x58')][_0xe33e('0x60')],'read1stAt':_[_0xe33e('0x66')](_0x2b9823[_0xe33e('0x67')])?moment()['format'](_0xe33e('0x68')):undefined});}return null;})[_0xe33e('0x34')](function(_0x4507e7){if(_0x4507e7){_0x111faa[_0xe33e('0x69')]=_0x4507e7[_0xe33e('0x6a')]({'plain':!![]});interaction_log[_0xe33e('0x1d')](_0xe33e('0x6b'),_0x46ecac['user']['id'],_0x46ecac[_0xe33e('0x61')][_0xe33e('0x35')],_0x46ecac['user']['role'],_0x111faa['interaction']['id'],_0x46ecac[_0xe33e('0x58')]?JSON[_0xe33e('0x21')](_0x46ecac[_0xe33e('0x58')]):'null');return respondWithRpcPromise(_0xe33e('0x6c'),'acceptMessage',_0x111faa);}return null;})[_0xe33e('0x34')](function(_0x42e552){if(_0x42e552){if(_0x46ecac[_0xe33e('0x58')][_0xe33e('0x6d')]){_0x111faa[_0xe33e('0x24')][_0xe33e('0x6e')]=util[_0xe33e('0x5f')]('SIP/%s',_0x46ecac[_0xe33e('0x61')]['name']);_0x111faa[_0xe33e('0x24')][_0xe33e('0x6f')]=_0x111faa[_0xe33e('0x6f')];_0x111faa[_0xe33e('0x24')][_0xe33e('0x70')]='accept';return respondWithRpcPromise('EventManager',_0xe33e('0x71'),{'event':_0xe33e('0x72'),'message':_0x111faa['message']},client9002)[_0xe33e('0x34')](function(){return _0x111faa;});}return _0x111faa;}return null;})[_0xe33e('0x34')](respondWithResult(_0x206c4c,null))[_0xe33e('0x26')](handleError(_0x206c4c,null));};var interaction_log=require(_0xe33e('0x59'))('openchannel-interactions');exports['reject']=function(_0x4ed3f5,_0xd78c09,_0x19b78a){var _0xc3a1dc={'agent':{},'channel':_0xe33e('0x5c')};if(_0x4ed3f5[_0xe33e('0x58')]['id']){delete _0x4ed3f5['body']['id'];}_0x4ed3f5[_0xe33e('0x58')][_0xe33e('0x60')]=_0x4ed3f5[_0xe33e('0x58')][_0xe33e('0x60')]||_0x4ed3f5['user']['id'];_0xc3a1dc[_0xe33e('0x73')]['id']=_0x4ed3f5[_0xe33e('0x58')][_0xe33e('0x60')];return db[_0xe33e('0x37')][_0xe33e('0x57')]({'where':{'id':_0x4ed3f5['params']['id'],'UserId':null}})[_0xe33e('0x34')](handleEntityNotFound(_0xd78c09,null))[_0xe33e('0x34')](function(_0x32b880){if(_0x32b880){_0xc3a1dc[_0xe33e('0x24')]=_0x32b880['get']({'plain':!![]});return db[_0xe33e('0x64')][_0xe33e('0x57')]({'where':{'id':_0x32b880[_0xe33e('0x65')]}});}return null;})['then'](handleEntityNotFound(_0xd78c09,null))[_0xe33e('0x34')](function(_0x5ca06e){if(_0x5ca06e){_0xc3a1dc[_0xe33e('0x69')]=_0x5ca06e[_0xe33e('0x6a')]({'plain':!![]});interaction_log['info'](_0xe33e('0x74'),_0x4ed3f5['user']['id'],_0x4ed3f5['user']['name'],_0x4ed3f5[_0xe33e('0x61')][_0xe33e('0x75')],_0xc3a1dc[_0xe33e('0x69')]['id'],_0x4ed3f5['body']?JSON['stringify'](_0x4ed3f5['body']):_0xe33e('0x76'));return respondWithRpcPromise(_0xe33e('0x77'),_0xe33e('0x78'),_0xc3a1dc);}return null;})[_0xe33e('0x34')](function(_0x3d7cf2){if(_0x3d7cf2){_0x3d7cf2[_0xe33e('0x24')][_0xe33e('0x6e')]=util['format'](_0xe33e('0x79'),_0x4ed3f5[_0xe33e('0x61')][_0xe33e('0x35')]);_0x3d7cf2[_0xe33e('0x24')]['channel']=_0xc3a1dc[_0xe33e('0x6f')];_0x3d7cf2['message']['event']=_0xe33e('0x30');respondWithRpcPromise(_0xe33e('0x71'),_0xe33e('0x71'),{'event':_0xe33e('0x7a'),'message':_0x3d7cf2[_0xe33e('0x24')]},client9002);return _0xc3a1dc;}return null;})['then'](respondWithResult(_0xd78c09,null))[_0xe33e('0x26')](handleError(_0xd78c09,null));};
\ No newline at end of file
index 722dad4..ed0a062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b1=['../../mysqldb','setMaxListeners','update','remove','emit','exports','events'];(function(_0x21c2e8,_0x141a7b){var _0x43858d=function(_0x18a637){while(--_0x18a637){_0x21c2e8['push'](_0x21c2e8['shift']());}};_0x43858d(++_0x141a7b);}(_0x32b1,0xbc));var _0x132b=function(_0x11fcba,_0x46ac13){_0x11fcba=_0x11fcba-0x0;var _0x2c792a=_0x32b1[_0x11fcba];return _0x2c792a;};'use strict';var EventEmitter=require(_0x132b('0x0'));var OpenchannelMessage=require(_0x132b('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x132b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x132b('0x3'),'afterDestroy':_0x132b('0x4')};function emitEvent(_0x2f7980){return function(_0x51bddd,_0x29fe8e,_0x5dbbc2){OpenchannelMessageEvents[_0x132b('0x5')](_0x2f7980+':'+_0x51bddd['id'],_0x51bddd);OpenchannelMessageEvents[_0x132b('0x5')](_0x2f7980,_0x51bddd);_0x5dbbc2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x132b('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xa3db=['../../mysqldb','setMaxListeners','remove','emit','hook','exports','events'];(function(_0x36f243,_0x188505){var _0x426436=function(_0x1c8622){while(--_0x1c8622){_0x36f243['push'](_0x36f243['shift']());}};_0x426436(++_0x188505);}(_0xa3db,0x14f));var _0xba3d=function(_0x4964b5,_0x48bdf0){_0x4964b5=_0x4964b5-0x0;var _0x3663d3=_0xa3db[_0x4964b5];return _0x3663d3;};'use strict';var EventEmitter=require(_0xba3d('0x0'));var OpenchannelMessage=require(_0xba3d('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xba3d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xba3d('0x3')};function emitEvent(_0x24baae){return function(_0x17b71e,_0x479f14,_0x258798){OpenchannelMessageEvents[_0xba3d('0x4')](_0x24baae+':'+_0x17b71e['id'],_0x17b71e);OpenchannelMessageEvents['emit'](_0x24baae,_0x17b71e);_0x258798(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage[_0xba3d('0x5')](e,emitEvent(event));}}module[_0xba3d('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
index abdfa98..7031178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2874=['out','secret','isNil','findOne','OpenchannelInteractionId','then','createdAt','body','error','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','OpenchannelInteraction','Interactions','Contact','keys','info','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','omit','GET','POST','OpenchannelMessage,\x20%s,\x20%s','Message\x20%d\x20forwarded\x20to\x20%s','threadId','update','catch','inspect','finally','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise','./openchannelMessage.attributes','define','openchannel_messages','models','get','direction','toLowerCase'];(function(_0x57dc85,_0x3a6d51){var _0x563a2e=function(_0x5713b2){while(--_0x5713b2){_0x57dc85['push'](_0x57dc85['shift']());}};_0x563a2e(++_0x3a6d51);}(_0x2874,0x14a));var _0x4287=function(_0x2ea9bb,_0x41a73f){_0x2ea9bb=_0x2ea9bb-0x0;var _0x3f0084=_0x2874[_0x2ea9bb];return _0x3f0084;};'use strict';var _=require(_0x4287('0x0'));var util=require(_0x4287('0x1'));var logger=require(_0x4287('0x2'))(_0x4287('0x3'));var moment=require(_0x4287('0x4'));var BPromise=require('bluebird');var rp=require(_0x4287('0x5'));var attributes=require(_0x4287('0x6'));module['exports']=function(_0x411de6,_0x3617f7){return _0x411de6[_0x4287('0x7')]('OpenchannelMessage',attributes,{'tableName':_0x4287('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5a7943,_0x20ac2a,_0x4c85e5){var _0x505cad=_0x411de6[_0x4287('0x9')];var _0x10d627=_0x5a7943[_0x4287('0xa')]({'plain':!![]});if(_0x10d627[_0x4287('0xb')][_0x4287('0xc')]()==='in'||_0x10d627[_0x4287('0xb')][_0x4287('0xc')]()===_0x4287('0xd')&&!_0x10d627[_0x4287('0xe')]&&!_[_0x4287('0xf')](_0x10d627['UserId'])){_0x505cad['OpenchannelInteraction'][_0x4287('0x10')]({'where':{'id':_0x10d627[_0x4287('0x11')]}})[_0x4287('0x12')](function(_0x1300e9){if(_0x1300e9){_0x1300e9['update']({'lastMsgAt':_0x10d627[_0x4287('0x13')],'lastMsgDirection':_0x10d627[_0x4287('0xb')][_0x4287('0xc')](),'lastMsgBody':_0x10d627[_0x4287('0x14')]});}})['catch'](function(_0x30c182){console[_0x4287('0x15')](_0x30c182);});}if(_0x10d627[_0x4287('0xb')]===_0x4287('0xd')&&!_0x10d627[_0x4287('0xe')]){var _0x351b9c;_0x505cad[_0x4287('0x16')][_0x4287('0x17')]()['then'](function(_0x131446){return _0x505cad[_0x4287('0x18')][_0x4287('0x19')]({'where':{'id':_0x10d627[_0x4287('0x1a')]},'include':[{'model':_0x505cad[_0x4287('0x1b')],'as':_0x4287('0x1c'),'where':{'id':_0x10d627[_0x4287('0x11')]},'limit':0x1,'include':[{'model':_0x505cad[_0x4287('0x16')],'as':_0x4287('0x1d'),'attributes':_[_0x4287('0x1e')](_0x131446)}]}]});})['then'](function(_0x5476f1){_0x351b9c=_0x5476f1[_0x4287('0xa')]({'plain':!![]});if(_0x351b9c&&_0x351b9c['replyUri']){logger[_0x4287('0x1f')]('OpenchannelMessage,\x20%s,\x20%s',_0x4287('0x20'),util[_0x4287('0x21')](_0x4287('0x22'),_0x10d627['id'],_0x351b9c[_0x4287('0x23')]));if(_0x351b9c[_0x4287('0x1c')]&&_0x351b9c['Interactions'][_0x4287('0x24')]){_0x10d627[_0x4287('0x25')]=_[_0x4287('0x26')](_0x351b9c[_0x4287('0x1c')][0x0],_0x4287('0x1d'));_0x10d627[_0x4287('0x1d')]=_0x351b9c['Interactions'][0x0]['Contact'];}var _0x20ac2a={'method':'POST','uri':encodeURI(_0x351b9c[_0x4287('0x23')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x20ac2a['method']){case _0x4287('0x27'):_0x20ac2a['qs']=_0x10d627;break;case _0x4287('0x28'):_0x20ac2a[_0x4287('0x14')]=_0x10d627;break;}return rp(_0x20ac2a)[_0x4287('0x12')](function(_0x3aade2){logger[_0x4287('0x1f')](_0x4287('0x29'),_0x4287('0x20'),util[_0x4287('0x21')](_0x4287('0x2a'),_0x10d627['id'],_0x351b9c[_0x4287('0x23')]));if(_0x3aade2[_0x4287('0x14')][_0x4287('0x2b')]&&_0x3aade2[_0x4287('0x14')][_0x4287('0x2b')]!=_0x10d627[_0x4287('0x25')][_0x4287('0x2b')]){return _0x505cad['OpenchannelInteraction'][_0x4287('0x2c')]({'threadId':_0x3aade2[_0x4287('0x14')]['threadId']},{'logging':!![],'where':{'id':_0x10d627['Interaction']['id']}});}else{return;}})['then'](function(){return _0x5a7943[_0x4287('0x2c')]({'read':!![]});})[_0x4287('0x2d')](function(_0x10c1b5){logger[_0x4287('0x15')](_0x4287('0x29'),'afterCreate',util[_0x4287('0x2e')](_0x10c1b5,{'showHidden':![],'depth':null}));_0x4c85e5();});}else{_0x4c85e5();}})[_0x4287('0x2f')](function(){_0x4c85e5();});}else{_0x4c85e5();}}},'charset':_0x4287('0x30'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xdf9b=['utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','bluebird','request-promise','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','get','direction','toLowerCase','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','then','update','createdAt','catch','out','secret','CmContact','describe','OpenchannelAccount','OpenchannelAccountId','Interactions','keys','replyUri','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','Contact','POST','method','GET','body','OpenchannelMessage,\x20%s,\x20%s','threadId','error','inspect','finally'];(function(_0x2996bf,_0x2a2102){var _0x37cdb4=function(_0x210937){while(--_0x210937){_0x2996bf['push'](_0x2996bf['shift']());}};_0x37cdb4(++_0x2a2102);}(_0xdf9b,0x122));var _0xbdf9=function(_0x1a7846,_0x59723e){_0x1a7846=_0x1a7846-0x0;var _0x48049=_0xdf9b[_0x1a7846];return _0x48049;};'use strict';var _=require(_0xbdf9('0x0'));var util=require(_0xbdf9('0x1'));var logger=require(_0xbdf9('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbdf9('0x3'));var rp=require(_0xbdf9('0x4'));var attributes=require(_0xbdf9('0x5'));module[_0xbdf9('0x6')]=function(_0x266b7e,_0x40c862){return _0x266b7e[_0xbdf9('0x7')](_0xbdf9('0x8'),attributes,{'tableName':_0xbdf9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x245484,_0x55a9f6,_0x14a1d4){var _0x1aa5ba=_0x266b7e['models'];var _0x318925=_0x245484[_0xbdf9('0xa')]({'plain':!![]});if(_0x318925[_0xbdf9('0xb')][_0xbdf9('0xc')]()==='in'||_0x318925[_0xbdf9('0xb')][_0xbdf9('0xc')]()==='out'&&!_0x318925['secret']&&!_[_0xbdf9('0xd')](_0x318925[_0xbdf9('0xe')])){_0x1aa5ba[_0xbdf9('0xf')]['findOne']({'where':{'id':_0x318925[_0xbdf9('0x10')]}})[_0xbdf9('0x11')](function(_0x2d83d7){if(_0x2d83d7){_0x2d83d7[_0xbdf9('0x12')]({'lastMsgAt':_0x318925[_0xbdf9('0x13')],'lastMsgDirection':_0x318925[_0xbdf9('0xb')][_0xbdf9('0xc')](),'lastMsgBody':_0x318925['body']});}})[_0xbdf9('0x14')](function(_0x480532){console['error'](_0x480532);});}if(_0x318925[_0xbdf9('0xb')]===_0xbdf9('0x15')&&!_0x318925[_0xbdf9('0x16')]){var _0x4c089d;_0x1aa5ba[_0xbdf9('0x17')][_0xbdf9('0x18')]()[_0xbdf9('0x11')](function(_0x1b2875){return _0x1aa5ba[_0xbdf9('0x19')]['find']({'where':{'id':_0x318925[_0xbdf9('0x1a')]},'include':[{'model':_0x1aa5ba[_0xbdf9('0xf')],'as':_0xbdf9('0x1b'),'where':{'id':_0x318925[_0xbdf9('0x10')]},'limit':0x1,'include':[{'model':_0x1aa5ba[_0xbdf9('0x17')],'as':'Contact','attributes':_[_0xbdf9('0x1c')](_0x1b2875)}]}]});})['then'](function(_0x5cfc55){_0x4c089d=_0x5cfc55[_0xbdf9('0xa')]({'plain':!![]});if(_0x4c089d&&_0x4c089d[_0xbdf9('0x1d')]){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0xbdf9('0x1e'),util[_0xbdf9('0x1f')](_0xbdf9('0x20'),_0x318925['id'],_0x4c089d[_0xbdf9('0x1d')]));if(_0x4c089d['Interactions']&&_0x4c089d[_0xbdf9('0x1b')][_0xbdf9('0x21')]){_0x318925[_0xbdf9('0x22')]=_[_0xbdf9('0x23')](_0x4c089d[_0xbdf9('0x1b')][0x0],'Contact');_0x318925['Contact']=_0x4c089d['Interactions'][0x0][_0xbdf9('0x24')];}var _0x55a9f6={'method':_0xbdf9('0x25'),'uri':encodeURI(_0x4c089d[_0xbdf9('0x1d')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x55a9f6[_0xbdf9('0x26')]){case _0xbdf9('0x27'):_0x55a9f6['qs']=_0x318925;break;case _0xbdf9('0x25'):_0x55a9f6[_0xbdf9('0x28')]=_0x318925;break;}return rp(_0x55a9f6)[_0xbdf9('0x11')](function(_0x338276){logger['info'](_0xbdf9('0x29'),_0xbdf9('0x1e'),util[_0xbdf9('0x1f')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x318925['id'],_0x4c089d['replyUri']));if(_0x338276[_0xbdf9('0x28')][_0xbdf9('0x2a')]&&_0x338276['body']['threadId']!=_0x318925[_0xbdf9('0x22')][_0xbdf9('0x2a')]){return _0x1aa5ba[_0xbdf9('0xf')][_0xbdf9('0x12')]({'threadId':_0x338276['body'][_0xbdf9('0x2a')]},{'logging':!![],'where':{'id':_0x318925[_0xbdf9('0x22')]['id']}});}else{return;}})['then'](function(){return _0x245484[_0xbdf9('0x12')]({'read':!![]});})[_0xbdf9('0x14')](function(_0x3b9ce9){logger[_0xbdf9('0x2b')](_0xbdf9('0x29'),_0xbdf9('0x1e'),util[_0xbdf9('0x2c')](_0x3b9ce9,{'showHidden':![],'depth':null}));_0x14a1d4();});}else{_0x14a1d4();}})[_0xbdf9('0x2d')](function(){_0x14a1d4();});}else{_0x14a1d4();}}},'charset':_0xbdf9('0x2e'),'collate':_0xbdf9('0x2f')});};
\ No newline at end of file
index f198180..99779eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec47=['body','options','raw','then','debug','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','request','info','OpenchannelMessage,\x20%s,\x20%s','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateOpenchannelMessage','OpenchannelMessage','create'];(function(_0x2eadf2,_0x1b499b){var _0x30cccf=function(_0x371140){while(--_0x371140){_0x2eadf2['push'](_0x2eadf2['shift']());}};_0x30cccf(++_0x1b499b);}(_0xec47,0x170));var _0x7ec4=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xec47[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0x7ec4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7ec4('0x1'));var rs=require(_0x7ec4('0x2'));var fs=require('fs');var Redis=require(_0x7ec4('0x3'));var db=require(_0x7ec4('0x4'))['db'];var utils=require(_0x7ec4('0x5'));var logger=require(_0x7ec4('0x6'))(_0x7ec4('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x7ec4('0x8')]({'port':0x232a});config[_0x7ec4('0x9')]=_[_0x7ec4('0xa')](config[_0x7ec4('0x9')],{'host':_0x7ec4('0xb'),'port':0x18eb});var socket=require(_0x7ec4('0xc'))(new Redis(config[_0x7ec4('0x9')]));require(_0x7ec4('0xd'))['register'](socket);function respondWithRpcPromise(_0x82698f,_0x57ce98,_0x40e2d8){return new BPromise(function(_0x476300,_0x38452d){return client[_0x7ec4('0xe')](_0x82698f,_0x40e2d8)['then'](function(_0x5424b0){logger[_0x7ec4('0xf')](_0x7ec4('0x10'),_0x57ce98,'request\x20sent');logger['debug'](_0x7ec4('0x11'),_0x57ce98,_0x7ec4('0x12'),JSON[_0x7ec4('0x13')](_0x5424b0));if(_0x5424b0[_0x7ec4('0x14')]){if(_0x5424b0[_0x7ec4('0x14')][_0x7ec4('0x15')]===0x1f4){logger[_0x7ec4('0x14')](_0x7ec4('0x10'),_0x57ce98,_0x5424b0[_0x7ec4('0x14')]['message']);return _0x38452d(_0x5424b0['error']['message']);}logger[_0x7ec4('0x14')](_0x7ec4('0x10'),_0x57ce98,_0x5424b0[_0x7ec4('0x14')][_0x7ec4('0x16')]);return _0x476300(_0x5424b0[_0x7ec4('0x14')][_0x7ec4('0x16')]);}else{logger[_0x7ec4('0xf')](_0x7ec4('0x10'),_0x57ce98,_0x7ec4('0x12'));_0x476300(_0x5424b0[_0x7ec4('0x17')][_0x7ec4('0x16')]);}})[_0x7ec4('0x18')](function(_0x13f9bf){logger[_0x7ec4('0x14')](_0x7ec4('0x10'),_0x57ce98,_0x13f9bf);_0x38452d(_0x13f9bf);});});}exports[_0x7ec4('0x19')]=function(_0x1ed8ff){var _0xd27b35=this;return new Promise(function(_0x58652f,_0x4505a6){return db[_0x7ec4('0x1a')][_0x7ec4('0x1b')](_0x1ed8ff[_0x7ec4('0x1c')],{'raw':_0x1ed8ff[_0x7ec4('0x1d')]?_0x1ed8ff[_0x7ec4('0x1d')][_0x7ec4('0x1e')]===undefined?!![]:![]:!![]})[_0x7ec4('0x1f')](function(_0x5e884b){logger[_0x7ec4('0xf')]('CreateOpenchannelMessage',_0x1ed8ff);logger[_0x7ec4('0x20')](_0x7ec4('0x19'),_0x1ed8ff,JSON[_0x7ec4('0x13')](_0x5e884b));_0x58652f(_0x5e884b);})[_0x7ec4('0x18')](function(_0x5a9a4b){logger[_0x7ec4('0x14')]('CreateOpenchannelMessage',_0x5a9a4b[_0x7ec4('0x16')],_0x1ed8ff);_0x4505a6(_0xd27b35['error'](0x1f4,_0x5a9a4b[_0x7ec4('0x16')]));});});};
\ No newline at end of file
+var _0xbda9=['CreateOpenchannelMessage','OpenchannelMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch'];(function(_0xb3ce04,_0x50e9e4){var _0x403a56=function(_0x13a9d9){while(--_0x13a9d9){_0xb3ce04['push'](_0xb3ce04['shift']());}};_0x403a56(++_0x50e9e4);}(_0xbda9,0x146));var _0x9bda=function(_0x3a76cc,_0x43c78d){_0x3a76cc=_0x3a76cc-0x0;var _0x1204f8=_0xbda9[_0x3a76cc];return _0x1204f8;};'use strict';var _=require(_0x9bda('0x0'));var util=require(_0x9bda('0x1'));var moment=require(_0x9bda('0x2'));var BPromise=require(_0x9bda('0x3'));var rs=require(_0x9bda('0x4'));var fs=require('fs');var Redis=require(_0x9bda('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9bda('0x6'));var logger=require(_0x9bda('0x7'))('rpc');var config=require(_0x9bda('0x8'));var jayson=require(_0x9bda('0x9'));var client=jayson[_0x9bda('0xa')][_0x9bda('0xb')]({'port':0x232a});config[_0x9bda('0xc')]=_[_0x9bda('0xd')](config[_0x9bda('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x9bda('0xe'))(new Redis(config[_0x9bda('0xc')]));require('./openchannelMessage.socket')[_0x9bda('0xf')](socket);function respondWithRpcPromise(_0x313f74,_0x17b03f,_0xe1e7b5){return new BPromise(function(_0x390ccf,_0xfc6de){return client[_0x9bda('0x10')](_0x313f74,_0xe1e7b5)[_0x9bda('0x11')](function(_0x584a55){logger[_0x9bda('0x12')](_0x9bda('0x13'),_0x17b03f,_0x9bda('0x14'));logger[_0x9bda('0x15')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x17b03f,_0x9bda('0x14'),JSON[_0x9bda('0x16')](_0x584a55));if(_0x584a55[_0x9bda('0x17')]){if(_0x584a55['error']['code']===0x1f4){logger['error'](_0x9bda('0x13'),_0x17b03f,_0x584a55[_0x9bda('0x17')]['message']);return _0xfc6de(_0x584a55['error']['message']);}logger['error'](_0x9bda('0x13'),_0x17b03f,_0x584a55['error'][_0x9bda('0x18')]);return _0x390ccf(_0x584a55['error']['message']);}else{logger[_0x9bda('0x12')](_0x9bda('0x13'),_0x17b03f,_0x9bda('0x14'));_0x390ccf(_0x584a55['result']['message']);}})[_0x9bda('0x19')](function(_0x41db38){logger[_0x9bda('0x17')](_0x9bda('0x13'),_0x17b03f,_0x41db38);_0xfc6de(_0x41db38);});});}exports[_0x9bda('0x1a')]=function(_0xd83788){var _0xc7a0cf=this;return new Promise(function(_0x14f574,_0x141d9c){return db[_0x9bda('0x1b')][_0x9bda('0x1c')](_0xd83788[_0x9bda('0x1d')],{'raw':_0xd83788[_0x9bda('0x1e')]?_0xd83788[_0x9bda('0x1e')][_0x9bda('0x1f')]===undefined?!![]:![]:!![]})[_0x9bda('0x11')](function(_0x539a53){logger['info']('CreateOpenchannelMessage',_0xd83788);logger[_0x9bda('0x15')](_0x9bda('0x1a'),_0xd83788,JSON[_0x9bda('0x16')](_0x539a53));_0x14f574(_0x539a53);})[_0x9bda('0x19')](function(_0x587bc5){logger['error'](_0x9bda('0x1a'),_0x587bc5[_0x9bda('0x18')],_0xd83788);_0x141d9c(_0xc7a0cf[_0x9bda('0x17')](0x1f4,_0x587bc5[_0x9bda('0x18')]));});});};
\ No newline at end of file
index 8ba304c..71ca0d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b8f=['save','update','emit','removeListener','register','length'];(function(_0x3ff213,_0x3bc5f6){var _0x412da6=function(_0x56ce36){while(--_0x56ce36){_0x3ff213['push'](_0x3ff213['shift']());}};_0x412da6(++_0x3bc5f6);}(_0x6b8f,0x1bc));var _0xf6b8=function(_0x402a4a,_0x1417d7){_0x402a4a=_0x402a4a-0x0;var _0x2b0c29=_0x6b8f[_0x402a4a];return _0x2b0c29;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0xf6b8('0x0'),'remove',_0xf6b8('0x1')];function createListener(_0x4e006e,_0x5443a1){return function(_0x362c27){_0x5443a1[_0xf6b8('0x2')](_0x4e006e,_0x362c27);};}function removeListener(_0x4d0ee5,_0x2b5ca9){return function(){OpenchannelMessageEvents[_0xf6b8('0x3')](_0x4d0ee5,_0x2b5ca9);};}exports[_0xf6b8('0x4')]=function(_0x549eac){for(var _0x2d035e=0x0,_0x79c66d=events[_0xf6b8('0x5')];_0x2d035e<_0x79c66d;_0x2d035e++){var _0x3c3430=events[_0x2d035e];var _0x557910=createListener('openchannelMessage:'+_0x3c3430,_0x549eac);OpenchannelMessageEvents['on'](_0x3c3430,_0x557910);}};
\ No newline at end of file
+var _0xee24=['length','openchannelMessage:','save','remove','emit','removeListener','register'];(function(_0x4a4cf5,_0x55007f){var _0x582d45=function(_0x17e797){while(--_0x17e797){_0x4a4cf5['push'](_0x4a4cf5['shift']());}};_0x582d45(++_0x55007f);}(_0xee24,0x1a6));var _0x4ee2=function(_0x14cc59,_0x361208){_0x14cc59=_0x14cc59-0x0;var _0x31c77c=_0xee24[_0x14cc59];return _0x31c77c;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x4ee2('0x0'),_0x4ee2('0x1'),'update'];function createListener(_0x234b61,_0x4e09d3){return function(_0x3ff71c){_0x4e09d3[_0x4ee2('0x2')](_0x234b61,_0x3ff71c);};}function removeListener(_0x5546e1,_0x1aee89){return function(){OpenchannelMessageEvents[_0x4ee2('0x3')](_0x5546e1,_0x1aee89);};}exports[_0x4ee2('0x4')]=function(_0x1993de){for(var _0x5c778f=0x0,_0x2e6e11=events[_0x4ee2('0x5')];_0x5c778f<_0x2e6e11;_0x5c778f++){var _0xe966eb=events[_0x5c778f];var _0x9a963c=createListener(_0x4ee2('0x6')+_0xe966eb,_0x1993de);OpenchannelMessageEvents['on'](_0xe966eb,_0x9a963c);}};
\ No newline at end of file
index c8ed099..64bf639 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x664d=['../../config/environment','./openchannelQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addAgents','put','update','delete','removeAgents','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x664d,0xa7));var _0xd664=function(_0xda6d0f,_0x35e271){_0xda6d0f=_0xda6d0f-0x0;var _0x244540=_0x664d[_0xda6d0f];return _0x244540;};'use strict';var multer=require(_0xd664('0x0'));var util=require(_0xd664('0x1'));var path=require(_0xd664('0x2'));var timeout=require(_0xd664('0x3'));var express=require('express');var router=express[_0xd664('0x4')]();var auth=require(_0xd664('0x5'));var interaction=require(_0xd664('0x6'));var config=require(_0xd664('0x7'));var controller=require(_0xd664('0x8'));router['get']('/',auth[_0xd664('0x9')](),controller[_0xd664('0xa')]);router[_0xd664('0xb')](_0xd664('0xc'),auth[_0xd664('0x9')](),controller[_0xd664('0xd')]);router['get'](_0xd664('0xe'),auth[_0xd664('0x9')](),controller['show']);router[_0xd664('0xb')](_0xd664('0xf'),auth[_0xd664('0x9')](),controller[_0xd664('0x10')]);router[_0xd664('0xb')](_0xd664('0x11'),auth[_0xd664('0x9')](),controller[_0xd664('0x12')]);router['get'](_0xd664('0x13'),auth[_0xd664('0x9')](),controller[_0xd664('0x14')]);router[_0xd664('0x15')]('/',auth[_0xd664('0x9')](),controller[_0xd664('0x16')]);router['post'](_0xd664('0x11'),auth['isAuthenticated'](),controller['addTeams']);router[_0xd664('0x15')](_0xd664('0x13'),auth[_0xd664('0x9')](),controller[_0xd664('0x17')]);router[_0xd664('0x18')](_0xd664('0xe'),auth[_0xd664('0x9')](),controller[_0xd664('0x19')]);router[_0xd664('0x1a')](_0xd664('0xe'),auth[_0xd664('0x9')](),controller['destroy']);router[_0xd664('0x1a')](_0xd664('0x11'),auth[_0xd664('0x9')](),controller['removeTeams']);router[_0xd664('0x1a')](_0xd664('0x13'),auth[_0xd664('0x9')](),controller[_0xd664('0x1b')]);module[_0xd664('0x1c')]=router;
\ No newline at end of file
+var _0x714d=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','addAgents','put','/:id','destroy','delete','removeAgents','exports','multer','util','path','connect-timeout'];(function(_0x5ce44b,_0x1b2779){var _0x57a6cc=function(_0x9d5883){while(--_0x9d5883){_0x5ce44b['push'](_0x5ce44b['shift']());}};_0x57a6cc(++_0x1b2779);}(_0x714d,0x11e));var _0xd714=function(_0x27256c,_0x3fa3ef){_0x27256c=_0x27256c-0x0;var _0x1caaf8=_0x714d[_0x27256c];return _0x1caaf8;};'use strict';var multer=require(_0xd714('0x0'));var util=require(_0xd714('0x1'));var path=require(_0xd714('0x2'));var timeout=require(_0xd714('0x3'));var express=require(_0xd714('0x4'));var router=express[_0xd714('0x5')]();var auth=require(_0xd714('0x6'));var interaction=require(_0xd714('0x7'));var config=require(_0xd714('0x8'));var controller=require(_0xd714('0x9'));router[_0xd714('0xa')]('/',auth[_0xd714('0xb')](),controller[_0xd714('0xc')]);router[_0xd714('0xa')](_0xd714('0xd'),auth['isAuthenticated'](),controller[_0xd714('0xe')]);router[_0xd714('0xa')]('/:id',auth[_0xd714('0xb')](),controller[_0xd714('0xf')]);router[_0xd714('0xa')](_0xd714('0x10'),auth['isAuthenticated'](),controller[_0xd714('0x11')]);router['get'](_0xd714('0x12'),auth[_0xd714('0xb')](),controller['getTeams']);router['get'](_0xd714('0x13'),auth['isAuthenticated'](),controller[_0xd714('0x14')]);router[_0xd714('0x15')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xd714('0x12'),auth[_0xd714('0xb')](),controller['addTeams']);router[_0xd714('0x15')](_0xd714('0x13'),auth[_0xd714('0xb')](),controller[_0xd714('0x16')]);router[_0xd714('0x17')]('/:id',auth[_0xd714('0xb')](),controller['update']);router['delete'](_0xd714('0x18'),auth[_0xd714('0xb')](),controller[_0xd714('0x19')]);router[_0xd714('0x1a')](_0xd714('0x12'),auth[_0xd714('0xb')](),controller['removeTeams']);router[_0xd714('0x1a')](_0xd714('0x13'),auth[_0xd714('0xb')](),controller[_0xd714('0x1b')]);module[_0xd714('0x1c')]=router;
\ No newline at end of file
index 622b259..3d7ea9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e53=['beepall','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory'];(function(_0x1eb4e0,_0x4ebc2d){var _0x18ec21=function(_0x28c9a9){while(--_0x28c9a9){_0x1eb4e0['push'](_0x1eb4e0['shift']());}};_0x18ec21(++_0x4ebc2d);}(_0x1e53,0xe1));var _0x31e5=function(_0x1810c9,_0x126db1){_0x1810c9=_0x1810c9-0x0;var _0x43158c=_0x1e53[_0x1810c9];return _0x43158c;};'use strict';var Sequelize=require(_0x31e5('0x0'));module[_0x31e5('0x1')]={'name':{'type':Sequelize[_0x31e5('0x2')],'unique':_0x31e5('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x31e5('0x2')]},'timeout':{'type':Sequelize[_0x31e5('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x31e5('0x5')](_0x31e5('0x6'),_0x31e5('0x7'),'roundrobin')}};
\ No newline at end of file
+var _0xdc42=['STRING','INTEGER','ENUM','roundrobin','exports','name'];(function(_0x2c9f51,_0x2eec01){var _0x12abf9=function(_0x2d463f){while(--_0x2d463f){_0x2c9f51['push'](_0x2c9f51['shift']());}};_0x12abf9(++_0x2eec01);}(_0xdc42,0x76));var _0x2dc4=function(_0x3e6811,_0x2a28c0){_0x3e6811=_0x3e6811-0x0;var _0x21b6b0=_0xdc42[_0x3e6811];return _0x21b6b0;};'use strict';var Sequelize=require('sequelize');module[_0x2dc4('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x2dc4('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x2dc4('0x2')]},'timeout':{'type':Sequelize[_0x2dc4('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2dc4('0x4')]('rrmemory','beepall',_0x2dc4('0x5'))}};
\ No newline at end of file
index 2b6a9f8..dabb117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d80=['query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','add','day','merge','map','type','key','field','options','findAll','rows','show','params','includeAll','find','catch','create','body','user','role','UserProfileSection','userProfileId','update','destroy','describe','getMembers','UserOpenchannelQueue','pick','OpenchannelQueueId','filter','User','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','addTeams','Agents','union','addAgents','Team','ids','removeTeams','spread','emit','removeAgents','userOpenchannelQueue:remove','getAgents','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','then','get','OpenchannelQueues','UserProfileResource','error','name','send','index','OpenchannelQueue','rawAttributes','model','keys','dateStart'];(function(_0x3854cd,_0x476719){var _0x25801b=function(_0xaa58fb){while(--_0xaa58fb){_0x3854cd['push'](_0x3854cd['shift']());}};_0x25801b(++_0x476719);}(_0x2d80,0xb3));var _0x02d8=function(_0x372047,_0x7f5c2b){_0x372047=_0x372047-0x0;var _0x44f282=_0x2d80[_0x372047];return _0x44f282;};'use strict';var pdf=require(_0x02d8('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x02d8('0x1'));var zipdir=require(_0x02d8('0x2'));var jsonpatch=require(_0x02d8('0x3'));var rp=require(_0x02d8('0x4'));var moment=require('moment');var BPromise=require(_0x02d8('0x5'));var Mustache=require(_0x02d8('0x6'));var util=require(_0x02d8('0x7'));var path=require(_0x02d8('0x8'));var sox=require(_0x02d8('0x9'));var csv=require(_0x02d8('0xa'));var ejs=require(_0x02d8('0xb'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x02d8('0xc'));var deskjs=require(_0x02d8('0xd'));var toCsv=require(_0x02d8('0xa'));var querystring=require(_0x02d8('0xe'));var Papa=require(_0x02d8('0xf'));var Redis=require(_0x02d8('0x10'));var qs=require(_0x02d8('0x11'));var logger=require('../../config/logger')(_0x02d8('0x12'));var utils=require('../../config/utils');var config=require(_0x02d8('0x13'));var db=require(_0x02d8('0x14'))['db'];config['redis']=_[_0x02d8('0x15')](config['redis'],{'host':_0x02d8('0x16'),'port':0x18eb});var socket=require(_0x02d8('0x17'))(new Redis(config['redis']));require(_0x02d8('0x18'))[_0x02d8('0x19')](socket);function respondWithStatusCode(_0x261108,_0x57829c){_0x57829c=_0x57829c||0xcc;return function(_0x406da5){if(_0x406da5){return _0x261108[_0x02d8('0x1a')](_0x57829c);}return _0x261108[_0x02d8('0x1b')](_0x57829c)[_0x02d8('0x1c')]();};}function respondWithResult(_0x14b845,_0x5e6cc6){_0x5e6cc6=_0x5e6cc6||0xc8;return function(_0x32d39e){if(_0x32d39e){return _0x14b845[_0x02d8('0x1b')](_0x5e6cc6)[_0x02d8('0x1d')](_0x32d39e);}};}function respondWithFilteredResult(_0x173bea,_0xe8d91a){return function(_0x455e28){if(_0x455e28){var _0x47de44=_0x455e28[_0x02d8('0x1e')],_0x1fb67c=_0xe8d91a['offset'],_0xecef83=_0xe8d91a[_0x02d8('0x1f')]+_0xe8d91a[_0x02d8('0x20')],_0x54fa61;if(_0xecef83>=_0x47de44){_0xecef83=_0x47de44;_0x54fa61=0xc8;}else{_0x54fa61=0xce;}_0x173bea['status'](_0x54fa61);return _0x173bea[_0x02d8('0x21')](_0x02d8('0x22'),_0x1fb67c+'-'+_0xecef83+'/'+_0x47de44)[_0x02d8('0x1d')](_0x455e28);}return null;};}function patchUpdates(_0x3e7a5c){return function(_0x3f2921){try{jsonpatch[_0x02d8('0x23')](_0x3f2921,_0x3e7a5c,!![]);}catch(_0x19d7a1){return BPromise[_0x02d8('0x24')](_0x19d7a1);}return _0x3f2921[_0x02d8('0x25')]();};}function saveUpdates(_0x2f0cd4,_0x1eabc8){return function(_0x2895dd){if(_0x2895dd){return _0x2895dd['update'](_0x2f0cd4)[_0x02d8('0x26')](function(_0x5a8886){return _0x5a8886;});}return null;};}function removeEntity(_0x3ccef6,_0x5404b4){return function(_0x4be1fe){if(_0x4be1fe){return _0x4be1fe['destroy']()[_0x02d8('0x26')](function(){var _0x1240f2=_0x4be1fe[_0x02d8('0x27')]({'plain':!![]});var _0x228d50=_0x02d8('0x28');return db[_0x02d8('0x29')]['destroy']({'where':{'type':_0x228d50,'resourceId':_0x1240f2['id']}})['then'](function(){return _0x4be1fe;});})[_0x02d8('0x26')](function(){_0x3ccef6[_0x02d8('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c5f5e,_0xc66365){return function(_0x3a141d){if(!_0x3a141d){_0x2c5f5e[_0x02d8('0x1a')](0x194);}return _0x3a141d;};}function handleError(_0xbb3944,_0x2b1e0c){_0x2b1e0c=_0x2b1e0c||0x1f4;return function(_0x557e30){logger[_0x02d8('0x2a')](_0x557e30['stack']);if(_0x557e30[_0x02d8('0x2b')]){delete _0x557e30[_0x02d8('0x2b')];}_0xbb3944[_0x02d8('0x1b')](_0x2b1e0c)[_0x02d8('0x2c')](_0x557e30);};}exports[_0x02d8('0x2d')]=function(_0x41baf2,_0x9595ff){var _0x59b278={},_0x446017={},_0x468db2={'count':0x0,'rows':[]};var _0xcf29b8=db[_0x02d8('0x2e')][_0x02d8('0x2f')];_0x446017[_0x02d8('0x30')]=_[_0x02d8('0x31')](_0xcf29b8);var _0x4b3a3c={'dateStart':_0x41baf2['query'][_0x02d8('0x32')],'dateEnd':_0x41baf2[_0x02d8('0x33')][_0x02d8('0x34')]};delete _0x41baf2[_0x02d8('0x33')]['dateStart'];delete _0x41baf2[_0x02d8('0x33')][_0x02d8('0x34')];_0x446017['query']=_[_0x02d8('0x31')](_0x41baf2[_0x02d8('0x33')]);_0x446017[_0x02d8('0x35')]=_[_0x02d8('0x36')](_0x446017[_0x02d8('0x30')],_0x446017[_0x02d8('0x33')]);_0x59b278[_0x02d8('0x37')]=_['intersection'](_0x446017['model'],qs['fields'](_0x41baf2[_0x02d8('0x33')][_0x02d8('0x38')]));_0x59b278['attributes']=_0x59b278[_0x02d8('0x37')][_0x02d8('0x39')]?_0x59b278['attributes']:_0x446017[_0x02d8('0x30')];if(!_0x41baf2[_0x02d8('0x33')][_0x02d8('0x3a')](_0x02d8('0x3b'))){_0x59b278['limit']=qs[_0x02d8('0x20')](_0x41baf2['query'][_0x02d8('0x20')]);_0x59b278[_0x02d8('0x1f')]=qs[_0x02d8('0x1f')](_0x41baf2[_0x02d8('0x33')][_0x02d8('0x1f')]);}_0x59b278[_0x02d8('0x3c')]=qs[_0x02d8('0x3d')](_0x41baf2['query']['sort']);_0x59b278[_0x02d8('0x3e')]=qs[_0x02d8('0x35')](_['pick'](_0x41baf2[_0x02d8('0x33')],_0x446017[_0x02d8('0x35')]));if(_0x4b3a3c[_0x02d8('0x32')]){if(_0x4b3a3c[_0x02d8('0x34')]){_0x4b3a3c[_0x02d8('0x34')]=moment(_0x4b3a3c[_0x02d8('0x34')])[_0x02d8('0x3f')](0x1,_0x02d8('0x40'));}else{_0x4b3a3c[_0x02d8('0x34')]=moment(_0x4b3a3c[_0x02d8('0x32')])[_0x02d8('0x3f')](0x1,_0x02d8('0x40'));}_[_0x02d8('0x41')](_0x59b278[_0x02d8('0x3e')],{'createdAt':{'$gte':_0x4b3a3c['dateStart'],'$lte':_0x4b3a3c[_0x02d8('0x34')]}});}if(_0x41baf2[_0x02d8('0x33')]['filter']){_0x59b278[_0x02d8('0x3e')]=_[_0x02d8('0x41')](_0x59b278[_0x02d8('0x3e')],{'$or':_[_0x02d8('0x42')](_0xcf29b8,function(_0x5c6dc2){if(_0x5c6dc2[_0x02d8('0x43')][_0x02d8('0x44')]!=='VIRTUAL'){var _0x3e0af8={};_0x3e0af8[_0x5c6dc2[_0x02d8('0x45')]]={'$like':'%'+_0x41baf2[_0x02d8('0x33')]['filter']+'%'};return _0x3e0af8;}})});}_0x59b278=_[_0x02d8('0x41')]({},_0x59b278,_0x41baf2[_0x02d8('0x46')]);var _0x385692={'where':_0x59b278[_0x02d8('0x3e')]};return db['OpenchannelQueue'][_0x02d8('0x1e')](_0x385692)[_0x02d8('0x26')](function(_0x52ad8b){_0x468db2[_0x02d8('0x1e')]=_0x52ad8b;if(_0x41baf2['query']['includeAll']){_0x59b278['include']=[{'all':!![]}];}return db[_0x02d8('0x2e')][_0x02d8('0x47')](_0x59b278);})[_0x02d8('0x26')](function(_0x320e89){_0x468db2[_0x02d8('0x48')]=_0x320e89;return _0x468db2;})[_0x02d8('0x26')](respondWithFilteredResult(_0x9595ff,_0x59b278))['catch'](handleError(_0x9595ff,null));};exports[_0x02d8('0x49')]=function(_0x2fb3ca,_0x3f45f2){var _0x4fcffe={'raw':!![],'where':{'id':_0x2fb3ca[_0x02d8('0x4a')]['id']}},_0x573595={};_0x573595['model']=_['keys'](db[_0x02d8('0x2e')][_0x02d8('0x2f')]);_0x573595[_0x02d8('0x33')]=_[_0x02d8('0x31')](_0x2fb3ca['query']);_0x573595[_0x02d8('0x35')]=_[_0x02d8('0x36')](_0x573595['model'],_0x573595[_0x02d8('0x33')]);_0x4fcffe[_0x02d8('0x37')]=_[_0x02d8('0x36')](_0x573595[_0x02d8('0x30')],qs[_0x02d8('0x38')](_0x2fb3ca[_0x02d8('0x33')][_0x02d8('0x38')]));_0x4fcffe['attributes']=_0x4fcffe[_0x02d8('0x37')][_0x02d8('0x39')]?_0x4fcffe[_0x02d8('0x37')]:_0x573595['model'];if(_0x2fb3ca['query'][_0x02d8('0x4b')]){_0x4fcffe['include']=[{'all':!![]}];}_0x4fcffe=_['merge']({},_0x4fcffe,_0x2fb3ca[_0x02d8('0x46')]);return db['OpenchannelQueue'][_0x02d8('0x4c')](_0x4fcffe)[_0x02d8('0x26')](handleEntityNotFound(_0x3f45f2,null))[_0x02d8('0x26')](respondWithResult(_0x3f45f2,null))[_0x02d8('0x4d')](handleError(_0x3f45f2,null));};exports[_0x02d8('0x4e')]=function(_0x21bbda,_0x3fa0fa){return db['OpenchannelQueue'][_0x02d8('0x4e')](_0x21bbda[_0x02d8('0x4f')],{})[_0x02d8('0x26')](function(_0xc0be6d){var _0x4635ac=_0x21bbda[_0x02d8('0x50')][_0x02d8('0x27')]({'plain':!![]});if(!_0x4635ac)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4635ac[_0x02d8('0x51')]===_0x02d8('0x50')){var _0x3bf902=_0xc0be6d[_0x02d8('0x27')]({'plain':!![]});var _0x214d16=_0x02d8('0x28');return db[_0x02d8('0x52')][_0x02d8('0x4c')]({'where':{'name':_0x214d16,'userProfileId':_0x4635ac[_0x02d8('0x53')]},'raw':!![]})[_0x02d8('0x26')](function(_0x5792bc){if(_0x5792bc&&_0x5792bc['autoAssociation']===0x0){return db['UserProfileResource'][_0x02d8('0x4e')]({'name':_0x3bf902[_0x02d8('0x2b')],'resourceId':_0x3bf902['id'],'type':_0x5792bc['name'],'sectionId':_0x5792bc['id']},{})['then'](function(){return _0xc0be6d;});}else{return _0xc0be6d;}})[_0x02d8('0x4d')](function(_0x47b630){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47b630);throw _0x47b630;});}return _0xc0be6d;})[_0x02d8('0x26')](respondWithResult(_0x3fa0fa,0xc9))['catch'](handleError(_0x3fa0fa,null));};exports[_0x02d8('0x54')]=function(_0x2b63fa,_0x35948a){if(_0x2b63fa['body']['id']){delete _0x2b63fa[_0x02d8('0x4f')]['id'];}return db[_0x02d8('0x2e')][_0x02d8('0x4c')]({'where':{'id':_0x2b63fa[_0x02d8('0x4a')]['id']}})[_0x02d8('0x26')](handleEntityNotFound(_0x35948a,null))[_0x02d8('0x26')](saveUpdates(_0x2b63fa[_0x02d8('0x4f')],null))['then'](respondWithResult(_0x35948a,null))[_0x02d8('0x4d')](handleError(_0x35948a,null));};exports[_0x02d8('0x55')]=function(_0x53f0af,_0x2fd875){return db['OpenchannelQueue']['find']({'where':{'id':_0x53f0af[_0x02d8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2fd875,null))[_0x02d8('0x26')](removeEntity(_0x2fd875,null))[_0x02d8('0x4d')](handleError(_0x2fd875,null));};exports['describe']=function(_0x18ad2a,_0xd89565){return db[_0x02d8('0x2e')][_0x02d8('0x56')]()[_0x02d8('0x26')](respondWithResult(_0xd89565,null))['catch'](handleError(_0xd89565,null));};exports[_0x02d8('0x57')]=function(_0x407a7c,_0x3a4cc1,_0x4b4853){var _0x35f57f={'raw':!![],'where':{}},_0x34fa09={},_0x237b0f;return db[_0x02d8('0x2e')]['findOne']({'where':{'id':_0x407a7c[_0x02d8('0x4a')]['id']}})[_0x02d8('0x26')](handleEntityNotFound(_0x3a4cc1,null))[_0x02d8('0x26')](function(_0x133dc6){if(_0x133dc6){_0x237b0f=_0x133dc6[_0x02d8('0x27')]({'plain':!![]});_0x34fa09['model']=_[_0x02d8('0x31')](db[_0x02d8('0x58')][_0x02d8('0x2f')]);_0x34fa09['query']=_['keys'](_0x407a7c[_0x02d8('0x33')]);_0x34fa09['filters']=_[_0x02d8('0x36')](_0x34fa09[_0x02d8('0x30')],_0x34fa09[_0x02d8('0x33')]);_0x35f57f['attributes']=_['intersection'](_0x34fa09[_0x02d8('0x30')],qs[_0x02d8('0x38')](_0x407a7c[_0x02d8('0x33')][_0x02d8('0x38')]));_0x35f57f['attributes']=_0x35f57f['attributes'][_0x02d8('0x39')]?_0x35f57f['attributes']:_0x34fa09[_0x02d8('0x30')];if(!_0x407a7c['query'][_0x02d8('0x3a')](_0x02d8('0x3b'))){_0x35f57f[_0x02d8('0x20')]=qs[_0x02d8('0x20')](_0x407a7c[_0x02d8('0x33')][_0x02d8('0x20')]);_0x35f57f[_0x02d8('0x1f')]=qs[_0x02d8('0x1f')](_0x407a7c[_0x02d8('0x33')][_0x02d8('0x1f')]);}_0x35f57f[_0x02d8('0x3c')]=qs['sort'](_0x407a7c['query'][_0x02d8('0x3d')]);_0x35f57f[_0x02d8('0x3e')]=qs['filters'](_[_0x02d8('0x59')](_0x407a7c[_0x02d8('0x33')],_0x34fa09[_0x02d8('0x35')]));_0x35f57f[_0x02d8('0x3e')][_0x02d8('0x5a')]=_0x133dc6['id'];if(_0x407a7c[_0x02d8('0x33')][_0x02d8('0x5b')]){_0x35f57f[_0x02d8('0x3e')]=_[_0x02d8('0x41')](_0x35f57f['where'],{'$or':_[_0x02d8('0x42')](_0x35f57f[_0x02d8('0x37')],function(_0x57589a){var _0x4e1be5={};_0x4e1be5[_0x57589a]={'$like':'%'+_0x407a7c[_0x02d8('0x33')]['filter']+'%'};return _0x4e1be5;})});}_0x35f57f=_[_0x02d8('0x41')]({},_0x35f57f,_0x407a7c[_0x02d8('0x46')]);return db[_0x02d8('0x58')][_0x02d8('0x47')](_0x35f57f);}})['then'](function(_0x190ec4){if(_0x190ec4){return db[_0x02d8('0x5c')]['findAndCountAll']({'where':{'id':_[_0x02d8('0x42')](_0x190ec4,_0x02d8('0x5d')),'role':_0x02d8('0x5e')},'attributes':['id',_0x02d8('0x2b'),_0x02d8('0x5f'),_0x02d8('0x60'),_0x02d8('0x61')]});}})[_0x02d8('0x26')](function(_0xb7fdf5){if(_0xb7fdf5){return{'count':_0xb7fdf5[_0x02d8('0x1e')],'rows':_[_0x02d8('0x42')](_0xb7fdf5[_0x02d8('0x48')],function(_0xc29a36){return{'membername':_0xc29a36[_0x02d8('0x2b')],'UserId':_0xc29a36['id'],'queue_name':_0x237b0f['name'],'OpenchannelQueueId':_0x237b0f['id'],'interface':util[_0x02d8('0x62')](_0x02d8('0x63'),_0x02d8('0x64'),_0xc29a36['name']),'penalty':0x0,'paused':_0xc29a36[_0x02d8('0x5f')],'createdAt':_0xc29a36['createdAt'],'updatedAt':_0xc29a36[_0x02d8('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x3a4cc1,_0x35f57f))[_0x02d8('0x4d')](handleError(_0x3a4cc1,null));};exports[_0x02d8('0x65')]=function(_0x463c2a,_0x59fdb6,_0x5f4f4f){var _0x2f994c={};var _0xd827f={};var _0x4102d9;var _0x4eebbe;return db[_0x02d8('0x2e')][_0x02d8('0x66')]({'where':{'id':_0x463c2a[_0x02d8('0x4a')]['id']}})[_0x02d8('0x26')](handleEntityNotFound(_0x59fdb6,null))[_0x02d8('0x26')](function(_0x3dfe82){if(_0x3dfe82){_0x4102d9=_0x3dfe82;_0xd827f[_0x02d8('0x30')]=_[_0x02d8('0x31')](db['Team'][_0x02d8('0x2f')]);_0xd827f[_0x02d8('0x33')]=_[_0x02d8('0x31')](_0x463c2a[_0x02d8('0x33')]);_0xd827f[_0x02d8('0x35')]=_['intersection'](_0xd827f[_0x02d8('0x30')],_0xd827f['query']);_0x2f994c['attributes']=_['intersection'](_0xd827f[_0x02d8('0x30')],qs[_0x02d8('0x38')](_0x463c2a['query'][_0x02d8('0x38')]));_0x2f994c['attributes']=_0x2f994c[_0x02d8('0x37')]['length']?_0x2f994c['attributes']:_0xd827f[_0x02d8('0x30')];_0x2f994c[_0x02d8('0x3c')]=qs[_0x02d8('0x3d')](_0x463c2a[_0x02d8('0x33')][_0x02d8('0x3d')]);_0x2f994c[_0x02d8('0x3e')]=qs['filters'](_['pick'](_0x463c2a[_0x02d8('0x33')],_0xd827f[_0x02d8('0x35')]));if(_0x463c2a[_0x02d8('0x33')][_0x02d8('0x5b')]){_0x2f994c['where']=_[_0x02d8('0x41')](_0x2f994c[_0x02d8('0x3e')],{'$or':_[_0x02d8('0x42')](_0x2f994c[_0x02d8('0x37')],function(_0x897fc1){var _0x7ffa24={};_0x7ffa24[_0x897fc1]={'$like':'%'+_0x463c2a[_0x02d8('0x33')][_0x02d8('0x5b')]+'%'};return _0x7ffa24;})});}_0x2f994c=_[_0x02d8('0x41')]({},_0x2f994c,_0x463c2a['options']);return _0x4102d9[_0x02d8('0x65')](_0x2f994c);}})[_0x02d8('0x26')](function(_0x3513eb){if(_0x3513eb){_0x4eebbe=_0x3513eb['length'];if(!_0x463c2a[_0x02d8('0x33')][_0x02d8('0x3a')]('nolimit')){_0x2f994c[_0x02d8('0x20')]=qs['limit'](_0x463c2a[_0x02d8('0x33')]['limit']);_0x2f994c[_0x02d8('0x1f')]=qs[_0x02d8('0x1f')](_0x463c2a[_0x02d8('0x33')]['offset']);}return _0x4102d9['getTeams'](_0x2f994c);}})['then'](function(_0x496925){if(_0x496925){return _0x496925?{'count':_0x4eebbe,'rows':_0x496925}:null;}})['then'](respondWithResult(_0x59fdb6,null))['catch'](handleError(_0x59fdb6,null));};exports[_0x02d8('0x67')]=function(_0x3af537,_0x4276df,_0x7eab0d){var _0x5be740=[];var _0xccb95f;return db['Team'][_0x02d8('0x47')]({'where':{'id':_0x3af537['body']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x02d8('0x68'),'attributes':['id'],'raw':!![]}]})[_0x02d8('0x26')](function(_0x5b458c){if(_0x5b458c){for(var _0xf28487=0x0;_0xf28487<_0x5b458c[_0x02d8('0x39')];_0xf28487+=0x1){for(var _0x5b571b=0x0;_0x5b571b<_0x5b458c[_0xf28487][_0x02d8('0x68')][_0x02d8('0x39')];_0x5b571b+=0x1){_0x5be740=_[_0x02d8('0x69')](_0x5be740,[_0x5b458c[_0xf28487][_0x02d8('0x68')][_0x5b571b]['id']]);}}return _0x5be740;}})[_0x02d8('0x26')](function(_0x29d55d){if(_0x29d55d){return db[_0x02d8('0x2e')][_0x02d8('0x4c')]({'where':{'id':_0x3af537[_0x02d8('0x4a')]['id']}});}})[_0x02d8('0x26')](function(_0x2e9a3c){if(_0x2e9a3c){_0xccb95f=_0x2e9a3c;return _0xccb95f[_0x02d8('0x6a')](_0x5be740,{'penalty':_0x3af537[_0x02d8('0x4f')]['penalty']});}})[_0x02d8('0x26')](function(_0x3d1d32){if(_0x3d1d32){return _0xccb95f[_0x02d8('0x67')](_0x3af537[_0x02d8('0x4f')]['ids']);}})[_0x02d8('0x26')](handleEntityNotFound(_0x4276df,null))[_0x02d8('0x26')](respondWithStatusCode(_0x4276df,null))[_0x02d8('0x4d')](handleError(_0x4276df,null));};exports['removeTeams']=function(_0x2539a2,_0x266dbe,_0x1abed2){var _0x176008=[];var _0x52251b;return db[_0x02d8('0x6b')][_0x02d8('0x47')]({'where':{'id':_0x2539a2[_0x02d8('0x33')][_0x02d8('0x6c')]},'attributes':['id'],'include':[{'model':db[_0x02d8('0x5c')],'as':_0x02d8('0x68'),'attributes':['id'],'raw':!![]}]})[_0x02d8('0x26')](function(_0x4fdbd7){if(_0x4fdbd7){for(var _0x261691=0x0;_0x261691<_0x4fdbd7['length'];_0x261691+=0x1){for(var _0x84941e=0x0;_0x84941e<_0x4fdbd7[_0x261691][_0x02d8('0x68')]['length'];_0x84941e+=0x1){_0x176008=_[_0x02d8('0x69')](_0x176008,[_0x4fdbd7[_0x261691]['Agents'][_0x84941e]['id']]);}}return _0x176008;}})[_0x02d8('0x26')](function(_0x22b86b){if(_0x22b86b){return db[_0x02d8('0x2e')]['find']({'where':{'id':_0x2539a2[_0x02d8('0x4a')]['id']}});}})[_0x02d8('0x26')](function(_0x5ac95c){if(_0x5ac95c){_0x52251b=_0x5ac95c;return _0x52251b['removeAgents'](_0x176008);}})[_0x02d8('0x26')](function(_0x2f5112){if(_0x52251b){return _0x52251b[_0x02d8('0x6d')](_0x2539a2['query'][_0x02d8('0x6c')]);}})['then'](handleEntityNotFound(_0x266dbe,null))[_0x02d8('0x26')](respondWithStatusCode(_0x266dbe,null))[_0x02d8('0x4d')](handleError(_0x266dbe,null));};exports[_0x02d8('0x6a')]=function(_0x61061b,_0x19b6af,_0x46667d){return db[_0x02d8('0x2e')][_0x02d8('0x4c')]({'where':{'id':_0x61061b[_0x02d8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x19b6af,null))[_0x02d8('0x26')](function(_0x5ecb59){if(_0x5ecb59){return _0x5ecb59['addAgents'](_0x61061b[_0x02d8('0x4f')][_0x02d8('0x6c')],_['omit'](_0x61061b[_0x02d8('0x4f')],['ids','id'])||{})[_0x02d8('0x6e')](function(_0x49e66f){for(var _0x2cbb27=0x0;_0x2cbb27<_0x61061b[_0x02d8('0x4f')][_0x02d8('0x6c')][_0x02d8('0x39')];_0x2cbb27+=0x1){socket[_0x02d8('0x6f')]('userOpenchannelQueue:save',{'UserId':_0x61061b[_0x02d8('0x4f')]['ids'][_0x2cbb27],'OpenchannelQueueId':_0x61061b[_0x02d8('0x4a')]['id']});}return _0x49e66f;});}})[_0x02d8('0x26')](respondWithResult(_0x19b6af,null))[_0x02d8('0x4d')](handleError(_0x19b6af,null));};exports['removeAgents']=function(_0x33313b,_0x2d4e37,_0x12ea80){var _0x57847c;return db[_0x02d8('0x2e')][_0x02d8('0x4c')]({'where':{'id':_0x33313b['params']['id']}})['then'](handleEntityNotFound(_0x2d4e37,null))['then'](function(_0x41a53c){if(_0x41a53c){return _0x41a53c[_0x02d8('0x70')](_0x33313b[_0x02d8('0x33')][_0x02d8('0x6c')])[_0x02d8('0x26')](function(_0x40eec7){if(_['isArray'](_0x33313b[_0x02d8('0x33')][_0x02d8('0x6c')])){for(var _0x282db8=0x0;_0x282db8<_0x33313b[_0x02d8('0x33')]['ids']['length'];_0x282db8+=0x1){socket[_0x02d8('0x6f')](_0x02d8('0x71'),{'UserId':_0x33313b[_0x02d8('0x33')][_0x02d8('0x6c')][_0x282db8],'OpenchannelQueueId':_0x33313b['params']['id']});}}else{socket[_0x02d8('0x6f')](_0x02d8('0x71'),{'UserId':_0x33313b[_0x02d8('0x33')][_0x02d8('0x6c')],'OpenchannelQueueId':_0x33313b['params']['id']});}});}})[_0x02d8('0x26')](respondWithStatusCode(_0x2d4e37,null))[_0x02d8('0x4d')](handleError(_0x2d4e37,null));};exports[_0x02d8('0x72')]=function(_0x3affec,_0x4ceca1,_0x40fc53){var _0x5d8a08={};var _0x3f5106={};var _0x2b0f00;var _0x5467fa;return db['OpenchannelQueue'][_0x02d8('0x66')]({'where':{'id':_0x3affec[_0x02d8('0x4a')]['id']}})[_0x02d8('0x26')](handleEntityNotFound(_0x4ceca1,null))[_0x02d8('0x26')](function(_0x43938a){if(_0x43938a){_0x2b0f00=_0x43938a;_0x3f5106[_0x02d8('0x30')]=_[_0x02d8('0x31')](db[_0x02d8('0x5c')][_0x02d8('0x2f')]);_0x3f5106[_0x02d8('0x33')]=_[_0x02d8('0x31')](_0x3affec['query']);_0x3f5106[_0x02d8('0x35')]=_[_0x02d8('0x36')](_0x3f5106['model'],_0x3f5106['query']);_0x5d8a08[_0x02d8('0x37')]=_[_0x02d8('0x36')](_0x3f5106[_0x02d8('0x30')],qs[_0x02d8('0x38')](_0x3affec['query']['fields']));_0x5d8a08['attributes']=_0x5d8a08[_0x02d8('0x37')][_0x02d8('0x39')]?_0x5d8a08['attributes']:_0x3f5106['model'];_0x5d8a08[_0x02d8('0x3c')]=qs['sort'](_0x3affec[_0x02d8('0x33')][_0x02d8('0x3d')]);_0x5d8a08['where']=qs['filters'](_[_0x02d8('0x59')](_0x3affec[_0x02d8('0x33')],_0x3f5106['filters']));if(_0x3affec[_0x02d8('0x33')][_0x02d8('0x5b')]){_0x5d8a08[_0x02d8('0x3e')]=_[_0x02d8('0x41')](_0x5d8a08[_0x02d8('0x3e')],{'$or':_[_0x02d8('0x42')](_0x5d8a08[_0x02d8('0x37')],function(_0x51b6a8){var _0x5b845f={};_0x5b845f[_0x51b6a8]={'$like':'%'+_0x3affec[_0x02d8('0x33')][_0x02d8('0x5b')]+'%'};return _0x5b845f;})});}_0x5d8a08=_['merge']({},_0x5d8a08,_0x3affec['options']);return _0x2b0f00[_0x02d8('0x72')](_0x5d8a08);}})[_0x02d8('0x26')](function(_0x48b85d){if(_0x48b85d){_0x5467fa=_0x48b85d['length'];if(!_0x3affec[_0x02d8('0x33')][_0x02d8('0x3a')](_0x02d8('0x3b'))){_0x5d8a08[_0x02d8('0x20')]=qs[_0x02d8('0x20')](_0x3affec[_0x02d8('0x33')][_0x02d8('0x20')]);_0x5d8a08[_0x02d8('0x1f')]=qs['offset'](_0x3affec[_0x02d8('0x33')][_0x02d8('0x1f')]);}return _0x2b0f00['getAgents'](_0x5d8a08);}})[_0x02d8('0x26')](function(_0xc46cd7){if(_0xc46cd7){return _0xc46cd7?{'count':_0x5467fa,'rows':_0xc46cd7}:null;}})[_0x02d8('0x26')](respondWithResult(_0x4ceca1,null))['catch'](handleError(_0x4ceca1,null));};
\ No newline at end of file
+var _0xa905=['getTeams','Team','Agents','union','addAgents','penalty','addTeams','ids','removeTeams','removeAgents','omit','spread','emit','userOpenchannelQueue:remove','getAgents','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','OpenchannelQueue','rawAttributes','query','dateEnd','dateStart','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','map','type','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','describe','findOne','UserOpenchannelQueue','OpenchannelQueueId','options','User','findAndCountAll','openchannelPause','updatedAt','createdAt','format','%s/%s'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xa905,0x1db));var _0x5a90=function(_0x4949ff,_0x3fd488){_0x4949ff=_0x4949ff-0x0;var _0x5aaa30=_0xa905[_0x4949ff];return _0x5aaa30;};'use strict';var pdf=require(_0x5a90('0x0'));var emlformat=require(_0x5a90('0x1'));var rimraf=require(_0x5a90('0x2'));var zipdir=require(_0x5a90('0x3'));var jsonpatch=require(_0x5a90('0x4'));var rp=require(_0x5a90('0x5'));var moment=require('moment');var BPromise=require(_0x5a90('0x6'));var Mustache=require(_0x5a90('0x7'));var util=require(_0x5a90('0x8'));var path=require(_0x5a90('0x9'));var sox=require(_0x5a90('0xa'));var csv=require(_0x5a90('0xb'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x5a90('0xc'));var crypto=require(_0x5a90('0xd'));var jsforce=require(_0x5a90('0xe'));var deskjs=require(_0x5a90('0xf'));var toCsv=require(_0x5a90('0xb'));var querystring=require(_0x5a90('0x10'));var Papa=require('papaparse');var Redis=require(_0x5a90('0x11'));var qs=require(_0x5a90('0x12'));var logger=require('../../config/logger')(_0x5a90('0x13'));var utils=require('../../config/utils');var config=require(_0x5a90('0x14'));var db=require(_0x5a90('0x15'))['db'];config[_0x5a90('0x16')]=_[_0x5a90('0x17')](config['redis'],{'host':_0x5a90('0x18'),'port':0x18eb});var socket=require(_0x5a90('0x19'))(new Redis(config[_0x5a90('0x16')]));require(_0x5a90('0x1a'))['register'](socket);function respondWithStatusCode(_0x536c26,_0x32a3fe){_0x32a3fe=_0x32a3fe||0xcc;return function(_0x419ceb){if(_0x419ceb){return _0x536c26[_0x5a90('0x1b')](_0x32a3fe);}return _0x536c26[_0x5a90('0x1c')](_0x32a3fe)[_0x5a90('0x1d')]();};}function respondWithResult(_0x4a921e,_0x417060){_0x417060=_0x417060||0xc8;return function(_0x1f7bbc){if(_0x1f7bbc){return _0x4a921e[_0x5a90('0x1c')](_0x417060)['json'](_0x1f7bbc);}};}function respondWithFilteredResult(_0x13e092,_0x4d0429){return function(_0x3b2a0e){if(_0x3b2a0e){var _0x16d52d=_0x3b2a0e[_0x5a90('0x1e')],_0x509b33=_0x4d0429[_0x5a90('0x1f')],_0x1b6179=_0x4d0429[_0x5a90('0x1f')]+_0x4d0429[_0x5a90('0x20')],_0x3f77fc;if(_0x1b6179>=_0x16d52d){_0x1b6179=_0x16d52d;_0x3f77fc=0xc8;}else{_0x3f77fc=0xce;}_0x13e092['status'](_0x3f77fc);return _0x13e092[_0x5a90('0x21')](_0x5a90('0x22'),_0x509b33+'-'+_0x1b6179+'/'+_0x16d52d)[_0x5a90('0x23')](_0x3b2a0e);}return null;};}function patchUpdates(_0x16a1b9){return function(_0x27231b){try{jsonpatch[_0x5a90('0x24')](_0x27231b,_0x16a1b9,!![]);}catch(_0x248699){return BPromise[_0x5a90('0x25')](_0x248699);}return _0x27231b['save']();};}function saveUpdates(_0x99ae9e,_0x30fecc){return function(_0x2436c3){if(_0x2436c3){return _0x2436c3[_0x5a90('0x26')](_0x99ae9e)[_0x5a90('0x27')](function(_0x39d1ba){return _0x39d1ba;});}return null;};}function removeEntity(_0x4aa47d,_0x43463a){return function(_0x43518a){if(_0x43518a){return _0x43518a[_0x5a90('0x28')]()[_0x5a90('0x27')](function(){var _0xae8c93=_0x43518a[_0x5a90('0x29')]({'plain':!![]});var _0x1288f5=_0x5a90('0x2a');return db[_0x5a90('0x2b')][_0x5a90('0x28')]({'where':{'type':_0x1288f5,'resourceId':_0xae8c93['id']}})[_0x5a90('0x27')](function(){return _0x43518a;});})[_0x5a90('0x27')](function(){_0x4aa47d[_0x5a90('0x1c')](0xcc)[_0x5a90('0x1d')]();});}};}function handleEntityNotFound(_0x5cb227,_0x3aaf95){return function(_0x15ada9){if(!_0x15ada9){_0x5cb227[_0x5a90('0x1b')](0x194);}return _0x15ada9;};}function handleError(_0x170293,_0x203644){_0x203644=_0x203644||0x1f4;return function(_0x13182e){logger[_0x5a90('0x2c')](_0x13182e[_0x5a90('0x2d')]);if(_0x13182e['name']){delete _0x13182e[_0x5a90('0x2e')];}_0x170293[_0x5a90('0x1c')](_0x203644)[_0x5a90('0x2f')](_0x13182e);};}exports[_0x5a90('0x30')]=function(_0x32ff23,_0x15efaf){var _0x53c8bf={},_0x42319e={},_0x5109e3={'count':0x0,'rows':[]};var _0x349b1a=db[_0x5a90('0x31')][_0x5a90('0x32')];_0x42319e['model']=_['keys'](_0x349b1a);var _0x16cd6c={'dateStart':_0x32ff23[_0x5a90('0x33')]['dateStart'],'dateEnd':_0x32ff23[_0x5a90('0x33')][_0x5a90('0x34')]};delete _0x32ff23[_0x5a90('0x33')][_0x5a90('0x35')];delete _0x32ff23[_0x5a90('0x33')]['dateEnd'];_0x42319e[_0x5a90('0x33')]=_['keys'](_0x32ff23[_0x5a90('0x33')]);_0x42319e[_0x5a90('0x36')]=_[_0x5a90('0x37')](_0x42319e['model'],_0x42319e[_0x5a90('0x33')]);_0x53c8bf[_0x5a90('0x38')]=_[_0x5a90('0x37')](_0x42319e[_0x5a90('0x39')],qs[_0x5a90('0x3a')](_0x32ff23[_0x5a90('0x33')][_0x5a90('0x3a')]));_0x53c8bf[_0x5a90('0x38')]=_0x53c8bf[_0x5a90('0x38')][_0x5a90('0x3b')]?_0x53c8bf[_0x5a90('0x38')]:_0x42319e[_0x5a90('0x39')];if(!_0x32ff23[_0x5a90('0x33')][_0x5a90('0x3c')](_0x5a90('0x3d'))){_0x53c8bf[_0x5a90('0x20')]=qs['limit'](_0x32ff23[_0x5a90('0x33')][_0x5a90('0x20')]);_0x53c8bf[_0x5a90('0x1f')]=qs[_0x5a90('0x1f')](_0x32ff23['query'][_0x5a90('0x1f')]);}_0x53c8bf[_0x5a90('0x3e')]=qs['sort'](_0x32ff23['query'][_0x5a90('0x3f')]);_0x53c8bf[_0x5a90('0x40')]=qs['filters'](_[_0x5a90('0x41')](_0x32ff23['query'],_0x42319e[_0x5a90('0x36')]));if(_0x16cd6c[_0x5a90('0x35')]){if(_0x16cd6c['dateEnd']){_0x16cd6c[_0x5a90('0x34')]=moment(_0x16cd6c[_0x5a90('0x34')])[_0x5a90('0x42')](0x1,'day');}else{_0x16cd6c[_0x5a90('0x34')]=moment(_0x16cd6c[_0x5a90('0x35')])['add'](0x1,_0x5a90('0x43'));}_[_0x5a90('0x44')](_0x53c8bf[_0x5a90('0x40')],{'createdAt':{'$gte':_0x16cd6c[_0x5a90('0x35')],'$lte':_0x16cd6c['dateEnd']}});}if(_0x32ff23[_0x5a90('0x33')]['filter']){_0x53c8bf[_0x5a90('0x40')]=_[_0x5a90('0x44')](_0x53c8bf[_0x5a90('0x40')],{'$or':_[_0x5a90('0x45')](_0x349b1a,function(_0x513f73){if(_0x513f73[_0x5a90('0x46')]['key']!==_0x5a90('0x47')){var _0x3dabdd={};_0x3dabdd[_0x513f73['field']]={'$like':'%'+_0x32ff23['query'][_0x5a90('0x48')]+'%'};return _0x3dabdd;}})});}_0x53c8bf=_[_0x5a90('0x44')]({},_0x53c8bf,_0x32ff23['options']);var _0x17be3f={'where':_0x53c8bf['where']};return db[_0x5a90('0x31')][_0x5a90('0x1e')](_0x17be3f)['then'](function(_0x5cc76c){_0x5109e3[_0x5a90('0x1e')]=_0x5cc76c;if(_0x32ff23[_0x5a90('0x33')][_0x5a90('0x49')]){_0x53c8bf[_0x5a90('0x4a')]=[{'all':!![]}];}return db[_0x5a90('0x31')][_0x5a90('0x4b')](_0x53c8bf);})[_0x5a90('0x27')](function(_0x706f0f){_0x5109e3[_0x5a90('0x4c')]=_0x706f0f;return _0x5109e3;})[_0x5a90('0x27')](respondWithFilteredResult(_0x15efaf,_0x53c8bf))[_0x5a90('0x4d')](handleError(_0x15efaf,null));};exports[_0x5a90('0x4e')]=function(_0x38e6fd,_0x5ca440){var _0x2266d8={'raw':!![],'where':{'id':_0x38e6fd[_0x5a90('0x4f')]['id']}},_0x4fe158={};_0x4fe158[_0x5a90('0x39')]=_['keys'](db['OpenchannelQueue']['rawAttributes']);_0x4fe158[_0x5a90('0x33')]=_[_0x5a90('0x50')](_0x38e6fd[_0x5a90('0x33')]);_0x4fe158['filters']=_['intersection'](_0x4fe158[_0x5a90('0x39')],_0x4fe158[_0x5a90('0x33')]);_0x2266d8[_0x5a90('0x38')]=_[_0x5a90('0x37')](_0x4fe158[_0x5a90('0x39')],qs[_0x5a90('0x3a')](_0x38e6fd[_0x5a90('0x33')][_0x5a90('0x3a')]));_0x2266d8[_0x5a90('0x38')]=_0x2266d8[_0x5a90('0x38')][_0x5a90('0x3b')]?_0x2266d8[_0x5a90('0x38')]:_0x4fe158[_0x5a90('0x39')];if(_0x38e6fd['query'][_0x5a90('0x49')]){_0x2266d8[_0x5a90('0x4a')]=[{'all':!![]}];}_0x2266d8=_[_0x5a90('0x44')]({},_0x2266d8,_0x38e6fd['options']);return db[_0x5a90('0x31')][_0x5a90('0x51')](_0x2266d8)[_0x5a90('0x27')](handleEntityNotFound(_0x5ca440,null))['then'](respondWithResult(_0x5ca440,null))[_0x5a90('0x4d')](handleError(_0x5ca440,null));};exports[_0x5a90('0x52')]=function(_0x5dea2a,_0x57d5ad){return db['OpenchannelQueue'][_0x5a90('0x52')](_0x5dea2a[_0x5a90('0x53')],{})['then'](function(_0x51fbbf){var _0x417aa9=_0x5dea2a[_0x5a90('0x54')]['get']({'plain':!![]});if(!_0x417aa9)throw new Error(_0x5a90('0x55'));if(_0x417aa9['role']===_0x5a90('0x54')){var _0x291035=_0x51fbbf[_0x5a90('0x29')]({'plain':!![]});var _0x277b9d='OpenchannelQueues';return db['UserProfileSection'][_0x5a90('0x51')]({'where':{'name':_0x277b9d,'userProfileId':_0x417aa9[_0x5a90('0x56')]},'raw':!![]})[_0x5a90('0x27')](function(_0x486749){if(_0x486749&&_0x486749[_0x5a90('0x57')]===0x0){return db[_0x5a90('0x2b')][_0x5a90('0x52')]({'name':_0x291035[_0x5a90('0x2e')],'resourceId':_0x291035['id'],'type':_0x486749[_0x5a90('0x2e')],'sectionId':_0x486749['id']},{})[_0x5a90('0x27')](function(){return _0x51fbbf;});}else{return _0x51fbbf;}})[_0x5a90('0x4d')](function(_0x10495e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x10495e);throw _0x10495e;});}return _0x51fbbf;})['then'](respondWithResult(_0x57d5ad,0xc9))['catch'](handleError(_0x57d5ad,null));};exports[_0x5a90('0x26')]=function(_0x256bb8,_0x9d2929){if(_0x256bb8[_0x5a90('0x53')]['id']){delete _0x256bb8[_0x5a90('0x53')]['id'];}return db[_0x5a90('0x31')][_0x5a90('0x51')]({'where':{'id':_0x256bb8['params']['id']}})[_0x5a90('0x27')](handleEntityNotFound(_0x9d2929,null))[_0x5a90('0x27')](saveUpdates(_0x256bb8[_0x5a90('0x53')],null))[_0x5a90('0x27')](respondWithResult(_0x9d2929,null))['catch'](handleError(_0x9d2929,null));};exports[_0x5a90('0x28')]=function(_0x4633d0,_0x5fcdc5){return db['OpenchannelQueue']['find']({'where':{'id':_0x4633d0[_0x5a90('0x4f')]['id']}})[_0x5a90('0x27')](handleEntityNotFound(_0x5fcdc5,null))[_0x5a90('0x27')](removeEntity(_0x5fcdc5,null))[_0x5a90('0x4d')](handleError(_0x5fcdc5,null));};exports[_0x5a90('0x58')]=function(_0x50bb8e,_0x2ea5ab){return db[_0x5a90('0x31')][_0x5a90('0x58')]()[_0x5a90('0x27')](respondWithResult(_0x2ea5ab,null))[_0x5a90('0x4d')](handleError(_0x2ea5ab,null));};exports['getMembers']=function(_0x20d901,_0x54837e,_0x20334c){var _0x3a22f3={'raw':!![],'where':{}},_0x21cd6e={},_0x2a8e44;return db[_0x5a90('0x31')][_0x5a90('0x59')]({'where':{'id':_0x20d901[_0x5a90('0x4f')]['id']}})[_0x5a90('0x27')](handleEntityNotFound(_0x54837e,null))[_0x5a90('0x27')](function(_0x4b3936){if(_0x4b3936){_0x2a8e44=_0x4b3936[_0x5a90('0x29')]({'plain':!![]});_0x21cd6e['model']=_[_0x5a90('0x50')](db[_0x5a90('0x5a')][_0x5a90('0x32')]);_0x21cd6e[_0x5a90('0x33')]=_[_0x5a90('0x50')](_0x20d901[_0x5a90('0x33')]);_0x21cd6e[_0x5a90('0x36')]=_[_0x5a90('0x37')](_0x21cd6e[_0x5a90('0x39')],_0x21cd6e[_0x5a90('0x33')]);_0x3a22f3['attributes']=_[_0x5a90('0x37')](_0x21cd6e[_0x5a90('0x39')],qs[_0x5a90('0x3a')](_0x20d901['query'][_0x5a90('0x3a')]));_0x3a22f3[_0x5a90('0x38')]=_0x3a22f3[_0x5a90('0x38')][_0x5a90('0x3b')]?_0x3a22f3[_0x5a90('0x38')]:_0x21cd6e[_0x5a90('0x39')];if(!_0x20d901[_0x5a90('0x33')][_0x5a90('0x3c')](_0x5a90('0x3d'))){_0x3a22f3[_0x5a90('0x20')]=qs[_0x5a90('0x20')](_0x20d901[_0x5a90('0x33')][_0x5a90('0x20')]);_0x3a22f3[_0x5a90('0x1f')]=qs[_0x5a90('0x1f')](_0x20d901['query'][_0x5a90('0x1f')]);}_0x3a22f3[_0x5a90('0x3e')]=qs[_0x5a90('0x3f')](_0x20d901[_0x5a90('0x33')][_0x5a90('0x3f')]);_0x3a22f3[_0x5a90('0x40')]=qs[_0x5a90('0x36')](_[_0x5a90('0x41')](_0x20d901[_0x5a90('0x33')],_0x21cd6e['filters']));_0x3a22f3['where'][_0x5a90('0x5b')]=_0x4b3936['id'];if(_0x20d901[_0x5a90('0x33')][_0x5a90('0x48')]){_0x3a22f3[_0x5a90('0x40')]=_[_0x5a90('0x44')](_0x3a22f3[_0x5a90('0x40')],{'$or':_[_0x5a90('0x45')](_0x3a22f3[_0x5a90('0x38')],function(_0x22abf4){var _0x4c2ce8={};_0x4c2ce8[_0x22abf4]={'$like':'%'+_0x20d901[_0x5a90('0x33')][_0x5a90('0x48')]+'%'};return _0x4c2ce8;})});}_0x3a22f3=_[_0x5a90('0x44')]({},_0x3a22f3,_0x20d901[_0x5a90('0x5c')]);return db[_0x5a90('0x5a')][_0x5a90('0x4b')](_0x3a22f3);}})[_0x5a90('0x27')](function(_0x2d214c){if(_0x2d214c){return db[_0x5a90('0x5d')][_0x5a90('0x5e')]({'where':{'id':_['map'](_0x2d214c,'UserId'),'role':'agent'},'attributes':['id','name',_0x5a90('0x5f'),_0x5a90('0x60'),_0x5a90('0x61')]});}})[_0x5a90('0x27')](function(_0x118fc3){if(_0x118fc3){return{'count':_0x118fc3['count'],'rows':_['map'](_0x118fc3[_0x5a90('0x4c')],function(_0x7fb06a){return{'membername':_0x7fb06a[_0x5a90('0x2e')],'UserId':_0x7fb06a['id'],'queue_name':_0x2a8e44['name'],'OpenchannelQueueId':_0x2a8e44['id'],'interface':util[_0x5a90('0x62')](_0x5a90('0x63'),'SIP',_0x7fb06a[_0x5a90('0x2e')]),'penalty':0x0,'paused':_0x7fb06a[_0x5a90('0x5f')],'createdAt':_0x7fb06a[_0x5a90('0x61')],'updatedAt':_0x7fb06a[_0x5a90('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5a90('0x27')](respondWithFilteredResult(_0x54837e,_0x3a22f3))[_0x5a90('0x4d')](handleError(_0x54837e,null));};exports[_0x5a90('0x64')]=function(_0x267a20,_0x31f119,_0x3560be){var _0x23caa8={};var _0x353909={};var _0x249cac;var _0x36f8fa;return db['OpenchannelQueue'][_0x5a90('0x59')]({'where':{'id':_0x267a20['params']['id']}})[_0x5a90('0x27')](handleEntityNotFound(_0x31f119,null))[_0x5a90('0x27')](function(_0x8508e1){if(_0x8508e1){_0x249cac=_0x8508e1;_0x353909[_0x5a90('0x39')]=_[_0x5a90('0x50')](db[_0x5a90('0x65')][_0x5a90('0x32')]);_0x353909['query']=_[_0x5a90('0x50')](_0x267a20[_0x5a90('0x33')]);_0x353909[_0x5a90('0x36')]=_[_0x5a90('0x37')](_0x353909[_0x5a90('0x39')],_0x353909['query']);_0x23caa8[_0x5a90('0x38')]=_[_0x5a90('0x37')](_0x353909[_0x5a90('0x39')],qs[_0x5a90('0x3a')](_0x267a20[_0x5a90('0x33')][_0x5a90('0x3a')]));_0x23caa8[_0x5a90('0x38')]=_0x23caa8['attributes'][_0x5a90('0x3b')]?_0x23caa8['attributes']:_0x353909[_0x5a90('0x39')];_0x23caa8[_0x5a90('0x3e')]=qs[_0x5a90('0x3f')](_0x267a20[_0x5a90('0x33')][_0x5a90('0x3f')]);_0x23caa8[_0x5a90('0x40')]=qs['filters'](_[_0x5a90('0x41')](_0x267a20[_0x5a90('0x33')],_0x353909[_0x5a90('0x36')]));if(_0x267a20['query'][_0x5a90('0x48')]){_0x23caa8[_0x5a90('0x40')]=_[_0x5a90('0x44')](_0x23caa8[_0x5a90('0x40')],{'$or':_[_0x5a90('0x45')](_0x23caa8['attributes'],function(_0x3f36fd){var _0xcab1ed={};_0xcab1ed[_0x3f36fd]={'$like':'%'+_0x267a20[_0x5a90('0x33')]['filter']+'%'};return _0xcab1ed;})});}_0x23caa8=_[_0x5a90('0x44')]({},_0x23caa8,_0x267a20[_0x5a90('0x5c')]);return _0x249cac['getTeams'](_0x23caa8);}})[_0x5a90('0x27')](function(_0x575444){if(_0x575444){_0x36f8fa=_0x575444[_0x5a90('0x3b')];if(!_0x267a20[_0x5a90('0x33')][_0x5a90('0x3c')](_0x5a90('0x3d'))){_0x23caa8[_0x5a90('0x20')]=qs['limit'](_0x267a20[_0x5a90('0x33')]['limit']);_0x23caa8['offset']=qs[_0x5a90('0x1f')](_0x267a20[_0x5a90('0x33')][_0x5a90('0x1f')]);}return _0x249cac[_0x5a90('0x64')](_0x23caa8);}})[_0x5a90('0x27')](function(_0x1996ad){if(_0x1996ad){return _0x1996ad?{'count':_0x36f8fa,'rows':_0x1996ad}:null;}})['then'](respondWithResult(_0x31f119,null))[_0x5a90('0x4d')](handleError(_0x31f119,null));};exports['addTeams']=function(_0x3363d,_0x258d05,_0x1172d1){var _0x52fcbe=[];var _0x2ee17b;return db[_0x5a90('0x65')][_0x5a90('0x4b')]({'where':{'id':_0x3363d['body']['ids']},'attributes':['id'],'include':[{'model':db[_0x5a90('0x5d')],'as':_0x5a90('0x66'),'attributes':['id'],'raw':!![]}]})[_0x5a90('0x27')](function(_0x4d7016){if(_0x4d7016){for(var _0x1ad3a8=0x0;_0x1ad3a8<_0x4d7016[_0x5a90('0x3b')];_0x1ad3a8+=0x1){for(var _0x35ac23=0x0;_0x35ac23<_0x4d7016[_0x1ad3a8][_0x5a90('0x66')][_0x5a90('0x3b')];_0x35ac23+=0x1){_0x52fcbe=_[_0x5a90('0x67')](_0x52fcbe,[_0x4d7016[_0x1ad3a8][_0x5a90('0x66')][_0x35ac23]['id']]);}}return _0x52fcbe;}})['then'](function(_0x29eb8f){if(_0x29eb8f){return db['OpenchannelQueue']['find']({'where':{'id':_0x3363d['params']['id']}});}})[_0x5a90('0x27')](function(_0x284979){if(_0x284979){_0x2ee17b=_0x284979;return _0x2ee17b[_0x5a90('0x68')](_0x52fcbe,{'penalty':_0x3363d['body'][_0x5a90('0x69')]});}})[_0x5a90('0x27')](function(_0x20e8f3){if(_0x20e8f3){return _0x2ee17b[_0x5a90('0x6a')](_0x3363d[_0x5a90('0x53')][_0x5a90('0x6b')]);}})['then'](handleEntityNotFound(_0x258d05,null))[_0x5a90('0x27')](respondWithStatusCode(_0x258d05,null))['catch'](handleError(_0x258d05,null));};exports[_0x5a90('0x6c')]=function(_0x4e7808,_0x5ebf77,_0x30ae88){var _0x4fbf30=[];var _0x2b5747;return db['Team'][_0x5a90('0x4b')]({'where':{'id':_0x4e7808[_0x5a90('0x33')][_0x5a90('0x6b')]},'attributes':['id'],'include':[{'model':db[_0x5a90('0x5d')],'as':_0x5a90('0x66'),'attributes':['id'],'raw':!![]}]})[_0x5a90('0x27')](function(_0x52c9f6){if(_0x52c9f6){for(var _0x50bb5e=0x0;_0x50bb5e<_0x52c9f6[_0x5a90('0x3b')];_0x50bb5e+=0x1){for(var _0x135cc9=0x0;_0x135cc9<_0x52c9f6[_0x50bb5e][_0x5a90('0x66')][_0x5a90('0x3b')];_0x135cc9+=0x1){_0x4fbf30=_['union'](_0x4fbf30,[_0x52c9f6[_0x50bb5e]['Agents'][_0x135cc9]['id']]);}}return _0x4fbf30;}})[_0x5a90('0x27')](function(_0x28bc08){if(_0x28bc08){return db[_0x5a90('0x31')][_0x5a90('0x51')]({'where':{'id':_0x4e7808[_0x5a90('0x4f')]['id']}});}})[_0x5a90('0x27')](function(_0x1cd110){if(_0x1cd110){_0x2b5747=_0x1cd110;return _0x2b5747[_0x5a90('0x6d')](_0x4fbf30);}})[_0x5a90('0x27')](function(_0xdfb4df){if(_0x2b5747){return _0x2b5747['removeTeams'](_0x4e7808[_0x5a90('0x33')]['ids']);}})[_0x5a90('0x27')](handleEntityNotFound(_0x5ebf77,null))[_0x5a90('0x27')](respondWithStatusCode(_0x5ebf77,null))[_0x5a90('0x4d')](handleError(_0x5ebf77,null));};exports[_0x5a90('0x68')]=function(_0xc0b908,_0x5ad55d,_0x547f88){return db[_0x5a90('0x31')][_0x5a90('0x51')]({'where':{'id':_0xc0b908[_0x5a90('0x4f')]['id']}})[_0x5a90('0x27')](handleEntityNotFound(_0x5ad55d,null))['then'](function(_0x3032d8){if(_0x3032d8){return _0x3032d8[_0x5a90('0x68')](_0xc0b908['body'][_0x5a90('0x6b')],_[_0x5a90('0x6e')](_0xc0b908[_0x5a90('0x53')],[_0x5a90('0x6b'),'id'])||{})[_0x5a90('0x6f')](function(_0x4c932d){for(var _0x4d4590=0x0;_0x4d4590<_0xc0b908['body'][_0x5a90('0x6b')][_0x5a90('0x3b')];_0x4d4590+=0x1){socket[_0x5a90('0x70')]('userOpenchannelQueue:save',{'UserId':_0xc0b908[_0x5a90('0x53')][_0x5a90('0x6b')][_0x4d4590],'OpenchannelQueueId':_0xc0b908[_0x5a90('0x4f')]['id']});}return _0x4c932d;});}})[_0x5a90('0x27')](respondWithResult(_0x5ad55d,null))[_0x5a90('0x4d')](handleError(_0x5ad55d,null));};exports['removeAgents']=function(_0x4c1069,_0x41cb93,_0x20f973){var _0x3bbe40;return db[_0x5a90('0x31')][_0x5a90('0x51')]({'where':{'id':_0x4c1069['params']['id']}})[_0x5a90('0x27')](handleEntityNotFound(_0x41cb93,null))['then'](function(_0x3fb8e0){if(_0x3fb8e0){return _0x3fb8e0['removeAgents'](_0x4c1069['query'][_0x5a90('0x6b')])['then'](function(_0x3288e6){if(_['isArray'](_0x4c1069[_0x5a90('0x33')][_0x5a90('0x6b')])){for(var _0x86680b=0x0;_0x86680b<_0x4c1069[_0x5a90('0x33')][_0x5a90('0x6b')][_0x5a90('0x3b')];_0x86680b+=0x1){socket['emit'](_0x5a90('0x71'),{'UserId':_0x4c1069[_0x5a90('0x33')]['ids'][_0x86680b],'OpenchannelQueueId':_0x4c1069[_0x5a90('0x4f')]['id']});}}else{socket['emit'](_0x5a90('0x71'),{'UserId':_0x4c1069[_0x5a90('0x33')]['ids'],'OpenchannelQueueId':_0x4c1069[_0x5a90('0x4f')]['id']});}});}})['then'](respondWithStatusCode(_0x41cb93,null))[_0x5a90('0x4d')](handleError(_0x41cb93,null));};exports[_0x5a90('0x72')]=function(_0x40b6af,_0x272283,_0x3864ce){var _0x5e0dd8={};var _0x14d33a={};var _0x1f38bc;var _0x1a5509;return db[_0x5a90('0x31')][_0x5a90('0x59')]({'where':{'id':_0x40b6af[_0x5a90('0x4f')]['id']}})[_0x5a90('0x27')](handleEntityNotFound(_0x272283,null))[_0x5a90('0x27')](function(_0x3a5b5b){if(_0x3a5b5b){_0x1f38bc=_0x3a5b5b;_0x14d33a[_0x5a90('0x39')]=_['keys'](db[_0x5a90('0x5d')][_0x5a90('0x32')]);_0x14d33a[_0x5a90('0x33')]=_[_0x5a90('0x50')](_0x40b6af[_0x5a90('0x33')]);_0x14d33a['filters']=_[_0x5a90('0x37')](_0x14d33a[_0x5a90('0x39')],_0x14d33a['query']);_0x5e0dd8['attributes']=_[_0x5a90('0x37')](_0x14d33a[_0x5a90('0x39')],qs[_0x5a90('0x3a')](_0x40b6af[_0x5a90('0x33')][_0x5a90('0x3a')]));_0x5e0dd8[_0x5a90('0x38')]=_0x5e0dd8[_0x5a90('0x38')][_0x5a90('0x3b')]?_0x5e0dd8[_0x5a90('0x38')]:_0x14d33a[_0x5a90('0x39')];_0x5e0dd8[_0x5a90('0x3e')]=qs[_0x5a90('0x3f')](_0x40b6af['query'][_0x5a90('0x3f')]);_0x5e0dd8['where']=qs[_0x5a90('0x36')](_['pick'](_0x40b6af['query'],_0x14d33a['filters']));if(_0x40b6af[_0x5a90('0x33')]['filter']){_0x5e0dd8[_0x5a90('0x40')]=_[_0x5a90('0x44')](_0x5e0dd8['where'],{'$or':_[_0x5a90('0x45')](_0x5e0dd8[_0x5a90('0x38')],function(_0x19b3f3){var _0x363079={};_0x363079[_0x19b3f3]={'$like':'%'+_0x40b6af[_0x5a90('0x33')]['filter']+'%'};return _0x363079;})});}_0x5e0dd8=_[_0x5a90('0x44')]({},_0x5e0dd8,_0x40b6af[_0x5a90('0x5c')]);return _0x1f38bc['getAgents'](_0x5e0dd8);}})['then'](function(_0x2d67b9){if(_0x2d67b9){_0x1a5509=_0x2d67b9[_0x5a90('0x3b')];if(!_0x40b6af[_0x5a90('0x33')][_0x5a90('0x3c')](_0x5a90('0x3d'))){_0x5e0dd8[_0x5a90('0x20')]=qs['limit'](_0x40b6af[_0x5a90('0x33')][_0x5a90('0x20')]);_0x5e0dd8[_0x5a90('0x1f')]=qs[_0x5a90('0x1f')](_0x40b6af[_0x5a90('0x33')][_0x5a90('0x1f')]);}return _0x1f38bc[_0x5a90('0x72')](_0x5e0dd8);}})[_0x5a90('0x27')](function(_0x140ff9){if(_0x140ff9){return _0x140ff9?{'count':_0x1a5509,'rows':_0x140ff9}:null;}})['then'](respondWithResult(_0x272283,null))[_0x5a90('0x4d')](handleError(_0x272283,null));};
\ No newline at end of file
index 7964139..6261c1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1bf=['exports','events','../../mysqldb','OpenchannelQueue','setMaxListeners','save','update'];(function(_0xa70d3b,_0x10e835){var _0x55fb50=function(_0x1c25cc){while(--_0x1c25cc){_0xa70d3b['push'](_0xa70d3b['shift']());}};_0x55fb50(++_0x10e835);}(_0xc1bf,0xef));var _0xfc1b=function(_0x903228,_0x42c429){_0x903228=_0x903228-0x0;var _0xcec81d=_0xc1bf[_0x903228];return _0xcec81d;};'use strict';var EventEmitter=require(_0xfc1b('0x0'));var OpenchannelQueue=require(_0xfc1b('0x1'))['db'][_0xfc1b('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xfc1b('0x3')](0x0);var events={'afterCreate':_0xfc1b('0x4'),'afterUpdate':_0xfc1b('0x5'),'afterDestroy':'remove'};function emitEvent(_0xe13840){return function(_0x6a6497,_0x2cbeb1,_0x1b507c){OpenchannelQueueEvents['emit'](_0xe13840+':'+_0x6a6497['id'],_0x6a6497);OpenchannelQueueEvents['emit'](_0xe13840,_0x6a6497);_0x1b507c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0xfc1b('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xa768=['exports','events','../../mysqldb','OpenchannelQueue','update','remove','emit'];(function(_0x47327a,_0xa744ab){var _0x258c4c=function(_0x4f043){while(--_0x4f043){_0x47327a['push'](_0x47327a['shift']());}};_0x258c4c(++_0xa744ab);}(_0xa768,0xbe));var _0x8a76=function(_0x205e7b,_0x30d30d){_0x205e7b=_0x205e7b-0x0;var _0x16e2f5=_0xa768[_0x205e7b];return _0x16e2f5;};'use strict';var EventEmitter=require(_0x8a76('0x0'));var OpenchannelQueue=require(_0x8a76('0x1'))['db'][_0x8a76('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x8a76('0x3'),'afterDestroy':_0x8a76('0x4')};function emitEvent(_0x40dc02){return function(_0x1aeef4,_0x21b52f,_0x4c8a71){OpenchannelQueueEvents[_0x8a76('0x5')](_0x40dc02+':'+_0x1aeef4['id'],_0x1aeef4);OpenchannelQueueEvents['emit'](_0x40dc02,_0x1aeef4);_0x4c8a71(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x8a76('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
index e28d6ac..99c5e64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['request-promise','./openchannelQueue.attributes','define','openchannel_queues','lodash','util','api','moment','bluebird'];(function(_0x199552,_0x10c536){var _0x4bd16c=function(_0x3a7117){while(--_0x3a7117){_0x199552['push'](_0x199552['shift']());}};_0x4bd16c(++_0x10c536);}(_0xbec5,0xe5));var _0x5bec=function(_0x12ca5f,_0x223d98){_0x12ca5f=_0x12ca5f-0x0;var _0xfc3ae9=_0xbec5[_0x12ca5f];return _0xfc3ae9;};'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 attributes=require(_0x5bec('0x6'));module['exports']=function(_0x1f8933,_0x376cdb){return _0x1f8933[_0x5bec('0x7')]('OpenchannelQueue',attributes,{'tableName':_0x5bec('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe13a=['request-promise','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','util','../../config/logger','api','moment'];(function(_0x45b462,_0x419d1e){var _0x12516f=function(_0x415098){while(--_0x415098){_0x45b462['push'](_0x45b462['shift']());}};_0x12516f(++_0x419d1e);}(_0xe13a,0x178));var _0xae13=function(_0x18c962,_0x5952fd){_0x18c962=_0x18c962-0x0;var _0x1e630c=_0xe13a[_0x18c962];return _0x1e630c;};'use strict';var _=require('lodash');var util=require(_0xae13('0x0'));var logger=require(_0xae13('0x1'))(_0xae13('0x2'));var moment=require(_0xae13('0x3'));var BPromise=require('bluebird');var rp=require(_0xae13('0x4'));var attributes=require(_0xae13('0x5'));module[_0xae13('0x6')]=function(_0x10abd7,_0x28a89a){return _0x10abd7[_0xae13('0x7')](_0xae13('0x8'),attributes,{'tableName':_0xae13('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aee5584..75531fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54f3=['catch','GetOpenchannelQueue','OpenchannelQueue','findAll','raw','where','options','attributes','limit','model','include','map','then','find','ShowOpenchannelQueue','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','request','info','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelQueue,\x20%s,\x20%s','message','result'];(function(_0x2c0421,_0xa30722){var _0x25a09e=function(_0x10c118){while(--_0x10c118){_0x2c0421['push'](_0x2c0421['shift']());}};_0x25a09e(++_0xa30722);}(_0x54f3,0x120));var _0x354f=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x54f3[_0x4b055c];return _0x4b62bb;};'use strict';var _=require('lodash');var util=require(_0x354f('0x0'));var moment=require(_0x354f('0x1'));var BPromise=require(_0x354f('0x2'));var rs=require(_0x354f('0x3'));var fs=require('fs');var Redis=require(_0x354f('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x354f('0x5'))(_0x354f('0x6'));var config=require(_0x354f('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x354f('0x8')]({'port':0x232a});config['redis']=_[_0x354f('0x9')](config[_0x354f('0xa')],{'host':_0x354f('0xb'),'port':0x18eb});var socket=require(_0x354f('0xc'))(new Redis(config['redis']));require(_0x354f('0xd'))['register'](socket);function respondWithRpcPromise(_0x165ffa,_0x1fc9d9,_0x4b8015){return new BPromise(function(_0x55746e,_0x3e64c3){return client[_0x354f('0xe')](_0x165ffa,_0x4b8015)['then'](function(_0x6278e3){logger[_0x354f('0xf')]('OpenchannelQueue,\x20%s,\x20%s',_0x1fc9d9,_0x354f('0x10'));logger[_0x354f('0x11')](_0x354f('0x12'),_0x1fc9d9,_0x354f('0x10'),JSON[_0x354f('0x13')](_0x6278e3));if(_0x6278e3[_0x354f('0x14')]){if(_0x6278e3[_0x354f('0x14')]['code']===0x1f4){logger[_0x354f('0x14')](_0x354f('0x15'),_0x1fc9d9,_0x6278e3[_0x354f('0x14')]['message']);return _0x3e64c3(_0x6278e3[_0x354f('0x14')][_0x354f('0x16')]);}logger[_0x354f('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x1fc9d9,_0x6278e3['error'][_0x354f('0x16')]);return _0x55746e(_0x6278e3[_0x354f('0x14')][_0x354f('0x16')]);}else{logger[_0x354f('0xf')](_0x354f('0x15'),_0x1fc9d9,_0x354f('0x10'));_0x55746e(_0x6278e3[_0x354f('0x17')]['message']);}})[_0x354f('0x18')](function(_0x187ba1){logger[_0x354f('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x1fc9d9,_0x187ba1);_0x3e64c3(_0x187ba1);});});}exports[_0x354f('0x19')]=function(_0x5a26df){var _0x411b7b=this;return new Promise(function(_0x1cc5db,_0x5e930c){return db[_0x354f('0x1a')][_0x354f('0x1b')]({'raw':_0x5a26df['options']?_0x5a26df['options'][_0x354f('0x1c')]===undefined?!![]:![]:!![],'where':_0x5a26df['options']?_0x5a26df['options'][_0x354f('0x1d')]||null:null,'attributes':_0x5a26df[_0x354f('0x1e')]?_0x5a26df[_0x354f('0x1e')][_0x354f('0x1f')]||null:null,'limit':_0x5a26df[_0x354f('0x1e')]?_0x5a26df[_0x354f('0x1e')][_0x354f('0x20')]||null:null,'include':_0x5a26df['options']?_0x5a26df[_0x354f('0x1e')]['include']?_['map'](_0x5a26df[_0x354f('0x1e')]['include'],function(_0x4b1820){return{'model':db[_0x4b1820[_0x354f('0x21')]],'as':_0x4b1820['as'],'attributes':_0x4b1820['attributes'],'include':_0x4b1820[_0x354f('0x22')]?_[_0x354f('0x23')](_0x4b1820['include'],function(_0x73c95e){return{'model':db[_0x73c95e[_0x354f('0x21')]],'as':_0x73c95e['as'],'attributes':_0x73c95e[_0x354f('0x1f')],'include':_0x73c95e['include']?_[_0x354f('0x23')](_0x73c95e['include'],function(_0x227d9b){return{'model':db[_0x227d9b[_0x354f('0x21')]],'as':_0x227d9b['as'],'attributes':_0x227d9b[_0x354f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x354f('0x24')](function(_0x596b48){logger[_0x354f('0xf')](_0x354f('0x19'),_0x5a26df);logger[_0x354f('0x11')](_0x354f('0x19'),_0x5a26df,JSON[_0x354f('0x13')](_0x596b48));_0x1cc5db(_0x596b48);})['catch'](function(_0x5a8208){logger[_0x354f('0x14')](_0x354f('0x19'),_0x5a8208[_0x354f('0x16')],_0x5a26df);_0x5e930c(_0x411b7b[_0x354f('0x14')](0x1f4,_0x5a8208['message']));});});};exports['ShowOpenchannelQueue']=function(_0x2142a0){var _0x3c425e=this;return new Promise(function(_0x2ca0dd,_0x8ef91e){return db['OpenchannelQueue'][_0x354f('0x25')]({'raw':_0x2142a0[_0x354f('0x1e')]?_0x2142a0[_0x354f('0x1e')][_0x354f('0x1c')]===undefined?!![]:![]:!![],'where':_0x2142a0['options']?_0x2142a0['options'][_0x354f('0x1d')]||null:null,'attributes':_0x2142a0[_0x354f('0x1e')]?_0x2142a0[_0x354f('0x1e')][_0x354f('0x1f')]||null:null,'include':_0x2142a0[_0x354f('0x1e')]?_0x2142a0[_0x354f('0x1e')][_0x354f('0x22')]?_[_0x354f('0x23')](_0x2142a0[_0x354f('0x1e')][_0x354f('0x22')],function(_0x28dbe6){return{'model':db[_0x28dbe6['model']],'as':_0x28dbe6['as'],'attributes':_0x28dbe6[_0x354f('0x1f')],'include':_0x28dbe6['include']?_[_0x354f('0x23')](_0x28dbe6[_0x354f('0x22')],function(_0x22e437){return{'model':db[_0x22e437[_0x354f('0x21')]],'as':_0x22e437['as'],'attributes':_0x22e437[_0x354f('0x1f')],'include':_0x22e437[_0x354f('0x22')]?_['map'](_0x22e437[_0x354f('0x22')],function(_0x1f8644){return{'model':db[_0x1f8644['model']],'as':_0x1f8644['as'],'attributes':_0x1f8644[_0x354f('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x354f('0x24')](function(_0x327bc4){logger['info'](_0x354f('0x26'),_0x2142a0);logger[_0x354f('0x11')](_0x354f('0x26'),_0x2142a0,JSON[_0x354f('0x13')](_0x327bc4));_0x2ca0dd(_0x327bc4);})['catch'](function(_0x337184){logger['error'](_0x354f('0x26'),_0x337184[_0x354f('0x16')],_0x2142a0);_0x8ef91e(_0x3c425e[_0x354f('0x14')](0x1f4,_0x337184[_0x354f('0x16')]));});});};
\ No newline at end of file
+var _0x0b78=['stringify','error','code','message','result','catch','GetOpenchannelQueue','findAll','options','raw','attributes','limit','include','map','model','OpenchannelQueue','find','where','ShowOpenchannelQueue','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s'];(function(_0x669095,_0x2b58ce){var _0x58a9ae=function(_0x28a9fe){while(--_0x28a9fe){_0x669095['push'](_0x669095['shift']());}};_0x58a9ae(++_0x2b58ce);}(_0x0b78,0x1ad));var _0x80b7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0b78[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x80b7('0x0'));var util=require(_0x80b7('0x1'));var moment=require('moment');var BPromise=require(_0x80b7('0x2'));var rs=require(_0x80b7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x80b7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x80b7('0x5'))(_0x80b7('0x6'));var config=require(_0x80b7('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x80b7('0x8')]({'port':0x232a});config['redis']=_[_0x80b7('0x9')](config[_0x80b7('0xa')],{'host':_0x80b7('0xb'),'port':0x18eb});var socket=require(_0x80b7('0xc'))(new Redis(config['redis']));require(_0x80b7('0xd'))[_0x80b7('0xe')](socket);function respondWithRpcPromise(_0x374c52,_0x5176b2,_0x467f38){return new BPromise(function(_0x522a21,_0x2b1a00){return client[_0x80b7('0xf')](_0x374c52,_0x467f38)[_0x80b7('0x10')](function(_0x7b971b){logger[_0x80b7('0x11')](_0x80b7('0x12'),_0x5176b2,_0x80b7('0x13'));logger[_0x80b7('0x14')](_0x80b7('0x15'),_0x5176b2,_0x80b7('0x13'),JSON[_0x80b7('0x16')](_0x7b971b));if(_0x7b971b['error']){if(_0x7b971b[_0x80b7('0x17')][_0x80b7('0x18')]===0x1f4){logger['error'](_0x80b7('0x12'),_0x5176b2,_0x7b971b[_0x80b7('0x17')]['message']);return _0x2b1a00(_0x7b971b[_0x80b7('0x17')][_0x80b7('0x19')]);}logger[_0x80b7('0x17')](_0x80b7('0x12'),_0x5176b2,_0x7b971b[_0x80b7('0x17')][_0x80b7('0x19')]);return _0x522a21(_0x7b971b[_0x80b7('0x17')][_0x80b7('0x19')]);}else{logger[_0x80b7('0x11')](_0x80b7('0x12'),_0x5176b2,'request\x20sent');_0x522a21(_0x7b971b[_0x80b7('0x1a')][_0x80b7('0x19')]);}})[_0x80b7('0x1b')](function(_0x125c47){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x5176b2,_0x125c47);_0x2b1a00(_0x125c47);});});}exports[_0x80b7('0x1c')]=function(_0x1e27aa){var _0x1b584b=this;return new Promise(function(_0xd51ad9,_0x574e5c){return db['OpenchannelQueue'][_0x80b7('0x1d')]({'raw':_0x1e27aa[_0x80b7('0x1e')]?_0x1e27aa[_0x80b7('0x1e')][_0x80b7('0x1f')]===undefined?!![]:![]:!![],'where':_0x1e27aa['options']?_0x1e27aa[_0x80b7('0x1e')]['where']||null:null,'attributes':_0x1e27aa['options']?_0x1e27aa[_0x80b7('0x1e')][_0x80b7('0x20')]||null:null,'limit':_0x1e27aa[_0x80b7('0x1e')]?_0x1e27aa[_0x80b7('0x1e')][_0x80b7('0x21')]||null:null,'include':_0x1e27aa[_0x80b7('0x1e')]?_0x1e27aa[_0x80b7('0x1e')][_0x80b7('0x22')]?_[_0x80b7('0x23')](_0x1e27aa[_0x80b7('0x1e')][_0x80b7('0x22')],function(_0x311aa3){return{'model':db[_0x311aa3[_0x80b7('0x24')]],'as':_0x311aa3['as'],'attributes':_0x311aa3[_0x80b7('0x20')],'include':_0x311aa3[_0x80b7('0x22')]?_['map'](_0x311aa3[_0x80b7('0x22')],function(_0x1661be){return{'model':db[_0x1661be['model']],'as':_0x1661be['as'],'attributes':_0x1661be[_0x80b7('0x20')],'include':_0x1661be[_0x80b7('0x22')]?_[_0x80b7('0x23')](_0x1661be['include'],function(_0x1b7715){return{'model':db[_0x1b7715[_0x80b7('0x24')]],'as':_0x1b7715['as'],'attributes':_0x1b7715[_0x80b7('0x20')]};}):[]};}):[]};}):[]:[]})[_0x80b7('0x10')](function(_0x1c4607){logger[_0x80b7('0x11')](_0x80b7('0x1c'),_0x1e27aa);logger[_0x80b7('0x14')](_0x80b7('0x1c'),_0x1e27aa,JSON[_0x80b7('0x16')](_0x1c4607));_0xd51ad9(_0x1c4607);})[_0x80b7('0x1b')](function(_0x44c3ec){logger[_0x80b7('0x17')]('GetOpenchannelQueue',_0x44c3ec['message'],_0x1e27aa);_0x574e5c(_0x1b584b[_0x80b7('0x17')](0x1f4,_0x44c3ec[_0x80b7('0x19')]));});});};exports['ShowOpenchannelQueue']=function(_0x4e8557){var _0x106921=this;return new Promise(function(_0x1c95ea,_0x1cbe71){return db[_0x80b7('0x25')][_0x80b7('0x26')]({'raw':_0x4e8557[_0x80b7('0x1e')]?_0x4e8557['options'][_0x80b7('0x1f')]===undefined?!![]:![]:!![],'where':_0x4e8557[_0x80b7('0x1e')]?_0x4e8557[_0x80b7('0x1e')][_0x80b7('0x27')]||null:null,'attributes':_0x4e8557['options']?_0x4e8557[_0x80b7('0x1e')][_0x80b7('0x20')]||null:null,'include':_0x4e8557['options']?_0x4e8557[_0x80b7('0x1e')][_0x80b7('0x22')]?_[_0x80b7('0x23')](_0x4e8557[_0x80b7('0x1e')][_0x80b7('0x22')],function(_0xfbd58e){return{'model':db[_0xfbd58e[_0x80b7('0x24')]],'as':_0xfbd58e['as'],'attributes':_0xfbd58e[_0x80b7('0x20')],'include':_0xfbd58e['include']?_['map'](_0xfbd58e['include'],function(_0x34f479){return{'model':db[_0x34f479[_0x80b7('0x24')]],'as':_0x34f479['as'],'attributes':_0x34f479[_0x80b7('0x20')],'include':_0x34f479[_0x80b7('0x22')]?_[_0x80b7('0x23')](_0x34f479[_0x80b7('0x22')],function(_0x1c2341){return{'model':db[_0x1c2341[_0x80b7('0x24')]],'as':_0x1c2341['as'],'attributes':_0x1c2341['attributes']};}):[]};}):[]};}):[]:[]})[_0x80b7('0x10')](function(_0xb26b05){logger[_0x80b7('0x11')](_0x80b7('0x28'),_0x4e8557);logger[_0x80b7('0x14')](_0x80b7('0x28'),_0x4e8557,JSON['stringify'](_0xb26b05));_0x1c95ea(_0xb26b05);})[_0x80b7('0x1b')](function(_0x53f51c){logger[_0x80b7('0x17')](_0x80b7('0x28'),_0x53f51c['message'],_0x4e8557);_0x1cbe71(_0x106921['error'](0x1f4,_0x53f51c[_0x80b7('0x19')]));});});};
\ No newline at end of file
index a087225..3ab38f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','openchannelQueue:','./openchannelQueue.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(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'use strict';var OpenchannelQueueEvents=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(){OpenchannelQueueEvents[_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);OpenchannelQueueEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','openchannelQueue:','./openchannelQueue.events','save','remove','emit','removeListener'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'use strict';var OpenchannelQueueEvents=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(){OpenchannelQueueEvents[_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);OpenchannelQueueEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index 44fe277..556ef91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service'];(function(_0x3bacf8,_0x315aaa){var _0x53d999=function(_0xd57078){while(--_0xd57078){_0x3bacf8['push'](_0x3bacf8['shift']());}};_0x53d999(++_0x315aaa);}(_0xb10b,0x12a));var _0xbb10=function(_0xe33285,_0x7f474){_0xe33285=_0xe33285-0x0;var _0x31ca6b=_0xb10b[_0xe33285];return _0x31ca6b;};'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 auth=require(_0xbb10('0x4'));var interaction=require(_0xbb10('0x5'));var config=require(_0xbb10('0x6'));var controller=require(_0xbb10('0x7'));router[_0xbb10('0x8')]('/',auth[_0xbb10('0x9')](),controller['index']);router[_0xbb10('0x8')](_0xbb10('0xa'),auth['isAuthenticated'](),controller[_0xbb10('0xb')]);router[_0xbb10('0x8')](_0xbb10('0xc'),auth[_0xbb10('0x9')](),controller[_0xbb10('0xd')]);router[_0xbb10('0xe')]('/',auth[_0xbb10('0x9')](),controller[_0xbb10('0xf')]);router['put']('/:id',auth[_0xbb10('0x9')](),controller[_0xbb10('0x10')]);router[_0xbb10('0x11')]('/:id',auth[_0xbb10('0x9')](),controller['destroy']);module[_0xbb10('0x12')]=router;
\ No newline at end of file
+var _0xa9e0=['put','destroy','exports','multer','util','path','Router','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','/describe','/:id','post','create'];(function(_0x34f545,_0x2bd2ee){var _0x1ff6b8=function(_0x582e3b){while(--_0x582e3b){_0x34f545['push'](_0x34f545['shift']());}};_0x1ff6b8(++_0x2bd2ee);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var auth=require('../../components/auth/service');var interaction=require(_0x0a9e('0x4'));var config=require(_0x0a9e('0x5'));var controller=require(_0x0a9e('0x6'));router[_0x0a9e('0x7')]('/',auth[_0x0a9e('0x8')](),controller['index']);router[_0x0a9e('0x7')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller['describe']);router['get'](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xc')]);router[_0x0a9e('0xd')](_0x0a9e('0xa'),auth[_0x0a9e('0x8')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xe')]);module[_0x0a9e('0xf')]=router;
\ No newline at end of file
index 466dadb..1cd6fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb78=['moment','sequelize','STRING','DATE'];(function(_0x476247,_0x50165a){var _0x15e77f=function(_0x5455b5){while(--_0x5455b5){_0x476247['push'](_0x476247['shift']());}};_0x15e77f(++_0x50165a);}(_0xcb78,0x15c));var _0x8cb7=function(_0xeee502,_0x29024b){_0xeee502=_0xeee502-0x0;var _0x55617d=_0xcb78[_0xeee502];return _0x55617d;};'use strict';var moment=require(_0x8cb7('0x0'));var Sequelize=require(_0x8cb7('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x8cb7('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x8cb7('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x8cb7('0x3')]},'acceptAt':{'type':Sequelize[_0x8cb7('0x3')]},'exitAt':{'type':Sequelize[_0x8cb7('0x3')]},'reason':{'type':Sequelize[_0x8cb7('0x2')]}};
\ No newline at end of file
+var _0xea6a=['exports','STRING','DATE','moment','sequelize'];(function(_0x2a4bb1,_0x8d5834){var _0x5c71aa=function(_0x1977e){while(--_0x1977e){_0x2a4bb1['push'](_0x2a4bb1['shift']());}};_0x5c71aa(++_0x8d5834);}(_0xea6a,0x1b1));var _0xaea6=function(_0x57ab10,_0x5092a2){_0x57ab10=_0x57ab10-0x0;var _0x22bd72=_0xea6a[_0x57ab10];return _0x22bd72;};'use strict';var moment=require(_0xaea6('0x0'));var Sequelize=require(_0xaea6('0x1'));module[_0xaea6('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xaea6('0x3')]},'joinAt':{'type':Sequelize[_0xaea6('0x4')]},'leaveAt':{'type':Sequelize[_0xaea6('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xaea6('0x4')]},'reason':{'type':Sequelize[_0xaea6('0x3')]}};
\ No newline at end of file
index 4a99d25..bde4ad2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80de=['json','count','offset','set','Content-Range','reject','destroy','error','stack','name','index','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','pick','add','day','filter','merge','map','type','key','VIRTUAL','field','options','OpenchannelQueueReport','then','includeAll','findAll','catch','create','body','update','find','params','describe','html-pdf','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x80de,0xbf));var _0xe80d=function(_0x16acbe,_0x2492a1){_0x16acbe=_0x16acbe-0x0;var _0x501bc7=_0x80de[_0x16acbe];return _0x501bc7;};'use strict';var pdf=require(_0xe80d('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xe80d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe80d('0x2'));var rp=require(_0xe80d('0x3'));var moment=require('moment');var BPromise=require(_0xe80d('0x4'));var Mustache=require(_0xe80d('0x5'));var util=require(_0xe80d('0x6'));var path=require(_0xe80d('0x7'));var sox=require(_0xe80d('0x8'));var csv=require(_0xe80d('0x9'));var ejs=require(_0xe80d('0xa'));var fs=require('fs');var _=require(_0xe80d('0xb'));var squel=require(_0xe80d('0xc'));var crypto=require('crypto');var jsforce=require(_0xe80d('0xd'));var deskjs=require(_0xe80d('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe80d('0xf'));var Papa=require('papaparse');var Redis=require(_0xe80d('0x10'));var qs=require(_0xe80d('0x11'));var logger=require(_0xe80d('0x12'))('api');var utils=require(_0xe80d('0x13'));var config=require(_0xe80d('0x14'));var db=require(_0xe80d('0x15'))['db'];function respondWithStatusCode(_0x402548,_0x194473){_0x194473=_0x194473||0xcc;return function(_0x1e178d){if(_0x1e178d){return _0x402548[_0xe80d('0x16')](_0x194473);}return _0x402548[_0xe80d('0x17')](_0x194473)[_0xe80d('0x18')]();};}function respondWithResult(_0x581eb5,_0x3cb011){_0x3cb011=_0x3cb011||0xc8;return function(_0x4cd4c9){if(_0x4cd4c9){return _0x581eb5[_0xe80d('0x17')](_0x3cb011)[_0xe80d('0x19')](_0x4cd4c9);}};}function respondWithFilteredResult(_0x562c5b,_0x5ebf0a){return function(_0x533a9e){if(_0x533a9e){var _0x5f2871=_0x533a9e[_0xe80d('0x1a')],_0x5c28f3=_0x5ebf0a[_0xe80d('0x1b')],_0x30c25b=_0x5ebf0a[_0xe80d('0x1b')]+_0x5ebf0a['limit'],_0x16b81e;if(_0x30c25b>=_0x5f2871){_0x30c25b=_0x5f2871;_0x16b81e=0xc8;}else{_0x16b81e=0xce;}_0x562c5b[_0xe80d('0x17')](_0x16b81e);return _0x562c5b[_0xe80d('0x1c')](_0xe80d('0x1d'),_0x5c28f3+'-'+_0x30c25b+'/'+_0x5f2871)['json'](_0x533a9e);}return null;};}function patchUpdates(_0x5c8fe6){return function(_0x419394){try{jsonpatch['apply'](_0x419394,_0x5c8fe6,!![]);}catch(_0x1a504e){return BPromise[_0xe80d('0x1e')](_0x1a504e);}return _0x419394['save']();};}function saveUpdates(_0x39ce05,_0x558051){return function(_0x13a244){if(_0x13a244){return _0x13a244['update'](_0x39ce05)['then'](function(_0x50fcd9){return _0x50fcd9;});}return null;};}function removeEntity(_0x950d1,_0x43313a){return function(_0x24be7a){if(_0x24be7a){return _0x24be7a[_0xe80d('0x1f')]()['then'](function(){_0x950d1[_0xe80d('0x17')](0xcc)[_0xe80d('0x18')]();});}};}function handleEntityNotFound(_0x3c5e82,_0x578333){return function(_0x395920){if(!_0x395920){_0x3c5e82['sendStatus'](0x194);}return _0x395920;};}function handleError(_0x35d1d9,_0x5e36aa){_0x5e36aa=_0x5e36aa||0x1f4;return function(_0x48d8f1){logger[_0xe80d('0x20')](_0x48d8f1[_0xe80d('0x21')]);if(_0x48d8f1[_0xe80d('0x22')]){delete _0x48d8f1['name'];}_0x35d1d9['status'](_0x5e36aa)['send'](_0x48d8f1);};}exports[_0xe80d('0x23')]=function(_0x3df298,_0x2cab03){var _0x1b8aa5={},_0x1bf8c8={},_0x5b4bab={'count':0x0,'rows':[]};var _0x391b85=db['OpenchannelQueueReport']['rawAttributes'];_0x1bf8c8[_0xe80d('0x24')]=_[_0xe80d('0x25')](_0x391b85);var _0x1b5063={'dateStart':_0x3df298[_0xe80d('0x26')][_0xe80d('0x27')],'dateEnd':_0x3df298[_0xe80d('0x26')][_0xe80d('0x28')]};delete _0x3df298[_0xe80d('0x26')][_0xe80d('0x27')];delete _0x3df298[_0xe80d('0x26')][_0xe80d('0x28')];_0x1bf8c8[_0xe80d('0x26')]=_[_0xe80d('0x25')](_0x3df298['query']);_0x1bf8c8[_0xe80d('0x29')]=_[_0xe80d('0x2a')](_0x1bf8c8['model'],_0x1bf8c8[_0xe80d('0x26')]);_0x1b8aa5[_0xe80d('0x2b')]=_[_0xe80d('0x2a')](_0x1bf8c8[_0xe80d('0x24')],qs[_0xe80d('0x2c')](_0x3df298[_0xe80d('0x26')][_0xe80d('0x2c')]));_0x1b8aa5[_0xe80d('0x2b')]=_0x1b8aa5['attributes'][_0xe80d('0x2d')]?_0x1b8aa5['attributes']:_0x1bf8c8[_0xe80d('0x24')];if(!_0x3df298['query'][_0xe80d('0x2e')]('nolimit')){_0x1b8aa5[_0xe80d('0x2f')]=qs[_0xe80d('0x2f')](_0x3df298[_0xe80d('0x26')][_0xe80d('0x2f')]);_0x1b8aa5[_0xe80d('0x1b')]=qs[_0xe80d('0x1b')](_0x3df298[_0xe80d('0x26')]['offset']);}_0x1b8aa5['order']=qs[_0xe80d('0x30')](_0x3df298[_0xe80d('0x26')][_0xe80d('0x30')]);_0x1b8aa5[_0xe80d('0x31')]=qs['filters'](_[_0xe80d('0x32')](_0x3df298[_0xe80d('0x26')],_0x1bf8c8[_0xe80d('0x29')]));if(_0x1b5063[_0xe80d('0x27')]){if(_0x1b5063[_0xe80d('0x28')]){_0x1b5063[_0xe80d('0x28')]=moment(_0x1b5063[_0xe80d('0x28')])[_0xe80d('0x33')](0x1,_0xe80d('0x34'));}else{_0x1b5063[_0xe80d('0x28')]=moment(_0x1b5063['dateStart'])[_0xe80d('0x33')](0x1,_0xe80d('0x34'));}_['merge'](_0x1b8aa5[_0xe80d('0x31')],{'createdAt':{'$gte':_0x1b5063[_0xe80d('0x27')],'$lte':_0x1b5063[_0xe80d('0x28')]}});}if(_0x3df298['query'][_0xe80d('0x35')]){_0x1b8aa5[_0xe80d('0x31')]=_[_0xe80d('0x36')](_0x1b8aa5[_0xe80d('0x31')],{'$or':_[_0xe80d('0x37')](_0x391b85,function(_0x28b6d7){if(_0x28b6d7[_0xe80d('0x38')][_0xe80d('0x39')]!==_0xe80d('0x3a')){var _0x4df44d={};_0x4df44d[_0x28b6d7[_0xe80d('0x3b')]]={'$like':'%'+_0x3df298[_0xe80d('0x26')][_0xe80d('0x35')]+'%'};return _0x4df44d;}})});}_0x1b8aa5=_[_0xe80d('0x36')]({},_0x1b8aa5,_0x3df298[_0xe80d('0x3c')]);var _0x2e7fe0={'where':_0x1b8aa5['where']};return db[_0xe80d('0x3d')][_0xe80d('0x1a')](_0x2e7fe0)[_0xe80d('0x3e')](function(_0x582c0f){_0x5b4bab['count']=_0x582c0f;if(_0x3df298[_0xe80d('0x26')][_0xe80d('0x3f')]){_0x1b8aa5['include']=[{'all':!![]}];}return db[_0xe80d('0x3d')][_0xe80d('0x40')](_0x1b8aa5);})['then'](function(_0x5be69b){_0x5b4bab['rows']=_0x5be69b;return _0x5b4bab;})[_0xe80d('0x3e')](respondWithFilteredResult(_0x2cab03,_0x1b8aa5))[_0xe80d('0x41')](handleError(_0x2cab03,null));};exports['show']=function(_0x1421f9,_0xa27e2f){var _0x515ef0={'raw':!![],'where':{'id':_0x1421f9['params']['id']}},_0x873667={};_0x873667[_0xe80d('0x24')]=_[_0xe80d('0x25')](db[_0xe80d('0x3d')]['rawAttributes']);_0x873667['query']=_[_0xe80d('0x25')](_0x1421f9[_0xe80d('0x26')]);_0x873667[_0xe80d('0x29')]=_[_0xe80d('0x2a')](_0x873667[_0xe80d('0x24')],_0x873667[_0xe80d('0x26')]);_0x515ef0[_0xe80d('0x2b')]=_[_0xe80d('0x2a')](_0x873667[_0xe80d('0x24')],qs[_0xe80d('0x2c')](_0x1421f9[_0xe80d('0x26')][_0xe80d('0x2c')]));_0x515ef0[_0xe80d('0x2b')]=_0x515ef0[_0xe80d('0x2b')][_0xe80d('0x2d')]?_0x515ef0['attributes']:_0x873667[_0xe80d('0x24')];if(_0x1421f9['query'][_0xe80d('0x3f')]){_0x515ef0['include']=[{'all':!![]}];}_0x515ef0=_[_0xe80d('0x36')]({},_0x515ef0,_0x1421f9[_0xe80d('0x3c')]);return db[_0xe80d('0x3d')]['find'](_0x515ef0)[_0xe80d('0x3e')](handleEntityNotFound(_0xa27e2f,null))[_0xe80d('0x3e')](respondWithResult(_0xa27e2f,null))[_0xe80d('0x41')](handleError(_0xa27e2f,null));};exports[_0xe80d('0x42')]=function(_0x246b5c,_0x88dbb7){return db['OpenchannelQueueReport'][_0xe80d('0x42')](_0x246b5c[_0xe80d('0x43')],{})[_0xe80d('0x3e')](respondWithResult(_0x88dbb7,0xc9))[_0xe80d('0x41')](handleError(_0x88dbb7,null));};exports[_0xe80d('0x44')]=function(_0x27cf10,_0x44cf55){if(_0x27cf10[_0xe80d('0x43')]['id']){delete _0x27cf10[_0xe80d('0x43')]['id'];}return db[_0xe80d('0x3d')][_0xe80d('0x45')]({'where':{'id':_0x27cf10[_0xe80d('0x46')]['id']}})['then'](handleEntityNotFound(_0x44cf55,null))[_0xe80d('0x3e')](saveUpdates(_0x27cf10['body'],null))[_0xe80d('0x3e')](respondWithResult(_0x44cf55,null))[_0xe80d('0x41')](handleError(_0x44cf55,null));};exports[_0xe80d('0x1f')]=function(_0x36e11f,_0xb2bff4){return db[_0xe80d('0x3d')][_0xe80d('0x45')]({'where':{'id':_0x36e11f[_0xe80d('0x46')]['id']}})[_0xe80d('0x3e')](handleEntityNotFound(_0xb2bff4,null))[_0xe80d('0x3e')](removeEntity(_0xb2bff4,null))[_0xe80d('0x41')](handleError(_0xb2bff4,null));};exports[_0xe80d('0x47')]=function(_0x3b73bb,_0x2f9a7b){return db[_0xe80d('0x3d')][_0xe80d('0x47')]()['then'](respondWithResult(_0x2f9a7b,null))['catch'](handleError(_0x2f9a7b,null));};
\ No newline at end of file
+var _0x0762=['end','stack','name','send','index','OpenchannelQueueReport','rawAttributes','model','query','dateStart','dateEnd','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','add','day','merge','map','type','field','includeAll','include','rows','catch','show','params','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','set','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x326d35,_0x4f65b3){var _0xd3f8f3=function(_0x1fbbaf){while(--_0x1fbbaf){_0x326d35['push'](_0x326d35['shift']());}};_0xd3f8f3(++_0x4f65b3);}(_0x0762,0x1e5));var _0x2076=function(_0x517f0f,_0x5a95b7){_0x517f0f=_0x517f0f-0x0;var _0x226e4e=_0x0762[_0x517f0f];return _0x226e4e;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x2076('0x0'));var rimraf=require(_0x2076('0x1'));var zipdir=require(_0x2076('0x2'));var jsonpatch=require(_0x2076('0x3'));var rp=require('request-promise');var moment=require(_0x2076('0x4'));var BPromise=require(_0x2076('0x5'));var Mustache=require('mustache');var util=require(_0x2076('0x6'));var path=require(_0x2076('0x7'));var sox=require(_0x2076('0x8'));var csv=require(_0x2076('0x9'));var ejs=require(_0x2076('0xa'));var fs=require('fs');var _=require(_0x2076('0xb'));var squel=require('squel');var crypto=require(_0x2076('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2076('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2076('0xe'));var Papa=require(_0x2076('0xf'));var Redis=require(_0x2076('0x10'));var qs=require('../../components/parsers/qs');var logger=require(_0x2076('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x2076('0x12'));var db=require(_0x2076('0x13'))['db'];function respondWithStatusCode(_0x2ab449,_0x470193){_0x470193=_0x470193||0xcc;return function(_0x15cd2a){if(_0x15cd2a){return _0x2ab449[_0x2076('0x14')](_0x470193);}return _0x2ab449[_0x2076('0x15')](_0x470193)['end']();};}function respondWithResult(_0x45c841,_0x7d5b14){_0x7d5b14=_0x7d5b14||0xc8;return function(_0x5e9b8e){if(_0x5e9b8e){return _0x45c841[_0x2076('0x15')](_0x7d5b14)[_0x2076('0x16')](_0x5e9b8e);}};}function respondWithFilteredResult(_0x4b2118,_0x45496e){return function(_0x1a1d8b){if(_0x1a1d8b){var _0x72e403=_0x1a1d8b[_0x2076('0x17')],_0x4cdb29=_0x45496e[_0x2076('0x18')],_0x553d3a=_0x45496e[_0x2076('0x18')]+_0x45496e['limit'],_0x1880e8;if(_0x553d3a>=_0x72e403){_0x553d3a=_0x72e403;_0x1880e8=0xc8;}else{_0x1880e8=0xce;}_0x4b2118[_0x2076('0x15')](_0x1880e8);return _0x4b2118[_0x2076('0x19')](_0x2076('0x1a'),_0x4cdb29+'-'+_0x553d3a+'/'+_0x72e403)['json'](_0x1a1d8b);}return null;};}function patchUpdates(_0x32a680){return function(_0x803556){try{jsonpatch[_0x2076('0x1b')](_0x803556,_0x32a680,!![]);}catch(_0xc53cf3){return BPromise[_0x2076('0x1c')](_0xc53cf3);}return _0x803556[_0x2076('0x1d')]();};}function saveUpdates(_0xe9652f,_0x44dc58){return function(_0x3dc183){if(_0x3dc183){return _0x3dc183[_0x2076('0x1e')](_0xe9652f)[_0x2076('0x1f')](function(_0x14c423){return _0x14c423;});}return null;};}function removeEntity(_0x3c7cc1,_0x3bf492){return function(_0x1e515d){if(_0x1e515d){return _0x1e515d[_0x2076('0x20')]()['then'](function(){_0x3c7cc1[_0x2076('0x15')](0xcc)[_0x2076('0x21')]();});}};}function handleEntityNotFound(_0x3b890c,_0xd385e9){return function(_0xf81405){if(!_0xf81405){_0x3b890c[_0x2076('0x14')](0x194);}return _0xf81405;};}function handleError(_0x4999e5,_0x5a7fde){_0x5a7fde=_0x5a7fde||0x1f4;return function(_0x10ab4b){logger['error'](_0x10ab4b[_0x2076('0x22')]);if(_0x10ab4b[_0x2076('0x23')]){delete _0x10ab4b[_0x2076('0x23')];}_0x4999e5[_0x2076('0x15')](_0x5a7fde)[_0x2076('0x24')](_0x10ab4b);};}exports[_0x2076('0x25')]=function(_0x3a4dcf,_0x757afe){var _0x4dd0d2={},_0x545bcb={},_0x1f369c={'count':0x0,'rows':[]};var _0x117962=db[_0x2076('0x26')][_0x2076('0x27')];_0x545bcb[_0x2076('0x28')]=_['keys'](_0x117962);var _0x37e2d6={'dateStart':_0x3a4dcf[_0x2076('0x29')][_0x2076('0x2a')],'dateEnd':_0x3a4dcf['query']['dateEnd']};delete _0x3a4dcf[_0x2076('0x29')][_0x2076('0x2a')];delete _0x3a4dcf['query'][_0x2076('0x2b')];_0x545bcb[_0x2076('0x29')]=_[_0x2076('0x2c')](_0x3a4dcf[_0x2076('0x29')]);_0x545bcb[_0x2076('0x2d')]=_[_0x2076('0x2e')](_0x545bcb[_0x2076('0x28')],_0x545bcb[_0x2076('0x29')]);_0x4dd0d2[_0x2076('0x2f')]=_[_0x2076('0x2e')](_0x545bcb[_0x2076('0x28')],qs[_0x2076('0x30')](_0x3a4dcf[_0x2076('0x29')]['fields']));_0x4dd0d2['attributes']=_0x4dd0d2[_0x2076('0x2f')][_0x2076('0x31')]?_0x4dd0d2[_0x2076('0x2f')]:_0x545bcb[_0x2076('0x28')];if(!_0x3a4dcf[_0x2076('0x29')][_0x2076('0x32')](_0x2076('0x33'))){_0x4dd0d2[_0x2076('0x34')]=qs[_0x2076('0x34')](_0x3a4dcf[_0x2076('0x29')][_0x2076('0x34')]);_0x4dd0d2[_0x2076('0x18')]=qs[_0x2076('0x18')](_0x3a4dcf[_0x2076('0x29')][_0x2076('0x18')]);}_0x4dd0d2[_0x2076('0x35')]=qs[_0x2076('0x36')](_0x3a4dcf[_0x2076('0x29')]['sort']);_0x4dd0d2[_0x2076('0x37')]=qs[_0x2076('0x2d')](_[_0x2076('0x38')](_0x3a4dcf[_0x2076('0x29')],_0x545bcb[_0x2076('0x2d')]));if(_0x37e2d6['dateStart']){if(_0x37e2d6[_0x2076('0x2b')]){_0x37e2d6[_0x2076('0x2b')]=moment(_0x37e2d6[_0x2076('0x2b')])[_0x2076('0x39')](0x1,_0x2076('0x3a'));}else{_0x37e2d6[_0x2076('0x2b')]=moment(_0x37e2d6['dateStart'])[_0x2076('0x39')](0x1,_0x2076('0x3a'));}_[_0x2076('0x3b')](_0x4dd0d2[_0x2076('0x37')],{'createdAt':{'$gte':_0x37e2d6[_0x2076('0x2a')],'$lte':_0x37e2d6[_0x2076('0x2b')]}});}if(_0x3a4dcf[_0x2076('0x29')]['filter']){_0x4dd0d2['where']=_[_0x2076('0x3b')](_0x4dd0d2['where'],{'$or':_[_0x2076('0x3c')](_0x117962,function(_0x1c19e7){if(_0x1c19e7[_0x2076('0x3d')]['key']!=='VIRTUAL'){var _0x4b4128={};_0x4b4128[_0x1c19e7[_0x2076('0x3e')]]={'$like':'%'+_0x3a4dcf[_0x2076('0x29')]['filter']+'%'};return _0x4b4128;}})});}_0x4dd0d2=_[_0x2076('0x3b')]({},_0x4dd0d2,_0x3a4dcf['options']);var _0x4b3d12={'where':_0x4dd0d2[_0x2076('0x37')]};return db[_0x2076('0x26')][_0x2076('0x17')](_0x4b3d12)[_0x2076('0x1f')](function(_0x2745c6){_0x1f369c['count']=_0x2745c6;if(_0x3a4dcf[_0x2076('0x29')][_0x2076('0x3f')]){_0x4dd0d2[_0x2076('0x40')]=[{'all':!![]}];}return db[_0x2076('0x26')]['findAll'](_0x4dd0d2);})[_0x2076('0x1f')](function(_0x5e778c){_0x1f369c[_0x2076('0x41')]=_0x5e778c;return _0x1f369c;})['then'](respondWithFilteredResult(_0x757afe,_0x4dd0d2))[_0x2076('0x42')](handleError(_0x757afe,null));};exports[_0x2076('0x43')]=function(_0x2d6562,_0x2a60b1){var _0x409f0b={'raw':!![],'where':{'id':_0x2d6562[_0x2076('0x44')]['id']}},_0x17aa36={};_0x17aa36[_0x2076('0x28')]=_[_0x2076('0x2c')](db[_0x2076('0x26')][_0x2076('0x27')]);_0x17aa36[_0x2076('0x29')]=_[_0x2076('0x2c')](_0x2d6562['query']);_0x17aa36[_0x2076('0x2d')]=_[_0x2076('0x2e')](_0x17aa36[_0x2076('0x28')],_0x17aa36[_0x2076('0x29')]);_0x409f0b[_0x2076('0x2f')]=_[_0x2076('0x2e')](_0x17aa36[_0x2076('0x28')],qs[_0x2076('0x30')](_0x2d6562['query'][_0x2076('0x30')]));_0x409f0b[_0x2076('0x2f')]=_0x409f0b['attributes']['length']?_0x409f0b[_0x2076('0x2f')]:_0x17aa36[_0x2076('0x28')];if(_0x2d6562[_0x2076('0x29')][_0x2076('0x3f')]){_0x409f0b['include']=[{'all':!![]}];}_0x409f0b=_['merge']({},_0x409f0b,_0x2d6562[_0x2076('0x45')]);return db[_0x2076('0x26')][_0x2076('0x46')](_0x409f0b)[_0x2076('0x1f')](handleEntityNotFound(_0x2a60b1,null))['then'](respondWithResult(_0x2a60b1,null))[_0x2076('0x42')](handleError(_0x2a60b1,null));};exports[_0x2076('0x47')]=function(_0x4e6169,_0x349f28){return db[_0x2076('0x26')][_0x2076('0x47')](_0x4e6169[_0x2076('0x48')],{})[_0x2076('0x1f')](respondWithResult(_0x349f28,0xc9))['catch'](handleError(_0x349f28,null));};exports[_0x2076('0x1e')]=function(_0x3ed8d5,_0x5656d5){if(_0x3ed8d5[_0x2076('0x48')]['id']){delete _0x3ed8d5[_0x2076('0x48')]['id'];}return db[_0x2076('0x26')][_0x2076('0x46')]({'where':{'id':_0x3ed8d5[_0x2076('0x44')]['id']}})[_0x2076('0x1f')](handleEntityNotFound(_0x5656d5,null))[_0x2076('0x1f')](saveUpdates(_0x3ed8d5[_0x2076('0x48')],null))[_0x2076('0x1f')](respondWithResult(_0x5656d5,null))[_0x2076('0x42')](handleError(_0x5656d5,null));};exports[_0x2076('0x20')]=function(_0x2cf009,_0x5a0498){return db[_0x2076('0x26')]['find']({'where':{'id':_0x2cf009[_0x2076('0x44')]['id']}})[_0x2076('0x1f')](handleEntityNotFound(_0x5a0498,null))[_0x2076('0x1f')](removeEntity(_0x5a0498,null))[_0x2076('0x42')](handleError(_0x5a0498,null));};exports[_0x2076('0x49')]=function(_0x4c9139,_0x4ddf89){return db[_0x2076('0x26')][_0x2076('0x49')]()[_0x2076('0x1f')](respondWithResult(_0x4ddf89,null))['catch'](handleError(_0x4ddf89,null));};
\ No newline at end of file
index 1664344..7da05d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6d1=['api','moment','bluebird','request-promise','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger'];(function(_0x1e93c2,_0x5c3688){var _0x479a02=function(_0x3712d8){while(--_0x3712d8){_0x1e93c2['push'](_0x1e93c2['shift']());}};_0x479a02(++_0x5c3688);}(_0xf6d1,0x99));var _0x1f6d=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xf6d1[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x1f6d('0x0'));var util=require(_0x1f6d('0x1'));var logger=require(_0x1f6d('0x2'))(_0x1f6d('0x3'));var moment=require(_0x1f6d('0x4'));var BPromise=require(_0x1f6d('0x5'));var rp=require(_0x1f6d('0x6'));var attributes=require('./openchannelQueueReport.attributes');module[_0x1f6d('0x7')]=function(_0x59e1ab,_0x1532aa){return _0x59e1ab[_0x1f6d('0x8')](_0x1f6d('0x9'),attributes,{'tableName':_0x1f6d('0xa'),'paranoid':![],'indexes':[{'name':_0x1f6d('0xb'),'fields':[_0x1f6d('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x67d1=['OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','./openchannelQueueReport.attributes','define'];(function(_0x5f0e2a,_0x4e56f7){var _0x25470e=function(_0x158cbe){while(--_0x158cbe){_0x5f0e2a['push'](_0x5f0e2a['shift']());}};_0x25470e(++_0x4e56f7);}(_0x67d1,0xdf));var _0x167d=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0x67d1[_0x1da527];return _0x40fc7c;};'use strict';var _=require(_0x167d('0x0'));var util=require(_0x167d('0x1'));var logger=require(_0x167d('0x2'))(_0x167d('0x3'));var moment=require('moment');var BPromise=require(_0x167d('0x4'));var rp=require(_0x167d('0x5'));var attributes=require(_0x167d('0x6'));module['exports']=function(_0x59228a,_0x557a8c){return _0x59228a[_0x167d('0x7')](_0x167d('0x8'),attributes,{'tableName':_0x167d('0x9'),'paranoid':![],'indexes':[{'name':_0x167d('0xa'),'fields':[_0x167d('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index e194059..72946e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7993=['http','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','create','options','raw','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','OpenchannelQueueReport','body','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x195686,_0xd329df){var _0xaf27a1=function(_0x5a3ba8){while(--_0x5a3ba8){_0x195686['push'](_0x195686['shift']());}};_0xaf27a1(++_0xd329df);}(_0x7993,0x189));var _0x3799=function(_0x4242bb,_0x5ca96c){_0x4242bb=_0x4242bb-0x0;var _0x4378dc=_0x7993[_0x4242bb];return _0x4378dc;};'use strict';var _=require(_0x3799('0x0'));var util=require(_0x3799('0x1'));var moment=require(_0x3799('0x2'));var BPromise=require(_0x3799('0x3'));var rs=require(_0x3799('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3799('0x5'));var logger=require(_0x3799('0x6'))(_0x3799('0x7'));var config=require(_0x3799('0x8'));var jayson=require(_0x3799('0x9'));var client=jayson['client'][_0x3799('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3784a8,_0x8fe8f1,_0x3e7d9a){return new BPromise(function(_0x3f5919,_0x54f78a){return client['request'](_0x3784a8,_0x3e7d9a)[_0x3799('0xb')](function(_0x39cdc7){logger[_0x3799('0xc')](_0x3799('0xd'),_0x8fe8f1,_0x3799('0xe'));logger[_0x3799('0xf')](_0x3799('0x10'),_0x8fe8f1,_0x3799('0xe'),JSON['stringify'](_0x39cdc7));if(_0x39cdc7[_0x3799('0x11')]){if(_0x39cdc7['error'][_0x3799('0x12')]===0x1f4){logger[_0x3799('0x11')](_0x3799('0xd'),_0x8fe8f1,_0x39cdc7[_0x3799('0x11')]['message']);return _0x54f78a(_0x39cdc7[_0x3799('0x11')][_0x3799('0x13')]);}logger[_0x3799('0x11')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x8fe8f1,_0x39cdc7['error']['message']);return _0x3f5919(_0x39cdc7[_0x3799('0x11')][_0x3799('0x13')]);}else{logger[_0x3799('0xc')](_0x3799('0xd'),_0x8fe8f1,_0x3799('0xe'));_0x3f5919(_0x39cdc7['result'][_0x3799('0x13')]);}})[_0x3799('0x14')](function(_0x4142c8){logger['error'](_0x3799('0xd'),_0x8fe8f1,_0x4142c8);_0x54f78a(_0x4142c8);});});}exports['CreateOpenchannelQueueReport']=function(_0x1c9a1c){var _0x4068c3=this;return new Promise(function(_0x29be02,_0x5d867f){return db['OpenchannelQueueReport'][_0x3799('0x15')](_0x1c9a1c['body'],{'raw':_0x1c9a1c[_0x3799('0x16')]?_0x1c9a1c[_0x3799('0x16')][_0x3799('0x17')]===undefined?!![]:![]:!![]})[_0x3799('0xb')](function(_0x390eb2){logger[_0x3799('0xc')]('CreateOpenchannelQueueReport',_0x1c9a1c);logger['debug'](_0x3799('0x18'),_0x1c9a1c,JSON['stringify'](_0x390eb2));_0x29be02(_0x390eb2);})[_0x3799('0x14')](function(_0x3f4a54){logger[_0x3799('0x11')](_0x3799('0x18'),_0x3f4a54['message'],_0x1c9a1c);_0x5d867f(_0x4068c3['error'](0x1f4,_0x3f4a54[_0x3799('0x13')]));});});};exports[_0x3799('0x19')]=function(_0x5a01be){var _0x414840=this;return new Promise(function(_0x36fa25,_0x230f45){return db[_0x3799('0x1a')]['update'](_0x5a01be[_0x3799('0x1b')],{'raw':_0x5a01be['options']?_0x5a01be[_0x3799('0x16')][_0x3799('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a01be[_0x3799('0x16')]?_0x5a01be['options'][_0x3799('0x1c')]||null:null,'attributes':_0x5a01be['options']?_0x5a01be[_0x3799('0x16')][_0x3799('0x1d')]||null:null,'limit':_0x5a01be['options']?_0x5a01be['options'][_0x3799('0x1e')]||null:null})[_0x3799('0xb')](function(_0x57007c){logger[_0x3799('0xc')]('UpdateOpenchannelQueueReport',_0x5a01be);logger[_0x3799('0xf')](_0x3799('0x19'),_0x5a01be,JSON['stringify'](_0x57007c));_0x36fa25(_0x57007c);})[_0x3799('0x14')](function(_0x2706d3){logger['error'](_0x3799('0x19'),_0x2706d3[_0x3799('0x13')],_0x5a01be);_0x230f45(_0x414840['error'](0x1f4,_0x2706d3[_0x3799('0x13')]));});});};
\ No newline at end of file
+var _0xcc49=['UpdateOpenchannelQueueReport','update','attributes','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','debug','request\x20sent','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','raw'];(function(_0x49fc85,_0x247421){var _0x2a6a65=function(_0x4a5816){while(--_0x4a5816){_0x49fc85['push'](_0x49fc85['shift']());}};_0x2a6a65(++_0x247421);}(_0xcc49,0x18b));var _0x9cc4=function(_0x4dc392,_0x255362){_0x4dc392=_0x4dc392-0x0;var _0x4e45ad=_0xcc49[_0x4dc392];return _0x4e45ad;};'use strict';var _=require(_0x9cc4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9cc4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9cc4('0x2'));var db=require(_0x9cc4('0x3'))['db'];var utils=require(_0x9cc4('0x4'));var logger=require(_0x9cc4('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9cc4('0x6'));var client=jayson['client'][_0x9cc4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x34e8b2,_0x3bc2d5,_0x1dc388){return new BPromise(function(_0x1e0c6e,_0x29b59a){return client[_0x9cc4('0x8')](_0x34e8b2,_0x1dc388)[_0x9cc4('0x9')](function(_0x378c41){logger[_0x9cc4('0xa')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3bc2d5,'request\x20sent');logger[_0x9cc4('0xb')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x3bc2d5,_0x9cc4('0xc'),JSON[_0x9cc4('0xd')](_0x378c41));if(_0x378c41[_0x9cc4('0xe')]){if(_0x378c41[_0x9cc4('0xe')][_0x9cc4('0xf')]===0x1f4){logger[_0x9cc4('0xe')](_0x9cc4('0x10'),_0x3bc2d5,_0x378c41[_0x9cc4('0xe')][_0x9cc4('0x11')]);return _0x29b59a(_0x378c41['error'][_0x9cc4('0x11')]);}logger['error'](_0x9cc4('0x10'),_0x3bc2d5,_0x378c41[_0x9cc4('0xe')][_0x9cc4('0x11')]);return _0x1e0c6e(_0x378c41[_0x9cc4('0xe')][_0x9cc4('0x11')]);}else{logger[_0x9cc4('0xa')](_0x9cc4('0x10'),_0x3bc2d5,_0x9cc4('0xc'));_0x1e0c6e(_0x378c41[_0x9cc4('0x12')][_0x9cc4('0x11')]);}})[_0x9cc4('0x13')](function(_0x1e67b5){logger[_0x9cc4('0xe')](_0x9cc4('0x10'),_0x3bc2d5,_0x1e67b5);_0x29b59a(_0x1e67b5);});});}exports[_0x9cc4('0x14')]=function(_0x276ae6){var _0x125bcd=this;return new Promise(function(_0x3eb660,_0x51b3cb){return db[_0x9cc4('0x15')]['create'](_0x276ae6[_0x9cc4('0x16')],{'raw':_0x276ae6['options']?_0x276ae6[_0x9cc4('0x17')][_0x9cc4('0x18')]===undefined?!![]:![]:!![]})[_0x9cc4('0x9')](function(_0x34d4ba){logger[_0x9cc4('0xa')](_0x9cc4('0x14'),_0x276ae6);logger[_0x9cc4('0xb')]('CreateOpenchannelQueueReport',_0x276ae6,JSON['stringify'](_0x34d4ba));_0x3eb660(_0x34d4ba);})[_0x9cc4('0x13')](function(_0x1f7129){logger[_0x9cc4('0xe')]('CreateOpenchannelQueueReport',_0x1f7129[_0x9cc4('0x11')],_0x276ae6);_0x51b3cb(_0x125bcd[_0x9cc4('0xe')](0x1f4,_0x1f7129[_0x9cc4('0x11')]));});});};exports[_0x9cc4('0x19')]=function(_0x500f09){var _0x298ee5=this;return new Promise(function(_0x4707d2,_0x5ce71d){return db[_0x9cc4('0x15')][_0x9cc4('0x1a')](_0x500f09[_0x9cc4('0x16')],{'raw':_0x500f09[_0x9cc4('0x17')]?_0x500f09[_0x9cc4('0x17')][_0x9cc4('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x500f09[_0x9cc4('0x17')]?_0x500f09[_0x9cc4('0x17')]['where']||null:null,'attributes':_0x500f09[_0x9cc4('0x17')]?_0x500f09[_0x9cc4('0x17')][_0x9cc4('0x1b')]||null:null,'limit':_0x500f09[_0x9cc4('0x17')]?_0x500f09['options']['limit']||null:null})[_0x9cc4('0x9')](function(_0x57aca4){logger[_0x9cc4('0xa')]('UpdateOpenchannelQueueReport',_0x500f09);logger['debug'](_0x9cc4('0x19'),_0x500f09,JSON['stringify'](_0x57aca4));_0x4707d2(_0x57aca4);})[_0x9cc4('0x13')](function(_0x404d3e){logger[_0x9cc4('0xe')](_0x9cc4('0x19'),_0x404d3e[_0x9cc4('0x11')],_0x500f09);_0x5ce71d(_0x298ee5[_0x9cc4('0xe')](0x1f4,_0x404d3e[_0x9cc4('0x11')]));});});};
\ No newline at end of file
index 95ddf26..1d0996c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d9e=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','describe','/:id','show','post','create','update','delete','destroy','exports','multer','util','path'];(function(_0x225a65,_0x106e43){var _0x240f37=function(_0x22fc6d){while(--_0x22fc6d){_0x225a65['push'](_0x225a65['shift']());}};_0x240f37(++_0x106e43);}(_0x0d9e,0xc5));var _0xe0d9=function(_0x558ce7,_0x2e48b2){_0x558ce7=_0x558ce7-0x0;var _0x49c6f1=_0x0d9e[_0x558ce7];return _0x49c6f1;};'use strict';var multer=require(_0xe0d9('0x0'));var util=require(_0xe0d9('0x1'));var path=require(_0xe0d9('0x2'));var timeout=require(_0xe0d9('0x3'));var express=require(_0xe0d9('0x4'));var router=express[_0xe0d9('0x5')]();var auth=require('../../components/auth/service');var interaction=require(_0xe0d9('0x6'));var config=require(_0xe0d9('0x7'));var controller=require(_0xe0d9('0x8'));router[_0xe0d9('0x9')]('/',auth[_0xe0d9('0xa')](),controller['index']);router[_0xe0d9('0x9')]('/describe',auth[_0xe0d9('0xa')](),controller[_0xe0d9('0xb')]);router['get'](_0xe0d9('0xc'),auth[_0xe0d9('0xa')](),controller[_0xe0d9('0xd')]);router[_0xe0d9('0xe')]('/',auth[_0xe0d9('0xa')](),controller[_0xe0d9('0xf')]);router['put'](_0xe0d9('0xc'),auth[_0xe0d9('0xa')](),controller[_0xe0d9('0x10')]);router[_0xe0d9('0x11')]('/:id',auth[_0xe0d9('0xa')](),controller[_0xe0d9('0x12')]);module[_0xe0d9('0x13')]=router;
\ No newline at end of file
+var _0x1437=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','index','/describe','isAuthenticated','/:id','post','delete','destroy','exports','multer','path','express'];(function(_0x3e11c7,_0x25db06){var _0x376e8e=function(_0x223182){while(--_0x223182){_0x3e11c7['push'](_0x3e11c7['shift']());}};_0x376e8e(++_0x25db06);}(_0x1437,0xfc));var _0x7143=function(_0x160fe1,_0x113d9c){_0x160fe1=_0x160fe1-0x0;var _0x414c83=_0x1437[_0x160fe1];return _0x414c83;};'use strict';var multer=require(_0x7143('0x0'));var util=require('util');var path=require(_0x7143('0x1'));var timeout=require('connect-timeout');var express=require(_0x7143('0x2'));var router=express[_0x7143('0x3')]();var auth=require(_0x7143('0x4'));var interaction=require(_0x7143('0x5'));var config=require(_0x7143('0x6'));var controller=require(_0x7143('0x7'));router[_0x7143('0x8')]('/',auth['isAuthenticated'](),controller[_0x7143('0x9')]);router[_0x7143('0x8')](_0x7143('0xa'),auth[_0x7143('0xb')](),controller['describe']);router[_0x7143('0x8')](_0x7143('0xc'),auth[_0x7143('0xb')](),controller['show']);router[_0x7143('0xd')]('/',auth[_0x7143('0xb')](),controller['create']);router['put']('/:id',auth[_0x7143('0xb')](),controller['update']);router[_0x7143('0xe')](_0x7143('0xc'),auth[_0x7143('0xb')](),controller[_0x7143('0xf')]);module[_0x7143('0x10')]=router;
\ No newline at end of file
index 61c2c27..65c4280 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd62=['exports','STRING','ENUM','queue','DATE','NOW','sequelize'];(function(_0x59f5fe,_0x4524ed){var _0x398bd2=function(_0x148eda){while(--_0x148eda){_0x59f5fe['push'](_0x59f5fe['shift']());}};_0x398bd2(++_0x4524ed);}(_0xdd62,0x180));var _0x2dd6=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xdd62[_0xae7c2f];return _0x5d7001;};'use strict';var moment=require('moment');var Sequelize=require(_0x2dd6('0x0'));module[_0x2dd6('0x1')]={'uniqueid':{'type':Sequelize[_0x2dd6('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x2dd6('0x3')]('account','agent',_0x2dd6('0x4')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0x2dd6('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x2dd6('0x6')]}};
\ No newline at end of file
+var _0xa08c=['NOW','moment','sequelize','exports','STRING','ENUM','account','agent','queue','DATE'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xa08c,0xf1));var _0xca08=function(_0x331a97,_0x875b9){_0x331a97=_0x331a97-0x0;var _0x587e9c=_0xa08c[_0x331a97];return _0x587e9c;};'use strict';var moment=require(_0xca08('0x0'));var Sequelize=require(_0xca08('0x1'));module[_0xca08('0x2')]={'uniqueid':{'type':Sequelize[_0xca08('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xca08('0x4')](_0xca08('0x5'),_0xca08('0x6'),_0xca08('0x7')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xca08('0x8')],'allowNull':![],'defaultValue':Sequelize[_0xca08('0x9')]}};
\ No newline at end of file
index d388395..6ca1197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc587=['../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','count','offset','apply','reject','save','update','then','destroy','stack','name','send','index','OpenchannelTransferReport','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','add','day','merge','type','VIRTUAL','options','findAll','rows','catch','show','rawAttributes','includeAll','include','find','create','body','params','describe','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','crypto','papaparse','ioredis','../../components/parsers/qs'];(function(_0x534bf0,_0x2efe7c){var _0x4076b6=function(_0x575879){while(--_0x575879){_0x534bf0['push'](_0x534bf0['shift']());}};_0x4076b6(++_0x2efe7c);}(_0xc587,0x1db));var _0x7c58=function(_0x59c1da,_0x16be46){_0x59c1da=_0x59c1da-0x0;var _0x3aeaef=_0xc587[_0x59c1da];return _0x3aeaef;};'use strict';var pdf=require(_0x7c58('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x7c58('0x1'));var zipdir=require(_0x7c58('0x2'));var jsonpatch=require(_0x7c58('0x3'));var rp=require(_0x7c58('0x4'));var moment=require('moment');var BPromise=require(_0x7c58('0x5'));var Mustache=require(_0x7c58('0x6'));var util=require(_0x7c58('0x7'));var path=require(_0x7c58('0x8'));var sox=require(_0x7c58('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x7c58('0xa'));var squel=require('squel');var crypto=require(_0x7c58('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7c58('0xc'));var Redis=require(_0x7c58('0xd'));var qs=require(_0x7c58('0xe'));var logger=require(_0x7c58('0xf'))(_0x7c58('0x10'));var utils=require('../../config/utils');var config=require(_0x7c58('0x11'));var db=require(_0x7c58('0x12'))['db'];function respondWithStatusCode(_0x2e184e,_0x31940d){_0x31940d=_0x31940d||0xcc;return function(_0x3e42b2){if(_0x3e42b2){return _0x2e184e[_0x7c58('0x13')](_0x31940d);}return _0x2e184e[_0x7c58('0x14')](_0x31940d)[_0x7c58('0x15')]();};}function respondWithResult(_0xff2851,_0x34ad9e){_0x34ad9e=_0x34ad9e||0xc8;return function(_0x54f37c){if(_0x54f37c){return _0xff2851[_0x7c58('0x14')](_0x34ad9e)['json'](_0x54f37c);}};}function respondWithFilteredResult(_0x50e3bc,_0x126cde){return function(_0x466d5c){if(_0x466d5c){var _0x409786=_0x466d5c[_0x7c58('0x16')],_0x46cc91=_0x126cde['offset'],_0x3a2024=_0x126cde[_0x7c58('0x17')]+_0x126cde['limit'],_0x13613d;if(_0x3a2024>=_0x409786){_0x3a2024=_0x409786;_0x13613d=0xc8;}else{_0x13613d=0xce;}_0x50e3bc[_0x7c58('0x14')](_0x13613d);return _0x50e3bc['set']('Content-Range',_0x46cc91+'-'+_0x3a2024+'/'+_0x409786)['json'](_0x466d5c);}return null;};}function patchUpdates(_0x30b5f8){return function(_0xeb4a6c){try{jsonpatch[_0x7c58('0x18')](_0xeb4a6c,_0x30b5f8,!![]);}catch(_0x1ac158){return BPromise[_0x7c58('0x19')](_0x1ac158);}return _0xeb4a6c[_0x7c58('0x1a')]();};}function saveUpdates(_0x10aaad,_0x59e235){return function(_0x5328d5){if(_0x5328d5){return _0x5328d5[_0x7c58('0x1b')](_0x10aaad)[_0x7c58('0x1c')](function(_0x5a9828){return _0x5a9828;});}return null;};}function removeEntity(_0xf6213e,_0x5c0820){return function(_0x2ca283){if(_0x2ca283){return _0x2ca283[_0x7c58('0x1d')]()['then'](function(){_0xf6213e[_0x7c58('0x14')](0xcc)[_0x7c58('0x15')]();});}};}function handleEntityNotFound(_0x6a9cf8,_0x44507c){return function(_0x2e30b4){if(!_0x2e30b4){_0x6a9cf8[_0x7c58('0x13')](0x194);}return _0x2e30b4;};}function handleError(_0x33b513,_0x4e5f94){_0x4e5f94=_0x4e5f94||0x1f4;return function(_0xeae044){logger['error'](_0xeae044[_0x7c58('0x1e')]);if(_0xeae044[_0x7c58('0x1f')]){delete _0xeae044[_0x7c58('0x1f')];}_0x33b513[_0x7c58('0x14')](_0x4e5f94)[_0x7c58('0x20')](_0xeae044);};}exports[_0x7c58('0x21')]=function(_0x1e2bfc,_0x2fccca){var _0x15255c={},_0x555c54={},_0xbedecb={'count':0x0,'rows':[]};var _0xb3177d=db[_0x7c58('0x22')]['rawAttributes'];_0x555c54[_0x7c58('0x23')]=_[_0x7c58('0x24')](_0xb3177d);var _0x33801a={'dateStart':_0x1e2bfc[_0x7c58('0x25')][_0x7c58('0x26')],'dateEnd':_0x1e2bfc[_0x7c58('0x25')]['dateEnd']};delete _0x1e2bfc[_0x7c58('0x25')]['dateStart'];delete _0x1e2bfc[_0x7c58('0x25')][_0x7c58('0x27')];_0x555c54[_0x7c58('0x25')]=_['keys'](_0x1e2bfc[_0x7c58('0x25')]);_0x555c54[_0x7c58('0x28')]=_[_0x7c58('0x29')](_0x555c54['model'],_0x555c54['query']);_0x15255c[_0x7c58('0x2a')]=_['intersection'](_0x555c54[_0x7c58('0x23')],qs[_0x7c58('0x2b')](_0x1e2bfc['query'][_0x7c58('0x2b')]));_0x15255c[_0x7c58('0x2a')]=_0x15255c[_0x7c58('0x2a')][_0x7c58('0x2c')]?_0x15255c[_0x7c58('0x2a')]:_0x555c54[_0x7c58('0x23')];if(!_0x1e2bfc['query'][_0x7c58('0x2d')](_0x7c58('0x2e'))){_0x15255c['limit']=qs['limit'](_0x1e2bfc[_0x7c58('0x25')][_0x7c58('0x2f')]);_0x15255c[_0x7c58('0x17')]=qs[_0x7c58('0x17')](_0x1e2bfc[_0x7c58('0x25')][_0x7c58('0x17')]);}_0x15255c[_0x7c58('0x30')]=qs[_0x7c58('0x31')](_0x1e2bfc[_0x7c58('0x25')][_0x7c58('0x31')]);_0x15255c[_0x7c58('0x32')]=qs[_0x7c58('0x28')](_[_0x7c58('0x33')](_0x1e2bfc[_0x7c58('0x25')],_0x555c54[_0x7c58('0x28')]));if(_0x33801a['dateStart']){if(_0x33801a[_0x7c58('0x27')]){_0x33801a[_0x7c58('0x27')]=moment(_0x33801a[_0x7c58('0x27')])[_0x7c58('0x34')](0x1,_0x7c58('0x35'));}else{_0x33801a['dateEnd']=moment(_0x33801a[_0x7c58('0x26')])[_0x7c58('0x34')](0x1,_0x7c58('0x35'));}_[_0x7c58('0x36')](_0x15255c['where'],{'createdAt':{'$gte':_0x33801a[_0x7c58('0x26')],'$lte':_0x33801a[_0x7c58('0x27')]}});}if(_0x1e2bfc[_0x7c58('0x25')]['filter']){_0x15255c['where']=_[_0x7c58('0x36')](_0x15255c[_0x7c58('0x32')],{'$or':_['map'](_0xb3177d,function(_0x34d064){if(_0x34d064[_0x7c58('0x37')]['key']!==_0x7c58('0x38')){var _0xb22e63={};_0xb22e63[_0x34d064['field']]={'$like':'%'+_0x1e2bfc[_0x7c58('0x25')]['filter']+'%'};return _0xb22e63;}})});}_0x15255c=_[_0x7c58('0x36')]({},_0x15255c,_0x1e2bfc[_0x7c58('0x39')]);var _0x23cfd5={'where':_0x15255c['where']};return db[_0x7c58('0x22')]['count'](_0x23cfd5)[_0x7c58('0x1c')](function(_0xa2348c){_0xbedecb[_0x7c58('0x16')]=_0xa2348c;if(_0x1e2bfc[_0x7c58('0x25')]['includeAll']){_0x15255c['include']=[{'all':!![]}];}return db[_0x7c58('0x22')][_0x7c58('0x3a')](_0x15255c);})[_0x7c58('0x1c')](function(_0x1847fb){_0xbedecb[_0x7c58('0x3b')]=_0x1847fb;return _0xbedecb;})[_0x7c58('0x1c')](respondWithFilteredResult(_0x2fccca,_0x15255c))[_0x7c58('0x3c')](handleError(_0x2fccca,null));};exports[_0x7c58('0x3d')]=function(_0x542797,_0x59b0f6){var _0x361a3d={'raw':!![],'where':{'id':_0x542797['params']['id']}},_0x710a2b={};_0x710a2b['model']=_[_0x7c58('0x24')](db[_0x7c58('0x22')][_0x7c58('0x3e')]);_0x710a2b[_0x7c58('0x25')]=_[_0x7c58('0x24')](_0x542797['query']);_0x710a2b['filters']=_[_0x7c58('0x29')](_0x710a2b['model'],_0x710a2b['query']);_0x361a3d[_0x7c58('0x2a')]=_[_0x7c58('0x29')](_0x710a2b[_0x7c58('0x23')],qs[_0x7c58('0x2b')](_0x542797[_0x7c58('0x25')][_0x7c58('0x2b')]));_0x361a3d['attributes']=_0x361a3d[_0x7c58('0x2a')][_0x7c58('0x2c')]?_0x361a3d[_0x7c58('0x2a')]:_0x710a2b[_0x7c58('0x23')];if(_0x542797[_0x7c58('0x25')][_0x7c58('0x3f')]){_0x361a3d[_0x7c58('0x40')]=[{'all':!![]}];}_0x361a3d=_[_0x7c58('0x36')]({},_0x361a3d,_0x542797[_0x7c58('0x39')]);return db[_0x7c58('0x22')][_0x7c58('0x41')](_0x361a3d)[_0x7c58('0x1c')](handleEntityNotFound(_0x59b0f6,null))['then'](respondWithResult(_0x59b0f6,null))[_0x7c58('0x3c')](handleError(_0x59b0f6,null));};exports['create']=function(_0x10c496,_0x29512f){return db[_0x7c58('0x22')][_0x7c58('0x42')](_0x10c496['body'],{})[_0x7c58('0x1c')](respondWithResult(_0x29512f,0xc9))[_0x7c58('0x3c')](handleError(_0x29512f,null));};exports[_0x7c58('0x1b')]=function(_0x150d8f,_0xda8447){if(_0x150d8f[_0x7c58('0x43')]['id']){delete _0x150d8f[_0x7c58('0x43')]['id'];}return db[_0x7c58('0x22')][_0x7c58('0x41')]({'where':{'id':_0x150d8f[_0x7c58('0x44')]['id']}})[_0x7c58('0x1c')](handleEntityNotFound(_0xda8447,null))[_0x7c58('0x1c')](saveUpdates(_0x150d8f[_0x7c58('0x43')],null))['then'](respondWithResult(_0xda8447,null))[_0x7c58('0x3c')](handleError(_0xda8447,null));};exports[_0x7c58('0x1d')]=function(_0x338914,_0x5e4370){return db[_0x7c58('0x22')][_0x7c58('0x41')]({'where':{'id':_0x338914[_0x7c58('0x44')]['id']}})[_0x7c58('0x1c')](handleEntityNotFound(_0x5e4370,null))[_0x7c58('0x1c')](removeEntity(_0x5e4370,null))[_0x7c58('0x3c')](handleError(_0x5e4370,null));};exports[_0x7c58('0x45')]=function(_0x3e8a85,_0x1aa9ac){return db[_0x7c58('0x22')][_0x7c58('0x45')]()[_0x7c58('0x1c')](respondWithResult(_0x1aa9ac,null))[_0x7c58('0x3c')](handleError(_0x1aa9ac,null));};
\ No newline at end of file
+var _0x9477=['ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','Content-Range','apply','reject','save','update','then','error','name','send','index','OpenchannelTransferReport','rawAttributes','model','query','dateStart','dateEnd','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','add','day','merge','filter','type','key','VIRTUAL','count','includeAll','findAll','rows','catch','show','params','fields','options','create','body','find','destroy','describe','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9477,0xda));var _0x7947=function(_0x51417d,_0x15425e){_0x51417d=_0x51417d-0x0;var _0x496920=_0x9477[_0x51417d];return _0x496920;};'use strict';var pdf=require(_0x7947('0x0'));var emlformat=require(_0x7947('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x7947('0x2'));var jsonpatch=require(_0x7947('0x3'));var rp=require(_0x7947('0x4'));var moment=require(_0x7947('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7947('0x6'));var util=require(_0x7947('0x7'));var path=require(_0x7947('0x8'));var sox=require('sox');var csv=require(_0x7947('0x9'));var ejs=require(_0x7947('0xa'));var fs=require('fs');var _=require(_0x7947('0xb'));var squel=require(_0x7947('0xc'));var crypto=require(_0x7947('0xd'));var jsforce=require(_0x7947('0xe'));var deskjs=require(_0x7947('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7947('0x10'));var Papa=require(_0x7947('0x11'));var Redis=require(_0x7947('0x12'));var qs=require(_0x7947('0x13'));var logger=require(_0x7947('0x14'))(_0x7947('0x15'));var utils=require('../../config/utils');var config=require(_0x7947('0x16'));var db=require(_0x7947('0x17'))['db'];function respondWithStatusCode(_0x376177,_0x4b627d){_0x4b627d=_0x4b627d||0xcc;return function(_0x59687b){if(_0x59687b){return _0x376177[_0x7947('0x18')](_0x4b627d);}return _0x376177[_0x7947('0x19')](_0x4b627d)['end']();};}function respondWithResult(_0x53e4a5,_0x1c1554){_0x1c1554=_0x1c1554||0xc8;return function(_0x155588){if(_0x155588){return _0x53e4a5[_0x7947('0x19')](_0x1c1554)[_0x7947('0x1a')](_0x155588);}};}function respondWithFilteredResult(_0xaa3056,_0x2d66ad){return function(_0x282ab5){if(_0x282ab5){var _0x48816d=_0x282ab5['count'],_0x5a8518=_0x2d66ad[_0x7947('0x1b')],_0x12229b=_0x2d66ad[_0x7947('0x1b')]+_0x2d66ad['limit'],_0x351783;if(_0x12229b>=_0x48816d){_0x12229b=_0x48816d;_0x351783=0xc8;}else{_0x351783=0xce;}_0xaa3056[_0x7947('0x19')](_0x351783);return _0xaa3056['set'](_0x7947('0x1c'),_0x5a8518+'-'+_0x12229b+'/'+_0x48816d)['json'](_0x282ab5);}return null;};}function patchUpdates(_0x254486){return function(_0x4bfd60){try{jsonpatch[_0x7947('0x1d')](_0x4bfd60,_0x254486,!![]);}catch(_0x136b58){return BPromise[_0x7947('0x1e')](_0x136b58);}return _0x4bfd60[_0x7947('0x1f')]();};}function saveUpdates(_0x461611,_0x19df47){return function(_0x562b19){if(_0x562b19){return _0x562b19[_0x7947('0x20')](_0x461611)[_0x7947('0x21')](function(_0x4a97d7){return _0x4a97d7;});}return null;};}function removeEntity(_0x5a1a97,_0x5d15dd){return function(_0x633ef5){if(_0x633ef5){return _0x633ef5['destroy']()[_0x7947('0x21')](function(){_0x5a1a97[_0x7947('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4b871b,_0x2407b6){return function(_0x1119d8){if(!_0x1119d8){_0x4b871b['sendStatus'](0x194);}return _0x1119d8;};}function handleError(_0x311008,_0x5bfe17){_0x5bfe17=_0x5bfe17||0x1f4;return function(_0x5972b2){logger[_0x7947('0x22')](_0x5972b2['stack']);if(_0x5972b2['name']){delete _0x5972b2[_0x7947('0x23')];}_0x311008[_0x7947('0x19')](_0x5bfe17)[_0x7947('0x24')](_0x5972b2);};}exports[_0x7947('0x25')]=function(_0x3bf598,_0x3f5681){var _0x2fce6b={},_0x55a5ac={},_0x275166={'count':0x0,'rows':[]};var _0x2103a5=db[_0x7947('0x26')][_0x7947('0x27')];_0x55a5ac[_0x7947('0x28')]=_['keys'](_0x2103a5);var _0x2c037b={'dateStart':_0x3bf598[_0x7947('0x29')][_0x7947('0x2a')],'dateEnd':_0x3bf598[_0x7947('0x29')]['dateEnd']};delete _0x3bf598['query'][_0x7947('0x2a')];delete _0x3bf598[_0x7947('0x29')][_0x7947('0x2b')];_0x55a5ac[_0x7947('0x29')]=_[_0x7947('0x2c')](_0x3bf598[_0x7947('0x29')]);_0x55a5ac[_0x7947('0x2d')]=_[_0x7947('0x2e')](_0x55a5ac[_0x7947('0x28')],_0x55a5ac['query']);_0x2fce6b[_0x7947('0x2f')]=_[_0x7947('0x2e')](_0x55a5ac['model'],qs['fields'](_0x3bf598['query']['fields']));_0x2fce6b[_0x7947('0x2f')]=_0x2fce6b[_0x7947('0x2f')][_0x7947('0x30')]?_0x2fce6b[_0x7947('0x2f')]:_0x55a5ac[_0x7947('0x28')];if(!_0x3bf598['query'][_0x7947('0x31')](_0x7947('0x32'))){_0x2fce6b['limit']=qs[_0x7947('0x33')](_0x3bf598[_0x7947('0x29')][_0x7947('0x33')]);_0x2fce6b['offset']=qs[_0x7947('0x1b')](_0x3bf598['query'][_0x7947('0x1b')]);}_0x2fce6b['order']=qs[_0x7947('0x34')](_0x3bf598[_0x7947('0x29')]['sort']);_0x2fce6b[_0x7947('0x35')]=qs[_0x7947('0x2d')](_[_0x7947('0x36')](_0x3bf598['query'],_0x55a5ac[_0x7947('0x2d')]));if(_0x2c037b[_0x7947('0x2a')]){if(_0x2c037b[_0x7947('0x2b')]){_0x2c037b[_0x7947('0x2b')]=moment(_0x2c037b['dateEnd'])[_0x7947('0x37')](0x1,'day');}else{_0x2c037b[_0x7947('0x2b')]=moment(_0x2c037b[_0x7947('0x2a')])[_0x7947('0x37')](0x1,_0x7947('0x38'));}_[_0x7947('0x39')](_0x2fce6b['where'],{'createdAt':{'$gte':_0x2c037b['dateStart'],'$lte':_0x2c037b[_0x7947('0x2b')]}});}if(_0x3bf598[_0x7947('0x29')][_0x7947('0x3a')]){_0x2fce6b[_0x7947('0x35')]=_[_0x7947('0x39')](_0x2fce6b[_0x7947('0x35')],{'$or':_['map'](_0x2103a5,function(_0x4f6ef7){if(_0x4f6ef7[_0x7947('0x3b')][_0x7947('0x3c')]!==_0x7947('0x3d')){var _0x4fc180={};_0x4fc180[_0x4f6ef7['field']]={'$like':'%'+_0x3bf598[_0x7947('0x29')][_0x7947('0x3a')]+'%'};return _0x4fc180;}})});}_0x2fce6b=_['merge']({},_0x2fce6b,_0x3bf598['options']);var _0x3b21ba={'where':_0x2fce6b[_0x7947('0x35')]};return db[_0x7947('0x26')][_0x7947('0x3e')](_0x3b21ba)[_0x7947('0x21')](function(_0x30e079){_0x275166['count']=_0x30e079;if(_0x3bf598[_0x7947('0x29')][_0x7947('0x3f')]){_0x2fce6b['include']=[{'all':!![]}];}return db[_0x7947('0x26')][_0x7947('0x40')](_0x2fce6b);})[_0x7947('0x21')](function(_0x36e1ea){_0x275166[_0x7947('0x41')]=_0x36e1ea;return _0x275166;})[_0x7947('0x21')](respondWithFilteredResult(_0x3f5681,_0x2fce6b))[_0x7947('0x42')](handleError(_0x3f5681,null));};exports[_0x7947('0x43')]=function(_0x2f7d1a,_0x433a99){var _0x5e6db7={'raw':!![],'where':{'id':_0x2f7d1a[_0x7947('0x44')]['id']}},_0x21aea1={};_0x21aea1['model']=_[_0x7947('0x2c')](db[_0x7947('0x26')][_0x7947('0x27')]);_0x21aea1[_0x7947('0x29')]=_['keys'](_0x2f7d1a[_0x7947('0x29')]);_0x21aea1['filters']=_['intersection'](_0x21aea1[_0x7947('0x28')],_0x21aea1[_0x7947('0x29')]);_0x5e6db7[_0x7947('0x2f')]=_['intersection'](_0x21aea1['model'],qs['fields'](_0x2f7d1a[_0x7947('0x29')][_0x7947('0x45')]));_0x5e6db7[_0x7947('0x2f')]=_0x5e6db7[_0x7947('0x2f')][_0x7947('0x30')]?_0x5e6db7[_0x7947('0x2f')]:_0x21aea1[_0x7947('0x28')];if(_0x2f7d1a[_0x7947('0x29')][_0x7947('0x3f')]){_0x5e6db7['include']=[{'all':!![]}];}_0x5e6db7=_[_0x7947('0x39')]({},_0x5e6db7,_0x2f7d1a[_0x7947('0x46')]);return db['OpenchannelTransferReport']['find'](_0x5e6db7)['then'](handleEntityNotFound(_0x433a99,null))['then'](respondWithResult(_0x433a99,null))[_0x7947('0x42')](handleError(_0x433a99,null));};exports[_0x7947('0x47')]=function(_0x2a2aeb,_0x505f40){return db['OpenchannelTransferReport']['create'](_0x2a2aeb[_0x7947('0x48')],{})[_0x7947('0x21')](respondWithResult(_0x505f40,0xc9))['catch'](handleError(_0x505f40,null));};exports[_0x7947('0x20')]=function(_0x488147,_0x53f1fe){if(_0x488147[_0x7947('0x48')]['id']){delete _0x488147[_0x7947('0x48')]['id'];}return db[_0x7947('0x26')][_0x7947('0x49')]({'where':{'id':_0x488147[_0x7947('0x44')]['id']}})[_0x7947('0x21')](handleEntityNotFound(_0x53f1fe,null))[_0x7947('0x21')](saveUpdates(_0x488147[_0x7947('0x48')],null))[_0x7947('0x21')](respondWithResult(_0x53f1fe,null))[_0x7947('0x42')](handleError(_0x53f1fe,null));};exports[_0x7947('0x4a')]=function(_0x5f422b,_0x44ab7e){return db['OpenchannelTransferReport'][_0x7947('0x49')]({'where':{'id':_0x5f422b[_0x7947('0x44')]['id']}})['then'](handleEntityNotFound(_0x44ab7e,null))[_0x7947('0x21')](removeEntity(_0x44ab7e,null))[_0x7947('0x42')](handleError(_0x44ab7e,null));};exports['describe']=function(_0x43f5c6,_0x1c734b){return db['OpenchannelTransferReport'][_0x7947('0x4b')]()[_0x7947('0x21')](respondWithResult(_0x1c734b,null))['catch'](handleError(_0x1c734b,null));};
\ No newline at end of file
index cab5f82..bb6eb08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['lodash','util','../../config/logger','api','moment','bluebird','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','uniqueid'];(function(_0x293947,_0x1ac925){var _0x585cc8=function(_0x331873){while(--_0x331873){_0x293947['push'](_0x293947['shift']());}};_0x585cc8(++_0x1ac925);}(_0x814b,0x1a2));var _0xb814=function(_0x474c66,_0xbce925){_0x474c66=_0x474c66-0x0;var _0xcbd9bf=_0x814b[_0x474c66];return _0xcbd9bf;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var attributes=require(_0xb814('0x6'));module[_0xb814('0x7')]=function(_0x258866,_0x4237bc){return _0x258866[_0xb814('0x8')](_0xb814('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xb814('0xa'),'fields':[_0xb814('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['lodash','util','../../config/logger','api','moment','bluebird','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','uniqueid'];(function(_0x26ce01,_0x2046b2){var _0x15b336=function(_0x5cd022){while(--_0x5cd022){_0x26ce01['push'](_0x26ce01['shift']());}};_0x15b336(++_0x2046b2);}(_0x814b,0x1a2));var _0xb814=function(_0x5427c8,_0x18f384){_0x5427c8=_0x5427c8-0x0;var _0x33a129=_0x814b[_0x5427c8];return _0x33a129;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var attributes=require(_0xb814('0x6'));module[_0xb814('0x7')]=function(_0x258866,_0x4237bc){return _0x258866[_0xb814('0x8')](_0xb814('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xb814('0xa'),'fields':[_0xb814('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 95ca0d4..8815219 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c0a=['info','result','lodash','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','http','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x4c0a,0x11a));var _0xa4c0=function(_0x2eb3dd,_0x50ea13){_0x2eb3dd=_0x2eb3dd-0x0;var _0x240c7a=_0x4c0a[_0x2eb3dd];return _0x240c7a;};'use strict';var _=require(_0xa4c0('0x0'));var util=require('util');var moment=require(_0xa4c0('0x1'));var BPromise=require(_0xa4c0('0x2'));var rs=require(_0xa4c0('0x3'));var fs=require('fs');var Redis=require(_0xa4c0('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa4c0('0x5'));var config=require(_0xa4c0('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xa4c0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x11d7f5,_0x4cd20b,_0x28acbc){return new BPromise(function(_0x29bfac,_0x1cfad2){return client[_0xa4c0('0x8')](_0x11d7f5,_0x28acbc)[_0xa4c0('0x9')](function(_0xa95fec){logger['info'](_0xa4c0('0xa'),_0x4cd20b,_0xa4c0('0xb'));logger[_0xa4c0('0xc')](_0xa4c0('0xd'),_0x4cd20b,_0xa4c0('0xb'),JSON[_0xa4c0('0xe')](_0xa95fec));if(_0xa95fec[_0xa4c0('0xf')]){if(_0xa95fec['error'][_0xa4c0('0x10')]===0x1f4){logger[_0xa4c0('0xf')](_0xa4c0('0xa'),_0x4cd20b,_0xa95fec[_0xa4c0('0xf')][_0xa4c0('0x11')]);return _0x1cfad2(_0xa95fec[_0xa4c0('0xf')][_0xa4c0('0x11')]);}logger[_0xa4c0('0xf')](_0xa4c0('0xa'),_0x4cd20b,_0xa95fec['error'][_0xa4c0('0x11')]);return _0x29bfac(_0xa95fec[_0xa4c0('0xf')][_0xa4c0('0x11')]);}else{logger[_0xa4c0('0x12')](_0xa4c0('0xa'),_0x4cd20b,_0xa4c0('0xb'));_0x29bfac(_0xa95fec[_0xa4c0('0x13')][_0xa4c0('0x11')]);}})['catch'](function(_0x5a130f){logger[_0xa4c0('0xf')](_0xa4c0('0xa'),_0x4cd20b,_0x5a130f);_0x1cfad2(_0x5a130f);});});}
\ No newline at end of file
+var _0x5752=['OpenchannelTransferReport,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3c858f,_0x235201){var _0x198090=function(_0xc4c406){while(--_0xc4c406){_0x3c858f['push'](_0x3c858f['shift']());}};_0x198090(++_0x235201);}(_0x5752,0x99));var _0x2575=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x5752[_0xfae23b];return _0x200640;};'use strict';var _=require(_0x2575('0x0'));var util=require(_0x2575('0x1'));var moment=require(_0x2575('0x2'));var BPromise=require(_0x2575('0x3'));var rs=require(_0x2575('0x4'));var fs=require('fs');var Redis=require(_0x2575('0x5'));var db=require(_0x2575('0x6'))['db'];var utils=require(_0x2575('0x7'));var logger=require(_0x2575('0x8'))('rpc');var config=require(_0x2575('0x9'));var jayson=require(_0x2575('0xa'));var client=jayson[_0x2575('0xb')][_0x2575('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21d6ff,_0x1882b2,_0x18faf6){return new BPromise(function(_0x3bd1d8,_0x1a4cdd){return client[_0x2575('0xd')](_0x21d6ff,_0x18faf6)[_0x2575('0xe')](function(_0x4616b8){logger[_0x2575('0xf')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x1882b2,_0x2575('0x10'));logger[_0x2575('0x11')](_0x2575('0x12'),_0x1882b2,_0x2575('0x10'),JSON[_0x2575('0x13')](_0x4616b8));if(_0x4616b8[_0x2575('0x14')]){if(_0x4616b8[_0x2575('0x14')][_0x2575('0x15')]===0x1f4){logger[_0x2575('0x14')](_0x2575('0x16'),_0x1882b2,_0x4616b8['error']['message']);return _0x1a4cdd(_0x4616b8[_0x2575('0x14')][_0x2575('0x17')]);}logger['error'](_0x2575('0x16'),_0x1882b2,_0x4616b8[_0x2575('0x14')][_0x2575('0x17')]);return _0x3bd1d8(_0x4616b8[_0x2575('0x14')][_0x2575('0x17')]);}else{logger[_0x2575('0xf')](_0x2575('0x16'),_0x1882b2,_0x2575('0x10'));_0x3bd1d8(_0x4616b8['result'][_0x2575('0x17')]);}})[_0x2575('0x18')](function(_0xc30c78){logger[_0x2575('0x14')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x1882b2,_0xc30c78);_0x1a4cdd(_0xc30c78);});});}
\ No newline at end of file
index 6b40c83..a6414d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67da=['destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','show','post','create','put','/:id','update','delete'];(function(_0x1e12ad,_0x5b3fe5){var _0x1b26a3=function(_0x53436b){while(--_0x53436b){_0x1e12ad['push'](_0x1e12ad['shift']());}};_0x1b26a3(++_0x5b3fe5);}(_0x67da,0x192));var _0xa67d=function(_0x989986,_0x268417){_0x989986=_0x989986-0x0;var _0x444ed7=_0x67da[_0x989986];return _0x444ed7;};'use strict';var multer=require('multer');var util=require(_0xa67d('0x0'));var path=require(_0xa67d('0x1'));var timeout=require(_0xa67d('0x2'));var express=require(_0xa67d('0x3'));var router=express[_0xa67d('0x4')]();var auth=require(_0xa67d('0x5'));var interaction=require(_0xa67d('0x6'));var config=require(_0xa67d('0x7'));var controller=require(_0xa67d('0x8'));router[_0xa67d('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xa67d('0x9')]('/:id',auth[_0xa67d('0xa')](),controller[_0xa67d('0xb')]);router[_0xa67d('0xc')]('/',auth[_0xa67d('0xa')](),controller[_0xa67d('0xd')]);router[_0xa67d('0xe')](_0xa67d('0xf'),auth[_0xa67d('0xa')](),controller[_0xa67d('0x10')]);router[_0xa67d('0x11')]('/:id',auth[_0xa67d('0xa')](),controller[_0xa67d('0x12')]);module[_0xa67d('0x13')]=router;
\ No newline at end of file
+var _0x4d46=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','post','delete','destroy','exports','multer'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x4d46,0x197));var _0x64d4=function(_0x1bf445,_0x4555e3){_0x1bf445=_0x1bf445-0x0;var _0x528318=_0x4d46[_0x1bf445];return _0x528318;};'use strict';var multer=require(_0x64d4('0x0'));var util=require(_0x64d4('0x1'));var path=require(_0x64d4('0x2'));var timeout=require(_0x64d4('0x3'));var express=require(_0x64d4('0x4'));var router=express[_0x64d4('0x5')]();var auth=require('../../components/auth/service');var interaction=require(_0x64d4('0x6'));var config=require(_0x64d4('0x7'));var controller=require(_0x64d4('0x8'));router[_0x64d4('0x9')]('/',auth[_0x64d4('0xa')](),controller[_0x64d4('0xb')]);router['get'](_0x64d4('0xc'),auth[_0x64d4('0xa')](),controller['show']);router[_0x64d4('0xd')]('/',auth[_0x64d4('0xa')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x64d4('0xe')](_0x64d4('0xc'),auth[_0x64d4('0xa')](),controller[_0x64d4('0xf')]);module[_0x64d4('0x10')]=router;
\ No newline at end of file
index 8fd7b1d..8fec571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf15c=['exports','STRING','name','sequelize'];(function(_0x44d038,_0x3ff296){var _0xa70524=function(_0x1ff680){while(--_0x1ff680){_0x44d038['push'](_0x44d038['shift']());}};_0xa70524(++_0x3ff296);}(_0xf15c,0x6f));var _0xcf15=function(_0x58f29c,_0x21aee4){_0x58f29c=_0x58f29c-0x0;var _0x164c34=_0xf15c[_0x58f29c];return _0x164c34;};'use strict';var Sequelize=require(_0xcf15('0x0'));module[_0xcf15('0x1')]={'name':{'type':Sequelize[_0xcf15('0x2')],'unique':_0xcf15('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xdd81=['sequelize','exports','STRING','name'];(function(_0x3358ba,_0x24c5fc){var _0x296e73=function(_0x843ff3){while(--_0x843ff3){_0x3358ba['push'](_0x3358ba['shift']());}};_0x296e73(++_0x24c5fc);}(_0xdd81,0x128));var _0x1dd8=function(_0xfd99a4,_0x56c39a){_0xfd99a4=_0xfd99a4-0x0;var _0x1b5c8b=_0xdd81[_0xfd99a4];return _0x1b5c8b;};'use strict';var Sequelize=require(_0x1dd8('0x0'));module[_0x1dd8('0x1')]={'name':{'type':Sequelize[_0x1dd8('0x2')],'unique':_0x1dd8('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 30e5d64..7185572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96fa=['filters','pick','dateEnd','add','day','where','filter','merge','map','type','field','includeAll','include','findAll','catch','show','params','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','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','status','end','json','count','offset','limit','Content-Range','apply','reject','save','update','destroy','then','get','Pauses','stack','name','send','Pause','rawAttributes','model','keys','dateStart','query','intersection','attributes','fields','length','nolimit','order','sort'];(function(_0x24f20d,_0xd6af65){var _0x12812c=function(_0x2366b1){while(--_0x2366b1){_0x24f20d['push'](_0x24f20d['shift']());}};_0x12812c(++_0xd6af65);}(_0x96fa,0xc4));var _0xa96f=function(_0x57a6a3,_0x476083){_0x57a6a3=_0x57a6a3-0x0;var _0x70d90=_0x96fa[_0x57a6a3];return _0x70d90;};'use strict';var pdf=require(_0xa96f('0x0'));var emlformat=require(_0xa96f('0x1'));var rimraf=require(_0xa96f('0x2'));var zipdir=require(_0xa96f('0x3'));var jsonpatch=require(_0xa96f('0x4'));var rp=require(_0xa96f('0x5'));var moment=require('moment');var BPromise=require(_0xa96f('0x6'));var Mustache=require(_0xa96f('0x7'));var util=require(_0xa96f('0x8'));var path=require('path');var sox=require(_0xa96f('0x9'));var csv=require(_0xa96f('0xa'));var ejs=require(_0xa96f('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0xa96f('0xc'));var crypto=require(_0xa96f('0xd'));var jsforce=require(_0xa96f('0xe'));var deskjs=require(_0xa96f('0xf'));var toCsv=require(_0xa96f('0xa'));var querystring=require(_0xa96f('0x10'));var Papa=require(_0xa96f('0x11'));var Redis=require('ioredis');var qs=require(_0xa96f('0x12'));var logger=require(_0xa96f('0x13'))('api');var utils=require(_0xa96f('0x14'));var config=require('../../config/environment');var db=require(_0xa96f('0x15'))['db'];function respondWithStatusCode(_0x1eb416,_0x17ffdd){_0x17ffdd=_0x17ffdd||0xcc;return function(_0x49b32b){if(_0x49b32b){return _0x1eb416['sendStatus'](_0x17ffdd);}return _0x1eb416[_0xa96f('0x16')](_0x17ffdd)[_0xa96f('0x17')]();};}function respondWithResult(_0x1dc174,_0x2c6ea0){_0x2c6ea0=_0x2c6ea0||0xc8;return function(_0x2b3905){if(_0x2b3905){return _0x1dc174[_0xa96f('0x16')](_0x2c6ea0)[_0xa96f('0x18')](_0x2b3905);}};}function respondWithFilteredResult(_0x35f313,_0x4cd7b9){return function(_0x287ace){if(_0x287ace){var _0x363761=_0x287ace[_0xa96f('0x19')],_0x1a4c34=_0x4cd7b9['offset'],_0x13eb30=_0x4cd7b9[_0xa96f('0x1a')]+_0x4cd7b9[_0xa96f('0x1b')],_0x2e2c46;if(_0x13eb30>=_0x363761){_0x13eb30=_0x363761;_0x2e2c46=0xc8;}else{_0x2e2c46=0xce;}_0x35f313['status'](_0x2e2c46);return _0x35f313['set'](_0xa96f('0x1c'),_0x1a4c34+'-'+_0x13eb30+'/'+_0x363761)[_0xa96f('0x18')](_0x287ace);}return null;};}function patchUpdates(_0x5f314e){return function(_0x43c489){try{jsonpatch[_0xa96f('0x1d')](_0x43c489,_0x5f314e,!![]);}catch(_0x301ce9){return BPromise[_0xa96f('0x1e')](_0x301ce9);}return _0x43c489[_0xa96f('0x1f')]();};}function saveUpdates(_0x3bc443,_0x596658){return function(_0xbd09ce){if(_0xbd09ce){return _0xbd09ce[_0xa96f('0x20')](_0x3bc443)['then'](function(_0x53be88){return _0x53be88;});}return null;};}function removeEntity(_0x18a85a,_0x291dfc){return function(_0x47c374){if(_0x47c374){return _0x47c374[_0xa96f('0x21')]()[_0xa96f('0x22')](function(){var _0x466fbc=_0x47c374[_0xa96f('0x23')]({'plain':!![]});var _0x301429=_0xa96f('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x301429,'resourceId':_0x466fbc['id']}})[_0xa96f('0x22')](function(){return _0x47c374;});})[_0xa96f('0x22')](function(){_0x18a85a[_0xa96f('0x16')](0xcc)[_0xa96f('0x17')]();});}};}function handleEntityNotFound(_0x2b5375,_0x3e7fd3){return function(_0x1a7922){if(!_0x1a7922){_0x2b5375['sendStatus'](0x194);}return _0x1a7922;};}function handleError(_0x12b708,_0x337245){_0x337245=_0x337245||0x1f4;return function(_0x3ac31e){logger['error'](_0x3ac31e[_0xa96f('0x25')]);if(_0x3ac31e[_0xa96f('0x26')]){delete _0x3ac31e[_0xa96f('0x26')];}_0x12b708[_0xa96f('0x16')](_0x337245)[_0xa96f('0x27')](_0x3ac31e);};}exports['index']=function(_0x276156,_0x1a83e3){var _0x3e241c={},_0x3373f1={},_0x3fb0e5={'count':0x0,'rows':[]};var _0x13e398=db[_0xa96f('0x28')][_0xa96f('0x29')];_0x3373f1[_0xa96f('0x2a')]=_[_0xa96f('0x2b')](_0x13e398);var _0x5269c9={'dateStart':_0x276156['query'][_0xa96f('0x2c')],'dateEnd':_0x276156[_0xa96f('0x2d')]['dateEnd']};delete _0x276156[_0xa96f('0x2d')][_0xa96f('0x2c')];delete _0x276156['query']['dateEnd'];_0x3373f1[_0xa96f('0x2d')]=_['keys'](_0x276156[_0xa96f('0x2d')]);_0x3373f1['filters']=_[_0xa96f('0x2e')](_0x3373f1[_0xa96f('0x2a')],_0x3373f1[_0xa96f('0x2d')]);_0x3e241c[_0xa96f('0x2f')]=_[_0xa96f('0x2e')](_0x3373f1[_0xa96f('0x2a')],qs['fields'](_0x276156[_0xa96f('0x2d')][_0xa96f('0x30')]));_0x3e241c[_0xa96f('0x2f')]=_0x3e241c[_0xa96f('0x2f')][_0xa96f('0x31')]?_0x3e241c['attributes']:_0x3373f1[_0xa96f('0x2a')];if(!_0x276156[_0xa96f('0x2d')]['hasOwnProperty'](_0xa96f('0x32'))){_0x3e241c[_0xa96f('0x1b')]=qs[_0xa96f('0x1b')](_0x276156[_0xa96f('0x2d')][_0xa96f('0x1b')]);_0x3e241c[_0xa96f('0x1a')]=qs[_0xa96f('0x1a')](_0x276156[_0xa96f('0x2d')][_0xa96f('0x1a')]);}_0x3e241c[_0xa96f('0x33')]=qs[_0xa96f('0x34')](_0x276156[_0xa96f('0x2d')][_0xa96f('0x34')]);_0x3e241c['where']=qs[_0xa96f('0x35')](_[_0xa96f('0x36')](_0x276156[_0xa96f('0x2d')],_0x3373f1[_0xa96f('0x35')]));if(_0x5269c9[_0xa96f('0x2c')]){if(_0x5269c9[_0xa96f('0x37')]){_0x5269c9['dateEnd']=moment(_0x5269c9[_0xa96f('0x37')])[_0xa96f('0x38')](0x1,_0xa96f('0x39'));}else{_0x5269c9[_0xa96f('0x37')]=moment(_0x5269c9[_0xa96f('0x2c')])[_0xa96f('0x38')](0x1,_0xa96f('0x39'));}_['merge'](_0x3e241c[_0xa96f('0x3a')],{'createdAt':{'$gte':_0x5269c9[_0xa96f('0x2c')],'$lte':_0x5269c9[_0xa96f('0x37')]}});}if(_0x276156['query'][_0xa96f('0x3b')]){_0x3e241c['where']=_[_0xa96f('0x3c')](_0x3e241c['where'],{'$or':_[_0xa96f('0x3d')](_0x13e398,function(_0x5e5906){if(_0x5e5906[_0xa96f('0x3e')]['key']!=='VIRTUAL'){var _0x16c75d={};_0x16c75d[_0x5e5906[_0xa96f('0x3f')]]={'$like':'%'+_0x276156['query']['filter']+'%'};return _0x16c75d;}})});}_0x3e241c=_[_0xa96f('0x3c')]({},_0x3e241c,_0x276156['options']);var _0x4d5ce0={'where':_0x3e241c[_0xa96f('0x3a')]};return db[_0xa96f('0x28')][_0xa96f('0x19')](_0x4d5ce0)[_0xa96f('0x22')](function(_0x2df913){_0x3fb0e5[_0xa96f('0x19')]=_0x2df913;if(_0x276156['query'][_0xa96f('0x40')]){_0x3e241c[_0xa96f('0x41')]=[{'all':!![]}];}return db[_0xa96f('0x28')][_0xa96f('0x42')](_0x3e241c);})['then'](function(_0x24882e){_0x3fb0e5['rows']=_0x24882e;return _0x3fb0e5;})[_0xa96f('0x22')](respondWithFilteredResult(_0x1a83e3,_0x3e241c))[_0xa96f('0x43')](handleError(_0x1a83e3,null));};exports[_0xa96f('0x44')]=function(_0x502f72,_0x57c900){var _0x517d04={'raw':!![],'where':{'id':_0x502f72[_0xa96f('0x45')]['id']}},_0x5ed4cf={};_0x5ed4cf['model']=_[_0xa96f('0x2b')](db[_0xa96f('0x28')][_0xa96f('0x29')]);_0x5ed4cf[_0xa96f('0x2d')]=_['keys'](_0x502f72[_0xa96f('0x2d')]);_0x5ed4cf['filters']=_[_0xa96f('0x2e')](_0x5ed4cf[_0xa96f('0x2a')],_0x5ed4cf['query']);_0x517d04[_0xa96f('0x2f')]=_[_0xa96f('0x2e')](_0x5ed4cf[_0xa96f('0x2a')],qs['fields'](_0x502f72['query'][_0xa96f('0x30')]));_0x517d04[_0xa96f('0x2f')]=_0x517d04[_0xa96f('0x2f')][_0xa96f('0x31')]?_0x517d04['attributes']:_0x5ed4cf[_0xa96f('0x2a')];if(_0x502f72['query'][_0xa96f('0x40')]){_0x517d04['include']=[{'all':!![]}];}_0x517d04=_['merge']({},_0x517d04,_0x502f72[_0xa96f('0x46')]);return db[_0xa96f('0x28')]['find'](_0x517d04)['then'](handleEntityNotFound(_0x57c900,null))[_0xa96f('0x22')](respondWithResult(_0x57c900,null))[_0xa96f('0x43')](handleError(_0x57c900,null));};exports[_0xa96f('0x47')]=function(_0x50516f,_0x4270a2){return db[_0xa96f('0x28')]['create'](_0x50516f[_0xa96f('0x48')],{})[_0xa96f('0x22')](function(_0x5c1945){var _0x37c96d=_0x50516f[_0xa96f('0x49')][_0xa96f('0x23')]({'plain':!![]});if(!_0x37c96d)throw new Error(_0xa96f('0x4a'));if(_0x37c96d[_0xa96f('0x4b')]===_0xa96f('0x49')){var _0x4ffe57=_0x5c1945['get']({'plain':!![]});var _0x5b319b=_0xa96f('0x24');return db[_0xa96f('0x4c')][_0xa96f('0x4d')]({'where':{'name':_0x5b319b,'userProfileId':_0x37c96d[_0xa96f('0x4e')]},'raw':!![]})[_0xa96f('0x22')](function(_0x5c1af1){if(_0x5c1af1&&_0x5c1af1[_0xa96f('0x4f')]===0x0){return db[_0xa96f('0x50')][_0xa96f('0x47')]({'name':_0x4ffe57['name'],'resourceId':_0x4ffe57['id'],'type':_0x5c1af1[_0xa96f('0x26')],'sectionId':_0x5c1af1['id']},{})[_0xa96f('0x22')](function(){return _0x5c1945;});}else{return _0x5c1945;}})['catch'](function(_0x1a3c00){logger[_0xa96f('0x51')](_0xa96f('0x52'),_0x1a3c00);throw _0x1a3c00;});}return _0x5c1945;})[_0xa96f('0x22')](respondWithResult(_0x4270a2,0xc9))[_0xa96f('0x43')](handleError(_0x4270a2,null));};exports[_0xa96f('0x20')]=function(_0x59a436,_0x2d32f9){if(_0x59a436[_0xa96f('0x48')]['id']){delete _0x59a436[_0xa96f('0x48')]['id'];}return db[_0xa96f('0x28')][_0xa96f('0x4d')]({'where':{'id':_0x59a436[_0xa96f('0x45')]['id']}})[_0xa96f('0x22')](handleEntityNotFound(_0x2d32f9,null))[_0xa96f('0x22')](saveUpdates(_0x59a436[_0xa96f('0x48')],null))[_0xa96f('0x22')](respondWithResult(_0x2d32f9,null))[_0xa96f('0x43')](handleError(_0x2d32f9,null));};exports[_0xa96f('0x21')]=function(_0xf7f723,_0x2484d4){return db[_0xa96f('0x28')]['find']({'where':{'id':_0xf7f723[_0xa96f('0x45')]['id']}})[_0xa96f('0x22')](handleEntityNotFound(_0x2484d4,null))[_0xa96f('0x22')](removeEntity(_0x2484d4,null))[_0xa96f('0x43')](handleError(_0x2484d4,null));};
\ No newline at end of file
+var _0x80b4=['attributes','fields','length','hasOwnProperty','nolimit','offset','sort','add','merge','where','filter','type','VIRTUAL','field','options','includeAll','include','Pause','findAll','rows','catch','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','html-pdf','eml-format','rimraf','zip-dir','request-promise','bluebird','path','to-csv','ejs','lodash','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','limit','Content-Range','apply','reject','save','update','then','destroy','get','Pauses','error','name','send','index','rawAttributes','model','query','dateStart','dateEnd','keys','filters','intersection'];(function(_0x282b4d,_0x36fe01){var _0x2c6507=function(_0x60480e){while(--_0x60480e){_0x282b4d['push'](_0x282b4d['shift']());}};_0x2c6507(++_0x36fe01);}(_0x80b4,0x6e));var _0x480b=function(_0x2f289a,_0x5736e6){_0x2f289a=_0x2f289a-0x0;var _0x48029d=_0x80b4[_0x2f289a];return _0x48029d;};'use strict';var pdf=require(_0x480b('0x0'));var emlformat=require(_0x480b('0x1'));var rimraf=require(_0x480b('0x2'));var zipdir=require(_0x480b('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x480b('0x4'));var moment=require('moment');var BPromise=require(_0x480b('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x480b('0x6'));var sox=require('sox');var csv=require(_0x480b('0x7'));var ejs=require(_0x480b('0x8'));var fs=require('fs');var _=require(_0x480b('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x480b('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x480b('0x7'));var querystring=require(_0x480b('0xb'));var Papa=require(_0x480b('0xc'));var Redis=require(_0x480b('0xd'));var qs=require(_0x480b('0xe'));var logger=require('../../config/logger')(_0x480b('0xf'));var utils=require(_0x480b('0x10'));var config=require(_0x480b('0x11'));var db=require(_0x480b('0x12'))['db'];function respondWithStatusCode(_0x58fa9b,_0x1495e3){_0x1495e3=_0x1495e3||0xcc;return function(_0x5204ea){if(_0x5204ea){return _0x58fa9b[_0x480b('0x13')](_0x1495e3);}return _0x58fa9b[_0x480b('0x14')](_0x1495e3)[_0x480b('0x15')]();};}function respondWithResult(_0x456814,_0x2a611e){_0x2a611e=_0x2a611e||0xc8;return function(_0x4e7430){if(_0x4e7430){return _0x456814[_0x480b('0x14')](_0x2a611e)[_0x480b('0x16')](_0x4e7430);}};}function respondWithFilteredResult(_0xcda75f,_0x393360){return function(_0xa2a698){if(_0xa2a698){var _0x42f82b=_0xa2a698[_0x480b('0x17')],_0x5b9217=_0x393360['offset'],_0x4c4539=_0x393360['offset']+_0x393360[_0x480b('0x18')],_0x37950c;if(_0x4c4539>=_0x42f82b){_0x4c4539=_0x42f82b;_0x37950c=0xc8;}else{_0x37950c=0xce;}_0xcda75f[_0x480b('0x14')](_0x37950c);return _0xcda75f['set'](_0x480b('0x19'),_0x5b9217+'-'+_0x4c4539+'/'+_0x42f82b)[_0x480b('0x16')](_0xa2a698);}return null;};}function patchUpdates(_0x276597){return function(_0x53cb6c){try{jsonpatch[_0x480b('0x1a')](_0x53cb6c,_0x276597,!![]);}catch(_0x25983d){return BPromise[_0x480b('0x1b')](_0x25983d);}return _0x53cb6c[_0x480b('0x1c')]();};}function saveUpdates(_0x1a6cc5,_0x47b94e){return function(_0xfa8573){if(_0xfa8573){return _0xfa8573[_0x480b('0x1d')](_0x1a6cc5)[_0x480b('0x1e')](function(_0x3b14e1){return _0x3b14e1;});}return null;};}function removeEntity(_0x3e093f,_0x3cb5db){return function(_0x30886f){if(_0x30886f){return _0x30886f[_0x480b('0x1f')]()[_0x480b('0x1e')](function(){var _0x3eb46d=_0x30886f[_0x480b('0x20')]({'plain':!![]});var _0x955eb=_0x480b('0x21');return db['UserProfileResource']['destroy']({'where':{'type':_0x955eb,'resourceId':_0x3eb46d['id']}})[_0x480b('0x1e')](function(){return _0x30886f;});})['then'](function(){_0x3e093f[_0x480b('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47e2b6,_0x40a423){return function(_0x8fd0ba){if(!_0x8fd0ba){_0x47e2b6['sendStatus'](0x194);}return _0x8fd0ba;};}function handleError(_0x2c1c02,_0x32ad1a){_0x32ad1a=_0x32ad1a||0x1f4;return function(_0x117890){logger[_0x480b('0x22')](_0x117890['stack']);if(_0x117890[_0x480b('0x23')]){delete _0x117890[_0x480b('0x23')];}_0x2c1c02[_0x480b('0x14')](_0x32ad1a)[_0x480b('0x24')](_0x117890);};}exports[_0x480b('0x25')]=function(_0x1a44f1,_0x4269b4){var _0x57258e={},_0x59f63a={},_0x104d63={'count':0x0,'rows':[]};var _0x147f15=db['Pause'][_0x480b('0x26')];_0x59f63a[_0x480b('0x27')]=_['keys'](_0x147f15);var _0x5b62ba={'dateStart':_0x1a44f1[_0x480b('0x28')][_0x480b('0x29')],'dateEnd':_0x1a44f1['query'][_0x480b('0x2a')]};delete _0x1a44f1['query'][_0x480b('0x29')];delete _0x1a44f1[_0x480b('0x28')]['dateEnd'];_0x59f63a[_0x480b('0x28')]=_[_0x480b('0x2b')](_0x1a44f1['query']);_0x59f63a[_0x480b('0x2c')]=_[_0x480b('0x2d')](_0x59f63a[_0x480b('0x27')],_0x59f63a[_0x480b('0x28')]);_0x57258e[_0x480b('0x2e')]=_['intersection'](_0x59f63a['model'],qs[_0x480b('0x2f')](_0x1a44f1[_0x480b('0x28')]['fields']));_0x57258e[_0x480b('0x2e')]=_0x57258e['attributes'][_0x480b('0x30')]?_0x57258e['attributes']:_0x59f63a[_0x480b('0x27')];if(!_0x1a44f1[_0x480b('0x28')][_0x480b('0x31')](_0x480b('0x32'))){_0x57258e[_0x480b('0x18')]=qs['limit'](_0x1a44f1[_0x480b('0x28')][_0x480b('0x18')]);_0x57258e[_0x480b('0x33')]=qs['offset'](_0x1a44f1['query'][_0x480b('0x33')]);}_0x57258e['order']=qs[_0x480b('0x34')](_0x1a44f1[_0x480b('0x28')][_0x480b('0x34')]);_0x57258e['where']=qs[_0x480b('0x2c')](_['pick'](_0x1a44f1[_0x480b('0x28')],_0x59f63a[_0x480b('0x2c')]));if(_0x5b62ba['dateStart']){if(_0x5b62ba['dateEnd']){_0x5b62ba[_0x480b('0x2a')]=moment(_0x5b62ba[_0x480b('0x2a')])[_0x480b('0x35')](0x1,'day');}else{_0x5b62ba['dateEnd']=moment(_0x5b62ba['dateStart'])[_0x480b('0x35')](0x1,'day');}_[_0x480b('0x36')](_0x57258e[_0x480b('0x37')],{'createdAt':{'$gte':_0x5b62ba[_0x480b('0x29')],'$lte':_0x5b62ba[_0x480b('0x2a')]}});}if(_0x1a44f1[_0x480b('0x28')][_0x480b('0x38')]){_0x57258e['where']=_[_0x480b('0x36')](_0x57258e[_0x480b('0x37')],{'$or':_['map'](_0x147f15,function(_0x5c2218){if(_0x5c2218[_0x480b('0x39')]['key']!==_0x480b('0x3a')){var _0xce1ad9={};_0xce1ad9[_0x5c2218[_0x480b('0x3b')]]={'$like':'%'+_0x1a44f1[_0x480b('0x28')][_0x480b('0x38')]+'%'};return _0xce1ad9;}})});}_0x57258e=_[_0x480b('0x36')]({},_0x57258e,_0x1a44f1[_0x480b('0x3c')]);var _0x77245e={'where':_0x57258e[_0x480b('0x37')]};return db['Pause']['count'](_0x77245e)[_0x480b('0x1e')](function(_0x271418){_0x104d63[_0x480b('0x17')]=_0x271418;if(_0x1a44f1[_0x480b('0x28')][_0x480b('0x3d')]){_0x57258e[_0x480b('0x3e')]=[{'all':!![]}];}return db[_0x480b('0x3f')][_0x480b('0x40')](_0x57258e);})[_0x480b('0x1e')](function(_0x538e6a){_0x104d63[_0x480b('0x41')]=_0x538e6a;return _0x104d63;})[_0x480b('0x1e')](respondWithFilteredResult(_0x4269b4,_0x57258e))[_0x480b('0x42')](handleError(_0x4269b4,null));};exports['show']=function(_0x10067f,_0x406065){var _0x1105fd={'raw':!![],'where':{'id':_0x10067f['params']['id']}},_0x36e7f3={};_0x36e7f3['model']=_[_0x480b('0x2b')](db['Pause'][_0x480b('0x26')]);_0x36e7f3['query']=_[_0x480b('0x2b')](_0x10067f[_0x480b('0x28')]);_0x36e7f3[_0x480b('0x2c')]=_[_0x480b('0x2d')](_0x36e7f3[_0x480b('0x27')],_0x36e7f3['query']);_0x1105fd[_0x480b('0x2e')]=_[_0x480b('0x2d')](_0x36e7f3[_0x480b('0x27')],qs[_0x480b('0x2f')](_0x10067f[_0x480b('0x28')]['fields']));_0x1105fd[_0x480b('0x2e')]=_0x1105fd['attributes'][_0x480b('0x30')]?_0x1105fd[_0x480b('0x2e')]:_0x36e7f3[_0x480b('0x27')];if(_0x10067f[_0x480b('0x28')][_0x480b('0x3d')]){_0x1105fd['include']=[{'all':!![]}];}_0x1105fd=_['merge']({},_0x1105fd,_0x10067f[_0x480b('0x3c')]);return db[_0x480b('0x3f')][_0x480b('0x43')](_0x1105fd)[_0x480b('0x1e')](handleEntityNotFound(_0x406065,null))[_0x480b('0x1e')](respondWithResult(_0x406065,null))[_0x480b('0x42')](handleError(_0x406065,null));};exports[_0x480b('0x44')]=function(_0x15874b,_0x310ac2){return db[_0x480b('0x3f')][_0x480b('0x44')](_0x15874b[_0x480b('0x45')],{})['then'](function(_0x2ff517){var _0x4606d6=_0x15874b[_0x480b('0x46')][_0x480b('0x20')]({'plain':!![]});if(!_0x4606d6)throw new Error(_0x480b('0x47'));if(_0x4606d6['role']===_0x480b('0x46')){var _0x28f373=_0x2ff517[_0x480b('0x20')]({'plain':!![]});var _0x10c124=_0x480b('0x21');return db[_0x480b('0x48')][_0x480b('0x43')]({'where':{'name':_0x10c124,'userProfileId':_0x4606d6[_0x480b('0x49')]},'raw':!![]})[_0x480b('0x1e')](function(_0x335b53){if(_0x335b53&&_0x335b53[_0x480b('0x4a')]===0x0){return db[_0x480b('0x4b')][_0x480b('0x44')]({'name':_0x28f373[_0x480b('0x23')],'resourceId':_0x28f373['id'],'type':_0x335b53[_0x480b('0x23')],'sectionId':_0x335b53['id']},{})[_0x480b('0x1e')](function(){return _0x2ff517;});}else{return _0x2ff517;}})[_0x480b('0x42')](function(_0x2115c3){logger[_0x480b('0x22')](_0x480b('0x4c'),_0x2115c3);throw _0x2115c3;});}return _0x2ff517;})['then'](respondWithResult(_0x310ac2,0xc9))[_0x480b('0x42')](handleError(_0x310ac2,null));};exports[_0x480b('0x1d')]=function(_0x75e3fd,_0x176659){if(_0x75e3fd[_0x480b('0x45')]['id']){delete _0x75e3fd[_0x480b('0x45')]['id'];}return db[_0x480b('0x3f')][_0x480b('0x43')]({'where':{'id':_0x75e3fd[_0x480b('0x4d')]['id']}})[_0x480b('0x1e')](handleEntityNotFound(_0x176659,null))[_0x480b('0x1e')](saveUpdates(_0x75e3fd[_0x480b('0x45')],null))['then'](respondWithResult(_0x176659,null))[_0x480b('0x42')](handleError(_0x176659,null));};exports[_0x480b('0x1f')]=function(_0x21c45f,_0x2b0036){return db[_0x480b('0x3f')]['find']({'where':{'id':_0x21c45f[_0x480b('0x4d')]['id']}})[_0x480b('0x1e')](handleEntityNotFound(_0x2b0036,null))['then'](removeEntity(_0x2b0036,null))[_0x480b('0x42')](handleError(_0x2b0036,null));};
\ No newline at end of file
index f2d9110..c1e3f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe193=['Pause','tools_pauses','util','api','moment','request-promise','./pause.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe193,0x18e));var _0x3e19=function(_0x1ece4e,_0xc9eb8f){_0x1ece4e=_0x1ece4e-0x0;var _0x5c2803=_0xe193[_0x1ece4e];return _0x5c2803;};'use strict';var _=require('lodash');var util=require(_0x3e19('0x0'));var logger=require('../../config/logger')(_0x3e19('0x1'));var moment=require(_0x3e19('0x2'));var BPromise=require('bluebird');var rp=require(_0x3e19('0x3'));var attributes=require(_0x3e19('0x4'));module[_0x3e19('0x5')]=function(_0x2e1c03,_0x2e77db){return _0x2e1c03[_0x3e19('0x6')](_0x3e19('0x7'),attributes,{'tableName':_0x3e19('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3f09=['request-promise','./pause.attributes','exports','Pause','util','bluebird'];(function(_0x138975,_0x319d77){var _0x2ff39a=function(_0x2a1a21){while(--_0x2a1a21){_0x138975['push'](_0x138975['shift']());}};_0x2ff39a(++_0x319d77);}(_0x3f09,0x82));var _0x93f0=function(_0x455e56,_0x52a5e9){_0x455e56=_0x455e56-0x0;var _0x2ca900=_0x3f09[_0x455e56];return _0x2ca900;};'use strict';var _=require('lodash');var util=require(_0x93f0('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x93f0('0x1'));var rp=require(_0x93f0('0x2'));var attributes=require(_0x93f0('0x3'));module[_0x93f0('0x4')]=function(_0x1f309a,_0x1c1232){return _0x1f309a['define'](_0x93f0('0x5'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 22ebc09..c3f3556 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe85b=['../../config/logger','rpc','../../config/environment','client','request','info','Pause,\x20%s,\x20%s','request\x20sent','debug','Pause,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','find','options','attributes','include','map','model','then','ShowPause','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xe85b,0xa3));var _0xbe85=function(_0x4ec805,_0x3b8515){_0x4ec805=_0x4ec805-0x0;var _0x386805=_0xe85b[_0x4ec805];return _0x386805;};'use strict';var _=require(_0xbe85('0x0'));var util=require('util');var moment=require(_0xbe85('0x1'));var BPromise=require(_0xbe85('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe85('0x3'));var db=require(_0xbe85('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbe85('0x5'))(_0xbe85('0x6'));var config=require(_0xbe85('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xbe85('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x22bbe9,_0x528db3,_0x11a52e){return new BPromise(function(_0x512528,_0x47735a){return client[_0xbe85('0x9')](_0x22bbe9,_0x11a52e)['then'](function(_0x4bc936){logger[_0xbe85('0xa')](_0xbe85('0xb'),_0x528db3,_0xbe85('0xc'));logger[_0xbe85('0xd')](_0xbe85('0xe'),_0x528db3,'request\x20sent',JSON[_0xbe85('0xf')](_0x4bc936));if(_0x4bc936[_0xbe85('0x10')]){if(_0x4bc936[_0xbe85('0x10')][_0xbe85('0x11')]===0x1f4){logger[_0xbe85('0x10')](_0xbe85('0xb'),_0x528db3,_0x4bc936[_0xbe85('0x10')][_0xbe85('0x12')]);return _0x47735a(_0x4bc936[_0xbe85('0x10')][_0xbe85('0x12')]);}logger['error'](_0xbe85('0xb'),_0x528db3,_0x4bc936['error'][_0xbe85('0x12')]);return _0x512528(_0x4bc936['error']['message']);}else{logger[_0xbe85('0xa')](_0xbe85('0xb'),_0x528db3,'request\x20sent');_0x512528(_0x4bc936['result']['message']);}})[_0xbe85('0x13')](function(_0x41399e){logger[_0xbe85('0x10')](_0xbe85('0xb'),_0x528db3,_0x41399e);_0x47735a(_0x41399e);});});}exports['ShowPause']=function(_0x2207d1){var _0x560683=this;return new Promise(function(_0x4a56ca,_0x5c5595){return db['Pause'][_0xbe85('0x14')]({'raw':_0x2207d1[_0xbe85('0x15')]?_0x2207d1['options']['raw']===undefined?!![]:![]:!![],'where':_0x2207d1[_0xbe85('0x15')]?_0x2207d1[_0xbe85('0x15')]['where']||null:null,'attributes':_0x2207d1[_0xbe85('0x15')]?_0x2207d1[_0xbe85('0x15')][_0xbe85('0x16')]||null:null,'include':_0x2207d1[_0xbe85('0x15')]?_0x2207d1['options'][_0xbe85('0x17')]?_[_0xbe85('0x18')](_0x2207d1[_0xbe85('0x15')][_0xbe85('0x17')],function(_0x75762e){return{'model':db[_0x75762e[_0xbe85('0x19')]],'as':_0x75762e['as'],'attributes':_0x75762e[_0xbe85('0x16')],'include':_0x75762e[_0xbe85('0x17')]?_[_0xbe85('0x18')](_0x75762e[_0xbe85('0x17')],function(_0x4d58c0){return{'model':db[_0x4d58c0['model']],'as':_0x4d58c0['as'],'attributes':_0x4d58c0[_0xbe85('0x16')],'include':_0x4d58c0[_0xbe85('0x17')]?_[_0xbe85('0x18')](_0x4d58c0[_0xbe85('0x17')],function(_0x1fd893){return{'model':db[_0x1fd893[_0xbe85('0x19')]],'as':_0x1fd893['as'],'attributes':_0x1fd893[_0xbe85('0x16')]};}):[]};}):[]};}):[]:[]})[_0xbe85('0x1a')](function(_0x26a76f){logger['info']('ShowPause',_0x2207d1);logger[_0xbe85('0xd')](_0xbe85('0x1b'),_0x2207d1,JSON[_0xbe85('0xf')](_0x26a76f));_0x4a56ca(_0x26a76f);})[_0xbe85('0x13')](function(_0x4f99be){logger[_0xbe85('0x10')]('ShowPause',_0x4f99be[_0xbe85('0x12')],_0x2207d1);_0x5c5595(_0x560683[_0xbe85('0x10')](0x1f4,_0x4f99be[_0xbe85('0x12')]));});});};
\ No newline at end of file
+var _0x2367=['request','then','info','Pause,\x20%s,\x20%s','request\x20sent','debug','Pause,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowPause','Pause','options','raw','where','include','map','attributes','model','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x154e1a,_0x14041a){var _0x5bb8a1=function(_0x2f0f1d){while(--_0x2f0f1d){_0x154e1a['push'](_0x154e1a['shift']());}};_0x5bb8a1(++_0x14041a);}(_0x2367,0x7f));var _0x7236=function(_0x4abd7d,_0x12415a){_0x4abd7d=_0x4abd7d-0x0;var _0x56004a=_0x2367[_0x4abd7d];return _0x56004a;};'use strict';var _=require(_0x7236('0x0'));var util=require(_0x7236('0x1'));var moment=require(_0x7236('0x2'));var BPromise=require('bluebird');var rs=require(_0x7236('0x3'));var fs=require('fs');var Redis=require(_0x7236('0x4'));var db=require(_0x7236('0x5'))['db'];var utils=require(_0x7236('0x6'));var logger=require(_0x7236('0x7'))(_0x7236('0x8'));var config=require(_0x7236('0x9'));var jayson=require(_0x7236('0xa'));var client=jayson[_0x7236('0xb')][_0x7236('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x49dd30,_0xe5f0b3,_0x8322ed){return new BPromise(function(_0x2cfc6a,_0x171b46){return client[_0x7236('0xd')](_0x49dd30,_0x8322ed)[_0x7236('0xe')](function(_0x5a9de3){logger[_0x7236('0xf')](_0x7236('0x10'),_0xe5f0b3,_0x7236('0x11'));logger[_0x7236('0x12')](_0x7236('0x13'),_0xe5f0b3,'request\x20sent',JSON[_0x7236('0x14')](_0x5a9de3));if(_0x5a9de3['error']){if(_0x5a9de3[_0x7236('0x15')][_0x7236('0x16')]===0x1f4){logger[_0x7236('0x15')](_0x7236('0x10'),_0xe5f0b3,_0x5a9de3[_0x7236('0x15')]['message']);return _0x171b46(_0x5a9de3[_0x7236('0x15')][_0x7236('0x17')]);}logger[_0x7236('0x15')](_0x7236('0x10'),_0xe5f0b3,_0x5a9de3[_0x7236('0x15')]['message']);return _0x2cfc6a(_0x5a9de3[_0x7236('0x15')][_0x7236('0x17')]);}else{logger[_0x7236('0xf')](_0x7236('0x10'),_0xe5f0b3,_0x7236('0x11'));_0x2cfc6a(_0x5a9de3[_0x7236('0x18')][_0x7236('0x17')]);}})[_0x7236('0x19')](function(_0x1b8d11){logger[_0x7236('0x15')](_0x7236('0x10'),_0xe5f0b3,_0x1b8d11);_0x171b46(_0x1b8d11);});});}exports[_0x7236('0x1a')]=function(_0x57ff45){var _0xc728f3=this;return new Promise(function(_0x2b1c63,_0xbb2e67){return db[_0x7236('0x1b')]['find']({'raw':_0x57ff45[_0x7236('0x1c')]?_0x57ff45[_0x7236('0x1c')][_0x7236('0x1d')]===undefined?!![]:![]:!![],'where':_0x57ff45['options']?_0x57ff45[_0x7236('0x1c')][_0x7236('0x1e')]||null:null,'attributes':_0x57ff45[_0x7236('0x1c')]?_0x57ff45['options']['attributes']||null:null,'include':_0x57ff45[_0x7236('0x1c')]?_0x57ff45[_0x7236('0x1c')][_0x7236('0x1f')]?_[_0x7236('0x20')](_0x57ff45[_0x7236('0x1c')]['include'],function(_0x141452){return{'model':db[_0x141452['model']],'as':_0x141452['as'],'attributes':_0x141452[_0x7236('0x21')],'include':_0x141452['include']?_[_0x7236('0x20')](_0x141452[_0x7236('0x1f')],function(_0x451edf){return{'model':db[_0x451edf[_0x7236('0x22')]],'as':_0x451edf['as'],'attributes':_0x451edf[_0x7236('0x21')],'include':_0x451edf[_0x7236('0x1f')]?_[_0x7236('0x20')](_0x451edf['include'],function(_0xb593fd){return{'model':db[_0xb593fd['model']],'as':_0xb593fd['as'],'attributes':_0xb593fd[_0x7236('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x588066){logger['info'](_0x7236('0x1a'),_0x57ff45);logger[_0x7236('0x12')]('ShowPause',_0x57ff45,JSON['stringify'](_0x588066));_0x2b1c63(_0x588066);})[_0x7236('0x19')](function(_0x3b8ebe){logger[_0x7236('0x15')](_0x7236('0x1a'),_0x3b8ebe[_0x7236('0x17')],_0x57ff45);_0xbb2e67(_0xc728f3['error'](0x1f4,_0x3b8ebe['message']));});});};
\ No newline at end of file
index 7bd285d..fcd90b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0650=['isAuthenticated','index','/webhook','/:id','show','/:id/download','download','diskStorage','join','server/files/plugins','originalname','replace','basename','post','single','file','webhookPost','put','update','delete','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0x0650,0xb0));var _0x0065=function(_0x4091ce,_0x509783){_0x4091ce=_0x4091ce-0x0;var _0x2d299f=_0x0650[_0x4091ce];return _0x2d299f;};'use strict';var multer=require('multer');var util=require(_0x0065('0x0'));var path=require(_0x0065('0x1'));var timeout=require(_0x0065('0x2'));var express=require(_0x0065('0x3'));var router=express[_0x0065('0x4')]();var auth=require(_0x0065('0x5'));var interaction=require(_0x0065('0x6'));var config=require(_0x0065('0x7'));var controller=require(_0x0065('0x8'));router[_0x0065('0x9')]('/',auth[_0x0065('0xa')](),controller[_0x0065('0xb')]);router[_0x0065('0x9')](_0x0065('0xc'),controller['webhookGet']);router[_0x0065('0x9')](_0x0065('0xd'),auth[_0x0065('0xa')](),controller[_0x0065('0xe')]);router[_0x0065('0x9')](_0x0065('0xf'),auth[_0x0065('0xa')](),controller[_0x0065('0x10')]);var upload=multer({'storage':multer[_0x0065('0x11')]({'destination':function(_0x48d867,_0xa9cf9d,_0x44c919){_0x44c919(null,path[_0x0065('0x12')](config['root'],_0x0065('0x13')));},'filename':function(_0xb7d3f4,_0xdda70e,_0xd22a79){_0xdda70e[_0x0065('0x14')]=_0xdda70e['originalname'][_0x0065('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xd22a79(null,util['format']('%s-%s%s',path[_0x0065('0x16')](_0xdda70e['originalname'],path['extname'](_0xdda70e[_0x0065('0x14')])),Date['now'](),path['extname'](_0xdda70e[_0x0065('0x14')])));}})});router[_0x0065('0x17')]('/',upload[_0x0065('0x18')](_0x0065('0x19')),controller['upload']);router[_0x0065('0x17')](_0x0065('0xc'),controller[_0x0065('0x1a')]);router[_0x0065('0x1b')](_0x0065('0xd'),auth[_0x0065('0xa')](),controller[_0x0065('0x1c')]);router[_0x0065('0x1d')](_0x0065('0xd'),auth['isAuthenticated'](),controller[_0x0065('0x1d')]);module[_0x0065('0x1e')]=router;
\ No newline at end of file
+var _0x29ea=['isAuthenticated','update','delete','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./plugin.controller','get','index','/webhook','webhookGet','/:id','download','diskStorage','join','server/files/plugins','originalname','replace','format','%s-%s%s','basename','extname','now','post','file','upload','webhookPost','put'];(function(_0x43a44d,_0xd04708){var _0x557796=function(_0x2e6924){while(--_0x2e6924){_0x43a44d['push'](_0x43a44d['shift']());}};_0x557796(++_0xd04708);}(_0x29ea,0x183));var _0xa29e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x29ea[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xa29e('0x0'));var util=require(_0xa29e('0x1'));var path=require('path');var timeout=require(_0xa29e('0x2'));var express=require(_0xa29e('0x3'));var router=express[_0xa29e('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0xa29e('0x5'));var config=require(_0xa29e('0x6'));var controller=require(_0xa29e('0x7'));router[_0xa29e('0x8')]('/',auth['isAuthenticated'](),controller[_0xa29e('0x9')]);router[_0xa29e('0x8')](_0xa29e('0xa'),controller[_0xa29e('0xb')]);router[_0xa29e('0x8')](_0xa29e('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xa29e('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0xa29e('0xd')]);var upload=multer({'storage':multer[_0xa29e('0xe')]({'destination':function(_0x402afe,_0x5a1c41,_0x2bd409){_0x2bd409(null,path[_0xa29e('0xf')](config['root'],_0xa29e('0x10')));},'filename':function(_0x66a9b5,_0x2a7faf,_0x447bbb){_0x2a7faf[_0xa29e('0x11')]=_0x2a7faf['originalname'][_0xa29e('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x447bbb(null,util[_0xa29e('0x13')](_0xa29e('0x14'),path[_0xa29e('0x15')](_0x2a7faf[_0xa29e('0x11')],path[_0xa29e('0x16')](_0x2a7faf['originalname'])),Date[_0xa29e('0x17')](),path[_0xa29e('0x16')](_0x2a7faf[_0xa29e('0x11')])));}})});router[_0xa29e('0x18')]('/',upload['single'](_0xa29e('0x19')),controller[_0xa29e('0x1a')]);router[_0xa29e('0x18')](_0xa29e('0xa'),controller[_0xa29e('0x1b')]);router[_0xa29e('0x1c')](_0xa29e('0xc'),auth[_0xa29e('0x1d')](),controller[_0xa29e('0x1e')]);router[_0xa29e('0x1f')](_0xa29e('0xc'),auth['isAuthenticated'](),controller[_0xa29e('0x1f')]);module['exports']=router;
\ No newline at end of file
index fa69611..b9de8b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc9=['html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','agentOnly','never','always','sequelize','exports','STRING','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0fc9,0x104));var _0x90fc=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x0fc9[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x90fc('0x0'));module[_0x90fc('0x1')]={'name':{'type':Sequelize[_0x90fc('0x2')]},'type':{'type':Sequelize[_0x90fc('0x3')](_0x90fc('0x4'),_0x90fc('0x5'))},'description':{'type':Sequelize[_0x90fc('0x6')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize['STRING'],'comment':_0x90fc('0x7')},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x90fc('0x8')},'sidebar':{'type':Sequelize[_0x90fc('0x3')]('adminOnly',_0x90fc('0x9'),'always',_0x90fc('0xa')),'defaultValue':_0x90fc('0xb'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0x90fc('0x2')]},'adminUrl':{'type':Sequelize[_0x90fc('0x2')]},'agentUrl':{'type':Sequelize[_0x90fc('0x2')]},'scriptName':{'type':Sequelize[_0x90fc('0x2')]},'scriptPath':{'type':Sequelize[_0x90fc('0x2')]}};
\ No newline at end of file
+var _0x107c=['never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','adminOnly','agentOnly','always'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x107c,0xf9));var _0xc107=function(_0x21ee11,_0x172225){_0x21ee11=_0x21ee11-0x0;var _0xb4c64e=_0x107c[_0x21ee11];return _0xb4c64e;};'use strict';var Sequelize=require(_0xc107('0x0'));module[_0xc107('0x1')]={'name':{'type':Sequelize[_0xc107('0x2')]},'type':{'type':Sequelize[_0xc107('0x3')](_0xc107('0x4'),'script')},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0xc107('0x5')]},'path':{'type':Sequelize[_0xc107('0x2')],'comment':_0xc107('0x6')},'active':{'type':Sequelize[_0xc107('0x7')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize['ENUM'](_0xc107('0x8'),_0xc107('0x9'),_0xc107('0xa'),_0xc107('0xb')),'defaultValue':_0xc107('0xa'),'comment':_0xc107('0xc')},'icon':{'type':Sequelize[_0xc107('0x2')]},'adminUrl':{'type':Sequelize['STRING']},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0xc107('0x2')]},'scriptPath':{'type':Sequelize[_0xc107('0x2')]}};
\ No newline at end of file
index cf2ead1..40a256d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b8=['%s%s','headers','content-length','endsWith','statusCode','webhookPost','http://localhost:','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','extract-zip','archiver','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','json','offset','limit','set','Content-Range','apply','reject','update','then','destroy','get','Plugins','UserProfileResource','error','stack','name','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','length','hasOwnProperty','order','sort','where','pick','add','day','merge','filter','map','type','key','VIRTUAL','Plugin','count','includeAll','include','findAll','rows','catch','params','fields','options','download','find','root','server/files/plugins','format','createWriteStream','zip','warning','code','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','join','dirname','node_modules/**/*','basename','attachments/**/*','finalize','close','existsSync','Sequelize','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','Temporary\x20file\x20removed','upload','filename','extname','file','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','Plugin\x20manifest\x20missing','readFileSync','manifest.json','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','undefined','Invalid\x20manifest:\x20parameters\x20missing','html','parameters','views','Invalid\x20manifest:\x20views\x20missing','admin','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','sidebar','always','icon','icon-apps','version','test','plugins','agent','Warning:\x20agent\x20view\x20not\x20specified','scriptName','create','body','role','userProfileId','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','encoding','method'];(function(_0x46b741,_0x3f1149){var _0x32e42a=function(_0xfd7ceb){while(--_0xfd7ceb){_0x46b741['push'](_0x46b741['shift']());}};_0x32e42a(++_0x3f1149);}(_0xa4b8,0x163));var _0x8a4b=function(_0xe20e96,_0x4125ab){_0xe20e96=_0xe20e96-0x0;var _0x399a78=_0xa4b8[_0xe20e96];return _0x399a78;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x8a4b('0x0'));var rimraf=require(_0x8a4b('0x1'));var zipdir=require(_0x8a4b('0x2'));var jsonpatch=require(_0x8a4b('0x3'));var rp=require(_0x8a4b('0x4'));var moment=require(_0x8a4b('0x5'));var BPromise=require(_0x8a4b('0x6'));var Mustache=require(_0x8a4b('0x7'));var util=require(_0x8a4b('0x8'));var path=require(_0x8a4b('0x9'));var sox=require(_0x8a4b('0xa'));var csv=require(_0x8a4b('0xb'));var ejs=require(_0x8a4b('0xc'));var fs=require('fs');var _=require(_0x8a4b('0xd'));var squel=require(_0x8a4b('0xe'));var crypto=require(_0x8a4b('0xf'));var jsforce=require(_0x8a4b('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8a4b('0x11'));var Redis=require(_0x8a4b('0x12'));var extract=require(_0x8a4b('0x13'));var rimraf=require(_0x8a4b('0x1'));var archiver=require(_0x8a4b('0x14'));var qs=require('../../components/parsers/qs');var logger=require(_0x8a4b('0x15'))(_0x8a4b('0x16'));var utils=require('../../config/utils');var config=require(_0x8a4b('0x17'));var db=require('../../mysqldb')['db'];config[_0x8a4b('0x18')]=_[_0x8a4b('0x19')](config[_0x8a4b('0x18')],{'host':_0x8a4b('0x1a'),'port':0x18eb});var socket=require(_0x8a4b('0x1b'))(new Redis(config[_0x8a4b('0x18')]));require(_0x8a4b('0x1c'))[_0x8a4b('0x1d')](socket);function respondWithStatusCode(_0x331530,_0x25d7d4){_0x25d7d4=_0x25d7d4||0xcc;return function(_0x18cf5f){if(_0x18cf5f){return _0x331530[_0x8a4b('0x1e')](_0x25d7d4);}return _0x331530[_0x8a4b('0x1f')](_0x25d7d4)[_0x8a4b('0x20')]();};}function respondWithResult(_0xe7d1c0,_0x24fc5b){_0x24fc5b=_0x24fc5b||0xc8;return function(_0x8812dc){if(_0x8812dc){return _0xe7d1c0[_0x8a4b('0x1f')](_0x24fc5b)[_0x8a4b('0x21')](_0x8812dc);}};}function respondWithFilteredResult(_0x4389ee,_0x4577f8){return function(_0x754744){if(_0x754744){var _0xc12054=_0x754744['count'],_0x2cf39d=_0x4577f8[_0x8a4b('0x22')],_0x351d09=_0x4577f8['offset']+_0x4577f8[_0x8a4b('0x23')],_0x5b02a9;if(_0x351d09>=_0xc12054){_0x351d09=_0xc12054;_0x5b02a9=0xc8;}else{_0x5b02a9=0xce;}_0x4389ee[_0x8a4b('0x1f')](_0x5b02a9);return _0x4389ee[_0x8a4b('0x24')](_0x8a4b('0x25'),_0x2cf39d+'-'+_0x351d09+'/'+_0xc12054)[_0x8a4b('0x21')](_0x754744);}return null;};}function patchUpdates(_0x11ee39){return function(_0x2b1af7){try{jsonpatch[_0x8a4b('0x26')](_0x2b1af7,_0x11ee39,!![]);}catch(_0x2916d4){return BPromise[_0x8a4b('0x27')](_0x2916d4);}return _0x2b1af7['save']();};}function saveUpdates(_0xef73cd,_0x2d7a0d){return function(_0x46a17f){if(_0x46a17f){return _0x46a17f[_0x8a4b('0x28')](_0xef73cd)[_0x8a4b('0x29')](function(_0x4466c9){return _0x4466c9;});}return null;};}function removeEntity(_0x1ccbb6,_0xde2531){return function(_0x3b16b4){if(_0x3b16b4){return _0x3b16b4[_0x8a4b('0x2a')]()['then'](function(){var _0x4515f7=_0x3b16b4[_0x8a4b('0x2b')]({'plain':!![]});var _0x3398ae=_0x8a4b('0x2c');return db[_0x8a4b('0x2d')][_0x8a4b('0x2a')]({'where':{'type':_0x3398ae,'resourceId':_0x4515f7['id']}})[_0x8a4b('0x29')](function(){return _0x3b16b4;});})['then'](function(){_0x1ccbb6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f7d4d,_0x2056ac){return function(_0xa2c6b6){if(!_0xa2c6b6){_0x1f7d4d[_0x8a4b('0x1e')](0x194);}return _0xa2c6b6;};}function handleError(_0x316338,_0x46ab3a){_0x46ab3a=_0x46ab3a||0x1f4;return function(_0x57db41){logger[_0x8a4b('0x2e')](_0x57db41[_0x8a4b('0x2f')]);if(_0x57db41[_0x8a4b('0x30')]){delete _0x57db41[_0x8a4b('0x30')];}_0x316338[_0x8a4b('0x1f')](_0x46ab3a)['send'](_0x57db41);};}exports['index']=function(_0x4948cb,_0xb52d60){var _0xc9fead={},_0x2cb816={},_0x3fe7f9={'count':0x0,'rows':[]};var _0x5b9164=db['Plugin'][_0x8a4b('0x31')];_0x2cb816['model']=_[_0x8a4b('0x32')](_0x5b9164);var _0xa6f580={'dateStart':_0x4948cb[_0x8a4b('0x33')][_0x8a4b('0x34')],'dateEnd':_0x4948cb[_0x8a4b('0x33')][_0x8a4b('0x35')]};delete _0x4948cb[_0x8a4b('0x33')]['dateStart'];delete _0x4948cb[_0x8a4b('0x33')][_0x8a4b('0x35')];_0x2cb816[_0x8a4b('0x33')]=_[_0x8a4b('0x32')](_0x4948cb[_0x8a4b('0x33')]);_0x2cb816[_0x8a4b('0x36')]=_[_0x8a4b('0x37')](_0x2cb816['model'],_0x2cb816[_0x8a4b('0x33')]);_0xc9fead['attributes']=_['intersection'](_0x2cb816[_0x8a4b('0x38')],qs['fields'](_0x4948cb['query']['fields']));_0xc9fead[_0x8a4b('0x39')]=_0xc9fead['attributes'][_0x8a4b('0x3a')]?_0xc9fead[_0x8a4b('0x39')]:_0x2cb816[_0x8a4b('0x38')];if(!_0x4948cb['query'][_0x8a4b('0x3b')]('nolimit')){_0xc9fead[_0x8a4b('0x23')]=qs[_0x8a4b('0x23')](_0x4948cb['query'][_0x8a4b('0x23')]);_0xc9fead[_0x8a4b('0x22')]=qs[_0x8a4b('0x22')](_0x4948cb[_0x8a4b('0x33')]['offset']);}_0xc9fead[_0x8a4b('0x3c')]=qs[_0x8a4b('0x3d')](_0x4948cb[_0x8a4b('0x33')][_0x8a4b('0x3d')]);_0xc9fead[_0x8a4b('0x3e')]=qs[_0x8a4b('0x36')](_[_0x8a4b('0x3f')](_0x4948cb[_0x8a4b('0x33')],_0x2cb816[_0x8a4b('0x36')]));if(_0xa6f580['dateStart']){if(_0xa6f580[_0x8a4b('0x35')]){_0xa6f580['dateEnd']=moment(_0xa6f580[_0x8a4b('0x35')])[_0x8a4b('0x40')](0x1,_0x8a4b('0x41'));}else{_0xa6f580[_0x8a4b('0x35')]=moment(_0xa6f580[_0x8a4b('0x34')])[_0x8a4b('0x40')](0x1,_0x8a4b('0x41'));}_[_0x8a4b('0x42')](_0xc9fead['where'],{'createdAt':{'$gte':_0xa6f580['dateStart'],'$lte':_0xa6f580['dateEnd']}});}if(_0x4948cb[_0x8a4b('0x33')][_0x8a4b('0x43')]){_0xc9fead[_0x8a4b('0x3e')]=_[_0x8a4b('0x42')](_0xc9fead[_0x8a4b('0x3e')],{'$or':_[_0x8a4b('0x44')](_0x5b9164,function(_0x26b36a){if(_0x26b36a[_0x8a4b('0x45')][_0x8a4b('0x46')]!==_0x8a4b('0x47')){var _0x15b92d={};_0x15b92d[_0x26b36a['field']]={'$like':'%'+_0x4948cb[_0x8a4b('0x33')][_0x8a4b('0x43')]+'%'};return _0x15b92d;}})});}_0xc9fead=_[_0x8a4b('0x42')]({},_0xc9fead,_0x4948cb['options']);var _0x4ca994={'where':_0xc9fead['where']};return db[_0x8a4b('0x48')][_0x8a4b('0x49')](_0x4ca994)[_0x8a4b('0x29')](function(_0x3e3935){_0x3fe7f9[_0x8a4b('0x49')]=_0x3e3935;if(_0x4948cb[_0x8a4b('0x33')][_0x8a4b('0x4a')]){_0xc9fead[_0x8a4b('0x4b')]=[{'all':!![]}];}return db[_0x8a4b('0x48')][_0x8a4b('0x4c')](_0xc9fead);})[_0x8a4b('0x29')](function(_0x22d201){_0x3fe7f9[_0x8a4b('0x4d')]=_0x22d201;return _0x3fe7f9;})['then'](respondWithFilteredResult(_0xb52d60,_0xc9fead))[_0x8a4b('0x4e')](handleError(_0xb52d60,null));};exports['show']=function(_0xaf2976,_0x3afc4a){var _0x4ff980={'raw':!![],'where':{'id':_0xaf2976[_0x8a4b('0x4f')]['id']}},_0x16f5cb={};_0x16f5cb[_0x8a4b('0x38')]=_[_0x8a4b('0x32')](db[_0x8a4b('0x48')][_0x8a4b('0x31')]);_0x16f5cb[_0x8a4b('0x33')]=_[_0x8a4b('0x32')](_0xaf2976[_0x8a4b('0x33')]);_0x16f5cb[_0x8a4b('0x36')]=_[_0x8a4b('0x37')](_0x16f5cb['model'],_0x16f5cb[_0x8a4b('0x33')]);_0x4ff980[_0x8a4b('0x39')]=_[_0x8a4b('0x37')](_0x16f5cb[_0x8a4b('0x38')],qs[_0x8a4b('0x50')](_0xaf2976[_0x8a4b('0x33')][_0x8a4b('0x50')]));_0x4ff980[_0x8a4b('0x39')]=_0x4ff980[_0x8a4b('0x39')][_0x8a4b('0x3a')]?_0x4ff980['attributes']:_0x16f5cb['model'];if(_0xaf2976['query'][_0x8a4b('0x4a')]){_0x4ff980[_0x8a4b('0x4b')]=[{'all':!![]}];}_0x4ff980=_[_0x8a4b('0x42')]({},_0x4ff980,_0xaf2976[_0x8a4b('0x51')]);return db[_0x8a4b('0x48')]['find'](_0x4ff980)['then'](handleEntityNotFound(_0x3afc4a,null))['then'](respondWithResult(_0x3afc4a,null))[_0x8a4b('0x4e')](handleError(_0x3afc4a,null));};exports[_0x8a4b('0x52')]=function(_0x569800,_0x421c71,_0x8a43b3){return db[_0x8a4b('0x48')][_0x8a4b('0x53')]({'where':{'id':_0x569800[_0x8a4b('0x4f')]['id']},'attributes':[_0x8a4b('0x30'),_0x8a4b('0x9')],'raw':!![]})['then'](handleEntityNotFound(_0x421c71,null))[_0x8a4b('0x29')](function(_0x54eff6){if(_0x54eff6){var _0x4330d7=path['join'](config[_0x8a4b('0x54')],_0x8a4b('0x55'),util[_0x8a4b('0x56')]('%s.zip',path['basename'](_0x54eff6[_0x8a4b('0x9')])));var _0x4d21d7=fs[_0x8a4b('0x57')](_0x4330d7);var _0x2ef524=archiver(_0x8a4b('0x58'),{'zlib':{'level':0x9}});_0x2ef524['on'](_0x8a4b('0x59'),function(_0x3ad6e2){if(_0x3ad6e2[_0x8a4b('0x5a')]===_0x8a4b('0x5b')){logger[_0x8a4b('0x2e')](_0x3ad6e2);}else{throw new db['Sequelize'][(_0x8a4b('0x5c'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x2ef524['on'](_0x8a4b('0x2e'),function(_0x1b53fe){throw new db['Sequelize'][(_0x8a4b('0x5c'))](_0x8a4b('0x5d'));});_0x2ef524[_0x8a4b('0x5e')](_0x4d21d7);_0x2ef524['glob']('**/*',{'cwd':path[_0x8a4b('0x5f')](config['root'],_0x8a4b('0x55'),path[_0x8a4b('0x60')](_0x54eff6[_0x8a4b('0x9')])),'ignore':[path[_0x8a4b('0x5f')](path['basename'](_0x54eff6[_0x8a4b('0x9')]),_0x8a4b('0x61')),path['join'](path[_0x8a4b('0x62')](_0x54eff6[_0x8a4b('0x9')]),_0x8a4b('0x63'))],'nodir':!![]})[_0x8a4b('0x64')]();_0x4d21d7['on'](_0x8a4b('0x65'),function(){if(!fs[_0x8a4b('0x66')](_0x4330d7)){throw new db[(_0x8a4b('0x67'))]['Error'](_0x8a4b('0x68'));}return _0x421c71['download'](_0x4330d7,util[_0x8a4b('0x56')](_0x8a4b('0x69'),path['basename'](_0x54eff6[_0x8a4b('0x9')])),function(_0x377d2b){if(_0x377d2b){throw new db[(_0x8a4b('0x67'))][(_0x8a4b('0x5c'))](_0x8a4b('0x6a'));}fs['unlinkSync'](_0x4330d7);logger[_0x8a4b('0x6b')](_0x8a4b('0x6c'));logger[_0x8a4b('0x6b')](_0x8a4b('0x6d'));});});}return null;})[_0x8a4b('0x4e')](handleError(_0x421c71,null));};exports[_0x8a4b('0x6e')]=function(_0x18fce0,_0x316bcf,_0x1cfbf4){var _0x11f47e=path[_0x8a4b('0x62')](_0x18fce0['file'][_0x8a4b('0x6f')],path[_0x8a4b('0x70')](_0x18fce0[_0x8a4b('0x71')][_0x8a4b('0x6f')]));var _0x53d81b=path['join'](config[_0x8a4b('0x54')],_0x8a4b('0x55'),_0x18fce0[_0x8a4b('0x71')][_0x8a4b('0x6f')]);var _0x3b6543=path['join'](config['root'],_0x8a4b('0x55'),_0x11f47e);logger[_0x8a4b('0x6b')](_0x8a4b('0x72'),_0x53d81b);logger[_0x8a4b('0x6b')]('Plugin\x20upload\x20destination:\x20%s',_0x3b6543);try{fs[_0x8a4b('0x73')](_0x53d81b,parseInt(_0x8a4b('0x74'),0x8));extract(_0x53d81b,{'dir':_0x3b6543},function(_0x55387f){if(_0x55387f){logger[_0x8a4b('0x2e')](_0x55387f);handleError(_0x55387f,!![]);};var _0x3b7d79=fs[_0x8a4b('0x75')](_0x3b6543);if(_0x3b7d79[_0x8a4b('0x3a')]>0x1){removeReferences(_0x53d81b,_0x3b6543);logger[_0x8a4b('0x2e')](_0x8a4b('0x76'));return _0x1cfbf4(new Error(_0x8a4b('0x76')));}var _0x55a02f=fs[_0x8a4b('0x77')](path[_0x8a4b('0x5f')](_0x3b6543,_0x3b7d79[0x0]));if(_0x55a02f[_0x8a4b('0x78')]()){removeReferences(_0x53d81b,_0x3b6543);logger[_0x8a4b('0x2e')](_0x8a4b('0x76'));return _0x1cfbf4(new Error(_0x8a4b('0x76')));}if(_0x55a02f[_0x8a4b('0x79')]()){var _0x2b1236=fs[_0x8a4b('0x75')](path['join'](_0x3b6543,_0x3b7d79[0x0]));if(_0x2b1236[_0x8a4b('0x3a')]===0x0){removeReferences(_0x53d81b,_0x3b6543);logger['error'](_0x8a4b('0x76'));return _0x1cfbf4(new Error(_0x8a4b('0x76')));}var _0x55fd36=_0x2b1236['some'](function(_0x5b5617){return _0x5b5617==='manifest.json';});if(!_0x55fd36){return _0x1cfbf4(new Error(_0x8a4b('0x7a')));}var _0x6ea7d6=fs[_0x8a4b('0x7b')](path[_0x8a4b('0x5f')](_0x3b6543,_0x3b7d79[0x0],_0x8a4b('0x7c')));var _0x52c3e7=JSON['parse'](_0x6ea7d6);if('undefined'==typeof _0x52c3e7[_0x8a4b('0x30')]){return _0x1cfbf4(new Error('Invalid\x20manifest:\x20name\x20missing'));}if('undefined'==typeof _0x52c3e7['type']){return _0x1cfbf4(new Error(_0x8a4b('0x7d')));}if('undefined'==typeof _0x52c3e7['version']){return _0x1cfbf4(new Error(_0x8a4b('0x7e')));}if(_0x8a4b('0x7f')==typeof _0x52c3e7['parameters']){return _0x1cfbf4(new Error(_0x8a4b('0x80')));}if(_0x52c3e7[_0x8a4b('0x45')]===_0x8a4b('0x81')){if(_0x8a4b('0x7f')==typeof _0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x83')]){return _0x1cfbf4(new Error(_0x8a4b('0x84')));}if(_0x8a4b('0x7f')==typeof _0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x83')][_0x8a4b('0x85')]&&_0x8a4b('0x7f')==typeof _0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x83')]['agent']){return _0x1cfbf4(new Error(_0x8a4b('0x86')));}}else if(_0x52c3e7[_0x8a4b('0x45')]==='script'){if(_0x8a4b('0x7f')==typeof _0x52c3e7[_0x8a4b('0x82')]['scriptName']){return _0x1cfbf4(new Error(_0x8a4b('0x87')));}if(_0x8a4b('0x7f')==typeof _0x52c3e7['parameters'][_0x8a4b('0x88')]){return _0x1cfbf4(new Error(_0x8a4b('0x89')));}}else{return _0x1cfbf4(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x2e6557=_0x52c3e7[_0x8a4b('0x30')];var _0x583112=_0x52c3e7['description'];var _0x5a0371=_0x52c3e7[_0x8a4b('0x45')];var _0x1274ee=_0x52c3e7[_0x8a4b('0x8a')]?_0x52c3e7['sidebar']:_0x8a4b('0x8b');var _0x59c4b2=_0x52c3e7[_0x8a4b('0x8c')]?_0x52c3e7[_0x8a4b('0x8c')]:_0x8a4b('0x8d');var _0x16940c='';var _0x4da51c='';var _0x6d6164='';var _0x34fea3='';var _0x1aaab7=_0x52c3e7[_0x8a4b('0x8e')];if(_0x5a0371===_0x8a4b('0x81')){if('undefined'!=typeof _0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x83')][_0x8a4b('0x85')]){var _0x16b0bd=_0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x83')][_0x8a4b('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x8a4b('0x8f')](_0x16b0bd)){_0x16940c=path[_0x8a4b('0x5f')](_0x8a4b('0x90'),_0x11f47e,_0x3b7d79[0x0],_0x16b0bd);}else{_0x16940c=_0x16b0bd;}}else{logger[_0x8a4b('0x6b')]('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x8a4b('0x7f')!=typeof _0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x83')]['agent']){var _0x50c5a1=_0x52c3e7[_0x8a4b('0x82')]['views'][_0x8a4b('0x91')];if(!/^(f|ht)tps?:\/\//i[_0x8a4b('0x8f')](_0x50c5a1)){_0x4da51c=path[_0x8a4b('0x5f')](_0x8a4b('0x90'),_0x11f47e,_0x3b7d79[0x0],_0x50c5a1);}else{_0x4da51c=_0x50c5a1;}}else{logger[_0x8a4b('0x6b')](_0x8a4b('0x92'));}}else if(_0x5a0371==='script'){_0x6d6164=_0x52c3e7['parameters'][_0x8a4b('0x93')];_0x34fea3=_0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x88')];if(_0x8a4b('0x7f')!=typeof _0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x83')]){if('undefined'!=typeof _0x52c3e7['parameters'][_0x8a4b('0x83')][_0x8a4b('0x85')]){var _0x16b0bd=_0x52c3e7[_0x8a4b('0x82')][_0x8a4b('0x83')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x8a4b('0x8f')](_0x16b0bd)){_0x16940c=path[_0x8a4b('0x5f')](_0x8a4b('0x90'),_0x11f47e,_0x3b7d79[0x0],_0x16b0bd);}else{_0x16940c=_0x16b0bd;}}if(_0x8a4b('0x7f')!=typeof _0x52c3e7['parameters'][_0x8a4b('0x83')][_0x8a4b('0x91')]){var _0x50c5a1=_0x52c3e7[_0x8a4b('0x82')]['views'][_0x8a4b('0x91')];if(!/^(f|ht)tps?:\/\//i['test'](_0x50c5a1)){_0x4da51c=path['join'](_0x8a4b('0x90'),_0x11f47e,_0x3b7d79[0x0],_0x50c5a1);}else{_0x4da51c=_0x50c5a1;}}}}var _0x379358={'name':_0x2e6557,'description':_0x583112,'path':path['join'](_0x11f47e,_0x3b7d79[0x0]),'type':_0x5a0371,'sidebar':_0x1274ee,'icon':_0x59c4b2,'adminUrl':_0x16940c,'agentUrl':_0x4da51c,'scriptName':_0x6d6164,'scriptPath':_0x34fea3,'version':_0x1aaab7};removeReferences(_0x53d81b,null);return db['Plugin'][_0x8a4b('0x94')](_0x379358)[_0x8a4b('0x29')](function(_0x145b8d){var _0x18683a={'role':_0x18fce0[_0x8a4b('0x95')][_0x8a4b('0x96')],'userProfileId':_0x18fce0[_0x8a4b('0x95')][_0x8a4b('0x97')]};if(!_0x18683a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x18683a['role']===_0x8a4b('0x98')){var _0x41a85f=_0x145b8d[_0x8a4b('0x2b')]({'plain':!![]});return db['UserProfileSection'][_0x8a4b('0x53')]({'where':{'name':_0x8a4b('0x2c'),'userProfileId':_0x18683a['userProfileId']},'raw':!![]})[_0x8a4b('0x29')](function(_0x3864ab){if(_0x3864ab&&_0x3864ab[_0x8a4b('0x99')]===0x0){return db[_0x8a4b('0x2d')][_0x8a4b('0x94')]({'name':_0x41a85f[_0x8a4b('0x30')],'resourceId':_0x41a85f['id'],'type':_0x3864ab[_0x8a4b('0x30')],'sectionId':_0x3864ab['id']},{})[_0x8a4b('0x29')](function(){return _0x145b8d;});}else{return _0x145b8d;}})['catch'](function(_0x105891){logger[_0x8a4b('0x2e')](_0x8a4b('0x9a'),_0x105891);throw _0x105891;});}return _0x145b8d;})[_0x8a4b('0x29')](respondWithResult(_0x316bcf,null))[_0x8a4b('0x4e')](handleError(_0x316bcf,null));}});}catch(_0x3155c0){_0x316bcf[_0x8a4b('0x1f')](0x1f4)[_0x8a4b('0x9b')](_0x3155c0);}};function removeReferences(_0x57ec18,_0xadb9c){try{if(_0x57ec18){fs['unlinkSync'](_0x57ec18);logger['info'](_0x8a4b('0x9c'));}if(_0xadb9c){rimraf(_0xadb9c,function(){});logger['info'](_0x8a4b('0x9d'));}}catch(_0x524b50){logger[_0x8a4b('0x2e')](_0x524b50);}}exports[_0x8a4b('0x28')]=function(_0x45f767,_0x484328,_0x12230e){return db[_0x8a4b('0x48')][_0x8a4b('0x53')]({'where':{'id':_0x45f767[_0x8a4b('0x4f')]['id']}})[_0x8a4b('0x29')](handleEntityNotFound(_0x484328,null))[_0x8a4b('0x29')](saveUpdates(_0x45f767[_0x8a4b('0x95')],null))[_0x8a4b('0x29')](respondWithResult(_0x484328,null))[_0x8a4b('0x4e')](handleError(_0x484328,null));};exports[_0x8a4b('0x9e')]=function(_0x2cc9c3,_0x4ea9b8,_0x361f4b){return db[_0x8a4b('0x48')]['find']({'where':{'id':_0x2cc9c3[_0x8a4b('0x4f')]['id']}})[_0x8a4b('0x29')](function(_0x867aa7){if(_0x867aa7){return _0x867aa7[_0x8a4b('0x2a')]();}})['then'](function(_0x156e84){rimraf(path[_0x8a4b('0x5f')](config[_0x8a4b('0x54')],'server/files/plugins',path[_0x8a4b('0x60')](_0x156e84['path'])),function(){});return _0x156e84;})[_0x8a4b('0x29')](handleEntityNotFound(_0x4ea9b8,null))[_0x8a4b('0x29')](respondWithStatusCode(_0x4ea9b8,null))[_0x8a4b('0x4e')](handleError(_0x4ea9b8,null));};exports[_0x8a4b('0x9f')]=function(_0x42d8df,_0x5f0357,_0x160291){return BPromise[_0x8a4b('0xa0')]()[_0x8a4b('0x29')](function(){if(!_0x42d8df['query'][_0x8a4b('0x9')]){throw new Error(_0x8a4b('0xa1'));}if(!_0x42d8df[_0x8a4b('0x33')][_0x8a4b('0xa2')]){throw new Error(_0x8a4b('0xa3'));}var _0x161dc9=_0x42d8df[_0x8a4b('0x33')][_0x8a4b('0xa4')]?_0x42d8df['query'][_0x8a4b('0xa4')]+':'+_0x42d8df[_0x8a4b('0x33')]['port']:'http://localhost:'+_0x42d8df[_0x8a4b('0x33')][_0x8a4b('0xa2')];var _0xd0718=_0x42d8df['query'][_0x8a4b('0x21')]?_0x42d8df[_0x8a4b('0x33')][_0x8a4b('0x21')]:!![];var _0x487f89=_0x42d8df['query'][_0x8a4b('0xa5')]?_0x42d8df[_0x8a4b('0x33')]['encoding']:null;var _0x4442e1={'method':_0x42d8df[_0x8a4b('0xa6')],'uri':util[_0x8a4b('0x56')](_0x8a4b('0xa7'),_0x161dc9,_0x42d8df['query'][_0x8a4b('0x9')]),'json':_0xd0718,'resolveWithFullResponse':!![],'encoding':_0x487f89,'qs':_0x42d8df['query']};if(_0x42d8df[_0x8a4b('0xa8')]){_0x4442e1[_0x8a4b('0xa8')]=_0x42d8df[_0x8a4b('0xa8')];if(_0x4442e1[_0x8a4b('0xa8')][_0x8a4b('0xa9')]){delete _0x4442e1[_0x8a4b('0xa8')][_0x8a4b('0xa9')];}}return rp(_0x4442e1);})[_0x8a4b('0x29')](function(_0x411ee3){if(_0x411ee3){_0x5f0357[_0x8a4b('0x24')](_0x411ee3[_0x8a4b('0xa8')]);logger[_0x8a4b('0x6b')](_0x411ee3[_0x8a4b('0x95')]);if(_[_0x8a4b('0xaa')](_0x42d8df[_0x8a4b('0x33')][_0x8a4b('0x9')],_0x8a4b('0x52'))&&_0x411ee3[_0x8a4b('0xab')]==0x1f4){return _0x5f0357[_0x8a4b('0x1e')](_0x411ee3[_0x8a4b('0xab')]);}else{return _0x5f0357[_0x8a4b('0x1f')](_0x411ee3['statusCode'])[_0x8a4b('0x9b')](_0x411ee3[_0x8a4b('0x95')]);}}else{return _0x5f0357[_0x8a4b('0x1e')](0xc8);}})[_0x8a4b('0x4e')](handleError(_0x5f0357,null));};exports[_0x8a4b('0xac')]=function(_0x260b87,_0x311577,_0x35dfd1){return BPromise[_0x8a4b('0xa0')]()[_0x8a4b('0x29')](function(){if(!_0x260b87[_0x8a4b('0x33')][_0x8a4b('0x9')]){throw new Error(_0x8a4b('0xa1'));}if(!_0x260b87[_0x8a4b('0x33')][_0x8a4b('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x403cd7=_0x260b87['query'][_0x8a4b('0xa4')]?_0x260b87[_0x8a4b('0x33')][_0x8a4b('0xa4')]+':'+_0x260b87[_0x8a4b('0x33')][_0x8a4b('0xa2')]:_0x8a4b('0xad')+_0x260b87[_0x8a4b('0x33')][_0x8a4b('0xa2')];var _0x452b11=_0x260b87['query']['json']?_0x260b87['query']['json']:!![];var _0x13a74a=_0x260b87[_0x8a4b('0x33')][_0x8a4b('0xa5')]?_0x260b87[_0x8a4b('0x33')][_0x8a4b('0xa5')]:null;var _0xff4b74={'method':_0x260b87[_0x8a4b('0xa6')],'uri':util[_0x8a4b('0x56')](_0x8a4b('0xa7'),_0x403cd7,_0x260b87[_0x8a4b('0x33')]['path']),'json':_0x452b11,'resolveWithFullResponse':!![],'encoding':_0x13a74a,'body':_0x260b87[_0x8a4b('0x95')]};if(_0x260b87[_0x8a4b('0xa8')]){_0xff4b74[_0x8a4b('0xa8')]=_0x260b87['headers'];if(_0xff4b74['headers']['content-length']){delete _0xff4b74[_0x8a4b('0xa8')][_0x8a4b('0xa9')];}}return rp(_0xff4b74);})[_0x8a4b('0x29')](function(_0xc53dc9){if(_0xc53dc9){_0x311577[_0x8a4b('0x24')](_0xc53dc9[_0x8a4b('0xa8')]);logger[_0x8a4b('0x6b')](_0xc53dc9[_0x8a4b('0x95')]);return _0x311577[_0x8a4b('0x1f')](_0xc53dc9[_0x8a4b('0xab')])[_0x8a4b('0x9b')](_0xc53dc9[_0x8a4b('0x95')]);}else{return _0x311577[_0x8a4b('0x1e')](0xc8);}})[_0x8a4b('0x4e')](handleError(_0x311577,null));};
\ No newline at end of file
+var _0x7c8e=['port','encoding','method','%s%s','headers','content-length','endsWith','statusCode','webhookPost','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','http://localhost:','html-pdf','eml-format','rimraf','fast-json-patch','bluebird','to-csv','lodash','squel','crypto','jsforce','ioredis','extract-zip','archiver','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','get','Plugins','stack','name','send','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filters','day','merge','filter','map','type','field','options','Plugin','count','includeAll','include','findAll','catch','params','fields','find','download','path','join','server/files/plugins','format','%s.zip','zip','warning','code','ENOENT','error','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','**/*','root','dirname','node_modules/**/*','attachments/**/*','finalize','Sequelize','Plugin\x20not\x20found','basename','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','Download\x20completed','info','upload','file','extname','filename','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isDirectory','some','manifest.json','readFileSync','parse','undefined','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','Extracted\x20folder\x20removed','delete','webhookGet','hostname'];(function(_0x1cdfcd,_0x37be5f){var _0x274b60=function(_0x34f017){while(--_0x34f017){_0x1cdfcd['push'](_0x1cdfcd['shift']());}};_0x274b60(++_0x37be5f);}(_0x7c8e,0x161));var _0xe7c8=function(_0x9ff1c0,_0x207afc){_0x9ff1c0=_0x9ff1c0-0x0;var _0x3e6c23=_0x7c8e[_0x9ff1c0];return _0x3e6c23;};'use strict';var pdf=require(_0xe7c8('0x0'));var emlformat=require(_0xe7c8('0x1'));var rimraf=require(_0xe7c8('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe7c8('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe7c8('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xe7c8('0x5'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xe7c8('0x6'));var squel=require(_0xe7c8('0x7'));var crypto=require(_0xe7c8('0x8'));var jsforce=require(_0xe7c8('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xe7c8('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe7c8('0xa'));var extract=require(_0xe7c8('0xb'));var rimraf=require(_0xe7c8('0x2'));var archiver=require(_0xe7c8('0xc'));var qs=require(_0xe7c8('0xd'));var logger=require(_0xe7c8('0xe'))(_0xe7c8('0xf'));var utils=require(_0xe7c8('0x10'));var config=require(_0xe7c8('0x11'));var db=require(_0xe7c8('0x12'))['db'];config[_0xe7c8('0x13')]=_[_0xe7c8('0x14')](config[_0xe7c8('0x13')],{'host':'localhost','port':0x18eb});var socket=require(_0xe7c8('0x15'))(new Redis(config[_0xe7c8('0x13')]));require(_0xe7c8('0x16'))[_0xe7c8('0x17')](socket);function respondWithStatusCode(_0x3690d0,_0x7c648c){_0x7c648c=_0x7c648c||0xcc;return function(_0x337b48){if(_0x337b48){return _0x3690d0[_0xe7c8('0x18')](_0x7c648c);}return _0x3690d0[_0xe7c8('0x19')](_0x7c648c)[_0xe7c8('0x1a')]();};}function respondWithResult(_0x12f6aa,_0x28584e){_0x28584e=_0x28584e||0xc8;return function(_0x14ae91){if(_0x14ae91){return _0x12f6aa[_0xe7c8('0x19')](_0x28584e)['json'](_0x14ae91);}};}function respondWithFilteredResult(_0x39b1c4,_0x200790){return function(_0x543838){if(_0x543838){var _0x3cb7ad=_0x543838['count'],_0x49a139=_0x200790[_0xe7c8('0x1b')],_0x5d7cba=_0x200790[_0xe7c8('0x1b')]+_0x200790['limit'],_0xf36c3d;if(_0x5d7cba>=_0x3cb7ad){_0x5d7cba=_0x3cb7ad;_0xf36c3d=0xc8;}else{_0xf36c3d=0xce;}_0x39b1c4[_0xe7c8('0x19')](_0xf36c3d);return _0x39b1c4[_0xe7c8('0x1c')](_0xe7c8('0x1d'),_0x49a139+'-'+_0x5d7cba+'/'+_0x3cb7ad)[_0xe7c8('0x1e')](_0x543838);}return null;};}function patchUpdates(_0x1362ad){return function(_0x856100){try{jsonpatch[_0xe7c8('0x1f')](_0x856100,_0x1362ad,!![]);}catch(_0x1f161d){return BPromise[_0xe7c8('0x20')](_0x1f161d);}return _0x856100[_0xe7c8('0x21')]();};}function saveUpdates(_0x4405a6,_0x493542){return function(_0x27f982){if(_0x27f982){return _0x27f982[_0xe7c8('0x22')](_0x4405a6)[_0xe7c8('0x23')](function(_0x5d7d01){return _0x5d7d01;});}return null;};}function removeEntity(_0x4b621f,_0x5e718a){return function(_0x57e106){if(_0x57e106){return _0x57e106[_0xe7c8('0x24')]()['then'](function(){var _0x1e826f=_0x57e106[_0xe7c8('0x25')]({'plain':!![]});var _0x324eab=_0xe7c8('0x26');return db['UserProfileResource'][_0xe7c8('0x24')]({'where':{'type':_0x324eab,'resourceId':_0x1e826f['id']}})[_0xe7c8('0x23')](function(){return _0x57e106;});})[_0xe7c8('0x23')](function(){_0x4b621f[_0xe7c8('0x19')](0xcc)[_0xe7c8('0x1a')]();});}};}function handleEntityNotFound(_0x4d6f3c,_0x4835ad){return function(_0x5e9308){if(!_0x5e9308){_0x4d6f3c[_0xe7c8('0x18')](0x194);}return _0x5e9308;};}function handleError(_0x3efde8,_0x6061f){_0x6061f=_0x6061f||0x1f4;return function(_0x1b246b){logger['error'](_0x1b246b[_0xe7c8('0x27')]);if(_0x1b246b[_0xe7c8('0x28')]){delete _0x1b246b[_0xe7c8('0x28')];}_0x3efde8[_0xe7c8('0x19')](_0x6061f)[_0xe7c8('0x29')](_0x1b246b);};}exports['index']=function(_0x4fb4ad,_0x4cde6a){var _0x38a2a={},_0x169b89={},_0x4b7490={'count':0x0,'rows':[]};var _0x19665=db['Plugin'][_0xe7c8('0x2a')];_0x169b89[_0xe7c8('0x2b')]=_[_0xe7c8('0x2c')](_0x19665);var _0x1323c9={'dateStart':_0x4fb4ad['query']['dateStart'],'dateEnd':_0x4fb4ad[_0xe7c8('0x2d')]['dateEnd']};delete _0x4fb4ad[_0xe7c8('0x2d')][_0xe7c8('0x2e')];delete _0x4fb4ad[_0xe7c8('0x2d')][_0xe7c8('0x2f')];_0x169b89['query']=_[_0xe7c8('0x2c')](_0x4fb4ad[_0xe7c8('0x2d')]);_0x169b89['filters']=_[_0xe7c8('0x30')](_0x169b89[_0xe7c8('0x2b')],_0x169b89[_0xe7c8('0x2d')]);_0x38a2a[_0xe7c8('0x31')]=_[_0xe7c8('0x30')](_0x169b89[_0xe7c8('0x2b')],qs['fields'](_0x4fb4ad['query']['fields']));_0x38a2a[_0xe7c8('0x31')]=_0x38a2a[_0xe7c8('0x31')][_0xe7c8('0x32')]?_0x38a2a['attributes']:_0x169b89[_0xe7c8('0x2b')];if(!_0x4fb4ad[_0xe7c8('0x2d')][_0xe7c8('0x33')](_0xe7c8('0x34'))){_0x38a2a[_0xe7c8('0x35')]=qs['limit'](_0x4fb4ad[_0xe7c8('0x2d')][_0xe7c8('0x35')]);_0x38a2a['offset']=qs[_0xe7c8('0x1b')](_0x4fb4ad['query'][_0xe7c8('0x1b')]);}_0x38a2a[_0xe7c8('0x36')]=qs[_0xe7c8('0x37')](_0x4fb4ad[_0xe7c8('0x2d')]['sort']);_0x38a2a[_0xe7c8('0x38')]=qs['filters'](_[_0xe7c8('0x39')](_0x4fb4ad[_0xe7c8('0x2d')],_0x169b89[_0xe7c8('0x3a')]));if(_0x1323c9['dateStart']){if(_0x1323c9[_0xe7c8('0x2f')]){_0x1323c9[_0xe7c8('0x2f')]=moment(_0x1323c9[_0xe7c8('0x2f')])['add'](0x1,_0xe7c8('0x3b'));}else{_0x1323c9['dateEnd']=moment(_0x1323c9[_0xe7c8('0x2e')])['add'](0x1,_0xe7c8('0x3b'));}_[_0xe7c8('0x3c')](_0x38a2a['where'],{'createdAt':{'$gte':_0x1323c9[_0xe7c8('0x2e')],'$lte':_0x1323c9['dateEnd']}});}if(_0x4fb4ad[_0xe7c8('0x2d')][_0xe7c8('0x3d')]){_0x38a2a['where']=_[_0xe7c8('0x3c')](_0x38a2a['where'],{'$or':_[_0xe7c8('0x3e')](_0x19665,function(_0x4d4cb4){if(_0x4d4cb4[_0xe7c8('0x3f')]['key']!=='VIRTUAL'){var _0xf7a047={};_0xf7a047[_0x4d4cb4[_0xe7c8('0x40')]]={'$like':'%'+_0x4fb4ad['query']['filter']+'%'};return _0xf7a047;}})});}_0x38a2a=_[_0xe7c8('0x3c')]({},_0x38a2a,_0x4fb4ad[_0xe7c8('0x41')]);var _0x5da0e0={'where':_0x38a2a[_0xe7c8('0x38')]};return db[_0xe7c8('0x42')][_0xe7c8('0x43')](_0x5da0e0)['then'](function(_0x3d238d){_0x4b7490[_0xe7c8('0x43')]=_0x3d238d;if(_0x4fb4ad[_0xe7c8('0x2d')][_0xe7c8('0x44')]){_0x38a2a[_0xe7c8('0x45')]=[{'all':!![]}];}return db['Plugin'][_0xe7c8('0x46')](_0x38a2a);})[_0xe7c8('0x23')](function(_0x46ceb7){_0x4b7490['rows']=_0x46ceb7;return _0x4b7490;})['then'](respondWithFilteredResult(_0x4cde6a,_0x38a2a))[_0xe7c8('0x47')](handleError(_0x4cde6a,null));};exports['show']=function(_0x3a0e27,_0x3d9cb5){var _0x6e4e79={'raw':!![],'where':{'id':_0x3a0e27[_0xe7c8('0x48')]['id']}},_0x41ff94={};_0x41ff94['model']=_[_0xe7c8('0x2c')](db[_0xe7c8('0x42')]['rawAttributes']);_0x41ff94['query']=_[_0xe7c8('0x2c')](_0x3a0e27[_0xe7c8('0x2d')]);_0x41ff94[_0xe7c8('0x3a')]=_['intersection'](_0x41ff94[_0xe7c8('0x2b')],_0x41ff94[_0xe7c8('0x2d')]);_0x6e4e79[_0xe7c8('0x31')]=_['intersection'](_0x41ff94[_0xe7c8('0x2b')],qs[_0xe7c8('0x49')](_0x3a0e27['query'][_0xe7c8('0x49')]));_0x6e4e79[_0xe7c8('0x31')]=_0x6e4e79[_0xe7c8('0x31')][_0xe7c8('0x32')]?_0x6e4e79[_0xe7c8('0x31')]:_0x41ff94[_0xe7c8('0x2b')];if(_0x3a0e27[_0xe7c8('0x2d')]['includeAll']){_0x6e4e79[_0xe7c8('0x45')]=[{'all':!![]}];}_0x6e4e79=_[_0xe7c8('0x3c')]({},_0x6e4e79,_0x3a0e27['options']);return db[_0xe7c8('0x42')][_0xe7c8('0x4a')](_0x6e4e79)[_0xe7c8('0x23')](handleEntityNotFound(_0x3d9cb5,null))[_0xe7c8('0x23')](respondWithResult(_0x3d9cb5,null))[_0xe7c8('0x47')](handleError(_0x3d9cb5,null));};exports[_0xe7c8('0x4b')]=function(_0x3f685f,_0x397641,_0x19bc9a){return db[_0xe7c8('0x42')]['find']({'where':{'id':_0x3f685f['params']['id']},'attributes':[_0xe7c8('0x28'),_0xe7c8('0x4c')],'raw':!![]})[_0xe7c8('0x23')](handleEntityNotFound(_0x397641,null))['then'](function(_0x5c5f03){if(_0x5c5f03){var _0x52e4a6=path[_0xe7c8('0x4d')](config['root'],_0xe7c8('0x4e'),util[_0xe7c8('0x4f')](_0xe7c8('0x50'),path['basename'](_0x5c5f03['path'])));var _0x1c1b39=fs['createWriteStream'](_0x52e4a6);var _0x58fe8f=archiver(_0xe7c8('0x51'),{'zlib':{'level':0x9}});_0x58fe8f['on'](_0xe7c8('0x52'),function(_0x5db23d){if(_0x5db23d[_0xe7c8('0x53')]===_0xe7c8('0x54')){logger[_0xe7c8('0x55')](_0x5db23d);}else{throw new db['Sequelize'][(_0xe7c8('0x56'))](_0xe7c8('0x57'));}});_0x58fe8f['on'](_0xe7c8('0x55'),function(_0x1ff547){throw new db['Sequelize']['Error'](_0xe7c8('0x57'));});_0x58fe8f[_0xe7c8('0x58')](_0x1c1b39);_0x58fe8f['glob'](_0xe7c8('0x59'),{'cwd':path['join'](config[_0xe7c8('0x5a')],_0xe7c8('0x4e'),path[_0xe7c8('0x5b')](_0x5c5f03[_0xe7c8('0x4c')])),'ignore':[path[_0xe7c8('0x4d')](path['basename'](_0x5c5f03[_0xe7c8('0x4c')]),_0xe7c8('0x5c')),path[_0xe7c8('0x4d')](path['basename'](_0x5c5f03['path']),_0xe7c8('0x5d'))],'nodir':!![]})[_0xe7c8('0x5e')]();_0x1c1b39['on']('close',function(){if(!fs['existsSync'](_0x52e4a6)){throw new db[(_0xe7c8('0x5f'))][(_0xe7c8('0x56'))](_0xe7c8('0x60'));}return _0x397641[_0xe7c8('0x4b')](_0x52e4a6,util[_0xe7c8('0x4f')](_0xe7c8('0x50'),path[_0xe7c8('0x61')](_0x5c5f03[_0xe7c8('0x4c')])),function(_0xcf1aca){if(_0xcf1aca){throw new db[(_0xe7c8('0x5f'))][(_0xe7c8('0x56'))](_0xe7c8('0x62'));}fs[_0xe7c8('0x63')](_0x52e4a6);logger['info'](_0xe7c8('0x64'));logger[_0xe7c8('0x65')]('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x397641,null));};exports[_0xe7c8('0x66')]=function(_0x4972be,_0x1bf798,_0x43ca6e){var _0xb9898c=path[_0xe7c8('0x61')](_0x4972be[_0xe7c8('0x67')]['filename'],path[_0xe7c8('0x68')](_0x4972be[_0xe7c8('0x67')][_0xe7c8('0x69')]));var _0x196799=path[_0xe7c8('0x4d')](config['root'],_0xe7c8('0x4e'),_0x4972be[_0xe7c8('0x67')][_0xe7c8('0x69')]);var _0x5587c7=path[_0xe7c8('0x4d')](config[_0xe7c8('0x5a')],_0xe7c8('0x4e'),_0xb9898c);logger[_0xe7c8('0x65')](_0xe7c8('0x6a'),_0x196799);logger[_0xe7c8('0x65')]('Plugin\x20upload\x20destination:\x20%s',_0x5587c7);try{fs[_0xe7c8('0x6b')](_0x196799,parseInt(_0xe7c8('0x6c'),0x8));extract(_0x196799,{'dir':_0x5587c7},function(_0x399110){if(_0x399110){logger[_0xe7c8('0x55')](_0x399110);handleError(_0x399110,!![]);};var _0x3d5265=fs[_0xe7c8('0x6d')](_0x5587c7);if(_0x3d5265['length']>0x1){removeReferences(_0x196799,_0x5587c7);logger[_0xe7c8('0x55')](_0xe7c8('0x6e'));return _0x43ca6e(new Error(_0xe7c8('0x6e')));}var _0x93d7c7=fs[_0xe7c8('0x6f')](path['join'](_0x5587c7,_0x3d5265[0x0]));if(_0x93d7c7['isFile']()){removeReferences(_0x196799,_0x5587c7);logger['error'](_0xe7c8('0x6e'));return _0x43ca6e(new Error(_0xe7c8('0x6e')));}if(_0x93d7c7[_0xe7c8('0x70')]()){var _0x417072=fs[_0xe7c8('0x6d')](path[_0xe7c8('0x4d')](_0x5587c7,_0x3d5265[0x0]));if(_0x417072[_0xe7c8('0x32')]===0x0){removeReferences(_0x196799,_0x5587c7);logger[_0xe7c8('0x55')](_0xe7c8('0x6e'));return _0x43ca6e(new Error('Invalid\x20plugin\x20structure'));}var _0x41d6fd=_0x417072[_0xe7c8('0x71')](function(_0x7dd4a9){return _0x7dd4a9===_0xe7c8('0x72');});if(!_0x41d6fd){return _0x43ca6e(new Error('Plugin\x20manifest\x20missing'));}var _0x417856=fs[_0xe7c8('0x73')](path['join'](_0x5587c7,_0x3d5265[0x0],_0xe7c8('0x72')));var _0x3963dd=JSON[_0xe7c8('0x74')](_0x417856);if(_0xe7c8('0x75')==typeof _0x3963dd['name']){return _0x43ca6e(new Error(_0xe7c8('0x76')));}if('undefined'==typeof _0x3963dd['type']){return _0x43ca6e(new Error(_0xe7c8('0x77')));}if('undefined'==typeof _0x3963dd[_0xe7c8('0x78')]){return _0x43ca6e(new Error(_0xe7c8('0x79')));}if('undefined'==typeof _0x3963dd[_0xe7c8('0x7a')]){return _0x43ca6e(new Error(_0xe7c8('0x7b')));}if(_0x3963dd[_0xe7c8('0x3f')]===_0xe7c8('0x7c')){if('undefined'==typeof _0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x7d')]){return _0x43ca6e(new Error(_0xe7c8('0x7e')));}if(_0xe7c8('0x75')==typeof _0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x7d')][_0xe7c8('0x7f')]&&'undefined'==typeof _0x3963dd['parameters'][_0xe7c8('0x7d')][_0xe7c8('0x80')]){return _0x43ca6e(new Error(_0xe7c8('0x81')));}}else if(_0x3963dd['type']===_0xe7c8('0x82')){if('undefined'==typeof _0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x83')]){return _0x43ca6e(new Error(_0xe7c8('0x84')));}if('undefined'==typeof _0x3963dd['parameters'][_0xe7c8('0x85')]){return _0x43ca6e(new Error(_0xe7c8('0x86')));}}else{return _0x43ca6e(new Error(_0xe7c8('0x87')));}var _0xe49cfa=_0x3963dd['name'];var _0x1351c6=_0x3963dd[_0xe7c8('0x88')];var _0x195263=_0x3963dd[_0xe7c8('0x3f')];var _0x2dcc70=_0x3963dd[_0xe7c8('0x89')]?_0x3963dd[_0xe7c8('0x89')]:_0xe7c8('0x8a');var _0x1d1fd2=_0x3963dd[_0xe7c8('0x8b')]?_0x3963dd[_0xe7c8('0x8b')]:_0xe7c8('0x8c');var _0x48d4e8='';var _0x36e68a='';var _0x597bca='';var _0x2b34b2='';var _0x3645f2=_0x3963dd[_0xe7c8('0x78')];if(_0x195263===_0xe7c8('0x7c')){if('undefined'!=typeof _0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x7d')][_0xe7c8('0x7f')]){var _0x2a4b89=_0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x7d')][_0xe7c8('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0xe7c8('0x8d')](_0x2a4b89)){_0x48d4e8=path[_0xe7c8('0x4d')](_0xe7c8('0x8e'),_0xb9898c,_0x3d5265[0x0],_0x2a4b89);}else{_0x48d4e8=_0x2a4b89;}}else{logger['info'](_0xe7c8('0x8f'));}if('undefined'!=typeof _0x3963dd[_0xe7c8('0x7a')]['views'][_0xe7c8('0x80')]){var _0x182ac2=_0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x7d')][_0xe7c8('0x80')];if(!/^(f|ht)tps?:\/\//i[_0xe7c8('0x8d')](_0x182ac2)){_0x36e68a=path[_0xe7c8('0x4d')]('plugins',_0xb9898c,_0x3d5265[0x0],_0x182ac2);}else{_0x36e68a=_0x182ac2;}}else{logger['info'](_0xe7c8('0x90'));}}else if(_0x195263===_0xe7c8('0x82')){_0x597bca=_0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x83')];_0x2b34b2=_0x3963dd['parameters'][_0xe7c8('0x85')];if(_0xe7c8('0x75')!=typeof _0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x7d')]){if(_0xe7c8('0x75')!=typeof _0x3963dd['parameters'][_0xe7c8('0x7d')]['admin']){var _0x2a4b89=_0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x7d')][_0xe7c8('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0xe7c8('0x8d')](_0x2a4b89)){_0x48d4e8=path[_0xe7c8('0x4d')](_0xe7c8('0x8e'),_0xb9898c,_0x3d5265[0x0],_0x2a4b89);}else{_0x48d4e8=_0x2a4b89;}}if(_0xe7c8('0x75')!=typeof _0x3963dd[_0xe7c8('0x7a')][_0xe7c8('0x7d')]['agent']){var _0x182ac2=_0x3963dd['parameters'][_0xe7c8('0x7d')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xe7c8('0x8d')](_0x182ac2)){_0x36e68a=path[_0xe7c8('0x4d')](_0xe7c8('0x8e'),_0xb9898c,_0x3d5265[0x0],_0x182ac2);}else{_0x36e68a=_0x182ac2;}}}}var _0x185420={'name':_0xe49cfa,'description':_0x1351c6,'path':path[_0xe7c8('0x4d')](_0xb9898c,_0x3d5265[0x0]),'type':_0x195263,'sidebar':_0x2dcc70,'icon':_0x1d1fd2,'adminUrl':_0x48d4e8,'agentUrl':_0x36e68a,'scriptName':_0x597bca,'scriptPath':_0x2b34b2,'version':_0x3645f2};removeReferences(_0x196799,null);return db[_0xe7c8('0x42')][_0xe7c8('0x91')](_0x185420)[_0xe7c8('0x23')](function(_0x25d840){var _0x3df10f={'role':_0x4972be[_0xe7c8('0x92')][_0xe7c8('0x93')],'userProfileId':_0x4972be['body'][_0xe7c8('0x94')]};if(!_0x3df10f)throw new Error(_0xe7c8('0x95'));if(_0x3df10f[_0xe7c8('0x93')]==='user'){var _0x95334a=_0x25d840[_0xe7c8('0x25')]({'plain':!![]});return db[_0xe7c8('0x96')][_0xe7c8('0x4a')]({'where':{'name':_0xe7c8('0x26'),'userProfileId':_0x3df10f[_0xe7c8('0x94')]},'raw':!![]})[_0xe7c8('0x23')](function(_0x2a4840){if(_0x2a4840&&_0x2a4840[_0xe7c8('0x97')]===0x0){return db[_0xe7c8('0x98')][_0xe7c8('0x91')]({'name':_0x95334a[_0xe7c8('0x28')],'resourceId':_0x95334a['id'],'type':_0x2a4840[_0xe7c8('0x28')],'sectionId':_0x2a4840['id']},{})['then'](function(){return _0x25d840;});}else{return _0x25d840;}})['catch'](function(_0x5e806a){logger[_0xe7c8('0x55')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5e806a);throw _0x5e806a;});}return _0x25d840;})[_0xe7c8('0x23')](respondWithResult(_0x1bf798,null))[_0xe7c8('0x47')](handleError(_0x1bf798,null));}});}catch(_0x43c5b5){_0x1bf798[_0xe7c8('0x19')](0x1f4)['send'](_0x43c5b5);}};function removeReferences(_0x1c4395,_0xade0aa){try{if(_0x1c4395){fs['unlinkSync'](_0x1c4395);logger[_0xe7c8('0x65')]('Zip\x20archive\x20removed');}if(_0xade0aa){rimraf(_0xade0aa,function(){});logger[_0xe7c8('0x65')](_0xe7c8('0x99'));}}catch(_0x3d1b95){logger[_0xe7c8('0x55')](_0x3d1b95);}}exports['update']=function(_0x2c1813,_0x117be9,_0x4030dd){return db[_0xe7c8('0x42')][_0xe7c8('0x4a')]({'where':{'id':_0x2c1813[_0xe7c8('0x48')]['id']}})[_0xe7c8('0x23')](handleEntityNotFound(_0x117be9,null))[_0xe7c8('0x23')](saveUpdates(_0x2c1813[_0xe7c8('0x92')],null))[_0xe7c8('0x23')](respondWithResult(_0x117be9,null))[_0xe7c8('0x47')](handleError(_0x117be9,null));};exports[_0xe7c8('0x9a')]=function(_0x55a411,_0x5740dc,_0x2738db){return db[_0xe7c8('0x42')][_0xe7c8('0x4a')]({'where':{'id':_0x55a411[_0xe7c8('0x48')]['id']}})[_0xe7c8('0x23')](function(_0x215727){if(_0x215727){return _0x215727[_0xe7c8('0x24')]();}})[_0xe7c8('0x23')](function(_0x2ca016){rimraf(path[_0xe7c8('0x4d')](config[_0xe7c8('0x5a')],'server/files/plugins',path[_0xe7c8('0x5b')](_0x2ca016[_0xe7c8('0x4c')])),function(){});return _0x2ca016;})[_0xe7c8('0x23')](handleEntityNotFound(_0x5740dc,null))[_0xe7c8('0x23')](respondWithStatusCode(_0x5740dc,null))['catch'](handleError(_0x5740dc,null));};exports[_0xe7c8('0x9b')]=function(_0x2418a2,_0x57f858,_0x33a16c){return BPromise['resolve']()[_0xe7c8('0x23')](function(){if(!_0x2418a2['query'][_0xe7c8('0x4c')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x2418a2[_0xe7c8('0x2d')]['port']){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x3aeb1d=_0x2418a2['query'][_0xe7c8('0x9c')]?_0x2418a2[_0xe7c8('0x2d')][_0xe7c8('0x9c')]+':'+_0x2418a2[_0xe7c8('0x2d')][_0xe7c8('0x9d')]:'http://localhost:'+_0x2418a2[_0xe7c8('0x2d')][_0xe7c8('0x9d')];var _0x16d4ca=_0x2418a2[_0xe7c8('0x2d')][_0xe7c8('0x1e')]?_0x2418a2['query'][_0xe7c8('0x1e')]:!![];var _0x1b19e2=_0x2418a2['query'][_0xe7c8('0x9e')]?_0x2418a2[_0xe7c8('0x2d')][_0xe7c8('0x9e')]:null;var _0x50e0dc={'method':_0x2418a2[_0xe7c8('0x9f')],'uri':util[_0xe7c8('0x4f')](_0xe7c8('0xa0'),_0x3aeb1d,_0x2418a2['query']['path']),'json':_0x16d4ca,'resolveWithFullResponse':!![],'encoding':_0x1b19e2,'qs':_0x2418a2[_0xe7c8('0x2d')]};if(_0x2418a2[_0xe7c8('0xa1')]){_0x50e0dc[_0xe7c8('0xa1')]=_0x2418a2['headers'];if(_0x50e0dc[_0xe7c8('0xa1')][_0xe7c8('0xa2')]){delete _0x50e0dc['headers'][_0xe7c8('0xa2')];}}return rp(_0x50e0dc);})[_0xe7c8('0x23')](function(_0x413608){if(_0x413608){_0x57f858[_0xe7c8('0x1c')](_0x413608[_0xe7c8('0xa1')]);logger[_0xe7c8('0x65')](_0x413608[_0xe7c8('0x92')]);if(_[_0xe7c8('0xa3')](_0x2418a2[_0xe7c8('0x2d')][_0xe7c8('0x4c')],_0xe7c8('0x4b'))&&_0x413608[_0xe7c8('0xa4')]==0x1f4){return _0x57f858['sendStatus'](_0x413608[_0xe7c8('0xa4')]);}else{return _0x57f858['status'](_0x413608[_0xe7c8('0xa4')])[_0xe7c8('0x29')](_0x413608['body']);}}else{return _0x57f858[_0xe7c8('0x18')](0xc8);}})[_0xe7c8('0x47')](handleError(_0x57f858,null));};exports[_0xe7c8('0xa5')]=function(_0x18fa86,_0x3bbafe,_0x5d22ba){return BPromise[_0xe7c8('0xa6')]()['then'](function(){if(!_0x18fa86[_0xe7c8('0x2d')]['path']){throw new Error(_0xe7c8('0xa7'));}if(!_0x18fa86[_0xe7c8('0x2d')][_0xe7c8('0x9d')]){throw new Error(_0xe7c8('0xa8'));}var _0x3ef5ef=_0x18fa86[_0xe7c8('0x2d')][_0xe7c8('0x9c')]?_0x18fa86['query']['hostname']+':'+_0x18fa86[_0xe7c8('0x2d')][_0xe7c8('0x9d')]:_0xe7c8('0xa9')+_0x18fa86[_0xe7c8('0x2d')][_0xe7c8('0x9d')];var _0x66ef3b=_0x18fa86[_0xe7c8('0x2d')][_0xe7c8('0x1e')]?_0x18fa86['query'][_0xe7c8('0x1e')]:!![];var _0x465edc=_0x18fa86[_0xe7c8('0x2d')][_0xe7c8('0x9e')]?_0x18fa86[_0xe7c8('0x2d')][_0xe7c8('0x9e')]:null;var _0x5f0e67={'method':_0x18fa86['method'],'uri':util[_0xe7c8('0x4f')](_0xe7c8('0xa0'),_0x3ef5ef,_0x18fa86['query']['path']),'json':_0x66ef3b,'resolveWithFullResponse':!![],'encoding':_0x465edc,'body':_0x18fa86[_0xe7c8('0x92')]};if(_0x18fa86['headers']){_0x5f0e67[_0xe7c8('0xa1')]=_0x18fa86[_0xe7c8('0xa1')];if(_0x5f0e67[_0xe7c8('0xa1')][_0xe7c8('0xa2')]){delete _0x5f0e67[_0xe7c8('0xa1')][_0xe7c8('0xa2')];}}return rp(_0x5f0e67);})[_0xe7c8('0x23')](function(_0xfdd9b8){if(_0xfdd9b8){_0x3bbafe[_0xe7c8('0x1c')](_0xfdd9b8['headers']);logger['info'](_0xfdd9b8[_0xe7c8('0x92')]);return _0x3bbafe[_0xe7c8('0x19')](_0xfdd9b8[_0xe7c8('0xa4')])[_0xe7c8('0x29')](_0xfdd9b8[_0xe7c8('0x92')]);}else{return _0x3bbafe[_0xe7c8('0x18')](0xc8);}})[_0xe7c8('0x47')](handleError(_0x3bbafe,null));};
\ No newline at end of file
index 348e59c..d0a65d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['hasOwnProperty','hook','events','Plugin','setMaxListeners','save','remove','emit'];(function(_0x236cd5,_0x3230e0){var _0x4603da=function(_0x412126){while(--_0x412126){_0x236cd5['push'](_0x236cd5['shift']());}};_0x4603da(++_0x3230e0);}(_0xb10b,0x12a));var _0xbb10=function(_0x217c2e,_0x358f06){_0x217c2e=_0x217c2e-0x0;var _0x22b7d8=_0xb10b[_0x217c2e];return _0x22b7d8;};'use strict';var EventEmitter=require(_0xbb10('0x0'));var Plugin=require('../../mysqldb')['db'][_0xbb10('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0xbb10('0x2')](0x0);var events={'afterCreate':_0xbb10('0x3'),'afterUpdate':'update','afterDestroy':_0xbb10('0x4')};function emitEvent(_0x9bbed){return function(_0x460981,_0x22320e,_0x49baf4){PluginEvents[_0xbb10('0x5')](_0x9bbed+':'+_0x460981['id'],_0x460981);PluginEvents['emit'](_0x9bbed,_0x460981);_0x49baf4(null);};}for(var e in events){if(events[_0xbb10('0x6')](e)){var event=events[e];Plugin[_0xbb10('0x7')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0x7a54=['Plugin','save','update','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x1e5f97,_0x12708d){var _0x2350c2=function(_0x9279fb){while(--_0x9279fb){_0x1e5f97['push'](_0x1e5f97['shift']());}};_0x2350c2(++_0x12708d);}(_0x7a54,0x106));var _0x47a5=function(_0x50d90d,_0xd78bf8){_0x50d90d=_0x50d90d-0x0;var _0x55d6b6=_0x7a54[_0x50d90d];return _0x55d6b6;};'use strict';var EventEmitter=require(_0x47a5('0x0'));var Plugin=require(_0x47a5('0x1'))['db'][_0x47a5('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x47a5('0x3'),'afterUpdate':_0x47a5('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5f7f12){return function(_0x11bf85,_0x2a1a7e,_0x3717e1){PluginEvents[_0x47a5('0x5')](_0x5f7f12+':'+_0x11bf85['id'],_0x11bf85);PluginEvents['emit'](_0x5f7f12,_0x11bf85);_0x3717e1(null);};}for(var e in events){if(events[_0x47a5('0x6')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x47a5('0x7')]=PluginEvents;
\ No newline at end of file
index 0b4ae44..1498a8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c02=['plugins','lodash','util','../../config/logger','api','moment','request-promise','define'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x5c02,0xb9));var _0x25c0=function(_0xf63764,_0x16cda9){_0xf63764=_0xf63764-0x0;var _0x48c2b8=_0x5c02[_0xf63764];return _0x48c2b8;};'use strict';var _=require(_0x25c0('0x0'));var util=require(_0x25c0('0x1'));var logger=require(_0x25c0('0x2'))(_0x25c0('0x3'));var moment=require(_0x25c0('0x4'));var BPromise=require('bluebird');var rp=require(_0x25c0('0x5'));var attributes=require('./plugin.attributes');module['exports']=function(_0x8b42fc,_0x166f20){return _0x8b42fc[_0x25c0('0x6')]('Plugin',attributes,{'tableName':_0x25c0('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1843=['api','bluebird','request-promise','./plugin.attributes','exports','define','Plugin','lodash','util'];(function(_0x463b9a,_0x2a9eba){var _0x5f5186=function(_0xb1f6cc){while(--_0xb1f6cc){_0x463b9a['push'](_0x463b9a['shift']());}};_0x5f5186(++_0x2a9eba);}(_0x1843,0x6a));var _0x3184=function(_0x3bc541,_0x52d4ec){_0x3bc541=_0x3bc541-0x0;var _0x1a873d=_0x1843[_0x3bc541];return _0x1a873d;};'use strict';var _=require(_0x3184('0x0'));var util=require(_0x3184('0x1'));var logger=require('../../config/logger')(_0x3184('0x2'));var moment=require('moment');var BPromise=require(_0x3184('0x3'));var rp=require(_0x3184('0x4'));var attributes=require(_0x3184('0x5'));module[_0x3184('0x6')]=function(_0x5e43fb,_0x397b9d){return _0x5e43fb[_0x3184('0x7')](_0x3184('0x8'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2841378..e4524ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bdd=['error','code','message','catch','Plugin','create','body','options','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','then','info','Plugin,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x5e8c5a,_0x55f183){var _0xac732d=function(_0x970d4b){while(--_0x970d4b){_0x5e8c5a['push'](_0x5e8c5a['shift']());}};_0xac732d(++_0x55f183);}(_0x0bdd,0x1ea));var _0xd0bd=function(_0x50e545,_0x342948){_0x50e545=_0x50e545-0x0;var _0x181af8=_0x0bdd[_0x50e545];return _0x181af8;};'use strict';var _=require(_0xd0bd('0x0'));var util=require(_0xd0bd('0x1'));var moment=require(_0xd0bd('0x2'));var BPromise=require(_0xd0bd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd0bd('0x4'));var db=require(_0xd0bd('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd0bd('0x6'))(_0xd0bd('0x7'));var config=require('../../config/environment');var jayson=require(_0xd0bd('0x8'));var client=jayson[_0xd0bd('0x9')][_0xd0bd('0xa')]({'port':0x232a});config[_0xd0bd('0xb')]=_[_0xd0bd('0xc')](config[_0xd0bd('0xb')],{'host':_0xd0bd('0xd'),'port':0x18eb});var socket=require(_0xd0bd('0xe'))(new Redis(config[_0xd0bd('0xb')]));require(_0xd0bd('0xf'))[_0xd0bd('0x10')](socket);function respondWithRpcPromise(_0x5bb83c,_0x469100,_0x4891a5){return new BPromise(function(_0x3d9a07,_0x4b5288){return client['request'](_0x5bb83c,_0x4891a5)[_0xd0bd('0x11')](function(_0x4ca607){logger[_0xd0bd('0x12')](_0xd0bd('0x13'),_0x469100,'request\x20sent');logger[_0xd0bd('0x14')]('Plugin,\x20%s,\x20%s,\x20%s',_0x469100,_0xd0bd('0x15'),JSON['stringify'](_0x4ca607));if(_0x4ca607[_0xd0bd('0x16')]){if(_0x4ca607[_0xd0bd('0x16')][_0xd0bd('0x17')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x469100,_0x4ca607[_0xd0bd('0x16')][_0xd0bd('0x18')]);return _0x4b5288(_0x4ca607[_0xd0bd('0x16')]['message']);}logger[_0xd0bd('0x16')](_0xd0bd('0x13'),_0x469100,_0x4ca607['error']['message']);return _0x3d9a07(_0x4ca607[_0xd0bd('0x16')]['message']);}else{logger['info'](_0xd0bd('0x13'),_0x469100,_0xd0bd('0x15'));_0x3d9a07(_0x4ca607['result'][_0xd0bd('0x18')]);}})[_0xd0bd('0x19')](function(_0x41ba02){logger[_0xd0bd('0x16')](_0xd0bd('0x13'),_0x469100,_0x41ba02);_0x4b5288(_0x41ba02);});});}exports['CreatePlugin']=function(_0x1ed3bb){var _0xdd7363=this;return new Promise(function(_0x32f13d,_0x5b7766){return db[_0xd0bd('0x1a')][_0xd0bd('0x1b')](_0x1ed3bb[_0xd0bd('0x1c')],{'raw':_0x1ed3bb[_0xd0bd('0x1d')]?_0x1ed3bb[_0xd0bd('0x1d')][_0xd0bd('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x162235){logger['info']('CreatePlugin',_0x1ed3bb);logger[_0xd0bd('0x14')]('CreatePlugin',_0x1ed3bb,JSON[_0xd0bd('0x1f')](_0x162235));_0x32f13d(_0x162235);})['catch'](function(_0x11d3cf){logger[_0xd0bd('0x16')]('CreatePlugin',_0x11d3cf[_0xd0bd('0x18')],_0x1ed3bb);_0x5b7766(_0xdd7363[_0xd0bd('0x16')](0x1f4,_0x11d3cf['message']));});});};
\ No newline at end of file
+var _0x06eb=['http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','Plugin,\x20%s,\x20%s','request\x20sent','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreatePlugin','Plugin','create','body','options','raw','info','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x485507,_0x9ab47f){var _0x1f79e7=function(_0x2670c9){while(--_0x2670c9){_0x485507['push'](_0x485507['shift']());}};_0x1f79e7(++_0x9ab47f);}(_0x06eb,0x1c8));var _0xb06e=function(_0x46be29,_0x7adaa4){_0x46be29=_0x46be29-0x0;var _0x78c78e=_0x06eb[_0x46be29];return _0x78c78e;};'use strict';var _=require(_0xb06e('0x0'));var util=require(_0xb06e('0x1'));var moment=require(_0xb06e('0x2'));var BPromise=require(_0xb06e('0x3'));var rs=require(_0xb06e('0x4'));var fs=require('fs');var Redis=require(_0xb06e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb06e('0x6'));var logger=require(_0xb06e('0x7'))(_0xb06e('0x8'));var config=require(_0xb06e('0x9'));var jayson=require(_0xb06e('0xa'));var client=jayson[_0xb06e('0xb')][_0xb06e('0xc')]({'port':0x232a});config[_0xb06e('0xd')]=_[_0xb06e('0xe')](config['redis'],{'host':_0xb06e('0xf'),'port':0x18eb});var socket=require(_0xb06e('0x10'))(new Redis(config[_0xb06e('0xd')]));require(_0xb06e('0x11'))[_0xb06e('0x12')](socket);function respondWithRpcPromise(_0x1626dd,_0x5892a2,_0x555785){return new BPromise(function(_0x4554e5,_0x5428b5){return client[_0xb06e('0x13')](_0x1626dd,_0x555785)['then'](function(_0x224037){logger['info'](_0xb06e('0x14'),_0x5892a2,_0xb06e('0x15'));logger['debug'](_0xb06e('0x16'),_0x5892a2,_0xb06e('0x15'),JSON[_0xb06e('0x17')](_0x224037));if(_0x224037[_0xb06e('0x18')]){if(_0x224037['error'][_0xb06e('0x19')]===0x1f4){logger[_0xb06e('0x18')](_0xb06e('0x14'),_0x5892a2,_0x224037[_0xb06e('0x18')]['message']);return _0x5428b5(_0x224037[_0xb06e('0x18')][_0xb06e('0x1a')]);}logger[_0xb06e('0x18')](_0xb06e('0x14'),_0x5892a2,_0x224037[_0xb06e('0x18')][_0xb06e('0x1a')]);return _0x4554e5(_0x224037[_0xb06e('0x18')][_0xb06e('0x1a')]);}else{logger['info'](_0xb06e('0x14'),_0x5892a2,_0xb06e('0x15'));_0x4554e5(_0x224037['result'][_0xb06e('0x1a')]);}})['catch'](function(_0x56b915){logger[_0xb06e('0x18')](_0xb06e('0x14'),_0x5892a2,_0x56b915);_0x5428b5(_0x56b915);});});}exports[_0xb06e('0x1b')]=function(_0x2fe321){var _0x22fd36=this;return new Promise(function(_0x1bf850,_0x27723d){return db[_0xb06e('0x1c')][_0xb06e('0x1d')](_0x2fe321[_0xb06e('0x1e')],{'raw':_0x2fe321['options']?_0x2fe321[_0xb06e('0x1f')][_0xb06e('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x4aa8e7){logger[_0xb06e('0x21')](_0xb06e('0x1b'),_0x2fe321);logger[_0xb06e('0x22')](_0xb06e('0x1b'),_0x2fe321,JSON[_0xb06e('0x17')](_0x4aa8e7));_0x1bf850(_0x4aa8e7);})[_0xb06e('0x23')](function(_0xdb4161){logger[_0xb06e('0x18')](_0xb06e('0x1b'),_0xdb4161[_0xb06e('0x1a')],_0x2fe321);_0x27723d(_0x22fd36[_0xb06e('0x18')](0x1f4,_0xdb4161[_0xb06e('0x1a')]));});});};
\ No newline at end of file
index 55f9bf6..5c65c9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcaa=['plugin:','emit'];(function(_0x3a8a1e,_0x216ab1){var _0x5c3073=function(_0x40267c){while(--_0x40267c){_0x3a8a1e['push'](_0x3a8a1e['shift']());}};_0x5c3073(++_0x216ab1);}(_0xfcaa,0x1ef));var _0xafca=function(_0x44da88,_0x3950e5){_0x44da88=_0x44da88-0x0;var _0x461fbe=_0xfcaa[_0x44da88];return _0x461fbe;};'use strict';var PluginEvents=require('./plugin.events');var events=['save','remove','update'];function createListener(_0x2be5ef,_0x30f6ef){return function(_0x371394){_0x30f6ef[_0xafca('0x0')](_0x2be5ef,_0x371394);};}function removeListener(_0xbf2572,_0x5af308){return function(){PluginEvents['removeListener'](_0xbf2572,_0x5af308);};}exports['register']=function(_0x1de809){for(var _0x5cdb61=0x0,_0xdfa386=events['length'];_0x5cdb61<_0xdfa386;_0x5cdb61++){var _0xa47d3b=events[_0x5cdb61];var _0x4a04d4=createListener(_0xafca('0x1')+_0xa47d3b,_0x1de809);PluginEvents['on'](_0xa47d3b,_0x4a04d4);}};
\ No newline at end of file
+var _0x3586=['save','remove','emit','removeListener','register','length','./plugin.events'];(function(_0x476035,_0x4f1764){var _0xc979ce=function(_0x307546){while(--_0x307546){_0x476035['push'](_0x476035['shift']());}};_0xc979ce(++_0x4f1764);}(_0x3586,0x92));var _0x6358=function(_0x649a3b,_0x2b1cf5){_0x649a3b=_0x649a3b-0x0;var _0x8ec5a5=_0x3586[_0x649a3b];return _0x8ec5a5;};'use strict';var PluginEvents=require(_0x6358('0x0'));var events=[_0x6358('0x1'),_0x6358('0x2'),'update'];function createListener(_0xb6f070,_0x5e56ea){return function(_0x5b3487){_0x5e56ea[_0x6358('0x3')](_0xb6f070,_0x5b3487);};}function removeListener(_0x58c0ab,_0x7116ea){return function(){PluginEvents[_0x6358('0x4')](_0x58c0ab,_0x7116ea);};}exports[_0x6358('0x5')]=function(_0x470d49){for(var _0x2c73ae=0x0,_0x17b014=events[_0x6358('0x6')];_0x2c73ae<_0x17b014;_0x2c73ae++){var _0x593e38=events[_0x2c73ae];var _0x5a76fe=createListener('plugin:'+_0x593e38,_0x470d49);PluginEvents['on'](_0x593e38,_0x5a76fe);}};
\ No newline at end of file
index 35b60d1..40435ff 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(_0x30f9b1,_0xe489f4){var _0x128fd6=function(_0x187f0f){while(--_0x187f0f){_0x30f9b1['push'](_0x30f9b1['shift']());}};_0x128fd6(++_0xe489f4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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(_0x41c223,_0x26ff92){var _0x345695=function(_0x3b0b10){while(--_0x3b0b10){_0x41c223['push'](_0x41c223['shift']());}};_0x345695(++_0x26ff92);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'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 847b489..cdc3106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b12=['../../config/pm2','api','child_process','sendStatus','status','error','stack','name','send','info','index','then','express','motion2','catch','show','params','create','body','script','join','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','Unknown\x20status','delete','lodash'];(function(_0x1fafa5,_0x1aa281){var _0xcf08c9=function(_0x3af1b4){while(--_0x3af1b4){_0x1fafa5['push'](_0x1fafa5['shift']());}};_0xcf08c9(++_0x1aa281);}(_0x9b12,0x83));var _0x29b1=function(_0x10f445,_0x5777ea){_0x10f445=_0x10f445-0x0;var _0x35c568=_0x9b12[_0x10f445];return _0x35c568;};'use strict';var _=require(_0x29b1('0x0'));var pm2=require(_0x29b1('0x1'));var logger=require('../../config/logger')(_0x29b1('0x2'));var path=require('path');var exec=require(_0x29b1('0x3'))['exec'];var BPromise=require('bluebird');function handleEntityNotFound(_0x45a1fe,_0x26a172){return function(_0xe4fb09){if(!_0xe4fb09){_0x45a1fe[_0x29b1('0x4')](0x194);;}return _0xe4fb09;};}function respondWithResult(_0x42af9b,_0x1a17c4){_0x1a17c4=_0x1a17c4||0xc8;return function(_0x5085e6){if(_0x5085e6){return _0x42af9b[_0x29b1('0x5')](_0x1a17c4)['json'](_0x5085e6);}return null;};}function handleError(_0x21dbee,_0x296b84){_0x296b84=_0x296b84||0x1f4;return function(_0x22be68){logger[_0x29b1('0x6')](_0x22be68[_0x29b1('0x7')]);if(_0x22be68[_0x29b1('0x8')]){delete _0x22be68[_0x29b1('0x8')];}_0x21dbee['status'](_0x296b84)[_0x29b1('0x9')](_0x22be68);};}function execChildProcess(){return new BPromise(function(_0x2552d7,_0x24bf4b){exec('npm\x20install',function(_0x4c5170,_0x540070,_0x5309aa){logger[_0x29b1('0xa')](_0x540070);logger[_0x29b1('0xa')](_0x5309aa);if(_0x4c5170){logger[_0x29b1('0x6')](_0x4c5170);return _0x24bf4b(_0x4c5170);}return _0x2552d7(_0x540070);});});}exports[_0x29b1('0xb')]=function(_0x35b81f,_0x3cc941){return pm2['list']()[_0x29b1('0xc')](function(_0x562fe2){if(_0x562fe2){var _0x3c3d15=_['reject'](_0x562fe2,function(_0xfb4829){return _0xfb4829[_0x29b1('0x8')]===_0x29b1('0xd')||_0xfb4829[_0x29b1('0x8')]===_0x29b1('0xe');});return{'rows':_0x3c3d15,'count':_0x3c3d15['length']};}return null;})[_0x29b1('0xc')](respondWithResult(_0x3cc941,null))[_0x29b1('0xf')](handleError(_0x3cc941,null));};exports[_0x29b1('0x10')]=function(_0x162003,_0x1ca56c){return pm2['describe'](_0x162003[_0x29b1('0x11')]['id'])[_0x29b1('0xc')](respondWithResult(_0x1ca56c,null))[_0x29b1('0xc')](handleEntityNotFound(_0x1ca56c,null))['catch'](handleError(_0x1ca56c,null));};exports[_0x29b1('0x12')]=function(_0x5b528b,_0x32d8e8){if(_0x5b528b['body']['name']&&_0x5b528b[_0x29b1('0x13')][_0x29b1('0x14')]){var _0x448d32=path[_0x29b1('0x15')](__dirname,'../../files/plugins',_0x5b528b['body'][_0x29b1('0x14')]);var _0x1284ff=process['cwd']();process[_0x29b1('0x16')](path[_0x29b1('0x17')](_0x448d32));return execChildProcess()[_0x29b1('0xc')](function(_0x11a56d){process[_0x29b1('0x16')](_0x1284ff);return pm2[_0x29b1('0x18')]({'name':_0x5b528b[_0x29b1('0x13')]['name'],'script':_0x448d32});})[_0x29b1('0xc')](function(_0x26e254){pm2[_0x29b1('0x19')]();return _0x26e254[0x0];})[_0x29b1('0xc')](respondWithResult(_0x32d8e8,0xc9))['catch'](handleError(_0x32d8e8,null));}else{return _0x32d8e8['status'](0x1f4)[_0x29b1('0x9')]({'message':_0x29b1('0x1a')});}};exports[_0x29b1('0x1b')]=function(_0x39c5bb,_0xcadd86){if(_0x39c5bb[_0x29b1('0x13')]['id']){delete _0x39c5bb[_0x29b1('0x13')]['id'];}var _0x2b72a8={'online':_0x29b1('0x1c'),'stopped':_0x29b1('0x1d')};if(_0x2b72a8[_0x29b1('0x1e')](_0x39c5bb['body'][_0x29b1('0x5')])){return pm2[_0x2b72a8[_0x39c5bb['body'][_0x29b1('0x5')]]](_0x39c5bb[_0x29b1('0x11')]['id'])['then'](respondWithResult(_0xcadd86,0xc8))[_0x29b1('0xf')](handleError(_0xcadd86,null));}else{return _0xcadd86['status'](0x1f4)['send']({'message':_0x29b1('0x1f')});}};exports['destroy']=function(_0x229384,_0x14b226){if(_0x229384[_0x29b1('0x13')]['id']){delete _0x229384[_0x29b1('0x13')]['id'];}if(_0x229384[_0x29b1('0x11')]['id']){return pm2[_0x29b1('0x20')](_0x229384['params']['id'])[_0x29b1('0xc')](function(_0x3ddb51){pm2[_0x29b1('0x19')]();return _0x3ddb51[0x0];})[_0x29b1('0xc')](respondWithResult(_0x14b226,null))['catch'](handleError(_0x14b226,null));}else{return _0x14b226[_0x29b1('0x5')](0x1f4)['send']({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0x27bd=['script','join','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','restart','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','path','child_process','sendStatus','status','error','name','send','info','list','then','reject','express','motion2','length','show','params','catch','create','body'];(function(_0x2afd9c,_0x5c5211){var _0x2b033d=function(_0x3d7346){while(--_0x3d7346){_0x2afd9c['push'](_0x2afd9c['shift']());}};_0x2b033d(++_0x5c5211);}(_0x27bd,0x11e));var _0xd27b=function(_0x3fb205,_0x380c2a){_0x3fb205=_0x3fb205-0x0;var _0x249f08=_0x27bd[_0x3fb205];return _0x249f08;};'use strict';var _=require(_0xd27b('0x0'));var pm2=require('../../config/pm2');var logger=require('../../config/logger')('api');var path=require(_0xd27b('0x1'));var exec=require(_0xd27b('0x2'))['exec'];var BPromise=require('bluebird');function handleEntityNotFound(_0x19386d,_0xd187d4){return function(_0x54aa8a){if(!_0x54aa8a){_0x19386d[_0xd27b('0x3')](0x194);;}return _0x54aa8a;};}function respondWithResult(_0x1f5e4c,_0x5e12e1){_0x5e12e1=_0x5e12e1||0xc8;return function(_0x52f18f){if(_0x52f18f){return _0x1f5e4c[_0xd27b('0x4')](_0x5e12e1)['json'](_0x52f18f);}return null;};}function handleError(_0x43bd3a,_0x4e7fdc){_0x4e7fdc=_0x4e7fdc||0x1f4;return function(_0x4bd917){logger[_0xd27b('0x5')](_0x4bd917['stack']);if(_0x4bd917[_0xd27b('0x6')]){delete _0x4bd917[_0xd27b('0x6')];}_0x43bd3a[_0xd27b('0x4')](_0x4e7fdc)[_0xd27b('0x7')](_0x4bd917);};}function execChildProcess(){return new BPromise(function(_0x3ef96f,_0x383769){exec('npm\x20install',function(_0x183efd,_0x283f2f,_0x464cb6){logger[_0xd27b('0x8')](_0x283f2f);logger['info'](_0x464cb6);if(_0x183efd){logger[_0xd27b('0x5')](_0x183efd);return _0x383769(_0x183efd);}return _0x3ef96f(_0x283f2f);});});}exports['index']=function(_0xb0bad5,_0x26f494){return pm2[_0xd27b('0x9')]()[_0xd27b('0xa')](function(_0x4ee6d9){if(_0x4ee6d9){var _0x16acd9=_[_0xd27b('0xb')](_0x4ee6d9,function(_0x268a97){return _0x268a97[_0xd27b('0x6')]===_0xd27b('0xc')||_0x268a97[_0xd27b('0x6')]===_0xd27b('0xd');});return{'rows':_0x16acd9,'count':_0x16acd9[_0xd27b('0xe')]};}return null;})[_0xd27b('0xa')](respondWithResult(_0x26f494,null))['catch'](handleError(_0x26f494,null));};exports[_0xd27b('0xf')]=function(_0x3a6944,_0x43fc06){return pm2['describe'](_0x3a6944[_0xd27b('0x10')]['id'])[_0xd27b('0xa')](respondWithResult(_0x43fc06,null))[_0xd27b('0xa')](handleEntityNotFound(_0x43fc06,null))[_0xd27b('0x11')](handleError(_0x43fc06,null));};exports[_0xd27b('0x12')]=function(_0x23b741,_0x8dd41b){if(_0x23b741[_0xd27b('0x13')][_0xd27b('0x6')]&&_0x23b741['body'][_0xd27b('0x14')]){var _0x3eacc5=path[_0xd27b('0x15')](__dirname,'../../files/plugins',_0x23b741['body'][_0xd27b('0x14')]);var _0x33dbe1=process[_0xd27b('0x16')]();process[_0xd27b('0x17')](path[_0xd27b('0x18')](_0x3eacc5));return execChildProcess()[_0xd27b('0xa')](function(_0x245da5){process[_0xd27b('0x17')](_0x33dbe1);return pm2[_0xd27b('0x19')]({'name':_0x23b741[_0xd27b('0x13')]['name'],'script':_0x3eacc5});})['then'](function(_0x57f080){pm2[_0xd27b('0x1a')]();return _0x57f080[0x0];})[_0xd27b('0xa')](respondWithResult(_0x8dd41b,0xc9))[_0xd27b('0x11')](handleError(_0x8dd41b,null));}else{return _0x8dd41b['status'](0x1f4)[_0xd27b('0x7')]({'message':_0xd27b('0x1b')});}};exports[_0xd27b('0x1c')]=function(_0x54f9dc,_0x21dcb1){if(_0x54f9dc['body']['id']){delete _0x54f9dc[_0xd27b('0x13')]['id'];}var _0x4b169f={'online':_0xd27b('0x1d'),'stopped':'stop'};if(_0x4b169f['hasOwnProperty'](_0x54f9dc['body']['status'])){return pm2[_0x4b169f[_0x54f9dc[_0xd27b('0x13')]['status']]](_0x54f9dc['params']['id'])[_0xd27b('0xa')](respondWithResult(_0x21dcb1,0xc8))[_0xd27b('0x11')](handleError(_0x21dcb1,null));}else{return _0x21dcb1['status'](0x1f4)[_0xd27b('0x7')]({'message':_0xd27b('0x1e')});}};exports[_0xd27b('0x1f')]=function(_0x14dd49,_0x5db95e){if(_0x14dd49['body']['id']){delete _0x14dd49['body']['id'];}if(_0x14dd49['params']['id']){return pm2[_0xd27b('0x20')](_0x14dd49['params']['id'])[_0xd27b('0xa')](function(_0x48f3b4){pm2[_0xd27b('0x1a')]();return _0x48f3b4[0x0];})[_0xd27b('0xa')](respondWithResult(_0x5db95e,null))['catch'](handleError(_0x5db95e,null));}else{return _0x5db95e['status'](0x1f4)['send']({'message':_0xd27b('0x21')});}};
\ No newline at end of file
index d115f51..e2b0e92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e69=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x3d4a82,_0x233395){var _0x5ab41d=function(_0x501cc8){while(--_0x501cc8){_0x3d4a82['push'](_0x3d4a82['shift']());}};_0x5ab41d(++_0x233395);}(_0x9e69,0x150));var _0x99e6=function(_0x4e9b5c,_0x2d1a54){_0x4e9b5c=_0x4e9b5c-0x0;var _0x35d59b=_0x9e69[_0x4e9b5c];return _0x35d59b;};'use strict';var multer=require('multer');var util=require(_0x99e6('0x0'));var path=require(_0x99e6('0x1'));var timeout=require(_0x99e6('0x2'));var express=require(_0x99e6('0x3'));var router=express['Router']();var auth=require(_0x99e6('0x4'));var interaction=require(_0x99e6('0x5'));var config=require('../../config/environment');module[_0x99e6('0x6')]=router;
\ No newline at end of file
+var _0x9e69=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x56d006,_0x5b5aff){var _0x3a4dc5=function(_0x7ae17b){while(--_0x7ae17b){_0x56d006['push'](_0x56d006['shift']());}};_0x3a4dc5(++_0x5b5aff);}(_0x9e69,0x150));var _0x99e6=function(_0x597a04,_0x447866){_0x597a04=_0x597a04-0x0;var _0x3a85c6=_0x9e69[_0x597a04];return _0x3a85c6;};'use strict';var multer=require('multer');var util=require(_0x99e6('0x0'));var path=require(_0x99e6('0x1'));var timeout=require(_0x99e6('0x2'));var express=require(_0x99e6('0x3'));var router=express['Router']();var auth=require(_0x99e6('0x4'));var interaction=require(_0x99e6('0x5'));var config=require('../../config/environment');module[_0x99e6('0x6')]=router;
\ No newline at end of file
index 05db33b..2694853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7359=['STRING','DATE','sequelize','INTEGER'];(function(_0x2cc9f8,_0x1bb2be){var _0x4fa9b5=function(_0x4463f6){while(--_0x4463f6){_0x2cc9f8['push'](_0x2cc9f8['shift']());}};_0x4fa9b5(++_0x1bb2be);}(_0x7359,0x15a));var _0x9735=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0x7359[_0x3826ad];return _0x17b900;};'use strict';var Sequelize=require(_0x9735('0x0'));module['exports']={'state':{'type':Sequelize[_0x9735('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x9735('0x2')]},'scheduledat':{'type':Sequelize[_0x9735('0x3')]},'uniqueid':{'type':Sequelize[_0x9735('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x9735('0x3')]},'ringtime':{'type':Sequelize[_0x9735('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x9735('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x9735('0x2')]}};
\ No newline at end of file
+var _0x027a=['sequelize','exports','INTEGER','STRING','DATE'];(function(_0x5c4a77,_0x53a55c){var _0x3b7b29=function(_0x7ded41){while(--_0x7ded41){_0x5c4a77['push'](_0x5c4a77['shift']());}};_0x3b7b29(++_0x53a55c);}(_0x027a,0x109));var _0xa027=function(_0x3e5ccd,_0x348dff){_0x3e5ccd=_0x3e5ccd-0x0;var _0x2eff71=_0x027a[_0x3e5ccd];return _0x2eff71;};'use strict';var Sequelize=require(_0xa027('0x0'));module[_0xa027('0x1')]={'state':{'type':Sequelize[_0xa027('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xa027('0x3')]},'scheduledat':{'type':Sequelize[_0xa027('0x4')]},'uniqueid':{'type':Sequelize[_0xa027('0x3')]},'starttime':{'type':Sequelize[_0xa027('0x4')]},'responsetime':{'type':Sequelize[_0xa027('0x4')]},'ringtime':{'type':Sequelize[_0xa027('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xa027('0x3')]},'campaigntype':{'type':Sequelize[_0xa027('0x3')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 34f5ca9..3f67d49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5d4=['ReportAgentPreview','report_agent_preview','lodash','util','moment','bluebird','./reportAgentPreview.attributes','define'];(function(_0x19c64f,_0x2ae7d2){var _0x47bac7=function(_0x5a3fad){while(--_0x5a3fad){_0x19c64f['push'](_0x19c64f['shift']());}};_0x47bac7(++_0x2ae7d2);}(_0xf5d4,0x10a));var _0x4f5d=function(_0xf7a4d8,_0x3fcb8d){_0xf7a4d8=_0xf7a4d8-0x0;var _0x3104b7=_0xf5d4[_0xf7a4d8];return _0x3104b7;};'use strict';var _=require(_0x4f5d('0x0'));var util=require(_0x4f5d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4f5d('0x2'));var BPromise=require(_0x4f5d('0x3'));var rp=require('request-promise');var attributes=require(_0x4f5d('0x4'));module['exports']=function(_0x25e8de,_0x2131cf){return _0x25e8de[_0x4f5d('0x5')](_0x4f5d('0x6'),attributes,{'tableName':_0x4f5d('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4de9=['moment','request-promise','./reportAgentPreview.attributes','ReportAgentPreview','report_agent_preview','util','../../config/logger'];(function(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0x4de9,0xde));var _0x94de=function(_0x301c34,_0x15701e){_0x301c34=_0x301c34-0x0;var _0x1a8c5a=_0x4de9[_0x301c34];return _0x1a8c5a;};'use strict';var _=require('lodash');var util=require(_0x94de('0x0'));var logger=require(_0x94de('0x1'))('api');var moment=require(_0x94de('0x2'));var BPromise=require('bluebird');var rp=require(_0x94de('0x3'));var attributes=require(_0x94de('0x4'));module['exports']=function(_0x116003,_0x5e1237){return _0x116003['define'](_0x94de('0x5'),attributes,{'tableName':_0x94de('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 055fc42..20b0120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x506a=['ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','code','ReportAgentPreview,\x20%s,\x20%s','message','result','catch','create','body','CreateReportAgentPreview','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug'];(function(_0xcaea3e,_0x281e07){var _0x2c63b1=function(_0x159b9b){while(--_0x159b9b){_0xcaea3e['push'](_0xcaea3e['shift']());}};_0x2c63b1(++_0x281e07);}(_0x506a,0x1c4));var _0xa506=function(_0x5408c1,_0xcbd44d){_0x5408c1=_0x5408c1-0x0;var _0x2d4b74=_0x506a[_0x5408c1];return _0x2d4b74;};'use strict';var _=require(_0xa506('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa506('0x1'));var rs=require(_0xa506('0x2'));var fs=require('fs');var Redis=require(_0xa506('0x3'));var db=require(_0xa506('0x4'))['db'];var utils=require(_0xa506('0x5'));var logger=require(_0xa506('0x6'))(_0xa506('0x7'));var config=require(_0xa506('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa506('0x9')][_0xa506('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x92e8a6,_0x1b5fc8,_0x58909f){return new BPromise(function(_0x2aeeb9,_0x37fa89){return client[_0xa506('0xb')](_0x92e8a6,_0x58909f)[_0xa506('0xc')](function(_0x56dcad){logger[_0xa506('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x1b5fc8,_0xa506('0xe'));logger[_0xa506('0xf')](_0xa506('0x10'),_0x1b5fc8,_0xa506('0xe'),JSON['stringify'](_0x56dcad));if(_0x56dcad[_0xa506('0x11')]){if(_0x56dcad['error'][_0xa506('0x12')]===0x1f4){logger[_0xa506('0x11')](_0xa506('0x13'),_0x1b5fc8,_0x56dcad['error'][_0xa506('0x14')]);return _0x37fa89(_0x56dcad[_0xa506('0x11')][_0xa506('0x14')]);}logger[_0xa506('0x11')](_0xa506('0x13'),_0x1b5fc8,_0x56dcad[_0xa506('0x11')][_0xa506('0x14')]);return _0x2aeeb9(_0x56dcad[_0xa506('0x11')][_0xa506('0x14')]);}else{logger[_0xa506('0xd')](_0xa506('0x13'),_0x1b5fc8,'request\x20sent');_0x2aeeb9(_0x56dcad[_0xa506('0x15')]['message']);}})[_0xa506('0x16')](function(_0x29092d){logger[_0xa506('0x11')](_0xa506('0x13'),_0x1b5fc8,_0x29092d);_0x37fa89(_0x29092d);});});}exports['CreateReportAgentPreview']=function(_0x358ebf){var _0x240f8c=this;return new Promise(function(_0x4e8044,_0xc6314d){return db['ReportAgentPreview'][_0xa506('0x17')](_0x358ebf[_0xa506('0x18')],{'raw':_0x358ebf['options']?_0x358ebf['options']['raw']===undefined?!![]:![]:!![]})[_0xa506('0xc')](function(_0x15c864){logger[_0xa506('0xd')](_0xa506('0x19'),_0x358ebf);logger[_0xa506('0xf')](_0xa506('0x19'),_0x358ebf,JSON['stringify'](_0x15c864));_0x4e8044(_0x15c864);})[_0xa506('0x16')](function(_0x31d883){logger[_0xa506('0x11')]('CreateReportAgentPreview',_0x31d883[_0xa506('0x14')],_0x358ebf);_0xc6314d(_0x240f8c['error'](0x1f4,_0x31d883['message']));});});};
\ No newline at end of file
+var _0xeb3d=['moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ReportAgentPreview','create','options','raw','CreateReportAgentPreview','stringify','lodash','util'];(function(_0x3c4062,_0x3767fc){var _0x3f5bf3=function(_0x105e55){while(--_0x105e55){_0x3c4062['push'](_0x3c4062['shift']());}};_0x3f5bf3(++_0x3767fc);}(_0xeb3d,0x116));var _0xdeb3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xeb3d[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xdeb3('0x0'));var util=require(_0xdeb3('0x1'));var moment=require(_0xdeb3('0x2'));var BPromise=require(_0xdeb3('0x3'));var rs=require(_0xdeb3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xdeb3('0x5'));var logger=require(_0xdeb3('0x6'))('rpc');var config=require(_0xdeb3('0x7'));var jayson=require(_0xdeb3('0x8'));var client=jayson[_0xdeb3('0x9')][_0xdeb3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5258d0,_0x269670,_0x46c362){return new BPromise(function(_0xecd06a,_0x1d2c2){return client['request'](_0x5258d0,_0x46c362)[_0xdeb3('0xb')](function(_0x4b9572){logger[_0xdeb3('0xc')](_0xdeb3('0xd'),_0x269670,_0xdeb3('0xe'));logger[_0xdeb3('0xf')](_0xdeb3('0x10'),_0x269670,_0xdeb3('0xe'),JSON['stringify'](_0x4b9572));if(_0x4b9572[_0xdeb3('0x11')]){if(_0x4b9572[_0xdeb3('0x11')][_0xdeb3('0x12')]===0x1f4){logger[_0xdeb3('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x269670,_0x4b9572['error'][_0xdeb3('0x13')]);return _0x1d2c2(_0x4b9572[_0xdeb3('0x11')][_0xdeb3('0x13')]);}logger[_0xdeb3('0x11')](_0xdeb3('0xd'),_0x269670,_0x4b9572[_0xdeb3('0x11')][_0xdeb3('0x13')]);return _0xecd06a(_0x4b9572[_0xdeb3('0x11')]['message']);}else{logger['info'](_0xdeb3('0xd'),_0x269670,'request\x20sent');_0xecd06a(_0x4b9572[_0xdeb3('0x14')][_0xdeb3('0x13')]);}})[_0xdeb3('0x15')](function(_0x1329ce){logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x269670,_0x1329ce);_0x1d2c2(_0x1329ce);});});}exports['CreateReportAgentPreview']=function(_0x532935){var _0x3eb132=this;return new Promise(function(_0x5270e5,_0x4e8bfe){return db[_0xdeb3('0x16')][_0xdeb3('0x17')](_0x532935['body'],{'raw':_0x532935[_0xdeb3('0x18')]?_0x532935[_0xdeb3('0x18')][_0xdeb3('0x19')]===undefined?!![]:![]:!![]})[_0xdeb3('0xb')](function(_0x3d6ebd){logger['info'](_0xdeb3('0x1a'),_0x532935);logger['debug'](_0xdeb3('0x1a'),_0x532935,JSON[_0xdeb3('0x1b')](_0x3d6ebd));_0x5270e5(_0x3d6ebd);})[_0xdeb3('0x15')](function(_0x52f391){logger[_0xdeb3('0x11')](_0xdeb3('0x1a'),_0x52f391[_0xdeb3('0x13')],_0x532935);_0x4e8bfe(_0x3eb132[_0xdeb3('0x11')](0x1f4,_0x52f391[_0xdeb3('0x13')]));});});};
\ No newline at end of file
index e9b265d..72238b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27eb=['post','/mail/queues/:id/notify','queueNotify','/chat/queues/:id','/fax/queues/:id/notify','fax','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/sms/queues/:id','/agents/:id/notify','agentNotify','multer','util','Router','../../components/auth/service','./rpc.controller','/voice/channels','isAuthenticated','voiceChannels','get','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','voiceQueues','chatQueues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','outbound','outboundChannels','/agents','put','agentCapacity','/telephones','trunks','/campaigns','campaigns','/fax/accounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions'];(function(_0x1ecddf,_0x57719f){var _0x18057c=function(_0x125673){while(--_0x125673){_0x1ecddf['push'](_0x1ecddf['shift']());}};_0x18057c(++_0x57719f);}(_0x27eb,0xd0));var _0xb27e=function(_0x2164e0,_0xd47ee5){_0x2164e0=_0x2164e0-0x0;var _0x2ae0eb=_0x27eb[_0x2164e0];return _0x2ae0eb;};'use strict';var multer=require(_0xb27e('0x0'));var util=require(_0xb27e('0x1'));var path=require('path');var express=require('express');var router=express[_0xb27e('0x2')]();var auth=require(_0xb27e('0x3'));var controller=require(_0xb27e('0x4'));router['get'](_0xb27e('0x5'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x7')]);router[_0xb27e('0x8')]('/voice/channels/:uniqueid/mixmonitor',auth[_0xb27e('0x6')](),controller[_0xb27e('0x9')]);router[_0xb27e('0x8')](_0xb27e('0xa'),auth[_0xb27e('0x6')](),controller['voiceChannelStopMixMonitor']);router[_0xb27e('0x8')](_0xb27e('0xb'),auth[_0xb27e('0x6')](),controller[_0xb27e('0xc')]);router[_0xb27e('0x8')]('/chat/queues',auth[_0xb27e('0x6')](),controller[_0xb27e('0xd')]);router['get']('/mail/queues',auth[_0xb27e('0x6')](),controller['mailQueues']);router[_0xb27e('0x8')](_0xb27e('0xe'),auth['isAuthenticated'](),controller['mailAccounts']);router['get'](_0xb27e('0xf'),auth['isAuthenticated'](),controller[_0xb27e('0x10')]);router['get'](_0xb27e('0x11'),auth['isAuthenticated'](),controller[_0xb27e('0x12')]);router[_0xb27e('0x8')](_0xb27e('0x13'),auth['isAuthenticated'](),controller[_0xb27e('0x14')]);router[_0xb27e('0x8')](_0xb27e('0x15'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x16')]);router[_0xb27e('0x8')](_0xb27e('0x17'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x18')]);router['get'](_0xb27e('0x19'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x1a')]);router['get'](_0xb27e('0x1b'),auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router[_0xb27e('0x8')](_0xb27e('0x1c'),auth['isAuthenticated'](),controller[_0xb27e('0x1d')]);router[_0xb27e('0x8')](_0xb27e('0x1e'),auth[_0xb27e('0x6')](),controller['showVoiceQueues']);router[_0xb27e('0x8')]('/outbound',auth[_0xb27e('0x6')](),controller[_0xb27e('0x1f')]);router['get']('/outbound/channels',auth[_0xb27e('0x6')](),controller[_0xb27e('0x20')]);router[_0xb27e('0x8')](_0xb27e('0x21'),auth[_0xb27e('0x6')](),controller['agents']);router[_0xb27e('0x22')]('/agents/:id/capacity',auth[_0xb27e('0x6')](),controller[_0xb27e('0x23')]);router[_0xb27e('0x8')](_0xb27e('0x24'),auth[_0xb27e('0x6')](),controller['telephones']);router[_0xb27e('0x8')]('/trunks',auth[_0xb27e('0x6')](),controller[_0xb27e('0x25')]);router[_0xb27e('0x8')](_0xb27e('0x26'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x27')]);router[_0xb27e('0x8')](_0xb27e('0x28'),auth[_0xb27e('0x6')](),controller['faxAccounts']);router[_0xb27e('0x8')](_0xb27e('0x29'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x2a')]);router['get'](_0xb27e('0x2b'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x2c')]);router[_0xb27e('0x8')](_0xb27e('0x2d'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x2e')]);router['get']('/sms/queues/waitinginteractions',auth[_0xb27e('0x6')](),controller['smsQueuesWaitingInteractions']);router[_0xb27e('0x8')]('/fax/queues/waitinginteractions',auth[_0xb27e('0x6')](),controller[_0xb27e('0x2f')]);router[_0xb27e('0x30')](_0xb27e('0x31'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x32')]('mail'));router[_0xb27e('0x8')]('/mail/queues/:id',auth[_0xb27e('0x6')](),controller['showMailQueues']);router[_0xb27e('0x30')]('/chat/queues/:id/notify',auth[_0xb27e('0x6')](),controller[_0xb27e('0x32')]('chat'));router['get'](_0xb27e('0x33'),auth['isAuthenticated'](),controller['showChatQueues']);router['post'](_0xb27e('0x34'),auth[_0xb27e('0x6')](),controller['queueNotify'](_0xb27e('0x35')));router[_0xb27e('0x8')]('/fax/queues/:id',auth['isAuthenticated'](),controller[_0xb27e('0x36')]);router['post'](_0xb27e('0x37'),auth['isAuthenticated'](),controller[_0xb27e('0x32')](_0xb27e('0x38')));router[_0xb27e('0x8')](_0xb27e('0x39'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x3a')]);router[_0xb27e('0x30')](_0xb27e('0x3b'),auth['isAuthenticated'](),controller[_0xb27e('0x32')](_0xb27e('0x3c')));router[_0xb27e('0x8')](_0xb27e('0x3d'),auth[_0xb27e('0x6')](),controller['showSmsQueues']);router['post'](_0xb27e('0x3e'),auth[_0xb27e('0x6')](),controller[_0xb27e('0x3f')]);module['exports']=router;
\ No newline at end of file
+var _0xa342=['/fax/queues/:id/notify','fax','showFaxQueues','/openchannel/queues/:id/notify','/sms/queues/:id/notify','sms','/sms/queues/:id','showSmsQueues','/agents/:id/notify','agentNotify','exports','util','path','express','Router','./rpc.controller','voiceChannels','get','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','smsQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','/outbound','/outbound/channels','outboundChannels','/agents','agents','put','/agents/:id/capacity','agentCapacity','/telephones','telephones','trunks','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','queueNotify','/chat/queues/:id'];(function(_0x35d0df,_0x1208e5){var _0x50bb6c=function(_0x2fecc6){while(--_0x2fecc6){_0x35d0df['push'](_0x35d0df['shift']());}};_0x50bb6c(++_0x1208e5);}(_0xa342,0x99));var _0x2a34=function(_0x33cfd9,_0x5965aa){_0x33cfd9=_0x33cfd9-0x0;var _0x157e83=_0xa342[_0x33cfd9];return _0x157e83;};'use strict';var multer=require('multer');var util=require(_0x2a34('0x0'));var path=require(_0x2a34('0x1'));var express=require(_0x2a34('0x2'));var router=express[_0x2a34('0x3')]();var auth=require('../../components/auth/service');var controller=require(_0x2a34('0x4'));router['get']('/voice/channels',auth['isAuthenticated'](),controller[_0x2a34('0x5')]);router[_0x2a34('0x6')]('/voice/channels/:uniqueid/mixmonitor',auth[_0x2a34('0x7')](),controller[_0x2a34('0x8')]);router[_0x2a34('0x6')](_0x2a34('0x9'),auth[_0x2a34('0x7')](),controller['voiceChannelStopMixMonitor']);router[_0x2a34('0x6')](_0x2a34('0xa'),auth[_0x2a34('0x7')](),controller[_0x2a34('0xb')]);router['get'](_0x2a34('0xc'),auth[_0x2a34('0x7')](),controller[_0x2a34('0xd')]);router[_0x2a34('0x6')](_0x2a34('0xe'),auth[_0x2a34('0x7')](),controller[_0x2a34('0xf')]);router['get'](_0x2a34('0x10'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x11')]);router['get'](_0x2a34('0x12'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x13')]);router[_0x2a34('0x6')]('/sms/queues',auth[_0x2a34('0x7')](),controller[_0x2a34('0x14')]);router[_0x2a34('0x6')](_0x2a34('0x15'),auth[_0x2a34('0x7')](),controller['faxQueues']);router['get'](_0x2a34('0x16'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x17')]);router[_0x2a34('0x6')](_0x2a34('0x18'),auth[_0x2a34('0x7')](),controller['voiceQueuesChannels']);router[_0x2a34('0x6')](_0x2a34('0x19'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x1a')]);router[_0x2a34('0x6')](_0x2a34('0x1b'),auth['isAuthenticated'](),controller[_0x2a34('0x1c')]);router[_0x2a34('0x6')](_0x2a34('0x1d'),auth[_0x2a34('0x7')](),controller['voiceQueuesChannelRedirect']);router[_0x2a34('0x6')](_0x2a34('0x1e'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x1f')]);router[_0x2a34('0x6')](_0x2a34('0x20'),auth[_0x2a34('0x7')](),controller['outbound']);router[_0x2a34('0x6')](_0x2a34('0x21'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x22')]);router[_0x2a34('0x6')](_0x2a34('0x23'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x24')]);router[_0x2a34('0x25')](_0x2a34('0x26'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x27')]);router[_0x2a34('0x6')](_0x2a34('0x28'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x29')]);router[_0x2a34('0x6')]('/trunks',auth[_0x2a34('0x7')](),controller[_0x2a34('0x2a')]);router[_0x2a34('0x6')]('/campaigns',auth[_0x2a34('0x7')](),controller[_0x2a34('0x2b')]);router[_0x2a34('0x6')](_0x2a34('0x2c'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x2d')]);router[_0x2a34('0x6')](_0x2a34('0x2e'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x2f')]);router[_0x2a34('0x6')]('/mail/queues/waitinginteractions',auth[_0x2a34('0x7')](),controller[_0x2a34('0x30')]);router['get']('/openchannel/queues/waitinginteractions',auth['isAuthenticated'](),controller['openchannelQueuesWaitingInteractions']);router['get'](_0x2a34('0x31'),auth['isAuthenticated'](),controller[_0x2a34('0x32')]);router['get'](_0x2a34('0x33'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x34')]);router[_0x2a34('0x35')]('/mail/queues/:id/notify',auth['isAuthenticated'](),controller['queueNotify'](_0x2a34('0x36')));router['get'](_0x2a34('0x37'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x38')]);router[_0x2a34('0x35')](_0x2a34('0x39'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x3a')]('chat'));router['get'](_0x2a34('0x3b'),auth[_0x2a34('0x7')](),controller['showChatQueues']);router[_0x2a34('0x35')](_0x2a34('0x3c'),auth[_0x2a34('0x7')](),controller['queueNotify'](_0x2a34('0x3d')));router[_0x2a34('0x6')]('/fax/queues/:id',auth[_0x2a34('0x7')](),controller[_0x2a34('0x3e')]);router['post'](_0x2a34('0x3f'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x3a')]('openchannel'));router['get']('/openchannel/queues/:id',auth[_0x2a34('0x7')](),controller['showOpenchannelQueues']);router[_0x2a34('0x35')](_0x2a34('0x40'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x3a')](_0x2a34('0x41')));router[_0x2a34('0x6')](_0x2a34('0x42'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x43')]);router[_0x2a34('0x35')](_0x2a34('0x44'),auth[_0x2a34('0x7')](),controller[_0x2a34('0x45')]);module[_0x2a34('0x46')]=router;
\ No newline at end of file
index 1f869ad..805c86b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0791=['VoiceQueues','showVoiceQueues','VoiceQueuesPreview','params','voiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','agents','Agents','agentCapacity','body','user','interaction','hasOwnProperty','findAll','INTERACTION','format','length','MemberReport','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','capacity','telephones','Telephones','Trunks','campaigns','Campaigns','ChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','SmsQueues','showSmsQueues','showFaxQueues','FaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Queue','Message','findOne','Account','\x20Message\x20not\x20found','update','Interaction','queue','MessageId','InteractionId','From','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','Website','User','Agent\x20not\x20found','messageId','moment','lodash','util','../../mysqldb','api','client','http','request','error','code','message','result','catch','status','json','sendStatus','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','then','VoiceChannelStopMixMonitor','voiceQueues'];(function(_0x68fdb0,_0x1229f4){var _0x35881d=function(_0x4d07fe){while(--_0x4d07fe){_0x68fdb0['push'](_0x68fdb0['shift']());}};_0x35881d(++_0x1229f4);}(_0x0791,0x13b));var _0x1079=function(_0x19f9e6,_0x4f59a6){_0x19f9e6=_0x19f9e6-0x0;var _0x45c862=_0x0791[_0x19f9e6];return _0x45c862;};'use strict';var BPromise=require('bluebird');var moment=require(_0x1079('0x0'));var _=require(_0x1079('0x1'));var util=require(_0x1079('0x2'));var db=require(_0x1079('0x3'))['db'];var logger=require('../../config/logger')(_0x1079('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0x1079('0x5')][_0x1079('0x6')]({'port':0x232a});var mailClient=jayson[_0x1079('0x5')][_0x1079('0x6')]({'port':0x232b});var routingClient=jayson['client'][_0x1079('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x50221f,_0x53a857,_0x101481){return new BPromise(function(_0xbbd4e,_0x11b388){var _0x29e094=_0x101481?_0x101481:amiClient;return _0x29e094[_0x1079('0x7')](_0x50221f,_0x53a857)['then'](function(_0x214c6f){if(_0x214c6f[_0x1079('0x8')]){if(_0x214c6f['error'][_0x1079('0x9')]===0x1f4){return _0x11b388(_0x214c6f[_0x1079('0x8')][_0x1079('0xa')]);}return _0xbbd4e(_0x214c6f['error'][_0x1079('0xa')]);}else{_0xbbd4e(_0x214c6f[_0x1079('0xb')]);}})[_0x1079('0xc')](function(_0x4cfb7a){_0x11b388(_0x4cfb7a);});});}function respondWithResult(_0x1c8db9,_0x435bf9){_0x435bf9=_0x435bf9||0xc8;return function(_0x2ff6d2){if(_0x2ff6d2){return _0x1c8db9[_0x1079('0xd')](_0x435bf9)[_0x1079('0xe')](_0x2ff6d2);}return _0x1c8db9[_0x1079('0xf')](0x194);};}function handleError(_0x2d8288,_0x35690d){_0x35690d=_0x35690d||0x1f4;return function(_0x300fad){logger[_0x1079('0x8')](_0x300fad['stack']);if(_0x300fad[_0x1079('0x10')]){delete _0x300fad[_0x1079('0x10')];}_0x2d8288[_0x1079('0xd')](_0x35690d)[_0x1079('0x11')](_0x300fad);};}function findById(_0x40c623){return function(_0x54787e){if(!_['isNil'](_0x40c623)&&!_[_0x1079('0x12')](_0x54787e)&&!_['isNil'](_0x54787e[_0x1079('0x13')])){return _[_0x1079('0x14')](_0x54787e[_0x1079('0x13')],function(_0x578715){return _0x578715['id']==_0x40c623;});}return null;};}exports[_0x1079('0x15')]=function(_0x3be6ea,_0x4cebe9){return respondWithRpcPromise(_0x1079('0x16'),_0x3be6ea[_0x1079('0x17')])['then'](respondWithResult(_0x4cebe9,null))[_0x1079('0xc')](handleError(_0x4cebe9,null));};exports[_0x1079('0x18')]=function(_0x170e7c,_0x1c1887){return respondWithRpcPromise(_0x1079('0x19'),_[_0x1079('0x1a')](_0x170e7c[_0x1079('0x17')],_0x170e7c['params']))[_0x1079('0x1b')](respondWithResult(_0x1c1887,null))[_0x1079('0xc')](handleError(_0x1c1887,null));};exports['voiceChannelStopMixMonitor']=function(_0x5a2b02,_0x15ac67){return respondWithRpcPromise(_0x1079('0x1c'),_[_0x1079('0x1a')](_0x5a2b02[_0x1079('0x17')],_0x5a2b02['params']))[_0x1079('0x1b')](respondWithResult(_0x15ac67,null))[_0x1079('0xc')](handleError(_0x15ac67,null));};exports[_0x1079('0x1d')]=function(_0x49dbee,_0x83aba4){return respondWithRpcPromise(_0x1079('0x1e'),_0x49dbee['query'])[_0x1079('0x1b')](respondWithResult(_0x83aba4,null))[_0x1079('0xc')](handleError(_0x83aba4,null));};exports[_0x1079('0x1f')]=function(_0x4a7fbc,_0x1f361f){return respondWithRpcPromise(_0x1079('0x1e'),_0x4a7fbc[_0x1079('0x17')])[_0x1079('0x1b')](findById(_0x4a7fbc['params']['id']))['then'](respondWithResult(_0x1f361f,null))[_0x1079('0xc')](handleError(_0x1f361f,null));};exports['voiceQueuesPreview']=function(_0x3ac080,_0x4ccb4c){return respondWithRpcPromise(_0x1079('0x20'),_['merge'](_0x3ac080[_0x1079('0x17')],_0x3ac080[_0x1079('0x21')]))[_0x1079('0x1b')](respondWithResult(_0x4ccb4c,null))[_0x1079('0xc')](handleError(_0x4ccb4c,null));};exports[_0x1079('0x22')]=function(_0x26177f,_0x3c921a){return respondWithRpcPromise('VoiceQueuesChannels',_0x26177f[_0x1079('0x17')])['then'](respondWithResult(_0x3c921a,null))['catch'](handleError(_0x3c921a,null));};exports[_0x1079('0x23')]=function(_0x28aa21,_0x490f7f){return respondWithRpcPromise(_0x1079('0x24'),_[_0x1079('0x1a')](_0x28aa21[_0x1079('0x17')],_0x28aa21[_0x1079('0x21')]))['then'](respondWithResult(_0x490f7f,null))[_0x1079('0xc')](handleError(_0x490f7f,null));};exports['voiceQueuesChannelHangup']=function(_0x5f3150,_0x1aebb6){return respondWithRpcPromise(_0x1079('0x25'),_['merge'](_0x5f3150[_0x1079('0x17')],_0x5f3150['params']))[_0x1079('0x1b')](respondWithResult(_0x1aebb6,null))[_0x1079('0xc')](handleError(_0x1aebb6,null));};exports[_0x1079('0x26')]=function(_0x36aee7,_0xeb3119){return respondWithRpcPromise(_0x1079('0x27'),_[_0x1079('0x1a')](_0x36aee7[_0x1079('0x17')],_0x36aee7['params']))['then'](respondWithResult(_0xeb3119,null))[_0x1079('0xc')](handleError(_0xeb3119,null));};exports['outbound']=function(_0x1858b9,_0x4cf411){return respondWithRpcPromise(_0x1079('0x28'),_0x1858b9[_0x1079('0x17')])[_0x1079('0x1b')](respondWithResult(_0x4cf411,null))[_0x1079('0xc')](handleError(_0x4cf411,null));};exports[_0x1079('0x29')]=function(_0x3b38ed,_0x14d9fc){return respondWithRpcPromise('OutboundChannels',_0x3b38ed['query'])[_0x1079('0x1b')](respondWithResult(_0x14d9fc,null))['catch'](handleError(_0x14d9fc,null));};exports[_0x1079('0x2a')]=function(_0x1ca2eb,_0x5d304f){var _0x541749;return respondWithRpcPromise(_0x1079('0x2b'),_0x1ca2eb[_0x1079('0x17')])[_0x1079('0x1b')](function(_0x5cf480){_0x541749=_0x5cf480;return respondWithRpcPromise(_0x1079('0x2b'),_0x1ca2eb[_0x1079('0x17')],routingClient);})[_0x1079('0x1b')](function(_0x394f01){return _['merge']({},_0x394f01,_0x541749);})['then'](respondWithResult(_0x5d304f,null))[_0x1079('0xc')](handleError(_0x5d304f,null));};exports[_0x1079('0x2c')]=function(_0x493f6a,_0x26e79a){if(_0x493f6a['body']&&_0x493f6a[_0x1079('0x2d')]['interaction']&&_0x493f6a[_0x1079('0x2e')]&&_0x493f6a[_0x1079('0x2e')][_0x1079('0x10')]){for(var _0x4e157b in _0x493f6a[_0x1079('0x2d')][_0x1079('0x2f')]){if(_0x493f6a[_0x1079('0x2d')][_0x1079('0x2f')][_0x1079('0x30')](_0x4e157b)){db['MemberReport'][_0x1079('0x31')]({'where':{'channel':_0x4e157b,'membername':_0x493f6a[_0x1079('0x2e')]['name'],'type':_0x1079('0x32'),'exitAt':null,'uniqueid':_0x493f6a[_0x1079('0x2d')]['interaction'][_0x4e157b]&&_0x493f6a[_0x1079('0x2d')][_0x1079('0x2f')][_0x4e157b]['length']?{'$notIn':_0x493f6a[_0x1079('0x2d')][_0x1079('0x2f')][_0x4e157b]}:{'$ne':null}}})[_0x1079('0x1b')](function(_0x32a3c5){var _0x44e235=moment()[_0x1079('0x33')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x2d89e2=0x0,_0x599d7e=_0x32a3c5[_0x1079('0x34')];_0x2d89e2<_0x599d7e;_0x2d89e2+=0x1){_0x32a3c5[_0x2d89e2]['updateAttributes']({'exitAt':_0x44e235});}});for(var _0x5bf4d7=0x0;_0x5bf4d7<_0x493f6a[_0x1079('0x2d')][_0x1079('0x2f')][_0x4e157b][_0x1079('0x34')];_0x5bf4d7+=0x1){db[_0x1079('0x35')][_0x1079('0x36')]({'where':{'channel':_0x4e157b,'membername':_0x493f6a[_0x1079('0x2e')][_0x1079('0x10')],'type':'INTERACTION','uniqueid':_0x493f6a['body'][_0x1079('0x2f')][_0x4e157b][_0x5bf4d7],'exitAt':null},'defaults':{'channel':_0x4e157b,'membername':_0x493f6a['user'][_0x1079('0x10')],'interface':_[_0x1079('0x12')](_0x493f6a[_0x1079('0x2e')][_0x1079('0x37')])?util[_0x1079('0x33')](_0x1079('0x38'),_0x493f6a[_0x1079('0x2e')][_0x1079('0x10')]):_0x493f6a['user'][_0x1079('0x37')],'type':_0x1079('0x32'),'enterAt':moment()[_0x1079('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x1079('0x39'),'internal':_0x493f6a['user'][_0x1079('0x3a')],'uniqueid':_0x493f6a['body'][_0x1079('0x2f')][_0x4e157b][_0x5bf4d7]}});}}}}return respondWithRpcPromise(_0x1079('0x3b'),{'id':_0x493f6a[_0x1079('0x21')]['id'],'capacity':_0x493f6a[_0x1079('0x2d')][_0x1079('0x3c')]},routingClient)[_0x1079('0x1b')](respondWithResult(_0x26e79a,null))[_0x1079('0xc')](handleError(_0x26e79a,null));};exports[_0x1079('0x3d')]=function(_0x214c8c,_0x1fac87){return respondWithRpcPromise(_0x1079('0x3e'),_0x214c8c['query'])[_0x1079('0x1b')](respondWithResult(_0x1fac87,null))[_0x1079('0xc')](handleError(_0x1fac87,null));};exports['trunks']=function(_0xaa29b2,_0x15878f){return respondWithRpcPromise(_0x1079('0x3f'),_0xaa29b2[_0x1079('0x17')])[_0x1079('0x1b')](respondWithResult(_0x15878f,null))['catch'](handleError(_0x15878f,null));};exports[_0x1079('0x40')]=function(_0x57b62e,_0x5ad7d9){return respondWithRpcPromise(_0x1079('0x41'),_0x57b62e[_0x1079('0x17')])[_0x1079('0x1b')](respondWithResult(_0x5ad7d9,null))[_0x1079('0xc')](handleError(_0x5ad7d9,null));};exports['chatQueues']=function(_0x41c986,_0x4c1caa){return respondWithRpcPromise(_0x1079('0x42'),_0x41c986[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](respondWithResult(_0x4c1caa,null))[_0x1079('0xc')](handleError(_0x4c1caa,null));};exports['showChatQueues']=function(_0x55c45b,_0x52854f){return respondWithRpcPromise('ChatQueues',_0x55c45b[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](findById(_0x55c45b[_0x1079('0x21')]['id']))[_0x1079('0x1b')](respondWithResult(_0x52854f,null))[_0x1079('0xc')](handleError(_0x52854f,null));};exports[_0x1079('0x43')]=function(_0xf1cdad,_0x5ec774){return respondWithRpcPromise(_0x1079('0x44'),_0xf1cdad[_0x1079('0x17')],routingClient)['then'](respondWithResult(_0x5ec774,null))[_0x1079('0xc')](handleError(_0x5ec774,null));};exports[_0x1079('0x45')]=function(_0x1aac77,_0x2d156d){return respondWithRpcPromise(_0x1079('0x44'),_0x1aac77[_0x1079('0x17')],routingClient)['then'](findById(_0x1aac77[_0x1079('0x21')]['id']))[_0x1079('0x1b')](respondWithResult(_0x2d156d,null))[_0x1079('0xc')](handleError(_0x2d156d,null));};exports[_0x1079('0x46')]=function(_0x56769d,_0x143192){return respondWithRpcPromise(_0x1079('0x47'),_0x56769d[_0x1079('0x17')],mailClient)[_0x1079('0x1b')](respondWithResult(_0x143192,null))[_0x1079('0xc')](handleError(_0x143192,null));};exports[_0x1079('0x48')]=function(_0x4a10fe,_0x522ea5){return respondWithRpcPromise(_0x1079('0x49'),_0x4a10fe[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](respondWithResult(_0x522ea5,null))['catch'](handleError(_0x522ea5,null));};exports[_0x1079('0x4a')]=function(_0x153b35,_0x21fc9e){return respondWithRpcPromise(_0x1079('0x49'),_0x153b35[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](findById(_0x153b35['params']['id']))['then'](respondWithResult(_0x21fc9e,null))['catch'](handleError(_0x21fc9e,null));};exports['smsQueues']=function(_0x5da10c,_0x312a02){return respondWithRpcPromise(_0x1079('0x4b'),_0x5da10c[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](respondWithResult(_0x312a02,null))['catch'](handleError(_0x312a02,null));};exports[_0x1079('0x4c')]=function(_0x168be4,_0x48fae9){return respondWithRpcPromise(_0x1079('0x4b'),_0x168be4[_0x1079('0x17')],routingClient)['then'](findById(_0x168be4[_0x1079('0x21')]['id']))[_0x1079('0x1b')](respondWithResult(_0x48fae9,null))[_0x1079('0xc')](handleError(_0x48fae9,null));};exports['faxQueues']=function(_0x462ad6,_0x4d76ff){return respondWithRpcPromise('FaxQueues',_0x462ad6[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](respondWithResult(_0x4d76ff,null))[_0x1079('0xc')](handleError(_0x4d76ff,null));};exports[_0x1079('0x4d')]=function(_0x18e93f,_0x1b8411){return respondWithRpcPromise(_0x1079('0x4e'),_0x18e93f[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](findById(_0x18e93f['params']['id']))[_0x1079('0x1b')](respondWithResult(_0x1b8411,null))[_0x1079('0xc')](handleError(_0x1b8411,null));};exports[_0x1079('0x4f')]=function(_0x2b8d1b,_0x449651){return respondWithRpcPromise('FaxAccounts',_0x2b8d1b['query'])[_0x1079('0x1b')](respondWithResult(_0x449651,null))[_0x1079('0xc')](handleError(_0x449651,null));};exports[_0x1079('0x50')]=function(_0x92a512,_0x4fbbca){return respondWithRpcPromise(_0x1079('0x51'),_0x92a512[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](respondWithResult(_0x4fbbca,null))[_0x1079('0xc')](handleError(_0x4fbbca,null));};exports[_0x1079('0x52')]=function(_0x41b59c,_0x53f64d){return respondWithRpcPromise(_0x1079('0x53'),_0x41b59c[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](respondWithResult(_0x53f64d,null))['catch'](handleError(_0x53f64d,null));};exports[_0x1079('0x54')]=function(_0x163676,_0x27ff7f){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x163676[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](respondWithResult(_0x27ff7f,null))[_0x1079('0xc')](handleError(_0x27ff7f,null));};exports[_0x1079('0x55')]=function(_0x2619a8,_0x25c9a7){return respondWithRpcPromise(_0x1079('0x56'),_0x2619a8[_0x1079('0x17')],routingClient)[_0x1079('0x1b')](respondWithResult(_0x25c9a7,null))[_0x1079('0xc')](handleError(_0x25c9a7,null));};exports[_0x1079('0x57')]=function(_0x56e532,_0x32c589){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x56e532['query'],routingClient)['then'](respondWithResult(_0x32c589,null))[_0x1079('0xc')](handleError(_0x32c589,null));};exports[_0x1079('0x58')]=function(_0x5a175d){return function(_0x1b92cf,_0x3e7662){var _0x319801,_0x24cf66;var _0x24fcda=_[_0x1079('0x59')](_0x5a175d);var _0x4f224f=_0x5a175d===_0x1079('0x5a')?'Website':'Account';return db[_0x24fcda+_0x1079('0x5b')]['findOne']({'raw':!![],'where':{'id':_0x1b92cf[_0x1079('0x21')]['id']}})[_0x1079('0x1b')](function(_0x13fe94){if(_[_0x1079('0x12')](_0x13fe94)){throw new Error(_0x24fcda+'\x20Queue\x20not\x20found');}_0x319801=_0x13fe94;return db[_0x24fcda+_0x1079('0x5c')][_0x1079('0x5d')]({'where':{'id':_0x1b92cf[_0x1079('0x2d')]['messageId']},'include':[{'model':db[_0x24fcda+'Interaction'],'as':'Interaction'},{'model':db[_0x24fcda+_0x4f224f],'as':_0x1079('0x5e')}]});})[_0x1079('0x1b')](function(_0x85ec1d){if(_[_0x1079('0x12')](_0x85ec1d)){throw new Error(_0x24fcda+_0x1079('0x5f'));}_0x24cf66=_0x85ec1d;return _0x85ec1d[_0x1079('0x60')]({'read':0x0,'readAt':null,'UserId':null});})[_0x1079('0x1b')](function(){var _0x569641={'uniqueid':_0x5a175d+'.'+_0x24cf66['id']+'.'+_0x24cf66[_0x1079('0x61')]['id'],'FromUserId':_0x1b92cf['user']['id'],'type':_0x1079('0x62')};_0x569641[_0x24fcda+_0x1079('0x63')]=_0x24cf66['id'];_0x569641[_0x24fcda+_0x1079('0x64')]=_0x24cf66['Interaction']['id'];_0x569641[_0x1079('0x65')+_0x24fcda+_0x4f224f+'Id']=_0x24cf66[_0x1079('0x5e')]['id'];_0x569641['To'+_0x24fcda+_0x1079('0x66')]=_0x319801['id'];return db[_0x24fcda+_0x1079('0x67')][_0x1079('0x68')](_0x569641);})[_0x1079('0x1b')](function(){return respondWithRpcPromise(_0x1079('0x69'),{'channel':_0x5a175d,'interaction':_0x24cf66[_0x1079('0x61')],'message':_0x24cf66,'account':_0x24cf66[_0x1079('0x5e')],'applications':[{'id':0x0,'priority':0x1,'app':_0x1079('0x62'),'appdata':_0x319801[_0x1079('0x10')]+','+(_0x24cf66[_0x1079('0x5e')][_0x1079('0x6a')]||0x12c),'interval':_0x1079('0x6b')}]},routingClient);})[_0x1079('0x1b')](respondWithResult(_0x3e7662,null))[_0x1079('0xc')](handleError(_0x3e7662,null));};};exports[_0x1079('0x6c')]=function(_0x48bad9,_0x19b919){var _0x4f6042,_0x353028;if(_[_0x1079('0x12')](_0x48bad9['body']['channel'])){throw new Error(_0x1079('0x6d'));}var _0x1766da=_0x48bad9[_0x1079('0x2d')][_0x1079('0x6e')];var _0x1b4755=_[_0x1079('0x59')](_0x1766da);var _0x10062f=_0x1766da===_0x1079('0x5a')?_0x1079('0x6f'):_0x1079('0x5e');return db[_0x1079('0x70')]['findOne']({'raw':!![],'where':{'id':_0x48bad9[_0x1079('0x21')]['id'],'role':_0x1079('0x39')}})[_0x1079('0x1b')](function(_0x4cd615){if(_[_0x1079('0x12')](_0x4cd615)){throw new Error(_0x1079('0x71'));}_0x4f6042=_0x4cd615;return db[_0x1b4755+_0x1079('0x5c')][_0x1079('0x5d')]({'where':{'id':_0x48bad9[_0x1079('0x2d')][_0x1079('0x72')]},'include':[{'model':db[_0x1b4755+_0x1079('0x61')],'as':'Interaction'},{'model':db[_0x1b4755+_0x10062f],'as':_0x1079('0x5e')}]});})[_0x1079('0x1b')](function(_0x2b8613){if(_[_0x1079('0x12')](_0x2b8613)){throw new Error(_0x1b4755+_0x1079('0x5f'));}_0x353028=_0x2b8613;return _0x2b8613[_0x1079('0x60')]({'read':0x0,'readAt':null,'UserId':null});})[_0x1079('0x1b')](function(){var _0x266be0={'uniqueid':_0x1766da+'.'+_0x353028['id']+'.'+_0x353028[_0x1079('0x61')]['id'],'FromUserId':_0x48bad9[_0x1079('0x2e')]['id'],'type':_0x1079('0x62'),'ToUserId':_0x4f6042['id']};_0x266be0[_0x1b4755+_0x1079('0x63')]=_0x353028['id'];_0x266be0[_0x1b4755+_0x1079('0x64')]=_0x353028['Interaction']['id'];_0x266be0[_0x1079('0x65')+_0x1b4755+_0x10062f+'Id']=_0x353028[_0x1079('0x5e')]['id'];return db[_0x1b4755+_0x1079('0x67')]['create'](_0x266be0);})[_0x1079('0x1b')](function(){return respondWithRpcPromise(_0x1079('0x69'),{'channel':_0x1766da,'interaction':_0x353028[_0x1079('0x61')],'message':_0x353028,'account':_0x353028[_0x1079('0x5e')],'applications':[{'id':0x0,'priority':0x1,'app':_0x1079('0x39'),'appdata':_0x4f6042[_0x1079('0x10')]+','+(_0x353028[_0x1079('0x5e')]['agentTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x1079('0x1b')](respondWithResult(_0x19b919,null))['catch'](handleError(_0x19b919,null));};
\ No newline at end of file
+var _0x97a5=['Message','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','Account','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','Agent\x20not\x20found','messageId','../../mysqldb','api','jayson/promise','client','http','request','then','error','code','message','result','status','json','sendStatus','stack','name','send','isNil','rows','find','VoiceChannels','query','catch','voiceChannelMixMonitor','merge','params','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','VoiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','body','interaction','user','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','updateAttributes','findOrCreate','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','agent','AgentCapacity','capacity','telephones','Telephones','trunks','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','capitalize','Website','Queue','findOne','\x20Queue\x20not\x20found'];(function(_0xdb0b9f,_0x202edd){var _0x1d129b=function(_0x1ab3c8){while(--_0x1ab3c8){_0xdb0b9f['push'](_0xdb0b9f['shift']());}};_0x1d129b(++_0x202edd);}(_0x97a5,0x16c));var _0x597a=function(_0x21a820,_0x34099f){_0x21a820=_0x21a820-0x0;var _0x49b501=_0x97a5[_0x21a820];return _0x49b501;};'use strict';var BPromise=require('bluebird');var moment=require('moment');var _=require('lodash');var util=require('util');var db=require(_0x597a('0x0'))['db'];var logger=require('../../config/logger')(_0x597a('0x1'));var jayson=require(_0x597a('0x2'));var amiClient=jayson[_0x597a('0x3')]['http']({'port':0x232a});var mailClient=jayson['client'][_0x597a('0x4')]({'port':0x232b});var routingClient=jayson[_0x597a('0x3')][_0x597a('0x4')]({'port':0x232c});function respondWithRpcPromise(_0x4d7e7c,_0x25996e,_0x55cd05){return new BPromise(function(_0x589c98,_0x482edd){var _0x4dd99c=_0x55cd05?_0x55cd05:amiClient;return _0x4dd99c[_0x597a('0x5')](_0x4d7e7c,_0x25996e)[_0x597a('0x6')](function(_0x5a3050){if(_0x5a3050[_0x597a('0x7')]){if(_0x5a3050[_0x597a('0x7')][_0x597a('0x8')]===0x1f4){return _0x482edd(_0x5a3050[_0x597a('0x7')][_0x597a('0x9')]);}return _0x589c98(_0x5a3050[_0x597a('0x7')][_0x597a('0x9')]);}else{_0x589c98(_0x5a3050[_0x597a('0xa')]);}})['catch'](function(_0x3f702f){_0x482edd(_0x3f702f);});});}function respondWithResult(_0x410e53,_0x1ed6ea){_0x1ed6ea=_0x1ed6ea||0xc8;return function(_0x2a9705){if(_0x2a9705){return _0x410e53[_0x597a('0xb')](_0x1ed6ea)[_0x597a('0xc')](_0x2a9705);}return _0x410e53[_0x597a('0xd')](0x194);};}function handleError(_0x67e6c6,_0x359ce7){_0x359ce7=_0x359ce7||0x1f4;return function(_0x59ab56){logger[_0x597a('0x7')](_0x59ab56[_0x597a('0xe')]);if(_0x59ab56[_0x597a('0xf')]){delete _0x59ab56[_0x597a('0xf')];}_0x67e6c6[_0x597a('0xb')](_0x359ce7)[_0x597a('0x10')](_0x59ab56);};}function findById(_0x3a6a9b){return function(_0x6a7ba8){if(!_['isNil'](_0x3a6a9b)&&!_[_0x597a('0x11')](_0x6a7ba8)&&!_[_0x597a('0x11')](_0x6a7ba8[_0x597a('0x12')])){return _[_0x597a('0x13')](_0x6a7ba8[_0x597a('0x12')],function(_0x263efe){return _0x263efe['id']==_0x3a6a9b;});}return null;};}exports['voiceChannels']=function(_0x27378b,_0x551add){return respondWithRpcPromise(_0x597a('0x14'),_0x27378b[_0x597a('0x15')])[_0x597a('0x6')](respondWithResult(_0x551add,null))[_0x597a('0x16')](handleError(_0x551add,null));};exports[_0x597a('0x17')]=function(_0x8297b,_0x1e16f0){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0x597a('0x18')](_0x8297b['query'],_0x8297b[_0x597a('0x19')]))[_0x597a('0x6')](respondWithResult(_0x1e16f0,null))[_0x597a('0x16')](handleError(_0x1e16f0,null));};exports['voiceChannelStopMixMonitor']=function(_0x595be2,_0x354a11){return respondWithRpcPromise(_0x597a('0x1a'),_[_0x597a('0x18')](_0x595be2[_0x597a('0x15')],_0x595be2[_0x597a('0x19')]))[_0x597a('0x6')](respondWithResult(_0x354a11,null))[_0x597a('0x16')](handleError(_0x354a11,null));};exports[_0x597a('0x1b')]=function(_0x2cdb94,_0x45dc55){return respondWithRpcPromise(_0x597a('0x1c'),_0x2cdb94[_0x597a('0x15')])[_0x597a('0x6')](respondWithResult(_0x45dc55,null))[_0x597a('0x16')](handleError(_0x45dc55,null));};exports[_0x597a('0x1d')]=function(_0x2069ef,_0x40df42){return respondWithRpcPromise(_0x597a('0x1c'),_0x2069ef[_0x597a('0x15')])[_0x597a('0x6')](findById(_0x2069ef['params']['id']))[_0x597a('0x6')](respondWithResult(_0x40df42,null))[_0x597a('0x16')](handleError(_0x40df42,null));};exports[_0x597a('0x1e')]=function(_0x2c04b,_0x4f0cef){return respondWithRpcPromise(_0x597a('0x1f'),_['merge'](_0x2c04b[_0x597a('0x15')],_0x2c04b[_0x597a('0x19')]))[_0x597a('0x6')](respondWithResult(_0x4f0cef,null))[_0x597a('0x16')](handleError(_0x4f0cef,null));};exports[_0x597a('0x20')]=function(_0x4b3cac,_0x9fbd9){return respondWithRpcPromise(_0x597a('0x21'),_0x4b3cac['query'])[_0x597a('0x6')](respondWithResult(_0x9fbd9,null))[_0x597a('0x16')](handleError(_0x9fbd9,null));};exports[_0x597a('0x22')]=function(_0x22c84e,_0xc42ca0){return respondWithRpcPromise(_0x597a('0x23'),_['merge'](_0x22c84e[_0x597a('0x15')],_0x22c84e[_0x597a('0x19')]))[_0x597a('0x6')](respondWithResult(_0xc42ca0,null))[_0x597a('0x16')](handleError(_0xc42ca0,null));};exports[_0x597a('0x24')]=function(_0x1a6c57,_0x1ed7d7){return respondWithRpcPromise(_0x597a('0x25'),_[_0x597a('0x18')](_0x1a6c57[_0x597a('0x15')],_0x1a6c57['params']))['then'](respondWithResult(_0x1ed7d7,null))[_0x597a('0x16')](handleError(_0x1ed7d7,null));};exports['voiceQueuesChannelRedirect']=function(_0x2257f5,_0x2989ab){return respondWithRpcPromise(_0x597a('0x26'),_['merge'](_0x2257f5['query'],_0x2257f5[_0x597a('0x19')]))[_0x597a('0x6')](respondWithResult(_0x2989ab,null))['catch'](handleError(_0x2989ab,null));};exports['outbound']=function(_0x28d9a9,_0x4996c9){return respondWithRpcPromise(_0x597a('0x27'),_0x28d9a9[_0x597a('0x15')])[_0x597a('0x6')](respondWithResult(_0x4996c9,null))['catch'](handleError(_0x4996c9,null));};exports[_0x597a('0x28')]=function(_0x70386,_0xba0ed7){return respondWithRpcPromise(_0x597a('0x29'),_0x70386['query'])[_0x597a('0x6')](respondWithResult(_0xba0ed7,null))['catch'](handleError(_0xba0ed7,null));};exports[_0x597a('0x2a')]=function(_0x57e490,_0x345399){var _0x4a941e;return respondWithRpcPromise('Agents',_0x57e490[_0x597a('0x15')])[_0x597a('0x6')](function(_0x6276c7){_0x4a941e=_0x6276c7;return respondWithRpcPromise(_0x597a('0x2b'),_0x57e490[_0x597a('0x15')],routingClient);})[_0x597a('0x6')](function(_0x37aec1){return _[_0x597a('0x18')]({},_0x37aec1,_0x4a941e);})['then'](respondWithResult(_0x345399,null))[_0x597a('0x16')](handleError(_0x345399,null));};exports[_0x597a('0x2c')]=function(_0x4cd33b,_0x43766f){if(_0x4cd33b[_0x597a('0x2d')]&&_0x4cd33b['body'][_0x597a('0x2e')]&&_0x4cd33b[_0x597a('0x2f')]&&_0x4cd33b[_0x597a('0x2f')][_0x597a('0xf')]){for(var _0x27d314 in _0x4cd33b[_0x597a('0x2d')][_0x597a('0x2e')]){if(_0x4cd33b[_0x597a('0x2d')][_0x597a('0x2e')][_0x597a('0x30')](_0x27d314)){db[_0x597a('0x31')][_0x597a('0x32')]({'where':{'channel':_0x27d314,'membername':_0x4cd33b[_0x597a('0x2f')][_0x597a('0xf')],'type':_0x597a('0x33'),'exitAt':null,'uniqueid':_0x4cd33b[_0x597a('0x2d')][_0x597a('0x2e')][_0x27d314]&&_0x4cd33b[_0x597a('0x2d')][_0x597a('0x2e')][_0x27d314][_0x597a('0x34')]?{'$notIn':_0x4cd33b['body'][_0x597a('0x2e')][_0x27d314]}:{'$ne':null}}})[_0x597a('0x6')](function(_0x36c1d5){var _0x3d41fe=moment()[_0x597a('0x35')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x59bb64=0x0,_0x37ff1d=_0x36c1d5[_0x597a('0x34')];_0x59bb64<_0x37ff1d;_0x59bb64+=0x1){_0x36c1d5[_0x59bb64][_0x597a('0x36')]({'exitAt':_0x3d41fe});}});for(var _0x422dde=0x0;_0x422dde<_0x4cd33b[_0x597a('0x2d')][_0x597a('0x2e')][_0x27d314][_0x597a('0x34')];_0x422dde+=0x1){db[_0x597a('0x31')][_0x597a('0x37')]({'where':{'channel':_0x27d314,'membername':_0x4cd33b['user'][_0x597a('0xf')],'type':'INTERACTION','uniqueid':_0x4cd33b['body'][_0x597a('0x2e')][_0x27d314][_0x422dde],'exitAt':null},'defaults':{'channel':_0x27d314,'membername':_0x4cd33b['user']['name'],'interface':_[_0x597a('0x11')](_0x4cd33b['user'][_0x597a('0x38')])?util[_0x597a('0x35')](_0x597a('0x39'),_0x4cd33b[_0x597a('0x2f')][_0x597a('0xf')]):_0x4cd33b['user'][_0x597a('0x38')],'type':_0x597a('0x33'),'enterAt':moment()[_0x597a('0x35')](_0x597a('0x3a')),'role':_0x597a('0x3b'),'internal':_0x4cd33b[_0x597a('0x2f')]['internal'],'uniqueid':_0x4cd33b[_0x597a('0x2d')]['interaction'][_0x27d314][_0x422dde]}});}}}}return respondWithRpcPromise(_0x597a('0x3c'),{'id':_0x4cd33b[_0x597a('0x19')]['id'],'capacity':_0x4cd33b['body'][_0x597a('0x3d')]},routingClient)[_0x597a('0x6')](respondWithResult(_0x43766f,null))['catch'](handleError(_0x43766f,null));};exports[_0x597a('0x3e')]=function(_0x106154,_0x4b83fe){return respondWithRpcPromise(_0x597a('0x3f'),_0x106154[_0x597a('0x15')])['then'](respondWithResult(_0x4b83fe,null))[_0x597a('0x16')](handleError(_0x4b83fe,null));};exports[_0x597a('0x40')]=function(_0x2c8ddc,_0x2b936e){return respondWithRpcPromise('Trunks',_0x2c8ddc['query'])[_0x597a('0x6')](respondWithResult(_0x2b936e,null))[_0x597a('0x16')](handleError(_0x2b936e,null));};exports['campaigns']=function(_0x16c6ef,_0x131ddd){return respondWithRpcPromise(_0x597a('0x41'),_0x16c6ef[_0x597a('0x15')])[_0x597a('0x6')](respondWithResult(_0x131ddd,null))['catch'](handleError(_0x131ddd,null));};exports[_0x597a('0x42')]=function(_0x2abf46,_0x1dc04d){return respondWithRpcPromise(_0x597a('0x43'),_0x2abf46['query'],routingClient)[_0x597a('0x6')](respondWithResult(_0x1dc04d,null))[_0x597a('0x16')](handleError(_0x1dc04d,null));};exports[_0x597a('0x44')]=function(_0x4e2993,_0x57b6b2){return respondWithRpcPromise(_0x597a('0x43'),_0x4e2993['query'],routingClient)[_0x597a('0x6')](findById(_0x4e2993[_0x597a('0x19')]['id']))[_0x597a('0x6')](respondWithResult(_0x57b6b2,null))[_0x597a('0x16')](handleError(_0x57b6b2,null));};exports[_0x597a('0x45')]=function(_0x389c3a,_0x27e466){return respondWithRpcPromise(_0x597a('0x46'),_0x389c3a[_0x597a('0x15')],routingClient)[_0x597a('0x6')](respondWithResult(_0x27e466,null))['catch'](handleError(_0x27e466,null));};exports[_0x597a('0x47')]=function(_0x4c10c5,_0x13e33a){return respondWithRpcPromise(_0x597a('0x46'),_0x4c10c5[_0x597a('0x15')],routingClient)[_0x597a('0x6')](findById(_0x4c10c5[_0x597a('0x19')]['id']))['then'](respondWithResult(_0x13e33a,null))[_0x597a('0x16')](handleError(_0x13e33a,null));};exports[_0x597a('0x48')]=function(_0x4f93bf,_0x6a98fc){return respondWithRpcPromise(_0x597a('0x49'),_0x4f93bf[_0x597a('0x15')],mailClient)['then'](respondWithResult(_0x6a98fc,null))[_0x597a('0x16')](handleError(_0x6a98fc,null));};exports[_0x597a('0x4a')]=function(_0x33cbb9,_0x2d116b){return respondWithRpcPromise(_0x597a('0x4b'),_0x33cbb9[_0x597a('0x15')],routingClient)[_0x597a('0x6')](respondWithResult(_0x2d116b,null))['catch'](handleError(_0x2d116b,null));};exports['showOpenchannelQueues']=function(_0x313652,_0x523440){return respondWithRpcPromise(_0x597a('0x4b'),_0x313652[_0x597a('0x15')],routingClient)[_0x597a('0x6')](findById(_0x313652[_0x597a('0x19')]['id']))['then'](respondWithResult(_0x523440,null))['catch'](handleError(_0x523440,null));};exports[_0x597a('0x4c')]=function(_0x8afee7,_0x381529){return respondWithRpcPromise(_0x597a('0x4d'),_0x8afee7['query'],routingClient)[_0x597a('0x6')](respondWithResult(_0x381529,null))[_0x597a('0x16')](handleError(_0x381529,null));};exports[_0x597a('0x4e')]=function(_0x3511ef,_0x202ceb){return respondWithRpcPromise(_0x597a('0x4d'),_0x3511ef[_0x597a('0x15')],routingClient)[_0x597a('0x6')](findById(_0x3511ef[_0x597a('0x19')]['id']))[_0x597a('0x6')](respondWithResult(_0x202ceb,null))[_0x597a('0x16')](handleError(_0x202ceb,null));};exports['faxQueues']=function(_0x477443,_0x50aee1){return respondWithRpcPromise(_0x597a('0x4f'),_0x477443[_0x597a('0x15')],routingClient)['then'](respondWithResult(_0x50aee1,null))[_0x597a('0x16')](handleError(_0x50aee1,null));};exports[_0x597a('0x50')]=function(_0x553eb6,_0x184d2b){return respondWithRpcPromise(_0x597a('0x4f'),_0x553eb6['query'],routingClient)[_0x597a('0x6')](findById(_0x553eb6[_0x597a('0x19')]['id']))[_0x597a('0x6')](respondWithResult(_0x184d2b,null))[_0x597a('0x16')](handleError(_0x184d2b,null));};exports[_0x597a('0x51')]=function(_0x4c1f75,_0x3f379f){return respondWithRpcPromise(_0x597a('0x52'),_0x4c1f75[_0x597a('0x15')])[_0x597a('0x6')](respondWithResult(_0x3f379f,null))[_0x597a('0x16')](handleError(_0x3f379f,null));};exports[_0x597a('0x53')]=function(_0x224ad4,_0x1dd955){return respondWithRpcPromise(_0x597a('0x54'),_0x224ad4[_0x597a('0x15')],routingClient)[_0x597a('0x6')](respondWithResult(_0x1dd955,null))[_0x597a('0x16')](handleError(_0x1dd955,null));};exports[_0x597a('0x55')]=function(_0x4bfada,_0x527f68){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x4bfada['query'],routingClient)[_0x597a('0x6')](respondWithResult(_0x527f68,null))['catch'](handleError(_0x527f68,null));};exports[_0x597a('0x56')]=function(_0x21ec30,_0x31ad0d){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x21ec30[_0x597a('0x15')],routingClient)['then'](respondWithResult(_0x31ad0d,null))[_0x597a('0x16')](handleError(_0x31ad0d,null));};exports[_0x597a('0x57')]=function(_0x4053ee,_0x47b176){return respondWithRpcPromise(_0x597a('0x58'),_0x4053ee[_0x597a('0x15')],routingClient)[_0x597a('0x6')](respondWithResult(_0x47b176,null))['catch'](handleError(_0x47b176,null));};exports[_0x597a('0x59')]=function(_0x4b47b5,_0x5cf7a5){return respondWithRpcPromise(_0x597a('0x5a'),_0x4b47b5['query'],routingClient)[_0x597a('0x6')](respondWithResult(_0x5cf7a5,null))[_0x597a('0x16')](handleError(_0x5cf7a5,null));};exports['queueNotify']=function(_0x5991b8){return function(_0x497f59,_0x208b8f){var _0x3df241,_0x5d58ea;var _0x371920=_[_0x597a('0x5b')](_0x5991b8);var _0x186f33=_0x5991b8==='chat'?_0x597a('0x5c'):'Account';return db[_0x371920+_0x597a('0x5d')][_0x597a('0x5e')]({'raw':!![],'where':{'id':_0x497f59['params']['id']}})[_0x597a('0x6')](function(_0x55fda6){if(_[_0x597a('0x11')](_0x55fda6)){throw new Error(_0x371920+_0x597a('0x5f'));}_0x3df241=_0x55fda6;return db[_0x371920+_0x597a('0x60')][_0x597a('0x5e')]({'where':{'id':_0x497f59[_0x597a('0x2d')]['messageId']},'include':[{'model':db[_0x371920+_0x597a('0x61')],'as':_0x597a('0x61')},{'model':db[_0x371920+_0x186f33],'as':'Account'}]});})['then'](function(_0x402d1d){if(_[_0x597a('0x11')](_0x402d1d)){throw new Error(_0x371920+_0x597a('0x62'));}_0x5d58ea=_0x402d1d;return _0x402d1d[_0x597a('0x63')]({'read':0x0,'readAt':null,'UserId':null});})[_0x597a('0x6')](function(){var _0x5ae07e={'uniqueid':_0x5991b8+'.'+_0x5d58ea['id']+'.'+_0x5d58ea[_0x597a('0x61')]['id'],'FromUserId':_0x497f59['user']['id'],'type':_0x597a('0x64')};_0x5ae07e[_0x371920+_0x597a('0x65')]=_0x5d58ea['id'];_0x5ae07e[_0x371920+_0x597a('0x66')]=_0x5d58ea['Interaction']['id'];_0x5ae07e[_0x597a('0x67')+_0x371920+_0x186f33+'Id']=_0x5d58ea[_0x597a('0x68')]['id'];_0x5ae07e['To'+_0x371920+_0x597a('0x69')]=_0x3df241['id'];return db[_0x371920+_0x597a('0x6a')][_0x597a('0x6b')](_0x5ae07e);})[_0x597a('0x6')](function(){return respondWithRpcPromise(_0x597a('0x6c'),{'channel':_0x5991b8,'interaction':_0x5d58ea[_0x597a('0x61')],'message':_0x5d58ea,'account':_0x5d58ea['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x597a('0x64'),'appdata':_0x3df241[_0x597a('0xf')]+','+(_0x5d58ea[_0x597a('0x68')][_0x597a('0x6d')]||0x12c),'interval':_0x597a('0x6e')}]},routingClient);})[_0x597a('0x6')](respondWithResult(_0x208b8f,null))[_0x597a('0x16')](handleError(_0x208b8f,null));};};exports[_0x597a('0x6f')]=function(_0x4c1a96,_0x3a6184){var _0x101c31,_0x498eac;if(_[_0x597a('0x11')](_0x4c1a96[_0x597a('0x2d')]['channel'])){throw new Error(_0x597a('0x70'));}var _0x596686=_0x4c1a96[_0x597a('0x2d')]['channel'];var _0x363d1c=_[_0x597a('0x5b')](_0x596686);var _0x1ee161=_0x596686==='chat'?'Website':'Account';return db['User']['findOne']({'raw':!![],'where':{'id':_0x4c1a96[_0x597a('0x19')]['id'],'role':'agent'}})[_0x597a('0x6')](function(_0xe15e1b){if(_[_0x597a('0x11')](_0xe15e1b)){throw new Error(_0x597a('0x71'));}_0x101c31=_0xe15e1b;return db[_0x363d1c+_0x597a('0x60')][_0x597a('0x5e')]({'where':{'id':_0x4c1a96[_0x597a('0x2d')][_0x597a('0x72')]},'include':[{'model':db[_0x363d1c+_0x597a('0x61')],'as':_0x597a('0x61')},{'model':db[_0x363d1c+_0x1ee161],'as':_0x597a('0x68')}]});})[_0x597a('0x6')](function(_0x4b69e6){if(_[_0x597a('0x11')](_0x4b69e6)){throw new Error(_0x363d1c+'\x20Message\x20not\x20found');}_0x498eac=_0x4b69e6;return _0x4b69e6[_0x597a('0x63')]({'read':0x0,'readAt':null,'UserId':null});})[_0x597a('0x6')](function(){var _0xf1acb5={'uniqueid':_0x596686+'.'+_0x498eac['id']+'.'+_0x498eac[_0x597a('0x61')]['id'],'FromUserId':_0x4c1a96[_0x597a('0x2f')]['id'],'type':'queue','ToUserId':_0x101c31['id']};_0xf1acb5[_0x363d1c+_0x597a('0x65')]=_0x498eac['id'];_0xf1acb5[_0x363d1c+_0x597a('0x66')]=_0x498eac[_0x597a('0x61')]['id'];_0xf1acb5['From'+_0x363d1c+_0x1ee161+'Id']=_0x498eac['Account']['id'];return db[_0x363d1c+_0x597a('0x6a')][_0x597a('0x6b')](_0xf1acb5);})[_0x597a('0x6')](function(){return respondWithRpcPromise(_0x597a('0x6c'),{'channel':_0x596686,'interaction':_0x498eac['Interaction'],'message':_0x498eac,'account':_0x498eac['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x597a('0x3b'),'appdata':_0x101c31[_0x597a('0xf')]+','+(_0x498eac[_0x597a('0x68')]['agentTransferTimeout']||0x12c),'interval':_0x597a('0x6e')}]},routingClient);})[_0x597a('0x6')](respondWithResult(_0x3a6184,null))[_0x597a('0x16')](handleError(_0x3a6184,null));};
\ No newline at end of file
index 1bffe8b..d74d933 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa931=['../../config/environment','./schedule.controller','isAuthenticated','get','/:id','show','run','create','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x8a570b,_0x73059){var _0x45f680=function(_0x37ba19){while(--_0x37ba19){_0x8a570b['push'](_0x8a570b['shift']());}};_0x45f680(++_0x73059);}(_0xa931,0x9b));var _0x1a93=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xa931[_0x4565bf];return _0x5610ba;};'use strict';var multer=require(_0x1a93('0x0'));var util=require('util');var path=require(_0x1a93('0x1'));var timeout=require(_0x1a93('0x2'));var express=require(_0x1a93('0x3'));var router=express[_0x1a93('0x4')]();var auth=require(_0x1a93('0x5'));var interaction=require(_0x1a93('0x6'));var config=require(_0x1a93('0x7'));var controller=require(_0x1a93('0x8'));router['get']('/',auth[_0x1a93('0x9')](),controller['index']);router[_0x1a93('0xa')](_0x1a93('0xb'),auth[_0x1a93('0x9')](),controller[_0x1a93('0xc')]);router[_0x1a93('0xa')]('/:id/run',auth[_0x1a93('0x9')](),controller[_0x1a93('0xd')]);router['post']('/',auth[_0x1a93('0x9')](),controller[_0x1a93('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x1a93('0xf')](_0x1a93('0xb'),auth[_0x1a93('0x9')](),controller[_0x1a93('0x10')]);module[_0x1a93('0x11')]=router;
\ No newline at end of file
+var _0x389b=['post','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','/:id','show','/:id/run','run'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0x389b,0xaf));var _0xb389=function(_0x4eaa96,_0x53b203){_0x4eaa96=_0x4eaa96-0x0;var _0x390958=_0x389b[_0x4eaa96];return _0x390958;};'use strict';var multer=require('multer');var util=require(_0xb389('0x0'));var path=require(_0xb389('0x1'));var timeout=require(_0xb389('0x2'));var express=require('express');var router=express[_0xb389('0x3')]();var auth=require(_0xb389('0x4'));var interaction=require(_0xb389('0x5'));var config=require(_0xb389('0x6'));var controller=require(_0xb389('0x7'));router[_0xb389('0x8')]('/',auth[_0xb389('0x9')](),controller['index']);router[_0xb389('0x8')](_0xb389('0xa'),auth[_0xb389('0x9')](),controller[_0xb389('0xb')]);router[_0xb389('0x8')](_0xb389('0xc'),auth[_0xb389('0x9')](),controller[_0xb389('0xd')]);router[_0xb389('0xe')]('/',auth[_0xb389('0x9')](),controller[_0xb389('0xf')]);router[_0xb389('0x10')](_0xb389('0xa'),auth[_0xb389('0x9')](),controller[_0xb389('0x11')]);router[_0xb389('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xb389('0x13')]);module[_0xb389('0x14')]=router;
\ No newline at end of file
index 23d674a..6e11a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3bd=['TEXT','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','months','weeks','days','hours','minutes','csv','pdf','ENUM','custom'];(function(_0x351f37,_0x510fa4){var _0x2120ea=function(_0x2a86d7){while(--_0x2a86d7){_0x351f37['push'](_0x351f37['shift']());}};_0x2120ea(++_0x510fa4);}(_0xa3bd,0x171));var _0xda3b=function(_0x1af97e,_0x4d5c1f){_0x1af97e=_0x1af97e-0x0;var _0x2c5c2c=_0xa3bd[_0x1af97e];return _0x2c5c2c;};'use strict';var Sequelize=require('sequelize');module[_0xda3b('0x0')]={'name':{'type':Sequelize[_0xda3b('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xda3b('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xda3b('0x1')],'allowNull':![],'defaultValue':_0xda3b('0x3')},'startAt':{'type':Sequelize[_0xda3b('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xda3b('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xda3b('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM']('years','quarters',_0xda3b('0x6'),_0xda3b('0x7'),_0xda3b('0x8'),_0xda3b('0x9'),_0xda3b('0xa')),'allowNull':![],'defaultValue':_0xda3b('0x8')},'output':{'type':Sequelize['ENUM'](_0xda3b('0xb'),_0xda3b('0xc'),'xlsx'),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0xda3b('0xd')](_0xda3b('0xe'),'default'),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xda3b('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xda3b('0x1')]},'cc':{'type':Sequelize[_0xda3b('0xf')]},'bcc':{'type':Sequelize[_0xda3b('0xf')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x4887=['BOOLEAN','TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','weeks','hours','minutes','days','csv','pdf','xlsx','custom'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x4887,0xec));var _0x7488=function(_0x4cf7fc,_0x29b67d){_0x4cf7fc=_0x4cf7fc-0x0;var _0x6d390c=_0x4887[_0x4cf7fc];return _0x6d390c;};'use strict';var Sequelize=require(_0x7488('0x0'));module[_0x7488('0x1')]={'name':{'type':Sequelize[_0x7488('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x7488('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x7488('0x2')],'allowNull':![],'defaultValue':_0x7488('0x3')},'startAt':{'type':Sequelize[_0x7488('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x7488('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x7488('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x7488('0x6')](_0x7488('0x7'),'quarters','months',_0x7488('0x8'),'days',_0x7488('0x9'),_0x7488('0xa')),'allowNull':![],'defaultValue':_0x7488('0xb')},'output':{'type':Sequelize[_0x7488('0x6')](_0x7488('0xc'),_0x7488('0xd'),_0x7488('0xe')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x7488('0x6')](_0x7488('0xf'),'default'),'allowNull':![],'defaultValue':_0x7488('0xf')},'sendMail':{'type':Sequelize[_0x7488('0x10')],'defaultValue':![]},'email':{'type':Sequelize[_0x7488('0x2')]},'cc':{'type':Sequelize[_0x7488('0x11')]},'bcc':{'type':Sequelize[_0x7488('0x11')]},'sendIfEmpty':{'type':Sequelize[_0x7488('0x10')],'defaultValue':!![]}};
\ No newline at end of file
index 4806e13..2f8a557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfae2=['querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','get','Scheduler','UserProfileResource','sendStatus','error','stack','name','send','index','Schedule','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','add','day','merge','where','filter','map','type','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','run','html-pdf','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js'];(function(_0x27e88f,_0x205931){var _0x4b645c=function(_0x4683ef){while(--_0x4683ef){_0x27e88f['push'](_0x27e88f['shift']());}};_0x4b645c(++_0x205931);}(_0xfae2,0x152));var _0x2fae=function(_0x2fde14,_0xb161dc){_0x2fde14=_0x2fde14-0x0;var _0x36bc78=_0xfae2[_0x2fde14];return _0x36bc78;};'use strict';var pdf=require(_0x2fae('0x0'));var emlformat=require(_0x2fae('0x1'));var rimraf=require(_0x2fae('0x2'));var zipdir=require(_0x2fae('0x3'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2fae('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2fae('0x5'));var util=require(_0x2fae('0x6'));var path=require(_0x2fae('0x7'));var sox=require(_0x2fae('0x8'));var csv=require(_0x2fae('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x2fae('0xa'));var crypto=require(_0x2fae('0xb'));var jsforce=require(_0x2fae('0xc'));var deskjs=require(_0x2fae('0xd'));var toCsv=require(_0x2fae('0x9'));var querystring=require(_0x2fae('0xe'));var Papa=require(_0x2fae('0xf'));var Redis=require(_0x2fae('0x10'));var qs=require('../../components/parsers/qs');var logger=require(_0x2fae('0x11'))(_0x2fae('0x12'));var utils=require(_0x2fae('0x13'));var config=require(_0x2fae('0x14'));var db=require(_0x2fae('0x15'))['db'];function respondWithStatusCode(_0x387570,_0x3ea534){_0x3ea534=_0x3ea534||0xcc;return function(_0x6d1bd3){if(_0x6d1bd3){return _0x387570['sendStatus'](_0x3ea534);}return _0x387570[_0x2fae('0x16')](_0x3ea534)[_0x2fae('0x17')]();};}function respondWithResult(_0x3bfe96,_0x1bd63f){_0x1bd63f=_0x1bd63f||0xc8;return function(_0x43b08f){if(_0x43b08f){return _0x3bfe96[_0x2fae('0x16')](_0x1bd63f)[_0x2fae('0x18')](_0x43b08f);}};}function respondWithFilteredResult(_0x24ee9f,_0x3d4314){return function(_0x3881cf){if(_0x3881cf){var _0x19ab51=_0x3881cf[_0x2fae('0x19')],_0x4f3ac3=_0x3d4314[_0x2fae('0x1a')],_0x2b634c=_0x3d4314['offset']+_0x3d4314[_0x2fae('0x1b')],_0x109491;if(_0x2b634c>=_0x19ab51){_0x2b634c=_0x19ab51;_0x109491=0xc8;}else{_0x109491=0xce;}_0x24ee9f[_0x2fae('0x16')](_0x109491);return _0x24ee9f[_0x2fae('0x1c')](_0x2fae('0x1d'),_0x4f3ac3+'-'+_0x2b634c+'/'+_0x19ab51)[_0x2fae('0x18')](_0x3881cf);}return null;};}function patchUpdates(_0x3b5cf5){return function(_0x238a87){try{jsonpatch[_0x2fae('0x1e')](_0x238a87,_0x3b5cf5,!![]);}catch(_0x28bd42){return BPromise[_0x2fae('0x1f')](_0x28bd42);}return _0x238a87['save']();};}function saveUpdates(_0x5d0a7d,_0x4ef4da){return function(_0x4c5f0a){if(_0x4c5f0a){return _0x4c5f0a[_0x2fae('0x20')](_0x5d0a7d)[_0x2fae('0x21')](function(_0x3390c7){return _0x3390c7;});}return null;};}function removeEntity(_0xa4ad33,_0xb0c2fc){return function(_0x5c778f){if(_0x5c778f){return _0x5c778f[_0x2fae('0x22')]()[_0x2fae('0x21')](function(){var _0x5bd400=_0x5c778f[_0x2fae('0x23')]({'plain':!![]});var _0x55e702=_0x2fae('0x24');return db[_0x2fae('0x25')][_0x2fae('0x22')]({'where':{'type':_0x55e702,'resourceId':_0x5bd400['id']}})[_0x2fae('0x21')](function(){return _0x5c778f;});})[_0x2fae('0x21')](function(){_0xa4ad33[_0x2fae('0x16')](0xcc)[_0x2fae('0x17')]();});}};}function handleEntityNotFound(_0x3f4a7d,_0xcb0b6f){return function(_0x23bc9a){if(!_0x23bc9a){_0x3f4a7d[_0x2fae('0x26')](0x194);}return _0x23bc9a;};}function handleError(_0x5051b4,_0x28ed99){_0x28ed99=_0x28ed99||0x1f4;return function(_0x39849f){logger[_0x2fae('0x27')](_0x39849f[_0x2fae('0x28')]);if(_0x39849f[_0x2fae('0x29')]){delete _0x39849f['name'];}_0x5051b4['status'](_0x28ed99)[_0x2fae('0x2a')](_0x39849f);};}exports[_0x2fae('0x2b')]=function(_0x58bbc7,_0xfaf462){var _0x31f96b={},_0x31b812={},_0x27acaf={'count':0x0,'rows':[]};var _0x3075e1=db[_0x2fae('0x2c')]['rawAttributes'];_0x31b812['model']=_[_0x2fae('0x2d')](_0x3075e1);var _0x4e0343={'dateStart':_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x2f')],'dateEnd':_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x30')]};delete _0x58bbc7[_0x2fae('0x2e')]['dateStart'];delete _0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x30')];_0x31b812[_0x2fae('0x2e')]=_[_0x2fae('0x2d')](_0x58bbc7[_0x2fae('0x2e')]);_0x31b812[_0x2fae('0x31')]=_[_0x2fae('0x32')](_0x31b812[_0x2fae('0x33')],_0x31b812[_0x2fae('0x2e')]);_0x31f96b[_0x2fae('0x34')]=_[_0x2fae('0x32')](_0x31b812['model'],qs[_0x2fae('0x35')](_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x35')]));_0x31f96b['attributes']=_0x31f96b[_0x2fae('0x34')][_0x2fae('0x36')]?_0x31f96b[_0x2fae('0x34')]:_0x31b812[_0x2fae('0x33')];if(!_0x58bbc7['query'][_0x2fae('0x37')](_0x2fae('0x38'))){_0x31f96b['limit']=qs['limit'](_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x1b')]);_0x31f96b['offset']=qs[_0x2fae('0x1a')](_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x1a')]);}_0x31f96b[_0x2fae('0x39')]=qs[_0x2fae('0x3a')](_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x3a')]);_0x31f96b['where']=qs[_0x2fae('0x31')](_[_0x2fae('0x3b')](_0x58bbc7[_0x2fae('0x2e')],_0x31b812[_0x2fae('0x31')]));if(_0x4e0343[_0x2fae('0x2f')]){if(_0x4e0343[_0x2fae('0x30')]){_0x4e0343['dateEnd']=moment(_0x4e0343[_0x2fae('0x30')])[_0x2fae('0x3c')](0x1,_0x2fae('0x3d'));}else{_0x4e0343[_0x2fae('0x30')]=moment(_0x4e0343[_0x2fae('0x2f')])[_0x2fae('0x3c')](0x1,'day');}_[_0x2fae('0x3e')](_0x31f96b[_0x2fae('0x3f')],{'createdAt':{'$gte':_0x4e0343[_0x2fae('0x2f')],'$lte':_0x4e0343[_0x2fae('0x30')]}});}if(_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x40')]){_0x31f96b['where']=_[_0x2fae('0x3e')](_0x31f96b[_0x2fae('0x3f')],{'$or':_[_0x2fae('0x41')](_0x3075e1,function(_0x52a67c){if(_0x52a67c[_0x2fae('0x42')][_0x2fae('0x43')]!==_0x2fae('0x44')){var _0x2fc681={};_0x2fc681[_0x52a67c[_0x2fae('0x45')]]={'$like':'%'+_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x40')]+'%'};return _0x2fc681;}})});}_0x31f96b=_[_0x2fae('0x3e')]({},_0x31f96b,_0x58bbc7[_0x2fae('0x46')]);var _0x26288d={'where':_0x31f96b[_0x2fae('0x3f')]};return db[_0x2fae('0x2c')][_0x2fae('0x19')](_0x26288d)['then'](function(_0x2b50ab){_0x27acaf[_0x2fae('0x19')]=_0x2b50ab;if(_0x58bbc7[_0x2fae('0x2e')][_0x2fae('0x47')]){_0x31f96b[_0x2fae('0x48')]=[{'all':!![]}];}return db[_0x2fae('0x2c')][_0x2fae('0x49')](_0x31f96b);})['then'](function(_0x132d4f){_0x27acaf[_0x2fae('0x4a')]=_0x132d4f;return _0x27acaf;})[_0x2fae('0x21')](respondWithFilteredResult(_0xfaf462,_0x31f96b))[_0x2fae('0x4b')](handleError(_0xfaf462,null));};exports[_0x2fae('0x4c')]=function(_0x202b88,_0x26c2bb){var _0x4b5bdf={'raw':![],'where':{'id':_0x202b88['params']['id']}},_0x1a0d8a={};_0x1a0d8a[_0x2fae('0x33')]=_[_0x2fae('0x2d')](db[_0x2fae('0x2c')][_0x2fae('0x4d')]);_0x1a0d8a['query']=_[_0x2fae('0x2d')](_0x202b88[_0x2fae('0x2e')]);_0x1a0d8a[_0x2fae('0x31')]=_[_0x2fae('0x32')](_0x1a0d8a['model'],_0x1a0d8a[_0x2fae('0x2e')]);_0x4b5bdf[_0x2fae('0x34')]=_[_0x2fae('0x32')](_0x1a0d8a['model'],qs[_0x2fae('0x35')](_0x202b88[_0x2fae('0x2e')][_0x2fae('0x35')]));_0x4b5bdf['attributes']=_0x4b5bdf[_0x2fae('0x34')][_0x2fae('0x36')]?_0x4b5bdf[_0x2fae('0x34')]:_0x1a0d8a[_0x2fae('0x33')];if(_0x202b88[_0x2fae('0x2e')][_0x2fae('0x47')]){_0x4b5bdf[_0x2fae('0x48')]=[{'all':!![]}];}_0x4b5bdf=_[_0x2fae('0x3e')]({},_0x4b5bdf,_0x202b88[_0x2fae('0x46')]);return db[_0x2fae('0x2c')]['find'](_0x4b5bdf)[_0x2fae('0x21')](handleEntityNotFound(_0x26c2bb,null))[_0x2fae('0x21')](respondWithResult(_0x26c2bb,null))[_0x2fae('0x4b')](handleError(_0x26c2bb,null));};exports[_0x2fae('0x4e')]=function(_0x2fd780,_0x2b2ed4){return db[_0x2fae('0x2c')][_0x2fae('0x4e')](_0x2fd780[_0x2fae('0x4f')],{})[_0x2fae('0x21')](function(_0x287092){var _0x1bca82=_0x2fd780[_0x2fae('0x50')][_0x2fae('0x23')]({'plain':!![]});if(!_0x1bca82)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1bca82['role']==='user'){var _0x48c216=_0x287092['get']({'plain':!![]});var _0x17475a=_0x2fae('0x24');return db[_0x2fae('0x51')][_0x2fae('0x52')]({'where':{'name':_0x17475a,'userProfileId':_0x1bca82[_0x2fae('0x53')]},'raw':!![]})['then'](function(_0x3f07c3){if(_0x3f07c3&&_0x3f07c3[_0x2fae('0x54')]===0x0){return db['UserProfileResource']['create']({'name':_0x48c216[_0x2fae('0x29')],'resourceId':_0x48c216['id'],'type':_0x3f07c3[_0x2fae('0x29')],'sectionId':_0x3f07c3['id']},{})[_0x2fae('0x21')](function(){return _0x287092;});}else{return _0x287092;}})[_0x2fae('0x4b')](function(_0x2bc4e8){logger[_0x2fae('0x27')](_0x2fae('0x55'),_0x2bc4e8);throw _0x2bc4e8;});}return _0x287092;})[_0x2fae('0x21')](respondWithResult(_0x2b2ed4,0xc9))[_0x2fae('0x4b')](handleError(_0x2b2ed4,null));};exports[_0x2fae('0x20')]=function(_0x4fd1fb,_0x43a267){if(_0x4fd1fb[_0x2fae('0x4f')]['id']){delete _0x4fd1fb[_0x2fae('0x4f')]['id'];}return db[_0x2fae('0x2c')]['find']({'where':{'id':_0x4fd1fb[_0x2fae('0x56')]['id']}})[_0x2fae('0x21')](handleEntityNotFound(_0x43a267,null))['then'](saveUpdates(_0x4fd1fb[_0x2fae('0x4f')],null))[_0x2fae('0x21')](respondWithResult(_0x43a267,null))[_0x2fae('0x4b')](handleError(_0x43a267,null));};exports['destroy']=function(_0x5e2a9e,_0x59f859){return db['Schedule'][_0x2fae('0x52')]({'where':{'id':_0x5e2a9e['params']['id']}})[_0x2fae('0x21')](handleEntityNotFound(_0x59f859,null))[_0x2fae('0x21')](removeEntity(_0x59f859,null))[_0x2fae('0x4b')](handleError(_0x59f859,null));};exports[_0x2fae('0x57')]=function(_0x235ace,_0x26cc37,_0xe1eded){var _0x543751=require('../../config/schedule');return db[_0x2fae('0x2c')][_0x2fae('0x52')]({'where':{'id':_0x235ace[_0x2fae('0x56')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x26cc37,null))[_0x2fae('0x21')](function(){_0x543751[_0x2fae('0x57')](_0x235ace[_0x2fae('0x56')]['id']);})['then'](respondWithStatusCode(_0x26cc37,null))[_0x2fae('0x4b')](handleError(_0x26cc37,null));};
\ No newline at end of file
+var _0x0f42=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','day','add','where','filter','map','type','key','merge','findAll','rows','catch','show','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','run','../../config/schedule','html-pdf','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Scheduler','error','stack','name','send','index','Schedule','rawAttributes','model','keys','query','dateStart','dateEnd'];(function(_0x30e5a1,_0x1ae4ed){var _0x1a4e57=function(_0x52eb3b){while(--_0x52eb3b){_0x30e5a1['push'](_0x30e5a1['shift']());}};_0x1a4e57(++_0x1ae4ed);}(_0x0f42,0xc9));var _0x20f4=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x0f42[_0x465028];return _0xb783d4;};'use strict';var pdf=require(_0x20f4('0x0'));var emlformat=require(_0x20f4('0x1'));var rimraf=require(_0x20f4('0x2'));var zipdir=require(_0x20f4('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x20f4('0x4'));var moment=require('moment');var BPromise=require(_0x20f4('0x5'));var Mustache=require(_0x20f4('0x6'));var util=require(_0x20f4('0x7'));var path=require(_0x20f4('0x8'));var sox=require(_0x20f4('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x20f4('0xa'));var squel=require('squel');var crypto=require(_0x20f4('0xb'));var jsforce=require(_0x20f4('0xc'));var deskjs=require(_0x20f4('0xd'));var toCsv=require(_0x20f4('0xe'));var querystring=require(_0x20f4('0xf'));var Papa=require(_0x20f4('0x10'));var Redis=require(_0x20f4('0x11'));var qs=require(_0x20f4('0x12'));var logger=require(_0x20f4('0x13'))(_0x20f4('0x14'));var utils=require('../../config/utils');var config=require(_0x20f4('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf1d83e,_0x4c54b9){_0x4c54b9=_0x4c54b9||0xcc;return function(_0x1fa02a){if(_0x1fa02a){return _0xf1d83e[_0x20f4('0x16')](_0x4c54b9);}return _0xf1d83e[_0x20f4('0x17')](_0x4c54b9)[_0x20f4('0x18')]();};}function respondWithResult(_0x42d902,_0x24bfd4){_0x24bfd4=_0x24bfd4||0xc8;return function(_0x5555a3){if(_0x5555a3){return _0x42d902[_0x20f4('0x17')](_0x24bfd4)[_0x20f4('0x19')](_0x5555a3);}};}function respondWithFilteredResult(_0x5c0203,_0x452967){return function(_0x1898b2){if(_0x1898b2){var _0x287372=_0x1898b2[_0x20f4('0x1a')],_0x272942=_0x452967['offset'],_0x4ba133=_0x452967[_0x20f4('0x1b')]+_0x452967[_0x20f4('0x1c')],_0x1e2bde;if(_0x4ba133>=_0x287372){_0x4ba133=_0x287372;_0x1e2bde=0xc8;}else{_0x1e2bde=0xce;}_0x5c0203[_0x20f4('0x17')](_0x1e2bde);return _0x5c0203[_0x20f4('0x1d')](_0x20f4('0x1e'),_0x272942+'-'+_0x4ba133+'/'+_0x287372)['json'](_0x1898b2);}return null;};}function patchUpdates(_0x483575){return function(_0x3e7dcf){try{jsonpatch[_0x20f4('0x1f')](_0x3e7dcf,_0x483575,!![]);}catch(_0x5263c0){return BPromise[_0x20f4('0x20')](_0x5263c0);}return _0x3e7dcf[_0x20f4('0x21')]();};}function saveUpdates(_0x2c9859,_0xdf1a88){return function(_0x37dd1b){if(_0x37dd1b){return _0x37dd1b[_0x20f4('0x22')](_0x2c9859)[_0x20f4('0x23')](function(_0x4faf92){return _0x4faf92;});}return null;};}function removeEntity(_0x60d6ca,_0x526c53){return function(_0xd9efb2){if(_0xd9efb2){return _0xd9efb2[_0x20f4('0x24')]()['then'](function(){var _0x636e3b=_0xd9efb2[_0x20f4('0x25')]({'plain':!![]});var _0x342477=_0x20f4('0x26');return db['UserProfileResource'][_0x20f4('0x24')]({'where':{'type':_0x342477,'resourceId':_0x636e3b['id']}})['then'](function(){return _0xd9efb2;});})['then'](function(){_0x60d6ca[_0x20f4('0x17')](0xcc)[_0x20f4('0x18')]();});}};}function handleEntityNotFound(_0x8162f,_0x305200){return function(_0x46f1ae){if(!_0x46f1ae){_0x8162f[_0x20f4('0x16')](0x194);}return _0x46f1ae;};}function handleError(_0x1925b5,_0x283cdb){_0x283cdb=_0x283cdb||0x1f4;return function(_0x22863f){logger[_0x20f4('0x27')](_0x22863f[_0x20f4('0x28')]);if(_0x22863f[_0x20f4('0x29')]){delete _0x22863f['name'];}_0x1925b5['status'](_0x283cdb)[_0x20f4('0x2a')](_0x22863f);};}exports[_0x20f4('0x2b')]=function(_0x4d1f5f,_0x33cb85){var _0x98b122={},_0x461bcf={},_0x19c4c3={'count':0x0,'rows':[]};var _0x404996=db[_0x20f4('0x2c')][_0x20f4('0x2d')];_0x461bcf[_0x20f4('0x2e')]=_[_0x20f4('0x2f')](_0x404996);var _0x53f075={'dateStart':_0x4d1f5f[_0x20f4('0x30')][_0x20f4('0x31')],'dateEnd':_0x4d1f5f['query'][_0x20f4('0x32')]};delete _0x4d1f5f[_0x20f4('0x30')][_0x20f4('0x31')];delete _0x4d1f5f[_0x20f4('0x30')][_0x20f4('0x32')];_0x461bcf['query']=_[_0x20f4('0x2f')](_0x4d1f5f['query']);_0x461bcf[_0x20f4('0x33')]=_[_0x20f4('0x34')](_0x461bcf['model'],_0x461bcf[_0x20f4('0x30')]);_0x98b122[_0x20f4('0x35')]=_[_0x20f4('0x34')](_0x461bcf[_0x20f4('0x2e')],qs[_0x20f4('0x36')](_0x4d1f5f[_0x20f4('0x30')][_0x20f4('0x36')]));_0x98b122[_0x20f4('0x35')]=_0x98b122['attributes'][_0x20f4('0x37')]?_0x98b122[_0x20f4('0x35')]:_0x461bcf['model'];if(!_0x4d1f5f[_0x20f4('0x30')][_0x20f4('0x38')](_0x20f4('0x39'))){_0x98b122[_0x20f4('0x1c')]=qs[_0x20f4('0x1c')](_0x4d1f5f[_0x20f4('0x30')][_0x20f4('0x1c')]);_0x98b122[_0x20f4('0x1b')]=qs['offset'](_0x4d1f5f[_0x20f4('0x30')]['offset']);}_0x98b122[_0x20f4('0x3a')]=qs['sort'](_0x4d1f5f['query'][_0x20f4('0x3b')]);_0x98b122['where']=qs['filters'](_['pick'](_0x4d1f5f[_0x20f4('0x30')],_0x461bcf[_0x20f4('0x33')]));if(_0x53f075[_0x20f4('0x31')]){if(_0x53f075[_0x20f4('0x32')]){_0x53f075['dateEnd']=moment(_0x53f075[_0x20f4('0x32')])['add'](0x1,_0x20f4('0x3c'));}else{_0x53f075[_0x20f4('0x32')]=moment(_0x53f075[_0x20f4('0x31')])[_0x20f4('0x3d')](0x1,'day');}_['merge'](_0x98b122[_0x20f4('0x3e')],{'createdAt':{'$gte':_0x53f075['dateStart'],'$lte':_0x53f075['dateEnd']}});}if(_0x4d1f5f[_0x20f4('0x30')][_0x20f4('0x3f')]){_0x98b122[_0x20f4('0x3e')]=_['merge'](_0x98b122[_0x20f4('0x3e')],{'$or':_[_0x20f4('0x40')](_0x404996,function(_0x2b4f61){if(_0x2b4f61[_0x20f4('0x41')][_0x20f4('0x42')]!=='VIRTUAL'){var _0x54d2ee={};_0x54d2ee[_0x2b4f61['field']]={'$like':'%'+_0x4d1f5f[_0x20f4('0x30')]['filter']+'%'};return _0x54d2ee;}})});}_0x98b122=_[_0x20f4('0x43')]({},_0x98b122,_0x4d1f5f['options']);var _0x13e48d={'where':_0x98b122[_0x20f4('0x3e')]};return db[_0x20f4('0x2c')]['count'](_0x13e48d)[_0x20f4('0x23')](function(_0x502467){_0x19c4c3[_0x20f4('0x1a')]=_0x502467;if(_0x4d1f5f[_0x20f4('0x30')]['includeAll']){_0x98b122['include']=[{'all':!![]}];}return db['Schedule'][_0x20f4('0x44')](_0x98b122);})[_0x20f4('0x23')](function(_0xbbf5fd){_0x19c4c3[_0x20f4('0x45')]=_0xbbf5fd;return _0x19c4c3;})[_0x20f4('0x23')](respondWithFilteredResult(_0x33cb85,_0x98b122))[_0x20f4('0x46')](handleError(_0x33cb85,null));};exports[_0x20f4('0x47')]=function(_0x150ee5,_0x49b338){var _0x3a453f={'raw':![],'where':{'id':_0x150ee5['params']['id']}},_0x2067fe={};_0x2067fe['model']=_[_0x20f4('0x2f')](db['Schedule'][_0x20f4('0x2d')]);_0x2067fe['query']=_['keys'](_0x150ee5[_0x20f4('0x30')]);_0x2067fe['filters']=_['intersection'](_0x2067fe[_0x20f4('0x2e')],_0x2067fe[_0x20f4('0x30')]);_0x3a453f[_0x20f4('0x35')]=_['intersection'](_0x2067fe['model'],qs[_0x20f4('0x36')](_0x150ee5[_0x20f4('0x30')][_0x20f4('0x36')]));_0x3a453f['attributes']=_0x3a453f[_0x20f4('0x35')][_0x20f4('0x37')]?_0x3a453f[_0x20f4('0x35')]:_0x2067fe[_0x20f4('0x2e')];if(_0x150ee5[_0x20f4('0x30')]['includeAll']){_0x3a453f['include']=[{'all':!![]}];}_0x3a453f=_['merge']({},_0x3a453f,_0x150ee5[_0x20f4('0x48')]);return db['Schedule']['find'](_0x3a453f)[_0x20f4('0x23')](handleEntityNotFound(_0x49b338,null))[_0x20f4('0x23')](respondWithResult(_0x49b338,null))[_0x20f4('0x46')](handleError(_0x49b338,null));};exports[_0x20f4('0x49')]=function(_0x27ce57,_0x567026){return db[_0x20f4('0x2c')][_0x20f4('0x49')](_0x27ce57[_0x20f4('0x4a')],{})[_0x20f4('0x23')](function(_0x2c5ccd){var _0x52de8e=_0x27ce57[_0x20f4('0x4b')][_0x20f4('0x25')]({'plain':!![]});if(!_0x52de8e)throw new Error(_0x20f4('0x4c'));if(_0x52de8e['role']==='user'){var _0x43471f=_0x2c5ccd['get']({'plain':!![]});var _0x5459f3=_0x20f4('0x26');return db['UserProfileSection'][_0x20f4('0x4d')]({'where':{'name':_0x5459f3,'userProfileId':_0x52de8e[_0x20f4('0x4e')]},'raw':!![]})['then'](function(_0x49eb40){if(_0x49eb40&&_0x49eb40[_0x20f4('0x4f')]===0x0){return db['UserProfileResource'][_0x20f4('0x49')]({'name':_0x43471f['name'],'resourceId':_0x43471f['id'],'type':_0x49eb40[_0x20f4('0x29')],'sectionId':_0x49eb40['id']},{})[_0x20f4('0x23')](function(){return _0x2c5ccd;});}else{return _0x2c5ccd;}})[_0x20f4('0x46')](function(_0x1fc4fa){logger[_0x20f4('0x27')](_0x20f4('0x50'),_0x1fc4fa);throw _0x1fc4fa;});}return _0x2c5ccd;})[_0x20f4('0x23')](respondWithResult(_0x567026,0xc9))[_0x20f4('0x46')](handleError(_0x567026,null));};exports['update']=function(_0x1b2437,_0x3944fa){if(_0x1b2437['body']['id']){delete _0x1b2437[_0x20f4('0x4a')]['id'];}return db['Schedule']['find']({'where':{'id':_0x1b2437[_0x20f4('0x51')]['id']}})['then'](handleEntityNotFound(_0x3944fa,null))['then'](saveUpdates(_0x1b2437['body'],null))[_0x20f4('0x23')](respondWithResult(_0x3944fa,null))['catch'](handleError(_0x3944fa,null));};exports[_0x20f4('0x24')]=function(_0x57a7d8,_0x37cb81){return db[_0x20f4('0x2c')]['find']({'where':{'id':_0x57a7d8[_0x20f4('0x51')]['id']}})[_0x20f4('0x23')](handleEntityNotFound(_0x37cb81,null))['then'](removeEntity(_0x37cb81,null))['catch'](handleError(_0x37cb81,null));};exports[_0x20f4('0x52')]=function(_0x31992a,_0x144a87,_0x245ff4){var _0x303979=require(_0x20f4('0x53'));return db[_0x20f4('0x2c')][_0x20f4('0x4d')]({'where':{'id':_0x31992a[_0x20f4('0x51')]['id']},'raw':!![]})[_0x20f4('0x23')](handleEntityNotFound(_0x144a87,null))[_0x20f4('0x23')](function(){_0x303979[_0x20f4('0x52')](_0x31992a['params']['id']);})['then'](respondWithStatusCode(_0x144a87,null))[_0x20f4('0x46')](handleError(_0x144a87,null));};
\ No newline at end of file
index eff2504..1849480 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26dc=['define','Schedule','tools_schedules','lodash','../../config/logger','api','moment','bluebird','request-promise','exports'];(function(_0x42022a,_0x2d0fd9){var _0x1f0b25=function(_0x5a5624){while(--_0x5a5624){_0x42022a['push'](_0x42022a['shift']());}};_0x1f0b25(++_0x2d0fd9);}(_0x26dc,0x1c5));var _0xc26d=function(_0x28ce7f,_0x43a19b){_0x28ce7f=_0x28ce7f-0x0;var _0x178d62=_0x26dc[_0x28ce7f];return _0x178d62;};'use strict';var _=require(_0xc26d('0x0'));var util=require('util');var logger=require(_0xc26d('0x1'))(_0xc26d('0x2'));var moment=require(_0xc26d('0x3'));var BPromise=require(_0xc26d('0x4'));var rp=require(_0xc26d('0x5'));var attributes=require('./schedule.attributes');module[_0xc26d('0x6')]=function(_0x406b5d,_0x359f8b){return _0x406b5d[_0xc26d('0x7')](_0xc26d('0x8'),attributes,{'tableName':_0xc26d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd54=['moment','bluebird','request-promise','exports','tools_schedules','lodash','util','api'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xbd54,0x11d));var _0x4bd5=function(_0x357633,_0x254610){_0x357633=_0x357633-0x0;var _0x261faf=_0xbd54[_0x357633];return _0x261faf;};'use strict';var _=require(_0x4bd5('0x0'));var util=require(_0x4bd5('0x1'));var logger=require('../../config/logger')(_0x4bd5('0x2'));var moment=require(_0x4bd5('0x3'));var BPromise=require(_0x4bd5('0x4'));var rp=require(_0x4bd5('0x5'));var attributes=require('./schedule.attributes');module[_0x4bd5('0x6')]=function(_0x45a7ea,_0x55e73e){return _0x45a7ea['define']('Schedule',attributes,{'tableName':_0x4bd5('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c07a96a..9a8fb65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x229e=['code','Schedule,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','info','debug','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4002f7,_0x51bb13){var _0x2c7418=function(_0x59a584){while(--_0x59a584){_0x4002f7['push'](_0x4002f7['shift']());}};_0x2c7418(++_0x51bb13);}(_0x229e,0x1ba));var _0xe229=function(_0x21e93e,_0x378c55){_0x21e93e=_0x21e93e-0x0;var _0x13a716=_0x229e[_0x21e93e];return _0x13a716;};'use strict';var _=require(_0xe229('0x0'));var util=require('util');var moment=require(_0xe229('0x1'));var BPromise=require(_0xe229('0x2'));var rs=require(_0xe229('0x3'));var fs=require('fs');var Redis=require(_0xe229('0x4'));var db=require(_0xe229('0x5'))['db'];var utils=require(_0xe229('0x6'));var logger=require(_0xe229('0x7'))(_0xe229('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe229('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25b072,_0x3048e2,_0x1edf9b){return new BPromise(function(_0x194051,_0x5a1903){return client[_0xe229('0xa')](_0x25b072,_0x1edf9b)[_0xe229('0xb')](function(_0x6f259b){logger[_0xe229('0xc')]('Schedule,\x20%s,\x20%s',_0x3048e2,'request\x20sent');logger[_0xe229('0xd')](_0xe229('0xe'),_0x3048e2,_0xe229('0xf'),JSON[_0xe229('0x10')](_0x6f259b));if(_0x6f259b[_0xe229('0x11')]){if(_0x6f259b[_0xe229('0x11')][_0xe229('0x12')]===0x1f4){logger[_0xe229('0x11')](_0xe229('0x13'),_0x3048e2,_0x6f259b[_0xe229('0x11')][_0xe229('0x14')]);return _0x5a1903(_0x6f259b[_0xe229('0x11')][_0xe229('0x14')]);}logger['error'](_0xe229('0x13'),_0x3048e2,_0x6f259b[_0xe229('0x11')][_0xe229('0x14')]);return _0x194051(_0x6f259b[_0xe229('0x11')]['message']);}else{logger[_0xe229('0xc')](_0xe229('0x13'),_0x3048e2,'request\x20sent');_0x194051(_0x6f259b[_0xe229('0x15')][_0xe229('0x14')]);}})[_0xe229('0x16')](function(_0x423892){logger[_0xe229('0x11')](_0xe229('0x13'),_0x3048e2,_0x423892);_0x5a1903(_0x423892);});});}
\ No newline at end of file
+var _0x1860=['Schedule,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xa3d9a7,_0x1cf219){var _0x48080a=function(_0x43bead){while(--_0x43bead){_0xa3d9a7['push'](_0xa3d9a7['shift']());}};_0x48080a(++_0x1cf219);}(_0x1860,0x90));var _0x0186=function(_0x28c19b,_0x438c58){_0x28c19b=_0x28c19b-0x0;var _0x1d8230=_0x1860[_0x28c19b];return _0x1d8230;};'use strict';var _=require(_0x0186('0x0'));var util=require(_0x0186('0x1'));var moment=require(_0x0186('0x2'));var BPromise=require(_0x0186('0x3'));var rs=require(_0x0186('0x4'));var fs=require('fs');var Redis=require(_0x0186('0x5'));var db=require(_0x0186('0x6'))['db'];var utils=require(_0x0186('0x7'));var logger=require('../../config/logger')(_0x0186('0x8'));var config=require(_0x0186('0x9'));var jayson=require(_0x0186('0xa'));var client=jayson[_0x0186('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8bf86b,_0x44ba25,_0x1ce459){return new BPromise(function(_0x2a605c,_0x226af5){return client['request'](_0x8bf86b,_0x1ce459)[_0x0186('0xc')](function(_0xcafdfd){logger[_0x0186('0xd')](_0x0186('0xe'),_0x44ba25,_0x0186('0xf'));logger[_0x0186('0x10')](_0x0186('0x11'),_0x44ba25,_0x0186('0xf'),JSON[_0x0186('0x12')](_0xcafdfd));if(_0xcafdfd['error']){if(_0xcafdfd['error']['code']===0x1f4){logger[_0x0186('0x13')](_0x0186('0xe'),_0x44ba25,_0xcafdfd[_0x0186('0x13')][_0x0186('0x14')]);return _0x226af5(_0xcafdfd[_0x0186('0x13')][_0x0186('0x14')]);}logger['error'](_0x0186('0xe'),_0x44ba25,_0xcafdfd[_0x0186('0x13')]['message']);return _0x2a605c(_0xcafdfd[_0x0186('0x13')][_0x0186('0x14')]);}else{logger[_0x0186('0xd')](_0x0186('0xe'),_0x44ba25,'request\x20sent');_0x2a605c(_0xcafdfd[_0x0186('0x15')][_0x0186('0x14')]);}})[_0x0186('0x16')](function(_0x108904){logger[_0x0186('0x13')](_0x0186('0xe'),_0x44ba25,_0x108904);_0x226af5(_0x108904);});});}
\ No newline at end of file
index 777e839..6f32743 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0e1=['server/files/images/logos/','logologin','post','preferred','/:id/preferred','/:id','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','/:id/logo','/:id/logo_login','/:id/gdpr','getPreferred','diskStorage','join','root','format','%s%s','logo','extname','originalname','single','file','addLogo'];(function(_0x34c744,_0x1e2e08){var _0xe1fde1=function(_0x53cf69){while(--_0x53cf69){_0x34c744['push'](_0x34c744['shift']());}};_0xe1fde1(++_0x1e2e08);}(_0xd0e1,0x1b4));var _0x1d0e=function(_0x507d90,_0x471321){_0x507d90=_0x507d90-0x0;var _0x4aae4e=_0xd0e1[_0x507d90];return _0x4aae4e;};'use strict';var multer=require('multer');var util=require(_0x1d0e('0x0'));var path=require(_0x1d0e('0x1'));var timeout=require('connect-timeout');var express=require(_0x1d0e('0x2'));var router=express[_0x1d0e('0x3')]();var auth=require(_0x1d0e('0x4'));var interaction=require(_0x1d0e('0x5'));var config=require(_0x1d0e('0x6'));var controller=require('./setting.controller');router['get']('/',auth[_0x1d0e('0x7')](),controller[_0x1d0e('0x8')]);router[_0x1d0e('0x9')]('/:id',controller[_0x1d0e('0xa')]);router[_0x1d0e('0x9')](_0x1d0e('0xb'),controller['getLogo']);router[_0x1d0e('0x9')](_0x1d0e('0xc'),controller['getLogoLogin']);router['get'](_0x1d0e('0xd'),controller['gdpr']);router[_0x1d0e('0x9')]('/:id/preferred',controller[_0x1d0e('0xe')]);var upload=multer({'storage':multer[_0x1d0e('0xf')]({'destination':function(_0x167cda,_0x365d8c,_0x3dd3c6){_0x3dd3c6(null,path[_0x1d0e('0x10')](config[_0x1d0e('0x11')],'server/files/images/logos/'));},'filename':function(_0x3f451a,_0x395144,_0x2552d6){_0x2552d6(null,util[_0x1d0e('0x12')](_0x1d0e('0x13'),_0x1d0e('0x14'),path[_0x1d0e('0x15')](_0x395144[_0x1d0e('0x16')])));}})});router['post'](_0x1d0e('0xb'),upload[_0x1d0e('0x17')](_0x1d0e('0x18')),controller[_0x1d0e('0x19')]);var upload=multer({'storage':multer[_0x1d0e('0xf')]({'destination':function(_0x6b302f,_0x892963,_0x5d6cb4){_0x5d6cb4(null,path[_0x1d0e('0x10')](config['root'],_0x1d0e('0x1a')));},'filename':function(_0x5c6427,_0x2f5ebf,_0x346e6f){_0x346e6f(null,util[_0x1d0e('0x12')]('%s%s',_0x1d0e('0x1b'),path[_0x1d0e('0x15')](_0x2f5ebf[_0x1d0e('0x16')])));}})});router[_0x1d0e('0x1c')]('/:id/logo_login',upload[_0x1d0e('0x17')](_0x1d0e('0x18')),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x1d0e('0xf')]({'destination':function(_0x2226fc,_0x39e7c9,_0xaf027){_0xaf027(null,path['join'](config[_0x1d0e('0x11')],_0x1d0e('0x1a')));},'filename':function(_0x42ce04,_0x5ed1df,_0x41a728){_0x41a728(null,util[_0x1d0e('0x12')]('%s%s',_0x1d0e('0x1d'),path[_0x1d0e('0x15')](_0x5ed1df[_0x1d0e('0x16')])));}})});router[_0x1d0e('0x1c')](_0x1d0e('0x1e'),upload[_0x1d0e('0x17')](_0x1d0e('0x18')),controller['addPreferred']);router['put'](_0x1d0e('0x1f'),auth[_0x1d0e('0x7')](),controller['update']);module[_0x1d0e('0x20')]=router;
\ No newline at end of file
+var _0xc7fc=['file','addLogo','diskStorage','join','extname','single','preferred','/:id/preferred','addPreferred','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/:id','show','/:id/logo','getLogo','/:id/logo_login','/:id/gdpr','gdpr','root','server/files/images/logos/','format','logo','originalname','post'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0xc7fc,0x101));var _0xcc7f=function(_0x189cf7,_0x233a77){_0x189cf7=_0x189cf7-0x0;var _0xddf988=_0xc7fc[_0x189cf7];return _0xddf988;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcc7f('0x0'));var timeout=require(_0xcc7f('0x1'));var express=require('express');var router=express[_0xcc7f('0x2')]();var auth=require(_0xcc7f('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xcc7f('0x4'));var controller=require(_0xcc7f('0x5'));router[_0xcc7f('0x6')]('/',auth[_0xcc7f('0x7')](),controller[_0xcc7f('0x8')]);router[_0xcc7f('0x6')](_0xcc7f('0x9'),controller[_0xcc7f('0xa')]);router['get'](_0xcc7f('0xb'),controller[_0xcc7f('0xc')]);router[_0xcc7f('0x6')](_0xcc7f('0xd'),controller['getLogoLogin']);router[_0xcc7f('0x6')](_0xcc7f('0xe'),controller[_0xcc7f('0xf')]);router['get']('/:id/preferred',controller['getPreferred']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x52de33,_0xc014d,_0xdb7e9a){_0xdb7e9a(null,path['join'](config[_0xcc7f('0x10')],_0xcc7f('0x11')));},'filename':function(_0x32f8ba,_0x5e289f,_0x4b74e8){_0x4b74e8(null,util[_0xcc7f('0x12')]('%s%s',_0xcc7f('0x13'),path['extname'](_0x5e289f[_0xcc7f('0x14')])));}})});router[_0xcc7f('0x15')](_0xcc7f('0xb'),upload['single'](_0xcc7f('0x16')),controller[_0xcc7f('0x17')]);var upload=multer({'storage':multer[_0xcc7f('0x18')]({'destination':function(_0x4a2eaf,_0x18c144,_0x569cdb){_0x569cdb(null,path[_0xcc7f('0x19')](config['root'],_0xcc7f('0x11')));},'filename':function(_0x5521b1,_0x20817b,_0x36b054){_0x36b054(null,util[_0xcc7f('0x12')]('%s%s','logologin',path[_0xcc7f('0x1a')](_0x20817b[_0xcc7f('0x14')])));}})});router['post']('/:id/logo_login',upload[_0xcc7f('0x1b')](_0xcc7f('0x16')),controller['addLogoLogin']);var upload=multer({'storage':multer[_0xcc7f('0x18')]({'destination':function(_0x3fd4b9,_0x34ed71,_0x2fb221){_0x2fb221(null,path[_0xcc7f('0x19')](config[_0xcc7f('0x10')],_0xcc7f('0x11')));},'filename':function(_0x4868ae,_0x43ad91,_0x486cb3){_0x486cb3(null,util[_0xcc7f('0x12')]('%s%s',_0xcc7f('0x1c'),path[_0xcc7f('0x1a')](_0x43ad91[_0xcc7f('0x14')])));}})});router[_0xcc7f('0x15')](_0xcc7f('0x1d'),upload[_0xcc7f('0x1b')](_0xcc7f('0x16')),controller[_0xcc7f('0x1e')]);router['put'](_0xcc7f('0x9'),auth['isAuthenticated'](),controller['update']);module['exports']=router;
\ No newline at end of file
index a213dfe..2b08823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6315=['INTEGER','min_mailbox','STRING','BOOLEAN','alternate','exports'];(function(_0x3b4652,_0x4579f4){var _0x7e740c=function(_0x21f314){while(--_0x21f314){_0x3b4652['push'](_0x3b4652['shift']());}};_0x7e740c(++_0x4579f4);}(_0x6315,0x71));var _0x5631=function(_0xb744d2,_0xbc7282){_0xb744d2=_0xb744d2-0x0;var _0xb8b22e=_0x6315[_0xb744d2];return _0xb8b22e;};'use strict';var Sequelize=require('sequelize');module[_0x5631('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x5631('0x1')](0xb),'unique':_0x5631('0x2'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x5631('0x1')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x5631('0x3')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize[_0x5631('0x3')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize[_0x5631('0x4')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x5631('0x3')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x5631('0x4')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x5631('0x4')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x5631('0x4')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x5631('0x3')]},'turnaddr':{'type':Sequelize[_0x5631('0x3')]},'turnusername':{'type':Sequelize[_0x5631('0x3')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x5631('0x3')]},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x5631('0x4')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x5631('0x1')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x5631('0x4')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x5631('0x3')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x5631('0x4')],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x5631('0x1')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x5631('0x1')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0x5631('0x5')},'chatTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x5631('0x4')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x5631('0x3')]},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xa562=['exports','INTEGER','min_mailbox','STRING','BOOLEAN','alternate','sequelize'];(function(_0x4f6ea1,_0x301b70){var _0x3331c9=function(_0x57a0ef){while(--_0x57a0ef){_0x4f6ea1['push'](_0x4f6ea1['shift']());}};_0x3331c9(++_0x301b70);}(_0xa562,0x1e9));var _0x2a56=function(_0x2fd69d,_0xeb1037){_0x2fd69d=_0x2fd69d-0x0;var _0x5d5ef3=_0xa562[_0x2fd69d];return _0x5d5ef3;};'use strict';var Sequelize=require(_0x2a56('0x0'));module[_0x2a56('0x1')]={'min_internal':{'type':Sequelize[_0x2a56('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x2a56('0x2')](0xb),'unique':_0x2a56('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x2a56('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize['STRING'],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize[_0x2a56('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x2a56('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x2a56('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x2a56('0x4')]},'turnusername':{'type':Sequelize[_0x2a56('0x4')]},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x2a56('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x2a56('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x2a56('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x2a56('0x4')],'defaultValue':_0x2a56('0x6')},'chatTimeout':{'type':Sequelize[_0x2a56('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x2a56('0x5')],'defaultValue':!![]}};
\ No newline at end of file
index fc8aee1..54b8b57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed88=['code','message','info','result','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','name','send','index','Setting','rawAttributes','model','keys','dateStart','query','dateEnd','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','add','day','filter','map','key','field','merge','include','findAll','rows','show','params','includeAll','options','find','body','readFileSync','join','root','server/files/templates/stun.ejs','utf8','render','server/files/templates/turn.ejs','writeFileSync','/etc/asterisk/stun_xcally.conf','/etc/asterisk/turn_xcally.conf','Reload','res_stun_monitor.so','res_rtp_asterisk.so','addLogo','file','filename','addLogoLogin','../../config/license/util','getLogo','getLicense','logo','loginLogo','defaultLogo','existsSync','toLower','default_logo.png','default','upperFirst','custom','ValidationError','Logo\x20not\x20found','download','getLogoLogin','server/files/images/logos','preferred','defaultPreferred','default_loginLogo.png','Sequelize','gdpr','addPreferred','getPreferred','defaultLoginLogo','default_preferred.png','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','ejs','lodash','crypto','to-csv','papaparse','ioredis','../../config/logger','api','../../config/environment','client','http','request','then','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x41a6aa,_0x39da60){var _0xfdd84c=function(_0x56e199){while(--_0x56e199){_0x41a6aa['push'](_0x41a6aa['shift']());}};_0xfdd84c(++_0x39da60);}(_0xed88,0xdd));var _0x8ed8=function(_0x451a71,_0x244e68){_0x451a71=_0x451a71-0x0;var _0x2a71d7=_0xed88[_0x451a71];return _0x2a71d7;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x8ed8('0x0'));var rimraf=require(_0x8ed8('0x1'));var zipdir=require(_0x8ed8('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8ed8('0x3'));var moment=require(_0x8ed8('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8ed8('0x5'));var path=require(_0x8ed8('0x6'));var sox=require(_0x8ed8('0x7'));var csv=require('to-csv');var ejs=require(_0x8ed8('0x8'));var fs=require('fs');var _=require(_0x8ed8('0x9'));var squel=require('squel');var crypto=require(_0x8ed8('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8ed8('0xb'));var querystring=require('querystring');var Papa=require(_0x8ed8('0xc'));var Redis=require(_0x8ed8('0xd'));var qs=require('../../components/parsers/qs');var logger=require(_0x8ed8('0xe'))(_0x8ed8('0xf'));var utils=require('../../config/utils');var config=require(_0x8ed8('0x10'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x8ed8('0x11')][_0x8ed8('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x4055a0,_0x336a89,_0x36f7d2,_0x90b61a){return new BPromise(function(_0x1b92cb,_0x3000b2){var _0x3f4b7a=_0x90b61a||client;return _0x3f4b7a[_0x8ed8('0x13')](_0x4055a0,_0x36f7d2)[_0x8ed8('0x14')](function(_0x43081c){logger['info'](_0x8ed8('0x15'),_0x336a89,_0x8ed8('0x16'));logger[_0x8ed8('0x17')](_0x8ed8('0x18'),_0x336a89,_0x8ed8('0x16'),JSON[_0x8ed8('0x19')](_0x43081c));if(_0x43081c[_0x8ed8('0x1a')]){if(_0x43081c['error'][_0x8ed8('0x1b')]===0x1f4){logger[_0x8ed8('0x1a')]('Setting,\x20%s,\x20%s',_0x336a89,_0x43081c[_0x8ed8('0x1a')][_0x8ed8('0x1c')]);return _0x3000b2(_0x43081c[_0x8ed8('0x1a')]['message']);}logger[_0x8ed8('0x1a')](_0x8ed8('0x15'),_0x336a89,_0x43081c[_0x8ed8('0x1a')][_0x8ed8('0x1c')]);return _0x1b92cb(_0x43081c['error']['message']);}else{logger[_0x8ed8('0x1d')](_0x8ed8('0x15'),_0x336a89,_0x8ed8('0x16'));_0x1b92cb(_0x43081c[_0x8ed8('0x1e')][_0x8ed8('0x1c')]);}})[_0x8ed8('0x1f')](function(_0xd44356){logger[_0x8ed8('0x1a')](_0x8ed8('0x15'),_0x336a89,_0xd44356);_0x3000b2(_0xd44356);});});}function respondWithStatusCode(_0x25b02a,_0x4ad17e){_0x4ad17e=_0x4ad17e||0xcc;return function(_0x490080){if(_0x490080){return _0x25b02a[_0x8ed8('0x20')](_0x4ad17e);}return _0x25b02a[_0x8ed8('0x21')](_0x4ad17e)[_0x8ed8('0x22')]();};}function respondWithResult(_0x2494e9,_0x270016){_0x270016=_0x270016||0xc8;return function(_0x25ddb7){if(_0x25ddb7){return _0x2494e9[_0x8ed8('0x21')](_0x270016)[_0x8ed8('0x23')](_0x25ddb7);}};}function respondWithFilteredResult(_0x4e2411,_0x40bf9f){return function(_0x4f5269){if(_0x4f5269){var _0x39c7c6=_0x4f5269[_0x8ed8('0x24')],_0x3c3a1b=_0x40bf9f[_0x8ed8('0x25')],_0x31ae40=_0x40bf9f['offset']+_0x40bf9f[_0x8ed8('0x26')],_0x4340d2;if(_0x31ae40>=_0x39c7c6){_0x31ae40=_0x39c7c6;_0x4340d2=0xc8;}else{_0x4340d2=0xce;}_0x4e2411[_0x8ed8('0x21')](_0x4340d2);return _0x4e2411[_0x8ed8('0x27')](_0x8ed8('0x28'),_0x3c3a1b+'-'+_0x31ae40+'/'+_0x39c7c6)[_0x8ed8('0x23')](_0x4f5269);}return null;};}function patchUpdates(_0x3ef832){return function(_0x38bee6){try{jsonpatch[_0x8ed8('0x29')](_0x38bee6,_0x3ef832,!![]);}catch(_0x8c0dcd){return BPromise[_0x8ed8('0x2a')](_0x8c0dcd);}return _0x38bee6[_0x8ed8('0x2b')]();};}function saveUpdates(_0x22e4c0,_0x468bd1){return function(_0x19a1e1){if(_0x19a1e1){return _0x19a1e1[_0x8ed8('0x2c')](_0x22e4c0)[_0x8ed8('0x14')](function(_0x10caf8){return _0x10caf8;});}return null;};}function removeEntity(_0xe84845,_0x394f84){return function(_0x4beb22){if(_0x4beb22){return _0x4beb22['destroy']()['then'](function(){_0xe84845[_0x8ed8('0x21')](0xcc)[_0x8ed8('0x22')]();});}};}function handleEntityNotFound(_0x512318,_0x2becfc){return function(_0x24fcd6){if(!_0x24fcd6){_0x512318[_0x8ed8('0x20')](0x194);}return _0x24fcd6;};}function handleError(_0x38ee6d,_0x2444ad){_0x2444ad=_0x2444ad||0x1f4;return function(_0x3adbd8){logger[_0x8ed8('0x1a')](_0x3adbd8['stack']);if(_0x3adbd8[_0x8ed8('0x2d')]){delete _0x3adbd8[_0x8ed8('0x2d')];}_0x38ee6d[_0x8ed8('0x21')](_0x2444ad)[_0x8ed8('0x2e')](_0x3adbd8);};}exports[_0x8ed8('0x2f')]=function(_0x1a0973,_0x2ffdb7){var _0x38175d={},_0x544018={},_0x51611d={'count':0x0,'rows':[]};var _0x5d389f=db[_0x8ed8('0x30')][_0x8ed8('0x31')];_0x544018[_0x8ed8('0x32')]=_[_0x8ed8('0x33')](_0x5d389f);var _0x5eaeb2={'dateStart':_0x1a0973['query'][_0x8ed8('0x34')],'dateEnd':_0x1a0973[_0x8ed8('0x35')][_0x8ed8('0x36')]};delete _0x1a0973['query']['dateStart'];delete _0x1a0973[_0x8ed8('0x35')][_0x8ed8('0x36')];_0x544018['query']=_[_0x8ed8('0x33')](_0x1a0973['query']);_0x544018[_0x8ed8('0x37')]=_['intersection'](_0x544018[_0x8ed8('0x32')],_0x544018[_0x8ed8('0x35')]);_0x38175d[_0x8ed8('0x38')]=_[_0x8ed8('0x39')](_0x544018['model'],qs['fields'](_0x1a0973[_0x8ed8('0x35')][_0x8ed8('0x3a')]));_0x38175d['attributes']=_0x38175d[_0x8ed8('0x38')][_0x8ed8('0x3b')]?_0x38175d[_0x8ed8('0x38')]:_0x544018[_0x8ed8('0x32')];if(!_0x1a0973[_0x8ed8('0x35')][_0x8ed8('0x3c')](_0x8ed8('0x3d'))){_0x38175d['limit']=qs[_0x8ed8('0x26')](_0x1a0973[_0x8ed8('0x35')]['limit']);_0x38175d[_0x8ed8('0x25')]=qs[_0x8ed8('0x25')](_0x1a0973['query']['offset']);}_0x38175d[_0x8ed8('0x3e')]=qs['sort'](_0x1a0973[_0x8ed8('0x35')]['sort']);_0x38175d[_0x8ed8('0x3f')]=qs[_0x8ed8('0x37')](_[_0x8ed8('0x40')](_0x1a0973[_0x8ed8('0x35')],_0x544018[_0x8ed8('0x37')]));if(_0x5eaeb2['dateStart']){if(_0x5eaeb2['dateEnd']){_0x5eaeb2[_0x8ed8('0x36')]=moment(_0x5eaeb2[_0x8ed8('0x36')])[_0x8ed8('0x41')](0x1,_0x8ed8('0x42'));}else{_0x5eaeb2[_0x8ed8('0x36')]=moment(_0x5eaeb2['dateStart'])[_0x8ed8('0x41')](0x1,_0x8ed8('0x42'));}_['merge'](_0x38175d[_0x8ed8('0x3f')],{'createdAt':{'$gte':_0x5eaeb2['dateStart'],'$lte':_0x5eaeb2[_0x8ed8('0x36')]}});}if(_0x1a0973['query'][_0x8ed8('0x43')]){_0x38175d['where']=_['merge'](_0x38175d[_0x8ed8('0x3f')],{'$or':_[_0x8ed8('0x44')](_0x5d389f,function(_0x599c06){if(_0x599c06['type'][_0x8ed8('0x45')]!=='VIRTUAL'){var _0x17fc1d={};_0x17fc1d[_0x599c06[_0x8ed8('0x46')]]={'$like':'%'+_0x1a0973[_0x8ed8('0x35')][_0x8ed8('0x43')]+'%'};return _0x17fc1d;}})});}_0x38175d=_[_0x8ed8('0x47')]({},_0x38175d,_0x1a0973['options']);var _0x280a25={'where':_0x38175d['where']};return db[_0x8ed8('0x30')][_0x8ed8('0x24')](_0x280a25)[_0x8ed8('0x14')](function(_0xadcf3b){_0x51611d[_0x8ed8('0x24')]=_0xadcf3b;if(_0x1a0973[_0x8ed8('0x35')]['includeAll']){_0x38175d[_0x8ed8('0x48')]=[{'all':!![]}];}return db[_0x8ed8('0x30')][_0x8ed8('0x49')](_0x38175d);})[_0x8ed8('0x14')](function(_0x5aeb76){_0x51611d[_0x8ed8('0x4a')]=_0x5aeb76;return _0x51611d;})[_0x8ed8('0x14')](respondWithFilteredResult(_0x2ffdb7,_0x38175d))[_0x8ed8('0x1f')](handleError(_0x2ffdb7,null));};exports[_0x8ed8('0x4b')]=function(_0x153814,_0x3f8913){var _0x2b0fb7={'raw':![],'where':{'id':_0x153814[_0x8ed8('0x4c')]['id']}},_0x398790={};_0x398790[_0x8ed8('0x32')]=_[_0x8ed8('0x33')](db['Setting']['rawAttributes']);_0x398790['query']=_[_0x8ed8('0x33')](_0x153814[_0x8ed8('0x35')]);_0x398790[_0x8ed8('0x37')]=_['intersection'](_0x398790[_0x8ed8('0x32')],_0x398790['query']);_0x2b0fb7[_0x8ed8('0x38')]=_[_0x8ed8('0x39')](_0x398790['model'],qs[_0x8ed8('0x3a')](_0x153814[_0x8ed8('0x35')]['fields']));_0x2b0fb7[_0x8ed8('0x38')]=_0x2b0fb7[_0x8ed8('0x38')][_0x8ed8('0x3b')]?_0x2b0fb7[_0x8ed8('0x38')]:_0x398790['model'];if(_0x153814[_0x8ed8('0x35')][_0x8ed8('0x4d')]){_0x2b0fb7[_0x8ed8('0x48')]=[{'all':!![]}];}_0x2b0fb7=_[_0x8ed8('0x47')]({},_0x2b0fb7,_0x153814[_0x8ed8('0x4e')]);return db['Setting'][_0x8ed8('0x4f')](_0x2b0fb7)[_0x8ed8('0x14')](handleEntityNotFound(_0x3f8913,null))[_0x8ed8('0x14')](respondWithResult(_0x3f8913,null))['catch'](handleError(_0x3f8913,null));};exports[_0x8ed8('0x2c')]=function(_0x39566c,_0xbf8bdc,_0x5d1906){var _0x33c1db;return db[_0x8ed8('0x30')][_0x8ed8('0x4f')]({'where':{'id':_0x39566c[_0x8ed8('0x4c')]['id']}})['then'](handleEntityNotFound(_0xbf8bdc,null))['then'](saveUpdates(_0x39566c[_0x8ed8('0x50')],null))[_0x8ed8('0x14')](function(_0x262479){if(_0x262479){_0x33c1db=_0x262479['get']({'plain':!![]});var _0x252116=fs[_0x8ed8('0x51')](path[_0x8ed8('0x52')](config[_0x8ed8('0x53')],_0x8ed8('0x54')),_0x8ed8('0x55'));var _0x4ad962=ejs[_0x8ed8('0x56')](_0x252116,_0x33c1db);var _0x80a23f=fs['readFileSync'](path['join'](config[_0x8ed8('0x53')],_0x8ed8('0x57')),'utf8');var _0x168366=ejs[_0x8ed8('0x56')](_0x80a23f,_0x33c1db);fs[_0x8ed8('0x58')](_0x8ed8('0x59'),_0x4ad962);fs[_0x8ed8('0x58')](_0x8ed8('0x5a'),_0x168366);return respondWithRpcPromise(_0x8ed8('0x5b'),_0x8ed8('0x2c'),{'module':_0x8ed8('0x5c')});}})['then'](function(){return respondWithRpcPromise(_0x8ed8('0x5b'),_0x8ed8('0x2c'),{'module':_0x8ed8('0x5d')});})[_0x8ed8('0x14')](function(){return _0x33c1db||null;})[_0x8ed8('0x14')](respondWithResult(_0xbf8bdc,null))[_0x8ed8('0x1f')](handleError(_0xbf8bdc,null));};exports[_0x8ed8('0x5e')]=function(_0x5471f1,_0x167452,_0x4c2b02){if(_0x5471f1[_0x8ed8('0x5f')]&&_0x5471f1[_0x8ed8('0x5f')][_0x8ed8('0x60')]){_0x5471f1[_0x8ed8('0x50')]['logo']=_0x5471f1[_0x8ed8('0x5f')]['filename'];}return db[_0x8ed8('0x30')][_0x8ed8('0x4f')]({'where':{'id':_0x5471f1[_0x8ed8('0x4c')]['id']}})[_0x8ed8('0x14')](handleEntityNotFound(_0x167452,null))[_0x8ed8('0x14')](saveUpdates(_0x5471f1[_0x8ed8('0x50')],null))['then'](respondWithResult(_0x167452,null))['catch'](handleError(_0x167452,null));};exports[_0x8ed8('0x61')]=function(_0x5325a3,_0x9f7843,_0x4102ee){if(_0x5325a3['file']&&_0x5325a3[_0x8ed8('0x5f')][_0x8ed8('0x60')]){_0x5325a3[_0x8ed8('0x50')]['loginLogo']=_0x5325a3[_0x8ed8('0x5f')]['filename'];}return db[_0x8ed8('0x30')][_0x8ed8('0x4f')]({'where':{'id':_0x5325a3[_0x8ed8('0x4c')]['id']}})[_0x8ed8('0x14')](handleEntityNotFound(_0x9f7843,null))[_0x8ed8('0x14')](saveUpdates(_0x5325a3[_0x8ed8('0x50')],null))['then'](respondWithResult(_0x9f7843,null))[_0x8ed8('0x1f')](handleError(_0x9f7843,null));};var utilLicense=require(_0x8ed8('0x62'));exports[_0x8ed8('0x63')]=function(_0x71d850,_0x23db11,_0x1b892){var _0x336198='server/files/images/logos';var _0x369208={'custom':![]};return utilLicense[_0x8ed8('0x64')]()[_0x8ed8('0x14')](function(_0x21b3ff){if(_0x21b3ff){_0x369208=_0x21b3ff;}return db[_0x8ed8('0x30')][_0x8ed8('0x4f')]({'where':{'id':_0x71d850[_0x8ed8('0x4c')]['id']},'attributes':[_0x8ed8('0x65'),_0x8ed8('0x66'),'preferred',_0x8ed8('0x67'),'defaultLoginLogo','defaultPreferred'],'raw':!![]});})[_0x8ed8('0x14')](handleEntityNotFound(_0x23db11,null))['then'](function(_0x4a0d33){if(_0x4a0d33){var _0x592c5c=_0x4a0d33['logo']&&fs[_0x8ed8('0x68')](path[_0x8ed8('0x52')](config[_0x8ed8('0x53')],_0x336198,_[_0x8ed8('0x69')](_0x4a0d33['logo'])))?path[_0x8ed8('0x52')](config[_0x8ed8('0x53')],_0x336198,_['toLower'](_0x4a0d33['logo'])):path[_0x8ed8('0x52')](config[_0x8ed8('0x53')],_0x336198,_[_0x8ed8('0x69')](_0x8ed8('0x6a')));var _0x107689=_0x8ed8('0x6b')+_[_0x8ed8('0x6c')](_0x8ed8('0x65'));if(_0x4a0d33[_0x107689]||!_0x369208[_0x8ed8('0x6d')]){_0x592c5c=path[_0x8ed8('0x52')](config[_0x8ed8('0x53')],_0x336198,_[_0x8ed8('0x69')](_0x8ed8('0x6a')));}if(!fs[_0x8ed8('0x68')](_0x592c5c)){throw new db['Sequelize'][(_0x8ed8('0x6e'))](_0x8ed8('0x6f'));}return _0x23db11[_0x8ed8('0x70')](_0x592c5c);}})[_0x8ed8('0x1f')](handleError(_0x23db11,null));};var utilLicense=require('../../config/license/util');exports[_0x8ed8('0x71')]=function(_0x41b10f,_0x5b0f34,_0x31d42d){var _0x53bfc1=_0x8ed8('0x72');var _0xf11324={'custom':![]};return utilLicense['getLicense']()[_0x8ed8('0x14')](function(_0x53d9f1){if(_0x53d9f1){_0xf11324=_0x53d9f1;}return db[_0x8ed8('0x30')][_0x8ed8('0x4f')]({'where':{'id':_0x41b10f['params']['id']},'attributes':[_0x8ed8('0x65'),_0x8ed8('0x66'),_0x8ed8('0x73'),'defaultLogo','defaultLoginLogo',_0x8ed8('0x74')],'raw':!![]});})[_0x8ed8('0x14')](handleEntityNotFound(_0x5b0f34,null))['then'](function(_0xe0d275){if(_0xe0d275){var _0x10f1cf=_0xe0d275[_0x8ed8('0x66')]&&fs['existsSync'](path['join'](config[_0x8ed8('0x53')],_0x53bfc1,_['toLower'](_0xe0d275[_0x8ed8('0x66')])))?path[_0x8ed8('0x52')](config['root'],_0x53bfc1,_[_0x8ed8('0x69')](_0xe0d275[_0x8ed8('0x66')])):path[_0x8ed8('0x52')](config['root'],_0x53bfc1,_[_0x8ed8('0x69')](_0x8ed8('0x75')));var _0x4af737=_0x8ed8('0x6b')+_[_0x8ed8('0x6c')](_0x8ed8('0x66'));if(_0xe0d275[_0x4af737]||!_0xf11324[_0x8ed8('0x6d')]){_0x10f1cf=path['join'](config[_0x8ed8('0x53')],_0x53bfc1,_['toLower'](_0x8ed8('0x75')));}if(!fs[_0x8ed8('0x68')](_0x10f1cf)){throw new db[(_0x8ed8('0x76'))][(_0x8ed8('0x6e'))](_0x8ed8('0x6f'));}return _0x5b0f34[_0x8ed8('0x70')](_0x10f1cf);}})['catch'](handleError(_0x5b0f34,null));};exports[_0x8ed8('0x77')]=function(_0x17a8f9,_0x599e83){return db[_0x8ed8('0x30')][_0x8ed8('0x4f')]({'where':{'id':_0x17a8f9['params']['id']},'attributes':['securePassword']})[_0x8ed8('0x14')](respondWithResult(_0x599e83,null))[_0x8ed8('0x1f')](handleError(_0x599e83,null));};exports[_0x8ed8('0x78')]=function(_0x718063,_0xd614a7,_0x5f27f3){if(_0x718063[_0x8ed8('0x5f')]&&_0x718063[_0x8ed8('0x5f')][_0x8ed8('0x60')]){_0x718063[_0x8ed8('0x50')]['preferred']=_0x718063[_0x8ed8('0x5f')]['filename'];}return db[_0x8ed8('0x30')][_0x8ed8('0x4f')]({'where':{'id':_0x718063[_0x8ed8('0x4c')]['id']}})[_0x8ed8('0x14')](handleEntityNotFound(_0xd614a7,null))[_0x8ed8('0x14')](saveUpdates(_0x718063[_0x8ed8('0x50')],null))['then'](respondWithResult(_0xd614a7,null))[_0x8ed8('0x1f')](handleError(_0xd614a7,null));};var utilLicense=require(_0x8ed8('0x62'));exports[_0x8ed8('0x79')]=function(_0x3831a5,_0x160dfa,_0x3883c5){var _0xcd8790=_0x8ed8('0x72');var _0x31a7db={'custom':![]};return utilLicense[_0x8ed8('0x64')]()['then'](function(_0x1e3125){if(_0x1e3125){_0x31a7db=_0x1e3125;}return db[_0x8ed8('0x30')][_0x8ed8('0x4f')]({'where':{'id':_0x3831a5[_0x8ed8('0x4c')]['id']},'attributes':[_0x8ed8('0x65'),_0x8ed8('0x66'),_0x8ed8('0x73'),_0x8ed8('0x67'),_0x8ed8('0x7a'),_0x8ed8('0x74')],'raw':!![]});})[_0x8ed8('0x14')](handleEntityNotFound(_0x160dfa,null))[_0x8ed8('0x14')](function(_0x403b89){if(_0x403b89){var _0x5828eb=_0x403b89[_0x8ed8('0x73')]&&fs['existsSync'](path[_0x8ed8('0x52')](config[_0x8ed8('0x53')],_0xcd8790,_[_0x8ed8('0x69')](_0x403b89[_0x8ed8('0x73')])))?path[_0x8ed8('0x52')](config[_0x8ed8('0x53')],_0xcd8790,_[_0x8ed8('0x69')](_0x403b89[_0x8ed8('0x73')])):path[_0x8ed8('0x52')](config[_0x8ed8('0x53')],_0xcd8790,_[_0x8ed8('0x69')]('default_preferred.png'));var _0x30635d=_0x8ed8('0x6b')+_[_0x8ed8('0x6c')](_0x8ed8('0x73'));if(_0x403b89[_0x30635d]||!_0x31a7db['custom']||!_0x31a7db[_0x8ed8('0x73')]){_0x5828eb=path['join'](config[_0x8ed8('0x53')],_0xcd8790,_[_0x8ed8('0x69')](_0x8ed8('0x7b')));}if(!fs[_0x8ed8('0x68')](_0x5828eb)){throw new db[(_0x8ed8('0x76'))][(_0x8ed8('0x6e'))]('Logo\x20not\x20found');}return _0x160dfa[_0x8ed8('0x70')](_0x5828eb);}})[_0x8ed8('0x1f')](handleError(_0x160dfa,null));};
\ No newline at end of file
+var _0xa069=['addPreferred','default_preferred.png','html-pdf','eml-format','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','Setting,\x20%s,\x20%s','message','result','sendStatus','status','end','json','count','offset','set','Content-Range','apply','reject','save','update','destroy','stack','name','index','model','keys','query','dateEnd','dateStart','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','map','type','field','filter','Setting','includeAll','include','findAll','rows','catch','params','rawAttributes','find','body','get','readFileSync','join','root','server/files/templates/stun.ejs','utf8','render','server/files/templates/turn.ejs','writeFileSync','/etc/asterisk/turn_xcally.conf','Reload','res_stun_monitor.so','res_rtp_asterisk.so','addLogo','file','logo','filename','../../config/license/util','getLogo','getLicense','loginLogo','defaultLogo','defaultLoginLogo','defaultPreferred','existsSync','toLower','default_logo.png','default','upperFirst','custom','ValidationError','Logo\x20not\x20found','download','getLogoLogin','server/files/images/logos','preferred','default_loginLogo.png','Sequelize','securePassword'];(function(_0x12b002,_0x43b9a7){var _0x4acf7d=function(_0x39101b){while(--_0x39101b){_0x12b002['push'](_0x12b002['shift']());}};_0x4acf7d(++_0x43b9a7);}(_0xa069,0xf2));var _0x9a06=function(_0x534c17,_0x56bc04){_0x534c17=_0x534c17-0x0;var _0xa091e8=_0xa069[_0x534c17];return _0xa091e8;};'use strict';var pdf=require(_0x9a06('0x0'));var emlformat=require(_0x9a06('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x9a06('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9a06('0x3'));var moment=require('moment');var BPromise=require(_0x9a06('0x4'));var Mustache=require(_0x9a06('0x5'));var util=require(_0x9a06('0x6'));var path=require('path');var sox=require(_0x9a06('0x7'));var csv=require(_0x9a06('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x9a06('0x9'));var crypto=require('crypto');var jsforce=require(_0x9a06('0xa'));var deskjs=require(_0x9a06('0xb'));var toCsv=require(_0x9a06('0x8'));var querystring=require(_0x9a06('0xc'));var Papa=require('papaparse');var Redis=require(_0x9a06('0xd'));var qs=require(_0x9a06('0xe'));var logger=require(_0x9a06('0xf'))('api');var utils=require(_0x9a06('0x10'));var config=require('../../config/environment');var db=require(_0x9a06('0x11'))['db'];var jayson=require(_0x9a06('0x12'));var client=jayson[_0x9a06('0x13')][_0x9a06('0x14')]({'port':0x232a});function respondWithRpcPromise(_0xcff665,_0x4c9f71,_0x17f7e2,_0xc1f428){return new BPromise(function(_0x313034,_0x313b9c){var _0x1c201f=_0xc1f428||client;return _0x1c201f[_0x9a06('0x15')](_0xcff665,_0x17f7e2)[_0x9a06('0x16')](function(_0x6c106b){logger[_0x9a06('0x17')]('Setting,\x20%s,\x20%s',_0x4c9f71,_0x9a06('0x18'));logger[_0x9a06('0x19')](_0x9a06('0x1a'),_0x4c9f71,_0x9a06('0x18'),JSON['stringify'](_0x6c106b));if(_0x6c106b['error']){if(_0x6c106b['error']['code']===0x1f4){logger[_0x9a06('0x1b')](_0x9a06('0x1c'),_0x4c9f71,_0x6c106b['error']['message']);return _0x313b9c(_0x6c106b[_0x9a06('0x1b')]['message']);}logger[_0x9a06('0x1b')](_0x9a06('0x1c'),_0x4c9f71,_0x6c106b[_0x9a06('0x1b')][_0x9a06('0x1d')]);return _0x313034(_0x6c106b[_0x9a06('0x1b')]['message']);}else{logger[_0x9a06('0x17')](_0x9a06('0x1c'),_0x4c9f71,_0x9a06('0x18'));_0x313034(_0x6c106b[_0x9a06('0x1e')][_0x9a06('0x1d')]);}})['catch'](function(_0x5b2d01){logger['error'](_0x9a06('0x1c'),_0x4c9f71,_0x5b2d01);_0x313b9c(_0x5b2d01);});});}function respondWithStatusCode(_0x37e2ee,_0x2a242c){_0x2a242c=_0x2a242c||0xcc;return function(_0x85f43a){if(_0x85f43a){return _0x37e2ee[_0x9a06('0x1f')](_0x2a242c);}return _0x37e2ee[_0x9a06('0x20')](_0x2a242c)[_0x9a06('0x21')]();};}function respondWithResult(_0x3b3172,_0x1b123e){_0x1b123e=_0x1b123e||0xc8;return function(_0x48f6d4){if(_0x48f6d4){return _0x3b3172[_0x9a06('0x20')](_0x1b123e)[_0x9a06('0x22')](_0x48f6d4);}};}function respondWithFilteredResult(_0x1d4fa5,_0x3654a2){return function(_0x5349d3){if(_0x5349d3){var _0x1d90d0=_0x5349d3[_0x9a06('0x23')],_0x3404df=_0x3654a2['offset'],_0x13da52=_0x3654a2[_0x9a06('0x24')]+_0x3654a2['limit'],_0x3fd1bb;if(_0x13da52>=_0x1d90d0){_0x13da52=_0x1d90d0;_0x3fd1bb=0xc8;}else{_0x3fd1bb=0xce;}_0x1d4fa5[_0x9a06('0x20')](_0x3fd1bb);return _0x1d4fa5[_0x9a06('0x25')](_0x9a06('0x26'),_0x3404df+'-'+_0x13da52+'/'+_0x1d90d0)[_0x9a06('0x22')](_0x5349d3);}return null;};}function patchUpdates(_0x5dc6b5){return function(_0x418ebd){try{jsonpatch[_0x9a06('0x27')](_0x418ebd,_0x5dc6b5,!![]);}catch(_0x20eec0){return BPromise[_0x9a06('0x28')](_0x20eec0);}return _0x418ebd[_0x9a06('0x29')]();};}function saveUpdates(_0x1c4a37,_0xd42f83){return function(_0x300b03){if(_0x300b03){return _0x300b03[_0x9a06('0x2a')](_0x1c4a37)['then'](function(_0x215f45){return _0x215f45;});}return null;};}function removeEntity(_0x1f3502,_0x558eeb){return function(_0x1e4df1){if(_0x1e4df1){return _0x1e4df1[_0x9a06('0x2b')]()['then'](function(){_0x1f3502[_0x9a06('0x20')](0xcc)[_0x9a06('0x21')]();});}};}function handleEntityNotFound(_0x13cb68,_0x56e239){return function(_0x54a339){if(!_0x54a339){_0x13cb68[_0x9a06('0x1f')](0x194);}return _0x54a339;};}function handleError(_0x574999,_0x5150ae){_0x5150ae=_0x5150ae||0x1f4;return function(_0x56804a){logger[_0x9a06('0x1b')](_0x56804a[_0x9a06('0x2c')]);if(_0x56804a['name']){delete _0x56804a[_0x9a06('0x2d')];}_0x574999[_0x9a06('0x20')](_0x5150ae)['send'](_0x56804a);};}exports[_0x9a06('0x2e')]=function(_0xd25025,_0x2133c0){var _0x4b60fd={},_0x135266={},_0x4d9ea9={'count':0x0,'rows':[]};var _0x3312e3=db['Setting']['rawAttributes'];_0x135266[_0x9a06('0x2f')]=_[_0x9a06('0x30')](_0x3312e3);var _0x3a7781={'dateStart':_0xd25025[_0x9a06('0x31')]['dateStart'],'dateEnd':_0xd25025[_0x9a06('0x31')][_0x9a06('0x32')]};delete _0xd25025[_0x9a06('0x31')][_0x9a06('0x33')];delete _0xd25025[_0x9a06('0x31')][_0x9a06('0x32')];_0x135266[_0x9a06('0x31')]=_[_0x9a06('0x30')](_0xd25025['query']);_0x135266[_0x9a06('0x34')]=_['intersection'](_0x135266[_0x9a06('0x2f')],_0x135266[_0x9a06('0x31')]);_0x4b60fd[_0x9a06('0x35')]=_[_0x9a06('0x36')](_0x135266[_0x9a06('0x2f')],qs[_0x9a06('0x37')](_0xd25025[_0x9a06('0x31')]['fields']));_0x4b60fd[_0x9a06('0x35')]=_0x4b60fd[_0x9a06('0x35')][_0x9a06('0x38')]?_0x4b60fd['attributes']:_0x135266[_0x9a06('0x2f')];if(!_0xd25025[_0x9a06('0x31')][_0x9a06('0x39')](_0x9a06('0x3a'))){_0x4b60fd[_0x9a06('0x3b')]=qs[_0x9a06('0x3b')](_0xd25025[_0x9a06('0x31')][_0x9a06('0x3b')]);_0x4b60fd['offset']=qs['offset'](_0xd25025[_0x9a06('0x31')][_0x9a06('0x24')]);}_0x4b60fd[_0x9a06('0x3c')]=qs[_0x9a06('0x3d')](_0xd25025[_0x9a06('0x31')][_0x9a06('0x3d')]);_0x4b60fd[_0x9a06('0x3e')]=qs[_0x9a06('0x34')](_[_0x9a06('0x3f')](_0xd25025[_0x9a06('0x31')],_0x135266[_0x9a06('0x34')]));if(_0x3a7781[_0x9a06('0x33')]){if(_0x3a7781['dateEnd']){_0x3a7781[_0x9a06('0x32')]=moment(_0x3a7781[_0x9a06('0x32')])['add'](0x1,'day');}else{_0x3a7781['dateEnd']=moment(_0x3a7781[_0x9a06('0x33')])['add'](0x1,'day');}_['merge'](_0x4b60fd[_0x9a06('0x3e')],{'createdAt':{'$gte':_0x3a7781['dateStart'],'$lte':_0x3a7781['dateEnd']}});}if(_0xd25025[_0x9a06('0x31')]['filter']){_0x4b60fd['where']=_[_0x9a06('0x40')](_0x4b60fd[_0x9a06('0x3e')],{'$or':_[_0x9a06('0x41')](_0x3312e3,function(_0x22047c){if(_0x22047c[_0x9a06('0x42')]['key']!=='VIRTUAL'){var _0x307395={};_0x307395[_0x22047c[_0x9a06('0x43')]]={'$like':'%'+_0xd25025['query'][_0x9a06('0x44')]+'%'};return _0x307395;}})});}_0x4b60fd=_['merge']({},_0x4b60fd,_0xd25025['options']);var _0x11b58b={'where':_0x4b60fd[_0x9a06('0x3e')]};return db[_0x9a06('0x45')][_0x9a06('0x23')](_0x11b58b)[_0x9a06('0x16')](function(_0x4d5109){_0x4d9ea9[_0x9a06('0x23')]=_0x4d5109;if(_0xd25025[_0x9a06('0x31')][_0x9a06('0x46')]){_0x4b60fd[_0x9a06('0x47')]=[{'all':!![]}];}return db[_0x9a06('0x45')][_0x9a06('0x48')](_0x4b60fd);})[_0x9a06('0x16')](function(_0xe84578){_0x4d9ea9[_0x9a06('0x49')]=_0xe84578;return _0x4d9ea9;})[_0x9a06('0x16')](respondWithFilteredResult(_0x2133c0,_0x4b60fd))[_0x9a06('0x4a')](handleError(_0x2133c0,null));};exports['show']=function(_0x588341,_0x3f6deb){var _0x36e283={'raw':![],'where':{'id':_0x588341[_0x9a06('0x4b')]['id']}},_0x189aae={};_0x189aae['model']=_[_0x9a06('0x30')](db[_0x9a06('0x45')][_0x9a06('0x4c')]);_0x189aae[_0x9a06('0x31')]=_[_0x9a06('0x30')](_0x588341[_0x9a06('0x31')]);_0x189aae[_0x9a06('0x34')]=_[_0x9a06('0x36')](_0x189aae[_0x9a06('0x2f')],_0x189aae['query']);_0x36e283[_0x9a06('0x35')]=_['intersection'](_0x189aae[_0x9a06('0x2f')],qs[_0x9a06('0x37')](_0x588341['query']['fields']));_0x36e283[_0x9a06('0x35')]=_0x36e283['attributes'][_0x9a06('0x38')]?_0x36e283[_0x9a06('0x35')]:_0x189aae[_0x9a06('0x2f')];if(_0x588341[_0x9a06('0x31')][_0x9a06('0x46')]){_0x36e283['include']=[{'all':!![]}];}_0x36e283=_['merge']({},_0x36e283,_0x588341['options']);return db[_0x9a06('0x45')][_0x9a06('0x4d')](_0x36e283)[_0x9a06('0x16')](handleEntityNotFound(_0x3f6deb,null))[_0x9a06('0x16')](respondWithResult(_0x3f6deb,null))[_0x9a06('0x4a')](handleError(_0x3f6deb,null));};exports[_0x9a06('0x2a')]=function(_0x3eeb6d,_0x542b1f,_0x339730){var _0x385229;return db[_0x9a06('0x45')]['find']({'where':{'id':_0x3eeb6d['params']['id']}})[_0x9a06('0x16')](handleEntityNotFound(_0x542b1f,null))['then'](saveUpdates(_0x3eeb6d[_0x9a06('0x4e')],null))[_0x9a06('0x16')](function(_0x51424e){if(_0x51424e){_0x385229=_0x51424e[_0x9a06('0x4f')]({'plain':!![]});var _0x1f1b5b=fs[_0x9a06('0x50')](path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x9a06('0x53')),_0x9a06('0x54'));var _0x96ee96=ejs[_0x9a06('0x55')](_0x1f1b5b,_0x385229);var _0x14fb9b=fs['readFileSync'](path[_0x9a06('0x51')](config['root'],_0x9a06('0x56')),'utf8');var _0x35dd3d=ejs[_0x9a06('0x55')](_0x14fb9b,_0x385229);fs[_0x9a06('0x57')]('/etc/asterisk/stun_xcally.conf',_0x96ee96);fs[_0x9a06('0x57')](_0x9a06('0x58'),_0x35dd3d);return respondWithRpcPromise(_0x9a06('0x59'),_0x9a06('0x2a'),{'module':_0x9a06('0x5a')});}})['then'](function(){return respondWithRpcPromise('Reload',_0x9a06('0x2a'),{'module':_0x9a06('0x5b')});})['then'](function(){return _0x385229||null;})[_0x9a06('0x16')](respondWithResult(_0x542b1f,null))[_0x9a06('0x4a')](handleError(_0x542b1f,null));};exports[_0x9a06('0x5c')]=function(_0x5b85ce,_0xd489d9,_0x5a132e){if(_0x5b85ce['file']&&_0x5b85ce[_0x9a06('0x5d')]['filename']){_0x5b85ce[_0x9a06('0x4e')][_0x9a06('0x5e')]=_0x5b85ce[_0x9a06('0x5d')][_0x9a06('0x5f')];}return db[_0x9a06('0x45')][_0x9a06('0x4d')]({'where':{'id':_0x5b85ce['params']['id']}})[_0x9a06('0x16')](handleEntityNotFound(_0xd489d9,null))['then'](saveUpdates(_0x5b85ce[_0x9a06('0x4e')],null))[_0x9a06('0x16')](respondWithResult(_0xd489d9,null))[_0x9a06('0x4a')](handleError(_0xd489d9,null));};exports['addLogoLogin']=function(_0x4edde4,_0x577227,_0x27f48d){if(_0x4edde4['file']&&_0x4edde4[_0x9a06('0x5d')][_0x9a06('0x5f')]){_0x4edde4['body']['loginLogo']=_0x4edde4[_0x9a06('0x5d')][_0x9a06('0x5f')];}return db[_0x9a06('0x45')][_0x9a06('0x4d')]({'where':{'id':_0x4edde4['params']['id']}})[_0x9a06('0x16')](handleEntityNotFound(_0x577227,null))['then'](saveUpdates(_0x4edde4[_0x9a06('0x4e')],null))[_0x9a06('0x16')](respondWithResult(_0x577227,null))[_0x9a06('0x4a')](handleError(_0x577227,null));};var utilLicense=require(_0x9a06('0x60'));exports[_0x9a06('0x61')]=function(_0x4c2f10,_0x5927f2,_0x1515f9){var _0x238b0d='server/files/images/logos';var _0x5b06e1={'custom':![]};return utilLicense[_0x9a06('0x62')]()[_0x9a06('0x16')](function(_0x3d6571){if(_0x3d6571){_0x5b06e1=_0x3d6571;}return db[_0x9a06('0x45')][_0x9a06('0x4d')]({'where':{'id':_0x4c2f10[_0x9a06('0x4b')]['id']},'attributes':['logo',_0x9a06('0x63'),'preferred',_0x9a06('0x64'),_0x9a06('0x65'),_0x9a06('0x66')],'raw':!![]});})[_0x9a06('0x16')](handleEntityNotFound(_0x5927f2,null))['then'](function(_0x472f79){if(_0x472f79){var _0x15b344=_0x472f79['logo']&&fs[_0x9a06('0x67')](path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x238b0d,_[_0x9a06('0x68')](_0x472f79[_0x9a06('0x5e')])))?path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x238b0d,_[_0x9a06('0x68')](_0x472f79[_0x9a06('0x5e')])):path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x238b0d,_[_0x9a06('0x68')](_0x9a06('0x69')));var _0x313f84=_0x9a06('0x6a')+_[_0x9a06('0x6b')](_0x9a06('0x5e'));if(_0x472f79[_0x313f84]||!_0x5b06e1[_0x9a06('0x6c')]){_0x15b344=path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x238b0d,_['toLower'](_0x9a06('0x69')));}if(!fs['existsSync'](_0x15b344)){throw new db['Sequelize'][(_0x9a06('0x6d'))](_0x9a06('0x6e'));}return _0x5927f2[_0x9a06('0x6f')](_0x15b344);}})['catch'](handleError(_0x5927f2,null));};var utilLicense=require(_0x9a06('0x60'));exports[_0x9a06('0x70')]=function(_0x281ee2,_0xf4cafd,_0x2451a0){var _0x356d1a=_0x9a06('0x71');var _0x26675d={'custom':![]};return utilLicense['getLicense']()[_0x9a06('0x16')](function(_0x36b4de){if(_0x36b4de){_0x26675d=_0x36b4de;}return db['Setting'][_0x9a06('0x4d')]({'where':{'id':_0x281ee2[_0x9a06('0x4b')]['id']},'attributes':[_0x9a06('0x5e'),_0x9a06('0x63'),_0x9a06('0x72'),_0x9a06('0x64'),_0x9a06('0x65'),_0x9a06('0x66')],'raw':!![]});})[_0x9a06('0x16')](handleEntityNotFound(_0xf4cafd,null))['then'](function(_0x3697c0){if(_0x3697c0){var _0xcc91d1=_0x3697c0['loginLogo']&&fs[_0x9a06('0x67')](path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x356d1a,_['toLower'](_0x3697c0[_0x9a06('0x63')])))?path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x356d1a,_['toLower'](_0x3697c0[_0x9a06('0x63')])):path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x356d1a,_[_0x9a06('0x68')]('default_loginLogo.png'));var _0x24d65b=_0x9a06('0x6a')+_['upperFirst'](_0x9a06('0x63'));if(_0x3697c0[_0x24d65b]||!_0x26675d['custom']){_0xcc91d1=path[_0x9a06('0x51')](config['root'],_0x356d1a,_[_0x9a06('0x68')](_0x9a06('0x73')));}if(!fs[_0x9a06('0x67')](_0xcc91d1)){throw new db[(_0x9a06('0x74'))][(_0x9a06('0x6d'))](_0x9a06('0x6e'));}return _0xf4cafd[_0x9a06('0x6f')](_0xcc91d1);}})[_0x9a06('0x4a')](handleError(_0xf4cafd,null));};exports['gdpr']=function(_0x1fb3ee,_0x502c6e){return db[_0x9a06('0x45')]['find']({'where':{'id':_0x1fb3ee['params']['id']},'attributes':[_0x9a06('0x75')]})[_0x9a06('0x16')](respondWithResult(_0x502c6e,null))['catch'](handleError(_0x502c6e,null));};exports[_0x9a06('0x76')]=function(_0x292fe6,_0x1f4197,_0x4052d8){if(_0x292fe6[_0x9a06('0x5d')]&&_0x292fe6[_0x9a06('0x5d')][_0x9a06('0x5f')]){_0x292fe6[_0x9a06('0x4e')][_0x9a06('0x72')]=_0x292fe6['file'][_0x9a06('0x5f')];}return db['Setting']['find']({'where':{'id':_0x292fe6[_0x9a06('0x4b')]['id']}})[_0x9a06('0x16')](handleEntityNotFound(_0x1f4197,null))['then'](saveUpdates(_0x292fe6[_0x9a06('0x4e')],null))['then'](respondWithResult(_0x1f4197,null))['catch'](handleError(_0x1f4197,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x288a34,_0x121d9d,_0x4b29f2){var _0x308cec=_0x9a06('0x71');var _0x4f4a81={'custom':![]};return utilLicense[_0x9a06('0x62')]()['then'](function(_0x3ccb36){if(_0x3ccb36){_0x4f4a81=_0x3ccb36;}return db['Setting'][_0x9a06('0x4d')]({'where':{'id':_0x288a34[_0x9a06('0x4b')]['id']},'attributes':[_0x9a06('0x5e'),'loginLogo',_0x9a06('0x72'),_0x9a06('0x64'),'defaultLoginLogo','defaultPreferred'],'raw':!![]});})[_0x9a06('0x16')](handleEntityNotFound(_0x121d9d,null))[_0x9a06('0x16')](function(_0xf8665d){if(_0xf8665d){var _0x162389=_0xf8665d['preferred']&&fs[_0x9a06('0x67')](path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x308cec,_['toLower'](_0xf8665d['preferred'])))?path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x308cec,_[_0x9a06('0x68')](_0xf8665d[_0x9a06('0x72')])):path[_0x9a06('0x51')](config[_0x9a06('0x52')],_0x308cec,_[_0x9a06('0x68')](_0x9a06('0x77')));var _0x578852=_0x9a06('0x6a')+_[_0x9a06('0x6b')]('preferred');if(_0xf8665d[_0x578852]||!_0x4f4a81[_0x9a06('0x6c')]||!_0x4f4a81[_0x9a06('0x72')]){_0x162389=path[_0x9a06('0x51')](config['root'],_0x308cec,_[_0x9a06('0x68')]('default_preferred.png'));}if(!fs['existsSync'](_0x162389)){throw new db[(_0x9a06('0x74'))][(_0x9a06('0x6d'))]('Logo\x20not\x20found');}return _0x121d9d[_0x9a06('0x6f')](_0x162389);}})[_0x9a06('0x4a')](handleError(_0x121d9d,null));};
\ No newline at end of file
index 40766d1..5b61bb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe07b=['./setting.attributes','exports','Setting','util','../../config/logger','moment','bluebird'];(function(_0x16b223,_0x24e4bc){var _0x220e29=function(_0x10608f){while(--_0x10608f){_0x16b223['push'](_0x16b223['shift']());}};_0x220e29(++_0x24e4bc);}(_0xe07b,0x13e));var _0xbe07=function(_0x395c24,_0x13f171){_0x395c24=_0x395c24-0x0;var _0x499f22=_0xe07b[_0x395c24];return _0x499f22;};'use strict';var _=require('lodash');var util=require(_0xbe07('0x0'));var logger=require(_0xbe07('0x1'))('api');var moment=require(_0xbe07('0x2'));var BPromise=require(_0xbe07('0x3'));var rp=require('request-promise');var attributes=require(_0xbe07('0x4'));module[_0xbe07('0x5')]=function(_0xdfceae,_0x3e6e0e){return _0xdfceae['define'](_0xbe07('0x6'),attributes,{'tableName':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4caf=['util','api','request-promise','./setting.attributes','exports','define','Setting','settings'];(function(_0x3d1ce2,_0x2a9d26){var _0x43c682=function(_0x1d3031){while(--_0x1d3031){_0x3d1ce2['push'](_0x3d1ce2['shift']());}};_0x43c682(++_0x2a9d26);}(_0x4caf,0xf0));var _0xf4ca=function(_0x4bbf07,_0x5be510){_0x4bbf07=_0x4bbf07-0x0;var _0x5b2e97=_0x4caf[_0x4bbf07];return _0x5b2e97;};'use strict';var _=require('lodash');var util=require(_0xf4ca('0x0'));var logger=require('../../config/logger')(_0xf4ca('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf4ca('0x2'));var attributes=require(_0xf4ca('0x3'));module[_0xf4ca('0x4')]=function(_0x1c0752,_0x1d7048){return _0x1c0752[_0xf4ca('0x5')](_0xf4ca('0x6'),attributes,{'tableName':_0xf4ca('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb8a547..c8268db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95d0=['message','request\x20sent','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','Setting,\x20%s,\x20%s','Setting,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x95d0,0x1d1));var _0x095d=function(_0x1a78e8,_0x43a1bf){_0x1a78e8=_0x1a78e8-0x0;var _0x4f00c6=_0x95d0[_0x1a78e8];return _0x4f00c6;};'use strict';var _=require(_0x095d('0x0'));var util=require(_0x095d('0x1'));var moment=require('moment');var BPromise=require(_0x095d('0x2'));var rs=require(_0x095d('0x3'));var fs=require('fs');var Redis=require(_0x095d('0x4'));var db=require(_0x095d('0x5'))['db'];var utils=require(_0x095d('0x6'));var logger=require('../../config/logger')(_0x095d('0x7'));var config=require(_0x095d('0x8'));var jayson=require(_0x095d('0x9'));var client=jayson[_0x095d('0xa')][_0x095d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x348f3b,_0xfe73cd,_0xab1d32){return new BPromise(function(_0x53b86f,_0x53937b){return client['request'](_0x348f3b,_0xab1d32)[_0x095d('0xc')](function(_0x5760fc){logger[_0x095d('0xd')](_0x095d('0xe'),_0xfe73cd,'request\x20sent');logger['debug'](_0x095d('0xf'),_0xfe73cd,'request\x20sent',JSON['stringify'](_0x5760fc));if(_0x5760fc[_0x095d('0x10')]){if(_0x5760fc[_0x095d('0x10')][_0x095d('0x11')]===0x1f4){logger[_0x095d('0x10')]('Setting,\x20%s,\x20%s',_0xfe73cd,_0x5760fc[_0x095d('0x10')][_0x095d('0x12')]);return _0x53937b(_0x5760fc['error'][_0x095d('0x12')]);}logger[_0x095d('0x10')](_0x095d('0xe'),_0xfe73cd,_0x5760fc[_0x095d('0x10')][_0x095d('0x12')]);return _0x53b86f(_0x5760fc[_0x095d('0x10')][_0x095d('0x12')]);}else{logger[_0x095d('0xd')]('Setting,\x20%s,\x20%s',_0xfe73cd,_0x095d('0x13'));_0x53b86f(_0x5760fc['result'][_0x095d('0x12')]);}})[_0x095d('0x14')](function(_0x5b1f21){logger[_0x095d('0x10')](_0x095d('0xe'),_0xfe73cd,_0x5b1f21);_0x53937b(_0x5b1f21);});});}
\ No newline at end of file
+var _0xa52d=['then','info','Setting,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','request'];(function(_0x3c3d2d,_0x3725a6){var _0x354bc2=function(_0x3b1207){while(--_0x3b1207){_0x3c3d2d['push'](_0x3c3d2d['shift']());}};_0x354bc2(++_0x3725a6);}(_0xa52d,0x97));var _0xda52=function(_0xaaf2e2,_0x19d28a){_0xaaf2e2=_0xaaf2e2-0x0;var _0x28bc36=_0xa52d[_0xaaf2e2];return _0x28bc36;};'use strict';var _=require('lodash');var util=require(_0xda52('0x0'));var moment=require(_0xda52('0x1'));var BPromise=require(_0xda52('0x2'));var rs=require(_0xda52('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xda52('0x4'))['db'];var utils=require(_0xda52('0x5'));var logger=require(_0xda52('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xda52('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1e7a78,_0x2880e4,_0x5ae34c){return new BPromise(function(_0x6a0b1f,_0x47e563){return client[_0xda52('0x8')](_0x1e7a78,_0x5ae34c)[_0xda52('0x9')](function(_0x322cb4){logger[_0xda52('0xa')](_0xda52('0xb'),_0x2880e4,'request\x20sent');logger[_0xda52('0xc')]('Setting,\x20%s,\x20%s,\x20%s',_0x2880e4,_0xda52('0xd'),JSON[_0xda52('0xe')](_0x322cb4));if(_0x322cb4[_0xda52('0xf')]){if(_0x322cb4[_0xda52('0xf')][_0xda52('0x10')]===0x1f4){logger[_0xda52('0xf')](_0xda52('0xb'),_0x2880e4,_0x322cb4[_0xda52('0xf')][_0xda52('0x11')]);return _0x47e563(_0x322cb4[_0xda52('0xf')][_0xda52('0x11')]);}logger['error'](_0xda52('0xb'),_0x2880e4,_0x322cb4['error'][_0xda52('0x11')]);return _0x6a0b1f(_0x322cb4['error'][_0xda52('0x11')]);}else{logger['info'](_0xda52('0xb'),_0x2880e4,'request\x20sent');_0x6a0b1f(_0x322cb4[_0xda52('0x12')][_0xda52('0x11')]);}})[_0xda52('0x13')](function(_0x45c5d7){logger[_0xda52('0xf')]('Setting,\x20%s,\x20%s',_0x2880e4,_0x45c5d7);_0x47e563(_0x45c5d7);});});}
\ No newline at end of file
index 13b74c8..dd1a966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f48=['Router','../../config/environment','./smsAccount.controller','/describe','isAuthenticated','get','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','/:id/send','send','/:id/status','status','addAgents','put','update','delete','removeDispositions','removeAnswers','/:id/users','removeAgents','exports','multer','util','path','connect-timeout','express'];(function(_0x1cb18a,_0x33167a){var _0x22442e=function(_0x46c611){while(--_0x46c611){_0x1cb18a['push'](_0x1cb18a['shift']());}};_0x22442e(++_0x33167a);}(_0x4f48,0xf1));var _0x84f4=function(_0xadadfd,_0x442e10){_0xadadfd=_0xadadfd-0x0;var _0x2d6d3b=_0x4f48[_0xadadfd];return _0x2d6d3b;};'use strict';var multer=require(_0x84f4('0x0'));var util=require(_0x84f4('0x1'));var path=require(_0x84f4('0x2'));var timeout=require(_0x84f4('0x3'));var express=require(_0x84f4('0x4'));var router=express[_0x84f4('0x5')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x84f4('0x6'));var controller=require(_0x84f4('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x84f4('0x8'),auth[_0x84f4('0x9')](),controller['describe']);router[_0x84f4('0xa')](_0x84f4('0xb'),auth[_0x84f4('0x9')](),controller['show']);router[_0x84f4('0xa')](_0x84f4('0xc'),auth[_0x84f4('0x9')](),controller[_0x84f4('0xd')]);router[_0x84f4('0xa')](_0x84f4('0xe'),auth['isAuthenticated'](),controller[_0x84f4('0xf')]);router['get'](_0x84f4('0x10'),auth[_0x84f4('0x9')](),controller[_0x84f4('0x11')]);router[_0x84f4('0xa')](_0x84f4('0x12'),auth[_0x84f4('0x9')](),controller[_0x84f4('0x13')]);router[_0x84f4('0xa')]('/:id/status',controller['statusGet']);router[_0x84f4('0xa')]('/:id/users',auth[_0x84f4('0x9')](),controller[_0x84f4('0x14')]);router[_0x84f4('0x15')]('/',auth['isAuthenticated'](),controller[_0x84f4('0x16')]);router[_0x84f4('0x15')](_0x84f4('0xc'),auth[_0x84f4('0x9')](),controller[_0x84f4('0x17')]);router[_0x84f4('0x15')](_0x84f4('0xe'),auth[_0x84f4('0x9')](),controller[_0x84f4('0x18')]);router['post'](_0x84f4('0x19'),controller[_0x84f4('0x1a')]);router['post'](_0x84f4('0x10'),auth[_0x84f4('0x9')](),controller[_0x84f4('0x1b')]);router['post'](_0x84f4('0x1c'),auth[_0x84f4('0x9')](),controller[_0x84f4('0x1d')]);router[_0x84f4('0x15')](_0x84f4('0x1e'),controller[_0x84f4('0x1f')]);router[_0x84f4('0x15')]('/:id/users',auth[_0x84f4('0x9')](),controller[_0x84f4('0x20')]);router[_0x84f4('0x21')]('/:id',auth[_0x84f4('0x9')](),controller[_0x84f4('0x22')]);router[_0x84f4('0x23')]('/:id',auth[_0x84f4('0x9')](),controller['destroy']);router['delete']('/:id/dispositions',auth[_0x84f4('0x9')](),controller[_0x84f4('0x24')]);router[_0x84f4('0x23')](_0x84f4('0xe'),auth[_0x84f4('0x9')](),controller[_0x84f4('0x25')]);router[_0x84f4('0x23')](_0x84f4('0x26'),auth[_0x84f4('0x9')](),controller[_0x84f4('0x27')]);module[_0x84f4('0x28')]=router;
\ No newline at end of file
+var _0x9546=['removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','/describe','isAuthenticated','describe','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','/:id/applications','addApplications','/:id/send','send','put','update','delete','destroy','removeDispositions','removeAnswers','/:id/users'];(function(_0x314f65,_0x304354){var _0x5fd673=function(_0x4195fe){while(--_0x4195fe){_0x314f65['push'](_0x314f65['shift']());}};_0x5fd673(++_0x304354);}(_0x9546,0x1c4));var _0x6954=function(_0x5c31f4,_0x446a83){_0x5c31f4=_0x5c31f4-0x0;var _0x2583bf=_0x9546[_0x5c31f4];return _0x2583bf;};'use strict';var multer=require(_0x6954('0x0'));var util=require(_0x6954('0x1'));var path=require(_0x6954('0x2'));var timeout=require(_0x6954('0x3'));var express=require(_0x6954('0x4'));var router=express[_0x6954('0x5')]();var auth=require(_0x6954('0x6'));var interaction=require(_0x6954('0x7'));var config=require(_0x6954('0x8'));var controller=require(_0x6954('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x6954('0xa'),auth[_0x6954('0xb')](),controller[_0x6954('0xc')]);router[_0x6954('0xd')](_0x6954('0xe'),auth['isAuthenticated'](),controller[_0x6954('0xf')]);router[_0x6954('0xd')](_0x6954('0x10'),auth[_0x6954('0xb')](),controller[_0x6954('0x11')]);router[_0x6954('0xd')](_0x6954('0x12'),auth[_0x6954('0xb')](),controller[_0x6954('0x13')]);router[_0x6954('0xd')]('/:id/applications',auth['isAuthenticated'](),controller[_0x6954('0x14')]);router['get'](_0x6954('0x15'),auth[_0x6954('0xb')](),controller[_0x6954('0x16')]);router[_0x6954('0xd')](_0x6954('0x17'),controller[_0x6954('0x18')]);router['get']('/:id/users',auth[_0x6954('0xb')](),controller[_0x6954('0x19')]);router[_0x6954('0x1a')]('/',auth['isAuthenticated'](),controller[_0x6954('0x1b')]);router['post'](_0x6954('0x10'),auth[_0x6954('0xb')](),controller[_0x6954('0x1c')]);router[_0x6954('0x1a')](_0x6954('0x12'),auth['isAuthenticated'](),controller[_0x6954('0x1d')]);router[_0x6954('0x1a')](_0x6954('0x1e'),controller[_0x6954('0x1f')]);router[_0x6954('0x1a')](_0x6954('0x20'),auth[_0x6954('0xb')](),controller[_0x6954('0x21')]);router['post'](_0x6954('0x22'),auth[_0x6954('0xb')](),controller[_0x6954('0x23')]);router[_0x6954('0x1a')](_0x6954('0x17'),controller['status']);router['post']('/:id/users',auth[_0x6954('0xb')](),controller['addAgents']);router[_0x6954('0x24')](_0x6954('0xe'),auth['isAuthenticated'](),controller[_0x6954('0x25')]);router[_0x6954('0x26')](_0x6954('0xe'),auth['isAuthenticated'](),controller[_0x6954('0x27')]);router['delete'](_0x6954('0x10'),auth[_0x6954('0xb')](),controller[_0x6954('0x28')]);router['delete'](_0x6954('0x12'),auth['isAuthenticated'](),controller[_0x6954('0x29')]);router[_0x6954('0x26')](_0x6954('0x2a'),auth[_0x6954('0xb')](),controller[_0x6954('0x2b')]);module[_0x6954('0x2c')]=router;
\ No newline at end of file
index 49d3419..48e182d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0946=['sequelize','randomstring','exports','STRING','name','generate','ENUM','twilio','skebby','connectel','clicksend','plivo','clickatell','csc','intelepeer','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER'];(function(_0x41834c,_0x16c3b4){var _0x3edd57=function(_0x41dd5f){while(--_0x41dd5f){_0x41834c['push'](_0x41834c['shift']());}};_0x3edd57(++_0x16c3b4);}(_0x0946,0x130));var _0x6094=function(_0x3b7a0c,_0xf1a4c2){_0x3b7a0c=_0x3b7a0c-0x0;var _0x3bb70f=_0x0946[_0x3b7a0c];return _0x3bb70f;};'use strict';var Sequelize=require(_0x6094('0x0'));var rs=require(_0x6094('0x1'));module[_0x6094('0x2')]={'name':{'type':Sequelize[_0x6094('0x3')],'unique':_0x6094('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x6094('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x6094('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x6094('0x3')],'defaultValue':function(){return rs[_0x6094('0x5')]();}},'phone':{'type':Sequelize[_0x6094('0x3')]},'type':{'type':Sequelize[_0x6094('0x6')](_0x6094('0x7'),_0x6094('0x8'),_0x6094('0x9'),_0x6094('0xa'),_0x6094('0xb'),_0x6094('0xc'),_0x6094('0xd'),'infobip',_0x6094('0xe'))},'accountSid':{'type':Sequelize[_0x6094('0x3')]},'authId':{'type':Sequelize[_0x6094('0x3')]},'authToken':{'type':Sequelize[_0x6094('0x3')]},'smsMethod':{'type':Sequelize[_0x6094('0x6')]('SI','TI','GP')},'username':{'type':Sequelize[_0x6094('0x3')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x6094('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x6094('0xf')],'defaultValue':![]},'description':{'type':Sequelize[_0x6094('0x3')]},'notificationTemplate':{'type':Sequelize[_0x6094('0x10')],'defaultValue':function(){return _0x6094('0x11');}},'notificationSound':{'type':Sequelize[_0x6094('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6094('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6094('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x6094('0x3')]}};
\ No newline at end of file
+var _0x3cb7=['name','STRING','generate','ENUM','twilio','connectel','clicksend','plivo','clickatell','csc','intelepeer','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','exports'];(function(_0x4540fe,_0x2d685f){var _0x54fc9f=function(_0x54bea8){while(--_0x54bea8){_0x4540fe['push'](_0x4540fe['shift']());}};_0x54fc9f(++_0x2d685f);}(_0x3cb7,0xcf));var _0x73cb=function(_0x15eb63,_0xd3f629){_0x15eb63=_0x15eb63-0x0;var _0x19fc81=_0x3cb7[_0x15eb63];return _0x19fc81;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0x73cb('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x73cb('0x1'),'allowNull':![]},'key':{'type':Sequelize[_0x73cb('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x73cb('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x73cb('0x2')],'defaultValue':function(){return rs[_0x73cb('0x3')]();}},'phone':{'type':Sequelize[_0x73cb('0x2')]},'type':{'type':Sequelize[_0x73cb('0x4')](_0x73cb('0x5'),'skebby',_0x73cb('0x6'),_0x73cb('0x7'),_0x73cb('0x8'),_0x73cb('0x9'),_0x73cb('0xa'),'infobip',_0x73cb('0xb'))},'accountSid':{'type':Sequelize[_0x73cb('0x2')]},'authId':{'type':Sequelize[_0x73cb('0x2')]},'authToken':{'type':Sequelize[_0x73cb('0x2')]},'smsMethod':{'type':Sequelize[_0x73cb('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x73cb('0x2')]},'password':{'type':Sequelize[_0x73cb('0x2')]},'apiKey':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0x73cb('0x2')]},'deliveryReport':{'type':Sequelize[_0x73cb('0xc')],'defaultValue':![]},'description':{'type':Sequelize[_0x73cb('0x2')]},'notificationTemplate':{'type':Sequelize[_0x73cb('0xd')],'defaultValue':function(){return _0x73cb('0xe');}},'notificationSound':{'type':Sequelize[_0x73cb('0xc')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x73cb('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x73cb('0xc')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x73cb('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x73cb('0xc')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x73cb('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x73cb('0x2')]}};
\ No newline at end of file
index bdf8f3f..0d567d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10dc=['Contact','internal','Tag','Tags','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','DESC','out','Messages','dataValues','log','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','clickatell','redif','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','csc','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','html-pdf','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','defaults','localhost','redis','./smsAccount.socket','register','jayson/promise','client','request','then','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','info','result','status','end','json','count','offset','Content-Range','reject','save','update','destroy','get','SmsAccounts','sendStatus','stack','name','send','index','SmsAccount','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','limit','order','sort','where','day','add','merge','filter','map','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','length','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','SmsAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','addAnswer','getAnswers','pick','CannedAnswer','removeAnswers','SmsApplication','Applications','account','applications','orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','CompanyId','ListId','type','twilio','From','Body','messageId','skebby','from','connectel','clicksend','message_id','plivo','Text','MessageUUID','infobip','results','originatingAddress','segmentedMessage','fromNumber','text','replyMessageId','intelepeer','refid','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','list','omit','SmsInteraction','spread','interaction','created','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','Start','startRouting','entity\x20found','set','Content-Type','sequelize','transaction','findAndCountAll','getApplications','nolimit','getInteractions'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x10dc,0x107));var _0xc10d=function(_0x30fe8c,_0x272cb9){_0x30fe8c=_0x30fe8c-0x0;var _0x4f1068=_0x10dc[_0x30fe8c];return _0x4f1068;};'use strict';var pdf=require(_0xc10d('0x0'));var emlformat=require(_0xc10d('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xc10d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc10d('0x3'));var moment=require(_0xc10d('0x4'));var BPromise=require(_0xc10d('0x5'));var Mustache=require(_0xc10d('0x6'));var util=require(_0xc10d('0x7'));var path=require(_0xc10d('0x8'));var sox=require(_0xc10d('0x9'));var csv=require(_0xc10d('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xc10d('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc10d('0xc'));var deskjs=require(_0xc10d('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc10d('0xe'));var Redis=require(_0xc10d('0xf'));var qs=require(_0xc10d('0x10'));var logger=require(_0xc10d('0x11'))(_0xc10d('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0xc10d('0x13'))['db'];config['redis']=_[_0xc10d('0x14')](config['redis'],{'host':_0xc10d('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc10d('0x16')]));require(_0xc10d('0x17'))[_0xc10d('0x18')](socket);var jayson=require(_0xc10d('0x19'));var client=jayson[_0xc10d('0x1a')]['http']({'port':0x232c});function respondWithRpcPromise(_0x382ed0,_0x517c43,_0x234152,_0x2f1bd0){return new BPromise(function(_0x3cfa24,_0x42b006){var _0x3fc902=_0x2f1bd0||client;return _0x3fc902[_0xc10d('0x1b')](_0x382ed0,_0x234152)[_0xc10d('0x1c')](function(_0x3210a8){logger['info']('SmsAccount,\x20%s,\x20%s',_0x517c43,_0xc10d('0x1d'));logger[_0xc10d('0x1e')](_0xc10d('0x1f'),_0x517c43,_0xc10d('0x1d'),JSON[_0xc10d('0x20')](_0x3210a8));if(_0x3210a8[_0xc10d('0x21')]){if(_0x3210a8[_0xc10d('0x21')][_0xc10d('0x22')]===0x1f4){logger[_0xc10d('0x21')](_0xc10d('0x23'),_0x517c43,_0x3210a8[_0xc10d('0x21')][_0xc10d('0x24')]);return _0x42b006(_0x3210a8[_0xc10d('0x21')]['message']);}logger[_0xc10d('0x21')](_0xc10d('0x23'),_0x517c43,_0x3210a8['error'][_0xc10d('0x24')]);return _0x3cfa24(_0x3210a8[_0xc10d('0x21')]['message']);}else{logger[_0xc10d('0x25')]('SmsAccount,\x20%s,\x20%s',_0x517c43,'request\x20sent');_0x3cfa24(_0x3210a8[_0xc10d('0x26')]['message']);}})['catch'](function(_0x7dd427){logger[_0xc10d('0x21')](_0xc10d('0x23'),_0x517c43,_0x7dd427);_0x42b006(_0x7dd427);});});}function respondWithStatusCode(_0x15a518,_0x25c6c5){_0x25c6c5=_0x25c6c5||0xcc;return function(_0x557c38){if(_0x557c38){return _0x15a518['sendStatus'](_0x25c6c5);}return _0x15a518[_0xc10d('0x27')](_0x25c6c5)[_0xc10d('0x28')]();};}function respondWithResult(_0x21efbb,_0x3e1409){_0x3e1409=_0x3e1409||0xc8;return function(_0x5b6e50){if(_0x5b6e50){return _0x21efbb[_0xc10d('0x27')](_0x3e1409)[_0xc10d('0x29')](_0x5b6e50);}};}function respondWithFilteredResult(_0x298de1,_0x4fc35d){return function(_0x54e830){if(_0x54e830){var _0xabef03=_0x54e830[_0xc10d('0x2a')],_0x21ccbb=_0x4fc35d['offset'],_0x3e6ecb=_0x4fc35d[_0xc10d('0x2b')]+_0x4fc35d['limit'],_0x497b8a;if(_0x3e6ecb>=_0xabef03){_0x3e6ecb=_0xabef03;_0x497b8a=0xc8;}else{_0x497b8a=0xce;}_0x298de1['status'](_0x497b8a);return _0x298de1['set'](_0xc10d('0x2c'),_0x21ccbb+'-'+_0x3e6ecb+'/'+_0xabef03)[_0xc10d('0x29')](_0x54e830);}return null;};}function patchUpdates(_0x2af30d){return function(_0x11db2b){try{jsonpatch['apply'](_0x11db2b,_0x2af30d,!![]);}catch(_0x16931d){return BPromise[_0xc10d('0x2d')](_0x16931d);}return _0x11db2b[_0xc10d('0x2e')]();};}function saveUpdates(_0x2a49a2,_0x2acb2a){return function(_0x9c8e57){if(_0x9c8e57){return _0x9c8e57[_0xc10d('0x2f')](_0x2a49a2)[_0xc10d('0x1c')](function(_0x444d12){return _0x444d12;});}return null;};}function removeEntity(_0x2846b1,_0x44bf94){return function(_0x47ab3e){if(_0x47ab3e){return _0x47ab3e[_0xc10d('0x30')]()[_0xc10d('0x1c')](function(){var _0x3a8212=_0x47ab3e[_0xc10d('0x31')]({'plain':!![]});var _0x23c6e2=_0xc10d('0x32');return db['UserProfileResource']['destroy']({'where':{'type':_0x23c6e2,'resourceId':_0x3a8212['id']}})[_0xc10d('0x1c')](function(){return _0x47ab3e;});})[_0xc10d('0x1c')](function(){_0x2846b1[_0xc10d('0x27')](0xcc)[_0xc10d('0x28')]();});}};}function handleEntityNotFound(_0x297906,_0x32a33a){return function(_0x3e9f6){if(!_0x3e9f6){_0x297906[_0xc10d('0x33')](0x194);}return _0x3e9f6;};}function handleError(_0x38965d,_0x256c36){_0x256c36=_0x256c36||0x1f4;return function(_0xc88b61){logger[_0xc10d('0x21')](_0xc88b61[_0xc10d('0x34')]);if(_0xc88b61[_0xc10d('0x35')]){delete _0xc88b61['name'];}_0x38965d[_0xc10d('0x27')](_0x256c36)[_0xc10d('0x36')](_0xc88b61);};}exports[_0xc10d('0x37')]=function(_0x5c2b75,_0x411ea4){var _0x5174df={},_0x353322={},_0x4eec6c={'count':0x0,'rows':[]};var _0x3e5fcf=db[_0xc10d('0x38')][_0xc10d('0x39')];_0x353322[_0xc10d('0x3a')]=_[_0xc10d('0x3b')](_0x3e5fcf);var _0x5f8d85={'dateStart':_0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x3d')],'dateEnd':_0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x3e')]};delete _0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x3d')];delete _0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x3e')];_0x353322[_0xc10d('0x3c')]=_[_0xc10d('0x3b')](_0x5c2b75['query']);_0x353322[_0xc10d('0x3f')]=_[_0xc10d('0x40')](_0x353322[_0xc10d('0x3a')],_0x353322[_0xc10d('0x3c')]);_0x5174df[_0xc10d('0x41')]=_[_0xc10d('0x40')](_0x353322['model'],qs[_0xc10d('0x42')](_0x5c2b75['query'][_0xc10d('0x42')]));_0x5174df['attributes']=_0x5174df[_0xc10d('0x41')]['length']?_0x5174df[_0xc10d('0x41')]:_0x353322[_0xc10d('0x3a')];if(!_0x5c2b75['query'][_0xc10d('0x43')]('nolimit')){_0x5174df[_0xc10d('0x44')]=qs['limit'](_0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x44')]);_0x5174df[_0xc10d('0x2b')]=qs['offset'](_0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x2b')]);}_0x5174df[_0xc10d('0x45')]=qs['sort'](_0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x46')]);_0x5174df[_0xc10d('0x47')]=qs[_0xc10d('0x3f')](_['pick'](_0x5c2b75[_0xc10d('0x3c')],_0x353322[_0xc10d('0x3f')]));if(_0x5f8d85[_0xc10d('0x3d')]){if(_0x5f8d85[_0xc10d('0x3e')]){_0x5f8d85[_0xc10d('0x3e')]=moment(_0x5f8d85[_0xc10d('0x3e')])['add'](0x1,_0xc10d('0x48'));}else{_0x5f8d85['dateEnd']=moment(_0x5f8d85[_0xc10d('0x3d')])[_0xc10d('0x49')](0x1,_0xc10d('0x48'));}_[_0xc10d('0x4a')](_0x5174df['where'],{'createdAt':{'$gte':_0x5f8d85[_0xc10d('0x3d')],'$lte':_0x5f8d85[_0xc10d('0x3e')]}});}if(_0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x4b')]){_0x5174df[_0xc10d('0x47')]=_[_0xc10d('0x4a')](_0x5174df['where'],{'$or':_[_0xc10d('0x4c')](_0x3e5fcf,function(_0x111267){if(_0x111267['type'][_0xc10d('0x4d')]!==_0xc10d('0x4e')){var _0x1fc287={};_0x1fc287[_0x111267[_0xc10d('0x4f')]]={'$like':'%'+_0x5c2b75[_0xc10d('0x3c')]['filter']+'%'};return _0x1fc287;}})});}_0x5174df=_[_0xc10d('0x4a')]({},_0x5174df,_0x5c2b75[_0xc10d('0x50')]);var _0x321570={'where':_0x5174df[_0xc10d('0x47')]};return db['SmsAccount'][_0xc10d('0x2a')](_0x321570)['then'](function(_0xc2dcc3){_0x4eec6c[_0xc10d('0x2a')]=_0xc2dcc3;if(_0x5c2b75[_0xc10d('0x3c')][_0xc10d('0x51')]){_0x5174df[_0xc10d('0x52')]=[{'all':!![]}];}return db[_0xc10d('0x38')][_0xc10d('0x53')](_0x5174df);})[_0xc10d('0x1c')](function(_0x4a815b){_0x4eec6c[_0xc10d('0x54')]=_0x4a815b;return _0x4eec6c;})[_0xc10d('0x1c')](respondWithFilteredResult(_0x411ea4,_0x5174df))[_0xc10d('0x55')](handleError(_0x411ea4,null));};exports[_0xc10d('0x56')]=function(_0x5e1d73,_0x27518f){var _0x5d1970={'raw':![],'where':{'id':_0x5e1d73[_0xc10d('0x57')]['id']}},_0x3e9aed={};_0x3e9aed['model']=_[_0xc10d('0x3b')](db[_0xc10d('0x38')]['rawAttributes']);_0x3e9aed['query']=_[_0xc10d('0x3b')](_0x5e1d73[_0xc10d('0x3c')]);_0x3e9aed[_0xc10d('0x3f')]=_[_0xc10d('0x40')](_0x3e9aed[_0xc10d('0x3a')],_0x3e9aed[_0xc10d('0x3c')]);_0x5d1970['attributes']=_[_0xc10d('0x40')](_0x3e9aed[_0xc10d('0x3a')],qs[_0xc10d('0x42')](_0x5e1d73[_0xc10d('0x3c')]['fields']));_0x5d1970[_0xc10d('0x41')]=_0x5d1970[_0xc10d('0x41')][_0xc10d('0x58')]?_0x5d1970[_0xc10d('0x41')]:_0x3e9aed[_0xc10d('0x3a')];if(_0x5e1d73[_0xc10d('0x3c')][_0xc10d('0x51')]){_0x5d1970[_0xc10d('0x52')]=[{'all':!![]}];}_0x5d1970=_[_0xc10d('0x4a')]({},_0x5d1970,_0x5e1d73[_0xc10d('0x50')]);return db[_0xc10d('0x38')]['find'](_0x5d1970)[_0xc10d('0x1c')](handleEntityNotFound(_0x27518f,null))[_0xc10d('0x1c')](respondWithResult(_0x27518f,null))['catch'](handleError(_0x27518f,null));};exports[_0xc10d('0x59')]=function(_0x4f4540,_0x1528a4){return db['SmsAccount'][_0xc10d('0x59')](_0x4f4540['body'],{})[_0xc10d('0x1c')](function(_0x499189){var _0x2813ee=_0x4f4540[_0xc10d('0x5a')][_0xc10d('0x31')]({'plain':!![]});if(!_0x2813ee)throw new Error(_0xc10d('0x5b'));if(_0x2813ee[_0xc10d('0x5c')]===_0xc10d('0x5a')){var _0x48d1a2=_0x499189[_0xc10d('0x31')]({'plain':!![]});var _0x35da07='SmsAccounts';return db[_0xc10d('0x5d')][_0xc10d('0x5e')]({'where':{'name':_0x35da07,'userProfileId':_0x2813ee[_0xc10d('0x5f')]},'raw':!![]})[_0xc10d('0x1c')](function(_0x469d93){if(_0x469d93&&_0x469d93[_0xc10d('0x60')]===0x0){return db[_0xc10d('0x61')][_0xc10d('0x59')]({'name':_0x48d1a2[_0xc10d('0x35')],'resourceId':_0x48d1a2['id'],'type':_0x469d93[_0xc10d('0x35')],'sectionId':_0x469d93['id']},{})[_0xc10d('0x1c')](function(){return _0x499189;});}else{return _0x499189;}})[_0xc10d('0x55')](function(_0x2d3cc0){logger['error'](_0xc10d('0x62'),_0x2d3cc0);throw _0x2d3cc0;});}return _0x499189;})[_0xc10d('0x1c')](respondWithResult(_0x1528a4,0xc9))[_0xc10d('0x55')](handleError(_0x1528a4,null));};exports['update']=function(_0x38fb17,_0x10b70f){if(_0x38fb17[_0xc10d('0x63')]['id']){delete _0x38fb17[_0xc10d('0x63')]['id'];}return db[_0xc10d('0x38')]['find']({'where':{'id':_0x38fb17[_0xc10d('0x57')]['id']}})['then'](handleEntityNotFound(_0x10b70f,null))['then'](saveUpdates(_0x38fb17[_0xc10d('0x63')],null))[_0xc10d('0x1c')](respondWithResult(_0x10b70f,null))[_0xc10d('0x55')](handleError(_0x10b70f,null));};exports[_0xc10d('0x30')]=function(_0x53b999,_0x1568a0){return db['SmsAccount'][_0xc10d('0x5e')]({'where':{'id':_0x53b999[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x1568a0,null))['then'](removeEntity(_0x1568a0,null))[_0xc10d('0x55')](handleError(_0x1568a0,null));};exports[_0xc10d('0x64')]=function(_0x2381e7,_0x36d6bd){return db[_0xc10d('0x38')][_0xc10d('0x64')]()['then'](respondWithResult(_0x36d6bd,null))[_0xc10d('0x55')](handleError(_0x36d6bd,null));};exports[_0xc10d('0x65')]=function(_0x2d2a45,_0x4320cf,_0x4e796f){if(_0x2d2a45[_0xc10d('0x63')]['id']){delete _0x2d2a45[_0xc10d('0x63')]['id'];}return db[_0xc10d('0x38')][_0xc10d('0x5e')]({'where':{'id':_0x2d2a45['params']['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x4320cf,null))['then'](function(_0x298d44){if(_0x298d44){_0x2d2a45[_0xc10d('0x63')][_0xc10d('0x66')]=_0x298d44['id'];return db['Disposition'][_0xc10d('0x59')](_0x2d2a45[_0xc10d('0x63')]);}})[_0xc10d('0x1c')](respondWithResult(_0x4320cf,null))[_0xc10d('0x55')](handleError(_0x4320cf,null));};exports[_0xc10d('0x67')]=function(_0x3bc4b2,_0x1110f3,_0x17fb8f){var _0x22f84f={'raw':![],'where':{}};var _0x3ef505={};var _0x282bd4={'count':0x0,'rows':[]};return db[_0xc10d('0x38')][_0xc10d('0x68')]({'where':{'id':_0x3bc4b2['params']['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x1110f3,null))[_0xc10d('0x1c')](function(_0x599efc){if(_0x599efc){_0x3ef505['model']=_[_0xc10d('0x3b')](db['Disposition'][_0xc10d('0x39')]);_0x3ef505[_0xc10d('0x3c')]=_[_0xc10d('0x3b')](_0x3bc4b2[_0xc10d('0x3c')]);_0x3ef505['filters']=_[_0xc10d('0x40')](_0x3ef505['model'],_0x3ef505[_0xc10d('0x3c')]);_0x22f84f[_0xc10d('0x41')]=_['intersection'](_0x3ef505[_0xc10d('0x3a')],qs[_0xc10d('0x42')](_0x3bc4b2[_0xc10d('0x3c')][_0xc10d('0x42')]));_0x22f84f[_0xc10d('0x41')]=_0x22f84f[_0xc10d('0x41')][_0xc10d('0x58')]?_0x22f84f[_0xc10d('0x41')]:_0x3ef505['model'];if(!_0x3bc4b2[_0xc10d('0x3c')][_0xc10d('0x43')]('nolimit')){_0x22f84f[_0xc10d('0x44')]=qs[_0xc10d('0x44')](_0x3bc4b2[_0xc10d('0x3c')][_0xc10d('0x44')]);_0x22f84f[_0xc10d('0x2b')]=qs[_0xc10d('0x2b')](_0x3bc4b2[_0xc10d('0x3c')]['offset']);}_0x22f84f['order']=qs['sort'](_0x3bc4b2[_0xc10d('0x3c')][_0xc10d('0x46')]);_0x22f84f[_0xc10d('0x47')]=qs[_0xc10d('0x3f')](_['pick'](_0x3bc4b2['query'],_0x3ef505[_0xc10d('0x3f')]));_0x22f84f[_0xc10d('0x47')][_0xc10d('0x66')]=_0x599efc['id'];if(_0x3bc4b2[_0xc10d('0x3c')][_0xc10d('0x4b')]){_0x22f84f[_0xc10d('0x47')]=_[_0xc10d('0x4a')](_0x22f84f['where'],{'$or':_[_0xc10d('0x4c')](_0x22f84f[_0xc10d('0x41')],function(_0x1692b4){var _0x5debd7={};_0x5debd7[_0x1692b4]={'$like':'%'+_0x3bc4b2[_0xc10d('0x3c')][_0xc10d('0x4b')]+'%'};return _0x5debd7;})});}_0x22f84f=_[_0xc10d('0x4a')]({},_0x22f84f,_0x3bc4b2[_0xc10d('0x50')]);return db[_0xc10d('0x69')][_0xc10d('0x2a')]({'where':_0x22f84f[_0xc10d('0x47')]})[_0xc10d('0x1c')](function(_0x33f0d7){_0x282bd4[_0xc10d('0x2a')]=_0x33f0d7;if(_0x3bc4b2[_0xc10d('0x3c')][_0xc10d('0x51')]){_0x22f84f[_0xc10d('0x52')]=[{'all':!![]}];}return db['Disposition'][_0xc10d('0x53')](_0x22f84f);})[_0xc10d('0x1c')](function(_0x2e2d27){_0x282bd4[_0xc10d('0x54')]=_0x2e2d27;return _0x282bd4;});}})['then'](respondWithFilteredResult(_0x1110f3,_0x22f84f))[_0xc10d('0x55')](handleError(_0x1110f3,null));};exports[_0xc10d('0x6a')]=function(_0x47ffc7,_0x384e5a,_0x5a62c0){var _0xed9375;return db[_0xc10d('0x38')][_0xc10d('0x5e')]({'where':{'id':_0x47ffc7[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x384e5a,null))['then'](function(_0x11f83a){if(_0x11f83a){return _0x11f83a['removeDispositions'](_0x47ffc7[_0xc10d('0x3c')][_0xc10d('0x6b')]);}})[_0xc10d('0x1c')](respondWithStatusCode(_0x384e5a,null))[_0xc10d('0x55')](handleError(_0x384e5a,null));};exports[_0xc10d('0x6c')]=function(_0xde7da6,_0x2160cc,_0x47b86b){if(_0xde7da6[_0xc10d('0x63')]['id']){delete _0xde7da6[_0xc10d('0x63')]['id'];}return db[_0xc10d('0x38')]['find']({'where':{'id':_0xde7da6[_0xc10d('0x57')]['id']}})['then'](handleEntityNotFound(_0x2160cc,null))['then'](function(_0x2b5334){if(_0x2b5334){_0xde7da6[_0xc10d('0x63')][_0xc10d('0x66')]=_0x2b5334['id'];return db['CannedAnswer']['create'](_0xde7da6[_0xc10d('0x63')]);}})[_0xc10d('0x1c')](respondWithResult(_0x2160cc,null))[_0xc10d('0x55')](handleError(_0x2160cc,null));};exports[_0xc10d('0x6d')]=function(_0x453de,_0x5a46df,_0x1ab77c){var _0x3d3491={'raw':![],'where':{}};var _0x59ed57={};var _0x3babda={'count':0x0,'rows':[]};return db['SmsAccount']['findOne']({'where':{'id':_0x453de[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x5a46df,null))[_0xc10d('0x1c')](function(_0x28ffeb){if(_0x28ffeb){_0x59ed57['model']=_[_0xc10d('0x3b')](db['CannedAnswer'][_0xc10d('0x39')]);_0x59ed57['query']=_[_0xc10d('0x3b')](_0x453de[_0xc10d('0x3c')]);_0x59ed57[_0xc10d('0x3f')]=_[_0xc10d('0x40')](_0x59ed57[_0xc10d('0x3a')],_0x59ed57[_0xc10d('0x3c')]);_0x3d3491[_0xc10d('0x41')]=_[_0xc10d('0x40')](_0x59ed57['model'],qs[_0xc10d('0x42')](_0x453de[_0xc10d('0x3c')][_0xc10d('0x42')]));_0x3d3491[_0xc10d('0x41')]=_0x3d3491[_0xc10d('0x41')]['length']?_0x3d3491[_0xc10d('0x41')]:_0x59ed57[_0xc10d('0x3a')];if(!_0x453de[_0xc10d('0x3c')][_0xc10d('0x43')]('nolimit')){_0x3d3491[_0xc10d('0x44')]=qs['limit'](_0x453de[_0xc10d('0x3c')][_0xc10d('0x44')]);_0x3d3491[_0xc10d('0x2b')]=qs['offset'](_0x453de[_0xc10d('0x3c')][_0xc10d('0x2b')]);}_0x3d3491[_0xc10d('0x45')]=qs[_0xc10d('0x46')](_0x453de['query'][_0xc10d('0x46')]);_0x3d3491['where']=qs[_0xc10d('0x3f')](_[_0xc10d('0x6e')](_0x453de[_0xc10d('0x3c')],_0x59ed57[_0xc10d('0x3f')]));_0x3d3491[_0xc10d('0x47')][_0xc10d('0x66')]=_0x28ffeb['id'];if(_0x453de[_0xc10d('0x3c')][_0xc10d('0x4b')]){_0x3d3491['where']=_[_0xc10d('0x4a')](_0x3d3491[_0xc10d('0x47')],{'$or':_[_0xc10d('0x4c')](_0x3d3491['attributes'],function(_0x523839){var _0x1ab4e0={};_0x1ab4e0[_0x523839]={'$like':'%'+_0x453de[_0xc10d('0x3c')]['filter']+'%'};return _0x1ab4e0;})});}_0x3d3491=_[_0xc10d('0x4a')]({},_0x3d3491,_0x453de[_0xc10d('0x50')]);return db[_0xc10d('0x6f')][_0xc10d('0x2a')]({'where':_0x3d3491[_0xc10d('0x47')]})[_0xc10d('0x1c')](function(_0x312e11){_0x3babda['count']=_0x312e11;if(_0x453de[_0xc10d('0x3c')][_0xc10d('0x51')]){_0x3d3491['include']=[{'all':!![]}];}return db[_0xc10d('0x6f')][_0xc10d('0x53')](_0x3d3491);})['then'](function(_0x2df216){_0x3babda[_0xc10d('0x54')]=_0x2df216;return _0x3babda;});}})[_0xc10d('0x1c')](respondWithFilteredResult(_0x5a46df,_0x3d3491))[_0xc10d('0x55')](handleError(_0x5a46df,null));};exports[_0xc10d('0x70')]=function(_0x4b1253,_0x508c3f,_0x420c27){var _0x5c6450;return db[_0xc10d('0x38')][_0xc10d('0x5e')]({'where':{'id':_0x4b1253[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x508c3f,null))[_0xc10d('0x1c')](function(_0x5ce19c){if(_0x5ce19c){return _0x5ce19c['removeAnswers'](_0x4b1253[_0xc10d('0x3c')][_0xc10d('0x6b')]);}})[_0xc10d('0x1c')](respondWithStatusCode(_0x508c3f,null))[_0xc10d('0x55')](handleError(_0x508c3f,null));};exports['notify']=function(_0x23363f,_0x266b81,_0x17ca30){var _0x3b4a94={'channel':'sms'};var _0x48f948=[];var _0x1af2c4=[];var _0xecf21a={};return db[_0xc10d('0x38')][_0xc10d('0x5e')]({'where':{'id':_0x23363f[_0xc10d('0x57')]['id']},'include':[{'model':db[_0xc10d('0x71')],'as':_0xc10d('0x72')}]})['then'](handleEntityNotFound(_0x266b81,null))[_0xc10d('0x1c')](function(_0x186e3c){_0x3b4a94[_0xc10d('0x73')]=_0x186e3c;_0x3b4a94[_0xc10d('0x74')]=_[_0xc10d('0x75')](_0x186e3c[_0xc10d('0x72')],[_0xc10d('0x76')],[_0xc10d('0x77')]);if(_0x3b4a94[_0xc10d('0x73')][_0xc10d('0x72')]){delete _0x3b4a94[_0xc10d('0x73')][_0xc10d('0x72')];}return db[_0xc10d('0x78')][_0xc10d('0x64')]();})[_0xc10d('0x1c')](function(_0x3b6961){if(!_0x3b6961){throw new db[(_0xc10d('0x79'))][(_0xc10d('0x7a'))](_0xc10d('0x7b'));}_0x48f948=_['difference'](_[_0xc10d('0x3b')](_0x3b6961),[_0xc10d('0x7c'),_0xc10d('0x7d')]);_0x1af2c4=_['difference'](_[_0xc10d('0x3b')](_0x3b6961),['createdAt','updatedAt',_0xc10d('0x7e'),_0xc10d('0x7f')]);_0x3b4a94['body']={'mapKey':'mobile'};if(_0x3b4a94[_0xc10d('0x73')][_0xc10d('0x80')]){switch(_0x3b4a94['account'][_0xc10d('0x80')]){case _0xc10d('0x81'):_0x3b4a94[_0xc10d('0x63')]['from']=_0x23363f[_0xc10d('0x63')][_0xc10d('0x82')];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x63')]=_0x23363f['body'][_0xc10d('0x83')];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x84')]=_0x23363f[_0xc10d('0x63')]['MessageSid'];break;case _0xc10d('0x85'):_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')]='+'+_0x23363f[_0xc10d('0x63')]['sender'];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x63')]=_0x23363f[_0xc10d('0x63')]['text'];break;case _0xc10d('0x87'):_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')]=_0x23363f['body']['from'];_0x3b4a94['body'][_0xc10d('0x63')]=_0x23363f[_0xc10d('0x63')]['message'];break;case _0xc10d('0x88'):_0x3b4a94[_0xc10d('0x63')]['from']=_0x23363f['body'][_0xc10d('0x86')];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x63')]=_0x23363f[_0xc10d('0x63')][_0xc10d('0x63')];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x84')]=_0x23363f['body'][_0xc10d('0x89')];break;case _0xc10d('0x8a'):_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')]=_0x23363f[_0xc10d('0x63')][_0xc10d('0x82')];_0x3b4a94['body']['body']=_0x23363f[_0xc10d('0x63')][_0xc10d('0x8b')];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x84')]=_0x23363f[_0xc10d('0x63')][_0xc10d('0x8c')];break;case _0xc10d('0x8d'):_0x3b4a94['body'][_0xc10d('0x86')]='+'+_0x23363f[_0xc10d('0x63')]['results'][0x0][_0xc10d('0x86')];_0x3b4a94['body']['body']=_0x23363f['body'][_0xc10d('0x8e')][0x0]['text'];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x84')]=_0x23363f[_0xc10d('0x63')][_0xc10d('0x8e')][0x0]['messageId'];break;case'csc':_0x3b4a94[_0xc10d('0x63')]['from']=_0x23363f[_0xc10d('0x63')][_0xc10d('0x8f')];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x63')]=_0x23363f[_0xc10d('0x63')][_0xc10d('0x90')]['message'];break;case'clickatell':_0x3b4a94['body']['from']=_0x23363f['body'][_0xc10d('0x91')];_0x3b4a94['body'][_0xc10d('0x63')]=_0x23363f[_0xc10d('0x63')][_0xc10d('0x92')];_0x3b4a94[_0xc10d('0x63')]['messageId']=_0x23363f[_0xc10d('0x63')][_0xc10d('0x93')];break;case _0xc10d('0x94'):_0x3b4a94['body']['from']=_0x23363f[_0xc10d('0x63')][_0xc10d('0x86')];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x63')]=_0x23363f[_0xc10d('0x63')][_0xc10d('0x24')];_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x84')]=_0x23363f['body'][_0xc10d('0x95')];break;}}if(_0x3b4a94[_0xc10d('0x63')]['id']){delete _0x3b4a94[_0xc10d('0x63')]['id'];}if(_['isNil'](_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')])){throw new db['Sequelize'][(_0xc10d('0x7a'))](_0xc10d('0x96'));}if(_[_0xc10d('0x97')](_0x3b4a94['body']['body'])||_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x63')]===''){throw new db['Sequelize'][(_0xc10d('0x7a'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xc10d('0x97')](_0x3b4a94['body'][_0xc10d('0x98')])){throw new db[(_0xc10d('0x79'))][(_0xc10d('0x7a'))](_0xc10d('0x99')+_0x1af2c4);}if(!_['includes'](_0x1af2c4,_0x3b4a94[_0xc10d('0x63')]['mapKey'])){throw new db[(_0xc10d('0x79'))][(_0xc10d('0x7a'))](_0xc10d('0x9a')+_0x1af2c4);}_0xecf21a[_0x3b4a94['body'][_0xc10d('0x98')]]=_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')];return db[_0xc10d('0x9b')][_0xc10d('0x5e')]({'where':{'id':_0x3b4a94[_0xc10d('0x73')][_0xc10d('0x7f')]},'include':[{'model':db['CmContact'],'as':_0xc10d('0x9c'),'where':_0xecf21a,'limit':0x1,'order':[[_0xc10d('0x7d'),'DESC']]}]});})[_0xc10d('0x1c')](handleEntityNotFound(_0x266b81,null))[_0xc10d('0x1c')](function(_0x21c0c1){if(_0x21c0c1){_0x3b4a94[_0xc10d('0x9d')]=_[_0xc10d('0x9e')](_0x21c0c1,['Contacts']);if(_0x21c0c1[_0xc10d('0x9c')][_0xc10d('0x58')]){return _0x21c0c1[_0xc10d('0x9c')][0x0];}var _0x115b43=_[_0xc10d('0x14')](_0x3b4a94[_0xc10d('0x63')],{'firstName':_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')],'ListId':_0x21c0c1['id']});_0x115b43[_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x98')]]=_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')];return db['CmContact'][_0xc10d('0x59')](_0x115b43,{'fields':_0x48f948,'raw':!![]});}})[_0xc10d('0x1c')](handleEntityNotFound(_0x266b81,null))[_0xc10d('0x1c')](function(_0x449298){if(_0x449298){_0x3b4a94['contact']=_0x449298;var _0x42d3dd={'ContactId':_0x449298['id'],'phone':_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')],'SmsAccountId':_0x23363f[_0xc10d('0x57')]['id']};var _0x491f77={'ContactId':_0x449298['id'],'SmsAccountId':_0x23363f[_0xc10d('0x57')]['id'],'closed':![]};return db[_0xc10d('0x9f')][_0xc10d('0x5e')]({'where':_0x491f77})['then'](function(_0x12094f){if(_0x12094f){return[_0x12094f,![]];}return db[_0xc10d('0x9f')][_0xc10d('0x59')](_0x42d3dd)['then'](function(_0xda5bfd){return[_0xda5bfd,!![]];});});}})[_0xc10d('0xa0')](function(_0x40523f,_0x34cf1c){_0x3b4a94[_0xc10d('0xa1')]=_0x40523f['get']({'plain':!![]});_0x3b4a94[_0xc10d('0xa1')][_0xc10d('0xa2')]=![];if(_0x34cf1c){if(_0x3b4a94[_0xc10d('0x73')]['autoclose']){_0x3b4a94[_0xc10d('0x74')][_0xc10d('0xa3')]({'id':0x0,'priority':_0x3b4a94[_0xc10d('0x74')][_0xc10d('0x58')]+0x1,'app':_0xc10d('0xa4'),'appdata':_0xc10d('0xa5'),'interval':_0xc10d('0xa6')});}_0x3b4a94['interaction'][_0xc10d('0xa2')]=!![];}return db[_0xc10d('0xa7')]['create']({'phone':_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x86')],'messageId':_0x3b4a94['body'][_0xc10d('0x84')],'body':_0x3b4a94[_0xc10d('0x63')][_0xc10d('0x63')],'SmsAccountId':_0x23363f['params']['id'],'SmsInteractionId':_0x40523f['id'],'direction':'in','ContactId':_0x40523f[_0xc10d('0xa8')],'AttachmentId':_0x3b4a94['body'][_0xc10d('0xa9')]});})[_0xc10d('0x1c')](function(_0x42cc42){_0x3b4a94[_0xc10d('0x24')]=_0x42cc42;if(_0x3b4a94[_0xc10d('0xa1')][_0xc10d('0xaa')]){return db[_0xc10d('0xab')][_0xc10d('0x5e')]({'attributes':['id',_0xc10d('0x35')],'where':{'id':_0x3b4a94[_0xc10d('0xa1')][_0xc10d('0xaa')]}})[_0xc10d('0x1c')](function(_0x5e4a30){if(_0x5e4a30){_0x3b4a94['applications'][_0xc10d('0xac')]({'id':0x0,'priority':0x0,'app':_0xc10d('0xad'),'appdata':_0x5e4a30[_0xc10d('0x35')]+','+(_0x3b4a94[_0xc10d('0x73')]['waitForTheAssignedAgent']||0xa),'interval':_0xc10d('0xa6')});}return respondWithRpcPromise(_0xc10d('0xae'),_0xc10d('0xaf'),_0x3b4a94);});}return respondWithRpcPromise('Start','startRouting',_0x3b4a94);})[_0xc10d('0x1c')](function(_0x16a2b3){if(_0x16a2b3){var _0x2ed999=0xc8;var _0x52a1be='receiveMessage';logger[_0xc10d('0x25')](_0xc10d('0x1f'),_0x52a1be,_0x2ed999,_0xc10d('0xb0'));logger[_0xc10d('0x1e')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x52a1be,_0x2ed999,_0xc10d('0xb0'),JSON[_0xc10d('0x20')](_0x16a2b3));if(_0x3b4a94[_0xc10d('0x73')][_0xc10d('0x80')]===_0xc10d('0x81')){return _0x266b81[_0xc10d('0x27')](_0x2ed999)[_0xc10d('0xb1')](_0xc10d('0xb2'),'text/xml')['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x266b81[_0xc10d('0x27')](_0x2ed999)['json'](_0x16a2b3);}}})[_0xc10d('0x55')](handleError(_0x266b81,null));};exports['addApplications']=function(_0x545012,_0x25bea9,_0x21597c){return db[_0xc10d('0x38')]['findOne']({'where':{'id':_0x545012[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x25bea9,null))[_0xc10d('0x1c')](function(_0xe12909){if(_0xe12909){return db[_0xc10d('0xb3')][_0xc10d('0xb4')](function(_0x1d2e20){return db[_0xc10d('0x71')][_0xc10d('0x30')]({'where':{'SmsAccountId':_0x545012[_0xc10d('0x57')]['id']},'transaction':_0x1d2e20})['then'](function(_0x57478d){var _0x2e761b=_[_0xc10d('0x4c')](_0x545012[_0xc10d('0x63')],function(_0x4ad04b){_0x4ad04b[_0xc10d('0x66')]=_0x545012['params']['id'];return _0x4ad04b;});return db[_0xc10d('0x71')]['bulkCreate'](_0x2e761b,{'transaction':_0x1d2e20});});})['then'](function(){return db[_0xc10d('0x71')][_0xc10d('0xb5')]({'where':{'SmsAccountId':_0x545012[_0xc10d('0x57')]['id']},'order':_0xc10d('0x76')});});}})[_0xc10d('0x1c')](respondWithResult(_0x25bea9,null))[_0xc10d('0x55')](handleError(_0x25bea9,null));};exports[_0xc10d('0xb6')]=function(_0x111ad9,_0x509e60,_0xdde2a8){var _0x5e399b={};var _0x8cd647={};var _0xee2053;var _0x2376f1;return db['SmsAccount'][_0xc10d('0x68')]({'where':{'id':_0x111ad9[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x509e60,null))[_0xc10d('0x1c')](function(_0x14f2d5){if(_0x14f2d5){_0xee2053=_0x14f2d5;_0x8cd647[_0xc10d('0x3a')]=_[_0xc10d('0x3b')](db[_0xc10d('0x71')][_0xc10d('0x39')]);_0x8cd647[_0xc10d('0x3c')]=_[_0xc10d('0x3b')](_0x111ad9[_0xc10d('0x3c')]);_0x8cd647[_0xc10d('0x3f')]=_[_0xc10d('0x40')](_0x8cd647[_0xc10d('0x3a')],_0x8cd647[_0xc10d('0x3c')]);_0x5e399b['attributes']=_['intersection'](_0x8cd647[_0xc10d('0x3a')],qs[_0xc10d('0x42')](_0x111ad9['query']['fields']));_0x5e399b[_0xc10d('0x41')]=_0x5e399b['attributes'][_0xc10d('0x58')]?_0x5e399b[_0xc10d('0x41')]:_0x8cd647['model'];_0x5e399b[_0xc10d('0x45')]=qs['sort'](_0x111ad9['query'][_0xc10d('0x46')]);_0x5e399b[_0xc10d('0x47')]=qs['filters'](_[_0xc10d('0x6e')](_0x111ad9[_0xc10d('0x3c')],_0x8cd647[_0xc10d('0x3f')]));if(_0x111ad9[_0xc10d('0x3c')][_0xc10d('0x4b')]){_0x5e399b['where']=_['merge'](_0x5e399b[_0xc10d('0x47')],{'$or':_[_0xc10d('0x4c')](_0x5e399b[_0xc10d('0x41')],function(_0x21c38e){var _0x258ddf={};_0x258ddf[_0x21c38e]={'$like':'%'+_0x111ad9[_0xc10d('0x3c')]['filter']+'%'};return _0x258ddf;})});}_0x5e399b=_[_0xc10d('0x4a')]({},_0x5e399b,_0x111ad9['options']);return _0xee2053['getApplications'](_0x5e399b);}})[_0xc10d('0x1c')](function(_0x3e1468){if(_0x3e1468){_0x2376f1=_0x3e1468[_0xc10d('0x58')];if(!_0x111ad9[_0xc10d('0x3c')]['hasOwnProperty'](_0xc10d('0xb7'))){_0x5e399b[_0xc10d('0x44')]=qs[_0xc10d('0x44')](_0x111ad9['query'][_0xc10d('0x44')]);_0x5e399b['offset']=qs['offset'](_0x111ad9[_0xc10d('0x3c')][_0xc10d('0x2b')]);}return _0xee2053[_0xc10d('0xb6')](_0x5e399b);}})[_0xc10d('0x1c')](function(_0x3df241){if(_0x3df241){return _0x3df241?{'count':_0x2376f1,'rows':_0x3df241}:null;}})[_0xc10d('0x1c')](respondWithResult(_0x509e60,null))[_0xc10d('0x55')](handleError(_0x509e60,null));};exports[_0xc10d('0xb8')]=function(_0xc10a92,_0x429ca7,_0x109d3a){var _0x3f3317={'raw':![],'where':{}};var _0x14de72={};var _0x1b4978={'count':0x0,'rows':[]};return db[_0xc10d('0x38')][_0xc10d('0x68')]({'where':{'id':_0xc10a92[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x429ca7,null))['then'](function(_0x294542){if(_0x294542){_0x14de72[_0xc10d('0x3a')]=_[_0xc10d('0x3b')](db['SmsInteraction'][_0xc10d('0x39')]);_0x14de72[_0xc10d('0x3c')]=_[_0xc10d('0x3b')](_0xc10a92['query']);_0x14de72[_0xc10d('0x3f')]=_[_0xc10d('0x40')](_0x14de72['model'],_0x14de72['query']);_0x3f3317['attributes']=_[_0xc10d('0x40')](_0x14de72[_0xc10d('0x3a')],qs[_0xc10d('0x42')](_0xc10a92[_0xc10d('0x3c')][_0xc10d('0x42')]));_0x3f3317[_0xc10d('0x41')]=_0x3f3317[_0xc10d('0x41')][_0xc10d('0x58')]?_0x3f3317[_0xc10d('0x41')]:_0x14de72[_0xc10d('0x3a')];if(!_0xc10a92[_0xc10d('0x3c')][_0xc10d('0x43')](_0xc10d('0xb7'))){_0x3f3317[_0xc10d('0x44')]=qs[_0xc10d('0x44')](_0xc10a92['query']['limit']);_0x3f3317[_0xc10d('0x2b')]=qs[_0xc10d('0x2b')](_0xc10a92[_0xc10d('0x3c')][_0xc10d('0x2b')]);}_0x3f3317[_0xc10d('0x45')]=qs[_0xc10d('0x46')](_0xc10a92[_0xc10d('0x3c')][_0xc10d('0x46')]);_0x3f3317[_0xc10d('0x47')]=qs[_0xc10d('0x3f')](_['pick'](_0xc10a92['query'],_0x14de72[_0xc10d('0x3f')]));_0x3f3317[_0xc10d('0x47')][_0xc10d('0x66')]=_0x294542['id'];if(_0xc10a92[_0xc10d('0x3c')][_0xc10d('0x4b')]){_0x3f3317['where']=_['merge'](_0x3f3317['where'],{'$or':_[_0xc10d('0x4c')](_0x3f3317['attributes'],function(_0x30a96e){var _0x53e4fe={};_0x53e4fe[_0x30a96e]={'$like':'%'+_0xc10a92['query'][_0xc10d('0x4b')]+'%'};return _0x53e4fe;})});}_0x3f3317=_[_0xc10d('0x4a')]({},_0x3f3317,_0xc10a92['options']);return db['SmsInteraction'][_0xc10d('0x2a')]({'where':_0x3f3317[_0xc10d('0x47')]})[_0xc10d('0x1c')](function(_0xaf2dda){_0x1b4978[_0xc10d('0x2a')]=_0xaf2dda;if(_0xc10a92[_0xc10d('0x3c')][_0xc10d('0x51')]){_0x3f3317[_0xc10d('0x52')]=[{'model':db[_0xc10d('0x78')],'as':_0xc10d('0xb9'),'required':![]},{'model':db[_0xc10d('0xab')],'as':'Owner','attributes':[_0xc10d('0x35'),'fullname',_0xc10d('0xba')],'required':![]},{'model':db[_0xc10d('0xbb')],'as':_0xc10d('0xbc'),'attributes':['id','name',_0xc10d('0xbd')],'where':_0xc10a92[_0xc10d('0x3c')]['tag']?{'id':_0xc10a92[_0xc10d('0x3c')][_0xc10d('0xbe')]}:undefined,'required':_0xc10a92[_0xc10d('0x3c')][_0xc10d('0xbe')]?!![]:![]}];}return db[_0xc10d('0x9f')][_0xc10d('0x53')](_0x3f3317);})[_0xc10d('0x1c')](function(_0x2d9de6){_0x1b4978['rows']=_0x2d9de6;return _0x1b4978;});}})[_0xc10d('0x1c')](respondWithFilteredResult(_0x429ca7,_0x3f3317))[_0xc10d('0x55')](handleError(_0x429ca7,null));};exports[_0xc10d('0x36')]=function(_0x24afe3,_0x1c882e,_0x37b629){var _0x10a7c0,_0x12075a,_0xbf5859;if(_[_0xc10d('0x97')](_0x24afe3[_0xc10d('0x63')][_0xc10d('0x63')])||_0x24afe3[_0xc10d('0x63')][_0xc10d('0x63')]===''){throw new db[(_0xc10d('0x79'))][(_0xc10d('0x7a'))](_0xc10d('0xbf'));}if(_[_0xc10d('0x97')](_0x24afe3[_0xc10d('0x63')]['to'])){throw new db[(_0xc10d('0x79'))]['ValidationError'](_0xc10d('0xc0'));}_0x10a7c0=_0x24afe3[_0xc10d('0x63')]['to'];return db['SmsAccount'][_0xc10d('0x5e')]({'where':{'id':_0x24afe3['params']['id']},'include':[{'model':db['CmList'],'as':_0xc10d('0xc1'),'include':[{'model':db[_0xc10d('0x78')],'as':_0xc10d('0x9c'),'where':{'mobile':_0x10a7c0},'limit':0x1,'order':[[_0xc10d('0x7d'),_0xc10d('0xc2')]]}]}]})['then'](handleEntityNotFound(_0x1c882e,null))['then'](function(_0x5c68c6){if(_0x5c68c6&&_0x5c68c6[_0xc10d('0xc1')]){_0x12075a=_0x5c68c6['get']({'plain':!![]});if(_0x12075a[_0xc10d('0xc1')]&&_0x12075a[_0xc10d('0xc1')][_0xc10d('0x9c')][_0xc10d('0x58')]){return _0x12075a['List']['Contacts'][0x0];}return db[_0xc10d('0x78')][_0xc10d('0x59')](_[_0xc10d('0x14')](_0x24afe3[_0xc10d('0x63')],{'firstName':_0x10a7c0,'mobile':_0x10a7c0,'phone':_0x10a7c0,'ListId':_0x12075a['ListId']}));}})[_0xc10d('0x1c')](handleEntityNotFound(_0x1c882e,null))[_0xc10d('0x1c')](function(_0x1a4f26){if(_0x1a4f26){_0xbf5859=_0x1a4f26;return db[_0xc10d('0x9f')]['find']({'where':{'ContactId':_0xbf5859['id'],'closed':![],'SmsAccountId':_0x12075a['id']}})[_0xc10d('0x1c')](function(_0x15a609){if(_0x15a609){return[_0x15a609,![]];}return db[_0xc10d('0x9f')][_0xc10d('0x59')]({'UserId':_0x24afe3[_0xc10d('0x5a')]['id'],'ContactId':_0xbf5859['id'],'SmsAccountId':_0x12075a['id'],'phone':_0x10a7c0,'firstMsgDirection':_0xc10d('0xc3'),'Messages':[_[_0xc10d('0x4a')](_0x24afe3['body'],{'read':![],'body':_0x24afe3[_0xc10d('0x63')][_0xc10d('0x63')],'phone':_0x10a7c0,'SmsAccountId':_0x12075a['id'],'UserId':_0x24afe3[_0xc10d('0x5a')]['id'],'ContactId':_0xbf5859['id']})]},{'include':[{'model':db[_0xc10d('0xa7')],'as':_0xc10d('0xc4')}]})[_0xc10d('0x1c')](function(_0x36b779){return[_0x36b779,!![]];});});}})[_0xc10d('0xa0')](function(_0x4a1814,_0x55e5f9){if(_0x55e5f9){return _0x4a1814;}return db[_0xc10d('0xa7')]['create'](_['merge'](_0x24afe3['body'],{'read':![],'body':_0x24afe3[_0xc10d('0x63')]['body'],'phone':_0x10a7c0,'SmsAccountId':_0x12075a['id'],'SmsInteractionId':_0x4a1814['id'],'UserId':_0x24afe3['user']['id'],'ContactId':_0xbf5859['id']}))[_0xc10d('0x1c')](function(_0x1bf6c2){_0x4a1814['dataValues']['Messages']=[];_0x4a1814['dataValues'][_0xc10d('0xc4')][_0xc10d('0xa3')](_0x1bf6c2[_0xc10d('0xc5')]);return _0x4a1814;});})[_0xc10d('0x1c')](respondWithResult(_0x1c882e,null))['catch'](handleError(_0x1c882e,null));};exports[_0xc10d('0x27')]=function(_0x3c598f,_0x2819a0,_0x425948){if(_0x3c598f['body']['id']){delete _0x3c598f['body']['id'];}console[_0xc10d('0xc6')]('endpoint\x20/status\x20POST\x20/',_0x3c598f['body']);var _0x4ebcfc,_0x28dc76,_0x457fbd;return db[_0xc10d('0x38')][_0xc10d('0x5e')]({'where':{'id':_0x3c598f[_0xc10d('0x57')]['id']}})['then'](handleEntityNotFound(_0x2819a0,null))[_0xc10d('0x1c')](function(_0x1c5b2a){if(_0x1c5b2a){_0x457fbd=_0x1c5b2a;logger[_0xc10d('0x1e')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xc10d('0x27'),_0xc10d('0xc7'),_0x1c5b2a[_0xc10d('0x80')],util[_0xc10d('0xc8')](_0x3c598f[_0xc10d('0x63')],{'showHidden':![],'depth':null}));switch(_0x1c5b2a['type']){case _0xc10d('0x85'):if(_0x3c598f['body'][_0xc10d('0xc9')]&&_0x3c598f[_0xc10d('0x63')]['status']){_0x28dc76=_0x3c598f[_0xc10d('0x63')]['status'];return db['SmsMessage'][_0xc10d('0x5e')]({'where':{'messageId':_0x3c598f[_0xc10d('0x63')][_0xc10d('0xc9')]}});}break;case'connectel':if(_0x3c598f[_0xc10d('0x63')][_0xc10d('0xca')]&&_0x3c598f['body'][_0xc10d('0xcb')]){_0x28dc76=_0x3c598f[_0xc10d('0x63')][_0xc10d('0xcb')];return db['SmsMessage']['find']({'where':{'messageId':_0x3c598f[_0xc10d('0x63')][_0xc10d('0xca')]}});}break;case _0xc10d('0x88'):if(_0x3c598f[_0xc10d('0x63')][_0xc10d('0x89')]&&_0x3c598f[_0xc10d('0x63')][_0xc10d('0xcc')]){_0x28dc76=_0x3c598f[_0xc10d('0x63')][_0xc10d('0xcc')];return db[_0xc10d('0xa7')][_0xc10d('0x5e')]({'where':{'messageId':_0x3c598f[_0xc10d('0x63')][_0xc10d('0x89')]}});}break;case _0xc10d('0x8d'):var _0x5ae20d=_0x3c598f[_0xc10d('0x63')][_0xc10d('0x8e')][0x0];if(_0x5ae20d['messageId']&&_0x5ae20d[_0xc10d('0x27')][_0xc10d('0xcd')]===_0xc10d('0xce')){_0x28dc76=_0x5ae20d[_0xc10d('0x27')][_0xc10d('0xcd')];return db[_0xc10d('0xa7')][_0xc10d('0x5e')]({'where':{'messageId':_0x5ae20d[_0xc10d('0x84')]}});}break;case _0xc10d('0xcf'):if(_0x3c598f[_0xc10d('0x63')][_0xc10d('0x84')]&&_0x3c598f[_0xc10d('0x63')][_0xc10d('0x27')]){_0x28dc76=_0x3c598f['body'][_0xc10d('0x27')];return db['SmsMessage'][_0xc10d('0x5e')]({'where':{'messageId':_0x3c598f[_0xc10d('0x63')][_0xc10d('0x84')]}});}break;case _0xc10d('0x94'):if(_0x3c598f[_0xc10d('0x63')][_0xc10d('0xd0')]&&_0x3c598f[_0xc10d('0x63')][_0xc10d('0x27')]){_0x28dc76=_0x3c598f[_0xc10d('0x63')][_0xc10d('0x27')];return db[_0xc10d('0xa7')][_0xc10d('0x5e')]({'where':{'messageId':_0x3c598f[_0xc10d('0x63')][_0xc10d('0xd0')]}});}break;}}})['then'](handleEntityNotFound(_0x2819a0,null))['then'](function(_0x1735f6){if(_0x1735f6){_0x4ebcfc=_0x1735f6;switch(_0x457fbd[_0xc10d('0x80')]){case'skebby':if(_0x28dc76===_0xc10d('0xce')){return _0x4ebcfc['update']({'read':!![]});}else{logger[_0xc10d('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xc10d('0x27'),_0xc10d('0x85'),util[_0xc10d('0xc8')](_0x3c598f['body'],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x28dc76==='1'){return _0x4ebcfc[_0xc10d('0x2f')]({'read':!![]});}else{logger['error'](_0xc10d('0x1f'),_0xc10d('0x27'),_0xc10d('0x85'),util[_0xc10d('0xc8')](_0x3c598f['body'],{'showHidden':![],'depth':null}));}break;case _0xc10d('0x88'):if(!_0x3c598f['body']['error_code']&&_0x28dc76>=0xc8&&_0x28dc76<=0xce){return _0x4ebcfc[_0xc10d('0x2f')]({'read':!![]});}else{logger[_0xc10d('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xc10d('0x27'),_0xc10d('0x88'),util[_0xc10d('0xc8')](_0x3c598f[_0xc10d('0x63')],{'showHidden':![],'depth':null}));}break;case _0xc10d('0x8d'):var _0x139ce9=_0x3c598f['body'][_0xc10d('0x8e')][0x0];if(_0x139ce9[_0xc10d('0x27')][_0xc10d('0xcd')]==='DELIVERED'){return _0x4ebcfc[_0xc10d('0x2f')]({'read':!![]});}else{logger[_0xc10d('0x21')](_0xc10d('0x1f'),'status','infobip',util[_0xc10d('0xc8')](_0x3c598f[_0xc10d('0x63')],{'showHidden':![],'depth':null}));}break;case _0xc10d('0xcf'):if(_0x28dc76==_0xc10d('0xd1')||_0x28dc76==_0xc10d('0xd2')){return _0x4ebcfc['update']({'read':!![]});}else{logger['error'](_0xc10d('0x1f'),_0xc10d('0x27'),_0xc10d('0xcf'),util['inspect'](_0x3c598f[_0xc10d('0x63')],{'showHidden':![],'depth':null}));}break;case _0xc10d('0x94'):if(_0x28dc76===_0xc10d('0xd3')||_0x28dc76===_0xc10d('0xd4')){return _0x4ebcfc[_0xc10d('0x2f')]({'read':!![]});}else{logger[_0xc10d('0x21')](_0xc10d('0x1f'),_0xc10d('0x27'),'intelepeer',util[_0xc10d('0xc8')](_0x3c598f[_0xc10d('0x63')],{'showHidden':![],'depth':null}));}break;}return _0x4ebcfc;}})[_0xc10d('0x1c')](respondWithResult(_0x2819a0,null))['catch'](handleError(_0x2819a0,null));};exports[_0xc10d('0xd5')]=function(_0x530e44,_0x4d2432,_0x43b62b){var _0x9ea47f,_0xb34a5f,_0x264512;return db[_0xc10d('0x38')][_0xc10d('0x5e')]({'where':{'id':_0x530e44[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x4d2432,null))['then'](function(_0x55890f){if(_0x55890f){_0x264512=_0x55890f;logger['debug'](_0xc10d('0x1f'),_0xc10d('0x27'),_0xc10d('0xc7'),_0x55890f['type'],util['inspect'](_0x530e44['query'],{'showHidden':![],'depth':null}));switch(_0x55890f[_0xc10d('0x80')]){case _0xc10d('0xd6'):if(_0x530e44[_0xc10d('0x3c')][_0xc10d('0xd7')]&&_0x530e44[_0xc10d('0x3c')]['state']){_0xb34a5f=_0x530e44[_0xc10d('0x3c')][_0xc10d('0xd8')];return db[_0xc10d('0xa7')][_0xc10d('0x5e')]({'where':{'messageId':_0x530e44[_0xc10d('0x3c')][_0xc10d('0xd7')]}});}break;}}})[_0xc10d('0x1c')](handleEntityNotFound(_0x4d2432,null))['then'](function(_0x5683b1){if(_0x5683b1){_0x9ea47f=_0x5683b1;switch(_0x264512[_0xc10d('0x80')]){case _0xc10d('0xd6'):if(_0xb34a5f==='2'||_0xb34a5f==='6'){return _0x9ea47f['update']({'read':!![]});}else{logger['error'](_0xc10d('0x1f'),_0xc10d('0x27'),'csc',util[_0xc10d('0xc8')](_0x530e44[_0xc10d('0x3c')],{'showHidden':![],'depth':null}));};break;}return _0x9ea47f;}})['then'](respondWithResult(_0x4d2432,null))[_0xc10d('0x55')](handleError(_0x4d2432,null));};exports[_0xc10d('0xd9')]=function(_0xb07231,_0x4b517c,_0x2462df){return db['SmsAccount'][_0xc10d('0x5e')]({'where':{'id':_0xb07231[_0xc10d('0x57')]['id']}})['then'](handleEntityNotFound(_0x4b517c,null))[_0xc10d('0x1c')](function(_0x2cc392){if(_0x2cc392){return _0x2cc392[_0xc10d('0xd9')](_0xb07231[_0xc10d('0x63')][_0xc10d('0x6b')],_[_0xc10d('0x9e')](_0xb07231[_0xc10d('0x63')],[_0xc10d('0x6b'),'id'])||{})[_0xc10d('0xa0')](function(_0x216fd6){for(var _0x20e956=0x0;_0x20e956<_0xb07231[_0xc10d('0x63')]['ids']['length'];_0x20e956+=0x1){socket[_0xc10d('0xda')](_0xc10d('0xdb'),{'UserId':_0xb07231['body'][_0xc10d('0x6b')][_0x20e956],'SmsAccountId':_0xb07231[_0xc10d('0x57')]['id']});}return _0x216fd6;});}})[_0xc10d('0x1c')](respondWithResult(_0x4b517c,null))[_0xc10d('0x55')](handleError(_0x4b517c,null));};exports[_0xc10d('0xdc')]=function(_0x32a120,_0x18a967,_0x42e653){var _0x4c5b32;return db[_0xc10d('0x38')]['find']({'where':{'id':_0x32a120[_0xc10d('0x57')]['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0x18a967,null))[_0xc10d('0x1c')](function(_0x409abc){if(_0x409abc){return _0x409abc[_0xc10d('0xdc')](_0x32a120['query'][_0xc10d('0x6b')])[_0xc10d('0x1c')](function(_0x5ae65b){if(_[_0xc10d('0xdd')](_0x32a120[_0xc10d('0x3c')][_0xc10d('0x6b')])){for(var _0x31d18d=0x0;_0x31d18d<_0x32a120[_0xc10d('0x3c')][_0xc10d('0x6b')][_0xc10d('0x58')];_0x31d18d+=0x1){socket[_0xc10d('0xda')]('userSmsAccount:remove',{'UserId':_0x32a120[_0xc10d('0x3c')][_0xc10d('0x6b')][_0x31d18d],'SmsAccountId':_0x32a120[_0xc10d('0x57')]['id']});}}else{socket[_0xc10d('0xda')](_0xc10d('0xde'),{'UserId':_0x32a120[_0xc10d('0x3c')][_0xc10d('0x6b')],'SmsAccountId':_0x32a120['params']['id']});}});}})[_0xc10d('0x1c')](respondWithStatusCode(_0x18a967,null))['catch'](handleError(_0x18a967,null));};exports['getAgents']=function(_0x53d5cc,_0xe135fe,_0xe32e4b){var _0x55aef0={};var _0xac0c41={};var _0x2fcdff;var _0x42d969;return db['SmsAccount']['findOne']({'where':{'id':_0x53d5cc['params']['id']}})[_0xc10d('0x1c')](handleEntityNotFound(_0xe135fe,null))['then'](function(_0x4a29d0){if(_0x4a29d0){_0x2fcdff=_0x4a29d0;_0xac0c41[_0xc10d('0x3a')]=_['keys'](db['User'][_0xc10d('0x39')]);_0xac0c41['query']=_['keys'](_0x53d5cc[_0xc10d('0x3c')]);_0xac0c41[_0xc10d('0x3f')]=_['intersection'](_0xac0c41[_0xc10d('0x3a')],_0xac0c41['query']);_0x55aef0['attributes']=_[_0xc10d('0x40')](_0xac0c41[_0xc10d('0x3a')],qs[_0xc10d('0x42')](_0x53d5cc['query'][_0xc10d('0x42')]));_0x55aef0['attributes']=_0x55aef0[_0xc10d('0x41')][_0xc10d('0x58')]?_0x55aef0[_0xc10d('0x41')]:_0xac0c41[_0xc10d('0x3a')];_0x55aef0[_0xc10d('0x45')]=qs[_0xc10d('0x46')](_0x53d5cc[_0xc10d('0x3c')][_0xc10d('0x46')]);_0x55aef0[_0xc10d('0x47')]=qs['filters'](_[_0xc10d('0x6e')](_0x53d5cc[_0xc10d('0x3c')],_0xac0c41['filters']));if(_0x53d5cc[_0xc10d('0x3c')][_0xc10d('0x4b')]){_0x55aef0['where']=_[_0xc10d('0x4a')](_0x55aef0[_0xc10d('0x47')],{'$or':_[_0xc10d('0x4c')](_0x55aef0[_0xc10d('0x41')],function(_0x47943e){var _0x1a4b25={};_0x1a4b25[_0x47943e]={'$like':'%'+_0x53d5cc[_0xc10d('0x3c')][_0xc10d('0x4b')]+'%'};return _0x1a4b25;})});}_0x55aef0=_['merge']({},_0x55aef0,_0x53d5cc[_0xc10d('0x50')]);return _0x2fcdff[_0xc10d('0xdf')](_0x55aef0);}})[_0xc10d('0x1c')](function(_0x8e6adc){if(_0x8e6adc){_0x42d969=_0x8e6adc[_0xc10d('0x58')];if(!_0x53d5cc[_0xc10d('0x3c')][_0xc10d('0x43')]('nolimit')){_0x55aef0[_0xc10d('0x44')]=qs[_0xc10d('0x44')](_0x53d5cc[_0xc10d('0x3c')]['limit']);_0x55aef0[_0xc10d('0x2b')]=qs['offset'](_0x53d5cc[_0xc10d('0x3c')][_0xc10d('0x2b')]);}return _0x2fcdff[_0xc10d('0xdf')](_0x55aef0);}})['then'](function(_0x165282){if(_0x165282){return _0x165282?{'count':_0x42d969,'rows':_0x165282}:null;}})['then'](respondWithResult(_0xe135fe,null))[_0xc10d('0x55')](handleError(_0xe135fe,null));};
\ No newline at end of file
+var _0x482d=['findAll','rows','show','params','SmsAccount','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','SmsAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','hasOwnProperty','order','removeDispositions','addAnswer','getAnswers','CannedAnswer','removeAnswers','ids','SmsApplication','Applications','account','priority','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','From','messageId','skebby','sender','text','connectel','from','clicksend','message_id','plivo','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','list','omit','Contacts','contact','SmsInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','applications','unshift','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','tag','to\x20is\x20mandatory','List','SmsMessage','Messages','spread','dataValues','log','endpoint\x20/status\x20POST\x20/','received\x20delivery\x20report\x20from','skebby_dispatch_id','requestid','statusInt','status_code','groupName','intelepeer','redif','DELIVERED','inspect','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','ACCEPTD','message-id','state','userSmsAccount:save','removeAgents','isArray','emit','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','http','request','then','info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','sendStatus','status','count','offset','set','Content-Range','json','apply','save','update','UserProfileResource','stack','name','send','index','rawAttributes','model','query','dateStart','dateEnd','keys','filters','attributes','intersection','fields','length','nolimit','limit','sort','pick','add','day','merge','where','filter','map','type','key','VIRTUAL','options','includeAll','include'];(function(_0x299ec8,_0x358b44){var _0x25b11e=function(_0x140735){while(--_0x140735){_0x299ec8['push'](_0x299ec8['shift']());}};_0x25b11e(++_0x358b44);}(_0x482d,0x16c));var _0xd482=function(_0x2faa5d,_0x5cd0c7){_0x2faa5d=_0x2faa5d-0x0;var _0x20607d=_0x482d[_0x2faa5d];return _0x20607d;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0xd482('0x0'));var zipdir=require(_0xd482('0x1'));var jsonpatch=require(_0xd482('0x2'));var rp=require(_0xd482('0x3'));var moment=require(_0xd482('0x4'));var BPromise=require(_0xd482('0x5'));var Mustache=require('mustache');var util=require(_0xd482('0x6'));var path=require(_0xd482('0x7'));var sox=require(_0xd482('0x8'));var csv=require('to-csv');var ejs=require(_0xd482('0x9'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd482('0xa'));var deskjs=require(_0xd482('0xb'));var toCsv=require(_0xd482('0xc'));var querystring=require('querystring');var Papa=require(_0xd482('0xd'));var Redis=require(_0xd482('0xe'));var qs=require(_0xd482('0xf'));var logger=require(_0xd482('0x10'))(_0xd482('0x11'));var utils=require(_0xd482('0x12'));var config=require(_0xd482('0x13'));var db=require(_0xd482('0x14'))['db'];config['redis']=_[_0xd482('0x15')](config[_0xd482('0x16')],{'host':_0xd482('0x17'),'port':0x18eb});var socket=require(_0xd482('0x18'))(new Redis(config['redis']));require(_0xd482('0x19'))[_0xd482('0x1a')](socket);var jayson=require(_0xd482('0x1b'));var client=jayson['client'][_0xd482('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x56d516,_0x5c5eaa,_0x2aa7f4,_0x5420dc){return new BPromise(function(_0x3b6849,_0x3e7067){var _0x494272=_0x5420dc||client;return _0x494272[_0xd482('0x1d')](_0x56d516,_0x2aa7f4)[_0xd482('0x1e')](function(_0x319c97){logger[_0xd482('0x1f')](_0xd482('0x20'),_0x5c5eaa,'request\x20sent');logger[_0xd482('0x21')](_0xd482('0x22'),_0x5c5eaa,_0xd482('0x23'),JSON['stringify'](_0x319c97));if(_0x319c97[_0xd482('0x24')]){if(_0x319c97[_0xd482('0x24')][_0xd482('0x25')]===0x1f4){logger[_0xd482('0x24')](_0xd482('0x20'),_0x5c5eaa,_0x319c97['error']['message']);return _0x3e7067(_0x319c97['error'][_0xd482('0x26')]);}logger[_0xd482('0x24')](_0xd482('0x20'),_0x5c5eaa,_0x319c97['error'][_0xd482('0x26')]);return _0x3b6849(_0x319c97[_0xd482('0x24')][_0xd482('0x26')]);}else{logger[_0xd482('0x1f')](_0xd482('0x20'),_0x5c5eaa,_0xd482('0x23'));_0x3b6849(_0x319c97[_0xd482('0x27')][_0xd482('0x26')]);}})['catch'](function(_0x3a6bba){logger[_0xd482('0x24')](_0xd482('0x20'),_0x5c5eaa,_0x3a6bba);_0x3e7067(_0x3a6bba);});});}function respondWithStatusCode(_0xc3fb6e,_0x3b4ac2){_0x3b4ac2=_0x3b4ac2||0xcc;return function(_0x1aa81c){if(_0x1aa81c){return _0xc3fb6e[_0xd482('0x28')](_0x3b4ac2);}return _0xc3fb6e[_0xd482('0x29')](_0x3b4ac2)['end']();};}function respondWithResult(_0x4d9351,_0x40ee1b){_0x40ee1b=_0x40ee1b||0xc8;return function(_0x5a78cb){if(_0x5a78cb){return _0x4d9351[_0xd482('0x29')](_0x40ee1b)['json'](_0x5a78cb);}};}function respondWithFilteredResult(_0x47ce2d,_0x5e4bed){return function(_0x11ca6d){if(_0x11ca6d){var _0x5be9b4=_0x11ca6d[_0xd482('0x2a')],_0x400cbc=_0x5e4bed[_0xd482('0x2b')],_0x120906=_0x5e4bed['offset']+_0x5e4bed['limit'],_0x3654fa;if(_0x120906>=_0x5be9b4){_0x120906=_0x5be9b4;_0x3654fa=0xc8;}else{_0x3654fa=0xce;}_0x47ce2d[_0xd482('0x29')](_0x3654fa);return _0x47ce2d[_0xd482('0x2c')](_0xd482('0x2d'),_0x400cbc+'-'+_0x120906+'/'+_0x5be9b4)[_0xd482('0x2e')](_0x11ca6d);}return null;};}function patchUpdates(_0x5905c8){return function(_0x43f952){try{jsonpatch[_0xd482('0x2f')](_0x43f952,_0x5905c8,!![]);}catch(_0x203869){return BPromise['reject'](_0x203869);}return _0x43f952[_0xd482('0x30')]();};}function saveUpdates(_0x377706,_0x367b53){return function(_0x486484){if(_0x486484){return _0x486484[_0xd482('0x31')](_0x377706)['then'](function(_0x39a7e2){return _0x39a7e2;});}return null;};}function removeEntity(_0xdb3ea,_0x315ac4){return function(_0x2000c1){if(_0x2000c1){return _0x2000c1['destroy']()[_0xd482('0x1e')](function(){var _0x150b08=_0x2000c1['get']({'plain':!![]});var _0x42e3fc='SmsAccounts';return db[_0xd482('0x32')]['destroy']({'where':{'type':_0x42e3fc,'resourceId':_0x150b08['id']}})['then'](function(){return _0x2000c1;});})['then'](function(){_0xdb3ea[_0xd482('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26447a,_0x11bab1){return function(_0x46d858){if(!_0x46d858){_0x26447a[_0xd482('0x28')](0x194);}return _0x46d858;};}function handleError(_0xdca47c,_0x5687eb){_0x5687eb=_0x5687eb||0x1f4;return function(_0x14ed14){logger[_0xd482('0x24')](_0x14ed14[_0xd482('0x33')]);if(_0x14ed14[_0xd482('0x34')]){delete _0x14ed14[_0xd482('0x34')];}_0xdca47c[_0xd482('0x29')](_0x5687eb)[_0xd482('0x35')](_0x14ed14);};}exports[_0xd482('0x36')]=function(_0x57edae,_0x544081){var _0x1cc4be={},_0x3e2978={},_0x3d4440={'count':0x0,'rows':[]};var _0x50ae05=db['SmsAccount'][_0xd482('0x37')];_0x3e2978[_0xd482('0x38')]=_['keys'](_0x50ae05);var _0x4a1f52={'dateStart':_0x57edae[_0xd482('0x39')][_0xd482('0x3a')],'dateEnd':_0x57edae[_0xd482('0x39')][_0xd482('0x3b')]};delete _0x57edae[_0xd482('0x39')][_0xd482('0x3a')];delete _0x57edae[_0xd482('0x39')]['dateEnd'];_0x3e2978[_0xd482('0x39')]=_[_0xd482('0x3c')](_0x57edae[_0xd482('0x39')]);_0x3e2978[_0xd482('0x3d')]=_['intersection'](_0x3e2978[_0xd482('0x38')],_0x3e2978[_0xd482('0x39')]);_0x1cc4be[_0xd482('0x3e')]=_[_0xd482('0x3f')](_0x3e2978[_0xd482('0x38')],qs[_0xd482('0x40')](_0x57edae['query'][_0xd482('0x40')]));_0x1cc4be['attributes']=_0x1cc4be['attributes'][_0xd482('0x41')]?_0x1cc4be['attributes']:_0x3e2978['model'];if(!_0x57edae[_0xd482('0x39')]['hasOwnProperty'](_0xd482('0x42'))){_0x1cc4be[_0xd482('0x43')]=qs[_0xd482('0x43')](_0x57edae[_0xd482('0x39')]['limit']);_0x1cc4be[_0xd482('0x2b')]=qs[_0xd482('0x2b')](_0x57edae[_0xd482('0x39')][_0xd482('0x2b')]);}_0x1cc4be['order']=qs[_0xd482('0x44')](_0x57edae[_0xd482('0x39')]['sort']);_0x1cc4be['where']=qs[_0xd482('0x3d')](_[_0xd482('0x45')](_0x57edae[_0xd482('0x39')],_0x3e2978[_0xd482('0x3d')]));if(_0x4a1f52['dateStart']){if(_0x4a1f52[_0xd482('0x3b')]){_0x4a1f52[_0xd482('0x3b')]=moment(_0x4a1f52['dateEnd'])[_0xd482('0x46')](0x1,_0xd482('0x47'));}else{_0x4a1f52[_0xd482('0x3b')]=moment(_0x4a1f52[_0xd482('0x3a')])[_0xd482('0x46')](0x1,_0xd482('0x47'));}_[_0xd482('0x48')](_0x1cc4be[_0xd482('0x49')],{'createdAt':{'$gte':_0x4a1f52[_0xd482('0x3a')],'$lte':_0x4a1f52[_0xd482('0x3b')]}});}if(_0x57edae['query'][_0xd482('0x4a')]){_0x1cc4be[_0xd482('0x49')]=_[_0xd482('0x48')](_0x1cc4be[_0xd482('0x49')],{'$or':_[_0xd482('0x4b')](_0x50ae05,function(_0x38451d){if(_0x38451d[_0xd482('0x4c')][_0xd482('0x4d')]!==_0xd482('0x4e')){var _0x2ca18b={};_0x2ca18b[_0x38451d['field']]={'$like':'%'+_0x57edae[_0xd482('0x39')][_0xd482('0x4a')]+'%'};return _0x2ca18b;}})});}_0x1cc4be=_['merge']({},_0x1cc4be,_0x57edae[_0xd482('0x4f')]);var _0x8cd742={'where':_0x1cc4be['where']};return db['SmsAccount']['count'](_0x8cd742)[_0xd482('0x1e')](function(_0x511e12){_0x3d4440[_0xd482('0x2a')]=_0x511e12;if(_0x57edae[_0xd482('0x39')][_0xd482('0x50')]){_0x1cc4be[_0xd482('0x51')]=[{'all':!![]}];}return db['SmsAccount'][_0xd482('0x52')](_0x1cc4be);})[_0xd482('0x1e')](function(_0xf4481e){_0x3d4440[_0xd482('0x53')]=_0xf4481e;return _0x3d4440;})[_0xd482('0x1e')](respondWithFilteredResult(_0x544081,_0x1cc4be))['catch'](handleError(_0x544081,null));};exports[_0xd482('0x54')]=function(_0x3dc426,_0x44237e){var _0x1934b2={'raw':![],'where':{'id':_0x3dc426[_0xd482('0x55')]['id']}},_0x1d72af={};_0x1d72af['model']=_[_0xd482('0x3c')](db[_0xd482('0x56')]['rawAttributes']);_0x1d72af[_0xd482('0x39')]=_['keys'](_0x3dc426[_0xd482('0x39')]);_0x1d72af[_0xd482('0x3d')]=_[_0xd482('0x3f')](_0x1d72af['model'],_0x1d72af[_0xd482('0x39')]);_0x1934b2[_0xd482('0x3e')]=_[_0xd482('0x3f')](_0x1d72af[_0xd482('0x38')],qs['fields'](_0x3dc426[_0xd482('0x39')][_0xd482('0x40')]));_0x1934b2[_0xd482('0x3e')]=_0x1934b2[_0xd482('0x3e')][_0xd482('0x41')]?_0x1934b2[_0xd482('0x3e')]:_0x1d72af[_0xd482('0x38')];if(_0x3dc426[_0xd482('0x39')]['includeAll']){_0x1934b2['include']=[{'all':!![]}];}_0x1934b2=_[_0xd482('0x48')]({},_0x1934b2,_0x3dc426['options']);return db[_0xd482('0x56')][_0xd482('0x57')](_0x1934b2)[_0xd482('0x1e')](handleEntityNotFound(_0x44237e,null))[_0xd482('0x1e')](respondWithResult(_0x44237e,null))[_0xd482('0x58')](handleError(_0x44237e,null));};exports[_0xd482('0x59')]=function(_0x1b8263,_0x2a968d){return db[_0xd482('0x56')][_0xd482('0x59')](_0x1b8263[_0xd482('0x5a')],{})[_0xd482('0x1e')](function(_0x7863a5){var _0x53f897=_0x1b8263[_0xd482('0x5b')][_0xd482('0x5c')]({'plain':!![]});if(!_0x53f897)throw new Error(_0xd482('0x5d'));if(_0x53f897['role']===_0xd482('0x5b')){var _0x4b410c=_0x7863a5[_0xd482('0x5c')]({'plain':!![]});var _0x1e4f89=_0xd482('0x5e');return db[_0xd482('0x5f')][_0xd482('0x57')]({'where':{'name':_0x1e4f89,'userProfileId':_0x53f897[_0xd482('0x60')]},'raw':!![]})['then'](function(_0x14072c){if(_0x14072c&&_0x14072c[_0xd482('0x61')]===0x0){return db['UserProfileResource'][_0xd482('0x59')]({'name':_0x4b410c['name'],'resourceId':_0x4b410c['id'],'type':_0x14072c[_0xd482('0x34')],'sectionId':_0x14072c['id']},{})[_0xd482('0x1e')](function(){return _0x7863a5;});}else{return _0x7863a5;}})['catch'](function(_0x157380){logger[_0xd482('0x24')](_0xd482('0x62'),_0x157380);throw _0x157380;});}return _0x7863a5;})['then'](respondWithResult(_0x2a968d,0xc9))['catch'](handleError(_0x2a968d,null));};exports[_0xd482('0x31')]=function(_0x35f923,_0x107867){if(_0x35f923[_0xd482('0x5a')]['id']){delete _0x35f923['body']['id'];}return db[_0xd482('0x56')][_0xd482('0x57')]({'where':{'id':_0x35f923['params']['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x107867,null))[_0xd482('0x1e')](saveUpdates(_0x35f923[_0xd482('0x5a')],null))[_0xd482('0x1e')](respondWithResult(_0x107867,null))['catch'](handleError(_0x107867,null));};exports[_0xd482('0x63')]=function(_0x5ec1c2,_0x323c19){return db[_0xd482('0x56')][_0xd482('0x57')]({'where':{'id':_0x5ec1c2['params']['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x323c19,null))['then'](removeEntity(_0x323c19,null))[_0xd482('0x58')](handleError(_0x323c19,null));};exports[_0xd482('0x64')]=function(_0x1b0216,_0x388edf){return db['SmsAccount'][_0xd482('0x64')]()[_0xd482('0x1e')](respondWithResult(_0x388edf,null))[_0xd482('0x58')](handleError(_0x388edf,null));};exports[_0xd482('0x65')]=function(_0x452188,_0x3e1ea5,_0x30366b){if(_0x452188[_0xd482('0x5a')]['id']){delete _0x452188[_0xd482('0x5a')]['id'];}return db[_0xd482('0x56')][_0xd482('0x57')]({'where':{'id':_0x452188[_0xd482('0x55')]['id']}})['then'](handleEntityNotFound(_0x3e1ea5,null))[_0xd482('0x1e')](function(_0x790a71){if(_0x790a71){_0x452188['body'][_0xd482('0x66')]=_0x790a71['id'];return db[_0xd482('0x67')][_0xd482('0x59')](_0x452188[_0xd482('0x5a')]);}})[_0xd482('0x1e')](respondWithResult(_0x3e1ea5,null))[_0xd482('0x58')](handleError(_0x3e1ea5,null));};exports[_0xd482('0x68')]=function(_0x467efe,_0xe93afc,_0x235ec1){var _0x50cdeb={'raw':![],'where':{}};var _0x40973f={};var _0x5d294d={'count':0x0,'rows':[]};return db[_0xd482('0x56')][_0xd482('0x69')]({'where':{'id':_0x467efe[_0xd482('0x55')]['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0xe93afc,null))[_0xd482('0x1e')](function(_0xc23db7){if(_0xc23db7){_0x40973f[_0xd482('0x38')]=_[_0xd482('0x3c')](db['Disposition'][_0xd482('0x37')]);_0x40973f['query']=_['keys'](_0x467efe[_0xd482('0x39')]);_0x40973f[_0xd482('0x3d')]=_[_0xd482('0x3f')](_0x40973f['model'],_0x40973f[_0xd482('0x39')]);_0x50cdeb[_0xd482('0x3e')]=_['intersection'](_0x40973f['model'],qs[_0xd482('0x40')](_0x467efe[_0xd482('0x39')][_0xd482('0x40')]));_0x50cdeb[_0xd482('0x3e')]=_0x50cdeb[_0xd482('0x3e')][_0xd482('0x41')]?_0x50cdeb[_0xd482('0x3e')]:_0x40973f[_0xd482('0x38')];if(!_0x467efe[_0xd482('0x39')][_0xd482('0x6a')](_0xd482('0x42'))){_0x50cdeb[_0xd482('0x43')]=qs['limit'](_0x467efe['query'][_0xd482('0x43')]);_0x50cdeb[_0xd482('0x2b')]=qs['offset'](_0x467efe[_0xd482('0x39')]['offset']);}_0x50cdeb[_0xd482('0x6b')]=qs[_0xd482('0x44')](_0x467efe['query'][_0xd482('0x44')]);_0x50cdeb['where']=qs[_0xd482('0x3d')](_[_0xd482('0x45')](_0x467efe[_0xd482('0x39')],_0x40973f['filters']));_0x50cdeb[_0xd482('0x49')][_0xd482('0x66')]=_0xc23db7['id'];if(_0x467efe[_0xd482('0x39')][_0xd482('0x4a')]){_0x50cdeb['where']=_[_0xd482('0x48')](_0x50cdeb[_0xd482('0x49')],{'$or':_[_0xd482('0x4b')](_0x50cdeb[_0xd482('0x3e')],function(_0x2c943b){var _0x5217b6={};_0x5217b6[_0x2c943b]={'$like':'%'+_0x467efe[_0xd482('0x39')][_0xd482('0x4a')]+'%'};return _0x5217b6;})});}_0x50cdeb=_[_0xd482('0x48')]({},_0x50cdeb,_0x467efe[_0xd482('0x4f')]);return db[_0xd482('0x67')]['count']({'where':_0x50cdeb[_0xd482('0x49')]})[_0xd482('0x1e')](function(_0x319c90){_0x5d294d[_0xd482('0x2a')]=_0x319c90;if(_0x467efe[_0xd482('0x39')][_0xd482('0x50')]){_0x50cdeb[_0xd482('0x51')]=[{'all':!![]}];}return db[_0xd482('0x67')][_0xd482('0x52')](_0x50cdeb);})['then'](function(_0x2c2e56){_0x5d294d[_0xd482('0x53')]=_0x2c2e56;return _0x5d294d;});}})[_0xd482('0x1e')](respondWithFilteredResult(_0xe93afc,_0x50cdeb))[_0xd482('0x58')](handleError(_0xe93afc,null));};exports['removeDispositions']=function(_0x4b6aad,_0x12b8de,_0x285df7){var _0x26adb4;return db[_0xd482('0x56')][_0xd482('0x57')]({'where':{'id':_0x4b6aad['params']['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x12b8de,null))[_0xd482('0x1e')](function(_0xedb21d){if(_0xedb21d){return _0xedb21d[_0xd482('0x6c')](_0x4b6aad[_0xd482('0x39')]['ids']);}})['then'](respondWithStatusCode(_0x12b8de,null))[_0xd482('0x58')](handleError(_0x12b8de,null));};exports[_0xd482('0x6d')]=function(_0x24e061,_0x3f634d,_0x33ebce){if(_0x24e061[_0xd482('0x5a')]['id']){delete _0x24e061['body']['id'];}return db[_0xd482('0x56')]['find']({'where':{'id':_0x24e061[_0xd482('0x55')]['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x3f634d,null))[_0xd482('0x1e')](function(_0x3856ac){if(_0x3856ac){_0x24e061[_0xd482('0x5a')][_0xd482('0x66')]=_0x3856ac['id'];return db['CannedAnswer'][_0xd482('0x59')](_0x24e061[_0xd482('0x5a')]);}})['then'](respondWithResult(_0x3f634d,null))['catch'](handleError(_0x3f634d,null));};exports[_0xd482('0x6e')]=function(_0x441181,_0x183891,_0x331939){var _0x423e5f={'raw':![],'where':{}};var _0x99ab9e={};var _0x16f780={'count':0x0,'rows':[]};return db[_0xd482('0x56')][_0xd482('0x69')]({'where':{'id':_0x441181[_0xd482('0x55')]['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x183891,null))[_0xd482('0x1e')](function(_0x5c62c5){if(_0x5c62c5){_0x99ab9e[_0xd482('0x38')]=_[_0xd482('0x3c')](db[_0xd482('0x6f')][_0xd482('0x37')]);_0x99ab9e[_0xd482('0x39')]=_[_0xd482('0x3c')](_0x441181[_0xd482('0x39')]);_0x99ab9e[_0xd482('0x3d')]=_[_0xd482('0x3f')](_0x99ab9e[_0xd482('0x38')],_0x99ab9e[_0xd482('0x39')]);_0x423e5f[_0xd482('0x3e')]=_[_0xd482('0x3f')](_0x99ab9e['model'],qs[_0xd482('0x40')](_0x441181['query']['fields']));_0x423e5f[_0xd482('0x3e')]=_0x423e5f[_0xd482('0x3e')][_0xd482('0x41')]?_0x423e5f[_0xd482('0x3e')]:_0x99ab9e[_0xd482('0x38')];if(!_0x441181[_0xd482('0x39')]['hasOwnProperty'](_0xd482('0x42'))){_0x423e5f[_0xd482('0x43')]=qs[_0xd482('0x43')](_0x441181[_0xd482('0x39')]['limit']);_0x423e5f[_0xd482('0x2b')]=qs['offset'](_0x441181[_0xd482('0x39')][_0xd482('0x2b')]);}_0x423e5f[_0xd482('0x6b')]=qs[_0xd482('0x44')](_0x441181['query'][_0xd482('0x44')]);_0x423e5f['where']=qs[_0xd482('0x3d')](_[_0xd482('0x45')](_0x441181[_0xd482('0x39')],_0x99ab9e[_0xd482('0x3d')]));_0x423e5f['where'][_0xd482('0x66')]=_0x5c62c5['id'];if(_0x441181[_0xd482('0x39')]['filter']){_0x423e5f['where']=_[_0xd482('0x48')](_0x423e5f[_0xd482('0x49')],{'$or':_['map'](_0x423e5f[_0xd482('0x3e')],function(_0x3819a8){var _0x6e8b6={};_0x6e8b6[_0x3819a8]={'$like':'%'+_0x441181[_0xd482('0x39')]['filter']+'%'};return _0x6e8b6;})});}_0x423e5f=_[_0xd482('0x48')]({},_0x423e5f,_0x441181[_0xd482('0x4f')]);return db[_0xd482('0x6f')][_0xd482('0x2a')]({'where':_0x423e5f[_0xd482('0x49')]})['then'](function(_0x2ddb56){_0x16f780[_0xd482('0x2a')]=_0x2ddb56;if(_0x441181[_0xd482('0x39')][_0xd482('0x50')]){_0x423e5f['include']=[{'all':!![]}];}return db[_0xd482('0x6f')][_0xd482('0x52')](_0x423e5f);})['then'](function(_0x22ef95){_0x16f780[_0xd482('0x53')]=_0x22ef95;return _0x16f780;});}})[_0xd482('0x1e')](respondWithFilteredResult(_0x183891,_0x423e5f))[_0xd482('0x58')](handleError(_0x183891,null));};exports['removeAnswers']=function(_0x5ee1a9,_0x6419e8,_0x42a1cf){var _0x2d0523;return db[_0xd482('0x56')][_0xd482('0x57')]({'where':{'id':_0x5ee1a9['params']['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x6419e8,null))[_0xd482('0x1e')](function(_0x7b7e5b){if(_0x7b7e5b){return _0x7b7e5b[_0xd482('0x70')](_0x5ee1a9['query'][_0xd482('0x71')]);}})[_0xd482('0x1e')](respondWithStatusCode(_0x6419e8,null))[_0xd482('0x58')](handleError(_0x6419e8,null));};exports['notify']=function(_0x2a841d,_0x31dd91,_0xcb85df){var _0x3bf8c8={'channel':'sms'};var _0x579853=[];var _0x323ad9=[];var _0x5077cf={};return db[_0xd482('0x56')]['find']({'where':{'id':_0x2a841d[_0xd482('0x55')]['id']},'include':[{'model':db[_0xd482('0x72')],'as':_0xd482('0x73')}]})[_0xd482('0x1e')](handleEntityNotFound(_0x31dd91,null))[_0xd482('0x1e')](function(_0x1a10a3){_0x3bf8c8[_0xd482('0x74')]=_0x1a10a3;_0x3bf8c8['applications']=_['orderBy'](_0x1a10a3[_0xd482('0x73')],[_0xd482('0x75')],['asc']);if(_0x3bf8c8['account']['Applications']){delete _0x3bf8c8['account'][_0xd482('0x73')];}return db[_0xd482('0x76')][_0xd482('0x64')]();})['then'](function(_0x1b2e13){if(!_0x1b2e13){throw new db[(_0xd482('0x77'))][(_0xd482('0x78'))](_0xd482('0x79'));}_0x579853=_[_0xd482('0x7a')](_[_0xd482('0x3c')](_0x1b2e13),[_0xd482('0x7b'),_0xd482('0x7c')]);_0x323ad9=_['difference'](_[_0xd482('0x3c')](_0x1b2e13),[_0xd482('0x7b'),_0xd482('0x7c'),'CompanyId',_0xd482('0x7d')]);_0x3bf8c8[_0xd482('0x5a')]={'mapKey':_0xd482('0x7e')};if(_0x3bf8c8[_0xd482('0x74')][_0xd482('0x4c')]){switch(_0x3bf8c8['account']['type']){case'twilio':_0x3bf8c8[_0xd482('0x5a')]['from']=_0x2a841d[_0xd482('0x5a')][_0xd482('0x7f')];_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x5a')]=_0x2a841d[_0xd482('0x5a')]['Body'];_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x80')]=_0x2a841d[_0xd482('0x5a')]['MessageSid'];break;case _0xd482('0x81'):_0x3bf8c8[_0xd482('0x5a')]['from']='+'+_0x2a841d[_0xd482('0x5a')][_0xd482('0x82')];_0x3bf8c8['body'][_0xd482('0x5a')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x83')];break;case _0xd482('0x84'):_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x85')];_0x3bf8c8['body'][_0xd482('0x5a')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x26')];break;case _0xd482('0x86'):_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')]=_0x2a841d['body'][_0xd482('0x85')];_0x3bf8c8['body'][_0xd482('0x5a')]=_0x2a841d['body'][_0xd482('0x5a')];_0x3bf8c8[_0xd482('0x5a')]['messageId']=_0x2a841d['body'][_0xd482('0x87')];break;case _0xd482('0x88'):_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')]=_0x2a841d[_0xd482('0x5a')]['From'];_0x3bf8c8['body']['body']=_0x2a841d[_0xd482('0x5a')]['Text'];_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x80')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x89')];break;case _0xd482('0x8a'):_0x3bf8c8[_0xd482('0x5a')]['from']='+'+_0x2a841d['body'][_0xd482('0x8b')][0x0]['from'];_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x5a')]=_0x2a841d[_0xd482('0x5a')]['results'][0x0][_0xd482('0x83')];_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x80')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x8b')][0x0]['messageId'];break;case _0xd482('0x8c'):_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')]=_0x2a841d['body'][_0xd482('0x8d')];_0x3bf8c8['body'][_0xd482('0x5a')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x8e')][_0xd482('0x26')];break;case _0xd482('0x8f'):_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x90')];_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x5a')]=_0x2a841d[_0xd482('0x5a')]['text'];_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x80')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x91')];break;case'intelepeer':_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')]=_0x2a841d[_0xd482('0x5a')][_0xd482('0x85')];_0x3bf8c8[_0xd482('0x5a')]['body']=_0x2a841d[_0xd482('0x5a')][_0xd482('0x26')];_0x3bf8c8['body']['messageId']=_0x2a841d[_0xd482('0x5a')]['refid'];break;}}if(_0x3bf8c8[_0xd482('0x5a')]['id']){delete _0x3bf8c8['body']['id'];}if(_[_0xd482('0x92')](_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')])){throw new db['Sequelize'][(_0xd482('0x78'))](_0xd482('0x93'));}if(_[_0xd482('0x92')](_0x3bf8c8[_0xd482('0x5a')]['body'])||_0x3bf8c8['body']['body']===''){throw new db[(_0xd482('0x77'))][(_0xd482('0x78'))](_0xd482('0x94'));}if(_[_0xd482('0x92')](_0x3bf8c8['body'][_0xd482('0x95')])){throw new db['Sequelize'][(_0xd482('0x78'))](_0xd482('0x96')+_0x323ad9);}if(!_['includes'](_0x323ad9,_0x3bf8c8['body']['mapKey'])){throw new db[(_0xd482('0x77'))][(_0xd482('0x78'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x323ad9);}_0x5077cf[_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x95')]]=_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')];return db[_0xd482('0x97')][_0xd482('0x57')]({'where':{'id':_0x3bf8c8[_0xd482('0x74')][_0xd482('0x7d')]},'include':[{'model':db[_0xd482('0x76')],'as':'Contacts','where':_0x5077cf,'limit':0x1,'order':[[_0xd482('0x7c'),'DESC']]}]});})[_0xd482('0x1e')](handleEntityNotFound(_0x31dd91,null))[_0xd482('0x1e')](function(_0x1f7ef7){if(_0x1f7ef7){_0x3bf8c8[_0xd482('0x98')]=_[_0xd482('0x99')](_0x1f7ef7,[_0xd482('0x9a')]);if(_0x1f7ef7[_0xd482('0x9a')][_0xd482('0x41')]){return _0x1f7ef7[_0xd482('0x9a')][0x0];}var _0x394080=_[_0xd482('0x15')](_0x3bf8c8[_0xd482('0x5a')],{'firstName':_0x3bf8c8['body'][_0xd482('0x85')],'ListId':_0x1f7ef7['id']});_0x394080[_0x3bf8c8['body'][_0xd482('0x95')]]=_0x3bf8c8[_0xd482('0x5a')]['from'];return db['CmContact']['create'](_0x394080,{'fields':_0x579853,'raw':!![]});}})['then'](handleEntityNotFound(_0x31dd91,null))[_0xd482('0x1e')](function(_0x11bcd4){if(_0x11bcd4){_0x3bf8c8[_0xd482('0x9b')]=_0x11bcd4;var _0x2c6588={'ContactId':_0x11bcd4['id'],'phone':_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')],'SmsAccountId':_0x2a841d['params']['id']};var _0x2f9c36={'ContactId':_0x11bcd4['id'],'SmsAccountId':_0x2a841d['params']['id'],'closed':![]};return db[_0xd482('0x9c')][_0xd482('0x57')]({'where':_0x2f9c36})['then'](function(_0x24fd59){if(_0x24fd59){return[_0x24fd59,![]];}return db[_0xd482('0x9c')]['create'](_0x2c6588)['then'](function(_0x45bd7f){return[_0x45bd7f,!![]];});});}})['spread'](function(_0x1e9772,_0x459e00){_0x3bf8c8['interaction']=_0x1e9772[_0xd482('0x5c')]({'plain':!![]});_0x3bf8c8[_0xd482('0x9d')][_0xd482('0x9e')]=![];if(_0x459e00){if(_0x3bf8c8[_0xd482('0x74')][_0xd482('0x9f')]){_0x3bf8c8['applications'][_0xd482('0xa0')]({'id':0x0,'priority':_0x3bf8c8['applications'][_0xd482('0x41')]+0x1,'app':_0xd482('0xa1'),'appdata':_0xd482('0xa2'),'interval':_0xd482('0xa3')});}_0x3bf8c8['interaction'][_0xd482('0x9e')]=!![];}return db['SmsMessage'][_0xd482('0x59')]({'phone':_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x85')],'messageId':_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x80')],'body':_0x3bf8c8[_0xd482('0x5a')][_0xd482('0x5a')],'SmsAccountId':_0x2a841d[_0xd482('0x55')]['id'],'SmsInteractionId':_0x1e9772['id'],'direction':'in','ContactId':_0x1e9772['ContactId'],'AttachmentId':_0x3bf8c8[_0xd482('0x5a')][_0xd482('0xa4')]});})['then'](function(_0x4e392f){_0x3bf8c8[_0xd482('0x26')]=_0x4e392f;if(_0x3bf8c8['interaction'][_0xd482('0xa5')]){return db[_0xd482('0xa6')]['find']({'attributes':['id',_0xd482('0x34')],'where':{'id':_0x3bf8c8[_0xd482('0x9d')][_0xd482('0xa5')]}})[_0xd482('0x1e')](function(_0x5c5902){if(_0x5c5902){_0x3bf8c8[_0xd482('0xa7')][_0xd482('0xa8')]({'id':0x0,'priority':0x0,'app':_0xd482('0xa9'),'appdata':_0x5c5902[_0xd482('0x34')]+','+(_0x3bf8c8[_0xd482('0x74')][_0xd482('0xaa')]||0xa),'interval':_0xd482('0xa3')});}return respondWithRpcPromise(_0xd482('0xab'),'startRouting',_0x3bf8c8);});}return respondWithRpcPromise('Start',_0xd482('0xac'),_0x3bf8c8);})[_0xd482('0x1e')](function(_0x2ec9b3){if(_0x2ec9b3){var _0x4a25b4=0xc8;var _0x138770=_0xd482('0xad');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x138770,_0x4a25b4,_0xd482('0xae'));logger[_0xd482('0x21')](_0xd482('0xaf'),_0x138770,_0x4a25b4,_0xd482('0xae'),JSON['stringify'](_0x2ec9b3));if(_0x3bf8c8['account']['type']===_0xd482('0xb0')){return _0x31dd91[_0xd482('0x29')](_0x4a25b4)['set'](_0xd482('0xb1'),_0xd482('0xb2'))[_0xd482('0x35')](_0xd482('0xb3'));}else{return _0x31dd91['status'](_0x4a25b4)[_0xd482('0x2e')](_0x2ec9b3);}}})[_0xd482('0x58')](handleError(_0x31dd91,null));};exports[_0xd482('0xb4')]=function(_0x85ceb1,_0x287e2a,_0x5731){return db[_0xd482('0x56')][_0xd482('0x69')]({'where':{'id':_0x85ceb1['params']['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x287e2a,null))[_0xd482('0x1e')](function(_0x2761f3){if(_0x2761f3){return db[_0xd482('0xb5')][_0xd482('0xb6')](function(_0x45d9ae){return db[_0xd482('0x72')][_0xd482('0x63')]({'where':{'SmsAccountId':_0x85ceb1['params']['id']},'transaction':_0x45d9ae})[_0xd482('0x1e')](function(_0x22713e){var _0x32019a=_[_0xd482('0x4b')](_0x85ceb1[_0xd482('0x5a')],function(_0x2466cb){_0x2466cb[_0xd482('0x66')]=_0x85ceb1['params']['id'];return _0x2466cb;});return db[_0xd482('0x72')][_0xd482('0xb7')](_0x32019a,{'transaction':_0x45d9ae});});})['then'](function(){return db['SmsApplication'][_0xd482('0xb8')]({'where':{'SmsAccountId':_0x85ceb1['params']['id']},'order':'priority'});});}})[_0xd482('0x1e')](respondWithResult(_0x287e2a,null))['catch'](handleError(_0x287e2a,null));};exports[_0xd482('0xb9')]=function(_0x21a0ad,_0xf314e5,_0x5312b9){var _0x4c37fe={};var _0x398540={};var _0x302e35;var _0x14f172;return db[_0xd482('0x56')][_0xd482('0x69')]({'where':{'id':_0x21a0ad[_0xd482('0x55')]['id']}})['then'](handleEntityNotFound(_0xf314e5,null))[_0xd482('0x1e')](function(_0x1cc062){if(_0x1cc062){_0x302e35=_0x1cc062;_0x398540['model']=_[_0xd482('0x3c')](db['SmsApplication']['rawAttributes']);_0x398540[_0xd482('0x39')]=_[_0xd482('0x3c')](_0x21a0ad[_0xd482('0x39')]);_0x398540[_0xd482('0x3d')]=_[_0xd482('0x3f')](_0x398540[_0xd482('0x38')],_0x398540[_0xd482('0x39')]);_0x4c37fe[_0xd482('0x3e')]=_[_0xd482('0x3f')](_0x398540['model'],qs[_0xd482('0x40')](_0x21a0ad['query'][_0xd482('0x40')]));_0x4c37fe['attributes']=_0x4c37fe[_0xd482('0x3e')]['length']?_0x4c37fe[_0xd482('0x3e')]:_0x398540[_0xd482('0x38')];_0x4c37fe[_0xd482('0x6b')]=qs[_0xd482('0x44')](_0x21a0ad[_0xd482('0x39')]['sort']);_0x4c37fe['where']=qs['filters'](_[_0xd482('0x45')](_0x21a0ad[_0xd482('0x39')],_0x398540[_0xd482('0x3d')]));if(_0x21a0ad[_0xd482('0x39')][_0xd482('0x4a')]){_0x4c37fe[_0xd482('0x49')]=_[_0xd482('0x48')](_0x4c37fe[_0xd482('0x49')],{'$or':_[_0xd482('0x4b')](_0x4c37fe[_0xd482('0x3e')],function(_0x1423a6){var _0x9911c2={};_0x9911c2[_0x1423a6]={'$like':'%'+_0x21a0ad[_0xd482('0x39')]['filter']+'%'};return _0x9911c2;})});}_0x4c37fe=_[_0xd482('0x48')]({},_0x4c37fe,_0x21a0ad[_0xd482('0x4f')]);return _0x302e35[_0xd482('0xb9')](_0x4c37fe);}})[_0xd482('0x1e')](function(_0x66bd23){if(_0x66bd23){_0x14f172=_0x66bd23[_0xd482('0x41')];if(!_0x21a0ad[_0xd482('0x39')][_0xd482('0x6a')](_0xd482('0x42'))){_0x4c37fe[_0xd482('0x43')]=qs[_0xd482('0x43')](_0x21a0ad[_0xd482('0x39')]['limit']);_0x4c37fe['offset']=qs[_0xd482('0x2b')](_0x21a0ad[_0xd482('0x39')]['offset']);}return _0x302e35[_0xd482('0xb9')](_0x4c37fe);}})[_0xd482('0x1e')](function(_0x16b267){if(_0x16b267){return _0x16b267?{'count':_0x14f172,'rows':_0x16b267}:null;}})[_0xd482('0x1e')](respondWithResult(_0xf314e5,null))['catch'](handleError(_0xf314e5,null));};exports[_0xd482('0xba')]=function(_0x1cd04c,_0x58b760,_0x419874){var _0x9ea762={'raw':![],'where':{}};var _0x43b309={};var _0x32a96c={'count':0x0,'rows':[]};return db[_0xd482('0x56')][_0xd482('0x69')]({'where':{'id':_0x1cd04c[_0xd482('0x55')]['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x58b760,null))[_0xd482('0x1e')](function(_0x5f4d72){if(_0x5f4d72){_0x43b309[_0xd482('0x38')]=_[_0xd482('0x3c')](db[_0xd482('0x9c')][_0xd482('0x37')]);_0x43b309['query']=_[_0xd482('0x3c')](_0x1cd04c[_0xd482('0x39')]);_0x43b309['filters']=_[_0xd482('0x3f')](_0x43b309[_0xd482('0x38')],_0x43b309[_0xd482('0x39')]);_0x9ea762['attributes']=_[_0xd482('0x3f')](_0x43b309[_0xd482('0x38')],qs[_0xd482('0x40')](_0x1cd04c[_0xd482('0x39')][_0xd482('0x40')]));_0x9ea762[_0xd482('0x3e')]=_0x9ea762['attributes'][_0xd482('0x41')]?_0x9ea762[_0xd482('0x3e')]:_0x43b309['model'];if(!_0x1cd04c[_0xd482('0x39')][_0xd482('0x6a')]('nolimit')){_0x9ea762[_0xd482('0x43')]=qs['limit'](_0x1cd04c[_0xd482('0x39')][_0xd482('0x43')]);_0x9ea762[_0xd482('0x2b')]=qs[_0xd482('0x2b')](_0x1cd04c[_0xd482('0x39')][_0xd482('0x2b')]);}_0x9ea762[_0xd482('0x6b')]=qs['sort'](_0x1cd04c['query'][_0xd482('0x44')]);_0x9ea762[_0xd482('0x49')]=qs[_0xd482('0x3d')](_[_0xd482('0x45')](_0x1cd04c[_0xd482('0x39')],_0x43b309[_0xd482('0x3d')]));_0x9ea762[_0xd482('0x49')][_0xd482('0x66')]=_0x5f4d72['id'];if(_0x1cd04c[_0xd482('0x39')][_0xd482('0x4a')]){_0x9ea762[_0xd482('0x49')]=_[_0xd482('0x48')](_0x9ea762[_0xd482('0x49')],{'$or':_['map'](_0x9ea762[_0xd482('0x3e')],function(_0x139c72){var _0x1539cd={};_0x1539cd[_0x139c72]={'$like':'%'+_0x1cd04c[_0xd482('0x39')][_0xd482('0x4a')]+'%'};return _0x1539cd;})});}_0x9ea762=_['merge']({},_0x9ea762,_0x1cd04c[_0xd482('0x4f')]);return db[_0xd482('0x9c')]['count']({'where':_0x9ea762[_0xd482('0x49')]})[_0xd482('0x1e')](function(_0x3515af){_0x32a96c[_0xd482('0x2a')]=_0x3515af;if(_0x1cd04c[_0xd482('0x39')][_0xd482('0x50')]){_0x9ea762[_0xd482('0x51')]=[{'model':db['CmContact'],'as':_0xd482('0xbb'),'required':![]},{'model':db[_0xd482('0xa6')],'as':'Owner','attributes':[_0xd482('0x34'),_0xd482('0xbc'),_0xd482('0xbd')],'required':![]},{'model':db[_0xd482('0xbe')],'as':_0xd482('0xbf'),'attributes':['id',_0xd482('0x34'),'color'],'where':_0x1cd04c[_0xd482('0x39')][_0xd482('0xc0')]?{'id':_0x1cd04c[_0xd482('0x39')]['tag']}:undefined,'required':_0x1cd04c[_0xd482('0x39')][_0xd482('0xc0')]?!![]:![]}];}return db[_0xd482('0x9c')][_0xd482('0x52')](_0x9ea762);})[_0xd482('0x1e')](function(_0x4304ed){_0x32a96c[_0xd482('0x53')]=_0x4304ed;return _0x32a96c;});}})['then'](respondWithFilteredResult(_0x58b760,_0x9ea762))[_0xd482('0x58')](handleError(_0x58b760,null));};exports[_0xd482('0x35')]=function(_0x531076,_0x2a88b7,_0x379e54){var _0x11f7a0,_0x571678,_0x20b25e;if(_['isNil'](_0x531076[_0xd482('0x5a')][_0xd482('0x5a')])||_0x531076[_0xd482('0x5a')][_0xd482('0x5a')]===''){throw new db['Sequelize'][(_0xd482('0x78'))](_0xd482('0x94'));}if(_[_0xd482('0x92')](_0x531076[_0xd482('0x5a')]['to'])){throw new db['Sequelize'][(_0xd482('0x78'))](_0xd482('0xc1'));}_0x11f7a0=_0x531076['body']['to'];return db[_0xd482('0x56')]['find']({'where':{'id':_0x531076[_0xd482('0x55')]['id']},'include':[{'model':db[_0xd482('0x97')],'as':_0xd482('0xc2'),'include':[{'model':db[_0xd482('0x76')],'as':_0xd482('0x9a'),'where':{'mobile':_0x11f7a0},'limit':0x1,'order':[[_0xd482('0x7c'),'DESC']]}]}]})[_0xd482('0x1e')](handleEntityNotFound(_0x2a88b7,null))[_0xd482('0x1e')](function(_0x47490e){if(_0x47490e&&_0x47490e[_0xd482('0xc2')]){_0x571678=_0x47490e['get']({'plain':!![]});if(_0x571678[_0xd482('0xc2')]&&_0x571678[_0xd482('0xc2')][_0xd482('0x9a')][_0xd482('0x41')]){return _0x571678['List'][_0xd482('0x9a')][0x0];}return db['CmContact'][_0xd482('0x59')](_[_0xd482('0x15')](_0x531076[_0xd482('0x5a')],{'firstName':_0x11f7a0,'mobile':_0x11f7a0,'phone':_0x11f7a0,'ListId':_0x571678[_0xd482('0x7d')]}));}})['then'](handleEntityNotFound(_0x2a88b7,null))['then'](function(_0xc9e458){if(_0xc9e458){_0x20b25e=_0xc9e458;return db[_0xd482('0x9c')][_0xd482('0x57')]({'where':{'ContactId':_0x20b25e['id'],'closed':![],'SmsAccountId':_0x571678['id']}})['then'](function(_0x4e2e37){if(_0x4e2e37){return[_0x4e2e37,![]];}return db[_0xd482('0x9c')]['create']({'UserId':_0x531076['user']['id'],'ContactId':_0x20b25e['id'],'SmsAccountId':_0x571678['id'],'phone':_0x11f7a0,'firstMsgDirection':'out','Messages':[_[_0xd482('0x48')](_0x531076[_0xd482('0x5a')],{'read':![],'body':_0x531076[_0xd482('0x5a')]['body'],'phone':_0x11f7a0,'SmsAccountId':_0x571678['id'],'UserId':_0x531076[_0xd482('0x5b')]['id'],'ContactId':_0x20b25e['id']})]},{'include':[{'model':db[_0xd482('0xc3')],'as':_0xd482('0xc4')}]})[_0xd482('0x1e')](function(_0x2f001){return[_0x2f001,!![]];});});}})[_0xd482('0xc5')](function(_0x763972,_0x5cab45){if(_0x5cab45){return _0x763972;}return db[_0xd482('0xc3')][_0xd482('0x59')](_[_0xd482('0x48')](_0x531076[_0xd482('0x5a')],{'read':![],'body':_0x531076[_0xd482('0x5a')][_0xd482('0x5a')],'phone':_0x11f7a0,'SmsAccountId':_0x571678['id'],'SmsInteractionId':_0x763972['id'],'UserId':_0x531076[_0xd482('0x5b')]['id'],'ContactId':_0x20b25e['id']}))[_0xd482('0x1e')](function(_0x3b0a9c){_0x763972[_0xd482('0xc6')]['Messages']=[];_0x763972['dataValues'][_0xd482('0xc4')][_0xd482('0xa0')](_0x3b0a9c[_0xd482('0xc6')]);return _0x763972;});})[_0xd482('0x1e')](respondWithResult(_0x2a88b7,null))[_0xd482('0x58')](handleError(_0x2a88b7,null));};exports[_0xd482('0x29')]=function(_0x1b2908,_0x268916,_0x29b188){if(_0x1b2908[_0xd482('0x5a')]['id']){delete _0x1b2908[_0xd482('0x5a')]['id'];}console[_0xd482('0xc7')](_0xd482('0xc8'),_0x1b2908[_0xd482('0x5a')]);var _0xe56046,_0x45dd25,_0x9797bb;return db[_0xd482('0x56')][_0xd482('0x57')]({'where':{'id':_0x1b2908['params']['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x268916,null))[_0xd482('0x1e')](function(_0x139c08){if(_0x139c08){_0x9797bb=_0x139c08;logger[_0xd482('0x21')](_0xd482('0x22'),_0xd482('0x29'),_0xd482('0xc9'),_0x139c08[_0xd482('0x4c')],util['inspect'](_0x1b2908[_0xd482('0x5a')],{'showHidden':![],'depth':null}));switch(_0x139c08[_0xd482('0x4c')]){case'skebby':if(_0x1b2908[_0xd482('0x5a')][_0xd482('0xca')]&&_0x1b2908[_0xd482('0x5a')][_0xd482('0x29')]){_0x45dd25=_0x1b2908['body'][_0xd482('0x29')];return db['SmsMessage'][_0xd482('0x57')]({'where':{'messageId':_0x1b2908['body']['skebby_dispatch_id']}});}break;case'connectel':if(_0x1b2908[_0xd482('0x5a')][_0xd482('0xcb')]&&_0x1b2908['body'][_0xd482('0xcc')]){_0x45dd25=_0x1b2908[_0xd482('0x5a')][_0xd482('0xcc')];return db['SmsMessage'][_0xd482('0x57')]({'where':{'messageId':_0x1b2908['body']['requestid']}});}break;case _0xd482('0x86'):if(_0x1b2908[_0xd482('0x5a')]['message_id']&&_0x1b2908[_0xd482('0x5a')][_0xd482('0xcd')]){_0x45dd25=_0x1b2908[_0xd482('0x5a')][_0xd482('0xcd')];return db[_0xd482('0xc3')][_0xd482('0x57')]({'where':{'messageId':_0x1b2908[_0xd482('0x5a')][_0xd482('0x87')]}});}break;case _0xd482('0x8a'):var _0x2531b0=_0x1b2908[_0xd482('0x5a')]['results'][0x0];if(_0x2531b0[_0xd482('0x80')]&&_0x2531b0[_0xd482('0x29')][_0xd482('0xce')]==='DELIVERED'){_0x45dd25=_0x2531b0[_0xd482('0x29')][_0xd482('0xce')];return db['SmsMessage']['find']({'where':{'messageId':_0x2531b0[_0xd482('0x80')]}});}break;case _0xd482('0x8f'):if(_0x1b2908['body'][_0xd482('0x80')]&&_0x1b2908['body']['status']){_0x45dd25=_0x1b2908[_0xd482('0x5a')]['status'];return db[_0xd482('0xc3')][_0xd482('0x57')]({'where':{'messageId':_0x1b2908['body'][_0xd482('0x80')]}});}break;case _0xd482('0xcf'):if(_0x1b2908[_0xd482('0x5a')][_0xd482('0xd0')]&&_0x1b2908['body'][_0xd482('0x29')]){_0x45dd25=_0x1b2908[_0xd482('0x5a')][_0xd482('0x29')];return db[_0xd482('0xc3')]['find']({'where':{'messageId':_0x1b2908['body'][_0xd482('0xd0')]}});}break;}}})[_0xd482('0x1e')](handleEntityNotFound(_0x268916,null))[_0xd482('0x1e')](function(_0x4b006d){if(_0x4b006d){_0xe56046=_0x4b006d;switch(_0x9797bb[_0xd482('0x4c')]){case _0xd482('0x81'):if(_0x45dd25===_0xd482('0xd1')){return _0xe56046[_0xd482('0x31')]({'read':!![]});}else{logger[_0xd482('0x24')](_0xd482('0x22'),'status',_0xd482('0x81'),util[_0xd482('0xd2')](_0x1b2908[_0xd482('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xd482('0x84'):if(_0x45dd25==='1'){return _0xe56046[_0xd482('0x31')]({'read':!![]});}else{logger[_0xd482('0x24')](_0xd482('0x22'),_0xd482('0x29'),_0xd482('0x81'),util[_0xd482('0xd2')](_0x1b2908[_0xd482('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xd482('0x86'):if(!_0x1b2908['body'][_0xd482('0xd3')]&&_0x45dd25>=0xc8&&_0x45dd25<=0xce){return _0xe56046[_0xd482('0x31')]({'read':!![]});}else{logger[_0xd482('0x24')](_0xd482('0x22'),_0xd482('0x29'),_0xd482('0x86'),util['inspect'](_0x1b2908[_0xd482('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xd482('0x8a'):var _0x4b1176=_0x1b2908[_0xd482('0x5a')]['results'][0x0];if(_0x4b1176[_0xd482('0x29')]['groupName']===_0xd482('0xd1')){return _0xe56046['update']({'read':!![]});}else{logger[_0xd482('0x24')](_0xd482('0x22'),'status',_0xd482('0x8a'),util[_0xd482('0xd2')](_0x1b2908[_0xd482('0x5a')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x45dd25==_0xd482('0xd4')||_0x45dd25==_0xd482('0xd5')){return _0xe56046[_0xd482('0x31')]({'read':!![]});}else{logger[_0xd482('0x24')](_0xd482('0x22'),_0xd482('0x29'),'clickatell',util[_0xd482('0xd2')](_0x1b2908[_0xd482('0x5a')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x45dd25==='DELIVRD'||_0x45dd25===_0xd482('0xd6')){return _0xe56046[_0xd482('0x31')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xd482('0xcf'),util[_0xd482('0xd2')](_0x1b2908[_0xd482('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0xe56046;}})[_0xd482('0x1e')](respondWithResult(_0x268916,null))['catch'](handleError(_0x268916,null));};exports['statusGet']=function(_0x77df9a,_0x124372,_0x38a88d){var _0x1920bb,_0x1224cc,_0x4df427;return db[_0xd482('0x56')]['find']({'where':{'id':_0x77df9a[_0xd482('0x55')]['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x124372,null))['then'](function(_0x2c601d){if(_0x2c601d){_0x4df427=_0x2c601d;logger[_0xd482('0x21')](_0xd482('0x22'),'status','received\x20delivery\x20report\x20from',_0x2c601d[_0xd482('0x4c')],util[_0xd482('0xd2')](_0x77df9a[_0xd482('0x39')],{'showHidden':![],'depth':null}));switch(_0x2c601d['type']){case _0xd482('0x8c'):if(_0x77df9a[_0xd482('0x39')][_0xd482('0xd7')]&&_0x77df9a[_0xd482('0x39')][_0xd482('0xd8')]){_0x1224cc=_0x77df9a[_0xd482('0x39')][_0xd482('0xd8')];return db[_0xd482('0xc3')][_0xd482('0x57')]({'where':{'messageId':_0x77df9a[_0xd482('0x39')][_0xd482('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x124372,null))['then'](function(_0x53680c){if(_0x53680c){_0x1920bb=_0x53680c;switch(_0x4df427['type']){case'csc':if(_0x1224cc==='2'||_0x1224cc==='6'){return _0x1920bb[_0xd482('0x31')]({'read':!![]});}else{logger[_0xd482('0x24')](_0xd482('0x22'),_0xd482('0x29'),_0xd482('0x8c'),util[_0xd482('0xd2')](_0x77df9a[_0xd482('0x39')],{'showHidden':![],'depth':null}));};break;}return _0x1920bb;}})['then'](respondWithResult(_0x124372,null))['catch'](handleError(_0x124372,null));};exports['addAgents']=function(_0xc494f9,_0x25213c,_0x2ffbf2){return db[_0xd482('0x56')][_0xd482('0x57')]({'where':{'id':_0xc494f9['params']['id']}})['then'](handleEntityNotFound(_0x25213c,null))['then'](function(_0x1b9807){if(_0x1b9807){return _0x1b9807['addAgents'](_0xc494f9[_0xd482('0x5a')]['ids'],_[_0xd482('0x99')](_0xc494f9[_0xd482('0x5a')],['ids','id'])||{})[_0xd482('0xc5')](function(_0x4d70c0){for(var _0x564b7b=0x0;_0x564b7b<_0xc494f9['body'][_0xd482('0x71')]['length'];_0x564b7b+=0x1){socket['emit'](_0xd482('0xd9'),{'UserId':_0xc494f9[_0xd482('0x5a')][_0xd482('0x71')][_0x564b7b],'SmsAccountId':_0xc494f9[_0xd482('0x55')]['id']});}return _0x4d70c0;});}})['then'](respondWithResult(_0x25213c,null))['catch'](handleError(_0x25213c,null));};exports[_0xd482('0xda')]=function(_0x17e017,_0xd947,_0x156bba){var _0x1a2f1d;return db[_0xd482('0x56')][_0xd482('0x57')]({'where':{'id':_0x17e017[_0xd482('0x55')]['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0xd947,null))[_0xd482('0x1e')](function(_0xc1fe41){if(_0xc1fe41){return _0xc1fe41[_0xd482('0xda')](_0x17e017[_0xd482('0x39')][_0xd482('0x71')])['then'](function(_0x311e65){if(_[_0xd482('0xdb')](_0x17e017[_0xd482('0x39')][_0xd482('0x71')])){for(var _0x231dd=0x0;_0x231dd<_0x17e017[_0xd482('0x39')]['ids'][_0xd482('0x41')];_0x231dd+=0x1){socket[_0xd482('0xdc')](_0xd482('0xdd'),{'UserId':_0x17e017['query']['ids'][_0x231dd],'SmsAccountId':_0x17e017[_0xd482('0x55')]['id']});}}else{socket[_0xd482('0xdc')](_0xd482('0xdd'),{'UserId':_0x17e017[_0xd482('0x39')]['ids'],'SmsAccountId':_0x17e017[_0xd482('0x55')]['id']});}});}})[_0xd482('0x1e')](respondWithStatusCode(_0xd947,null))['catch'](handleError(_0xd947,null));};exports[_0xd482('0xde')]=function(_0x2d931e,_0x38767c,_0x1dccb8){var _0x43ab22={};var _0x3e2eea={};var _0x361b3e;var _0x2ab4de;return db['SmsAccount'][_0xd482('0x69')]({'where':{'id':_0x2d931e['params']['id']}})[_0xd482('0x1e')](handleEntityNotFound(_0x38767c,null))[_0xd482('0x1e')](function(_0x24ca2c){if(_0x24ca2c){_0x361b3e=_0x24ca2c;_0x3e2eea[_0xd482('0x38')]=_[_0xd482('0x3c')](db[_0xd482('0xa6')][_0xd482('0x37')]);_0x3e2eea[_0xd482('0x39')]=_[_0xd482('0x3c')](_0x2d931e[_0xd482('0x39')]);_0x3e2eea[_0xd482('0x3d')]=_[_0xd482('0x3f')](_0x3e2eea[_0xd482('0x38')],_0x3e2eea[_0xd482('0x39')]);_0x43ab22['attributes']=_['intersection'](_0x3e2eea[_0xd482('0x38')],qs[_0xd482('0x40')](_0x2d931e[_0xd482('0x39')][_0xd482('0x40')]));_0x43ab22[_0xd482('0x3e')]=_0x43ab22[_0xd482('0x3e')][_0xd482('0x41')]?_0x43ab22[_0xd482('0x3e')]:_0x3e2eea[_0xd482('0x38')];_0x43ab22['order']=qs[_0xd482('0x44')](_0x2d931e['query']['sort']);_0x43ab22['where']=qs[_0xd482('0x3d')](_['pick'](_0x2d931e[_0xd482('0x39')],_0x3e2eea[_0xd482('0x3d')]));if(_0x2d931e[_0xd482('0x39')]['filter']){_0x43ab22['where']=_['merge'](_0x43ab22[_0xd482('0x49')],{'$or':_[_0xd482('0x4b')](_0x43ab22[_0xd482('0x3e')],function(_0x4dc176){var _0x1cbc08={};_0x1cbc08[_0x4dc176]={'$like':'%'+_0x2d931e['query'][_0xd482('0x4a')]+'%'};return _0x1cbc08;})});}_0x43ab22=_[_0xd482('0x48')]({},_0x43ab22,_0x2d931e[_0xd482('0x4f')]);return _0x361b3e[_0xd482('0xde')](_0x43ab22);}})[_0xd482('0x1e')](function(_0x3e7610){if(_0x3e7610){_0x2ab4de=_0x3e7610[_0xd482('0x41')];if(!_0x2d931e['query']['hasOwnProperty']('nolimit')){_0x43ab22[_0xd482('0x43')]=qs[_0xd482('0x43')](_0x2d931e[_0xd482('0x39')][_0xd482('0x43')]);_0x43ab22['offset']=qs[_0xd482('0x2b')](_0x2d931e[_0xd482('0x39')]['offset']);}return _0x361b3e[_0xd482('0xde')](_0x43ab22);}})['then'](function(_0x303fae){if(_0x303fae){return _0x303fae?{'count':_0x2ab4de,'rows':_0x303fae}:null;}})[_0xd482('0x1e')](respondWithResult(_0x38767c,null))['catch'](handleError(_0x38767c,null));};
\ No newline at end of file
index 25a38b3..d6db4ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x939f=['setMaxListeners','save','remove','emit','events','../../mysqldb'];(function(_0x5447f6,_0xf0816b){var _0x3618b7=function(_0x2c1872){while(--_0x2c1872){_0x5447f6['push'](_0x5447f6['shift']());}};_0x3618b7(++_0xf0816b);}(_0x939f,0x1e4));var _0xf939=function(_0x144c0c,_0x113cfe){_0x144c0c=_0x144c0c-0x0;var _0x436221=_0x939f[_0x144c0c];return _0x436221;};'use strict';var EventEmitter=require(_0xf939('0x0'));var SmsAccount=require(_0xf939('0x1'))['db']['SmsAccount'];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xf939('0x2')](0x0);var events={'afterCreate':_0xf939('0x3'),'afterUpdate':'update','afterDestroy':_0xf939('0x4')};function emitEvent(_0x56e63d){return function(_0x564226,_0x38b964,_0x1c9fab){SmsAccountEvents[_0xf939('0x5')](_0x56e63d+':'+_0x564226['id'],_0x564226);SmsAccountEvents[_0xf939('0x5')](_0x56e63d,_0x564226);_0x1c9fab(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0x4e84=['save','update','remove','emit','exports','events','../../mysqldb','SmsAccount','setMaxListeners'];(function(_0x3679a4,_0x1ecf8c){var _0x33b025=function(_0x55ce1d){while(--_0x55ce1d){_0x3679a4['push'](_0x3679a4['shift']());}};_0x33b025(++_0x1ecf8c);}(_0x4e84,0x11c));var _0x44e8=function(_0x32e8f0,_0x34abef){_0x32e8f0=_0x32e8f0-0x0;var _0x502551=_0x4e84[_0x32e8f0];return _0x502551;};'use strict';var EventEmitter=require(_0x44e8('0x0'));var SmsAccount=require(_0x44e8('0x1'))['db'][_0x44e8('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x44e8('0x3')](0x0);var events={'afterCreate':_0x44e8('0x4'),'afterUpdate':_0x44e8('0x5'),'afterDestroy':_0x44e8('0x6')};function emitEvent(_0x1709bf){return function(_0x26f7d8,_0x56bdd0,_0x2fdad4){SmsAccountEvents['emit'](_0x1709bf+':'+_0x26f7d8['id'],_0x26f7d8);SmsAccountEvents[_0x44e8('0x7')](_0x1709bf,_0x26f7d8);_0x2fdad4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x44e8('0x8')]=SmsAccountEvents;
\ No newline at end of file
index 56f5551..b8a7dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cfa=['../../config/logger','SmsAccount','sms_accounts','lodash'];(function(_0x34290a,_0x1765af){var _0x12e0e6=function(_0x2eb9fd){while(--_0x2eb9fd){_0x34290a['push'](_0x34290a['shift']());}};_0x12e0e6(++_0x1765af);}(_0x5cfa,0x12b));var _0xa5cf=function(_0x4dc87d,_0x24833e){_0x4dc87d=_0x4dc87d-0x0;var _0x27c2f8=_0x5cfa[_0x4dc87d];return _0x27c2f8;};'use strict';var _=require(_0xa5cf('0x0'));var util=require('util');var logger=require(_0xa5cf('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require('./smsAccount.attributes');module['exports']=function(_0x2c3541,_0x116e89){return _0x2c3541['define'](_0xa5cf('0x2'),attributes,{'tableName':_0xa5cf('0x3'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x98c5=['exports','define','SmsAccount','lodash','util','../../config/logger','moment','request-promise'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x98c5,0xeb));var _0x598c=function(_0xb94c8e,_0x36c697){_0xb94c8e=_0xb94c8e-0x0;var _0x2097c8=_0x98c5[_0xb94c8e];return _0x2097c8;};'use strict';var _=require(_0x598c('0x0'));var util=require(_0x598c('0x1'));var logger=require(_0x598c('0x2'))('api');var moment=require(_0x598c('0x3'));var BPromise=require('bluebird');var rp=require(_0x598c('0x4'));var attributes=require('./smsAccount.attributes');module[_0x598c('0x5')]=function(_0x2bb78a,_0x51911a){return _0x2bb78a[_0x598c('0x6')](_0x598c('0x7'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 44f329e..2705629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29d2=['bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','redis','socket.io-emitter','register','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','model','map','debug','lodash','util'];(function(_0x4871c3,_0xa4b21a){var _0xf2ec7c=function(_0x4a593d){while(--_0x4a593d){_0x4871c3['push'](_0x4871c3['shift']());}};_0xf2ec7c(++_0xa4b21a);}(_0x29d2,0x152));var _0x229d=function(_0x505eb9,_0x3abdc1){_0x505eb9=_0x505eb9-0x0;var _0x3ac1bf=_0x29d2[_0x505eb9];return _0x3ac1bf;};'use strict';var _=require(_0x229d('0x0'));var util=require(_0x229d('0x1'));var moment=require('moment');var BPromise=require(_0x229d('0x2'));var rs=require(_0x229d('0x3'));var fs=require('fs');var Redis=require(_0x229d('0x4'));var db=require(_0x229d('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x229d('0x6'));var config=require('../../config/environment');var jayson=require(_0x229d('0x7'));var client=jayson[_0x229d('0x8')]['http']({'port':0x232a});config[_0x229d('0x9')]=_['defaults'](config[_0x229d('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x229d('0xa'))(new Redis(config['redis']));require('./smsAccount.socket')[_0x229d('0xb')](socket);function respondWithRpcPromise(_0x48e32f,_0x4f6a56,_0x108d42){return new BPromise(function(_0x53a814,_0x6ff8b0){return client[_0x229d('0xc')](_0x48e32f,_0x108d42)[_0x229d('0xd')](function(_0x20b7b5){logger['info'](_0x229d('0xe'),_0x4f6a56,_0x229d('0xf'));logger['debug'](_0x229d('0x10'),_0x4f6a56,_0x229d('0xf'),JSON[_0x229d('0x11')](_0x20b7b5));if(_0x20b7b5[_0x229d('0x12')]){if(_0x20b7b5[_0x229d('0x12')][_0x229d('0x13')]===0x1f4){logger[_0x229d('0x12')](_0x229d('0xe'),_0x4f6a56,_0x20b7b5[_0x229d('0x12')]['message']);return _0x6ff8b0(_0x20b7b5[_0x229d('0x12')][_0x229d('0x14')]);}logger['error'](_0x229d('0xe'),_0x4f6a56,_0x20b7b5[_0x229d('0x12')]['message']);return _0x53a814(_0x20b7b5[_0x229d('0x12')][_0x229d('0x14')]);}else{logger[_0x229d('0x15')](_0x229d('0xe'),_0x4f6a56,_0x229d('0xf'));_0x53a814(_0x20b7b5['result']['message']);}})[_0x229d('0x16')](function(_0x8de9d1){logger[_0x229d('0x12')]('SmsAccount,\x20%s,\x20%s',_0x4f6a56,_0x8de9d1);_0x6ff8b0(_0x8de9d1);});});}exports[_0x229d('0x17')]=function(_0x171f8d){var _0x5c3d96=this;return new Promise(function(_0x61d6ea,_0x372fb2){return db[_0x229d('0x18')][_0x229d('0x19')]({'raw':_0x171f8d[_0x229d('0x1a')]?_0x171f8d['options'][_0x229d('0x1b')]===undefined?!![]:![]:!![],'where':_0x171f8d['options']?_0x171f8d[_0x229d('0x1a')][_0x229d('0x1c')]||null:null,'attributes':_0x171f8d[_0x229d('0x1a')]?_0x171f8d['options'][_0x229d('0x1d')]||null:null,'include':_0x171f8d[_0x229d('0x1a')]?_0x171f8d[_0x229d('0x1a')][_0x229d('0x1e')]?_['map'](_0x171f8d['options'][_0x229d('0x1e')],function(_0x51e52d){return{'model':db[_0x51e52d[_0x229d('0x1f')]],'as':_0x51e52d['as'],'attributes':_0x51e52d[_0x229d('0x1d')],'include':_0x51e52d[_0x229d('0x1e')]?_[_0x229d('0x20')](_0x51e52d[_0x229d('0x1e')],function(_0x52be7a){return{'model':db[_0x52be7a[_0x229d('0x1f')]],'as':_0x52be7a['as'],'attributes':_0x52be7a[_0x229d('0x1d')],'include':_0x52be7a[_0x229d('0x1e')]?_[_0x229d('0x20')](_0x52be7a['include'],function(_0x9435b4){return{'model':db[_0x9435b4['model']],'as':_0x9435b4['as'],'attributes':_0x9435b4[_0x229d('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x229d('0xd')](function(_0x39d487){logger[_0x229d('0x15')]('ShowSmsAccount',_0x171f8d);logger[_0x229d('0x21')](_0x229d('0x17'),_0x171f8d,JSON[_0x229d('0x11')](_0x39d487));_0x61d6ea(_0x39d487);})[_0x229d('0x16')](function(_0x332b50){logger[_0x229d('0x12')](_0x229d('0x17'),_0x332b50[_0x229d('0x14')],_0x171f8d);_0x372fb2(_0x5c3d96['error'](0x1f4,_0x332b50[_0x229d('0x14')]));});});};
\ No newline at end of file
+var _0x0b08=['info','request\x20sent','debug','error','message','SmsAccount,\x20%s,\x20%s','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','map','model','stringify','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','register','request','then'];(function(_0x1930ff,_0x40c327){var _0x5d5eb0=function(_0x517263){while(--_0x517263){_0x1930ff['push'](_0x1930ff['shift']());}};_0x5d5eb0(++_0x40c327);}(_0x0b08,0x171));var _0x80b0=function(_0x55fa5c,_0x30bd41){_0x55fa5c=_0x55fa5c-0x0;var _0xea802f=_0x0b08[_0x55fa5c];return _0xea802f;};'use strict';var _=require(_0x80b0('0x0'));var util=require('util');var moment=require(_0x80b0('0x1'));var BPromise=require('bluebird');var rs=require(_0x80b0('0x2'));var fs=require('fs');var Redis=require(_0x80b0('0x3'));var db=require(_0x80b0('0x4'))['db'];var utils=require(_0x80b0('0x5'));var logger=require(_0x80b0('0x6'))('rpc');var config=require(_0x80b0('0x7'));var jayson=require(_0x80b0('0x8'));var client=jayson['client'][_0x80b0('0x9')]({'port':0x232a});config['redis']=_[_0x80b0('0xa')](config[_0x80b0('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x80b0('0xc'))(new Redis(config[_0x80b0('0xb')]));require('./smsAccount.socket')[_0x80b0('0xd')](socket);function respondWithRpcPromise(_0x5495e4,_0x2bc94b,_0x38c286){return new BPromise(function(_0x3ef9ed,_0x4beb1b){return client[_0x80b0('0xe')](_0x5495e4,_0x38c286)[_0x80b0('0xf')](function(_0x372801){logger[_0x80b0('0x10')]('SmsAccount,\x20%s,\x20%s',_0x2bc94b,_0x80b0('0x11'));logger[_0x80b0('0x12')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2bc94b,_0x80b0('0x11'),JSON['stringify'](_0x372801));if(_0x372801[_0x80b0('0x13')]){if(_0x372801[_0x80b0('0x13')]['code']===0x1f4){logger['error']('SmsAccount,\x20%s,\x20%s',_0x2bc94b,_0x372801['error'][_0x80b0('0x14')]);return _0x4beb1b(_0x372801['error'][_0x80b0('0x14')]);}logger[_0x80b0('0x13')](_0x80b0('0x15'),_0x2bc94b,_0x372801['error'][_0x80b0('0x14')]);return _0x3ef9ed(_0x372801[_0x80b0('0x13')][_0x80b0('0x14')]);}else{logger['info'](_0x80b0('0x15'),_0x2bc94b,_0x80b0('0x11'));_0x3ef9ed(_0x372801[_0x80b0('0x16')][_0x80b0('0x14')]);}})[_0x80b0('0x17')](function(_0xb09558){logger['error'](_0x80b0('0x15'),_0x2bc94b,_0xb09558);_0x4beb1b(_0xb09558);});});}exports[_0x80b0('0x18')]=function(_0x14bf6e){var _0xe708f1=this;return new Promise(function(_0x2058c9,_0x353867){return db[_0x80b0('0x19')][_0x80b0('0x1a')]({'raw':_0x14bf6e[_0x80b0('0x1b')]?_0x14bf6e[_0x80b0('0x1b')][_0x80b0('0x1c')]===undefined?!![]:![]:!![],'where':_0x14bf6e['options']?_0x14bf6e[_0x80b0('0x1b')][_0x80b0('0x1d')]||null:null,'attributes':_0x14bf6e['options']?_0x14bf6e[_0x80b0('0x1b')][_0x80b0('0x1e')]||null:null,'include':_0x14bf6e[_0x80b0('0x1b')]?_0x14bf6e[_0x80b0('0x1b')][_0x80b0('0x1f')]?_[_0x80b0('0x20')](_0x14bf6e[_0x80b0('0x1b')][_0x80b0('0x1f')],function(_0xefc3c1){return{'model':db[_0xefc3c1[_0x80b0('0x21')]],'as':_0xefc3c1['as'],'attributes':_0xefc3c1[_0x80b0('0x1e')],'include':_0xefc3c1[_0x80b0('0x1f')]?_[_0x80b0('0x20')](_0xefc3c1[_0x80b0('0x1f')],function(_0x1a34c8){return{'model':db[_0x1a34c8['model']],'as':_0x1a34c8['as'],'attributes':_0x1a34c8['attributes'],'include':_0x1a34c8[_0x80b0('0x1f')]?_[_0x80b0('0x20')](_0x1a34c8[_0x80b0('0x1f')],function(_0x117823){return{'model':db[_0x117823['model']],'as':_0x117823['as'],'attributes':_0x117823[_0x80b0('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x561a5){logger[_0x80b0('0x10')](_0x80b0('0x18'),_0x14bf6e);logger[_0x80b0('0x12')](_0x80b0('0x18'),_0x14bf6e,JSON[_0x80b0('0x22')](_0x561a5));_0x2058c9(_0x561a5);})['catch'](function(_0x4a23d8){logger[_0x80b0('0x13')]('ShowSmsAccount',_0x4a23d8[_0x80b0('0x14')],_0x14bf6e);_0x353867(_0xe708f1[_0x80b0('0x13')](0x1f4,_0x4a23d8[_0x80b0('0x14')]));});});};
\ No newline at end of file
index 0d4e7cb..0ca3e0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7788=['update','removeListener','register','./smsAccount.events'];(function(_0xda464c,_0x26e47d){var _0x19e222=function(_0x1ec605){while(--_0x1ec605){_0xda464c['push'](_0xda464c['shift']());}};_0x19e222(++_0x26e47d);}(_0x7788,0x15b));var _0x8778=function(_0x3303fb,_0x1266dd){_0x3303fb=_0x3303fb-0x0;var _0x71a686=_0x7788[_0x3303fb];return _0x71a686;};'use strict';var SmsAccountEvents=require(_0x8778('0x0'));var events=['save','remove',_0x8778('0x1')];function createListener(_0x5993c8,_0x4e3376){return function(_0x2f8ce1){_0x4e3376['emit'](_0x5993c8,_0x2f8ce1);};}function removeListener(_0xfa14ca,_0x41138e){return function(){SmsAccountEvents[_0x8778('0x2')](_0xfa14ca,_0x41138e);};}exports[_0x8778('0x3')]=function(_0x38fe62){for(var _0x5e66d7=0x0,_0x30d15a=events['length'];_0x5e66d7<_0x30d15a;_0x5e66d7++){var _0x4195f6=events[_0x5e66d7];var _0x5582e8=createListener('smsAccount:'+_0x4195f6,_0x38fe62);SmsAccountEvents['on'](_0x4195f6,_0x5582e8);}};
\ No newline at end of file
+var _0x1193=['remove','update','emit','removeListener','register','length','save'];(function(_0x445c98,_0x132bf7){var _0x2fe913=function(_0x32e864){while(--_0x32e864){_0x445c98['push'](_0x445c98['shift']());}};_0x2fe913(++_0x132bf7);}(_0x1193,0x1a3));var _0x3119=function(_0x45877e,_0x194aac){_0x45877e=_0x45877e-0x0;var _0x37d18=_0x1193[_0x45877e];return _0x37d18;};'use strict';var SmsAccountEvents=require('./smsAccount.events');var events=[_0x3119('0x0'),_0x3119('0x1'),_0x3119('0x2')];function createListener(_0x2d5cdb,_0x204bd0){return function(_0x240930){_0x204bd0[_0x3119('0x3')](_0x2d5cdb,_0x240930);};}function removeListener(_0x4592d6,_0x39cd0d){return function(){SmsAccountEvents[_0x3119('0x4')](_0x4592d6,_0x39cd0d);};}exports[_0x3119('0x5')]=function(_0x4f4a2f){for(var _0x1ab07e=0x0,_0x10ce9b=events[_0x3119('0x6')];_0x1ab07e<_0x10ce9b;_0x1ab07e++){var _0x7b9f5b=events[_0x1ab07e];var _0x17d74a=createListener('smsAccount:'+_0x7b9f5b,_0x4f4a2f);SmsAccountEvents['on'](_0x7b9f5b,_0x17d74a);}};
\ No newline at end of file
index 46b70fb..0aae237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x761c=['connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','exports','multer','path'];(function(_0x3fd0a6,_0x53fc86){var _0xe43d6b=function(_0x335382){while(--_0x335382){_0x3fd0a6['push'](_0x3fd0a6['shift']());}};_0xe43d6b(++_0x53fc86);}(_0x761c,0x18a));var _0xc761=function(_0x5ac5e5,_0x3d49c9){_0x5ac5e5=_0x5ac5e5-0x0;var _0x29e8da=_0x761c[_0x5ac5e5];return _0x29e8da;};'use strict';var multer=require(_0xc761('0x0'));var util=require('util');var path=require(_0xc761('0x1'));var timeout=require(_0xc761('0x2'));var express=require('express');var router=express[_0xc761('0x3')]();var auth=require(_0xc761('0x4'));var interaction=require(_0xc761('0x5'));var config=require('../../config/environment');var controller=require(_0xc761('0x6'));router['get']('/',auth[_0xc761('0x7')](),controller[_0xc761('0x8')]);router[_0xc761('0x9')](_0xc761('0xa'),auth[_0xc761('0x7')](),controller[_0xc761('0xb')]);router[_0xc761('0xc')]('/',auth['isAuthenticated'](),controller[_0xc761('0xd')]);router[_0xc761('0xe')](_0xc761('0xa'),auth[_0xc761('0x7')](),controller[_0xc761('0xf')]);router[_0xc761('0x10')](_0xc761('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xc761('0x11')]=router;
\ No newline at end of file
+var _0xdca3=['create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','post'];(function(_0xf74372,_0x51fe82){var _0x36bb65=function(_0x499b7a){while(--_0x499b7a){_0xf74372['push'](_0xf74372['shift']());}};_0x36bb65(++_0x51fe82);}(_0xdca3,0x64));var _0x3dca=function(_0x4cfb50,_0x5641c6){_0x4cfb50=_0x4cfb50-0x0;var _0x162ef2=_0xdca3[_0x4cfb50];return _0x162ef2;};'use strict';var multer=require(_0x3dca('0x0'));var util=require('util');var path=require(_0x3dca('0x1'));var timeout=require(_0x3dca('0x2'));var express=require(_0x3dca('0x3'));var router=express[_0x3dca('0x4')]();var auth=require(_0x3dca('0x5'));var interaction=require(_0x3dca('0x6'));var config=require(_0x3dca('0x7'));var controller=require(_0x3dca('0x8'));router[_0x3dca('0x9')]('/',auth[_0x3dca('0xa')](),controller[_0x3dca('0xb')]);router['get'](_0x3dca('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x3dca('0xd')]('/',auth['isAuthenticated'](),controller[_0x3dca('0xe')]);router[_0x3dca('0xf')](_0x3dca('0xc'),auth[_0x3dca('0xa')](),controller['update']);router[_0x3dca('0x10')](_0x3dca('0xc'),auth[_0x3dca('0xa')](),controller[_0x3dca('0x11')]);module[_0x3dca('0x12')]=router;
\ No newline at end of file
index 2cff417..071fd07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32d7=['STRING','*,*,*,*','sequelize','exports'];(function(_0x29127b,_0x289eba){var _0x2273ed=function(_0x5cdac7){while(--_0x5cdac7){_0x29127b['push'](_0x29127b['shift']());}};_0x2273ed(++_0x289eba);}(_0x32d7,0x156));var _0x732d=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x32d7[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x732d('0x0'));module[_0x732d('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x732d('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['STRING'](0x1000),'defaultValue':''},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x732d('0x2')],'defaultValue':_0x732d('0x3')}};
\ No newline at end of file
+var _0x9faf=['noop','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x53c853,_0x3a310e){var _0x2f7999=function(_0x2c3734){while(--_0x2c3734){_0x53c853['push'](_0x53c853['shift']());}};_0x2f7999(++_0x3a310e);}(_0x9faf,0xc0));var _0xf9fa=function(_0x544149,_0x1a2eca){_0x544149=_0x544149-0x0;var _0x1dd0d1=_0x9faf[_0x544149];return _0x1dd0d1;};'use strict';var Sequelize=require(_0xf9fa('0x0'));module['exports']={'priority':{'type':Sequelize[_0xf9fa('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xf9fa('0x2')],'allowNull':![],'defaultValue':_0xf9fa('0x3')},'appdata':{'type':Sequelize[_0xf9fa('0x2')](0x1000),'defaultValue':''},'description':{'type':Sequelize[_0xf9fa('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xf9fa('0x4')}};
\ No newline at end of file
index 25a6381..202cf6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['sendStatus','status','end','json','count','offset','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','SmsApplication','rawAttributes','keys','dateStart','query','intersection','model','fields','attributes','hasOwnProperty','nolimit','limit','order','where','pick','filters','dateEnd','day','merge','map','type','VIRTUAL','filter','rows','params','length','includeAll','include','options','find','create','catch','update','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../config/logger','../../config/utils','../../config/environment'];(function(_0x4be055,_0x4344d9){var _0x474d80=function(_0x1198ec){while(--_0x1198ec){_0x4be055['push'](_0x4be055['shift']());}};_0x474d80(++_0x4344d9);}(_0x57ca,0x108));var _0xa57c=function(_0x3cbf99,_0x9cb33a){_0x3cbf99=_0x3cbf99-0x0;var _0x5f1cba=_0x57ca[_0x3cbf99];return _0x5f1cba;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xa57c('0x0'));var rimraf=require(_0xa57c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa57c('0x2'));var rp=require(_0xa57c('0x3'));var moment=require(_0xa57c('0x4'));var BPromise=require(_0xa57c('0x5'));var Mustache=require(_0xa57c('0x6'));var util=require('util');var path=require(_0xa57c('0x7'));var sox=require(_0xa57c('0x8'));var csv=require(_0xa57c('0x9'));var ejs=require(_0xa57c('0xa'));var fs=require('fs');var _=require(_0xa57c('0xb'));var squel=require(_0xa57c('0xc'));var crypto=require(_0xa57c('0xd'));var jsforce=require(_0xa57c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa57c('0x9'));var querystring=require('querystring');var Papa=require(_0xa57c('0xf'));var Redis=require(_0xa57c('0x10'));var qs=require('../../components/parsers/qs');var logger=require(_0xa57c('0x11'))('api');var utils=require(_0xa57c('0x12'));var config=require(_0xa57c('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ed4c6,_0x5a8952){_0x5a8952=_0x5a8952||0xcc;return function(_0x4200c1){if(_0x4200c1){return _0x2ed4c6[_0xa57c('0x14')](_0x5a8952);}return _0x2ed4c6[_0xa57c('0x15')](_0x5a8952)[_0xa57c('0x16')]();};}function respondWithResult(_0x205e72,_0x57a546){_0x57a546=_0x57a546||0xc8;return function(_0x2644a1){if(_0x2644a1){return _0x205e72['status'](_0x57a546)[_0xa57c('0x17')](_0x2644a1);}};}function respondWithFilteredResult(_0x3d5995,_0x30940d){return function(_0x3821d2){if(_0x3821d2){var _0x3238ff=_0x3821d2[_0xa57c('0x18')],_0x37a323=_0x30940d[_0xa57c('0x19')],_0x3f900a=_0x30940d[_0xa57c('0x19')]+_0x30940d['limit'],_0x4b4bdb;if(_0x3f900a>=_0x3238ff){_0x3f900a=_0x3238ff;_0x4b4bdb=0xc8;}else{_0x4b4bdb=0xce;}_0x3d5995[_0xa57c('0x15')](_0x4b4bdb);return _0x3d5995['set'](_0xa57c('0x1a'),_0x37a323+'-'+_0x3f900a+'/'+_0x3238ff)[_0xa57c('0x17')](_0x3821d2);}return null;};}function patchUpdates(_0x93462c){return function(_0xe3d505){try{jsonpatch[_0xa57c('0x1b')](_0xe3d505,_0x93462c,!![]);}catch(_0x4728f9){return BPromise[_0xa57c('0x1c')](_0x4728f9);}return _0xe3d505[_0xa57c('0x1d')]();};}function saveUpdates(_0x4e4399,_0x8a8856){return function(_0x4a53ab){if(_0x4a53ab){return _0x4a53ab['update'](_0x4e4399)[_0xa57c('0x1e')](function(_0xa5b314){return _0xa5b314;});}return null;};}function removeEntity(_0x3eee75,_0x23bec0){return function(_0x49242c){if(_0x49242c){return _0x49242c[_0xa57c('0x1f')]()[_0xa57c('0x1e')](function(){_0x3eee75[_0xa57c('0x15')](0xcc)[_0xa57c('0x16')]();});}};}function handleEntityNotFound(_0x3bb969,_0x1404fd){return function(_0x1e0192){if(!_0x1e0192){_0x3bb969[_0xa57c('0x14')](0x194);}return _0x1e0192;};}function handleError(_0x2e99ed,_0xdf65dd){_0xdf65dd=_0xdf65dd||0x1f4;return function(_0x382a26){logger[_0xa57c('0x20')](_0x382a26[_0xa57c('0x21')]);if(_0x382a26[_0xa57c('0x22')]){delete _0x382a26[_0xa57c('0x22')];}_0x2e99ed['status'](_0xdf65dd)[_0xa57c('0x23')](_0x382a26);};}exports[_0xa57c('0x24')]=function(_0x27884d,_0x5228b9){var _0x315ad7={},_0x1e8e45={},_0x8ee1c0={'count':0x0,'rows':[]};var _0xe50fb8=db[_0xa57c('0x25')][_0xa57c('0x26')];_0x1e8e45['model']=_[_0xa57c('0x27')](_0xe50fb8);var _0x4c1478={'dateStart':_0x27884d['query'][_0xa57c('0x28')],'dateEnd':_0x27884d[_0xa57c('0x29')]['dateEnd']};delete _0x27884d[_0xa57c('0x29')][_0xa57c('0x28')];delete _0x27884d[_0xa57c('0x29')]['dateEnd'];_0x1e8e45[_0xa57c('0x29')]=_['keys'](_0x27884d[_0xa57c('0x29')]);_0x1e8e45['filters']=_[_0xa57c('0x2a')](_0x1e8e45['model'],_0x1e8e45[_0xa57c('0x29')]);_0x315ad7['attributes']=_[_0xa57c('0x2a')](_0x1e8e45[_0xa57c('0x2b')],qs[_0xa57c('0x2c')](_0x27884d[_0xa57c('0x29')][_0xa57c('0x2c')]));_0x315ad7[_0xa57c('0x2d')]=_0x315ad7[_0xa57c('0x2d')]['length']?_0x315ad7[_0xa57c('0x2d')]:_0x1e8e45['model'];if(!_0x27884d[_0xa57c('0x29')][_0xa57c('0x2e')](_0xa57c('0x2f'))){_0x315ad7['limit']=qs[_0xa57c('0x30')](_0x27884d['query'][_0xa57c('0x30')]);_0x315ad7['offset']=qs[_0xa57c('0x19')](_0x27884d['query'][_0xa57c('0x19')]);}_0x315ad7[_0xa57c('0x31')]=qs['sort'](_0x27884d[_0xa57c('0x29')]['sort']);_0x315ad7[_0xa57c('0x32')]=qs['filters'](_[_0xa57c('0x33')](_0x27884d[_0xa57c('0x29')],_0x1e8e45[_0xa57c('0x34')]));if(_0x4c1478[_0xa57c('0x28')]){if(_0x4c1478[_0xa57c('0x35')]){_0x4c1478[_0xa57c('0x35')]=moment(_0x4c1478['dateEnd'])['add'](0x1,_0xa57c('0x36'));}else{_0x4c1478[_0xa57c('0x35')]=moment(_0x4c1478[_0xa57c('0x28')])['add'](0x1,_0xa57c('0x36'));}_['merge'](_0x315ad7[_0xa57c('0x32')],{'createdAt':{'$gte':_0x4c1478[_0xa57c('0x28')],'$lte':_0x4c1478['dateEnd']}});}if(_0x27884d['query']['filter']){_0x315ad7[_0xa57c('0x32')]=_[_0xa57c('0x37')](_0x315ad7[_0xa57c('0x32')],{'$or':_[_0xa57c('0x38')](_0xe50fb8,function(_0x10c7ab){if(_0x10c7ab[_0xa57c('0x39')]['key']!==_0xa57c('0x3a')){var _0x1d4d2e={};_0x1d4d2e[_0x10c7ab['field']]={'$like':'%'+_0x27884d['query'][_0xa57c('0x3b')]+'%'};return _0x1d4d2e;}})});}_0x315ad7=_[_0xa57c('0x37')]({},_0x315ad7,_0x27884d['options']);var _0x24459a={'where':_0x315ad7[_0xa57c('0x32')]};return db[_0xa57c('0x25')][_0xa57c('0x18')](_0x24459a)[_0xa57c('0x1e')](function(_0x43c1d7){_0x8ee1c0['count']=_0x43c1d7;if(_0x27884d[_0xa57c('0x29')]['includeAll']){_0x315ad7['include']=[{'all':!![]}];}return db['SmsApplication']['findAll'](_0x315ad7);})['then'](function(_0x39b20f){_0x8ee1c0[_0xa57c('0x3c')]=_0x39b20f;return _0x8ee1c0;})[_0xa57c('0x1e')](respondWithFilteredResult(_0x5228b9,_0x315ad7))['catch'](handleError(_0x5228b9,null));};exports['show']=function(_0x49e072,_0x44f1e8){var _0x2755bc={'raw':!![],'where':{'id':_0x49e072[_0xa57c('0x3d')]['id']}},_0x44e38f={};_0x44e38f[_0xa57c('0x2b')]=_[_0xa57c('0x27')](db['SmsApplication'][_0xa57c('0x26')]);_0x44e38f[_0xa57c('0x29')]=_[_0xa57c('0x27')](_0x49e072[_0xa57c('0x29')]);_0x44e38f[_0xa57c('0x34')]=_[_0xa57c('0x2a')](_0x44e38f['model'],_0x44e38f[_0xa57c('0x29')]);_0x2755bc[_0xa57c('0x2d')]=_[_0xa57c('0x2a')](_0x44e38f[_0xa57c('0x2b')],qs[_0xa57c('0x2c')](_0x49e072['query'][_0xa57c('0x2c')]));_0x2755bc[_0xa57c('0x2d')]=_0x2755bc[_0xa57c('0x2d')][_0xa57c('0x3e')]?_0x2755bc[_0xa57c('0x2d')]:_0x44e38f[_0xa57c('0x2b')];if(_0x49e072['query'][_0xa57c('0x3f')]){_0x2755bc[_0xa57c('0x40')]=[{'all':!![]}];}_0x2755bc=_[_0xa57c('0x37')]({},_0x2755bc,_0x49e072[_0xa57c('0x41')]);return db[_0xa57c('0x25')][_0xa57c('0x42')](_0x2755bc)['then'](handleEntityNotFound(_0x44f1e8,null))['then'](respondWithResult(_0x44f1e8,null))['catch'](handleError(_0x44f1e8,null));};exports['create']=function(_0x232675,_0x49492f){return db[_0xa57c('0x25')][_0xa57c('0x43')](_0x232675['body'],{})[_0xa57c('0x1e')](respondWithResult(_0x49492f,0xc9))[_0xa57c('0x44')](handleError(_0x49492f,null));};exports[_0xa57c('0x45')]=function(_0x128ea2,_0x3ef77c){if(_0x128ea2['body']['id']){delete _0x128ea2[_0xa57c('0x46')]['id'];}return db[_0xa57c('0x25')][_0xa57c('0x42')]({'where':{'id':_0x128ea2[_0xa57c('0x3d')]['id']}})[_0xa57c('0x1e')](handleEntityNotFound(_0x3ef77c,null))['then'](saveUpdates(_0x128ea2[_0xa57c('0x46')],null))['then'](respondWithResult(_0x3ef77c,null))['catch'](handleError(_0x3ef77c,null));};exports[_0xa57c('0x1f')]=function(_0x2c706f,_0x5ded49){return db['SmsApplication']['find']({'where':{'id':_0x2c706f[_0xa57c('0x3d')]['id']}})[_0xa57c('0x1e')](handleEntityNotFound(_0x5ded49,null))[_0xa57c('0x1e')](removeEntity(_0x5ded49,null))[_0xa57c('0x44')](handleError(_0x5ded49,null));};
\ No newline at end of file
+var _0x5fab=['findAll','rows','catch','show','length','includeAll','find','create','body','params','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','querystring','papaparse','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','count','offset','set','Content-Range','apply','reject','save','then','destroy','status','stack','name','send','index','SmsApplication','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','limit','order','sort','where','add','day','filter','merge','map','VIRTUAL','field','options','include'];(function(_0x544cdf,_0xb216ba){var _0x4afd4c=function(_0x2e1ad8){while(--_0x2e1ad8){_0x544cdf['push'](_0x544cdf['shift']());}};_0x4afd4c(++_0xb216ba);}(_0x5fab,0x177));var _0xb5fa=function(_0x5e4a9c,_0x2c0d9b){_0x5e4a9c=_0x5e4a9c-0x0;var _0x7f3c28=_0x5fab[_0x5e4a9c];return _0x7f3c28;};'use strict';var pdf=require(_0xb5fa('0x0'));var emlformat=require(_0xb5fa('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xb5fa('0x2'));var jsonpatch=require(_0xb5fa('0x3'));var rp=require(_0xb5fa('0x4'));var moment=require(_0xb5fa('0x5'));var BPromise=require(_0xb5fa('0x6'));var Mustache=require(_0xb5fa('0x7'));var util=require(_0xb5fa('0x8'));var path=require(_0xb5fa('0x9'));var sox=require(_0xb5fa('0xa'));var csv=require(_0xb5fa('0xb'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0xb5fa('0xc'));var crypto=require(_0xb5fa('0xd'));var jsforce=require(_0xb5fa('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xb5fa('0xb'));var querystring=require(_0xb5fa('0xf'));var Papa=require(_0xb5fa('0x10'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0xb5fa('0x11'))(_0xb5fa('0x12'));var utils=require(_0xb5fa('0x13'));var config=require(_0xb5fa('0x14'));var db=require(_0xb5fa('0x15'))['db'];function respondWithStatusCode(_0xadef41,_0x65c6b6){_0x65c6b6=_0x65c6b6||0xcc;return function(_0x46da66){if(_0x46da66){return _0xadef41[_0xb5fa('0x16')](_0x65c6b6);}return _0xadef41['status'](_0x65c6b6)[_0xb5fa('0x17')]();};}function respondWithResult(_0x3dad4d,_0x56e8b0){_0x56e8b0=_0x56e8b0||0xc8;return function(_0x116849){if(_0x116849){return _0x3dad4d['status'](_0x56e8b0)[_0xb5fa('0x18')](_0x116849);}};}function respondWithFilteredResult(_0x3fc372,_0x40c914){return function(_0xca8d82){if(_0xca8d82){var _0x8e9d1c=_0xca8d82[_0xb5fa('0x19')],_0x5371cf=_0x40c914[_0xb5fa('0x1a')],_0x567f31=_0x40c914[_0xb5fa('0x1a')]+_0x40c914['limit'],_0x38e964;if(_0x567f31>=_0x8e9d1c){_0x567f31=_0x8e9d1c;_0x38e964=0xc8;}else{_0x38e964=0xce;}_0x3fc372['status'](_0x38e964);return _0x3fc372[_0xb5fa('0x1b')](_0xb5fa('0x1c'),_0x5371cf+'-'+_0x567f31+'/'+_0x8e9d1c)[_0xb5fa('0x18')](_0xca8d82);}return null;};}function patchUpdates(_0x46eef0){return function(_0x324ba5){try{jsonpatch[_0xb5fa('0x1d')](_0x324ba5,_0x46eef0,!![]);}catch(_0x3b0f69){return BPromise[_0xb5fa('0x1e')](_0x3b0f69);}return _0x324ba5[_0xb5fa('0x1f')]();};}function saveUpdates(_0x368cb1,_0x3c8d53){return function(_0x1f5064){if(_0x1f5064){return _0x1f5064['update'](_0x368cb1)[_0xb5fa('0x20')](function(_0x519e20){return _0x519e20;});}return null;};}function removeEntity(_0x37ae06,_0x4a6c04){return function(_0xd0fe2b){if(_0xd0fe2b){return _0xd0fe2b[_0xb5fa('0x21')]()['then'](function(){_0x37ae06[_0xb5fa('0x22')](0xcc)[_0xb5fa('0x17')]();});}};}function handleEntityNotFound(_0x283a56,_0x47f71a){return function(_0x32a85c){if(!_0x32a85c){_0x283a56[_0xb5fa('0x16')](0x194);}return _0x32a85c;};}function handleError(_0x444237,_0x542348){_0x542348=_0x542348||0x1f4;return function(_0x224ec8){logger['error'](_0x224ec8[_0xb5fa('0x23')]);if(_0x224ec8[_0xb5fa('0x24')]){delete _0x224ec8[_0xb5fa('0x24')];}_0x444237[_0xb5fa('0x22')](_0x542348)[_0xb5fa('0x25')](_0x224ec8);};}exports[_0xb5fa('0x26')]=function(_0x6a455c,_0x20d649){var _0x568870={},_0x4ec294={},_0x5bdf11={'count':0x0,'rows':[]};var _0x5a1c39=db[_0xb5fa('0x27')][_0xb5fa('0x28')];_0x4ec294[_0xb5fa('0x29')]=_[_0xb5fa('0x2a')](_0x5a1c39);var _0x534884={'dateStart':_0x6a455c[_0xb5fa('0x2b')][_0xb5fa('0x2c')],'dateEnd':_0x6a455c[_0xb5fa('0x2b')][_0xb5fa('0x2d')]};delete _0x6a455c[_0xb5fa('0x2b')][_0xb5fa('0x2c')];delete _0x6a455c[_0xb5fa('0x2b')][_0xb5fa('0x2d')];_0x4ec294[_0xb5fa('0x2b')]=_[_0xb5fa('0x2a')](_0x6a455c[_0xb5fa('0x2b')]);_0x4ec294[_0xb5fa('0x2e')]=_[_0xb5fa('0x2f')](_0x4ec294[_0xb5fa('0x29')],_0x4ec294[_0xb5fa('0x2b')]);_0x568870[_0xb5fa('0x30')]=_[_0xb5fa('0x2f')](_0x4ec294[_0xb5fa('0x29')],qs[_0xb5fa('0x31')](_0x6a455c['query'][_0xb5fa('0x31')]));_0x568870['attributes']=_0x568870['attributes']['length']?_0x568870[_0xb5fa('0x30')]:_0x4ec294['model'];if(!_0x6a455c[_0xb5fa('0x2b')]['hasOwnProperty']('nolimit')){_0x568870[_0xb5fa('0x32')]=qs[_0xb5fa('0x32')](_0x6a455c['query']['limit']);_0x568870[_0xb5fa('0x1a')]=qs[_0xb5fa('0x1a')](_0x6a455c[_0xb5fa('0x2b')]['offset']);}_0x568870[_0xb5fa('0x33')]=qs[_0xb5fa('0x34')](_0x6a455c['query'][_0xb5fa('0x34')]);_0x568870[_0xb5fa('0x35')]=qs[_0xb5fa('0x2e')](_['pick'](_0x6a455c[_0xb5fa('0x2b')],_0x4ec294[_0xb5fa('0x2e')]));if(_0x534884[_0xb5fa('0x2c')]){if(_0x534884['dateEnd']){_0x534884[_0xb5fa('0x2d')]=moment(_0x534884[_0xb5fa('0x2d')])[_0xb5fa('0x36')](0x1,_0xb5fa('0x37'));}else{_0x534884['dateEnd']=moment(_0x534884['dateStart'])['add'](0x1,'day');}_['merge'](_0x568870['where'],{'createdAt':{'$gte':_0x534884[_0xb5fa('0x2c')],'$lte':_0x534884['dateEnd']}});}if(_0x6a455c[_0xb5fa('0x2b')][_0xb5fa('0x38')]){_0x568870[_0xb5fa('0x35')]=_[_0xb5fa('0x39')](_0x568870[_0xb5fa('0x35')],{'$or':_[_0xb5fa('0x3a')](_0x5a1c39,function(_0x4b4c4c){if(_0x4b4c4c['type']['key']!==_0xb5fa('0x3b')){var _0x4d23f1={};_0x4d23f1[_0x4b4c4c[_0xb5fa('0x3c')]]={'$like':'%'+_0x6a455c['query']['filter']+'%'};return _0x4d23f1;}})});}_0x568870=_[_0xb5fa('0x39')]({},_0x568870,_0x6a455c[_0xb5fa('0x3d')]);var _0x2e056e={'where':_0x568870[_0xb5fa('0x35')]};return db[_0xb5fa('0x27')][_0xb5fa('0x19')](_0x2e056e)[_0xb5fa('0x20')](function(_0x83df0b){_0x5bdf11[_0xb5fa('0x19')]=_0x83df0b;if(_0x6a455c[_0xb5fa('0x2b')]['includeAll']){_0x568870[_0xb5fa('0x3e')]=[{'all':!![]}];}return db['SmsApplication'][_0xb5fa('0x3f')](_0x568870);})[_0xb5fa('0x20')](function(_0x2c7c5f){_0x5bdf11[_0xb5fa('0x40')]=_0x2c7c5f;return _0x5bdf11;})[_0xb5fa('0x20')](respondWithFilteredResult(_0x20d649,_0x568870))[_0xb5fa('0x41')](handleError(_0x20d649,null));};exports[_0xb5fa('0x42')]=function(_0x10c381,_0x4da448){var _0x1c3c2c={'raw':!![],'where':{'id':_0x10c381['params']['id']}},_0xc03e44={};_0xc03e44[_0xb5fa('0x29')]=_['keys'](db[_0xb5fa('0x27')][_0xb5fa('0x28')]);_0xc03e44['query']=_['keys'](_0x10c381[_0xb5fa('0x2b')]);_0xc03e44[_0xb5fa('0x2e')]=_[_0xb5fa('0x2f')](_0xc03e44[_0xb5fa('0x29')],_0xc03e44[_0xb5fa('0x2b')]);_0x1c3c2c[_0xb5fa('0x30')]=_[_0xb5fa('0x2f')](_0xc03e44[_0xb5fa('0x29')],qs['fields'](_0x10c381[_0xb5fa('0x2b')][_0xb5fa('0x31')]));_0x1c3c2c['attributes']=_0x1c3c2c[_0xb5fa('0x30')][_0xb5fa('0x43')]?_0x1c3c2c[_0xb5fa('0x30')]:_0xc03e44[_0xb5fa('0x29')];if(_0x10c381[_0xb5fa('0x2b')][_0xb5fa('0x44')]){_0x1c3c2c[_0xb5fa('0x3e')]=[{'all':!![]}];}_0x1c3c2c=_[_0xb5fa('0x39')]({},_0x1c3c2c,_0x10c381[_0xb5fa('0x3d')]);return db[_0xb5fa('0x27')][_0xb5fa('0x45')](_0x1c3c2c)[_0xb5fa('0x20')](handleEntityNotFound(_0x4da448,null))[_0xb5fa('0x20')](respondWithResult(_0x4da448,null))[_0xb5fa('0x41')](handleError(_0x4da448,null));};exports[_0xb5fa('0x46')]=function(_0x3a39f2,_0x52f5d8){return db['SmsApplication'][_0xb5fa('0x46')](_0x3a39f2['body'],{})[_0xb5fa('0x20')](respondWithResult(_0x52f5d8,0xc9))[_0xb5fa('0x41')](handleError(_0x52f5d8,null));};exports['update']=function(_0x4ef1d0,_0x2931a7){if(_0x4ef1d0[_0xb5fa('0x47')]['id']){delete _0x4ef1d0[_0xb5fa('0x47')]['id'];}return db[_0xb5fa('0x27')][_0xb5fa('0x45')]({'where':{'id':_0x4ef1d0['params']['id']}})[_0xb5fa('0x20')](handleEntityNotFound(_0x2931a7,null))['then'](saveUpdates(_0x4ef1d0[_0xb5fa('0x47')],null))[_0xb5fa('0x20')](respondWithResult(_0x2931a7,null))[_0xb5fa('0x41')](handleError(_0x2931a7,null));};exports['destroy']=function(_0x27409a,_0x130a0d){return db['SmsApplication']['find']({'where':{'id':_0x27409a[_0xb5fa('0x48')]['id']}})[_0xb5fa('0x20')](handleEntityNotFound(_0x130a0d,null))[_0xb5fa('0x20')](removeEntity(_0x130a0d,null))[_0xb5fa('0x41')](handleError(_0x130a0d,null));};
\ No newline at end of file
index f12fefd..0678598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbda=['lodash','util','api','bluebird','request-promise','./smsApplication.attributes','exports','define','sms_applications'];(function(_0x3f020b,_0x16df9c){var _0x2293b7=function(_0x4e8db0){while(--_0x4e8db0){_0x3f020b['push'](_0x3f020b['shift']());}};_0x2293b7(++_0x16df9c);}(_0xcbda,0x171));var _0xacbd=function(_0x510f0e,_0x92c9d0){_0x510f0e=_0x510f0e-0x0;var _0x30b05b=_0xcbda[_0x510f0e];return _0x30b05b;};'use strict';var _=require(_0xacbd('0x0'));var util=require(_0xacbd('0x1'));var logger=require('../../config/logger')(_0xacbd('0x2'));var moment=require('moment');var BPromise=require(_0xacbd('0x3'));var rp=require(_0xacbd('0x4'));var attributes=require(_0xacbd('0x5'));module[_0xacbd('0x6')]=function(_0x1edec4,_0x34cf46){return _0x1edec4[_0xacbd('0x7')]('SmsApplication',attributes,{'tableName':_0xacbd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d3e=['request-promise','./smsApplication.attributes','exports','define','SmsApplication','sms_applications','lodash','../../config/logger','api','bluebird'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0x4d3e,0x1c8));var _0xe4d3=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0x4d3e[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require(_0xe4d3('0x0'));var util=require('util');var logger=require(_0xe4d3('0x1'))(_0xe4d3('0x2'));var moment=require('moment');var BPromise=require(_0xe4d3('0x3'));var rp=require(_0xe4d3('0x4'));var attributes=require(_0xe4d3('0x5'));module[_0xe4d3('0x6')]=function(_0x3dc360,_0x2fe36b){return _0x3dc360[_0xe4d3('0x7')](_0xe4d3('0x8'),attributes,{'tableName':_0xe4d3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f359991..c555ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cd7=['SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0xea8947,_0x1b573d){var _0x2455e9=function(_0x18771e){while(--_0x18771e){_0xea8947['push'](_0xea8947['shift']());}};_0x2455e9(++_0x1b573d);}(_0x4cd7,0x169));var _0x74cd=function(_0x12ef69,_0x5782cf){_0x12ef69=_0x12ef69-0x0;var _0x3da720=_0x4cd7[_0x12ef69];return _0x3da720;};'use strict';var _=require('lodash');var util=require(_0x74cd('0x0'));var moment=require(_0x74cd('0x1'));var BPromise=require(_0x74cd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x74cd('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x74cd('0x4'));var logger=require(_0x74cd('0x5'))(_0x74cd('0x6'));var config=require(_0x74cd('0x7'));var jayson=require(_0x74cd('0x8'));var client=jayson['client'][_0x74cd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1fe113,_0x35660d,_0x245626){return new BPromise(function(_0x226dc2,_0x175f27){return client[_0x74cd('0xa')](_0x1fe113,_0x245626)[_0x74cd('0xb')](function(_0x486560){logger[_0x74cd('0xc')](_0x74cd('0xd'),_0x35660d,_0x74cd('0xe'));logger[_0x74cd('0xf')](_0x74cd('0x10'),_0x35660d,_0x74cd('0xe'),JSON[_0x74cd('0x11')](_0x486560));if(_0x486560['error']){if(_0x486560[_0x74cd('0x12')][_0x74cd('0x13')]===0x1f4){logger['error'](_0x74cd('0xd'),_0x35660d,_0x486560[_0x74cd('0x12')]['message']);return _0x175f27(_0x486560[_0x74cd('0x12')][_0x74cd('0x14')]);}logger[_0x74cd('0x12')]('SmsApplication,\x20%s,\x20%s',_0x35660d,_0x486560[_0x74cd('0x12')][_0x74cd('0x14')]);return _0x226dc2(_0x486560['error']['message']);}else{logger['info'](_0x74cd('0xd'),_0x35660d,_0x74cd('0xe'));_0x226dc2(_0x486560[_0x74cd('0x15')][_0x74cd('0x14')]);}})['catch'](function(_0x3cf42e){logger[_0x74cd('0x12')](_0x74cd('0xd'),_0x35660d,_0x3cf42e);_0x175f27(_0x3cf42e);});});}
\ No newline at end of file
+var _0x89d5=['../../config/environment','jayson/promise','http','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x281166,_0x1bd7a7){var _0x3c3dda=function(_0x26284c){while(--_0x26284c){_0x281166['push'](_0x281166['shift']());}};_0x3c3dda(++_0x1bd7a7);}(_0x89d5,0x18a));var _0x589d=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x89d5[_0x487b0c];return _0x1adbdc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x589d('0x0'));var BPromise=require(_0x589d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x589d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x589d('0x3'));var logger=require(_0x589d('0x4'))(_0x589d('0x5'));var config=require(_0x589d('0x6'));var jayson=require(_0x589d('0x7'));var client=jayson['client'][_0x589d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x101f2d,_0x4114e5,_0x12edda){return new BPromise(function(_0x24c80a,_0x1f4a22){return client['request'](_0x101f2d,_0x12edda)['then'](function(_0x534583){logger['info'](_0x589d('0x9'),_0x4114e5,_0x589d('0xa'));logger[_0x589d('0xb')](_0x589d('0xc'),_0x4114e5,_0x589d('0xa'),JSON[_0x589d('0xd')](_0x534583));if(_0x534583[_0x589d('0xe')]){if(_0x534583[_0x589d('0xe')][_0x589d('0xf')]===0x1f4){logger[_0x589d('0xe')]('SmsApplication,\x20%s,\x20%s',_0x4114e5,_0x534583[_0x589d('0xe')][_0x589d('0x10')]);return _0x1f4a22(_0x534583[_0x589d('0xe')][_0x589d('0x10')]);}logger[_0x589d('0xe')](_0x589d('0x9'),_0x4114e5,_0x534583[_0x589d('0xe')][_0x589d('0x10')]);return _0x24c80a(_0x534583['error'][_0x589d('0x10')]);}else{logger[_0x589d('0x11')](_0x589d('0x9'),_0x4114e5,_0x589d('0xa'));_0x24c80a(_0x534583[_0x589d('0x12')][_0x589d('0x10')]);}})[_0x589d('0x13')](function(_0xd8f982){logger[_0x589d('0xe')]('SmsApplication,\x20%s,\x20%s',_0x4114e5,_0xd8f982);_0x1f4a22(_0xd8f982);});});}
\ No newline at end of file
index f0a5b83..b86c697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e19=['/:id','smsinteraction:update','update','delete','tracked','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','sms','smsinteraction:addtags','addTags','put'];(function(_0x5c46f6,_0x1b7637){var _0x2a22f8=function(_0x7b966d){while(--_0x7b966d){_0x5c46f6['push'](_0x5c46f6['shift']());}};_0x2a22f8(++_0x1b7637);}(_0x5e19,0xc8));var _0x95e1=function(_0x1b692c,_0x1768af){_0x1b692c=_0x1b692c-0x0;var _0x1c8fe2=_0x5e19[_0x1b692c];return _0x1c8fe2;};'use strict';var multer=require(_0x95e1('0x0'));var util=require('util');var path=require(_0x95e1('0x1'));var timeout=require(_0x95e1('0x2'));var express=require(_0x95e1('0x3'));var router=express[_0x95e1('0x4')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x95e1('0x5'));var controller=require('./smsInteraction.controller');router[_0x95e1('0x6')]('/',auth[_0x95e1('0x7')](),controller[_0x95e1('0x8')]);router[_0x95e1('0x6')](_0x95e1('0x9'),auth[_0x95e1('0x7')](),controller[_0x95e1('0xa')]);router['get']('/:id',auth[_0x95e1('0x7')](),controller[_0x95e1('0xb')]);router['get'](_0x95e1('0xc'),auth[_0x95e1('0x7')](),controller[_0x95e1('0xd')]);router['get'](_0x95e1('0xe'),auth[_0x95e1('0x7')](),controller[_0x95e1('0xf')]);router[_0x95e1('0x10')]('/',auth[_0x95e1('0x7')](),controller[_0x95e1('0x11')]);router[_0x95e1('0x10')]('/:id/messages',auth[_0x95e1('0x7')](),controller[_0x95e1('0x12')]);router[_0x95e1('0x10')](_0x95e1('0x13'),auth[_0x95e1('0x7')](),interaction['tracked'](_0x95e1('0x14'),_0x95e1('0x15')),controller[_0x95e1('0x16')]);router[_0x95e1('0x17')](_0x95e1('0x18'),auth[_0x95e1('0x7')](),interaction['tracked'](_0x95e1('0x14'),_0x95e1('0x19')),controller[_0x95e1('0x1a')]);router[_0x95e1('0x1b')](_0x95e1('0x18'),auth[_0x95e1('0x7')](),interaction[_0x95e1('0x1c')](_0x95e1('0x14'),'smsinteraction:destroy'),controller[_0x95e1('0x1d')]);router[_0x95e1('0x1b')]('/:id/tags',auth[_0x95e1('0x7')](),controller[_0x95e1('0x1e')]);module[_0x95e1('0x1f')]=router;
\ No newline at end of file
+var _0x876d=['destroy','removeTags','exports','multer','path','express','Router','../../components/auth/service','../../config/environment','get','/describe','describe','/:id','isAuthenticated','show','/:id/messages','getMessages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','delete','smsinteraction:destroy'];(function(_0x2e5392,_0x309cd4){var _0x1b87dc=function(_0x1be487){while(--_0x1be487){_0x2e5392['push'](_0x2e5392['shift']());}};_0x1b87dc(++_0x309cd4);}(_0x876d,0x177));var _0xd876=function(_0x2f1f7e,_0x39a585){_0x2f1f7e=_0x2f1f7e-0x0;var _0x727936=_0x876d[_0x2f1f7e];return _0x727936;};'use strict';var multer=require(_0xd876('0x0'));var util=require('util');var path=require(_0xd876('0x1'));var timeout=require('connect-timeout');var express=require(_0xd876('0x2'));var router=express[_0xd876('0x3')]();var auth=require(_0xd876('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd876('0x5'));var controller=require('./smsInteraction.controller');router[_0xd876('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xd876('0x7'),auth['isAuthenticated'](),controller[_0xd876('0x8')]);router[_0xd876('0x6')](_0xd876('0x9'),auth[_0xd876('0xa')](),controller[_0xd876('0xb')]);router[_0xd876('0x6')](_0xd876('0xc'),auth[_0xd876('0xa')](),controller[_0xd876('0xd')]);router['get'](_0xd876('0xe'),auth[_0xd876('0xa')](),controller[_0xd876('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd876('0x10')]);router[_0xd876('0x11')](_0xd876('0xc'),auth[_0xd876('0xa')](),controller[_0xd876('0x12')]);router[_0xd876('0x11')](_0xd876('0x13'),auth[_0xd876('0xa')](),interaction[_0xd876('0x14')](_0xd876('0x15'),_0xd876('0x16')),controller[_0xd876('0x17')]);router[_0xd876('0x18')](_0xd876('0x9'),auth[_0xd876('0xa')](),interaction['tracked'](_0xd876('0x15'),_0xd876('0x19')),controller['update']);router[_0xd876('0x1a')]('/:id',auth[_0xd876('0xa')](),interaction[_0xd876('0x14')](_0xd876('0x15'),_0xd876('0x1b')),controller[_0xd876('0x1c')]);router[_0xd876('0x1a')](_0xd876('0x13'),auth[_0xd876('0xa')](),controller[_0xd876('0x1d')]);module[_0xd876('0x1e')]=router;
\ No newline at end of file
index ed678b5..a7b7b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdacd=['STRING','ENUM','out','sequelize','moment','exports','BOOLEAN','DATE'];(function(_0x331e61,_0xaa422d){var _0x20660f=function(_0x55fadb){while(--_0x55fadb){_0x331e61['push'](_0x331e61['shift']());}};_0x20660f(++_0xaa422d);}(_0xdacd,0x183));var _0xddac=function(_0x46d387,_0x3f585d){_0x46d387=_0x46d387-0x0;var _0x45025d=_0xdacd[_0x46d387];return _0x45025d;};'use strict';var Sequelize=require(_0xddac('0x0'));var moment=require(_0xddac('0x1'));module[_0xddac('0x2')]={'closed':{'type':Sequelize[_0xddac('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xddac('0x4')]},'disposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xddac('0x5')]},'phone':{'type':Sequelize[_0xddac('0x5')]},'read1stAt':{'type':Sequelize[_0xddac('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xddac('0x6')]('in',_0xddac('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xddac('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xddac('0x6')]('in',_0xddac('0x7')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xbe2e=['exports','BOOLEAN','STRING','DATE','ENUM','out','sequelize','moment'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0xbe2e,0xae));var _0xebe2=function(_0x587a8d,_0x58f1f0){_0x587a8d=_0x587a8d-0x0;var _0x4d2d18=_0xbe2e[_0x587a8d];return _0x4d2d18;};'use strict';var Sequelize=require(_0xebe2('0x0'));var moment=require(_0xebe2('0x1'));module[_0xebe2('0x2')]={'closed':{'type':Sequelize[_0xebe2('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xebe2('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xebe2('0x4')]},'read1stAt':{'type':Sequelize[_0xebe2('0x5')]},'firstMsgDirection':{'type':Sequelize[_0xebe2('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xebe2('0x6')]('in',_0xebe2('0x7')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index d3ec9f8..7cdde93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc91b=['status','end','json','count','offset','limit','set','reject','save','then','destroy','error','send','SmsInteraction','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','add','merge','filter','map','key','VIRTUAL','field','include','push','Tag','Tags','tag','read','SmsMessage','direction','createdAt','distinct','Users','name','Contact','Owner','internal','SmsAccount','Messages','color','ThroughTags','rows','catch','show','length','includeAll','options','find','create','body','update','params','describe','omit','ids','findOne','SmsInteractionId','$gte','format','findAll','addTags','setTags','spread','emit','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','interaction-%s.zip','User','CmContact','firstName','Letter','mkdirSync','<h1>Sms\x20Interaction:\x20#%d</h1>','<h2>Date:\x20%s</h2>','MMMM\x20Do\x20YYYY,\x20HH:mm:ss','<hr>','<div\x20style=\x22border-style:\x20solid;\x20border-width:\x201px;\x20margin:\x203px;\x22>','fullname','</div>','toFile','log','err','unlinkSync','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','localhost','./smsInteraction.socket','register'];(function(_0x8cb31b,_0x509016){var _0x2ce32e=function(_0x1e6f4a){while(--_0x1e6f4a){_0x8cb31b['push'](_0x8cb31b['shift']());}};_0x2ce32e(++_0x509016);}(_0xc91b,0x16f));var _0xbc91=function(_0x14e19b,_0x17507e){_0x14e19b=_0x14e19b-0x0;var _0x4c17bb=_0xc91b[_0x14e19b];return _0x4c17bb;};'use strict';var pdf=require(_0xbc91('0x0'));var emlformat=require(_0xbc91('0x1'));var rimraf=require(_0xbc91('0x2'));var zipdir=require(_0xbc91('0x3'));var jsonpatch=require(_0xbc91('0x4'));var rp=require(_0xbc91('0x5'));var moment=require(_0xbc91('0x6'));var BPromise=require(_0xbc91('0x7'));var Mustache=require('mustache');var util=require(_0xbc91('0x8'));var path=require(_0xbc91('0x9'));var sox=require('sox');var csv=require(_0xbc91('0xa'));var ejs=require(_0xbc91('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0xbc91('0xc'));var crypto=require(_0xbc91('0xd'));var jsforce=require(_0xbc91('0xe'));var deskjs=require(_0xbc91('0xf'));var toCsv=require(_0xbc91('0xa'));var querystring=require(_0xbc91('0x10'));var Papa=require(_0xbc91('0x11'));var Redis=require('ioredis');var qs=require(_0xbc91('0x12'));var logger=require(_0xbc91('0x13'))(_0xbc91('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0xbc91('0x15'))['db'];config[_0xbc91('0x16')]=_['defaults'](config['redis'],{'host':_0xbc91('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xbc91('0x18'))[_0xbc91('0x19')](socket);function respondWithStatusCode(_0x2d5f0d,_0x401055){_0x401055=_0x401055||0xcc;return function(_0x4d035b){if(_0x4d035b){return _0x2d5f0d['sendStatus'](_0x401055);}return _0x2d5f0d[_0xbc91('0x1a')](_0x401055)[_0xbc91('0x1b')]();};}function respondWithResult(_0x52fa9a,_0x5bf355){_0x5bf355=_0x5bf355||0xc8;return function(_0x32d4d4){if(_0x32d4d4){return _0x52fa9a[_0xbc91('0x1a')](_0x5bf355)[_0xbc91('0x1c')](_0x32d4d4);}};}function respondWithFilteredResult(_0x102db2,_0x1344a4){return function(_0xb92600){if(_0xb92600){var _0x459d84=_0xb92600[_0xbc91('0x1d')],_0x297f4f=_0x1344a4[_0xbc91('0x1e')],_0x57ff34=_0x1344a4[_0xbc91('0x1e')]+_0x1344a4[_0xbc91('0x1f')],_0x60911a;if(_0x57ff34>=_0x459d84){_0x57ff34=_0x459d84;_0x60911a=0xc8;}else{_0x60911a=0xce;}_0x102db2[_0xbc91('0x1a')](_0x60911a);return _0x102db2[_0xbc91('0x20')]('Content-Range',_0x297f4f+'-'+_0x57ff34+'/'+_0x459d84)[_0xbc91('0x1c')](_0xb92600);}return null;};}function patchUpdates(_0x3ab527){return function(_0x29b9ba){try{jsonpatch['apply'](_0x29b9ba,_0x3ab527,!![]);}catch(_0x53e0ce){return BPromise[_0xbc91('0x21')](_0x53e0ce);}return _0x29b9ba[_0xbc91('0x22')]();};}function saveUpdates(_0xf22d46,_0x1e53f4){return function(_0x50d295){if(_0x50d295){return _0x50d295['update'](_0xf22d46)[_0xbc91('0x23')](function(_0x280e3a){return _0x280e3a;});}return null;};}function removeEntity(_0x2f5e7f,_0x473a21){return function(_0x33c576){if(_0x33c576){return _0x33c576[_0xbc91('0x24')]()['then'](function(){_0x2f5e7f[_0xbc91('0x1a')](0xcc)[_0xbc91('0x1b')]();});}};}function handleEntityNotFound(_0x5a051b,_0xd48905){return function(_0x9c9948){if(!_0x9c9948){_0x5a051b['sendStatus'](0x194);}return _0x9c9948;};}function handleError(_0x1f32a4,_0x32a9f0){_0x32a9f0=_0x32a9f0||0x1f4;return function(_0x599c13){logger[_0xbc91('0x25')](_0x599c13['stack']);if(_0x599c13['name']){delete _0x599c13['name'];}_0x1f32a4[_0xbc91('0x1a')](_0x32a9f0)[_0xbc91('0x26')](_0x599c13);};}exports['index']=function(_0x52a260,_0x5e2162){var _0x310704={},_0x105d1e={},_0x3425e8={'count':0x0,'rows':[]};var _0x2093be=db[_0xbc91('0x27')][_0xbc91('0x28')];_0x105d1e[_0xbc91('0x29')]=_[_0xbc91('0x2a')](_0x2093be);var _0x118d61={'dateStart':_0x52a260[_0xbc91('0x2b')][_0xbc91('0x2c')],'dateEnd':_0x52a260['query'][_0xbc91('0x2d')]};delete _0x52a260[_0xbc91('0x2b')]['dateStart'];delete _0x52a260[_0xbc91('0x2b')][_0xbc91('0x2d')];_0x105d1e[_0xbc91('0x2b')]=_[_0xbc91('0x2a')](_0x52a260['query']);_0x105d1e[_0xbc91('0x2e')]=_[_0xbc91('0x2f')](_0x105d1e['model'],_0x105d1e[_0xbc91('0x2b')]);_0x310704['attributes']=_['intersection'](_0x105d1e['model'],qs[_0xbc91('0x30')](_0x52a260[_0xbc91('0x2b')]['fields']));_0x310704[_0xbc91('0x31')]=_0x310704[_0xbc91('0x31')]['length']?_0x310704[_0xbc91('0x31')]:_0x105d1e[_0xbc91('0x29')];if(!_0x52a260[_0xbc91('0x2b')][_0xbc91('0x32')](_0xbc91('0x33'))){_0x310704[_0xbc91('0x1f')]=qs['limit'](_0x52a260['query']['limit']);_0x310704[_0xbc91('0x1e')]=qs['offset'](_0x52a260[_0xbc91('0x2b')][_0xbc91('0x1e')]);}_0x310704[_0xbc91('0x34')]=qs[_0xbc91('0x35')](_0x52a260[_0xbc91('0x2b')][_0xbc91('0x35')]);_0x310704[_0xbc91('0x36')]=qs[_0xbc91('0x2e')](_['pick'](_0x52a260['query'],_0x105d1e[_0xbc91('0x2e')]));if(_0x118d61['dateStart']){if(_0x118d61['dateEnd']){_0x118d61[_0xbc91('0x2d')]=moment(_0x118d61[_0xbc91('0x2d')])[_0xbc91('0x37')](0x1,'day');}else{_0x118d61[_0xbc91('0x2d')]=moment(_0x118d61[_0xbc91('0x2c')])[_0xbc91('0x37')](0x1,'day');}_[_0xbc91('0x38')](_0x310704[_0xbc91('0x36')],{'createdAt':{'$gte':_0x118d61[_0xbc91('0x2c')],'$lte':_0x118d61[_0xbc91('0x2d')]}});}if(_0x52a260[_0xbc91('0x2b')][_0xbc91('0x39')]){_0x310704[_0xbc91('0x36')]=_[_0xbc91('0x38')](_0x310704[_0xbc91('0x36')],{'$or':_[_0xbc91('0x3a')](_0x2093be,function(_0x2644ae){if(_0x2644ae['type'][_0xbc91('0x3b')]!==_0xbc91('0x3c')){var _0xcc80b2={};_0xcc80b2[_0x2644ae[_0xbc91('0x3d')]]={'$like':'%'+_0x52a260[_0xbc91('0x2b')][_0xbc91('0x39')]+'%'};return _0xcc80b2;}})});}_0x310704=_[_0xbc91('0x38')]({},_0x310704,_0x52a260['options']);var _0x4443eb={'where':_0x310704[_0xbc91('0x36')]};_0x4443eb['include']=[];if(_0x52a260['query']['tag']){_0x4443eb[_0xbc91('0x3e')][_0xbc91('0x3f')]({'model':db[_0xbc91('0x40')],'as':_0xbc91('0x41'),'attributes':['id'],'where':{'id':_0x52a260['query'][_0xbc91('0x42')]},'required':!![]});_0x4443eb['distinct']=!![];}if(_0x52a260['query'][_0xbc91('0x43')]){_0x4443eb['include'][_0xbc91('0x3f')]({'model':db[_0xbc91('0x44')],'as':'Messages','attributes':['id',_0xbc91('0x45'),_0xbc91('0x46'),'read'],'where':{'direction':'in','read':_0x52a260[_0xbc91('0x2b')][_0xbc91('0x43')]||![]},'required':!![]});_0x4443eb[_0xbc91('0x47')]=!![];}return db[_0xbc91('0x27')][_0xbc91('0x1d')](_0x4443eb)[_0xbc91('0x23')](function(_0x576161){_0x3425e8['count']=_0x576161;if(_0x52a260[_0xbc91('0x2b')]['includeAll']){_0x310704[_0xbc91('0x3e')]=[{'model':db['User'],'as':_0xbc91('0x48'),'required':![],'attributes':['id',_0xbc91('0x49'),'fullname']},{'model':db['CmContact'],'as':_0xbc91('0x4a'),'required':![]},{'model':db['User'],'as':_0xbc91('0x4b'),'attributes':[_0xbc91('0x49'),'fullname',_0xbc91('0x4c')],'required':![]},{'model':db[_0xbc91('0x4d')],'as':'Account','attributes':[_0xbc91('0x49'),_0xbc91('0x3b')],'required':![]},{'model':db['SmsMessage'],'as':_0xbc91('0x4e'),'attributes':['id',_0xbc91('0x45'),_0xbc91('0x46'),_0xbc91('0x43')],'where':{'direction':'in','read':_0x52a260[_0xbc91('0x2b')][_0xbc91('0x43')]||![]},'required':_0x52a260[_0xbc91('0x2b')][_0xbc91('0x43')]||![]},{'model':db['Tag'],'as':_0xbc91('0x41'),'attributes':['id','name',_0xbc91('0x4f')],'required':_0x52a260[_0xbc91('0x2b')][_0xbc91('0x42')]?!![]:![]},{'model':db[_0xbc91('0x40')],'as':_0xbc91('0x50'),'attributes':['id',_0xbc91('0x49'),'color'],'through':_0x52a260[_0xbc91('0x2b')][_0xbc91('0x42')]?{'attributes':[],'where':{'TagId':_0x52a260[_0xbc91('0x2b')][_0xbc91('0x42')]||undefined}}:{},'required':_0x52a260[_0xbc91('0x2b')][_0xbc91('0x42')]?!![]:![]}];}return db[_0xbc91('0x27')]['findAll'](_0x310704);})['then'](function(_0x412168){_0x3425e8[_0xbc91('0x51')]=_0x412168;return _0x3425e8;})[_0xbc91('0x23')](respondWithFilteredResult(_0x5e2162,_0x310704))[_0xbc91('0x52')](handleError(_0x5e2162,null));};exports[_0xbc91('0x53')]=function(_0x436565,_0xf9efd2){var _0x28d269={'raw':![],'where':{'id':_0x436565['params']['id']}},_0xabcbb1={};_0xabcbb1[_0xbc91('0x29')]=_[_0xbc91('0x2a')](db[_0xbc91('0x27')]['rawAttributes']);_0xabcbb1[_0xbc91('0x2b')]=_[_0xbc91('0x2a')](_0x436565[_0xbc91('0x2b')]);_0xabcbb1[_0xbc91('0x2e')]=_[_0xbc91('0x2f')](_0xabcbb1[_0xbc91('0x29')],_0xabcbb1['query']);_0x28d269['attributes']=_['intersection'](_0xabcbb1[_0xbc91('0x29')],qs['fields'](_0x436565[_0xbc91('0x2b')][_0xbc91('0x30')]));_0x28d269[_0xbc91('0x31')]=_0x28d269[_0xbc91('0x31')][_0xbc91('0x54')]?_0x28d269[_0xbc91('0x31')]:_0xabcbb1[_0xbc91('0x29')];if(_0x436565[_0xbc91('0x2b')][_0xbc91('0x55')]){_0x28d269['include']=[{'all':!![]}];}_0x28d269=_[_0xbc91('0x38')]({},_0x28d269,_0x436565[_0xbc91('0x56')]);return db[_0xbc91('0x27')][_0xbc91('0x57')](_0x28d269)['then'](handleEntityNotFound(_0xf9efd2,null))[_0xbc91('0x23')](respondWithResult(_0xf9efd2,null))[_0xbc91('0x52')](handleError(_0xf9efd2,null));};exports[_0xbc91('0x58')]=function(_0xd78ee9,_0x316025){return db[_0xbc91('0x27')][_0xbc91('0x58')](_0xd78ee9[_0xbc91('0x59')],{})['then'](respondWithResult(_0x316025,0xc9))[_0xbc91('0x52')](handleError(_0x316025,null));};exports[_0xbc91('0x5a')]=function(_0x4f1ccc,_0x347480){if(_0x4f1ccc[_0xbc91('0x59')]['id']){delete _0x4f1ccc[_0xbc91('0x59')]['id'];}return db[_0xbc91('0x27')][_0xbc91('0x57')]({'where':{'id':_0x4f1ccc[_0xbc91('0x5b')]['id']}})[_0xbc91('0x23')](handleEntityNotFound(_0x347480,null))[_0xbc91('0x23')](saveUpdates(_0x4f1ccc[_0xbc91('0x59')],null))[_0xbc91('0x23')](respondWithResult(_0x347480,null))['catch'](handleError(_0x347480,null));};exports[_0xbc91('0x24')]=function(_0xaad1b0,_0xb51614){return db[_0xbc91('0x27')][_0xbc91('0x57')]({'where':{'id':_0xaad1b0[_0xbc91('0x5b')]['id']}})[_0xbc91('0x23')](handleEntityNotFound(_0xb51614,null))[_0xbc91('0x23')](removeEntity(_0xb51614,null))[_0xbc91('0x52')](handleError(_0xb51614,null));};exports[_0xbc91('0x5c')]=function(_0x251f2e,_0x423d70){return db['SmsInteraction'][_0xbc91('0x5c')]()[_0xbc91('0x23')](respondWithResult(_0x423d70,null))[_0xbc91('0x52')](handleError(_0x423d70,null));};exports['addMessage']=function(_0x2698b9,_0x38fa8d,_0xd59da9){return db['SmsMessage'][_0xbc91('0x57')]({'where':{'id':_0x2698b9['params']['id']}})[_0xbc91('0x23')](handleEntityNotFound(_0x38fa8d,null))[_0xbc91('0x23')](function(_0x44de83){if(_0x44de83){return _0x44de83['addMessage'](_0x2698b9[_0xbc91('0x59')]['ids'],_[_0xbc91('0x5d')](_0x2698b9[_0xbc91('0x59')],[_0xbc91('0x5e'),'id'])||{});}})[_0xbc91('0x23')](respondWithResult(_0x38fa8d,null))['catch'](handleError(_0x38fa8d,null));};exports['getMessages']=function(_0x4f5a83,_0x23bc92,_0x5b809b){var _0xf52db0={'raw':![],'where':{}};var _0x4b5eea={};var _0x6b3f64={'count':0x0,'rows':[]};return db['SmsInteraction'][_0xbc91('0x5f')]({'where':{'id':_0x4f5a83[_0xbc91('0x5b')]['id']}})['then'](handleEntityNotFound(_0x23bc92,null))[_0xbc91('0x23')](function(_0x5efc75){if(_0x5efc75){_0x4b5eea[_0xbc91('0x29')]=_[_0xbc91('0x2a')](db[_0xbc91('0x44')][_0xbc91('0x28')]);_0x4b5eea['query']=_[_0xbc91('0x2a')](_0x4f5a83[_0xbc91('0x2b')]);_0x4b5eea['filters']=_[_0xbc91('0x2f')](_0x4b5eea[_0xbc91('0x29')],_0x4b5eea[_0xbc91('0x2b')]);_0xf52db0[_0xbc91('0x31')]=_['intersection'](_0x4b5eea[_0xbc91('0x29')],qs[_0xbc91('0x30')](_0x4f5a83[_0xbc91('0x2b')]['fields']));_0xf52db0[_0xbc91('0x31')]=_0xf52db0[_0xbc91('0x31')]['length']?_0xf52db0[_0xbc91('0x31')]:_0x4b5eea[_0xbc91('0x29')];if(!_0x4f5a83[_0xbc91('0x2b')][_0xbc91('0x32')](_0xbc91('0x33'))){_0xf52db0[_0xbc91('0x1f')]=qs[_0xbc91('0x1f')](_0x4f5a83['query'][_0xbc91('0x1f')]);_0xf52db0[_0xbc91('0x1e')]=qs[_0xbc91('0x1e')](_0x4f5a83[_0xbc91('0x2b')][_0xbc91('0x1e')]);}_0xf52db0[_0xbc91('0x34')]=qs['sort'](_0x4f5a83[_0xbc91('0x2b')][_0xbc91('0x35')]);_0xf52db0[_0xbc91('0x36')]=qs[_0xbc91('0x2e')](_['pick'](_0x4f5a83['query'],_0x4b5eea[_0xbc91('0x2e')]));_0xf52db0['where'][_0xbc91('0x60')]=_0x5efc75['id'];if(_0x4f5a83[_0xbc91('0x2b')]['filter']){_0xf52db0[_0xbc91('0x36')]=_['merge'](_0xf52db0[_0xbc91('0x36')],{'$or':_[_0xbc91('0x3a')](_0xf52db0[_0xbc91('0x31')],function(_0x2b14f5){var _0x368220={};_0x368220[_0x2b14f5]={'$like':'%'+_0x4f5a83[_0xbc91('0x2b')][_0xbc91('0x39')]+'%'};return _0x368220;})});}if(_0x4f5a83[_0xbc91('0x2b')]['$gte']){var _0x1a88cd=_0x4f5a83['query'][_0xbc91('0x61')]['split'](',');var _0x253bcb={};_0x253bcb[_0x1a88cd[0x0]]={'$gte':moment(_0x1a88cd[0x1])[_0xbc91('0x62')]('YYYY-MM-DD\x20HH:mm:ss')};_0xf52db0[_0xbc91('0x36')]=_[_0xbc91('0x38')](_0xf52db0[_0xbc91('0x36')],_0x253bcb);}_0xf52db0=_[_0xbc91('0x38')]({},_0xf52db0,_0x4f5a83[_0xbc91('0x56')]);return db[_0xbc91('0x44')][_0xbc91('0x1d')]({'where':_0xf52db0[_0xbc91('0x36')]})[_0xbc91('0x23')](function(_0x1af7fa){_0x6b3f64[_0xbc91('0x1d')]=_0x1af7fa;if(_0x4f5a83['query']['includeAll']){_0xf52db0[_0xbc91('0x3e')]=[{'all':!![]}];}return db['SmsMessage'][_0xbc91('0x63')](_0xf52db0);})['then'](function(_0x55dca7){_0x6b3f64['rows']=_0x55dca7;return _0x6b3f64;});}})[_0xbc91('0x23')](respondWithFilteredResult(_0x23bc92,_0xf52db0))[_0xbc91('0x52')](handleError(_0x23bc92,null));};exports[_0xbc91('0x64')]=function(_0x4eba4b,_0x556e1b,_0x1f87c9){return db[_0xbc91('0x27')][_0xbc91('0x57')]({'where':{'id':_0x4eba4b[_0xbc91('0x5b')]['id']}})[_0xbc91('0x23')](handleEntityNotFound(_0x556e1b,null))[_0xbc91('0x23')](function(_0x25ca76){if(_0x25ca76){return _0x25ca76[_0xbc91('0x65')](_0x4eba4b[_0xbc91('0x59')][_0xbc91('0x5e')],_[_0xbc91('0x5d')](_0x4eba4b[_0xbc91('0x59')],['ids','id'])||{})[_0xbc91('0x66')](function(){return db['Tag'][_0xbc91('0x63')]({'attributes':['id','name','color'],'where':{'id':_0x4eba4b['body'][_0xbc91('0x5e')]}});})[_0xbc91('0x23')](function(_0x2f5568){socket[_0xbc91('0x67')]('smsInteractionTags:save',{'id':Number(_0x4eba4b['params']['id']),'tags':_0x2f5568||[]});return{'id':Number(_0x4eba4b[_0xbc91('0x5b')]['id']),'tags':_0x2f5568||[]};});}})[_0xbc91('0x23')](respondWithResult(_0x556e1b,null))[_0xbc91('0x52')](handleError(_0x556e1b,null));};exports[_0xbc91('0x68')]=function(_0x520f13,_0x38c92a,_0x191f49){var _0x54b84a;return db[_0xbc91('0x27')][_0xbc91('0x57')]({'where':{'id':_0x520f13['params']['id']}})['then'](handleEntityNotFound(_0x38c92a,null))[_0xbc91('0x23')](function(_0x2600c7){if(_0x2600c7){return _0x2600c7[_0xbc91('0x68')](_0x520f13[_0xbc91('0x2b')][_0xbc91('0x5e')]);}})['then'](respondWithStatusCode(_0x38c92a,null))[_0xbc91('0x52')](handleError(_0x38c92a,null));};exports[_0xbc91('0x69')]=function(_0xb585c8,_0x562008){var _0x1bee2b=moment()[_0xbc91('0x6a')]()[_0xbc91('0x6b')]();var _0x316b9f=path[_0xbc91('0x6c')](config[_0xbc91('0x6d')],_0xbc91('0x6e'),_0xbc91('0x6f'),_0xbc91('0x70'));var _0x356fa0=path['join'](config[_0xbc91('0x6d')],_0xbc91('0x6e'),_0xbc91('0x6f'),_0xbc91('0x71'));var _0x241554=path['join'](_0x316b9f,_0x1bee2b);var _0x47eba1=util[_0xbc91('0x62')](_0xbc91('0x72'),_0x1bee2b);var _0x5420b1=path[_0xbc91('0x6c')](_0x316b9f,_0x47eba1);var _0x3f8f7c=![];return db[_0xbc91('0x27')]['find']({'where':{'id':_0xb585c8[_0xbc91('0x5b')]['id']},'include':[{'model':db[_0xbc91('0x44')],'as':'Messages','attributes':['id','body'],'include':[{'model':db[_0xbc91('0x73')],'as':_0xbc91('0x73'),'attributes':['id','fullname'],'raw':!![]},{'model':db[_0xbc91('0x74')],'as':_0xbc91('0x4a'),'attributes':['id',_0xbc91('0x75')],'raw':!![]}]}]})[_0xbc91('0x23')](handleEntityNotFound(_0x562008,null))[_0xbc91('0x23')](function(_0x4476ff){if(_0x4476ff){_0x3f8f7c=!![];var _0x41d873='';var _0x1b836d={'format':_0xbc91('0x76'),'border':'1cm'};fs[_0xbc91('0x77')](_0x241554);_0x41d873+=util[_0xbc91('0x62')](_0xbc91('0x78'),_0x4476ff['id']);_0x41d873+=util['format'](_0xbc91('0x79'),moment()[_0xbc91('0x62')](_0xbc91('0x7a'))[_0xbc91('0x6b')]());_0x41d873+=_0xbc91('0x7b');for(var _0x1e9f10=0x0;_0x1e9f10<_0x4476ff[_0xbc91('0x4e')][_0xbc91('0x54')];_0x1e9f10++){var _0x380aed=_0x4476ff[_0xbc91('0x4e')][_0x1e9f10];_0x41d873+=_0xbc91('0x7c');_0x41d873+=util[_0xbc91('0x62')]('<p\x20style=\x22margin:\x203px;\x22>%s:\x20%s</p>',_0x380aed[_0xbc91('0x73')]?_0x380aed['User'][_0xbc91('0x7d')]:_0x380aed['Contact'][_0xbc91('0x75')],_0x380aed[_0xbc91('0x59')]);_0x41d873+=_0xbc91('0x7e');}return new BPromise(function(_0x1ab68c,_0x46da19){pdf[_0xbc91('0x58')](_0x41d873,_0x1b836d)[_0xbc91('0x7f')](path[_0xbc91('0x6c')](_0x241554,'interaction-'+_0x1bee2b+'.pdf'),function(_0x3c1eb3,_0x2d76d5){if(_0x3c1eb3)return _0x46da19(_0x3c1eb3);_0x1ab68c(_0x2d76d5);});});}})[_0xbc91('0x23')](function(){if(_0x3f8f7c){return new BPromise(function(_0x2c101e,_0x5b9be1){zipdir(_0x241554,{'saveTo':_0x5420b1},function(_0x2fb797,_0x502494){if(_0x2fb797)return _0x5b9be1(_0x2fb797);return _0x2c101e(_0x502494);});});}})['then'](function(){if(_0x3f8f7c){return new BPromise(function(_0x337339,_0x196bf3){rimraf(_0x241554,function(_0x259d23){if(_0x259d23)_0x196bf3(_0x259d23);return _0x337339();});});}})[_0xbc91('0x23')](function(){if(_0x3f8f7c){return _0x562008['download'](_0x5420b1,_0x47eba1,function(_0x1b313b){if(_0x1b313b){console[_0xbc91('0x80')](_0xbc91('0x81'),_0x1b313b);}else{fs[_0xbc91('0x82')](_0x5420b1);}});}else{return _0x562008['sendStatus'](0xc8);}})[_0xbc91('0x52')](handleError(_0x562008,null));};
\ No newline at end of file
+var _0xd6ce=['SmsInteractionId','$gte','split','findAll','addTags','setTags','spread','smsInteractionTags:save','removeTags','unix','toString','root','server','files','tmp','join','attachments','interaction-%s.zip','firstName','Letter','1cm','<h1>Sms\x20Interaction:\x20#%d</h1>','format','<h2>Date:\x20%s</h2>','MMMM\x20Do\x20YYYY,\x20HH:mm:ss','<hr>','<p\x20style=\x22margin:\x203px;\x22>%s:\x20%s</p>','</div>','toFile','interaction-','.pdf','log','err','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../mysqldb','redis','localhost','register','sendStatus','status','end','json','offset','limit','set','Content-Range','save','then','destroy','error','stack','name','send','rawAttributes','keys','query','dateStart','dateEnd','filters','model','attributes','intersection','fields','nolimit','order','sort','where','pick','add','merge','filter','map','type','key','VIRTUAL','field','tag','include','Tag','Tags','distinct','read','SmsMessage','Messages','direction','createdAt','SmsInteraction','count','includeAll','Users','fullname','CmContact','Contact','User','internal','SmsAccount','Account','color','ThroughTags','rows','show','length','options','find','catch','create','body','params','describe','addMessage','ids','omit','getMessages','hasOwnProperty'];(function(_0x54bd30,_0x3da919){var _0x158327=function(_0x5ec704){while(--_0x5ec704){_0x54bd30['push'](_0x54bd30['shift']());}};_0x158327(++_0x3da919);}(_0xd6ce,0x127));var _0xed6c=function(_0x269036,_0x205e99){_0x269036=_0x269036-0x0;var _0x534559=_0xd6ce[_0x269036];return _0x534559;};'use strict';var pdf=require(_0xed6c('0x0'));var emlformat=require(_0xed6c('0x1'));var rimraf=require(_0xed6c('0x2'));var zipdir=require(_0xed6c('0x3'));var jsonpatch=require(_0xed6c('0x4'));var rp=require(_0xed6c('0x5'));var moment=require(_0xed6c('0x6'));var BPromise=require(_0xed6c('0x7'));var Mustache=require('mustache');var util=require('util');var path=require(_0xed6c('0x8'));var sox=require(_0xed6c('0x9'));var csv=require(_0xed6c('0xa'));var ejs=require(_0xed6c('0xb'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0xed6c('0xc'));var jsforce=require(_0xed6c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xed6c('0xe'));var Papa=require(_0xed6c('0xf'));var Redis=require(_0xed6c('0x10'));var qs=require(_0xed6c('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0xed6c('0x12'))['db'];config['redis']=_['defaults'](config[_0xed6c('0x13')],{'host':_0xed6c('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xed6c('0x13')]));require('./smsInteraction.socket')[_0xed6c('0x15')](socket);function respondWithStatusCode(_0xbcf0f4,_0x47c392){_0x47c392=_0x47c392||0xcc;return function(_0x3f3126){if(_0x3f3126){return _0xbcf0f4[_0xed6c('0x16')](_0x47c392);}return _0xbcf0f4[_0xed6c('0x17')](_0x47c392)[_0xed6c('0x18')]();};}function respondWithResult(_0x4b0ad3,_0x57ec05){_0x57ec05=_0x57ec05||0xc8;return function(_0x2034d4){if(_0x2034d4){return _0x4b0ad3[_0xed6c('0x17')](_0x57ec05)[_0xed6c('0x19')](_0x2034d4);}};}function respondWithFilteredResult(_0x4fbdb5,_0x13c503){return function(_0x526c54){if(_0x526c54){var _0x135efe=_0x526c54['count'],_0x326350=_0x13c503[_0xed6c('0x1a')],_0x32dac0=_0x13c503[_0xed6c('0x1a')]+_0x13c503[_0xed6c('0x1b')],_0x1fe8c0;if(_0x32dac0>=_0x135efe){_0x32dac0=_0x135efe;_0x1fe8c0=0xc8;}else{_0x1fe8c0=0xce;}_0x4fbdb5['status'](_0x1fe8c0);return _0x4fbdb5[_0xed6c('0x1c')](_0xed6c('0x1d'),_0x326350+'-'+_0x32dac0+'/'+_0x135efe)[_0xed6c('0x19')](_0x526c54);}return null;};}function patchUpdates(_0x2aebdc){return function(_0x314aeb){try{jsonpatch['apply'](_0x314aeb,_0x2aebdc,!![]);}catch(_0x85aedf){return BPromise['reject'](_0x85aedf);}return _0x314aeb[_0xed6c('0x1e')]();};}function saveUpdates(_0x37a9ce,_0x30e605){return function(_0x34faac){if(_0x34faac){return _0x34faac['update'](_0x37a9ce)[_0xed6c('0x1f')](function(_0x4e1870){return _0x4e1870;});}return null;};}function removeEntity(_0x351d57,_0x5ea6f4){return function(_0x7882e0){if(_0x7882e0){return _0x7882e0[_0xed6c('0x20')]()[_0xed6c('0x1f')](function(){_0x351d57[_0xed6c('0x17')](0xcc)[_0xed6c('0x18')]();});}};}function handleEntityNotFound(_0x1c3aca,_0x638bc2){return function(_0x27fb6c){if(!_0x27fb6c){_0x1c3aca[_0xed6c('0x16')](0x194);}return _0x27fb6c;};}function handleError(_0x2bb6fc,_0xd7f45d){_0xd7f45d=_0xd7f45d||0x1f4;return function(_0x58538b){logger[_0xed6c('0x21')](_0x58538b[_0xed6c('0x22')]);if(_0x58538b[_0xed6c('0x23')]){delete _0x58538b[_0xed6c('0x23')];}_0x2bb6fc[_0xed6c('0x17')](_0xd7f45d)[_0xed6c('0x24')](_0x58538b);};}exports['index']=function(_0x23ee72,_0x2d03d7){var _0x3182ce={},_0x4e0a5a={},_0x4e4373={'count':0x0,'rows':[]};var _0x531cd0=db['SmsInteraction'][_0xed6c('0x25')];_0x4e0a5a['model']=_[_0xed6c('0x26')](_0x531cd0);var _0x4d4feb={'dateStart':_0x23ee72[_0xed6c('0x27')][_0xed6c('0x28')],'dateEnd':_0x23ee72['query'][_0xed6c('0x29')]};delete _0x23ee72[_0xed6c('0x27')][_0xed6c('0x28')];delete _0x23ee72[_0xed6c('0x27')][_0xed6c('0x29')];_0x4e0a5a[_0xed6c('0x27')]=_['keys'](_0x23ee72[_0xed6c('0x27')]);_0x4e0a5a[_0xed6c('0x2a')]=_['intersection'](_0x4e0a5a[_0xed6c('0x2b')],_0x4e0a5a['query']);_0x3182ce[_0xed6c('0x2c')]=_[_0xed6c('0x2d')](_0x4e0a5a[_0xed6c('0x2b')],qs[_0xed6c('0x2e')](_0x23ee72[_0xed6c('0x27')][_0xed6c('0x2e')]));_0x3182ce['attributes']=_0x3182ce['attributes']['length']?_0x3182ce[_0xed6c('0x2c')]:_0x4e0a5a[_0xed6c('0x2b')];if(!_0x23ee72[_0xed6c('0x27')]['hasOwnProperty'](_0xed6c('0x2f'))){_0x3182ce[_0xed6c('0x1b')]=qs[_0xed6c('0x1b')](_0x23ee72[_0xed6c('0x27')][_0xed6c('0x1b')]);_0x3182ce[_0xed6c('0x1a')]=qs[_0xed6c('0x1a')](_0x23ee72[_0xed6c('0x27')][_0xed6c('0x1a')]);}_0x3182ce[_0xed6c('0x30')]=qs[_0xed6c('0x31')](_0x23ee72[_0xed6c('0x27')]['sort']);_0x3182ce[_0xed6c('0x32')]=qs[_0xed6c('0x2a')](_[_0xed6c('0x33')](_0x23ee72[_0xed6c('0x27')],_0x4e0a5a['filters']));if(_0x4d4feb[_0xed6c('0x28')]){if(_0x4d4feb[_0xed6c('0x29')]){_0x4d4feb[_0xed6c('0x29')]=moment(_0x4d4feb['dateEnd'])[_0xed6c('0x34')](0x1,'day');}else{_0x4d4feb[_0xed6c('0x29')]=moment(_0x4d4feb[_0xed6c('0x28')])[_0xed6c('0x34')](0x1,'day');}_[_0xed6c('0x35')](_0x3182ce[_0xed6c('0x32')],{'createdAt':{'$gte':_0x4d4feb[_0xed6c('0x28')],'$lte':_0x4d4feb[_0xed6c('0x29')]}});}if(_0x23ee72[_0xed6c('0x27')][_0xed6c('0x36')]){_0x3182ce[_0xed6c('0x32')]=_[_0xed6c('0x35')](_0x3182ce[_0xed6c('0x32')],{'$or':_[_0xed6c('0x37')](_0x531cd0,function(_0x212acc){if(_0x212acc[_0xed6c('0x38')][_0xed6c('0x39')]!==_0xed6c('0x3a')){var _0x2bb8eb={};_0x2bb8eb[_0x212acc[_0xed6c('0x3b')]]={'$like':'%'+_0x23ee72['query'][_0xed6c('0x36')]+'%'};return _0x2bb8eb;}})});}_0x3182ce=_[_0xed6c('0x35')]({},_0x3182ce,_0x23ee72['options']);var _0x141ea3={'where':_0x3182ce[_0xed6c('0x32')]};_0x141ea3['include']=[];if(_0x23ee72['query'][_0xed6c('0x3c')]){_0x141ea3[_0xed6c('0x3d')]['push']({'model':db[_0xed6c('0x3e')],'as':_0xed6c('0x3f'),'attributes':['id'],'where':{'id':_0x23ee72['query']['tag']},'required':!![]});_0x141ea3[_0xed6c('0x40')]=!![];}if(_0x23ee72[_0xed6c('0x27')][_0xed6c('0x41')]){_0x141ea3[_0xed6c('0x3d')]['push']({'model':db[_0xed6c('0x42')],'as':_0xed6c('0x43'),'attributes':['id',_0xed6c('0x44'),_0xed6c('0x45'),_0xed6c('0x41')],'where':{'direction':'in','read':_0x23ee72[_0xed6c('0x27')][_0xed6c('0x41')]||![]},'required':!![]});_0x141ea3[_0xed6c('0x40')]=!![];}return db[_0xed6c('0x46')]['count'](_0x141ea3)[_0xed6c('0x1f')](function(_0x53f43d){_0x4e4373[_0xed6c('0x47')]=_0x53f43d;if(_0x23ee72[_0xed6c('0x27')][_0xed6c('0x48')]){_0x3182ce[_0xed6c('0x3d')]=[{'model':db['User'],'as':_0xed6c('0x49'),'required':![],'attributes':['id','name',_0xed6c('0x4a')]},{'model':db[_0xed6c('0x4b')],'as':_0xed6c('0x4c'),'required':![]},{'model':db[_0xed6c('0x4d')],'as':'Owner','attributes':[_0xed6c('0x23'),_0xed6c('0x4a'),_0xed6c('0x4e')],'required':![]},{'model':db[_0xed6c('0x4f')],'as':_0xed6c('0x50'),'attributes':[_0xed6c('0x23'),_0xed6c('0x39')],'required':![]},{'model':db[_0xed6c('0x42')],'as':_0xed6c('0x43'),'attributes':['id',_0xed6c('0x44'),_0xed6c('0x45'),_0xed6c('0x41')],'where':{'direction':'in','read':_0x23ee72[_0xed6c('0x27')][_0xed6c('0x41')]||![]},'required':_0x23ee72[_0xed6c('0x27')][_0xed6c('0x41')]||![]},{'model':db[_0xed6c('0x3e')],'as':'Tags','attributes':['id',_0xed6c('0x23'),_0xed6c('0x51')],'required':_0x23ee72[_0xed6c('0x27')][_0xed6c('0x3c')]?!![]:![]},{'model':db[_0xed6c('0x3e')],'as':_0xed6c('0x52'),'attributes':['id',_0xed6c('0x23'),_0xed6c('0x51')],'through':_0x23ee72['query'][_0xed6c('0x3c')]?{'attributes':[],'where':{'TagId':_0x23ee72[_0xed6c('0x27')][_0xed6c('0x3c')]||undefined}}:{},'required':_0x23ee72[_0xed6c('0x27')][_0xed6c('0x3c')]?!![]:![]}];}return db[_0xed6c('0x46')]['findAll'](_0x3182ce);})[_0xed6c('0x1f')](function(_0x347bea){_0x4e4373[_0xed6c('0x53')]=_0x347bea;return _0x4e4373;})[_0xed6c('0x1f')](respondWithFilteredResult(_0x2d03d7,_0x3182ce))['catch'](handleError(_0x2d03d7,null));};exports[_0xed6c('0x54')]=function(_0x39e366,_0x2d6f1b){var _0x40b9bf={'raw':![],'where':{'id':_0x39e366['params']['id']}},_0x32c422={};_0x32c422[_0xed6c('0x2b')]=_[_0xed6c('0x26')](db['SmsInteraction'][_0xed6c('0x25')]);_0x32c422[_0xed6c('0x27')]=_['keys'](_0x39e366[_0xed6c('0x27')]);_0x32c422[_0xed6c('0x2a')]=_[_0xed6c('0x2d')](_0x32c422[_0xed6c('0x2b')],_0x32c422['query']);_0x40b9bf[_0xed6c('0x2c')]=_['intersection'](_0x32c422[_0xed6c('0x2b')],qs[_0xed6c('0x2e')](_0x39e366[_0xed6c('0x27')][_0xed6c('0x2e')]));_0x40b9bf[_0xed6c('0x2c')]=_0x40b9bf[_0xed6c('0x2c')][_0xed6c('0x55')]?_0x40b9bf[_0xed6c('0x2c')]:_0x32c422['model'];if(_0x39e366[_0xed6c('0x27')][_0xed6c('0x48')]){_0x40b9bf[_0xed6c('0x3d')]=[{'all':!![]}];}_0x40b9bf=_[_0xed6c('0x35')]({},_0x40b9bf,_0x39e366[_0xed6c('0x56')]);return db[_0xed6c('0x46')][_0xed6c('0x57')](_0x40b9bf)[_0xed6c('0x1f')](handleEntityNotFound(_0x2d6f1b,null))[_0xed6c('0x1f')](respondWithResult(_0x2d6f1b,null))[_0xed6c('0x58')](handleError(_0x2d6f1b,null));};exports[_0xed6c('0x59')]=function(_0x58c7b3,_0x1ede26){return db[_0xed6c('0x46')][_0xed6c('0x59')](_0x58c7b3['body'],{})[_0xed6c('0x1f')](respondWithResult(_0x1ede26,0xc9))['catch'](handleError(_0x1ede26,null));};exports['update']=function(_0x2e093e,_0x1b719a){if(_0x2e093e['body']['id']){delete _0x2e093e[_0xed6c('0x5a')]['id'];}return db[_0xed6c('0x46')][_0xed6c('0x57')]({'where':{'id':_0x2e093e[_0xed6c('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1b719a,null))[_0xed6c('0x1f')](saveUpdates(_0x2e093e['body'],null))[_0xed6c('0x1f')](respondWithResult(_0x1b719a,null))['catch'](handleError(_0x1b719a,null));};exports[_0xed6c('0x20')]=function(_0x13e73e,_0x2c6cdb){return db['SmsInteraction']['find']({'where':{'id':_0x13e73e[_0xed6c('0x5b')]['id']}})[_0xed6c('0x1f')](handleEntityNotFound(_0x2c6cdb,null))['then'](removeEntity(_0x2c6cdb,null))[_0xed6c('0x58')](handleError(_0x2c6cdb,null));};exports[_0xed6c('0x5c')]=function(_0x13afc9,_0x38aa78){return db[_0xed6c('0x46')]['describe']()['then'](respondWithResult(_0x38aa78,null))[_0xed6c('0x58')](handleError(_0x38aa78,null));};exports[_0xed6c('0x5d')]=function(_0xb01d6e,_0x3dec47,_0x42d8d8){return db[_0xed6c('0x42')]['find']({'where':{'id':_0xb01d6e['params']['id']}})[_0xed6c('0x1f')](handleEntityNotFound(_0x3dec47,null))[_0xed6c('0x1f')](function(_0x55dc0b){if(_0x55dc0b){return _0x55dc0b[_0xed6c('0x5d')](_0xb01d6e[_0xed6c('0x5a')][_0xed6c('0x5e')],_[_0xed6c('0x5f')](_0xb01d6e['body'],[_0xed6c('0x5e'),'id'])||{});}})['then'](respondWithResult(_0x3dec47,null))[_0xed6c('0x58')](handleError(_0x3dec47,null));};exports[_0xed6c('0x60')]=function(_0x3daf6e,_0x5dbc83,_0x130b7b){var _0x4a7c99={'raw':![],'where':{}};var _0x1f336c={};var _0x54741d={'count':0x0,'rows':[]};return db[_0xed6c('0x46')]['findOne']({'where':{'id':_0x3daf6e[_0xed6c('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5dbc83,null))[_0xed6c('0x1f')](function(_0x39385c){if(_0x39385c){_0x1f336c[_0xed6c('0x2b')]=_['keys'](db[_0xed6c('0x42')]['rawAttributes']);_0x1f336c[_0xed6c('0x27')]=_[_0xed6c('0x26')](_0x3daf6e[_0xed6c('0x27')]);_0x1f336c[_0xed6c('0x2a')]=_[_0xed6c('0x2d')](_0x1f336c[_0xed6c('0x2b')],_0x1f336c['query']);_0x4a7c99['attributes']=_[_0xed6c('0x2d')](_0x1f336c['model'],qs[_0xed6c('0x2e')](_0x3daf6e[_0xed6c('0x27')][_0xed6c('0x2e')]));_0x4a7c99['attributes']=_0x4a7c99[_0xed6c('0x2c')]['length']?_0x4a7c99[_0xed6c('0x2c')]:_0x1f336c['model'];if(!_0x3daf6e[_0xed6c('0x27')][_0xed6c('0x61')](_0xed6c('0x2f'))){_0x4a7c99[_0xed6c('0x1b')]=qs['limit'](_0x3daf6e[_0xed6c('0x27')][_0xed6c('0x1b')]);_0x4a7c99[_0xed6c('0x1a')]=qs[_0xed6c('0x1a')](_0x3daf6e['query'][_0xed6c('0x1a')]);}_0x4a7c99[_0xed6c('0x30')]=qs['sort'](_0x3daf6e['query'][_0xed6c('0x31')]);_0x4a7c99[_0xed6c('0x32')]=qs['filters'](_['pick'](_0x3daf6e[_0xed6c('0x27')],_0x1f336c[_0xed6c('0x2a')]));_0x4a7c99[_0xed6c('0x32')][_0xed6c('0x62')]=_0x39385c['id'];if(_0x3daf6e[_0xed6c('0x27')][_0xed6c('0x36')]){_0x4a7c99[_0xed6c('0x32')]=_[_0xed6c('0x35')](_0x4a7c99[_0xed6c('0x32')],{'$or':_[_0xed6c('0x37')](_0x4a7c99[_0xed6c('0x2c')],function(_0x1b49d6){var _0x2972de={};_0x2972de[_0x1b49d6]={'$like':'%'+_0x3daf6e[_0xed6c('0x27')][_0xed6c('0x36')]+'%'};return _0x2972de;})});}if(_0x3daf6e[_0xed6c('0x27')]['$gte']){var _0x292275=_0x3daf6e[_0xed6c('0x27')][_0xed6c('0x63')][_0xed6c('0x64')](',');var _0x2e6545={};_0x2e6545[_0x292275[0x0]]={'$gte':moment(_0x292275[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x4a7c99[_0xed6c('0x32')]=_['merge'](_0x4a7c99['where'],_0x2e6545);}_0x4a7c99=_[_0xed6c('0x35')]({},_0x4a7c99,_0x3daf6e[_0xed6c('0x56')]);return db[_0xed6c('0x42')]['count']({'where':_0x4a7c99['where']})[_0xed6c('0x1f')](function(_0x1523d2){_0x54741d[_0xed6c('0x47')]=_0x1523d2;if(_0x3daf6e[_0xed6c('0x27')][_0xed6c('0x48')]){_0x4a7c99[_0xed6c('0x3d')]=[{'all':!![]}];}return db['SmsMessage'][_0xed6c('0x65')](_0x4a7c99);})[_0xed6c('0x1f')](function(_0x5e7942){_0x54741d[_0xed6c('0x53')]=_0x5e7942;return _0x54741d;});}})[_0xed6c('0x1f')](respondWithFilteredResult(_0x5dbc83,_0x4a7c99))['catch'](handleError(_0x5dbc83,null));};exports[_0xed6c('0x66')]=function(_0x105a07,_0xf05f66,_0x4c28a8){return db[_0xed6c('0x46')][_0xed6c('0x57')]({'where':{'id':_0x105a07['params']['id']}})['then'](handleEntityNotFound(_0xf05f66,null))['then'](function(_0x1bcdf3){if(_0x1bcdf3){return _0x1bcdf3[_0xed6c('0x67')](_0x105a07['body'][_0xed6c('0x5e')],_[_0xed6c('0x5f')](_0x105a07['body'],[_0xed6c('0x5e'),'id'])||{})[_0xed6c('0x68')](function(){return db[_0xed6c('0x3e')][_0xed6c('0x65')]({'attributes':['id','name','color'],'where':{'id':_0x105a07[_0xed6c('0x5a')][_0xed6c('0x5e')]}});})[_0xed6c('0x1f')](function(_0x39d076){socket['emit'](_0xed6c('0x69'),{'id':Number(_0x105a07[_0xed6c('0x5b')]['id']),'tags':_0x39d076||[]});return{'id':Number(_0x105a07[_0xed6c('0x5b')]['id']),'tags':_0x39d076||[]};});}})['then'](respondWithResult(_0xf05f66,null))[_0xed6c('0x58')](handleError(_0xf05f66,null));};exports['removeTags']=function(_0x5017be,_0x42cd1e,_0x55cfb5){var _0x3f072e;return db['SmsInteraction']['find']({'where':{'id':_0x5017be[_0xed6c('0x5b')]['id']}})['then'](handleEntityNotFound(_0x42cd1e,null))[_0xed6c('0x1f')](function(_0x37d592){if(_0x37d592){return _0x37d592[_0xed6c('0x6a')](_0x5017be[_0xed6c('0x27')][_0xed6c('0x5e')]);}})[_0xed6c('0x1f')](respondWithStatusCode(_0x42cd1e,null))[_0xed6c('0x58')](handleError(_0x42cd1e,null));};exports['download']=function(_0x52b56c,_0x327ba9){var _0x48a57b=moment()[_0xed6c('0x6b')]()[_0xed6c('0x6c')]();var _0x2b3b41=path['join'](config[_0xed6c('0x6d')],_0xed6c('0x6e'),_0xed6c('0x6f'),_0xed6c('0x70'));var _0x112139=path[_0xed6c('0x71')](config[_0xed6c('0x6d')],'server','files',_0xed6c('0x72'));var _0x4f6401=path['join'](_0x2b3b41,_0x48a57b);var _0x333353=util['format'](_0xed6c('0x73'),_0x48a57b);var _0x4ca3fb=path[_0xed6c('0x71')](_0x2b3b41,_0x333353);var _0x4a01ea=![];return db[_0xed6c('0x46')]['find']({'where':{'id':_0x52b56c[_0xed6c('0x5b')]['id']},'include':[{'model':db['SmsMessage'],'as':_0xed6c('0x43'),'attributes':['id',_0xed6c('0x5a')],'include':[{'model':db[_0xed6c('0x4d')],'as':'User','attributes':['id',_0xed6c('0x4a')],'raw':!![]},{'model':db[_0xed6c('0x4b')],'as':'Contact','attributes':['id',_0xed6c('0x74')],'raw':!![]}]}]})[_0xed6c('0x1f')](handleEntityNotFound(_0x327ba9,null))[_0xed6c('0x1f')](function(_0x24f4cb){if(_0x24f4cb){_0x4a01ea=!![];var _0x3f0872='';var _0x12d29c={'format':_0xed6c('0x75'),'border':_0xed6c('0x76')};fs['mkdirSync'](_0x4f6401);_0x3f0872+=util['format'](_0xed6c('0x77'),_0x24f4cb['id']);_0x3f0872+=util[_0xed6c('0x78')](_0xed6c('0x79'),moment()[_0xed6c('0x78')](_0xed6c('0x7a'))[_0xed6c('0x6c')]());_0x3f0872+=_0xed6c('0x7b');for(var _0x4dd99b=0x0;_0x4dd99b<_0x24f4cb['Messages'][_0xed6c('0x55')];_0x4dd99b++){var _0x1c26b3=_0x24f4cb['Messages'][_0x4dd99b];_0x3f0872+='<div\x20style=\x22border-style:\x20solid;\x20border-width:\x201px;\x20margin:\x203px;\x22>';_0x3f0872+=util[_0xed6c('0x78')](_0xed6c('0x7c'),_0x1c26b3[_0xed6c('0x4d')]?_0x1c26b3[_0xed6c('0x4d')][_0xed6c('0x4a')]:_0x1c26b3[_0xed6c('0x4c')][_0xed6c('0x74')],_0x1c26b3[_0xed6c('0x5a')]);_0x3f0872+=_0xed6c('0x7d');}return new BPromise(function(_0x18a479,_0x4125f4){pdf[_0xed6c('0x59')](_0x3f0872,_0x12d29c)[_0xed6c('0x7e')](path['join'](_0x4f6401,_0xed6c('0x7f')+_0x48a57b+_0xed6c('0x80')),function(_0x13dae4,_0x1d2375){if(_0x13dae4)return _0x4125f4(_0x13dae4);_0x18a479(_0x1d2375);});});}})[_0xed6c('0x1f')](function(){if(_0x4a01ea){return new BPromise(function(_0x3886b4,_0x3e5064){zipdir(_0x4f6401,{'saveTo':_0x4ca3fb},function(_0x40000b,_0x6de8a8){if(_0x40000b)return _0x3e5064(_0x40000b);return _0x3886b4(_0x6de8a8);});});}})[_0xed6c('0x1f')](function(){if(_0x4a01ea){return new BPromise(function(_0x18c36e,_0x347ccf){rimraf(_0x4f6401,function(_0x182746){if(_0x182746)_0x347ccf(_0x182746);return _0x18c36e();});});}})[_0xed6c('0x1f')](function(){if(_0x4a01ea){return _0x327ba9['download'](_0x4ca3fb,_0x333353,function(_0x1f0298){if(_0x1f0298){console[_0xed6c('0x81')](_0xed6c('0x82'),_0x1f0298);}else{fs['unlinkSync'](_0x4ca3fb);}});}else{return _0x327ba9['sendStatus'](0xc8);}})[_0xed6c('0x58')](handleError(_0x327ba9,null));};
\ No newline at end of file
index 8f20bca..4d10ac3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d20=['emit','hasOwnProperty','exports','events','../../mysqldb','SmsInteraction','setMaxListeners','save','update'];(function(_0x4370c7,_0x5dbfb0){var _0xce78a9=function(_0x157b2c){while(--_0x157b2c){_0x4370c7['push'](_0x4370c7['shift']());}};_0xce78a9(++_0x5dbfb0);}(_0x5d20,0x1b3));var _0x05d2=function(_0x209b37,_0x5eec62){_0x209b37=_0x209b37-0x0;var _0x1012e2=_0x5d20[_0x209b37];return _0x1012e2;};'use strict';var EventEmitter=require(_0x05d2('0x0'));var SmsInteraction=require(_0x05d2('0x1'))['db'][_0x05d2('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x05d2('0x3')](0x0);var events={'afterCreate':_0x05d2('0x4'),'afterUpdate':_0x05d2('0x5'),'afterDestroy':'remove'};function emitEvent(_0x527efc){return function(_0x50f0e8,_0x5e2031,_0x1f1099){SmsInteractionEvents[_0x05d2('0x6')](_0x527efc+':'+_0x50f0e8['id'],_0x50f0e8);SmsInteractionEvents[_0x05d2('0x6')](_0x527efc,_0x50f0e8);_0x1f1099(null);};}for(var e in events){if(events[_0x05d2('0x7')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x05d2('0x8')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x4e8c=['../../mysqldb','SmsInteraction','save','update','emit','hasOwnProperty','hook','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4e8c,0x70));var _0xc4e8=function(_0x49693f,_0x4d994f){_0x49693f=_0x49693f-0x0;var _0x1b0f6e=_0x4e8c[_0x49693f];return _0x1b0f6e;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0xc4e8('0x0'))['db'][_0xc4e8('0x1')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc4e8('0x2'),'afterUpdate':_0xc4e8('0x3'),'afterDestroy':'remove'};function emitEvent(_0x570aa6){return function(_0x46631b,_0x3c8250,_0x3e6a5e){SmsInteractionEvents[_0xc4e8('0x4')](_0x570aa6+':'+_0x46631b['id'],_0x46631b);SmsInteractionEvents[_0xc4e8('0x4')](_0x570aa6,_0x46631b);_0x3e6a5e(null);};}for(var e in events){if(events[_0xc4e8('0x5')](e)){var event=events[e];SmsInteraction[_0xc4e8('0x6')](e,emitEvent(event));}}module[_0xc4e8('0x7')]=SmsInteractionEvents;
\ No newline at end of file
index 9269f1f..9404251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf9=['sms_interactions','lodash','util','api','moment','bluebird','request-promise','define','SmsInteraction'];(function(_0x55e7ce,_0x458e64){var _0xcf8d38=function(_0x337127){while(--_0x337127){_0x55e7ce['push'](_0x55e7ce['shift']());}};_0xcf8d38(++_0x458e64);}(_0xcaf9,0xb5));var _0x9caf=function(_0x49a4e3,_0x34eb2a){_0x49a4e3=_0x49a4e3-0x0;var _0x4f915d=_0xcaf9[_0x49a4e3];return _0x4f915d;};'use strict';var _=require(_0x9caf('0x0'));var util=require(_0x9caf('0x1'));var logger=require('../../config/logger')(_0x9caf('0x2'));var moment=require(_0x9caf('0x3'));var BPromise=require(_0x9caf('0x4'));var rp=require(_0x9caf('0x5'));var attributes=require('./smsInteraction.attributes');module['exports']=function(_0x29f3a6,_0x977b7){return _0x29f3a6[_0x9caf('0x6')](_0x9caf('0x7'),attributes,{'tableName':_0x9caf('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8106=['./smsInteraction.attributes','define','SmsInteraction','sms_interactions','lodash','../../config/logger','api','moment','request-promise'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0x8106,0x190));var _0x6810=function(_0x4f8377,_0x449b48){_0x4f8377=_0x4f8377-0x0;var _0xc7212f=_0x8106[_0x4f8377];return _0xc7212f;};'use strict';var _=require(_0x6810('0x0'));var util=require('util');var logger=require(_0x6810('0x1'))(_0x6810('0x2'));var moment=require(_0x6810('0x3'));var BPromise=require('bluebird');var rp=require(_0x6810('0x4'));var attributes=require(_0x6810('0x5'));module['exports']=function(_0x2b0edc,_0x1c5e96){return _0x2b0edc[_0x6810('0x6')](_0x6810('0x7'),attributes,{'tableName':_0x6810('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d1fe34..da4d315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d03=['code','message','SmsInteraction,\x20%s,\x20%s','result','update','body','options','raw','where','attributes','limit','catch','UpdateSmsInteraction','AddTagsToSmsInteraction','SmsInteraction','find','addTags','ids','spread','AddTags','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','redis','defaults','localhost','./smsInteraction.socket','register','request','then','info','debug','request\x20sent','stringify','error'];(function(_0x4cba0a,_0x832d04){var _0x4a2f10=function(_0x440cb1){while(--_0x440cb1){_0x4cba0a['push'](_0x4cba0a['shift']());}};_0x4a2f10(++_0x832d04);}(_0x1d03,0x66));var _0x31d0=function(_0x13b93c,_0x180849){_0x13b93c=_0x13b93c-0x0;var _0x5c9917=_0x1d03[_0x13b93c];return _0x5c9917;};'use strict';var _=require(_0x31d0('0x0'));var util=require(_0x31d0('0x1'));var moment=require(_0x31d0('0x2'));var BPromise=require('bluebird');var rs=require(_0x31d0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x31d0('0x4'))['db'];var utils=require(_0x31d0('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x31d0('0x6'));var jayson=require(_0x31d0('0x7'));var client=jayson[_0x31d0('0x8')]['http']({'port':0x232a});config[_0x31d0('0x9')]=_[_0x31d0('0xa')](config['redis'],{'host':_0x31d0('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x31d0('0x9')]));require(_0x31d0('0xc'))[_0x31d0('0xd')](socket);function respondWithRpcPromise(_0x3ba8b9,_0x2d4ef5,_0x20b958){return new BPromise(function(_0x306b2b,_0x39093a){return client[_0x31d0('0xe')](_0x3ba8b9,_0x20b958)[_0x31d0('0xf')](function(_0x301e88){logger[_0x31d0('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x2d4ef5,'request\x20sent');logger[_0x31d0('0x11')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x2d4ef5,_0x31d0('0x12'),JSON[_0x31d0('0x13')](_0x301e88));if(_0x301e88[_0x31d0('0x14')]){if(_0x301e88[_0x31d0('0x14')][_0x31d0('0x15')]===0x1f4){logger[_0x31d0('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x2d4ef5,_0x301e88['error'][_0x31d0('0x16')]);return _0x39093a(_0x301e88[_0x31d0('0x14')][_0x31d0('0x16')]);}logger[_0x31d0('0x14')]('SmsInteraction,\x20%s,\x20%s',_0x2d4ef5,_0x301e88['error'][_0x31d0('0x16')]);return _0x306b2b(_0x301e88['error'][_0x31d0('0x16')]);}else{logger[_0x31d0('0x10')](_0x31d0('0x17'),_0x2d4ef5,_0x31d0('0x12'));_0x306b2b(_0x301e88[_0x31d0('0x18')][_0x31d0('0x16')]);}})['catch'](function(_0x2c3049){logger['error'](_0x31d0('0x17'),_0x2d4ef5,_0x2c3049);_0x39093a(_0x2c3049);});});}exports['UpdateSmsInteraction']=function(_0x446d89){var _0x12e95e=this;return new Promise(function(_0x43412f,_0x26db8d){return db['SmsInteraction'][_0x31d0('0x19')](_0x446d89[_0x31d0('0x1a')],{'raw':_0x446d89[_0x31d0('0x1b')]?_0x446d89[_0x31d0('0x1b')][_0x31d0('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x446d89[_0x31d0('0x1b')]?_0x446d89[_0x31d0('0x1b')][_0x31d0('0x1d')]||null:null,'attributes':_0x446d89[_0x31d0('0x1b')]?_0x446d89[_0x31d0('0x1b')][_0x31d0('0x1e')]||null:null,'limit':_0x446d89[_0x31d0('0x1b')]?_0x446d89[_0x31d0('0x1b')][_0x31d0('0x1f')]||null:null})['then'](function(_0xab6d4f){logger[_0x31d0('0x10')]('UpdateSmsInteraction',_0x446d89);logger[_0x31d0('0x11')]('UpdateSmsInteraction',_0x446d89,JSON[_0x31d0('0x13')](_0xab6d4f));_0x43412f(_0xab6d4f);})[_0x31d0('0x20')](function(_0x16c08f){logger['error'](_0x31d0('0x21'),_0x16c08f['message'],_0x446d89);_0x26db8d(_0x12e95e[_0x31d0('0x14')](0x1f4,_0x16c08f[_0x31d0('0x16')]));});});};exports[_0x31d0('0x22')]=function(_0x5678c2){return new Promise(function(_0xa099e0,_0x8bb677){return db[_0x31d0('0x23')][_0x31d0('0x24')]({'where':_0x5678c2[_0x31d0('0x1b')]?_0x5678c2[_0x31d0('0x1b')][_0x31d0('0x1d')]||null:null})[_0x31d0('0xf')](function(_0x321141){if(_0x321141){return _0x321141[_0x31d0('0x25')](_0x5678c2[_0x31d0('0x1a')]['ids'],_['omit'](_0x5678c2[_0x31d0('0x1a')],[_0x31d0('0x26'),'id'])||{});}})[_0x31d0('0x27')](function(_0x137004){logger[_0x31d0('0x10')]('AddTags',_0x5678c2);logger[_0x31d0('0x11')]('AddTags',_0x5678c2,JSON[_0x31d0('0x13')](_0x137004));_0xa099e0(_0x137004);})[_0x31d0('0x20')](function(_0xe78057){logger[_0x31d0('0x14')](_0x31d0('0x28'),_0xe78057['message'],_0x5678c2);_0x8bb677(_this[_0x31d0('0x14')](0x1f4,_0xe78057[_0x31d0('0x16')]));});});};
\ No newline at end of file
+var _0x4be6=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./smsInteraction.socket','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','AddTagsToSmsInteraction','find','addTags','ids','spread','AddTags','lodash','util','moment'];(function(_0x4ba054,_0x4fd478){var _0x4e5ec7=function(_0x4020b3){while(--_0x4020b3){_0x4ba054['push'](_0x4ba054['shift']());}};_0x4e5ec7(++_0x4fd478);}(_0x4be6,0x7e));var _0x64be=function(_0x4fac58,_0x213b99){_0x4fac58=_0x4fac58-0x0;var _0x10e5d1=_0x4be6[_0x4fac58];return _0x10e5d1;};'use strict';var _=require(_0x64be('0x0'));var util=require(_0x64be('0x1'));var moment=require(_0x64be('0x2'));var BPromise=require(_0x64be('0x3'));var rs=require(_0x64be('0x4'));var fs=require('fs');var Redis=require(_0x64be('0x5'));var db=require(_0x64be('0x6'))['db'];var utils=require(_0x64be('0x7'));var logger=require('../../config/logger')(_0x64be('0x8'));var config=require(_0x64be('0x9'));var jayson=require(_0x64be('0xa'));var client=jayson[_0x64be('0xb')][_0x64be('0xc')]({'port':0x232a});config[_0x64be('0xd')]=_[_0x64be('0xe')](config[_0x64be('0xd')],{'host':_0x64be('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x64be('0xd')]));require(_0x64be('0x10'))['register'](socket);function respondWithRpcPromise(_0xa65e32,_0x5c30c3,_0x2bee5b){return new BPromise(function(_0x6afbfa,_0x1d82a9){return client[_0x64be('0x11')](_0xa65e32,_0x2bee5b)[_0x64be('0x12')](function(_0x585a0f){logger[_0x64be('0x13')](_0x64be('0x14'),_0x5c30c3,_0x64be('0x15'));logger[_0x64be('0x16')](_0x64be('0x17'),_0x5c30c3,_0x64be('0x15'),JSON[_0x64be('0x18')](_0x585a0f));if(_0x585a0f[_0x64be('0x19')]){if(_0x585a0f[_0x64be('0x19')]['code']===0x1f4){logger[_0x64be('0x19')](_0x64be('0x14'),_0x5c30c3,_0x585a0f['error'][_0x64be('0x1a')]);return _0x1d82a9(_0x585a0f['error']['message']);}logger[_0x64be('0x19')]('SmsInteraction,\x20%s,\x20%s',_0x5c30c3,_0x585a0f[_0x64be('0x19')][_0x64be('0x1a')]);return _0x6afbfa(_0x585a0f[_0x64be('0x19')][_0x64be('0x1a')]);}else{logger[_0x64be('0x13')]('SmsInteraction,\x20%s,\x20%s',_0x5c30c3,_0x64be('0x15'));_0x6afbfa(_0x585a0f['result'][_0x64be('0x1a')]);}})[_0x64be('0x1b')](function(_0x5e82e9){logger[_0x64be('0x19')]('SmsInteraction,\x20%s,\x20%s',_0x5c30c3,_0x5e82e9);_0x1d82a9(_0x5e82e9);});});}exports[_0x64be('0x1c')]=function(_0x579a6e){var _0xb8614=this;return new Promise(function(_0x318587,_0x57b866){return db[_0x64be('0x1d')][_0x64be('0x1e')](_0x579a6e[_0x64be('0x1f')],{'raw':_0x579a6e[_0x64be('0x20')]?_0x579a6e[_0x64be('0x20')][_0x64be('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x579a6e[_0x64be('0x20')]?_0x579a6e[_0x64be('0x20')][_0x64be('0x22')]||null:null,'attributes':_0x579a6e[_0x64be('0x20')]?_0x579a6e[_0x64be('0x20')][_0x64be('0x23')]||null:null,'limit':_0x579a6e[_0x64be('0x20')]?_0x579a6e['options'][_0x64be('0x24')]||null:null})[_0x64be('0x12')](function(_0x374329){logger[_0x64be('0x13')](_0x64be('0x1c'),_0x579a6e);logger[_0x64be('0x16')](_0x64be('0x1c'),_0x579a6e,JSON[_0x64be('0x18')](_0x374329));_0x318587(_0x374329);})[_0x64be('0x1b')](function(_0x490f1a){logger[_0x64be('0x19')](_0x64be('0x1c'),_0x490f1a['message'],_0x579a6e);_0x57b866(_0xb8614[_0x64be('0x19')](0x1f4,_0x490f1a[_0x64be('0x1a')]));});});};exports[_0x64be('0x25')]=function(_0x34d6e4){return new Promise(function(_0x44c720,_0x1cf28f){return db[_0x64be('0x1d')][_0x64be('0x26')]({'where':_0x34d6e4[_0x64be('0x20')]?_0x34d6e4[_0x64be('0x20')][_0x64be('0x22')]||null:null})['then'](function(_0x2eb823){if(_0x2eb823){return _0x2eb823[_0x64be('0x27')](_0x34d6e4[_0x64be('0x1f')]['ids'],_['omit'](_0x34d6e4[_0x64be('0x1f')],[_0x64be('0x28'),'id'])||{});}})[_0x64be('0x29')](function(_0x4cf137){logger['info']('AddTags',_0x34d6e4);logger[_0x64be('0x16')](_0x64be('0x2a'),_0x34d6e4,JSON[_0x64be('0x18')](_0x4cf137));_0x44c720(_0x4cf137);})[_0x64be('0x1b')](function(_0x3ce89f){logger[_0x64be('0x19')](_0x64be('0x2a'),_0x3ce89f[_0x64be('0x1a')],_0x34d6e4);_0x1cf28f(_this['error'](0x1f4,_0x3ce89f[_0x64be('0x1a')]));});});};
\ No newline at end of file
index 4efad03..e265933 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f67=['smsInteraction:','./smsInteraction.events','remove','update','emit','removeListener','register'];(function(_0x1f13eb,_0xee83a0){var _0x1ab93c=function(_0x26f63b){while(--_0x26f63b){_0x1f13eb['push'](_0x1f13eb['shift']());}};_0x1ab93c(++_0xee83a0);}(_0x3f67,0x189));var _0x73f6=function(_0xc3aae7,_0x3bfa91){_0xc3aae7=_0xc3aae7-0x0;var _0x1f365a=_0x3f67[_0xc3aae7];return _0x1f365a;};'use strict';var SmsInteractionEvents=require(_0x73f6('0x0'));var events=['save',_0x73f6('0x1'),_0x73f6('0x2')];function createListener(_0x55b3d9,_0x481400){return function(_0x3d5d14){_0x481400[_0x73f6('0x3')](_0x55b3d9,_0x3d5d14);};}function removeListener(_0x113b17,_0x5696ba){return function(){SmsInteractionEvents[_0x73f6('0x4')](_0x113b17,_0x5696ba);};}exports[_0x73f6('0x5')]=function(_0x89e14f){for(var _0x354ed2=0x0,_0x5372c3=events['length'];_0x354ed2<_0x5372c3;_0x354ed2++){var _0x5a7d7c=events[_0x354ed2];var _0x2cdcfe=createListener(_0x73f6('0x6')+_0x5a7d7c,_0x89e14f);SmsInteractionEvents['on'](_0x5a7d7c,_0x2cdcfe);}};
\ No newline at end of file
+var _0xe697=['remove','emit','smsInteraction:','save'];(function(_0x3e8ff8,_0x53eba4){var _0x3c8315=function(_0x413b1b){while(--_0x413b1b){_0x3e8ff8['push'](_0x3e8ff8['shift']());}};_0x3c8315(++_0x53eba4);}(_0xe697,0x1cf));var _0x7e69=function(_0x255c48,_0x2a4449){_0x255c48=_0x255c48-0x0;var _0xaebda3=_0xe697[_0x255c48];return _0xaebda3;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x7e69('0x0'),_0x7e69('0x1'),'update'];function createListener(_0x4fe0b0,_0x22a580){return function(_0xe278f7){_0x22a580[_0x7e69('0x2')](_0x4fe0b0,_0xe278f7);};}function removeListener(_0x53373f,_0x4ec532){return function(){SmsInteractionEvents['removeListener'](_0x53373f,_0x4ec532);};}exports['register']=function(_0x56dca7){for(var _0x5c893a=0x0,_0x307335=events['length'];_0x5c893a<_0x307335;_0x5c893a++){var _0x6c1cf0=events[_0x5c893a];var _0x5e5a57=createListener(_0x7e69('0x3')+_0x6c1cf0,_0x56dca7);SmsInteractionEvents['on'](_0x6c1cf0,_0x5e5a57);}};
\ No newline at end of file
index a7cf504..b4fc915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x601b=['update','put','accept','/:id/reject','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','sms','smsmessage:create','create','/:id/status','status'];(function(_0x56e38b,_0x5e0b5b){var _0x2c5266=function(_0x4f8919){while(--_0x4f8919){_0x56e38b['push'](_0x56e38b['shift']());}};_0x2c5266(++_0x5e0b5b);}(_0x601b,0x109));var _0xb601=function(_0x2b6bb,_0x17af88){_0x2b6bb=_0x2b6bb-0x0;var _0x275f6b=_0x601b[_0x2b6bb];return _0x275f6b;};'use strict';var multer=require(_0xb601('0x0'));var util=require(_0xb601('0x1'));var path=require('path');var timeout=require(_0xb601('0x2'));var express=require(_0xb601('0x3'));var router=express[_0xb601('0x4')]();var auth=require(_0xb601('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb601('0x6'));var controller=require('./smsMessage.controller');router[_0xb601('0x7')]('/',auth[_0xb601('0x8')](),controller[_0xb601('0x9')]);router['get'](_0xb601('0xa'),auth[_0xb601('0x8')](),controller[_0xb601('0xb')]);router[_0xb601('0x7')](_0xb601('0xc'),auth[_0xb601('0x8')](),controller[_0xb601('0xd')]);router[_0xb601('0xe')]('/',auth[_0xb601('0x8')](),interaction[_0xb601('0xf')](_0xb601('0x10'),_0xb601('0x11')),controller[_0xb601('0x12')]);router['post'](_0xb601('0x13'),controller[_0xb601('0x14')]);router['put'](_0xb601('0xc'),auth[_0xb601('0x8')](),controller[_0xb601('0x15')]);router[_0xb601('0x16')]('/:id/accept',auth[_0xb601('0x8')](),controller[_0xb601('0x17')]);router[_0xb601('0x16')](_0xb601('0x18'),auth[_0xb601('0x8')](),controller['reject']);router['delete'](_0xb601('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xb601('0x19')]=router;
\ No newline at end of file
+var _0xe346=['/:id/status','status','put','/:id/accept','accept','reject','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','tracked','sms','smsmessage:create'];(function(_0x44ed50,_0x27fe97){var _0x4788ea=function(_0x2d286d){while(--_0x2d286d){_0x44ed50['push'](_0x44ed50['shift']());}};_0x4788ea(++_0x27fe97);}(_0xe346,0x89));var _0x6e34=function(_0x4286c7,_0xe6a8d4){_0x4286c7=_0x4286c7-0x0;var _0x426147=_0xe346[_0x4286c7];return _0x426147;};'use strict';var multer=require(_0x6e34('0x0'));var util=require('util');var path=require(_0x6e34('0x1'));var timeout=require(_0x6e34('0x2'));var express=require(_0x6e34('0x3'));var router=express[_0x6e34('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0x6e34('0x5'));var config=require(_0x6e34('0x6'));var controller=require(_0x6e34('0x7'));router[_0x6e34('0x8')]('/',auth['isAuthenticated'](),controller[_0x6e34('0x9')]);router[_0x6e34('0x8')](_0x6e34('0xa'),auth[_0x6e34('0xb')](),controller[_0x6e34('0xc')]);router[_0x6e34('0x8')](_0x6e34('0xd'),auth[_0x6e34('0xb')](),controller[_0x6e34('0xe')]);router[_0x6e34('0xf')]('/',auth[_0x6e34('0xb')](),interaction[_0x6e34('0x10')](_0x6e34('0x11'),_0x6e34('0x12')),controller['create']);router[_0x6e34('0xf')](_0x6e34('0x13'),controller[_0x6e34('0x14')]);router[_0x6e34('0x15')](_0x6e34('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x6e34('0x15')](_0x6e34('0x16'),auth[_0x6e34('0xb')](),controller[_0x6e34('0x17')]);router[_0x6e34('0x15')]('/:id/reject',auth[_0x6e34('0xb')](),controller[_0x6e34('0x18')]);router['delete'](_0x6e34('0xd'),auth[_0x6e34('0xb')](),controller['destroy']);module[_0x6e34('0x19')]=router;
\ No newline at end of file
index e9296da..f8d8669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5da=['exports','medium','BOOLEAN','ENUM','out','STRING','DATE','sequelize'];(function(_0x82cf1f,_0x389de6){var _0x46002c=function(_0x25b9ca){while(--_0x25b9ca){_0x82cf1f['push'](_0x82cf1f['shift']());}};_0x46002c(++_0x389de6);}(_0xd5da,0x9f));var _0xad5d=function(_0x126596,_0x56b2a9){_0x126596=_0x126596-0x0;var _0x21f435=_0xd5da[_0x126596];return _0x21f435;};'use strict';var Sequelize=require(_0xad5d('0x0'));module[_0xad5d('0x1')]={'body':{'type':Sequelize['TEXT'](_0xad5d('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xad5d('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xad5d('0x4')]('in','out'),'defaultValue':_0xad5d('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xad5d('0x6')]},'readAt':{'type':Sequelize[_0xad5d('0x7')]},'secret':{'type':Sequelize[_0xad5d('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4a80=['medium','ENUM','out','STRING','DATE','BOOLEAN','sequelize','TEXT'];(function(_0x27fc6b,_0x45ea0a){var _0x40d832=function(_0x3fbbb4){while(--_0x3fbbb4){_0x27fc6b['push'](_0x27fc6b['shift']());}};_0x40d832(++_0x45ea0a);}(_0x4a80,0xbe));var _0x04a8=function(_0x5db018,_0x504f94){_0x5db018=_0x5db018-0x0;var _0xe48a05=_0x4a80[_0x5db018];return _0xe48a05;};'use strict';var Sequelize=require(_0x04a8('0x0'));module['exports']={'body':{'type':Sequelize[_0x04a8('0x1')](_0x04a8('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x04a8('0x3')]('in',_0x04a8('0x4')),'defaultValue':_0x04a8('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x04a8('0x5')](0xbe)},'phone':{'type':Sequelize[_0x04a8('0x5')]},'readAt':{'type':Sequelize[_0x04a8('0x6')]},'secret':{'type':Sequelize[_0x04a8('0x7')],'defaultValue':![]}};
\ No newline at end of file
index a2179d5..125784d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8507=['key','VIRTUAL','options','count','includeAll','include','rows','params','SmsMessage','rawAttributes','find','create','body','update','describe','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','Contact','SmsInteraction','SmsInteractionId','isNil','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','acceptMessage','manual','SIP/%s','channel','event','EventManager','acceptmessage','../../config/logger','sms-interactions','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','rejectmessage','SmsAccountId','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','twilio','plivo','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','SmsAccount,\x20%s,\x20%s,\x20%s','html-pdf','eml-format','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','register','client','http','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','set','Content-Range','apply','reject','destroy','then','stack','name','send','keys','query','dateStart','dateEnd','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','add','day','where','filter','merge','map','type'];(function(_0x1ee35d,_0x56b6a8){var _0x1338d2=function(_0x16820d){while(--_0x16820d){_0x1ee35d['push'](_0x1ee35d['shift']());}};_0x1338d2(++_0x56b6a8);}(_0x8507,0xc5));var _0x7850=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8507[_0x20a584];return _0x4b41a8;};'use strict';var pdf=require(_0x7850('0x0'));var emlformat=require(_0x7850('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x7850('0x2'));var jsonpatch=require(_0x7850('0x3'));var rp=require('request-promise');var moment=require(_0x7850('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7850('0x5'));var path=require(_0x7850('0x6'));var sox=require(_0x7850('0x7'));var csv=require(_0x7850('0x8'));var ejs=require(_0x7850('0x9'));var fs=require('fs');var _=require(_0x7850('0xa'));var squel=require(_0x7850('0xb'));var crypto=require(_0x7850('0xc'));var jsforce=require(_0x7850('0xd'));var deskjs=require(_0x7850('0xe'));var toCsv=require(_0x7850('0x8'));var querystring=require('querystring');var Papa=require(_0x7850('0xf'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var utils=require(_0x7850('0x10'));var config=require(_0x7850('0x11'));var db=require(_0x7850('0x12'))['db'];config['redis']=_[_0x7850('0x13')](config[_0x7850('0x14')],{'host':_0x7850('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7850('0x14')]));require('./smsMessage.socket')[_0x7850('0x16')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7850('0x17')][_0x7850('0x18')]({'port':0x232c});var client9002=jayson[_0x7850('0x17')][_0x7850('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x4342f8,_0x2181b1,_0x1ee1f0,_0x117cd8){return new BPromise(function(_0x3e14d4,_0x2f0165){var _0x252f08=_0x117cd8||client;return _0x252f08[_0x7850('0x19')](_0x4342f8,_0x1ee1f0)['then'](function(_0xcf7a9c){logger[_0x7850('0x1a')](_0x7850('0x1b'),_0x2181b1,_0x7850('0x1c'));logger[_0x7850('0x1d')](_0x7850('0x1e'),_0x2181b1,_0x7850('0x1c'),JSON[_0x7850('0x1f')](_0xcf7a9c));if(_0xcf7a9c[_0x7850('0x20')]){if(_0xcf7a9c['error'][_0x7850('0x21')]===0x1f4){logger[_0x7850('0x20')](_0x7850('0x1b'),_0x2181b1,_0xcf7a9c[_0x7850('0x20')][_0x7850('0x22')]);return _0x2f0165(_0xcf7a9c['error'][_0x7850('0x22')]);}logger[_0x7850('0x20')](_0x7850('0x1b'),_0x2181b1,_0xcf7a9c[_0x7850('0x20')]['message']);return _0x3e14d4(_0xcf7a9c[_0x7850('0x20')][_0x7850('0x22')]);}else{logger[_0x7850('0x1a')](_0x7850('0x1b'),_0x2181b1,'request\x20sent');_0x3e14d4(_0xcf7a9c[_0x7850('0x23')][_0x7850('0x22')]);}})[_0x7850('0x24')](function(_0x12d2f9){logger[_0x7850('0x20')](_0x7850('0x1b'),_0x2181b1,_0x12d2f9);_0x2f0165(_0x12d2f9);});});}function respondWithStatusCode(_0x4afcaa,_0x5476f0){_0x5476f0=_0x5476f0||0xcc;return function(_0x179000){if(_0x179000){return _0x4afcaa[_0x7850('0x25')](_0x5476f0);}return _0x4afcaa[_0x7850('0x26')](_0x5476f0)[_0x7850('0x27')]();};}function respondWithResult(_0x1bdf01,_0x56dccf){_0x56dccf=_0x56dccf||0xc8;return function(_0x54491f){if(_0x54491f){return _0x1bdf01[_0x7850('0x26')](_0x56dccf)[_0x7850('0x28')](_0x54491f);}};}function respondWithFilteredResult(_0x279e83,_0x216d71){return function(_0x111cf2){if(_0x111cf2){var _0x29c7c4=_0x111cf2['count'],_0x4d0c3e=_0x216d71['offset'],_0x30da03=_0x216d71[_0x7850('0x29')]+_0x216d71[_0x7850('0x2a')],_0x396ff2;if(_0x30da03>=_0x29c7c4){_0x30da03=_0x29c7c4;_0x396ff2=0xc8;}else{_0x396ff2=0xce;}_0x279e83['status'](_0x396ff2);return _0x279e83[_0x7850('0x2b')](_0x7850('0x2c'),_0x4d0c3e+'-'+_0x30da03+'/'+_0x29c7c4)['json'](_0x111cf2);}return null;};}function patchUpdates(_0x1f7c32){return function(_0x3c2a94){try{jsonpatch[_0x7850('0x2d')](_0x3c2a94,_0x1f7c32,!![]);}catch(_0x83a9a1){return BPromise[_0x7850('0x2e')](_0x83a9a1);}return _0x3c2a94['save']();};}function saveUpdates(_0x244caa,_0x4f69e7){return function(_0x30a211){if(_0x30a211){return _0x30a211['update'](_0x244caa)['then'](function(_0x3ee424){return _0x3ee424;});}return null;};}function removeEntity(_0x2df1b9,_0x3127f2){return function(_0x439c4e){if(_0x439c4e){return _0x439c4e[_0x7850('0x2f')]()[_0x7850('0x30')](function(){_0x2df1b9['status'](0xcc)[_0x7850('0x27')]();});}};}function handleEntityNotFound(_0x20b9c1,_0x8350a7){return function(_0x137005){if(!_0x137005){_0x20b9c1[_0x7850('0x25')](0x194);}return _0x137005;};}function handleError(_0x191986,_0x4f82af){_0x4f82af=_0x4f82af||0x1f4;return function(_0x18b9e5){logger[_0x7850('0x20')](_0x18b9e5[_0x7850('0x31')]);if(_0x18b9e5[_0x7850('0x32')]){delete _0x18b9e5[_0x7850('0x32')];}_0x191986[_0x7850('0x26')](_0x4f82af)[_0x7850('0x33')](_0x18b9e5);};}exports['index']=function(_0x49caee,_0x4f5df5){var _0x46ef3d={},_0x1f9225={},_0x444171={'count':0x0,'rows':[]};var _0x548514=db['SmsMessage']['rawAttributes'];_0x1f9225['model']=_[_0x7850('0x34')](_0x548514);var _0x166d2e={'dateStart':_0x49caee[_0x7850('0x35')][_0x7850('0x36')],'dateEnd':_0x49caee[_0x7850('0x35')][_0x7850('0x37')]};delete _0x49caee[_0x7850('0x35')]['dateStart'];delete _0x49caee[_0x7850('0x35')][_0x7850('0x37')];_0x1f9225[_0x7850('0x35')]=_[_0x7850('0x34')](_0x49caee['query']);_0x1f9225[_0x7850('0x38')]=_['intersection'](_0x1f9225[_0x7850('0x39')],_0x1f9225[_0x7850('0x35')]);_0x46ef3d[_0x7850('0x3a')]=_[_0x7850('0x3b')](_0x1f9225['model'],qs[_0x7850('0x3c')](_0x49caee[_0x7850('0x35')]['fields']));_0x46ef3d['attributes']=_0x46ef3d[_0x7850('0x3a')][_0x7850('0x3d')]?_0x46ef3d[_0x7850('0x3a')]:_0x1f9225[_0x7850('0x39')];if(!_0x49caee[_0x7850('0x35')][_0x7850('0x3e')](_0x7850('0x3f'))){_0x46ef3d[_0x7850('0x2a')]=qs[_0x7850('0x2a')](_0x49caee[_0x7850('0x35')]['limit']);_0x46ef3d[_0x7850('0x29')]=qs[_0x7850('0x29')](_0x49caee[_0x7850('0x35')][_0x7850('0x29')]);}_0x46ef3d['order']=qs[_0x7850('0x40')](_0x49caee[_0x7850('0x35')][_0x7850('0x40')]);_0x46ef3d['where']=qs[_0x7850('0x38')](_[_0x7850('0x41')](_0x49caee[_0x7850('0x35')],_0x1f9225[_0x7850('0x38')]));if(_0x166d2e[_0x7850('0x36')]){if(_0x166d2e[_0x7850('0x37')]){_0x166d2e[_0x7850('0x37')]=moment(_0x166d2e[_0x7850('0x37')])[_0x7850('0x42')](0x1,_0x7850('0x43'));}else{_0x166d2e[_0x7850('0x37')]=moment(_0x166d2e[_0x7850('0x36')])['add'](0x1,'day');}_['merge'](_0x46ef3d[_0x7850('0x44')],{'createdAt':{'$gte':_0x166d2e[_0x7850('0x36')],'$lte':_0x166d2e[_0x7850('0x37')]}});}if(_0x49caee[_0x7850('0x35')][_0x7850('0x45')]){_0x46ef3d[_0x7850('0x44')]=_[_0x7850('0x46')](_0x46ef3d[_0x7850('0x44')],{'$or':_[_0x7850('0x47')](_0x548514,function(_0x241880){if(_0x241880[_0x7850('0x48')][_0x7850('0x49')]!==_0x7850('0x4a')){var _0x46c852={};_0x46c852[_0x241880['field']]={'$like':'%'+_0x49caee[_0x7850('0x35')][_0x7850('0x45')]+'%'};return _0x46c852;}})});}_0x46ef3d=_['merge']({},_0x46ef3d,_0x49caee[_0x7850('0x4b')]);var _0x4b59af={'where':_0x46ef3d[_0x7850('0x44')]};return db['SmsMessage'][_0x7850('0x4c')](_0x4b59af)['then'](function(_0x29d8e0){_0x444171['count']=_0x29d8e0;if(_0x49caee['query'][_0x7850('0x4d')]){_0x46ef3d[_0x7850('0x4e')]=[{'all':!![]}];}return db['SmsMessage']['findAll'](_0x46ef3d);})['then'](function(_0x48b3a8){_0x444171[_0x7850('0x4f')]=_0x48b3a8;return _0x444171;})[_0x7850('0x30')](respondWithFilteredResult(_0x4f5df5,_0x46ef3d))[_0x7850('0x24')](handleError(_0x4f5df5,null));};exports['show']=function(_0x5ac8db,_0x2ff6b8){var _0x593842={'raw':!![],'where':{'id':_0x5ac8db[_0x7850('0x50')]['id']}},_0x32a95b={};_0x32a95b[_0x7850('0x39')]=_[_0x7850('0x34')](db[_0x7850('0x51')][_0x7850('0x52')]);_0x32a95b[_0x7850('0x35')]=_[_0x7850('0x34')](_0x5ac8db[_0x7850('0x35')]);_0x32a95b['filters']=_[_0x7850('0x3b')](_0x32a95b[_0x7850('0x39')],_0x32a95b['query']);_0x593842[_0x7850('0x3a')]=_[_0x7850('0x3b')](_0x32a95b[_0x7850('0x39')],qs['fields'](_0x5ac8db[_0x7850('0x35')][_0x7850('0x3c')]));_0x593842[_0x7850('0x3a')]=_0x593842[_0x7850('0x3a')][_0x7850('0x3d')]?_0x593842[_0x7850('0x3a')]:_0x32a95b[_0x7850('0x39')];if(_0x5ac8db['query'][_0x7850('0x4d')]){_0x593842[_0x7850('0x4e')]=[{'all':!![]}];}_0x593842=_['merge']({},_0x593842,_0x5ac8db[_0x7850('0x4b')]);return db['SmsMessage'][_0x7850('0x53')](_0x593842)[_0x7850('0x30')](handleEntityNotFound(_0x2ff6b8,null))[_0x7850('0x30')](respondWithResult(_0x2ff6b8,null))[_0x7850('0x24')](handleError(_0x2ff6b8,null));};exports[_0x7850('0x54')]=function(_0x2ba33b,_0x4c5072){return db[_0x7850('0x51')][_0x7850('0x54')](_0x2ba33b[_0x7850('0x55')],{})['then'](respondWithResult(_0x4c5072,0xc9))['catch'](handleError(_0x4c5072,null));};exports[_0x7850('0x56')]=function(_0x3befa8,_0x57e1fc){if(_0x3befa8[_0x7850('0x55')]['id']){delete _0x3befa8[_0x7850('0x55')]['id'];}return db[_0x7850('0x51')]['find']({'where':{'id':_0x3befa8['params']['id']}})[_0x7850('0x30')](handleEntityNotFound(_0x57e1fc,null))[_0x7850('0x30')](saveUpdates(_0x3befa8[_0x7850('0x55')],null))[_0x7850('0x30')](respondWithResult(_0x57e1fc,null))['catch'](handleError(_0x57e1fc,null));};exports[_0x7850('0x2f')]=function(_0x3868b7,_0x17030f){return db['SmsMessage'][_0x7850('0x53')]({'where':{'id':_0x3868b7[_0x7850('0x50')]['id']}})[_0x7850('0x30')](handleEntityNotFound(_0x17030f,null))[_0x7850('0x30')](removeEntity(_0x17030f,null))['catch'](handleError(_0x17030f,null));};exports[_0x7850('0x57')]=function(_0x3b8ea0,_0x2e6172){return db[_0x7850('0x51')][_0x7850('0x57')]()[_0x7850('0x30')](respondWithResult(_0x2e6172,null))[_0x7850('0x24')](handleError(_0x2e6172,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0x7850('0x58')]=function(_0x528887,_0x214dae,_0x53da3b){var _0x247b50={'channel':'sms'};if(_0x528887[_0x7850('0x55')]['id']){delete _0x528887[_0x7850('0x55')]['id'];}_0x528887[_0x7850('0x55')][_0x7850('0x59')]=!![];_0x528887[_0x7850('0x55')][_0x7850('0x5a')]=moment()[_0x7850('0x5b')](_0x7850('0x5c'));_0x528887['body'][_0x7850('0x5d')]=_0x528887[_0x7850('0x55')]['UserId']||_0x528887[_0x7850('0x5e')]['id'];return db[_0x7850('0x51')][_0x7850('0x53')]({'where':{'id':_0x528887[_0x7850('0x50')]['id'],'UserId':null},'include':[{'model':db[_0x7850('0x5f')],'as':_0x7850('0x60')}]})['then'](handleEntityNotFound(_0x214dae,null))[_0x7850('0x30')](saveUpdates(_0x528887[_0x7850('0x55')],null))[_0x7850('0x30')](function(_0x4e7595){if(_0x4e7595){_0x247b50[_0x7850('0x22')]=_0x4e7595['get']({'plain':!![]});return db[_0x7850('0x61')][_0x7850('0x53')]({'where':{'id':_0x4e7595[_0x7850('0x62')]}});}return null;})[_0x7850('0x30')](handleEntityNotFound(_0x214dae,null))[_0x7850('0x30')](function(_0x32402a){if(_0x32402a){return _0x32402a[_0x7850('0x56')]({'UserId':_0x528887['body'][_0x7850('0x5d')],'read1stAt':_[_0x7850('0x63')](_0x32402a['read1stAt'])?moment()[_0x7850('0x5b')](_0x7850('0x5c')):undefined});}return null;})['then'](function(_0x1620bc){if(_0x1620bc){_0x247b50[_0x7850('0x64')]=_0x1620bc[_0x7850('0x65')]({'plain':!![]});interaction_log[_0x7850('0x1a')](_0x7850('0x66'),_0x528887[_0x7850('0x5e')]['id'],_0x528887[_0x7850('0x5e')][_0x7850('0x32')],_0x528887[_0x7850('0x5e')][_0x7850('0x67')],_0x247b50[_0x7850('0x64')]['id'],_0x528887[_0x7850('0x55')]?JSON['stringify'](_0x528887[_0x7850('0x55')]):'null');return respondWithRpcPromise('AcceptMessage',_0x7850('0x68'),_0x247b50);}return null;})['then'](function(_0x3ea93e){if(_0x3ea93e){if(_0x528887[_0x7850('0x55')][_0x7850('0x69')]){_0x247b50[_0x7850('0x22')]['interface']=util[_0x7850('0x5b')](_0x7850('0x6a'),_0x528887[_0x7850('0x5e')][_0x7850('0x32')]);_0x247b50[_0x7850('0x22')][_0x7850('0x6b')]=_0x247b50[_0x7850('0x6b')];_0x247b50[_0x7850('0x22')][_0x7850('0x6c')]=_0x7850('0x58');return respondWithRpcPromise('EventManager',_0x7850('0x6d'),{'event':_0x7850('0x6e'),'message':_0x247b50[_0x7850('0x22')]},client9002)['then'](function(){return _0x247b50;});}return _0x247b50;}return null;})[_0x7850('0x30')](respondWithResult(_0x214dae,null))[_0x7850('0x24')](handleError(_0x214dae,null));};var interaction_log=require(_0x7850('0x6f'))(_0x7850('0x70'));exports['reject']=function(_0x168265,_0x14dabc,_0xf70d56){var _0x44e209={'agent':{},'channel':_0x7850('0x71')};if(_0x168265[_0x7850('0x55')]['id']){delete _0x168265[_0x7850('0x55')]['id'];}_0x168265[_0x7850('0x55')][_0x7850('0x5d')]=_0x168265['body'][_0x7850('0x5d')]||_0x168265[_0x7850('0x5e')]['id'];_0x44e209['agent']['id']=_0x168265[_0x7850('0x55')][_0x7850('0x5d')];return db[_0x7850('0x51')][_0x7850('0x53')]({'where':{'id':_0x168265['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x14dabc,null))[_0x7850('0x30')](function(_0x52269d){if(_0x52269d){_0x44e209['message']=_0x52269d[_0x7850('0x65')]({'plain':!![]});return db[_0x7850('0x61')][_0x7850('0x53')]({'where':{'id':_0x52269d[_0x7850('0x62')]}});}return null;})[_0x7850('0x30')](handleEntityNotFound(_0x14dabc,null))[_0x7850('0x30')](function(_0x22a67a){if(_0x22a67a){_0x44e209[_0x7850('0x64')]=_0x22a67a['get']({'plain':!![]});interaction_log[_0x7850('0x1a')](_0x7850('0x72'),_0x168265[_0x7850('0x5e')]['id'],_0x168265[_0x7850('0x5e')]['name'],_0x168265[_0x7850('0x5e')][_0x7850('0x67')],_0x44e209['interaction']['id'],_0x168265[_0x7850('0x55')]?JSON['stringify'](_0x168265['body']):_0x7850('0x73'));return respondWithRpcPromise(_0x7850('0x74'),_0x7850('0x75'),_0x44e209);}return null;})[_0x7850('0x30')](function(_0x58e36d){if(_0x58e36d){_0x58e36d[_0x7850('0x22')]['interface']=util['format']('SIP/%s',_0x168265['user'][_0x7850('0x32')]);_0x58e36d[_0x7850('0x22')][_0x7850('0x6b')]=_0x44e209[_0x7850('0x6b')];_0x58e36d['message'][_0x7850('0x6c')]=_0x7850('0x2e');respondWithRpcPromise(_0x7850('0x6d'),'EventManager',{'event':_0x7850('0x76'),'message':_0x58e36d['message']},client9002);return _0x44e209;}return null;})[_0x7850('0x30')](respondWithResult(_0x14dabc,null))['catch'](handleError(_0x14dabc,null));};exports['status']=function(_0x4ac45b,_0xe71fc2,_0x41722f){if(_0x4ac45b['body']['id']){delete _0x4ac45b[_0x7850('0x55')]['id'];}var _0x420803;return db['SmsMessage'][_0x7850('0x53')]({'where':{'id':_0x4ac45b['params']['id']}})[_0x7850('0x30')](handleEntityNotFound(_0xe71fc2,null))[_0x7850('0x30')](function(_0x386c9a){if(_0x386c9a){_0x420803=_0x386c9a;return db['SmsAccount'][_0x7850('0x53')]({'where':{'id':_0x386c9a[_0x7850('0x77')]}});}})[_0x7850('0x30')](handleEntityNotFound(_0xe71fc2,null))['then'](function(_0x395452){if(_0x395452){logger[_0x7850('0x1d')](_0x7850('0x1e'),_0x7850('0x26'),_0x7850('0x78'),_0x395452[_0x7850('0x48')],util[_0x7850('0x79')](_0x4ac45b[_0x7850('0x55')],{'showHidden':![],'depth':null}));switch(_0x395452[_0x7850('0x48')]){case'twilio':if(_0x4ac45b[_0x7850('0x55')][_0x7850('0x7a')]&&_0x4ac45b[_0x7850('0x55')][_0x7850('0x7a')]===_0x420803[_0x7850('0x7b')]){return _0x420803[_0x7850('0x56')]({'read':!![]});}else{logger[_0x7850('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7850('0x26'),_0x7850('0x7c'),util[_0x7850('0x79')](_0x4ac45b[_0x7850('0x55')],{'showHidden':![],'depth':null}));}break;case _0x7850('0x7d'):if(_0x4ac45b[_0x7850('0x55')][_0x7850('0x7e')]&&_0x4ac45b[_0x7850('0x55')][_0x7850('0x7e')]===_0x420803[_0x7850('0x7b')]&&_[_0x7850('0x7f')]([_0x7850('0x80'),_0x7850('0x81')],_0x4ac45b[_0x7850('0x55')][_0x7850('0x82')])>=0x0){return _0x420803['update']({'read':!![]});}else{logger[_0x7850('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7850('0x26'),_0x7850('0x83'),util[_0x7850('0x79')](_0x4ac45b[_0x7850('0x55')],{'showHidden':![],'depth':null}));}break;case _0x7850('0x84'):var _0x2f939d=_0x4ac45b[_0x7850('0x55')][_0x7850('0x85')][0x0];if(_0x2f939d[_0x7850('0x26')]['groupName']==='DELIVERED'){return _0x420803[_0x7850('0x56')]({'read':!![]});}else{logger[_0x7850('0x20')](_0x7850('0x86'),'status',_0x7850('0x84'),util['inspect'](_0x4ac45b['body'],{'showHidden':![],'depth':null}));}break;}return _0x420803;}})['then'](respondWithResult(_0xe71fc2,null))[_0x7850('0x24')](handleError(_0xe71fc2,null));};
\ No newline at end of file
+var _0xb88a=['YYYY-MM-DD\x20HH:mm:ss','UserId','user','CmContact','Contact','SmsInteraction','SmsInteractionId','isNil','read1stAt','format','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','AcceptMessage','acceptMessage','SIP/%s','EventManager','sms-interactions','sms','get','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','interface','channel','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','type','twilio','MessageSid','messageId','inspect','plivo','MessageUUID','indexOf','sent','delivered','Status','SmsAccount,\x20%s,\x20%s,\x20%s','plivio','results','DELIVERED','infobip','html-pdf','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsMessage.socket','register','client','http','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','reject','save','update','stack','name','send','index','SmsMessage','rawAttributes','model','keys','query','dateEnd','dateStart','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','day','add','merge','filter','map','VIRTUAL','options','includeAll','findAll','rows','show','params','intersection','include','find','create','body','destroy','describe','accept','read'];(function(_0x58bd1d,_0x50bb83){var _0x1ce885=function(_0x595a83){while(--_0x595a83){_0x58bd1d['push'](_0x58bd1d['shift']());}};_0x1ce885(++_0x50bb83);}(_0xb88a,0xbb));var _0xab88=function(_0x1a68a,_0x2f6c45){_0x1a68a=_0x1a68a-0x0;var _0x44128f=_0xb88a[_0x1a68a];return _0x44128f;};'use strict';var pdf=require(_0xab88('0x0'));var emlformat=require(_0xab88('0x1'));var rimraf=require(_0xab88('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xab88('0x3'));var moment=require(_0xab88('0x4'));var BPromise=require(_0xab88('0x5'));var Mustache=require(_0xab88('0x6'));var util=require('util');var path=require(_0xab88('0x7'));var sox=require(_0xab88('0x8'));var csv=require(_0xab88('0x9'));var ejs=require(_0xab88('0xa'));var fs=require('fs');var _=require(_0xab88('0xb'));var squel=require(_0xab88('0xc'));var crypto=require(_0xab88('0xd'));var jsforce=require(_0xab88('0xe'));var deskjs=require(_0xab88('0xf'));var toCsv=require(_0xab88('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xab88('0x10'));var qs=require(_0xab88('0x11'));var logger=require(_0xab88('0x12'))('api');var utils=require(_0xab88('0x13'));var config=require(_0xab88('0x14'));var db=require(_0xab88('0x15'))['db'];config['redis']=_[_0xab88('0x16')](config[_0xab88('0x17')],{'host':_0xab88('0x18'),'port':0x18eb});var socket=require(_0xab88('0x19'))(new Redis(config[_0xab88('0x17')]));require(_0xab88('0x1a'))[_0xab88('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0xab88('0x1c')][_0xab88('0x1d')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5cfc4a,_0x55142a,_0x8ff5b8,_0x2bce74){return new BPromise(function(_0x3cf22a,_0x48e8fd){var _0x323acc=_0x2bce74||client;return _0x323acc[_0xab88('0x1e')](_0x5cfc4a,_0x8ff5b8)[_0xab88('0x1f')](function(_0xb63f1c){logger['info'](_0xab88('0x20'),_0x55142a,_0xab88('0x21'));logger[_0xab88('0x22')](_0xab88('0x23'),_0x55142a,_0xab88('0x21'),JSON[_0xab88('0x24')](_0xb63f1c));if(_0xb63f1c[_0xab88('0x25')]){if(_0xb63f1c[_0xab88('0x25')][_0xab88('0x26')]===0x1f4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x55142a,_0xb63f1c[_0xab88('0x25')]['message']);return _0x48e8fd(_0xb63f1c[_0xab88('0x25')][_0xab88('0x27')]);}logger[_0xab88('0x25')]('SmsMessage,\x20%s,\x20%s',_0x55142a,_0xb63f1c['error']['message']);return _0x3cf22a(_0xb63f1c['error'][_0xab88('0x27')]);}else{logger[_0xab88('0x28')](_0xab88('0x20'),_0x55142a,_0xab88('0x21'));_0x3cf22a(_0xb63f1c[_0xab88('0x29')]['message']);}})[_0xab88('0x2a')](function(_0x188719){logger[_0xab88('0x25')]('SmsMessage,\x20%s,\x20%s',_0x55142a,_0x188719);_0x48e8fd(_0x188719);});});}function respondWithStatusCode(_0x36b19d,_0x538eae){_0x538eae=_0x538eae||0xcc;return function(_0x30d4b8){if(_0x30d4b8){return _0x36b19d[_0xab88('0x2b')](_0x538eae);}return _0x36b19d[_0xab88('0x2c')](_0x538eae)[_0xab88('0x2d')]();};}function respondWithResult(_0x24bcee,_0x27fa7c){_0x27fa7c=_0x27fa7c||0xc8;return function(_0x1b623c){if(_0x1b623c){return _0x24bcee[_0xab88('0x2c')](_0x27fa7c)[_0xab88('0x2e')](_0x1b623c);}};}function respondWithFilteredResult(_0x11856d,_0x3883d8){return function(_0x49db68){if(_0x49db68){var _0x236009=_0x49db68[_0xab88('0x2f')],_0x290aeb=_0x3883d8['offset'],_0x52eaf1=_0x3883d8[_0xab88('0x30')]+_0x3883d8[_0xab88('0x31')],_0x30505f;if(_0x52eaf1>=_0x236009){_0x52eaf1=_0x236009;_0x30505f=0xc8;}else{_0x30505f=0xce;}_0x11856d[_0xab88('0x2c')](_0x30505f);return _0x11856d['set'](_0xab88('0x32'),_0x290aeb+'-'+_0x52eaf1+'/'+_0x236009)[_0xab88('0x2e')](_0x49db68);}return null;};}function patchUpdates(_0xccb5c7){return function(_0x3dbbe9){try{jsonpatch[_0xab88('0x33')](_0x3dbbe9,_0xccb5c7,!![]);}catch(_0x4d2061){return BPromise[_0xab88('0x34')](_0x4d2061);}return _0x3dbbe9[_0xab88('0x35')]();};}function saveUpdates(_0x3096c0,_0x594369){return function(_0x829c8e){if(_0x829c8e){return _0x829c8e[_0xab88('0x36')](_0x3096c0)[_0xab88('0x1f')](function(_0x2396b5){return _0x2396b5;});}return null;};}function removeEntity(_0x3fa4d1,_0x14179a){return function(_0x43bdd3){if(_0x43bdd3){return _0x43bdd3['destroy']()[_0xab88('0x1f')](function(){_0x3fa4d1[_0xab88('0x2c')](0xcc)[_0xab88('0x2d')]();});}};}function handleEntityNotFound(_0x578cf0,_0x815390){return function(_0x2b9d05){if(!_0x2b9d05){_0x578cf0[_0xab88('0x2b')](0x194);}return _0x2b9d05;};}function handleError(_0x100d4c,_0x11a9cf){_0x11a9cf=_0x11a9cf||0x1f4;return function(_0x1ada4a){logger[_0xab88('0x25')](_0x1ada4a[_0xab88('0x37')]);if(_0x1ada4a['name']){delete _0x1ada4a[_0xab88('0x38')];}_0x100d4c[_0xab88('0x2c')](_0x11a9cf)[_0xab88('0x39')](_0x1ada4a);};}exports[_0xab88('0x3a')]=function(_0x2cc42b,_0x2fd254){var _0x28ca2e={},_0x45a9cf={},_0x47abca={'count':0x0,'rows':[]};var _0x59a1d6=db[_0xab88('0x3b')][_0xab88('0x3c')];_0x45a9cf[_0xab88('0x3d')]=_[_0xab88('0x3e')](_0x59a1d6);var _0x11f8e7={'dateStart':_0x2cc42b[_0xab88('0x3f')]['dateStart'],'dateEnd':_0x2cc42b[_0xab88('0x3f')][_0xab88('0x40')]};delete _0x2cc42b['query'][_0xab88('0x41')];delete _0x2cc42b['query'][_0xab88('0x40')];_0x45a9cf[_0xab88('0x3f')]=_[_0xab88('0x3e')](_0x2cc42b[_0xab88('0x3f')]);_0x45a9cf[_0xab88('0x42')]=_['intersection'](_0x45a9cf[_0xab88('0x3d')],_0x45a9cf[_0xab88('0x3f')]);_0x28ca2e[_0xab88('0x43')]=_['intersection'](_0x45a9cf['model'],qs[_0xab88('0x44')](_0x2cc42b[_0xab88('0x3f')][_0xab88('0x44')]));_0x28ca2e[_0xab88('0x43')]=_0x28ca2e[_0xab88('0x43')][_0xab88('0x45')]?_0x28ca2e['attributes']:_0x45a9cf[_0xab88('0x3d')];if(!_0x2cc42b[_0xab88('0x3f')][_0xab88('0x46')](_0xab88('0x47'))){_0x28ca2e['limit']=qs['limit'](_0x2cc42b[_0xab88('0x3f')][_0xab88('0x31')]);_0x28ca2e[_0xab88('0x30')]=qs[_0xab88('0x30')](_0x2cc42b[_0xab88('0x3f')][_0xab88('0x30')]);}_0x28ca2e[_0xab88('0x48')]=qs[_0xab88('0x49')](_0x2cc42b[_0xab88('0x3f')][_0xab88('0x49')]);_0x28ca2e[_0xab88('0x4a')]=qs['filters'](_[_0xab88('0x4b')](_0x2cc42b['query'],_0x45a9cf[_0xab88('0x42')]));if(_0x11f8e7[_0xab88('0x41')]){if(_0x11f8e7[_0xab88('0x40')]){_0x11f8e7[_0xab88('0x40')]=moment(_0x11f8e7[_0xab88('0x40')])['add'](0x1,_0xab88('0x4c'));}else{_0x11f8e7[_0xab88('0x40')]=moment(_0x11f8e7[_0xab88('0x41')])[_0xab88('0x4d')](0x1,'day');}_[_0xab88('0x4e')](_0x28ca2e[_0xab88('0x4a')],{'createdAt':{'$gte':_0x11f8e7[_0xab88('0x41')],'$lte':_0x11f8e7['dateEnd']}});}if(_0x2cc42b[_0xab88('0x3f')][_0xab88('0x4f')]){_0x28ca2e['where']=_[_0xab88('0x4e')](_0x28ca2e[_0xab88('0x4a')],{'$or':_[_0xab88('0x50')](_0x59a1d6,function(_0x1911eb){if(_0x1911eb['type']['key']!==_0xab88('0x51')){var _0x39a158={};_0x39a158[_0x1911eb['field']]={'$like':'%'+_0x2cc42b['query'][_0xab88('0x4f')]+'%'};return _0x39a158;}})});}_0x28ca2e=_[_0xab88('0x4e')]({},_0x28ca2e,_0x2cc42b[_0xab88('0x52')]);var _0x41c00b={'where':_0x28ca2e['where']};return db[_0xab88('0x3b')][_0xab88('0x2f')](_0x41c00b)[_0xab88('0x1f')](function(_0x57bfe8){_0x47abca['count']=_0x57bfe8;if(_0x2cc42b[_0xab88('0x3f')][_0xab88('0x53')]){_0x28ca2e['include']=[{'all':!![]}];}return db[_0xab88('0x3b')][_0xab88('0x54')](_0x28ca2e);})[_0xab88('0x1f')](function(_0x502808){_0x47abca[_0xab88('0x55')]=_0x502808;return _0x47abca;})[_0xab88('0x1f')](respondWithFilteredResult(_0x2fd254,_0x28ca2e))[_0xab88('0x2a')](handleError(_0x2fd254,null));};exports[_0xab88('0x56')]=function(_0x345721,_0x16414e){var _0x115a1c={'raw':!![],'where':{'id':_0x345721[_0xab88('0x57')]['id']}},_0x371215={};_0x371215[_0xab88('0x3d')]=_[_0xab88('0x3e')](db[_0xab88('0x3b')][_0xab88('0x3c')]);_0x371215[_0xab88('0x3f')]=_[_0xab88('0x3e')](_0x345721[_0xab88('0x3f')]);_0x371215[_0xab88('0x42')]=_[_0xab88('0x58')](_0x371215[_0xab88('0x3d')],_0x371215[_0xab88('0x3f')]);_0x115a1c[_0xab88('0x43')]=_['intersection'](_0x371215[_0xab88('0x3d')],qs['fields'](_0x345721[_0xab88('0x3f')][_0xab88('0x44')]));_0x115a1c[_0xab88('0x43')]=_0x115a1c[_0xab88('0x43')]['length']?_0x115a1c['attributes']:_0x371215['model'];if(_0x345721['query'][_0xab88('0x53')]){_0x115a1c[_0xab88('0x59')]=[{'all':!![]}];}_0x115a1c=_['merge']({},_0x115a1c,_0x345721[_0xab88('0x52')]);return db[_0xab88('0x3b')][_0xab88('0x5a')](_0x115a1c)['then'](handleEntityNotFound(_0x16414e,null))[_0xab88('0x1f')](respondWithResult(_0x16414e,null))[_0xab88('0x2a')](handleError(_0x16414e,null));};exports[_0xab88('0x5b')]=function(_0x2983a5,_0x4b0efd){return db[_0xab88('0x3b')][_0xab88('0x5b')](_0x2983a5[_0xab88('0x5c')],{})[_0xab88('0x1f')](respondWithResult(_0x4b0efd,0xc9))[_0xab88('0x2a')](handleError(_0x4b0efd,null));};exports[_0xab88('0x36')]=function(_0x5b4735,_0x1f11c5){if(_0x5b4735[_0xab88('0x5c')]['id']){delete _0x5b4735[_0xab88('0x5c')]['id'];}return db[_0xab88('0x3b')][_0xab88('0x5a')]({'where':{'id':_0x5b4735[_0xab88('0x57')]['id']}})[_0xab88('0x1f')](handleEntityNotFound(_0x1f11c5,null))[_0xab88('0x1f')](saveUpdates(_0x5b4735[_0xab88('0x5c')],null))[_0xab88('0x1f')](respondWithResult(_0x1f11c5,null))[_0xab88('0x2a')](handleError(_0x1f11c5,null));};exports[_0xab88('0x5d')]=function(_0x27ba90,_0x2db671){return db[_0xab88('0x3b')][_0xab88('0x5a')]({'where':{'id':_0x27ba90[_0xab88('0x57')]['id']}})[_0xab88('0x1f')](handleEntityNotFound(_0x2db671,null))[_0xab88('0x1f')](removeEntity(_0x2db671,null))[_0xab88('0x2a')](handleError(_0x2db671,null));};exports[_0xab88('0x5e')]=function(_0x45c8fd,_0x3c3bf1){return db[_0xab88('0x3b')][_0xab88('0x5e')]()['then'](respondWithResult(_0x3c3bf1,null))[_0xab88('0x2a')](handleError(_0x3c3bf1,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0xab88('0x5f')]=function(_0x375f81,_0x445bc7,_0x233387){var _0x3d63d7={'channel':'sms'};if(_0x375f81['body']['id']){delete _0x375f81[_0xab88('0x5c')]['id'];}_0x375f81[_0xab88('0x5c')][_0xab88('0x60')]=!![];_0x375f81[_0xab88('0x5c')]['readAt']=moment()['format'](_0xab88('0x61'));_0x375f81[_0xab88('0x5c')]['UserId']=_0x375f81[_0xab88('0x5c')][_0xab88('0x62')]||_0x375f81[_0xab88('0x63')]['id'];return db[_0xab88('0x3b')][_0xab88('0x5a')]({'where':{'id':_0x375f81[_0xab88('0x57')]['id'],'UserId':null},'include':[{'model':db[_0xab88('0x64')],'as':_0xab88('0x65')}]})['then'](handleEntityNotFound(_0x445bc7,null))[_0xab88('0x1f')](saveUpdates(_0x375f81[_0xab88('0x5c')],null))[_0xab88('0x1f')](function(_0x355b90){if(_0x355b90){_0x3d63d7[_0xab88('0x27')]=_0x355b90['get']({'plain':!![]});return db[_0xab88('0x66')][_0xab88('0x5a')]({'where':{'id':_0x355b90[_0xab88('0x67')]}});}return null;})[_0xab88('0x1f')](handleEntityNotFound(_0x445bc7,null))[_0xab88('0x1f')](function(_0x576585){if(_0x576585){return _0x576585[_0xab88('0x36')]({'UserId':_0x375f81['body']['UserId'],'read1stAt':_[_0xab88('0x68')](_0x576585[_0xab88('0x69')])?moment()[_0xab88('0x6a')](_0xab88('0x61')):undefined});}return null;})[_0xab88('0x1f')](function(_0x4353cf){if(_0x4353cf){_0x3d63d7['interaction']=_0x4353cf['get']({'plain':!![]});interaction_log[_0xab88('0x28')](_0xab88('0x6b'),_0x375f81[_0xab88('0x63')]['id'],_0x375f81['user']['name'],_0x375f81[_0xab88('0x63')]['role'],_0x3d63d7[_0xab88('0x6c')]['id'],_0x375f81[_0xab88('0x5c')]?JSON[_0xab88('0x24')](_0x375f81['body']):_0xab88('0x6d'));return respondWithRpcPromise(_0xab88('0x6e'),_0xab88('0x6f'),_0x3d63d7);}return null;})[_0xab88('0x1f')](function(_0x296763){if(_0x296763){if(_0x375f81[_0xab88('0x5c')]['manual']){_0x3d63d7['message']['interface']=util['format'](_0xab88('0x70'),_0x375f81[_0xab88('0x63')][_0xab88('0x38')]);_0x3d63d7[_0xab88('0x27')]['channel']=_0x3d63d7['channel'];_0x3d63d7[_0xab88('0x27')]['event']='accept';return respondWithRpcPromise('EventManager',_0xab88('0x71'),{'event':'acceptmessage','message':_0x3d63d7[_0xab88('0x27')]},client9002)[_0xab88('0x1f')](function(){return _0x3d63d7;});}return _0x3d63d7;}return null;})[_0xab88('0x1f')](respondWithResult(_0x445bc7,null))[_0xab88('0x2a')](handleError(_0x445bc7,null));};var interaction_log=require(_0xab88('0x12'))(_0xab88('0x72'));exports[_0xab88('0x34')]=function(_0x2e0820,_0x33d6ea,_0x5971ae){var _0x2ec3ba={'agent':{},'channel':_0xab88('0x73')};if(_0x2e0820[_0xab88('0x5c')]['id']){delete _0x2e0820[_0xab88('0x5c')]['id'];}_0x2e0820[_0xab88('0x5c')][_0xab88('0x62')]=_0x2e0820[_0xab88('0x5c')][_0xab88('0x62')]||_0x2e0820[_0xab88('0x63')]['id'];_0x2ec3ba['agent']['id']=_0x2e0820[_0xab88('0x5c')][_0xab88('0x62')];return db[_0xab88('0x3b')][_0xab88('0x5a')]({'where':{'id':_0x2e0820[_0xab88('0x57')]['id'],'UserId':null}})[_0xab88('0x1f')](handleEntityNotFound(_0x33d6ea,null))['then'](function(_0x2d1b69){if(_0x2d1b69){_0x2ec3ba[_0xab88('0x27')]=_0x2d1b69['get']({'plain':!![]});return db['SmsInteraction']['find']({'where':{'id':_0x2d1b69[_0xab88('0x67')]}});}return null;})[_0xab88('0x1f')](handleEntityNotFound(_0x33d6ea,null))[_0xab88('0x1f')](function(_0x295aad){if(_0x295aad){_0x2ec3ba['interaction']=_0x295aad[_0xab88('0x74')]({'plain':!![]});interaction_log[_0xab88('0x28')](_0xab88('0x75'),_0x2e0820[_0xab88('0x63')]['id'],_0x2e0820[_0xab88('0x63')][_0xab88('0x38')],_0x2e0820[_0xab88('0x63')][_0xab88('0x76')],_0x2ec3ba['interaction']['id'],_0x2e0820[_0xab88('0x5c')]?JSON['stringify'](_0x2e0820[_0xab88('0x5c')]):_0xab88('0x6d'));return respondWithRpcPromise(_0xab88('0x77'),_0xab88('0x78'),_0x2ec3ba);}return null;})['then'](function(_0x41b817){if(_0x41b817){_0x41b817['message'][_0xab88('0x79')]=util[_0xab88('0x6a')]('SIP/%s',_0x2e0820['user'][_0xab88('0x38')]);_0x41b817[_0xab88('0x27')][_0xab88('0x7a')]=_0x2ec3ba[_0xab88('0x7a')];_0x41b817[_0xab88('0x27')]['event']='reject';respondWithRpcPromise(_0xab88('0x71'),_0xab88('0x71'),{'event':'rejectmessage','message':_0x41b817[_0xab88('0x27')]},client9002);return _0x2ec3ba;}return null;})['then'](respondWithResult(_0x33d6ea,null))[_0xab88('0x2a')](handleError(_0x33d6ea,null));};exports[_0xab88('0x2c')]=function(_0x3c5f30,_0x4e343b,_0x3dde48){if(_0x3c5f30[_0xab88('0x5c')]['id']){delete _0x3c5f30[_0xab88('0x5c')]['id'];}var _0x43401b;return db['SmsMessage'][_0xab88('0x5a')]({'where':{'id':_0x3c5f30[_0xab88('0x57')]['id']}})['then'](handleEntityNotFound(_0x4e343b,null))[_0xab88('0x1f')](function(_0x5245af){if(_0x5245af){_0x43401b=_0x5245af;return db[_0xab88('0x7b')][_0xab88('0x5a')]({'where':{'id':_0x5245af[_0xab88('0x7c')]}});}})[_0xab88('0x1f')](handleEntityNotFound(_0x4e343b,null))[_0xab88('0x1f')](function(_0x498838){if(_0x498838){logger[_0xab88('0x22')](_0xab88('0x23'),_0xab88('0x2c'),_0xab88('0x7d'),_0x498838[_0xab88('0x7e')],util['inspect'](_0x3c5f30['body'],{'showHidden':![],'depth':null}));switch(_0x498838[_0xab88('0x7e')]){case _0xab88('0x7f'):if(_0x3c5f30[_0xab88('0x5c')][_0xab88('0x80')]&&_0x3c5f30[_0xab88('0x5c')][_0xab88('0x80')]===_0x43401b[_0xab88('0x81')]){return _0x43401b['update']({'read':!![]});}else{logger[_0xab88('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xab88('0x2c'),_0xab88('0x7f'),util[_0xab88('0x82')](_0x3c5f30[_0xab88('0x5c')],{'showHidden':![],'depth':null}));}break;case _0xab88('0x83'):if(_0x3c5f30['body']['MessageUUID']&&_0x3c5f30[_0xab88('0x5c')][_0xab88('0x84')]===_0x43401b[_0xab88('0x81')]&&_[_0xab88('0x85')]([_0xab88('0x86'),_0xab88('0x87')],_0x3c5f30[_0xab88('0x5c')][_0xab88('0x88')])>=0x0){return _0x43401b[_0xab88('0x36')]({'read':!![]});}else{logger[_0xab88('0x25')](_0xab88('0x89'),_0xab88('0x2c'),_0xab88('0x8a'),util['inspect'](_0x3c5f30[_0xab88('0x5c')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x471a10=_0x3c5f30[_0xab88('0x5c')][_0xab88('0x8b')][0x0];if(_0x471a10[_0xab88('0x2c')]['groupName']===_0xab88('0x8c')){return _0x43401b[_0xab88('0x36')]({'read':!![]});}else{logger[_0xab88('0x25')](_0xab88('0x89'),_0xab88('0x2c'),_0xab88('0x8d'),util[_0xab88('0x82')](_0x3c5f30[_0xab88('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x43401b;}})[_0xab88('0x1f')](respondWithResult(_0x4e343b,null))[_0xab88('0x2a')](handleError(_0x4e343b,null));};
\ No newline at end of file
index 1f1e62a..8cad0d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb04=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x40911a,_0x55ec99){var _0x27e8e3=function(_0x2ba910){while(--_0x2ba910){_0x40911a['push'](_0x40911a['shift']());}};_0x27e8e3(++_0x55ec99);}(_0xcb04,0x7c));var _0x4cb0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xcb04[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x4cb0('0x0'));var SmsMessage=require(_0x4cb0('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x4cb0('0x2')](0x0);var events={'afterCreate':_0x4cb0('0x3'),'afterUpdate':_0x4cb0('0x4'),'afterDestroy':_0x4cb0('0x5')};function emitEvent(_0x82f4e9){return function(_0x4fc3dd,_0x7cf2eb,_0x3b6fa5){SmsMessageEvents[_0x4cb0('0x6')](_0x82f4e9+':'+_0x4fc3dd['id'],_0x4fc3dd);SmsMessageEvents[_0x4cb0('0x6')](_0x82f4e9,_0x4fc3dd);_0x3b6fa5(null);};}for(var e in events){if(events[_0x4cb0('0x7')](e)){var event=events[e];SmsMessage[_0x4cb0('0x8')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
+var _0x8813=['exports','events','../../mysqldb','setMaxListeners','save','update','emit','hook'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8813,0x91));var _0x3881=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8813[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x3881('0x0'));var SmsMessage=require(_0x3881('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x3881('0x2')](0x0);var events={'afterCreate':_0x3881('0x3'),'afterUpdate':_0x3881('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4ce9f7){return function(_0x4153f2,_0x3f7f19,_0x1a0e36){SmsMessageEvents[_0x3881('0x5')](_0x4ce9f7+':'+_0x4153f2['id'],_0x4153f2);SmsMessageEvents[_0x3881('0x5')](_0x4ce9f7,_0x4153f2);_0x1a0e36(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x3881('0x6')](e,emitEvent(event));}}module[_0x3881('0x7')]=SmsMessageEvents;
\ No newline at end of file
index 5e9f13d..0525d6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x198f=['bluebird','request-promise','exports','sms_messages','messageId','models','get','direction','toLowerCase','secret','isNil','UserId','SmsInteraction','findOne','then','update','createdAt','body','catch','error','out','SmsAccount','find','SmsAccountId','type','twilio','phone','accountSid','authToken','create','/api/sms/messages/','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','login?username=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/send/','requestid','read','clicksend','format','%s:%s','https://rest.clicksend.com/v3/sms/send','toString','base64','http_code','data','queued_count','head','messages','message_id','clickSend','authId','remote','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','message_uuid','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','keys','sort','length','createHash','md5','digest','hex','signature=','id_sms','apiKey','https://platform.clickatell.com/messages','apiMessageId','clickatell','Missing\x20parameters:\x20apiKey','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','refid','status','finally','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x198f,0x15b));var _0xf198=function(_0x37d4ac,_0x4e47d6){_0x37d4ac=_0x37d4ac-0x0;var _0x5e727a=_0x198f[_0x37d4ac];return _0x5e727a;};'use strict';var _=require('lodash');var util=require(_0xf198('0x0'));var logger=require(_0xf198('0x1'))(_0xf198('0x2'));var moment=require(_0xf198('0x3'));var BPromise=require(_0xf198('0x4'));var rp=require(_0xf198('0x5'));var attributes=require('./smsMessage.attributes');module[_0xf198('0x6')]=function(_0x37bcbc,_0x6ef85){return _0x37bcbc['define']('SmsMessage',attributes,{'tableName':_0xf198('0x7'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xf198('0x8')]}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5ea751,_0x7f9cdd,_0x29d6ad){var _0x2fa084=_0x37bcbc[_0xf198('0x9')];var _0x4f2bfc=_0x5ea751[_0xf198('0xa')]({'plain':!![]});if(_0x4f2bfc[_0xf198('0xb')][_0xf198('0xc')]()==='in'||_0x4f2bfc[_0xf198('0xb')][_0xf198('0xc')]()==='out'&&!_0x4f2bfc[_0xf198('0xd')]&&!_[_0xf198('0xe')](_0x4f2bfc[_0xf198('0xf')])){_0x2fa084[_0xf198('0x10')][_0xf198('0x11')]({'where':{'id':_0x4f2bfc['SmsInteractionId']}})[_0xf198('0x12')](function(_0x28e10b){if(_0x28e10b){_0x28e10b[_0xf198('0x13')]({'lastMsgAt':_0x4f2bfc[_0xf198('0x14')],'lastMsgDirection':_0x4f2bfc[_0xf198('0xb')][_0xf198('0xc')](),'lastMsgBody':_0x4f2bfc[_0xf198('0x15')]});}})[_0xf198('0x16')](function(_0x51c4d2){console[_0xf198('0x17')](_0x51c4d2);});}if(_0x4f2bfc['direction']===_0xf198('0x18')&&!_0x4f2bfc[_0xf198('0xd')]){var _0x1cb63e;_0x2fa084[_0xf198('0x19')][_0xf198('0x1a')]({'where':{'id':_0x4f2bfc[_0xf198('0x1b')]},'raw':!![]})[_0xf198('0x12')](function(_0x3c1815){_0x1cb63e=_0x3c1815;if(_0x1cb63e&&_0x1cb63e[_0xf198('0x1c')]){switch(_0x1cb63e[_0xf198('0x1c')]){case _0xf198('0x1d'):var _0x45dbb5=require(_0xf198('0x1d'));if(_0x1cb63e['accountSid']&&_0x1cb63e['authToken']&&_0x1cb63e[_0xf198('0x1e')]){var _0x56a030=new _0x45dbb5(_0x1cb63e[_0xf198('0x1f')],_0x1cb63e[_0xf198('0x20')]);_0x56a030['messages'][_0xf198('0x21')]({'body':_0x4f2bfc[_0xf198('0x15')],'to':_0x4f2bfc[_0xf198('0x1e')],'from':_0x1cb63e[_0xf198('0x1e')],'statusCallback':_0x1cb63e['remote']+_0xf198('0x22')+_0x4f2bfc['id']+_0xf198('0x23')+_0x1cb63e[_0xf198('0x24')]})[_0xf198('0x12')](function(_0x3e235d){if(_0x3e235d[_0xf198('0x25')]){return _0x5ea751[_0xf198('0x13')]({'messageId':_0x3e235d['sid']});}})[_0xf198('0x16')](function(_0x16fd71){logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),'twilio',util[_0xf198('0x28')](_0x16fd71,{'showHidden':![],'depth':null}));});}else{logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'skebby':var _0x5d7070=_0xf198('0x29');if(_0x1cb63e[_0xf198('0x2a')]&&_0x1cb63e[_0xf198('0x2b')]){var _0x3198c9={'recipient':[_0x4f2bfc['phone']],'message':_0x4f2bfc[_0xf198('0x15')],'message_type':_0x1cb63e[_0xf198('0x2c')]};var _0x5626e5={'url':_0x5d7070+_0xf198('0x2d')+_0x1cb63e[_0xf198('0x2a')]+'&password='+_0x1cb63e['password'],'method':_0xf198('0x2e')};rp(_0x5626e5)[_0xf198('0x12')](function(_0x3903b6){var _0x4355b4=_0x3903b6[_0xf198('0x2f')](';');var _0x269994={'user_key':_0x4355b4[0x0],'session_key':_0x4355b4[0x1]};_0x5626e5={'url':_0x5d7070+_0xf198('0x30'),'method':_0xf198('0x31'),'headers':{'user_key':_0x269994[_0xf198('0x32')],'Session_key':_0x269994[_0xf198('0x33')]},'json':!![],'body':_0x3198c9};return rp(_0x5626e5);})[_0xf198('0x12')](function(_0x56725e){if(_0x56725e[_0xf198('0x34')]>=0x1){var _0x5d2ffa={'messageId':_0x56725e[_0xf198('0x35')]};if(_0x1cb63e['smsMethod']!=='GP'||!_0x1cb63e[_0xf198('0x36')]){_0x5d2ffa['read']=!![];}return _0x5ea751[_0xf198('0x13')](_0x5d2ffa);}else{return logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x37'),util[_0xf198('0x28')](_0x56725e,{'showHidden':![],'depth':null}));}})['catch'](function(_0x292d7b){return logger[_0xf198('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xf198('0x37'),util[_0xf198('0x28')](_0x292d7b,{'showHidden':![],'depth':null}));});}else{logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x37'),_0xf198('0x38'));}break;case _0xf198('0x39'):if(_0x1cb63e[_0xf198('0x20')]){var _0x200876={'recipient':_0x4f2bfc['phone'],'message':_0x4f2bfc[_0xf198('0x15')],'sender':_0x1cb63e[_0xf198('0x3a')]||_0x1cb63e[_0xf198('0x1e')],'authorization':_0x1cb63e[_0xf198('0x20')]};var _0x7f9cdd={'method':_0xf198('0x31'),'uri':_0xf198('0x3b'),'body':_0x200876,'json':!![]};rp(_0x7f9cdd)['then'](function(_0x237041){var _0x3250a9={'messageId':_0x237041[_0xf198('0x3c')]};if(!_0x1cb63e[_0xf198('0x36')]){_0x3250a9[_0xf198('0x3d')]=!![];}return _0x5ea751[_0xf198('0x13')](_0x3250a9);})[_0xf198('0x16')](function(_0x484146){logger['error'](_0xf198('0x26'),_0xf198('0x27'),'connectel',util[_0xf198('0x28')](_0x484146,{'showHidden':![],'depth':null}));});}else{logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x39'),'Missing\x20parameters:\x20authToken');}break;case _0xf198('0x3e'):if(_0x1cb63e[_0xf198('0x2a')]&&_0x1cb63e[_0xf198('0x2b')]){var _0x200876={'messages':[{'source':'xCALLY\x20Motion','to':_0x4f2bfc[_0xf198('0x1e')],'body':_0x4f2bfc[_0xf198('0x15')],'from':_0x1cb63e[_0xf198('0x3a')]||_0x1cb63e[_0xf198('0x1e')]}]};var _0x5eb634=util[_0xf198('0x3f')](_0xf198('0x40'),_0x1cb63e[_0xf198('0x2a')],_0x1cb63e[_0xf198('0x2b')]);var _0x7f9cdd={'method':_0xf198('0x31'),'uri':_0xf198('0x41'),'body':_0x200876,'headers':{'Authorization':util[_0xf198('0x3f')]('Basic\x20%s',new Buffer(_0x5eb634)[_0xf198('0x42')](_0xf198('0x43')))},'json':!![]};rp(_0x7f9cdd)[_0xf198('0x12')](function(_0x18cde0){if(_0x18cde0[_0xf198('0x44')]>=0xc8&&_0x18cde0[_0xf198('0x44')]<=0xce){if(_0x18cde0['data']&&_0x18cde0[_0xf198('0x45')][_0xf198('0x46')]>0x0){var _0x248843=_[_0xf198('0x47')](_0x18cde0[_0xf198('0x45')][_0xf198('0x48')]);var _0x5d540c={'messageId':_0x248843[_0xf198('0x49')]};if(!_0x1cb63e[_0xf198('0x36')]){_0x5d540c[_0xf198('0x3d')]=!![];}return _0x5ea751[_0xf198('0x13')](_0x5d540c);}else{logger[_0xf198('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf198('0x27'),_0xf198('0x4a'),util[_0xf198('0x28')](_0x18cde0,{'showHidden':![],'depth':null}));}}else{logger[_0xf198('0x17')](_0xf198('0x26'),'afterCreate',_0xf198('0x4a'),util[_0xf198('0x28')](_0x18cde0,{'showHidden':![],'depth':null}));}})[_0xf198('0x16')](function(_0x593a69){logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x4a'),util['inspect'](_0x593a69,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xf198('0x26'),_0xf198('0x27'),'clickSend',_0xf198('0x38'));}break;case'plivo':if(_0x1cb63e[_0xf198('0x4b')]&&_0x1cb63e['authToken']){var _0x200876={'dst':_0x4f2bfc['phone'],'text':_0x4f2bfc[_0xf198('0x15')],'src':_0x1cb63e[_0xf198('0x3a')]||_0x1cb63e[_0xf198('0x1e')],'url':_0x1cb63e[_0xf198('0x4c')]+_0xf198('0x22')+_0x4f2bfc['id']+_0xf198('0x23')+_0x1cb63e[_0xf198('0x24')]};var _0x5eb634=util[_0xf198('0x3f')](_0xf198('0x40'),_0x1cb63e[_0xf198('0x4b')],_0x1cb63e[_0xf198('0x20')]);var _0x7f9cdd={'method':_0xf198('0x31'),'uri':util['format'](_0xf198('0x4d'),_0x1cb63e[_0xf198('0x4b')]),'body':_0x200876,'headers':{'Authorization':util['format'](_0xf198('0x4e'),new Buffer(_0x5eb634)[_0xf198('0x42')]('base64'))},'json':!![]};rp(_0x7f9cdd)[_0xf198('0x12')](function(_0x33d2b0){var _0x191702={'messageId':_0x33d2b0[_0xf198('0x4f')][0x0]};return _0x5ea751[_0xf198('0x13')](_0x191702);})[_0xf198('0x16')](function(_0xaebceb){logger['error'](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x50'),util[_0xf198('0x28')](_0xaebceb,{'showHidden':![],'depth':null}));});}else{logger[_0xf198('0x17')](_0xf198('0x26'),'afterCreate',_0xf198('0x50'),_0xf198('0x51'));}break;case _0xf198('0x52'):if(_0x1cb63e['username']&&_0x1cb63e['password']){if(_0x1cb63e['baseUrl']){var _0x181cae={'method':'POST','uri':_0x1cb63e['baseUrl']+_0xf198('0x53'),'body':{'username':_0x1cb63e[_0xf198('0x2a')],'password':_0x1cb63e['password']},'json':!![]};return rp(_0x181cae)[_0xf198('0x12')](function(_0xf2ca5c){var _0x1ddf4f={'method':_0xf198('0x31'),'uri':_0x1cb63e['baseUrl']+_0xf198('0x54'),'body':{'messages':[{'from':_0x1cb63e['phone'],'destinations':[{'to':_0x4f2bfc[_0xf198('0x1e')]}],'text':_0x4f2bfc[_0xf198('0x15')],'notifyUrl':_0x1cb63e[_0xf198('0x4c')]+'/api/sms/messages/'+_0x4f2bfc['id']+_0xf198('0x23')+_0x1cb63e['token'],'notifyContentType':_0xf198('0x55'),'callbackData':_0x1cb63e[_0xf198('0x1e')]+';'+_0x4f2bfc[_0xf198('0x15')]}]},'headers':{'Authorization':_0xf198('0x56')+_0xf2ca5c[_0xf198('0x24')]},'json':!![]};return rp(_0x1ddf4f)[_0xf198('0x12')](function(_0x4aa8fe){if(_0x4aa8fe[_0xf198('0x48')]){var _0x28c0ef={'messageId':_0x4aa8fe['messages'][0x0][_0xf198('0x8')]};if(!_0x1cb63e[_0xf198('0x36')]){_0x28c0ef[_0xf198('0x3d')]=!![];}return _0x5ea751['update'](_0x28c0ef);}else{return logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x52'),util[_0xf198('0x28')](_0x4aa8fe,{'showHidden':![],'depth':null}));}});})[_0xf198('0x16')](function(_0x536f80){return logger[_0xf198('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf198('0x27'),_0xf198('0x52'),util['inspect'](_0x536f80,{'showHidden':![],'depth':null}));});}else{logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x52'),_0xf198('0x57'));}}else{logger[_0xf198('0x17')](_0xf198('0x26'),'afterCreate','infobip','Missing\x20parameters:\x20username,\x20password');}case _0xf198('0x58'):var _0x37db7c=require(_0xf198('0x59'));if(_0x1cb63e['apiKey']){var _0x2d0fdb={};_0x2d0fdb[_0xf198('0x5a')]=_0x1cb63e[_0xf198('0x2a')];_0x2d0fdb[_0xf198('0x1e')]=_0x4f2bfc['phone'];_0x2d0fdb['sender']=_0x1cb63e[_0xf198('0x1e')];_0x2d0fdb[_0xf198('0x5b')]=_0x4f2bfc[_0xf198('0x15')];_0x2d0fdb[_0xf198('0x5c')]=+new Date();var _0x3451c9='';var _0x4a9bc1='';var _0x24373b=Object[_0xf198('0x5d')](_0x2d0fdb);_0x24373b[_0xf198('0x5e')]();for(var _0x3fc001=0x0;_0x3fc001<_0x24373b[_0xf198('0x5f')];_0x3fc001++){if(_0x3451c9!=''){_0x3451c9+='&';}_0x3451c9+=_0x24373b[_0x3fc001]+'='+encodeURIComponent(_0x2d0fdb[_0x24373b[_0x3fc001]]);_0x4a9bc1+=_0x2d0fdb[_0x24373b[_0x3fc001]];}_0x4a9bc1+=_0x1cb63e['apiKey'];_0x4a9bc1=_0x37db7c[_0xf198('0x60')](_0xf198('0x61'))[_0xf198('0x13')](_0x4a9bc1)[_0xf198('0x62')](_0xf198('0x63'));if(_0x3451c9!==''){_0x3451c9+='&';}_0x3451c9+=_0xf198('0x64')+_0x4a9bc1;var _0x5626e5={'method':_0xf198('0x2e'),'uri':'https://sms.csc.lv/external/get/send.php?'+_0x3451c9,'json':!![]};return rp(_0x5626e5)[_0xf198('0x12')](function(_0x2e137e){var _0x788961=Object['keys'](_0x2e137e);if(_0x2e137e[_0x788961[0x0]][_0xf198('0x17')]&&parseInt(_0x2e137e[_0x788961[0x0]]['error'])===0x0){var _0x3337be={'messageId':_0x2e137e[_0x788961[0x0]][_0xf198('0x65')]};if(!_0x1cb63e[_0xf198('0x36')]){_0x3337be[_0xf198('0x3d')]=!![];}return _0x5ea751['update'](_0x3337be);}else{return logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x58'),util[_0xf198('0x28')](_0x2e137e['error'],{'showHidden':![],'depth':null}));}})[_0xf198('0x16')](function(_0x520557){return logger[_0xf198('0x17')](_0xf198('0x26'),'afterCreate',_0xf198('0x58'),util[_0xf198('0x28')](_0x520557,{'showHidden':![],'depth':null}));});}else{logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x58'),'Missing\x20parameters:\x20apiKey');}case'clickatell':if(_0x1cb63e[_0xf198('0x66')]){var _0x2d485f={'method':'POST','uri':_0xf198('0x67'),'headers':{'Authorization':_0x1cb63e[_0xf198('0x66')]},'body':{'content':_0x4f2bfc[_0xf198('0x15')],'to':[_0x4f2bfc[_0xf198('0x1e')]],'from':_0x1cb63e[_0xf198('0x1e')],'binary':![],'clientMessageId':'uuid','charset':'UTF-8'},'json':!![]};rp(_0x2d485f)['then'](function(_0x47fb50){if(!_0x47fb50[_0xf198('0x17')]){var _0x237557={'messageId':_0x47fb50[_0xf198('0x48')][0x0][_0xf198('0x68')]};if(!_0x1cb63e[_0xf198('0x36')]){_0x237557[_0xf198('0x3d')]=!![];}return _0x5ea751[_0xf198('0x13')](_0x237557);}else{return logger[_0xf198('0x17')](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x69'),util['inspect'](_0x47fb50[_0xf198('0x17')],{'showHidden':![],'depth':null}));}})[_0xf198('0x16')](function(_0x29d555){return logger['error'](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x69'),util[_0xf198('0x28')](_0x29d555,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xf198('0x27'),_0xf198('0x69'),_0xf198('0x6a'));}break;case _0xf198('0x6b'):if(_0x1cb63e[_0xf198('0x66')]){var _0x25966a={};var _0x5626e5={'method':_0xf198('0x31'),'uri':_0xf198('0x6c'),'headers':{'Authorization':_0xf198('0x6d')+_0x1cb63e[_0xf198('0x66')],'Content-Type':_0xf198('0x55')},'body':{'from':_0x1cb63e[_0xf198('0x1e')],'to':_0x4f2bfc[_0xf198('0x1e')],'text':_0x4f2bfc[_0xf198('0x15')]},'json':!![]};return rp(_0x5626e5)[_0xf198('0x12')](function(_0x6af614){if(_0x6af614[_0xf198('0x6e')]==0xca){_0x25966a[_0xf198('0x6f')]=_0x6af614;var _0x753596={'method':_0xf198('0x31'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0xf198('0x6d')+_0x1cb63e['apiKey'],'Content-Type':_0xf198('0x55')},'body':{'refid':_0x25966a[_0xf198('0x6f')][_0xf198('0x70')]},'json':!![]};return rp(_0x753596)[_0xf198('0x12')](function(_0x49ad7a){_0x25966a[_0xf198('0x71')]=_0x49ad7a;var _0x5eb70b={'messageId':_0x25966a[_0xf198('0x6f')][_0xf198('0x70')],'read':!![]};return _0x5ea751[_0xf198('0x13')](_0x5eb70b);});}else{return logger['error'](_0xf198('0x26'),_0xf198('0x27'),_0xf198('0x6b'),util[_0xf198('0x28')](_0x6af614,{'showHidden':![],'depth':null}));}})['catch'](function(_0x3b29bd){return logger['error'](_0xf198('0x26'),'afterCreate',_0xf198('0x6b'),util[_0xf198('0x28')](_0x3b29bd,{'showHidden':![],'depth':null}));});}else{return logger[_0xf198('0x17')](_0xf198('0x26'),'afterCreate',_0xf198('0x6b'),'Token\x20not\x20received');}break;}}})[_0xf198('0x72')](function(){_0x29d6ad();});}else{_0x29d6ad();}}},'charset':_0xf198('0x73'),'collate':_0xf198('0x74')});};
\ No newline at end of file
+var _0xcd1d=['sms_messages','messageId','get','direction','toLowerCase','secret','isNil','UserId','SmsInteraction','SmsInteractionId','then','createdAt','body','catch','error','SmsAccount','find','type','twilio','accountSid','authToken','messages','phone','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','login?username=','GET','POST','user_key','session_key','read','Missing\x20parameters:\x20username,\x20password','connectel','senderString','requestid','deliveryReport','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','https://rest.clicksend.com/v3/sms/send','toString','http_code','data','head','message_id','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','base64','message_uuid','baseUrl','/auth/1/session','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','csc','crypto','login','text','timestamp','keys','sort','createHash','md5','digest','hex','https://sms.csc.lv/external/get/send.php?','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','apiKey','uuid','apiMessageId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','exports','define','SmsMessage'];(function(_0x21205e,_0x7eb8e7){var _0x136ebb=function(_0x54aac2){while(--_0x54aac2){_0x21205e['push'](_0x21205e['shift']());}};_0x136ebb(++_0x7eb8e7);}(_0xcd1d,0x140));var _0xdcd1=function(_0x52fa65,_0x4458b2){_0x52fa65=_0x52fa65-0x0;var _0x46dab4=_0xcd1d[_0x52fa65];return _0x46dab4;};'use strict';var _=require(_0xdcd1('0x0'));var util=require(_0xdcd1('0x1'));var logger=require(_0xdcd1('0x2'))(_0xdcd1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require('./smsMessage.attributes');module[_0xdcd1('0x4')]=function(_0x310f44,_0x1da756){return _0x310f44[_0xdcd1('0x5')](_0xdcd1('0x6'),attributes,{'tableName':_0xdcd1('0x7'),'paranoid':![],'indexes':[{'name':_0xdcd1('0x8'),'fields':[_0xdcd1('0x8')]}],'timestamps':!![],'hooks':{'afterCreate':function(_0x457a70,_0x3d22f8,_0x2e8b8f){var _0x8be7fc=_0x310f44['models'];var _0x96c0bc=_0x457a70[_0xdcd1('0x9')]({'plain':!![]});if(_0x96c0bc[_0xdcd1('0xa')][_0xdcd1('0xb')]()==='in'||_0x96c0bc[_0xdcd1('0xa')]['toLowerCase']()==='out'&&!_0x96c0bc[_0xdcd1('0xc')]&&!_[_0xdcd1('0xd')](_0x96c0bc[_0xdcd1('0xe')])){_0x8be7fc[_0xdcd1('0xf')]['findOne']({'where':{'id':_0x96c0bc[_0xdcd1('0x10')]}})[_0xdcd1('0x11')](function(_0xfc4596){if(_0xfc4596){_0xfc4596['update']({'lastMsgAt':_0x96c0bc[_0xdcd1('0x12')],'lastMsgDirection':_0x96c0bc[_0xdcd1('0xa')][_0xdcd1('0xb')](),'lastMsgBody':_0x96c0bc[_0xdcd1('0x13')]});}})[_0xdcd1('0x14')](function(_0x2b28ce){console[_0xdcd1('0x15')](_0x2b28ce);});}if(_0x96c0bc['direction']==='out'&&!_0x96c0bc[_0xdcd1('0xc')]){var _0x521149;_0x8be7fc[_0xdcd1('0x16')][_0xdcd1('0x17')]({'where':{'id':_0x96c0bc['SmsAccountId']},'raw':!![]})[_0xdcd1('0x11')](function(_0x2d1f67){_0x521149=_0x2d1f67;if(_0x521149&&_0x521149[_0xdcd1('0x18')]){switch(_0x521149['type']){case _0xdcd1('0x19'):var _0x1e9bac=require(_0xdcd1('0x19'));if(_0x521149[_0xdcd1('0x1a')]&&_0x521149[_0xdcd1('0x1b')]&&_0x521149['phone']){var _0x268e91=new _0x1e9bac(_0x521149[_0xdcd1('0x1a')],_0x521149['authToken']);_0x268e91[_0xdcd1('0x1c')]['create']({'body':_0x96c0bc[_0xdcd1('0x13')],'to':_0x96c0bc[_0xdcd1('0x1d')],'from':_0x521149['phone'],'statusCallback':_0x521149[_0xdcd1('0x1e')]+_0xdcd1('0x1f')+_0x96c0bc['id']+_0xdcd1('0x20')+_0x521149[_0xdcd1('0x21')]})[_0xdcd1('0x11')](function(_0x2969c5){if(_0x2969c5[_0xdcd1('0x22')]){return _0x457a70[_0xdcd1('0x23')]({'messageId':_0x2969c5[_0xdcd1('0x22')]});}})[_0xdcd1('0x14')](function(_0x4c910b){logger['error'](_0xdcd1('0x24'),_0xdcd1('0x25'),'twilio',util[_0xdcd1('0x26')](_0x4c910b,{'showHidden':![],'depth':null}));});}else{logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x19'),_0xdcd1('0x27'));}break;case _0xdcd1('0x28'):var _0x129daf=_0xdcd1('0x29');if(_0x521149[_0xdcd1('0x2a')]&&_0x521149[_0xdcd1('0x2b')]){var _0xc40786={'recipient':[_0x96c0bc[_0xdcd1('0x1d')]],'message':_0x96c0bc[_0xdcd1('0x13')],'message_type':_0x521149[_0xdcd1('0x2c')]};var _0x2e5e92={'url':_0x129daf+_0xdcd1('0x2d')+_0x521149['username']+'&password='+_0x521149[_0xdcd1('0x2b')],'method':_0xdcd1('0x2e')};rp(_0x2e5e92)['then'](function(_0x1e377c){var _0x5d15c4=_0x1e377c['split'](';');var _0x40e900={'user_key':_0x5d15c4[0x0],'session_key':_0x5d15c4[0x1]};_0x2e5e92={'url':_0x129daf+'sms','method':_0xdcd1('0x2f'),'headers':{'user_key':_0x40e900[_0xdcd1('0x30')],'Session_key':_0x40e900[_0xdcd1('0x31')]},'json':!![],'body':_0xc40786};return rp(_0x2e5e92);})[_0xdcd1('0x11')](function(_0x280cd4){if(_0x280cd4['total_sent']>=0x1){var _0x47eb49={'messageId':_0x280cd4['internal_order_id']};if(_0x521149['smsMethod']!=='GP'||!_0x521149['deliveryReport']){_0x47eb49[_0xdcd1('0x32')]=!![];}return _0x457a70[_0xdcd1('0x23')](_0x47eb49);}else{return logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x28'),util[_0xdcd1('0x26')](_0x280cd4,{'showHidden':![],'depth':null}));}})[_0xdcd1('0x14')](function(_0x1bff66){return logger[_0xdcd1('0x15')](_0xdcd1('0x24'),'afterCreate',_0xdcd1('0x28'),util[_0xdcd1('0x26')](_0x1bff66,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xdcd1('0x25'),_0xdcd1('0x28'),_0xdcd1('0x33'));}break;case _0xdcd1('0x34'):if(_0x521149['authToken']){var _0x169039={'recipient':_0x96c0bc[_0xdcd1('0x1d')],'message':_0x96c0bc[_0xdcd1('0x13')],'sender':_0x521149[_0xdcd1('0x35')]||_0x521149['phone'],'authorization':_0x521149[_0xdcd1('0x1b')]};var _0x3d22f8={'method':_0xdcd1('0x2f'),'uri':'https://smsapi.connectel.se/api/send/','body':_0x169039,'json':!![]};rp(_0x3d22f8)[_0xdcd1('0x11')](function(_0x50247a){var _0x288f2d={'messageId':_0x50247a[_0xdcd1('0x36')]};if(!_0x521149[_0xdcd1('0x37')]){_0x288f2d[_0xdcd1('0x32')]=!![];}return _0x457a70[_0xdcd1('0x23')](_0x288f2d);})[_0xdcd1('0x14')](function(_0x18697b){logger['error'](_0xdcd1('0x24'),'afterCreate','connectel',util[_0xdcd1('0x26')](_0x18697b,{'showHidden':![],'depth':null}));});}else{logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),'connectel',_0xdcd1('0x38'));}break;case _0xdcd1('0x39'):if(_0x521149[_0xdcd1('0x2a')]&&_0x521149[_0xdcd1('0x2b')]){var _0x169039={'messages':[{'source':_0xdcd1('0x3a'),'to':_0x96c0bc[_0xdcd1('0x1d')],'body':_0x96c0bc[_0xdcd1('0x13')],'from':_0x521149[_0xdcd1('0x35')]||_0x521149['phone']}]};var _0x654892=util[_0xdcd1('0x3b')](_0xdcd1('0x3c'),_0x521149[_0xdcd1('0x2a')],_0x521149[_0xdcd1('0x2b')]);var _0x3d22f8={'method':_0xdcd1('0x2f'),'uri':_0xdcd1('0x3d'),'body':_0x169039,'headers':{'Authorization':util[_0xdcd1('0x3b')]('Basic\x20%s',new Buffer(_0x654892)[_0xdcd1('0x3e')]('base64'))},'json':!![]};rp(_0x3d22f8)[_0xdcd1('0x11')](function(_0x3a9d04){if(_0x3a9d04[_0xdcd1('0x3f')]>=0xc8&&_0x3a9d04[_0xdcd1('0x3f')]<=0xce){if(_0x3a9d04[_0xdcd1('0x40')]&&_0x3a9d04[_0xdcd1('0x40')]['queued_count']>0x0){var _0x351dc2=_[_0xdcd1('0x41')](_0x3a9d04[_0xdcd1('0x40')][_0xdcd1('0x1c')]);var _0x1ef8b1={'messageId':_0x351dc2[_0xdcd1('0x42')]};if(!_0x521149[_0xdcd1('0x37')]){_0x1ef8b1[_0xdcd1('0x32')]=!![];}return _0x457a70[_0xdcd1('0x23')](_0x1ef8b1);}else{logger[_0xdcd1('0x15')](_0xdcd1('0x24'),'afterCreate','clickSend',util['inspect'](_0x3a9d04,{'showHidden':![],'depth':null}));}}else{logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x43'),util[_0xdcd1('0x26')](_0x3a9d04,{'showHidden':![],'depth':null}));}})[_0xdcd1('0x14')](function(_0x4f6218){logger[_0xdcd1('0x15')](_0xdcd1('0x24'),'afterCreate','clickSend',util[_0xdcd1('0x26')](_0x4f6218,{'showHidden':![],'depth':null}));});}else{logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),'clickSend','Missing\x20parameters:\x20username,\x20password');}break;case _0xdcd1('0x44'):if(_0x521149[_0xdcd1('0x45')]&&_0x521149[_0xdcd1('0x1b')]){var _0x169039={'dst':_0x96c0bc[_0xdcd1('0x1d')],'text':_0x96c0bc[_0xdcd1('0x13')],'src':_0x521149['senderString']||_0x521149[_0xdcd1('0x1d')],'url':_0x521149[_0xdcd1('0x1e')]+_0xdcd1('0x1f')+_0x96c0bc['id']+_0xdcd1('0x20')+_0x521149[_0xdcd1('0x21')]};var _0x654892=util[_0xdcd1('0x3b')]('%s:%s',_0x521149[_0xdcd1('0x45')],_0x521149[_0xdcd1('0x1b')]);var _0x3d22f8={'method':'POST','uri':util[_0xdcd1('0x3b')](_0xdcd1('0x46'),_0x521149[_0xdcd1('0x45')]),'body':_0x169039,'headers':{'Authorization':util[_0xdcd1('0x3b')](_0xdcd1('0x47'),new Buffer(_0x654892)[_0xdcd1('0x3e')](_0xdcd1('0x48')))},'json':!![]};rp(_0x3d22f8)[_0xdcd1('0x11')](function(_0x17a01a){var _0x2f8083={'messageId':_0x17a01a[_0xdcd1('0x49')][0x0]};return _0x457a70[_0xdcd1('0x23')](_0x2f8083);})[_0xdcd1('0x14')](function(_0x399bd4){logger[_0xdcd1('0x15')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xdcd1('0x25'),'plivo',util[_0xdcd1('0x26')](_0x399bd4,{'showHidden':![],'depth':null}));});}else{logger[_0xdcd1('0x15')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xdcd1('0x25'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0x521149['username']&&_0x521149['password']){if(_0x521149[_0xdcd1('0x4a')]){var _0x1513e2={'method':'POST','uri':_0x521149['baseUrl']+_0xdcd1('0x4b'),'body':{'username':_0x521149[_0xdcd1('0x2a')],'password':_0x521149['password']},'json':!![]};return rp(_0x1513e2)[_0xdcd1('0x11')](function(_0x555a15){var _0x332e14={'method':'POST','uri':_0x521149[_0xdcd1('0x4a')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x521149[_0xdcd1('0x1d')],'destinations':[{'to':_0x96c0bc['phone']}],'text':_0x96c0bc[_0xdcd1('0x13')],'notifyUrl':_0x521149[_0xdcd1('0x1e')]+'/api/sms/messages/'+_0x96c0bc['id']+_0xdcd1('0x20')+_0x521149[_0xdcd1('0x21')],'notifyContentType':_0xdcd1('0x4c'),'callbackData':_0x521149[_0xdcd1('0x1d')]+';'+_0x96c0bc[_0xdcd1('0x13')]}]},'headers':{'Authorization':_0xdcd1('0x4d')+_0x555a15['token']},'json':!![]};return rp(_0x332e14)[_0xdcd1('0x11')](function(_0x4ee435){if(_0x4ee435[_0xdcd1('0x1c')]){var _0x4b0806={'messageId':_0x4ee435[_0xdcd1('0x1c')][0x0]['messageId']};if(!_0x521149['deliveryReport']){_0x4b0806[_0xdcd1('0x32')]=!![];}return _0x457a70['update'](_0x4b0806);}else{return logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x4e'),util['inspect'](_0x4ee435,{'showHidden':![],'depth':null}));}});})[_0xdcd1('0x14')](function(_0xb5d799){return logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),'infobip',util['inspect'](_0xb5d799,{'showHidden':![],'depth':null}));});}else{logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x4e'),_0xdcd1('0x4f'));}}else{logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x4e'),_0xdcd1('0x33'));}case _0xdcd1('0x50'):var _0x339294=require(_0xdcd1('0x51'));if(_0x521149['apiKey']){var _0x2b9c67={};_0x2b9c67[_0xdcd1('0x52')]=_0x521149[_0xdcd1('0x2a')];_0x2b9c67['phone']=_0x96c0bc['phone'];_0x2b9c67['sender']=_0x521149[_0xdcd1('0x1d')];_0x2b9c67[_0xdcd1('0x53')]=_0x96c0bc[_0xdcd1('0x13')];_0x2b9c67[_0xdcd1('0x54')]=+new Date();var _0x1ffe9d='';var _0x45ba1a='';var _0x2fb7b9=Object[_0xdcd1('0x55')](_0x2b9c67);_0x2fb7b9[_0xdcd1('0x56')]();for(var _0x3fff95=0x0;_0x3fff95<_0x2fb7b9['length'];_0x3fff95++){if(_0x1ffe9d!=''){_0x1ffe9d+='&';}_0x1ffe9d+=_0x2fb7b9[_0x3fff95]+'='+encodeURIComponent(_0x2b9c67[_0x2fb7b9[_0x3fff95]]);_0x45ba1a+=_0x2b9c67[_0x2fb7b9[_0x3fff95]];}_0x45ba1a+=_0x521149['apiKey'];_0x45ba1a=_0x339294[_0xdcd1('0x57')](_0xdcd1('0x58'))[_0xdcd1('0x23')](_0x45ba1a)[_0xdcd1('0x59')](_0xdcd1('0x5a'));if(_0x1ffe9d!==''){_0x1ffe9d+='&';}_0x1ffe9d+='signature='+_0x45ba1a;var _0x2e5e92={'method':_0xdcd1('0x2e'),'uri':_0xdcd1('0x5b')+_0x1ffe9d,'json':!![]};return rp(_0x2e5e92)['then'](function(_0x53d168){var _0x1c593b=Object[_0xdcd1('0x55')](_0x53d168);if(_0x53d168[_0x1c593b[0x0]][_0xdcd1('0x15')]&&parseInt(_0x53d168[_0x1c593b[0x0]][_0xdcd1('0x15')])===0x0){var _0x2c0268={'messageId':_0x53d168[_0x1c593b[0x0]]['id_sms']};if(!_0x521149[_0xdcd1('0x37')]){_0x2c0268['read']=!![];}return _0x457a70['update'](_0x2c0268);}else{return logger['error'](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x50'),util[_0xdcd1('0x26')](_0x53d168['error'],{'showHidden':![],'depth':null}));}})[_0xdcd1('0x14')](function(_0x372a6a){return logger['error'](_0xdcd1('0x24'),'afterCreate',_0xdcd1('0x50'),util[_0xdcd1('0x26')](_0x372a6a,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x50'),_0xdcd1('0x5c'));}case _0xdcd1('0x5d'):if(_0x521149['apiKey']){var _0x386d61={'method':_0xdcd1('0x2f'),'uri':_0xdcd1('0x5e'),'headers':{'Authorization':_0x521149[_0xdcd1('0x5f')]},'body':{'content':_0x96c0bc[_0xdcd1('0x13')],'to':[_0x96c0bc['phone']],'from':_0x521149[_0xdcd1('0x1d')],'binary':![],'clientMessageId':_0xdcd1('0x60'),'charset':'UTF-8'},'json':!![]};rp(_0x386d61)[_0xdcd1('0x11')](function(_0x1151e6){if(!_0x1151e6[_0xdcd1('0x15')]){var _0xb1f363={'messageId':_0x1151e6[_0xdcd1('0x1c')][0x0][_0xdcd1('0x61')]};if(!_0x521149['deliveryReport']){_0xb1f363[_0xdcd1('0x32')]=!![];}return _0x457a70[_0xdcd1('0x23')](_0xb1f363);}else{return logger[_0xdcd1('0x15')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xdcd1('0x5d'),util[_0xdcd1('0x26')](_0x1151e6[_0xdcd1('0x15')],{'showHidden':![],'depth':null}));}})[_0xdcd1('0x14')](function(_0x13347b){return logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x5d'),util[_0xdcd1('0x26')](_0x13347b,{'showHidden':![],'depth':null}));});}else{logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),'clickatell',_0xdcd1('0x5c'));}break;case _0xdcd1('0x62'):if(_0x521149[_0xdcd1('0x5f')]){var _0x4d6af8={};var _0x2e5e92={'method':_0xdcd1('0x2f'),'uri':_0xdcd1('0x63'),'headers':{'Authorization':_0xdcd1('0x64')+_0x521149[_0xdcd1('0x5f')],'Content-Type':'application/json'},'body':{'from':_0x521149[_0xdcd1('0x1d')],'to':_0x96c0bc[_0xdcd1('0x1d')],'text':_0x96c0bc[_0xdcd1('0x13')]},'json':!![]};return rp(_0x2e5e92)[_0xdcd1('0x11')](function(_0x24ca74){if(_0x24ca74[_0xdcd1('0x65')]==0xca){_0x4d6af8[_0xdcd1('0x66')]=_0x24ca74;var _0x12bad0={'method':_0xdcd1('0x2f'),'uri':_0xdcd1('0x67'),'headers':{'Authorization':_0xdcd1('0x64')+_0x521149[_0xdcd1('0x5f')],'Content-Type':_0xdcd1('0x4c')},'body':{'refid':_0x4d6af8[_0xdcd1('0x66')][_0xdcd1('0x68')]},'json':!![]};return rp(_0x12bad0)['then'](function(_0x49dac6){_0x4d6af8['status']=_0x49dac6;var _0x25addc={'messageId':_0x4d6af8[_0xdcd1('0x66')]['refid'],'read':!![]};return _0x457a70[_0xdcd1('0x23')](_0x25addc);});}else{return logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),'intelepeer',util['inspect'](_0x24ca74,{'showHidden':![],'depth':null}));}})['catch'](function(_0x230bd0){return logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x62'),util[_0xdcd1('0x26')](_0x230bd0,{'showHidden':![],'depth':null}));});}else{return logger[_0xdcd1('0x15')](_0xdcd1('0x24'),_0xdcd1('0x25'),_0xdcd1('0x62'),_0xdcd1('0x69'));}break;}}})[_0xdcd1('0x6a')](function(){_0x2e8b8f();});}else{_0x2e8b8f();}}},'charset':_0xdcd1('0x6b'),'collate':_0xdcd1('0x6c')});};
\ No newline at end of file
index 2f25cef..3928c51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc020=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSmsMessage','create','options','raw','lodash','moment','bluebird','randomstring'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xc020,0x170));var _0x0c02=function(_0x448422,_0x362248){_0x448422=_0x448422-0x0;var _0xcc0afd=_0xc020[_0x448422];return _0xcc0afd;};'use strict';var _=require(_0x0c02('0x0'));var util=require('util');var moment=require(_0x0c02('0x1'));var BPromise=require(_0x0c02('0x2'));var rs=require(_0x0c02('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0c02('0x4'))['db'];var utils=require(_0x0c02('0x5'));var logger=require(_0x0c02('0x6'))('rpc');var config=require(_0x0c02('0x7'));var jayson=require(_0x0c02('0x8'));var client=jayson[_0x0c02('0x9')][_0x0c02('0xa')]({'port':0x232a});config[_0x0c02('0xb')]=_[_0x0c02('0xc')](config[_0x0c02('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x0c02('0xd'))(new Redis(config[_0x0c02('0xb')]));require('./smsMessage.socket')[_0x0c02('0xe')](socket);function respondWithRpcPromise(_0x51d2ef,_0x179d15,_0x509d46){return new BPromise(function(_0x516a6b,_0x127547){return client[_0x0c02('0xf')](_0x51d2ef,_0x509d46)[_0x0c02('0x10')](function(_0x227afb){logger[_0x0c02('0x11')](_0x0c02('0x12'),_0x179d15,_0x0c02('0x13'));logger[_0x0c02('0x14')](_0x0c02('0x15'),_0x179d15,_0x0c02('0x13'),JSON[_0x0c02('0x16')](_0x227afb));if(_0x227afb[_0x0c02('0x17')]){if(_0x227afb['error'][_0x0c02('0x18')]===0x1f4){logger[_0x0c02('0x17')](_0x0c02('0x12'),_0x179d15,_0x227afb[_0x0c02('0x17')]['message']);return _0x127547(_0x227afb[_0x0c02('0x17')][_0x0c02('0x19')]);}logger[_0x0c02('0x17')](_0x0c02('0x12'),_0x179d15,_0x227afb[_0x0c02('0x17')][_0x0c02('0x19')]);return _0x516a6b(_0x227afb[_0x0c02('0x17')][_0x0c02('0x19')]);}else{logger['info'](_0x0c02('0x12'),_0x179d15,_0x0c02('0x13'));_0x516a6b(_0x227afb['result'][_0x0c02('0x19')]);}})[_0x0c02('0x1a')](function(_0x207263){logger[_0x0c02('0x17')]('SmsMessage,\x20%s,\x20%s',_0x179d15,_0x207263);_0x127547(_0x207263);});});}exports[_0x0c02('0x1b')]=function(_0x1a07e8){var _0x34a99e=this;return new Promise(function(_0x4f00af,_0x15b7d7){return db['SmsMessage'][_0x0c02('0x1c')](_0x1a07e8['body'],{'raw':_0x1a07e8['options']?_0x1a07e8[_0x0c02('0x1d')][_0x0c02('0x1e')]===undefined?!![]:![]:!![]})[_0x0c02('0x10')](function(_0x2ebb00){logger[_0x0c02('0x11')](_0x0c02('0x1b'),_0x1a07e8);logger[_0x0c02('0x14')](_0x0c02('0x1b'),_0x1a07e8,JSON['stringify'](_0x2ebb00));_0x4f00af(_0x2ebb00);})[_0x0c02('0x1a')](function(_0x35a4b5){logger[_0x0c02('0x17')]('CreateSmsMessage',_0x35a4b5[_0x0c02('0x19')],_0x1a07e8);_0x15b7d7(_0x34a99e['error'](0x1f4,_0x35a4b5['message']));});});};
\ No newline at end of file
+var _0xe4eb=['SmsMessage','body','options','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','localhost','redis','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSmsMessage'];(function(_0x4da2b0,_0x5a8149){var _0x30825e=function(_0x25772c){while(--_0x25772c){_0x4da2b0['push'](_0x4da2b0['shift']());}};_0x30825e(++_0x5a8149);}(_0xe4eb,0x159));var _0xbe4e=function(_0x3a7258,_0x4f9d4f){_0x3a7258=_0x3a7258-0x0;var _0x2f6012=_0xe4eb[_0x3a7258];return _0x2f6012;};'use strict';var _=require(_0xbe4e('0x0'));var util=require(_0xbe4e('0x1'));var moment=require(_0xbe4e('0x2'));var BPromise=require('bluebird');var rs=require(_0xbe4e('0x3'));var fs=require('fs');var Redis=require(_0xbe4e('0x4'));var db=require(_0xbe4e('0x5'))['db'];var utils=require(_0xbe4e('0x6'));var logger=require('../../config/logger')(_0xbe4e('0x7'));var config=require(_0xbe4e('0x8'));var jayson=require(_0xbe4e('0x9'));var client=jayson[_0xbe4e('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xbe4e('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbe4e('0xc')]));require('./smsMessage.socket')[_0xbe4e('0xd')](socket);function respondWithRpcPromise(_0x20a8a7,_0x2f955a,_0x28de9d){return new BPromise(function(_0x49d809,_0x59b662){return client[_0xbe4e('0xe')](_0x20a8a7,_0x28de9d)[_0xbe4e('0xf')](function(_0x76adff){logger[_0xbe4e('0x10')](_0xbe4e('0x11'),_0x2f955a,_0xbe4e('0x12'));logger[_0xbe4e('0x13')](_0xbe4e('0x14'),_0x2f955a,_0xbe4e('0x12'),JSON[_0xbe4e('0x15')](_0x76adff));if(_0x76adff[_0xbe4e('0x16')]){if(_0x76adff['error']['code']===0x1f4){logger[_0xbe4e('0x16')](_0xbe4e('0x11'),_0x2f955a,_0x76adff[_0xbe4e('0x16')][_0xbe4e('0x17')]);return _0x59b662(_0x76adff[_0xbe4e('0x16')][_0xbe4e('0x17')]);}logger[_0xbe4e('0x16')]('SmsMessage,\x20%s,\x20%s',_0x2f955a,_0x76adff[_0xbe4e('0x16')][_0xbe4e('0x17')]);return _0x49d809(_0x76adff[_0xbe4e('0x16')]['message']);}else{logger[_0xbe4e('0x10')](_0xbe4e('0x11'),_0x2f955a,'request\x20sent');_0x49d809(_0x76adff[_0xbe4e('0x18')][_0xbe4e('0x17')]);}})[_0xbe4e('0x19')](function(_0x5c5e8c){logger[_0xbe4e('0x16')](_0xbe4e('0x11'),_0x2f955a,_0x5c5e8c);_0x59b662(_0x5c5e8c);});});}exports[_0xbe4e('0x1a')]=function(_0x2482f9){var _0x3a7347=this;return new Promise(function(_0x17538c,_0x570ff7){return db[_0xbe4e('0x1b')]['create'](_0x2482f9[_0xbe4e('0x1c')],{'raw':_0x2482f9['options']?_0x2482f9[_0xbe4e('0x1d')][_0xbe4e('0x1e')]===undefined?!![]:![]:!![]})[_0xbe4e('0xf')](function(_0x28eede){logger[_0xbe4e('0x10')]('CreateSmsMessage',_0x2482f9);logger['debug'](_0xbe4e('0x1a'),_0x2482f9,JSON['stringify'](_0x28eede));_0x17538c(_0x28eede);})[_0xbe4e('0x19')](function(_0x434ee8){logger[_0xbe4e('0x16')]('CreateSmsMessage',_0x434ee8[_0xbe4e('0x17')],_0x2482f9);_0x570ff7(_0x3a7347[_0xbe4e('0x16')](0x1f4,_0x434ee8[_0xbe4e('0x17')]));});});};
\ No newline at end of file
index d17f54f..ba08ce6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4fb=['update','emit','register','length','smsMessage:','./smsMessage.events','save','remove'];(function(_0x90d843,_0x5902fe){var _0x1963b1=function(_0x19100d){while(--_0x19100d){_0x90d843['push'](_0x90d843['shift']());}};_0x1963b1(++_0x5902fe);}(_0xc4fb,0x1c5));var _0xbc4f=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xc4fb[_0x1facfa];return _0x9ec701;};'use strict';var SmsMessageEvents=require(_0xbc4f('0x0'));var events=[_0xbc4f('0x1'),_0xbc4f('0x2'),_0xbc4f('0x3')];function createListener(_0x33f106,_0x1e58da){return function(_0x239b95){_0x1e58da[_0xbc4f('0x4')](_0x33f106,_0x239b95);};}function removeListener(_0x224240,_0x4be6d9){return function(){SmsMessageEvents['removeListener'](_0x224240,_0x4be6d9);};}exports[_0xbc4f('0x5')]=function(_0x378ae2){for(var _0x5a5a72=0x0,_0x303a13=events[_0xbc4f('0x6')];_0x5a5a72<_0x303a13;_0x5a5a72++){var _0x3eb388=events[_0x5a5a72];var _0x12fbb7=createListener(_0xbc4f('0x7')+_0x3eb388,_0x378ae2);SmsMessageEvents['on'](_0x3eb388,_0x12fbb7);}};
\ No newline at end of file
+var _0xe570=['register','length','smsMessage:','./smsMessage.events','save','remove','update','emit','removeListener'];(function(_0x44a329,_0x45f280){var _0x45f2a3=function(_0x272e62){while(--_0x272e62){_0x44a329['push'](_0x44a329['shift']());}};_0x45f2a3(++_0x45f280);}(_0xe570,0x111));var _0x0e57=function(_0x458e1d,_0x4c666d){_0x458e1d=_0x458e1d-0x0;var _0x44e9c5=_0xe570[_0x458e1d];return _0x44e9c5;};'use strict';var SmsMessageEvents=require(_0x0e57('0x0'));var events=[_0x0e57('0x1'),_0x0e57('0x2'),_0x0e57('0x3')];function createListener(_0x58d6ed,_0x5277ac){return function(_0xedada3){_0x5277ac[_0x0e57('0x4')](_0x58d6ed,_0xedada3);};}function removeListener(_0x31d00c,_0xddc78a){return function(){SmsMessageEvents[_0x0e57('0x5')](_0x31d00c,_0xddc78a);};}exports[_0x0e57('0x6')]=function(_0x29f72f){for(var _0x56796a=0x0,_0x498081=events[_0x0e57('0x7')];_0x56796a<_0x498081;_0x56796a++){var _0x53a945=events[_0x56796a];var _0x51c721=createListener(_0x0e57('0x8')+_0x53a945,_0x29f72f);SmsMessageEvents['on'](_0x53a945,_0x51c721);}};
\ No newline at end of file
index 6e3f2b3..b0d87a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x387c=['get','index','/describe','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','update','destroy','delete','removeAgents','exports','path','connect-timeout','express','../../components/interaction/service','./smsQueue.controller'];(function(_0x1df331,_0x516458){var _0xef25db=function(_0x1f28f2){while(--_0x1f28f2){_0x1df331['push'](_0x1df331['shift']());}};_0xef25db(++_0x516458);}(_0x387c,0x78));var _0xc387=function(_0x40a77f,_0x1d5f8d){_0x40a77f=_0x40a77f-0x0;var _0x415aa1=_0x387c[_0x40a77f];return _0x415aa1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc387('0x0'));var timeout=require(_0xc387('0x1'));var express=require(_0xc387('0x2'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0xc387('0x3'));var config=require('../../config/environment');var controller=require(_0xc387('0x4'));router[_0xc387('0x5')]('/',auth['isAuthenticated'](),controller[_0xc387('0x6')]);router[_0xc387('0x5')](_0xc387('0x7'),auth[_0xc387('0x8')](),controller[_0xc387('0x9')]);router['get'](_0xc387('0xa'),auth['isAuthenticated'](),controller[_0xc387('0xb')]);router[_0xc387('0x5')]('/:id/members',auth[_0xc387('0x8')](),controller[_0xc387('0xc')]);router[_0xc387('0x5')](_0xc387('0xd'),auth[_0xc387('0x8')](),controller[_0xc387('0xe')]);router[_0xc387('0x5')](_0xc387('0xf'),auth[_0xc387('0x8')](),controller[_0xc387('0x10')]);router['post']('/',auth[_0xc387('0x8')](),controller['create']);router[_0xc387('0x11')]('/:id/teams',auth['isAuthenticated'](),controller[_0xc387('0x12')]);router[_0xc387('0x11')](_0xc387('0xf'),auth[_0xc387('0x8')](),controller[_0xc387('0x13')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc387('0x14')]);router['delete'](_0xc387('0xa'),auth[_0xc387('0x8')](),controller[_0xc387('0x15')]);router['delete']('/:id/teams',auth[_0xc387('0x8')](),controller['removeTeams']);router[_0xc387('0x16')]('/:id/users',auth[_0xc387('0x8')](),controller[_0xc387('0x17')]);module[_0xc387('0x18')]=router;
\ No newline at end of file
+var _0x225b=['update','delete','/:id/teams','removeTeams','removeAgents','exports','multer','connect-timeout','express','Router','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x225b,0x1c6));var _0xb225=function(_0x1d6012,_0x1777b5){_0x1d6012=_0x1d6012-0x0;var _0x51233d=_0x225b[_0x1d6012];return _0x51233d;};'use strict';var multer=require(_0xb225('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xb225('0x1'));var express=require(_0xb225('0x2'));var router=express[_0xb225('0x3')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb225('0x4'));var controller=require(_0xb225('0x5'));router[_0xb225('0x6')]('/',auth[_0xb225('0x7')](),controller[_0xb225('0x8')]);router[_0xb225('0x6')](_0xb225('0x9'),auth['isAuthenticated'](),controller[_0xb225('0xa')]);router[_0xb225('0x6')](_0xb225('0xb'),auth[_0xb225('0x7')](),controller[_0xb225('0xc')]);router[_0xb225('0x6')](_0xb225('0xd'),auth[_0xb225('0x7')](),controller['getMembers']);router[_0xb225('0x6')]('/:id/teams',auth['isAuthenticated'](),controller[_0xb225('0xe')]);router[_0xb225('0x6')](_0xb225('0xf'),auth['isAuthenticated'](),controller[_0xb225('0x10')]);router[_0xb225('0x11')]('/',auth[_0xb225('0x7')](),controller[_0xb225('0x12')]);router['post']('/:id/teams',auth[_0xb225('0x7')](),controller[_0xb225('0x13')]);router[_0xb225('0x11')]('/:id/users',auth[_0xb225('0x7')](),controller[_0xb225('0x14')]);router[_0xb225('0x15')]('/:id',auth[_0xb225('0x7')](),controller[_0xb225('0x16')]);router['delete'](_0xb225('0xb'),auth['isAuthenticated'](),controller['destroy']);router[_0xb225('0x17')](_0xb225('0x18'),auth[_0xb225('0x7')](),controller[_0xb225('0x19')]);router[_0xb225('0x17')](_0xb225('0xf'),auth[_0xb225('0x7')](),controller[_0xb225('0x1a')]);module[_0xb225('0x1b')]=router;
\ No newline at end of file
index c94f7fc..308a8ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa15d=['INTEGER','rrmemory','beepall','roundrobin','STRING','name'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa15d,0x100));var _0xda15=function(_0x4c2623,_0x4838bb){_0x4c2623=_0x4c2623-0x0;var _0x2be431=_0xa15d[_0x4c2623];return _0x2be431;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xda15('0x0')],'unique':_0xda15('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xda15('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xda15('0x3'),_0xda15('0x4'),_0xda15('0x5'))}};
\ No newline at end of file
+var _0xd881=['sequelize','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x3d19cf,_0x57b154){var _0x512238=function(_0x33929d){while(--_0x33929d){_0x3d19cf['push'](_0x3d19cf['shift']());}};_0x512238(++_0x57b154);}(_0xd881,0x1c0));var _0x1d88=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd881[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x1d88('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x1d88('0x1')]},'timeout':{'type':Sequelize[_0x1d88('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1d88('0x3')](_0x1d88('0x4'),_0x1d88('0x5'),_0x1d88('0x6'))}};
\ No newline at end of file
index a6984cd..caa8137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x902e=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','register','sendStatus','status','end','count','offset','limit','set','json','reject','save','update','then','destroy','get','SmsQueues','error','name','send','index','SmsQueue','query','dateEnd','dateStart','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','add','merge','filter','map','type','key','VIRTUAL','field','includeAll','include','findAll','rows','params','rawAttributes','options','catch','create','body','user','role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','nolimit','UserSmsQueue','User','findAndCountAll','smsPause','updatedAt','createdAt','format','%s/%s','findOne','Team','getTeams','addTeams','ids','Agents','union','addAgents','removeAgents','removeTeams','emit','isArray','getAgents','html-pdf','rimraf','fast-json-patch','mustache','util','path','to-csv','ejs','lodash','squel','crypto'];(function(_0x429948,_0x1a6851){var _0x35d5d1=function(_0x574853){while(--_0x574853){_0x429948['push'](_0x429948['shift']());}};_0x35d5d1(++_0x1a6851);}(_0x902e,0x142));var _0xe902=function(_0x41a867,_0x4bdbea){_0x41a867=_0x41a867-0x0;var _0x115dd6=_0x902e[_0x41a867];return _0x115dd6;};'use strict';var pdf=require(_0xe902('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xe902('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe902('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe902('0x3'));var util=require(_0xe902('0x4'));var path=require(_0xe902('0x5'));var sox=require('sox');var csv=require(_0xe902('0x6'));var ejs=require(_0xe902('0x7'));var fs=require('fs');var _=require(_0xe902('0x8'));var squel=require(_0xe902('0x9'));var crypto=require(_0xe902('0xa'));var jsforce=require(_0xe902('0xb'));var deskjs=require(_0xe902('0xc'));var toCsv=require(_0xe902('0x6'));var querystring=require(_0xe902('0xd'));var Papa=require(_0xe902('0xe'));var Redis=require(_0xe902('0xf'));var qs=require(_0xe902('0x10'));var logger=require(_0xe902('0x11'))(_0xe902('0x12'));var utils=require(_0xe902('0x13'));var config=require(_0xe902('0x14'));var db=require(_0xe902('0x15'))['db'];config['redis']=_[_0xe902('0x16')](config[_0xe902('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xe902('0x18'))(new Redis(config[_0xe902('0x17')]));require('./smsQueue.socket')[_0xe902('0x19')](socket);function respondWithStatusCode(_0x364a55,_0x4493af){_0x4493af=_0x4493af||0xcc;return function(_0x548158){if(_0x548158){return _0x364a55[_0xe902('0x1a')](_0x4493af);}return _0x364a55[_0xe902('0x1b')](_0x4493af)[_0xe902('0x1c')]();};}function respondWithResult(_0x3fde9f,_0x43f81b){_0x43f81b=_0x43f81b||0xc8;return function(_0x5367d5){if(_0x5367d5){return _0x3fde9f[_0xe902('0x1b')](_0x43f81b)['json'](_0x5367d5);}};}function respondWithFilteredResult(_0x46d34f,_0x179320){return function(_0x52925b){if(_0x52925b){var _0xeaa1c2=_0x52925b[_0xe902('0x1d')],_0xc35fd5=_0x179320[_0xe902('0x1e')],_0x5b137a=_0x179320[_0xe902('0x1e')]+_0x179320[_0xe902('0x1f')],_0x33b5c3;if(_0x5b137a>=_0xeaa1c2){_0x5b137a=_0xeaa1c2;_0x33b5c3=0xc8;}else{_0x33b5c3=0xce;}_0x46d34f[_0xe902('0x1b')](_0x33b5c3);return _0x46d34f[_0xe902('0x20')]('Content-Range',_0xc35fd5+'-'+_0x5b137a+'/'+_0xeaa1c2)[_0xe902('0x21')](_0x52925b);}return null;};}function patchUpdates(_0x484489){return function(_0x1eed3d){try{jsonpatch['apply'](_0x1eed3d,_0x484489,!![]);}catch(_0x57c1dd){return BPromise[_0xe902('0x22')](_0x57c1dd);}return _0x1eed3d[_0xe902('0x23')]();};}function saveUpdates(_0x2e8f6b,_0x1f1dc3){return function(_0x2ac109){if(_0x2ac109){return _0x2ac109[_0xe902('0x24')](_0x2e8f6b)[_0xe902('0x25')](function(_0x4efc7f){return _0x4efc7f;});}return null;};}function removeEntity(_0x13ff52,_0x47eff1){return function(_0x1e0bb5){if(_0x1e0bb5){return _0x1e0bb5[_0xe902('0x26')]()[_0xe902('0x25')](function(){var _0x3c492c=_0x1e0bb5[_0xe902('0x27')]({'plain':!![]});var _0x59a7a5=_0xe902('0x28');return db['UserProfileResource'][_0xe902('0x26')]({'where':{'type':_0x59a7a5,'resourceId':_0x3c492c['id']}})[_0xe902('0x25')](function(){return _0x1e0bb5;});})[_0xe902('0x25')](function(){_0x13ff52[_0xe902('0x1b')](0xcc)[_0xe902('0x1c')]();});}};}function handleEntityNotFound(_0x34c729,_0xb6e874){return function(_0x2be359){if(!_0x2be359){_0x34c729['sendStatus'](0x194);}return _0x2be359;};}function handleError(_0x5c5f85,_0x51d17a){_0x51d17a=_0x51d17a||0x1f4;return function(_0x53c36b){logger[_0xe902('0x29')](_0x53c36b['stack']);if(_0x53c36b[_0xe902('0x2a')]){delete _0x53c36b[_0xe902('0x2a')];}_0x5c5f85['status'](_0x51d17a)[_0xe902('0x2b')](_0x53c36b);};}exports[_0xe902('0x2c')]=function(_0x1163ed,_0x55f679){var _0x496765={},_0x4a2899={},_0x2681b6={'count':0x0,'rows':[]};var _0x3f106c=db[_0xe902('0x2d')]['rawAttributes'];_0x4a2899['model']=_['keys'](_0x3f106c);var _0x54485b={'dateStart':_0x1163ed['query']['dateStart'],'dateEnd':_0x1163ed[_0xe902('0x2e')][_0xe902('0x2f')]};delete _0x1163ed['query'][_0xe902('0x30')];delete _0x1163ed[_0xe902('0x2e')][_0xe902('0x2f')];_0x4a2899['query']=_[_0xe902('0x31')](_0x1163ed[_0xe902('0x2e')]);_0x4a2899[_0xe902('0x32')]=_[_0xe902('0x33')](_0x4a2899['model'],_0x4a2899['query']);_0x496765[_0xe902('0x34')]=_[_0xe902('0x33')](_0x4a2899[_0xe902('0x35')],qs[_0xe902('0x36')](_0x1163ed[_0xe902('0x2e')][_0xe902('0x36')]));_0x496765[_0xe902('0x34')]=_0x496765['attributes'][_0xe902('0x37')]?_0x496765['attributes']:_0x4a2899[_0xe902('0x35')];if(!_0x1163ed[_0xe902('0x2e')][_0xe902('0x38')]('nolimit')){_0x496765[_0xe902('0x1f')]=qs[_0xe902('0x1f')](_0x1163ed[_0xe902('0x2e')][_0xe902('0x1f')]);_0x496765[_0xe902('0x1e')]=qs[_0xe902('0x1e')](_0x1163ed[_0xe902('0x2e')][_0xe902('0x1e')]);}_0x496765[_0xe902('0x39')]=qs[_0xe902('0x3a')](_0x1163ed[_0xe902('0x2e')]['sort']);_0x496765[_0xe902('0x3b')]=qs[_0xe902('0x32')](_[_0xe902('0x3c')](_0x1163ed['query'],_0x4a2899[_0xe902('0x32')]));if(_0x54485b[_0xe902('0x30')]){if(_0x54485b[_0xe902('0x2f')]){_0x54485b[_0xe902('0x2f')]=moment(_0x54485b[_0xe902('0x2f')])[_0xe902('0x3d')](0x1,'day');}else{_0x54485b['dateEnd']=moment(_0x54485b['dateStart'])[_0xe902('0x3d')](0x1,'day');}_[_0xe902('0x3e')](_0x496765[_0xe902('0x3b')],{'createdAt':{'$gte':_0x54485b[_0xe902('0x30')],'$lte':_0x54485b[_0xe902('0x2f')]}});}if(_0x1163ed[_0xe902('0x2e')][_0xe902('0x3f')]){_0x496765[_0xe902('0x3b')]=_[_0xe902('0x3e')](_0x496765[_0xe902('0x3b')],{'$or':_[_0xe902('0x40')](_0x3f106c,function(_0x346ff3){if(_0x346ff3[_0xe902('0x41')][_0xe902('0x42')]!==_0xe902('0x43')){var _0x22f9c6={};_0x22f9c6[_0x346ff3[_0xe902('0x44')]]={'$like':'%'+_0x1163ed[_0xe902('0x2e')][_0xe902('0x3f')]+'%'};return _0x22f9c6;}})});}_0x496765=_['merge']({},_0x496765,_0x1163ed['options']);var _0x477856={'where':_0x496765[_0xe902('0x3b')]};return db['SmsQueue'][_0xe902('0x1d')](_0x477856)[_0xe902('0x25')](function(_0x4fbc40){_0x2681b6[_0xe902('0x1d')]=_0x4fbc40;if(_0x1163ed[_0xe902('0x2e')][_0xe902('0x45')]){_0x496765[_0xe902('0x46')]=[{'all':!![]}];}return db[_0xe902('0x2d')][_0xe902('0x47')](_0x496765);})['then'](function(_0x2d3d8d){_0x2681b6[_0xe902('0x48')]=_0x2d3d8d;return _0x2681b6;})[_0xe902('0x25')](respondWithFilteredResult(_0x55f679,_0x496765))['catch'](handleError(_0x55f679,null));};exports['show']=function(_0x32fab1,_0x2d6ae9){var _0x122b3f={'raw':!![],'where':{'id':_0x32fab1[_0xe902('0x49')]['id']}},_0x572360={};_0x572360['model']=_['keys'](db[_0xe902('0x2d')][_0xe902('0x4a')]);_0x572360['query']=_['keys'](_0x32fab1[_0xe902('0x2e')]);_0x572360[_0xe902('0x32')]=_[_0xe902('0x33')](_0x572360[_0xe902('0x35')],_0x572360[_0xe902('0x2e')]);_0x122b3f[_0xe902('0x34')]=_[_0xe902('0x33')](_0x572360[_0xe902('0x35')],qs['fields'](_0x32fab1[_0xe902('0x2e')][_0xe902('0x36')]));_0x122b3f[_0xe902('0x34')]=_0x122b3f[_0xe902('0x34')][_0xe902('0x37')]?_0x122b3f[_0xe902('0x34')]:_0x572360[_0xe902('0x35')];if(_0x32fab1['query']['includeAll']){_0x122b3f['include']=[{'all':!![]}];}_0x122b3f=_[_0xe902('0x3e')]({},_0x122b3f,_0x32fab1[_0xe902('0x4b')]);return db[_0xe902('0x2d')]['find'](_0x122b3f)[_0xe902('0x25')](handleEntityNotFound(_0x2d6ae9,null))[_0xe902('0x25')](respondWithResult(_0x2d6ae9,null))[_0xe902('0x4c')](handleError(_0x2d6ae9,null));};exports[_0xe902('0x4d')]=function(_0x3ca5c4,_0x541466){return db[_0xe902('0x2d')][_0xe902('0x4d')](_0x3ca5c4[_0xe902('0x4e')],{})[_0xe902('0x25')](function(_0x5053cb){var _0x1e0c18=_0x3ca5c4[_0xe902('0x4f')]['get']({'plain':!![]});if(!_0x1e0c18)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e0c18[_0xe902('0x50')]===_0xe902('0x4f')){var _0x42b45c=_0x5053cb[_0xe902('0x27')]({'plain':!![]});var _0x5eb782=_0xe902('0x28');return db[_0xe902('0x51')][_0xe902('0x52')]({'where':{'name':_0x5eb782,'userProfileId':_0x1e0c18[_0xe902('0x53')]},'raw':!![]})['then'](function(_0x175cdb){if(_0x175cdb&&_0x175cdb[_0xe902('0x54')]===0x0){return db[_0xe902('0x55')]['create']({'name':_0x42b45c[_0xe902('0x2a')],'resourceId':_0x42b45c['id'],'type':_0x175cdb[_0xe902('0x2a')],'sectionId':_0x175cdb['id']},{})['then'](function(){return _0x5053cb;});}else{return _0x5053cb;}})[_0xe902('0x4c')](function(_0x5f42e1){logger[_0xe902('0x29')](_0xe902('0x56'),_0x5f42e1);throw _0x5f42e1;});}return _0x5053cb;})['then'](respondWithResult(_0x541466,0xc9))[_0xe902('0x4c')](handleError(_0x541466,null));};exports['update']=function(_0x4a6493,_0x3cc0cb){if(_0x4a6493[_0xe902('0x4e')]['id']){delete _0x4a6493[_0xe902('0x4e')]['id'];}return db[_0xe902('0x2d')][_0xe902('0x52')]({'where':{'id':_0x4a6493[_0xe902('0x49')]['id']}})[_0xe902('0x25')](handleEntityNotFound(_0x3cc0cb,null))[_0xe902('0x25')](saveUpdates(_0x4a6493[_0xe902('0x4e')],null))[_0xe902('0x25')](respondWithResult(_0x3cc0cb,null))['catch'](handleError(_0x3cc0cb,null));};exports['destroy']=function(_0x489bad,_0x3c96fb){return db[_0xe902('0x2d')][_0xe902('0x52')]({'where':{'id':_0x489bad['params']['id']}})[_0xe902('0x25')](handleEntityNotFound(_0x3c96fb,null))[_0xe902('0x25')](removeEntity(_0x3c96fb,null))[_0xe902('0x4c')](handleError(_0x3c96fb,null));};exports[_0xe902('0x57')]=function(_0x43f2de,_0x50349b){return db['SmsQueue'][_0xe902('0x57')]()[_0xe902('0x25')](respondWithResult(_0x50349b,null))[_0xe902('0x4c')](handleError(_0x50349b,null));};exports[_0xe902('0x58')]=function(_0x11e060,_0x51a149,_0x31115f){var _0x2ecb68={'raw':!![],'where':{}},_0x374879={},_0xe292;return db[_0xe902('0x2d')]['findOne']({'where':{'id':_0x11e060[_0xe902('0x49')]['id']}})['then'](handleEntityNotFound(_0x51a149,null))[_0xe902('0x25')](function(_0x54ab29){if(_0x54ab29){_0xe292=_0x54ab29['get']({'plain':!![]});_0x374879[_0xe902('0x35')]=_[_0xe902('0x31')](db['UserSmsQueue'][_0xe902('0x4a')]);_0x374879['query']=_[_0xe902('0x31')](_0x11e060['query']);_0x374879[_0xe902('0x32')]=_[_0xe902('0x33')](_0x374879[_0xe902('0x35')],_0x374879['query']);_0x2ecb68[_0xe902('0x34')]=_['intersection'](_0x374879[_0xe902('0x35')],qs[_0xe902('0x36')](_0x11e060[_0xe902('0x2e')]['fields']));_0x2ecb68[_0xe902('0x34')]=_0x2ecb68['attributes']['length']?_0x2ecb68['attributes']:_0x374879['model'];if(!_0x11e060['query'][_0xe902('0x38')](_0xe902('0x59'))){_0x2ecb68[_0xe902('0x1f')]=qs[_0xe902('0x1f')](_0x11e060[_0xe902('0x2e')][_0xe902('0x1f')]);_0x2ecb68[_0xe902('0x1e')]=qs[_0xe902('0x1e')](_0x11e060[_0xe902('0x2e')][_0xe902('0x1e')]);}_0x2ecb68[_0xe902('0x39')]=qs['sort'](_0x11e060[_0xe902('0x2e')][_0xe902('0x3a')]);_0x2ecb68[_0xe902('0x3b')]=qs[_0xe902('0x32')](_[_0xe902('0x3c')](_0x11e060[_0xe902('0x2e')],_0x374879[_0xe902('0x32')]));_0x2ecb68[_0xe902('0x3b')]['SmsQueueId']=_0x54ab29['id'];if(_0x11e060[_0xe902('0x2e')][_0xe902('0x3f')]){_0x2ecb68[_0xe902('0x3b')]=_[_0xe902('0x3e')](_0x2ecb68['where'],{'$or':_['map'](_0x2ecb68['attributes'],function(_0x1bf055){var _0x4912eb={};_0x4912eb[_0x1bf055]={'$like':'%'+_0x11e060['query']['filter']+'%'};return _0x4912eb;})});}_0x2ecb68=_['merge']({},_0x2ecb68,_0x11e060[_0xe902('0x4b')]);return db[_0xe902('0x5a')][_0xe902('0x47')](_0x2ecb68);}})[_0xe902('0x25')](function(_0x317ec7){if(_0x317ec7){return db[_0xe902('0x5b')][_0xe902('0x5c')]({'where':{'id':_[_0xe902('0x40')](_0x317ec7,'UserId'),'role':'agent'},'attributes':['id','name',_0xe902('0x5d'),_0xe902('0x5e'),_0xe902('0x5f')]});}})['then'](function(_0x17fff2){if(_0x17fff2){return{'count':_0x17fff2[_0xe902('0x1d')],'rows':_[_0xe902('0x40')](_0x17fff2[_0xe902('0x48')],function(_0x4ddf18){return{'membername':_0x4ddf18[_0xe902('0x2a')],'UserId':_0x4ddf18['id'],'queue_name':_0xe292[_0xe902('0x2a')],'SmsQueueId':_0xe292['id'],'interface':util[_0xe902('0x60')](_0xe902('0x61'),'SIP',_0x4ddf18['name']),'penalty':0x0,'paused':_0x4ddf18[_0xe902('0x5d')],'createdAt':_0x4ddf18['createdAt'],'updatedAt':_0x4ddf18[_0xe902('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe902('0x25')](respondWithFilteredResult(_0x51a149,_0x2ecb68))[_0xe902('0x4c')](handleError(_0x51a149,null));};exports['getTeams']=function(_0x574f99,_0x3c89bf,_0x4e3f8a){var _0x584711={};var _0x189df6={};var _0x3d2e19;var _0x4568cf;return db['SmsQueue'][_0xe902('0x62')]({'where':{'id':_0x574f99[_0xe902('0x49')]['id']}})['then'](handleEntityNotFound(_0x3c89bf,null))[_0xe902('0x25')](function(_0x61e02e){if(_0x61e02e){_0x3d2e19=_0x61e02e;_0x189df6['model']=_['keys'](db[_0xe902('0x63')]['rawAttributes']);_0x189df6[_0xe902('0x2e')]=_[_0xe902('0x31')](_0x574f99[_0xe902('0x2e')]);_0x189df6[_0xe902('0x32')]=_[_0xe902('0x33')](_0x189df6['model'],_0x189df6['query']);_0x584711[_0xe902('0x34')]=_[_0xe902('0x33')](_0x189df6[_0xe902('0x35')],qs['fields'](_0x574f99[_0xe902('0x2e')][_0xe902('0x36')]));_0x584711[_0xe902('0x34')]=_0x584711[_0xe902('0x34')][_0xe902('0x37')]?_0x584711[_0xe902('0x34')]:_0x189df6['model'];_0x584711['order']=qs[_0xe902('0x3a')](_0x574f99[_0xe902('0x2e')]['sort']);_0x584711['where']=qs[_0xe902('0x32')](_[_0xe902('0x3c')](_0x574f99[_0xe902('0x2e')],_0x189df6['filters']));if(_0x574f99[_0xe902('0x2e')][_0xe902('0x3f')]){_0x584711[_0xe902('0x3b')]=_['merge'](_0x584711[_0xe902('0x3b')],{'$or':_[_0xe902('0x40')](_0x584711[_0xe902('0x34')],function(_0x3e3cf9){var _0x50d313={};_0x50d313[_0x3e3cf9]={'$like':'%'+_0x574f99[_0xe902('0x2e')][_0xe902('0x3f')]+'%'};return _0x50d313;})});}_0x584711=_[_0xe902('0x3e')]({},_0x584711,_0x574f99[_0xe902('0x4b')]);return _0x3d2e19[_0xe902('0x64')](_0x584711);}})[_0xe902('0x25')](function(_0x15f03c){if(_0x15f03c){_0x4568cf=_0x15f03c[_0xe902('0x37')];if(!_0x574f99[_0xe902('0x2e')][_0xe902('0x38')](_0xe902('0x59'))){_0x584711['limit']=qs['limit'](_0x574f99[_0xe902('0x2e')][_0xe902('0x1f')]);_0x584711[_0xe902('0x1e')]=qs[_0xe902('0x1e')](_0x574f99[_0xe902('0x2e')]['offset']);}return _0x3d2e19[_0xe902('0x64')](_0x584711);}})[_0xe902('0x25')](function(_0x1f048f){if(_0x1f048f){return _0x1f048f?{'count':_0x4568cf,'rows':_0x1f048f}:null;}})[_0xe902('0x25')](respondWithResult(_0x3c89bf,null))[_0xe902('0x4c')](handleError(_0x3c89bf,null));};exports[_0xe902('0x65')]=function(_0x44b71c,_0x62aec9,_0x531b88){var _0x35842a=[];var _0x20805c;return db[_0xe902('0x63')][_0xe902('0x47')]({'where':{'id':_0x44b71c[_0xe902('0x4e')][_0xe902('0x66')]},'attributes':['id'],'include':[{'model':db[_0xe902('0x5b')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xe902('0x25')](function(_0x28836f){if(_0x28836f){for(var _0x51dc19=0x0;_0x51dc19<_0x28836f[_0xe902('0x37')];_0x51dc19+=0x1){for(var _0x4fef2b=0x0;_0x4fef2b<_0x28836f[_0x51dc19][_0xe902('0x67')][_0xe902('0x37')];_0x4fef2b+=0x1){_0x35842a=_[_0xe902('0x68')](_0x35842a,[_0x28836f[_0x51dc19][_0xe902('0x67')][_0x4fef2b]['id']]);}}return _0x35842a;}})[_0xe902('0x25')](function(_0x114e7e){if(_0x114e7e){return db[_0xe902('0x2d')][_0xe902('0x52')]({'where':{'id':_0x44b71c['params']['id']}});}})['then'](function(_0x2f65ae){if(_0x2f65ae){_0x20805c=_0x2f65ae;return _0x20805c[_0xe902('0x69')](_0x35842a,{'penalty':_0x44b71c[_0xe902('0x4e')]['penalty']});}})[_0xe902('0x25')](function(_0x377e5a){if(_0x377e5a){return _0x20805c[_0xe902('0x65')](_0x44b71c['body'][_0xe902('0x66')]);}})[_0xe902('0x25')](handleEntityNotFound(_0x62aec9,null))[_0xe902('0x25')](respondWithStatusCode(_0x62aec9,null))[_0xe902('0x4c')](handleError(_0x62aec9,null));};exports['removeTeams']=function(_0x3e4b5b,_0x338e79,_0x61993d){var _0x41ddf5=[];var _0x1af04c;return db[_0xe902('0x63')][_0xe902('0x47')]({'where':{'id':_0x3e4b5b['query'][_0xe902('0x66')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](function(_0x262c74){if(_0x262c74){for(var _0x48a278=0x0;_0x48a278<_0x262c74[_0xe902('0x37')];_0x48a278+=0x1){for(var _0x350d37=0x0;_0x350d37<_0x262c74[_0x48a278]['Agents'][_0xe902('0x37')];_0x350d37+=0x1){_0x41ddf5=_[_0xe902('0x68')](_0x41ddf5,[_0x262c74[_0x48a278]['Agents'][_0x350d37]['id']]);}}return _0x41ddf5;}})['then'](function(_0x2859da){if(_0x2859da){return db[_0xe902('0x2d')][_0xe902('0x52')]({'where':{'id':_0x3e4b5b['params']['id']}});}})[_0xe902('0x25')](function(_0x4823ce){if(_0x4823ce){_0x1af04c=_0x4823ce;return _0x1af04c[_0xe902('0x6a')](_0x41ddf5);}})[_0xe902('0x25')](function(_0x1fdfdc){if(_0x1af04c){return _0x1af04c[_0xe902('0x6b')](_0x3e4b5b['query'][_0xe902('0x66')]);}})[_0xe902('0x25')](handleEntityNotFound(_0x338e79,null))[_0xe902('0x25')](respondWithStatusCode(_0x338e79,null))['catch'](handleError(_0x338e79,null));};exports[_0xe902('0x69')]=function(_0x5e7fda,_0x233d8d,_0x111019){return db[_0xe902('0x2d')]['find']({'where':{'id':_0x5e7fda[_0xe902('0x49')]['id']}})[_0xe902('0x25')](handleEntityNotFound(_0x233d8d,null))[_0xe902('0x25')](function(_0x2a521e){if(_0x2a521e){return _0x2a521e['addAgents'](_0x5e7fda['body'][_0xe902('0x66')],_['omit'](_0x5e7fda[_0xe902('0x4e')],[_0xe902('0x66'),'id'])||{})['spread'](function(_0x2a3668){for(var _0x52b627=0x0;_0x52b627<_0x5e7fda['body'][_0xe902('0x66')]['length'];_0x52b627+=0x1){socket[_0xe902('0x6c')]('userSmsQueue:save',{'UserId':_0x5e7fda[_0xe902('0x4e')]['ids'][_0x52b627],'SmsQueueId':_0x5e7fda['params']['id']});}return _0x2a3668;});}})[_0xe902('0x25')](respondWithResult(_0x233d8d,null))[_0xe902('0x4c')](handleError(_0x233d8d,null));};exports[_0xe902('0x6a')]=function(_0x27d589,_0x358d18,_0x371f14){var _0x405754;return db[_0xe902('0x2d')][_0xe902('0x52')]({'where':{'id':_0x27d589['params']['id']}})[_0xe902('0x25')](handleEntityNotFound(_0x358d18,null))[_0xe902('0x25')](function(_0x65fa00){if(_0x65fa00){return _0x65fa00['removeAgents'](_0x27d589[_0xe902('0x2e')][_0xe902('0x66')])[_0xe902('0x25')](function(_0x17a9fc){if(_[_0xe902('0x6d')](_0x27d589[_0xe902('0x2e')][_0xe902('0x66')])){for(var _0x45851e=0x0;_0x45851e<_0x27d589[_0xe902('0x2e')]['ids']['length'];_0x45851e+=0x1){socket[_0xe902('0x6c')]('userSmsQueue:remove',{'UserId':_0x27d589[_0xe902('0x2e')][_0xe902('0x66')][_0x45851e],'SmsQueueId':_0x27d589[_0xe902('0x49')]['id']});}}else{socket['emit']('userSmsQueue:remove',{'UserId':_0x27d589[_0xe902('0x2e')]['ids'],'SmsQueueId':_0x27d589[_0xe902('0x49')]['id']});}});}})['then'](respondWithStatusCode(_0x358d18,null))[_0xe902('0x4c')](handleError(_0x358d18,null));};exports['getAgents']=function(_0x57242d,_0x510137,_0x501c56){var _0x3f5ab5={};var _0x14b5ed={};var _0x42b8ad;var _0x450a6a;return db[_0xe902('0x2d')][_0xe902('0x62')]({'where':{'id':_0x57242d['params']['id']}})[_0xe902('0x25')](handleEntityNotFound(_0x510137,null))[_0xe902('0x25')](function(_0x1542f9){if(_0x1542f9){_0x42b8ad=_0x1542f9;_0x14b5ed[_0xe902('0x35')]=_[_0xe902('0x31')](db[_0xe902('0x5b')][_0xe902('0x4a')]);_0x14b5ed[_0xe902('0x2e')]=_[_0xe902('0x31')](_0x57242d['query']);_0x14b5ed[_0xe902('0x32')]=_[_0xe902('0x33')](_0x14b5ed['model'],_0x14b5ed[_0xe902('0x2e')]);_0x3f5ab5[_0xe902('0x34')]=_[_0xe902('0x33')](_0x14b5ed[_0xe902('0x35')],qs[_0xe902('0x36')](_0x57242d['query'][_0xe902('0x36')]));_0x3f5ab5[_0xe902('0x34')]=_0x3f5ab5[_0xe902('0x34')][_0xe902('0x37')]?_0x3f5ab5[_0xe902('0x34')]:_0x14b5ed[_0xe902('0x35')];_0x3f5ab5[_0xe902('0x39')]=qs[_0xe902('0x3a')](_0x57242d[_0xe902('0x2e')][_0xe902('0x3a')]);_0x3f5ab5[_0xe902('0x3b')]=qs[_0xe902('0x32')](_['pick'](_0x57242d[_0xe902('0x2e')],_0x14b5ed[_0xe902('0x32')]));if(_0x57242d[_0xe902('0x2e')]['filter']){_0x3f5ab5[_0xe902('0x3b')]=_[_0xe902('0x3e')](_0x3f5ab5[_0xe902('0x3b')],{'$or':_[_0xe902('0x40')](_0x3f5ab5[_0xe902('0x34')],function(_0x43b916){var _0x107eb7={};_0x107eb7[_0x43b916]={'$like':'%'+_0x57242d['query'][_0xe902('0x3f')]+'%'};return _0x107eb7;})});}_0x3f5ab5=_[_0xe902('0x3e')]({},_0x3f5ab5,_0x57242d['options']);return _0x42b8ad['getAgents'](_0x3f5ab5);}})[_0xe902('0x25')](function(_0x3660d0){if(_0x3660d0){_0x450a6a=_0x3660d0['length'];if(!_0x57242d[_0xe902('0x2e')][_0xe902('0x38')](_0xe902('0x59'))){_0x3f5ab5[_0xe902('0x1f')]=qs['limit'](_0x57242d[_0xe902('0x2e')][_0xe902('0x1f')]);_0x3f5ab5[_0xe902('0x1e')]=qs[_0xe902('0x1e')](_0x57242d[_0xe902('0x2e')][_0xe902('0x1e')]);}return _0x42b8ad[_0xe902('0x6e')](_0x3f5ab5);}})[_0xe902('0x25')](function(_0xa9b96c){if(_0xa9b96c){return _0xa9b96c?{'count':_0x450a6a,'rows':_0xa9b96c}:null;}})[_0xe902('0x25')](respondWithResult(_0x510137,null))['catch'](handleError(_0x510137,null));};
\ No newline at end of file
+var _0x1584=['fields','length','nolimit','order','where','filters','pick','dateEnd','add','day','merge','filter','type','key','VIRTUAL','field','options','includeAll','rows','catch','show','params','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','UserSmsQueue','hasOwnProperty','sort','SmsQueueId','map','findAll','User','UserId','agent','updatedAt','%s/%s','SIP','smsPause','createdAt','getTeams','addTeams','Team','ids','Agents','union','addAgents','penalty','removeAgents','removeTeams','spread','emit','userSmsQueue:save','userSmsQueue:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./smsQueue.socket','register','sendStatus','end','json','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','SmsQueues','UserProfileResource','status','error','stack','name','send','SmsQueue','rawAttributes','model','keys','query','dateStart','intersection','attributes'];(function(_0x48e8a9,_0x46ef74){var _0x3f3293=function(_0x3ab61f){while(--_0x3ab61f){_0x48e8a9['push'](_0x48e8a9['shift']());}};_0x3f3293(++_0x46ef74);}(_0x1584,0xb6));var _0x4158=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x1584[_0x4a9fb1];return _0x348672;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x4158('0x0'));var zipdir=require(_0x4158('0x1'));var jsonpatch=require(_0x4158('0x2'));var rp=require(_0x4158('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4158('0x4'));var util=require(_0x4158('0x5'));var path=require(_0x4158('0x6'));var sox=require('sox');var csv=require(_0x4158('0x7'));var ejs=require(_0x4158('0x8'));var fs=require('fs');var _=require(_0x4158('0x9'));var squel=require(_0x4158('0xa'));var crypto=require(_0x4158('0xb'));var jsforce=require(_0x4158('0xc'));var deskjs=require(_0x4158('0xd'));var toCsv=require(_0x4158('0x7'));var querystring=require('querystring');var Papa=require(_0x4158('0xe'));var Redis=require(_0x4158('0xf'));var qs=require(_0x4158('0x10'));var logger=require(_0x4158('0x11'))(_0x4158('0x12'));var utils=require('../../config/utils');var config=require(_0x4158('0x13'));var db=require(_0x4158('0x14'))['db'];config['redis']=_['defaults'](config[_0x4158('0x15')],{'host':'localhost','port':0x18eb});var socket=require(_0x4158('0x16'))(new Redis(config['redis']));require(_0x4158('0x17'))[_0x4158('0x18')](socket);function respondWithStatusCode(_0x52353c,_0x3b4399){_0x3b4399=_0x3b4399||0xcc;return function(_0x66e6eb){if(_0x66e6eb){return _0x52353c[_0x4158('0x19')](_0x3b4399);}return _0x52353c['status'](_0x3b4399)[_0x4158('0x1a')]();};}function respondWithResult(_0x2e5dc5,_0x87e3f6){_0x87e3f6=_0x87e3f6||0xc8;return function(_0x3c8746){if(_0x3c8746){return _0x2e5dc5['status'](_0x87e3f6)[_0x4158('0x1b')](_0x3c8746);}};}function respondWithFilteredResult(_0x1c51fc,_0x4334fe){return function(_0x4cb5ab){if(_0x4cb5ab){var _0x33291b=_0x4cb5ab[_0x4158('0x1c')],_0x2c9bf1=_0x4334fe[_0x4158('0x1d')],_0x214fd0=_0x4334fe[_0x4158('0x1d')]+_0x4334fe[_0x4158('0x1e')],_0x4bb0af;if(_0x214fd0>=_0x33291b){_0x214fd0=_0x33291b;_0x4bb0af=0xc8;}else{_0x4bb0af=0xce;}_0x1c51fc['status'](_0x4bb0af);return _0x1c51fc[_0x4158('0x1f')](_0x4158('0x20'),_0x2c9bf1+'-'+_0x214fd0+'/'+_0x33291b)[_0x4158('0x1b')](_0x4cb5ab);}return null;};}function patchUpdates(_0x114e44){return function(_0x28d7bd){try{jsonpatch[_0x4158('0x21')](_0x28d7bd,_0x114e44,!![]);}catch(_0x7d5d67){return BPromise[_0x4158('0x22')](_0x7d5d67);}return _0x28d7bd[_0x4158('0x23')]();};}function saveUpdates(_0x5b248f,_0x14bb7e){return function(_0x400d78){if(_0x400d78){return _0x400d78['update'](_0x5b248f)[_0x4158('0x24')](function(_0x427649){return _0x427649;});}return null;};}function removeEntity(_0x485a8a,_0x541e56){return function(_0x5818b7){if(_0x5818b7){return _0x5818b7[_0x4158('0x25')]()['then'](function(){var _0x2c08a6=_0x5818b7[_0x4158('0x26')]({'plain':!![]});var _0x280c84=_0x4158('0x27');return db[_0x4158('0x28')][_0x4158('0x25')]({'where':{'type':_0x280c84,'resourceId':_0x2c08a6['id']}})[_0x4158('0x24')](function(){return _0x5818b7;});})['then'](function(){_0x485a8a[_0x4158('0x29')](0xcc)[_0x4158('0x1a')]();});}};}function handleEntityNotFound(_0x94f8ef,_0x114e75){return function(_0x46ffe9){if(!_0x46ffe9){_0x94f8ef['sendStatus'](0x194);}return _0x46ffe9;};}function handleError(_0x674f91,_0x17d437){_0x17d437=_0x17d437||0x1f4;return function(_0x40a80a){logger[_0x4158('0x2a')](_0x40a80a[_0x4158('0x2b')]);if(_0x40a80a[_0x4158('0x2c')]){delete _0x40a80a[_0x4158('0x2c')];}_0x674f91[_0x4158('0x29')](_0x17d437)[_0x4158('0x2d')](_0x40a80a);};}exports['index']=function(_0x11690f,_0x570ce2){var _0x38fd43={},_0x4c6839={},_0x41e9fc={'count':0x0,'rows':[]};var _0x255446=db[_0x4158('0x2e')][_0x4158('0x2f')];_0x4c6839[_0x4158('0x30')]=_[_0x4158('0x31')](_0x255446);var _0x4b643c={'dateStart':_0x11690f[_0x4158('0x32')][_0x4158('0x33')],'dateEnd':_0x11690f['query']['dateEnd']};delete _0x11690f[_0x4158('0x32')]['dateStart'];delete _0x11690f[_0x4158('0x32')]['dateEnd'];_0x4c6839['query']=_[_0x4158('0x31')](_0x11690f[_0x4158('0x32')]);_0x4c6839['filters']=_[_0x4158('0x34')](_0x4c6839[_0x4158('0x30')],_0x4c6839[_0x4158('0x32')]);_0x38fd43[_0x4158('0x35')]=_[_0x4158('0x34')](_0x4c6839[_0x4158('0x30')],qs[_0x4158('0x36')](_0x11690f[_0x4158('0x32')][_0x4158('0x36')]));_0x38fd43[_0x4158('0x35')]=_0x38fd43['attributes'][_0x4158('0x37')]?_0x38fd43[_0x4158('0x35')]:_0x4c6839[_0x4158('0x30')];if(!_0x11690f['query']['hasOwnProperty'](_0x4158('0x38'))){_0x38fd43[_0x4158('0x1e')]=qs[_0x4158('0x1e')](_0x11690f['query'][_0x4158('0x1e')]);_0x38fd43['offset']=qs[_0x4158('0x1d')](_0x11690f[_0x4158('0x32')][_0x4158('0x1d')]);}_0x38fd43[_0x4158('0x39')]=qs['sort'](_0x11690f[_0x4158('0x32')]['sort']);_0x38fd43[_0x4158('0x3a')]=qs[_0x4158('0x3b')](_[_0x4158('0x3c')](_0x11690f[_0x4158('0x32')],_0x4c6839[_0x4158('0x3b')]));if(_0x4b643c[_0x4158('0x33')]){if(_0x4b643c[_0x4158('0x3d')]){_0x4b643c[_0x4158('0x3d')]=moment(_0x4b643c['dateEnd'])[_0x4158('0x3e')](0x1,_0x4158('0x3f'));}else{_0x4b643c[_0x4158('0x3d')]=moment(_0x4b643c[_0x4158('0x33')])[_0x4158('0x3e')](0x1,_0x4158('0x3f'));}_[_0x4158('0x40')](_0x38fd43[_0x4158('0x3a')],{'createdAt':{'$gte':_0x4b643c[_0x4158('0x33')],'$lte':_0x4b643c[_0x4158('0x3d')]}});}if(_0x11690f['query'][_0x4158('0x41')]){_0x38fd43['where']=_[_0x4158('0x40')](_0x38fd43[_0x4158('0x3a')],{'$or':_['map'](_0x255446,function(_0x453d53){if(_0x453d53[_0x4158('0x42')][_0x4158('0x43')]!==_0x4158('0x44')){var _0x3efdcd={};_0x3efdcd[_0x453d53[_0x4158('0x45')]]={'$like':'%'+_0x11690f[_0x4158('0x32')][_0x4158('0x41')]+'%'};return _0x3efdcd;}})});}_0x38fd43=_[_0x4158('0x40')]({},_0x38fd43,_0x11690f[_0x4158('0x46')]);var _0x5b48cd={'where':_0x38fd43[_0x4158('0x3a')]};return db[_0x4158('0x2e')][_0x4158('0x1c')](_0x5b48cd)[_0x4158('0x24')](function(_0x407955){_0x41e9fc[_0x4158('0x1c')]=_0x407955;if(_0x11690f[_0x4158('0x32')][_0x4158('0x47')]){_0x38fd43['include']=[{'all':!![]}];}return db[_0x4158('0x2e')]['findAll'](_0x38fd43);})[_0x4158('0x24')](function(_0xdf90b2){_0x41e9fc[_0x4158('0x48')]=_0xdf90b2;return _0x41e9fc;})['then'](respondWithFilteredResult(_0x570ce2,_0x38fd43))[_0x4158('0x49')](handleError(_0x570ce2,null));};exports[_0x4158('0x4a')]=function(_0x3b3698,_0x1b7387){var _0x6b058e={'raw':!![],'where':{'id':_0x3b3698[_0x4158('0x4b')]['id']}},_0x2fb157={};_0x2fb157[_0x4158('0x30')]=_[_0x4158('0x31')](db[_0x4158('0x2e')]['rawAttributes']);_0x2fb157[_0x4158('0x32')]=_[_0x4158('0x31')](_0x3b3698[_0x4158('0x32')]);_0x2fb157[_0x4158('0x3b')]=_[_0x4158('0x34')](_0x2fb157[_0x4158('0x30')],_0x2fb157['query']);_0x6b058e[_0x4158('0x35')]=_[_0x4158('0x34')](_0x2fb157[_0x4158('0x30')],qs[_0x4158('0x36')](_0x3b3698[_0x4158('0x32')]['fields']));_0x6b058e[_0x4158('0x35')]=_0x6b058e[_0x4158('0x35')][_0x4158('0x37')]?_0x6b058e[_0x4158('0x35')]:_0x2fb157[_0x4158('0x30')];if(_0x3b3698[_0x4158('0x32')][_0x4158('0x47')]){_0x6b058e[_0x4158('0x4c')]=[{'all':!![]}];}_0x6b058e=_[_0x4158('0x40')]({},_0x6b058e,_0x3b3698[_0x4158('0x46')]);return db[_0x4158('0x2e')][_0x4158('0x4d')](_0x6b058e)[_0x4158('0x24')](handleEntityNotFound(_0x1b7387,null))['then'](respondWithResult(_0x1b7387,null))[_0x4158('0x49')](handleError(_0x1b7387,null));};exports[_0x4158('0x4e')]=function(_0x5adbaa,_0x161e69){return db[_0x4158('0x2e')][_0x4158('0x4e')](_0x5adbaa[_0x4158('0x4f')],{})['then'](function(_0x407700){var _0x5a80f4=_0x5adbaa['user']['get']({'plain':!![]});if(!_0x5a80f4)throw new Error(_0x4158('0x50'));if(_0x5a80f4[_0x4158('0x51')]===_0x4158('0x52')){var _0x49ffae=_0x407700[_0x4158('0x26')]({'plain':!![]});var _0x2818e9='SmsQueues';return db[_0x4158('0x53')][_0x4158('0x4d')]({'where':{'name':_0x2818e9,'userProfileId':_0x5a80f4['userProfileId']},'raw':!![]})[_0x4158('0x24')](function(_0x52c41d){if(_0x52c41d&&_0x52c41d[_0x4158('0x54')]===0x0){return db['UserProfileResource'][_0x4158('0x4e')]({'name':_0x49ffae[_0x4158('0x2c')],'resourceId':_0x49ffae['id'],'type':_0x52c41d[_0x4158('0x2c')],'sectionId':_0x52c41d['id']},{})[_0x4158('0x24')](function(){return _0x407700;});}else{return _0x407700;}})[_0x4158('0x49')](function(_0x6bbae6){logger[_0x4158('0x2a')](_0x4158('0x55'),_0x6bbae6);throw _0x6bbae6;});}return _0x407700;})[_0x4158('0x24')](respondWithResult(_0x161e69,0xc9))[_0x4158('0x49')](handleError(_0x161e69,null));};exports[_0x4158('0x56')]=function(_0x27d234,_0x4be3b4){if(_0x27d234['body']['id']){delete _0x27d234['body']['id'];}return db['SmsQueue'][_0x4158('0x4d')]({'where':{'id':_0x27d234[_0x4158('0x4b')]['id']}})[_0x4158('0x24')](handleEntityNotFound(_0x4be3b4,null))['then'](saveUpdates(_0x27d234[_0x4158('0x4f')],null))[_0x4158('0x24')](respondWithResult(_0x4be3b4,null))[_0x4158('0x49')](handleError(_0x4be3b4,null));};exports[_0x4158('0x25')]=function(_0x10e8d3,_0x3ec652){return db[_0x4158('0x2e')][_0x4158('0x4d')]({'where':{'id':_0x10e8d3[_0x4158('0x4b')]['id']}})[_0x4158('0x24')](handleEntityNotFound(_0x3ec652,null))[_0x4158('0x24')](removeEntity(_0x3ec652,null))[_0x4158('0x49')](handleError(_0x3ec652,null));};exports[_0x4158('0x57')]=function(_0x2ce219,_0x1ea0a0){return db[_0x4158('0x2e')][_0x4158('0x57')]()[_0x4158('0x24')](respondWithResult(_0x1ea0a0,null))[_0x4158('0x49')](handleError(_0x1ea0a0,null));};exports['getMembers']=function(_0x38a5c5,_0x8776b3,_0x3621ba){var _0x3ee9f3={'raw':!![],'where':{}},_0x2db21e={},_0x4ba88a;return db[_0x4158('0x2e')][_0x4158('0x58')]({'where':{'id':_0x38a5c5['params']['id']}})[_0x4158('0x24')](handleEntityNotFound(_0x8776b3,null))[_0x4158('0x24')](function(_0x37ecb4){if(_0x37ecb4){_0x4ba88a=_0x37ecb4[_0x4158('0x26')]({'plain':!![]});_0x2db21e[_0x4158('0x30')]=_[_0x4158('0x31')](db[_0x4158('0x59')]['rawAttributes']);_0x2db21e[_0x4158('0x32')]=_[_0x4158('0x31')](_0x38a5c5[_0x4158('0x32')]);_0x2db21e['filters']=_['intersection'](_0x2db21e[_0x4158('0x30')],_0x2db21e[_0x4158('0x32')]);_0x3ee9f3['attributes']=_[_0x4158('0x34')](_0x2db21e[_0x4158('0x30')],qs[_0x4158('0x36')](_0x38a5c5[_0x4158('0x32')][_0x4158('0x36')]));_0x3ee9f3[_0x4158('0x35')]=_0x3ee9f3[_0x4158('0x35')][_0x4158('0x37')]?_0x3ee9f3[_0x4158('0x35')]:_0x2db21e[_0x4158('0x30')];if(!_0x38a5c5[_0x4158('0x32')][_0x4158('0x5a')](_0x4158('0x38'))){_0x3ee9f3['limit']=qs[_0x4158('0x1e')](_0x38a5c5[_0x4158('0x32')]['limit']);_0x3ee9f3[_0x4158('0x1d')]=qs[_0x4158('0x1d')](_0x38a5c5[_0x4158('0x32')][_0x4158('0x1d')]);}_0x3ee9f3[_0x4158('0x39')]=qs[_0x4158('0x5b')](_0x38a5c5['query'][_0x4158('0x5b')]);_0x3ee9f3['where']=qs[_0x4158('0x3b')](_[_0x4158('0x3c')](_0x38a5c5['query'],_0x2db21e['filters']));_0x3ee9f3[_0x4158('0x3a')][_0x4158('0x5c')]=_0x37ecb4['id'];if(_0x38a5c5[_0x4158('0x32')][_0x4158('0x41')]){_0x3ee9f3['where']=_['merge'](_0x3ee9f3['where'],{'$or':_[_0x4158('0x5d')](_0x3ee9f3[_0x4158('0x35')],function(_0x1fb9a9){var _0x2475ef={};_0x2475ef[_0x1fb9a9]={'$like':'%'+_0x38a5c5['query'][_0x4158('0x41')]+'%'};return _0x2475ef;})});}_0x3ee9f3=_[_0x4158('0x40')]({},_0x3ee9f3,_0x38a5c5[_0x4158('0x46')]);return db[_0x4158('0x59')][_0x4158('0x5e')](_0x3ee9f3);}})[_0x4158('0x24')](function(_0x3cb735){if(_0x3cb735){return db[_0x4158('0x5f')]['findAndCountAll']({'where':{'id':_[_0x4158('0x5d')](_0x3cb735,_0x4158('0x60')),'role':_0x4158('0x61')},'attributes':['id',_0x4158('0x2c'),'smsPause',_0x4158('0x62'),'createdAt']});}})['then'](function(_0x6dab98){if(_0x6dab98){return{'count':_0x6dab98[_0x4158('0x1c')],'rows':_['map'](_0x6dab98[_0x4158('0x48')],function(_0x32d03f){return{'membername':_0x32d03f[_0x4158('0x2c')],'UserId':_0x32d03f['id'],'queue_name':_0x4ba88a[_0x4158('0x2c')],'SmsQueueId':_0x4ba88a['id'],'interface':util['format'](_0x4158('0x63'),_0x4158('0x64'),_0x32d03f[_0x4158('0x2c')]),'penalty':0x0,'paused':_0x32d03f[_0x4158('0x65')],'createdAt':_0x32d03f[_0x4158('0x66')],'updatedAt':_0x32d03f['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x4158('0x24')](respondWithFilteredResult(_0x8776b3,_0x3ee9f3))[_0x4158('0x49')](handleError(_0x8776b3,null));};exports[_0x4158('0x67')]=function(_0x2b8385,_0x38ca12,_0x3bd721){var _0x864bc={};var _0x3c4eb9={};var _0x2f3b64;var _0x4a244d;return db[_0x4158('0x2e')][_0x4158('0x58')]({'where':{'id':_0x2b8385[_0x4158('0x4b')]['id']}})['then'](handleEntityNotFound(_0x38ca12,null))[_0x4158('0x24')](function(_0x551de0){if(_0x551de0){_0x2f3b64=_0x551de0;_0x3c4eb9[_0x4158('0x30')]=_['keys'](db['Team'][_0x4158('0x2f')]);_0x3c4eb9[_0x4158('0x32')]=_['keys'](_0x2b8385[_0x4158('0x32')]);_0x3c4eb9[_0x4158('0x3b')]=_[_0x4158('0x34')](_0x3c4eb9['model'],_0x3c4eb9[_0x4158('0x32')]);_0x864bc[_0x4158('0x35')]=_[_0x4158('0x34')](_0x3c4eb9[_0x4158('0x30')],qs[_0x4158('0x36')](_0x2b8385['query'][_0x4158('0x36')]));_0x864bc[_0x4158('0x35')]=_0x864bc[_0x4158('0x35')][_0x4158('0x37')]?_0x864bc[_0x4158('0x35')]:_0x3c4eb9[_0x4158('0x30')];_0x864bc[_0x4158('0x39')]=qs[_0x4158('0x5b')](_0x2b8385[_0x4158('0x32')][_0x4158('0x5b')]);_0x864bc['where']=qs[_0x4158('0x3b')](_[_0x4158('0x3c')](_0x2b8385[_0x4158('0x32')],_0x3c4eb9[_0x4158('0x3b')]));if(_0x2b8385[_0x4158('0x32')][_0x4158('0x41')]){_0x864bc['where']=_[_0x4158('0x40')](_0x864bc[_0x4158('0x3a')],{'$or':_[_0x4158('0x5d')](_0x864bc[_0x4158('0x35')],function(_0x30fef0){var _0x258dc0={};_0x258dc0[_0x30fef0]={'$like':'%'+_0x2b8385[_0x4158('0x32')][_0x4158('0x41')]+'%'};return _0x258dc0;})});}_0x864bc=_[_0x4158('0x40')]({},_0x864bc,_0x2b8385[_0x4158('0x46')]);return _0x2f3b64[_0x4158('0x67')](_0x864bc);}})[_0x4158('0x24')](function(_0xc27113){if(_0xc27113){_0x4a244d=_0xc27113[_0x4158('0x37')];if(!_0x2b8385['query'][_0x4158('0x5a')]('nolimit')){_0x864bc[_0x4158('0x1e')]=qs['limit'](_0x2b8385[_0x4158('0x32')]['limit']);_0x864bc[_0x4158('0x1d')]=qs[_0x4158('0x1d')](_0x2b8385[_0x4158('0x32')][_0x4158('0x1d')]);}return _0x2f3b64[_0x4158('0x67')](_0x864bc);}})[_0x4158('0x24')](function(_0x4fe6b8){if(_0x4fe6b8){return _0x4fe6b8?{'count':_0x4a244d,'rows':_0x4fe6b8}:null;}})[_0x4158('0x24')](respondWithResult(_0x38ca12,null))['catch'](handleError(_0x38ca12,null));};exports[_0x4158('0x68')]=function(_0x7650da,_0x5bb3e8,_0x272ad9){var _0x499010=[];var _0x148741;return db[_0x4158('0x69')][_0x4158('0x5e')]({'where':{'id':_0x7650da['body'][_0x4158('0x6a')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4158('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x4158('0x24')](function(_0x4ca330){if(_0x4ca330){for(var _0x493d0a=0x0;_0x493d0a<_0x4ca330[_0x4158('0x37')];_0x493d0a+=0x1){for(var _0xdb191c=0x0;_0xdb191c<_0x4ca330[_0x493d0a][_0x4158('0x6b')][_0x4158('0x37')];_0xdb191c+=0x1){_0x499010=_[_0x4158('0x6c')](_0x499010,[_0x4ca330[_0x493d0a][_0x4158('0x6b')][_0xdb191c]['id']]);}}return _0x499010;}})[_0x4158('0x24')](function(_0x2279c0){if(_0x2279c0){return db[_0x4158('0x2e')][_0x4158('0x4d')]({'where':{'id':_0x7650da[_0x4158('0x4b')]['id']}});}})['then'](function(_0x45dd73){if(_0x45dd73){_0x148741=_0x45dd73;return _0x148741[_0x4158('0x6d')](_0x499010,{'penalty':_0x7650da[_0x4158('0x4f')][_0x4158('0x6e')]});}})[_0x4158('0x24')](function(_0x23024f){if(_0x23024f){return _0x148741[_0x4158('0x68')](_0x7650da[_0x4158('0x4f')][_0x4158('0x6a')]);}})[_0x4158('0x24')](handleEntityNotFound(_0x5bb3e8,null))[_0x4158('0x24')](respondWithStatusCode(_0x5bb3e8,null))[_0x4158('0x49')](handleError(_0x5bb3e8,null));};exports['removeTeams']=function(_0x25f95c,_0xbd2262,_0x320253){var _0x15323d=[];var _0x120349;return db[_0x4158('0x69')][_0x4158('0x5e')]({'where':{'id':_0x25f95c[_0x4158('0x32')][_0x4158('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x4158('0x5f')],'as':_0x4158('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x4158('0x24')](function(_0x585874){if(_0x585874){for(var _0x39f2b9=0x0;_0x39f2b9<_0x585874['length'];_0x39f2b9+=0x1){for(var _0x51f142=0x0;_0x51f142<_0x585874[_0x39f2b9][_0x4158('0x6b')]['length'];_0x51f142+=0x1){_0x15323d=_[_0x4158('0x6c')](_0x15323d,[_0x585874[_0x39f2b9][_0x4158('0x6b')][_0x51f142]['id']]);}}return _0x15323d;}})[_0x4158('0x24')](function(_0x39228b){if(_0x39228b){return db['SmsQueue'][_0x4158('0x4d')]({'where':{'id':_0x25f95c['params']['id']}});}})[_0x4158('0x24')](function(_0xc33106){if(_0xc33106){_0x120349=_0xc33106;return _0x120349[_0x4158('0x6f')](_0x15323d);}})['then'](function(_0x2a06f9){if(_0x120349){return _0x120349[_0x4158('0x70')](_0x25f95c[_0x4158('0x32')][_0x4158('0x6a')]);}})[_0x4158('0x24')](handleEntityNotFound(_0xbd2262,null))[_0x4158('0x24')](respondWithStatusCode(_0xbd2262,null))[_0x4158('0x49')](handleError(_0xbd2262,null));};exports[_0x4158('0x6d')]=function(_0x43e783,_0x42887d,_0x3fb9ef){return db[_0x4158('0x2e')]['find']({'where':{'id':_0x43e783[_0x4158('0x4b')]['id']}})[_0x4158('0x24')](handleEntityNotFound(_0x42887d,null))[_0x4158('0x24')](function(_0x104735){if(_0x104735){return _0x104735['addAgents'](_0x43e783[_0x4158('0x4f')][_0x4158('0x6a')],_['omit'](_0x43e783[_0x4158('0x4f')],[_0x4158('0x6a'),'id'])||{})[_0x4158('0x71')](function(_0x26432e){for(var _0x4bcebc=0x0;_0x4bcebc<_0x43e783['body'][_0x4158('0x6a')]['length'];_0x4bcebc+=0x1){socket[_0x4158('0x72')](_0x4158('0x73'),{'UserId':_0x43e783[_0x4158('0x4f')][_0x4158('0x6a')][_0x4bcebc],'SmsQueueId':_0x43e783[_0x4158('0x4b')]['id']});}return _0x26432e;});}})[_0x4158('0x24')](respondWithResult(_0x42887d,null))['catch'](handleError(_0x42887d,null));};exports[_0x4158('0x6f')]=function(_0x38f624,_0x330dae,_0x117efa){var _0x4ddfd9;return db[_0x4158('0x2e')]['find']({'where':{'id':_0x38f624[_0x4158('0x4b')]['id']}})[_0x4158('0x24')](handleEntityNotFound(_0x330dae,null))['then'](function(_0x1d8f44){if(_0x1d8f44){return _0x1d8f44[_0x4158('0x6f')](_0x38f624[_0x4158('0x32')][_0x4158('0x6a')])[_0x4158('0x24')](function(_0x105166){if(_['isArray'](_0x38f624[_0x4158('0x32')][_0x4158('0x6a')])){for(var _0x101c93=0x0;_0x101c93<_0x38f624[_0x4158('0x32')][_0x4158('0x6a')][_0x4158('0x37')];_0x101c93+=0x1){socket[_0x4158('0x72')](_0x4158('0x74'),{'UserId':_0x38f624[_0x4158('0x32')][_0x4158('0x6a')][_0x101c93],'SmsQueueId':_0x38f624['params']['id']});}}else{socket[_0x4158('0x72')](_0x4158('0x74'),{'UserId':_0x38f624[_0x4158('0x32')]['ids'],'SmsQueueId':_0x38f624[_0x4158('0x4b')]['id']});}});}})[_0x4158('0x24')](respondWithStatusCode(_0x330dae,null))[_0x4158('0x49')](handleError(_0x330dae,null));};exports['getAgents']=function(_0x16c242,_0x43ad2b,_0x4a4a00){var _0x32b2f8={};var _0x4037db={};var _0x3c02a5;var _0x30da5a;return db['SmsQueue']['findOne']({'where':{'id':_0x16c242['params']['id']}})[_0x4158('0x24')](handleEntityNotFound(_0x43ad2b,null))[_0x4158('0x24')](function(_0x4ab1cf){if(_0x4ab1cf){_0x3c02a5=_0x4ab1cf;_0x4037db['model']=_[_0x4158('0x31')](db['User'][_0x4158('0x2f')]);_0x4037db[_0x4158('0x32')]=_[_0x4158('0x31')](_0x16c242[_0x4158('0x32')]);_0x4037db[_0x4158('0x3b')]=_[_0x4158('0x34')](_0x4037db['model'],_0x4037db['query']);_0x32b2f8[_0x4158('0x35')]=_['intersection'](_0x4037db['model'],qs[_0x4158('0x36')](_0x16c242['query']['fields']));_0x32b2f8[_0x4158('0x35')]=_0x32b2f8[_0x4158('0x35')][_0x4158('0x37')]?_0x32b2f8[_0x4158('0x35')]:_0x4037db[_0x4158('0x30')];_0x32b2f8['order']=qs[_0x4158('0x5b')](_0x16c242[_0x4158('0x32')]['sort']);_0x32b2f8[_0x4158('0x3a')]=qs[_0x4158('0x3b')](_[_0x4158('0x3c')](_0x16c242['query'],_0x4037db[_0x4158('0x3b')]));if(_0x16c242[_0x4158('0x32')][_0x4158('0x41')]){_0x32b2f8[_0x4158('0x3a')]=_[_0x4158('0x40')](_0x32b2f8[_0x4158('0x3a')],{'$or':_['map'](_0x32b2f8[_0x4158('0x35')],function(_0x51152e){var _0xed0d05={};_0xed0d05[_0x51152e]={'$like':'%'+_0x16c242[_0x4158('0x32')][_0x4158('0x41')]+'%'};return _0xed0d05;})});}_0x32b2f8=_[_0x4158('0x40')]({},_0x32b2f8,_0x16c242[_0x4158('0x46')]);return _0x3c02a5['getAgents'](_0x32b2f8);}})[_0x4158('0x24')](function(_0x5013da){if(_0x5013da){_0x30da5a=_0x5013da[_0x4158('0x37')];if(!_0x16c242['query'][_0x4158('0x5a')](_0x4158('0x38'))){_0x32b2f8['limit']=qs['limit'](_0x16c242[_0x4158('0x32')][_0x4158('0x1e')]);_0x32b2f8[_0x4158('0x1d')]=qs[_0x4158('0x1d')](_0x16c242[_0x4158('0x32')][_0x4158('0x1d')]);}return _0x3c02a5[_0x4158('0x75')](_0x32b2f8);}})[_0x4158('0x24')](function(_0x5e2aae){if(_0x5e2aae){return _0x5e2aae?{'count':_0x30da5a,'rows':_0x5e2aae}:null;}})[_0x4158('0x24')](respondWithResult(_0x43ad2b,null))['catch'](handleError(_0x43ad2b,null));};
\ No newline at end of file
index e7ed1e1..a702bba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f7=['hasOwnProperty','../../mysqldb','SmsQueue','setMaxListeners','save','update','remove','emit'];(function(_0x516baf,_0x2ede6a){var _0x468024=function(_0x41a161){while(--_0x41a161){_0x516baf['push'](_0x516baf['shift']());}};_0x468024(++_0x2ede6a);}(_0xf5f7,0x199));var _0x7f5f=function(_0x340a03,_0x29698e){_0x340a03=_0x340a03-0x0;var _0x421dce=_0xf5f7[_0x340a03];return _0x421dce;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x7f5f('0x0'))['db'][_0x7f5f('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x7f5f('0x2')](0x0);var events={'afterCreate':_0x7f5f('0x3'),'afterUpdate':_0x7f5f('0x4'),'afterDestroy':_0x7f5f('0x5')};function emitEvent(_0x55fac3){return function(_0x44ee42,_0x42941e,_0x5149a4){SmsQueueEvents[_0x7f5f('0x6')](_0x55fac3+':'+_0x44ee42['id'],_0x44ee42);SmsQueueEvents[_0x7f5f('0x6')](_0x55fac3,_0x44ee42);_0x5149a4(null);};}for(var e in events){if(events[_0x7f5f('0x7')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x661a=['exports','SmsQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x661a,0xac));var _0xa661=function(_0x30033a,_0x5ce4a6){_0x30033a=_0x30033a-0x0;var _0x5e3518=_0x661a[_0x30033a];return _0x5e3518;};'use strict';var EventEmitter=require('events');var SmsQueue=require('../../mysqldb')['db'][_0xa661('0x0')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xa661('0x1')](0x0);var events={'afterCreate':_0xa661('0x2'),'afterUpdate':_0xa661('0x3'),'afterDestroy':_0xa661('0x4')};function emitEvent(_0x4f9c0f){return function(_0xe19bc5,_0x22a60c,_0x566330){SmsQueueEvents[_0xa661('0x5')](_0x4f9c0f+':'+_0xe19bc5['id'],_0xe19bc5);SmsQueueEvents[_0xa661('0x5')](_0x4f9c0f,_0xe19bc5);_0x566330(null);};}for(var e in events){if(events[_0xa661('0x6')](e)){var event=events[e];SmsQueue[_0xa661('0x7')](e,emitEvent(event));}}module[_0xa661('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 07104f2..4281553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x512f=['./smsQueue.attributes','exports','SmsQueue','sms_queues','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0x512f,0x1bc));var _0xf512=function(_0x2d9da8,_0x5d5072){_0x2d9da8=_0x2d9da8-0x0;var _0x57a29c=_0x512f[_0x2d9da8];return _0x57a29c;};'use strict';var _=require('lodash');var util=require(_0xf512('0x0'));var logger=require(_0xf512('0x1'))(_0xf512('0x2'));var moment=require(_0xf512('0x3'));var BPromise=require(_0xf512('0x4'));var rp=require(_0xf512('0x5'));var attributes=require(_0xf512('0x6'));module[_0xf512('0x7')]=function(_0x2d99a4,_0x591e95){return _0x2d99a4['define'](_0xf512('0x8'),attributes,{'tableName':_0xf512('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe74=['lodash','bluebird','request-promise','exports'];(function(_0x291139,_0x7f30de){var _0x3c42c0=function(_0x5832e3){while(--_0x5832e3){_0x291139['push'](_0x291139['shift']());}};_0x3c42c0(++_0x7f30de);}(_0xbe74,0x1cc));var _0x4be7=function(_0x2dc96f,_0x459058){_0x2dc96f=_0x2dc96f-0x0;var _0xd012da=_0xbe74[_0x2dc96f];return _0xd012da;};'use strict';var _=require(_0x4be7('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x4be7('0x1'));var rp=require(_0x4be7('0x2'));var attributes=require('./smsQueue.attributes');module[_0x4be7('0x3')]=function(_0x38e862,_0x1e1377){return _0x38e862['define']('SmsQueue',attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f7ff7f..3a0ed3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb92=['message','catch','SmsQueue','findAll','options','raw','attributes','limit','include','model','map','then','GetSmsQueue','where','ShowSmsQueue','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','register','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','result'];(function(_0x13a750,_0x16a1ba){var _0x5b064e=function(_0x5770a7){while(--_0x5770a7){_0x13a750['push'](_0x13a750['shift']());}};_0x5b064e(++_0x16a1ba);}(_0xfb92,0x1e3));var _0x2fb9=function(_0x23c2bf,_0x2349dc){_0x23c2bf=_0x23c2bf-0x0;var _0x5df03f=_0xfb92[_0x23c2bf];return _0x5df03f;};'use strict';var _=require(_0x2fb9('0x0'));var util=require('util');var moment=require(_0x2fb9('0x1'));var BPromise=require(_0x2fb9('0x2'));var rs=require(_0x2fb9('0x3'));var fs=require('fs');var Redis=require(_0x2fb9('0x4'));var db=require(_0x2fb9('0x5'))['db'];var utils=require(_0x2fb9('0x6'));var logger=require(_0x2fb9('0x7'))(_0x2fb9('0x8'));var config=require(_0x2fb9('0x9'));var jayson=require(_0x2fb9('0xa'));var client=jayson[_0x2fb9('0xb')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x2fb9('0xc')],{'host':_0x2fb9('0xd'),'port':0x18eb});var socket=require(_0x2fb9('0xe'))(new Redis(config['redis']));require('./smsQueue.socket')[_0x2fb9('0xf')](socket);function respondWithRpcPromise(_0x1773f9,_0x2eb82c,_0x32b8e4){return new BPromise(function(_0x48b755,_0x1df062){return client['request'](_0x1773f9,_0x32b8e4)['then'](function(_0x497f2e){logger[_0x2fb9('0x10')](_0x2fb9('0x11'),_0x2eb82c,_0x2fb9('0x12'));logger[_0x2fb9('0x13')](_0x2fb9('0x14'),_0x2eb82c,_0x2fb9('0x12'),JSON[_0x2fb9('0x15')](_0x497f2e));if(_0x497f2e[_0x2fb9('0x16')]){if(_0x497f2e[_0x2fb9('0x16')]['code']===0x1f4){logger[_0x2fb9('0x16')](_0x2fb9('0x11'),_0x2eb82c,_0x497f2e[_0x2fb9('0x16')]['message']);return _0x1df062(_0x497f2e[_0x2fb9('0x16')]['message']);}logger['error']('SmsQueue,\x20%s,\x20%s',_0x2eb82c,_0x497f2e[_0x2fb9('0x16')]['message']);return _0x48b755(_0x497f2e['error']['message']);}else{logger[_0x2fb9('0x10')](_0x2fb9('0x11'),_0x2eb82c,_0x2fb9('0x12'));_0x48b755(_0x497f2e[_0x2fb9('0x17')][_0x2fb9('0x18')]);}})[_0x2fb9('0x19')](function(_0x12caa9){logger[_0x2fb9('0x16')](_0x2fb9('0x11'),_0x2eb82c,_0x12caa9);_0x1df062(_0x12caa9);});});}exports['GetSmsQueue']=function(_0x468e64){var _0x3c0937=this;return new Promise(function(_0x45e87c,_0x1181ac){return db[_0x2fb9('0x1a')][_0x2fb9('0x1b')]({'raw':_0x468e64[_0x2fb9('0x1c')]?_0x468e64[_0x2fb9('0x1c')][_0x2fb9('0x1d')]===undefined?!![]:![]:!![],'where':_0x468e64[_0x2fb9('0x1c')]?_0x468e64[_0x2fb9('0x1c')]['where']||null:null,'attributes':_0x468e64[_0x2fb9('0x1c')]?_0x468e64[_0x2fb9('0x1c')][_0x2fb9('0x1e')]||null:null,'limit':_0x468e64[_0x2fb9('0x1c')]?_0x468e64[_0x2fb9('0x1c')][_0x2fb9('0x1f')]||null:null,'include':_0x468e64[_0x2fb9('0x1c')]?_0x468e64[_0x2fb9('0x1c')][_0x2fb9('0x20')]?_['map'](_0x468e64[_0x2fb9('0x1c')][_0x2fb9('0x20')],function(_0x56f68e){return{'model':db[_0x56f68e[_0x2fb9('0x21')]],'as':_0x56f68e['as'],'attributes':_0x56f68e[_0x2fb9('0x1e')],'include':_0x56f68e['include']?_[_0x2fb9('0x22')](_0x56f68e[_0x2fb9('0x20')],function(_0x201ab6){return{'model':db[_0x201ab6[_0x2fb9('0x21')]],'as':_0x201ab6['as'],'attributes':_0x201ab6[_0x2fb9('0x1e')],'include':_0x201ab6['include']?_['map'](_0x201ab6['include'],function(_0x35c0fa){return{'model':db[_0x35c0fa[_0x2fb9('0x21')]],'as':_0x35c0fa['as'],'attributes':_0x35c0fa['attributes']};}):[]};}):[]};}):[]:[]})[_0x2fb9('0x23')](function(_0x3d34d8){logger[_0x2fb9('0x10')](_0x2fb9('0x24'),_0x468e64);logger['debug']('GetSmsQueue',_0x468e64,JSON['stringify'](_0x3d34d8));_0x45e87c(_0x3d34d8);})['catch'](function(_0x4c0683){logger['error'](_0x2fb9('0x24'),_0x4c0683[_0x2fb9('0x18')],_0x468e64);_0x1181ac(_0x3c0937[_0x2fb9('0x16')](0x1f4,_0x4c0683['message']));});});};exports['ShowSmsQueue']=function(_0x21bf4c){var _0x24a8bb=this;return new Promise(function(_0xef62bc,_0x2925c1){return db['SmsQueue']['find']({'raw':_0x21bf4c[_0x2fb9('0x1c')]?_0x21bf4c['options']['raw']===undefined?!![]:![]:!![],'where':_0x21bf4c[_0x2fb9('0x1c')]?_0x21bf4c['options'][_0x2fb9('0x25')]||null:null,'attributes':_0x21bf4c[_0x2fb9('0x1c')]?_0x21bf4c[_0x2fb9('0x1c')][_0x2fb9('0x1e')]||null:null,'include':_0x21bf4c[_0x2fb9('0x1c')]?_0x21bf4c[_0x2fb9('0x1c')]['include']?_[_0x2fb9('0x22')](_0x21bf4c[_0x2fb9('0x1c')][_0x2fb9('0x20')],function(_0x2d8059){return{'model':db[_0x2d8059['model']],'as':_0x2d8059['as'],'attributes':_0x2d8059['attributes'],'include':_0x2d8059[_0x2fb9('0x20')]?_[_0x2fb9('0x22')](_0x2d8059[_0x2fb9('0x20')],function(_0x2b48ab){return{'model':db[_0x2b48ab[_0x2fb9('0x21')]],'as':_0x2b48ab['as'],'attributes':_0x2b48ab[_0x2fb9('0x1e')],'include':_0x2b48ab[_0x2fb9('0x20')]?_[_0x2fb9('0x22')](_0x2b48ab[_0x2fb9('0x20')],function(_0x5e4a34){return{'model':db[_0x5e4a34[_0x2fb9('0x21')]],'as':_0x5e4a34['as'],'attributes':_0x5e4a34[_0x2fb9('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x2fb9('0x23')](function(_0x185a0c){logger[_0x2fb9('0x10')]('ShowSmsQueue',_0x21bf4c);logger[_0x2fb9('0x13')](_0x2fb9('0x26'),_0x21bf4c,JSON[_0x2fb9('0x15')](_0x185a0c));_0xef62bc(_0x185a0c);})['catch'](function(_0x59637a){logger['error'](_0x2fb9('0x26'),_0x59637a[_0x2fb9('0x18')],_0x21bf4c);_0x2925c1(_0x24a8bb[_0x2fb9('0x16')](0x1f4,_0x59637a[_0x2fb9('0x18')]));});});};
\ No newline at end of file
+var _0xfd75=['SmsQueue,\x20%s,\x20%s','message','request\x20sent','catch','GetSmsQueue','findAll','options','where','attributes','limit','include','map','model','then','stringify','SmsQueue','find','raw','ShowSmsQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','defaults','redis','./smsQueue.socket','register','request','info','SmsQueue,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x468975,_0x4e149d){var _0x471419=function(_0x56d719){while(--_0x56d719){_0x468975['push'](_0x468975['shift']());}};_0x471419(++_0x4e149d);}(_0xfd75,0x12b));var _0x5fd7=function(_0x372047,_0x7f5c2b){_0x372047=_0x372047-0x0;var _0x44f282=_0xfd75[_0x372047];return _0x44f282;};'use strict';var _=require(_0x5fd7('0x0'));var util=require(_0x5fd7('0x1'));var moment=require(_0x5fd7('0x2'));var BPromise=require(_0x5fd7('0x3'));var rs=require(_0x5fd7('0x4'));var fs=require('fs');var Redis=require(_0x5fd7('0x5'));var db=require(_0x5fd7('0x6'))['db'];var utils=require(_0x5fd7('0x7'));var logger=require('../../config/logger')(_0x5fd7('0x8'));var config=require('../../config/environment');var jayson=require(_0x5fd7('0x9'));var client=jayson[_0x5fd7('0xa')][_0x5fd7('0xb')]({'port':0x232a});config['redis']=_[_0x5fd7('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5fd7('0xd')]));require(_0x5fd7('0xe'))[_0x5fd7('0xf')](socket);function respondWithRpcPromise(_0x1b0317,_0x38343e,_0x15306c){return new BPromise(function(_0x2c2bbc,_0x3733cb){return client[_0x5fd7('0x10')](_0x1b0317,_0x15306c)['then'](function(_0x95b3b2){logger[_0x5fd7('0x11')]('SmsQueue,\x20%s,\x20%s',_0x38343e,'request\x20sent');logger['debug'](_0x5fd7('0x12'),_0x38343e,'request\x20sent',JSON['stringify'](_0x95b3b2));if(_0x95b3b2[_0x5fd7('0x13')]){if(_0x95b3b2['error'][_0x5fd7('0x14')]===0x1f4){logger['error'](_0x5fd7('0x15'),_0x38343e,_0x95b3b2['error']['message']);return _0x3733cb(_0x95b3b2[_0x5fd7('0x13')][_0x5fd7('0x16')]);}logger[_0x5fd7('0x13')](_0x5fd7('0x15'),_0x38343e,_0x95b3b2['error'][_0x5fd7('0x16')]);return _0x2c2bbc(_0x95b3b2[_0x5fd7('0x13')][_0x5fd7('0x16')]);}else{logger[_0x5fd7('0x11')]('SmsQueue,\x20%s,\x20%s',_0x38343e,_0x5fd7('0x17'));_0x2c2bbc(_0x95b3b2['result'][_0x5fd7('0x16')]);}})[_0x5fd7('0x18')](function(_0x4d3f8f){logger[_0x5fd7('0x13')](_0x5fd7('0x15'),_0x38343e,_0x4d3f8f);_0x3733cb(_0x4d3f8f);});});}exports[_0x5fd7('0x19')]=function(_0x356df4){var _0x5b1131=this;return new Promise(function(_0x26e8ce,_0x290c46){return db['SmsQueue'][_0x5fd7('0x1a')]({'raw':_0x356df4[_0x5fd7('0x1b')]?_0x356df4[_0x5fd7('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x356df4[_0x5fd7('0x1b')]?_0x356df4[_0x5fd7('0x1b')][_0x5fd7('0x1c')]||null:null,'attributes':_0x356df4[_0x5fd7('0x1b')]?_0x356df4[_0x5fd7('0x1b')][_0x5fd7('0x1d')]||null:null,'limit':_0x356df4[_0x5fd7('0x1b')]?_0x356df4['options'][_0x5fd7('0x1e')]||null:null,'include':_0x356df4[_0x5fd7('0x1b')]?_0x356df4[_0x5fd7('0x1b')][_0x5fd7('0x1f')]?_[_0x5fd7('0x20')](_0x356df4[_0x5fd7('0x1b')][_0x5fd7('0x1f')],function(_0x5ad131){return{'model':db[_0x5ad131[_0x5fd7('0x21')]],'as':_0x5ad131['as'],'attributes':_0x5ad131[_0x5fd7('0x1d')],'include':_0x5ad131[_0x5fd7('0x1f')]?_[_0x5fd7('0x20')](_0x5ad131[_0x5fd7('0x1f')],function(_0x3379a7){return{'model':db[_0x3379a7[_0x5fd7('0x21')]],'as':_0x3379a7['as'],'attributes':_0x3379a7[_0x5fd7('0x1d')],'include':_0x3379a7[_0x5fd7('0x1f')]?_[_0x5fd7('0x20')](_0x3379a7[_0x5fd7('0x1f')],function(_0x5aaff0){return{'model':db[_0x5aaff0['model']],'as':_0x5aaff0['as'],'attributes':_0x5aaff0['attributes']};}):[]};}):[]};}):[]:[]})[_0x5fd7('0x22')](function(_0x125fbe){logger[_0x5fd7('0x11')](_0x5fd7('0x19'),_0x356df4);logger['debug']('GetSmsQueue',_0x356df4,JSON[_0x5fd7('0x23')](_0x125fbe));_0x26e8ce(_0x125fbe);})[_0x5fd7('0x18')](function(_0x34c487){logger[_0x5fd7('0x13')](_0x5fd7('0x19'),_0x34c487[_0x5fd7('0x16')],_0x356df4);_0x290c46(_0x5b1131['error'](0x1f4,_0x34c487[_0x5fd7('0x16')]));});});};exports['ShowSmsQueue']=function(_0x1d0e90){var _0x4282d4=this;return new Promise(function(_0x99f0b8,_0x34fe04){return db[_0x5fd7('0x24')][_0x5fd7('0x25')]({'raw':_0x1d0e90['options']?_0x1d0e90[_0x5fd7('0x1b')][_0x5fd7('0x26')]===undefined?!![]:![]:!![],'where':_0x1d0e90[_0x5fd7('0x1b')]?_0x1d0e90['options']['where']||null:null,'attributes':_0x1d0e90[_0x5fd7('0x1b')]?_0x1d0e90[_0x5fd7('0x1b')][_0x5fd7('0x1d')]||null:null,'include':_0x1d0e90['options']?_0x1d0e90[_0x5fd7('0x1b')][_0x5fd7('0x1f')]?_['map'](_0x1d0e90[_0x5fd7('0x1b')][_0x5fd7('0x1f')],function(_0x29bae2){return{'model':db[_0x29bae2[_0x5fd7('0x21')]],'as':_0x29bae2['as'],'attributes':_0x29bae2[_0x5fd7('0x1d')],'include':_0x29bae2[_0x5fd7('0x1f')]?_[_0x5fd7('0x20')](_0x29bae2['include'],function(_0x260a1c){return{'model':db[_0x260a1c[_0x5fd7('0x21')]],'as':_0x260a1c['as'],'attributes':_0x260a1c[_0x5fd7('0x1d')],'include':_0x260a1c[_0x5fd7('0x1f')]?_[_0x5fd7('0x20')](_0x260a1c[_0x5fd7('0x1f')],function(_0x5aa414){return{'model':db[_0x5aa414['model']],'as':_0x5aa414['as'],'attributes':_0x5aa414['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x24857a){logger['info'](_0x5fd7('0x27'),_0x1d0e90);logger['debug'](_0x5fd7('0x27'),_0x1d0e90,JSON[_0x5fd7('0x23')](_0x24857a));_0x99f0b8(_0x24857a);})['catch'](function(_0x231f70){logger[_0x5fd7('0x13')]('ShowSmsQueue',_0x231f70[_0x5fd7('0x16')],_0x1d0e90);_0x34fe04(_0x4282d4[_0x5fd7('0x13')](0x1f4,_0x231f70['message']));});});};
\ No newline at end of file
index 820cb1c..a737941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3885=['./smsQueue.events','update','emit','register','length','smsQueue:'];(function(_0x4e3122,_0x28e97d){var _0x5be245=function(_0x44c928){while(--_0x44c928){_0x4e3122['push'](_0x4e3122['shift']());}};_0x5be245(++_0x28e97d);}(_0x3885,0x10e));var _0x5388=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x3885[_0x4a9fb1];return _0x348672;};'use strict';var SmsQueueEvents=require(_0x5388('0x0'));var events=['save','remove',_0x5388('0x1')];function createListener(_0x46698b,_0x4b4283){return function(_0x24ebde){_0x4b4283[_0x5388('0x2')](_0x46698b,_0x24ebde);};}function removeListener(_0x56677c,_0x2f9fef){return function(){SmsQueueEvents['removeListener'](_0x56677c,_0x2f9fef);};}exports[_0x5388('0x3')]=function(_0x10554a){for(var _0x4d74e4=0x0,_0xe1082e=events[_0x5388('0x4')];_0x4d74e4<_0xe1082e;_0x4d74e4++){var _0x69bd94=events[_0x4d74e4];var _0x389221=createListener(_0x5388('0x5')+_0x69bd94,_0x10554a);SmsQueueEvents['on'](_0x69bd94,_0x389221);}};
\ No newline at end of file
+var _0x4fb4=['smsQueue:','save','remove','update','removeListener','register','length'];(function(_0x591db7,_0x150445){var _0x4ad760=function(_0x5dd24e){while(--_0x5dd24e){_0x591db7['push'](_0x591db7['shift']());}};_0x4ad760(++_0x150445);}(_0x4fb4,0x190));var _0x44fb=function(_0x5a2801,_0x35263d){_0x5a2801=_0x5a2801-0x0;var _0x7ebb5b=_0x4fb4[_0x5a2801];return _0x7ebb5b;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x44fb('0x0'),_0x44fb('0x1'),_0x44fb('0x2')];function createListener(_0x29a2fe,_0x24e38d){return function(_0x42dbbb){_0x24e38d['emit'](_0x29a2fe,_0x42dbbb);};}function removeListener(_0xec6dce,_0x953327){return function(){SmsQueueEvents[_0x44fb('0x3')](_0xec6dce,_0x953327);};}exports[_0x44fb('0x4')]=function(_0x375d33){for(var _0x173e70=0x0,_0x464af5=events[_0x44fb('0x5')];_0x173e70<_0x464af5;_0x173e70++){var _0x59aa6d=events[_0x173e70];var _0x87f716=createListener(_0x44fb('0x6')+_0x59aa6d,_0x375d33);SmsQueueEvents['on'](_0x59aa6d,_0x87f716);}};
\ No newline at end of file
index fb5e138..77a9aa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e65=['create','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./smsQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x6dc1eb,_0x37dfbd){var _0x36e223=function(_0x407242){while(--_0x407242){_0x6dc1eb['push'](_0x6dc1eb['shift']());}};_0x36e223(++_0x37dfbd);}(_0x2e65,0x193));var _0x52e6=function(_0x47fd36,_0x41535d){_0x47fd36=_0x47fd36-0x0;var _0x21a0fc=_0x2e65[_0x47fd36];return _0x21a0fc;};'use strict';var multer=require(_0x52e6('0x0'));var util=require(_0x52e6('0x1'));var path=require(_0x52e6('0x2'));var timeout=require(_0x52e6('0x3'));var express=require(_0x52e6('0x4'));var router=express[_0x52e6('0x5')]();var auth=require(_0x52e6('0x6'));var interaction=require(_0x52e6('0x7'));var config=require('../../config/environment');var controller=require(_0x52e6('0x8'));router[_0x52e6('0x9')]('/',auth[_0x52e6('0xa')](),controller[_0x52e6('0xb')]);router[_0x52e6('0x9')](_0x52e6('0xc'),auth[_0x52e6('0xa')](),controller[_0x52e6('0xd')]);router[_0x52e6('0x9')](_0x52e6('0xe'),auth['isAuthenticated'](),controller[_0x52e6('0xf')]);router[_0x52e6('0x10')]('/',auth['isAuthenticated'](),controller[_0x52e6('0x11')]);router['put']('/:id',auth[_0x52e6('0xa')](),controller[_0x52e6('0x12')]);router[_0x52e6('0x13')](_0x52e6('0xe'),auth[_0x52e6('0xa')](),controller[_0x52e6('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x26d1=['connect-timeout','express','Router','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','exports','multer','path'];(function(_0x16b334,_0x58bd7f){var _0x54aff2=function(_0x366b0e){while(--_0x366b0e){_0x16b334['push'](_0x16b334['shift']());}};_0x54aff2(++_0x58bd7f);}(_0x26d1,0x8e));var _0x126d=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x26d1[_0x413feb];return _0x40ee88;};'use strict';var multer=require(_0x126d('0x0'));var util=require('util');var path=require(_0x126d('0x1'));var timeout=require(_0x126d('0x2'));var express=require(_0x126d('0x3'));var router=express[_0x126d('0x4')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x126d('0x5'));var controller=require('./smsQueueReport.controller');router[_0x126d('0x6')]('/',auth[_0x126d('0x7')](),controller[_0x126d('0x8')]);router[_0x126d('0x6')](_0x126d('0x9'),auth['isAuthenticated'](),controller[_0x126d('0xa')]);router[_0x126d('0x6')](_0x126d('0xb'),auth[_0x126d('0x7')](),controller[_0x126d('0xc')]);router[_0x126d('0xd')]('/',auth[_0x126d('0x7')](),controller['create']);router[_0x126d('0xe')](_0x126d('0xb'),auth[_0x126d('0x7')](),controller[_0x126d('0xf')]);router[_0x126d('0x10')]('/:id',auth[_0x126d('0x7')](),controller['destroy']);module[_0x126d('0x11')]=router;
\ No newline at end of file
index 946da46..8f3addd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfca=['DATE','sequelize','STRING'];(function(_0x1ff2ec,_0x386e86){var _0x405683=function(_0x22f921){while(--_0x22f921){_0x1ff2ec['push'](_0x1ff2ec['shift']());}};_0x405683(++_0x386e86);}(_0xbfca,0x67));var _0xabfc=function(_0x44499f,_0x589821){_0x44499f=_0x44499f-0x0;var _0x1c8d9f=_0xbfca[_0x44499f];return _0x1c8d9f;};'use strict';var moment=require('moment');var Sequelize=require(_0xabfc('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xabfc('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xabfc('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xabfc('0x2')]},'acceptAt':{'type':Sequelize[_0xabfc('0x2')]},'exitAt':{'type':Sequelize[_0xabfc('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xeaa6=['exports','STRING','DATE','sequelize'];(function(_0xdd827a,_0x482ad2){var _0x2f46f1=function(_0x221046){while(--_0x221046){_0xdd827a['push'](_0xdd827a['shift']());}};_0x2f46f1(++_0x482ad2);}(_0xeaa6,0x153));var _0x6eaa=function(_0x3076a7,_0x4fe956){_0x3076a7=_0x3076a7-0x0;var _0x1f8f1a=_0xeaa6[_0x3076a7];return _0x1f8f1a;};'use strict';var moment=require('moment');var Sequelize=require(_0x6eaa('0x0'));module[_0x6eaa('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x6eaa('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x6eaa('0x3')]},'acceptAt':{'type':Sequelize[_0x6eaa('0x3')]},'exitAt':{'type':Sequelize[_0x6eaa('0x3')]},'reason':{'type':Sequelize[_0x6eaa('0x2')]}};
\ No newline at end of file
index fd135e7..ac3c10e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e60=['show','params','length','includeAll','merge','options','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','set','Content-Range','apply','save','then','destroy','stack','name','index','SmsQueueReport','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','nolimit','limit','order','sort','where','pick','add','day','filter','type','key','VIRTUAL','field','include','findAll','rows'];(function(_0xc6879,_0x84a966){var _0x54f7a4=function(_0x4e63eb){while(--_0x4e63eb){_0xc6879['push'](_0xc6879['shift']());}};_0x54f7a4(++_0x84a966);}(_0x7e60,0xa5));var _0x07e6=function(_0x1601ad,_0x4e4a92){_0x1601ad=_0x1601ad-0x0;var _0x3973aa=_0x7e60[_0x1601ad];return _0x3973aa;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x07e6('0x0'));var rimraf=require(_0x07e6('0x1'));var zipdir=require(_0x07e6('0x2'));var jsonpatch=require(_0x07e6('0x3'));var rp=require(_0x07e6('0x4'));var moment=require('moment');var BPromise=require(_0x07e6('0x5'));var Mustache=require(_0x07e6('0x6'));var util=require(_0x07e6('0x7'));var path=require(_0x07e6('0x8'));var sox=require('sox');var csv=require(_0x07e6('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x07e6('0xa'));var squel=require(_0x07e6('0xb'));var crypto=require(_0x07e6('0xc'));var jsforce=require(_0x07e6('0xd'));var deskjs=require(_0x07e6('0xe'));var toCsv=require(_0x07e6('0x9'));var querystring=require(_0x07e6('0xf'));var Papa=require(_0x07e6('0x10'));var Redis=require(_0x07e6('0x11'));var qs=require(_0x07e6('0x12'));var logger=require(_0x07e6('0x13'))(_0x07e6('0x14'));var utils=require(_0x07e6('0x15'));var config=require(_0x07e6('0x16'));var db=require(_0x07e6('0x17'))['db'];function respondWithStatusCode(_0x4fc4e0,_0x3a5e24){_0x3a5e24=_0x3a5e24||0xcc;return function(_0x4041d8){if(_0x4041d8){return _0x4fc4e0[_0x07e6('0x18')](_0x3a5e24);}return _0x4fc4e0[_0x07e6('0x19')](_0x3a5e24)[_0x07e6('0x1a')]();};}function respondWithResult(_0x4b6b32,_0x3f9327){_0x3f9327=_0x3f9327||0xc8;return function(_0x34c643){if(_0x34c643){return _0x4b6b32[_0x07e6('0x19')](_0x3f9327)[_0x07e6('0x1b')](_0x34c643);}};}function respondWithFilteredResult(_0x332f98,_0x168d87){return function(_0x3239bd){if(_0x3239bd){var _0x2cb99e=_0x3239bd[_0x07e6('0x1c')],_0x53f97b=_0x168d87[_0x07e6('0x1d')],_0x41929e=_0x168d87['offset']+_0x168d87['limit'],_0x14e38b;if(_0x41929e>=_0x2cb99e){_0x41929e=_0x2cb99e;_0x14e38b=0xc8;}else{_0x14e38b=0xce;}_0x332f98[_0x07e6('0x19')](_0x14e38b);return _0x332f98[_0x07e6('0x1e')](_0x07e6('0x1f'),_0x53f97b+'-'+_0x41929e+'/'+_0x2cb99e)[_0x07e6('0x1b')](_0x3239bd);}return null;};}function patchUpdates(_0x3c9d45){return function(_0x151d8d){try{jsonpatch[_0x07e6('0x20')](_0x151d8d,_0x3c9d45,!![]);}catch(_0x3bbd1a){return BPromise['reject'](_0x3bbd1a);}return _0x151d8d[_0x07e6('0x21')]();};}function saveUpdates(_0xb9a42f,_0x359baa){return function(_0x185429){if(_0x185429){return _0x185429['update'](_0xb9a42f)[_0x07e6('0x22')](function(_0x543b70){return _0x543b70;});}return null;};}function removeEntity(_0x444014,_0x448950){return function(_0x563bef){if(_0x563bef){return _0x563bef[_0x07e6('0x23')]()[_0x07e6('0x22')](function(){_0x444014['status'](0xcc)[_0x07e6('0x1a')]();});}};}function handleEntityNotFound(_0x473090,_0x11f3f1){return function(_0x50af01){if(!_0x50af01){_0x473090['sendStatus'](0x194);}return _0x50af01;};}function handleError(_0x71280d,_0x24ab9c){_0x24ab9c=_0x24ab9c||0x1f4;return function(_0x3eae2c){logger['error'](_0x3eae2c[_0x07e6('0x24')]);if(_0x3eae2c[_0x07e6('0x25')]){delete _0x3eae2c[_0x07e6('0x25')];}_0x71280d[_0x07e6('0x19')](_0x24ab9c)['send'](_0x3eae2c);};}exports[_0x07e6('0x26')]=function(_0x1b128f,_0x2f6a0b){var _0x2e9988={},_0x139c8b={},_0x2b6f4b={'count':0x0,'rows':[]};var _0x206594=db[_0x07e6('0x27')][_0x07e6('0x28')];_0x139c8b[_0x07e6('0x29')]=_[_0x07e6('0x2a')](_0x206594);var _0x1160ff={'dateStart':_0x1b128f[_0x07e6('0x2b')][_0x07e6('0x2c')],'dateEnd':_0x1b128f[_0x07e6('0x2b')]['dateEnd']};delete _0x1b128f[_0x07e6('0x2b')][_0x07e6('0x2c')];delete _0x1b128f[_0x07e6('0x2b')][_0x07e6('0x2d')];_0x139c8b[_0x07e6('0x2b')]=_[_0x07e6('0x2a')](_0x1b128f[_0x07e6('0x2b')]);_0x139c8b[_0x07e6('0x2e')]=_[_0x07e6('0x2f')](_0x139c8b[_0x07e6('0x29')],_0x139c8b[_0x07e6('0x2b')]);_0x2e9988['attributes']=_[_0x07e6('0x2f')](_0x139c8b['model'],qs[_0x07e6('0x30')](_0x1b128f['query'][_0x07e6('0x30')]));_0x2e9988[_0x07e6('0x31')]=_0x2e9988[_0x07e6('0x31')]['length']?_0x2e9988[_0x07e6('0x31')]:_0x139c8b[_0x07e6('0x29')];if(!_0x1b128f['query']['hasOwnProperty'](_0x07e6('0x32'))){_0x2e9988[_0x07e6('0x33')]=qs[_0x07e6('0x33')](_0x1b128f[_0x07e6('0x2b')]['limit']);_0x2e9988[_0x07e6('0x1d')]=qs[_0x07e6('0x1d')](_0x1b128f['query']['offset']);}_0x2e9988[_0x07e6('0x34')]=qs[_0x07e6('0x35')](_0x1b128f['query'][_0x07e6('0x35')]);_0x2e9988[_0x07e6('0x36')]=qs[_0x07e6('0x2e')](_[_0x07e6('0x37')](_0x1b128f[_0x07e6('0x2b')],_0x139c8b[_0x07e6('0x2e')]));if(_0x1160ff[_0x07e6('0x2c')]){if(_0x1160ff[_0x07e6('0x2d')]){_0x1160ff[_0x07e6('0x2d')]=moment(_0x1160ff[_0x07e6('0x2d')])[_0x07e6('0x38')](0x1,_0x07e6('0x39'));}else{_0x1160ff['dateEnd']=moment(_0x1160ff['dateStart'])[_0x07e6('0x38')](0x1,_0x07e6('0x39'));}_['merge'](_0x2e9988[_0x07e6('0x36')],{'createdAt':{'$gte':_0x1160ff['dateStart'],'$lte':_0x1160ff[_0x07e6('0x2d')]}});}if(_0x1b128f[_0x07e6('0x2b')][_0x07e6('0x3a')]){_0x2e9988[_0x07e6('0x36')]=_['merge'](_0x2e9988[_0x07e6('0x36')],{'$or':_['map'](_0x206594,function(_0x242c30){if(_0x242c30[_0x07e6('0x3b')][_0x07e6('0x3c')]!==_0x07e6('0x3d')){var _0x1669f2={};_0x1669f2[_0x242c30[_0x07e6('0x3e')]]={'$like':'%'+_0x1b128f[_0x07e6('0x2b')]['filter']+'%'};return _0x1669f2;}})});}_0x2e9988=_['merge']({},_0x2e9988,_0x1b128f['options']);var _0x356c1b={'where':_0x2e9988[_0x07e6('0x36')]};return db['SmsQueueReport'][_0x07e6('0x1c')](_0x356c1b)[_0x07e6('0x22')](function(_0x4ed161){_0x2b6f4b[_0x07e6('0x1c')]=_0x4ed161;if(_0x1b128f[_0x07e6('0x2b')]['includeAll']){_0x2e9988[_0x07e6('0x3f')]=[{'all':!![]}];}return db[_0x07e6('0x27')][_0x07e6('0x40')](_0x2e9988);})['then'](function(_0x31447d){_0x2b6f4b[_0x07e6('0x41')]=_0x31447d;return _0x2b6f4b;})[_0x07e6('0x22')](respondWithFilteredResult(_0x2f6a0b,_0x2e9988))['catch'](handleError(_0x2f6a0b,null));};exports[_0x07e6('0x42')]=function(_0x438072,_0x55404f){var _0x5da01f={'raw':!![],'where':{'id':_0x438072[_0x07e6('0x43')]['id']}},_0x5516a3={};_0x5516a3[_0x07e6('0x29')]=_[_0x07e6('0x2a')](db[_0x07e6('0x27')][_0x07e6('0x28')]);_0x5516a3[_0x07e6('0x2b')]=_[_0x07e6('0x2a')](_0x438072['query']);_0x5516a3['filters']=_['intersection'](_0x5516a3[_0x07e6('0x29')],_0x5516a3['query']);_0x5da01f['attributes']=_['intersection'](_0x5516a3[_0x07e6('0x29')],qs[_0x07e6('0x30')](_0x438072[_0x07e6('0x2b')][_0x07e6('0x30')]));_0x5da01f[_0x07e6('0x31')]=_0x5da01f[_0x07e6('0x31')][_0x07e6('0x44')]?_0x5da01f[_0x07e6('0x31')]:_0x5516a3[_0x07e6('0x29')];if(_0x438072[_0x07e6('0x2b')][_0x07e6('0x45')]){_0x5da01f['include']=[{'all':!![]}];}_0x5da01f=_[_0x07e6('0x46')]({},_0x5da01f,_0x438072[_0x07e6('0x47')]);return db['SmsQueueReport'][_0x07e6('0x48')](_0x5da01f)[_0x07e6('0x22')](handleEntityNotFound(_0x55404f,null))[_0x07e6('0x22')](respondWithResult(_0x55404f,null))[_0x07e6('0x49')](handleError(_0x55404f,null));};exports[_0x07e6('0x4a')]=function(_0x43ec10,_0x12fce5){return db[_0x07e6('0x27')][_0x07e6('0x4a')](_0x43ec10[_0x07e6('0x4b')],{})['then'](respondWithResult(_0x12fce5,0xc9))[_0x07e6('0x49')](handleError(_0x12fce5,null));};exports['update']=function(_0x2ece73,_0x1ec395){if(_0x2ece73[_0x07e6('0x4b')]['id']){delete _0x2ece73[_0x07e6('0x4b')]['id'];}return db['SmsQueueReport'][_0x07e6('0x48')]({'where':{'id':_0x2ece73[_0x07e6('0x43')]['id']}})['then'](handleEntityNotFound(_0x1ec395,null))[_0x07e6('0x22')](saveUpdates(_0x2ece73[_0x07e6('0x4b')],null))[_0x07e6('0x22')](respondWithResult(_0x1ec395,null))[_0x07e6('0x49')](handleError(_0x1ec395,null));};exports[_0x07e6('0x23')]=function(_0x49905c,_0x19f67d){return db[_0x07e6('0x27')][_0x07e6('0x48')]({'where':{'id':_0x49905c[_0x07e6('0x43')]['id']}})[_0x07e6('0x22')](handleEntityNotFound(_0x19f67d,null))[_0x07e6('0x22')](removeEntity(_0x19f67d,null))[_0x07e6('0x49')](handleError(_0x19f67d,null));};exports[_0x07e6('0x4c')]=function(_0x5a6689,_0x3d603a){return db[_0x07e6('0x27')]['describe']()[_0x07e6('0x22')](respondWithResult(_0x3d603a,null))['catch'](handleError(_0x3d603a,null));};
\ No newline at end of file
+var _0x7017=['jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','count','offset','limit','set','Content-Range','reject','save','then','end','sendStatus','name','send','index','SmsQueueReport','model','query','dateEnd','dateStart','filters','attributes','fields','nolimit','order','sort','where','pick','add','day','merge','filter','map','type','key','VIRTUAL','field','options','include','findAll','rows','catch','show','params','keys','rawAttributes','intersection','length','includeAll','find','create','body','update','destroy','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','ejs','squel','crypto'];(function(_0x2eccc6,_0x448168){var _0x5d12d4=function(_0x4ba26c){while(--_0x4ba26c){_0x2eccc6['push'](_0x2eccc6['shift']());}};_0x5d12d4(++_0x448168);}(_0x7017,0x8d));var _0x7701=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0x7017[_0x25e7cb];return _0x375d92;};'use strict';var pdf=require(_0x7701('0x0'));var emlformat=require(_0x7701('0x1'));var rimraf=require(_0x7701('0x2'));var zipdir=require(_0x7701('0x3'));var jsonpatch=require(_0x7701('0x4'));var rp=require('request-promise');var moment=require(_0x7701('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7701('0x6'));var util=require('util');var path=require('path');var sox=require(_0x7701('0x7'));var csv=require('to-csv');var ejs=require(_0x7701('0x8'));var fs=require('fs');var _=require('lodash');var squel=require(_0x7701('0x9'));var crypto=require(_0x7701('0xa'));var jsforce=require(_0x7701('0xb'));var deskjs=require(_0x7701('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7701('0xd'));var Papa=require('papaparse');var Redis=require(_0x7701('0xe'));var qs=require(_0x7701('0xf'));var logger=require(_0x7701('0x10'))(_0x7701('0x11'));var utils=require(_0x7701('0x12'));var config=require(_0x7701('0x13'));var db=require(_0x7701('0x14'))['db'];function respondWithStatusCode(_0x3e7c70,_0x115d1a){_0x115d1a=_0x115d1a||0xcc;return function(_0x2f8039){if(_0x2f8039){return _0x3e7c70['sendStatus'](_0x115d1a);}return _0x3e7c70[_0x7701('0x15')](_0x115d1a)['end']();};}function respondWithResult(_0xaed348,_0x1b2186){_0x1b2186=_0x1b2186||0xc8;return function(_0x229f89){if(_0x229f89){return _0xaed348[_0x7701('0x15')](_0x1b2186)[_0x7701('0x16')](_0x229f89);}};}function respondWithFilteredResult(_0x451a15,_0x5ba0e6){return function(_0x175901){if(_0x175901){var _0x15e238=_0x175901[_0x7701('0x17')],_0x3ac53c=_0x5ba0e6[_0x7701('0x18')],_0x4e71e1=_0x5ba0e6[_0x7701('0x18')]+_0x5ba0e6[_0x7701('0x19')],_0x379a7b;if(_0x4e71e1>=_0x15e238){_0x4e71e1=_0x15e238;_0x379a7b=0xc8;}else{_0x379a7b=0xce;}_0x451a15['status'](_0x379a7b);return _0x451a15[_0x7701('0x1a')](_0x7701('0x1b'),_0x3ac53c+'-'+_0x4e71e1+'/'+_0x15e238)[_0x7701('0x16')](_0x175901);}return null;};}function patchUpdates(_0x29627e){return function(_0x16507d){try{jsonpatch['apply'](_0x16507d,_0x29627e,!![]);}catch(_0x23cbd5){return BPromise[_0x7701('0x1c')](_0x23cbd5);}return _0x16507d[_0x7701('0x1d')]();};}function saveUpdates(_0x5b1f8d,_0x50249f){return function(_0x38ff68){if(_0x38ff68){return _0x38ff68['update'](_0x5b1f8d)[_0x7701('0x1e')](function(_0x55cd18){return _0x55cd18;});}return null;};}function removeEntity(_0x2d1c20,_0x2c2464){return function(_0x329585){if(_0x329585){return _0x329585['destroy']()[_0x7701('0x1e')](function(){_0x2d1c20[_0x7701('0x15')](0xcc)[_0x7701('0x1f')]();});}};}function handleEntityNotFound(_0x7e9e3e,_0x3150d4){return function(_0x26da69){if(!_0x26da69){_0x7e9e3e[_0x7701('0x20')](0x194);}return _0x26da69;};}function handleError(_0x4c2916,_0x4c5c68){_0x4c5c68=_0x4c5c68||0x1f4;return function(_0x29d119){logger['error'](_0x29d119['stack']);if(_0x29d119[_0x7701('0x21')]){delete _0x29d119[_0x7701('0x21')];}_0x4c2916[_0x7701('0x15')](_0x4c5c68)[_0x7701('0x22')](_0x29d119);};}exports[_0x7701('0x23')]=function(_0x7a0283,_0x5c90d7){var _0x34dcb7={},_0x188871={},_0x29f164={'count':0x0,'rows':[]};var _0x5572dd=db[_0x7701('0x24')]['rawAttributes'];_0x188871[_0x7701('0x25')]=_['keys'](_0x5572dd);var _0x377ad0={'dateStart':_0x7a0283['query']['dateStart'],'dateEnd':_0x7a0283[_0x7701('0x26')][_0x7701('0x27')]};delete _0x7a0283['query'][_0x7701('0x28')];delete _0x7a0283[_0x7701('0x26')]['dateEnd'];_0x188871[_0x7701('0x26')]=_['keys'](_0x7a0283[_0x7701('0x26')]);_0x188871[_0x7701('0x29')]=_['intersection'](_0x188871[_0x7701('0x25')],_0x188871[_0x7701('0x26')]);_0x34dcb7[_0x7701('0x2a')]=_['intersection'](_0x188871[_0x7701('0x25')],qs[_0x7701('0x2b')](_0x7a0283['query']['fields']));_0x34dcb7[_0x7701('0x2a')]=_0x34dcb7[_0x7701('0x2a')]['length']?_0x34dcb7[_0x7701('0x2a')]:_0x188871[_0x7701('0x25')];if(!_0x7a0283[_0x7701('0x26')]['hasOwnProperty'](_0x7701('0x2c'))){_0x34dcb7[_0x7701('0x19')]=qs[_0x7701('0x19')](_0x7a0283['query'][_0x7701('0x19')]);_0x34dcb7[_0x7701('0x18')]=qs[_0x7701('0x18')](_0x7a0283[_0x7701('0x26')][_0x7701('0x18')]);}_0x34dcb7[_0x7701('0x2d')]=qs[_0x7701('0x2e')](_0x7a0283[_0x7701('0x26')]['sort']);_0x34dcb7[_0x7701('0x2f')]=qs[_0x7701('0x29')](_[_0x7701('0x30')](_0x7a0283['query'],_0x188871[_0x7701('0x29')]));if(_0x377ad0[_0x7701('0x28')]){if(_0x377ad0['dateEnd']){_0x377ad0['dateEnd']=moment(_0x377ad0[_0x7701('0x27')])[_0x7701('0x31')](0x1,_0x7701('0x32'));}else{_0x377ad0['dateEnd']=moment(_0x377ad0[_0x7701('0x28')])[_0x7701('0x31')](0x1,_0x7701('0x32'));}_[_0x7701('0x33')](_0x34dcb7[_0x7701('0x2f')],{'createdAt':{'$gte':_0x377ad0[_0x7701('0x28')],'$lte':_0x377ad0[_0x7701('0x27')]}});}if(_0x7a0283[_0x7701('0x26')][_0x7701('0x34')]){_0x34dcb7[_0x7701('0x2f')]=_[_0x7701('0x33')](_0x34dcb7[_0x7701('0x2f')],{'$or':_[_0x7701('0x35')](_0x5572dd,function(_0x2bd568){if(_0x2bd568[_0x7701('0x36')][_0x7701('0x37')]!==_0x7701('0x38')){var _0x3b8d8a={};_0x3b8d8a[_0x2bd568[_0x7701('0x39')]]={'$like':'%'+_0x7a0283[_0x7701('0x26')][_0x7701('0x34')]+'%'};return _0x3b8d8a;}})});}_0x34dcb7=_[_0x7701('0x33')]({},_0x34dcb7,_0x7a0283[_0x7701('0x3a')]);var _0x2ade07={'where':_0x34dcb7['where']};return db['SmsQueueReport']['count'](_0x2ade07)[_0x7701('0x1e')](function(_0x33e9fd){_0x29f164[_0x7701('0x17')]=_0x33e9fd;if(_0x7a0283[_0x7701('0x26')]['includeAll']){_0x34dcb7[_0x7701('0x3b')]=[{'all':!![]}];}return db[_0x7701('0x24')][_0x7701('0x3c')](_0x34dcb7);})[_0x7701('0x1e')](function(_0x2063aa){_0x29f164[_0x7701('0x3d')]=_0x2063aa;return _0x29f164;})[_0x7701('0x1e')](respondWithFilteredResult(_0x5c90d7,_0x34dcb7))[_0x7701('0x3e')](handleError(_0x5c90d7,null));};exports[_0x7701('0x3f')]=function(_0x194ccc,_0x743f84){var _0x249198={'raw':!![],'where':{'id':_0x194ccc[_0x7701('0x40')]['id']}},_0x4ac186={};_0x4ac186[_0x7701('0x25')]=_[_0x7701('0x41')](db[_0x7701('0x24')][_0x7701('0x42')]);_0x4ac186[_0x7701('0x26')]=_['keys'](_0x194ccc['query']);_0x4ac186['filters']=_['intersection'](_0x4ac186[_0x7701('0x25')],_0x4ac186[_0x7701('0x26')]);_0x249198[_0x7701('0x2a')]=_[_0x7701('0x43')](_0x4ac186[_0x7701('0x25')],qs[_0x7701('0x2b')](_0x194ccc[_0x7701('0x26')]['fields']));_0x249198[_0x7701('0x2a')]=_0x249198[_0x7701('0x2a')][_0x7701('0x44')]?_0x249198[_0x7701('0x2a')]:_0x4ac186[_0x7701('0x25')];if(_0x194ccc[_0x7701('0x26')][_0x7701('0x45')]){_0x249198[_0x7701('0x3b')]=[{'all':!![]}];}_0x249198=_[_0x7701('0x33')]({},_0x249198,_0x194ccc[_0x7701('0x3a')]);return db[_0x7701('0x24')][_0x7701('0x46')](_0x249198)[_0x7701('0x1e')](handleEntityNotFound(_0x743f84,null))[_0x7701('0x1e')](respondWithResult(_0x743f84,null))[_0x7701('0x3e')](handleError(_0x743f84,null));};exports[_0x7701('0x47')]=function(_0x2c7f6b,_0xfc07b2){return db[_0x7701('0x24')][_0x7701('0x47')](_0x2c7f6b[_0x7701('0x48')],{})[_0x7701('0x1e')](respondWithResult(_0xfc07b2,0xc9))['catch'](handleError(_0xfc07b2,null));};exports[_0x7701('0x49')]=function(_0xc755b2,_0x1b1bc3){if(_0xc755b2[_0x7701('0x48')]['id']){delete _0xc755b2['body']['id'];}return db[_0x7701('0x24')][_0x7701('0x46')]({'where':{'id':_0xc755b2[_0x7701('0x40')]['id']}})[_0x7701('0x1e')](handleEntityNotFound(_0x1b1bc3,null))[_0x7701('0x1e')](saveUpdates(_0xc755b2[_0x7701('0x48')],null))[_0x7701('0x1e')](respondWithResult(_0x1b1bc3,null))[_0x7701('0x3e')](handleError(_0x1b1bc3,null));};exports[_0x7701('0x4a')]=function(_0xd66d05,_0x4fe3ee){return db[_0x7701('0x24')][_0x7701('0x46')]({'where':{'id':_0xd66d05['params']['id']}})[_0x7701('0x1e')](handleEntityNotFound(_0x4fe3ee,null))[_0x7701('0x1e')](removeEntity(_0x4fe3ee,null))[_0x7701('0x3e')](handleError(_0x4fe3ee,null));};exports[_0x7701('0x4b')]=function(_0x4664c9,_0x3c67da){return db['SmsQueueReport'][_0x7701('0x4b')]()[_0x7701('0x1e')](respondWithResult(_0x3c67da,null))['catch'](handleError(_0x3c67da,null));};
\ No newline at end of file
index d4c5a4b..f3f2373 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49d3=['moment','bluebird','request-promise','./smsQueueReport.attributes','define','report_sms_queue','util','../../config/logger','api'];(function(_0x389388,_0x2f7044){var _0x42fe24=function(_0x461772){while(--_0x461772){_0x389388['push'](_0x389388['shift']());}};_0x42fe24(++_0x2f7044);}(_0x49d3,0x141));var _0x349d=function(_0x139183,_0x2fe834){_0x139183=_0x139183-0x0;var _0x6f3138=_0x49d3[_0x139183];return _0x6f3138;};'use strict';var _=require('lodash');var util=require(_0x349d('0x0'));var logger=require(_0x349d('0x1'))(_0x349d('0x2'));var moment=require(_0x349d('0x3'));var BPromise=require(_0x349d('0x4'));var rp=require(_0x349d('0x5'));var attributes=require(_0x349d('0x6'));module['exports']=function(_0x4678f6,_0x4d0b82){return _0x4678f6[_0x349d('0x7')]('SmsQueueReport',attributes,{'tableName':_0x349d('0x8'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x787c=['lodash','util','api','moment','bluebird','./smsQueueReport.attributes','exports','define','SmsQueueReport','report_sms_queue'];(function(_0x1fa64d,_0x143a50){var _0x35c45a=function(_0x359705){while(--_0x359705){_0x1fa64d['push'](_0x1fa64d['shift']());}};_0x35c45a(++_0x143a50);}(_0x787c,0xbe));var _0xc787=function(_0x17f1ef,_0xe6e333){_0x17f1ef=_0x17f1ef-0x0;var _0x1ddcf7=_0x787c[_0x17f1ef];return _0x1ddcf7;};'use strict';var _=require(_0xc787('0x0'));var util=require(_0xc787('0x1'));var logger=require('../../config/logger')(_0xc787('0x2'));var moment=require(_0xc787('0x3'));var BPromise=require(_0xc787('0x4'));var rp=require('request-promise');var attributes=require(_0xc787('0x5'));module[_0xc787('0x6')]=function(_0x32626d,_0xad016e){return _0x32626d[_0xc787('0x7')](_0xc787('0x8'),attributes,{'tableName':_0xc787('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 30db4c1..c753ebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7f0=['update','raw','where','attributes','limit','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request','then','info','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','SmsQueueReport,\x20%s,\x20%s','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','options','stringify','UpdateSmsQueueReport'];(function(_0xe06f03,_0x56f9a8){var _0x2b1ee5=function(_0x3af3eb){while(--_0x3af3eb){_0xe06f03['push'](_0xe06f03['shift']());}};_0x2b1ee5(++_0x56f9a8);}(_0xd7f0,0x179));var _0x0d7f=function(_0x1b160c,_0x3ba63e){_0x1b160c=_0x1b160c-0x0;var _0x6a7d24=_0xd7f0[_0x1b160c];return _0x6a7d24;};'use strict';var _=require('lodash');var util=require(_0x0d7f('0x0'));var moment=require('moment');var BPromise=require(_0x0d7f('0x1'));var rs=require(_0x0d7f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0d7f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0d7f('0x4'))(_0x0d7f('0x5'));var config=require('../../config/environment');var jayson=require(_0x0d7f('0x6'));var client=jayson['client'][_0x0d7f('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3e0b84,_0x57ca7f,_0x1561c9){return new BPromise(function(_0x32d7c4,_0x483f70){return client[_0x0d7f('0x8')](_0x3e0b84,_0x1561c9)[_0x0d7f('0x9')](function(_0x1f399f){logger[_0x0d7f('0xa')]('SmsQueueReport,\x20%s,\x20%s',_0x57ca7f,'request\x20sent');logger[_0x0d7f('0xb')](_0x0d7f('0xc'),_0x57ca7f,_0x0d7f('0xd'),JSON['stringify'](_0x1f399f));if(_0x1f399f[_0x0d7f('0xe')]){if(_0x1f399f[_0x0d7f('0xe')][_0x0d7f('0xf')]===0x1f4){logger[_0x0d7f('0xe')](_0x0d7f('0x10'),_0x57ca7f,_0x1f399f[_0x0d7f('0xe')]['message']);return _0x483f70(_0x1f399f['error'][_0x0d7f('0x11')]);}logger[_0x0d7f('0xe')](_0x0d7f('0x10'),_0x57ca7f,_0x1f399f['error'][_0x0d7f('0x11')]);return _0x32d7c4(_0x1f399f[_0x0d7f('0xe')][_0x0d7f('0x11')]);}else{logger[_0x0d7f('0xa')]('SmsQueueReport,\x20%s,\x20%s',_0x57ca7f,_0x0d7f('0xd'));_0x32d7c4(_0x1f399f[_0x0d7f('0x12')][_0x0d7f('0x11')]);}})[_0x0d7f('0x13')](function(_0x532eaf){logger[_0x0d7f('0xe')](_0x0d7f('0x10'),_0x57ca7f,_0x532eaf);_0x483f70(_0x532eaf);});});}exports[_0x0d7f('0x14')]=function(_0x1d0052){var _0x54fe63=this;return new Promise(function(_0x51bb6f,_0x250f00){return db[_0x0d7f('0x15')][_0x0d7f('0x16')](_0x1d0052['body'],{'raw':_0x1d0052[_0x0d7f('0x17')]?_0x1d0052['options']['raw']===undefined?!![]:![]:!![]})[_0x0d7f('0x9')](function(_0x405476){logger['info'](_0x0d7f('0x14'),_0x1d0052);logger[_0x0d7f('0xb')](_0x0d7f('0x14'),_0x1d0052,JSON[_0x0d7f('0x18')](_0x405476));_0x51bb6f(_0x405476);})[_0x0d7f('0x13')](function(_0x5751cb){logger['error'](_0x0d7f('0x14'),_0x5751cb['message'],_0x1d0052);_0x250f00(_0x54fe63[_0x0d7f('0xe')](0x1f4,_0x5751cb[_0x0d7f('0x11')]));});});};exports[_0x0d7f('0x19')]=function(_0x794e2f){var _0x1c3f35=this;return new Promise(function(_0x53d2d3,_0x55881c){return db[_0x0d7f('0x15')][_0x0d7f('0x1a')](_0x794e2f['body'],{'raw':_0x794e2f[_0x0d7f('0x17')]?_0x794e2f[_0x0d7f('0x17')][_0x0d7f('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x794e2f[_0x0d7f('0x17')]?_0x794e2f[_0x0d7f('0x17')][_0x0d7f('0x1c')]||null:null,'attributes':_0x794e2f[_0x0d7f('0x17')]?_0x794e2f[_0x0d7f('0x17')][_0x0d7f('0x1d')]||null:null,'limit':_0x794e2f[_0x0d7f('0x17')]?_0x794e2f[_0x0d7f('0x17')][_0x0d7f('0x1e')]||null:null})['then'](function(_0x5ef7f5){logger[_0x0d7f('0xa')](_0x0d7f('0x19'),_0x794e2f);logger['debug']('UpdateSmsQueueReport',_0x794e2f,JSON[_0x0d7f('0x18')](_0x5ef7f5));_0x53d2d3(_0x5ef7f5);})[_0x0d7f('0x13')](function(_0x39e769){logger[_0x0d7f('0xe')](_0x0d7f('0x19'),_0x39e769['message'],_0x794e2f);_0x55881c(_0x1c3f35[_0x0d7f('0xe')](0x1f4,_0x39e769['message']));});});};
\ No newline at end of file
+var _0xdf35=['attributes','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','UpdateSmsQueueReport','raw','where'];(function(_0x544f46,_0x4ffa1a){var _0xfd7bb1=function(_0x1cb0a4){while(--_0x1cb0a4){_0x544f46['push'](_0x544f46['shift']());}};_0xfd7bb1(++_0x4ffa1a);}(_0xdf35,0x1c9));var _0x5df3=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xdf35[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x5df3('0x0'));var util=require(_0x5df3('0x1'));var moment=require(_0x5df3('0x2'));var BPromise=require('bluebird');var rs=require(_0x5df3('0x3'));var fs=require('fs');var Redis=require(_0x5df3('0x4'));var db=require(_0x5df3('0x5'))['db'];var utils=require(_0x5df3('0x6'));var logger=require(_0x5df3('0x7'))(_0x5df3('0x8'));var config=require('../../config/environment');var jayson=require(_0x5df3('0x9'));var client=jayson[_0x5df3('0xa')][_0x5df3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x44567d,_0x1393dc,_0x39f112){return new BPromise(function(_0x3cb6a1,_0x3a3f9c){return client[_0x5df3('0xc')](_0x44567d,_0x39f112)[_0x5df3('0xd')](function(_0xe8b735){logger[_0x5df3('0xe')](_0x5df3('0xf'),_0x1393dc,'request\x20sent');logger[_0x5df3('0x10')](_0x5df3('0x11'),_0x1393dc,'request\x20sent',JSON[_0x5df3('0x12')](_0xe8b735));if(_0xe8b735['error']){if(_0xe8b735['error'][_0x5df3('0x13')]===0x1f4){logger[_0x5df3('0x14')](_0x5df3('0xf'),_0x1393dc,_0xe8b735[_0x5df3('0x14')][_0x5df3('0x15')]);return _0x3a3f9c(_0xe8b735[_0x5df3('0x14')]['message']);}logger[_0x5df3('0x14')](_0x5df3('0xf'),_0x1393dc,_0xe8b735[_0x5df3('0x14')][_0x5df3('0x15')]);return _0x3cb6a1(_0xe8b735['error'][_0x5df3('0x15')]);}else{logger[_0x5df3('0xe')](_0x5df3('0xf'),_0x1393dc,_0x5df3('0x16'));_0x3cb6a1(_0xe8b735[_0x5df3('0x17')][_0x5df3('0x15')]);}})[_0x5df3('0x18')](function(_0x560bec){logger['error'](_0x5df3('0xf'),_0x1393dc,_0x560bec);_0x3a3f9c(_0x560bec);});});}exports[_0x5df3('0x19')]=function(_0x12ba53){var _0x1972a2=this;return new Promise(function(_0x4d626a,_0x5b30ff){return db[_0x5df3('0x1a')][_0x5df3('0x1b')](_0x12ba53[_0x5df3('0x1c')],{'raw':_0x12ba53[_0x5df3('0x1d')]?_0x12ba53[_0x5df3('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x5df3('0xd')](function(_0x159335){logger['info']('CreateSmsQueueReport',_0x12ba53);logger[_0x5df3('0x10')](_0x5df3('0x19'),_0x12ba53,JSON[_0x5df3('0x12')](_0x159335));_0x4d626a(_0x159335);})[_0x5df3('0x18')](function(_0x3d753c){logger['error'](_0x5df3('0x19'),_0x3d753c[_0x5df3('0x15')],_0x12ba53);_0x5b30ff(_0x1972a2['error'](0x1f4,_0x3d753c[_0x5df3('0x15')]));});});};exports[_0x5df3('0x1e')]=function(_0x270c52){var _0x5a82db=this;return new Promise(function(_0x12dd36,_0x2086e2){return db['SmsQueueReport']['update'](_0x270c52[_0x5df3('0x1c')],{'raw':_0x270c52[_0x5df3('0x1d')]?_0x270c52['options'][_0x5df3('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x270c52[_0x5df3('0x1d')]?_0x270c52[_0x5df3('0x1d')][_0x5df3('0x20')]||null:null,'attributes':_0x270c52['options']?_0x270c52[_0x5df3('0x1d')][_0x5df3('0x21')]||null:null,'limit':_0x270c52[_0x5df3('0x1d')]?_0x270c52['options'][_0x5df3('0x22')]||null:null})[_0x5df3('0xd')](function(_0x574582){logger[_0x5df3('0xe')](_0x5df3('0x1e'),_0x270c52);logger[_0x5df3('0x10')](_0x5df3('0x1e'),_0x270c52,JSON['stringify'](_0x574582));_0x12dd36(_0x574582);})[_0x5df3('0x18')](function(_0x9e27d4){logger[_0x5df3('0x14')](_0x5df3('0x1e'),_0x9e27d4['message'],_0x270c52);_0x2086e2(_0x5a82db['error'](0x1f4,_0x9e27d4[_0x5df3('0x15')]));});});};
\ No newline at end of file
index c4c91a9..412fb75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a5f=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','destroy','exports','multer'];(function(_0x5164b0,_0x55c095){var _0x4a17d5=function(_0x322f5c){while(--_0x322f5c){_0x5164b0['push'](_0x5164b0['shift']());}};_0x4a17d5(++_0x55c095);}(_0x7a5f,0x17b));var _0xf7a5=function(_0x595bd1,_0xb1e7a){_0x595bd1=_0x595bd1-0x0;var _0xd0344f=_0x7a5f[_0x595bd1];return _0xd0344f;};'use strict';var multer=require(_0xf7a5('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf7a5('0x1'));var router=express[_0xf7a5('0x2')]();var auth=require(_0xf7a5('0x3'));var interaction=require(_0xf7a5('0x4'));var config=require(_0xf7a5('0x5'));var controller=require(_0xf7a5('0x6'));router[_0xf7a5('0x7')]('/',auth[_0xf7a5('0x8')](),controller['index']);router[_0xf7a5('0x7')](_0xf7a5('0x9'),auth[_0xf7a5('0x8')](),controller[_0xf7a5('0xa')]);router['get'](_0xf7a5('0xb'),auth['isAuthenticated'](),controller[_0xf7a5('0xc')]);router[_0xf7a5('0xd')]('/',auth[_0xf7a5('0x8')](),controller[_0xf7a5('0xe')]);router[_0xf7a5('0xf')](_0xf7a5('0xb'),auth['isAuthenticated'](),controller[_0xf7a5('0x10')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xf7a5('0x11')]);module[_0xf7a5('0x12')]=router;
\ No newline at end of file
+var _0x6d6f=['show','post','put','update','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','describe','/:id'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6d6f,0x16f));var _0xf6d6=function(_0x402c8f,_0x30cc1d){_0x402c8f=_0x402c8f-0x0;var _0x11e809=_0x6d6f[_0x402c8f];return _0x11e809;};'use strict';var multer=require(_0xf6d6('0x0'));var util=require('util');var path=require(_0xf6d6('0x1'));var timeout=require(_0xf6d6('0x2'));var express=require(_0xf6d6('0x3'));var router=express[_0xf6d6('0x4')]();var auth=require(_0xf6d6('0x5'));var interaction=require(_0xf6d6('0x6'));var config=require(_0xf6d6('0x7'));var controller=require(_0xf6d6('0x8'));router[_0xf6d6('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf6d6('0x9')]('/describe',auth[_0xf6d6('0xa')](),controller[_0xf6d6('0xb')]);router[_0xf6d6('0x9')](_0xf6d6('0xc'),auth[_0xf6d6('0xa')](),controller[_0xf6d6('0xd')]);router[_0xf6d6('0xe')]('/',auth[_0xf6d6('0xa')](),controller['create']);router[_0xf6d6('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xf6d6('0x10')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xf6d6('0x11')]);module[_0xf6d6('0x12')]=router;
\ No newline at end of file
index 7fcd055..3f79fde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea5c=['moment','sequelize','exports','ENUM','account','agent','queue','DATE','NOW'];(function(_0x3eb671,_0x1f2c1d){var _0x41eac5=function(_0x39eb80){while(--_0x39eb80){_0x3eb671['push'](_0x3eb671['shift']());}};_0x41eac5(++_0x1f2c1d);}(_0xea5c,0x117));var _0xcea5=function(_0x3bf528,_0x51a08f){_0x3bf528=_0x3bf528-0x0;var _0x2b56c4=_0xea5c[_0x3bf528];return _0x2b56c4;};'use strict';var moment=require(_0xcea5('0x0'));var Sequelize=require(_0xcea5('0x1'));module[_0xcea5('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xcea5('0x3')](_0xcea5('0x4'),_0xcea5('0x5'),_0xcea5('0x6')),'allowNull':![],'defaultValue':_0xcea5('0x6')},'transferredAt':{'type':Sequelize[_0xcea5('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xcea5('0x8')]}};
\ No newline at end of file
+var _0xcc07=['NOW','moment','sequelize','exports','ENUM','account','agent','queue','DATE'];(function(_0x3d0d1c,_0x3e3f1c){var _0x118969=function(_0x32b928){while(--_0x32b928){_0x3d0d1c['push'](_0x3d0d1c['shift']());}};_0x118969(++_0x3e3f1c);}(_0xcc07,0x1d5));var _0x7cc0=function(_0x58ae8a,_0x3c619e){_0x58ae8a=_0x58ae8a-0x0;var _0x2f0b6b=_0xcc07[_0x58ae8a];return _0x2f0b6b;};'use strict';var moment=require(_0x7cc0('0x0'));var Sequelize=require(_0x7cc0('0x1'));module[_0x7cc0('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x7cc0('0x3')](_0x7cc0('0x4'),_0x7cc0('0x5'),_0x7cc0('0x6')),'allowNull':![],'defaultValue':_0x7cc0('0x6')},'transferredAt':{'type':Sequelize[_0x7cc0('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x7cc0('0x8')]}};
\ No newline at end of file
index 64e6949..93c23ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58fd=['set','Content-Range','reject','save','update','destroy','then','end','error','stack','name','send','index','SmsTransferReport','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','add','day','where','filter','merge','map','type','VIRTUAL','field','count','include','findAll','rows','catch','params','length','includeAll','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit'];(function(_0x57171b,_0xfe67c6){var _0x33a2c8=function(_0x31e60d){while(--_0x31e60d){_0x57171b['push'](_0x57171b['shift']());}};_0x33a2c8(++_0xfe67c6);}(_0x58fd,0xce));var _0xd58f=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x58fd[_0x139a3c];return _0x2b375b;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xd58f('0x0'));var rimraf=require(_0xd58f('0x1'));var zipdir=require(_0xd58f('0x2'));var jsonpatch=require(_0xd58f('0x3'));var rp=require(_0xd58f('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd58f('0x5'));var path=require(_0xd58f('0x6'));var sox=require(_0xd58f('0x7'));var csv=require(_0xd58f('0x8'));var ejs=require(_0xd58f('0x9'));var fs=require('fs');var _=require(_0xd58f('0xa'));var squel=require(_0xd58f('0xb'));var crypto=require(_0xd58f('0xc'));var jsforce=require(_0xd58f('0xd'));var deskjs=require(_0xd58f('0xe'));var toCsv=require(_0xd58f('0x8'));var querystring=require('querystring');var Papa=require(_0xd58f('0xf'));var Redis=require(_0xd58f('0x10'));var qs=require(_0xd58f('0x11'));var logger=require(_0xd58f('0x12'))(_0xd58f('0x13'));var utils=require(_0xd58f('0x14'));var config=require(_0xd58f('0x15'));var db=require(_0xd58f('0x16'))['db'];function respondWithStatusCode(_0x10aeb0,_0x270408){_0x270408=_0x270408||0xcc;return function(_0x26d63a){if(_0x26d63a){return _0x10aeb0[_0xd58f('0x17')](_0x270408);}return _0x10aeb0[_0xd58f('0x18')](_0x270408)['end']();};}function respondWithResult(_0x9fffeb,_0x461cf9){_0x461cf9=_0x461cf9||0xc8;return function(_0x16830f){if(_0x16830f){return _0x9fffeb[_0xd58f('0x18')](_0x461cf9)[_0xd58f('0x19')](_0x16830f);}};}function respondWithFilteredResult(_0xf5bb90,_0x156b2f){return function(_0x1e74b2){if(_0x1e74b2){var _0xc2410e=_0x1e74b2['count'],_0xc48c75=_0x156b2f['offset'],_0x5c5d70=_0x156b2f[_0xd58f('0x1a')]+_0x156b2f[_0xd58f('0x1b')],_0xc0971f;if(_0x5c5d70>=_0xc2410e){_0x5c5d70=_0xc2410e;_0xc0971f=0xc8;}else{_0xc0971f=0xce;}_0xf5bb90[_0xd58f('0x18')](_0xc0971f);return _0xf5bb90[_0xd58f('0x1c')](_0xd58f('0x1d'),_0xc48c75+'-'+_0x5c5d70+'/'+_0xc2410e)[_0xd58f('0x19')](_0x1e74b2);}return null;};}function patchUpdates(_0x11d67c){return function(_0x194011){try{jsonpatch['apply'](_0x194011,_0x11d67c,!![]);}catch(_0x147031){return BPromise[_0xd58f('0x1e')](_0x147031);}return _0x194011[_0xd58f('0x1f')]();};}function saveUpdates(_0x9abde4,_0x2a04ce){return function(_0x4337d2){if(_0x4337d2){return _0x4337d2[_0xd58f('0x20')](_0x9abde4)['then'](function(_0x3a6569){return _0x3a6569;});}return null;};}function removeEntity(_0x3c3766,_0x18adc4){return function(_0x3f656a){if(_0x3f656a){return _0x3f656a[_0xd58f('0x21')]()[_0xd58f('0x22')](function(){_0x3c3766[_0xd58f('0x18')](0xcc)[_0xd58f('0x23')]();});}};}function handleEntityNotFound(_0x1f2121,_0x5e43f1){return function(_0x5dfdc4){if(!_0x5dfdc4){_0x1f2121['sendStatus'](0x194);}return _0x5dfdc4;};}function handleError(_0x4f2463,_0x3ded28){_0x3ded28=_0x3ded28||0x1f4;return function(_0x422403){logger[_0xd58f('0x24')](_0x422403[_0xd58f('0x25')]);if(_0x422403[_0xd58f('0x26')]){delete _0x422403[_0xd58f('0x26')];}_0x4f2463['status'](_0x3ded28)[_0xd58f('0x27')](_0x422403);};}exports[_0xd58f('0x28')]=function(_0x337ee0,_0x5c3a74){var _0x240845={},_0x40a18f={},_0x4db70b={'count':0x0,'rows':[]};var _0x43ba99=db[_0xd58f('0x29')][_0xd58f('0x2a')];_0x40a18f[_0xd58f('0x2b')]=_[_0xd58f('0x2c')](_0x43ba99);var _0x2d9adc={'dateStart':_0x337ee0[_0xd58f('0x2d')][_0xd58f('0x2e')],'dateEnd':_0x337ee0[_0xd58f('0x2d')]['dateEnd']};delete _0x337ee0[_0xd58f('0x2d')][_0xd58f('0x2e')];delete _0x337ee0[_0xd58f('0x2d')][_0xd58f('0x2f')];_0x40a18f[_0xd58f('0x2d')]=_['keys'](_0x337ee0['query']);_0x40a18f[_0xd58f('0x30')]=_[_0xd58f('0x31')](_0x40a18f['model'],_0x40a18f[_0xd58f('0x2d')]);_0x240845[_0xd58f('0x32')]=_[_0xd58f('0x31')](_0x40a18f['model'],qs[_0xd58f('0x33')](_0x337ee0[_0xd58f('0x2d')][_0xd58f('0x33')]));_0x240845['attributes']=_0x240845[_0xd58f('0x32')]['length']?_0x240845[_0xd58f('0x32')]:_0x40a18f[_0xd58f('0x2b')];if(!_0x337ee0[_0xd58f('0x2d')][_0xd58f('0x34')](_0xd58f('0x35'))){_0x240845[_0xd58f('0x1b')]=qs[_0xd58f('0x1b')](_0x337ee0['query'][_0xd58f('0x1b')]);_0x240845['offset']=qs[_0xd58f('0x1a')](_0x337ee0[_0xd58f('0x2d')]['offset']);}_0x240845[_0xd58f('0x36')]=qs[_0xd58f('0x37')](_0x337ee0[_0xd58f('0x2d')]['sort']);_0x240845['where']=qs[_0xd58f('0x30')](_[_0xd58f('0x38')](_0x337ee0['query'],_0x40a18f['filters']));if(_0x2d9adc['dateStart']){if(_0x2d9adc['dateEnd']){_0x2d9adc[_0xd58f('0x2f')]=moment(_0x2d9adc[_0xd58f('0x2f')])[_0xd58f('0x39')](0x1,_0xd58f('0x3a'));}else{_0x2d9adc[_0xd58f('0x2f')]=moment(_0x2d9adc[_0xd58f('0x2e')])['add'](0x1,_0xd58f('0x3a'));}_['merge'](_0x240845[_0xd58f('0x3b')],{'createdAt':{'$gte':_0x2d9adc['dateStart'],'$lte':_0x2d9adc[_0xd58f('0x2f')]}});}if(_0x337ee0[_0xd58f('0x2d')][_0xd58f('0x3c')]){_0x240845[_0xd58f('0x3b')]=_[_0xd58f('0x3d')](_0x240845['where'],{'$or':_[_0xd58f('0x3e')](_0x43ba99,function(_0x5a4b89){if(_0x5a4b89[_0xd58f('0x3f')]['key']!==_0xd58f('0x40')){var _0x5a6b71={};_0x5a6b71[_0x5a4b89[_0xd58f('0x41')]]={'$like':'%'+_0x337ee0[_0xd58f('0x2d')][_0xd58f('0x3c')]+'%'};return _0x5a6b71;}})});}_0x240845=_[_0xd58f('0x3d')]({},_0x240845,_0x337ee0['options']);var _0x2f9ad2={'where':_0x240845[_0xd58f('0x3b')]};return db[_0xd58f('0x29')][_0xd58f('0x42')](_0x2f9ad2)['then'](function(_0x1f832e){_0x4db70b[_0xd58f('0x42')]=_0x1f832e;if(_0x337ee0[_0xd58f('0x2d')]['includeAll']){_0x240845[_0xd58f('0x43')]=[{'all':!![]}];}return db[_0xd58f('0x29')][_0xd58f('0x44')](_0x240845);})[_0xd58f('0x22')](function(_0x462323){_0x4db70b[_0xd58f('0x45')]=_0x462323;return _0x4db70b;})['then'](respondWithFilteredResult(_0x5c3a74,_0x240845))[_0xd58f('0x46')](handleError(_0x5c3a74,null));};exports['show']=function(_0xc95f50,_0x52cfff){var _0x3da1a0={'raw':!![],'where':{'id':_0xc95f50[_0xd58f('0x47')]['id']}},_0x1c06b1={};_0x1c06b1[_0xd58f('0x2b')]=_[_0xd58f('0x2c')](db[_0xd58f('0x29')][_0xd58f('0x2a')]);_0x1c06b1[_0xd58f('0x2d')]=_[_0xd58f('0x2c')](_0xc95f50[_0xd58f('0x2d')]);_0x1c06b1[_0xd58f('0x30')]=_[_0xd58f('0x31')](_0x1c06b1[_0xd58f('0x2b')],_0x1c06b1[_0xd58f('0x2d')]);_0x3da1a0[_0xd58f('0x32')]=_[_0xd58f('0x31')](_0x1c06b1['model'],qs[_0xd58f('0x33')](_0xc95f50['query'][_0xd58f('0x33')]));_0x3da1a0[_0xd58f('0x32')]=_0x3da1a0[_0xd58f('0x32')][_0xd58f('0x48')]?_0x3da1a0[_0xd58f('0x32')]:_0x1c06b1['model'];if(_0xc95f50[_0xd58f('0x2d')][_0xd58f('0x49')]){_0x3da1a0[_0xd58f('0x43')]=[{'all':!![]}];}_0x3da1a0=_[_0xd58f('0x3d')]({},_0x3da1a0,_0xc95f50['options']);return db[_0xd58f('0x29')]['find'](_0x3da1a0)[_0xd58f('0x22')](handleEntityNotFound(_0x52cfff,null))[_0xd58f('0x22')](respondWithResult(_0x52cfff,null))['catch'](handleError(_0x52cfff,null));};exports[_0xd58f('0x4a')]=function(_0x38b192,_0x3dc910){return db[_0xd58f('0x29')][_0xd58f('0x4a')](_0x38b192[_0xd58f('0x4b')],{})[_0xd58f('0x22')](respondWithResult(_0x3dc910,0xc9))[_0xd58f('0x46')](handleError(_0x3dc910,null));};exports[_0xd58f('0x20')]=function(_0x3c2477,_0x45f1b9){if(_0x3c2477[_0xd58f('0x4b')]['id']){delete _0x3c2477['body']['id'];}return db[_0xd58f('0x29')]['find']({'where':{'id':_0x3c2477[_0xd58f('0x47')]['id']}})['then'](handleEntityNotFound(_0x45f1b9,null))[_0xd58f('0x22')](saveUpdates(_0x3c2477[_0xd58f('0x4b')],null))[_0xd58f('0x22')](respondWithResult(_0x45f1b9,null))[_0xd58f('0x46')](handleError(_0x45f1b9,null));};exports[_0xd58f('0x21')]=function(_0x5bb21c,_0x883c61){return db[_0xd58f('0x29')][_0xd58f('0x4c')]({'where':{'id':_0x5bb21c[_0xd58f('0x47')]['id']}})[_0xd58f('0x22')](handleEntityNotFound(_0x883c61,null))['then'](removeEntity(_0x883c61,null))[_0xd58f('0x46')](handleError(_0x883c61,null));};exports[_0xd58f('0x4d')]=function(_0x3de3f0,_0x3fdaf2){return db[_0xd58f('0x29')][_0xd58f('0x4d')]()[_0xd58f('0x22')](respondWithResult(_0x3fdaf2,null))['catch'](handleError(_0x3fdaf2,null));};
\ No newline at end of file
+var _0x9e2c=['then','destroy','sendStatus','error','stack','name','send','index','SmsTransferReport','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','pick','add','merge','filter','type','key','VIRTUAL','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb','end','status','json','count','offset','Content-Range','apply','reject','save','update'];(function(_0x56ffb4,_0x7c386a){var _0x14a736=function(_0x35003b){while(--_0x35003b){_0x56ffb4['push'](_0x56ffb4['shift']());}};_0x14a736(++_0x7c386a);}(_0x9e2c,0x70));var _0xc9e2=function(_0x4d31a4,_0x50adb1){_0x4d31a4=_0x4d31a4-0x0;var _0x1b16d9=_0x9e2c[_0x4d31a4];return _0x1b16d9;};'use strict';var pdf=require(_0xc9e2('0x0'));var emlformat=require(_0xc9e2('0x1'));var rimraf=require(_0xc9e2('0x2'));var zipdir=require(_0xc9e2('0x3'));var jsonpatch=require(_0xc9e2('0x4'));var rp=require(_0xc9e2('0x5'));var moment=require(_0xc9e2('0x6'));var BPromise=require(_0xc9e2('0x7'));var Mustache=require(_0xc9e2('0x8'));var util=require(_0xc9e2('0x9'));var path=require('path');var sox=require('sox');var csv=require(_0xc9e2('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xc9e2('0xb'));var squel=require(_0xc9e2('0xc'));var crypto=require(_0xc9e2('0xd'));var jsforce=require(_0xc9e2('0xe'));var deskjs=require(_0xc9e2('0xf'));var toCsv=require(_0xc9e2('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc9e2('0x10'));var qs=require(_0xc9e2('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xc9e2('0x12'));var db=require(_0xc9e2('0x13'))['db'];function respondWithStatusCode(_0x17f568,_0x1a15e0){_0x1a15e0=_0x1a15e0||0xcc;return function(_0x5de228){if(_0x5de228){return _0x17f568['sendStatus'](_0x1a15e0);}return _0x17f568['status'](_0x1a15e0)[_0xc9e2('0x14')]();};}function respondWithResult(_0x3791dc,_0x48d3a1){_0x48d3a1=_0x48d3a1||0xc8;return function(_0xdae38){if(_0xdae38){return _0x3791dc[_0xc9e2('0x15')](_0x48d3a1)[_0xc9e2('0x16')](_0xdae38);}};}function respondWithFilteredResult(_0x513496,_0x55abcd){return function(_0x283c08){if(_0x283c08){var _0x378fa1=_0x283c08[_0xc9e2('0x17')],_0x249057=_0x55abcd[_0xc9e2('0x18')],_0x4a0c99=_0x55abcd['offset']+_0x55abcd['limit'],_0x27887b;if(_0x4a0c99>=_0x378fa1){_0x4a0c99=_0x378fa1;_0x27887b=0xc8;}else{_0x27887b=0xce;}_0x513496[_0xc9e2('0x15')](_0x27887b);return _0x513496['set'](_0xc9e2('0x19'),_0x249057+'-'+_0x4a0c99+'/'+_0x378fa1)[_0xc9e2('0x16')](_0x283c08);}return null;};}function patchUpdates(_0x8673d0){return function(_0x3003e7){try{jsonpatch[_0xc9e2('0x1a')](_0x3003e7,_0x8673d0,!![]);}catch(_0x189762){return BPromise[_0xc9e2('0x1b')](_0x189762);}return _0x3003e7[_0xc9e2('0x1c')]();};}function saveUpdates(_0x206e36,_0x3738d8){return function(_0x549493){if(_0x549493){return _0x549493[_0xc9e2('0x1d')](_0x206e36)[_0xc9e2('0x1e')](function(_0x32c646){return _0x32c646;});}return null;};}function removeEntity(_0x212124,_0x5c7193){return function(_0x4fc38d){if(_0x4fc38d){return _0x4fc38d[_0xc9e2('0x1f')]()[_0xc9e2('0x1e')](function(){_0x212124['status'](0xcc)[_0xc9e2('0x14')]();});}};}function handleEntityNotFound(_0x59ef6c,_0x23c756){return function(_0x440bc9){if(!_0x440bc9){_0x59ef6c[_0xc9e2('0x20')](0x194);}return _0x440bc9;};}function handleError(_0x536838,_0x44c5ca){_0x44c5ca=_0x44c5ca||0x1f4;return function(_0x1e8f74){logger[_0xc9e2('0x21')](_0x1e8f74[_0xc9e2('0x22')]);if(_0x1e8f74[_0xc9e2('0x23')]){delete _0x1e8f74[_0xc9e2('0x23')];}_0x536838[_0xc9e2('0x15')](_0x44c5ca)[_0xc9e2('0x24')](_0x1e8f74);};}exports[_0xc9e2('0x25')]=function(_0x52ea2d,_0x376d4c){var _0x149aab={},_0x5933e6={},_0x56e84f={'count':0x0,'rows':[]};var _0x468db1=db[_0xc9e2('0x26')]['rawAttributes'];_0x5933e6[_0xc9e2('0x27')]=_[_0xc9e2('0x28')](_0x468db1);var _0x5d1ec1={'dateStart':_0x52ea2d[_0xc9e2('0x29')][_0xc9e2('0x2a')],'dateEnd':_0x52ea2d[_0xc9e2('0x29')][_0xc9e2('0x2b')]};delete _0x52ea2d[_0xc9e2('0x29')]['dateStart'];delete _0x52ea2d[_0xc9e2('0x29')]['dateEnd'];_0x5933e6[_0xc9e2('0x29')]=_[_0xc9e2('0x28')](_0x52ea2d[_0xc9e2('0x29')]);_0x5933e6[_0xc9e2('0x2c')]=_[_0xc9e2('0x2d')](_0x5933e6[_0xc9e2('0x27')],_0x5933e6[_0xc9e2('0x29')]);_0x149aab[_0xc9e2('0x2e')]=_['intersection'](_0x5933e6[_0xc9e2('0x27')],qs[_0xc9e2('0x2f')](_0x52ea2d['query'][_0xc9e2('0x2f')]));_0x149aab[_0xc9e2('0x2e')]=_0x149aab[_0xc9e2('0x2e')][_0xc9e2('0x30')]?_0x149aab[_0xc9e2('0x2e')]:_0x5933e6[_0xc9e2('0x27')];if(!_0x52ea2d[_0xc9e2('0x29')][_0xc9e2('0x31')]('nolimit')){_0x149aab[_0xc9e2('0x32')]=qs[_0xc9e2('0x32')](_0x52ea2d[_0xc9e2('0x29')]['limit']);_0x149aab[_0xc9e2('0x18')]=qs['offset'](_0x52ea2d['query']['offset']);}_0x149aab['order']=qs['sort'](_0x52ea2d[_0xc9e2('0x29')][_0xc9e2('0x33')]);_0x149aab[_0xc9e2('0x34')]=qs['filters'](_[_0xc9e2('0x35')](_0x52ea2d[_0xc9e2('0x29')],_0x5933e6[_0xc9e2('0x2c')]));if(_0x5d1ec1[_0xc9e2('0x2a')]){if(_0x5d1ec1[_0xc9e2('0x2b')]){_0x5d1ec1[_0xc9e2('0x2b')]=moment(_0x5d1ec1[_0xc9e2('0x2b')])[_0xc9e2('0x36')](0x1,'day');}else{_0x5d1ec1[_0xc9e2('0x2b')]=moment(_0x5d1ec1[_0xc9e2('0x2a')])[_0xc9e2('0x36')](0x1,'day');}_[_0xc9e2('0x37')](_0x149aab['where'],{'createdAt':{'$gte':_0x5d1ec1[_0xc9e2('0x2a')],'$lte':_0x5d1ec1[_0xc9e2('0x2b')]}});}if(_0x52ea2d[_0xc9e2('0x29')][_0xc9e2('0x38')]){_0x149aab[_0xc9e2('0x34')]=_[_0xc9e2('0x37')](_0x149aab[_0xc9e2('0x34')],{'$or':_['map'](_0x468db1,function(_0x3124f5){if(_0x3124f5[_0xc9e2('0x39')][_0xc9e2('0x3a')]!==_0xc9e2('0x3b')){var _0x579162={};_0x579162[_0x3124f5['field']]={'$like':'%'+_0x52ea2d[_0xc9e2('0x29')]['filter']+'%'};return _0x579162;}})});}_0x149aab=_[_0xc9e2('0x37')]({},_0x149aab,_0x52ea2d['options']);var _0x4429e1={'where':_0x149aab[_0xc9e2('0x34')]};return db['SmsTransferReport'][_0xc9e2('0x17')](_0x4429e1)['then'](function(_0x208b23){_0x56e84f[_0xc9e2('0x17')]=_0x208b23;if(_0x52ea2d[_0xc9e2('0x29')]['includeAll']){_0x149aab[_0xc9e2('0x3c')]=[{'all':!![]}];}return db[_0xc9e2('0x26')][_0xc9e2('0x3d')](_0x149aab);})['then'](function(_0x328607){_0x56e84f[_0xc9e2('0x3e')]=_0x328607;return _0x56e84f;})[_0xc9e2('0x1e')](respondWithFilteredResult(_0x376d4c,_0x149aab))[_0xc9e2('0x3f')](handleError(_0x376d4c,null));};exports[_0xc9e2('0x40')]=function(_0x139961,_0x4dc77f){var _0x2a6380={'raw':!![],'where':{'id':_0x139961[_0xc9e2('0x41')]['id']}},_0x42ef8a={};_0x42ef8a[_0xc9e2('0x27')]=_[_0xc9e2('0x28')](db[_0xc9e2('0x26')]['rawAttributes']);_0x42ef8a[_0xc9e2('0x29')]=_[_0xc9e2('0x28')](_0x139961[_0xc9e2('0x29')]);_0x42ef8a[_0xc9e2('0x2c')]=_[_0xc9e2('0x2d')](_0x42ef8a[_0xc9e2('0x27')],_0x42ef8a[_0xc9e2('0x29')]);_0x2a6380['attributes']=_[_0xc9e2('0x2d')](_0x42ef8a[_0xc9e2('0x27')],qs[_0xc9e2('0x2f')](_0x139961[_0xc9e2('0x29')][_0xc9e2('0x2f')]));_0x2a6380[_0xc9e2('0x2e')]=_0x2a6380[_0xc9e2('0x2e')][_0xc9e2('0x30')]?_0x2a6380[_0xc9e2('0x2e')]:_0x42ef8a[_0xc9e2('0x27')];if(_0x139961[_0xc9e2('0x29')][_0xc9e2('0x42')]){_0x2a6380[_0xc9e2('0x3c')]=[{'all':!![]}];}_0x2a6380=_[_0xc9e2('0x37')]({},_0x2a6380,_0x139961[_0xc9e2('0x43')]);return db[_0xc9e2('0x26')][_0xc9e2('0x44')](_0x2a6380)['then'](handleEntityNotFound(_0x4dc77f,null))[_0xc9e2('0x1e')](respondWithResult(_0x4dc77f,null))[_0xc9e2('0x3f')](handleError(_0x4dc77f,null));};exports['create']=function(_0x2e042c,_0x3c6a33){return db['SmsTransferReport'][_0xc9e2('0x45')](_0x2e042c[_0xc9e2('0x46')],{})[_0xc9e2('0x1e')](respondWithResult(_0x3c6a33,0xc9))[_0xc9e2('0x3f')](handleError(_0x3c6a33,null));};exports[_0xc9e2('0x1d')]=function(_0x368d1e,_0x19da82){if(_0x368d1e['body']['id']){delete _0x368d1e[_0xc9e2('0x46')]['id'];}return db[_0xc9e2('0x26')][_0xc9e2('0x44')]({'where':{'id':_0x368d1e['params']['id']}})[_0xc9e2('0x1e')](handleEntityNotFound(_0x19da82,null))[_0xc9e2('0x1e')](saveUpdates(_0x368d1e[_0xc9e2('0x46')],null))[_0xc9e2('0x1e')](respondWithResult(_0x19da82,null))[_0xc9e2('0x3f')](handleError(_0x19da82,null));};exports[_0xc9e2('0x1f')]=function(_0x5b6bc2,_0x18abbd){return db['SmsTransferReport']['find']({'where':{'id':_0x5b6bc2['params']['id']}})[_0xc9e2('0x1e')](handleEntityNotFound(_0x18abbd,null))['then'](removeEntity(_0x18abbd,null))[_0xc9e2('0x3f')](handleError(_0x18abbd,null));};exports['describe']=function(_0x27e19b,_0x560530){return db['SmsTransferReport']['describe']()['then'](respondWithResult(_0x560530,null))[_0xc9e2('0x3f')](handleError(_0x560530,null));};
\ No newline at end of file
index 176dea9..55a600f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','../../config/logger','api','moment','bluebird','request-promise','./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','uniqueid'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xedd9,0xfc));var _0x9edd=function(_0xc5ed03,_0x22f178){_0xc5ed03=_0xc5ed03-0x0;var _0xc4ecb=_0xedd9[_0xc5ed03];return _0xc4ecb;};'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 attributes=require(_0x9edd('0x6'));module[_0x9edd('0x7')]=function(_0x5943b3,_0x33679f){return _0x5943b3[_0x9edd('0x8')](_0x9edd('0x9'),attributes,{'tableName':_0x9edd('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x9edd('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb821=['../../config/logger','bluebird','exports','define','report_sms_transfer','uniqueid','util'];(function(_0x5e6bbd,_0x280bc4){var _0x2fabac=function(_0x5bb4d3){while(--_0x5bb4d3){_0x5e6bbd['push'](_0x5e6bbd['shift']());}};_0x2fabac(++_0x280bc4);}(_0xb821,0xa7));var _0x1b82=function(_0x1d679c,_0x250533){_0x1d679c=_0x1d679c-0x0;var _0x50bf67=_0xb821[_0x1d679c];return _0x50bf67;};'use strict';var _=require('lodash');var util=require(_0x1b82('0x0'));var logger=require(_0x1b82('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1b82('0x2'));var rp=require('request-promise');var attributes=require('./smsTransferReport.attributes');module[_0x1b82('0x3')]=function(_0x1403ab,_0x3fadf0){return _0x1403ab[_0x1b82('0x4')]('SmsTransferReport',attributes,{'tableName':_0x1b82('0x5'),'paranoid':![],'indexes':[{'name':_0x1b82('0x6'),'fields':[_0x1b82('0x6')]}],'timestamps':!![]});};
\ No newline at end of file
index 06642c9..aa64b16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb016=['error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x32a5b8,_0x1f0b73){var _0xff607f=function(_0x1cb9ee){while(--_0x1cb9ee){_0x32a5b8['push'](_0x32a5b8['shift']());}};_0xff607f(++_0x1f0b73);}(_0xb016,0x159));var _0x6b01=function(_0x586e98,_0x2fa426){_0x586e98=_0x586e98-0x0;var _0x48a23a=_0xb016[_0x586e98];return _0x48a23a;};'use strict';var _=require(_0x6b01('0x0'));var util=require(_0x6b01('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6b01('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6b01('0x3'))['db'];var utils=require(_0x6b01('0x4'));var logger=require(_0x6b01('0x5'))(_0x6b01('0x6'));var config=require('../../config/environment');var jayson=require(_0x6b01('0x7'));var client=jayson[_0x6b01('0x8')][_0x6b01('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5759a1,_0x5c5bfb,_0x374aab){return new BPromise(function(_0x39f9fa,_0x526a7d){return client['request'](_0x5759a1,_0x374aab)[_0x6b01('0xa')](function(_0x1cb3a6){logger[_0x6b01('0xb')](_0x6b01('0xc'),_0x5c5bfb,_0x6b01('0xd'));logger['debug']('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x5c5bfb,_0x6b01('0xd'),JSON[_0x6b01('0xe')](_0x1cb3a6));if(_0x1cb3a6[_0x6b01('0xf')]){if(_0x1cb3a6['error'][_0x6b01('0x10')]===0x1f4){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x5c5bfb,_0x1cb3a6[_0x6b01('0xf')]['message']);return _0x526a7d(_0x1cb3a6[_0x6b01('0xf')][_0x6b01('0x11')]);}logger['error'](_0x6b01('0xc'),_0x5c5bfb,_0x1cb3a6['error']['message']);return _0x39f9fa(_0x1cb3a6['error'][_0x6b01('0x11')]);}else{logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x5c5bfb,_0x6b01('0xd'));_0x39f9fa(_0x1cb3a6[_0x6b01('0x12')][_0x6b01('0x11')]);}})[_0x6b01('0x13')](function(_0x3d7045){logger[_0x6b01('0xf')](_0x6b01('0xc'),_0x5c5bfb,_0x3d7045);_0x526a7d(_0x3d7045);});});}
\ No newline at end of file
+var _0x793b=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','message','request\x20sent','result','catch','lodash','util','moment'];(function(_0x506172,_0xbc3a3){var _0x2723c0=function(_0x57c3d9){while(--_0x57c3d9){_0x506172['push'](_0x506172['shift']());}};_0x2723c0(++_0xbc3a3);}(_0x793b,0x189));var _0xb793=function(_0x515c47,_0x3ec55c){_0x515c47=_0x515c47-0x0;var _0x62df5b=_0x793b[_0x515c47];return _0x62df5b;};'use strict';var _=require(_0xb793('0x0'));var util=require(_0xb793('0x1'));var moment=require(_0xb793('0x2'));var BPromise=require(_0xb793('0x3'));var rs=require(_0xb793('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb793('0x5'))['db'];var utils=require(_0xb793('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb793('0x7'));var jayson=require(_0xb793('0x8'));var client=jayson[_0xb793('0x9')][_0xb793('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x39f110,_0x42d0c7,_0x134ac4){return new BPromise(function(_0x23a718,_0x149720){return client[_0xb793('0xb')](_0x39f110,_0x134ac4)[_0xb793('0xc')](function(_0x22c9ea){logger[_0xb793('0xd')](_0xb793('0xe'),_0x42d0c7,'request\x20sent');logger[_0xb793('0xf')](_0xb793('0x10'),_0x42d0c7,'request\x20sent',JSON['stringify'](_0x22c9ea));if(_0x22c9ea[_0xb793('0x11')]){if(_0x22c9ea[_0xb793('0x11')]['code']===0x1f4){logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x22c9ea['error'][_0xb793('0x12')]);return _0x149720(_0x22c9ea[_0xb793('0x11')][_0xb793('0x12')]);}logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x22c9ea[_0xb793('0x11')][_0xb793('0x12')]);return _0x23a718(_0x22c9ea['error'][_0xb793('0x12')]);}else{logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x42d0c7,_0xb793('0x13'));_0x23a718(_0x22c9ea[_0xb793('0x14')][_0xb793('0x12')]);}})[_0xb793('0x15')](function(_0x38d9f2){logger[_0xb793('0x11')](_0xb793('0xe'),_0x42d0c7,_0x38d9f2);_0x149720(_0x38d9f2);});});}
\ No newline at end of file
index 9307f2e..6c99837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb540=['isAuthenticated','index','/:id','show','download','diskStorage','join','originalname','replace','format','basename','extname','now','file','create','delete','exports','path','express','Router','../../components/auth/service','../../config/environment','get'];(function(_0x30cefa,_0x4e47ad){var _0x34e027=function(_0xf9fde9){while(--_0xf9fde9){_0x30cefa['push'](_0x30cefa['shift']());}};_0x34e027(++_0x4e47ad);}(_0xb540,0x1f4));var _0x0b54=function(_0x45f947,_0x162df3){_0x45f947=_0x45f947-0x0;var _0x56724e=_0xb540[_0x45f947];return _0x56724e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0b54('0x0'));var timeout=require('connect-timeout');var express=require(_0x0b54('0x1'));var router=express[_0x0b54('0x2')]();var auth=require(_0x0b54('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x0b54('0x4'));var controller=require('./sound.controller');router[_0x0b54('0x5')]('/',auth[_0x0b54('0x6')](),controller[_0x0b54('0x7')]);router[_0x0b54('0x5')](_0x0b54('0x8'),auth['isAuthenticated'](),controller[_0x0b54('0x9')]);router[_0x0b54('0x5')]('/:id/download',auth[_0x0b54('0x6')](),controller[_0x0b54('0xa')]);var upload=multer({'storage':multer[_0x0b54('0xb')]({'destination':function(_0x3af2ba,_0x312f29,_0x2acb9d){_0x2acb9d(null,path[_0x0b54('0xc')](config['root'],'server/files/sounds/original/'));},'filename':function(_0xc4f24,_0xa6f32f,_0x215874){_0xa6f32f[_0x0b54('0xd')]=_0xa6f32f[_0x0b54('0xd')][_0x0b54('0xe')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x215874(null,util[_0x0b54('0xf')]('%s-%s%s',path[_0x0b54('0x10')](_0xa6f32f[_0x0b54('0xd')],path[_0x0b54('0x11')](_0xa6f32f[_0x0b54('0xd')])),Date[_0x0b54('0x12')](),path[_0x0b54('0x11')](_0xa6f32f[_0x0b54('0xd')])));}})});router['post']('/',upload['single'](_0x0b54('0x13')),controller[_0x0b54('0x14')]);router['put'](_0x0b54('0x8'),auth[_0x0b54('0x6')](),controller['update']);router[_0x0b54('0x15')](_0x0b54('0x8'),auth[_0x0b54('0x6')](),controller[_0x0b54('0x15')]);module[_0x0b54('0x16')]=router;
\ No newline at end of file
+var _0x28e7=['update','delete','/:id','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','show','/:id/download','download','diskStorage','root','originalname','replace','format','basename','extname','now','post','single','file'];(function(_0x4566db,_0x5da9a1){var _0x3167e6=function(_0x154ed8){while(--_0x154ed8){_0x4566db['push'](_0x4566db['shift']());}};_0x3167e6(++_0x5da9a1);}(_0x28e7,0xd6));var _0x728e=function(_0x4a34c7,_0x534015){_0x4a34c7=_0x4a34c7-0x0;var _0x2e5b10=_0x28e7[_0x4a34c7];return _0x2e5b10;};'use strict';var multer=require(_0x728e('0x0'));var util=require(_0x728e('0x1'));var path=require('path');var timeout=require(_0x728e('0x2'));var express=require(_0x728e('0x3'));var router=express[_0x728e('0x4')]();var auth=require(_0x728e('0x5'));var interaction=require(_0x728e('0x6'));var config=require(_0x728e('0x7'));var controller=require(_0x728e('0x8'));router[_0x728e('0x9')]('/',auth[_0x728e('0xa')](),controller[_0x728e('0xb')]);router[_0x728e('0x9')]('/:id',auth[_0x728e('0xa')](),controller[_0x728e('0xc')]);router[_0x728e('0x9')](_0x728e('0xd'),auth['isAuthenticated'](),controller[_0x728e('0xe')]);var upload=multer({'storage':multer[_0x728e('0xf')]({'destination':function(_0x9a574f,_0x48bed1,_0x1584c5){_0x1584c5(null,path['join'](config[_0x728e('0x10')],'server/files/sounds/original/'));},'filename':function(_0x4431f8,_0x1ff9e9,_0x407c40){_0x1ff9e9['originalname']=_0x1ff9e9[_0x728e('0x11')][_0x728e('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x407c40(null,util[_0x728e('0x13')]('%s-%s%s',path[_0x728e('0x14')](_0x1ff9e9[_0x728e('0x11')],path[_0x728e('0x15')](_0x1ff9e9['originalname'])),Date[_0x728e('0x16')](),path[_0x728e('0x15')](_0x1ff9e9[_0x728e('0x11')])));}})});router[_0x728e('0x17')]('/',upload[_0x728e('0x18')](_0x728e('0x19')),controller['create']);router['put']('/:id',auth[_0x728e('0xa')](),controller[_0x728e('0x1a')]);router[_0x728e('0x1b')](_0x728e('0x1c'),auth[_0x728e('0xa')](),controller[_0x728e('0x1b')]);module[_0x728e('0x1d')]=router;
\ No newline at end of file
index 2fe7345..48e649e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcae3=['INTEGER','sequelize','STRING','name','FLOAT','BIGINT'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0xcae3,0x79));var _0x3cae=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xcae3[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0x3cae('0x0'));module['exports']={'name':{'type':Sequelize[_0x3cae('0x1')],'unique':_0x3cae('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x3cae('0x1')]},'display_name':{'type':Sequelize[_0x3cae('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x3cae('0x1')]},'original_format':{'type':Sequelize[_0x3cae('0x1')]},'original_duration':{'type':Sequelize[_0x3cae('0x3')]},'original_sampleCount':{'type':Sequelize[_0x3cae('0x4')]},'original_channelCount':{'type':Sequelize[_0x3cae('0x5')]},'original_bitRate':{'type':Sequelize[_0x3cae('0x4')]},'original_sampleRate':{'type':Sequelize[_0x3cae('0x5')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x3cae('0x3')]},'converted_sampleCount':{'type':Sequelize[_0x3cae('0x4')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0x3cae('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x3cae('0x5')]}};
\ No newline at end of file
+var _0x7039=['exports','STRING','name','FLOAT','BIGINT','INTEGER','sequelize'];(function(_0x5e3631,_0x53c480){var _0x43c03a=function(_0x292014){while(--_0x292014){_0x5e3631['push'](_0x5e3631['shift']());}};_0x43c03a(++_0x53c480);}(_0x7039,0x16b));var _0x9703=function(_0x190697,_0x29ba9d){_0x190697=_0x190697-0x0;var _0x15309c=_0x7039[_0x190697];return _0x15309c;};'use strict';var Sequelize=require(_0x9703('0x0'));module[_0x9703('0x1')]={'name':{'type':Sequelize[_0x9703('0x2')],'unique':_0x9703('0x3'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0x9703('0x4')]},'original_sampleCount':{'type':Sequelize[_0x9703('0x5')]},'original_channelCount':{'type':Sequelize[_0x9703('0x6')]},'original_bitRate':{'type':Sequelize[_0x9703('0x5')]},'original_sampleRate':{'type':Sequelize[_0x9703('0x6')]},'converted_format':{'type':Sequelize[_0x9703('0x2')]},'converted_duration':{'type':Sequelize[_0x9703('0x4')]},'converted_sampleCount':{'type':Sequelize[_0x9703('0x5')]},'converted_channelCount':{'type':Sequelize[_0x9703('0x6')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0x9703('0x6')]}};
\ No newline at end of file
index abfa9fe..ac725f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','body','role','get','userProfileId','autoAssociation','start','send','description','delete','original_format','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','count','offset','limit','set','apply','reject','save','update','then','destroy','Sounds','UserProfileResource','error','stack','name','index','Sound','model','keys','dateStart','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','dateEnd','add','day','filter','merge','type','key','VIRTUAL','includeAll','include','findAll','rows','show','params','rawAttributes','options','catch','download','find','save_name','converted_format','existsSync','root','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','join','format','%s.%s','create','basename','file','originalname','extname','filename','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','wav','unlinkSync','src','original_duration'];(function(_0x4dc32,_0x1512f1){var _0x25a443=function(_0x43fc58){while(--_0x43fc58){_0x4dc32['push'](_0x4dc32['shift']());}};_0x25a443(++_0x1512f1);}(_0x7217,0x19e));var _0x7721=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7217[_0x6c993a];return _0x27f547;};'use strict';var pdf=require(_0x7721('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x7721('0x1'));var zipdir=require(_0x7721('0x2'));var jsonpatch=require(_0x7721('0x3'));var rp=require(_0x7721('0x4'));var moment=require(_0x7721('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7721('0x6'));var path=require(_0x7721('0x7'));var sox=require(_0x7721('0x8'));var csv=require(_0x7721('0x9'));var ejs=require(_0x7721('0xa'));var fs=require('fs');var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x9'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var qs=require(_0x7721('0x13'));var logger=require('../../config/logger')(_0x7721('0x14'));var utils=require(_0x7721('0x15'));var config=require(_0x7721('0x16'));var db=require(_0x7721('0x17'))['db'];function respondWithStatusCode(_0xa8977c,_0x409b37){_0x409b37=_0x409b37||0xcc;return function(_0x1e7fd7){if(_0x1e7fd7){return _0xa8977c[_0x7721('0x18')](_0x409b37);}return _0xa8977c['status'](_0x409b37)[_0x7721('0x19')]();};}function respondWithResult(_0x199930,_0x57ff6d){_0x57ff6d=_0x57ff6d||0xc8;return function(_0x109900){if(_0x109900){return _0x199930[_0x7721('0x1a')](_0x57ff6d)[_0x7721('0x1b')](_0x109900);}};}function respondWithFilteredResult(_0x2e9752,_0x5069da){return function(_0x3cbce8){if(_0x3cbce8){var _0x25b1c0=_0x3cbce8[_0x7721('0x1c')],_0x534f1b=_0x5069da[_0x7721('0x1d')],_0x4e199a=_0x5069da[_0x7721('0x1d')]+_0x5069da[_0x7721('0x1e')],_0x4b183e;if(_0x4e199a>=_0x25b1c0){_0x4e199a=_0x25b1c0;_0x4b183e=0xc8;}else{_0x4b183e=0xce;}_0x2e9752['status'](_0x4b183e);return _0x2e9752[_0x7721('0x1f')]('Content-Range',_0x534f1b+'-'+_0x4e199a+'/'+_0x25b1c0)[_0x7721('0x1b')](_0x3cbce8);}return null;};}function patchUpdates(_0x5cb0e6){return function(_0xfec626){try{jsonpatch[_0x7721('0x20')](_0xfec626,_0x5cb0e6,!![]);}catch(_0x3ab5a5){return BPromise[_0x7721('0x21')](_0x3ab5a5);}return _0xfec626[_0x7721('0x22')]();};}function saveUpdates(_0x40af90,_0x402820){return function(_0x413263){if(_0x413263){return _0x413263[_0x7721('0x23')](_0x40af90)[_0x7721('0x24')](function(_0x4ce1db){return _0x4ce1db;});}return null;};}function removeEntity(_0x288f7e,_0x2c1583){return function(_0x3a053f){if(_0x3a053f){return _0x3a053f[_0x7721('0x25')]()['then'](function(){var _0x28f5a6=_0x3a053f['get']({'plain':!![]});var _0xb9e9dd=_0x7721('0x26');return db[_0x7721('0x27')][_0x7721('0x25')]({'where':{'type':_0xb9e9dd,'resourceId':_0x28f5a6['id']}})[_0x7721('0x24')](function(){return _0x3a053f;});})[_0x7721('0x24')](function(){_0x288f7e[_0x7721('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x216f20,_0x1abedb){return function(_0x125564){if(!_0x125564){_0x216f20[_0x7721('0x18')](0x194);}return _0x125564;};}function handleError(_0x40d550,_0x16355a){_0x16355a=_0x16355a||0x1f4;return function(_0x424e05){logger[_0x7721('0x28')](_0x424e05[_0x7721('0x29')]);if(_0x424e05['name']){delete _0x424e05[_0x7721('0x2a')];}_0x40d550['status'](_0x16355a)['send'](_0x424e05);};}exports[_0x7721('0x2b')]=function(_0x343c19,_0x53c904){var _0x158d98={},_0x1ea4d={},_0x37b9f0={'count':0x0,'rows':[]};var _0xd7d703=db[_0x7721('0x2c')]['rawAttributes'];_0x1ea4d[_0x7721('0x2d')]=_[_0x7721('0x2e')](_0xd7d703);var _0x497f9f={'dateStart':_0x343c19['query'][_0x7721('0x2f')],'dateEnd':_0x343c19[_0x7721('0x30')]['dateEnd']};delete _0x343c19[_0x7721('0x30')][_0x7721('0x2f')];delete _0x343c19[_0x7721('0x30')]['dateEnd'];_0x1ea4d[_0x7721('0x30')]=_[_0x7721('0x2e')](_0x343c19[_0x7721('0x30')]);_0x1ea4d[_0x7721('0x31')]=_[_0x7721('0x32')](_0x1ea4d['model'],_0x1ea4d[_0x7721('0x30')]);_0x158d98[_0x7721('0x33')]=_[_0x7721('0x32')](_0x1ea4d['model'],qs[_0x7721('0x34')](_0x343c19[_0x7721('0x30')]['fields']));_0x158d98[_0x7721('0x33')]=_0x158d98['attributes'][_0x7721('0x35')]?_0x158d98[_0x7721('0x33')]:_0x1ea4d[_0x7721('0x2d')];if(!_0x343c19[_0x7721('0x30')][_0x7721('0x36')](_0x7721('0x37'))){_0x158d98[_0x7721('0x1e')]=qs[_0x7721('0x1e')](_0x343c19[_0x7721('0x30')][_0x7721('0x1e')]);_0x158d98[_0x7721('0x1d')]=qs['offset'](_0x343c19[_0x7721('0x30')]['offset']);}_0x158d98[_0x7721('0x38')]=qs[_0x7721('0x39')](_0x343c19[_0x7721('0x30')][_0x7721('0x39')]);_0x158d98[_0x7721('0x3a')]=qs[_0x7721('0x31')](_['pick'](_0x343c19['query'],_0x1ea4d['filters']));if(_0x497f9f['dateStart']){if(_0x497f9f[_0x7721('0x3b')]){_0x497f9f[_0x7721('0x3b')]=moment(_0x497f9f[_0x7721('0x3b')])[_0x7721('0x3c')](0x1,'day');}else{_0x497f9f[_0x7721('0x3b')]=moment(_0x497f9f['dateStart'])[_0x7721('0x3c')](0x1,_0x7721('0x3d'));}_['merge'](_0x158d98[_0x7721('0x3a')],{'createdAt':{'$gte':_0x497f9f[_0x7721('0x2f')],'$lte':_0x497f9f['dateEnd']}});}if(_0x343c19['query'][_0x7721('0x3e')]){_0x158d98[_0x7721('0x3a')]=_[_0x7721('0x3f')](_0x158d98[_0x7721('0x3a')],{'$or':_['map'](_0xd7d703,function(_0x2db173){if(_0x2db173[_0x7721('0x40')][_0x7721('0x41')]!==_0x7721('0x42')){var _0x196051={};_0x196051[_0x2db173['field']]={'$like':'%'+_0x343c19[_0x7721('0x30')]['filter']+'%'};return _0x196051;}})});}_0x158d98=_[_0x7721('0x3f')]({},_0x158d98,_0x343c19['options']);var _0x2333b8={'where':_0x158d98[_0x7721('0x3a')]};return db[_0x7721('0x2c')]['count'](_0x2333b8)[_0x7721('0x24')](function(_0x11d853){_0x37b9f0[_0x7721('0x1c')]=_0x11d853;if(_0x343c19['query'][_0x7721('0x43')]){_0x158d98[_0x7721('0x44')]=[{'all':!![]}];}return db[_0x7721('0x2c')][_0x7721('0x45')](_0x158d98);})[_0x7721('0x24')](function(_0x57d09b){_0x37b9f0[_0x7721('0x46')]=_0x57d09b;return _0x37b9f0;})['then'](respondWithFilteredResult(_0x53c904,_0x158d98))['catch'](handleError(_0x53c904,null));};exports[_0x7721('0x47')]=function(_0x1fdc79,_0x421aae){var _0x39a3ad={'raw':!![],'where':{'id':_0x1fdc79[_0x7721('0x48')]['id']}},_0x335145={};_0x335145[_0x7721('0x2d')]=_[_0x7721('0x2e')](db[_0x7721('0x2c')][_0x7721('0x49')]);_0x335145['query']=_['keys'](_0x1fdc79[_0x7721('0x30')]);_0x335145[_0x7721('0x31')]=_[_0x7721('0x32')](_0x335145[_0x7721('0x2d')],_0x335145['query']);_0x39a3ad[_0x7721('0x33')]=_[_0x7721('0x32')](_0x335145['model'],qs[_0x7721('0x34')](_0x1fdc79['query'][_0x7721('0x34')]));_0x39a3ad['attributes']=_0x39a3ad[_0x7721('0x33')][_0x7721('0x35')]?_0x39a3ad[_0x7721('0x33')]:_0x335145['model'];if(_0x1fdc79[_0x7721('0x30')][_0x7721('0x43')]){_0x39a3ad['include']=[{'all':!![]}];}_0x39a3ad=_[_0x7721('0x3f')]({},_0x39a3ad,_0x1fdc79[_0x7721('0x4a')]);return db[_0x7721('0x2c')]['find'](_0x39a3ad)[_0x7721('0x24')](handleEntityNotFound(_0x421aae,null))['then'](respondWithResult(_0x421aae,null))[_0x7721('0x4b')](handleError(_0x421aae,null));};exports[_0x7721('0x4c')]=function(_0x4738ef,_0x443503,_0x1c95d8){return db[_0x7721('0x2c')][_0x7721('0x4d')]({'where':{'id':_0x4738ef[_0x7721('0x48')]['id']},'attributes':[_0x7721('0x2a'),_0x7721('0x4e'),_0x7721('0x4f')],'raw':!![]})[_0x7721('0x24')](handleEntityNotFound(_0x443503,null))[_0x7721('0x24')](function(_0xbcd90e){if(_0xbcd90e){if(!fs[_0x7721('0x50')](path['join'](config[_0x7721('0x51')],_0x7721('0x52'),_0xbcd90e[_0x7721('0x4e')]+'.'+_0xbcd90e[_0x7721('0x4f')]))){throw new db[(_0x7721('0x53'))][(_0x7721('0x54'))](_0x7721('0x55'));}return _0x443503['download'](path[_0x7721('0x56')](config[_0x7721('0x51')],_0x7721('0x52'),util[_0x7721('0x57')](_0x7721('0x58'),_0xbcd90e[_0x7721('0x4e')],_0xbcd90e[_0x7721('0x4f')])),util[_0x7721('0x57')](_0x7721('0x58'),_0xbcd90e[_0x7721('0x2a')],_0xbcd90e[_0x7721('0x4f')]));}return null;})['catch'](handleError(_0x443503,null));};exports[_0x7721('0x59')]=function(_0xadb365,_0x1234bc,_0x2ee3c0){var _0x15ed3b={'name':path[_0x7721('0x5a')](_0xadb365[_0x7721('0x5b')][_0x7721('0x5c')],path[_0x7721('0x5d')](_0xadb365[_0x7721('0x5b')][_0x7721('0x5c')])),'save_name':path[_0x7721('0x5a')](_0xadb365[_0x7721('0x5b')][_0x7721('0x5e')],path[_0x7721('0x5d')](_0xadb365['file']['filename'])),'original_format':path['extname'](_0xadb365[_0x7721('0x5b')]['originalname'])['substring'](0x1),'converted_format':'wav'};var _0x5d7036=path[_0x7721('0x56')](config[_0x7721('0x51')],_0x7721('0x5f'),_0xadb365['file'][_0x7721('0x5e')]);var _0x5925b7=path['join'](config['root'],_0x7721('0x52'),util['format']('%s.%s',path['basename'](_0xadb365[_0x7721('0x5b')][_0x7721('0x5e')],path[_0x7721('0x5d')](_0xadb365['file'][_0x7721('0x5e')])),_0x15ed3b[_0x7721('0x4f')]));logger[_0x7721('0x60')](_0x7721('0x61'),_0x5d7036);logger[_0x7721('0x60')](_0x7721('0x62'),_0x5925b7);try{fs[_0x7721('0x63')](_0x5d7036,parseInt(_0x7721('0x64'),0x8));var _0x127f46=sox[_0x7721('0x65')](_0x5d7036,_0x5925b7,{'sampleRate':0x1f40,'format':_0x7721('0x66'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x127f46['on'](_0x7721('0x28'),function(_0x148562){fs[_0x7721('0x67')](_0x5d7036);_0x1234bc[_0x7721('0x1a')](0x1f4)['send'](_0x148562);});_0x127f46['on'](_0x7721('0x68'),function(_0x2c93b0){_0x15ed3b[_0x7721('0x69')]=isNaN(_0x2c93b0[_0x7721('0x6a')])?null:_0x2c93b0['duration']*0x3e8;_0x15ed3b[_0x7721('0x6b')]=isNaN(_0x2c93b0[_0x7721('0x6c')])?null:_0x2c93b0['sampleCount'];_0x15ed3b[_0x7721('0x6d')]=isNaN(_0x2c93b0['channelCount'])?null:_0x2c93b0[_0x7721('0x6e')];_0x15ed3b[_0x7721('0x6f')]=isNaN(_0x2c93b0[_0x7721('0x70')])?null:_0x2c93b0[_0x7721('0x70')];_0x15ed3b[_0x7721('0x71')]=isNaN(_0x2c93b0[_0x7721('0x72')])?null:_0x2c93b0[_0x7721('0x72')];});_0x127f46['on'](_0x7721('0x73'),function(_0x4727b0){_0x15ed3b['converted_duration']=isNaN(_0x4727b0[_0x7721('0x6a')])?null:_0x4727b0[_0x7721('0x6a')]*0x3e8;_0x15ed3b[_0x7721('0x74')]=isNaN(_0x4727b0[_0x7721('0x6c')])?null:_0x4727b0[_0x7721('0x6c')];_0x15ed3b[_0x7721('0x75')]=isNaN(_0x4727b0[_0x7721('0x6e')])?null:_0x4727b0['channelCount'];_0x15ed3b[_0x7721('0x76')]=isNaN(_0x4727b0[_0x7721('0x70')])?null:_0x4727b0['bitRate'];_0x15ed3b[_0x7721('0x77')]=isNaN(_0x4727b0['sampleRate'])?null:_0x4727b0[_0x7721('0x72')];});_0x127f46['on'](_0x7721('0x19'),function(){fs[_0x7721('0x63')](_0x5925b7,parseInt(_0x7721('0x64'),0x8));return db[_0x7721('0x2c')][_0x7721('0x59')](_0x15ed3b)[_0x7721('0x24')](function(_0x5dca04){var _0xbcedbd={'role':_0xadb365[_0x7721('0x78')][_0x7721('0x79')],'userProfileId':_0xadb365['body']['userProfileId']};if(!_0xbcedbd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xbcedbd['role']==='user'){var _0x1fc5f7=_0x5dca04[_0x7721('0x7a')]({'plain':!![]});return db['UserProfileSection'][_0x7721('0x4d')]({'where':{'name':_0x7721('0x26'),'userProfileId':_0xbcedbd[_0x7721('0x7b')]},'raw':!![]})[_0x7721('0x24')](function(_0x53ebb1){if(_0x53ebb1&&_0x53ebb1[_0x7721('0x7c')]===0x0){return db[_0x7721('0x27')][_0x7721('0x59')]({'name':_0x1fc5f7[_0x7721('0x2a')],'resourceId':_0x1fc5f7['id'],'type':_0x53ebb1[_0x7721('0x2a')],'sectionId':_0x53ebb1['id']},{})['then'](function(){return _0x5dca04;});}else{return _0x5dca04;}})[_0x7721('0x4b')](function(_0x1bfb72){logger[_0x7721('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1bfb72);throw _0x1bfb72;});}return _0x5dca04;})['then'](respondWithResult(_0x1234bc,null))[_0x7721('0x4b')](handleError(_0x1234bc,null));});_0x127f46[_0x7721('0x7d')]();}catch(_0x423040){_0x1234bc[_0x7721('0x1a')](0x1f4)[_0x7721('0x7e')](_0x423040);}};exports['update']=function(_0x4ba35e,_0x263070,_0x1bd97e){return db[_0x7721('0x2c')][_0x7721('0x4d')]({'where':{'id':_0x4ba35e[_0x7721('0x48')]['id']}})[_0x7721('0x24')](handleEntityNotFound(_0x263070,null))[_0x7721('0x24')](saveUpdates(_['pick'](_0x4ba35e[_0x7721('0x78')],[_0x7721('0x2a'),_0x7721('0x7f')]),null))['then'](respondWithResult(_0x263070,null))[_0x7721('0x4b')](handleError(_0x263070,null));};exports[_0x7721('0x80')]=function(_0xdcd3e0,_0x321a40,_0x56af64){return db['Sound'][_0x7721('0x4d')]({'where':{'id':_0xdcd3e0[_0x7721('0x48')]['id']}})[_0x7721('0x24')](function(_0x42c849){if(_0x42c849){return _0x42c849[_0x7721('0x25')]();}})[_0x7721('0x24')](function(_0x59e80c){var _0x3855d5=path[_0x7721('0x56')](config[_0x7721('0x51')],'server/files/sounds/original',util[_0x7721('0x57')](_0x7721('0x58'),_0x59e80c[_0x7721('0x4e')],_0x59e80c[_0x7721('0x81')]));var _0x457d7f=path['join'](config[_0x7721('0x51')],'server/files/sounds/converted',util[_0x7721('0x57')](_0x7721('0x58'),_0x59e80c[_0x7721('0x4e')],_0x59e80c[_0x7721('0x4f')]));fs[_0x7721('0x67')](_0x3855d5);fs[_0x7721('0x67')](_0x457d7f);return _0x59e80c;})[_0x7721('0x24')](function(_0x123049){if(_0x123049){return _0x321a40[_0x7721('0x1a')](0xcc)[_0x7721('0x19')]();}})[_0x7721('0x24')](handleEntityNotFound(_0x321a40,null))['catch'](handleError(_0x321a40,null));};
\ No newline at end of file
+var _0x9957=['duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','description','delete','original_format','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','count','offset','set','Content-Range','json','reject','then','destroy','get','Sounds','UserProfileResource','error','name','send','index','Sound','rawAttributes','query','dateStart','dateEnd','filters','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','filter','map','type','field','findAll','catch','show','keys','fields','length','includeAll','find','download','save_name','converted_format','existsSync','join','server/files/sounds/converted','Sequelize','ValidationError','root','format','%s.%s','create','basename','file','originalname','extname','filename','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','wav','unlinkSync','src'];(function(_0x5e3388,_0x4c9dab){var _0x325ee3=function(_0x505d4d){while(--_0x505d4d){_0x5e3388['push'](_0x5e3388['shift']());}};_0x325ee3(++_0x4c9dab);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var pdf=require(_0x7995('0x0'));var emlformat=require(_0x7995('0x1'));var rimraf=require(_0x7995('0x2'));var zipdir=require(_0x7995('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7995('0x4'));var moment=require(_0x7995('0x5'));var BPromise=require(_0x7995('0x6'));var Mustache=require(_0x7995('0x7'));var util=require('util');var path=require(_0x7995('0x8'));var sox=require(_0x7995('0x9'));var csv=require(_0x7995('0xa'));var ejs=require(_0x7995('0xb'));var fs=require('fs');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 qs=require(_0x7995('0x13'));var logger=require(_0x7995('0x14'))(_0x7995('0x15'));var utils=require(_0x7995('0x16'));var config=require('../../config/environment');var db=require(_0x7995('0x17'))['db'];function respondWithStatusCode(_0x41c652,_0x581f22){_0x581f22=_0x581f22||0xcc;return function(_0xb0c872){if(_0xb0c872){return _0x41c652[_0x7995('0x18')](_0x581f22);}return _0x41c652[_0x7995('0x19')](_0x581f22)[_0x7995('0x1a')]();};}function respondWithResult(_0x281576,_0x23999f){_0x23999f=_0x23999f||0xc8;return function(_0x2bbe7a){if(_0x2bbe7a){return _0x281576['status'](_0x23999f)['json'](_0x2bbe7a);}};}function respondWithFilteredResult(_0x2b4e94,_0x2233dd){return function(_0x24b5bb){if(_0x24b5bb){var _0x321ae8=_0x24b5bb[_0x7995('0x1b')],_0x3f1d3e=_0x2233dd['offset'],_0x1a5310=_0x2233dd[_0x7995('0x1c')]+_0x2233dd['limit'],_0x2202ce;if(_0x1a5310>=_0x321ae8){_0x1a5310=_0x321ae8;_0x2202ce=0xc8;}else{_0x2202ce=0xce;}_0x2b4e94[_0x7995('0x19')](_0x2202ce);return _0x2b4e94[_0x7995('0x1d')](_0x7995('0x1e'),_0x3f1d3e+'-'+_0x1a5310+'/'+_0x321ae8)[_0x7995('0x1f')](_0x24b5bb);}return null;};}function patchUpdates(_0x1e1415){return function(_0x37a7d4){try{jsonpatch['apply'](_0x37a7d4,_0x1e1415,!![]);}catch(_0x54c9ae){return BPromise[_0x7995('0x20')](_0x54c9ae);}return _0x37a7d4['save']();};}function saveUpdates(_0x555f74,_0x3ec178){return function(_0x3d463e){if(_0x3d463e){return _0x3d463e['update'](_0x555f74)[_0x7995('0x21')](function(_0x51f276){return _0x51f276;});}return null;};}function removeEntity(_0x4b1a8e,_0x3e4c54){return function(_0x327b1f){if(_0x327b1f){return _0x327b1f[_0x7995('0x22')]()[_0x7995('0x21')](function(){var _0x460924=_0x327b1f[_0x7995('0x23')]({'plain':!![]});var _0x5d40ae=_0x7995('0x24');return db[_0x7995('0x25')][_0x7995('0x22')]({'where':{'type':_0x5d40ae,'resourceId':_0x460924['id']}})[_0x7995('0x21')](function(){return _0x327b1f;});})[_0x7995('0x21')](function(){_0x4b1a8e[_0x7995('0x19')](0xcc)[_0x7995('0x1a')]();});}};}function handleEntityNotFound(_0x472195,_0x59405a){return function(_0x39df42){if(!_0x39df42){_0x472195[_0x7995('0x18')](0x194);}return _0x39df42;};}function handleError(_0x401dc3,_0x268ce7){_0x268ce7=_0x268ce7||0x1f4;return function(_0x3a3fcf){logger[_0x7995('0x26')](_0x3a3fcf['stack']);if(_0x3a3fcf[_0x7995('0x27')]){delete _0x3a3fcf['name'];}_0x401dc3[_0x7995('0x19')](_0x268ce7)[_0x7995('0x28')](_0x3a3fcf);};}exports[_0x7995('0x29')]=function(_0x132a42,_0x11c1eb){var _0x4b6f99={},_0x9b2a15={},_0x514445={'count':0x0,'rows':[]};var _0x456a28=db[_0x7995('0x2a')][_0x7995('0x2b')];_0x9b2a15['model']=_['keys'](_0x456a28);var _0x48e573={'dateStart':_0x132a42[_0x7995('0x2c')][_0x7995('0x2d')],'dateEnd':_0x132a42[_0x7995('0x2c')][_0x7995('0x2e')]};delete _0x132a42[_0x7995('0x2c')][_0x7995('0x2d')];delete _0x132a42['query']['dateEnd'];_0x9b2a15[_0x7995('0x2c')]=_['keys'](_0x132a42[_0x7995('0x2c')]);_0x9b2a15[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x9b2a15[_0x7995('0x31')],_0x9b2a15[_0x7995('0x2c')]);_0x4b6f99['attributes']=_[_0x7995('0x30')](_0x9b2a15[_0x7995('0x31')],qs['fields'](_0x132a42['query']['fields']));_0x4b6f99[_0x7995('0x32')]=_0x4b6f99[_0x7995('0x32')]['length']?_0x4b6f99[_0x7995('0x32')]:_0x9b2a15['model'];if(!_0x132a42[_0x7995('0x2c')][_0x7995('0x33')](_0x7995('0x34'))){_0x4b6f99['limit']=qs['limit'](_0x132a42[_0x7995('0x2c')]['limit']);_0x4b6f99['offset']=qs[_0x7995('0x1c')](_0x132a42[_0x7995('0x2c')]['offset']);}_0x4b6f99[_0x7995('0x35')]=qs[_0x7995('0x36')](_0x132a42[_0x7995('0x2c')][_0x7995('0x36')]);_0x4b6f99[_0x7995('0x37')]=qs['filters'](_[_0x7995('0x38')](_0x132a42[_0x7995('0x2c')],_0x9b2a15[_0x7995('0x2f')]));if(_0x48e573[_0x7995('0x2d')]){if(_0x48e573['dateEnd']){_0x48e573[_0x7995('0x2e')]=moment(_0x48e573[_0x7995('0x2e')])[_0x7995('0x39')](0x1,_0x7995('0x3a'));}else{_0x48e573[_0x7995('0x2e')]=moment(_0x48e573[_0x7995('0x2d')])['add'](0x1,_0x7995('0x3a'));}_[_0x7995('0x3b')](_0x4b6f99[_0x7995('0x37')],{'createdAt':{'$gte':_0x48e573[_0x7995('0x2d')],'$lte':_0x48e573[_0x7995('0x2e')]}});}if(_0x132a42[_0x7995('0x2c')][_0x7995('0x3c')]){_0x4b6f99[_0x7995('0x37')]=_[_0x7995('0x3b')](_0x4b6f99[_0x7995('0x37')],{'$or':_[_0x7995('0x3d')](_0x456a28,function(_0x270d52){if(_0x270d52[_0x7995('0x3e')]['key']!=='VIRTUAL'){var _0x334dff={};_0x334dff[_0x270d52[_0x7995('0x3f')]]={'$like':'%'+_0x132a42['query']['filter']+'%'};return _0x334dff;}})});}_0x4b6f99=_[_0x7995('0x3b')]({},_0x4b6f99,_0x132a42['options']);var _0x504a33={'where':_0x4b6f99[_0x7995('0x37')]};return db[_0x7995('0x2a')][_0x7995('0x1b')](_0x504a33)['then'](function(_0x46ac4f){_0x514445['count']=_0x46ac4f;if(_0x132a42[_0x7995('0x2c')]['includeAll']){_0x4b6f99['include']=[{'all':!![]}];}return db[_0x7995('0x2a')][_0x7995('0x40')](_0x4b6f99);})[_0x7995('0x21')](function(_0x3f1c35){_0x514445['rows']=_0x3f1c35;return _0x514445;})[_0x7995('0x21')](respondWithFilteredResult(_0x11c1eb,_0x4b6f99))[_0x7995('0x41')](handleError(_0x11c1eb,null));};exports[_0x7995('0x42')]=function(_0x6c7bec,_0x4e09b7){var _0x5f28e7={'raw':!![],'where':{'id':_0x6c7bec['params']['id']}},_0x1c37c6={};_0x1c37c6[_0x7995('0x31')]=_['keys'](db[_0x7995('0x2a')]['rawAttributes']);_0x1c37c6[_0x7995('0x2c')]=_[_0x7995('0x43')](_0x6c7bec['query']);_0x1c37c6[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x1c37c6[_0x7995('0x31')],_0x1c37c6[_0x7995('0x2c')]);_0x5f28e7['attributes']=_[_0x7995('0x30')](_0x1c37c6[_0x7995('0x31')],qs[_0x7995('0x44')](_0x6c7bec['query'][_0x7995('0x44')]));_0x5f28e7[_0x7995('0x32')]=_0x5f28e7[_0x7995('0x32')][_0x7995('0x45')]?_0x5f28e7[_0x7995('0x32')]:_0x1c37c6['model'];if(_0x6c7bec[_0x7995('0x2c')][_0x7995('0x46')]){_0x5f28e7['include']=[{'all':!![]}];}_0x5f28e7=_[_0x7995('0x3b')]({},_0x5f28e7,_0x6c7bec['options']);return db[_0x7995('0x2a')][_0x7995('0x47')](_0x5f28e7)[_0x7995('0x21')](handleEntityNotFound(_0x4e09b7,null))[_0x7995('0x21')](respondWithResult(_0x4e09b7,null))[_0x7995('0x41')](handleError(_0x4e09b7,null));};exports[_0x7995('0x48')]=function(_0x1579b9,_0x4d46bc,_0x427dcf){return db[_0x7995('0x2a')][_0x7995('0x47')]({'where':{'id':_0x1579b9['params']['id']},'attributes':[_0x7995('0x27'),_0x7995('0x49'),_0x7995('0x4a')],'raw':!![]})['then'](handleEntityNotFound(_0x4d46bc,null))['then'](function(_0x5a592e){if(_0x5a592e){if(!fs[_0x7995('0x4b')](path[_0x7995('0x4c')](config['root'],_0x7995('0x4d'),_0x5a592e[_0x7995('0x49')]+'.'+_0x5a592e[_0x7995('0x4a')]))){throw new db[(_0x7995('0x4e'))][(_0x7995('0x4f'))]('Sound\x20not\x20found');}return _0x4d46bc[_0x7995('0x48')](path['join'](config[_0x7995('0x50')],_0x7995('0x4d'),util[_0x7995('0x51')]('%s.%s',_0x5a592e['save_name'],_0x5a592e['converted_format'])),util['format'](_0x7995('0x52'),_0x5a592e[_0x7995('0x27')],_0x5a592e[_0x7995('0x4a')]));}return null;})[_0x7995('0x41')](handleError(_0x4d46bc,null));};exports[_0x7995('0x53')]=function(_0x357e60,_0x1f4270,_0xda6ce8){var _0x328671={'name':path[_0x7995('0x54')](_0x357e60[_0x7995('0x55')][_0x7995('0x56')],path[_0x7995('0x57')](_0x357e60[_0x7995('0x55')][_0x7995('0x56')])),'save_name':path[_0x7995('0x54')](_0x357e60[_0x7995('0x55')][_0x7995('0x58')],path[_0x7995('0x57')](_0x357e60['file'][_0x7995('0x58')])),'original_format':path[_0x7995('0x57')](_0x357e60[_0x7995('0x55')][_0x7995('0x56')])['substring'](0x1),'converted_format':'wav'};var _0x402fa0=path[_0x7995('0x4c')](config[_0x7995('0x50')],_0x7995('0x59'),_0x357e60['file'][_0x7995('0x58')]);var _0x74ff38=path[_0x7995('0x4c')](config[_0x7995('0x50')],'server/files/sounds/converted',util['format'](_0x7995('0x52'),path[_0x7995('0x54')](_0x357e60[_0x7995('0x55')][_0x7995('0x58')],path[_0x7995('0x57')](_0x357e60[_0x7995('0x55')][_0x7995('0x58')])),_0x328671[_0x7995('0x4a')]));logger[_0x7995('0x5a')]('Sound\x20upload\x20filepath:\x20%s',_0x402fa0);logger[_0x7995('0x5a')](_0x7995('0x5b'),_0x74ff38);try{fs[_0x7995('0x5c')](_0x402fa0,parseInt(_0x7995('0x5d'),0x8));var _0x59c5aa=sox['transcode'](_0x402fa0,_0x74ff38,{'sampleRate':0x1f40,'format':_0x7995('0x5e'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x59c5aa['on'](_0x7995('0x26'),function(_0x47d5d7){fs[_0x7995('0x5f')](_0x402fa0);_0x1f4270[_0x7995('0x19')](0x1f4)[_0x7995('0x28')](_0x47d5d7);});_0x59c5aa['on'](_0x7995('0x60'),function(_0x32cb04){_0x328671['original_duration']=isNaN(_0x32cb04[_0x7995('0x61')])?null:_0x32cb04['duration']*0x3e8;_0x328671[_0x7995('0x62')]=isNaN(_0x32cb04[_0x7995('0x63')])?null:_0x32cb04[_0x7995('0x63')];_0x328671[_0x7995('0x64')]=isNaN(_0x32cb04[_0x7995('0x65')])?null:_0x32cb04[_0x7995('0x65')];_0x328671[_0x7995('0x66')]=isNaN(_0x32cb04[_0x7995('0x67')])?null:_0x32cb04[_0x7995('0x67')];_0x328671[_0x7995('0x68')]=isNaN(_0x32cb04[_0x7995('0x69')])?null:_0x32cb04[_0x7995('0x69')];});_0x59c5aa['on']('dest',function(_0x45351d){_0x328671[_0x7995('0x6a')]=isNaN(_0x45351d[_0x7995('0x61')])?null:_0x45351d[_0x7995('0x61')]*0x3e8;_0x328671[_0x7995('0x6b')]=isNaN(_0x45351d['sampleCount'])?null:_0x45351d['sampleCount'];_0x328671[_0x7995('0x6c')]=isNaN(_0x45351d[_0x7995('0x65')])?null:_0x45351d[_0x7995('0x65')];_0x328671[_0x7995('0x6d')]=isNaN(_0x45351d['bitRate'])?null:_0x45351d[_0x7995('0x67')];_0x328671['converted_sampleRate']=isNaN(_0x45351d['sampleRate'])?null:_0x45351d[_0x7995('0x69')];});_0x59c5aa['on'](_0x7995('0x1a'),function(){fs[_0x7995('0x5c')](_0x74ff38,parseInt(_0x7995('0x5d'),0x8));return db[_0x7995('0x2a')][_0x7995('0x53')](_0x328671)[_0x7995('0x21')](function(_0x13dc73){var _0x3fde86={'role':_0x357e60[_0x7995('0x6e')]['role'],'userProfileId':_0x357e60[_0x7995('0x6e')][_0x7995('0x6f')]};if(!_0x3fde86)throw new Error(_0x7995('0x70'));if(_0x3fde86['role']===_0x7995('0x71')){var _0x1d2f9d=_0x13dc73[_0x7995('0x23')]({'plain':!![]});return db[_0x7995('0x72')][_0x7995('0x47')]({'where':{'name':_0x7995('0x24'),'userProfileId':_0x3fde86[_0x7995('0x6f')]},'raw':!![]})[_0x7995('0x21')](function(_0x2f94c4){if(_0x2f94c4&&_0x2f94c4[_0x7995('0x73')]===0x0){return db[_0x7995('0x25')]['create']({'name':_0x1d2f9d['name'],'resourceId':_0x1d2f9d['id'],'type':_0x2f94c4[_0x7995('0x27')],'sectionId':_0x2f94c4['id']},{})[_0x7995('0x21')](function(){return _0x13dc73;});}else{return _0x13dc73;}})[_0x7995('0x41')](function(_0x35aaec){logger['error'](_0x7995('0x74'),_0x35aaec);throw _0x35aaec;});}return _0x13dc73;})[_0x7995('0x21')](respondWithResult(_0x1f4270,null))['catch'](handleError(_0x1f4270,null));});_0x59c5aa['start']();}catch(_0x3253b5){_0x1f4270[_0x7995('0x19')](0x1f4)['send'](_0x3253b5);}};exports[_0x7995('0x75')]=function(_0x5b1cba,_0x3758f9,_0xea9aba){return db['Sound']['find']({'where':{'id':_0x5b1cba[_0x7995('0x76')]['id']}})['then'](handleEntityNotFound(_0x3758f9,null))[_0x7995('0x21')](saveUpdates(_[_0x7995('0x38')](_0x5b1cba[_0x7995('0x6e')],[_0x7995('0x27'),_0x7995('0x77')]),null))[_0x7995('0x21')](respondWithResult(_0x3758f9,null))[_0x7995('0x41')](handleError(_0x3758f9,null));};exports[_0x7995('0x78')]=function(_0x29e0ee,_0x117317,_0x1ab590){return db[_0x7995('0x2a')][_0x7995('0x47')]({'where':{'id':_0x29e0ee[_0x7995('0x76')]['id']}})[_0x7995('0x21')](function(_0x3773de){if(_0x3773de){return _0x3773de[_0x7995('0x22')]();}})[_0x7995('0x21')](function(_0x2ff7ba){var _0xa2fc8e=path[_0x7995('0x4c')](config[_0x7995('0x50')],_0x7995('0x59'),util[_0x7995('0x51')](_0x7995('0x52'),_0x2ff7ba[_0x7995('0x49')],_0x2ff7ba[_0x7995('0x79')]));var _0x34724d=path['join'](config[_0x7995('0x50')],_0x7995('0x4d'),util['format']('%s.%s',_0x2ff7ba[_0x7995('0x49')],_0x2ff7ba[_0x7995('0x4a')]));fs[_0x7995('0x5f')](_0xa2fc8e);fs[_0x7995('0x5f')](_0x34724d);return _0x2ff7ba;})[_0x7995('0x21')](function(_0x2491fe){if(_0x2491fe){return _0x117317['status'](0xcc)[_0x7995('0x1a')]();}})[_0x7995('0x21')](handleEntityNotFound(_0x117317,null))[_0x7995('0x41')](handleError(_0x117317,null));};
\ No newline at end of file
index 1e4d531..9f3c9ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41b4=['util','../../config/logger','api','./sound.attributes','define','Sound'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x41b4,0x132));var _0x441b=function(_0x3f619d,_0x4762c5){_0x3f619d=_0x3f619d-0x0;var _0x1eb364=_0x41b4[_0x3f619d];return _0x1eb364;};'use strict';var _=require('lodash');var util=require(_0x441b('0x0'));var logger=require(_0x441b('0x1'))(_0x441b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x441b('0x3'));module['exports']=function(_0x58767c,_0x17bda0){return _0x58767c[_0x441b('0x4')](_0x441b('0x5'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8515=['util','../../config/logger','api','bluebird','request-promise','./sound.attributes','define','Sound','tools_sounds','lodash'];(function(_0xb1ddc7,_0x18e100){var _0x557d99=function(_0x31f670){while(--_0x31f670){_0xb1ddc7['push'](_0xb1ddc7['shift']());}};_0x557d99(++_0x18e100);}(_0x8515,0x95));var _0x5851=function(_0x44b3bd,_0x44c97d){_0x44b3bd=_0x44b3bd-0x0;var _0x1efc4a=_0x8515[_0x44b3bd];return _0x1efc4a;};'use strict';var _=require(_0x5851('0x0'));var util=require(_0x5851('0x1'));var logger=require(_0x5851('0x2'))(_0x5851('0x3'));var moment=require('moment');var BPromise=require(_0x5851('0x4'));var rp=require(_0x5851('0x5'));var attributes=require(_0x5851('0x6'));module['exports']=function(_0x1b60f7,_0xb08893){return _0x1b60f7[_0x5851('0x7')](_0x5851('0x8'),attributes,{'tableName':_0x5851('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eaf4b9b..efabb2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Sound,\x20%s,\x20%s','Sound,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowSound','Sound','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x50d154,_0x44edab){var _0x31a209=function(_0x53ef26){while(--_0x53ef26){_0x50d154['push'](_0x50d154['shift']());}};_0x31a209(++_0x44edab);}(_0xb10b,0x12a));var _0xbb10=function(_0xb8111f,_0x2b0a3b){_0xb8111f=_0xb8111f-0x0;var _0x233d1b=_0xb10b[_0xb8111f];return _0x233d1b;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xd8b0=['request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound','Sound','options','raw','where','include','model','attributes','map','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','Sound,\x20%s,\x20%s'];(function(_0x1c04a3,_0x1d1bc){var _0x185c03=function(_0x1049d6){while(--_0x1049d6){_0x1c04a3['push'](_0x1c04a3['shift']());}};_0x185c03(++_0x1d1bc);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d8b('0x2'));var db=require(_0x0d8b('0x3'))['db'];var utils=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d8b('0x7')][_0x0d8b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){return client[_0x0d8b('0x9')](_0x39f43a,_0x413284)[_0x0d8b('0xa')](function(_0x3b027f){logger[_0x0d8b('0xb')](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));logger[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x4a4470,'request\x20sent',JSON[_0x0d8b('0x10')](_0x3b027f));if(_0x3b027f['error']){if(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x12')]===0x1f4){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x58e4e2(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x284169(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}else{logger['info'](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));_0x284169(_0x3b027f[_0x0d8b('0x14')][_0x0d8b('0x13')]);}})[_0x0d8b('0x15')](function(_0x5cd485){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x5cd485);_0x58e4e2(_0x5cd485);});});}exports[_0x0d8b('0x16')]=function(_0x5fecbd){var _0x333674=this;return new Promise(function(_0x18dd2d,_0x264b39){return db[_0x0d8b('0x17')]['find']({'raw':_0x5fecbd[_0x0d8b('0x18')]?_0x5fecbd[_0x0d8b('0x18')][_0x0d8b('0x19')]===undefined?!![]:![]:!![],'where':_0x5fecbd[_0x0d8b('0x18')]?_0x5fecbd[_0x0d8b('0x18')][_0x0d8b('0x1a')]||null:null,'attributes':_0x5fecbd[_0x0d8b('0x18')]?_0x5fecbd[_0x0d8b('0x18')]['attributes']||null:null,'include':_0x5fecbd['options']?_0x5fecbd[_0x0d8b('0x18')]['include']?_['map'](_0x5fecbd['options'][_0x0d8b('0x1b')],function(_0x2b924f){return{'model':db[_0x2b924f[_0x0d8b('0x1c')]],'as':_0x2b924f['as'],'attributes':_0x2b924f[_0x0d8b('0x1d')],'include':_0x2b924f[_0x0d8b('0x1b')]?_[_0x0d8b('0x1e')](_0x2b924f[_0x0d8b('0x1b')],function(_0x4562cb){return{'model':db[_0x4562cb[_0x0d8b('0x1c')]],'as':_0x4562cb['as'],'attributes':_0x4562cb['attributes'],'include':_0x4562cb[_0x0d8b('0x1b')]?_[_0x0d8b('0x1e')](_0x4562cb['include'],function(_0xe1ef20){return{'model':db[_0xe1ef20['model']],'as':_0xe1ef20['as'],'attributes':_0xe1ef20[_0x0d8b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x0d8b('0xa')](function(_0xa2af02){logger['info']('ShowSound',_0x5fecbd);logger[_0x0d8b('0xe')](_0x0d8b('0x16'),_0x5fecbd,JSON['stringify'](_0xa2af02));_0x18dd2d(_0xa2af02);})[_0x0d8b('0x15')](function(_0x59aa83){logger[_0x0d8b('0x11')]('ShowSound',_0x59aa83[_0x0d8b('0x13')],_0x5fecbd);_0x264b39(_0x333674['error'](0x1f4,_0x59aa83[_0x0d8b('0x13')]));});});};
\ No newline at end of file
index 995a358..35fee8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb406=['get','/:id','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','isAuthenticated','index'];(function(_0xfcbf14,_0x2ec012){var _0x2d33e9=function(_0x36ef4b){while(--_0x36ef4b){_0xfcbf14['push'](_0xfcbf14['shift']());}};_0x2d33e9(++_0x2ec012);}(_0xb406,0x10c));var _0x6b40=function(_0x27efa4,_0x397801){_0x27efa4=_0x27efa4-0x0;var _0xb50a8a=_0xb406[_0x27efa4];return _0xb50a8a;};'use strict';var multer=require(_0x6b40('0x0'));var util=require(_0x6b40('0x1'));var path=require(_0x6b40('0x2'));var timeout=require(_0x6b40('0x3'));var express=require(_0x6b40('0x4'));var router=express[_0x6b40('0x5')]();var auth=require(_0x6b40('0x6'));var interaction=require(_0x6b40('0x7'));var config=require(_0x6b40('0x8'));var controller=require(_0x6b40('0x9'));router['get']('/',auth[_0x6b40('0xa')](),controller[_0x6b40('0xb')]);router[_0x6b40('0xc')](_0x6b40('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x6b40('0xe')]('/',auth[_0x6b40('0xa')](),controller[_0x6b40('0xf')]);router['put'](_0x6b40('0xd'),auth[_0x6b40('0xa')](),controller[_0x6b40('0x10')]);router[_0x6b40('0x11')](_0x6b40('0xd'),auth['isAuthenticated'](),controller[_0x6b40('0x12')]);module[_0x6b40('0x13')]=router;
\ No newline at end of file
+var _0x9990=['create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x9990,0xf6));var _0x0999=function(_0x13696a,_0x533911){_0x13696a=_0x13696a-0x0;var _0x985801=_0x9990[_0x13696a];return _0x985801;};'use strict';var multer=require('multer');var util=require(_0x0999('0x0'));var path=require(_0x0999('0x1'));var timeout=require(_0x0999('0x2'));var express=require(_0x0999('0x3'));var router=express[_0x0999('0x4')]();var auth=require(_0x0999('0x5'));var interaction=require(_0x0999('0x6'));var config=require(_0x0999('0x7'));var controller=require('./squareMessage.controller');router[_0x0999('0x8')]('/',auth[_0x0999('0x9')](),controller[_0x0999('0xa')]);router['get'](_0x0999('0xb'),auth[_0x0999('0x9')](),controller[_0x0999('0xc')]);router[_0x0999('0xd')]('/',auth[_0x0999('0x9')](),controller[_0x0999('0xe')]);router[_0x0999('0xf')]('/:id',auth[_0x0999('0x9')](),controller[_0x0999('0x10')]);router[_0x0999('0x11')]('/:id',auth[_0x0999('0x9')](),controller[_0x0999('0x12')]);module[_0x0999('0x13')]=router;
\ No newline at end of file
index 04894b3..64e0085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ea8=['medium','ENUM','out','sequelize','exports','STRING'];(function(_0x52b4d7,_0x2912d1){var _0xaaeab6=function(_0x403956){while(--_0x403956){_0x52b4d7['push'](_0x52b4d7['shift']());}};_0xaaeab6(++_0x2912d1);}(_0x2ea8,0x13b));var _0x82ea=function(_0x8a6ed5,_0x240711){_0x8a6ed5=_0x8a6ed5-0x0;var _0x266757=_0x2ea8[_0x8a6ed5];return _0x266757;};'use strict';var Sequelize=require(_0x82ea('0x0'));module[_0x82ea('0x1')]={'uniqueid':{'type':Sequelize[_0x82ea('0x2')]},'body':{'type':Sequelize['TEXT'](_0x82ea('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x82ea('0x4')]('in',_0x82ea('0x5')),'defaultValue':_0x82ea('0x5'),'allowNull':![]}};
\ No newline at end of file
+var _0x0cc6=['TEXT','medium','out','exports'];(function(_0x4f4a6c,_0x4d3bda){var _0x5523eb=function(_0x3c55d3){while(--_0x3c55d3){_0x4f4a6c['push'](_0x4f4a6c['shift']());}};_0x5523eb(++_0x4d3bda);}(_0x0cc6,0x123));var _0x60cc=function(_0x441038,_0x318ade){_0x441038=_0x441038-0x0;var _0x373b31=_0x0cc6[_0x441038];return _0x373b31;};'use strict';var Sequelize=require('sequelize');module[_0x60cc('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x60cc('0x1')](_0x60cc('0x2')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0x60cc('0x3')),'defaultValue':_0x60cc('0x3'),'allowNull':![]}};
\ No newline at end of file
index cf9bf84..033880c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['include','find','catch','create','body','html-pdf','rimraf','fast-json-patch','moment','mustache','util','path','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','end','error','stack','name','index','SquareMessage','query','dateStart','keys','filters','intersection','model','fields','attributes','nolimit','order','sort','where','pick','dateEnd','add','day','merge','filter','map','type','options','count','show','params','rawAttributes','includeAll'];(function(_0x4b1b8b,_0x371299){var _0x201614=function(_0x1499c0){while(--_0x1499c0){_0x4b1b8b['push'](_0x4b1b8b['shift']());}};_0x201614(++_0x371299);}(_0xb7e7,0x121));var _0x7b7e=function(_0x24259d,_0x64a194){_0x24259d=_0x24259d-0x0;var _0x5a701=_0xb7e7[_0x24259d];return _0x5a701;};'use strict';var pdf=require(_0x7b7e('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x7b7e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7b7e('0x2'));var rp=require('request-promise');var moment=require(_0x7b7e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7b7e('0x4'));var util=require(_0x7b7e('0x5'));var path=require(_0x7b7e('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7b7e('0x7'));var fs=require('fs');var _=require(_0x7b7e('0x8'));var squel=require(_0x7b7e('0x9'));var crypto=require('crypto');var jsforce=require(_0x7b7e('0xa'));var deskjs=require(_0x7b7e('0xb'));var toCsv=require(_0x7b7e('0xc'));var querystring=require(_0x7b7e('0xd'));var Papa=require(_0x7b7e('0xe'));var Redis=require(_0x7b7e('0xf'));var qs=require(_0x7b7e('0x10'));var logger=require('../../config/logger')(_0x7b7e('0x11'));var utils=require(_0x7b7e('0x12'));var config=require(_0x7b7e('0x13'));var db=require(_0x7b7e('0x14'))['db'];function respondWithStatusCode(_0xd581fb,_0x18a1de){_0x18a1de=_0x18a1de||0xcc;return function(_0x36d2a3){if(_0x36d2a3){return _0xd581fb[_0x7b7e('0x15')](_0x18a1de);}return _0xd581fb[_0x7b7e('0x16')](_0x18a1de)['end']();};}function respondWithResult(_0x267446,_0x430eab){_0x430eab=_0x430eab||0xc8;return function(_0x50d7d2){if(_0x50d7d2){return _0x267446[_0x7b7e('0x16')](_0x430eab)['json'](_0x50d7d2);}};}function respondWithFilteredResult(_0x4c6011,_0x2889ed){return function(_0xd304f5){if(_0xd304f5){var _0xf067da=_0xd304f5['count'],_0x457ec5=_0x2889ed[_0x7b7e('0x17')],_0x3d2fb2=_0x2889ed[_0x7b7e('0x17')]+_0x2889ed[_0x7b7e('0x18')],_0x5703fd;if(_0x3d2fb2>=_0xf067da){_0x3d2fb2=_0xf067da;_0x5703fd=0xc8;}else{_0x5703fd=0xce;}_0x4c6011[_0x7b7e('0x16')](_0x5703fd);return _0x4c6011[_0x7b7e('0x19')](_0x7b7e('0x1a'),_0x457ec5+'-'+_0x3d2fb2+'/'+_0xf067da)[_0x7b7e('0x1b')](_0xd304f5);}return null;};}function patchUpdates(_0x200ef7){return function(_0x2acb8c){try{jsonpatch[_0x7b7e('0x1c')](_0x2acb8c,_0x200ef7,!![]);}catch(_0x12e8e9){return BPromise[_0x7b7e('0x1d')](_0x12e8e9);}return _0x2acb8c[_0x7b7e('0x1e')]();};}function saveUpdates(_0x3bec7d,_0x9776c3){return function(_0x864287){if(_0x864287){return _0x864287[_0x7b7e('0x1f')](_0x3bec7d)['then'](function(_0x69262b){return _0x69262b;});}return null;};}function removeEntity(_0x43db4f,_0x24718c){return function(_0x4c0647){if(_0x4c0647){return _0x4c0647[_0x7b7e('0x20')]()[_0x7b7e('0x21')](function(){_0x43db4f[_0x7b7e('0x16')](0xcc)[_0x7b7e('0x22')]();});}};}function handleEntityNotFound(_0x2b7211,_0x303d8c){return function(_0x28bf43){if(!_0x28bf43){_0x2b7211[_0x7b7e('0x15')](0x194);}return _0x28bf43;};}function handleError(_0x53bbb3,_0x5d6215){_0x5d6215=_0x5d6215||0x1f4;return function(_0x4a836a){logger[_0x7b7e('0x23')](_0x4a836a[_0x7b7e('0x24')]);if(_0x4a836a[_0x7b7e('0x25')]){delete _0x4a836a['name'];}_0x53bbb3['status'](_0x5d6215)['send'](_0x4a836a);};}exports[_0x7b7e('0x26')]=function(_0x3c8192,_0x16a3c7){var _0x7aa71={},_0x3ceaf5={},_0x48fad1={'count':0x0,'rows':[]};var _0x6a1e71=db[_0x7b7e('0x27')]['rawAttributes'];_0x3ceaf5['model']=_['keys'](_0x6a1e71);var _0x12ef0b={'dateStart':_0x3c8192[_0x7b7e('0x28')]['dateStart'],'dateEnd':_0x3c8192[_0x7b7e('0x28')]['dateEnd']};delete _0x3c8192[_0x7b7e('0x28')][_0x7b7e('0x29')];delete _0x3c8192[_0x7b7e('0x28')]['dateEnd'];_0x3ceaf5[_0x7b7e('0x28')]=_[_0x7b7e('0x2a')](_0x3c8192[_0x7b7e('0x28')]);_0x3ceaf5[_0x7b7e('0x2b')]=_[_0x7b7e('0x2c')](_0x3ceaf5['model'],_0x3ceaf5[_0x7b7e('0x28')]);_0x7aa71['attributes']=_[_0x7b7e('0x2c')](_0x3ceaf5[_0x7b7e('0x2d')],qs[_0x7b7e('0x2e')](_0x3c8192[_0x7b7e('0x28')][_0x7b7e('0x2e')]));_0x7aa71[_0x7b7e('0x2f')]=_0x7aa71[_0x7b7e('0x2f')]['length']?_0x7aa71['attributes']:_0x3ceaf5[_0x7b7e('0x2d')];if(!_0x3c8192[_0x7b7e('0x28')]['hasOwnProperty'](_0x7b7e('0x30'))){_0x7aa71[_0x7b7e('0x18')]=qs[_0x7b7e('0x18')](_0x3c8192['query'][_0x7b7e('0x18')]);_0x7aa71[_0x7b7e('0x17')]=qs[_0x7b7e('0x17')](_0x3c8192[_0x7b7e('0x28')][_0x7b7e('0x17')]);}_0x7aa71[_0x7b7e('0x31')]=qs[_0x7b7e('0x32')](_0x3c8192[_0x7b7e('0x28')][_0x7b7e('0x32')]);_0x7aa71[_0x7b7e('0x33')]=qs[_0x7b7e('0x2b')](_[_0x7b7e('0x34')](_0x3c8192[_0x7b7e('0x28')],_0x3ceaf5[_0x7b7e('0x2b')]));if(_0x12ef0b[_0x7b7e('0x29')]){if(_0x12ef0b[_0x7b7e('0x35')]){_0x12ef0b['dateEnd']=moment(_0x12ef0b[_0x7b7e('0x35')])[_0x7b7e('0x36')](0x1,_0x7b7e('0x37'));}else{_0x12ef0b[_0x7b7e('0x35')]=moment(_0x12ef0b[_0x7b7e('0x29')])[_0x7b7e('0x36')](0x1,_0x7b7e('0x37'));}_[_0x7b7e('0x38')](_0x7aa71[_0x7b7e('0x33')],{'createdAt':{'$gte':_0x12ef0b[_0x7b7e('0x29')],'$lte':_0x12ef0b['dateEnd']}});}if(_0x3c8192[_0x7b7e('0x28')][_0x7b7e('0x39')]){_0x7aa71[_0x7b7e('0x33')]=_[_0x7b7e('0x38')](_0x7aa71['where'],{'$or':_[_0x7b7e('0x3a')](_0x6a1e71,function(_0x35b31a){if(_0x35b31a[_0x7b7e('0x3b')]['key']!=='VIRTUAL'){var _0x22651e={};_0x22651e[_0x35b31a['field']]={'$like':'%'+_0x3c8192[_0x7b7e('0x28')][_0x7b7e('0x39')]+'%'};return _0x22651e;}})});}_0x7aa71=_['merge']({},_0x7aa71,_0x3c8192[_0x7b7e('0x3c')]);var _0x2074d1={'where':_0x7aa71[_0x7b7e('0x33')]};return db[_0x7b7e('0x27')][_0x7b7e('0x3d')](_0x2074d1)[_0x7b7e('0x21')](function(_0xc888e4){_0x48fad1[_0x7b7e('0x3d')]=_0xc888e4;if(_0x3c8192[_0x7b7e('0x28')]['includeAll']){_0x7aa71['include']=[{'all':!![]}];}return db[_0x7b7e('0x27')]['findAll'](_0x7aa71);})[_0x7b7e('0x21')](function(_0x5e8b5d){_0x48fad1['rows']=_0x5e8b5d;return _0x48fad1;})[_0x7b7e('0x21')](respondWithFilteredResult(_0x16a3c7,_0x7aa71))['catch'](handleError(_0x16a3c7,null));};exports[_0x7b7e('0x3e')]=function(_0x52051c,_0xa8521d){var _0x3e58be={'raw':!![],'where':{'id':_0x52051c[_0x7b7e('0x3f')]['id']}},_0x7ea84c={};_0x7ea84c['model']=_[_0x7b7e('0x2a')](db[_0x7b7e('0x27')][_0x7b7e('0x40')]);_0x7ea84c[_0x7b7e('0x28')]=_[_0x7b7e('0x2a')](_0x52051c[_0x7b7e('0x28')]);_0x7ea84c['filters']=_['intersection'](_0x7ea84c['model'],_0x7ea84c[_0x7b7e('0x28')]);_0x3e58be[_0x7b7e('0x2f')]=_[_0x7b7e('0x2c')](_0x7ea84c[_0x7b7e('0x2d')],qs[_0x7b7e('0x2e')](_0x52051c[_0x7b7e('0x28')]['fields']));_0x3e58be[_0x7b7e('0x2f')]=_0x3e58be[_0x7b7e('0x2f')]['length']?_0x3e58be['attributes']:_0x7ea84c[_0x7b7e('0x2d')];if(_0x52051c[_0x7b7e('0x28')][_0x7b7e('0x41')]){_0x3e58be[_0x7b7e('0x42')]=[{'all':!![]}];}_0x3e58be=_[_0x7b7e('0x38')]({},_0x3e58be,_0x52051c[_0x7b7e('0x3c')]);return db['SquareMessage'][_0x7b7e('0x43')](_0x3e58be)['then'](handleEntityNotFound(_0xa8521d,null))[_0x7b7e('0x21')](respondWithResult(_0xa8521d,null))[_0x7b7e('0x44')](handleError(_0xa8521d,null));};exports[_0x7b7e('0x45')]=function(_0x5874e2,_0x58e4e6){return db[_0x7b7e('0x27')][_0x7b7e('0x45')](_0x5874e2[_0x7b7e('0x46')],{})[_0x7b7e('0x21')](respondWithResult(_0x58e4e6,0xc9))[_0x7b7e('0x44')](handleError(_0x58e4e6,null));};exports['update']=function(_0x14001c,_0x270c4a){if(_0x14001c[_0x7b7e('0x46')]['id']){delete _0x14001c[_0x7b7e('0x46')]['id'];}return db[_0x7b7e('0x27')]['find']({'where':{'id':_0x14001c[_0x7b7e('0x3f')]['id']}})[_0x7b7e('0x21')](handleEntityNotFound(_0x270c4a,null))[_0x7b7e('0x21')](saveUpdates(_0x14001c[_0x7b7e('0x46')],null))[_0x7b7e('0x21')](respondWithResult(_0x270c4a,null))[_0x7b7e('0x44')](handleError(_0x270c4a,null));};exports[_0x7b7e('0x20')]=function(_0x4a7be0,_0x433ec7){return db['SquareMessage'][_0x7b7e('0x43')]({'where':{'id':_0x4a7be0[_0x7b7e('0x3f')]['id']}})['then'](handleEntityNotFound(_0x433ec7,null))[_0x7b7e('0x21')](removeEntity(_0x433ec7,null))[_0x7b7e('0x44')](handleError(_0x433ec7,null));};
\ No newline at end of file
+var _0x3423=['reject','then','sendStatus','stack','SquareMessage','rawAttributes','model','query','dateStart','dateEnd','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','pick','add','day','merge','filter','map','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','catch','create','update','body','find','destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../mysqldb','status','end','json','count','offset','set','Content-Range','apply'];(function(_0x47d6dc,_0xc036cc){var _0x1a1c93=function(_0x18ec96){while(--_0x18ec96){_0x47d6dc['push'](_0x47d6dc['shift']());}};_0x1a1c93(++_0xc036cc);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0x3342('0x0'));var zipdir=require(_0x3342('0x1'));var jsonpatch=require(_0x3342('0x2'));var rp=require(_0x3342('0x3'));var moment=require(_0x3342('0x4'));var BPromise=require(_0x3342('0x5'));var Mustache=require(_0x3342('0x6'));var util=require(_0x3342('0x7'));var path=require(_0x3342('0x8'));var sox=require(_0x3342('0x9'));var csv=require(_0x3342('0xa'));var ejs=require(_0x3342('0xb'));var fs=require('fs');var _=require(_0x3342('0xc'));var squel=require(_0x3342('0xd'));var crypto=require(_0x3342('0xe'));var jsforce=require(_0x3342('0xf'));var deskjs=require(_0x3342('0x10'));var toCsv=require(_0x3342('0xa'));var querystring=require(_0x3342('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0x3342('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x3342('0x13'))['db'];function respondWithStatusCode(_0x2f3c47,_0x51496d){_0x51496d=_0x51496d||0xcc;return function(_0x2d14c4){if(_0x2d14c4){return _0x2f3c47['sendStatus'](_0x51496d);}return _0x2f3c47[_0x3342('0x14')](_0x51496d)[_0x3342('0x15')]();};}function respondWithResult(_0x592ba8,_0x3e418d){_0x3e418d=_0x3e418d||0xc8;return function(_0x334f0e){if(_0x334f0e){return _0x592ba8[_0x3342('0x14')](_0x3e418d)[_0x3342('0x16')](_0x334f0e);}};}function respondWithFilteredResult(_0x61fcc0,_0x104077){return function(_0x34a306){if(_0x34a306){var _0x59be1d=_0x34a306[_0x3342('0x17')],_0x3e44f3=_0x104077[_0x3342('0x18')],_0x19bd71=_0x104077['offset']+_0x104077['limit'],_0x49afe3;if(_0x19bd71>=_0x59be1d){_0x19bd71=_0x59be1d;_0x49afe3=0xc8;}else{_0x49afe3=0xce;}_0x61fcc0[_0x3342('0x14')](_0x49afe3);return _0x61fcc0[_0x3342('0x19')](_0x3342('0x1a'),_0x3e44f3+'-'+_0x19bd71+'/'+_0x59be1d)[_0x3342('0x16')](_0x34a306);}return null;};}function patchUpdates(_0x12947a){return function(_0x156c24){try{jsonpatch[_0x3342('0x1b')](_0x156c24,_0x12947a,!![]);}catch(_0x3ebf6b){return BPromise[_0x3342('0x1c')](_0x3ebf6b);}return _0x156c24['save']();};}function saveUpdates(_0x283fc1,_0xda235a){return function(_0x2f6395){if(_0x2f6395){return _0x2f6395['update'](_0x283fc1)[_0x3342('0x1d')](function(_0x463324){return _0x463324;});}return null;};}function removeEntity(_0x52f7b7,_0xe774b7){return function(_0x28528b){if(_0x28528b){return _0x28528b['destroy']()[_0x3342('0x1d')](function(){_0x52f7b7['status'](0xcc)[_0x3342('0x15')]();});}};}function handleEntityNotFound(_0x38994e,_0xa23053){return function(_0x2dbad1){if(!_0x2dbad1){_0x38994e[_0x3342('0x1e')](0x194);}return _0x2dbad1;};}function handleError(_0x2925a2,_0x26eb87){_0x26eb87=_0x26eb87||0x1f4;return function(_0x2d8622){logger['error'](_0x2d8622[_0x3342('0x1f')]);if(_0x2d8622['name']){delete _0x2d8622['name'];}_0x2925a2[_0x3342('0x14')](_0x26eb87)['send'](_0x2d8622);};}exports['index']=function(_0x247ee4,_0x58f0f5){var _0x37df78={},_0x543ec3={},_0x524286={'count':0x0,'rows':[]};var _0x55cddd=db[_0x3342('0x20')][_0x3342('0x21')];_0x543ec3[_0x3342('0x22')]=_['keys'](_0x55cddd);var _0xc275a1={'dateStart':_0x247ee4[_0x3342('0x23')][_0x3342('0x24')],'dateEnd':_0x247ee4[_0x3342('0x23')]['dateEnd']};delete _0x247ee4[_0x3342('0x23')][_0x3342('0x24')];delete _0x247ee4[_0x3342('0x23')][_0x3342('0x25')];_0x543ec3[_0x3342('0x23')]=_[_0x3342('0x26')](_0x247ee4[_0x3342('0x23')]);_0x543ec3['filters']=_[_0x3342('0x27')](_0x543ec3['model'],_0x543ec3[_0x3342('0x23')]);_0x37df78[_0x3342('0x28')]=_['intersection'](_0x543ec3[_0x3342('0x22')],qs[_0x3342('0x29')](_0x247ee4[_0x3342('0x23')][_0x3342('0x29')]));_0x37df78['attributes']=_0x37df78[_0x3342('0x28')][_0x3342('0x2a')]?_0x37df78[_0x3342('0x28')]:_0x543ec3[_0x3342('0x22')];if(!_0x247ee4[_0x3342('0x23')][_0x3342('0x2b')](_0x3342('0x2c'))){_0x37df78[_0x3342('0x2d')]=qs[_0x3342('0x2d')](_0x247ee4[_0x3342('0x23')][_0x3342('0x2d')]);_0x37df78[_0x3342('0x18')]=qs['offset'](_0x247ee4['query'][_0x3342('0x18')]);}_0x37df78['order']=qs[_0x3342('0x2e')](_0x247ee4[_0x3342('0x23')][_0x3342('0x2e')]);_0x37df78[_0x3342('0x2f')]=qs[_0x3342('0x30')](_[_0x3342('0x31')](_0x247ee4[_0x3342('0x23')],_0x543ec3['filters']));if(_0xc275a1[_0x3342('0x24')]){if(_0xc275a1[_0x3342('0x25')]){_0xc275a1[_0x3342('0x25')]=moment(_0xc275a1[_0x3342('0x25')])[_0x3342('0x32')](0x1,'day');}else{_0xc275a1[_0x3342('0x25')]=moment(_0xc275a1['dateStart'])[_0x3342('0x32')](0x1,_0x3342('0x33'));}_[_0x3342('0x34')](_0x37df78[_0x3342('0x2f')],{'createdAt':{'$gte':_0xc275a1['dateStart'],'$lte':_0xc275a1[_0x3342('0x25')]}});}if(_0x247ee4['query'][_0x3342('0x35')]){_0x37df78[_0x3342('0x2f')]=_[_0x3342('0x34')](_0x37df78[_0x3342('0x2f')],{'$or':_[_0x3342('0x36')](_0x55cddd,function(_0xf83613){if(_0xf83613[_0x3342('0x37')]['key']!==_0x3342('0x38')){var _0x355e83={};_0x355e83[_0xf83613['field']]={'$like':'%'+_0x247ee4[_0x3342('0x23')][_0x3342('0x35')]+'%'};return _0x355e83;}})});}_0x37df78=_['merge']({},_0x37df78,_0x247ee4[_0x3342('0x39')]);var _0x29f0a0={'where':_0x37df78['where']};return db['SquareMessage']['count'](_0x29f0a0)[_0x3342('0x1d')](function(_0x41e727){_0x524286['count']=_0x41e727;if(_0x247ee4[_0x3342('0x23')][_0x3342('0x3a')]){_0x37df78[_0x3342('0x3b')]=[{'all':!![]}];}return db[_0x3342('0x20')][_0x3342('0x3c')](_0x37df78);})[_0x3342('0x1d')](function(_0x34de7b){_0x524286[_0x3342('0x3d')]=_0x34de7b;return _0x524286;})['then'](respondWithFilteredResult(_0x58f0f5,_0x37df78))['catch'](handleError(_0x58f0f5,null));};exports[_0x3342('0x3e')]=function(_0x7341fa,_0x474196){var _0xee717e={'raw':!![],'where':{'id':_0x7341fa[_0x3342('0x3f')]['id']}},_0x717946={};_0x717946['model']=_[_0x3342('0x26')](db[_0x3342('0x20')][_0x3342('0x21')]);_0x717946[_0x3342('0x23')]=_[_0x3342('0x26')](_0x7341fa[_0x3342('0x23')]);_0x717946['filters']=_[_0x3342('0x27')](_0x717946['model'],_0x717946[_0x3342('0x23')]);_0xee717e[_0x3342('0x28')]=_[_0x3342('0x27')](_0x717946[_0x3342('0x22')],qs['fields'](_0x7341fa[_0x3342('0x23')][_0x3342('0x29')]));_0xee717e['attributes']=_0xee717e[_0x3342('0x28')][_0x3342('0x2a')]?_0xee717e[_0x3342('0x28')]:_0x717946[_0x3342('0x22')];if(_0x7341fa['query'][_0x3342('0x3a')]){_0xee717e[_0x3342('0x3b')]=[{'all':!![]}];}_0xee717e=_['merge']({},_0xee717e,_0x7341fa[_0x3342('0x39')]);return db['SquareMessage']['find'](_0xee717e)[_0x3342('0x1d')](handleEntityNotFound(_0x474196,null))[_0x3342('0x1d')](respondWithResult(_0x474196,null))[_0x3342('0x40')](handleError(_0x474196,null));};exports[_0x3342('0x41')]=function(_0x23925e,_0x171387){return db[_0x3342('0x20')]['create'](_0x23925e['body'],{})[_0x3342('0x1d')](respondWithResult(_0x171387,0xc9))['catch'](handleError(_0x171387,null));};exports[_0x3342('0x42')]=function(_0x5e1202,_0x4c9214){if(_0x5e1202['body']['id']){delete _0x5e1202[_0x3342('0x43')]['id'];}return db[_0x3342('0x20')][_0x3342('0x44')]({'where':{'id':_0x5e1202[_0x3342('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4c9214,null))[_0x3342('0x1d')](saveUpdates(_0x5e1202[_0x3342('0x43')],null))['then'](respondWithResult(_0x4c9214,null))[_0x3342('0x40')](handleError(_0x4c9214,null));};exports[_0x3342('0x45')]=function(_0x43c27a,_0x4c0dc0){return db[_0x3342('0x20')][_0x3342('0x44')]({'where':{'id':_0x43c27a[_0x3342('0x3f')]['id']}})[_0x3342('0x1d')](handleEntityNotFound(_0x4c0dc0,null))[_0x3342('0x1d')](removeEntity(_0x4c0dc0,null))['catch'](handleError(_0x4c0dc0,null));};
\ No newline at end of file
index a819a54..9a2c473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47db=['define','SquareMessage','square_messages','../../config/logger','api','moment','bluebird','./squareMessage.attributes','exports'];(function(_0x20fefb,_0x396a56){var _0x3a4354=function(_0x5bc94b){while(--_0x5bc94b){_0x20fefb['push'](_0x20fefb['shift']());}};_0x3a4354(++_0x396a56);}(_0x47db,0x17d));var _0xb47d=function(_0x57fdae,_0x1ec9a5){_0x57fdae=_0x57fdae-0x0;var _0x311430=_0x47db[_0x57fdae];return _0x311430;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb47d('0x0'))(_0xb47d('0x1'));var moment=require(_0xb47d('0x2'));var BPromise=require(_0xb47d('0x3'));var rp=require('request-promise');var attributes=require(_0xb47d('0x4'));module[_0xb47d('0x5')]=function(_0x3ca26d,_0x5c325d){return _0x3ca26d[_0xb47d('0x6')](_0xb47d('0x7'),attributes,{'tableName':_0xb47d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x979e=['util','../../config/logger','api','bluebird','request-promise','./squareMessage.attributes','exports','define','SquareMessage','square_messages'];(function(_0x2786ea,_0x16c3c3){var _0x5c38e5=function(_0x5a53c5){while(--_0x5a53c5){_0x2786ea['push'](_0x2786ea['shift']());}};_0x5c38e5(++_0x16c3c3);}(_0x979e,0x1b8));var _0xe979=function(_0x4e3bb5,_0x190041){_0x4e3bb5=_0x4e3bb5-0x0;var _0x2fab02=_0x979e[_0x4e3bb5];return _0x2fab02;};'use strict';var _=require('lodash');var util=require(_0xe979('0x0'));var logger=require(_0xe979('0x1'))(_0xe979('0x2'));var moment=require('moment');var BPromise=require(_0xe979('0x3'));var rp=require(_0xe979('0x4'));var attributes=require(_0xe979('0x5'));module[_0xe979('0x6')]=function(_0x1a3fa9,_0x386b53){return _0x1a3fa9[_0xe979('0x7')](_0xe979('0x8'),attributes,{'tableName':_0xe979('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9216d17..a38c616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e65=['result','catch','CreateSquareMessage','create','body','options','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','then','debug','request\x20sent','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3e65,0xde));var _0x53e6=function(_0x46767d,_0x16c8b3){_0x46767d=_0x46767d-0x0;var _0x40044c=_0x3e65[_0x46767d];return _0x40044c;};'use strict';var _=require(_0x53e6('0x0'));var util=require('util');var moment=require(_0x53e6('0x1'));var BPromise=require(_0x53e6('0x2'));var rs=require(_0x53e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x53e6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x53e6('0x5'))('rpc');var config=require(_0x53e6('0x6'));var jayson=require(_0x53e6('0x7'));var client=jayson[_0x53e6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5f377f,_0x3bc436,_0x17a288){return new BPromise(function(_0x27160c,_0x5260ff){return client['request'](_0x5f377f,_0x17a288)[_0x53e6('0x9')](function(_0x5339a2){logger['info']('SquareMessage,\x20%s,\x20%s',_0x3bc436,'request\x20sent');logger[_0x53e6('0xa')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x3bc436,_0x53e6('0xb'),JSON[_0x53e6('0xc')](_0x5339a2));if(_0x5339a2[_0x53e6('0xd')]){if(_0x5339a2[_0x53e6('0xd')][_0x53e6('0xe')]===0x1f4){logger[_0x53e6('0xd')](_0x53e6('0xf'),_0x3bc436,_0x5339a2[_0x53e6('0xd')]['message']);return _0x5260ff(_0x5339a2[_0x53e6('0xd')]['message']);}logger[_0x53e6('0xd')](_0x53e6('0xf'),_0x3bc436,_0x5339a2[_0x53e6('0xd')][_0x53e6('0x10')]);return _0x27160c(_0x5339a2[_0x53e6('0xd')][_0x53e6('0x10')]);}else{logger[_0x53e6('0x11')](_0x53e6('0xf'),_0x3bc436,_0x53e6('0xb'));_0x27160c(_0x5339a2[_0x53e6('0x12')][_0x53e6('0x10')]);}})[_0x53e6('0x13')](function(_0x5e1bc4){logger['error']('SquareMessage,\x20%s,\x20%s',_0x3bc436,_0x5e1bc4);_0x5260ff(_0x5e1bc4);});});}exports[_0x53e6('0x14')]=function(_0x4f4ac5){var _0x16e5d5=this;return new Promise(function(_0x50d30c,_0x37df49){return db['SquareMessage'][_0x53e6('0x15')](_0x4f4ac5[_0x53e6('0x16')],{'raw':_0x4f4ac5[_0x53e6('0x17')]?_0x4f4ac5['options']['raw']===undefined?!![]:![]:!![]})[_0x53e6('0x9')](function(_0x231544){logger[_0x53e6('0x11')](_0x53e6('0x14'),_0x4f4ac5);logger[_0x53e6('0xa')]('CreateSquareMessage',_0x4f4ac5,JSON[_0x53e6('0xc')](_0x231544));_0x50d30c(_0x231544);})[_0x53e6('0x13')](function(_0x348b87){logger[_0x53e6('0xd')](_0x53e6('0x14'),_0x348b87[_0x53e6('0x10')],_0x4f4ac5);_0x37df49(_0x16e5d5['error'](0x1f4,_0x348b87['message']));});});};
\ No newline at end of file
+var _0x6bc3=['catch','CreateSquareMessage','SquareMessage','create','body','debug','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result'];(function(_0x3d1257,_0x182816){var _0x2dd9bb=function(_0x154115){while(--_0x154115){_0x3d1257['push'](_0x3d1257['shift']());}};_0x2dd9bb(++_0x182816);}(_0x6bc3,0x1f4));var _0x36bc=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6bc3[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x36bc('0x0'));var util=require(_0x36bc('0x1'));var moment=require('moment');var BPromise=require(_0x36bc('0x2'));var rs=require(_0x36bc('0x3'));var fs=require('fs');var Redis=require(_0x36bc('0x4'));var db=require(_0x36bc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x36bc('0x6'))(_0x36bc('0x7'));var config=require(_0x36bc('0x8'));var jayson=require(_0x36bc('0x9'));var client=jayson[_0x36bc('0xa')][_0x36bc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xeca71b,_0x490c37,_0x2dd4dc){return new BPromise(function(_0x26b806,_0x29f11d){return client[_0x36bc('0xc')](_0xeca71b,_0x2dd4dc)[_0x36bc('0xd')](function(_0x24db36){logger['info'](_0x36bc('0xe'),_0x490c37,_0x36bc('0xf'));logger['debug'](_0x36bc('0x10'),_0x490c37,_0x36bc('0xf'),JSON['stringify'](_0x24db36));if(_0x24db36['error']){if(_0x24db36[_0x36bc('0x11')][_0x36bc('0x12')]===0x1f4){logger[_0x36bc('0x11')](_0x36bc('0xe'),_0x490c37,_0x24db36[_0x36bc('0x11')][_0x36bc('0x13')]);return _0x29f11d(_0x24db36['error'][_0x36bc('0x13')]);}logger[_0x36bc('0x11')](_0x36bc('0xe'),_0x490c37,_0x24db36['error']['message']);return _0x26b806(_0x24db36['error']['message']);}else{logger[_0x36bc('0x14')](_0x36bc('0xe'),_0x490c37,_0x36bc('0xf'));_0x26b806(_0x24db36[_0x36bc('0x15')][_0x36bc('0x13')]);}})[_0x36bc('0x16')](function(_0x2962f2){logger[_0x36bc('0x11')](_0x36bc('0xe'),_0x490c37,_0x2962f2);_0x29f11d(_0x2962f2);});});}exports[_0x36bc('0x17')]=function(_0x28d7da){var _0x3674ef=this;return new Promise(function(_0x8bb5d2,_0x58c65c){return db[_0x36bc('0x18')][_0x36bc('0x19')](_0x28d7da[_0x36bc('0x1a')],{'raw':_0x28d7da['options']?_0x28d7da['options']['raw']===undefined?!![]:![]:!![]})[_0x36bc('0xd')](function(_0x4be3ce){logger[_0x36bc('0x14')](_0x36bc('0x17'),_0x28d7da);logger[_0x36bc('0x1b')]('CreateSquareMessage',_0x28d7da,JSON[_0x36bc('0x1c')](_0x4be3ce));_0x8bb5d2(_0x4be3ce);})[_0x36bc('0x16')](function(_0x2405fc){logger['error'](_0x36bc('0x17'),_0x2405fc[_0x36bc('0x13')],_0x28d7da);_0x58c65c(_0x3674ef[_0x36bc('0x11')](0x1f4,_0x2405fc[_0x36bc('0x13')]));});});};
\ No newline at end of file
index efaa1d1..7b44336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a25=['../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','15s','test','post','create','put','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x1cff8f,_0x49db79){var _0x577ec7=function(_0x19d6a0){while(--_0x19d6a0){_0x1cff8f['push'](_0x1cff8f['shift']());}};_0x577ec7(++_0x49db79);}(_0x3a25,0x15d));var _0x53a2=function(_0x3b46e2,_0x5181f5){_0x3b46e2=_0x3b46e2-0x0;var _0x2bee6d=_0x3a25[_0x3b46e2];return _0x2bee6d;};'use strict';var multer=require(_0x53a2('0x0'));var util=require(_0x53a2('0x1'));var path=require(_0x53a2('0x2'));var timeout=require(_0x53a2('0x3'));var express=require(_0x53a2('0x4'));var router=express[_0x53a2('0x5')]();var auth=require(_0x53a2('0x6'));var interaction=require(_0x53a2('0x7'));var config=require(_0x53a2('0x8'));var controller=require(_0x53a2('0x9'));router[_0x53a2('0xa')]('/',auth[_0x53a2('0xb')](),controller[_0x53a2('0xc')]);router[_0x53a2('0xa')](_0x53a2('0xd'),auth['isAuthenticated'](),controller[_0x53a2('0xe')]);router['get'](_0x53a2('0xf'),auth[_0x53a2('0xb')](),timeout(_0x53a2('0x10')),controller[_0x53a2('0x11')]);router[_0x53a2('0x12')]('/',auth[_0x53a2('0xb')](),controller[_0x53a2('0x13')]);router[_0x53a2('0x14')](_0x53a2('0xd'),auth[_0x53a2('0xb')](),controller['update']);router['delete'](_0x53a2('0xd'),auth[_0x53a2('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x8db0=['get','show','/:id/test','post','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','isAuthenticated'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x8db0,0x65));var _0x08db=function(_0x4a9beb,_0x159482){_0x4a9beb=_0x4a9beb-0x0;var _0x2d4c58=_0x8db0[_0x4a9beb];return _0x2d4c58;};'use strict';var multer=require(_0x08db('0x0'));var util=require(_0x08db('0x1'));var path=require('path');var timeout=require(_0x08db('0x2'));var express=require(_0x08db('0x3'));var router=express[_0x08db('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0x08db('0x5'));var config=require('../../config/environment');var controller=require('./squareOdbc.controller');router['get']('/',auth[_0x08db('0x6')](),controller['index']);router[_0x08db('0x7')]('/:id',auth[_0x08db('0x6')](),controller[_0x08db('0x8')]);router[_0x08db('0x7')](_0x08db('0x9'),auth[_0x08db('0x6')](),timeout('15s'),controller['test']);router[_0x08db('0xa')]('/',auth[_0x08db('0x6')](),controller[_0x08db('0xb')]);router[_0x08db('0xc')](_0x08db('0xd'),auth[_0x08db('0x6')](),controller[_0x08db('0xe')]);router[_0x08db('0xf')](_0x08db('0xd'),auth[_0x08db('0x6')](),controller[_0x08db('0x10')]);module[_0x08db('0x11')]=router;
\ No newline at end of file
index aff213a..1849d98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1667=['sequelize','exports','STRING','name'];(function(_0xb12603,_0x142505){var _0x2bdc24=function(_0x5dca90){while(--_0x5dca90){_0xb12603['push'](_0xb12603['shift']());}};_0x2bdc24(++_0x142505);}(_0x1667,0xbc));var _0x7166=function(_0x4fa166,_0x58b7fb){_0x4fa166=_0x4fa166-0x0;var _0x5dd974=_0x1667[_0x4fa166];return _0x5dd974;};'use strict';var Sequelize=require(_0x7166('0x0'));module[_0x7166('0x1')]={'name':{'type':Sequelize[_0x7166('0x2')],'unique':_0x7166('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0x7166('0x2')]},'description':{'type':Sequelize[_0x7166('0x2')]}};
\ No newline at end of file
+var _0x6047=['exports','STRING','name'];(function(_0x37e553,_0x3fe6fb){var _0x2edff7=function(_0x1f4e47){while(--_0x1f4e47){_0x37e553['push'](_0x37e553['shift']());}};_0x2edff7(++_0x3fe6fb);}(_0x6047,0x75));var _0x7604=function(_0xcf3920,_0x20b569){_0xcf3920=_0xcf3920-0x0;var _0x2222c6=_0x6047[_0xcf3920];return _0x2222c6;};'use strict';var Sequelize=require('sequelize');module[_0x7604('0x0')]={'name':{'type':Sequelize[_0x7604('0x1')],'unique':_0x7604('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x7604('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4931c2d..9d8c508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedbf=['sendStatus','status','json','offset','set','apply','update','then','destroy','UserProfileResource','end','name','index','SquareOdbc','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','filters','add','day','merge','filter','where','map','type','key','VIRTUAL','field','options','count','include','findAll','catch','show','params','includeAll','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','test','dsn','odbc','closeSync','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x13594e,_0x6f0ed0){var _0x1a4f42=function(_0x30b064){while(--_0x30b064){_0x13594e['push'](_0x13594e['shift']());}};_0x1a4f42(++_0x6f0ed0);}(_0xedbf,0xf1));var _0xfedb=function(_0x341d59,_0x2815ae){_0x341d59=_0x341d59-0x0;var _0x50727a=_0xedbf[_0x341d59];return _0x50727a;};'use strict';var pdf=require(_0xfedb('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xfedb('0x1'));var zipdir=require(_0xfedb('0x2'));var jsonpatch=require(_0xfedb('0x3'));var rp=require(_0xfedb('0x4'));var moment=require(_0xfedb('0x5'));var BPromise=require(_0xfedb('0x6'));var Mustache=require('mustache');var util=require(_0xfedb('0x7'));var path=require(_0xfedb('0x8'));var sox=require(_0xfedb('0x9'));var csv=require(_0xfedb('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xfedb('0xb'));var squel=require(_0xfedb('0xc'));var crypto=require(_0xfedb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xfedb('0xe'));var toCsv=require(_0xfedb('0xa'));var querystring=require(_0xfedb('0xf'));var Papa=require(_0xfedb('0x10'));var Redis=require(_0xfedb('0x11'));var qs=require(_0xfedb('0x12'));var logger=require(_0xfedb('0x13'))('api');var utils=require(_0xfedb('0x14'));var config=require(_0xfedb('0x15'));var db=require(_0xfedb('0x16'))['db'];function respondWithStatusCode(_0x407a7d,_0x33504e){_0x33504e=_0x33504e||0xcc;return function(_0x1a2c78){if(_0x1a2c78){return _0x407a7d[_0xfedb('0x17')](_0x33504e);}return _0x407a7d[_0xfedb('0x18')](_0x33504e)['end']();};}function respondWithResult(_0x59e357,_0x26a7c3){_0x26a7c3=_0x26a7c3||0xc8;return function(_0x1e9fd9){if(_0x1e9fd9){return _0x59e357[_0xfedb('0x18')](_0x26a7c3)[_0xfedb('0x19')](_0x1e9fd9);}};}function respondWithFilteredResult(_0x49bfd3,_0x290bbf){return function(_0x4a0ee5){if(_0x4a0ee5){var _0x3759fb=_0x4a0ee5['count'],_0x2fb08a=_0x290bbf[_0xfedb('0x1a')],_0x1676db=_0x290bbf[_0xfedb('0x1a')]+_0x290bbf['limit'],_0x47232c;if(_0x1676db>=_0x3759fb){_0x1676db=_0x3759fb;_0x47232c=0xc8;}else{_0x47232c=0xce;}_0x49bfd3[_0xfedb('0x18')](_0x47232c);return _0x49bfd3[_0xfedb('0x1b')]('Content-Range',_0x2fb08a+'-'+_0x1676db+'/'+_0x3759fb)[_0xfedb('0x19')](_0x4a0ee5);}return null;};}function patchUpdates(_0x1fea21){return function(_0xf10bfb){try{jsonpatch[_0xfedb('0x1c')](_0xf10bfb,_0x1fea21,!![]);}catch(_0x79f465){return BPromise['reject'](_0x79f465);}return _0xf10bfb['save']();};}function saveUpdates(_0x4e5a87,_0x4bcfe3){return function(_0x3dbfa0){if(_0x3dbfa0){return _0x3dbfa0[_0xfedb('0x1d')](_0x4e5a87)[_0xfedb('0x1e')](function(_0x197f71){return _0x197f71;});}return null;};}function removeEntity(_0x1a2649,_0x3d85c2){return function(_0x26e8c7){if(_0x26e8c7){return _0x26e8c7[_0xfedb('0x1f')]()[_0xfedb('0x1e')](function(){var _0x181341=_0x26e8c7['get']({'plain':!![]});var _0x614fd1='ODBC';return db[_0xfedb('0x20')]['destroy']({'where':{'type':_0x614fd1,'resourceId':_0x181341['id']}})['then'](function(){return _0x26e8c7;});})[_0xfedb('0x1e')](function(){_0x1a2649[_0xfedb('0x18')](0xcc)[_0xfedb('0x21')]();});}};}function handleEntityNotFound(_0x257c2f,_0x5a161e){return function(_0x5e59dd){if(!_0x5e59dd){_0x257c2f[_0xfedb('0x17')](0x194);}return _0x5e59dd;};}function handleError(_0x4fb6a2,_0x2827ad){_0x2827ad=_0x2827ad||0x1f4;return function(_0x4208d3){logger['error'](_0x4208d3['stack']);if(_0x4208d3[_0xfedb('0x22')]){delete _0x4208d3['name'];}_0x4fb6a2[_0xfedb('0x18')](_0x2827ad)['send'](_0x4208d3);};}exports[_0xfedb('0x23')]=function(_0x425c71,_0x137cdd){var _0x1317cc={},_0x49e118={},_0x555668={'count':0x0,'rows':[]};var _0x48a1ff=db[_0xfedb('0x24')][_0xfedb('0x25')];_0x49e118[_0xfedb('0x26')]=_[_0xfedb('0x27')](_0x48a1ff);var _0x7ee55b={'dateStart':_0x425c71[_0xfedb('0x28')][_0xfedb('0x29')],'dateEnd':_0x425c71['query']['dateEnd']};delete _0x425c71[_0xfedb('0x28')][_0xfedb('0x29')];delete _0x425c71['query'][_0xfedb('0x2a')];_0x49e118['query']=_['keys'](_0x425c71['query']);_0x49e118['filters']=_[_0xfedb('0x2b')](_0x49e118[_0xfedb('0x26')],_0x49e118[_0xfedb('0x28')]);_0x1317cc['attributes']=_['intersection'](_0x49e118['model'],qs[_0xfedb('0x2c')](_0x425c71['query']['fields']));_0x1317cc[_0xfedb('0x2d')]=_0x1317cc[_0xfedb('0x2d')][_0xfedb('0x2e')]?_0x1317cc[_0xfedb('0x2d')]:_0x49e118['model'];if(!_0x425c71['query'][_0xfedb('0x2f')](_0xfedb('0x30'))){_0x1317cc[_0xfedb('0x31')]=qs[_0xfedb('0x31')](_0x425c71['query'][_0xfedb('0x31')]);_0x1317cc[_0xfedb('0x1a')]=qs[_0xfedb('0x1a')](_0x425c71[_0xfedb('0x28')][_0xfedb('0x1a')]);}_0x1317cc[_0xfedb('0x32')]=qs['sort'](_0x425c71['query'][_0xfedb('0x33')]);_0x1317cc['where']=qs[_0xfedb('0x34')](_['pick'](_0x425c71[_0xfedb('0x28')],_0x49e118['filters']));if(_0x7ee55b[_0xfedb('0x29')]){if(_0x7ee55b[_0xfedb('0x2a')]){_0x7ee55b[_0xfedb('0x2a')]=moment(_0x7ee55b[_0xfedb('0x2a')])['add'](0x1,'day');}else{_0x7ee55b[_0xfedb('0x2a')]=moment(_0x7ee55b['dateStart'])[_0xfedb('0x35')](0x1,_0xfedb('0x36'));}_[_0xfedb('0x37')](_0x1317cc['where'],{'createdAt':{'$gte':_0x7ee55b[_0xfedb('0x29')],'$lte':_0x7ee55b[_0xfedb('0x2a')]}});}if(_0x425c71[_0xfedb('0x28')][_0xfedb('0x38')]){_0x1317cc['where']=_[_0xfedb('0x37')](_0x1317cc[_0xfedb('0x39')],{'$or':_[_0xfedb('0x3a')](_0x48a1ff,function(_0x54ce1){if(_0x54ce1[_0xfedb('0x3b')][_0xfedb('0x3c')]!==_0xfedb('0x3d')){var _0x2771ca={};_0x2771ca[_0x54ce1[_0xfedb('0x3e')]]={'$like':'%'+_0x425c71[_0xfedb('0x28')]['filter']+'%'};return _0x2771ca;}})});}_0x1317cc=_[_0xfedb('0x37')]({},_0x1317cc,_0x425c71[_0xfedb('0x3f')]);var _0x489bbd={'where':_0x1317cc[_0xfedb('0x39')]};return db[_0xfedb('0x24')][_0xfedb('0x40')](_0x489bbd)[_0xfedb('0x1e')](function(_0x7b089){_0x555668[_0xfedb('0x40')]=_0x7b089;if(_0x425c71[_0xfedb('0x28')]['includeAll']){_0x1317cc[_0xfedb('0x41')]=[{'all':!![]}];}return db[_0xfedb('0x24')][_0xfedb('0x42')](_0x1317cc);})[_0xfedb('0x1e')](function(_0x44ad15){_0x555668['rows']=_0x44ad15;return _0x555668;})['then'](respondWithFilteredResult(_0x137cdd,_0x1317cc))[_0xfedb('0x43')](handleError(_0x137cdd,null));};exports[_0xfedb('0x44')]=function(_0x13c911,_0x422835){var _0x29a486={'raw':!![],'where':{'id':_0x13c911[_0xfedb('0x45')]['id']}},_0x5093bd={};_0x5093bd[_0xfedb('0x26')]=_['keys'](db[_0xfedb('0x24')][_0xfedb('0x25')]);_0x5093bd[_0xfedb('0x28')]=_[_0xfedb('0x27')](_0x13c911[_0xfedb('0x28')]);_0x5093bd[_0xfedb('0x34')]=_[_0xfedb('0x2b')](_0x5093bd[_0xfedb('0x26')],_0x5093bd['query']);_0x29a486['attributes']=_['intersection'](_0x5093bd[_0xfedb('0x26')],qs['fields'](_0x13c911['query'][_0xfedb('0x2c')]));_0x29a486[_0xfedb('0x2d')]=_0x29a486[_0xfedb('0x2d')][_0xfedb('0x2e')]?_0x29a486[_0xfedb('0x2d')]:_0x5093bd[_0xfedb('0x26')];if(_0x13c911[_0xfedb('0x28')][_0xfedb('0x46')]){_0x29a486[_0xfedb('0x41')]=[{'all':!![]}];}_0x29a486=_['merge']({},_0x29a486,_0x13c911[_0xfedb('0x3f')]);return db[_0xfedb('0x24')]['find'](_0x29a486)[_0xfedb('0x1e')](handleEntityNotFound(_0x422835,null))[_0xfedb('0x1e')](respondWithResult(_0x422835,null))[_0xfedb('0x43')](handleError(_0x422835,null));};exports[_0xfedb('0x47')]=function(_0x3f1bb7,_0x824e5f){return db[_0xfedb('0x24')]['create'](_0x3f1bb7[_0xfedb('0x48')],{})[_0xfedb('0x1e')](function(_0x4e730e){var _0xb9f79f=_0x3f1bb7[_0xfedb('0x49')][_0xfedb('0x4a')]({'plain':!![]});if(!_0xb9f79f)throw new Error(_0xfedb('0x4b'));if(_0xb9f79f[_0xfedb('0x4c')]===_0xfedb('0x49')){var _0x5c040a=_0x4e730e['get']({'plain':!![]});var _0x4db93c=_0xfedb('0x4d');return db[_0xfedb('0x4e')]['find']({'where':{'name':_0x4db93c,'userProfileId':_0xb9f79f[_0xfedb('0x4f')]},'raw':!![]})[_0xfedb('0x1e')](function(_0x37c9ab){if(_0x37c9ab&&_0x37c9ab[_0xfedb('0x50')]===0x0){return db['UserProfileResource'][_0xfedb('0x47')]({'name':_0x5c040a[_0xfedb('0x22')],'resourceId':_0x5c040a['id'],'type':_0x37c9ab[_0xfedb('0x22')],'sectionId':_0x37c9ab['id']},{})[_0xfedb('0x1e')](function(){return _0x4e730e;});}else{return _0x4e730e;}})[_0xfedb('0x43')](function(_0x2f5154){logger[_0xfedb('0x51')](_0xfedb('0x52'),_0x2f5154);throw _0x2f5154;});}return _0x4e730e;})[_0xfedb('0x1e')](respondWithResult(_0x824e5f,0xc9))[_0xfedb('0x43')](handleError(_0x824e5f,null));};exports[_0xfedb('0x1d')]=function(_0x3900cb,_0x56e42f){if(_0x3900cb[_0xfedb('0x48')]['id']){delete _0x3900cb[_0xfedb('0x48')]['id'];}return db[_0xfedb('0x24')][_0xfedb('0x53')]({'where':{'id':_0x3900cb['params']['id']}})[_0xfedb('0x1e')](handleEntityNotFound(_0x56e42f,null))[_0xfedb('0x1e')](saveUpdates(_0x3900cb[_0xfedb('0x48')],null))[_0xfedb('0x1e')](respondWithResult(_0x56e42f,null))[_0xfedb('0x43')](handleError(_0x56e42f,null));};exports[_0xfedb('0x1f')]=function(_0x4e69e8,_0x1f328b){return db['SquareOdbc'][_0xfedb('0x53')]({'where':{'id':_0x4e69e8['params']['id']}})['then'](handleEntityNotFound(_0x1f328b,null))[_0xfedb('0x1e')](removeEntity(_0x1f328b,null))[_0xfedb('0x43')](handleError(_0x1f328b,null));};exports[_0xfedb('0x54')]=function(_0x19c05b,_0x4640b9,_0x5f1929){var _0x4633dc;return db[_0xfedb('0x24')][_0xfedb('0x53')]({'where':{'id':_0x19c05b[_0xfedb('0x45')]['id']},'attributes':['id',_0xfedb('0x55')]})[_0xfedb('0x1e')](handleEntityNotFound(_0x4640b9,null))[_0xfedb('0x1e')](function(_0x34a6fb){if(_0x34a6fb){var _0x25d616=require(_0xfedb('0x56'))();_0x25d616['openSync'](_0x34a6fb[_0xfedb('0x55')]);_0x25d616[_0xfedb('0x57')]();return _0x34a6fb;}})['then'](respondWithResult(_0x4640b9,null))[_0xfedb('0x43')](handleError(_0x4640b9,null));};
\ No newline at end of file
+var _0xcea0=['query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','add','day','merge','filter','type','key','VIRTUAL','field','includeAll','include','findAll','catch','show','params','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','odbc','openSync','closeSync','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','querystring','papaparse','ioredis','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','ODBC','UserProfileResource','error','stack','send','index','SquareOdbc','rawAttributes','model','keys','dateStart'];(function(_0x7e9e04,_0xb3b10){var _0x1e501b=function(_0x885d17){while(--_0x885d17){_0x7e9e04['push'](_0x7e9e04['shift']());}};_0x1e501b(++_0xb3b10);}(_0xcea0,0x198));var _0x0cea=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xcea0[_0x4792c8];return _0x35edb1;};'use strict';var pdf=require(_0x0cea('0x0'));var emlformat=require(_0x0cea('0x1'));var rimraf=require(_0x0cea('0x2'));var zipdir=require(_0x0cea('0x3'));var jsonpatch=require(_0x0cea('0x4'));var rp=require(_0x0cea('0x5'));var moment=require(_0x0cea('0x6'));var BPromise=require(_0x0cea('0x7'));var Mustache=require(_0x0cea('0x8'));var util=require(_0x0cea('0x9'));var path=require(_0x0cea('0xa'));var sox=require(_0x0cea('0xb'));var csv=require(_0x0cea('0xc'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x0cea('0xd'));var squel=require(_0x0cea('0xe'));var crypto=require('crypto');var jsforce=require(_0x0cea('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0cea('0xc'));var querystring=require(_0x0cea('0x10'));var Papa=require(_0x0cea('0x11'));var Redis=require(_0x0cea('0x12'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x0cea('0x13'));var utils=require('../../config/utils');var config=require(_0x0cea('0x14'));var db=require(_0x0cea('0x15'))['db'];function respondWithStatusCode(_0x4ce08e,_0x236090){_0x236090=_0x236090||0xcc;return function(_0x33edce){if(_0x33edce){return _0x4ce08e[_0x0cea('0x16')](_0x236090);}return _0x4ce08e[_0x0cea('0x17')](_0x236090)[_0x0cea('0x18')]();};}function respondWithResult(_0x46171d,_0xa35560){_0xa35560=_0xa35560||0xc8;return function(_0x3f94d0){if(_0x3f94d0){return _0x46171d[_0x0cea('0x17')](_0xa35560)[_0x0cea('0x19')](_0x3f94d0);}};}function respondWithFilteredResult(_0x472b20,_0xfc777c){return function(_0x4176de){if(_0x4176de){var _0x5c6e62=_0x4176de[_0x0cea('0x1a')],_0x5507b4=_0xfc777c[_0x0cea('0x1b')],_0x3cda71=_0xfc777c['offset']+_0xfc777c[_0x0cea('0x1c')],_0x468dd9;if(_0x3cda71>=_0x5c6e62){_0x3cda71=_0x5c6e62;_0x468dd9=0xc8;}else{_0x468dd9=0xce;}_0x472b20[_0x0cea('0x17')](_0x468dd9);return _0x472b20[_0x0cea('0x1d')](_0x0cea('0x1e'),_0x5507b4+'-'+_0x3cda71+'/'+_0x5c6e62)[_0x0cea('0x19')](_0x4176de);}return null;};}function patchUpdates(_0x517b91){return function(_0x48efd1){try{jsonpatch[_0x0cea('0x1f')](_0x48efd1,_0x517b91,!![]);}catch(_0x1a4ba7){return BPromise['reject'](_0x1a4ba7);}return _0x48efd1[_0x0cea('0x20')]();};}function saveUpdates(_0x8c6ba,_0x14335b){return function(_0x348575){if(_0x348575){return _0x348575[_0x0cea('0x21')](_0x8c6ba)[_0x0cea('0x22')](function(_0x1aa72f){return _0x1aa72f;});}return null;};}function removeEntity(_0x3b1b0c,_0x565250){return function(_0x2114ab){if(_0x2114ab){return _0x2114ab[_0x0cea('0x23')]()[_0x0cea('0x22')](function(){var _0x295fae=_0x2114ab['get']({'plain':!![]});var _0x5c07bc=_0x0cea('0x24');return db[_0x0cea('0x25')][_0x0cea('0x23')]({'where':{'type':_0x5c07bc,'resourceId':_0x295fae['id']}})[_0x0cea('0x22')](function(){return _0x2114ab;});})[_0x0cea('0x22')](function(){_0x3b1b0c['status'](0xcc)[_0x0cea('0x18')]();});}};}function handleEntityNotFound(_0x1e5a8b,_0x3f8ac2){return function(_0x13bdcb){if(!_0x13bdcb){_0x1e5a8b[_0x0cea('0x16')](0x194);}return _0x13bdcb;};}function handleError(_0x4fee9f,_0x3ac600){_0x3ac600=_0x3ac600||0x1f4;return function(_0x29eec7){logger[_0x0cea('0x26')](_0x29eec7[_0x0cea('0x27')]);if(_0x29eec7['name']){delete _0x29eec7['name'];}_0x4fee9f[_0x0cea('0x17')](_0x3ac600)[_0x0cea('0x28')](_0x29eec7);};}exports[_0x0cea('0x29')]=function(_0x26c06f,_0x15f1b7){var _0x50af80={},_0x1ef185={},_0x5e5edc={'count':0x0,'rows':[]};var _0x29c51f=db[_0x0cea('0x2a')][_0x0cea('0x2b')];_0x1ef185[_0x0cea('0x2c')]=_[_0x0cea('0x2d')](_0x29c51f);var _0xd13265={'dateStart':_0x26c06f['query'][_0x0cea('0x2e')],'dateEnd':_0x26c06f[_0x0cea('0x2f')][_0x0cea('0x30')]};delete _0x26c06f['query'][_0x0cea('0x2e')];delete _0x26c06f[_0x0cea('0x2f')][_0x0cea('0x30')];_0x1ef185[_0x0cea('0x2f')]=_[_0x0cea('0x2d')](_0x26c06f['query']);_0x1ef185[_0x0cea('0x31')]=_[_0x0cea('0x32')](_0x1ef185[_0x0cea('0x2c')],_0x1ef185[_0x0cea('0x2f')]);_0x50af80[_0x0cea('0x33')]=_[_0x0cea('0x32')](_0x1ef185['model'],qs[_0x0cea('0x34')](_0x26c06f[_0x0cea('0x2f')][_0x0cea('0x34')]));_0x50af80[_0x0cea('0x33')]=_0x50af80['attributes'][_0x0cea('0x35')]?_0x50af80[_0x0cea('0x33')]:_0x1ef185[_0x0cea('0x2c')];if(!_0x26c06f[_0x0cea('0x2f')][_0x0cea('0x36')]('nolimit')){_0x50af80[_0x0cea('0x1c')]=qs[_0x0cea('0x1c')](_0x26c06f[_0x0cea('0x2f')][_0x0cea('0x1c')]);_0x50af80[_0x0cea('0x1b')]=qs[_0x0cea('0x1b')](_0x26c06f[_0x0cea('0x2f')][_0x0cea('0x1b')]);}_0x50af80[_0x0cea('0x37')]=qs[_0x0cea('0x38')](_0x26c06f['query'][_0x0cea('0x38')]);_0x50af80[_0x0cea('0x39')]=qs[_0x0cea('0x31')](_[_0x0cea('0x3a')](_0x26c06f[_0x0cea('0x2f')],_0x1ef185[_0x0cea('0x31')]));if(_0xd13265[_0x0cea('0x2e')]){if(_0xd13265[_0x0cea('0x30')]){_0xd13265[_0x0cea('0x30')]=moment(_0xd13265['dateEnd'])[_0x0cea('0x3b')](0x1,_0x0cea('0x3c'));}else{_0xd13265[_0x0cea('0x30')]=moment(_0xd13265[_0x0cea('0x2e')])[_0x0cea('0x3b')](0x1,_0x0cea('0x3c'));}_[_0x0cea('0x3d')](_0x50af80[_0x0cea('0x39')],{'createdAt':{'$gte':_0xd13265['dateStart'],'$lte':_0xd13265[_0x0cea('0x30')]}});}if(_0x26c06f[_0x0cea('0x2f')][_0x0cea('0x3e')]){_0x50af80[_0x0cea('0x39')]=_['merge'](_0x50af80[_0x0cea('0x39')],{'$or':_['map'](_0x29c51f,function(_0x479f51){if(_0x479f51[_0x0cea('0x3f')][_0x0cea('0x40')]!==_0x0cea('0x41')){var _0x122240={};_0x122240[_0x479f51[_0x0cea('0x42')]]={'$like':'%'+_0x26c06f[_0x0cea('0x2f')][_0x0cea('0x3e')]+'%'};return _0x122240;}})});}_0x50af80=_[_0x0cea('0x3d')]({},_0x50af80,_0x26c06f['options']);var _0x4a6761={'where':_0x50af80[_0x0cea('0x39')]};return db[_0x0cea('0x2a')][_0x0cea('0x1a')](_0x4a6761)[_0x0cea('0x22')](function(_0xb61a9f){_0x5e5edc[_0x0cea('0x1a')]=_0xb61a9f;if(_0x26c06f['query'][_0x0cea('0x43')]){_0x50af80[_0x0cea('0x44')]=[{'all':!![]}];}return db[_0x0cea('0x2a')][_0x0cea('0x45')](_0x50af80);})[_0x0cea('0x22')](function(_0x18516b){_0x5e5edc['rows']=_0x18516b;return _0x5e5edc;})[_0x0cea('0x22')](respondWithFilteredResult(_0x15f1b7,_0x50af80))[_0x0cea('0x46')](handleError(_0x15f1b7,null));};exports[_0x0cea('0x47')]=function(_0x39c69b,_0x34b4ca){var _0x31a7a8={'raw':!![],'where':{'id':_0x39c69b[_0x0cea('0x48')]['id']}},_0x136abe={};_0x136abe[_0x0cea('0x2c')]=_[_0x0cea('0x2d')](db[_0x0cea('0x2a')][_0x0cea('0x2b')]);_0x136abe['query']=_[_0x0cea('0x2d')](_0x39c69b[_0x0cea('0x2f')]);_0x136abe[_0x0cea('0x31')]=_['intersection'](_0x136abe[_0x0cea('0x2c')],_0x136abe['query']);_0x31a7a8[_0x0cea('0x33')]=_['intersection'](_0x136abe[_0x0cea('0x2c')],qs[_0x0cea('0x34')](_0x39c69b['query'][_0x0cea('0x34')]));_0x31a7a8[_0x0cea('0x33')]=_0x31a7a8[_0x0cea('0x33')][_0x0cea('0x35')]?_0x31a7a8['attributes']:_0x136abe[_0x0cea('0x2c')];if(_0x39c69b['query']['includeAll']){_0x31a7a8[_0x0cea('0x44')]=[{'all':!![]}];}_0x31a7a8=_[_0x0cea('0x3d')]({},_0x31a7a8,_0x39c69b[_0x0cea('0x49')]);return db[_0x0cea('0x2a')][_0x0cea('0x4a')](_0x31a7a8)[_0x0cea('0x22')](handleEntityNotFound(_0x34b4ca,null))[_0x0cea('0x22')](respondWithResult(_0x34b4ca,null))[_0x0cea('0x46')](handleError(_0x34b4ca,null));};exports[_0x0cea('0x4b')]=function(_0x1f971b,_0x2d9123){return db[_0x0cea('0x2a')][_0x0cea('0x4b')](_0x1f971b[_0x0cea('0x4c')],{})[_0x0cea('0x22')](function(_0x51cfb9){var _0x5c0283=_0x1f971b[_0x0cea('0x4d')][_0x0cea('0x4e')]({'plain':!![]});if(!_0x5c0283)throw new Error(_0x0cea('0x4f'));if(_0x5c0283[_0x0cea('0x50')]===_0x0cea('0x4d')){var _0x3aee93=_0x51cfb9[_0x0cea('0x4e')]({'plain':!![]});var _0x50d04f=_0x0cea('0x24');return db[_0x0cea('0x51')][_0x0cea('0x4a')]({'where':{'name':_0x50d04f,'userProfileId':_0x5c0283[_0x0cea('0x52')]},'raw':!![]})[_0x0cea('0x22')](function(_0x492620){if(_0x492620&&_0x492620[_0x0cea('0x53')]===0x0){return db[_0x0cea('0x25')]['create']({'name':_0x3aee93[_0x0cea('0x54')],'resourceId':_0x3aee93['id'],'type':_0x492620[_0x0cea('0x54')],'sectionId':_0x492620['id']},{})['then'](function(){return _0x51cfb9;});}else{return _0x51cfb9;}})[_0x0cea('0x46')](function(_0x36616e){logger[_0x0cea('0x26')](_0x0cea('0x55'),_0x36616e);throw _0x36616e;});}return _0x51cfb9;})['then'](respondWithResult(_0x2d9123,0xc9))['catch'](handleError(_0x2d9123,null));};exports[_0x0cea('0x21')]=function(_0x54643d,_0x542234){if(_0x54643d['body']['id']){delete _0x54643d['body']['id'];}return db[_0x0cea('0x2a')]['find']({'where':{'id':_0x54643d[_0x0cea('0x48')]['id']}})[_0x0cea('0x22')](handleEntityNotFound(_0x542234,null))[_0x0cea('0x22')](saveUpdates(_0x54643d[_0x0cea('0x4c')],null))['then'](respondWithResult(_0x542234,null))['catch'](handleError(_0x542234,null));};exports[_0x0cea('0x23')]=function(_0x38d88e,_0x551a27){return db['SquareOdbc'][_0x0cea('0x4a')]({'where':{'id':_0x38d88e[_0x0cea('0x48')]['id']}})[_0x0cea('0x22')](handleEntityNotFound(_0x551a27,null))[_0x0cea('0x22')](removeEntity(_0x551a27,null))['catch'](handleError(_0x551a27,null));};exports[_0x0cea('0x56')]=function(_0x4624f9,_0x520d6b,_0x2a01c5){var _0x17a9e1;return db[_0x0cea('0x2a')][_0x0cea('0x4a')]({'where':{'id':_0x4624f9[_0x0cea('0x48')]['id']},'attributes':['id',_0x0cea('0x57')]})[_0x0cea('0x22')](handleEntityNotFound(_0x520d6b,null))[_0x0cea('0x22')](function(_0xb8ab58){if(_0xb8ab58){var _0x590d63=require(_0x0cea('0x58'))();_0x590d63[_0x0cea('0x59')](_0xb8ab58[_0x0cea('0x57')]);_0x590d63[_0x0cea('0x5a')]();return _0xb8ab58;}})[_0x0cea('0x22')](respondWithResult(_0x520d6b,null))[_0x0cea('0x46')](handleError(_0x520d6b,null));};
\ No newline at end of file
index 9699906..65d8c43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['bluebird','request-promise','./squareOdbc.attributes','exports','SquareOdbc','lodash','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda55,0x6d));var _0x5da5=function(_0x5d7185,_0x31fa85){_0x5d7185=_0x5d7185-0x0;var _0x2909e9=_0xda55[_0x5d7185];return _0x2909e9;};'use strict';var _=require(_0x5da5('0x0'));var util=require(_0x5da5('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x5da5('0x2'));var BPromise=require(_0x5da5('0x3'));var rp=require(_0x5da5('0x4'));var attributes=require(_0x5da5('0x5'));module[_0x5da5('0x6')]=function(_0x5da254,_0x3400e9){return _0x5da254['define'](_0x5da5('0x7'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x91a7=['util','../../config/logger','api','bluebird','./squareOdbc.attributes','define','square_odbc'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x91a7,0xe7));var _0x791a=function(_0x423a05,_0xbc2e26){_0x423a05=_0x423a05-0x0;var _0x33f2a1=_0x91a7[_0x423a05];return _0x33f2a1;};'use strict';var _=require('lodash');var util=require(_0x791a('0x0'));var logger=require(_0x791a('0x1'))(_0x791a('0x2'));var moment=require('moment');var BPromise=require(_0x791a('0x3'));var rp=require('request-promise');var attributes=require(_0x791a('0x4'));module['exports']=function(_0x50ab29,_0x32fe2b){return _0x50ab29[_0x791a('0x5')]('SquareOdbc',attributes,{'tableName':_0x791a('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d90e6a..2a76e3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39c1=['include','map','model','then','stringify','lodash','util','../../config/utils','jayson/promise','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','SquareOdbc,\x20%s,\x20%s','message','info','catch','ShowSquareOdbc','options','where','attributes'];(function(_0x85e5c4,_0x31c41e){var _0x5f5b8a=function(_0x3dfa9d){while(--_0x3dfa9d){_0x85e5c4['push'](_0x85e5c4['shift']());}};_0x5f5b8a(++_0x31c41e);}(_0x39c1,0x17b));var _0x139c=function(_0x16ca8b,_0x551ee8){_0x16ca8b=_0x16ca8b-0x0;var _0x123101=_0x39c1[_0x16ca8b];return _0x123101;};'use strict';var _=require(_0x139c('0x0'));var util=require(_0x139c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x139c('0x2'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x139c('0x3'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x26cb59,_0x3586cb,_0x434f6d){return new BPromise(function(_0x2c4c41,_0x38a7dd){return client['request'](_0x26cb59,_0x434f6d)['then'](function(_0x49889a){logger['info']('SquareOdbc,\x20%s,\x20%s',_0x3586cb,_0x139c('0x4'));logger[_0x139c('0x5')](_0x139c('0x6'),_0x3586cb,_0x139c('0x4'),JSON['stringify'](_0x49889a));if(_0x49889a[_0x139c('0x7')]){if(_0x49889a[_0x139c('0x7')][_0x139c('0x8')]===0x1f4){logger[_0x139c('0x7')](_0x139c('0x9'),_0x3586cb,_0x49889a[_0x139c('0x7')]['message']);return _0x38a7dd(_0x49889a[_0x139c('0x7')][_0x139c('0xa')]);}logger['error'](_0x139c('0x9'),_0x3586cb,_0x49889a[_0x139c('0x7')][_0x139c('0xa')]);return _0x2c4c41(_0x49889a[_0x139c('0x7')][_0x139c('0xa')]);}else{logger[_0x139c('0xb')](_0x139c('0x9'),_0x3586cb,_0x139c('0x4'));_0x2c4c41(_0x49889a['result'][_0x139c('0xa')]);}})[_0x139c('0xc')](function(_0x38845f){logger[_0x139c('0x7')]('SquareOdbc,\x20%s,\x20%s',_0x3586cb,_0x38845f);_0x38a7dd(_0x38845f);});});}exports[_0x139c('0xd')]=function(_0x2eb303){var _0x54ba00=this;return new Promise(function(_0x18687f,_0x21194b){return db['SquareOdbc']['find']({'raw':_0x2eb303[_0x139c('0xe')]?_0x2eb303['options']['raw']===undefined?!![]:![]:!![],'where':_0x2eb303[_0x139c('0xe')]?_0x2eb303[_0x139c('0xe')][_0x139c('0xf')]||null:null,'attributes':_0x2eb303[_0x139c('0xe')]?_0x2eb303[_0x139c('0xe')][_0x139c('0x10')]||null:null,'include':_0x2eb303['options']?_0x2eb303[_0x139c('0xe')][_0x139c('0x11')]?_[_0x139c('0x12')](_0x2eb303['options']['include'],function(_0x4130be){return{'model':db[_0x4130be[_0x139c('0x13')]],'as':_0x4130be['as'],'attributes':_0x4130be[_0x139c('0x10')],'include':_0x4130be[_0x139c('0x11')]?_[_0x139c('0x12')](_0x4130be[_0x139c('0x11')],function(_0x521681){return{'model':db[_0x521681[_0x139c('0x13')]],'as':_0x521681['as'],'attributes':_0x521681[_0x139c('0x10')],'include':_0x521681['include']?_[_0x139c('0x12')](_0x521681['include'],function(_0x1de768){return{'model':db[_0x1de768[_0x139c('0x13')]],'as':_0x1de768['as'],'attributes':_0x1de768[_0x139c('0x10')]};}):[]};}):[]};}):[]:[]})[_0x139c('0x14')](function(_0x1eef01){logger[_0x139c('0xb')](_0x139c('0xd'),_0x2eb303);logger[_0x139c('0x5')](_0x139c('0xd'),_0x2eb303,JSON[_0x139c('0x15')](_0x1eef01));_0x18687f(_0x1eef01);})[_0x139c('0xc')](function(_0x48a24e){logger[_0x139c('0x7')](_0x139c('0xd'),_0x48a24e[_0x139c('0xa')],_0x2eb303);_0x21194b(_0x54ba00['error'](0x1f4,_0x48a24e[_0x139c('0xa')]));});});};
\ No newline at end of file
+var _0x7316=['rpc','../../config/environment','jayson/promise','http','then','info','debug','request\x20sent','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','result','catch','ShowSquareOdbc','SquareOdbc','options','raw','where','attributes','map','include','model','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger'];(function(_0x4a6fa2,_0x497854){var _0x1ccea1=function(_0x33caa6){while(--_0x33caa6){_0x4a6fa2['push'](_0x4a6fa2['shift']());}};_0x1ccea1(++_0x497854);}(_0x7316,0x108));var _0x6731=function(_0x101e7b,_0x4ef05b){_0x101e7b=_0x101e7b-0x0;var _0x4995c0=_0x7316[_0x101e7b];return _0x4995c0;};'use strict';var _=require(_0x6731('0x0'));var util=require(_0x6731('0x1'));var moment=require('moment');var BPromise=require(_0x6731('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6731('0x3'));var db=require(_0x6731('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6731('0x5'))(_0x6731('0x6'));var config=require(_0x6731('0x7'));var jayson=require(_0x6731('0x8'));var client=jayson['client'][_0x6731('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4a7e41,_0x2faf91,_0x10d1f4){return new BPromise(function(_0x2f231a,_0x1c34f4){return client['request'](_0x4a7e41,_0x10d1f4)[_0x6731('0xa')](function(_0x18644e){logger[_0x6731('0xb')]('SquareOdbc,\x20%s,\x20%s',_0x2faf91,'request\x20sent');logger[_0x6731('0xc')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x2faf91,_0x6731('0xd'),JSON[_0x6731('0xe')](_0x18644e));if(_0x18644e[_0x6731('0xf')]){if(_0x18644e['error'][_0x6731('0x10')]===0x1f4){logger[_0x6731('0xf')](_0x6731('0x11'),_0x2faf91,_0x18644e[_0x6731('0xf')]['message']);return _0x1c34f4(_0x18644e[_0x6731('0xf')][_0x6731('0x12')]);}logger[_0x6731('0xf')](_0x6731('0x11'),_0x2faf91,_0x18644e[_0x6731('0xf')][_0x6731('0x12')]);return _0x2f231a(_0x18644e[_0x6731('0xf')][_0x6731('0x12')]);}else{logger[_0x6731('0xb')](_0x6731('0x11'),_0x2faf91,_0x6731('0xd'));_0x2f231a(_0x18644e[_0x6731('0x13')][_0x6731('0x12')]);}})[_0x6731('0x14')](function(_0x3e748b){logger[_0x6731('0xf')](_0x6731('0x11'),_0x2faf91,_0x3e748b);_0x1c34f4(_0x3e748b);});});}exports[_0x6731('0x15')]=function(_0x35ea73){var _0x282d6b=this;return new Promise(function(_0x35ea94,_0x3e5625){return db[_0x6731('0x16')]['find']({'raw':_0x35ea73[_0x6731('0x17')]?_0x35ea73[_0x6731('0x17')][_0x6731('0x18')]===undefined?!![]:![]:!![],'where':_0x35ea73['options']?_0x35ea73[_0x6731('0x17')][_0x6731('0x19')]||null:null,'attributes':_0x35ea73[_0x6731('0x17')]?_0x35ea73['options'][_0x6731('0x1a')]||null:null,'include':_0x35ea73[_0x6731('0x17')]?_0x35ea73[_0x6731('0x17')]['include']?_[_0x6731('0x1b')](_0x35ea73['options'][_0x6731('0x1c')],function(_0x1c15cc){return{'model':db[_0x1c15cc[_0x6731('0x1d')]],'as':_0x1c15cc['as'],'attributes':_0x1c15cc[_0x6731('0x1a')],'include':_0x1c15cc[_0x6731('0x1c')]?_['map'](_0x1c15cc['include'],function(_0x25cf23){return{'model':db[_0x25cf23[_0x6731('0x1d')]],'as':_0x25cf23['as'],'attributes':_0x25cf23[_0x6731('0x1a')],'include':_0x25cf23[_0x6731('0x1c')]?_[_0x6731('0x1b')](_0x25cf23['include'],function(_0x4e1395){return{'model':db[_0x4e1395[_0x6731('0x1d')]],'as':_0x4e1395['as'],'attributes':_0x4e1395['attributes']};}):[]};}):[]};}):[]:[]})[_0x6731('0xa')](function(_0x5a6dff){logger['info'](_0x6731('0x15'),_0x35ea73);logger['debug'](_0x6731('0x15'),_0x35ea73,JSON[_0x6731('0xe')](_0x5a6dff));_0x35ea94(_0x5a6dff);})[_0x6731('0x14')](function(_0x53970e){logger['error'](_0x6731('0x15'),_0x53970e[_0x6731('0x12')],_0x35ea73);_0x3e5625(_0x282d6b[_0x6731('0xf')](0x1f4,_0x53970e['message']));});});};
\ No newline at end of file
index 36f0324..7a51aa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a4d=['get','isAuthenticated','index','show','/:id/users','post','put','/:id','delete','destroy','removeUsers','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./squareProject.controller'];(function(_0x59a2a2,_0x42702a){var _0x3335e4=function(_0x23f7f0){while(--_0x23f7f0){_0x59a2a2['push'](_0x59a2a2['shift']());}};_0x3335e4(++_0x42702a);}(_0x6a4d,0x1af));var _0xd6a4=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x6a4d[_0x50a0c2];return _0x5ebadd;};'use strict';var multer=require(_0xd6a4('0x0'));var util=require(_0xd6a4('0x1'));var path=require(_0xd6a4('0x2'));var timeout=require(_0xd6a4('0x3'));var express=require(_0xd6a4('0x4'));var router=express[_0xd6a4('0x5')]();var auth=require('../../components/auth/service');var interaction=require(_0xd6a4('0x6'));var config=require(_0xd6a4('0x7'));var controller=require(_0xd6a4('0x8'));router[_0xd6a4('0x9')]('/',auth[_0xd6a4('0xa')](),controller[_0xd6a4('0xb')]);router['get']('/:id',auth[_0xd6a4('0xa')](),controller[_0xd6a4('0xc')]);router['get'](_0xd6a4('0xd'),auth['isAuthenticated'](),controller['getUsers']);router[_0xd6a4('0xe')]('/',auth[_0xd6a4('0xa')](),controller['create']);router[_0xd6a4('0xe')](_0xd6a4('0xd'),auth[_0xd6a4('0xa')](),controller['addUsers']);router[_0xd6a4('0xf')](_0xd6a4('0x10'),auth[_0xd6a4('0xa')](),controller['update']);router[_0xd6a4('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xd6a4('0x12')]);router[_0xd6a4('0x11')]('/:id/users',auth[_0xd6a4('0xa')](),controller[_0xd6a4('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x50e3=['./squareProject.controller','isAuthenticated','get','show','getUsers','post','/:id/users','addUsers','put','update','delete','/:id','destroy','removeUsers','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2d8fc2,_0x1c461d){var _0x3a9e53=function(_0x18941c){while(--_0x18941c){_0x2d8fc2['push'](_0x2d8fc2['shift']());}};_0x3a9e53(++_0x1c461d);}(_0x50e3,0xc7));var _0x350e=function(_0x1840e7,_0x32c8bd){_0x1840e7=_0x1840e7-0x0;var _0x144452=_0x50e3[_0x1840e7];return _0x144452;};'use strict';var multer=require(_0x350e('0x0'));var util=require(_0x350e('0x1'));var path=require(_0x350e('0x2'));var timeout=require(_0x350e('0x3'));var express=require('express');var router=express[_0x350e('0x4')]();var auth=require(_0x350e('0x5'));var interaction=require(_0x350e('0x6'));var config=require(_0x350e('0x7'));var controller=require(_0x350e('0x8'));router['get']('/',auth[_0x350e('0x9')](),controller['index']);router[_0x350e('0xa')]('/:id',auth[_0x350e('0x9')](),controller[_0x350e('0xb')]);router['get']('/:id/users',auth[_0x350e('0x9')](),controller[_0x350e('0xc')]);router[_0x350e('0xd')]('/',auth[_0x350e('0x9')](),controller['create']);router[_0x350e('0xd')](_0x350e('0xe'),auth[_0x350e('0x9')](),controller[_0x350e('0xf')]);router[_0x350e('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x350e('0x11')]);router[_0x350e('0x12')](_0x350e('0x13'),auth[_0x350e('0x9')](),controller[_0x350e('0x14')]);router[_0x350e('0x12')](_0x350e('0xe'),auth[_0x350e('0x9')](),controller[_0x350e('0x15')]);module[_0x350e('0x16')]=router;
\ No newline at end of file
index 0ed5fc5..c423575 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14b2=['STRING','TEXT','BLOB','getDataValue','preproduction','toString','utf8','long','production','sequelize','exports','name'];(function(_0x3ab0e4,_0x29ac68){var _0x95c9ed=function(_0x3ecf68){while(--_0x3ecf68){_0x3ab0e4['push'](_0x3ab0e4['shift']());}};_0x95c9ed(++_0x29ac68);}(_0x14b2,0x1a1));var _0x214b=function(_0x401471,_0x28519d){_0x401471=_0x401471-0x0;var _0x197003=_0x14b2[_0x401471];return _0x197003;};'use strict';var Sequelize=require(_0x214b('0x0'));module[_0x214b('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x214b('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x214b('0x3')]},'notes':{'type':Sequelize[_0x214b('0x4')]},'preproduction':{'type':Sequelize[_0x214b('0x5')]('long'),'get':function(){if(this[_0x214b('0x6')](_0x214b('0x7'))){return this['getDataValue']('preproduction')[_0x214b('0x8')](_0x214b('0x9'));}}},'production':{'type':Sequelize[_0x214b('0x5')](_0x214b('0xa')),'get':function(){if(this[_0x214b('0x6')](_0x214b('0xb'))){return this['getDataValue'](_0x214b('0xb'))['toString'](_0x214b('0x9'));}}}};
\ No newline at end of file
+var _0xd5da=['utf8','BLOB','production','sequelize','exports','name','STRING','TEXT','long','preproduction','getDataValue','toString'];(function(_0x1a7550,_0x1edace){var _0x426e22=function(_0x1c10a1){while(--_0x1c10a1){_0x1a7550['push'](_0x1a7550['shift']());}};_0x426e22(++_0x1edace);}(_0xd5da,0x9f));var _0xad5d=function(_0x366eef,_0x16584f){_0x366eef=_0x366eef-0x0;var _0x2e06b8=_0xd5da[_0x366eef];return _0x2e06b8;};'use strict';var Sequelize=require(_0xad5d('0x0'));module[_0xad5d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xad5d('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xad5d('0x3')]},'notes':{'type':Sequelize[_0xad5d('0x4')]},'preproduction':{'type':Sequelize['BLOB'](_0xad5d('0x5')),'get':function(){if(this['getDataValue'](_0xad5d('0x6'))){return this[_0xad5d('0x7')](_0xad5d('0x6'))[_0xad5d('0x8')](_0xad5d('0x9'));}}},'production':{'type':Sequelize[_0xad5d('0xa')](_0xad5d('0x5')),'get':function(){if(this[_0xad5d('0x7')](_0xad5d('0xb'))){return this['getDataValue'](_0xad5d('0xb'))[_0xad5d('0x8')]('utf8');}}}};
\ No newline at end of file
index 00c0baa..3b23105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x909c=['catch','params','keys','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','SquareProjects','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','pick','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','status','end','json','offset','set','Content-Range','reject','save','update','then','destroy','UserProfileResource','sendStatus','error','stack','name','send','index','SquareProject','rawAttributes','model','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','add','day','filter','merge','map','type','key','VIRTUAL','field','options','count','includeAll','include','findAll','rows'];(function(_0x283a81,_0x42f033){var _0x57533f=function(_0x1bfe9e){while(--_0x1bfe9e){_0x283a81['push'](_0x283a81['shift']());}};_0x57533f(++_0x42f033);}(_0x909c,0x14e));var _0xc909=function(_0x3539,_0x381351){_0x3539=_0x3539-0x0;var _0x2ca23d=_0x909c[_0x3539];return _0x2ca23d;};'use strict';var pdf=require(_0xc909('0x0'));var emlformat=require(_0xc909('0x1'));var rimraf=require(_0xc909('0x2'));var zipdir=require(_0xc909('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc909('0x4'));var moment=require(_0xc909('0x5'));var BPromise=require(_0xc909('0x6'));var Mustache=require(_0xc909('0x7'));var util=require(_0xc909('0x8'));var path=require(_0xc909('0x9'));var sox=require(_0xc909('0xa'));var csv=require('to-csv');var ejs=require(_0xc909('0xb'));var fs=require('fs');var _=require(_0xc909('0xc'));var squel=require(_0xc909('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc909('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc909('0xf'));var Papa=require(_0xc909('0x10'));var Redis=require(_0xc909('0x11'));var qs=require(_0xc909('0x12'));var logger=require('../../config/logger')(_0xc909('0x13'));var utils=require(_0xc909('0x14'));var config=require(_0xc909('0x15'));var db=require('../../mysqldb')['db'];config[_0xc909('0x16')]=_[_0xc909('0x17')](config['redis'],{'host':_0xc909('0x18'),'port':0x18eb});var socket=require(_0xc909('0x19'))(new Redis(config[_0xc909('0x16')]));require(_0xc909('0x1a'))[_0xc909('0x1b')](socket);function respondWithStatusCode(_0xb804b7,_0x4e2e98){_0x4e2e98=_0x4e2e98||0xcc;return function(_0x4704c7){if(_0x4704c7){return _0xb804b7['sendStatus'](_0x4e2e98);}return _0xb804b7[_0xc909('0x1c')](_0x4e2e98)[_0xc909('0x1d')]();};}function respondWithResult(_0x54c252,_0x128b33){_0x128b33=_0x128b33||0xc8;return function(_0x53eda3){if(_0x53eda3){return _0x54c252[_0xc909('0x1c')](_0x128b33)[_0xc909('0x1e')](_0x53eda3);}};}function respondWithFilteredResult(_0x1fce11,_0x4c6708){return function(_0x5332ad){if(_0x5332ad){var _0x569e15=_0x5332ad['count'],_0x1b44c6=_0x4c6708[_0xc909('0x1f')],_0x233373=_0x4c6708[_0xc909('0x1f')]+_0x4c6708['limit'],_0x301bca;if(_0x233373>=_0x569e15){_0x233373=_0x569e15;_0x301bca=0xc8;}else{_0x301bca=0xce;}_0x1fce11[_0xc909('0x1c')](_0x301bca);return _0x1fce11[_0xc909('0x20')](_0xc909('0x21'),_0x1b44c6+'-'+_0x233373+'/'+_0x569e15)[_0xc909('0x1e')](_0x5332ad);}return null;};}function patchUpdates(_0x594d0a){return function(_0x2c8581){try{jsonpatch['apply'](_0x2c8581,_0x594d0a,!![]);}catch(_0x1bf5f8){return BPromise[_0xc909('0x22')](_0x1bf5f8);}return _0x2c8581[_0xc909('0x23')]();};}function saveUpdates(_0xf01be0,_0x3cf202){return function(_0x3cbc9d){if(_0x3cbc9d){return _0x3cbc9d[_0xc909('0x24')](_0xf01be0)[_0xc909('0x25')](function(_0x13f693){return _0x13f693;});}return null;};}function removeEntity(_0x449dba,_0x35768c){return function(_0x504cc4){if(_0x504cc4){return _0x504cc4[_0xc909('0x26')]()[_0xc909('0x25')](function(){var _0x3b2852=_0x504cc4['get']({'plain':!![]});var _0x17dae5='SquareProjects';return db[_0xc909('0x27')][_0xc909('0x26')]({'where':{'type':_0x17dae5,'resourceId':_0x3b2852['id']}})[_0xc909('0x25')](function(){return _0x504cc4;});})[_0xc909('0x25')](function(){_0x449dba['status'](0xcc)[_0xc909('0x1d')]();});}};}function handleEntityNotFound(_0x19d46e,_0x46b02d){return function(_0xb28593){if(!_0xb28593){_0x19d46e[_0xc909('0x28')](0x194);}return _0xb28593;};}function handleError(_0x3738f4,_0x32836d){_0x32836d=_0x32836d||0x1f4;return function(_0x1b2f97){logger[_0xc909('0x29')](_0x1b2f97[_0xc909('0x2a')]);if(_0x1b2f97['name']){delete _0x1b2f97[_0xc909('0x2b')];}_0x3738f4[_0xc909('0x1c')](_0x32836d)[_0xc909('0x2c')](_0x1b2f97);};}exports[_0xc909('0x2d')]=function(_0x30ffd6,_0x4e4d6a){var _0x2912c2={},_0x1a8ce4={},_0x322534={'count':0x0,'rows':[]};var _0x49d2c6=db[_0xc909('0x2e')][_0xc909('0x2f')];_0x1a8ce4[_0xc909('0x30')]=_['keys'](_0x49d2c6);var _0x3229ab={'dateStart':_0x30ffd6[_0xc909('0x31')][_0xc909('0x32')],'dateEnd':_0x30ffd6['query'][_0xc909('0x33')]};delete _0x30ffd6[_0xc909('0x31')][_0xc909('0x32')];delete _0x30ffd6[_0xc909('0x31')]['dateEnd'];_0x1a8ce4[_0xc909('0x31')]=_['keys'](_0x30ffd6[_0xc909('0x31')]);_0x1a8ce4[_0xc909('0x34')]=_[_0xc909('0x35')](_0x1a8ce4[_0xc909('0x30')],_0x1a8ce4[_0xc909('0x31')]);_0x2912c2[_0xc909('0x36')]=_['intersection'](_0x1a8ce4['model'],qs['fields'](_0x30ffd6['query'][_0xc909('0x37')]));_0x2912c2['attributes']=_0x2912c2[_0xc909('0x36')][_0xc909('0x38')]?_0x2912c2[_0xc909('0x36')]:_0x1a8ce4[_0xc909('0x30')];if(!_0x30ffd6[_0xc909('0x31')][_0xc909('0x39')](_0xc909('0x3a'))){_0x2912c2[_0xc909('0x3b')]=qs[_0xc909('0x3b')](_0x30ffd6[_0xc909('0x31')][_0xc909('0x3b')]);_0x2912c2[_0xc909('0x1f')]=qs[_0xc909('0x1f')](_0x30ffd6[_0xc909('0x31')][_0xc909('0x1f')]);}_0x2912c2[_0xc909('0x3c')]=qs['sort'](_0x30ffd6['query'][_0xc909('0x3d')]);_0x2912c2[_0xc909('0x3e')]=qs[_0xc909('0x34')](_['pick'](_0x30ffd6[_0xc909('0x31')],_0x1a8ce4[_0xc909('0x34')]));if(_0x3229ab[_0xc909('0x32')]){if(_0x3229ab[_0xc909('0x33')]){_0x3229ab[_0xc909('0x33')]=moment(_0x3229ab['dateEnd'])[_0xc909('0x3f')](0x1,_0xc909('0x40'));}else{_0x3229ab[_0xc909('0x33')]=moment(_0x3229ab[_0xc909('0x32')])[_0xc909('0x3f')](0x1,_0xc909('0x40'));}_['merge'](_0x2912c2[_0xc909('0x3e')],{'createdAt':{'$gte':_0x3229ab['dateStart'],'$lte':_0x3229ab[_0xc909('0x33')]}});}if(_0x30ffd6['query'][_0xc909('0x41')]){_0x2912c2['where']=_[_0xc909('0x42')](_0x2912c2[_0xc909('0x3e')],{'$or':_[_0xc909('0x43')](_0x49d2c6,function(_0x52dd77){if(_0x52dd77[_0xc909('0x44')][_0xc909('0x45')]!==_0xc909('0x46')){var _0x354cc5={};_0x354cc5[_0x52dd77[_0xc909('0x47')]]={'$like':'%'+_0x30ffd6[_0xc909('0x31')][_0xc909('0x41')]+'%'};return _0x354cc5;}})});}_0x2912c2=_[_0xc909('0x42')]({},_0x2912c2,_0x30ffd6[_0xc909('0x48')]);var _0x337ee4={'where':_0x2912c2[_0xc909('0x3e')]};return db[_0xc909('0x2e')][_0xc909('0x49')](_0x337ee4)[_0xc909('0x25')](function(_0x31fe94){_0x322534[_0xc909('0x49')]=_0x31fe94;if(_0x30ffd6[_0xc909('0x31')][_0xc909('0x4a')]){_0x2912c2[_0xc909('0x4b')]=[{'all':!![]}];}return db['SquareProject'][_0xc909('0x4c')](_0x2912c2);})['then'](function(_0x34e2a3){_0x322534[_0xc909('0x4d')]=_0x34e2a3;return _0x322534;})[_0xc909('0x25')](respondWithFilteredResult(_0x4e4d6a,_0x2912c2))[_0xc909('0x4e')](handleError(_0x4e4d6a,null));};exports['show']=function(_0x36e072,_0x198b88){var _0x5416cd={'raw':![],'where':{'id':_0x36e072[_0xc909('0x4f')]['id']}},_0x49a6e9={};_0x49a6e9['model']=_[_0xc909('0x50')](db[_0xc909('0x2e')]['rawAttributes']);_0x49a6e9[_0xc909('0x31')]=_[_0xc909('0x50')](_0x36e072[_0xc909('0x31')]);_0x49a6e9[_0xc909('0x34')]=_[_0xc909('0x35')](_0x49a6e9[_0xc909('0x30')],_0x49a6e9['query']);_0x5416cd[_0xc909('0x36')]=_[_0xc909('0x35')](_0x49a6e9[_0xc909('0x30')],qs['fields'](_0x36e072[_0xc909('0x31')][_0xc909('0x37')]));_0x5416cd[_0xc909('0x36')]=_0x5416cd[_0xc909('0x36')][_0xc909('0x38')]?_0x5416cd[_0xc909('0x36')]:_0x49a6e9['model'];if(_0x36e072['query'][_0xc909('0x4a')]){_0x5416cd[_0xc909('0x4b')]=[{'all':!![]}];}_0x5416cd=_[_0xc909('0x42')]({},_0x5416cd,_0x36e072[_0xc909('0x48')]);return db['SquareProject'][_0xc909('0x51')](_0x5416cd)[_0xc909('0x25')](handleEntityNotFound(_0x198b88,null))[_0xc909('0x25')](respondWithResult(_0x198b88,null))[_0xc909('0x4e')](handleError(_0x198b88,null));};exports[_0xc909('0x52')]=function(_0x36149f,_0x391e34){return db[_0xc909('0x2e')]['create'](_0x36149f[_0xc909('0x53')],{})[_0xc909('0x25')](function(_0x5254b2){var _0x4d55c2=_0x36149f['user'][_0xc909('0x54')]({'plain':!![]});if(!_0x4d55c2)throw new Error(_0xc909('0x55'));if(_0x4d55c2[_0xc909('0x56')]===_0xc909('0x57')){var _0x3f0c66=_0x5254b2[_0xc909('0x54')]({'plain':!![]});var _0x40d606=_0xc909('0x58');return db[_0xc909('0x59')][_0xc909('0x51')]({'where':{'name':_0x40d606,'userProfileId':_0x4d55c2[_0xc909('0x5a')]},'raw':!![]})[_0xc909('0x25')](function(_0x118834){if(_0x118834&&_0x118834[_0xc909('0x5b')]===0x0){return db[_0xc909('0x27')][_0xc909('0x52')]({'name':_0x3f0c66['name'],'resourceId':_0x3f0c66['id'],'type':_0x118834['name'],'sectionId':_0x118834['id']},{})[_0xc909('0x25')](function(){return _0x5254b2;});}else{return _0x5254b2;}})[_0xc909('0x4e')](function(_0x16f823){logger[_0xc909('0x29')](_0xc909('0x5c'),_0x16f823);throw _0x16f823;});}return _0x5254b2;})[_0xc909('0x25')](respondWithResult(_0x391e34,0xc9))[_0xc909('0x4e')](handleError(_0x391e34,null));};exports[_0xc909('0x24')]=function(_0x5d5c5f,_0x3ce773){if(_0x5d5c5f[_0xc909('0x53')]['id']){delete _0x5d5c5f[_0xc909('0x53')]['id'];}return db[_0xc909('0x2e')][_0xc909('0x51')]({'where':{'id':_0x5d5c5f[_0xc909('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3ce773,null))[_0xc909('0x25')](saveUpdates(_0x5d5c5f['body'],null))[_0xc909('0x25')](respondWithResult(_0x3ce773,null))[_0xc909('0x4e')](handleError(_0x3ce773,null));};exports[_0xc909('0x26')]=function(_0x33232b,_0x26ce38){return db[_0xc909('0x2e')][_0xc909('0x51')]({'where':{'id':_0x33232b[_0xc909('0x4f')]['id']}})[_0xc909('0x25')](handleEntityNotFound(_0x26ce38,null))[_0xc909('0x25')](removeEntity(_0x26ce38,null))[_0xc909('0x4e')](handleError(_0x26ce38,null));};exports[_0xc909('0x5d')]=function(_0x77e208,_0x2bd125,_0x4b3e34){return db[_0xc909('0x2e')][_0xc909('0x51')]({'where':{'id':_0x77e208[_0xc909('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2bd125,null))[_0xc909('0x25')](function(_0x4b4729){if(_0x4b4729){return _0x4b4729[_0xc909('0x5d')](_0x77e208[_0xc909('0x53')][_0xc909('0x5e')],_[_0xc909('0x5f')](_0x77e208['body'],[_0xc909('0x5e'),'id'])||{});}})[_0xc909('0x25')](respondWithResult(_0x2bd125,null))[_0xc909('0x4e')](handleError(_0x2bd125,null));};exports[_0xc909('0x60')]=function(_0x4500f4,_0x5228ec,_0x525238){var _0x351850;return db[_0xc909('0x2e')][_0xc909('0x51')]({'where':{'id':_0x4500f4[_0xc909('0x4f')]['id']}})[_0xc909('0x25')](handleEntityNotFound(_0x5228ec,null))[_0xc909('0x25')](function(_0x1dcec7){if(_0x1dcec7){return _0x1dcec7[_0xc909('0x60')](_0x4500f4['query'][_0xc909('0x5e')])[_0xc909('0x25')](function(_0x16b645){if(_[_0xc909('0x61')](_0x4500f4[_0xc909('0x31')]['ids'])){for(var _0x33a745=0x0;_0x33a745<_0x4500f4[_0xc909('0x31')]['ids'][_0xc909('0x38')];_0x33a745+=0x1){socket['emit']('userSquareProject:remove',{'UserId':_0x4500f4[_0xc909('0x31')][_0xc909('0x5e')][_0x33a745],'SquareProjectId':_0x4500f4[_0xc909('0x4f')]['id']});}}else{socket[_0xc909('0x62')](_0xc909('0x63'),{'UserId':_0x4500f4[_0xc909('0x31')]['ids'],'SquareProjectId':_0x4500f4[_0xc909('0x4f')]['id']});}});}})[_0xc909('0x25')](respondWithStatusCode(_0x5228ec,null))[_0xc909('0x4e')](handleError(_0x5228ec,null));};exports[_0xc909('0x64')]=function(_0x414cae,_0x249903,_0x39bbd2){var _0x23eb15={};var _0x52c6b3={};var _0x1f37d3;var _0x5936de;return db['SquareProject'][_0xc909('0x65')]({'where':{'id':_0x414cae[_0xc909('0x4f')]['id']}})[_0xc909('0x25')](handleEntityNotFound(_0x249903,null))[_0xc909('0x25')](function(_0x126de7){if(_0x126de7){_0x1f37d3=_0x126de7;_0x52c6b3[_0xc909('0x30')]=_[_0xc909('0x50')](db['User'][_0xc909('0x2f')]);_0x52c6b3['query']=_[_0xc909('0x50')](_0x414cae[_0xc909('0x31')]);_0x52c6b3[_0xc909('0x34')]=_['intersection'](_0x52c6b3[_0xc909('0x30')],_0x52c6b3[_0xc909('0x31')]);_0x23eb15[_0xc909('0x36')]=_['intersection'](_0x52c6b3['model'],qs['fields'](_0x414cae[_0xc909('0x31')][_0xc909('0x37')]));_0x23eb15['attributes']=_0x23eb15[_0xc909('0x36')][_0xc909('0x38')]?_0x23eb15[_0xc909('0x36')]:_0x52c6b3[_0xc909('0x30')];_0x23eb15[_0xc909('0x3c')]=qs[_0xc909('0x3d')](_0x414cae[_0xc909('0x31')][_0xc909('0x3d')]);_0x23eb15[_0xc909('0x3e')]=qs[_0xc909('0x34')](_[_0xc909('0x66')](_0x414cae[_0xc909('0x31')],_0x52c6b3[_0xc909('0x34')]));if(_0x414cae[_0xc909('0x31')][_0xc909('0x41')]){_0x23eb15[_0xc909('0x3e')]=_['merge'](_0x23eb15[_0xc909('0x3e')],{'$or':_[_0xc909('0x43')](_0x23eb15['attributes'],function(_0x31dca0){var _0x402e04={};_0x402e04[_0x31dca0]={'$like':'%'+_0x414cae[_0xc909('0x31')][_0xc909('0x41')]+'%'};return _0x402e04;})});}_0x23eb15=_[_0xc909('0x42')]({},_0x23eb15,_0x414cae[_0xc909('0x48')]);return _0x1f37d3['getUsers'](_0x23eb15);}})[_0xc909('0x25')](function(_0x582777){if(_0x582777){_0x5936de=_0x582777[_0xc909('0x38')];if(!_0x414cae['query']['hasOwnProperty'](_0xc909('0x3a'))){_0x23eb15[_0xc909('0x3b')]=qs[_0xc909('0x3b')](_0x414cae[_0xc909('0x31')][_0xc909('0x3b')]);_0x23eb15[_0xc909('0x1f')]=qs[_0xc909('0x1f')](_0x414cae[_0xc909('0x31')][_0xc909('0x1f')]);}return _0x1f37d3[_0xc909('0x64')](_0x23eb15);}})['then'](function(_0x5b3174){if(_0x5b3174){return _0x5b3174?{'count':_0x5936de,'rows':_0x5b3174}:null;}})[_0xc909('0x25')](respondWithResult(_0x249903,null))[_0xc909('0x4e')](handleError(_0x249903,null));};
\ No newline at end of file
+var _0x5fca=['findAll','rows','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','SquareProjects','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','addUsers','ids','omit','removeUsers','isArray','userSquareProject:remove','emit','findOne','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','status','end','json','count','offset','set','Content-Range','apply','reject','save','update','then','get','destroy','sendStatus','error','stack','name','index','SquareProject','rawAttributes','model','keys','query','dateStart','dateEnd','filters','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','where','add','day','merge','map','type','key','VIRTUAL','field','filter','options','includeAll','include'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5fca,0x1a5));var _0xa5fc=function(_0x3b594b,_0x5835c3){_0x3b594b=_0x3b594b-0x0;var _0x1ea5f8=_0x5fca[_0x3b594b];return _0x1ea5f8;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xa5fc('0x0'));var rimraf=require(_0xa5fc('0x1'));var zipdir=require(_0xa5fc('0x2'));var jsonpatch=require(_0xa5fc('0x3'));var rp=require(_0xa5fc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa5fc('0x5'));var util=require(_0xa5fc('0x6'));var path=require(_0xa5fc('0x7'));var sox=require('sox');var csv=require(_0xa5fc('0x8'));var ejs=require(_0xa5fc('0x9'));var fs=require('fs');var _=require(_0xa5fc('0xa'));var squel=require(_0xa5fc('0xb'));var crypto=require(_0xa5fc('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa5fc('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa5fc('0xe'));var Papa=require('papaparse');var Redis=require(_0xa5fc('0xf'));var qs=require(_0xa5fc('0x10'));var logger=require(_0xa5fc('0x11'))(_0xa5fc('0x12'));var utils=require(_0xa5fc('0x13'));var config=require(_0xa5fc('0x14'));var db=require('../../mysqldb')['db'];config[_0xa5fc('0x15')]=_[_0xa5fc('0x16')](config[_0xa5fc('0x15')],{'host':_0xa5fc('0x17'),'port':0x18eb});var socket=require(_0xa5fc('0x18'))(new Redis(config[_0xa5fc('0x15')]));require('./squareProject.socket')[_0xa5fc('0x19')](socket);function respondWithStatusCode(_0x1fe18d,_0x50f21c){_0x50f21c=_0x50f21c||0xcc;return function(_0x320a08){if(_0x320a08){return _0x1fe18d['sendStatus'](_0x50f21c);}return _0x1fe18d[_0xa5fc('0x1a')](_0x50f21c)[_0xa5fc('0x1b')]();};}function respondWithResult(_0x33fe83,_0x552579){_0x552579=_0x552579||0xc8;return function(_0x29ddc2){if(_0x29ddc2){return _0x33fe83['status'](_0x552579)[_0xa5fc('0x1c')](_0x29ddc2);}};}function respondWithFilteredResult(_0x3fd206,_0x1bf843){return function(_0xedbb8e){if(_0xedbb8e){var _0x41b2ca=_0xedbb8e[_0xa5fc('0x1d')],_0x1d64a7=_0x1bf843[_0xa5fc('0x1e')],_0x5943c5=_0x1bf843[_0xa5fc('0x1e')]+_0x1bf843['limit'],_0x279f0d;if(_0x5943c5>=_0x41b2ca){_0x5943c5=_0x41b2ca;_0x279f0d=0xc8;}else{_0x279f0d=0xce;}_0x3fd206[_0xa5fc('0x1a')](_0x279f0d);return _0x3fd206[_0xa5fc('0x1f')](_0xa5fc('0x20'),_0x1d64a7+'-'+_0x5943c5+'/'+_0x41b2ca)[_0xa5fc('0x1c')](_0xedbb8e);}return null;};}function patchUpdates(_0x234078){return function(_0x277a71){try{jsonpatch[_0xa5fc('0x21')](_0x277a71,_0x234078,!![]);}catch(_0x758642){return BPromise[_0xa5fc('0x22')](_0x758642);}return _0x277a71[_0xa5fc('0x23')]();};}function saveUpdates(_0x43495b,_0x38ad04){return function(_0x4a0b75){if(_0x4a0b75){return _0x4a0b75[_0xa5fc('0x24')](_0x43495b)['then'](function(_0x3990cf){return _0x3990cf;});}return null;};}function removeEntity(_0x2a6326,_0x5fd457){return function(_0x35da95){if(_0x35da95){return _0x35da95['destroy']()[_0xa5fc('0x25')](function(){var _0x4b1dd2=_0x35da95[_0xa5fc('0x26')]({'plain':!![]});var _0x465018='SquareProjects';return db['UserProfileResource'][_0xa5fc('0x27')]({'where':{'type':_0x465018,'resourceId':_0x4b1dd2['id']}})['then'](function(){return _0x35da95;});})['then'](function(){_0x2a6326[_0xa5fc('0x1a')](0xcc)[_0xa5fc('0x1b')]();});}};}function handleEntityNotFound(_0x170f8c,_0xc4eb49){return function(_0x311617){if(!_0x311617){_0x170f8c[_0xa5fc('0x28')](0x194);}return _0x311617;};}function handleError(_0x4c1ea6,_0x4d463c){_0x4d463c=_0x4d463c||0x1f4;return function(_0x2e897d){logger[_0xa5fc('0x29')](_0x2e897d[_0xa5fc('0x2a')]);if(_0x2e897d['name']){delete _0x2e897d[_0xa5fc('0x2b')];}_0x4c1ea6[_0xa5fc('0x1a')](_0x4d463c)['send'](_0x2e897d);};}exports[_0xa5fc('0x2c')]=function(_0x3c5c1e,_0x6cfce9){var _0xf72db3={},_0x12ef07={},_0xa8be24={'count':0x0,'rows':[]};var _0x41a1a3=db[_0xa5fc('0x2d')][_0xa5fc('0x2e')];_0x12ef07[_0xa5fc('0x2f')]=_[_0xa5fc('0x30')](_0x41a1a3);var _0x768389={'dateStart':_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x32')],'dateEnd':_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x33')]};delete _0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x32')];delete _0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x33')];_0x12ef07[_0xa5fc('0x31')]=_['keys'](_0x3c5c1e[_0xa5fc('0x31')]);_0x12ef07[_0xa5fc('0x34')]=_['intersection'](_0x12ef07['model'],_0x12ef07[_0xa5fc('0x31')]);_0xf72db3[_0xa5fc('0x35')]=_[_0xa5fc('0x36')](_0x12ef07[_0xa5fc('0x2f')],qs['fields'](_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x37')]));_0xf72db3[_0xa5fc('0x35')]=_0xf72db3[_0xa5fc('0x35')]['length']?_0xf72db3['attributes']:_0x12ef07[_0xa5fc('0x2f')];if(!_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x38')](_0xa5fc('0x39'))){_0xf72db3['limit']=qs[_0xa5fc('0x3a')](_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x3a')]);_0xf72db3[_0xa5fc('0x1e')]=qs['offset'](_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x1e')]);}_0xf72db3[_0xa5fc('0x3b')]=qs['sort'](_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x3c')]);_0xf72db3[_0xa5fc('0x3d')]=qs['filters'](_['pick'](_0x3c5c1e['query'],_0x12ef07[_0xa5fc('0x34')]));if(_0x768389[_0xa5fc('0x32')]){if(_0x768389[_0xa5fc('0x33')]){_0x768389[_0xa5fc('0x33')]=moment(_0x768389[_0xa5fc('0x33')])[_0xa5fc('0x3e')](0x1,'day');}else{_0x768389[_0xa5fc('0x33')]=moment(_0x768389['dateStart'])[_0xa5fc('0x3e')](0x1,_0xa5fc('0x3f'));}_[_0xa5fc('0x40')](_0xf72db3[_0xa5fc('0x3d')],{'createdAt':{'$gte':_0x768389[_0xa5fc('0x32')],'$lte':_0x768389['dateEnd']}});}if(_0x3c5c1e['query']['filter']){_0xf72db3['where']=_[_0xa5fc('0x40')](_0xf72db3[_0xa5fc('0x3d')],{'$or':_[_0xa5fc('0x41')](_0x41a1a3,function(_0x28d897){if(_0x28d897[_0xa5fc('0x42')][_0xa5fc('0x43')]!==_0xa5fc('0x44')){var _0x54f91d={};_0x54f91d[_0x28d897[_0xa5fc('0x45')]]={'$like':'%'+_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x46')]+'%'};return _0x54f91d;}})});}_0xf72db3=_['merge']({},_0xf72db3,_0x3c5c1e[_0xa5fc('0x47')]);var _0x31362f={'where':_0xf72db3['where']};return db['SquareProject'][_0xa5fc('0x1d')](_0x31362f)['then'](function(_0x47eae0){_0xa8be24['count']=_0x47eae0;if(_0x3c5c1e[_0xa5fc('0x31')][_0xa5fc('0x48')]){_0xf72db3[_0xa5fc('0x49')]=[{'all':!![]}];}return db[_0xa5fc('0x2d')][_0xa5fc('0x4a')](_0xf72db3);})['then'](function(_0x1f092b){_0xa8be24[_0xa5fc('0x4b')]=_0x1f092b;return _0xa8be24;})[_0xa5fc('0x25')](respondWithFilteredResult(_0x6cfce9,_0xf72db3))[_0xa5fc('0x4c')](handleError(_0x6cfce9,null));};exports[_0xa5fc('0x4d')]=function(_0x1d89e4,_0x37d227){var _0x29bd42={'raw':![],'where':{'id':_0x1d89e4[_0xa5fc('0x4e')]['id']}},_0x1f1e1b={};_0x1f1e1b[_0xa5fc('0x2f')]=_[_0xa5fc('0x30')](db['SquareProject']['rawAttributes']);_0x1f1e1b[_0xa5fc('0x31')]=_[_0xa5fc('0x30')](_0x1d89e4[_0xa5fc('0x31')]);_0x1f1e1b['filters']=_[_0xa5fc('0x36')](_0x1f1e1b[_0xa5fc('0x2f')],_0x1f1e1b[_0xa5fc('0x31')]);_0x29bd42[_0xa5fc('0x35')]=_['intersection'](_0x1f1e1b[_0xa5fc('0x2f')],qs['fields'](_0x1d89e4[_0xa5fc('0x31')]['fields']));_0x29bd42['attributes']=_0x29bd42[_0xa5fc('0x35')][_0xa5fc('0x4f')]?_0x29bd42[_0xa5fc('0x35')]:_0x1f1e1b['model'];if(_0x1d89e4[_0xa5fc('0x31')][_0xa5fc('0x48')]){_0x29bd42[_0xa5fc('0x49')]=[{'all':!![]}];}_0x29bd42=_[_0xa5fc('0x40')]({},_0x29bd42,_0x1d89e4[_0xa5fc('0x47')]);return db[_0xa5fc('0x2d')][_0xa5fc('0x50')](_0x29bd42)[_0xa5fc('0x25')](handleEntityNotFound(_0x37d227,null))[_0xa5fc('0x25')](respondWithResult(_0x37d227,null))[_0xa5fc('0x4c')](handleError(_0x37d227,null));};exports[_0xa5fc('0x51')]=function(_0x14ca25,_0x597c31){return db[_0xa5fc('0x2d')]['create'](_0x14ca25[_0xa5fc('0x52')],{})['then'](function(_0x4fdab0){var _0x2b5b0f=_0x14ca25[_0xa5fc('0x53')][_0xa5fc('0x26')]({'plain':!![]});if(!_0x2b5b0f)throw new Error(_0xa5fc('0x54'));if(_0x2b5b0f['role']===_0xa5fc('0x53')){var _0x425821=_0x4fdab0[_0xa5fc('0x26')]({'plain':!![]});var _0x1c1e5c=_0xa5fc('0x55');return db[_0xa5fc('0x56')][_0xa5fc('0x50')]({'where':{'name':_0x1c1e5c,'userProfileId':_0x2b5b0f[_0xa5fc('0x57')]},'raw':!![]})['then'](function(_0x54362c){if(_0x54362c&&_0x54362c[_0xa5fc('0x58')]===0x0){return db[_0xa5fc('0x59')][_0xa5fc('0x51')]({'name':_0x425821[_0xa5fc('0x2b')],'resourceId':_0x425821['id'],'type':_0x54362c[_0xa5fc('0x2b')],'sectionId':_0x54362c['id']},{})[_0xa5fc('0x25')](function(){return _0x4fdab0;});}else{return _0x4fdab0;}})[_0xa5fc('0x4c')](function(_0x5c351e){logger[_0xa5fc('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5c351e);throw _0x5c351e;});}return _0x4fdab0;})[_0xa5fc('0x25')](respondWithResult(_0x597c31,0xc9))[_0xa5fc('0x4c')](handleError(_0x597c31,null));};exports['update']=function(_0x217f16,_0x1371d9){if(_0x217f16[_0xa5fc('0x52')]['id']){delete _0x217f16['body']['id'];}return db[_0xa5fc('0x2d')][_0xa5fc('0x50')]({'where':{'id':_0x217f16[_0xa5fc('0x4e')]['id']}})[_0xa5fc('0x25')](handleEntityNotFound(_0x1371d9,null))['then'](saveUpdates(_0x217f16[_0xa5fc('0x52')],null))[_0xa5fc('0x25')](respondWithResult(_0x1371d9,null))['catch'](handleError(_0x1371d9,null));};exports[_0xa5fc('0x27')]=function(_0x24999,_0x48cfbf){return db[_0xa5fc('0x2d')]['find']({'where':{'id':_0x24999[_0xa5fc('0x4e')]['id']}})[_0xa5fc('0x25')](handleEntityNotFound(_0x48cfbf,null))[_0xa5fc('0x25')](removeEntity(_0x48cfbf,null))[_0xa5fc('0x4c')](handleError(_0x48cfbf,null));};exports['addUsers']=function(_0x1df47b,_0x2dac61,_0x31c00c){return db[_0xa5fc('0x2d')][_0xa5fc('0x50')]({'where':{'id':_0x1df47b[_0xa5fc('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2dac61,null))[_0xa5fc('0x25')](function(_0x5533c2){if(_0x5533c2){return _0x5533c2[_0xa5fc('0x5a')](_0x1df47b[_0xa5fc('0x52')][_0xa5fc('0x5b')],_[_0xa5fc('0x5c')](_0x1df47b[_0xa5fc('0x52')],['ids','id'])||{});}})[_0xa5fc('0x25')](respondWithResult(_0x2dac61,null))['catch'](handleError(_0x2dac61,null));};exports[_0xa5fc('0x5d')]=function(_0x35b80b,_0x397017,_0x1eaaa1){var _0x3aba9d;return db[_0xa5fc('0x2d')]['find']({'where':{'id':_0x35b80b['params']['id']}})[_0xa5fc('0x25')](handleEntityNotFound(_0x397017,null))['then'](function(_0x1a6284){if(_0x1a6284){return _0x1a6284[_0xa5fc('0x5d')](_0x35b80b[_0xa5fc('0x31')][_0xa5fc('0x5b')])['then'](function(_0x42e35f){if(_[_0xa5fc('0x5e')](_0x35b80b['query'][_0xa5fc('0x5b')])){for(var _0x7db4f6=0x0;_0x7db4f6<_0x35b80b[_0xa5fc('0x31')][_0xa5fc('0x5b')][_0xa5fc('0x4f')];_0x7db4f6+=0x1){socket['emit'](_0xa5fc('0x5f'),{'UserId':_0x35b80b[_0xa5fc('0x31')][_0xa5fc('0x5b')][_0x7db4f6],'SquareProjectId':_0x35b80b['params']['id']});}}else{socket[_0xa5fc('0x60')](_0xa5fc('0x5f'),{'UserId':_0x35b80b['query'][_0xa5fc('0x5b')],'SquareProjectId':_0x35b80b[_0xa5fc('0x4e')]['id']});}});}})[_0xa5fc('0x25')](respondWithStatusCode(_0x397017,null))[_0xa5fc('0x4c')](handleError(_0x397017,null));};exports['getUsers']=function(_0x16f468,_0x408673,_0x199eeb){var _0x419b68={};var _0x2625d0={};var _0x11855d;var _0x2d004e;return db[_0xa5fc('0x2d')][_0xa5fc('0x61')]({'where':{'id':_0x16f468[_0xa5fc('0x4e')]['id']}})[_0xa5fc('0x25')](handleEntityNotFound(_0x408673,null))[_0xa5fc('0x25')](function(_0x4dc953){if(_0x4dc953){_0x11855d=_0x4dc953;_0x2625d0[_0xa5fc('0x2f')]=_[_0xa5fc('0x30')](db[_0xa5fc('0x62')][_0xa5fc('0x2e')]);_0x2625d0[_0xa5fc('0x31')]=_['keys'](_0x16f468[_0xa5fc('0x31')]);_0x2625d0['filters']=_[_0xa5fc('0x36')](_0x2625d0[_0xa5fc('0x2f')],_0x2625d0[_0xa5fc('0x31')]);_0x419b68[_0xa5fc('0x35')]=_[_0xa5fc('0x36')](_0x2625d0[_0xa5fc('0x2f')],qs['fields'](_0x16f468[_0xa5fc('0x31')]['fields']));_0x419b68[_0xa5fc('0x35')]=_0x419b68[_0xa5fc('0x35')][_0xa5fc('0x4f')]?_0x419b68['attributes']:_0x2625d0[_0xa5fc('0x2f')];_0x419b68[_0xa5fc('0x3b')]=qs[_0xa5fc('0x3c')](_0x16f468['query'][_0xa5fc('0x3c')]);_0x419b68[_0xa5fc('0x3d')]=qs[_0xa5fc('0x34')](_['pick'](_0x16f468[_0xa5fc('0x31')],_0x2625d0[_0xa5fc('0x34')]));if(_0x16f468[_0xa5fc('0x31')][_0xa5fc('0x46')]){_0x419b68[_0xa5fc('0x3d')]=_[_0xa5fc('0x40')](_0x419b68['where'],{'$or':_['map'](_0x419b68[_0xa5fc('0x35')],function(_0x5b408b){var _0x17dd60={};_0x17dd60[_0x5b408b]={'$like':'%'+_0x16f468[_0xa5fc('0x31')]['filter']+'%'};return _0x17dd60;})});}_0x419b68=_[_0xa5fc('0x40')]({},_0x419b68,_0x16f468[_0xa5fc('0x47')]);return _0x11855d['getUsers'](_0x419b68);}})[_0xa5fc('0x25')](function(_0x500124){if(_0x500124){_0x2d004e=_0x500124[_0xa5fc('0x4f')];if(!_0x16f468['query'][_0xa5fc('0x38')](_0xa5fc('0x39'))){_0x419b68[_0xa5fc('0x3a')]=qs[_0xa5fc('0x3a')](_0x16f468['query'][_0xa5fc('0x3a')]);_0x419b68['offset']=qs[_0xa5fc('0x1e')](_0x16f468[_0xa5fc('0x31')][_0xa5fc('0x1e')]);}return _0x11855d['getUsers'](_0x419b68);}})[_0xa5fc('0x25')](function(_0x141a65){if(_0x141a65){return _0x141a65?{'count':_0x2d004e,'rows':_0x141a65}:null;}})[_0xa5fc('0x25')](respondWithResult(_0x408673,null))['catch'](handleError(_0x408673,null));};
\ No newline at end of file
index 5757aca..ea3be0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13b5=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x2b22c1,_0x1800ca){var _0x2d20d6=function(_0xc27e49){while(--_0xc27e49){_0x2b22c1['push'](_0x2b22c1['shift']());}};_0x2d20d6(++_0x1800ca);}(_0x13b5,0x69));var _0x513b=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x13b5[_0x45d55e];return _0x29812a;};'use strict';var EventEmitter=require('events');var SquareProject=require(_0x513b('0x0'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x513b('0x1')](0x0);var events={'afterCreate':_0x513b('0x2'),'afterUpdate':_0x513b('0x3'),'afterDestroy':_0x513b('0x4')};function emitEvent(_0x170c8a){return function(_0x1b2a02,_0x30f3f1,_0x4aef51){SquareProjectEvents[_0x513b('0x5')](_0x170c8a+':'+_0x1b2a02['id'],_0x1b2a02);SquareProjectEvents[_0x513b('0x5')](_0x170c8a,_0x1b2a02);_0x4aef51(null);};}for(var e in events){if(events[_0x513b('0x6')](e)){var event=events[e];SquareProject[_0x513b('0x7')](e,emitEvent(event));}}module[_0x513b('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0xa8c8=['setMaxListeners','emit','hook','exports','events','../../mysqldb'];(function(_0x11fbaa,_0x52dc16){var _0x1831fd=function(_0x2bbced){while(--_0x2bbced){_0x11fbaa['push'](_0x11fbaa['shift']());}};_0x1831fd(++_0x52dc16);}(_0xa8c8,0x1d2));var _0x8a8c=function(_0x328b20,_0x39cabe){_0x328b20=_0x328b20-0x0;var _0x111db2=_0xa8c8[_0x328b20];return _0x111db2;};'use strict';var EventEmitter=require(_0x8a8c('0x0'));var SquareProject=require(_0x8a8c('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x8a8c('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5b143d){return function(_0x11c84c,_0xfeb2eb,_0x18207c){SquareProjectEvents[_0x8a8c('0x3')](_0x5b143d+':'+_0x11c84c['id'],_0x11c84c);SquareProjectEvents[_0x8a8c('0x3')](_0x5b143d,_0x11c84c);_0x18207c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SquareProject[_0x8a8c('0x4')](e,emitEvent(event));}}module[_0x8a8c('0x5')]=SquareProjectEvents;
\ No newline at end of file
index 52c9f66..1eda058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb99=['moment','exports','define','SquareProject','square_projects','util','api'];(function(_0x55ca05,_0x2538e2){var _0xf41b11=function(_0x5a056c){while(--_0x5a056c){_0x55ca05['push'](_0x55ca05['shift']());}};_0xf41b11(++_0x2538e2);}(_0xcb99,0xec));var _0x9cb9=function(_0x58f42a,_0x582f5c){_0x58f42a=_0x58f42a-0x0;var _0x249e18=_0xcb99[_0x58f42a];return _0x249e18;};'use strict';var _=require('lodash');var util=require(_0x9cb9('0x0'));var logger=require('../../config/logger')(_0x9cb9('0x1'));var moment=require(_0x9cb9('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require('./squareProject.attributes');module[_0x9cb9('0x3')]=function(_0x730039,_0x52a40a){return _0x730039[_0x9cb9('0x4')](_0x9cb9('0x5'),attributes,{'tableName':_0x9cb9('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3301=['SquareProject','lodash','util','../../config/logger','bluebird','request-promise','./squareProject.attributes','exports'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x3301,0x1b9));var _0x1330=function(_0x522e32,_0x440e6d){_0x522e32=_0x522e32-0x0;var _0x216842=_0x3301[_0x522e32];return _0x216842;};'use strict';var _=require(_0x1330('0x0'));var util=require(_0x1330('0x1'));var logger=require(_0x1330('0x2'))('api');var moment=require('moment');var BPromise=require(_0x1330('0x3'));var rp=require(_0x1330('0x4'));var attributes=require(_0x1330('0x5'));module[_0x1330('0x6')]=function(_0x37f9f6,_0x20d75a){return _0x37f9f6['define'](_0x1330('0x7'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec9b1f5..b57f983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','ShowSquareProject','find','options','raw','where','attributes','include','map','model','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','register','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x2f71f6,_0x3a1f4d){var _0x2b23ea=function(_0x285980){while(--_0x285980){_0x2f71f6['push'](_0x2f71f6['shift']());}};_0x2b23ea(++_0x3a1f4d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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});config[_0x0a9e('0xa')]=_[_0x0a9e('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xc'))(new Redis(config['redis']));require('./squareProject.socket')[_0x0a9e('0xd')](socket);function respondWithRpcPromise(_0xf81284,_0x307b3e,_0x3ab53f){return new BPromise(function(_0xfeb75b,_0xbd1168){return client['request'](_0xf81284,_0x3ab53f)['then'](function(_0x527cdd){logger['info'](_0x0a9e('0xe'),_0x307b3e,_0x0a9e('0xf'));logger[_0x0a9e('0x10')](_0x0a9e('0x11'),_0x307b3e,_0x0a9e('0xf'),JSON[_0x0a9e('0x12')](_0x527cdd));if(_0x527cdd['error']){if(_0x527cdd[_0x0a9e('0x13')][_0x0a9e('0x14')]===0x1f4){logger[_0x0a9e('0x13')](_0x0a9e('0xe'),_0x307b3e,_0x527cdd[_0x0a9e('0x13')][_0x0a9e('0x15')]);return _0xbd1168(_0x527cdd['error'][_0x0a9e('0x15')]);}logger['error'](_0x0a9e('0xe'),_0x307b3e,_0x527cdd['error'][_0x0a9e('0x15')]);return _0xfeb75b(_0x527cdd[_0x0a9e('0x13')]['message']);}else{logger[_0x0a9e('0x16')]('SquareProject,\x20%s,\x20%s',_0x307b3e,_0x0a9e('0xf'));_0xfeb75b(_0x527cdd[_0x0a9e('0x17')][_0x0a9e('0x15')]);}})[_0x0a9e('0x18')](function(_0x31b1ca){logger[_0x0a9e('0x13')](_0x0a9e('0xe'),_0x307b3e,_0x31b1ca);_0xbd1168(_0x31b1ca);});});}exports[_0x0a9e('0x19')]=function(_0x1314ae){var _0x112016=this;return new Promise(function(_0x1c696a,_0x105080){return db['SquareProject'][_0x0a9e('0x1a')]({'raw':_0x1314ae[_0x0a9e('0x1b')]?_0x1314ae['options'][_0x0a9e('0x1c')]===undefined?!![]:![]:!![],'where':_0x1314ae['options']?_0x1314ae['options'][_0x0a9e('0x1d')]||null:null,'attributes':_0x1314ae[_0x0a9e('0x1b')]?_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x1e')]||null:null,'include':_0x1314ae['options']?_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x1f')],function(_0x42ac8f){return{'model':db[_0x42ac8f[_0x0a9e('0x21')]],'as':_0x42ac8f['as'],'attributes':_0x42ac8f['attributes'],'include':_0x42ac8f['include']?_[_0x0a9e('0x20')](_0x42ac8f[_0x0a9e('0x1f')],function(_0x40c424){return{'model':db[_0x40c424[_0x0a9e('0x21')]],'as':_0x40c424['as'],'attributes':_0x40c424['attributes'],'include':_0x40c424[_0x0a9e('0x1f')]?_['map'](_0x40c424[_0x0a9e('0x1f')],function(_0x5bfb33){return{'model':db[_0x5bfb33[_0x0a9e('0x21')]],'as':_0x5bfb33['as'],'attributes':_0x5bfb33[_0x0a9e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x22')](function(_0x14433c){logger[_0x0a9e('0x16')](_0x0a9e('0x19'),_0x1314ae);logger[_0x0a9e('0x10')](_0x0a9e('0x19'),_0x1314ae,JSON['stringify'](_0x14433c));_0x1c696a(_0x14433c);})[_0x0a9e('0x18')](function(_0x468813){logger[_0x0a9e('0x13')](_0x0a9e('0x19'),_0x468813['message'],_0x1314ae);_0x105080(_0x112016[_0x0a9e('0x13')](0x1f4,_0x468813[_0x0a9e('0x15')]));});});};
\ No newline at end of file
+var _0xa9e0=['catch','ShowSquareProject','find','options','raw','where','attributes','include','map','model','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','register','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x1843b3,_0x10995a){var _0x3c7de0=function(_0xe28643){while(--_0xe28643){_0x1843b3['push'](_0x1843b3['shift']());}};_0x3c7de0(++_0x10995a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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});config[_0x0a9e('0xa')]=_[_0x0a9e('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xc'))(new Redis(config['redis']));require('./squareProject.socket')[_0x0a9e('0xd')](socket);function respondWithRpcPromise(_0xf81284,_0x307b3e,_0x3ab53f){return new BPromise(function(_0xfeb75b,_0xbd1168){return client['request'](_0xf81284,_0x3ab53f)['then'](function(_0x527cdd){logger['info'](_0x0a9e('0xe'),_0x307b3e,_0x0a9e('0xf'));logger[_0x0a9e('0x10')](_0x0a9e('0x11'),_0x307b3e,_0x0a9e('0xf'),JSON[_0x0a9e('0x12')](_0x527cdd));if(_0x527cdd['error']){if(_0x527cdd[_0x0a9e('0x13')][_0x0a9e('0x14')]===0x1f4){logger[_0x0a9e('0x13')](_0x0a9e('0xe'),_0x307b3e,_0x527cdd[_0x0a9e('0x13')][_0x0a9e('0x15')]);return _0xbd1168(_0x527cdd['error'][_0x0a9e('0x15')]);}logger['error'](_0x0a9e('0xe'),_0x307b3e,_0x527cdd['error'][_0x0a9e('0x15')]);return _0xfeb75b(_0x527cdd[_0x0a9e('0x13')]['message']);}else{logger[_0x0a9e('0x16')]('SquareProject,\x20%s,\x20%s',_0x307b3e,_0x0a9e('0xf'));_0xfeb75b(_0x527cdd[_0x0a9e('0x17')][_0x0a9e('0x15')]);}})[_0x0a9e('0x18')](function(_0x31b1ca){logger[_0x0a9e('0x13')](_0x0a9e('0xe'),_0x307b3e,_0x31b1ca);_0xbd1168(_0x31b1ca);});});}exports[_0x0a9e('0x19')]=function(_0x1314ae){var _0x112016=this;return new Promise(function(_0x1c696a,_0x105080){return db['SquareProject'][_0x0a9e('0x1a')]({'raw':_0x1314ae[_0x0a9e('0x1b')]?_0x1314ae['options'][_0x0a9e('0x1c')]===undefined?!![]:![]:!![],'where':_0x1314ae['options']?_0x1314ae['options'][_0x0a9e('0x1d')]||null:null,'attributes':_0x1314ae[_0x0a9e('0x1b')]?_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x1e')]||null:null,'include':_0x1314ae['options']?_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x1f')],function(_0x42ac8f){return{'model':db[_0x42ac8f[_0x0a9e('0x21')]],'as':_0x42ac8f['as'],'attributes':_0x42ac8f['attributes'],'include':_0x42ac8f['include']?_[_0x0a9e('0x20')](_0x42ac8f[_0x0a9e('0x1f')],function(_0x40c424){return{'model':db[_0x40c424[_0x0a9e('0x21')]],'as':_0x40c424['as'],'attributes':_0x40c424['attributes'],'include':_0x40c424[_0x0a9e('0x1f')]?_['map'](_0x40c424[_0x0a9e('0x1f')],function(_0x5bfb33){return{'model':db[_0x5bfb33[_0x0a9e('0x21')]],'as':_0x5bfb33['as'],'attributes':_0x5bfb33[_0x0a9e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x22')](function(_0x14433c){logger[_0x0a9e('0x16')](_0x0a9e('0x19'),_0x1314ae);logger[_0x0a9e('0x10')](_0x0a9e('0x19'),_0x1314ae,JSON['stringify'](_0x14433c));_0x1c696a(_0x14433c);})[_0x0a9e('0x18')](function(_0x468813){logger[_0x0a9e('0x13')](_0x0a9e('0x19'),_0x468813['message'],_0x1314ae);_0x105080(_0x112016[_0x0a9e('0x13')](0x1f4,_0x468813[_0x0a9e('0x15')]));});});};
\ No newline at end of file
index 2193fbb..54d0b82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x795a=['save','remove','emit','removeListener','register','length'];(function(_0x58e469,_0x95ee3e){var _0x4c01c5=function(_0x1ef7ae){while(--_0x1ef7ae){_0x58e469['push'](_0x58e469['shift']());}};_0x4c01c5(++_0x95ee3e);}(_0x795a,0xa2));var _0xa795=function(_0x552c07,_0xa7bd6f){_0x552c07=_0x552c07-0x0;var _0xb780f6=_0x795a[_0x552c07];return _0xb780f6;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xa795('0x0'),_0xa795('0x1'),'update'];function createListener(_0x285f44,_0x4e8f61){return function(_0x237618){_0x4e8f61[_0xa795('0x2')](_0x285f44,_0x237618);};}function removeListener(_0x4ce3a0,_0x4f7e4e){return function(){SquareProjectEvents[_0xa795('0x3')](_0x4ce3a0,_0x4f7e4e);};}exports[_0xa795('0x4')]=function(_0x26a4f2){for(var _0x2efc9b=0x0,_0x553cf3=events[_0xa795('0x5')];_0x2efc9b<_0x553cf3;_0x2efc9b++){var _0x58d69c=events[_0x2efc9b];var _0x36a3a9=createListener('squareProject:'+_0x58d69c,_0x26a4f2);SquareProjectEvents['on'](_0x58d69c,_0x36a3a9);}};
\ No newline at end of file
+var _0xa62c=['./squareProject.events','save','remove','update','removeListener','register','length','squareProject:'];(function(_0x19ce9c,_0x3c7cfc){var _0x1a69ec=function(_0x4c3684){while(--_0x4c3684){_0x19ce9c['push'](_0x19ce9c['shift']());}};_0x1a69ec(++_0x3c7cfc);}(_0xa62c,0x70));var _0xca62=function(_0xe15270,_0x227d06){_0xe15270=_0xe15270-0x0;var _0x1e813b=_0xa62c[_0xe15270];return _0x1e813b;};'use strict';var SquareProjectEvents=require(_0xca62('0x0'));var events=[_0xca62('0x1'),_0xca62('0x2'),_0xca62('0x3')];function createListener(_0x27ee5c,_0x1eed11){return function(_0x11ad76){_0x1eed11['emit'](_0x27ee5c,_0x11ad76);};}function removeListener(_0x35180a,_0x3da6b7){return function(){SquareProjectEvents[_0xca62('0x4')](_0x35180a,_0x3da6b7);};}exports[_0xca62('0x5')]=function(_0x1e51ba){for(var _0x31d267=0x0,_0x310378=events[_0xca62('0x6')];_0x31d267<_0x310378;_0x31d267++){var _0x5da9b9=events[_0x31d267];var _0x2160c4=createListener(_0xca62('0x7')+_0x5da9b9,_0x1e51ba);SquareProjectEvents['on'](_0x5da9b9,_0x2160c4);}};
\ No newline at end of file
index bd445a9..2eafc3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9af6=['get','isAuthenticated','index','show','/:id/download','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller'];(function(_0x1ac9b6,_0xe2449a){var _0xa0d863=function(_0x1eea3a){while(--_0x1eea3a){_0x1ac9b6['push'](_0x1ac9b6['shift']());}};_0xa0d863(++_0xe2449a);}(_0x9af6,0xb5));var _0x69af=function(_0x87c732,_0x110bf6){_0x87c732=_0x87c732-0x0;var _0x3c2a82=_0x9af6[_0x87c732];return _0x3c2a82;};'use strict';var multer=require(_0x69af('0x0'));var util=require(_0x69af('0x1'));var path=require(_0x69af('0x2'));var timeout=require(_0x69af('0x3'));var express=require(_0x69af('0x4'));var router=express['Router']();var auth=require(_0x69af('0x5'));var interaction=require(_0x69af('0x6'));var config=require(_0x69af('0x7'));var controller=require(_0x69af('0x8'));router[_0x69af('0x9')]('/',auth[_0x69af('0xa')](),controller[_0x69af('0xb')]);router[_0x69af('0x9')]('/:id',auth[_0x69af('0xa')](),controller[_0x69af('0xc')]);router['get'](_0x69af('0xd'),auth[_0x69af('0xa')](),controller['download']);router[_0x69af('0xe')]('/',auth[_0x69af('0xa')](),controller['create']);router['put']('/:id',auth[_0x69af('0xa')](),controller[_0x69af('0xf')]);router[_0x69af('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x69af('0x11')]);module[_0x69af('0x12')]=router;
\ No newline at end of file
+var _0xf354=['delete','exports','multer','util','connect-timeout','Router','../../components/auth/service','./squareRecording.controller','get','isAuthenticated','index','/:id','show','download','post','create','put','update'];(function(_0x1b19bb,_0x4b2200){var _0x3d0639=function(_0x27edff){while(--_0x27edff){_0x1b19bb['push'](_0x1b19bb['shift']());}};_0x3d0639(++_0x4b2200);}(_0xf354,0x17c));var _0x4f35=function(_0x2d64f3,_0x4b58e3){_0x2d64f3=_0x2d64f3-0x0;var _0x13a2cf=_0xf354[_0x2d64f3];return _0x13a2cf;};'use strict';var multer=require(_0x4f35('0x0'));var util=require(_0x4f35('0x1'));var path=require('path');var timeout=require(_0x4f35('0x2'));var express=require('express');var router=express[_0x4f35('0x3')]();var auth=require(_0x4f35('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4f35('0x5'));router[_0x4f35('0x6')]('/',auth[_0x4f35('0x7')](),controller[_0x4f35('0x8')]);router[_0x4f35('0x6')](_0x4f35('0x9'),auth[_0x4f35('0x7')](),controller[_0x4f35('0xa')]);router[_0x4f35('0x6')]('/:id/download',auth[_0x4f35('0x7')](),controller[_0x4f35('0xb')]);router[_0x4f35('0xc')]('/',auth[_0x4f35('0x7')](),controller[_0x4f35('0xd')]);router[_0x4f35('0xe')](_0x4f35('0x9'),auth['isAuthenticated'](),controller[_0x4f35('0xf')]);router[_0x4f35('0x10')](_0x4f35('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x4f35('0x11')]=router;
\ No newline at end of file
index 28daf1e..e40004b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x997d=['STRING','sequelize','exports'];(function(_0x5d384c,_0x46b17b){var _0x52d18c=function(_0x10cbc9){while(--_0x10cbc9){_0x5d384c['push'](_0x5d384c['shift']());}};_0x52d18c(++_0x46b17b);}(_0x997d,0x18d));var _0xd997=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x997d[_0x122096];return _0x3d1966;};'use strict';var Sequelize=require(_0xd997('0x0'));module[_0xd997('0x1')]={'uniqueid':{'type':Sequelize[_0xd997('0x2')]},'callerid':{'type':Sequelize[_0xd997('0x2')]},'calleridname':{'type':Sequelize[_0xd997('0x2')]},'context':{'type':Sequelize[_0xd997('0x2')]},'extension':{'type':Sequelize[_0xd997('0x2')]},'priority':{'type':Sequelize[_0xd997('0x2')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0xd997('0x2')]},'projectName':{'type':Sequelize[_0xd997('0x2')]},'saveName':{'type':Sequelize[_0xd997('0x2')]},'filename':{'type':Sequelize[_0xd997('0x2')]},'savePath':{'type':Sequelize[_0xd997('0x2')]}};
\ No newline at end of file
+var _0xf8a9=['exports','STRING','sequelize'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xf8a9,0x18b));var _0x9f8a=function(_0x160662,_0x458682){_0x160662=_0x160662-0x0;var _0x4bd9cd=_0xf8a9[_0x160662];return _0x4bd9cd;};'use strict';var Sequelize=require(_0x9f8a('0x0'));module[_0x9f8a('0x1')]={'uniqueid':{'type':Sequelize[_0x9f8a('0x2')]},'callerid':{'type':Sequelize[_0x9f8a('0x2')]},'calleridname':{'type':Sequelize[_0x9f8a('0x2')]},'context':{'type':Sequelize[_0x9f8a('0x2')]},'extension':{'type':Sequelize[_0x9f8a('0x2')]},'priority':{'type':Sequelize[_0x9f8a('0x2')]},'accountcode':{'type':Sequelize[_0x9f8a('0x2')]},'dnid':{'type':Sequelize[_0x9f8a('0x2')]},'projectName':{'type':Sequelize[_0x9f8a('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x9f8a('0x2')]},'savePath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5bbe448..59c8c4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef17=['nolimit','limit','sort','where','pick','dateStart','add','day','merge','filter','map','type','key','VIRTUAL','field','options','includeAll','include','findAll','catch','show','params','intersection','length','find','create','body','download','../../components/encryptor','uniqueid','savePath','filename','format','%s.cypher','value','existsSync','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','status','json','count','offset','set','save','update','destroy','then','end','sendStatus','error','stack','send','index','SquareRecording','rawAttributes','model','keys','query','dateEnd','filters','fields','attributes','hasOwnProperty'];(function(_0x133f69,_0x2d4632){var _0x3b67bb=function(_0x203583){while(--_0x203583){_0x133f69['push'](_0x133f69['shift']());}};_0x3b67bb(++_0x2d4632);}(_0xef17,0x136));var _0x7ef1=function(_0x59102a,_0x640b67){_0x59102a=_0x59102a-0x0;var _0x5e18e9=_0xef17[_0x59102a];return _0x5e18e9;};'use strict';var pdf=require(_0x7ef1('0x0'));var emlformat=require(_0x7ef1('0x1'));var rimraf=require(_0x7ef1('0x2'));var zipdir=require(_0x7ef1('0x3'));var jsonpatch=require(_0x7ef1('0x4'));var rp=require(_0x7ef1('0x5'));var moment=require(_0x7ef1('0x6'));var BPromise=require(_0x7ef1('0x7'));var Mustache=require(_0x7ef1('0x8'));var util=require('util');var path=require(_0x7ef1('0x9'));var sox=require('sox');var csv=require(_0x7ef1('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x7ef1('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7ef1('0xc'));var deskjs=require(_0x7ef1('0xd'));var toCsv=require('to-csv');var querystring=require(_0x7ef1('0xe'));var Papa=require(_0x7ef1('0xf'));var Redis=require(_0x7ef1('0x10'));var qs=require(_0x7ef1('0x11'));var logger=require(_0x7ef1('0x12'))(_0x7ef1('0x13'));var utils=require(_0x7ef1('0x14'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d4522,_0x4dc653){_0x4dc653=_0x4dc653||0xcc;return function(_0x5ab4a4){if(_0x5ab4a4){return _0x1d4522['sendStatus'](_0x4dc653);}return _0x1d4522[_0x7ef1('0x15')](_0x4dc653)['end']();};}function respondWithResult(_0x36ddf9,_0x29c920){_0x29c920=_0x29c920||0xc8;return function(_0x32eed0){if(_0x32eed0){return _0x36ddf9[_0x7ef1('0x15')](_0x29c920)[_0x7ef1('0x16')](_0x32eed0);}};}function respondWithFilteredResult(_0x317125,_0x26e9fb){return function(_0x44d304){if(_0x44d304){var _0x57296a=_0x44d304[_0x7ef1('0x17')],_0x4de80f=_0x26e9fb[_0x7ef1('0x18')],_0x267f0e=_0x26e9fb['offset']+_0x26e9fb['limit'],_0x5d0499;if(_0x267f0e>=_0x57296a){_0x267f0e=_0x57296a;_0x5d0499=0xc8;}else{_0x5d0499=0xce;}_0x317125['status'](_0x5d0499);return _0x317125[_0x7ef1('0x19')]('Content-Range',_0x4de80f+'-'+_0x267f0e+'/'+_0x57296a)[_0x7ef1('0x16')](_0x44d304);}return null;};}function patchUpdates(_0x5c6333){return function(_0x5a7b2b){try{jsonpatch['apply'](_0x5a7b2b,_0x5c6333,!![]);}catch(_0x2bd224){return BPromise['reject'](_0x2bd224);}return _0x5a7b2b[_0x7ef1('0x1a')]();};}function saveUpdates(_0x2a8fab,_0x5291b0){return function(_0x568d0a){if(_0x568d0a){return _0x568d0a[_0x7ef1('0x1b')](_0x2a8fab)['then'](function(_0x458459){return _0x458459;});}return null;};}function removeEntity(_0x33f89b,_0x2f8164){return function(_0x248f34){if(_0x248f34){return _0x248f34[_0x7ef1('0x1c')]()[_0x7ef1('0x1d')](function(){_0x33f89b[_0x7ef1('0x15')](0xcc)[_0x7ef1('0x1e')]();});}};}function handleEntityNotFound(_0x490162,_0x2a1bdd){return function(_0x3b118f){if(!_0x3b118f){_0x490162[_0x7ef1('0x1f')](0x194);}return _0x3b118f;};}function handleError(_0x3324d4,_0x31b5bf){_0x31b5bf=_0x31b5bf||0x1f4;return function(_0x2daf86){logger[_0x7ef1('0x20')](_0x2daf86[_0x7ef1('0x21')]);if(_0x2daf86['name']){delete _0x2daf86['name'];}_0x3324d4[_0x7ef1('0x15')](_0x31b5bf)[_0x7ef1('0x22')](_0x2daf86);};}exports[_0x7ef1('0x23')]=function(_0xcfce5e,_0x19c2c2){var _0x4cfa16={},_0x2e62a4={},_0x9eca93={'count':0x0,'rows':[]};var _0x445902=db[_0x7ef1('0x24')][_0x7ef1('0x25')];_0x2e62a4[_0x7ef1('0x26')]=_[_0x7ef1('0x27')](_0x445902);var _0x58e7ee={'dateStart':_0xcfce5e[_0x7ef1('0x28')]['dateStart'],'dateEnd':_0xcfce5e[_0x7ef1('0x28')][_0x7ef1('0x29')]};delete _0xcfce5e['query']['dateStart'];delete _0xcfce5e[_0x7ef1('0x28')][_0x7ef1('0x29')];_0x2e62a4['query']=_[_0x7ef1('0x27')](_0xcfce5e['query']);_0x2e62a4[_0x7ef1('0x2a')]=_['intersection'](_0x2e62a4[_0x7ef1('0x26')],_0x2e62a4[_0x7ef1('0x28')]);_0x4cfa16['attributes']=_['intersection'](_0x2e62a4['model'],qs['fields'](_0xcfce5e[_0x7ef1('0x28')][_0x7ef1('0x2b')]));_0x4cfa16['attributes']=_0x4cfa16[_0x7ef1('0x2c')]['length']?_0x4cfa16['attributes']:_0x2e62a4[_0x7ef1('0x26')];if(!_0xcfce5e['query'][_0x7ef1('0x2d')](_0x7ef1('0x2e'))){_0x4cfa16[_0x7ef1('0x2f')]=qs[_0x7ef1('0x2f')](_0xcfce5e['query'][_0x7ef1('0x2f')]);_0x4cfa16[_0x7ef1('0x18')]=qs['offset'](_0xcfce5e['query']['offset']);}_0x4cfa16['order']=qs[_0x7ef1('0x30')](_0xcfce5e['query'][_0x7ef1('0x30')]);_0x4cfa16[_0x7ef1('0x31')]=qs[_0x7ef1('0x2a')](_[_0x7ef1('0x32')](_0xcfce5e[_0x7ef1('0x28')],_0x2e62a4[_0x7ef1('0x2a')]));if(_0x58e7ee[_0x7ef1('0x33')]){if(_0x58e7ee[_0x7ef1('0x29')]){_0x58e7ee[_0x7ef1('0x29')]=moment(_0x58e7ee[_0x7ef1('0x29')])[_0x7ef1('0x34')](0x1,'day');}else{_0x58e7ee[_0x7ef1('0x29')]=moment(_0x58e7ee[_0x7ef1('0x33')])['add'](0x1,_0x7ef1('0x35'));}_[_0x7ef1('0x36')](_0x4cfa16[_0x7ef1('0x31')],{'createdAt':{'$gte':_0x58e7ee[_0x7ef1('0x33')],'$lte':_0x58e7ee[_0x7ef1('0x29')]}});}if(_0xcfce5e['query'][_0x7ef1('0x37')]){_0x4cfa16[_0x7ef1('0x31')]=_[_0x7ef1('0x36')](_0x4cfa16[_0x7ef1('0x31')],{'$or':_[_0x7ef1('0x38')](_0x445902,function(_0x3c231a){if(_0x3c231a[_0x7ef1('0x39')][_0x7ef1('0x3a')]!==_0x7ef1('0x3b')){var _0x2ec2b8={};_0x2ec2b8[_0x3c231a[_0x7ef1('0x3c')]]={'$like':'%'+_0xcfce5e[_0x7ef1('0x28')][_0x7ef1('0x37')]+'%'};return _0x2ec2b8;}})});}_0x4cfa16=_[_0x7ef1('0x36')]({},_0x4cfa16,_0xcfce5e[_0x7ef1('0x3d')]);var _0x565d83={'where':_0x4cfa16[_0x7ef1('0x31')]};return db[_0x7ef1('0x24')][_0x7ef1('0x17')](_0x565d83)[_0x7ef1('0x1d')](function(_0x3889d7){_0x9eca93[_0x7ef1('0x17')]=_0x3889d7;if(_0xcfce5e[_0x7ef1('0x28')][_0x7ef1('0x3e')]){_0x4cfa16[_0x7ef1('0x3f')]=[{'all':!![]}];}return db[_0x7ef1('0x24')][_0x7ef1('0x40')](_0x4cfa16);})[_0x7ef1('0x1d')](function(_0x2fb6c4){_0x9eca93['rows']=_0x2fb6c4;return _0x9eca93;})[_0x7ef1('0x1d')](respondWithFilteredResult(_0x19c2c2,_0x4cfa16))[_0x7ef1('0x41')](handleError(_0x19c2c2,null));};exports[_0x7ef1('0x42')]=function(_0x3c80ad,_0x380ec3){var _0xe2e450={'raw':!![],'where':{'id':_0x3c80ad[_0x7ef1('0x43')]['id']}},_0x590751={};_0x590751[_0x7ef1('0x26')]=_[_0x7ef1('0x27')](db[_0x7ef1('0x24')][_0x7ef1('0x25')]);_0x590751[_0x7ef1('0x28')]=_['keys'](_0x3c80ad[_0x7ef1('0x28')]);_0x590751[_0x7ef1('0x2a')]=_[_0x7ef1('0x44')](_0x590751[_0x7ef1('0x26')],_0x590751['query']);_0xe2e450[_0x7ef1('0x2c')]=_['intersection'](_0x590751['model'],qs[_0x7ef1('0x2b')](_0x3c80ad['query'][_0x7ef1('0x2b')]));_0xe2e450['attributes']=_0xe2e450[_0x7ef1('0x2c')][_0x7ef1('0x45')]?_0xe2e450[_0x7ef1('0x2c')]:_0x590751[_0x7ef1('0x26')];if(_0x3c80ad[_0x7ef1('0x28')][_0x7ef1('0x3e')]){_0xe2e450[_0x7ef1('0x3f')]=[{'all':!![]}];}_0xe2e450=_[_0x7ef1('0x36')]({},_0xe2e450,_0x3c80ad['options']);return db['SquareRecording'][_0x7ef1('0x46')](_0xe2e450)[_0x7ef1('0x1d')](handleEntityNotFound(_0x380ec3,null))['then'](respondWithResult(_0x380ec3,null))[_0x7ef1('0x41')](handleError(_0x380ec3,null));};exports[_0x7ef1('0x47')]=function(_0xd06ca9,_0x5ce876){return db['SquareRecording'][_0x7ef1('0x47')](_0xd06ca9['body'],{})['then'](respondWithResult(_0x5ce876,0xc9))[_0x7ef1('0x41')](handleError(_0x5ce876,null));};exports[_0x7ef1('0x1b')]=function(_0x254c97,_0x34d28f){if(_0x254c97[_0x7ef1('0x48')]['id']){delete _0x254c97['body']['id'];}return db[_0x7ef1('0x24')]['find']({'where':{'id':_0x254c97[_0x7ef1('0x43')]['id']}})['then'](handleEntityNotFound(_0x34d28f,null))[_0x7ef1('0x1d')](saveUpdates(_0x254c97['body'],null))['then'](respondWithResult(_0x34d28f,null))[_0x7ef1('0x41')](handleError(_0x34d28f,null));};exports['destroy']=function(_0x1cbd0c,_0x30a4ce){return db['SquareRecording'][_0x7ef1('0x46')]({'where':{'id':_0x1cbd0c[_0x7ef1('0x43')]['id']}})[_0x7ef1('0x1d')](handleEntityNotFound(_0x30a4ce,null))['then'](removeEntity(_0x30a4ce,null))[_0x7ef1('0x41')](handleError(_0x30a4ce,null));};exports[_0x7ef1('0x49')]=function(_0x5102f3,_0x2906b2,_0xfb8eb0){var _0x119cf2=require(_0x7ef1('0x4a'));var _0x2f17a7=![];var _0x2e7f5e={};if(_0x5102f3[_0x7ef1('0x28')]['type']&&_0x5102f3['query'][_0x7ef1('0x39')]===_0x7ef1('0x4b')){_0x2e7f5e[_0x7ef1('0x4b')]=_0x5102f3[_0x7ef1('0x43')]['id'];}else{_0x2e7f5e['id']=_0x5102f3[_0x7ef1('0x43')]['id'];}return db[_0x7ef1('0x24')][_0x7ef1('0x46')]({'where':_0x2e7f5e,'attributes':['id',_0x7ef1('0x4c'),_0x7ef1('0x4d')],'raw':!![]})[_0x7ef1('0x1d')](handleEntityNotFound(_0x2906b2,null))[_0x7ef1('0x1d')](function(_0x5036cc){if(_0x5036cc){var _0x44ca8b=util[_0x7ef1('0x4e')](_0x7ef1('0x4f'),_0x5036cc[_0x7ef1('0x50')]);if(fs[_0x7ef1('0x51')](_0x44ca8b)){_0x2f17a7=!![];return _0x119cf2['decryptFile'](_0x44ca8b,_0x5036cc[_0x7ef1('0x4c')],config[_0x7ef1('0x52')][_0x7ef1('0x53')])['then'](function(){return _0x5036cc;});}return _0x5036cc;}})[_0x7ef1('0x1d')](function(_0x3e054e){if(_0x3e054e){if(!fs['existsSync'](_0x3e054e[_0x7ef1('0x4c')])){throw new db[(_0x7ef1('0x54'))][(_0x7ef1('0x55'))](_0x7ef1('0x56'));}if(_0x3e054e[_0x7ef1('0x4d')]){return _0x2906b2[_0x7ef1('0x49')](_0x3e054e[_0x7ef1('0x4c')],_0x3e054e[_0x7ef1('0x4d')]+path[_0x7ef1('0x57')](_0x3e054e[_0x7ef1('0x4c')]),function(){if(_0x2f17a7){fs[_0x7ef1('0x58')](_0x3e054e['savePath']);}});}else{return _0x2906b2[_0x7ef1('0x49')](_0x3e054e[_0x7ef1('0x4c')],function(_0x4ec84a){if(_0x2f17a7){fs[_0x7ef1('0x58')](_0x3e054e[_0x7ef1('0x4c')]);}});}}})[_0x7ef1('0x41')](handleError(_0x2906b2,null));};
\ No newline at end of file
+var _0xbacd=['util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','SquareRecording','rawAttributes','model','keys','query','dateEnd','dateStart','filters','attributes','intersection','fields','length','limit','order','sort','where','pick','add','day','filter','merge','type','key','VIRTUAL','field','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','download','../../components/encryptor','uniqueid','savePath','filename','%s.cypher','value','decryptFile','recording','existsSync','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','html-pdf','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache'];(function(_0x162b8e,_0xe6a0d7){var _0x1b87b0=function(_0x4fa0a9){while(--_0x4fa0a9){_0x162b8e['push'](_0x162b8e['shift']());}};_0x1b87b0(++_0xe6a0d7);}(_0xbacd,0x1c5));var _0xdbac=function(_0x5acefa,_0x50e7d1){_0x5acefa=_0x5acefa-0x0;var _0x1590b9=_0xbacd[_0x5acefa];return _0x1590b9;};'use strict';var pdf=require(_0xdbac('0x0'));var emlformat=require(_0xdbac('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xdbac('0x2'));var jsonpatch=require(_0xdbac('0x3'));var rp=require(_0xdbac('0x4'));var moment=require('moment');var BPromise=require(_0xdbac('0x5'));var Mustache=require(_0xdbac('0x6'));var util=require(_0xdbac('0x7'));var path=require(_0xdbac('0x8'));var sox=require(_0xdbac('0x9'));var csv=require(_0xdbac('0xa'));var ejs=require(_0xdbac('0xb'));var fs=require('fs');var _=require(_0xdbac('0xc'));var squel=require(_0xdbac('0xd'));var crypto=require(_0xdbac('0xe'));var jsforce=require(_0xdbac('0xf'));var deskjs=require(_0xdbac('0x10'));var toCsv=require(_0xdbac('0xa'));var querystring=require(_0xdbac('0x11'));var Papa=require(_0xdbac('0x12'));var Redis=require('ioredis');var qs=require(_0xdbac('0x13'));var logger=require(_0xdbac('0x14'))('api');var utils=require(_0xdbac('0x15'));var config=require('../../config/environment');var db=require(_0xdbac('0x16'))['db'];function respondWithStatusCode(_0x354884,_0x27689f){_0x27689f=_0x27689f||0xcc;return function(_0x29d151){if(_0x29d151){return _0x354884[_0xdbac('0x17')](_0x27689f);}return _0x354884[_0xdbac('0x18')](_0x27689f)[_0xdbac('0x19')]();};}function respondWithResult(_0x2c7f44,_0xe2d3ab){_0xe2d3ab=_0xe2d3ab||0xc8;return function(_0x519738){if(_0x519738){return _0x2c7f44[_0xdbac('0x18')](_0xe2d3ab)[_0xdbac('0x1a')](_0x519738);}};}function respondWithFilteredResult(_0x1eed36,_0x14ebaa){return function(_0x3c6740){if(_0x3c6740){var _0x1fc4ba=_0x3c6740[_0xdbac('0x1b')],_0x94a61=_0x14ebaa[_0xdbac('0x1c')],_0x176da6=_0x14ebaa[_0xdbac('0x1c')]+_0x14ebaa['limit'],_0x574e58;if(_0x176da6>=_0x1fc4ba){_0x176da6=_0x1fc4ba;_0x574e58=0xc8;}else{_0x574e58=0xce;}_0x1eed36[_0xdbac('0x18')](_0x574e58);return _0x1eed36[_0xdbac('0x1d')](_0xdbac('0x1e'),_0x94a61+'-'+_0x176da6+'/'+_0x1fc4ba)[_0xdbac('0x1a')](_0x3c6740);}return null;};}function patchUpdates(_0x50206a){return function(_0x1a9690){try{jsonpatch[_0xdbac('0x1f')](_0x1a9690,_0x50206a,!![]);}catch(_0x43fea9){return BPromise[_0xdbac('0x20')](_0x43fea9);}return _0x1a9690[_0xdbac('0x21')]();};}function saveUpdates(_0x4598d9,_0x9c74a5){return function(_0x5ec67c){if(_0x5ec67c){return _0x5ec67c[_0xdbac('0x22')](_0x4598d9)[_0xdbac('0x23')](function(_0x4e4af9){return _0x4e4af9;});}return null;};}function removeEntity(_0x29a665,_0x582c0b){return function(_0x1db731){if(_0x1db731){return _0x1db731['destroy']()[_0xdbac('0x23')](function(){_0x29a665[_0xdbac('0x18')](0xcc)[_0xdbac('0x19')]();});}};}function handleEntityNotFound(_0x4263c4,_0x200630){return function(_0x4148fc){if(!_0x4148fc){_0x4263c4[_0xdbac('0x17')](0x194);}return _0x4148fc;};}function handleError(_0x4e68b0,_0x361930){_0x361930=_0x361930||0x1f4;return function(_0x822567){logger[_0xdbac('0x24')](_0x822567[_0xdbac('0x25')]);if(_0x822567[_0xdbac('0x26')]){delete _0x822567[_0xdbac('0x26')];}_0x4e68b0[_0xdbac('0x18')](_0x361930)[_0xdbac('0x27')](_0x822567);};}exports[_0xdbac('0x28')]=function(_0x175ebc,_0x2cb8b4){var _0x1ea3c3={},_0x16c7bc={},_0x3c8bfc={'count':0x0,'rows':[]};var _0x35a7f0=db[_0xdbac('0x29')][_0xdbac('0x2a')];_0x16c7bc[_0xdbac('0x2b')]=_[_0xdbac('0x2c')](_0x35a7f0);var _0xe744cc={'dateStart':_0x175ebc[_0xdbac('0x2d')]['dateStart'],'dateEnd':_0x175ebc[_0xdbac('0x2d')][_0xdbac('0x2e')]};delete _0x175ebc[_0xdbac('0x2d')][_0xdbac('0x2f')];delete _0x175ebc['query']['dateEnd'];_0x16c7bc[_0xdbac('0x2d')]=_[_0xdbac('0x2c')](_0x175ebc[_0xdbac('0x2d')]);_0x16c7bc[_0xdbac('0x30')]=_['intersection'](_0x16c7bc[_0xdbac('0x2b')],_0x16c7bc[_0xdbac('0x2d')]);_0x1ea3c3[_0xdbac('0x31')]=_[_0xdbac('0x32')](_0x16c7bc[_0xdbac('0x2b')],qs[_0xdbac('0x33')](_0x175ebc[_0xdbac('0x2d')][_0xdbac('0x33')]));_0x1ea3c3['attributes']=_0x1ea3c3['attributes'][_0xdbac('0x34')]?_0x1ea3c3[_0xdbac('0x31')]:_0x16c7bc[_0xdbac('0x2b')];if(!_0x175ebc[_0xdbac('0x2d')]['hasOwnProperty']('nolimit')){_0x1ea3c3[_0xdbac('0x35')]=qs[_0xdbac('0x35')](_0x175ebc[_0xdbac('0x2d')][_0xdbac('0x35')]);_0x1ea3c3[_0xdbac('0x1c')]=qs[_0xdbac('0x1c')](_0x175ebc[_0xdbac('0x2d')][_0xdbac('0x1c')]);}_0x1ea3c3[_0xdbac('0x36')]=qs[_0xdbac('0x37')](_0x175ebc[_0xdbac('0x2d')][_0xdbac('0x37')]);_0x1ea3c3[_0xdbac('0x38')]=qs['filters'](_[_0xdbac('0x39')](_0x175ebc['query'],_0x16c7bc[_0xdbac('0x30')]));if(_0xe744cc[_0xdbac('0x2f')]){if(_0xe744cc[_0xdbac('0x2e')]){_0xe744cc[_0xdbac('0x2e')]=moment(_0xe744cc['dateEnd'])[_0xdbac('0x3a')](0x1,_0xdbac('0x3b'));}else{_0xe744cc['dateEnd']=moment(_0xe744cc['dateStart'])[_0xdbac('0x3a')](0x1,'day');}_['merge'](_0x1ea3c3[_0xdbac('0x38')],{'createdAt':{'$gte':_0xe744cc[_0xdbac('0x2f')],'$lte':_0xe744cc[_0xdbac('0x2e')]}});}if(_0x175ebc['query'][_0xdbac('0x3c')]){_0x1ea3c3[_0xdbac('0x38')]=_[_0xdbac('0x3d')](_0x1ea3c3[_0xdbac('0x38')],{'$or':_['map'](_0x35a7f0,function(_0x49c5b0){if(_0x49c5b0[_0xdbac('0x3e')][_0xdbac('0x3f')]!==_0xdbac('0x40')){var _0x2edbb0={};_0x2edbb0[_0x49c5b0[_0xdbac('0x41')]]={'$like':'%'+_0x175ebc['query'][_0xdbac('0x3c')]+'%'};return _0x2edbb0;}})});}_0x1ea3c3=_[_0xdbac('0x3d')]({},_0x1ea3c3,_0x175ebc['options']);var _0x182a97={'where':_0x1ea3c3[_0xdbac('0x38')]};return db[_0xdbac('0x29')][_0xdbac('0x1b')](_0x182a97)[_0xdbac('0x23')](function(_0x575b59){_0x3c8bfc[_0xdbac('0x1b')]=_0x575b59;if(_0x175ebc[_0xdbac('0x2d')][_0xdbac('0x42')]){_0x1ea3c3[_0xdbac('0x43')]=[{'all':!![]}];}return db[_0xdbac('0x29')][_0xdbac('0x44')](_0x1ea3c3);})[_0xdbac('0x23')](function(_0x3c1894){_0x3c8bfc[_0xdbac('0x45')]=_0x3c1894;return _0x3c8bfc;})[_0xdbac('0x23')](respondWithFilteredResult(_0x2cb8b4,_0x1ea3c3))[_0xdbac('0x46')](handleError(_0x2cb8b4,null));};exports[_0xdbac('0x47')]=function(_0x575384,_0x5395fd){var _0x5b10e9={'raw':!![],'where':{'id':_0x575384[_0xdbac('0x48')]['id']}},_0x5495eb={};_0x5495eb[_0xdbac('0x2b')]=_[_0xdbac('0x2c')](db[_0xdbac('0x29')][_0xdbac('0x2a')]);_0x5495eb[_0xdbac('0x2d')]=_[_0xdbac('0x2c')](_0x575384[_0xdbac('0x2d')]);_0x5495eb[_0xdbac('0x30')]=_['intersection'](_0x5495eb['model'],_0x5495eb['query']);_0x5b10e9[_0xdbac('0x31')]=_[_0xdbac('0x32')](_0x5495eb['model'],qs['fields'](_0x575384['query'][_0xdbac('0x33')]));_0x5b10e9[_0xdbac('0x31')]=_0x5b10e9[_0xdbac('0x31')]['length']?_0x5b10e9[_0xdbac('0x31')]:_0x5495eb[_0xdbac('0x2b')];if(_0x575384[_0xdbac('0x2d')][_0xdbac('0x42')]){_0x5b10e9[_0xdbac('0x43')]=[{'all':!![]}];}_0x5b10e9=_['merge']({},_0x5b10e9,_0x575384[_0xdbac('0x49')]);return db[_0xdbac('0x29')][_0xdbac('0x4a')](_0x5b10e9)[_0xdbac('0x23')](handleEntityNotFound(_0x5395fd,null))['then'](respondWithResult(_0x5395fd,null))[_0xdbac('0x46')](handleError(_0x5395fd,null));};exports[_0xdbac('0x4b')]=function(_0x1463ca,_0x5d6e86){return db[_0xdbac('0x29')][_0xdbac('0x4b')](_0x1463ca[_0xdbac('0x4c')],{})[_0xdbac('0x23')](respondWithResult(_0x5d6e86,0xc9))[_0xdbac('0x46')](handleError(_0x5d6e86,null));};exports[_0xdbac('0x22')]=function(_0x5563e4,_0x357c03){if(_0x5563e4[_0xdbac('0x4c')]['id']){delete _0x5563e4['body']['id'];}return db[_0xdbac('0x29')][_0xdbac('0x4a')]({'where':{'id':_0x5563e4[_0xdbac('0x48')]['id']}})[_0xdbac('0x23')](handleEntityNotFound(_0x357c03,null))['then'](saveUpdates(_0x5563e4['body'],null))[_0xdbac('0x23')](respondWithResult(_0x357c03,null))[_0xdbac('0x46')](handleError(_0x357c03,null));};exports['destroy']=function(_0x4d9bd7,_0x3f0b35){return db['SquareRecording'][_0xdbac('0x4a')]({'where':{'id':_0x4d9bd7[_0xdbac('0x48')]['id']}})[_0xdbac('0x23')](handleEntityNotFound(_0x3f0b35,null))['then'](removeEntity(_0x3f0b35,null))['catch'](handleError(_0x3f0b35,null));};exports[_0xdbac('0x4d')]=function(_0x1fb86d,_0x36155e,_0x107f36){var _0x16f9bc=require(_0xdbac('0x4e'));var _0x1641b3=![];var _0x50a29b={};if(_0x1fb86d['query'][_0xdbac('0x3e')]&&_0x1fb86d[_0xdbac('0x2d')][_0xdbac('0x3e')]===_0xdbac('0x4f')){_0x50a29b[_0xdbac('0x4f')]=_0x1fb86d[_0xdbac('0x48')]['id'];}else{_0x50a29b['id']=_0x1fb86d['params']['id'];}return db[_0xdbac('0x29')][_0xdbac('0x4a')]({'where':_0x50a29b,'attributes':['id',_0xdbac('0x50'),_0xdbac('0x51')],'raw':!![]})[_0xdbac('0x23')](handleEntityNotFound(_0x36155e,null))['then'](function(_0x49fcf5){if(_0x49fcf5){var _0xf7c0db=util['format'](_0xdbac('0x52'),_0x49fcf5[_0xdbac('0x53')]);if(fs['existsSync'](_0xf7c0db)){_0x1641b3=!![];return _0x16f9bc[_0xdbac('0x54')](_0xf7c0db,_0x49fcf5['savePath'],config['secrets'][_0xdbac('0x55')])[_0xdbac('0x23')](function(){return _0x49fcf5;});}return _0x49fcf5;}})['then'](function(_0x50d459){if(_0x50d459){if(!fs[_0xdbac('0x56')](_0x50d459['savePath'])){throw new db[(_0xdbac('0x57'))][(_0xdbac('0x58'))](_0xdbac('0x59'));}if(_0x50d459['filename']){return _0x36155e['download'](_0x50d459[_0xdbac('0x50')],_0x50d459[_0xdbac('0x51')]+path[_0xdbac('0x5a')](_0x50d459['savePath']),function(){if(_0x1641b3){fs[_0xdbac('0x5b')](_0x50d459[_0xdbac('0x50')]);}});}else{return _0x36155e['download'](_0x50d459[_0xdbac('0x50')],function(_0x4dd190){if(_0x1641b3){fs['unlink'](_0x50d459[_0xdbac('0x50')]);}});}}})[_0xdbac('0x46')](handleError(_0x36155e,null));};
\ No newline at end of file
index f3808c9..93d7ef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['api','moment','bluebird','request-promise','./squareRecording.attributes','exports','define','SquareRecording','lodash','../../config/logger'];(function(_0x1cfb6e,_0x33de88){var _0x12d65c=function(_0x398e76){while(--_0x398e76){_0x1cfb6e['push'](_0x1cfb6e['shift']());}};_0x12d65c(++_0x33de88);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x5c5a2c,_0xdb36a8){_0x5c5a2c=_0x5c5a2c-0x0;var _0x4309d7=_0x3eea[_0x5c5a2c];return _0x4309d7;};'use strict';var _=require(_0xa3ee('0x0'));var util=require('util');var logger=require(_0xa3ee('0x1'))(_0xa3ee('0x2'));var moment=require(_0xa3ee('0x3'));var BPromise=require(_0xa3ee('0x4'));var rp=require(_0xa3ee('0x5'));var attributes=require(_0xa3ee('0x6'));module[_0xa3ee('0x7')]=function(_0x35ed7d,_0x23c42d){return _0x35ed7d[_0xa3ee('0x8')](_0xa3ee('0x9'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb94=['./squareRecording.attributes','exports','SquareRecording','square_recordings','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x625f2,_0x216119){var _0x19a553=function(_0x5a583a){while(--_0x5a583a){_0x625f2['push'](_0x625f2['shift']());}};_0x19a553(++_0x216119);}(_0xdb94,0xe5));var _0x4db9=function(_0x3b1f9b,_0x42ff72){_0x3b1f9b=_0x3b1f9b-0x0;var _0x25f073=_0xdb94[_0x3b1f9b];return _0x25f073;};'use strict';var _=require('lodash');var util=require(_0x4db9('0x0'));var logger=require(_0x4db9('0x1'))('api');var moment=require(_0x4db9('0x2'));var BPromise=require(_0x4db9('0x3'));var rp=require(_0x4db9('0x4'));var attributes=require(_0x4db9('0x5'));module[_0x4db9('0x6')]=function(_0x592097,_0x39eccb){return _0x592097['define'](_0x4db9('0x7'),attributes,{'tableName':_0x4db9('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b2092b..0a1ebd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3335=['SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateSquareRecording','SquareRecording','create','body','options','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3335,0x144));var _0x5333=function(_0x102ff9,_0x907658){_0x102ff9=_0x102ff9-0x0;var _0x24fa97=_0x3335[_0x102ff9];return _0x24fa97;};'use strict';var _=require(_0x5333('0x0'));var util=require(_0x5333('0x1'));var moment=require(_0x5333('0x2'));var BPromise=require(_0x5333('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5333('0x4'));var db=require(_0x5333('0x5'))['db'];var utils=require(_0x5333('0x6'));var logger=require(_0x5333('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5333('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4611b4,_0x19bc71,_0x111958){return new BPromise(function(_0x27baaa,_0x58af60){return client['request'](_0x4611b4,_0x111958)[_0x5333('0x9')](function(_0x3310a8){logger[_0x5333('0xa')](_0x5333('0xb'),_0x19bc71,_0x5333('0xc'));logger[_0x5333('0xd')](_0x5333('0xe'),_0x19bc71,_0x5333('0xc'),JSON[_0x5333('0xf')](_0x3310a8));if(_0x3310a8[_0x5333('0x10')]){if(_0x3310a8[_0x5333('0x10')][_0x5333('0x11')]===0x1f4){logger[_0x5333('0x10')](_0x5333('0xb'),_0x19bc71,_0x3310a8[_0x5333('0x10')][_0x5333('0x12')]);return _0x58af60(_0x3310a8[_0x5333('0x10')][_0x5333('0x12')]);}logger[_0x5333('0x10')](_0x5333('0xb'),_0x19bc71,_0x3310a8['error'][_0x5333('0x12')]);return _0x27baaa(_0x3310a8[_0x5333('0x10')][_0x5333('0x12')]);}else{logger[_0x5333('0xa')](_0x5333('0xb'),_0x19bc71,_0x5333('0xc'));_0x27baaa(_0x3310a8[_0x5333('0x13')][_0x5333('0x12')]);}})['catch'](function(_0x13f171){logger[_0x5333('0x10')](_0x5333('0xb'),_0x19bc71,_0x13f171);_0x58af60(_0x13f171);});});}exports[_0x5333('0x14')]=function(_0x1dbd24){var _0x12bd1e=this;return new Promise(function(_0x52c376,_0x278aeb){return db[_0x5333('0x15')][_0x5333('0x16')](_0x1dbd24[_0x5333('0x17')],{'raw':_0x1dbd24[_0x5333('0x18')]?_0x1dbd24[_0x5333('0x18')][_0x5333('0x19')]===undefined?!![]:![]:!![]})[_0x5333('0x9')](function(_0xfe7a68){logger['info']('CreateSquareRecording',_0x1dbd24);logger[_0x5333('0xd')]('CreateSquareRecording',_0x1dbd24,JSON[_0x5333('0xf')](_0xfe7a68));_0x52c376(_0xfe7a68);})['catch'](function(_0x37c769){logger[_0x5333('0x10')](_0x5333('0x14'),_0x37c769[_0x5333('0x12')],_0x1dbd24);_0x278aeb(_0x12bd1e['error'](0x1f4,_0x37c769[_0x5333('0x12')]));});});};
\ No newline at end of file
+var _0xa202=['body','raw','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','request\x20sent','debug','stringify','error','code','message','SquareRecording,\x20%s,\x20%s','info','catch','CreateSquareRecording','SquareRecording','create'];(function(_0x1fd75a,_0xb05b06){var _0x28cb17=function(_0x34246e){while(--_0x34246e){_0x1fd75a['push'](_0x1fd75a['shift']());}};_0x28cb17(++_0xb05b06);}(_0xa202,0x192));var _0x2a20=function(_0x2e8ba9,_0x19b29c){_0x2e8ba9=_0x2e8ba9-0x0;var _0x5e356e=_0xa202[_0x2e8ba9];return _0x5e356e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2a20('0x0'));var BPromise=require(_0x2a20('0x1'));var rs=require(_0x2a20('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2a20('0x3'));var logger=require(_0x2a20('0x4'))(_0x2a20('0x5'));var config=require('../../config/environment');var jayson=require(_0x2a20('0x6'));var client=jayson[_0x2a20('0x7')][_0x2a20('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x592ce0,_0x47ed88,_0xdb1c4d){return new BPromise(function(_0x4c7357,_0xaf50b2){return client[_0x2a20('0x9')](_0x592ce0,_0xdb1c4d)[_0x2a20('0xa')](function(_0x58860c){logger['info']('SquareRecording,\x20%s,\x20%s',_0x47ed88,_0x2a20('0xb'));logger[_0x2a20('0xc')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x47ed88,_0x2a20('0xb'),JSON[_0x2a20('0xd')](_0x58860c));if(_0x58860c[_0x2a20('0xe')]){if(_0x58860c[_0x2a20('0xe')][_0x2a20('0xf')]===0x1f4){logger[_0x2a20('0xe')]('SquareRecording,\x20%s,\x20%s',_0x47ed88,_0x58860c[_0x2a20('0xe')][_0x2a20('0x10')]);return _0xaf50b2(_0x58860c['error'][_0x2a20('0x10')]);}logger[_0x2a20('0xe')](_0x2a20('0x11'),_0x47ed88,_0x58860c[_0x2a20('0xe')][_0x2a20('0x10')]);return _0x4c7357(_0x58860c['error'][_0x2a20('0x10')]);}else{logger[_0x2a20('0x12')](_0x2a20('0x11'),_0x47ed88,_0x2a20('0xb'));_0x4c7357(_0x58860c['result'][_0x2a20('0x10')]);}})[_0x2a20('0x13')](function(_0x3cf17b){logger[_0x2a20('0xe')](_0x2a20('0x11'),_0x47ed88,_0x3cf17b);_0xaf50b2(_0x3cf17b);});});}exports[_0x2a20('0x14')]=function(_0x477054){var _0x398db3=this;return new Promise(function(_0x2b84a8,_0x22d19b){return db[_0x2a20('0x15')][_0x2a20('0x16')](_0x477054[_0x2a20('0x17')],{'raw':_0x477054['options']?_0x477054['options'][_0x2a20('0x18')]===undefined?!![]:![]:!![]})[_0x2a20('0xa')](function(_0x2c01df){logger[_0x2a20('0x12')]('CreateSquareRecording',_0x477054);logger[_0x2a20('0xc')](_0x2a20('0x14'),_0x477054,JSON[_0x2a20('0xd')](_0x2c01df));_0x2b84a8(_0x2c01df);})[_0x2a20('0x13')](function(_0x14db8d){logger[_0x2a20('0xe')](_0x2a20('0x14'),_0x14db8d[_0x2a20('0x10')],_0x477054);_0x22d19b(_0x398db3[_0x2a20('0xe')](0x1f4,_0x14db8d['message']));});});};
\ No newline at end of file
index f35856c..6580bd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc311=['express','Router','../../components/auth/service','../../components/interaction/service','get','index','/describe','isAuthenticated','describe','/:id','show','post','put','update','multer','util','connect-timeout'];(function(_0x58587a,_0x4b08e5){var _0x37e80e=function(_0x293e19){while(--_0x293e19){_0x58587a['push'](_0x58587a['shift']());}};_0x37e80e(++_0x4b08e5);}(_0xc311,0x96));var _0x1c31=function(_0x330b24,_0x1c9b68){_0x330b24=_0x330b24-0x0;var _0x3967f6=_0xc311[_0x330b24];return _0x3967f6;};'use strict';var multer=require(_0x1c31('0x0'));var util=require(_0x1c31('0x1'));var path=require('path');var timeout=require(_0x1c31('0x2'));var express=require(_0x1c31('0x3'));var router=express[_0x1c31('0x4')]();var auth=require(_0x1c31('0x5'));var interaction=require(_0x1c31('0x6'));var config=require('../../config/environment');var controller=require('./squareReport.controller');router[_0x1c31('0x7')]('/',auth['isAuthenticated'](),controller[_0x1c31('0x8')]);router[_0x1c31('0x7')](_0x1c31('0x9'),auth[_0x1c31('0xa')](),controller[_0x1c31('0xb')]);router[_0x1c31('0x7')](_0x1c31('0xc'),auth['isAuthenticated'](),controller[_0x1c31('0xd')]);router[_0x1c31('0xe')]('/',auth[_0x1c31('0xa')](),controller['create']);router[_0x1c31('0xf')]('/:id',auth[_0x1c31('0xa')](),controller[_0x1c31('0x10')]);router['delete'](_0x1c31('0xc'),auth[_0x1c31('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x8b2f=['update','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./squareReport.controller','get','isAuthenticated','index','describe','show','post','create','put','/:id'];(function(_0x293564,_0x1dd2d1){var _0x34c8aa=function(_0x50354d){while(--_0x50354d){_0x293564['push'](_0x293564['shift']());}};_0x34c8aa(++_0x1dd2d1);}(_0x8b2f,0x158));var _0xf8b2=function(_0x21d4cf,_0x4f8969){_0x21d4cf=_0x21d4cf-0x0;var _0x51e9f8=_0x8b2f[_0x21d4cf];return _0x51e9f8;};'use strict';var multer=require(_0xf8b2('0x0'));var util=require(_0xf8b2('0x1'));var path=require(_0xf8b2('0x2'));var timeout=require(_0xf8b2('0x3'));var express=require('express');var router=express[_0xf8b2('0x4')]();var auth=require(_0xf8b2('0x5'));var interaction=require(_0xf8b2('0x6'));var config=require('../../config/environment');var controller=require(_0xf8b2('0x7'));router[_0xf8b2('0x8')]('/',auth[_0xf8b2('0x9')](),controller[_0xf8b2('0xa')]);router[_0xf8b2('0x8')]('/describe',auth[_0xf8b2('0x9')](),controller[_0xf8b2('0xb')]);router[_0xf8b2('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xf8b2('0xc')]);router[_0xf8b2('0xd')]('/',auth[_0xf8b2('0x9')](),controller[_0xf8b2('0xe')]);router[_0xf8b2('0xf')](_0xf8b2('0x10'),auth[_0xf8b2('0x9')](),controller[_0xf8b2('0x11')]);router['delete'](_0xf8b2('0x10'),auth[_0xf8b2('0x9')](),controller[_0xf8b2('0x12')]);module['exports']=router;
\ No newline at end of file
index 3c99ed0..1fbd275 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed2=['sequelize','STRING','DATE','BOOLEAN'];(function(_0x39f4ed,_0xad040){var _0x52fbcf=function(_0xb9fd77){while(--_0xb9fd77){_0x39f4ed['push'](_0x39f4ed['shift']());}};_0x52fbcf(++_0xad040);}(_0x5ed2,0x114));var _0x25ed=function(_0x37cc52,_0x459a9b){_0x37cc52=_0x37cc52-0x0;var _0x2b4a90=_0x5ed2[_0x37cc52];return _0x2b4a90;};'use strict';var Sequelize=require(_0x25ed('0x0'));module['exports']={'network':{'type':Sequelize[_0x25ed('0x1')]},'network_script':{'type':Sequelize[_0x25ed('0x1')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x25ed('0x1')]},'language':{'type':Sequelize[_0x25ed('0x1')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x25ed('0x1')]},'version':{'type':Sequelize[_0x25ed('0x1')]},'callerid':{'type':Sequelize[_0x25ed('0x1')]},'calleridname':{'type':Sequelize[_0x25ed('0x1')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x25ed('0x1')]},'callington':{'type':Sequelize[_0x25ed('0x1')]},'callingtns':{'type':Sequelize[_0x25ed('0x1')]},'dnid':{'type':Sequelize[_0x25ed('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x25ed('0x1')]},'accountcode':{'type':Sequelize[_0x25ed('0x1')]},'threadid':{'type':Sequelize[_0x25ed('0x1')]},'project_name':{'type':Sequelize[_0x25ed('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x25ed('0x2')]},'bot':{'type':Sequelize[_0x25ed('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1ee2=['sequelize','exports','STRING','DATE'];(function(_0x56ab7e,_0x3d47af){var _0x4205b9=function(_0x362220){while(--_0x362220){_0x56ab7e['push'](_0x56ab7e['shift']());}};_0x4205b9(++_0x3d47af);}(_0x1ee2,0x11c));var _0x21ee=function(_0x4731b4,_0x3e3b3e){_0x4731b4=_0x4731b4-0x0;var _0x1c840f=_0x1ee2[_0x4731b4];return _0x1c840f;};'use strict';var Sequelize=require(_0x21ee('0x0'));module[_0x21ee('0x1')]={'network':{'type':Sequelize[_0x21ee('0x2')]},'network_script':{'type':Sequelize[_0x21ee('0x2')]},'request':{'type':Sequelize[_0x21ee('0x2')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x21ee('0x2')]},'type':{'type':Sequelize[_0x21ee('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x21ee('0x2')]},'calleridname':{'type':Sequelize[_0x21ee('0x2')]},'callingpres':{'type':Sequelize[_0x21ee('0x2')]},'callingani2':{'type':Sequelize[_0x21ee('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0x21ee('0x2')]},'dnid':{'type':Sequelize[_0x21ee('0x2')]},'rdnis':{'type':Sequelize[_0x21ee('0x2')]},'context':{'type':Sequelize[_0x21ee('0x2')]},'extension':{'type':Sequelize[_0x21ee('0x2')]},'priority':{'type':Sequelize[_0x21ee('0x2')]},'enhanced':{'type':Sequelize[_0x21ee('0x2')]},'accountcode':{'type':Sequelize[_0x21ee('0x2')]},'threadid':{'type':Sequelize[_0x21ee('0x2')]},'project_name':{'type':Sequelize[_0x21ee('0x2')]},'joinAt':{'type':Sequelize[_0x21ee('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 4e3efa3..f59076a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ccb=['nolimit','order','sort','where','add','day','merge','map','type','key','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','find','body','describe','html-pdf','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','SquareReport','rawAttributes','model','query','dateEnd','dateStart','keys','filters','attributes','intersection','fields','hasOwnProperty'];(function(_0x5817e6,_0x44a2d0){var _0x51916a=function(_0x1a56e3){while(--_0x1a56e3){_0x5817e6['push'](_0x5817e6['shift']());}};_0x51916a(++_0x44a2d0);}(_0x7ccb,0x1de));var _0xb7cc=function(_0x54dcad,_0x554f46){_0x54dcad=_0x54dcad-0x0;var _0x537c56=_0x7ccb[_0x54dcad];return _0x537c56;};'use strict';var pdf=require(_0xb7cc('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xb7cc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb7cc('0x2'));var rp=require(_0xb7cc('0x3'));var moment=require(_0xb7cc('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb7cc('0x5'));var path=require(_0xb7cc('0x6'));var sox=require(_0xb7cc('0x7'));var csv=require(_0xb7cc('0x8'));var ejs=require(_0xb7cc('0x9'));var fs=require('fs');var _=require(_0xb7cc('0xa'));var squel=require(_0xb7cc('0xb'));var crypto=require(_0xb7cc('0xc'));var jsforce=require(_0xb7cc('0xd'));var deskjs=require(_0xb7cc('0xe'));var toCsv=require(_0xb7cc('0x8'));var querystring=require(_0xb7cc('0xf'));var Papa=require('papaparse');var Redis=require(_0xb7cc('0x10'));var qs=require(_0xb7cc('0x11'));var logger=require(_0xb7cc('0x12'))(_0xb7cc('0x13'));var utils=require(_0xb7cc('0x14'));var config=require(_0xb7cc('0x15'));var db=require(_0xb7cc('0x16'))['db'];function respondWithStatusCode(_0x366094,_0x4e574a){_0x4e574a=_0x4e574a||0xcc;return function(_0x4157a6){if(_0x4157a6){return _0x366094[_0xb7cc('0x17')](_0x4e574a);}return _0x366094[_0xb7cc('0x18')](_0x4e574a)[_0xb7cc('0x19')]();};}function respondWithResult(_0x5a0fb8,_0x8720f){_0x8720f=_0x8720f||0xc8;return function(_0x3e97a2){if(_0x3e97a2){return _0x5a0fb8[_0xb7cc('0x18')](_0x8720f)[_0xb7cc('0x1a')](_0x3e97a2);}};}function respondWithFilteredResult(_0x24ef6b,_0x3a4e6e){return function(_0x43ae8e){if(_0x43ae8e){var _0x1fe9bb=_0x43ae8e[_0xb7cc('0x1b')],_0x459bc7=_0x3a4e6e['offset'],_0x45f16b=_0x3a4e6e[_0xb7cc('0x1c')]+_0x3a4e6e[_0xb7cc('0x1d')],_0x2a1d87;if(_0x45f16b>=_0x1fe9bb){_0x45f16b=_0x1fe9bb;_0x2a1d87=0xc8;}else{_0x2a1d87=0xce;}_0x24ef6b['status'](_0x2a1d87);return _0x24ef6b[_0xb7cc('0x1e')](_0xb7cc('0x1f'),_0x459bc7+'-'+_0x45f16b+'/'+_0x1fe9bb)[_0xb7cc('0x1a')](_0x43ae8e);}return null;};}function patchUpdates(_0x11a463){return function(_0x2dab86){try{jsonpatch[_0xb7cc('0x20')](_0x2dab86,_0x11a463,!![]);}catch(_0x37a251){return BPromise[_0xb7cc('0x21')](_0x37a251);}return _0x2dab86[_0xb7cc('0x22')]();};}function saveUpdates(_0x50d65a,_0x13fd69){return function(_0x3ef3af){if(_0x3ef3af){return _0x3ef3af[_0xb7cc('0x23')](_0x50d65a)[_0xb7cc('0x24')](function(_0x26a9a3){return _0x26a9a3;});}return null;};}function removeEntity(_0x100b7a,_0x34b491){return function(_0x32e29e){if(_0x32e29e){return _0x32e29e[_0xb7cc('0x25')]()['then'](function(){_0x100b7a[_0xb7cc('0x18')](0xcc)[_0xb7cc('0x19')]();});}};}function handleEntityNotFound(_0x100c25,_0x5553ca){return function(_0x2309ce){if(!_0x2309ce){_0x100c25[_0xb7cc('0x17')](0x194);}return _0x2309ce;};}function handleError(_0x4f4ad0,_0x374664){_0x374664=_0x374664||0x1f4;return function(_0x5e343b){logger[_0xb7cc('0x26')](_0x5e343b[_0xb7cc('0x27')]);if(_0x5e343b[_0xb7cc('0x28')]){delete _0x5e343b['name'];}_0x4f4ad0[_0xb7cc('0x18')](_0x374664)[_0xb7cc('0x29')](_0x5e343b);};}exports['index']=function(_0x6ad98c,_0x43ec29){var _0x2e5855={},_0x4e0a05={},_0x4678ef={'count':0x0,'rows':[]};var _0x3a77c5=db[_0xb7cc('0x2a')][_0xb7cc('0x2b')];_0x4e0a05[_0xb7cc('0x2c')]=_['keys'](_0x3a77c5);var _0x2a3ccd={'dateStart':_0x6ad98c[_0xb7cc('0x2d')]['dateStart'],'dateEnd':_0x6ad98c[_0xb7cc('0x2d')][_0xb7cc('0x2e')]};delete _0x6ad98c[_0xb7cc('0x2d')][_0xb7cc('0x2f')];delete _0x6ad98c[_0xb7cc('0x2d')][_0xb7cc('0x2e')];_0x4e0a05['query']=_[_0xb7cc('0x30')](_0x6ad98c['query']);_0x4e0a05[_0xb7cc('0x31')]=_['intersection'](_0x4e0a05[_0xb7cc('0x2c')],_0x4e0a05['query']);_0x2e5855[_0xb7cc('0x32')]=_[_0xb7cc('0x33')](_0x4e0a05[_0xb7cc('0x2c')],qs[_0xb7cc('0x34')](_0x6ad98c[_0xb7cc('0x2d')][_0xb7cc('0x34')]));_0x2e5855['attributes']=_0x2e5855['attributes']['length']?_0x2e5855[_0xb7cc('0x32')]:_0x4e0a05[_0xb7cc('0x2c')];if(!_0x6ad98c[_0xb7cc('0x2d')][_0xb7cc('0x35')](_0xb7cc('0x36'))){_0x2e5855[_0xb7cc('0x1d')]=qs[_0xb7cc('0x1d')](_0x6ad98c[_0xb7cc('0x2d')][_0xb7cc('0x1d')]);_0x2e5855['offset']=qs[_0xb7cc('0x1c')](_0x6ad98c[_0xb7cc('0x2d')]['offset']);}_0x2e5855[_0xb7cc('0x37')]=qs[_0xb7cc('0x38')](_0x6ad98c[_0xb7cc('0x2d')]['sort']);_0x2e5855[_0xb7cc('0x39')]=qs[_0xb7cc('0x31')](_['pick'](_0x6ad98c[_0xb7cc('0x2d')],_0x4e0a05[_0xb7cc('0x31')]));if(_0x2a3ccd['dateStart']){if(_0x2a3ccd[_0xb7cc('0x2e')]){_0x2a3ccd[_0xb7cc('0x2e')]=moment(_0x2a3ccd[_0xb7cc('0x2e')])[_0xb7cc('0x3a')](0x1,_0xb7cc('0x3b'));}else{_0x2a3ccd['dateEnd']=moment(_0x2a3ccd[_0xb7cc('0x2f')])['add'](0x1,_0xb7cc('0x3b'));}_[_0xb7cc('0x3c')](_0x2e5855[_0xb7cc('0x39')],{'createdAt':{'$gte':_0x2a3ccd[_0xb7cc('0x2f')],'$lte':_0x2a3ccd['dateEnd']}});}if(_0x6ad98c['query']['filter']){_0x2e5855[_0xb7cc('0x39')]=_[_0xb7cc('0x3c')](_0x2e5855[_0xb7cc('0x39')],{'$or':_[_0xb7cc('0x3d')](_0x3a77c5,function(_0x577445){if(_0x577445[_0xb7cc('0x3e')][_0xb7cc('0x3f')]!==_0xb7cc('0x40')){var _0x431048={};_0x431048[_0x577445['field']]={'$like':'%'+_0x6ad98c['query']['filter']+'%'};return _0x431048;}})});}_0x2e5855=_[_0xb7cc('0x3c')]({},_0x2e5855,_0x6ad98c[_0xb7cc('0x41')]);var _0x42942a={'where':_0x2e5855[_0xb7cc('0x39')]};return db[_0xb7cc('0x2a')][_0xb7cc('0x1b')](_0x42942a)[_0xb7cc('0x24')](function(_0x13f4a8){_0x4678ef[_0xb7cc('0x1b')]=_0x13f4a8;if(_0x6ad98c[_0xb7cc('0x2d')][_0xb7cc('0x42')]){_0x2e5855[_0xb7cc('0x43')]=[{'all':!![]}];}return db['SquareReport'][_0xb7cc('0x44')](_0x2e5855);})[_0xb7cc('0x24')](function(_0x2e46ad){_0x4678ef[_0xb7cc('0x45')]=_0x2e46ad;return _0x4678ef;})[_0xb7cc('0x24')](respondWithFilteredResult(_0x43ec29,_0x2e5855))[_0xb7cc('0x46')](handleError(_0x43ec29,null));};exports['show']=function(_0x49569a,_0x1f6722){var _0xf81ce9={'raw':!![],'where':{'id':_0x49569a[_0xb7cc('0x47')]['id']}},_0x4094a0={};_0x4094a0[_0xb7cc('0x2c')]=_[_0xb7cc('0x30')](db[_0xb7cc('0x2a')][_0xb7cc('0x2b')]);_0x4094a0[_0xb7cc('0x2d')]=_[_0xb7cc('0x30')](_0x49569a[_0xb7cc('0x2d')]);_0x4094a0[_0xb7cc('0x31')]=_[_0xb7cc('0x33')](_0x4094a0['model'],_0x4094a0[_0xb7cc('0x2d')]);_0xf81ce9['attributes']=_[_0xb7cc('0x33')](_0x4094a0['model'],qs[_0xb7cc('0x34')](_0x49569a[_0xb7cc('0x2d')][_0xb7cc('0x34')]));_0xf81ce9[_0xb7cc('0x32')]=_0xf81ce9[_0xb7cc('0x32')][_0xb7cc('0x48')]?_0xf81ce9[_0xb7cc('0x32')]:_0x4094a0['model'];if(_0x49569a[_0xb7cc('0x2d')][_0xb7cc('0x42')]){_0xf81ce9[_0xb7cc('0x43')]=[{'all':!![]}];}_0xf81ce9=_['merge']({},_0xf81ce9,_0x49569a[_0xb7cc('0x41')]);return db[_0xb7cc('0x2a')][_0xb7cc('0x49')](_0xf81ce9)[_0xb7cc('0x24')](handleEntityNotFound(_0x1f6722,null))[_0xb7cc('0x24')](respondWithResult(_0x1f6722,null))['catch'](handleError(_0x1f6722,null));};exports['create']=function(_0x509298,_0x2ec904){return db['SquareReport']['create'](_0x509298['body'],{})['then'](respondWithResult(_0x2ec904,0xc9))[_0xb7cc('0x46')](handleError(_0x2ec904,null));};exports[_0xb7cc('0x23')]=function(_0x86bf46,_0x10348e){if(_0x86bf46[_0xb7cc('0x4a')]['id']){delete _0x86bf46[_0xb7cc('0x4a')]['id'];}return db['SquareReport'][_0xb7cc('0x49')]({'where':{'id':_0x86bf46[_0xb7cc('0x47')]['id']}})[_0xb7cc('0x24')](handleEntityNotFound(_0x10348e,null))[_0xb7cc('0x24')](saveUpdates(_0x86bf46[_0xb7cc('0x4a')],null))[_0xb7cc('0x24')](respondWithResult(_0x10348e,null))[_0xb7cc('0x46')](handleError(_0x10348e,null));};exports[_0xb7cc('0x25')]=function(_0x250610,_0x112a73){return db[_0xb7cc('0x2a')][_0xb7cc('0x49')]({'where':{'id':_0x250610[_0xb7cc('0x47')]['id']}})[_0xb7cc('0x24')](handleEntityNotFound(_0x112a73,null))['then'](removeEntity(_0x112a73,null))[_0xb7cc('0x46')](handleError(_0x112a73,null));};exports['describe']=function(_0x4d854e,_0x31d4f7){return db['SquareReport'][_0xb7cc('0x4b')]()['then'](respondWithResult(_0x31d4f7,null))[_0xb7cc('0x46')](handleError(_0x31d4f7,null));};
\ No newline at end of file
+var _0x77ec=['to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','Content-Range','reject','update','then','destroy','error','stack','name','model','keys','dateStart','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','dateEnd','add','day','merge','filter','map','type','VIRTUAL','field','options','SquareReport','includeAll','findAll','rows','catch','params','rawAttributes','length','find','create','body','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0x77ec,0x1ab));var _0xc77e=function(_0x1cf7bf,_0x3a2518){_0x1cf7bf=_0x1cf7bf-0x0;var _0xe65d17=_0x77ec[_0x1cf7bf];return _0xe65d17;};'use strict';var pdf=require(_0xc77e('0x0'));var emlformat=require(_0xc77e('0x1'));var rimraf=require(_0xc77e('0x2'));var zipdir=require(_0xc77e('0x3'));var jsonpatch=require(_0xc77e('0x4'));var rp=require(_0xc77e('0x5'));var moment=require(_0xc77e('0x6'));var BPromise=require(_0xc77e('0x7'));var Mustache=require(_0xc77e('0x8'));var util=require('util');var path=require(_0xc77e('0x9'));var sox=require(_0xc77e('0xa'));var csv=require(_0xc77e('0xb'));var ejs=require(_0xc77e('0xc'));var fs=require('fs');var _=require(_0xc77e('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc77e('0xe'));var deskjs=require(_0xc77e('0xf'));var toCsv=require(_0xc77e('0xb'));var querystring=require(_0xc77e('0x10'));var Papa=require(_0xc77e('0x11'));var Redis=require('ioredis');var qs=require(_0xc77e('0x12'));var logger=require(_0xc77e('0x13'))('api');var utils=require(_0xc77e('0x14'));var config=require(_0xc77e('0x15'));var db=require(_0xc77e('0x16'))['db'];function respondWithStatusCode(_0x334068,_0x386281){_0x386281=_0x386281||0xcc;return function(_0x4858ad){if(_0x4858ad){return _0x334068[_0xc77e('0x17')](_0x386281);}return _0x334068[_0xc77e('0x18')](_0x386281)[_0xc77e('0x19')]();};}function respondWithResult(_0x1be7f,_0x18dde2){_0x18dde2=_0x18dde2||0xc8;return function(_0x39ec09){if(_0x39ec09){return _0x1be7f[_0xc77e('0x18')](_0x18dde2)[_0xc77e('0x1a')](_0x39ec09);}};}function respondWithFilteredResult(_0x133bc4,_0x20688){return function(_0x443806){if(_0x443806){var _0x5f398d=_0x443806[_0xc77e('0x1b')],_0x5c5378=_0x20688[_0xc77e('0x1c')],_0x29238c=_0x20688['offset']+_0x20688[_0xc77e('0x1d')],_0x3e8795;if(_0x29238c>=_0x5f398d){_0x29238c=_0x5f398d;_0x3e8795=0xc8;}else{_0x3e8795=0xce;}_0x133bc4[_0xc77e('0x18')](_0x3e8795);return _0x133bc4['set'](_0xc77e('0x1e'),_0x5c5378+'-'+_0x29238c+'/'+_0x5f398d)[_0xc77e('0x1a')](_0x443806);}return null;};}function patchUpdates(_0x4cee74){return function(_0x358a57){try{jsonpatch['apply'](_0x358a57,_0x4cee74,!![]);}catch(_0x1cefff){return BPromise[_0xc77e('0x1f')](_0x1cefff);}return _0x358a57['save']();};}function saveUpdates(_0x367d48,_0x5584e7){return function(_0x2c542a){if(_0x2c542a){return _0x2c542a[_0xc77e('0x20')](_0x367d48)[_0xc77e('0x21')](function(_0x53d7d8){return _0x53d7d8;});}return null;};}function removeEntity(_0x5a5dfb,_0x1bde53){return function(_0x395d41){if(_0x395d41){return _0x395d41[_0xc77e('0x22')]()['then'](function(){_0x5a5dfb[_0xc77e('0x18')](0xcc)[_0xc77e('0x19')]();});}};}function handleEntityNotFound(_0x561787,_0x12bd4b){return function(_0x2fe911){if(!_0x2fe911){_0x561787[_0xc77e('0x17')](0x194);}return _0x2fe911;};}function handleError(_0x320afc,_0x4bf963){_0x4bf963=_0x4bf963||0x1f4;return function(_0x57a91b){logger[_0xc77e('0x23')](_0x57a91b[_0xc77e('0x24')]);if(_0x57a91b[_0xc77e('0x25')]){delete _0x57a91b['name'];}_0x320afc['status'](_0x4bf963)['send'](_0x57a91b);};}exports['index']=function(_0x1fe21d,_0x4bc457){var _0x558099={},_0x3a4eec={},_0x22b31={'count':0x0,'rows':[]};var _0x3d6c05=db['SquareReport']['rawAttributes'];_0x3a4eec[_0xc77e('0x26')]=_[_0xc77e('0x27')](_0x3d6c05);var _0x1a2a13={'dateStart':_0x1fe21d['query'][_0xc77e('0x28')],'dateEnd':_0x1fe21d['query']['dateEnd']};delete _0x1fe21d[_0xc77e('0x29')][_0xc77e('0x28')];delete _0x1fe21d['query']['dateEnd'];_0x3a4eec[_0xc77e('0x29')]=_[_0xc77e('0x27')](_0x1fe21d[_0xc77e('0x29')]);_0x3a4eec[_0xc77e('0x2a')]=_[_0xc77e('0x2b')](_0x3a4eec[_0xc77e('0x26')],_0x3a4eec[_0xc77e('0x29')]);_0x558099[_0xc77e('0x2c')]=_[_0xc77e('0x2b')](_0x3a4eec[_0xc77e('0x26')],qs['fields'](_0x1fe21d[_0xc77e('0x29')][_0xc77e('0x2d')]));_0x558099[_0xc77e('0x2c')]=_0x558099[_0xc77e('0x2c')]['length']?_0x558099['attributes']:_0x3a4eec['model'];if(!_0x1fe21d[_0xc77e('0x29')][_0xc77e('0x2e')](_0xc77e('0x2f'))){_0x558099[_0xc77e('0x1d')]=qs[_0xc77e('0x1d')](_0x1fe21d[_0xc77e('0x29')]['limit']);_0x558099['offset']=qs['offset'](_0x1fe21d['query'][_0xc77e('0x1c')]);}_0x558099['order']=qs[_0xc77e('0x30')](_0x1fe21d[_0xc77e('0x29')][_0xc77e('0x30')]);_0x558099[_0xc77e('0x31')]=qs[_0xc77e('0x2a')](_[_0xc77e('0x32')](_0x1fe21d[_0xc77e('0x29')],_0x3a4eec[_0xc77e('0x2a')]));if(_0x1a2a13[_0xc77e('0x28')]){if(_0x1a2a13['dateEnd']){_0x1a2a13[_0xc77e('0x33')]=moment(_0x1a2a13[_0xc77e('0x33')])[_0xc77e('0x34')](0x1,_0xc77e('0x35'));}else{_0x1a2a13['dateEnd']=moment(_0x1a2a13['dateStart'])['add'](0x1,_0xc77e('0x35'));}_[_0xc77e('0x36')](_0x558099[_0xc77e('0x31')],{'createdAt':{'$gte':_0x1a2a13[_0xc77e('0x28')],'$lte':_0x1a2a13['dateEnd']}});}if(_0x1fe21d[_0xc77e('0x29')][_0xc77e('0x37')]){_0x558099[_0xc77e('0x31')]=_[_0xc77e('0x36')](_0x558099[_0xc77e('0x31')],{'$or':_[_0xc77e('0x38')](_0x3d6c05,function(_0x2a5683){if(_0x2a5683[_0xc77e('0x39')]['key']!==_0xc77e('0x3a')){var _0x2dffea={};_0x2dffea[_0x2a5683[_0xc77e('0x3b')]]={'$like':'%'+_0x1fe21d[_0xc77e('0x29')]['filter']+'%'};return _0x2dffea;}})});}_0x558099=_['merge']({},_0x558099,_0x1fe21d[_0xc77e('0x3c')]);var _0x4cb683={'where':_0x558099[_0xc77e('0x31')]};return db[_0xc77e('0x3d')]['count'](_0x4cb683)[_0xc77e('0x21')](function(_0x195998){_0x22b31[_0xc77e('0x1b')]=_0x195998;if(_0x1fe21d[_0xc77e('0x29')][_0xc77e('0x3e')]){_0x558099['include']=[{'all':!![]}];}return db[_0xc77e('0x3d')][_0xc77e('0x3f')](_0x558099);})[_0xc77e('0x21')](function(_0x47ed85){_0x22b31[_0xc77e('0x40')]=_0x47ed85;return _0x22b31;})['then'](respondWithFilteredResult(_0x4bc457,_0x558099))[_0xc77e('0x41')](handleError(_0x4bc457,null));};exports['show']=function(_0x524337,_0x2b9f89){var _0x3efb25={'raw':!![],'where':{'id':_0x524337[_0xc77e('0x42')]['id']}},_0x2dc716={};_0x2dc716[_0xc77e('0x26')]=_[_0xc77e('0x27')](db[_0xc77e('0x3d')][_0xc77e('0x43')]);_0x2dc716[_0xc77e('0x29')]=_[_0xc77e('0x27')](_0x524337[_0xc77e('0x29')]);_0x2dc716[_0xc77e('0x2a')]=_[_0xc77e('0x2b')](_0x2dc716['model'],_0x2dc716[_0xc77e('0x29')]);_0x3efb25[_0xc77e('0x2c')]=_['intersection'](_0x2dc716[_0xc77e('0x26')],qs[_0xc77e('0x2d')](_0x524337[_0xc77e('0x29')][_0xc77e('0x2d')]));_0x3efb25[_0xc77e('0x2c')]=_0x3efb25['attributes'][_0xc77e('0x44')]?_0x3efb25[_0xc77e('0x2c')]:_0x2dc716['model'];if(_0x524337[_0xc77e('0x29')][_0xc77e('0x3e')]){_0x3efb25['include']=[{'all':!![]}];}_0x3efb25=_[_0xc77e('0x36')]({},_0x3efb25,_0x524337[_0xc77e('0x3c')]);return db[_0xc77e('0x3d')][_0xc77e('0x45')](_0x3efb25)[_0xc77e('0x21')](handleEntityNotFound(_0x2b9f89,null))[_0xc77e('0x21')](respondWithResult(_0x2b9f89,null))[_0xc77e('0x41')](handleError(_0x2b9f89,null));};exports[_0xc77e('0x46')]=function(_0x44a3ff,_0x93ec5e){return db[_0xc77e('0x3d')]['create'](_0x44a3ff[_0xc77e('0x47')],{})[_0xc77e('0x21')](respondWithResult(_0x93ec5e,0xc9))[_0xc77e('0x41')](handleError(_0x93ec5e,null));};exports[_0xc77e('0x20')]=function(_0x34fce8,_0x1a252b){if(_0x34fce8['body']['id']){delete _0x34fce8[_0xc77e('0x47')]['id'];}return db[_0xc77e('0x3d')][_0xc77e('0x45')]({'where':{'id':_0x34fce8[_0xc77e('0x42')]['id']}})[_0xc77e('0x21')](handleEntityNotFound(_0x1a252b,null))[_0xc77e('0x21')](saveUpdates(_0x34fce8[_0xc77e('0x47')],null))['then'](respondWithResult(_0x1a252b,null))[_0xc77e('0x41')](handleError(_0x1a252b,null));};exports[_0xc77e('0x22')]=function(_0x50e9f7,_0x1aa5d4){return db[_0xc77e('0x3d')][_0xc77e('0x45')]({'where':{'id':_0x50e9f7[_0xc77e('0x42')]['id']}})['then'](handleEntityNotFound(_0x1aa5d4,null))[_0xc77e('0x21')](removeEntity(_0x1aa5d4,null))[_0xc77e('0x41')](handleError(_0x1aa5d4,null));};exports[_0xc77e('0x48')]=function(_0x36e531,_0x37e235){return db[_0xc77e('0x3d')][_0xc77e('0x48')]()[_0xc77e('0x21')](respondWithResult(_0x37e235,null))[_0xc77e('0x41')](handleError(_0x37e235,null));};
\ No newline at end of file
index ad92a36..a699a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb645=['uniqueid','leaveAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./squareReport.attributes','exports','define'];(function(_0x21c6b8,_0x16d6f6){var _0x39d474=function(_0x27dbf5){while(--_0x27dbf5){_0x21c6b8['push'](_0x21c6b8['shift']());}};_0x39d474(++_0x16d6f6);}(_0xb645,0x15e));var _0x5b64=function(_0x253107,_0x5460ce){_0x253107=_0x253107-0x0;var _0x3bd2cd=_0xb645[_0x253107];return _0x3bd2cd;};'use strict';var _=require(_0x5b64('0x0'));var util=require(_0x5b64('0x1'));var logger=require(_0x5b64('0x2'))(_0x5b64('0x3'));var moment=require(_0x5b64('0x4'));var BPromise=require(_0x5b64('0x5'));var rp=require(_0x5b64('0x6'));var attributes=require(_0x5b64('0x7'));module[_0x5b64('0x8')]=function(_0x359fa1,_0x45598a){return _0x359fa1[_0x5b64('0x9')]('SquareReport',attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0x5b64('0xa'),'project_name']},{'name':_0x5b64('0xb'),'fields':[_0x5b64('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb56f=['request-promise','./squareReport.attributes','exports','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','../../config/logger','moment','bluebird'];(function(_0x5661f3,_0x234246){var _0x5c98ca=function(_0x10e331){while(--_0x10e331){_0x5661f3['push'](_0x5661f3['shift']());}};_0x5c98ca(++_0x234246);}(_0xb56f,0x8b));var _0xfb56=function(_0x1847fd,_0x1840c5){_0x1847fd=_0x1847fd-0x0;var _0x58fc46=_0xb56f[_0x1847fd];return _0x58fc46;};'use strict';var _=require(_0xfb56('0x0'));var util=require('util');var logger=require(_0xfb56('0x1'))('api');var moment=require(_0xfb56('0x2'));var BPromise=require(_0xfb56('0x3'));var rp=require(_0xfb56('0x4'));var attributes=require(_0xfb56('0x5'));module[_0xfb56('0x6')]=function(_0x2b3703,_0x3d491d){return _0x2b3703['define'](_0xfb56('0x7'),attributes,{'tableName':_0xfb56('0x8'),'paranoid':![],'indexes':[{'name':_0xfb56('0x9'),'fields':[_0xfb56('0xa'),_0xfb56('0xb')]},{'name':_0xfb56('0xc'),'fields':[_0xfb56('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index e6c949f..41fc332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7208=['moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','info','SquareReport,\x20%s,\x20%s','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','debug','UpdateSquareReport','lodash'];(function(_0x1e911f,_0x204b73){var _0x480a85=function(_0x309a9e){while(--_0x309a9e){_0x1e911f['push'](_0x1e911f['shift']());}};_0x480a85(++_0x204b73);}(_0x7208,0x16b));var _0x8720=function(_0x2a91ee,_0x33aaef){_0x2a91ee=_0x2a91ee-0x0;var _0x487a08=_0x7208[_0x2a91ee];return _0x487a08;};'use strict';var _=require(_0x8720('0x0'));var util=require('util');var moment=require(_0x8720('0x1'));var BPromise=require(_0x8720('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8720('0x3'));var db=require(_0x8720('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8720('0x5'));var config=require(_0x8720('0x6'));var jayson=require(_0x8720('0x7'));var client=jayson[_0x8720('0x8')][_0x8720('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x28271f,_0x5b65ec,_0x55b151){return new BPromise(function(_0x16026d,_0x79f0d2){return client['request'](_0x28271f,_0x55b151)[_0x8720('0xa')](function(_0xa9708a){logger[_0x8720('0xb')](_0x8720('0xc'),_0x5b65ec,'request\x20sent');logger['debug'](_0x8720('0xd'),_0x5b65ec,_0x8720('0xe'),JSON[_0x8720('0xf')](_0xa9708a));if(_0xa9708a[_0x8720('0x10')]){if(_0xa9708a[_0x8720('0x10')][_0x8720('0x11')]===0x1f4){logger[_0x8720('0x10')](_0x8720('0xc'),_0x5b65ec,_0xa9708a['error'][_0x8720('0x12')]);return _0x79f0d2(_0xa9708a[_0x8720('0x10')][_0x8720('0x12')]);}logger[_0x8720('0x10')](_0x8720('0xc'),_0x5b65ec,_0xa9708a[_0x8720('0x10')][_0x8720('0x12')]);return _0x16026d(_0xa9708a[_0x8720('0x10')][_0x8720('0x12')]);}else{logger[_0x8720('0xb')](_0x8720('0xc'),_0x5b65ec,'request\x20sent');_0x16026d(_0xa9708a[_0x8720('0x13')][_0x8720('0x12')]);}})[_0x8720('0x14')](function(_0x210ecd){logger[_0x8720('0x10')]('SquareReport,\x20%s,\x20%s',_0x5b65ec,_0x210ecd);_0x79f0d2(_0x210ecd);});});}exports[_0x8720('0x15')]=function(_0x23f11f){var _0x23609c=this;return new Promise(function(_0x2a5211,_0x457d8a){return db[_0x8720('0x16')][_0x8720('0x17')](_0x23f11f[_0x8720('0x18')],{'raw':_0x23f11f[_0x8720('0x19')]?_0x23f11f[_0x8720('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8720('0xa')](function(_0x314f21){logger[_0x8720('0xb')](_0x8720('0x15'),_0x23f11f);logger[_0x8720('0x1a')](_0x8720('0x15'),_0x23f11f,JSON[_0x8720('0xf')](_0x314f21));_0x2a5211(_0x314f21);})[_0x8720('0x14')](function(_0x955f56){logger[_0x8720('0x10')](_0x8720('0x15'),_0x955f56[_0x8720('0x12')],_0x23f11f);_0x457d8a(_0x23609c['error'](0x1f4,_0x955f56[_0x8720('0x12')]));});});};exports[_0x8720('0x1b')]=function(_0x1244f7){var _0xfa7b8b=this;return new Promise(function(_0x440a88,_0x4970eb){return db['SquareReport']['update'](_0x1244f7[_0x8720('0x18')],{'raw':_0x1244f7[_0x8720('0x19')]?_0x1244f7[_0x8720('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1244f7[_0x8720('0x19')]?_0x1244f7[_0x8720('0x19')]['where']||null:null,'attributes':_0x1244f7[_0x8720('0x19')]?_0x1244f7[_0x8720('0x19')]['attributes']||null:null,'limit':_0x1244f7[_0x8720('0x19')]?_0x1244f7[_0x8720('0x19')]['limit']||null:null})[_0x8720('0xa')](function(_0x412cd2){logger[_0x8720('0xb')]('UpdateSquareReport',_0x1244f7);logger[_0x8720('0x1a')]('UpdateSquareReport',_0x1244f7,JSON[_0x8720('0xf')](_0x412cd2));_0x440a88(_0x412cd2);})[_0x8720('0x14')](function(_0x17156a){logger[_0x8720('0x10')](_0x8720('0x1b'),_0x17156a[_0x8720('0x12')],_0x1244f7);_0x4970eb(_0xfa7b8b['error'](0x1f4,_0x17156a[_0x8720('0x12')]));});});};
\ No newline at end of file
+var _0x2318=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSquareReport','SquareReport','body','options','raw','UpdateSquareReport','where','attributes','lodash','moment','bluebird','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2318,0x1a0));var _0x8231=function(_0x21704e,_0x1e2061){_0x21704e=_0x21704e-0x0;var _0x4ee8b7=_0x2318[_0x21704e];return _0x4ee8b7;};'use strict';var _=require(_0x8231('0x0'));var util=require('util');var moment=require(_0x8231('0x1'));var BPromise=require(_0x8231('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8231('0x3'))['db'];var utils=require(_0x8231('0x4'));var logger=require(_0x8231('0x5'))(_0x8231('0x6'));var config=require(_0x8231('0x7'));var jayson=require(_0x8231('0x8'));var client=jayson['client'][_0x8231('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x281f33,_0x1c587b,_0x45b91a){return new BPromise(function(_0x4ebcc6,_0x5262c1){return client[_0x8231('0xa')](_0x281f33,_0x45b91a)[_0x8231('0xb')](function(_0x307002){logger[_0x8231('0xc')](_0x8231('0xd'),_0x1c587b,_0x8231('0xe'));logger[_0x8231('0xf')](_0x8231('0x10'),_0x1c587b,_0x8231('0xe'),JSON[_0x8231('0x11')](_0x307002));if(_0x307002[_0x8231('0x12')]){if(_0x307002['error'][_0x8231('0x13')]===0x1f4){logger[_0x8231('0x12')](_0x8231('0xd'),_0x1c587b,_0x307002[_0x8231('0x12')][_0x8231('0x14')]);return _0x5262c1(_0x307002[_0x8231('0x12')][_0x8231('0x14')]);}logger[_0x8231('0x12')]('SquareReport,\x20%s,\x20%s',_0x1c587b,_0x307002[_0x8231('0x12')][_0x8231('0x14')]);return _0x4ebcc6(_0x307002[_0x8231('0x12')][_0x8231('0x14')]);}else{logger[_0x8231('0xc')](_0x8231('0xd'),_0x1c587b,'request\x20sent');_0x4ebcc6(_0x307002['result'][_0x8231('0x14')]);}})[_0x8231('0x15')](function(_0x964334){logger[_0x8231('0x12')](_0x8231('0xd'),_0x1c587b,_0x964334);_0x5262c1(_0x964334);});});}exports[_0x8231('0x16')]=function(_0x2034fe){var _0xacd0f2=this;return new Promise(function(_0x5406ff,_0x30838b){return db[_0x8231('0x17')]['create'](_0x2034fe[_0x8231('0x18')],{'raw':_0x2034fe[_0x8231('0x19')]?_0x2034fe['options'][_0x8231('0x1a')]===undefined?!![]:![]:!![]})[_0x8231('0xb')](function(_0x1a75ee){logger[_0x8231('0xc')]('CreateSquareReport',_0x2034fe);logger[_0x8231('0xf')]('CreateSquareReport',_0x2034fe,JSON[_0x8231('0x11')](_0x1a75ee));_0x5406ff(_0x1a75ee);})['catch'](function(_0x3f8004){logger[_0x8231('0x12')](_0x8231('0x16'),_0x3f8004[_0x8231('0x14')],_0x2034fe);_0x30838b(_0xacd0f2[_0x8231('0x12')](0x1f4,_0x3f8004['message']));});});};exports[_0x8231('0x1b')]=function(_0xc4788e){var _0x129df5=this;return new Promise(function(_0x275179,_0x50ae42){return db[_0x8231('0x17')]['update'](_0xc4788e[_0x8231('0x18')],{'raw':_0xc4788e[_0x8231('0x19')]?_0xc4788e['options'][_0x8231('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xc4788e[_0x8231('0x19')]?_0xc4788e['options'][_0x8231('0x1c')]||null:null,'attributes':_0xc4788e[_0x8231('0x19')]?_0xc4788e[_0x8231('0x19')][_0x8231('0x1d')]||null:null,'limit':_0xc4788e['options']?_0xc4788e[_0x8231('0x19')]['limit']||null:null})[_0x8231('0xb')](function(_0x395e30){logger['info'](_0x8231('0x1b'),_0xc4788e);logger[_0x8231('0xf')](_0x8231('0x1b'),_0xc4788e,JSON[_0x8231('0x11')](_0x395e30));_0x275179(_0x395e30);})[_0x8231('0x15')](function(_0x246162){logger[_0x8231('0x12')](_0x8231('0x1b'),_0x246162[_0x8231('0x14')],_0xc4788e);_0x50ae42(_0x129df5[_0x8231('0x12')](0x1f4,_0x246162[_0x8231('0x14')]));});});};
\ No newline at end of file
index d425ded..d419b4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bfe=['show','post','create','delete','destroy','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','get','index','isAuthenticated','/:id'];(function(_0x1da98c,_0x3a1626){var _0x3e228f=function(_0x22c1c7){while(--_0x22c1c7){_0x1da98c['push'](_0x1da98c['shift']());}};_0x3e228f(++_0x3a1626);}(_0x7bfe,0xaa));var _0xe7bf=function(_0x5494f8,_0x285839){_0x5494f8=_0x5494f8-0x0;var _0x369bf9=_0x7bfe[_0x5494f8];return _0x369bf9;};'use strict';var multer=require('multer');var util=require(_0xe7bf('0x0'));var path=require(_0xe7bf('0x1'));var timeout=require(_0xe7bf('0x2'));var express=require(_0xe7bf('0x3'));var router=express['Router']();var auth=require(_0xe7bf('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xe7bf('0x5'));var controller=require('./squareReportDetail.controller');router[_0xe7bf('0x6')]('/',auth['isAuthenticated'](),controller[_0xe7bf('0x7')]);router[_0xe7bf('0x6')]('/describe',auth[_0xe7bf('0x8')](),controller['describe']);router[_0xe7bf('0x6')](_0xe7bf('0x9'),auth[_0xe7bf('0x8')](),controller[_0xe7bf('0xa')]);router[_0xe7bf('0xb')]('/',auth[_0xe7bf('0x8')](),controller[_0xe7bf('0xc')]);router['put'](_0xe7bf('0x9'),auth[_0xe7bf('0x8')](),controller['update']);router[_0xe7bf('0xd')](_0xe7bf('0x9'),auth['isAuthenticated'](),controller[_0xe7bf('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x1089=['/describe','describe','show','create','put','/:id','update','delete','exports','util','path','connect-timeout','../../components/interaction/service','./squareReportDetail.controller','get','isAuthenticated','index'];(function(_0x1a471c,_0x4399bd){var _0x46c6ae=function(_0xeef15e){while(--_0xeef15e){_0x1a471c['push'](_0x1a471c['shift']());}};_0x46c6ae(++_0x4399bd);}(_0x1089,0x190));var _0x9108=function(_0x74e651,_0x7db2c0){_0x74e651=_0x74e651-0x0;var _0x32ed9d=_0x1089[_0x74e651];return _0x32ed9d;};'use strict';var multer=require('multer');var util=require(_0x9108('0x0'));var path=require(_0x9108('0x1'));var timeout=require(_0x9108('0x2'));var express=require('express');var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0x9108('0x3'));var config=require('../../config/environment');var controller=require(_0x9108('0x4'));router[_0x9108('0x5')]('/',auth[_0x9108('0x6')](),controller[_0x9108('0x7')]);router[_0x9108('0x5')](_0x9108('0x8'),auth[_0x9108('0x6')](),controller[_0x9108('0x9')]);router['get']('/:id',auth[_0x9108('0x6')](),controller[_0x9108('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9108('0xb')]);router[_0x9108('0xc')](_0x9108('0xd'),auth['isAuthenticated'](),controller[_0x9108('0xe')]);router[_0x9108('0xf')](_0x9108('0xd'),auth[_0x9108('0x6')](),controller['destroy']);module[_0x9108('0x10')]=router;
\ No newline at end of file
index d5d0cfe..03a96e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe37=['sequelize','STRING','TEXT'];(function(_0x171779,_0x4baf9c){var _0x5ca44a=function(_0x53cae7){while(--_0x53cae7){_0x171779['push'](_0x171779['shift']());}};_0x5ca44a(++_0x4baf9c);}(_0xbe37,0x105));var _0x7be3=function(_0x4eb781,_0x559ecb){_0x4eb781=_0x4eb781-0x0;var _0x1bd8c9=_0xbe37[_0x4eb781];return _0x1bd8c9;};'use strict';var Sequelize=require(_0x7be3('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0x7be3('0x1')]},'data':{'type':Sequelize[_0x7be3('0x2')]},'project_name':{'type':Sequelize[_0x7be3('0x1')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbb73=['STRING','TEXT','sequelize','exports'];(function(_0x1224d2,_0x271db9){var _0x1bb4f0=function(_0x54c1c3){while(--_0x54c1c3){_0x1224d2['push'](_0x1224d2['shift']());}};_0x1bb4f0(++_0x271db9);}(_0xbb73,0x156));var _0x3bb7=function(_0x18c3d8,_0x1a4d2b){_0x18c3d8=_0x18c3d8-0x0;var _0x432944=_0xbb73[_0x18c3d8];return _0x432944;};'use strict';var Sequelize=require(_0x3bb7('0x0'));module[_0x3bb7('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x3bb7('0x2')]},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize[_0x3bb7('0x3')]},'project_name':{'type':Sequelize[_0x3bb7('0x2')]},'callerid':{'type':Sequelize[_0x3bb7('0x2')]}};
\ No newline at end of file
index e4aa6d7..a529d21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaf2=['dateStart','dateEnd','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','filter','map','type','field','options','then','includeAll','include','findAll','rows','catch','params','find','body','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','limit','set','Content-Range','apply','update','destroy','end','error','stack','name','send','index','SquareDetailsReport','rawAttributes','keys','query'];(function(_0x502edc,_0x550aa5){var _0x49eb2e=function(_0x50c3d0){while(--_0x50c3d0){_0x502edc['push'](_0x502edc['shift']());}};_0x49eb2e(++_0x550aa5);}(_0xaaf2,0xb8));var _0x2aaf=function(_0x269652,_0x40c674){_0x269652=_0x269652-0x0;var _0xe6ef34=_0xaaf2[_0x269652];return _0xe6ef34;};'use strict';var pdf=require(_0x2aaf('0x0'));var emlformat=require(_0x2aaf('0x1'));var rimraf=require(_0x2aaf('0x2'));var zipdir=require(_0x2aaf('0x3'));var jsonpatch=require(_0x2aaf('0x4'));var rp=require(_0x2aaf('0x5'));var moment=require(_0x2aaf('0x6'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2aaf('0x7'));var path=require(_0x2aaf('0x8'));var sox=require(_0x2aaf('0x9'));var csv=require(_0x2aaf('0xa'));var ejs=require(_0x2aaf('0xb'));var fs=require('fs');var _=require(_0x2aaf('0xc'));var squel=require('squel');var crypto=require(_0x2aaf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2aaf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2aaf('0xf'));var Papa=require('papaparse');var Redis=require(_0x2aaf('0x10'));var qs=require(_0x2aaf('0x11'));var logger=require(_0x2aaf('0x12'))(_0x2aaf('0x13'));var utils=require(_0x2aaf('0x14'));var config=require(_0x2aaf('0x15'));var db=require(_0x2aaf('0x16'))['db'];function respondWithStatusCode(_0x2b5813,_0x15a884){_0x15a884=_0x15a884||0xcc;return function(_0x2f5ce8){if(_0x2f5ce8){return _0x2b5813[_0x2aaf('0x17')](_0x15a884);}return _0x2b5813['status'](_0x15a884)['end']();};}function respondWithResult(_0x1abf1f,_0x1f528f){_0x1f528f=_0x1f528f||0xc8;return function(_0x112d47){if(_0x112d47){return _0x1abf1f[_0x2aaf('0x18')](_0x1f528f)[_0x2aaf('0x19')](_0x112d47);}};}function respondWithFilteredResult(_0x2b2955,_0x33c59b){return function(_0x4956d6){if(_0x4956d6){var _0x43f7e5=_0x4956d6[_0x2aaf('0x1a')],_0x3cf2cd=_0x33c59b['offset'],_0x43bc27=_0x33c59b[_0x2aaf('0x1b')]+_0x33c59b[_0x2aaf('0x1c')],_0x37baa3;if(_0x43bc27>=_0x43f7e5){_0x43bc27=_0x43f7e5;_0x37baa3=0xc8;}else{_0x37baa3=0xce;}_0x2b2955[_0x2aaf('0x18')](_0x37baa3);return _0x2b2955[_0x2aaf('0x1d')](_0x2aaf('0x1e'),_0x3cf2cd+'-'+_0x43bc27+'/'+_0x43f7e5)['json'](_0x4956d6);}return null;};}function patchUpdates(_0x3d60c2){return function(_0x1ecbf7){try{jsonpatch[_0x2aaf('0x1f')](_0x1ecbf7,_0x3d60c2,!![]);}catch(_0x292fc4){return BPromise['reject'](_0x292fc4);}return _0x1ecbf7['save']();};}function saveUpdates(_0x3a8f11,_0x369ec3){return function(_0x321ec5){if(_0x321ec5){return _0x321ec5[_0x2aaf('0x20')](_0x3a8f11)['then'](function(_0x1c9fe3){return _0x1c9fe3;});}return null;};}function removeEntity(_0x3d4c2a,_0xa32a12){return function(_0x1a0127){if(_0x1a0127){return _0x1a0127[_0x2aaf('0x21')]()['then'](function(){_0x3d4c2a[_0x2aaf('0x18')](0xcc)[_0x2aaf('0x22')]();});}};}function handleEntityNotFound(_0x57a6f0,_0x29c299){return function(_0x17a24b){if(!_0x17a24b){_0x57a6f0[_0x2aaf('0x17')](0x194);}return _0x17a24b;};}function handleError(_0x15e845,_0x1e5841){_0x1e5841=_0x1e5841||0x1f4;return function(_0x387148){logger[_0x2aaf('0x23')](_0x387148[_0x2aaf('0x24')]);if(_0x387148[_0x2aaf('0x25')]){delete _0x387148[_0x2aaf('0x25')];}_0x15e845[_0x2aaf('0x18')](_0x1e5841)[_0x2aaf('0x26')](_0x387148);};}exports[_0x2aaf('0x27')]=function(_0x56bc46,_0x41777c){var _0x5f4722={},_0x228d83={},_0x412e5d={'count':0x0,'rows':[]};var _0x430a31=db[_0x2aaf('0x28')][_0x2aaf('0x29')];_0x228d83['model']=_[_0x2aaf('0x2a')](_0x430a31);var _0x1323f4={'dateStart':_0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x2c')],'dateEnd':_0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x2d')]};delete _0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x2c')];delete _0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x2d')];_0x228d83[_0x2aaf('0x2b')]=_[_0x2aaf('0x2a')](_0x56bc46['query']);_0x228d83[_0x2aaf('0x2e')]=_[_0x2aaf('0x2f')](_0x228d83[_0x2aaf('0x30')],_0x228d83[_0x2aaf('0x2b')]);_0x5f4722['attributes']=_[_0x2aaf('0x2f')](_0x228d83['model'],qs[_0x2aaf('0x31')](_0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x31')]));_0x5f4722[_0x2aaf('0x32')]=_0x5f4722['attributes'][_0x2aaf('0x33')]?_0x5f4722[_0x2aaf('0x32')]:_0x228d83['model'];if(!_0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x34')](_0x2aaf('0x35'))){_0x5f4722[_0x2aaf('0x1c')]=qs[_0x2aaf('0x1c')](_0x56bc46['query']['limit']);_0x5f4722['offset']=qs[_0x2aaf('0x1b')](_0x56bc46['query']['offset']);}_0x5f4722[_0x2aaf('0x36')]=qs[_0x2aaf('0x37')](_0x56bc46['query'][_0x2aaf('0x37')]);_0x5f4722[_0x2aaf('0x38')]=qs[_0x2aaf('0x2e')](_[_0x2aaf('0x39')](_0x56bc46[_0x2aaf('0x2b')],_0x228d83[_0x2aaf('0x2e')]));if(_0x1323f4[_0x2aaf('0x2c')]){if(_0x1323f4[_0x2aaf('0x2d')]){_0x1323f4[_0x2aaf('0x2d')]=moment(_0x1323f4[_0x2aaf('0x2d')])[_0x2aaf('0x3a')](0x1,_0x2aaf('0x3b'));}else{_0x1323f4[_0x2aaf('0x2d')]=moment(_0x1323f4['dateStart'])[_0x2aaf('0x3a')](0x1,_0x2aaf('0x3b'));}_[_0x2aaf('0x3c')](_0x5f4722[_0x2aaf('0x38')],{'createdAt':{'$gte':_0x1323f4[_0x2aaf('0x2c')],'$lte':_0x1323f4[_0x2aaf('0x2d')]}});}if(_0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x3d')]){_0x5f4722['where']=_[_0x2aaf('0x3c')](_0x5f4722[_0x2aaf('0x38')],{'$or':_[_0x2aaf('0x3e')](_0x430a31,function(_0xcfbb5c){if(_0xcfbb5c[_0x2aaf('0x3f')]['key']!=='VIRTUAL'){var _0x421587={};_0x421587[_0xcfbb5c[_0x2aaf('0x40')]]={'$like':'%'+_0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x3d')]+'%'};return _0x421587;}})});}_0x5f4722=_[_0x2aaf('0x3c')]({},_0x5f4722,_0x56bc46[_0x2aaf('0x41')]);var _0x2087da={'where':_0x5f4722[_0x2aaf('0x38')]};return db[_0x2aaf('0x28')][_0x2aaf('0x1a')](_0x2087da)[_0x2aaf('0x42')](function(_0x39eff5){_0x412e5d[_0x2aaf('0x1a')]=_0x39eff5;if(_0x56bc46[_0x2aaf('0x2b')][_0x2aaf('0x43')]){_0x5f4722[_0x2aaf('0x44')]=[{'all':!![]}];}return db[_0x2aaf('0x28')][_0x2aaf('0x45')](_0x5f4722);})[_0x2aaf('0x42')](function(_0x3172e8){_0x412e5d[_0x2aaf('0x46')]=_0x3172e8;return _0x412e5d;})[_0x2aaf('0x42')](respondWithFilteredResult(_0x41777c,_0x5f4722))[_0x2aaf('0x47')](handleError(_0x41777c,null));};exports['show']=function(_0x2e7f31,_0x29ce4a){var _0x207659={'raw':!![],'where':{'id':_0x2e7f31[_0x2aaf('0x48')]['id']}},_0x1b4ae8={};_0x1b4ae8[_0x2aaf('0x30')]=_['keys'](db[_0x2aaf('0x28')]['rawAttributes']);_0x1b4ae8['query']=_[_0x2aaf('0x2a')](_0x2e7f31[_0x2aaf('0x2b')]);_0x1b4ae8['filters']=_[_0x2aaf('0x2f')](_0x1b4ae8[_0x2aaf('0x30')],_0x1b4ae8[_0x2aaf('0x2b')]);_0x207659['attributes']=_[_0x2aaf('0x2f')](_0x1b4ae8[_0x2aaf('0x30')],qs[_0x2aaf('0x31')](_0x2e7f31[_0x2aaf('0x2b')]['fields']));_0x207659[_0x2aaf('0x32')]=_0x207659[_0x2aaf('0x32')][_0x2aaf('0x33')]?_0x207659[_0x2aaf('0x32')]:_0x1b4ae8[_0x2aaf('0x30')];if(_0x2e7f31[_0x2aaf('0x2b')][_0x2aaf('0x43')]){_0x207659[_0x2aaf('0x44')]=[{'all':!![]}];}_0x207659=_[_0x2aaf('0x3c')]({},_0x207659,_0x2e7f31['options']);return db[_0x2aaf('0x28')][_0x2aaf('0x49')](_0x207659)[_0x2aaf('0x42')](handleEntityNotFound(_0x29ce4a,null))[_0x2aaf('0x42')](respondWithResult(_0x29ce4a,null))['catch'](handleError(_0x29ce4a,null));};exports['create']=function(_0x50dd47,_0x52dac9){return db[_0x2aaf('0x28')]['create'](_0x50dd47[_0x2aaf('0x4a')],{})[_0x2aaf('0x42')](respondWithResult(_0x52dac9,0xc9))[_0x2aaf('0x47')](handleError(_0x52dac9,null));};exports[_0x2aaf('0x20')]=function(_0x4a344c,_0xc09cd1){if(_0x4a344c[_0x2aaf('0x4a')]['id']){delete _0x4a344c[_0x2aaf('0x4a')]['id'];}return db[_0x2aaf('0x28')]['find']({'where':{'id':_0x4a344c['params']['id']}})[_0x2aaf('0x42')](handleEntityNotFound(_0xc09cd1,null))[_0x2aaf('0x42')](saveUpdates(_0x4a344c[_0x2aaf('0x4a')],null))[_0x2aaf('0x42')](respondWithResult(_0xc09cd1,null))['catch'](handleError(_0xc09cd1,null));};exports[_0x2aaf('0x21')]=function(_0x3786a8,_0x5016e9){return db['SquareDetailsReport'][_0x2aaf('0x49')]({'where':{'id':_0x3786a8[_0x2aaf('0x48')]['id']}})[_0x2aaf('0x42')](handleEntityNotFound(_0x5016e9,null))[_0x2aaf('0x42')](removeEntity(_0x5016e9,null))['catch'](handleError(_0x5016e9,null));};exports[_0x2aaf('0x4b')]=function(_0x58d5ab,_0x5276d4){return db[_0x2aaf('0x28')]['describe']()[_0x2aaf('0x42')](respondWithResult(_0x5276d4,null))[_0x2aaf('0x47')](handleError(_0x5276d4,null));};
\ No newline at end of file
+var _0xde50=['dateEnd','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','add','day','merge','filter','key','VIRTUAL','field','options','includeAll','include','findAll','catch','show','rawAttributes','filters','find','create','body','params','describe','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','SquareDetailsReport','keys','query','dateStart'];(function(_0x6f9546,_0x1186b1){var _0x5f2738=function(_0x2e5bbf){while(--_0x2e5bbf){_0x6f9546['push'](_0x6f9546['shift']());}};_0x5f2738(++_0x1186b1);}(_0xde50,0x6a));var _0x0de5=function(_0x1835cd,_0x170652){_0x1835cd=_0x1835cd-0x0;var _0x11584a=_0xde50[_0x1835cd];return _0x11584a;};'use strict';var pdf=require(_0x0de5('0x0'));var emlformat=require(_0x0de5('0x1'));var rimraf=require(_0x0de5('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0de5('0x3'));var rp=require(_0x0de5('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0de5('0x5'));var util=require(_0x0de5('0x6'));var path=require(_0x0de5('0x7'));var sox=require(_0x0de5('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x0de5('0x9'));var crypto=require('crypto');var jsforce=require(_0x0de5('0xa'));var deskjs=require(_0x0de5('0xb'));var toCsv=require('to-csv');var querystring=require(_0x0de5('0xc'));var Papa=require(_0x0de5('0xd'));var Redis=require(_0x0de5('0xe'));var qs=require(_0x0de5('0xf'));var logger=require(_0x0de5('0x10'))('api');var utils=require(_0x0de5('0x11'));var config=require(_0x0de5('0x12'));var db=require(_0x0de5('0x13'))['db'];function respondWithStatusCode(_0x384c16,_0x342683){_0x342683=_0x342683||0xcc;return function(_0x42ea07){if(_0x42ea07){return _0x384c16[_0x0de5('0x14')](_0x342683);}return _0x384c16[_0x0de5('0x15')](_0x342683)['end']();};}function respondWithResult(_0x416587,_0x4f6293){_0x4f6293=_0x4f6293||0xc8;return function(_0x2ef5f0){if(_0x2ef5f0){return _0x416587[_0x0de5('0x15')](_0x4f6293)[_0x0de5('0x16')](_0x2ef5f0);}};}function respondWithFilteredResult(_0x3e2cb2,_0x181c9e){return function(_0x476e9c){if(_0x476e9c){var _0x529b07=_0x476e9c[_0x0de5('0x17')],_0xb0c69d=_0x181c9e[_0x0de5('0x18')],_0x36032c=_0x181c9e[_0x0de5('0x18')]+_0x181c9e[_0x0de5('0x19')],_0x5449fa;if(_0x36032c>=_0x529b07){_0x36032c=_0x529b07;_0x5449fa=0xc8;}else{_0x5449fa=0xce;}_0x3e2cb2['status'](_0x5449fa);return _0x3e2cb2[_0x0de5('0x1a')](_0x0de5('0x1b'),_0xb0c69d+'-'+_0x36032c+'/'+_0x529b07)[_0x0de5('0x16')](_0x476e9c);}return null;};}function patchUpdates(_0x16122a){return function(_0x1fc4f1){try{jsonpatch[_0x0de5('0x1c')](_0x1fc4f1,_0x16122a,!![]);}catch(_0x55cced){return BPromise[_0x0de5('0x1d')](_0x55cced);}return _0x1fc4f1[_0x0de5('0x1e')]();};}function saveUpdates(_0x63915c,_0x482a7f){return function(_0x383959){if(_0x383959){return _0x383959[_0x0de5('0x1f')](_0x63915c)['then'](function(_0x467c92){return _0x467c92;});}return null;};}function removeEntity(_0x4d61a0,_0x1e6c83){return function(_0x2365e7){if(_0x2365e7){return _0x2365e7[_0x0de5('0x20')]()[_0x0de5('0x21')](function(){_0x4d61a0[_0x0de5('0x15')](0xcc)[_0x0de5('0x22')]();});}};}function handleEntityNotFound(_0x1de34b,_0x4d30d6){return function(_0x434c59){if(!_0x434c59){_0x1de34b[_0x0de5('0x14')](0x194);}return _0x434c59;};}function handleError(_0x5a6af8,_0x2f6be8){_0x2f6be8=_0x2f6be8||0x1f4;return function(_0xbe0ee1){logger[_0x0de5('0x23')](_0xbe0ee1[_0x0de5('0x24')]);if(_0xbe0ee1[_0x0de5('0x25')]){delete _0xbe0ee1[_0x0de5('0x25')];}_0x5a6af8[_0x0de5('0x15')](_0x2f6be8)[_0x0de5('0x26')](_0xbe0ee1);};}exports[_0x0de5('0x27')]=function(_0x3cd53e,_0x2ffec0){var _0x172e98={},_0x3eeb47={},_0x2b5ea2={'count':0x0,'rows':[]};var _0x124353=db[_0x0de5('0x28')]['rawAttributes'];_0x3eeb47['model']=_[_0x0de5('0x29')](_0x124353);var _0x43be2a={'dateStart':_0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x2b')],'dateEnd':_0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x2c')]};delete _0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x2b')];delete _0x3cd53e['query'][_0x0de5('0x2c')];_0x3eeb47[_0x0de5('0x2a')]=_[_0x0de5('0x29')](_0x3cd53e[_0x0de5('0x2a')]);_0x3eeb47['filters']=_[_0x0de5('0x2d')](_0x3eeb47[_0x0de5('0x2e')],_0x3eeb47[_0x0de5('0x2a')]);_0x172e98[_0x0de5('0x2f')]=_[_0x0de5('0x2d')](_0x3eeb47[_0x0de5('0x2e')],qs[_0x0de5('0x30')](_0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x30')]));_0x172e98['attributes']=_0x172e98['attributes'][_0x0de5('0x31')]?_0x172e98[_0x0de5('0x2f')]:_0x3eeb47[_0x0de5('0x2e')];if(!_0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x32')]('nolimit')){_0x172e98['limit']=qs['limit'](_0x3cd53e[_0x0de5('0x2a')]['limit']);_0x172e98[_0x0de5('0x18')]=qs[_0x0de5('0x18')](_0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x18')]);}_0x172e98[_0x0de5('0x33')]=qs[_0x0de5('0x34')](_0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x34')]);_0x172e98[_0x0de5('0x35')]=qs['filters'](_[_0x0de5('0x36')](_0x3cd53e[_0x0de5('0x2a')],_0x3eeb47['filters']));if(_0x43be2a[_0x0de5('0x2b')]){if(_0x43be2a[_0x0de5('0x2c')]){_0x43be2a[_0x0de5('0x2c')]=moment(_0x43be2a[_0x0de5('0x2c')])[_0x0de5('0x37')](0x1,'day');}else{_0x43be2a[_0x0de5('0x2c')]=moment(_0x43be2a['dateStart'])[_0x0de5('0x37')](0x1,_0x0de5('0x38'));}_[_0x0de5('0x39')](_0x172e98['where'],{'createdAt':{'$gte':_0x43be2a[_0x0de5('0x2b')],'$lte':_0x43be2a[_0x0de5('0x2c')]}});}if(_0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x3a')]){_0x172e98['where']=_[_0x0de5('0x39')](_0x172e98[_0x0de5('0x35')],{'$or':_['map'](_0x124353,function(_0x36c8af){if(_0x36c8af['type'][_0x0de5('0x3b')]!==_0x0de5('0x3c')){var _0x2692bd={};_0x2692bd[_0x36c8af[_0x0de5('0x3d')]]={'$like':'%'+_0x3cd53e[_0x0de5('0x2a')][_0x0de5('0x3a')]+'%'};return _0x2692bd;}})});}_0x172e98=_['merge']({},_0x172e98,_0x3cd53e[_0x0de5('0x3e')]);var _0x1fdca6={'where':_0x172e98[_0x0de5('0x35')]};return db['SquareDetailsReport'][_0x0de5('0x17')](_0x1fdca6)[_0x0de5('0x21')](function(_0x37f9ba){_0x2b5ea2[_0x0de5('0x17')]=_0x37f9ba;if(_0x3cd53e['query'][_0x0de5('0x3f')]){_0x172e98[_0x0de5('0x40')]=[{'all':!![]}];}return db[_0x0de5('0x28')][_0x0de5('0x41')](_0x172e98);})[_0x0de5('0x21')](function(_0x395402){_0x2b5ea2['rows']=_0x395402;return _0x2b5ea2;})['then'](respondWithFilteredResult(_0x2ffec0,_0x172e98))[_0x0de5('0x42')](handleError(_0x2ffec0,null));};exports[_0x0de5('0x43')]=function(_0x19ebe5,_0x5ab430){var _0xfca218={'raw':!![],'where':{'id':_0x19ebe5['params']['id']}},_0x7ccaf={};_0x7ccaf[_0x0de5('0x2e')]=_[_0x0de5('0x29')](db['SquareDetailsReport'][_0x0de5('0x44')]);_0x7ccaf[_0x0de5('0x2a')]=_['keys'](_0x19ebe5[_0x0de5('0x2a')]);_0x7ccaf[_0x0de5('0x45')]=_[_0x0de5('0x2d')](_0x7ccaf[_0x0de5('0x2e')],_0x7ccaf[_0x0de5('0x2a')]);_0xfca218['attributes']=_[_0x0de5('0x2d')](_0x7ccaf[_0x0de5('0x2e')],qs['fields'](_0x19ebe5[_0x0de5('0x2a')][_0x0de5('0x30')]));_0xfca218[_0x0de5('0x2f')]=_0xfca218[_0x0de5('0x2f')][_0x0de5('0x31')]?_0xfca218['attributes']:_0x7ccaf[_0x0de5('0x2e')];if(_0x19ebe5[_0x0de5('0x2a')][_0x0de5('0x3f')]){_0xfca218['include']=[{'all':!![]}];}_0xfca218=_[_0x0de5('0x39')]({},_0xfca218,_0x19ebe5[_0x0de5('0x3e')]);return db[_0x0de5('0x28')][_0x0de5('0x46')](_0xfca218)[_0x0de5('0x21')](handleEntityNotFound(_0x5ab430,null))[_0x0de5('0x21')](respondWithResult(_0x5ab430,null))[_0x0de5('0x42')](handleError(_0x5ab430,null));};exports['create']=function(_0x21a787,_0x165078){return db[_0x0de5('0x28')][_0x0de5('0x47')](_0x21a787[_0x0de5('0x48')],{})['then'](respondWithResult(_0x165078,0xc9))[_0x0de5('0x42')](handleError(_0x165078,null));};exports['update']=function(_0x4bcaa5,_0x2fc915){if(_0x4bcaa5['body']['id']){delete _0x4bcaa5[_0x0de5('0x48')]['id'];}return db['SquareDetailsReport']['find']({'where':{'id':_0x4bcaa5[_0x0de5('0x49')]['id']}})[_0x0de5('0x21')](handleEntityNotFound(_0x2fc915,null))[_0x0de5('0x21')](saveUpdates(_0x4bcaa5['body'],null))[_0x0de5('0x21')](respondWithResult(_0x2fc915,null))[_0x0de5('0x42')](handleError(_0x2fc915,null));};exports['destroy']=function(_0x397e6d,_0xeed6a6){return db[_0x0de5('0x28')][_0x0de5('0x46')]({'where':{'id':_0x397e6d[_0x0de5('0x49')]['id']}})['then'](handleEntityNotFound(_0xeed6a6,null))[_0x0de5('0x21')](removeEntity(_0xeed6a6,null))[_0x0de5('0x42')](handleError(_0xeed6a6,null));};exports['describe']=function(_0x36e707,_0x5452b3){return db['SquareDetailsReport'][_0x0de5('0x4a')]()['then'](respondWithResult(_0x5452b3,null))['catch'](handleError(_0x5452b3,null));};
\ No newline at end of file
index a8d683f..d0eb720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cec=['request-promise','./squareReportDetail.attributes','define','SquareDetailsReport','report_square_details','lodash','../../config/logger','api','moment','bluebird'];(function(_0x479746,_0x574758){var _0x36d2aa=function(_0x27e29d){while(--_0x27e29d){_0x479746['push'](_0x479746['shift']());}};_0x36d2aa(++_0x574758);}(_0x1cec,0xb9));var _0xc1ce=function(_0x270ed1,_0x471778){_0x270ed1=_0x270ed1-0x0;var _0x26d741=_0x1cec[_0x270ed1];return _0x26d741;};'use strict';var _=require(_0xc1ce('0x0'));var util=require('util');var logger=require(_0xc1ce('0x1'))(_0xc1ce('0x2'));var moment=require(_0xc1ce('0x3'));var BPromise=require(_0xc1ce('0x4'));var rp=require(_0xc1ce('0x5'));var attributes=require(_0xc1ce('0x6'));module['exports']=function(_0x198178,_0x1c71a4){return _0x198178[_0xc1ce('0x7')](_0xc1ce('0x8'),attributes,{'tableName':_0xc1ce('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b82=['request-promise','./squareReportDetail.attributes','exports','define','SquareDetailsReport','lodash','../../config/logger','moment','bluebird'];(function(_0x17318b,_0x1d9516){var _0x4bef2e=function(_0x3bc178){while(--_0x3bc178){_0x17318b['push'](_0x17318b['shift']());}};_0x4bef2e(++_0x1d9516);}(_0x5b82,0x16d));var _0x25b8=function(_0x35117e,_0x1e2d7c){_0x35117e=_0x35117e-0x0;var _0x1a3aa9=_0x5b82[_0x35117e];return _0x1a3aa9;};'use strict';var _=require(_0x25b8('0x0'));var util=require('util');var logger=require(_0x25b8('0x1'))('api');var moment=require(_0x25b8('0x2'));var BPromise=require(_0x25b8('0x3'));var rp=require(_0x25b8('0x4'));var attributes=require(_0x25b8('0x5'));module[_0x25b8('0x6')]=function(_0x1d606d,_0x408c27){return _0x1d606d[_0x25b8('0x7')](_0x25b8('0x8'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36670dd..5e6a3e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e8a=['SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','SquareDetailsReport','options','raw','then','CreateSquareDetailsReport','stringify','util','moment','randomstring','ioredis','../../config/utils','client','http','request'];(function(_0x392866,_0x236f51){var _0x517750=function(_0x3a3bfb){while(--_0x3a3bfb){_0x392866['push'](_0x392866['shift']());}};_0x517750(++_0x236f51);}(_0x2e8a,0xc7));var _0xa2e8=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0x2e8a[_0x3a6efd];return _0x487b9a;};'use strict';var _=require('lodash');var util=require(_0xa2e8('0x0'));var moment=require(_0xa2e8('0x1'));var BPromise=require('bluebird');var rs=require(_0xa2e8('0x2'));var fs=require('fs');var Redis=require(_0xa2e8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa2e8('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa2e8('0x5')][_0xa2e8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4d31a8,_0x5dffa2,_0x99f433){return new BPromise(function(_0x3b6834,_0x314adf){return client[_0xa2e8('0x7')](_0x4d31a8,_0x99f433)['then'](function(_0x22e15e){logger['info'](_0xa2e8('0x8'),_0x5dffa2,_0xa2e8('0x9'));logger[_0xa2e8('0xa')](_0xa2e8('0xb'),_0x5dffa2,_0xa2e8('0x9'),JSON['stringify'](_0x22e15e));if(_0x22e15e[_0xa2e8('0xc')]){if(_0x22e15e[_0xa2e8('0xc')]['code']===0x1f4){logger[_0xa2e8('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x5dffa2,_0x22e15e[_0xa2e8('0xc')][_0xa2e8('0xd')]);return _0x314adf(_0x22e15e[_0xa2e8('0xc')]['message']);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x5dffa2,_0x22e15e[_0xa2e8('0xc')]['message']);return _0x3b6834(_0x22e15e[_0xa2e8('0xc')]['message']);}else{logger[_0xa2e8('0xe')](_0xa2e8('0x8'),_0x5dffa2,_0xa2e8('0x9'));_0x3b6834(_0x22e15e[_0xa2e8('0xf')][_0xa2e8('0xd')]);}})[_0xa2e8('0x10')](function(_0x4c216b){logger[_0xa2e8('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x5dffa2,_0x4c216b);_0x314adf(_0x4c216b);});});}exports['CreateSquareDetailsReport']=function(_0x1a7583){var _0x2fd2c0=this;return new Promise(function(_0x21e869,_0xc2666b){return db[_0xa2e8('0x11')]['create'](_0x1a7583['body'],{'raw':_0x1a7583[_0xa2e8('0x12')]?_0x1a7583[_0xa2e8('0x12')][_0xa2e8('0x13')]===undefined?!![]:![]:!![]})[_0xa2e8('0x14')](function(_0xd8f70){logger[_0xa2e8('0xe')]('CreateSquareDetailsReport',_0x1a7583);logger[_0xa2e8('0xa')](_0xa2e8('0x15'),_0x1a7583,JSON[_0xa2e8('0x16')](_0xd8f70));_0x21e869(_0xd8f70);})[_0xa2e8('0x10')](function(_0x51e9a9){logger['error'](_0xa2e8('0x15'),_0x51e9a9[_0xa2e8('0xd')],_0x1a7583);_0xc2666b(_0x2fd2c0['error'](0x1f4,_0x51e9a9['message']));});});};
\ No newline at end of file
+var _0xc43c=['then','CreateSquareDetailsReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','create','body','raw'];(function(_0x455391,_0x383b48){var _0x1445b9=function(_0x128842){while(--_0x128842){_0x455391['push'](_0x455391['shift']());}};_0x1445b9(++_0x383b48);}(_0xc43c,0x152));var _0xcc43=function(_0x4f07f0,_0x7921d6){_0x4f07f0=_0x4f07f0-0x0;var _0x5738d3=_0xc43c[_0x4f07f0];return _0x5738d3;};'use strict';var _=require(_0xcc43('0x0'));var util=require(_0xcc43('0x1'));var moment=require(_0xcc43('0x2'));var BPromise=require(_0xcc43('0x3'));var rs=require(_0xcc43('0x4'));var fs=require('fs');var Redis=require(_0xcc43('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xcc43('0x6'));var logger=require(_0xcc43('0x7'))('rpc');var config=require(_0xcc43('0x8'));var jayson=require(_0xcc43('0x9'));var client=jayson[_0xcc43('0xa')][_0xcc43('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x9140b6,_0x13c316,_0x298aa7){return new BPromise(function(_0x3b8857,_0x1913c6){return client[_0xcc43('0xc')](_0x9140b6,_0x298aa7)['then'](function(_0x3f017e){logger[_0xcc43('0xd')](_0xcc43('0xe'),_0x13c316,_0xcc43('0xf'));logger[_0xcc43('0x10')](_0xcc43('0x11'),_0x13c316,'request\x20sent',JSON[_0xcc43('0x12')](_0x3f017e));if(_0x3f017e[_0xcc43('0x13')]){if(_0x3f017e[_0xcc43('0x13')][_0xcc43('0x14')]===0x1f4){logger[_0xcc43('0x13')](_0xcc43('0xe'),_0x13c316,_0x3f017e['error'][_0xcc43('0x15')]);return _0x1913c6(_0x3f017e['error'][_0xcc43('0x15')]);}logger[_0xcc43('0x13')]('SquareDetailsReport,\x20%s,\x20%s',_0x13c316,_0x3f017e['error'][_0xcc43('0x15')]);return _0x3b8857(_0x3f017e[_0xcc43('0x13')][_0xcc43('0x15')]);}else{logger[_0xcc43('0xd')](_0xcc43('0xe'),_0x13c316,_0xcc43('0xf'));_0x3b8857(_0x3f017e['result']['message']);}})[_0xcc43('0x16')](function(_0x9b6dc){logger[_0xcc43('0x13')](_0xcc43('0xe'),_0x13c316,_0x9b6dc);_0x1913c6(_0x9b6dc);});});}exports['CreateSquareDetailsReport']=function(_0x33fe3a){var _0x3893af=this;return new Promise(function(_0x266af8,_0x56b27f){return db['SquareDetailsReport'][_0xcc43('0x17')](_0x33fe3a[_0xcc43('0x18')],{'raw':_0x33fe3a['options']?_0x33fe3a['options'][_0xcc43('0x19')]===undefined?!![]:![]:!![]})[_0xcc43('0x1a')](function(_0x2418d3){logger[_0xcc43('0xd')](_0xcc43('0x1b'),_0x33fe3a);logger[_0xcc43('0x10')](_0xcc43('0x1b'),_0x33fe3a,JSON[_0xcc43('0x12')](_0x2418d3));_0x266af8(_0x2418d3);})[_0xcc43('0x16')](function(_0x188edd){logger['error'](_0xcc43('0x1b'),_0x188edd[_0xcc43('0x15')],_0x33fe3a);_0x56b27f(_0x3893af[_0xcc43('0x13')](0x1f4,_0x188edd[_0xcc43('0x15')]));});});};
\ No newline at end of file
index 0b67384..c2567b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ee=['../../components/auth/service','./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess','express','Router'];(function(_0x190cf8,_0x276f5a){var _0xbb771e=function(_0x1e8338){while(--_0x1e8338){_0x190cf8['push'](_0x190cf8['shift']());}};_0xbb771e(++_0x276f5a);}(_0x91ee,0xe8));var _0xe91e=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x91ee[_0x24061a];return _0x82054e;};'use strict';var express=require(_0xe91e('0x0'));var router=express[_0xe91e('0x1')]();var auth=require(_0xe91e('0x2'));var controller=require(_0xe91e('0x3'));router[_0xe91e('0x4')]('/',auth[_0xe91e('0x5')](),controller[_0xe91e('0x6')]);router[_0xe91e('0x4')](_0xe91e('0x7'),auth['isAuthenticated'](),controller[_0xe91e('0x8')]);module['exports']=router;
\ No newline at end of file
+var _0x8c1f=['exports','Router','../../components/auth/service','./system.controller','isAuthenticated','/process/:pid/kill','killProcess'];(function(_0x106a3e,_0x506911){var _0xdaa0c5=function(_0x326ee1){while(--_0x326ee1){_0x106a3e['push'](_0x106a3e['shift']());}};_0xdaa0c5(++_0x506911);}(_0x8c1f,0xbe));var _0xf8c1=function(_0x4eea58,_0x3786ec){_0x4eea58=_0x4eea58-0x0;var _0xa0abbe=_0x8c1f[_0x4eea58];return _0xa0abbe;};'use strict';var express=require('express');var router=express[_0xf8c1('0x0')]();var auth=require(_0xf8c1('0x1'));var controller=require(_0xf8c1('0x2'));router['get']('/',auth[_0xf8c1('0x3')](),controller['index']);router['get'](_0xf8c1('0x4'),auth['isAuthenticated'](),controller[_0xf8c1('0x5')]);module[_0xf8c1('0x6')]=router;
\ No newline at end of file
index bf25891..2afb4a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x937a=['Process\x20with\x20pid\x20%s\x20killed\x20correctly','exec','../../config/logger','api','bluebird','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','status','index','getAllData','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!'];(function(_0x1e393b,_0x355f6b){var _0x3d0bfe=function(_0x320830){while(--_0x320830){_0x1e393b['push'](_0x1e393b['shift']());}};_0x3d0bfe(++_0x355f6b);}(_0x937a,0xd0));var _0xa937=function(_0x190e1f,_0x11e558){_0x190e1f=_0x190e1f-0x0;var _0x2ba93a=_0x937a[_0x190e1f];return _0x2ba93a;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0xa937('0x0')];var logger=require(_0xa937('0x1'))(_0xa937('0x2'));var util=require('util');var BPromise=require(_0xa937('0x3'));var _=require('lodash');function handleError(_0xb894df,_0x556629,_0x4ed67e){_0x556629=_0x556629||0x1f4;return function(_0x2ab02d){logger[_0xa937('0x4')](_0xa937('0x5'),_0x4ed67e,_0x556629,util[_0xa937('0x6')](_0x2ab02d,{'showHidden':![],'depth':null}));delete _0x2ab02d['name'];_0xb894df[_0xa937('0x7')](_0x556629)['send'](_0x2ab02d);};}exports[_0xa937('0x8')]=function(_0x4e4f10,_0x4d7c01){return info[_0xa937('0x9')]()[_0xa937('0xa')](function(_0x27d6c3){return _0x4d7c01['status'](0xc8)[_0xa937('0xb')](_0x27d6c3);})[_0xa937('0xc')](function(_0x529373){return _0x4d7c01[_0xa937('0x7')](0x1f4)[_0xa937('0xb')](_0x529373);});};exports[_0xa937('0xd')]=function(_0x4ec25b,_0x4b845d){var _0x520cd5=[_0xa937('0xe')];return new BPromise(function(_0x2252f9,_0x5a72ce){return exec(util[_0xa937('0xf')](_0xa937('0x10'),_0x4ec25b[_0xa937('0x11')][_0xa937('0x12')]),function(_0x355b1d,_0x107835,_0x424cad){if(_0x355b1d){return _0x5a72ce(_0x355b1d);}return _0x2252f9(_0x107835);});})[_0xa937('0xa')](function(_0x3cd9ca){var _0x2ccb20=![];var _0x1514e2=_0x3cd9ca['split'](/\n/);for(var _0x2a3d3a=0x0,_0x2ca74a=_0x520cd5[_0xa937('0x13')];_0x2a3d3a<_0x2ca74a,_0x2ccb20===![];_0x2a3d3a+=0x1){if(_0x3cd9ca[_0xa937('0x14')](_0x520cd5[_0x2a3d3a])>=0x0){_0x2ccb20=!![];}}if(!_0x2ccb20){throw new Error(util[_0xa937('0xf')](_0xa937('0x15'),_0x4ec25b[_0xa937('0x11')][_0xa937('0x12')]));}process['kill'](_0x4ec25b[_0xa937('0x11')][_0xa937('0x12')],'SIGINT');return _0x4b845d['status'](0xc8)[_0xa937('0xb')]({'message':util[_0xa937('0xf')](_0xa937('0x16'),_0x4ec25b[_0xa937('0x11')]['pid'])});})['catch'](handleError(_0x4b845d,null,_0xa937('0xd')));};
\ No newline at end of file
+var _0x6606=['<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','index','then','status','json','killProcess','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','kill','systeminformation','child_process','../../config/logger','api','util','bluebird','lodash','error'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6606,0x1c0));var _0x6660=function(_0xcf7ea1,_0x2e91ad){_0xcf7ea1=_0xcf7ea1-0x0;var _0x42ebbb=_0x6606[_0xcf7ea1];return _0x42ebbb;};'use strict';var info=require(_0x6660('0x0'));var exec=require(_0x6660('0x1'))['exec'];var logger=require(_0x6660('0x2'))(_0x6660('0x3'));var util=require(_0x6660('0x4'));var BPromise=require(_0x6660('0x5'));var _=require(_0x6660('0x6'));function handleError(_0x3945a7,_0x15b71b,_0x3d7867){_0x15b71b=_0x15b71b||0x1f4;return function(_0x200493){logger[_0x6660('0x7')](_0x6660('0x8'),_0x3d7867,_0x15b71b,util[_0x6660('0x9')](_0x200493,{'showHidden':![],'depth':null}));delete _0x200493[_0x6660('0xa')];_0x3945a7['status'](_0x15b71b)['send'](_0x200493);};}exports[_0x6660('0xb')]=function(_0xd2d61f,_0x150f56){return info['getAllData']()[_0x6660('0xc')](function(_0x3f9f0b){return _0x150f56[_0x6660('0xd')](0xc8)[_0x6660('0xe')](_0x3f9f0b);})['catch'](function(_0x4f7f74){return _0x150f56['status'](0x1f4)['json'](_0x4f7f74);});};exports[_0x6660('0xf')]=function(_0x1d3ada,_0x3ec24a){var _0x96232b=['components/import/cm'];return new BPromise(function(_0x1801be,_0x5b790d){return exec(util[_0x6660('0x10')](_0x6660('0x11'),_0x1d3ada[_0x6660('0x12')][_0x6660('0x13')]),function(_0x54b9bd,_0x511ab6,_0x1fe780){if(_0x54b9bd){return _0x5b790d(_0x54b9bd);}return _0x1801be(_0x511ab6);});})['then'](function(_0x2ae13a){var _0x193d0a=![];var _0x1bb04b=_0x2ae13a[_0x6660('0x14')](/\n/);for(var _0x52b3ab=0x0,_0x261206=_0x96232b[_0x6660('0x15')];_0x52b3ab<_0x261206,_0x193d0a===![];_0x52b3ab+=0x1){if(_0x2ae13a[_0x6660('0x16')](_0x96232b[_0x52b3ab])>=0x0){_0x193d0a=!![];}}if(!_0x193d0a){throw new Error(util[_0x6660('0x10')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x1d3ada[_0x6660('0x12')][_0x6660('0x13')]));}process[_0x6660('0x17')](_0x1d3ada['params'][_0x6660('0x13')],'SIGINT');return _0x3ec24a[_0x6660('0xd')](0xc8)[_0x6660('0xe')]({'message':util[_0x6660('0x10')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x1d3ada[_0x6660('0x12')][_0x6660('0x13')])});})['catch'](handleError(_0x3ec24a,null,_0x6660('0xf')));};
\ No newline at end of file
index 1340c7d..1ef56b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['get','isAuthenticated','/:id','show','post','create','put','update','destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0xb10b,0x12a));var _0xbb10=function(_0x9ae07c,_0x4cba11){_0x9ae07c=_0x9ae07c-0x0;var _0x837b1f=_0xb10b[_0x9ae07c];return _0x837b1f;};'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 auth=require(_0xbb10('0x4'));var interaction=require(_0xbb10('0x5'));var config=require(_0xbb10('0x6'));var controller=require(_0xbb10('0x7'));router[_0xbb10('0x8')]('/',auth[_0xbb10('0x9')](),controller['index']);router[_0xbb10('0x8')](_0xbb10('0xa'),auth['isAuthenticated'](),controller[_0xbb10('0xb')]);router[_0xbb10('0xc')]('/',auth[_0xbb10('0x9')](),controller[_0xbb10('0xd')]);router[_0xbb10('0xe')](_0xbb10('0xa'),auth[_0xbb10('0x9')](),controller[_0xbb10('0xf')]);router['delete']('/:id',auth[_0xbb10('0x9')](),controller[_0xbb10('0x10')]);module[_0xbb10('0x11')]=router;
\ No newline at end of file
+var _0x5f66=['show','post','create','put','update','delete','/:id','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./tag.controller','isAuthenticated','index'];(function(_0x3ec936,_0x543fce){var _0x399302=function(_0x41c053){while(--_0x41c053){_0x3ec936['push'](_0x3ec936['shift']());}};_0x399302(++_0x543fce);}(_0x5f66,0x1a0));var _0x65f6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5f66[_0xa464c9];return _0x3d73c4;};'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 auth=require(_0x65f6('0x4'));var interaction=require(_0x65f6('0x5'));var config=require('../../config/environment');var controller=require(_0x65f6('0x6'));router['get']('/',auth[_0x65f6('0x7')](),controller[_0x65f6('0x8')]);router['get']('/:id',auth[_0x65f6('0x7')](),controller[_0x65f6('0x9')]);router[_0x65f6('0xa')]('/',auth[_0x65f6('0x7')](),controller[_0x65f6('0xb')]);router[_0x65f6('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x65f6('0xd')]);router[_0x65f6('0xe')](_0x65f6('0xf'),auth[_0x65f6('0x7')](),controller['destroy']);module[_0x65f6('0x10')]=router;
\ No newline at end of file
index 953c1e6..99585c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe627=['STRING','sequelize','name'];(function(_0x2d84c2,_0xe376db){var _0x2c96d7=function(_0x5b666d){while(--_0x5b666d){_0x2d84c2['push'](_0x2d84c2['shift']());}};_0x2c96d7(++_0xe376db);}(_0xe627,0x196));var _0x7e62=function(_0x260d65,_0x3f8f62){_0x260d65=_0x260d65-0x0;var _0x4d0751=_0xe627[_0x260d65];return _0x4d0751;};'use strict';var Sequelize=require(_0x7e62('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x7e62('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x7e62('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0ec5=['sequelize','exports','STRING','name','#0091EA'];(function(_0x3b545c,_0x491912){var _0xc9eb90=function(_0x35aeec){while(--_0x35aeec){_0x3b545c['push'](_0x3b545c['shift']());}};_0xc9eb90(++_0x491912);}(_0x0ec5,0x195));var _0x50ec=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x0ec5[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0x50ec('0x0'));module[_0x50ec('0x1')]={'name':{'type':Sequelize[_0x50ec('0x2')],'unique':_0x50ec('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x50ec('0x2')],'defaultValue':_0x50ec('0x4')},'description':{'type':Sequelize[_0x50ec('0x2')]}};
\ No newline at end of file
index 9503054..cc321fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1020=['order','sort','where','pick','add','day','merge','filter','type','VIRTUAL','field','options','includeAll','include','catch','show','params','length','find','create','body','user','UserProfileSection','autoAssociation','error','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','count','offset','limit','set','apply','reject','save','update','then','destroy','get','Tags','UserProfileResource','stack','name','send','Tag','rawAttributes','query','dateStart','dateEnd','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1020,0x1a4));var _0x0102=function(_0x1196bd,_0xba4aea){_0x1196bd=_0x1196bd-0x0;var _0x26014f=_0x1020[_0x1196bd];return _0x26014f;};'use strict';var pdf=require(_0x0102('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x0102('0x1'));var zipdir=require(_0x0102('0x2'));var jsonpatch=require(_0x0102('0x3'));var rp=require(_0x0102('0x4'));var moment=require(_0x0102('0x5'));var BPromise=require(_0x0102('0x6'));var Mustache=require(_0x0102('0x7'));var util=require(_0x0102('0x8'));var path=require(_0x0102('0x9'));var sox=require(_0x0102('0xa'));var csv=require(_0x0102('0xb'));var ejs=require(_0x0102('0xc'));var fs=require('fs');var _=require('lodash');var squel=require(_0x0102('0xd'));var crypto=require(_0x0102('0xe'));var jsforce=require(_0x0102('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0102('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0x0102('0x11'));var logger=require(_0x0102('0x12'))(_0x0102('0x13'));var utils=require(_0x0102('0x14'));var config=require(_0x0102('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x74fe25,_0x5dac5){_0x5dac5=_0x5dac5||0xcc;return function(_0xd75f51){if(_0xd75f51){return _0x74fe25[_0x0102('0x16')](_0x5dac5);}return _0x74fe25[_0x0102('0x17')](_0x5dac5)[_0x0102('0x18')]();};}function respondWithResult(_0x391fe1,_0x34a90d){_0x34a90d=_0x34a90d||0xc8;return function(_0x43ec8c){if(_0x43ec8c){return _0x391fe1['status'](_0x34a90d)['json'](_0x43ec8c);}};}function respondWithFilteredResult(_0xe2c57f,_0x20f557){return function(_0x3d0f4b){if(_0x3d0f4b){var _0x21d392=_0x3d0f4b[_0x0102('0x19')],_0x41f27b=_0x20f557[_0x0102('0x1a')],_0x435ac7=_0x20f557[_0x0102('0x1a')]+_0x20f557[_0x0102('0x1b')],_0x1a3e66;if(_0x435ac7>=_0x21d392){_0x435ac7=_0x21d392;_0x1a3e66=0xc8;}else{_0x1a3e66=0xce;}_0xe2c57f['status'](_0x1a3e66);return _0xe2c57f[_0x0102('0x1c')]('Content-Range',_0x41f27b+'-'+_0x435ac7+'/'+_0x21d392)['json'](_0x3d0f4b);}return null;};}function patchUpdates(_0x4f3266){return function(_0x246a2a){try{jsonpatch[_0x0102('0x1d')](_0x246a2a,_0x4f3266,!![]);}catch(_0x41c0a1){return BPromise[_0x0102('0x1e')](_0x41c0a1);}return _0x246a2a[_0x0102('0x1f')]();};}function saveUpdates(_0x187bf1,_0x74533b){return function(_0x2fba8b){if(_0x2fba8b){return _0x2fba8b[_0x0102('0x20')](_0x187bf1)[_0x0102('0x21')](function(_0x26a805){return _0x26a805;});}return null;};}function removeEntity(_0x129960,_0x1cc7bb){return function(_0x28bcf3){if(_0x28bcf3){return _0x28bcf3[_0x0102('0x22')]()['then'](function(){var _0x2e33a6=_0x28bcf3[_0x0102('0x23')]({'plain':!![]});var _0x34cb74=_0x0102('0x24');return db[_0x0102('0x25')]['destroy']({'where':{'type':_0x34cb74,'resourceId':_0x2e33a6['id']}})[_0x0102('0x21')](function(){return _0x28bcf3;});})[_0x0102('0x21')](function(){_0x129960[_0x0102('0x17')](0xcc)[_0x0102('0x18')]();});}};}function handleEntityNotFound(_0x130f92,_0x239451){return function(_0x5ea683){if(!_0x5ea683){_0x130f92[_0x0102('0x16')](0x194);}return _0x5ea683;};}function handleError(_0x42e908,_0x462eb2){_0x462eb2=_0x462eb2||0x1f4;return function(_0x16b9e8){logger['error'](_0x16b9e8[_0x0102('0x26')]);if(_0x16b9e8[_0x0102('0x27')]){delete _0x16b9e8[_0x0102('0x27')];}_0x42e908[_0x0102('0x17')](_0x462eb2)[_0x0102('0x28')](_0x16b9e8);};}exports['index']=function(_0x2e01c7,_0xae6964){var _0x5a3850={},_0x1e6efc={},_0x5944de={'count':0x0,'rows':[]};var _0x3e5d95=db[_0x0102('0x29')][_0x0102('0x2a')];_0x1e6efc['model']=_['keys'](_0x3e5d95);var _0x4fbc76={'dateStart':_0x2e01c7[_0x0102('0x2b')][_0x0102('0x2c')],'dateEnd':_0x2e01c7['query'][_0x0102('0x2d')]};delete _0x2e01c7[_0x0102('0x2b')]['dateStart'];delete _0x2e01c7['query']['dateEnd'];_0x1e6efc[_0x0102('0x2b')]=_[_0x0102('0x2e')](_0x2e01c7[_0x0102('0x2b')]);_0x1e6efc[_0x0102('0x2f')]=_[_0x0102('0x30')](_0x1e6efc[_0x0102('0x31')],_0x1e6efc[_0x0102('0x2b')]);_0x5a3850[_0x0102('0x32')]=_[_0x0102('0x30')](_0x1e6efc[_0x0102('0x31')],qs[_0x0102('0x33')](_0x2e01c7[_0x0102('0x2b')][_0x0102('0x33')]));_0x5a3850[_0x0102('0x32')]=_0x5a3850['attributes']['length']?_0x5a3850[_0x0102('0x32')]:_0x1e6efc[_0x0102('0x31')];if(!_0x2e01c7[_0x0102('0x2b')][_0x0102('0x34')](_0x0102('0x35'))){_0x5a3850['limit']=qs[_0x0102('0x1b')](_0x2e01c7[_0x0102('0x2b')][_0x0102('0x1b')]);_0x5a3850['offset']=qs[_0x0102('0x1a')](_0x2e01c7[_0x0102('0x2b')][_0x0102('0x1a')]);}_0x5a3850[_0x0102('0x36')]=qs[_0x0102('0x37')](_0x2e01c7[_0x0102('0x2b')][_0x0102('0x37')]);_0x5a3850[_0x0102('0x38')]=qs[_0x0102('0x2f')](_[_0x0102('0x39')](_0x2e01c7[_0x0102('0x2b')],_0x1e6efc[_0x0102('0x2f')]));if(_0x4fbc76[_0x0102('0x2c')]){if(_0x4fbc76['dateEnd']){_0x4fbc76[_0x0102('0x2d')]=moment(_0x4fbc76[_0x0102('0x2d')])[_0x0102('0x3a')](0x1,_0x0102('0x3b'));}else{_0x4fbc76[_0x0102('0x2d')]=moment(_0x4fbc76['dateStart'])[_0x0102('0x3a')](0x1,_0x0102('0x3b'));}_[_0x0102('0x3c')](_0x5a3850['where'],{'createdAt':{'$gte':_0x4fbc76[_0x0102('0x2c')],'$lte':_0x4fbc76[_0x0102('0x2d')]}});}if(_0x2e01c7[_0x0102('0x2b')][_0x0102('0x3d')]){_0x5a3850[_0x0102('0x38')]=_[_0x0102('0x3c')](_0x5a3850['where'],{'$or':_['map'](_0x3e5d95,function(_0x30d758){if(_0x30d758[_0x0102('0x3e')]['key']!==_0x0102('0x3f')){var _0x2cf876={};_0x2cf876[_0x30d758[_0x0102('0x40')]]={'$like':'%'+_0x2e01c7[_0x0102('0x2b')][_0x0102('0x3d')]+'%'};return _0x2cf876;}})});}_0x5a3850=_[_0x0102('0x3c')]({},_0x5a3850,_0x2e01c7[_0x0102('0x41')]);var _0x3b0171={'where':_0x5a3850[_0x0102('0x38')]};return db[_0x0102('0x29')][_0x0102('0x19')](_0x3b0171)['then'](function(_0x2743e4){_0x5944de['count']=_0x2743e4;if(_0x2e01c7[_0x0102('0x2b')][_0x0102('0x42')]){_0x5a3850[_0x0102('0x43')]=[{'all':!![]}];}return db[_0x0102('0x29')]['findAll'](_0x5a3850);})[_0x0102('0x21')](function(_0x3607a6){_0x5944de['rows']=_0x3607a6;return _0x5944de;})[_0x0102('0x21')](respondWithFilteredResult(_0xae6964,_0x5a3850))[_0x0102('0x44')](handleError(_0xae6964,null));};exports[_0x0102('0x45')]=function(_0x35040a,_0xb78550){var _0x5cbd34={'raw':!![],'where':{'id':_0x35040a[_0x0102('0x46')]['id']}},_0x230005={};_0x230005[_0x0102('0x31')]=_[_0x0102('0x2e')](db[_0x0102('0x29')]['rawAttributes']);_0x230005[_0x0102('0x2b')]=_['keys'](_0x35040a['query']);_0x230005[_0x0102('0x2f')]=_[_0x0102('0x30')](_0x230005['model'],_0x230005[_0x0102('0x2b')]);_0x5cbd34[_0x0102('0x32')]=_[_0x0102('0x30')](_0x230005[_0x0102('0x31')],qs[_0x0102('0x33')](_0x35040a['query'][_0x0102('0x33')]));_0x5cbd34[_0x0102('0x32')]=_0x5cbd34[_0x0102('0x32')][_0x0102('0x47')]?_0x5cbd34['attributes']:_0x230005[_0x0102('0x31')];if(_0x35040a[_0x0102('0x2b')][_0x0102('0x42')]){_0x5cbd34[_0x0102('0x43')]=[{'all':!![]}];}_0x5cbd34=_[_0x0102('0x3c')]({},_0x5cbd34,_0x35040a[_0x0102('0x41')]);return db[_0x0102('0x29')][_0x0102('0x48')](_0x5cbd34)[_0x0102('0x21')](handleEntityNotFound(_0xb78550,null))[_0x0102('0x21')](respondWithResult(_0xb78550,null))[_0x0102('0x44')](handleError(_0xb78550,null));};exports[_0x0102('0x49')]=function(_0x575862,_0x4ee019){return db[_0x0102('0x29')][_0x0102('0x49')](_0x575862[_0x0102('0x4a')],{})['then'](function(_0x14c812){var _0x5b43f7=_0x575862['user'][_0x0102('0x23')]({'plain':!![]});if(!_0x5b43f7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5b43f7['role']===_0x0102('0x4b')){var _0x33cf95=_0x14c812[_0x0102('0x23')]({'plain':!![]});var _0xf3e903=_0x0102('0x24');return db[_0x0102('0x4c')][_0x0102('0x48')]({'where':{'name':_0xf3e903,'userProfileId':_0x5b43f7['userProfileId']},'raw':!![]})['then'](function(_0x17bb0b){if(_0x17bb0b&&_0x17bb0b[_0x0102('0x4d')]===0x0){return db[_0x0102('0x25')][_0x0102('0x49')]({'name':_0x33cf95[_0x0102('0x27')],'resourceId':_0x33cf95['id'],'type':_0x17bb0b[_0x0102('0x27')],'sectionId':_0x17bb0b['id']},{})[_0x0102('0x21')](function(){return _0x14c812;});}else{return _0x14c812;}})[_0x0102('0x44')](function(_0x393a1f){logger[_0x0102('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x393a1f);throw _0x393a1f;});}return _0x14c812;})[_0x0102('0x21')](respondWithResult(_0x4ee019,0xc9))['catch'](handleError(_0x4ee019,null));};exports[_0x0102('0x20')]=function(_0x8af559,_0x3c9001){if(_0x8af559['body']['id']){delete _0x8af559[_0x0102('0x4a')]['id'];}return db[_0x0102('0x29')]['find']({'where':{'id':_0x8af559[_0x0102('0x46')]['id']}})[_0x0102('0x21')](handleEntityNotFound(_0x3c9001,null))[_0x0102('0x21')](saveUpdates(_0x8af559[_0x0102('0x4a')],null))[_0x0102('0x21')](respondWithResult(_0x3c9001,null))[_0x0102('0x44')](handleError(_0x3c9001,null));};exports['destroy']=function(_0x3a35b3,_0x46f204){return db[_0x0102('0x29')][_0x0102('0x48')]({'where':{'id':_0x3a35b3[_0x0102('0x46')]['id']}})[_0x0102('0x21')](handleEntityNotFound(_0x46f204,null))[_0x0102('0x21')](removeEntity(_0x46f204,null))[_0x0102('0x44')](handleError(_0x46f204,null));};
\ No newline at end of file
+var _0x668b=['crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','Content-Range','apply','reject','update','then','UserProfileResource','stack','name','send','index','Tag','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','day','add','filter','where','merge','type','key','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','html-pdf','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','ejs','lodash','squel'];(function(_0x31cb91,_0x46e2cf){var _0x338b73=function(_0x33feab){while(--_0x33feab){_0x31cb91['push'](_0x31cb91['shift']());}};_0x338b73(++_0x46e2cf);}(_0x668b,0x140));var _0xb668=function(_0x592df4,_0x4e719b){_0x592df4=_0x592df4-0x0;var _0x3b4fe4=_0x668b[_0x592df4];return _0x3b4fe4;};'use strict';var pdf=require(_0xb668('0x0'));var emlformat=require(_0xb668('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xb668('0x2'));var jsonpatch=require(_0xb668('0x3'));var rp=require('request-promise');var moment=require(_0xb668('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb668('0x5'));var util=require(_0xb668('0x6'));var path=require(_0xb668('0x7'));var sox=require('sox');var csv=require(_0xb668('0x8'));var ejs=require(_0xb668('0x9'));var fs=require('fs');var _=require(_0xb668('0xa'));var squel=require(_0xb668('0xb'));var crypto=require(_0xb668('0xc'));var jsforce=require(_0xb668('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb668('0x8'));var querystring=require(_0xb668('0xe'));var Papa=require(_0xb668('0xf'));var Redis=require(_0xb668('0x10'));var qs=require(_0xb668('0x11'));var logger=require(_0xb668('0x12'))(_0xb668('0x13'));var utils=require(_0xb668('0x14'));var config=require('../../config/environment');var db=require(_0xb668('0x15'))['db'];function respondWithStatusCode(_0x27dbf7,_0x27de15){_0x27de15=_0x27de15||0xcc;return function(_0x2ea5fc){if(_0x2ea5fc){return _0x27dbf7[_0xb668('0x16')](_0x27de15);}return _0x27dbf7[_0xb668('0x17')](_0x27de15)[_0xb668('0x18')]();};}function respondWithResult(_0x10ed24,_0x3e5be0){_0x3e5be0=_0x3e5be0||0xc8;return function(_0x25c5c5){if(_0x25c5c5){return _0x10ed24[_0xb668('0x17')](_0x3e5be0)[_0xb668('0x19')](_0x25c5c5);}};}function respondWithFilteredResult(_0x3aed25,_0xd0450f){return function(_0x2ec706){if(_0x2ec706){var _0x3b0c84=_0x2ec706[_0xb668('0x1a')],_0x1ca6e7=_0xd0450f[_0xb668('0x1b')],_0x222cad=_0xd0450f[_0xb668('0x1b')]+_0xd0450f['limit'],_0x4fa32a;if(_0x222cad>=_0x3b0c84){_0x222cad=_0x3b0c84;_0x4fa32a=0xc8;}else{_0x4fa32a=0xce;}_0x3aed25[_0xb668('0x17')](_0x4fa32a);return _0x3aed25['set'](_0xb668('0x1c'),_0x1ca6e7+'-'+_0x222cad+'/'+_0x3b0c84)[_0xb668('0x19')](_0x2ec706);}return null;};}function patchUpdates(_0x5438ff){return function(_0x38595d){try{jsonpatch[_0xb668('0x1d')](_0x38595d,_0x5438ff,!![]);}catch(_0x53ff78){return BPromise[_0xb668('0x1e')](_0x53ff78);}return _0x38595d['save']();};}function saveUpdates(_0x12fb3f,_0x178a5d){return function(_0x253ba5){if(_0x253ba5){return _0x253ba5[_0xb668('0x1f')](_0x12fb3f)['then'](function(_0x2b7f96){return _0x2b7f96;});}return null;};}function removeEntity(_0xfe4595,_0x25e5be){return function(_0x52de83){if(_0x52de83){return _0x52de83['destroy']()[_0xb668('0x20')](function(){var _0x1e5620=_0x52de83['get']({'plain':!![]});var _0x61de4a='Tags';return db[_0xb668('0x21')]['destroy']({'where':{'type':_0x61de4a,'resourceId':_0x1e5620['id']}})[_0xb668('0x20')](function(){return _0x52de83;});})[_0xb668('0x20')](function(){_0xfe4595[_0xb668('0x17')](0xcc)[_0xb668('0x18')]();});}};}function handleEntityNotFound(_0x2a5b3d,_0xabb342){return function(_0x4d4bf8){if(!_0x4d4bf8){_0x2a5b3d[_0xb668('0x16')](0x194);}return _0x4d4bf8;};}function handleError(_0x10d767,_0x2ab8c2){_0x2ab8c2=_0x2ab8c2||0x1f4;return function(_0x49abfd){logger['error'](_0x49abfd[_0xb668('0x22')]);if(_0x49abfd[_0xb668('0x23')]){delete _0x49abfd[_0xb668('0x23')];}_0x10d767['status'](_0x2ab8c2)[_0xb668('0x24')](_0x49abfd);};}exports[_0xb668('0x25')]=function(_0x1616e5,_0x4c78a0){var _0x5709e2={},_0x12919c={},_0x2619a4={'count':0x0,'rows':[]};var _0x589c58=db[_0xb668('0x26')][_0xb668('0x27')];_0x12919c[_0xb668('0x28')]=_[_0xb668('0x29')](_0x589c58);var _0x256a8={'dateStart':_0x1616e5['query'][_0xb668('0x2a')],'dateEnd':_0x1616e5[_0xb668('0x2b')]['dateEnd']};delete _0x1616e5[_0xb668('0x2b')]['dateStart'];delete _0x1616e5[_0xb668('0x2b')][_0xb668('0x2c')];_0x12919c[_0xb668('0x2b')]=_[_0xb668('0x29')](_0x1616e5[_0xb668('0x2b')]);_0x12919c[_0xb668('0x2d')]=_[_0xb668('0x2e')](_0x12919c[_0xb668('0x28')],_0x12919c[_0xb668('0x2b')]);_0x5709e2['attributes']=_[_0xb668('0x2e')](_0x12919c[_0xb668('0x28')],qs[_0xb668('0x2f')](_0x1616e5['query'][_0xb668('0x2f')]));_0x5709e2[_0xb668('0x30')]=_0x5709e2[_0xb668('0x30')][_0xb668('0x31')]?_0x5709e2['attributes']:_0x12919c[_0xb668('0x28')];if(!_0x1616e5[_0xb668('0x2b')][_0xb668('0x32')](_0xb668('0x33'))){_0x5709e2[_0xb668('0x34')]=qs[_0xb668('0x34')](_0x1616e5[_0xb668('0x2b')]['limit']);_0x5709e2[_0xb668('0x1b')]=qs[_0xb668('0x1b')](_0x1616e5['query'][_0xb668('0x1b')]);}_0x5709e2['order']=qs['sort'](_0x1616e5[_0xb668('0x2b')][_0xb668('0x35')]);_0x5709e2['where']=qs[_0xb668('0x2d')](_['pick'](_0x1616e5[_0xb668('0x2b')],_0x12919c['filters']));if(_0x256a8['dateStart']){if(_0x256a8[_0xb668('0x2c')]){_0x256a8[_0xb668('0x2c')]=moment(_0x256a8['dateEnd'])['add'](0x1,_0xb668('0x36'));}else{_0x256a8[_0xb668('0x2c')]=moment(_0x256a8[_0xb668('0x2a')])[_0xb668('0x37')](0x1,_0xb668('0x36'));}_['merge'](_0x5709e2['where'],{'createdAt':{'$gte':_0x256a8[_0xb668('0x2a')],'$lte':_0x256a8[_0xb668('0x2c')]}});}if(_0x1616e5[_0xb668('0x2b')][_0xb668('0x38')]){_0x5709e2[_0xb668('0x39')]=_[_0xb668('0x3a')](_0x5709e2['where'],{'$or':_['map'](_0x589c58,function(_0x2715a4){if(_0x2715a4[_0xb668('0x3b')][_0xb668('0x3c')]!==_0xb668('0x3d')){var _0x74ccb6={};_0x74ccb6[_0x2715a4['field']]={'$like':'%'+_0x1616e5[_0xb668('0x2b')][_0xb668('0x38')]+'%'};return _0x74ccb6;}})});}_0x5709e2=_['merge']({},_0x5709e2,_0x1616e5[_0xb668('0x3e')]);var _0x2621c0={'where':_0x5709e2[_0xb668('0x39')]};return db[_0xb668('0x26')]['count'](_0x2621c0)['then'](function(_0x4b7192){_0x2619a4[_0xb668('0x1a')]=_0x4b7192;if(_0x1616e5['query']['includeAll']){_0x5709e2['include']=[{'all':!![]}];}return db['Tag'][_0xb668('0x3f')](_0x5709e2);})['then'](function(_0x14b269){_0x2619a4[_0xb668('0x40')]=_0x14b269;return _0x2619a4;})[_0xb668('0x20')](respondWithFilteredResult(_0x4c78a0,_0x5709e2))[_0xb668('0x41')](handleError(_0x4c78a0,null));};exports[_0xb668('0x42')]=function(_0x5ece02,_0x2fecfa){var _0x29b0ee={'raw':!![],'where':{'id':_0x5ece02[_0xb668('0x43')]['id']}},_0xb8ac84={};_0xb8ac84[_0xb668('0x28')]=_[_0xb668('0x29')](db[_0xb668('0x26')][_0xb668('0x27')]);_0xb8ac84[_0xb668('0x2b')]=_[_0xb668('0x29')](_0x5ece02[_0xb668('0x2b')]);_0xb8ac84['filters']=_[_0xb668('0x2e')](_0xb8ac84[_0xb668('0x28')],_0xb8ac84[_0xb668('0x2b')]);_0x29b0ee['attributes']=_['intersection'](_0xb8ac84[_0xb668('0x28')],qs['fields'](_0x5ece02[_0xb668('0x2b')]['fields']));_0x29b0ee['attributes']=_0x29b0ee['attributes'][_0xb668('0x31')]?_0x29b0ee[_0xb668('0x30')]:_0xb8ac84['model'];if(_0x5ece02[_0xb668('0x2b')][_0xb668('0x44')]){_0x29b0ee[_0xb668('0x45')]=[{'all':!![]}];}_0x29b0ee=_[_0xb668('0x3a')]({},_0x29b0ee,_0x5ece02[_0xb668('0x3e')]);return db[_0xb668('0x26')][_0xb668('0x46')](_0x29b0ee)[_0xb668('0x20')](handleEntityNotFound(_0x2fecfa,null))[_0xb668('0x20')](respondWithResult(_0x2fecfa,null))[_0xb668('0x41')](handleError(_0x2fecfa,null));};exports['create']=function(_0x3c6c8a,_0x415aba){return db[_0xb668('0x26')][_0xb668('0x47')](_0x3c6c8a[_0xb668('0x48')],{})[_0xb668('0x20')](function(_0x381694){var _0x1bff79=_0x3c6c8a[_0xb668('0x49')]['get']({'plain':!![]});if(!_0x1bff79)throw new Error(_0xb668('0x4a'));if(_0x1bff79[_0xb668('0x4b')]===_0xb668('0x49')){var _0x4c9eab=_0x381694['get']({'plain':!![]});var _0x25c2a0=_0xb668('0x4c');return db[_0xb668('0x4d')]['find']({'where':{'name':_0x25c2a0,'userProfileId':_0x1bff79[_0xb668('0x4e')]},'raw':!![]})['then'](function(_0x51a5d3){if(_0x51a5d3&&_0x51a5d3[_0xb668('0x4f')]===0x0){return db[_0xb668('0x21')][_0xb668('0x47')]({'name':_0x4c9eab[_0xb668('0x23')],'resourceId':_0x4c9eab['id'],'type':_0x51a5d3[_0xb668('0x23')],'sectionId':_0x51a5d3['id']},{})[_0xb668('0x20')](function(){return _0x381694;});}else{return _0x381694;}})[_0xb668('0x41')](function(_0x1af19a){logger[_0xb668('0x50')](_0xb668('0x51'),_0x1af19a);throw _0x1af19a;});}return _0x381694;})[_0xb668('0x20')](respondWithResult(_0x415aba,0xc9))[_0xb668('0x41')](handleError(_0x415aba,null));};exports[_0xb668('0x1f')]=function(_0x41750e,_0x2899ef){if(_0x41750e[_0xb668('0x48')]['id']){delete _0x41750e[_0xb668('0x48')]['id'];}return db[_0xb668('0x26')][_0xb668('0x46')]({'where':{'id':_0x41750e[_0xb668('0x43')]['id']}})[_0xb668('0x20')](handleEntityNotFound(_0x2899ef,null))[_0xb668('0x20')](saveUpdates(_0x41750e[_0xb668('0x48')],null))[_0xb668('0x20')](respondWithResult(_0x2899ef,null))[_0xb668('0x41')](handleError(_0x2899ef,null));};exports[_0xb668('0x52')]=function(_0x44724d,_0x46abfb){return db[_0xb668('0x26')][_0xb668('0x46')]({'where':{'id':_0x44724d['params']['id']}})[_0xb668('0x20')](handleEntityNotFound(_0x46abfb,null))[_0xb668('0x20')](removeEntity(_0x46abfb,null))[_0xb668('0x41')](handleError(_0x46abfb,null));};
\ No newline at end of file
index aa840e9..3da8be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x845b=['bluebird','./tag.attributes','exports','define','tools_tags','lodash','util','../../config/logger','api','moment'];(function(_0x1af348,_0x30968b){var _0x472f62=function(_0x12bf41){while(--_0x12bf41){_0x1af348['push'](_0x1af348['shift']());}};_0x472f62(++_0x30968b);}(_0x845b,0xaf));var _0xb845=function(_0x2fab67,_0x510e24){_0x2fab67=_0x2fab67-0x0;var _0x3b0237=_0x845b[_0x2fab67];return _0x3b0237;};'use strict';var _=require(_0xb845('0x0'));var util=require(_0xb845('0x1'));var logger=require(_0xb845('0x2'))(_0xb845('0x3'));var moment=require(_0xb845('0x4'));var BPromise=require(_0xb845('0x5'));var rp=require('request-promise');var attributes=require(_0xb845('0x6'));module[_0xb845('0x7')]=function(_0x3ba490,_0x17f9bc){return _0x3ba490[_0xb845('0x8')]('Tag',attributes,{'tableName':_0xb845('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd68c=['request-promise','exports','define','Tag','tools_tags','lodash','api','moment','bluebird'];(function(_0x5e43f4,_0x47ea74){var _0x3bcd34=function(_0x121c71){while(--_0x121c71){_0x5e43f4['push'](_0x5e43f4['shift']());}};_0x3bcd34(++_0x47ea74);}(_0xd68c,0x113));var _0xcd68=function(_0x5dad01,_0x51ee76){_0x5dad01=_0x5dad01-0x0;var _0x596e37=_0xd68c[_0x5dad01];return _0x596e37;};'use strict';var _=require(_0xcd68('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xcd68('0x1'));var moment=require(_0xcd68('0x2'));var BPromise=require(_0xcd68('0x3'));var rp=require(_0xcd68('0x4'));var attributes=require('./tag.attributes');module[_0xcd68('0x5')]=function(_0x3d8727,_0x30e2aa){return _0x3d8727[_0xcd68('0x6')](_0xcd68('0x7'),attributes,{'tableName':_0xcd68('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d99bf70..7cec108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7847=['Tag,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','Tag,\x20%s,\x20%s'];(function(_0x1fcbb7,_0x21ff69){var _0x1a5046=function(_0xe0768){while(--_0xe0768){_0x1fcbb7['push'](_0x1fcbb7['shift']());}};_0x1a5046(++_0x21ff69);}(_0x7847,0x1a7));var _0x7784=function(_0x30977b,_0x22be64){_0x30977b=_0x30977b-0x0;var _0x339a92=_0x7847[_0x30977b];return _0x339a92;};'use strict';var _=require(_0x7784('0x0'));var util=require(_0x7784('0x1'));var moment=require(_0x7784('0x2'));var BPromise=require(_0x7784('0x3'));var rs=require(_0x7784('0x4'));var fs=require('fs');var Redis=require(_0x7784('0x5'));var db=require(_0x7784('0x6'))['db'];var utils=require(_0x7784('0x7'));var logger=require(_0x7784('0x8'))(_0x7784('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7784('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5151e1,_0x4de69a,_0x209667){return new BPromise(function(_0x78c8f7,_0x5b2c7f){return client[_0x7784('0xb')](_0x5151e1,_0x209667)[_0x7784('0xc')](function(_0x1529e9){logger['info'](_0x7784('0xd'),_0x4de69a,'request\x20sent');logger['debug'](_0x7784('0xe'),_0x4de69a,_0x7784('0xf'),JSON[_0x7784('0x10')](_0x1529e9));if(_0x1529e9[_0x7784('0x11')]){if(_0x1529e9[_0x7784('0x11')][_0x7784('0x12')]===0x1f4){logger[_0x7784('0x11')](_0x7784('0xd'),_0x4de69a,_0x1529e9[_0x7784('0x11')]['message']);return _0x5b2c7f(_0x1529e9[_0x7784('0x11')]['message']);}logger[_0x7784('0x11')]('Tag,\x20%s,\x20%s',_0x4de69a,_0x1529e9['error'][_0x7784('0x13')]);return _0x78c8f7(_0x1529e9[_0x7784('0x11')][_0x7784('0x13')]);}else{logger[_0x7784('0x14')]('Tag,\x20%s,\x20%s',_0x4de69a,'request\x20sent');_0x78c8f7(_0x1529e9[_0x7784('0x15')][_0x7784('0x13')]);}})[_0x7784('0x16')](function(_0x5bec98){logger['error'](_0x7784('0xd'),_0x4de69a,_0x5bec98);_0x5b2c7f(_0x5bec98);});});}
\ No newline at end of file
+var _0xc421=['debug','request\x20sent','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','client','then','info','Tag,\x20%s,\x20%s'];(function(_0x575a31,_0x56336f){var _0x5d7dad=function(_0x2c8c09){while(--_0x2c8c09){_0x575a31['push'](_0x575a31['shift']());}};_0x5d7dad(++_0x56336f);}(_0xc421,0x97));var _0x1c42=function(_0x3e3921,_0x2d6be8){_0x3e3921=_0x3e3921-0x0;var _0x5e15cd=_0xc421[_0x3e3921];return _0x5e15cd;};'use strict';var _=require(_0x1c42('0x0'));var util=require('util');var moment=require(_0x1c42('0x1'));var BPromise=require(_0x1c42('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1c42('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1c42('0x4'));var logger=require(_0x1c42('0x5'))('rpc');var config=require(_0x1c42('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x1c42('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x128af7,_0x1bbe6a,_0x176a6d){return new BPromise(function(_0x171a30,_0x1dae73){return client['request'](_0x128af7,_0x176a6d)[_0x1c42('0x8')](function(_0x2b036f){logger[_0x1c42('0x9')](_0x1c42('0xa'),_0x1bbe6a,'request\x20sent');logger[_0x1c42('0xb')]('Tag,\x20%s,\x20%s,\x20%s',_0x1bbe6a,_0x1c42('0xc'),JSON[_0x1c42('0xd')](_0x2b036f));if(_0x2b036f[_0x1c42('0xe')]){if(_0x2b036f['error']['code']===0x1f4){logger[_0x1c42('0xe')](_0x1c42('0xa'),_0x1bbe6a,_0x2b036f[_0x1c42('0xe')]['message']);return _0x1dae73(_0x2b036f[_0x1c42('0xe')]['message']);}logger['error'](_0x1c42('0xa'),_0x1bbe6a,_0x2b036f[_0x1c42('0xe')][_0x1c42('0xf')]);return _0x171a30(_0x2b036f[_0x1c42('0xe')]['message']);}else{logger[_0x1c42('0x9')](_0x1c42('0xa'),_0x1bbe6a,_0x1c42('0xc'));_0x171a30(_0x2b036f[_0x1c42('0x10')][_0x1c42('0xf')]);}})[_0x1c42('0x11')](function(_0x443201){logger[_0x1c42('0xe')](_0x1c42('0xa'),_0x1bbe6a,_0x443201);_0x1dae73(_0x443201);});});}
\ No newline at end of file
index cc7d71b..3abe2e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61fe=['isAuthenticated','index','/:id','/:id/queues','getQueues','getAgents','create','post','/:id/users','addAgents','put','update','delete','destroy','removeAgents','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./team.controller','get'];(function(_0x9d53fb,_0x4b898b){var _0x12f955=function(_0x5b03f9){while(--_0x5b03f9){_0x9d53fb['push'](_0x9d53fb['shift']());}};_0x12f955(++_0x4b898b);}(_0x61fe,0x1eb));var _0xe61f=function(_0x7937e5,_0x45adb){_0x7937e5=_0x7937e5-0x0;var _0x599f96=_0x61fe[_0x7937e5];return _0x599f96;};'use strict';var multer=require(_0xe61f('0x0'));var util=require(_0xe61f('0x1'));var path=require('path');var timeout=require(_0xe61f('0x2'));var express=require(_0xe61f('0x3'));var router=express[_0xe61f('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0xe61f('0x5'));var config=require(_0xe61f('0x6'));var controller=require(_0xe61f('0x7'));router[_0xe61f('0x8')]('/',auth[_0xe61f('0x9')](),controller[_0xe61f('0xa')]);router[_0xe61f('0x8')](_0xe61f('0xb'),auth[_0xe61f('0x9')](),controller['show']);router[_0xe61f('0x8')](_0xe61f('0xc'),auth['isAuthenticated'](),controller[_0xe61f('0xd')]);router[_0xe61f('0x8')]('/:id/users',auth[_0xe61f('0x9')](),controller[_0xe61f('0xe')]);router['post']('/',auth[_0xe61f('0x9')](),controller[_0xe61f('0xf')]);router['post'](_0xe61f('0xc'),auth['isAuthenticated'](),controller['addQueues']);router[_0xe61f('0x10')](_0xe61f('0x11'),auth[_0xe61f('0x9')](),controller[_0xe61f('0x12')]);router[_0xe61f('0x13')](_0xe61f('0xb'),auth[_0xe61f('0x9')](),controller[_0xe61f('0x14')]);router[_0xe61f('0x15')](_0xe61f('0xb'),auth[_0xe61f('0x9')](),controller[_0xe61f('0x16')]);router[_0xe61f('0x15')](_0xe61f('0xc'),auth[_0xe61f('0x9')](),controller['removeQueues']);router['delete'](_0xe61f('0x11'),auth[_0xe61f('0x9')](),controller[_0xe61f('0x17')]);module[_0xe61f('0x18')]=router;
\ No newline at end of file
+var _0x86c6=['get','isAuthenticated','index','/:id','show','getQueues','/:id/users','getAgents','post','create','/:id/queues','addQueues','delete','destroy','removeQueues','removeAgents','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x86c6,0x197));var _0x686c=function(_0xd9211e,_0xed67ef){_0xd9211e=_0xd9211e-0x0;var _0x3a8b8e=_0x86c6[_0xd9211e];return _0x3a8b8e;};'use strict';var multer=require('multer');var util=require(_0x686c('0x0'));var path=require(_0x686c('0x1'));var timeout=require(_0x686c('0x2'));var express=require(_0x686c('0x3'));var router=express[_0x686c('0x4')]();var auth=require(_0x686c('0x5'));var interaction=require(_0x686c('0x6'));var config=require('../../config/environment');var controller=require('./team.controller');router[_0x686c('0x7')]('/',auth[_0x686c('0x8')](),controller[_0x686c('0x9')]);router[_0x686c('0x7')](_0x686c('0xa'),auth['isAuthenticated'](),controller[_0x686c('0xb')]);router[_0x686c('0x7')]('/:id/queues',auth['isAuthenticated'](),controller[_0x686c('0xc')]);router[_0x686c('0x7')](_0x686c('0xd'),auth[_0x686c('0x8')](),controller[_0x686c('0xe')]);router[_0x686c('0xf')]('/',auth['isAuthenticated'](),controller[_0x686c('0x10')]);router[_0x686c('0xf')](_0x686c('0x11'),auth[_0x686c('0x8')](),controller[_0x686c('0x12')]);router['post'](_0x686c('0xd'),auth[_0x686c('0x8')](),controller['addAgents']);router['put'](_0x686c('0xa'),auth[_0x686c('0x8')](),controller['update']);router[_0x686c('0x13')](_0x686c('0xa'),auth[_0x686c('0x8')](),controller[_0x686c('0x14')]);router[_0x686c('0x13')]('/:id/queues',auth[_0x686c('0x8')](),controller[_0x686c('0x15')]);router[_0x686c('0x13')](_0x686c('0xd'),auth[_0x686c('0x8')](),controller[_0x686c('0x16')]);module['exports']=router;
\ No newline at end of file
index 48c9071..98b7043 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9636=['STRING','name','sequelize','exports'];(function(_0x4c9296,_0x5d07f5){var _0x3d8557=function(_0x2143e6){while(--_0x2143e6){_0x4c9296['push'](_0x4c9296['shift']());}};_0x3d8557(++_0x5d07f5);}(_0x9636,0xee));var _0x6963=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0x9636[_0x28947d];return _0x12d2ee;};'use strict';var Sequelize=require(_0x6963('0x0'));module[_0x6963('0x1')]={'name':{'type':Sequelize[_0x6963('0x2')],'allowNull':![],'unique':_0x6963('0x3')},'description':{'type':Sequelize[_0x6963('0x2')]}};
\ No newline at end of file
+var _0xd881=['STRING','sequelize'];(function(_0x16b6db,_0x1c8615){var _0x193759=function(_0x3195c8){while(--_0x3195c8){_0x16b6db['push'](_0x16b6db['shift']());}};_0x193759(++_0x1c8615);}(_0xd881,0x12d));var _0x1d88=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd881[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x1d88('0x0'));module['exports']={'name':{'type':Sequelize[_0x1d88('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 29e3692..d14ea33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Teams','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','body','params','getQueues','findOne','channel','isValidChannel','Sequelize','toLowerCase','rawAttributes','capitalize','Queues','addQueues','ValidationError','Unknown\x20channel','removeQueues','remove','ids','each','voice','chat','mail','sms','fax','openchannel','addAgents','loginInPause','voicePause','interface','upsert','isNil','format','SIP/%s','omit','spread','userTeam:save','removeAgents','UserVoiceQueueRt','isArray','emit','userTeam:remove','User','getAgents','hasOwnProperty','html-pdf','eml-format','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','destroy','then','get','UserProfileResource','error','name','index','keys','query','dateEnd','dateStart','intersection','model','attributes','fields','length','nolimit','sort','where','filters','pick','add','day','merge','filter','map','type','key','VIRTUAL','options','includeAll','include','rows','show','Team','find','create','user'];(function(_0x46cd89,_0x4a23e4){var _0xb080e8=function(_0x32fc3e){while(--_0x32fc3e){_0x46cd89['push'](_0x46cd89['shift']());}};_0xb080e8(++_0x4a23e4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var pdf=require(_0x0d8b('0x0'));var emlformat=require(_0x0d8b('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0d8b('0x2'));var moment=require(_0x0d8b('0x3'));var BPromise=require(_0x0d8b('0x4'));var Mustache=require(_0x0d8b('0x5'));var util=require(_0x0d8b('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x0d8b('0x7'));var ejs=require(_0x0d8b('0x8'));var fs=require('fs');var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0x7'));var querystring=require(_0x0d8b('0xc'));var Papa=require(_0x0d8b('0xd'));var Redis=require(_0x0d8b('0xe'));var qs=require(_0x0d8b('0xf'));var logger=require(_0x0d8b('0x10'))(_0x0d8b('0x11'));var utils=require(_0x0d8b('0x12'));var config=require('../../config/environment');var db=require(_0x0d8b('0x13'))['db'];config['redis']=_[_0x0d8b('0x14')](config[_0x0d8b('0x15')],{'host':_0x0d8b('0x16'),'port':0x18eb});var socket=require(_0x0d8b('0x17'))(new Redis(config[_0x0d8b('0x15')]));require(_0x0d8b('0x18'))[_0x0d8b('0x19')](socket);function respondWithStatusCode(_0x31a8cc,_0x1d4bbc){_0x1d4bbc=_0x1d4bbc||0xcc;return function(_0x2ce75e){if(_0x2ce75e){return _0x31a8cc[_0x0d8b('0x1a')](_0x1d4bbc);}return _0x31a8cc[_0x0d8b('0x1b')](_0x1d4bbc)[_0x0d8b('0x1c')]();};}function respondWithResult(_0x2d4e1c,_0x4f6f21){_0x4f6f21=_0x4f6f21||0xc8;return function(_0x23eb7b){if(_0x23eb7b){return _0x2d4e1c[_0x0d8b('0x1b')](_0x4f6f21)[_0x0d8b('0x1d')](_0x23eb7b);}};}function respondWithFilteredResult(_0xe2e167,_0x2cb03c){return function(_0x5cd485){if(_0x5cd485){var _0x106a01=_0x5cd485[_0x0d8b('0x1e')],_0x4586c2=_0x2cb03c[_0x0d8b('0x1f')],_0x2fd0fc=_0x2cb03c[_0x0d8b('0x1f')]+_0x2cb03c[_0x0d8b('0x20')],_0x5fecbd;if(_0x2fd0fc>=_0x106a01){_0x2fd0fc=_0x106a01;_0x5fecbd=0xc8;}else{_0x5fecbd=0xce;}_0xe2e167['status'](_0x5fecbd);return _0xe2e167[_0x0d8b('0x21')](_0x0d8b('0x22'),_0x4586c2+'-'+_0x2fd0fc+'/'+_0x106a01)[_0x0d8b('0x1d')](_0x5cd485);}return null;};}function patchUpdates(_0x143372){return function(_0x24e8ed){try{jsonpatch[_0x0d8b('0x23')](_0x24e8ed,_0x143372,!![]);}catch(_0x393beb){return BPromise[_0x0d8b('0x24')](_0x393beb);}return _0x24e8ed['save']();};}function saveUpdates(_0x4f0a1a,_0x33fb87){return function(_0x54a9a7){if(_0x54a9a7){return _0x54a9a7['update'](_0x4f0a1a)['then'](function(_0x238728){return _0x238728;});}return null;};}function removeEntity(_0x2b924f,_0x214778){return function(_0x38efc8){if(_0x38efc8){return _0x38efc8[_0x0d8b('0x25')]()[_0x0d8b('0x26')](function(){var _0x30980c=_0x38efc8[_0x0d8b('0x27')]({'plain':!![]});var _0x27b695='Teams';return db[_0x0d8b('0x28')][_0x0d8b('0x25')]({'where':{'type':_0x27b695,'resourceId':_0x30980c['id']}})['then'](function(){return _0x38efc8;});})[_0x0d8b('0x26')](function(){_0x2b924f['status'](0xcc)[_0x0d8b('0x1c')]();});}};}function handleEntityNotFound(_0x234bdd,_0xa2af02){return function(_0x4fe6f9){if(!_0x4fe6f9){_0x234bdd['sendStatus'](0x194);}return _0x4fe6f9;};}function handleError(_0x28f639,_0x3ef745){_0x3ef745=_0x3ef745||0x1f4;return function(_0x4c05ee){logger[_0x0d8b('0x29')](_0x4c05ee['stack']);if(_0x4c05ee[_0x0d8b('0x2a')]){delete _0x4c05ee['name'];}_0x28f639[_0x0d8b('0x1b')](_0x3ef745)['send'](_0x4c05ee);};}exports[_0x0d8b('0x2b')]=function(_0x546bf6,_0x3829c6){var _0x544735={},_0x3c8887={},_0x106e4c={'count':0x0,'rows':[]};var _0x2c058d=db['Team']['rawAttributes'];_0x3c8887['model']=_[_0x0d8b('0x2c')](_0x2c058d);var _0x5515d2={'dateStart':_0x546bf6[_0x0d8b('0x2d')]['dateStart'],'dateEnd':_0x546bf6['query'][_0x0d8b('0x2e')]};delete _0x546bf6[_0x0d8b('0x2d')][_0x0d8b('0x2f')];delete _0x546bf6[_0x0d8b('0x2d')][_0x0d8b('0x2e')];_0x3c8887[_0x0d8b('0x2d')]=_[_0x0d8b('0x2c')](_0x546bf6[_0x0d8b('0x2d')]);_0x3c8887['filters']=_[_0x0d8b('0x30')](_0x3c8887[_0x0d8b('0x31')],_0x3c8887['query']);_0x544735[_0x0d8b('0x32')]=_[_0x0d8b('0x30')](_0x3c8887[_0x0d8b('0x31')],qs['fields'](_0x546bf6[_0x0d8b('0x2d')][_0x0d8b('0x33')]));_0x544735[_0x0d8b('0x32')]=_0x544735[_0x0d8b('0x32')][_0x0d8b('0x34')]?_0x544735['attributes']:_0x3c8887[_0x0d8b('0x31')];if(!_0x546bf6[_0x0d8b('0x2d')]['hasOwnProperty'](_0x0d8b('0x35'))){_0x544735[_0x0d8b('0x20')]=qs[_0x0d8b('0x20')](_0x546bf6[_0x0d8b('0x2d')][_0x0d8b('0x20')]);_0x544735['offset']=qs['offset'](_0x546bf6[_0x0d8b('0x2d')]['offset']);}_0x544735['order']=qs[_0x0d8b('0x36')](_0x546bf6[_0x0d8b('0x2d')][_0x0d8b('0x36')]);_0x544735[_0x0d8b('0x37')]=qs[_0x0d8b('0x38')](_[_0x0d8b('0x39')](_0x546bf6['query'],_0x3c8887[_0x0d8b('0x38')]));if(_0x5515d2[_0x0d8b('0x2f')]){if(_0x5515d2[_0x0d8b('0x2e')]){_0x5515d2[_0x0d8b('0x2e')]=moment(_0x5515d2[_0x0d8b('0x2e')])[_0x0d8b('0x3a')](0x1,_0x0d8b('0x3b'));}else{_0x5515d2['dateEnd']=moment(_0x5515d2[_0x0d8b('0x2f')])[_0x0d8b('0x3a')](0x1,_0x0d8b('0x3b'));}_[_0x0d8b('0x3c')](_0x544735['where'],{'createdAt':{'$gte':_0x5515d2[_0x0d8b('0x2f')],'$lte':_0x5515d2['dateEnd']}});}if(_0x546bf6[_0x0d8b('0x2d')][_0x0d8b('0x3d')]){_0x544735[_0x0d8b('0x37')]=_[_0x0d8b('0x3c')](_0x544735[_0x0d8b('0x37')],{'$or':_[_0x0d8b('0x3e')](_0x2c058d,function(_0x1ff17d){if(_0x1ff17d[_0x0d8b('0x3f')][_0x0d8b('0x40')]!==_0x0d8b('0x41')){var _0x482069={};_0x482069[_0x1ff17d['field']]={'$like':'%'+_0x546bf6['query']['filter']+'%'};return _0x482069;}})});}_0x544735=_['merge']({},_0x544735,_0x546bf6[_0x0d8b('0x42')]);var _0x402fe0={'where':_0x544735[_0x0d8b('0x37')]};return db['Team']['count'](_0x402fe0)[_0x0d8b('0x26')](function(_0x192de1){_0x106e4c[_0x0d8b('0x1e')]=_0x192de1;if(_0x546bf6['query'][_0x0d8b('0x43')]){_0x544735[_0x0d8b('0x44')]=[{'all':!![]}];}return db['Team']['findAll'](_0x544735);})[_0x0d8b('0x26')](function(_0x495870){_0x106e4c[_0x0d8b('0x45')]=_0x495870;return _0x106e4c;})['then'](respondWithFilteredResult(_0x3829c6,_0x544735))['catch'](handleError(_0x3829c6,null));};exports[_0x0d8b('0x46')]=function(_0x194f17,_0x5a75c7){var _0x5ebe8a={'raw':![],'where':{'id':_0x194f17['params']['id']}},_0x59b8e9={};_0x59b8e9[_0x0d8b('0x31')]=_[_0x0d8b('0x2c')](db[_0x0d8b('0x47')]['rawAttributes']);_0x59b8e9[_0x0d8b('0x2d')]=_[_0x0d8b('0x2c')](_0x194f17[_0x0d8b('0x2d')]);_0x59b8e9[_0x0d8b('0x38')]=_[_0x0d8b('0x30')](_0x59b8e9[_0x0d8b('0x31')],_0x59b8e9[_0x0d8b('0x2d')]);_0x5ebe8a[_0x0d8b('0x32')]=_[_0x0d8b('0x30')](_0x59b8e9[_0x0d8b('0x31')],qs[_0x0d8b('0x33')](_0x194f17[_0x0d8b('0x2d')][_0x0d8b('0x33')]));_0x5ebe8a[_0x0d8b('0x32')]=_0x5ebe8a[_0x0d8b('0x32')][_0x0d8b('0x34')]?_0x5ebe8a[_0x0d8b('0x32')]:_0x59b8e9[_0x0d8b('0x31')];if(_0x194f17[_0x0d8b('0x2d')]['includeAll']){_0x5ebe8a[_0x0d8b('0x44')]=[{'all':!![]}];}_0x5ebe8a=_['merge']({},_0x5ebe8a,_0x194f17['options']);return db[_0x0d8b('0x47')][_0x0d8b('0x48')](_0x5ebe8a)[_0x0d8b('0x26')](handleEntityNotFound(_0x5a75c7,null))[_0x0d8b('0x26')](respondWithResult(_0x5a75c7,null))['catch'](handleError(_0x5a75c7,null));};exports[_0x0d8b('0x49')]=function(_0x1106d6,_0x386074){return db[_0x0d8b('0x47')][_0x0d8b('0x49')](_0x1106d6['body'],{})['then'](function(_0x4e4d5f){var _0x573f4f=_0x1106d6[_0x0d8b('0x4a')][_0x0d8b('0x27')]({'plain':!![]});if(!_0x573f4f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x573f4f['role']===_0x0d8b('0x4a')){var _0x3d3cb6=_0x4e4d5f['get']({'plain':!![]});var _0x5ef6c3=_0x0d8b('0x4b');return db[_0x0d8b('0x4c')][_0x0d8b('0x48')]({'where':{'name':_0x5ef6c3,'userProfileId':_0x573f4f[_0x0d8b('0x4d')]},'raw':!![]})[_0x0d8b('0x26')](function(_0x506a79){if(_0x506a79&&_0x506a79[_0x0d8b('0x4e')]===0x0){return db[_0x0d8b('0x28')]['create']({'name':_0x3d3cb6['name'],'resourceId':_0x3d3cb6['id'],'type':_0x506a79[_0x0d8b('0x2a')],'sectionId':_0x506a79['id']},{})[_0x0d8b('0x26')](function(){return _0x4e4d5f;});}else{return _0x4e4d5f;}})['catch'](function(_0x55a489){logger[_0x0d8b('0x29')](_0x0d8b('0x4f'),_0x55a489);throw _0x55a489;});}return _0x4e4d5f;})[_0x0d8b('0x26')](respondWithResult(_0x386074,0xc9))[_0x0d8b('0x50')](handleError(_0x386074,null));};exports['update']=function(_0x356b3d,_0x598e03){if(_0x356b3d['body']['id']){delete _0x356b3d[_0x0d8b('0x51')]['id'];}return db[_0x0d8b('0x47')]['find']({'where':{'id':_0x356b3d['params']['id']}})[_0x0d8b('0x26')](handleEntityNotFound(_0x598e03,null))[_0x0d8b('0x26')](saveUpdates(_0x356b3d[_0x0d8b('0x51')],null))[_0x0d8b('0x26')](respondWithResult(_0x598e03,null))[_0x0d8b('0x50')](handleError(_0x598e03,null));};exports[_0x0d8b('0x25')]=function(_0x3978e5,_0x3bead7){return db['Team'][_0x0d8b('0x48')]({'where':{'id':_0x3978e5[_0x0d8b('0x52')]['id']}})[_0x0d8b('0x26')](handleEntityNotFound(_0x3bead7,null))[_0x0d8b('0x26')](removeEntity(_0x3bead7,null))[_0x0d8b('0x50')](handleError(_0x3bead7,null));};exports[_0x0d8b('0x53')]=function(_0x70c8c4,_0x1c78b6,_0x375684){return db['Team'][_0x0d8b('0x54')]({'where':{'id':_0x70c8c4[_0x0d8b('0x52')]['id']}})[_0x0d8b('0x26')](handleEntityNotFound(_0x1c78b6,null))[_0x0d8b('0x26')](function(_0x43ad22){if(!_0x70c8c4['query'][_0x0d8b('0x55')]||!utils[_0x0d8b('0x56')](_0x70c8c4[_0x0d8b('0x2d')][_0x0d8b('0x55')])){throw new db[(_0x0d8b('0x57'))]['ValidationError']('Unknown\x20channel');}var _0x3b1166={};var _0x291b83={};_0x291b83[_0x0d8b('0x31')]=_[_0x0d8b('0x2c')](db[_['capitalize'](_0x70c8c4[_0x0d8b('0x2d')][_0x0d8b('0x55')][_0x0d8b('0x58')]())+'Queue'][_0x0d8b('0x59')]);_0x291b83['query']=_[_0x0d8b('0x2c')](_0x70c8c4[_0x0d8b('0x2d')]);_0x291b83[_0x0d8b('0x38')]=_[_0x0d8b('0x30')](_0x291b83[_0x0d8b('0x31')],_0x291b83[_0x0d8b('0x2d')]);_0x3b1166['attributes']=_[_0x0d8b('0x30')](_0x291b83['model'],qs[_0x0d8b('0x33')](_0x70c8c4[_0x0d8b('0x2d')][_0x0d8b('0x33')]));_0x3b1166[_0x0d8b('0x32')]=_0x3b1166['attributes'][_0x0d8b('0x34')]?_0x3b1166[_0x0d8b('0x32')]:_0x291b83[_0x0d8b('0x31')];_0x3b1166[_0x0d8b('0x20')]=qs[_0x0d8b('0x20')](_0x70c8c4[_0x0d8b('0x2d')][_0x0d8b('0x20')]);_0x3b1166[_0x0d8b('0x1f')]=qs[_0x0d8b('0x1f')](_0x70c8c4[_0x0d8b('0x2d')]['offset']);_0x3b1166['order']=qs[_0x0d8b('0x36')](_0x70c8c4[_0x0d8b('0x2d')]['sort']);_0x3b1166[_0x0d8b('0x37')]=qs['filters'](_['pick'](_0x70c8c4[_0x0d8b('0x2d')],_0x291b83[_0x0d8b('0x38')]));_0x3b1166=_['merge']({},_0x3b1166,_0x70c8c4['options']);return _0x43ad22[_0x0d8b('0x27')+_[_0x0d8b('0x5a')](_0x70c8c4[_0x0d8b('0x2d')][_0x0d8b('0x55')][_0x0d8b('0x58')]())+_0x0d8b('0x5b')](_0x3b1166);})[_0x0d8b('0x26')](respondWithResult(_0x1c78b6,null))['catch'](handleError(_0x1c78b6,null));};exports[_0x0d8b('0x5c')]=function(_0x5878c2,_0x1a203e,_0x2c6242){return db[_0x0d8b('0x47')][_0x0d8b('0x54')]({'where':{'id':_0x5878c2['params']['id']}})[_0x0d8b('0x26')](function(_0x4a1c4a){if(_0x4a1c4a){if(!_0x5878c2[_0x0d8b('0x51')][_0x0d8b('0x55')]||!utils[_0x0d8b('0x56')](_0x5878c2[_0x0d8b('0x51')][_0x0d8b('0x55')])){throw new db[(_0x0d8b('0x57'))][(_0x0d8b('0x5d'))](_0x0d8b('0x5e'));}return _0x4a1c4a[_0x0d8b('0x3a')+_[_0x0d8b('0x5a')](_0x5878c2['body'][_0x0d8b('0x55')]['toLowerCase']())+_0x0d8b('0x5b')](_0x5878c2[_0x0d8b('0x51')]['ids']);}return null;})[_0x0d8b('0x26')](handleEntityNotFound(_0x1a203e,null))['then'](respondWithStatusCode(_0x1a203e,null))[_0x0d8b('0x50')](handleError(_0x1a203e,null));};exports[_0x0d8b('0x5f')]=function(_0x24f75,_0x259ac9,_0x2242cd){return db[_0x0d8b('0x47')][_0x0d8b('0x54')]({'where':{'id':_0x24f75[_0x0d8b('0x52')]['id']}})['then'](function(_0x10eca6){if(_0x10eca6){if(!_0x24f75[_0x0d8b('0x2d')]['channel']||!utils[_0x0d8b('0x56')](_0x24f75[_0x0d8b('0x2d')][_0x0d8b('0x55')])){throw new db[(_0x0d8b('0x57'))][(_0x0d8b('0x5d'))](_0x0d8b('0x5e'));}return _0x10eca6[_0x0d8b('0x60')+_[_0x0d8b('0x5a')](_0x24f75[_0x0d8b('0x2d')][_0x0d8b('0x55')][_0x0d8b('0x58')]())+_0x0d8b('0x5b')](_0x24f75['query'][_0x0d8b('0x61')]);}return null;})[_0x0d8b('0x26')](handleEntityNotFound(_0x259ac9,null))[_0x0d8b('0x26')](respondWithStatusCode(_0x259ac9,null))['catch'](handleError(_0x259ac9,null));};exports['addAgents']=function(_0xebca83,_0x3aeb45,_0x2c55bc){return db['Team']['find']({'where':{'id':_0xebca83[_0x0d8b('0x52')]['id']}})[_0x0d8b('0x26')](handleEntityNotFound(_0x3aeb45,null))[_0x0d8b('0x26')](function(_0x2d0b4f){if(_0x2d0b4f){return BPromise[_0x0d8b('0x62')]([_0x0d8b('0x63'),_0x0d8b('0x64'),_0x0d8b('0x65'),_0x0d8b('0x66'),_0x0d8b('0x67'),_0x0d8b('0x68')],function(_0x291336){return _0x2d0b4f[_0x0d8b('0x27')+_['capitalize'](_0x291336)+_0x0d8b('0x5b')]({'attributes':['id',_0x0d8b('0x2a')]})['then'](function(_0x51c41b){return BPromise[_0x0d8b('0x62')](_0x51c41b,function(_0x1dad9f){return _0x1dad9f[_0x0d8b('0x69')](_0xebca83[_0x0d8b('0x51')][_0x0d8b('0x61')])[_0x0d8b('0x26')](function(){if(_0x291336==='voice'){return db['User']['findAll']({'where':{'id':_0xebca83[_0x0d8b('0x51')][_0x0d8b('0x61')]},'attributes':['id',_0x0d8b('0x2a'),_0x0d8b('0x6a'),_0x0d8b('0x6b'),_0x0d8b('0x6c')],'raw':!![]});}})['then'](function(_0x302426){if(_0x291336===_0x0d8b('0x63')){return BPromise['each'](_0x302426,function(_0x30a69d){return db['UserVoiceQueueRt'][_0x0d8b('0x6d')]({'membername':_0x30a69d[_0x0d8b('0x2a')],'UserId':_0x30a69d['id'],'queue_name':_0x1dad9f[_0x0d8b('0x2a')],'VoiceQueueId':_0x1dad9f['id'],'interface':_[_0x0d8b('0x6e')](_0x30a69d[_0x0d8b('0x6c')])?util[_0x0d8b('0x6f')](_0x0d8b('0x70'),_0x30a69d[_0x0d8b('0x2a')]):_0x30a69d[_0x0d8b('0x6c')],'paused':_0x30a69d[_0x0d8b('0x6b')]||![],'penalty':0x0});});}});});})[_0x0d8b('0x26')](function(){return _0x2d0b4f;});})[_0x0d8b('0x26')](function(){return _0x2d0b4f;});}})['then'](function(_0x4dd64b){if(_0x4dd64b){return _0x4dd64b[_0x0d8b('0x69')](_0xebca83[_0x0d8b('0x51')][_0x0d8b('0x61')],_[_0x0d8b('0x71')](_0xebca83[_0x0d8b('0x51')],[_0x0d8b('0x61'),'id'])||{})[_0x0d8b('0x72')](function(_0x54674f){for(var _0x246152=0x0;_0x246152<_0xebca83['body'][_0x0d8b('0x61')]['length'];_0x246152+=0x1){socket['emit'](_0x0d8b('0x73'),{'UserId':_0xebca83[_0x0d8b('0x51')][_0x0d8b('0x61')][_0x246152],'TeamId':_0xebca83[_0x0d8b('0x52')]['id']});}return _0x54674f;});}})[_0x0d8b('0x26')](respondWithResult(_0x3aeb45,null))[_0x0d8b('0x50')](handleError(_0x3aeb45,null));};exports[_0x0d8b('0x74')]=function(_0x180eda,_0x35267a,_0x20a8b6){var _0x3a6014;return db[_0x0d8b('0x47')]['find']({'where':{'id':_0x180eda[_0x0d8b('0x52')]['id']}})[_0x0d8b('0x26')](handleEntityNotFound(_0x35267a,null))[_0x0d8b('0x26')](function(_0x5eba19){if(_0x5eba19){return BPromise['each']([_0x0d8b('0x63'),_0x0d8b('0x64'),_0x0d8b('0x65'),_0x0d8b('0x66'),_0x0d8b('0x67'),_0x0d8b('0x68')],function(_0x5648eb){return _0x5eba19[_0x0d8b('0x27')+_[_0x0d8b('0x5a')](_0x5648eb)+_0x0d8b('0x5b')]({'attributes':['id',_0x0d8b('0x2a')]})[_0x0d8b('0x26')](function(_0x55ea97){return BPromise['each'](_0x55ea97,function(_0x2d9ce6){return _0x2d9ce6[_0x0d8b('0x74')](_0x180eda[_0x0d8b('0x2d')]['ids'])[_0x0d8b('0x26')](function(){if(_0x5648eb===_0x0d8b('0x63')){return db[_0x0d8b('0x75')]['destroy']({'where':{'VoiceQueueId':_0x2d9ce6['id'],'UserId':_0x180eda[_0x0d8b('0x2d')][_0x0d8b('0x61')]}});}});});})[_0x0d8b('0x26')](function(){return _0x5eba19;});})[_0x0d8b('0x26')](function(){return _0x5eba19;});}})[_0x0d8b('0x26')](function(_0x150e9f){if(_0x150e9f){return _0x150e9f[_0x0d8b('0x74')](_0x180eda[_0x0d8b('0x2d')][_0x0d8b('0x61')])['then'](function(_0x347205){if(_[_0x0d8b('0x76')](_0x180eda[_0x0d8b('0x2d')][_0x0d8b('0x61')])){for(var _0x387ca2=0x0;_0x387ca2<_0x180eda[_0x0d8b('0x2d')][_0x0d8b('0x61')][_0x0d8b('0x34')];_0x387ca2+=0x1){socket[_0x0d8b('0x77')]('userTeam:remove',{'UserId':_0x180eda['query'][_0x0d8b('0x61')][_0x387ca2],'TeamId':_0x180eda[_0x0d8b('0x52')]['id']});}}else{socket[_0x0d8b('0x77')](_0x0d8b('0x78'),{'UserId':_0x180eda['query'][_0x0d8b('0x61')],'TeamId':_0x180eda[_0x0d8b('0x52')]['id']});}});}})['then'](respondWithStatusCode(_0x35267a,null))[_0x0d8b('0x50')](handleError(_0x35267a,null));};exports['getAgents']=function(_0x4fb226,_0x2e5f7a,_0x33965a){var _0x40c8c3={};var _0x36a82f={};var _0x12c39a;var _0x242e6c;return db[_0x0d8b('0x47')]['findOne']({'where':{'id':_0x4fb226[_0x0d8b('0x52')]['id']}})['then'](handleEntityNotFound(_0x2e5f7a,null))['then'](function(_0x35bd36){if(_0x35bd36){_0x12c39a=_0x35bd36;_0x36a82f['model']=_[_0x0d8b('0x2c')](db[_0x0d8b('0x79')]['rawAttributes']);_0x36a82f[_0x0d8b('0x2d')]=_['keys'](_0x4fb226['query']);_0x36a82f[_0x0d8b('0x38')]=_[_0x0d8b('0x30')](_0x36a82f[_0x0d8b('0x31')],_0x36a82f[_0x0d8b('0x2d')]);_0x40c8c3[_0x0d8b('0x32')]=_['intersection'](_0x36a82f['model'],qs[_0x0d8b('0x33')](_0x4fb226[_0x0d8b('0x2d')][_0x0d8b('0x33')]));_0x40c8c3[_0x0d8b('0x32')]=_0x40c8c3[_0x0d8b('0x32')][_0x0d8b('0x34')]?_0x40c8c3[_0x0d8b('0x32')]:_0x36a82f[_0x0d8b('0x31')];_0x40c8c3['order']=qs['sort'](_0x4fb226[_0x0d8b('0x2d')][_0x0d8b('0x36')]);_0x40c8c3['where']=qs['filters'](_['pick'](_0x4fb226[_0x0d8b('0x2d')],_0x36a82f[_0x0d8b('0x38')]));if(_0x4fb226[_0x0d8b('0x2d')]['filter']){_0x40c8c3[_0x0d8b('0x37')]=_[_0x0d8b('0x3c')](_0x40c8c3[_0x0d8b('0x37')],{'$or':_['map'](_0x40c8c3[_0x0d8b('0x32')],function(_0x5385b5){var _0xa0cd19={};_0xa0cd19[_0x5385b5]={'$like':'%'+_0x4fb226['query'][_0x0d8b('0x3d')]+'%'};return _0xa0cd19;})});}_0x40c8c3=_[_0x0d8b('0x3c')]({},_0x40c8c3,_0x4fb226[_0x0d8b('0x42')]);return _0x12c39a[_0x0d8b('0x7a')](_0x40c8c3);}})[_0x0d8b('0x26')](function(_0x53bab7){if(_0x53bab7){_0x242e6c=_0x53bab7[_0x0d8b('0x34')];if(!_0x4fb226['query'][_0x0d8b('0x7b')]('nolimit')){_0x40c8c3[_0x0d8b('0x20')]=qs['limit'](_0x4fb226['query'][_0x0d8b('0x20')]);_0x40c8c3[_0x0d8b('0x1f')]=qs['offset'](_0x4fb226[_0x0d8b('0x2d')][_0x0d8b('0x1f')]);}return _0x12c39a[_0x0d8b('0x7a')](_0x40c8c3);}})['then'](function(_0x55e49f){if(_0x55e49f){return _0x55e49f?{'count':_0x242e6c,'rows':_0x55e49f}:null;}})['then'](respondWithResult(_0x2e5f7a,null))[_0x0d8b('0x50')](handleError(_0x2e5f7a,null));};
\ No newline at end of file
+var _0xb10b=['role','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getQueues','findOne','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','Queue','sort','toLowerCase','Queues','addQueues','Sequelize','ids','remove','each','voice','chat','mail','fax','openchannel','addAgents','voicePause','interface','upsert','isNil','format','SIP/%s','omit','spread','emit','userTeam:save','removeAgents','sms','userTeam:remove','getAgents','nolimit','html-pdf','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./team.socket','register','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','save','update','then','destroy','get','Teams','error','name','send','index','Team','rawAttributes','model','query','dateStart','dateEnd','keys','filters','intersection','attributes','fields','length','order','where','pick','add','day','filter','map','type','VIRTUAL','field','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb10b,0x12a));var _0xbb10=function(_0x99a230,_0xe70e96){_0x99a230=_0x99a230-0x0;var _0xd903cf=_0xb10b[_0x99a230];return _0xd903cf;};'use strict';var pdf=require(_0xbb10('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xbb10('0x1'));var zipdir=require(_0xbb10('0x2'));var jsonpatch=require(_0xbb10('0x3'));var rp=require('request-promise');var moment=require(_0xbb10('0x4'));var BPromise=require(_0xbb10('0x5'));var Mustache=require(_0xbb10('0x6'));var util=require(_0xbb10('0x7'));var path=require(_0xbb10('0x8'));var sox=require(_0xbb10('0x9'));var csv=require('to-csv');var ejs=require(_0xbb10('0xa'));var fs=require('fs');var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0xf'));var querystring=require(_0xbb10('0x10'));var Papa=require(_0xbb10('0x11'));var Redis=require(_0xbb10('0x12'));var qs=require(_0xbb10('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xbb10('0x14'));var config=require(_0xbb10('0x15'));var db=require(_0xbb10('0x16'))['db'];config['redis']=_[_0xbb10('0x17')](config['redis'],{'host':_0xbb10('0x18'),'port':0x18eb});var socket=require(_0xbb10('0x19'))(new Redis(config[_0xbb10('0x1a')]));require(_0xbb10('0x1b'))[_0xbb10('0x1c')](socket);function respondWithStatusCode(_0x147230,_0x58a612){_0x58a612=_0x58a612||0xcc;return function(_0x26e021){if(_0x26e021){return _0x147230[_0xbb10('0x1d')](_0x58a612);}return _0x147230[_0xbb10('0x1e')](_0x58a612)[_0xbb10('0x1f')]();};}function respondWithResult(_0x3df17b,_0x2f2ebf){_0x2f2ebf=_0x2f2ebf||0xc8;return function(_0x24a57b){if(_0x24a57b){return _0x3df17b[_0xbb10('0x1e')](_0x2f2ebf)[_0xbb10('0x20')](_0x24a57b);}};}function respondWithFilteredResult(_0x2b184e,_0x4a2bfc){return function(_0x2eca0f){if(_0x2eca0f){var _0x1145f1=_0x2eca0f[_0xbb10('0x21')],_0x133ac2=_0x4a2bfc[_0xbb10('0x22')],_0x42db98=_0x4a2bfc[_0xbb10('0x22')]+_0x4a2bfc[_0xbb10('0x23')],_0x378da8;if(_0x42db98>=_0x1145f1){_0x42db98=_0x1145f1;_0x378da8=0xc8;}else{_0x378da8=0xce;}_0x2b184e[_0xbb10('0x1e')](_0x378da8);return _0x2b184e['set'](_0xbb10('0x24'),_0x133ac2+'-'+_0x42db98+'/'+_0x1145f1)[_0xbb10('0x20')](_0x2eca0f);}return null;};}function patchUpdates(_0x388fab){return function(_0x109908){try{jsonpatch[_0xbb10('0x25')](_0x109908,_0x388fab,!![]);}catch(_0x44e563){return BPromise['reject'](_0x44e563);}return _0x109908[_0xbb10('0x26')]();};}function saveUpdates(_0x12ef77,_0x50aea1){return function(_0x4c4b0d){if(_0x4c4b0d){return _0x4c4b0d[_0xbb10('0x27')](_0x12ef77)[_0xbb10('0x28')](function(_0x2e911d){return _0x2e911d;});}return null;};}function removeEntity(_0x317da4,_0x445761){return function(_0x1824b7){if(_0x1824b7){return _0x1824b7[_0xbb10('0x29')]()[_0xbb10('0x28')](function(){var _0x7f2377=_0x1824b7[_0xbb10('0x2a')]({'plain':!![]});var _0x3ba6cd=_0xbb10('0x2b');return db['UserProfileResource']['destroy']({'where':{'type':_0x3ba6cd,'resourceId':_0x7f2377['id']}})['then'](function(){return _0x1824b7;});})[_0xbb10('0x28')](function(){_0x317da4[_0xbb10('0x1e')](0xcc)[_0xbb10('0x1f')]();});}};}function handleEntityNotFound(_0x4e25ff,_0x2fdde9){return function(_0x24d586){if(!_0x24d586){_0x4e25ff[_0xbb10('0x1d')](0x194);}return _0x24d586;};}function handleError(_0x1d5e95,_0x1acce9){_0x1acce9=_0x1acce9||0x1f4;return function(_0x20d946){logger[_0xbb10('0x2c')](_0x20d946['stack']);if(_0x20d946[_0xbb10('0x2d')]){delete _0x20d946[_0xbb10('0x2d')];}_0x1d5e95[_0xbb10('0x1e')](_0x1acce9)[_0xbb10('0x2e')](_0x20d946);};}exports[_0xbb10('0x2f')]=function(_0x2ff4c1,_0x5d5c80){var _0x221624={},_0x4ee02e={},_0x448d5c={'count':0x0,'rows':[]};var _0x56f2da=db[_0xbb10('0x30')][_0xbb10('0x31')];_0x4ee02e[_0xbb10('0x32')]=_['keys'](_0x56f2da);var _0x518d47={'dateStart':_0x2ff4c1[_0xbb10('0x33')][_0xbb10('0x34')],'dateEnd':_0x2ff4c1['query'][_0xbb10('0x35')]};delete _0x2ff4c1[_0xbb10('0x33')][_0xbb10('0x34')];delete _0x2ff4c1[_0xbb10('0x33')][_0xbb10('0x35')];_0x4ee02e[_0xbb10('0x33')]=_[_0xbb10('0x36')](_0x2ff4c1['query']);_0x4ee02e[_0xbb10('0x37')]=_[_0xbb10('0x38')](_0x4ee02e[_0xbb10('0x32')],_0x4ee02e[_0xbb10('0x33')]);_0x221624[_0xbb10('0x39')]=_[_0xbb10('0x38')](_0x4ee02e[_0xbb10('0x32')],qs[_0xbb10('0x3a')](_0x2ff4c1[_0xbb10('0x33')]['fields']));_0x221624[_0xbb10('0x39')]=_0x221624[_0xbb10('0x39')][_0xbb10('0x3b')]?_0x221624[_0xbb10('0x39')]:_0x4ee02e['model'];if(!_0x2ff4c1[_0xbb10('0x33')]['hasOwnProperty']('nolimit')){_0x221624[_0xbb10('0x23')]=qs[_0xbb10('0x23')](_0x2ff4c1[_0xbb10('0x33')][_0xbb10('0x23')]);_0x221624[_0xbb10('0x22')]=qs[_0xbb10('0x22')](_0x2ff4c1['query'][_0xbb10('0x22')]);}_0x221624[_0xbb10('0x3c')]=qs['sort'](_0x2ff4c1['query']['sort']);_0x221624[_0xbb10('0x3d')]=qs[_0xbb10('0x37')](_[_0xbb10('0x3e')](_0x2ff4c1['query'],_0x4ee02e[_0xbb10('0x37')]));if(_0x518d47[_0xbb10('0x34')]){if(_0x518d47[_0xbb10('0x35')]){_0x518d47['dateEnd']=moment(_0x518d47[_0xbb10('0x35')])[_0xbb10('0x3f')](0x1,_0xbb10('0x40'));}else{_0x518d47[_0xbb10('0x35')]=moment(_0x518d47['dateStart'])[_0xbb10('0x3f')](0x1,_0xbb10('0x40'));}_['merge'](_0x221624[_0xbb10('0x3d')],{'createdAt':{'$gte':_0x518d47[_0xbb10('0x34')],'$lte':_0x518d47[_0xbb10('0x35')]}});}if(_0x2ff4c1[_0xbb10('0x33')][_0xbb10('0x41')]){_0x221624[_0xbb10('0x3d')]=_['merge'](_0x221624[_0xbb10('0x3d')],{'$or':_[_0xbb10('0x42')](_0x56f2da,function(_0x3e7b4c){if(_0x3e7b4c[_0xbb10('0x43')]['key']!==_0xbb10('0x44')){var _0x331751={};_0x331751[_0x3e7b4c[_0xbb10('0x45')]]={'$like':'%'+_0x2ff4c1[_0xbb10('0x33')]['filter']+'%'};return _0x331751;}})});}_0x221624=_[_0xbb10('0x46')]({},_0x221624,_0x2ff4c1[_0xbb10('0x47')]);var _0x54ac18={'where':_0x221624['where']};return db[_0xbb10('0x30')]['count'](_0x54ac18)[_0xbb10('0x28')](function(_0x180933){_0x448d5c['count']=_0x180933;if(_0x2ff4c1[_0xbb10('0x33')][_0xbb10('0x48')]){_0x221624[_0xbb10('0x49')]=[{'all':!![]}];}return db['Team'][_0xbb10('0x4a')](_0x221624);})[_0xbb10('0x28')](function(_0x3b9fdf){_0x448d5c[_0xbb10('0x4b')]=_0x3b9fdf;return _0x448d5c;})[_0xbb10('0x28')](respondWithFilteredResult(_0x5d5c80,_0x221624))[_0xbb10('0x4c')](handleError(_0x5d5c80,null));};exports[_0xbb10('0x4d')]=function(_0x3efa96,_0x205bb4){var _0x43b948={'raw':![],'where':{'id':_0x3efa96[_0xbb10('0x4e')]['id']}},_0x197871={};_0x197871['model']=_[_0xbb10('0x36')](db[_0xbb10('0x30')]['rawAttributes']);_0x197871[_0xbb10('0x33')]=_[_0xbb10('0x36')](_0x3efa96[_0xbb10('0x33')]);_0x197871[_0xbb10('0x37')]=_[_0xbb10('0x38')](_0x197871[_0xbb10('0x32')],_0x197871[_0xbb10('0x33')]);_0x43b948['attributes']=_['intersection'](_0x197871[_0xbb10('0x32')],qs[_0xbb10('0x3a')](_0x3efa96[_0xbb10('0x33')]['fields']));_0x43b948['attributes']=_0x43b948[_0xbb10('0x39')][_0xbb10('0x3b')]?_0x43b948[_0xbb10('0x39')]:_0x197871[_0xbb10('0x32')];if(_0x3efa96[_0xbb10('0x33')][_0xbb10('0x48')]){_0x43b948[_0xbb10('0x49')]=[{'all':!![]}];}_0x43b948=_[_0xbb10('0x46')]({},_0x43b948,_0x3efa96[_0xbb10('0x47')]);return db[_0xbb10('0x30')]['find'](_0x43b948)['then'](handleEntityNotFound(_0x205bb4,null))[_0xbb10('0x28')](respondWithResult(_0x205bb4,null))[_0xbb10('0x4c')](handleError(_0x205bb4,null));};exports[_0xbb10('0x4f')]=function(_0xb014b0,_0x36aa7d){return db[_0xbb10('0x30')][_0xbb10('0x4f')](_0xb014b0[_0xbb10('0x50')],{})[_0xbb10('0x28')](function(_0x1214f7){var _0x19ca3e=_0xb014b0[_0xbb10('0x51')][_0xbb10('0x2a')]({'plain':!![]});if(!_0x19ca3e)throw new Error(_0xbb10('0x52'));if(_0x19ca3e[_0xbb10('0x53')]==='user'){var _0x124052=_0x1214f7['get']({'plain':!![]});var _0x33d60a=_0xbb10('0x2b');return db[_0xbb10('0x54')][_0xbb10('0x55')]({'where':{'name':_0x33d60a,'userProfileId':_0x19ca3e[_0xbb10('0x56')]},'raw':!![]})[_0xbb10('0x28')](function(_0x2e3326){if(_0x2e3326&&_0x2e3326[_0xbb10('0x57')]===0x0){return db[_0xbb10('0x58')][_0xbb10('0x4f')]({'name':_0x124052[_0xbb10('0x2d')],'resourceId':_0x124052['id'],'type':_0x2e3326[_0xbb10('0x2d')],'sectionId':_0x2e3326['id']},{})[_0xbb10('0x28')](function(){return _0x1214f7;});}else{return _0x1214f7;}})[_0xbb10('0x4c')](function(_0x4475e1){logger['error'](_0xbb10('0x59'),_0x4475e1);throw _0x4475e1;});}return _0x1214f7;})[_0xbb10('0x28')](respondWithResult(_0x36aa7d,0xc9))[_0xbb10('0x4c')](handleError(_0x36aa7d,null));};exports[_0xbb10('0x27')]=function(_0xbffa3c,_0x379d8c){if(_0xbffa3c['body']['id']){delete _0xbffa3c[_0xbb10('0x50')]['id'];}return db[_0xbb10('0x30')][_0xbb10('0x55')]({'where':{'id':_0xbffa3c[_0xbb10('0x4e')]['id']}})[_0xbb10('0x28')](handleEntityNotFound(_0x379d8c,null))[_0xbb10('0x28')](saveUpdates(_0xbffa3c[_0xbb10('0x50')],null))[_0xbb10('0x28')](respondWithResult(_0x379d8c,null))[_0xbb10('0x4c')](handleError(_0x379d8c,null));};exports[_0xbb10('0x29')]=function(_0x2eb05a,_0x2a1ce1){return db[_0xbb10('0x30')]['find']({'where':{'id':_0x2eb05a['params']['id']}})[_0xbb10('0x28')](handleEntityNotFound(_0x2a1ce1,null))[_0xbb10('0x28')](removeEntity(_0x2a1ce1,null))[_0xbb10('0x4c')](handleError(_0x2a1ce1,null));};exports[_0xbb10('0x5a')]=function(_0x5573bb,_0x506498,_0x79411e){return db[_0xbb10('0x30')][_0xbb10('0x5b')]({'where':{'id':_0x5573bb[_0xbb10('0x4e')]['id']}})[_0xbb10('0x28')](handleEntityNotFound(_0x506498,null))[_0xbb10('0x28')](function(_0x45c0dc){if(!_0x5573bb['query'][_0xbb10('0x5c')]||!utils[_0xbb10('0x5d')](_0x5573bb['query']['channel'])){throw new db['Sequelize'][(_0xbb10('0x5e'))](_0xbb10('0x5f'));}var _0x155dc5={};var _0x5bd1c0={};_0x5bd1c0['model']=_['keys'](db[_[_0xbb10('0x60')](_0x5573bb[_0xbb10('0x33')][_0xbb10('0x5c')]['toLowerCase']())+_0xbb10('0x61')][_0xbb10('0x31')]);_0x5bd1c0['query']=_['keys'](_0x5573bb[_0xbb10('0x33')]);_0x5bd1c0[_0xbb10('0x37')]=_[_0xbb10('0x38')](_0x5bd1c0[_0xbb10('0x32')],_0x5bd1c0['query']);_0x155dc5[_0xbb10('0x39')]=_[_0xbb10('0x38')](_0x5bd1c0[_0xbb10('0x32')],qs['fields'](_0x5573bb[_0xbb10('0x33')][_0xbb10('0x3a')]));_0x155dc5[_0xbb10('0x39')]=_0x155dc5['attributes'][_0xbb10('0x3b')]?_0x155dc5[_0xbb10('0x39')]:_0x5bd1c0[_0xbb10('0x32')];_0x155dc5[_0xbb10('0x23')]=qs['limit'](_0x5573bb[_0xbb10('0x33')][_0xbb10('0x23')]);_0x155dc5[_0xbb10('0x22')]=qs[_0xbb10('0x22')](_0x5573bb['query'][_0xbb10('0x22')]);_0x155dc5[_0xbb10('0x3c')]=qs[_0xbb10('0x62')](_0x5573bb[_0xbb10('0x33')][_0xbb10('0x62')]);_0x155dc5[_0xbb10('0x3d')]=qs[_0xbb10('0x37')](_['pick'](_0x5573bb['query'],_0x5bd1c0['filters']));_0x155dc5=_[_0xbb10('0x46')]({},_0x155dc5,_0x5573bb[_0xbb10('0x47')]);return _0x45c0dc[_0xbb10('0x2a')+_['capitalize'](_0x5573bb['query'][_0xbb10('0x5c')][_0xbb10('0x63')]())+_0xbb10('0x64')](_0x155dc5);})[_0xbb10('0x28')](respondWithResult(_0x506498,null))[_0xbb10('0x4c')](handleError(_0x506498,null));};exports[_0xbb10('0x65')]=function(_0x4cf2f3,_0x1a5ca5,_0x15fae2){return db[_0xbb10('0x30')][_0xbb10('0x5b')]({'where':{'id':_0x4cf2f3[_0xbb10('0x4e')]['id']}})['then'](function(_0x56094a){if(_0x56094a){if(!_0x4cf2f3['body'][_0xbb10('0x5c')]||!utils[_0xbb10('0x5d')](_0x4cf2f3[_0xbb10('0x50')][_0xbb10('0x5c')])){throw new db[(_0xbb10('0x66'))][(_0xbb10('0x5e'))]('Unknown\x20channel');}return _0x56094a[_0xbb10('0x3f')+_['capitalize'](_0x4cf2f3['body']['channel'][_0xbb10('0x63')]())+_0xbb10('0x64')](_0x4cf2f3[_0xbb10('0x50')][_0xbb10('0x67')]);}return null;})['then'](handleEntityNotFound(_0x1a5ca5,null))[_0xbb10('0x28')](respondWithStatusCode(_0x1a5ca5,null))['catch'](handleError(_0x1a5ca5,null));};exports['removeQueues']=function(_0x165fe9,_0xfe3db0,_0x29529c){return db[_0xbb10('0x30')][_0xbb10('0x5b')]({'where':{'id':_0x165fe9['params']['id']}})[_0xbb10('0x28')](function(_0x19fcec){if(_0x19fcec){if(!_0x165fe9[_0xbb10('0x33')][_0xbb10('0x5c')]||!utils[_0xbb10('0x5d')](_0x165fe9[_0xbb10('0x33')][_0xbb10('0x5c')])){throw new db['Sequelize'][(_0xbb10('0x5e'))](_0xbb10('0x5f'));}return _0x19fcec[_0xbb10('0x68')+_[_0xbb10('0x60')](_0x165fe9[_0xbb10('0x33')][_0xbb10('0x5c')][_0xbb10('0x63')]())+_0xbb10('0x64')](_0x165fe9['query'][_0xbb10('0x67')]);}return null;})[_0xbb10('0x28')](handleEntityNotFound(_0xfe3db0,null))[_0xbb10('0x28')](respondWithStatusCode(_0xfe3db0,null))['catch'](handleError(_0xfe3db0,null));};exports['addAgents']=function(_0x4b923a,_0x23286d,_0x5a3c44){return db['Team'][_0xbb10('0x55')]({'where':{'id':_0x4b923a[_0xbb10('0x4e')]['id']}})[_0xbb10('0x28')](handleEntityNotFound(_0x23286d,null))[_0xbb10('0x28')](function(_0x32ec27){if(_0x32ec27){return BPromise[_0xbb10('0x69')]([_0xbb10('0x6a'),_0xbb10('0x6b'),_0xbb10('0x6c'),'sms',_0xbb10('0x6d'),_0xbb10('0x6e')],function(_0x46b6d2){return _0x32ec27[_0xbb10('0x2a')+_['capitalize'](_0x46b6d2)+'Queues']({'attributes':['id',_0xbb10('0x2d')]})[_0xbb10('0x28')](function(_0x30f0a4){return BPromise[_0xbb10('0x69')](_0x30f0a4,function(_0x5ee705){return _0x5ee705[_0xbb10('0x6f')](_0x4b923a[_0xbb10('0x50')][_0xbb10('0x67')])[_0xbb10('0x28')](function(){if(_0x46b6d2===_0xbb10('0x6a')){return db['User']['findAll']({'where':{'id':_0x4b923a[_0xbb10('0x50')][_0xbb10('0x67')]},'attributes':['id',_0xbb10('0x2d'),'loginInPause',_0xbb10('0x70'),_0xbb10('0x71')],'raw':!![]});}})['then'](function(_0x5caa06){if(_0x46b6d2===_0xbb10('0x6a')){return BPromise[_0xbb10('0x69')](_0x5caa06,function(_0x177f77){return db['UserVoiceQueueRt'][_0xbb10('0x72')]({'membername':_0x177f77[_0xbb10('0x2d')],'UserId':_0x177f77['id'],'queue_name':_0x5ee705[_0xbb10('0x2d')],'VoiceQueueId':_0x5ee705['id'],'interface':_[_0xbb10('0x73')](_0x177f77[_0xbb10('0x71')])?util[_0xbb10('0x74')](_0xbb10('0x75'),_0x177f77[_0xbb10('0x2d')]):_0x177f77[_0xbb10('0x71')],'paused':_0x177f77['voicePause']||![],'penalty':0x0});});}});});})[_0xbb10('0x28')](function(){return _0x32ec27;});})[_0xbb10('0x28')](function(){return _0x32ec27;});}})[_0xbb10('0x28')](function(_0xdb7d3e){if(_0xdb7d3e){return _0xdb7d3e[_0xbb10('0x6f')](_0x4b923a[_0xbb10('0x50')][_0xbb10('0x67')],_[_0xbb10('0x76')](_0x4b923a[_0xbb10('0x50')],[_0xbb10('0x67'),'id'])||{})[_0xbb10('0x77')](function(_0x2a4278){for(var _0x59e985=0x0;_0x59e985<_0x4b923a['body'][_0xbb10('0x67')][_0xbb10('0x3b')];_0x59e985+=0x1){socket[_0xbb10('0x78')](_0xbb10('0x79'),{'UserId':_0x4b923a[_0xbb10('0x50')]['ids'][_0x59e985],'TeamId':_0x4b923a[_0xbb10('0x4e')]['id']});}return _0x2a4278;});}})[_0xbb10('0x28')](respondWithResult(_0x23286d,null))[_0xbb10('0x4c')](handleError(_0x23286d,null));};exports[_0xbb10('0x7a')]=function(_0x19694d,_0x379d49,_0x546db5){var _0xb25e71;return db[_0xbb10('0x30')]['find']({'where':{'id':_0x19694d[_0xbb10('0x4e')]['id']}})['then'](handleEntityNotFound(_0x379d49,null))[_0xbb10('0x28')](function(_0x28bd76){if(_0x28bd76){return BPromise[_0xbb10('0x69')]([_0xbb10('0x6a'),_0xbb10('0x6b'),'mail',_0xbb10('0x7b'),'fax',_0xbb10('0x6e')],function(_0x37ec93){return _0x28bd76['get'+_['capitalize'](_0x37ec93)+_0xbb10('0x64')]({'attributes':['id',_0xbb10('0x2d')]})[_0xbb10('0x28')](function(_0x283bab){return BPromise[_0xbb10('0x69')](_0x283bab,function(_0x1cb22f){return _0x1cb22f[_0xbb10('0x7a')](_0x19694d[_0xbb10('0x33')][_0xbb10('0x67')])[_0xbb10('0x28')](function(){if(_0x37ec93===_0xbb10('0x6a')){return db['UserVoiceQueueRt'][_0xbb10('0x29')]({'where':{'VoiceQueueId':_0x1cb22f['id'],'UserId':_0x19694d[_0xbb10('0x33')][_0xbb10('0x67')]}});}});});})[_0xbb10('0x28')](function(){return _0x28bd76;});})[_0xbb10('0x28')](function(){return _0x28bd76;});}})[_0xbb10('0x28')](function(_0xfefa17){if(_0xfefa17){return _0xfefa17[_0xbb10('0x7a')](_0x19694d[_0xbb10('0x33')][_0xbb10('0x67')])[_0xbb10('0x28')](function(_0x2d3e98){if(_['isArray'](_0x19694d[_0xbb10('0x33')]['ids'])){for(var _0x1b6d7d=0x0;_0x1b6d7d<_0x19694d[_0xbb10('0x33')][_0xbb10('0x67')][_0xbb10('0x3b')];_0x1b6d7d+=0x1){socket[_0xbb10('0x78')]('userTeam:remove',{'UserId':_0x19694d[_0xbb10('0x33')][_0xbb10('0x67')][_0x1b6d7d],'TeamId':_0x19694d[_0xbb10('0x4e')]['id']});}}else{socket[_0xbb10('0x78')](_0xbb10('0x7c'),{'UserId':_0x19694d[_0xbb10('0x33')]['ids'],'TeamId':_0x19694d['params']['id']});}});}})[_0xbb10('0x28')](respondWithStatusCode(_0x379d49,null))[_0xbb10('0x4c')](handleError(_0x379d49,null));};exports[_0xbb10('0x7d')]=function(_0x57d5a1,_0x124b32,_0x3d6a91){var _0x514fdf={};var _0x2831de={};var _0xaede56;var _0x5642c3;return db[_0xbb10('0x30')]['findOne']({'where':{'id':_0x57d5a1[_0xbb10('0x4e')]['id']}})[_0xbb10('0x28')](handleEntityNotFound(_0x124b32,null))['then'](function(_0x34a5a3){if(_0x34a5a3){_0xaede56=_0x34a5a3;_0x2831de[_0xbb10('0x32')]=_['keys'](db['User'][_0xbb10('0x31')]);_0x2831de[_0xbb10('0x33')]=_[_0xbb10('0x36')](_0x57d5a1[_0xbb10('0x33')]);_0x2831de[_0xbb10('0x37')]=_['intersection'](_0x2831de[_0xbb10('0x32')],_0x2831de[_0xbb10('0x33')]);_0x514fdf[_0xbb10('0x39')]=_['intersection'](_0x2831de[_0xbb10('0x32')],qs[_0xbb10('0x3a')](_0x57d5a1[_0xbb10('0x33')][_0xbb10('0x3a')]));_0x514fdf[_0xbb10('0x39')]=_0x514fdf[_0xbb10('0x39')][_0xbb10('0x3b')]?_0x514fdf[_0xbb10('0x39')]:_0x2831de[_0xbb10('0x32')];_0x514fdf['order']=qs['sort'](_0x57d5a1[_0xbb10('0x33')][_0xbb10('0x62')]);_0x514fdf[_0xbb10('0x3d')]=qs[_0xbb10('0x37')](_[_0xbb10('0x3e')](_0x57d5a1[_0xbb10('0x33')],_0x2831de[_0xbb10('0x37')]));if(_0x57d5a1[_0xbb10('0x33')][_0xbb10('0x41')]){_0x514fdf[_0xbb10('0x3d')]=_[_0xbb10('0x46')](_0x514fdf[_0xbb10('0x3d')],{'$or':_[_0xbb10('0x42')](_0x514fdf['attributes'],function(_0x1e022d){var _0x123587={};_0x123587[_0x1e022d]={'$like':'%'+_0x57d5a1[_0xbb10('0x33')][_0xbb10('0x41')]+'%'};return _0x123587;})});}_0x514fdf=_[_0xbb10('0x46')]({},_0x514fdf,_0x57d5a1[_0xbb10('0x47')]);return _0xaede56[_0xbb10('0x7d')](_0x514fdf);}})[_0xbb10('0x28')](function(_0x3c6c45){if(_0x3c6c45){_0x5642c3=_0x3c6c45[_0xbb10('0x3b')];if(!_0x57d5a1[_0xbb10('0x33')]['hasOwnProperty'](_0xbb10('0x7e'))){_0x514fdf['limit']=qs[_0xbb10('0x23')](_0x57d5a1[_0xbb10('0x33')][_0xbb10('0x23')]);_0x514fdf[_0xbb10('0x22')]=qs[_0xbb10('0x22')](_0x57d5a1[_0xbb10('0x33')]['offset']);}return _0xaede56[_0xbb10('0x7d')](_0x514fdf);}})['then'](function(_0xd82ce1){if(_0xd82ce1){return _0xd82ce1?{'count':_0x5642c3,'rows':_0xd82ce1}:null;}})[_0xbb10('0x28')](respondWithResult(_0x124b32,null))[_0xbb10('0x4c')](handleError(_0x124b32,null));};
\ No newline at end of file
index d7e023d..3754619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x303b=['exports','events','Team','setMaxListeners','save','update','remove','hasOwnProperty','hook'];(function(_0x6f3151,_0x406745){var _0x305fb8=function(_0x24e5a8){while(--_0x24e5a8){_0x6f3151['push'](_0x6f3151['shift']());}};_0x305fb8(++_0x406745);}(_0x303b,0x1b1));var _0xb303=function(_0x378977,_0x59bf60){_0x378977=_0x378977-0x0;var _0x297e03=_0x303b[_0x378977];return _0x297e03;};'use strict';var EventEmitter=require(_0xb303('0x0'));var Team=require('../../mysqldb')['db'][_0xb303('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0xb303('0x2')](0x0);var events={'afterCreate':_0xb303('0x3'),'afterUpdate':_0xb303('0x4'),'afterDestroy':_0xb303('0x5')};function emitEvent(_0x49e994){return function(_0x301587,_0x527269,_0x48c35e){TeamEvents['emit'](_0x49e994+':'+_0x301587['id'],_0x301587);TeamEvents['emit'](_0x49e994,_0x301587);_0x48c35e(null);};}for(var e in events){if(events[_0xb303('0x6')](e)){var event=events[e];Team[_0xb303('0x7')](e,emitEvent(event));}}module[_0xb303('0x8')]=TeamEvents;
\ No newline at end of file
+var _0x8d79=['hasOwnProperty','hook','events','../../mysqldb','Team','update','remove','emit'];(function(_0x5079f3,_0x40992f){var _0x4e4fa8=function(_0xb29faa){while(--_0xb29faa){_0x5079f3['push'](_0x5079f3['shift']());}};_0x4e4fa8(++_0x40992f);}(_0x8d79,0x10a));var _0x98d7=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8d79[_0x160c73];return _0xd9302;};'use strict';var EventEmitter=require(_0x98d7('0x0'));var Team=require(_0x98d7('0x1'))['db'][_0x98d7('0x2')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x98d7('0x3'),'afterDestroy':_0x98d7('0x4')};function emitEvent(_0x17d888){return function(_0x556b27,_0x4d1db3,_0x4a824d){TeamEvents[_0x98d7('0x5')](_0x17d888+':'+_0x556b27['id'],_0x556b27);TeamEvents[_0x98d7('0x5')](_0x17d888,_0x556b27);_0x4a824d(null);};}for(var e in events){if(events[_0x98d7('0x6')](e)){var event=events[e];Team[_0x98d7('0x7')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index e8f4da0..f586283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['lodash','util','../../config/logger','api','bluebird','request-promise','./team.attributes','exports','define','teams'];(function(_0x5302fb,_0x1a2db3){var _0x43e6a4=function(_0x324ae6){while(--_0x324ae6){_0x5302fb['push'](_0x5302fb['shift']());}};_0x43e6a4(++_0x1a2db3);}(_0x34e8,0x12c));var _0x834e=function(_0x3e7a2c,_0x532e48){_0x3e7a2c=_0x3e7a2c-0x0;var _0x18f51c=_0x34e8[_0x3e7a2c];return _0x18f51c;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var attributes=require(_0x834e('0x6'));module[_0x834e('0x7')]=function(_0x289ef2,_0x19a3e0){return _0x289ef2[_0x834e('0x8')]('Team',attributes,{'tableName':_0x834e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['moment','./team.attributes','define','Team','teams','lodash','../../config/logger','api'];(function(_0x2aae10,_0x4c4283){var _0xc26056=function(_0x1fbf4c){while(--_0x1fbf4c){_0x2aae10['push'](_0x2aae10['shift']());}};_0xc26056(++_0x4c4283);}(_0x3e74,0x175));var _0x43e7=function(_0x393a0a,_0x1f7d72){_0x393a0a=_0x393a0a-0x0;var _0x4f4c94=_0x3e74[_0x393a0a];return _0x4f4c94;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x43e7('0x4'));module['exports']=function(_0x128b0f,_0xe838b4){return _0x128b0f[_0x43e7('0x5')](_0x43e7('0x6'),attributes,{'tableName':_0x43e7('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 04691e8..b53d271 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f79=['Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x591611,_0x230d45){var _0x4bd6ee=function(_0x23c504){while(--_0x23c504){_0x591611['push'](_0x591611['shift']());}};_0x4bd6ee(++_0x230d45);}(_0x5f79,0x18c));var _0x95f7=function(_0x2bc1fe,_0x45da98){_0x2bc1fe=_0x2bc1fe-0x0;var _0x1a47a5=_0x5f79[_0x2bc1fe];return _0x1a47a5;};'use strict';var _=require(_0x95f7('0x0'));var util=require(_0x95f7('0x1'));var moment=require(_0x95f7('0x2'));var BPromise=require(_0x95f7('0x3'));var rs=require(_0x95f7('0x4'));var fs=require('fs');var Redis=require(_0x95f7('0x5'));var db=require(_0x95f7('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x95f7('0x7'))('rpc');var config=require(_0x95f7('0x8'));var jayson=require(_0x95f7('0x9'));var client=jayson[_0x95f7('0xa')][_0x95f7('0xb')]({'port':0x232a});config[_0x95f7('0xc')]=_[_0x95f7('0xd')](config[_0x95f7('0xc')],{'host':_0x95f7('0xe'),'port':0x18eb});var socket=require(_0x95f7('0xf'))(new Redis(config[_0x95f7('0xc')]));require(_0x95f7('0x10'))[_0x95f7('0x11')](socket);function respondWithRpcPromise(_0x1518d0,_0x5ef9af,_0x4035fe){return new BPromise(function(_0x21b470,_0x14d5ed){return client[_0x95f7('0x12')](_0x1518d0,_0x4035fe)[_0x95f7('0x13')](function(_0x417748){logger[_0x95f7('0x14')](_0x95f7('0x15'),_0x5ef9af,_0x95f7('0x16'));logger[_0x95f7('0x17')](_0x95f7('0x18'),_0x5ef9af,_0x95f7('0x16'),JSON[_0x95f7('0x19')](_0x417748));if(_0x417748['error']){if(_0x417748[_0x95f7('0x1a')][_0x95f7('0x1b')]===0x1f4){logger[_0x95f7('0x1a')](_0x95f7('0x15'),_0x5ef9af,_0x417748[_0x95f7('0x1a')]['message']);return _0x14d5ed(_0x417748[_0x95f7('0x1a')][_0x95f7('0x1c')]);}logger[_0x95f7('0x1a')](_0x95f7('0x15'),_0x5ef9af,_0x417748[_0x95f7('0x1a')][_0x95f7('0x1c')]);return _0x21b470(_0x417748[_0x95f7('0x1a')]['message']);}else{logger[_0x95f7('0x14')](_0x95f7('0x15'),_0x5ef9af,_0x95f7('0x16'));_0x21b470(_0x417748['result']['message']);}})[_0x95f7('0x1d')](function(_0x211882){logger[_0x95f7('0x1a')](_0x95f7('0x15'),_0x5ef9af,_0x211882);_0x14d5ed(_0x211882);});});}
\ No newline at end of file
+var _0x2202=['./team.socket','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter'];(function(_0x45349b,_0x198248){var _0x3e0f23=function(_0x4026e5){while(--_0x4026e5){_0x45349b['push'](_0x45349b['shift']());}};_0x3e0f23(++_0x198248);}(_0x2202,0x12c));var _0x2220=function(_0x1a29c8,_0x4490b7){_0x1a29c8=_0x1a29c8-0x0;var _0x5e6869=_0x2202[_0x1a29c8];return _0x5e6869;};'use strict';var _=require(_0x2220('0x0'));var util=require('util');var moment=require(_0x2220('0x1'));var BPromise=require(_0x2220('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2220('0x3'))['db'];var utils=require(_0x2220('0x4'));var logger=require(_0x2220('0x5'))(_0x2220('0x6'));var config=require('../../config/environment');var jayson=require(_0x2220('0x7'));var client=jayson['client'][_0x2220('0x8')]({'port':0x232a});config[_0x2220('0x9')]=_[_0x2220('0xa')](config[_0x2220('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x2220('0xb'))(new Redis(config['redis']));require(_0x2220('0xc'))['register'](socket);function respondWithRpcPromise(_0x1adc2b,_0x16279b,_0x10c6da){return new BPromise(function(_0xf607a8,_0x4f5392){return client[_0x2220('0xd')](_0x1adc2b,_0x10c6da)[_0x2220('0xe')](function(_0x11b423){logger[_0x2220('0xf')](_0x2220('0x10'),_0x16279b,_0x2220('0x11'));logger[_0x2220('0x12')](_0x2220('0x13'),_0x16279b,'request\x20sent',JSON[_0x2220('0x14')](_0x11b423));if(_0x11b423[_0x2220('0x15')]){if(_0x11b423[_0x2220('0x15')][_0x2220('0x16')]===0x1f4){logger[_0x2220('0x15')](_0x2220('0x10'),_0x16279b,_0x11b423[_0x2220('0x15')][_0x2220('0x17')]);return _0x4f5392(_0x11b423[_0x2220('0x15')][_0x2220('0x17')]);}logger[_0x2220('0x15')](_0x2220('0x10'),_0x16279b,_0x11b423[_0x2220('0x15')][_0x2220('0x17')]);return _0xf607a8(_0x11b423[_0x2220('0x15')][_0x2220('0x17')]);}else{logger[_0x2220('0xf')](_0x2220('0x10'),_0x16279b,_0x2220('0x11'));_0xf607a8(_0x11b423[_0x2220('0x18')][_0x2220('0x17')]);}})[_0x2220('0x19')](function(_0x5c1ea9){logger[_0x2220('0x15')](_0x2220('0x10'),_0x16279b,_0x5c1ea9);_0x4f5392(_0x5c1ea9);});});}
\ No newline at end of file
index 28c6bb9..6469ebf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x535b=['update','emit','removeListener','register','team:','save','remove'];(function(_0x45a7a6,_0x380289){var _0x514f51=function(_0x366e28){while(--_0x366e28){_0x45a7a6['push'](_0x45a7a6['shift']());}};_0x514f51(++_0x380289);}(_0x535b,0x18d));var _0xb535=function(_0x92ec59,_0xffb5ae){_0x92ec59=_0x92ec59-0x0;var _0x57dee8=_0x535b[_0x92ec59];return _0x57dee8;};'use strict';var TeamEvents=require('./team.events');var events=[_0xb535('0x0'),_0xb535('0x1'),_0xb535('0x2')];function createListener(_0xa95b41,_0x2fd850){return function(_0x322ce7){_0x2fd850[_0xb535('0x3')](_0xa95b41,_0x322ce7);};}function removeListener(_0x2b9643,_0x5c0c5b){return function(){TeamEvents[_0xb535('0x4')](_0x2b9643,_0x5c0c5b);};}exports[_0xb535('0x5')]=function(_0x2e79b3){for(var _0x38bb8f=0x0,_0x33bb0a=events['length'];_0x38bb8f<_0x33bb0a;_0x38bb8f++){var _0x3d4530=events[_0x38bb8f];var _0x452f2c=createListener(_0xb535('0x6')+_0x3d4530,_0x2e79b3);TeamEvents['on'](_0x3d4530,_0x452f2c);}};
\ No newline at end of file
+var _0xe0be=['emit','removeListener','team:','./team.events','save','remove','update'];(function(_0x56fe98,_0x43dc16){var _0x212f4f=function(_0xc3427d){while(--_0xc3427d){_0x56fe98['push'](_0x56fe98['shift']());}};_0x212f4f(++_0x43dc16);}(_0xe0be,0x1c3));var _0xee0b=function(_0x3fe34c,_0x2a15b9){_0x3fe34c=_0x3fe34c-0x0;var _0x4a5413=_0xe0be[_0x3fe34c];return _0x4a5413;};'use strict';var TeamEvents=require(_0xee0b('0x0'));var events=[_0xee0b('0x1'),_0xee0b('0x2'),_0xee0b('0x3')];function createListener(_0x5f24fd,_0xc4fc00){return function(_0x2ec21c){_0xc4fc00[_0xee0b('0x4')](_0x5f24fd,_0x2ec21c);};}function removeListener(_0x2c2ecd,_0x307070){return function(){TeamEvents[_0xee0b('0x5')](_0x2c2ecd,_0x307070);};}exports['register']=function(_0x5db6a0){for(var _0x20b154=0x0,_0x3303bd=events['length'];_0x20b154<_0x3303bd;_0x20b154++){var _0x42d14b=events[_0x20b154];var _0x5c85a7=createListener(_0xee0b('0x6')+_0x42d14b,_0x5db6a0);TeamEvents['on'](_0x42d14b,_0x5c85a7);}};
\ No newline at end of file
index 398fa99..1eabc9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf3=['util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./template.controller','get','isAuthenticated','index','/:id','post','create','update','delete','multer'];(function(_0x5f0217,_0xf0ee3d){var _0x30f8fb=function(_0x49506d){while(--_0x49506d){_0x5f0217['push'](_0x5f0217['shift']());}};_0x30f8fb(++_0xf0ee3d);}(_0x2cf3,0x1ef));var _0x32cf=function(_0xeb717a,_0x102657){_0xeb717a=_0xeb717a-0x0;var _0x5dc9ac=_0x2cf3[_0xeb717a];return _0x5dc9ac;};'use strict';var multer=require(_0x32cf('0x0'));var util=require(_0x32cf('0x1'));var path=require('path');var timeout=require(_0x32cf('0x2'));var express=require(_0x32cf('0x3'));var router=express[_0x32cf('0x4')]();var auth=require(_0x32cf('0x5'));var interaction=require(_0x32cf('0x6'));var config=require('../../config/environment');var controller=require(_0x32cf('0x7'));router[_0x32cf('0x8')]('/',auth[_0x32cf('0x9')](),controller[_0x32cf('0xa')]);router[_0x32cf('0x8')](_0x32cf('0xb'),auth[_0x32cf('0x9')](),controller['show']);router[_0x32cf('0xc')]('/',auth[_0x32cf('0x9')](),controller[_0x32cf('0xd')]);router['put'](_0x32cf('0xb'),auth[_0x32cf('0x9')](),controller[_0x32cf('0xe')]);router[_0x32cf('0xf')](_0x32cf('0xb'),auth[_0x32cf('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xa715=['show','create','put','delete','destroy','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./template.controller','get','isAuthenticated','index','/:id'];(function(_0xd8aad0,_0x4da2cd){var _0x570860=function(_0x1acc03){while(--_0x1acc03){_0xd8aad0['push'](_0xd8aad0['shift']());}};_0x570860(++_0x4da2cd);}(_0xa715,0xe6));var _0x5a71=function(_0x3b3295,_0x3e8170){_0x3b3295=_0x3b3295-0x0;var _0x3c60f4=_0xa715[_0x3b3295];return _0x3c60f4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5a71('0x0'));var timeout=require(_0x5a71('0x1'));var express=require('express');var router=express[_0x5a71('0x2')]();var auth=require('../../components/auth/service');var interaction=require(_0x5a71('0x3'));var config=require(_0x5a71('0x4'));var controller=require(_0x5a71('0x5'));router[_0x5a71('0x6')]('/',auth[_0x5a71('0x7')](),controller[_0x5a71('0x8')]);router[_0x5a71('0x6')](_0x5a71('0x9'),auth[_0x5a71('0x7')](),controller[_0x5a71('0xa')]);router['post']('/',auth[_0x5a71('0x7')](),controller[_0x5a71('0xb')]);router[_0x5a71('0xc')](_0x5a71('0x9'),auth[_0x5a71('0x7')](),controller['update']);router[_0x5a71('0xd')](_0x5a71('0x9'),auth[_0x5a71('0x7')](),controller[_0x5a71('0xe')]);module['exports']=router;
\ No newline at end of file
index c1ffcd8..f41ad82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c62=['exports','STRING','TEXT','sequelize'];(function(_0x20e990,_0x5c19f1){var _0x1adc8c=function(_0x27440c){while(--_0x27440c){_0x20e990['push'](_0x20e990['shift']());}};_0x1adc8c(++_0x5c19f1);}(_0x6c62,0x18b));var _0x26c6=function(_0x5491e5,_0x37a869){_0x5491e5=_0x5491e5-0x0;var _0x214eb5=_0x6c62[_0x5491e5];return _0x214eb5;};'use strict';var Sequelize=require(_0x26c6('0x0'));module[_0x26c6('0x1')]={'name':{'type':Sequelize[_0x26c6('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize[_0x26c6('0x3')]}};
\ No newline at end of file
+var _0x0a7d=['sequelize','exports','STRING','TEXT'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x0a7d,0x160));var _0xd0a7=function(_0x48c4ef,_0x319d44){_0x48c4ef=_0x48c4ef-0x0;var _0x435715=_0x0a7d[_0x48c4ef];return _0x435715;};'use strict';var Sequelize=require(_0xd0a7('0x0'));module[_0xd0a7('0x1')]={'name':{'type':Sequelize[_0xd0a7('0x2')]},'description':{'type':Sequelize[_0xd0a7('0x2')]},'html':{'type':Sequelize[_0xd0a7('0x3')]}};
\ No newline at end of file
index 9b7aed7..bab32c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['attributes','fields','length','hasOwnProperty','order','sort','where','pick','add','day','merge','map','type','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','user','role','UserProfileSection','update','find','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','api','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','destroy','then','get','Templates','UserProfileResource','error','stack','name','send','index','Template','keys','query','dateStart','dateEnd','filters','intersection','model'];(function(_0x28f2e8,_0x4686ae){var _0x4711fc=function(_0x2c373f){while(--_0x2c373f){_0x28f2e8['push'](_0x28f2e8['shift']());}};_0x4711fc(++_0x4686ae);}(_0x5f2f,0x73));var _0xf5f2=function(_0xd9fb1d,_0x122874){_0xd9fb1d=_0xd9fb1d-0x0;var _0x26ef43=_0x5f2f[_0xd9fb1d];return _0x26ef43;};'use strict';var pdf=require(_0xf5f2('0x0'));var emlformat=require(_0xf5f2('0x1'));var rimraf=require(_0xf5f2('0x2'));var zipdir=require(_0xf5f2('0x3'));var jsonpatch=require(_0xf5f2('0x4'));var rp=require(_0xf5f2('0x5'));var moment=require(_0xf5f2('0x6'));var BPromise=require(_0xf5f2('0x7'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf5f2('0x8'));var sox=require(_0xf5f2('0x9'));var csv=require(_0xf5f2('0xa'));var ejs=require(_0xf5f2('0xb'));var fs=require('fs');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('0xa'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var qs=require(_0xf5f2('0x12'));var logger=require('../../config/logger')(_0xf5f2('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0xf5f2('0x14'))['db'];function respondWithStatusCode(_0x151aba,_0x4b78cd){_0x4b78cd=_0x4b78cd||0xcc;return function(_0x336f6b){if(_0x336f6b){return _0x151aba[_0xf5f2('0x15')](_0x4b78cd);}return _0x151aba[_0xf5f2('0x16')](_0x4b78cd)[_0xf5f2('0x17')]();};}function respondWithResult(_0x59bb6c,_0x3e5956){_0x3e5956=_0x3e5956||0xc8;return function(_0x5c01b8){if(_0x5c01b8){return _0x59bb6c[_0xf5f2('0x16')](_0x3e5956)[_0xf5f2('0x18')](_0x5c01b8);}};}function respondWithFilteredResult(_0x269909,_0x1c1a5c){return function(_0x422b55){if(_0x422b55){var _0x4d97fc=_0x422b55[_0xf5f2('0x19')],_0xafe430=_0x1c1a5c[_0xf5f2('0x1a')],_0x286197=_0x1c1a5c[_0xf5f2('0x1a')]+_0x1c1a5c[_0xf5f2('0x1b')],_0x17d656;if(_0x286197>=_0x4d97fc){_0x286197=_0x4d97fc;_0x17d656=0xc8;}else{_0x17d656=0xce;}_0x269909[_0xf5f2('0x16')](_0x17d656);return _0x269909[_0xf5f2('0x1c')](_0xf5f2('0x1d'),_0xafe430+'-'+_0x286197+'/'+_0x4d97fc)[_0xf5f2('0x18')](_0x422b55);}return null;};}function patchUpdates(_0x28e097){return function(_0x4ff59b){try{jsonpatch[_0xf5f2('0x1e')](_0x4ff59b,_0x28e097,!![]);}catch(_0x3cf5ea){return BPromise[_0xf5f2('0x1f')](_0x3cf5ea);}return _0x4ff59b[_0xf5f2('0x20')]();};}function saveUpdates(_0x56acc5,_0x34706d){return function(_0x47101e){if(_0x47101e){return _0x47101e['update'](_0x56acc5)['then'](function(_0x2d2805){return _0x2d2805;});}return null;};}function removeEntity(_0x388e6c,_0x4ae323){return function(_0x45b74f){if(_0x45b74f){return _0x45b74f[_0xf5f2('0x21')]()[_0xf5f2('0x22')](function(){var _0x39c024=_0x45b74f[_0xf5f2('0x23')]({'plain':!![]});var _0x4c691a=_0xf5f2('0x24');return db[_0xf5f2('0x25')][_0xf5f2('0x21')]({'where':{'type':_0x4c691a,'resourceId':_0x39c024['id']}})[_0xf5f2('0x22')](function(){return _0x45b74f;});})[_0xf5f2('0x22')](function(){_0x388e6c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f1124,_0x3f79d5){return function(_0x13da6f){if(!_0x13da6f){_0x5f1124[_0xf5f2('0x15')](0x194);}return _0x13da6f;};}function handleError(_0xf6c58d,_0x788a8d){_0x788a8d=_0x788a8d||0x1f4;return function(_0x13a3be){logger[_0xf5f2('0x26')](_0x13a3be[_0xf5f2('0x27')]);if(_0x13a3be['name']){delete _0x13a3be[_0xf5f2('0x28')];}_0xf6c58d[_0xf5f2('0x16')](_0x788a8d)[_0xf5f2('0x29')](_0x13a3be);};}exports[_0xf5f2('0x2a')]=function(_0x198c73,_0x477604){var _0x5b6672={},_0x53cb96={},_0x22c826={'count':0x0,'rows':[]};var _0x14c829=db[_0xf5f2('0x2b')]['rawAttributes'];_0x53cb96['model']=_[_0xf5f2('0x2c')](_0x14c829);var _0x50b8a2={'dateStart':_0x198c73[_0xf5f2('0x2d')][_0xf5f2('0x2e')],'dateEnd':_0x198c73[_0xf5f2('0x2d')]['dateEnd']};delete _0x198c73['query'][_0xf5f2('0x2e')];delete _0x198c73['query'][_0xf5f2('0x2f')];_0x53cb96['query']=_[_0xf5f2('0x2c')](_0x198c73[_0xf5f2('0x2d')]);_0x53cb96[_0xf5f2('0x30')]=_[_0xf5f2('0x31')](_0x53cb96[_0xf5f2('0x32')],_0x53cb96[_0xf5f2('0x2d')]);_0x5b6672[_0xf5f2('0x33')]=_[_0xf5f2('0x31')](_0x53cb96['model'],qs[_0xf5f2('0x34')](_0x198c73[_0xf5f2('0x2d')][_0xf5f2('0x34')]));_0x5b6672[_0xf5f2('0x33')]=_0x5b6672[_0xf5f2('0x33')][_0xf5f2('0x35')]?_0x5b6672[_0xf5f2('0x33')]:_0x53cb96['model'];if(!_0x198c73[_0xf5f2('0x2d')][_0xf5f2('0x36')]('nolimit')){_0x5b6672[_0xf5f2('0x1b')]=qs['limit'](_0x198c73[_0xf5f2('0x2d')][_0xf5f2('0x1b')]);_0x5b6672[_0xf5f2('0x1a')]=qs[_0xf5f2('0x1a')](_0x198c73['query']['offset']);}_0x5b6672[_0xf5f2('0x37')]=qs[_0xf5f2('0x38')](_0x198c73[_0xf5f2('0x2d')]['sort']);_0x5b6672[_0xf5f2('0x39')]=qs['filters'](_[_0xf5f2('0x3a')](_0x198c73['query'],_0x53cb96[_0xf5f2('0x30')]));if(_0x50b8a2[_0xf5f2('0x2e')]){if(_0x50b8a2['dateEnd']){_0x50b8a2[_0xf5f2('0x2f')]=moment(_0x50b8a2[_0xf5f2('0x2f')])[_0xf5f2('0x3b')](0x1,_0xf5f2('0x3c'));}else{_0x50b8a2['dateEnd']=moment(_0x50b8a2['dateStart'])[_0xf5f2('0x3b')](0x1,_0xf5f2('0x3c'));}_[_0xf5f2('0x3d')](_0x5b6672[_0xf5f2('0x39')],{'createdAt':{'$gte':_0x50b8a2[_0xf5f2('0x2e')],'$lte':_0x50b8a2[_0xf5f2('0x2f')]}});}if(_0x198c73[_0xf5f2('0x2d')]['filter']){_0x5b6672[_0xf5f2('0x39')]=_[_0xf5f2('0x3d')](_0x5b6672['where'],{'$or':_[_0xf5f2('0x3e')](_0x14c829,function(_0x3f3895){if(_0x3f3895[_0xf5f2('0x3f')][_0xf5f2('0x40')]!==_0xf5f2('0x41')){var _0x3b6372={};_0x3b6372[_0x3f3895[_0xf5f2('0x42')]]={'$like':'%'+_0x198c73[_0xf5f2('0x2d')]['filter']+'%'};return _0x3b6372;}})});}_0x5b6672=_[_0xf5f2('0x3d')]({},_0x5b6672,_0x198c73[_0xf5f2('0x43')]);var _0x17a78e={'where':_0x5b6672['where']};return db['Template']['count'](_0x17a78e)[_0xf5f2('0x22')](function(_0x2ad13c){_0x22c826['count']=_0x2ad13c;if(_0x198c73[_0xf5f2('0x2d')][_0xf5f2('0x44')]){_0x5b6672[_0xf5f2('0x45')]=[{'all':!![]}];}return db[_0xf5f2('0x2b')][_0xf5f2('0x46')](_0x5b6672);})[_0xf5f2('0x22')](function(_0x1a6ec1){_0x22c826[_0xf5f2('0x47')]=_0x1a6ec1;return _0x22c826;})[_0xf5f2('0x22')](respondWithFilteredResult(_0x477604,_0x5b6672))[_0xf5f2('0x48')](handleError(_0x477604,null));};exports[_0xf5f2('0x49')]=function(_0x4773cd,_0x4252a3){var _0x2fb67e={'raw':!![],'where':{'id':_0x4773cd[_0xf5f2('0x4a')]['id']}},_0x4faeed={};_0x4faeed['model']=_[_0xf5f2('0x2c')](db[_0xf5f2('0x2b')][_0xf5f2('0x4b')]);_0x4faeed[_0xf5f2('0x2d')]=_[_0xf5f2('0x2c')](_0x4773cd[_0xf5f2('0x2d')]);_0x4faeed['filters']=_[_0xf5f2('0x31')](_0x4faeed[_0xf5f2('0x32')],_0x4faeed[_0xf5f2('0x2d')]);_0x2fb67e[_0xf5f2('0x33')]=_[_0xf5f2('0x31')](_0x4faeed[_0xf5f2('0x32')],qs[_0xf5f2('0x34')](_0x4773cd[_0xf5f2('0x2d')]['fields']));_0x2fb67e[_0xf5f2('0x33')]=_0x2fb67e[_0xf5f2('0x33')][_0xf5f2('0x35')]?_0x2fb67e['attributes']:_0x4faeed[_0xf5f2('0x32')];if(_0x4773cd[_0xf5f2('0x2d')][_0xf5f2('0x44')]){_0x2fb67e['include']=[{'all':!![]}];}_0x2fb67e=_['merge']({},_0x2fb67e,_0x4773cd[_0xf5f2('0x43')]);return db[_0xf5f2('0x2b')]['find'](_0x2fb67e)[_0xf5f2('0x22')](handleEntityNotFound(_0x4252a3,null))['then'](respondWithResult(_0x4252a3,null))[_0xf5f2('0x48')](handleError(_0x4252a3,null));};exports['create']=function(_0x2cbd9d,_0x5d9120){return db[_0xf5f2('0x2b')][_0xf5f2('0x4c')](_0x2cbd9d[_0xf5f2('0x4d')],{})[_0xf5f2('0x22')](function(_0x4fa738){var _0x3154c1=_0x2cbd9d[_0xf5f2('0x4e')]['get']({'plain':!![]});if(!_0x3154c1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3154c1[_0xf5f2('0x4f')]===_0xf5f2('0x4e')){var _0x57782c=_0x4fa738[_0xf5f2('0x23')]({'plain':!![]});var _0xe0ce7f=_0xf5f2('0x24');return db[_0xf5f2('0x50')]['find']({'where':{'name':_0xe0ce7f,'userProfileId':_0x3154c1['userProfileId']},'raw':!![]})[_0xf5f2('0x22')](function(_0xa3cc67){if(_0xa3cc67&&_0xa3cc67['autoAssociation']===0x0){return db[_0xf5f2('0x25')][_0xf5f2('0x4c')]({'name':_0x57782c[_0xf5f2('0x28')],'resourceId':_0x57782c['id'],'type':_0xa3cc67[_0xf5f2('0x28')],'sectionId':_0xa3cc67['id']},{})[_0xf5f2('0x22')](function(){return _0x4fa738;});}else{return _0x4fa738;}})[_0xf5f2('0x48')](function(_0x14ee10){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x14ee10);throw _0x14ee10;});}return _0x4fa738;})[_0xf5f2('0x22')](respondWithResult(_0x5d9120,0xc9))[_0xf5f2('0x48')](handleError(_0x5d9120,null));};exports[_0xf5f2('0x51')]=function(_0x46a905,_0x21b0d3){if(_0x46a905['body']['id']){delete _0x46a905[_0xf5f2('0x4d')]['id'];}return db[_0xf5f2('0x2b')][_0xf5f2('0x52')]({'where':{'id':_0x46a905['params']['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x21b0d3,null))['then'](saveUpdates(_0x46a905[_0xf5f2('0x4d')],null))[_0xf5f2('0x22')](respondWithResult(_0x21b0d3,null))[_0xf5f2('0x48')](handleError(_0x21b0d3,null));};exports[_0xf5f2('0x21')]=function(_0x4afa4d,_0x5a5338){return db[_0xf5f2('0x2b')]['find']({'where':{'id':_0x4afa4d[_0xf5f2('0x4a')]['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x5a5338,null))['then'](removeEntity(_0x5a5338,null))[_0xf5f2('0x48')](handleError(_0x5a5338,null));};
\ No newline at end of file
+var _0x781d=['add','day','merge','map','type','key','filter','include','findAll','rows','catch','show','params','rawAttributes','includeAll','options','create','body','get','role','Templates','find','html-pdf','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','sendStatus','status','end','json','count','offset','limit','set','apply','reject','save','update','then','UserProfileResource','destroy','error','name','send','Template','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick'];(function(_0x27e4bc,_0x1f1775){var _0x1db4d6=function(_0x320032){while(--_0x320032){_0x27e4bc['push'](_0x27e4bc['shift']());}};_0x1db4d6(++_0x1f1775);}(_0x781d,0x14a));var _0xd781=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x781d[_0x397e5f];return _0x5302b8;};'use strict';var pdf=require(_0xd781('0x0'));var emlformat=require(_0xd781('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd781('0x2'));var rp=require(_0xd781('0x3'));var moment=require(_0xd781('0x4'));var BPromise=require(_0xd781('0x5'));var Mustache=require(_0xd781('0x6'));var util=require(_0xd781('0x7'));var path=require(_0xd781('0x8'));var sox=require(_0xd781('0x9'));var csv=require(_0xd781('0xa'));var ejs=require(_0xd781('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0xd781('0xc'));var crypto=require(_0xd781('0xd'));var jsforce=require(_0xd781('0xe'));var deskjs=require(_0xd781('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd781('0x10'));var Papa=require('papaparse');var Redis=require(_0xd781('0x11'));var qs=require(_0xd781('0x12'));var logger=require('../../config/logger')(_0xd781('0x13'));var utils=require(_0xd781('0x14'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40a900,_0x28b74c){_0x28b74c=_0x28b74c||0xcc;return function(_0x36f086){if(_0x36f086){return _0x40a900[_0xd781('0x15')](_0x28b74c);}return _0x40a900[_0xd781('0x16')](_0x28b74c)[_0xd781('0x17')]();};}function respondWithResult(_0xc7758f,_0x3eb78){_0x3eb78=_0x3eb78||0xc8;return function(_0xb895a1){if(_0xb895a1){return _0xc7758f[_0xd781('0x16')](_0x3eb78)[_0xd781('0x18')](_0xb895a1);}};}function respondWithFilteredResult(_0x587953,_0x477bdc){return function(_0x115e00){if(_0x115e00){var _0x498674=_0x115e00[_0xd781('0x19')],_0x3a1f48=_0x477bdc[_0xd781('0x1a')],_0x48bffc=_0x477bdc[_0xd781('0x1a')]+_0x477bdc[_0xd781('0x1b')],_0x294e5a;if(_0x48bffc>=_0x498674){_0x48bffc=_0x498674;_0x294e5a=0xc8;}else{_0x294e5a=0xce;}_0x587953[_0xd781('0x16')](_0x294e5a);return _0x587953[_0xd781('0x1c')]('Content-Range',_0x3a1f48+'-'+_0x48bffc+'/'+_0x498674)[_0xd781('0x18')](_0x115e00);}return null;};}function patchUpdates(_0x3f2922){return function(_0x395d9c){try{jsonpatch[_0xd781('0x1d')](_0x395d9c,_0x3f2922,!![]);}catch(_0x3bf805){return BPromise[_0xd781('0x1e')](_0x3bf805);}return _0x395d9c[_0xd781('0x1f')]();};}function saveUpdates(_0x1d6fc7,_0x5a5ff5){return function(_0x32e15e){if(_0x32e15e){return _0x32e15e[_0xd781('0x20')](_0x1d6fc7)[_0xd781('0x21')](function(_0x103758){return _0x103758;});}return null;};}function removeEntity(_0x36d320,_0x274665){return function(_0x1adcbd){if(_0x1adcbd){return _0x1adcbd['destroy']()[_0xd781('0x21')](function(){var _0x4e2c56=_0x1adcbd['get']({'plain':!![]});var _0x187a5a='Templates';return db[_0xd781('0x22')][_0xd781('0x23')]({'where':{'type':_0x187a5a,'resourceId':_0x4e2c56['id']}})[_0xd781('0x21')](function(){return _0x1adcbd;});})[_0xd781('0x21')](function(){_0x36d320[_0xd781('0x16')](0xcc)[_0xd781('0x17')]();});}};}function handleEntityNotFound(_0x221f14,_0x316d43){return function(_0x10940b){if(!_0x10940b){_0x221f14['sendStatus'](0x194);}return _0x10940b;};}function handleError(_0x529ca1,_0x3f575a){_0x3f575a=_0x3f575a||0x1f4;return function(_0x849587){logger[_0xd781('0x24')](_0x849587['stack']);if(_0x849587[_0xd781('0x25')]){delete _0x849587['name'];}_0x529ca1['status'](_0x3f575a)[_0xd781('0x26')](_0x849587);};}exports['index']=function(_0x3e868,_0x123a6a){var _0x5c3848={},_0x5b6b9d={},_0x43cc74={'count':0x0,'rows':[]};var _0x5b0464=db[_0xd781('0x27')]['rawAttributes'];_0x5b6b9d[_0xd781('0x28')]=_[_0xd781('0x29')](_0x5b0464);var _0x556127={'dateStart':_0x3e868['query'][_0xd781('0x2a')],'dateEnd':_0x3e868[_0xd781('0x2b')][_0xd781('0x2c')]};delete _0x3e868['query']['dateStart'];delete _0x3e868[_0xd781('0x2b')][_0xd781('0x2c')];_0x5b6b9d[_0xd781('0x2b')]=_['keys'](_0x3e868['query']);_0x5b6b9d[_0xd781('0x2d')]=_[_0xd781('0x2e')](_0x5b6b9d['model'],_0x5b6b9d[_0xd781('0x2b')]);_0x5c3848[_0xd781('0x2f')]=_['intersection'](_0x5b6b9d[_0xd781('0x28')],qs[_0xd781('0x30')](_0x3e868[_0xd781('0x2b')][_0xd781('0x30')]));_0x5c3848['attributes']=_0x5c3848[_0xd781('0x2f')][_0xd781('0x31')]?_0x5c3848[_0xd781('0x2f')]:_0x5b6b9d[_0xd781('0x28')];if(!_0x3e868['query'][_0xd781('0x32')](_0xd781('0x33'))){_0x5c3848['limit']=qs[_0xd781('0x1b')](_0x3e868['query'][_0xd781('0x1b')]);_0x5c3848[_0xd781('0x1a')]=qs['offset'](_0x3e868[_0xd781('0x2b')][_0xd781('0x1a')]);}_0x5c3848['order']=qs[_0xd781('0x34')](_0x3e868['query'][_0xd781('0x34')]);_0x5c3848[_0xd781('0x35')]=qs['filters'](_[_0xd781('0x36')](_0x3e868[_0xd781('0x2b')],_0x5b6b9d['filters']));if(_0x556127[_0xd781('0x2a')]){if(_0x556127[_0xd781('0x2c')]){_0x556127[_0xd781('0x2c')]=moment(_0x556127['dateEnd'])[_0xd781('0x37')](0x1,_0xd781('0x38'));}else{_0x556127[_0xd781('0x2c')]=moment(_0x556127[_0xd781('0x2a')])[_0xd781('0x37')](0x1,_0xd781('0x38'));}_[_0xd781('0x39')](_0x5c3848[_0xd781('0x35')],{'createdAt':{'$gte':_0x556127[_0xd781('0x2a')],'$lte':_0x556127['dateEnd']}});}if(_0x3e868[_0xd781('0x2b')]['filter']){_0x5c3848[_0xd781('0x35')]=_[_0xd781('0x39')](_0x5c3848['where'],{'$or':_[_0xd781('0x3a')](_0x5b0464,function(_0x3d49f4){if(_0x3d49f4[_0xd781('0x3b')][_0xd781('0x3c')]!=='VIRTUAL'){var _0x242381={};_0x242381[_0x3d49f4['field']]={'$like':'%'+_0x3e868[_0xd781('0x2b')][_0xd781('0x3d')]+'%'};return _0x242381;}})});}_0x5c3848=_['merge']({},_0x5c3848,_0x3e868['options']);var _0x1fb267={'where':_0x5c3848[_0xd781('0x35')]};return db[_0xd781('0x27')][_0xd781('0x19')](_0x1fb267)['then'](function(_0x46e7f6){_0x43cc74[_0xd781('0x19')]=_0x46e7f6;if(_0x3e868['query']['includeAll']){_0x5c3848[_0xd781('0x3e')]=[{'all':!![]}];}return db[_0xd781('0x27')][_0xd781('0x3f')](_0x5c3848);})['then'](function(_0x594f85){_0x43cc74[_0xd781('0x40')]=_0x594f85;return _0x43cc74;})[_0xd781('0x21')](respondWithFilteredResult(_0x123a6a,_0x5c3848))[_0xd781('0x41')](handleError(_0x123a6a,null));};exports[_0xd781('0x42')]=function(_0x43b9ac,_0x15f584){var _0x557078={'raw':!![],'where':{'id':_0x43b9ac[_0xd781('0x43')]['id']}},_0x5d1c9a={};_0x5d1c9a[_0xd781('0x28')]=_[_0xd781('0x29')](db[_0xd781('0x27')][_0xd781('0x44')]);_0x5d1c9a['query']=_[_0xd781('0x29')](_0x43b9ac[_0xd781('0x2b')]);_0x5d1c9a[_0xd781('0x2d')]=_['intersection'](_0x5d1c9a[_0xd781('0x28')],_0x5d1c9a[_0xd781('0x2b')]);_0x557078[_0xd781('0x2f')]=_['intersection'](_0x5d1c9a[_0xd781('0x28')],qs[_0xd781('0x30')](_0x43b9ac['query']['fields']));_0x557078[_0xd781('0x2f')]=_0x557078[_0xd781('0x2f')][_0xd781('0x31')]?_0x557078['attributes']:_0x5d1c9a[_0xd781('0x28')];if(_0x43b9ac[_0xd781('0x2b')][_0xd781('0x45')]){_0x557078[_0xd781('0x3e')]=[{'all':!![]}];}_0x557078=_[_0xd781('0x39')]({},_0x557078,_0x43b9ac[_0xd781('0x46')]);return db[_0xd781('0x27')]['find'](_0x557078)[_0xd781('0x21')](handleEntityNotFound(_0x15f584,null))[_0xd781('0x21')](respondWithResult(_0x15f584,null))[_0xd781('0x41')](handleError(_0x15f584,null));};exports['create']=function(_0x1cdff5,_0x1cfdbc){return db['Template'][_0xd781('0x47')](_0x1cdff5[_0xd781('0x48')],{})[_0xd781('0x21')](function(_0x207546){var _0x42a2f9=_0x1cdff5['user'][_0xd781('0x49')]({'plain':!![]});if(!_0x42a2f9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x42a2f9[_0xd781('0x4a')]==='user'){var _0x2ce1f6=_0x207546[_0xd781('0x49')]({'plain':!![]});var _0x4f9e37=_0xd781('0x4b');return db['UserProfileSection']['find']({'where':{'name':_0x4f9e37,'userProfileId':_0x42a2f9['userProfileId']},'raw':!![]})[_0xd781('0x21')](function(_0x174fcd){if(_0x174fcd&&_0x174fcd['autoAssociation']===0x0){return db[_0xd781('0x22')]['create']({'name':_0x2ce1f6[_0xd781('0x25')],'resourceId':_0x2ce1f6['id'],'type':_0x174fcd[_0xd781('0x25')],'sectionId':_0x174fcd['id']},{})[_0xd781('0x21')](function(){return _0x207546;});}else{return _0x207546;}})[_0xd781('0x41')](function(_0x5d95fa){logger[_0xd781('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d95fa);throw _0x5d95fa;});}return _0x207546;})[_0xd781('0x21')](respondWithResult(_0x1cfdbc,0xc9))['catch'](handleError(_0x1cfdbc,null));};exports[_0xd781('0x20')]=function(_0x3b7f12,_0x5644bf){if(_0x3b7f12[_0xd781('0x48')]['id']){delete _0x3b7f12[_0xd781('0x48')]['id'];}return db[_0xd781('0x27')][_0xd781('0x4c')]({'where':{'id':_0x3b7f12[_0xd781('0x43')]['id']}})[_0xd781('0x21')](handleEntityNotFound(_0x5644bf,null))['then'](saveUpdates(_0x3b7f12['body'],null))[_0xd781('0x21')](respondWithResult(_0x5644bf,null))[_0xd781('0x41')](handleError(_0x5644bf,null));};exports[_0xd781('0x23')]=function(_0x15cad9,_0x5e995c){return db[_0xd781('0x27')]['find']({'where':{'id':_0x15cad9[_0xd781('0x43')]['id']}})[_0xd781('0x21')](handleEntityNotFound(_0x5e995c,null))[_0xd781('0x21')](removeEntity(_0x5e995c,null))[_0xd781('0x41')](handleError(_0x5e995c,null));};
\ No newline at end of file
index caf52ab..2a2e9b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46da=['api','moment','bluebird','request-promise','./template.attributes','exports','define','Template','tools_templates','lodash','util','../../config/logger'];(function(_0x288cc5,_0x8a06db){var _0x1dc69c=function(_0x477318){while(--_0x477318){_0x288cc5['push'](_0x288cc5['shift']());}};_0x1dc69c(++_0x8a06db);}(_0x46da,0x171));var _0xa46d=function(_0x4cdfd3,_0x267f93){_0x4cdfd3=_0x4cdfd3-0x0;var _0x3556a4=_0x46da[_0x4cdfd3];return _0x3556a4;};'use strict';var _=require(_0xa46d('0x0'));var util=require(_0xa46d('0x1'));var logger=require(_0xa46d('0x2'))(_0xa46d('0x3'));var moment=require(_0xa46d('0x4'));var BPromise=require(_0xa46d('0x5'));var rp=require(_0xa46d('0x6'));var attributes=require(_0xa46d('0x7'));module[_0xa46d('0x8')]=function(_0x4c9343,_0x1aee03){return _0x4c9343[_0xa46d('0x9')](_0xa46d('0xa'),attributes,{'tableName':_0xa46d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x19c3=['api','moment','bluebird','request-promise','./template.attributes','define','Template','lodash','util','../../config/logger'];(function(_0x37546a,_0x51ed8b){var _0x3c182a=function(_0x2c9bcc){while(--_0x2c9bcc){_0x37546a['push'](_0x37546a['shift']());}};_0x3c182a(++_0x51ed8b);}(_0x19c3,0x115));var _0x319c=function(_0x3f9588,_0x4b26c2){_0x3f9588=_0x3f9588-0x0;var _0x25d35a=_0x19c3[_0x3f9588];return _0x25d35a;};'use strict';var _=require(_0x319c('0x0'));var util=require(_0x319c('0x1'));var logger=require(_0x319c('0x2'))(_0x319c('0x3'));var moment=require(_0x319c('0x4'));var BPromise=require(_0x319c('0x5'));var rp=require(_0x319c('0x6'));var attributes=require(_0x319c('0x7'));module['exports']=function(_0x403424,_0x1c0db5){return _0x403424[_0x319c('0x8')](_0x319c('0x9'),attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 293635f..7d228a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2802=['http','request','then','info','Template,\x20%s,\x20%s','request\x20sent','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetTemplate','Template','findAll','options','raw','where','attributes','limit','include','map','model','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x2f3537,_0x254746){var _0x477933=function(_0x47be49){while(--_0x47be49){_0x2f3537['push'](_0x2f3537['shift']());}};_0x477933(++_0x254746);}(_0x2802,0xd2));var _0x2280=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x2802[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x2280('0x0'));var util=require(_0x2280('0x1'));var moment=require(_0x2280('0x2'));var BPromise=require(_0x2280('0x3'));var rs=require(_0x2280('0x4'));var fs=require('fs');var Redis=require(_0x2280('0x5'));var db=require(_0x2280('0x6'))['db'];var utils=require(_0x2280('0x7'));var logger=require(_0x2280('0x8'))(_0x2280('0x9'));var config=require(_0x2280('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x2280('0xb')][_0x2280('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2477ed,_0x2ffddc,_0x3f91c4){return new BPromise(function(_0x1970b5,_0x975223){return client[_0x2280('0xd')](_0x2477ed,_0x3f91c4)[_0x2280('0xe')](function(_0x42a38f){logger[_0x2280('0xf')](_0x2280('0x10'),_0x2ffddc,_0x2280('0x11'));logger['debug'](_0x2280('0x12'),_0x2ffddc,_0x2280('0x11'),JSON[_0x2280('0x13')](_0x42a38f));if(_0x42a38f[_0x2280('0x14')]){if(_0x42a38f[_0x2280('0x14')][_0x2280('0x15')]===0x1f4){logger['error'](_0x2280('0x10'),_0x2ffddc,_0x42a38f[_0x2280('0x14')]['message']);return _0x975223(_0x42a38f[_0x2280('0x14')][_0x2280('0x16')]);}logger[_0x2280('0x14')](_0x2280('0x10'),_0x2ffddc,_0x42a38f[_0x2280('0x14')][_0x2280('0x16')]);return _0x1970b5(_0x42a38f[_0x2280('0x14')][_0x2280('0x16')]);}else{logger[_0x2280('0xf')](_0x2280('0x10'),_0x2ffddc,_0x2280('0x11'));_0x1970b5(_0x42a38f[_0x2280('0x17')]['message']);}})[_0x2280('0x18')](function(_0x556b78){logger['error']('Template,\x20%s,\x20%s',_0x2ffddc,_0x556b78);_0x975223(_0x556b78);});});}exports[_0x2280('0x19')]=function(_0x264719){var _0x4e9c89=this;return new Promise(function(_0x4db139,_0x5071e6){return db[_0x2280('0x1a')][_0x2280('0x1b')]({'raw':_0x264719[_0x2280('0x1c')]?_0x264719[_0x2280('0x1c')][_0x2280('0x1d')]===undefined?!![]:![]:!![],'where':_0x264719[_0x2280('0x1c')]?_0x264719['options'][_0x2280('0x1e')]||null:null,'attributes':_0x264719['options']?_0x264719[_0x2280('0x1c')][_0x2280('0x1f')]||null:null,'limit':_0x264719[_0x2280('0x1c')]?_0x264719['options'][_0x2280('0x20')]||null:null,'include':_0x264719[_0x2280('0x1c')]?_0x264719[_0x2280('0x1c')][_0x2280('0x21')]?_[_0x2280('0x22')](_0x264719[_0x2280('0x1c')][_0x2280('0x21')],function(_0x59f746){return{'model':db[_0x59f746[_0x2280('0x23')]],'as':_0x59f746['as'],'attributes':_0x59f746[_0x2280('0x1f')],'include':_0x59f746[_0x2280('0x21')]?_['map'](_0x59f746[_0x2280('0x21')],function(_0x41e039){return{'model':db[_0x41e039['model']],'as':_0x41e039['as'],'attributes':_0x41e039[_0x2280('0x1f')],'include':_0x41e039[_0x2280('0x21')]?_['map'](_0x41e039[_0x2280('0x21')],function(_0x4fef33){return{'model':db[_0x4fef33[_0x2280('0x23')]],'as':_0x4fef33['as'],'attributes':_0x4fef33[_0x2280('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33d006){logger['info'](_0x2280('0x19'),_0x264719);logger[_0x2280('0x24')](_0x2280('0x19'),_0x264719,JSON['stringify'](_0x33d006));_0x4db139(_0x33d006);})[_0x2280('0x18')](function(_0x3568c6){logger[_0x2280('0x14')](_0x2280('0x19'),_0x3568c6['message'],_0x264719);_0x5071e6(_0x4e9c89[_0x2280('0x14')](0x1f4,_0x3568c6[_0x2280('0x16')]));});});};
\ No newline at end of file
+var _0x20de=['bluebird','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','stringify','error','message','result','catch','GetTemplate','findAll','options','raw','where','attributes','limit','include','map','model','lodash','util','moment'];(function(_0xfa634c,_0x414e0e){var _0x73e478=function(_0xac2a51){while(--_0xac2a51){_0xfa634c['push'](_0xfa634c['shift']());}};_0x73e478(++_0x414e0e);}(_0x20de,0x151));var _0xe20d=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x20de[_0x3070dc];return _0x431489;};'use strict';var _=require(_0xe20d('0x0'));var util=require(_0xe20d('0x1'));var moment=require(_0xe20d('0x2'));var BPromise=require(_0xe20d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe20d('0x4'));var db=require(_0xe20d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe20d('0x6'))(_0xe20d('0x7'));var config=require(_0xe20d('0x8'));var jayson=require(_0xe20d('0x9'));var client=jayson[_0xe20d('0xa')][_0xe20d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x233e8c,_0x3ffee3,_0x2655ce){return new BPromise(function(_0xff72f7,_0xdde123){return client[_0xe20d('0xc')](_0x233e8c,_0x2655ce)[_0xe20d('0xd')](function(_0x3f1cb0){logger[_0xe20d('0xe')](_0xe20d('0xf'),_0x3ffee3,_0xe20d('0x10'));logger[_0xe20d('0x11')](_0xe20d('0x12'),_0x3ffee3,'request\x20sent',JSON[_0xe20d('0x13')](_0x3f1cb0));if(_0x3f1cb0['error']){if(_0x3f1cb0[_0xe20d('0x14')]['code']===0x1f4){logger[_0xe20d('0x14')](_0xe20d('0xf'),_0x3ffee3,_0x3f1cb0[_0xe20d('0x14')][_0xe20d('0x15')]);return _0xdde123(_0x3f1cb0[_0xe20d('0x14')][_0xe20d('0x15')]);}logger[_0xe20d('0x14')]('Template,\x20%s,\x20%s',_0x3ffee3,_0x3f1cb0['error'][_0xe20d('0x15')]);return _0xff72f7(_0x3f1cb0[_0xe20d('0x14')][_0xe20d('0x15')]);}else{logger['info'](_0xe20d('0xf'),_0x3ffee3,_0xe20d('0x10'));_0xff72f7(_0x3f1cb0[_0xe20d('0x16')][_0xe20d('0x15')]);}})[_0xe20d('0x17')](function(_0xf6dcd9){logger[_0xe20d('0x14')](_0xe20d('0xf'),_0x3ffee3,_0xf6dcd9);_0xdde123(_0xf6dcd9);});});}exports[_0xe20d('0x18')]=function(_0x887202){var _0x48294d=this;return new Promise(function(_0x3adbb5,_0x3bd450){return db['Template'][_0xe20d('0x19')]({'raw':_0x887202['options']?_0x887202[_0xe20d('0x1a')][_0xe20d('0x1b')]===undefined?!![]:![]:!![],'where':_0x887202[_0xe20d('0x1a')]?_0x887202[_0xe20d('0x1a')][_0xe20d('0x1c')]||null:null,'attributes':_0x887202[_0xe20d('0x1a')]?_0x887202[_0xe20d('0x1a')][_0xe20d('0x1d')]||null:null,'limit':_0x887202['options']?_0x887202[_0xe20d('0x1a')][_0xe20d('0x1e')]||null:null,'include':_0x887202[_0xe20d('0x1a')]?_0x887202[_0xe20d('0x1a')][_0xe20d('0x1f')]?_[_0xe20d('0x20')](_0x887202[_0xe20d('0x1a')][_0xe20d('0x1f')],function(_0x383f24){return{'model':db[_0x383f24['model']],'as':_0x383f24['as'],'attributes':_0x383f24[_0xe20d('0x1d')],'include':_0x383f24[_0xe20d('0x1f')]?_[_0xe20d('0x20')](_0x383f24['include'],function(_0x158504){return{'model':db[_0x158504[_0xe20d('0x21')]],'as':_0x158504['as'],'attributes':_0x158504['attributes'],'include':_0x158504[_0xe20d('0x1f')]?_[_0xe20d('0x20')](_0x158504[_0xe20d('0x1f')],function(_0x143240){return{'model':db[_0x143240[_0xe20d('0x21')]],'as':_0x143240['as'],'attributes':_0x143240[_0xe20d('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xe20d('0xd')](function(_0x4446c9){logger['info']('GetTemplate',_0x887202);logger[_0xe20d('0x11')](_0xe20d('0x18'),_0x887202,JSON['stringify'](_0x4446c9));_0x3adbb5(_0x4446c9);})['catch'](function(_0xba2207){logger[_0xe20d('0x14')]('GetTemplate',_0xba2207[_0xe20d('0x15')],_0x887202);_0x3bd450(_0x48294d[_0xe20d('0x14')](0x1f4,_0xba2207[_0xe20d('0x15')]));});});};
\ No newline at end of file
index e34a3ff..16c31f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee1b=['/:id/all_conditions','getAllConditions','/:id/any_conditions','/:id/actions','post','create','addAllCondition','addAnyCondition','addAction','put','update','delete','destroy','exports','multer','util','connect-timeout','express','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xee1b,0x108));var _0xbee1=function(_0x523f38,_0xc89e7c){_0x523f38=_0x523f38-0x0;var _0x9350a2=_0xee1b[_0x523f38];return _0x9350a2;};'use strict';var multer=require(_0xbee1('0x0'));var util=require(_0xbee1('0x1'));var path=require('path');var timeout=require(_0xbee1('0x2'));var express=require(_0xbee1('0x3'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0xbee1('0x4'));var config=require(_0xbee1('0x5'));var controller=require('./trigger.controller');router[_0xbee1('0x6')]('/',auth['isAuthenticated'](),controller[_0xbee1('0x7')]);router[_0xbee1('0x6')](_0xbee1('0x8'),auth[_0xbee1('0x9')](),controller[_0xbee1('0xa')]);router['get'](_0xbee1('0xb'),auth[_0xbee1('0x9')](),controller[_0xbee1('0xc')]);router[_0xbee1('0x6')](_0xbee1('0xd'),auth[_0xbee1('0x9')](),controller['getAnyConditions']);router[_0xbee1('0x6')](_0xbee1('0xe'),auth['isAuthenticated'](),controller['getActions']);router[_0xbee1('0xf')]('/',auth[_0xbee1('0x9')](),controller[_0xbee1('0x10')]);router['post']('/:id/all_conditions',auth[_0xbee1('0x9')](),controller[_0xbee1('0x11')]);router[_0xbee1('0xf')](_0xbee1('0xd'),auth['isAuthenticated'](),controller[_0xbee1('0x12')]);router[_0xbee1('0xf')](_0xbee1('0xe'),auth['isAuthenticated'](),controller[_0xbee1('0x13')]);router[_0xbee1('0x14')](_0xbee1('0x8'),auth[_0xbee1('0x9')](),controller[_0xbee1('0x15')]);router[_0xbee1('0x16')]('/:id',auth[_0xbee1('0x9')](),controller[_0xbee1('0x17')]);module[_0xbee1('0x18')]=router;
\ No newline at end of file
+var _0xf61f=['express','Router','../../components/auth/service','../../components/interaction/service','./trigger.controller','get','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getActions','post','create','addAllCondition','addAnyCondition','/:id/actions','/:id','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x1ac6e5,_0x40f47f){var _0x5877dc=function(_0x99caea){while(--_0x99caea){_0x1ac6e5['push'](_0x1ac6e5['shift']());}};_0x5877dc(++_0x40f47f);}(_0xf61f,0x15b));var _0xff61=function(_0x469218,_0x440d05){_0x469218=_0x469218-0x0;var _0x187b4a=_0xf61f[_0x469218];return _0x187b4a;};'use strict';var multer=require(_0xff61('0x0'));var util=require('util');var path=require(_0xff61('0x1'));var timeout=require(_0xff61('0x2'));var express=require(_0xff61('0x3'));var router=express[_0xff61('0x4')]();var auth=require(_0xff61('0x5'));var interaction=require(_0xff61('0x6'));var config=require('../../config/environment');var controller=require(_0xff61('0x7'));router[_0xff61('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0xff61('0x9')](),controller[_0xff61('0xa')]);router[_0xff61('0x8')](_0xff61('0xb'),auth[_0xff61('0x9')](),controller[_0xff61('0xc')]);router['get'](_0xff61('0xd'),auth[_0xff61('0x9')](),controller['getAnyConditions']);router[_0xff61('0x8')]('/:id/actions',auth[_0xff61('0x9')](),controller[_0xff61('0xe')]);router[_0xff61('0xf')]('/',auth[_0xff61('0x9')](),controller[_0xff61('0x10')]);router[_0xff61('0xf')](_0xff61('0xb'),auth[_0xff61('0x9')](),controller[_0xff61('0x11')]);router[_0xff61('0xf')](_0xff61('0xd'),auth[_0xff61('0x9')](),controller[_0xff61('0x12')]);router[_0xff61('0xf')](_0xff61('0x13'),auth[_0xff61('0x9')](),controller['addAction']);router['put'](_0xff61('0x14'),auth['isAuthenticated'](),controller[_0xff61('0x15')]);router[_0xff61('0x16')](_0xff61('0x14'),auth['isAuthenticated'](),controller[_0xff61('0x17')]);module[_0xff61('0x18')]=router;
\ No newline at end of file
index f792660..3fe5958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e49=['sequelize','exports','STRING'];(function(_0x3249fe,_0x100a1e){var _0x2dd286=function(_0x50f559){while(--_0x50f559){_0x3249fe['push'](_0x3249fe['shift']());}};_0x2dd286(++_0x100a1e);}(_0x1e49,0x75));var _0x91e4=function(_0x367830,_0x39061d){_0x367830=_0x367830-0x0;var _0x394d5d=_0x1e49[_0x367830];return _0x394d5d;};'use strict';var Sequelize=require(_0x91e4('0x0'));module[_0x91e4('0x1')]={'name':{'type':Sequelize[_0x91e4('0x2')]},'channel':{'type':Sequelize[_0x91e4('0x2')]},'description':{'type':Sequelize[_0x91e4('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x45b2=['BOOLEAN','sequelize','exports','STRING'];(function(_0x410e71,_0x5185fa){var _0xaaf4a5=function(_0x43b635){while(--_0x43b635){_0x410e71['push'](_0x410e71['shift']());}};_0xaaf4a5(++_0x5185fa);}(_0x45b2,0x75));var _0x245b=function(_0x43ff0d,_0x4d1101){_0x43ff0d=_0x43ff0d-0x0;var _0x338570=_0x45b2[_0x43ff0d];return _0x338570;};'use strict';var Sequelize=require(_0x245b('0x0'));module[_0x245b('0x1')]={'name':{'type':Sequelize[_0x245b('0x2')]},'channel':{'type':Sequelize[_0x245b('0x2')]},'description':{'type':Sequelize[_0x245b('0x2')]},'status':{'type':Sequelize[_0x245b('0x3')],'defaultValue':![]}};
\ No newline at end of file
index a804b55..96b50db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2179=['add','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Triggers','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','Condition','addAnyCondition','TriggerAnyId','findOne','getAllConditions','hasOwnProperty','map','getAnyConditions','addAction','TriggerId','Action','getActions','html-pdf','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','Trigger','rawAttributes','model','keys','dateStart','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','dateEnd','day'];(function(_0x2b8ef4,_0x33f0e3){var _0x4fec8b=function(_0x45a80c){while(--_0x45a80c){_0x2b8ef4['push'](_0x2b8ef4['shift']());}};_0x4fec8b(++_0x33f0e3);}(_0x2179,0x1ef));var _0x9217=function(_0x475bf1,_0x5235b6){_0x475bf1=_0x475bf1-0x0;var _0x4095d1=_0x2179[_0x475bf1];return _0x4095d1;};'use strict';var pdf=require(_0x9217('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x9217('0x1'));var zipdir=require(_0x9217('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9217('0x3'));var BPromise=require(_0x9217('0x4'));var Mustache=require(_0x9217('0x5'));var util=require('util');var path=require(_0x9217('0x6'));var sox=require(_0x9217('0x7'));var csv=require(_0x9217('0x8'));var ejs=require(_0x9217('0x9'));var fs=require('fs');var _=require(_0x9217('0xa'));var squel=require(_0x9217('0xb'));var crypto=require('crypto');var jsforce=require(_0x9217('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9217('0x8'));var querystring=require('querystring');var Papa=require(_0x9217('0xd'));var Redis=require(_0x9217('0xe'));var qs=require('../../components/parsers/qs');var logger=require(_0x9217('0xf'))(_0x9217('0x10'));var utils=require(_0x9217('0x11'));var config=require(_0x9217('0x12'));var db=require(_0x9217('0x13'))['db'];function respondWithStatusCode(_0xd5fa7a,_0x590809){_0x590809=_0x590809||0xcc;return function(_0x162796){if(_0x162796){return _0xd5fa7a['sendStatus'](_0x590809);}return _0xd5fa7a[_0x9217('0x14')](_0x590809)[_0x9217('0x15')]();};}function respondWithResult(_0x1d888c,_0x24cfa9){_0x24cfa9=_0x24cfa9||0xc8;return function(_0x3c9236){if(_0x3c9236){return _0x1d888c[_0x9217('0x14')](_0x24cfa9)['json'](_0x3c9236);}};}function respondWithFilteredResult(_0x813089,_0xe4b88a){return function(_0x4ec4de){if(_0x4ec4de){var _0x303b8d=_0x4ec4de[_0x9217('0x16')],_0x371dcf=_0xe4b88a['offset'],_0x19b0a0=_0xe4b88a[_0x9217('0x17')]+_0xe4b88a[_0x9217('0x18')],_0x3fb708;if(_0x19b0a0>=_0x303b8d){_0x19b0a0=_0x303b8d;_0x3fb708=0xc8;}else{_0x3fb708=0xce;}_0x813089[_0x9217('0x14')](_0x3fb708);return _0x813089[_0x9217('0x19')](_0x9217('0x1a'),_0x371dcf+'-'+_0x19b0a0+'/'+_0x303b8d)[_0x9217('0x1b')](_0x4ec4de);}return null;};}function patchUpdates(_0x3a7ad3){return function(_0x5bb0e7){try{jsonpatch[_0x9217('0x1c')](_0x5bb0e7,_0x3a7ad3,!![]);}catch(_0x3268c2){return BPromise[_0x9217('0x1d')](_0x3268c2);}return _0x5bb0e7[_0x9217('0x1e')]();};}function saveUpdates(_0x436eb6,_0x262ec8){return function(_0x587e83){if(_0x587e83){return _0x587e83[_0x9217('0x1f')](_0x436eb6)[_0x9217('0x20')](function(_0x332824){return _0x332824;});}return null;};}function removeEntity(_0x27b2c8,_0x3d1fad){return function(_0x3d89bd){if(_0x3d89bd){return _0x3d89bd[_0x9217('0x21')]()[_0x9217('0x20')](function(){var _0x2aee9b=_0x3d89bd[_0x9217('0x22')]({'plain':!![]});var _0x1d1e7c='Triggers';return db[_0x9217('0x23')][_0x9217('0x21')]({'where':{'type':_0x1d1e7c,'resourceId':_0x2aee9b['id']}})[_0x9217('0x20')](function(){return _0x3d89bd;});})[_0x9217('0x20')](function(){_0x27b2c8[_0x9217('0x14')](0xcc)[_0x9217('0x15')]();});}};}function handleEntityNotFound(_0x38c56f,_0x2c8a7d){return function(_0x396b4b){if(!_0x396b4b){_0x38c56f[_0x9217('0x24')](0x194);}return _0x396b4b;};}function handleError(_0x371f14,_0x3e57c0){_0x3e57c0=_0x3e57c0||0x1f4;return function(_0x24370b){logger[_0x9217('0x25')](_0x24370b[_0x9217('0x26')]);if(_0x24370b[_0x9217('0x27')]){delete _0x24370b[_0x9217('0x27')];}_0x371f14[_0x9217('0x14')](_0x3e57c0)['send'](_0x24370b);};}exports['index']=function(_0x1bdbff,_0xb1b77a){var _0x3d7cf5={},_0x20ab9f={},_0x336569={'count':0x0,'rows':[]};var _0xe6795d=db[_0x9217('0x28')][_0x9217('0x29')];_0x20ab9f[_0x9217('0x2a')]=_[_0x9217('0x2b')](_0xe6795d);var _0x4e75e3={'dateStart':_0x1bdbff['query'][_0x9217('0x2c')],'dateEnd':_0x1bdbff[_0x9217('0x2d')]['dateEnd']};delete _0x1bdbff[_0x9217('0x2d')][_0x9217('0x2c')];delete _0x1bdbff[_0x9217('0x2d')]['dateEnd'];_0x20ab9f[_0x9217('0x2d')]=_[_0x9217('0x2b')](_0x1bdbff[_0x9217('0x2d')]);_0x20ab9f[_0x9217('0x2e')]=_[_0x9217('0x2f')](_0x20ab9f[_0x9217('0x2a')],_0x20ab9f[_0x9217('0x2d')]);_0x3d7cf5[_0x9217('0x30')]=_[_0x9217('0x2f')](_0x20ab9f[_0x9217('0x2a')],qs[_0x9217('0x31')](_0x1bdbff[_0x9217('0x2d')][_0x9217('0x31')]));_0x3d7cf5[_0x9217('0x30')]=_0x3d7cf5[_0x9217('0x30')]['length']?_0x3d7cf5[_0x9217('0x30')]:_0x20ab9f['model'];if(!_0x1bdbff[_0x9217('0x2d')]['hasOwnProperty'](_0x9217('0x32'))){_0x3d7cf5['limit']=qs[_0x9217('0x18')](_0x1bdbff[_0x9217('0x2d')][_0x9217('0x18')]);_0x3d7cf5[_0x9217('0x17')]=qs[_0x9217('0x17')](_0x1bdbff[_0x9217('0x2d')][_0x9217('0x17')]);}_0x3d7cf5[_0x9217('0x33')]=qs[_0x9217('0x34')](_0x1bdbff['query']['sort']);_0x3d7cf5[_0x9217('0x35')]=qs['filters'](_[_0x9217('0x36')](_0x1bdbff[_0x9217('0x2d')],_0x20ab9f[_0x9217('0x2e')]));if(_0x4e75e3[_0x9217('0x2c')]){if(_0x4e75e3[_0x9217('0x37')]){_0x4e75e3[_0x9217('0x37')]=moment(_0x4e75e3[_0x9217('0x37')])['add'](0x1,_0x9217('0x38'));}else{_0x4e75e3[_0x9217('0x37')]=moment(_0x4e75e3[_0x9217('0x2c')])[_0x9217('0x39')](0x1,_0x9217('0x38'));}_[_0x9217('0x3a')](_0x3d7cf5[_0x9217('0x35')],{'createdAt':{'$gte':_0x4e75e3[_0x9217('0x2c')],'$lte':_0x4e75e3[_0x9217('0x37')]}});}if(_0x1bdbff['query']['filter']){_0x3d7cf5['where']=_['merge'](_0x3d7cf5['where'],{'$or':_['map'](_0xe6795d,function(_0x58d40e){if(_0x58d40e['type']['key']!=='VIRTUAL'){var _0x2714cf={};_0x2714cf[_0x58d40e['field']]={'$like':'%'+_0x1bdbff[_0x9217('0x2d')][_0x9217('0x3b')]+'%'};return _0x2714cf;}})});}_0x3d7cf5=_['merge']({},_0x3d7cf5,_0x1bdbff[_0x9217('0x3c')]);var _0x4ca7f0={'where':_0x3d7cf5[_0x9217('0x35')]};return db[_0x9217('0x28')]['count'](_0x4ca7f0)[_0x9217('0x20')](function(_0x33030b){_0x336569[_0x9217('0x16')]=_0x33030b;if(_0x1bdbff[_0x9217('0x2d')][_0x9217('0x3d')]){_0x3d7cf5[_0x9217('0x3e')]=[{'all':!![]}];}return db[_0x9217('0x28')][_0x9217('0x3f')](_0x3d7cf5);})['then'](function(_0x574f01){_0x336569[_0x9217('0x40')]=_0x574f01;return _0x336569;})[_0x9217('0x20')](respondWithFilteredResult(_0xb1b77a,_0x3d7cf5))[_0x9217('0x41')](handleError(_0xb1b77a,null));};exports[_0x9217('0x42')]=function(_0x1610b0,_0x4199a4){var _0x455f18={'raw':![],'where':{'id':_0x1610b0[_0x9217('0x43')]['id']}},_0x345add={};_0x345add[_0x9217('0x2a')]=_[_0x9217('0x2b')](db['Trigger'][_0x9217('0x29')]);_0x345add[_0x9217('0x2d')]=_[_0x9217('0x2b')](_0x1610b0[_0x9217('0x2d')]);_0x345add[_0x9217('0x2e')]=_[_0x9217('0x2f')](_0x345add[_0x9217('0x2a')],_0x345add[_0x9217('0x2d')]);_0x455f18[_0x9217('0x30')]=_['intersection'](_0x345add[_0x9217('0x2a')],qs[_0x9217('0x31')](_0x1610b0[_0x9217('0x2d')]['fields']));_0x455f18[_0x9217('0x30')]=_0x455f18[_0x9217('0x30')][_0x9217('0x44')]?_0x455f18['attributes']:_0x345add[_0x9217('0x2a')];if(_0x1610b0[_0x9217('0x2d')]['includeAll']){_0x455f18[_0x9217('0x3e')]=[{'all':!![]}];}_0x455f18=_[_0x9217('0x3a')]({},_0x455f18,_0x1610b0[_0x9217('0x3c')]);return db[_0x9217('0x28')][_0x9217('0x45')](_0x455f18)[_0x9217('0x20')](handleEntityNotFound(_0x4199a4,null))['then'](respondWithResult(_0x4199a4,null))[_0x9217('0x41')](handleError(_0x4199a4,null));};exports[_0x9217('0x46')]=function(_0x36e4e1,_0x19e91b){return db['Trigger'][_0x9217('0x46')](_0x36e4e1[_0x9217('0x47')],{})[_0x9217('0x20')](function(_0x753610){var _0x2f33b6=_0x36e4e1['user']['get']({'plain':!![]});if(!_0x2f33b6)throw new Error(_0x9217('0x48'));if(_0x2f33b6[_0x9217('0x49')]==='user'){var _0x241618=_0x753610['get']({'plain':!![]});var _0x48de4b=_0x9217('0x4a');return db[_0x9217('0x4b')]['find']({'where':{'name':_0x48de4b,'userProfileId':_0x2f33b6[_0x9217('0x4c')]},'raw':!![]})[_0x9217('0x20')](function(_0x134a96){if(_0x134a96&&_0x134a96[_0x9217('0x4d')]===0x0){return db['UserProfileResource'][_0x9217('0x46')]({'name':_0x241618[_0x9217('0x27')],'resourceId':_0x241618['id'],'type':_0x134a96[_0x9217('0x27')],'sectionId':_0x134a96['id']},{})['then'](function(){return _0x753610;});}else{return _0x753610;}})[_0x9217('0x41')](function(_0x2e73cc){logger[_0x9217('0x25')](_0x9217('0x4e'),_0x2e73cc);throw _0x2e73cc;});}return _0x753610;})[_0x9217('0x20')](respondWithResult(_0x19e91b,0xc9))[_0x9217('0x41')](handleError(_0x19e91b,null));};exports[_0x9217('0x1f')]=function(_0xe9f2d5,_0x5ac502){if(_0xe9f2d5[_0x9217('0x47')]['id']){delete _0xe9f2d5[_0x9217('0x47')]['id'];}return db[_0x9217('0x28')][_0x9217('0x45')]({'where':{'id':_0xe9f2d5[_0x9217('0x43')]['id']}})[_0x9217('0x20')](handleEntityNotFound(_0x5ac502,null))['then'](saveUpdates(_0xe9f2d5[_0x9217('0x47')],null))[_0x9217('0x20')](respondWithResult(_0x5ac502,null))[_0x9217('0x41')](handleError(_0x5ac502,null));};exports[_0x9217('0x21')]=function(_0x895776,_0x3e148a){return db[_0x9217('0x28')][_0x9217('0x45')]({'where':{'id':_0x895776['params']['id']}})[_0x9217('0x20')](handleEntityNotFound(_0x3e148a,null))[_0x9217('0x20')](removeEntity(_0x3e148a,null))[_0x9217('0x41')](handleError(_0x3e148a,null));};exports[_0x9217('0x4f')]=function(_0xe3f32d,_0x19cac9,_0x34fbee){if(_0xe3f32d[_0x9217('0x47')]['id']){delete _0xe3f32d['body']['id'];}return db[_0x9217('0x28')][_0x9217('0x45')]({'where':{'id':_0xe3f32d[_0x9217('0x43')]['id']}})[_0x9217('0x20')](handleEntityNotFound(_0x19cac9,null))[_0x9217('0x20')](function(_0x294b30){if(_0x294b30){_0xe3f32d['body']['TriggerAllId']=_0x294b30['id'];return db[_0x9217('0x50')][_0x9217('0x46')](_0xe3f32d['body']);}})[_0x9217('0x20')](respondWithResult(_0x19cac9,null))[_0x9217('0x41')](handleError(_0x19cac9,null));};exports[_0x9217('0x51')]=function(_0x345f19,_0x18bf92,_0x4e950a){if(_0x345f19['body']['id']){delete _0x345f19['body']['id'];}return db['Trigger'][_0x9217('0x45')]({'where':{'id':_0x345f19[_0x9217('0x43')]['id']}})[_0x9217('0x20')](handleEntityNotFound(_0x18bf92,null))[_0x9217('0x20')](function(_0xf3593d){if(_0xf3593d){_0x345f19[_0x9217('0x47')][_0x9217('0x52')]=_0xf3593d['id'];return db[_0x9217('0x50')][_0x9217('0x46')](_0x345f19[_0x9217('0x47')]);}})[_0x9217('0x20')](respondWithResult(_0x18bf92,null))[_0x9217('0x41')](handleError(_0x18bf92,null));};exports['getAllConditions']=function(_0x48820f,_0x17f649,_0x4292ca){var _0x19e94f={};var _0x472523={};var _0x3278c0;var _0x4818c7;return db[_0x9217('0x28')][_0x9217('0x53')]({'where':{'id':_0x48820f[_0x9217('0x43')]['id']}})[_0x9217('0x20')](handleEntityNotFound(_0x17f649,null))[_0x9217('0x20')](function(_0x402e86){if(_0x402e86){_0x3278c0=_0x402e86;_0x472523[_0x9217('0x2a')]=_['keys'](db['Condition'][_0x9217('0x29')]);_0x472523[_0x9217('0x2d')]=_[_0x9217('0x2b')](_0x48820f[_0x9217('0x2d')]);_0x472523['filters']=_[_0x9217('0x2f')](_0x472523[_0x9217('0x2a')],_0x472523[_0x9217('0x2d')]);_0x19e94f[_0x9217('0x30')]=_['intersection'](_0x472523[_0x9217('0x2a')],qs[_0x9217('0x31')](_0x48820f[_0x9217('0x2d')]['fields']));_0x19e94f[_0x9217('0x30')]=_0x19e94f[_0x9217('0x30')][_0x9217('0x44')]?_0x19e94f[_0x9217('0x30')]:_0x472523['model'];_0x19e94f[_0x9217('0x33')]=qs[_0x9217('0x34')](_0x48820f[_0x9217('0x2d')][_0x9217('0x34')]);_0x19e94f[_0x9217('0x35')]=qs[_0x9217('0x2e')](_['pick'](_0x48820f[_0x9217('0x2d')],_0x472523[_0x9217('0x2e')]));if(_0x48820f['query'][_0x9217('0x3b')]){_0x19e94f[_0x9217('0x35')]=_['merge'](_0x19e94f[_0x9217('0x35')],{'$or':_['map'](_0x19e94f[_0x9217('0x30')],function(_0x26d7f1){var _0x1d46c9={};_0x1d46c9[_0x26d7f1]={'$like':'%'+_0x48820f[_0x9217('0x2d')][_0x9217('0x3b')]+'%'};return _0x1d46c9;})});}_0x19e94f=_[_0x9217('0x3a')]({},_0x19e94f,_0x48820f[_0x9217('0x3c')]);return _0x3278c0[_0x9217('0x54')](_0x19e94f);}})[_0x9217('0x20')](function(_0x1e5bd4){if(_0x1e5bd4){_0x4818c7=_0x1e5bd4[_0x9217('0x44')];if(!_0x48820f['query'][_0x9217('0x55')](_0x9217('0x32'))){_0x19e94f[_0x9217('0x18')]=qs[_0x9217('0x18')](_0x48820f[_0x9217('0x2d')][_0x9217('0x18')]);_0x19e94f[_0x9217('0x17')]=qs[_0x9217('0x17')](_0x48820f[_0x9217('0x2d')][_0x9217('0x17')]);}return _0x3278c0[_0x9217('0x54')](_0x19e94f);}})[_0x9217('0x20')](function(_0x4c7035){if(_0x4c7035){return _0x4c7035?{'count':_0x4818c7,'rows':_0x4c7035}:null;}})['then'](respondWithResult(_0x17f649,null))[_0x9217('0x41')](handleError(_0x17f649,null));};exports['getAnyConditions']=function(_0x30769a,_0x351fe8,_0x27816c){var _0x427b94={};var _0x5a0050={};var _0x2813da;var _0x48cbeb;return db['Trigger'][_0x9217('0x53')]({'where':{'id':_0x30769a[_0x9217('0x43')]['id']}})[_0x9217('0x20')](handleEntityNotFound(_0x351fe8,null))['then'](function(_0xa1d606){if(_0xa1d606){_0x2813da=_0xa1d606;_0x5a0050[_0x9217('0x2a')]=_['keys'](db[_0x9217('0x50')]['rawAttributes']);_0x5a0050['query']=_[_0x9217('0x2b')](_0x30769a[_0x9217('0x2d')]);_0x5a0050[_0x9217('0x2e')]=_[_0x9217('0x2f')](_0x5a0050[_0x9217('0x2a')],_0x5a0050['query']);_0x427b94[_0x9217('0x30')]=_[_0x9217('0x2f')](_0x5a0050[_0x9217('0x2a')],qs[_0x9217('0x31')](_0x30769a['query'][_0x9217('0x31')]));_0x427b94['attributes']=_0x427b94['attributes']['length']?_0x427b94['attributes']:_0x5a0050[_0x9217('0x2a')];_0x427b94[_0x9217('0x33')]=qs['sort'](_0x30769a['query'][_0x9217('0x34')]);_0x427b94[_0x9217('0x35')]=qs[_0x9217('0x2e')](_[_0x9217('0x36')](_0x30769a[_0x9217('0x2d')],_0x5a0050[_0x9217('0x2e')]));if(_0x30769a[_0x9217('0x2d')]['filter']){_0x427b94[_0x9217('0x35')]=_[_0x9217('0x3a')](_0x427b94[_0x9217('0x35')],{'$or':_[_0x9217('0x56')](_0x427b94[_0x9217('0x30')],function(_0x293146){var _0x10b017={};_0x10b017[_0x293146]={'$like':'%'+_0x30769a['query']['filter']+'%'};return _0x10b017;})});}_0x427b94=_[_0x9217('0x3a')]({},_0x427b94,_0x30769a[_0x9217('0x3c')]);return _0x2813da[_0x9217('0x57')](_0x427b94);}})[_0x9217('0x20')](function(_0x1a72d4){if(_0x1a72d4){_0x48cbeb=_0x1a72d4[_0x9217('0x44')];if(!_0x30769a[_0x9217('0x2d')][_0x9217('0x55')](_0x9217('0x32'))){_0x427b94[_0x9217('0x18')]=qs[_0x9217('0x18')](_0x30769a[_0x9217('0x2d')][_0x9217('0x18')]);_0x427b94[_0x9217('0x17')]=qs[_0x9217('0x17')](_0x30769a[_0x9217('0x2d')][_0x9217('0x17')]);}return _0x2813da[_0x9217('0x57')](_0x427b94);}})['then'](function(_0x3faae9){if(_0x3faae9){return _0x3faae9?{'count':_0x48cbeb,'rows':_0x3faae9}:null;}})[_0x9217('0x20')](respondWithResult(_0x351fe8,null))['catch'](handleError(_0x351fe8,null));};exports[_0x9217('0x58')]=function(_0x52355b,_0x351e8a,_0x5ef7a9){if(_0x52355b['body']['id']){delete _0x52355b[_0x9217('0x47')]['id'];}return db[_0x9217('0x28')][_0x9217('0x45')]({'where':{'id':_0x52355b[_0x9217('0x43')]['id']}})[_0x9217('0x20')](handleEntityNotFound(_0x351e8a,null))[_0x9217('0x20')](function(_0x2d30ff){if(_0x2d30ff){_0x52355b[_0x9217('0x47')][_0x9217('0x59')]=_0x2d30ff['id'];return db[_0x9217('0x5a')][_0x9217('0x46')](_0x52355b['body']);}})[_0x9217('0x20')](respondWithResult(_0x351e8a,null))['catch'](handleError(_0x351e8a,null));};exports[_0x9217('0x5b')]=function(_0x37f007,_0x499f71,_0x2c556d){var _0x5660aa={};var _0x572f07={};var _0x491727;var _0x2555e1;return db[_0x9217('0x28')][_0x9217('0x53')]({'where':{'id':_0x37f007['params']['id']}})[_0x9217('0x20')](handleEntityNotFound(_0x499f71,null))[_0x9217('0x20')](function(_0x21aa63){if(_0x21aa63){_0x491727=_0x21aa63;_0x572f07[_0x9217('0x2a')]=_[_0x9217('0x2b')](db['Action'][_0x9217('0x29')]);_0x572f07['query']=_[_0x9217('0x2b')](_0x37f007['query']);_0x572f07[_0x9217('0x2e')]=_[_0x9217('0x2f')](_0x572f07[_0x9217('0x2a')],_0x572f07[_0x9217('0x2d')]);_0x5660aa[_0x9217('0x30')]=_['intersection'](_0x572f07['model'],qs[_0x9217('0x31')](_0x37f007['query'][_0x9217('0x31')]));_0x5660aa[_0x9217('0x30')]=_0x5660aa['attributes']['length']?_0x5660aa[_0x9217('0x30')]:_0x572f07[_0x9217('0x2a')];_0x5660aa[_0x9217('0x33')]=qs['sort'](_0x37f007[_0x9217('0x2d')][_0x9217('0x34')]);_0x5660aa[_0x9217('0x35')]=qs['filters'](_[_0x9217('0x36')](_0x37f007[_0x9217('0x2d')],_0x572f07[_0x9217('0x2e')]));if(_0x37f007[_0x9217('0x2d')][_0x9217('0x3b')]){_0x5660aa['where']=_[_0x9217('0x3a')](_0x5660aa['where'],{'$or':_['map'](_0x5660aa[_0x9217('0x30')],function(_0x41e49c){var _0x1ef5ef={};_0x1ef5ef[_0x41e49c]={'$like':'%'+_0x37f007[_0x9217('0x2d')][_0x9217('0x3b')]+'%'};return _0x1ef5ef;})});}_0x5660aa=_[_0x9217('0x3a')]({},_0x5660aa,_0x37f007[_0x9217('0x3c')]);return _0x491727['getActions'](_0x5660aa);}})[_0x9217('0x20')](function(_0x1e4e74){if(_0x1e4e74){_0x2555e1=_0x1e4e74[_0x9217('0x44')];if(!_0x37f007[_0x9217('0x2d')][_0x9217('0x55')](_0x9217('0x32'))){_0x5660aa[_0x9217('0x18')]=qs[_0x9217('0x18')](_0x37f007[_0x9217('0x2d')][_0x9217('0x18')]);_0x5660aa[_0x9217('0x17')]=qs[_0x9217('0x17')](_0x37f007['query'][_0x9217('0x17')]);}return _0x491727['getActions'](_0x5660aa);}})['then'](function(_0x3f7d0a){if(_0x3f7d0a){return _0x3f7d0a?{'count':_0x2555e1,'rows':_0x3f7d0a}:null;}})['then'](respondWithResult(_0x499f71,null))[_0x9217('0x41')](handleError(_0x499f71,null));};
\ No newline at end of file
+var _0x2626=['count','offset','limit','apply','reject','save','update','destroy','then','get','Triggers','UserProfileResource','error','stack','send','rawAttributes','query','dateStart','dateEnd','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','pick','add','day','merge','where','filter','map','key','VIRTUAL','field','options','includeAll','include','Trigger','rows','catch','show','params','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','nolimit','getAnyConditions','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json'];(function(_0x404d41,_0xd7d0ea){var _0x3dd5a3=function(_0x4cdda7){while(--_0x4cdda7){_0x404d41['push'](_0x404d41['shift']());}};_0x3dd5a3(++_0xd7d0ea);}(_0x2626,0x159));var _0x6262=function(_0x4ac9b1,_0x2f7e72){_0x4ac9b1=_0x4ac9b1-0x0;var _0x3f2978=_0x2626[_0x4ac9b1];return _0x3f2978;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x6262('0x0'));var rimraf=require(_0x6262('0x1'));var zipdir=require(_0x6262('0x2'));var jsonpatch=require(_0x6262('0x3'));var rp=require(_0x6262('0x4'));var moment=require(_0x6262('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6262('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x6262('0x7'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x6262('0x8'));var crypto=require(_0x6262('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x6262('0xa'));var toCsv=require('to-csv');var querystring=require(_0x6262('0xb'));var Papa=require(_0x6262('0xc'));var Redis=require(_0x6262('0xd'));var qs=require(_0x6262('0xe'));var logger=require('../../config/logger')(_0x6262('0xf'));var utils=require(_0x6262('0x10'));var config=require(_0x6262('0x11'));var db=require(_0x6262('0x12'))['db'];function respondWithStatusCode(_0x309e20,_0x36d077){_0x36d077=_0x36d077||0xcc;return function(_0x495cbe){if(_0x495cbe){return _0x309e20[_0x6262('0x13')](_0x36d077);}return _0x309e20['status'](_0x36d077)[_0x6262('0x14')]();};}function respondWithResult(_0x2c4a84,_0x2e3749){_0x2e3749=_0x2e3749||0xc8;return function(_0x5803cf){if(_0x5803cf){return _0x2c4a84[_0x6262('0x15')](_0x2e3749)[_0x6262('0x16')](_0x5803cf);}};}function respondWithFilteredResult(_0x532078,_0x3e6301){return function(_0x3ab6db){if(_0x3ab6db){var _0x3295a1=_0x3ab6db[_0x6262('0x17')],_0x2f1733=_0x3e6301[_0x6262('0x18')],_0x2e23c5=_0x3e6301[_0x6262('0x18')]+_0x3e6301[_0x6262('0x19')],_0x42a253;if(_0x2e23c5>=_0x3295a1){_0x2e23c5=_0x3295a1;_0x42a253=0xc8;}else{_0x42a253=0xce;}_0x532078[_0x6262('0x15')](_0x42a253);return _0x532078['set']('Content-Range',_0x2f1733+'-'+_0x2e23c5+'/'+_0x3295a1)[_0x6262('0x16')](_0x3ab6db);}return null;};}function patchUpdates(_0x37b911){return function(_0x42a6f3){try{jsonpatch[_0x6262('0x1a')](_0x42a6f3,_0x37b911,!![]);}catch(_0x211d60){return BPromise[_0x6262('0x1b')](_0x211d60);}return _0x42a6f3[_0x6262('0x1c')]();};}function saveUpdates(_0x1fa427,_0x45b4bb){return function(_0x5be745){if(_0x5be745){return _0x5be745[_0x6262('0x1d')](_0x1fa427)['then'](function(_0x1ee816){return _0x1ee816;});}return null;};}function removeEntity(_0x183add,_0x5a7da0){return function(_0x38a2f9){if(_0x38a2f9){return _0x38a2f9[_0x6262('0x1e')]()[_0x6262('0x1f')](function(){var _0xd82c12=_0x38a2f9[_0x6262('0x20')]({'plain':!![]});var _0x9cfee1=_0x6262('0x21');return db[_0x6262('0x22')][_0x6262('0x1e')]({'where':{'type':_0x9cfee1,'resourceId':_0xd82c12['id']}})[_0x6262('0x1f')](function(){return _0x38a2f9;});})[_0x6262('0x1f')](function(){_0x183add[_0x6262('0x15')](0xcc)[_0x6262('0x14')]();});}};}function handleEntityNotFound(_0x52a2ca,_0x221113){return function(_0x2206a7){if(!_0x2206a7){_0x52a2ca['sendStatus'](0x194);}return _0x2206a7;};}function handleError(_0xf2020b,_0x420706){_0x420706=_0x420706||0x1f4;return function(_0x1cf3d6){logger[_0x6262('0x23')](_0x1cf3d6[_0x6262('0x24')]);if(_0x1cf3d6['name']){delete _0x1cf3d6['name'];}_0xf2020b[_0x6262('0x15')](_0x420706)[_0x6262('0x25')](_0x1cf3d6);};}exports['index']=function(_0x3939d8,_0x2acb13){var _0x56e367={},_0x4f1094={},_0x1868cf={'count':0x0,'rows':[]};var _0x404949=db['Trigger'][_0x6262('0x26')];_0x4f1094['model']=_['keys'](_0x404949);var _0x2b0ac2={'dateStart':_0x3939d8[_0x6262('0x27')][_0x6262('0x28')],'dateEnd':_0x3939d8[_0x6262('0x27')][_0x6262('0x29')]};delete _0x3939d8[_0x6262('0x27')][_0x6262('0x28')];delete _0x3939d8[_0x6262('0x27')]['dateEnd'];_0x4f1094[_0x6262('0x27')]=_[_0x6262('0x2a')](_0x3939d8[_0x6262('0x27')]);_0x4f1094[_0x6262('0x2b')]=_[_0x6262('0x2c')](_0x4f1094['model'],_0x4f1094[_0x6262('0x27')]);_0x56e367[_0x6262('0x2d')]=_['intersection'](_0x4f1094[_0x6262('0x2e')],qs[_0x6262('0x2f')](_0x3939d8[_0x6262('0x27')][_0x6262('0x2f')]));_0x56e367[_0x6262('0x2d')]=_0x56e367[_0x6262('0x2d')][_0x6262('0x30')]?_0x56e367[_0x6262('0x2d')]:_0x4f1094[_0x6262('0x2e')];if(!_0x3939d8['query'][_0x6262('0x31')]('nolimit')){_0x56e367[_0x6262('0x19')]=qs[_0x6262('0x19')](_0x3939d8[_0x6262('0x27')][_0x6262('0x19')]);_0x56e367['offset']=qs[_0x6262('0x18')](_0x3939d8['query']['offset']);}_0x56e367[_0x6262('0x32')]=qs['sort'](_0x3939d8[_0x6262('0x27')][_0x6262('0x33')]);_0x56e367['where']=qs[_0x6262('0x2b')](_[_0x6262('0x34')](_0x3939d8['query'],_0x4f1094[_0x6262('0x2b')]));if(_0x2b0ac2['dateStart']){if(_0x2b0ac2[_0x6262('0x29')]){_0x2b0ac2[_0x6262('0x29')]=moment(_0x2b0ac2[_0x6262('0x29')])[_0x6262('0x35')](0x1,_0x6262('0x36'));}else{_0x2b0ac2[_0x6262('0x29')]=moment(_0x2b0ac2[_0x6262('0x28')])[_0x6262('0x35')](0x1,_0x6262('0x36'));}_[_0x6262('0x37')](_0x56e367[_0x6262('0x38')],{'createdAt':{'$gte':_0x2b0ac2['dateStart'],'$lte':_0x2b0ac2[_0x6262('0x29')]}});}if(_0x3939d8[_0x6262('0x27')][_0x6262('0x39')]){_0x56e367['where']=_[_0x6262('0x37')](_0x56e367[_0x6262('0x38')],{'$or':_[_0x6262('0x3a')](_0x404949,function(_0x59befe){if(_0x59befe['type'][_0x6262('0x3b')]!==_0x6262('0x3c')){var _0xd37000={};_0xd37000[_0x59befe[_0x6262('0x3d')]]={'$like':'%'+_0x3939d8[_0x6262('0x27')][_0x6262('0x39')]+'%'};return _0xd37000;}})});}_0x56e367=_['merge']({},_0x56e367,_0x3939d8[_0x6262('0x3e')]);var _0x3b686d={'where':_0x56e367[_0x6262('0x38')]};return db['Trigger'][_0x6262('0x17')](_0x3b686d)['then'](function(_0x3477ab){_0x1868cf[_0x6262('0x17')]=_0x3477ab;if(_0x3939d8[_0x6262('0x27')][_0x6262('0x3f')]){_0x56e367[_0x6262('0x40')]=[{'all':!![]}];}return db[_0x6262('0x41')]['findAll'](_0x56e367);})['then'](function(_0x1c1790){_0x1868cf[_0x6262('0x42')]=_0x1c1790;return _0x1868cf;})[_0x6262('0x1f')](respondWithFilteredResult(_0x2acb13,_0x56e367))[_0x6262('0x43')](handleError(_0x2acb13,null));};exports[_0x6262('0x44')]=function(_0x14e4be,_0x41ebc3){var _0x4b92e0={'raw':![],'where':{'id':_0x14e4be[_0x6262('0x45')]['id']}},_0x34284f={};_0x34284f['model']=_['keys'](db[_0x6262('0x41')]['rawAttributes']);_0x34284f[_0x6262('0x27')]=_[_0x6262('0x2a')](_0x14e4be['query']);_0x34284f['filters']=_[_0x6262('0x2c')](_0x34284f[_0x6262('0x2e')],_0x34284f[_0x6262('0x27')]);_0x4b92e0[_0x6262('0x2d')]=_['intersection'](_0x34284f['model'],qs[_0x6262('0x2f')](_0x14e4be[_0x6262('0x27')]['fields']));_0x4b92e0[_0x6262('0x2d')]=_0x4b92e0[_0x6262('0x2d')]['length']?_0x4b92e0[_0x6262('0x2d')]:_0x34284f[_0x6262('0x2e')];if(_0x14e4be[_0x6262('0x27')][_0x6262('0x3f')]){_0x4b92e0['include']=[{'all':!![]}];}_0x4b92e0=_[_0x6262('0x37')]({},_0x4b92e0,_0x14e4be['options']);return db['Trigger']['find'](_0x4b92e0)[_0x6262('0x1f')](handleEntityNotFound(_0x41ebc3,null))[_0x6262('0x1f')](respondWithResult(_0x41ebc3,null))['catch'](handleError(_0x41ebc3,null));};exports[_0x6262('0x46')]=function(_0x31d6f0,_0x1b2e63){return db[_0x6262('0x41')]['create'](_0x31d6f0['body'],{})[_0x6262('0x1f')](function(_0x20bab4){var _0x3a4e86=_0x31d6f0[_0x6262('0x47')]['get']({'plain':!![]});if(!_0x3a4e86)throw new Error(_0x6262('0x48'));if(_0x3a4e86[_0x6262('0x49')]===_0x6262('0x47')){var _0xc5642a=_0x20bab4[_0x6262('0x20')]({'plain':!![]});var _0x5491f3=_0x6262('0x21');return db[_0x6262('0x4a')][_0x6262('0x4b')]({'where':{'name':_0x5491f3,'userProfileId':_0x3a4e86[_0x6262('0x4c')]},'raw':!![]})[_0x6262('0x1f')](function(_0x38ef80){if(_0x38ef80&&_0x38ef80[_0x6262('0x4d')]===0x0){return db[_0x6262('0x22')]['create']({'name':_0xc5642a[_0x6262('0x4e')],'resourceId':_0xc5642a['id'],'type':_0x38ef80['name'],'sectionId':_0x38ef80['id']},{})[_0x6262('0x1f')](function(){return _0x20bab4;});}else{return _0x20bab4;}})[_0x6262('0x43')](function(_0x1a90ad){logger['error'](_0x6262('0x4f'),_0x1a90ad);throw _0x1a90ad;});}return _0x20bab4;})[_0x6262('0x1f')](respondWithResult(_0x1b2e63,0xc9))[_0x6262('0x43')](handleError(_0x1b2e63,null));};exports[_0x6262('0x1d')]=function(_0x3af6d4,_0x4ffb44){if(_0x3af6d4[_0x6262('0x50')]['id']){delete _0x3af6d4['body']['id'];}return db[_0x6262('0x41')][_0x6262('0x4b')]({'where':{'id':_0x3af6d4[_0x6262('0x45')]['id']}})[_0x6262('0x1f')](handleEntityNotFound(_0x4ffb44,null))['then'](saveUpdates(_0x3af6d4[_0x6262('0x50')],null))[_0x6262('0x1f')](respondWithResult(_0x4ffb44,null))['catch'](handleError(_0x4ffb44,null));};exports[_0x6262('0x1e')]=function(_0x2e0431,_0x577a7f){return db['Trigger'][_0x6262('0x4b')]({'where':{'id':_0x2e0431['params']['id']}})[_0x6262('0x1f')](handleEntityNotFound(_0x577a7f,null))[_0x6262('0x1f')](removeEntity(_0x577a7f,null))[_0x6262('0x43')](handleError(_0x577a7f,null));};exports['addAllCondition']=function(_0x272abc,_0x3c732f,_0x553f36){if(_0x272abc['body']['id']){delete _0x272abc[_0x6262('0x50')]['id'];}return db[_0x6262('0x41')]['find']({'where':{'id':_0x272abc['params']['id']}})[_0x6262('0x1f')](handleEntityNotFound(_0x3c732f,null))['then'](function(_0x595b03){if(_0x595b03){_0x272abc['body'][_0x6262('0x51')]=_0x595b03['id'];return db[_0x6262('0x52')][_0x6262('0x46')](_0x272abc['body']);}})[_0x6262('0x1f')](respondWithResult(_0x3c732f,null))[_0x6262('0x43')](handleError(_0x3c732f,null));};exports[_0x6262('0x53')]=function(_0x3eb496,_0x3c47d2,_0x25a7e8){if(_0x3eb496['body']['id']){delete _0x3eb496[_0x6262('0x50')]['id'];}return db['Trigger']['find']({'where':{'id':_0x3eb496[_0x6262('0x45')]['id']}})[_0x6262('0x1f')](handleEntityNotFound(_0x3c47d2,null))[_0x6262('0x1f')](function(_0x30bb65){if(_0x30bb65){_0x3eb496[_0x6262('0x50')][_0x6262('0x54')]=_0x30bb65['id'];return db[_0x6262('0x52')]['create'](_0x3eb496['body']);}})[_0x6262('0x1f')](respondWithResult(_0x3c47d2,null))[_0x6262('0x43')](handleError(_0x3c47d2,null));};exports[_0x6262('0x55')]=function(_0x101a1c,_0x145355,_0xd0d9f8){var _0x4398c3={};var _0x18682a={};var _0xf1a62a;var _0x4a6d7a;return db[_0x6262('0x41')][_0x6262('0x56')]({'where':{'id':_0x101a1c[_0x6262('0x45')]['id']}})[_0x6262('0x1f')](handleEntityNotFound(_0x145355,null))[_0x6262('0x1f')](function(_0xca6002){if(_0xca6002){_0xf1a62a=_0xca6002;_0x18682a[_0x6262('0x2e')]=_['keys'](db[_0x6262('0x52')][_0x6262('0x26')]);_0x18682a[_0x6262('0x27')]=_[_0x6262('0x2a')](_0x101a1c['query']);_0x18682a[_0x6262('0x2b')]=_['intersection'](_0x18682a[_0x6262('0x2e')],_0x18682a[_0x6262('0x27')]);_0x4398c3['attributes']=_[_0x6262('0x2c')](_0x18682a[_0x6262('0x2e')],qs[_0x6262('0x2f')](_0x101a1c[_0x6262('0x27')]['fields']));_0x4398c3[_0x6262('0x2d')]=_0x4398c3[_0x6262('0x2d')]['length']?_0x4398c3[_0x6262('0x2d')]:_0x18682a[_0x6262('0x2e')];_0x4398c3[_0x6262('0x32')]=qs[_0x6262('0x33')](_0x101a1c[_0x6262('0x27')][_0x6262('0x33')]);_0x4398c3[_0x6262('0x38')]=qs[_0x6262('0x2b')](_[_0x6262('0x34')](_0x101a1c[_0x6262('0x27')],_0x18682a[_0x6262('0x2b')]));if(_0x101a1c['query'][_0x6262('0x39')]){_0x4398c3[_0x6262('0x38')]=_['merge'](_0x4398c3['where'],{'$or':_[_0x6262('0x3a')](_0x4398c3[_0x6262('0x2d')],function(_0x1c5e89){var _0x4e29a0={};_0x4e29a0[_0x1c5e89]={'$like':'%'+_0x101a1c['query']['filter']+'%'};return _0x4e29a0;})});}_0x4398c3=_[_0x6262('0x37')]({},_0x4398c3,_0x101a1c['options']);return _0xf1a62a['getAllConditions'](_0x4398c3);}})['then'](function(_0x24eb09){if(_0x24eb09){_0x4a6d7a=_0x24eb09[_0x6262('0x30')];if(!_0x101a1c[_0x6262('0x27')]['hasOwnProperty'](_0x6262('0x57'))){_0x4398c3[_0x6262('0x19')]=qs[_0x6262('0x19')](_0x101a1c[_0x6262('0x27')][_0x6262('0x19')]);_0x4398c3[_0x6262('0x18')]=qs['offset'](_0x101a1c[_0x6262('0x27')][_0x6262('0x18')]);}return _0xf1a62a['getAllConditions'](_0x4398c3);}})[_0x6262('0x1f')](function(_0x34b9d9){if(_0x34b9d9){return _0x34b9d9?{'count':_0x4a6d7a,'rows':_0x34b9d9}:null;}})[_0x6262('0x1f')](respondWithResult(_0x145355,null))[_0x6262('0x43')](handleError(_0x145355,null));};exports[_0x6262('0x58')]=function(_0x420bd0,_0x5267e7,_0x41dfde){var _0x1f28a2={};var _0x2759be={};var _0x38f435;var _0x2b6d82;return db[_0x6262('0x41')][_0x6262('0x56')]({'where':{'id':_0x420bd0[_0x6262('0x45')]['id']}})[_0x6262('0x1f')](handleEntityNotFound(_0x5267e7,null))[_0x6262('0x1f')](function(_0x486999){if(_0x486999){_0x38f435=_0x486999;_0x2759be[_0x6262('0x2e')]=_[_0x6262('0x2a')](db[_0x6262('0x52')]['rawAttributes']);_0x2759be[_0x6262('0x27')]=_['keys'](_0x420bd0[_0x6262('0x27')]);_0x2759be['filters']=_['intersection'](_0x2759be[_0x6262('0x2e')],_0x2759be[_0x6262('0x27')]);_0x1f28a2[_0x6262('0x2d')]=_[_0x6262('0x2c')](_0x2759be['model'],qs['fields'](_0x420bd0[_0x6262('0x27')][_0x6262('0x2f')]));_0x1f28a2[_0x6262('0x2d')]=_0x1f28a2[_0x6262('0x2d')][_0x6262('0x30')]?_0x1f28a2[_0x6262('0x2d')]:_0x2759be['model'];_0x1f28a2['order']=qs[_0x6262('0x33')](_0x420bd0[_0x6262('0x27')][_0x6262('0x33')]);_0x1f28a2[_0x6262('0x38')]=qs['filters'](_['pick'](_0x420bd0[_0x6262('0x27')],_0x2759be[_0x6262('0x2b')]));if(_0x420bd0[_0x6262('0x27')][_0x6262('0x39')]){_0x1f28a2[_0x6262('0x38')]=_[_0x6262('0x37')](_0x1f28a2['where'],{'$or':_['map'](_0x1f28a2[_0x6262('0x2d')],function(_0x335e7b){var _0x1ce3c2={};_0x1ce3c2[_0x335e7b]={'$like':'%'+_0x420bd0['query'][_0x6262('0x39')]+'%'};return _0x1ce3c2;})});}_0x1f28a2=_[_0x6262('0x37')]({},_0x1f28a2,_0x420bd0[_0x6262('0x3e')]);return _0x38f435[_0x6262('0x58')](_0x1f28a2);}})[_0x6262('0x1f')](function(_0x5636f9){if(_0x5636f9){_0x2b6d82=_0x5636f9[_0x6262('0x30')];if(!_0x420bd0['query'][_0x6262('0x31')](_0x6262('0x57'))){_0x1f28a2['limit']=qs[_0x6262('0x19')](_0x420bd0[_0x6262('0x27')]['limit']);_0x1f28a2['offset']=qs[_0x6262('0x18')](_0x420bd0['query'][_0x6262('0x18')]);}return _0x38f435[_0x6262('0x58')](_0x1f28a2);}})['then'](function(_0x11e8b6){if(_0x11e8b6){return _0x11e8b6?{'count':_0x2b6d82,'rows':_0x11e8b6}:null;}})[_0x6262('0x1f')](respondWithResult(_0x5267e7,null))[_0x6262('0x43')](handleError(_0x5267e7,null));};exports['addAction']=function(_0x341eb5,_0x50ca56,_0x189d86){if(_0x341eb5['body']['id']){delete _0x341eb5['body']['id'];}return db[_0x6262('0x41')][_0x6262('0x4b')]({'where':{'id':_0x341eb5[_0x6262('0x45')]['id']}})[_0x6262('0x1f')](handleEntityNotFound(_0x50ca56,null))[_0x6262('0x1f')](function(_0x233014){if(_0x233014){_0x341eb5[_0x6262('0x50')][_0x6262('0x59')]=_0x233014['id'];return db[_0x6262('0x5a')]['create'](_0x341eb5['body']);}})[_0x6262('0x1f')](respondWithResult(_0x50ca56,null))['catch'](handleError(_0x50ca56,null));};exports[_0x6262('0x5b')]=function(_0xd09e8d,_0x37817b,_0x8f0948){var _0x2e6277={};var _0x3fd67b={};var _0x24d5b9;var _0x1b016b;return db['Trigger'][_0x6262('0x56')]({'where':{'id':_0xd09e8d[_0x6262('0x45')]['id']}})['then'](handleEntityNotFound(_0x37817b,null))[_0x6262('0x1f')](function(_0x4a9371){if(_0x4a9371){_0x24d5b9=_0x4a9371;_0x3fd67b[_0x6262('0x2e')]=_['keys'](db['Action'][_0x6262('0x26')]);_0x3fd67b[_0x6262('0x27')]=_[_0x6262('0x2a')](_0xd09e8d[_0x6262('0x27')]);_0x3fd67b[_0x6262('0x2b')]=_[_0x6262('0x2c')](_0x3fd67b['model'],_0x3fd67b['query']);_0x2e6277['attributes']=_[_0x6262('0x2c')](_0x3fd67b['model'],qs[_0x6262('0x2f')](_0xd09e8d[_0x6262('0x27')][_0x6262('0x2f')]));_0x2e6277[_0x6262('0x2d')]=_0x2e6277[_0x6262('0x2d')][_0x6262('0x30')]?_0x2e6277['attributes']:_0x3fd67b['model'];_0x2e6277[_0x6262('0x32')]=qs['sort'](_0xd09e8d[_0x6262('0x27')][_0x6262('0x33')]);_0x2e6277[_0x6262('0x38')]=qs[_0x6262('0x2b')](_[_0x6262('0x34')](_0xd09e8d[_0x6262('0x27')],_0x3fd67b[_0x6262('0x2b')]));if(_0xd09e8d[_0x6262('0x27')][_0x6262('0x39')]){_0x2e6277[_0x6262('0x38')]=_[_0x6262('0x37')](_0x2e6277['where'],{'$or':_[_0x6262('0x3a')](_0x2e6277[_0x6262('0x2d')],function(_0x4e36a6){var _0x140570={};_0x140570[_0x4e36a6]={'$like':'%'+_0xd09e8d[_0x6262('0x27')][_0x6262('0x39')]+'%'};return _0x140570;})});}_0x2e6277=_[_0x6262('0x37')]({},_0x2e6277,_0xd09e8d[_0x6262('0x3e')]);return _0x24d5b9['getActions'](_0x2e6277);}})[_0x6262('0x1f')](function(_0x446fb9){if(_0x446fb9){_0x1b016b=_0x446fb9[_0x6262('0x30')];if(!_0xd09e8d['query'][_0x6262('0x31')](_0x6262('0x57'))){_0x2e6277['limit']=qs[_0x6262('0x19')](_0xd09e8d[_0x6262('0x27')]['limit']);_0x2e6277['offset']=qs[_0x6262('0x18')](_0xd09e8d[_0x6262('0x27')][_0x6262('0x18')]);}return _0x24d5b9[_0x6262('0x5b')](_0x2e6277);}})[_0x6262('0x1f')](function(_0x4ec566){if(_0x4ec566){return _0x4ec566?{'count':_0x1b016b,'rows':_0x4ec566}:null;}})[_0x6262('0x1f')](respondWithResult(_0x37817b,null))[_0x6262('0x43')](handleError(_0x37817b,null));};
\ No newline at end of file
index 67044bd..a518552 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7bd=['request-promise','./trigger.attributes','exports','define','Trigger','tools_triggers','lodash','util','moment','bluebird'];(function(_0x2f01c5,_0x3db3de){var _0x8e8c2=function(_0x3373bd){while(--_0x3373bd){_0x2f01c5['push'](_0x2f01c5['shift']());}};_0x8e8c2(++_0x3db3de);}(_0xe7bd,0xec));var _0xde7b=function(_0x356e8d,_0x24c719){_0x356e8d=_0x356e8d-0x0;var _0x39e65a=_0xe7bd[_0x356e8d];return _0x39e65a;};'use strict';var _=require(_0xde7b('0x0'));var util=require(_0xde7b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xde7b('0x2'));var BPromise=require(_0xde7b('0x3'));var rp=require(_0xde7b('0x4'));var attributes=require(_0xde7b('0x5'));module[_0xde7b('0x6')]=function(_0x16953d,_0x45dc5e){return _0x16953d[_0xde7b('0x7')](_0xde7b('0x8'),attributes,{'tableName':_0xde7b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x33ef=['request-promise','./trigger.attributes','exports','define','Trigger','tools_triggers','lodash','util','../../config/logger','api'];(function(_0x7ad661,_0x1e4efa){var _0x363e14=function(_0x507439){while(--_0x507439){_0x7ad661['push'](_0x7ad661['shift']());}};_0x363e14(++_0x1e4efa);}(_0x33ef,0x1be));var _0xf33e=function(_0x4c7dc9,_0x30c45d){_0x4c7dc9=_0x4c7dc9-0x0;var _0x47091b=_0x33ef[_0x4c7dc9];return _0x47091b;};'use strict';var _=require(_0xf33e('0x0'));var util=require(_0xf33e('0x1'));var logger=require(_0xf33e('0x2'))(_0xf33e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf33e('0x4'));var attributes=require(_0xf33e('0x5'));module[_0xf33e('0x6')]=function(_0x18f0f6,_0x11729a){return _0x18f0f6[_0xf33e('0x7')](_0xf33e('0x8'),attributes,{'tableName':_0xf33e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 04cc67d..fae2054 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe702=['ShowTrigger','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetTrigger','Trigger','findAll','options','where','attributes','limit','include','map','model'];(function(_0x4099bf,_0x3ed802){var _0xca6c95=function(_0x317a58){while(--_0x317a58){_0x4099bf['push'](_0x4099bf['shift']());}};_0xca6c95(++_0x3ed802);}(_0xe702,0xc8));var _0x2e70=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xe702[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x2e70('0x0'));var util=require(_0x2e70('0x1'));var moment=require('moment');var BPromise=require(_0x2e70('0x2'));var rs=require(_0x2e70('0x3'));var fs=require('fs');var Redis=require(_0x2e70('0x4'));var db=require(_0x2e70('0x5'))['db'];var utils=require(_0x2e70('0x6'));var logger=require('../../config/logger')(_0x2e70('0x7'));var config=require(_0x2e70('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2e70('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3498c7,_0x1654a2,_0x110ca6){return new BPromise(function(_0x4c5516,_0x279621){return client[_0x2e70('0xa')](_0x3498c7,_0x110ca6)['then'](function(_0x4f4347){logger[_0x2e70('0xb')](_0x2e70('0xc'),_0x1654a2,_0x2e70('0xd'));logger[_0x2e70('0xe')]('Trigger,\x20%s,\x20%s,\x20%s',_0x1654a2,'request\x20sent',JSON[_0x2e70('0xf')](_0x4f4347));if(_0x4f4347[_0x2e70('0x10')]){if(_0x4f4347[_0x2e70('0x10')][_0x2e70('0x11')]===0x1f4){logger['error'](_0x2e70('0xc'),_0x1654a2,_0x4f4347[_0x2e70('0x10')]['message']);return _0x279621(_0x4f4347[_0x2e70('0x10')][_0x2e70('0x12')]);}logger[_0x2e70('0x10')](_0x2e70('0xc'),_0x1654a2,_0x4f4347[_0x2e70('0x10')][_0x2e70('0x12')]);return _0x4c5516(_0x4f4347[_0x2e70('0x10')]['message']);}else{logger[_0x2e70('0xb')](_0x2e70('0xc'),_0x1654a2,_0x2e70('0xd'));_0x4c5516(_0x4f4347[_0x2e70('0x13')][_0x2e70('0x12')]);}})[_0x2e70('0x14')](function(_0x3b7b1f){logger['error'](_0x2e70('0xc'),_0x1654a2,_0x3b7b1f);_0x279621(_0x3b7b1f);});});}exports[_0x2e70('0x15')]=function(_0x50866f){var _0x5d2658=this;return new Promise(function(_0x2f6ff1,_0x59ebd9){return db[_0x2e70('0x16')][_0x2e70('0x17')]({'raw':_0x50866f[_0x2e70('0x18')]?_0x50866f[_0x2e70('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x50866f[_0x2e70('0x18')]?_0x50866f['options'][_0x2e70('0x19')]||null:null,'attributes':_0x50866f[_0x2e70('0x18')]?_0x50866f[_0x2e70('0x18')][_0x2e70('0x1a')]||null:null,'limit':_0x50866f['options']?_0x50866f[_0x2e70('0x18')][_0x2e70('0x1b')]||null:null,'include':_0x50866f[_0x2e70('0x18')]?_0x50866f[_0x2e70('0x18')][_0x2e70('0x1c')]?_[_0x2e70('0x1d')](_0x50866f['options']['include'],function(_0x3e80ab){return{'model':db[_0x3e80ab[_0x2e70('0x1e')]],'as':_0x3e80ab['as'],'attributes':_0x3e80ab['attributes'],'include':_0x3e80ab[_0x2e70('0x1c')]?_[_0x2e70('0x1d')](_0x3e80ab[_0x2e70('0x1c')],function(_0x29b28b){return{'model':db[_0x29b28b[_0x2e70('0x1e')]],'as':_0x29b28b['as'],'attributes':_0x29b28b[_0x2e70('0x1a')],'include':_0x29b28b[_0x2e70('0x1c')]?_[_0x2e70('0x1d')](_0x29b28b[_0x2e70('0x1c')],function(_0xa8f52){return{'model':db[_0xa8f52[_0x2e70('0x1e')]],'as':_0xa8f52['as'],'attributes':_0xa8f52['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x47c6f1){logger['info']('GetTrigger',_0x50866f);logger[_0x2e70('0xe')](_0x2e70('0x15'),_0x50866f,JSON[_0x2e70('0xf')](_0x47c6f1));_0x2f6ff1(_0x47c6f1);})[_0x2e70('0x14')](function(_0x295ee2){logger['error'](_0x2e70('0x15'),_0x295ee2[_0x2e70('0x12')],_0x50866f);_0x59ebd9(_0x5d2658['error'](0x1f4,_0x295ee2[_0x2e70('0x12')]));});});};exports[_0x2e70('0x1f')]=function(_0x1ddacc){var _0x188f40=this;return new Promise(function(_0x27c89a,_0x3ecd4a){return db[_0x2e70('0x16')][_0x2e70('0x20')]({'raw':_0x1ddacc[_0x2e70('0x18')]?_0x1ddacc[_0x2e70('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1ddacc[_0x2e70('0x18')]?_0x1ddacc['options'][_0x2e70('0x19')]||null:null,'attributes':_0x1ddacc[_0x2e70('0x18')]?_0x1ddacc[_0x2e70('0x18')][_0x2e70('0x1a')]||null:null,'include':_0x1ddacc[_0x2e70('0x18')]?_0x1ddacc[_0x2e70('0x18')][_0x2e70('0x1c')]?_[_0x2e70('0x1d')](_0x1ddacc['options'][_0x2e70('0x1c')],function(_0x91f128){return{'model':db[_0x91f128[_0x2e70('0x1e')]],'as':_0x91f128['as'],'attributes':_0x91f128[_0x2e70('0x1a')],'include':_0x91f128[_0x2e70('0x1c')]?_[_0x2e70('0x1d')](_0x91f128[_0x2e70('0x1c')],function(_0x1caae9){return{'model':db[_0x1caae9['model']],'as':_0x1caae9['as'],'attributes':_0x1caae9[_0x2e70('0x1a')],'include':_0x1caae9[_0x2e70('0x1c')]?_[_0x2e70('0x1d')](_0x1caae9[_0x2e70('0x1c')],function(_0x4050aa){return{'model':db[_0x4050aa[_0x2e70('0x1e')]],'as':_0x4050aa['as'],'attributes':_0x4050aa[_0x2e70('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x539660){logger[_0x2e70('0xb')]('ShowTrigger',_0x1ddacc);logger[_0x2e70('0xe')](_0x2e70('0x1f'),_0x1ddacc,JSON[_0x2e70('0xf')](_0x539660));_0x27c89a(_0x539660);})[_0x2e70('0x14')](function(_0x77ddb9){logger[_0x2e70('0x10')]('ShowTrigger',_0x77ddb9[_0x2e70('0x12')],_0x1ddacc);_0x3ecd4a(_0x188f40[_0x2e70('0x10')](0x1f4,_0x77ddb9['message']));});});};
\ No newline at end of file
+var _0x1e6e=['then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','GetTrigger','findAll','options','raw','where','include','map','model','attributes','ShowTrigger','Trigger','find','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request'];(function(_0x505df9,_0x14138e){var _0x1cc025=function(_0x5d2a1f){while(--_0x5d2a1f){_0x505df9['push'](_0x505df9['shift']());}};_0x1cc025(++_0x14138e);}(_0x1e6e,0xb6));var _0xe1e6=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0x1e6e[_0x4fbfd9];return _0x31dc94;};'use strict';var _=require(_0xe1e6('0x0'));var util=require('util');var moment=require(_0xe1e6('0x1'));var BPromise=require(_0xe1e6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe1e6('0x3'))['db'];var utils=require(_0xe1e6('0x4'));var logger=require(_0xe1e6('0x5'))('rpc');var config=require(_0xe1e6('0x6'));var jayson=require(_0xe1e6('0x7'));var client=jayson[_0xe1e6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x46cfde,_0xa0a675,_0x1e5edf){return new BPromise(function(_0x3251b5,_0x2fa39f){return client[_0xe1e6('0x9')](_0x46cfde,_0x1e5edf)[_0xe1e6('0xa')](function(_0x5529c8){logger[_0xe1e6('0xb')](_0xe1e6('0xc'),_0xa0a675,_0xe1e6('0xd'));logger[_0xe1e6('0xe')]('Trigger,\x20%s,\x20%s,\x20%s',_0xa0a675,_0xe1e6('0xd'),JSON[_0xe1e6('0xf')](_0x5529c8));if(_0x5529c8[_0xe1e6('0x10')]){if(_0x5529c8[_0xe1e6('0x10')]['code']===0x1f4){logger[_0xe1e6('0x10')]('Trigger,\x20%s,\x20%s',_0xa0a675,_0x5529c8[_0xe1e6('0x10')][_0xe1e6('0x11')]);return _0x2fa39f(_0x5529c8[_0xe1e6('0x10')][_0xe1e6('0x11')]);}logger[_0xe1e6('0x10')](_0xe1e6('0xc'),_0xa0a675,_0x5529c8[_0xe1e6('0x10')][_0xe1e6('0x11')]);return _0x3251b5(_0x5529c8[_0xe1e6('0x10')][_0xe1e6('0x11')]);}else{logger[_0xe1e6('0xb')](_0xe1e6('0xc'),_0xa0a675,'request\x20sent');_0x3251b5(_0x5529c8[_0xe1e6('0x12')][_0xe1e6('0x11')]);}})[_0xe1e6('0x13')](function(_0x5efda2){logger[_0xe1e6('0x10')](_0xe1e6('0xc'),_0xa0a675,_0x5efda2);_0x2fa39f(_0x5efda2);});});}exports[_0xe1e6('0x14')]=function(_0x49426d){var _0x570985=this;return new Promise(function(_0x58602e,_0x582f0d){return db['Trigger'][_0xe1e6('0x15')]({'raw':_0x49426d['options']?_0x49426d[_0xe1e6('0x16')][_0xe1e6('0x17')]===undefined?!![]:![]:!![],'where':_0x49426d[_0xe1e6('0x16')]?_0x49426d[_0xe1e6('0x16')][_0xe1e6('0x18')]||null:null,'attributes':_0x49426d['options']?_0x49426d[_0xe1e6('0x16')]['attributes']||null:null,'limit':_0x49426d[_0xe1e6('0x16')]?_0x49426d[_0xe1e6('0x16')]['limit']||null:null,'include':_0x49426d[_0xe1e6('0x16')]?_0x49426d[_0xe1e6('0x16')][_0xe1e6('0x19')]?_[_0xe1e6('0x1a')](_0x49426d[_0xe1e6('0x16')][_0xe1e6('0x19')],function(_0x15ccc1){return{'model':db[_0x15ccc1[_0xe1e6('0x1b')]],'as':_0x15ccc1['as'],'attributes':_0x15ccc1[_0xe1e6('0x1c')],'include':_0x15ccc1['include']?_[_0xe1e6('0x1a')](_0x15ccc1['include'],function(_0x56692b){return{'model':db[_0x56692b[_0xe1e6('0x1b')]],'as':_0x56692b['as'],'attributes':_0x56692b[_0xe1e6('0x1c')],'include':_0x56692b['include']?_['map'](_0x56692b[_0xe1e6('0x19')],function(_0x479635){return{'model':db[_0x479635[_0xe1e6('0x1b')]],'as':_0x479635['as'],'attributes':_0x479635[_0xe1e6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe1e6('0xa')](function(_0x2d8197){logger[_0xe1e6('0xb')](_0xe1e6('0x14'),_0x49426d);logger[_0xe1e6('0xe')](_0xe1e6('0x14'),_0x49426d,JSON[_0xe1e6('0xf')](_0x2d8197));_0x58602e(_0x2d8197);})['catch'](function(_0x1c7466){logger['error'](_0xe1e6('0x14'),_0x1c7466[_0xe1e6('0x11')],_0x49426d);_0x582f0d(_0x570985[_0xe1e6('0x10')](0x1f4,_0x1c7466[_0xe1e6('0x11')]));});});};exports[_0xe1e6('0x1d')]=function(_0x58c9c9){var _0x7fde09=this;return new Promise(function(_0x3aa5a7,_0x257718){return db[_0xe1e6('0x1e')][_0xe1e6('0x1f')]({'raw':_0x58c9c9[_0xe1e6('0x16')]?_0x58c9c9[_0xe1e6('0x16')][_0xe1e6('0x17')]===undefined?!![]:![]:!![],'where':_0x58c9c9[_0xe1e6('0x16')]?_0x58c9c9['options']['where']||null:null,'attributes':_0x58c9c9[_0xe1e6('0x16')]?_0x58c9c9[_0xe1e6('0x16')][_0xe1e6('0x1c')]||null:null,'include':_0x58c9c9[_0xe1e6('0x16')]?_0x58c9c9['options'][_0xe1e6('0x19')]?_[_0xe1e6('0x1a')](_0x58c9c9[_0xe1e6('0x16')][_0xe1e6('0x19')],function(_0x13bec7){return{'model':db[_0x13bec7[_0xe1e6('0x1b')]],'as':_0x13bec7['as'],'attributes':_0x13bec7[_0xe1e6('0x1c')],'include':_0x13bec7[_0xe1e6('0x19')]?_[_0xe1e6('0x1a')](_0x13bec7[_0xe1e6('0x19')],function(_0x20fe33){return{'model':db[_0x20fe33[_0xe1e6('0x1b')]],'as':_0x20fe33['as'],'attributes':_0x20fe33[_0xe1e6('0x1c')],'include':_0x20fe33['include']?_[_0xe1e6('0x1a')](_0x20fe33['include'],function(_0x55b07b){return{'model':db[_0x55b07b['model']],'as':_0x55b07b['as'],'attributes':_0x55b07b[_0xe1e6('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe1e6('0xa')](function(_0x393708){logger['info'](_0xe1e6('0x1d'),_0x58c9c9);logger[_0xe1e6('0xe')](_0xe1e6('0x1d'),_0x58c9c9,JSON[_0xe1e6('0xf')](_0x393708));_0x3aa5a7(_0x393708);})[_0xe1e6('0x13')](function(_0x1e3cb4){logger[_0xe1e6('0x10')](_0xe1e6('0x1d'),_0x1e3cb4[_0xe1e6('0x11')],_0x58c9c9);_0x257718(_0x7fde09[_0xe1e6('0x10')](0x1f4,_0x1e3cb4[_0xe1e6('0x11')]));});});};
\ No newline at end of file
index 8bf15d6..77c1565 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d58=['/:id','show','post','/:id/clone','create','update','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get'];(function(_0x5537a9,_0x466993){var _0x37eb3c=function(_0x205f68){while(--_0x205f68){_0x5537a9['push'](_0x5537a9['shift']());}};_0x37eb3c(++_0x466993);}(_0x0d58,0x1a0));var _0x80d5=function(_0x1f0724,_0x3a58bf){_0x1f0724=_0x1f0724-0x0;var _0x253ffb=_0x0d58[_0x1f0724];return _0x253ffb;};'use strict';var multer=require(_0x80d5('0x0'));var util=require('util');var path=require(_0x80d5('0x1'));var timeout=require('connect-timeout');var express=require(_0x80d5('0x2'));var router=express[_0x80d5('0x3')]();var auth=require(_0x80d5('0x4'));var interaction=require(_0x80d5('0x5'));var config=require('../../config/environment');var controller=require('./trunk.controller');router['get']('/',auth[_0x80d5('0x6')](),controller[_0x80d5('0x7')]);router[_0x80d5('0x8')](_0x80d5('0x9'),auth['isAuthenticated'](),controller[_0x80d5('0xa')]);router[_0x80d5('0xb')](_0x80d5('0xc'),auth[_0x80d5('0x6')](),controller['clone']);router[_0x80d5('0xb')]('/',auth['isAuthenticated'](),controller[_0x80d5('0xd')]);router['put']('/:id',auth[_0x80d5('0x6')](),controller[_0x80d5('0xe')]);router['delete'](_0x80d5('0x9'),auth[_0x80d5('0x6')](),controller[_0x80d5('0xf')]);module[_0x80d5('0x10')]=router;
\ No newline at end of file
+var _0x7ed6=['/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./trunk.controller','get','isAuthenticated','show','post','/:id/clone','clone'];(function(_0x4aefca,_0x3b2fd8){var _0x47277c=function(_0x664764){while(--_0x664764){_0x4aefca['push'](_0x4aefca['shift']());}};_0x47277c(++_0x3b2fd8);}(_0x7ed6,0x1e5));var _0x67ed=function(_0x302cad,_0x8da3a6){_0x302cad=_0x302cad-0x0;var _0xa0f441=_0x7ed6[_0x302cad];return _0xa0f441;};'use strict';var multer=require(_0x67ed('0x0'));var util=require(_0x67ed('0x1'));var path=require(_0x67ed('0x2'));var timeout=require(_0x67ed('0x3'));var express=require(_0x67ed('0x4'));var router=express[_0x67ed('0x5')]();var auth=require('../../components/auth/service');var interaction=require(_0x67ed('0x6'));var config=require(_0x67ed('0x7'));var controller=require(_0x67ed('0x8'));router[_0x67ed('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x67ed('0x9')]('/:id',auth[_0x67ed('0xa')](),controller[_0x67ed('0xb')]);router[_0x67ed('0xc')](_0x67ed('0xd'),auth[_0x67ed('0xa')](),controller[_0x67ed('0xe')]);router[_0x67ed('0xc')]('/',auth[_0x67ed('0xa')](),controller['create']);router['put'](_0x67ed('0xf'),auth[_0x67ed('0xa')](),controller[_0x67ed('0x10')]);router[_0x67ed('0x11')]('/:id',auth[_0x67ed('0xa')](),controller[_0x67ed('0x12')]);module[_0x67ed('0x13')]=router;
\ No newline at end of file
index 1c32ca7..6863975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','auto','yes','outgoing','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','INTEGER','always','accept','refuse','originate','uac','uas','pai','fingerprint','active','passive','actpass','dynamic','nonat','update,nonat','exports','STRING','name','ENUM','friend','user','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','udp'];(function(_0x324f7d,_0x3a0184){var _0x158d1e=function(_0x460f99){while(--_0x460f99){_0x324f7d['push'](_0x324f7d['shift']());}};_0x158d1e(++_0x3a0184);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xbaf0[_0x2b4411];return _0x8e41ef;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x4'),_0x0baf('0x5'),'peer'),'allowNull':![],'defaultValue':_0x0baf('0x4')},'context':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'defaultValue':_0x0baf('0x6')},'callingpres':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x7'),_0x0baf('0x8'),_0x0baf('0x9'),_0x0baf('0xa'),_0x0baf('0xb'),'PROHIB_PASSED_SCREEN',_0x0baf('0xc'),'PROHIB')},'deny':{'type':Sequelize[_0x0baf('0x1')]},'permit':{'type':Sequelize[_0x0baf('0x1')]},'secret':{'type':Sequelize[_0x0baf('0x1')]},'md5secret':{'type':Sequelize[_0x0baf('0x1')]},'remotesecret':{'type':Sequelize[_0x0baf('0x1')]},'transport':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':_0x0baf('0xd'),'set':function(_0x245a6b){this[_0x0baf('0xe')](_0x0baf('0xf'),_0x245a6b?_0x245a6b[_0x0baf('0x10')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0x0baf('0x11')](_0x0baf('0xf'))[_0x0baf('0x12')](','):null;},'comment':_0x0baf('0x13')},'dtmfmode':{'type':Sequelize['ENUM'](_0x0baf('0x14'),'info',_0x0baf('0x15'),_0x0baf('0x16'),_0x0baf('0x17')),'defaultValue':_0x0baf('0x14')},'directmedia':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no','nonat','update',_0x0baf('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x0baf('0x1')]},'directmediadeny':{'type':Sequelize[_0x0baf('0x1')]},'nat':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':'force_rport,comedia','set':function(_0x63c820){this[_0x0baf('0xe')](_0x0baf('0x1a'),_0x63c820?_0x63c820[_0x0baf('0x10')](','):null);},'get':function(){return this[_0x0baf('0x11')](_0x0baf('0x1a'))?this['getDataValue']('nat')[_0x0baf('0x12')](','):null;},'comment':_0x0baf('0x1b')},'callgroup':{'type':Sequelize[_0x0baf('0x1')]},'namedcallgroup':{'type':Sequelize[_0x0baf('0x1')]},'pickupgroup':{'type':Sequelize[_0x0baf('0x1')]},'namedpickupgroup':{'type':Sequelize[_0x0baf('0x1')]},'language':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x0baf('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':_0x0baf('0x1c')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0baf('0x1d'),'set':function(_0x482522){this[_0x0baf('0xe')]('allow',_0x482522?_0x482522['join'](';'):_0x0baf('0x1d'));},'get':function(){return this['getDataValue']('allow')?this[_0x0baf('0x11')](_0x0baf('0x1e'))[_0x0baf('0x12')](';'):null;},'comment':_0x0baf('0x1f')},'autoframing':{'type':Sequelize[_0x0baf('0x3')]('yes','no')},'insecure':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':_0x0baf('0x20'),'set':function(_0x1ca35a){this[_0x0baf('0xe')](_0x0baf('0x21'),_0x1ca35a?_0x1ca35a[_0x0baf('0x10')](','):null);},'get':function(){return this[_0x0baf('0x11')]('insecure')?this[_0x0baf('0x11')](_0x0baf('0x21'))[_0x0baf('0x12')](','):null;},'comment':_0x0baf('0x22')},'trustrpid':{'type':Sequelize['ENUM'](_0x0baf('0x18'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x0baf('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no',_0x0baf('0x23'))},'promiscredir':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'useclientcode':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0x0baf('0x1')]},'callerid':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':_0x0baf('0x24')},'amaflags':{'type':Sequelize[_0x0baf('0x1')]},'callcounter':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no'),'defaultValue':_0x0baf('0x18')},'busylevel':{'type':Sequelize[_0x0baf('0x25')](0xb)},'allowoverlap':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'allowsubscribe':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'allowtransfer':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x0baf('0x18'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x0baf('0x1')]},'videosupport':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no',_0x0baf('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x27'),_0x0baf('0x28'),_0x0baf('0x29'))},'session_expires':{'type':Sequelize[_0x0baf('0x25')](0xb)},'session_minse':{'type':Sequelize[_0x0baf('0x25')](0xb)},'session_refresher':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x2a'),'uas'),'defaultValue':_0x0baf('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0x0baf('0x1')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize[_0x0baf('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0x0baf('0x1')]},'defaultuser':{'type':Sequelize[_0x0baf('0x1')]},'rtptimeout':{'type':Sequelize[_0x0baf('0x25')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x0baf('0x25')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x0baf('0x25')](0xb)},'sendrpid':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no',_0x0baf('0x2c')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x0baf('0x1')]},'callbackextension':{'type':Sequelize[_0x0baf('0x1')]},'timert1':{'type':Sequelize[_0x0baf('0x25')](0xb)},'timerb':{'type':Sequelize[_0x0baf('0x25')](0xb)},'qualifyfreq':{'type':Sequelize[_0x0baf('0x25')](0xb)},'contactpermit':{'type':Sequelize[_0x0baf('0x1')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0x0baf('0x1')]},'unsolicited_mailbox':{'type':Sequelize[_0x0baf('0x1')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x0baf('0x25')](0xb)},'encryption':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'force_avp':{'type':Sequelize[_0x0baf('0x3')]('yes','no')},'icesupport':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0x0baf('0x18'),'no')},'dtlsverify':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no',_0x0baf('0x2d'),'certificate')},'dtlsrekey':{'type':Sequelize[_0x0baf('0x25')](0xb)},'dtlscertfile':{'type':Sequelize[_0x0baf('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0x0baf('0x1')]},'dtlscipher':{'type':Sequelize[_0x0baf('0x1')]},'dtlscafile':{'type':Sequelize[_0x0baf('0x1')]},'dtlscapath':{'type':Sequelize[_0x0baf('0x1')]},'dtlssetup':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x2e'),_0x0baf('0x2f'),_0x0baf('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x0baf('0x1')]},'recordofffeature':{'type':Sequelize[_0x0baf('0x1')]},'call_limit':{'type':Sequelize[_0x0baf('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM'](_0x0baf('0x18'),'no')},'subscribemwi':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no')},'vmexten':{'type':Sequelize[_0x0baf('0x1')]},'mohinterpret':{'type':Sequelize[_0x0baf('0x1')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0x0baf('0x1')]},'description':{'type':Sequelize[_0x0baf('0x1')]},'host':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':_0x0baf('0x31')},'canreinvite':{'type':Sequelize[_0x0baf('0x3')](_0x0baf('0x18'),'no',_0x0baf('0x32'),'update',_0x0baf('0x33')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x0baf('0x1')]},'otherFields':{'type':Sequelize[_0x0baf('0x1')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xb10b=['udp','setDataValue','join','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','yes','nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','accept','refuse','uac','uas','fingerprint','active','actpass','dynamic','update,nonat','BOOLEAN','sequelize','STRING','name','ENUM','user','peer','friend','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB'];(function(_0x44cacf,_0x3d39eb){var _0x439ebb=function(_0x623e42){while(--_0x623e42){_0x44cacf['push'](_0x44cacf['shift']());}};_0x439ebb(++_0x3d39eb);}(_0xb10b,0x12a));var _0xbb10=function(_0x17eb11,_0x25d8c6){_0x17eb11=_0x17eb11-0x0;var _0x559093=_0xb10b[_0x17eb11];return _0x559093;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xbb10('0x3')]('friend',_0xbb10('0x4'),_0xbb10('0x5')),'allowNull':![],'defaultValue':_0xbb10('0x6')},'context':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'defaultValue':_0xbb10('0x7')},'callingpres':{'type':Sequelize[_0xbb10('0x3')]('ALLOWED_NOT_SCREENED',_0xbb10('0x8'),_0xbb10('0x9'),'ALLOWED',_0xbb10('0xa'),_0xbb10('0xb'),_0xbb10('0xc'),_0xbb10('0xd'))},'deny':{'type':Sequelize[_0xbb10('0x1')]},'permit':{'type':Sequelize[_0xbb10('0x1')]},'secret':{'type':Sequelize[_0xbb10('0x1')]},'md5secret':{'type':Sequelize[_0xbb10('0x1')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize['STRING'],'defaultValue':_0xbb10('0xe'),'set':function(_0x118a74){this[_0xbb10('0xf')]('transport',_0x118a74?_0x118a74[_0xbb10('0x10')](','):null);},'get':function(){return this['getDataValue'](_0xbb10('0x11'))?this[_0xbb10('0x12')](_0xbb10('0x11'))[_0xbb10('0x13')](','):null;},'comment':_0xbb10('0x14')},'dtmfmode':{'type':Sequelize[_0xbb10('0x3')]('rfc2833',_0xbb10('0x15'),_0xbb10('0x16'),_0xbb10('0x17'),_0xbb10('0x18')),'defaultValue':_0xbb10('0x19')},'directmedia':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no',_0xbb10('0x1b'),_0xbb10('0x1c'),_0xbb10('0x1d')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0xbb10('0x1a'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xbb10('0x1')]},'directmediadeny':{'type':Sequelize[_0xbb10('0x1')]},'nat':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':_0xbb10('0x1e'),'set':function(_0x1682a4){this[_0xbb10('0xf')](_0xbb10('0x1f'),_0x1682a4?_0x1682a4[_0xbb10('0x10')](','):null);},'get':function(){return this[_0xbb10('0x12')]('nat')?this[_0xbb10('0x12')](_0xbb10('0x1f'))[_0xbb10('0x13')](','):null;},'comment':_0xbb10('0x20')},'callgroup':{'type':Sequelize[_0xbb10('0x1')]},'namedcallgroup':{'type':Sequelize[_0xbb10('0x1')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xbb10('0x1')]},'language':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xbb10('0x21')},'allow':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'defaultValue':_0xbb10('0x22'),'set':function(_0x317da4){this[_0xbb10('0xf')](_0xbb10('0x23'),_0x317da4?_0x317da4[_0xbb10('0x10')](';'):_0xbb10('0x22'));},'get':function(){return this[_0xbb10('0x12')](_0xbb10('0x23'))?this[_0xbb10('0x12')](_0xbb10('0x23'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0xbb10('0x1a'),'no')},'insecure':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':_0xbb10('0x24'),'set':function(_0x4e25ff){this[_0xbb10('0xf')](_0xbb10('0x25'),_0x4e25ff?_0x4e25ff[_0xbb10('0x10')](','):null);},'get':function(){return this[_0xbb10('0x12')](_0xbb10('0x25'))?this[_0xbb10('0x12')](_0xbb10('0x25'))['split'](','):null;},'comment':_0xbb10('0x26')},'trustrpid':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xbb10('0x3')]('yes','no',_0xbb10('0x27'))},'promiscredir':{'type':Sequelize['ENUM'](_0xbb10('0x1a'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0xbb10('0x1a'),'no')},'accountcode':{'type':Sequelize[_0xbb10('0x28')](0xb)},'setvar':{'type':Sequelize[_0xbb10('0x1')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xbb10('0x1')]},'callcounter':{'type':Sequelize[_0xbb10('0x3')]('yes','no'),'defaultValue':_0xbb10('0x1a')},'busylevel':{'type':Sequelize[_0xbb10('0x28')](0xb)},'allowoverlap':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no')},'allowsubscribe':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no')},'allowtransfer':{'type':Sequelize[_0xbb10('0x3')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no')},'subscribecontext':{'type':Sequelize[_0xbb10('0x1')]},'template':{'type':Sequelize[_0xbb10('0x1')]},'videosupport':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no',_0xbb10('0x29')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xbb10('0x28')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xbb10('0x3')]('yes','no')},'mailbox':{'type':Sequelize[_0xbb10('0x1')]},'session_timers':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x2a'),_0xbb10('0x2b'),'originate')},'session_expires':{'type':Sequelize[_0xbb10('0x28')](0xb)},'session_minse':{'type':Sequelize['INTEGER'](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xbb10('0x2c'),_0xbb10('0x2d')),'defaultValue':_0xbb10('0x2d')},'t38pt_usertpsource':{'type':Sequelize[_0xbb10('0x1')]},'regexten':{'type':Sequelize[_0xbb10('0x1')]},'fromdomain':{'type':Sequelize[_0xbb10('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xbb10('0x28')](0x5)},'qualify':{'type':Sequelize[_0xbb10('0x3')]('yes','no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0xbb10('0x1')]},'defaultuser':{'type':Sequelize[_0xbb10('0x1')]},'rtptimeout':{'type':Sequelize[_0xbb10('0x28')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0xbb10('0x28')](0xb)},'sendrpid':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xbb10('0x1')]},'callbackextension':{'type':Sequelize[_0xbb10('0x1')]},'timert1':{'type':Sequelize[_0xbb10('0x28')](0xb)},'timerb':{'type':Sequelize[_0xbb10('0x28')](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0xbb10('0x1')]},'contactdeny':{'type':Sequelize[_0xbb10('0x1')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0xbb10('0x1')]},'use_q850_reason':{'type':Sequelize[_0xbb10('0x1')]},'maxforwards':{'type':Sequelize[_0xbb10('0x28')](0xb)},'encryption':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xbb10('0x3')]('yes','no')},'force_avp':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no')},'icesupport':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0xbb10('0x1a'),'no')},'dtlsverify':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no',_0xbb10('0x2e'),'certificate')},'dtlsrekey':{'type':Sequelize[_0xbb10('0x28')](0xb)},'dtlscertfile':{'type':Sequelize[_0xbb10('0x1')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xbb10('0x1')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x2f'),'passive',_0xbb10('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xbb10('0x1')]},'usereqphone':{'type':Sequelize[_0xbb10('0x3')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xbb10('0x1')]},'recordofffeature':{'type':Sequelize[_0xbb10('0x1')]},'call_limit':{'type':Sequelize[_0xbb10('0x28')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no')},'subscribemwi':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x1a'),'no')},'vmexten':{'type':Sequelize[_0xbb10('0x1')]},'mohinterpret':{'type':Sequelize[_0xbb10('0x1')]},'mohsuggest':{'type':Sequelize[_0xbb10('0x1')]},'parkinglot':{'type':Sequelize[_0xbb10('0x1')]},'description':{'type':Sequelize[_0xbb10('0x1')]},'host':{'type':Sequelize['STRING'],'defaultValue':_0xbb10('0x31')},'canreinvite':{'type':Sequelize[_0xbb10('0x3')]('yes','no',_0xbb10('0x1b'),_0xbb10('0x1c'),_0xbb10('0x32')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xbb10('0x1')]},'otherFields':{'type':Sequelize[_0xbb10('0x1')]},'active':{'type':Sequelize[_0xbb10('0x33')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':'no'}};
\ No newline at end of file
index b919d08..780c9a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4ae=['readFileSync','/etc/asterisk/sip_xcally_registers.conf','html-pdf','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','lodash','squel','crypto','desk.js','to-csv','papaparse','api','../../config/environment','jayson/promise','client','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','count','offset','limit','update','destroy','get','Trunks','stack','name','index','Trunk','rawAttributes','model','keys','query','dateEnd','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','dateStart','day','add','merge','filter','map','type','key','field','options','includeAll','include','rows','show','params','length','find','clone','omit','createdAt','updatedAt','body','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','join','server/files/templates/trunk.ejs','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','Reload','chan_sip.so','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findAll','utf8'];(function(_0x3c3184,_0x2fca33){var _0x29b2b5=function(_0x46cbcb){while(--_0x46cbcb){_0x3c3184['push'](_0x3c3184['shift']());}};_0x29b2b5(++_0x2fca33);}(_0xf4ae,0x69));var _0xef4a=function(_0x550651,_0x32926b){_0x550651=_0x550651-0x0;var _0x53edcf=_0xf4ae[_0x550651];return _0x53edcf;};'use strict';var pdf=require(_0xef4a('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xef4a('0x1'));var zipdir=require(_0xef4a('0x2'));var jsonpatch=require(_0xef4a('0x3'));var rp=require('request-promise');var moment=require(_0xef4a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xef4a('0x5'));var util=require(_0xef4a('0x6'));var path=require(_0xef4a('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0xef4a('0x8'));var squel=require(_0xef4a('0x9'));var crypto=require(_0xef4a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xef4a('0xb'));var toCsv=require(_0xef4a('0xc'));var querystring=require('querystring');var Papa=require(_0xef4a('0xd'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xef4a('0xe'));var utils=require('../../config/utils');var config=require(_0xef4a('0xf'));var db=require('../../mysqldb')['db'];var jayson=require(_0xef4a('0x10'));var client=jayson[_0xef4a('0x11')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1deca7,_0x2e37d0,_0x191a4e,_0x32c371){return new BPromise(function(_0x50ba0a,_0x288896){var _0x193bde=_0x32c371||client;return _0x193bde[_0xef4a('0x12')](_0x1deca7,_0x191a4e)[_0xef4a('0x13')](function(_0x378b9a){logger[_0xef4a('0x14')](_0xef4a('0x15'),_0x2e37d0,_0xef4a('0x16'));logger[_0xef4a('0x17')](_0xef4a('0x18'),_0x2e37d0,_0xef4a('0x16'),JSON['stringify'](_0x378b9a));if(_0x378b9a[_0xef4a('0x19')]){if(_0x378b9a['error'][_0xef4a('0x1a')]===0x1f4){logger[_0xef4a('0x19')]('Trunk,\x20%s,\x20%s',_0x2e37d0,_0x378b9a['error'][_0xef4a('0x1b')]);return _0x288896(_0x378b9a[_0xef4a('0x19')][_0xef4a('0x1b')]);}logger['error'](_0xef4a('0x15'),_0x2e37d0,_0x378b9a[_0xef4a('0x19')]['message']);return _0x50ba0a(_0x378b9a[_0xef4a('0x19')][_0xef4a('0x1b')]);}else{logger['info'](_0xef4a('0x15'),_0x2e37d0,_0xef4a('0x16'));_0x50ba0a(_0x378b9a[_0xef4a('0x1c')][_0xef4a('0x1b')]);}})[_0xef4a('0x1d')](function(_0x1c0cf2){logger[_0xef4a('0x19')]('Trunk,\x20%s,\x20%s',_0x2e37d0,_0x1c0cf2);_0x288896(_0x1c0cf2);});});}function respondWithStatusCode(_0xf2c46c,_0x1b8849){_0x1b8849=_0x1b8849||0xcc;return function(_0x5f1223){if(_0x5f1223){return _0xf2c46c[_0xef4a('0x1e')](_0x1b8849);}return _0xf2c46c[_0xef4a('0x1f')](_0x1b8849)[_0xef4a('0x20')]();};}function respondWithResult(_0x14dcaf,_0x591eac){_0x591eac=_0x591eac||0xc8;return function(_0x4cd3df){if(_0x4cd3df){return _0x14dcaf[_0xef4a('0x1f')](_0x591eac)[_0xef4a('0x21')](_0x4cd3df);}};}function respondWithFilteredResult(_0x38a838,_0xd02756){return function(_0x537879){if(_0x537879){var _0x4927bb=_0x537879[_0xef4a('0x22')],_0x4fbafe=_0xd02756[_0xef4a('0x23')],_0x32c7a7=_0xd02756[_0xef4a('0x23')]+_0xd02756[_0xef4a('0x24')],_0x233e58;if(_0x32c7a7>=_0x4927bb){_0x32c7a7=_0x4927bb;_0x233e58=0xc8;}else{_0x233e58=0xce;}_0x38a838[_0xef4a('0x1f')](_0x233e58);return _0x38a838['set']('Content-Range',_0x4fbafe+'-'+_0x32c7a7+'/'+_0x4927bb)[_0xef4a('0x21')](_0x537879);}return null;};}function patchUpdates(_0xaacf82){return function(_0x1fea4c){try{jsonpatch['apply'](_0x1fea4c,_0xaacf82,!![]);}catch(_0x40f048){return BPromise['reject'](_0x40f048);}return _0x1fea4c['save']();};}function saveUpdates(_0x199242,_0x20ef33){return function(_0x442676){if(_0x442676){return _0x442676[_0xef4a('0x25')](_0x199242)['then'](function(_0x1b5a65){return _0x1b5a65;});}return null;};}function removeEntity(_0x149eb0,_0xba38e5){return function(_0x1e48ff){if(_0x1e48ff){return _0x1e48ff[_0xef4a('0x26')]()[_0xef4a('0x13')](function(){var _0x905b12=_0x1e48ff[_0xef4a('0x27')]({'plain':!![]});var _0x5a6178=_0xef4a('0x28');return db['UserProfileResource'][_0xef4a('0x26')]({'where':{'type':_0x5a6178,'resourceId':_0x905b12['id']}})['then'](function(){return _0x1e48ff;});})[_0xef4a('0x13')](function(){_0x149eb0[_0xef4a('0x1f')](0xcc)[_0xef4a('0x20')]();});}};}function handleEntityNotFound(_0x59446c,_0x29eae2){return function(_0x28b123){if(!_0x28b123){_0x59446c['sendStatus'](0x194);}return _0x28b123;};}function handleError(_0x37b51c,_0x22c586){_0x22c586=_0x22c586||0x1f4;return function(_0x15f648){logger[_0xef4a('0x19')](_0x15f648[_0xef4a('0x29')]);if(_0x15f648[_0xef4a('0x2a')]){delete _0x15f648['name'];}_0x37b51c[_0xef4a('0x1f')](_0x22c586)['send'](_0x15f648);};}exports[_0xef4a('0x2b')]=function(_0x2c683d,_0x7c9b42){var _0x7de908={},_0x5f10f7={},_0xb85d08={'count':0x0,'rows':[]};var _0x3940c0=db[_0xef4a('0x2c')][_0xef4a('0x2d')];_0x5f10f7[_0xef4a('0x2e')]=_[_0xef4a('0x2f')](_0x3940c0);var _0x2f996b={'dateStart':_0x2c683d['query']['dateStart'],'dateEnd':_0x2c683d[_0xef4a('0x30')]['dateEnd']};delete _0x2c683d[_0xef4a('0x30')]['dateStart'];delete _0x2c683d['query'][_0xef4a('0x31')];_0x5f10f7[_0xef4a('0x30')]=_['keys'](_0x2c683d[_0xef4a('0x30')]);_0x5f10f7['filters']=_[_0xef4a('0x32')](_0x5f10f7[_0xef4a('0x2e')],_0x5f10f7['query']);_0x7de908['attributes']=_[_0xef4a('0x32')](_0x5f10f7[_0xef4a('0x2e')],qs[_0xef4a('0x33')](_0x2c683d[_0xef4a('0x30')][_0xef4a('0x33')]));_0x7de908['attributes']=_0x7de908['attributes']['length']?_0x7de908[_0xef4a('0x34')]:_0x5f10f7[_0xef4a('0x2e')];if(!_0x2c683d[_0xef4a('0x30')][_0xef4a('0x35')](_0xef4a('0x36'))){_0x7de908[_0xef4a('0x24')]=qs[_0xef4a('0x24')](_0x2c683d[_0xef4a('0x30')][_0xef4a('0x24')]);_0x7de908[_0xef4a('0x23')]=qs[_0xef4a('0x23')](_0x2c683d[_0xef4a('0x30')][_0xef4a('0x23')]);}_0x7de908[_0xef4a('0x37')]=qs[_0xef4a('0x38')](_0x2c683d[_0xef4a('0x30')][_0xef4a('0x38')]);_0x7de908[_0xef4a('0x39')]=qs[_0xef4a('0x3a')](_[_0xef4a('0x3b')](_0x2c683d['query'],_0x5f10f7['filters']));if(_0x2f996b[_0xef4a('0x3c')]){if(_0x2f996b[_0xef4a('0x31')]){_0x2f996b[_0xef4a('0x31')]=moment(_0x2f996b[_0xef4a('0x31')])['add'](0x1,_0xef4a('0x3d'));}else{_0x2f996b[_0xef4a('0x31')]=moment(_0x2f996b['dateStart'])[_0xef4a('0x3e')](0x1,_0xef4a('0x3d'));}_[_0xef4a('0x3f')](_0x7de908[_0xef4a('0x39')],{'createdAt':{'$gte':_0x2f996b[_0xef4a('0x3c')],'$lte':_0x2f996b[_0xef4a('0x31')]}});}if(_0x2c683d['query'][_0xef4a('0x40')]){_0x7de908['where']=_['merge'](_0x7de908[_0xef4a('0x39')],{'$or':_[_0xef4a('0x41')](_0x3940c0,function(_0x2386cf){if(_0x2386cf[_0xef4a('0x42')][_0xef4a('0x43')]!=='VIRTUAL'){var _0x9d00e1={};_0x9d00e1[_0x2386cf[_0xef4a('0x44')]]={'$like':'%'+_0x2c683d['query'][_0xef4a('0x40')]+'%'};return _0x9d00e1;}})});}_0x7de908=_[_0xef4a('0x3f')]({},_0x7de908,_0x2c683d[_0xef4a('0x45')]);var _0x1736d9={'where':_0x7de908[_0xef4a('0x39')]};return db['Trunk'][_0xef4a('0x22')](_0x1736d9)[_0xef4a('0x13')](function(_0x11a24a){_0xb85d08[_0xef4a('0x22')]=_0x11a24a;if(_0x2c683d[_0xef4a('0x30')][_0xef4a('0x46')]){_0x7de908[_0xef4a('0x47')]=[{'all':!![]}];}return db['Trunk']['findAll'](_0x7de908);})[_0xef4a('0x13')](function(_0xe37c76){_0xb85d08[_0xef4a('0x48')]=_0xe37c76;return _0xb85d08;})[_0xef4a('0x13')](respondWithFilteredResult(_0x7c9b42,_0x7de908))[_0xef4a('0x1d')](handleError(_0x7c9b42,null));};exports[_0xef4a('0x49')]=function(_0x5b9b3e,_0x4ee6e7){var _0x96a744={'raw':![],'where':{'id':_0x5b9b3e[_0xef4a('0x4a')]['id']}},_0x452728={};_0x452728[_0xef4a('0x2e')]=_[_0xef4a('0x2f')](db['Trunk']['rawAttributes']);_0x452728[_0xef4a('0x30')]=_[_0xef4a('0x2f')](_0x5b9b3e[_0xef4a('0x30')]);_0x452728['filters']=_['intersection'](_0x452728[_0xef4a('0x2e')],_0x452728[_0xef4a('0x30')]);_0x96a744[_0xef4a('0x34')]=_[_0xef4a('0x32')](_0x452728[_0xef4a('0x2e')],qs[_0xef4a('0x33')](_0x5b9b3e[_0xef4a('0x30')][_0xef4a('0x33')]));_0x96a744[_0xef4a('0x34')]=_0x96a744['attributes'][_0xef4a('0x4b')]?_0x96a744[_0xef4a('0x34')]:_0x452728[_0xef4a('0x2e')];if(_0x5b9b3e[_0xef4a('0x30')]['includeAll']){_0x96a744[_0xef4a('0x47')]=[{'all':!![]}];}_0x96a744=_[_0xef4a('0x3f')]({},_0x96a744,_0x5b9b3e[_0xef4a('0x45')]);return db[_0xef4a('0x2c')][_0xef4a('0x4c')](_0x96a744)[_0xef4a('0x13')](handleEntityNotFound(_0x4ee6e7,null))['then'](respondWithResult(_0x4ee6e7,null))[_0xef4a('0x1d')](handleError(_0x4ee6e7,null));};exports[_0xef4a('0x4d')]=function(_0x10dd31,_0x5c08c1){var _0xac0c56={'raw':![],'where':{'id':_0x10dd31['params']['id']}},_0xd0b175={};_0xd0b175[_0xef4a('0x2e')]=_[_0xef4a('0x2f')](db[_0xef4a('0x2c')][_0xef4a('0x2d')]);_0xac0c56[_0xef4a('0x34')]=_[_0xef4a('0x32')](_0xd0b175['model'],qs[_0xef4a('0x33')](_0x10dd31[_0xef4a('0x30')][_0xef4a('0x33')]));_0xac0c56['attributes']=_0xac0c56['attributes'][_0xef4a('0x4b')]?_0xac0c56[_0xef4a('0x34')]:_0xd0b175[_0xef4a('0x2e')];if(_0x10dd31[_0xef4a('0x30')]['includeAll']){_0xac0c56[_0xef4a('0x47')]=[{'all':!![]}];}_0xac0c56=_[_0xef4a('0x3f')]({},_0xac0c56,_0x10dd31['options']);return db['Trunk'][_0xef4a('0x4c')](_0xac0c56)[_0xef4a('0x13')](handleEntityNotFound(_0x5c08c1,null))[_0xef4a('0x13')](function(_0x831abe){if(_0x831abe){var _0x4ce289=_0x831abe[_0xef4a('0x27')]({'plain':!![]});_0x4ce289=qs[_0xef4a('0x4e')](_0x4ce289,['id',_0xef4a('0x4f'),_0xef4a('0x50')]);_0x10dd31[_0xef4a('0x51')]=_['omit'](_0x10dd31[_0xef4a('0x51')],['id',_0xef4a('0x4f'),_0xef4a('0x50')]);return db['Trunk'][_0xef4a('0x52')](_[_0xef4a('0x3f')](_0x4ce289,_0x10dd31[_0xef4a('0x51')]),{'include':_0x10dd31[_0xef4a('0x30')][_0xef4a('0x46')]?[{'all':!![]}]:undefined})[_0xef4a('0x13')](function(_0x1c9f15){var _0x391cc4=_0x10dd31['user'][_0xef4a('0x27')]({'plain':!![]});if(!_0x391cc4)throw new Error(_0xef4a('0x53'));if(_0x391cc4[_0xef4a('0x54')]===_0xef4a('0x55')){var _0x3b49d3=_0x1c9f15['get']({'plain':!![]});var _0x28155b=_0xef4a('0x28');return db[_0xef4a('0x56')][_0xef4a('0x4c')]({'where':{'name':_0x28155b,'userProfileId':_0x391cc4[_0xef4a('0x57')]},'raw':!![]})[_0xef4a('0x13')](function(_0x3f54b4){if(_0x3f54b4&&_0x3f54b4[_0xef4a('0x58')]===0x0){return db['UserProfileResource'][_0xef4a('0x52')]({'name':_0x3b49d3[_0xef4a('0x2a')],'resourceId':_0x3b49d3['id'],'type':_0x3f54b4[_0xef4a('0x2a')],'sectionId':_0x3f54b4['id']},{})[_0xef4a('0x13')](function(){return _0x1c9f15;});}else{return _0x1c9f15;}})[_0xef4a('0x1d')](function(_0x29b436){logger[_0xef4a('0x19')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x29b436);throw _0x29b436;});}return _0x1c9f15;});}})['then'](respondWithResult(_0x5c08c1,0xc9))[_0xef4a('0x1d')](handleError(_0x5c08c1,null));};exports[_0xef4a('0x52')]=function(_0x4924c6,_0x2967ed,_0x1377fa){var _0x5d4e8a;return db[_0xef4a('0x2c')]['create'](_0x4924c6[_0xef4a('0x51')],{'raw':!![]})[_0xef4a('0x13')](function(_0x4d6226){_0x5d4e8a=_0x4d6226;return db[_0xef4a('0x2c')]['findAll']({'raw':!![]});})[_0xef4a('0x13')](function(_0x177d5d){var _0xb66e86=fs['readFileSync'](path[_0xef4a('0x59')](config['root'],_0xef4a('0x5a')),'utf8');var _0x3957f3=fs['readFileSync'](path[_0xef4a('0x59')](config[_0xef4a('0x5b')],_0xef4a('0x5c')),'utf8');var _0x5d2ff=ejs[_0xef4a('0x5d')](_0xb66e86,{'trunks':_0x177d5d||[]});fs[_0xef4a('0x5e')](_0xef4a('0x5f'),_0x5d2ff);if(_0x5d4e8a['registry']){var _0x396749=ejs[_0xef4a('0x5d')](_0x3957f3,{'trunks':_0x177d5d||[]});fs[_0xef4a('0x5e')]('/etc/asterisk/sip_xcally_registers.conf',_0x396749);}})[_0xef4a('0x13')](function(){return respondWithRpcPromise(_0xef4a('0x60'),'create',{'module':_0xef4a('0x61')});})[_0xef4a('0x13')](function(){var _0x49247f=_0x4924c6[_0xef4a('0x55')][_0xef4a('0x27')]({'plain':!![]});if(!_0x49247f)throw new Error(_0xef4a('0x53'));if(_0x49247f[_0xef4a('0x54')]===_0xef4a('0x55')){var _0x577655=_0x5d4e8a[_0xef4a('0x27')]({'plain':!![]});return db[_0xef4a('0x56')][_0xef4a('0x4c')]({'where':{'name':_0xef4a('0x28'),'userProfileId':_0x49247f[_0xef4a('0x57')]},'raw':!![]})[_0xef4a('0x13')](function(_0x161e8a){if(_0x161e8a&&_0x161e8a[_0xef4a('0x58')]===0x0){return db['UserProfileResource'][_0xef4a('0x52')]({'name':_0x577655[_0xef4a('0x2a')],'resourceId':_0x577655['id'],'type':_0x161e8a[_0xef4a('0x2a')],'sectionId':_0x161e8a['id']},{})['then'](function(){return _0x5d4e8a;});}else{return _0x5d4e8a;}})[_0xef4a('0x1d')](function(_0x2dc09f){logger[_0xef4a('0x19')](_0xef4a('0x62'),_0x2dc09f);throw _0x2dc09f;});}return _0x5d4e8a;})[_0xef4a('0x13')](respondWithResult(_0x2967ed,0xc9))[_0xef4a('0x1d')](handleError(_0x2967ed,null));};exports[_0xef4a('0x25')]=function(_0x4bd684,_0x162613,_0xdc5e64){var _0x1430b3;return db['Trunk']['find']({'where':{'id':_0x4bd684['params']['id']}})[_0xef4a('0x13')](handleEntityNotFound(_0x162613,null))[_0xef4a('0x13')](saveUpdates(_0x4bd684['body'],null))['then'](function(_0x56616b){if(_0x56616b){_0x1430b3=_0x56616b;return db[_0xef4a('0x2c')][_0xef4a('0x63')]({'raw':!![]});}})['then'](function(_0x22946a){if(_0x22946a){var _0x4fee07=fs['readFileSync'](path[_0xef4a('0x59')](config['root'],_0xef4a('0x5a')),_0xef4a('0x64'));var _0x5ddfd6=fs[_0xef4a('0x65')](path['join'](config[_0xef4a('0x5b')],_0xef4a('0x5c')),_0xef4a('0x64'));var _0x566f9f=ejs[_0xef4a('0x5d')](_0x4fee07,{'trunks':_0x22946a||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_trunks.conf',_0x566f9f);var _0x9bb369=ejs['render'](_0x5ddfd6,{'trunks':_0x22946a||[]});fs[_0xef4a('0x5e')](_0xef4a('0x66'),_0x9bb369);return respondWithRpcPromise('Reload',_0xef4a('0x25'),{'module':_0xef4a('0x61')});}return null;})['then'](function(_0x2dcecb){if(_0x2dcecb){return _0x1430b3;}})[_0xef4a('0x13')](respondWithResult(_0x162613,null))['catch'](handleError(_0x162613,null));};exports['destroy']=function(_0xdb69d4,_0x4ff679,_0x3e260b){var _0x8a0767;return db['Trunk'][_0xef4a('0x4c')]({'where':{'id':_0xdb69d4[_0xef4a('0x4a')]['id']}})[_0xef4a('0x13')](handleEntityNotFound(_0x4ff679,null))['then'](removeEntity(_0x4ff679,null))[_0xef4a('0x13')](function(){return db[_0xef4a('0x2c')][_0xef4a('0x63')]({'raw':!![]});})['then'](function(_0xd434f4){var _0x20bcde=fs[_0xef4a('0x65')](path[_0xef4a('0x59')](config[_0xef4a('0x5b')],_0xef4a('0x5a')),_0xef4a('0x64'));var _0x43a8ae=fs[_0xef4a('0x65')](path[_0xef4a('0x59')](config['root'],'server/files/templates/registry.ejs'),_0xef4a('0x64'));var _0x5a6025=ejs[_0xef4a('0x5d')](_0x20bcde,{'trunks':_0xd434f4});var _0x26d1e2=ejs[_0xef4a('0x5d')](_0x43a8ae,{'trunks':_0xd434f4});fs[_0xef4a('0x5e')](_0xef4a('0x5f'),_0x5a6025);fs[_0xef4a('0x5e')](_0xef4a('0x66'),_0x26d1e2);return respondWithRpcPromise(_0xef4a('0x60'),_0xef4a('0x26'),{'module':_0xef4a('0x61')});})[_0xef4a('0x1d')](handleError(_0x4ff679,null));};
\ No newline at end of file
+var _0x63ce=['utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','server/files/templates/registry.ejs','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','json','offset','set','Content-Range','save','update','destroy','get','Trunks','UserProfileResource','then','stack','name','send','index','Trunk','model','keys','query','dateStart','intersection','attributes','length','limit','order','sort','where','pick','filters','dateEnd','add','day','merge','filter','map','type','field','options','count','includeAll','findAll','show','params','rawAttributes','fields','include','find','clone','omit','createdAt','updatedAt','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/trunk.ejs'];(function(_0x4fdbc9,_0x38184f){var _0x1afd74=function(_0x5106fb){while(--_0x5106fb){_0x4fdbc9['push'](_0x4fdbc9['shift']());}};_0x1afd74(++_0x38184f);}(_0x63ce,0x147));var _0xe63c=function(_0x152678,_0x11e0ac){_0x152678=_0x152678-0x0;var _0x311a9=_0x63ce[_0x152678];return _0x311a9;};'use strict';var pdf=require(_0xe63c('0x0'));var emlformat=require(_0xe63c('0x1'));var rimraf=require(_0xe63c('0x2'));var zipdir=require(_0xe63c('0x3'));var jsonpatch=require(_0xe63c('0x4'));var rp=require(_0xe63c('0x5'));var moment=require('moment');var BPromise=require(_0xe63c('0x6'));var Mustache=require(_0xe63c('0x7'));var util=require(_0xe63c('0x8'));var path=require(_0xe63c('0x9'));var sox=require('sox');var csv=require(_0xe63c('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0xe63c('0xb'));var jsforce=require(_0xe63c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe63c('0xa'));var querystring=require(_0xe63c('0xd'));var Papa=require('papaparse');var Redis=require(_0xe63c('0xe'));var qs=require(_0xe63c('0xf'));var logger=require(_0xe63c('0x10'))(_0xe63c('0x11'));var utils=require(_0xe63c('0x12'));var config=require('../../config/environment');var db=require(_0xe63c('0x13'))['db'];var jayson=require(_0xe63c('0x14'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x245962,_0x2e4cbf,_0x5f0c6c,_0xa24a15){return new BPromise(function(_0x2c1f7f,_0x4eae80){var _0x5c0e61=_0xa24a15||client;return _0x5c0e61['request'](_0x245962,_0x5f0c6c)['then'](function(_0xf3046a){logger[_0xe63c('0x15')](_0xe63c('0x16'),_0x2e4cbf,_0xe63c('0x17'));logger[_0xe63c('0x18')](_0xe63c('0x19'),_0x2e4cbf,_0xe63c('0x17'),JSON[_0xe63c('0x1a')](_0xf3046a));if(_0xf3046a[_0xe63c('0x1b')]){if(_0xf3046a[_0xe63c('0x1b')]['code']===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x2e4cbf,_0xf3046a[_0xe63c('0x1b')][_0xe63c('0x1c')]);return _0x4eae80(_0xf3046a['error'][_0xe63c('0x1c')]);}logger[_0xe63c('0x1b')]('Trunk,\x20%s,\x20%s',_0x2e4cbf,_0xf3046a[_0xe63c('0x1b')][_0xe63c('0x1c')]);return _0x2c1f7f(_0xf3046a[_0xe63c('0x1b')][_0xe63c('0x1c')]);}else{logger['info'](_0xe63c('0x16'),_0x2e4cbf,'request\x20sent');_0x2c1f7f(_0xf3046a['result'][_0xe63c('0x1c')]);}})[_0xe63c('0x1d')](function(_0x4022a4){logger['error']('Trunk,\x20%s,\x20%s',_0x2e4cbf,_0x4022a4);_0x4eae80(_0x4022a4);});});}function respondWithStatusCode(_0x54b1a7,_0x2eb368){_0x2eb368=_0x2eb368||0xcc;return function(_0x43f8fa){if(_0x43f8fa){return _0x54b1a7[_0xe63c('0x1e')](_0x2eb368);}return _0x54b1a7[_0xe63c('0x1f')](_0x2eb368)[_0xe63c('0x20')]();};}function respondWithResult(_0x51b31,_0x13ceaf){_0x13ceaf=_0x13ceaf||0xc8;return function(_0x34da92){if(_0x34da92){return _0x51b31[_0xe63c('0x1f')](_0x13ceaf)[_0xe63c('0x21')](_0x34da92);}};}function respondWithFilteredResult(_0x3ad4b6,_0x8f585){return function(_0x19a190){if(_0x19a190){var _0x45f2d2=_0x19a190['count'],_0x4d26f2=_0x8f585[_0xe63c('0x22')],_0x27d4a1=_0x8f585[_0xe63c('0x22')]+_0x8f585['limit'],_0x10d0fd;if(_0x27d4a1>=_0x45f2d2){_0x27d4a1=_0x45f2d2;_0x10d0fd=0xc8;}else{_0x10d0fd=0xce;}_0x3ad4b6['status'](_0x10d0fd);return _0x3ad4b6[_0xe63c('0x23')](_0xe63c('0x24'),_0x4d26f2+'-'+_0x27d4a1+'/'+_0x45f2d2)[_0xe63c('0x21')](_0x19a190);}return null;};}function patchUpdates(_0x27519d){return function(_0x51569a){try{jsonpatch['apply'](_0x51569a,_0x27519d,!![]);}catch(_0x2dfbc7){return BPromise['reject'](_0x2dfbc7);}return _0x51569a[_0xe63c('0x25')]();};}function saveUpdates(_0x35ec1a,_0x1563bc){return function(_0x16b52e){if(_0x16b52e){return _0x16b52e[_0xe63c('0x26')](_0x35ec1a)['then'](function(_0x5cf687){return _0x5cf687;});}return null;};}function removeEntity(_0x33ede4,_0x333bf1){return function(_0x58c4a6){if(_0x58c4a6){return _0x58c4a6[_0xe63c('0x27')]()['then'](function(){var _0x36b43a=_0x58c4a6[_0xe63c('0x28')]({'plain':!![]});var _0x3eb6a2=_0xe63c('0x29');return db[_0xe63c('0x2a')]['destroy']({'where':{'type':_0x3eb6a2,'resourceId':_0x36b43a['id']}})['then'](function(){return _0x58c4a6;});})[_0xe63c('0x2b')](function(){_0x33ede4[_0xe63c('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14f1e6,_0x4a8ed7){return function(_0x563ed8){if(!_0x563ed8){_0x14f1e6[_0xe63c('0x1e')](0x194);}return _0x563ed8;};}function handleError(_0x12fc75,_0x9b6073){_0x9b6073=_0x9b6073||0x1f4;return function(_0x4668a2){logger[_0xe63c('0x1b')](_0x4668a2[_0xe63c('0x2c')]);if(_0x4668a2[_0xe63c('0x2d')]){delete _0x4668a2['name'];}_0x12fc75[_0xe63c('0x1f')](_0x9b6073)[_0xe63c('0x2e')](_0x4668a2);};}exports[_0xe63c('0x2f')]=function(_0x40d06b,_0xf4d778){var _0x26b518={},_0x392828={},_0xab866f={'count':0x0,'rows':[]};var _0x20dbfa=db[_0xe63c('0x30')]['rawAttributes'];_0x392828[_0xe63c('0x31')]=_[_0xe63c('0x32')](_0x20dbfa);var _0x158fee={'dateStart':_0x40d06b[_0xe63c('0x33')][_0xe63c('0x34')],'dateEnd':_0x40d06b['query']['dateEnd']};delete _0x40d06b[_0xe63c('0x33')][_0xe63c('0x34')];delete _0x40d06b[_0xe63c('0x33')]['dateEnd'];_0x392828[_0xe63c('0x33')]=_[_0xe63c('0x32')](_0x40d06b['query']);_0x392828['filters']=_[_0xe63c('0x35')](_0x392828[_0xe63c('0x31')],_0x392828[_0xe63c('0x33')]);_0x26b518['attributes']=_['intersection'](_0x392828[_0xe63c('0x31')],qs['fields'](_0x40d06b[_0xe63c('0x33')]['fields']));_0x26b518[_0xe63c('0x36')]=_0x26b518['attributes'][_0xe63c('0x37')]?_0x26b518['attributes']:_0x392828[_0xe63c('0x31')];if(!_0x40d06b[_0xe63c('0x33')]['hasOwnProperty']('nolimit')){_0x26b518['limit']=qs['limit'](_0x40d06b['query'][_0xe63c('0x38')]);_0x26b518['offset']=qs[_0xe63c('0x22')](_0x40d06b[_0xe63c('0x33')][_0xe63c('0x22')]);}_0x26b518[_0xe63c('0x39')]=qs[_0xe63c('0x3a')](_0x40d06b[_0xe63c('0x33')][_0xe63c('0x3a')]);_0x26b518[_0xe63c('0x3b')]=qs['filters'](_[_0xe63c('0x3c')](_0x40d06b['query'],_0x392828[_0xe63c('0x3d')]));if(_0x158fee[_0xe63c('0x34')]){if(_0x158fee[_0xe63c('0x3e')]){_0x158fee['dateEnd']=moment(_0x158fee[_0xe63c('0x3e')])[_0xe63c('0x3f')](0x1,_0xe63c('0x40'));}else{_0x158fee['dateEnd']=moment(_0x158fee[_0xe63c('0x34')])[_0xe63c('0x3f')](0x1,_0xe63c('0x40'));}_[_0xe63c('0x41')](_0x26b518['where'],{'createdAt':{'$gte':_0x158fee[_0xe63c('0x34')],'$lte':_0x158fee['dateEnd']}});}if(_0x40d06b[_0xe63c('0x33')][_0xe63c('0x42')]){_0x26b518['where']=_[_0xe63c('0x41')](_0x26b518[_0xe63c('0x3b')],{'$or':_[_0xe63c('0x43')](_0x20dbfa,function(_0x181e2b){if(_0x181e2b[_0xe63c('0x44')]['key']!=='VIRTUAL'){var _0x4d9bd2={};_0x4d9bd2[_0x181e2b[_0xe63c('0x45')]]={'$like':'%'+_0x40d06b[_0xe63c('0x33')]['filter']+'%'};return _0x4d9bd2;}})});}_0x26b518=_[_0xe63c('0x41')]({},_0x26b518,_0x40d06b[_0xe63c('0x46')]);var _0x153f37={'where':_0x26b518[_0xe63c('0x3b')]};return db[_0xe63c('0x30')][_0xe63c('0x47')](_0x153f37)[_0xe63c('0x2b')](function(_0x592fb8){_0xab866f[_0xe63c('0x47')]=_0x592fb8;if(_0x40d06b[_0xe63c('0x33')][_0xe63c('0x48')]){_0x26b518['include']=[{'all':!![]}];}return db[_0xe63c('0x30')][_0xe63c('0x49')](_0x26b518);})[_0xe63c('0x2b')](function(_0x173dc4){_0xab866f['rows']=_0x173dc4;return _0xab866f;})[_0xe63c('0x2b')](respondWithFilteredResult(_0xf4d778,_0x26b518))[_0xe63c('0x1d')](handleError(_0xf4d778,null));};exports[_0xe63c('0x4a')]=function(_0x46de9b,_0x5c3e63){var _0x227168={'raw':![],'where':{'id':_0x46de9b[_0xe63c('0x4b')]['id']}},_0x26297f={};_0x26297f[_0xe63c('0x31')]=_['keys'](db[_0xe63c('0x30')][_0xe63c('0x4c')]);_0x26297f[_0xe63c('0x33')]=_[_0xe63c('0x32')](_0x46de9b[_0xe63c('0x33')]);_0x26297f['filters']=_[_0xe63c('0x35')](_0x26297f[_0xe63c('0x31')],_0x26297f[_0xe63c('0x33')]);_0x227168[_0xe63c('0x36')]=_[_0xe63c('0x35')](_0x26297f[_0xe63c('0x31')],qs[_0xe63c('0x4d')](_0x46de9b[_0xe63c('0x33')][_0xe63c('0x4d')]));_0x227168['attributes']=_0x227168[_0xe63c('0x36')][_0xe63c('0x37')]?_0x227168[_0xe63c('0x36')]:_0x26297f[_0xe63c('0x31')];if(_0x46de9b[_0xe63c('0x33')][_0xe63c('0x48')]){_0x227168[_0xe63c('0x4e')]=[{'all':!![]}];}_0x227168=_[_0xe63c('0x41')]({},_0x227168,_0x46de9b[_0xe63c('0x46')]);return db[_0xe63c('0x30')][_0xe63c('0x4f')](_0x227168)[_0xe63c('0x2b')](handleEntityNotFound(_0x5c3e63,null))['then'](respondWithResult(_0x5c3e63,null))[_0xe63c('0x1d')](handleError(_0x5c3e63,null));};exports[_0xe63c('0x50')]=function(_0x2ad67e,_0x31c1ab){var _0x9e290f={'raw':![],'where':{'id':_0x2ad67e[_0xe63c('0x4b')]['id']}},_0x1fa559={};_0x1fa559[_0xe63c('0x31')]=_[_0xe63c('0x32')](db[_0xe63c('0x30')][_0xe63c('0x4c')]);_0x9e290f[_0xe63c('0x36')]=_[_0xe63c('0x35')](_0x1fa559['model'],qs[_0xe63c('0x4d')](_0x2ad67e[_0xe63c('0x33')][_0xe63c('0x4d')]));_0x9e290f[_0xe63c('0x36')]=_0x9e290f[_0xe63c('0x36')][_0xe63c('0x37')]?_0x9e290f[_0xe63c('0x36')]:_0x1fa559[_0xe63c('0x31')];if(_0x2ad67e[_0xe63c('0x33')][_0xe63c('0x48')]){_0x9e290f[_0xe63c('0x4e')]=[{'all':!![]}];}_0x9e290f=_[_0xe63c('0x41')]({},_0x9e290f,_0x2ad67e[_0xe63c('0x46')]);return db[_0xe63c('0x30')][_0xe63c('0x4f')](_0x9e290f)['then'](handleEntityNotFound(_0x31c1ab,null))[_0xe63c('0x2b')](function(_0x3504a7){if(_0x3504a7){var _0x26032d=_0x3504a7[_0xe63c('0x28')]({'plain':!![]});_0x26032d=qs[_0xe63c('0x51')](_0x26032d,['id',_0xe63c('0x52'),_0xe63c('0x53')]);_0x2ad67e[_0xe63c('0x54')]=_['omit'](_0x2ad67e[_0xe63c('0x54')],['id',_0xe63c('0x52'),_0xe63c('0x53')]);return db[_0xe63c('0x30')]['create'](_[_0xe63c('0x41')](_0x26032d,_0x2ad67e[_0xe63c('0x54')]),{'include':_0x2ad67e['query'][_0xe63c('0x48')]?[{'all':!![]}]:undefined})[_0xe63c('0x2b')](function(_0x5acf3e){var _0x109ab2=_0x2ad67e[_0xe63c('0x55')][_0xe63c('0x28')]({'plain':!![]});if(!_0x109ab2)throw new Error(_0xe63c('0x56'));if(_0x109ab2[_0xe63c('0x57')]===_0xe63c('0x55')){var _0x18f77a=_0x5acf3e[_0xe63c('0x28')]({'plain':!![]});var _0x564cc1='Trunks';return db[_0xe63c('0x58')][_0xe63c('0x4f')]({'where':{'name':_0x564cc1,'userProfileId':_0x109ab2[_0xe63c('0x59')]},'raw':!![]})[_0xe63c('0x2b')](function(_0x50be7d){if(_0x50be7d&&_0x50be7d[_0xe63c('0x5a')]===0x0){return db[_0xe63c('0x2a')][_0xe63c('0x5b')]({'name':_0x18f77a[_0xe63c('0x2d')],'resourceId':_0x18f77a['id'],'type':_0x50be7d[_0xe63c('0x2d')],'sectionId':_0x50be7d['id']},{})[_0xe63c('0x2b')](function(){return _0x5acf3e;});}else{return _0x5acf3e;}})[_0xe63c('0x1d')](function(_0x5ce565){logger[_0xe63c('0x1b')](_0xe63c('0x5c'),_0x5ce565);throw _0x5ce565;});}return _0x5acf3e;});}})[_0xe63c('0x2b')](respondWithResult(_0x31c1ab,0xc9))[_0xe63c('0x1d')](handleError(_0x31c1ab,null));};exports['create']=function(_0x3856fb,_0x23a069,_0x3f2ffb){var _0x27d352;return db[_0xe63c('0x30')]['create'](_0x3856fb[_0xe63c('0x54')],{'raw':!![]})[_0xe63c('0x2b')](function(_0x53cc3e){_0x27d352=_0x53cc3e;return db[_0xe63c('0x30')][_0xe63c('0x49')]({'raw':!![]});})[_0xe63c('0x2b')](function(_0x16a973){var _0x2e661f=fs[_0xe63c('0x5d')](path[_0xe63c('0x5e')](config[_0xe63c('0x5f')],_0xe63c('0x60')),'utf8');var _0x52e838=fs[_0xe63c('0x5d')](path[_0xe63c('0x5e')](config[_0xe63c('0x5f')],'server/files/templates/registry.ejs'),_0xe63c('0x61'));var _0x1960b5=ejs[_0xe63c('0x62')](_0x2e661f,{'trunks':_0x16a973||[]});fs[_0xe63c('0x63')](_0xe63c('0x64'),_0x1960b5);if(_0x27d352[_0xe63c('0x65')]){var _0x2eaf7b=ejs[_0xe63c('0x62')](_0x52e838,{'trunks':_0x16a973||[]});fs[_0xe63c('0x63')](_0xe63c('0x66'),_0x2eaf7b);}})[_0xe63c('0x2b')](function(){return respondWithRpcPromise(_0xe63c('0x67'),_0xe63c('0x5b'),{'module':'chan_sip.so'});})[_0xe63c('0x2b')](function(){var _0x5719e5=_0x3856fb[_0xe63c('0x55')][_0xe63c('0x28')]({'plain':!![]});if(!_0x5719e5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5719e5[_0xe63c('0x57')]===_0xe63c('0x55')){var _0x15d394=_0x27d352[_0xe63c('0x28')]({'plain':!![]});return db[_0xe63c('0x58')][_0xe63c('0x4f')]({'where':{'name':_0xe63c('0x29'),'userProfileId':_0x5719e5['userProfileId']},'raw':!![]})[_0xe63c('0x2b')](function(_0x8e8b5d){if(_0x8e8b5d&&_0x8e8b5d[_0xe63c('0x5a')]===0x0){return db[_0xe63c('0x2a')][_0xe63c('0x5b')]({'name':_0x15d394[_0xe63c('0x2d')],'resourceId':_0x15d394['id'],'type':_0x8e8b5d[_0xe63c('0x2d')],'sectionId':_0x8e8b5d['id']},{})[_0xe63c('0x2b')](function(){return _0x27d352;});}else{return _0x27d352;}})[_0xe63c('0x1d')](function(_0x3ab834){logger[_0xe63c('0x1b')](_0xe63c('0x5c'),_0x3ab834);throw _0x3ab834;});}return _0x27d352;})[_0xe63c('0x2b')](respondWithResult(_0x23a069,0xc9))[_0xe63c('0x1d')](handleError(_0x23a069,null));};exports[_0xe63c('0x26')]=function(_0x31be8b,_0x54647d,_0x58697f){var _0x5a2f17;return db[_0xe63c('0x30')]['find']({'where':{'id':_0x31be8b[_0xe63c('0x4b')]['id']}})[_0xe63c('0x2b')](handleEntityNotFound(_0x54647d,null))[_0xe63c('0x2b')](saveUpdates(_0x31be8b[_0xe63c('0x54')],null))[_0xe63c('0x2b')](function(_0x4fbe36){if(_0x4fbe36){_0x5a2f17=_0x4fbe36;return db[_0xe63c('0x30')][_0xe63c('0x49')]({'raw':!![]});}})[_0xe63c('0x2b')](function(_0x167c88){if(_0x167c88){var _0x2a75f5=fs['readFileSync'](path['join'](config[_0xe63c('0x5f')],_0xe63c('0x60')),_0xe63c('0x61'));var _0x152850=fs[_0xe63c('0x5d')](path[_0xe63c('0x5e')](config['root'],'server/files/templates/registry.ejs'),_0xe63c('0x61'));var _0x55e200=ejs['render'](_0x2a75f5,{'trunks':_0x167c88||[]});fs[_0xe63c('0x63')]('/etc/asterisk/sip_xcally_trunks.conf',_0x55e200);var _0x4e0704=ejs['render'](_0x152850,{'trunks':_0x167c88||[]});fs[_0xe63c('0x63')]('/etc/asterisk/sip_xcally_registers.conf',_0x4e0704);return respondWithRpcPromise(_0xe63c('0x67'),'update',{'module':_0xe63c('0x68')});}return null;})['then'](function(_0x374170){if(_0x374170){return _0x5a2f17;}})[_0xe63c('0x2b')](respondWithResult(_0x54647d,null))['catch'](handleError(_0x54647d,null));};exports[_0xe63c('0x27')]=function(_0x118da1,_0x912ba,_0x1394de){var _0x241151;return db['Trunk']['find']({'where':{'id':_0x118da1[_0xe63c('0x4b')]['id']}})[_0xe63c('0x2b')](handleEntityNotFound(_0x912ba,null))[_0xe63c('0x2b')](removeEntity(_0x912ba,null))[_0xe63c('0x2b')](function(){return db[_0xe63c('0x30')]['findAll']({'raw':!![]});})['then'](function(_0x26e257){var _0x36621a=fs[_0xe63c('0x5d')](path[_0xe63c('0x5e')](config[_0xe63c('0x5f')],_0xe63c('0x60')),_0xe63c('0x61'));var _0x45880a=fs[_0xe63c('0x5d')](path['join'](config[_0xe63c('0x5f')],_0xe63c('0x69')),_0xe63c('0x61'));var _0x1c2d1c=ejs[_0xe63c('0x62')](_0x36621a,{'trunks':_0x26e257});var _0x500891=ejs[_0xe63c('0x62')](_0x45880a,{'trunks':_0x26e257});fs['writeFileSync'](_0xe63c('0x64'),_0x1c2d1c);fs[_0xe63c('0x63')](_0xe63c('0x66'),_0x500891);return respondWithRpcPromise(_0xe63c('0x67'),_0xe63c('0x27'),{'module':'chan_sip.so'});})[_0xe63c('0x1d')](handleError(_0x912ba,null));};
\ No newline at end of file
index 11172e6..eb57ec9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4746=['exports','define','Trunk','tools_trunks','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x333b2f,_0x55aa90){var _0x104646=function(_0x3e1138){while(--_0x3e1138){_0x333b2f['push'](_0x333b2f['shift']());}};_0x104646(++_0x55aa90);}(_0x4746,0x136));var _0x6474=function(_0x5d6267,_0x4b123c){_0x5d6267=_0x5d6267-0x0;var _0x1753c8=_0x4746[_0x5d6267];return _0x1753c8;};'use strict';var _=require(_0x6474('0x0'));var util=require('util');var logger=require(_0x6474('0x1'))('api');var moment=require(_0x6474('0x2'));var BPromise=require(_0x6474('0x3'));var rp=require(_0x6474('0x4'));var attributes=require('./trunk.attributes');module[_0x6474('0x5')]=function(_0x310b15,_0x2d85ef){return _0x310b15[_0x6474('0x6')](_0x6474('0x7'),attributes,{'tableName':_0x6474('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x83fa=['request-promise','./trunk.attributes','exports','define','Trunk','lodash','../../config/logger','moment'];(function(_0xaa3cb4,_0x3b9757){var _0x30fe5b=function(_0x58b145){while(--_0x58b145){_0xaa3cb4['push'](_0xaa3cb4['shift']());}};_0x30fe5b(++_0x3b9757);}(_0x83fa,0x8d));var _0xa83f=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x83fa[_0x5e3b04];return _0x1fc44d;};'use strict';var _=require(_0xa83f('0x0'));var util=require('util');var logger=require(_0xa83f('0x1'))('api');var moment=require(_0xa83f('0x2'));var BPromise=require('bluebird');var rp=require(_0xa83f('0x3'));var attributes=require(_0xa83f('0x4'));module[_0xa83f('0x5')]=function(_0x219467,_0x3df41c){return _0x219467[_0xa83f('0x6')](_0xa83f('0x7'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d59d034..e3b82ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd864=['request\x20sent','debug','stringify','error','message','result','catch','GetTrunk','Trunk','options','raw','where','attributes','include','map','model','find','ShowTrunk','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xd864,0xde));var _0x4d86=function(_0x53116e,_0x2a74aa){_0x53116e=_0x53116e-0x0;var _0x198f7f=_0xd864[_0x53116e];return _0x198f7f;};'use strict';var _=require(_0x4d86('0x0'));var util=require(_0x4d86('0x1'));var moment=require(_0x4d86('0x2'));var BPromise=require(_0x4d86('0x3'));var rs=require(_0x4d86('0x4'));var fs=require('fs');var Redis=require(_0x4d86('0x5'));var db=require(_0x4d86('0x6'))['db'];var utils=require(_0x4d86('0x7'));var logger=require(_0x4d86('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4d86('0x9'));var client=jayson[_0x4d86('0xa')][_0x4d86('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1568e9,_0x39dcf9,_0x537119){return new BPromise(function(_0xbd242b,_0x40fb09){return client[_0x4d86('0xc')](_0x1568e9,_0x537119)[_0x4d86('0xd')](function(_0x2a4d31){logger[_0x4d86('0xe')](_0x4d86('0xf'),_0x39dcf9,_0x4d86('0x10'));logger[_0x4d86('0x11')]('Trunk,\x20%s,\x20%s,\x20%s',_0x39dcf9,_0x4d86('0x10'),JSON[_0x4d86('0x12')](_0x2a4d31));if(_0x2a4d31[_0x4d86('0x13')]){if(_0x2a4d31['error']['code']===0x1f4){logger[_0x4d86('0x13')]('Trunk,\x20%s,\x20%s',_0x39dcf9,_0x2a4d31[_0x4d86('0x13')][_0x4d86('0x14')]);return _0x40fb09(_0x2a4d31[_0x4d86('0x13')][_0x4d86('0x14')]);}logger[_0x4d86('0x13')](_0x4d86('0xf'),_0x39dcf9,_0x2a4d31[_0x4d86('0x13')][_0x4d86('0x14')]);return _0xbd242b(_0x2a4d31[_0x4d86('0x13')][_0x4d86('0x14')]);}else{logger['info'](_0x4d86('0xf'),_0x39dcf9,'request\x20sent');_0xbd242b(_0x2a4d31[_0x4d86('0x15')][_0x4d86('0x14')]);}})[_0x4d86('0x16')](function(_0x49eda3){logger[_0x4d86('0x13')](_0x4d86('0xf'),_0x39dcf9,_0x49eda3);_0x40fb09(_0x49eda3);});});}exports[_0x4d86('0x17')]=function(_0x3137e9){var _0x336325=this;return new Promise(function(_0x4c6d21,_0x5de667){return db[_0x4d86('0x18')]['findAll']({'raw':_0x3137e9[_0x4d86('0x19')]?_0x3137e9[_0x4d86('0x19')][_0x4d86('0x1a')]===undefined?!![]:![]:!![],'where':_0x3137e9[_0x4d86('0x19')]?_0x3137e9['options'][_0x4d86('0x1b')]||null:null,'attributes':_0x3137e9[_0x4d86('0x19')]?_0x3137e9[_0x4d86('0x19')][_0x4d86('0x1c')]||null:null,'limit':_0x3137e9[_0x4d86('0x19')]?_0x3137e9[_0x4d86('0x19')]['limit']||null:null,'include':_0x3137e9[_0x4d86('0x19')]?_0x3137e9[_0x4d86('0x19')][_0x4d86('0x1d')]?_[_0x4d86('0x1e')](_0x3137e9[_0x4d86('0x19')][_0x4d86('0x1d')],function(_0x532718){return{'model':db[_0x532718[_0x4d86('0x1f')]],'as':_0x532718['as'],'attributes':_0x532718[_0x4d86('0x1c')],'include':_0x532718[_0x4d86('0x1d')]?_[_0x4d86('0x1e')](_0x532718[_0x4d86('0x1d')],function(_0x40c6a2){return{'model':db[_0x40c6a2['model']],'as':_0x40c6a2['as'],'attributes':_0x40c6a2['attributes'],'include':_0x40c6a2['include']?_[_0x4d86('0x1e')](_0x40c6a2['include'],function(_0x202d68){return{'model':db[_0x202d68['model']],'as':_0x202d68['as'],'attributes':_0x202d68[_0x4d86('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4d86('0xd')](function(_0xe8c230){logger[_0x4d86('0xe')](_0x4d86('0x17'),_0x3137e9);logger[_0x4d86('0x11')](_0x4d86('0x17'),_0x3137e9,JSON['stringify'](_0xe8c230));_0x4c6d21(_0xe8c230);})[_0x4d86('0x16')](function(_0x3ad642){logger[_0x4d86('0x13')](_0x4d86('0x17'),_0x3ad642['message'],_0x3137e9);_0x5de667(_0x336325['error'](0x1f4,_0x3ad642[_0x4d86('0x14')]));});});};exports['ShowTrunk']=function(_0x5e8345){var _0x3406bf=this;return new Promise(function(_0x5c86e9,_0x33af5d){return db['Trunk'][_0x4d86('0x20')]({'raw':_0x5e8345['options']?_0x5e8345[_0x4d86('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5e8345[_0x4d86('0x19')]?_0x5e8345[_0x4d86('0x19')]['where']||null:null,'attributes':_0x5e8345[_0x4d86('0x19')]?_0x5e8345[_0x4d86('0x19')][_0x4d86('0x1c')]||null:null,'include':_0x5e8345[_0x4d86('0x19')]?_0x5e8345[_0x4d86('0x19')][_0x4d86('0x1d')]?_['map'](_0x5e8345[_0x4d86('0x19')][_0x4d86('0x1d')],function(_0x26a709){return{'model':db[_0x26a709[_0x4d86('0x1f')]],'as':_0x26a709['as'],'attributes':_0x26a709['attributes'],'include':_0x26a709[_0x4d86('0x1d')]?_[_0x4d86('0x1e')](_0x26a709[_0x4d86('0x1d')],function(_0x1d1583){return{'model':db[_0x1d1583[_0x4d86('0x1f')]],'as':_0x1d1583['as'],'attributes':_0x1d1583[_0x4d86('0x1c')],'include':_0x1d1583[_0x4d86('0x1d')]?_[_0x4d86('0x1e')](_0x1d1583[_0x4d86('0x1d')],function(_0x5d37cd){return{'model':db[_0x5d37cd['model']],'as':_0x5d37cd['as'],'attributes':_0x5d37cd[_0x4d86('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4d86('0xd')](function(_0x2329b1){logger[_0x4d86('0xe')]('ShowTrunk',_0x5e8345);logger[_0x4d86('0x11')](_0x4d86('0x21'),_0x5e8345,JSON[_0x4d86('0x12')](_0x2329b1));_0x5c86e9(_0x2329b1);})[_0x4d86('0x16')](function(_0x83c8ea){logger[_0x4d86('0x13')]('ShowTrunk',_0x83c8ea[_0x4d86('0x14')],_0x5e8345);_0x33af5d(_0x3406bf[_0x4d86('0x13')](0x1f4,_0x83c8ea['message']));});});};
\ No newline at end of file
+var _0x7750=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','Trunk','options','raw','attributes','limit','include','map','model','GetTrunk','debug','ShowTrunk','stringify'];(function(_0x1f5143,_0x5e31e6){var _0x383a38=function(_0x2c123c){while(--_0x2c123c){_0x1f5143['push'](_0x1f5143['shift']());}};_0x383a38(++_0x5e31e6);}(_0x7750,0x108));var _0x0775=function(_0x396c65,_0x81aa7b){_0x396c65=_0x396c65-0x0;var _0x354bfd=_0x7750[_0x396c65];return _0x354bfd;};'use strict';var _=require(_0x0775('0x0'));var util=require(_0x0775('0x1'));var moment=require(_0x0775('0x2'));var BPromise=require(_0x0775('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0775('0x4'));var db=require(_0x0775('0x5'))['db'];var utils=require(_0x0775('0x6'));var logger=require('../../config/logger')(_0x0775('0x7'));var config=require('../../config/environment');var jayson=require(_0x0775('0x8'));var client=jayson[_0x0775('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ada74,_0x23aefe,_0x409d0f){return new BPromise(function(_0xe8bae0,_0x43af7b){return client[_0x0775('0xa')](_0x2ada74,_0x409d0f)[_0x0775('0xb')](function(_0x25c086){logger[_0x0775('0xc')](_0x0775('0xd'),_0x23aefe,_0x0775('0xe'));logger['debug'](_0x0775('0xf'),_0x23aefe,_0x0775('0xe'),JSON['stringify'](_0x25c086));if(_0x25c086[_0x0775('0x10')]){if(_0x25c086[_0x0775('0x10')][_0x0775('0x11')]===0x1f4){logger[_0x0775('0x10')](_0x0775('0xd'),_0x23aefe,_0x25c086['error'][_0x0775('0x12')]);return _0x43af7b(_0x25c086[_0x0775('0x10')][_0x0775('0x12')]);}logger[_0x0775('0x10')](_0x0775('0xd'),_0x23aefe,_0x25c086['error']['message']);return _0xe8bae0(_0x25c086[_0x0775('0x10')][_0x0775('0x12')]);}else{logger[_0x0775('0xc')](_0x0775('0xd'),_0x23aefe,_0x0775('0xe'));_0xe8bae0(_0x25c086[_0x0775('0x13')][_0x0775('0x12')]);}})[_0x0775('0x14')](function(_0x301dcb){logger['error'](_0x0775('0xd'),_0x23aefe,_0x301dcb);_0x43af7b(_0x301dcb);});});}exports['GetTrunk']=function(_0x4c7a05){var _0x13f986=this;return new Promise(function(_0x5a5813,_0x11ba81){return db[_0x0775('0x15')]['findAll']({'raw':_0x4c7a05['options']?_0x4c7a05[_0x0775('0x16')][_0x0775('0x17')]===undefined?!![]:![]:!![],'where':_0x4c7a05[_0x0775('0x16')]?_0x4c7a05[_0x0775('0x16')]['where']||null:null,'attributes':_0x4c7a05['options']?_0x4c7a05[_0x0775('0x16')][_0x0775('0x18')]||null:null,'limit':_0x4c7a05[_0x0775('0x16')]?_0x4c7a05[_0x0775('0x16')][_0x0775('0x19')]||null:null,'include':_0x4c7a05[_0x0775('0x16')]?_0x4c7a05['options'][_0x0775('0x1a')]?_[_0x0775('0x1b')](_0x4c7a05[_0x0775('0x16')][_0x0775('0x1a')],function(_0x8ab718){return{'model':db[_0x8ab718[_0x0775('0x1c')]],'as':_0x8ab718['as'],'attributes':_0x8ab718[_0x0775('0x18')],'include':_0x8ab718['include']?_[_0x0775('0x1b')](_0x8ab718['include'],function(_0x17d918){return{'model':db[_0x17d918[_0x0775('0x1c')]],'as':_0x17d918['as'],'attributes':_0x17d918[_0x0775('0x18')],'include':_0x17d918[_0x0775('0x1a')]?_[_0x0775('0x1b')](_0x17d918['include'],function(_0x506877){return{'model':db[_0x506877[_0x0775('0x1c')]],'as':_0x506877['as'],'attributes':_0x506877[_0x0775('0x18')]};}):[]};}):[]};}):[]:[]})[_0x0775('0xb')](function(_0x3a19fe){logger['info'](_0x0775('0x1d'),_0x4c7a05);logger[_0x0775('0x1e')]('GetTrunk',_0x4c7a05,JSON['stringify'](_0x3a19fe));_0x5a5813(_0x3a19fe);})[_0x0775('0x14')](function(_0x18e972){logger[_0x0775('0x10')](_0x0775('0x1d'),_0x18e972['message'],_0x4c7a05);_0x11ba81(_0x13f986[_0x0775('0x10')](0x1f4,_0x18e972['message']));});});};exports[_0x0775('0x1f')]=function(_0x5455aa){var _0x4cf78b=this;return new Promise(function(_0x3b7a3b,_0x43e21c){return db[_0x0775('0x15')]['find']({'raw':_0x5455aa['options']?_0x5455aa['options'][_0x0775('0x17')]===undefined?!![]:![]:!![],'where':_0x5455aa[_0x0775('0x16')]?_0x5455aa[_0x0775('0x16')]['where']||null:null,'attributes':_0x5455aa[_0x0775('0x16')]?_0x5455aa[_0x0775('0x16')]['attributes']||null:null,'include':_0x5455aa[_0x0775('0x16')]?_0x5455aa[_0x0775('0x16')]['include']?_[_0x0775('0x1b')](_0x5455aa[_0x0775('0x16')][_0x0775('0x1a')],function(_0x59ec53){return{'model':db[_0x59ec53[_0x0775('0x1c')]],'as':_0x59ec53['as'],'attributes':_0x59ec53[_0x0775('0x18')],'include':_0x59ec53[_0x0775('0x1a')]?_[_0x0775('0x1b')](_0x59ec53[_0x0775('0x1a')],function(_0x390c9b){return{'model':db[_0x390c9b[_0x0775('0x1c')]],'as':_0x390c9b['as'],'attributes':_0x390c9b[_0x0775('0x18')],'include':_0x390c9b[_0x0775('0x1a')]?_[_0x0775('0x1b')](_0x390c9b[_0x0775('0x1a')],function(_0x456332){return{'model':db[_0x456332[_0x0775('0x1c')]],'as':_0x456332['as'],'attributes':_0x456332['attributes']};}):[]};}):[]};}):[]:[]})[_0x0775('0xb')](function(_0x383a47){logger['info']('ShowTrunk',_0x5455aa);logger[_0x0775('0x1e')](_0x0775('0x1f'),_0x5455aa,JSON[_0x0775('0x20')](_0x383a47));_0x3b7a3b(_0x383a47);})[_0x0775('0x14')](function(_0x42d4b5){logger['error'](_0x0775('0x1f'),_0x42d4b5[_0x0775('0x12')],_0x5455aa);_0x43e21c(_0x4cf78b[_0x0775('0x10')](0x1f4,_0x42d4b5[_0x0775('0x12')]));});});};
\ No newline at end of file
index 0abb1b2..7bc5dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6e0=['create','addQueues','diskStorage','join','root','server/files/images/','%s-%s','now','single','addAvatar','login','/:id/pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addMailAccounts','/:id/openchannel_accounts','addOpenchannelAccounts','addChatWebsites','/:id/square_projects','addSquareProjects','put','update','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeFaxAccounts','removeMailAccounts','removeChatWebsites','removeSquareProjects','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','/describe','/:id','show','/:id/avatar','getAvatar','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','/:id/groups','getGroups','/:id/recordings','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','post','/create_many','addContacts'];(function(_0x4c4980,_0x1be086){var _0x11b4bb=function(_0x437164){while(--_0x437164){_0x4c4980['push'](_0x4c4980['shift']());}};_0x11b4bb(++_0x1be086);}(_0xc6e0,0x14a));var _0x0c6e=function(_0x476068,_0x6f216e){_0x476068=_0x476068-0x0;var _0x4887b7=_0xc6e0[_0x476068];return _0x4887b7;};'use strict';var multer=require('multer');var util=require(_0x0c6e('0x0'));var path=require(_0x0c6e('0x1'));var timeout=require(_0x0c6e('0x2'));var express=require(_0x0c6e('0x3'));var router=express[_0x0c6e('0x4')]();var auth=require(_0x0c6e('0x5'));var interaction=require(_0x0c6e('0x6'));var config=require(_0x0c6e('0x7'));var controller=require(_0x0c6e('0x8'));router[_0x0c6e('0x9')]('/',auth[_0x0c6e('0xa')](),controller['index']);router[_0x0c6e('0x9')](_0x0c6e('0xb'),auth[_0x0c6e('0xa')](),controller['describe']);router[_0x0c6e('0x9')](_0x0c6e('0xc'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0xd')]);router[_0x0c6e('0x9')](_0x0c6e('0xe'),controller[_0x0c6e('0xf')]);router[_0x0c6e('0x9')](_0x0c6e('0x10'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x11')]);router[_0x0c6e('0x9')](_0x0c6e('0x12'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x13')]);router['get'](_0x0c6e('0x14'),auth[_0x0c6e('0xa')](),controller['getVoiceQueuesRt']);router[_0x0c6e('0x9')](_0x0c6e('0x15'),auth['isAuthenticated'](),controller[_0x0c6e('0x16')]);router[_0x0c6e('0x9')](_0x0c6e('0x17'),auth[_0x0c6e('0xa')](),controller['getRecordings']);router[_0x0c6e('0x9')]('/:id/chat/interactions',auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x18')]);router[_0x0c6e('0x9')]('/:id/openchannel/interactions',auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x19')]);router[_0x0c6e('0x9')](_0x0c6e('0x1a'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x1b')]);router[_0x0c6e('0x9')](_0x0c6e('0x1c'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x1d')]);router['get'](_0x0c6e('0x1e'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x1f')]);router[_0x0c6e('0x9')](_0x0c6e('0x20'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x21')]);router[_0x0c6e('0x9')](_0x0c6e('0x22'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x23')]);router['get'](_0x0c6e('0x24'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x25')]);router['get']('/:id/prefixes',auth['isAuthenticated'](),controller[_0x0c6e('0x26')]);router[_0x0c6e('0x9')](_0x0c6e('0x27'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x28')]);router[_0x0c6e('0x9')](_0x0c6e('0x29'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x2a')]);router[_0x0c6e('0x9')]('/:id/openchannel_accounts',auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x2b')]);router[_0x0c6e('0x9')](_0x0c6e('0x2c'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x2d')]);router[_0x0c6e('0x9')](_0x0c6e('0x2e'),auth[_0x0c6e('0xa')](),controller['getChatWebsites']);router[_0x0c6e('0x9')]('/:id/square_projects',auth['isAuthenticated'](),controller['getSquareProjects']);router[_0x0c6e('0x9')]('/:id/scheduled_calls',auth[_0x0c6e('0xa')](),controller['getScheduledCalls']);router[_0x0c6e('0x2f')](_0x0c6e('0x30'),auth[_0x0c6e('0xa')](),controller['bulkCreate']);router[_0x0c6e('0x2f')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x0c6e('0x31')]);router[_0x0c6e('0x2f')]('/',auth['isAuthenticated'](),controller[_0x0c6e('0x32')]);router[_0x0c6e('0x2f')](_0x0c6e('0x12'),auth['isAuthenticated'](),controller[_0x0c6e('0x33')]);var upload=multer({'storage':multer[_0x0c6e('0x34')]({'destination':function(_0x1ed478,_0xc9ecff,_0x58b894){_0x58b894(null,path[_0x0c6e('0x35')](config[_0x0c6e('0x36')],_0x0c6e('0x37')));},'filename':function(_0x1306d0,_0x5bdc38,_0x38a7aa){_0x38a7aa(null,util['format'](_0x0c6e('0x38'),Date[_0x0c6e('0x39')](),_0x5bdc38['originalname']));}})});router[_0x0c6e('0x2f')](_0x0c6e('0xe'),upload[_0x0c6e('0x3a')]('file'),controller[_0x0c6e('0x3b')]);router[_0x0c6e('0x2f')]('/:id/login',auth['isAuthenticated'](),controller[_0x0c6e('0x3c')]);router['post']('/:id/logout',auth[_0x0c6e('0xa')](),controller['logout']);router['post'](_0x0c6e('0x3d'),auth['isAuthenticated'](),controller['pause']);router[_0x0c6e('0x2f')](_0x0c6e('0x3e'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x3f')]);router['post'](_0x0c6e('0x20'),auth['isAuthenticated'](),controller[_0x0c6e('0x40')]);router[_0x0c6e('0x2f')](_0x0c6e('0x41'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x42')]);router['post']('/:id/mail_interactions',auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x43')]);router[_0x0c6e('0x2f')](_0x0c6e('0x44'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x45')]);router[_0x0c6e('0x2f')](_0x0c6e('0x46'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x47')]);router['post'](_0x0c6e('0x48'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x49')]);router[_0x0c6e('0x2f')](_0x0c6e('0x27'),auth[_0x0c6e('0xa')](),controller['addFaxAccounts']);router[_0x0c6e('0x2f')]('/:id/mail_accounts',auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x4a')]);router[_0x0c6e('0x2f')](_0x0c6e('0x4b'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x4c')]);router[_0x0c6e('0x2f')](_0x0c6e('0x2c'),auth[_0x0c6e('0xa')](),controller['addSmsAccounts']);router[_0x0c6e('0x2f')]('/:id/chat_websites',auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x4d')]);router[_0x0c6e('0x2f')](_0x0c6e('0x4e'),auth['isAuthenticated'](),controller[_0x0c6e('0x4f')]);router[_0x0c6e('0x50')](_0x0c6e('0xc'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x51')]);router[_0x0c6e('0x50')]('/:id/password',auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x52')]);router[_0x0c6e('0x53')](_0x0c6e('0x12'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x54')]);router['delete'](_0x0c6e('0x20'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x55')]);router[_0x0c6e('0x53')](_0x0c6e('0xc'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x56')]);router[_0x0c6e('0x53')](_0x0c6e('0x41'),auth['isAuthenticated'](),controller[_0x0c6e('0x57')]);router[_0x0c6e('0x53')]('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0x0c6e('0x58')]);router['delete'](_0x0c6e('0x44'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x59')]);router[_0x0c6e('0x53')](_0x0c6e('0x46'),auth[_0x0c6e('0xa')](),controller['removeSmsInteractions']);router[_0x0c6e('0x53')]('/:id/openchannel_interactions',auth[_0x0c6e('0xa')](),controller['removeOpenchannelInteractions']);router[_0x0c6e('0x53')](_0x0c6e('0x27'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x5a')]);router[_0x0c6e('0x53')](_0x0c6e('0x29'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x5b')]);router[_0x0c6e('0x53')](_0x0c6e('0x4b'),auth[_0x0c6e('0xa')](),controller['removeOpenchannelAccounts']);router[_0x0c6e('0x53')](_0x0c6e('0x2c'),auth[_0x0c6e('0xa')](),controller['removeSmsAccounts']);router[_0x0c6e('0x53')](_0x0c6e('0x2e'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x5c')]);router[_0x0c6e('0x53')](_0x0c6e('0x4e'),auth[_0x0c6e('0xa')](),controller[_0x0c6e('0x5d')]);module[_0x0c6e('0x5e')]=router;
\ No newline at end of file
+var _0x9cc1=['multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/avatar','getAvatar','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/recordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/teams','getTeams','/:id/lists','getLists','getAgents','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getChatWebsites','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','post','bulkCreate','addContacts','diskStorage','join','root','server/files/images/','format','now','originalname','file','addAvatar','/:id/login','login','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','addChatInteractions','/:id/mail_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addFaxAccounts','/:id/mail_accounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addChatWebsites','addSquareProjects','put','update','/:id/password','removeQueues','delete','removeTeams','/:id/chat_interactions','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeFaxAccounts','removeMailAccounts','removeSmsAccounts','removeChatWebsites','removeSquareProjects','exports'];(function(_0x4cac03,_0xde04ff){var _0x13f07b=function(_0x4c26b2){while(--_0x4c26b2){_0x4cac03['push'](_0x4cac03['shift']());}};_0x13f07b(++_0xde04ff);}(_0x9cc1,0x18c));var _0x19cc=function(_0x175e89,_0x20835f){_0x175e89=_0x175e89-0x0;var _0x2ed996=_0x9cc1[_0x175e89];return _0x2ed996;};'use strict';var multer=require(_0x19cc('0x0'));var util=require(_0x19cc('0x1'));var path=require(_0x19cc('0x2'));var timeout=require(_0x19cc('0x3'));var express=require(_0x19cc('0x4'));var router=express[_0x19cc('0x5')]();var auth=require('../../components/auth/service');var interaction=require(_0x19cc('0x6'));var config=require(_0x19cc('0x7'));var controller=require(_0x19cc('0x8'));router[_0x19cc('0x9')]('/',auth[_0x19cc('0xa')](),controller[_0x19cc('0xb')]);router[_0x19cc('0x9')](_0x19cc('0xc'),auth[_0x19cc('0xa')](),controller['describe']);router['get'](_0x19cc('0xd'),auth['isAuthenticated'](),controller[_0x19cc('0xe')]);router[_0x19cc('0x9')](_0x19cc('0xf'),controller[_0x19cc('0x10')]);router[_0x19cc('0x9')]('/:id/contacts',auth[_0x19cc('0xa')](),controller[_0x19cc('0x11')]);router[_0x19cc('0x9')](_0x19cc('0x12'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x13')]);router[_0x19cc('0x9')]('/:id/queues_rt',auth['isAuthenticated'](),controller[_0x19cc('0x14')]);router[_0x19cc('0x9')]('/:id/groups',auth['isAuthenticated'](),controller['getGroups']);router[_0x19cc('0x9')](_0x19cc('0x15'),auth['isAuthenticated'](),controller['getRecordings']);router[_0x19cc('0x9')](_0x19cc('0x16'),auth['isAuthenticated'](),controller[_0x19cc('0x17')]);router[_0x19cc('0x9')](_0x19cc('0x18'),auth[_0x19cc('0xa')](),controller['getOpenchannelInteractions']);router[_0x19cc('0x9')](_0x19cc('0x19'),auth[_0x19cc('0xa')](),controller['getMailInteractions']);router[_0x19cc('0x9')](_0x19cc('0x1a'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x1b')]);router[_0x19cc('0x9')](_0x19cc('0x1c'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x1d')]);router['get'](_0x19cc('0x1e'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x1f')]);router[_0x19cc('0x9')](_0x19cc('0x20'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x21')]);router['get']('/:id/agents',auth[_0x19cc('0xa')](),controller[_0x19cc('0x22')]);router['get']('/:id/prefixes',auth[_0x19cc('0xa')](),controller[_0x19cc('0x23')]);router['get'](_0x19cc('0x24'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x25')]);router['get']('/:id/mail_accounts',auth[_0x19cc('0xa')](),controller[_0x19cc('0x26')]);router[_0x19cc('0x9')](_0x19cc('0x27'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x28')]);router['get'](_0x19cc('0x29'),auth['isAuthenticated'](),controller['getSmsAccounts']);router[_0x19cc('0x9')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x19cc('0x2a')]);router[_0x19cc('0x9')](_0x19cc('0x2b'),auth['isAuthenticated'](),controller[_0x19cc('0x2c')]);router['get'](_0x19cc('0x2d'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x2e')]);router[_0x19cc('0x2f')]('/create_many',auth[_0x19cc('0xa')](),controller[_0x19cc('0x30')]);router[_0x19cc('0x2f')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x19cc('0x31')]);router[_0x19cc('0x2f')]('/',auth[_0x19cc('0xa')](),controller['create']);router[_0x19cc('0x2f')](_0x19cc('0x12'),auth[_0x19cc('0xa')](),controller['addQueues']);var upload=multer({'storage':multer[_0x19cc('0x32')]({'destination':function(_0x3e3e3a,_0x4fc887,_0x50b852){_0x50b852(null,path[_0x19cc('0x33')](config[_0x19cc('0x34')],_0x19cc('0x35')));},'filename':function(_0x498c79,_0x652d80,_0x844ca5){_0x844ca5(null,util[_0x19cc('0x36')]('%s-%s',Date[_0x19cc('0x37')](),_0x652d80[_0x19cc('0x38')]));}})});router[_0x19cc('0x2f')](_0x19cc('0xf'),upload['single'](_0x19cc('0x39')),controller[_0x19cc('0x3a')]);router['post'](_0x19cc('0x3b'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x3c')]);router[_0x19cc('0x2f')]('/:id/logout',auth['isAuthenticated'](),controller[_0x19cc('0x3d')]);router[_0x19cc('0x2f')](_0x19cc('0x3e'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x3f')]);router[_0x19cc('0x2f')](_0x19cc('0x40'),auth['isAuthenticated'](),controller[_0x19cc('0x41')]);router['post'](_0x19cc('0x1e'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x42')]);router[_0x19cc('0x2f')]('/:id/chat_interactions',auth[_0x19cc('0xa')](),controller[_0x19cc('0x43')]);router['post'](_0x19cc('0x44'),auth[_0x19cc('0xa')](),controller['addMailInteractions']);router[_0x19cc('0x2f')]('/:id/fax_interactions',auth[_0x19cc('0xa')](),controller[_0x19cc('0x45')]);router[_0x19cc('0x2f')](_0x19cc('0x46'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x47')]);router['post'](_0x19cc('0x48'),auth[_0x19cc('0xa')](),controller['addOpenchannelInteractions']);router['post']('/:id/fax_accounts',auth['isAuthenticated'](),controller[_0x19cc('0x49')]);router[_0x19cc('0x2f')](_0x19cc('0x4a'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x4b')]);router[_0x19cc('0x2f')](_0x19cc('0x27'),auth['isAuthenticated'](),controller[_0x19cc('0x4c')]);router[_0x19cc('0x2f')]('/:id/sms_accounts',auth['isAuthenticated'](),controller[_0x19cc('0x4d')]);router['post'](_0x19cc('0x4e'),auth['isAuthenticated'](),controller[_0x19cc('0x4f')]);router['post'](_0x19cc('0x2b'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x50')]);router[_0x19cc('0x51')](_0x19cc('0xd'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x52')]);router[_0x19cc('0x51')](_0x19cc('0x53'),auth[_0x19cc('0xa')](),controller['changePassword']);router['delete'](_0x19cc('0x12'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x54')]);router[_0x19cc('0x55')]('/:id/teams',auth[_0x19cc('0xa')](),controller[_0x19cc('0x56')]);router[_0x19cc('0x55')](_0x19cc('0xd'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x19cc('0x57'),auth[_0x19cc('0xa')](),controller['removeChatInteractions']);router[_0x19cc('0x55')](_0x19cc('0x44'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x58')]);router[_0x19cc('0x55')](_0x19cc('0x59'),auth['isAuthenticated'](),controller[_0x19cc('0x5a')]);router['delete'](_0x19cc('0x46'),auth['isAuthenticated'](),controller[_0x19cc('0x5b')]);router[_0x19cc('0x55')](_0x19cc('0x48'),auth['isAuthenticated'](),controller[_0x19cc('0x5c')]);router[_0x19cc('0x55')](_0x19cc('0x24'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x5d')]);router[_0x19cc('0x55')](_0x19cc('0x4a'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x5e')]);router[_0x19cc('0x55')](_0x19cc('0x27'),auth[_0x19cc('0xa')](),controller['removeOpenchannelAccounts']);router[_0x19cc('0x55')](_0x19cc('0x29'),auth[_0x19cc('0xa')](),controller[_0x19cc('0x5f')]);router['delete']('/:id/chat_websites',auth[_0x19cc('0xa')](),controller[_0x19cc('0x60')]);router[_0x19cc('0x55')](_0x19cc('0x2b'),auth['isAuthenticated'](),controller[_0x19cc('0x61')]);module[_0x19cc('0x62')]=router;
\ No newline at end of file
index 2aea97b..d07a994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43d2=['wss','avpf','force_avp','icesupport','dtlsenable','dtlssetup','dtlscertfile','rtcp_mux','encryption','dtlsverify','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','TEXT','permissions','map','sequelize','moment','util','lodash','exports','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','STRING','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','INTEGER','accountcode','fullname','BOOLEAN','DATE','dynamic','friend','peer','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','auto','rfc2833','yes','update','outgoing','force_rport,comedia','nat','allow','join','ulaw;alaw;gsm','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','always','accept','refuse','originate','uas','certificate','active','actpass','nonat','update,nonat','showWebBar','isArray'];(function(_0x2afc30,_0x53ae92){var _0x552f72=function(_0x2e4c7c){while(--_0x2e4c7c){_0x2afc30['push'](_0x2afc30['shift']());}};_0x552f72(++_0x53ae92);}(_0x43d2,0x109));var _0x243d=function(_0x45dac1,_0x3d96bd){_0x45dac1=_0x45dac1-0x0;var _0x3cfafb=_0x43d2[_0x45dac1];return _0x3cfafb;};'use strict';var Sequelize=require(_0x243d('0x0'));var moment=require(_0x243d('0x1'));var util=require(_0x243d('0x2'));var _=require(_0x243d('0x3'));module[_0x243d('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x243d('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x24d648){this[_0x243d('0x6')](_0x243d('0x5'),_0x24d648);this[_0x243d('0x6')](_0x243d('0x7'),_0x24d648);},'comment':_0x243d('0x8')},'fullname':{'type':Sequelize[_0x243d('0x9')],'allowNull':![],'set':function(_0x2f5178){this['setDataValue']('fullname',_0x2f5178);this[_0x243d('0x6')](_0x243d('0xa'),util[_0x243d('0xb')](_0x243d('0xc'),_0x2f5178,this[_0x243d('0xd')](_0x243d('0xe'))));}},'alias':{'type':Sequelize[_0x243d('0x9')]},'email':{'type':Sequelize[_0x243d('0x9')],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x5adf27){if(_0x5adf27){this[_0x243d('0x6')](_0x243d('0xf'),_0x5adf27[_0x243d('0x10')]());}}},'role':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x12'),_0x243d('0x13'),_0x243d('0x14'),_0x243d('0x15')),'allowNull':![]},'password':{'type':Sequelize[_0x243d('0x9')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x243d('0x9')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':![],'unique':_0x243d('0xe'),'set':function(_0x23ce18){this['setDataValue'](_0x243d('0xe'),_0x23ce18);this[_0x243d('0x6')](_0x243d('0x17'),_0x23ce18);this[_0x243d('0x6')](_0x243d('0xa'),util[_0x243d('0xb')](_0x243d('0xc'),this[_0x243d('0xd')](_0x243d('0x18')),_0x23ce18));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x243d('0x9')]},'mobile':{'type':Sequelize[_0x243d('0x9')]},'address':{'type':Sequelize[_0x243d('0x9')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x243d('0x9')]},'city':{'type':Sequelize[_0x243d('0x9')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x243d('0x1a')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x243d('0x9')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x243d('0x1a')]},'chatCapacity':{'type':Sequelize[_0x243d('0x16')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x243d('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x243d('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x243d('0x16')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x243d('0x16')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![],'defaultValue':_0x243d('0x1b')},'ipaddr':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'port':{'type':Sequelize[_0x243d('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x1c'),'user',_0x243d('0x1d')),'allowNull':!![],'defaultValue':_0x243d('0x1c')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x243d('0x1e'),_0x243d('0x1f'),_0x243d('0x20'),_0x243d('0x21'),'PROHIB_PASSED_SCREEN',_0x243d('0x22'),_0x243d('0x23')),'allowNull':!![]},'deny':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'transport':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![],'defaultValue':_0x243d('0x24'),'set':function(_0x290ef4){this['setDataValue']('transport',_0x290ef4?_0x290ef4['join'](','):null);},'get':function(){return this[_0x243d('0xd')](_0x243d('0x25'))?this['getDataValue']('transport')[_0x243d('0x26')](','):null;},'comment':_0x243d('0x27')},'dtmfmode':{'type':Sequelize[_0x243d('0x11')]('rfc2833',_0x243d('0x28'),_0x243d('0x29'),'inband',_0x243d('0x2a')),'allowNull':!![],'defaultValue':_0x243d('0x2b')},'directmedia':{'type':Sequelize['ENUM'](_0x243d('0x2c'),'no','nonat',_0x243d('0x2d'),_0x243d('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![],'defaultValue':_0x243d('0x2f'),'set':function(_0x132c28){this[_0x243d('0x6')](_0x243d('0x30'),_0x132c28?_0x132c28['join'](','):null);},'get':function(){return this[_0x243d('0xd')]('nat')?this['getDataValue'](_0x243d('0x30'))[_0x243d('0x26')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x243d('0x9')]},'namedcallgroup':{'type':Sequelize[_0x243d('0x9')]},'pickupgroup':{'type':Sequelize[_0x243d('0x9')]},'namedpickupgroup':{'type':Sequelize[_0x243d('0x9')]},'language':{'type':Sequelize[_0x243d('0x9')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x243d('0x9')]},'disallow':{'type':Sequelize[_0x243d('0x9')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0x243d('0x9')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x394be0){this['setDataValue'](_0x243d('0x31'),_0x394be0?_0x394be0[_0x243d('0x32')](';'):_0x243d('0x33'));},'get':function(){return this[_0x243d('0xd')]('allow')?this[_0x243d('0xd')](_0x243d('0x31'))[_0x243d('0x26')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![],'set':function(_0x4d59e0){this[_0x243d('0x6')](_0x243d('0x34'),_0x4d59e0?_0x4d59e0[_0x243d('0x32')](','):null);},'get':function(){return this[_0x243d('0xd')](_0x243d('0x34'))?this[_0x243d('0xd')](_0x243d('0x34'))[_0x243d('0x26')](','):null;},'comment':_0x243d('0x35')},'trustrpid':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x243d('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x243d('0x11')]('yes','no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![],'defaultValue':_0x243d('0x36')},'amaflags':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x243d('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x243d('0x11')]('yes','no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x243d('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no',_0x243d('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x38'),_0x243d('0x39'),_0x243d('0x3a')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x243d('0x11')]('uac',_0x243d('0x3b')),'allowNull':!![],'defaultValue':_0x243d('0x3b')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'fromdomain':{'type':Sequelize['STRING'],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no','fingerprint',_0x243d('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0x243d('0x3d'),'passive',_0x243d('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x243d('0x16')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x243d('0x11')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x243d('0x11')](_0x243d('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x243d('0x9')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x243d('0x11')]('yes','no',_0x243d('0x3f'),_0x243d('0x2d'),_0x243d('0x40')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x243d('0x1a')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x9009c9){this[_0x243d('0x6')](_0x243d('0x41'),_0x9009c9);var _0x3674e3=this['get']({'plain':!![]});switch(_0x9009c9){case 0x0:case 0x1:var _0x35b4e5=_0x3674e3[_0x243d('0x25')]?_[_0x243d('0x42')](_0x3674e3[_0x243d('0x25')])?_0x3674e3[_0x243d('0x25')][_0x243d('0x32')]():_0x3674e3['transport']:_0x243d('0x24');if(_0x35b4e5===_0x243d('0x43')){_0x35b4e5=_0x243d('0x24');}this[_0x243d('0x6')]('transport',_0x35b4e5);this[_0x243d('0x6')]('encryption','no');this['setDataValue'](_0x243d('0x44'),null);this[_0x243d('0x6')](_0x243d('0x45'),null);this['setDataValue'](_0x243d('0x46'),null);this['setDataValue'](_0x243d('0x47'),null);this[_0x243d('0x6')]('dtlsverify',null);this[_0x243d('0x6')](_0x243d('0x48'),null);this[_0x243d('0x6')](_0x243d('0x49'),null);this[_0x243d('0x6')]('dtlsprivatekey',null);this[_0x243d('0x6')](_0x243d('0x4a'),'no');break;case 0x2:this[_0x243d('0x6')](_0x243d('0x25'),_0x243d('0x43'));this[_0x243d('0x6')](_0x243d('0x4b'),_0x243d('0x2c'));this[_0x243d('0x6')](_0x243d('0x44'),_0x243d('0x2c'));this['setDataValue'](_0x243d('0x45'),_0x243d('0x2c'));this['setDataValue']('icesupport',_0x243d('0x2c'));this['setDataValue'](_0x243d('0x47'),_0x243d('0x2c'));this[_0x243d('0x6')](_0x243d('0x4c'),'no');this['setDataValue'](_0x243d('0x48'),'actpass');this[_0x243d('0x6')](_0x243d('0x49'),_0x3674e3[_0x243d('0x49')]||_0x243d('0x4d'));this[_0x243d('0x6')]('dtlsprivatekey',_0x3674e3[_0x243d('0x4e')]||_0x243d('0x4f'));this[_0x243d('0x6')]('rtcp_mux',_0x243d('0x2c'));break;default:}}},'permissions':{'type':Sequelize[_0x243d('0x50')],'set':function(_0x34d01a){this[_0x243d('0x6')]('permissions',_0x34d01a?_0x34d01a[_0x243d('0x32')](','):[]);},'get':function(){return this['getDataValue'](_0x243d('0x51'))?_[_0x243d('0x52')](this[_0x243d('0xd')](_0x243d('0x51'))[_0x243d('0x26')](','),function(_0x1323b0){return parseInt(_0x1323b0,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x243d('0x9')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x243d('0x9')]},'phoneBarBusyNumber':{'type':Sequelize[_0x243d('0x9')]},'phoneBarUnconditional':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x243d('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x243d('0x9')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x243d('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x243d('0x11')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x243d('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x243d('0x9')]},'passwordResetAt':{'type':Sequelize[_0x243d('0x1a')],'defaultValue':null},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]},'interface':{'type':Sequelize[_0x243d('0x9')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x243d('0x19')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5050=['from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','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','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','yes','never','\x22\x22\x20<>','always','accept','refuse','fingerprint','certificate','active','passive','actpass','update,nonat','showWebBar','get','wss','encryption','avpf','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','TEXT','permissions','map','sequelize','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','telephone','INTEGER','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','friend'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x5050,0x192));var _0x0505=function(_0x47cbbf,_0x1d0e40){_0x47cbbf=_0x47cbbf-0x0;var _0x119c80=_0x5050[_0x47cbbf];return _0x119c80;};'use strict';var Sequelize=require(_0x0505('0x0'));var moment=require(_0x0505('0x1'));var util=require(_0x0505('0x2'));var _=require(_0x0505('0x3'));module[_0x0505('0x4')]={'name':{'type':Sequelize[_0x0505('0x5')],'allowNull':![],'unique':_0x0505('0x6'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x1cb6ee){this[_0x0505('0x7')](_0x0505('0x6'),_0x1cb6ee);this[_0x0505('0x7')](_0x0505('0x8'),_0x1cb6ee);},'comment':_0x0505('0x9')},'fullname':{'type':Sequelize[_0x0505('0x5')],'allowNull':![],'set':function(_0x246a2e){this[_0x0505('0x7')](_0x0505('0xa'),_0x246a2e);this[_0x0505('0x7')](_0x0505('0xb'),util[_0x0505('0xc')](_0x0505('0xd'),_0x246a2e,this[_0x0505('0xe')](_0x0505('0xf'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x0505('0x5')],'allowNull':![],'unique':_0x0505('0x10'),'validate':{'isEmail':!![]},'set':function(_0x36ff55){if(_0x36ff55){this[_0x0505('0x7')](_0x0505('0x10'),_0x36ff55[_0x0505('0x11')]());}}},'role':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x13'),_0x0505('0x14'),'agent',_0x0505('0x15')),'allowNull':![]},'password':{'type':Sequelize[_0x0505('0x5')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':'local'},'internal':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':![],'unique':_0x0505('0xf'),'set':function(_0x29fb1b){this[_0x0505('0x7')](_0x0505('0xf'),_0x29fb1b);this[_0x0505('0x7')]('accountcode',_0x29fb1b);this[_0x0505('0x7')](_0x0505('0xb'),util[_0x0505('0xc')](_0x0505('0xd'),this[_0x0505('0xe')](_0x0505('0xa')),_0x29fb1b));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x0505('0x5')]},'mobile':{'type':Sequelize[_0x0505('0x5')]},'address':{'type':Sequelize[_0x0505('0x5')]},'zipcode':{'type':Sequelize[_0x0505('0x5')]},'userpic':{'type':Sequelize[_0x0505('0x5')]},'city':{'type':Sequelize[_0x0505('0x5')]},'country':{'type':Sequelize[_0x0505('0x5')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x0505('0x17')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x0505('0x5')],'defaultValue':_0x0505('0x19')},'lastPauseAt':{'type':Sequelize[_0x0505('0x17')]},'chatCapacity':{'type':Sequelize[_0x0505('0x16')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x0505('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x0505('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x0505('0x18')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x0505('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x0505('0x16')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'host':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![],'defaultValue':_0x0505('0x1a')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x0505('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x1b'),'user','peer'),'allowNull':!![],'defaultValue':_0x0505('0x1b')},'context':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![],'defaultValue':_0x0505('0x1c')},'callingpres':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x1d'),_0x0505('0x1e'),_0x0505('0x1f'),_0x0505('0x20'),_0x0505('0x21'),_0x0505('0x22'),_0x0505('0x23'),_0x0505('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![],'defaultValue':_0x0505('0x25'),'set':function(_0x2aca71){this[_0x0505('0x7')](_0x0505('0x26'),_0x2aca71?_0x2aca71[_0x0505('0x27')](','):null);},'get':function(){return this[_0x0505('0xe')]('transport')?this[_0x0505('0xe')](_0x0505('0x26'))['split'](','):null;},'comment':_0x0505('0x28')},'dtmfmode':{'type':Sequelize[_0x0505('0x12')]('rfc2833',_0x0505('0x29'),_0x0505('0x2a'),_0x0505('0x2b'),_0x0505('0x2c')),'allowNull':!![],'defaultValue':_0x0505('0x2d')},'directmedia':{'type':Sequelize[_0x0505('0x12')]('yes','no',_0x0505('0x2e'),_0x0505('0x2f'),_0x0505('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x0505('0x12')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x0505('0x31'),'set':function(_0x17964b){this[_0x0505('0x7')](_0x0505('0x32'),_0x17964b?_0x17964b[_0x0505('0x27')](','):null);},'get':function(){return this[_0x0505('0xe')]('nat')?this[_0x0505('0xe')](_0x0505('0x32'))[_0x0505('0x33')](','):null;},'comment':_0x0505('0x34')},'callgroup':{'type':Sequelize[_0x0505('0x5')]},'namedcallgroup':{'type':Sequelize[_0x0505('0x5')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x0505('0x5')]},'language':{'type':Sequelize[_0x0505('0x5')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x0505('0x5')]},'disallow':{'type':Sequelize[_0x0505('0x5')],'allowNull':![],'defaultValue':_0x0505('0x35')},'allow':{'type':Sequelize[_0x0505('0x5')],'allowNull':![],'defaultValue':_0x0505('0x36'),'set':function(_0x43984e){this[_0x0505('0x7')](_0x0505('0x37'),_0x43984e?_0x43984e[_0x0505('0x27')](';'):_0x0505('0x36'));},'get':function(){return this[_0x0505('0xe')](_0x0505('0x37'))?this[_0x0505('0xe')](_0x0505('0x37'))[_0x0505('0x33')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x0505('0x12')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![],'set':function(_0xe7ddf7){this[_0x0505('0x7')]('insecure',_0xe7ddf7?_0xe7ddf7['join'](','):null);},'get':function(){return this[_0x0505('0xe')]('insecure')?this['getDataValue'](_0x0505('0x38'))['split'](','):null;},'comment':_0x0505('0x39')},'trustrpid':{'type':Sequelize['ENUM'](_0x0505('0x3a'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no',_0x0505('0x3b')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x0505('0x3c')},'amaflags':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x0505('0x3a'),'no'),'allowNull':!![],'defaultValue':_0x0505('0x3a')},'busylevel':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x0505('0x3a'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x0505('0x12')]('yes','no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'template':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0x0505('0x3d')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x0505('0x3e'),_0x0505('0x3f'),'originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM']('uac','uas'),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![],'defaultValue':_0x0505('0x3a')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x0505('0x3a'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x0505('0x3a'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x0505('0x12')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x0505('0x12')]('yes','no',_0x0505('0x40'),_0x0505('0x41')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x42'),_0x0505('0x43'),_0x0505('0x44')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x0505('0x16')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x0505('0x12')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x0505('0x5')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no',_0x0505('0x2e'),_0x0505('0x2f'),_0x0505('0x45')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x0505('0x5')]},'resetPasswordExpires':{'type':Sequelize[_0x0505('0x17')]},'showWebBar':{'type':Sequelize[_0x0505('0x16')],'defaultValue':0x0,'set':function(_0x5f0981){this[_0x0505('0x7')](_0x0505('0x46'),_0x5f0981);var _0x629d41=this[_0x0505('0x47')]({'plain':!![]});switch(_0x5f0981){case 0x0:case 0x1:var _0x2f0669=_0x629d41[_0x0505('0x26')]?_['isArray'](_0x629d41[_0x0505('0x26')])?_0x629d41[_0x0505('0x26')][_0x0505('0x27')]():_0x629d41[_0x0505('0x26')]:_0x0505('0x25');if(_0x2f0669===_0x0505('0x48')){_0x2f0669=_0x0505('0x25');}this[_0x0505('0x7')]('transport',_0x2f0669);this[_0x0505('0x7')](_0x0505('0x49'),'no');this[_0x0505('0x7')](_0x0505('0x4a'),null);this['setDataValue']('force_avp',null);this[_0x0505('0x7')](_0x0505('0x4b'),null);this[_0x0505('0x7')](_0x0505('0x4c'),null);this[_0x0505('0x7')](_0x0505('0x4d'),null);this[_0x0505('0x7')](_0x0505('0x4e'),null);this[_0x0505('0x7')](_0x0505('0x4f'),null);this[_0x0505('0x7')]('dtlsprivatekey',null);this['setDataValue'](_0x0505('0x50'),'no');break;case 0x2:this[_0x0505('0x7')](_0x0505('0x26'),'wss');this[_0x0505('0x7')](_0x0505('0x49'),_0x0505('0x3a'));this['setDataValue']('avpf',_0x0505('0x3a'));this['setDataValue']('force_avp','yes');this[_0x0505('0x7')](_0x0505('0x4b'),_0x0505('0x3a'));this[_0x0505('0x7')]('dtlsenable',_0x0505('0x3a'));this[_0x0505('0x7')]('dtlsverify','no');this[_0x0505('0x7')](_0x0505('0x4e'),_0x0505('0x44'));this[_0x0505('0x7')](_0x0505('0x4f'),_0x629d41['dtlscertfile']||_0x0505('0x51'));this[_0x0505('0x7')]('dtlsprivatekey',_0x629d41[_0x0505('0x52')]||'/etc/pki/tls/private/motion.key');this[_0x0505('0x7')](_0x0505('0x50'),_0x0505('0x3a'));break;default:}}},'permissions':{'type':Sequelize[_0x0505('0x53')],'set':function(_0x203298){this[_0x0505('0x7')](_0x0505('0x54'),_0x203298?_0x203298[_0x0505('0x27')](','):[]);},'get':function(){return this[_0x0505('0xe')](_0x0505('0x54'))?_[_0x0505('0x55')](this[_0x0505('0xe')]('permissions')[_0x0505('0x33')](','),function(_0x8d798c){return parseInt(_0x8d798c,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x0505('0x5')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x0505('0x5')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x0505('0x18')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x0505('0x18')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x0505('0x16')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x0505('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x0505('0x12')](_0x0505('0x3a'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x0505('0x18')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'passwordResetAt':{'type':Sequelize[_0x0505('0x17')],'defaultValue':null},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x0505('0x18')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x0505('0x5')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 0b07aa4..62ebdf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0a9=['101','102','103','110','105','107','108','109','100','111','VoiceMail','get','Agents','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','changePassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassord\x20and\x20newPassword','authenticate','Wrong\x20credentials','oldPassword','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Unauthorized','addQueues','loginInPause','isValidChannel','Unknown\x20channel','channel','toLowerCase','capitalize','Queue:save','voice','VoiceQueue','findAll','interface','SIP/%s','voicePause','penalty','each','UserVoiceQueueRt','upsert','Queues','QueueId','emit','Queue:remove','addAvatar','filename','join','server/files/images/logos/default_profile.png','userpic','download','existsSync','server/files/images/','getContacts','findOne','CmList','List','Tags','tag','Queue','Unknown\x20role','admin','getVoiceQueuesRt','ChatGroup','order','getGroups','getRecordings','VoiceRecording','ChatInteraction','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','UserId','getSmsInteractions','SmsInteraction','getFaxInteractions','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:forcelogout','headers','connection','remoteAddress','socket','getVoiceQueues','push','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','all','getChannels','LOGIN','device','PAUSE','concat','LOGININPAUSE','MemberReport','pause','QueuePause','updateAttributes','type','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','lastPauseAt','manual','mail','chat','fax','sms','openchannel','Pause','Team','getTeams','addTeams','removeTeams','getLists','getAgents','values','send','You\x20can\x27t\x20delete\x20yourself','spread','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','isArray','user_has_fax_interactions:remove','addSmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','VoicePrefix','getVoicePrefixes','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$gt','$gte','$lt','$eq','$not','$notBetween','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','day','lastName','CmContact','dialActive','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','redis','defaults','localhost','socket.io-emitter','./user.socket','register','jayson/promise','client','http','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','count','offset','limit','set','apply','reject','save','update','destroy','user','agent','Telephones','telephone','filter','ignore','value','role','find','name','stack','index','User','model','password','salt','dateStart','query','dateEnd','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','add','merge','map','sequelize','col','lower','options','includeAll','include','rows','show','params','differenceBy','rawAttributes','bulkCreate','body','describe','addContacts','ids','omit','agent\x20role','getLicense','telephones','users','isNil','format','count\x20%s:\x20%s','create','Setting','min_internal','max','internal','QueryTypes','SELECT','from','fullname','permissions'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc0a9,0xc6));var _0x9c0a=function(_0x2642cb,_0x4b917f){_0x2642cb=_0x2642cb-0x0;var _0xe6e41=_0xc0a9[_0x2642cb];return _0xe6e41;};'use strict';var pdf=require(_0x9c0a('0x0'));var emlformat=require(_0x9c0a('0x1'));var rimraf=require(_0x9c0a('0x2'));var zipdir=require(_0x9c0a('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9c0a('0x4'));var moment=require(_0x9c0a('0x5'));var BPromise=require(_0x9c0a('0x6'));var Mustache=require(_0x9c0a('0x7'));var util=require(_0x9c0a('0x8'));var path=require('path');var sox=require(_0x9c0a('0x9'));var csv=require(_0x9c0a('0xa'));var ejs=require(_0x9c0a('0xb'));var fs=require('fs');var _=require(_0x9c0a('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9c0a('0xd'));var deskjs=require(_0x9c0a('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9c0a('0xf'));var Papa=require('papaparse');var Redis=require(_0x9c0a('0x10'));var qs=require(_0x9c0a('0x11'));var logger=require('../../config/logger')(_0x9c0a('0x12'));var utils=require(_0x9c0a('0x13'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x9c0a('0x14')]=_[_0x9c0a('0x15')](config['redis'],{'host':_0x9c0a('0x16'),'port':0x18eb});var socket=require(_0x9c0a('0x17'))(new Redis(config[_0x9c0a('0x14')]));require(_0x9c0a('0x18'))[_0x9c0a('0x19')](socket);var jayson=require(_0x9c0a('0x1a'));var client=jayson[_0x9c0a('0x1b')][_0x9c0a('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x2d9082,_0x11422d,_0x1bf84d,_0x12c1b2){return new BPromise(function(_0x4aed55,_0x2ae44a){var _0x55578e=_0x12c1b2||client;return _0x55578e[_0x9c0a('0x1d')](_0x2d9082,_0x1bf84d)[_0x9c0a('0x1e')](function(_0x248806){logger['info'](_0x9c0a('0x1f'),_0x11422d,_0x9c0a('0x20'));logger[_0x9c0a('0x21')](_0x9c0a('0x22'),_0x11422d,'request\x20sent',JSON[_0x9c0a('0x23')](_0x248806));if(_0x248806['error']){if(_0x248806[_0x9c0a('0x24')][_0x9c0a('0x25')]===0x1f4){logger[_0x9c0a('0x24')](_0x9c0a('0x1f'),_0x11422d,_0x248806[_0x9c0a('0x24')][_0x9c0a('0x26')]);return _0x2ae44a(_0x248806[_0x9c0a('0x24')][_0x9c0a('0x26')]);}logger[_0x9c0a('0x24')](_0x9c0a('0x1f'),_0x11422d,_0x248806[_0x9c0a('0x24')]['message']);return _0x4aed55(_0x248806[_0x9c0a('0x24')][_0x9c0a('0x26')]);}else{logger['info'](_0x9c0a('0x1f'),_0x11422d,_0x9c0a('0x20'));_0x4aed55(_0x248806[_0x9c0a('0x27')][_0x9c0a('0x26')]);}})[_0x9c0a('0x28')](function(_0x49dd8d){logger[_0x9c0a('0x24')](_0x9c0a('0x1f'),_0x11422d,_0x49dd8d);_0x2ae44a(_0x49dd8d);});});}function respondWithStatusCode(_0x525429,_0x431989){_0x431989=_0x431989||0xcc;return function(_0x3bdb0c){if(_0x3bdb0c){return _0x525429[_0x9c0a('0x29')](_0x431989);}return _0x525429[_0x9c0a('0x2a')](_0x431989)['end']();};}function respondWithResult(_0x4ee36d,_0x5e6a50){_0x5e6a50=_0x5e6a50||0xc8;return function(_0x3f22d9){if(_0x3f22d9){return _0x4ee36d[_0x9c0a('0x2a')](_0x5e6a50)[_0x9c0a('0x2b')](_0x3f22d9);}};}function respondWithFilteredResult(_0x4561e4,_0x5bc501){return function(_0x54ba98){if(_0x54ba98){var _0x22897f=_0x54ba98[_0x9c0a('0x2c')],_0x512e29=_0x5bc501[_0x9c0a('0x2d')],_0x565187=_0x5bc501[_0x9c0a('0x2d')]+_0x5bc501[_0x9c0a('0x2e')],_0x50bb1f;if(_0x565187>=_0x22897f){_0x565187=_0x22897f;_0x50bb1f=0xc8;}else{_0x50bb1f=0xce;}_0x4561e4['status'](_0x50bb1f);return _0x4561e4[_0x9c0a('0x2f')]('Content-Range',_0x512e29+'-'+_0x565187+'/'+_0x22897f)[_0x9c0a('0x2b')](_0x54ba98);}return null;};}function patchUpdates(_0x1e9e15){return function(_0x2f0125){try{jsonpatch[_0x9c0a('0x30')](_0x2f0125,_0x1e9e15,!![]);}catch(_0x54e4d3){return BPromise[_0x9c0a('0x31')](_0x54e4d3);}return _0x2f0125[_0x9c0a('0x32')]();};}function saveUpdates(_0x381472,_0x42289e){return function(_0x4cc8ed){if(_0x4cc8ed){return _0x4cc8ed[_0x9c0a('0x33')](_0x381472)['then'](function(_0x1a4aef){return _0x1a4aef;});}return null;};}function removeEntity(_0x200aaf,_0x410656){return function(_0x176f06){if(_0x176f06){return _0x176f06[_0x9c0a('0x34')]()[_0x9c0a('0x1e')](function(){var _0x403f3e=_0x176f06['get']({'plain':!![]});var _0x3c95ca=[{'name':'Users','value':_0x9c0a('0x35'),'ignore':!![]},{'name':'Agents','value':_0x9c0a('0x36'),'ignore':![]},{'name':_0x9c0a('0x37'),'value':_0x9c0a('0x38'),'ignore':![]}];var _0x5d37a8=_(_0x3c95ca)[_0x9c0a('0x39')](_0x9c0a('0x3a'))['map'](_0x9c0a('0x3b'))[_0x9c0a('0x3b')]();if(_['includes'](_0x5d37a8,_0x403f3e[_0x9c0a('0x3c')])){return;}var _0x5471f6=_[_0x9c0a('0x3d')](_0x3c95ca,[_0x9c0a('0x3b'),_0x403f3e[_0x9c0a('0x3c')]])[_0x9c0a('0x3e')];return db['UserProfileResource'][_0x9c0a('0x34')]({'where':{'type':_0x5471f6,'resourceId':_0x403f3e['id']}})[_0x9c0a('0x1e')](function(){return _0x176f06;});})[_0x9c0a('0x1e')](function(){_0x200aaf[_0x9c0a('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1df6c4,_0x10acb0){return function(_0x594cc7){if(!_0x594cc7){_0x1df6c4[_0x9c0a('0x29')](0x194);}return _0x594cc7;};}function handleError(_0x25c997,_0x18222a){_0x18222a=_0x18222a||0x1f4;return function(_0x2472e0){logger[_0x9c0a('0x24')](_0x2472e0[_0x9c0a('0x3f')]);if(_0x2472e0[_0x9c0a('0x3e')]){delete _0x2472e0[_0x9c0a('0x3e')];}_0x25c997[_0x9c0a('0x2a')](_0x18222a)['send'](_0x2472e0);};}exports[_0x9c0a('0x40')]=function(_0x9bb8f2,_0x2b2264){var _0x2a7fc5={},_0x4d376b={},_0x3efcb2={'count':0x0,'rows':[]};var _0x3c270c=db[_0x9c0a('0x41')]['rawAttributes'];_0x4d376b[_0x9c0a('0x42')]=_['differenceBy'](_['keys'](_0x3c270c),[_0x9c0a('0x43'),_0x9c0a('0x44')]);var _0x3d7d8b={'dateStart':_0x9bb8f2['query'][_0x9c0a('0x45')],'dateEnd':_0x9bb8f2[_0x9c0a('0x46')]['dateEnd']};delete _0x9bb8f2[_0x9c0a('0x46')][_0x9c0a('0x45')];delete _0x9bb8f2[_0x9c0a('0x46')][_0x9c0a('0x47')];_0x4d376b[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x9bb8f2[_0x9c0a('0x46')]);_0x4d376b[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x4d376b[_0x9c0a('0x42')],_0x4d376b[_0x9c0a('0x46')]);_0x2a7fc5['attributes']=_[_0x9c0a('0x4a')](_0x4d376b[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x9bb8f2[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x2a7fc5[_0x9c0a('0x4c')]=_0x2a7fc5[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x2a7fc5[_0x9c0a('0x4c')]:_0x4d376b[_0x9c0a('0x42')];if(!_0x9bb8f2[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x2a7fc5[_0x9c0a('0x2e')]=qs['limit'](_0x9bb8f2['query'][_0x9c0a('0x2e')]);_0x2a7fc5[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x9bb8f2['query'][_0x9c0a('0x2d')]);}_0x2a7fc5['order']=qs[_0x9c0a('0x50')](_0x9bb8f2[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x2a7fc5[_0x9c0a('0x51')]=qs['filters'](_[_0x9c0a('0x52')](_0x9bb8f2['query'],_0x4d376b[_0x9c0a('0x49')]));if(_0x3d7d8b['dateStart']){if(_0x3d7d8b[_0x9c0a('0x47')]){_0x3d7d8b['dateEnd']=moment(_0x3d7d8b[_0x9c0a('0x47')])[_0x9c0a('0x53')](0x1,'day');}else{_0x3d7d8b[_0x9c0a('0x47')]=moment(_0x3d7d8b[_0x9c0a('0x45')])[_0x9c0a('0x53')](0x1,'day');}_[_0x9c0a('0x54')](_0x2a7fc5[_0x9c0a('0x51')],{'createdAt':{'$gte':_0x3d7d8b[_0x9c0a('0x45')],'$lte':_0x3d7d8b[_0x9c0a('0x47')]}});}if(_0x9bb8f2[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x2a7fc5[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x2a7fc5['where'],{'$or':_[_0x9c0a('0x55')](_0x3c270c,function(_0x4f6c36){return db[_0x9c0a('0x56')][_0x9c0a('0x51')](db[_0x9c0a('0x56')]['fn']('lower',db['sequelize'][_0x9c0a('0x57')](_0x4f6c36['field'])),{'$like':db['sequelize']['fn'](_0x9c0a('0x58'),'%'+_0x9bb8f2[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%')});})});}_0x2a7fc5=_[_0x9c0a('0x54')]({},_0x2a7fc5,_0x9bb8f2[_0x9c0a('0x59')]);var _0x35e883={'where':_0x2a7fc5[_0x9c0a('0x51')]};return db[_0x9c0a('0x41')][_0x9c0a('0x2c')](_0x35e883)[_0x9c0a('0x1e')](function(_0x1930fe){_0x3efcb2['count']=_0x1930fe;if(_0x9bb8f2[_0x9c0a('0x46')][_0x9c0a('0x5a')]){_0x2a7fc5[_0x9c0a('0x5b')]=[{'all':!![]}];}return db['User']['findAll'](_0x2a7fc5);})[_0x9c0a('0x1e')](function(_0x5ea153){_0x3efcb2[_0x9c0a('0x5c')]=_0x5ea153;return _0x3efcb2;})[_0x9c0a('0x1e')](respondWithFilteredResult(_0x2b2264,_0x2a7fc5))[_0x9c0a('0x28')](handleError(_0x2b2264,null));};exports[_0x9c0a('0x5d')]=function(_0x24ac5c,_0x57e27b){var _0x287271={'raw':![],'where':{'id':_0x24ac5c[_0x9c0a('0x5e')]['id']}},_0x46042d={};_0x46042d[_0x9c0a('0x42')]=_[_0x9c0a('0x5f')](_[_0x9c0a('0x48')](db['User'][_0x9c0a('0x60')]),[_0x9c0a('0x43'),_0x9c0a('0x44')]);_0x46042d['query']=_[_0x9c0a('0x48')](_0x24ac5c[_0x9c0a('0x46')]);_0x46042d[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x46042d[_0x9c0a('0x42')],_0x46042d[_0x9c0a('0x46')]);_0x287271[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x46042d['model'],qs[_0x9c0a('0x4b')](_0x24ac5c['query'][_0x9c0a('0x4b')]));_0x287271[_0x9c0a('0x4c')]=_0x287271[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x287271[_0x9c0a('0x4c')]:_0x46042d['model'];if(_0x24ac5c[_0x9c0a('0x46')][_0x9c0a('0x5a')]){_0x287271[_0x9c0a('0x5b')]=[{'all':!![]}];}_0x287271=_[_0x9c0a('0x54')]({},_0x287271,_0x24ac5c[_0x9c0a('0x59')]);return db['User'][_0x9c0a('0x3d')](_0x287271)[_0x9c0a('0x1e')](handleEntityNotFound(_0x57e27b,null))[_0x9c0a('0x1e')](respondWithResult(_0x57e27b,null))['catch'](handleError(_0x57e27b,null));};exports[_0x9c0a('0x61')]=function(_0x57f1f2,_0x76b3cb){return db[_0x9c0a('0x41')]['bulkCreate'](_0x57f1f2[_0x9c0a('0x62')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x76b3cb,0xc9))[_0x9c0a('0x28')](handleError(_0x76b3cb,null));};exports[_0x9c0a('0x33')]=function(_0x19e04e,_0x775f0f){if(_0x19e04e[_0x9c0a('0x62')]['id']){delete _0x19e04e[_0x9c0a('0x62')]['id'];}return db[_0x9c0a('0x41')]['find']({'where':{'id':_0x19e04e[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x775f0f,null))[_0x9c0a('0x1e')](saveUpdates(_0x19e04e[_0x9c0a('0x62')],null))['then'](respondWithResult(_0x775f0f,null))[_0x9c0a('0x28')](handleError(_0x775f0f,null));};exports[_0x9c0a('0x63')]=function(_0x5ed8be,_0x23ef9){return db['User']['describe']()['then'](respondWithResult(_0x23ef9,null))[_0x9c0a('0x28')](handleError(_0x23ef9,null));};exports[_0x9c0a('0x64')]=function(_0x8561da,_0x35a582,_0x37b76a){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x8561da[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x35a582,null))[_0x9c0a('0x1e')](function(_0x1c7452){if(_0x1c7452){return _0x1c7452['addContacts'](_0x8561da[_0x9c0a('0x62')][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0x8561da[_0x9c0a('0x62')],[_0x9c0a('0x65'),'id'])||{});}})[_0x9c0a('0x1e')](respondWithResult(_0x35a582,null))[_0x9c0a('0x28')](handleError(_0x35a582,null));};var getLicense=function(_0x420229){return new BPromise(function(_0x64558d,_0x30f7bd){var _0x1e8b26=0x0;_0x420229[_0x9c0a('0x62')][_0x9c0a('0x3c')]===_0x9c0a('0x36')&&_0x64558d(_0x9c0a('0x67'));return db['User'][_0x9c0a('0x2c')]({'where':{'$or':[{'role':_0x420229[_0x9c0a('0x62')][_0x9c0a('0x3c')]===_0x9c0a('0x38')?_0x9c0a('0x38'):['admin',_0x9c0a('0x35')]}]}})[_0x9c0a('0x1e')](function(_0x554e81){_0x1e8b26=_0x554e81;return require('../../config/license/util')[_0x9c0a('0x68')]();})[_0x9c0a('0x1e')](function(_0x496f9c){var _0x3d9697=_0x420229[_0x9c0a('0x62')][_0x9c0a('0x3c')]===_0x9c0a('0x38')?_0x9c0a('0x69'):_0x9c0a('0x6a');if(!_[_0x9c0a('0x6b')](_0x496f9c[_0x3d9697])&&_0x1e8b26>=_0x496f9c[_0x3d9697]){return _0x30f7bd({'message':'License\x20limit\x20reached'});}return _0x64558d(util[_0x9c0a('0x6c')](_0x9c0a('0x6d'),_0x3d9697,_0x1e8b26));})[_0x9c0a('0x28')](function(_0x1a902d){return _0x30f7bd(_0x1a902d);});});};exports[_0x9c0a('0x6e')]=function(_0x35bc75,_0x122f8d){return getLicense(_0x35bc75)[_0x9c0a('0x1e')](function(_0x237eee){if(!_0x35bc75[_0x9c0a('0x62')]['internal']){var _0x723d68;return db[_0x9c0a('0x6f')]['findById'](0x1)[_0x9c0a('0x1e')](function(_0x195142){_0x723d68=_0x195142[_0x9c0a('0x70')];return db[_0x9c0a('0x41')][_0x9c0a('0x71')](_0x9c0a('0x72'));})[_0x9c0a('0x1e')](function(_0x776a73){if(_['isNil'](_0x776a73)){if(_0x723d68){_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x72')]=_0x723d68;}else{_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x72')]=0x1;}}else{if(_[_0x9c0a('0x6b')](_0x723d68)||_0x723d68==_0x776a73){_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x72')]=_0x776a73+0x1;}else if(_0x723d68>_0x776a73){_0x35bc75[_0x9c0a('0x62')]['internal']=_0x723d68;}else{return db['sequelize'][_0x9c0a('0x46')]('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[_0x9c0a('0x56')][_0x9c0a('0x73')][_0x9c0a('0x74')]})['then'](function(_0x468e6e){if(_0x468e6e&&_0x468e6e[_0x9c0a('0x4d')]){for(var _0x333ca4=0x0,_0x121767=_0x468e6e['length'];_0x333ca4<_0x121767&&_[_0x9c0a('0x6b')](_0x35bc75['body'][_0x9c0a('0x72')]);_0x333ca4++){if(_0x723d68<=_0x468e6e[_0x333ca4][_0x9c0a('0x75')]){_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x72')]=_0x468e6e[_0x333ca4][_0x9c0a('0x75')];}else if(_0x723d68>_0x468e6e[_0x333ca4][_0x9c0a('0x75')]&&_0x723d68<=_0x468e6e[_0x333ca4]['to']){_0x35bc75['body'][_0x9c0a('0x72')]=_0x723d68;}}}if(_['isNil'](_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x72')])){_0x35bc75[_0x9c0a('0x62')]['internal']=_0x776a73+0x1;}});}}});}})[_0x9c0a('0x1e')](function(){if(_0x35bc75[_0x9c0a('0x62')]['voicemail']){_0x35bc75[_0x9c0a('0x62')]['mailbox']=_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x72')];_0x35bc75[_0x9c0a('0x62')]['VoiceMail']={'mailbox':_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x72')],'password':_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x43')],'fullname':_0x35bc75['body'][_0x9c0a('0x76')],'email':_0x35bc75[_0x9c0a('0x62')]['email']};}if(_0x35bc75[_0x9c0a('0x62')]&&_0x35bc75[_0x9c0a('0x62')]['role']==='agent'){_0x35bc75[_0x9c0a('0x62')][_0x9c0a('0x77')]=[_0x9c0a('0x78'),_0x9c0a('0x79'),_0x9c0a('0x7a'),_0x9c0a('0x7b'),'104',_0x9c0a('0x7c'),'106',_0x9c0a('0x7d'),_0x9c0a('0x7e'),_0x9c0a('0x7f'),_0x9c0a('0x80'),_0x9c0a('0x81')];}return db['User'][_0x9c0a('0x6e')](_0x35bc75['body'],{'include':[{'model':db['VoiceMail'],'as':_0x9c0a('0x82')}]});})[_0x9c0a('0x1e')](function(_0x228e4f){if(_0x35bc75['body']['role']==='user')return _0x228e4f;var _0x2a6b93=_0x35bc75[_0x9c0a('0x35')][_0x9c0a('0x83')]({'plain':!![]});if(!_0x2a6b93)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2a6b93[_0x9c0a('0x3c')]===_0x9c0a('0x35')){var _0x5e2385=_0x228e4f['get']({'plain':!![]});var _0x1aedb7=[{'name':_0x9c0a('0x84'),'value':_0x9c0a('0x36')},{'name':'Telephones','value':_0x9c0a('0x38')}];var _0x5c04d1=_['find'](_0x1aedb7,[_0x9c0a('0x3b'),_0x5e2385[_0x9c0a('0x3c')]])[_0x9c0a('0x3e')];return db[_0x9c0a('0x85')][_0x9c0a('0x3d')]({'where':{'name':_0x5c04d1,'userProfileId':_0x2a6b93[_0x9c0a('0x86')]},'raw':!![]})[_0x9c0a('0x1e')](function(_0x5e7283){if(_0x5e7283&&_0x5e7283[_0x9c0a('0x87')]===0x0){return db[_0x9c0a('0x88')]['create']({'name':_0x5e2385[_0x9c0a('0x3e')],'resourceId':_0x5e2385['id'],'type':_0x5e7283[_0x9c0a('0x3e')],'sectionId':_0x5e7283['id']},{})[_0x9c0a('0x1e')](function(){return _0x228e4f;});}else{return _0x228e4f;}})[_0x9c0a('0x28')](function(_0x3daf8f){logger[_0x9c0a('0x24')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3daf8f);throw _0x3daf8f;});}return _0x228e4f;})[_0x9c0a('0x1e')](respondWithResult(_0x122f8d,0xc9))['catch'](handleError(_0x122f8d,null));};exports[_0x9c0a('0x89')]=function(_0x297fb1,_0x3f2767,_0x3b57d8){if(_0x297fb1[_0x9c0a('0x62')]['id']){delete _0x297fb1['body']['id'];}return db[_0x9c0a('0x41')]['find']({'where':{'id':_0x297fb1[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](function(_0x19a862){if(_0x19a862){if(_0x19a862['id']==_0x297fb1[_0x9c0a('0x35')]['id']){if(!_0x297fb1[_0x9c0a('0x62')]['oldPassword']||!_0x297fb1[_0x9c0a('0x62')]['newPassword']){throw new db[(_0x9c0a('0x8a'))][(_0x9c0a('0x8b'))](_0x9c0a('0x8c'));}if(!_0x19a862[_0x9c0a('0x8d')](_0x297fb1['body']['oldPassword'])){throw new db[(_0x9c0a('0x8a'))]['ValidationError'](_0x9c0a('0x8e'));}if(_0x297fb1[_0x9c0a('0x62')][_0x9c0a('0x8f')]==_0x297fb1[_0x9c0a('0x62')][_0x9c0a('0x90')]){throw new db['Sequelize']['ValidationError'](_0x9c0a('0x91'));}return _0x19a862;}else if(_0x297fb1[_0x9c0a('0x35')][_0x9c0a('0x3c')]=='admin'){if(!_0x297fb1[_0x9c0a('0x62')]['newPassword']){throw new db[(_0x9c0a('0x8a'))][(_0x9c0a('0x8b'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}return _0x19a862;}else if(_0x297fb1['user']['role']=='user'){if(!_0x297fb1[_0x9c0a('0x62')][_0x9c0a('0x90')]){throw new db['Sequelize'][(_0x9c0a('0x8b'))](_0x9c0a('0x92'));}if(_0x19a862['role']!=_0x9c0a('0x36')){throw new db[(_0x9c0a('0x8a'))][(_0x9c0a('0x8b'))]('Unauthorized');}return _0x19a862;}else{throw new db[(_0x9c0a('0x8a'))][(_0x9c0a('0x8b'))](_0x9c0a('0x93'));}}return null;})['then'](handleEntityNotFound(_0x3f2767,null))['then'](saveUpdates({'password':_0x297fb1[_0x9c0a('0x62')][_0x9c0a('0x90')],'passwordResetAt':_0x297fb1[_0x9c0a('0x35')]['id']==_0x297fb1['params']['id']?moment():null},null))[_0x9c0a('0x1e')](respondWithResult(_0x3f2767,null))[_0x9c0a('0x28')](handleError(_0x3f2767,null));};exports[_0x9c0a('0x94')]=function(_0x2a4072,_0x17bdd6,_0xf5db6f){var _0x3ab1c4;return db[_0x9c0a('0x41')]['find']({'where':{'id':_0x2a4072['params']['id']},'attributes':['id',_0x9c0a('0x3e'),'role',_0x9c0a('0x95'),'voicePause','interface']})[_0x9c0a('0x1e')](handleEntityNotFound(_0x17bdd6,null))[_0x9c0a('0x1e')](function(_0x4fd7c5){if(_0x4fd7c5){_0x3ab1c4=_0x4fd7c5;if(!utils[_0x9c0a('0x96')](_0x2a4072[_0x9c0a('0x62')]['channel'])){throw new db[(_0x9c0a('0x8a'))]['ValidationError'](_0x9c0a('0x97'));}return _0x4fd7c5[_0x9c0a('0x53')+_['capitalize'](_0x2a4072[_0x9c0a('0x62')][_0x9c0a('0x98')][_0x9c0a('0x99')]())+'Queues'](_0x2a4072[_0x9c0a('0x62')]['ids'],{'penalty':_0x2a4072['body']['penalty']||0x0});}})['spread'](function(_0x1bdd06){for(var _0x2cad0c=0x0;_0x2cad0c<_0x2a4072['body']['ids'][_0x9c0a('0x4d')];_0x2cad0c+=0x1){var _0x88648f={'UserId':_0x2a4072[_0x9c0a('0x5e')]['id']};_0x88648f[_[_0x9c0a('0x9a')](_0x2a4072[_0x9c0a('0x62')][_0x9c0a('0x98')]['toLowerCase']())+'QueueId']=_0x2a4072['body']['ids'][_0x2cad0c];socket['emit'](_0x9c0a('0x35')+_[_0x9c0a('0x9a')](_0x2a4072['body']['channel'][_0x9c0a('0x99')]())+_0x9c0a('0x9b'),_0x88648f);}return _0x1bdd06;})['then'](function(){if(_0x2a4072['body'][_0x9c0a('0x98')]===_0x9c0a('0x9c')){return db[_0x9c0a('0x9d')][_0x9c0a('0x9e')]({'where':{'id':_0x2a4072[_0x9c0a('0x62')][_0x9c0a('0x65')]||[]},'raw':!![],'attributes':['id',_0x9c0a('0x3e')]});}})[_0x9c0a('0x1e')](function(_0x4883b7){var _0x45b8e5=[];if(_0x2a4072[_0x9c0a('0x62')][_0x9c0a('0x98')]===_0x9c0a('0x9c')&&_0x3ab1c4[_0x9c0a('0x3c')]===_0x9c0a('0x36')){for(var _0x546511=0x0;_0x546511<_0x4883b7['length'];_0x546511+=0x1){_0x45b8e5['push']({'membername':_0x3ab1c4[_0x9c0a('0x3e')],'UserId':_0x3ab1c4['id'],'queue_name':_0x4883b7[_0x546511][_0x9c0a('0x3e')],'VoiceQueueId':_0x4883b7[_0x546511]['id'],'interface':_['isNil'](_0x3ab1c4[_0x9c0a('0x9f')])?util[_0x9c0a('0x6c')](_0x9c0a('0xa0'),_0x3ab1c4[_0x9c0a('0x3e')]):_0x3ab1c4[_0x9c0a('0x9f')],'paused':_0x3ab1c4[_0x9c0a('0xa1')]||![],'penalty':_0x2a4072[_0x9c0a('0x62')][_0x9c0a('0xa2')]||0x0});}return BPromise[_0x9c0a('0xa3')](_0x45b8e5,function(_0x46abcd){return db[_0x9c0a('0xa4')][_0x9c0a('0xa5')](_0x46abcd);});}return _0x3ab1c4;})[_0x9c0a('0x1e')](respondWithStatusCode(_0x17bdd6,null))['catch'](handleError(_0x17bdd6,null));};exports['removeQueues']=function(_0xe4f614,_0x1a8148,_0xc095b3){var _0x445de6;return db['User'][_0x9c0a('0x3d')]({'where':{'id':_0xe4f614[_0x9c0a('0x5e')]['id']},'attributes':['id',_0x9c0a('0x3e'),_0x9c0a('0x3c')]})['then'](handleEntityNotFound(_0x1a8148,null))['then'](function(_0x44be4a){if(_0x44be4a){_0x445de6=_0x44be4a;if(!_0xe4f614[_0x9c0a('0x46')][_0x9c0a('0x98')]||!utils[_0x9c0a('0x96')](_0xe4f614[_0x9c0a('0x46')][_0x9c0a('0x98')])){throw new db['Sequelize']['ValidationError'](_0x9c0a('0x97'));}return _0x44be4a['remove'+_[_0x9c0a('0x9a')](_0xe4f614[_0x9c0a('0x46')][_0x9c0a('0x98')][_0x9c0a('0x99')]())+_0x9c0a('0xa6')](_0xe4f614[_0x9c0a('0x46')]['ids']);}})['then'](function(_0x138d78){for(var _0x423fbf=0x0;_0x423fbf<_0xe4f614[_0x9c0a('0x46')][_0x9c0a('0x65')]['length'];_0x423fbf+=0x1){var _0x432b26={'UserId':_0xe4f614[_0x9c0a('0x5e')]['id']};_0x432b26[_[_0x9c0a('0x9a')](_0xe4f614[_0x9c0a('0x46')][_0x9c0a('0x98')]['toLowerCase']())+_0x9c0a('0xa7')]=_0xe4f614[_0x9c0a('0x46')][_0x9c0a('0x65')][_0x423fbf];socket[_0x9c0a('0xa8')](_0x9c0a('0x35')+_[_0x9c0a('0x9a')](_0xe4f614['query'][_0x9c0a('0x98')][_0x9c0a('0x99')]())+_0x9c0a('0xa9'),_0x432b26);}return _0x138d78;})[_0x9c0a('0x1e')](function(){if(_0xe4f614[_0x9c0a('0x46')][_0x9c0a('0x98')]===_0x9c0a('0x9c')){return db[_0x9c0a('0xa4')]['destroy']({'where':{'UserId':_0xe4f614['params']['id'],'VoiceQueueId':_0xe4f614[_0x9c0a('0x46')][_0x9c0a('0x65')]},'individualHooks':!![]})['then'](function(){return _0x445de6;});}return _0x445de6;})['then'](respondWithStatusCode(_0x1a8148,null))[_0x9c0a('0x28')](handleError(_0x1a8148,null));};exports[_0x9c0a('0xaa')]=function(_0x244982,_0x4c05a5,_0x3c72ca){_0x244982[_0x9c0a('0x62')]['userpic']=_0x244982['file'][_0x9c0a('0xab')];return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x244982[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4c05a5,null))['then'](saveUpdates(_0x244982[_0x9c0a('0x62')],null))[_0x9c0a('0x1e')](respondWithResult(_0x4c05a5,null))[_0x9c0a('0x28')](handleError(_0x4c05a5,null));};exports['getAvatar']=function(_0x328b9e,_0x4ccf61,_0x2016ed){var _0x58bfbb=path[_0x9c0a('0xac')](config['root'],_0x9c0a('0xad'));return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x328b9e['params']['id']},'attributes':['id',_0x9c0a('0xae')],'raw':!![]})[_0x9c0a('0x1e')](handleEntityNotFound(_0x4ccf61,null))['then'](function(_0x3f92b6){if(_0x3f92b6){if(_['isNil'](_0x3f92b6[_0x9c0a('0xae')])){return _0x4ccf61[_0x9c0a('0xaf')](_0x58bfbb);}else{if(!fs[_0x9c0a('0xb0')](path[_0x9c0a('0xac')](config['root'],_0x9c0a('0xb1'),_0x3f92b6[_0x9c0a('0xae')]))){return _0x4ccf61['download'](_0x58bfbb);}return _0x4ccf61[_0x9c0a('0xaf')](path[_0x9c0a('0xac')](config['root'],_0x9c0a('0xb1'),_0x3f92b6['userpic']));}}})[_0x9c0a('0x28')](handleError(_0x4ccf61,null));};exports[_0x9c0a('0xb2')]=function(_0x14bcd2,_0x2633a0,_0x40d85d){var _0x340636={};var _0x51693a={};var _0x2432e7;var _0x119fbd;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x14bcd2[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x2633a0,null))[_0x9c0a('0x1e')](function(_0x38785f){if(_0x38785f){_0x2432e7=_0x38785f;_0x51693a[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db['CmContact'][_0x9c0a('0x60')]);_0x51693a[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x14bcd2[_0x9c0a('0x46')]);_0x51693a[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x51693a[_0x9c0a('0x42')],_0x51693a[_0x9c0a('0x46')]);_0x340636['attributes']=_[_0x9c0a('0x4a')](_0x51693a[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x14bcd2[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x340636['attributes']=_0x340636[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x340636[_0x9c0a('0x4c')]:_0x51693a[_0x9c0a('0x42')];_0x340636['order']=qs[_0x9c0a('0x50')](_0x14bcd2[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x340636['where']=qs[_0x9c0a('0x49')](_['pick'](_0x14bcd2[_0x9c0a('0x46')],_0x51693a[_0x9c0a('0x49')]));if(_0x14bcd2[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x340636[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x340636['where'],{'$or':_['map'](_0x340636[_0x9c0a('0x4c')],function(_0x417639){var _0x1b0fc7={};_0x1b0fc7[_0x417639]={'$like':'%'+_0x14bcd2[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x1b0fc7;})});}_0x340636=_[_0x9c0a('0x54')]({},_0x340636,_0x14bcd2[_0x9c0a('0x59')]);return _0x2432e7[_0x9c0a('0xb2')](_0x340636);}})[_0x9c0a('0x1e')](function(_0x44ac0f){if(_0x44ac0f){_0x119fbd=_0x44ac0f[_0x9c0a('0x4d')];if(_0x14bcd2[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x5a'))){_0x340636['include']=[{'model':db[_0x9c0a('0xb4')],'as':_0x9c0a('0xb5'),'required':![]},{'model':db['Tag'],'as':_0x9c0a('0xb6'),'attributes':['id','name','color'],'where':_0x14bcd2['query'][_0x9c0a('0xb7')]?{'id':_0x14bcd2['query'][_0x9c0a('0xb7')]}:undefined,'required':_0x14bcd2[_0x9c0a('0x46')][_0x9c0a('0xb7')]?!![]:![]}];}if(!_0x14bcd2[_0x9c0a('0x46')][_0x9c0a('0x4e')]('nolimit')){_0x340636[_0x9c0a('0x2e')]=qs['limit'](_0x14bcd2['query'][_0x9c0a('0x2e')]);_0x340636[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x14bcd2[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}return _0x2432e7[_0x9c0a('0xb2')](_0x340636);}})[_0x9c0a('0x1e')](function(_0x224350){if(_0x224350){return _0x224350?{'count':_0x119fbd,'rows':_0x224350}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x2633a0,null))[_0x9c0a('0x28')](handleError(_0x2633a0,null));};exports['getQueues']=function(_0x35040d,_0x36de9a,_0xc8b52d){var _0x3b1e96;var _0x9948d9;var _0x1a9f70={};var _0x1edee9;return db[_0x9c0a('0x41')]['findOne']({'where':{'id':_0x35040d[_0x9c0a('0x5e')]['id']},'attributes':['id',_0x9c0a('0x3e'),_0x9c0a('0x3c')]})[_0x9c0a('0x1e')](handleEntityNotFound(_0x36de9a,null))[_0x9c0a('0x1e')](function(_0x65b4af){if(!utils[_0x9c0a('0x96')](_0x35040d[_0x9c0a('0x46')][_0x9c0a('0x98')])){throw new db[(_0x9c0a('0x8a'))][(_0x9c0a('0x8b'))](_0x9c0a('0x97'));}_0x3b1e96=_0x65b4af;var _0x1e58e0={};_0x1e58e0[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_[_0x9c0a('0x9a')](_0x35040d[_0x9c0a('0x46')][_0x9c0a('0x98')])+_0x9c0a('0xb8')][_0x9c0a('0x60')]);_0x1e58e0['query']=_['keys'](_0x35040d['query']);_0x1e58e0[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x1e58e0[_0x9c0a('0x42')],_0x1e58e0[_0x9c0a('0x46')]);_0x1a9f70[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x1e58e0[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x35040d[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x1a9f70['attributes']=_0x1a9f70[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x1a9f70['attributes']:_0x1e58e0[_0x9c0a('0x42')];_0x1a9f70['order']=qs[_0x9c0a('0x50')](_0x35040d[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x1a9f70[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x35040d['query'],_0x1e58e0[_0x9c0a('0x49')]));if(_0x35040d['query'][_0x9c0a('0x39')]){_0x1a9f70[_0x9c0a('0x51')]=_['merge'](_0x1a9f70[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x1a9f70[_0x9c0a('0x4c')],function(_0x26cbbc){var _0x13f657={};_0x13f657[_0x26cbbc]={'$like':'%'+_0x35040d['query']['filter']+'%'};return _0x13f657;})});}_0x1a9f70=_[_0x9c0a('0x54')]({},_0x1a9f70,_0x35040d[_0x9c0a('0x59')]);switch(_0x3b1e96[_0x9c0a('0x3c')]){case'admin':return db[_[_0x9c0a('0x9a')](_0x35040d[_0x9c0a('0x46')][_0x9c0a('0x98')])+_0x9c0a('0xb8')][_0x9c0a('0x9e')](_0x1a9f70);case'user':case _0x9c0a('0x36'):return _0x3b1e96[_0x9c0a('0x83')+_[_0x9c0a('0x9a')](_0x35040d[_0x9c0a('0x46')][_0x9c0a('0x98')])+_0x9c0a('0xa6')](_0x1a9f70);default:throw new db[(_0x9c0a('0x8a'))]['ValidationError'](_0x9c0a('0xb9'));}})[_0x9c0a('0x1e')](function(_0x26549f){_0x1edee9=_0x26549f[_0x9c0a('0x4d')];if(!_0x35040d[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x1a9f70[_0x9c0a('0x2e')]=qs['limit'](_0x35040d['query'][_0x9c0a('0x2e')]);_0x1a9f70['offset']=qs[_0x9c0a('0x2d')](_0x35040d['query'][_0x9c0a('0x2d')]);}switch(_0x3b1e96[_0x9c0a('0x3c')]){case _0x9c0a('0xba'):return db[_[_0x9c0a('0x9a')](_0x35040d['query']['channel'])+_0x9c0a('0xb8')][_0x9c0a('0x9e')](_0x1a9f70);case'user':case _0x9c0a('0x36'):return _0x3b1e96[_0x9c0a('0x83')+_[_0x9c0a('0x9a')](_0x35040d['query'][_0x9c0a('0x98')])+_0x9c0a('0xa6')](_0x1a9f70);}})['then'](function(_0x41b7f4){return{'count':_0x1edee9,'rows':_0x41b7f4};})[_0x9c0a('0x1e')](respondWithResult(_0x36de9a,null))[_0x9c0a('0x28')](handleError(_0x36de9a,null));};exports[_0x9c0a('0xbb')]=function(_0x48b81b,_0x4a0cf5,_0x206b82){var _0x512d9f={};var _0x359d40={};var _0x44bba8;var _0x1cf34f;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x48b81b['params']['id']}})['then'](handleEntityNotFound(_0x4a0cf5,null))[_0x9c0a('0x1e')](function(_0x1d0b16){if(_0x1d0b16){_0x44bba8=_0x1d0b16;_0x359d40[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db['UserVoiceQueueRt'][_0x9c0a('0x60')]);_0x359d40[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x48b81b[_0x9c0a('0x46')]);_0x359d40[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x359d40[_0x9c0a('0x42')],_0x359d40[_0x9c0a('0x46')]);_0x512d9f[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x359d40['model'],qs[_0x9c0a('0x4b')](_0x48b81b[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x512d9f[_0x9c0a('0x4c')]=_0x512d9f[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x512d9f[_0x9c0a('0x4c')]:_0x359d40['model'];_0x512d9f['order']=qs[_0x9c0a('0x50')](_0x48b81b[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x512d9f[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x48b81b[_0x9c0a('0x46')],_0x359d40[_0x9c0a('0x49')]));if(_0x48b81b[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x512d9f['where']=_[_0x9c0a('0x54')](_0x512d9f['where'],{'$or':_[_0x9c0a('0x55')](_0x512d9f['attributes'],function(_0x1fa892){var _0x525869={};_0x525869[_0x1fa892]={'$like':'%'+_0x48b81b[_0x9c0a('0x46')]['filter']+'%'};return _0x525869;})});}_0x512d9f=_['merge']({},_0x512d9f,_0x48b81b[_0x9c0a('0x59')]);return _0x44bba8['getVoiceQueuesRt'](_0x512d9f);}})['then'](function(_0x4f172f){if(_0x4f172f){_0x1cf34f=_0x4f172f[_0x9c0a('0x4d')];if(!_0x48b81b[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x512d9f[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x48b81b[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x512d9f['offset']=qs['offset'](_0x48b81b[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}return _0x44bba8['getVoiceQueuesRt'](_0x512d9f);}})[_0x9c0a('0x1e')](function(_0x3f03dc){if(_0x3f03dc){return _0x3f03dc?{'count':_0x1cf34f,'rows':_0x3f03dc}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x4a0cf5,null))[_0x9c0a('0x28')](handleError(_0x4a0cf5,null));};exports['getGroups']=function(_0x527ea0,_0x517b10,_0x39b46e){var _0x52047f={};var _0x15936e={};var _0x3efb8c;var _0x2e8801;return db[_0x9c0a('0x41')]['findOne']({'where':{'id':_0x527ea0[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x517b10,null))[_0x9c0a('0x1e')](function(_0x37b3f9){if(_0x37b3f9){_0x3efb8c=_0x37b3f9;_0x15936e[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0xbc')][_0x9c0a('0x60')]);_0x15936e[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x527ea0[_0x9c0a('0x46')]);_0x15936e[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x15936e[_0x9c0a('0x42')],_0x15936e[_0x9c0a('0x46')]);_0x52047f[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x15936e[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x527ea0[_0x9c0a('0x46')]['fields']));_0x52047f[_0x9c0a('0x4c')]=_0x52047f[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x52047f['attributes']:_0x15936e['model'];_0x52047f[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0x527ea0[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x52047f[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x527ea0[_0x9c0a('0x46')],_0x15936e[_0x9c0a('0x49')]));if(_0x527ea0[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x52047f[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x52047f['where'],{'$or':_[_0x9c0a('0x55')](_0x52047f[_0x9c0a('0x4c')],function(_0x56bb66){var _0x1035fa={};_0x1035fa[_0x56bb66]={'$like':'%'+_0x527ea0[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x1035fa;})});}_0x52047f=_[_0x9c0a('0x54')]({},_0x52047f,_0x527ea0['options']);return _0x3efb8c[_0x9c0a('0xbe')](_0x52047f);}})[_0x9c0a('0x1e')](function(_0x19a226){if(_0x19a226){_0x2e8801=_0x19a226[_0x9c0a('0x4d')];if(!_0x527ea0[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x52047f['limit']=qs[_0x9c0a('0x2e')](_0x527ea0['query'][_0x9c0a('0x2e')]);_0x52047f[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x527ea0[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}return _0x3efb8c['getGroups'](_0x52047f);}})[_0x9c0a('0x1e')](function(_0x1079c6){if(_0x1079c6){return _0x1079c6?{'count':_0x2e8801,'rows':_0x1079c6}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x517b10,null))[_0x9c0a('0x28')](handleError(_0x517b10,null));};exports[_0x9c0a('0xbf')]=function(_0x1999b4,_0xbf5697,_0x3dff99){var _0x3c8294={'raw':!![],'where':{}};var _0x12c933={};var _0x57872c={'count':0x0,'rows':[]};return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x1999b4[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0xbf5697,null))[_0x9c0a('0x1e')](function(_0x566ff0){if(_0x566ff0){_0x12c933['model']=_['keys'](db[_0x9c0a('0xc0')][_0x9c0a('0x60')]);_0x12c933['query']=_[_0x9c0a('0x48')](_0x1999b4[_0x9c0a('0x46')]);_0x12c933[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x12c933[_0x9c0a('0x42')],_0x12c933['query']);_0x3c8294[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x12c933[_0x9c0a('0x42')],qs['fields'](_0x1999b4[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x3c8294[_0x9c0a('0x4c')]=_0x3c8294[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x3c8294[_0x9c0a('0x4c')]:_0x12c933[_0x9c0a('0x42')];if(!_0x1999b4[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x3c8294[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x1999b4[_0x9c0a('0x46')]['limit']);_0x3c8294['offset']=qs[_0x9c0a('0x2d')](_0x1999b4['query'][_0x9c0a('0x2d')]);}_0x3c8294[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0x1999b4[_0x9c0a('0x46')]['sort']);_0x3c8294[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x1999b4[_0x9c0a('0x46')],_0x12c933[_0x9c0a('0x49')]));_0x3c8294[_0x9c0a('0x51')]['UserId']=_0x566ff0['id'];if(_0x1999b4[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x3c8294[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x3c8294['where'],{'$or':_[_0x9c0a('0x55')](_0x3c8294[_0x9c0a('0x4c')],function(_0x1c3731){var _0xe62c66={};_0xe62c66[_0x1c3731]={'$like':'%'+_0x1999b4[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0xe62c66;})});}_0x3c8294=_['merge']({},_0x3c8294,_0x1999b4['options']);return db[_0x9c0a('0xc0')][_0x9c0a('0x2c')]({'where':_0x3c8294[_0x9c0a('0x51')]})['then'](function(_0x576d2a){_0x57872c[_0x9c0a('0x2c')]=_0x576d2a;if(_0x1999b4[_0x9c0a('0x46')][_0x9c0a('0x5a')]){_0x3c8294['include']=[{'all':!![]}];}return db[_0x9c0a('0xc0')][_0x9c0a('0x9e')](_0x3c8294);})[_0x9c0a('0x1e')](function(_0x197e80){_0x57872c[_0x9c0a('0x5c')]=_0x197e80;return _0x57872c;});}})[_0x9c0a('0x1e')](respondWithFilteredResult(_0xbf5697,_0x3c8294))[_0x9c0a('0x28')](handleError(_0xbf5697,null));};exports['getChatInteractions']=function(_0x5261fd,_0xb59ec8,_0x4ced72){var _0x548f4c={};var _0x1d13d4={};var _0x305554;var _0x1049f4;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x5261fd[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0xb59ec8,null))[_0x9c0a('0x1e')](function(_0x3b586d){if(_0x3b586d){_0x305554=_0x3b586d;_0x1d13d4['model']=_['keys'](db[_0x9c0a('0xc1')][_0x9c0a('0x60')]);_0x1d13d4[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x5261fd['query']);_0x1d13d4[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x1d13d4[_0x9c0a('0x42')],_0x1d13d4[_0x9c0a('0x46')]);_0x548f4c[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x1d13d4[_0x9c0a('0x42')],qs['fields'](_0x5261fd[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x548f4c[_0x9c0a('0x4c')]=_0x548f4c['attributes']['length']?_0x548f4c[_0x9c0a('0x4c')]:_0x1d13d4[_0x9c0a('0x42')];_0x548f4c[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0x5261fd['query'][_0x9c0a('0x50')]);_0x548f4c[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x5261fd[_0x9c0a('0x46')],_0x1d13d4['filters']));if(_0x5261fd[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x548f4c[_0x9c0a('0x51')]=_['merge'](_0x548f4c['where'],{'$or':_[_0x9c0a('0x55')](_0x548f4c['attributes'],function(_0x43683a){var _0x74bb70={};_0x74bb70[_0x43683a]={'$like':'%'+_0x5261fd[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x74bb70;})});}_0x548f4c=_[_0x9c0a('0x54')]({},_0x548f4c,_0x5261fd[_0x9c0a('0x59')]);return _0x305554[_0x9c0a('0xc2')](_0x548f4c);}})['then'](function(_0x4a7832){if(_0x4a7832){_0x1049f4=_0x4a7832[_0x9c0a('0x4d')];if(!_0x5261fd['query'][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x548f4c['limit']=qs[_0x9c0a('0x2e')](_0x5261fd[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x548f4c[_0x9c0a('0x2d')]=qs['offset'](_0x5261fd[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}return _0x305554['getChatInteractions'](_0x548f4c);}})[_0x9c0a('0x1e')](function(_0x168c6f){if(_0x168c6f){return _0x168c6f?{'count':_0x1049f4,'rows':_0x168c6f}:null;}})['then'](respondWithResult(_0xb59ec8,null))[_0x9c0a('0x28')](handleError(_0xb59ec8,null));};exports[_0x9c0a('0xc3')]=function(_0x26534e,_0x1a1bd0,_0x4f6966){var _0x2708b0={};var _0x2dc688={};var _0x50bb9b;var _0x5b324c;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x26534e[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x1a1bd0,null))['then'](function(_0xd0ba3b){if(_0xd0ba3b){_0x50bb9b=_0xd0ba3b;_0x2dc688[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0xc4')][_0x9c0a('0x60')]);_0x2dc688[_0x9c0a('0x46')]=_['keys'](_0x26534e['query']);_0x2dc688[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x2dc688[_0x9c0a('0x42')],_0x2dc688[_0x9c0a('0x46')]);_0x2708b0[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x2dc688['model'],qs[_0x9c0a('0x4b')](_0x26534e[_0x9c0a('0x46')]['fields']));_0x2708b0[_0x9c0a('0x4c')]=_0x2708b0[_0x9c0a('0x4c')]['length']?_0x2708b0[_0x9c0a('0x4c')]:_0x2dc688[_0x9c0a('0x42')];_0x2708b0[_0x9c0a('0xbd')]=qs['sort'](_0x26534e['query']['sort']);_0x2708b0[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x26534e[_0x9c0a('0x46')],_0x2dc688[_0x9c0a('0x49')]));if(_0x26534e[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x2708b0[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x2708b0[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x2708b0[_0x9c0a('0x4c')],function(_0x8b7e95){var _0x7c4690={};_0x7c4690[_0x8b7e95]={'$like':'%'+_0x26534e[_0x9c0a('0x46')]['filter']+'%'};return _0x7c4690;})});}_0x2708b0=_[_0x9c0a('0x54')]({},_0x2708b0,_0x26534e[_0x9c0a('0x59')]);return _0x50bb9b[_0x9c0a('0xc3')](_0x2708b0);}})[_0x9c0a('0x1e')](function(_0xc49e33){if(_0xc49e33){_0x5b324c=_0xc49e33[_0x9c0a('0x4d')];if(!_0x26534e['query']['hasOwnProperty'](_0x9c0a('0x4f'))){_0x2708b0[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x26534e[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x2708b0[_0x9c0a('0x2d')]=qs['offset'](_0x26534e[_0x9c0a('0x46')]['offset']);}return _0x50bb9b['getOpenchannelInteractions'](_0x2708b0);}})[_0x9c0a('0x1e')](function(_0x204b48){if(_0x204b48){return _0x204b48?{'count':_0x5b324c,'rows':_0x204b48}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x1a1bd0,null))[_0x9c0a('0x28')](handleError(_0x1a1bd0,null));};exports[_0x9c0a('0xc5')]=function(_0x4a7c35,_0x23c91b,_0x535ebf){var _0x1f2e5d={'raw':!![],'where':{}};var _0x21b73={};var _0x317bd8={'count':0x0,'rows':[]};return db['User'][_0x9c0a('0xb3')]({'where':{'id':_0x4a7c35[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x23c91b,null))[_0x9c0a('0x1e')](function(_0x2ad7bf){if(_0x2ad7bf){_0x21b73[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0xc6')]['rawAttributes']);_0x21b73[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x4a7c35[_0x9c0a('0x46')]);_0x21b73[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x21b73[_0x9c0a('0x42')],_0x21b73[_0x9c0a('0x46')]);_0x1f2e5d['attributes']=_['intersection'](_0x21b73[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x4a7c35[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x1f2e5d['attributes']=_0x1f2e5d[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x1f2e5d[_0x9c0a('0x4c')]:_0x21b73['model'];if(!_0x4a7c35[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x1f2e5d[_0x9c0a('0x2e')]=qs['limit'](_0x4a7c35[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x1f2e5d[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x4a7c35['query'][_0x9c0a('0x2d')]);}_0x1f2e5d[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0x4a7c35[_0x9c0a('0x46')]['sort']);_0x1f2e5d['where']=qs['filters'](_['pick'](_0x4a7c35[_0x9c0a('0x46')],_0x21b73[_0x9c0a('0x49')]));_0x1f2e5d[_0x9c0a('0x51')][_0x9c0a('0xc7')]=_0x2ad7bf['id'];if(_0x4a7c35[_0x9c0a('0x46')]['filter']){_0x1f2e5d[_0x9c0a('0x51')]=_['merge'](_0x1f2e5d['where'],{'$or':_[_0x9c0a('0x55')](_0x1f2e5d[_0x9c0a('0x4c')],function(_0x2eaf46){var _0x2c836c={};_0x2c836c[_0x2eaf46]={'$like':'%'+_0x4a7c35['query'][_0x9c0a('0x39')]+'%'};return _0x2c836c;})});}_0x1f2e5d=_[_0x9c0a('0x54')]({},_0x1f2e5d,_0x4a7c35['options']);return db['MailInteraction']['count']({'where':_0x1f2e5d['where']})[_0x9c0a('0x1e')](function(_0x265f3d){_0x317bd8[_0x9c0a('0x2c')]=_0x265f3d;if(_0x4a7c35['query'][_0x9c0a('0x5a')]){_0x1f2e5d[_0x9c0a('0x5b')]=[{'all':!![]}];}return db[_0x9c0a('0xc6')]['findAll'](_0x1f2e5d);})[_0x9c0a('0x1e')](function(_0x1f910c){_0x317bd8['rows']=_0x1f910c;return _0x317bd8;});}})[_0x9c0a('0x1e')](respondWithFilteredResult(_0x23c91b,_0x1f2e5d))['catch'](handleError(_0x23c91b,null));};exports[_0x9c0a('0xc8')]=function(_0x316c82,_0xc139e5,_0x7e94a1){var _0x540aaf={};var _0x4eedc4={};var _0x19ab47;var _0x5ee8f2;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x316c82[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0xc139e5,null))[_0x9c0a('0x1e')](function(_0x46ed06){if(_0x46ed06){_0x19ab47=_0x46ed06;_0x4eedc4[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0xc9')][_0x9c0a('0x60')]);_0x4eedc4[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x316c82[_0x9c0a('0x46')]);_0x4eedc4[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x4eedc4[_0x9c0a('0x42')],_0x4eedc4[_0x9c0a('0x46')]);_0x540aaf[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x4eedc4[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x316c82['query'][_0x9c0a('0x4b')]));_0x540aaf['attributes']=_0x540aaf[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x540aaf[_0x9c0a('0x4c')]:_0x4eedc4[_0x9c0a('0x42')];_0x540aaf['order']=qs[_0x9c0a('0x50')](_0x316c82[_0x9c0a('0x46')]['sort']);_0x540aaf[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x316c82[_0x9c0a('0x46')],_0x4eedc4[_0x9c0a('0x49')]));if(_0x316c82['query'][_0x9c0a('0x39')]){_0x540aaf[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x540aaf[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x540aaf[_0x9c0a('0x4c')],function(_0x1dfc2d){var _0x59694e={};_0x59694e[_0x1dfc2d]={'$like':'%'+_0x316c82[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x59694e;})});}_0x540aaf=_[_0x9c0a('0x54')]({},_0x540aaf,_0x316c82['options']);return _0x19ab47[_0x9c0a('0xc8')](_0x540aaf);}})[_0x9c0a('0x1e')](function(_0x4693f0){if(_0x4693f0){_0x5ee8f2=_0x4693f0[_0x9c0a('0x4d')];if(!_0x316c82[_0x9c0a('0x46')]['hasOwnProperty'](_0x9c0a('0x4f'))){_0x540aaf[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x316c82[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x540aaf[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x316c82['query'][_0x9c0a('0x2d')]);}return _0x19ab47[_0x9c0a('0xc8')](_0x540aaf);}})[_0x9c0a('0x1e')](function(_0x77c174){if(_0x77c174){return _0x77c174?{'count':_0x5ee8f2,'rows':_0x77c174}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0xc139e5,null))['catch'](handleError(_0xc139e5,null));};exports[_0x9c0a('0xca')]=function(_0x5b0d5f,_0x5829f8,_0x149a8a){var _0x47b8a2={};var _0x237096={};var _0x186a3c;var _0x3fe97a;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x5b0d5f[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x5829f8,null))['then'](function(_0x5a75b3){if(_0x5a75b3){_0x186a3c=_0x5a75b3;_0x237096['model']=_[_0x9c0a('0x48')](db['FaxInteraction'][_0x9c0a('0x60')]);_0x237096[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x5b0d5f[_0x9c0a('0x46')]);_0x237096['filters']=_[_0x9c0a('0x4a')](_0x237096[_0x9c0a('0x42')],_0x237096['query']);_0x47b8a2['attributes']=_['intersection'](_0x237096[_0x9c0a('0x42')],qs['fields'](_0x5b0d5f['query'][_0x9c0a('0x4b')]));_0x47b8a2[_0x9c0a('0x4c')]=_0x47b8a2[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x47b8a2['attributes']:_0x237096[_0x9c0a('0x42')];_0x47b8a2['order']=qs[_0x9c0a('0x50')](_0x5b0d5f[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x47b8a2[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x5b0d5f[_0x9c0a('0x46')],_0x237096[_0x9c0a('0x49')]));if(_0x5b0d5f[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x47b8a2[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x47b8a2['where'],{'$or':_[_0x9c0a('0x55')](_0x47b8a2[_0x9c0a('0x4c')],function(_0x2a780c){var _0x17cf6a={};_0x17cf6a[_0x2a780c]={'$like':'%'+_0x5b0d5f['query']['filter']+'%'};return _0x17cf6a;})});}_0x47b8a2=_[_0x9c0a('0x54')]({},_0x47b8a2,_0x5b0d5f['options']);return _0x186a3c[_0x9c0a('0xca')](_0x47b8a2);}})['then'](function(_0x2ff90b){if(_0x2ff90b){_0x3fe97a=_0x2ff90b[_0x9c0a('0x4d')];if(!_0x5b0d5f[_0x9c0a('0x46')]['hasOwnProperty'](_0x9c0a('0x4f'))){_0x47b8a2[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x5b0d5f[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x47b8a2[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x5b0d5f[_0x9c0a('0x46')]['offset']);}return _0x186a3c[_0x9c0a('0xca')](_0x47b8a2);}})[_0x9c0a('0x1e')](function(_0x4c072d){if(_0x4c072d){return _0x4c072d?{'count':_0x3fe97a,'rows':_0x4c072d}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x5829f8,null))['catch'](handleError(_0x5829f8,null));};exports[_0x9c0a('0xcb')]=function(_0x438b6e,_0xff631f,_0x1580e6){var _0x1a0d7f;var _0x5a1e22;var _0x5547b8;return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x438b6e[_0x9c0a('0x5e')]['id'],'role':_0x9c0a('0x36')},'attributes':['id','name',_0x9c0a('0xcc'),_0x9c0a('0xcd'),_0x9c0a('0x3c'),_0x9c0a('0x72'),_0x9c0a('0x95')]})[_0x9c0a('0x1e')](handleEntityNotFound(_0xff631f,null))[_0x9c0a('0x1e')](function(_0x350842){if(_0x350842){_0x1a0d7f=_0x350842;if(_0x438b6e[_0x9c0a('0x62')][_0x9c0a('0x9f')]){_0x5547b8=util[_0x9c0a('0x6c')](_0x9c0a('0xce'),_0x1a0d7f[_0x438b6e[_0x9c0a('0x62')][_0x9c0a('0x9f')]]);}else if(_0x438b6e[_0x9c0a('0x62')][_0x9c0a('0xcf')]){_0x5547b8=util['format'](_0x9c0a('0xa0'),_0x438b6e[_0x9c0a('0x62')][_0x9c0a('0xcf')]);}else{_0x5547b8=util[_0x9c0a('0x6c')](_0x9c0a('0xa0'),_0x1a0d7f['name']);}socket['to'](util[_0x9c0a('0x6c')]('user:%s',_0x1a0d7f[_0x9c0a('0x3e')]))[_0x9c0a('0xa8')](_0x9c0a('0xd0'),{'ip':_0x438b6e[_0x9c0a('0xd1')]['x-forwarded-for']||_0x438b6e[_0x9c0a('0xd2')][_0x9c0a('0xd3')]||_0x438b6e[_0x9c0a('0xd4')]['remoteAddress']||_0x438b6e['connection'][_0x9c0a('0xd4')][_0x9c0a('0xd3')]});return db[_0x9c0a('0xa4')][_0x9c0a('0x34')]({'where':{'membername':_0x1a0d7f[_0x9c0a('0x3e')]},'individualHooks':!![]});}})['then'](function(_0x58f121){if(_0x1a0d7f){return _0x1a0d7f[_0x9c0a('0xd5')]({'raw':!![]});}})['then'](function(_0x2d0d20){var _0xb3e72b=[];if(_0x2d0d20){_0x5a1e22=_0x2d0d20;if(_0x5a1e22['length']){for(var _0x276a50=0x0;_0x276a50<_0x5a1e22['length'];_0x276a50++){_0xb3e72b[_0x9c0a('0xd6')]({'membername':_0x1a0d7f[_0x9c0a('0x3e')],'UserId':_0x1a0d7f['id'],'queue_name':_0x5a1e22[_0x276a50]['name'],'VoiceQueueId':_0x5a1e22[_0x276a50]['id'],'interface':_0x5547b8,'paused':_0x1a0d7f['loginInPause']||![],'penalty':_0x5a1e22[_0x276a50][_0x9c0a('0xd7')]||0x0});}return BPromise['each'](_0xb3e72b,function(_0x5b2d94){return db[_0x9c0a('0xa4')][_0x9c0a('0xa5')](_0x5b2d94);});}}})[_0x9c0a('0x1e')](function(){return db['MemberReport'][_0x9c0a('0x9e')]({'where':{'membername':_0x1a0d7f[_0x9c0a('0x3e')],'exitAt':null}});})[_0x9c0a('0x1e')](function(_0x4c0bd){var _0x22cfa6=[];_0x4c0bd[_0x9c0a('0xd8')](function(_0x16ef96){_0x22cfa6[_0x9c0a('0xd6')](_0x16ef96[_0x9c0a('0x33')]({'exitAt':moment()[_0x9c0a('0x6c')](_0x9c0a('0xd9'))}));});return BPromise[_0x9c0a('0xda')](_0x22cfa6);})[_0x9c0a('0x1e')](function(){var _0x5dfa45=[];var _0x5dfe63=[];var _0x218e09=utils[_0x9c0a('0xdb')]();var _0x36445e={'membername':_0x1a0d7f[_0x9c0a('0x3e')],'interface':_0x5547b8,'enterAt':moment()[_0x9c0a('0x6c')](_0x9c0a('0xd9')),'role':_0x1a0d7f[_0x9c0a('0x3c')],'internal':_0x1a0d7f['internal']};_0x218e09[_0x9c0a('0xd8')](function(_0x1c8262){_0x5dfa45[_0x9c0a('0xd6')](_[_0x9c0a('0x54')]({'channel':_0x1c8262,'type':_0x9c0a('0xdc'),'data1':_0x438b6e[_0x9c0a('0x62')][_0x9c0a('0xdd')],'data2':_0x5547b8},_0x36445e));if(_0x1a0d7f[_0x9c0a('0x95')]){_0x5dfe63['push'](_[_0x9c0a('0x54')]({'channel':_0x1c8262,'type':_0x9c0a('0xde'),'data1':'LOGININPAUSE'},_0x36445e));}});return db['MemberReport'][_0x9c0a('0x61')](_0x5dfa45[_0x9c0a('0xdf')](_0x5dfe63),{'individualHooks':!![]});})[_0x9c0a('0x1e')](function(){return _0x1a0d7f[_0x9c0a('0x33')]({'online':!![],'lastLoginAt':moment()[_0x9c0a('0x6c')](_0x9c0a('0xd9')),'voicePause':_0x1a0d7f['loginInPause']||![],'mailPause':_0x1a0d7f[_0x9c0a('0x95')]||![],'chatPause':_0x1a0d7f[_0x9c0a('0x95')]||![],'faxPause':_0x1a0d7f['loginInPause']||![],'smsPause':_0x1a0d7f[_0x9c0a('0x95')]||![],'openchannelPause':_0x1a0d7f['loginInPause']||![],'pauseType':_0x1a0d7f[_0x9c0a('0x95')]?_0x9c0a('0xe0'):null,'interface':_0x5547b8,'lastPauseAt':moment()[_0x9c0a('0x6c')](_0x9c0a('0xd9'))});})[_0x9c0a('0x1e')](respondWithResult(_0xff631f,null))['catch'](handleError(_0xff631f,null));};exports['logout']=function(_0x2b9ba2,_0x261dc2,_0x598f77){var _0x107c7e;return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x2b9ba2['params']['id'],'role':'agent'},'attributes':['id',_0x9c0a('0x3e'),'role']})[_0x9c0a('0x1e')](handleEntityNotFound(_0x261dc2,null))[_0x9c0a('0x1e')](function(_0x515542){if(_0x515542){_0x107c7e=_0x515542;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x107c7e[_0x9c0a('0x3e')]},'individualHooks':!![]});}})[_0x9c0a('0x1e')](function(){return db[_0x9c0a('0xe1')][_0x9c0a('0x9e')]({'where':{'membername':_0x107c7e[_0x9c0a('0x3e')],'exitAt':null}});})[_0x9c0a('0x1e')](function(_0x40d01e){var _0x1f724e=[];_0x40d01e[_0x9c0a('0xd8')](function(_0x393f09){_0x1f724e['push'](_0x393f09[_0x9c0a('0x33')]({'exitAt':moment()[_0x9c0a('0x6c')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x9c0a('0xda')](_0x1f724e);})[_0x9c0a('0x1e')](function(){return _0x107c7e[_0x9c0a('0x33')]({'online':![],'lastLoginAt':null,'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'interface':null});})[_0x9c0a('0x1e')](respondWithResult(_0x261dc2,null))['catch'](handleError(_0x261dc2,null));};exports[_0x9c0a('0xe2')]=function(_0x31c7b4,_0x15b87f,_0x5986f0){var _0x497277;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x31c7b4[_0x9c0a('0x5e')]['id']},'individualHooks':!![]})[_0x9c0a('0x1e')](function(){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x31c7b4[_0x9c0a('0x5e')]['id'],'role':_0x9c0a('0x36')},'attributes':['id',_0x9c0a('0x3e'),_0x9c0a('0x3c'),_0x9c0a('0x72'),'interface']});})[_0x9c0a('0x1e')](handleEntityNotFound(_0x15b87f,null))[_0x9c0a('0x1e')](function(_0x54b69a){if(_0x54b69a){_0x497277=_0x54b69a;return respondWithRpcPromise(_0x9c0a('0xe3'),_0x9c0a('0xe2'),{'id':_0x497277['id'],'name':_0x497277[_0x9c0a('0x3e')],'pause':!![]});}})['then'](function(){if(_0x497277){return db['MemberReport'][_0x9c0a('0x9e')]({'where':{'membername':_0x497277[_0x9c0a('0x3e')],'type':_0x9c0a('0xde'),'exitAt':null}});}})[_0x9c0a('0x1e')](function(_0x597928){if(_0x597928[_0x9c0a('0x4d')]){var _0x183012=moment()[_0x9c0a('0x6c')](_0x9c0a('0xd9'));for(var _0x12a379=0x0,_0x198d91=_0x597928['length'];_0x12a379<_0x198d91;_0x12a379++){_0x597928[_0x12a379][_0x9c0a('0xe4')]({'exitAt':_0x183012});}}})[_0x9c0a('0x1e')](function(){var _0x78997f=[];var _0xdcafe1=utils[_0x9c0a('0xdb')]();_0xdcafe1[_0x9c0a('0xd8')](function(_0x106e14){_0x78997f[_0x9c0a('0xd6')]({'channel':_0x106e14,'membername':_0x497277[_0x9c0a('0x3e')],'interface':_[_0x9c0a('0x6b')](_0x497277[_0x9c0a('0x9f')])?util['format'](_0x9c0a('0xa0'),_0x497277['name']):_0x497277['interface'],'type':_0x9c0a('0xde'),'enterAt':moment()[_0x9c0a('0x6c')](_0x9c0a('0xd9')),'data1':_0x31c7b4['body'][_0x9c0a('0xe5')]||_0x9c0a('0xe6'),'role':_0x497277[_0x9c0a('0x3c')],'internal':_0x497277[_0x9c0a('0x72')]});});return db[_0x9c0a('0xe1')][_0x9c0a('0x61')](_0x78997f,{'individualHooks':!![]});})[_0x9c0a('0x1e')](function(){return _0x497277[_0x9c0a('0x33')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'pauseType':_0x31c7b4[_0x9c0a('0x62')][_0x9c0a('0xe5')]||_0x9c0a('0xe6'),'lastPauseAt':moment()[_0x9c0a('0x6c')](_0x9c0a('0xd9'))});})['then'](respondWithResult(_0x15b87f,null))[_0x9c0a('0x28')](handleError(_0x15b87f,null));};exports[_0x9c0a('0xe7')]=function(_0x3a175b,_0x44e2ed,_0x488858){var _0x557724;return db['User']['find']({'where':{'id':_0x3a175b[_0x9c0a('0x5e')]['id']},'attributes':['id','name',_0x9c0a('0x3c'),_0x9c0a('0xa1'),_0x9c0a('0xe8'),_0x9c0a('0xe9'),_0x9c0a('0xea'),_0x9c0a('0xeb'),'smsPause','pauseType',_0x9c0a('0xec')]})[_0x9c0a('0x1e')](handleEntityNotFound(_0x44e2ed,null))['then'](function(_0x376080){if(_0x376080){_0x557724=_0x376080;if(_0x3a175b['body'][_0x9c0a('0x98')]&&!utils[_0x9c0a('0x96')](_0x3a175b[_0x9c0a('0x62')][_0x9c0a('0x98')])){throw new db[(_0x9c0a('0x8a'))][(_0x9c0a('0x8b'))](_0x9c0a('0x97'));}switch(_0x3a175b[_0x9c0a('0x62')][_0x9c0a('0x98')]){case _0x9c0a('0x9c'):return respondWithRpcPromise(_0x9c0a('0xe3'),_0x9c0a('0xe7'),{'id':_0x557724['id'],'name':_0x557724[_0x9c0a('0x3e')],'pause':![]})[_0x9c0a('0x1e')](function(){return db[_0x9c0a('0xa4')][_0x9c0a('0x33')]({'paused':0x0},{'where':{'UserId':_0x557724['id']},'individualHooks':!![]});})[_0x9c0a('0x1e')](function(){return db['MemberReport'][_0x9c0a('0x3d')]({'where':{'channel':_0x3a175b['body'][_0x9c0a('0x98')],'membername':_0x557724[_0x9c0a('0x3e')],'type':_0x9c0a('0xde'),'exitAt':null}});})[_0x9c0a('0x1e')](function(_0x14006c){if(_0x14006c){return _0x14006c['update']({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x9c0a('0xed')},{'individualHooks':!![]});}return null;})[_0x9c0a('0x1e')](function(){return _0x557724[_0x9c0a('0x33')]({'voicePause':![]});});case _0x9c0a('0xee'):case _0x9c0a('0xef'):case _0x9c0a('0xf0'):case _0x9c0a('0xf1'):case _0x9c0a('0xf2'):return db[_0x9c0a('0xe1')]['find']({'where':{'channel':_0x3a175b[_0x9c0a('0x62')]['channel'],'membername':_0x557724[_0x9c0a('0x3e')],'type':'PAUSE','exitAt':null}})[_0x9c0a('0x1e')](function(_0x20cbcc){if(_0x20cbcc){return _0x20cbcc['update']({'exitAt':moment()[_0x9c0a('0x6c')](_0x9c0a('0xd9')),'data2':'manual'},{'individualHooks':!![]});}return null;})['then'](function(){var _0x47a88c={};_[_0x9c0a('0x2f')](_0x47a88c,util['format']('%s%s',_0x3a175b[_0x9c0a('0x62')][_0x9c0a('0x98')],_0x9c0a('0xf3')),![]);return _0x557724[_0x9c0a('0x33')](_0x47a88c);});default:return respondWithRpcPromise(_0x9c0a('0xe3'),'unpause',{'id':_0x557724['id'],'name':_0x557724[_0x9c0a('0x3e')],'pause':![]})[_0x9c0a('0x1e')](function(){return db[_0x9c0a('0xa4')][_0x9c0a('0x33')]({'paused':0x0},{'where':{'UserId':_0x557724['id']}});})[_0x9c0a('0x1e')](function(){return db[_0x9c0a('0xe1')]['findAll']({'where':{'membername':_0x557724[_0x9c0a('0x3e')],'type':'PAUSE','exitAt':null}});})[_0x9c0a('0x1e')](function(_0x14a9e2){var _0x2bcd0=[];_0x14a9e2[_0x9c0a('0xd8')](function(_0x34b75c){_0x2bcd0[_0x9c0a('0xd6')](_0x34b75c['update']({'exitAt':moment()['format'](_0x9c0a('0xd9')),'data2':_0x9c0a('0xed')}));});return BPromise['all'](_0x2bcd0);})[_0x9c0a('0x1e')](function(){return _0x557724['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});});}}})[_0x9c0a('0x1e')](respondWithResult(_0x44e2ed,null))['catch'](handleError(_0x44e2ed,null));};exports['getTeams']=function(_0x4485c4,_0x3ca7a2,_0x1125ac){var _0x5ca69a={};var _0x322287={};var _0x241c8c;var _0x5740df;return db['User'][_0x9c0a('0xb3')]({'where':{'id':_0x4485c4[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x3ca7a2,null))[_0x9c0a('0x1e')](function(_0x12d329){if(_0x12d329){_0x241c8c=_0x12d329;_0x322287[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0xf4')][_0x9c0a('0x60')]);_0x322287[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x4485c4[_0x9c0a('0x46')]);_0x322287[_0x9c0a('0x49')]=_['intersection'](_0x322287[_0x9c0a('0x42')],_0x322287[_0x9c0a('0x46')]);_0x5ca69a[_0x9c0a('0x4c')]=_['intersection'](_0x322287[_0x9c0a('0x42')],qs['fields'](_0x4485c4[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x5ca69a[_0x9c0a('0x4c')]=_0x5ca69a[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x5ca69a[_0x9c0a('0x4c')]:_0x322287['model'];_0x5ca69a[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0x4485c4['query'][_0x9c0a('0x50')]);_0x5ca69a['where']=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x4485c4[_0x9c0a('0x46')],_0x322287[_0x9c0a('0x49')]));if(_0x4485c4[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x5ca69a[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x5ca69a[_0x9c0a('0x51')],{'$or':_['map'](_0x5ca69a[_0x9c0a('0x4c')],function(_0x155637){var _0x547117={};_0x547117[_0x155637]={'$like':'%'+_0x4485c4[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x547117;})});}_0x5ca69a=_['merge']({},_0x5ca69a,_0x4485c4[_0x9c0a('0x59')]);return _0x241c8c['getTeams'](_0x5ca69a);}})[_0x9c0a('0x1e')](function(_0x47da50){if(_0x47da50){_0x5740df=_0x47da50[_0x9c0a('0x4d')];if(!_0x4485c4['query'][_0x9c0a('0x4e')]('nolimit')){_0x5ca69a['limit']=qs['limit'](_0x4485c4[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x5ca69a[_0x9c0a('0x2d')]=qs['offset'](_0x4485c4[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}return _0x241c8c[_0x9c0a('0xf5')](_0x5ca69a);}})[_0x9c0a('0x1e')](function(_0x396ee1){if(_0x396ee1){return _0x396ee1?{'count':_0x5740df,'rows':_0x396ee1}:null;}})['then'](respondWithResult(_0x3ca7a2,null))[_0x9c0a('0x28')](handleError(_0x3ca7a2,null));};exports[_0x9c0a('0xf6')]=function(_0x58f5e2,_0x10a62c,_0x5b6bf6){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x58f5e2[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x10a62c,null))[_0x9c0a('0x1e')](function(_0x51dcab){if(_0x51dcab){return _0x51dcab[_0x9c0a('0xf6')](_0x58f5e2[_0x9c0a('0x62')]['ids'],_[_0x9c0a('0x66')](_0x58f5e2[_0x9c0a('0x62')],[_0x9c0a('0x65'),'id'])||{});}})[_0x9c0a('0x1e')](respondWithResult(_0x10a62c,null))[_0x9c0a('0x28')](handleError(_0x10a62c,null));};exports[_0x9c0a('0xf7')]=function(_0x1d733d,_0x51d993,_0x1432cd){var _0xb3be4d;return db[_0x9c0a('0x41')]['find']({'where':{'id':_0x1d733d[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x51d993,null))[_0x9c0a('0x1e')](function(_0x20b54f){if(_0x20b54f){return _0x20b54f[_0x9c0a('0xf7')](_0x1d733d[_0x9c0a('0x46')]['ids']);}})['then'](respondWithStatusCode(_0x51d993,null))[_0x9c0a('0x28')](handleError(_0x51d993,null));};exports[_0x9c0a('0xf8')]=function(_0x35f3bb,_0x1503c4,_0x4b3d30){var _0x41999b={};var _0x3090e9={};var _0x48810b;var _0x43918f;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x35f3bb[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x1503c4,null))[_0x9c0a('0x1e')](function(_0x5c8744){if(_0x5c8744){_0x48810b=_0x5c8744;_0x3090e9[_0x9c0a('0x42')]=_['keys'](db[_0x9c0a('0xb4')]['rawAttributes']);_0x3090e9[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x35f3bb[_0x9c0a('0x46')]);_0x3090e9[_0x9c0a('0x49')]=_['intersection'](_0x3090e9['model'],_0x3090e9[_0x9c0a('0x46')]);_0x41999b[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x3090e9['model'],qs['fields'](_0x35f3bb['query'][_0x9c0a('0x4b')]));_0x41999b[_0x9c0a('0x4c')]=_0x41999b[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x41999b[_0x9c0a('0x4c')]:_0x3090e9['model'];_0x41999b[_0x9c0a('0xbd')]=qs['sort'](_0x35f3bb[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x41999b['where']=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x35f3bb[_0x9c0a('0x46')],_0x3090e9[_0x9c0a('0x49')]));if(_0x35f3bb[_0x9c0a('0x46')]['filter']){_0x41999b[_0x9c0a('0x51')]=_['merge'](_0x41999b[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x41999b[_0x9c0a('0x4c')],function(_0x3eece1){var _0x477f47={};_0x477f47[_0x3eece1]={'$like':'%'+_0x35f3bb['query'][_0x9c0a('0x39')]+'%'};return _0x477f47;})});}_0x41999b=_['merge']({},_0x41999b,_0x35f3bb['options']);return _0x48810b[_0x9c0a('0xf8')](_0x41999b);}})[_0x9c0a('0x1e')](function(_0x151862){if(_0x151862){_0x43918f=_0x151862[_0x9c0a('0x4d')];if(!_0x35f3bb[_0x9c0a('0x46')][_0x9c0a('0x4e')]('nolimit')){_0x41999b[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x35f3bb[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x41999b['offset']=qs[_0x9c0a('0x2d')](_0x35f3bb['query'][_0x9c0a('0x2d')]);}return _0x48810b[_0x9c0a('0xf8')](_0x41999b);}})[_0x9c0a('0x1e')](function(_0x5939e7){if(_0x5939e7){return _0x5939e7?{'count':_0x43918f,'rows':_0x5939e7}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x1503c4,null))[_0x9c0a('0x28')](handleError(_0x1503c4,null));};exports[_0x9c0a('0xf9')]=function(_0xae5689,_0x480d64,_0x334e91){var _0x199d2f={};var _0x397314={};var _0xcc0af2;var _0x5e59c6;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0xae5689[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x480d64,null))[_0x9c0a('0x1e')](function(_0xd357e0){if(_0xd357e0){_0xcc0af2=_0xd357e0;_0x397314[_0x9c0a('0x42')]=_['keys'](db[_0x9c0a('0x41')][_0x9c0a('0x60')]);_0x397314['query']=_[_0x9c0a('0x48')](_0xae5689[_0x9c0a('0x46')]);_0x397314[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x397314[_0x9c0a('0x42')],_0x397314[_0x9c0a('0x46')]);_0x199d2f[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x397314['model'],qs[_0x9c0a('0x4b')](_0xae5689[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x199d2f[_0x9c0a('0x4c')]=_0x199d2f[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x199d2f[_0x9c0a('0x4c')]:_0x397314[_0x9c0a('0x42')];_0x199d2f[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0xae5689['query']['sort']);_0x199d2f[_0x9c0a('0x51')]=qs['filters'](_['pick'](_0xae5689['query'],_0x397314[_0x9c0a('0x49')]));if(_0xae5689['query'][_0x9c0a('0x39')]){_0x199d2f[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x199d2f[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x199d2f[_0x9c0a('0x4c')],function(_0x3d4107){var _0x129fe2={};_0x129fe2[_0x3d4107]={'$like':'%'+_0xae5689['query']['filter']+'%'};return _0x129fe2;})});}_0x199d2f['model']=db[_0x9c0a('0x41')];_0x199d2f['as']=_0x9c0a('0x84');_0x199d2f=_['merge']({},_0x199d2f,_0xae5689['options']);return _0xcc0af2['getVoiceQueues']({'include':[_0x199d2f]});}})[_0x9c0a('0x1e')](function(_0x2cd5a6){if(_0x2cd5a6){var _0x35cfe7={},_0x2595a7=[],_0x54e80f=0x0;for(var _0x1e8953=0x0;_0x1e8953<_0x2cd5a6['length'];_0x1e8953+=0x1){for(var _0x19f4ea=0x0,_0x5139e2;_0x19f4ea<_0x2cd5a6[_0x1e8953][_0x9c0a('0x84')][_0x9c0a('0x4d')];_0x19f4ea+=0x1){_0x5139e2=_0x2cd5a6[_0x1e8953][_0x9c0a('0x84')][_0x19f4ea][_0x9c0a('0x83')]({'plain':!![]});_0x35cfe7[_0x5139e2['id']]=_0x5139e2;}}_0x35cfe7=_[_0x9c0a('0xfa')](_0x35cfe7);for(var _0x38332d=qs[_0x9c0a('0x2d')](_0xae5689[_0x9c0a('0x46')]['offset']);_0x38332d<_0x35cfe7['length']&&_0x2595a7[_0x9c0a('0x4d')]<qs['limit'](_0xae5689[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x38332d+=0x1){if(_0x35cfe7[_0x38332d]){_0x2595a7[_0x9c0a('0xd6')](_0x35cfe7[_0x38332d]);}}return{'count':_0x35cfe7[_0x9c0a('0x4d')],'rows':_0x2595a7};}})[_0x9c0a('0x1e')](respondWithResult(_0x480d64,null))[_0x9c0a('0x28')](handleError(_0x480d64,null));};exports[_0x9c0a('0x34')]=function(_0xb63a4f,_0x57c30e){if(_0xb63a4f[_0x9c0a('0x35')]['id']==_0xb63a4f[_0x9c0a('0x5e')]['id']){return _0x57c30e[_0x9c0a('0x2a')](0x1f4)[_0x9c0a('0xfb')]({'message':_0x9c0a('0xfc')});}return db[_0x9c0a('0x41')]['find']({'where':{'id':_0xb63a4f['params']['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x57c30e,null))[_0x9c0a('0x1e')](removeEntity(_0x57c30e,null))[_0x9c0a('0x28')](handleError(_0x57c30e,null));};exports['addChatInteractions']=function(_0x3cfef3,_0xa9d593,_0x169e72){return db[_0x9c0a('0x41')]['find']({'where':{'id':_0x3cfef3[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0xa9d593,null))[_0x9c0a('0x1e')](function(_0x398fee){if(_0x398fee){return _0x398fee['addChatInteractions'](_0x3cfef3['body'][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0x3cfef3[_0x9c0a('0x62')],[_0x9c0a('0x65'),'id'])||{})[_0x9c0a('0xfd')](function(){for(var _0xaad30f=0x0;_0xaad30f<_0x3cfef3[_0x9c0a('0x62')][_0x9c0a('0x65')][_0x9c0a('0x4d')];_0xaad30f+=0x1){socket[_0x9c0a('0xa8')](_0x9c0a('0xfe'),{'ChatInteractionId':Number(_0x3cfef3[_0x9c0a('0x62')]['ids'][_0xaad30f]),'UserId':Number(_0x3cfef3[_0x9c0a('0x5e')]['id'])});}return _0x3cfef3[_0x9c0a('0x62')][_0x9c0a('0x65')];});}})['then'](respondWithResult(_0xa9d593,null))[_0x9c0a('0x28')](handleError(_0xa9d593,null));};exports[_0x9c0a('0xff')]=function(_0x5ab6e0,_0x475187,_0x51e5dc){var _0x31db12;return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x5ab6e0[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x475187,null))[_0x9c0a('0x1e')](function(_0xd55bda){if(_0xd55bda){return _0xd55bda['removeChatInteractions'](_0x5ab6e0[_0x9c0a('0x46')][_0x9c0a('0x65')])['then'](function(_0x42f93c){if(_['isArray'](_0x5ab6e0[_0x9c0a('0x46')][_0x9c0a('0x65')])){for(var _0x5a922e=0x0;_0x5a922e<_0x5ab6e0[_0x9c0a('0x46')][_0x9c0a('0x65')][_0x9c0a('0x4d')];_0x5a922e+=0x1){socket[_0x9c0a('0xa8')](_0x9c0a('0x100'),{'ChatInteractionId':Number(_0x5ab6e0[_0x9c0a('0x46')]['ids'][_0x5a922e]),'UserId':Number(_0x5ab6e0[_0x9c0a('0x5e')]['id'])});}}else{socket[_0x9c0a('0xa8')](_0x9c0a('0x100'),{'ChatInteractionId':Number(_0x5ab6e0['query'][_0x9c0a('0x65')]),'UserId':Number(_0x5ab6e0[_0x9c0a('0x5e')]['id'])});}});}})[_0x9c0a('0x1e')](respondWithStatusCode(_0x475187,null))[_0x9c0a('0x28')](handleError(_0x475187,null));};exports[_0x9c0a('0x101')]=function(_0x2528da,_0x192d26,_0xa02d90){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x2528da[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x192d26,null))[_0x9c0a('0x1e')](function(_0x16632c){if(_0x16632c){return _0x16632c[_0x9c0a('0x101')](_0x2528da[_0x9c0a('0x62')]['ids'],_[_0x9c0a('0x66')](_0x2528da[_0x9c0a('0x62')],[_0x9c0a('0x65'),'id'])||{})[_0x9c0a('0xfd')](function(){for(var _0x4228e9=0x0;_0x4228e9<_0x2528da[_0x9c0a('0x62')]['ids'][_0x9c0a('0x4d')];_0x4228e9+=0x1){socket[_0x9c0a('0xa8')](_0x9c0a('0x102'),{'MailInteractionId':Number(_0x2528da[_0x9c0a('0x62')][_0x9c0a('0x65')][_0x4228e9]),'UserId':Number(_0x2528da[_0x9c0a('0x5e')]['id'])});}return _0x2528da[_0x9c0a('0x62')][_0x9c0a('0x65')];});}})[_0x9c0a('0x1e')](respondWithResult(_0x192d26,null))[_0x9c0a('0x28')](handleError(_0x192d26,null));};exports[_0x9c0a('0x103')]=function(_0x25aef4,_0x5ea6af,_0x2d05e0){var _0x3308b9;return db['User'][_0x9c0a('0x3d')]({'where':{'id':_0x25aef4['params']['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x5ea6af,null))['then'](function(_0x2f9d1c){if(_0x2f9d1c){return _0x2f9d1c[_0x9c0a('0x103')](_0x25aef4['query'][_0x9c0a('0x65')])['then'](function(_0x14cb4b){if(_['isArray'](_0x25aef4[_0x9c0a('0x46')][_0x9c0a('0x65')])){for(var _0xa5d56d=0x0;_0xa5d56d<_0x25aef4['query'][_0x9c0a('0x65')]['length'];_0xa5d56d+=0x1){socket[_0x9c0a('0xa8')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x25aef4[_0x9c0a('0x46')][_0x9c0a('0x65')][_0xa5d56d]),'UserId':Number(_0x25aef4[_0x9c0a('0x5e')]['id'])});}}else{socket['emit'](_0x9c0a('0x104'),{'MailInteractionId':Number(_0x25aef4['query'][_0x9c0a('0x65')]),'UserId':Number(_0x25aef4[_0x9c0a('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0x5ea6af,null))['catch'](handleError(_0x5ea6af,null));};exports[_0x9c0a('0x105')]=function(_0x1af498,_0x14ad08,_0x4b76ad){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x1af498['params']['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x14ad08,null))[_0x9c0a('0x1e')](function(_0x2c1ec3){if(_0x2c1ec3){return _0x2c1ec3[_0x9c0a('0x105')](_0x1af498['body'][_0x9c0a('0x65')],_['omit'](_0x1af498['body'],['ids','id'])||{})[_0x9c0a('0xfd')](function(){for(var _0x2463b6=0x0;_0x2463b6<_0x1af498['body'][_0x9c0a('0x65')][_0x9c0a('0x4d')];_0x2463b6+=0x1){socket['emit'](_0x9c0a('0x106'),{'FaxInteractionId':Number(_0x1af498['body'][_0x9c0a('0x65')][_0x2463b6]),'UserId':Number(_0x1af498[_0x9c0a('0x5e')]['id'])});}return _0x1af498['body'][_0x9c0a('0x65')];});}})[_0x9c0a('0x1e')](respondWithResult(_0x14ad08,null))[_0x9c0a('0x28')](handleError(_0x14ad08,null));};exports['removeFaxInteractions']=function(_0x109c5a,_0x6bd58e,_0x4a1c99){var _0x4141c1;return db['User'][_0x9c0a('0x3d')]({'where':{'id':_0x109c5a[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x6bd58e,null))['then'](function(_0x4327d5){if(_0x4327d5){return _0x4327d5[_0x9c0a('0x107')](_0x109c5a[_0x9c0a('0x46')][_0x9c0a('0x65')])[_0x9c0a('0x1e')](function(_0x22f0b3){if(_[_0x9c0a('0x108')](_0x109c5a[_0x9c0a('0x46')][_0x9c0a('0x65')])){for(var _0x5e3815=0x0;_0x5e3815<_0x109c5a[_0x9c0a('0x46')][_0x9c0a('0x65')][_0x9c0a('0x4d')];_0x5e3815+=0x1){socket['emit'](_0x9c0a('0x109'),{'FaxInteractionId':Number(_0x109c5a[_0x9c0a('0x46')]['ids'][_0x5e3815]),'UserId':Number(_0x109c5a[_0x9c0a('0x5e')]['id'])});}}else{socket[_0x9c0a('0xa8')](_0x9c0a('0x109'),{'FaxInteractionId':Number(_0x109c5a[_0x9c0a('0x46')][_0x9c0a('0x65')]),'UserId':Number(_0x109c5a[_0x9c0a('0x5e')]['id'])});}});}})[_0x9c0a('0x1e')](respondWithStatusCode(_0x6bd58e,null))['catch'](handleError(_0x6bd58e,null));};exports['addSmsInteractions']=function(_0x18cdcb,_0x50f759,_0x2197f4){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x18cdcb[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x50f759,null))['then'](function(_0x1b171e){if(_0x1b171e){return _0x1b171e[_0x9c0a('0x10a')](_0x18cdcb[_0x9c0a('0x62')][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0x18cdcb[_0x9c0a('0x62')],[_0x9c0a('0x65'),'id'])||{})[_0x9c0a('0xfd')](function(){for(var _0x4f155d=0x0;_0x4f155d<_0x18cdcb[_0x9c0a('0x62')][_0x9c0a('0x65')][_0x9c0a('0x4d')];_0x4f155d+=0x1){socket['emit']('user_has_sms_interactions:save',{'SmsInteractionId':Number(_0x18cdcb[_0x9c0a('0x62')][_0x9c0a('0x65')][_0x4f155d]),'UserId':Number(_0x18cdcb[_0x9c0a('0x5e')]['id'])});}return _0x18cdcb[_0x9c0a('0x62')]['ids'];});}})[_0x9c0a('0x1e')](respondWithResult(_0x50f759,null))['catch'](handleError(_0x50f759,null));};exports[_0x9c0a('0x10b')]=function(_0x502857,_0x2c3ced,_0x254cfd){var _0x253974;return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x502857[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x2c3ced,null))[_0x9c0a('0x1e')](function(_0x3d8d3a){if(_0x3d8d3a){return _0x3d8d3a['removeSmsInteractions'](_0x502857['query'][_0x9c0a('0x65')])[_0x9c0a('0x1e')](function(_0x5b7289){if(_['isArray'](_0x502857[_0x9c0a('0x46')][_0x9c0a('0x65')])){for(var _0x5cf192=0x0;_0x5cf192<_0x502857[_0x9c0a('0x46')][_0x9c0a('0x65')]['length'];_0x5cf192+=0x1){socket[_0x9c0a('0xa8')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x502857[_0x9c0a('0x46')][_0x9c0a('0x65')][_0x5cf192]),'UserId':Number(_0x502857[_0x9c0a('0x5e')]['id'])});}}else{socket[_0x9c0a('0xa8')](_0x9c0a('0x10c'),{'SmsInteractionId':Number(_0x502857[_0x9c0a('0x46')][_0x9c0a('0x65')]),'UserId':Number(_0x502857['params']['id'])});}});}})[_0x9c0a('0x1e')](respondWithStatusCode(_0x2c3ced,null))['catch'](handleError(_0x2c3ced,null));};exports[_0x9c0a('0x10d')]=function(_0xe16f0a,_0xa569f6,_0x3c8814){return db[_0x9c0a('0x41')]['find']({'where':{'id':_0xe16f0a[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0xa569f6,null))[_0x9c0a('0x1e')](function(_0x40620a){if(_0x40620a){return _0x40620a[_0x9c0a('0x10d')](_0xe16f0a[_0x9c0a('0x62')][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0xe16f0a[_0x9c0a('0x62')],[_0x9c0a('0x65'),'id'])||{})[_0x9c0a('0xfd')](function(){for(var _0x367bf2=0x0;_0x367bf2<_0xe16f0a[_0x9c0a('0x62')][_0x9c0a('0x65')][_0x9c0a('0x4d')];_0x367bf2+=0x1){socket['emit'](_0x9c0a('0x10e'),{'OpenchannelInteractionId':Number(_0xe16f0a[_0x9c0a('0x62')][_0x9c0a('0x65')][_0x367bf2]),'UserId':Number(_0xe16f0a[_0x9c0a('0x5e')]['id'])});}return _0xe16f0a['body'][_0x9c0a('0x65')];});}})['then'](respondWithResult(_0xa569f6,null))[_0x9c0a('0x28')](handleError(_0xa569f6,null));};exports['removeOpenchannelInteractions']=function(_0x312243,_0x230c40,_0x5cfd08){var _0x3ed051;return db[_0x9c0a('0x41')]['find']({'where':{'id':_0x312243[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x230c40,null))[_0x9c0a('0x1e')](function(_0x230385){if(_0x230385){return _0x230385[_0x9c0a('0x10f')](_0x312243[_0x9c0a('0x46')][_0x9c0a('0x65')])[_0x9c0a('0x1e')](function(_0x4b69d6){if(_[_0x9c0a('0x108')](_0x312243[_0x9c0a('0x46')][_0x9c0a('0x65')])){for(var _0x8ab31f=0x0;_0x8ab31f<_0x312243['query'][_0x9c0a('0x65')]['length'];_0x8ab31f+=0x1){socket[_0x9c0a('0xa8')](_0x9c0a('0x110'),{'OpenchannelInteractionId':Number(_0x312243[_0x9c0a('0x46')][_0x9c0a('0x65')][_0x8ab31f]),'UserId':Number(_0x312243[_0x9c0a('0x5e')]['id'])});}}else{socket[_0x9c0a('0xa8')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x312243[_0x9c0a('0x46')][_0x9c0a('0x65')]),'UserId':Number(_0x312243[_0x9c0a('0x5e')]['id'])});}});}})[_0x9c0a('0x1e')](respondWithStatusCode(_0x230c40,null))['catch'](handleError(_0x230c40,null));};exports['getVoicePrefixes']=function(_0x5cd9c4,_0x264186,_0xbf0c87){var _0x15be6f={};var _0x2dc199={};var _0x26727b;var _0x5c1dfa;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x5cd9c4[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x264186,null))[_0x9c0a('0x1e')](function(_0x273698){if(_0x273698){_0x26727b=_0x273698;_0x2dc199['model']=_[_0x9c0a('0x48')](db[_0x9c0a('0x111')][_0x9c0a('0x60')]);_0x2dc199[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x5cd9c4['query']);_0x2dc199[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x2dc199['model'],_0x2dc199[_0x9c0a('0x46')]);_0x15be6f[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x2dc199['model'],qs['fields'](_0x5cd9c4[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x15be6f[_0x9c0a('0x4c')]=_0x15be6f[_0x9c0a('0x4c')]['length']?_0x15be6f[_0x9c0a('0x4c')]:_0x2dc199[_0x9c0a('0x42')];_0x15be6f[_0x9c0a('0xbd')]=qs['sort'](_0x5cd9c4[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x15be6f['where']=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x5cd9c4[_0x9c0a('0x46')],_0x2dc199[_0x9c0a('0x49')]));if(_0x5cd9c4['query'][_0x9c0a('0x39')]){_0x15be6f[_0x9c0a('0x51')]=_['merge'](_0x15be6f[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x15be6f['attributes'],function(_0x461920){var _0x3da66a={};_0x3da66a[_0x461920]={'$like':'%'+_0x5cd9c4[_0x9c0a('0x46')]['filter']+'%'};return _0x3da66a;})});}_0x15be6f=_[_0x9c0a('0x54')]({},_0x15be6f,_0x5cd9c4[_0x9c0a('0x59')]);return _0x26727b[_0x9c0a('0x112')](_0x15be6f);}})['then'](function(_0x17c961){if(_0x17c961){_0x5c1dfa=_0x17c961[_0x9c0a('0x4d')];if(!_0x5cd9c4[_0x9c0a('0x46')]['hasOwnProperty']('nolimit')){_0x15be6f[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x5cd9c4['query'][_0x9c0a('0x2e')]);_0x15be6f[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x5cd9c4[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}return _0x26727b['getVoicePrefixes'](_0x15be6f);}})[_0x9c0a('0x1e')](function(_0x778671){if(_0x778671){return _0x778671?{'count':_0x5c1dfa,'rows':_0x778671}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x264186,null))[_0x9c0a('0x28')](handleError(_0x264186,null));};exports['getFaxAccounts']=function(_0x351cf6,_0x2e8e4f,_0x51f5d4){var _0x26b35d={};var _0x50c71d={};var _0x32908c;var _0x168191;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x351cf6[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x2e8e4f,null))[_0x9c0a('0x1e')](function(_0x31199e){if(_0x31199e){_0x32908c=_0x31199e;_0x50c71d[_0x9c0a('0x42')]=_['keys'](db['FaxAccount']['rawAttributes']);_0x50c71d[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x351cf6[_0x9c0a('0x46')]);_0x50c71d['filters']=_[_0x9c0a('0x4a')](_0x50c71d[_0x9c0a('0x42')],_0x50c71d['query']);_0x26b35d['attributes']=_['intersection'](_0x50c71d[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x351cf6[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x26b35d[_0x9c0a('0x4c')]=_0x26b35d['attributes']['length']?_0x26b35d[_0x9c0a('0x4c')]:_0x50c71d['model'];_0x26b35d[_0x9c0a('0xbd')]=qs['sort'](_0x351cf6['query'][_0x9c0a('0x50')]);_0x26b35d[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x351cf6['query'],_0x50c71d[_0x9c0a('0x49')]));if(_0x351cf6[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x26b35d[_0x9c0a('0x51')]=_['merge'](_0x26b35d[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x26b35d[_0x9c0a('0x4c')],function(_0x1a636d){var _0x26ab5d={};_0x26ab5d[_0x1a636d]={'$like':'%'+_0x351cf6[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x26ab5d;})});}_0x26b35d=_[_0x9c0a('0x54')]({},_0x26b35d,_0x351cf6['options']);return _0x32908c['getFaxAccounts'](_0x26b35d);}})[_0x9c0a('0x1e')](function(_0x2b28a1){if(_0x2b28a1){_0x168191=_0x2b28a1['length'];if(!_0x351cf6['query'][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x26b35d[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x351cf6[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x26b35d[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x351cf6[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}return _0x32908c[_0x9c0a('0x113')](_0x26b35d);}})[_0x9c0a('0x1e')](function(_0x4c8563){if(_0x4c8563){return _0x4c8563?{'count':_0x168191,'rows':_0x4c8563}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x2e8e4f,null))[_0x9c0a('0x28')](handleError(_0x2e8e4f,null));};exports[_0x9c0a('0x114')]=function(_0x36aaf1,_0xf83a41,_0x1cd1f8){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x36aaf1[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0xf83a41,null))[_0x9c0a('0x1e')](function(_0x344148){if(_0x344148){return _0x344148[_0x9c0a('0x114')](_0x36aaf1[_0x9c0a('0x62')][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0x36aaf1[_0x9c0a('0x62')],[_0x9c0a('0x65'),'id'])||{});}})['then'](respondWithResult(_0xf83a41,null))['catch'](handleError(_0xf83a41,null));};exports[_0x9c0a('0x115')]=function(_0x334a97,_0x540831,_0x4b20a5){var _0x292a64;return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x334a97[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x540831,null))[_0x9c0a('0x1e')](function(_0x5bf157){if(_0x5bf157){return _0x5bf157[_0x9c0a('0x115')](_0x334a97[_0x9c0a('0x46')][_0x9c0a('0x65')]);}})[_0x9c0a('0x1e')](respondWithStatusCode(_0x540831,null))[_0x9c0a('0x28')](handleError(_0x540831,null));};exports[_0x9c0a('0x116')]=function(_0xfe1578,_0x39f7f8,_0x24c39c){var _0x2cde79={};var _0xce8a09={};var _0x140e07;var _0xd13187;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0xfe1578[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x39f7f8,null))[_0x9c0a('0x1e')](function(_0x4c3b73){if(_0x4c3b73){_0x140e07=_0x4c3b73;_0xce8a09[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0x117')][_0x9c0a('0x60')]);_0xce8a09[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0xfe1578[_0x9c0a('0x46')]);_0xce8a09[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0xce8a09[_0x9c0a('0x42')],_0xce8a09[_0x9c0a('0x46')]);_0x2cde79[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0xce8a09[_0x9c0a('0x42')],qs['fields'](_0xfe1578[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x2cde79['attributes']=_0x2cde79[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x2cde79[_0x9c0a('0x4c')]:_0xce8a09[_0x9c0a('0x42')];_0x2cde79[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0xfe1578[_0x9c0a('0x46')]['sort']);_0x2cde79[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0xfe1578['query'],_0xce8a09['filters']));if(_0xfe1578['query'][_0x9c0a('0x39')]){_0x2cde79['where']=_[_0x9c0a('0x54')](_0x2cde79['where'],{'$or':_[_0x9c0a('0x55')](_0x2cde79[_0x9c0a('0x4c')],function(_0x5262b8){var _0x2e2648={};_0x2e2648[_0x5262b8]={'$like':'%'+_0xfe1578[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x2e2648;})});}_0x2cde79=_['merge']({},_0x2cde79,_0xfe1578[_0x9c0a('0x59')]);return _0x140e07[_0x9c0a('0x116')](_0x2cde79);}})['then'](function(_0x393c27){if(_0x393c27){_0xd13187=_0x393c27[_0x9c0a('0x4d')];if(!_0xfe1578[_0x9c0a('0x46')][_0x9c0a('0x4e')]('nolimit')){_0x2cde79[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0xfe1578['query']['limit']);_0x2cde79[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0xfe1578['query'][_0x9c0a('0x2d')]);}return _0x140e07[_0x9c0a('0x116')](_0x2cde79);}})[_0x9c0a('0x1e')](function(_0x2bd870){if(_0x2bd870){return _0x2bd870?{'count':_0xd13187,'rows':_0x2bd870}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x39f7f8,null))[_0x9c0a('0x28')](handleError(_0x39f7f8,null));};exports[_0x9c0a('0x118')]=function(_0x22a1ae,_0x137ea2,_0x3ad6f1){return db['User'][_0x9c0a('0x3d')]({'where':{'id':_0x22a1ae[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x137ea2,null))[_0x9c0a('0x1e')](function(_0x47d6ef){if(_0x47d6ef){return _0x47d6ef[_0x9c0a('0x118')](_0x22a1ae['body'][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0x22a1ae['body'],[_0x9c0a('0x65'),'id'])||{});}})['then'](respondWithResult(_0x137ea2,null))[_0x9c0a('0x28')](handleError(_0x137ea2,null));};exports[_0x9c0a('0x119')]=function(_0x55b7e8,_0x2be218,_0x406eb0){var _0x59a5b7;return db['User'][_0x9c0a('0x3d')]({'where':{'id':_0x55b7e8[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x2be218,null))[_0x9c0a('0x1e')](function(_0x258c47){if(_0x258c47){return _0x258c47[_0x9c0a('0x119')](_0x55b7e8[_0x9c0a('0x46')][_0x9c0a('0x65')]);}})['then'](respondWithStatusCode(_0x2be218,null))[_0x9c0a('0x28')](handleError(_0x2be218,null));};exports['getOpenchannelAccounts']=function(_0x3f97df,_0x5518f6,_0x45ec09){var _0x139bcb={};var _0x4d5956={};var _0x304b20;var _0x8857af;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x3f97df[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x5518f6,null))['then'](function(_0x11a1c2){if(_0x11a1c2){_0x304b20=_0x11a1c2;_0x4d5956['model']=_[_0x9c0a('0x48')](db[_0x9c0a('0x11a')][_0x9c0a('0x60')]);_0x4d5956[_0x9c0a('0x46')]=_['keys'](_0x3f97df[_0x9c0a('0x46')]);_0x4d5956[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x4d5956[_0x9c0a('0x42')],_0x4d5956[_0x9c0a('0x46')]);_0x139bcb['attributes']=_[_0x9c0a('0x4a')](_0x4d5956[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x3f97df[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x139bcb[_0x9c0a('0x4c')]=_0x139bcb[_0x9c0a('0x4c')]['length']?_0x139bcb[_0x9c0a('0x4c')]:_0x4d5956[_0x9c0a('0x42')];_0x139bcb['order']=qs[_0x9c0a('0x50')](_0x3f97df[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x139bcb[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x3f97df[_0x9c0a('0x46')],_0x4d5956[_0x9c0a('0x49')]));if(_0x3f97df['query'][_0x9c0a('0x39')]){_0x139bcb[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x139bcb['where'],{'$or':_[_0x9c0a('0x55')](_0x139bcb['attributes'],function(_0x3ba041){var _0x1f400b={};_0x1f400b[_0x3ba041]={'$like':'%'+_0x3f97df[_0x9c0a('0x46')]['filter']+'%'};return _0x1f400b;})});}_0x139bcb=_[_0x9c0a('0x54')]({},_0x139bcb,_0x3f97df[_0x9c0a('0x59')]);return _0x304b20['getOpenchannelAccounts'](_0x139bcb);}})[_0x9c0a('0x1e')](function(_0x5db7d3){if(_0x5db7d3){_0x8857af=_0x5db7d3[_0x9c0a('0x4d')];if(!_0x3f97df['query']['hasOwnProperty']('nolimit')){_0x139bcb[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x3f97df[_0x9c0a('0x46')]['limit']);_0x139bcb[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x3f97df[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}return _0x304b20[_0x9c0a('0x11b')](_0x139bcb);}})['then'](function(_0x35b959){if(_0x35b959){return _0x35b959?{'count':_0x8857af,'rows':_0x35b959}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x5518f6,null))[_0x9c0a('0x28')](handleError(_0x5518f6,null));};exports[_0x9c0a('0x11c')]=function(_0x2e90c3,_0x4a9290,_0x54f071){return db['User']['find']({'where':{'id':_0x2e90c3['params']['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x4a9290,null))[_0x9c0a('0x1e')](function(_0x318eda){if(_0x318eda){return _0x318eda[_0x9c0a('0x11c')](_0x2e90c3[_0x9c0a('0x62')][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0x2e90c3['body'],['ids','id'])||{});}})[_0x9c0a('0x1e')](respondWithResult(_0x4a9290,null))['catch'](handleError(_0x4a9290,null));};exports[_0x9c0a('0x11d')]=function(_0x330f89,_0x225407,_0x2f654d){var _0x3301df;return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x330f89[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x225407,null))[_0x9c0a('0x1e')](function(_0x279e0c){if(_0x279e0c){return _0x279e0c[_0x9c0a('0x11d')](_0x330f89['query'][_0x9c0a('0x65')]);}})[_0x9c0a('0x1e')](respondWithStatusCode(_0x225407,null))[_0x9c0a('0x28')](handleError(_0x225407,null));};exports[_0x9c0a('0x11e')]=function(_0x1f8d1e,_0x8f907e,_0x5869b7){var _0x5e56f9={};var _0xece18d={};var _0x648884;var _0x11b5af;return db[_0x9c0a('0x41')][_0x9c0a('0xb3')]({'where':{'id':_0x1f8d1e[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x8f907e,null))[_0x9c0a('0x1e')](function(_0x82b23c){if(_0x82b23c){_0x648884=_0x82b23c;_0xece18d[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0x11f')]['rawAttributes']);_0xece18d[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x1f8d1e[_0x9c0a('0x46')]);_0xece18d[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0xece18d['model'],_0xece18d[_0x9c0a('0x46')]);_0x5e56f9[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0xece18d['model'],qs[_0x9c0a('0x4b')](_0x1f8d1e[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x5e56f9[_0x9c0a('0x4c')]=_0x5e56f9['attributes'][_0x9c0a('0x4d')]?_0x5e56f9[_0x9c0a('0x4c')]:_0xece18d[_0x9c0a('0x42')];_0x5e56f9[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0x1f8d1e[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x5e56f9[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x1f8d1e[_0x9c0a('0x46')],_0xece18d[_0x9c0a('0x49')]));if(_0x1f8d1e[_0x9c0a('0x46')][_0x9c0a('0x39')]){_0x5e56f9[_0x9c0a('0x51')]=_['merge'](_0x5e56f9['where'],{'$or':_[_0x9c0a('0x55')](_0x5e56f9['attributes'],function(_0x245c69){var _0x35fea0={};_0x35fea0[_0x245c69]={'$like':'%'+_0x1f8d1e[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x35fea0;})});}_0x5e56f9=_['merge']({},_0x5e56f9,_0x1f8d1e[_0x9c0a('0x59')]);return _0x648884[_0x9c0a('0x11e')](_0x5e56f9);}})['then'](function(_0x21a6d0){if(_0x21a6d0){_0x11b5af=_0x21a6d0[_0x9c0a('0x4d')];if(!_0x1f8d1e[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x5e56f9[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x1f8d1e[_0x9c0a('0x46')][_0x9c0a('0x2e')]);_0x5e56f9[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x1f8d1e['query'][_0x9c0a('0x2d')]);}return _0x648884['getSmsAccounts'](_0x5e56f9);}})['then'](function(_0xd804c3){if(_0xd804c3){return _0xd804c3?{'count':_0x11b5af,'rows':_0xd804c3}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x8f907e,null))['catch'](handleError(_0x8f907e,null));};exports[_0x9c0a('0x120')]=function(_0x33a5a9,_0x21b6b6,_0x5265ea){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x33a5a9['params']['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x21b6b6,null))[_0x9c0a('0x1e')](function(_0x3d509c){if(_0x3d509c){return _0x3d509c[_0x9c0a('0x120')](_0x33a5a9['body']['ids'],_[_0x9c0a('0x66')](_0x33a5a9[_0x9c0a('0x62')],[_0x9c0a('0x65'),'id'])||{});}})[_0x9c0a('0x1e')](respondWithResult(_0x21b6b6,null))['catch'](handleError(_0x21b6b6,null));};exports[_0x9c0a('0x121')]=function(_0x5bf03f,_0x10a6b8,_0x26e156){var _0x5139b9;return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x5bf03f[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x10a6b8,null))['then'](function(_0x525e94){if(_0x525e94){return _0x525e94[_0x9c0a('0x121')](_0x5bf03f[_0x9c0a('0x46')][_0x9c0a('0x65')]);}})[_0x9c0a('0x1e')](respondWithStatusCode(_0x10a6b8,null))['catch'](handleError(_0x10a6b8,null));};exports[_0x9c0a('0x122')]=function(_0x2f8eee,_0x4586dc,_0x462ab5){var _0x114e40={};var _0x8115e1={};var _0x28d139;var _0x45ca0b;return db['User'][_0x9c0a('0xb3')]({'where':{'id':_0x2f8eee[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x4586dc,null))[_0x9c0a('0x1e')](function(_0x320e20){if(_0x320e20){_0x28d139=_0x320e20;_0x8115e1[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0x123')]['rawAttributes']);_0x8115e1['query']=_[_0x9c0a('0x48')](_0x2f8eee[_0x9c0a('0x46')]);_0x8115e1['filters']=_[_0x9c0a('0x4a')](_0x8115e1[_0x9c0a('0x42')],_0x8115e1[_0x9c0a('0x46')]);_0x114e40[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x8115e1[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x2f8eee[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x114e40[_0x9c0a('0x4c')]=_0x114e40[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x114e40[_0x9c0a('0x4c')]:_0x8115e1['model'];_0x114e40[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0x2f8eee[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x114e40[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x2f8eee[_0x9c0a('0x46')],_0x8115e1[_0x9c0a('0x49')]));if(_0x2f8eee['query'][_0x9c0a('0x39')]){_0x114e40[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x114e40[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x114e40[_0x9c0a('0x4c')],function(_0x5c7c26){var _0x4533ae={};_0x4533ae[_0x5c7c26]={'$like':'%'+_0x2f8eee[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x4533ae;})});}_0x114e40=_[_0x9c0a('0x54')]({},_0x114e40,_0x2f8eee[_0x9c0a('0x59')]);return _0x28d139[_0x9c0a('0x122')](_0x114e40);}})[_0x9c0a('0x1e')](function(_0x2d72dd){if(_0x2d72dd){_0x45ca0b=_0x2d72dd[_0x9c0a('0x4d')];if(!_0x2f8eee[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x114e40[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x2f8eee[_0x9c0a('0x46')]['limit']);_0x114e40['offset']=qs['offset'](_0x2f8eee['query'][_0x9c0a('0x2d')]);}return _0x28d139[_0x9c0a('0x122')](_0x114e40);}})[_0x9c0a('0x1e')](function(_0x20e87b){if(_0x20e87b){return _0x20e87b?{'count':_0x45ca0b,'rows':_0x20e87b}:null;}})['then'](respondWithResult(_0x4586dc,null))[_0x9c0a('0x28')](handleError(_0x4586dc,null));};exports['addChatWebsites']=function(_0x2c0fe9,_0x24180b,_0x5b8b64){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x2c0fe9[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x24180b,null))[_0x9c0a('0x1e')](function(_0x1bd844){if(_0x1bd844){return _0x1bd844[_0x9c0a('0x124')](_0x2c0fe9['body'][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0x2c0fe9['body'],[_0x9c0a('0x65'),'id'])||{});}})[_0x9c0a('0x1e')](respondWithResult(_0x24180b,null))[_0x9c0a('0x28')](handleError(_0x24180b,null));};exports[_0x9c0a('0x125')]=function(_0x58803c,_0x30b219,_0x240b9b){var _0x1218e3;return db['User'][_0x9c0a('0x3d')]({'where':{'id':_0x58803c[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x30b219,null))[_0x9c0a('0x1e')](function(_0x233900){if(_0x233900){return _0x233900[_0x9c0a('0x125')](_0x58803c[_0x9c0a('0x46')][_0x9c0a('0x65')]);}})[_0x9c0a('0x1e')](respondWithStatusCode(_0x30b219,null))[_0x9c0a('0x28')](handleError(_0x30b219,null));};exports[_0x9c0a('0x126')]=function(_0x161c2a,_0x13ea02,_0x343c08){var _0x226247={};var _0x59f2f8={};var _0x4fd3e5;var _0x2d18f9;return db[_0x9c0a('0x41')]['findOne']({'where':{'id':_0x161c2a[_0x9c0a('0x5e')]['id']}})['then'](handleEntityNotFound(_0x13ea02,null))[_0x9c0a('0x1e')](function(_0x1ab4ba){if(_0x1ab4ba){_0x4fd3e5=_0x1ab4ba;_0x59f2f8[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](db[_0x9c0a('0x127')][_0x9c0a('0x60')]);_0x59f2f8[_0x9c0a('0x46')]=_[_0x9c0a('0x48')](_0x161c2a['query']);_0x59f2f8[_0x9c0a('0x49')]=_[_0x9c0a('0x4a')](_0x59f2f8[_0x9c0a('0x42')],_0x59f2f8['query']);_0x226247['attributes']=_[_0x9c0a('0x4a')](_0x59f2f8[_0x9c0a('0x42')],qs[_0x9c0a('0x4b')](_0x161c2a[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x226247[_0x9c0a('0x4c')]=_0x226247[_0x9c0a('0x4c')][_0x9c0a('0x4d')]?_0x226247[_0x9c0a('0x4c')]:_0x59f2f8[_0x9c0a('0x42')];_0x226247[_0x9c0a('0xbd')]=qs[_0x9c0a('0x50')](_0x161c2a['query'][_0x9c0a('0x50')]);_0x226247[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_[_0x9c0a('0x52')](_0x161c2a[_0x9c0a('0x46')],_0x59f2f8[_0x9c0a('0x49')]));if(_0x161c2a['query'][_0x9c0a('0x39')]){_0x226247[_0x9c0a('0x51')]=_[_0x9c0a('0x54')](_0x226247[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x226247[_0x9c0a('0x4c')],function(_0xbf3ad0){var _0x20b4ab={};_0x20b4ab[_0xbf3ad0]={'$like':'%'+_0x161c2a[_0x9c0a('0x46')][_0x9c0a('0x39')]+'%'};return _0x20b4ab;})});}_0x226247=_[_0x9c0a('0x54')]({},_0x226247,_0x161c2a[_0x9c0a('0x59')]);return _0x4fd3e5[_0x9c0a('0x126')](_0x226247);}})[_0x9c0a('0x1e')](function(_0x4ad05d){if(_0x4ad05d){_0x2d18f9=_0x4ad05d[_0x9c0a('0x4d')];if(!_0x161c2a[_0x9c0a('0x46')]['hasOwnProperty'](_0x9c0a('0x4f'))){_0x226247[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x161c2a['query']['limit']);_0x226247[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x161c2a['query'][_0x9c0a('0x2d')]);}return _0x4fd3e5[_0x9c0a('0x126')](_0x226247);}})[_0x9c0a('0x1e')](function(_0x5c8cc2){if(_0x5c8cc2){return _0x5c8cc2?{'count':_0x2d18f9,'rows':_0x5c8cc2}:null;}})[_0x9c0a('0x1e')](respondWithResult(_0x13ea02,null))[_0x9c0a('0x28')](handleError(_0x13ea02,null));};exports[_0x9c0a('0x128')]=function(_0x3d6402,_0x1a3a3d,_0x3c73e2){return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x3d6402[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x1a3a3d,null))['then'](function(_0x5a53c2){if(_0x5a53c2){return _0x5a53c2[_0x9c0a('0x128')](_0x3d6402[_0x9c0a('0x62')][_0x9c0a('0x65')],_[_0x9c0a('0x66')](_0x3d6402['body'],[_0x9c0a('0x65'),'id'])||{});}})[_0x9c0a('0x1e')](respondWithResult(_0x1a3a3d,null))['catch'](handleError(_0x1a3a3d,null));};exports[_0x9c0a('0x129')]=function(_0x1acac1,_0x36d01d,_0x202b5b){var _0x4561dd;return db[_0x9c0a('0x41')][_0x9c0a('0x3d')]({'where':{'id':_0x1acac1[_0x9c0a('0x5e')]['id']}})[_0x9c0a('0x1e')](handleEntityNotFound(_0x36d01d,null))[_0x9c0a('0x1e')](function(_0x46b62e){if(_0x46b62e){return _0x46b62e[_0x9c0a('0x129')](_0x1acac1[_0x9c0a('0x46')]['ids']);}})['then'](respondWithStatusCode(_0x36d01d,null))[_0x9c0a('0x28')](handleError(_0x36d01d,null));};exports[_0x9c0a('0x12a')]=function(_0x18e94f,_0x11e095){var _0x1adc7f={},_0x1bafb8={},_0x19238e={'count':0x0,'rows':[]};var _0x98882c=db[_0x9c0a('0x12b')][_0x9c0a('0x60')];_0x1bafb8[_0x9c0a('0x42')]=_[_0x9c0a('0x48')](_0x98882c);var _0x43ddc9={'dateStart':_0x18e94f[_0x9c0a('0x46')][_0x9c0a('0x45')],'dateEnd':_0x18e94f[_0x9c0a('0x46')]['dateEnd']};delete _0x18e94f[_0x9c0a('0x46')][_0x9c0a('0x45')];delete _0x18e94f[_0x9c0a('0x46')][_0x9c0a('0x47')];_0x1bafb8[_0x9c0a('0x46')]=_['keys'](_0x18e94f[_0x9c0a('0x46')]);_0x1bafb8['filters']=_[_0x9c0a('0x4a')](_0x1bafb8[_0x9c0a('0x42')],_0x1bafb8[_0x9c0a('0x46')]);_0x1bafb8['filters']=_[_0x9c0a('0xdf')](_0x1bafb8[_0x9c0a('0x49')],[_0x9c0a('0x12c'),'$or',_0x9c0a('0x12d'),_0x9c0a('0x12e'),_0x9c0a('0x12f'),'$lte','$ne',_0x9c0a('0x130'),_0x9c0a('0x131'),'$between',_0x9c0a('0x132'),'$in','$notIn',_0x9c0a('0x133'),_0x9c0a('0x134'),_0x9c0a('0x135'),_0x9c0a('0x136'),_0x9c0a('0x133'),_0x9c0a('0x137'),_0x9c0a('0x138'),'$contained',_0x9c0a('0x139')]);_0x1adc7f[_0x9c0a('0x4c')]=_[_0x9c0a('0x4a')](_0x1bafb8['model'],qs['fields'](_0x18e94f[_0x9c0a('0x46')][_0x9c0a('0x4b')]));_0x1adc7f[_0x9c0a('0x4c')]=_0x1adc7f['attributes']['length']?_0x1adc7f[_0x9c0a('0x4c')]:_0x1bafb8[_0x9c0a('0x42')];if(!_0x18e94f[_0x9c0a('0x46')][_0x9c0a('0x4e')](_0x9c0a('0x4f'))){_0x1adc7f[_0x9c0a('0x2e')]=qs[_0x9c0a('0x2e')](_0x18e94f['query'][_0x9c0a('0x2e')]);_0x1adc7f[_0x9c0a('0x2d')]=qs[_0x9c0a('0x2d')](_0x18e94f[_0x9c0a('0x46')][_0x9c0a('0x2d')]);}_0x1adc7f['order']=qs[_0x9c0a('0x50')](_0x18e94f[_0x9c0a('0x46')][_0x9c0a('0x50')]);_0x1adc7f[_0x9c0a('0x51')]=qs[_0x9c0a('0x49')](_['pick'](_0x18e94f[_0x9c0a('0x46')],_0x1bafb8['filters']));if(_0x43ddc9['dateStart']){if(_0x43ddc9[_0x9c0a('0x47')]){_0x43ddc9['dateEnd']=moment(_0x43ddc9[_0x9c0a('0x47')])[_0x9c0a('0x53')](0x1,_0x9c0a('0x13a'));}else{_0x43ddc9[_0x9c0a('0x47')]=moment(_0x43ddc9[_0x9c0a('0x45')])['add'](0x1,_0x9c0a('0x13a'));}_[_0x9c0a('0x54')](_0x1adc7f[_0x9c0a('0x51')],{'scheduledat':{'$gte':_0x43ddc9[_0x9c0a('0x45')],'$lte':_0x43ddc9[_0x9c0a('0x47')]}});}if(_0x18e94f[_0x9c0a('0x46')]['filter']){_0x1adc7f['where']=_[_0x9c0a('0x54')](_0x1adc7f[_0x9c0a('0x51')],{'$or':_[_0x9c0a('0x55')](_0x1adc7f[_0x9c0a('0x4c')],function(_0x44393b){var _0x25bf86={};_0x25bf86[_0x44393b]={'$like':'%'+_0x18e94f[_0x9c0a('0x46')]['filter']+'%'};return _0x25bf86;})});}_0x1adc7f['where']={'$and':[_0x1adc7f[_0x9c0a('0x51')],{'$or':[{'UserId':_0x18e94f[_0x9c0a('0x5e')]['id']},{'OwnerId':_0x18e94f[_0x9c0a('0x5e')]['id']}]}]};_0x1adc7f=_[_0x9c0a('0x54')]({},_0x1adc7f,_0x18e94f['options']);var _0x58610e={'where':_0x1adc7f[_0x9c0a('0x51')]};return db[_0x9c0a('0x12b')][_0x9c0a('0x2c')](_0x58610e)[_0x9c0a('0x1e')](function(_0x22303c){_0x19238e[_0x9c0a('0x2c')]=_0x22303c;if(_0x18e94f['query'][_0x9c0a('0x5a')]){_0x1adc7f['include']=[{'attributes':['id','firstName',_0x9c0a('0x13b'),_0x9c0a('0xcc')],'model':db[_0x9c0a('0x13c')],'as':'Contact'},{'attributes':['id','name',_0x9c0a('0x13d')],'model':db['VoiceQueue'],'as':'Queue'}];}return db[_0x9c0a('0x12b')][_0x9c0a('0x9e')](_0x1adc7f);})[_0x9c0a('0x1e')](function(_0x12ab77){_0x19238e[_0x9c0a('0x5c')]=_0x12ab77;return _0x19238e;})['then'](respondWithFilteredResult(_0x11e095,_0x1adc7f))[_0x9c0a('0x28')](handleError(_0x11e095,null));};
\ No newline at end of file
+var _0xbb37=['Invalid\x20body\x20format.\x20Use\x20newPassword','Unauthorized','loginInPause','voicePause','interface','isValidChannel','channel','capitalize','toLowerCase','Queues','ids','spread','QueueId','emit','Queue:save','voice','VoiceQueue','findAll','push','format','penalty','each','remove','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','file','join','server/files/images/logos/default_profile.png','existsSync','root','server/files/images/','download','getContacts','CmContact','options','CmList','List','Tag','Tags','color','tag','getQueues','findOne','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','getRecordings','UserId','VoiceRecording','getChatInteractions','OpenchannelInteraction','getOpenchannelInteractions','MailInteraction','getSmsInteractions','SmsInteraction','FaxInteraction','getFaxInteractions','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','SIP/%s','headers','connection','socket','remoteAddress','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','concat','logout','all','pause','QueuePause','updateAttributes','getChannels','type','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','pauseType','lastPauseAt','mail','chat','fax','sms','openchannel','manual','set','%s%s','Pause','getTeams','addTeams','removeTeams','getLists','getAgents','send','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','omit','user_has_chat_interactions:save','removeChatInteractions','isArray','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','VoicePrefix','getVoicePrefixes','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','CmHopper','firstName','Contact','dialActive','html-pdf','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','squel','jsforce','desk.js','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','client','http','request','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','User,\x20%s,\x20%s','sendStatus','end','status','count','Content-Range','json','apply','reject','save','update','then','destroy','Users','Agents','agent','Telephones','filter','value','includes','role','find','name','stack','index','User','rawAttributes','model','keys','password','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','offset','order','sort','where','pick','add','day','merge','map','sequelize','lower','col','field','includeAll','include','rows','show','params','bulkCreate','body','describe','addContacts','agent\x20role','telephone','admin','user','../../config/license/util','getLicense','users','isNil','License\x20limit\x20reached','create','internal','Setting','findById','max','SELECT','from','voicemail','fullname','email','102','103','110','104','105','106','107','109','VoiceMail','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','changePassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassord\x20and\x20newPassword','authenticate','oldPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password'];(function(_0x3284e0,_0x2febaa){var _0x578198=function(_0xabb6f2){while(--_0xabb6f2){_0x3284e0['push'](_0x3284e0['shift']());}};_0x578198(++_0x2febaa);}(_0xbb37,0xb3));var _0x7bb3=function(_0x34a14d,_0xc49d24){_0x34a14d=_0x34a14d-0x0;var _0x2015f2=_0xbb37[_0x34a14d];return _0x2015f2;};'use strict';var pdf=require(_0x7bb3('0x0'));var emlformat=require(_0x7bb3('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x7bb3('0x2'));var jsonpatch=require(_0x7bb3('0x3'));var rp=require('request-promise');var moment=require(_0x7bb3('0x4'));var BPromise=require(_0x7bb3('0x5'));var Mustache=require(_0x7bb3('0x6'));var util=require(_0x7bb3('0x7'));var path=require('path');var sox=require(_0x7bb3('0x8'));var csv=require(_0x7bb3('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x7bb3('0xa'));var crypto=require('crypto');var jsforce=require(_0x7bb3('0xb'));var deskjs=require(_0x7bb3('0xc'));var toCsv=require(_0x7bb3('0x9'));var querystring=require('querystring');var Papa=require(_0x7bb3('0xd'));var Redis=require('ioredis');var qs=require(_0x7bb3('0xe'));var logger=require(_0x7bb3('0xf'))(_0x7bb3('0x10'));var utils=require(_0x7bb3('0x11'));var config=require(_0x7bb3('0x12'));var db=require(_0x7bb3('0x13'))['db'];config['redis']=_['defaults'](config[_0x7bb3('0x14')],{'host':_0x7bb3('0x15'),'port':0x18eb});var socket=require(_0x7bb3('0x16'))(new Redis(config[_0x7bb3('0x14')]));require('./user.socket')[_0x7bb3('0x17')](socket);var jayson=require('jayson/promise');var client=jayson[_0x7bb3('0x18')][_0x7bb3('0x19')]({'port':0x232a});function respondWithRpcPromise(_0xd02606,_0x4e32a3,_0x3422db,_0x88ff14){return new BPromise(function(_0x578ff4,_0x269ece){var _0xa600b9=_0x88ff14||client;return _0xa600b9[_0x7bb3('0x1a')](_0xd02606,_0x3422db)['then'](function(_0x166425){logger['info']('User,\x20%s,\x20%s',_0x4e32a3,_0x7bb3('0x1b'));logger[_0x7bb3('0x1c')](_0x7bb3('0x1d'),_0x4e32a3,_0x7bb3('0x1b'),JSON[_0x7bb3('0x1e')](_0x166425));if(_0x166425[_0x7bb3('0x1f')]){if(_0x166425[_0x7bb3('0x1f')][_0x7bb3('0x20')]===0x1f4){logger[_0x7bb3('0x1f')]('User,\x20%s,\x20%s',_0x4e32a3,_0x166425[_0x7bb3('0x1f')][_0x7bb3('0x21')]);return _0x269ece(_0x166425[_0x7bb3('0x1f')][_0x7bb3('0x21')]);}logger[_0x7bb3('0x1f')]('User,\x20%s,\x20%s',_0x4e32a3,_0x166425[_0x7bb3('0x1f')][_0x7bb3('0x21')]);return _0x578ff4(_0x166425[_0x7bb3('0x1f')][_0x7bb3('0x21')]);}else{logger[_0x7bb3('0x22')]('User,\x20%s,\x20%s',_0x4e32a3,_0x7bb3('0x1b'));_0x578ff4(_0x166425[_0x7bb3('0x23')][_0x7bb3('0x21')]);}})[_0x7bb3('0x24')](function(_0x1a21a8){logger[_0x7bb3('0x1f')](_0x7bb3('0x25'),_0x4e32a3,_0x1a21a8);_0x269ece(_0x1a21a8);});});}function respondWithStatusCode(_0x10a7a2,_0x405e1c){_0x405e1c=_0x405e1c||0xcc;return function(_0xd751dc){if(_0xd751dc){return _0x10a7a2[_0x7bb3('0x26')](_0x405e1c);}return _0x10a7a2['status'](_0x405e1c)[_0x7bb3('0x27')]();};}function respondWithResult(_0x172f9,_0x554459){_0x554459=_0x554459||0xc8;return function(_0x2a1295){if(_0x2a1295){return _0x172f9[_0x7bb3('0x28')](_0x554459)['json'](_0x2a1295);}};}function respondWithFilteredResult(_0x27a5b3,_0x2d9b79){return function(_0x30198e){if(_0x30198e){var _0x10120d=_0x30198e[_0x7bb3('0x29')],_0xc891b6=_0x2d9b79['offset'],_0x422683=_0x2d9b79['offset']+_0x2d9b79['limit'],_0x5d4f13;if(_0x422683>=_0x10120d){_0x422683=_0x10120d;_0x5d4f13=0xc8;}else{_0x5d4f13=0xce;}_0x27a5b3[_0x7bb3('0x28')](_0x5d4f13);return _0x27a5b3['set'](_0x7bb3('0x2a'),_0xc891b6+'-'+_0x422683+'/'+_0x10120d)[_0x7bb3('0x2b')](_0x30198e);}return null;};}function patchUpdates(_0xb6b391){return function(_0x480dad){try{jsonpatch[_0x7bb3('0x2c')](_0x480dad,_0xb6b391,!![]);}catch(_0x3a1c5f){return BPromise[_0x7bb3('0x2d')](_0x3a1c5f);}return _0x480dad[_0x7bb3('0x2e')]();};}function saveUpdates(_0x47bbbf,_0x36ca42){return function(_0x56371e){if(_0x56371e){return _0x56371e[_0x7bb3('0x2f')](_0x47bbbf)[_0x7bb3('0x30')](function(_0x2ecadb){return _0x2ecadb;});}return null;};}function removeEntity(_0x2ea05b,_0x486e52){return function(_0x37903e){if(_0x37903e){return _0x37903e[_0x7bb3('0x31')]()[_0x7bb3('0x30')](function(){var _0x13740e=_0x37903e['get']({'plain':!![]});var _0x545882=[{'name':_0x7bb3('0x32'),'value':'user','ignore':!![]},{'name':_0x7bb3('0x33'),'value':_0x7bb3('0x34'),'ignore':![]},{'name':_0x7bb3('0x35'),'value':'telephone','ignore':![]}];var _0x3ff509=_(_0x545882)[_0x7bb3('0x36')]('ignore')['map'](_0x7bb3('0x37'))[_0x7bb3('0x37')]();if(_[_0x7bb3('0x38')](_0x3ff509,_0x13740e[_0x7bb3('0x39')])){return;}var _0x53a302=_[_0x7bb3('0x3a')](_0x545882,[_0x7bb3('0x37'),_0x13740e[_0x7bb3('0x39')]])[_0x7bb3('0x3b')];return db['UserProfileResource'][_0x7bb3('0x31')]({'where':{'type':_0x53a302,'resourceId':_0x13740e['id']}})['then'](function(){return _0x37903e;});})[_0x7bb3('0x30')](function(){_0x2ea05b[_0x7bb3('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e5fb6,_0x55704c){return function(_0x4ada53){if(!_0x4ada53){_0x1e5fb6[_0x7bb3('0x26')](0x194);}return _0x4ada53;};}function handleError(_0x53e3a0,_0x265c0f){_0x265c0f=_0x265c0f||0x1f4;return function(_0x1cba5d){logger[_0x7bb3('0x1f')](_0x1cba5d[_0x7bb3('0x3c')]);if(_0x1cba5d['name']){delete _0x1cba5d[_0x7bb3('0x3b')];}_0x53e3a0[_0x7bb3('0x28')](_0x265c0f)['send'](_0x1cba5d);};}exports[_0x7bb3('0x3d')]=function(_0x33999b,_0x3ef81a){var _0x31f83e={},_0x1aad4d={},_0x288c90={'count':0x0,'rows':[]};var _0x2a98e0=db[_0x7bb3('0x3e')][_0x7bb3('0x3f')];_0x1aad4d[_0x7bb3('0x40')]=_['differenceBy'](_[_0x7bb3('0x41')](_0x2a98e0),[_0x7bb3('0x42'),'salt']);var _0x1e40e6={'dateStart':_0x33999b['query'][_0x7bb3('0x43')],'dateEnd':_0x33999b[_0x7bb3('0x44')][_0x7bb3('0x45')]};delete _0x33999b[_0x7bb3('0x44')]['dateStart'];delete _0x33999b['query']['dateEnd'];_0x1aad4d[_0x7bb3('0x44')]=_['keys'](_0x33999b[_0x7bb3('0x44')]);_0x1aad4d[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x1aad4d[_0x7bb3('0x40')],_0x1aad4d[_0x7bb3('0x44')]);_0x31f83e[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x1aad4d[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x33999b['query'][_0x7bb3('0x49')]));_0x31f83e[_0x7bb3('0x48')]=_0x31f83e[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x31f83e[_0x7bb3('0x48')]:_0x1aad4d['model'];if(!_0x33999b['query'][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x31f83e[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x33999b[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x31f83e[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x33999b[_0x7bb3('0x44')]['offset']);}_0x31f83e[_0x7bb3('0x4f')]=qs['sort'](_0x33999b[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x31f83e[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x33999b[_0x7bb3('0x44')],_0x1aad4d['filters']));if(_0x1e40e6['dateStart']){if(_0x1e40e6['dateEnd']){_0x1e40e6[_0x7bb3('0x45')]=moment(_0x1e40e6[_0x7bb3('0x45')])[_0x7bb3('0x53')](0x1,_0x7bb3('0x54'));}else{_0x1e40e6[_0x7bb3('0x45')]=moment(_0x1e40e6['dateStart'])[_0x7bb3('0x53')](0x1,_0x7bb3('0x54'));}_[_0x7bb3('0x55')](_0x31f83e[_0x7bb3('0x51')],{'createdAt':{'$gte':_0x1e40e6['dateStart'],'$lte':_0x1e40e6['dateEnd']}});}if(_0x33999b[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x31f83e[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x31f83e['where'],{'$or':_[_0x7bb3('0x56')](_0x2a98e0,function(_0x2321be){return db[_0x7bb3('0x57')][_0x7bb3('0x51')](db['sequelize']['fn'](_0x7bb3('0x58'),db[_0x7bb3('0x57')][_0x7bb3('0x59')](_0x2321be[_0x7bb3('0x5a')])),{'$like':db['sequelize']['fn'](_0x7bb3('0x58'),'%'+_0x33999b[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%')});})});}_0x31f83e=_[_0x7bb3('0x55')]({},_0x31f83e,_0x33999b['options']);var _0x290a69={'where':_0x31f83e[_0x7bb3('0x51')]};return db[_0x7bb3('0x3e')][_0x7bb3('0x29')](_0x290a69)[_0x7bb3('0x30')](function(_0x4ed8bc){_0x288c90[_0x7bb3('0x29')]=_0x4ed8bc;if(_0x33999b[_0x7bb3('0x44')][_0x7bb3('0x5b')]){_0x31f83e[_0x7bb3('0x5c')]=[{'all':!![]}];}return db[_0x7bb3('0x3e')]['findAll'](_0x31f83e);})[_0x7bb3('0x30')](function(_0x1d290b){_0x288c90[_0x7bb3('0x5d')]=_0x1d290b;return _0x288c90;})[_0x7bb3('0x30')](respondWithFilteredResult(_0x3ef81a,_0x31f83e))[_0x7bb3('0x24')](handleError(_0x3ef81a,null));};exports[_0x7bb3('0x5e')]=function(_0x18820f,_0x14072e){var _0x8ca1d7={'raw':![],'where':{'id':_0x18820f[_0x7bb3('0x5f')]['id']}},_0x599d4e={};_0x599d4e[_0x7bb3('0x40')]=_['differenceBy'](_['keys'](db[_0x7bb3('0x3e')][_0x7bb3('0x3f')]),[_0x7bb3('0x42'),'salt']);_0x599d4e['query']=_[_0x7bb3('0x41')](_0x18820f['query']);_0x599d4e[_0x7bb3('0x46')]=_['intersection'](_0x599d4e[_0x7bb3('0x40')],_0x599d4e['query']);_0x8ca1d7[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x599d4e['model'],qs[_0x7bb3('0x49')](_0x18820f['query'][_0x7bb3('0x49')]));_0x8ca1d7['attributes']=_0x8ca1d7['attributes'][_0x7bb3('0x4a')]?_0x8ca1d7['attributes']:_0x599d4e[_0x7bb3('0x40')];if(_0x18820f[_0x7bb3('0x44')][_0x7bb3('0x5b')]){_0x8ca1d7[_0x7bb3('0x5c')]=[{'all':!![]}];}_0x8ca1d7=_[_0x7bb3('0x55')]({},_0x8ca1d7,_0x18820f['options']);return db['User'][_0x7bb3('0x3a')](_0x8ca1d7)[_0x7bb3('0x30')](handleEntityNotFound(_0x14072e,null))[_0x7bb3('0x30')](respondWithResult(_0x14072e,null))[_0x7bb3('0x24')](handleError(_0x14072e,null));};exports[_0x7bb3('0x60')]=function(_0x39d8dc,_0x3b3795){return db[_0x7bb3('0x3e')][_0x7bb3('0x60')](_0x39d8dc[_0x7bb3('0x61')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x3b3795,0xc9))[_0x7bb3('0x24')](handleError(_0x3b3795,null));};exports['update']=function(_0x5156c0,_0x12b1c8){if(_0x5156c0[_0x7bb3('0x61')]['id']){delete _0x5156c0[_0x7bb3('0x61')]['id'];}return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x5156c0[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x12b1c8,null))[_0x7bb3('0x30')](saveUpdates(_0x5156c0[_0x7bb3('0x61')],null))['then'](respondWithResult(_0x12b1c8,null))[_0x7bb3('0x24')](handleError(_0x12b1c8,null));};exports[_0x7bb3('0x62')]=function(_0x5ee036,_0x5aeb2b){return db[_0x7bb3('0x3e')][_0x7bb3('0x62')]()[_0x7bb3('0x30')](respondWithResult(_0x5aeb2b,null))['catch'](handleError(_0x5aeb2b,null));};exports[_0x7bb3('0x63')]=function(_0x5e99f8,_0x36bfbc,_0x206e27){return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0x5e99f8[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x36bfbc,null))['then'](function(_0x1f55fb){if(_0x1f55fb){return _0x1f55fb['addContacts'](_0x5e99f8[_0x7bb3('0x61')]['ids'],_['omit'](_0x5e99f8[_0x7bb3('0x61')],['ids','id'])||{});}})[_0x7bb3('0x30')](respondWithResult(_0x36bfbc,null))['catch'](handleError(_0x36bfbc,null));};var getLicense=function(_0x189727){return new BPromise(function(_0x5c86bb,_0x3ffb57){var _0x28ef91=0x0;_0x189727[_0x7bb3('0x61')]['role']==='agent'&&_0x5c86bb(_0x7bb3('0x64'));return db[_0x7bb3('0x3e')][_0x7bb3('0x29')]({'where':{'$or':[{'role':_0x189727[_0x7bb3('0x61')]['role']===_0x7bb3('0x65')?_0x7bb3('0x65'):[_0x7bb3('0x66'),_0x7bb3('0x67')]}]}})['then'](function(_0x1832d1){_0x28ef91=_0x1832d1;return require(_0x7bb3('0x68'))[_0x7bb3('0x69')]();})[_0x7bb3('0x30')](function(_0x5e814d){var _0x2d8f33=_0x189727[_0x7bb3('0x61')][_0x7bb3('0x39')]===_0x7bb3('0x65')?'telephones':_0x7bb3('0x6a');if(!_[_0x7bb3('0x6b')](_0x5e814d[_0x2d8f33])&&_0x28ef91>=_0x5e814d[_0x2d8f33]){return _0x3ffb57({'message':_0x7bb3('0x6c')});}return _0x5c86bb(util['format']('count\x20%s:\x20%s',_0x2d8f33,_0x28ef91));})[_0x7bb3('0x24')](function(_0x1ef64a){return _0x3ffb57(_0x1ef64a);});});};exports[_0x7bb3('0x6d')]=function(_0x253a66,_0xf28bea){return getLicense(_0x253a66)[_0x7bb3('0x30')](function(_0x972ebc){if(!_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x6e')]){var _0x322e2f;return db[_0x7bb3('0x6f')][_0x7bb3('0x70')](0x1)[_0x7bb3('0x30')](function(_0x4f9f92){_0x322e2f=_0x4f9f92['min_internal'];return db['User'][_0x7bb3('0x71')](_0x7bb3('0x6e'));})[_0x7bb3('0x30')](function(_0x5dbcb7){if(_[_0x7bb3('0x6b')](_0x5dbcb7)){if(_0x322e2f){_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x6e')]=_0x322e2f;}else{_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x6e')]=0x1;}}else{if(_['isNil'](_0x322e2f)||_0x322e2f==_0x5dbcb7){_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x6e')]=_0x5dbcb7+0x1;}else if(_0x322e2f>_0x5dbcb7){_0x253a66['body'][_0x7bb3('0x6e')]=_0x322e2f;}else{return db[_0x7bb3('0x57')][_0x7bb3('0x44')]('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[_0x7bb3('0x57')]['QueryTypes'][_0x7bb3('0x72')]})['then'](function(_0x3358d0){if(_0x3358d0&&_0x3358d0[_0x7bb3('0x4a')]){for(var _0x430984=0x0,_0x417ce4=_0x3358d0[_0x7bb3('0x4a')];_0x430984<_0x417ce4&&_[_0x7bb3('0x6b')](_0x253a66[_0x7bb3('0x61')]['internal']);_0x430984++){if(_0x322e2f<=_0x3358d0[_0x430984]['from']){_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x6e')]=_0x3358d0[_0x430984][_0x7bb3('0x73')];}else if(_0x322e2f>_0x3358d0[_0x430984][_0x7bb3('0x73')]&&_0x322e2f<=_0x3358d0[_0x430984]['to']){_0x253a66['body'][_0x7bb3('0x6e')]=_0x322e2f;}}}if(_[_0x7bb3('0x6b')](_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x6e')])){_0x253a66['body'][_0x7bb3('0x6e')]=_0x5dbcb7+0x1;}});}}});}})[_0x7bb3('0x30')](function(){if(_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x74')]){_0x253a66[_0x7bb3('0x61')]['mailbox']=_0x253a66['body'][_0x7bb3('0x6e')];_0x253a66['body']['VoiceMail']={'mailbox':_0x253a66['body']['internal'],'password':_0x253a66[_0x7bb3('0x61')]['password'],'fullname':_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x75')],'email':_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x76')]};}if(_0x253a66[_0x7bb3('0x61')]&&_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x39')]==='agent'){_0x253a66[_0x7bb3('0x61')]['permissions']=['101',_0x7bb3('0x77'),_0x7bb3('0x78'),_0x7bb3('0x79'),_0x7bb3('0x7a'),_0x7bb3('0x7b'),_0x7bb3('0x7c'),_0x7bb3('0x7d'),'108',_0x7bb3('0x7e'),'100','111'];}return db[_0x7bb3('0x3e')][_0x7bb3('0x6d')](_0x253a66['body'],{'include':[{'model':db[_0x7bb3('0x7f')],'as':_0x7bb3('0x7f')}]});})[_0x7bb3('0x30')](function(_0x1c8a92){if(_0x253a66[_0x7bb3('0x61')][_0x7bb3('0x39')]===_0x7bb3('0x67'))return _0x1c8a92;var _0x22bbef=_0x253a66[_0x7bb3('0x67')]['get']({'plain':!![]});if(!_0x22bbef)throw new Error(_0x7bb3('0x80'));if(_0x22bbef[_0x7bb3('0x39')]===_0x7bb3('0x67')){var _0x35863f=_0x1c8a92[_0x7bb3('0x81')]({'plain':!![]});var _0x59deaf=[{'name':_0x7bb3('0x33'),'value':_0x7bb3('0x34')},{'name':_0x7bb3('0x35'),'value':_0x7bb3('0x65')}];var _0x49749f=_[_0x7bb3('0x3a')](_0x59deaf,['value',_0x35863f['role']])[_0x7bb3('0x3b')];return db[_0x7bb3('0x82')][_0x7bb3('0x3a')]({'where':{'name':_0x49749f,'userProfileId':_0x22bbef[_0x7bb3('0x83')]},'raw':!![]})['then'](function(_0x4a72de){if(_0x4a72de&&_0x4a72de[_0x7bb3('0x84')]===0x0){return db['UserProfileResource']['create']({'name':_0x35863f[_0x7bb3('0x3b')],'resourceId':_0x35863f['id'],'type':_0x4a72de[_0x7bb3('0x3b')],'sectionId':_0x4a72de['id']},{})[_0x7bb3('0x30')](function(){return _0x1c8a92;});}else{return _0x1c8a92;}})[_0x7bb3('0x24')](function(_0x12feda){logger['error'](_0x7bb3('0x85'),_0x12feda);throw _0x12feda;});}return _0x1c8a92;})[_0x7bb3('0x30')](respondWithResult(_0xf28bea,0xc9))[_0x7bb3('0x24')](handleError(_0xf28bea,null));};exports[_0x7bb3('0x86')]=function(_0x4e8508,_0xf6cb77,_0x3990f8){if(_0x4e8508[_0x7bb3('0x61')]['id']){delete _0x4e8508[_0x7bb3('0x61')]['id'];}return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x4e8508[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](function(_0x5e3ecd){if(_0x5e3ecd){if(_0x5e3ecd['id']==_0x4e8508[_0x7bb3('0x67')]['id']){if(!_0x4e8508[_0x7bb3('0x61')]['oldPassword']||!_0x4e8508['body'][_0x7bb3('0x87')]){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))](_0x7bb3('0x8a'));}if(!_0x5e3ecd[_0x7bb3('0x8b')](_0x4e8508[_0x7bb3('0x61')][_0x7bb3('0x8c')])){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))](_0x7bb3('0x8d'));}if(_0x4e8508[_0x7bb3('0x61')]['oldPassword']==_0x4e8508['body']['newPassword']){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))](_0x7bb3('0x8e'));}return _0x5e3ecd;}else if(_0x4e8508[_0x7bb3('0x67')][_0x7bb3('0x39')]==_0x7bb3('0x66')){if(!_0x4e8508[_0x7bb3('0x61')][_0x7bb3('0x87')]){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}return _0x5e3ecd;}else if(_0x4e8508[_0x7bb3('0x67')][_0x7bb3('0x39')]==_0x7bb3('0x67')){if(!_0x4e8508[_0x7bb3('0x61')][_0x7bb3('0x87')]){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))](_0x7bb3('0x8f'));}if(_0x5e3ecd[_0x7bb3('0x39')]!=_0x7bb3('0x34')){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))](_0x7bb3('0x90'));}return _0x5e3ecd;}else{throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))]('Unauthorized');}}return null;})[_0x7bb3('0x30')](handleEntityNotFound(_0xf6cb77,null))['then'](saveUpdates({'password':_0x4e8508[_0x7bb3('0x61')][_0x7bb3('0x87')],'passwordResetAt':_0x4e8508[_0x7bb3('0x67')]['id']==_0x4e8508[_0x7bb3('0x5f')]['id']?moment():null},null))[_0x7bb3('0x30')](respondWithResult(_0xf6cb77,null))[_0x7bb3('0x24')](handleError(_0xf6cb77,null));};exports['addQueues']=function(_0x8082f,_0x439c3a,_0x4075bb){var _0x14a1a9;return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x8082f[_0x7bb3('0x5f')]['id']},'attributes':['id','name',_0x7bb3('0x39'),_0x7bb3('0x91'),_0x7bb3('0x92'),_0x7bb3('0x93')]})['then'](handleEntityNotFound(_0x439c3a,null))[_0x7bb3('0x30')](function(_0x570e74){if(_0x570e74){_0x14a1a9=_0x570e74;if(!utils[_0x7bb3('0x94')](_0x8082f[_0x7bb3('0x61')][_0x7bb3('0x95')])){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))]('Unknown\x20channel');}return _0x570e74[_0x7bb3('0x53')+_[_0x7bb3('0x96')](_0x8082f[_0x7bb3('0x61')]['channel'][_0x7bb3('0x97')]())+_0x7bb3('0x98')](_0x8082f[_0x7bb3('0x61')][_0x7bb3('0x99')],{'penalty':_0x8082f['body']['penalty']||0x0});}})[_0x7bb3('0x9a')](function(_0x34d504){for(var _0x197b86=0x0;_0x197b86<_0x8082f[_0x7bb3('0x61')]['ids'][_0x7bb3('0x4a')];_0x197b86+=0x1){var _0x4e0d24={'UserId':_0x8082f[_0x7bb3('0x5f')]['id']};_0x4e0d24[_[_0x7bb3('0x96')](_0x8082f['body'][_0x7bb3('0x95')][_0x7bb3('0x97')]())+_0x7bb3('0x9b')]=_0x8082f[_0x7bb3('0x61')][_0x7bb3('0x99')][_0x197b86];socket[_0x7bb3('0x9c')](_0x7bb3('0x67')+_['capitalize'](_0x8082f[_0x7bb3('0x61')][_0x7bb3('0x95')][_0x7bb3('0x97')]())+_0x7bb3('0x9d'),_0x4e0d24);}return _0x34d504;})[_0x7bb3('0x30')](function(){if(_0x8082f[_0x7bb3('0x61')][_0x7bb3('0x95')]===_0x7bb3('0x9e')){return db[_0x7bb3('0x9f')][_0x7bb3('0xa0')]({'where':{'id':_0x8082f[_0x7bb3('0x61')][_0x7bb3('0x99')]||[]},'raw':!![],'attributes':['id',_0x7bb3('0x3b')]});}})[_0x7bb3('0x30')](function(_0x3ec5d3){var _0x67bb7c=[];if(_0x8082f['body'][_0x7bb3('0x95')]==='voice'&&_0x14a1a9['role']===_0x7bb3('0x34')){for(var _0x461637=0x0;_0x461637<_0x3ec5d3[_0x7bb3('0x4a')];_0x461637+=0x1){_0x67bb7c[_0x7bb3('0xa1')]({'membername':_0x14a1a9['name'],'UserId':_0x14a1a9['id'],'queue_name':_0x3ec5d3[_0x461637][_0x7bb3('0x3b')],'VoiceQueueId':_0x3ec5d3[_0x461637]['id'],'interface':_[_0x7bb3('0x6b')](_0x14a1a9[_0x7bb3('0x93')])?util[_0x7bb3('0xa2')]('SIP/%s',_0x14a1a9[_0x7bb3('0x3b')]):_0x14a1a9[_0x7bb3('0x93')],'paused':_0x14a1a9[_0x7bb3('0x92')]||![],'penalty':_0x8082f[_0x7bb3('0x61')][_0x7bb3('0xa3')]||0x0});}return BPromise[_0x7bb3('0xa4')](_0x67bb7c,function(_0x371006){return db['UserVoiceQueueRt']['upsert'](_0x371006);});}return _0x14a1a9;})[_0x7bb3('0x30')](respondWithStatusCode(_0x439c3a,null))['catch'](handleError(_0x439c3a,null));};exports['removeQueues']=function(_0x32262f,_0x2eac1a,_0x36a493){var _0x2dacad;return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x32262f[_0x7bb3('0x5f')]['id']},'attributes':['id',_0x7bb3('0x3b'),_0x7bb3('0x39')]})[_0x7bb3('0x30')](handleEntityNotFound(_0x2eac1a,null))[_0x7bb3('0x30')](function(_0x1d223d){if(_0x1d223d){_0x2dacad=_0x1d223d;if(!_0x32262f[_0x7bb3('0x44')][_0x7bb3('0x95')]||!utils[_0x7bb3('0x94')](_0x32262f[_0x7bb3('0x44')]['channel'])){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))]('Unknown\x20channel');}return _0x1d223d[_0x7bb3('0xa5')+_[_0x7bb3('0x96')](_0x32262f['query'][_0x7bb3('0x95')][_0x7bb3('0x97')]())+_0x7bb3('0x98')](_0x32262f[_0x7bb3('0x44')][_0x7bb3('0x99')]);}})[_0x7bb3('0x30')](function(_0x4ac53e){for(var _0x1502e4=0x0;_0x1502e4<_0x32262f[_0x7bb3('0x44')][_0x7bb3('0x99')]['length'];_0x1502e4+=0x1){var _0x47bbca={'UserId':_0x32262f['params']['id']};_0x47bbca[_[_0x7bb3('0x96')](_0x32262f[_0x7bb3('0x44')][_0x7bb3('0x95')]['toLowerCase']())+_0x7bb3('0x9b')]=_0x32262f['query'][_0x7bb3('0x99')][_0x1502e4];socket[_0x7bb3('0x9c')](_0x7bb3('0x67')+_[_0x7bb3('0x96')](_0x32262f[_0x7bb3('0x44')]['channel'][_0x7bb3('0x97')]())+_0x7bb3('0xa6'),_0x47bbca);}return _0x4ac53e;})[_0x7bb3('0x30')](function(){if(_0x32262f['query']['channel']===_0x7bb3('0x9e')){return db[_0x7bb3('0xa7')][_0x7bb3('0x31')]({'where':{'UserId':_0x32262f[_0x7bb3('0x5f')]['id'],'VoiceQueueId':_0x32262f[_0x7bb3('0x44')]['ids']},'individualHooks':!![]})['then'](function(){return _0x2dacad;});}return _0x2dacad;})['then'](respondWithStatusCode(_0x2eac1a,null))[_0x7bb3('0x24')](handleError(_0x2eac1a,null));};exports[_0x7bb3('0xa8')]=function(_0xa7cdba,_0x5f53e3,_0x51cdb9){_0xa7cdba[_0x7bb3('0x61')][_0x7bb3('0xa9')]=_0xa7cdba[_0x7bb3('0xaa')]['filename'];return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0xa7cdba[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x5f53e3,null))[_0x7bb3('0x30')](saveUpdates(_0xa7cdba[_0x7bb3('0x61')],null))[_0x7bb3('0x30')](respondWithResult(_0x5f53e3,null))[_0x7bb3('0x24')](handleError(_0x5f53e3,null));};exports['getAvatar']=function(_0x6335f1,_0x2076dc,_0x56a251){var _0x55bcec=path[_0x7bb3('0xab')](config['root'],_0x7bb3('0xac'));return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x6335f1[_0x7bb3('0x5f')]['id']},'attributes':['id',_0x7bb3('0xa9')],'raw':!![]})[_0x7bb3('0x30')](handleEntityNotFound(_0x2076dc,null))[_0x7bb3('0x30')](function(_0x25b8ca){if(_0x25b8ca){if(_[_0x7bb3('0x6b')](_0x25b8ca[_0x7bb3('0xa9')])){return _0x2076dc['download'](_0x55bcec);}else{if(!fs[_0x7bb3('0xad')](path[_0x7bb3('0xab')](config[_0x7bb3('0xae')],_0x7bb3('0xaf'),_0x25b8ca[_0x7bb3('0xa9')]))){return _0x2076dc[_0x7bb3('0xb0')](_0x55bcec);}return _0x2076dc[_0x7bb3('0xb0')](path['join'](config[_0x7bb3('0xae')],_0x7bb3('0xaf'),_0x25b8ca['userpic']));}}})[_0x7bb3('0x24')](handleError(_0x2076dc,null));};exports[_0x7bb3('0xb1')]=function(_0x22d345,_0x27dc62,_0x289dbf){var _0x2cc5c7={};var _0x257220={};var _0x172baa;var _0x55b681;return db[_0x7bb3('0x3e')]['findOne']({'where':{'id':_0x22d345[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x27dc62,null))['then'](function(_0x42ec70){if(_0x42ec70){_0x172baa=_0x42ec70;_0x257220[_0x7bb3('0x40')]=_['keys'](db[_0x7bb3('0xb2')][_0x7bb3('0x3f')]);_0x257220[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x22d345[_0x7bb3('0x44')]);_0x257220[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x257220['model'],_0x257220[_0x7bb3('0x44')]);_0x2cc5c7[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x257220[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x22d345[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x2cc5c7[_0x7bb3('0x48')]=_0x2cc5c7['attributes'][_0x7bb3('0x4a')]?_0x2cc5c7[_0x7bb3('0x48')]:_0x257220[_0x7bb3('0x40')];_0x2cc5c7['order']=qs[_0x7bb3('0x50')](_0x22d345[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x2cc5c7[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x22d345['query'],_0x257220[_0x7bb3('0x46')]));if(_0x22d345[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x2cc5c7[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x2cc5c7[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x2cc5c7[_0x7bb3('0x48')],function(_0x1defb0){var _0x56f987={};_0x56f987[_0x1defb0]={'$like':'%'+_0x22d345[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x56f987;})});}_0x2cc5c7=_['merge']({},_0x2cc5c7,_0x22d345[_0x7bb3('0xb3')]);return _0x172baa[_0x7bb3('0xb1')](_0x2cc5c7);}})[_0x7bb3('0x30')](function(_0x4c4aac){if(_0x4c4aac){_0x55b681=_0x4c4aac[_0x7bb3('0x4a')];if(_0x22d345['query'][_0x7bb3('0x4b')]('includeAll')){_0x2cc5c7[_0x7bb3('0x5c')]=[{'model':db[_0x7bb3('0xb4')],'as':_0x7bb3('0xb5'),'required':![]},{'model':db[_0x7bb3('0xb6')],'as':_0x7bb3('0xb7'),'attributes':['id',_0x7bb3('0x3b'),_0x7bb3('0xb8')],'where':_0x22d345[_0x7bb3('0x44')][_0x7bb3('0xb9')]?{'id':_0x22d345[_0x7bb3('0x44')][_0x7bb3('0xb9')]}:undefined,'required':_0x22d345['query'][_0x7bb3('0xb9')]?!![]:![]}];}if(!_0x22d345[_0x7bb3('0x44')][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x2cc5c7[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x22d345[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x2cc5c7['offset']=qs[_0x7bb3('0x4e')](_0x22d345[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x172baa[_0x7bb3('0xb1')](_0x2cc5c7);}})[_0x7bb3('0x30')](function(_0x3c1d6d){if(_0x3c1d6d){return _0x3c1d6d?{'count':_0x55b681,'rows':_0x3c1d6d}:null;}})['then'](respondWithResult(_0x27dc62,null))[_0x7bb3('0x24')](handleError(_0x27dc62,null));};exports[_0x7bb3('0xba')]=function(_0x9bc9dc,_0x60d3a,_0x3e14f7){var _0x2ea72d;var _0x18bc17;var _0x238d95={};var _0x111822;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x9bc9dc[_0x7bb3('0x5f')]['id']},'attributes':['id','name','role']})['then'](handleEntityNotFound(_0x60d3a,null))[_0x7bb3('0x30')](function(_0x4b0cb2){if(!utils[_0x7bb3('0x94')](_0x9bc9dc['query'][_0x7bb3('0x95')])){throw new db[(_0x7bb3('0x88'))]['ValidationError']('Unknown\x20channel');}_0x2ea72d=_0x4b0cb2;var _0x2de199={};_0x2de199[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db[_[_0x7bb3('0x96')](_0x9bc9dc[_0x7bb3('0x44')]['channel'])+_0x7bb3('0xbc')][_0x7bb3('0x3f')]);_0x2de199['query']=_[_0x7bb3('0x41')](_0x9bc9dc[_0x7bb3('0x44')]);_0x2de199[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x2de199['model'],_0x2de199[_0x7bb3('0x44')]);_0x238d95['attributes']=_['intersection'](_0x2de199[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x9bc9dc[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x238d95[_0x7bb3('0x48')]=_0x238d95[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x238d95[_0x7bb3('0x48')]:_0x2de199[_0x7bb3('0x40')];_0x238d95[_0x7bb3('0x4f')]=qs['sort'](_0x9bc9dc['query'][_0x7bb3('0x50')]);_0x238d95['where']=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x9bc9dc['query'],_0x2de199[_0x7bb3('0x46')]));if(_0x9bc9dc['query'][_0x7bb3('0x36')]){_0x238d95[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x238d95[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x238d95[_0x7bb3('0x48')],function(_0x4305c4){var _0x70dab9={};_0x70dab9[_0x4305c4]={'$like':'%'+_0x9bc9dc[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x70dab9;})});}_0x238d95=_[_0x7bb3('0x55')]({},_0x238d95,_0x9bc9dc[_0x7bb3('0xb3')]);switch(_0x2ea72d['role']){case _0x7bb3('0x66'):return db[_['capitalize'](_0x9bc9dc[_0x7bb3('0x44')][_0x7bb3('0x95')])+_0x7bb3('0xbc')]['findAll'](_0x238d95);case _0x7bb3('0x67'):case _0x7bb3('0x34'):return _0x2ea72d[_0x7bb3('0x81')+_[_0x7bb3('0x96')](_0x9bc9dc[_0x7bb3('0x44')][_0x7bb3('0x95')])+_0x7bb3('0x98')](_0x238d95);default:throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))](_0x7bb3('0xbd'));}})[_0x7bb3('0x30')](function(_0x2a380a){_0x111822=_0x2a380a[_0x7bb3('0x4a')];if(!_0x9bc9dc[_0x7bb3('0x44')]['hasOwnProperty'](_0x7bb3('0x4c'))){_0x238d95['limit']=qs['limit'](_0x9bc9dc[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x238d95['offset']=qs[_0x7bb3('0x4e')](_0x9bc9dc[_0x7bb3('0x44')]['offset']);}switch(_0x2ea72d['role']){case _0x7bb3('0x66'):return db[_[_0x7bb3('0x96')](_0x9bc9dc[_0x7bb3('0x44')][_0x7bb3('0x95')])+_0x7bb3('0xbc')]['findAll'](_0x238d95);case _0x7bb3('0x67'):case _0x7bb3('0x34'):return _0x2ea72d[_0x7bb3('0x81')+_[_0x7bb3('0x96')](_0x9bc9dc['query'][_0x7bb3('0x95')])+_0x7bb3('0x98')](_0x238d95);}})[_0x7bb3('0x30')](function(_0x40ec9d){return{'count':_0x111822,'rows':_0x40ec9d};})['then'](respondWithResult(_0x60d3a,null))[_0x7bb3('0x24')](handleError(_0x60d3a,null));};exports[_0x7bb3('0xbe')]=function(_0x228932,_0x310dce,_0x59a5f4){var _0x1fb7cf={};var _0x27c664={};var _0x35a535;var _0x2e32d8;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x228932['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x310dce,null))[_0x7bb3('0x30')](function(_0x5b51ac){if(_0x5b51ac){_0x35a535=_0x5b51ac;_0x27c664[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db[_0x7bb3('0xa7')][_0x7bb3('0x3f')]);_0x27c664[_0x7bb3('0x44')]=_['keys'](_0x228932['query']);_0x27c664[_0x7bb3('0x46')]=_['intersection'](_0x27c664['model'],_0x27c664[_0x7bb3('0x44')]);_0x1fb7cf['attributes']=_[_0x7bb3('0x47')](_0x27c664[_0x7bb3('0x40')],qs['fields'](_0x228932[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x1fb7cf[_0x7bb3('0x48')]=_0x1fb7cf[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x1fb7cf[_0x7bb3('0x48')]:_0x27c664[_0x7bb3('0x40')];_0x1fb7cf[_0x7bb3('0x4f')]=qs['sort'](_0x228932[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x1fb7cf['where']=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x228932[_0x7bb3('0x44')],_0x27c664[_0x7bb3('0x46')]));if(_0x228932[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x1fb7cf['where']=_['merge'](_0x1fb7cf[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x1fb7cf[_0x7bb3('0x48')],function(_0x3ceec7){var _0x2b47dd={};_0x2b47dd[_0x3ceec7]={'$like':'%'+_0x228932[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x2b47dd;})});}_0x1fb7cf=_[_0x7bb3('0x55')]({},_0x1fb7cf,_0x228932[_0x7bb3('0xb3')]);return _0x35a535['getVoiceQueuesRt'](_0x1fb7cf);}})[_0x7bb3('0x30')](function(_0x553746){if(_0x553746){_0x2e32d8=_0x553746['length'];if(!_0x228932['query'][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x1fb7cf[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x228932[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x1fb7cf['offset']=qs[_0x7bb3('0x4e')](_0x228932[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x35a535['getVoiceQueuesRt'](_0x1fb7cf);}})[_0x7bb3('0x30')](function(_0x55322f){if(_0x55322f){return _0x55322f?{'count':_0x2e32d8,'rows':_0x55322f}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x310dce,null))[_0x7bb3('0x24')](handleError(_0x310dce,null));};exports[_0x7bb3('0xbf')]=function(_0x254fb6,_0x11b898,_0x22b2ac){var _0x7a7528={};var _0x5e82e3={};var _0x1b021c;var _0x5ee1bc;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x254fb6['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x11b898,null))[_0x7bb3('0x30')](function(_0x18a91e){if(_0x18a91e){_0x1b021c=_0x18a91e;_0x5e82e3[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db['ChatGroup'][_0x7bb3('0x3f')]);_0x5e82e3[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x254fb6[_0x7bb3('0x44')]);_0x5e82e3[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x5e82e3[_0x7bb3('0x40')],_0x5e82e3[_0x7bb3('0x44')]);_0x7a7528[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x5e82e3[_0x7bb3('0x40')],qs['fields'](_0x254fb6[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x7a7528[_0x7bb3('0x48')]=_0x7a7528['attributes'][_0x7bb3('0x4a')]?_0x7a7528[_0x7bb3('0x48')]:_0x5e82e3[_0x7bb3('0x40')];_0x7a7528[_0x7bb3('0x4f')]=qs['sort'](_0x254fb6[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x7a7528['where']=qs[_0x7bb3('0x46')](_['pick'](_0x254fb6[_0x7bb3('0x44')],_0x5e82e3[_0x7bb3('0x46')]));if(_0x254fb6['query'][_0x7bb3('0x36')]){_0x7a7528['where']=_[_0x7bb3('0x55')](_0x7a7528['where'],{'$or':_[_0x7bb3('0x56')](_0x7a7528[_0x7bb3('0x48')],function(_0x2faf4f){var _0x1c59b1={};_0x1c59b1[_0x2faf4f]={'$like':'%'+_0x254fb6[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x1c59b1;})});}_0x7a7528=_[_0x7bb3('0x55')]({},_0x7a7528,_0x254fb6['options']);return _0x1b021c[_0x7bb3('0xbf')](_0x7a7528);}})['then'](function(_0x4146b8){if(_0x4146b8){_0x5ee1bc=_0x4146b8['length'];if(!_0x254fb6[_0x7bb3('0x44')][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x7a7528[_0x7bb3('0x4d')]=qs['limit'](_0x254fb6[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x7a7528[_0x7bb3('0x4e')]=qs['offset'](_0x254fb6[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x1b021c['getGroups'](_0x7a7528);}})['then'](function(_0x52af78){if(_0x52af78){return _0x52af78?{'count':_0x5ee1bc,'rows':_0x52af78}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x11b898,null))[_0x7bb3('0x24')](handleError(_0x11b898,null));};exports[_0x7bb3('0xc0')]=function(_0x2866b3,_0x22147c,_0x37e361){var _0x497b5f={'raw':!![],'where':{}};var _0x492159={};var _0x1f9e48={'count':0x0,'rows':[]};return db['User'][_0x7bb3('0xbb')]({'where':{'id':_0x2866b3[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x22147c,null))[_0x7bb3('0x30')](function(_0x15cc28){if(_0x15cc28){_0x492159[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db['VoiceRecording']['rawAttributes']);_0x492159[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x2866b3['query']);_0x492159['filters']=_[_0x7bb3('0x47')](_0x492159[_0x7bb3('0x40')],_0x492159[_0x7bb3('0x44')]);_0x497b5f[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x492159[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x2866b3[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x497b5f[_0x7bb3('0x48')]=_0x497b5f['attributes']['length']?_0x497b5f[_0x7bb3('0x48')]:_0x492159['model'];if(!_0x2866b3['query'][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x497b5f[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x2866b3[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x497b5f[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x2866b3['query']['offset']);}_0x497b5f[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x2866b3[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x497b5f[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_['pick'](_0x2866b3[_0x7bb3('0x44')],_0x492159[_0x7bb3('0x46')]));_0x497b5f[_0x7bb3('0x51')][_0x7bb3('0xc1')]=_0x15cc28['id'];if(_0x2866b3[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x497b5f[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x497b5f[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x497b5f['attributes'],function(_0x19ce9c){var _0x247b2c={};_0x247b2c[_0x19ce9c]={'$like':'%'+_0x2866b3[_0x7bb3('0x44')]['filter']+'%'};return _0x247b2c;})});}_0x497b5f=_['merge']({},_0x497b5f,_0x2866b3['options']);return db[_0x7bb3('0xc2')]['count']({'where':_0x497b5f['where']})[_0x7bb3('0x30')](function(_0x384a02){_0x1f9e48[_0x7bb3('0x29')]=_0x384a02;if(_0x2866b3[_0x7bb3('0x44')]['includeAll']){_0x497b5f[_0x7bb3('0x5c')]=[{'all':!![]}];}return db[_0x7bb3('0xc2')][_0x7bb3('0xa0')](_0x497b5f);})[_0x7bb3('0x30')](function(_0x5a9f83){_0x1f9e48['rows']=_0x5a9f83;return _0x1f9e48;});}})[_0x7bb3('0x30')](respondWithFilteredResult(_0x22147c,_0x497b5f))['catch'](handleError(_0x22147c,null));};exports[_0x7bb3('0xc3')]=function(_0xe0899d,_0x5aeaf4,_0x1bf65f){var _0xb8c7bc={};var _0x35b1a4={};var _0x174b5f;var _0x17d978;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0xe0899d[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x5aeaf4,null))['then'](function(_0xe672a8){if(_0xe672a8){_0x174b5f=_0xe672a8;_0x35b1a4['model']=_[_0x7bb3('0x41')](db['ChatInteraction'][_0x7bb3('0x3f')]);_0x35b1a4[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0xe0899d[_0x7bb3('0x44')]);_0x35b1a4[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x35b1a4[_0x7bb3('0x40')],_0x35b1a4[_0x7bb3('0x44')]);_0xb8c7bc[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x35b1a4[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0xe0899d['query']['fields']));_0xb8c7bc['attributes']=_0xb8c7bc[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0xb8c7bc[_0x7bb3('0x48')]:_0x35b1a4[_0x7bb3('0x40')];_0xb8c7bc['order']=qs[_0x7bb3('0x50')](_0xe0899d[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0xb8c7bc[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0xe0899d['query'],_0x35b1a4['filters']));if(_0xe0899d[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0xb8c7bc[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0xb8c7bc[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0xb8c7bc['attributes'],function(_0x41d21a){var _0x105794={};_0x105794[_0x41d21a]={'$like':'%'+_0xe0899d[_0x7bb3('0x44')]['filter']+'%'};return _0x105794;})});}_0xb8c7bc=_[_0x7bb3('0x55')]({},_0xb8c7bc,_0xe0899d[_0x7bb3('0xb3')]);return _0x174b5f[_0x7bb3('0xc3')](_0xb8c7bc);}})[_0x7bb3('0x30')](function(_0x32d7f1){if(_0x32d7f1){_0x17d978=_0x32d7f1['length'];if(!_0xe0899d['query']['hasOwnProperty'](_0x7bb3('0x4c'))){_0xb8c7bc[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0xe0899d[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0xb8c7bc[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0xe0899d[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x174b5f[_0x7bb3('0xc3')](_0xb8c7bc);}})[_0x7bb3('0x30')](function(_0xac2b3){if(_0xac2b3){return _0xac2b3?{'count':_0x17d978,'rows':_0xac2b3}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x5aeaf4,null))[_0x7bb3('0x24')](handleError(_0x5aeaf4,null));};exports['getOpenchannelInteractions']=function(_0x2d582f,_0x177574,_0x3432a6){var _0x5bed27={};var _0x181df5={};var _0x4fe750;var _0x212265;return db['User'][_0x7bb3('0xbb')]({'where':{'id':_0x2d582f['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x177574,null))[_0x7bb3('0x30')](function(_0x4c1c9b){if(_0x4c1c9b){_0x4fe750=_0x4c1c9b;_0x181df5[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db[_0x7bb3('0xc4')][_0x7bb3('0x3f')]);_0x181df5[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x2d582f[_0x7bb3('0x44')]);_0x181df5[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x181df5[_0x7bb3('0x40')],_0x181df5['query']);_0x5bed27[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x181df5[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x2d582f['query'][_0x7bb3('0x49')]));_0x5bed27['attributes']=_0x5bed27[_0x7bb3('0x48')]['length']?_0x5bed27[_0x7bb3('0x48')]:_0x181df5['model'];_0x5bed27[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x2d582f[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x5bed27[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x2d582f[_0x7bb3('0x44')],_0x181df5[_0x7bb3('0x46')]));if(_0x2d582f[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x5bed27['where']=_[_0x7bb3('0x55')](_0x5bed27[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x5bed27[_0x7bb3('0x48')],function(_0x2521a3){var _0x313dc1={};_0x313dc1[_0x2521a3]={'$like':'%'+_0x2d582f[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x313dc1;})});}_0x5bed27=_[_0x7bb3('0x55')]({},_0x5bed27,_0x2d582f[_0x7bb3('0xb3')]);return _0x4fe750[_0x7bb3('0xc5')](_0x5bed27);}})['then'](function(_0x4a850e){if(_0x4a850e){_0x212265=_0x4a850e[_0x7bb3('0x4a')];if(!_0x2d582f[_0x7bb3('0x44')][_0x7bb3('0x4b')]('nolimit')){_0x5bed27['limit']=qs[_0x7bb3('0x4d')](_0x2d582f['query'][_0x7bb3('0x4d')]);_0x5bed27[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x2d582f['query'][_0x7bb3('0x4e')]);}return _0x4fe750[_0x7bb3('0xc5')](_0x5bed27);}})['then'](function(_0x294e33){if(_0x294e33){return _0x294e33?{'count':_0x212265,'rows':_0x294e33}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x177574,null))[_0x7bb3('0x24')](handleError(_0x177574,null));};exports['getMailInteractions']=function(_0x57040c,_0x5efa30,_0x1d2ef5){var _0x25f000={'raw':!![],'where':{}};var _0x2d37e7={};var _0x3e4790={'count':0x0,'rows':[]};return db[_0x7bb3('0x3e')]['findOne']({'where':{'id':_0x57040c[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x5efa30,null))['then'](function(_0x247292){if(_0x247292){_0x2d37e7[_0x7bb3('0x40')]=_['keys'](db[_0x7bb3('0xc6')][_0x7bb3('0x3f')]);_0x2d37e7[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x57040c[_0x7bb3('0x44')]);_0x2d37e7[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x2d37e7[_0x7bb3('0x40')],_0x2d37e7['query']);_0x25f000['attributes']=_[_0x7bb3('0x47')](_0x2d37e7['model'],qs[_0x7bb3('0x49')](_0x57040c[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x25f000[_0x7bb3('0x48')]=_0x25f000[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x25f000['attributes']:_0x2d37e7['model'];if(!_0x57040c[_0x7bb3('0x44')]['hasOwnProperty']('nolimit')){_0x25f000['limit']=qs['limit'](_0x57040c[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x25f000[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x57040c[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}_0x25f000[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x57040c[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x25f000[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x57040c['query'],_0x2d37e7['filters']));_0x25f000[_0x7bb3('0x51')][_0x7bb3('0xc1')]=_0x247292['id'];if(_0x57040c['query'][_0x7bb3('0x36')]){_0x25f000['where']=_['merge'](_0x25f000['where'],{'$or':_[_0x7bb3('0x56')](_0x25f000[_0x7bb3('0x48')],function(_0x4a5230){var _0x2c8f8a={};_0x2c8f8a[_0x4a5230]={'$like':'%'+_0x57040c[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x2c8f8a;})});}_0x25f000=_['merge']({},_0x25f000,_0x57040c[_0x7bb3('0xb3')]);return db[_0x7bb3('0xc6')]['count']({'where':_0x25f000[_0x7bb3('0x51')]})[_0x7bb3('0x30')](function(_0x3ac20d){_0x3e4790[_0x7bb3('0x29')]=_0x3ac20d;if(_0x57040c[_0x7bb3('0x44')]['includeAll']){_0x25f000[_0x7bb3('0x5c')]=[{'all':!![]}];}return db[_0x7bb3('0xc6')][_0x7bb3('0xa0')](_0x25f000);})['then'](function(_0x17f67f){_0x3e4790[_0x7bb3('0x5d')]=_0x17f67f;return _0x3e4790;});}})['then'](respondWithFilteredResult(_0x5efa30,_0x25f000))['catch'](handleError(_0x5efa30,null));};exports[_0x7bb3('0xc7')]=function(_0x1d7e70,_0x2a2718,_0x31460b){var _0x50a0f3={};var _0x3975e9={};var _0x39368b;var _0xed03ea;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x1d7e70['params']['id']}})['then'](handleEntityNotFound(_0x2a2718,null))['then'](function(_0x4732d9){if(_0x4732d9){_0x39368b=_0x4732d9;_0x3975e9[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db[_0x7bb3('0xc8')]['rawAttributes']);_0x3975e9['query']=_['keys'](_0x1d7e70[_0x7bb3('0x44')]);_0x3975e9[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x3975e9[_0x7bb3('0x40')],_0x3975e9[_0x7bb3('0x44')]);_0x50a0f3[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x3975e9[_0x7bb3('0x40')],qs['fields'](_0x1d7e70['query'][_0x7bb3('0x49')]));_0x50a0f3[_0x7bb3('0x48')]=_0x50a0f3[_0x7bb3('0x48')]['length']?_0x50a0f3[_0x7bb3('0x48')]:_0x3975e9[_0x7bb3('0x40')];_0x50a0f3[_0x7bb3('0x4f')]=qs['sort'](_0x1d7e70[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x50a0f3[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x1d7e70['query'],_0x3975e9[_0x7bb3('0x46')]));if(_0x1d7e70[_0x7bb3('0x44')]['filter']){_0x50a0f3[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x50a0f3[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x50a0f3[_0x7bb3('0x48')],function(_0x30305c){var _0x32d340={};_0x32d340[_0x30305c]={'$like':'%'+_0x1d7e70[_0x7bb3('0x44')]['filter']+'%'};return _0x32d340;})});}_0x50a0f3=_[_0x7bb3('0x55')]({},_0x50a0f3,_0x1d7e70[_0x7bb3('0xb3')]);return _0x39368b[_0x7bb3('0xc7')](_0x50a0f3);}})[_0x7bb3('0x30')](function(_0x3d6ad5){if(_0x3d6ad5){_0xed03ea=_0x3d6ad5[_0x7bb3('0x4a')];if(!_0x1d7e70[_0x7bb3('0x44')]['hasOwnProperty'](_0x7bb3('0x4c'))){_0x50a0f3['limit']=qs[_0x7bb3('0x4d')](_0x1d7e70[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x50a0f3[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x1d7e70[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x39368b['getSmsInteractions'](_0x50a0f3);}})[_0x7bb3('0x30')](function(_0x1883a8){if(_0x1883a8){return _0x1883a8?{'count':_0xed03ea,'rows':_0x1883a8}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x2a2718,null))[_0x7bb3('0x24')](handleError(_0x2a2718,null));};exports['getFaxInteractions']=function(_0x4793c7,_0x440d07,_0x10df4d){var _0x288cd0={};var _0x36ed40={};var _0x3b0c2a;var _0x40e04e;return db['User'][_0x7bb3('0xbb')]({'where':{'id':_0x4793c7[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x440d07,null))[_0x7bb3('0x30')](function(_0x12a33b){if(_0x12a33b){_0x3b0c2a=_0x12a33b;_0x36ed40[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db[_0x7bb3('0xc9')][_0x7bb3('0x3f')]);_0x36ed40[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x4793c7[_0x7bb3('0x44')]);_0x36ed40[_0x7bb3('0x46')]=_['intersection'](_0x36ed40['model'],_0x36ed40['query']);_0x288cd0[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x36ed40[_0x7bb3('0x40')],qs['fields'](_0x4793c7[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x288cd0[_0x7bb3('0x48')]=_0x288cd0['attributes']['length']?_0x288cd0[_0x7bb3('0x48')]:_0x36ed40['model'];_0x288cd0[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x4793c7[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x288cd0[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x4793c7['query'],_0x36ed40[_0x7bb3('0x46')]));if(_0x4793c7['query'][_0x7bb3('0x36')]){_0x288cd0['where']=_[_0x7bb3('0x55')](_0x288cd0[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x288cd0[_0x7bb3('0x48')],function(_0x36b628){var _0x17e0af={};_0x17e0af[_0x36b628]={'$like':'%'+_0x4793c7[_0x7bb3('0x44')]['filter']+'%'};return _0x17e0af;})});}_0x288cd0=_[_0x7bb3('0x55')]({},_0x288cd0,_0x4793c7[_0x7bb3('0xb3')]);return _0x3b0c2a['getFaxInteractions'](_0x288cd0);}})[_0x7bb3('0x30')](function(_0x3bf817){if(_0x3bf817){_0x40e04e=_0x3bf817[_0x7bb3('0x4a')];if(!_0x4793c7['query'][_0x7bb3('0x4b')]('nolimit')){_0x288cd0[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x4793c7[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x288cd0[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x4793c7['query'][_0x7bb3('0x4e')]);}return _0x3b0c2a[_0x7bb3('0xca')](_0x288cd0);}})['then'](function(_0xf35bb5){if(_0xf35bb5){return _0xf35bb5?{'count':_0x40e04e,'rows':_0xf35bb5}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x440d07,null))[_0x7bb3('0x24')](handleError(_0x440d07,null));};exports[_0x7bb3('0xcb')]=function(_0x5750f4,_0x38bf35,_0x250141){var _0x2b215a;var _0x53025a;var _0x6b68d8;return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x5750f4[_0x7bb3('0x5f')]['id'],'role':_0x7bb3('0x34')},'attributes':['id','name',_0x7bb3('0xcc'),_0x7bb3('0xcd'),_0x7bb3('0x39'),_0x7bb3('0x6e'),_0x7bb3('0x91')]})['then'](handleEntityNotFound(_0x38bf35,null))[_0x7bb3('0x30')](function(_0x5b2e00){if(_0x5b2e00){_0x2b215a=_0x5b2e00;if(_0x5750f4[_0x7bb3('0x61')]['interface']){_0x6b68d8=util[_0x7bb3('0xa2')](_0x7bb3('0xce'),_0x2b215a[_0x5750f4['body'][_0x7bb3('0x93')]]);}else if(_0x5750f4[_0x7bb3('0x61')][_0x7bb3('0xcf')]){_0x6b68d8=util[_0x7bb3('0xa2')](_0x7bb3('0xd0'),_0x5750f4[_0x7bb3('0x61')]['intrf']);}else{_0x6b68d8=util[_0x7bb3('0xa2')]('SIP/%s',_0x2b215a['name']);}socket['to'](util[_0x7bb3('0xa2')]('user:%s',_0x2b215a['name']))['emit']('user:forcelogout',{'ip':_0x5750f4[_0x7bb3('0xd1')]['x-forwarded-for']||_0x5750f4[_0x7bb3('0xd2')]['remoteAddress']||_0x5750f4[_0x7bb3('0xd3')]['remoteAddress']||_0x5750f4[_0x7bb3('0xd2')][_0x7bb3('0xd3')][_0x7bb3('0xd4')]});return db[_0x7bb3('0xa7')][_0x7bb3('0x31')]({'where':{'membername':_0x2b215a[_0x7bb3('0x3b')]},'individualHooks':!![]});}})['then'](function(_0x465bb){if(_0x2b215a){return _0x2b215a[_0x7bb3('0xd5')]({'raw':!![]});}})[_0x7bb3('0x30')](function(_0x3ee5a4){var _0x17d8b6=[];if(_0x3ee5a4){_0x53025a=_0x3ee5a4;if(_0x53025a[_0x7bb3('0x4a')]){for(var _0x2e81c4=0x0;_0x2e81c4<_0x53025a[_0x7bb3('0x4a')];_0x2e81c4++){_0x17d8b6[_0x7bb3('0xa1')]({'membername':_0x2b215a[_0x7bb3('0x3b')],'UserId':_0x2b215a['id'],'queue_name':_0x53025a[_0x2e81c4][_0x7bb3('0x3b')],'VoiceQueueId':_0x53025a[_0x2e81c4]['id'],'interface':_0x6b68d8,'paused':_0x2b215a['loginInPause']||![],'penalty':_0x53025a[_0x2e81c4][_0x7bb3('0xd6')]||0x0});}return BPromise[_0x7bb3('0xa4')](_0x17d8b6,function(_0x758027){return db[_0x7bb3('0xa7')]['upsert'](_0x758027);});}}})[_0x7bb3('0x30')](function(){return db[_0x7bb3('0xd7')][_0x7bb3('0xa0')]({'where':{'membername':_0x2b215a[_0x7bb3('0x3b')],'exitAt':null}});})[_0x7bb3('0x30')](function(_0x41e2e2){var _0x48e52e=[];_0x41e2e2[_0x7bb3('0xd8')](function(_0x188bd6){_0x48e52e[_0x7bb3('0xa1')](_0x188bd6['update']({'exitAt':moment()['format'](_0x7bb3('0xd9'))}));});return BPromise['all'](_0x48e52e);})[_0x7bb3('0x30')](function(){var _0x3dcf20=[];var _0x549e2d=[];var _0x45c733=utils['getChannels']();var _0x1e0913={'membername':_0x2b215a['name'],'interface':_0x6b68d8,'enterAt':moment()[_0x7bb3('0xa2')](_0x7bb3('0xd9')),'role':_0x2b215a[_0x7bb3('0x39')],'internal':_0x2b215a[_0x7bb3('0x6e')]};_0x45c733[_0x7bb3('0xd8')](function(_0x30c544){_0x3dcf20['push'](_[_0x7bb3('0x55')]({'channel':_0x30c544,'type':_0x7bb3('0xda'),'data1':_0x5750f4[_0x7bb3('0x61')][_0x7bb3('0xdb')],'data2':_0x6b68d8},_0x1e0913));if(_0x2b215a['loginInPause']){_0x549e2d[_0x7bb3('0xa1')](_[_0x7bb3('0x55')]({'channel':_0x30c544,'type':_0x7bb3('0xdc'),'data1':_0x7bb3('0xdd')},_0x1e0913));}});return db['MemberReport']['bulkCreate'](_0x3dcf20[_0x7bb3('0xde')](_0x549e2d),{'individualHooks':!![]});})[_0x7bb3('0x30')](function(){return _0x2b215a[_0x7bb3('0x2f')]({'online':!![],'lastLoginAt':moment()[_0x7bb3('0xa2')](_0x7bb3('0xd9')),'voicePause':_0x2b215a[_0x7bb3('0x91')]||![],'mailPause':_0x2b215a[_0x7bb3('0x91')]||![],'chatPause':_0x2b215a['loginInPause']||![],'faxPause':_0x2b215a[_0x7bb3('0x91')]||![],'smsPause':_0x2b215a[_0x7bb3('0x91')]||![],'openchannelPause':_0x2b215a[_0x7bb3('0x91')]||![],'pauseType':_0x2b215a[_0x7bb3('0x91')]?'LOGININPAUSE':null,'interface':_0x6b68d8,'lastPauseAt':moment()[_0x7bb3('0xa2')](_0x7bb3('0xd9'))});})[_0x7bb3('0x30')](respondWithResult(_0x38bf35,null))[_0x7bb3('0x24')](handleError(_0x38bf35,null));};exports[_0x7bb3('0xdf')]=function(_0x3c6a42,_0x29d967,_0x3aaf72){var _0x782030;return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x3c6a42[_0x7bb3('0x5f')]['id'],'role':_0x7bb3('0x34')},'attributes':['id','name','role']})[_0x7bb3('0x30')](handleEntityNotFound(_0x29d967,null))[_0x7bb3('0x30')](function(_0x1d086a){if(_0x1d086a){_0x782030=_0x1d086a;return db[_0x7bb3('0xa7')]['destroy']({'where':{'membername':_0x782030[_0x7bb3('0x3b')]},'individualHooks':!![]});}})[_0x7bb3('0x30')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x782030['name'],'exitAt':null}});})[_0x7bb3('0x30')](function(_0x2e1206){var _0x3f5cf1=[];_0x2e1206['forEach'](function(_0x3c0dca){_0x3f5cf1['push'](_0x3c0dca[_0x7bb3('0x2f')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x7bb3('0xe0')](_0x3f5cf1);})[_0x7bb3('0x30')](function(){return _0x782030[_0x7bb3('0x2f')]({'online':![],'lastLoginAt':null,'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'interface':null});})['then'](respondWithResult(_0x29d967,null))[_0x7bb3('0x24')](handleError(_0x29d967,null));};exports[_0x7bb3('0xe1')]=function(_0x55eeee,_0x4227ec,_0x3d3ec2){var _0x9446fc;return db[_0x7bb3('0xa7')][_0x7bb3('0x2f')]({'paused':0x1},{'where':{'UserId':_0x55eeee[_0x7bb3('0x5f')]['id']},'individualHooks':!![]})[_0x7bb3('0x30')](function(){return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x55eeee['params']['id'],'role':_0x7bb3('0x34')},'attributes':['id',_0x7bb3('0x3b'),_0x7bb3('0x39'),_0x7bb3('0x6e'),_0x7bb3('0x93')]});})['then'](handleEntityNotFound(_0x4227ec,null))[_0x7bb3('0x30')](function(_0x219cd8){if(_0x219cd8){_0x9446fc=_0x219cd8;return respondWithRpcPromise(_0x7bb3('0xe2'),'pause',{'id':_0x9446fc['id'],'name':_0x9446fc[_0x7bb3('0x3b')],'pause':!![]});}})[_0x7bb3('0x30')](function(){if(_0x9446fc){return db[_0x7bb3('0xd7')][_0x7bb3('0xa0')]({'where':{'membername':_0x9446fc[_0x7bb3('0x3b')],'type':_0x7bb3('0xdc'),'exitAt':null}});}})['then'](function(_0x172e3b){if(_0x172e3b[_0x7bb3('0x4a')]){var _0x51aa16=moment()[_0x7bb3('0xa2')](_0x7bb3('0xd9'));for(var _0x16b35f=0x0,_0x2da5e1=_0x172e3b['length'];_0x16b35f<_0x2da5e1;_0x16b35f++){_0x172e3b[_0x16b35f][_0x7bb3('0xe3')]({'exitAt':_0x51aa16});}}})['then'](function(){var _0x3d758f=[];var _0x223650=utils[_0x7bb3('0xe4')]();_0x223650[_0x7bb3('0xd8')](function(_0x811d0b){_0x3d758f[_0x7bb3('0xa1')]({'channel':_0x811d0b,'membername':_0x9446fc[_0x7bb3('0x3b')],'interface':_[_0x7bb3('0x6b')](_0x9446fc[_0x7bb3('0x93')])?util[_0x7bb3('0xa2')](_0x7bb3('0xd0'),_0x9446fc['name']):_0x9446fc[_0x7bb3('0x93')],'type':_0x7bb3('0xdc'),'enterAt':moment()[_0x7bb3('0xa2')](_0x7bb3('0xd9')),'data1':_0x55eeee[_0x7bb3('0x61')][_0x7bb3('0xe5')]||'DEFAULT\x20PAUSE','role':_0x9446fc[_0x7bb3('0x39')],'internal':_0x9446fc[_0x7bb3('0x6e')]});});return db[_0x7bb3('0xd7')][_0x7bb3('0x60')](_0x3d758f,{'individualHooks':!![]});})['then'](function(){return _0x9446fc[_0x7bb3('0x2f')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'pauseType':_0x55eeee[_0x7bb3('0x61')][_0x7bb3('0xe5')]||_0x7bb3('0xe6'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})[_0x7bb3('0x30')](respondWithResult(_0x4227ec,null))[_0x7bb3('0x24')](handleError(_0x4227ec,null));};exports[_0x7bb3('0xe7')]=function(_0xc456f5,_0x5464b5,_0xafa559){var _0x19f00f;return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0xc456f5[_0x7bb3('0x5f')]['id']},'attributes':['id',_0x7bb3('0x3b'),'role',_0x7bb3('0x92'),_0x7bb3('0xe8'),_0x7bb3('0xe9'),_0x7bb3('0xea'),_0x7bb3('0xeb'),_0x7bb3('0xec'),_0x7bb3('0xed'),_0x7bb3('0xee')]})[_0x7bb3('0x30')](handleEntityNotFound(_0x5464b5,null))['then'](function(_0x4a777f){if(_0x4a777f){_0x19f00f=_0x4a777f;if(_0xc456f5[_0x7bb3('0x61')][_0x7bb3('0x95')]&&!utils['isValidChannel'](_0xc456f5[_0x7bb3('0x61')]['channel'])){throw new db[(_0x7bb3('0x88'))][(_0x7bb3('0x89'))]('Unknown\x20channel');}switch(_0xc456f5[_0x7bb3('0x61')][_0x7bb3('0x95')]){case _0x7bb3('0x9e'):return respondWithRpcPromise('QueuePause',_0x7bb3('0xe7'),{'id':_0x19f00f['id'],'name':_0x19f00f[_0x7bb3('0x3b')],'pause':![]})['then'](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x19f00f['id']},'individualHooks':!![]});})['then'](function(){return db[_0x7bb3('0xd7')][_0x7bb3('0x3a')]({'where':{'channel':_0xc456f5[_0x7bb3('0x61')][_0x7bb3('0x95')],'membername':_0x19f00f[_0x7bb3('0x3b')],'type':_0x7bb3('0xdc'),'exitAt':null}});})['then'](function(_0x2710fb){if(_0x2710fb){return _0x2710fb[_0x7bb3('0x2f')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x7bb3('0x30')](function(){return _0x19f00f['update']({'voicePause':![]});});case _0x7bb3('0xef'):case _0x7bb3('0xf0'):case _0x7bb3('0xf1'):case _0x7bb3('0xf2'):case _0x7bb3('0xf3'):return db[_0x7bb3('0xd7')][_0x7bb3('0x3a')]({'where':{'channel':_0xc456f5[_0x7bb3('0x61')][_0x7bb3('0x95')],'membername':_0x19f00f[_0x7bb3('0x3b')],'type':_0x7bb3('0xdc'),'exitAt':null}})[_0x7bb3('0x30')](function(_0x1ee40b){if(_0x1ee40b){return _0x1ee40b['update']({'exitAt':moment()[_0x7bb3('0xa2')](_0x7bb3('0xd9')),'data2':_0x7bb3('0xf4')},{'individualHooks':!![]});}return null;})[_0x7bb3('0x30')](function(){var _0xd87633={};_[_0x7bb3('0xf5')](_0xd87633,util['format'](_0x7bb3('0xf6'),_0xc456f5['body'][_0x7bb3('0x95')],_0x7bb3('0xf7')),![]);return _0x19f00f[_0x7bb3('0x2f')](_0xd87633);});default:return respondWithRpcPromise('QueuePause','unpause',{'id':_0x19f00f['id'],'name':_0x19f00f[_0x7bb3('0x3b')],'pause':![]})[_0x7bb3('0x30')](function(){return db[_0x7bb3('0xa7')]['update']({'paused':0x0},{'where':{'UserId':_0x19f00f['id']}});})[_0x7bb3('0x30')](function(){return db[_0x7bb3('0xd7')][_0x7bb3('0xa0')]({'where':{'membername':_0x19f00f[_0x7bb3('0x3b')],'type':_0x7bb3('0xdc'),'exitAt':null}});})['then'](function(_0x2345c3){var _0x22a5cd=[];_0x2345c3[_0x7bb3('0xd8')](function(_0x50226c){_0x22a5cd[_0x7bb3('0xa1')](_0x50226c[_0x7bb3('0x2f')]({'exitAt':moment()['format'](_0x7bb3('0xd9')),'data2':_0x7bb3('0xf4')}));});return BPromise['all'](_0x22a5cd);})[_0x7bb3('0x30')](function(){return _0x19f00f[_0x7bb3('0x2f')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});});}}})[_0x7bb3('0x30')](respondWithResult(_0x5464b5,null))[_0x7bb3('0x24')](handleError(_0x5464b5,null));};exports[_0x7bb3('0xf8')]=function(_0x41b2dd,_0x4384a3,_0x579a17){var _0x3d59a4={};var _0x2a52ca={};var _0x8fb4a7;var _0x45497f;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x41b2dd['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x4384a3,null))[_0x7bb3('0x30')](function(_0x5e08ae){if(_0x5e08ae){_0x8fb4a7=_0x5e08ae;_0x2a52ca[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db['Team']['rawAttributes']);_0x2a52ca['query']=_[_0x7bb3('0x41')](_0x41b2dd[_0x7bb3('0x44')]);_0x2a52ca[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x2a52ca[_0x7bb3('0x40')],_0x2a52ca[_0x7bb3('0x44')]);_0x3d59a4[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x2a52ca['model'],qs[_0x7bb3('0x49')](_0x41b2dd[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x3d59a4[_0x7bb3('0x48')]=_0x3d59a4[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x3d59a4['attributes']:_0x2a52ca['model'];_0x3d59a4[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x41b2dd[_0x7bb3('0x44')]['sort']);_0x3d59a4[_0x7bb3('0x51')]=qs['filters'](_[_0x7bb3('0x52')](_0x41b2dd[_0x7bb3('0x44')],_0x2a52ca[_0x7bb3('0x46')]));if(_0x41b2dd[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x3d59a4[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x3d59a4[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x3d59a4[_0x7bb3('0x48')],function(_0x3ae3a8){var _0x4bb104={};_0x4bb104[_0x3ae3a8]={'$like':'%'+_0x41b2dd[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x4bb104;})});}_0x3d59a4=_[_0x7bb3('0x55')]({},_0x3d59a4,_0x41b2dd[_0x7bb3('0xb3')]);return _0x8fb4a7['getTeams'](_0x3d59a4);}})['then'](function(_0x5d79bc){if(_0x5d79bc){_0x45497f=_0x5d79bc[_0x7bb3('0x4a')];if(!_0x41b2dd[_0x7bb3('0x44')][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x3d59a4[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x41b2dd[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x3d59a4['offset']=qs[_0x7bb3('0x4e')](_0x41b2dd['query'][_0x7bb3('0x4e')]);}return _0x8fb4a7[_0x7bb3('0xf8')](_0x3d59a4);}})[_0x7bb3('0x30')](function(_0x3858f2){if(_0x3858f2){return _0x3858f2?{'count':_0x45497f,'rows':_0x3858f2}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x4384a3,null))[_0x7bb3('0x24')](handleError(_0x4384a3,null));};exports[_0x7bb3('0xf9')]=function(_0x3212e6,_0x47bd13,_0x5c1431){return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x3212e6[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x47bd13,null))['then'](function(_0x26e173){if(_0x26e173){return _0x26e173[_0x7bb3('0xf9')](_0x3212e6[_0x7bb3('0x61')]['ids'],_['omit'](_0x3212e6[_0x7bb3('0x61')],[_0x7bb3('0x99'),'id'])||{});}})[_0x7bb3('0x30')](respondWithResult(_0x47bd13,null))[_0x7bb3('0x24')](handleError(_0x47bd13,null));};exports['removeTeams']=function(_0x1a0f20,_0x50d1cb,_0x57f0bd){var _0x17b22c;return db['User']['find']({'where':{'id':_0x1a0f20[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x50d1cb,null))['then'](function(_0x23454d){if(_0x23454d){return _0x23454d[_0x7bb3('0xfa')](_0x1a0f20[_0x7bb3('0x44')]['ids']);}})['then'](respondWithStatusCode(_0x50d1cb,null))[_0x7bb3('0x24')](handleError(_0x50d1cb,null));};exports[_0x7bb3('0xfb')]=function(_0x2b6ba6,_0x46934b,_0x584105){var _0x4eeccc={};var _0x3524a6={};var _0x9e1195;var _0x564daf;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x2b6ba6[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x46934b,null))[_0x7bb3('0x30')](function(_0xad97f6){if(_0xad97f6){_0x9e1195=_0xad97f6;_0x3524a6[_0x7bb3('0x40')]=_['keys'](db[_0x7bb3('0xb4')][_0x7bb3('0x3f')]);_0x3524a6[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x2b6ba6['query']);_0x3524a6[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x3524a6[_0x7bb3('0x40')],_0x3524a6[_0x7bb3('0x44')]);_0x4eeccc[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x3524a6[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x2b6ba6[_0x7bb3('0x44')]['fields']));_0x4eeccc[_0x7bb3('0x48')]=_0x4eeccc['attributes']['length']?_0x4eeccc[_0x7bb3('0x48')]:_0x3524a6[_0x7bb3('0x40')];_0x4eeccc[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x2b6ba6[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x4eeccc[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x2b6ba6[_0x7bb3('0x44')],_0x3524a6['filters']));if(_0x2b6ba6[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x4eeccc[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x4eeccc['where'],{'$or':_['map'](_0x4eeccc[_0x7bb3('0x48')],function(_0x3c9fec){var _0x5b6661={};_0x5b6661[_0x3c9fec]={'$like':'%'+_0x2b6ba6[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x5b6661;})});}_0x4eeccc=_[_0x7bb3('0x55')]({},_0x4eeccc,_0x2b6ba6[_0x7bb3('0xb3')]);return _0x9e1195[_0x7bb3('0xfb')](_0x4eeccc);}})[_0x7bb3('0x30')](function(_0x4c5505){if(_0x4c5505){_0x564daf=_0x4c5505['length'];if(!_0x2b6ba6['query'][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x4eeccc[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x2b6ba6[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x4eeccc['offset']=qs[_0x7bb3('0x4e')](_0x2b6ba6[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x9e1195[_0x7bb3('0xfb')](_0x4eeccc);}})[_0x7bb3('0x30')](function(_0x51fb1b){if(_0x51fb1b){return _0x51fb1b?{'count':_0x564daf,'rows':_0x51fb1b}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x46934b,null))[_0x7bb3('0x24')](handleError(_0x46934b,null));};exports[_0x7bb3('0xfc')]=function(_0x446e7e,_0x4b5394,_0x50a993){var _0x558050={};var _0x1a2359={};var _0x3d70e0;var _0x33d55a;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x446e7e[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x4b5394,null))[_0x7bb3('0x30')](function(_0x5752ff){if(_0x5752ff){_0x3d70e0=_0x5752ff;_0x1a2359[_0x7bb3('0x40')]=_['keys'](db[_0x7bb3('0x3e')]['rawAttributes']);_0x1a2359[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x446e7e[_0x7bb3('0x44')]);_0x1a2359[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x1a2359[_0x7bb3('0x40')],_0x1a2359[_0x7bb3('0x44')]);_0x558050[_0x7bb3('0x48')]=_['intersection'](_0x1a2359[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x446e7e['query']['fields']));_0x558050[_0x7bb3('0x48')]=_0x558050[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x558050[_0x7bb3('0x48')]:_0x1a2359[_0x7bb3('0x40')];_0x558050[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x446e7e[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x558050['where']=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x446e7e[_0x7bb3('0x44')],_0x1a2359[_0x7bb3('0x46')]));if(_0x446e7e[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x558050[_0x7bb3('0x51')]=_['merge'](_0x558050[_0x7bb3('0x51')],{'$or':_['map'](_0x558050['attributes'],function(_0x46899d){var _0x878a4c={};_0x878a4c[_0x46899d]={'$like':'%'+_0x446e7e[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x878a4c;})});}_0x558050[_0x7bb3('0x40')]=db[_0x7bb3('0x3e')];_0x558050['as']=_0x7bb3('0x33');_0x558050=_[_0x7bb3('0x55')]({},_0x558050,_0x446e7e[_0x7bb3('0xb3')]);return _0x3d70e0[_0x7bb3('0xd5')]({'include':[_0x558050]});}})['then'](function(_0x54cfe9){if(_0x54cfe9){var _0xe9013a={},_0x3ff709=[],_0x4caf28=0x0;for(var _0x38fa07=0x0;_0x38fa07<_0x54cfe9[_0x7bb3('0x4a')];_0x38fa07+=0x1){for(var _0x22f2c2=0x0,_0x19da21;_0x22f2c2<_0x54cfe9[_0x38fa07][_0x7bb3('0x33')][_0x7bb3('0x4a')];_0x22f2c2+=0x1){_0x19da21=_0x54cfe9[_0x38fa07][_0x7bb3('0x33')][_0x22f2c2]['get']({'plain':!![]});_0xe9013a[_0x19da21['id']]=_0x19da21;}}_0xe9013a=_['values'](_0xe9013a);for(var _0x14599c=qs[_0x7bb3('0x4e')](_0x446e7e[_0x7bb3('0x44')]['offset']);_0x14599c<_0xe9013a[_0x7bb3('0x4a')]&&_0x3ff709['length']<qs['limit'](_0x446e7e[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x14599c+=0x1){if(_0xe9013a[_0x14599c]){_0x3ff709['push'](_0xe9013a[_0x14599c]);}}return{'count':_0xe9013a[_0x7bb3('0x4a')],'rows':_0x3ff709};}})['then'](respondWithResult(_0x4b5394,null))[_0x7bb3('0x24')](handleError(_0x4b5394,null));};exports[_0x7bb3('0x31')]=function(_0x348619,_0x23dc46){if(_0x348619[_0x7bb3('0x67')]['id']==_0x348619['params']['id']){return _0x23dc46[_0x7bb3('0x28')](0x1f4)[_0x7bb3('0xfd')]({'message':_0x7bb3('0xfe')});}return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0x348619[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x23dc46,null))[_0x7bb3('0x30')](removeEntity(_0x23dc46,null))[_0x7bb3('0x24')](handleError(_0x23dc46,null));};exports['addChatInteractions']=function(_0x377db8,_0x3796f9,_0x305741){return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x377db8[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x3796f9,null))[_0x7bb3('0x30')](function(_0x1e1ed4){if(_0x1e1ed4){return _0x1e1ed4[_0x7bb3('0xff')](_0x377db8[_0x7bb3('0x61')][_0x7bb3('0x99')],_[_0x7bb3('0x100')](_0x377db8['body'],[_0x7bb3('0x99'),'id'])||{})['spread'](function(){for(var _0x5550e0=0x0;_0x5550e0<_0x377db8['body']['ids'][_0x7bb3('0x4a')];_0x5550e0+=0x1){socket[_0x7bb3('0x9c')](_0x7bb3('0x101'),{'ChatInteractionId':Number(_0x377db8[_0x7bb3('0x61')][_0x7bb3('0x99')][_0x5550e0]),'UserId':Number(_0x377db8['params']['id'])});}return _0x377db8[_0x7bb3('0x61')][_0x7bb3('0x99')];});}})['then'](respondWithResult(_0x3796f9,null))[_0x7bb3('0x24')](handleError(_0x3796f9,null));};exports[_0x7bb3('0x102')]=function(_0x5c3dd6,_0x2f5f51,_0x1169e5){var _0x10ad3f;return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x5c3dd6['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x2f5f51,null))[_0x7bb3('0x30')](function(_0x12834f){if(_0x12834f){return _0x12834f[_0x7bb3('0x102')](_0x5c3dd6[_0x7bb3('0x44')][_0x7bb3('0x99')])[_0x7bb3('0x30')](function(_0x4f1a3e){if(_[_0x7bb3('0x103')](_0x5c3dd6[_0x7bb3('0x44')][_0x7bb3('0x99')])){for(var _0x189aa0=0x0;_0x189aa0<_0x5c3dd6[_0x7bb3('0x44')][_0x7bb3('0x99')][_0x7bb3('0x4a')];_0x189aa0+=0x1){socket[_0x7bb3('0x9c')](_0x7bb3('0x104'),{'ChatInteractionId':Number(_0x5c3dd6[_0x7bb3('0x44')][_0x7bb3('0x99')][_0x189aa0]),'UserId':Number(_0x5c3dd6[_0x7bb3('0x5f')]['id'])});}}else{socket[_0x7bb3('0x9c')](_0x7bb3('0x104'),{'ChatInteractionId':Number(_0x5c3dd6['query'][_0x7bb3('0x99')]),'UserId':Number(_0x5c3dd6[_0x7bb3('0x5f')]['id'])});}});}})[_0x7bb3('0x30')](respondWithStatusCode(_0x2f5f51,null))[_0x7bb3('0x24')](handleError(_0x2f5f51,null));};exports[_0x7bb3('0x105')]=function(_0x5026be,_0x1657a4,_0x4d3f99){return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x5026be['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x1657a4,null))[_0x7bb3('0x30')](function(_0x50bc31){if(_0x50bc31){return _0x50bc31[_0x7bb3('0x105')](_0x5026be['body']['ids'],_[_0x7bb3('0x100')](_0x5026be[_0x7bb3('0x61')],[_0x7bb3('0x99'),'id'])||{})['spread'](function(){for(var _0x16a26f=0x0;_0x16a26f<_0x5026be[_0x7bb3('0x61')][_0x7bb3('0x99')][_0x7bb3('0x4a')];_0x16a26f+=0x1){socket[_0x7bb3('0x9c')](_0x7bb3('0x106'),{'MailInteractionId':Number(_0x5026be['body'][_0x7bb3('0x99')][_0x16a26f]),'UserId':Number(_0x5026be['params']['id'])});}return _0x5026be[_0x7bb3('0x61')][_0x7bb3('0x99')];});}})[_0x7bb3('0x30')](respondWithResult(_0x1657a4,null))[_0x7bb3('0x24')](handleError(_0x1657a4,null));};exports['removeMailInteractions']=function(_0x51afcc,_0x3e418b,_0x56bad3){var _0x548147;return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0x51afcc[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x3e418b,null))[_0x7bb3('0x30')](function(_0x29d7e8){if(_0x29d7e8){return _0x29d7e8[_0x7bb3('0x107')](_0x51afcc['query'][_0x7bb3('0x99')])[_0x7bb3('0x30')](function(_0x4f52d9){if(_[_0x7bb3('0x103')](_0x51afcc[_0x7bb3('0x44')][_0x7bb3('0x99')])){for(var _0x539b86=0x0;_0x539b86<_0x51afcc[_0x7bb3('0x44')]['ids'][_0x7bb3('0x4a')];_0x539b86+=0x1){socket[_0x7bb3('0x9c')](_0x7bb3('0x108'),{'MailInteractionId':Number(_0x51afcc[_0x7bb3('0x44')][_0x7bb3('0x99')][_0x539b86]),'UserId':Number(_0x51afcc['params']['id'])});}}else{socket['emit'](_0x7bb3('0x108'),{'MailInteractionId':Number(_0x51afcc['query'][_0x7bb3('0x99')]),'UserId':Number(_0x51afcc[_0x7bb3('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0x3e418b,null))[_0x7bb3('0x24')](handleError(_0x3e418b,null));};exports[_0x7bb3('0x109')]=function(_0x331a1b,_0x323be2,_0x1576ea){return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0x331a1b['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x323be2,null))[_0x7bb3('0x30')](function(_0x145c61){if(_0x145c61){return _0x145c61['addFaxInteractions'](_0x331a1b[_0x7bb3('0x61')][_0x7bb3('0x99')],_[_0x7bb3('0x100')](_0x331a1b['body'],['ids','id'])||{})[_0x7bb3('0x9a')](function(){for(var _0x319f76=0x0;_0x319f76<_0x331a1b[_0x7bb3('0x61')][_0x7bb3('0x99')][_0x7bb3('0x4a')];_0x319f76+=0x1){socket[_0x7bb3('0x9c')](_0x7bb3('0x10a'),{'FaxInteractionId':Number(_0x331a1b['body'][_0x7bb3('0x99')][_0x319f76]),'UserId':Number(_0x331a1b[_0x7bb3('0x5f')]['id'])});}return _0x331a1b[_0x7bb3('0x61')]['ids'];});}})[_0x7bb3('0x30')](respondWithResult(_0x323be2,null))['catch'](handleError(_0x323be2,null));};exports[_0x7bb3('0x10b')]=function(_0x4b4325,_0x28119e,_0x7bcd28){var _0xd9d704;return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x4b4325['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x28119e,null))[_0x7bb3('0x30')](function(_0xd08fa4){if(_0xd08fa4){return _0xd08fa4[_0x7bb3('0x10b')](_0x4b4325['query'][_0x7bb3('0x99')])[_0x7bb3('0x30')](function(_0x5c2486){if(_[_0x7bb3('0x103')](_0x4b4325[_0x7bb3('0x44')][_0x7bb3('0x99')])){for(var _0x2ba775=0x0;_0x2ba775<_0x4b4325[_0x7bb3('0x44')][_0x7bb3('0x99')][_0x7bb3('0x4a')];_0x2ba775+=0x1){socket[_0x7bb3('0x9c')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x4b4325[_0x7bb3('0x44')][_0x7bb3('0x99')][_0x2ba775]),'UserId':Number(_0x4b4325[_0x7bb3('0x5f')]['id'])});}}else{socket[_0x7bb3('0x9c')](_0x7bb3('0x10c'),{'FaxInteractionId':Number(_0x4b4325[_0x7bb3('0x44')][_0x7bb3('0x99')]),'UserId':Number(_0x4b4325[_0x7bb3('0x5f')]['id'])});}});}})[_0x7bb3('0x30')](respondWithStatusCode(_0x28119e,null))[_0x7bb3('0x24')](handleError(_0x28119e,null));};exports['addSmsInteractions']=function(_0x1f492b,_0x401ed9,_0x132598){return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x1f492b[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x401ed9,null))['then'](function(_0x1e85b7){if(_0x1e85b7){return _0x1e85b7[_0x7bb3('0x10d')](_0x1f492b[_0x7bb3('0x61')]['ids'],_[_0x7bb3('0x100')](_0x1f492b['body'],[_0x7bb3('0x99'),'id'])||{})[_0x7bb3('0x9a')](function(){for(var _0x35e59c=0x0;_0x35e59c<_0x1f492b[_0x7bb3('0x61')][_0x7bb3('0x99')]['length'];_0x35e59c+=0x1){socket[_0x7bb3('0x9c')](_0x7bb3('0x10e'),{'SmsInteractionId':Number(_0x1f492b['body']['ids'][_0x35e59c]),'UserId':Number(_0x1f492b[_0x7bb3('0x5f')]['id'])});}return _0x1f492b['body'][_0x7bb3('0x99')];});}})[_0x7bb3('0x30')](respondWithResult(_0x401ed9,null))[_0x7bb3('0x24')](handleError(_0x401ed9,null));};exports['removeSmsInteractions']=function(_0x564373,_0xde2e5e,_0x50e23d){var _0x270d89;return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0x564373['params']['id']}})['then'](handleEntityNotFound(_0xde2e5e,null))[_0x7bb3('0x30')](function(_0x2a145c){if(_0x2a145c){return _0x2a145c[_0x7bb3('0x10f')](_0x564373['query'][_0x7bb3('0x99')])[_0x7bb3('0x30')](function(_0x200ad6){if(_[_0x7bb3('0x103')](_0x564373['query']['ids'])){for(var _0x4d2fcf=0x0;_0x4d2fcf<_0x564373[_0x7bb3('0x44')][_0x7bb3('0x99')][_0x7bb3('0x4a')];_0x4d2fcf+=0x1){socket[_0x7bb3('0x9c')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x564373['query'][_0x7bb3('0x99')][_0x4d2fcf]),'UserId':Number(_0x564373[_0x7bb3('0x5f')]['id'])});}}else{socket[_0x7bb3('0x9c')](_0x7bb3('0x110'),{'SmsInteractionId':Number(_0x564373[_0x7bb3('0x44')][_0x7bb3('0x99')]),'UserId':Number(_0x564373[_0x7bb3('0x5f')]['id'])});}});}})[_0x7bb3('0x30')](respondWithStatusCode(_0xde2e5e,null))[_0x7bb3('0x24')](handleError(_0xde2e5e,null));};exports['addOpenchannelInteractions']=function(_0x5f52d1,_0x575cbc,_0x351c83){return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0x5f52d1[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x575cbc,null))['then'](function(_0x5a64e5){if(_0x5a64e5){return _0x5a64e5[_0x7bb3('0x111')](_0x5f52d1[_0x7bb3('0x61')][_0x7bb3('0x99')],_[_0x7bb3('0x100')](_0x5f52d1[_0x7bb3('0x61')],[_0x7bb3('0x99'),'id'])||{})[_0x7bb3('0x9a')](function(){for(var _0xff5cfa=0x0;_0xff5cfa<_0x5f52d1[_0x7bb3('0x61')][_0x7bb3('0x99')][_0x7bb3('0x4a')];_0xff5cfa+=0x1){socket[_0x7bb3('0x9c')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x5f52d1[_0x7bb3('0x61')][_0x7bb3('0x99')][_0xff5cfa]),'UserId':Number(_0x5f52d1['params']['id'])});}return _0x5f52d1[_0x7bb3('0x61')][_0x7bb3('0x99')];});}})[_0x7bb3('0x30')](respondWithResult(_0x575cbc,null))[_0x7bb3('0x24')](handleError(_0x575cbc,null));};exports[_0x7bb3('0x112')]=function(_0x1f4c14,_0x5e5445,_0x1c6319){var _0x272527;return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x1f4c14['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x5e5445,null))['then'](function(_0x21f54b){if(_0x21f54b){return _0x21f54b[_0x7bb3('0x112')](_0x1f4c14[_0x7bb3('0x44')][_0x7bb3('0x99')])[_0x7bb3('0x30')](function(_0xe1d659){if(_[_0x7bb3('0x103')](_0x1f4c14[_0x7bb3('0x44')][_0x7bb3('0x99')])){for(var _0x4dae32=0x0;_0x4dae32<_0x1f4c14[_0x7bb3('0x44')][_0x7bb3('0x99')][_0x7bb3('0x4a')];_0x4dae32+=0x1){socket['emit'](_0x7bb3('0x113'),{'OpenchannelInteractionId':Number(_0x1f4c14[_0x7bb3('0x44')][_0x7bb3('0x99')][_0x4dae32]),'UserId':Number(_0x1f4c14[_0x7bb3('0x5f')]['id'])});}}else{socket[_0x7bb3('0x9c')](_0x7bb3('0x113'),{'OpenchannelInteractionId':Number(_0x1f4c14['query'][_0x7bb3('0x99')]),'UserId':Number(_0x1f4c14[_0x7bb3('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0x5e5445,null))[_0x7bb3('0x24')](handleError(_0x5e5445,null));};exports['getVoicePrefixes']=function(_0x442ddd,_0x4fed5b,_0x3eb332){var _0x24168a={};var _0x5abe6c={};var _0x3a74c1;var _0x2d3194;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x442ddd[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x4fed5b,null))[_0x7bb3('0x30')](function(_0x19cf14){if(_0x19cf14){_0x3a74c1=_0x19cf14;_0x5abe6c[_0x7bb3('0x40')]=_['keys'](db[_0x7bb3('0x114')][_0x7bb3('0x3f')]);_0x5abe6c['query']=_[_0x7bb3('0x41')](_0x442ddd[_0x7bb3('0x44')]);_0x5abe6c[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x5abe6c[_0x7bb3('0x40')],_0x5abe6c['query']);_0x24168a[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x5abe6c[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x442ddd['query'][_0x7bb3('0x49')]));_0x24168a['attributes']=_0x24168a[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x24168a['attributes']:_0x5abe6c[_0x7bb3('0x40')];_0x24168a['order']=qs[_0x7bb3('0x50')](_0x442ddd['query']['sort']);_0x24168a[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x442ddd[_0x7bb3('0x44')],_0x5abe6c['filters']));if(_0x442ddd[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x24168a[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x24168a['where'],{'$or':_['map'](_0x24168a[_0x7bb3('0x48')],function(_0x305323){var _0x784afc={};_0x784afc[_0x305323]={'$like':'%'+_0x442ddd[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x784afc;})});}_0x24168a=_[_0x7bb3('0x55')]({},_0x24168a,_0x442ddd[_0x7bb3('0xb3')]);return _0x3a74c1[_0x7bb3('0x115')](_0x24168a);}})['then'](function(_0x2b0c70){if(_0x2b0c70){_0x2d3194=_0x2b0c70[_0x7bb3('0x4a')];if(!_0x442ddd[_0x7bb3('0x44')][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x24168a['limit']=qs[_0x7bb3('0x4d')](_0x442ddd[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x24168a[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x442ddd[_0x7bb3('0x44')]['offset']);}return _0x3a74c1[_0x7bb3('0x115')](_0x24168a);}})[_0x7bb3('0x30')](function(_0x2f3aa1){if(_0x2f3aa1){return _0x2f3aa1?{'count':_0x2d3194,'rows':_0x2f3aa1}:null;}})['then'](respondWithResult(_0x4fed5b,null))['catch'](handleError(_0x4fed5b,null));};exports[_0x7bb3('0x116')]=function(_0x32146f,_0x6b8861,_0x5412e9){var _0x5665ed={};var _0x3fa01e={};var _0x15bc89;var _0x40f1d4;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0x32146f[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x6b8861,null))[_0x7bb3('0x30')](function(_0x41947b){if(_0x41947b){_0x15bc89=_0x41947b;_0x3fa01e[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db[_0x7bb3('0x117')][_0x7bb3('0x3f')]);_0x3fa01e[_0x7bb3('0x44')]=_['keys'](_0x32146f[_0x7bb3('0x44')]);_0x3fa01e['filters']=_[_0x7bb3('0x47')](_0x3fa01e[_0x7bb3('0x40')],_0x3fa01e['query']);_0x5665ed[_0x7bb3('0x48')]=_['intersection'](_0x3fa01e['model'],qs[_0x7bb3('0x49')](_0x32146f['query'][_0x7bb3('0x49')]));_0x5665ed[_0x7bb3('0x48')]=_0x5665ed[_0x7bb3('0x48')]['length']?_0x5665ed[_0x7bb3('0x48')]:_0x3fa01e[_0x7bb3('0x40')];_0x5665ed[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x32146f['query']['sort']);_0x5665ed[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_['pick'](_0x32146f[_0x7bb3('0x44')],_0x3fa01e[_0x7bb3('0x46')]));if(_0x32146f[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x5665ed[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x5665ed[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x5665ed[_0x7bb3('0x48')],function(_0x2d64f4){var _0x4243cd={};_0x4243cd[_0x2d64f4]={'$like':'%'+_0x32146f[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x4243cd;})});}_0x5665ed=_['merge']({},_0x5665ed,_0x32146f[_0x7bb3('0xb3')]);return _0x15bc89[_0x7bb3('0x116')](_0x5665ed);}})['then'](function(_0x2c2c56){if(_0x2c2c56){_0x40f1d4=_0x2c2c56[_0x7bb3('0x4a')];if(!_0x32146f[_0x7bb3('0x44')][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x5665ed[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x32146f[_0x7bb3('0x44')]['limit']);_0x5665ed[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x32146f[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x15bc89['getFaxAccounts'](_0x5665ed);}})[_0x7bb3('0x30')](function(_0x3f44e4){if(_0x3f44e4){return _0x3f44e4?{'count':_0x40f1d4,'rows':_0x3f44e4}:null;}})['then'](respondWithResult(_0x6b8861,null))[_0x7bb3('0x24')](handleError(_0x6b8861,null));};exports[_0x7bb3('0x118')]=function(_0xf7497,_0xfe0448,_0x4330ee){return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0xf7497['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0xfe0448,null))[_0x7bb3('0x30')](function(_0x7ca52e){if(_0x7ca52e){return _0x7ca52e['addFaxAccounts'](_0xf7497['body']['ids'],_[_0x7bb3('0x100')](_0xf7497[_0x7bb3('0x61')],['ids','id'])||{});}})[_0x7bb3('0x30')](respondWithResult(_0xfe0448,null))[_0x7bb3('0x24')](handleError(_0xfe0448,null));};exports[_0x7bb3('0x119')]=function(_0x5cc3aa,_0x7865e4,_0x30c9d2){var _0x376256;return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x5cc3aa['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x7865e4,null))[_0x7bb3('0x30')](function(_0x56072c){if(_0x56072c){return _0x56072c[_0x7bb3('0x119')](_0x5cc3aa[_0x7bb3('0x44')][_0x7bb3('0x99')]);}})[_0x7bb3('0x30')](respondWithStatusCode(_0x7865e4,null))[_0x7bb3('0x24')](handleError(_0x7865e4,null));};exports[_0x7bb3('0x11a')]=function(_0x418239,_0x234d51,_0x4318a1){var _0x3b59b8={};var _0x93a9b3={};var _0x30e2c8;var _0x2f53a4;return db[_0x7bb3('0x3e')]['findOne']({'where':{'id':_0x418239['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x234d51,null))[_0x7bb3('0x30')](function(_0x48df57){if(_0x48df57){_0x30e2c8=_0x48df57;_0x93a9b3['model']=_[_0x7bb3('0x41')](db['MailAccount'][_0x7bb3('0x3f')]);_0x93a9b3[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x418239['query']);_0x93a9b3['filters']=_[_0x7bb3('0x47')](_0x93a9b3[_0x7bb3('0x40')],_0x93a9b3[_0x7bb3('0x44')]);_0x3b59b8['attributes']=_['intersection'](_0x93a9b3[_0x7bb3('0x40')],qs['fields'](_0x418239[_0x7bb3('0x44')]['fields']));_0x3b59b8[_0x7bb3('0x48')]=_0x3b59b8[_0x7bb3('0x48')]['length']?_0x3b59b8['attributes']:_0x93a9b3[_0x7bb3('0x40')];_0x3b59b8[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x418239['query'][_0x7bb3('0x50')]);_0x3b59b8[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x418239[_0x7bb3('0x44')],_0x93a9b3[_0x7bb3('0x46')]));if(_0x418239[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x3b59b8[_0x7bb3('0x51')]=_['merge'](_0x3b59b8['where'],{'$or':_[_0x7bb3('0x56')](_0x3b59b8[_0x7bb3('0x48')],function(_0x2756da){var _0x57664b={};_0x57664b[_0x2756da]={'$like':'%'+_0x418239['query'][_0x7bb3('0x36')]+'%'};return _0x57664b;})});}_0x3b59b8=_[_0x7bb3('0x55')]({},_0x3b59b8,_0x418239[_0x7bb3('0xb3')]);return _0x30e2c8[_0x7bb3('0x11a')](_0x3b59b8);}})[_0x7bb3('0x30')](function(_0x16849b){if(_0x16849b){_0x2f53a4=_0x16849b[_0x7bb3('0x4a')];if(!_0x418239[_0x7bb3('0x44')][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x3b59b8['limit']=qs[_0x7bb3('0x4d')](_0x418239[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x3b59b8[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x418239[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x30e2c8[_0x7bb3('0x11a')](_0x3b59b8);}})[_0x7bb3('0x30')](function(_0x15646f){if(_0x15646f){return _0x15646f?{'count':_0x2f53a4,'rows':_0x15646f}:null;}})[_0x7bb3('0x30')](respondWithResult(_0x234d51,null))[_0x7bb3('0x24')](handleError(_0x234d51,null));};exports[_0x7bb3('0x11b')]=function(_0x405aa6,_0x5ef638,_0x593046){return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x405aa6[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x5ef638,null))['then'](function(_0xbf4e2f){if(_0xbf4e2f){return _0xbf4e2f[_0x7bb3('0x11b')](_0x405aa6[_0x7bb3('0x61')][_0x7bb3('0x99')],_[_0x7bb3('0x100')](_0x405aa6[_0x7bb3('0x61')],[_0x7bb3('0x99'),'id'])||{});}})[_0x7bb3('0x30')](respondWithResult(_0x5ef638,null))['catch'](handleError(_0x5ef638,null));};exports[_0x7bb3('0x11c')]=function(_0x1669cc,_0x2d5a30,_0x4a3dca){var _0x28ea11;return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0x1669cc[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0x2d5a30,null))['then'](function(_0x4ab93e){if(_0x4ab93e){return _0x4ab93e[_0x7bb3('0x11c')](_0x1669cc[_0x7bb3('0x44')][_0x7bb3('0x99')]);}})['then'](respondWithStatusCode(_0x2d5a30,null))[_0x7bb3('0x24')](handleError(_0x2d5a30,null));};exports[_0x7bb3('0x11d')]=function(_0x21645a,_0xa3a4ab,_0x2c4d96){var _0x186123={};var _0x121676={};var _0x225c57;var _0x356552;return db[_0x7bb3('0x3e')]['findOne']({'where':{'id':_0x21645a['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0xa3a4ab,null))['then'](function(_0x24aa5f){if(_0x24aa5f){_0x225c57=_0x24aa5f;_0x121676[_0x7bb3('0x40')]=_['keys'](db[_0x7bb3('0x11e')]['rawAttributes']);_0x121676[_0x7bb3('0x44')]=_['keys'](_0x21645a[_0x7bb3('0x44')]);_0x121676[_0x7bb3('0x46')]=_['intersection'](_0x121676['model'],_0x121676[_0x7bb3('0x44')]);_0x186123['attributes']=_[_0x7bb3('0x47')](_0x121676[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x21645a[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x186123['attributes']=_0x186123[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x186123[_0x7bb3('0x48')]:_0x121676[_0x7bb3('0x40')];_0x186123[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x21645a['query'][_0x7bb3('0x50')]);_0x186123[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0x21645a['query'],_0x121676[_0x7bb3('0x46')]));if(_0x21645a[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x186123['where']=_[_0x7bb3('0x55')](_0x186123['where'],{'$or':_[_0x7bb3('0x56')](_0x186123[_0x7bb3('0x48')],function(_0x56bb2b){var _0xb35726={};_0xb35726[_0x56bb2b]={'$like':'%'+_0x21645a['query'][_0x7bb3('0x36')]+'%'};return _0xb35726;})});}_0x186123=_[_0x7bb3('0x55')]({},_0x186123,_0x21645a[_0x7bb3('0xb3')]);return _0x225c57[_0x7bb3('0x11d')](_0x186123);}})[_0x7bb3('0x30')](function(_0xd622c4){if(_0xd622c4){_0x356552=_0xd622c4[_0x7bb3('0x4a')];if(!_0x21645a['query'][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x186123[_0x7bb3('0x4d')]=qs['limit'](_0x21645a[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x186123[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x21645a['query'][_0x7bb3('0x4e')]);}return _0x225c57[_0x7bb3('0x11d')](_0x186123);}})[_0x7bb3('0x30')](function(_0x26cd0b){if(_0x26cd0b){return _0x26cd0b?{'count':_0x356552,'rows':_0x26cd0b}:null;}})[_0x7bb3('0x30')](respondWithResult(_0xa3a4ab,null))[_0x7bb3('0x24')](handleError(_0xa3a4ab,null));};exports[_0x7bb3('0x11f')]=function(_0x195986,_0x5c8ba3,_0x55ca8c){return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x195986[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x5c8ba3,null))[_0x7bb3('0x30')](function(_0xc30ead){if(_0xc30ead){return _0xc30ead[_0x7bb3('0x11f')](_0x195986['body'][_0x7bb3('0x99')],_[_0x7bb3('0x100')](_0x195986[_0x7bb3('0x61')],[_0x7bb3('0x99'),'id'])||{});}})['then'](respondWithResult(_0x5c8ba3,null))[_0x7bb3('0x24')](handleError(_0x5c8ba3,null));};exports['removeOpenchannelAccounts']=function(_0xf7c918,_0x42d41b,_0xd85044){var _0x55eadb;return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0xf7c918[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x42d41b,null))[_0x7bb3('0x30')](function(_0x47862a){if(_0x47862a){return _0x47862a[_0x7bb3('0x120')](_0xf7c918[_0x7bb3('0x44')][_0x7bb3('0x99')]);}})[_0x7bb3('0x30')](respondWithStatusCode(_0x42d41b,null))[_0x7bb3('0x24')](handleError(_0x42d41b,null));};exports['getSmsAccounts']=function(_0xf2b3a7,_0xa3abb6,_0x4e6135){var _0x27717c={};var _0x1aa7f4={};var _0x260834;var _0x49adae;return db[_0x7bb3('0x3e')][_0x7bb3('0xbb')]({'where':{'id':_0xf2b3a7[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0xa3abb6,null))['then'](function(_0x4ad2b1){if(_0x4ad2b1){_0x260834=_0x4ad2b1;_0x1aa7f4['model']=_[_0x7bb3('0x41')](db[_0x7bb3('0x121')][_0x7bb3('0x3f')]);_0x1aa7f4[_0x7bb3('0x44')]=_['keys'](_0xf2b3a7[_0x7bb3('0x44')]);_0x1aa7f4[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x1aa7f4[_0x7bb3('0x40')],_0x1aa7f4[_0x7bb3('0x44')]);_0x27717c[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x1aa7f4[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0xf2b3a7[_0x7bb3('0x44')]['fields']));_0x27717c['attributes']=_0x27717c['attributes'][_0x7bb3('0x4a')]?_0x27717c[_0x7bb3('0x48')]:_0x1aa7f4[_0x7bb3('0x40')];_0x27717c[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0xf2b3a7[_0x7bb3('0x44')][_0x7bb3('0x50')]);_0x27717c[_0x7bb3('0x51')]=qs[_0x7bb3('0x46')](_[_0x7bb3('0x52')](_0xf2b3a7[_0x7bb3('0x44')],_0x1aa7f4[_0x7bb3('0x46')]));if(_0xf2b3a7[_0x7bb3('0x44')]['filter']){_0x27717c[_0x7bb3('0x51')]=_['merge'](_0x27717c[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x27717c[_0x7bb3('0x48')],function(_0x1194cf){var _0x4596bb={};_0x4596bb[_0x1194cf]={'$like':'%'+_0xf2b3a7[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x4596bb;})});}_0x27717c=_[_0x7bb3('0x55')]({},_0x27717c,_0xf2b3a7[_0x7bb3('0xb3')]);return _0x260834['getSmsAccounts'](_0x27717c);}})[_0x7bb3('0x30')](function(_0x483861){if(_0x483861){_0x49adae=_0x483861[_0x7bb3('0x4a')];if(!_0xf2b3a7[_0x7bb3('0x44')][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x27717c[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0xf2b3a7[_0x7bb3('0x44')][_0x7bb3('0x4d')]);_0x27717c['offset']=qs[_0x7bb3('0x4e')](_0xf2b3a7[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x260834[_0x7bb3('0x122')](_0x27717c);}})[_0x7bb3('0x30')](function(_0x17bbb6){if(_0x17bbb6){return _0x17bbb6?{'count':_0x49adae,'rows':_0x17bbb6}:null;}})[_0x7bb3('0x30')](respondWithResult(_0xa3abb6,null))[_0x7bb3('0x24')](handleError(_0xa3abb6,null));};exports[_0x7bb3('0x123')]=function(_0x108e90,_0x4e84b5,_0x11ab92){return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x108e90[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x4e84b5,null))[_0x7bb3('0x30')](function(_0x3c6136){if(_0x3c6136){return _0x3c6136[_0x7bb3('0x123')](_0x108e90[_0x7bb3('0x61')]['ids'],_[_0x7bb3('0x100')](_0x108e90[_0x7bb3('0x61')],[_0x7bb3('0x99'),'id'])||{});}})[_0x7bb3('0x30')](respondWithResult(_0x4e84b5,null))['catch'](handleError(_0x4e84b5,null));};exports[_0x7bb3('0x124')]=function(_0x1c4e69,_0x1e5ce8,_0x2b8c84){var _0x5374b9;return db[_0x7bb3('0x3e')][_0x7bb3('0x3a')]({'where':{'id':_0x1c4e69['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x1e5ce8,null))[_0x7bb3('0x30')](function(_0xf680d3){if(_0xf680d3){return _0xf680d3[_0x7bb3('0x124')](_0x1c4e69[_0x7bb3('0x44')][_0x7bb3('0x99')]);}})[_0x7bb3('0x30')](respondWithStatusCode(_0x1e5ce8,null))[_0x7bb3('0x24')](handleError(_0x1e5ce8,null));};exports['getChatWebsites']=function(_0x2f35a1,_0x1f37c2,_0x5bfbdd){var _0x482a3a={};var _0xa29b75={};var _0x4de12f;var _0x9d5b0b;return db['User']['findOne']({'where':{'id':_0x2f35a1['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x1f37c2,null))['then'](function(_0x45cf79){if(_0x45cf79){_0x4de12f=_0x45cf79;_0xa29b75[_0x7bb3('0x40')]=_[_0x7bb3('0x41')](db[_0x7bb3('0x125')][_0x7bb3('0x3f')]);_0xa29b75[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x2f35a1[_0x7bb3('0x44')]);_0xa29b75[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0xa29b75['model'],_0xa29b75[_0x7bb3('0x44')]);_0x482a3a[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0xa29b75[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x2f35a1[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x482a3a[_0x7bb3('0x48')]=_0x482a3a['attributes'][_0x7bb3('0x4a')]?_0x482a3a['attributes']:_0xa29b75['model'];_0x482a3a[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x2f35a1[_0x7bb3('0x44')]['sort']);_0x482a3a[_0x7bb3('0x51')]=qs['filters'](_['pick'](_0x2f35a1[_0x7bb3('0x44')],_0xa29b75[_0x7bb3('0x46')]));if(_0x2f35a1[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x482a3a[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x482a3a[_0x7bb3('0x51')],{'$or':_['map'](_0x482a3a['attributes'],function(_0x135208){var _0x36cad5={};_0x36cad5[_0x135208]={'$like':'%'+_0x2f35a1[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x36cad5;})});}_0x482a3a=_['merge']({},_0x482a3a,_0x2f35a1[_0x7bb3('0xb3')]);return _0x4de12f[_0x7bb3('0x126')](_0x482a3a);}})['then'](function(_0x37ca3e){if(_0x37ca3e){_0x9d5b0b=_0x37ca3e[_0x7bb3('0x4a')];if(!_0x2f35a1['query'][_0x7bb3('0x4b')]('nolimit')){_0x482a3a[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x2f35a1['query'][_0x7bb3('0x4d')]);_0x482a3a[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x2f35a1[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x4de12f[_0x7bb3('0x126')](_0x482a3a);}})[_0x7bb3('0x30')](function(_0x2e65f9){if(_0x2e65f9){return _0x2e65f9?{'count':_0x9d5b0b,'rows':_0x2e65f9}:null;}})['then'](respondWithResult(_0x1f37c2,null))[_0x7bb3('0x24')](handleError(_0x1f37c2,null));};exports[_0x7bb3('0x127')]=function(_0x40e4e0,_0x5a8c19,_0x4f70d5){return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x40e4e0[_0x7bb3('0x5f')]['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x5a8c19,null))[_0x7bb3('0x30')](function(_0x578ab3){if(_0x578ab3){return _0x578ab3[_0x7bb3('0x127')](_0x40e4e0[_0x7bb3('0x61')][_0x7bb3('0x99')],_[_0x7bb3('0x100')](_0x40e4e0[_0x7bb3('0x61')],[_0x7bb3('0x99'),'id'])||{});}})['then'](respondWithResult(_0x5a8c19,null))[_0x7bb3('0x24')](handleError(_0x5a8c19,null));};exports[_0x7bb3('0x128')]=function(_0x49ca72,_0xaba8b5,_0x2d05f6){var _0x45c808;return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x49ca72[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0xaba8b5,null))[_0x7bb3('0x30')](function(_0x535f1f){if(_0x535f1f){return _0x535f1f[_0x7bb3('0x128')](_0x49ca72[_0x7bb3('0x44')][_0x7bb3('0x99')]);}})[_0x7bb3('0x30')](respondWithStatusCode(_0xaba8b5,null))['catch'](handleError(_0xaba8b5,null));};exports[_0x7bb3('0x129')]=function(_0x1d0b48,_0xce30b2,_0x1dcf8a){var _0x10d118={};var _0x4008f8={};var _0x226099;var _0x327755;return db['User'][_0x7bb3('0xbb')]({'where':{'id':_0x1d0b48[_0x7bb3('0x5f')]['id']}})['then'](handleEntityNotFound(_0xce30b2,null))[_0x7bb3('0x30')](function(_0x4335e0){if(_0x4335e0){_0x226099=_0x4335e0;_0x4008f8['model']=_[_0x7bb3('0x41')](db['SquareProject'][_0x7bb3('0x3f')]);_0x4008f8[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x1d0b48['query']);_0x4008f8[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x4008f8[_0x7bb3('0x40')],_0x4008f8['query']);_0x10d118[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x4008f8[_0x7bb3('0x40')],qs['fields'](_0x1d0b48[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x10d118[_0x7bb3('0x48')]=_0x10d118[_0x7bb3('0x48')][_0x7bb3('0x4a')]?_0x10d118[_0x7bb3('0x48')]:_0x4008f8['model'];_0x10d118[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x1d0b48['query']['sort']);_0x10d118[_0x7bb3('0x51')]=qs['filters'](_[_0x7bb3('0x52')](_0x1d0b48['query'],_0x4008f8['filters']));if(_0x1d0b48[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x10d118[_0x7bb3('0x51')]=_[_0x7bb3('0x55')](_0x10d118[_0x7bb3('0x51')],{'$or':_[_0x7bb3('0x56')](_0x10d118[_0x7bb3('0x48')],function(_0x259527){var _0x3d08a5={};_0x3d08a5[_0x259527]={'$like':'%'+_0x1d0b48['query'][_0x7bb3('0x36')]+'%'};return _0x3d08a5;})});}_0x10d118=_[_0x7bb3('0x55')]({},_0x10d118,_0x1d0b48[_0x7bb3('0xb3')]);return _0x226099[_0x7bb3('0x129')](_0x10d118);}})['then'](function(_0x58e744){if(_0x58e744){_0x327755=_0x58e744[_0x7bb3('0x4a')];if(!_0x1d0b48['query'][_0x7bb3('0x4b')]('nolimit')){_0x10d118[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x1d0b48[_0x7bb3('0x44')]['limit']);_0x10d118[_0x7bb3('0x4e')]=qs['offset'](_0x1d0b48[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}return _0x226099[_0x7bb3('0x129')](_0x10d118);}})[_0x7bb3('0x30')](function(_0x53bc8e){if(_0x53bc8e){return _0x53bc8e?{'count':_0x327755,'rows':_0x53bc8e}:null;}})[_0x7bb3('0x30')](respondWithResult(_0xce30b2,null))[_0x7bb3('0x24')](handleError(_0xce30b2,null));};exports[_0x7bb3('0x12a')]=function(_0x2ef33b,_0x15bed2,_0x2145af){return db[_0x7bb3('0x3e')]['find']({'where':{'id':_0x2ef33b['params']['id']}})['then'](handleEntityNotFound(_0x15bed2,null))[_0x7bb3('0x30')](function(_0x38578f){if(_0x38578f){return _0x38578f[_0x7bb3('0x12a')](_0x2ef33b['body'][_0x7bb3('0x99')],_[_0x7bb3('0x100')](_0x2ef33b[_0x7bb3('0x61')],[_0x7bb3('0x99'),'id'])||{});}})[_0x7bb3('0x30')](respondWithResult(_0x15bed2,null))[_0x7bb3('0x24')](handleError(_0x15bed2,null));};exports[_0x7bb3('0x12b')]=function(_0x4f5e9f,_0x4441ac,_0x5b73c7){var _0x590471;return db['User'][_0x7bb3('0x3a')]({'where':{'id':_0x4f5e9f['params']['id']}})[_0x7bb3('0x30')](handleEntityNotFound(_0x4441ac,null))['then'](function(_0x425418){if(_0x425418){return _0x425418[_0x7bb3('0x12b')](_0x4f5e9f[_0x7bb3('0x44')]['ids']);}})[_0x7bb3('0x30')](respondWithStatusCode(_0x4441ac,null))[_0x7bb3('0x24')](handleError(_0x4441ac,null));};exports[_0x7bb3('0x12c')]=function(_0x48da58,_0x4985ed){var _0x4f4a67={},_0x84a19a={},_0x558250={'count':0x0,'rows':[]};var _0x382afb=db['CmHopper']['rawAttributes'];_0x84a19a[_0x7bb3('0x40')]=_['keys'](_0x382afb);var _0x3cd5dc={'dateStart':_0x48da58[_0x7bb3('0x44')]['dateStart'],'dateEnd':_0x48da58[_0x7bb3('0x44')][_0x7bb3('0x45')]};delete _0x48da58['query'][_0x7bb3('0x43')];delete _0x48da58[_0x7bb3('0x44')]['dateEnd'];_0x84a19a[_0x7bb3('0x44')]=_[_0x7bb3('0x41')](_0x48da58[_0x7bb3('0x44')]);_0x84a19a[_0x7bb3('0x46')]=_[_0x7bb3('0x47')](_0x84a19a[_0x7bb3('0x40')],_0x84a19a[_0x7bb3('0x44')]);_0x84a19a['filters']=_[_0x7bb3('0xde')](_0x84a19a[_0x7bb3('0x46')],[_0x7bb3('0x12d'),_0x7bb3('0x12e'),_0x7bb3('0x12f'),_0x7bb3('0x130'),_0x7bb3('0x131'),_0x7bb3('0x132'),_0x7bb3('0x133'),_0x7bb3('0x134'),'$not','$between',_0x7bb3('0x135'),'$in',_0x7bb3('0x136'),_0x7bb3('0x137'),_0x7bb3('0x138'),_0x7bb3('0x139'),_0x7bb3('0x13a'),_0x7bb3('0x137'),'$overlap',_0x7bb3('0x13b'),_0x7bb3('0x13c'),_0x7bb3('0x13d')]);_0x4f4a67[_0x7bb3('0x48')]=_[_0x7bb3('0x47')](_0x84a19a[_0x7bb3('0x40')],qs[_0x7bb3('0x49')](_0x48da58[_0x7bb3('0x44')][_0x7bb3('0x49')]));_0x4f4a67[_0x7bb3('0x48')]=_0x4f4a67[_0x7bb3('0x48')]['length']?_0x4f4a67[_0x7bb3('0x48')]:_0x84a19a[_0x7bb3('0x40')];if(!_0x48da58['query'][_0x7bb3('0x4b')](_0x7bb3('0x4c'))){_0x4f4a67[_0x7bb3('0x4d')]=qs[_0x7bb3('0x4d')](_0x48da58['query'][_0x7bb3('0x4d')]);_0x4f4a67[_0x7bb3('0x4e')]=qs[_0x7bb3('0x4e')](_0x48da58[_0x7bb3('0x44')][_0x7bb3('0x4e')]);}_0x4f4a67[_0x7bb3('0x4f')]=qs[_0x7bb3('0x50')](_0x48da58[_0x7bb3('0x44')]['sort']);_0x4f4a67[_0x7bb3('0x51')]=qs['filters'](_[_0x7bb3('0x52')](_0x48da58[_0x7bb3('0x44')],_0x84a19a[_0x7bb3('0x46')]));if(_0x3cd5dc[_0x7bb3('0x43')]){if(_0x3cd5dc[_0x7bb3('0x45')]){_0x3cd5dc[_0x7bb3('0x45')]=moment(_0x3cd5dc[_0x7bb3('0x45')])['add'](0x1,'day');}else{_0x3cd5dc[_0x7bb3('0x45')]=moment(_0x3cd5dc[_0x7bb3('0x43')])[_0x7bb3('0x53')](0x1,_0x7bb3('0x54'));}_['merge'](_0x4f4a67['where'],{'scheduledat':{'$gte':_0x3cd5dc[_0x7bb3('0x43')],'$lte':_0x3cd5dc[_0x7bb3('0x45')]}});}if(_0x48da58[_0x7bb3('0x44')][_0x7bb3('0x36')]){_0x4f4a67['where']=_[_0x7bb3('0x55')](_0x4f4a67[_0x7bb3('0x51')],{'$or':_['map'](_0x4f4a67['attributes'],function(_0x1f52d0){var _0x1807de={};_0x1807de[_0x1f52d0]={'$like':'%'+_0x48da58[_0x7bb3('0x44')][_0x7bb3('0x36')]+'%'};return _0x1807de;})});}_0x4f4a67[_0x7bb3('0x51')]={'$and':[_0x4f4a67[_0x7bb3('0x51')],{'$or':[{'UserId':_0x48da58[_0x7bb3('0x5f')]['id']},{'OwnerId':_0x48da58[_0x7bb3('0x5f')]['id']}]}]};_0x4f4a67=_[_0x7bb3('0x55')]({},_0x4f4a67,_0x48da58['options']);var _0x3ef7c4={'where':_0x4f4a67[_0x7bb3('0x51')]};return db[_0x7bb3('0x13e')][_0x7bb3('0x29')](_0x3ef7c4)[_0x7bb3('0x30')](function(_0x2fd43c){_0x558250[_0x7bb3('0x29')]=_0x2fd43c;if(_0x48da58[_0x7bb3('0x44')][_0x7bb3('0x5b')]){_0x4f4a67[_0x7bb3('0x5c')]=[{'attributes':['id',_0x7bb3('0x13f'),'lastName',_0x7bb3('0xcc')],'model':db[_0x7bb3('0xb2')],'as':_0x7bb3('0x140')},{'attributes':['id',_0x7bb3('0x3b'),_0x7bb3('0x141')],'model':db[_0x7bb3('0x9f')],'as':_0x7bb3('0xbc')}];}return db[_0x7bb3('0x13e')][_0x7bb3('0xa0')](_0x4f4a67);})[_0x7bb3('0x30')](function(_0x23a9b7){_0x558250['rows']=_0x23a9b7;return _0x558250;})[_0x7bb3('0x30')](respondWithFilteredResult(_0x4985ed,_0x4f4a67))['catch'](handleError(_0x4985ed,null));};
\ No newline at end of file
index f140736..2a22598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb','User'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53ec,0x192));var _0xc53e=function(_0x310990,_0x245984){_0x310990=_0x310990-0x0;var _0x648534=_0x53ec[_0x310990];return _0x648534;};'use strict';var EventEmitter=require(_0xc53e('0x0'));var User=require(_0xc53e('0x1'))['db'][_0xc53e('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xc53e('0x3')](0x0);var events={'afterCreate':_0xc53e('0x4'),'afterUpdate':_0xc53e('0x5'),'afterDestroy':'remove'};function emitEvent(_0x266c42){return function(_0x4e954a,_0x2b90f6,_0x38033d){UserEvents['emit'](_0x266c42+':'+_0x4e954a['id'],_0x4e954a);UserEvents[_0xc53e('0x6')](_0x266c42,_0x4e954a);_0x38033d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0xc53e('0x7')](e,emitEvent(event));}}module[_0xc53e('0x8')]=UserEvents;
\ No newline at end of file
+var _0x53ec=['setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb','User'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x53ec,0x192));var _0xc53e=function(_0x1fcde8,_0x44c01d){_0x1fcde8=_0x1fcde8-0x0;var _0x5b3541=_0x53ec[_0x1fcde8];return _0x5b3541;};'use strict';var EventEmitter=require(_0xc53e('0x0'));var User=require(_0xc53e('0x1'))['db'][_0xc53e('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xc53e('0x3')](0x0);var events={'afterCreate':_0xc53e('0x4'),'afterUpdate':_0xc53e('0x5'),'afterDestroy':'remove'};function emitEvent(_0x266c42){return function(_0x4e954a,_0x2b90f6,_0x38033d){UserEvents['emit'](_0x266c42+':'+_0x4e954a['id'],_0x4e954a);UserEvents[_0xc53e('0x6')](_0x266c42,_0x4e954a);_0x38033d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0xc53e('0x7')](e,emitEvent(event));}}module[_0xc53e('0x8')]=UserEvents;
\ No newline at end of file
index 2b0844b..d0f0dae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['findAll','internal','concat','catch','exports','define','User','users','utf8','utf8_bin','updateMd5Password','changed','updatePassword','bulkCreate','chanspy','then','VoiceExtension','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','base64','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt','md5secret','bluebird','crypto','util','./user.attributes','length','context','from-sip','system','format','%s%s','prefix','record','push','merge','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','wav','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults'];(function(_0x34de08,_0x436745){var _0x55432e=function(_0xa15cb9){while(--_0xa15cb9){_0x34de08['push'](_0x34de08['shift']());}};_0x55432e(++_0x436745);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'use strict';var BPromise=require(_0x0a9e('0x0'));var crypto=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var md5=require('md5');var _=require('lodash');var attributes=require(_0x0a9e('0x3'));var authTypes=['google'];var validatePresenceOf=function(_0x333808){return _0x333808&&_0x333808[_0x0a9e('0x4')];};var getChanSpyApplications=function(_0x2ab90b,_0x991246,_0x981158){var _0x57b080={'context':_0x2ab90b[_0x0a9e('0x5')]||_0x0a9e('0x6'),'type':_0x0a9e('0x7'),'isApp':![],'UserId':_0x2ab90b['id']};var _0x5f41ea=[];for(var _0x503809=0x0,_0xe42b77=0x1;_0x503809<_0x981158['length'];_0x503809++,_0xe42b77=0x1){var _0x52cace={'exten':util[_0x0a9e('0x8')](_0x0a9e('0x9'),_0x981158[_0x503809][_0x0a9e('0xa')],_0x991246),'ChanSpyId':_0x981158[_0x503809]['id']};if(_0x981158[_0x503809][_0x0a9e('0xb')]){_0x5f41ea[_0x0a9e('0xc')](_[_0x0a9e('0xd')]({'app':'MixMonitor','appdata':util['format']('${UNIQUEID}.%s,ab',_0x981158[_0x503809]['recordingFormat']),'priority':_0xe42b77++},_0x57b080,_0x52cace));}if(_0x981158[_0x503809][_0x0a9e('0xe')]){_0x5f41ea[_0x0a9e('0xc')](_[_0x0a9e('0xd')]({'app':_0x0a9e('0xf'),'appdata':_0x981158[_0x503809][_0x0a9e('0x10')],'priority':_0xe42b77++},_0x57b080,_0x52cace));}_0x5f41ea[_0x0a9e('0xc')](_['merge']({'app':_0x0a9e('0x11'),'appdata':util[_0x0a9e('0x8')](_0x0a9e('0x12'),_0x2ab90b[_0x0a9e('0x13')],_0x981158[_0x503809][_0x0a9e('0x14')]?_0x981158[_0x503809][_0x0a9e('0x14')]['join'](''):''),'priority':_0xe42b77++},_0x57b080,_0x52cace));if(_0x981158[_0x503809][_0x0a9e('0xb')]){_0x5f41ea['push'](_[_0x0a9e('0xd')]({'app':'StopMixMonitor','priority':_0xe42b77++},_0x57b080,_0x52cace));}}return _0x5f41ea;};var getUserApplications=function(_0x16033c,_0x12066b){var _0x48f32d=[_0x0a9e('0x15'),'WAV',_0x0a9e('0x16')];var _0x478723={'context':_0x16033c[_0x0a9e('0x5')]||_0x0a9e('0x6'),'exten':_0x12066b,'type':_0x0a9e('0x7'),'isApp':![],'UserId':_0x16033c['id']};var _0x2eb11f=[{'app':_0x0a9e('0x17'),'appdata':_0x0a9e('0x18')}];if(_0x16033c[_0x0a9e('0x19')]&&_[_0x0a9e('0x1a')](_0x48f32d,_0x16033c[_0x0a9e('0x19')])){_0x2eb11f[_0x0a9e('0xc')]({'app':'Set','appdata':_0x0a9e('0x1b')});_0x2eb11f[_0x0a9e('0xc')]({'app':'Set','appdata':util[_0x0a9e('0x8')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x16033c['extensionMonitor'])});_0x2eb11f[_0x0a9e('0xc')]({'app':_0x0a9e('0x1c'),'appdata':util[_0x0a9e('0x8')](_0x0a9e('0x1d'),_0x16033c['name'])});}else{_0x2eb11f[_0x0a9e('0xc')]({'app':_0x0a9e('0x1c'),'appdata':util[_0x0a9e('0x8')](_0x0a9e('0x1e'),_0x16033c[_0x0a9e('0x13')])});}_0x2eb11f[_0x0a9e('0xc')]({'app':_0x0a9e('0x1f')});for(var _0x5ea472=0x0;_0x5ea472<_0x2eb11f['length'];_0x5ea472++){_0x2eb11f[_0x5ea472][_0x0a9e('0x20')]=_0x5ea472+0x1;_0x2eb11f[_0x5ea472]=_[_0x0a9e('0x21')](_0x2eb11f[_0x5ea472],_0x478723);}return _0x2eb11f;};var getChanSpyPromise=function(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){return _0x40c424['VoiceChanSpy'][_0x0a9e('0x22')]()['then'](function(_0x1dc186){if(_0x1dc186){var _0x34dc65=getChanSpyApplications(_0x33161b,_0x33161b[_0x0a9e('0x23')],_0x1dc186);if(_0x33161b[_0x0a9e('0x23')]!=_0x33161b[_0x0a9e('0x13')]){_0x34dc65=_0x34dc65[_0x0a9e('0x24')](getChanSpyApplications(_0x33161b,_0x33161b[_0x0a9e('0x13')],_0x1dc186));}return _0x526cf3(_0x34dc65);}return _0x526cf3([]);})[_0x0a9e('0x25')](function(_0x5a101a){_0x384319(_0x5a101a);});});};module[_0x0a9e('0x26')]=function(_0x468813,_0x2b1f27){var _0x2ec755=_0x468813['models'];return _0x468813[_0x0a9e('0x27')](_0x0a9e('0x28'),attributes,{'tableName':_0x0a9e('0x29'),'charset':_0x0a9e('0x2a'),'collate':_0x0a9e('0x2b'),'hooks':{'beforeCreate':function(_0x563b45,_0x296f41,_0x2e8759){_0x563b45[_0x0a9e('0x2c')]();_0x563b45['updatePassword'](_0x2e8759);},'beforeUpdate':function(_0x426950,_0x5d1e0e,_0x2407f9){if(_0x426950[_0x0a9e('0x2d')](_0x0a9e('0x10'))){_0x426950[_0x0a9e('0x2c')]();return _0x426950[_0x0a9e('0x2e')](_0x2407f9);}_0x2407f9();},'afterCreate':function(_0x5180f1,_0x66c1d2,_0x46f0a5){var _0x40cb85=getUserApplications(_0x5180f1,_0x5180f1[_0x0a9e('0x23')]);if(_0x5180f1[_0x0a9e('0x23')]!=_0x5180f1[_0x0a9e('0x13')]){_0x40cb85=_0x40cb85[_0x0a9e('0x24')](getUserApplications(_0x5180f1,_0x5180f1[_0x0a9e('0x13')]));}return _0x2ec755['VoiceExtension'][_0x0a9e('0x2f')](_0x40cb85)['then'](function(){if(_0x5180f1[_0x0a9e('0x30')]){return getChanSpyPromise(_0x2ec755,_0x5180f1);}})[_0x0a9e('0x31')](function(_0x2b7e7f){if(_0x2b7e7f&&_0x2b7e7f[_0x0a9e('0x4')]){return _0x2ec755['VoiceExtension'][_0x0a9e('0x2f')](_0x2b7e7f);}})[_0x0a9e('0x31')](function(){_0x46f0a5();})[_0x0a9e('0x25')](function(_0x15de0e){_0x46f0a5(_0x15de0e);});},'afterUpdate':function(_0x4853b1,_0x54135e,_0x1e8694){return BPromise['resolve']()[_0x0a9e('0x31')](function(){if(_0x4853b1[_0x0a9e('0x2d')](_0x0a9e('0x30'))||_0x4853b1[_0x0a9e('0x2d')]('context')){return _0x2ec755[_0x0a9e('0x32')][_0x0a9e('0x33')]({'where':{'UserId':_0x4853b1['id'],'type':_0x0a9e('0x7'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x4853b1[_0x0a9e('0x30')]){return getChanSpyPromise(_0x2ec755,_0x4853b1)[_0x0a9e('0x31')](function(_0x289467){if(_0x289467&&_0x289467['length']){return _0x2ec755['VoiceExtension'][_0x0a9e('0x2f')](_0x289467);}});}});}})[_0x0a9e('0x31')](function(){if(_0x4853b1['changed'](_0x0a9e('0x19'))||_0x4853b1[_0x0a9e('0x2d')](_0x0a9e('0x5'))){return _0x2ec755[_0x0a9e('0x32')]['destroy']({'where':{'UserId':_0x4853b1['id'],'type':'system','ChanSpyId':null}})[_0x0a9e('0x31')](function(){var _0x45b3d0=getUserApplications(_0x4853b1,_0x4853b1['internal']);if(_0x4853b1[_0x0a9e('0x23')]!=_0x4853b1[_0x0a9e('0x13')]){_0x45b3d0=_0x45b3d0[_0x0a9e('0x24')](getUserApplications(_0x4853b1,_0x4853b1['name']));}return _0x2ec755[_0x0a9e('0x32')][_0x0a9e('0x2f')](_0x45b3d0);});}})[_0x0a9e('0x31')](function(){_0x1e8694();})[_0x0a9e('0x25')](function(_0x13cb1f){_0x1e8694(_0x13cb1f);});},'afterDestroy':function(_0xeaa5e5,_0x2881b3){return _0x2ec755[_0x0a9e('0x32')][_0x0a9e('0x33')]({'where':{'UserId':_0xeaa5e5['id'],'type':_0x0a9e('0x7')}});}},'instanceMethods':{'authenticate':function(_0x2c3711,_0x148007){if(!_0x148007){return this[_0x0a9e('0x10')]===this[_0x0a9e('0x34')](_0x2c3711);}var _0x37f6cc=this;this['encryptPassword'](_0x2c3711,function(_0x52628e,_0x473fdc){if(_0x52628e){_0x148007(_0x52628e);}if(_0x37f6cc[_0x0a9e('0x10')]===_0x473fdc){_0x148007(null,!![]);}else{_0x148007(null,![]);}});},'makeSalt':function(_0x405c8f,_0x315881){var _0x1a69dd=0x10;if(typeof arguments[0x0]===_0x0a9e('0x35')){_0x315881=arguments[0x0];_0x405c8f=_0x1a69dd;}else if(typeof arguments[0x1]===_0x0a9e('0x35')){_0x315881=arguments[0x1];}else{throw new Error(_0x0a9e('0x36'));}if(!_0x405c8f){_0x405c8f=_0x1a69dd;}return crypto[_0x0a9e('0x37')](_0x405c8f,function(_0x25c6e6,_0x2c2cb0){if(_0x25c6e6){_0x315881(_0x25c6e6);}return _0x315881(null,_0x2c2cb0[_0x0a9e('0x38')]('base64'));});},'encryptPassword':function(_0x117c99,_0x138b8b){if(!_0x117c99||!this[_0x0a9e('0x39')]){return _0x138b8b?_0x138b8b(null):null;}var _0xfbd5ad=0x2710;var _0x2e8caf=0x40;var _0xbe9d19=new Buffer(this[_0x0a9e('0x39')],_0x0a9e('0x3a'));if(!_0x138b8b){return crypto['pbkdf2Sync'](_0x117c99,_0xbe9d19,_0xfbd5ad,_0x2e8caf,_0x0a9e('0x3b'))['toString'](_0x0a9e('0x3a'));}return crypto[_0x0a9e('0x3c')](_0x117c99,_0xbe9d19,_0xfbd5ad,_0x2e8caf,_0x0a9e('0x3b'),function(_0x562fb4,_0x14bec2){if(_0x562fb4){_0x138b8b(_0x562fb4);}return _0x138b8b(null,_0x14bec2[_0x0a9e('0x38')](_0x0a9e('0x3a')));});},'updatePassword':function(_0x34aa5a){if(!this[_0x0a9e('0x10')]){return _0x34aa5a(null);}if(!validatePresenceOf(this[_0x0a9e('0x10')])&&authTypes[_0x0a9e('0x3d')](this['provider'])===-0x1){_0x34aa5a(new Error(_0x0a9e('0x3e')));}var _0x1bde3c=this;this[_0x0a9e('0x3f')](function(_0x16f976,_0x409789){if(_0x16f976){return _0x34aa5a(_0x16f976);}_0x1bde3c[_0x0a9e('0x39')]=_0x409789;_0x1bde3c[_0x0a9e('0x34')](_0x1bde3c[_0x0a9e('0x10')],function(_0x34febd,_0x58a5c2){if(_0x34febd){_0x34aa5a(_0x34febd);}_0x1bde3c[_0x0a9e('0x10')]=_0x58a5c2;_0x34aa5a(null);});});},'updateMd5Password':function(){this[_0x0a9e('0x40')]=md5(this['name']+':asterisk:'+this['password']);return this[_0x0a9e('0x40')];}}});};
\ No newline at end of file
+var _0xa9e0=['findAll','internal','concat','catch','exports','define','User','users','utf8','utf8_bin','updateMd5Password','changed','updatePassword','bulkCreate','chanspy','then','VoiceExtension','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','salt','base64','sha1','pbkdf2','indexOf','Invalid\x20password','makeSalt','md5secret','bluebird','crypto','util','./user.attributes','length','context','from-sip','system','format','%s%s','prefix','record','push','merge','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','wav','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults'];(function(_0x28e657,_0x33d163){var _0xbf5776=function(_0x35d54b){while(--_0x35d54b){_0x28e657['push'](_0x28e657['shift']());}};_0xbf5776(++_0x33d163);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'use strict';var BPromise=require(_0x0a9e('0x0'));var crypto=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var md5=require('md5');var _=require('lodash');var attributes=require(_0x0a9e('0x3'));var authTypes=['google'];var validatePresenceOf=function(_0x333808){return _0x333808&&_0x333808[_0x0a9e('0x4')];};var getChanSpyApplications=function(_0x2ab90b,_0x991246,_0x981158){var _0x57b080={'context':_0x2ab90b[_0x0a9e('0x5')]||_0x0a9e('0x6'),'type':_0x0a9e('0x7'),'isApp':![],'UserId':_0x2ab90b['id']};var _0x5f41ea=[];for(var _0x503809=0x0,_0xe42b77=0x1;_0x503809<_0x981158['length'];_0x503809++,_0xe42b77=0x1){var _0x52cace={'exten':util[_0x0a9e('0x8')](_0x0a9e('0x9'),_0x981158[_0x503809][_0x0a9e('0xa')],_0x991246),'ChanSpyId':_0x981158[_0x503809]['id']};if(_0x981158[_0x503809][_0x0a9e('0xb')]){_0x5f41ea[_0x0a9e('0xc')](_[_0x0a9e('0xd')]({'app':'MixMonitor','appdata':util['format']('${UNIQUEID}.%s,ab',_0x981158[_0x503809]['recordingFormat']),'priority':_0xe42b77++},_0x57b080,_0x52cace));}if(_0x981158[_0x503809][_0x0a9e('0xe')]){_0x5f41ea[_0x0a9e('0xc')](_[_0x0a9e('0xd')]({'app':_0x0a9e('0xf'),'appdata':_0x981158[_0x503809][_0x0a9e('0x10')],'priority':_0xe42b77++},_0x57b080,_0x52cace));}_0x5f41ea[_0x0a9e('0xc')](_['merge']({'app':_0x0a9e('0x11'),'appdata':util[_0x0a9e('0x8')](_0x0a9e('0x12'),_0x2ab90b[_0x0a9e('0x13')],_0x981158[_0x503809][_0x0a9e('0x14')]?_0x981158[_0x503809][_0x0a9e('0x14')]['join'](''):''),'priority':_0xe42b77++},_0x57b080,_0x52cace));if(_0x981158[_0x503809][_0x0a9e('0xb')]){_0x5f41ea['push'](_[_0x0a9e('0xd')]({'app':'StopMixMonitor','priority':_0xe42b77++},_0x57b080,_0x52cace));}}return _0x5f41ea;};var getUserApplications=function(_0x16033c,_0x12066b){var _0x48f32d=[_0x0a9e('0x15'),'WAV',_0x0a9e('0x16')];var _0x478723={'context':_0x16033c[_0x0a9e('0x5')]||_0x0a9e('0x6'),'exten':_0x12066b,'type':_0x0a9e('0x7'),'isApp':![],'UserId':_0x16033c['id']};var _0x2eb11f=[{'app':_0x0a9e('0x17'),'appdata':_0x0a9e('0x18')}];if(_0x16033c[_0x0a9e('0x19')]&&_[_0x0a9e('0x1a')](_0x48f32d,_0x16033c[_0x0a9e('0x19')])){_0x2eb11f[_0x0a9e('0xc')]({'app':'Set','appdata':_0x0a9e('0x1b')});_0x2eb11f[_0x0a9e('0xc')]({'app':'Set','appdata':util[_0x0a9e('0x8')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x16033c['extensionMonitor'])});_0x2eb11f[_0x0a9e('0xc')]({'app':_0x0a9e('0x1c'),'appdata':util[_0x0a9e('0x8')](_0x0a9e('0x1d'),_0x16033c['name'])});}else{_0x2eb11f[_0x0a9e('0xc')]({'app':_0x0a9e('0x1c'),'appdata':util[_0x0a9e('0x8')](_0x0a9e('0x1e'),_0x16033c[_0x0a9e('0x13')])});}_0x2eb11f[_0x0a9e('0xc')]({'app':_0x0a9e('0x1f')});for(var _0x5ea472=0x0;_0x5ea472<_0x2eb11f['length'];_0x5ea472++){_0x2eb11f[_0x5ea472][_0x0a9e('0x20')]=_0x5ea472+0x1;_0x2eb11f[_0x5ea472]=_[_0x0a9e('0x21')](_0x2eb11f[_0x5ea472],_0x478723);}return _0x2eb11f;};var getChanSpyPromise=function(_0x40c424,_0x33161b){return new BPromise(function(_0x526cf3,_0x384319){return _0x40c424['VoiceChanSpy'][_0x0a9e('0x22')]()['then'](function(_0x1dc186){if(_0x1dc186){var _0x34dc65=getChanSpyApplications(_0x33161b,_0x33161b[_0x0a9e('0x23')],_0x1dc186);if(_0x33161b[_0x0a9e('0x23')]!=_0x33161b[_0x0a9e('0x13')]){_0x34dc65=_0x34dc65[_0x0a9e('0x24')](getChanSpyApplications(_0x33161b,_0x33161b[_0x0a9e('0x13')],_0x1dc186));}return _0x526cf3(_0x34dc65);}return _0x526cf3([]);})[_0x0a9e('0x25')](function(_0x5a101a){_0x384319(_0x5a101a);});});};module[_0x0a9e('0x26')]=function(_0x468813,_0x2b1f27){var _0x2ec755=_0x468813['models'];return _0x468813[_0x0a9e('0x27')](_0x0a9e('0x28'),attributes,{'tableName':_0x0a9e('0x29'),'charset':_0x0a9e('0x2a'),'collate':_0x0a9e('0x2b'),'hooks':{'beforeCreate':function(_0x563b45,_0x296f41,_0x2e8759){_0x563b45[_0x0a9e('0x2c')]();_0x563b45['updatePassword'](_0x2e8759);},'beforeUpdate':function(_0x426950,_0x5d1e0e,_0x2407f9){if(_0x426950[_0x0a9e('0x2d')](_0x0a9e('0x10'))){_0x426950[_0x0a9e('0x2c')]();return _0x426950[_0x0a9e('0x2e')](_0x2407f9);}_0x2407f9();},'afterCreate':function(_0x5180f1,_0x66c1d2,_0x46f0a5){var _0x40cb85=getUserApplications(_0x5180f1,_0x5180f1[_0x0a9e('0x23')]);if(_0x5180f1[_0x0a9e('0x23')]!=_0x5180f1[_0x0a9e('0x13')]){_0x40cb85=_0x40cb85[_0x0a9e('0x24')](getUserApplications(_0x5180f1,_0x5180f1[_0x0a9e('0x13')]));}return _0x2ec755['VoiceExtension'][_0x0a9e('0x2f')](_0x40cb85)['then'](function(){if(_0x5180f1[_0x0a9e('0x30')]){return getChanSpyPromise(_0x2ec755,_0x5180f1);}})[_0x0a9e('0x31')](function(_0x2b7e7f){if(_0x2b7e7f&&_0x2b7e7f[_0x0a9e('0x4')]){return _0x2ec755['VoiceExtension'][_0x0a9e('0x2f')](_0x2b7e7f);}})[_0x0a9e('0x31')](function(){_0x46f0a5();})[_0x0a9e('0x25')](function(_0x15de0e){_0x46f0a5(_0x15de0e);});},'afterUpdate':function(_0x4853b1,_0x54135e,_0x1e8694){return BPromise['resolve']()[_0x0a9e('0x31')](function(){if(_0x4853b1[_0x0a9e('0x2d')](_0x0a9e('0x30'))||_0x4853b1[_0x0a9e('0x2d')]('context')){return _0x2ec755[_0x0a9e('0x32')][_0x0a9e('0x33')]({'where':{'UserId':_0x4853b1['id'],'type':_0x0a9e('0x7'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x4853b1[_0x0a9e('0x30')]){return getChanSpyPromise(_0x2ec755,_0x4853b1)[_0x0a9e('0x31')](function(_0x289467){if(_0x289467&&_0x289467['length']){return _0x2ec755['VoiceExtension'][_0x0a9e('0x2f')](_0x289467);}});}});}})[_0x0a9e('0x31')](function(){if(_0x4853b1['changed'](_0x0a9e('0x19'))||_0x4853b1[_0x0a9e('0x2d')](_0x0a9e('0x5'))){return _0x2ec755[_0x0a9e('0x32')]['destroy']({'where':{'UserId':_0x4853b1['id'],'type':'system','ChanSpyId':null}})[_0x0a9e('0x31')](function(){var _0x45b3d0=getUserApplications(_0x4853b1,_0x4853b1['internal']);if(_0x4853b1[_0x0a9e('0x23')]!=_0x4853b1[_0x0a9e('0x13')]){_0x45b3d0=_0x45b3d0[_0x0a9e('0x24')](getUserApplications(_0x4853b1,_0x4853b1['name']));}return _0x2ec755[_0x0a9e('0x32')][_0x0a9e('0x2f')](_0x45b3d0);});}})[_0x0a9e('0x31')](function(){_0x1e8694();})[_0x0a9e('0x25')](function(_0x13cb1f){_0x1e8694(_0x13cb1f);});},'afterDestroy':function(_0xeaa5e5,_0x2881b3){return _0x2ec755[_0x0a9e('0x32')][_0x0a9e('0x33')]({'where':{'UserId':_0xeaa5e5['id'],'type':_0x0a9e('0x7')}});}},'instanceMethods':{'authenticate':function(_0x2c3711,_0x148007){if(!_0x148007){return this[_0x0a9e('0x10')]===this[_0x0a9e('0x34')](_0x2c3711);}var _0x37f6cc=this;this['encryptPassword'](_0x2c3711,function(_0x52628e,_0x473fdc){if(_0x52628e){_0x148007(_0x52628e);}if(_0x37f6cc[_0x0a9e('0x10')]===_0x473fdc){_0x148007(null,!![]);}else{_0x148007(null,![]);}});},'makeSalt':function(_0x405c8f,_0x315881){var _0x1a69dd=0x10;if(typeof arguments[0x0]===_0x0a9e('0x35')){_0x315881=arguments[0x0];_0x405c8f=_0x1a69dd;}else if(typeof arguments[0x1]===_0x0a9e('0x35')){_0x315881=arguments[0x1];}else{throw new Error(_0x0a9e('0x36'));}if(!_0x405c8f){_0x405c8f=_0x1a69dd;}return crypto[_0x0a9e('0x37')](_0x405c8f,function(_0x25c6e6,_0x2c2cb0){if(_0x25c6e6){_0x315881(_0x25c6e6);}return _0x315881(null,_0x2c2cb0[_0x0a9e('0x38')]('base64'));});},'encryptPassword':function(_0x117c99,_0x138b8b){if(!_0x117c99||!this[_0x0a9e('0x39')]){return _0x138b8b?_0x138b8b(null):null;}var _0xfbd5ad=0x2710;var _0x2e8caf=0x40;var _0xbe9d19=new Buffer(this[_0x0a9e('0x39')],_0x0a9e('0x3a'));if(!_0x138b8b){return crypto['pbkdf2Sync'](_0x117c99,_0xbe9d19,_0xfbd5ad,_0x2e8caf,_0x0a9e('0x3b'))['toString'](_0x0a9e('0x3a'));}return crypto[_0x0a9e('0x3c')](_0x117c99,_0xbe9d19,_0xfbd5ad,_0x2e8caf,_0x0a9e('0x3b'),function(_0x562fb4,_0x14bec2){if(_0x562fb4){_0x138b8b(_0x562fb4);}return _0x138b8b(null,_0x14bec2[_0x0a9e('0x38')](_0x0a9e('0x3a')));});},'updatePassword':function(_0x34aa5a){if(!this[_0x0a9e('0x10')]){return _0x34aa5a(null);}if(!validatePresenceOf(this[_0x0a9e('0x10')])&&authTypes[_0x0a9e('0x3d')](this['provider'])===-0x1){_0x34aa5a(new Error(_0x0a9e('0x3e')));}var _0x1bde3c=this;this[_0x0a9e('0x3f')](function(_0x16f976,_0x409789){if(_0x16f976){return _0x34aa5a(_0x16f976);}_0x1bde3c[_0x0a9e('0x39')]=_0x409789;_0x1bde3c[_0x0a9e('0x34')](_0x1bde3c[_0x0a9e('0x10')],function(_0x34febd,_0x58a5c2){if(_0x34febd){_0x34aa5a(_0x34febd);}_0x1bde3c[_0x0a9e('0x10')]=_0x58a5c2;_0x34aa5a(null);});});},'updateMd5Password':function(){this[_0x0a9e('0x40')]=md5(this['name']+':asterisk:'+this['password']);return this[_0x0a9e('0x40')];}}});};
\ No newline at end of file
index d76bf1e..87bcb6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['set','%s%s','Pause','all','LogoutUser','findOne','destroy','LoginUser','mobile','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','loginInPause','UserVoiceQueue.penalty','LOGIN','callysquare','merge','LOGININPAUSE','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','User','findAll','options','raw','where','attributes','limit','include','map','model','GetUser','find','ShowUser','PauseUser','name','role','internal','interface','UserVoiceQueueRt','update','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','push','isNil','SIP/%s','body','type','DEFAULT\x20PAUSE','MemberReport','bulkCreate','isValidChannel','channel','Unknown\x20channel','voice','system','mail','chat','fax','openchannel'];(function(_0x372aa1,_0x2ab096){var _0x14c641=function(_0x4a51c8){while(--_0x4a51c8){_0x372aa1['push'](_0x372aa1['shift']());}};_0x14c641(++_0x2ab096);}(_0x5f2f,0x73));var _0xf5f2=function(_0x127684,_0x934359){_0x127684=_0x127684-0x0;var _0x1d9599=_0x5f2f[_0x127684];return _0x1d9599;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./user.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['GetUser']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')]({'raw':_0x34706d['options']?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![],'where':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x21')]||null:null,'attributes':_0x34706d['options']?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x22')]||null:null,'limit':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x23')]||null:null,'include':_0x34706d['options']?_0x34706d['options'][_0xf5f2('0x24')]?_[_0xf5f2('0x25')](_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x24')],function(_0xf6c58d){return{'model':db[_0xf6c58d[_0xf5f2('0x26')]],'as':_0xf6c58d['as'],'attributes':_0xf6c58d[_0xf5f2('0x22')],'include':_0xf6c58d[_0xf5f2('0x24')]?_[_0xf5f2('0x25')](_0xf6c58d['include'],function(_0xaa2602){return{'model':db[_0xaa2602[_0xf5f2('0x26')]],'as':_0xaa2602['as'],'attributes':_0xaa2602[_0xf5f2('0x22')],'include':_0xaa2602[_0xf5f2('0x24')]?_[_0xf5f2('0x25')](_0xaa2602[_0xf5f2('0x24')],function(_0x5b6672){return{'model':db[_0x5b6672['model']],'as':_0x5b6672['as'],'attributes':_0x5b6672[_0xf5f2('0x22')]};}):[]};}):[]};}):[]:[]})[_0xf5f2('0x11')](function(_0x11c771){logger['info']('GetUser',_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x27'),_0x34706d,JSON[_0xf5f2('0x16')](_0x11c771));_0x49dac2(_0x11c771);})[_0xf5f2('0x1c')](function(_0x1b381e){logger['error']('GetUser',_0x1b381e[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e['error'](0x1f4,_0x1b381e[_0xf5f2('0x19')]));});});};exports['ShowUser']=function(_0x45b643){var _0x31087c=this;return new Promise(function(_0x7b6817,_0x428770){return db[_0xf5f2('0x1d')][_0xf5f2('0x28')]({'raw':_0x45b643[_0xf5f2('0x1f')]?_0x45b643[_0xf5f2('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x45b643[_0xf5f2('0x1f')]?_0x45b643[_0xf5f2('0x1f')][_0xf5f2('0x21')]||null:null,'attributes':_0x45b643[_0xf5f2('0x1f')]?_0x45b643[_0xf5f2('0x1f')][_0xf5f2('0x22')]||null:null,'include':_0x45b643[_0xf5f2('0x1f')]?_0x45b643['options'][_0xf5f2('0x24')]?_[_0xf5f2('0x25')](_0x45b643['options'][_0xf5f2('0x24')],function(_0x4b8c42){return{'model':db[_0x4b8c42[_0xf5f2('0x26')]],'as':_0x4b8c42['as'],'attributes':_0x4b8c42[_0xf5f2('0x22')],'include':_0x4b8c42[_0xf5f2('0x24')]?_[_0xf5f2('0x25')](_0x4b8c42['include'],function(_0x5a98d7){return{'model':db[_0x5a98d7[_0xf5f2('0x26')]],'as':_0x5a98d7['as'],'attributes':_0x5a98d7[_0xf5f2('0x22')],'include':_0x5a98d7[_0xf5f2('0x24')]?_['map'](_0x5a98d7[_0xf5f2('0x24')],function(_0x4f7f80){return{'model':db[_0x4f7f80[_0xf5f2('0x26')]],'as':_0x4f7f80['as'],'attributes':_0x4f7f80['attributes']};}):[]};}):[]};}):[]:[]})[_0xf5f2('0x11')](function(_0x456764){logger['info'](_0xf5f2('0x29'),_0x45b643);logger[_0xf5f2('0x14')](_0xf5f2('0x29'),_0x45b643,JSON[_0xf5f2('0x16')](_0x456764));_0x7b6817(_0x456764);})['catch'](function(_0x5d2d82){logger[_0xf5f2('0x17')](_0xf5f2('0x29'),_0x5d2d82[_0xf5f2('0x19')],_0x45b643);_0x428770(_0x31087c[_0xf5f2('0x17')](0x1f4,_0x5d2d82[_0xf5f2('0x19')]));});});};exports[_0xf5f2('0x2a')]=function(_0x2bc20e){var _0x4c0ac7=this;return new Promise(function(_0x110fe5,_0x3b4ea6){var _0x536501;return db[_0xf5f2('0x1d')][_0xf5f2('0x28')]({'where':_0x2bc20e[_0xf5f2('0x1f')][_0xf5f2('0x21')]||{},'attributes':['id',_0xf5f2('0x2b'),_0xf5f2('0x2c'),_0xf5f2('0x2d'),_0xf5f2('0x2e')]})['then'](function(_0x31c3c){if(_0x31c3c){_0x536501=_0x31c3c;return db[_0xf5f2('0x2f')][_0xf5f2('0x30')]({'paused':0x1},{'where':{'UserId':_0x536501['id']},'individualHooks':!![]});}})['then'](function(){if(_0x536501){return db['MemberReport']['findAll']({'where':{'membername':_0x536501[_0xf5f2('0x2b')],'type':_0xf5f2('0x31'),'exitAt':null}});}})['then'](function(_0x106272){if(_0x536501){if(_0x106272&&_0x106272[_0xf5f2('0x32')]){var _0x28e33f=moment()[_0xf5f2('0x33')](_0xf5f2('0x34'));for(var _0x2b3b1c=0x0,_0x1a6ec1=_0x106272[_0xf5f2('0x32')];_0x2b3b1c<_0x1a6ec1;_0x2b3b1c++){_0x106272[_0x2b3b1c][_0xf5f2('0x35')]({'exitAt':_0x28e33f});}}}})[_0xf5f2('0x11')](function(){if(_0x536501){var _0x444317=[];var _0x4773cd=utils[_0xf5f2('0x36')]();_0x4773cd[_0xf5f2('0x37')](function(_0x4faeed){_0x444317[_0xf5f2('0x38')]({'channel':_0x4faeed,'membername':_0x536501['name'],'interface':_[_0xf5f2('0x39')](_0x536501[_0xf5f2('0x2e')])?util[_0xf5f2('0x33')](_0xf5f2('0x3a'),_0x536501[_0xf5f2('0x2b')]):_0x536501[_0xf5f2('0x2e')],'type':'PAUSE','enterAt':moment()[_0xf5f2('0x33')](_0xf5f2('0x34')),'data1':_0x2bc20e[_0xf5f2('0x3b')][_0xf5f2('0x3c')]||_0xf5f2('0x3d'),'role':_0x536501[_0xf5f2('0x2c')],'internal':_0x536501[_0xf5f2('0x2d')],'uniqueid':_0x2bc20e[_0xf5f2('0x3b')]['uniqueid']||null});});return db[_0xf5f2('0x3e')][_0xf5f2('0x3f')](_0x444317,{'individualHooks':!![]});}})[_0xf5f2('0x11')](function(){if(_0x536501){return _0x536501['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'pauseType':_0x2bc20e[_0xf5f2('0x3b')][_0xf5f2('0x3c')]||_0xf5f2('0x3d'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xf5f2('0x11')](function(_0x27c472){_0x110fe5(_0x27c472);})['catch'](function(_0x14aa81){_0x3b4ea6(_0x4c0ac7['error'](0x1f4,_0x14aa81[_0xf5f2('0x19')]));});});};exports['UnpauseUser']=function(_0x2cbd9d){var _0x5d9120=this;return new Promise(function(_0x2d9017,_0xb8ea3a){var _0xbb658c;return db[_0xf5f2('0x1d')]['findOne']({'where':_0x2cbd9d[_0xf5f2('0x1f')][_0xf5f2('0x21')]||{},'attributes':['id','name']})['then'](function(_0xc3d4f){if(_0xc3d4f){_0xbb658c=_0xc3d4f;if(_0x2cbd9d[_0xf5f2('0x3b')]['channel']&&!utils[_0xf5f2('0x40')](_0x2cbd9d[_0xf5f2('0x3b')][_0xf5f2('0x41')])){throw new Error(_0xf5f2('0x42'));}switch(_0x2cbd9d['body']['channel']){case _0xf5f2('0x43'):return db[_0xf5f2('0x2f')]['update']({'paused':0x0},{'where':{'UserId':_0xbb658c['id']}})[_0xf5f2('0x11')](function(){return db[_0xf5f2('0x3e')][_0xf5f2('0x28')]({'where':{'channel':_0x2cbd9d[_0xf5f2('0x3b')][_0xf5f2('0x41')],'membername':_0xbb658c[_0xf5f2('0x2b')],'type':_0xf5f2('0x31'),'exitAt':null}});})['then'](function(_0x59e8ef){if(_0x59e8ef){return _0x59e8ef[_0xf5f2('0x30')]({'exitAt':moment()[_0xf5f2('0x33')](_0xf5f2('0x34')),'data2':_0xf5f2('0x44')},{'individualHooks':!![]});}return null;})[_0xf5f2('0x11')](function(){return _0xbb658c['update']({'voicePause':![]});});case _0xf5f2('0x45'):case _0xf5f2('0x46'):case _0xf5f2('0x47'):case'sms':case _0xf5f2('0x48'):return db['MemberReport'][_0xf5f2('0x28')]({'where':{'channel':_0x2cbd9d[_0xf5f2('0x3b')][_0xf5f2('0x41')],'membername':_0xbb658c[_0xf5f2('0x2b')],'type':'PAUSE','exitAt':null}})['then'](function(_0x756f1f){return _0x756f1f['update']({'exitAt':moment()[_0xf5f2('0x33')](_0xf5f2('0x34')),'data2':'system'},{'individualHooks':!![]});})[_0xf5f2('0x11')](function(){var _0xa4c0be={};_[_0xf5f2('0x49')](_0xa4c0be,util['format'](_0xf5f2('0x4a'),_0x2cbd9d[_0xf5f2('0x3b')][_0xf5f2('0x41')],_0xf5f2('0x4b')),![]);return _0xbb658c['update'](_0xa4c0be);});default:return db[_0xf5f2('0x2f')]['update']({'paused':0x0},{'where':{'UserId':_0xbb658c['id']}})[_0xf5f2('0x11')](function(){return db[_0xf5f2('0x3e')][_0xf5f2('0x1e')]({'where':{'membername':_0xbb658c[_0xf5f2('0x2b')],'type':_0xf5f2('0x31'),'exitAt':null}});})['then'](function(_0xda8dda){var _0xacd80=[];_0xda8dda[_0xf5f2('0x37')](function(_0x212639){_0xacd80[_0xf5f2('0x38')](_0x212639['update']({'exitAt':moment()[_0xf5f2('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'}));});return BPromise[_0xf5f2('0x4c')](_0xacd80);})['then'](function(){return _0xbb658c[_0xf5f2('0x30')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});});}}})[_0xf5f2('0x11')](function(_0x420784){_0x2d9017(_0x420784);})[_0xf5f2('0x1c')](function(_0x5767fc){_0xb8ea3a(_0x5d9120[_0xf5f2('0x17')](0x1f4,_0x5767fc[_0xf5f2('0x19')]));});});};exports[_0xf5f2('0x4d')]=function(_0x18c41f){var _0x15b680=this;return new Promise(function(_0x35d868,_0x158768){var _0x4a7be9;return db[_0xf5f2('0x1d')][_0xf5f2('0x4e')]({'where':_0x18c41f[_0xf5f2('0x1f')][_0xf5f2('0x21')]||{},'attributes':['id','name']})[_0xf5f2('0x11')](function(_0x4cce08){if(_0x4cce08){_0x4a7be9=_0x4cce08;return db[_0xf5f2('0x2f')][_0xf5f2('0x4f')]({'where':{'membername':_0x4a7be9['name']},'individualHooks':!![]});}})[_0xf5f2('0x11')](function(){if(_0x4a7be9){return db[_0xf5f2('0x3e')][_0xf5f2('0x1e')]({'where':{'membername':_0x4a7be9[_0xf5f2('0x2b')],'exitAt':null}});}})[_0xf5f2('0x11')](function(_0x4bd113){if(_0x4a7be9){if(_0x4bd113&&_0x4bd113[_0xf5f2('0x32')]){var _0x21c107=[];_0x4bd113[_0xf5f2('0x37')](function(_0xbf9f55){_0x21c107[_0xf5f2('0x38')](_0xbf9f55[_0xf5f2('0x30')]({'exitAt':moment()['format'](_0xf5f2('0x34'))}));});return BPromise[_0xf5f2('0x4c')](_0x21c107);}}})['then'](function(){if(_0x4a7be9){return _0x4a7be9[_0xf5f2('0x30')]({'online':![],'lastLoginAt':null,'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xf5f2('0x11')](function(_0x377aad){_0x35d868(_0x377aad);})['catch'](function(_0x551cc9){_0x158768(_0x15b680['error'](0x1f4,_0x551cc9[_0xf5f2('0x19')]));});});};exports[_0xf5f2('0x50')]=function(_0x35f6a2){var _0x450691=this;return new Promise(function(_0x55da4d,_0x4d878e){var _0x278b76;var _0x3a98b4;var _0xc10cf3;var _0xe8a9b7;return db[_0xf5f2('0x1d')][_0xf5f2('0x4e')]({'where':_0x35f6a2[_0xf5f2('0x1f')][_0xf5f2('0x21')]||{},'attributes':['id',_0xf5f2('0x2b'),_0xf5f2('0x2c'),_0xf5f2('0x51'),'phone','internal','loginInPause',_0xf5f2('0x2e')]})[_0xf5f2('0x11')](function(_0x3d3181){if(_0x3d3181){_0x278b76=_0x3d3181;_0xe8a9b7=_0x35f6a2[_0xf5f2('0x3b')][_0xf5f2('0x2e')]?_0x35f6a2['body'][_0xf5f2('0x2e')]:util[_0xf5f2('0x33')](_0xf5f2('0x3a'),_0x278b76[_0xf5f2('0x2b')]);return db[_0xf5f2('0x1d')]['count']({'where':{'role':_0xf5f2('0x52'),'online':!![],'id':{'$ne':_0x278b76['id']}}});}})[_0xf5f2('0x11')](function(_0x517c15){if(_0x517c15){_0xc10cf3=_0x517c15;return require(_0xf5f2('0x53'))[_0xf5f2('0x54')]();}})[_0xf5f2('0x11')](function(_0x30ac41){if(_0x30ac41&&_0x30ac41['agents']&&_0xc10cf3>=_0x30ac41[_0xf5f2('0x55')]){throw new Error(_0xf5f2('0x56'));}})[_0xf5f2('0x11')](function(){if(_0x278b76){return db[_0xf5f2('0x2f')][_0xf5f2('0x4f')]({'where':{'membername':_0x278b76['name']},'individualHooks':!![]});}})['then'](function(){if(_0x278b76){return _0x278b76[_0xf5f2('0x57')]({'raw':!![]});}})[_0xf5f2('0x11')](function(_0x17eb69){if(_0x278b76){if(_0x17eb69){var _0xe3ea1e=[];_0x3a98b4=_0x17eb69;if(_0x3a98b4['length']){for(var _0x5a2f9f=0x0;_0x5a2f9f<_0x3a98b4[_0xf5f2('0x32')];_0x5a2f9f++){_0xe3ea1e['push'](db['UserVoiceQueueRt']['upsert']({'membername':_0x278b76['name'],'UserId':_0x278b76['id'],'queue_name':_0x3a98b4[_0x5a2f9f][_0xf5f2('0x2b')],'VoiceQueueId':_0x3a98b4[_0x5a2f9f]['id'],'interface':_0xe8a9b7,'paused':_0x278b76[_0xf5f2('0x58')]||![],'penalty':_0x3a98b4[_0x5a2f9f][_0xf5f2('0x59')]||0x0}));}return BPromise[_0xf5f2('0x4c')](_0xe3ea1e);}}}})[_0xf5f2('0x11')](function(){if(_0x278b76){return db[_0xf5f2('0x3e')][_0xf5f2('0x1e')]({'where':{'membername':_0x278b76[_0xf5f2('0x2b')],'exitAt':null}});}})[_0xf5f2('0x11')](function(_0x26b251){if(_0x278b76){if(_0x26b251&&_0x26b251[_0xf5f2('0x32')]){var _0x2afeac=[];_0x26b251[_0xf5f2('0x37')](function(_0x1680a6){_0x2afeac[_0xf5f2('0x38')](_0x1680a6[_0xf5f2('0x30')]({'exitAt':moment()[_0xf5f2('0x33')](_0xf5f2('0x34'))}));});return BPromise['all'](_0x2afeac);}}})[_0xf5f2('0x11')](function(_0x35299d){if(_0x278b76){var _0x21043b=[];var _0x2811ad=[];var _0x18c353=utils[_0xf5f2('0x36')]();var _0x16491c={'membername':_0x278b76[_0xf5f2('0x2b')],'interface':_0xe8a9b7,'enterAt':moment()['format'](_0xf5f2('0x34')),'role':_0x278b76['role'],'internal':_0x278b76['internal']};_0x18c353['forEach'](function(_0x53449e){_0x21043b['push'](_['merge']({'channel':_0x53449e,'type':_0xf5f2('0x5a'),'data1':_0xf5f2('0x5b'),'data2':_0xe8a9b7},_0x16491c));if(_0x278b76[_0xf5f2('0x58')]){_0x2811ad[_0xf5f2('0x38')](_[_0xf5f2('0x5c')]({'channel':_0x53449e,'type':_0xf5f2('0x31'),'data1':'LOGININPAUSE'},_0x16491c));}});return db['MemberReport'][_0xf5f2('0x3f')](_0x21043b['concat'](_0x2811ad),{'individualHooks':!![]});}})[_0xf5f2('0x11')](function(){if(_0x278b76){return _0x278b76[_0xf5f2('0x30')]({'online':!![],'lastLoginAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x278b76[_0xf5f2('0x58')]||![],'mailPause':_0x278b76[_0xf5f2('0x58')]||![],'chatPause':_0x278b76['loginInPause']||![],'faxPause':_0x278b76[_0xf5f2('0x58')]||![],'smsPause':_0x278b76[_0xf5f2('0x58')]||![],'openchannelPause':_0x278b76['loginInPause']||![],'pauseType':_0x278b76[_0xf5f2('0x58')]?_0xf5f2('0x5d'):null,'lastPauseAt':moment()[_0xf5f2('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0xe8a9b7});}})[_0xf5f2('0x11')](function(_0xc28adc){_0x55da4d(_0xc28adc);})[_0xf5f2('0x1c')](function(_0x3247c4){_0x4d878e(_0x450691[_0xf5f2('0x17')](0x1f4,_0x3247c4[_0xf5f2('0x19')]));});});};
\ No newline at end of file
+var _0xb10b=['destroy','length','LoginUser','loginInPause','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./user.socket','register','request','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','User,\x20%s,\x20%s','message','result','catch','GetUser','User','options','where','attributes','limit','include','map','model','ShowUser','find','raw','PauseUser','name','role','interface','UserVoiceQueueRt','MemberReport','findAll','format','updateAttributes','getChannels','forEach','push','isNil','SIP/%s','PAUSE','YYYY-MM-DD\x20HH:mm:ss','body','DEFAULT\x20PAUSE','internal','uniqueid','bulkCreate','type','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','update','system','chat','fax','sms','openchannel','set','Pause','all','LogoutUser'];(function(_0x105a35,_0x2e9145){var _0x1b89e6=function(_0x8182d8){while(--_0x8182d8){_0x105a35['push'](_0x105a35['shift']());}};_0x1b89e6(++_0x2e9145);}(_0xb10b,0x12a));var _0xbb10=function(_0x559233,_0x4f4408){_0x559233=_0x559233-0x0;var _0x1a9acb=_0xb10b[_0x559233];return _0x1a9acb;};'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});config[_0xbb10('0xb')]=_['defaults'](config[_0xbb10('0xb')],{'host':_0xbb10('0xc'),'port':0x18eb});var socket=require(_0xbb10('0xd'))(new Redis(config[_0xbb10('0xb')]));require(_0xbb10('0xe'))[_0xbb10('0xf')](socket);function respondWithRpcPromise(_0x229887,_0xa3adc8,_0x5ab04a){return new BPromise(function(_0x4e47f8,_0x20bd61){return client[_0xbb10('0x10')](_0x229887,_0x5ab04a)[_0xbb10('0x11')](function(_0x5e136d){logger[_0xbb10('0x12')]('User,\x20%s,\x20%s',_0xa3adc8,_0xbb10('0x13'));logger[_0xbb10('0x14')](_0xbb10('0x15'),_0xa3adc8,_0xbb10('0x13'),JSON[_0xbb10('0x16')](_0x5e136d));if(_0x5e136d[_0xbb10('0x17')]){if(_0x5e136d['error'][_0xbb10('0x18')]===0x1f4){logger[_0xbb10('0x17')](_0xbb10('0x19'),_0xa3adc8,_0x5e136d[_0xbb10('0x17')][_0xbb10('0x1a')]);return _0x20bd61(_0x5e136d[_0xbb10('0x17')][_0xbb10('0x1a')]);}logger[_0xbb10('0x17')](_0xbb10('0x19'),_0xa3adc8,_0x5e136d[_0xbb10('0x17')]['message']);return _0x4e47f8(_0x5e136d[_0xbb10('0x17')][_0xbb10('0x1a')]);}else{logger[_0xbb10('0x12')](_0xbb10('0x19'),_0xa3adc8,_0xbb10('0x13'));_0x4e47f8(_0x5e136d[_0xbb10('0x1b')][_0xbb10('0x1a')]);}})[_0xbb10('0x1c')](function(_0xbf2906){logger[_0xbb10('0x17')]('User,\x20%s,\x20%s',_0xa3adc8,_0xbf2906);_0x20bd61(_0xbf2906);});});}exports[_0xbb10('0x1d')]=function(_0x19f48d){var _0x388fab=this;return new Promise(function(_0x109908,_0xdf237d){return db[_0xbb10('0x1e')]['findAll']({'raw':_0x19f48d[_0xbb10('0x1f')]?_0x19f48d[_0xbb10('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x19f48d['options']?_0x19f48d[_0xbb10('0x1f')][_0xbb10('0x20')]||null:null,'attributes':_0x19f48d[_0xbb10('0x1f')]?_0x19f48d[_0xbb10('0x1f')][_0xbb10('0x21')]||null:null,'limit':_0x19f48d[_0xbb10('0x1f')]?_0x19f48d[_0xbb10('0x1f')][_0xbb10('0x22')]||null:null,'include':_0x19f48d[_0xbb10('0x1f')]?_0x19f48d[_0xbb10('0x1f')][_0xbb10('0x23')]?_[_0xbb10('0x24')](_0x19f48d['options']['include'],function(_0x4fb5e0){return{'model':db[_0x4fb5e0[_0xbb10('0x25')]],'as':_0x4fb5e0['as'],'attributes':_0x4fb5e0[_0xbb10('0x21')],'include':_0x4fb5e0[_0xbb10('0x23')]?_['map'](_0x4fb5e0[_0xbb10('0x23')],function(_0x24d586){return{'model':db[_0x24d586[_0xbb10('0x25')]],'as':_0x24d586['as'],'attributes':_0x24d586[_0xbb10('0x21')],'include':_0x24d586[_0xbb10('0x23')]?_[_0xbb10('0x24')](_0x24d586[_0xbb10('0x23')],function(_0x4aabb9){return{'model':db[_0x4aabb9[_0xbb10('0x25')]],'as':_0x4aabb9['as'],'attributes':_0x4aabb9[_0xbb10('0x21')]};}):[]};}):[]};}):[]:[]})[_0xbb10('0x11')](function(_0x2e0249){logger[_0xbb10('0x12')](_0xbb10('0x1d'),_0x19f48d);logger['debug'](_0xbb10('0x1d'),_0x19f48d,JSON['stringify'](_0x2e0249));_0x109908(_0x2e0249);})[_0xbb10('0x1c')](function(_0x56f2da){logger[_0xbb10('0x17')](_0xbb10('0x1d'),_0x56f2da[_0xbb10('0x1a')],_0x19f48d);_0xdf237d(_0x388fab['error'](0x1f4,_0x56f2da['message']));});});};exports[_0xbb10('0x26')]=function(_0x34f65e){var _0x4f590d=this;return new Promise(function(_0x359ad4,_0x37dde7){return db[_0xbb10('0x1e')][_0xbb10('0x27')]({'raw':_0x34f65e[_0xbb10('0x1f')]?_0x34f65e[_0xbb10('0x1f')][_0xbb10('0x28')]===undefined?!![]:![]:!![],'where':_0x34f65e['options']?_0x34f65e[_0xbb10('0x1f')][_0xbb10('0x20')]||null:null,'attributes':_0x34f65e[_0xbb10('0x1f')]?_0x34f65e[_0xbb10('0x1f')][_0xbb10('0x21')]||null:null,'include':_0x34f65e[_0xbb10('0x1f')]?_0x34f65e[_0xbb10('0x1f')][_0xbb10('0x23')]?_[_0xbb10('0x24')](_0x34f65e['options'][_0xbb10('0x23')],function(_0x150107){return{'model':db[_0x150107[_0xbb10('0x25')]],'as':_0x150107['as'],'attributes':_0x150107[_0xbb10('0x21')],'include':_0x150107['include']?_[_0xbb10('0x24')](_0x150107['include'],function(_0x4e2754){return{'model':db[_0x4e2754[_0xbb10('0x25')]],'as':_0x4e2754['as'],'attributes':_0x4e2754[_0xbb10('0x21')],'include':_0x4e2754[_0xbb10('0x23')]?_[_0xbb10('0x24')](_0x4e2754[_0xbb10('0x23')],function(_0x29d11a){return{'model':db[_0x29d11a['model']],'as':_0x29d11a['as'],'attributes':_0x29d11a[_0xbb10('0x21')]};}):[]};}):[]};}):[]:[]})[_0xbb10('0x11')](function(_0x52de31){logger['info']('ShowUser',_0x34f65e);logger[_0xbb10('0x14')](_0xbb10('0x26'),_0x34f65e,JSON[_0xbb10('0x16')](_0x52de31));_0x359ad4(_0x52de31);})['catch'](function(_0x3c0cd7){logger[_0xbb10('0x17')](_0xbb10('0x26'),_0x3c0cd7['message'],_0x34f65e);_0x37dde7(_0x4f590d[_0xbb10('0x17')](0x1f4,_0x3c0cd7[_0xbb10('0x1a')]));});});};exports[_0xbb10('0x29')]=function(_0x446f49){var _0x4f1cdd=this;return new Promise(function(_0xd238e9,_0x110eb5){var _0x5835fd;return db[_0xbb10('0x1e')][_0xbb10('0x27')]({'where':_0x446f49[_0xbb10('0x1f')][_0xbb10('0x20')]||{},'attributes':['id',_0xbb10('0x2a'),_0xbb10('0x2b'),'internal',_0xbb10('0x2c')]})[_0xbb10('0x11')](function(_0x3e7b4c){if(_0x3e7b4c){_0x5835fd=_0x3e7b4c;return db[_0xbb10('0x2d')]['update']({'paused':0x1},{'where':{'UserId':_0x5835fd['id']},'individualHooks':!![]});}})[_0xbb10('0x11')](function(){if(_0x5835fd){return db[_0xbb10('0x2e')][_0xbb10('0x2f')]({'where':{'membername':_0x5835fd[_0xbb10('0x2a')],'type':'PAUSE','exitAt':null}});}})[_0xbb10('0x11')](function(_0x202c60){if(_0x5835fd){if(_0x202c60&&_0x202c60['length']){var _0x5d9a4f=moment()[_0xbb10('0x30')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x318984=0x0,_0x180933=_0x202c60['length'];_0x318984<_0x180933;_0x318984++){_0x202c60[_0x318984][_0xbb10('0x31')]({'exitAt':_0x5d9a4f});}}}})[_0xbb10('0x11')](function(){if(_0x5835fd){var _0x474e99=[];var _0x5cf4f8=utils[_0xbb10('0x32')]();_0x5cf4f8[_0xbb10('0x33')](function(_0x3b9fdf){_0x474e99[_0xbb10('0x34')]({'channel':_0x3b9fdf,'membername':_0x5835fd[_0xbb10('0x2a')],'interface':_[_0xbb10('0x35')](_0x5835fd[_0xbb10('0x2c')])?util[_0xbb10('0x30')](_0xbb10('0x36'),_0x5835fd[_0xbb10('0x2a')]):_0x5835fd[_0xbb10('0x2c')],'type':_0xbb10('0x37'),'enterAt':moment()['format'](_0xbb10('0x38')),'data1':_0x446f49[_0xbb10('0x39')]['type']||_0xbb10('0x3a'),'role':_0x5835fd[_0xbb10('0x2b')],'internal':_0x5835fd[_0xbb10('0x3b')],'uniqueid':_0x446f49[_0xbb10('0x39')][_0xbb10('0x3c')]||null});});return db[_0xbb10('0x2e')][_0xbb10('0x3d')](_0x474e99,{'individualHooks':!![]});}})['then'](function(){if(_0x5835fd){return _0x5835fd['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'pauseType':_0x446f49[_0xbb10('0x39')][_0xbb10('0x3e')]||_0xbb10('0x3a'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xbb10('0x11')](function(_0x34cf4e){_0xd238e9(_0x34cf4e);})[_0xbb10('0x1c')](function(_0xf820fe){_0x110eb5(_0x4f1cdd[_0xbb10('0x17')](0x1f4,_0xf820fe[_0xbb10('0x1a')]));});});};exports[_0xbb10('0x3f')]=function(_0x460788){var _0x2626d8=this;return new Promise(function(_0x3d7e7e,_0x550111){var _0x5eafac;return db[_0xbb10('0x1e')][_0xbb10('0x40')]({'where':_0x460788[_0xbb10('0x1f')][_0xbb10('0x20')]||{},'attributes':['id',_0xbb10('0x2a')]})[_0xbb10('0x11')](function(_0x358e7e){if(_0x358e7e){_0x5eafac=_0x358e7e;if(_0x460788[_0xbb10('0x39')][_0xbb10('0x41')]&&!utils[_0xbb10('0x42')](_0x460788[_0xbb10('0x39')][_0xbb10('0x41')])){throw new Error(_0xbb10('0x43'));}switch(_0x460788[_0xbb10('0x39')][_0xbb10('0x41')]){case'voice':return db[_0xbb10('0x2d')]['update']({'paused':0x0},{'where':{'UserId':_0x5eafac['id']}})[_0xbb10('0x11')](function(){return db[_0xbb10('0x2e')][_0xbb10('0x27')]({'where':{'channel':_0x460788[_0xbb10('0x39')][_0xbb10('0x41')],'membername':_0x5eafac[_0xbb10('0x2a')],'type':_0xbb10('0x37'),'exitAt':null}});})[_0xbb10('0x11')](function(_0x180400){if(_0x180400){return _0x180400[_0xbb10('0x44')]({'exitAt':moment()[_0xbb10('0x30')](_0xbb10('0x38')),'data2':_0xbb10('0x45')},{'individualHooks':!![]});}return null;})[_0xbb10('0x11')](function(){return _0x5eafac[_0xbb10('0x44')]({'voicePause':![]});});case'mail':case _0xbb10('0x46'):case _0xbb10('0x47'):case _0xbb10('0x48'):case _0xbb10('0x49'):return db[_0xbb10('0x2e')][_0xbb10('0x27')]({'where':{'channel':_0x460788['body'][_0xbb10('0x41')],'membername':_0x5eafac[_0xbb10('0x2a')],'type':_0xbb10('0x37'),'exitAt':null}})[_0xbb10('0x11')](function(_0x432728){return _0x432728[_0xbb10('0x44')]({'exitAt':moment()[_0xbb10('0x30')](_0xbb10('0x38')),'data2':_0xbb10('0x45')},{'individualHooks':!![]});})[_0xbb10('0x11')](function(){var _0x2eb05a={};_[_0xbb10('0x4a')](_0x2eb05a,util[_0xbb10('0x30')]('%s%s',_0x460788['body'][_0xbb10('0x41')],_0xbb10('0x4b')),![]);return _0x5eafac[_0xbb10('0x44')](_0x2eb05a);});default:return db[_0xbb10('0x2d')]['update']({'paused':0x0},{'where':{'UserId':_0x5eafac['id']}})['then'](function(){return db[_0xbb10('0x2e')][_0xbb10('0x2f')]({'where':{'membername':_0x5eafac[_0xbb10('0x2a')],'type':_0xbb10('0x37'),'exitAt':null}});})[_0xbb10('0x11')](function(_0x3e9753){var _0x45c0dc=[];_0x3e9753['forEach'](function(_0x117e84){_0x45c0dc[_0xbb10('0x34')](_0x117e84['update']({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xbb10('0x45')}));});return BPromise[_0xbb10('0x4c')](_0x45c0dc);})[_0xbb10('0x11')](function(){return _0x5eafac['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});});}}})['then'](function(_0x5846d1){_0x3d7e7e(_0x5846d1);})[_0xbb10('0x1c')](function(_0x249b33){_0x550111(_0x2626d8[_0xbb10('0x17')](0x1f4,_0x249b33['message']));});});};exports[_0xbb10('0x4d')]=function(_0x13131c){var _0x5a6538=this;return new Promise(function(_0x4a560c,_0x27d7b9){var _0x308896;return db[_0xbb10('0x1e')][_0xbb10('0x40')]({'where':_0x13131c['options'][_0xbb10('0x20')]||{},'attributes':['id',_0xbb10('0x2a')]})[_0xbb10('0x11')](function(_0x5202d7){if(_0x5202d7){_0x308896=_0x5202d7;return db[_0xbb10('0x2d')][_0xbb10('0x4e')]({'where':{'membername':_0x308896[_0xbb10('0x2a')]},'individualHooks':!![]});}})['then'](function(){if(_0x308896){return db[_0xbb10('0x2e')][_0xbb10('0x2f')]({'where':{'membername':_0x308896[_0xbb10('0x2a')],'exitAt':null}});}})[_0xbb10('0x11')](function(_0x5e4a6e){if(_0x308896){if(_0x5e4a6e&&_0x5e4a6e[_0xbb10('0x4f')]){var _0x258e55=[];_0x5e4a6e[_0xbb10('0x33')](function(_0x2d0f4b){_0x258e55['push'](_0x2d0f4b[_0xbb10('0x44')]({'exitAt':moment()[_0xbb10('0x30')](_0xbb10('0x38'))}));});return BPromise[_0xbb10('0x4c')](_0x258e55);}}})[_0xbb10('0x11')](function(){if(_0x308896){return _0x308896[_0xbb10('0x44')]({'online':![],'lastLoginAt':null,'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xbb10('0x11')](function(_0x4a30c5){_0x4a560c(_0x4a30c5);})['catch'](function(_0x5acd5e){_0x27d7b9(_0x5a6538[_0xbb10('0x17')](0x1f4,_0x5acd5e[_0xbb10('0x1a')]));});});};exports[_0xbb10('0x50')]=function(_0x5c9afc){var _0x5cd089=this;return new Promise(function(_0x46f462,_0x1b11c0){var _0xd9e743;var _0x3a9677;var _0x260e06;var _0x1ad2ed;return db['User'][_0xbb10('0x40')]({'where':_0x5c9afc[_0xbb10('0x1f')][_0xbb10('0x20')]||{},'attributes':['id',_0xbb10('0x2a'),_0xbb10('0x2b'),'mobile','phone','internal',_0xbb10('0x51'),_0xbb10('0x2c')]})[_0xbb10('0x11')](function(_0x21459e){if(_0x21459e){_0xd9e743=_0x21459e;_0x1ad2ed=_0x5c9afc[_0xbb10('0x39')][_0xbb10('0x2c')]?_0x5c9afc['body'][_0xbb10('0x2c')]:util['format']('SIP/%s',_0xd9e743['name']);return db[_0xbb10('0x1e')][_0xbb10('0x52')]({'where':{'role':_0xbb10('0x53'),'online':!![],'id':{'$ne':_0xd9e743['id']}}});}})[_0xbb10('0x11')](function(_0x5ce94f){if(_0x5ce94f){_0x260e06=_0x5ce94f;return require(_0xbb10('0x54'))['getLicense']();}})['then'](function(_0x165fe9){if(_0x165fe9&&_0x165fe9[_0xbb10('0x55')]&&_0x260e06>=_0x165fe9[_0xbb10('0x55')]){throw new Error(_0xbb10('0x56'));}})[_0xbb10('0x11')](function(){if(_0xd9e743){return db['UserVoiceQueueRt'][_0xbb10('0x4e')]({'where':{'membername':_0xd9e743[_0xbb10('0x2a')]},'individualHooks':!![]});}})[_0xbb10('0x11')](function(){if(_0xd9e743){return _0xd9e743[_0xbb10('0x57')]({'raw':!![]});}})[_0xbb10('0x11')](function(_0x27f42f){if(_0xd9e743){if(_0x27f42f){var _0x174395=[];_0x3a9677=_0x27f42f;if(_0x3a9677['length']){for(var _0x387b10=0x0;_0x387b10<_0x3a9677[_0xbb10('0x4f')];_0x387b10++){_0x174395[_0xbb10('0x34')](db[_0xbb10('0x2d')][_0xbb10('0x58')]({'membername':_0xd9e743[_0xbb10('0x2a')],'UserId':_0xd9e743['id'],'queue_name':_0x3a9677[_0x387b10][_0xbb10('0x2a')],'VoiceQueueId':_0x3a9677[_0x387b10]['id'],'interface':_0x1ad2ed,'paused':_0xd9e743[_0xbb10('0x51')]||![],'penalty':_0x3a9677[_0x387b10]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0xbb10('0x4c')](_0x174395);}}}})[_0xbb10('0x11')](function(){if(_0xd9e743){return db[_0xbb10('0x2e')]['findAll']({'where':{'membername':_0xd9e743['name'],'exitAt':null}});}})['then'](function(_0x23286d){if(_0xd9e743){if(_0x23286d&&_0x23286d['length']){var _0x4e3d6a=[];_0x23286d[_0xbb10('0x33')](function(_0x3ee56b){_0x4e3d6a[_0xbb10('0x34')](_0x3ee56b[_0xbb10('0x44')]({'exitAt':moment()[_0xbb10('0x30')](_0xbb10('0x38'))}));});return BPromise[_0xbb10('0x4c')](_0x4e3d6a);}}})[_0xbb10('0x11')](function(_0x188b97){if(_0xd9e743){var _0x5206e1=[];var _0x318a14=[];var _0x1351eb=utils[_0xbb10('0x32')]();var _0x35b811={'membername':_0xd9e743['name'],'interface':_0x1ad2ed,'enterAt':moment()['format'](_0xbb10('0x38')),'role':_0xd9e743[_0xbb10('0x2b')],'internal':_0xd9e743[_0xbb10('0x3b')]};_0x1351eb[_0xbb10('0x33')](function(_0x5ee705){_0x5206e1[_0xbb10('0x34')](_[_0xbb10('0x59')]({'channel':_0x5ee705,'type':_0xbb10('0x5a'),'data1':_0xbb10('0x5b'),'data2':_0x1ad2ed},_0x35b811));if(_0xd9e743[_0xbb10('0x51')]){_0x318a14['push'](_['merge']({'channel':_0x5ee705,'type':_0xbb10('0x37'),'data1':_0xbb10('0x5c')},_0x35b811));}});return db[_0xbb10('0x2e')]['bulkCreate'](_0x5206e1[_0xbb10('0x5d')](_0x318a14),{'individualHooks':!![]});}})[_0xbb10('0x11')](function(){if(_0xd9e743){return _0xd9e743['update']({'online':!![],'lastLoginAt':moment()['format'](_0xbb10('0x38')),'voicePause':_0xd9e743[_0xbb10('0x51')]||![],'mailPause':_0xd9e743[_0xbb10('0x51')]||![],'chatPause':_0xd9e743['loginInPause']||![],'faxPause':_0xd9e743[_0xbb10('0x51')]||![],'smsPause':_0xd9e743[_0xbb10('0x51')]||![],'openchannelPause':_0xd9e743[_0xbb10('0x51')]||![],'pauseType':_0xd9e743[_0xbb10('0x51')]?_0xbb10('0x5c'):null,'lastPauseAt':moment()[_0xbb10('0x30')](_0xbb10('0x38')),'interface':_0x1ad2ed});}})[_0xbb10('0x11')](function(_0x3e6246){_0x46f462(_0x3e6246);})['catch'](function(_0x3367d4){_0x1b11c0(_0x5cd089[_0xbb10('0x17')](0x1f4,_0x3367d4[_0xbb10('0x1a')]));});});};
\ No newline at end of file
index 3e733af..9714b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ca9=['save','remove','update','removeListener','length','user:'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x6ca9,0x1a4));var _0x96ca=function(_0x4295df,_0x278a3e){_0x4295df=_0x4295df-0x0;var _0x5e6dd8=_0x6ca9[_0x4295df];return _0x5e6dd8;};'use strict';var UserEvents=require('./user.events');var events=[_0x96ca('0x0'),_0x96ca('0x1'),_0x96ca('0x2')];function createListener(_0x3780c5,_0x2764da){return function(_0x48c8b8){_0x2764da['emit'](_0x3780c5,_0x48c8b8);};}function removeListener(_0xc5d013,_0x1924e8){return function(){UserEvents[_0x96ca('0x3')](_0xc5d013,_0x1924e8);};}exports['register']=function(_0xf1e9f7){for(var _0x34c288=0x0,_0xe8c0a7=events[_0x96ca('0x4')];_0x34c288<_0xe8c0a7;_0x34c288++){var _0x208ce2=events[_0x34c288];var _0x488e1b=createListener(_0x96ca('0x5')+_0x208ce2,_0xf1e9f7);UserEvents['on'](_0x208ce2,_0x488e1b);}};
\ No newline at end of file
+var _0x60a3=['remove','update','emit','register','length','./user.events','save'];(function(_0x4f0c2b,_0x2c9d14){var _0x526436=function(_0x2e13b6){while(--_0x2e13b6){_0x4f0c2b['push'](_0x4f0c2b['shift']());}};_0x526436(++_0x2c9d14);}(_0x60a3,0x155));var _0x360a=function(_0xbb43a9,_0x49a46b){_0xbb43a9=_0xbb43a9-0x0;var _0x59d23e=_0x60a3[_0xbb43a9];return _0x59d23e;};'use strict';var UserEvents=require(_0x360a('0x0'));var events=[_0x360a('0x1'),_0x360a('0x2'),_0x360a('0x3')];function createListener(_0x26dec4,_0x2d36f0){return function(_0xad23a5){_0x2d36f0[_0x360a('0x4')](_0x26dec4,_0xad23a5);};}function removeListener(_0x227dc3,_0x31e17b){return function(){UserEvents['removeListener'](_0x227dc3,_0x31e17b);};}exports[_0x360a('0x5')]=function(_0x4ea1f7){for(var _0x25b4d1=0x0,_0x506c08=events[_0x360a('0x6')];_0x25b4d1<_0x506c08;_0x25b4d1++){var _0x51c0f7=events[_0x25b4d1];var _0x2c0b1a=createListener('user:'+_0x51c0f7,_0x4ea1f7);UserEvents['on'](_0x51c0f7,_0x2c0b1a);}};
\ No newline at end of file
index 00a5a45..a5f8921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d49=['exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2aee30,_0x5465df){var _0x1f3407=function(_0x33d351){while(--_0x33d351){_0x2aee30['push'](_0x2aee30['shift']());}};_0x1f3407(++_0x5465df);}(_0x3d49,0x151));var _0x93d4=function(_0xd31621,_0x17b567){_0xd31621=_0xd31621-0x0;var _0x2e7ac0=_0x3d49[_0xd31621];return _0x2e7ac0;};'use strict';var multer=require('multer');var util=require(_0x93d4('0x0'));var path=require(_0x93d4('0x1'));var timeout=require(_0x93d4('0x2'));var express=require(_0x93d4('0x3'));var router=express['Router']();var auth=require(_0x93d4('0x4'));var interaction=require(_0x93d4('0x5'));var config=require(_0x93d4('0x6'));module[_0x93d4('0x7')]=router;
\ No newline at end of file
+var _0x0a6b=['../../components/auth/service','../../components/interaction/service','../../config/environment','multer','express'];(function(_0x3a4e68,_0x51a37a){var _0x10ff21=function(_0x1e06f0){while(--_0x1e06f0){_0x3a4e68['push'](_0x3a4e68['shift']());}};_0x10ff21(++_0x51a37a);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x3ef9a2,_0x3cd67f){_0x3ef9a2=_0x3ef9a2-0x0;var _0x52a458=_0x0a6b[_0x3ef9a2];return _0x52a458;};'use strict';var multer=require(_0xb0a6('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb0a6('0x1'));var router=express['Router']();var auth=require(_0xb0a6('0x2'));var interaction=require(_0xb0a6('0x3'));var config=require(_0xb0a6('0x4'));module['exports']=router;
\ No newline at end of file
index 158b2dc..9d56102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eb6=['exports','INTEGER'];(function(_0x45ab4a,_0x309d40){var _0x4f09b6=function(_0x5b3aac){while(--_0x5b3aac){_0x45ab4a['push'](_0x45ab4a['shift']());}};_0x4f09b6(++_0x309d40);}(_0x3eb6,0x1de));var _0x63eb=function(_0x220d1a,_0x31f1e3){_0x220d1a=_0x220d1a-0x0;var _0x4f0fe3=_0x3eb6[_0x220d1a];return _0x4f0fe3;};'use strict';var Sequelize=require('sequelize');module[_0x63eb('0x0')]={'penalty':{'type':Sequelize[_0x63eb('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5e5f=['sequelize','exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5e5f,0x168));var _0xf5e5=function(_0x244623,_0x12c304){_0x244623=_0x244623-0x0;var _0x27e317=_0x5e5f[_0x244623];return _0x27e317;};'use strict';var Sequelize=require(_0xf5e5('0x0'));module[_0xf5e5('0x1')]={'penalty':{'type':Sequelize[_0xf5e5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index d004abe..ea8d59b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c66=['exports','define','UserChatQueue','user_has_chat_queues','api','moment','bluebird','request-promise','./userChatQueue.attributes'];(function(_0x223b71,_0x597bfb){var _0x4131e4=function(_0x411d23){while(--_0x411d23){_0x223b71['push'](_0x223b71['shift']());}};_0x4131e4(++_0x597bfb);}(_0x3c66,0x8b));var _0x63c6=function(_0x137723,_0x102093){_0x137723=_0x137723-0x0;var _0xa0de31=_0x3c66[_0x137723];return _0xa0de31;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x63c6('0x0'));var moment=require(_0x63c6('0x1'));var BPromise=require(_0x63c6('0x2'));var rp=require(_0x63c6('0x3'));var attributes=require(_0x63c6('0x4'));module[_0x63c6('0x5')]=function(_0x104c0b,_0x192ce0){return _0x104c0b[_0x63c6('0x6')](_0x63c6('0x7'),attributes,{'tableName':_0x63c6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x28f2=['exports','define','UserChatQueue','lodash','util','../../config/logger','api','moment','request-promise','./userChatQueue.attributes'];(function(_0x5cce8f,_0x45f400){var _0x2f30ac=function(_0x52b913){while(--_0x52b913){_0x5cce8f['push'](_0x5cce8f['shift']());}};_0x2f30ac(++_0x45f400);}(_0x28f2,0x193));var _0x228f=function(_0x4914cf,_0x9745fd){_0x4914cf=_0x4914cf-0x0;var _0x5ead11=_0x28f2[_0x4914cf];return _0x5ead11;};'use strict';var _=require(_0x228f('0x0'));var util=require(_0x228f('0x1'));var logger=require(_0x228f('0x2'))(_0x228f('0x3'));var moment=require(_0x228f('0x4'));var BPromise=require('bluebird');var rp=require(_0x228f('0x5'));var attributes=require(_0x228f('0x6'));module[_0x228f('0x7')]=function(_0x4303c3,_0x2bb7d7){return _0x4303c3[_0x228f('0x8')](_0x228f('0x9'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a8618f..50aafe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81b6=['request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xbe35f,_0x5db730){var _0x53774a=function(_0x5f4e81){while(--_0x5f4e81){_0xbe35f['push'](_0xbe35f['shift']());}};_0x53774a(++_0x5db730);}(_0x81b6,0x137));var _0x681b=function(_0x12ff07,_0x1644e7){_0x12ff07=_0x12ff07-0x0;var _0xed1a1f=_0x81b6[_0x12ff07];return _0xed1a1f;};'use strict';var _=require(_0x681b('0x0'));var util=require(_0x681b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x681b('0x2'));var fs=require('fs');var Redis=require(_0x681b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x681b('0x4'));var logger=require(_0x681b('0x5'))(_0x681b('0x6'));var config=require(_0x681b('0x7'));var jayson=require(_0x681b('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x24fec8,_0x50b50b,_0x2b72bd){return new BPromise(function(_0x3bf39b,_0x48eaf9){return client[_0x681b('0x9')](_0x24fec8,_0x2b72bd)[_0x681b('0xa')](function(_0x7dfb40){logger[_0x681b('0xb')](_0x681b('0xc'),_0x50b50b,_0x681b('0xd'));logger[_0x681b('0xe')](_0x681b('0xf'),_0x50b50b,'request\x20sent',JSON[_0x681b('0x10')](_0x7dfb40));if(_0x7dfb40[_0x681b('0x11')]){if(_0x7dfb40[_0x681b('0x11')][_0x681b('0x12')]===0x1f4){logger[_0x681b('0x11')](_0x681b('0xc'),_0x50b50b,_0x7dfb40[_0x681b('0x11')]['message']);return _0x48eaf9(_0x7dfb40[_0x681b('0x11')]['message']);}logger[_0x681b('0x11')]('UserChatQueue,\x20%s,\x20%s',_0x50b50b,_0x7dfb40[_0x681b('0x11')][_0x681b('0x13')]);return _0x3bf39b(_0x7dfb40[_0x681b('0x11')]['message']);}else{logger[_0x681b('0xb')](_0x681b('0xc'),_0x50b50b,'request\x20sent');_0x3bf39b(_0x7dfb40['result'][_0x681b('0x13')]);}})['catch'](function(_0x781536){logger['error'](_0x681b('0xc'),_0x50b50b,_0x781536);_0x48eaf9(_0x781536);});});}
\ No newline at end of file
+var _0x9f78=['message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4cd690,_0x4797cc){var _0x4a74a9=function(_0x4cbbc5){while(--_0x4cbbc5){_0x4cd690['push'](_0x4cd690['shift']());}};_0x4a74a9(++_0x4797cc);}(_0x9f78,0x76));var _0x89f7=function(_0x271d24,_0x26b059){_0x271d24=_0x271d24-0x0;var _0x8f31e2=_0x9f78[_0x271d24];return _0x8f31e2;};'use strict';var _=require(_0x89f7('0x0'));var util=require(_0x89f7('0x1'));var moment=require(_0x89f7('0x2'));var BPromise=require(_0x89f7('0x3'));var rs=require(_0x89f7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x89f7('0x5'))['db'];var utils=require(_0x89f7('0x6'));var logger=require('../../config/logger')(_0x89f7('0x7'));var config=require('../../config/environment');var jayson=require(_0x89f7('0x8'));var client=jayson[_0x89f7('0x9')][_0x89f7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3400f7,_0xa9269b,_0x4b8d40){return new BPromise(function(_0x3bf576,_0x5e1074){return client['request'](_0x3400f7,_0x4b8d40)[_0x89f7('0xb')](function(_0x5e302c){logger[_0x89f7('0xc')](_0x89f7('0xd'),_0xa9269b,_0x89f7('0xe'));logger[_0x89f7('0xf')](_0x89f7('0x10'),_0xa9269b,_0x89f7('0xe'),JSON[_0x89f7('0x11')](_0x5e302c));if(_0x5e302c[_0x89f7('0x12')]){if(_0x5e302c[_0x89f7('0x12')][_0x89f7('0x13')]===0x1f4){logger['error'](_0x89f7('0xd'),_0xa9269b,_0x5e302c[_0x89f7('0x12')][_0x89f7('0x14')]);return _0x5e1074(_0x5e302c[_0x89f7('0x12')]['message']);}logger[_0x89f7('0x12')](_0x89f7('0xd'),_0xa9269b,_0x5e302c[_0x89f7('0x12')]['message']);return _0x3bf576(_0x5e302c[_0x89f7('0x12')][_0x89f7('0x14')]);}else{logger[_0x89f7('0xc')](_0x89f7('0xd'),_0xa9269b,'request\x20sent');_0x3bf576(_0x5e302c[_0x89f7('0x15')][_0x89f7('0x14')]);}})[_0x89f7('0x16')](function(_0x56e7f8){logger[_0x89f7('0x12')](_0x89f7('0xd'),_0xa9269b,_0x56e7f8);_0x5e1074(_0x56e7f8);});});}
\ No newline at end of file
index df632e4..650952f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','exports','multer','util'];(function(_0x11a5dc,_0xae1a0e){var _0x2ddb08=function(_0x1c0fd0){while(--_0x1c0fd0){_0x11a5dc['push'](_0x11a5dc['shift']());}};_0x2ddb08(++_0xae1a0e);}(_0xeff8,0x186));var _0x8eff=function(_0x1ca9e9,_0x1c4391){_0x1ca9e9=_0x1ca9e9-0x0;var _0x309f3c=_0xeff8[_0x1ca9e9];return _0x309f3c;};'use strict';var multer=require(_0x8eff('0x0'));var util=require(_0x8eff('0x1'));var path=require('path');var timeout=require(_0x8eff('0x2'));var express=require(_0x8eff('0x3'));var router=express[_0x8eff('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0x8eff('0x5'));var config=require(_0x8eff('0x6'));module[_0x8eff('0x7')]=router;
\ No newline at end of file
+var _0x8cad=['../../components/auth/service','../../components/interaction/service','../../config/environment','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x576543,_0x1155e8){var _0x10bd36=function(_0x603c6b){while(--_0x603c6b){_0x576543['push'](_0x576543['shift']());}};_0x10bd36(++_0x1155e8);}(_0x8cad,0xfe));var _0xd8ca=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0x8cad[_0x22b68a];return _0x1ac67a;};'use strict';var multer=require(_0xd8ca('0x0'));var util=require(_0xd8ca('0x1'));var path=require(_0xd8ca('0x2'));var timeout=require(_0xd8ca('0x3'));var express=require(_0xd8ca('0x4'));var router=express[_0xd8ca('0x5')]();var auth=require(_0xd8ca('0x6'));var interaction=require(_0xd8ca('0x7'));var config=require(_0xd8ca('0x8'));module[_0xd8ca('0x9')]=router;
\ No newline at end of file
index e6c4969..a20eb30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25aa=['STRING','sequelize','INTEGER'];(function(_0xf0330b,_0x814253){var _0x538518=function(_0x9c7d43){while(--_0x9c7d43){_0xf0330b['push'](_0xf0330b['shift']());}};_0x538518(++_0x814253);}(_0x25aa,0x151));var _0xa25a=function(_0xf26c2e,_0x56c3ea){_0xf26c2e=_0xf26c2e-0x0;var _0x46ecb4=_0x25aa[_0xf26c2e];return _0x46ecb4;};'use strict';var Sequelize=require(_0xa25a('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xa25a('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xa25a('0x2')]}};
\ No newline at end of file
+var _0x5cd3=['sequelize','exports','INTEGER','STRING'];(function(_0x47da40,_0xc5227a){var _0x111013=function(_0x3981ad){while(--_0x3981ad){_0x47da40['push'](_0x47da40['shift']());}};_0x111013(++_0xc5227a);}(_0x5cd3,0x160));var _0x35cd=function(_0x4790c7,_0x12537a){_0x4790c7=_0x4790c7-0x0;var _0x154a0b=_0x5cd3[_0x4790c7];return _0x154a0b;};'use strict';var Sequelize=require(_0x35cd('0x0'));module[_0x35cd('0x1')]={'penalty':{'type':Sequelize[_0x35cd('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x35cd('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x35cd('0x3')]}};
\ No newline at end of file
index c35eeb1..27c72b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf72b=['UserFaxQueue','lodash','../../config/logger','moment','bluebird','./userFaxQueue.attributes','exports','define'];(function(_0x3f3f27,_0x3d5ce0){var _0x4eeb55=function(_0x18e57b){while(--_0x18e57b){_0x3f3f27['push'](_0x3f3f27['shift']());}};_0x4eeb55(++_0x3d5ce0);}(_0xf72b,0x1d9));var _0xbf72=function(_0x30a004,_0x222da5){_0x30a004=_0x30a004-0x0;var _0x4c160c=_0xf72b[_0x30a004];return _0x4c160c;};'use strict';var _=require(_0xbf72('0x0'));var util=require('util');var logger=require(_0xbf72('0x1'))('api');var moment=require(_0xbf72('0x2'));var BPromise=require(_0xbf72('0x3'));var rp=require('request-promise');var attributes=require(_0xbf72('0x4'));module[_0xbf72('0x5')]=function(_0x37afc8,_0x3d3a6f){return _0x37afc8[_0xbf72('0x6')](_0xbf72('0x7'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x984b=['bluebird','exports','UserFaxQueue','user_has_fax_queues','api','moment'];(function(_0x3622a7,_0x4dd6ee){var _0xeb6889=function(_0x4610f5){while(--_0x4610f5){_0x3622a7['push'](_0x3622a7['shift']());}};_0xeb6889(++_0x4dd6ee);}(_0x984b,0xee));var _0xb984=function(_0x1ac401,_0x438813){_0x1ac401=_0x1ac401-0x0;var _0x26cdd8=_0x984b[_0x1ac401];return _0x26cdd8;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xb984('0x0'));var moment=require(_0xb984('0x1'));var BPromise=require(_0xb984('0x2'));var rp=require('request-promise');var attributes=require('./userFaxQueue.attributes');module[_0xb984('0x3')]=function(_0x340f2c,_0x4d8f6a){return _0x340f2c['define'](_0xb984('0x4'),attributes,{'tableName':_0xb984('0x5'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea3394b..a1de1c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe359=['request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','UserFaxQueue,\x20%s,\x20%s','debug','stringify','error','message'];(function(_0x14df11,_0x195a38){var _0x491643=function(_0x3183d8){while(--_0x3183d8){_0x14df11['push'](_0x14df11['shift']());}};_0x491643(++_0x195a38);}(_0xe359,0xd2));var _0x9e35=function(_0x2fe272,_0x4a0387){_0x2fe272=_0x2fe272-0x0;var _0xb88a0b=_0xe359[_0x2fe272];return _0xb88a0b;};'use strict';var _=require(_0x9e35('0x0'));var util=require(_0x9e35('0x1'));var moment=require(_0x9e35('0x2'));var BPromise=require(_0x9e35('0x3'));var rs=require(_0x9e35('0x4'));var fs=require('fs');var Redis=require(_0x9e35('0x5'));var db=require(_0x9e35('0x6'))['db'];var utils=require(_0x9e35('0x7'));var logger=require('../../config/logger')(_0x9e35('0x8'));var config=require(_0x9e35('0x9'));var jayson=require(_0x9e35('0xa'));var client=jayson[_0x9e35('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1e3826,_0x136b22,_0x59ae83){return new BPromise(function(_0x7c03fd,_0x24862f){return client[_0x9e35('0xc')](_0x1e3826,_0x59ae83)[_0x9e35('0xd')](function(_0x510c14){logger[_0x9e35('0xe')](_0x9e35('0xf'),_0x136b22,'request\x20sent');logger[_0x9e35('0x10')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x136b22,'request\x20sent',JSON[_0x9e35('0x11')](_0x510c14));if(_0x510c14[_0x9e35('0x12')]){if(_0x510c14[_0x9e35('0x12')]['code']===0x1f4){logger[_0x9e35('0x12')](_0x9e35('0xf'),_0x136b22,_0x510c14[_0x9e35('0x12')]['message']);return _0x24862f(_0x510c14[_0x9e35('0x12')][_0x9e35('0x13')]);}logger['error'](_0x9e35('0xf'),_0x136b22,_0x510c14[_0x9e35('0x12')][_0x9e35('0x13')]);return _0x7c03fd(_0x510c14[_0x9e35('0x12')][_0x9e35('0x13')]);}else{logger[_0x9e35('0xe')](_0x9e35('0xf'),_0x136b22,_0x9e35('0x14'));_0x7c03fd(_0x510c14[_0x9e35('0x15')]['message']);}})[_0x9e35('0x16')](function(_0x9ea713){logger[_0x9e35('0x12')](_0x9e35('0xf'),_0x136b22,_0x9ea713);_0x24862f(_0x9ea713);});});}
\ No newline at end of file
+var _0xce21=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x507965,_0x4944f4){var _0x3608fc=function(_0x14c8d0){while(--_0x14c8d0){_0x507965['push'](_0x507965['shift']());}};_0x3608fc(++_0x4944f4);}(_0xce21,0x1c3));var _0x1ce2=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0xce21[_0x12bcf7];return _0x2825a;};'use strict';var _=require(_0x1ce2('0x0'));var util=require(_0x1ce2('0x1'));var moment=require(_0x1ce2('0x2'));var BPromise=require(_0x1ce2('0x3'));var rs=require(_0x1ce2('0x4'));var fs=require('fs');var Redis=require(_0x1ce2('0x5'));var db=require(_0x1ce2('0x6'))['db'];var utils=require(_0x1ce2('0x7'));var logger=require(_0x1ce2('0x8'))(_0x1ce2('0x9'));var config=require('../../config/environment');var jayson=require(_0x1ce2('0xa'));var client=jayson[_0x1ce2('0xb')][_0x1ce2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1d5773,_0x3f695c,_0x4e5255){return new BPromise(function(_0x188cf8,_0x562701){return client[_0x1ce2('0xd')](_0x1d5773,_0x4e5255)[_0x1ce2('0xe')](function(_0x4becbb){logger[_0x1ce2('0xf')](_0x1ce2('0x10'),_0x3f695c,_0x1ce2('0x11'));logger[_0x1ce2('0x12')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x3f695c,_0x1ce2('0x11'),JSON[_0x1ce2('0x13')](_0x4becbb));if(_0x4becbb[_0x1ce2('0x14')]){if(_0x4becbb['error'][_0x1ce2('0x15')]===0x1f4){logger[_0x1ce2('0x14')](_0x1ce2('0x10'),_0x3f695c,_0x4becbb['error'][_0x1ce2('0x16')]);return _0x562701(_0x4becbb[_0x1ce2('0x14')][_0x1ce2('0x16')]);}logger[_0x1ce2('0x14')](_0x1ce2('0x10'),_0x3f695c,_0x4becbb[_0x1ce2('0x14')][_0x1ce2('0x16')]);return _0x188cf8(_0x4becbb[_0x1ce2('0x14')][_0x1ce2('0x16')]);}else{logger[_0x1ce2('0xf')](_0x1ce2('0x10'),_0x3f695c,'request\x20sent');_0x188cf8(_0x4becbb['result'][_0x1ce2('0x16')]);}})[_0x1ce2('0x17')](function(_0x2755ed){logger['error'](_0x1ce2('0x10'),_0x3f695c,_0x2755ed);_0x562701(_0x2755ed);});});}
\ No newline at end of file
index 546ec6b..db90861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d3=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','exports','multer','util','path','connect-timeout','express'];(function(_0x3692fc,_0x8e962c){var _0x5655a2=function(_0x19b5c2){while(--_0x19b5c2){_0x3692fc['push'](_0x3692fc['shift']());}};_0x5655a2(++_0x8e962c);}(_0x78d3,0x73));var _0x378d=function(_0x398fac,_0x50edbe){_0x398fac=_0x398fac-0x0;var _0x4f541c=_0x78d3[_0x398fac];return _0x4f541c;};'use strict';var multer=require(_0x378d('0x0'));var util=require(_0x378d('0x1'));var path=require(_0x378d('0x2'));var timeout=require(_0x378d('0x3'));var express=require(_0x378d('0x4'));var router=express[_0x378d('0x5')]();var auth=require(_0x378d('0x6'));var interaction=require(_0x378d('0x7'));var config=require(_0x378d('0x8'));module[_0x378d('0x9')]=router;
\ No newline at end of file
+var _0xf52f=['../../components/auth/service','../../config/environment','exports','multer','util','path','express','Router'];(function(_0x301e0a,_0x13ae40){var _0x4a25f8=function(_0xfd570){while(--_0xfd570){_0x301e0a['push'](_0x301e0a['shift']());}};_0x4a25f8(++_0x13ae40);}(_0xf52f,0x113));var _0xff52=function(_0x3e29df,_0x42fdf8){_0x3e29df=_0x3e29df-0x0;var _0x3e3ba9=_0xf52f[_0x3e29df];return _0x3e3ba9;};'use strict';var multer=require(_0xff52('0x0'));var util=require(_0xff52('0x1'));var path=require(_0xff52('0x2'));var timeout=require('connect-timeout');var express=require(_0xff52('0x3'));var router=express[_0xff52('0x4')]();var auth=require(_0xff52('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xff52('0x6'));module[_0xff52('0x7')]=router;
\ No newline at end of file
index 9cfd347..a2bb158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6c8=['INTEGER','exports'];(function(_0xe3752c,_0x4e6169){var _0x2ce6e2=function(_0x1ea7c5){while(--_0x1ea7c5){_0xe3752c['push'](_0xe3752c['shift']());}};_0x2ce6e2(++_0x4e6169);}(_0xe6c8,0x145));var _0x8e6c=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xe6c8[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require('sequelize');module[_0x8e6c('0x0')]={'penalty':{'type':Sequelize[_0x8e6c('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x868e=['sequelize','exports'];(function(_0x3b8394,_0x120adc){var _0x14ff06=function(_0x4aece7){while(--_0x4aece7){_0x3b8394['push'](_0x3b8394['shift']());}};_0x14ff06(++_0x120adc);}(_0x868e,0x162));var _0xe868=function(_0x3b79fb,_0x3710a8){_0x3b79fb=_0x3b79fb-0x0;var _0x5c95af=_0x868e[_0x3b79fb];return _0x5c95af;};'use strict';var Sequelize=require(_0xe868('0x0'));module[_0xe868('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index f99d7dd..cf81e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd983=['util','../../config/logger','api','moment','./userMailQueue.attributes','exports','define','UserMailQueue','user_has_mail_queues','lodash'];(function(_0x381cf9,_0x5be512){var _0x3af82b=function(_0x17bb99){while(--_0x17bb99){_0x381cf9['push'](_0x381cf9['shift']());}};_0x3af82b(++_0x5be512);}(_0xd983,0x1df));var _0x3d98=function(_0x59bc69,_0x51e22d){_0x59bc69=_0x59bc69-0x0;var _0x574135=_0xd983[_0x59bc69];return _0x574135;};'use strict';var _=require(_0x3d98('0x0'));var util=require(_0x3d98('0x1'));var logger=require(_0x3d98('0x2'))(_0x3d98('0x3'));var moment=require(_0x3d98('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x3d98('0x5'));module[_0x3d98('0x6')]=function(_0x22482f,_0x6c1d48){return _0x22482f[_0x3d98('0x7')](_0x3d98('0x8'),attributes,{'tableName':_0x3d98('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x45d8=['moment','bluebird','./userMailQueue.attributes','user_has_mail_queues','lodash','util','../../config/logger','api'];(function(_0x13184e,_0xae7d87){var _0x579aa2=function(_0x19eb9f){while(--_0x19eb9f){_0x13184e['push'](_0x13184e['shift']());}};_0x579aa2(++_0xae7d87);}(_0x45d8,0x174));var _0x845d=function(_0x42bd43,_0x59fb77){_0x42bd43=_0x42bd43-0x0;var _0x421e88=_0x45d8[_0x42bd43];return _0x421e88;};'use strict';var _=require(_0x845d('0x0'));var util=require(_0x845d('0x1'));var logger=require(_0x845d('0x2'))(_0x845d('0x3'));var moment=require(_0x845d('0x4'));var BPromise=require(_0x845d('0x5'));var rp=require('request-promise');var attributes=require(_0x845d('0x6'));module['exports']=function(_0x20faae,_0x34ad81){return _0x20faae['define']('UserMailQueue',attributes,{'tableName':_0x845d('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5927283..7956244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01ce=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x41eace,_0x36054c){var _0x353c92=function(_0xc66586){while(--_0xc66586){_0x41eace['push'](_0x41eace['shift']());}};_0x353c92(++_0x36054c);}(_0x01ce,0x121));var _0xe01c=function(_0x4f7cde,_0x50d36f){_0x4f7cde=_0x4f7cde-0x0;var _0x47e04f=_0x01ce[_0x4f7cde];return _0x47e04f;};'use strict';var _=require(_0xe01c('0x0'));var util=require(_0xe01c('0x1'));var moment=require(_0xe01c('0x2'));var BPromise=require(_0xe01c('0x3'));var rs=require(_0xe01c('0x4'));var fs=require('fs');var Redis=require(_0xe01c('0x5'));var db=require(_0xe01c('0x6'))['db'];var utils=require(_0xe01c('0x7'));var logger=require(_0xe01c('0x8'))(_0xe01c('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe01c('0xa')][_0xe01c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3373dd,_0x18efb3,_0x4f33e7){return new BPromise(function(_0x49d4d7,_0x2e328f){return client['request'](_0x3373dd,_0x4f33e7)['then'](function(_0x54b57a){logger[_0xe01c('0xc')](_0xe01c('0xd'),_0x18efb3,_0xe01c('0xe'));logger[_0xe01c('0xf')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x18efb3,_0xe01c('0xe'),JSON[_0xe01c('0x10')](_0x54b57a));if(_0x54b57a[_0xe01c('0x11')]){if(_0x54b57a[_0xe01c('0x11')]['code']===0x1f4){logger[_0xe01c('0x11')](_0xe01c('0xd'),_0x18efb3,_0x54b57a[_0xe01c('0x11')]['message']);return _0x2e328f(_0x54b57a[_0xe01c('0x11')][_0xe01c('0x12')]);}logger[_0xe01c('0x11')](_0xe01c('0xd'),_0x18efb3,_0x54b57a[_0xe01c('0x11')][_0xe01c('0x12')]);return _0x49d4d7(_0x54b57a[_0xe01c('0x11')][_0xe01c('0x12')]);}else{logger[_0xe01c('0xc')](_0xe01c('0xd'),_0x18efb3,'request\x20sent');_0x49d4d7(_0x54b57a[_0xe01c('0x13')][_0xe01c('0x12')]);}})[_0xe01c('0x14')](function(_0x3f5d26){logger['error'](_0xe01c('0xd'),_0x18efb3,_0x3f5d26);_0x2e328f(_0x3f5d26);});});}
\ No newline at end of file
+var _0x1f13=['info','UserMailQueue,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then'];(function(_0x280dd8,_0x5c8eb8){var _0x2a6aa6=function(_0x118d85){while(--_0x118d85){_0x280dd8['push'](_0x280dd8['shift']());}};_0x2a6aa6(++_0x5c8eb8);}(_0x1f13,0x15d));var _0x31f1=function(_0x255de7,_0x5cf047){_0x255de7=_0x255de7-0x0;var _0x51816e=_0x1f13[_0x255de7];return _0x51816e;};'use strict';var _=require(_0x31f1('0x0'));var util=require('util');var moment=require(_0x31f1('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x31f1('0x2'));var db=require(_0x31f1('0x3'))['db'];var utils=require(_0x31f1('0x4'));var logger=require(_0x31f1('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x31f1('0x6'));var client=jayson[_0x31f1('0x7')][_0x31f1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x11e598,_0x121c03,_0x43231d){return new BPromise(function(_0x1884a2,_0x2005f1){return client[_0x31f1('0x9')](_0x11e598,_0x43231d)[_0x31f1('0xa')](function(_0x2bb9fd){logger[_0x31f1('0xb')](_0x31f1('0xc'),_0x121c03,'request\x20sent');logger[_0x31f1('0xd')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x121c03,'request\x20sent',JSON[_0x31f1('0xe')](_0x2bb9fd));if(_0x2bb9fd[_0x31f1('0xf')]){if(_0x2bb9fd[_0x31f1('0xf')][_0x31f1('0x10')]===0x1f4){logger[_0x31f1('0xf')](_0x31f1('0xc'),_0x121c03,_0x2bb9fd['error'][_0x31f1('0x11')]);return _0x2005f1(_0x2bb9fd['error'][_0x31f1('0x11')]);}logger[_0x31f1('0xf')](_0x31f1('0xc'),_0x121c03,_0x2bb9fd[_0x31f1('0xf')][_0x31f1('0x11')]);return _0x1884a2(_0x2bb9fd['error']['message']);}else{logger[_0x31f1('0xb')]('UserMailQueue,\x20%s,\x20%s',_0x121c03,_0x31f1('0x12'));_0x1884a2(_0x2bb9fd['result'][_0x31f1('0x11')]);}})[_0x31f1('0x13')](function(_0x58c45f){logger[_0x31f1('0xf')](_0x31f1('0xc'),_0x121c03,_0x58c45f);_0x2005f1(_0x58c45f);});});}
\ No newline at end of file
index 73d23f8..01b84fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['../../config/environment','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0x7b84,0x17c));var _0x47b8=function(_0x3e5d9d,_0x4e20f1){_0x3e5d9d=_0x3e5d9d-0x0;var _0x2e3bae=_0x7b84[_0x3e5d9d];return _0x2e3bae;};'use strict';var multer=require(_0x47b8('0x0'));var util=require(_0x47b8('0x1'));var path=require(_0x47b8('0x2'));var timeout=require(_0x47b8('0x3'));var express=require(_0x47b8('0x4'));var router=express[_0x47b8('0x5')]();var auth=require(_0x47b8('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x47b8('0x7'));module[_0x47b8('0x8')]=router;
\ No newline at end of file
+var _0xb194=['../../config/environment','exports','multer','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x334d1e,_0x28a488){var _0x3b33ba=function(_0x25afca){while(--_0x25afca){_0x334d1e['push'](_0x334d1e['shift']());}};_0x3b33ba(++_0x28a488);}(_0xb194,0x1b2));var _0x4b19=function(_0x5bcb11,_0x5b5d84){_0x5bcb11=_0x5bcb11-0x0;var _0x3daa19=_0xb194[_0x5bcb11];return _0x3daa19;};'use strict';var multer=require(_0x4b19('0x0'));var util=require('util');var path=require(_0x4b19('0x1'));var timeout=require(_0x4b19('0x2'));var express=require(_0x4b19('0x3'));var router=express[_0x4b19('0x4')]();var auth=require(_0x4b19('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4b19('0x6'));module[_0x4b19('0x7')]=router;
\ No newline at end of file
index d0bc1cb..d0709d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc85d=['exports','INTEGER','sequelize'];(function(_0x2340e2,_0x1627f9){var _0x5ced10=function(_0x3c5250){while(--_0x3c5250){_0x2340e2['push'](_0x2340e2['shift']());}};_0x5ced10(++_0x1627f9);}(_0xc85d,0xce));var _0xdc85=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0xc85d[_0x819464];return _0x49dcc0;};'use strict';var Sequelize=require(_0xdc85('0x0'));module[_0xdc85('0x1')]={'penalty':{'type':Sequelize[_0xdc85('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xaf06=['exports','INTEGER','sequelize'];(function(_0x44fee6,_0x4afc8d){var _0x23662d=function(_0x59cd70){while(--_0x59cd70){_0x44fee6['push'](_0x44fee6['shift']());}};_0x23662d(++_0x4afc8d);}(_0xaf06,0x185));var _0x6af0=function(_0x3aeae1,_0x861450){_0x3aeae1=_0x3aeae1-0x0;var _0x5b0a8f=_0xaf06[_0x3aeae1];return _0x5b0a8f;};'use strict';var Sequelize=require(_0x6af0('0x0'));module[_0x6af0('0x1')]={'penalty':{'type':Sequelize[_0x6af0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index fde76b5..736bf30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c2a=['bluebird','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7c2a,0x13e));var _0xa7c2=function(_0xbf6fa,_0x5852b9){_0xbf6fa=_0xbf6fa-0x0;var _0xdf0562=_0x7c2a[_0xbf6fa];return _0xdf0562;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xa7c2('0x0'));var moment=require(_0xa7c2('0x1'));var BPromise=require(_0xa7c2('0x2'));var rp=require('request-promise');var attributes=require(_0xa7c2('0x3'));module[_0xa7c2('0x4')]=function(_0x329a5c,_0x1e2f3f){return _0x329a5c[_0xa7c2('0x5')](_0xa7c2('0x6'),attributes,{'tableName':_0xa7c2('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x202e=['../../config/logger','moment','request-promise','./userOpenchannelQueue.attributes','exports','define','user_has_openchannel_queues','lodash','util'];(function(_0x466247,_0x5d69e3){var _0x4b352e=function(_0x58c71b){while(--_0x58c71b){_0x466247['push'](_0x466247['shift']());}};_0x4b352e(++_0x5d69e3);}(_0x202e,0x14b));var _0xe202=function(_0x5d614f,_0x52a558){_0x5d614f=_0x5d614f-0x0;var _0x2017eb=_0x202e[_0x5d614f];return _0x2017eb;};'use strict';var _=require(_0xe202('0x0'));var util=require(_0xe202('0x1'));var logger=require(_0xe202('0x2'))('api');var moment=require(_0xe202('0x3'));var BPromise=require('bluebird');var rp=require(_0xe202('0x4'));var attributes=require(_0xe202('0x5'));module[_0xe202('0x6')]=function(_0x5bf45b,_0x4e4788){return _0x5bf45b[_0xe202('0x7')]('UserOpenchannelQueue',attributes,{'tableName':_0xe202('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3842d8c..54641f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5962=['../../config/environment','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','../../config/utils','../../config/logger','rpc'];(function(_0x5d3dc1,_0x1e702d){var _0x9cfb80=function(_0x4d110d){while(--_0x4d110d){_0x5d3dc1['push'](_0x5d3dc1['shift']());}};_0x9cfb80(++_0x1e702d);}(_0x5962,0xe1));var _0x2596=function(_0x2c5340,_0x5c86e5){_0x2c5340=_0x2c5340-0x0;var _0x3c505e=_0x5962[_0x2c5340];return _0x3c505e;};'use strict';var _=require(_0x2596('0x0'));var util=require(_0x2596('0x1'));var moment=require(_0x2596('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2596('0x3'));var logger=require(_0x2596('0x4'))(_0x2596('0x5'));var config=require(_0x2596('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2596('0x7')][_0x2596('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x56629e,_0xb398e7,_0x1d9a3c){return new BPromise(function(_0x2def6b,_0xdbcb2f){return client[_0x2596('0x9')](_0x56629e,_0x1d9a3c)[_0x2596('0xa')](function(_0x1552c6){logger['info'](_0x2596('0xb'),_0xb398e7,'request\x20sent');logger[_0x2596('0xc')](_0x2596('0xd'),_0xb398e7,_0x2596('0xe'),JSON[_0x2596('0xf')](_0x1552c6));if(_0x1552c6[_0x2596('0x10')]){if(_0x1552c6[_0x2596('0x10')][_0x2596('0x11')]===0x1f4){logger[_0x2596('0x10')](_0x2596('0xb'),_0xb398e7,_0x1552c6[_0x2596('0x10')]['message']);return _0xdbcb2f(_0x1552c6[_0x2596('0x10')][_0x2596('0x12')]);}logger[_0x2596('0x10')](_0x2596('0xb'),_0xb398e7,_0x1552c6[_0x2596('0x10')][_0x2596('0x12')]);return _0x2def6b(_0x1552c6[_0x2596('0x10')][_0x2596('0x12')]);}else{logger['info']('UserOpenchannelQueue,\x20%s,\x20%s',_0xb398e7,_0x2596('0xe'));_0x2def6b(_0x1552c6[_0x2596('0x13')][_0x2596('0x12')]);}})[_0x2596('0x14')](function(_0x2b6d90){logger['error'](_0x2596('0xb'),_0xb398e7,_0x2b6d90);_0xdbcb2f(_0x2b6d90);});});}
\ No newline at end of file
+var _0x1468=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x1468,0xca));var _0x8146=function(_0x163040,_0x38a58c){_0x163040=_0x163040-0x0;var _0x364667=_0x1468[_0x163040];return _0x364667;};'use strict';var _=require(_0x8146('0x0'));var util=require('util');var moment=require(_0x8146('0x1'));var BPromise=require(_0x8146('0x2'));var rs=require(_0x8146('0x3'));var fs=require('fs');var Redis=require(_0x8146('0x4'));var db=require(_0x8146('0x5'))['db'];var utils=require(_0x8146('0x6'));var logger=require('../../config/logger')(_0x8146('0x7'));var config=require(_0x8146('0x8'));var jayson=require(_0x8146('0x9'));var client=jayson[_0x8146('0xa')][_0x8146('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1e7f61,_0x1314ef,_0x352da5){return new BPromise(function(_0x5a85c3,_0x7c2786){return client['request'](_0x1e7f61,_0x352da5)[_0x8146('0xc')](function(_0x240d4b){logger[_0x8146('0xd')](_0x8146('0xe'),_0x1314ef,_0x8146('0xf'));logger[_0x8146('0x10')](_0x8146('0x11'),_0x1314ef,_0x8146('0xf'),JSON[_0x8146('0x12')](_0x240d4b));if(_0x240d4b[_0x8146('0x13')]){if(_0x240d4b['error'][_0x8146('0x14')]===0x1f4){logger[_0x8146('0x13')](_0x8146('0xe'),_0x1314ef,_0x240d4b[_0x8146('0x13')][_0x8146('0x15')]);return _0x7c2786(_0x240d4b[_0x8146('0x13')][_0x8146('0x15')]);}logger[_0x8146('0x13')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x1314ef,_0x240d4b['error'][_0x8146('0x15')]);return _0x5a85c3(_0x240d4b[_0x8146('0x13')]['message']);}else{logger[_0x8146('0xd')](_0x8146('0xe'),_0x1314ef,_0x8146('0xf'));_0x5a85c3(_0x240d4b[_0x8146('0x16')][_0x8146('0x15')]);}})['catch'](function(_0x2a63aa){logger[_0x8146('0x13')](_0x8146('0xe'),_0x1314ef,_0x2a63aa);_0x7c2786(_0x2a63aa);});});}
\ No newline at end of file
index 30dabb3..988fe6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4996=['/:id/clone','clone','addSections','addResources','put','delete','removeSections','/:id/resources','exports','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','getResources','post','create'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x4996,0xea));var _0x6499=function(_0x77fd25,_0x226ea2){_0x77fd25=_0x77fd25-0x0;var _0xe14528=_0x4996[_0x77fd25];return _0xe14528;};'use strict';var multer=require('multer');var util=require(_0x6499('0x0'));var path=require(_0x6499('0x1'));var timeout=require(_0x6499('0x2'));var express=require(_0x6499('0x3'));var router=express['Router']();var auth=require(_0x6499('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6499('0x5'));var controller=require('./userProfile.controller');router[_0x6499('0x6')]('/',auth[_0x6499('0x7')](),controller[_0x6499('0x8')]);router[_0x6499('0x6')](_0x6499('0x9'),auth['isAuthenticated'](),controller[_0x6499('0xa')]);router[_0x6499('0x6')](_0x6499('0xb'),auth[_0x6499('0x7')](),controller[_0x6499('0xc')]);router[_0x6499('0x6')]('/:id/resources',auth[_0x6499('0x7')](),controller[_0x6499('0xd')]);router[_0x6499('0xe')]('/',auth['isAuthenticated'](),controller[_0x6499('0xf')]);router[_0x6499('0xe')](_0x6499('0x10'),auth[_0x6499('0x7')](),controller[_0x6499('0x11')]);router['post']('/:id/sections',auth[_0x6499('0x7')](),controller[_0x6499('0x12')]);router['post']('/:id/resources',auth[_0x6499('0x7')](),controller[_0x6499('0x13')]);router[_0x6499('0x14')](_0x6499('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x6499('0x15')](_0x6499('0xb'),auth[_0x6499('0x7')](),controller['destroy']);router[_0x6499('0x15')]('/:id/sections',auth[_0x6499('0x7')](),controller[_0x6499('0x16')]);router[_0x6499('0x15')](_0x6499('0x17'),auth[_0x6499('0x7')](),controller['removeResources']);module[_0x6499('0x18')]=router;
\ No newline at end of file
+var _0x3138=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/resources','post','create','/:id/clone','/:id/sections','put','delete','destroy','removeResources','exports','multer'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3138,0x176));var _0x8313=function(_0x40741a,_0x41f657){_0x40741a=_0x40741a-0x0;var _0x34c353=_0x3138[_0x40741a];return _0x34c353;};'use strict';var multer=require(_0x8313('0x0'));var util=require(_0x8313('0x1'));var path=require(_0x8313('0x2'));var timeout=require(_0x8313('0x3'));var express=require(_0x8313('0x4'));var router=express[_0x8313('0x5')]();var auth=require(_0x8313('0x6'));var interaction=require(_0x8313('0x7'));var config=require('../../config/environment');var controller=require('./userProfile.controller');router[_0x8313('0x8')]('/',auth[_0x8313('0x9')](),controller[_0x8313('0xa')]);router['get'](_0x8313('0xb'),auth[_0x8313('0x9')](),controller[_0x8313('0xc')]);router['get'](_0x8313('0xd'),auth[_0x8313('0x9')](),controller[_0x8313('0xe')]);router[_0x8313('0x8')](_0x8313('0xf'),auth[_0x8313('0x9')](),controller['getResources']);router[_0x8313('0x10')]('/',auth[_0x8313('0x9')](),controller[_0x8313('0x11')]);router[_0x8313('0x10')](_0x8313('0x12'),auth[_0x8313('0x9')](),controller['clone']);router[_0x8313('0x10')](_0x8313('0x13'),auth[_0x8313('0x9')](),controller['addSections']);router[_0x8313('0x10')](_0x8313('0xf'),auth['isAuthenticated'](),controller['addResources']);router[_0x8313('0x14')]('/:id',auth[_0x8313('0x9')](),controller['update']);router[_0x8313('0x15')](_0x8313('0xd'),auth['isAuthenticated'](),controller[_0x8313('0x16')]);router[_0x8313('0x15')](_0x8313('0x13'),auth[_0x8313('0x9')](),controller['removeSections']);router[_0x8313('0x15')]('/:id/resources',auth[_0x8313('0x9')](),controller[_0x8313('0x17')]);module[_0x8313('0x18')]=router;
\ No newline at end of file
index 30556ed..1a1d45b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ad4=['setDataValue','join','getDataValue','crudPermissions','split','sequelize','exports','STRING','name'];(function(_0x5e2c2e,_0x1b969b){var _0x4cd1e2=function(_0x27676f){while(--_0x27676f){_0x5e2c2e['push'](_0x5e2c2e['shift']());}};_0x4cd1e2(++_0x1b969b);}(_0x2ad4,0x68));var _0x42ad=function(_0xeadc11,_0x27e378){_0xeadc11=_0xeadc11-0x0;var _0x4257b6=_0x2ad4[_0xeadc11];return _0x4257b6;};'use strict';var Sequelize=require(_0x42ad('0x0'));module[_0x42ad('0x1')]={'name':{'type':Sequelize[_0x42ad('0x2')],'allowNull':![],'unique':_0x42ad('0x3')},'crudPermissions':{'type':Sequelize[_0x42ad('0x2')],'set':function(_0x1a1657){this[_0x42ad('0x4')]('crudPermissions',_0x1a1657?_0x1a1657[_0x42ad('0x5')](''):[]);},'get':function(){return this[_0x42ad('0x6')](_0x42ad('0x7'))?this[_0x42ad('0x6')](_0x42ad('0x7'))[_0x42ad('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x42ad('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xeb18=['crudPermissions','join','getDataValue','split','STRING','name','setDataValue'];(function(_0x5d4bb8,_0x435166){var _0x5162de=function(_0x36a900){while(--_0x36a900){_0x5d4bb8['push'](_0x5d4bb8['shift']());}};_0x5162de(++_0x435166);}(_0xeb18,0xf9));var _0x8eb1=function(_0x48b724,_0x5a8e26){_0x48b724=_0x48b724-0x0;var _0x4d38b3=_0xeb18[_0x48b724];return _0x4d38b3;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8eb1('0x0')],'allowNull':![],'unique':_0x8eb1('0x1')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x154e0a){this[_0x8eb1('0x2')](_0x8eb1('0x3'),_0x154e0a?_0x154e0a[_0x8eb1('0x4')](''):[]);},'get':function(){return this[_0x8eb1('0x5')](_0x8eb1('0x3'))?this['getDataValue'](_0x8eb1('0x3'))[_0x8eb1('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x8eb1('0x0')],'allowNull':!![]}};
\ No newline at end of file
index 6d12961..729d9a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['tag','ThroughTags','rows','value','resourceId','toLowerCase','SquareProject','SquareOdbc','squarerecordings','SquareRecording','projects','JscriptyProject','contacts','CmContact','ListId','lists','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','voicemails','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','telephone','VoiceQueues','VoiceQueue','musiconholds','chanspies','VoiceChanSpy','ivrcampaigns','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','teams','voicequeues','QueueCampaigns','agents','admin','user','Telephones','zendeskaccounts','ZendeskAccount','salesforceaccounts','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','Interval','pauses','Pause','scheduler','Schedule','Sound','Tag','Template','Trigger','trunks','Trunk','variables','plugins','Plugin','extractedreports','Reports','metrics','AnalyticMetric','html-pdf','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','fields','length','attributes','hasOwnProperty','sort','where','pick','add','day','merge','map','type','VIRTUAL','field','filter','options','include','UserProfile','catch','show','params','includeAll','find','create','body','clone','get','omit','createdAt','crudPermissions','updatedAt','sequelize','UserProfileSection','findAll','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','push','ids','addResources','bulkCreate','removeResources','getResources','section','undefined','Unknown\x20section','mergeResources','Sequelize','Invalid\x20section\x20\x27','isEmpty','parentSections','findOne','all','union','ignore','childModel','autoAssociation','nolimit','order','resourceIds','foreignKey','resourceFields','forEach','key','AnalyticExtractedReport','reportType','default','reportId','DefaultReports','custom','count','color'];(function(_0x296809,_0x1c9665){var _0x18c0d3=function(_0x249156){while(--_0x249156){_0x296809['push'](_0x296809['shift']());}};_0x18c0d3(++_0x1c9665);}(_0x687b,0x14a));var _0xb687=function(_0x36f82a,_0x4ec395){_0x36f82a=_0x36f82a-0x0;var _0x495067=_0x687b[_0x36f82a];return _0x495067;};'use strict';var pdf=require(_0xb687('0x0'));var emlformat=require(_0xb687('0x1'));var rimraf=require(_0xb687('0x2'));var zipdir=require(_0xb687('0x3'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb687('0x4'));var BPromise=require(_0xb687('0x5'));var Mustache=require(_0xb687('0x6'));var util=require(_0xb687('0x7'));var path=require(_0xb687('0x8'));var sox=require(_0xb687('0x9'));var csv=require(_0xb687('0xa'));var ejs=require(_0xb687('0xb'));var fs=require('fs');var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var qs=require(_0xb687('0x13'));var logger=require(_0xb687('0x14'))(_0xb687('0x15'));var utils=require(_0xb687('0x16'));var config=require(_0xb687('0x17'));var db=require(_0xb687('0x18'))['db'];config['redis']=_[_0xb687('0x19')](config[_0xb687('0x1a')],{'host':_0xb687('0x1b'),'port':0x18eb});var socket=require(_0xb687('0x1c'))(new Redis(config['redis']));require('./userProfile.socket')[_0xb687('0x1d')](socket);function respondWithStatusCode(_0x155ebe,_0x49e233){_0x49e233=_0x49e233||0xcc;return function(_0x108fd0){if(_0x108fd0){return _0x155ebe[_0xb687('0x1e')](_0x49e233);}return _0x155ebe[_0xb687('0x1f')](_0x49e233)[_0xb687('0x20')]();};}function respondWithResult(_0x838dd4,_0x3ab914){_0x3ab914=_0x3ab914||0xc8;return function(_0x30622f){if(_0x30622f){return _0x838dd4[_0xb687('0x1f')](_0x3ab914)[_0xb687('0x21')](_0x30622f);}};}function respondWithFilteredResult(_0x2c7a18,_0x25124a){return function(_0x19bb29){if(_0x19bb29){var _0x4f0fdb=_0x19bb29['count'],_0x214b06=_0x25124a['offset'],_0x328301=_0x25124a[_0xb687('0x22')]+_0x25124a[_0xb687('0x23')],_0x30d370;if(_0x328301>=_0x4f0fdb){_0x328301=_0x4f0fdb;_0x30d370=0xc8;}else{_0x30d370=0xce;}_0x2c7a18[_0xb687('0x1f')](_0x30d370);return _0x2c7a18['set'](_0xb687('0x24'),_0x214b06+'-'+_0x328301+'/'+_0x4f0fdb)['json'](_0x19bb29);}return null;};}function patchUpdates(_0x1bd2bf){return function(_0x243236){try{jsonpatch[_0xb687('0x25')](_0x243236,_0x1bd2bf,!![]);}catch(_0x44bd0b){return BPromise['reject'](_0x44bd0b);}return _0x243236[_0xb687('0x26')]();};}function saveUpdates(_0x58e83c,_0x335541){return function(_0x90e892){if(_0x90e892){return _0x90e892[_0xb687('0x27')](_0x58e83c)['then'](function(_0x1dc06b){return _0x1dc06b;});}return null;};}function removeEntity(_0x491623,_0xa95e91){return function(_0x16cdcb){if(_0x16cdcb){return _0x16cdcb[_0xb687('0x28')]()[_0xb687('0x29')](function(){_0x491623[_0xb687('0x1f')](0xcc)[_0xb687('0x20')]();});}};}function handleEntityNotFound(_0x57cd51,_0xf45db0){return function(_0x129347){if(!_0x129347){_0x57cd51[_0xb687('0x1e')](0x194);}return _0x129347;};}function handleError(_0x1a0261,_0x290cf7){_0x290cf7=_0x290cf7||0x1f4;return function(_0x4136c9){logger[_0xb687('0x2a')](_0x4136c9[_0xb687('0x2b')]);if(_0x4136c9[_0xb687('0x2c')]){delete _0x4136c9[_0xb687('0x2c')];}_0x1a0261['status'](_0x290cf7)[_0xb687('0x2d')](_0x4136c9);};}exports[_0xb687('0x2e')]=function(_0x392721,_0x265a4b){var _0x2e5c8d={},_0x173c58={},_0x4e9a06={'count':0x0,'rows':[]};var _0x28b69a=db['UserProfile'][_0xb687('0x2f')];_0x173c58[_0xb687('0x30')]=_[_0xb687('0x31')](_0x28b69a);var _0x245db1={'dateStart':_0x392721[_0xb687('0x32')][_0xb687('0x33')],'dateEnd':_0x392721[_0xb687('0x32')]['dateEnd']};delete _0x392721[_0xb687('0x32')][_0xb687('0x33')];delete _0x392721[_0xb687('0x32')][_0xb687('0x34')];_0x173c58[_0xb687('0x32')]=_[_0xb687('0x31')](_0x392721[_0xb687('0x32')]);_0x173c58[_0xb687('0x35')]=_[_0xb687('0x36')](_0x173c58[_0xb687('0x30')],_0x173c58[_0xb687('0x32')]);_0x2e5c8d['attributes']=_['intersection'](_0x173c58[_0xb687('0x30')],qs[_0xb687('0x37')](_0x392721[_0xb687('0x32')][_0xb687('0x37')]));_0x2e5c8d['attributes']=_0x2e5c8d['attributes'][_0xb687('0x38')]?_0x2e5c8d[_0xb687('0x39')]:_0x173c58['model'];if(!_0x392721[_0xb687('0x32')][_0xb687('0x3a')]('nolimit')){_0x2e5c8d[_0xb687('0x23')]=qs['limit'](_0x392721[_0xb687('0x32')][_0xb687('0x23')]);_0x2e5c8d[_0xb687('0x22')]=qs[_0xb687('0x22')](_0x392721[_0xb687('0x32')][_0xb687('0x22')]);}_0x2e5c8d['order']=qs[_0xb687('0x3b')](_0x392721[_0xb687('0x32')][_0xb687('0x3b')]);_0x2e5c8d[_0xb687('0x3c')]=qs['filters'](_[_0xb687('0x3d')](_0x392721[_0xb687('0x32')],_0x173c58[_0xb687('0x35')]));if(_0x245db1[_0xb687('0x33')]){if(_0x245db1[_0xb687('0x34')]){_0x245db1['dateEnd']=moment(_0x245db1[_0xb687('0x34')])[_0xb687('0x3e')](0x1,_0xb687('0x3f'));}else{_0x245db1[_0xb687('0x34')]=moment(_0x245db1[_0xb687('0x33')])[_0xb687('0x3e')](0x1,'day');}_['merge'](_0x2e5c8d[_0xb687('0x3c')],{'createdAt':{'$gte':_0x245db1['dateStart'],'$lte':_0x245db1[_0xb687('0x34')]}});}if(_0x392721[_0xb687('0x32')]['filter']){_0x2e5c8d[_0xb687('0x3c')]=_[_0xb687('0x40')](_0x2e5c8d['where'],{'$or':_[_0xb687('0x41')](_0x28b69a,function(_0x28031e){if(_0x28031e[_0xb687('0x42')]['key']!==_0xb687('0x43')){var _0x9cffb2={};_0x9cffb2[_0x28031e[_0xb687('0x44')]]={'$like':'%'+_0x392721[_0xb687('0x32')][_0xb687('0x45')]+'%'};return _0x9cffb2;}})});}_0x2e5c8d=_[_0xb687('0x40')]({},_0x2e5c8d,_0x392721[_0xb687('0x46')]);var _0x4bb665={'where':_0x2e5c8d[_0xb687('0x3c')]};return db['UserProfile']['count'](_0x4bb665)[_0xb687('0x29')](function(_0x430364){_0x4e9a06['count']=_0x430364;if(_0x392721[_0xb687('0x32')]['includeAll']){_0x2e5c8d[_0xb687('0x47')]=[{'all':!![]}];}return db[_0xb687('0x48')]['findAll'](_0x2e5c8d);})[_0xb687('0x29')](function(_0x3a8509){_0x4e9a06['rows']=_0x3a8509;return _0x4e9a06;})[_0xb687('0x29')](respondWithFilteredResult(_0x265a4b,_0x2e5c8d))[_0xb687('0x49')](handleError(_0x265a4b,null));};exports[_0xb687('0x4a')]=function(_0x46a9db,_0x780e9e){var _0x1c1b14={'raw':![],'where':{'id':_0x46a9db[_0xb687('0x4b')]['id']}},_0x30f04f={};_0x30f04f[_0xb687('0x30')]=_[_0xb687('0x31')](db[_0xb687('0x48')][_0xb687('0x2f')]);_0x30f04f['query']=_[_0xb687('0x31')](_0x46a9db['query']);_0x30f04f[_0xb687('0x35')]=_[_0xb687('0x36')](_0x30f04f[_0xb687('0x30')],_0x30f04f[_0xb687('0x32')]);_0x1c1b14[_0xb687('0x39')]=_[_0xb687('0x36')](_0x30f04f['model'],qs['fields'](_0x46a9db[_0xb687('0x32')][_0xb687('0x37')]));_0x1c1b14[_0xb687('0x39')]=_0x1c1b14[_0xb687('0x39')]['length']?_0x1c1b14[_0xb687('0x39')]:_0x30f04f[_0xb687('0x30')];if(_0x46a9db[_0xb687('0x32')][_0xb687('0x4c')]){_0x1c1b14['include']=[{'all':!![]}];}_0x1c1b14=_[_0xb687('0x40')]({},_0x1c1b14,_0x46a9db[_0xb687('0x46')]);return db[_0xb687('0x48')][_0xb687('0x4d')](_0x1c1b14)['then'](handleEntityNotFound(_0x780e9e,null))['then'](respondWithResult(_0x780e9e,null))[_0xb687('0x49')](handleError(_0x780e9e,null));};exports[_0xb687('0x4e')]=function(_0x42b61a,_0x508862){return db['UserProfile'][_0xb687('0x4e')](_0x42b61a[_0xb687('0x4f')],{})[_0xb687('0x29')](respondWithResult(_0x508862,0xc9))[_0xb687('0x49')](handleError(_0x508862,null));};exports[_0xb687('0x50')]=function(_0x1fb31a,_0x602864){var _0x4170f3={'raw':![],'where':{'id':_0x1fb31a[_0xb687('0x4b')]['id']}},_0x543083={};_0x543083[_0xb687('0x30')]=_[_0xb687('0x31')](db['UserProfile']['rawAttributes']);_0x4170f3['attributes']=_['intersection'](_0x543083[_0xb687('0x30')],qs[_0xb687('0x37')](_0x1fb31a[_0xb687('0x32')][_0xb687('0x37')]));_0x4170f3[_0xb687('0x39')]=_0x4170f3[_0xb687('0x39')][_0xb687('0x38')]?_0x4170f3[_0xb687('0x39')]:_0x543083[_0xb687('0x30')];if(_0x1fb31a[_0xb687('0x32')][_0xb687('0x4c')]){_0x4170f3[_0xb687('0x47')]=[{'all':!![]}];}_0x4170f3=_[_0xb687('0x40')]({},_0x4170f3,_0x1fb31a[_0xb687('0x46')]);return db[_0xb687('0x48')][_0xb687('0x4d')](_0x4170f3)[_0xb687('0x29')](handleEntityNotFound(_0x602864,null))['then'](function(_0x58670a){if(_0x58670a){var _0x1ebbca=_0x58670a[_0xb687('0x51')]({'plain':!![]});_0x1ebbca=qs[_0xb687('0x52')](_0x1ebbca,['id',_0xb687('0x53'),'updatedAt',_0xb687('0x54')]);_0x1fb31a[_0xb687('0x4f')]=_['omit'](_0x1fb31a[_0xb687('0x4f')],['id','createdAt',_0xb687('0x55')]);return db[_0xb687('0x56')]['transaction'](function(_0x4fb188){return db[_0xb687('0x48')][_0xb687('0x4e')](_['merge'](_0x1ebbca,_0x1fb31a[_0xb687('0x4f')]),{'include':_0x1fb31a[_0xb687('0x32')][_0xb687('0x4c')]?[{'all':!![]}]:undefined,'transaction':_0x4fb188})['then'](function(_0x25e140){var _0x5b3c93=_0x25e140[_0xb687('0x51')]({'plain':!![]});return db[_0xb687('0x57')][_0xb687('0x58')]({'where':{'userProfileId':_0x1fb31a[_0xb687('0x4b')]['id']},'raw':!![]})[_0xb687('0x29')](function(_0x49b403){if(_0x49b403){return BPromise['each'](_0x49b403,function(_0xa8f04a){return new BPromise(function(_0x58ec8b,_0x5362ea){if(_0xa8f04a['autoAssociation']===null||_0xa8f04a['autoAssociation']===0x1)_0x58ec8b(null);return db[_0xb687('0x59')][_0xb687('0x58')]({'where':{'sectionId':_0xa8f04a['id']},'raw':!![]})[_0xb687('0x29')](function(_0x4bc18f){var _0x3afcf3=_[_0xb687('0x41')](_0x4bc18f,function(_0x11d8d8){return qs[_0xb687('0x52')](_0x11d8d8,['id',_0xb687('0x53'),_0xb687('0x55'),_0xb687('0x5a')]);});_0x58ec8b(_0x3afcf3);})['catch'](function(_0x56c4f6){_0x5362ea(_0x56c4f6);});})[_0xb687('0x29')](function(_0x4906df){var _0x667e39=qs[_0xb687('0x52')](_0xa8f04a,['id',_0xb687('0x53'),_0xb687('0x55')]);_0x667e39[_0xb687('0x5b')]=_0x5b3c93['id'];if(_0x4906df)_0x667e39['Resources']=_0x4906df;return _0x667e39;})[_0xb687('0x29')](function(_0x58e093){return db[_0xb687('0x57')][_0xb687('0x4e')](_0x58e093,{'include':[{'model':db[_0xb687('0x59')],'as':_0xb687('0x5c')}],'raw':!![],'transaction':_0x4fb188});});})[_0xb687('0x29')](function(){return _0x5b3c93;});}});});});}})[_0xb687('0x29')](respondWithResult(_0x602864,0xc9))[_0xb687('0x49')](handleError(_0x602864,null));};exports['update']=function(_0x28a6aa,_0x31ed20){if(_0x28a6aa[_0xb687('0x4f')]['id']){delete _0x28a6aa[_0xb687('0x4f')]['id'];}return db[_0xb687('0x48')]['find']({'where':{'id':_0x28a6aa[_0xb687('0x4b')]['id']}})[_0xb687('0x29')](handleEntityNotFound(_0x31ed20,null))[_0xb687('0x29')](saveUpdates(_0x28a6aa[_0xb687('0x4f')],null))[_0xb687('0x29')](respondWithResult(_0x31ed20,null))[_0xb687('0x49')](handleError(_0x31ed20,null));};exports[_0xb687('0x28')]=function(_0x377456,_0x177ea4){return db[_0xb687('0x48')][_0xb687('0x4d')]({'where':{'id':_0x377456['params']['id']}})[_0xb687('0x29')](handleEntityNotFound(_0x177ea4,null))[_0xb687('0x29')](removeEntity(_0x177ea4,null))[_0xb687('0x49')](handleError(_0x177ea4,null));};exports[_0xb687('0x5d')]=function(_0x505f7a,_0x302751){return db[_0xb687('0x48')]['describe']()[_0xb687('0x29')](respondWithResult(_0x302751,null))[_0xb687('0x49')](handleError(_0x302751,null));};exports[_0xb687('0x5e')]=function(_0x5eeb75,_0x451d2f){var _0x392224=_0x5eeb75['body'];return db[_0xb687('0x48')][_0xb687('0x4d')]({'where':{'id':_0x5eeb75[_0xb687('0x4b')]['id']}})[_0xb687('0x29')](handleEntityNotFound(_0x451d2f,null))['then'](function(_0x350c88){if(_0x350c88){return db[_0xb687('0x56')]['transaction'](function(_0x1c2c65){return db[_0xb687('0x57')]['destroy']({'where':{'userProfileId':_0x5eeb75['params']['id'],'sectionId':_[_0xb687('0x41')](_0x392224,function(_0x5370bc){return _0x5370bc[_0xb687('0x5a')];})},'transaction':_0x1c2c65})[_0xb687('0x29')](function(){var _0x32ae66=_[_0xb687('0x41')](_0x392224,function(_0xdc33dc){_0xdc33dc[_0xb687('0x5b')]=_0x5eeb75[_0xb687('0x4b')]['id'];return _0xdc33dc;});var _0x2e3734=[];return BPromise['each'](_0x32ae66,function(_0x26eb87){return db[_0xb687('0x57')][_0xb687('0x4e')](_0x26eb87,{'include':[{'model':db[_0xb687('0x59')],'as':_0xb687('0x5c')}],'raw':!![],'transaction':_0x1c2c65})[_0xb687('0x29')](function(_0x4b5917){_0x2e3734[_0xb687('0x5f')](_0x4b5917[_0xb687('0x51')]({'plain':!![]}));});})['then'](function(){return _0x2e3734;});});});}})[_0xb687('0x29')](function(_0x144db6){return _0x144db6;})[_0xb687('0x29')](respondWithResult(_0x451d2f,null))[_0xb687('0x49')](handleError(_0x451d2f,null));};exports['removeSections']=function(_0x2e82f8,_0x55d69b){var _0x5befd5;return db[_0xb687('0x48')]['find']({'where':{'id':_0x2e82f8['params']['id']},'attributes':['id',_0xb687('0x2c')]})['then'](handleEntityNotFound(_0x55d69b,null))[_0xb687('0x29')](function(_0x1ea8d3){if(_0x1ea8d3){_0x5befd5=_0x1ea8d3;return db['UserProfileSection'][_0xb687('0x28')]({'where':{'userProfileId':_0x2e82f8[_0xb687('0x4b')]['id'],'sectionId':_0x2e82f8['query'][_0xb687('0x60')]}});}})[_0xb687('0x29')](function(){return _0x5befd5;})[_0xb687('0x29')](respondWithStatusCode(_0x55d69b,null))[_0xb687('0x49')](handleError(_0x55d69b,null));};exports[_0xb687('0x61')]=function(_0x161944,_0x1c7966){return db[_0xb687('0x48')][_0xb687('0x4d')]({'where':{'id':_0x161944[_0xb687('0x4b')]['id']}})[_0xb687('0x29')](handleEntityNotFound(_0x1c7966,null))['then'](function(_0x34160a){if(_0x34160a){return db['sequelize']['transaction'](function(_0x38bfc3){return db[_0xb687('0x57')][_0xb687('0x58')]({'where':{'userProfileId':_0x161944[_0xb687('0x4b')]['id']},'attributes':['id'],'raw':!![]})[_0xb687('0x29')](function(_0x594254){if(_0x594254){return db['UserProfileSection'][_0xb687('0x28')]({'where':{'userProfileId':_0x161944[_0xb687('0x4b')]['id'],'id':_[_0xb687('0x41')](_0x594254,function(_0x452838){return _0x452838['id'];})},'transaction':_0x38bfc3});}})['then'](function(_0x448d59){var _0x2c7c10=_[_0xb687('0x41')](_0x161944[_0xb687('0x4f')],function(_0x16872d){_0x16872d[_0xb687('0x5b')]=_0x161944[_0xb687('0x4b')]['id'];return _0x16872d;});return db[_0xb687('0x57')][_0xb687('0x62')](_0x2c7c10,{'raw':!![],'transaction':_0x38bfc3});})['then'](function(_0x25f5c3){var _0x33d1fc=_[_0xb687('0x45')](_[_0xb687('0x41')](_0x25f5c3,function(_0x3cbc92){return _0x3cbc92['get']({'plain':!![]});}),{'includeAll':![]});if(_0x33d1fc){return db[_0xb687('0x57')][_0xb687('0x58')]({'where':{'userProfileId':_0x161944['params']['id'],'sectionId':_[_0xb687('0x41')](_0x33d1fc,function(_0x49f90f){return _0x49f90f[_0xb687('0x5a')];})},'attributes':['id',_0xb687('0x5a')],'raw':!![]})['then'](function(_0x1c683e){var _0x229b60=_['map'](_0x161944[_0xb687('0x4f')],function(_0x3479c5){_0x3479c5[_0xb687('0x5b')]=_0x161944[_0xb687('0x4b')]['id'];return _0x3479c5;});return db[_0xb687('0x59')][_0xb687('0x62')](_0x229b60,{'raw':!![],'transaction':_0x38bfc3});});}})['catch'](handleError(_0x1c7966,null));});}})[_0xb687('0x29')](function(_0x18d9c1){var _0xd84be8=_[_0xb687('0x41')](_0x18d9c1,function(_0xdfe9d7){return _0xdfe9d7[_0xb687('0x51')]({'plain':!![]});});})[_0xb687('0x29')](respondWithResult(_0x1c7966,null))[_0xb687('0x49')](handleError(_0x1c7966,null));};exports[_0xb687('0x63')]=function(_0x361222,_0x290ddf,_0x5ee585){var _0x10fb0;return db['UserProfile'][_0xb687('0x4d')]({'where':{'id':_0x361222[_0xb687('0x4b')]['id']}})['then'](handleEntityNotFound(_0x290ddf,null))['then'](function(_0x35811f){if(_0x35811f){return _0x35811f[_0xb687('0x63')](_0x361222[_0xb687('0x32')][_0xb687('0x60')]);}})[_0xb687('0x29')](respondWithStatusCode(_0x290ddf,null))[_0xb687('0x49')](handleError(_0x290ddf,null));};exports[_0xb687('0x64')]=function(_0xbf6e66,_0x21f503){var _0x3bbd51={'raw':![],'where':{}};var _0x29ff7d={};var _0x20a0e1={'count':0x0,'rows':[]};var _0xb2cd6c=_0xbf6e66[_0xb687('0x32')][_0xb687('0x65')];if(typeof _0xb2cd6c===_0xb687('0x66')){throw new db['Sequelize']['ValidationError'](_0xb687('0x67'));}var _0x49970f=_0xbf6e66['query'][_0xb687('0x68')]||![];var _0x385d2d=getQueryModels(_0xb2cd6c,_0x49970f);if(typeof _0x385d2d['childModel']===_0xb687('0x66')){throw new db[(_0xb687('0x69'))]['ValidationError'](_0xb687('0x6a')+_0xb2cd6c+'\x27');}var _0x2127be=[];if(!_[_0xb687('0x6b')](_0x385d2d[_0xb687('0x6c')])){_0x2127be=_0x385d2d[_0xb687('0x6c')];}else{_0x2127be=[{'name':_0xb2cd6c}];}return db[_0xb687('0x48')][_0xb687('0x6d')]({'where':{'id':_0xbf6e66[_0xb687('0x4b')]['id']}})[_0xb687('0x29')](handleEntityNotFound(_0x21f503,null))['then'](function(_0x116b6c){if(_0x116b6c){var _0x30351a=[];for(var _0x4b11d0=0x0;_0x4b11d0<_0x2127be[_0xb687('0x38')];_0x4b11d0++){_0x30351a['push'](db[_0xb687('0x57')][_0xb687('0x6d')]({'where':{'userProfileId':_0x116b6c['id'],'name':_0x2127be[_0x4b11d0]['name']},'raw':!![]}));}return BPromise[_0xb687('0x6e')](_0x30351a);}})[_0xb687('0x29')](function(_0x1c389f){var _0x45d0ab=_[_0xb687('0x45')](_0x1c389f,function(_0x3d1cfe){return _0x3d1cfe?_0x3d1cfe:undefined;});var _0x25b429=_['filter'](_0x2127be,['ignore',!![]]);var _0x407e41=_['isEmpty'](_0x45d0ab)&&_[_0xb687('0x6b')](_0x25b429)?null:_[_0xb687('0x6f')](_0x25b429,_0x45d0ab);if(_0x407e41){var _0x232aa8=[];for(var _0x312529=0x0;_0x312529<_0x407e41['length'];_0x312529++){var _0x3cd107=_[_0xb687('0x4d')](_0x2127be,function(_0x5854d4){return _0x407e41[_0x312529]?_0x5854d4[_0xb687('0x2c')]===_0x407e41[_0x312529][_0xb687('0x2c')]:null;});if(_0x3cd107){if(_0x407e41[_0x312529][_0xb687('0x70')]){_0x232aa8[_0xb687('0x5f')](getAllResources(_0x385d2d[_0xb687('0x71')],_0x407e41[_0x312529]));}else{if(!_0x407e41[_0x312529][_0xb687('0x72')]){_0x232aa8['push'](getAllowedResources(_0x3cd107,_0x407e41[_0x312529]));}else{if(_0x3cd107[_0xb687('0x30')]){_0x232aa8[_0xb687('0x5f')](getAllFilteredResources(_0x3cd107,_0x407e41[_0x312529]));}}}}}return BPromise[_0xb687('0x6e')](_0x232aa8);}else{return null;}})[_0xb687('0x29')](function(_0x1482d4){var _0x27a2cd=_0x1482d4;var _0x1290c0=null;if(_0x27a2cd){_0x1290c0=_0x27a2cd[_0xb687('0x38')]===0x1?_0x27a2cd[0x0]:null;}if(_0x1290c0||_0x27a2cd){var _0x1411bf=db[_0x385d2d[_0xb687('0x71')]]['rawAttributes'];_0x29ff7d['model']=_[_0xb687('0x31')](_0x1411bf);_0x29ff7d[_0xb687('0x32')]=_[_0xb687('0x31')](_0xbf6e66[_0xb687('0x32')]);_0x29ff7d[_0xb687('0x35')]=_[_0xb687('0x36')](_0x29ff7d[_0xb687('0x30')],_0x29ff7d[_0xb687('0x32')]);_0x3bbd51[_0xb687('0x39')]=_['intersection'](_0x29ff7d['model'],qs['fields'](_0xbf6e66[_0xb687('0x32')][_0xb687('0x37')]));_0x3bbd51[_0xb687('0x39')]=_0x3bbd51[_0xb687('0x39')][_0xb687('0x38')]?_0x3bbd51[_0xb687('0x39')]:_0x29ff7d[_0xb687('0x30')];if(!_0xbf6e66[_0xb687('0x32')]['hasOwnProperty'](_0xb687('0x73'))){_0x3bbd51[_0xb687('0x23')]=qs[_0xb687('0x23')](_0xbf6e66[_0xb687('0x32')][_0xb687('0x23')]);_0x3bbd51[_0xb687('0x22')]=qs[_0xb687('0x22')](_0xbf6e66[_0xb687('0x32')]['offset']);}_0x3bbd51[_0xb687('0x74')]=qs['sort'](_0xbf6e66[_0xb687('0x32')][_0xb687('0x3b')]);_0x3bbd51['where']=qs[_0xb687('0x35')](_[_0xb687('0x3d')](_0xbf6e66[_0xb687('0x32')],_0x29ff7d['filters']));var _0x401b7e=[];if(_0x1290c0){var _0x1b9ad2=_[_0xb687('0x4d')](_0x2127be,[_0xb687('0x2c'),_0x1290c0[_0xb687('0x2c')]]);if(_0x1b9ad2[_0xb687('0x44')]){var _0x41ff78={};_0x41ff78[_0x1b9ad2['foreignKey']]=_0x1290c0[_0xb687('0x75')];_0x401b7e[_0xb687('0x5f')](_0x41ff78);}else{_0x3bbd51[_0xb687('0x3c')]['id']=_0x1290c0[_0xb687('0x75')];}}else{var _0x401b7e=[];for(var _0x4e0712=0x0;_0x4e0712<_0x27a2cd[_0xb687('0x38')];_0x4e0712++){var _0x1b9ad2=_[_0xb687('0x4d')](_0x2127be,['name',_0x27a2cd[_0x4e0712][_0xb687('0x2c')]]);if(_0x1b9ad2['field']){var _0x41ff78={};if(_0x1b9ad2[_0xb687('0x44')]==='id'){_0x41ff78[_0x1b9ad2['foreignKey']]=_0x27a2cd[_0x4e0712][_0xb687('0x75')];}else{_0x41ff78[_0x1b9ad2[_0xb687('0x76')]]=_0x27a2cd[_0x4e0712][_0xb687('0x77')];}}else{if(!_0x3bbd51['where']['id'])_0x3bbd51[_0xb687('0x3c')]['id']=[];_0x27a2cd[_0x4e0712][_0xb687('0x75')][_0xb687('0x78')](function(_0x3cb2c4){_0x3bbd51[_0xb687('0x3c')]['id'][_0xb687('0x5f')](_0x3cb2c4);});}}}if(!_[_0xb687('0x6b')](_0x401b7e)){_0x3bbd51[_0xb687('0x3c')]=_[_0xb687('0x40')](_0x3bbd51['where'],{'$or':_0x401b7e});}if(_0xbf6e66[_0xb687('0x32')][_0xb687('0x45')]){_0x3bbd51[_0xb687('0x3c')]=_['merge'](_0x3bbd51['where'],{'$or':_[_0xb687('0x41')](_0x1411bf,function(_0x4d6600){if(_0x4d6600[_0xb687('0x42')][_0xb687('0x79')]!==_0xb687('0x43')){var _0x4dd8f4={};_0x4dd8f4[_0x4d6600['field']]={'$like':'%'+_0xbf6e66[_0xb687('0x32')][_0xb687('0x45')]+'%'};return _0x4dd8f4;}})});}_0x3bbd51=_[_0xb687('0x40')]({},_0x3bbd51,_0xbf6e66[_0xb687('0x46')]);if(_0x1290c0&&!_0x1290c0[_0xb687('0x72')]&&_0x385d2d['childModel']===_0xb687('0x7a')){if(_0xbf6e66[_0xb687('0x32')]['includeAll']){_0x3bbd51[_0xb687('0x47')]=[{'all':!![]}];}return db[_0x385d2d[_0xb687('0x71')]]['findAll'](_0x3bbd51)[_0xb687('0x29')](function(_0xe7056c){var _0x4c129b=[];_0xe7056c[_0xb687('0x78')](function(_0xa29cc){var _0x2cf972;switch(_0xa29cc[_0xb687('0x7b')]){case _0xb687('0x7c'):_0x2cf972=_[_0xb687('0x4d')](_0x1290c0[_0xb687('0x75')],function(_0x532201){return _0x532201['id']===_0xa29cc[_0xb687('0x7d')]&&_0x532201['type']===_0xb687('0x7e');});break;case _0xb687('0x7f'):_0x2cf972=_[_0xb687('0x4d')](_0x1290c0[_0xb687('0x75')],function(_0x585682){return _0x585682['id']===_0xa29cc[_0xb687('0x7d')]&&_0x585682['type']==='CustomReports';});break;}if(_0x2cf972)_0x4c129b[_0xb687('0x5f')](_0xa29cc);});_0x20a0e1[_0xb687('0x80')]=_0x4c129b[_0xb687('0x38')];_0x20a0e1['rows']=_0x4c129b;return _0x20a0e1;});}else{return db[_0x385d2d[_0xb687('0x71')]][_0xb687('0x80')]({'where':_0x3bbd51['where']})[_0xb687('0x29')](function(_0x4d6054){_0x20a0e1[_0xb687('0x80')]=_0x4d6054;if(_0xbf6e66[_0xb687('0x32')]['includeAll']){if(_0x385d2d[_0xb687('0x71')]==='CmContact'){_0x3bbd51[_0xb687('0x47')]=[{'model':db['Tag'],'as':'Tags','attributes':['id',_0xb687('0x2c'),_0xb687('0x81')],'required':_0xbf6e66['query'][_0xb687('0x82')]?!![]:![]},{'model':db['Tag'],'as':_0xb687('0x83'),'attributes':['id',_0xb687('0x2c'),_0xb687('0x81')],'through':_0xbf6e66['query'][_0xb687('0x82')]?{'attributes':[],'where':{'TagId':_0xbf6e66[_0xb687('0x32')][_0xb687('0x82')]||undefined}}:{},'required':_0xbf6e66[_0xb687('0x32')][_0xb687('0x82')]?!![]:![]}];}else{_0x3bbd51[_0xb687('0x47')]=[{'all':!![]}];}}return db[_0x385d2d['childModel']][_0xb687('0x58')](_0x3bbd51);})[_0xb687('0x29')](function(_0x40aba1){_0x20a0e1[_0xb687('0x84')]=_0x40aba1;return _0x20a0e1;});}}else{return _0x20a0e1;}})[_0xb687('0x29')](respondWithFilteredResult(_0x21f503,_0x3bbd51))['catch'](handleError(_0x21f503,null));};function getAllResources(_0x4d0c14,_0x200b55){return new BPromise(function(_0x5d14a,_0x3b10fd){if(_0x200b55){var _0xfa6ed2=_0x200b55[_0xb687('0x45')]?{[_0x200b55[_0xb687('0x45')][_0xb687('0x44')]]:_0x200b55['filter'][_0xb687('0x85')]}:undefined;return db[_0x4d0c14][_0xb687('0x58')]({'where':_0xfa6ed2,'raw':!![]})[_0xb687('0x29')](function(_0x53f78b){_0x200b55[_0xb687('0x75')]=_[_0xb687('0x41')](_0x53f78b,'id');_0x5d14a(_0x200b55);})[_0xb687('0x49')](function(_0x4b65c4){_0x3b10fd(_0x4b65c4);});}else{_0x5d14a(null);}});}function getAllFilteredResources(_0x344f55,_0x42bccd){return new BPromise(function(_0x5d6de9,_0x4523e5){var _0x943edb=_0x344f55[_0xb687('0x45')]?{[_0x344f55[_0xb687('0x45')]['field']]:_0x344f55[_0xb687('0x45')][_0xb687('0x85')]}:undefined;return db[_0x344f55[_0xb687('0x30')]][_0xb687('0x58')]({'where':_0x943edb,'raw':!![]})[_0xb687('0x29')](function(_0x53b61e){_0x42bccd[_0xb687('0x77')]=_[_0xb687('0x41')](_0x53b61e,function(_0x5c71f5){return _0x5c71f5[_0xb687('0x2c')];});_0x5d6de9(_0x42bccd);})[_0xb687('0x49')](function(_0x4c40b1){_0x4523e5(_0x4c40b1);});});}function getAllowedResources(_0x45525a,_0xd11975){return new BPromise(function(_0x4524c6,_0x4cd21d){if(_0xd11975){return db[_0xb687('0x59')][_0xb687('0x58')]({'where':{'sectionId':_0xd11975['id']},'raw':!![]})['then'](function(_0x4b486f){if(_0x45525a['field']&&_0x45525a[_0xb687('0x44')]!=='id'){_0xd11975['resourceFields']=_[_0xb687('0x41')](_0x4b486f,function(_0x6a745b){return _0x6a745b[_0x45525a[_0xb687('0x44')]];});}else{if(_0x45525a[_0xb687('0x71')]===_0xb687('0x7a')){_0xd11975['resourceIds']=_['map'](_0x4b486f,function(_0x217505){return{'id':_0x217505[_0xb687('0x86')],'type':_0x217505[_0xb687('0x42')]};});}else{_0xd11975[_0xb687('0x75')]=_[_0xb687('0x41')](_0x4b486f,function(_0x2a8dd4){return _0x2a8dd4[_0xb687('0x86')];});}}_0x4524c6(_0xd11975);})['catch'](function(_0x4a5102){_0x4cd21d(_0x4a5102);});}else{_0x4524c6(null);}});}function getQueryModels(_0x4a7895,_0x2c9199){var _0x29d687=_0x4a7895[_0xb687('0x87')]();var _0x51c286={'childModel':undefined,'parentSections':[]};switch(_0x29d687){case'squareprojects':_0x51c286['childModel']=_0xb687('0x88');break;case'odbc':_0x51c286[_0xb687('0x71')]=_0xb687('0x89');break;case _0xb687('0x8a'):_0x51c286[_0xb687('0x71')]=_0xb687('0x8b');_0x51c286[_0xb687('0x6c')]=[{'name':'SquareProjects','field':'name','foreignKey':'projectName'}];break;case _0xb687('0x8c'):_0x51c286[_0xb687('0x71')]=_0xb687('0x8d');break;case _0xb687('0x8e'):_0x51c286[_0xb687('0x71')]=_0xb687('0x8f');_0x51c286[_0xb687('0x6c')]=[{'name':'Lists','field':'id','foreignKey':_0xb687('0x90')}];break;case _0xb687('0x91'):_0x51c286[_0xb687('0x71')]=_0xb687('0x92');break;case _0xb687('0x93'):_0x51c286['childModel']=_0xb687('0x94');break;case _0xb687('0x95'):_0x51c286[_0xb687('0x71')]='CmCustomField';break;case _0xb687('0x96'):_0x51c286[_0xb687('0x71')]=_0xb687('0x97');break;case _0xb687('0x98'):_0x51c286[_0xb687('0x71')]=_0xb687('0x99');break;case _0xb687('0x9a'):_0x51c286[_0xb687('0x71')]=_0xb687('0x9b');break;case _0xb687('0x9c'):_0x51c286[_0xb687('0x71')]=_0xb687('0x9d');break;case _0xb687('0x9e'):case _0xb687('0x9f'):case _0xb687('0xa0'):_0x51c286['childModel']=_0xb687('0xa1');break;case _0xb687('0xa2'):_0x51c286[_0xb687('0x71')]='VoiceContext';break;case _0xb687('0xa3'):_0x51c286[_0xb687('0x71')]='VoiceMail';break;case _0xb687('0xa4'):_0x51c286['childModel']=_0xb687('0xa5');_0x51c286[_0xb687('0x6c')]=[{'name':_0xb687('0xa6'),'field':'name','foreignKey':_0xb687('0xa7'),'model':_0xb687('0xa8'),'filter':{'field':_0xb687('0xa9'),'value':[_0xb687('0xaa')]}},{'name':'Telephones','field':'name','foreignKey':_0xb687('0xa7'),'model':_0xb687('0xa8'),'filter':{'field':_0xb687('0xa9'),'value':[_0xb687('0xab')]}},{'name':_0xb687('0xac'),'field':_0xb687('0x2c'),'foreignKey':'queue','model':_0xb687('0xad')}];break;case _0xb687('0xae'):_0x51c286[_0xb687('0x71')]='VoiceMusicOnHold';break;case _0xb687('0xaf'):_0x51c286[_0xb687('0x71')]=_0xb687('0xb0');break;case'voiceprefixes':_0x51c286['childModel']='VoicePrefix';break;case _0xb687('0xb1'):_0x51c286['childModel']='Campaign';break;case'mailqueues':_0x51c286[_0xb687('0x71')]=_0xb687('0xb2');break;case _0xb687('0xb3'):_0x51c286['childModel']=_0xb687('0xb4');break;case _0xb687('0xb5'):_0x51c286[_0xb687('0x71')]=_0xb687('0xb6');break;case _0xb687('0xb7'):_0x51c286[_0xb687('0x71')]=_0xb687('0xb8');break;case _0xb687('0xb9'):_0x51c286[_0xb687('0x71')]=_0xb687('0xba');break;case _0xb687('0xbb'):_0x51c286[_0xb687('0x71')]=_0xb687('0xbc');break;case _0xb687('0xbd'):_0x51c286[_0xb687('0x71')]='SmsAccount';break;case _0xb687('0xbe'):_0x51c286[_0xb687('0x71')]='Team';break;case _0xb687('0xbf'):case'queuecampaigns':_0x51c286[_0xb687('0x71')]=_0xb687('0xad');if(_0x2c9199){_0x51c286[_0xb687('0x6c')]=[{'name':_0xb687('0xac')},{'name':_0xb687('0xc0')}];}break;case'users':case _0xb687('0xc1'):case'telephones':_0x51c286['childModel']=_0xb687('0xa8');if(_0x2c9199){_0x51c286[_0xb687('0x6c')]=[{'name':'Users','filter':{'field':_0xb687('0xa9'),'value':[_0xb687('0xc2'),_0xb687('0xc3')]},'ignore':!![]},{'name':_0xb687('0xa6')},{'name':_0xb687('0xc4')}];}break;case _0xb687('0xc5'):_0x51c286[_0xb687('0x71')]=_0xb687('0xc6');break;case _0xb687('0xc7'):_0x51c286[_0xb687('0x71')]='SalesforceAccount';break;case _0xb687('0xc8'):_0x51c286['childModel']=_0xb687('0xc9');break;case _0xb687('0xca'):_0x51c286[_0xb687('0x71')]='SugarcrmAccount';break;case _0xb687('0xcb'):_0x51c286[_0xb687('0x71')]=_0xb687('0xcc');break;case'zohoaccounts':_0x51c286[_0xb687('0x71')]=_0xb687('0xcd');break;case _0xb687('0xce'):_0x51c286['childModel']='User';break;case _0xb687('0xcf'):_0x51c286[_0xb687('0x71')]=_0xb687('0xd0');break;case _0xb687('0xd1'):_0x51c286[_0xb687('0x71')]=_0xb687('0xd2');break;case'customdashboards':_0x51c286[_0xb687('0x71')]=_0xb687('0xd3');break;case'intervals':_0x51c286[_0xb687('0x71')]=_0xb687('0xd4');break;case _0xb687('0xd5'):_0x51c286[_0xb687('0x71')]=_0xb687('0xd6');break;case _0xb687('0xd7'):_0x51c286[_0xb687('0x71')]=_0xb687('0xd8');break;case'sounds':_0x51c286[_0xb687('0x71')]=_0xb687('0xd9');break;case'tags':_0x51c286[_0xb687('0x71')]=_0xb687('0xda');break;case'templates':_0x51c286[_0xb687('0x71')]=_0xb687('0xdb');break;case'triggers':_0x51c286['childModel']=_0xb687('0xdc');break;case _0xb687('0xdd'):_0x51c286[_0xb687('0x71')]=_0xb687('0xde');break;case _0xb687('0xdf'):_0x51c286[_0xb687('0x71')]='Variable';break;case _0xb687('0xe0'):_0x51c286['childModel']=_0xb687('0xe1');break;case _0xb687('0xe2'):_0x51c286[_0xb687('0x71')]=_0xb687('0x7a');_0x51c286[_0xb687('0x6c')]=[{'name':_0xb687('0xe3'),'field':'id','foreignKey':_0xb687('0x7d')}];break;case _0xb687('0xe4'):_0x51c286['childModel']=_0xb687('0xe5');break;default:return _0x51c286;}return _0x51c286;}
\ No newline at end of file
+var _0x9957=['crudPermissions','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','sequelize','removeSections','ids','addResources','bulkCreate','removeResources','section','undefined','Sequelize','Unknown\x20section','mergeResources','ValidationError','parentSections','findOne','push','all','isEmpty','union','ignore','childModel','limit','foreignKey','resourceIds','forEach','key','VIRTUAL','AnalyticExtractedReport','reportType','default','reportId','DefaultReports','custom','CustomReports','rows','CmContact','Tag','Tags','ThroughTags','tag','value','resourceFields','resourceId','toLowerCase','squareprojects','SquareProject','odbc','squarerecordings','SquareRecording','projects','Lists','ListId','CmList','companies','CmCompany','globalcustomfields','CmCustomField','ChatQueue','chatwebsites','faxqueues','FaxQueue','faxaccounts','FaxAccount','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','Telephones','VoiceQueues','queue','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','MailAccount','mailsubstatuses','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','teams','Team','voicequeues','VoiceQueue','QueueCampaigns','users','agents','telephones','Users','admin','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','CannedAnswer','dispositions','Disposition','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','Sound','tags','Trunk','variables','Variable','Plugin','extractedreports','Reports','metrics','AnalyticMetric','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','count','offset','apply','save','update','then','destroy','error','name','send','index','UserProfile','rawAttributes','query','dateStart','dateEnd','filters','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','where','pick','add','day','merge','filter','map','type','field','findAll','catch','show','keys','fields','length','includeAll','find','create','body','clone','params','include','options','get','omit','createdAt','updatedAt'];(function(_0x11b417,_0x85dab6){var _0x46563e=function(_0x261260){while(--_0x261260){_0x11b417['push'](_0x11b417['shift']());}};_0x46563e(++_0x85dab6);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var pdf=require(_0x7995('0x0'));var emlformat=require(_0x7995('0x1'));var rimraf=require(_0x7995('0x2'));var zipdir=require(_0x7995('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7995('0x4'));var moment=require(_0x7995('0x5'));var BPromise=require(_0x7995('0x6'));var Mustache=require(_0x7995('0x7'));var util=require('util');var path=require(_0x7995('0x8'));var sox=require(_0x7995('0x9'));var csv=require(_0x7995('0xa'));var ejs=require(_0x7995('0xb'));var fs=require('fs');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 qs=require(_0x7995('0x13'));var logger=require(_0x7995('0x14'))(_0x7995('0x15'));var utils=require(_0x7995('0x16'));var config=require('../../config/environment');var db=require(_0x7995('0x17'))['db'];config[_0x7995('0x18')]=_['defaults'](config[_0x7995('0x18')],{'host':_0x7995('0x19'),'port':0x18eb});var socket=require(_0x7995('0x1a'))(new Redis(config[_0x7995('0x18')]));require(_0x7995('0x1b'))[_0x7995('0x1c')](socket);function respondWithStatusCode(_0x2bbe7a,_0x4cc004){_0x4cc004=_0x4cc004||0xcc;return function(_0x58f5ad){if(_0x58f5ad){return _0x2bbe7a[_0x7995('0x1d')](_0x4cc004);}return _0x2bbe7a[_0x7995('0x1e')](_0x4cc004)[_0x7995('0x1f')]();};}function respondWithResult(_0x321ae8,_0x3f1d3e){_0x3f1d3e=_0x3f1d3e||0xc8;return function(_0x1a5310){if(_0x1a5310){return _0x321ae8[_0x7995('0x1e')](_0x3f1d3e)[_0x7995('0x20')](_0x1a5310);}};}function respondWithFilteredResult(_0x5377e5,_0x2eeacc){return function(_0x565d97){if(_0x565d97){var _0x2f832e=_0x565d97[_0x7995('0x21')],_0x37f297=_0x2eeacc[_0x7995('0x22')],_0x43d4b8=_0x2eeacc['offset']+_0x2eeacc['limit'],_0x291317;if(_0x43d4b8>=_0x2f832e){_0x43d4b8=_0x2f832e;_0x291317=0xc8;}else{_0x291317=0xce;}_0x5377e5[_0x7995('0x1e')](_0x291317);return _0x5377e5['set']('Content-Range',_0x37f297+'-'+_0x43d4b8+'/'+_0x2f832e)[_0x7995('0x20')](_0x565d97);}return null;};}function patchUpdates(_0x3d463e){return function(_0x4cbe10){try{jsonpatch[_0x7995('0x23')](_0x4cbe10,_0x3d463e,!![]);}catch(_0x51f276){return BPromise['reject'](_0x51f276);}return _0x4cbe10[_0x7995('0x24')]();};}function saveUpdates(_0x327b1f,_0x350fd9){return function(_0x1a8568){if(_0x1a8568){return _0x1a8568[_0x7995('0x25')](_0x327b1f)[_0x7995('0x26')](function(_0x5d40ae){return _0x5d40ae;});}return null;};}function removeEntity(_0x32a09a,_0x46ee4b){return function(_0x204507){if(_0x204507){return _0x204507[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x32a09a[_0x7995('0x1e')](0xcc)[_0x7995('0x1f')]();});}};}function handleEntityNotFound(_0x472195,_0x59405a){return function(_0x39df42){if(!_0x39df42){_0x472195[_0x7995('0x1d')](0x194);}return _0x39df42;};}function handleError(_0x401dc3,_0x268ce7){_0x268ce7=_0x268ce7||0x1f4;return function(_0x3a3fcf){logger[_0x7995('0x28')](_0x3a3fcf['stack']);if(_0x3a3fcf[_0x7995('0x29')]){delete _0x3a3fcf['name'];}_0x401dc3[_0x7995('0x1e')](_0x268ce7)[_0x7995('0x2a')](_0x3a3fcf);};}exports[_0x7995('0x2b')]=function(_0x132a42,_0x11c1eb){var _0x4b6f99={},_0x9b2a15={},_0x514445={'count':0x0,'rows':[]};var _0x456a28=db[_0x7995('0x2c')][_0x7995('0x2d')];_0x9b2a15['model']=_['keys'](_0x456a28);var _0x48e573={'dateStart':_0x132a42[_0x7995('0x2e')][_0x7995('0x2f')],'dateEnd':_0x132a42[_0x7995('0x2e')][_0x7995('0x30')]};delete _0x132a42[_0x7995('0x2e')][_0x7995('0x2f')];delete _0x132a42['query']['dateEnd'];_0x9b2a15[_0x7995('0x2e')]=_['keys'](_0x132a42[_0x7995('0x2e')]);_0x9b2a15[_0x7995('0x31')]=_[_0x7995('0x32')](_0x9b2a15[_0x7995('0x33')],_0x9b2a15[_0x7995('0x2e')]);_0x4b6f99['attributes']=_[_0x7995('0x32')](_0x9b2a15[_0x7995('0x33')],qs['fields'](_0x132a42['query']['fields']));_0x4b6f99[_0x7995('0x34')]=_0x4b6f99[_0x7995('0x34')]['length']?_0x4b6f99[_0x7995('0x34')]:_0x9b2a15['model'];if(!_0x132a42[_0x7995('0x2e')][_0x7995('0x35')](_0x7995('0x36'))){_0x4b6f99['limit']=qs['limit'](_0x132a42[_0x7995('0x2e')]['limit']);_0x4b6f99['offset']=qs[_0x7995('0x22')](_0x132a42[_0x7995('0x2e')]['offset']);}_0x4b6f99[_0x7995('0x37')]=qs[_0x7995('0x38')](_0x132a42[_0x7995('0x2e')][_0x7995('0x38')]);_0x4b6f99[_0x7995('0x39')]=qs['filters'](_[_0x7995('0x3a')](_0x132a42[_0x7995('0x2e')],_0x9b2a15[_0x7995('0x31')]));if(_0x48e573[_0x7995('0x2f')]){if(_0x48e573['dateEnd']){_0x48e573[_0x7995('0x30')]=moment(_0x48e573[_0x7995('0x30')])[_0x7995('0x3b')](0x1,_0x7995('0x3c'));}else{_0x48e573[_0x7995('0x30')]=moment(_0x48e573[_0x7995('0x2f')])['add'](0x1,_0x7995('0x3c'));}_[_0x7995('0x3d')](_0x4b6f99[_0x7995('0x39')],{'createdAt':{'$gte':_0x48e573[_0x7995('0x2f')],'$lte':_0x48e573[_0x7995('0x30')]}});}if(_0x132a42[_0x7995('0x2e')][_0x7995('0x3e')]){_0x4b6f99[_0x7995('0x39')]=_[_0x7995('0x3d')](_0x4b6f99[_0x7995('0x39')],{'$or':_[_0x7995('0x3f')](_0x456a28,function(_0x270d52){if(_0x270d52[_0x7995('0x40')]['key']!=='VIRTUAL'){var _0x334dff={};_0x334dff[_0x270d52[_0x7995('0x41')]]={'$like':'%'+_0x132a42['query']['filter']+'%'};return _0x334dff;}})});}_0x4b6f99=_[_0x7995('0x3d')]({},_0x4b6f99,_0x132a42['options']);var _0x504a33={'where':_0x4b6f99[_0x7995('0x39')]};return db[_0x7995('0x2c')][_0x7995('0x21')](_0x504a33)['then'](function(_0x46ac4f){_0x514445['count']=_0x46ac4f;if(_0x132a42[_0x7995('0x2e')]['includeAll']){_0x4b6f99['include']=[{'all':!![]}];}return db[_0x7995('0x2c')][_0x7995('0x42')](_0x4b6f99);})[_0x7995('0x26')](function(_0x3f1c35){_0x514445['rows']=_0x3f1c35;return _0x514445;})[_0x7995('0x26')](respondWithFilteredResult(_0x11c1eb,_0x4b6f99))[_0x7995('0x43')](handleError(_0x11c1eb,null));};exports[_0x7995('0x44')]=function(_0x6c7bec,_0x4e09b7){var _0x5f28e7={'raw':![],'where':{'id':_0x6c7bec['params']['id']}},_0x1c37c6={};_0x1c37c6[_0x7995('0x33')]=_['keys'](db[_0x7995('0x2c')]['rawAttributes']);_0x1c37c6[_0x7995('0x2e')]=_[_0x7995('0x45')](_0x6c7bec['query']);_0x1c37c6[_0x7995('0x31')]=_[_0x7995('0x32')](_0x1c37c6[_0x7995('0x33')],_0x1c37c6[_0x7995('0x2e')]);_0x5f28e7['attributes']=_[_0x7995('0x32')](_0x1c37c6[_0x7995('0x33')],qs[_0x7995('0x46')](_0x6c7bec['query'][_0x7995('0x46')]));_0x5f28e7[_0x7995('0x34')]=_0x5f28e7[_0x7995('0x34')][_0x7995('0x47')]?_0x5f28e7[_0x7995('0x34')]:_0x1c37c6['model'];if(_0x6c7bec[_0x7995('0x2e')][_0x7995('0x48')]){_0x5f28e7['include']=[{'all':!![]}];}_0x5f28e7=_[_0x7995('0x3d')]({},_0x5f28e7,_0x6c7bec['options']);return db[_0x7995('0x2c')][_0x7995('0x49')](_0x5f28e7)[_0x7995('0x26')](handleEntityNotFound(_0x4e09b7,null))[_0x7995('0x26')](respondWithResult(_0x4e09b7,null))[_0x7995('0x43')](handleError(_0x4e09b7,null));};exports[_0x7995('0x4a')]=function(_0x1579b9,_0x4d46bc){return db[_0x7995('0x2c')][_0x7995('0x4a')](_0x1579b9[_0x7995('0x4b')],{})['then'](respondWithResult(_0x4d46bc,0xc9))[_0x7995('0x43')](handleError(_0x4d46bc,null));};exports[_0x7995('0x4c')]=function(_0x12d4b8,_0x47d1d8){var _0x4ec548={'raw':![],'where':{'id':_0x12d4b8[_0x7995('0x4d')]['id']}},_0x5a592e={};_0x5a592e[_0x7995('0x33')]=_['keys'](db[_0x7995('0x2c')][_0x7995('0x2d')]);_0x4ec548[_0x7995('0x34')]=_[_0x7995('0x32')](_0x5a592e[_0x7995('0x33')],qs['fields'](_0x12d4b8[_0x7995('0x2e')]['fields']));_0x4ec548[_0x7995('0x34')]=_0x4ec548[_0x7995('0x34')][_0x7995('0x47')]?_0x4ec548['attributes']:_0x5a592e['model'];if(_0x12d4b8['query']['includeAll']){_0x4ec548[_0x7995('0x4e')]=[{'all':!![]}];}_0x4ec548=_[_0x7995('0x3d')]({},_0x4ec548,_0x12d4b8[_0x7995('0x4f')]);return db[_0x7995('0x2c')][_0x7995('0x49')](_0x4ec548)[_0x7995('0x26')](handleEntityNotFound(_0x47d1d8,null))[_0x7995('0x26')](function(_0xda6ce8){if(_0xda6ce8){var _0x328671=_0xda6ce8[_0x7995('0x50')]({'plain':!![]});_0x328671=qs[_0x7995('0x51')](_0x328671,['id',_0x7995('0x52'),_0x7995('0x53'),_0x7995('0x54')]);_0x12d4b8[_0x7995('0x4b')]=_[_0x7995('0x51')](_0x12d4b8[_0x7995('0x4b')],['id',_0x7995('0x52'),_0x7995('0x53')]);return db['sequelize'][_0x7995('0x55')](function(_0x630737){return db[_0x7995('0x2c')][_0x7995('0x4a')](_['merge'](_0x328671,_0x12d4b8['body']),{'include':_0x12d4b8[_0x7995('0x2e')][_0x7995('0x48')]?[{'all':!![]}]:undefined,'transaction':_0x630737})[_0x7995('0x26')](function(_0x332a85){var _0x51c50b=_0x332a85[_0x7995('0x50')]({'plain':!![]});return db[_0x7995('0x56')][_0x7995('0x42')]({'where':{'userProfileId':_0x12d4b8[_0x7995('0x4d')]['id']},'raw':!![]})['then'](function(_0x5e2d97){if(_0x5e2d97){return BPromise[_0x7995('0x57')](_0x5e2d97,function(_0x398fac){return new BPromise(function(_0x6c0221,_0x1d69ce){if(_0x398fac[_0x7995('0x58')]===null||_0x398fac[_0x7995('0x58')]===0x1)_0x6c0221(null);return db[_0x7995('0x59')][_0x7995('0x42')]({'where':{'sectionId':_0x398fac['id']},'raw':!![]})[_0x7995('0x26')](function(_0x50caf5){var _0x18f230=_[_0x7995('0x3f')](_0x50caf5,function(_0xdf9e38){return qs[_0x7995('0x51')](_0xdf9e38,['id','createdAt','updatedAt',_0x7995('0x5a')]);});_0x6c0221(_0x18f230);})[_0x7995('0x43')](function(_0x47d5d7){_0x1d69ce(_0x47d5d7);});})[_0x7995('0x26')](function(_0x375fc9){var _0x2e3421=qs[_0x7995('0x51')](_0x398fac,['id',_0x7995('0x52'),'updatedAt']);_0x2e3421[_0x7995('0x5b')]=_0x51c50b['id'];if(_0x375fc9)_0x2e3421['Resources']=_0x375fc9;return _0x2e3421;})[_0x7995('0x26')](function(_0xe31dcb){return db[_0x7995('0x56')][_0x7995('0x4a')](_0xe31dcb,{'include':[{'model':db[_0x7995('0x59')],'as':_0x7995('0x5c')}],'raw':!![],'transaction':_0x630737});});})[_0x7995('0x26')](function(){return _0x51c50b;});}});});});}})[_0x7995('0x26')](respondWithResult(_0x47d1d8,0xc9))[_0x7995('0x43')](handleError(_0x47d1d8,null));};exports[_0x7995('0x25')]=function(_0x2618c4,_0x234d8d){if(_0x2618c4['body']['id']){delete _0x2618c4[_0x7995('0x4b')]['id'];}return db[_0x7995('0x2c')][_0x7995('0x49')]({'where':{'id':_0x2618c4[_0x7995('0x4d')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x234d8d,null))['then'](saveUpdates(_0x2618c4['body'],null))[_0x7995('0x26')](respondWithResult(_0x234d8d,null))[_0x7995('0x43')](handleError(_0x234d8d,null));};exports[_0x7995('0x27')]=function(_0xae6166,_0x5aa2ec){return db[_0x7995('0x2c')]['find']({'where':{'id':_0xae6166['params']['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5aa2ec,null))[_0x7995('0x26')](removeEntity(_0x5aa2ec,null))[_0x7995('0x43')](handleError(_0x5aa2ec,null));};exports[_0x7995('0x5d')]=function(_0x290eae,_0x25d9a4){return db[_0x7995('0x2c')][_0x7995('0x5d')]()[_0x7995('0x26')](respondWithResult(_0x25d9a4,null))[_0x7995('0x43')](handleError(_0x25d9a4,null));};exports['addSections']=function(_0x2dc1f7,_0x8908cd){var _0x3c5802=_0x2dc1f7['body'];return db[_0x7995('0x2c')][_0x7995('0x49')]({'where':{'id':_0x2dc1f7[_0x7995('0x4d')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x8908cd,null))[_0x7995('0x26')](function(_0x51ab1e){if(_0x51ab1e){return db[_0x7995('0x5e')][_0x7995('0x55')](function(_0x2f94c4){return db[_0x7995('0x56')][_0x7995('0x27')]({'where':{'userProfileId':_0x2dc1f7['params']['id'],'sectionId':_['map'](_0x3c5802,function(_0xd07c1c){return _0xd07c1c[_0x7995('0x5a')];})},'transaction':_0x2f94c4})[_0x7995('0x26')](function(){var _0x35aaec=_['map'](_0x3c5802,function(_0x3b45e8){_0x3b45e8[_0x7995('0x5b')]=_0x2dc1f7['params']['id'];return _0x3b45e8;});var _0x480fdb=[];return BPromise[_0x7995('0x57')](_0x35aaec,function(_0x305b5a){return db['UserProfileSection'][_0x7995('0x4a')](_0x305b5a,{'include':[{'model':db['UserProfileResource'],'as':_0x7995('0x5c')}],'raw':!![],'transaction':_0x2f94c4})[_0x7995('0x26')](function(_0x4ff9ff){_0x480fdb['push'](_0x4ff9ff[_0x7995('0x50')]({'plain':!![]}));});})['then'](function(){return _0x480fdb;});});});}})[_0x7995('0x26')](function(_0xa41fff){return _0xa41fff;})[_0x7995('0x26')](respondWithResult(_0x8908cd,null))[_0x7995('0x43')](handleError(_0x8908cd,null));};exports[_0x7995('0x5f')]=function(_0x18cff7,_0x8af865){var _0x14cb17;return db[_0x7995('0x2c')][_0x7995('0x49')]({'where':{'id':_0x18cff7[_0x7995('0x4d')]['id']},'attributes':['id',_0x7995('0x29')]})[_0x7995('0x26')](handleEntityNotFound(_0x8af865,null))[_0x7995('0x26')](function(_0x36e3a7){if(_0x36e3a7){_0x14cb17=_0x36e3a7;return db[_0x7995('0x56')][_0x7995('0x27')]({'where':{'userProfileId':_0x18cff7[_0x7995('0x4d')]['id'],'sectionId':_0x18cff7[_0x7995('0x2e')][_0x7995('0x60')]}});}})[_0x7995('0x26')](function(){return _0x14cb17;})[_0x7995('0x26')](respondWithStatusCode(_0x8af865,null))[_0x7995('0x43')](handleError(_0x8af865,null));};exports[_0x7995('0x61')]=function(_0x260ef1,_0x33479a){return db[_0x7995('0x2c')][_0x7995('0x49')]({'where':{'id':_0x260ef1['params']['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x33479a,null))[_0x7995('0x26')](function(_0x5683b2){if(_0x5683b2){return db['sequelize'][_0x7995('0x55')](function(_0x3fe8fc){return db[_0x7995('0x56')][_0x7995('0x42')]({'where':{'userProfileId':_0x260ef1[_0x7995('0x4d')]['id']},'attributes':['id'],'raw':!![]})[_0x7995('0x26')](function(_0x5507a0){if(_0x5507a0){return db[_0x7995('0x56')][_0x7995('0x27')]({'where':{'userProfileId':_0x260ef1[_0x7995('0x4d')]['id'],'id':_[_0x7995('0x3f')](_0x5507a0,function(_0x7d9c6e){return _0x7d9c6e['id'];})},'transaction':_0x3fe8fc});}})[_0x7995('0x26')](function(_0x151d99){var _0xc93dcb=_['map'](_0x260ef1[_0x7995('0x4b')],function(_0x2b8217){_0x2b8217['userProfileId']=_0x260ef1['params']['id'];return _0x2b8217;});return db[_0x7995('0x56')][_0x7995('0x62')](_0xc93dcb,{'raw':!![],'transaction':_0x3fe8fc});})[_0x7995('0x26')](function(_0x3db7a9){var _0xe42797=_['filter'](_[_0x7995('0x3f')](_0x3db7a9,function(_0x406054){return _0x406054['get']({'plain':!![]});}),{'includeAll':![]});if(_0xe42797){return db[_0x7995('0x56')][_0x7995('0x42')]({'where':{'userProfileId':_0x260ef1['params']['id'],'sectionId':_[_0x7995('0x3f')](_0xe42797,function(_0x4a5bc5){return _0x4a5bc5[_0x7995('0x5a')];})},'attributes':['id',_0x7995('0x5a')],'raw':!![]})[_0x7995('0x26')](function(_0x428a1b){var _0x460fa6=_['map'](_0x260ef1[_0x7995('0x4b')],function(_0x345080){_0x345080[_0x7995('0x5b')]=_0x260ef1['params']['id'];return _0x345080;});return db[_0x7995('0x59')][_0x7995('0x62')](_0x460fa6,{'raw':!![],'transaction':_0x3fe8fc});});}})[_0x7995('0x43')](handleError(_0x33479a,null));});}})[_0x7995('0x26')](function(_0x5d7018){var _0x3356fd=_[_0x7995('0x3f')](_0x5d7018,function(_0x3a5f5e){return _0x3a5f5e['get']({'plain':!![]});});})['then'](respondWithResult(_0x33479a,null))[_0x7995('0x43')](handleError(_0x33479a,null));};exports[_0x7995('0x63')]=function(_0x4800a8,_0x590373,_0x2e3dfe){var _0x1e50b1;return db[_0x7995('0x2c')][_0x7995('0x49')]({'where':{'id':_0x4800a8[_0x7995('0x4d')]['id']}})['then'](handleEntityNotFound(_0x590373,null))['then'](function(_0x393cb7){if(_0x393cb7){return _0x393cb7['removeResources'](_0x4800a8['query'][_0x7995('0x60')]);}})[_0x7995('0x26')](respondWithStatusCode(_0x590373,null))[_0x7995('0x43')](handleError(_0x590373,null));};exports['getResources']=function(_0x3b1309,_0x3cb1d2){var _0x2b0b79={'raw':![],'where':{}};var _0x27889a={};var _0x267a7f={'count':0x0,'rows':[]};var _0x5799d1=_0x3b1309[_0x7995('0x2e')][_0x7995('0x64')];if(typeof _0x5799d1===_0x7995('0x65')){throw new db[(_0x7995('0x66'))]['ValidationError'](_0x7995('0x67'));}var _0x38064a=_0x3b1309['query'][_0x7995('0x68')]||![];var _0x20683e=getQueryModels(_0x5799d1,_0x38064a);if(typeof _0x20683e['childModel']===_0x7995('0x65')){throw new db['Sequelize'][(_0x7995('0x69'))]('Invalid\x20section\x20\x27'+_0x5799d1+'\x27');}var _0x21f496=[];if(!_['isEmpty'](_0x20683e[_0x7995('0x6a')])){_0x21f496=_0x20683e[_0x7995('0x6a')];}else{_0x21f496=[{'name':_0x5799d1}];}return db['UserProfile'][_0x7995('0x6b')]({'where':{'id':_0x3b1309['params']['id']}})['then'](handleEntityNotFound(_0x3cb1d2,null))[_0x7995('0x26')](function(_0x14812d){if(_0x14812d){var _0x784492=[];for(var _0xb7c078=0x0;_0xb7c078<_0x21f496['length'];_0xb7c078++){_0x784492[_0x7995('0x6c')](db[_0x7995('0x56')]['findOne']({'where':{'userProfileId':_0x14812d['id'],'name':_0x21f496[_0xb7c078]['name']},'raw':!![]}));}return BPromise[_0x7995('0x6d')](_0x784492);}})['then'](function(_0x395670){var _0x1446cc=_[_0x7995('0x3e')](_0x395670,function(_0x5b42be){return _0x5b42be?_0x5b42be:undefined;});var _0x48cfb7=_[_0x7995('0x3e')](_0x21f496,['ignore',!![]]);var _0x12e9d9=_[_0x7995('0x6e')](_0x1446cc)&&_[_0x7995('0x6e')](_0x48cfb7)?null:_[_0x7995('0x6f')](_0x48cfb7,_0x1446cc);if(_0x12e9d9){var _0x4ff5e7=[];for(var _0x52d102=0x0;_0x52d102<_0x12e9d9['length'];_0x52d102++){var _0x2d1c71=_[_0x7995('0x49')](_0x21f496,function(_0x23b4c3){return _0x12e9d9[_0x52d102]?_0x23b4c3[_0x7995('0x29')]===_0x12e9d9[_0x52d102][_0x7995('0x29')]:null;});if(_0x2d1c71){if(_0x12e9d9[_0x52d102][_0x7995('0x70')]){_0x4ff5e7['push'](getAllResources(_0x20683e['childModel'],_0x12e9d9[_0x52d102]));}else{if(!_0x12e9d9[_0x52d102][_0x7995('0x58')]){_0x4ff5e7['push'](getAllowedResources(_0x2d1c71,_0x12e9d9[_0x52d102]));}else{if(_0x2d1c71['model']){_0x4ff5e7[_0x7995('0x6c')](getAllFilteredResources(_0x2d1c71,_0x12e9d9[_0x52d102]));}}}}}return BPromise['all'](_0x4ff5e7);}else{return null;}})['then'](function(_0x35c3f3){var _0x3541d7=_0x35c3f3;var _0x3873f3=null;if(_0x3541d7){_0x3873f3=_0x3541d7['length']===0x1?_0x3541d7[0x0]:null;}if(_0x3873f3||_0x3541d7){var _0x21b2db=db[_0x20683e[_0x7995('0x71')]][_0x7995('0x2d')];_0x27889a[_0x7995('0x33')]=_[_0x7995('0x45')](_0x21b2db);_0x27889a[_0x7995('0x2e')]=_[_0x7995('0x45')](_0x3b1309[_0x7995('0x2e')]);_0x27889a[_0x7995('0x31')]=_['intersection'](_0x27889a[_0x7995('0x33')],_0x27889a[_0x7995('0x2e')]);_0x2b0b79[_0x7995('0x34')]=_[_0x7995('0x32')](_0x27889a[_0x7995('0x33')],qs['fields'](_0x3b1309[_0x7995('0x2e')][_0x7995('0x46')]));_0x2b0b79[_0x7995('0x34')]=_0x2b0b79['attributes']['length']?_0x2b0b79['attributes']:_0x27889a[_0x7995('0x33')];if(!_0x3b1309[_0x7995('0x2e')][_0x7995('0x35')](_0x7995('0x36'))){_0x2b0b79[_0x7995('0x72')]=qs[_0x7995('0x72')](_0x3b1309['query'][_0x7995('0x72')]);_0x2b0b79['offset']=qs[_0x7995('0x22')](_0x3b1309[_0x7995('0x2e')][_0x7995('0x22')]);}_0x2b0b79[_0x7995('0x37')]=qs[_0x7995('0x38')](_0x3b1309[_0x7995('0x2e')][_0x7995('0x38')]);_0x2b0b79[_0x7995('0x39')]=qs[_0x7995('0x31')](_[_0x7995('0x3a')](_0x3b1309[_0x7995('0x2e')],_0x27889a['filters']));var _0x281477=[];if(_0x3873f3){var _0x3c9b3c=_[_0x7995('0x49')](_0x21f496,[_0x7995('0x29'),_0x3873f3['name']]);if(_0x3c9b3c['field']){var _0x41b0d5={};_0x41b0d5[_0x3c9b3c[_0x7995('0x73')]]=_0x3873f3[_0x7995('0x74')];_0x281477[_0x7995('0x6c')](_0x41b0d5);}else{_0x2b0b79[_0x7995('0x39')]['id']=_0x3873f3[_0x7995('0x74')];}}else{var _0x281477=[];for(var _0x3a29b8=0x0;_0x3a29b8<_0x3541d7[_0x7995('0x47')];_0x3a29b8++){var _0x3c9b3c=_[_0x7995('0x49')](_0x21f496,[_0x7995('0x29'),_0x3541d7[_0x3a29b8]['name']]);if(_0x3c9b3c['field']){var _0x41b0d5={};if(_0x3c9b3c[_0x7995('0x41')]==='id'){_0x41b0d5[_0x3c9b3c[_0x7995('0x73')]]=_0x3541d7[_0x3a29b8][_0x7995('0x74')];}else{_0x41b0d5[_0x3c9b3c[_0x7995('0x73')]]=_0x3541d7[_0x3a29b8]['resourceFields'];}}else{if(!_0x2b0b79[_0x7995('0x39')]['id'])_0x2b0b79[_0x7995('0x39')]['id']=[];_0x3541d7[_0x3a29b8]['resourceIds'][_0x7995('0x75')](function(_0x53d693){_0x2b0b79[_0x7995('0x39')]['id'][_0x7995('0x6c')](_0x53d693);});}}}if(!_[_0x7995('0x6e')](_0x281477)){_0x2b0b79['where']=_[_0x7995('0x3d')](_0x2b0b79[_0x7995('0x39')],{'$or':_0x281477});}if(_0x3b1309[_0x7995('0x2e')][_0x7995('0x3e')]){_0x2b0b79[_0x7995('0x39')]=_[_0x7995('0x3d')](_0x2b0b79[_0x7995('0x39')],{'$or':_['map'](_0x21b2db,function(_0x4c0a67){if(_0x4c0a67['type'][_0x7995('0x76')]!==_0x7995('0x77')){var _0x5a78e9={};_0x5a78e9[_0x4c0a67['field']]={'$like':'%'+_0x3b1309[_0x7995('0x2e')][_0x7995('0x3e')]+'%'};return _0x5a78e9;}})});}_0x2b0b79=_['merge']({},_0x2b0b79,_0x3b1309['options']);if(_0x3873f3&&!_0x3873f3['autoAssociation']&&_0x20683e['childModel']===_0x7995('0x78')){if(_0x3b1309[_0x7995('0x2e')][_0x7995('0x48')]){_0x2b0b79[_0x7995('0x4e')]=[{'all':!![]}];}return db[_0x20683e['childModel']][_0x7995('0x42')](_0x2b0b79)[_0x7995('0x26')](function(_0x58c3e8){var _0x1fc3a1=[];_0x58c3e8[_0x7995('0x75')](function(_0x1f9652){var _0x580917;switch(_0x1f9652[_0x7995('0x79')]){case _0x7995('0x7a'):_0x580917=_['find'](_0x3873f3[_0x7995('0x74')],function(_0x3fc60f){return _0x3fc60f['id']===_0x1f9652[_0x7995('0x7b')]&&_0x3fc60f[_0x7995('0x40')]===_0x7995('0x7c');});break;case _0x7995('0x7d'):_0x580917=_[_0x7995('0x49')](_0x3873f3[_0x7995('0x74')],function(_0x4254de){return _0x4254de['id']===_0x1f9652[_0x7995('0x7b')]&&_0x4254de[_0x7995('0x40')]===_0x7995('0x7e');});break;}if(_0x580917)_0x1fc3a1[_0x7995('0x6c')](_0x1f9652);});_0x267a7f['count']=_0x1fc3a1[_0x7995('0x47')];_0x267a7f[_0x7995('0x7f')]=_0x1fc3a1;return _0x267a7f;});}else{return db[_0x20683e[_0x7995('0x71')]][_0x7995('0x21')]({'where':_0x2b0b79['where']})[_0x7995('0x26')](function(_0x2e6f4e){_0x267a7f[_0x7995('0x21')]=_0x2e6f4e;if(_0x3b1309['query'][_0x7995('0x48')]){if(_0x20683e[_0x7995('0x71')]===_0x7995('0x80')){_0x2b0b79[_0x7995('0x4e')]=[{'model':db[_0x7995('0x81')],'as':_0x7995('0x82'),'attributes':['id',_0x7995('0x29'),'color'],'required':_0x3b1309[_0x7995('0x2e')]['tag']?!![]:![]},{'model':db[_0x7995('0x81')],'as':_0x7995('0x83'),'attributes':['id',_0x7995('0x29'),'color'],'through':_0x3b1309[_0x7995('0x2e')]['tag']?{'attributes':[],'where':{'TagId':_0x3b1309['query']['tag']||undefined}}:{},'required':_0x3b1309['query'][_0x7995('0x84')]?!![]:![]}];}else{_0x2b0b79[_0x7995('0x4e')]=[{'all':!![]}];}}return db[_0x20683e['childModel']][_0x7995('0x42')](_0x2b0b79);})[_0x7995('0x26')](function(_0x50fccd){_0x267a7f[_0x7995('0x7f')]=_0x50fccd;return _0x267a7f;});}}else{return _0x267a7f;}})[_0x7995('0x26')](respondWithFilteredResult(_0x3cb1d2,_0x2b0b79))[_0x7995('0x43')](handleError(_0x3cb1d2,null));};function getAllResources(_0x45a479,_0x443863){return new BPromise(function(_0x56b5ff,_0x38ea3e){if(_0x443863){var _0x1df81d=_0x443863[_0x7995('0x3e')]?{[_0x443863[_0x7995('0x3e')]['field']]:_0x443863[_0x7995('0x3e')][_0x7995('0x85')]}:undefined;return db[_0x45a479][_0x7995('0x42')]({'where':_0x1df81d,'raw':!![]})[_0x7995('0x26')](function(_0x370bd9){_0x443863[_0x7995('0x74')]=_[_0x7995('0x3f')](_0x370bd9,'id');_0x56b5ff(_0x443863);})[_0x7995('0x43')](function(_0x1c3074){_0x38ea3e(_0x1c3074);});}else{_0x56b5ff(null);}});}function getAllFilteredResources(_0x1fda95,_0x5e08fa){return new BPromise(function(_0x3440e2,_0x521712){var _0x139204=_0x1fda95[_0x7995('0x3e')]?{[_0x1fda95[_0x7995('0x3e')]['field']]:_0x1fda95['filter'][_0x7995('0x85')]}:undefined;return db[_0x1fda95[_0x7995('0x33')]]['findAll']({'where':_0x139204,'raw':!![]})[_0x7995('0x26')](function(_0x5f1abc){_0x5e08fa[_0x7995('0x86')]=_[_0x7995('0x3f')](_0x5f1abc,function(_0x27b1c2){return _0x27b1c2[_0x7995('0x29')];});_0x3440e2(_0x5e08fa);})['catch'](function(_0x4c090a){_0x521712(_0x4c090a);});});}function getAllowedResources(_0x3f57dd,_0x1dee3f){return new BPromise(function(_0x365318,_0x27cb4c){if(_0x1dee3f){return db['UserProfileResource'][_0x7995('0x42')]({'where':{'sectionId':_0x1dee3f['id']},'raw':!![]})[_0x7995('0x26')](function(_0x8b820b){if(_0x3f57dd[_0x7995('0x41')]&&_0x3f57dd[_0x7995('0x41')]!=='id'){_0x1dee3f['resourceFields']=_['map'](_0x8b820b,function(_0x47989f){return _0x47989f[_0x3f57dd[_0x7995('0x41')]];});}else{if(_0x3f57dd[_0x7995('0x71')]==='AnalyticExtractedReport'){_0x1dee3f[_0x7995('0x74')]=_['map'](_0x8b820b,function(_0x29c0f4){return{'id':_0x29c0f4[_0x7995('0x87')],'type':_0x29c0f4[_0x7995('0x40')]};});}else{_0x1dee3f[_0x7995('0x74')]=_['map'](_0x8b820b,function(_0x3fbafb){return _0x3fbafb[_0x7995('0x87')];});}}_0x365318(_0x1dee3f);})[_0x7995('0x43')](function(_0x1d7866){_0x27cb4c(_0x1d7866);});}else{_0x365318(null);}});}function getQueryModels(_0x2023a7,_0x197adc){var _0x1d200d=_0x2023a7[_0x7995('0x88')]();var _0x3323a3={'childModel':undefined,'parentSections':[]};switch(_0x1d200d){case _0x7995('0x89'):_0x3323a3[_0x7995('0x71')]=_0x7995('0x8a');break;case _0x7995('0x8b'):_0x3323a3[_0x7995('0x71')]='SquareOdbc';break;case _0x7995('0x8c'):_0x3323a3['childModel']=_0x7995('0x8d');_0x3323a3[_0x7995('0x6a')]=[{'name':'SquareProjects','field':_0x7995('0x29'),'foreignKey':'projectName'}];break;case _0x7995('0x8e'):_0x3323a3[_0x7995('0x71')]='JscriptyProject';break;case'contacts':_0x3323a3['childModel']=_0x7995('0x80');_0x3323a3[_0x7995('0x6a')]=[{'name':_0x7995('0x8f'),'field':'id','foreignKey':_0x7995('0x90')}];break;case'lists':_0x3323a3[_0x7995('0x71')]=_0x7995('0x91');break;case _0x7995('0x92'):_0x3323a3[_0x7995('0x71')]=_0x7995('0x93');break;case _0x7995('0x94'):_0x3323a3[_0x7995('0x71')]=_0x7995('0x95');break;case'chatqueues':_0x3323a3[_0x7995('0x71')]=_0x7995('0x96');break;case _0x7995('0x97'):_0x3323a3[_0x7995('0x71')]='ChatWebsite';break;case _0x7995('0x98'):_0x3323a3[_0x7995('0x71')]=_0x7995('0x99');break;case _0x7995('0x9a'):_0x3323a3[_0x7995('0x71')]=_0x7995('0x9b');break;case'inboundroutes':case _0x7995('0x9c'):case _0x7995('0x9d'):_0x3323a3[_0x7995('0x71')]=_0x7995('0x9e');break;case _0x7995('0x9f'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xa0');break;case _0x7995('0xa1'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xa2');break;case _0x7995('0xa3'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xa4');_0x3323a3[_0x7995('0x6a')]=[{'name':_0x7995('0xa5'),'field':_0x7995('0x29'),'foreignKey':_0x7995('0xa6'),'model':_0x7995('0xa7'),'filter':{'field':_0x7995('0xa8'),'value':[_0x7995('0xa9')]}},{'name':_0x7995('0xaa'),'field':'name','foreignKey':'membername','model':_0x7995('0xa7'),'filter':{'field':_0x7995('0xa8'),'value':['telephone']}},{'name':_0x7995('0xab'),'field':'name','foreignKey':_0x7995('0xac'),'model':'VoiceQueue'}];break;case _0x7995('0xad'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xae');break;case _0x7995('0xaf'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xb0');break;case _0x7995('0xb1'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xb2');break;case _0x7995('0xb3'):_0x3323a3['childModel']=_0x7995('0xb4');break;case _0x7995('0xb5'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xb6');break;case'mailaccounts':_0x3323a3[_0x7995('0x71')]=_0x7995('0xb7');break;case _0x7995('0xb8'):_0x3323a3[_0x7995('0x71')]='MailSubstatus';break;case _0x7995('0xb9'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xba');break;case _0x7995('0xbb'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xbc');break;case _0x7995('0xbd'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xbe');break;case'smsaccounts':_0x3323a3[_0x7995('0x71')]='SmsAccount';break;case _0x7995('0xbf'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xc0');break;case _0x7995('0xc1'):case'queuecampaigns':_0x3323a3[_0x7995('0x71')]=_0x7995('0xc2');if(_0x197adc){_0x3323a3[_0x7995('0x6a')]=[{'name':_0x7995('0xab')},{'name':_0x7995('0xc3')}];}break;case _0x7995('0xc4'):case _0x7995('0xc5'):case _0x7995('0xc6'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xa7');if(_0x197adc){_0x3323a3[_0x7995('0x6a')]=[{'name':_0x7995('0xc7'),'filter':{'field':_0x7995('0xa8'),'value':[_0x7995('0xc8'),'user']},'ignore':!![]},{'name':'Agents'},{'name':_0x7995('0xaa')}];}break;case _0x7995('0xc9'):_0x3323a3[_0x7995('0x71')]='ZendeskAccount';break;case _0x7995('0xca'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xcb');break;case'freshdeskaccounts':_0x3323a3[_0x7995('0x71')]=_0x7995('0xcc');break;case _0x7995('0xcd'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xce');break;case _0x7995('0xcf'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xd0');break;case _0x7995('0xd1'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xd2');break;case'vtigeraccounts':_0x3323a3['childModel']=_0x7995('0xa7');break;case'cannedanswers':_0x3323a3[_0x7995('0x71')]=_0x7995('0xd3');break;case _0x7995('0xd4'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xd5');break;case'customdashboards':_0x3323a3['childModel']=_0x7995('0xd6');break;case _0x7995('0xd7'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xd8');break;case _0x7995('0xd9'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xda');break;case _0x7995('0xdb'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xdc');break;case'sounds':_0x3323a3[_0x7995('0x71')]=_0x7995('0xdd');break;case _0x7995('0xde'):_0x3323a3[_0x7995('0x71')]='Tag';break;case'templates':_0x3323a3['childModel']='Template';break;case'triggers':_0x3323a3[_0x7995('0x71')]='Trigger';break;case'trunks':_0x3323a3[_0x7995('0x71')]=_0x7995('0xdf');break;case _0x7995('0xe0'):_0x3323a3['childModel']=_0x7995('0xe1');break;case'plugins':_0x3323a3[_0x7995('0x71')]=_0x7995('0xe2');break;case _0x7995('0xe3'):_0x3323a3['childModel']=_0x7995('0x78');_0x3323a3[_0x7995('0x6a')]=[{'name':_0x7995('0xe4'),'field':'id','foreignKey':'reportId'}];break;case _0x7995('0xe5'):_0x3323a3[_0x7995('0x71')]=_0x7995('0xe6');break;default:return _0x3323a3;}return _0x3323a3;}
\ No newline at end of file
index 4057347..33f1132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b66=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','UserProfile','setMaxListeners'];(function(_0xbb9dbf,_0x5dafa4){var _0x30223c=function(_0xaa9ca){while(--_0xaa9ca){_0xbb9dbf['push'](_0xbb9dbf['shift']());}};_0x30223c(++_0x5dafa4);}(_0x4b66,0x1dc));var _0x64b6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4b66[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0x64b6('0x0'));var UserProfile=require(_0x64b6('0x1'))['db'][_0x64b6('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x64b6('0x3')](0x0);var events={'afterCreate':_0x64b6('0x4'),'afterUpdate':_0x64b6('0x5'),'afterDestroy':_0x64b6('0x6')};function emitEvent(_0x8d82d1){return function(_0xa00e7f,_0xf885f2,_0x4780bd){UserProfileEvents[_0x64b6('0x7')](_0x8d82d1+':'+_0xa00e7f['id'],_0xa00e7f);UserProfileEvents[_0x64b6('0x7')](_0x8d82d1,_0xa00e7f);_0x4780bd(null);};}for(var e in events){if(events[_0x64b6('0x8')](e)){var event=events[e];UserProfile[_0x64b6('0x9')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0x72bd=['UserProfile','setMaxListeners','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x45cfcd,_0x20f351){var _0x187bfa=function(_0x5e4cee){while(--_0x5e4cee){_0x45cfcd['push'](_0x45cfcd['shift']());}};_0x187bfa(++_0x20f351);}(_0x72bd,0xcf));var _0xd72b=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x72bd[_0x16d10f];return _0x50c823;};'use strict';var EventEmitter=require(_0xd72b('0x0'));var UserProfile=require('../../mysqldb')['db'][_0xd72b('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xd72b('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xd72b('0x3')};function emitEvent(_0x4a85d8){return function(_0x2f0211,_0x3cd5c2,_0x265f26){UserProfileEvents['emit'](_0x4a85d8+':'+_0x2f0211['id'],_0x2f0211);UserProfileEvents[_0xd72b('0x4')](_0x4a85d8,_0x2f0211);_0x265f26(null);};}for(var e in events){if(events[_0xd72b('0x5')](e)){var event=events[e];UserProfile[_0xd72b('0x6')](e,emitEvent(event));}}module[_0xd72b('0x7')]=UserProfileEvents;
\ No newline at end of file
index f1e7e60..4704b48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f1=['exports','define','lodash','util','../../config/logger','api','moment','request-promise','./userProfile.attributes'];(function(_0x1685fb,_0x15c149){var _0x2e6443=function(_0x32b509){while(--_0x32b509){_0x1685fb['push'](_0x1685fb['shift']());}};_0x2e6443(++_0x15c149);}(_0x44f1,0x1c4));var _0x144f=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x44f1[_0x411add];return _0x238242;};'use strict';var _=require(_0x144f('0x0'));var util=require(_0x144f('0x1'));var logger=require(_0x144f('0x2'))(_0x144f('0x3'));var moment=require(_0x144f('0x4'));var BPromise=require('bluebird');var rp=require(_0x144f('0x5'));var attributes=require(_0x144f('0x6'));module[_0x144f('0x7')]=function(_0x4da4d9,_0x29d05a){return _0x4da4d9[_0x144f('0x8')]('UserProfile',attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4790=['request-promise','./userProfile.attributes','exports','UserProfile','user_profiles','lodash','util','../../config/logger','moment','bluebird'];(function(_0x5964ec,_0x1b92b9){var _0x328d30=function(_0x6f8716){while(--_0x6f8716){_0x5964ec['push'](_0x5964ec['shift']());}};_0x328d30(++_0x1b92b9);}(_0x4790,0x13b));var _0x0479=function(_0xdae8e6,_0x34854a){_0xdae8e6=_0xdae8e6-0x0;var _0x24c7a7=_0x4790[_0xdae8e6];return _0x24c7a7;};'use strict';var _=require(_0x0479('0x0'));var util=require(_0x0479('0x1'));var logger=require(_0x0479('0x2'))('api');var moment=require(_0x0479('0x3'));var BPromise=require(_0x0479('0x4'));var rp=require(_0x0479('0x5'));var attributes=require(_0x0479('0x6'));module[_0x0479('0x7')]=function(_0x1427f3,_0x354a68){return _0x1427f3['define'](_0x0479('0x8'),attributes,{'tableName':_0x0479('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4c24096..3a07f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a44=['rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./userProfile.socket','register','request','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','moment','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3f4891,_0x4e6f62){var _0x54f2d8=function(_0x2b11ee){while(--_0x2b11ee){_0x3f4891['push'](_0x3f4891['shift']());}};_0x54f2d8(++_0x4e6f62);}(_0x2a44,0x1ac));var _0x42a4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2a44[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x42a4('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x42a4('0x1'))['db'];var utils=require(_0x42a4('0x2'));var logger=require(_0x42a4('0x3'))(_0x42a4('0x4'));var config=require(_0x42a4('0x5'));var jayson=require(_0x42a4('0x6'));var client=jayson[_0x42a4('0x7')][_0x42a4('0x8')]({'port':0x232a});config[_0x42a4('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x42a4('0xa'))(new Redis(config[_0x42a4('0x9')]));require(_0x42a4('0xb'))[_0x42a4('0xc')](socket);function respondWithRpcPromise(_0x61aacd,_0x44ad56,_0x5f0275){return new BPromise(function(_0x4b9558,_0x145ee5){return client[_0x42a4('0xd')](_0x61aacd,_0x5f0275)['then'](function(_0x408671){logger[_0x42a4('0xe')](_0x42a4('0xf'),_0x44ad56,_0x42a4('0x10'));logger[_0x42a4('0x11')](_0x42a4('0x12'),_0x44ad56,_0x42a4('0x10'),JSON['stringify'](_0x408671));if(_0x408671[_0x42a4('0x13')]){if(_0x408671['error'][_0x42a4('0x14')]===0x1f4){logger[_0x42a4('0x13')](_0x42a4('0xf'),_0x44ad56,_0x408671['error'][_0x42a4('0x15')]);return _0x145ee5(_0x408671['error'][_0x42a4('0x15')]);}logger[_0x42a4('0x13')](_0x42a4('0xf'),_0x44ad56,_0x408671[_0x42a4('0x13')][_0x42a4('0x15')]);return _0x4b9558(_0x408671[_0x42a4('0x13')][_0x42a4('0x15')]);}else{logger['info'](_0x42a4('0xf'),_0x44ad56,'request\x20sent');_0x4b9558(_0x408671[_0x42a4('0x16')]['message']);}})[_0x42a4('0x17')](function(_0x3612b2){logger[_0x42a4('0x13')](_0x42a4('0xf'),_0x44ad56,_0x3612b2);_0x145ee5(_0x3612b2);});});}
\ No newline at end of file
+var _0x5fcc=['request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./userProfile.socket','register'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x5fcc,0x169));var _0xc5fc=function(_0x3505f6,_0x391493){_0x3505f6=_0x3505f6-0x0;var _0x404698=_0x5fcc[_0x3505f6];return _0x404698;};'use strict';var _=require(_0xc5fc('0x0'));var util=require(_0xc5fc('0x1'));var moment=require(_0xc5fc('0x2'));var BPromise=require(_0xc5fc('0x3'));var rs=require(_0xc5fc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc5fc('0x5'));var logger=require(_0xc5fc('0x6'))(_0xc5fc('0x7'));var config=require(_0xc5fc('0x8'));var jayson=require(_0xc5fc('0x9'));var client=jayson['client'][_0xc5fc('0xa')]({'port':0x232a});config[_0xc5fc('0xb')]=_['defaults'](config[_0xc5fc('0xb')],{'host':_0xc5fc('0xc'),'port':0x18eb});var socket=require(_0xc5fc('0xd'))(new Redis(config[_0xc5fc('0xb')]));require(_0xc5fc('0xe'))[_0xc5fc('0xf')](socket);function respondWithRpcPromise(_0x20a427,_0x58260f,_0x3a05e1){return new BPromise(function(_0x27edc3,_0x2d14bf){return client[_0xc5fc('0x10')](_0x20a427,_0x3a05e1)[_0xc5fc('0x11')](function(_0x10fdc9){logger[_0xc5fc('0x12')](_0xc5fc('0x13'),_0x58260f,_0xc5fc('0x14'));logger[_0xc5fc('0x15')](_0xc5fc('0x16'),_0x58260f,_0xc5fc('0x14'),JSON[_0xc5fc('0x17')](_0x10fdc9));if(_0x10fdc9[_0xc5fc('0x18')]){if(_0x10fdc9['error'][_0xc5fc('0x19')]===0x1f4){logger['error'](_0xc5fc('0x13'),_0x58260f,_0x10fdc9[_0xc5fc('0x18')][_0xc5fc('0x1a')]);return _0x2d14bf(_0x10fdc9[_0xc5fc('0x18')]['message']);}logger[_0xc5fc('0x18')](_0xc5fc('0x13'),_0x58260f,_0x10fdc9[_0xc5fc('0x18')]['message']);return _0x27edc3(_0x10fdc9['error'][_0xc5fc('0x1a')]);}else{logger[_0xc5fc('0x12')]('UserProfile,\x20%s,\x20%s',_0x58260f,_0xc5fc('0x14'));_0x27edc3(_0x10fdc9[_0xc5fc('0x1b')][_0xc5fc('0x1a')]);}})[_0xc5fc('0x1c')](function(_0x10b204){logger[_0xc5fc('0x18')]('UserProfile,\x20%s,\x20%s',_0x58260f,_0x10b204);_0x2d14bf(_0x10b204);});});}
\ No newline at end of file
index bc63eb7..863929b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1666=['emit','removeListener','length','./userProfile.events','save','update'];(function(_0x4007c5,_0x3bfabe){var _0x102cc0=function(_0x3381f3){while(--_0x3381f3){_0x4007c5['push'](_0x4007c5['shift']());}};_0x102cc0(++_0x3bfabe);}(_0x1666,0x75));var _0x6166=function(_0x1fe12e,_0x3373df){_0x1fe12e=_0x1fe12e-0x0;var _0x452132=_0x1666[_0x1fe12e];return _0x452132;};'use strict';var UserProfileEvents=require(_0x6166('0x0'));var events=[_0x6166('0x1'),'remove',_0x6166('0x2')];function createListener(_0x2aab7c,_0x309080){return function(_0x3284b6){_0x309080[_0x6166('0x3')](_0x2aab7c,_0x3284b6);};}function removeListener(_0x15afdd,_0x597cf2){return function(){UserProfileEvents[_0x6166('0x4')](_0x15afdd,_0x597cf2);};}exports['register']=function(_0x2ee359){for(var _0x1d4f2a=0x0,_0x211a92=events[_0x6166('0x5')];_0x1d4f2a<_0x211a92;_0x1d4f2a++){var _0x3a29ca=events[_0x1d4f2a];var _0x4873da=createListener('userProfile:'+_0x3a29ca,_0x2ee359);UserProfileEvents['on'](_0x3a29ca,_0x4873da);}};
\ No newline at end of file
+var _0x85d8=['remove','update','emit','length','userProfile:','./userProfile.events','save'];(function(_0x4f6309,_0xe71e00){var _0x1c43af=function(_0x1be001){while(--_0x1be001){_0x4f6309['push'](_0x4f6309['shift']());}};_0x1c43af(++_0xe71e00);}(_0x85d8,0x1b0));var _0x885d=function(_0x168c43,_0x4d81d7){_0x168c43=_0x168c43-0x0;var _0x910e13=_0x85d8[_0x168c43];return _0x910e13;};'use strict';var UserProfileEvents=require(_0x885d('0x0'));var events=[_0x885d('0x1'),_0x885d('0x2'),_0x885d('0x3')];function createListener(_0x3e5eab,_0x5bad48){return function(_0x328261){_0x5bad48[_0x885d('0x4')](_0x3e5eab,_0x328261);};}function removeListener(_0x320d7d,_0x3fe8a0){return function(){UserProfileEvents['removeListener'](_0x320d7d,_0x3fe8a0);};}exports['register']=function(_0x186504){for(var _0x30dcc2=0x0,_0x3715b4=events[_0x885d('0x5')];_0x30dcc2<_0x3715b4;_0x30dcc2++){var _0x18428b=events[_0x30dcc2];var _0x11e6d7=createListener(_0x885d('0x6')+_0x18428b,_0x186504);UserProfileEvents['on'](_0x18428b,_0x11e6d7);}};
\ No newline at end of file
index 2d9e4bf..48834fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc87=['exports','multer','connect-timeout','express','Router','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy'];(function(_0x5613ed,_0x34dc82){var _0x53b247=function(_0x2701e9){while(--_0x2701e9){_0x5613ed['push'](_0x5613ed['shift']());}};_0x53b247(++_0x34dc82);}(_0xbc87,0x144));var _0x7bc8=function(_0x2e57bb,_0x539c63){_0x2e57bb=_0x2e57bb-0x0;var _0x51e82a=_0xbc87[_0x2e57bb];return _0x51e82a;};'use strict';var multer=require(_0x7bc8('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7bc8('0x1'));var express=require(_0x7bc8('0x2'));var router=express[_0x7bc8('0x3')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7bc8('0x4'));var controller=require(_0x7bc8('0x5'));router[_0x7bc8('0x6')]('/',auth[_0x7bc8('0x7')](),controller[_0x7bc8('0x8')]);router[_0x7bc8('0x6')](_0x7bc8('0x9'),auth[_0x7bc8('0x7')](),controller[_0x7bc8('0xa')]);router[_0x7bc8('0x6')](_0x7bc8('0xb'),auth[_0x7bc8('0x7')](),controller[_0x7bc8('0xc')]);router[_0x7bc8('0xd')]('/',auth[_0x7bc8('0x7')](),controller[_0x7bc8('0xe')]);router[_0x7bc8('0xf')]('/:id',auth[_0x7bc8('0x7')](),controller['update']);router[_0x7bc8('0x10')](_0x7bc8('0xb'),auth[_0x7bc8('0x7')](),controller[_0x7bc8('0x11')]);module[_0x7bc8('0x12')]=router;
\ No newline at end of file
+var _0x6629=['describe','/:id','isAuthenticated','show','post','create','put','update','delete','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./userProfileResource.controller','get','index','/describe'];(function(_0xcfe8cc,_0xb83aeb){var _0x55ac53=function(_0x4067d4){while(--_0x4067d4){_0xcfe8cc['push'](_0xcfe8cc['shift']());}};_0x55ac53(++_0xb83aeb);}(_0x6629,0x1c2));var _0x9662=function(_0x59ae11,_0x2e6c3d){_0x59ae11=_0x59ae11-0x0;var _0x47bd29=_0x6629[_0x59ae11];return _0x47bd29;};'use strict';var multer=require(_0x9662('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9662('0x1'));var express=require(_0x9662('0x2'));var router=express[_0x9662('0x3')]();var auth=require(_0x9662('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x9662('0x5'));var controller=require(_0x9662('0x6'));router[_0x9662('0x7')]('/',auth['isAuthenticated'](),controller[_0x9662('0x8')]);router[_0x9662('0x7')](_0x9662('0x9'),auth['isAuthenticated'](),controller[_0x9662('0xa')]);router['get'](_0x9662('0xb'),auth[_0x9662('0xc')](),controller[_0x9662('0xd')]);router[_0x9662('0xe')]('/',auth[_0x9662('0xc')](),controller[_0x9662('0xf')]);router[_0x9662('0x10')](_0x9662('0xb'),auth[_0x9662('0xc')](),controller[_0x9662('0x11')]);router[_0x9662('0x12')]('/:id',auth[_0x9662('0xc')](),controller['destroy']);module[_0x9662('0x13')]=router;
\ No newline at end of file
index e63250f..78e1817 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7578=['sequelize','STRING','INTEGER'];(function(_0x30057,_0x269b98){var _0xfcf4c5=function(_0xf3a504){while(--_0xf3a504){_0x30057['push'](_0x30057['shift']());}};_0xfcf4c5(++_0x269b98);}(_0x7578,0x1ad));var _0x8757=function(_0x2e7cec,_0x303f29){_0x2e7cec=_0x2e7cec-0x0;var _0x132f21=_0x7578[_0x2e7cec];return _0x132f21;};'use strict';var Sequelize=require(_0x8757('0x0'));module['exports']={'name':{'type':Sequelize[_0x8757('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x8757('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x8757('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xaa08=['INTEGER','exports','STRING'];(function(_0x139a3c,_0x4fc883){var _0x2b375b=function(_0x525dbf){while(--_0x525dbf){_0x139a3c['push'](_0x139a3c['shift']());}};_0x2b375b(++_0x4fc883);}(_0xaa08,0x1ba));var _0x8aa0=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xaa08[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require('sequelize');module[_0x8aa0('0x0')]={'name':{'type':Sequelize[_0x8aa0('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x8aa0('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 21a7fc8..a61e9c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f8a=['where','pick','day','add','merge','filter','map','type','key','VIRTUAL','field','options','count','include','findAll','rows','catch','params','includeAll','find','create','body','destroy','describe','html-pdf','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','set','apply','save','update','then','error','stack','name','send','UserProfileResource','rawAttributes','model','keys','query','dateStart','dateEnd','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort'];(function(_0x504ad8,_0x1ff2ff){var _0x38229b=function(_0x52a9be){while(--_0x52a9be){_0x504ad8['push'](_0x504ad8['shift']());}};_0x38229b(++_0x1ff2ff);}(_0x4f8a,0x138));var _0xa4f8=function(_0x1a21b2,_0x4cf1ee){_0x1a21b2=_0x1a21b2-0x0;var _0x1c5371=_0x4f8a[_0x1a21b2];return _0x1c5371;};'use strict';var pdf=require(_0xa4f8('0x0'));var emlformat=require(_0xa4f8('0x1'));var rimraf=require(_0xa4f8('0x2'));var zipdir=require(_0xa4f8('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa4f8('0x4'));var moment=require('moment');var BPromise=require(_0xa4f8('0x5'));var Mustache=require(_0xa4f8('0x6'));var util=require(_0xa4f8('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xa4f8('0x8'));var ejs=require(_0xa4f8('0x9'));var fs=require('fs');var _=require(_0xa4f8('0xa'));var squel=require(_0xa4f8('0xb'));var crypto=require(_0xa4f8('0xc'));var jsforce=require(_0xa4f8('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa4f8('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0xa4f8('0xf'));var logger=require(_0xa4f8('0x10'))('api');var utils=require('../../config/utils');var config=require(_0xa4f8('0x11'));var db=require(_0xa4f8('0x12'))['db'];function respondWithStatusCode(_0xe2c1f6,_0x3be509){_0x3be509=_0x3be509||0xcc;return function(_0x33de46){if(_0x33de46){return _0xe2c1f6[_0xa4f8('0x13')](_0x3be509);}return _0xe2c1f6[_0xa4f8('0x14')](_0x3be509)[_0xa4f8('0x15')]();};}function respondWithResult(_0x1a8515,_0x1aa144){_0x1aa144=_0x1aa144||0xc8;return function(_0x8fc1d4){if(_0x8fc1d4){return _0x1a8515[_0xa4f8('0x14')](_0x1aa144)['json'](_0x8fc1d4);}};}function respondWithFilteredResult(_0x5b044b,_0x50c2cc){return function(_0xfbf434){if(_0xfbf434){var _0x19acae=_0xfbf434['count'],_0x34914a=_0x50c2cc[_0xa4f8('0x16')],_0x11858b=_0x50c2cc[_0xa4f8('0x16')]+_0x50c2cc[_0xa4f8('0x17')],_0x15bd81;if(_0x11858b>=_0x19acae){_0x11858b=_0x19acae;_0x15bd81=0xc8;}else{_0x15bd81=0xce;}_0x5b044b[_0xa4f8('0x14')](_0x15bd81);return _0x5b044b[_0xa4f8('0x18')]('Content-Range',_0x34914a+'-'+_0x11858b+'/'+_0x19acae)['json'](_0xfbf434);}return null;};}function patchUpdates(_0x612401){return function(_0x61e707){try{jsonpatch[_0xa4f8('0x19')](_0x61e707,_0x612401,!![]);}catch(_0x4aad82){return BPromise['reject'](_0x4aad82);}return _0x61e707[_0xa4f8('0x1a')]();};}function saveUpdates(_0x211747,_0x5cc1a8){return function(_0x18f612){if(_0x18f612){return _0x18f612[_0xa4f8('0x1b')](_0x211747)[_0xa4f8('0x1c')](function(_0x1bece5){return _0x1bece5;});}return null;};}function removeEntity(_0x188566,_0x5252d2){return function(_0x35dab4){if(_0x35dab4){return _0x35dab4['destroy']()[_0xa4f8('0x1c')](function(){_0x188566[_0xa4f8('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38fc2e,_0x35e621){return function(_0x55fc72){if(!_0x55fc72){_0x38fc2e[_0xa4f8('0x13')](0x194);}return _0x55fc72;};}function handleError(_0x34cddb,_0x22f74a){_0x22f74a=_0x22f74a||0x1f4;return function(_0xd08ef5){logger[_0xa4f8('0x1d')](_0xd08ef5[_0xa4f8('0x1e')]);if(_0xd08ef5[_0xa4f8('0x1f')]){delete _0xd08ef5[_0xa4f8('0x1f')];}_0x34cddb[_0xa4f8('0x14')](_0x22f74a)[_0xa4f8('0x20')](_0xd08ef5);};}exports['index']=function(_0x56642d,_0x332925){var _0x3b59ea={},_0x4de5ad={},_0x59da83={'count':0x0,'rows':[]};var _0x5add91=db[_0xa4f8('0x21')][_0xa4f8('0x22')];_0x4de5ad[_0xa4f8('0x23')]=_[_0xa4f8('0x24')](_0x5add91);var _0x26b3c7={'dateStart':_0x56642d[_0xa4f8('0x25')][_0xa4f8('0x26')],'dateEnd':_0x56642d[_0xa4f8('0x25')]['dateEnd']};delete _0x56642d[_0xa4f8('0x25')][_0xa4f8('0x26')];delete _0x56642d['query'][_0xa4f8('0x27')];_0x4de5ad[_0xa4f8('0x25')]=_[_0xa4f8('0x24')](_0x56642d[_0xa4f8('0x25')]);_0x4de5ad[_0xa4f8('0x28')]=_['intersection'](_0x4de5ad[_0xa4f8('0x23')],_0x4de5ad[_0xa4f8('0x25')]);_0x3b59ea[_0xa4f8('0x29')]=_[_0xa4f8('0x2a')](_0x4de5ad[_0xa4f8('0x23')],qs['fields'](_0x56642d['query'][_0xa4f8('0x2b')]));_0x3b59ea['attributes']=_0x3b59ea[_0xa4f8('0x29')][_0xa4f8('0x2c')]?_0x3b59ea[_0xa4f8('0x29')]:_0x4de5ad[_0xa4f8('0x23')];if(!_0x56642d[_0xa4f8('0x25')][_0xa4f8('0x2d')]('nolimit')){_0x3b59ea[_0xa4f8('0x17')]=qs[_0xa4f8('0x17')](_0x56642d['query'][_0xa4f8('0x17')]);_0x3b59ea['offset']=qs[_0xa4f8('0x16')](_0x56642d[_0xa4f8('0x25')][_0xa4f8('0x16')]);}_0x3b59ea[_0xa4f8('0x2e')]=qs[_0xa4f8('0x2f')](_0x56642d[_0xa4f8('0x25')][_0xa4f8('0x2f')]);_0x3b59ea[_0xa4f8('0x30')]=qs[_0xa4f8('0x28')](_[_0xa4f8('0x31')](_0x56642d['query'],_0x4de5ad[_0xa4f8('0x28')]));if(_0x26b3c7[_0xa4f8('0x26')]){if(_0x26b3c7[_0xa4f8('0x27')]){_0x26b3c7['dateEnd']=moment(_0x26b3c7[_0xa4f8('0x27')])['add'](0x1,_0xa4f8('0x32'));}else{_0x26b3c7[_0xa4f8('0x27')]=moment(_0x26b3c7['dateStart'])[_0xa4f8('0x33')](0x1,_0xa4f8('0x32'));}_[_0xa4f8('0x34')](_0x3b59ea['where'],{'createdAt':{'$gte':_0x26b3c7[_0xa4f8('0x26')],'$lte':_0x26b3c7[_0xa4f8('0x27')]}});}if(_0x56642d[_0xa4f8('0x25')][_0xa4f8('0x35')]){_0x3b59ea[_0xa4f8('0x30')]=_['merge'](_0x3b59ea[_0xa4f8('0x30')],{'$or':_[_0xa4f8('0x36')](_0x5add91,function(_0x495e48){if(_0x495e48[_0xa4f8('0x37')][_0xa4f8('0x38')]!==_0xa4f8('0x39')){var _0x42fb89={};_0x42fb89[_0x495e48[_0xa4f8('0x3a')]]={'$like':'%'+_0x56642d[_0xa4f8('0x25')][_0xa4f8('0x35')]+'%'};return _0x42fb89;}})});}_0x3b59ea=_[_0xa4f8('0x34')]({},_0x3b59ea,_0x56642d[_0xa4f8('0x3b')]);var _0x1cb29a={'where':_0x3b59ea[_0xa4f8('0x30')]};return db['UserProfileResource'][_0xa4f8('0x3c')](_0x1cb29a)[_0xa4f8('0x1c')](function(_0x8556b2){_0x59da83[_0xa4f8('0x3c')]=_0x8556b2;if(_0x56642d['query']['includeAll']){_0x3b59ea[_0xa4f8('0x3d')]=[{'all':!![]}];}return db[_0xa4f8('0x21')][_0xa4f8('0x3e')](_0x3b59ea);})[_0xa4f8('0x1c')](function(_0x5cd7e9){_0x59da83[_0xa4f8('0x3f')]=_0x5cd7e9;return _0x59da83;})[_0xa4f8('0x1c')](respondWithFilteredResult(_0x332925,_0x3b59ea))[_0xa4f8('0x40')](handleError(_0x332925,null));};exports['show']=function(_0x30c55f,_0x512d5f){var _0x540be4={'raw':![],'where':{'id':_0x30c55f[_0xa4f8('0x41')]['id']}},_0x5b0ead={};_0x5b0ead[_0xa4f8('0x23')]=_[_0xa4f8('0x24')](db[_0xa4f8('0x21')][_0xa4f8('0x22')]);_0x5b0ead['query']=_[_0xa4f8('0x24')](_0x30c55f['query']);_0x5b0ead[_0xa4f8('0x28')]=_[_0xa4f8('0x2a')](_0x5b0ead[_0xa4f8('0x23')],_0x5b0ead[_0xa4f8('0x25')]);_0x540be4[_0xa4f8('0x29')]=_[_0xa4f8('0x2a')](_0x5b0ead[_0xa4f8('0x23')],qs[_0xa4f8('0x2b')](_0x30c55f[_0xa4f8('0x25')][_0xa4f8('0x2b')]));_0x540be4[_0xa4f8('0x29')]=_0x540be4[_0xa4f8('0x29')][_0xa4f8('0x2c')]?_0x540be4[_0xa4f8('0x29')]:_0x5b0ead[_0xa4f8('0x23')];if(_0x30c55f[_0xa4f8('0x25')][_0xa4f8('0x42')]){_0x540be4['include']=[{'all':!![]}];}_0x540be4=_[_0xa4f8('0x34')]({},_0x540be4,_0x30c55f[_0xa4f8('0x3b')]);return db['UserProfileResource'][_0xa4f8('0x43')](_0x540be4)[_0xa4f8('0x1c')](handleEntityNotFound(_0x512d5f,null))['then'](respondWithResult(_0x512d5f,null))[_0xa4f8('0x40')](handleError(_0x512d5f,null));};exports[_0xa4f8('0x44')]=function(_0x131d98,_0x143d3b){return db['UserProfileResource'][_0xa4f8('0x44')](_0x131d98[_0xa4f8('0x45')],{})[_0xa4f8('0x1c')](respondWithResult(_0x143d3b,0xc9))['catch'](handleError(_0x143d3b,null));};exports[_0xa4f8('0x1b')]=function(_0x297862,_0x1526a1){if(_0x297862[_0xa4f8('0x45')]['id']){delete _0x297862[_0xa4f8('0x45')]['id'];}return db[_0xa4f8('0x21')][_0xa4f8('0x43')]({'where':{'id':_0x297862['params']['id']}})[_0xa4f8('0x1c')](handleEntityNotFound(_0x1526a1,null))[_0xa4f8('0x1c')](saveUpdates(_0x297862['body'],null))[_0xa4f8('0x1c')](respondWithResult(_0x1526a1,null))[_0xa4f8('0x40')](handleError(_0x1526a1,null));};exports[_0xa4f8('0x46')]=function(_0x130929,_0x275b96){return db[_0xa4f8('0x21')][_0xa4f8('0x43')]({'where':{'id':_0x130929[_0xa4f8('0x41')]['id']}})['then'](handleEntityNotFound(_0x275b96,null))['then'](removeEntity(_0x275b96,null))[_0xa4f8('0x40')](handleError(_0x275b96,null));};exports['describe']=function(_0x42b815,_0x57b5b5){return db['UserProfileResource'][_0xa4f8('0x47')]()[_0xa4f8('0x1c')](respondWithResult(_0x57b5b5,null))['catch'](handleError(_0x57b5b5,null));};
\ No newline at end of file
+var _0x51c4=['ioredis','../../components/parsers/qs','api','../../config/utils','../../mysqldb','sendStatus','status','json','count','limit','set','reject','save','update','then','destroy','end','error','stack','name','send','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','day','merge','filter','map','field','options','includeAll','include','UserProfileResource','catch','show','find','create','body','params','describe','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x51c4,0x80));var _0x451c=function(_0x2af590,_0x24c418){_0x2af590=_0x2af590-0x0;var _0x14558a=_0x51c4[_0x2af590];return _0x14558a;};'use strict';var pdf=require(_0x451c('0x0'));var emlformat=require(_0x451c('0x1'));var rimraf=require(_0x451c('0x2'));var zipdir=require(_0x451c('0x3'));var jsonpatch=require(_0x451c('0x4'));var rp=require(_0x451c('0x5'));var moment=require(_0x451c('0x6'));var BPromise=require(_0x451c('0x7'));var Mustache=require('mustache');var util=require(_0x451c('0x8'));var path=require(_0x451c('0x9'));var sox=require(_0x451c('0xa'));var csv=require('to-csv');var ejs=require(_0x451c('0xb'));var fs=require('fs');var _=require(_0x451c('0xc'));var squel=require(_0x451c('0xd'));var crypto=require(_0x451c('0xe'));var jsforce=require(_0x451c('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x451c('0x10'));var querystring=require(_0x451c('0x11'));var Papa=require('papaparse');var Redis=require(_0x451c('0x12'));var qs=require(_0x451c('0x13'));var logger=require('../../config/logger')(_0x451c('0x14'));var utils=require(_0x451c('0x15'));var config=require('../../config/environment');var db=require(_0x451c('0x16'))['db'];function respondWithStatusCode(_0xe8939,_0x32c548){_0x32c548=_0x32c548||0xcc;return function(_0x120b51){if(_0x120b51){return _0xe8939[_0x451c('0x17')](_0x32c548);}return _0xe8939[_0x451c('0x18')](_0x32c548)['end']();};}function respondWithResult(_0xb2147d,_0xa0249){_0xa0249=_0xa0249||0xc8;return function(_0x26f95e){if(_0x26f95e){return _0xb2147d[_0x451c('0x18')](_0xa0249)[_0x451c('0x19')](_0x26f95e);}};}function respondWithFilteredResult(_0x7493eb,_0x43e756){return function(_0x352ca4){if(_0x352ca4){var _0xe2366c=_0x352ca4[_0x451c('0x1a')],_0x247bb0=_0x43e756['offset'],_0x28ac4c=_0x43e756['offset']+_0x43e756[_0x451c('0x1b')],_0x4c1fe2;if(_0x28ac4c>=_0xe2366c){_0x28ac4c=_0xe2366c;_0x4c1fe2=0xc8;}else{_0x4c1fe2=0xce;}_0x7493eb[_0x451c('0x18')](_0x4c1fe2);return _0x7493eb[_0x451c('0x1c')]('Content-Range',_0x247bb0+'-'+_0x28ac4c+'/'+_0xe2366c)[_0x451c('0x19')](_0x352ca4);}return null;};}function patchUpdates(_0x39a93a){return function(_0x59359f){try{jsonpatch['apply'](_0x59359f,_0x39a93a,!![]);}catch(_0x48464b){return BPromise[_0x451c('0x1d')](_0x48464b);}return _0x59359f[_0x451c('0x1e')]();};}function saveUpdates(_0x689125,_0x1ca084){return function(_0x49da6b){if(_0x49da6b){return _0x49da6b[_0x451c('0x1f')](_0x689125)[_0x451c('0x20')](function(_0x4899e7){return _0x4899e7;});}return null;};}function removeEntity(_0x53015f,_0x40400b){return function(_0x3f8ded){if(_0x3f8ded){return _0x3f8ded[_0x451c('0x21')]()[_0x451c('0x20')](function(){_0x53015f['status'](0xcc)[_0x451c('0x22')]();});}};}function handleEntityNotFound(_0x4f2a8b,_0x391395){return function(_0x4815e4){if(!_0x4815e4){_0x4f2a8b[_0x451c('0x17')](0x194);}return _0x4815e4;};}function handleError(_0x5896f8,_0x598f24){_0x598f24=_0x598f24||0x1f4;return function(_0x2044e0){logger[_0x451c('0x23')](_0x2044e0[_0x451c('0x24')]);if(_0x2044e0['name']){delete _0x2044e0[_0x451c('0x25')];}_0x5896f8[_0x451c('0x18')](_0x598f24)[_0x451c('0x26')](_0x2044e0);};}exports['index']=function(_0x4e40d5,_0x535f0e){var _0xe80311={},_0x5113d2={},_0x18a244={'count':0x0,'rows':[]};var _0x5d5fe1=db['UserProfileResource'][_0x451c('0x27')];_0x5113d2['model']=_[_0x451c('0x28')](_0x5d5fe1);var _0x446738={'dateStart':_0x4e40d5[_0x451c('0x29')][_0x451c('0x2a')],'dateEnd':_0x4e40d5[_0x451c('0x29')][_0x451c('0x2b')]};delete _0x4e40d5[_0x451c('0x29')][_0x451c('0x2a')];delete _0x4e40d5[_0x451c('0x29')][_0x451c('0x2b')];_0x5113d2[_0x451c('0x29')]=_[_0x451c('0x28')](_0x4e40d5[_0x451c('0x29')]);_0x5113d2[_0x451c('0x2c')]=_[_0x451c('0x2d')](_0x5113d2[_0x451c('0x2e')],_0x5113d2['query']);_0xe80311[_0x451c('0x2f')]=_['intersection'](_0x5113d2['model'],qs[_0x451c('0x30')](_0x4e40d5['query'][_0x451c('0x30')]));_0xe80311[_0x451c('0x2f')]=_0xe80311[_0x451c('0x2f')][_0x451c('0x31')]?_0xe80311[_0x451c('0x2f')]:_0x5113d2['model'];if(!_0x4e40d5['query'][_0x451c('0x32')](_0x451c('0x33'))){_0xe80311['limit']=qs['limit'](_0x4e40d5[_0x451c('0x29')][_0x451c('0x1b')]);_0xe80311[_0x451c('0x34')]=qs[_0x451c('0x34')](_0x4e40d5[_0x451c('0x29')][_0x451c('0x34')]);}_0xe80311[_0x451c('0x35')]=qs[_0x451c('0x36')](_0x4e40d5[_0x451c('0x29')][_0x451c('0x36')]);_0xe80311[_0x451c('0x37')]=qs[_0x451c('0x2c')](_[_0x451c('0x38')](_0x4e40d5['query'],_0x5113d2[_0x451c('0x2c')]));if(_0x446738['dateStart']){if(_0x446738[_0x451c('0x2b')]){_0x446738[_0x451c('0x2b')]=moment(_0x446738[_0x451c('0x2b')])['add'](0x1,_0x451c('0x39'));}else{_0x446738['dateEnd']=moment(_0x446738[_0x451c('0x2a')])['add'](0x1,_0x451c('0x39'));}_[_0x451c('0x3a')](_0xe80311['where'],{'createdAt':{'$gte':_0x446738['dateStart'],'$lte':_0x446738[_0x451c('0x2b')]}});}if(_0x4e40d5[_0x451c('0x29')][_0x451c('0x3b')]){_0xe80311[_0x451c('0x37')]=_[_0x451c('0x3a')](_0xe80311[_0x451c('0x37')],{'$or':_[_0x451c('0x3c')](_0x5d5fe1,function(_0xdbc7a5){if(_0xdbc7a5['type']['key']!=='VIRTUAL'){var _0x26bb24={};_0x26bb24[_0xdbc7a5[_0x451c('0x3d')]]={'$like':'%'+_0x4e40d5['query']['filter']+'%'};return _0x26bb24;}})});}_0xe80311=_[_0x451c('0x3a')]({},_0xe80311,_0x4e40d5[_0x451c('0x3e')]);var _0x58c473={'where':_0xe80311[_0x451c('0x37')]};return db['UserProfileResource'][_0x451c('0x1a')](_0x58c473)[_0x451c('0x20')](function(_0x2f0435){_0x18a244[_0x451c('0x1a')]=_0x2f0435;if(_0x4e40d5[_0x451c('0x29')][_0x451c('0x3f')]){_0xe80311[_0x451c('0x40')]=[{'all':!![]}];}return db[_0x451c('0x41')]['findAll'](_0xe80311);})[_0x451c('0x20')](function(_0x2a8ca5){_0x18a244['rows']=_0x2a8ca5;return _0x18a244;})[_0x451c('0x20')](respondWithFilteredResult(_0x535f0e,_0xe80311))[_0x451c('0x42')](handleError(_0x535f0e,null));};exports[_0x451c('0x43')]=function(_0x1a3fbe,_0x12224f){var _0x2f35ef={'raw':![],'where':{'id':_0x1a3fbe['params']['id']}},_0x5393b0={};_0x5393b0[_0x451c('0x2e')]=_[_0x451c('0x28')](db[_0x451c('0x41')][_0x451c('0x27')]);_0x5393b0[_0x451c('0x29')]=_[_0x451c('0x28')](_0x1a3fbe[_0x451c('0x29')]);_0x5393b0['filters']=_[_0x451c('0x2d')](_0x5393b0[_0x451c('0x2e')],_0x5393b0[_0x451c('0x29')]);_0x2f35ef['attributes']=_['intersection'](_0x5393b0[_0x451c('0x2e')],qs[_0x451c('0x30')](_0x1a3fbe[_0x451c('0x29')][_0x451c('0x30')]));_0x2f35ef[_0x451c('0x2f')]=_0x2f35ef['attributes']['length']?_0x2f35ef[_0x451c('0x2f')]:_0x5393b0[_0x451c('0x2e')];if(_0x1a3fbe[_0x451c('0x29')]['includeAll']){_0x2f35ef[_0x451c('0x40')]=[{'all':!![]}];}_0x2f35ef=_[_0x451c('0x3a')]({},_0x2f35ef,_0x1a3fbe['options']);return db[_0x451c('0x41')][_0x451c('0x44')](_0x2f35ef)[_0x451c('0x20')](handleEntityNotFound(_0x12224f,null))[_0x451c('0x20')](respondWithResult(_0x12224f,null))['catch'](handleError(_0x12224f,null));};exports[_0x451c('0x45')]=function(_0x9aafab,_0x30d4e7){return db[_0x451c('0x41')][_0x451c('0x45')](_0x9aafab[_0x451c('0x46')],{})[_0x451c('0x20')](respondWithResult(_0x30d4e7,0xc9))[_0x451c('0x42')](handleError(_0x30d4e7,null));};exports['update']=function(_0x2edb9a,_0x3c0d5c){if(_0x2edb9a[_0x451c('0x46')]['id']){delete _0x2edb9a[_0x451c('0x46')]['id'];}return db['UserProfileResource']['find']({'where':{'id':_0x2edb9a['params']['id']}})[_0x451c('0x20')](handleEntityNotFound(_0x3c0d5c,null))[_0x451c('0x20')](saveUpdates(_0x2edb9a[_0x451c('0x46')],null))['then'](respondWithResult(_0x3c0d5c,null))['catch'](handleError(_0x3c0d5c,null));};exports[_0x451c('0x21')]=function(_0x109c3e,_0x49910a){return db[_0x451c('0x41')][_0x451c('0x44')]({'where':{'id':_0x109c3e[_0x451c('0x47')]['id']}})['then'](handleEntityNotFound(_0x49910a,null))[_0x451c('0x20')](removeEntity(_0x49910a,null))['catch'](handleError(_0x49910a,null));};exports[_0x451c('0x48')]=function(_0xe852d3,_0x25c128){return db[_0x451c('0x41')][_0x451c('0x48')]()['then'](respondWithResult(_0x25c128,null))[_0x451c('0x42')](handleError(_0x25c128,null));};
\ No newline at end of file
index 2fc2147..19468c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d8d=['./userProfileResource.attributes','define','user_profile_has_resources','compositeIndex','resourceId','util','../../config/logger','api','moment','bluebird'];(function(_0x3e9399,_0x32e1f3){var _0x5aca44=function(_0x5c3659){while(--_0x5c3659){_0x3e9399['push'](_0x3e9399['shift']());}};_0x5aca44(++_0x32e1f3);}(_0x9d8d,0x1bd));var _0xd9d8=function(_0x1f9232,_0x2336d2){_0x1f9232=_0x1f9232-0x0;var _0x29927b=_0x9d8d[_0x1f9232];return _0x29927b;};'use strict';var _=require('lodash');var util=require(_0xd9d8('0x0'));var logger=require(_0xd9d8('0x1'))(_0xd9d8('0x2'));var moment=require(_0xd9d8('0x3'));var BPromise=require(_0xd9d8('0x4'));var rp=require('request-promise');var attributes=require(_0xd9d8('0x5'));module['exports']=function(_0x180a9f,_0x30cc29){return _0x180a9f[_0xd9d8('0x6')]('UserProfileResource',attributes,{'tableName':_0xd9d8('0x7'),'paranoid':![],'indexes':[{'name':_0xd9d8('0x8'),'fields':[_0xd9d8('0x9'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xac7a=['util','../../config/logger','api','moment','bluebird','request-promise','./userProfileResource.attributes','exports','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId'];(function(_0x2c2102,_0x77743f){var _0x5d736e=function(_0x5f56b5){while(--_0x5f56b5){_0x2c2102['push'](_0x2c2102['shift']());}};_0x5d736e(++_0x77743f);}(_0xac7a,0x75));var _0xaac7=function(_0x32f931,_0x2c0f99){_0x32f931=_0x32f931-0x0;var _0x11e051=_0xac7a[_0x32f931];return _0x11e051;};'use strict';var _=require('lodash');var util=require(_0xaac7('0x0'));var logger=require(_0xaac7('0x1'))(_0xaac7('0x2'));var moment=require(_0xaac7('0x3'));var BPromise=require(_0xaac7('0x4'));var rp=require(_0xaac7('0x5'));var attributes=require(_0xaac7('0x6'));module[_0xaac7('0x7')]=function(_0x478419,_0x30cd36){return _0x478419['define'](_0xaac7('0x8'),attributes,{'tableName':_0xaac7('0x9'),'paranoid':![],'indexes':[{'name':_0xaac7('0xa'),'fields':[_0xaac7('0xb'),_0xaac7('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index cb0117a..310986e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','request','UserProfileResource,\x20%s,\x20%s','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xbff5,0x1bc));var _0x5bff=function(_0x279025,_0x455441){_0x279025=_0x279025-0x0;var _0x51bd68=_0xbff5[_0x279025];return _0x51bd68;};'use strict';var _=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var moment=require(_0x5bff('0x2'));var BPromise=require(_0x5bff('0x3'));var rs=require(_0x5bff('0x4'));var fs=require('fs');var Redis=require(_0x5bff('0x5'));var db=require(_0x5bff('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5bff('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5bff('0x8'));var client=jayson[_0x5bff('0x9')][_0x5bff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xa54c57,_0x43605a,_0xd4b9dc){return new BPromise(function(_0x1acb49,_0x139c99){return client[_0x5bff('0xb')](_0xa54c57,_0xd4b9dc)['then'](function(_0x20e26f){logger['info'](_0x5bff('0xc'),_0x43605a,_0x5bff('0xd'));logger['debug'](_0x5bff('0xe'),_0x43605a,'request\x20sent',JSON[_0x5bff('0xf')](_0x20e26f));if(_0x20e26f['error']){if(_0x20e26f[_0x5bff('0x10')][_0x5bff('0x11')]===0x1f4){logger['error'](_0x5bff('0xc'),_0x43605a,_0x20e26f['error'][_0x5bff('0x12')]);return _0x139c99(_0x20e26f[_0x5bff('0x10')]['message']);}logger[_0x5bff('0x10')](_0x5bff('0xc'),_0x43605a,_0x20e26f['error']['message']);return _0x1acb49(_0x20e26f[_0x5bff('0x10')][_0x5bff('0x12')]);}else{logger[_0x5bff('0x13')]('UserProfileResource,\x20%s,\x20%s',_0x43605a,_0x5bff('0xd'));_0x1acb49(_0x20e26f[_0x5bff('0x14')][_0x5bff('0x12')]);}})['catch'](function(_0x3ffbbc){logger[_0x5bff('0x10')](_0x5bff('0xc'),_0x43605a,_0x3ffbbc);_0x139c99(_0x3ffbbc);});});}
\ No newline at end of file
+var _0x0309=['error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xd05e35,_0x5599e6){var _0x55899d=function(_0x524d0c){while(--_0x524d0c){_0xd05e35['push'](_0xd05e35['shift']());}};_0x55899d(++_0x5599e6);}(_0x0309,0x165));var _0x9030=function(_0x483eb2,_0x35593e){_0x483eb2=_0x483eb2-0x0;var _0x5cb984=_0x0309[_0x483eb2];return _0x5cb984;};'use strict';var _=require(_0x9030('0x0'));var util=require('util');var moment=require(_0x9030('0x1'));var BPromise=require('bluebird');var rs=require(_0x9030('0x2'));var fs=require('fs');var Redis=require(_0x9030('0x3'));var db=require(_0x9030('0x4'))['db'];var utils=require(_0x9030('0x5'));var logger=require(_0x9030('0x6'))(_0x9030('0x7'));var config=require(_0x9030('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9030('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x105c15,_0x4f2d84,_0xb53eb4){return new BPromise(function(_0x4e6c7b,_0x1e2360){return client[_0x9030('0xa')](_0x105c15,_0xb53eb4)[_0x9030('0xb')](function(_0x5711b4){logger[_0x9030('0xc')](_0x9030('0xd'),_0x4f2d84,_0x9030('0xe'));logger['debug'](_0x9030('0xf'),_0x4f2d84,_0x9030('0xe'),JSON[_0x9030('0x10')](_0x5711b4));if(_0x5711b4[_0x9030('0x11')]){if(_0x5711b4[_0x9030('0x11')][_0x9030('0x12')]===0x1f4){logger[_0x9030('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x4f2d84,_0x5711b4[_0x9030('0x11')][_0x9030('0x13')]);return _0x1e2360(_0x5711b4[_0x9030('0x11')][_0x9030('0x13')]);}logger['error'](_0x9030('0xd'),_0x4f2d84,_0x5711b4[_0x9030('0x11')][_0x9030('0x13')]);return _0x4e6c7b(_0x5711b4[_0x9030('0x11')][_0x9030('0x13')]);}else{logger[_0x9030('0xc')](_0x9030('0xd'),_0x4f2d84,_0x9030('0xe'));_0x4e6c7b(_0x5711b4[_0x9030('0x14')]['message']);}})[_0x9030('0x15')](function(_0x17e80d){logger[_0x9030('0x11')](_0x9030('0xd'),_0x4f2d84,_0x17e80d);_0x1e2360(_0x17e80d);});});}
\ No newline at end of file
index 48a53ee..6a9cf91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cef=['create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post'];(function(_0x5a5db1,_0x241f14){var _0xcb472d=function(_0x2e5e79){while(--_0x2e5e79){_0x5a5db1['push'](_0x5a5db1['shift']());}};_0xcb472d(++_0x241f14);}(_0x0cef,0xa0));var _0xf0ce=function(_0x1a3488,_0x3874b0){_0x1a3488=_0x1a3488-0x0;var _0x8398da=_0x0cef[_0x1a3488];return _0x8398da;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf0ce('0x0'));var timeout=require(_0xf0ce('0x1'));var express=require(_0xf0ce('0x2'));var router=express[_0xf0ce('0x3')]();var auth=require(_0xf0ce('0x4'));var interaction=require(_0xf0ce('0x5'));var config=require(_0xf0ce('0x6'));var controller=require(_0xf0ce('0x7'));router['get']('/',auth[_0xf0ce('0x8')](),controller[_0xf0ce('0x9')]);router[_0xf0ce('0xa')](_0xf0ce('0xb'),auth[_0xf0ce('0x8')](),controller[_0xf0ce('0xc')]);router[_0xf0ce('0xa')](_0xf0ce('0xd'),auth[_0xf0ce('0x8')](),controller[_0xf0ce('0xe')]);router[_0xf0ce('0xf')]('/',auth['isAuthenticated'](),controller[_0xf0ce('0x10')]);router[_0xf0ce('0x11')](_0xf0ce('0xd'),auth['isAuthenticated'](),controller[_0xf0ce('0x12')]);router[_0xf0ce('0x13')](_0xf0ce('0xd'),auth['isAuthenticated'](),controller[_0xf0ce('0x14')]);module[_0xf0ce('0x15')]=router;
\ No newline at end of file
+var _0xdbba=['get','/describe','show','post','put','/:id','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','isAuthenticated','index'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xdbba,0x1d5));var _0xadbb=function(_0x535e3e,_0xca3409){_0x535e3e=_0x535e3e-0x0;var _0x48459f=_0xdbba[_0x535e3e];return _0x48459f;};'use strict';var multer=require(_0xadbb('0x0'));var util=require(_0xadbb('0x1'));var path=require(_0xadbb('0x2'));var timeout=require('connect-timeout');var express=require(_0xadbb('0x3'));var router=express[_0xadbb('0x4')]();var auth=require(_0xadbb('0x5'));var interaction=require(_0xadbb('0x6'));var config=require(_0xadbb('0x7'));var controller=require(_0xadbb('0x8'));router['get']('/',auth[_0xadbb('0x9')](),controller[_0xadbb('0xa')]);router[_0xadbb('0xb')](_0xadbb('0xc'),auth[_0xadbb('0x9')](),controller['describe']);router[_0xadbb('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xadbb('0xd')]);router[_0xadbb('0xe')]('/',auth[_0xadbb('0x9')](),controller['create']);router[_0xadbb('0xf')](_0xadbb('0x10'),auth['isAuthenticated'](),controller['update']);router[_0xadbb('0x11')]('/:id',auth[_0xadbb('0x9')](),controller[_0xadbb('0x12')]);module[_0xadbb('0x13')]=router;
\ No newline at end of file
index 0d3f4cd..96fa0de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['BOOLEAN','crudPermissions','join','getDataValue','split','STRING','INTEGER'];(function(_0x19d8b4,_0x5dadb9){var _0x2debd2=function(_0x29b2ac){while(--_0x29b2ac){_0x19d8b4['push'](_0x19d8b4['shift']());}};_0x2debd2(++_0x5dadb9);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xcb91[_0x5f1391];return _0x50ebe3;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1cb9('0x0')],'allowNull':![]},'category':{'type':Sequelize[_0x1cb9('0x0')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'enabled':{'type':Sequelize[_0x1cb9('0x2')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x1cb9('0x0')],'set':function(_0x2c17b8){this['setDataValue'](_0x1cb9('0x3'),_0x2c17b8?_0x2c17b8[_0x1cb9('0x4')](''):[]);},'get':function(){return this['getDataValue'](_0x1cb9('0x3'))?this[_0x1cb9('0x5')]('crudPermissions')[_0x1cb9('0x6')](''):[];}}};
\ No newline at end of file
+var _0xa9e0=['crudPermissions','join','getDataValue','sequelize','exports','STRING','BOOLEAN','setDataValue'];(function(_0x419058,_0x573222){var _0x4f9272=function(_0x522e8e){while(--_0x522e8e){_0x419058['push'](_0x419058['shift']());}};_0x4f9272(++_0x573222);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x0a9e('0x2')],'set':function(_0x432180){this[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x432180?_0x432180[_0x0a9e('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0x0a9e('0x5'))?this[_0x0a9e('0x7')](_0x0a9e('0x5'))['split'](''):[];}}};
\ No newline at end of file
index 6d1d283..e406d3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe015=['keys','query','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','limit','order','sort','where','pick','dateStart','add','day','merge','filter','map','key','VIRTUAL','options','includeAll','UserProfileSection','findAll','rows','catch','params','include','find','create','body','destroy','describe','html-pdf','eml-format','rimraf','request-promise','bluebird','mustache','util','path','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/environment','../../mysqldb','end','status','json','count','offset','Content-Range','apply','reject','save','update','then','error','name','index','rawAttributes','model'];(function(_0x2c250b,_0x1199b3){var _0x518caf=function(_0x18537c){while(--_0x18537c){_0x2c250b['push'](_0x2c250b['shift']());}};_0x518caf(++_0x1199b3);}(_0xe015,0x13b));var _0x5e01=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xe015[_0x4565bf];return _0x5610ba;};'use strict';var pdf=require(_0x5e01('0x0'));var emlformat=require(_0x5e01('0x1'));var rimraf=require(_0x5e01('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5e01('0x3'));var moment=require('moment');var BPromise=require(_0x5e01('0x4'));var Mustache=require(_0x5e01('0x5'));var util=require(_0x5e01('0x6'));var path=require(_0x5e01('0x7'));var sox=require('sox');var csv=require(_0x5e01('0x8'));var ejs=require(_0x5e01('0x9'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0x5e01('0xa'));var jsforce=require(_0x5e01('0xb'));var deskjs=require(_0x5e01('0xc'));var toCsv=require(_0x5e01('0x8'));var querystring=require(_0x5e01('0xd'));var Papa=require(_0x5e01('0xe'));var Redis=require('ioredis');var qs=require(_0x5e01('0xf'));var logger=require('../../config/logger')(_0x5e01('0x10'));var utils=require('../../config/utils');var config=require(_0x5e01('0x11'));var db=require(_0x5e01('0x12'))['db'];function respondWithStatusCode(_0x553a53,_0x19bc01){_0x19bc01=_0x19bc01||0xcc;return function(_0x2b9c69){if(_0x2b9c69){return _0x553a53['sendStatus'](_0x19bc01);}return _0x553a53['status'](_0x19bc01)[_0x5e01('0x13')]();};}function respondWithResult(_0x160f79,_0x468901){_0x468901=_0x468901||0xc8;return function(_0x857e89){if(_0x857e89){return _0x160f79[_0x5e01('0x14')](_0x468901)[_0x5e01('0x15')](_0x857e89);}};}function respondWithFilteredResult(_0x4bd426,_0x36da26){return function(_0x5816aa){if(_0x5816aa){var _0x4ab9b2=_0x5816aa[_0x5e01('0x16')],_0x1df2e0=_0x36da26['offset'],_0x2dd70c=_0x36da26[_0x5e01('0x17')]+_0x36da26['limit'],_0x494b8a;if(_0x2dd70c>=_0x4ab9b2){_0x2dd70c=_0x4ab9b2;_0x494b8a=0xc8;}else{_0x494b8a=0xce;}_0x4bd426[_0x5e01('0x14')](_0x494b8a);return _0x4bd426['set'](_0x5e01('0x18'),_0x1df2e0+'-'+_0x2dd70c+'/'+_0x4ab9b2)['json'](_0x5816aa);}return null;};}function patchUpdates(_0x509c07){return function(_0x35a002){try{jsonpatch[_0x5e01('0x19')](_0x35a002,_0x509c07,!![]);}catch(_0x4fa1c7){return BPromise[_0x5e01('0x1a')](_0x4fa1c7);}return _0x35a002[_0x5e01('0x1b')]();};}function saveUpdates(_0x36b4a7,_0x45e543){return function(_0x396cf3){if(_0x396cf3){return _0x396cf3[_0x5e01('0x1c')](_0x36b4a7)[_0x5e01('0x1d')](function(_0x153eb1){return _0x153eb1;});}return null;};}function removeEntity(_0x5f04f1,_0x150ebf){return function(_0x208586){if(_0x208586){return _0x208586['destroy']()[_0x5e01('0x1d')](function(){_0x5f04f1[_0x5e01('0x14')](0xcc)[_0x5e01('0x13')]();});}};}function handleEntityNotFound(_0x4234a9,_0x1d99fd){return function(_0x284803){if(!_0x284803){_0x4234a9['sendStatus'](0x194);}return _0x284803;};}function handleError(_0x329315,_0x720922){_0x720922=_0x720922||0x1f4;return function(_0x3417b2){logger[_0x5e01('0x1e')](_0x3417b2['stack']);if(_0x3417b2[_0x5e01('0x1f')]){delete _0x3417b2[_0x5e01('0x1f')];}_0x329315[_0x5e01('0x14')](_0x720922)['send'](_0x3417b2);};}exports[_0x5e01('0x20')]=function(_0x23454e,_0x12a19a){var _0x28344a={},_0x58dc6f={},_0x4d0ebe={'count':0x0,'rows':[]};var _0xca92be=db['UserProfileSection'][_0x5e01('0x21')];_0x58dc6f[_0x5e01('0x22')]=_[_0x5e01('0x23')](_0xca92be);var _0xc26cf8={'dateStart':_0x23454e['query']['dateStart'],'dateEnd':_0x23454e['query']['dateEnd']};delete _0x23454e[_0x5e01('0x24')]['dateStart'];delete _0x23454e[_0x5e01('0x24')][_0x5e01('0x25')];_0x58dc6f[_0x5e01('0x24')]=_['keys'](_0x23454e[_0x5e01('0x24')]);_0x58dc6f[_0x5e01('0x26')]=_[_0x5e01('0x27')](_0x58dc6f[_0x5e01('0x22')],_0x58dc6f['query']);_0x28344a['attributes']=_[_0x5e01('0x27')](_0x58dc6f[_0x5e01('0x22')],qs[_0x5e01('0x28')](_0x23454e[_0x5e01('0x24')][_0x5e01('0x28')]));_0x28344a[_0x5e01('0x29')]=_0x28344a[_0x5e01('0x29')][_0x5e01('0x2a')]?_0x28344a[_0x5e01('0x29')]:_0x58dc6f[_0x5e01('0x22')];if(!_0x23454e[_0x5e01('0x24')][_0x5e01('0x2b')]('nolimit')){_0x28344a[_0x5e01('0x2c')]=qs[_0x5e01('0x2c')](_0x23454e[_0x5e01('0x24')]['limit']);_0x28344a[_0x5e01('0x17')]=qs[_0x5e01('0x17')](_0x23454e['query'][_0x5e01('0x17')]);}_0x28344a[_0x5e01('0x2d')]=qs[_0x5e01('0x2e')](_0x23454e['query'][_0x5e01('0x2e')]);_0x28344a[_0x5e01('0x2f')]=qs[_0x5e01('0x26')](_[_0x5e01('0x30')](_0x23454e[_0x5e01('0x24')],_0x58dc6f[_0x5e01('0x26')]));if(_0xc26cf8[_0x5e01('0x31')]){if(_0xc26cf8[_0x5e01('0x25')]){_0xc26cf8[_0x5e01('0x25')]=moment(_0xc26cf8[_0x5e01('0x25')])[_0x5e01('0x32')](0x1,_0x5e01('0x33'));}else{_0xc26cf8[_0x5e01('0x25')]=moment(_0xc26cf8[_0x5e01('0x31')])[_0x5e01('0x32')](0x1,'day');}_[_0x5e01('0x34')](_0x28344a['where'],{'createdAt':{'$gte':_0xc26cf8['dateStart'],'$lte':_0xc26cf8[_0x5e01('0x25')]}});}if(_0x23454e[_0x5e01('0x24')][_0x5e01('0x35')]){_0x28344a[_0x5e01('0x2f')]=_[_0x5e01('0x34')](_0x28344a['where'],{'$or':_[_0x5e01('0x36')](_0xca92be,function(_0x1770e5){if(_0x1770e5['type'][_0x5e01('0x37')]!==_0x5e01('0x38')){var _0xfbc18b={};_0xfbc18b[_0x1770e5['field']]={'$like':'%'+_0x23454e[_0x5e01('0x24')][_0x5e01('0x35')]+'%'};return _0xfbc18b;}})});}_0x28344a=_['merge']({},_0x28344a,_0x23454e[_0x5e01('0x39')]);var _0x2e37f4={'where':_0x28344a['where']};return db['UserProfileSection'][_0x5e01('0x16')](_0x2e37f4)['then'](function(_0x2d7423){_0x4d0ebe[_0x5e01('0x16')]=_0x2d7423;if(_0x23454e[_0x5e01('0x24')][_0x5e01('0x3a')]){_0x28344a['include']=[{'all':!![]}];}return db[_0x5e01('0x3b')][_0x5e01('0x3c')](_0x28344a);})[_0x5e01('0x1d')](function(_0x44a5e4){_0x4d0ebe[_0x5e01('0x3d')]=_0x44a5e4;return _0x4d0ebe;})[_0x5e01('0x1d')](respondWithFilteredResult(_0x12a19a,_0x28344a))[_0x5e01('0x3e')](handleError(_0x12a19a,null));};exports['show']=function(_0x2a8c39,_0x42368a){var _0x283021={'raw':![],'where':{'id':_0x2a8c39[_0x5e01('0x3f')]['id']}},_0x33d001={};_0x33d001['model']=_[_0x5e01('0x23')](db[_0x5e01('0x3b')][_0x5e01('0x21')]);_0x33d001[_0x5e01('0x24')]=_[_0x5e01('0x23')](_0x2a8c39[_0x5e01('0x24')]);_0x33d001[_0x5e01('0x26')]=_['intersection'](_0x33d001[_0x5e01('0x22')],_0x33d001['query']);_0x283021[_0x5e01('0x29')]=_[_0x5e01('0x27')](_0x33d001[_0x5e01('0x22')],qs[_0x5e01('0x28')](_0x2a8c39[_0x5e01('0x24')][_0x5e01('0x28')]));_0x283021['attributes']=_0x283021[_0x5e01('0x29')]['length']?_0x283021[_0x5e01('0x29')]:_0x33d001[_0x5e01('0x22')];if(_0x2a8c39[_0x5e01('0x24')][_0x5e01('0x3a')]){_0x283021[_0x5e01('0x40')]=[{'all':!![]}];}_0x283021=_[_0x5e01('0x34')]({},_0x283021,_0x2a8c39['options']);return db['UserProfileSection'][_0x5e01('0x41')](_0x283021)[_0x5e01('0x1d')](handleEntityNotFound(_0x42368a,null))[_0x5e01('0x1d')](respondWithResult(_0x42368a,null))[_0x5e01('0x3e')](handleError(_0x42368a,null));};exports[_0x5e01('0x42')]=function(_0x389520,_0x661d){return db[_0x5e01('0x3b')][_0x5e01('0x42')](_0x389520[_0x5e01('0x43')],{})[_0x5e01('0x1d')](respondWithResult(_0x661d,0xc9))['catch'](handleError(_0x661d,null));};exports[_0x5e01('0x1c')]=function(_0x426ab8,_0x1ad300){if(_0x426ab8['body']['id']){delete _0x426ab8[_0x5e01('0x43')]['id'];}return db[_0x5e01('0x3b')][_0x5e01('0x41')]({'where':{'id':_0x426ab8[_0x5e01('0x3f')]['id']}})[_0x5e01('0x1d')](handleEntityNotFound(_0x1ad300,null))['then'](saveUpdates(_0x426ab8[_0x5e01('0x43')],null))['then'](respondWithResult(_0x1ad300,null))[_0x5e01('0x3e')](handleError(_0x1ad300,null));};exports[_0x5e01('0x44')]=function(_0x2b56f2,_0x4c368c){return db[_0x5e01('0x3b')][_0x5e01('0x41')]({'where':{'id':_0x2b56f2[_0x5e01('0x3f')]['id']}})[_0x5e01('0x1d')](handleEntityNotFound(_0x4c368c,null))[_0x5e01('0x1d')](removeEntity(_0x4c368c,null))['catch'](handleError(_0x4c368c,null));};exports[_0x5e01('0x45')]=function(_0x139a7f,_0x2c3f41){return db[_0x5e01('0x3b')][_0x5e01('0x45')]()[_0x5e01('0x1d')](respondWithResult(_0x2c3f41,null))['catch'](handleError(_0x2c3f41,null));};
\ No newline at end of file
+var _0x7bae=['fields','attributes','length','hasOwnProperty','offset','order','sort','where','pick','day','add','merge','map','type','key','field','filter','options','includeAll','include','rows','catch','params','find','create','body','describe','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','limit','set','apply','reject','save','update','then','destroy','name','UserProfileSection','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model'];(function(_0x4491d9,_0x5856ec){var _0x3e9dba=function(_0x2a6302){while(--_0x2a6302){_0x4491d9['push'](_0x4491d9['shift']());}};_0x3e9dba(++_0x5856ec);}(_0x7bae,0x13b));var _0xe7ba=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0x7bae[_0x4709c0];return _0x13348b;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0xe7ba('0x0'));var zipdir=require(_0xe7ba('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe7ba('0x2'));var moment=require('moment');var BPromise=require(_0xe7ba('0x3'));var Mustache=require(_0xe7ba('0x4'));var util=require(_0xe7ba('0x5'));var path=require(_0xe7ba('0x6'));var sox=require(_0xe7ba('0x7'));var csv=require(_0xe7ba('0x8'));var ejs=require(_0xe7ba('0x9'));var fs=require('fs');var _=require(_0xe7ba('0xa'));var squel=require(_0xe7ba('0xb'));var crypto=require(_0xe7ba('0xc'));var jsforce=require(_0xe7ba('0xd'));var deskjs=require(_0xe7ba('0xe'));var toCsv=require(_0xe7ba('0x8'));var querystring=require(_0xe7ba('0xf'));var Papa=require('papaparse');var Redis=require(_0xe7ba('0x10'));var qs=require(_0xe7ba('0x11'));var logger=require(_0xe7ba('0x12'))(_0xe7ba('0x13'));var utils=require(_0xe7ba('0x14'));var config=require(_0xe7ba('0x15'));var db=require(_0xe7ba('0x16'))['db'];function respondWithStatusCode(_0x448bcc,_0x194447){_0x194447=_0x194447||0xcc;return function(_0x4b6597){if(_0x4b6597){return _0x448bcc[_0xe7ba('0x17')](_0x194447);}return _0x448bcc['status'](_0x194447)[_0xe7ba('0x18')]();};}function respondWithResult(_0x45229c,_0x390596){_0x390596=_0x390596||0xc8;return function(_0x17e4e6){if(_0x17e4e6){return _0x45229c[_0xe7ba('0x19')](_0x390596)[_0xe7ba('0x1a')](_0x17e4e6);}};}function respondWithFilteredResult(_0x561dbb,_0x561c48){return function(_0x2a5183){if(_0x2a5183){var _0x7ba72a=_0x2a5183['count'],_0x359f6f=_0x561c48['offset'],_0x5d1d03=_0x561c48['offset']+_0x561c48[_0xe7ba('0x1b')],_0x4390e3;if(_0x5d1d03>=_0x7ba72a){_0x5d1d03=_0x7ba72a;_0x4390e3=0xc8;}else{_0x4390e3=0xce;}_0x561dbb['status'](_0x4390e3);return _0x561dbb[_0xe7ba('0x1c')]('Content-Range',_0x359f6f+'-'+_0x5d1d03+'/'+_0x7ba72a)['json'](_0x2a5183);}return null;};}function patchUpdates(_0x5a82b5){return function(_0x3f326a){try{jsonpatch[_0xe7ba('0x1d')](_0x3f326a,_0x5a82b5,!![]);}catch(_0x39ca38){return BPromise[_0xe7ba('0x1e')](_0x39ca38);}return _0x3f326a[_0xe7ba('0x1f')]();};}function saveUpdates(_0x58550c,_0x149c62){return function(_0x20c653){if(_0x20c653){return _0x20c653[_0xe7ba('0x20')](_0x58550c)[_0xe7ba('0x21')](function(_0x4aaf35){return _0x4aaf35;});}return null;};}function removeEntity(_0x1076c5,_0x2936b7){return function(_0x5a158f){if(_0x5a158f){return _0x5a158f[_0xe7ba('0x22')]()[_0xe7ba('0x21')](function(){_0x1076c5[_0xe7ba('0x19')](0xcc)[_0xe7ba('0x18')]();});}};}function handleEntityNotFound(_0x394b69,_0x2acfc2){return function(_0x293b14){if(!_0x293b14){_0x394b69[_0xe7ba('0x17')](0x194);}return _0x293b14;};}function handleError(_0x41cbd9,_0xa72f1c){_0xa72f1c=_0xa72f1c||0x1f4;return function(_0x58cf43){logger['error'](_0x58cf43['stack']);if(_0x58cf43['name']){delete _0x58cf43[_0xe7ba('0x23')];}_0x41cbd9['status'](_0xa72f1c)['send'](_0x58cf43);};}exports['index']=function(_0x255def,_0x32cc00){var _0xe32862={},_0x2ea78a={},_0x3435c6={'count':0x0,'rows':[]};var _0xc88099=db[_0xe7ba('0x24')][_0xe7ba('0x25')];_0x2ea78a['model']=_[_0xe7ba('0x26')](_0xc88099);var _0x48c869={'dateStart':_0x255def[_0xe7ba('0x27')][_0xe7ba('0x28')],'dateEnd':_0x255def[_0xe7ba('0x27')]['dateEnd']};delete _0x255def['query'][_0xe7ba('0x28')];delete _0x255def[_0xe7ba('0x27')][_0xe7ba('0x29')];_0x2ea78a[_0xe7ba('0x27')]=_[_0xe7ba('0x26')](_0x255def['query']);_0x2ea78a[_0xe7ba('0x2a')]=_[_0xe7ba('0x2b')](_0x2ea78a['model'],_0x2ea78a[_0xe7ba('0x27')]);_0xe32862['attributes']=_['intersection'](_0x2ea78a[_0xe7ba('0x2c')],qs[_0xe7ba('0x2d')](_0x255def[_0xe7ba('0x27')]['fields']));_0xe32862[_0xe7ba('0x2e')]=_0xe32862['attributes'][_0xe7ba('0x2f')]?_0xe32862[_0xe7ba('0x2e')]:_0x2ea78a[_0xe7ba('0x2c')];if(!_0x255def[_0xe7ba('0x27')][_0xe7ba('0x30')]('nolimit')){_0xe32862[_0xe7ba('0x1b')]=qs[_0xe7ba('0x1b')](_0x255def['query'][_0xe7ba('0x1b')]);_0xe32862[_0xe7ba('0x31')]=qs[_0xe7ba('0x31')](_0x255def['query'][_0xe7ba('0x31')]);}_0xe32862[_0xe7ba('0x32')]=qs['sort'](_0x255def[_0xe7ba('0x27')][_0xe7ba('0x33')]);_0xe32862[_0xe7ba('0x34')]=qs['filters'](_[_0xe7ba('0x35')](_0x255def[_0xe7ba('0x27')],_0x2ea78a['filters']));if(_0x48c869[_0xe7ba('0x28')]){if(_0x48c869[_0xe7ba('0x29')]){_0x48c869[_0xe7ba('0x29')]=moment(_0x48c869['dateEnd'])['add'](0x1,_0xe7ba('0x36'));}else{_0x48c869[_0xe7ba('0x29')]=moment(_0x48c869[_0xe7ba('0x28')])[_0xe7ba('0x37')](0x1,_0xe7ba('0x36'));}_['merge'](_0xe32862[_0xe7ba('0x34')],{'createdAt':{'$gte':_0x48c869[_0xe7ba('0x28')],'$lte':_0x48c869[_0xe7ba('0x29')]}});}if(_0x255def[_0xe7ba('0x27')]['filter']){_0xe32862[_0xe7ba('0x34')]=_[_0xe7ba('0x38')](_0xe32862[_0xe7ba('0x34')],{'$or':_[_0xe7ba('0x39')](_0xc88099,function(_0x35a5f3){if(_0x35a5f3[_0xe7ba('0x3a')][_0xe7ba('0x3b')]!=='VIRTUAL'){var _0x3429fa={};_0x3429fa[_0x35a5f3[_0xe7ba('0x3c')]]={'$like':'%'+_0x255def[_0xe7ba('0x27')][_0xe7ba('0x3d')]+'%'};return _0x3429fa;}})});}_0xe32862=_[_0xe7ba('0x38')]({},_0xe32862,_0x255def[_0xe7ba('0x3e')]);var _0x220c3b={'where':_0xe32862[_0xe7ba('0x34')]};return db[_0xe7ba('0x24')]['count'](_0x220c3b)[_0xe7ba('0x21')](function(_0x417734){_0x3435c6['count']=_0x417734;if(_0x255def['query'][_0xe7ba('0x3f')]){_0xe32862[_0xe7ba('0x40')]=[{'all':!![]}];}return db[_0xe7ba('0x24')]['findAll'](_0xe32862);})[_0xe7ba('0x21')](function(_0x82246e){_0x3435c6[_0xe7ba('0x41')]=_0x82246e;return _0x3435c6;})[_0xe7ba('0x21')](respondWithFilteredResult(_0x32cc00,_0xe32862))[_0xe7ba('0x42')](handleError(_0x32cc00,null));};exports['show']=function(_0x165558,_0x54ef49){var _0x30a1c8={'raw':![],'where':{'id':_0x165558[_0xe7ba('0x43')]['id']}},_0x2d9d85={};_0x2d9d85[_0xe7ba('0x2c')]=_[_0xe7ba('0x26')](db[_0xe7ba('0x24')][_0xe7ba('0x25')]);_0x2d9d85[_0xe7ba('0x27')]=_['keys'](_0x165558[_0xe7ba('0x27')]);_0x2d9d85[_0xe7ba('0x2a')]=_[_0xe7ba('0x2b')](_0x2d9d85[_0xe7ba('0x2c')],_0x2d9d85[_0xe7ba('0x27')]);_0x30a1c8[_0xe7ba('0x2e')]=_[_0xe7ba('0x2b')](_0x2d9d85[_0xe7ba('0x2c')],qs[_0xe7ba('0x2d')](_0x165558[_0xe7ba('0x27')]['fields']));_0x30a1c8[_0xe7ba('0x2e')]=_0x30a1c8['attributes'][_0xe7ba('0x2f')]?_0x30a1c8[_0xe7ba('0x2e')]:_0x2d9d85[_0xe7ba('0x2c')];if(_0x165558[_0xe7ba('0x27')][_0xe7ba('0x3f')]){_0x30a1c8[_0xe7ba('0x40')]=[{'all':!![]}];}_0x30a1c8=_['merge']({},_0x30a1c8,_0x165558[_0xe7ba('0x3e')]);return db[_0xe7ba('0x24')][_0xe7ba('0x44')](_0x30a1c8)[_0xe7ba('0x21')](handleEntityNotFound(_0x54ef49,null))[_0xe7ba('0x21')](respondWithResult(_0x54ef49,null))[_0xe7ba('0x42')](handleError(_0x54ef49,null));};exports[_0xe7ba('0x45')]=function(_0x266ace,_0x272cb9){return db[_0xe7ba('0x24')][_0xe7ba('0x45')](_0x266ace['body'],{})[_0xe7ba('0x21')](respondWithResult(_0x272cb9,0xc9))[_0xe7ba('0x42')](handleError(_0x272cb9,null));};exports[_0xe7ba('0x20')]=function(_0x24c7d9,_0x3ae802){if(_0x24c7d9[_0xe7ba('0x46')]['id']){delete _0x24c7d9['body']['id'];}return db[_0xe7ba('0x24')][_0xe7ba('0x44')]({'where':{'id':_0x24c7d9['params']['id']}})[_0xe7ba('0x21')](handleEntityNotFound(_0x3ae802,null))[_0xe7ba('0x21')](saveUpdates(_0x24c7d9[_0xe7ba('0x46')],null))[_0xe7ba('0x21')](respondWithResult(_0x3ae802,null))['catch'](handleError(_0x3ae802,null));};exports['destroy']=function(_0xa80cf,_0x2cfdc3){return db[_0xe7ba('0x24')]['find']({'where':{'id':_0xa80cf[_0xe7ba('0x43')]['id']}})[_0xe7ba('0x21')](handleEntityNotFound(_0x2cfdc3,null))[_0xe7ba('0x21')](removeEntity(_0x2cfdc3,null))[_0xe7ba('0x42')](handleError(_0x2cfdc3,null));};exports[_0xe7ba('0x47')]=function(_0x6b6f1,_0xf3a41f){return db['UserProfileSection'][_0xe7ba('0x47')]()[_0xe7ba('0x21')](respondWithResult(_0xf3a41f,null))[_0xe7ba('0x42')](handleError(_0xf3a41f,null));};
\ No newline at end of file
index b2f72c0..f2d9fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0909=['exports','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','util','moment','bluebird','./userProfileSection.attributes'];(function(_0x5ca1be,_0x1fab32){var _0x34976d=function(_0x4ea401){while(--_0x4ea401){_0x5ca1be['push'](_0x5ca1be['shift']());}};_0x34976d(++_0x1fab32);}(_0x0909,0x1e6));var _0x9090=function(_0x2d4bb9,_0x282ab6){_0x2d4bb9=_0x2d4bb9-0x0;var _0x523464=_0x0909[_0x2d4bb9];return _0x523464;};'use strict';var _=require('lodash');var util=require(_0x9090('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x9090('0x1'));var BPromise=require(_0x9090('0x2'));var rp=require('request-promise');var attributes=require(_0x9090('0x3'));module[_0x9090('0x4')]=function(_0x2a5b36,_0x5dbb1f){return _0x2a5b36[_0x9090('0x5')](_0x9090('0x6'),attributes,{'tableName':_0x9090('0x7'),'paranoid':![],'indexes':[{'name':_0x9090('0x8'),'fields':[_0x9090('0x9'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xaeda=['user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','api','moment','bluebird','request-promise','./userProfileSection.attributes','define','UserProfileSection'];(function(_0x3ae38b,_0x4c7866){var _0x192be8=function(_0x545eca){while(--_0x545eca){_0x3ae38b['push'](_0x3ae38b['shift']());}};_0x192be8(++_0x4c7866);}(_0xaeda,0x1b4));var _0xaaed=function(_0x58b58f,_0x247656){_0x58b58f=_0x58b58f-0x0;var _0xcb3948=_0xaeda[_0x58b58f];return _0xcb3948;};'use strict';var _=require(_0xaaed('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xaaed('0x1'));var moment=require(_0xaaed('0x2'));var BPromise=require(_0xaaed('0x3'));var rp=require(_0xaaed('0x4'));var attributes=require(_0xaaed('0x5'));module['exports']=function(_0x3e76ba,_0x2c31f8){return _0x3e76ba[_0xaaed('0x6')](_0xaaed('0x7'),attributes,{'tableName':_0xaaed('0x8'),'paranoid':![],'indexes':[{'name':_0xaaed('0x9'),'fields':[_0xaaed('0xa'),_0xaaed('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index ec6fba1..f69be45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x520a=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x1f4b71,_0x1613a9){var _0x487f58=function(_0x28bc3){while(--_0x28bc3){_0x1f4b71['push'](_0x1f4b71['shift']());}};_0x487f58(++_0x1613a9);}(_0x520a,0x1de));var _0xa520=function(_0x42f268,_0x16d109){_0x42f268=_0x42f268-0x0;var _0x538e42=_0x520a[_0x42f268];return _0x538e42;};'use strict';var _=require(_0xa520('0x0'));var util=require(_0xa520('0x1'));var moment=require(_0xa520('0x2'));var BPromise=require(_0xa520('0x3'));var rs=require(_0xa520('0x4'));var fs=require('fs');var Redis=require(_0xa520('0x5'));var db=require(_0xa520('0x6'))['db'];var utils=require(_0xa520('0x7'));var logger=require(_0xa520('0x8'))(_0xa520('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xa520('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x413c18,_0xdc9e3a,_0x4bea9a){return new BPromise(function(_0x179a34,_0x556697){return client[_0xa520('0xb')](_0x413c18,_0x4bea9a)[_0xa520('0xc')](function(_0x161d8e){logger[_0xa520('0xd')](_0xa520('0xe'),_0xdc9e3a,_0xa520('0xf'));logger[_0xa520('0x10')](_0xa520('0x11'),_0xdc9e3a,'request\x20sent',JSON[_0xa520('0x12')](_0x161d8e));if(_0x161d8e[_0xa520('0x13')]){if(_0x161d8e[_0xa520('0x13')][_0xa520('0x14')]===0x1f4){logger[_0xa520('0x13')](_0xa520('0xe'),_0xdc9e3a,_0x161d8e[_0xa520('0x13')][_0xa520('0x15')]);return _0x556697(_0x161d8e[_0xa520('0x13')][_0xa520('0x15')]);}logger[_0xa520('0x13')]('UserProfileSection,\x20%s,\x20%s',_0xdc9e3a,_0x161d8e[_0xa520('0x13')][_0xa520('0x15')]);return _0x179a34(_0x161d8e[_0xa520('0x13')]['message']);}else{logger[_0xa520('0xd')](_0xa520('0xe'),_0xdc9e3a,'request\x20sent');_0x179a34(_0x161d8e[_0xa520('0x16')]['message']);}})[_0xa520('0x17')](function(_0x323c7c){logger[_0xa520('0x13')](_0xa520('0xe'),_0xdc9e3a,_0x323c7c);_0x556697(_0x323c7c);});});}
\ No newline at end of file
+var _0xba48=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x806a40,_0x5181cd){var _0x58b632=function(_0xf3ed9d){while(--_0xf3ed9d){_0x806a40['push'](_0x806a40['shift']());}};_0x58b632(++_0x5181cd);}(_0xba48,0xd3));var _0x8ba4=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xba48[_0x3c4737];return _0x2bb926;};'use strict';var _=require(_0x8ba4('0x0'));var util=require(_0x8ba4('0x1'));var moment=require(_0x8ba4('0x2'));var BPromise=require(_0x8ba4('0x3'));var rs=require(_0x8ba4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8ba4('0x5'))['db'];var utils=require(_0x8ba4('0x6'));var logger=require(_0x8ba4('0x7'))(_0x8ba4('0x8'));var config=require(_0x8ba4('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8ba4('0xa')][_0x8ba4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1083e4,_0x4eb615,_0x2bf9b0){return new BPromise(function(_0x525fa6,_0x30a731){return client[_0x8ba4('0xc')](_0x1083e4,_0x2bf9b0)[_0x8ba4('0xd')](function(_0x163c62){logger[_0x8ba4('0xe')](_0x8ba4('0xf'),_0x4eb615,_0x8ba4('0x10'));logger[_0x8ba4('0x11')](_0x8ba4('0x12'),_0x4eb615,'request\x20sent',JSON[_0x8ba4('0x13')](_0x163c62));if(_0x163c62[_0x8ba4('0x14')]){if(_0x163c62['error'][_0x8ba4('0x15')]===0x1f4){logger[_0x8ba4('0x14')](_0x8ba4('0xf'),_0x4eb615,_0x163c62['error'][_0x8ba4('0x16')]);return _0x30a731(_0x163c62[_0x8ba4('0x14')][_0x8ba4('0x16')]);}logger[_0x8ba4('0x14')]('UserProfileSection,\x20%s,\x20%s',_0x4eb615,_0x163c62['error']['message']);return _0x525fa6(_0x163c62[_0x8ba4('0x14')][_0x8ba4('0x16')]);}else{logger['info']('UserProfileSection,\x20%s,\x20%s',_0x4eb615,'request\x20sent');_0x525fa6(_0x163c62['result'][_0x8ba4('0x16')]);}})[_0x8ba4('0x17')](function(_0x37b6fd){logger[_0x8ba4('0x14')](_0x8ba4('0xf'),_0x4eb615,_0x37b6fd);_0x30a731(_0x37b6fd);});});}
\ No newline at end of file
index c03190f..011f254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8585=['path','express','Router','exports','multer','util'];(function(_0x461cdf,_0x15e53f){var _0x58ab4f=function(_0x132e0a){while(--_0x132e0a){_0x461cdf['push'](_0x461cdf['shift']());}};_0x58ab4f(++_0x15e53f);}(_0x8585,0x64));var _0x5858=function(_0xadb7bf,_0x3491eb){_0xadb7bf=_0xadb7bf-0x0;var _0xe12bef=_0x8585[_0xadb7bf];return _0xe12bef;};'use strict';var multer=require(_0x5858('0x0'));var util=require(_0x5858('0x1'));var path=require(_0x5858('0x2'));var timeout=require('connect-timeout');var express=require(_0x5858('0x3'));var router=express[_0x5858('0x4')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x5858('0x5')]=router;
\ No newline at end of file
+var _0xfc46=['../../config/environment','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xfc46,0x9a));var _0x6fc4=function(_0x3b96cf,_0x1592f2){_0x3b96cf=_0x3b96cf-0x0;var _0x2e315a=_0xfc46[_0x3b96cf];return _0x2e315a;};'use strict';var multer=require(_0x6fc4('0x0'));var util=require('util');var path=require(_0x6fc4('0x1'));var timeout=require(_0x6fc4('0x2'));var express=require(_0x6fc4('0x3'));var router=express['Router']();var auth=require(_0x6fc4('0x4'));var interaction=require(_0x6fc4('0x5'));var config=require(_0x6fc4('0x6'));module[_0x6fc4('0x7')]=router;
\ No newline at end of file
index 7f4e4e9..1e499ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x773a=['exports','INTEGER'];(function(_0x57edc9,_0x3cbe52){var _0x563db7=function(_0x2c6738){while(--_0x2c6738){_0x57edc9['push'](_0x57edc9['shift']());}};_0x563db7(++_0x3cbe52);}(_0x773a,0x88));var _0xa773=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x773a[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0xa773('0x0')]={'penalty':{'type':Sequelize[_0xa773('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xebbf=['sequelize','exports'];(function(_0x17e4ac,_0x315ed6){var _0x7a9a6a=function(_0x5ec68f){while(--_0x5ec68f){_0x17e4ac['push'](_0x17e4ac['shift']());}};_0x7a9a6a(++_0x315ed6);}(_0xebbf,0xe4));var _0xfebb=function(_0xf26c2e,_0x56c3ea){_0xf26c2e=_0xf26c2e-0x0;var _0x46ecb4=_0xebbf[_0xf26c2e];return _0x46ecb4;};'use strict';var Sequelize=require(_0xfebb('0x0'));module[_0xfebb('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 075d89f..c4e7972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd604=['lodash','../../config/logger','api','bluebird','request-promise','./userSmsQueue.attributes','exports','define','user_has_sms_queues'];(function(_0x22bd10,_0x2dab45){var _0x25d466=function(_0x35d330){while(--_0x35d330){_0x22bd10['push'](_0x22bd10['shift']());}};_0x25d466(++_0x2dab45);}(_0xd604,0x120));var _0x4d60=function(_0x38c748,_0x4b4d4b){_0x38c748=_0x38c748-0x0;var _0x1ed3b9=_0xd604[_0x38c748];return _0x1ed3b9;};'use strict';var _=require(_0x4d60('0x0'));var util=require('util');var logger=require(_0x4d60('0x1'))(_0x4d60('0x2'));var moment=require('moment');var BPromise=require(_0x4d60('0x3'));var rp=require(_0x4d60('0x4'));var attributes=require(_0x4d60('0x5'));module[_0x4d60('0x6')]=function(_0x1f6a4c,_0x31a1fb){return _0x1f6a4c[_0x4d60('0x7')]('UserSmsQueue',attributes,{'tableName':_0x4d60('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ae7=['bluebird','./userSmsQueue.attributes','exports','define','UserSmsQueue','lodash','../../config/logger','api','moment'];(function(_0x2c4357,_0xdcd049){var _0x4244f0=function(_0x35f8ec){while(--_0x35f8ec){_0x2c4357['push'](_0x2c4357['shift']());}};_0x4244f0(++_0xdcd049);}(_0x2ae7,0xc2));var _0x72ae=function(_0x5284f8,_0x3ee8c6){_0x5284f8=_0x5284f8-0x0;var _0x209766=_0x2ae7[_0x5284f8];return _0x209766;};'use strict';var _=require(_0x72ae('0x0'));var util=require('util');var logger=require(_0x72ae('0x1'))(_0x72ae('0x2'));var moment=require(_0x72ae('0x3'));var BPromise=require(_0x72ae('0x4'));var rp=require('request-promise');var attributes=require(_0x72ae('0x5'));module[_0x72ae('0x6')]=function(_0x1ff07c,_0x50d49d){return _0x1ff07c[_0x72ae('0x7')](_0x72ae('0x8'),attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6c861f3..4f478ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dae=['debug','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x7e6cf7,_0x4c8e23){var _0x18d4ee=function(_0x14b2fc){while(--_0x14b2fc){_0x7e6cf7['push'](_0x7e6cf7['shift']());}};_0x18d4ee(++_0x4c8e23);}(_0x0dae,0xf7));var _0xe0da=function(_0x372ee1,_0x45c637){_0x372ee1=_0x372ee1-0x0;var _0x31ea06=_0x0dae[_0x372ee1];return _0x31ea06;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe0da('0x0'));var BPromise=require(_0xe0da('0x1'));var rs=require(_0xe0da('0x2'));var fs=require('fs');var Redis=require(_0xe0da('0x3'));var db=require(_0xe0da('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe0da('0x5'))(_0xe0da('0x6'));var config=require('../../config/environment');var jayson=require(_0xe0da('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x486380,_0x1fbed1,_0x376b13){return new BPromise(function(_0x35c3d6,_0x17c690){return client[_0xe0da('0x8')](_0x486380,_0x376b13)[_0xe0da('0x9')](function(_0x56fcbf){logger[_0xe0da('0xa')](_0xe0da('0xb'),_0x1fbed1,_0xe0da('0xc'));logger[_0xe0da('0xd')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x1fbed1,_0xe0da('0xc'),JSON[_0xe0da('0xe')](_0x56fcbf));if(_0x56fcbf['error']){if(_0x56fcbf[_0xe0da('0xf')][_0xe0da('0x10')]===0x1f4){logger[_0xe0da('0xf')](_0xe0da('0xb'),_0x1fbed1,_0x56fcbf[_0xe0da('0xf')][_0xe0da('0x11')]);return _0x17c690(_0x56fcbf['error']['message']);}logger['error'](_0xe0da('0xb'),_0x1fbed1,_0x56fcbf['error'][_0xe0da('0x11')]);return _0x35c3d6(_0x56fcbf['error'][_0xe0da('0x11')]);}else{logger[_0xe0da('0xa')](_0xe0da('0xb'),_0x1fbed1,_0xe0da('0xc'));_0x35c3d6(_0x56fcbf[_0xe0da('0x12')][_0xe0da('0x11')]);}})[_0xe0da('0x13')](function(_0x23cdfb){logger[_0xe0da('0xf')](_0xe0da('0xb'),_0x1fbed1,_0x23cdfb);_0x17c690(_0x23cdfb);});});}
\ No newline at end of file
+var _0xe13c=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserSmsQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe13c,0x167));var _0xce13=function(_0x591c47,_0x1079ac){_0x591c47=_0x591c47-0x0;var _0x3b5811=_0xe13c[_0x591c47];return _0x3b5811;};'use strict';var _=require(_0xce13('0x0'));var util=require(_0xce13('0x1'));var moment=require(_0xce13('0x2'));var BPromise=require(_0xce13('0x3'));var rs=require(_0xce13('0x4'));var fs=require('fs');var Redis=require(_0xce13('0x5'));var db=require(_0xce13('0x6'))['db'];var utils=require(_0xce13('0x7'));var logger=require(_0xce13('0x8'))('rpc');var config=require(_0xce13('0x9'));var jayson=require(_0xce13('0xa'));var client=jayson[_0xce13('0xb')][_0xce13('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x12f343,_0x5f572a,_0xb7f5a1){return new BPromise(function(_0x30e198,_0xd6834e){return client[_0xce13('0xd')](_0x12f343,_0xb7f5a1)[_0xce13('0xe')](function(_0x106311){logger[_0xce13('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0x5f572a,_0xce13('0x10'));logger[_0xce13('0x11')](_0xce13('0x12'),_0x5f572a,'request\x20sent',JSON[_0xce13('0x13')](_0x106311));if(_0x106311[_0xce13('0x14')]){if(_0x106311[_0xce13('0x14')][_0xce13('0x15')]===0x1f4){logger['error'](_0xce13('0x16'),_0x5f572a,_0x106311[_0xce13('0x14')]['message']);return _0xd6834e(_0x106311[_0xce13('0x14')][_0xce13('0x17')]);}logger[_0xce13('0x14')](_0xce13('0x16'),_0x5f572a,_0x106311[_0xce13('0x14')][_0xce13('0x17')]);return _0x30e198(_0x106311[_0xce13('0x14')][_0xce13('0x17')]);}else{logger[_0xce13('0xf')](_0xce13('0x16'),_0x5f572a,_0xce13('0x10'));_0x30e198(_0x106311[_0xce13('0x18')][_0xce13('0x17')]);}})[_0xce13('0x19')](function(_0x704cf9){logger['error'](_0xce13('0x16'),_0x5f572a,_0x704cf9);_0xd6834e(_0x704cf9);});});}
\ No newline at end of file
index 43ca6a9..651f436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6132=['../../components/interaction/service','../../config/environment','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x985422,_0x15a1a5){var _0x590d8f=function(_0x7f06c6){while(--_0x7f06c6){_0x985422['push'](_0x985422['shift']());}};_0x590d8f(++_0x15a1a5);}(_0x6132,0x13a));var _0x2613=function(_0x2c0a70,_0x32dc17){_0x2c0a70=_0x2c0a70-0x0;var _0x179312=_0x6132[_0x2c0a70];return _0x179312;};'use strict';var multer=require(_0x2613('0x0'));var util=require(_0x2613('0x1'));var path=require(_0x2613('0x2'));var timeout=require(_0x2613('0x3'));var express=require('express');var router=express[_0x2613('0x4')]();var auth=require(_0x2613('0x5'));var interaction=require(_0x2613('0x6'));var config=require(_0x2613('0x7'));module['exports']=router;
\ No newline at end of file
+var _0x1203=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','exports'];(function(_0x118139,_0x7ce965){var _0x2fece9=function(_0xd145a4){while(--_0xd145a4){_0x118139['push'](_0x118139['shift']());}};_0x2fece9(++_0x7ce965);}(_0x1203,0x8c));var _0x3120=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1203[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x3120('0x0'));var util=require(_0x3120('0x1'));var path=require(_0x3120('0x2'));var timeout=require(_0x3120('0x3'));var express=require(_0x3120('0x4'));var router=express[_0x3120('0x5')]();var auth=require(_0x3120('0x6'));var interaction=require(_0x3120('0x7'));var config=require(_0x3120('0x8'));module[_0x3120('0x9')]=router;
\ No newline at end of file
index 9afcfe1..236954b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d2=['INTEGER','sequelize'];(function(_0x4268eb,_0x79c33b){var _0x98b2e2=function(_0x10e454){while(--_0x10e454){_0x4268eb['push'](_0x4268eb['shift']());}};_0x98b2e2(++_0x79c33b);}(_0x00d2,0xdb));var _0x200d=function(_0x215775,_0x15bc76){_0x215775=_0x215775-0x0;var _0x2c189d=_0x00d2[_0x215775];return _0x2c189d;};'use strict';var Sequelize=require(_0x200d('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x200d('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2930=['sequelize','exports','INTEGER'];(function(_0x1030ce,_0xbe3f74){var _0x3367fd=function(_0x387153){while(--_0x387153){_0x1030ce['push'](_0x1030ce['shift']());}};_0x3367fd(++_0xbe3f74);}(_0x2930,0x177));var _0x0293=function(_0x3b5493,_0x47ea1c){_0x3b5493=_0x3b5493-0x0;var _0x4bcdc4=_0x2930[_0x3b5493];return _0x4bcdc4;};'use strict';var Sequelize=require(_0x0293('0x0'));module[_0x0293('0x1')]={'penalty':{'type':Sequelize[_0x0293('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 0dd5095..367539c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad5f=['request-promise','./userVoiceQueue.attributes','UserVoiceQueue','user_has_voice_queues','util','../../config/logger','api','moment'];(function(_0x43194a,_0x535f44){var _0x2ce96f=function(_0x382a2e){while(--_0x382a2e){_0x43194a['push'](_0x43194a['shift']());}};_0x2ce96f(++_0x535f44);}(_0xad5f,0x84));var _0xfad5=function(_0x5ed045,_0x5a7320){_0x5ed045=_0x5ed045-0x0;var _0x4a6362=_0xad5f[_0x5ed045];return _0x4a6362;};'use strict';var _=require('lodash');var util=require(_0xfad5('0x0'));var logger=require(_0xfad5('0x1'))(_0xfad5('0x2'));var moment=require(_0xfad5('0x3'));var BPromise=require('bluebird');var rp=require(_0xfad5('0x4'));var attributes=require(_0xfad5('0x5'));module['exports']=function(_0x1358b6,_0x51d0cc){return _0x1358b6['define'](_0xfad5('0x6'),attributes,{'tableName':_0xfad5('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc69a=['util','api','moment','bluebird','request-promise','./userVoiceQueue.attributes','UserVoiceQueue','user_has_voice_queues'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xc69a,0xc0));var _0xac69=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xc69a[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require(_0xac69('0x0'));var logger=require('../../config/logger')(_0xac69('0x1'));var moment=require(_0xac69('0x2'));var BPromise=require(_0xac69('0x3'));var rp=require(_0xac69('0x4'));var attributes=require(_0xac69('0x5'));module['exports']=function(_0x50e854,_0x44f579){return _0x50e854['define'](_0xac69('0x6'),attributes,{'tableName':_0xac69('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 83ff3fc..69cfbaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6af1=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x382a62,_0x1baa5e){var _0x490a25=function(_0x1b3427){while(--_0x1b3427){_0x382a62['push'](_0x382a62['shift']());}};_0x490a25(++_0x1baa5e);}(_0x6af1,0x151));var _0x16af=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6af1[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x16af('0x0'));var util=require(_0x16af('0x1'));var moment=require(_0x16af('0x2'));var BPromise=require(_0x16af('0x3'));var rs=require(_0x16af('0x4'));var fs=require('fs');var Redis=require(_0x16af('0x5'));var db=require(_0x16af('0x6'))['db'];var utils=require(_0x16af('0x7'));var logger=require(_0x16af('0x8'))(_0x16af('0x9'));var config=require('../../config/environment');var jayson=require(_0x16af('0xa'));var client=jayson[_0x16af('0xb')][_0x16af('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xb2d95a,_0xd89d96,_0x1fd42f){return new BPromise(function(_0x5127ed,_0x3431b9){return client['request'](_0xb2d95a,_0x1fd42f)[_0x16af('0xd')](function(_0x527772){logger['info'](_0x16af('0xe'),_0xd89d96,_0x16af('0xf'));logger[_0x16af('0x10')](_0x16af('0x11'),_0xd89d96,_0x16af('0xf'),JSON[_0x16af('0x12')](_0x527772));if(_0x527772[_0x16af('0x13')]){if(_0x527772[_0x16af('0x13')][_0x16af('0x14')]===0x1f4){logger['error'](_0x16af('0xe'),_0xd89d96,_0x527772['error']['message']);return _0x3431b9(_0x527772['error'][_0x16af('0x15')]);}logger[_0x16af('0x13')](_0x16af('0xe'),_0xd89d96,_0x527772['error'][_0x16af('0x15')]);return _0x5127ed(_0x527772[_0x16af('0x13')]['message']);}else{logger['info'](_0x16af('0xe'),_0xd89d96,_0x16af('0xf'));_0x5127ed(_0x527772[_0x16af('0x16')][_0x16af('0x15')]);}})[_0x16af('0x17')](function(_0x5d0e0f){logger[_0x16af('0x13')](_0x16af('0xe'),_0xd89d96,_0x5d0e0f);_0x3431b9(_0x5d0e0f);});});}
\ No newline at end of file
+var _0xceae=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash'];(function(_0x559aca,_0x41a249){var _0x5627fe=function(_0x570760){while(--_0x570760){_0x559aca['push'](_0x559aca['shift']());}};_0x5627fe(++_0x41a249);}(_0xceae,0x1f3));var _0xecea=function(_0x15caa5,_0x206c67){_0x15caa5=_0x15caa5-0x0;var _0x1200c7=_0xceae[_0x15caa5];return _0x1200c7;};'use strict';var _=require(_0xecea('0x0'));var util=require(_0xecea('0x1'));var moment=require('moment');var BPromise=require(_0xecea('0x2'));var rs=require(_0xecea('0x3'));var fs=require('fs');var Redis=require(_0xecea('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xecea('0x5'));var logger=require(_0xecea('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xecea('0x7'));var client=jayson[_0xecea('0x8')][_0xecea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x14be13,_0x3b8b22,_0x2a11d1){return new BPromise(function(_0x37d2e7,_0x2591a5){return client['request'](_0x14be13,_0x2a11d1)[_0xecea('0xa')](function(_0x2b5a99){logger['info'](_0xecea('0xb'),_0x3b8b22,_0xecea('0xc'));logger[_0xecea('0xd')](_0xecea('0xe'),_0x3b8b22,_0xecea('0xc'),JSON[_0xecea('0xf')](_0x2b5a99));if(_0x2b5a99[_0xecea('0x10')]){if(_0x2b5a99[_0xecea('0x10')][_0xecea('0x11')]===0x1f4){logger['error'](_0xecea('0xb'),_0x3b8b22,_0x2b5a99[_0xecea('0x10')][_0xecea('0x12')]);return _0x2591a5(_0x2b5a99[_0xecea('0x10')][_0xecea('0x12')]);}logger[_0xecea('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x3b8b22,_0x2b5a99[_0xecea('0x10')][_0xecea('0x12')]);return _0x37d2e7(_0x2b5a99[_0xecea('0x10')]['message']);}else{logger['info'](_0xecea('0xb'),_0x3b8b22,'request\x20sent');_0x37d2e7(_0x2b5a99['result'][_0xecea('0x12')]);}})[_0xecea('0x13')](function(_0xf55f4){logger[_0xecea('0x10')](_0xecea('0xb'),_0x3b8b22,_0xf55f4);_0x2591a5(_0xf55f4);});});}
\ No newline at end of file
index 7adeb46..28079a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06ae=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','exports','util','path','connect-timeout'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x06ae,0x16e));var _0xe06a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x06ae[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0xe06a('0x0'));var path=require(_0xe06a('0x1'));var timeout=require(_0xe06a('0x2'));var express=require(_0xe06a('0x3'));var router=express[_0xe06a('0x4')]();var auth=require(_0xe06a('0x5'));var interaction=require(_0xe06a('0x6'));var config=require(_0xe06a('0x7'));module[_0xe06a('0x8')]=router;
\ No newline at end of file
+var _0x0d91=['path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','exports','multer','util'];(function(_0x4fc9e6,_0xc51915){var _0x551d28=function(_0x1a603b){while(--_0x1a603b){_0x4fc9e6['push'](_0x4fc9e6['shift']());}};_0x551d28(++_0xc51915);}(_0x0d91,0x76));var _0x10d9=function(_0x5d7747,_0x55c074){_0x5d7747=_0x5d7747-0x0;var _0x291142=_0x0d91[_0x5d7747];return _0x291142;};'use strict';var multer=require(_0x10d9('0x0'));var util=require(_0x10d9('0x1'));var path=require(_0x10d9('0x2'));var timeout=require(_0x10d9('0x3'));var express=require('express');var router=express[_0x10d9('0x4')]();var auth=require(_0x10d9('0x5'));var interaction=require(_0x10d9('0x6'));var config=require('../../config/environment');module[_0x10d9('0x7')]=router;
\ No newline at end of file
index 3debcda..5e2a51a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a5e=['queue_interface','sequelize','exports','INTEGER','Required\x20by\x20Asterisk','STRING'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x2a5e,0x1e1));var _0xe2a5=function(_0x5ec119,_0x4c2d9e){_0x5ec119=_0x5ec119-0x0;var _0x364759=_0x2a5e[_0x5ec119];return _0x364759;};'use strict';var Sequelize=require(_0xe2a5('0x0'));module[_0xe2a5('0x1')]={'uniqueid':{'type':Sequelize[_0xe2a5('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xe2a5('0x3')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0xe2a5('0x3')},'UserId':{'type':Sequelize[_0xe2a5('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':_0xe2a5('0x3')},'VoiceQueueId':{'type':Sequelize[_0xe2a5('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xe2a5('0x4')],'allowNull':![],'unique':_0xe2a5('0x5'),'comment':_0xe2a5('0x3')},'penalty':{'type':Sequelize[_0xe2a5('0x2')](0xb),'defaultValue':0x0,'comment':_0xe2a5('0x3')},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
+var _0x2344=['Required\x20by\x20Asterisk','INTEGER','STRING','queue_interface','exports'];(function(_0x3ff788,_0x1ca33d){var _0x3724b6=function(_0x3e0d43){while(--_0x3e0d43){_0x3ff788['push'](_0x3ff788['shift']());}};_0x3724b6(++_0x1ca33d);}(_0x2344,0x1e4));var _0x4234=function(_0x3f1081,_0x7ace74){_0x3f1081=_0x3f1081-0x0;var _0x2d749f=_0x2344[_0x3f1081];return _0x2d749f;};'use strict';var Sequelize=require('sequelize');module[_0x4234('0x0')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x4234('0x1')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0x4234('0x1')},'UserId':{'type':Sequelize[_0x4234('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x4234('0x3')],'allowNull':![],'unique':_0x4234('0x4'),'comment':_0x4234('0x1')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x4234('0x3')],'allowNull':![],'unique':_0x4234('0x4'),'comment':_0x4234('0x1')},'penalty':{'type':Sequelize[_0x4234('0x2')](0xb),'defaultValue':0x0,'comment':_0x4234('0x1')},'paused':{'type':Sequelize[_0x4234('0x2')](0xb),'defaultValue':0x0,'comment':_0x4234('0x1')}};
\ No newline at end of file
index 8773341..67d4768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee56=['events','update','remove','emit','hasOwnProperty','exports'];(function(_0x333fc8,_0x2b292c){var _0x432439=function(_0x5501b6){while(--_0x5501b6){_0x333fc8['push'](_0x333fc8['shift']());}};_0x432439(++_0x2b292c);}(_0xee56,0xcc));var _0x6ee5=function(_0x47bc58,_0x1e1998){_0x47bc58=_0x47bc58-0x0;var _0x4a0860=_0xee56[_0x47bc58];return _0x4a0860;};'use strict';var EventEmitter=require(_0x6ee5('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x6ee5('0x1'),'afterDestroy':_0x6ee5('0x2')};function emitEvent(_0x489df7){return function(_0x2b0588,_0x3f4eab,_0x50f6fe){UserVoiceQueueRtEvents[_0x6ee5('0x3')](_0x489df7+':'+_0x2b0588['id'],_0x2b0588);UserVoiceQueueRtEvents[_0x6ee5('0x3')](_0x489df7,_0x2b0588);_0x50f6fe(null);};}for(var e in events){if(events[_0x6ee5('0x4')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x6ee5('0x5')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x74b2=['save','update','remove','emit','exports','../../mysqldb','setMaxListeners'];(function(_0x457c28,_0x1d4053){var _0x310cbc=function(_0x2d94c1){while(--_0x2d94c1){_0x457c28['push'](_0x457c28['shift']());}};_0x310cbc(++_0x1d4053);}(_0x74b2,0x1c5));var _0x274b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x74b2[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x274b('0x0'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x274b('0x1')](0x0);var events={'afterCreate':_0x274b('0x2'),'afterUpdate':_0x274b('0x3'),'afterDestroy':_0x274b('0x4')};function emitEvent(_0x1b2583){return function(_0x2dbc0e,_0x4a877f,_0x494d23){UserVoiceQueueRtEvents[_0x274b('0x5')](_0x1b2583+':'+_0x2dbc0e['id'],_0x2dbc0e);UserVoiceQueueRtEvents[_0x274b('0x5')](_0x1b2583,_0x2dbc0e);_0x494d23(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x274b('0x6')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 3fd8637..151ec17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb2a=['define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./userVoiceQueueRt.attributes','exports'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0xfb2a,0x10b));var _0xafb2=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xfb2a[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0xafb2('0x0'));var util=require(_0xafb2('0x1'));var logger=require(_0xafb2('0x2'))(_0xafb2('0x3'));var moment=require(_0xafb2('0x4'));var BPromise=require(_0xafb2('0x5'));var rp=require(_0xafb2('0x6'));var attributes=require(_0xafb2('0x7'));module[_0xafb2('0x8')]=function(_0x36d446,_0x41575f){return _0x36d446[_0xafb2('0x9')](_0xafb2('0xa'),attributes,{'tableName':_0xafb2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe568=['UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','bluebird','request-promise','./userVoiceQueueRt.attributes','exports','define'];(function(_0x240290,_0x53f8bb){var _0x17c8cf=function(_0x2ea15d){while(--_0x2ea15d){_0x240290['push'](_0x240290['shift']());}};_0x17c8cf(++_0x53f8bb);}(_0xe568,0x1ce));var _0x8e56=function(_0x23f8d2,_0x301fec){_0x23f8d2=_0x23f8d2-0x0;var _0x5d174b=_0xe568[_0x23f8d2];return _0x5d174b;};'use strict';var _=require(_0x8e56('0x0'));var util=require(_0x8e56('0x1'));var logger=require(_0x8e56('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8e56('0x3'));var rp=require(_0x8e56('0x4'));var attributes=require(_0x8e56('0x5'));module[_0x8e56('0x6')]=function(_0x537c96,_0x2e194d){return _0x537c96[_0x8e56('0x7')](_0x8e56('0x8'),attributes,{'tableName':_0x8e56('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f0c0d3..cf42ec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73d7=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','lodash','util','moment'];(function(_0x1ff012,_0x3d5c61){var _0xa49923=function(_0x52df2d){while(--_0x52df2d){_0x1ff012['push'](_0x1ff012['shift']());}};_0xa49923(++_0x3d5c61);}(_0x73d7,0x16f));var _0x773d=function(_0x31286e,_0x2d43cc){_0x31286e=_0x31286e-0x0;var _0x335723=_0x73d7[_0x31286e];return _0x335723;};'use strict';var _=require(_0x773d('0x0'));var util=require(_0x773d('0x1'));var moment=require(_0x773d('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x773d('0x3'));var db=require(_0x773d('0x4'))['db'];var utils=require(_0x773d('0x5'));var logger=require(_0x773d('0x6'))(_0x773d('0x7'));var config=require('../../config/environment');var jayson=require(_0x773d('0x8'));var client=jayson[_0x773d('0x9')][_0x773d('0xa')]({'port':0x232a});config[_0x773d('0xb')]=_['defaults'](config[_0x773d('0xb')],{'host':_0x773d('0xc'),'port':0x18eb});var socket=require(_0x773d('0xd'))(new Redis(config[_0x773d('0xb')]));require(_0x773d('0xe'))[_0x773d('0xf')](socket);function respondWithRpcPromise(_0x58cfa4,_0x11afae,_0x1059fe){return new BPromise(function(_0x200b0c,_0x5470f4){return client[_0x773d('0x10')](_0x58cfa4,_0x1059fe)[_0x773d('0x11')](function(_0x5edd18){logger[_0x773d('0x12')](_0x773d('0x13'),_0x11afae,_0x773d('0x14'));logger[_0x773d('0x15')](_0x773d('0x16'),_0x11afae,_0x773d('0x14'),JSON[_0x773d('0x17')](_0x5edd18));if(_0x5edd18[_0x773d('0x18')]){if(_0x5edd18['error']['code']===0x1f4){logger[_0x773d('0x18')](_0x773d('0x13'),_0x11afae,_0x5edd18['error'][_0x773d('0x19')]);return _0x5470f4(_0x5edd18[_0x773d('0x18')]['message']);}logger[_0x773d('0x18')](_0x773d('0x13'),_0x11afae,_0x5edd18[_0x773d('0x18')][_0x773d('0x19')]);return _0x200b0c(_0x5edd18[_0x773d('0x18')][_0x773d('0x19')]);}else{logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x11afae,_0x773d('0x14'));_0x200b0c(_0x5edd18[_0x773d('0x1a')][_0x773d('0x19')]);}})[_0x773d('0x1b')](function(_0x3b2b0c){logger[_0x773d('0x18')](_0x773d('0x13'),_0x11afae,_0x3b2b0c);_0x5470f4(_0x3b2b0c);});});}exports[_0x773d('0x1c')]=function(_0x3dec8b){var _0x35bf99=this;return new Promise(function(_0x2edc04,_0x458f2f){return db[_0x773d('0x1d')][_0x773d('0x1e')]({'raw':_0x3dec8b[_0x773d('0x1f')]?_0x3dec8b[_0x773d('0x1f')][_0x773d('0x20')]===undefined?!![]:![]:!![],'where':_0x3dec8b[_0x773d('0x1f')]?_0x3dec8b[_0x773d('0x1f')]['where']||null:null,'attributes':[[db[_0x773d('0x21')]['fn'](_0x773d('0x22'),db[_0x773d('0x21')]['fn']('IF',db[_0x773d('0x21')][_0x773d('0x23')](_0x773d('0x24')))),'outboundQueuePauses']]})[_0x773d('0x11')](function(_0x2f382e){logger[_0x773d('0x12')](_0x773d('0x1c'),_0x3dec8b);logger[_0x773d('0x15')](_0x773d('0x1c'),_0x3dec8b,JSON[_0x773d('0x17')](_0x2f382e));_0x2edc04(_0x2f382e);})['catch'](function(_0x45fb0e){logger[_0x773d('0x18')](_0x773d('0x1c'),_0x45fb0e[_0x773d('0x19')],_0x3dec8b);_0x458f2f(_0x35bf99[_0x773d('0x18')](0x1f4,_0x45fb0e['message']));});});};
\ No newline at end of file
+var _0xfb99=['client','redis','defaults','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x42fef2,_0xdf1543){var _0x340e9d=function(_0x42d4fe){while(--_0x42d4fe){_0x42fef2['push'](_0x42fef2['shift']());}};_0x340e9d(++_0xdf1543);}(_0xfb99,0x95));var _0x9fb9=function(_0x1abd92,_0x357253){_0x1abd92=_0x1abd92-0x0;var _0x449268=_0xfb99[_0x1abd92];return _0x449268;};'use strict';var _=require(_0x9fb9('0x0'));var util=require(_0x9fb9('0x1'));var moment=require(_0x9fb9('0x2'));var BPromise=require(_0x9fb9('0x3'));var rs=require(_0x9fb9('0x4'));var fs=require('fs');var Redis=require(_0x9fb9('0x5'));var db=require(_0x9fb9('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9fb9('0x7'))(_0x9fb9('0x8'));var config=require(_0x9fb9('0x9'));var jayson=require(_0x9fb9('0xa'));var client=jayson[_0x9fb9('0xb')]['http']({'port':0x232a});config[_0x9fb9('0xc')]=_[_0x9fb9('0xd')](config[_0x9fb9('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x9fb9('0xe'))(new Redis(config[_0x9fb9('0xc')]));require(_0x9fb9('0xf'))[_0x9fb9('0x10')](socket);function respondWithRpcPromise(_0x5a93ea,_0x361fc6,_0x18ddec){return new BPromise(function(_0x3f45c0,_0x52a37c){return client[_0x9fb9('0x11')](_0x5a93ea,_0x18ddec)[_0x9fb9('0x12')](function(_0x4e8480){logger[_0x9fb9('0x13')](_0x9fb9('0x14'),_0x361fc6,_0x9fb9('0x15'));logger[_0x9fb9('0x16')](_0x9fb9('0x17'),_0x361fc6,_0x9fb9('0x15'),JSON[_0x9fb9('0x18')](_0x4e8480));if(_0x4e8480[_0x9fb9('0x19')]){if(_0x4e8480[_0x9fb9('0x19')][_0x9fb9('0x1a')]===0x1f4){logger[_0x9fb9('0x19')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x361fc6,_0x4e8480[_0x9fb9('0x19')]['message']);return _0x52a37c(_0x4e8480[_0x9fb9('0x19')][_0x9fb9('0x1b')]);}logger[_0x9fb9('0x19')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x361fc6,_0x4e8480[_0x9fb9('0x19')]['message']);return _0x3f45c0(_0x4e8480[_0x9fb9('0x19')][_0x9fb9('0x1b')]);}else{logger[_0x9fb9('0x13')](_0x9fb9('0x14'),_0x361fc6,'request\x20sent');_0x3f45c0(_0x4e8480[_0x9fb9('0x1c')]['message']);}})[_0x9fb9('0x1d')](function(_0x500ace){logger[_0x9fb9('0x19')](_0x9fb9('0x14'),_0x361fc6,_0x500ace);_0x52a37c(_0x500ace);});});}exports[_0x9fb9('0x1e')]=function(_0x582104){var _0x1dcdd3=this;return new Promise(function(_0x16c0f9,_0xebdde2){return db[_0x9fb9('0x1f')][_0x9fb9('0x20')]({'raw':_0x582104[_0x9fb9('0x21')]?_0x582104[_0x9fb9('0x21')][_0x9fb9('0x22')]===undefined?!![]:![]:!![],'where':_0x582104['options']?_0x582104[_0x9fb9('0x21')]['where']||null:null,'attributes':[[db[_0x9fb9('0x23')]['fn'](_0x9fb9('0x24'),db[_0x9fb9('0x23')]['fn']('IF',db[_0x9fb9('0x23')][_0x9fb9('0x25')](_0x9fb9('0x26')))),_0x9fb9('0x27')]]})[_0x9fb9('0x12')](function(_0x2d9c7c){logger[_0x9fb9('0x13')]('GetVoiceQueueRtPauses',_0x582104);logger[_0x9fb9('0x16')](_0x9fb9('0x1e'),_0x582104,JSON[_0x9fb9('0x18')](_0x2d9c7c));_0x16c0f9(_0x2d9c7c);})[_0x9fb9('0x1d')](function(_0x1de8f8){logger[_0x9fb9('0x19')](_0x9fb9('0x1e'),_0x1de8f8['message'],_0x582104);_0xebdde2(_0x1dcdd3[_0x9fb9('0x19')](0x1f4,_0x1de8f8[_0x9fb9('0x1b')]));});});};
\ No newline at end of file
index 4871c58..9e86d17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3435=['length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update','emit','register'];(function(_0xa34090,_0x19fa50){var _0x995002=function(_0x39c1a7){while(--_0x39c1a7){_0xa34090['push'](_0xa34090['shift']());}};_0x995002(++_0x19fa50);}(_0x3435,0xfa));var _0x5343=function(_0x31991b,_0xaf75d2){_0x31991b=_0x31991b-0x0;var _0x307304=_0x3435[_0x31991b];return _0x307304;};'use strict';var UserVoiceQueueRtEvents=require(_0x5343('0x0'));var events=[_0x5343('0x1'),_0x5343('0x2'),_0x5343('0x3')];function createListener(_0x14c416,_0x2a91fe){return function(_0x597aa9){_0x2a91fe[_0x5343('0x4')](_0x14c416,_0x597aa9);};}function removeListener(_0x3ae07e,_0x578a24){return function(){UserVoiceQueueRtEvents['removeListener'](_0x3ae07e,_0x578a24);};}exports[_0x5343('0x5')]=function(_0x28f0f3){for(var _0x4d26b5=0x0,_0x544b29=events[_0x5343('0x6')];_0x4d26b5<_0x544b29;_0x4d26b5++){var _0x1e1911=events[_0x4d26b5];var _0x9ea9b6=createListener(_0x5343('0x7')+_0x1e1911,_0x28f0f3);UserVoiceQueueRtEvents['on'](_0x1e1911,_0x9ea9b6);}};
\ No newline at end of file
+var _0x3831=['removeListener','userVoiceQueueRt:','./userVoiceQueueRt.events','remove','update'];(function(_0x14dda7,_0x16b0c8){var _0x1f8642=function(_0x39fda1){while(--_0x39fda1){_0x14dda7['push'](_0x14dda7['shift']());}};_0x1f8642(++_0x16b0c8);}(_0x3831,0x14c));var _0x1383=function(_0x48051b,_0x339115){_0x48051b=_0x48051b-0x0;var _0x2a4f6e=_0x3831[_0x48051b];return _0x2a4f6e;};'use strict';var UserVoiceQueueRtEvents=require(_0x1383('0x0'));var events=['save',_0x1383('0x1'),_0x1383('0x2')];function createListener(_0x3a25fd,_0x15e6b5){return function(_0x391bef){_0x15e6b5['emit'](_0x3a25fd,_0x391bef);};}function removeListener(_0x2fdf72,_0x573874){return function(){UserVoiceQueueRtEvents[_0x1383('0x3')](_0x2fdf72,_0x573874);};}exports['register']=function(_0x5b64b1){for(var _0x5eb4d8=0x0,_0x45a030=events['length'];_0x5eb4d8<_0x45a030;_0x5eb4d8++){var _0x187027=events[_0x5eb4d8];var _0x1ddd4c=createListener(_0x1383('0x4')+_0x187027,_0x5b64b1);UserVoiceQueueRtEvents['on'](_0x187027,_0x1ddd4c);}};
\ No newline at end of file
index f205b0e..806925d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['post','create','update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show'];(function(_0x504687,_0x5a4b9e){var _0x560f5b=function(_0x3aecf4){while(--_0x3aecf4){_0x504687['push'](_0x504687['shift']());}};_0x560f5b(++_0x5a4b9e);}(_0xd64b,0xc1));var _0xbd64=function(_0x33b08,_0x1bf73d){_0x33b08=_0x33b08-0x0;var _0x214fce=_0xd64b[_0x33b08];return _0x214fce;};'use strict';var multer=require(_0xbd64('0x0'));var util=require('util');var path=require(_0xbd64('0x1'));var timeout=require('connect-timeout');var express=require(_0xbd64('0x2'));var router=express[_0xbd64('0x3')]();var auth=require(_0xbd64('0x4'));var interaction=require(_0xbd64('0x5'));var config=require(_0xbd64('0x6'));var controller=require('./variable.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xbd64('0x7')](_0xbd64('0x8'),auth[_0xbd64('0x9')](),controller[_0xbd64('0xa')]);router[_0xbd64('0xb')]('/',auth[_0xbd64('0x9')](),controller[_0xbd64('0xc')]);router['put']('/:id',auth[_0xbd64('0x9')](),controller[_0xbd64('0xd')]);router[_0xbd64('0xe')]('/:id',auth[_0xbd64('0x9')](),controller[_0xbd64('0xf')]);module[_0xbd64('0x10')]=router;
\ No newline at end of file
+var _0x70e0=['create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','show','post','isAuthenticated'];(function(_0x52f159,_0x419d8a){var _0x156799=function(_0xf168e8){while(--_0xf168e8){_0x52f159['push'](_0x52f159['shift']());}};_0x156799(++_0x419d8a);}(_0x70e0,0x17b));var _0x070e=function(_0xe33b98,_0x498070){_0xe33b98=_0xe33b98-0x0;var _0x3ca4b9=_0x70e0[_0xe33b98];return _0x3ca4b9;};'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 auth=require(_0x070e('0x4'));var interaction=require(_0x070e('0x5'));var config=require(_0x070e('0x6'));var controller=require('./variable.controller');router[_0x070e('0x7')]('/',auth['isAuthenticated'](),controller[_0x070e('0x8')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x070e('0x9')]);router[_0x070e('0xa')]('/',auth[_0x070e('0xb')](),controller[_0x070e('0xc')]);router[_0x070e('0xd')](_0x070e('0xe'),auth[_0x070e('0xb')](),controller['update']);router['delete'](_0x070e('0xe'),auth[_0x070e('0xb')](),controller[_0x070e('0xf')]);module[_0x070e('0x10')]=router;
\ No newline at end of file
index 9e828aa..2f04921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8542=['STRING','name'];(function(_0x4dd479,_0x26d87a){var _0x1b6807=function(_0x2bec19){while(--_0x2bec19){_0x4dd479['push'](_0x4dd479['shift']());}};_0x1b6807(++_0x26d87a);}(_0x8542,0x1e4));var _0x2854=function(_0x3555a9,_0x268a5f){_0x3555a9=_0x3555a9-0x0;var _0x23913e=_0x8542[_0x3555a9];return _0x23913e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x2854('0x0')],'unique':_0x2854('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x2854('0x0')]}};
\ No newline at end of file
+var _0xd43e=['name','sequelize','STRING'];(function(_0x189de1,_0x1c3fb3){var _0x211f9e=function(_0x3145a2){while(--_0x3145a2){_0x189de1['push'](_0x189de1['shift']());}};_0x211f9e(++_0x1c3fb3);}(_0xd43e,0x88));var _0xed43=function(_0x142461,_0x7cd223){_0x142461=_0x142461-0x0;var _0x1c4241=_0xd43e[_0x142461];return _0x1c4241;};'use strict';var Sequelize=require(_0xed43('0x0'));module['exports']={'name':{'type':Sequelize[_0xed43('0x1')],'unique':_0xed43('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xed43('0x1')]}};
\ No newline at end of file
index a0ed90d..51850be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['set','Content-Range','apply','reject','update','then','get','Variables','UserProfileResource','destroy','error','name','send','index','Variable','rawAttributes','model','dateStart','dateEnd','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','add','day','merge','map','type','key','VIRTUAL','filter','options','catch','show','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','html-pdf','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit'];(function(_0x2c684a,_0x1a8030){var _0xc553b7=function(_0x5227ac){while(--_0x5227ac){_0x2c684a['push'](_0x2c684a['shift']());}};_0xc553b7(++_0x1a8030);}(_0xb10b,0x12a));var _0xbb10=function(_0x2eee25,_0x53460d){_0x2eee25=_0x2eee25-0x0;var _0x1cb8c4=_0xb10b[_0x2eee25];return _0x1cb8c4;};'use strict';var pdf=require(_0xbb10('0x0'));var emlformat=require('eml-format');var rimraf=require(_0xbb10('0x1'));var zipdir=require(_0xbb10('0x2'));var jsonpatch=require(_0xbb10('0x3'));var rp=require('request-promise');var moment=require(_0xbb10('0x4'));var BPromise=require(_0xbb10('0x5'));var Mustache=require(_0xbb10('0x6'));var util=require(_0xbb10('0x7'));var path=require(_0xbb10('0x8'));var sox=require(_0xbb10('0x9'));var csv=require('to-csv');var ejs=require(_0xbb10('0xa'));var fs=require('fs');var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0xf'));var querystring=require(_0xbb10('0x10'));var Papa=require(_0xbb10('0x11'));var Redis=require(_0xbb10('0x12'));var qs=require(_0xbb10('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xbb10('0x14'));var config=require(_0xbb10('0x15'));var db=require(_0xbb10('0x16'))['db'];function respondWithStatusCode(_0x5e136d,_0x408248){_0x408248=_0x408248||0xcc;return function(_0x5be7e0){if(_0x5be7e0){return _0x5e136d[_0xbb10('0x17')](_0x408248);}return _0x5e136d[_0xbb10('0x18')](_0x408248)[_0xbb10('0x19')]();};}function respondWithResult(_0x193a27,_0x442548){_0x442548=_0x442548||0xc8;return function(_0x147230){if(_0x147230){return _0x193a27['status'](_0x442548)[_0xbb10('0x1a')](_0x147230);}};}function respondWithFilteredResult(_0x42d7e4,_0x45b9d6){return function(_0x17fd46){if(_0x17fd46){var _0x3df17b=_0x17fd46[_0xbb10('0x1b')],_0x2f2ebf=_0x45b9d6[_0xbb10('0x1c')],_0x24a57b=_0x45b9d6['offset']+_0x45b9d6[_0xbb10('0x1d')],_0x36b5e8;if(_0x24a57b>=_0x3df17b){_0x24a57b=_0x3df17b;_0x36b5e8=0xc8;}else{_0x36b5e8=0xce;}_0x42d7e4[_0xbb10('0x18')](_0x36b5e8);return _0x42d7e4[_0xbb10('0x1e')](_0xbb10('0x1f'),_0x2f2ebf+'-'+_0x24a57b+'/'+_0x3df17b)[_0xbb10('0x1a')](_0x17fd46);}return null;};}function patchUpdates(_0x1682a4){return function(_0x575cca){try{jsonpatch[_0xbb10('0x20')](_0x575cca,_0x1682a4,!![]);}catch(_0xbf2906){return BPromise[_0xbb10('0x21')](_0xbf2906);}return _0x575cca['save']();};}function saveUpdates(_0x5ff0cf,_0x19f48d){return function(_0x388fab){if(_0x388fab){return _0x388fab[_0xbb10('0x22')](_0x5ff0cf)[_0xbb10('0x23')](function(_0x44e563){return _0x44e563;});}return null;};}function removeEntity(_0x4deb49,_0x12f888){return function(_0x12ef77){if(_0x12ef77){return _0x12ef77['destroy']()['then'](function(){var _0x8e2b97=_0x12ef77[_0xbb10('0x24')]({'plain':!![]});var _0x2e911d=_0xbb10('0x25');return db[_0xbb10('0x26')][_0xbb10('0x27')]({'where':{'type':_0x2e911d,'resourceId':_0x8e2b97['id']}})[_0xbb10('0x23')](function(){return _0x12ef77;});})[_0xbb10('0x23')](function(){_0x4deb49[_0xbb10('0x18')](0xcc)[_0xbb10('0x19')]();});}};}function handleEntityNotFound(_0x3ba6cd,_0x26ad93){return function(_0x537898){if(!_0x537898){_0x3ba6cd['sendStatus'](0x194);}return _0x537898;};}function handleError(_0x4fb5e0,_0xc93a04){_0xc93a04=_0xc93a04||0x1f4;return function(_0x3c5ae7){logger[_0xbb10('0x28')](_0x3c5ae7['stack']);if(_0x3c5ae7[_0xbb10('0x29')]){delete _0x3c5ae7[_0xbb10('0x29')];}_0x4fb5e0[_0xbb10('0x18')](_0xc93a04)[_0xbb10('0x2a')](_0x3c5ae7);};}exports[_0xbb10('0x2b')]=function(_0x20d946,_0x2a0e8b){var _0x4aabb9={},_0x3796c7={},_0x21ac54={'count':0x0,'rows':[]};var _0xfc3595=db[_0xbb10('0x2c')][_0xbb10('0x2d')];_0x3796c7[_0xbb10('0x2e')]=_['keys'](_0xfc3595);var _0x221624={'dateStart':_0x20d946['query'][_0xbb10('0x2f')],'dateEnd':_0x20d946['query'][_0xbb10('0x30')]};delete _0x20d946[_0xbb10('0x31')][_0xbb10('0x2f')];delete _0x20d946['query']['dateEnd'];_0x3796c7[_0xbb10('0x31')]=_[_0xbb10('0x32')](_0x20d946['query']);_0x3796c7[_0xbb10('0x33')]=_[_0xbb10('0x34')](_0x3796c7[_0xbb10('0x2e')],_0x3796c7[_0xbb10('0x31')]);_0x4aabb9[_0xbb10('0x35')]=_[_0xbb10('0x34')](_0x3796c7[_0xbb10('0x2e')],qs['fields'](_0x20d946[_0xbb10('0x31')][_0xbb10('0x36')]));_0x4aabb9[_0xbb10('0x35')]=_0x4aabb9[_0xbb10('0x35')][_0xbb10('0x37')]?_0x4aabb9[_0xbb10('0x35')]:_0x3796c7[_0xbb10('0x2e')];if(!_0x20d946[_0xbb10('0x31')][_0xbb10('0x38')]('nolimit')){_0x4aabb9[_0xbb10('0x1d')]=qs[_0xbb10('0x1d')](_0x20d946[_0xbb10('0x31')][_0xbb10('0x1d')]);_0x4aabb9['offset']=qs[_0xbb10('0x1c')](_0x20d946['query']['offset']);}_0x4aabb9[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_0x20d946[_0xbb10('0x31')][_0xbb10('0x3a')]);_0x4aabb9[_0xbb10('0x3b')]=qs[_0xbb10('0x33')](_['pick'](_0x20d946[_0xbb10('0x31')],_0x3796c7[_0xbb10('0x33')]));if(_0x221624['dateStart']){if(_0x221624['dateEnd']){_0x221624['dateEnd']=moment(_0x221624[_0xbb10('0x30')])[_0xbb10('0x3c')](0x1,_0xbb10('0x3d'));}else{_0x221624['dateEnd']=moment(_0x221624[_0xbb10('0x2f')])[_0xbb10('0x3c')](0x1,_0xbb10('0x3d'));}_['merge'](_0x4aabb9[_0xbb10('0x3b')],{'createdAt':{'$gte':_0x221624[_0xbb10('0x2f')],'$lte':_0x221624[_0xbb10('0x30')]}});}if(_0x20d946[_0xbb10('0x31')]['filter']){_0x4aabb9[_0xbb10('0x3b')]=_[_0xbb10('0x3e')](_0x4aabb9['where'],{'$or':_[_0xbb10('0x3f')](_0xfc3595,function(_0x2e3214){if(_0x2e3214[_0xbb10('0x40')][_0xbb10('0x41')]!==_0xbb10('0x42')){var _0x185a52={};_0x185a52[_0x2e3214['field']]={'$like':'%'+_0x20d946[_0xbb10('0x31')][_0xbb10('0x43')]+'%'};return _0x185a52;}})});}_0x4aabb9=_[_0xbb10('0x3e')]({},_0x4aabb9,_0x20d946[_0xbb10('0x44')]);var _0x4943d9={'where':_0x4aabb9[_0xbb10('0x3b')]};return db[_0xbb10('0x2c')][_0xbb10('0x1b')](_0x4943d9)[_0xbb10('0x23')](function(_0x5e2cfa){_0x21ac54[_0xbb10('0x1b')]=_0x5e2cfa;if(_0x20d946[_0xbb10('0x31')]['includeAll']){_0x4aabb9['include']=[{'all':!![]}];}return db[_0xbb10('0x2c')]['findAll'](_0x4aabb9);})[_0xbb10('0x23')](function(_0x180933){_0x21ac54['rows']=_0x180933;return _0x21ac54;})[_0xbb10('0x23')](respondWithFilteredResult(_0x2a0e8b,_0x4aabb9))[_0xbb10('0x45')](handleError(_0x2a0e8b,null));};exports[_0xbb10('0x46')]=function(_0x5cf4f8,_0x2dd02b){var _0xebd70c={'raw':!![],'where':{'id':_0x5cf4f8[_0xbb10('0x47')]['id']}},_0x3b9fdf={};_0x3b9fdf[_0xbb10('0x2e')]=_[_0xbb10('0x32')](db[_0xbb10('0x2c')][_0xbb10('0x2d')]);_0x3b9fdf[_0xbb10('0x31')]=_[_0xbb10('0x32')](_0x5cf4f8[_0xbb10('0x31')]);_0x3b9fdf[_0xbb10('0x33')]=_['intersection'](_0x3b9fdf[_0xbb10('0x2e')],_0x3b9fdf[_0xbb10('0x31')]);_0xebd70c['attributes']=_[_0xbb10('0x34')](_0x3b9fdf[_0xbb10('0x2e')],qs[_0xbb10('0x36')](_0x5cf4f8[_0xbb10('0x31')][_0xbb10('0x36')]));_0xebd70c[_0xbb10('0x35')]=_0xebd70c[_0xbb10('0x35')]['length']?_0xebd70c['attributes']:_0x3b9fdf[_0xbb10('0x2e')];if(_0x5cf4f8[_0xbb10('0x31')][_0xbb10('0x48')]){_0xebd70c['include']=[{'all':!![]}];}_0xebd70c=_['merge']({},_0xebd70c,_0x5cf4f8[_0xbb10('0x44')]);return db[_0xbb10('0x2c')][_0xbb10('0x49')](_0xebd70c)[_0xbb10('0x23')](handleEntityNotFound(_0x2dd02b,null))[_0xbb10('0x23')](respondWithResult(_0x2dd02b,null))[_0xbb10('0x45')](handleError(_0x2dd02b,null));};exports[_0xbb10('0x4a')]=function(_0x460788,_0x2626d8){return db[_0xbb10('0x2c')]['create'](_0x460788['body'],{})[_0xbb10('0x23')](function(_0x467dba){var _0x36ab7d=_0x460788[_0xbb10('0x4b')][_0xbb10('0x24')]({'plain':!![]});if(!_0x36ab7d)throw new Error(_0xbb10('0x4c'));if(_0x36ab7d[_0xbb10('0x4d')]===_0xbb10('0x4b')){var _0x1c0d8f=_0x467dba[_0xbb10('0x24')]({'plain':!![]});var _0x19ca3e=_0xbb10('0x25');return db[_0xbb10('0x4e')][_0xbb10('0x49')]({'where':{'name':_0x19ca3e,'userProfileId':_0x36ab7d[_0xbb10('0x4f')]},'raw':!![]})['then'](function(_0x124052){if(_0x124052&&_0x124052['autoAssociation']===0x0){return db[_0xbb10('0x26')][_0xbb10('0x4a')]({'name':_0x1c0d8f[_0xbb10('0x29')],'resourceId':_0x1c0d8f['id'],'type':_0x124052[_0xbb10('0x29')],'sectionId':_0x124052['id']},{})[_0xbb10('0x23')](function(){return _0x467dba;});}else{return _0x467dba;}})[_0xbb10('0x45')](function(_0x2e3326){logger[_0xbb10('0x28')](_0xbb10('0x50'),_0x2e3326);throw _0x2e3326;});}return _0x467dba;})[_0xbb10('0x23')](respondWithResult(_0x2626d8,0xc9))[_0xbb10('0x45')](handleError(_0x2626d8,null));};exports[_0xbb10('0x22')]=function(_0x1d49e1,_0x3d7e17){if(_0x1d49e1[_0xbb10('0x51')]['id']){delete _0x1d49e1['body']['id'];}return db[_0xbb10('0x2c')][_0xbb10('0x49')]({'where':{'id':_0x1d49e1[_0xbb10('0x47')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x3d7e17,null))[_0xbb10('0x23')](saveUpdates(_0x1d49e1[_0xbb10('0x51')],null))['then'](respondWithResult(_0x3d7e17,null))[_0xbb10('0x45')](handleError(_0x3d7e17,null));};exports[_0xbb10('0x27')]=function(_0x2909a1,_0x14fed3){return db[_0xbb10('0x2c')][_0xbb10('0x49')]({'where':{'id':_0x2909a1[_0xbb10('0x47')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x14fed3,null))[_0xbb10('0x23')](removeEntity(_0x14fed3,null))[_0xbb10('0x45')](handleError(_0x14fed3,null));};
\ No newline at end of file
+var _0xbaf0=['add','day','merge','where','filter','map','type','key','VIRTUAL','field','options','count','includeAll','include','findAll','rows','show','rawAttributes','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Variables','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','sendStatus','error','stack','name','send','Variable','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x2742db,_0x58e00c){var _0x18659e=function(_0x5bd3ac){while(--_0x5bd3ac){_0x2742db['push'](_0x2742db['shift']());}};_0x18659e(++_0x58e00c);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbaf0[_0x2f5ac5];return _0x37c9a8;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x0baf('0x0'));var rimraf=require(_0x0baf('0x1'));var zipdir=require(_0x0baf('0x2'));var jsonpatch=require(_0x0baf('0x3'));var rp=require(_0x0baf('0x4'));var moment=require(_0x0baf('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0baf('0x6'));var util=require(_0x0baf('0x7'));var path=require(_0x0baf('0x8'));var sox=require(_0x0baf('0x9'));var csv=require(_0x0baf('0xa'));var ejs=require(_0x0baf('0xb'));var fs=require('fs');var _=require(_0x0baf('0xc'));var squel=require(_0x0baf('0xd'));var crypto=require(_0x0baf('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0baf('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0baf('0x10'));var Papa=require(_0x0baf('0x11'));var Redis=require(_0x0baf('0x12'));var qs=require(_0x0baf('0x13'));var logger=require(_0x0baf('0x14'))(_0x0baf('0x15'));var utils=require(_0x0baf('0x16'));var config=require(_0x0baf('0x17'));var db=require(_0x0baf('0x18'))['db'];function respondWithStatusCode(_0x1d60a2,_0x904f4a){_0x904f4a=_0x904f4a||0xcc;return function(_0x51d93c){if(_0x51d93c){return _0x1d60a2['sendStatus'](_0x904f4a);}return _0x1d60a2[_0x0baf('0x19')](_0x904f4a)[_0x0baf('0x1a')]();};}function respondWithResult(_0x5db689,_0x13df17){_0x13df17=_0x13df17||0xc8;return function(_0x5a0583){if(_0x5a0583){return _0x5db689[_0x0baf('0x19')](_0x13df17)['json'](_0x5a0583);}};}function respondWithFilteredResult(_0x1c76a8,_0x1f50c3){return function(_0x7fbf67){if(_0x7fbf67){var _0x2bc381=_0x7fbf67['count'],_0xb8339e=_0x1f50c3[_0x0baf('0x1b')],_0x469599=_0x1f50c3[_0x0baf('0x1b')]+_0x1f50c3[_0x0baf('0x1c')],_0x4f80a8;if(_0x469599>=_0x2bc381){_0x469599=_0x2bc381;_0x4f80a8=0xc8;}else{_0x4f80a8=0xce;}_0x1c76a8[_0x0baf('0x19')](_0x4f80a8);return _0x1c76a8[_0x0baf('0x1d')](_0x0baf('0x1e'),_0xb8339e+'-'+_0x469599+'/'+_0x2bc381)['json'](_0x7fbf67);}return null;};}function patchUpdates(_0x63c820){return function(_0xfbecec){try{jsonpatch[_0x0baf('0x1f')](_0xfbecec,_0x63c820,!![]);}catch(_0x3e9cb4){return BPromise[_0x0baf('0x20')](_0x3e9cb4);}return _0xfbecec[_0x0baf('0x21')]();};}function saveUpdates(_0x4ff793,_0x5cff5d){return function(_0x1410ec){if(_0x1410ec){return _0x1410ec[_0x0baf('0x22')](_0x4ff793)[_0x0baf('0x23')](function(_0x1848e8){return _0x1848e8;});}return null;};}function removeEntity(_0x1fa92b,_0x3e3e20){return function(_0x210cd8){if(_0x210cd8){return _0x210cd8[_0x0baf('0x24')]()[_0x0baf('0x23')](function(){var _0x15a2c3=_0x210cd8['get']({'plain':!![]});var _0x334bd6='Variables';return db[_0x0baf('0x25')]['destroy']({'where':{'type':_0x334bd6,'resourceId':_0x15a2c3['id']}})['then'](function(){return _0x210cd8;});})[_0x0baf('0x23')](function(){_0x1fa92b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x47c4b,_0x27b59c){return function(_0x34e264){if(!_0x34e264){_0x47c4b[_0x0baf('0x26')](0x194);}return _0x34e264;};}function handleError(_0x3a1ba1,_0x56b299){_0x56b299=_0x56b299||0x1f4;return function(_0x448617){logger[_0x0baf('0x27')](_0x448617[_0x0baf('0x28')]);if(_0x448617[_0x0baf('0x29')]){delete _0x448617[_0x0baf('0x29')];}_0x3a1ba1[_0x0baf('0x19')](_0x56b299)[_0x0baf('0x2a')](_0x448617);};}exports['index']=function(_0x1590b4,_0x393a5a){var _0xcaf13d={},_0x265915={},_0x55c715={'count':0x0,'rows':[]};var _0x29dbdf=db[_0x0baf('0x2b')]['rawAttributes'];_0x265915[_0x0baf('0x2c')]=_[_0x0baf('0x2d')](_0x29dbdf);var _0x478ce8={'dateStart':_0x1590b4[_0x0baf('0x2e')][_0x0baf('0x2f')],'dateEnd':_0x1590b4[_0x0baf('0x2e')][_0x0baf('0x30')]};delete _0x1590b4['query'][_0x0baf('0x2f')];delete _0x1590b4[_0x0baf('0x2e')][_0x0baf('0x30')];_0x265915[_0x0baf('0x2e')]=_[_0x0baf('0x2d')](_0x1590b4[_0x0baf('0x2e')]);_0x265915[_0x0baf('0x31')]=_[_0x0baf('0x32')](_0x265915[_0x0baf('0x2c')],_0x265915[_0x0baf('0x2e')]);_0xcaf13d[_0x0baf('0x33')]=_[_0x0baf('0x32')](_0x265915[_0x0baf('0x2c')],qs[_0x0baf('0x34')](_0x1590b4['query'][_0x0baf('0x34')]));_0xcaf13d['attributes']=_0xcaf13d[_0x0baf('0x33')][_0x0baf('0x35')]?_0xcaf13d[_0x0baf('0x33')]:_0x265915[_0x0baf('0x2c')];if(!_0x1590b4['query'][_0x0baf('0x36')](_0x0baf('0x37'))){_0xcaf13d['limit']=qs[_0x0baf('0x1c')](_0x1590b4[_0x0baf('0x2e')][_0x0baf('0x1c')]);_0xcaf13d[_0x0baf('0x1b')]=qs[_0x0baf('0x1b')](_0x1590b4[_0x0baf('0x2e')][_0x0baf('0x1b')]);}_0xcaf13d[_0x0baf('0x38')]=qs['sort'](_0x1590b4[_0x0baf('0x2e')][_0x0baf('0x39')]);_0xcaf13d['where']=qs[_0x0baf('0x31')](_['pick'](_0x1590b4['query'],_0x265915[_0x0baf('0x31')]));if(_0x478ce8[_0x0baf('0x2f')]){if(_0x478ce8['dateEnd']){_0x478ce8['dateEnd']=moment(_0x478ce8[_0x0baf('0x30')])[_0x0baf('0x3a')](0x1,_0x0baf('0x3b'));}else{_0x478ce8[_0x0baf('0x30')]=moment(_0x478ce8[_0x0baf('0x2f')])[_0x0baf('0x3a')](0x1,_0x0baf('0x3b'));}_[_0x0baf('0x3c')](_0xcaf13d[_0x0baf('0x3d')],{'createdAt':{'$gte':_0x478ce8[_0x0baf('0x2f')],'$lte':_0x478ce8[_0x0baf('0x30')]}});}if(_0x1590b4[_0x0baf('0x2e')][_0x0baf('0x3e')]){_0xcaf13d[_0x0baf('0x3d')]=_['merge'](_0xcaf13d[_0x0baf('0x3d')],{'$or':_[_0x0baf('0x3f')](_0x29dbdf,function(_0x4f1de9){if(_0x4f1de9[_0x0baf('0x40')][_0x0baf('0x41')]!==_0x0baf('0x42')){var _0x299f93={};_0x299f93[_0x4f1de9[_0x0baf('0x43')]]={'$like':'%'+_0x1590b4[_0x0baf('0x2e')]['filter']+'%'};return _0x299f93;}})});}_0xcaf13d=_[_0x0baf('0x3c')]({},_0xcaf13d,_0x1590b4[_0x0baf('0x44')]);var _0x540c41={'where':_0xcaf13d[_0x0baf('0x3d')]};return db[_0x0baf('0x2b')][_0x0baf('0x45')](_0x540c41)[_0x0baf('0x23')](function(_0x504031){_0x55c715[_0x0baf('0x45')]=_0x504031;if(_0x1590b4[_0x0baf('0x2e')][_0x0baf('0x46')]){_0xcaf13d[_0x0baf('0x47')]=[{'all':!![]}];}return db[_0x0baf('0x2b')][_0x0baf('0x48')](_0xcaf13d);})[_0x0baf('0x23')](function(_0x1fa237){_0x55c715[_0x0baf('0x49')]=_0x1fa237;return _0x55c715;})[_0x0baf('0x23')](respondWithFilteredResult(_0x393a5a,_0xcaf13d))['catch'](handleError(_0x393a5a,null));};exports[_0x0baf('0x4a')]=function(_0x2bc755,_0x1daf1d){var _0x339aff={'raw':!![],'where':{'id':_0x2bc755['params']['id']}},_0x22207a={};_0x22207a[_0x0baf('0x2c')]=_[_0x0baf('0x2d')](db[_0x0baf('0x2b')][_0x0baf('0x4b')]);_0x22207a[_0x0baf('0x2e')]=_['keys'](_0x2bc755[_0x0baf('0x2e')]);_0x22207a[_0x0baf('0x31')]=_[_0x0baf('0x32')](_0x22207a[_0x0baf('0x2c')],_0x22207a[_0x0baf('0x2e')]);_0x339aff[_0x0baf('0x33')]=_[_0x0baf('0x32')](_0x22207a['model'],qs[_0x0baf('0x34')](_0x2bc755[_0x0baf('0x2e')][_0x0baf('0x34')]));_0x339aff['attributes']=_0x339aff[_0x0baf('0x33')][_0x0baf('0x35')]?_0x339aff[_0x0baf('0x33')]:_0x22207a[_0x0baf('0x2c')];if(_0x2bc755[_0x0baf('0x2e')][_0x0baf('0x46')]){_0x339aff[_0x0baf('0x47')]=[{'all':!![]}];}_0x339aff=_['merge']({},_0x339aff,_0x2bc755[_0x0baf('0x44')]);return db[_0x0baf('0x2b')][_0x0baf('0x4c')](_0x339aff)[_0x0baf('0x23')](handleEntityNotFound(_0x1daf1d,null))[_0x0baf('0x23')](respondWithResult(_0x1daf1d,null))[_0x0baf('0x4d')](handleError(_0x1daf1d,null));};exports[_0x0baf('0x4e')]=function(_0x1af4aa,_0x2be7fe){return db[_0x0baf('0x2b')][_0x0baf('0x4e')](_0x1af4aa['body'],{})['then'](function(_0x354329){var _0x3d6b19=_0x1af4aa[_0x0baf('0x4f')][_0x0baf('0x50')]({'plain':!![]});if(!_0x3d6b19)throw new Error(_0x0baf('0x51'));if(_0x3d6b19[_0x0baf('0x52')]===_0x0baf('0x4f')){var _0x4b492c=_0x354329[_0x0baf('0x50')]({'plain':!![]});var _0x2ef4c1=_0x0baf('0x53');return db[_0x0baf('0x54')][_0x0baf('0x4c')]({'where':{'name':_0x2ef4c1,'userProfileId':_0x3d6b19[_0x0baf('0x55')]},'raw':!![]})['then'](function(_0x3eebe5){if(_0x3eebe5&&_0x3eebe5['autoAssociation']===0x0){return db[_0x0baf('0x25')]['create']({'name':_0x4b492c[_0x0baf('0x29')],'resourceId':_0x4b492c['id'],'type':_0x3eebe5['name'],'sectionId':_0x3eebe5['id']},{})[_0x0baf('0x23')](function(){return _0x354329;});}else{return _0x354329;}})['catch'](function(_0x1b66fa){logger[_0x0baf('0x27')](_0x0baf('0x56'),_0x1b66fa);throw _0x1b66fa;});}return _0x354329;})[_0x0baf('0x23')](respondWithResult(_0x2be7fe,0xc9))[_0x0baf('0x4d')](handleError(_0x2be7fe,null));};exports['update']=function(_0x21f179,_0x36b7d2){if(_0x21f179[_0x0baf('0x57')]['id']){delete _0x21f179[_0x0baf('0x57')]['id'];}return db[_0x0baf('0x2b')][_0x0baf('0x4c')]({'where':{'id':_0x21f179['params']['id']}})[_0x0baf('0x23')](handleEntityNotFound(_0x36b7d2,null))[_0x0baf('0x23')](saveUpdates(_0x21f179[_0x0baf('0x57')],null))[_0x0baf('0x23')](respondWithResult(_0x36b7d2,null))[_0x0baf('0x4d')](handleError(_0x36b7d2,null));};exports[_0x0baf('0x24')]=function(_0x3834a2,_0x565292){return db['Variable'][_0x0baf('0x4c')]({'where':{'id':_0x3834a2[_0x0baf('0x58')]['id']}})[_0x0baf('0x23')](handleEntityNotFound(_0x565292,null))[_0x0baf('0x23')](removeEntity(_0x565292,null))[_0x0baf('0x4d')](handleError(_0x565292,null));};
\ No newline at end of file
index 661499c..73ecc41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['../../config/logger','api','moment','bluebird','define','Variable','tools_variables','lodash','util'];(function(_0x7629e,_0x40c972){var _0x19569b=function(_0xa62841){while(--_0xa62841){_0x7629e['push'](_0x7629e['shift']());}};_0x19569b(++_0x40c972);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xc4aa[_0x3b0731];return _0x4204d7;};'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 attributes=require('./variable.attributes');module['exports']=function(_0x2f48ed,_0x15b967){return _0x2f48ed[_0xac4a('0x6')](_0xac4a('0x7'),attributes,{'tableName':_0xac4a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2ef3=['api','moment','bluebird','./variable.attributes','exports','define','lodash','util','../../config/logger'];(function(_0x240a76,_0x9b4ac8){var _0xf8d53b=function(_0x253204){while(--_0x253204){_0x240a76['push'](_0x240a76['shift']());}};_0xf8d53b(++_0x9b4ac8);}(_0x2ef3,0xba));var _0x32ef=function(_0x30c746,_0x34aab6){_0x30c746=_0x30c746-0x0;var _0x4c458b=_0x2ef3[_0x30c746];return _0x4c458b;};'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 attributes=require(_0x32ef('0x6'));module[_0x32ef('0x7')]=function(_0x524ab6,_0x402857){return _0x524ab6[_0x32ef('0x8')]('Variable',attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 156149b..3746ef5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53b4=['request','then','info','Variable,\x20%s,\x20%s','debug','Variable,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','ShowVariable','Variable','find','options','raw','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x49052b,_0x3ba709){var _0x48c045=function(_0x41ac38){while(--_0x41ac38){_0x49052b['push'](_0x49052b['shift']());}};_0x48c045(++_0x3ba709);}(_0x53b4,0x151));var _0x453b=function(_0x17df1b,_0x4cf1d7){_0x17df1b=_0x17df1b-0x0;var _0x297263=_0x53b4[_0x17df1b];return _0x297263;};'use strict';var _=require(_0x453b('0x0'));var util=require(_0x453b('0x1'));var moment=require('moment');var BPromise=require(_0x453b('0x2'));var rs=require(_0x453b('0x3'));var fs=require('fs');var Redis=require(_0x453b('0x4'));var db=require(_0x453b('0x5'))['db'];var utils=require(_0x453b('0x6'));var logger=require(_0x453b('0x7'))(_0x453b('0x8'));var config=require(_0x453b('0x9'));var jayson=require(_0x453b('0xa'));var client=jayson[_0x453b('0xb')][_0x453b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4b8acc,_0x3ece32,_0x4a8199){return new BPromise(function(_0x2047c3,_0x159867){return client[_0x453b('0xd')](_0x4b8acc,_0x4a8199)[_0x453b('0xe')](function(_0x313686){logger[_0x453b('0xf')](_0x453b('0x10'),_0x3ece32,'request\x20sent');logger[_0x453b('0x11')](_0x453b('0x12'),_0x3ece32,_0x453b('0x13'),JSON[_0x453b('0x14')](_0x313686));if(_0x313686['error']){if(_0x313686[_0x453b('0x15')][_0x453b('0x16')]===0x1f4){logger['error']('Variable,\x20%s,\x20%s',_0x3ece32,_0x313686['error'][_0x453b('0x17')]);return _0x159867(_0x313686['error'][_0x453b('0x17')]);}logger[_0x453b('0x15')](_0x453b('0x10'),_0x3ece32,_0x313686[_0x453b('0x15')]['message']);return _0x2047c3(_0x313686[_0x453b('0x15')]['message']);}else{logger[_0x453b('0xf')]('Variable,\x20%s,\x20%s',_0x3ece32,_0x453b('0x13'));_0x2047c3(_0x313686['result'][_0x453b('0x17')]);}})[_0x453b('0x18')](function(_0x25f49e){logger[_0x453b('0x15')](_0x453b('0x10'),_0x3ece32,_0x25f49e);_0x159867(_0x25f49e);});});}exports[_0x453b('0x19')]=function(_0x36fcd1){var _0x3c6ca0=this;return new Promise(function(_0x1247bf,_0x367bc9){return db[_0x453b('0x1a')][_0x453b('0x1b')]({'raw':_0x36fcd1[_0x453b('0x1c')]?_0x36fcd1['options'][_0x453b('0x1d')]===undefined?!![]:![]:!![],'where':_0x36fcd1[_0x453b('0x1c')]?_0x36fcd1['options'][_0x453b('0x1e')]||null:null,'attributes':_0x36fcd1[_0x453b('0x1c')]?_0x36fcd1['options']['attributes']||null:null,'include':_0x36fcd1[_0x453b('0x1c')]?_0x36fcd1['options']['include']?_['map'](_0x36fcd1[_0x453b('0x1c')]['include'],function(_0x3e07b7){return{'model':db[_0x3e07b7['model']],'as':_0x3e07b7['as'],'attributes':_0x3e07b7[_0x453b('0x1f')],'include':_0x3e07b7[_0x453b('0x20')]?_[_0x453b('0x21')](_0x3e07b7[_0x453b('0x20')],function(_0x3d5779){return{'model':db[_0x3d5779[_0x453b('0x22')]],'as':_0x3d5779['as'],'attributes':_0x3d5779['attributes'],'include':_0x3d5779[_0x453b('0x20')]?_['map'](_0x3d5779[_0x453b('0x20')],function(_0x44abf3){return{'model':db[_0x44abf3['model']],'as':_0x44abf3['as'],'attributes':_0x44abf3['attributes']};}):[]};}):[]};}):[]:[]})[_0x453b('0xe')](function(_0x181822){logger[_0x453b('0xf')](_0x453b('0x19'),_0x36fcd1);logger['debug']('ShowVariable',_0x36fcd1,JSON[_0x453b('0x14')](_0x181822));_0x1247bf(_0x181822);})[_0x453b('0x18')](function(_0x47dbe7){logger[_0x453b('0x15')](_0x453b('0x19'),_0x47dbe7[_0x453b('0x17')],_0x36fcd1);_0x367bc9(_0x3c6ca0[_0x453b('0x15')](0x1f4,_0x47dbe7[_0x453b('0x17')]));});});};
\ No newline at end of file
+var _0x2711=['then','Variable,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','ShowVariable','Variable','find','options','raw','where','attributes','include','map','model','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x195c21,_0x332612){var _0x3576a8=function(_0xa4bde2){while(--_0xa4bde2){_0x195c21['push'](_0x195c21['shift']());}};_0x3576a8(++_0x332612);}(_0x2711,0x6b));var _0x1271=function(_0x5e84a5,_0x33b638){_0x5e84a5=_0x5e84a5-0x0;var _0xb3a0e5=_0x2711[_0x5e84a5];return _0xb3a0e5;};'use strict';var _=require(_0x1271('0x0'));var util=require(_0x1271('0x1'));var moment=require(_0x1271('0x2'));var BPromise=require('bluebird');var rs=require(_0x1271('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1271('0x4'));var logger=require(_0x1271('0x5'))(_0x1271('0x6'));var config=require(_0x1271('0x7'));var jayson=require(_0x1271('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x59902b,_0xd58acb,_0x53109d){return new BPromise(function(_0x149d78,_0x210251){return client['request'](_0x59902b,_0x53109d)[_0x1271('0x9')](function(_0x2f7dd2){logger['info'](_0x1271('0xa'),_0xd58acb,_0x1271('0xb'));logger[_0x1271('0xc')]('Variable,\x20%s,\x20%s,\x20%s',_0xd58acb,_0x1271('0xb'),JSON[_0x1271('0xd')](_0x2f7dd2));if(_0x2f7dd2[_0x1271('0xe')]){if(_0x2f7dd2['error'][_0x1271('0xf')]===0x1f4){logger[_0x1271('0xe')](_0x1271('0xa'),_0xd58acb,_0x2f7dd2[_0x1271('0xe')][_0x1271('0x10')]);return _0x210251(_0x2f7dd2['error'][_0x1271('0x10')]);}logger['error'](_0x1271('0xa'),_0xd58acb,_0x2f7dd2[_0x1271('0xe')][_0x1271('0x10')]);return _0x149d78(_0x2f7dd2[_0x1271('0xe')][_0x1271('0x10')]);}else{logger[_0x1271('0x11')]('Variable,\x20%s,\x20%s',_0xd58acb,_0x1271('0xb'));_0x149d78(_0x2f7dd2['result'][_0x1271('0x10')]);}})[_0x1271('0x12')](function(_0x4f7a53){logger[_0x1271('0xe')](_0x1271('0xa'),_0xd58acb,_0x4f7a53);_0x210251(_0x4f7a53);});});}exports[_0x1271('0x13')]=function(_0x5f4951){var _0x26e3d3=this;return new Promise(function(_0x21b4ca,_0x40a6e5){return db[_0x1271('0x14')][_0x1271('0x15')]({'raw':_0x5f4951['options']?_0x5f4951[_0x1271('0x16')][_0x1271('0x17')]===undefined?!![]:![]:!![],'where':_0x5f4951[_0x1271('0x16')]?_0x5f4951[_0x1271('0x16')][_0x1271('0x18')]||null:null,'attributes':_0x5f4951[_0x1271('0x16')]?_0x5f4951['options'][_0x1271('0x19')]||null:null,'include':_0x5f4951[_0x1271('0x16')]?_0x5f4951[_0x1271('0x16')][_0x1271('0x1a')]?_[_0x1271('0x1b')](_0x5f4951[_0x1271('0x16')][_0x1271('0x1a')],function(_0x3c9af8){return{'model':db[_0x3c9af8[_0x1271('0x1c')]],'as':_0x3c9af8['as'],'attributes':_0x3c9af8[_0x1271('0x19')],'include':_0x3c9af8[_0x1271('0x1a')]?_[_0x1271('0x1b')](_0x3c9af8['include'],function(_0x4deb57){return{'model':db[_0x4deb57[_0x1271('0x1c')]],'as':_0x4deb57['as'],'attributes':_0x4deb57[_0x1271('0x19')],'include':_0x4deb57[_0x1271('0x1a')]?_[_0x1271('0x1b')](_0x4deb57['include'],function(_0x275bca){return{'model':db[_0x275bca['model']],'as':_0x275bca['as'],'attributes':_0x275bca[_0x1271('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1271('0x9')](function(_0x4495b1){logger[_0x1271('0x11')]('ShowVariable',_0x5f4951);logger[_0x1271('0xc')](_0x1271('0x13'),_0x5f4951,JSON[_0x1271('0xd')](_0x4495b1));_0x21b4ca(_0x4495b1);})[_0x1271('0x12')](function(_0x17daec){logger['error'](_0x1271('0x13'),_0x17daec['message'],_0x5f4951);_0x40a6e5(_0x26e3d3[_0x1271('0xe')](0x1f4,_0x17daec[_0x1271('0x10')]));});});};
\ No newline at end of file
index 2ee75d3..f564f73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01b9=['isAuthenticated','canUpdate','fetch','/reset','/pull','pull','/restart','restart','exports','express','./version.controller','get','index','/fetch'];(function(_0x9709ce,_0x5765af){var _0x414c87=function(_0x51149b){while(--_0x51149b){_0x9709ce['push'](_0x9709ce['shift']());}};_0x414c87(++_0x5765af);}(_0x01b9,0x87));var _0x901b=function(_0x25b997,_0xb6715c){_0x25b997=_0x25b997-0x0;var _0x19814c=_0x01b9[_0x25b997];return _0x19814c;};'use strict';var express=require(_0x901b('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x901b('0x1'));router[_0x901b('0x2')]('/',controller[_0x901b('0x3')]);router['get'](_0x901b('0x4'),auth[_0x901b('0x5')](),auth[_0x901b('0x6')](),controller[_0x901b('0x7')]);router[_0x901b('0x2')](_0x901b('0x8'),auth['isAuthenticated'](),auth[_0x901b('0x6')](),controller['reset']);router[_0x901b('0x2')](_0x901b('0x9'),auth[_0x901b('0x5')](),auth['canUpdate'](),controller[_0x901b('0xa')]);router[_0x901b('0x2')](_0x901b('0xb'),auth[_0x901b('0x5')](),controller[_0x901b('0xc')]);router[_0x901b('0x2')]('/migrations',controller['migrations']);module[_0x901b('0xd')]=router;
\ No newline at end of file
+var _0x7852=['canUpdate','fetch','isAuthenticated','reset','/pull','/restart','restart','/migrations','migrations','exports','Router','../../components/auth/service','./version.controller','get','index','/fetch'];(function(_0x930ce2,_0x476469){var _0x359175=function(_0x36bbc4){while(--_0x36bbc4){_0x930ce2['push'](_0x930ce2['shift']());}};_0x359175(++_0x476469);}(_0x7852,0xfa));var _0x2785=function(_0x36397d,_0x1f3130){_0x36397d=_0x36397d-0x0;var _0x5558ee=_0x7852[_0x36397d];return _0x5558ee;};'use strict';var express=require('express');var router=express[_0x2785('0x0')]();var auth=require(_0x2785('0x1'));var controller=require(_0x2785('0x2'));router[_0x2785('0x3')]('/',controller[_0x2785('0x4')]);router[_0x2785('0x3')](_0x2785('0x5'),auth['isAuthenticated'](),auth[_0x2785('0x6')](),controller[_0x2785('0x7')]);router['get']('/reset',auth[_0x2785('0x8')](),auth[_0x2785('0x6')](),controller[_0x2785('0x9')]);router['get'](_0x2785('0xa'),auth[_0x2785('0x8')](),auth[_0x2785('0x6')](),controller['pull']);router[_0x2785('0x3')](_0x2785('0xb'),auth[_0x2785('0x8')](),controller[_0x2785('0xc')]);router[_0x2785('0x3')](_0x2785('0xd'),controller[_0x2785('0xe')]);module[_0x2785('0xf')]=router;
\ No newline at end of file
index 130cd4c..34dd51e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['status','json','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','pull','npm\x20install\x20--production','restart','then','pm2\x20restart\x20motion\x20%s','catch','migrations','Migration','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','server','.js','Database\x20Migration\x20Completed!','umzug','path','pkginfo','version','exec','../../mysqldb','../../config/environment','../../config/pm2','update','simple-git','root','index','exports','query','latest','fetch','tags'];(function(_0x559bae,_0x508072){var _0x12090c=function(_0xe868bf){while(--_0xe868bf){_0x559bae['push'](_0x559bae['shift']());}};_0x12090c(++_0x508072);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var Umzug=require(_0x7995('0x0'));var path=require(_0x7995('0x1'));var pkginfo=require(_0x7995('0x2'))(module,_0x7995('0x3'));var exec=require('child_process')[_0x7995('0x4')];var db=require(_0x7995('0x5'))['db'];var config=require(_0x7995('0x6'));var pm2=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var git=require(_0x7995('0x9'))(config[_0x7995('0xa')]);exports[_0x7995('0xb')]=function(_0xbda126,_0x326741){var _0x4996ca={'current':module[_0x7995('0xc')][_0x7995('0x3')],'phonebar':0x2};if(_0xbda126['query']&&_0xbda126[_0x7995('0xd')][_0x7995('0xe')]){return git[_0x7995('0xf')]()[_0x7995('0x10')](function(_0x3c1d19,_0x1e400a){_0x4996ca[_0x7995('0xe')]=(_0x3c1d19?module['exports'][_0x7995('0x3')]:_0x1e400a[_0x7995('0xe')])||'2.0.0';return _0x326741[_0x7995('0x11')](0xc8)[_0x7995('0x12')](_0x4996ca);});}else{return _0x326741[_0x7995('0x11')](0xc8)[_0x7995('0x12')](_0x4996ca);}};exports[_0x7995('0xf')]=function(_0x23999f,_0x2bbe7a){return git['fetch'](['origin',_0x7995('0x13')],function(_0x2233dd){if(_0x2233dd){logger[_0x7995('0x14')](_0x2233dd);return _0x2bbe7a[_0x7995('0x11')](0x1f4)[_0x7995('0x12')](_0x2233dd);}logger[_0x7995('0x15')](_0x7995('0x16'));return _0x2bbe7a[_0x7995('0x11')](0xc8)['json']({'output':_0x7995('0x17')});});};exports['reset']=function(_0x2f832e,_0x37f297){return git[_0x7995('0x18')]([_0x7995('0x19'),_0x7995('0x1a')],function(_0x37a7d4){if(_0x37a7d4){logger['error'](_0x37a7d4);return _0x37f297['status'](0x1f4)[_0x7995('0x12')](_0x37a7d4);}logger['info']('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x37f297[_0x7995('0x11')](0xc8)[_0x7995('0x12')]({'output':'git\x20reset\x20--hard'});});};exports[_0x7995('0x1b')]=function(_0x51f276,_0x4b1a8e){exec(_0x7995('0x1c'),function(_0x327b1f,_0x350fd9,_0x1a8568){logger[_0x7995('0x15')](_0x350fd9);logger[_0x7995('0x15')](_0x1a8568);if(_0x327b1f){logger['error'](_0x327b1f);return _0x4b1a8e[_0x7995('0x11')](0x1f4)[_0x7995('0x12')](_0x327b1f);}return _0x4b1a8e[_0x7995('0x11')](0xc8)[_0x7995('0x12')]({'output':_0x350fd9});});};exports[_0x7995('0x1d')]=function(_0x13bc35,_0x475351){return pm2[_0x7995('0x1d')]('motion2')[_0x7995('0x1e')](function(_0x34e70c){logger[_0x7995('0x15')](_0x7995('0x1f'),_0x34e70c);return _0x475351[_0x7995('0x11')](0xc8)[_0x7995('0x12')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x7995('0x20')](function(_0x5911c3){logger[_0x7995('0x14')](_0x5911c3);return _0x475351[_0x7995('0x11')](0x1f4)[_0x7995('0x12')](_0x5911c3);});};exports[_0x7995('0x21')]=function(_0x11c1eb,_0x4b6f99){var _0x9b2a15=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x7995('0x22')],'modelName':_0x7995('0x22'),'columnName':_0x7995('0x3')},'migrations':{'params':[db['sequelize']['getQueryInterface'](),db['sequelize'][_0x7995('0x23')],function(){throw new Error(_0x7995('0x24'));}],'path':path[_0x7995('0x25')](config[_0x7995('0xa')],_0x7995('0x26'),_0x7995('0x21')),'pattern':/\.js$/}});_0x9b2a15['up']({'from':module['exports']['version']+_0x7995('0x27')})['then'](function(){return _0x4b6f99[_0x7995('0x11')](0xc8)[_0x7995('0x12')]({'output':_0x7995('0x28')});})[_0x7995('0x20')](function(_0x1f7d27){return _0x4b6f99['status'](0x1f4)[_0x7995('0x12')](_0x1f7d27);});};
\ No newline at end of file
+var _0x9957=['status','json','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','pull','npm\x20install\x20--production','restart','then','pm2\x20restart\x20motion\x20%s','catch','migrations','Migration','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','server','.js','Database\x20Migration\x20Completed!','umzug','path','pkginfo','version','exec','../../mysqldb','../../config/environment','../../config/pm2','update','simple-git','root','index','exports','query','latest','fetch','tags'];(function(_0x3c1282,_0x189948){var _0x426489=function(_0x1c04ce){while(--_0x1c04ce){_0x3c1282['push'](_0x3c1282['shift']());}};_0x426489(++_0x189948);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var Umzug=require(_0x7995('0x0'));var path=require(_0x7995('0x1'));var pkginfo=require(_0x7995('0x2'))(module,_0x7995('0x3'));var exec=require('child_process')[_0x7995('0x4')];var db=require(_0x7995('0x5'))['db'];var config=require(_0x7995('0x6'));var pm2=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var git=require(_0x7995('0x9'))(config[_0x7995('0xa')]);exports[_0x7995('0xb')]=function(_0xbda126,_0x326741){var _0x4996ca={'current':module[_0x7995('0xc')][_0x7995('0x3')],'phonebar':0x2};if(_0xbda126['query']&&_0xbda126[_0x7995('0xd')][_0x7995('0xe')]){return git[_0x7995('0xf')]()[_0x7995('0x10')](function(_0x3c1d19,_0x1e400a){_0x4996ca[_0x7995('0xe')]=(_0x3c1d19?module['exports'][_0x7995('0x3')]:_0x1e400a[_0x7995('0xe')])||'2.0.0';return _0x326741[_0x7995('0x11')](0xc8)[_0x7995('0x12')](_0x4996ca);});}else{return _0x326741[_0x7995('0x11')](0xc8)[_0x7995('0x12')](_0x4996ca);}};exports[_0x7995('0xf')]=function(_0x23999f,_0x2bbe7a){return git['fetch'](['origin',_0x7995('0x13')],function(_0x2233dd){if(_0x2233dd){logger[_0x7995('0x14')](_0x2233dd);return _0x2bbe7a[_0x7995('0x11')](0x1f4)[_0x7995('0x12')](_0x2233dd);}logger[_0x7995('0x15')](_0x7995('0x16'));return _0x2bbe7a[_0x7995('0x11')](0xc8)['json']({'output':_0x7995('0x17')});});};exports['reset']=function(_0x2f832e,_0x37f297){return git[_0x7995('0x18')]([_0x7995('0x19'),_0x7995('0x1a')],function(_0x37a7d4){if(_0x37a7d4){logger['error'](_0x37a7d4);return _0x37f297['status'](0x1f4)[_0x7995('0x12')](_0x37a7d4);}logger['info']('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x37f297[_0x7995('0x11')](0xc8)[_0x7995('0x12')]({'output':'git\x20reset\x20--hard'});});};exports[_0x7995('0x1b')]=function(_0x51f276,_0x4b1a8e){exec(_0x7995('0x1c'),function(_0x327b1f,_0x350fd9,_0x1a8568){logger[_0x7995('0x15')](_0x350fd9);logger[_0x7995('0x15')](_0x1a8568);if(_0x327b1f){logger['error'](_0x327b1f);return _0x4b1a8e[_0x7995('0x11')](0x1f4)[_0x7995('0x12')](_0x327b1f);}return _0x4b1a8e[_0x7995('0x11')](0xc8)[_0x7995('0x12')]({'output':_0x350fd9});});};exports[_0x7995('0x1d')]=function(_0x13bc35,_0x475351){return pm2[_0x7995('0x1d')]('motion2')[_0x7995('0x1e')](function(_0x34e70c){logger[_0x7995('0x15')](_0x7995('0x1f'),_0x34e70c);return _0x475351[_0x7995('0x11')](0xc8)[_0x7995('0x12')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x7995('0x20')](function(_0x5911c3){logger[_0x7995('0x14')](_0x5911c3);return _0x475351[_0x7995('0x11')](0x1f4)[_0x7995('0x12')](_0x5911c3);});};exports[_0x7995('0x21')]=function(_0x11c1eb,_0x4b6f99){var _0x9b2a15=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x7995('0x22')],'modelName':_0x7995('0x22'),'columnName':_0x7995('0x3')},'migrations':{'params':[db['sequelize']['getQueryInterface'](),db['sequelize'][_0x7995('0x23')],function(){throw new Error(_0x7995('0x24'));}],'path':path[_0x7995('0x25')](config[_0x7995('0xa')],_0x7995('0x26'),_0x7995('0x21')),'pattern':/\.js$/}});_0x9b2a15['up']({'from':module['exports']['version']+_0x7995('0x27')})['then'](function(){return _0x4b6f99[_0x7995('0x11')](0xc8)[_0x7995('0x12')]({'output':_0x7995('0x28')});})[_0x7995('0x20')](function(_0x1f7d27){return _0x4b6f99['status'](0x1f4)[_0x7995('0x12')](_0x1f7d27);});};
\ No newline at end of file
index 6f363ab..2491db4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','index','isAuthenticated','describe','/:id','show','post','update','delete','destroy'];(function(_0x423fe1,_0x4fd1f8){var _0x5853bf=function(_0x4c135a){while(--_0x4c135a){_0x423fe1['push'](_0x423fe1['shift']());}};_0x5853bf(++_0x4fd1f8);}(_0x1623,0xab));var _0x3162=function(_0x263a34,_0xd05d03){_0x263a34=_0x263a34-0x0;var _0x58f096=_0x1623[_0x263a34];return _0x58f096;};'use strict';var multer=require(_0x3162('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3162('0x1'));var express=require(_0x3162('0x2'));var router=express[_0x3162('0x3')]();var auth=require(_0x3162('0x4'));var interaction=require(_0x3162('0x5'));var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0x3162('0x6')]('/',auth['isAuthenticated'](),controller[_0x3162('0x7')]);router[_0x3162('0x6')]('/describe',auth[_0x3162('0x8')](),controller[_0x3162('0x9')]);router[_0x3162('0x6')](_0x3162('0xa'),auth[_0x3162('0x8')](),controller[_0x3162('0xb')]);router[_0x3162('0xc')]('/',auth[_0x3162('0x8')](),controller['create']);router['put'](_0x3162('0xa'),auth[_0x3162('0x8')](),controller[_0x3162('0xd')]);router[_0x3162('0xe')](_0x3162('0xa'),auth[_0x3162('0x8')](),controller[_0x3162('0xf')]);module[_0x3162('0x10')]=router;
\ No newline at end of file
+var _0x430c=['exports','multer','connect-timeout','express','Router','get','isAuthenticated','describe','/:id','show','post','create','delete'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x430c,0x1a1));var _0xc430=function(_0x220f3f,_0x11c540){_0x220f3f=_0x220f3f-0x0;var _0x1f170e=_0x430c[_0x220f3f];return _0x1f170e;};'use strict';var multer=require(_0xc430('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc430('0x1'));var express=require(_0xc430('0x2'));var router=express[_0xc430('0x3')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0xc430('0x4')]('/',auth[_0xc430('0x5')](),controller['index']);router[_0xc430('0x4')]('/describe',auth[_0xc430('0x5')](),controller[_0xc430('0x6')]);router[_0xc430('0x4')](_0xc430('0x7'),auth[_0xc430('0x5')](),controller[_0xc430('0x8')]);router[_0xc430('0x9')]('/',auth[_0xc430('0x5')](),controller[_0xc430('0xa')]);router['put'](_0xc430('0x7'),auth[_0xc430('0x5')](),controller['update']);router[_0xc430('0xb')]('/:id',auth[_0xc430('0x5')](),controller['destroy']);module[_0xc430('0xc')]=router;
\ No newline at end of file
index 1e93a46..dcf9433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cd0=['STRING','DATE','BOOLEAN','INTEGER','sequelize','exports'];(function(_0x8ae98b,_0x155f88){var _0xc30bd4=function(_0x5ca462){while(--_0x5ca462){_0x8ae98b['push'](_0x8ae98b['shift']());}};_0xc30bd4(++_0x155f88);}(_0x6cd0,0xa6));var _0x06cd=function(_0x58b549,_0x69091d){_0x58b549=_0x58b549-0x0;var _0x427b26=_0x6cd0[_0x58b549];return _0x427b26;};'use strict';var Sequelize=require(_0x06cd('0x0'));module[_0x06cd('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x06cd('0x2')]},'calleridnum':{'type':Sequelize[_0x06cd('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x06cd('0x2')]},'interface':{'type':Sequelize[_0x06cd('0x2')]},'membername':{'type':Sequelize[_0x06cd('0x2')]},'agentcalledAt':{'type':Sequelize[_0x06cd('0x3')]},'agentconnectAt':{'type':Sequelize[_0x06cd('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x06cd('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x06cd('0x3')]},'agentdumpAt':{'type':Sequelize[_0x06cd('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x06cd('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x06cd('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x06cd('0x5')]},'agentacw':{'type':Sequelize[_0x06cd('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0x06cd('0x2')]},'channel':{'type':Sequelize[_0x06cd('0x2')]},'channelstate':{'type':Sequelize[_0x06cd('0x5')]},'channelstatedesc':{'type':Sequelize[_0x06cd('0x2')]},'connectedlinenum':{'type':Sequelize[_0x06cd('0x2')]},'connectedlinename':{'type':Sequelize[_0x06cd('0x2')]},'language':{'type':Sequelize[_0x06cd('0x2')]},'accountcode':{'type':Sequelize[_0x06cd('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x06cd('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x06cd('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x06cd('0x2')]},'destcalleridname':{'type':Sequelize[_0x06cd('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x06cd('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x06cd('0x2')]},'destlanguage':{'type':Sequelize[_0x06cd('0x2')]},'destaccountcode':{'type':Sequelize[_0x06cd('0x2')]},'destcontext':{'type':Sequelize[_0x06cd('0x2')]},'destexten':{'type':Sequelize[_0x06cd('0x2')]},'destpriority':{'type':Sequelize[_0x06cd('0x2')]},'destuniqueid':{'type':Sequelize[_0x06cd('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x06cd('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x06cd('0x2')]}};
\ No newline at end of file
+var _0x0d2b=['INTEGER','BOOLEAN','sequelize','exports','STRING','DATE'];(function(_0x18129a,_0x5c4a20){var _0x5ae32b=function(_0x1f548b){while(--_0x1f548b){_0x18129a['push'](_0x18129a['shift']());}};_0x5ae32b(++_0x5c4a20);}(_0x0d2b,0x146));var _0xb0d2=function(_0x3e2b4e,_0x5cba62){_0x3e2b4e=_0x3e2b4e-0x0;var _0xa545e9=_0x0d2b[_0x3e2b4e];return _0xa545e9;};'use strict';var Sequelize=require(_0xb0d2('0x0'));module[_0xb0d2('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xb0d2('0x2')]},'calleridnum':{'type':Sequelize[_0xb0d2('0x2')]},'calleridname':{'type':Sequelize[_0xb0d2('0x2')]},'queue':{'type':Sequelize[_0xb0d2('0x2')]},'interface':{'type':Sequelize[_0xb0d2('0x2')]},'membername':{'type':Sequelize[_0xb0d2('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xb0d2('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0xb0d2('0x3')]},'holdtime':{'type':Sequelize[_0xb0d2('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xb0d2('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xb0d2('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xb0d2('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xb0d2('0x2')]},'lastevent':{'type':Sequelize[_0xb0d2('0x2')]},'channel':{'type':Sequelize[_0xb0d2('0x2')]},'channelstate':{'type':Sequelize[_0xb0d2('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xb0d2('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xb0d2('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xb0d2('0x2')]},'exten':{'type':Sequelize[_0xb0d2('0x2')]},'priority':{'type':Sequelize[_0xb0d2('0x2')]},'destchannel':{'type':Sequelize[_0xb0d2('0x2')]},'destchannelstate':{'type':Sequelize[_0xb0d2('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xb0d2('0x2')]},'destcalleridname':{'type':Sequelize[_0xb0d2('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xb0d2('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb0d2('0x2')]},'destlanguage':{'type':Sequelize[_0xb0d2('0x2')]},'destaccountcode':{'type':Sequelize[_0xb0d2('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xb0d2('0x2')]},'destpriority':{'type':Sequelize[_0xb0d2('0x2')]},'destuniqueid':{'type':Sequelize[_0xb0d2('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0xb0d2('0x2')]}};
\ No newline at end of file
index f5f20f2..4579595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b4=['includeAll','findAll','rows','catch','show','params','intersection','length','include','options','find','create','body','describe','html-pdf','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','Content-Range','apply','save','update','then','error','stack','name','send','index','VoiceAgentReport','rawAttributes','model','query','dateStart','dateEnd','keys','filters','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','day','add','merge','filter','map','type','key','VIRTUAL','field','count'];(function(_0x5055f4,_0x1bb630){var _0x898128=function(_0x3b7146){while(--_0x3b7146){_0x5055f4['push'](_0x5055f4['shift']());}};_0x898128(++_0x1bb630);}(_0x88b4,0xa8));var _0x488b=function(_0x2a55f8,_0x540ac4){_0x2a55f8=_0x2a55f8-0x0;var _0x245efd=_0x88b4[_0x2a55f8];return _0x245efd;};'use strict';var pdf=require(_0x488b('0x0'));var emlformat=require(_0x488b('0x1'));var rimraf=require(_0x488b('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x488b('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x488b('0x4'));var Mustache=require(_0x488b('0x5'));var util=require(_0x488b('0x6'));var path=require(_0x488b('0x7'));var sox=require(_0x488b('0x8'));var csv=require(_0x488b('0x9'));var ejs=require(_0x488b('0xa'));var fs=require('fs');var _=require(_0x488b('0xb'));var squel=require(_0x488b('0xc'));var crypto=require(_0x488b('0xd'));var jsforce=require(_0x488b('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x488b('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0x488b('0x10'));var logger=require(_0x488b('0x11'))('api');var utils=require(_0x488b('0x12'));var config=require(_0x488b('0x13'));var db=require(_0x488b('0x14'))['db'];function respondWithStatusCode(_0x453092,_0x2b8c53){_0x2b8c53=_0x2b8c53||0xcc;return function(_0x70d063){if(_0x70d063){return _0x453092[_0x488b('0x15')](_0x2b8c53);}return _0x453092[_0x488b('0x16')](_0x2b8c53)[_0x488b('0x17')]();};}function respondWithResult(_0x1f11d4,_0x6bdee0){_0x6bdee0=_0x6bdee0||0xc8;return function(_0x4fba86){if(_0x4fba86){return _0x1f11d4[_0x488b('0x16')](_0x6bdee0)[_0x488b('0x18')](_0x4fba86);}};}function respondWithFilteredResult(_0x198f46,_0x33eb77){return function(_0x5a2160){if(_0x5a2160){var _0x3cfd90=_0x5a2160['count'],_0x26797d=_0x33eb77[_0x488b('0x19')],_0x555be4=_0x33eb77['offset']+_0x33eb77['limit'],_0x5d189c;if(_0x555be4>=_0x3cfd90){_0x555be4=_0x3cfd90;_0x5d189c=0xc8;}else{_0x5d189c=0xce;}_0x198f46['status'](_0x5d189c);return _0x198f46['set'](_0x488b('0x1a'),_0x26797d+'-'+_0x555be4+'/'+_0x3cfd90)[_0x488b('0x18')](_0x5a2160);}return null;};}function patchUpdates(_0x360d9a){return function(_0x20dbfc){try{jsonpatch[_0x488b('0x1b')](_0x20dbfc,_0x360d9a,!![]);}catch(_0x4f6edb){return BPromise['reject'](_0x4f6edb);}return _0x20dbfc[_0x488b('0x1c')]();};}function saveUpdates(_0x21894f,_0x4bbd6d){return function(_0x218522){if(_0x218522){return _0x218522[_0x488b('0x1d')](_0x21894f)[_0x488b('0x1e')](function(_0x20b584){return _0x20b584;});}return null;};}function removeEntity(_0x4246d1,_0x5525dd){return function(_0x17f239){if(_0x17f239){return _0x17f239['destroy']()[_0x488b('0x1e')](function(){_0x4246d1[_0x488b('0x16')](0xcc)[_0x488b('0x17')]();});}};}function handleEntityNotFound(_0x116dcf,_0x24f28f){return function(_0x523ca0){if(!_0x523ca0){_0x116dcf['sendStatus'](0x194);}return _0x523ca0;};}function handleError(_0x56a145,_0x364b88){_0x364b88=_0x364b88||0x1f4;return function(_0x10e90d){logger[_0x488b('0x1f')](_0x10e90d[_0x488b('0x20')]);if(_0x10e90d[_0x488b('0x21')]){delete _0x10e90d[_0x488b('0x21')];}_0x56a145[_0x488b('0x16')](_0x364b88)[_0x488b('0x22')](_0x10e90d);};}exports[_0x488b('0x23')]=function(_0x3f7d44,_0x160288){var _0x12034e={},_0x2be593={},_0x2a71ba={'count':0x0,'rows':[]};var _0x4c57e5=db[_0x488b('0x24')][_0x488b('0x25')];_0x2be593[_0x488b('0x26')]=_['keys'](_0x4c57e5);var _0x5b5ae3={'dateStart':_0x3f7d44[_0x488b('0x27')][_0x488b('0x28')],'dateEnd':_0x3f7d44[_0x488b('0x27')][_0x488b('0x29')]};delete _0x3f7d44[_0x488b('0x27')][_0x488b('0x28')];delete _0x3f7d44[_0x488b('0x27')]['dateEnd'];_0x2be593[_0x488b('0x27')]=_[_0x488b('0x2a')](_0x3f7d44[_0x488b('0x27')]);_0x2be593[_0x488b('0x2b')]=_['intersection'](_0x2be593['model'],_0x2be593['query']);_0x12034e[_0x488b('0x2c')]=_['intersection'](_0x2be593[_0x488b('0x26')],qs[_0x488b('0x2d')](_0x3f7d44[_0x488b('0x27')][_0x488b('0x2d')]));_0x12034e[_0x488b('0x2c')]=_0x12034e[_0x488b('0x2c')]['length']?_0x12034e[_0x488b('0x2c')]:_0x2be593['model'];if(!_0x3f7d44[_0x488b('0x27')][_0x488b('0x2e')](_0x488b('0x2f'))){_0x12034e[_0x488b('0x30')]=qs[_0x488b('0x30')](_0x3f7d44[_0x488b('0x27')][_0x488b('0x30')]);_0x12034e[_0x488b('0x19')]=qs[_0x488b('0x19')](_0x3f7d44[_0x488b('0x27')][_0x488b('0x19')]);}_0x12034e[_0x488b('0x31')]=qs[_0x488b('0x32')](_0x3f7d44[_0x488b('0x27')][_0x488b('0x32')]);_0x12034e[_0x488b('0x33')]=qs['filters'](_[_0x488b('0x34')](_0x3f7d44['query'],_0x2be593[_0x488b('0x2b')]));if(_0x5b5ae3['dateStart']){if(_0x5b5ae3[_0x488b('0x29')]){_0x5b5ae3[_0x488b('0x29')]=moment(_0x5b5ae3['dateEnd'])['add'](0x1,_0x488b('0x35'));}else{_0x5b5ae3[_0x488b('0x29')]=moment(_0x5b5ae3[_0x488b('0x28')])[_0x488b('0x36')](0x1,'day');}_[_0x488b('0x37')](_0x12034e[_0x488b('0x33')],{'createdAt':{'$gte':_0x5b5ae3[_0x488b('0x28')],'$lte':_0x5b5ae3[_0x488b('0x29')]}});}if(_0x3f7d44[_0x488b('0x27')][_0x488b('0x38')]){_0x12034e[_0x488b('0x33')]=_[_0x488b('0x37')](_0x12034e[_0x488b('0x33')],{'$or':_[_0x488b('0x39')](_0x4c57e5,function(_0x2f82a6){if(_0x2f82a6[_0x488b('0x3a')][_0x488b('0x3b')]!==_0x488b('0x3c')){var _0x43fc76={};_0x43fc76[_0x2f82a6[_0x488b('0x3d')]]={'$like':'%'+_0x3f7d44['query']['filter']+'%'};return _0x43fc76;}})});}_0x12034e=_['merge']({},_0x12034e,_0x3f7d44['options']);var _0x29799f={'where':_0x12034e[_0x488b('0x33')]};return db['VoiceAgentReport'][_0x488b('0x3e')](_0x29799f)[_0x488b('0x1e')](function(_0x89749c){_0x2a71ba['count']=_0x89749c;if(_0x3f7d44[_0x488b('0x27')][_0x488b('0x3f')]){_0x12034e['include']=[{'all':!![]}];}return db[_0x488b('0x24')][_0x488b('0x40')](_0x12034e);})['then'](function(_0x22cc47){_0x2a71ba[_0x488b('0x41')]=_0x22cc47;return _0x2a71ba;})[_0x488b('0x1e')](respondWithFilteredResult(_0x160288,_0x12034e))[_0x488b('0x42')](handleError(_0x160288,null));};exports[_0x488b('0x43')]=function(_0x3bbbf3,_0x15a844){var _0x2b393a={'raw':![],'where':{'id':_0x3bbbf3[_0x488b('0x44')]['id']}},_0x5b14e2={};_0x5b14e2[_0x488b('0x26')]=_['keys'](db['VoiceAgentReport'][_0x488b('0x25')]);_0x5b14e2[_0x488b('0x27')]=_[_0x488b('0x2a')](_0x3bbbf3[_0x488b('0x27')]);_0x5b14e2[_0x488b('0x2b')]=_[_0x488b('0x45')](_0x5b14e2[_0x488b('0x26')],_0x5b14e2['query']);_0x2b393a[_0x488b('0x2c')]=_['intersection'](_0x5b14e2[_0x488b('0x26')],qs[_0x488b('0x2d')](_0x3bbbf3[_0x488b('0x27')][_0x488b('0x2d')]));_0x2b393a[_0x488b('0x2c')]=_0x2b393a['attributes'][_0x488b('0x46')]?_0x2b393a['attributes']:_0x5b14e2[_0x488b('0x26')];if(_0x3bbbf3[_0x488b('0x27')][_0x488b('0x3f')]){_0x2b393a[_0x488b('0x47')]=[{'all':!![]}];}_0x2b393a=_[_0x488b('0x37')]({},_0x2b393a,_0x3bbbf3[_0x488b('0x48')]);return db[_0x488b('0x24')][_0x488b('0x49')](_0x2b393a)[_0x488b('0x1e')](handleEntityNotFound(_0x15a844,null))[_0x488b('0x1e')](respondWithResult(_0x15a844,null))[_0x488b('0x42')](handleError(_0x15a844,null));};exports[_0x488b('0x4a')]=function(_0x358155,_0x59d952){return db['VoiceAgentReport'][_0x488b('0x4a')](_0x358155[_0x488b('0x4b')],{})[_0x488b('0x1e')](respondWithResult(_0x59d952,0xc9))[_0x488b('0x42')](handleError(_0x59d952,null));};exports[_0x488b('0x1d')]=function(_0x34e47d,_0x27b431){if(_0x34e47d[_0x488b('0x4b')]['id']){delete _0x34e47d[_0x488b('0x4b')]['id'];}return db[_0x488b('0x24')][_0x488b('0x49')]({'where':{'id':_0x34e47d['params']['id']}})['then'](handleEntityNotFound(_0x27b431,null))[_0x488b('0x1e')](saveUpdates(_0x34e47d['body'],null))[_0x488b('0x1e')](respondWithResult(_0x27b431,null))[_0x488b('0x42')](handleError(_0x27b431,null));};exports['destroy']=function(_0x1b1d76,_0x3d2d0e){return db[_0x488b('0x24')][_0x488b('0x49')]({'where':{'id':_0x1b1d76[_0x488b('0x44')]['id']}})['then'](handleEntityNotFound(_0x3d2d0e,null))[_0x488b('0x1e')](removeEntity(_0x3d2d0e,null))[_0x488b('0x42')](handleError(_0x3d2d0e,null));};exports[_0x488b('0x4c')]=function(_0x834394,_0x1fee7f){return db[_0x488b('0x24')][_0x488b('0x4c')]()[_0x488b('0x1e')](respondWithResult(_0x1fee7f,null))[_0x488b('0x42')](handleError(_0x1fee7f,null));};
\ No newline at end of file
+var _0xdcb8=['papaparse','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','VoiceAgentReport','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','add','day','filter','merge','map','type','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','create','body','find','destroy','describe','html-pdf','rimraf','zip-dir','moment','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xdcb8,0xd6));var _0x8dcb=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xdcb8[_0x2dafbe];return _0x58a45a;};'use strict';var pdf=require(_0x8dcb('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x8dcb('0x1'));var zipdir=require(_0x8dcb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8dcb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8dcb('0x4'));var util=require(_0x8dcb('0x5'));var path=require('path');var sox=require(_0x8dcb('0x6'));var csv=require(_0x8dcb('0x7'));var ejs=require(_0x8dcb('0x8'));var fs=require('fs');var _=require(_0x8dcb('0x9'));var squel=require(_0x8dcb('0xa'));var crypto=require(_0x8dcb('0xb'));var jsforce=require(_0x8dcb('0xc'));var deskjs=require(_0x8dcb('0xd'));var toCsv=require(_0x8dcb('0x7'));var querystring=require('querystring');var Papa=require(_0x8dcb('0xe'));var Redis=require(_0x8dcb('0xf'));var qs=require(_0x8dcb('0x10'));var logger=require('../../config/logger')(_0x8dcb('0x11'));var utils=require('../../config/utils');var config=require(_0x8dcb('0x12'));var db=require(_0x8dcb('0x13'))['db'];function respondWithStatusCode(_0x12d1c9,_0x6b0be2){_0x6b0be2=_0x6b0be2||0xcc;return function(_0xa46749){if(_0xa46749){return _0x12d1c9[_0x8dcb('0x14')](_0x6b0be2);}return _0x12d1c9[_0x8dcb('0x15')](_0x6b0be2)[_0x8dcb('0x16')]();};}function respondWithResult(_0x4b6ca3,_0x3f8ebb){_0x3f8ebb=_0x3f8ebb||0xc8;return function(_0x4f27b8){if(_0x4f27b8){return _0x4b6ca3[_0x8dcb('0x15')](_0x3f8ebb)['json'](_0x4f27b8);}};}function respondWithFilteredResult(_0x122b97,_0x1d77f6){return function(_0x39e52){if(_0x39e52){var _0x26706f=_0x39e52[_0x8dcb('0x17')],_0x29745f=_0x1d77f6[_0x8dcb('0x18')],_0x543aa1=_0x1d77f6[_0x8dcb('0x18')]+_0x1d77f6[_0x8dcb('0x19')],_0x5ef397;if(_0x543aa1>=_0x26706f){_0x543aa1=_0x26706f;_0x5ef397=0xc8;}else{_0x5ef397=0xce;}_0x122b97['status'](_0x5ef397);return _0x122b97[_0x8dcb('0x1a')](_0x8dcb('0x1b'),_0x29745f+'-'+_0x543aa1+'/'+_0x26706f)[_0x8dcb('0x1c')](_0x39e52);}return null;};}function patchUpdates(_0x4f7b27){return function(_0x1e457e){try{jsonpatch[_0x8dcb('0x1d')](_0x1e457e,_0x4f7b27,!![]);}catch(_0x2b7166){return BPromise[_0x8dcb('0x1e')](_0x2b7166);}return _0x1e457e[_0x8dcb('0x1f')]();};}function saveUpdates(_0x5758e9,_0x2df2d0){return function(_0x4e80c9){if(_0x4e80c9){return _0x4e80c9[_0x8dcb('0x20')](_0x5758e9)[_0x8dcb('0x21')](function(_0x150d17){return _0x150d17;});}return null;};}function removeEntity(_0x11117f,_0x581f8b){return function(_0x28382e){if(_0x28382e){return _0x28382e['destroy']()['then'](function(){_0x11117f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x240415,_0x19d55f){return function(_0x32ad00){if(!_0x32ad00){_0x240415[_0x8dcb('0x14')](0x194);}return _0x32ad00;};}function handleError(_0x4d36c1,_0x14efcf){_0x14efcf=_0x14efcf||0x1f4;return function(_0x1bd79d){logger[_0x8dcb('0x22')](_0x1bd79d[_0x8dcb('0x23')]);if(_0x1bd79d[_0x8dcb('0x24')]){delete _0x1bd79d[_0x8dcb('0x24')];}_0x4d36c1[_0x8dcb('0x15')](_0x14efcf)[_0x8dcb('0x25')](_0x1bd79d);};}exports[_0x8dcb('0x26')]=function(_0x464769,_0xcf56ea){var _0xdfae12={},_0x5cb18c={},_0x536fed={'count':0x0,'rows':[]};var _0x324221=db[_0x8dcb('0x27')][_0x8dcb('0x28')];_0x5cb18c[_0x8dcb('0x29')]=_[_0x8dcb('0x2a')](_0x324221);var _0x492165={'dateStart':_0x464769[_0x8dcb('0x2b')][_0x8dcb('0x2c')],'dateEnd':_0x464769[_0x8dcb('0x2b')][_0x8dcb('0x2d')]};delete _0x464769[_0x8dcb('0x2b')][_0x8dcb('0x2c')];delete _0x464769[_0x8dcb('0x2b')][_0x8dcb('0x2d')];_0x5cb18c['query']=_[_0x8dcb('0x2a')](_0x464769['query']);_0x5cb18c[_0x8dcb('0x2e')]=_[_0x8dcb('0x2f')](_0x5cb18c[_0x8dcb('0x29')],_0x5cb18c[_0x8dcb('0x2b')]);_0xdfae12[_0x8dcb('0x30')]=_[_0x8dcb('0x2f')](_0x5cb18c[_0x8dcb('0x29')],qs[_0x8dcb('0x31')](_0x464769[_0x8dcb('0x2b')][_0x8dcb('0x31')]));_0xdfae12[_0x8dcb('0x30')]=_0xdfae12[_0x8dcb('0x30')][_0x8dcb('0x32')]?_0xdfae12[_0x8dcb('0x30')]:_0x5cb18c[_0x8dcb('0x29')];if(!_0x464769[_0x8dcb('0x2b')]['hasOwnProperty'](_0x8dcb('0x33'))){_0xdfae12[_0x8dcb('0x19')]=qs[_0x8dcb('0x19')](_0x464769[_0x8dcb('0x2b')][_0x8dcb('0x19')]);_0xdfae12[_0x8dcb('0x18')]=qs[_0x8dcb('0x18')](_0x464769[_0x8dcb('0x2b')][_0x8dcb('0x18')]);}_0xdfae12[_0x8dcb('0x34')]=qs[_0x8dcb('0x35')](_0x464769[_0x8dcb('0x2b')][_0x8dcb('0x35')]);_0xdfae12[_0x8dcb('0x36')]=qs[_0x8dcb('0x2e')](_[_0x8dcb('0x37')](_0x464769[_0x8dcb('0x2b')],_0x5cb18c['filters']));if(_0x492165[_0x8dcb('0x2c')]){if(_0x492165[_0x8dcb('0x2d')]){_0x492165[_0x8dcb('0x2d')]=moment(_0x492165[_0x8dcb('0x2d')])[_0x8dcb('0x38')](0x1,'day');}else{_0x492165[_0x8dcb('0x2d')]=moment(_0x492165['dateStart'])[_0x8dcb('0x38')](0x1,_0x8dcb('0x39'));}_['merge'](_0xdfae12[_0x8dcb('0x36')],{'createdAt':{'$gte':_0x492165[_0x8dcb('0x2c')],'$lte':_0x492165[_0x8dcb('0x2d')]}});}if(_0x464769[_0x8dcb('0x2b')][_0x8dcb('0x3a')]){_0xdfae12[_0x8dcb('0x36')]=_[_0x8dcb('0x3b')](_0xdfae12[_0x8dcb('0x36')],{'$or':_[_0x8dcb('0x3c')](_0x324221,function(_0x1f3b41){if(_0x1f3b41[_0x8dcb('0x3d')]['key']!==_0x8dcb('0x3e')){var _0x22b786={};_0x22b786[_0x1f3b41['field']]={'$like':'%'+_0x464769['query'][_0x8dcb('0x3a')]+'%'};return _0x22b786;}})});}_0xdfae12=_[_0x8dcb('0x3b')]({},_0xdfae12,_0x464769[_0x8dcb('0x3f')]);var _0x345861={'where':_0xdfae12[_0x8dcb('0x36')]};return db[_0x8dcb('0x27')][_0x8dcb('0x17')](_0x345861)[_0x8dcb('0x21')](function(_0x2c0dd4){_0x536fed['count']=_0x2c0dd4;if(_0x464769[_0x8dcb('0x2b')]['includeAll']){_0xdfae12[_0x8dcb('0x40')]=[{'all':!![]}];}return db[_0x8dcb('0x27')][_0x8dcb('0x41')](_0xdfae12);})['then'](function(_0x8172c1){_0x536fed[_0x8dcb('0x42')]=_0x8172c1;return _0x536fed;})['then'](respondWithFilteredResult(_0xcf56ea,_0xdfae12))[_0x8dcb('0x43')](handleError(_0xcf56ea,null));};exports[_0x8dcb('0x44')]=function(_0x5bcdc9,_0x1a1f59){var _0x3772fb={'raw':![],'where':{'id':_0x5bcdc9[_0x8dcb('0x45')]['id']}},_0x5848c9={};_0x5848c9[_0x8dcb('0x29')]=_['keys'](db[_0x8dcb('0x27')][_0x8dcb('0x28')]);_0x5848c9['query']=_[_0x8dcb('0x2a')](_0x5bcdc9[_0x8dcb('0x2b')]);_0x5848c9[_0x8dcb('0x2e')]=_[_0x8dcb('0x2f')](_0x5848c9[_0x8dcb('0x29')],_0x5848c9[_0x8dcb('0x2b')]);_0x3772fb[_0x8dcb('0x30')]=_[_0x8dcb('0x2f')](_0x5848c9[_0x8dcb('0x29')],qs[_0x8dcb('0x31')](_0x5bcdc9[_0x8dcb('0x2b')]['fields']));_0x3772fb[_0x8dcb('0x30')]=_0x3772fb['attributes'][_0x8dcb('0x32')]?_0x3772fb[_0x8dcb('0x30')]:_0x5848c9['model'];if(_0x5bcdc9[_0x8dcb('0x2b')][_0x8dcb('0x46')]){_0x3772fb['include']=[{'all':!![]}];}_0x3772fb=_[_0x8dcb('0x3b')]({},_0x3772fb,_0x5bcdc9[_0x8dcb('0x3f')]);return db[_0x8dcb('0x27')]['find'](_0x3772fb)['then'](handleEntityNotFound(_0x1a1f59,null))['then'](respondWithResult(_0x1a1f59,null))[_0x8dcb('0x43')](handleError(_0x1a1f59,null));};exports[_0x8dcb('0x47')]=function(_0x47b303,_0x3c5fcc){return db['VoiceAgentReport'][_0x8dcb('0x47')](_0x47b303['body'],{})[_0x8dcb('0x21')](respondWithResult(_0x3c5fcc,0xc9))['catch'](handleError(_0x3c5fcc,null));};exports[_0x8dcb('0x20')]=function(_0x13e476,_0x2be905){if(_0x13e476[_0x8dcb('0x48')]['id']){delete _0x13e476['body']['id'];}return db['VoiceAgentReport'][_0x8dcb('0x49')]({'where':{'id':_0x13e476['params']['id']}})[_0x8dcb('0x21')](handleEntityNotFound(_0x2be905,null))[_0x8dcb('0x21')](saveUpdates(_0x13e476['body'],null))[_0x8dcb('0x21')](respondWithResult(_0x2be905,null))[_0x8dcb('0x43')](handleError(_0x2be905,null));};exports[_0x8dcb('0x4a')]=function(_0x50ef41,_0x115078){return db[_0x8dcb('0x27')][_0x8dcb('0x49')]({'where':{'id':_0x50ef41[_0x8dcb('0x45')]['id']}})[_0x8dcb('0x21')](handleEntityNotFound(_0x115078,null))[_0x8dcb('0x21')](removeEntity(_0x115078,null))['catch'](handleError(_0x115078,null));};exports[_0x8dcb('0x4b')]=function(_0x4616c0,_0x4dced5){return db['VoiceAgentReport'][_0x8dcb('0x4b')]()[_0x8dcb('0x21')](respondWithResult(_0x4dced5,null))[_0x8dcb('0x43')](handleError(_0x4dced5,null));};
\ No newline at end of file
index c24479a..997f732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb39=['define','VoiceAgentReport','report_agent','destuniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./voiceAgentReport.attributes','exports'];(function(_0x37b908,_0x4da999){var _0x19bc8a=function(_0x3be5f0){while(--_0x3be5f0){_0x37b908['push'](_0x37b908['shift']());}};_0x19bc8a(++_0x4da999);}(_0xcb39,0xee));var _0x9cb3=function(_0x45a572,_0x540519){_0x45a572=_0x45a572-0x0;var _0x54442e=_0xcb39[_0x45a572];return _0x54442e;};'use strict';var _=require(_0x9cb3('0x0'));var util=require(_0x9cb3('0x1'));var logger=require(_0x9cb3('0x2'))(_0x9cb3('0x3'));var moment=require(_0x9cb3('0x4'));var BPromise=require(_0x9cb3('0x5'));var rp=require(_0x9cb3('0x6'));var attributes=require(_0x9cb3('0x7'));module[_0x9cb3('0x8')]=function(_0x211db5,_0x391902){return _0x211db5[_0x9cb3('0x9')](_0x9cb3('0xa'),attributes,{'tableName':_0x9cb3('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0x9cb3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc3fb=['uniqueid','destuniqueid','util','api','request-promise','exports','define','VoiceAgentReport'];(function(_0x20beb2,_0x29c54f){var _0x3bb3f0=function(_0x54d0fe){while(--_0x54d0fe){_0x20beb2['push'](_0x20beb2['shift']());}};_0x3bb3f0(++_0x29c54f);}(_0xc3fb,0x1ea));var _0xbc3f=function(_0x51413f,_0x1732ed){_0x51413f=_0x51413f-0x0;var _0x402717=_0xc3fb[_0x51413f];return _0x402717;};'use strict';var _=require('lodash');var util=require(_0xbc3f('0x0'));var logger=require('../../config/logger')(_0xbc3f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbc3f('0x2'));var attributes=require('./voiceAgentReport.attributes');module[_0xbc3f('0x3')]=function(_0x45bfd5,_0xad5776){return _0x45bfd5[_0xbc3f('0x4')](_0xbc3f('0x5'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0xbc3f('0x6'),_0xbc3f('0x7')]}],'timestamps':!![]});};
\ No newline at end of file
index 8febbc1..394f3a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateVoiceAgentReport','body','raw','stringify','VoiceAgentReport','update','options','where','attributes','limit','UpdateVoiceAgentReport','lodash','util'];(function(_0x43f4c8,_0x22a037){var _0x3a2e0c=function(_0x182023){while(--_0x182023){_0x43f4c8['push'](_0x43f4c8['shift']());}};_0x3a2e0c(++_0x22a037);}(_0x814b,0x1a2));var _0xb814=function(_0xbfc560,_0x311fba){_0xbfc560=_0xbfc560-0x0;var _0x47b022=_0x814b[_0xbfc560];return _0x47b022;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}exports[_0xb814('0x18')]=function(_0x55ba16){var _0x270598=this;return new Promise(function(_0xfac75b,_0x4c3007){return db['VoiceAgentReport']['create'](_0x55ba16[_0xb814('0x19')],{'raw':_0x55ba16['options']?_0x55ba16['options'][_0xb814('0x1a')]===undefined?!![]:![]:!![]})[_0xb814('0xd')](function(_0x25b6b6){logger['info'](_0xb814('0x18'),_0x55ba16);logger['debug'](_0xb814('0x18'),_0x55ba16,JSON[_0xb814('0x1b')](_0x25b6b6));_0xfac75b(_0x25b6b6);})[_0xb814('0x17')](function(_0x470e81){logger[_0xb814('0x13')](_0xb814('0x18'),_0x470e81[_0xb814('0x15')],_0x55ba16);_0x4c3007(_0x270598['error'](0x1f4,_0x470e81[_0xb814('0x15')]));});});};exports['UpdateVoiceAgentReport']=function(_0x3f81d0){var _0x457dac=this;return new Promise(function(_0x31c7ec,_0x208927){return db[_0xb814('0x1c')][_0xb814('0x1d')](_0x3f81d0[_0xb814('0x19')],{'raw':_0x3f81d0['options']?_0x3f81d0[_0xb814('0x1e')][_0xb814('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f81d0[_0xb814('0x1e')]?_0x3f81d0[_0xb814('0x1e')][_0xb814('0x1f')]||null:null,'attributes':_0x3f81d0[_0xb814('0x1e')]?_0x3f81d0[_0xb814('0x1e')][_0xb814('0x20')]||null:null,'limit':_0x3f81d0['options']?_0x3f81d0[_0xb814('0x1e')][_0xb814('0x21')]||null:null})['then'](function(_0x9008b2){logger[_0xb814('0xe')](_0xb814('0x22'),_0x3f81d0);logger['debug'](_0xb814('0x22'),_0x3f81d0,JSON[_0xb814('0x1b')](_0x9008b2));_0x31c7ec(_0x9008b2);})['catch'](function(_0x338a28){logger['error'](_0xb814('0x22'),_0x338a28['message'],_0x3f81d0);_0x208927(_0x457dac['error'](0x1f4,_0x338a28[_0xb814('0x15')]));});});};
\ No newline at end of file
+var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','VoiceAgentReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','VoiceAgentReport','create','body','options','raw','CreateVoiceAgentReport','UpdateVoiceAgentReport','update','where','attributes','limit','then','lodash','util'];(function(_0x5d74c7,_0x492177){var _0x31061e=function(_0x44add6){while(--_0x44add6){_0x5d74c7['push'](_0x5d74c7['shift']());}};_0x31061e(++_0x492177);}(_0x7a54,0x106));var _0x47a5=function(_0x522f1f,_0x4134f4){_0x522f1f=_0x522f1f-0x0;var _0x503c95=_0x7a54[_0x522f1f];return _0x503c95;};'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')]('VoiceAgentReport,\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['CreateVoiceAgentReport']=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')]('CreateVoiceAgentReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
index cfa8cba..6aefa14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2c6=['/describe','show','post','put','/:id','delete','destroy','exports','multer','path','express','Router','../../config/environment','get','isAuthenticated'];(function(_0x310196,_0x2e76d7){var _0x35aa0a=function(_0x468dfc){while(--_0x468dfc){_0x310196['push'](_0x310196['shift']());}};_0x35aa0a(++_0x2e76d7);}(_0xb2c6,0xcb));var _0x6b2c=function(_0x3bf190,_0xea46bb){_0x3bf190=_0x3bf190-0x0;var _0xc992ca=_0xb2c6[_0x3bf190];return _0xc992ca;};'use strict';var multer=require(_0x6b2c('0x0'));var util=require('util');var path=require(_0x6b2c('0x1'));var timeout=require('connect-timeout');var express=require(_0x6b2c('0x2'));var router=express[_0x6b2c('0x3')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x6b2c('0x4'));var controller=require('./voiceCallReport.controller');router[_0x6b2c('0x5')]('/',auth[_0x6b2c('0x6')](),controller['index']);router[_0x6b2c('0x5')](_0x6b2c('0x7'),auth[_0x6b2c('0x6')](),controller['describe']);router[_0x6b2c('0x5')]('/:id',auth[_0x6b2c('0x6')](),controller[_0x6b2c('0x8')]);router[_0x6b2c('0x9')]('/',auth[_0x6b2c('0x6')](),controller['create']);router[_0x6b2c('0xa')](_0x6b2c('0xb'),auth[_0x6b2c('0x6')](),controller['update']);router[_0x6b2c('0xc')](_0x6b2c('0xb'),auth[_0x6b2c('0x6')](),controller[_0x6b2c('0xd')]);module[_0x6b2c('0xe')]=router;
\ No newline at end of file
+var _0x323c=['multer','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','update','destroy'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x323c,0x140));var _0xc323=function(_0x55dcaa,_0x55f333){_0x55dcaa=_0x55dcaa-0x0;var _0x5aea42=_0x323c[_0x55dcaa];return _0x5aea42;};'use strict';var multer=require(_0xc323('0x0'));var util=require('util');var path=require(_0xc323('0x1'));var timeout=require(_0xc323('0x2'));var express=require('express');var router=express[_0xc323('0x3')]();var auth=require('../../components/auth/service');var interaction=require(_0xc323('0x4'));var config=require(_0xc323('0x5'));var controller=require('./voiceCallReport.controller');router[_0xc323('0x6')]('/',auth[_0xc323('0x7')](),controller[_0xc323('0x8')]);router[_0xc323('0x6')](_0xc323('0x9'),auth[_0xc323('0x7')](),controller[_0xc323('0xa')]);router[_0xc323('0x6')](_0xc323('0xb'),auth[_0xc323('0x7')](),controller[_0xc323('0xc')]);router[_0xc323('0xd')]('/',auth[_0xc323('0x7')](),controller['create']);router['put'](_0xc323('0xb'),auth['isAuthenticated'](),controller[_0xc323('0xe')]);router['delete']('/:id',auth[_0xc323('0x7')](),controller[_0xc323('0xf')]);module['exports']=router;
\ No newline at end of file
index 029a137..1fc2343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8a6=['dialer','STRING','DATE','INTEGER','sequelize','exports','ENUM','inbound','internal','outbound','inbound-fax'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xc8a6,0xd5));var _0x6c8a=function(_0xe87a88,_0x51abeb){_0xe87a88=_0xe87a88-0x0;var _0x274559=_0xc8a6[_0xe87a88];return _0x274559;};'use strict';var Sequelize=require(_0x6c8a('0x0'));module[_0x6c8a('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x6c8a('0x2')](_0x6c8a('0x3'),_0x6c8a('0x4'),_0x6c8a('0x5'),_0x6c8a('0x6'),'outbound-fax',_0x6c8a('0x7'))},'tag':{'type':Sequelize[_0x6c8a('0x8')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0x6c8a('0x8')]},'destination':{'type':Sequelize[_0x6c8a('0x8')]},'destinationcontext':{'type':Sequelize[_0x6c8a('0x8')]},'callerid':{'type':Sequelize[_0x6c8a('0x8')]},'channel':{'type':Sequelize[_0x6c8a('0x8')]},'destinationchannel':{'type':Sequelize[_0x6c8a('0x8')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x6c8a('0x9')]},'answertime':{'type':Sequelize[_0x6c8a('0x9')]},'endtime':{'type':Sequelize[_0x6c8a('0x9')]},'duration':{'type':Sequelize[_0x6c8a('0xa')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x6c8a('0x8')]},'amaflags':{'type':Sequelize[_0x6c8a('0x8')]},'userfield':{'type':Sequelize[_0x6c8a('0x8')]},'userDisposition':{'type':Sequelize[_0x6c8a('0x8')]},'note':{'type':Sequelize[_0x6c8a('0x8')]},'prefix':{'type':Sequelize[_0x6c8a('0x8')]},'routeid':{'type':Sequelize[_0x6c8a('0xa')]}};
\ No newline at end of file
+var _0x96e6=['inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','inbound','internal','outbound'];(function(_0x3904e9,_0x1c0782){var _0x1ba0e0=function(_0x44f87e){while(--_0x44f87e){_0x3904e9['push'](_0x3904e9['shift']());}};_0x1ba0e0(++_0x1c0782);}(_0x96e6,0x66));var _0x696e=function(_0x546e5b,_0x200d7f){_0x546e5b=_0x546e5b-0x0;var _0x1ea0ec=_0x96e6[_0x546e5b];return _0x1ea0ec;};'use strict';var Sequelize=require(_0x696e('0x0'));module[_0x696e('0x1')]={'uniqueid':{'type':Sequelize[_0x696e('0x2')]},'type':{'type':Sequelize['ENUM'](_0x696e('0x3'),_0x696e('0x4'),_0x696e('0x5'),_0x696e('0x6'),_0x696e('0x7'),_0x696e('0x8'))},'tag':{'type':Sequelize[_0x696e('0x2')]},'accountcode':{'type':Sequelize[_0x696e('0x2')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0x696e('0x2')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x696e('0x2')]},'destinationchannel':{'type':Sequelize[_0x696e('0x2')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x696e('0x9')]},'starttime':{'type':Sequelize[_0x696e('0xa')]},'answertime':{'type':Sequelize[_0x696e('0xa')]},'endtime':{'type':Sequelize[_0x696e('0xa')]},'duration':{'type':Sequelize[_0x696e('0xb')]},'billableseconds':{'type':Sequelize[_0x696e('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x696e('0x2')]},'userfield':{'type':Sequelize[_0x696e('0x2')]},'userDisposition':{'type':Sequelize[_0x696e('0x2')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index ee911be..034f9e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e05=['html-pdf','zip-dir','fast-json-patch','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','VoiceCallReport','rawAttributes','keys','dateStart','query','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','pick','add','day','filter','where','merge','map','key','VIRTUAL','includeAll','include','alias','User','findAll','rows','catch','show','params','options','find','create','body','describe','uniqueid'];(function(_0x5c3e12,_0xf69f80){var _0x311d22=function(_0x3799d8){while(--_0x3799d8){_0x5c3e12['push'](_0x5c3e12['shift']());}};_0x311d22(++_0xf69f80);}(_0x7e05,0x1e0));var _0x57e0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7e05[_0x14add3];return _0x4a174f;};'use strict';var pdf=require(_0x57e0('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x57e0('0x1'));var jsonpatch=require(_0x57e0('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x57e0('0x3'));var util=require(_0x57e0('0x4'));var path=require(_0x57e0('0x5'));var sox=require(_0x57e0('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0x57e0('0x7'));var squel=require(_0x57e0('0x8'));var crypto=require(_0x57e0('0x9'));var jsforce=require(_0x57e0('0xa'));var deskjs=require(_0x57e0('0xb'));var toCsv=require(_0x57e0('0xc'));var querystring=require(_0x57e0('0xd'));var Papa=require(_0x57e0('0xe'));var Redis=require(_0x57e0('0xf'));var qs=require(_0x57e0('0x10'));var logger=require(_0x57e0('0x11'))(_0x57e0('0x12'));var utils=require(_0x57e0('0x13'));var config=require(_0x57e0('0x14'));var db=require(_0x57e0('0x15'))['db'];function respondWithStatusCode(_0xa20373,_0x22a8cc){_0x22a8cc=_0x22a8cc||0xcc;return function(_0x4ef62a){if(_0x4ef62a){return _0xa20373[_0x57e0('0x16')](_0x22a8cc);}return _0xa20373[_0x57e0('0x17')](_0x22a8cc)[_0x57e0('0x18')]();};}function respondWithResult(_0x50c37b,_0x12d708){_0x12d708=_0x12d708||0xc8;return function(_0x25e119){if(_0x25e119){return _0x50c37b[_0x57e0('0x17')](_0x12d708)[_0x57e0('0x19')](_0x25e119);}};}function respondWithFilteredResult(_0x57bb2e,_0x15b6a2){return function(_0x48eb87){if(_0x48eb87){var _0x47718e=_0x48eb87[_0x57e0('0x1a')],_0x12e1eb=_0x15b6a2[_0x57e0('0x1b')],_0x3c624b=_0x15b6a2['offset']+_0x15b6a2[_0x57e0('0x1c')],_0x26ba0b;if(_0x3c624b>=_0x47718e){_0x3c624b=_0x47718e;_0x26ba0b=0xc8;}else{_0x26ba0b=0xce;}_0x57bb2e[_0x57e0('0x17')](_0x26ba0b);return _0x57bb2e[_0x57e0('0x1d')](_0x57e0('0x1e'),_0x12e1eb+'-'+_0x3c624b+'/'+_0x47718e)['json'](_0x48eb87);}return null;};}function patchUpdates(_0x49b00a){return function(_0x3a9af3){try{jsonpatch[_0x57e0('0x1f')](_0x3a9af3,_0x49b00a,!![]);}catch(_0x152830){return BPromise[_0x57e0('0x20')](_0x152830);}return _0x3a9af3[_0x57e0('0x21')]();};}function saveUpdates(_0x1abb5b,_0x4008d9){return function(_0x3ca4fb){if(_0x3ca4fb){return _0x3ca4fb[_0x57e0('0x22')](_0x1abb5b)[_0x57e0('0x23')](function(_0x1ddd87){return _0x1ddd87;});}return null;};}function removeEntity(_0x2e5453,_0x21fb76){return function(_0x54aa01){if(_0x54aa01){return _0x54aa01[_0x57e0('0x24')]()[_0x57e0('0x23')](function(){_0x2e5453[_0x57e0('0x17')](0xcc)[_0x57e0('0x18')]();});}};}function handleEntityNotFound(_0x47cd21,_0x3a341a){return function(_0xe6d0fc){if(!_0xe6d0fc){_0x47cd21[_0x57e0('0x16')](0x194);}return _0xe6d0fc;};}function handleError(_0x99ed98,_0xecbf69){_0xecbf69=_0xecbf69||0x1f4;return function(_0x5f12c9){logger['error'](_0x5f12c9[_0x57e0('0x25')]);if(_0x5f12c9[_0x57e0('0x26')]){delete _0x5f12c9[_0x57e0('0x26')];}_0x99ed98[_0x57e0('0x17')](_0xecbf69)[_0x57e0('0x27')](_0x5f12c9);};}exports[_0x57e0('0x28')]=function(_0x2c2358,_0x479935){var _0x527039={},_0x9f16af={},_0x5b8063={'count':0x0,'rows':[]};var _0x3ce29b=db[_0x57e0('0x29')][_0x57e0('0x2a')];_0x9f16af['model']=_[_0x57e0('0x2b')](_0x3ce29b);var _0x42fb76={'dateStart':_0x2c2358['query'][_0x57e0('0x2c')],'dateEnd':_0x2c2358[_0x57e0('0x2d')][_0x57e0('0x2e')]};delete _0x2c2358['query'][_0x57e0('0x2c')];delete _0x2c2358[_0x57e0('0x2d')][_0x57e0('0x2e')];_0x9f16af[_0x57e0('0x2d')]=_['keys'](_0x2c2358[_0x57e0('0x2d')]);_0x9f16af[_0x57e0('0x2f')]=_[_0x57e0('0x30')](_0x9f16af[_0x57e0('0x31')],_0x9f16af[_0x57e0('0x2d')]);_0x527039[_0x57e0('0x32')]=_[_0x57e0('0x30')](_0x9f16af[_0x57e0('0x31')],qs['fields'](_0x2c2358[_0x57e0('0x2d')][_0x57e0('0x33')]));_0x527039[_0x57e0('0x32')]=_0x527039[_0x57e0('0x32')][_0x57e0('0x34')]?_0x527039['attributes']:_0x9f16af[_0x57e0('0x31')];if(!_0x2c2358[_0x57e0('0x2d')][_0x57e0('0x35')]('nolimit')){_0x527039['limit']=qs[_0x57e0('0x1c')](_0x2c2358[_0x57e0('0x2d')][_0x57e0('0x1c')]);_0x527039[_0x57e0('0x1b')]=qs['offset'](_0x2c2358['query'][_0x57e0('0x1b')]);}_0x527039[_0x57e0('0x36')]=qs[_0x57e0('0x37')](_0x2c2358[_0x57e0('0x2d')][_0x57e0('0x37')]);_0x527039['where']=qs[_0x57e0('0x2f')](_[_0x57e0('0x38')](_0x2c2358[_0x57e0('0x2d')],_0x9f16af[_0x57e0('0x2f')]));if(_0x42fb76[_0x57e0('0x2c')]){if(_0x42fb76[_0x57e0('0x2e')]){_0x42fb76[_0x57e0('0x2e')]=moment(_0x42fb76[_0x57e0('0x2e')])[_0x57e0('0x39')](0x1,_0x57e0('0x3a'));}else{_0x42fb76[_0x57e0('0x2e')]=moment(_0x42fb76[_0x57e0('0x2c')])[_0x57e0('0x39')](0x1,_0x57e0('0x3a'));}_['merge'](_0x527039['where'],{'createdAt':{'$gte':_0x42fb76[_0x57e0('0x2c')],'$lte':_0x42fb76[_0x57e0('0x2e')]}});}if(_0x2c2358[_0x57e0('0x2d')][_0x57e0('0x3b')]){_0x527039[_0x57e0('0x3c')]=_[_0x57e0('0x3d')](_0x527039[_0x57e0('0x3c')],{'$or':_[_0x57e0('0x3e')](_0x3ce29b,function(_0x3f5ffa){if(_0x3f5ffa['type'][_0x57e0('0x3f')]!==_0x57e0('0x40')){var _0x1b7629={};_0x1b7629[_0x3f5ffa['field']]={'$like':'%'+_0x2c2358['query'][_0x57e0('0x3b')]+'%'};return _0x1b7629;}})});}_0x527039=_[_0x57e0('0x3d')]({},_0x527039,_0x2c2358['options']);var _0x4155d3={'where':_0x527039[_0x57e0('0x3c')]};return db['VoiceCallReport'][_0x57e0('0x1a')](_0x4155d3)[_0x57e0('0x23')](function(_0x112457){_0x5b8063['count']=_0x112457;if(_0x2c2358['query'][_0x57e0('0x41')]){_0x527039[_0x57e0('0x42')]=[{'attributes':['id','name','fullname',_0x57e0('0x43')],'model':db['User'],'as':_0x57e0('0x44')}];}return db['VoiceCallReport'][_0x57e0('0x45')](_0x527039);})[_0x57e0('0x23')](function(_0x3d2a44){_0x5b8063[_0x57e0('0x46')]=_0x3d2a44;return _0x5b8063;})[_0x57e0('0x23')](respondWithFilteredResult(_0x479935,_0x527039))[_0x57e0('0x47')](handleError(_0x479935,null));};exports[_0x57e0('0x48')]=function(_0x422e15,_0x46cbce){var _0x1514d8={'raw':!![],'where':{'id':_0x422e15[_0x57e0('0x49')]['id']}},_0x10fb29={};_0x10fb29['model']=_[_0x57e0('0x2b')](db[_0x57e0('0x29')][_0x57e0('0x2a')]);_0x10fb29['query']=_[_0x57e0('0x2b')](_0x422e15[_0x57e0('0x2d')]);_0x10fb29['filters']=_['intersection'](_0x10fb29['model'],_0x10fb29[_0x57e0('0x2d')]);_0x1514d8[_0x57e0('0x32')]=_[_0x57e0('0x30')](_0x10fb29[_0x57e0('0x31')],qs[_0x57e0('0x33')](_0x422e15[_0x57e0('0x2d')][_0x57e0('0x33')]));_0x1514d8['attributes']=_0x1514d8[_0x57e0('0x32')][_0x57e0('0x34')]?_0x1514d8[_0x57e0('0x32')]:_0x10fb29[_0x57e0('0x31')];if(_0x422e15[_0x57e0('0x2d')][_0x57e0('0x41')]){_0x1514d8[_0x57e0('0x42')]=[{'all':!![]}];}_0x1514d8=_['merge']({},_0x1514d8,_0x422e15[_0x57e0('0x4a')]);return db[_0x57e0('0x29')][_0x57e0('0x4b')](_0x1514d8)[_0x57e0('0x23')](handleEntityNotFound(_0x46cbce,null))[_0x57e0('0x23')](respondWithResult(_0x46cbce,null))[_0x57e0('0x47')](handleError(_0x46cbce,null));};exports[_0x57e0('0x4c')]=function(_0x5878e4,_0x3f17e6){return db[_0x57e0('0x29')][_0x57e0('0x4c')](_0x5878e4[_0x57e0('0x4d')],{})[_0x57e0('0x23')](respondWithResult(_0x3f17e6,0xc9))['catch'](handleError(_0x3f17e6,null));};exports[_0x57e0('0x24')]=function(_0x124ebb,_0x427fcb){return db[_0x57e0('0x29')][_0x57e0('0x4b')]({'where':{'id':_0x124ebb[_0x57e0('0x49')]['id']}})[_0x57e0('0x23')](handleEntityNotFound(_0x427fcb,null))[_0x57e0('0x23')](removeEntity(_0x427fcb,null))['catch'](handleError(_0x427fcb,null));};exports['describe']=function(_0x1b0b69,_0x248522){return db[_0x57e0('0x29')][_0x57e0('0x4e')]()[_0x57e0('0x23')](respondWithResult(_0x248522,null))[_0x57e0('0x47')](handleError(_0x248522,null));};exports[_0x57e0('0x22')]=function(_0x467dee,_0x23910b){if(_0x467dee[_0x57e0('0x4d')][_0x57e0('0x4f')]){delete _0x467dee[_0x57e0('0x4d')][_0x57e0('0x4f')];}return db[_0x57e0('0x29')][_0x57e0('0x4b')]({'where':{'uniqueid':_0x467dee[_0x57e0('0x49')]['id'],'UserId':{'$or':[null,_0x467dee['user']['id']]}}})[_0x57e0('0x23')](handleEntityNotFound(_0x23910b,null))[_0x57e0('0x23')](saveUpdates(_0x467dee[_0x57e0('0x4d')],null))[_0x57e0('0x23')](respondWithResult(_0x23910b,null))['catch'](handleError(_0x23910b,null));};
\ No newline at end of file
+var _0x0158=['reject','save','update','then','error','stack','name','send','VoiceCallReport','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','day','merge','filter','map','key','field','count','includeAll','fullname','alias','User','findAll','rows','show','params','length','options','find','catch','create','destroy','describe','body','uniqueid','user','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','crypto','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','set','Content-Range','apply'];(function(_0x40b75f,_0x582530){var _0x39dc61=function(_0x2b1d7f){while(--_0x2b1d7f){_0x40b75f['push'](_0x40b75f['shift']());}};_0x39dc61(++_0x582530);}(_0x0158,0x82));var _0x8015=function(_0x4d97c2,_0x15a584){_0x4d97c2=_0x4d97c2-0x0;var _0x510afb=_0x0158[_0x4d97c2];return _0x510afb;};'use strict';var pdf=require(_0x8015('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x8015('0x1'));var zipdir=require(_0x8015('0x2'));var jsonpatch=require(_0x8015('0x3'));var rp=require(_0x8015('0x4'));var moment=require(_0x8015('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8015('0x6'));var util=require(_0x8015('0x7'));var path=require(_0x8015('0x8'));var sox=require('sox');var csv=require(_0x8015('0x9'));var ejs=require(_0x8015('0xa'));var fs=require('fs');var _=require(_0x8015('0xb'));var squel=require('squel');var crypto=require(_0x8015('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8015('0x9'));var querystring=require(_0x8015('0xd'));var Papa=require('papaparse');var Redis=require(_0x8015('0xe'));var qs=require(_0x8015('0xf'));var logger=require(_0x8015('0x10'))(_0x8015('0x11'));var utils=require(_0x8015('0x12'));var config=require(_0x8015('0x13'));var db=require(_0x8015('0x14'))['db'];function respondWithStatusCode(_0x9b7d40,_0x1b1cb6){_0x1b1cb6=_0x1b1cb6||0xcc;return function(_0x525f21){if(_0x525f21){return _0x9b7d40[_0x8015('0x15')](_0x1b1cb6);}return _0x9b7d40[_0x8015('0x16')](_0x1b1cb6)[_0x8015('0x17')]();};}function respondWithResult(_0x4ab122,_0x1d0d0a){_0x1d0d0a=_0x1d0d0a||0xc8;return function(_0x4630d8){if(_0x4630d8){return _0x4ab122[_0x8015('0x16')](_0x1d0d0a)[_0x8015('0x18')](_0x4630d8);}};}function respondWithFilteredResult(_0x4227ad,_0x236e39){return function(_0x51b8a3){if(_0x51b8a3){var _0x3ba16e=_0x51b8a3['count'],_0x17bdbe=_0x236e39[_0x8015('0x19')],_0x58703e=_0x236e39['offset']+_0x236e39[_0x8015('0x1a')],_0x10b1ae;if(_0x58703e>=_0x3ba16e){_0x58703e=_0x3ba16e;_0x10b1ae=0xc8;}else{_0x10b1ae=0xce;}_0x4227ad[_0x8015('0x16')](_0x10b1ae);return _0x4227ad[_0x8015('0x1b')](_0x8015('0x1c'),_0x17bdbe+'-'+_0x58703e+'/'+_0x3ba16e)['json'](_0x51b8a3);}return null;};}function patchUpdates(_0x1a10f6){return function(_0x4eb0b5){try{jsonpatch[_0x8015('0x1d')](_0x4eb0b5,_0x1a10f6,!![]);}catch(_0x242a3b){return BPromise[_0x8015('0x1e')](_0x242a3b);}return _0x4eb0b5[_0x8015('0x1f')]();};}function saveUpdates(_0x4f9563,_0x3d4bef){return function(_0x475b79){if(_0x475b79){return _0x475b79[_0x8015('0x20')](_0x4f9563)[_0x8015('0x21')](function(_0x174007){return _0x174007;});}return null;};}function removeEntity(_0x2fc4d5,_0x3412da){return function(_0x544c01){if(_0x544c01){return _0x544c01['destroy']()[_0x8015('0x21')](function(){_0x2fc4d5[_0x8015('0x16')](0xcc)[_0x8015('0x17')]();});}};}function handleEntityNotFound(_0x5f48e7,_0x45aae1){return function(_0x480262){if(!_0x480262){_0x5f48e7[_0x8015('0x15')](0x194);}return _0x480262;};}function handleError(_0x57db59,_0x34bbd9){_0x34bbd9=_0x34bbd9||0x1f4;return function(_0xa0b17e){logger[_0x8015('0x22')](_0xa0b17e[_0x8015('0x23')]);if(_0xa0b17e[_0x8015('0x24')]){delete _0xa0b17e[_0x8015('0x24')];}_0x57db59[_0x8015('0x16')](_0x34bbd9)[_0x8015('0x25')](_0xa0b17e);};}exports['index']=function(_0x369378,_0x45e232){var _0xcf4776={},_0x78f8b9={},_0x4bea08={'count':0x0,'rows':[]};var _0x165a96=db[_0x8015('0x26')][_0x8015('0x27')];_0x78f8b9[_0x8015('0x28')]=_[_0x8015('0x29')](_0x165a96);var _0x1ab727={'dateStart':_0x369378[_0x8015('0x2a')][_0x8015('0x2b')],'dateEnd':_0x369378['query'][_0x8015('0x2c')]};delete _0x369378[_0x8015('0x2a')][_0x8015('0x2b')];delete _0x369378['query'][_0x8015('0x2c')];_0x78f8b9[_0x8015('0x2a')]=_[_0x8015('0x29')](_0x369378[_0x8015('0x2a')]);_0x78f8b9[_0x8015('0x2d')]=_[_0x8015('0x2e')](_0x78f8b9['model'],_0x78f8b9[_0x8015('0x2a')]);_0xcf4776[_0x8015('0x2f')]=_[_0x8015('0x2e')](_0x78f8b9[_0x8015('0x28')],qs[_0x8015('0x30')](_0x369378[_0x8015('0x2a')][_0x8015('0x30')]));_0xcf4776[_0x8015('0x2f')]=_0xcf4776[_0x8015('0x2f')]['length']?_0xcf4776[_0x8015('0x2f')]:_0x78f8b9['model'];if(!_0x369378[_0x8015('0x2a')][_0x8015('0x31')](_0x8015('0x32'))){_0xcf4776[_0x8015('0x1a')]=qs[_0x8015('0x1a')](_0x369378[_0x8015('0x2a')][_0x8015('0x1a')]);_0xcf4776[_0x8015('0x19')]=qs[_0x8015('0x19')](_0x369378[_0x8015('0x2a')][_0x8015('0x19')]);}_0xcf4776[_0x8015('0x33')]=qs['sort'](_0x369378['query'][_0x8015('0x34')]);_0xcf4776[_0x8015('0x35')]=qs['filters'](_[_0x8015('0x36')](_0x369378[_0x8015('0x2a')],_0x78f8b9[_0x8015('0x2d')]));if(_0x1ab727[_0x8015('0x2b')]){if(_0x1ab727[_0x8015('0x2c')]){_0x1ab727[_0x8015('0x2c')]=moment(_0x1ab727[_0x8015('0x2c')])['add'](0x1,_0x8015('0x37'));}else{_0x1ab727[_0x8015('0x2c')]=moment(_0x1ab727[_0x8015('0x2b')])['add'](0x1,'day');}_[_0x8015('0x38')](_0xcf4776[_0x8015('0x35')],{'createdAt':{'$gte':_0x1ab727[_0x8015('0x2b')],'$lte':_0x1ab727[_0x8015('0x2c')]}});}if(_0x369378[_0x8015('0x2a')][_0x8015('0x39')]){_0xcf4776[_0x8015('0x35')]=_['merge'](_0xcf4776['where'],{'$or':_[_0x8015('0x3a')](_0x165a96,function(_0x1c9c3a){if(_0x1c9c3a['type'][_0x8015('0x3b')]!=='VIRTUAL'){var _0x405017={};_0x405017[_0x1c9c3a[_0x8015('0x3c')]]={'$like':'%'+_0x369378[_0x8015('0x2a')][_0x8015('0x39')]+'%'};return _0x405017;}})});}_0xcf4776=_[_0x8015('0x38')]({},_0xcf4776,_0x369378['options']);var _0x1bc1d0={'where':_0xcf4776[_0x8015('0x35')]};return db['VoiceCallReport'][_0x8015('0x3d')](_0x1bc1d0)['then'](function(_0x49513d){_0x4bea08['count']=_0x49513d;if(_0x369378['query'][_0x8015('0x3e')]){_0xcf4776['include']=[{'attributes':['id',_0x8015('0x24'),_0x8015('0x3f'),_0x8015('0x40')],'model':db[_0x8015('0x41')],'as':_0x8015('0x41')}];}return db['VoiceCallReport'][_0x8015('0x42')](_0xcf4776);})[_0x8015('0x21')](function(_0x715484){_0x4bea08[_0x8015('0x43')]=_0x715484;return _0x4bea08;})[_0x8015('0x21')](respondWithFilteredResult(_0x45e232,_0xcf4776))['catch'](handleError(_0x45e232,null));};exports[_0x8015('0x44')]=function(_0x264357,_0x36aa07){var _0x191531={'raw':!![],'where':{'id':_0x264357[_0x8015('0x45')]['id']}},_0xd53763={};_0xd53763[_0x8015('0x28')]=_[_0x8015('0x29')](db[_0x8015('0x26')][_0x8015('0x27')]);_0xd53763[_0x8015('0x2a')]=_[_0x8015('0x29')](_0x264357['query']);_0xd53763[_0x8015('0x2d')]=_[_0x8015('0x2e')](_0xd53763['model'],_0xd53763[_0x8015('0x2a')]);_0x191531[_0x8015('0x2f')]=_[_0x8015('0x2e')](_0xd53763[_0x8015('0x28')],qs[_0x8015('0x30')](_0x264357['query'][_0x8015('0x30')]));_0x191531[_0x8015('0x2f')]=_0x191531[_0x8015('0x2f')][_0x8015('0x46')]?_0x191531[_0x8015('0x2f')]:_0xd53763[_0x8015('0x28')];if(_0x264357[_0x8015('0x2a')][_0x8015('0x3e')]){_0x191531['include']=[{'all':!![]}];}_0x191531=_[_0x8015('0x38')]({},_0x191531,_0x264357[_0x8015('0x47')]);return db[_0x8015('0x26')][_0x8015('0x48')](_0x191531)[_0x8015('0x21')](handleEntityNotFound(_0x36aa07,null))[_0x8015('0x21')](respondWithResult(_0x36aa07,null))[_0x8015('0x49')](handleError(_0x36aa07,null));};exports[_0x8015('0x4a')]=function(_0x30f435,_0x338baa){return db[_0x8015('0x26')][_0x8015('0x4a')](_0x30f435['body'],{})[_0x8015('0x21')](respondWithResult(_0x338baa,0xc9))[_0x8015('0x49')](handleError(_0x338baa,null));};exports[_0x8015('0x4b')]=function(_0x3f5191,_0xfac047){return db[_0x8015('0x26')][_0x8015('0x48')]({'where':{'id':_0x3f5191['params']['id']}})[_0x8015('0x21')](handleEntityNotFound(_0xfac047,null))[_0x8015('0x21')](removeEntity(_0xfac047,null))[_0x8015('0x49')](handleError(_0xfac047,null));};exports['describe']=function(_0x5a5176,_0x3ffdd2){return db[_0x8015('0x26')][_0x8015('0x4c')]()[_0x8015('0x21')](respondWithResult(_0x3ffdd2,null))[_0x8015('0x49')](handleError(_0x3ffdd2,null));};exports[_0x8015('0x20')]=function(_0x42221d,_0x14a594){if(_0x42221d[_0x8015('0x4d')]['uniqueid']){delete _0x42221d[_0x8015('0x4d')][_0x8015('0x4e')];}return db['VoiceCallReport'][_0x8015('0x48')]({'where':{'uniqueid':_0x42221d[_0x8015('0x45')]['id'],'UserId':{'$or':[null,_0x42221d[_0x8015('0x4f')]['id']]}}})[_0x8015('0x21')](handleEntityNotFound(_0x14a594,null))[_0x8015('0x21')](saveUpdates(_0x42221d['body'],null))[_0x8015('0x21')](respondWithResult(_0x14a594,null))[_0x8015('0x49')](handleError(_0x14a594,null));};
\ No newline at end of file
index 72bc1ca..58f38b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1670=['exports','define','VoiceCallReport','report_call','lodash','util','api','bluebird','request-promise','./voiceCallReport.attributes'];(function(_0x239dba,_0x309e95){var _0x1ceb11=function(_0x14efe6){while(--_0x14efe6){_0x239dba['push'](_0x239dba['shift']());}};_0x1ceb11(++_0x309e95);}(_0x1670,0x9a));var _0x0167=function(_0x3892e3,_0x24cfbc){_0x3892e3=_0x3892e3-0x0;var _0x35ba3c=_0x1670[_0x3892e3];return _0x35ba3c;};'use strict';var _=require(_0x0167('0x0'));var util=require(_0x0167('0x1'));var logger=require('../../config/logger')(_0x0167('0x2'));var moment=require('moment');var BPromise=require(_0x0167('0x3'));var rp=require(_0x0167('0x4'));var attributes=require(_0x0167('0x5'));module[_0x0167('0x6')]=function(_0x5786d8,_0x5b2e79){return _0x5786d8[_0x0167('0x7')](_0x0167('0x8'),attributes,{'tableName':_0x0167('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2dfd=['exports','define','VoiceCallReport','lodash','util','../../config/logger','moment','bluebird','request-promise','./voiceCallReport.attributes'];(function(_0x45fd50,_0x13dfce){var _0xacb59=function(_0x40171e){while(--_0x40171e){_0x45fd50['push'](_0x45fd50['shift']());}};_0xacb59(++_0x13dfce);}(_0x2dfd,0x12f));var _0xd2df=function(_0x4109c7,_0x5d65ee){_0x4109c7=_0x4109c7-0x0;var _0x4889d2=_0x2dfd[_0x4109c7];return _0x4889d2;};'use strict';var _=require(_0xd2df('0x0'));var util=require(_0xd2df('0x1'));var logger=require(_0xd2df('0x2'))('api');var moment=require(_0xd2df('0x3'));var BPromise=require(_0xd2df('0x4'));var rp=require(_0xd2df('0x5'));var attributes=require(_0xd2df('0x6'));module[_0xd2df('0x7')]=function(_0x30f17d,_0x24fab0){return _0x30f17d[_0xd2df('0x8')](_0xd2df('0x9'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f865846..ae1adae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb52=['request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','message','VoiceCallReport,\x20%s,\x20%s','info','catch','VoiceCallReport','options','where','attributes','limit','map','include','model','GetVoiceCallReport','CreateVoiceCallReport','body','raw','UpdateVoiceCallReport','update','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x231fa3,_0x3181bc){var _0x3e27ed=function(_0x527078){while(--_0x527078){_0x231fa3['push'](_0x231fa3['shift']());}};_0x3e27ed(++_0x3181bc);}(_0xcb52,0x17f));var _0x2cb5=function(_0x107fb8,_0x1503dc){_0x107fb8=_0x107fb8-0x0;var _0x193322=_0xcb52[_0x107fb8];return _0x193322;};'use strict';var _=require('lodash');var util=require(_0x2cb5('0x0'));var moment=require(_0x2cb5('0x1'));var BPromise=require(_0x2cb5('0x2'));var rs=require(_0x2cb5('0x3'));var fs=require('fs');var Redis=require(_0x2cb5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2cb5('0x5'));var logger=require(_0x2cb5('0x6'))('rpc');var config=require(_0x2cb5('0x7'));var jayson=require(_0x2cb5('0x8'));var client=jayson[_0x2cb5('0x9')][_0x2cb5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x183441,_0x20491d,_0x47091c){return new BPromise(function(_0x3bbca8,_0x564cd9){return client[_0x2cb5('0xb')](_0x183441,_0x47091c)[_0x2cb5('0xc')](function(_0x44d547){logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x20491d,_0x2cb5('0xd'));logger[_0x2cb5('0xe')](_0x2cb5('0xf'),_0x20491d,_0x2cb5('0xd'),JSON[_0x2cb5('0x10')](_0x44d547));if(_0x44d547[_0x2cb5('0x11')]){if(_0x44d547[_0x2cb5('0x11')]['code']===0x1f4){logger[_0x2cb5('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x20491d,_0x44d547[_0x2cb5('0x11')][_0x2cb5('0x12')]);return _0x564cd9(_0x44d547['error'][_0x2cb5('0x12')]);}logger[_0x2cb5('0x11')](_0x2cb5('0x13'),_0x20491d,_0x44d547[_0x2cb5('0x11')][_0x2cb5('0x12')]);return _0x3bbca8(_0x44d547['error'][_0x2cb5('0x12')]);}else{logger[_0x2cb5('0x14')](_0x2cb5('0x13'),_0x20491d,_0x2cb5('0xd'));_0x3bbca8(_0x44d547['result'][_0x2cb5('0x12')]);}})[_0x2cb5('0x15')](function(_0x59bf8e){logger[_0x2cb5('0x11')](_0x2cb5('0x13'),_0x20491d,_0x59bf8e);_0x564cd9(_0x59bf8e);});});}exports['GetVoiceCallReport']=function(_0x5f59d1){var _0x5b61e1=this;return new Promise(function(_0x323ca0,_0x26bb51){return db[_0x2cb5('0x16')]['findAll']({'raw':_0x5f59d1[_0x2cb5('0x17')]?_0x5f59d1['options']['raw']===undefined?!![]:![]:!![],'where':_0x5f59d1[_0x2cb5('0x17')]?_0x5f59d1[_0x2cb5('0x17')][_0x2cb5('0x18')]||null:null,'attributes':_0x5f59d1[_0x2cb5('0x17')]?_0x5f59d1[_0x2cb5('0x17')][_0x2cb5('0x19')]||null:null,'limit':_0x5f59d1[_0x2cb5('0x17')]?_0x5f59d1['options'][_0x2cb5('0x1a')]||null:null,'include':_0x5f59d1['options']?_0x5f59d1[_0x2cb5('0x17')]['include']?_[_0x2cb5('0x1b')](_0x5f59d1['options'][_0x2cb5('0x1c')],function(_0x5e58aa){return{'model':db[_0x5e58aa[_0x2cb5('0x1d')]],'as':_0x5e58aa['as'],'attributes':_0x5e58aa[_0x2cb5('0x19')],'include':_0x5e58aa['include']?_[_0x2cb5('0x1b')](_0x5e58aa[_0x2cb5('0x1c')],function(_0x4fb7b5){return{'model':db[_0x4fb7b5[_0x2cb5('0x1d')]],'as':_0x4fb7b5['as'],'attributes':_0x4fb7b5['attributes'],'include':_0x4fb7b5[_0x2cb5('0x1c')]?_[_0x2cb5('0x1b')](_0x4fb7b5[_0x2cb5('0x1c')],function(_0x2fb5a7){return{'model':db[_0x2fb5a7[_0x2cb5('0x1d')]],'as':_0x2fb5a7['as'],'attributes':_0x2fb5a7[_0x2cb5('0x19')]};}):[]};}):[]};}):[]:[]})[_0x2cb5('0xc')](function(_0xfe799f){logger[_0x2cb5('0x14')](_0x2cb5('0x1e'),_0x5f59d1);logger[_0x2cb5('0xe')](_0x2cb5('0x1e'),_0x5f59d1,JSON[_0x2cb5('0x10')](_0xfe799f));_0x323ca0(_0xfe799f);})[_0x2cb5('0x15')](function(_0x153357){logger['error'](_0x2cb5('0x1e'),_0x153357[_0x2cb5('0x12')],_0x5f59d1);_0x26bb51(_0x5b61e1[_0x2cb5('0x11')](0x1f4,_0x153357[_0x2cb5('0x12')]));});});};exports[_0x2cb5('0x1f')]=function(_0x5b7d3d){var _0x546f08=this;return new Promise(function(_0x12eb74,_0x45eb80){return db[_0x2cb5('0x16')]['create'](_0x5b7d3d[_0x2cb5('0x20')],{'raw':_0x5b7d3d[_0x2cb5('0x17')]?_0x5b7d3d[_0x2cb5('0x17')][_0x2cb5('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x56d223){logger[_0x2cb5('0x14')](_0x2cb5('0x1f'),_0x5b7d3d);logger[_0x2cb5('0xe')](_0x2cb5('0x1f'),_0x5b7d3d,JSON[_0x2cb5('0x10')](_0x56d223));_0x12eb74(_0x56d223);})[_0x2cb5('0x15')](function(_0x33fe00){logger[_0x2cb5('0x11')]('CreateVoiceCallReport',_0x33fe00[_0x2cb5('0x12')],_0x5b7d3d);_0x45eb80(_0x546f08[_0x2cb5('0x11')](0x1f4,_0x33fe00[_0x2cb5('0x12')]));});});};exports[_0x2cb5('0x22')]=function(_0x551fed){var _0x12648a=this;return new Promise(function(_0xa1e0d7,_0x29fee6){return db[_0x2cb5('0x16')][_0x2cb5('0x23')](_0x551fed[_0x2cb5('0x20')],{'raw':_0x551fed[_0x2cb5('0x17')]?_0x551fed[_0x2cb5('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x551fed[_0x2cb5('0x17')]?_0x551fed[_0x2cb5('0x17')][_0x2cb5('0x18')]||null:null,'attributes':_0x551fed[_0x2cb5('0x17')]?_0x551fed[_0x2cb5('0x17')][_0x2cb5('0x19')]||null:null,'limit':_0x551fed[_0x2cb5('0x17')]?_0x551fed[_0x2cb5('0x17')][_0x2cb5('0x1a')]||null:null})['then'](function(_0x1f3a0a){logger[_0x2cb5('0x14')](_0x2cb5('0x22'),_0x551fed);logger[_0x2cb5('0xe')]('UpdateVoiceCallReport',_0x551fed,JSON['stringify'](_0x1f3a0a));_0xa1e0d7(_0x1f3a0a);})['catch'](function(_0x4db7ec){logger['error'](_0x2cb5('0x22'),_0x4db7ec[_0x2cb5('0x12')],_0x551fed);_0x29fee6(_0x12648a[_0x2cb5('0x11')](0x1f4,_0x4db7ec[_0x2cb5('0x12')]));});});};
\ No newline at end of file
+var _0x54d8=['http','request','then','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','GetVoiceCallReport','VoiceCallReport','options','raw','where','limit','include','model','attributes','map','CreateVoiceCallReport','create','body','stringify','update','UpdateVoiceCallReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0x54d8,0x184));var _0x854d=function(_0x11c573,_0x9e7c6e){_0x11c573=_0x11c573-0x0;var _0x6b72de=_0x54d8[_0x11c573];return _0x6b72de;};'use strict';var _=require(_0x854d('0x0'));var util=require(_0x854d('0x1'));var moment=require(_0x854d('0x2'));var BPromise=require(_0x854d('0x3'));var rs=require(_0x854d('0x4'));var fs=require('fs');var Redis=require(_0x854d('0x5'));var db=require(_0x854d('0x6'))['db'];var utils=require(_0x854d('0x7'));var logger=require('../../config/logger')(_0x854d('0x8'));var config=require(_0x854d('0x9'));var jayson=require(_0x854d('0xa'));var client=jayson[_0x854d('0xb')][_0x854d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x453f39,_0x41f6c5,_0x1e166a){return new BPromise(function(_0x161db8,_0x1aa2b5){return client[_0x854d('0xd')](_0x453f39,_0x1e166a)[_0x854d('0xe')](function(_0x380ba1){logger['info'](_0x854d('0xf'),_0x41f6c5,_0x854d('0x10'));logger[_0x854d('0x11')](_0x854d('0x12'),_0x41f6c5,_0x854d('0x10'),JSON['stringify'](_0x380ba1));if(_0x380ba1[_0x854d('0x13')]){if(_0x380ba1[_0x854d('0x13')][_0x854d('0x14')]===0x1f4){logger['error'](_0x854d('0xf'),_0x41f6c5,_0x380ba1[_0x854d('0x13')][_0x854d('0x15')]);return _0x1aa2b5(_0x380ba1[_0x854d('0x13')]['message']);}logger[_0x854d('0x13')](_0x854d('0xf'),_0x41f6c5,_0x380ba1[_0x854d('0x13')][_0x854d('0x15')]);return _0x161db8(_0x380ba1[_0x854d('0x13')][_0x854d('0x15')]);}else{logger[_0x854d('0x16')](_0x854d('0xf'),_0x41f6c5,'request\x20sent');_0x161db8(_0x380ba1['result']['message']);}})[_0x854d('0x17')](function(_0x479cba){logger[_0x854d('0x13')](_0x854d('0xf'),_0x41f6c5,_0x479cba);_0x1aa2b5(_0x479cba);});});}exports[_0x854d('0x18')]=function(_0x2d75d0){var _0x6c9f79=this;return new Promise(function(_0x51f0c4,_0x1b510f){return db[_0x854d('0x19')]['findAll']({'raw':_0x2d75d0[_0x854d('0x1a')]?_0x2d75d0[_0x854d('0x1a')][_0x854d('0x1b')]===undefined?!![]:![]:!![],'where':_0x2d75d0[_0x854d('0x1a')]?_0x2d75d0[_0x854d('0x1a')][_0x854d('0x1c')]||null:null,'attributes':_0x2d75d0[_0x854d('0x1a')]?_0x2d75d0['options']['attributes']||null:null,'limit':_0x2d75d0[_0x854d('0x1a')]?_0x2d75d0[_0x854d('0x1a')][_0x854d('0x1d')]||null:null,'include':_0x2d75d0[_0x854d('0x1a')]?_0x2d75d0[_0x854d('0x1a')][_0x854d('0x1e')]?_['map'](_0x2d75d0['options'][_0x854d('0x1e')],function(_0x1ed234){return{'model':db[_0x1ed234[_0x854d('0x1f')]],'as':_0x1ed234['as'],'attributes':_0x1ed234[_0x854d('0x20')],'include':_0x1ed234[_0x854d('0x1e')]?_[_0x854d('0x21')](_0x1ed234[_0x854d('0x1e')],function(_0x5ae67f){return{'model':db[_0x5ae67f[_0x854d('0x1f')]],'as':_0x5ae67f['as'],'attributes':_0x5ae67f[_0x854d('0x20')],'include':_0x5ae67f[_0x854d('0x1e')]?_[_0x854d('0x21')](_0x5ae67f[_0x854d('0x1e')],function(_0x11b5ce){return{'model':db[_0x11b5ce[_0x854d('0x1f')]],'as':_0x11b5ce['as'],'attributes':_0x11b5ce[_0x854d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x854d('0xe')](function(_0x205cea){logger[_0x854d('0x16')](_0x854d('0x18'),_0x2d75d0);logger[_0x854d('0x11')]('GetVoiceCallReport',_0x2d75d0,JSON['stringify'](_0x205cea));_0x51f0c4(_0x205cea);})[_0x854d('0x17')](function(_0x4b40e7){logger['error'](_0x854d('0x18'),_0x4b40e7[_0x854d('0x15')],_0x2d75d0);_0x1b510f(_0x6c9f79[_0x854d('0x13')](0x1f4,_0x4b40e7[_0x854d('0x15')]));});});};exports[_0x854d('0x22')]=function(_0x580e58){var _0x265d58=this;return new Promise(function(_0x5a3db3,_0x5d99ee){return db[_0x854d('0x19')][_0x854d('0x23')](_0x580e58[_0x854d('0x24')],{'raw':_0x580e58['options']?_0x580e58[_0x854d('0x1a')][_0x854d('0x1b')]===undefined?!![]:![]:!![]})[_0x854d('0xe')](function(_0x3fdc0d){logger[_0x854d('0x16')](_0x854d('0x22'),_0x580e58);logger[_0x854d('0x11')]('CreateVoiceCallReport',_0x580e58,JSON[_0x854d('0x25')](_0x3fdc0d));_0x5a3db3(_0x3fdc0d);})[_0x854d('0x17')](function(_0x26aae8){logger[_0x854d('0x13')]('CreateVoiceCallReport',_0x26aae8[_0x854d('0x15')],_0x580e58);_0x5d99ee(_0x265d58[_0x854d('0x13')](0x1f4,_0x26aae8[_0x854d('0x15')]));});});};exports['UpdateVoiceCallReport']=function(_0x3fd6a2){var _0x5f53ca=this;return new Promise(function(_0x5b0b89,_0x306282){return db[_0x854d('0x19')][_0x854d('0x26')](_0x3fd6a2[_0x854d('0x24')],{'raw':_0x3fd6a2[_0x854d('0x1a')]?_0x3fd6a2['options'][_0x854d('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fd6a2[_0x854d('0x1a')]?_0x3fd6a2[_0x854d('0x1a')]['where']||null:null,'attributes':_0x3fd6a2[_0x854d('0x1a')]?_0x3fd6a2[_0x854d('0x1a')]['attributes']||null:null,'limit':_0x3fd6a2[_0x854d('0x1a')]?_0x3fd6a2['options'][_0x854d('0x1d')]||null:null})['then'](function(_0x3247ad){logger[_0x854d('0x16')](_0x854d('0x27'),_0x3fd6a2);logger[_0x854d('0x11')](_0x854d('0x27'),_0x3fd6a2,JSON['stringify'](_0x3247ad));_0x5b0b89(_0x3247ad);})[_0x854d('0x17')](function(_0x541808){logger[_0x854d('0x13')]('UpdateVoiceCallReport',_0x541808[_0x854d('0x15')],_0x3fd6a2);_0x306282(_0x5f53ca['error'](0x1f4,_0x541808[_0x854d('0x15')]));});});};
\ No newline at end of file
index 79fb6b2..537f8fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2ea=['/:id','isAuthenticated','put','destroy','exports','util','connect-timeout','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','get','index'];(function(_0x581e01,_0x241cbd){var _0x558b54=function(_0x22a370){while(--_0x22a370){_0x581e01['push'](_0x581e01['shift']());}};_0x558b54(++_0x241cbd);}(_0xe2ea,0x101));var _0xae2e=function(_0x15a019,_0x4b85cc){_0x15a019=_0x15a019-0x0;var _0x1e0bac=_0xe2ea[_0x15a019];return _0x1e0bac;};'use strict';var multer=require('multer');var util=require(_0xae2e('0x0'));var path=require('path');var timeout=require(_0xae2e('0x1'));var express=require('express');var router=express['Router']();var auth=require(_0xae2e('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xae2e('0x3'));var controller=require(_0xae2e('0x4'));router[_0xae2e('0x5')]('/',auth['isAuthenticated'](),controller[_0xae2e('0x6')]);router[_0xae2e('0x5')](_0xae2e('0x7'),auth[_0xae2e('0x8')](),controller['show']);router['post']('/',auth[_0xae2e('0x8')](),controller['create']);router[_0xae2e('0x9')](_0xae2e('0x7'),auth[_0xae2e('0x8')](),controller['update']);router['delete'](_0xae2e('0x7'),auth[_0xae2e('0x8')](),controller[_0xae2e('0xa')]);module[_0xae2e('0xb')]=router;
\ No newline at end of file
+var _0x9a65=['express','Router','../../components/interaction/service','get','isAuthenticated','index','/:id','show','put','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x13c5a9,_0x547d90){var _0x25f7dc=function(_0x1fe88e){while(--_0x1fe88e){_0x13c5a9['push'](_0x13c5a9['shift']());}};_0x25f7dc(++_0x547d90);}(_0x9a65,0x1cd));var _0x59a6=function(_0x308213,_0x224541){_0x308213=_0x308213-0x0;var _0x2e1619=_0x9a65[_0x308213];return _0x2e1619;};'use strict';var multer=require('multer');var util=require(_0x59a6('0x0'));var path=require(_0x59a6('0x1'));var timeout=require(_0x59a6('0x2'));var express=require(_0x59a6('0x3'));var router=express[_0x59a6('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0x59a6('0x5'));var config=require('../../config/environment');var controller=require('./voiceChanSpy.controller');router[_0x59a6('0x6')]('/',auth[_0x59a6('0x7')](),controller[_0x59a6('0x8')]);router['get'](_0x59a6('0x9'),auth[_0x59a6('0x7')](),controller[_0x59a6('0xa')]);router['post']('/',auth[_0x59a6('0x7')](),controller['create']);router[_0x59a6('0xb')](_0x59a6('0x9'),auth[_0x59a6('0x7')](),controller[_0x59a6('0xc')]);router[_0x59a6('0xd')](_0x59a6('0x9'),auth['isAuthenticated'](),controller[_0x59a6('0xe')]);module[_0x59a6('0xf')]=router;
\ No newline at end of file
index 8bfb054..36293c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00c6=['options','join','getDataValue','split','BOOLEAN','sequelize','STRING','setDataValue'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x00c6,0x18d));var _0x600c=function(_0x4d1828,_0x103c6b){_0x4d1828=_0x4d1828-0x0;var _0x32a374=_0x00c6[_0x4d1828];return _0x32a374;};'use strict';var Sequelize=require(_0x600c('0x0'));module['exports']={'name':{'type':Sequelize[_0x600c('0x1')]},'prefix':{'type':Sequelize[_0x600c('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0xc17046){this[_0x600c('0x2')](_0x600c('0x3'),_0xc17046?_0xc17046[_0x600c('0x4')](''):[]);},'get':function(){return this[_0x600c('0x5')](_0x600c('0x3'))?this[_0x600c('0x5')](_0x600c('0x3'))[_0x600c('0x6')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0x600c('0x1')]},'record':{'type':Sequelize[_0x600c('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x600c('0x1')]}};
\ No newline at end of file
+var _0xec2f=['join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name','setDataValue'];(function(_0x24c6bb,_0x251606){var _0x492690=function(_0x5e0dd5){while(--_0x5e0dd5){_0x24c6bb['push'](_0x24c6bb['shift']());}};_0x492690(++_0x251606);}(_0xec2f,0x1e1));var _0xfec2=function(_0x138130,_0x200048){_0x138130=_0x138130-0x0;var _0x20cbcc=_0xec2f[_0x138130];return _0x20cbcc;};'use strict';var Sequelize=require(_0xfec2('0x0'));module[_0xfec2('0x1')]={'name':{'type':Sequelize[_0xfec2('0x2')]},'prefix':{'type':Sequelize[_0xfec2('0x2')],'unique':_0xfec2('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0xfec2('0x2')],'set':function(_0x24adc1){this[_0xfec2('0x4')]('options',_0x24adc1?_0x24adc1[_0xfec2('0x5')](''):[]);},'get':function(){return this[_0xfec2('0x6')]('options')?this['getDataValue']('options')[_0xfec2('0x7')](''):[];}},'auth':{'type':Sequelize[_0xfec2('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0xfec2('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xfec2('0x2')]},'description':{'type':Sequelize[_0xfec2('0x2')]}};
\ No newline at end of file
index 8aafb43..16a4260 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c7b=['where','pick','add','day','filter','map','type','field','merge','count','include','findAll','catch','show','params','options','find','create','body','get','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','html-pdf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','limit','set','Content-Range','apply','reject','save','then','ChanSpies','UserProfileResource','destroy','error','stack','name','send','VoiceChanSpy','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','fields','attributes','length','hasOwnProperty','sort'];(function(_0x320b2f,_0x5d5c0a){var _0x10766e=function(_0x1838b4){while(--_0x1838b4){_0x320b2f['push'](_0x320b2f['shift']());}};_0x10766e(++_0x5d5c0a);}(_0x6c7b,0x10b));var _0xb6c7=function(_0x5607f9,_0x2036fe){_0x5607f9=_0x5607f9-0x0;var _0x240a62=_0x6c7b[_0x5607f9];return _0x240a62;};'use strict';var pdf=require(_0xb6c7('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb6c7('0x1'));var rp=require('request-promise');var moment=require(_0xb6c7('0x2'));var BPromise=require(_0xb6c7('0x3'));var Mustache=require(_0xb6c7('0x4'));var util=require('util');var path=require(_0xb6c7('0x5'));var sox=require(_0xb6c7('0x6'));var csv=require(_0xb6c7('0x7'));var ejs=require(_0xb6c7('0x8'));var fs=require('fs');var _=require(_0xb6c7('0x9'));var squel=require('squel');var crypto=require(_0xb6c7('0xa'));var jsforce=require(_0xb6c7('0xb'));var deskjs=require(_0xb6c7('0xc'));var toCsv=require(_0xb6c7('0x7'));var querystring=require(_0xb6c7('0xd'));var Papa=require(_0xb6c7('0xe'));var Redis=require(_0xb6c7('0xf'));var qs=require(_0xb6c7('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0xb6c7('0x11'));var config=require(_0xb6c7('0x12'));var db=require(_0xb6c7('0x13'))['db'];function respondWithStatusCode(_0x116ad8,_0x12e92f){_0x12e92f=_0x12e92f||0xcc;return function(_0x30fc73){if(_0x30fc73){return _0x116ad8[_0xb6c7('0x14')](_0x12e92f);}return _0x116ad8['status'](_0x12e92f)[_0xb6c7('0x15')]();};}function respondWithResult(_0xa858c5,_0x6b946){_0x6b946=_0x6b946||0xc8;return function(_0xd6fb50){if(_0xd6fb50){return _0xa858c5[_0xb6c7('0x16')](_0x6b946)[_0xb6c7('0x17')](_0xd6fb50);}};}function respondWithFilteredResult(_0x147e4a,_0x561eb4){return function(_0x3c7ff4){if(_0x3c7ff4){var _0x4e4c3f=_0x3c7ff4['count'],_0x480d9a=_0x561eb4[_0xb6c7('0x18')],_0x5d5428=_0x561eb4[_0xb6c7('0x18')]+_0x561eb4[_0xb6c7('0x19')],_0x19c145;if(_0x5d5428>=_0x4e4c3f){_0x5d5428=_0x4e4c3f;_0x19c145=0xc8;}else{_0x19c145=0xce;}_0x147e4a[_0xb6c7('0x16')](_0x19c145);return _0x147e4a[_0xb6c7('0x1a')](_0xb6c7('0x1b'),_0x480d9a+'-'+_0x5d5428+'/'+_0x4e4c3f)[_0xb6c7('0x17')](_0x3c7ff4);}return null;};}function patchUpdates(_0x1317f5){return function(_0x1a591f){try{jsonpatch[_0xb6c7('0x1c')](_0x1a591f,_0x1317f5,!![]);}catch(_0xef5eb1){return BPromise[_0xb6c7('0x1d')](_0xef5eb1);}return _0x1a591f[_0xb6c7('0x1e')]();};}function saveUpdates(_0x5b5022,_0x274f76){return function(_0x1cbcc8){if(_0x1cbcc8){return _0x1cbcc8['update'](_0x5b5022)[_0xb6c7('0x1f')](function(_0x5a1c0a){return _0x5a1c0a;});}return null;};}function removeEntity(_0x37f7cb,_0x5b7ebf){return function(_0x141db2){if(_0x141db2){return _0x141db2['destroy']()[_0xb6c7('0x1f')](function(){var _0x146dd4=_0x141db2['get']({'plain':!![]});var _0x3bc4b1=_0xb6c7('0x20');return db[_0xb6c7('0x21')][_0xb6c7('0x22')]({'where':{'type':_0x3bc4b1,'resourceId':_0x146dd4['id']}})[_0xb6c7('0x1f')](function(){return _0x141db2;});})[_0xb6c7('0x1f')](function(){_0x37f7cb['status'](0xcc)[_0xb6c7('0x15')]();});}};}function handleEntityNotFound(_0x1f4e06,_0x209a21){return function(_0x418920){if(!_0x418920){_0x1f4e06['sendStatus'](0x194);}return _0x418920;};}function handleError(_0x1eb265,_0xcf817b){_0xcf817b=_0xcf817b||0x1f4;return function(_0x49909e){logger[_0xb6c7('0x23')](_0x49909e[_0xb6c7('0x24')]);if(_0x49909e[_0xb6c7('0x25')]){delete _0x49909e[_0xb6c7('0x25')];}_0x1eb265['status'](_0xcf817b)[_0xb6c7('0x26')](_0x49909e);};}exports['index']=function(_0x31e014,_0x1ee244){var _0x232f7f={},_0x5f3be2={},_0x47acab={'count':0x0,'rows':[]};var _0x4f19da=db[_0xb6c7('0x27')][_0xb6c7('0x28')];_0x5f3be2[_0xb6c7('0x29')]=_[_0xb6c7('0x2a')](_0x4f19da);var _0x41e46c={'dateStart':_0x31e014[_0xb6c7('0x2b')][_0xb6c7('0x2c')],'dateEnd':_0x31e014[_0xb6c7('0x2b')][_0xb6c7('0x2d')]};delete _0x31e014[_0xb6c7('0x2b')]['dateStart'];delete _0x31e014[_0xb6c7('0x2b')]['dateEnd'];_0x5f3be2[_0xb6c7('0x2b')]=_[_0xb6c7('0x2a')](_0x31e014[_0xb6c7('0x2b')]);_0x5f3be2[_0xb6c7('0x2e')]=_[_0xb6c7('0x2f')](_0x5f3be2['model'],_0x5f3be2['query']);_0x232f7f['attributes']=_[_0xb6c7('0x2f')](_0x5f3be2[_0xb6c7('0x29')],qs['fields'](_0x31e014[_0xb6c7('0x2b')][_0xb6c7('0x30')]));_0x232f7f['attributes']=_0x232f7f[_0xb6c7('0x31')][_0xb6c7('0x32')]?_0x232f7f[_0xb6c7('0x31')]:_0x5f3be2[_0xb6c7('0x29')];if(!_0x31e014[_0xb6c7('0x2b')][_0xb6c7('0x33')]('nolimit')){_0x232f7f[_0xb6c7('0x19')]=qs[_0xb6c7('0x19')](_0x31e014[_0xb6c7('0x2b')][_0xb6c7('0x19')]);_0x232f7f[_0xb6c7('0x18')]=qs[_0xb6c7('0x18')](_0x31e014[_0xb6c7('0x2b')]['offset']);}_0x232f7f['order']=qs[_0xb6c7('0x34')](_0x31e014[_0xb6c7('0x2b')][_0xb6c7('0x34')]);_0x232f7f[_0xb6c7('0x35')]=qs[_0xb6c7('0x2e')](_[_0xb6c7('0x36')](_0x31e014[_0xb6c7('0x2b')],_0x5f3be2[_0xb6c7('0x2e')]));if(_0x41e46c[_0xb6c7('0x2c')]){if(_0x41e46c[_0xb6c7('0x2d')]){_0x41e46c['dateEnd']=moment(_0x41e46c[_0xb6c7('0x2d')])['add'](0x1,'day');}else{_0x41e46c[_0xb6c7('0x2d')]=moment(_0x41e46c['dateStart'])[_0xb6c7('0x37')](0x1,_0xb6c7('0x38'));}_['merge'](_0x232f7f[_0xb6c7('0x35')],{'createdAt':{'$gte':_0x41e46c[_0xb6c7('0x2c')],'$lte':_0x41e46c[_0xb6c7('0x2d')]}});}if(_0x31e014[_0xb6c7('0x2b')][_0xb6c7('0x39')]){_0x232f7f['where']=_['merge'](_0x232f7f[_0xb6c7('0x35')],{'$or':_[_0xb6c7('0x3a')](_0x4f19da,function(_0xb7f85b){if(_0xb7f85b[_0xb6c7('0x3b')]['key']!=='VIRTUAL'){var _0xb699ce={};_0xb699ce[_0xb7f85b[_0xb6c7('0x3c')]]={'$like':'%'+_0x31e014[_0xb6c7('0x2b')][_0xb6c7('0x39')]+'%'};return _0xb699ce;}})});}_0x232f7f=_[_0xb6c7('0x3d')]({},_0x232f7f,_0x31e014['options']);var _0x4e0888={'where':_0x232f7f['where']};return db[_0xb6c7('0x27')][_0xb6c7('0x3e')](_0x4e0888)[_0xb6c7('0x1f')](function(_0x5050c9){_0x47acab[_0xb6c7('0x3e')]=_0x5050c9;if(_0x31e014[_0xb6c7('0x2b')]['includeAll']){_0x232f7f[_0xb6c7('0x3f')]=[{'all':!![]}];}return db[_0xb6c7('0x27')][_0xb6c7('0x40')](_0x232f7f);})[_0xb6c7('0x1f')](function(_0x3a1774){_0x47acab['rows']=_0x3a1774;return _0x47acab;})[_0xb6c7('0x1f')](respondWithFilteredResult(_0x1ee244,_0x232f7f))[_0xb6c7('0x41')](handleError(_0x1ee244,null));};exports[_0xb6c7('0x42')]=function(_0x5ca74a,_0x5b1c88){var _0x1565b5={'raw':![],'where':{'id':_0x5ca74a[_0xb6c7('0x43')]['id']}},_0x37b131={};_0x37b131['model']=_['keys'](db['VoiceChanSpy'][_0xb6c7('0x28')]);_0x37b131[_0xb6c7('0x2b')]=_[_0xb6c7('0x2a')](_0x5ca74a[_0xb6c7('0x2b')]);_0x37b131[_0xb6c7('0x2e')]=_[_0xb6c7('0x2f')](_0x37b131[_0xb6c7('0x29')],_0x37b131['query']);_0x1565b5[_0xb6c7('0x31')]=_[_0xb6c7('0x2f')](_0x37b131[_0xb6c7('0x29')],qs[_0xb6c7('0x30')](_0x5ca74a[_0xb6c7('0x2b')]['fields']));_0x1565b5[_0xb6c7('0x31')]=_0x1565b5[_0xb6c7('0x31')][_0xb6c7('0x32')]?_0x1565b5[_0xb6c7('0x31')]:_0x37b131[_0xb6c7('0x29')];if(_0x5ca74a[_0xb6c7('0x2b')]['includeAll']){_0x1565b5[_0xb6c7('0x3f')]=[{'all':!![]}];}_0x1565b5=_[_0xb6c7('0x3d')]({},_0x1565b5,_0x5ca74a[_0xb6c7('0x44')]);return db[_0xb6c7('0x27')][_0xb6c7('0x45')](_0x1565b5)[_0xb6c7('0x1f')](handleEntityNotFound(_0x5b1c88,null))[_0xb6c7('0x1f')](respondWithResult(_0x5b1c88,null))['catch'](handleError(_0x5b1c88,null));};exports['create']=function(_0x4fd77d,_0xbf1903){return db[_0xb6c7('0x27')][_0xb6c7('0x46')](_0x4fd77d[_0xb6c7('0x47')],{})[_0xb6c7('0x1f')](function(_0x2002f8){var _0x581da8=_0x4fd77d['user'][_0xb6c7('0x48')]({'plain':!![]});if(!_0x581da8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x581da8[_0xb6c7('0x49')]===_0xb6c7('0x4a')){var _0x398c59=_0x2002f8[_0xb6c7('0x48')]({'plain':!![]});var _0x317a4b='ChanSpies';return db[_0xb6c7('0x4b')]['find']({'where':{'name':_0x317a4b,'userProfileId':_0x581da8[_0xb6c7('0x4c')]},'raw':!![]})[_0xb6c7('0x1f')](function(_0x345c85){if(_0x345c85&&_0x345c85[_0xb6c7('0x4d')]===0x0){return db[_0xb6c7('0x21')]['create']({'name':_0x398c59[_0xb6c7('0x25')],'resourceId':_0x398c59['id'],'type':_0x345c85[_0xb6c7('0x25')],'sectionId':_0x345c85['id']},{})[_0xb6c7('0x1f')](function(){return _0x2002f8;});}else{return _0x2002f8;}})[_0xb6c7('0x41')](function(_0x416083){logger[_0xb6c7('0x23')](_0xb6c7('0x4e'),_0x416083);throw _0x416083;});}return _0x2002f8;})[_0xb6c7('0x1f')](respondWithResult(_0xbf1903,0xc9))['catch'](handleError(_0xbf1903,null));};exports[_0xb6c7('0x4f')]=function(_0xcd56e2,_0x3b8326){if(_0xcd56e2[_0xb6c7('0x47')]['id']){delete _0xcd56e2[_0xb6c7('0x47')]['id'];}return db[_0xb6c7('0x27')]['find']({'where':{'id':_0xcd56e2[_0xb6c7('0x43')]['id']}})[_0xb6c7('0x1f')](handleEntityNotFound(_0x3b8326,null))[_0xb6c7('0x1f')](saveUpdates(_0xcd56e2[_0xb6c7('0x47')],null))['then'](respondWithResult(_0x3b8326,null))[_0xb6c7('0x41')](handleError(_0x3b8326,null));};exports[_0xb6c7('0x22')]=function(_0x76047c,_0x297a29){return db[_0xb6c7('0x27')][_0xb6c7('0x45')]({'where':{'id':_0x76047c[_0xb6c7('0x43')]['id']}})['then'](handleEntityNotFound(_0x297a29,null))[_0xb6c7('0x1f')](removeEntity(_0x297a29,null))[_0xb6c7('0x41')](handleError(_0x297a29,null));};
\ No newline at end of file
+var _0xdbf5=['UserProfileResource','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../mysqldb','status','end','count','offset','set','Content-Range','json','update','then','destroy','get','ChanSpies','sendStatus','error','stack','name','send','index','VoiceChanSpy','rawAttributes','model','keys','query','dateStart','dateEnd','filters','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','add','day','merge','filter','map','field','includeAll','include','findAll','catch','show','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation'];(function(_0x4c67b8,_0x571e13){var _0xbc26e=function(_0x16e9ac){while(--_0x16e9ac){_0x4c67b8['push'](_0x4c67b8['shift']());}};_0xbc26e(++_0x571e13);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x36f256,_0x1988be){_0x36f256=_0x36f256-0x0;var _0x2ed99d=_0xdbf5[_0x36f256];return _0x2ed99d;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x5dbf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5dbf('0x1'));var rp=require(_0x5dbf('0x2'));var moment=require(_0x5dbf('0x3'));var BPromise=require(_0x5dbf('0x4'));var Mustache=require(_0x5dbf('0x5'));var util=require(_0x5dbf('0x6'));var path=require(_0x5dbf('0x7'));var sox=require(_0x5dbf('0x8'));var csv=require(_0x5dbf('0x9'));var ejs=require(_0x5dbf('0xa'));var fs=require('fs');var _=require(_0x5dbf('0xb'));var squel=require(_0x5dbf('0xc'));var crypto=require(_0x5dbf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5dbf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5dbf('0xf'));var Papa=require(_0x5dbf('0x10'));var Redis=require(_0x5dbf('0x11'));var qs=require(_0x5dbf('0x12'));var logger=require('../../config/logger')(_0x5dbf('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x5dbf('0x14'))['db'];function respondWithStatusCode(_0x5dbc97,_0x493dc8){_0x493dc8=_0x493dc8||0xcc;return function(_0x466471){if(_0x466471){return _0x5dbc97['sendStatus'](_0x493dc8);}return _0x5dbc97[_0x5dbf('0x15')](_0x493dc8)[_0x5dbf('0x16')]();};}function respondWithResult(_0x1453a9,_0x7cb848){_0x7cb848=_0x7cb848||0xc8;return function(_0x14493a){if(_0x14493a){return _0x1453a9['status'](_0x7cb848)['json'](_0x14493a);}};}function respondWithFilteredResult(_0x2b4e1c,_0x3480c8){return function(_0x48e7fd){if(_0x48e7fd){var _0x19624e=_0x48e7fd[_0x5dbf('0x17')],_0x248e3c=_0x3480c8[_0x5dbf('0x18')],_0x23f763=_0x3480c8[_0x5dbf('0x18')]+_0x3480c8['limit'],_0x2dfa44;if(_0x23f763>=_0x19624e){_0x23f763=_0x19624e;_0x2dfa44=0xc8;}else{_0x2dfa44=0xce;}_0x2b4e1c['status'](_0x2dfa44);return _0x2b4e1c[_0x5dbf('0x19')](_0x5dbf('0x1a'),_0x248e3c+'-'+_0x23f763+'/'+_0x19624e)[_0x5dbf('0x1b')](_0x48e7fd);}return null;};}function patchUpdates(_0x14abf7){return function(_0x20c2b0){try{jsonpatch['apply'](_0x20c2b0,_0x14abf7,!![]);}catch(_0x11cd00){return BPromise['reject'](_0x11cd00);}return _0x20c2b0['save']();};}function saveUpdates(_0x577ca2,_0x23d1e7){return function(_0x3cedac){if(_0x3cedac){return _0x3cedac[_0x5dbf('0x1c')](_0x577ca2)[_0x5dbf('0x1d')](function(_0x1e3cce){return _0x1e3cce;});}return null;};}function removeEntity(_0x5b2518,_0x2764ea){return function(_0x58e9ac){if(_0x58e9ac){return _0x58e9ac[_0x5dbf('0x1e')]()[_0x5dbf('0x1d')](function(){var _0x14d133=_0x58e9ac[_0x5dbf('0x1f')]({'plain':!![]});var _0x3b763c=_0x5dbf('0x20');return db['UserProfileResource'][_0x5dbf('0x1e')]({'where':{'type':_0x3b763c,'resourceId':_0x14d133['id']}})[_0x5dbf('0x1d')](function(){return _0x58e9ac;});})[_0x5dbf('0x1d')](function(){_0x5b2518[_0x5dbf('0x15')](0xcc)[_0x5dbf('0x16')]();});}};}function handleEntityNotFound(_0x226b93,_0x290456){return function(_0x20ab1b){if(!_0x20ab1b){_0x226b93[_0x5dbf('0x21')](0x194);}return _0x20ab1b;};}function handleError(_0x15a790,_0x9e15ac){_0x9e15ac=_0x9e15ac||0x1f4;return function(_0x232c77){logger[_0x5dbf('0x22')](_0x232c77[_0x5dbf('0x23')]);if(_0x232c77[_0x5dbf('0x24')]){delete _0x232c77[_0x5dbf('0x24')];}_0x15a790[_0x5dbf('0x15')](_0x9e15ac)[_0x5dbf('0x25')](_0x232c77);};}exports[_0x5dbf('0x26')]=function(_0x22ec42,_0x6a9757){var _0x471027={},_0x21cd00={},_0x5768b7={'count':0x0,'rows':[]};var _0x2f71eb=db[_0x5dbf('0x27')][_0x5dbf('0x28')];_0x21cd00[_0x5dbf('0x29')]=_[_0x5dbf('0x2a')](_0x2f71eb);var _0x6a276d={'dateStart':_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x2c')],'dateEnd':_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x2d')]};delete _0x22ec42[_0x5dbf('0x2b')]['dateStart'];delete _0x22ec42['query'][_0x5dbf('0x2d')];_0x21cd00[_0x5dbf('0x2b')]=_[_0x5dbf('0x2a')](_0x22ec42[_0x5dbf('0x2b')]);_0x21cd00[_0x5dbf('0x2e')]=_['intersection'](_0x21cd00['model'],_0x21cd00[_0x5dbf('0x2b')]);_0x471027[_0x5dbf('0x2f')]=_['intersection'](_0x21cd00[_0x5dbf('0x29')],qs[_0x5dbf('0x30')](_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x30')]));_0x471027[_0x5dbf('0x2f')]=_0x471027['attributes'][_0x5dbf('0x31')]?_0x471027[_0x5dbf('0x2f')]:_0x21cd00[_0x5dbf('0x29')];if(!_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x32')]('nolimit')){_0x471027[_0x5dbf('0x33')]=qs[_0x5dbf('0x33')](_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x33')]);_0x471027['offset']=qs[_0x5dbf('0x18')](_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x18')]);}_0x471027[_0x5dbf('0x34')]=qs[_0x5dbf('0x35')](_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x35')]);_0x471027[_0x5dbf('0x36')]=qs[_0x5dbf('0x2e')](_[_0x5dbf('0x37')](_0x22ec42[_0x5dbf('0x2b')],_0x21cd00['filters']));if(_0x6a276d[_0x5dbf('0x2c')]){if(_0x6a276d[_0x5dbf('0x2d')]){_0x6a276d[_0x5dbf('0x2d')]=moment(_0x6a276d['dateEnd'])[_0x5dbf('0x38')](0x1,_0x5dbf('0x39'));}else{_0x6a276d[_0x5dbf('0x2d')]=moment(_0x6a276d['dateStart'])[_0x5dbf('0x38')](0x1,_0x5dbf('0x39'));}_[_0x5dbf('0x3a')](_0x471027['where'],{'createdAt':{'$gte':_0x6a276d[_0x5dbf('0x2c')],'$lte':_0x6a276d[_0x5dbf('0x2d')]}});}if(_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x3b')]){_0x471027[_0x5dbf('0x36')]=_[_0x5dbf('0x3a')](_0x471027[_0x5dbf('0x36')],{'$or':_[_0x5dbf('0x3c')](_0x2f71eb,function(_0x4b71c1){if(_0x4b71c1['type']['key']!=='VIRTUAL'){var _0x28b28f={};_0x28b28f[_0x4b71c1[_0x5dbf('0x3d')]]={'$like':'%'+_0x22ec42['query'][_0x5dbf('0x3b')]+'%'};return _0x28b28f;}})});}_0x471027=_[_0x5dbf('0x3a')]({},_0x471027,_0x22ec42['options']);var _0x1a7ea9={'where':_0x471027[_0x5dbf('0x36')]};return db[_0x5dbf('0x27')][_0x5dbf('0x17')](_0x1a7ea9)[_0x5dbf('0x1d')](function(_0x7c390d){_0x5768b7[_0x5dbf('0x17')]=_0x7c390d;if(_0x22ec42[_0x5dbf('0x2b')][_0x5dbf('0x3e')]){_0x471027[_0x5dbf('0x3f')]=[{'all':!![]}];}return db['VoiceChanSpy'][_0x5dbf('0x40')](_0x471027);})[_0x5dbf('0x1d')](function(_0xec1d28){_0x5768b7['rows']=_0xec1d28;return _0x5768b7;})[_0x5dbf('0x1d')](respondWithFilteredResult(_0x6a9757,_0x471027))[_0x5dbf('0x41')](handleError(_0x6a9757,null));};exports[_0x5dbf('0x42')]=function(_0x1a0ec5,_0x4b0e91){var _0x3fba78={'raw':![],'where':{'id':_0x1a0ec5[_0x5dbf('0x43')]['id']}},_0x561a79={};_0x561a79[_0x5dbf('0x29')]=_[_0x5dbf('0x2a')](db[_0x5dbf('0x27')]['rawAttributes']);_0x561a79['query']=_[_0x5dbf('0x2a')](_0x1a0ec5[_0x5dbf('0x2b')]);_0x561a79[_0x5dbf('0x2e')]=_['intersection'](_0x561a79[_0x5dbf('0x29')],_0x561a79['query']);_0x3fba78['attributes']=_['intersection'](_0x561a79['model'],qs[_0x5dbf('0x30')](_0x1a0ec5[_0x5dbf('0x2b')]['fields']));_0x3fba78[_0x5dbf('0x2f')]=_0x3fba78[_0x5dbf('0x2f')]['length']?_0x3fba78[_0x5dbf('0x2f')]:_0x561a79[_0x5dbf('0x29')];if(_0x1a0ec5['query'][_0x5dbf('0x3e')]){_0x3fba78['include']=[{'all':!![]}];}_0x3fba78=_['merge']({},_0x3fba78,_0x1a0ec5[_0x5dbf('0x44')]);return db[_0x5dbf('0x27')][_0x5dbf('0x45')](_0x3fba78)['then'](handleEntityNotFound(_0x4b0e91,null))['then'](respondWithResult(_0x4b0e91,null))[_0x5dbf('0x41')](handleError(_0x4b0e91,null));};exports[_0x5dbf('0x46')]=function(_0x21f477,_0x307a00){return db[_0x5dbf('0x27')][_0x5dbf('0x46')](_0x21f477[_0x5dbf('0x47')],{})[_0x5dbf('0x1d')](function(_0x4bc7eb){var _0x3f38a0=_0x21f477[_0x5dbf('0x48')][_0x5dbf('0x1f')]({'plain':!![]});if(!_0x3f38a0)throw new Error(_0x5dbf('0x49'));if(_0x3f38a0[_0x5dbf('0x4a')]===_0x5dbf('0x48')){var _0x328dc5=_0x4bc7eb['get']({'plain':!![]});var _0x1b0b13='ChanSpies';return db[_0x5dbf('0x4b')][_0x5dbf('0x45')]({'where':{'name':_0x1b0b13,'userProfileId':_0x3f38a0[_0x5dbf('0x4c')]},'raw':!![]})[_0x5dbf('0x1d')](function(_0x78ab84){if(_0x78ab84&&_0x78ab84[_0x5dbf('0x4d')]===0x0){return db[_0x5dbf('0x4e')]['create']({'name':_0x328dc5['name'],'resourceId':_0x328dc5['id'],'type':_0x78ab84['name'],'sectionId':_0x78ab84['id']},{})[_0x5dbf('0x1d')](function(){return _0x4bc7eb;});}else{return _0x4bc7eb;}})[_0x5dbf('0x41')](function(_0x36a787){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x36a787);throw _0x36a787;});}return _0x4bc7eb;})[_0x5dbf('0x1d')](respondWithResult(_0x307a00,0xc9))[_0x5dbf('0x41')](handleError(_0x307a00,null));};exports[_0x5dbf('0x1c')]=function(_0x5d70cc,_0x2c9876){if(_0x5d70cc['body']['id']){delete _0x5d70cc[_0x5dbf('0x47')]['id'];}return db[_0x5dbf('0x27')][_0x5dbf('0x45')]({'where':{'id':_0x5d70cc['params']['id']}})['then'](handleEntityNotFound(_0x2c9876,null))[_0x5dbf('0x1d')](saveUpdates(_0x5d70cc[_0x5dbf('0x47')],null))[_0x5dbf('0x1d')](respondWithResult(_0x2c9876,null))[_0x5dbf('0x41')](handleError(_0x2c9876,null));};exports['destroy']=function(_0xfcc43c,_0x4666ff){return db['VoiceChanSpy']['find']({'where':{'id':_0xfcc43c[_0x5dbf('0x43')]['id']}})[_0x5dbf('0x1d')](handleEntityNotFound(_0x4666ff,null))[_0x5dbf('0x1d')](removeEntity(_0x4666ff,null))[_0x5dbf('0x41')](handleError(_0x4666ff,null));};
\ No newline at end of file
index d1dfc7c..3f1dd9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d51=['./voiceChanSpy.attributes','from-sip','system','format','%s%s','prefix','push','Set','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,ab','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','length','internal','concat','User','findAll','agent','then','catch','models','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy','../../config/logger'];(function(_0x3f9a41,_0x406eb7){var _0x4394e3=function(_0x31ba81){while(--_0x31ba81){_0x3f9a41['push'](_0x3f9a41['shift']());}};_0x4394e3(++_0x406eb7);}(_0x4d51,0x12f));var _0x14d5=function(_0x380788,_0x523f4b){_0x380788=_0x380788-0x0;var _0x4a16ff=_0x4d51[_0x380788];return _0x4a16ff;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require('bluebird');var logger=require(_0x14d5('0x0'))('api');var attributes=require(_0x14d5('0x1'));var getUserApplications=function(_0x5b9a46,_0x1d5608,_0x166dc5){var _0x1b46ad=0x1;var _0x1bd9ac=[];var _0x3e44a3={'context':_0x14d5('0x2'),'type':_0x14d5('0x3'),'isApp':![]};var _0x22e099={'exten':util[_0x14d5('0x4')](_0x14d5('0x5'),_0x5b9a46[_0x14d5('0x6')],_0x166dc5),'ChanSpyId':_0x5b9a46['id'],'UserId':_0x1d5608['id']};_0x1bd9ac[_0x14d5('0x7')](_['merge']({'app':_0x14d5('0x8'),'appdata':util[_0x14d5('0x4')](_0x14d5('0x9'),_0x14d5('0xa')),'priority':_0x1b46ad++},_0x3e44a3,_0x22e099));if(_0x5b9a46[_0x14d5('0xb')]){_0x1bd9ac[_0x14d5('0x7')](_[_0x14d5('0xc')]({'app':_0x14d5('0xd'),'appdata':util[_0x14d5('0x4')](_0x14d5('0xe'),_0x5b9a46[_0x14d5('0xf')]),'priority':_0x1b46ad++},_0x3e44a3,_0x22e099));}if(_0x5b9a46[_0x14d5('0x10')]){_0x1bd9ac['push'](_['merge']({'app':'Authenticate','appdata':_0x5b9a46[_0x14d5('0x11')],'priority':_0x1b46ad++},_0x3e44a3,_0x22e099));}_0x1bd9ac[_0x14d5('0x7')](_[_0x14d5('0xc')]({'app':_0x14d5('0x12'),'appdata':util[_0x14d5('0x4')](_0x14d5('0x13'),_0x1d5608[_0x14d5('0x14')],_0x5b9a46[_0x14d5('0x15')]?_0x5b9a46['options'][_0x14d5('0x16')](''):''),'priority':_0x1b46ad++},_0x3e44a3,_0x22e099));if(_0x5b9a46[_0x14d5('0xb')]){_0x1bd9ac['push'](_[_0x14d5('0xc')]({'app':_0x14d5('0x17'),'priority':_0x1b46ad++},_0x3e44a3,_0x22e099));}return _0x1bd9ac;};var getChanSpyApplications=function(_0x2ac0bb,_0x5da47a){var _0x57a255=[];for(var _0x2c6977=0x0,_0x115832=0x1;_0x2c6977<_0x5da47a[_0x14d5('0x18')];_0x2c6977++,_0x115832=0x1){var _0x3483ca=getUserApplications(_0x2ac0bb,_0x5da47a[_0x2c6977],_0x5da47a[_0x2c6977][_0x14d5('0x19')]);var _0x207aac=getUserApplications(_0x2ac0bb,_0x5da47a[_0x2c6977],_0x5da47a[_0x2c6977][_0x14d5('0x14')]);_0x57a255=_0x57a255[_0x14d5('0x1a')](_0x3483ca,_0x207aac);}return _0x57a255;};var getChanSpyPromise=function(_0x18862f,_0x92e46d){return new BPromise(function(_0x18651a,_0xa38140){return _0x18862f[_0x14d5('0x1b')][_0x14d5('0x1c')]({'attributes':['id',_0x14d5('0x14'),'internal'],'where':{'role':_0x14d5('0x1d'),'chanspy':!![]},'raw':!![]})[_0x14d5('0x1e')](function(_0x115a3e){if(_0x115a3e){return _0x18651a(getChanSpyApplications(_0x92e46d,_0x115a3e));}return _0x18651a([]);})[_0x14d5('0x1f')](function(_0x4125ad){_0xa38140(_0x4125ad);});});};module['exports']=function(_0x25fd98,_0x33e02c){var _0x46790b=_0x25fd98[_0x14d5('0x20')];return _0x25fd98['define'](_0x14d5('0x21'),attributes,{'tableName':_0x14d5('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x307fc3,_0xb9b31d,_0xa7cf02){return getChanSpyPromise(_0x46790b,_0x307fc3)[_0x14d5('0x1e')](function(_0x347539){if(_0x347539&&_0x347539[_0x14d5('0x18')]){return _0x46790b[_0x14d5('0x23')][_0x14d5('0x24')](_0x347539);}})[_0x14d5('0x1e')](function(){_0xa7cf02();})['catch'](function(_0x16258e){_0xa7cf02(_0x16258e);});},'afterUpdate':function(_0x421b63,_0x5cd395,_0x3d3b26){return _0x46790b['VoiceExtension'][_0x14d5('0x25')]({'where':{'ChanSpyId':_0x421b63['id']}})['then'](function(){return getChanSpyPromise(_0x46790b,_0x421b63);})[_0x14d5('0x1e')](function(_0x37e5ca){if(_0x37e5ca&&_0x37e5ca[_0x14d5('0x18')]){return _0x46790b[_0x14d5('0x23')][_0x14d5('0x24')](_0x37e5ca);}})[_0x14d5('0x1e')](function(){_0x3d3b26();})['catch'](function(_0x20f8ac){_0x3d3b26(_0x20f8ac);});},'afterDestroy':function(_0x2c24d3,_0x5af196,_0x5a68eb){return _0x46790b[_0x14d5('0x23')][_0x14d5('0x25')]({'where':{'ChanSpyId':_0x2c24d3['id']}})['then'](function(){_0x5a68eb();})[_0x14d5('0x1f')](function(_0x5d5fcd){_0x5a68eb(_0x5d5fcd);});}}});};
\ No newline at end of file
+var _0x0c11=['%s%s','prefix','push','record','${UNIQUEID}.%s,ab','auth','merge','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','StopMixMonitor','internal','name','concat','findAll','agent','then','catch','exports','models','define','length','VoiceExtension','bulkCreate','destroy','util','bluebird','api','./voiceChanSpy.attributes','from-sip','system','format'];(function(_0x3d5f84,_0x569548){var _0x1981b8=function(_0x3bf9f3){while(--_0x3bf9f3){_0x3d5f84['push'](_0x3d5f84['shift']());}};_0x1981b8(++_0x569548);}(_0x0c11,0xee));var _0x10c1=function(_0x439d59,_0x11ccdf){_0x439d59=_0x439d59-0x0;var _0x3670c7=_0x0c11[_0x439d59];return _0x3670c7;};'use strict';var _=require('lodash');var util=require(_0x10c1('0x0'));var BPromise=require(_0x10c1('0x1'));var logger=require('../../config/logger')(_0x10c1('0x2'));var attributes=require(_0x10c1('0x3'));var getUserApplications=function(_0x51cae7,_0x219256,_0x376edd){var _0x256d32=0x1;var _0x4dc474=[];var _0x1c6826={'context':_0x10c1('0x4'),'type':_0x10c1('0x5'),'isApp':![]};var _0x1f1a18={'exten':util[_0x10c1('0x6')](_0x10c1('0x7'),_0x51cae7[_0x10c1('0x8')],_0x376edd),'ChanSpyId':_0x51cae7['id'],'UserId':_0x219256['id']};_0x4dc474[_0x10c1('0x9')](_['merge']({'app':'Set','appdata':util[_0x10c1('0x6')]('CDR(type)=%s','chanspy'),'priority':_0x256d32++},_0x1c6826,_0x1f1a18));if(_0x51cae7[_0x10c1('0xa')]){_0x4dc474[_0x10c1('0x9')](_['merge']({'app':'MixMonitor','appdata':util['format'](_0x10c1('0xb'),_0x51cae7['recordingFormat']),'priority':_0x256d32++},_0x1c6826,_0x1f1a18));}if(_0x51cae7[_0x10c1('0xc')]){_0x4dc474[_0x10c1('0x9')](_[_0x10c1('0xd')]({'app':_0x10c1('0xe'),'appdata':_0x51cae7[_0x10c1('0xf')],'priority':_0x256d32++},_0x1c6826,_0x1f1a18));}_0x4dc474['push'](_[_0x10c1('0xd')]({'app':_0x10c1('0x10'),'appdata':util[_0x10c1('0x6')](_0x10c1('0x11'),_0x219256['name'],_0x51cae7[_0x10c1('0x12')]?_0x51cae7[_0x10c1('0x12')][_0x10c1('0x13')](''):''),'priority':_0x256d32++},_0x1c6826,_0x1f1a18));if(_0x51cae7[_0x10c1('0xa')]){_0x4dc474[_0x10c1('0x9')](_['merge']({'app':_0x10c1('0x14'),'priority':_0x256d32++},_0x1c6826,_0x1f1a18));}return _0x4dc474;};var getChanSpyApplications=function(_0x421037,_0x1eef62){var _0x335b1d=[];for(var _0x4574cf=0x0,_0x22fb2c=0x1;_0x4574cf<_0x1eef62['length'];_0x4574cf++,_0x22fb2c=0x1){var _0x1ec5ff=getUserApplications(_0x421037,_0x1eef62[_0x4574cf],_0x1eef62[_0x4574cf][_0x10c1('0x15')]);var _0x24e35f=getUserApplications(_0x421037,_0x1eef62[_0x4574cf],_0x1eef62[_0x4574cf][_0x10c1('0x16')]);_0x335b1d=_0x335b1d[_0x10c1('0x17')](_0x1ec5ff,_0x24e35f);}return _0x335b1d;};var getChanSpyPromise=function(_0x201b58,_0x3af5d2){return new BPromise(function(_0x1c7581,_0x59ec47){return _0x201b58['User'][_0x10c1('0x18')]({'attributes':['id',_0x10c1('0x16'),_0x10c1('0x15')],'where':{'role':_0x10c1('0x19'),'chanspy':!![]},'raw':!![]})[_0x10c1('0x1a')](function(_0x161107){if(_0x161107){return _0x1c7581(getChanSpyApplications(_0x3af5d2,_0x161107));}return _0x1c7581([]);})[_0x10c1('0x1b')](function(_0x42c0f5){_0x59ec47(_0x42c0f5);});});};module[_0x10c1('0x1c')]=function(_0x533200,_0x54aeee){var _0x804bc1=_0x533200[_0x10c1('0x1d')];return _0x533200[_0x10c1('0x1e')]('VoiceChanSpy',attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xa7b847,_0x447b98,_0x12c432){return getChanSpyPromise(_0x804bc1,_0xa7b847)[_0x10c1('0x1a')](function(_0x245642){if(_0x245642&&_0x245642[_0x10c1('0x1f')]){return _0x804bc1[_0x10c1('0x20')][_0x10c1('0x21')](_0x245642);}})[_0x10c1('0x1a')](function(){_0x12c432();})['catch'](function(_0x1110ad){_0x12c432(_0x1110ad);});},'afterUpdate':function(_0x2e4c58,_0x300721,_0x4529a5){return _0x804bc1['VoiceExtension'][_0x10c1('0x22')]({'where':{'ChanSpyId':_0x2e4c58['id']}})[_0x10c1('0x1a')](function(){return getChanSpyPromise(_0x804bc1,_0x2e4c58);})['then'](function(_0xe36f20){if(_0xe36f20&&_0xe36f20[_0x10c1('0x1f')]){return _0x804bc1[_0x10c1('0x20')][_0x10c1('0x21')](_0xe36f20);}})[_0x10c1('0x1a')](function(){_0x4529a5();})[_0x10c1('0x1b')](function(_0x34a11c){_0x4529a5(_0x34a11c);});},'afterDestroy':function(_0x30a288,_0x53d51d,_0x4cbf3e){return _0x804bc1[_0x10c1('0x20')][_0x10c1('0x22')]({'where':{'ChanSpyId':_0x30a288['id']}})[_0x10c1('0x1a')](function(){_0x4cbf3e();})[_0x10c1('0x1b')](function(_0x4f08b3){_0x4cbf3e(_0x4f08b3);});}}});};
\ No newline at end of file
index 8a81d3a..bf4bc94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e0c=['ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','info','request\x20sent','debug','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','catch','util','randomstring'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x4e0c,0xb2));var _0xc4e0=function(_0x425716,_0x3e9d1c){_0x425716=_0x425716-0x0;var _0x2d39af=_0x4e0c[_0x425716];return _0x2d39af;};'use strict';var _=require('lodash');var util=require(_0xc4e0('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc4e0('0x1'));var fs=require('fs');var Redis=require(_0xc4e0('0x2'));var db=require(_0xc4e0('0x3'))['db'];var utils=require(_0xc4e0('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xc4e0('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xc4e0('0x6')][_0xc4e0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x159cb9,_0x5249f6,_0x565685){return new BPromise(function(_0x2a266e,_0x1c9e92){return client[_0xc4e0('0x8')](_0x159cb9,_0x565685)['then'](function(_0xbe2e2b){logger[_0xc4e0('0x9')]('VoiceChanSpy,\x20%s,\x20%s',_0x5249f6,_0xc4e0('0xa'));logger[_0xc4e0('0xb')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x5249f6,_0xc4e0('0xa'),JSON[_0xc4e0('0xc')](_0xbe2e2b));if(_0xbe2e2b[_0xc4e0('0xd')]){if(_0xbe2e2b['error'][_0xc4e0('0xe')]===0x1f4){logger['error'](_0xc4e0('0xf'),_0x5249f6,_0xbe2e2b[_0xc4e0('0xd')][_0xc4e0('0x10')]);return _0x1c9e92(_0xbe2e2b[_0xc4e0('0xd')][_0xc4e0('0x10')]);}logger[_0xc4e0('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x5249f6,_0xbe2e2b[_0xc4e0('0xd')][_0xc4e0('0x10')]);return _0x2a266e(_0xbe2e2b[_0xc4e0('0xd')][_0xc4e0('0x10')]);}else{logger['info'](_0xc4e0('0xf'),_0x5249f6,_0xc4e0('0xa'));_0x2a266e(_0xbe2e2b['result']['message']);}})[_0xc4e0('0x11')](function(_0x471fba){logger['error'](_0xc4e0('0xf'),_0x5249f6,_0x471fba);_0x1c9e92(_0x471fba);});});}
\ No newline at end of file
+var _0xfc73=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfc73,0x1e5));var _0x3fc7=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xfc73[_0x36ed48];return _0x51c63a;};'use strict';var _=require(_0x3fc7('0x0'));var util=require(_0x3fc7('0x1'));var moment=require('moment');var BPromise=require(_0x3fc7('0x2'));var rs=require(_0x3fc7('0x3'));var fs=require('fs');var Redis=require(_0x3fc7('0x4'));var db=require(_0x3fc7('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3fc7('0x6'));var config=require(_0x3fc7('0x7'));var jayson=require(_0x3fc7('0x8'));var client=jayson[_0x3fc7('0x9')][_0x3fc7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34b33b,_0x5f069e,_0x34d90f){return new BPromise(function(_0x56de64,_0x2211c9){return client[_0x3fc7('0xb')](_0x34b33b,_0x34d90f)[_0x3fc7('0xc')](function(_0x1acda9){logger[_0x3fc7('0xd')](_0x3fc7('0xe'),_0x5f069e,_0x3fc7('0xf'));logger[_0x3fc7('0x10')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x5f069e,_0x3fc7('0xf'),JSON['stringify'](_0x1acda9));if(_0x1acda9[_0x3fc7('0x11')]){if(_0x1acda9['error'][_0x3fc7('0x12')]===0x1f4){logger[_0x3fc7('0x11')](_0x3fc7('0xe'),_0x5f069e,_0x1acda9['error'][_0x3fc7('0x13')]);return _0x2211c9(_0x1acda9[_0x3fc7('0x11')][_0x3fc7('0x13')]);}logger['error'](_0x3fc7('0xe'),_0x5f069e,_0x1acda9[_0x3fc7('0x11')]['message']);return _0x56de64(_0x1acda9['error'][_0x3fc7('0x13')]);}else{logger[_0x3fc7('0xd')](_0x3fc7('0xe'),_0x5f069e,_0x3fc7('0xf'));_0x56de64(_0x1acda9[_0x3fc7('0x14')]['message']);}})[_0x3fc7('0x15')](function(_0x3d9e5b){logger[_0x3fc7('0x11')]('VoiceChanSpy,\x20%s,\x20%s',_0x5f069e,_0x3d9e5b);_0x2211c9(_0x3d9e5b);});});}
\ No newline at end of file
index 337cf33..6a3ff76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7db=['create','put','update','exports','multer','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x2ca616,_0x384ec8){var _0x53155f=function(_0x108627){while(--_0x108627){_0x2ca616['push'](_0x2ca616['shift']());}};_0x53155f(++_0x384ec8);}(_0xa7db,0xbf));var _0xba7d=function(_0x5624f6,_0x3784a8){_0x5624f6=_0x5624f6-0x0;var _0x1f7acc=_0xa7db[_0x5624f6];return _0x1f7acc;};'use strict';var multer=require(_0xba7d('0x0'));var util=require(_0xba7d('0x1'));var path=require(_0xba7d('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var auth=require(_0xba7d('0x3'));var interaction=require(_0xba7d('0x4'));var config=require(_0xba7d('0x5'));var controller=require(_0xba7d('0x6'));router[_0xba7d('0x7')]('/',auth['isAuthenticated'](),controller[_0xba7d('0x8')]);router[_0xba7d('0x7')](_0xba7d('0x9'),auth[_0xba7d('0xa')](),controller[_0xba7d('0xb')]);router[_0xba7d('0xc')]('/',auth['isAuthenticated'](),controller[_0xba7d('0xd')]);router[_0xba7d('0xe')](_0xba7d('0x9'),auth[_0xba7d('0xa')](),controller[_0xba7d('0xf')]);router['delete'](_0xba7d('0x9'),auth[_0xba7d('0xa')](),controller['destroy']);module[_0xba7d('0x10')]=router;
\ No newline at end of file
+var _0xb8cb=['connect-timeout','express','Router','../../components/auth/service','../../config/environment','./voiceContext.controller','index','get','/:id','show','post','isAuthenticated','create','put','update','delete','destroy','multer','util','path'];(function(_0x5b47cb,_0x21cfc4){var _0x1e615b=function(_0xd18fb){while(--_0xd18fb){_0x5b47cb['push'](_0x5b47cb['shift']());}};_0x1e615b(++_0x21cfc4);}(_0xb8cb,0xd9));var _0xbb8c=function(_0x45154d,_0x8474d7){_0x45154d=_0x45154d-0x0;var _0x462db8=_0xb8cb[_0x45154d];return _0x462db8;};'use strict';var multer=require(_0xbb8c('0x0'));var util=require(_0xbb8c('0x1'));var path=require(_0xbb8c('0x2'));var timeout=require(_0xbb8c('0x3'));var express=require(_0xbb8c('0x4'));var router=express[_0xbb8c('0x5')]();var auth=require(_0xbb8c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbb8c('0x7'));var controller=require(_0xbb8c('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xbb8c('0x9')]);router[_0xbb8c('0xa')](_0xbb8c('0xb'),auth['isAuthenticated'](),controller[_0xbb8c('0xc')]);router[_0xbb8c('0xd')]('/',auth[_0xbb8c('0xe')](),controller[_0xbb8c('0xf')]);router[_0xbb8c('0x10')](_0xbb8c('0xb'),auth[_0xbb8c('0xe')](),controller[_0xbb8c('0x11')]);router[_0xbb8c('0x12')](_0xbb8c('0xb'),auth[_0xbb8c('0xe')](),controller[_0xbb8c('0x13')]);module['exports']=router;
\ No newline at end of file
index c5e4b00..f17873b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf20d=['name','sequelize','exports','STRING'];(function(_0x35e616,_0x5ac6ed){var _0x4cf821=function(_0x1c4e49){while(--_0x1c4e49){_0x35e616['push'](_0x35e616['shift']());}};_0x4cf821(++_0x5ac6ed);}(_0xf20d,0x1bd));var _0xdf20=function(_0x5c050f,_0x190870){_0x5c050f=_0x5c050f-0x0;var _0x472b2a=_0xf20d[_0x5c050f];return _0x472b2a;};'use strict';var Sequelize=require(_0xdf20('0x0'));module[_0xdf20('0x1')]={'name':{'type':Sequelize[_0xdf20('0x2')],'unique':_0xdf20('0x3')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2a85=['BOOLEAN','exports','name','STRING'];(function(_0x7846d3,_0x338a67){var _0x8041a6=function(_0x2dd003){while(--_0x2dd003){_0x7846d3['push'](_0x7846d3['shift']());}};_0x8041a6(++_0x338a67);}(_0x2a85,0x171));var _0x52a8=function(_0x445c8b,_0x34f554){_0x445c8b=_0x445c8b-0x0;var _0x4b1011=_0x2a85[_0x445c8b];return _0x4b1011;};'use strict';var Sequelize=require('sequelize');module[_0x52a8('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x52a8('0x1')},'description':{'type':Sequelize[_0x52a8('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x52a8('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index e9dccf1..bf6c281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d62=['catch','sendStatus','status','json','count','offset','limit','set','reject','save','destroy','get','UserProfileResource','end','stack','name','send','index','VoiceContext','rawAttributes','keys','query','dateStart','dateEnd','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','add','day','merge','where','filter','type','field','options','includeAll','include','findAll','rows','show','params','find','create','body','readFileSync','join','root','server/files/templates/context.ejs','utf8','render','writeFileSync','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','client','http','request','then','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','info','result'];(function(_0x4ff2db,_0x37a4d3){var _0x1b0541=function(_0x5ca241){while(--_0x5ca241){_0x4ff2db['push'](_0x4ff2db['shift']());}};_0x1b0541(++_0x37a4d3);}(_0x9d62,0xaf));var _0x29d6=function(_0x10e14d,_0x3258a9){_0x10e14d=_0x10e14d-0x0;var _0x5d9731=_0x9d62[_0x10e14d];return _0x5d9731;};'use strict';var pdf=require(_0x29d6('0x0'));var emlformat=require(_0x29d6('0x1'));var rimraf=require(_0x29d6('0x2'));var zipdir=require(_0x29d6('0x3'));var jsonpatch=require(_0x29d6('0x4'));var rp=require('request-promise');var moment=require(_0x29d6('0x5'));var BPromise=require(_0x29d6('0x6'));var Mustache=require(_0x29d6('0x7'));var util=require(_0x29d6('0x8'));var path=require(_0x29d6('0x9'));var sox=require('sox');var csv=require(_0x29d6('0xa'));var ejs=require(_0x29d6('0xb'));var fs=require('fs');var _=require(_0x29d6('0xc'));var squel=require(_0x29d6('0xd'));var crypto=require(_0x29d6('0xe'));var jsforce=require(_0x29d6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x29d6('0xa'));var querystring=require(_0x29d6('0x10'));var Papa=require(_0x29d6('0x11'));var Redis=require(_0x29d6('0x12'));var qs=require(_0x29d6('0x13'));var logger=require(_0x29d6('0x14'))(_0x29d6('0x15'));var utils=require(_0x29d6('0x16'));var config=require('../../config/environment');var db=require(_0x29d6('0x17'))['db'];var jayson=require(_0x29d6('0x18'));var client=jayson[_0x29d6('0x19')][_0x29d6('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x2c8461,_0x5ab9fb,_0x4666f9,_0x4bb3e2){return new BPromise(function(_0x32d024,_0x5d7e8a){var _0x34bb86=_0x4bb3e2||client;return _0x34bb86[_0x29d6('0x1b')](_0x2c8461,_0x4666f9)[_0x29d6('0x1c')](function(_0x305a69){logger['info']('VoiceContext,\x20%s,\x20%s',_0x5ab9fb,'request\x20sent');logger[_0x29d6('0x1d')](_0x29d6('0x1e'),_0x5ab9fb,_0x29d6('0x1f'),JSON[_0x29d6('0x20')](_0x305a69));if(_0x305a69[_0x29d6('0x21')]){if(_0x305a69[_0x29d6('0x21')][_0x29d6('0x22')]===0x1f4){logger['error'](_0x29d6('0x23'),_0x5ab9fb,_0x305a69[_0x29d6('0x21')][_0x29d6('0x24')]);return _0x5d7e8a(_0x305a69['error'][_0x29d6('0x24')]);}logger[_0x29d6('0x21')](_0x29d6('0x23'),_0x5ab9fb,_0x305a69[_0x29d6('0x21')][_0x29d6('0x24')]);return _0x32d024(_0x305a69[_0x29d6('0x21')][_0x29d6('0x24')]);}else{logger[_0x29d6('0x25')]('VoiceContext,\x20%s,\x20%s',_0x5ab9fb,_0x29d6('0x1f'));_0x32d024(_0x305a69[_0x29d6('0x26')]['message']);}})[_0x29d6('0x27')](function(_0x3f5d3d){logger[_0x29d6('0x21')]('VoiceContext,\x20%s,\x20%s',_0x5ab9fb,_0x3f5d3d);_0x5d7e8a(_0x3f5d3d);});});}function respondWithStatusCode(_0x53f285,_0x1d8d32){_0x1d8d32=_0x1d8d32||0xcc;return function(_0x4a7414){if(_0x4a7414){return _0x53f285[_0x29d6('0x28')](_0x1d8d32);}return _0x53f285[_0x29d6('0x29')](_0x1d8d32)['end']();};}function respondWithResult(_0x8d91f5,_0x28370b){_0x28370b=_0x28370b||0xc8;return function(_0xbb646a){if(_0xbb646a){return _0x8d91f5[_0x29d6('0x29')](_0x28370b)[_0x29d6('0x2a')](_0xbb646a);}};}function respondWithFilteredResult(_0x4d0f45,_0x29c1fd){return function(_0x4c6583){if(_0x4c6583){var _0x4b66a1=_0x4c6583[_0x29d6('0x2b')],_0x4f3331=_0x29c1fd[_0x29d6('0x2c')],_0x394ac0=_0x29c1fd['offset']+_0x29c1fd[_0x29d6('0x2d')],_0x593cb3;if(_0x394ac0>=_0x4b66a1){_0x394ac0=_0x4b66a1;_0x593cb3=0xc8;}else{_0x593cb3=0xce;}_0x4d0f45['status'](_0x593cb3);return _0x4d0f45[_0x29d6('0x2e')]('Content-Range',_0x4f3331+'-'+_0x394ac0+'/'+_0x4b66a1)['json'](_0x4c6583);}return null;};}function patchUpdates(_0x110dc5){return function(_0x20ab9b){try{jsonpatch['apply'](_0x20ab9b,_0x110dc5,!![]);}catch(_0x1ccd54){return BPromise[_0x29d6('0x2f')](_0x1ccd54);}return _0x20ab9b[_0x29d6('0x30')]();};}function saveUpdates(_0x2008c0,_0x4fc84e){return function(_0xa9b5e){if(_0xa9b5e){return _0xa9b5e['update'](_0x2008c0)['then'](function(_0x47ebba){return _0x47ebba;});}return null;};}function removeEntity(_0x420a15,_0x7665c4){return function(_0x5a7d8d){if(_0x5a7d8d){return _0x5a7d8d[_0x29d6('0x31')]()[_0x29d6('0x1c')](function(){var _0x34099b=_0x5a7d8d[_0x29d6('0x32')]({'plain':!![]});var _0x1c79e7='Contexts';return db[_0x29d6('0x33')][_0x29d6('0x31')]({'where':{'type':_0x1c79e7,'resourceId':_0x34099b['id']}})[_0x29d6('0x1c')](function(){return _0x5a7d8d;});})[_0x29d6('0x1c')](function(){_0x420a15['status'](0xcc)[_0x29d6('0x34')]();});}};}function handleEntityNotFound(_0x2d519a,_0x2ef56e){return function(_0x2098d4){if(!_0x2098d4){_0x2d519a[_0x29d6('0x28')](0x194);}return _0x2098d4;};}function handleError(_0x5f0fb9,_0x2bc98c){_0x2bc98c=_0x2bc98c||0x1f4;return function(_0x423a57){logger[_0x29d6('0x21')](_0x423a57[_0x29d6('0x35')]);if(_0x423a57[_0x29d6('0x36')]){delete _0x423a57[_0x29d6('0x36')];}_0x5f0fb9[_0x29d6('0x29')](_0x2bc98c)[_0x29d6('0x37')](_0x423a57);};}exports[_0x29d6('0x38')]=function(_0x46591e,_0x32b1e0){var _0x12d4ae={},_0x5cece5={},_0x581e5e={'count':0x0,'rows':[]};var _0x5b16a2=db[_0x29d6('0x39')][_0x29d6('0x3a')];_0x5cece5['model']=_[_0x29d6('0x3b')](_0x5b16a2);var _0x208217={'dateStart':_0x46591e[_0x29d6('0x3c')][_0x29d6('0x3d')],'dateEnd':_0x46591e[_0x29d6('0x3c')][_0x29d6('0x3e')]};delete _0x46591e['query'][_0x29d6('0x3d')];delete _0x46591e[_0x29d6('0x3c')][_0x29d6('0x3e')];_0x5cece5[_0x29d6('0x3c')]=_[_0x29d6('0x3b')](_0x46591e[_0x29d6('0x3c')]);_0x5cece5[_0x29d6('0x3f')]=_[_0x29d6('0x40')](_0x5cece5[_0x29d6('0x41')],_0x5cece5[_0x29d6('0x3c')]);_0x12d4ae[_0x29d6('0x42')]=_[_0x29d6('0x40')](_0x5cece5[_0x29d6('0x41')],qs[_0x29d6('0x43')](_0x46591e[_0x29d6('0x3c')][_0x29d6('0x43')]));_0x12d4ae[_0x29d6('0x42')]=_0x12d4ae['attributes']['length']?_0x12d4ae[_0x29d6('0x42')]:_0x5cece5[_0x29d6('0x41')];if(!_0x46591e[_0x29d6('0x3c')][_0x29d6('0x44')](_0x29d6('0x45'))){_0x12d4ae[_0x29d6('0x2d')]=qs[_0x29d6('0x2d')](_0x46591e[_0x29d6('0x3c')]['limit']);_0x12d4ae[_0x29d6('0x2c')]=qs[_0x29d6('0x2c')](_0x46591e[_0x29d6('0x3c')][_0x29d6('0x2c')]);}_0x12d4ae[_0x29d6('0x46')]=qs[_0x29d6('0x47')](_0x46591e[_0x29d6('0x3c')][_0x29d6('0x47')]);_0x12d4ae['where']=qs[_0x29d6('0x3f')](_[_0x29d6('0x48')](_0x46591e[_0x29d6('0x3c')],_0x5cece5[_0x29d6('0x3f')]));if(_0x208217['dateStart']){if(_0x208217[_0x29d6('0x3e')]){_0x208217[_0x29d6('0x3e')]=moment(_0x208217[_0x29d6('0x3e')])[_0x29d6('0x49')](0x1,_0x29d6('0x4a'));}else{_0x208217[_0x29d6('0x3e')]=moment(_0x208217[_0x29d6('0x3d')])['add'](0x1,_0x29d6('0x4a'));}_[_0x29d6('0x4b')](_0x12d4ae[_0x29d6('0x4c')],{'createdAt':{'$gte':_0x208217['dateStart'],'$lte':_0x208217['dateEnd']}});}if(_0x46591e[_0x29d6('0x3c')][_0x29d6('0x4d')]){_0x12d4ae[_0x29d6('0x4c')]=_[_0x29d6('0x4b')](_0x12d4ae[_0x29d6('0x4c')],{'$or':_['map'](_0x5b16a2,function(_0x31d2f5){if(_0x31d2f5[_0x29d6('0x4e')]['key']!=='VIRTUAL'){var _0x52d16e={};_0x52d16e[_0x31d2f5[_0x29d6('0x4f')]]={'$like':'%'+_0x46591e[_0x29d6('0x3c')][_0x29d6('0x4d')]+'%'};return _0x52d16e;}})});}_0x12d4ae=_[_0x29d6('0x4b')]({},_0x12d4ae,_0x46591e[_0x29d6('0x50')]);var _0x20ab2b={'where':_0x12d4ae[_0x29d6('0x4c')]};return db['VoiceContext'][_0x29d6('0x2b')](_0x20ab2b)[_0x29d6('0x1c')](function(_0x2979c1){_0x581e5e['count']=_0x2979c1;if(_0x46591e[_0x29d6('0x3c')][_0x29d6('0x51')]){_0x12d4ae[_0x29d6('0x52')]=[{'all':!![]}];}return db[_0x29d6('0x39')][_0x29d6('0x53')](_0x12d4ae);})[_0x29d6('0x1c')](function(_0x2ac52a){_0x581e5e[_0x29d6('0x54')]=_0x2ac52a;return _0x581e5e;})[_0x29d6('0x1c')](respondWithFilteredResult(_0x32b1e0,_0x12d4ae))['catch'](handleError(_0x32b1e0,null));};exports[_0x29d6('0x55')]=function(_0xa14176,_0x1acbac){var _0x7551={'raw':![],'where':{'id':_0xa14176[_0x29d6('0x56')]['id']}},_0x22cfb4={};_0x22cfb4[_0x29d6('0x41')]=_[_0x29d6('0x3b')](db['VoiceContext'][_0x29d6('0x3a')]);_0x22cfb4[_0x29d6('0x3c')]=_[_0x29d6('0x3b')](_0xa14176['query']);_0x22cfb4[_0x29d6('0x3f')]=_[_0x29d6('0x40')](_0x22cfb4['model'],_0x22cfb4[_0x29d6('0x3c')]);_0x7551[_0x29d6('0x42')]=_[_0x29d6('0x40')](_0x22cfb4[_0x29d6('0x41')],qs[_0x29d6('0x43')](_0xa14176[_0x29d6('0x3c')]['fields']));_0x7551[_0x29d6('0x42')]=_0x7551[_0x29d6('0x42')]['length']?_0x7551[_0x29d6('0x42')]:_0x22cfb4[_0x29d6('0x41')];if(_0xa14176['query'][_0x29d6('0x51')]){_0x7551[_0x29d6('0x52')]=[{'all':!![]}];}_0x7551=_['merge']({},_0x7551,_0xa14176[_0x29d6('0x50')]);return db[_0x29d6('0x39')][_0x29d6('0x57')](_0x7551)[_0x29d6('0x1c')](handleEntityNotFound(_0x1acbac,null))[_0x29d6('0x1c')](respondWithResult(_0x1acbac,null))[_0x29d6('0x27')](handleError(_0x1acbac,null));};exports[_0x29d6('0x58')]=function(_0x2a433a,_0x33b63f,_0x59108c){var _0x45f48e;return db[_0x29d6('0x39')]['create'](_0x2a433a[_0x29d6('0x59')],{'raw':!![]})['then'](function(_0x13c26a){_0x45f48e=_0x13c26a;return db[_0x29d6('0x39')][_0x29d6('0x53')]({'raw':!![]});})[_0x29d6('0x1c')](function(_0x36296c){var _0x94cd94=fs[_0x29d6('0x5a')](path[_0x29d6('0x5b')](config[_0x29d6('0x5c')],_0x29d6('0x5d')),_0x29d6('0x5e'));var _0x37cb9a=ejs[_0x29d6('0x5f')](_0x94cd94,{'contexts':_0x36296c||[]});fs[_0x29d6('0x60')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x37cb9a);})[_0x29d6('0x1c')](function(){return respondWithRpcPromise(_0x29d6('0x61'),_0x29d6('0x58'),{'module':_0x29d6('0x62')});})['then'](function(){var _0x5caa4b=_0x2a433a[_0x29d6('0x63')][_0x29d6('0x32')]({'plain':!![]});if(!_0x5caa4b)throw new Error(_0x29d6('0x64'));if(_0x5caa4b[_0x29d6('0x65')]===_0x29d6('0x63')){var _0x5c02fb=_0x45f48e['get']({'plain':!![]});return db[_0x29d6('0x66')]['find']({'where':{'name':'Contexts','userProfileId':_0x5caa4b[_0x29d6('0x67')]},'raw':!![]})[_0x29d6('0x1c')](function(_0x46fffc){if(_0x46fffc&&_0x46fffc[_0x29d6('0x68')]===0x0){return db[_0x29d6('0x33')]['create']({'name':_0x5c02fb[_0x29d6('0x36')],'resourceId':_0x5c02fb['id'],'type':_0x46fffc[_0x29d6('0x36')],'sectionId':_0x46fffc['id']},{})[_0x29d6('0x1c')](function(){return _0x45f48e;});}else{return _0x45f48e;}})[_0x29d6('0x27')](function(_0x3a2b30){logger['error'](_0x29d6('0x69'),_0x3a2b30);throw _0x3a2b30;});}return _0x45f48e;})[_0x29d6('0x1c')](respondWithResult(_0x33b63f,0xc9))['catch'](handleError(_0x33b63f,null));};exports[_0x29d6('0x6a')]=function(_0x13b118,_0xe4c67e,_0x5c005c){var _0x4d74a0;return db['VoiceContext'][_0x29d6('0x57')]({'where':{'id':_0x13b118[_0x29d6('0x56')]['id']}})[_0x29d6('0x1c')](handleEntityNotFound(_0xe4c67e,null))[_0x29d6('0x1c')](saveUpdates(_0x13b118[_0x29d6('0x59')],null))['then'](function(_0x476b53){if(_0x476b53){_0x4d74a0=_0x476b53;return db['VoiceContext'][_0x29d6('0x53')]({'raw':!![]});}})['then'](function(_0x589a56){var _0x56049a=fs[_0x29d6('0x5a')](path[_0x29d6('0x5b')](config['root'],_0x29d6('0x5d')),_0x29d6('0x5e'));var _0x52601d=ejs['render'](_0x56049a,{'contexts':_0x589a56||[]});fs[_0x29d6('0x60')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x52601d);})[_0x29d6('0x1c')](function(){return respondWithRpcPromise('Reload','update',{'module':'chan_sip.so'});})[_0x29d6('0x1c')](function(){return _0x4d74a0;})[_0x29d6('0x1c')](respondWithResult(_0xe4c67e,null))[_0x29d6('0x27')](handleError(_0xe4c67e,null));};exports[_0x29d6('0x31')]=function(_0x3765de,_0x173aea,_0x1228bd){var _0x2eba2e;return db[_0x29d6('0x39')][_0x29d6('0x57')]({'where':{'id':_0x3765de['params']['id']}})[_0x29d6('0x1c')](handleEntityNotFound(_0x173aea,null))[_0x29d6('0x1c')](removeEntity(_0x173aea,null))['then'](function(){return db['VoiceContext'][_0x29d6('0x53')]({'raw':!![]});})[_0x29d6('0x1c')](function(_0x10c4de){var _0x14edf4=fs[_0x29d6('0x5a')](path[_0x29d6('0x5b')](config[_0x29d6('0x5c')],_0x29d6('0x5d')),_0x29d6('0x5e'));var _0x1b78e5=ejs[_0x29d6('0x5f')](_0x14edf4,{'contexts':_0x10c4de});fs[_0x29d6('0x60')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x1b78e5);return respondWithRpcPromise('Reload',_0x29d6('0x31'),{'module':_0x29d6('0x62')});})['catch'](handleError(_0x173aea,null));};
\ No newline at end of file
+var _0x7cd6=['add','day','merge','where','filter','type','VIRTUAL','field','options','VoiceContext','count','findAll','rows','params','includeAll','include','find','create','body','readFileSync','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','html-pdf','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','querystring','ioredis','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','offset','limit','json','reject','save','update','destroy','get','Contexts','end','name','index','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','attributes','fields','hasOwnProperty','order','sort','filters'];(function(_0x1c3be6,_0x39bb99){var _0x25a7d1=function(_0x222bbf){while(--_0x222bbf){_0x1c3be6['push'](_0x1c3be6['shift']());}};_0x25a7d1(++_0x39bb99);}(_0x7cd6,0x1f4));var _0x67cd=function(_0x4bfb35,_0x472fed){_0x4bfb35=_0x4bfb35-0x0;var _0x22a404=_0x7cd6[_0x4bfb35];return _0x22a404;};'use strict';var pdf=require(_0x67cd('0x0'));var emlformat=require(_0x67cd('0x1'));var rimraf=require(_0x67cd('0x2'));var zipdir=require(_0x67cd('0x3'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x67cd('0x4'));var BPromise=require(_0x67cd('0x5'));var Mustache=require(_0x67cd('0x6'));var util=require('util');var path=require(_0x67cd('0x7'));var sox=require('sox');var csv=require(_0x67cd('0x8'));var ejs=require(_0x67cd('0x9'));var fs=require('fs');var _=require(_0x67cd('0xa'));var squel=require(_0x67cd('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x67cd('0x8'));var querystring=require(_0x67cd('0xc'));var Papa=require('papaparse');var Redis=require(_0x67cd('0xd'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var utils=require(_0x67cd('0xe'));var config=require(_0x67cd('0xf'));var db=require(_0x67cd('0x10'))['db'];var jayson=require(_0x67cd('0x11'));var client=jayson[_0x67cd('0x12')][_0x67cd('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x478ad8,_0x2a0a05,_0x39c6ca,_0x1693d7){return new BPromise(function(_0xc61879,_0x20645c){var _0x2ab0e7=_0x1693d7||client;return _0x2ab0e7[_0x67cd('0x14')](_0x478ad8,_0x39c6ca)[_0x67cd('0x15')](function(_0x15da7d){logger[_0x67cd('0x16')](_0x67cd('0x17'),_0x2a0a05,_0x67cd('0x18'));logger['debug'](_0x67cd('0x19'),_0x2a0a05,_0x67cd('0x18'),JSON[_0x67cd('0x1a')](_0x15da7d));if(_0x15da7d[_0x67cd('0x1b')]){if(_0x15da7d[_0x67cd('0x1b')]['code']===0x1f4){logger[_0x67cd('0x1b')]('VoiceContext,\x20%s,\x20%s',_0x2a0a05,_0x15da7d[_0x67cd('0x1b')]['message']);return _0x20645c(_0x15da7d['error']['message']);}logger[_0x67cd('0x1b')](_0x67cd('0x17'),_0x2a0a05,_0x15da7d[_0x67cd('0x1b')][_0x67cd('0x1c')]);return _0xc61879(_0x15da7d[_0x67cd('0x1b')][_0x67cd('0x1c')]);}else{logger[_0x67cd('0x16')](_0x67cd('0x17'),_0x2a0a05,_0x67cd('0x18'));_0xc61879(_0x15da7d[_0x67cd('0x1d')]['message']);}})[_0x67cd('0x1e')](function(_0x145c7f){logger[_0x67cd('0x1b')](_0x67cd('0x17'),_0x2a0a05,_0x145c7f);_0x20645c(_0x145c7f);});});}function respondWithStatusCode(_0x512760,_0x48b1ec){_0x48b1ec=_0x48b1ec||0xcc;return function(_0x3bb52e){if(_0x3bb52e){return _0x512760[_0x67cd('0x1f')](_0x48b1ec);}return _0x512760[_0x67cd('0x20')](_0x48b1ec)['end']();};}function respondWithResult(_0x2230c1,_0x38ddf2){_0x38ddf2=_0x38ddf2||0xc8;return function(_0x4ecad0){if(_0x4ecad0){return _0x2230c1[_0x67cd('0x20')](_0x38ddf2)['json'](_0x4ecad0);}};}function respondWithFilteredResult(_0x6b9e7,_0x3958bc){return function(_0xbd0ca7){if(_0xbd0ca7){var _0x3a1caf=_0xbd0ca7['count'],_0x128a7f=_0x3958bc[_0x67cd('0x21')],_0x4d6ee1=_0x3958bc[_0x67cd('0x21')]+_0x3958bc[_0x67cd('0x22')],_0x9c9b8a;if(_0x4d6ee1>=_0x3a1caf){_0x4d6ee1=_0x3a1caf;_0x9c9b8a=0xc8;}else{_0x9c9b8a=0xce;}_0x6b9e7[_0x67cd('0x20')](_0x9c9b8a);return _0x6b9e7['set']('Content-Range',_0x128a7f+'-'+_0x4d6ee1+'/'+_0x3a1caf)[_0x67cd('0x23')](_0xbd0ca7);}return null;};}function patchUpdates(_0x185308){return function(_0x1b905e){try{jsonpatch['apply'](_0x1b905e,_0x185308,!![]);}catch(_0x56ff0a){return BPromise[_0x67cd('0x24')](_0x56ff0a);}return _0x1b905e[_0x67cd('0x25')]();};}function saveUpdates(_0x3aa655,_0x3868af){return function(_0x49e1e2){if(_0x49e1e2){return _0x49e1e2[_0x67cd('0x26')](_0x3aa655)[_0x67cd('0x15')](function(_0x331aba){return _0x331aba;});}return null;};}function removeEntity(_0x554566,_0x505718){return function(_0x27422e){if(_0x27422e){return _0x27422e[_0x67cd('0x27')]()['then'](function(){var _0x3f3e00=_0x27422e[_0x67cd('0x28')]({'plain':!![]});var _0x3f3047=_0x67cd('0x29');return db['UserProfileResource'][_0x67cd('0x27')]({'where':{'type':_0x3f3047,'resourceId':_0x3f3e00['id']}})[_0x67cd('0x15')](function(){return _0x27422e;});})[_0x67cd('0x15')](function(){_0x554566[_0x67cd('0x20')](0xcc)[_0x67cd('0x2a')]();});}};}function handleEntityNotFound(_0xa3b704,_0x171937){return function(_0x40e16e){if(!_0x40e16e){_0xa3b704[_0x67cd('0x1f')](0x194);}return _0x40e16e;};}function handleError(_0x1c5f3e,_0x49c838){_0x49c838=_0x49c838||0x1f4;return function(_0x5bc5d9){logger[_0x67cd('0x1b')](_0x5bc5d9['stack']);if(_0x5bc5d9[_0x67cd('0x2b')]){delete _0x5bc5d9[_0x67cd('0x2b')];}_0x1c5f3e[_0x67cd('0x20')](_0x49c838)['send'](_0x5bc5d9);};}exports[_0x67cd('0x2c')]=function(_0xf7934e,_0x4d837d){var _0x5d7514={},_0x5dace0={},_0x4b2572={'count':0x0,'rows':[]};var _0x244a35=db['VoiceContext'][_0x67cd('0x2d')];_0x5dace0[_0x67cd('0x2e')]=_[_0x67cd('0x2f')](_0x244a35);var _0x4131b1={'dateStart':_0xf7934e[_0x67cd('0x30')][_0x67cd('0x31')],'dateEnd':_0xf7934e[_0x67cd('0x30')][_0x67cd('0x32')]};delete _0xf7934e['query'][_0x67cd('0x31')];delete _0xf7934e[_0x67cd('0x30')][_0x67cd('0x32')];_0x5dace0[_0x67cd('0x30')]=_[_0x67cd('0x2f')](_0xf7934e['query']);_0x5dace0['filters']=_[_0x67cd('0x33')](_0x5dace0[_0x67cd('0x2e')],_0x5dace0[_0x67cd('0x30')]);_0x5d7514[_0x67cd('0x34')]=_['intersection'](_0x5dace0['model'],qs[_0x67cd('0x35')](_0xf7934e[_0x67cd('0x30')][_0x67cd('0x35')]));_0x5d7514[_0x67cd('0x34')]=_0x5d7514[_0x67cd('0x34')]['length']?_0x5d7514[_0x67cd('0x34')]:_0x5dace0[_0x67cd('0x2e')];if(!_0xf7934e[_0x67cd('0x30')][_0x67cd('0x36')]('nolimit')){_0x5d7514[_0x67cd('0x22')]=qs[_0x67cd('0x22')](_0xf7934e[_0x67cd('0x30')][_0x67cd('0x22')]);_0x5d7514[_0x67cd('0x21')]=qs[_0x67cd('0x21')](_0xf7934e[_0x67cd('0x30')][_0x67cd('0x21')]);}_0x5d7514[_0x67cd('0x37')]=qs[_0x67cd('0x38')](_0xf7934e['query'][_0x67cd('0x38')]);_0x5d7514['where']=qs[_0x67cd('0x39')](_['pick'](_0xf7934e[_0x67cd('0x30')],_0x5dace0[_0x67cd('0x39')]));if(_0x4131b1[_0x67cd('0x31')]){if(_0x4131b1[_0x67cd('0x32')]){_0x4131b1[_0x67cd('0x32')]=moment(_0x4131b1[_0x67cd('0x32')])[_0x67cd('0x3a')](0x1,_0x67cd('0x3b'));}else{_0x4131b1[_0x67cd('0x32')]=moment(_0x4131b1[_0x67cd('0x31')])[_0x67cd('0x3a')](0x1,_0x67cd('0x3b'));}_[_0x67cd('0x3c')](_0x5d7514[_0x67cd('0x3d')],{'createdAt':{'$gte':_0x4131b1[_0x67cd('0x31')],'$lte':_0x4131b1['dateEnd']}});}if(_0xf7934e[_0x67cd('0x30')][_0x67cd('0x3e')]){_0x5d7514[_0x67cd('0x3d')]=_['merge'](_0x5d7514[_0x67cd('0x3d')],{'$or':_['map'](_0x244a35,function(_0x1c7d7e){if(_0x1c7d7e[_0x67cd('0x3f')]['key']!==_0x67cd('0x40')){var _0x1ff346={};_0x1ff346[_0x1c7d7e[_0x67cd('0x41')]]={'$like':'%'+_0xf7934e[_0x67cd('0x30')][_0x67cd('0x3e')]+'%'};return _0x1ff346;}})});}_0x5d7514=_[_0x67cd('0x3c')]({},_0x5d7514,_0xf7934e[_0x67cd('0x42')]);var _0x3a0a92={'where':_0x5d7514[_0x67cd('0x3d')]};return db[_0x67cd('0x43')]['count'](_0x3a0a92)[_0x67cd('0x15')](function(_0x591450){_0x4b2572[_0x67cd('0x44')]=_0x591450;if(_0xf7934e[_0x67cd('0x30')]['includeAll']){_0x5d7514['include']=[{'all':!![]}];}return db['VoiceContext'][_0x67cd('0x45')](_0x5d7514);})['then'](function(_0x564846){_0x4b2572[_0x67cd('0x46')]=_0x564846;return _0x4b2572;})[_0x67cd('0x15')](respondWithFilteredResult(_0x4d837d,_0x5d7514))['catch'](handleError(_0x4d837d,null));};exports['show']=function(_0x3cff64,_0x7c94ac){var _0x4eb7d8={'raw':![],'where':{'id':_0x3cff64[_0x67cd('0x47')]['id']}},_0x43e191={};_0x43e191[_0x67cd('0x2e')]=_[_0x67cd('0x2f')](db['VoiceContext'][_0x67cd('0x2d')]);_0x43e191['query']=_['keys'](_0x3cff64['query']);_0x43e191[_0x67cd('0x39')]=_[_0x67cd('0x33')](_0x43e191['model'],_0x43e191['query']);_0x4eb7d8[_0x67cd('0x34')]=_[_0x67cd('0x33')](_0x43e191[_0x67cd('0x2e')],qs[_0x67cd('0x35')](_0x3cff64[_0x67cd('0x30')][_0x67cd('0x35')]));_0x4eb7d8['attributes']=_0x4eb7d8[_0x67cd('0x34')]['length']?_0x4eb7d8[_0x67cd('0x34')]:_0x43e191[_0x67cd('0x2e')];if(_0x3cff64[_0x67cd('0x30')][_0x67cd('0x48')]){_0x4eb7d8[_0x67cd('0x49')]=[{'all':!![]}];}_0x4eb7d8=_[_0x67cd('0x3c')]({},_0x4eb7d8,_0x3cff64[_0x67cd('0x42')]);return db[_0x67cd('0x43')][_0x67cd('0x4a')](_0x4eb7d8)['then'](handleEntityNotFound(_0x7c94ac,null))['then'](respondWithResult(_0x7c94ac,null))[_0x67cd('0x1e')](handleError(_0x7c94ac,null));};exports[_0x67cd('0x4b')]=function(_0x413d6c,_0x7725c3,_0x415e74){var _0x53fc6a;return db[_0x67cd('0x43')][_0x67cd('0x4b')](_0x413d6c[_0x67cd('0x4c')],{'raw':!![]})['then'](function(_0x272b17){_0x53fc6a=_0x272b17;return db['VoiceContext']['findAll']({'raw':!![]});})[_0x67cd('0x15')](function(_0x3dacaa){var _0x15234d=fs[_0x67cd('0x4d')](path['join'](config[_0x67cd('0x4e')],_0x67cd('0x4f')),_0x67cd('0x50'));var _0x11a139=ejs[_0x67cd('0x51')](_0x15234d,{'contexts':_0x3dacaa||[]});fs[_0x67cd('0x52')](_0x67cd('0x53'),_0x11a139);})['then'](function(){return respondWithRpcPromise(_0x67cd('0x54'),_0x67cd('0x4b'),{'module':_0x67cd('0x55')});})[_0x67cd('0x15')](function(){var _0x54570a=_0x413d6c[_0x67cd('0x56')][_0x67cd('0x28')]({'plain':!![]});if(!_0x54570a)throw new Error(_0x67cd('0x57'));if(_0x54570a['role']===_0x67cd('0x56')){var _0x381a75=_0x53fc6a[_0x67cd('0x28')]({'plain':!![]});return db[_0x67cd('0x58')]['find']({'where':{'name':_0x67cd('0x29'),'userProfileId':_0x54570a['userProfileId']},'raw':!![]})[_0x67cd('0x15')](function(_0x51d701){if(_0x51d701&&_0x51d701[_0x67cd('0x59')]===0x0){return db[_0x67cd('0x5a')][_0x67cd('0x4b')]({'name':_0x381a75['name'],'resourceId':_0x381a75['id'],'type':_0x51d701[_0x67cd('0x2b')],'sectionId':_0x51d701['id']},{})[_0x67cd('0x15')](function(){return _0x53fc6a;});}else{return _0x53fc6a;}})[_0x67cd('0x1e')](function(_0x54bd24){logger[_0x67cd('0x1b')](_0x67cd('0x5b'),_0x54bd24);throw _0x54bd24;});}return _0x53fc6a;})['then'](respondWithResult(_0x7725c3,0xc9))[_0x67cd('0x1e')](handleError(_0x7725c3,null));};exports['update']=function(_0x6eb5a5,_0x36838e,_0x296fc3){var _0x31cb01;return db['VoiceContext'][_0x67cd('0x4a')]({'where':{'id':_0x6eb5a5[_0x67cd('0x47')]['id']}})[_0x67cd('0x15')](handleEntityNotFound(_0x36838e,null))['then'](saveUpdates(_0x6eb5a5['body'],null))[_0x67cd('0x15')](function(_0x43d3f7){if(_0x43d3f7){_0x31cb01=_0x43d3f7;return db[_0x67cd('0x43')]['findAll']({'raw':!![]});}})[_0x67cd('0x15')](function(_0x56a159){var _0x2745d3=fs[_0x67cd('0x4d')](path[_0x67cd('0x5c')](config['root'],'server/files/templates/context.ejs'),_0x67cd('0x50'));var _0x5366ba=ejs[_0x67cd('0x51')](_0x2745d3,{'contexts':_0x56a159||[]});fs['writeFileSync'](_0x67cd('0x53'),_0x5366ba);})[_0x67cd('0x15')](function(){return respondWithRpcPromise(_0x67cd('0x54'),_0x67cd('0x26'),{'module':'chan_sip.so'});})[_0x67cd('0x15')](function(){return _0x31cb01;})[_0x67cd('0x15')](respondWithResult(_0x36838e,null))[_0x67cd('0x1e')](handleError(_0x36838e,null));};exports[_0x67cd('0x27')]=function(_0x3527b0,_0x282f3c,_0x631683){var _0x3d745d;return db[_0x67cd('0x43')][_0x67cd('0x4a')]({'where':{'id':_0x3527b0[_0x67cd('0x47')]['id']}})[_0x67cd('0x15')](handleEntityNotFound(_0x282f3c,null))['then'](removeEntity(_0x282f3c,null))[_0x67cd('0x15')](function(){return db[_0x67cd('0x43')][_0x67cd('0x45')]({'raw':!![]});})[_0x67cd('0x15')](function(_0x366bde){var _0x36a02e=fs[_0x67cd('0x4d')](path[_0x67cd('0x5c')](config[_0x67cd('0x4e')],_0x67cd('0x4f')),'utf8');var _0x36947a=ejs[_0x67cd('0x51')](_0x36a02e,{'contexts':_0x366bde});fs[_0x67cd('0x52')](_0x67cd('0x53'),_0x36947a);return respondWithRpcPromise('Reload',_0x67cd('0x27'),{'module':_0x67cd('0x55')});})[_0x67cd('0x1e')](handleError(_0x282f3c,null));};
\ No newline at end of file
index bef7003..458b75b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ae1=['api','moment','bluebird','./voiceContext.attributes','exports','define','VoiceContext','voice_contexts','util','../../config/logger'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x0ae1,0x134));var _0x10ae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0ae1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x10ae('0x0'));var logger=require(_0x10ae('0x1'))(_0x10ae('0x2'));var moment=require(_0x10ae('0x3'));var BPromise=require(_0x10ae('0x4'));var rp=require('request-promise');var attributes=require(_0x10ae('0x5'));module[_0x10ae('0x6')]=function(_0x3810cc,_0x1d454b){return _0x3810cc[_0x10ae('0x7')](_0x10ae('0x8'),attributes,{'tableName':_0x10ae('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa152=['voice_contexts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','exports','define'];(function(_0x1bcd8d,_0x21761c){var _0x6b9e62=function(_0x46f5b6){while(--_0x46f5b6){_0x1bcd8d['push'](_0x1bcd8d['shift']());}};_0x6b9e62(++_0x21761c);}(_0xa152,0x97));var _0x2a15=function(_0x3cca7a,_0x109a23){_0x3cca7a=_0x3cca7a-0x0;var _0x34e717=_0xa152[_0x3cca7a];return _0x34e717;};'use strict';var _=require(_0x2a15('0x0'));var util=require(_0x2a15('0x1'));var logger=require(_0x2a15('0x2'))(_0x2a15('0x3'));var moment=require(_0x2a15('0x4'));var BPromise=require(_0x2a15('0x5'));var rp=require(_0x2a15('0x6'));var attributes=require('./voiceContext.attributes');module[_0x2a15('0x7')]=function(_0x31bebc,_0x369332){return _0x31bebc[_0x2a15('0x8')]('VoiceContext',attributes,{'tableName':_0x2a15('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b70d79..3d654e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd15=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result'];(function(_0x2165a4,_0x7d6142){var _0x2ed1a5=function(_0x102c15){while(--_0x102c15){_0x2165a4['push'](_0x2165a4['shift']());}};_0x2ed1a5(++_0x7d6142);}(_0xbd15,0x1a3));var _0x5bd1=function(_0x5f511c,_0xbfed54){_0x5f511c=_0x5f511c-0x0;var _0x5d431b=_0xbd15[_0x5f511c];return _0x5d431b;};'use strict';var _=require(_0x5bd1('0x0'));var util=require(_0x5bd1('0x1'));var moment=require('moment');var BPromise=require(_0x5bd1('0x2'));var rs=require(_0x5bd1('0x3'));var fs=require('fs');var Redis=require(_0x5bd1('0x4'));var db=require(_0x5bd1('0x5'))['db'];var utils=require(_0x5bd1('0x6'));var logger=require(_0x5bd1('0x7'))(_0x5bd1('0x8'));var config=require(_0x5bd1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x5bd1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1265c2,_0x52e33b,_0x3cd6f8){return new BPromise(function(_0x27af11,_0x35c7d6){return client[_0x5bd1('0xb')](_0x1265c2,_0x3cd6f8)['then'](function(_0x1bd4d7){logger[_0x5bd1('0xc')](_0x5bd1('0xd'),_0x52e33b,'request\x20sent');logger[_0x5bd1('0xe')](_0x5bd1('0xf'),_0x52e33b,_0x5bd1('0x10'),JSON['stringify'](_0x1bd4d7));if(_0x1bd4d7[_0x5bd1('0x11')]){if(_0x1bd4d7['error'][_0x5bd1('0x12')]===0x1f4){logger[_0x5bd1('0x11')](_0x5bd1('0xd'),_0x52e33b,_0x1bd4d7[_0x5bd1('0x11')][_0x5bd1('0x13')]);return _0x35c7d6(_0x1bd4d7[_0x5bd1('0x11')][_0x5bd1('0x13')]);}logger[_0x5bd1('0x11')](_0x5bd1('0xd'),_0x52e33b,_0x1bd4d7[_0x5bd1('0x11')][_0x5bd1('0x13')]);return _0x27af11(_0x1bd4d7['error'][_0x5bd1('0x13')]);}else{logger[_0x5bd1('0xc')]('VoiceContext,\x20%s,\x20%s',_0x52e33b,_0x5bd1('0x10'));_0x27af11(_0x1bd4d7[_0x5bd1('0x14')]['message']);}})[_0x5bd1('0x15')](function(_0x1dd151){logger[_0x5bd1('0x11')](_0x5bd1('0xd'),_0x52e33b,_0x1dd151);_0x35c7d6(_0x1dd151);});});}
\ No newline at end of file
+var _0x289f=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird'];(function(_0x1877e2,_0x2b76d4){var _0x44e96a=function(_0x8760bf){while(--_0x8760bf){_0x1877e2['push'](_0x1877e2['shift']());}};_0x44e96a(++_0x2b76d4);}(_0x289f,0x86));var _0xf289=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0x289f[_0x12f688];return _0x59c3de;};'use strict';var _=require(_0xf289('0x0'));var util=require(_0xf289('0x1'));var moment=require(_0xf289('0x2'));var BPromise=require(_0xf289('0x3'));var rs=require(_0xf289('0x4'));var fs=require('fs');var Redis=require(_0xf289('0x5'));var db=require(_0xf289('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xf289('0x7'))(_0xf289('0x8'));var config=require(_0xf289('0x9'));var jayson=require(_0xf289('0xa'));var client=jayson[_0xf289('0xb')][_0xf289('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x16219c,_0x43ec21,_0x30cb79){return new BPromise(function(_0x4c5c31,_0x2415fd){return client[_0xf289('0xd')](_0x16219c,_0x30cb79)[_0xf289('0xe')](function(_0xd811ab){logger[_0xf289('0xf')](_0xf289('0x10'),_0x43ec21,_0xf289('0x11'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x43ec21,_0xf289('0x11'),JSON[_0xf289('0x12')](_0xd811ab));if(_0xd811ab[_0xf289('0x13')]){if(_0xd811ab[_0xf289('0x13')][_0xf289('0x14')]===0x1f4){logger[_0xf289('0x13')](_0xf289('0x10'),_0x43ec21,_0xd811ab[_0xf289('0x13')][_0xf289('0x15')]);return _0x2415fd(_0xd811ab['error'][_0xf289('0x15')]);}logger['error'](_0xf289('0x10'),_0x43ec21,_0xd811ab[_0xf289('0x13')][_0xf289('0x15')]);return _0x4c5c31(_0xd811ab['error'][_0xf289('0x15')]);}else{logger[_0xf289('0xf')](_0xf289('0x10'),_0x43ec21,_0xf289('0x11'));_0x4c5c31(_0xd811ab[_0xf289('0x16')][_0xf289('0x15')]);}})['catch'](function(_0x1a7bef){logger[_0xf289('0x13')](_0xf289('0x10'),_0x43ec21,_0x1a7bef);_0x2415fd(_0x1a7bef);});});}
\ No newline at end of file
index a6c3ed5..4058f9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2b6=['index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x815dd8,_0x2018ae){var _0x16629a=function(_0x2975e9){while(--_0x2975e9){_0x815dd8['push'](_0x815dd8['shift']());}};_0x16629a(++_0x2018ae);}(_0xe2b6,0x15b));var _0x6e2b=function(_0x42c32b,_0x4bf9e7){_0x42c32b=_0x42c32b-0x0;var _0xf7a011=_0xe2b6[_0x42c32b];return _0xf7a011;};'use strict';var multer=require(_0x6e2b('0x0'));var util=require(_0x6e2b('0x1'));var path=require('path');var timeout=require(_0x6e2b('0x2'));var express=require(_0x6e2b('0x3'));var router=express[_0x6e2b('0x4')]();var auth=require(_0x6e2b('0x5'));var interaction=require(_0x6e2b('0x6'));var config=require(_0x6e2b('0x7'));var controller=require('./voiceDialReport.controller');router[_0x6e2b('0x8')]('/',auth[_0x6e2b('0x9')](),controller[_0x6e2b('0xa')]);router[_0x6e2b('0x8')](_0x6e2b('0xb'),auth[_0x6e2b('0x9')](),controller[_0x6e2b('0xc')]);router[_0x6e2b('0x8')](_0x6e2b('0xd'),auth[_0x6e2b('0x9')](),controller[_0x6e2b('0xe')]);router[_0x6e2b('0xf')]('/',auth['isAuthenticated'](),controller[_0x6e2b('0x10')]);router[_0x6e2b('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x6e2b('0x12')]);router[_0x6e2b('0x13')](_0x6e2b('0xd'),auth[_0x6e2b('0x9')](),controller[_0x6e2b('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xb7b5=['delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','show','post','create','put','/:id','update'];(function(_0x17358b,_0x263b98){var _0x514bfb=function(_0xfd8732){while(--_0xfd8732){_0x17358b['push'](_0x17358b['shift']());}};_0x514bfb(++_0x263b98);}(_0xb7b5,0x13e));var _0x5b7b=function(_0x2ecb33,_0x4e1f74){_0x2ecb33=_0x2ecb33-0x0;var _0x38c528=_0xb7b5[_0x2ecb33];return _0x38c528;};'use strict';var multer=require(_0x5b7b('0x0'));var util=require('util');var path=require(_0x5b7b('0x1'));var timeout=require(_0x5b7b('0x2'));var express=require(_0x5b7b('0x3'));var router=express[_0x5b7b('0x4')]();var auth=require(_0x5b7b('0x5'));var interaction=require(_0x5b7b('0x6'));var config=require(_0x5b7b('0x7'));var controller=require('./voiceDialReport.controller');router[_0x5b7b('0x8')]('/',auth[_0x5b7b('0x9')](),controller['index']);router[_0x5b7b('0x8')](_0x5b7b('0xa'),auth[_0x5b7b('0x9')](),controller[_0x5b7b('0xb')]);router[_0x5b7b('0x8')]('/:id',auth[_0x5b7b('0x9')](),controller[_0x5b7b('0xc')]);router[_0x5b7b('0xd')]('/',auth[_0x5b7b('0x9')](),controller[_0x5b7b('0xe')]);router[_0x5b7b('0xf')](_0x5b7b('0x10'),auth[_0x5b7b('0x9')](),controller[_0x5b7b('0x11')]);router[_0x5b7b('0x12')](_0x5b7b('0x10'),auth['isAuthenticated'](),controller[_0x5b7b('0x13')]);module[_0x5b7b('0x14')]=router;
\ No newline at end of file
index e1767b4..031b548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x917e=['exports','STRING','INTEGER','DATE','called,connect,complete','sequelize'];(function(_0x30b25c,_0x5c111a){var _0xa60917=function(_0x1fb72a){while(--_0x1fb72a){_0x30b25c['push'](_0x30b25c['shift']());}};_0xa60917(++_0x5c111a);}(_0x917e,0x155));var _0xe917=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x917e[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe917('0x0'));module[_0xe917('0x1')]={'privilege':{'type':Sequelize[_0xe917('0x2')]},'channel':{'type':Sequelize[_0xe917('0x2')]},'channelstate':{'type':Sequelize[_0xe917('0x3')]},'channelstatedesc':{'type':Sequelize[_0xe917('0x2')]},'calleridnum':{'type':Sequelize[_0xe917('0x2')]},'calleridname':{'type':Sequelize[_0xe917('0x2')]},'connectedlinenum':{'type':Sequelize[_0xe917('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xe917('0x2')]},'accountcode':{'type':Sequelize[_0xe917('0x2')]},'context':{'type':Sequelize[_0xe917('0x2')]},'exten':{'type':Sequelize[_0xe917('0x2')]},'priority':{'type':Sequelize[_0xe917('0x3')]},'uniqueid':{'type':Sequelize[_0xe917('0x2')]},'linkedid':{'type':Sequelize[_0xe917('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xe917('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xe917('0x2')]},'destcalleridnum':{'type':Sequelize[_0xe917('0x2')]},'destcalleridname':{'type':Sequelize[_0xe917('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xe917('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xe917('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xe917('0x2')]},'destpriority':{'type':Sequelize[_0xe917('0x3')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0xe917('0x2')]},'dialstring':{'type':Sequelize[_0xe917('0x2')]},'dialstatus':{'type':Sequelize[_0xe917('0x2')]},'starttime':{'type':Sequelize[_0xe917('0x4')]},'answertime':{'type':Sequelize[_0xe917('0x4')]},'endtime':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize['STRING'],'comment':_0xe917('0x5')},'routeId':{'type':Sequelize[_0xe917('0x3')]},'duration':{'type':Sequelize[_0xe917('0x3')]},'holdtime':{'type':Sequelize[_0xe917('0x3')]},'billableseconds':{'type':Sequelize[_0xe917('0x3')]}};
\ No newline at end of file
+var _0xce77=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x144f4a,_0x4738f7){var _0x1781e2=function(_0x172bb4){while(--_0x172bb4){_0x144f4a['push'](_0x144f4a['shift']());}};_0x1781e2(++_0x4738f7);}(_0xce77,0xa7));var _0x7ce7=function(_0x365433,_0x1aacef){_0x365433=_0x365433-0x0;var _0x3d45aa=_0xce77[_0x365433];return _0x3d45aa;};'use strict';var Sequelize=require('sequelize');module[_0x7ce7('0x0')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x7ce7('0x1')]},'channelstate':{'type':Sequelize[_0x7ce7('0x2')]},'channelstatedesc':{'type':Sequelize[_0x7ce7('0x1')]},'calleridnum':{'type':Sequelize[_0x7ce7('0x1')]},'calleridname':{'type':Sequelize[_0x7ce7('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x7ce7('0x1')]},'language':{'type':Sequelize[_0x7ce7('0x1')]},'accountcode':{'type':Sequelize[_0x7ce7('0x1')]},'context':{'type':Sequelize[_0x7ce7('0x1')]},'exten':{'type':Sequelize[_0x7ce7('0x1')]},'priority':{'type':Sequelize[_0x7ce7('0x2')]},'uniqueid':{'type':Sequelize[_0x7ce7('0x1')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x7ce7('0x1')]},'destchannelstate':{'type':Sequelize[_0x7ce7('0x2')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x7ce7('0x1')]},'destcalleridname':{'type':Sequelize[_0x7ce7('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x7ce7('0x1')]},'destlanguage':{'type':Sequelize[_0x7ce7('0x1')]},'destaccountcode':{'type':Sequelize[_0x7ce7('0x1')]},'destcontext':{'type':Sequelize[_0x7ce7('0x1')]},'destexten':{'type':Sequelize[_0x7ce7('0x1')]},'destpriority':{'type':Sequelize[_0x7ce7('0x2')]},'destuniqueid':{'type':Sequelize[_0x7ce7('0x1')]},'destlinkedid':{'type':Sequelize[_0x7ce7('0x1')]},'dialstring':{'type':Sequelize[_0x7ce7('0x1')]},'dialstatus':{'type':Sequelize[_0x7ce7('0x1')]},'starttime':{'type':Sequelize[_0x7ce7('0x3')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x7ce7('0x3')]},'lastevent':{'type':Sequelize[_0x7ce7('0x1')],'comment':_0x7ce7('0x4')},'routeId':{'type':Sequelize[_0x7ce7('0x2')]},'duration':{'type':Sequelize[_0x7ce7('0x2')]},'holdtime':{'type':Sequelize[_0x7ce7('0x2')]},'billableseconds':{'type':Sequelize[_0x7ce7('0x2')]}};
\ No newline at end of file
index e170fb9..10eac29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd2c=['merge','filter','map','type','key','VIRTUAL','field','options','includeAll','findAll','rows','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','VoiceDialReport','rawAttributes','model','keys','dateStart','query','dateEnd','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','add','day'];(function(_0x4ccbe2,_0x325b72){var _0x54f079=function(_0x8f4c46){while(--_0x8f4c46){_0x4ccbe2['push'](_0x4ccbe2['shift']());}};_0x54f079(++_0x325b72);}(_0xcd2c,0xef));var _0xccd2=function(_0x3184a0,_0x3de9bb){_0x3184a0=_0x3184a0-0x0;var _0x30f781=_0xcd2c[_0x3184a0];return _0x30f781;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xccd2('0x0'));var rimraf=require(_0xccd2('0x1'));var zipdir=require(_0xccd2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xccd2('0x3'));var moment=require('moment');var BPromise=require(_0xccd2('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xccd2('0x5'));var csv=require(_0xccd2('0x6'));var ejs=require(_0xccd2('0x7'));var fs=require('fs');var _=require('lodash');var squel=require(_0xccd2('0x8'));var crypto=require('crypto');var jsforce=require(_0xccd2('0x9'));var deskjs=require(_0xccd2('0xa'));var toCsv=require('to-csv');var querystring=require(_0xccd2('0xb'));var Papa=require(_0xccd2('0xc'));var Redis=require(_0xccd2('0xd'));var qs=require(_0xccd2('0xe'));var logger=require(_0xccd2('0xf'))(_0xccd2('0x10'));var utils=require('../../config/utils');var config=require(_0xccd2('0x11'));var db=require(_0xccd2('0x12'))['db'];function respondWithStatusCode(_0x1ddae7,_0x539553){_0x539553=_0x539553||0xcc;return function(_0x195399){if(_0x195399){return _0x1ddae7[_0xccd2('0x13')](_0x539553);}return _0x1ddae7[_0xccd2('0x14')](_0x539553)[_0xccd2('0x15')]();};}function respondWithResult(_0x4b7ed5,_0x43c490){_0x43c490=_0x43c490||0xc8;return function(_0x117224){if(_0x117224){return _0x4b7ed5[_0xccd2('0x14')](_0x43c490)[_0xccd2('0x16')](_0x117224);}};}function respondWithFilteredResult(_0x497959,_0x225484){return function(_0x4152ad){if(_0x4152ad){var _0x2085ef=_0x4152ad[_0xccd2('0x17')],_0x3c4b82=_0x225484[_0xccd2('0x18')],_0x16893c=_0x225484[_0xccd2('0x18')]+_0x225484[_0xccd2('0x19')],_0x3ea5e6;if(_0x16893c>=_0x2085ef){_0x16893c=_0x2085ef;_0x3ea5e6=0xc8;}else{_0x3ea5e6=0xce;}_0x497959[_0xccd2('0x14')](_0x3ea5e6);return _0x497959[_0xccd2('0x1a')](_0xccd2('0x1b'),_0x3c4b82+'-'+_0x16893c+'/'+_0x2085ef)[_0xccd2('0x16')](_0x4152ad);}return null;};}function patchUpdates(_0x27cd2a){return function(_0x533299){try{jsonpatch[_0xccd2('0x1c')](_0x533299,_0x27cd2a,!![]);}catch(_0xb83d4c){return BPromise['reject'](_0xb83d4c);}return _0x533299[_0xccd2('0x1d')]();};}function saveUpdates(_0x223d8e,_0x44d3a4){return function(_0x372b15){if(_0x372b15){return _0x372b15[_0xccd2('0x1e')](_0x223d8e)['then'](function(_0x177113){return _0x177113;});}return null;};}function removeEntity(_0x232a11,_0x474f03){return function(_0x45ef99){if(_0x45ef99){return _0x45ef99[_0xccd2('0x1f')]()[_0xccd2('0x20')](function(){_0x232a11[_0xccd2('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x498d11,_0x1eb818){return function(_0x5cb3b6){if(!_0x5cb3b6){_0x498d11[_0xccd2('0x13')](0x194);}return _0x5cb3b6;};}function handleError(_0x193ed6,_0x136693){_0x136693=_0x136693||0x1f4;return function(_0xd494b4){logger[_0xccd2('0x21')](_0xd494b4[_0xccd2('0x22')]);if(_0xd494b4[_0xccd2('0x23')]){delete _0xd494b4[_0xccd2('0x23')];}_0x193ed6['status'](_0x136693)[_0xccd2('0x24')](_0xd494b4);};}exports['index']=function(_0x27e06f,_0x22dead){var _0x98f67b={},_0x539ea8={},_0x1ba5c4={'count':0x0,'rows':[]};var _0x5a23a6=db[_0xccd2('0x25')][_0xccd2('0x26')];_0x539ea8[_0xccd2('0x27')]=_[_0xccd2('0x28')](_0x5a23a6);var _0x1cd74c={'dateStart':_0x27e06f['query'][_0xccd2('0x29')],'dateEnd':_0x27e06f[_0xccd2('0x2a')][_0xccd2('0x2b')]};delete _0x27e06f[_0xccd2('0x2a')]['dateStart'];delete _0x27e06f[_0xccd2('0x2a')][_0xccd2('0x2b')];_0x539ea8[_0xccd2('0x2a')]=_[_0xccd2('0x28')](_0x27e06f[_0xccd2('0x2a')]);_0x539ea8['filters']=_[_0xccd2('0x2c')](_0x539ea8[_0xccd2('0x27')],_0x539ea8['query']);_0x98f67b[_0xccd2('0x2d')]=_[_0xccd2('0x2c')](_0x539ea8[_0xccd2('0x27')],qs[_0xccd2('0x2e')](_0x27e06f[_0xccd2('0x2a')][_0xccd2('0x2e')]));_0x98f67b[_0xccd2('0x2d')]=_0x98f67b[_0xccd2('0x2d')][_0xccd2('0x2f')]?_0x98f67b[_0xccd2('0x2d')]:_0x539ea8[_0xccd2('0x27')];if(!_0x27e06f['query'][_0xccd2('0x30')](_0xccd2('0x31'))){_0x98f67b[_0xccd2('0x19')]=qs['limit'](_0x27e06f['query']['limit']);_0x98f67b[_0xccd2('0x18')]=qs[_0xccd2('0x18')](_0x27e06f[_0xccd2('0x2a')][_0xccd2('0x18')]);}_0x98f67b[_0xccd2('0x32')]=qs[_0xccd2('0x33')](_0x27e06f['query'][_0xccd2('0x33')]);_0x98f67b[_0xccd2('0x34')]=qs['filters'](_[_0xccd2('0x35')](_0x27e06f[_0xccd2('0x2a')],_0x539ea8[_0xccd2('0x36')]));if(_0x1cd74c[_0xccd2('0x29')]){if(_0x1cd74c[_0xccd2('0x2b')]){_0x1cd74c['dateEnd']=moment(_0x1cd74c[_0xccd2('0x2b')])[_0xccd2('0x37')](0x1,_0xccd2('0x38'));}else{_0x1cd74c[_0xccd2('0x2b')]=moment(_0x1cd74c[_0xccd2('0x29')])[_0xccd2('0x37')](0x1,_0xccd2('0x38'));}_[_0xccd2('0x39')](_0x98f67b[_0xccd2('0x34')],{'createdAt':{'$gte':_0x1cd74c[_0xccd2('0x29')],'$lte':_0x1cd74c[_0xccd2('0x2b')]}});}if(_0x27e06f[_0xccd2('0x2a')][_0xccd2('0x3a')]){_0x98f67b[_0xccd2('0x34')]=_[_0xccd2('0x39')](_0x98f67b[_0xccd2('0x34')],{'$or':_[_0xccd2('0x3b')](_0x5a23a6,function(_0x228c97){if(_0x228c97[_0xccd2('0x3c')][_0xccd2('0x3d')]!==_0xccd2('0x3e')){var _0x26bd32={};_0x26bd32[_0x228c97[_0xccd2('0x3f')]]={'$like':'%'+_0x27e06f[_0xccd2('0x2a')]['filter']+'%'};return _0x26bd32;}})});}_0x98f67b=_[_0xccd2('0x39')]({},_0x98f67b,_0x27e06f[_0xccd2('0x40')]);var _0x1292a3={'where':_0x98f67b[_0xccd2('0x34')]};return db[_0xccd2('0x25')][_0xccd2('0x17')](_0x1292a3)['then'](function(_0x2e2ed8){_0x1ba5c4[_0xccd2('0x17')]=_0x2e2ed8;if(_0x27e06f[_0xccd2('0x2a')][_0xccd2('0x41')]){_0x98f67b['include']=[{'all':!![]}];}return db[_0xccd2('0x25')][_0xccd2('0x42')](_0x98f67b);})[_0xccd2('0x20')](function(_0x58c51f){_0x1ba5c4[_0xccd2('0x43')]=_0x58c51f;return _0x1ba5c4;})[_0xccd2('0x20')](respondWithFilteredResult(_0x22dead,_0x98f67b))['catch'](handleError(_0x22dead,null));};exports['show']=function(_0x97185f,_0x464d63){var _0xe30c87={'raw':!![],'where':{'id':_0x97185f['params']['id']}},_0x127711={};_0x127711['model']=_[_0xccd2('0x28')](db[_0xccd2('0x25')][_0xccd2('0x26')]);_0x127711[_0xccd2('0x2a')]=_[_0xccd2('0x28')](_0x97185f[_0xccd2('0x2a')]);_0x127711['filters']=_[_0xccd2('0x2c')](_0x127711['model'],_0x127711[_0xccd2('0x2a')]);_0xe30c87[_0xccd2('0x2d')]=_[_0xccd2('0x2c')](_0x127711[_0xccd2('0x27')],qs[_0xccd2('0x2e')](_0x97185f[_0xccd2('0x2a')][_0xccd2('0x2e')]));_0xe30c87[_0xccd2('0x2d')]=_0xe30c87[_0xccd2('0x2d')][_0xccd2('0x2f')]?_0xe30c87['attributes']:_0x127711['model'];if(_0x97185f['query'][_0xccd2('0x41')]){_0xe30c87['include']=[{'all':!![]}];}_0xe30c87=_[_0xccd2('0x39')]({},_0xe30c87,_0x97185f[_0xccd2('0x40')]);return db[_0xccd2('0x25')]['find'](_0xe30c87)['then'](handleEntityNotFound(_0x464d63,null))[_0xccd2('0x20')](respondWithResult(_0x464d63,null))[_0xccd2('0x44')](handleError(_0x464d63,null));};exports[_0xccd2('0x45')]=function(_0x1a35c8,_0xcf5d2e){return db[_0xccd2('0x25')][_0xccd2('0x45')](_0x1a35c8[_0xccd2('0x46')],{})[_0xccd2('0x20')](respondWithResult(_0xcf5d2e,0xc9))['catch'](handleError(_0xcf5d2e,null));};exports[_0xccd2('0x1e')]=function(_0x8c8bc2,_0x1706ae){if(_0x8c8bc2[_0xccd2('0x46')]['id']){delete _0x8c8bc2[_0xccd2('0x46')]['id'];}return db['VoiceDialReport'][_0xccd2('0x47')]({'where':{'id':_0x8c8bc2[_0xccd2('0x48')]['id']}})[_0xccd2('0x20')](handleEntityNotFound(_0x1706ae,null))['then'](saveUpdates(_0x8c8bc2[_0xccd2('0x46')],null))[_0xccd2('0x20')](respondWithResult(_0x1706ae,null))[_0xccd2('0x44')](handleError(_0x1706ae,null));};exports[_0xccd2('0x1f')]=function(_0x878db3,_0x1643b9){return db[_0xccd2('0x25')][_0xccd2('0x47')]({'where':{'id':_0x878db3[_0xccd2('0x48')]['id']}})[_0xccd2('0x20')](handleEntityNotFound(_0x1643b9,null))['then'](removeEntity(_0x1643b9,null))[_0xccd2('0x44')](handleError(_0x1643b9,null));};exports[_0xccd2('0x49')]=function(_0x4df7ea,_0x4ad381){return db[_0xccd2('0x25')][_0xccd2('0x49')]()['then'](respondWithResult(_0x4ad381,null))[_0xccd2('0x44')](handleError(_0x4ad381,null));};
\ No newline at end of file
+var _0x1169=['stack','name','send','index','VoiceDialReport','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','day','merge','filter','map','key','VIRTUAL','field','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','html-pdf','eml-format','rimraf','request-promise','bluebird','util','sox','ejs','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','count','offset','Content-Range','apply','reject','save','update','then','destroy','error'];(function(_0x1b2422,_0x1e98d4){var _0x376573=function(_0x5db41b){while(--_0x5db41b){_0x1b2422['push'](_0x1b2422['shift']());}};_0x376573(++_0x1e98d4);}(_0x1169,0x1f2));var _0x9116=function(_0x22f398,_0x45cdec){_0x22f398=_0x22f398-0x0;var _0x3cd7f9=_0x1169[_0x22f398];return _0x3cd7f9;};'use strict';var pdf=require(_0x9116('0x0'));var emlformat=require(_0x9116('0x1'));var rimraf=require(_0x9116('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9116('0x3'));var moment=require('moment');var BPromise=require(_0x9116('0x4'));var Mustache=require('mustache');var util=require(_0x9116('0x5'));var path=require('path');var sox=require(_0x9116('0x6'));var csv=require('to-csv');var ejs=require(_0x9116('0x7'));var fs=require('fs');var _=require(_0x9116('0x8'));var squel=require('squel');var crypto=require(_0x9116('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x9116('0xa'));var toCsv=require(_0x9116('0xb'));var querystring=require(_0x9116('0xc'));var Papa=require(_0x9116('0xd'));var Redis=require(_0x9116('0xe'));var qs=require(_0x9116('0xf'));var logger=require(_0x9116('0x10'))(_0x9116('0x11'));var utils=require(_0x9116('0x12'));var config=require('../../config/environment');var db=require(_0x9116('0x13'))['db'];function respondWithStatusCode(_0x185cf3,_0x31f3c9){_0x31f3c9=_0x31f3c9||0xcc;return function(_0x1a630d){if(_0x1a630d){return _0x185cf3[_0x9116('0x14')](_0x31f3c9);}return _0x185cf3['status'](_0x31f3c9)[_0x9116('0x15')]();};}function respondWithResult(_0x43f3bc,_0x5cb679){_0x5cb679=_0x5cb679||0xc8;return function(_0x52ead9){if(_0x52ead9){return _0x43f3bc[_0x9116('0x16')](_0x5cb679)[_0x9116('0x17')](_0x52ead9);}};}function respondWithFilteredResult(_0x1c8187,_0x246e29){return function(_0x343415){if(_0x343415){var _0x21c0f1=_0x343415[_0x9116('0x18')],_0x2875ac=_0x246e29[_0x9116('0x19')],_0x5cb1dd=_0x246e29[_0x9116('0x19')]+_0x246e29['limit'],_0x1f7d3e;if(_0x5cb1dd>=_0x21c0f1){_0x5cb1dd=_0x21c0f1;_0x1f7d3e=0xc8;}else{_0x1f7d3e=0xce;}_0x1c8187[_0x9116('0x16')](_0x1f7d3e);return _0x1c8187['set'](_0x9116('0x1a'),_0x2875ac+'-'+_0x5cb1dd+'/'+_0x21c0f1)[_0x9116('0x17')](_0x343415);}return null;};}function patchUpdates(_0x2bee11){return function(_0x365fe4){try{jsonpatch[_0x9116('0x1b')](_0x365fe4,_0x2bee11,!![]);}catch(_0x197602){return BPromise[_0x9116('0x1c')](_0x197602);}return _0x365fe4[_0x9116('0x1d')]();};}function saveUpdates(_0x1322a5,_0x4c0313){return function(_0x5338cb){if(_0x5338cb){return _0x5338cb[_0x9116('0x1e')](_0x1322a5)[_0x9116('0x1f')](function(_0x29d1fd){return _0x29d1fd;});}return null;};}function removeEntity(_0x4078a4,_0x32aabd){return function(_0x492ff8){if(_0x492ff8){return _0x492ff8[_0x9116('0x20')]()['then'](function(){_0x4078a4[_0x9116('0x16')](0xcc)[_0x9116('0x15')]();});}};}function handleEntityNotFound(_0x159a89,_0x2d39e5){return function(_0x363843){if(!_0x363843){_0x159a89[_0x9116('0x14')](0x194);}return _0x363843;};}function handleError(_0x42aad5,_0x2f51a7){_0x2f51a7=_0x2f51a7||0x1f4;return function(_0x265b6f){logger[_0x9116('0x21')](_0x265b6f[_0x9116('0x22')]);if(_0x265b6f[_0x9116('0x23')]){delete _0x265b6f[_0x9116('0x23')];}_0x42aad5['status'](_0x2f51a7)[_0x9116('0x24')](_0x265b6f);};}exports[_0x9116('0x25')]=function(_0x299ee9,_0x8c0d27){var _0x3b15ea={},_0x8f3ff1={},_0x15da41={'count':0x0,'rows':[]};var _0x31a716=db[_0x9116('0x26')][_0x9116('0x27')];_0x8f3ff1[_0x9116('0x28')]=_[_0x9116('0x29')](_0x31a716);var _0x5ed232={'dateStart':_0x299ee9['query'][_0x9116('0x2a')],'dateEnd':_0x299ee9[_0x9116('0x2b')][_0x9116('0x2c')]};delete _0x299ee9[_0x9116('0x2b')]['dateStart'];delete _0x299ee9['query']['dateEnd'];_0x8f3ff1['query']=_[_0x9116('0x29')](_0x299ee9[_0x9116('0x2b')]);_0x8f3ff1[_0x9116('0x2d')]=_[_0x9116('0x2e')](_0x8f3ff1[_0x9116('0x28')],_0x8f3ff1[_0x9116('0x2b')]);_0x3b15ea[_0x9116('0x2f')]=_['intersection'](_0x8f3ff1[_0x9116('0x28')],qs[_0x9116('0x30')](_0x299ee9[_0x9116('0x2b')][_0x9116('0x30')]));_0x3b15ea[_0x9116('0x2f')]=_0x3b15ea[_0x9116('0x2f')][_0x9116('0x31')]?_0x3b15ea['attributes']:_0x8f3ff1[_0x9116('0x28')];if(!_0x299ee9[_0x9116('0x2b')][_0x9116('0x32')](_0x9116('0x33'))){_0x3b15ea[_0x9116('0x34')]=qs[_0x9116('0x34')](_0x299ee9[_0x9116('0x2b')][_0x9116('0x34')]);_0x3b15ea[_0x9116('0x19')]=qs[_0x9116('0x19')](_0x299ee9[_0x9116('0x2b')][_0x9116('0x19')]);}_0x3b15ea[_0x9116('0x35')]=qs[_0x9116('0x36')](_0x299ee9[_0x9116('0x2b')][_0x9116('0x36')]);_0x3b15ea[_0x9116('0x37')]=qs[_0x9116('0x2d')](_[_0x9116('0x38')](_0x299ee9['query'],_0x8f3ff1[_0x9116('0x2d')]));if(_0x5ed232[_0x9116('0x2a')]){if(_0x5ed232[_0x9116('0x2c')]){_0x5ed232[_0x9116('0x2c')]=moment(_0x5ed232[_0x9116('0x2c')])['add'](0x1,_0x9116('0x39'));}else{_0x5ed232[_0x9116('0x2c')]=moment(_0x5ed232[_0x9116('0x2a')])['add'](0x1,_0x9116('0x39'));}_[_0x9116('0x3a')](_0x3b15ea[_0x9116('0x37')],{'createdAt':{'$gte':_0x5ed232[_0x9116('0x2a')],'$lte':_0x5ed232[_0x9116('0x2c')]}});}if(_0x299ee9[_0x9116('0x2b')][_0x9116('0x3b')]){_0x3b15ea[_0x9116('0x37')]=_[_0x9116('0x3a')](_0x3b15ea[_0x9116('0x37')],{'$or':_[_0x9116('0x3c')](_0x31a716,function(_0x1af821){if(_0x1af821['type'][_0x9116('0x3d')]!==_0x9116('0x3e')){var _0x4f5381={};_0x4f5381[_0x1af821[_0x9116('0x3f')]]={'$like':'%'+_0x299ee9['query'][_0x9116('0x3b')]+'%'};return _0x4f5381;}})});}_0x3b15ea=_[_0x9116('0x3a')]({},_0x3b15ea,_0x299ee9[_0x9116('0x40')]);var _0x4942c5={'where':_0x3b15ea['where']};return db[_0x9116('0x26')]['count'](_0x4942c5)[_0x9116('0x1f')](function(_0x3d30f2){_0x15da41[_0x9116('0x18')]=_0x3d30f2;if(_0x299ee9[_0x9116('0x2b')][_0x9116('0x41')]){_0x3b15ea[_0x9116('0x42')]=[{'all':!![]}];}return db[_0x9116('0x26')][_0x9116('0x43')](_0x3b15ea);})[_0x9116('0x1f')](function(_0x2aefe9){_0x15da41[_0x9116('0x44')]=_0x2aefe9;return _0x15da41;})['then'](respondWithFilteredResult(_0x8c0d27,_0x3b15ea))[_0x9116('0x45')](handleError(_0x8c0d27,null));};exports[_0x9116('0x46')]=function(_0x4ffb9e,_0x83e45){var _0x4d8476={'raw':!![],'where':{'id':_0x4ffb9e[_0x9116('0x47')]['id']}},_0xe9eade={};_0xe9eade[_0x9116('0x28')]=_['keys'](db[_0x9116('0x26')][_0x9116('0x27')]);_0xe9eade[_0x9116('0x2b')]=_[_0x9116('0x29')](_0x4ffb9e[_0x9116('0x2b')]);_0xe9eade[_0x9116('0x2d')]=_[_0x9116('0x2e')](_0xe9eade[_0x9116('0x28')],_0xe9eade[_0x9116('0x2b')]);_0x4d8476[_0x9116('0x2f')]=_[_0x9116('0x2e')](_0xe9eade[_0x9116('0x28')],qs[_0x9116('0x30')](_0x4ffb9e[_0x9116('0x2b')]['fields']));_0x4d8476[_0x9116('0x2f')]=_0x4d8476['attributes'][_0x9116('0x31')]?_0x4d8476[_0x9116('0x2f')]:_0xe9eade[_0x9116('0x28')];if(_0x4ffb9e[_0x9116('0x2b')]['includeAll']){_0x4d8476['include']=[{'all':!![]}];}_0x4d8476=_[_0x9116('0x3a')]({},_0x4d8476,_0x4ffb9e[_0x9116('0x40')]);return db[_0x9116('0x26')][_0x9116('0x48')](_0x4d8476)[_0x9116('0x1f')](handleEntityNotFound(_0x83e45,null))[_0x9116('0x1f')](respondWithResult(_0x83e45,null))[_0x9116('0x45')](handleError(_0x83e45,null));};exports[_0x9116('0x49')]=function(_0x5a72a7,_0x290787){return db[_0x9116('0x26')][_0x9116('0x49')](_0x5a72a7[_0x9116('0x4a')],{})[_0x9116('0x1f')](respondWithResult(_0x290787,0xc9))[_0x9116('0x45')](handleError(_0x290787,null));};exports['update']=function(_0x487e9c,_0x39ade6){if(_0x487e9c[_0x9116('0x4a')]['id']){delete _0x487e9c[_0x9116('0x4a')]['id'];}return db['VoiceDialReport']['find']({'where':{'id':_0x487e9c[_0x9116('0x47')]['id']}})[_0x9116('0x1f')](handleEntityNotFound(_0x39ade6,null))[_0x9116('0x1f')](saveUpdates(_0x487e9c[_0x9116('0x4a')],null))[_0x9116('0x1f')](respondWithResult(_0x39ade6,null))['catch'](handleError(_0x39ade6,null));};exports['destroy']=function(_0x34069b,_0x42426d){return db[_0x9116('0x26')][_0x9116('0x48')]({'where':{'id':_0x34069b[_0x9116('0x47')]['id']}})[_0x9116('0x1f')](handleEntityNotFound(_0x42426d,null))['then'](removeEntity(_0x42426d,null))[_0x9116('0x45')](handleError(_0x42426d,null));};exports['describe']=function(_0x11119c,_0x55e166){return db['VoiceDialReport'][_0x9116('0x4b')]()[_0x9116('0x1f')](respondWithResult(_0x55e166,null))[_0x9116('0x45')](handleError(_0x55e166,null));};
\ No newline at end of file
index 30ed180..b4d59a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d2=['request-promise','exports','define','uniqueid','util','../../config/logger','api','moment','bluebird'];(function(_0x2b3316,_0x543b55){var _0x5a7609=function(_0x1fb84d){while(--_0x1fb84d){_0x2b3316['push'](_0x2b3316['shift']());}};_0x5a7609(++_0x543b55);}(_0x38d2,0x112));var _0x238d=function(_0x4bffe4,_0xb2504f){_0x4bffe4=_0x4bffe4-0x0;var _0x7c68cd=_0x38d2[_0x4bffe4];return _0x7c68cd;};'use strict';var _=require('lodash');var util=require(_0x238d('0x0'));var logger=require(_0x238d('0x1'))(_0x238d('0x2'));var moment=require(_0x238d('0x3'));var BPromise=require(_0x238d('0x4'));var rp=require(_0x238d('0x5'));var attributes=require('./voiceDialReport.attributes');module[_0x238d('0x6')]=function(_0x3294e2,_0x5f0e55){return _0x3294e2[_0x238d('0x7')]('VoiceDialReport',attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x238d('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0abd=['request-promise','exports','VoiceDialReport','uniqueid','util','../../config/logger','api','moment','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0abd,0xee));var _0xd0ab=function(_0x4b6778,_0x505a76){_0x4b6778=_0x4b6778-0x0;var _0x22dbb9=_0x0abd[_0x4b6778];return _0x22dbb9;};'use strict';var _=require('lodash');var util=require(_0xd0ab('0x0'));var logger=require(_0xd0ab('0x1'))(_0xd0ab('0x2'));var moment=require(_0xd0ab('0x3'));var BPromise=require(_0xd0ab('0x4'));var rp=require(_0xd0ab('0x5'));var attributes=require('./voiceDialReport.attributes');module[_0xd0ab('0x6')]=function(_0x5bba31,_0x3f1af9){return _0x5bba31['define'](_0xd0ab('0x7'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0xd0ab('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index c42e7ca..95fe8b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac95=['body','options','raw','stringify','UpdateVoiceDialReport','where','attributes','limit','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','error','code','VoiceDialReport,\x20%s,\x20%s','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xac95,0xa8));var _0x5ac9=function(_0x1de36a,_0x141334){_0x1de36a=_0x1de36a-0x0;var _0x57d1e1=_0xac95[_0x1de36a];return _0x57d1e1;};'use strict';var _=require(_0x5ac9('0x0'));var util=require(_0x5ac9('0x1'));var moment=require(_0x5ac9('0x2'));var BPromise=require(_0x5ac9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ac9('0x4'))['db'];var utils=require(_0x5ac9('0x5'));var logger=require('../../config/logger')(_0x5ac9('0x6'));var config=require(_0x5ac9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5ac9('0x8')][_0x5ac9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8675ec,_0x4bddcf,_0x4dffb8){return new BPromise(function(_0x32afbc,_0x2ab11c){return client[_0x5ac9('0xa')](_0x8675ec,_0x4dffb8)[_0x5ac9('0xb')](function(_0x397bb8){logger[_0x5ac9('0xc')]('VoiceDialReport,\x20%s,\x20%s',_0x4bddcf,_0x5ac9('0xd'));logger[_0x5ac9('0xe')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x4bddcf,_0x5ac9('0xd'),JSON['stringify'](_0x397bb8));if(_0x397bb8[_0x5ac9('0xf')]){if(_0x397bb8['error'][_0x5ac9('0x10')]===0x1f4){logger[_0x5ac9('0xf')](_0x5ac9('0x11'),_0x4bddcf,_0x397bb8[_0x5ac9('0xf')]['message']);return _0x2ab11c(_0x397bb8['error'][_0x5ac9('0x12')]);}logger['error'](_0x5ac9('0x11'),_0x4bddcf,_0x397bb8[_0x5ac9('0xf')]['message']);return _0x32afbc(_0x397bb8[_0x5ac9('0xf')][_0x5ac9('0x12')]);}else{logger[_0x5ac9('0xc')](_0x5ac9('0x11'),_0x4bddcf,_0x5ac9('0xd'));_0x32afbc(_0x397bb8[_0x5ac9('0x13')][_0x5ac9('0x12')]);}})[_0x5ac9('0x14')](function(_0x460fd7){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0x4bddcf,_0x460fd7);_0x2ab11c(_0x460fd7);});});}exports[_0x5ac9('0x15')]=function(_0x193c56){var _0x102c85=this;return new Promise(function(_0x4463ff,_0x91823f){return db[_0x5ac9('0x16')][_0x5ac9('0x17')](_0x193c56[_0x5ac9('0x18')],{'raw':_0x193c56[_0x5ac9('0x19')]?_0x193c56[_0x5ac9('0x19')][_0x5ac9('0x1a')]===undefined?!![]:![]:!![]})[_0x5ac9('0xb')](function(_0x2efa5f){logger['info'](_0x5ac9('0x15'),_0x193c56);logger[_0x5ac9('0xe')](_0x5ac9('0x15'),_0x193c56,JSON[_0x5ac9('0x1b')](_0x2efa5f));_0x4463ff(_0x2efa5f);})[_0x5ac9('0x14')](function(_0x492679){logger[_0x5ac9('0xf')](_0x5ac9('0x15'),_0x492679['message'],_0x193c56);_0x91823f(_0x102c85['error'](0x1f4,_0x492679['message']));});});};exports[_0x5ac9('0x1c')]=function(_0x2e666b){var _0x4e3b64=this;return new Promise(function(_0x5ce83a,_0x1a6372){return db['VoiceDialReport']['update'](_0x2e666b[_0x5ac9('0x18')],{'raw':_0x2e666b['options']?_0x2e666b[_0x5ac9('0x19')][_0x5ac9('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2e666b[_0x5ac9('0x19')]?_0x2e666b[_0x5ac9('0x19')][_0x5ac9('0x1d')]||null:null,'attributes':_0x2e666b[_0x5ac9('0x19')]?_0x2e666b[_0x5ac9('0x19')][_0x5ac9('0x1e')]||null:null,'limit':_0x2e666b[_0x5ac9('0x19')]?_0x2e666b['options'][_0x5ac9('0x1f')]||null:null})[_0x5ac9('0xb')](function(_0x2a7db9){logger[_0x5ac9('0xc')](_0x5ac9('0x1c'),_0x2e666b);logger['debug']('UpdateVoiceDialReport',_0x2e666b,JSON[_0x5ac9('0x1b')](_0x2a7db9));_0x5ce83a(_0x2a7db9);})[_0x5ac9('0x14')](function(_0x4a784e){logger[_0x5ac9('0xf')]('UpdateVoiceDialReport',_0x4a784e[_0x5ac9('0x12')],_0x2e666b);_0x1a6372(_0x4e3b64[_0x5ac9('0xf')](0x1f4,_0x4a784e[_0x5ac9('0x12')]));});});};
\ No newline at end of file
+var _0xa74d=['VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','catch','UpdateVoiceDialReport','update','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x5348b2,_0x56f74a){var _0x53af03=function(_0x319d8a){while(--_0x319d8a){_0x5348b2['push'](_0x5348b2['shift']());}};_0x53af03(++_0x56f74a);}(_0xa74d,0x1cf));var _0xda74=function(_0x189a66,_0x245d35){_0x189a66=_0x189a66-0x0;var _0x44fb31=_0xa74d[_0x189a66];return _0x44fb31;};'use strict';var _=require('lodash');var util=require(_0xda74('0x0'));var moment=require(_0xda74('0x1'));var BPromise=require(_0xda74('0x2'));var rs=require(_0xda74('0x3'));var fs=require('fs');var Redis=require(_0xda74('0x4'));var db=require(_0xda74('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xda74('0x6'))(_0xda74('0x7'));var config=require(_0xda74('0x8'));var jayson=require(_0xda74('0x9'));var client=jayson[_0xda74('0xa')][_0xda74('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2113f2,_0x3fa4e7,_0x5da443){return new BPromise(function(_0x23d5f5,_0x517251){return client['request'](_0x2113f2,_0x5da443)[_0xda74('0xc')](function(_0x411790){logger['info'](_0xda74('0xd'),_0x3fa4e7,_0xda74('0xe'));logger[_0xda74('0xf')](_0xda74('0x10'),_0x3fa4e7,_0xda74('0xe'),JSON[_0xda74('0x11')](_0x411790));if(_0x411790[_0xda74('0x12')]){if(_0x411790[_0xda74('0x12')]['code']===0x1f4){logger[_0xda74('0x12')](_0xda74('0xd'),_0x3fa4e7,_0x411790[_0xda74('0x12')]['message']);return _0x517251(_0x411790[_0xda74('0x12')][_0xda74('0x13')]);}logger[_0xda74('0x12')](_0xda74('0xd'),_0x3fa4e7,_0x411790[_0xda74('0x12')][_0xda74('0x13')]);return _0x23d5f5(_0x411790[_0xda74('0x12')]['message']);}else{logger[_0xda74('0x14')](_0xda74('0xd'),_0x3fa4e7,_0xda74('0xe'));_0x23d5f5(_0x411790[_0xda74('0x15')][_0xda74('0x13')]);}})['catch'](function(_0x1535d3){logger[_0xda74('0x12')](_0xda74('0xd'),_0x3fa4e7,_0x1535d3);_0x517251(_0x1535d3);});});}exports[_0xda74('0x16')]=function(_0x28baa9){var _0xd22576=this;return new Promise(function(_0x179a63,_0x504c77){return db[_0xda74('0x17')][_0xda74('0x18')](_0x28baa9[_0xda74('0x19')],{'raw':_0x28baa9[_0xda74('0x1a')]?_0x28baa9[_0xda74('0x1a')][_0xda74('0x1b')]===undefined?!![]:![]:!![]})[_0xda74('0xc')](function(_0x291dd6){logger['info']('CreateVoiceDialReport',_0x28baa9);logger['debug'](_0xda74('0x16'),_0x28baa9,JSON[_0xda74('0x11')](_0x291dd6));_0x179a63(_0x291dd6);})[_0xda74('0x1c')](function(_0x4494ad){logger['error']('CreateVoiceDialReport',_0x4494ad[_0xda74('0x13')],_0x28baa9);_0x504c77(_0xd22576[_0xda74('0x12')](0x1f4,_0x4494ad[_0xda74('0x13')]));});});};exports[_0xda74('0x1d')]=function(_0x34e2c9){var _0x4124cf=this;return new Promise(function(_0x504d58,_0x5d0bf8){return db[_0xda74('0x17')][_0xda74('0x1e')](_0x34e2c9[_0xda74('0x19')],{'raw':_0x34e2c9['options']?_0x34e2c9[_0xda74('0x1a')][_0xda74('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34e2c9['options']?_0x34e2c9[_0xda74('0x1a')][_0xda74('0x1f')]||null:null,'attributes':_0x34e2c9[_0xda74('0x1a')]?_0x34e2c9[_0xda74('0x1a')][_0xda74('0x20')]||null:null,'limit':_0x34e2c9['options']?_0x34e2c9['options'][_0xda74('0x21')]||null:null})['then'](function(_0x1651aa){logger[_0xda74('0x14')]('UpdateVoiceDialReport',_0x34e2c9);logger[_0xda74('0xf')]('UpdateVoiceDialReport',_0x34e2c9,JSON[_0xda74('0x11')](_0x1651aa));_0x504d58(_0x1651aa);})[_0xda74('0x1c')](function(_0x309353){logger['error'](_0xda74('0x1d'),_0x309353[_0xda74('0x13')],_0x34e2c9);_0x5d0bf8(_0x4124cf[_0xda74('0x12')](0x1f4,_0x309353[_0xda74('0x13')]));});});};
\ No newline at end of file
index 7cf215a..28ba994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d11=['isAuthenticated','index','/:id','show','post','/:id/applications','addApplications','update','delete','destroy','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','get'];(function(_0x1ac47e,_0x27f1ec){var _0xdd22bb=function(_0x2cd4f1){while(--_0x2cd4f1){_0x1ac47e['push'](_0x1ac47e['shift']());}};_0xdd22bb(++_0x27f1ec);}(_0x6d11,0xbf));var _0x16d1=function(_0x3eaff0,_0x2e671e){_0x3eaff0=_0x3eaff0-0x0;var _0x56fd83=_0x6d11[_0x3eaff0];return _0x56fd83;};'use strict';var multer=require(_0x16d1('0x0'));var util=require(_0x16d1('0x1'));var path=require(_0x16d1('0x2'));var timeout=require('connect-timeout');var express=require(_0x16d1('0x3'));var router=express['Router']();var auth=require(_0x16d1('0x4'));var interaction=require(_0x16d1('0x5'));var config=require('../../config/environment');var controller=require('./voiceExtension.controller');router[_0x16d1('0x6')]('/',auth[_0x16d1('0x7')](),controller[_0x16d1('0x8')]);router[_0x16d1('0x6')](_0x16d1('0x9'),auth[_0x16d1('0x7')](),controller[_0x16d1('0xa')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x16d1('0xb')](_0x16d1('0xc'),auth[_0x16d1('0x7')](),controller[_0x16d1('0xd')]);router['put'](_0x16d1('0x9'),auth[_0x16d1('0x7')](),controller[_0x16d1('0xe')]);router[_0x16d1('0xf')](_0x16d1('0x9'),auth[_0x16d1('0x7')](),controller[_0x16d1('0x10')]);module[_0x16d1('0x11')]=router;
\ No newline at end of file
+var _0xd943=['/:id/applications','isAuthenticated','put','update','/:id','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','index','show','post'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd943,0x15d));var _0x3d94=function(_0x42e8e4,_0x4c13f1){_0x42e8e4=_0x42e8e4-0x0;var _0x1dff80=_0xd943[_0x42e8e4];return _0x1dff80;};'use strict';var multer=require(_0x3d94('0x0'));var util=require(_0x3d94('0x1'));var path=require(_0x3d94('0x2'));var timeout=require(_0x3d94('0x3'));var express=require('express');var router=express[_0x3d94('0x4')]();var auth=require(_0x3d94('0x5'));var interaction=require(_0x3d94('0x6'));var config=require(_0x3d94('0x7'));var controller=require(_0x3d94('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x3d94('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x3d94('0xa')]);router[_0x3d94('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3d94('0xb')](_0x3d94('0xc'),auth[_0x3d94('0xd')](),controller['addApplications']);router[_0x3d94('0xe')]('/:id',auth[_0x3d94('0xd')](),controller[_0x3d94('0xf')]);router['delete'](_0x3d94('0x10'),auth[_0x3d94('0xd')](),controller[_0x3d94('0x11')]);module[_0x3d94('0x12')]=router;
\ No newline at end of file
index 2934fb1..31be2f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['NoOp','outbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex'];(function(_0x375e18,_0x4985cb){var _0x2214a0=function(_0x4d84d3){while(--_0x4d84d3){_0x375e18['push'](_0x375e18['shift']());}};_0x2214a0(++_0x4985cb);}(_0x55e0,0xdc));var _0x055e=function(_0x305df1,_0x353fe4){_0x305df1=_0x305df1-0x0;var _0x1a55ab=_0x55e0[_0x305df1];return _0x1a55ab;};'use strict';var Sequelize=require(_0x055e('0x0'));module[_0x055e('0x1')]={'context':{'type':Sequelize[_0x055e('0x2')],'allowNull':![],'unique':_0x055e('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x055e('0x2')],'allowNull':![],'defaultValue':'1','unique':_0x055e('0x3')},'tag':{'type':Sequelize[_0x055e('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x055e('0x2')],'allowNull':![],'defaultValue':_0x055e('0x4')},'appdata':{'type':Sequelize[_0x055e('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM']('inbound',_0x055e('0x5'),'internal',_0x055e('0x6'),_0x055e('0x7'),_0x055e('0x8'),_0x055e('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0x055e('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x055e('0xa')},'IntervalId':{'type':Sequelize[_0x055e('0xb')]},'isApp':{'type':Sequelize[_0x055e('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x055e('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x055e('0x2')],'allowNull':!![]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0x055e('0x2')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x055e('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x055e('0xd')],'get':function(_0x72d424){return this[_0x055e('0xe')](_0x055e('0xf'));}}};
\ No newline at end of file
+var _0x579c=['system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','inbound-fax','outbound-fax'];(function(_0x43a870,_0x4c2a20){var _0x363c09=function(_0x430a76){while(--_0x430a76){_0x43a870['push'](_0x43a870['shift']());}};_0x363c09(++_0x4c2a20);}(_0x579c,0xda));var _0xc579=function(_0x16dbab,_0x3ac1e1){_0x16dbab=_0x16dbab-0x0;var _0x59b0b2=_0x579c[_0x16dbab];return _0x59b0b2;};'use strict';var Sequelize=require(_0xc579('0x0'));module[_0xc579('0x1')]={'context':{'type':Sequelize[_0xc579('0x2')],'allowNull':![],'unique':_0xc579('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xc579('0x2')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0xc579('0x2')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0xc579('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xc579('0x2')],'allowNull':![],'defaultValue':_0xc579('0x4')},'appdata':{'type':Sequelize[_0xc579('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xc579('0x5')](_0xc579('0x6'),_0xc579('0x7'),'internal',_0xc579('0x8'),_0xc579('0x9'),_0xc579('0xa'),_0xc579('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0xc579('0x2')]},'interval':{'type':Sequelize[_0xc579('0x2')],'allowNull':![],'defaultValue':_0xc579('0xc')},'IntervalId':{'type':Sequelize[_0xc579('0xd')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xc579('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0xc579('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0xc579('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xc579('0xd')]},'recordingFormat':{'type':Sequelize[_0xc579('0x2')],'defaultValue':_0xc579('0xf')},'answer':{'type':Sequelize[_0xc579('0xe')],'defaultValue':!![]},'name':{'type':Sequelize[_0xc579('0x10')],'get':function(_0x421812){return this[_0xc579('0x11')](_0xc579('0x12'));}}};
\ No newline at end of file
index a938ee0..3391058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd70=['where','pick','add','day','merge','filter','key','field','options','count','include','findAll','catch','show','params','create','body','outbound','startsWith','exten','concat','user','role','InternalRoutes','UserProfileSection','autoAssociation','context','description','cutdigits','findOne','transaction','VoiceExtensionId','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','../../mysqldb','redis','defaults','localhost','./voiceExtension.socket','sendStatus','status','end','json','offset','Content-Range','apply','reject','save','update','then','get','InboundRoutes','inbound','OutboundRoutes','internal','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','error','stack','send','index','VoiceExtension','rawAttributes','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','length','model','nolimit','limit','order'];(function(_0x3b7854,_0x1c76c1){var _0x8d04d9=function(_0x498f22){while(--_0x498f22){_0x3b7854['push'](_0x3b7854['shift']());}};_0x8d04d9(++_0x1c76c1);}(_0xfd70,0xf1));var _0x0fd7=function(_0x15fc3c,_0x35665b){_0x15fc3c=_0x15fc3c-0x0;var _0x94c5c8=_0xfd70[_0x15fc3c];return _0x94c5c8;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x0fd7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0fd7('0x1'));var jsonpatch=require(_0x0fd7('0x2'));var rp=require(_0x0fd7('0x3'));var moment=require(_0x0fd7('0x4'));var BPromise=require(_0x0fd7('0x5'));var Mustache=require(_0x0fd7('0x6'));var util=require(_0x0fd7('0x7'));var path=require(_0x0fd7('0x8'));var sox=require('sox');var csv=require(_0x0fd7('0x9'));var ejs=require(_0x0fd7('0xa'));var fs=require('fs');var _=require(_0x0fd7('0xb'));var squel=require('squel');var crypto=require(_0x0fd7('0xc'));var jsforce=require(_0x0fd7('0xd'));var deskjs=require(_0x0fd7('0xe'));var toCsv=require(_0x0fd7('0x9'));var querystring=require(_0x0fd7('0xf'));var Papa=require(_0x0fd7('0x10'));var Redis=require('ioredis');var qs=require(_0x0fd7('0x11'));var logger=require(_0x0fd7('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x0fd7('0x13'))['db'];config[_0x0fd7('0x14')]=_[_0x0fd7('0x15')](config[_0x0fd7('0x14')],{'host':_0x0fd7('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0fd7('0x14')]));require(_0x0fd7('0x17'))['register'](socket);function respondWithStatusCode(_0x115387,_0x50f99b){_0x50f99b=_0x50f99b||0xcc;return function(_0x49cb7a){if(_0x49cb7a){return _0x115387[_0x0fd7('0x18')](_0x50f99b);}return _0x115387[_0x0fd7('0x19')](_0x50f99b)[_0x0fd7('0x1a')]();};}function respondWithResult(_0x3226b9,_0x2c5b2e){_0x2c5b2e=_0x2c5b2e||0xc8;return function(_0x37e1d7){if(_0x37e1d7){return _0x3226b9['status'](_0x2c5b2e)[_0x0fd7('0x1b')](_0x37e1d7);}};}function respondWithFilteredResult(_0x24aebb,_0x5283de){return function(_0x547af5){if(_0x547af5){var _0x17ec28=_0x547af5['count'],_0x758d94=_0x5283de['offset'],_0x148262=_0x5283de[_0x0fd7('0x1c')]+_0x5283de['limit'],_0x112c90;if(_0x148262>=_0x17ec28){_0x148262=_0x17ec28;_0x112c90=0xc8;}else{_0x112c90=0xce;}_0x24aebb['status'](_0x112c90);return _0x24aebb['set'](_0x0fd7('0x1d'),_0x758d94+'-'+_0x148262+'/'+_0x17ec28)[_0x0fd7('0x1b')](_0x547af5);}return null;};}function patchUpdates(_0x59d54b){return function(_0x4057a8){try{jsonpatch[_0x0fd7('0x1e')](_0x4057a8,_0x59d54b,!![]);}catch(_0x5ed5d5){return BPromise[_0x0fd7('0x1f')](_0x5ed5d5);}return _0x4057a8[_0x0fd7('0x20')]();};}function saveUpdates(_0x40cd76,_0x34bef9){return function(_0x2c0bd4){if(_0x2c0bd4){return _0x2c0bd4[_0x0fd7('0x21')](_0x40cd76)[_0x0fd7('0x22')](function(_0x3af306){return _0x3af306;});}return null;};}function removeEntity(_0x1a9622,_0x39e62e){return function(_0x42a2b0){if(_0x42a2b0){return _0x42a2b0['destroy']()['then'](function(){var _0x193ef8=_0x42a2b0[_0x0fd7('0x23')]({'plain':!![]});var _0x2d5483=[{'name':_0x0fd7('0x24'),'value':_0x0fd7('0x25'),'ignore':![]},{'name':_0x0fd7('0x26'),'value':'outbound','ignore':![]},{'name':'InternalRoutes','value':_0x0fd7('0x27'),'ignore':![]}];var _0x53d069=_(_0x2d5483)['filter'](_0x0fd7('0x28'))[_0x0fd7('0x29')](_0x0fd7('0x2a'))['value']();if(_[_0x0fd7('0x2b')](_0x53d069,_0x193ef8[_0x0fd7('0x2c')])){return;}var _0x387b95=_[_0x0fd7('0x2d')](_0x2d5483,[_0x0fd7('0x2a'),_0x193ef8['type']])[_0x0fd7('0x2e')];return db[_0x0fd7('0x2f')][_0x0fd7('0x30')]({'where':{'type':_0x387b95,'resourceId':_0x193ef8['id']}})['then'](function(){return _0x42a2b0;});})[_0x0fd7('0x22')](function(){_0x1a9622[_0x0fd7('0x19')](0xcc)[_0x0fd7('0x1a')]();});}};}function handleEntityNotFound(_0x596a7b,_0x55c477){return function(_0x17dab5){if(!_0x17dab5){_0x596a7b[_0x0fd7('0x18')](0x194);}return _0x17dab5;};}function handleError(_0x4c4aab,_0x5d1848){_0x5d1848=_0x5d1848||0x1f4;return function(_0x25cad1){logger[_0x0fd7('0x31')](_0x25cad1[_0x0fd7('0x32')]);if(_0x25cad1[_0x0fd7('0x2e')]){delete _0x25cad1[_0x0fd7('0x2e')];}_0x4c4aab['status'](_0x5d1848)[_0x0fd7('0x33')](_0x25cad1);};}exports[_0x0fd7('0x34')]=function(_0x5e163c,_0x26319f){var _0x53a3ed={},_0x3ad056={},_0x59ddbc={'count':0x0,'rows':[]};var _0x2b452d=db[_0x0fd7('0x35')][_0x0fd7('0x36')];_0x3ad056['model']=_[_0x0fd7('0x37')](_0x2b452d);var _0x1ac836={'dateStart':_0x5e163c['query'][_0x0fd7('0x38')],'dateEnd':_0x5e163c[_0x0fd7('0x39')][_0x0fd7('0x3a')]};delete _0x5e163c[_0x0fd7('0x39')][_0x0fd7('0x38')];delete _0x5e163c[_0x0fd7('0x39')][_0x0fd7('0x3a')];_0x3ad056[_0x0fd7('0x39')]=_[_0x0fd7('0x37')](_0x5e163c[_0x0fd7('0x39')]);_0x3ad056[_0x0fd7('0x3b')]=_[_0x0fd7('0x3c')](_0x3ad056['model'],_0x3ad056[_0x0fd7('0x39')]);_0x53a3ed[_0x0fd7('0x3d')]=_['intersection'](_0x3ad056['model'],qs[_0x0fd7('0x3e')](_0x5e163c[_0x0fd7('0x39')][_0x0fd7('0x3e')]));_0x53a3ed[_0x0fd7('0x3d')]=_0x53a3ed[_0x0fd7('0x3d')][_0x0fd7('0x3f')]?_0x53a3ed['attributes']:_0x3ad056[_0x0fd7('0x40')];if(!_0x5e163c[_0x0fd7('0x39')]['hasOwnProperty'](_0x0fd7('0x41'))){_0x53a3ed['limit']=qs[_0x0fd7('0x42')](_0x5e163c[_0x0fd7('0x39')][_0x0fd7('0x42')]);_0x53a3ed['offset']=qs[_0x0fd7('0x1c')](_0x5e163c['query'][_0x0fd7('0x1c')]);}_0x53a3ed[_0x0fd7('0x43')]=qs['sort'](_0x5e163c[_0x0fd7('0x39')]['sort']);_0x53a3ed[_0x0fd7('0x44')]=qs[_0x0fd7('0x3b')](_[_0x0fd7('0x45')](_0x5e163c[_0x0fd7('0x39')],_0x3ad056[_0x0fd7('0x3b')]));if(_0x1ac836[_0x0fd7('0x38')]){if(_0x1ac836[_0x0fd7('0x3a')]){_0x1ac836[_0x0fd7('0x3a')]=moment(_0x1ac836[_0x0fd7('0x3a')])[_0x0fd7('0x46')](0x1,'day');}else{_0x1ac836[_0x0fd7('0x3a')]=moment(_0x1ac836[_0x0fd7('0x38')])[_0x0fd7('0x46')](0x1,_0x0fd7('0x47'));}_[_0x0fd7('0x48')](_0x53a3ed['where'],{'createdAt':{'$gte':_0x1ac836[_0x0fd7('0x38')],'$lte':_0x1ac836[_0x0fd7('0x3a')]}});}if(_0x5e163c[_0x0fd7('0x39')][_0x0fd7('0x49')]){_0x53a3ed[_0x0fd7('0x44')]=_[_0x0fd7('0x48')](_0x53a3ed[_0x0fd7('0x44')],{'$or':_[_0x0fd7('0x29')](_0x2b452d,function(_0x598f45){if(_0x598f45[_0x0fd7('0x2c')][_0x0fd7('0x4a')]!=='VIRTUAL'){var _0x5e559d={};_0x5e559d[_0x598f45[_0x0fd7('0x4b')]]={'$like':'%'+_0x5e163c[_0x0fd7('0x39')][_0x0fd7('0x49')]+'%'};return _0x5e559d;}})});}_0x53a3ed=_['merge']({},_0x53a3ed,_0x5e163c[_0x0fd7('0x4c')]);var _0x2027db={'where':_0x53a3ed[_0x0fd7('0x44')]};return db[_0x0fd7('0x35')][_0x0fd7('0x4d')](_0x2027db)['then'](function(_0xf5e5d0){_0x59ddbc['count']=_0xf5e5d0;if(_0x5e163c['query']['includeAll']){_0x53a3ed[_0x0fd7('0x4e')]=[{'all':!![]}];}return db['VoiceExtension'][_0x0fd7('0x4f')](_0x53a3ed);})['then'](function(_0x3d52b3){_0x59ddbc['rows']=_0x3d52b3;return _0x59ddbc;})['then'](respondWithFilteredResult(_0x26319f,_0x53a3ed))[_0x0fd7('0x50')](handleError(_0x26319f,null));};exports[_0x0fd7('0x51')]=function(_0x27e59d,_0x5081dc){var _0x2a00ce={'raw':![],'where':{'id':_0x27e59d['params']['id']}},_0x186e8b={};_0x186e8b['model']=_[_0x0fd7('0x37')](db['VoiceExtension'][_0x0fd7('0x36')]);_0x186e8b[_0x0fd7('0x39')]=_[_0x0fd7('0x37')](_0x27e59d['query']);_0x186e8b[_0x0fd7('0x3b')]=_[_0x0fd7('0x3c')](_0x186e8b['model'],_0x186e8b[_0x0fd7('0x39')]);_0x2a00ce[_0x0fd7('0x3d')]=_['intersection'](_0x186e8b[_0x0fd7('0x40')],qs[_0x0fd7('0x3e')](_0x27e59d[_0x0fd7('0x39')]['fields']));_0x2a00ce[_0x0fd7('0x3d')]=_0x2a00ce[_0x0fd7('0x3d')]['length']?_0x2a00ce[_0x0fd7('0x3d')]:_0x186e8b[_0x0fd7('0x40')];if(_0x27e59d[_0x0fd7('0x39')]['includeAll']){_0x2a00ce[_0x0fd7('0x4e')]=[{'all':!![]}];}_0x2a00ce=_['merge']({},_0x2a00ce,_0x27e59d[_0x0fd7('0x4c')]);return db[_0x0fd7('0x35')][_0x0fd7('0x2d')](_0x2a00ce)['then'](handleEntityNotFound(_0x5081dc,null))[_0x0fd7('0x22')](respondWithResult(_0x5081dc,null))[_0x0fd7('0x50')](handleError(_0x5081dc,null));};exports['destroy']=function(_0x12f6e6,_0x30c9e4){return db[_0x0fd7('0x35')][_0x0fd7('0x2d')]({'where':{'id':_0x12f6e6[_0x0fd7('0x52')]['id']}})['then'](handleEntityNotFound(_0x30c9e4,null))['then'](removeEntity(_0x30c9e4,null))[_0x0fd7('0x50')](handleError(_0x30c9e4,null));};exports[_0x0fd7('0x53')]=function(_0x4b216a,_0x169721){if(_0x4b216a[_0x0fd7('0x54')]['type']===_0x0fd7('0x55')&&!_[_0x0fd7('0x56')](_0x4b216a[_0x0fd7('0x54')]['exten'],'_')){_0x4b216a[_0x0fd7('0x54')][_0x0fd7('0x57')]='_'[_0x0fd7('0x58')](_0x4b216a[_0x0fd7('0x54')]['exten']);}return db[_0x0fd7('0x35')][_0x0fd7('0x53')](_0x4b216a[_0x0fd7('0x54')],{'raw':![]})[_0x0fd7('0x22')](function(_0x380c31){var _0x4ba81f=_0x4b216a[_0x0fd7('0x59')][_0x0fd7('0x23')]({'plain':!![]});if(!_0x4ba81f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ba81f[_0x0fd7('0x5a')]===_0x0fd7('0x59')){var _0x58b446=_0x380c31[_0x0fd7('0x23')]({'plain':!![]});var _0x2b62a8=[{'name':_0x0fd7('0x24'),'value':_0x0fd7('0x25')},{'name':_0x0fd7('0x26'),'value':_0x0fd7('0x55')},{'name':_0x0fd7('0x5b'),'value':'internal'}];var _0x65239b=_[_0x0fd7('0x2d')](_0x2b62a8,[_0x0fd7('0x2a'),_0x58b446[_0x0fd7('0x2c')]])[_0x0fd7('0x2e')];return db[_0x0fd7('0x5c')][_0x0fd7('0x2d')]({'where':{'name':_0x65239b,'userProfileId':_0x4ba81f['userProfileId']},'raw':!![]})[_0x0fd7('0x22')](function(_0x5b35ed){if(_0x5b35ed&&_0x5b35ed[_0x0fd7('0x5d')]===0x0){return db['UserProfileResource'][_0x0fd7('0x53')]({'name':_0x58b446[_0x0fd7('0x2e')],'resourceId':_0x58b446['id'],'type':_0x5b35ed[_0x0fd7('0x2e')],'sectionId':_0x5b35ed['id']},{})['then'](function(){return _0x380c31;});}else{return _0x380c31;}})[_0x0fd7('0x50')](function(_0x579027){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x579027);throw _0x579027;});}return _0x380c31;})[_0x0fd7('0x22')](respondWithResult(_0x169721,0xc9))[_0x0fd7('0x50')](handleError(_0x169721,null));};exports['update']=function(_0x33b636,_0x49dfe0){if(_0x33b636['body']['id']){delete _0x33b636[_0x0fd7('0x54')]['id'];}return db[_0x0fd7('0x35')][_0x0fd7('0x2d')]({'where':{'id':_0x33b636[_0x0fd7('0x52')]['id']}})[_0x0fd7('0x22')](handleEntityNotFound(_0x49dfe0,null))['then'](function(_0x3c41ee){if(_0x3c41ee){return db[_0x0fd7('0x35')][_0x0fd7('0x21')](_[_0x0fd7('0x45')](_0x33b636[_0x0fd7('0x54')],[_0x0fd7('0x57'),_0x0fd7('0x5e'),_0x0fd7('0x5f'),'recordingFormat',_0x0fd7('0x60')]),{'where':{'context':_0x3c41ee[_0x0fd7('0x5e')],'exten':_0x3c41ee[_0x0fd7('0x57')]},'individualHooks':!![]})[_0x0fd7('0x22')](function(_0x33e35f){return _0x33e35f;});}return null;})['then'](respondWithStatusCode(_0x49dfe0,null))[_0x0fd7('0x50')](handleError(_0x49dfe0,null));};exports['addApplications']=function(_0x454625,_0x684715,_0x4b5d7e){return db[_0x0fd7('0x35')][_0x0fd7('0x61')]({'where':{'id':_0x454625[_0x0fd7('0x52')]['id']}})[_0x0fd7('0x22')](handleEntityNotFound(_0x684715,null))[_0x0fd7('0x22')](function(_0x5437a7){if(_0x5437a7){return db['sequelize'][_0x0fd7('0x62')](function(_0x2f95bc){return db[_0x0fd7('0x35')]['destroy']({'where':{'VoiceExtensionId':_0x454625['params']['id']},'transaction':_0x2f95bc})['then'](function(_0x46d715){var _0x2d6bbf=_['map'](_0x454625[_0x0fd7('0x54')],function(_0x62daea){_0x62daea[_0x0fd7('0x63')]=_0x454625[_0x0fd7('0x52')]['id'];return _0x62daea;});return db[_0x0fd7('0x35')][_0x0fd7('0x64')](_0x2d6bbf,{'transaction':_0x2f95bc});});})[_0x0fd7('0x22')](function(){return db['VoiceExtension'][_0x0fd7('0x65')]({'where':{'isApp':!![],'VoiceExtensionId':_0x454625[_0x0fd7('0x52')]['id']},'order':_0x0fd7('0x66')});});}})['then'](respondWithResult(_0x684715,null))[_0x0fd7('0x50')](handleError(_0x684715,null));};
\ No newline at end of file
+var _0x1a3f=['hasOwnProperty','nolimit','limit','order','sort','where','pick','add','day','merge','field','options','VoiceExtension','count','include','findAll','rows','catch','show','includeAll','body','startsWith','exten','concat','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','context','recordingFormat','cutdigits','addApplications','findOne','sequelize','VoiceExtensionId','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','status','end','json','offset','Content-Range','reject','update','then','destroy','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','map','value','includes','type','find','name','UserProfileResource','error','stack','send','index','rawAttributes','model','keys','query','dateStart','dateEnd','filters','attributes','intersection','fields','length'];(function(_0x361ae6,_0x22e345){var _0x49febb=function(_0x5e9bd9){while(--_0x5e9bd9){_0x361ae6['push'](_0x361ae6['shift']());}};_0x49febb(++_0x22e345);}(_0x1a3f,0x177));var _0xf1a3=function(_0x4624e9,_0x1a3d3b){_0x4624e9=_0x4624e9-0x0;var _0x5e80dc=_0x1a3f[_0x4624e9];return _0x5e80dc;};'use strict';var pdf=require(_0xf1a3('0x0'));var emlformat=require(_0xf1a3('0x1'));var rimraf=require(_0xf1a3('0x2'));var zipdir=require(_0xf1a3('0x3'));var jsonpatch=require(_0xf1a3('0x4'));var rp=require(_0xf1a3('0x5'));var moment=require('moment');var BPromise=require(_0xf1a3('0x6'));var Mustache=require(_0xf1a3('0x7'));var util=require(_0xf1a3('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xf1a3('0x9'));var ejs=require(_0xf1a3('0xa'));var fs=require('fs');var _=require(_0xf1a3('0xb'));var squel=require(_0xf1a3('0xc'));var crypto=require(_0xf1a3('0xd'));var jsforce=require(_0xf1a3('0xe'));var deskjs=require(_0xf1a3('0xf'));var toCsv=require('to-csv');var querystring=require(_0xf1a3('0x10'));var Papa=require(_0xf1a3('0x11'));var Redis=require(_0xf1a3('0x12'));var qs=require(_0xf1a3('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xf1a3('0x14'));var config=require(_0xf1a3('0x15'));var db=require(_0xf1a3('0x16'))['db'];config[_0xf1a3('0x17')]=_[_0xf1a3('0x18')](config[_0xf1a3('0x17')],{'host':_0xf1a3('0x19'),'port':0x18eb});var socket=require(_0xf1a3('0x1a'))(new Redis(config['redis']));require(_0xf1a3('0x1b'))['register'](socket);function respondWithStatusCode(_0x1bd075,_0x33f8c3){_0x33f8c3=_0x33f8c3||0xcc;return function(_0x12d818){if(_0x12d818){return _0x1bd075[_0xf1a3('0x1c')](_0x33f8c3);}return _0x1bd075[_0xf1a3('0x1d')](_0x33f8c3)[_0xf1a3('0x1e')]();};}function respondWithResult(_0x17f70c,_0x2aed31){_0x2aed31=_0x2aed31||0xc8;return function(_0x40009e){if(_0x40009e){return _0x17f70c[_0xf1a3('0x1d')](_0x2aed31)[_0xf1a3('0x1f')](_0x40009e);}};}function respondWithFilteredResult(_0x3cc577,_0x1269aa){return function(_0x11d19c){if(_0x11d19c){var _0x2bd7f8=_0x11d19c['count'],_0x1200ad=_0x1269aa[_0xf1a3('0x20')],_0x3ee7d1=_0x1269aa['offset']+_0x1269aa['limit'],_0x1b3b18;if(_0x3ee7d1>=_0x2bd7f8){_0x3ee7d1=_0x2bd7f8;_0x1b3b18=0xc8;}else{_0x1b3b18=0xce;}_0x3cc577[_0xf1a3('0x1d')](_0x1b3b18);return _0x3cc577['set'](_0xf1a3('0x21'),_0x1200ad+'-'+_0x3ee7d1+'/'+_0x2bd7f8)['json'](_0x11d19c);}return null;};}function patchUpdates(_0x20398c){return function(_0x1159c0){try{jsonpatch['apply'](_0x1159c0,_0x20398c,!![]);}catch(_0x62c3f3){return BPromise[_0xf1a3('0x22')](_0x62c3f3);}return _0x1159c0['save']();};}function saveUpdates(_0x29f90a,_0x1bdcf8){return function(_0x59ecbd){if(_0x59ecbd){return _0x59ecbd[_0xf1a3('0x23')](_0x29f90a)[_0xf1a3('0x24')](function(_0x216c13){return _0x216c13;});}return null;};}function removeEntity(_0xe1e23c,_0x366de7){return function(_0x1fb6d9){if(_0x1fb6d9){return _0x1fb6d9[_0xf1a3('0x25')]()[_0xf1a3('0x24')](function(){var _0x59fe99=_0x1fb6d9[_0xf1a3('0x26')]({'plain':!![]});var _0x18823d=[{'name':_0xf1a3('0x27'),'value':_0xf1a3('0x28'),'ignore':![]},{'name':_0xf1a3('0x29'),'value':_0xf1a3('0x2a'),'ignore':![]},{'name':_0xf1a3('0x2b'),'value':_0xf1a3('0x2c'),'ignore':![]}];var _0x29b18e=_(_0x18823d)[_0xf1a3('0x2d')](_0xf1a3('0x2e'))[_0xf1a3('0x2f')](_0xf1a3('0x30'))[_0xf1a3('0x30')]();if(_[_0xf1a3('0x31')](_0x29b18e,_0x59fe99[_0xf1a3('0x32')])){return;}var _0x28f928=_[_0xf1a3('0x33')](_0x18823d,[_0xf1a3('0x30'),_0x59fe99[_0xf1a3('0x32')]])[_0xf1a3('0x34')];return db[_0xf1a3('0x35')]['destroy']({'where':{'type':_0x28f928,'resourceId':_0x59fe99['id']}})[_0xf1a3('0x24')](function(){return _0x1fb6d9;});})['then'](function(){_0xe1e23c[_0xf1a3('0x1d')](0xcc)[_0xf1a3('0x1e')]();});}};}function handleEntityNotFound(_0x1769fc,_0x23dd49){return function(_0x55120d){if(!_0x55120d){_0x1769fc[_0xf1a3('0x1c')](0x194);}return _0x55120d;};}function handleError(_0xe55e40,_0x50033f){_0x50033f=_0x50033f||0x1f4;return function(_0x2cc1c5){logger[_0xf1a3('0x36')](_0x2cc1c5[_0xf1a3('0x37')]);if(_0x2cc1c5[_0xf1a3('0x34')]){delete _0x2cc1c5['name'];}_0xe55e40[_0xf1a3('0x1d')](_0x50033f)[_0xf1a3('0x38')](_0x2cc1c5);};}exports[_0xf1a3('0x39')]=function(_0x57f22c,_0x5d35ee){var _0x3c48b3={},_0x4ab0a3={},_0x5569c7={'count':0x0,'rows':[]};var _0x471d67=db['VoiceExtension'][_0xf1a3('0x3a')];_0x4ab0a3[_0xf1a3('0x3b')]=_[_0xf1a3('0x3c')](_0x471d67);var _0x5cf7dc={'dateStart':_0x57f22c[_0xf1a3('0x3d')][_0xf1a3('0x3e')],'dateEnd':_0x57f22c[_0xf1a3('0x3d')][_0xf1a3('0x3f')]};delete _0x57f22c['query']['dateStart'];delete _0x57f22c['query'][_0xf1a3('0x3f')];_0x4ab0a3['query']=_['keys'](_0x57f22c[_0xf1a3('0x3d')]);_0x4ab0a3[_0xf1a3('0x40')]=_['intersection'](_0x4ab0a3[_0xf1a3('0x3b')],_0x4ab0a3['query']);_0x3c48b3[_0xf1a3('0x41')]=_[_0xf1a3('0x42')](_0x4ab0a3[_0xf1a3('0x3b')],qs[_0xf1a3('0x43')](_0x57f22c[_0xf1a3('0x3d')]['fields']));_0x3c48b3[_0xf1a3('0x41')]=_0x3c48b3[_0xf1a3('0x41')][_0xf1a3('0x44')]?_0x3c48b3[_0xf1a3('0x41')]:_0x4ab0a3['model'];if(!_0x57f22c[_0xf1a3('0x3d')][_0xf1a3('0x45')](_0xf1a3('0x46'))){_0x3c48b3['limit']=qs[_0xf1a3('0x47')](_0x57f22c[_0xf1a3('0x3d')][_0xf1a3('0x47')]);_0x3c48b3[_0xf1a3('0x20')]=qs[_0xf1a3('0x20')](_0x57f22c[_0xf1a3('0x3d')][_0xf1a3('0x20')]);}_0x3c48b3[_0xf1a3('0x48')]=qs[_0xf1a3('0x49')](_0x57f22c[_0xf1a3('0x3d')]['sort']);_0x3c48b3[_0xf1a3('0x4a')]=qs['filters'](_[_0xf1a3('0x4b')](_0x57f22c[_0xf1a3('0x3d')],_0x4ab0a3[_0xf1a3('0x40')]));if(_0x5cf7dc[_0xf1a3('0x3e')]){if(_0x5cf7dc[_0xf1a3('0x3f')]){_0x5cf7dc['dateEnd']=moment(_0x5cf7dc[_0xf1a3('0x3f')])[_0xf1a3('0x4c')](0x1,_0xf1a3('0x4d'));}else{_0x5cf7dc[_0xf1a3('0x3f')]=moment(_0x5cf7dc['dateStart'])[_0xf1a3('0x4c')](0x1,_0xf1a3('0x4d'));}_[_0xf1a3('0x4e')](_0x3c48b3[_0xf1a3('0x4a')],{'createdAt':{'$gte':_0x5cf7dc['dateStart'],'$lte':_0x5cf7dc[_0xf1a3('0x3f')]}});}if(_0x57f22c[_0xf1a3('0x3d')][_0xf1a3('0x2d')]){_0x3c48b3[_0xf1a3('0x4a')]=_[_0xf1a3('0x4e')](_0x3c48b3[_0xf1a3('0x4a')],{'$or':_[_0xf1a3('0x2f')](_0x471d67,function(_0x4a86b3){if(_0x4a86b3[_0xf1a3('0x32')]['key']!=='VIRTUAL'){var _0x4ef60b={};_0x4ef60b[_0x4a86b3[_0xf1a3('0x4f')]]={'$like':'%'+_0x57f22c['query']['filter']+'%'};return _0x4ef60b;}})});}_0x3c48b3=_[_0xf1a3('0x4e')]({},_0x3c48b3,_0x57f22c[_0xf1a3('0x50')]);var _0x2018fc={'where':_0x3c48b3[_0xf1a3('0x4a')]};return db[_0xf1a3('0x51')][_0xf1a3('0x52')](_0x2018fc)[_0xf1a3('0x24')](function(_0x514289){_0x5569c7['count']=_0x514289;if(_0x57f22c[_0xf1a3('0x3d')]['includeAll']){_0x3c48b3[_0xf1a3('0x53')]=[{'all':!![]}];}return db['VoiceExtension'][_0xf1a3('0x54')](_0x3c48b3);})[_0xf1a3('0x24')](function(_0xc89c38){_0x5569c7[_0xf1a3('0x55')]=_0xc89c38;return _0x5569c7;})[_0xf1a3('0x24')](respondWithFilteredResult(_0x5d35ee,_0x3c48b3))[_0xf1a3('0x56')](handleError(_0x5d35ee,null));};exports[_0xf1a3('0x57')]=function(_0x2d133e,_0x537499){var _0x1dc056={'raw':![],'where':{'id':_0x2d133e['params']['id']}},_0x4eb43e={};_0x4eb43e[_0xf1a3('0x3b')]=_[_0xf1a3('0x3c')](db[_0xf1a3('0x51')][_0xf1a3('0x3a')]);_0x4eb43e[_0xf1a3('0x3d')]=_['keys'](_0x2d133e[_0xf1a3('0x3d')]);_0x4eb43e['filters']=_['intersection'](_0x4eb43e[_0xf1a3('0x3b')],_0x4eb43e['query']);_0x1dc056['attributes']=_[_0xf1a3('0x42')](_0x4eb43e[_0xf1a3('0x3b')],qs[_0xf1a3('0x43')](_0x2d133e[_0xf1a3('0x3d')]['fields']));_0x1dc056[_0xf1a3('0x41')]=_0x1dc056[_0xf1a3('0x41')][_0xf1a3('0x44')]?_0x1dc056[_0xf1a3('0x41')]:_0x4eb43e['model'];if(_0x2d133e['query'][_0xf1a3('0x58')]){_0x1dc056[_0xf1a3('0x53')]=[{'all':!![]}];}_0x1dc056=_[_0xf1a3('0x4e')]({},_0x1dc056,_0x2d133e[_0xf1a3('0x50')]);return db[_0xf1a3('0x51')][_0xf1a3('0x33')](_0x1dc056)['then'](handleEntityNotFound(_0x537499,null))[_0xf1a3('0x24')](respondWithResult(_0x537499,null))[_0xf1a3('0x56')](handleError(_0x537499,null));};exports[_0xf1a3('0x25')]=function(_0x2b23c4,_0x46b613){return db[_0xf1a3('0x51')][_0xf1a3('0x33')]({'where':{'id':_0x2b23c4['params']['id']}})['then'](handleEntityNotFound(_0x46b613,null))['then'](removeEntity(_0x46b613,null))['catch'](handleError(_0x46b613,null));};exports['create']=function(_0x27cab1,_0x2b589c){if(_0x27cab1[_0xf1a3('0x59')][_0xf1a3('0x32')]===_0xf1a3('0x2a')&&!_[_0xf1a3('0x5a')](_0x27cab1[_0xf1a3('0x59')][_0xf1a3('0x5b')],'_')){_0x27cab1['body'][_0xf1a3('0x5b')]='_'[_0xf1a3('0x5c')](_0x27cab1['body'][_0xf1a3('0x5b')]);}return db[_0xf1a3('0x51')][_0xf1a3('0x5d')](_0x27cab1[_0xf1a3('0x59')],{'raw':![]})[_0xf1a3('0x24')](function(_0x130f3b){var _0x16b253=_0x27cab1[_0xf1a3('0x5e')][_0xf1a3('0x26')]({'plain':!![]});if(!_0x16b253)throw new Error(_0xf1a3('0x5f'));if(_0x16b253[_0xf1a3('0x60')]===_0xf1a3('0x5e')){var _0x4d9e3d=_0x130f3b[_0xf1a3('0x26')]({'plain':!![]});var _0x4184f8=[{'name':_0xf1a3('0x27'),'value':'inbound'},{'name':_0xf1a3('0x29'),'value':_0xf1a3('0x2a')},{'name':_0xf1a3('0x2b'),'value':_0xf1a3('0x2c')}];var _0x1293f7=_[_0xf1a3('0x33')](_0x4184f8,[_0xf1a3('0x30'),_0x4d9e3d[_0xf1a3('0x32')]])[_0xf1a3('0x34')];return db[_0xf1a3('0x61')][_0xf1a3('0x33')]({'where':{'name':_0x1293f7,'userProfileId':_0x16b253[_0xf1a3('0x62')]},'raw':!![]})[_0xf1a3('0x24')](function(_0x3fe991){if(_0x3fe991&&_0x3fe991['autoAssociation']===0x0){return db[_0xf1a3('0x35')][_0xf1a3('0x5d')]({'name':_0x4d9e3d[_0xf1a3('0x34')],'resourceId':_0x4d9e3d['id'],'type':_0x3fe991['name'],'sectionId':_0x3fe991['id']},{})[_0xf1a3('0x24')](function(){return _0x130f3b;});}else{return _0x130f3b;}})[_0xf1a3('0x56')](function(_0xbb97d2){logger[_0xf1a3('0x36')](_0xf1a3('0x63'),_0xbb97d2);throw _0xbb97d2;});}return _0x130f3b;})[_0xf1a3('0x24')](respondWithResult(_0x2b589c,0xc9))[_0xf1a3('0x56')](handleError(_0x2b589c,null));};exports[_0xf1a3('0x23')]=function(_0xec17bd,_0x53dc8e){if(_0xec17bd[_0xf1a3('0x59')]['id']){delete _0xec17bd[_0xf1a3('0x59')]['id'];}return db[_0xf1a3('0x51')][_0xf1a3('0x33')]({'where':{'id':_0xec17bd[_0xf1a3('0x64')]['id']}})['then'](handleEntityNotFound(_0x53dc8e,null))[_0xf1a3('0x24')](function(_0x5d0f40){if(_0x5d0f40){return db['VoiceExtension'][_0xf1a3('0x23')](_[_0xf1a3('0x4b')](_0xec17bd[_0xf1a3('0x59')],[_0xf1a3('0x5b'),_0xf1a3('0x65'),'description',_0xf1a3('0x66'),_0xf1a3('0x67')]),{'where':{'context':_0x5d0f40[_0xf1a3('0x65')],'exten':_0x5d0f40[_0xf1a3('0x5b')]},'individualHooks':!![]})[_0xf1a3('0x24')](function(_0x3a0e25){return _0x3a0e25;});}return null;})[_0xf1a3('0x24')](respondWithStatusCode(_0x53dc8e,null))[_0xf1a3('0x56')](handleError(_0x53dc8e,null));};exports[_0xf1a3('0x68')]=function(_0x1ca9ab,_0xa67759,_0x1224f4){return db['VoiceExtension'][_0xf1a3('0x69')]({'where':{'id':_0x1ca9ab[_0xf1a3('0x64')]['id']}})[_0xf1a3('0x24')](handleEntityNotFound(_0xa67759,null))[_0xf1a3('0x24')](function(_0x5e2823){if(_0x5e2823){return db[_0xf1a3('0x6a')]['transaction'](function(_0x28f1da){return db[_0xf1a3('0x51')]['destroy']({'where':{'VoiceExtensionId':_0x1ca9ab[_0xf1a3('0x64')]['id']},'transaction':_0x28f1da})[_0xf1a3('0x24')](function(_0x5ccdc){var _0x17527a=_[_0xf1a3('0x2f')](_0x1ca9ab[_0xf1a3('0x59')],function(_0xa40b40){_0xa40b40[_0xf1a3('0x6b')]=_0x1ca9ab[_0xf1a3('0x64')]['id'];return _0xa40b40;});return db[_0xf1a3('0x51')][_0xf1a3('0x6c')](_0x17527a,{'transaction':_0x28f1da});});})[_0xf1a3('0x24')](function(){return db[_0xf1a3('0x51')][_0xf1a3('0x6d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1ca9ab['params']['id']},'order':_0xf1a3('0x6e')});});}})[_0xf1a3('0x24')](respondWithResult(_0xa67759,null))[_0xf1a3('0x56')](handleError(_0xa67759,null));};
\ No newline at end of file
index 3e1dbd5..f54ca5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x764a=['update','remove','emit','hook','events','../../mysqldb','setMaxListeners'];(function(_0xf731ce,_0x388b6f){var _0xd29741=function(_0x1c2f09){while(--_0x1c2f09){_0xf731ce['push'](_0xf731ce['shift']());}};_0xd29741(++_0x388b6f);}(_0x764a,0x1b6));var _0xa764=function(_0x18abd7,_0x44c419){_0x18abd7=_0x18abd7-0x0;var _0x38a19a=_0x764a[_0x18abd7];return _0x38a19a;};'use strict';var EventEmitter=require(_0xa764('0x0'));var VoiceExtension=require(_0xa764('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xa764('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa764('0x3'),'afterDestroy':_0xa764('0x4')};function emitEvent(_0x16700e){return function(_0x1a4184,_0x7a6d07,_0x4a269b){VoiceExtensionEvents[_0xa764('0x5')](_0x16700e+':'+_0x1a4184['id'],_0x1a4184);VoiceExtensionEvents['emit'](_0x16700e,_0x1a4184);_0x4a269b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xa764('0x6')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x68a4=['hasOwnProperty','hook','exports','../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit'];(function(_0x3837c4,_0xa59d76){var _0xacdd80=function(_0x46d330){while(--_0x46d330){_0x3837c4['push'](_0x3837c4['shift']());}};_0xacdd80(++_0xa59d76);}(_0x68a4,0x193));var _0x468a=function(_0x2876a0,_0x5a09e3){_0x2876a0=_0x2876a0-0x0;var _0x5c4aae=_0x68a4[_0x2876a0];return _0x5c4aae;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0x468a('0x0'))['db'][_0x468a('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x468a('0x2')](0x0);var events={'afterCreate':_0x468a('0x3'),'afterUpdate':_0x468a('0x4'),'afterDestroy':_0x468a('0x5')};function emitEvent(_0xa6ef35){return function(_0x252bfb,_0x52d94a,_0x22a881){VoiceExtensionEvents[_0x468a('0x6')](_0xa6ef35+':'+_0x252bfb['id'],_0x252bfb);VoiceExtensionEvents[_0x468a('0x6')](_0xa6ef35,_0x252bfb);_0x22a881(null);};}for(var e in events){if(events[_0x468a('0x7')](e)){var event=events[e];VoiceExtension[_0x468a('0x8')](e,emitEvent(event));}}module[_0x468a('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
index 9878335..501cbd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6ff=['request-promise','define','VoiceExtension','lodash','util','api','moment','bluebird'];(function(_0x3ac769,_0x2825df){var _0x2185eb=function(_0x43cc1d){while(--_0x43cc1d){_0x3ac769['push'](_0x3ac769['shift']());}};_0x2185eb(++_0x2825df);}(_0xb6ff,0x1f3));var _0xfb6f=function(_0x2ec2bf,_0x64e983){_0x2ec2bf=_0x2ec2bf-0x0;var _0x2c279c=_0xb6ff[_0x2ec2bf];return _0x2c279c;};'use strict';var _=require(_0xfb6f('0x0'));var util=require(_0xfb6f('0x1'));var logger=require('../../config/logger')(_0xfb6f('0x2'));var moment=require(_0xfb6f('0x3'));var BPromise=require(_0xfb6f('0x4'));var rp=require(_0xfb6f('0x5'));var attributes=require('./voiceExtension.attributes');module['exports']=function(_0x4eda39,_0x20eff0){return _0x4eda39[_0xfb6f('0x6')](_0xfb6f('0x7'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x98eb=['moment','bluebird','request-promise','./voiceExtension.attributes','VoiceExtension','lodash','util','../../config/logger','api'];(function(_0x36d25e,_0x1a047d){var _0x4b95b8=function(_0x74da3){while(--_0x74da3){_0x36d25e['push'](_0x36d25e['shift']());}};_0x4b95b8(++_0x1a047d);}(_0x98eb,0x164));var _0xb98e=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0x98eb[_0x341e0f];return _0x59555a;};'use strict';var _=require(_0xb98e('0x0'));var util=require(_0xb98e('0x1'));var logger=require(_0xb98e('0x2'))(_0xb98e('0x3'));var moment=require(_0xb98e('0x4'));var BPromise=require(_0xb98e('0x5'));var rp=require(_0xb98e('0x6'));var attributes=require(_0xb98e('0x7'));module['exports']=function(_0x1d8666,_0x30d375){return _0x1d8666['define'](_0xb98e('0x8'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf29fd9..97e3c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x153f=['VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','limit','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x18726a,_0x2cf76c){var _0xf16761=function(_0x54de89){while(--_0x54de89){_0x18726a['push'](_0x18726a['shift']());}};_0xf16761(++_0x2cf76c);}(_0x153f,0x15b));var _0xf153=function(_0xc37e84,_0xa254a3){_0xc37e84=_0xc37e84-0x0;var _0xdda451=_0x153f[_0xc37e84];return _0xdda451;};'use strict';var _=require(_0xf153('0x0'));var util=require(_0xf153('0x1'));var moment=require(_0xf153('0x2'));var BPromise=require(_0xf153('0x3'));var rs=require(_0xf153('0x4'));var fs=require('fs');var Redis=require(_0xf153('0x5'));var db=require(_0xf153('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xf153('0x7'))('rpc');var config=require(_0xf153('0x8'));var jayson=require(_0xf153('0x9'));var client=jayson[_0xf153('0xa')][_0xf153('0xb')]({'port':0x232a});config[_0xf153('0xc')]=_['defaults'](config[_0xf153('0xc')],{'host':_0xf153('0xd'),'port':0x18eb});var socket=require(_0xf153('0xe'))(new Redis(config[_0xf153('0xc')]));require(_0xf153('0xf'))[_0xf153('0x10')](socket);function respondWithRpcPromise(_0x44845c,_0x15a18b,_0x4f84b){return new BPromise(function(_0xeaccb0,_0x5c8ae9){return client[_0xf153('0x11')](_0x44845c,_0x4f84b)[_0xf153('0x12')](function(_0x2bea70){logger['info'](_0xf153('0x13'),_0x15a18b,_0xf153('0x14'));logger[_0xf153('0x15')](_0xf153('0x16'),_0x15a18b,_0xf153('0x14'),JSON[_0xf153('0x17')](_0x2bea70));if(_0x2bea70[_0xf153('0x18')]){if(_0x2bea70[_0xf153('0x18')][_0xf153('0x19')]===0x1f4){logger['error'](_0xf153('0x13'),_0x15a18b,_0x2bea70[_0xf153('0x18')][_0xf153('0x1a')]);return _0x5c8ae9(_0x2bea70[_0xf153('0x18')][_0xf153('0x1a')]);}logger[_0xf153('0x18')](_0xf153('0x13'),_0x15a18b,_0x2bea70[_0xf153('0x18')]['message']);return _0xeaccb0(_0x2bea70[_0xf153('0x18')]['message']);}else{logger[_0xf153('0x1b')](_0xf153('0x13'),_0x15a18b,_0xf153('0x14'));_0xeaccb0(_0x2bea70[_0xf153('0x1c')]['message']);}})[_0xf153('0x1d')](function(_0x19122e){logger[_0xf153('0x18')](_0xf153('0x13'),_0x15a18b,_0x19122e);_0x5c8ae9(_0x19122e);});});}exports[_0xf153('0x1e')]=function(_0x2f290f){var _0x37952f=this;return new Promise(function(_0x2db2c7,_0x3735a7){return db[_0xf153('0x1f')][_0xf153('0x20')]({'raw':_0x2f290f[_0xf153('0x21')]?_0x2f290f['options'][_0xf153('0x22')]===undefined?!![]:![]:!![],'where':_0x2f290f[_0xf153('0x21')]?_0x2f290f[_0xf153('0x21')][_0xf153('0x23')]||null:null,'attributes':_0x2f290f[_0xf153('0x21')]?_0x2f290f[_0xf153('0x21')][_0xf153('0x24')]||null:null,'limit':_0x2f290f[_0xf153('0x21')]?_0x2f290f[_0xf153('0x21')][_0xf153('0x25')]||null:null,'include':_0x2f290f[_0xf153('0x21')]?_0x2f290f[_0xf153('0x21')][_0xf153('0x26')]?_[_0xf153('0x27')](_0x2f290f[_0xf153('0x21')][_0xf153('0x26')],function(_0x141ef4){return{'model':db[_0x141ef4[_0xf153('0x28')]],'as':_0x141ef4['as'],'attributes':_0x141ef4[_0xf153('0x24')],'include':_0x141ef4[_0xf153('0x26')]?_['map'](_0x141ef4[_0xf153('0x26')],function(_0x3f1c6f){return{'model':db[_0x3f1c6f['model']],'as':_0x3f1c6f['as'],'attributes':_0x3f1c6f[_0xf153('0x24')],'include':_0x3f1c6f[_0xf153('0x26')]?_['map'](_0x3f1c6f[_0xf153('0x26')],function(_0x10295e){return{'model':db[_0x10295e[_0xf153('0x28')]],'as':_0x10295e['as'],'attributes':_0x10295e[_0xf153('0x24')]};}):[]};}):[]};}):[]:[]})[_0xf153('0x12')](function(_0x258976){logger[_0xf153('0x1b')](_0xf153('0x1e'),_0x2f290f);logger[_0xf153('0x15')](_0xf153('0x1e'),_0x2f290f,JSON[_0xf153('0x17')](_0x258976));_0x2db2c7(_0x258976);})[_0xf153('0x1d')](function(_0x5b5237){logger[_0xf153('0x18')](_0xf153('0x1e'),_0x5b5237[_0xf153('0x1a')],_0x2f290f);_0x3735a7(_0x37952f[_0xf153('0x18')](0x1f4,_0x5b5237['message']));});});};
\ No newline at end of file
+var _0x9ffd=['./voiceExtension.socket','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','attributes','limit','include','map','model','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x496f08,_0xeba77b){var _0x218602=function(_0x3b5bb7){while(--_0x3b5bb7){_0x496f08['push'](_0x496f08['shift']());}};_0x218602(++_0xeba77b);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x383584,_0x503aff){_0x383584=_0x383584-0x0;var _0x58db5e=_0x9ffd[_0x383584];return _0x58db5e;};'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']('VoiceExtension,\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']('VoiceExtension,\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);});});}exports[_0xd9ff('0x1b')]=function(_0x39ef37){var _0x46a6ab=this;return new Promise(function(_0x4c8740,_0x4cf8ec){return db[_0xd9ff('0x1c')][_0xd9ff('0x1d')]({'raw':_0x39ef37['options']?_0x39ef37['options']['raw']===undefined?!![]:![]:!![],'where':_0x39ef37['options']?_0x39ef37[_0xd9ff('0x1e')]['where']||null:null,'attributes':_0x39ef37[_0xd9ff('0x1e')]?_0x39ef37[_0xd9ff('0x1e')][_0xd9ff('0x1f')]||null:null,'limit':_0x39ef37[_0xd9ff('0x1e')]?_0x39ef37[_0xd9ff('0x1e')][_0xd9ff('0x20')]||null:null,'include':_0x39ef37['options']?_0x39ef37['options'][_0xd9ff('0x21')]?_['map'](_0x39ef37[_0xd9ff('0x1e')]['include'],function(_0x285002){return{'model':db[_0x285002['model']],'as':_0x285002['as'],'attributes':_0x285002[_0xd9ff('0x1f')],'include':_0x285002[_0xd9ff('0x21')]?_[_0xd9ff('0x22')](_0x285002[_0xd9ff('0x21')],function(_0x5d685e){return{'model':db[_0x5d685e[_0xd9ff('0x23')]],'as':_0x5d685e['as'],'attributes':_0x5d685e[_0xd9ff('0x1f')],'include':_0x5d685e[_0xd9ff('0x21')]?_[_0xd9ff('0x22')](_0x5d685e['include'],function(_0x1d3684){return{'model':db[_0x1d3684[_0xd9ff('0x23')]],'as':_0x1d3684['as'],'attributes':_0x1d3684[_0xd9ff('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xd9ff('0x11')](function(_0x263d3a){logger[_0xd9ff('0x12')](_0xd9ff('0x1b'),_0x39ef37);logger[_0xd9ff('0x24')](_0xd9ff('0x1b'),_0x39ef37,JSON['stringify'](_0x263d3a));_0x4c8740(_0x263d3a);})[_0xd9ff('0x1a')](function(_0x4ba2be){logger[_0xd9ff('0x16')](_0xd9ff('0x1b'),_0x4ba2be[_0xd9ff('0x18')],_0x39ef37);_0x4cf8ec(_0x46a6ab['error'](0x1f4,_0x4ba2be[_0xd9ff('0x18')]));});});};
\ No newline at end of file
index 939510c..eeb328a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb05=['length','./voiceExtension.events','save','remove','emit','removeListener','register'];(function(_0x34ca5a,_0x2f14b1){var _0x38c2be=function(_0x239f61){while(--_0x239f61){_0x34ca5a['push'](_0x34ca5a['shift']());}};_0x38c2be(++_0x2f14b1);}(_0xcb05,0x86));var _0x5cb0=function(_0x45019c,_0xa6d8aa){_0x45019c=_0x45019c-0x0;var _0x4e1ce=_0xcb05[_0x45019c];return _0x4e1ce;};'use strict';var VoiceExtensionEvents=require(_0x5cb0('0x0'));var events=[_0x5cb0('0x1'),_0x5cb0('0x2'),'update'];function createListener(_0x4917d6,_0x9cef6b){return function(_0x173557){_0x9cef6b[_0x5cb0('0x3')](_0x4917d6,_0x173557);};}function removeListener(_0xebd0ef,_0x149757){return function(){VoiceExtensionEvents[_0x5cb0('0x4')](_0xebd0ef,_0x149757);};}exports[_0x5cb0('0x5')]=function(_0x33cb97){for(var _0x26d315=0x0,_0x45cba8=events[_0x5cb0('0x6')];_0x26d315<_0x45cba8;_0x26d315++){var _0x2ff514=events[_0x26d315];var _0x2685df=createListener('voiceExtension:'+_0x2ff514,_0x33cb97);VoiceExtensionEvents['on'](_0x2ff514,_0x2685df);}};
\ No newline at end of file
+var _0x9792=['length','voiceExtension:','./voiceExtension.events','save','removeListener','register'];(function(_0x530ec8,_0x3b402d){var _0xdd83a5=function(_0x55b080){while(--_0x55b080){_0x530ec8['push'](_0x530ec8['shift']());}};_0xdd83a5(++_0x3b402d);}(_0x9792,0xf2));var _0x2979=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9792[_0x53ccf2];return _0x5a2964;};'use strict';var VoiceExtensionEvents=require(_0x2979('0x0'));var events=[_0x2979('0x1'),'remove','update'];function createListener(_0xe3f528,_0x1ab362){return function(_0x366afc){_0x1ab362['emit'](_0xe3f528,_0x366afc);};}function removeListener(_0x474e5b,_0x316fa8){return function(){VoiceExtensionEvents[_0x2979('0x2')](_0x474e5b,_0x316fa8);};}exports[_0x2979('0x3')]=function(_0x50fd67){for(var _0x1a4e0b=0x0,_0x51ba17=events[_0x2979('0x4')];_0x1a4e0b<_0x51ba17;_0x1a4e0b++){var _0x22c143=events[_0x1a4e0b];var _0x5c118b=createListener(_0x2979('0x5')+_0x22c143,_0x50fd67);VoiceExtensionEvents['on'](_0x22c143,_0x5c118b);}};
\ No newline at end of file
index bdfc2fb..51b72cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf3a=['show','get','isAuthenticated','getMessages','post','update','delete','destroy','exports','util','path','./voiceMail.controller','index','/:id'];(function(_0x3c4a7c,_0x2f4e3c){var _0xf13d1e=function(_0x24cb78){while(--_0x24cb78){_0x3c4a7c['push'](_0x3c4a7c['shift']());}};_0xf13d1e(++_0x2f4e3c);}(_0xcf3a,0x1ad));var _0xacf3=function(_0x19fa65,_0x5d855d){_0x19fa65=_0x19fa65-0x0;var _0x5be5b3=_0xcf3a[_0x19fa65];return _0x5be5b3;};'use strict';var multer=require('multer');var util=require(_0xacf3('0x0'));var path=require(_0xacf3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xacf3('0x2'));router['get']('/',auth['isAuthenticated'](),controller[_0xacf3('0x3')]);router['get'](_0xacf3('0x4'),auth['isAuthenticated'](),controller[_0xacf3('0x5')]);router[_0xacf3('0x6')]('/:id/messages',auth[_0xacf3('0x7')](),controller[_0xacf3('0x8')]);router[_0xacf3('0x9')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xacf3('0x4'),auth['isAuthenticated'](),controller[_0xacf3('0xa')]);router[_0xacf3('0xb')]('/:id',auth[_0xacf3('0x7')](),controller[_0xacf3('0xc')]);module[_0xacf3('0xd')]=router;
\ No newline at end of file
+var _0xde00=['/:id/messages','post','put','update','destroy','multer','util','path','express','Router','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0x38c205,_0x5a34e9){var _0x51407f=function(_0x1bc521){while(--_0x1bc521){_0x38c205['push'](_0x38c205['shift']());}};_0x51407f(++_0x5a34e9);}(_0xde00,0x75));var _0x0de0=function(_0x273f77,_0xe5b0cb){_0x273f77=_0x273f77-0x0;var _0x71e147=_0xde00[_0x273f77];return _0x71e147;};'use strict';var multer=require(_0x0de0('0x0'));var util=require(_0x0de0('0x1'));var path=require(_0x0de0('0x2'));var timeout=require('connect-timeout');var express=require(_0x0de0('0x3'));var router=express[_0x0de0('0x4')]();var auth=require('../../components/auth/service');var interaction=require(_0x0de0('0x5'));var config=require('../../config/environment');var controller=require('./voiceMail.controller');router[_0x0de0('0x6')]('/',auth[_0x0de0('0x7')](),controller[_0x0de0('0x8')]);router['get'](_0x0de0('0x9'),auth[_0x0de0('0x7')](),controller[_0x0de0('0xa')]);router['get'](_0x0de0('0xb'),auth[_0x0de0('0x7')](),controller['getMessages']);router[_0x0de0('0xc')]('/',auth[_0x0de0('0x7')](),controller['create']);router[_0x0de0('0xd')](_0x0de0('0x9'),auth['isAuthenticated'](),controller[_0x0de0('0xe')]);router['delete'](_0x0de0('0x9'),auth[_0x0de0('0x7')](),controller[_0x0de0('0xf')]);module['exports']=router;
\ No newline at end of file
index 3a7287b..45ce5d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc544=['ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','contest_mailbox','setDataValue','string','trim','central'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xc544,0x172));var _0x4c54=function(_0x4636f6,_0xefd565){_0x4636f6=_0x4636f6-0x0;var _0x260847=_0xc544[_0x4636f6];return _0x260847;};'use strict';var Sequelize=require(_0x4c54('0x0'));module[_0x4c54('0x1')]={'customer_id':{'type':Sequelize[_0x4c54('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':'from-voicemail','unique':_0x4c54('0x3')},'mailbox':{'type':Sequelize[_0x4c54('0x2')],'defaultValue':'','allowNull':![],'unique':_0x4c54('0x3')},'password':{'type':Sequelize[_0x4c54('0x2')]},'fullname':{'type':Sequelize[_0x4c54('0x2')]},'email':{'type':Sequelize[_0x4c54('0x2')],'validate':{'isEmail':!![]},'set':function(_0x1a4dc3){this[_0x4c54('0x4')]('email',typeof _0x1a4dc3===_0x4c54('0x5')&&_0x1a4dc3[_0x4c54('0x6')]()?_0x1a4dc3['trim']():null);}},'pager':{'type':Sequelize[_0x4c54('0x2')]},'tz':{'type':Sequelize[_0x4c54('0x2')],'defaultValue':_0x4c54('0x7')},'attach':{'type':Sequelize[_0x4c54('0x8')](_0x4c54('0x9'),'no'),'defaultValue':_0x4c54('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x4c54('0x8')](_0x4c54('0x9'),'no'),'defaultValue':_0x4c54('0x9'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x4c54('0x2')]},'review':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x4c54('0x8')](_0x4c54('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x4c54('0x8')](_0x4c54('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0x4c54('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x4c54('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x4c54('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x4c54('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x4c54('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x4c54('0x8')](_0x4c54('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x4c54('0x8')](_0x4c54('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x4c54('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x4c54('0xb')},'emailsubject':{'type':Sequelize[_0x4c54('0x2')]},'emailbody':{'type':Sequelize[_0x4c54('0x2')]},'maxsecs':{'type':Sequelize[_0x4c54('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x4c54('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x4c54('0xd')],'get':function(){return this[_0x4c54('0xe')](_0x4c54('0xf'))+_0x4c54('0x10')+this['getDataValue'](_0x4c54('0x11'));}}};
\ No newline at end of file
+var _0xdddf=['VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','string','trim','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER'];(function(_0x4996d5,_0x123daf){var _0x4793f9=function(_0x30c7ec){while(--_0x30c7ec){_0x4996d5['push'](_0x4996d5['shift']());}};_0x4793f9(++_0x123daf);}(_0xdddf,0xb9));var _0xfddd=function(_0x42697e,_0x2785b9){_0x42697e=_0x42697e-0x0;var _0x2fd76b=_0xdddf[_0x42697e];return _0x2fd76b;};'use strict';var Sequelize=require(_0xfddd('0x0'));module[_0xfddd('0x1')]={'customer_id':{'type':Sequelize[_0xfddd('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0xfddd('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0xfddd('0x4')},'password':{'type':Sequelize[_0xfddd('0x2')]},'fullname':{'type':Sequelize[_0xfddd('0x2')]},'email':{'type':Sequelize[_0xfddd('0x2')],'validate':{'isEmail':!![]},'set':function(_0x3fb1a0){this[_0xfddd('0x5')]('email',typeof _0x3fb1a0===_0xfddd('0x6')&&_0x3fb1a0[_0xfddd('0x7')]()?_0x3fb1a0[_0xfddd('0x7')]():null);}},'pager':{'type':Sequelize[_0xfddd('0x2')]},'tz':{'type':Sequelize[_0xfddd('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize[_0xfddd('0x8')](_0xfddd('0x9'),'no'),'defaultValue':_0xfddd('0x9'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0xfddd('0x9'),'no'),'defaultValue':_0xfddd('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0xfddd('0x2')]},'callback':{'type':Sequelize[_0xfddd('0x2')]},'review':{'type':Sequelize['ENUM'](_0xfddd('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xfddd('0x8')](_0xfddd('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0xfddd('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xfddd('0x8')](_0xfddd('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xfddd('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xfddd('0x8')](_0xfddd('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xfddd('0x8')](_0xfddd('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xfddd('0x8')](_0xfddd('0x9'),'no'),'defaultValue':_0xfddd('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xfddd('0x8')](_0xfddd('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xfddd('0x8')](_0xfddd('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xfddd('0x9'),'allowNull':![]},'stamp':{'type':_0xfddd('0xb')},'emailsubject':{'type':Sequelize[_0xfddd('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0xfddd('0xc')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xfddd('0xd')],'get':function(){return this[_0xfddd('0xe')](_0xfddd('0xf'))+_0xfddd('0x10')+this[_0xfddd('0xe')](_0xfddd('0x11'));}}};
\ No newline at end of file
index aac7bfa..56039a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd63b=['find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','destroy','getMessages','findOne','VoiceMailMessage','pick','mailbox','findAndCountAll','html-pdf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','count','offset','Content-Range','apply','save','update','then','get','Voicemails','UserProfileResource','error','stack','name','index','VoiceMail','rawAttributes','model','keys','query','dateStart','dateEnd','filters','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','add','day','merge','filter','type','key','VIRTUAL','field','includeAll','include','findAll','rows','catch','show','params','intersection','length','options'];(function(_0xaa1aeb,_0x3fa680){var _0x23a33d=function(_0x34bb2c){while(--_0x34bb2c){_0xaa1aeb['push'](_0xaa1aeb['shift']());}};_0x23a33d(++_0x3fa680);}(_0xd63b,0xb8));var _0xbd63=function(_0x3acb1f,_0x3952ab){_0x3acb1f=_0x3acb1f-0x0;var _0x24a289=_0xd63b[_0x3acb1f];return _0x24a289;};'use strict';var pdf=require(_0xbd63('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbd63('0x1'));var rp=require(_0xbd63('0x2'));var moment=require(_0xbd63('0x3'));var BPromise=require(_0xbd63('0x4'));var Mustache=require(_0xbd63('0x5'));var util=require(_0xbd63('0x6'));var path=require(_0xbd63('0x7'));var sox=require(_0xbd63('0x8'));var csv=require(_0xbd63('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0xbd63('0xa'));var crypto=require(_0xbd63('0xb'));var jsforce=require(_0xbd63('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xbd63('0x9'));var querystring=require(_0xbd63('0xd'));var Papa=require(_0xbd63('0xe'));var Redis=require(_0xbd63('0xf'));var qs=require(_0xbd63('0x10'));var logger=require(_0xbd63('0x11'))(_0xbd63('0x12'));var utils=require('../../config/utils');var config=require(_0xbd63('0x13'));var db=require(_0xbd63('0x14'))['db'];function respondWithStatusCode(_0x6cab29,_0xd3c56e){_0xd3c56e=_0xd3c56e||0xcc;return function(_0xe19241){if(_0xe19241){return _0x6cab29[_0xbd63('0x15')](_0xd3c56e);}return _0x6cab29[_0xbd63('0x16')](_0xd3c56e)['end']();};}function respondWithResult(_0x5baef3,_0x4a2adb){_0x4a2adb=_0x4a2adb||0xc8;return function(_0x232b3f){if(_0x232b3f){return _0x5baef3[_0xbd63('0x16')](_0x4a2adb)['json'](_0x232b3f);}};}function respondWithFilteredResult(_0x4c34ac,_0x36285b){return function(_0x236579){if(_0x236579){var _0x5d4842=_0x236579[_0xbd63('0x17')],_0x4f54c7=_0x36285b[_0xbd63('0x18')],_0x17db64=_0x36285b['offset']+_0x36285b['limit'],_0x582090;if(_0x17db64>=_0x5d4842){_0x17db64=_0x5d4842;_0x582090=0xc8;}else{_0x582090=0xce;}_0x4c34ac[_0xbd63('0x16')](_0x582090);return _0x4c34ac['set'](_0xbd63('0x19'),_0x4f54c7+'-'+_0x17db64+'/'+_0x5d4842)['json'](_0x236579);}return null;};}function patchUpdates(_0x37fcf0){return function(_0x438133){try{jsonpatch[_0xbd63('0x1a')](_0x438133,_0x37fcf0,!![]);}catch(_0x106f48){return BPromise['reject'](_0x106f48);}return _0x438133[_0xbd63('0x1b')]();};}function saveUpdates(_0x1cc888,_0x1ebd28){return function(_0xde8ae3){if(_0xde8ae3){return _0xde8ae3[_0xbd63('0x1c')](_0x1cc888)['then'](function(_0x318f28){return _0x318f28;});}return null;};}function removeEntity(_0x103add,_0xae4e54){return function(_0x4a20f3){if(_0x4a20f3){return _0x4a20f3['destroy']()[_0xbd63('0x1d')](function(){var _0x26d04d=_0x4a20f3[_0xbd63('0x1e')]({'plain':!![]});var _0xd48542=_0xbd63('0x1f');return db[_0xbd63('0x20')]['destroy']({'where':{'type':_0xd48542,'resourceId':_0x26d04d['id']}})[_0xbd63('0x1d')](function(){return _0x4a20f3;});})[_0xbd63('0x1d')](function(){_0x103add[_0xbd63('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13c8bb,_0x1544cd){return function(_0xd013d8){if(!_0xd013d8){_0x13c8bb[_0xbd63('0x15')](0x194);}return _0xd013d8;};}function handleError(_0x49a4fe,_0x1fa78f){_0x1fa78f=_0x1fa78f||0x1f4;return function(_0xa7af2a){logger[_0xbd63('0x21')](_0xa7af2a[_0xbd63('0x22')]);if(_0xa7af2a[_0xbd63('0x23')]){delete _0xa7af2a[_0xbd63('0x23')];}_0x49a4fe['status'](_0x1fa78f)['send'](_0xa7af2a);};}exports[_0xbd63('0x24')]=function(_0x2e2f63,_0x475e95){var _0x43cc60={},_0x5c6845={},_0x5997e6={'count':0x0,'rows':[]};var _0x18b4cb=db[_0xbd63('0x25')][_0xbd63('0x26')];_0x5c6845[_0xbd63('0x27')]=_[_0xbd63('0x28')](_0x18b4cb);var _0x2171fa={'dateStart':_0x2e2f63[_0xbd63('0x29')][_0xbd63('0x2a')],'dateEnd':_0x2e2f63[_0xbd63('0x29')][_0xbd63('0x2b')]};delete _0x2e2f63[_0xbd63('0x29')][_0xbd63('0x2a')];delete _0x2e2f63[_0xbd63('0x29')][_0xbd63('0x2b')];_0x5c6845[_0xbd63('0x29')]=_[_0xbd63('0x28')](_0x2e2f63[_0xbd63('0x29')]);_0x5c6845[_0xbd63('0x2c')]=_['intersection'](_0x5c6845[_0xbd63('0x27')],_0x5c6845[_0xbd63('0x29')]);_0x43cc60['attributes']=_['intersection'](_0x5c6845[_0xbd63('0x27')],qs[_0xbd63('0x2d')](_0x2e2f63['query'][_0xbd63('0x2d')]));_0x43cc60[_0xbd63('0x2e')]=_0x43cc60[_0xbd63('0x2e')]['length']?_0x43cc60[_0xbd63('0x2e')]:_0x5c6845[_0xbd63('0x27')];if(!_0x2e2f63['query'][_0xbd63('0x2f')](_0xbd63('0x30'))){_0x43cc60[_0xbd63('0x31')]=qs[_0xbd63('0x31')](_0x2e2f63[_0xbd63('0x29')][_0xbd63('0x31')]);_0x43cc60[_0xbd63('0x18')]=qs[_0xbd63('0x18')](_0x2e2f63[_0xbd63('0x29')][_0xbd63('0x18')]);}_0x43cc60[_0xbd63('0x32')]=qs['sort'](_0x2e2f63[_0xbd63('0x29')][_0xbd63('0x33')]);_0x43cc60[_0xbd63('0x34')]=qs[_0xbd63('0x2c')](_['pick'](_0x2e2f63[_0xbd63('0x29')],_0x5c6845[_0xbd63('0x2c')]));if(_0x2171fa[_0xbd63('0x2a')]){if(_0x2171fa[_0xbd63('0x2b')]){_0x2171fa[_0xbd63('0x2b')]=moment(_0x2171fa['dateEnd'])[_0xbd63('0x35')](0x1,_0xbd63('0x36'));}else{_0x2171fa['dateEnd']=moment(_0x2171fa[_0xbd63('0x2a')])['add'](0x1,'day');}_[_0xbd63('0x37')](_0x43cc60[_0xbd63('0x34')],{'createdAt':{'$gte':_0x2171fa['dateStart'],'$lte':_0x2171fa['dateEnd']}});}if(_0x2e2f63[_0xbd63('0x29')][_0xbd63('0x38')]){_0x43cc60[_0xbd63('0x34')]=_['merge'](_0x43cc60[_0xbd63('0x34')],{'$or':_['map'](_0x18b4cb,function(_0x222e46){if(_0x222e46[_0xbd63('0x39')][_0xbd63('0x3a')]!==_0xbd63('0x3b')){var _0x40a853={};_0x40a853[_0x222e46[_0xbd63('0x3c')]]={'$like':'%'+_0x2e2f63[_0xbd63('0x29')][_0xbd63('0x38')]+'%'};return _0x40a853;}})});}_0x43cc60=_['merge']({},_0x43cc60,_0x2e2f63['options']);var _0xaf8135={'where':_0x43cc60[_0xbd63('0x34')]};return db[_0xbd63('0x25')][_0xbd63('0x17')](_0xaf8135)[_0xbd63('0x1d')](function(_0x13b4f9){_0x5997e6['count']=_0x13b4f9;if(_0x2e2f63[_0xbd63('0x29')][_0xbd63('0x3d')]){_0x43cc60[_0xbd63('0x3e')]=[{'all':!![]}];}return db[_0xbd63('0x25')][_0xbd63('0x3f')](_0x43cc60);})[_0xbd63('0x1d')](function(_0xfea524){_0x5997e6[_0xbd63('0x40')]=_0xfea524;return _0x5997e6;})[_0xbd63('0x1d')](respondWithFilteredResult(_0x475e95,_0x43cc60))[_0xbd63('0x41')](handleError(_0x475e95,null));};exports[_0xbd63('0x42')]=function(_0x2e68e8,_0x1194d9){var _0x464acd={'raw':!![],'where':{'id':_0x2e68e8[_0xbd63('0x43')]['id']}},_0x94eee8={};_0x94eee8['model']=_[_0xbd63('0x28')](db['VoiceMail'][_0xbd63('0x26')]);_0x94eee8[_0xbd63('0x29')]=_['keys'](_0x2e68e8[_0xbd63('0x29')]);_0x94eee8['filters']=_[_0xbd63('0x44')](_0x94eee8[_0xbd63('0x27')],_0x94eee8[_0xbd63('0x29')]);_0x464acd['attributes']=_[_0xbd63('0x44')](_0x94eee8[_0xbd63('0x27')],qs['fields'](_0x2e68e8[_0xbd63('0x29')][_0xbd63('0x2d')]));_0x464acd['attributes']=_0x464acd['attributes'][_0xbd63('0x45')]?_0x464acd[_0xbd63('0x2e')]:_0x94eee8[_0xbd63('0x27')];if(_0x2e68e8['query'][_0xbd63('0x3d')]){_0x464acd[_0xbd63('0x3e')]=[{'all':!![]}];}_0x464acd=_[_0xbd63('0x37')]({},_0x464acd,_0x2e68e8[_0xbd63('0x46')]);return db[_0xbd63('0x25')][_0xbd63('0x47')](_0x464acd)[_0xbd63('0x1d')](handleEntityNotFound(_0x1194d9,null))[_0xbd63('0x1d')](respondWithResult(_0x1194d9,null))[_0xbd63('0x41')](handleError(_0x1194d9,null));};exports[_0xbd63('0x48')]=function(_0x179685,_0x1ff72d){return db[_0xbd63('0x25')]['create'](_0x179685[_0xbd63('0x49')],{})[_0xbd63('0x1d')](function(_0xf6fbb3){var _0x3bd87b=_0x179685[_0xbd63('0x4a')][_0xbd63('0x1e')]({'plain':!![]});if(!_0x3bd87b)throw new Error(_0xbd63('0x4b'));if(_0x3bd87b['role']===_0xbd63('0x4a')){var _0x20bd8a=_0xf6fbb3[_0xbd63('0x1e')]({'plain':!![]});var _0x54fead=_0xbd63('0x1f');return db[_0xbd63('0x4c')]['find']({'where':{'name':_0x54fead,'userProfileId':_0x3bd87b[_0xbd63('0x4d')]},'raw':!![]})[_0xbd63('0x1d')](function(_0x49981e){if(_0x49981e&&_0x49981e['autoAssociation']===0x0){return db['UserProfileResource'][_0xbd63('0x48')]({'name':_0x20bd8a[_0xbd63('0x23')],'resourceId':_0x20bd8a['id'],'type':_0x49981e[_0xbd63('0x23')],'sectionId':_0x49981e['id']},{})[_0xbd63('0x1d')](function(){return _0xf6fbb3;});}else{return _0xf6fbb3;}})[_0xbd63('0x41')](function(_0x115bb0){logger[_0xbd63('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x115bb0);throw _0x115bb0;});}return _0xf6fbb3;})[_0xbd63('0x1d')](respondWithResult(_0x1ff72d,0xc9))[_0xbd63('0x41')](handleError(_0x1ff72d,null));};exports[_0xbd63('0x1c')]=function(_0x4b48d1,_0x20ec7d){if(_0x4b48d1[_0xbd63('0x49')]['id']){delete _0x4b48d1[_0xbd63('0x49')]['id'];}return db[_0xbd63('0x25')][_0xbd63('0x47')]({'where':{'id':_0x4b48d1['params']['id']}})[_0xbd63('0x1d')](handleEntityNotFound(_0x20ec7d,null))[_0xbd63('0x1d')](saveUpdates(_0x4b48d1[_0xbd63('0x49')],null))[_0xbd63('0x1d')](respondWithResult(_0x20ec7d,null))['catch'](handleError(_0x20ec7d,null));};exports[_0xbd63('0x4e')]=function(_0xeeb516,_0x5dd646){return db['VoiceMail'][_0xbd63('0x47')]({'where':{'id':_0xeeb516[_0xbd63('0x43')]['id']}})[_0xbd63('0x1d')](handleEntityNotFound(_0x5dd646,null))[_0xbd63('0x1d')](removeEntity(_0x5dd646,null))[_0xbd63('0x41')](handleError(_0x5dd646,null));};exports[_0xbd63('0x4f')]=function(_0x1f66e1,_0x167291,_0x25cf9a){return db[_0xbd63('0x25')][_0xbd63('0x50')]({'where':{'id':_0x1f66e1[_0xbd63('0x43')]['id']}})[_0xbd63('0x1d')](handleEntityNotFound(_0x167291,null))[_0xbd63('0x1d')](function(_0x344264){var _0x503eba;var _0x2fc2e5={},_0x3badc6={};_0x3badc6['model']=_['keys'](db[_0xbd63('0x51')][_0xbd63('0x26')]);_0x3badc6[_0xbd63('0x29')]=_[_0xbd63('0x28')](_0x1f66e1[_0xbd63('0x29')]);_0x3badc6[_0xbd63('0x2c')]=_[_0xbd63('0x44')](_0x3badc6['model'],_0x3badc6[_0xbd63('0x29')]);_0x2fc2e5[_0xbd63('0x2e')]=_[_0xbd63('0x44')](_0x3badc6[_0xbd63('0x27')],qs[_0xbd63('0x2d')](_0x1f66e1[_0xbd63('0x29')][_0xbd63('0x2d')]));_0x2fc2e5[_0xbd63('0x2e')]=_0x2fc2e5[_0xbd63('0x2e')][_0xbd63('0x45')]?_0x2fc2e5['attributes']:_0x3badc6[_0xbd63('0x27')];if(!_0x1f66e1[_0xbd63('0x29')][_0xbd63('0x2f')](_0xbd63('0x30'))){_0x2fc2e5[_0xbd63('0x31')]=qs[_0xbd63('0x31')](_0x1f66e1[_0xbd63('0x29')][_0xbd63('0x31')]);_0x2fc2e5[_0xbd63('0x18')]=qs['offset'](_0x1f66e1[_0xbd63('0x29')][_0xbd63('0x18')]);}_0x2fc2e5[_0xbd63('0x32')]=qs[_0xbd63('0x33')](_0x1f66e1['query'][_0xbd63('0x33')]);_0x2fc2e5[_0xbd63('0x34')]=qs[_0xbd63('0x2c')](_[_0xbd63('0x52')](_0x1f66e1[_0xbd63('0x29')],_0x3badc6['filters']));if(_0x1f66e1[_0xbd63('0x29')][_0xbd63('0x38')]){_0x2fc2e5[_0xbd63('0x34')]=_[_0xbd63('0x37')](_0x2fc2e5[_0xbd63('0x34')],{'$or':_['map'](_0x2fc2e5['attributes'],function(_0x3b883c){var _0x2fc834={};_0x2fc834[_0x3b883c]={'$like':'%'+_0x1f66e1[_0xbd63('0x29')][_0xbd63('0x38')]+'%'};return _0x2fc834;})});}_0x2fc2e5[_0xbd63('0x34')]=_[_0xbd63('0x37')](_0x2fc2e5[_0xbd63('0x34')],{'mailboxuser':_0x344264[_0xbd63('0x53')]});_0x2fc2e5=_[_0xbd63('0x37')]({},_0x2fc2e5,_0x1f66e1[_0xbd63('0x46')]);return db['VoiceMailMessage'][_0xbd63('0x54')](_0x2fc2e5)[_0xbd63('0x1d')](respondWithFilteredResult(_0x167291,_0x2fc2e5));})['catch'](handleError(_0x167291,null));};
\ No newline at end of file
+var _0xba57=['dateStart','dateEnd','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','sort','day','merge','where','filter','type','key','field','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','VoiceMailMessage','mailbox','findAndCountAll','html-pdf','eml-format','rimraf','zip-dir','moment','bluebird','util','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','count','offset','limit','set','apply','reject','save','update','then','get','Voicemails','UserProfileResource','destroy','stack','name','send','index','VoiceMail','query'];(function(_0x342874,_0xae5304){var _0x503c39=function(_0xd68ca4){while(--_0xd68ca4){_0x342874['push'](_0x342874['shift']());}};_0x503c39(++_0xae5304);}(_0xba57,0x16f));var _0x7ba5=function(_0x57d0f0,_0x1b94c7){_0x57d0f0=_0x57d0f0-0x0;var _0x3d0b3b=_0xba57[_0x57d0f0];return _0x3d0b3b;};'use strict';var pdf=require(_0x7ba5('0x0'));var emlformat=require(_0x7ba5('0x1'));var rimraf=require(_0x7ba5('0x2'));var zipdir=require(_0x7ba5('0x3'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7ba5('0x4'));var BPromise=require(_0x7ba5('0x5'));var Mustache=require('mustache');var util=require(_0x7ba5('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x7ba5('0x7'));var ejs=require(_0x7ba5('0x8'));var fs=require('fs');var _=require(_0x7ba5('0x9'));var squel=require(_0x7ba5('0xa'));var crypto=require('crypto');var jsforce=require(_0x7ba5('0xb'));var deskjs=require(_0x7ba5('0xc'));var toCsv=require(_0x7ba5('0x7'));var querystring=require(_0x7ba5('0xd'));var Papa=require(_0x7ba5('0xe'));var Redis=require('ioredis');var qs=require(_0x7ba5('0xf'));var logger=require(_0x7ba5('0x10'))(_0x7ba5('0x11'));var utils=require(_0x7ba5('0x12'));var config=require(_0x7ba5('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47bf31,_0x37e314){_0x37e314=_0x37e314||0xcc;return function(_0x33e966){if(_0x33e966){return _0x47bf31[_0x7ba5('0x14')](_0x37e314);}return _0x47bf31['status'](_0x37e314)[_0x7ba5('0x15')]();};}function respondWithResult(_0x202dfb,_0x2f43a9){_0x2f43a9=_0x2f43a9||0xc8;return function(_0x35c222){if(_0x35c222){return _0x202dfb[_0x7ba5('0x16')](_0x2f43a9)[_0x7ba5('0x17')](_0x35c222);}};}function respondWithFilteredResult(_0x2f8939,_0x5704ac){return function(_0x4c0586){if(_0x4c0586){var _0xce645f=_0x4c0586[_0x7ba5('0x18')],_0x57a701=_0x5704ac[_0x7ba5('0x19')],_0x2ad991=_0x5704ac['offset']+_0x5704ac[_0x7ba5('0x1a')],_0x2fe7f0;if(_0x2ad991>=_0xce645f){_0x2ad991=_0xce645f;_0x2fe7f0=0xc8;}else{_0x2fe7f0=0xce;}_0x2f8939[_0x7ba5('0x16')](_0x2fe7f0);return _0x2f8939[_0x7ba5('0x1b')]('Content-Range',_0x57a701+'-'+_0x2ad991+'/'+_0xce645f)[_0x7ba5('0x17')](_0x4c0586);}return null;};}function patchUpdates(_0x56d978){return function(_0x1c0de8){try{jsonpatch[_0x7ba5('0x1c')](_0x1c0de8,_0x56d978,!![]);}catch(_0x309865){return BPromise[_0x7ba5('0x1d')](_0x309865);}return _0x1c0de8[_0x7ba5('0x1e')]();};}function saveUpdates(_0x5e1a2e,_0x58ca68){return function(_0x3d766c){if(_0x3d766c){return _0x3d766c[_0x7ba5('0x1f')](_0x5e1a2e)[_0x7ba5('0x20')](function(_0x304113){return _0x304113;});}return null;};}function removeEntity(_0x2d7faf,_0x35122f){return function(_0x350286){if(_0x350286){return _0x350286['destroy']()[_0x7ba5('0x20')](function(){var _0x30cf0f=_0x350286[_0x7ba5('0x21')]({'plain':!![]});var _0x46a753=_0x7ba5('0x22');return db[_0x7ba5('0x23')][_0x7ba5('0x24')]({'where':{'type':_0x46a753,'resourceId':_0x30cf0f['id']}})[_0x7ba5('0x20')](function(){return _0x350286;});})['then'](function(){_0x2d7faf[_0x7ba5('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x35eaa4,_0x1185e0){return function(_0x591b8e){if(!_0x591b8e){_0x35eaa4[_0x7ba5('0x14')](0x194);}return _0x591b8e;};}function handleError(_0x59c4d6,_0x2798a9){_0x2798a9=_0x2798a9||0x1f4;return function(_0x40a518){logger['error'](_0x40a518[_0x7ba5('0x25')]);if(_0x40a518[_0x7ba5('0x26')]){delete _0x40a518[_0x7ba5('0x26')];}_0x59c4d6[_0x7ba5('0x16')](_0x2798a9)[_0x7ba5('0x27')](_0x40a518);};}exports[_0x7ba5('0x28')]=function(_0x3ff921,_0x103edb){var _0x1b562={},_0x5a50b6={},_0xc55ebf={'count':0x0,'rows':[]};var _0x36b3be=db[_0x7ba5('0x29')]['rawAttributes'];_0x5a50b6['model']=_['keys'](_0x36b3be);var _0x169e94={'dateStart':_0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x2b')],'dateEnd':_0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x2c')]};delete _0x3ff921[_0x7ba5('0x2a')]['dateStart'];delete _0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x2c')];_0x5a50b6['query']=_[_0x7ba5('0x2d')](_0x3ff921['query']);_0x5a50b6[_0x7ba5('0x2e')]=_['intersection'](_0x5a50b6[_0x7ba5('0x2f')],_0x5a50b6[_0x7ba5('0x2a')]);_0x1b562[_0x7ba5('0x30')]=_[_0x7ba5('0x31')](_0x5a50b6['model'],qs[_0x7ba5('0x32')](_0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x32')]));_0x1b562['attributes']=_0x1b562['attributes']['length']?_0x1b562['attributes']:_0x5a50b6[_0x7ba5('0x2f')];if(!_0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x33')](_0x7ba5('0x34'))){_0x1b562[_0x7ba5('0x1a')]=qs['limit'](_0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x1a')]);_0x1b562[_0x7ba5('0x19')]=qs[_0x7ba5('0x19')](_0x3ff921['query'][_0x7ba5('0x19')]);}_0x1b562['order']=qs[_0x7ba5('0x35')](_0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x35')]);_0x1b562['where']=qs['filters'](_['pick'](_0x3ff921[_0x7ba5('0x2a')],_0x5a50b6[_0x7ba5('0x2e')]));if(_0x169e94[_0x7ba5('0x2b')]){if(_0x169e94[_0x7ba5('0x2c')]){_0x169e94[_0x7ba5('0x2c')]=moment(_0x169e94[_0x7ba5('0x2c')])['add'](0x1,_0x7ba5('0x36'));}else{_0x169e94[_0x7ba5('0x2c')]=moment(_0x169e94[_0x7ba5('0x2b')])['add'](0x1,_0x7ba5('0x36'));}_[_0x7ba5('0x37')](_0x1b562[_0x7ba5('0x38')],{'createdAt':{'$gte':_0x169e94[_0x7ba5('0x2b')],'$lte':_0x169e94[_0x7ba5('0x2c')]}});}if(_0x3ff921['query'][_0x7ba5('0x39')]){_0x1b562['where']=_[_0x7ba5('0x37')](_0x1b562[_0x7ba5('0x38')],{'$or':_['map'](_0x36b3be,function(_0x8b13c7){if(_0x8b13c7[_0x7ba5('0x3a')][_0x7ba5('0x3b')]!=='VIRTUAL'){var _0x3d02d6={};_0x3d02d6[_0x8b13c7[_0x7ba5('0x3c')]]={'$like':'%'+_0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x39')]+'%'};return _0x3d02d6;}})});}_0x1b562=_['merge']({},_0x1b562,_0x3ff921['options']);var _0x38e5f8={'where':_0x1b562[_0x7ba5('0x38')]};return db['VoiceMail'][_0x7ba5('0x18')](_0x38e5f8)['then'](function(_0x5815d4){_0xc55ebf['count']=_0x5815d4;if(_0x3ff921[_0x7ba5('0x2a')][_0x7ba5('0x3d')]){_0x1b562[_0x7ba5('0x3e')]=[{'all':!![]}];}return db[_0x7ba5('0x29')][_0x7ba5('0x3f')](_0x1b562);})[_0x7ba5('0x20')](function(_0x16149e){_0xc55ebf[_0x7ba5('0x40')]=_0x16149e;return _0xc55ebf;})[_0x7ba5('0x20')](respondWithFilteredResult(_0x103edb,_0x1b562))[_0x7ba5('0x41')](handleError(_0x103edb,null));};exports[_0x7ba5('0x42')]=function(_0x1ad1b8,_0x206770){var _0x10c1f8={'raw':!![],'where':{'id':_0x1ad1b8[_0x7ba5('0x43')]['id']}},_0x5bd7f1={};_0x5bd7f1[_0x7ba5('0x2f')]=_['keys'](db[_0x7ba5('0x29')]['rawAttributes']);_0x5bd7f1['query']=_[_0x7ba5('0x2d')](_0x1ad1b8[_0x7ba5('0x2a')]);_0x5bd7f1[_0x7ba5('0x2e')]=_[_0x7ba5('0x31')](_0x5bd7f1[_0x7ba5('0x2f')],_0x5bd7f1[_0x7ba5('0x2a')]);_0x10c1f8[_0x7ba5('0x30')]=_[_0x7ba5('0x31')](_0x5bd7f1[_0x7ba5('0x2f')],qs[_0x7ba5('0x32')](_0x1ad1b8[_0x7ba5('0x2a')][_0x7ba5('0x32')]));_0x10c1f8[_0x7ba5('0x30')]=_0x10c1f8[_0x7ba5('0x30')][_0x7ba5('0x44')]?_0x10c1f8[_0x7ba5('0x30')]:_0x5bd7f1[_0x7ba5('0x2f')];if(_0x1ad1b8[_0x7ba5('0x2a')]['includeAll']){_0x10c1f8['include']=[{'all':!![]}];}_0x10c1f8=_[_0x7ba5('0x37')]({},_0x10c1f8,_0x1ad1b8[_0x7ba5('0x45')]);return db['VoiceMail'][_0x7ba5('0x46')](_0x10c1f8)[_0x7ba5('0x20')](handleEntityNotFound(_0x206770,null))[_0x7ba5('0x20')](respondWithResult(_0x206770,null))[_0x7ba5('0x41')](handleError(_0x206770,null));};exports['create']=function(_0x30f780,_0x106bf4){return db[_0x7ba5('0x29')][_0x7ba5('0x47')](_0x30f780[_0x7ba5('0x48')],{})['then'](function(_0x550829){var _0x25ecce=_0x30f780[_0x7ba5('0x49')][_0x7ba5('0x21')]({'plain':!![]});if(!_0x25ecce)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x25ecce[_0x7ba5('0x4a')]==='user'){var _0x156b34=_0x550829['get']({'plain':!![]});var _0x2b29f3=_0x7ba5('0x22');return db[_0x7ba5('0x4b')]['find']({'where':{'name':_0x2b29f3,'userProfileId':_0x25ecce[_0x7ba5('0x4c')]},'raw':!![]})[_0x7ba5('0x20')](function(_0x82d408){if(_0x82d408&&_0x82d408[_0x7ba5('0x4d')]===0x0){return db[_0x7ba5('0x23')][_0x7ba5('0x47')]({'name':_0x156b34['name'],'resourceId':_0x156b34['id'],'type':_0x82d408[_0x7ba5('0x26')],'sectionId':_0x82d408['id']},{})[_0x7ba5('0x20')](function(){return _0x550829;});}else{return _0x550829;}})['catch'](function(_0x3a3f84){logger[_0x7ba5('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3a3f84);throw _0x3a3f84;});}return _0x550829;})[_0x7ba5('0x20')](respondWithResult(_0x106bf4,0xc9))['catch'](handleError(_0x106bf4,null));};exports[_0x7ba5('0x1f')]=function(_0x41a9b8,_0xb46fc3){if(_0x41a9b8[_0x7ba5('0x48')]['id']){delete _0x41a9b8[_0x7ba5('0x48')]['id'];}return db[_0x7ba5('0x29')]['find']({'where':{'id':_0x41a9b8['params']['id']}})[_0x7ba5('0x20')](handleEntityNotFound(_0xb46fc3,null))['then'](saveUpdates(_0x41a9b8[_0x7ba5('0x48')],null))['then'](respondWithResult(_0xb46fc3,null))[_0x7ba5('0x41')](handleError(_0xb46fc3,null));};exports[_0x7ba5('0x24')]=function(_0x24c415,_0x293811){return db['VoiceMail']['find']({'where':{'id':_0x24c415[_0x7ba5('0x43')]['id']}})[_0x7ba5('0x20')](handleEntityNotFound(_0x293811,null))[_0x7ba5('0x20')](removeEntity(_0x293811,null))[_0x7ba5('0x41')](handleError(_0x293811,null));};exports['getMessages']=function(_0x3f24b3,_0x161bed,_0x1c2fcd){return db['VoiceMail']['findOne']({'where':{'id':_0x3f24b3['params']['id']}})['then'](handleEntityNotFound(_0x161bed,null))[_0x7ba5('0x20')](function(_0x5c654a){var _0x4f7e1b;var _0xc080e6={},_0x512bb3={};_0x512bb3[_0x7ba5('0x2f')]=_[_0x7ba5('0x2d')](db[_0x7ba5('0x4f')]['rawAttributes']);_0x512bb3[_0x7ba5('0x2a')]=_[_0x7ba5('0x2d')](_0x3f24b3[_0x7ba5('0x2a')]);_0x512bb3[_0x7ba5('0x2e')]=_[_0x7ba5('0x31')](_0x512bb3[_0x7ba5('0x2f')],_0x512bb3['query']);_0xc080e6[_0x7ba5('0x30')]=_[_0x7ba5('0x31')](_0x512bb3['model'],qs[_0x7ba5('0x32')](_0x3f24b3[_0x7ba5('0x2a')][_0x7ba5('0x32')]));_0xc080e6['attributes']=_0xc080e6[_0x7ba5('0x30')][_0x7ba5('0x44')]?_0xc080e6['attributes']:_0x512bb3[_0x7ba5('0x2f')];if(!_0x3f24b3['query']['hasOwnProperty'](_0x7ba5('0x34'))){_0xc080e6['limit']=qs[_0x7ba5('0x1a')](_0x3f24b3[_0x7ba5('0x2a')][_0x7ba5('0x1a')]);_0xc080e6[_0x7ba5('0x19')]=qs[_0x7ba5('0x19')](_0x3f24b3['query'][_0x7ba5('0x19')]);}_0xc080e6['order']=qs[_0x7ba5('0x35')](_0x3f24b3['query'][_0x7ba5('0x35')]);_0xc080e6['where']=qs[_0x7ba5('0x2e')](_['pick'](_0x3f24b3[_0x7ba5('0x2a')],_0x512bb3['filters']));if(_0x3f24b3[_0x7ba5('0x2a')][_0x7ba5('0x39')]){_0xc080e6[_0x7ba5('0x38')]=_[_0x7ba5('0x37')](_0xc080e6[_0x7ba5('0x38')],{'$or':_['map'](_0xc080e6[_0x7ba5('0x30')],function(_0xeaa8a2){var _0x455135={};_0x455135[_0xeaa8a2]={'$like':'%'+_0x3f24b3['query'][_0x7ba5('0x39')]+'%'};return _0x455135;})});}_0xc080e6[_0x7ba5('0x38')]=_[_0x7ba5('0x37')](_0xc080e6[_0x7ba5('0x38')],{'mailboxuser':_0x5c654a[_0x7ba5('0x50')]});_0xc080e6=_[_0x7ba5('0x37')]({},_0xc080e6,_0x3f24b3[_0x7ba5('0x45')]);return db['VoiceMailMessage'][_0x7ba5('0x51')](_0xc080e6)[_0x7ba5('0x20')](respondWithFilteredResult(_0x161bed,_0xc080e6));})[_0x7ba5('0x41')](handleError(_0x161bed,null));};
\ No newline at end of file
index d09b3fc..a304713 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89bc=['moment','bluebird','request-promise','./voiceMail.attributes','exports','define','voice_voicemail','mailbox','context','util','../../config/logger','api'];(function(_0x2e53e9,_0xcc5c2){var _0x3ca83b=function(_0x12bbbb){while(--_0x12bbbb){_0x2e53e9['push'](_0x2e53e9['shift']());}};_0x3ca83b(++_0xcc5c2);}(_0x89bc,0x165));var _0xc89b=function(_0x55a89e,_0x1a05ab){_0x55a89e=_0x55a89e-0x0;var _0x3aa2bd=_0x89bc[_0x55a89e];return _0x3aa2bd;};'use strict';var _=require('lodash');var util=require(_0xc89b('0x0'));var logger=require(_0xc89b('0x1'))(_0xc89b('0x2'));var moment=require(_0xc89b('0x3'));var BPromise=require(_0xc89b('0x4'));var rp=require(_0xc89b('0x5'));var attributes=require(_0xc89b('0x6'));module[_0xc89b('0x7')]=function(_0x3d8b00,_0x3be06e){return _0x3d8b00[_0xc89b('0x8')]('VoiceMail',attributes,{'tableName':_0xc89b('0x9'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xc89b('0xa'),_0xc89b('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7576=['../../config/logger','moment','bluebird','request-promise','exports','VoiceMail','voice_voicemail','mailbox_context','mailbox','util'];(function(_0x1347f8,_0x233feb){var _0x218368=function(_0x3f4ca3){while(--_0x3f4ca3){_0x1347f8['push'](_0x1347f8['shift']());}};_0x218368(++_0x233feb);}(_0x7576,0x12b));var _0x6757=function(_0x4e2273,_0x5a71f2){_0x4e2273=_0x4e2273-0x0;var _0x352132=_0x7576[_0x4e2273];return _0x352132;};'use strict';var _=require('lodash');var util=require(_0x6757('0x0'));var logger=require(_0x6757('0x1'))('api');var moment=require(_0x6757('0x2'));var BPromise=require(_0x6757('0x3'));var rp=require(_0x6757('0x4'));var attributes=require('./voiceMail.attributes');module[_0x6757('0x5')]=function(_0x5b6d62,_0x1e8730){return _0x5b6d62['define'](_0x6757('0x6'),attributes,{'tableName':_0x6757('0x7'),'paranoid':![],'indexes':[{'name':_0x6757('0x8'),'fields':[_0x6757('0x9'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index 5ab97fc..48ade61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c06=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','VoiceMail,\x20%s,\x20%s','request\x20sent','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x38351c,_0x29714f){var _0x229ad4=function(_0x29c717){while(--_0x29c717){_0x38351c['push'](_0x38351c['shift']());}};_0x229ad4(++_0x29714f);}(_0x3c06,0x72));var _0x63c0=function(_0x221f37,_0x17904c){_0x221f37=_0x221f37-0x0;var _0x237985=_0x3c06[_0x221f37];return _0x237985;};'use strict';var _=require(_0x63c0('0x0'));var util=require(_0x63c0('0x1'));var moment=require(_0x63c0('0x2'));var BPromise=require(_0x63c0('0x3'));var rs=require(_0x63c0('0x4'));var fs=require('fs');var Redis=require(_0x63c0('0x5'));var db=require(_0x63c0('0x6'))['db'];var utils=require(_0x63c0('0x7'));var logger=require(_0x63c0('0x8'))('rpc');var config=require(_0x63c0('0x9'));var jayson=require(_0x63c0('0xa'));var client=jayson[_0x63c0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34c8ec,_0x4f8fa6,_0x294edb){return new BPromise(function(_0x2aa708,_0x43e90c){return client[_0x63c0('0xc')](_0x34c8ec,_0x294edb)[_0x63c0('0xd')](function(_0x2fb5e4){logger['info'](_0x63c0('0xe'),_0x4f8fa6,_0x63c0('0xf'));logger['debug'](_0x63c0('0x10'),_0x4f8fa6,_0x63c0('0xf'),JSON[_0x63c0('0x11')](_0x2fb5e4));if(_0x2fb5e4[_0x63c0('0x12')]){if(_0x2fb5e4[_0x63c0('0x12')][_0x63c0('0x13')]===0x1f4){logger[_0x63c0('0x12')](_0x63c0('0xe'),_0x4f8fa6,_0x2fb5e4[_0x63c0('0x12')]['message']);return _0x43e90c(_0x2fb5e4[_0x63c0('0x12')][_0x63c0('0x14')]);}logger[_0x63c0('0x12')]('VoiceMail,\x20%s,\x20%s',_0x4f8fa6,_0x2fb5e4[_0x63c0('0x12')][_0x63c0('0x14')]);return _0x2aa708(_0x2fb5e4[_0x63c0('0x12')][_0x63c0('0x14')]);}else{logger[_0x63c0('0x15')]('VoiceMail,\x20%s,\x20%s',_0x4f8fa6,_0x63c0('0xf'));_0x2aa708(_0x2fb5e4[_0x63c0('0x16')]['message']);}})[_0x63c0('0x17')](function(_0x41d2d7){logger[_0x63c0('0x12')](_0x63c0('0xe'),_0x4f8fa6,_0x41d2d7);_0x43e90c(_0x41d2d7);});});}
\ No newline at end of file
+var _0xbf4e=['catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','then','info','VoiceMail,\x20%s,\x20%s','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbf4e,0x79));var _0xebf4=function(_0x3d602e,_0x577559){_0x3d602e=_0x3d602e-0x0;var _0x5e8a7a=_0xbf4e[_0x3d602e];return _0x5e8a7a;};'use strict';var _=require('lodash');var util=require(_0xebf4('0x0'));var moment=require('moment');var BPromise=require(_0xebf4('0x1'));var rs=require(_0xebf4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xebf4('0x3'))['db'];var utils=require(_0xebf4('0x4'));var logger=require('../../config/logger')(_0xebf4('0x5'));var config=require('../../config/environment');var jayson=require(_0xebf4('0x6'));var client=jayson[_0xebf4('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x595968,_0x19d272,_0xdf3651){return new BPromise(function(_0x500d01,_0x3af7f3){return client['request'](_0x595968,_0xdf3651)[_0xebf4('0x8')](function(_0x4cd88f){logger[_0xebf4('0x9')](_0xebf4('0xa'),_0x19d272,'request\x20sent');logger[_0xebf4('0xb')](_0xebf4('0xc'),_0x19d272,_0xebf4('0xd'),JSON[_0xebf4('0xe')](_0x4cd88f));if(_0x4cd88f[_0xebf4('0xf')]){if(_0x4cd88f[_0xebf4('0xf')][_0xebf4('0x10')]===0x1f4){logger[_0xebf4('0xf')](_0xebf4('0xa'),_0x19d272,_0x4cd88f[_0xebf4('0xf')][_0xebf4('0x11')]);return _0x3af7f3(_0x4cd88f[_0xebf4('0xf')][_0xebf4('0x11')]);}logger[_0xebf4('0xf')](_0xebf4('0xa'),_0x19d272,_0x4cd88f['error'][_0xebf4('0x11')]);return _0x500d01(_0x4cd88f[_0xebf4('0xf')][_0xebf4('0x11')]);}else{logger[_0xebf4('0x9')](_0xebf4('0xa'),_0x19d272,_0xebf4('0xd'));_0x500d01(_0x4cd88f[_0xebf4('0x12')][_0xebf4('0x11')]);}})[_0xebf4('0x13')](function(_0x22f414){logger[_0xebf4('0xf')]('VoiceMail,\x20%s,\x20%s',_0x19d272,_0x22f414);_0x3af7f3(_0x22f414);});});}
\ No newline at end of file
index f51f992..2f0e861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69a4=['download','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./voiceMailMessage.controller','get','isAuthenticated','index','show','/:id/download'];(function(_0xb9aff,_0x5f2864){var _0x365951=function(_0x184293){while(--_0x184293){_0xb9aff['push'](_0xb9aff['shift']());}};_0x365951(++_0x5f2864);}(_0x69a4,0xb9));var _0x469a=function(_0x2ab991,_0x45806e){_0x2ab991=_0x2ab991-0x0;var _0x29650e=_0x69a4[_0x2ab991];return _0x29650e;};'use strict';var multer=require(_0x469a('0x0'));var util=require(_0x469a('0x1'));var path=require(_0x469a('0x2'));var timeout=require(_0x469a('0x3'));var express=require('express');var router=express[_0x469a('0x4')]();var auth=require(_0x469a('0x5'));var interaction=require(_0x469a('0x6'));var config=require('../../config/environment');var controller=require(_0x469a('0x7'));router[_0x469a('0x8')]('/',auth[_0x469a('0x9')](),controller[_0x469a('0xa')]);router[_0x469a('0x8')]('/:id',auth[_0x469a('0x9')](),controller[_0x469a('0xb')]);router[_0x469a('0x8')](_0x469a('0xc'),auth[_0x469a('0x9')](),controller[_0x469a('0xd')]);router[_0x469a('0xe')]('/',auth[_0x469a('0x9')](),controller[_0x469a('0xf')]);router[_0x469a('0x10')](_0x469a('0x11'),auth[_0x469a('0x9')](),controller[_0x469a('0x12')]);router[_0x469a('0x13')](_0x469a('0x11'),auth[_0x469a('0x9')](),controller[_0x469a('0x14')]);module[_0x469a('0x15')]=router;
\ No newline at end of file
+var _0x1d8d=['util','path','express','Router','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','isAuthenticated','index','/:id','show','/:id/download','post','create','put','destroy','exports','multer'];(function(_0x2b811d,_0x5496ba){var _0x4be7d8=function(_0x5208c9){while(--_0x5208c9){_0x2b811d['push'](_0x2b811d['shift']());}};_0x4be7d8(++_0x5496ba);}(_0x1d8d,0x155));var _0xd1d8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1d8d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd1d8('0x0'));var util=require(_0xd1d8('0x1'));var path=require(_0xd1d8('0x2'));var timeout=require('connect-timeout');var express=require(_0xd1d8('0x3'));var router=express[_0xd1d8('0x4')]();var auth=require(_0xd1d8('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd1d8('0x6'));var controller=require(_0xd1d8('0x7'));router['get']('/',auth[_0xd1d8('0x8')](),controller[_0xd1d8('0x9')]);router['get'](_0xd1d8('0xa'),auth[_0xd1d8('0x8')](),controller[_0xd1d8('0xb')]);router['get'](_0xd1d8('0xc'),auth[_0xd1d8('0x8')](),controller['download']);router[_0xd1d8('0xd')]('/',auth[_0xd1d8('0x8')](),controller[_0xd1d8('0xe')]);router[_0xd1d8('0xf')](_0xd1d8('0xa'),auth[_0xd1d8('0x8')](),controller['update']);router['delete'](_0xd1d8('0xa'),auth[_0xd1d8('0x8')](),controller[_0xd1d8('0x10')]);module[_0xd1d8('0x11')]=router;
\ No newline at end of file
index 89791b8..add72d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcef4=['exports','getDataValue','STRING','BLOB','TIMESTAMP','sequelize'];(function(_0x143150,_0x79d27c){var _0x14d769=function(_0x934d91){while(--_0x934d91){_0x143150['push'](_0x143150['shift']());}};_0x14d769(++_0x79d27c);}(_0xcef4,0xe9));var _0x4cef=function(_0x54de5d,_0x1f8b26){_0x54de5d=_0x54de5d-0x0;var _0x1b349e=_0xcef4[_0x54de5d];return _0x1b349e;};'use strict';var Sequelize=require(_0x4cef('0x0'));module[_0x4cef('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x56763e){return this[_0x4cef('0x2')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x4cef('0x3')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x4cef('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x4cef('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0x4cef('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0x4cef('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x4cef('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x4cef('0x4')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x4cef('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x4cef('0x3')],'defaultValue':''},'stamp':{'type':_0x4cef('0x5'),'allowNull':![]}};
\ No newline at end of file
+var _0x5acc=['INTEGER','STRING','BLOB','TIMESTAMP','exports','VIRTUAL','getDataValue'];(function(_0x1f523a,_0x188a63){var _0x39c0cd=function(_0x1cac98){while(--_0x1cac98){_0x1f523a['push'](_0x1f523a['shift']());}};_0x39c0cd(++_0x188a63);}(_0x5acc,0xdd));var _0xc5ac=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x5acc[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module[_0xc5ac('0x0')]={'name':{'type':Sequelize[_0xc5ac('0x1')],'get':function(_0x2cea00){return this[_0xc5ac('0x2')]('id');}},'msgnum':{'type':Sequelize[_0xc5ac('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0xc5ac('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xc5ac('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0xc5ac('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xc5ac('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xc5ac('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xc5ac('0x5')]('long'),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0xc5ac('0x6'),'allowNull':![]}};
\ No newline at end of file
index 3ad0b27..8027402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x156c=['recording','msg_id','Sequelize','ValidationError','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','sendStatus','status','end','json','count','offset','limit','set','apply','update','then','error','stack','send','index','VoiceMailMessage','rawAttributes','model','differenceBy','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','add','day','merge','key','VIRTUAL','field','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','download'];(function(_0x5e347f,_0x167629){var _0x3bfe1b=function(_0x293c68){while(--_0x293c68){_0x5e347f['push'](_0x5e347f['shift']());}};_0x3bfe1b(++_0x167629);}(_0x156c,0x14d));var _0xc156=function(_0x52ea08,_0x15d935){_0x52ea08=_0x52ea08-0x0;var _0x28d546=_0x156c[_0x52ea08];return _0x28d546;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0xc156('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc156('0x1'));var moment=require('moment');var BPromise=require(_0xc156('0x2'));var Mustache=require(_0xc156('0x3'));var util=require(_0xc156('0x4'));var path=require(_0xc156('0x5'));var sox=require(_0xc156('0x6'));var csv=require(_0xc156('0x7'));var ejs=require(_0xc156('0x8'));var fs=require('fs');var _=require(_0xc156('0x9'));var squel=require('squel');var crypto=require(_0xc156('0xa'));var jsforce=require(_0xc156('0xb'));var deskjs=require(_0xc156('0xc'));var toCsv=require(_0xc156('0x7'));var querystring=require(_0xc156('0xd'));var Papa=require(_0xc156('0xe'));var Redis=require(_0xc156('0xf'));var qs=require(_0xc156('0x10'));var logger=require(_0xc156('0x11'))(_0xc156('0x12'));var utils=require('../../config/utils');var config=require(_0xc156('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x406761,_0x56e3ac){_0x56e3ac=_0x56e3ac||0xcc;return function(_0x3c57c9){if(_0x3c57c9){return _0x406761[_0xc156('0x14')](_0x56e3ac);}return _0x406761[_0xc156('0x15')](_0x56e3ac)[_0xc156('0x16')]();};}function respondWithResult(_0x4289d6,_0x212c11){_0x212c11=_0x212c11||0xc8;return function(_0x4054a4){if(_0x4054a4){return _0x4289d6[_0xc156('0x15')](_0x212c11)[_0xc156('0x17')](_0x4054a4);}};}function respondWithFilteredResult(_0x2e0d61,_0xd90903){return function(_0x3d5f5a){if(_0x3d5f5a){var _0x163bb1=_0x3d5f5a[_0xc156('0x18')],_0x52e4dc=_0xd90903[_0xc156('0x19')],_0x513f55=_0xd90903[_0xc156('0x19')]+_0xd90903[_0xc156('0x1a')],_0xe3eaaa;if(_0x513f55>=_0x163bb1){_0x513f55=_0x163bb1;_0xe3eaaa=0xc8;}else{_0xe3eaaa=0xce;}_0x2e0d61[_0xc156('0x15')](_0xe3eaaa);return _0x2e0d61[_0xc156('0x1b')]('Content-Range',_0x52e4dc+'-'+_0x513f55+'/'+_0x163bb1)[_0xc156('0x17')](_0x3d5f5a);}return null;};}function patchUpdates(_0x3e19a4){return function(_0x35d20b){try{jsonpatch[_0xc156('0x1c')](_0x35d20b,_0x3e19a4,!![]);}catch(_0x41618f){return BPromise['reject'](_0x41618f);}return _0x35d20b['save']();};}function saveUpdates(_0x2ba81a,_0x12c0f0){return function(_0x4af1a9){if(_0x4af1a9){return _0x4af1a9[_0xc156('0x1d')](_0x2ba81a)[_0xc156('0x1e')](function(_0x58d228){return _0x58d228;});}return null;};}function removeEntity(_0x3e3c6f,_0x487662){return function(_0x322344){if(_0x322344){return _0x322344['destroy']()[_0xc156('0x1e')](function(){_0x3e3c6f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x22484c,_0x2f1d71){return function(_0x2d2e62){if(!_0x2d2e62){_0x22484c[_0xc156('0x14')](0x194);}return _0x2d2e62;};}function handleError(_0x16a183,_0x53b1a4){_0x53b1a4=_0x53b1a4||0x1f4;return function(_0x5562ea){logger[_0xc156('0x1f')](_0x5562ea[_0xc156('0x20')]);if(_0x5562ea['name']){delete _0x5562ea['name'];}_0x16a183['status'](_0x53b1a4)[_0xc156('0x21')](_0x5562ea);};}exports[_0xc156('0x22')]=function(_0x57ec4e,_0x84070f){var _0x1f0226={},_0x33a6ae={},_0x2c03ab={'count':0x0,'rows':[]};var _0x175197=db[_0xc156('0x23')][_0xc156('0x24')];_0x33a6ae[_0xc156('0x25')]=_[_0xc156('0x26')](_[_0xc156('0x27')](_0x175197),['name']);var _0x5b5a80={'dateStart':_0x57ec4e[_0xc156('0x28')][_0xc156('0x29')],'dateEnd':_0x57ec4e[_0xc156('0x28')][_0xc156('0x2a')]};delete _0x57ec4e[_0xc156('0x28')]['dateStart'];delete _0x57ec4e['query']['dateEnd'];_0x33a6ae[_0xc156('0x28')]=_['keys'](_0x57ec4e[_0xc156('0x28')]);_0x33a6ae[_0xc156('0x2b')]=_[_0xc156('0x2c')](_0x33a6ae[_0xc156('0x25')],_0x33a6ae[_0xc156('0x28')]);_0x1f0226[_0xc156('0x2d')]=_[_0xc156('0x2c')](_0x33a6ae[_0xc156('0x25')],qs[_0xc156('0x2e')](_0x57ec4e[_0xc156('0x28')][_0xc156('0x2e')]));_0x1f0226['attributes']=_0x1f0226[_0xc156('0x2d')][_0xc156('0x2f')]?_0x1f0226[_0xc156('0x2d')]:_0x33a6ae[_0xc156('0x25')];if(!_0x57ec4e['query'][_0xc156('0x30')]('nolimit')){_0x1f0226[_0xc156('0x1a')]=qs['limit'](_0x57ec4e[_0xc156('0x28')]['limit']);_0x1f0226[_0xc156('0x19')]=qs[_0xc156('0x19')](_0x57ec4e[_0xc156('0x28')]['offset']);}_0x1f0226['order']=qs[_0xc156('0x31')](_0x57ec4e['query'][_0xc156('0x31')]);_0x1f0226[_0xc156('0x32')]=qs[_0xc156('0x2b')](_[_0xc156('0x33')](_0x57ec4e[_0xc156('0x28')],_0x33a6ae[_0xc156('0x2b')]));if(_0x5b5a80[_0xc156('0x29')]){if(_0x5b5a80[_0xc156('0x2a')]){_0x5b5a80[_0xc156('0x2a')]=moment(_0x5b5a80[_0xc156('0x2a')])[_0xc156('0x34')](0x1,'day');}else{_0x5b5a80[_0xc156('0x2a')]=moment(_0x5b5a80[_0xc156('0x29')])[_0xc156('0x34')](0x1,_0xc156('0x35'));}_[_0xc156('0x36')](_0x1f0226['where'],{'createdAt':{'$gte':_0x5b5a80[_0xc156('0x29')],'$lte':_0x5b5a80[_0xc156('0x2a')]}});}if(_0x57ec4e['query']['filter']){_0x1f0226[_0xc156('0x32')]=_[_0xc156('0x36')](_0x1f0226[_0xc156('0x32')],{'$or':_['map'](_0x175197,function(_0x8df3b1){if(_0x8df3b1['type'][_0xc156('0x37')]!==_0xc156('0x38')){var _0x3d3c79={};_0x3d3c79[_0x8df3b1[_0xc156('0x39')]]={'$like':'%'+_0x57ec4e[_0xc156('0x28')][_0xc156('0x3a')]+'%'};return _0x3d3c79;}})});}_0x1f0226=_['merge']({},_0x1f0226,_0x57ec4e[_0xc156('0x3b')]);var _0x5d1fa0={'where':_0x1f0226[_0xc156('0x32')]};return db[_0xc156('0x23')][_0xc156('0x18')](_0x5d1fa0)[_0xc156('0x1e')](function(_0x3ae9aa){_0x2c03ab[_0xc156('0x18')]=_0x3ae9aa;if(_0x57ec4e[_0xc156('0x28')][_0xc156('0x3c')]){_0x1f0226[_0xc156('0x3d')]=[{'all':!![]}];}return db[_0xc156('0x23')][_0xc156('0x3e')](_0x1f0226);})['then'](function(_0x14561b){_0x2c03ab[_0xc156('0x3f')]=_0x14561b;return _0x2c03ab;})[_0xc156('0x1e')](respondWithFilteredResult(_0x84070f,_0x1f0226))[_0xc156('0x40')](handleError(_0x84070f,null));};exports[_0xc156('0x41')]=function(_0x47170a,_0xf712fe){var _0x3cf3d1={'raw':!![],'where':{'id':_0x47170a[_0xc156('0x42')]['id']}},_0x3e1ee8={};_0x3e1ee8[_0xc156('0x25')]=_[_0xc156('0x27')](db[_0xc156('0x23')]['rawAttributes']);_0x3e1ee8[_0xc156('0x28')]=_['keys'](_0x47170a[_0xc156('0x28')]);_0x3e1ee8[_0xc156('0x2b')]=_[_0xc156('0x2c')](_0x3e1ee8[_0xc156('0x25')],_0x3e1ee8[_0xc156('0x28')]);_0x3cf3d1[_0xc156('0x2d')]=_[_0xc156('0x2c')](_0x3e1ee8[_0xc156('0x25')],qs[_0xc156('0x2e')](_0x47170a[_0xc156('0x28')][_0xc156('0x2e')]));_0x3cf3d1[_0xc156('0x2d')]=_0x3cf3d1[_0xc156('0x2d')][_0xc156('0x2f')]?_0x3cf3d1['attributes']:_0x3e1ee8['model'];if(_0x47170a['query']['includeAll']){_0x3cf3d1[_0xc156('0x3d')]=[{'all':!![]}];}_0x3cf3d1=_[_0xc156('0x36')]({},_0x3cf3d1,_0x47170a[_0xc156('0x3b')]);return db[_0xc156('0x23')][_0xc156('0x43')](_0x3cf3d1)[_0xc156('0x1e')](handleEntityNotFound(_0xf712fe,null))[_0xc156('0x1e')](respondWithResult(_0xf712fe,null))['catch'](handleError(_0xf712fe,null));};exports[_0xc156('0x44')]=function(_0x4f5ed2,_0x1b63bf){return db[_0xc156('0x23')][_0xc156('0x44')](_0x4f5ed2[_0xc156('0x45')],{})['then'](respondWithResult(_0x1b63bf,0xc9))['catch'](handleError(_0x1b63bf,null));};exports['update']=function(_0xf870,_0x4fcba7){if(_0xf870['body']['id']){delete _0xf870[_0xc156('0x45')]['id'];}return db['VoiceMailMessage'][_0xc156('0x43')]({'where':{'id':_0xf870['params']['id']}})['then'](handleEntityNotFound(_0x4fcba7,null))[_0xc156('0x1e')](saveUpdates(_0xf870[_0xc156('0x45')],null))[_0xc156('0x1e')](respondWithResult(_0x4fcba7,null))[_0xc156('0x40')](handleError(_0x4fcba7,null));};exports[_0xc156('0x46')]=function(_0x20f514,_0x122ce6){return db['VoiceMailMessage'][_0xc156('0x43')]({'where':{'id':_0x20f514['params']['id']}})[_0xc156('0x1e')](handleEntityNotFound(_0x122ce6,null))[_0xc156('0x1e')](removeEntity(_0x122ce6,null))[_0xc156('0x40')](handleError(_0x122ce6,null));};exports[_0xc156('0x47')]=function(_0xe3fd53,_0x142655,_0x456f8f){return db[_0xc156('0x23')]['find']({'where':{'id':_0xe3fd53[_0xc156('0x42')]['id']},'attributes':['id',_0xc156('0x48'),_0xc156('0x49')]})[_0xc156('0x1e')](handleEntityNotFound(_0x142655,null))[_0xc156('0x1e')](function(_0x72221c){if(_0x72221c){if(!_0x72221c[_0xc156('0x48')]){throw new db[(_0xc156('0x4a'))][(_0xc156('0x4b'))]('VoiceMailMessage\x20not\x20found');}var _0x4cb897={'Content-Type':_0xc156('0x4c'),'Content-Disposition':_0xc156('0x4d')};if(_0x72221c[_0xc156('0x49')]){_0x4cb897[_0xc156('0x4e')]=_0xc156('0x4f')+_0x72221c['msg_id']+_0xc156('0x50');}_0x142655[_0xc156('0x1b')](_0x4cb897);return _0x142655[_0xc156('0x21')](new Buffer(_0x72221c[_0xc156('0x48')]));}})[_0xc156('0x40')](handleError(_0x142655,null));};
\ No newline at end of file
+var _0x51eb=['create','body','download','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','html-pdf','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','error','name','send','index','VoiceMailMessage','rawAttributes','model','differenceBy','keys','query','dateStart','dateEnd','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','add','day','merge','filter','map','type','key','VIRTUAL','field','include','findAll','rows','show','params','includeAll','find','catch'];(function(_0x2d994d,_0x168a27){var _0xd54be4=function(_0x1db925){while(--_0x1db925){_0x2d994d['push'](_0x2d994d['shift']());}};_0xd54be4(++_0x168a27);}(_0x51eb,0x169));var _0xb51e=function(_0x7b8f80,_0xf34541){_0x7b8f80=_0x7b8f80-0x0;var _0x54eff0=_0x51eb[_0x7b8f80];return _0x54eff0;};'use strict';var pdf=require(_0xb51e('0x0'));var emlformat=require(_0xb51e('0x1'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb51e('0x2'));var rp=require(_0xb51e('0x3'));var moment=require(_0xb51e('0x4'));var BPromise=require(_0xb51e('0x5'));var Mustache=require(_0xb51e('0x6'));var util=require(_0xb51e('0x7'));var path=require('path');var sox=require(_0xb51e('0x8'));var csv=require(_0xb51e('0x9'));var ejs=require(_0xb51e('0xa'));var fs=require('fs');var _=require(_0xb51e('0xb'));var squel=require('squel');var crypto=require(_0xb51e('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb51e('0xd'));var toCsv=require(_0xb51e('0x9'));var querystring=require(_0xb51e('0xe'));var Papa=require(_0xb51e('0xf'));var Redis=require(_0xb51e('0x10'));var qs=require(_0xb51e('0x11'));var logger=require('../../config/logger')(_0xb51e('0x12'));var utils=require('../../config/utils');var config=require(_0xb51e('0x13'));var db=require(_0xb51e('0x14'))['db'];function respondWithStatusCode(_0xd02986,_0x3de574){_0x3de574=_0x3de574||0xcc;return function(_0x917310){if(_0x917310){return _0xd02986[_0xb51e('0x15')](_0x3de574);}return _0xd02986[_0xb51e('0x16')](_0x3de574)[_0xb51e('0x17')]();};}function respondWithResult(_0x15d8f8,_0x33f18c){_0x33f18c=_0x33f18c||0xc8;return function(_0x33344b){if(_0x33344b){return _0x15d8f8[_0xb51e('0x16')](_0x33f18c)[_0xb51e('0x18')](_0x33344b);}};}function respondWithFilteredResult(_0x1bd997,_0x3c5c77){return function(_0x3bd7d9){if(_0x3bd7d9){var _0x336a9a=_0x3bd7d9[_0xb51e('0x19')],_0x123b59=_0x3c5c77[_0xb51e('0x1a')],_0x1ec5ae=_0x3c5c77['offset']+_0x3c5c77[_0xb51e('0x1b')],_0x28e7ae;if(_0x1ec5ae>=_0x336a9a){_0x1ec5ae=_0x336a9a;_0x28e7ae=0xc8;}else{_0x28e7ae=0xce;}_0x1bd997['status'](_0x28e7ae);return _0x1bd997[_0xb51e('0x1c')](_0xb51e('0x1d'),_0x123b59+'-'+_0x1ec5ae+'/'+_0x336a9a)[_0xb51e('0x18')](_0x3bd7d9);}return null;};}function patchUpdates(_0x1e580b){return function(_0x2c3433){try{jsonpatch[_0xb51e('0x1e')](_0x2c3433,_0x1e580b,!![]);}catch(_0xefbff1){return BPromise['reject'](_0xefbff1);}return _0x2c3433[_0xb51e('0x1f')]();};}function saveUpdates(_0x2c684c,_0x886bf9){return function(_0x5a3410){if(_0x5a3410){return _0x5a3410[_0xb51e('0x20')](_0x2c684c)[_0xb51e('0x21')](function(_0x38df53){return _0x38df53;});}return null;};}function removeEntity(_0x29d7ce,_0x25e1a9){return function(_0x2cf48b){if(_0x2cf48b){return _0x2cf48b[_0xb51e('0x22')]()[_0xb51e('0x21')](function(){_0x29d7ce[_0xb51e('0x16')](0xcc)[_0xb51e('0x17')]();});}};}function handleEntityNotFound(_0x178842,_0x551d10){return function(_0x47b07c){if(!_0x47b07c){_0x178842[_0xb51e('0x15')](0x194);}return _0x47b07c;};}function handleError(_0x335033,_0x436520){_0x436520=_0x436520||0x1f4;return function(_0x3ff8f5){logger[_0xb51e('0x23')](_0x3ff8f5['stack']);if(_0x3ff8f5[_0xb51e('0x24')]){delete _0x3ff8f5['name'];}_0x335033[_0xb51e('0x16')](_0x436520)[_0xb51e('0x25')](_0x3ff8f5);};}exports[_0xb51e('0x26')]=function(_0x4be060,_0xe6adcb){var _0x27785e={},_0x2c4225={},_0x8a9c77={'count':0x0,'rows':[]};var _0x1cbab2=db[_0xb51e('0x27')][_0xb51e('0x28')];_0x2c4225[_0xb51e('0x29')]=_[_0xb51e('0x2a')](_[_0xb51e('0x2b')](_0x1cbab2),[_0xb51e('0x24')]);var _0x290eea={'dateStart':_0x4be060[_0xb51e('0x2c')][_0xb51e('0x2d')],'dateEnd':_0x4be060[_0xb51e('0x2c')]['dateEnd']};delete _0x4be060[_0xb51e('0x2c')]['dateStart'];delete _0x4be060[_0xb51e('0x2c')][_0xb51e('0x2e')];_0x2c4225[_0xb51e('0x2c')]=_[_0xb51e('0x2b')](_0x4be060[_0xb51e('0x2c')]);_0x2c4225['filters']=_[_0xb51e('0x2f')](_0x2c4225['model'],_0x2c4225['query']);_0x27785e['attributes']=_['intersection'](_0x2c4225[_0xb51e('0x29')],qs['fields'](_0x4be060['query'][_0xb51e('0x30')]));_0x27785e['attributes']=_0x27785e[_0xb51e('0x31')][_0xb51e('0x32')]?_0x27785e['attributes']:_0x2c4225['model'];if(!_0x4be060['query']['hasOwnProperty'](_0xb51e('0x33'))){_0x27785e[_0xb51e('0x1b')]=qs['limit'](_0x4be060[_0xb51e('0x2c')][_0xb51e('0x1b')]);_0x27785e[_0xb51e('0x1a')]=qs[_0xb51e('0x1a')](_0x4be060[_0xb51e('0x2c')]['offset']);}_0x27785e[_0xb51e('0x34')]=qs[_0xb51e('0x35')](_0x4be060[_0xb51e('0x2c')][_0xb51e('0x35')]);_0x27785e[_0xb51e('0x36')]=qs[_0xb51e('0x37')](_[_0xb51e('0x38')](_0x4be060['query'],_0x2c4225[_0xb51e('0x37')]));if(_0x290eea[_0xb51e('0x2d')]){if(_0x290eea[_0xb51e('0x2e')]){_0x290eea[_0xb51e('0x2e')]=moment(_0x290eea[_0xb51e('0x2e')])[_0xb51e('0x39')](0x1,'day');}else{_0x290eea['dateEnd']=moment(_0x290eea[_0xb51e('0x2d')])[_0xb51e('0x39')](0x1,_0xb51e('0x3a'));}_[_0xb51e('0x3b')](_0x27785e[_0xb51e('0x36')],{'createdAt':{'$gte':_0x290eea[_0xb51e('0x2d')],'$lte':_0x290eea['dateEnd']}});}if(_0x4be060[_0xb51e('0x2c')][_0xb51e('0x3c')]){_0x27785e[_0xb51e('0x36')]=_[_0xb51e('0x3b')](_0x27785e[_0xb51e('0x36')],{'$or':_[_0xb51e('0x3d')](_0x1cbab2,function(_0x461613){if(_0x461613[_0xb51e('0x3e')][_0xb51e('0x3f')]!==_0xb51e('0x40')){var _0x266371={};_0x266371[_0x461613[_0xb51e('0x41')]]={'$like':'%'+_0x4be060[_0xb51e('0x2c')]['filter']+'%'};return _0x266371;}})});}_0x27785e=_['merge']({},_0x27785e,_0x4be060['options']);var _0x52cf1b={'where':_0x27785e[_0xb51e('0x36')]};return db['VoiceMailMessage'][_0xb51e('0x19')](_0x52cf1b)[_0xb51e('0x21')](function(_0x5a5762){_0x8a9c77[_0xb51e('0x19')]=_0x5a5762;if(_0x4be060[_0xb51e('0x2c')]['includeAll']){_0x27785e[_0xb51e('0x42')]=[{'all':!![]}];}return db[_0xb51e('0x27')][_0xb51e('0x43')](_0x27785e);})[_0xb51e('0x21')](function(_0x516bb8){_0x8a9c77[_0xb51e('0x44')]=_0x516bb8;return _0x8a9c77;})[_0xb51e('0x21')](respondWithFilteredResult(_0xe6adcb,_0x27785e))['catch'](handleError(_0xe6adcb,null));};exports[_0xb51e('0x45')]=function(_0x120c5c,_0x466de1){var _0x37fde2={'raw':!![],'where':{'id':_0x120c5c[_0xb51e('0x46')]['id']}},_0x4c5e68={};_0x4c5e68[_0xb51e('0x29')]=_[_0xb51e('0x2b')](db[_0xb51e('0x27')][_0xb51e('0x28')]);_0x4c5e68[_0xb51e('0x2c')]=_[_0xb51e('0x2b')](_0x120c5c[_0xb51e('0x2c')]);_0x4c5e68[_0xb51e('0x37')]=_[_0xb51e('0x2f')](_0x4c5e68[_0xb51e('0x29')],_0x4c5e68[_0xb51e('0x2c')]);_0x37fde2[_0xb51e('0x31')]=_[_0xb51e('0x2f')](_0x4c5e68[_0xb51e('0x29')],qs[_0xb51e('0x30')](_0x120c5c['query'][_0xb51e('0x30')]));_0x37fde2[_0xb51e('0x31')]=_0x37fde2[_0xb51e('0x31')][_0xb51e('0x32')]?_0x37fde2[_0xb51e('0x31')]:_0x4c5e68['model'];if(_0x120c5c['query'][_0xb51e('0x47')]){_0x37fde2['include']=[{'all':!![]}];}_0x37fde2=_[_0xb51e('0x3b')]({},_0x37fde2,_0x120c5c['options']);return db[_0xb51e('0x27')][_0xb51e('0x48')](_0x37fde2)['then'](handleEntityNotFound(_0x466de1,null))[_0xb51e('0x21')](respondWithResult(_0x466de1,null))[_0xb51e('0x49')](handleError(_0x466de1,null));};exports[_0xb51e('0x4a')]=function(_0x39e0d0,_0x1814cc){return db['VoiceMailMessage'][_0xb51e('0x4a')](_0x39e0d0[_0xb51e('0x4b')],{})['then'](respondWithResult(_0x1814cc,0xc9))['catch'](handleError(_0x1814cc,null));};exports[_0xb51e('0x20')]=function(_0x455892,_0x41bfac){if(_0x455892[_0xb51e('0x4b')]['id']){delete _0x455892['body']['id'];}return db['VoiceMailMessage'][_0xb51e('0x48')]({'where':{'id':_0x455892[_0xb51e('0x46')]['id']}})[_0xb51e('0x21')](handleEntityNotFound(_0x41bfac,null))[_0xb51e('0x21')](saveUpdates(_0x455892[_0xb51e('0x4b')],null))[_0xb51e('0x21')](respondWithResult(_0x41bfac,null))['catch'](handleError(_0x41bfac,null));};exports[_0xb51e('0x22')]=function(_0x44f87a,_0x2efcd0){return db[_0xb51e('0x27')]['find']({'where':{'id':_0x44f87a[_0xb51e('0x46')]['id']}})['then'](handleEntityNotFound(_0x2efcd0,null))[_0xb51e('0x21')](removeEntity(_0x2efcd0,null))[_0xb51e('0x49')](handleError(_0x2efcd0,null));};exports[_0xb51e('0x4c')]=function(_0xea7f41,_0x32a3d4,_0x1c2ed2){return db[_0xb51e('0x27')]['find']({'where':{'id':_0xea7f41['params']['id']},'attributes':['id',_0xb51e('0x4d'),'msg_id']})[_0xb51e('0x21')](handleEntityNotFound(_0x32a3d4,null))[_0xb51e('0x21')](function(_0x2629ed){if(_0x2629ed){if(!_0x2629ed[_0xb51e('0x4d')]){throw new db[(_0xb51e('0x4e'))][(_0xb51e('0x4f'))](_0xb51e('0x50'));}var _0x20d414={'Content-Type':_0xb51e('0x51'),'Content-Disposition':_0xb51e('0x52')};if(_0x2629ed[_0xb51e('0x53')]){_0x20d414[_0xb51e('0x54')]=_0xb51e('0x55')+_0x2629ed['msg_id']+_0xb51e('0x56');}_0x32a3d4[_0xb51e('0x1c')](_0x20d414);return _0x32a3d4['send'](new Buffer(_0x2629ed[_0xb51e('0x4d')]));}})[_0xb51e('0x49')](handleError(_0x32a3d4,null));};
\ No newline at end of file
index 8c35b0f..2cce216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c62=['dir','util','moment','bluebird','request-promise','./voiceMailMessage.attributes','exports','VoiceMailMessage','voice_voicemail_messages'];(function(_0x5796d0,_0x2a4569){var _0x490adb=function(_0x26b827){while(--_0x26b827){_0x5796d0['push'](_0x5796d0['shift']());}};_0x490adb(++_0x2a4569);}(_0x0c62,0x118));var _0x20c6=function(_0x348489,_0x23b449){_0x348489=_0x348489-0x0;var _0x522b84=_0x0c62[_0x348489];return _0x522b84;};'use strict';var _=require('lodash');var util=require(_0x20c6('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x20c6('0x1'));var BPromise=require(_0x20c6('0x2'));var rp=require(_0x20c6('0x3'));var attributes=require(_0x20c6('0x4'));module[_0x20c6('0x5')]=function(_0x22ec9b,_0x3c6329){return _0x22ec9b['define'](_0x20c6('0x6'),attributes,{'tableName':_0x20c6('0x7'),'paranoid':![],'indexes':[{'name':_0x20c6('0x8'),'fields':[_0x20c6('0x8')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x5c0f=['VoiceMailMessage','voice_voicemail_messages','dir','lodash','api','moment','bluebird','request-promise','./voiceMailMessage.attributes','exports'];(function(_0x5e3066,_0x320f07){var _0x3296ba=function(_0x1b7d1c){while(--_0x1b7d1c){_0x5e3066['push'](_0x5e3066['shift']());}};_0x3296ba(++_0x320f07);}(_0x5c0f,0x1e3));var _0xf5c0=function(_0x27ef3c,_0x5918d4){_0x27ef3c=_0x27ef3c-0x0;var _0x6f3ef1=_0x5c0f[_0x27ef3c];return _0x6f3ef1;};'use strict';var _=require(_0xf5c0('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf5c0('0x1'));var moment=require(_0xf5c0('0x2'));var BPromise=require(_0xf5c0('0x3'));var rp=require(_0xf5c0('0x4'));var attributes=require(_0xf5c0('0x5'));module[_0xf5c0('0x6')]=function(_0x530d95,_0x21d4ff){return _0x530d95['define'](_0xf5c0('0x7'),attributes,{'tableName':_0xf5c0('0x8'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xf5c0('0x9')]}],'timestamps':![]});};
\ No newline at end of file
index 39bce28..7ffe895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ee2=['../../config/environment','jayson/promise','client','http','then','info','VoiceMailMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4ee2,0x162));var _0x24ee=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x4ee2[_0x3e5086];return _0xfeb102;};'use strict';var _=require('lodash');var util=require(_0x24ee('0x0'));var moment=require(_0x24ee('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x24ee('0x2'))['db'];var utils=require(_0x24ee('0x3'));var logger=require(_0x24ee('0x4'))(_0x24ee('0x5'));var config=require(_0x24ee('0x6'));var jayson=require(_0x24ee('0x7'));var client=jayson[_0x24ee('0x8')][_0x24ee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1530f5,_0x58b1e2,_0x36ad81){return new BPromise(function(_0x473ffc,_0x205f9a){return client['request'](_0x1530f5,_0x36ad81)[_0x24ee('0xa')](function(_0x5ab47d){logger[_0x24ee('0xb')](_0x24ee('0xc'),_0x58b1e2,'request\x20sent');logger[_0x24ee('0xd')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x58b1e2,_0x24ee('0xe'),JSON[_0x24ee('0xf')](_0x5ab47d));if(_0x5ab47d['error']){if(_0x5ab47d[_0x24ee('0x10')][_0x24ee('0x11')]===0x1f4){logger['error'](_0x24ee('0xc'),_0x58b1e2,_0x5ab47d[_0x24ee('0x10')][_0x24ee('0x12')]);return _0x205f9a(_0x5ab47d[_0x24ee('0x10')]['message']);}logger['error'](_0x24ee('0xc'),_0x58b1e2,_0x5ab47d[_0x24ee('0x10')][_0x24ee('0x12')]);return _0x473ffc(_0x5ab47d[_0x24ee('0x10')][_0x24ee('0x12')]);}else{logger[_0x24ee('0xb')](_0x24ee('0xc'),_0x58b1e2,_0x24ee('0xe'));_0x473ffc(_0x5ab47d[_0x24ee('0x13')][_0x24ee('0x12')]);}})['catch'](function(_0x3d2385){logger['error'](_0x24ee('0xc'),_0x58b1e2,_0x3d2385);_0x205f9a(_0x3d2385);});});}
\ No newline at end of file
+var _0xddc8=['error','code','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xbc5a3a,_0x36a3fc){var _0x5aa475=function(_0x40516e){while(--_0x40516e){_0xbc5a3a['push'](_0xbc5a3a['shift']());}};_0x5aa475(++_0x36a3fc);}(_0xddc8,0x1d2));var _0x8ddc=function(_0x3c945b,_0x1e46ab){_0x3c945b=_0x3c945b-0x0;var _0x407495=_0xddc8[_0x3c945b];return _0x407495;};'use strict';var _=require(_0x8ddc('0x0'));var util=require(_0x8ddc('0x1'));var moment=require(_0x8ddc('0x2'));var BPromise=require('bluebird');var rs=require(_0x8ddc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8ddc('0x4'))['db'];var utils=require(_0x8ddc('0x5'));var logger=require(_0x8ddc('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8ddc('0x7'));var client=jayson[_0x8ddc('0x8')][_0x8ddc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x215a3d,_0x2b2900,_0x1c4341){return new BPromise(function(_0x3f60b0,_0x39c209){return client[_0x8ddc('0xa')](_0x215a3d,_0x1c4341)[_0x8ddc('0xb')](function(_0x17ce19){logger[_0x8ddc('0xc')](_0x8ddc('0xd'),_0x2b2900,_0x8ddc('0xe'));logger[_0x8ddc('0xf')](_0x8ddc('0x10'),_0x2b2900,_0x8ddc('0xe'),JSON[_0x8ddc('0x11')](_0x17ce19));if(_0x17ce19['error']){if(_0x17ce19[_0x8ddc('0x12')][_0x8ddc('0x13')]===0x1f4){logger[_0x8ddc('0x12')](_0x8ddc('0xd'),_0x2b2900,_0x17ce19['error'][_0x8ddc('0x14')]);return _0x39c209(_0x17ce19[_0x8ddc('0x12')][_0x8ddc('0x14')]);}logger[_0x8ddc('0x12')]('VoiceMailMessage,\x20%s,\x20%s',_0x2b2900,_0x17ce19[_0x8ddc('0x12')][_0x8ddc('0x14')]);return _0x3f60b0(_0x17ce19[_0x8ddc('0x12')][_0x8ddc('0x14')]);}else{logger[_0x8ddc('0xc')](_0x8ddc('0xd'),_0x2b2900,'request\x20sent');_0x3f60b0(_0x17ce19[_0x8ddc('0x15')][_0x8ddc('0x14')]);}})['catch'](function(_0x55df92){logger[_0x8ddc('0x12')](_0x8ddc('0xd'),_0x2b2900,_0x55df92);_0x39c209(_0x55df92);});});}
\ No newline at end of file
index c60f18f..7619bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','show','/:id/sounds','addSound','/:id','delete','/:id/sounds/:id2','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb903,0x185));var _0x3b90=function(_0x2b7efb,_0x21caec){_0x2b7efb=_0x2b7efb-0x0;var _0x155fd9=_0xb903[_0x2b7efb];return _0x155fd9;};'use strict';var multer=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var path=require(_0x3b90('0x2'));var timeout=require(_0x3b90('0x3'));var express=require('express');var router=express[_0x3b90('0x4')]();var auth=require(_0x3b90('0x5'));var interaction=require(_0x3b90('0x6'));var config=require(_0x3b90('0x7'));var controller=require(_0x3b90('0x8'));router[_0x3b90('0x9')]('/',auth[_0x3b90('0xa')](),controller['index']);router[_0x3b90('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x3b90('0xb')]);router[_0x3b90('0x9')](_0x3b90('0xc'),auth[_0x3b90('0xa')](),controller['getSounds']);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/sounds',auth[_0x3b90('0xa')](),controller[_0x3b90('0xd')]);router['put'](_0x3b90('0xe'),auth[_0x3b90('0xa')](),controller['update']);router[_0x3b90('0xf')](_0x3b90('0xe'),auth[_0x3b90('0xa')](),controller['destroy']);router['delete'](_0x3b90('0x10'),auth['isAuthenticated'](),controller['removeSound']);module[_0x3b90('0x11')]=router;
\ No newline at end of file
+var _0x9f62=['util','connect-timeout','express','Router','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','/:id','show','create','addSound','destroy','delete','/:id/sounds/:id2','removeSound','exports'];(function(_0x3233c3,_0x15e5fa){var _0x36029b=function(_0xe3dd12){while(--_0xe3dd12){_0x3233c3['push'](_0x3233c3['shift']());}};_0x36029b(++_0x15e5fa);}(_0x9f62,0x154));var _0x29f6=function(_0x5c623f,_0x58dc13){_0x5c623f=_0x5c623f-0x0;var _0x3c9521=_0x9f62[_0x5c623f];return _0x3c9521;};'use strict';var multer=require('multer');var util=require(_0x29f6('0x0'));var path=require('path');var timeout=require(_0x29f6('0x1'));var express=require(_0x29f6('0x2'));var router=express[_0x29f6('0x3')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x29f6('0x4'));var controller=require(_0x29f6('0x5'));router[_0x29f6('0x6')]('/',auth[_0x29f6('0x7')](),controller['index']);router[_0x29f6('0x6')](_0x29f6('0x8'),auth[_0x29f6('0x7')](),controller[_0x29f6('0x9')]);router[_0x29f6('0x6')]('/:id/sounds',auth['isAuthenticated'](),controller['getSounds']);router['post']('/',auth[_0x29f6('0x7')](),controller[_0x29f6('0xa')]);router['post']('/:id/sounds',auth[_0x29f6('0x7')](),controller[_0x29f6('0xb')]);router['put'](_0x29f6('0x8'),auth[_0x29f6('0x7')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x29f6('0xc')]);router[_0x29f6('0xd')](_0x29f6('0xe'),auth[_0x29f6('0x7')](),controller[_0x29f6('0xf')]);module[_0x29f6('0x10')]=router;
\ No newline at end of file
index 05379e1..a01fbf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x758d=['TIMESTAMP','sequelize','exports','STRING','name','ENUM','custom','files','mp3nb','quietmp3','mp3','alpha'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0x758d,0xb5));var _0xd758=function(_0x20e376,_0x2ff4b6){_0x20e376=_0x20e376-0x0;var _0x1a4a4c=_0x758d[_0x20e376];return _0x1a4a4c;};'use strict';var Sequelize=require(_0xd758('0x0'));module[_0xd758('0x1')]={'name':{'type':Sequelize[_0xd758('0x2')],'allowNull':![],'unique':_0xd758('0x3')},'mode':{'type':Sequelize[_0xd758('0x4')](_0xd758('0x5'),_0xd758('0x6'),_0xd758('0x7'),'quietmp3nb',_0xd758('0x8'),_0xd758('0x9')),'allowNull':!![],'defaultValue':_0xd758('0x6')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0xd758('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0xd758('0x2')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xd758('0xa')},'format':{'type':Sequelize[_0xd758('0x2')],'allowNull':!![]},'stamp':{'type':_0xd758('0xb')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfb92=['files','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM','custom','quietmp3nb','mp3'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xfb92,0x1b0));var _0x2fb9=function(_0x552787,_0x59be28){_0x552787=_0x552787-0x0;var _0x18b7f5=_0xfb92[_0x552787];return _0x18b7f5;};'use strict';var Sequelize=require(_0x2fb9('0x0'));module[_0x2fb9('0x1')]={'name':{'type':Sequelize[_0x2fb9('0x2')],'allowNull':![],'unique':_0x2fb9('0x3')},'mode':{'type':Sequelize[_0x2fb9('0x4')](_0x2fb9('0x5'),'files','mp3nb',_0x2fb9('0x6'),'quietmp3',_0x2fb9('0x7')),'allowNull':!![],'defaultValue':_0x2fb9('0x8')},'directory':{'type':Sequelize[_0x2fb9('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x2fb9('0x2')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0x2fb9('0x2')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x2fb9('0x2')],'allowNull':!![]},'stamp':{'type':_0x2fb9('0x9')},'defaultEntry':{'type':Sequelize[_0x2fb9('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index fcea8cc..c2126ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c80=['show','params','rawAttributes','include','find','body','create','transaction','mode','files','join','server/files/moh','mkdirSync','directory','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','readdirSync','forEach','unlinkSync','rmdirSync','ValidationError','message','addSound','Sound','converted_format','createdAt','root','format','%s.%s','basename','save_name','extname','symlinkSync','Sequelize','removeSound','findOne','id2','getSounds','order','map','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','count','offset','limit','apply','save','update','then','destroy','get','MusicOnHolds','end','error','stack','name','index','VoiceMusicOnHold','model','query','dateEnd','dateStart','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','add','day','merge','filter','type','key','VIRTUAL','options','includeAll','rows','catch'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x0c80,0x18b));var _0x00c8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0c80[_0x321bb2];return _0x9c12ed;};'use strict';var pdf=require(_0x00c8('0x0'));var emlformat=require(_0x00c8('0x1'));var rimraf=require(_0x00c8('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x00c8('0x3'));var rp=require(_0x00c8('0x4'));var moment=require(_0x00c8('0x5'));var BPromise=require(_0x00c8('0x6'));var Mustache=require(_0x00c8('0x7'));var util=require(_0x00c8('0x8'));var path=require(_0x00c8('0x9'));var sox=require(_0x00c8('0xa'));var csv=require('to-csv');var ejs=require(_0x00c8('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0x00c8('0xc'));var crypto=require(_0x00c8('0xd'));var jsforce=require(_0x00c8('0xe'));var deskjs=require(_0x00c8('0xf'));var toCsv=require(_0x00c8('0x10'));var querystring=require('querystring');var Papa=require(_0x00c8('0x11'));var Redis=require(_0x00c8('0x12'));var qs=require(_0x00c8('0x13'));var logger=require(_0x00c8('0x14'))(_0x00c8('0x15'));var utils=require(_0x00c8('0x16'));var config=require('../../config/environment');var db=require(_0x00c8('0x17'))['db'];function respondWithStatusCode(_0x1e1346,_0x5051a7){_0x5051a7=_0x5051a7||0xcc;return function(_0x3c888d){if(_0x3c888d){return _0x1e1346[_0x00c8('0x18')](_0x5051a7);}return _0x1e1346['status'](_0x5051a7)['end']();};}function respondWithResult(_0x5ca356,_0x2e1830){_0x2e1830=_0x2e1830||0xc8;return function(_0x552d1c){if(_0x552d1c){return _0x5ca356[_0x00c8('0x19')](_0x2e1830)[_0x00c8('0x1a')](_0x552d1c);}};}function respondWithFilteredResult(_0x51bc4a,_0x1ce28b){return function(_0x252022){if(_0x252022){var _0x31133a=_0x252022[_0x00c8('0x1b')],_0x42f89f=_0x1ce28b[_0x00c8('0x1c')],_0x267cc6=_0x1ce28b[_0x00c8('0x1c')]+_0x1ce28b[_0x00c8('0x1d')],_0x442d08;if(_0x267cc6>=_0x31133a){_0x267cc6=_0x31133a;_0x442d08=0xc8;}else{_0x442d08=0xce;}_0x51bc4a[_0x00c8('0x19')](_0x442d08);return _0x51bc4a['set']('Content-Range',_0x42f89f+'-'+_0x267cc6+'/'+_0x31133a)[_0x00c8('0x1a')](_0x252022);}return null;};}function patchUpdates(_0x3b9deb){return function(_0x3c916e){try{jsonpatch[_0x00c8('0x1e')](_0x3c916e,_0x3b9deb,!![]);}catch(_0x3d4ad3){return BPromise['reject'](_0x3d4ad3);}return _0x3c916e[_0x00c8('0x1f')]();};}function saveUpdates(_0x1faa1e,_0x2d48c6){return function(_0x12a728){if(_0x12a728){return _0x12a728[_0x00c8('0x20')](_0x1faa1e)[_0x00c8('0x21')](function(_0x575fc9){return _0x575fc9;});}return null;};}function removeEntity(_0x18c14a,_0x10d74b){return function(_0x1e142f){if(_0x1e142f){return _0x1e142f[_0x00c8('0x22')]()[_0x00c8('0x21')](function(){var _0x1d9fb7=_0x1e142f[_0x00c8('0x23')]({'plain':!![]});var _0x4b4588=_0x00c8('0x24');return db['UserProfileResource'][_0x00c8('0x22')]({'where':{'type':_0x4b4588,'resourceId':_0x1d9fb7['id']}})[_0x00c8('0x21')](function(){return _0x1e142f;});})['then'](function(){_0x18c14a[_0x00c8('0x19')](0xcc)[_0x00c8('0x25')]();});}};}function handleEntityNotFound(_0x1c922b,_0x396e60){return function(_0x421476){if(!_0x421476){_0x1c922b[_0x00c8('0x18')](0x194);}return _0x421476;};}function handleError(_0x17e0e7,_0x180f38){_0x180f38=_0x180f38||0x1f4;return function(_0x49a768){logger[_0x00c8('0x26')](_0x49a768[_0x00c8('0x27')]);if(_0x49a768[_0x00c8('0x28')]){delete _0x49a768[_0x00c8('0x28')];}_0x17e0e7[_0x00c8('0x19')](_0x180f38)['send'](_0x49a768);};}exports[_0x00c8('0x29')]=function(_0x3511bb,_0x2c6c7e){var _0x1dbf67={},_0x52d2a0={},_0x3a4404={'count':0x0,'rows':[]};var _0x478f06=db[_0x00c8('0x2a')]['rawAttributes'];_0x52d2a0[_0x00c8('0x2b')]=_['keys'](_0x478f06);var _0x5aa772={'dateStart':_0x3511bb[_0x00c8('0x2c')]['dateStart'],'dateEnd':_0x3511bb[_0x00c8('0x2c')][_0x00c8('0x2d')]};delete _0x3511bb[_0x00c8('0x2c')][_0x00c8('0x2e')];delete _0x3511bb[_0x00c8('0x2c')][_0x00c8('0x2d')];_0x52d2a0[_0x00c8('0x2c')]=_[_0x00c8('0x2f')](_0x3511bb[_0x00c8('0x2c')]);_0x52d2a0[_0x00c8('0x30')]=_['intersection'](_0x52d2a0[_0x00c8('0x2b')],_0x52d2a0[_0x00c8('0x2c')]);_0x1dbf67[_0x00c8('0x31')]=_[_0x00c8('0x32')](_0x52d2a0['model'],qs[_0x00c8('0x33')](_0x3511bb[_0x00c8('0x2c')]['fields']));_0x1dbf67[_0x00c8('0x31')]=_0x1dbf67[_0x00c8('0x31')][_0x00c8('0x34')]?_0x1dbf67[_0x00c8('0x31')]:_0x52d2a0[_0x00c8('0x2b')];if(!_0x3511bb[_0x00c8('0x2c')][_0x00c8('0x35')](_0x00c8('0x36'))){_0x1dbf67['limit']=qs[_0x00c8('0x1d')](_0x3511bb[_0x00c8('0x2c')][_0x00c8('0x1d')]);_0x1dbf67[_0x00c8('0x1c')]=qs[_0x00c8('0x1c')](_0x3511bb[_0x00c8('0x2c')][_0x00c8('0x1c')]);}_0x1dbf67['order']=qs[_0x00c8('0x37')](_0x3511bb['query'][_0x00c8('0x37')]);_0x1dbf67[_0x00c8('0x38')]=qs[_0x00c8('0x30')](_[_0x00c8('0x39')](_0x3511bb['query'],_0x52d2a0['filters']));if(_0x5aa772[_0x00c8('0x2e')]){if(_0x5aa772[_0x00c8('0x2d')]){_0x5aa772[_0x00c8('0x2d')]=moment(_0x5aa772['dateEnd'])[_0x00c8('0x3a')](0x1,_0x00c8('0x3b'));}else{_0x5aa772['dateEnd']=moment(_0x5aa772[_0x00c8('0x2e')])[_0x00c8('0x3a')](0x1,'day');}_[_0x00c8('0x3c')](_0x1dbf67['where'],{'createdAt':{'$gte':_0x5aa772[_0x00c8('0x2e')],'$lte':_0x5aa772['dateEnd']}});}if(_0x3511bb[_0x00c8('0x2c')][_0x00c8('0x3d')]){_0x1dbf67['where']=_[_0x00c8('0x3c')](_0x1dbf67[_0x00c8('0x38')],{'$or':_['map'](_0x478f06,function(_0x5d7d26){if(_0x5d7d26[_0x00c8('0x3e')][_0x00c8('0x3f')]!==_0x00c8('0x40')){var _0x58c49e={};_0x58c49e[_0x5d7d26['field']]={'$like':'%'+_0x3511bb[_0x00c8('0x2c')][_0x00c8('0x3d')]+'%'};return _0x58c49e;}})});}_0x1dbf67=_['merge']({},_0x1dbf67,_0x3511bb[_0x00c8('0x41')]);var _0x4fecfd={'where':_0x1dbf67[_0x00c8('0x38')]};return db[_0x00c8('0x2a')][_0x00c8('0x1b')](_0x4fecfd)[_0x00c8('0x21')](function(_0x493a48){_0x3a4404[_0x00c8('0x1b')]=_0x493a48;if(_0x3511bb[_0x00c8('0x2c')][_0x00c8('0x42')]){_0x1dbf67['include']=[{'all':!![]}];}return db['VoiceMusicOnHold']['findAll'](_0x1dbf67);})[_0x00c8('0x21')](function(_0x5682c5){_0x3a4404[_0x00c8('0x43')]=_0x5682c5;return _0x3a4404;})[_0x00c8('0x21')](respondWithFilteredResult(_0x2c6c7e,_0x1dbf67))[_0x00c8('0x44')](handleError(_0x2c6c7e,null));};exports[_0x00c8('0x45')]=function(_0x5885fc,_0x378ac4){var _0xd6289={'raw':![],'where':{'id':_0x5885fc[_0x00c8('0x46')]['id']}},_0x2d79fc={};_0x2d79fc[_0x00c8('0x2b')]=_[_0x00c8('0x2f')](db[_0x00c8('0x2a')][_0x00c8('0x47')]);_0x2d79fc['query']=_[_0x00c8('0x2f')](_0x5885fc[_0x00c8('0x2c')]);_0x2d79fc['filters']=_[_0x00c8('0x32')](_0x2d79fc[_0x00c8('0x2b')],_0x2d79fc['query']);_0xd6289[_0x00c8('0x31')]=_[_0x00c8('0x32')](_0x2d79fc[_0x00c8('0x2b')],qs['fields'](_0x5885fc[_0x00c8('0x2c')][_0x00c8('0x33')]));_0xd6289[_0x00c8('0x31')]=_0xd6289[_0x00c8('0x31')][_0x00c8('0x34')]?_0xd6289['attributes']:_0x2d79fc[_0x00c8('0x2b')];if(_0x5885fc[_0x00c8('0x2c')][_0x00c8('0x42')]){_0xd6289[_0x00c8('0x48')]=[{'all':!![]}];}_0xd6289=_[_0x00c8('0x3c')]({},_0xd6289,_0x5885fc[_0x00c8('0x41')]);return db[_0x00c8('0x2a')][_0x00c8('0x49')](_0xd6289)['then'](handleEntityNotFound(_0x378ac4,null))[_0x00c8('0x21')](respondWithResult(_0x378ac4,null))['catch'](handleError(_0x378ac4,null));};exports[_0x00c8('0x20')]=function(_0x3da82b,_0x837424){if(_0x3da82b[_0x00c8('0x4a')]['id']){delete _0x3da82b[_0x00c8('0x4a')]['id'];}return db['VoiceMusicOnHold'][_0x00c8('0x49')]({'where':{'id':_0x3da82b[_0x00c8('0x46')]['id']}})[_0x00c8('0x21')](handleEntityNotFound(_0x837424,null))[_0x00c8('0x21')](saveUpdates(_0x3da82b[_0x00c8('0x4a')],null))[_0x00c8('0x21')](respondWithResult(_0x837424,null))['catch'](handleError(_0x837424,null));};exports[_0x00c8('0x4b')]=function(_0x21ffdf,_0x6ce839,_0xc18bf7){return db['sequelize'][_0x00c8('0x4c')](function(_0x4d0d80){if(_0x21ffdf[_0x00c8('0x4a')][_0x00c8('0x4d')]===_0x00c8('0x4e')){_0x21ffdf[_0x00c8('0x4a')]['directory']=path[_0x00c8('0x4f')](config['root'],_0x00c8('0x50'),_0x21ffdf[_0x00c8('0x4a')][_0x00c8('0x28')]);}return db[_0x00c8('0x2a')][_0x00c8('0x4b')](_0x21ffdf[_0x00c8('0x4a')],{'transaction':_0x4d0d80})['then'](function(_0x1f45ad){if(_0x21ffdf['body'][_0x00c8('0x4d')]==='files'){fs[_0x00c8('0x51')](_0x1f45ad[_0x00c8('0x52')],parseInt(_0x00c8('0x53'),0x8));}var _0x2fd359=_0x21ffdf['user']['get']({'plain':!![]});if(!_0x2fd359)throw new Error(_0x00c8('0x54'));if(_0x2fd359[_0x00c8('0x55')]==='user'){var _0xebef50=_0x1f45ad[_0x00c8('0x23')]({'plain':!![]});return db[_0x00c8('0x56')][_0x00c8('0x49')]({'where':{'name':'MusicOnHolds','userProfileId':_0x2fd359[_0x00c8('0x57')]},'raw':!![]})['then'](function(_0x31700f){if(_0x31700f&&_0x31700f[_0x00c8('0x58')]===0x0){return db[_0x00c8('0x59')][_0x00c8('0x4b')]({'name':_0xebef50[_0x00c8('0x28')],'resourceId':_0xebef50['id'],'type':_0x31700f[_0x00c8('0x28')],'sectionId':_0x31700f['id']},{})[_0x00c8('0x21')](function(){return _0x1f45ad;});}else{return _0x1f45ad;}})[_0x00c8('0x44')](function(_0x320ae5){logger['error'](_0x00c8('0x5a'),_0x320ae5);});}return _0x1f45ad;});})['then'](respondWithResult(_0x6ce839,0xc9))['catch'](handleError(_0x6ce839,null));};exports['destroy']=function(_0xf9ac8f,_0x328813,_0x40762c){var _0x487726;return db[_0x00c8('0x2a')][_0x00c8('0x49')]({'where':{'id':_0xf9ac8f[_0x00c8('0x46')]['id']}})[_0x00c8('0x21')](function(_0x4b2e5d){if(_0x4b2e5d){return db[_0x00c8('0x5b')][_0x00c8('0x4c')](function(_0x3a6ab0){return _0x4b2e5d['destroy']({'transaction':_0x3a6ab0,'raw':!![]})[_0x00c8('0x21')](function(_0x312301){if(_0x312301[_0x00c8('0x52')]){fs[_0x00c8('0x5c')](_0x312301[_0x00c8('0x52')])[_0x00c8('0x5d')](function(_0x52239c){fs[_0x00c8('0x5e')](path[_0x00c8('0x4f')](_0x312301['directory'],_0x52239c));});fs[_0x00c8('0x5f')](_0x312301['directory']);}return _0x312301;});})['catch'](function(_0x193ba3){throw new db['Sequelize'][(_0x00c8('0x60'))](_0x193ba3[_0x00c8('0x61')]);});}})[_0x00c8('0x21')](handleEntityNotFound(_0x328813,null))[_0x00c8('0x21')](removeEntity(_0x328813,null))[_0x00c8('0x44')](handleError(_0x328813,null));};exports[_0x00c8('0x62')]=function(_0xd0223d,_0x52c744,_0x536ec8){return db[_0x00c8('0x5b')]['transaction'](function(_0x59bd37){var _0x398fed;return db[_0x00c8('0x2a')][_0x00c8('0x49')]({'where':{'id':_0xd0223d[_0x00c8('0x46')]['id']}})[_0x00c8('0x21')](function(_0x53d53a){if(_0x53d53a){_0x398fed=_0x53d53a;return _0x53d53a[_0x00c8('0x62')](_0xd0223d[_0x00c8('0x4a')]['id'],{'transaction':_0x59bd37});}})['then'](function(_0x25b94a){if(_0x25b94a){return db[_0x00c8('0x63')]['findOne']({'where':{'id':_0xd0223d['body']['id']},'attributes':['id','name','save_name',_0x00c8('0x64'),_0x00c8('0x65')],'raw':!![]});}})['then'](function(_0x1898ca){if(_0x1898ca){var _0x54dca1=path[_0x00c8('0x4f')](config[_0x00c8('0x66')],'server/files/sounds/converted',util[_0x00c8('0x67')](_0x00c8('0x68'),path[_0x00c8('0x69')](_0x1898ca[_0x00c8('0x6a')],path[_0x00c8('0x6b')](_0x1898ca[_0x00c8('0x6a')])),_0x1898ca[_0x00c8('0x64')]));var _0x239d4a=path[_0x00c8('0x4f')](config[_0x00c8('0x66')],_0x00c8('0x50'),_0x398fed[_0x00c8('0x28')],util[_0x00c8('0x67')](_0x00c8('0x68'),_0x1898ca[_0x00c8('0x28')],_0x1898ca['converted_format']));fs[_0x00c8('0x6c')](_0x54dca1,_0x239d4a);return _0x1898ca;}})[_0x00c8('0x44')](function(_0x29091a){throw new db[(_0x00c8('0x6d'))]['ValidationError'](_0x29091a[_0x00c8('0x61')]);});})['then'](handleEntityNotFound(_0x52c744,null))['then'](respondWithResult(_0x52c744,0xc9))[_0x00c8('0x44')](handleError(_0x52c744,null));};exports[_0x00c8('0x6e')]=function(_0x927f0c,_0x47e6dc,_0x35cbe3){return db[_0x00c8('0x5b')]['transaction'](function(_0x3a57ae){var _0x1796ee;return db[_0x00c8('0x2a')][_0x00c8('0x6f')]({'where':{'id':_0x927f0c[_0x00c8('0x46')]['id']}})[_0x00c8('0x21')](handleEntityNotFound(_0x47e6dc,null))[_0x00c8('0x21')](function(_0x52f0cf){if(_0x52f0cf){_0x1796ee=_0x52f0cf;return _0x52f0cf[_0x00c8('0x6e')](_0x927f0c['params'][_0x00c8('0x70')]);}})[_0x00c8('0x21')](function(_0x27ae2b){if(_0x27ae2b){return db['Sound'][_0x00c8('0x6f')]({'where':{'id':_0x927f0c[_0x00c8('0x46')][_0x00c8('0x70')]},'attributes':['id',_0x00c8('0x28'),_0x00c8('0x6a'),_0x00c8('0x64'),_0x00c8('0x65')],'raw':!![]});}})[_0x00c8('0x21')](function(_0x1e8582){if(_0x1e8582){fs[_0x00c8('0x5e')](path[_0x00c8('0x4f')](_0x1796ee[_0x00c8('0x52')],util[_0x00c8('0x67')](_0x00c8('0x68'),_0x1e8582[_0x00c8('0x28')],_0x1e8582[_0x00c8('0x64')])));return _0x1e8582;}})[_0x00c8('0x44')](function(_0xc2b94c){throw new db['Sequelize'][(_0x00c8('0x60'))](_0xc2b94c[_0x00c8('0x61')]);});})[_0x00c8('0x21')](handleEntityNotFound(_0x47e6dc,null))[_0x00c8('0x21')](respondWithStatusCode(_0x47e6dc,0xcc))[_0x00c8('0x44')](handleError(_0x47e6dc,null));};exports[_0x00c8('0x71')]=function(_0x2c7164,_0x1fb13d,_0x1e82ea){var _0x596a37={};var _0xfa2a50={};var _0x1db238;var _0x378580;return db['VoiceMusicOnHold'][_0x00c8('0x6f')]({'where':{'id':_0x2c7164['params']['id']}})[_0x00c8('0x21')](handleEntityNotFound(_0x1fb13d,null))['then'](function(_0x573886){if(_0x573886){_0x1db238=_0x573886;_0xfa2a50[_0x00c8('0x2b')]=_[_0x00c8('0x2f')](db[_0x00c8('0x63')][_0x00c8('0x47')]);_0xfa2a50[_0x00c8('0x2c')]=_[_0x00c8('0x2f')](_0x2c7164[_0x00c8('0x2c')]);_0xfa2a50[_0x00c8('0x30')]=_['intersection'](_0xfa2a50[_0x00c8('0x2b')],_0xfa2a50[_0x00c8('0x2c')]);_0x596a37[_0x00c8('0x31')]=_[_0x00c8('0x32')](_0xfa2a50[_0x00c8('0x2b')],qs[_0x00c8('0x33')](_0x2c7164[_0x00c8('0x2c')]['fields']));_0x596a37['attributes']=_0x596a37[_0x00c8('0x31')]['length']?_0x596a37[_0x00c8('0x31')]:_0xfa2a50['model'];_0x596a37[_0x00c8('0x72')]=qs[_0x00c8('0x37')](_0x2c7164['query'][_0x00c8('0x37')]);_0x596a37[_0x00c8('0x38')]=qs[_0x00c8('0x30')](_[_0x00c8('0x39')](_0x2c7164[_0x00c8('0x2c')],_0xfa2a50['filters']));if(_0x2c7164[_0x00c8('0x2c')]['filter']){_0x596a37[_0x00c8('0x38')]=_[_0x00c8('0x3c')](_0x596a37[_0x00c8('0x38')],{'$or':_[_0x00c8('0x73')](_0x596a37[_0x00c8('0x31')],function(_0x3b670b){var _0xdc5134={};_0xdc5134[_0x3b670b]={'$like':'%'+_0x2c7164[_0x00c8('0x2c')][_0x00c8('0x3d')]+'%'};return _0xdc5134;})});}_0x596a37=_[_0x00c8('0x3c')]({},_0x596a37,_0x2c7164[_0x00c8('0x41')]);return _0x1db238['getSounds'](_0x596a37);}})['then'](function(_0x19dfd9){if(_0x19dfd9){_0x378580=_0x19dfd9[_0x00c8('0x34')];if(!_0x2c7164[_0x00c8('0x2c')][_0x00c8('0x35')](_0x00c8('0x36'))){_0x596a37[_0x00c8('0x1d')]=qs[_0x00c8('0x1d')](_0x2c7164[_0x00c8('0x2c')][_0x00c8('0x1d')]);_0x596a37[_0x00c8('0x1c')]=qs[_0x00c8('0x1c')](_0x2c7164['query'][_0x00c8('0x1c')]);}return _0x1db238['getSounds'](_0x596a37);}})[_0x00c8('0x21')](function(_0xc2bdcf){if(_0xc2bdcf){return _0xc2bdcf?{'count':_0x378580,'rows':_0xc2bdcf}:null;}})[_0x00c8('0x21')](respondWithResult(_0x1fb13d,null))[_0x00c8('0x44')](handleError(_0x1fb13d,null));};
\ No newline at end of file
+var _0x16f9=['dateEnd','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','add','day','merge','filter','type','key','VIRTUAL','options','VoiceMusicOnHold','count','includeAll','include','findAll','rows','show','params','find','catch','body','create','sequelize','transaction','mode','files','join','root','server/files/moh','0777','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','directory','readdirSync','unlinkSync','rmdirSync','Sequelize','ValidationError','Sound','findOne','createdAt','format','%s.%s','basename','save_name','converted_format','symlinkSync','message','removeSound','id2','getSounds','order','pick','map','html-pdf','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','offset','set','Content-Range','apply','reject','save','update','destroy','MusicOnHolds','UserProfileResource','then','status','error','name','send','index','rawAttributes','model','keys','dateStart'];(function(_0x43b702,_0x5b6a66){var _0x4ba7c7=function(_0x563c7b){while(--_0x563c7b){_0x43b702['push'](_0x43b702['shift']());}};_0x4ba7c7(++_0x5b6a66);}(_0x16f9,0x130));var _0x916f=function(_0x1c15bd,_0x15e665){_0x1c15bd=_0x1c15bd-0x0;var _0xc0abd2=_0x16f9[_0x1c15bd];return _0xc0abd2;};'use strict';var pdf=require(_0x916f('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x916f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x916f('0x2'));var rp=require(_0x916f('0x3'));var moment=require(_0x916f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x916f('0x5'));var util=require(_0x916f('0x6'));var path=require(_0x916f('0x7'));var sox=require(_0x916f('0x8'));var csv=require(_0x916f('0x9'));var ejs=require(_0x916f('0xa'));var fs=require('fs');var _=require(_0x916f('0xb'));var squel=require(_0x916f('0xc'));var crypto=require(_0x916f('0xd'));var jsforce=require(_0x916f('0xe'));var deskjs=require(_0x916f('0xf'));var toCsv=require(_0x916f('0x9'));var querystring=require(_0x916f('0x10'));var Papa=require('papaparse');var Redis=require(_0x916f('0x11'));var qs=require(_0x916f('0x12'));var logger=require(_0x916f('0x13'))(_0x916f('0x14'));var utils=require(_0x916f('0x15'));var config=require(_0x916f('0x16'));var db=require(_0x916f('0x17'))['db'];function respondWithStatusCode(_0x56231a,_0x4f0958){_0x4f0958=_0x4f0958||0xcc;return function(_0x11e97f){if(_0x11e97f){return _0x56231a[_0x916f('0x18')](_0x4f0958);}return _0x56231a['status'](_0x4f0958)[_0x916f('0x19')]();};}function respondWithResult(_0x16bdd2,_0xe323d4){_0xe323d4=_0xe323d4||0xc8;return function(_0x1cf6df){if(_0x1cf6df){return _0x16bdd2['status'](_0xe323d4)[_0x916f('0x1a')](_0x1cf6df);}};}function respondWithFilteredResult(_0x6ddd10,_0x5eb399){return function(_0x55a00e){if(_0x55a00e){var _0x30a626=_0x55a00e['count'],_0x3b2439=_0x5eb399[_0x916f('0x1b')],_0x272fdf=_0x5eb399[_0x916f('0x1b')]+_0x5eb399['limit'],_0x3c24df;if(_0x272fdf>=_0x30a626){_0x272fdf=_0x30a626;_0x3c24df=0xc8;}else{_0x3c24df=0xce;}_0x6ddd10['status'](_0x3c24df);return _0x6ddd10[_0x916f('0x1c')](_0x916f('0x1d'),_0x3b2439+'-'+_0x272fdf+'/'+_0x30a626)['json'](_0x55a00e);}return null;};}function patchUpdates(_0x303679){return function(_0x168f25){try{jsonpatch[_0x916f('0x1e')](_0x168f25,_0x303679,!![]);}catch(_0x3e098c){return BPromise[_0x916f('0x1f')](_0x3e098c);}return _0x168f25[_0x916f('0x20')]();};}function saveUpdates(_0x57a279,_0x3b3a41){return function(_0x33f464){if(_0x33f464){return _0x33f464[_0x916f('0x21')](_0x57a279)['then'](function(_0x45e781){return _0x45e781;});}return null;};}function removeEntity(_0x31a99b,_0x3b7db1){return function(_0x47daf3){if(_0x47daf3){return _0x47daf3[_0x916f('0x22')]()['then'](function(){var _0x115233=_0x47daf3['get']({'plain':!![]});var _0x2b889d=_0x916f('0x23');return db[_0x916f('0x24')][_0x916f('0x22')]({'where':{'type':_0x2b889d,'resourceId':_0x115233['id']}})[_0x916f('0x25')](function(){return _0x47daf3;});})['then'](function(){_0x31a99b[_0x916f('0x26')](0xcc)[_0x916f('0x19')]();});}};}function handleEntityNotFound(_0x17aea1,_0x2ce0e4){return function(_0xc96b3b){if(!_0xc96b3b){_0x17aea1['sendStatus'](0x194);}return _0xc96b3b;};}function handleError(_0x11a413,_0x1db1e4){_0x1db1e4=_0x1db1e4||0x1f4;return function(_0x370510){logger[_0x916f('0x27')](_0x370510['stack']);if(_0x370510[_0x916f('0x28')]){delete _0x370510[_0x916f('0x28')];}_0x11a413[_0x916f('0x26')](_0x1db1e4)[_0x916f('0x29')](_0x370510);};}exports[_0x916f('0x2a')]=function(_0x25a9a9,_0x38bd11){var _0x4bbb19={},_0xa8835={},_0x1bddfd={'count':0x0,'rows':[]};var _0x1001ad=db['VoiceMusicOnHold'][_0x916f('0x2b')];_0xa8835[_0x916f('0x2c')]=_[_0x916f('0x2d')](_0x1001ad);var _0x58add5={'dateStart':_0x25a9a9['query'][_0x916f('0x2e')],'dateEnd':_0x25a9a9['query'][_0x916f('0x2f')]};delete _0x25a9a9[_0x916f('0x30')]['dateStart'];delete _0x25a9a9[_0x916f('0x30')]['dateEnd'];_0xa8835[_0x916f('0x30')]=_[_0x916f('0x2d')](_0x25a9a9[_0x916f('0x30')]);_0xa8835[_0x916f('0x31')]=_[_0x916f('0x32')](_0xa8835['model'],_0xa8835[_0x916f('0x30')]);_0x4bbb19[_0x916f('0x33')]=_[_0x916f('0x32')](_0xa8835[_0x916f('0x2c')],qs[_0x916f('0x34')](_0x25a9a9[_0x916f('0x30')][_0x916f('0x34')]));_0x4bbb19[_0x916f('0x33')]=_0x4bbb19[_0x916f('0x33')][_0x916f('0x35')]?_0x4bbb19['attributes']:_0xa8835['model'];if(!_0x25a9a9[_0x916f('0x30')][_0x916f('0x36')](_0x916f('0x37'))){_0x4bbb19[_0x916f('0x38')]=qs['limit'](_0x25a9a9[_0x916f('0x30')]['limit']);_0x4bbb19[_0x916f('0x1b')]=qs[_0x916f('0x1b')](_0x25a9a9[_0x916f('0x30')][_0x916f('0x1b')]);}_0x4bbb19['order']=qs[_0x916f('0x39')](_0x25a9a9[_0x916f('0x30')][_0x916f('0x39')]);_0x4bbb19[_0x916f('0x3a')]=qs[_0x916f('0x31')](_['pick'](_0x25a9a9['query'],_0xa8835[_0x916f('0x31')]));if(_0x58add5[_0x916f('0x2e')]){if(_0x58add5[_0x916f('0x2f')]){_0x58add5['dateEnd']=moment(_0x58add5[_0x916f('0x2f')])[_0x916f('0x3b')](0x1,_0x916f('0x3c'));}else{_0x58add5[_0x916f('0x2f')]=moment(_0x58add5[_0x916f('0x2e')])[_0x916f('0x3b')](0x1,_0x916f('0x3c'));}_[_0x916f('0x3d')](_0x4bbb19[_0x916f('0x3a')],{'createdAt':{'$gte':_0x58add5[_0x916f('0x2e')],'$lte':_0x58add5[_0x916f('0x2f')]}});}if(_0x25a9a9[_0x916f('0x30')][_0x916f('0x3e')]){_0x4bbb19[_0x916f('0x3a')]=_['merge'](_0x4bbb19['where'],{'$or':_['map'](_0x1001ad,function(_0x50e190){if(_0x50e190[_0x916f('0x3f')][_0x916f('0x40')]!==_0x916f('0x41')){var _0x5ea82a={};_0x5ea82a[_0x50e190['field']]={'$like':'%'+_0x25a9a9[_0x916f('0x30')]['filter']+'%'};return _0x5ea82a;}})});}_0x4bbb19=_['merge']({},_0x4bbb19,_0x25a9a9[_0x916f('0x42')]);var _0x413a93={'where':_0x4bbb19['where']};return db[_0x916f('0x43')][_0x916f('0x44')](_0x413a93)[_0x916f('0x25')](function(_0x5bcdfc){_0x1bddfd['count']=_0x5bcdfc;if(_0x25a9a9[_0x916f('0x30')][_0x916f('0x45')]){_0x4bbb19[_0x916f('0x46')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x916f('0x47')](_0x4bbb19);})[_0x916f('0x25')](function(_0x15089a){_0x1bddfd[_0x916f('0x48')]=_0x15089a;return _0x1bddfd;})['then'](respondWithFilteredResult(_0x38bd11,_0x4bbb19))['catch'](handleError(_0x38bd11,null));};exports[_0x916f('0x49')]=function(_0x21a046,_0x448484){var _0x4946ef={'raw':![],'where':{'id':_0x21a046[_0x916f('0x4a')]['id']}},_0x2dbd56={};_0x2dbd56[_0x916f('0x2c')]=_['keys'](db[_0x916f('0x43')][_0x916f('0x2b')]);_0x2dbd56[_0x916f('0x30')]=_[_0x916f('0x2d')](_0x21a046[_0x916f('0x30')]);_0x2dbd56[_0x916f('0x31')]=_[_0x916f('0x32')](_0x2dbd56[_0x916f('0x2c')],_0x2dbd56[_0x916f('0x30')]);_0x4946ef[_0x916f('0x33')]=_[_0x916f('0x32')](_0x2dbd56[_0x916f('0x2c')],qs[_0x916f('0x34')](_0x21a046[_0x916f('0x30')][_0x916f('0x34')]));_0x4946ef[_0x916f('0x33')]=_0x4946ef['attributes'][_0x916f('0x35')]?_0x4946ef[_0x916f('0x33')]:_0x2dbd56['model'];if(_0x21a046[_0x916f('0x30')][_0x916f('0x45')]){_0x4946ef[_0x916f('0x46')]=[{'all':!![]}];}_0x4946ef=_[_0x916f('0x3d')]({},_0x4946ef,_0x21a046[_0x916f('0x42')]);return db[_0x916f('0x43')][_0x916f('0x4b')](_0x4946ef)['then'](handleEntityNotFound(_0x448484,null))['then'](respondWithResult(_0x448484,null))[_0x916f('0x4c')](handleError(_0x448484,null));};exports['update']=function(_0x4739ec,_0x13432e){if(_0x4739ec[_0x916f('0x4d')]['id']){delete _0x4739ec[_0x916f('0x4d')]['id'];}return db[_0x916f('0x43')][_0x916f('0x4b')]({'where':{'id':_0x4739ec[_0x916f('0x4a')]['id']}})[_0x916f('0x25')](handleEntityNotFound(_0x13432e,null))[_0x916f('0x25')](saveUpdates(_0x4739ec[_0x916f('0x4d')],null))['then'](respondWithResult(_0x13432e,null))[_0x916f('0x4c')](handleError(_0x13432e,null));};exports[_0x916f('0x4e')]=function(_0x6091e3,_0x47e11f,_0x4e3907){return db[_0x916f('0x4f')][_0x916f('0x50')](function(_0x570742){if(_0x6091e3[_0x916f('0x4d')][_0x916f('0x51')]===_0x916f('0x52')){_0x6091e3[_0x916f('0x4d')]['directory']=path[_0x916f('0x53')](config[_0x916f('0x54')],_0x916f('0x55'),_0x6091e3[_0x916f('0x4d')][_0x916f('0x28')]);}return db[_0x916f('0x43')][_0x916f('0x4e')](_0x6091e3['body'],{'transaction':_0x570742})['then'](function(_0x1dedca){if(_0x6091e3[_0x916f('0x4d')][_0x916f('0x51')]==='files'){fs['mkdirSync'](_0x1dedca['directory'],parseInt(_0x916f('0x56'),0x8));}var _0x438eac=_0x6091e3[_0x916f('0x57')][_0x916f('0x58')]({'plain':!![]});if(!_0x438eac)throw new Error(_0x916f('0x59'));if(_0x438eac[_0x916f('0x5a')]===_0x916f('0x57')){var _0x493759=_0x1dedca['get']({'plain':!![]});return db[_0x916f('0x5b')][_0x916f('0x4b')]({'where':{'name':'MusicOnHolds','userProfileId':_0x438eac[_0x916f('0x5c')]},'raw':!![]})[_0x916f('0x25')](function(_0x5e4fc9){if(_0x5e4fc9&&_0x5e4fc9[_0x916f('0x5d')]===0x0){return db[_0x916f('0x24')]['create']({'name':_0x493759[_0x916f('0x28')],'resourceId':_0x493759['id'],'type':_0x5e4fc9[_0x916f('0x28')],'sectionId':_0x5e4fc9['id']},{})[_0x916f('0x25')](function(){return _0x1dedca;});}else{return _0x1dedca;}})[_0x916f('0x4c')](function(_0x3d20c2){logger['error'](_0x916f('0x5e'),_0x3d20c2);});}return _0x1dedca;});})['then'](respondWithResult(_0x47e11f,0xc9))['catch'](handleError(_0x47e11f,null));};exports[_0x916f('0x22')]=function(_0x5f1975,_0x4a4621,_0x5d9285){var _0x1d18a8;return db['VoiceMusicOnHold'][_0x916f('0x4b')]({'where':{'id':_0x5f1975['params']['id']}})[_0x916f('0x25')](function(_0x59da93){if(_0x59da93){return db['sequelize'][_0x916f('0x50')](function(_0x4d0bf9){return _0x59da93['destroy']({'transaction':_0x4d0bf9,'raw':!![]})[_0x916f('0x25')](function(_0x3b9051){if(_0x3b9051[_0x916f('0x5f')]){fs[_0x916f('0x60')](_0x3b9051[_0x916f('0x5f')])['forEach'](function(_0x1a416b){fs[_0x916f('0x61')](path[_0x916f('0x53')](_0x3b9051[_0x916f('0x5f')],_0x1a416b));});fs[_0x916f('0x62')](_0x3b9051['directory']);}return _0x3b9051;});})['catch'](function(_0x5cdb55){throw new db[(_0x916f('0x63'))][(_0x916f('0x64'))](_0x5cdb55['message']);});}})['then'](handleEntityNotFound(_0x4a4621,null))[_0x916f('0x25')](removeEntity(_0x4a4621,null))[_0x916f('0x4c')](handleError(_0x4a4621,null));};exports['addSound']=function(_0x1ca490,_0x4aeb3c,_0x48dc28){return db['sequelize']['transaction'](function(_0x35f644){var _0x1d8fb0;return db['VoiceMusicOnHold'][_0x916f('0x4b')]({'where':{'id':_0x1ca490['params']['id']}})[_0x916f('0x25')](function(_0x518f1a){if(_0x518f1a){_0x1d8fb0=_0x518f1a;return _0x518f1a['addSound'](_0x1ca490[_0x916f('0x4d')]['id'],{'transaction':_0x35f644});}})['then'](function(_0x5634d6){if(_0x5634d6){return db[_0x916f('0x65')][_0x916f('0x66')]({'where':{'id':_0x1ca490[_0x916f('0x4d')]['id']},'attributes':['id',_0x916f('0x28'),'save_name','converted_format',_0x916f('0x67')],'raw':!![]});}})[_0x916f('0x25')](function(_0x193e5d){if(_0x193e5d){var _0x4cac37=path[_0x916f('0x53')](config['root'],'server/files/sounds/converted',util[_0x916f('0x68')](_0x916f('0x69'),path[_0x916f('0x6a')](_0x193e5d[_0x916f('0x6b')],path['extname'](_0x193e5d[_0x916f('0x6b')])),_0x193e5d[_0x916f('0x6c')]));var _0x33bddb=path[_0x916f('0x53')](config[_0x916f('0x54')],_0x916f('0x55'),_0x1d8fb0[_0x916f('0x28')],util['format'](_0x916f('0x69'),_0x193e5d[_0x916f('0x28')],_0x193e5d[_0x916f('0x6c')]));fs[_0x916f('0x6d')](_0x4cac37,_0x33bddb);return _0x193e5d;}})[_0x916f('0x4c')](function(_0x4b80ca){throw new db[(_0x916f('0x63'))][(_0x916f('0x64'))](_0x4b80ca[_0x916f('0x6e')]);});})[_0x916f('0x25')](handleEntityNotFound(_0x4aeb3c,null))[_0x916f('0x25')](respondWithResult(_0x4aeb3c,0xc9))[_0x916f('0x4c')](handleError(_0x4aeb3c,null));};exports[_0x916f('0x6f')]=function(_0x5aa1bb,_0x457832,_0x5d8231){return db['sequelize'][_0x916f('0x50')](function(_0x22c84e){var _0x1addf7;return db[_0x916f('0x43')][_0x916f('0x66')]({'where':{'id':_0x5aa1bb[_0x916f('0x4a')]['id']}})[_0x916f('0x25')](handleEntityNotFound(_0x457832,null))[_0x916f('0x25')](function(_0x7c4dd6){if(_0x7c4dd6){_0x1addf7=_0x7c4dd6;return _0x7c4dd6['removeSound'](_0x5aa1bb['params'][_0x916f('0x70')]);}})[_0x916f('0x25')](function(_0x9f936e){if(_0x9f936e){return db[_0x916f('0x65')]['findOne']({'where':{'id':_0x5aa1bb['params']['id2']},'attributes':['id',_0x916f('0x28'),_0x916f('0x6b'),_0x916f('0x6c'),_0x916f('0x67')],'raw':!![]});}})['then'](function(_0x49cf8e){if(_0x49cf8e){fs[_0x916f('0x61')](path[_0x916f('0x53')](_0x1addf7[_0x916f('0x5f')],util[_0x916f('0x68')](_0x916f('0x69'),_0x49cf8e[_0x916f('0x28')],_0x49cf8e[_0x916f('0x6c')])));return _0x49cf8e;}})[_0x916f('0x4c')](function(_0x4ea904){throw new db[(_0x916f('0x63'))]['ValidationError'](_0x4ea904['message']);});})[_0x916f('0x25')](handleEntityNotFound(_0x457832,null))[_0x916f('0x25')](respondWithStatusCode(_0x457832,0xcc))[_0x916f('0x4c')](handleError(_0x457832,null));};exports[_0x916f('0x71')]=function(_0x35ab4a,_0x204a6b,_0x1d7ce9){var _0x7eb8fe={};var _0x35d7c2={};var _0x48dfbd;var _0x56306e;return db[_0x916f('0x43')]['findOne']({'where':{'id':_0x35ab4a['params']['id']}})['then'](handleEntityNotFound(_0x204a6b,null))[_0x916f('0x25')](function(_0x25f95a){if(_0x25f95a){_0x48dfbd=_0x25f95a;_0x35d7c2['model']=_[_0x916f('0x2d')](db[_0x916f('0x65')][_0x916f('0x2b')]);_0x35d7c2[_0x916f('0x30')]=_['keys'](_0x35ab4a[_0x916f('0x30')]);_0x35d7c2['filters']=_['intersection'](_0x35d7c2[_0x916f('0x2c')],_0x35d7c2[_0x916f('0x30')]);_0x7eb8fe['attributes']=_['intersection'](_0x35d7c2[_0x916f('0x2c')],qs['fields'](_0x35ab4a[_0x916f('0x30')][_0x916f('0x34')]));_0x7eb8fe['attributes']=_0x7eb8fe[_0x916f('0x33')][_0x916f('0x35')]?_0x7eb8fe[_0x916f('0x33')]:_0x35d7c2[_0x916f('0x2c')];_0x7eb8fe[_0x916f('0x72')]=qs['sort'](_0x35ab4a[_0x916f('0x30')][_0x916f('0x39')]);_0x7eb8fe[_0x916f('0x3a')]=qs[_0x916f('0x31')](_[_0x916f('0x73')](_0x35ab4a[_0x916f('0x30')],_0x35d7c2['filters']));if(_0x35ab4a[_0x916f('0x30')][_0x916f('0x3e')]){_0x7eb8fe['where']=_['merge'](_0x7eb8fe[_0x916f('0x3a')],{'$or':_[_0x916f('0x74')](_0x7eb8fe[_0x916f('0x33')],function(_0x348e62){var _0xa1b958={};_0xa1b958[_0x348e62]={'$like':'%'+_0x35ab4a[_0x916f('0x30')]['filter']+'%'};return _0xa1b958;})});}_0x7eb8fe=_[_0x916f('0x3d')]({},_0x7eb8fe,_0x35ab4a[_0x916f('0x42')]);return _0x48dfbd[_0x916f('0x71')](_0x7eb8fe);}})[_0x916f('0x25')](function(_0x28e609){if(_0x28e609){_0x56306e=_0x28e609[_0x916f('0x35')];if(!_0x35ab4a[_0x916f('0x30')][_0x916f('0x36')](_0x916f('0x37'))){_0x7eb8fe['limit']=qs[_0x916f('0x38')](_0x35ab4a[_0x916f('0x30')][_0x916f('0x38')]);_0x7eb8fe['offset']=qs[_0x916f('0x1b')](_0x35ab4a['query'][_0x916f('0x1b')]);}return _0x48dfbd['getSounds'](_0x7eb8fe);}})['then'](function(_0xf714ef){if(_0xf714ef){return _0xf714ef?{'count':_0x56306e,'rows':_0xf714ef}:null;}})[_0x916f('0x25')](respondWithResult(_0x204a6b,null))[_0x916f('0x4c')](handleError(_0x204a6b,null));};
\ No newline at end of file
index 64aaf96..097bbee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6490=['voice_musiconhold','lodash','util','moment','bluebird','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold'];(function(_0x1785a2,_0x15d901){var _0x58380c=function(_0x2739e8){while(--_0x2739e8){_0x1785a2['push'](_0x1785a2['shift']());}};_0x58380c(++_0x15d901);}(_0x6490,0x169));var _0x0649=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0x6490[_0x42f009];return _0x22a1e0;};'use strict';var _=require(_0x0649('0x0'));var util=require(_0x0649('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0649('0x2'));var BPromise=require(_0x0649('0x3'));var rp=require('request-promise');var attributes=require(_0x0649('0x4'));module[_0x0649('0x5')]=function(_0x4890ff,_0x3d31da){return _0x4890ff[_0x0649('0x6')](_0x0649('0x7'),attributes,{'tableName':_0x0649('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6700=['util','../../config/logger','api','bluebird','request-promise','./voiceMusicOnHold.attributes','exports','VoiceMusicOnHold','voice_musiconhold','lodash'];(function(_0x20b626,_0x699183){var _0x11e715=function(_0x2e170c){while(--_0x2e170c){_0x20b626['push'](_0x20b626['shift']());}};_0x11e715(++_0x699183);}(_0x6700,0xb3));var _0x0670=function(_0x58b671,_0x387471){_0x58b671=_0x58b671-0x0;var _0x4157be=_0x6700[_0x58b671];return _0x4157be;};'use strict';var _=require(_0x0670('0x0'));var util=require(_0x0670('0x1'));var logger=require(_0x0670('0x2'))(_0x0670('0x3'));var moment=require('moment');var BPromise=require(_0x0670('0x4'));var rp=require(_0x0670('0x5'));var attributes=require(_0x0670('0x6'));module[_0x0670('0x7')]=function(_0x7436b1,_0x1760bc){return _0x7436b1['define'](_0x0670('0x8'),attributes,{'tableName':_0x0670('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3dd62ab..7039f10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51d3=['info','VoiceMusicOnHold,\x20%s,\x20%s','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request'];(function(_0x3adcfe,_0x601e78){var _0x2165c3=function(_0x3800c9){while(--_0x3800c9){_0x3adcfe['push'](_0x3adcfe['shift']());}};_0x2165c3(++_0x601e78);}(_0x51d3,0xa9));var _0x351d=function(_0x8834e9,_0x17036e){_0x8834e9=_0x8834e9-0x0;var _0x33fb98=_0x51d3[_0x8834e9];return _0x33fb98;};'use strict';var _=require(_0x351d('0x0'));var util=require(_0x351d('0x1'));var moment=require(_0x351d('0x2'));var BPromise=require(_0x351d('0x3'));var rs=require(_0x351d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x351d('0x5'))['db'];var utils=require(_0x351d('0x6'));var logger=require('../../config/logger')(_0x351d('0x7'));var config=require(_0x351d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x351d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x20ec34,_0x4289ac,_0x1a468b){return new BPromise(function(_0xb89ff6,_0x3a82c4){return client[_0x351d('0xa')](_0x20ec34,_0x1a468b)['then'](function(_0x425a7e){logger[_0x351d('0xb')](_0x351d('0xc'),_0x4289ac,'request\x20sent');logger[_0x351d('0xd')](_0x351d('0xe'),_0x4289ac,'request\x20sent',JSON[_0x351d('0xf')](_0x425a7e));if(_0x425a7e[_0x351d('0x10')]){if(_0x425a7e[_0x351d('0x10')][_0x351d('0x11')]===0x1f4){logger[_0x351d('0x10')](_0x351d('0xc'),_0x4289ac,_0x425a7e['error'][_0x351d('0x12')]);return _0x3a82c4(_0x425a7e[_0x351d('0x10')][_0x351d('0x12')]);}logger[_0x351d('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x4289ac,_0x425a7e[_0x351d('0x10')][_0x351d('0x12')]);return _0xb89ff6(_0x425a7e['error']['message']);}else{logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x4289ac,_0x351d('0x13'));_0xb89ff6(_0x425a7e['result'][_0x351d('0x12')]);}})['catch'](function(_0x20eb4c){logger['error'](_0x351d('0xc'),_0x4289ac,_0x20eb4c);_0x3a82c4(_0x20eb4c);});});}
\ No newline at end of file
+var _0x0582=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','bluebird','randomstring'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0582,0x150));var _0x2058=function(_0x57781a,_0x24cff3){_0x57781a=_0x57781a-0x0;var _0x20cf93=_0x0582[_0x57781a];return _0x20cf93;};'use strict';var _=require('lodash');var util=require(_0x2058('0x0'));var moment=require(_0x2058('0x1'));var BPromise=require(_0x2058('0x2'));var rs=require(_0x2058('0x3'));var fs=require('fs');var Redis=require(_0x2058('0x4'));var db=require(_0x2058('0x5'))['db'];var utils=require(_0x2058('0x6'));var logger=require(_0x2058('0x7'))(_0x2058('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2058('0x9')][_0x2058('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x37980d,_0x3121c5,_0x105b0f){return new BPromise(function(_0x1481ce,_0x5e62b4){return client['request'](_0x37980d,_0x105b0f)['then'](function(_0x4bff13){logger[_0x2058('0xb')](_0x2058('0xc'),_0x3121c5,_0x2058('0xd'));logger[_0x2058('0xe')](_0x2058('0xf'),_0x3121c5,_0x2058('0xd'),JSON[_0x2058('0x10')](_0x4bff13));if(_0x4bff13[_0x2058('0x11')]){if(_0x4bff13[_0x2058('0x11')]['code']===0x1f4){logger['error'](_0x2058('0xc'),_0x3121c5,_0x4bff13['error'][_0x2058('0x12')]);return _0x5e62b4(_0x4bff13[_0x2058('0x11')][_0x2058('0x12')]);}logger[_0x2058('0x11')](_0x2058('0xc'),_0x3121c5,_0x4bff13[_0x2058('0x11')]['message']);return _0x1481ce(_0x4bff13['error'][_0x2058('0x12')]);}else{logger[_0x2058('0xb')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3121c5,_0x2058('0xd'));_0x1481ce(_0x4bff13[_0x2058('0x13')]['message']);}})['catch'](function(_0x5ba6dc){logger['error'](_0x2058('0xc'),_0x3121c5,_0x5ba6dc);_0x5e62b4(_0x5ba6dc);});});}
\ No newline at end of file
index b6fcf66..92ae3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9624=['create','/:id/users','addAgents','put','/:id','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','getAgents','post'];(function(_0xdc10fc,_0x16c6f1){var _0x10b876=function(_0x52e362){while(--_0x52e362){_0xdc10fc['push'](_0xdc10fc['shift']());}};_0x10b876(++_0x16c6f1);}(_0x9624,0xc0));var _0x4962=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9624[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4962('0x0'));var util=require(_0x4962('0x1'));var path=require(_0x4962('0x2'));var timeout=require(_0x4962('0x3'));var express=require(_0x4962('0x4'));var router=express['Router']();var auth=require(_0x4962('0x5'));var interaction=require(_0x4962('0x6'));var config=require(_0x4962('0x7'));var controller=require('./voicePrefix.controller');router[_0x4962('0x8')]('/',auth[_0x4962('0x9')](),controller[_0x4962('0xa')]);router[_0x4962('0x8')](_0x4962('0xb'),auth[_0x4962('0x9')](),controller[_0x4962('0xc')]);router[_0x4962('0x8')]('/:id',auth[_0x4962('0x9')](),controller[_0x4962('0xd')]);router[_0x4962('0x8')]('/:id/users',auth['isAuthenticated'](),controller[_0x4962('0xe')]);router[_0x4962('0xf')]('/',auth[_0x4962('0x9')](),controller[_0x4962('0x10')]);router[_0x4962('0xf')](_0x4962('0x11'),auth[_0x4962('0x9')](),controller[_0x4962('0x12')]);router[_0x4962('0x13')](_0x4962('0x14'),auth[_0x4962('0x9')](),controller[_0x4962('0x15')]);router[_0x4962('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x4962('0x17')]);router[_0x4962('0x16')]('/:id/users',auth[_0x4962('0x9')](),controller[_0x4962('0x18')]);module[_0x4962('0x19')]=router;
\ No newline at end of file
+var _0xd01f=['post','create','addAgents','put','update','delete','removeAgents','exports','multer','path','express','Router','../../components/interaction/service','./voicePrefix.controller','get','isAuthenticated','/describe','/:id','show','/:id/users','getAgents'];(function(_0x57ce26,_0x34b0c4){var _0x59df84=function(_0x411d4e){while(--_0x411d4e){_0x57ce26['push'](_0x57ce26['shift']());}};_0x59df84(++_0x34b0c4);}(_0xd01f,0x1d6));var _0xfd01=function(_0x3289bc,_0x2b86bc){_0x3289bc=_0x3289bc-0x0;var _0xeabd30=_0xd01f[_0x3289bc];return _0xeabd30;};'use strict';var multer=require(_0xfd01('0x0'));var util=require('util');var path=require(_0xfd01('0x1'));var timeout=require('connect-timeout');var express=require(_0xfd01('0x2'));var router=express[_0xfd01('0x3')]();var auth=require('../../components/auth/service');var interaction=require(_0xfd01('0x4'));var config=require('../../config/environment');var controller=require(_0xfd01('0x5'));router[_0xfd01('0x6')]('/',auth[_0xfd01('0x7')](),controller['index']);router[_0xfd01('0x6')](_0xfd01('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0xfd01('0x6')](_0xfd01('0x9'),auth[_0xfd01('0x7')](),controller[_0xfd01('0xa')]);router[_0xfd01('0x6')](_0xfd01('0xb'),auth[_0xfd01('0x7')](),controller[_0xfd01('0xc')]);router[_0xfd01('0xd')]('/',auth[_0xfd01('0x7')](),controller[_0xfd01('0xe')]);router[_0xfd01('0xd')]('/:id/users',auth[_0xfd01('0x7')](),controller[_0xfd01('0xf')]);router[_0xfd01('0x10')](_0xfd01('0x9'),auth[_0xfd01('0x7')](),controller[_0xfd01('0x11')]);router[_0xfd01('0x12')](_0xfd01('0x9'),auth[_0xfd01('0x7')](),controller['destroy']);router['delete'](_0xfd01('0xb'),auth[_0xfd01('0x7')](),controller[_0xfd01('0x13')]);module[_0xfd01('0x14')]=router;
\ No newline at end of file
index 42a011c..3594203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4238=['sequelize','exports','name','VIRTUAL','system-','STRING','INTEGER'];(function(_0xde8111,_0x15702c){var _0x29af0b=function(_0x3d7873){while(--_0x3d7873){_0xde8111['push'](_0xde8111['shift']());}};_0x29af0b(++_0x15702c);}(_0x4238,0x1b2));var _0x8423=function(_0x65d12e,_0x4b0a30){_0x65d12e=_0x65d12e-0x0;var _0x4274e0=_0x4238[_0x65d12e];return _0x4274e0;};'use strict';var Sequelize=require(_0x8423('0x0'));module[_0x8423('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8423('0x2')},'prefix':{'type':Sequelize[_0x8423('0x3')],'get':function(_0x2544ce){return _0x8423('0x4')+this['getDataValue'](_0x8423('0x2'))+'-';}},'description':{'type':Sequelize[_0x8423('0x5')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x8423('0x6')]}};
\ No newline at end of file
+var _0xa757=['exports','name','VIRTUAL','system-','getDataValue','STRING','sequelize'];(function(_0x549ed1,_0x1ebfba){var _0x4bbc07=function(_0x43f8c2){while(--_0x43f8c2){_0x549ed1['push'](_0x549ed1['shift']());}};_0x4bbc07(++_0x1ebfba);}(_0xa757,0x179));var _0x7a75=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xa757[_0x18ab2a];return _0x16dcee;};'use strict';var Sequelize=require(_0x7a75('0x0'));module[_0x7a75('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x7a75('0x2')},'prefix':{'type':Sequelize[_0x7a75('0x3')],'get':function(_0xa024c){return _0x7a75('0x4')+this[_0x7a75('0x5')](_0x7a75('0x2'))+'-';}},'description':{'type':Sequelize[_0x7a75('0x6')]},'callerIdAll':{'type':Sequelize[_0x7a75('0x6')]},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 9ade26d..4236b2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['name','send','index','VoicePrefix','rawAttributes','model','keys','dateStart','query','dateEnd','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','day','add','merge','filter','type','key','VIRTUAL','field','options','count','includeAll','include','findAll','rows','catch','show','params','length','find','describe','transaction','create','body','get','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','system','description','priority','prefix','NoOp','Voice\x20Prefix','map','VoiceExtensionId','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','callerIdAll','Set','PREFIX-CALLERIDALL=','push','No\x20callerid\x20available','goto','${EXTEN:','charAt','update','system-','sequelize','VoiceExtension','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','getAgents','findOne','User','pick','html-pdf','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','localhost','socket.io-emitter','redis','./voicePrefix.socket','register','sendStatus','end','status','offset','limit','set','Content-Range','reject','save','then','VoicePrefixes','UserProfileResource','destroy','error','stack'];(function(_0x5619b1,_0x3dddfb){var _0x4abcc3=function(_0x468d0e){while(--_0x468d0e){_0x5619b1['push'](_0x5619b1['shift']());}};_0x4abcc3(++_0x3dddfb);}(_0x00bb,0x1d8));var _0xb00b=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x00bb[_0x397e5f];return _0x5302b8;};'use strict';var pdf=require(_0xb00b('0x0'));var emlformat=require(_0xb00b('0x1'));var rimraf=require(_0xb00b('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb00b('0x3'));var rp=require('request-promise');var moment=require(_0xb00b('0x4'));var BPromise=require(_0xb00b('0x5'));var Mustache=require('mustache');var util=require(_0xb00b('0x6'));var path=require(_0xb00b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var qs=require(_0xb00b('0xf'));var logger=require(_0xb00b('0x10'))(_0xb00b('0x11'));var utils=require(_0xb00b('0x12'));var config=require('../../config/environment');var db=require(_0xb00b('0x13'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xb00b('0x14'),'port':0x18eb});var socket=require(_0xb00b('0x15'))(new Redis(config[_0xb00b('0x16')]));require(_0xb00b('0x17'))[_0xb00b('0x18')](socket);function respondWithStatusCode(_0x1f1c1d,_0x4ada81){_0x4ada81=_0x4ada81||0xcc;return function(_0x218de2){if(_0x218de2){return _0x1f1c1d[_0xb00b('0x19')](_0x4ada81);}return _0x1f1c1d['status'](_0x4ada81)[_0xb00b('0x1a')]();};}function respondWithResult(_0x1084a6,_0x540b79){_0x540b79=_0x540b79||0xc8;return function(_0x5da36b){if(_0x5da36b){return _0x1084a6[_0xb00b('0x1b')](_0x540b79)['json'](_0x5da36b);}};}function respondWithFilteredResult(_0x51d136,_0x1f9c78){return function(_0x638443){if(_0x638443){var _0x387d97=_0x638443['count'],_0xbb72fc=_0x1f9c78[_0xb00b('0x1c')],_0x58d65f=_0x1f9c78['offset']+_0x1f9c78[_0xb00b('0x1d')],_0x2a7231;if(_0x58d65f>=_0x387d97){_0x58d65f=_0x387d97;_0x2a7231=0xc8;}else{_0x2a7231=0xce;}_0x51d136['status'](_0x2a7231);return _0x51d136[_0xb00b('0x1e')](_0xb00b('0x1f'),_0xbb72fc+'-'+_0x58d65f+'/'+_0x387d97)['json'](_0x638443);}return null;};}function patchUpdates(_0x55770c){return function(_0x2b0da1){try{jsonpatch['apply'](_0x2b0da1,_0x55770c,!![]);}catch(_0x1344c4){return BPromise[_0xb00b('0x20')](_0x1344c4);}return _0x2b0da1[_0xb00b('0x21')]();};}function saveUpdates(_0x3501af,_0x56c189){return function(_0x362ee0){if(_0x362ee0){return _0x362ee0['update'](_0x3501af)[_0xb00b('0x22')](function(_0x121ec7){return _0x121ec7;});}return null;};}function removeEntity(_0x51b841,_0x231293){return function(_0x2896d1){if(_0x2896d1){return _0x2896d1['destroy']()[_0xb00b('0x22')](function(){var _0x1f04d3=_0x2896d1['get']({'plain':!![]});var _0x44efe5=_0xb00b('0x23');return db[_0xb00b('0x24')][_0xb00b('0x25')]({'where':{'type':_0x44efe5,'resourceId':_0x1f04d3['id']}})['then'](function(){return _0x2896d1;});})['then'](function(){_0x51b841[_0xb00b('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x550587,_0x4a635e){return function(_0x16ac55){if(!_0x16ac55){_0x550587[_0xb00b('0x19')](0x194);}return _0x16ac55;};}function handleError(_0x2592cf,_0x3825af){_0x3825af=_0x3825af||0x1f4;return function(_0x1f14fa){logger[_0xb00b('0x26')](_0x1f14fa[_0xb00b('0x27')]);if(_0x1f14fa['name']){delete _0x1f14fa[_0xb00b('0x28')];}_0x2592cf['status'](_0x3825af)[_0xb00b('0x29')](_0x1f14fa);};}exports[_0xb00b('0x2a')]=function(_0x5424ca,_0x5b987e){var _0x2fc11a={},_0x280ed3={},_0x16fbd5={'count':0x0,'rows':[]};var _0x183233=db[_0xb00b('0x2b')][_0xb00b('0x2c')];_0x280ed3[_0xb00b('0x2d')]=_[_0xb00b('0x2e')](_0x183233);var _0x149c1a={'dateStart':_0x5424ca['query'][_0xb00b('0x2f')],'dateEnd':_0x5424ca[_0xb00b('0x30')]['dateEnd']};delete _0x5424ca[_0xb00b('0x30')][_0xb00b('0x2f')];delete _0x5424ca['query'][_0xb00b('0x31')];_0x280ed3['query']=_[_0xb00b('0x2e')](_0x5424ca[_0xb00b('0x30')]);_0x280ed3[_0xb00b('0x32')]=_[_0xb00b('0x33')](_0x280ed3[_0xb00b('0x2d')],_0x280ed3[_0xb00b('0x30')]);_0x2fc11a[_0xb00b('0x34')]=_['intersection'](_0x280ed3['model'],qs['fields'](_0x5424ca[_0xb00b('0x30')][_0xb00b('0x35')]));_0x2fc11a[_0xb00b('0x34')]=_0x2fc11a[_0xb00b('0x34')]['length']?_0x2fc11a[_0xb00b('0x34')]:_0x280ed3[_0xb00b('0x2d')];if(!_0x5424ca[_0xb00b('0x30')][_0xb00b('0x36')](_0xb00b('0x37'))){_0x2fc11a[_0xb00b('0x1d')]=qs[_0xb00b('0x1d')](_0x5424ca[_0xb00b('0x30')]['limit']);_0x2fc11a['offset']=qs[_0xb00b('0x1c')](_0x5424ca['query'][_0xb00b('0x1c')]);}_0x2fc11a[_0xb00b('0x38')]=qs[_0xb00b('0x39')](_0x5424ca[_0xb00b('0x30')][_0xb00b('0x39')]);_0x2fc11a[_0xb00b('0x3a')]=qs[_0xb00b('0x32')](_['pick'](_0x5424ca[_0xb00b('0x30')],_0x280ed3[_0xb00b('0x32')]));if(_0x149c1a[_0xb00b('0x2f')]){if(_0x149c1a[_0xb00b('0x31')]){_0x149c1a[_0xb00b('0x31')]=moment(_0x149c1a[_0xb00b('0x31')])['add'](0x1,_0xb00b('0x3b'));}else{_0x149c1a[_0xb00b('0x31')]=moment(_0x149c1a['dateStart'])[_0xb00b('0x3c')](0x1,_0xb00b('0x3b'));}_[_0xb00b('0x3d')](_0x2fc11a[_0xb00b('0x3a')],{'createdAt':{'$gte':_0x149c1a[_0xb00b('0x2f')],'$lte':_0x149c1a['dateEnd']}});}if(_0x5424ca[_0xb00b('0x30')][_0xb00b('0x3e')]){_0x2fc11a[_0xb00b('0x3a')]=_[_0xb00b('0x3d')](_0x2fc11a['where'],{'$or':_['map'](_0x183233,function(_0x43f834){if(_0x43f834[_0xb00b('0x3f')][_0xb00b('0x40')]!==_0xb00b('0x41')){var _0x19a0d0={};_0x19a0d0[_0x43f834[_0xb00b('0x42')]]={'$like':'%'+_0x5424ca[_0xb00b('0x30')]['filter']+'%'};return _0x19a0d0;}})});}_0x2fc11a=_[_0xb00b('0x3d')]({},_0x2fc11a,_0x5424ca[_0xb00b('0x43')]);var _0x27ffc6={'where':_0x2fc11a[_0xb00b('0x3a')]};return db[_0xb00b('0x2b')][_0xb00b('0x44')](_0x27ffc6)[_0xb00b('0x22')](function(_0x974a29){_0x16fbd5[_0xb00b('0x44')]=_0x974a29;if(_0x5424ca[_0xb00b('0x30')][_0xb00b('0x45')]){_0x2fc11a[_0xb00b('0x46')]=[{'all':!![]}];}return db['VoicePrefix'][_0xb00b('0x47')](_0x2fc11a);})[_0xb00b('0x22')](function(_0xd07fb8){_0x16fbd5[_0xb00b('0x48')]=_0xd07fb8;return _0x16fbd5;})[_0xb00b('0x22')](respondWithFilteredResult(_0x5b987e,_0x2fc11a))[_0xb00b('0x49')](handleError(_0x5b987e,null));};exports[_0xb00b('0x4a')]=function(_0x1b4f09,_0x10ba60){var _0x103320={'raw':![],'where':{'id':_0x1b4f09[_0xb00b('0x4b')]['id']}},_0x1eec12={};_0x1eec12['model']=_['keys'](db['VoicePrefix'][_0xb00b('0x2c')]);_0x1eec12[_0xb00b('0x30')]=_['keys'](_0x1b4f09[_0xb00b('0x30')]);_0x1eec12[_0xb00b('0x32')]=_[_0xb00b('0x33')](_0x1eec12[_0xb00b('0x2d')],_0x1eec12['query']);_0x103320['attributes']=_[_0xb00b('0x33')](_0x1eec12[_0xb00b('0x2d')],qs['fields'](_0x1b4f09['query'][_0xb00b('0x35')]));_0x103320[_0xb00b('0x34')]=_0x103320['attributes'][_0xb00b('0x4c')]?_0x103320['attributes']:_0x1eec12['model'];if(_0x1b4f09['query'][_0xb00b('0x45')]){_0x103320['include']=[{'all':!![]}];}_0x103320=_[_0xb00b('0x3d')]({},_0x103320,_0x1b4f09[_0xb00b('0x43')]);return db[_0xb00b('0x2b')][_0xb00b('0x4d')](_0x103320)[_0xb00b('0x22')](handleEntityNotFound(_0x10ba60,null))[_0xb00b('0x22')](respondWithResult(_0x10ba60,null))['catch'](handleError(_0x10ba60,null));};exports['destroy']=function(_0x1d2a0d,_0x161da9){return db['VoicePrefix'][_0xb00b('0x4d')]({'where':{'id':_0x1d2a0d[_0xb00b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x161da9,null))[_0xb00b('0x22')](removeEntity(_0x161da9,null))[_0xb00b('0x49')](handleError(_0x161da9,null));};exports[_0xb00b('0x4e')]=function(_0x498f95,_0x501cbe){return db[_0xb00b('0x2b')][_0xb00b('0x4e')]()[_0xb00b('0x22')](respondWithResult(_0x501cbe,null))[_0xb00b('0x49')](handleError(_0x501cbe,null));};exports['create']=function(_0x380acb,_0x3f31e5){var _0x4ad9cb;return db['sequelize'][_0xb00b('0x4f')](function(_0x524b05){return db[_0xb00b('0x2b')][_0xb00b('0x50')](_0x380acb[_0xb00b('0x51')],{'transaction':_0x524b05})[_0xb00b('0x22')](function(_0x450ce7){_0x4ad9cb=_0x450ce7[_0xb00b('0x52')]({'plain':!![]});return db['VoiceExtension'][_0xb00b('0x4d')]({'where':{'id':_0x4ad9cb['VoiceExtensionId']},'raw':!![]})[_0xb00b('0x22')](function(_0x98caa9){return createVoicePrefixExtensions(_0x4ad9cb,_0x98caa9,_0x524b05);});});})[_0xb00b('0x22')](function(){var _0x5ac79e=_0x380acb[_0xb00b('0x53')][_0xb00b('0x52')]({'plain':!![]});if(!_0x5ac79e)throw new Error(_0xb00b('0x54'));if(_0x5ac79e['role']===_0xb00b('0x53')){var _0x309ae6=_0x4ad9cb;return db[_0xb00b('0x55')][_0xb00b('0x4d')]({'where':{'name':_0xb00b('0x23'),'userProfileId':_0x5ac79e[_0xb00b('0x56')]},'raw':!![]})[_0xb00b('0x22')](function(_0x3a0b90){if(_0x3a0b90&&_0x3a0b90['autoAssociation']===0x0){return db[_0xb00b('0x24')][_0xb00b('0x50')]({'name':_0x309ae6[_0xb00b('0x28')],'resourceId':_0x309ae6['id'],'type':_0x3a0b90['name'],'sectionId':_0x3a0b90['id']},{})[_0xb00b('0x22')](function(){return _0x4ad9cb;});}else{return _0x4ad9cb;}})[_0xb00b('0x49')](function(_0x309799){logger[_0xb00b('0x26')](_0xb00b('0x57'),_0x309799);throw _0x309799;});}return _0x4ad9cb;})['then'](respondWithResult(_0x3f31e5,null))[_0xb00b('0x49')](handleError(_0x3f31e5,null));};function Extension(_0x343214,_0x2e3c56,_0x1cad79,_0x4b1e5f){this[_0xb00b('0x58')]=_0xb00b('0x59');this[_0xb00b('0x5a')]=_0x343214;this[_0xb00b('0x5b')]=_0x1cad79;this[_0xb00b('0x3f')]=_0xb00b('0x5c');this[_0xb00b('0x5d')]='Voice\x20Prefix\x20Extension';this[_0xb00b('0x5e')]=_0x2e3c56;this['appdata']=_0x4b1e5f;}function createVoicePrefixExtensions(_0x3e0648,_0x4c2186,_0x3b3272){return new BPromise(function(_0x530d4a,_0xe2d5ca){var _0x4abc51=new Extension(formatPrefixName(_0x3e0648[_0xb00b('0x5f')]),0x1,_0xb00b('0x60'),_0xb00b('0x61'));_0x4abc51['VoicePrefixId']=_0x3e0648['id'];return db['VoiceExtension']['create'](_0x4abc51,{'transaction':_0x3b3272})[_0xb00b('0x22')](function(_0x3126be){var _0x1d06ca=_0x3126be['get']({'plain':!![]});var _0x311f49=_[_0xb00b('0x62')](addVoicePrefixExtensions(_0x3e0648,_0x4c2186),function(_0xca87d4){_0xca87d4[_0xb00b('0x63')]=_0x1d06ca['id'];_0xca87d4[_0xb00b('0x64')]=_0x3e0648['id'];return _0xca87d4;});return db['VoiceExtension'][_0xb00b('0x65')](_0x311f49,{'transaction':_0x3b3272})[_0xb00b('0x22')](function(_0x5622a4){if(!_0x5622a4){return _0xe2d5ca(_0xb00b('0x66'));}else{return _0x530d4a(_0x5622a4);}})[_0xb00b('0x49')](function(_0xa6951f){return _0xe2d5ca(_0xa6951f);});});;});};function addVoicePrefixExtensions(_0x55abaa,_0x4e8b85){var _0x359669=[];var _0x188da7=formatPrefixName(_0x55abaa[_0xb00b('0x5f')]);_0x359669['push'](new Extension(_0x188da7,0x2,'Set','CDR(prefix)='+_0x55abaa['name']));if(_0x55abaa[_0xb00b('0x67')]){_0x359669['push'](new Extension(_0x188da7,0x3,_0xb00b('0x68'),_0xb00b('0x69')+_0x55abaa['callerIdAll']));}else{_0x359669[_0xb00b('0x6a')](new Extension(_0x188da7,0x3,_0xb00b('0x60'),_0xb00b('0x6b')));}_0x359669[_0xb00b('0x6a')](new Extension(_0x188da7,0x4,_0xb00b('0x6c'),_0x4e8b85['context']+','+_0xb00b('0x6d')+(0x8+_0x55abaa[_0xb00b('0x28')][_0xb00b('0x4c')])+'}'+','+0x1));return _0x359669;}function formatPrefixName(_0x15dcc3){var _0x8e7e4e='_';for(var _0x404fbd=0x0;_0x404fbd<_0x15dcc3[_0xb00b('0x4c')];_0x404fbd++){if(_0x15dcc3['charAt'](_0x404fbd)=='-'){_0x8e7e4e+=_0x15dcc3[_0xb00b('0x6e')](_0x404fbd);}else{_0x8e7e4e+='['+_0x15dcc3[_0xb00b('0x6e')](_0x404fbd)+']';}}_0x8e7e4e+='.';return _0x8e7e4e;}exports[_0xb00b('0x6f')]=function(_0x328f72,_0x109f56,_0x432b68){var _0x3f010a=_0x328f72[_0xb00b('0x51')];_0x3f010a['prefix']=_0xb00b('0x70')+_0x3f010a[_0xb00b('0x28')]+'-';return db[_0xb00b('0x71')][_0xb00b('0x4f')](function(_0x3d6b33){return db[_0xb00b('0x2b')][_0xb00b('0x6f')](_0x3f010a,{'where':{'id':_0x3f010a['id']},'transaction':_0x3d6b33})[_0xb00b('0x22')](function(){return db['VoiceExtension'][_0xb00b('0x25')]({'where':{'VoicePrefixId':_0x3f010a['id']},'transaction':_0x3d6b33})[_0xb00b('0x22')](function(){return db[_0xb00b('0x72')][_0xb00b('0x4d')]({'where':{'id':_0x3f010a[_0xb00b('0x63')]},'raw':!![]})[_0xb00b('0x22')](function(_0x26461a){return createVoicePrefixExtensions(_0x3f010a,_0x26461a,_0x3d6b33);});});});})['then'](function(){return db[_0xb00b('0x2b')][_0xb00b('0x73')](_0x3f010a['id']);})[_0xb00b('0x22')](respondWithResult(_0x109f56,null))[_0xb00b('0x49')](handleError(_0x109f56,null));};exports[_0xb00b('0x74')]=function(_0x14ccaf,_0x4930f3,_0x39bb6c){return db['VoicePrefix'][_0xb00b('0x4d')]({'where':{'id':_0x14ccaf['params']['id']}})[_0xb00b('0x22')](handleEntityNotFound(_0x4930f3,null))[_0xb00b('0x22')](function(_0x20e844){if(_0x20e844){return _0x20e844['addAgents'](_0x14ccaf['body'][_0xb00b('0x75')],_[_0xb00b('0x76')](_0x14ccaf[_0xb00b('0x51')],[_0xb00b('0x75'),'id'])||{})[_0xb00b('0x77')](function(_0x13e875){for(var _0x53130e=0x0;_0x53130e<_0x14ccaf[_0xb00b('0x51')][_0xb00b('0x75')][_0xb00b('0x4c')];_0x53130e+=0x1){socket[_0xb00b('0x78')](_0xb00b('0x79'),{'UserId':_0x14ccaf[_0xb00b('0x51')][_0xb00b('0x75')][_0x53130e],'VoicePrefixId':_0x14ccaf['params']['id']});}return _0x13e875;});}})['then'](respondWithResult(_0x4930f3,null))[_0xb00b('0x49')](handleError(_0x4930f3,null));};exports[_0xb00b('0x7a')]=function(_0x5dc5fc,_0x55de04,_0x13df84){var _0x391e98;return db[_0xb00b('0x2b')]['find']({'where':{'id':_0x5dc5fc[_0xb00b('0x4b')]['id']}})[_0xb00b('0x22')](handleEntityNotFound(_0x55de04,null))[_0xb00b('0x22')](function(_0x45c9cd){if(_0x45c9cd){return _0x45c9cd[_0xb00b('0x7a')](_0x5dc5fc[_0xb00b('0x30')][_0xb00b('0x75')])['then'](function(_0x4168cf){if(_['isArray'](_0x5dc5fc[_0xb00b('0x30')][_0xb00b('0x75')])){for(var _0x545dfd=0x0;_0x545dfd<_0x5dc5fc[_0xb00b('0x30')][_0xb00b('0x75')][_0xb00b('0x4c')];_0x545dfd+=0x1){socket[_0xb00b('0x78')](_0xb00b('0x7b'),{'UserId':_0x5dc5fc[_0xb00b('0x30')][_0xb00b('0x75')][_0x545dfd],'VoicePrefixId':_0x5dc5fc[_0xb00b('0x4b')]['id']});}}else{socket[_0xb00b('0x78')](_0xb00b('0x7b'),{'UserId':_0x5dc5fc[_0xb00b('0x30')][_0xb00b('0x75')],'VoicePrefixId':_0x5dc5fc['params']['id']});}});}})[_0xb00b('0x22')](respondWithStatusCode(_0x55de04,null))[_0xb00b('0x49')](handleError(_0x55de04,null));};exports[_0xb00b('0x7c')]=function(_0x1990f9,_0x4c5b70,_0x32b591){var _0x17503d={};var _0x32508b={};var _0x109deb;var _0x21471a;return db['VoicePrefix'][_0xb00b('0x7d')]({'where':{'id':_0x1990f9[_0xb00b('0x4b')]['id']}})[_0xb00b('0x22')](handleEntityNotFound(_0x4c5b70,null))[_0xb00b('0x22')](function(_0x4fb982){if(_0x4fb982){_0x109deb=_0x4fb982;_0x32508b[_0xb00b('0x2d')]=_['keys'](db[_0xb00b('0x7e')][_0xb00b('0x2c')]);_0x32508b[_0xb00b('0x30')]=_[_0xb00b('0x2e')](_0x1990f9[_0xb00b('0x30')]);_0x32508b[_0xb00b('0x32')]=_[_0xb00b('0x33')](_0x32508b[_0xb00b('0x2d')],_0x32508b[_0xb00b('0x30')]);_0x17503d[_0xb00b('0x34')]=_[_0xb00b('0x33')](_0x32508b['model'],qs[_0xb00b('0x35')](_0x1990f9[_0xb00b('0x30')][_0xb00b('0x35')]));_0x17503d[_0xb00b('0x34')]=_0x17503d['attributes'][_0xb00b('0x4c')]?_0x17503d[_0xb00b('0x34')]:_0x32508b['model'];_0x17503d[_0xb00b('0x38')]=qs['sort'](_0x1990f9[_0xb00b('0x30')][_0xb00b('0x39')]);_0x17503d[_0xb00b('0x3a')]=qs['filters'](_[_0xb00b('0x7f')](_0x1990f9[_0xb00b('0x30')],_0x32508b[_0xb00b('0x32')]));if(_0x1990f9[_0xb00b('0x30')][_0xb00b('0x3e')]){_0x17503d[_0xb00b('0x3a')]=_[_0xb00b('0x3d')](_0x17503d[_0xb00b('0x3a')],{'$or':_[_0xb00b('0x62')](_0x17503d['attributes'],function(_0x5914c9){var _0x466ddb={};_0x466ddb[_0x5914c9]={'$like':'%'+_0x1990f9[_0xb00b('0x30')][_0xb00b('0x3e')]+'%'};return _0x466ddb;})});}_0x17503d=_[_0xb00b('0x3d')]({},_0x17503d,_0x1990f9['options']);return _0x109deb[_0xb00b('0x7c')](_0x17503d);}})[_0xb00b('0x22')](function(_0x5eea96){if(_0x5eea96){_0x21471a=_0x5eea96[_0xb00b('0x4c')];if(!_0x1990f9[_0xb00b('0x30')][_0xb00b('0x36')]('nolimit')){_0x17503d[_0xb00b('0x1d')]=qs[_0xb00b('0x1d')](_0x1990f9['query'][_0xb00b('0x1d')]);_0x17503d[_0xb00b('0x1c')]=qs[_0xb00b('0x1c')](_0x1990f9[_0xb00b('0x30')][_0xb00b('0x1c')]);}return _0x109deb[_0xb00b('0x7c')](_0x17503d);}})[_0xb00b('0x22')](function(_0x183341){if(_0x183341){return _0x183341?{'count':_0x21471a,'rows':_0x183341}:null;}})['then'](respondWithResult(_0x4c5b70,null))[_0xb00b('0x49')](handleError(_0x4c5b70,null));};
\ No newline at end of file
+var _0x3e74=['order','map','getAgents','hasOwnProperty','html-pdf','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','sendStatus','status','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','get','VoicePrefixes','destroy','end','error','stack','name','send','index','VoicePrefix','rawAttributes','model','keys','query','dateStart','dateEnd','attributes','intersection','fields','nolimit','sort','where','filters','pick','add','day','merge','filter','type','VIRTUAL','field','options','show','params','includeAll','include','find','catch','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','exten','app','system','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','Extensions\x20creation\x20failed','push','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','context','${EXTEN:','length','charAt','system-','findById','addAgents','ids','omit','spread','userVoicePrefix:save','removeAgents','emit','userVoicePrefix:remove','findOne','User'];(function(_0x2bc441,_0x3af951){var _0xabf4b7=function(_0x4990f7){while(--_0x4990f7){_0x2bc441['push'](_0x2bc441['shift']());}};_0xabf4b7(++_0x3af951);}(_0x3e74,0x175));var _0x43e7=function(_0x551b60,_0x2cdb3f){_0x551b60=_0x551b60-0x0;var _0x199cdf=_0x3e74[_0x551b60];return _0x199cdf;};'use strict';var pdf=require(_0x43e7('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x43e7('0x1'));var zipdir=require(_0x43e7('0x2'));var jsonpatch=require(_0x43e7('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x43e7('0x4'));var Mustache=require('mustache');var util=require(_0x43e7('0x5'));var path=require(_0x43e7('0x6'));var sox=require(_0x43e7('0x7'));var csv=require(_0x43e7('0x8'));var ejs=require(_0x43e7('0x9'));var fs=require('fs');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('0x8'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x43e7('0xf'))(_0x43e7('0x10'));var utils=require('../../config/utils');var config=require(_0x43e7('0x11'));var db=require('../../mysqldb')['db'];config[_0x43e7('0x12')]=_[_0x43e7('0x13')](config['redis'],{'host':_0x43e7('0x14'),'port':0x18eb});var socket=require(_0x43e7('0x15'))(new Redis(config[_0x43e7('0x12')]));require(_0x43e7('0x16'))['register'](socket);function respondWithStatusCode(_0x583d85,_0x2fcb36){_0x2fcb36=_0x2fcb36||0xcc;return function(_0x21fdd3){if(_0x21fdd3){return _0x583d85[_0x43e7('0x17')](_0x2fcb36);}return _0x583d85['status'](_0x2fcb36)['end']();};}function respondWithResult(_0x16849c,_0x14c146){_0x14c146=_0x14c146||0xc8;return function(_0x203378){if(_0x203378){return _0x16849c[_0x43e7('0x18')](_0x14c146)['json'](_0x203378);}};}function respondWithFilteredResult(_0x5c4eaa,_0xdf16c){return function(_0x264575){if(_0x264575){var _0x273a32=_0x264575[_0x43e7('0x19')],_0x5d346f=_0xdf16c[_0x43e7('0x1a')],_0x4b5a6b=_0xdf16c[_0x43e7('0x1a')]+_0xdf16c[_0x43e7('0x1b')],_0x446986;if(_0x4b5a6b>=_0x273a32){_0x4b5a6b=_0x273a32;_0x446986=0xc8;}else{_0x446986=0xce;}_0x5c4eaa[_0x43e7('0x18')](_0x446986);return _0x5c4eaa[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x5d346f+'-'+_0x4b5a6b+'/'+_0x273a32)[_0x43e7('0x1e')](_0x264575);}return null;};}function patchUpdates(_0xab63cf){return function(_0x191dd5){try{jsonpatch[_0x43e7('0x1f')](_0x191dd5,_0xab63cf,!![]);}catch(_0x4b5d64){return BPromise[_0x43e7('0x20')](_0x4b5d64);}return _0x191dd5[_0x43e7('0x21')]();};}function saveUpdates(_0x4b386b,_0x2898b5){return function(_0x3e281e){if(_0x3e281e){return _0x3e281e[_0x43e7('0x22')](_0x4b386b)[_0x43e7('0x23')](function(_0x4077fb){return _0x4077fb;});}return null;};}function removeEntity(_0x2f4cb4,_0x54a9e7){return function(_0x454359){if(_0x454359){return _0x454359['destroy']()['then'](function(){var _0x47204e=_0x454359[_0x43e7('0x24')]({'plain':!![]});var _0x4b2b9f=_0x43e7('0x25');return db['UserProfileResource'][_0x43e7('0x26')]({'where':{'type':_0x4b2b9f,'resourceId':_0x47204e['id']}})['then'](function(){return _0x454359;});})[_0x43e7('0x23')](function(){_0x2f4cb4[_0x43e7('0x18')](0xcc)[_0x43e7('0x27')]();});}};}function handleEntityNotFound(_0x405f85,_0x51f4d7){return function(_0x52b7b3){if(!_0x52b7b3){_0x405f85[_0x43e7('0x17')](0x194);}return _0x52b7b3;};}function handleError(_0x501551,_0x2dd5f){_0x2dd5f=_0x2dd5f||0x1f4;return function(_0x40dc8f){logger[_0x43e7('0x28')](_0x40dc8f[_0x43e7('0x29')]);if(_0x40dc8f['name']){delete _0x40dc8f[_0x43e7('0x2a')];}_0x501551[_0x43e7('0x18')](_0x2dd5f)[_0x43e7('0x2b')](_0x40dc8f);};}exports[_0x43e7('0x2c')]=function(_0x442c3b,_0x84dd4d){var _0x2b85a5={},_0x31b2a6={},_0x3bf475={'count':0x0,'rows':[]};var _0x35dbcd=db[_0x43e7('0x2d')][_0x43e7('0x2e')];_0x31b2a6[_0x43e7('0x2f')]=_[_0x43e7('0x30')](_0x35dbcd);var _0x4bdb17={'dateStart':_0x442c3b[_0x43e7('0x31')][_0x43e7('0x32')],'dateEnd':_0x442c3b[_0x43e7('0x31')][_0x43e7('0x33')]};delete _0x442c3b[_0x43e7('0x31')]['dateStart'];delete _0x442c3b[_0x43e7('0x31')][_0x43e7('0x33')];_0x31b2a6[_0x43e7('0x31')]=_[_0x43e7('0x30')](_0x442c3b['query']);_0x31b2a6['filters']=_['intersection'](_0x31b2a6[_0x43e7('0x2f')],_0x31b2a6[_0x43e7('0x31')]);_0x2b85a5[_0x43e7('0x34')]=_[_0x43e7('0x35')](_0x31b2a6[_0x43e7('0x2f')],qs[_0x43e7('0x36')](_0x442c3b['query']['fields']));_0x2b85a5['attributes']=_0x2b85a5['attributes']['length']?_0x2b85a5['attributes']:_0x31b2a6['model'];if(!_0x442c3b[_0x43e7('0x31')]['hasOwnProperty'](_0x43e7('0x37'))){_0x2b85a5[_0x43e7('0x1b')]=qs[_0x43e7('0x1b')](_0x442c3b[_0x43e7('0x31')][_0x43e7('0x1b')]);_0x2b85a5[_0x43e7('0x1a')]=qs[_0x43e7('0x1a')](_0x442c3b['query']['offset']);}_0x2b85a5['order']=qs[_0x43e7('0x38')](_0x442c3b[_0x43e7('0x31')][_0x43e7('0x38')]);_0x2b85a5[_0x43e7('0x39')]=qs[_0x43e7('0x3a')](_[_0x43e7('0x3b')](_0x442c3b[_0x43e7('0x31')],_0x31b2a6[_0x43e7('0x3a')]));if(_0x4bdb17['dateStart']){if(_0x4bdb17[_0x43e7('0x33')]){_0x4bdb17[_0x43e7('0x33')]=moment(_0x4bdb17['dateEnd'])[_0x43e7('0x3c')](0x1,'day');}else{_0x4bdb17[_0x43e7('0x33')]=moment(_0x4bdb17[_0x43e7('0x32')])[_0x43e7('0x3c')](0x1,_0x43e7('0x3d'));}_[_0x43e7('0x3e')](_0x2b85a5[_0x43e7('0x39')],{'createdAt':{'$gte':_0x4bdb17['dateStart'],'$lte':_0x4bdb17['dateEnd']}});}if(_0x442c3b[_0x43e7('0x31')][_0x43e7('0x3f')]){_0x2b85a5[_0x43e7('0x39')]=_[_0x43e7('0x3e')](_0x2b85a5[_0x43e7('0x39')],{'$or':_['map'](_0x35dbcd,function(_0x32a451){if(_0x32a451[_0x43e7('0x40')]['key']!==_0x43e7('0x41')){var _0x51a69c={};_0x51a69c[_0x32a451[_0x43e7('0x42')]]={'$like':'%'+_0x442c3b['query'][_0x43e7('0x3f')]+'%'};return _0x51a69c;}})});}_0x2b85a5=_[_0x43e7('0x3e')]({},_0x2b85a5,_0x442c3b[_0x43e7('0x43')]);var _0x1c2c6b={'where':_0x2b85a5['where']};return db['VoicePrefix'][_0x43e7('0x19')](_0x1c2c6b)[_0x43e7('0x23')](function(_0xe979b5){_0x3bf475[_0x43e7('0x19')]=_0xe979b5;if(_0x442c3b['query']['includeAll']){_0x2b85a5['include']=[{'all':!![]}];}return db[_0x43e7('0x2d')]['findAll'](_0x2b85a5);})[_0x43e7('0x23')](function(_0x4b3a59){_0x3bf475['rows']=_0x4b3a59;return _0x3bf475;})[_0x43e7('0x23')](respondWithFilteredResult(_0x84dd4d,_0x2b85a5))['catch'](handleError(_0x84dd4d,null));};exports[_0x43e7('0x44')]=function(_0x39db7f,_0x257bd8){var _0x99b9e1={'raw':![],'where':{'id':_0x39db7f[_0x43e7('0x45')]['id']}},_0x4fc5e8={};_0x4fc5e8[_0x43e7('0x2f')]=_[_0x43e7('0x30')](db[_0x43e7('0x2d')][_0x43e7('0x2e')]);_0x4fc5e8[_0x43e7('0x31')]=_['keys'](_0x39db7f['query']);_0x4fc5e8[_0x43e7('0x3a')]=_[_0x43e7('0x35')](_0x4fc5e8[_0x43e7('0x2f')],_0x4fc5e8['query']);_0x99b9e1['attributes']=_['intersection'](_0x4fc5e8[_0x43e7('0x2f')],qs[_0x43e7('0x36')](_0x39db7f['query'][_0x43e7('0x36')]));_0x99b9e1[_0x43e7('0x34')]=_0x99b9e1[_0x43e7('0x34')]['length']?_0x99b9e1['attributes']:_0x4fc5e8['model'];if(_0x39db7f['query'][_0x43e7('0x46')]){_0x99b9e1[_0x43e7('0x47')]=[{'all':!![]}];}_0x99b9e1=_['merge']({},_0x99b9e1,_0x39db7f[_0x43e7('0x43')]);return db[_0x43e7('0x2d')][_0x43e7('0x48')](_0x99b9e1)[_0x43e7('0x23')](handleEntityNotFound(_0x257bd8,null))['then'](respondWithResult(_0x257bd8,null))[_0x43e7('0x49')](handleError(_0x257bd8,null));};exports['destroy']=function(_0x4bebd4,_0x3e97da){return db[_0x43e7('0x2d')][_0x43e7('0x48')]({'where':{'id':_0x4bebd4[_0x43e7('0x45')]['id']}})[_0x43e7('0x23')](handleEntityNotFound(_0x3e97da,null))[_0x43e7('0x23')](removeEntity(_0x3e97da,null))[_0x43e7('0x49')](handleError(_0x3e97da,null));};exports[_0x43e7('0x4a')]=function(_0x473fca,_0x2b5515){return db['VoicePrefix'][_0x43e7('0x4a')]()[_0x43e7('0x23')](respondWithResult(_0x2b5515,null))['catch'](handleError(_0x2b5515,null));};exports[_0x43e7('0x4b')]=function(_0x4e6f6d,_0x35b799){var _0x520857;return db[_0x43e7('0x4c')][_0x43e7('0x4d')](function(_0xfe13fa){return db['VoicePrefix']['create'](_0x4e6f6d[_0x43e7('0x4e')],{'transaction':_0xfe13fa})[_0x43e7('0x23')](function(_0x399942){_0x520857=_0x399942[_0x43e7('0x24')]({'plain':!![]});return db[_0x43e7('0x4f')][_0x43e7('0x48')]({'where':{'id':_0x520857[_0x43e7('0x50')]},'raw':!![]})[_0x43e7('0x23')](function(_0x26d86c){return createVoicePrefixExtensions(_0x520857,_0x26d86c,_0xfe13fa);});});})[_0x43e7('0x23')](function(){var _0x312306=_0x4e6f6d['user'][_0x43e7('0x24')]({'plain':!![]});if(!_0x312306)throw new Error(_0x43e7('0x51'));if(_0x312306['role']===_0x43e7('0x52')){var _0x220bf2=_0x520857;return db[_0x43e7('0x53')]['find']({'where':{'name':'VoicePrefixes','userProfileId':_0x312306[_0x43e7('0x54')]},'raw':!![]})[_0x43e7('0x23')](function(_0x4ebdde){if(_0x4ebdde&&_0x4ebdde[_0x43e7('0x55')]===0x0){return db['UserProfileResource']['create']({'name':_0x220bf2[_0x43e7('0x2a')],'resourceId':_0x220bf2['id'],'type':_0x4ebdde[_0x43e7('0x2a')],'sectionId':_0x4ebdde['id']},{})[_0x43e7('0x23')](function(){return _0x520857;});}else{return _0x520857;}})[_0x43e7('0x49')](function(_0x68697){logger['error'](_0x43e7('0x56'),_0x68697);throw _0x68697;});}return _0x520857;})[_0x43e7('0x23')](respondWithResult(_0x35b799,null))['catch'](handleError(_0x35b799,null));};function Extension(_0x20283b,_0x1267c5,_0x296a0d,_0x5bb536){this['context']='from-sip';this[_0x43e7('0x57')]=_0x20283b;this[_0x43e7('0x58')]=_0x296a0d;this[_0x43e7('0x40')]=_0x43e7('0x59');this['description']='Voice\x20Prefix\x20Extension';this[_0x43e7('0x5a')]=_0x1267c5;this[_0x43e7('0x5b')]=_0x5bb536;}function createVoicePrefixExtensions(_0x140438,_0x5dd349,_0x5ea0db){return new BPromise(function(_0x4438c0,_0x1a7cb5){var _0x23595c=new Extension(formatPrefixName(_0x140438[_0x43e7('0x5c')]),0x1,_0x43e7('0x5d'),_0x43e7('0x5e'));_0x23595c[_0x43e7('0x5f')]=_0x140438['id'];return db[_0x43e7('0x4f')][_0x43e7('0x4b')](_0x23595c,{'transaction':_0x5ea0db})[_0x43e7('0x23')](function(_0x252f00){var _0x57fdfe=_0x252f00['get']({'plain':!![]});var _0x2b0711=_['map'](addVoicePrefixExtensions(_0x140438,_0x5dd349),function(_0x501616){_0x501616['VoiceExtensionId']=_0x57fdfe['id'];_0x501616[_0x43e7('0x5f')]=_0x140438['id'];return _0x501616;});return db[_0x43e7('0x4f')]['bulkCreate'](_0x2b0711,{'transaction':_0x5ea0db})[_0x43e7('0x23')](function(_0x135791){if(!_0x135791){return _0x1a7cb5(_0x43e7('0x60'));}else{return _0x4438c0(_0x135791);}})['catch'](function(_0x2b7406){return _0x1a7cb5(_0x2b7406);});});;});};function addVoicePrefixExtensions(_0x9771ad,_0x289f86){var _0xc9723=[];var _0x2f43d7=formatPrefixName(_0x9771ad[_0x43e7('0x5c')]);_0xc9723[_0x43e7('0x61')](new Extension(_0x2f43d7,0x2,'Set',_0x43e7('0x62')+_0x9771ad[_0x43e7('0x2a')]));if(_0x9771ad[_0x43e7('0x63')]){_0xc9723['push'](new Extension(_0x2f43d7,0x3,'Set',_0x43e7('0x64')+_0x9771ad['callerIdAll']));}else{_0xc9723['push'](new Extension(_0x2f43d7,0x3,_0x43e7('0x5d'),_0x43e7('0x65')));}_0xc9723['push'](new Extension(_0x2f43d7,0x4,_0x43e7('0x66'),_0x289f86[_0x43e7('0x67')]+','+_0x43e7('0x68')+(0x8+_0x9771ad[_0x43e7('0x2a')][_0x43e7('0x69')])+'}'+','+0x1));return _0xc9723;}function formatPrefixName(_0x13ef5c){var _0x398a78='_';for(var _0x4ce33c=0x0;_0x4ce33c<_0x13ef5c[_0x43e7('0x69')];_0x4ce33c++){if(_0x13ef5c[_0x43e7('0x6a')](_0x4ce33c)=='-'){_0x398a78+=_0x13ef5c['charAt'](_0x4ce33c);}else{_0x398a78+='['+_0x13ef5c[_0x43e7('0x6a')](_0x4ce33c)+']';}}_0x398a78+='.';return _0x398a78;}exports['update']=function(_0x26ee52,_0x248936,_0x37301b){var _0x1ca24b=_0x26ee52['body'];_0x1ca24b[_0x43e7('0x5c')]=_0x43e7('0x6b')+_0x1ca24b[_0x43e7('0x2a')]+'-';return db['sequelize'][_0x43e7('0x4d')](function(_0x38fa5b){return db[_0x43e7('0x2d')][_0x43e7('0x22')](_0x1ca24b,{'where':{'id':_0x1ca24b['id']},'transaction':_0x38fa5b})[_0x43e7('0x23')](function(){return db['VoiceExtension'][_0x43e7('0x26')]({'where':{'VoicePrefixId':_0x1ca24b['id']},'transaction':_0x38fa5b})[_0x43e7('0x23')](function(){return db[_0x43e7('0x4f')][_0x43e7('0x48')]({'where':{'id':_0x1ca24b[_0x43e7('0x50')]},'raw':!![]})[_0x43e7('0x23')](function(_0x438754){return createVoicePrefixExtensions(_0x1ca24b,_0x438754,_0x38fa5b);});});});})['then'](function(){return db['VoicePrefix'][_0x43e7('0x6c')](_0x1ca24b['id']);})['then'](respondWithResult(_0x248936,null))['catch'](handleError(_0x248936,null));};exports['addAgents']=function(_0x43daec,_0x88be29,_0x230fda){return db[_0x43e7('0x2d')][_0x43e7('0x48')]({'where':{'id':_0x43daec[_0x43e7('0x45')]['id']}})['then'](handleEntityNotFound(_0x88be29,null))[_0x43e7('0x23')](function(_0x1ead5b){if(_0x1ead5b){return _0x1ead5b[_0x43e7('0x6d')](_0x43daec['body'][_0x43e7('0x6e')],_[_0x43e7('0x6f')](_0x43daec[_0x43e7('0x4e')],[_0x43e7('0x6e'),'id'])||{})[_0x43e7('0x70')](function(_0xeb6340){for(var _0x1d4a29=0x0;_0x1d4a29<_0x43daec[_0x43e7('0x4e')]['ids']['length'];_0x1d4a29+=0x1){socket['emit'](_0x43e7('0x71'),{'UserId':_0x43daec[_0x43e7('0x4e')]['ids'][_0x1d4a29],'VoicePrefixId':_0x43daec[_0x43e7('0x45')]['id']});}return _0xeb6340;});}})[_0x43e7('0x23')](respondWithResult(_0x88be29,null))[_0x43e7('0x49')](handleError(_0x88be29,null));};exports[_0x43e7('0x72')]=function(_0x5a5565,_0x5d1da4,_0x5f5ac9){var _0x177a7a;return db[_0x43e7('0x2d')]['find']({'where':{'id':_0x5a5565['params']['id']}})[_0x43e7('0x23')](handleEntityNotFound(_0x5d1da4,null))[_0x43e7('0x23')](function(_0x3b7e5b){if(_0x3b7e5b){return _0x3b7e5b['removeAgents'](_0x5a5565[_0x43e7('0x31')][_0x43e7('0x6e')])[_0x43e7('0x23')](function(_0xb04082){if(_['isArray'](_0x5a5565[_0x43e7('0x31')]['ids'])){for(var _0xa66309=0x0;_0xa66309<_0x5a5565[_0x43e7('0x31')][_0x43e7('0x6e')][_0x43e7('0x69')];_0xa66309+=0x1){socket[_0x43e7('0x73')](_0x43e7('0x74'),{'UserId':_0x5a5565[_0x43e7('0x31')]['ids'][_0xa66309],'VoicePrefixId':_0x5a5565[_0x43e7('0x45')]['id']});}}else{socket[_0x43e7('0x73')](_0x43e7('0x74'),{'UserId':_0x5a5565[_0x43e7('0x31')]['ids'],'VoicePrefixId':_0x5a5565['params']['id']});}});}})['then'](respondWithStatusCode(_0x5d1da4,null))[_0x43e7('0x49')](handleError(_0x5d1da4,null));};exports['getAgents']=function(_0x240f0d,_0x36b768,_0x2d02bf){var _0x7387f6={};var _0xa75254={};var _0x9cd323;var _0x28a962;return db[_0x43e7('0x2d')][_0x43e7('0x75')]({'where':{'id':_0x240f0d[_0x43e7('0x45')]['id']}})[_0x43e7('0x23')](handleEntityNotFound(_0x36b768,null))['then'](function(_0xeaef5c){if(_0xeaef5c){_0x9cd323=_0xeaef5c;_0xa75254[_0x43e7('0x2f')]=_[_0x43e7('0x30')](db[_0x43e7('0x76')][_0x43e7('0x2e')]);_0xa75254['query']=_['keys'](_0x240f0d[_0x43e7('0x31')]);_0xa75254[_0x43e7('0x3a')]=_['intersection'](_0xa75254[_0x43e7('0x2f')],_0xa75254[_0x43e7('0x31')]);_0x7387f6['attributes']=_['intersection'](_0xa75254[_0x43e7('0x2f')],qs[_0x43e7('0x36')](_0x240f0d[_0x43e7('0x31')][_0x43e7('0x36')]));_0x7387f6[_0x43e7('0x34')]=_0x7387f6['attributes']['length']?_0x7387f6[_0x43e7('0x34')]:_0xa75254[_0x43e7('0x2f')];_0x7387f6[_0x43e7('0x77')]=qs[_0x43e7('0x38')](_0x240f0d['query'][_0x43e7('0x38')]);_0x7387f6[_0x43e7('0x39')]=qs[_0x43e7('0x3a')](_[_0x43e7('0x3b')](_0x240f0d['query'],_0xa75254[_0x43e7('0x3a')]));if(_0x240f0d[_0x43e7('0x31')][_0x43e7('0x3f')]){_0x7387f6[_0x43e7('0x39')]=_[_0x43e7('0x3e')](_0x7387f6['where'],{'$or':_[_0x43e7('0x78')](_0x7387f6[_0x43e7('0x34')],function(_0x509d8d){var _0xac0d64={};_0xac0d64[_0x509d8d]={'$like':'%'+_0x240f0d[_0x43e7('0x31')][_0x43e7('0x3f')]+'%'};return _0xac0d64;})});}_0x7387f6=_[_0x43e7('0x3e')]({},_0x7387f6,_0x240f0d['options']);return _0x9cd323[_0x43e7('0x79')](_0x7387f6);}})['then'](function(_0x130b41){if(_0x130b41){_0x28a962=_0x130b41[_0x43e7('0x69')];if(!_0x240f0d[_0x43e7('0x31')][_0x43e7('0x7a')](_0x43e7('0x37'))){_0x7387f6[_0x43e7('0x1b')]=qs[_0x43e7('0x1b')](_0x240f0d[_0x43e7('0x31')][_0x43e7('0x1b')]);_0x7387f6['offset']=qs[_0x43e7('0x1a')](_0x240f0d[_0x43e7('0x31')][_0x43e7('0x1a')]);}return _0x9cd323[_0x43e7('0x79')](_0x7387f6);}})['then'](function(_0x519523){if(_0x519523){return _0x519523?{'count':_0x28a962,'rows':_0x519523}:null;}})[_0x43e7('0x23')](respondWithResult(_0x36b768,null))[_0x43e7('0x49')](handleError(_0x36b768,null));};
\ No newline at end of file
index 7e65d03..1dcee6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['setMaxListeners','save','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0xd5888d,_0x443241){var _0x44ae3a=function(_0x25da2b){while(--_0x25da2b){_0xd5888d['push'](_0xd5888d['shift']());}};_0x44ae3a(++_0x443241);}(_0x0e85,0x7c));var _0x50e8=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x0e85[_0x49b207];return _0x2dc8fa;};'use strict';var EventEmitter=require(_0x50e8('0x0'));var VoicePrefix=require(_0x50e8('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x50e8('0x2')](0x0);var events={'afterCreate':_0x50e8('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4ce6cd){return function(_0x236cf3,_0x4e90e7,_0x3048e3){VoicePrefixEvents[_0x50e8('0x4')](_0x4ce6cd+':'+_0x236cf3['id'],_0x236cf3);VoicePrefixEvents[_0x50e8('0x4')](_0x4ce6cd,_0x236cf3);_0x3048e3(null);};}for(var e in events){if(events[_0x50e8('0x5')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x50e8('0x6')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x34e8=['emit','hasOwnProperty','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','update','remove'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x34e8,0x12c));var _0x834e=function(_0x1a18b9,_0x458d2b){_0x1a18b9=_0x1a18b9-0x0;var _0x15ec30=_0x34e8[_0x1a18b9];return _0x15ec30;};'use strict';var EventEmitter=require(_0x834e('0x0'));var VoicePrefix=require(_0x834e('0x1'))['db'][_0x834e('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x834e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x834e('0x4'),'afterDestroy':_0x834e('0x5')};function emitEvent(_0x472111){return function(_0x31bf20,_0x289ef2,_0x19a3e0){VoicePrefixEvents[_0x834e('0x6')](_0x472111+':'+_0x31bf20['id'],_0x31bf20);VoicePrefixEvents['emit'](_0x472111,_0x31bf20);_0x19a3e0(null);};}for(var e in events){if(events[_0x834e('0x7')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x834e('0x8')]=VoicePrefixEvents;
\ No newline at end of file
index e925ce5..d6049c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6688=['lodash','util','../../config/logger','moment','bluebird','request-promise','./voicePrefix.attributes','exports','VoicePrefix','voice_prefixes'];(function(_0x33fcbb,_0x291d0f){var _0x2efe40=function(_0x2e9442){while(--_0x2e9442){_0x33fcbb['push'](_0x33fcbb['shift']());}};_0x2efe40(++_0x291d0f);}(_0x6688,0x10e));var _0x8668=function(_0x665917,_0x113c5c){_0x665917=_0x665917-0x0;var _0x4d16c0=_0x6688[_0x665917];return _0x4d16c0;};'use strict';var _=require(_0x8668('0x0'));var util=require(_0x8668('0x1'));var logger=require(_0x8668('0x2'))('api');var moment=require(_0x8668('0x3'));var BPromise=require(_0x8668('0x4'));var rp=require(_0x8668('0x5'));var attributes=require(_0x8668('0x6'));module[_0x8668('0x7')]=function(_0x21922f,_0x160305){return _0x21922f['define'](_0x8668('0x8'),attributes,{'tableName':_0x8668('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4f5=['./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','util','../../config/logger','api','bluebird','request-promise'];(function(_0x37eca7,_0x3e016e){var _0x222bce=function(_0xebd0b7){while(--_0xebd0b7){_0x37eca7['push'](_0x37eca7['shift']());}};_0x222bce(++_0x3e016e);}(_0xc4f5,0xa5));var _0x5c4f=function(_0x455e00,_0x29577f){_0x455e00=_0x455e00-0x0;var _0x568400=_0xc4f5[_0x455e00];return _0x568400;};'use strict';var _=require('lodash');var util=require(_0x5c4f('0x0'));var logger=require(_0x5c4f('0x1'))(_0x5c4f('0x2'));var moment=require('moment');var BPromise=require(_0x5c4f('0x3'));var rp=require(_0x5c4f('0x4'));var attributes=require(_0x5c4f('0x5'));module[_0x5c4f('0x6')]=function(_0x2676f7,_0x56e601){return _0x2676f7[_0x5c4f('0x7')](_0x5c4f('0x8'),attributes,{'tableName':_0x5c4f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fed270e..ab8431a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcacf=['util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','request','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','VoicePrefix,\x20%s,\x20%s','message','info','result','catch'];(function(_0x576170,_0x1712ae){var _0x397c70=function(_0x2eb9de){while(--_0x2eb9de){_0x576170['push'](_0x576170['shift']());}};_0x397c70(++_0x1712ae);}(_0xcacf,0x82));var _0xfcac=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xcacf[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require('lodash');var util=require(_0xfcac('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xfcac('0x1'));var fs=require('fs');var Redis=require(_0xfcac('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xfcac('0x3'));var logger=require(_0xfcac('0x4'))(_0xfcac('0x5'));var config=require(_0xfcac('0x6'));var jayson=require(_0xfcac('0x7'));var client=jayson[_0xfcac('0x8')][_0xfcac('0x9')]({'port':0x232a});config[_0xfcac('0xa')]=_['defaults'](config['redis'],{'host':_0xfcac('0xb'),'port':0x18eb});var socket=require(_0xfcac('0xc'))(new Redis(config['redis']));require(_0xfcac('0xd'))[_0xfcac('0xe')](socket);function respondWithRpcPromise(_0x4d39ad,_0x32d215,_0x5dc27f){return new BPromise(function(_0x2bd751,_0x35b136){return client[_0xfcac('0xf')](_0x4d39ad,_0x5dc27f)['then'](function(_0x5cd7cf){logger['info']('VoicePrefix,\x20%s,\x20%s',_0x32d215,_0xfcac('0x10'));logger[_0xfcac('0x11')](_0xfcac('0x12'),_0x32d215,_0xfcac('0x10'),JSON[_0xfcac('0x13')](_0x5cd7cf));if(_0x5cd7cf['error']){if(_0x5cd7cf[_0xfcac('0x14')]['code']===0x1f4){logger['error'](_0xfcac('0x15'),_0x32d215,_0x5cd7cf[_0xfcac('0x14')][_0xfcac('0x16')]);return _0x35b136(_0x5cd7cf[_0xfcac('0x14')][_0xfcac('0x16')]);}logger[_0xfcac('0x14')](_0xfcac('0x15'),_0x32d215,_0x5cd7cf[_0xfcac('0x14')][_0xfcac('0x16')]);return _0x2bd751(_0x5cd7cf['error'][_0xfcac('0x16')]);}else{logger[_0xfcac('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x32d215,_0xfcac('0x10'));_0x2bd751(_0x5cd7cf[_0xfcac('0x18')][_0xfcac('0x16')]);}})[_0xfcac('0x19')](function(_0x1d5e4e){logger['error'](_0xfcac('0x15'),_0x32d215,_0x1d5e4e);_0x35b136(_0x1d5e4e);});});}
\ No newline at end of file
+var _0x30fd=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util'];(function(_0x17a8c6,_0x437670){var _0x1c5d39=function(_0x4c3df8){while(--_0x4c3df8){_0x17a8c6['push'](_0x17a8c6['shift']());}};_0x1c5d39(++_0x437670);}(_0x30fd,0x102));var _0xd30f=function(_0x347ffb,_0x156d2b){_0x347ffb=_0x347ffb-0x0;var _0x330474=_0x30fd[_0x347ffb];return _0x330474;};'use strict';var _=require(_0xd30f('0x0'));var util=require(_0xd30f('0x1'));var moment=require('moment');var BPromise=require(_0xd30f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd30f('0x3'));var db=require(_0xd30f('0x4'))['db'];var utils=require(_0xd30f('0x5'));var logger=require(_0xd30f('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd30f('0x7'));var client=jayson[_0xd30f('0x8')][_0xd30f('0x9')]({'port':0x232a});config[_0xd30f('0xa')]=_[_0xd30f('0xb')](config[_0xd30f('0xa')],{'host':_0xd30f('0xc'),'port':0x18eb});var socket=require(_0xd30f('0xd'))(new Redis(config[_0xd30f('0xa')]));require(_0xd30f('0xe'))[_0xd30f('0xf')](socket);function respondWithRpcPromise(_0x9b4c9f,_0x332b89,_0x582e92){return new BPromise(function(_0x39d90d,_0x1a9090){return client[_0xd30f('0x10')](_0x9b4c9f,_0x582e92)[_0xd30f('0x11')](function(_0x573222){logger[_0xd30f('0x12')](_0xd30f('0x13'),_0x332b89,_0xd30f('0x14'));logger['debug']('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x332b89,'request\x20sent',JSON[_0xd30f('0x15')](_0x573222));if(_0x573222[_0xd30f('0x16')]){if(_0x573222[_0xd30f('0x16')][_0xd30f('0x17')]===0x1f4){logger[_0xd30f('0x16')](_0xd30f('0x13'),_0x332b89,_0x573222[_0xd30f('0x16')][_0xd30f('0x18')]);return _0x1a9090(_0x573222[_0xd30f('0x16')][_0xd30f('0x18')]);}logger[_0xd30f('0x16')](_0xd30f('0x13'),_0x332b89,_0x573222[_0xd30f('0x16')]['message']);return _0x39d90d(_0x573222[_0xd30f('0x16')][_0xd30f('0x18')]);}else{logger[_0xd30f('0x12')]('VoicePrefix,\x20%s,\x20%s',_0x332b89,_0xd30f('0x14'));_0x39d90d(_0x573222[_0xd30f('0x19')][_0xd30f('0x18')]);}})['catch'](function(_0x3452b8){logger[_0xd30f('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x332b89,_0x3452b8);_0x1a9090(_0x3452b8);});});}
\ No newline at end of file
index 99dd5ab..86c6b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c81=['remove','update','removeListener','register','length','voicePrefix:','save'];(function(_0x18dc57,_0x487c00){var _0x445c28=function(_0x471c1e){while(--_0x471c1e){_0x18dc57['push'](_0x18dc57['shift']());}};_0x445c28(++_0x487c00);}(_0x8c81,0xae));var _0x18c8=function(_0x5aedf7,_0x3c50ee){_0x5aedf7=_0x5aedf7-0x0;var _0x4bdaac=_0x8c81[_0x5aedf7];return _0x4bdaac;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0x18c8('0x0'),_0x18c8('0x1'),_0x18c8('0x2')];function createListener(_0xa7b59e,_0x39bf5e){return function(_0x3d830f){_0x39bf5e['emit'](_0xa7b59e,_0x3d830f);};}function removeListener(_0x145344,_0x2f0568){return function(){VoicePrefixEvents[_0x18c8('0x3')](_0x145344,_0x2f0568);};}exports[_0x18c8('0x4')]=function(_0x5cd2f5){for(var _0x472d03=0x0,_0x384f80=events[_0x18c8('0x5')];_0x472d03<_0x384f80;_0x472d03++){var _0x514819=events[_0x472d03];var _0x1608f0=createListener(_0x18c8('0x6')+_0x514819,_0x5cd2f5);VoicePrefixEvents['on'](_0x514819,_0x1608f0);}};
\ No newline at end of file
+var _0xa506=['remove','emit','removeListener','register','voicePrefix:','./voicePrefix.events'];(function(_0x2b3087,_0x5bad3a){var _0x39bb6a=function(_0x51f8d4){while(--_0x51f8d4){_0x2b3087['push'](_0x2b3087['shift']());}};_0x39bb6a(++_0x5bad3a);}(_0xa506,0x125));var _0x6a50=function(_0x489a3d,_0x294419){_0x489a3d=_0x489a3d-0x0;var _0x1f5b2e=_0xa506[_0x489a3d];return _0x1f5b2e;};'use strict';var VoicePrefixEvents=require(_0x6a50('0x0'));var events=['save',_0x6a50('0x1'),'update'];function createListener(_0x4ae6ef,_0x597d85){return function(_0x18fb87){_0x597d85[_0x6a50('0x2')](_0x4ae6ef,_0x18fb87);};}function removeListener(_0x22dd49,_0x5dc529){return function(){VoicePrefixEvents[_0x6a50('0x3')](_0x22dd49,_0x5dc529);};}exports[_0x6a50('0x4')]=function(_0x23eb79){for(var _0x4f723a=0x0,_0x4f1eae=events['length'];_0x4f723a<_0x4f1eae;_0x4f723a++){var _0x22ff09=events[_0x4f723a];var _0x2a3d0e=createListener(_0x6a50('0x5')+_0x22ff09,_0x23eb79);VoicePrefixEvents['on'](_0x22ff09,_0x2a3d0e);}};
\ No newline at end of file
index 017203a..a59a88a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['removeTeams','removeBlackLists','exports','multer','util','path','Router','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','isAuthenticated','/:id','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','/:id/blacklists','getBlackLists','create','post','/:id/clone','clone','addTeams','addAgents','addBlackLists','put','update','delete','destroy'];(function(_0x38e806,_0x85c6b){var _0x13d25b=function(_0x41f36d){while(--_0x41f36d){_0x38e806['push'](_0x38e806['shift']());}};_0x13d25b(++_0x85c6b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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 auth=require('../../components/auth/service');var interaction=require(_0x0a9e('0x4'));var config=require(_0x0a9e('0x5'));var controller=require(_0x0a9e('0x6'));router[_0x0a9e('0x7')]('/',auth[_0x0a9e('0x8')](),controller['index']);router[_0x0a9e('0x7')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller['show']);router['get'](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x0a9e('0x7')](_0x0a9e('0xb'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xc')]);router[_0x0a9e('0x7')](_0x0a9e('0xd'),auth['isAuthenticated'](),controller['getHopperFinals']);router['get']('/:id/hopper_black',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x7')](_0x0a9e('0xf'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x10')]);router['get'](_0x0a9e('0x11'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x7')](_0x0a9e('0x13'),auth[_0x0a9e('0x8')](),controller['getMembers']);router[_0x0a9e('0x7')]('/:id/lists',auth[_0x0a9e('0x8')](),controller['getLists']);router[_0x0a9e('0x7')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x16')]);router[_0x0a9e('0x17')](_0x0a9e('0x18'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x17')](_0x0a9e('0xf'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x17')](_0x0a9e('0x11'),auth['isAuthenticated'](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x17')]('/:id/lists',auth[_0x0a9e('0x8')](),controller['addLists']);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x1d')]('/:id',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1e')]);router[_0x0a9e('0x1f')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x1f')]('/:id/teams',auth['isAuthenticated'](),controller[_0x0a9e('0x21')]);router[_0x0a9e('0x1f')](_0x0a9e('0x11'),auth[_0x0a9e('0x8')](),controller['removeAgents']);router[_0x0a9e('0x1f')]('/:id/lists',auth[_0x0a9e('0x8')](),controller['removeLists']);router[_0x0a9e('0x1f')](_0x0a9e('0x14'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x22')]);module[_0x0a9e('0x23')]=router;
\ No newline at end of file
+var _0xa9e0=['removeTeams','removeBlackLists','exports','multer','util','path','Router','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','isAuthenticated','/:id','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','/:id/blacklists','getBlackLists','create','post','/:id/clone','clone','addTeams','addAgents','addBlackLists','put','update','delete','destroy'];(function(_0x393659,_0x2f34c4){var _0x191210=function(_0x2f1f82){while(--_0x2f1f82){_0x393659['push'](_0x393659['shift']());}};_0x191210(++_0x2f34c4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'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 auth=require('../../components/auth/service');var interaction=require(_0x0a9e('0x4'));var config=require(_0x0a9e('0x5'));var controller=require(_0x0a9e('0x6'));router[_0x0a9e('0x7')]('/',auth[_0x0a9e('0x8')](),controller['index']);router[_0x0a9e('0x7')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller['show']);router['get'](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['getHoppers']);router[_0x0a9e('0x7')](_0x0a9e('0xb'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xc')]);router[_0x0a9e('0x7')](_0x0a9e('0xd'),auth['isAuthenticated'](),controller['getHopperFinals']);router['get']('/:id/hopper_black',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x7')](_0x0a9e('0xf'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x10')]);router['get'](_0x0a9e('0x11'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x7')](_0x0a9e('0x13'),auth[_0x0a9e('0x8')](),controller['getMembers']);router[_0x0a9e('0x7')]('/:id/lists',auth[_0x0a9e('0x8')](),controller['getLists']);router[_0x0a9e('0x7')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x16')]);router[_0x0a9e('0x17')](_0x0a9e('0x18'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x17')](_0x0a9e('0xf'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x17')](_0x0a9e('0x11'),auth['isAuthenticated'](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x17')]('/:id/lists',auth[_0x0a9e('0x8')](),controller['addLists']);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x1d')]('/:id',auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x1e')]);router[_0x0a9e('0x1f')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x1f')]('/:id/teams',auth['isAuthenticated'](),controller[_0x0a9e('0x21')]);router[_0x0a9e('0x1f')](_0x0a9e('0x11'),auth[_0x0a9e('0x8')](),controller['removeAgents']);router[_0x0a9e('0x1f')]('/:id/lists',auth[_0x0a9e('0x8')](),controller['removeLists']);router[_0x0a9e('0x1f')](_0x0a9e('0x14'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0x22')]);module[_0x0a9e('0x23')]=router;
\ No newline at end of file
index 196181f..246cef0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','sequelize','STRING','name','ENUM','outbound','inbound','default','leastrecent','fewestcalls','rrmemory','linear','wrandom','rrordered','ringall','setDataValue','strategy','getDataValue','type','dialMethod','booked','progressive','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','split','join','joinempty','leavewhenempty','acw','wrapuptime','BOOLEAN','Dial\x20Method.','Max\x209999\x20channels,\x200\x20means\x20unlimited.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','FLOAT','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','#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)','#AMD\x20Maximum\x20Word\x20Length'];(function(_0x5a42c3,_0x138f32){var _0x458420=function(_0x2d9c1a){while(--_0x2d9c1a){_0x5a42c3['push'](_0x5a42c3['shift']());}};_0x458420(++_0x138f32);}(_0xb10b,0x12a));var _0xbb10=function(_0x3c192c,_0x5bd6f9){_0x3c192c=_0x3c192c-0x0;var _0x3d8f5b=_0xb10b[_0x3c192c];return _0x3d8f5b;};'use strict';var Sequelize=require(_0xbb10('0x0'));module['exports']={'name':{'type':Sequelize[_0xbb10('0x1')],'allowNull':![],'unique':_0xbb10('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xbb10('0x3')]('inbound',_0xbb10('0x4')),'allowNull':![],'defaultValue':_0xbb10('0x5')},'musiconhold':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':_0xbb10('0x6')},'announce':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0xbb10('0x3')]('rr','ringall',_0xbb10('0x7'),_0xbb10('0x8'),'random',_0xbb10('0x9'),_0xbb10('0xa'),_0xbb10('0xb'),_0xbb10('0xc')),'allowNull':![],'defaultValue':_0xbb10('0xd'),'set':function(_0x1ce33e){this[_0xbb10('0xe')](_0xbb10('0xf'),_0x1ce33e?_0x1ce33e:'rrmemory');},'get':function(){var _0x4e47f8=this[_0xbb10('0x10')](_0xbb10('0x11'));var _0xce64f3=this['getDataValue'](_0xbb10('0x12'));var _0x5be7e0=this[_0xbb10('0x10')](_0xbb10('0xf'));if(_0x4e47f8===_0xbb10('0x5')){return _0x5be7e0;}if(_0xce64f3===_0xbb10('0x13')&&_0x5be7e0===_0xbb10('0x9')||_0xce64f3===_0xbb10('0x13')&&_0x5be7e0==='roundrobin'){return _0x5be7e0;}if(_0xce64f3===_0xbb10('0x14')||_0xce64f3===_0xbb10('0x15')||_0xce64f3===_0xbb10('0x16')){return _0x5be7e0;}return null;}},'servicelevel':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xbb10('0x17')](0xb)},'timeout':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xbb10('0x1')]},'weight':{'type':Sequelize[_0xbb10('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no'),'defaultValue':_0xbb10('0x18')},'autopause':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no',_0xbb10('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xbb10('0x17')](0xb)},'autopausebusy':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xbb10('0x3')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xbb10('0x3')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no'),'defaultValue':_0xbb10('0x18')},'announce_holdtime':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no',_0xbb10('0x1a')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM']('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xbb10('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xbb10('0x1')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xbb10('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize[_0xbb10('0x1')]},'queue_quantity2':{'type':Sequelize[_0xbb10('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0xbb10('0x1')]},'queue_less_than':{'type':Sequelize[_0xbb10('0x1')]},'periodic_announce':{'type':Sequelize[_0xbb10('0x1b')],'set':function(_0x2ff4c1){this['setDataValue'](_0xbb10('0x1c'),_0x2ff4c1?_0x2ff4c1['join'](','):[]);},'get':function(){return this[_0xbb10('0x10')]('periodic_announce')?this[_0xbb10('0x10')](_0xbb10('0x1c'))[_0xbb10('0x1d')](','):[];}},'joinempty':{'type':Sequelize['STRING'],'defaultValue':'yes','set':function(_0x4c3744){this[_0xbb10('0xe')]('joinempty',_0x4c3744?_0x4c3744[_0xbb10('0x1e')](','):[]);},'get':function(){return this[_0xbb10('0x10')](_0xbb10('0x1f'))?this[_0xbb10('0x10')](_0xbb10('0x1f'))[_0xbb10('0x1d')](','):[];}},'leavewhenempty':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':'no','set':function(_0x4975f5){this[_0xbb10('0xe')](_0xbb10('0x20'),_0x4975f5?_0x4975f5[_0xbb10('0x1e')](','):[]);},'get':function(){return this[_0xbb10('0x10')](_0xbb10('0x20'))?this[_0xbb10('0x10')](_0xbb10('0x20'))[_0xbb10('0x1d')](','):[];}},'reportholdtime':{'type':Sequelize[_0xbb10('0x3')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xbb10('0x3')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xbb10('0x1')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x3eb3cc){this[_0xbb10('0xe')](_0xbb10('0x21'),_0x3eb3cc);if(_0x3eb3cc){if(this[_0xbb10('0x10')](_0xbb10('0x22'))<0x2){this[_0xbb10('0xe')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0xbb10('0x17')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xbb10('0x23')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize['ENUM']('preview',_0xbb10('0x14'),_0xbb10('0x16'),_0xbb10('0x15'),'booked'),'defaultValue':_0xbb10('0x14'),'comment':_0xbb10('0x24')},'dialLimitChannel':{'type':Sequelize[_0xbb10('0x17')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xbb10('0x25')},'dialLimitQueue':{'type':Sequelize[_0xbb10('0x17')](0x4)[_0xbb10('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xbb10('0x27')},'dialPowerLevel':{'type':Sequelize['FLOAT'](0x2)[_0xbb10('0x26')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xbb10('0x28')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0xbb10('0x29'),_0xbb10('0x2a')),'defaultValue':_0xbb10('0x2a'),'comment':_0xbb10('0x2b')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xbb10('0x2c')](0x2)[_0xbb10('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0xbb10('0x17')](0x3)[_0xbb10('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xbb10('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize[_0xbb10('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xbb10('0x17')](0x3)[_0xbb10('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbb10('0x2e')},'dialQueueOptions':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':'tTxX','comment':_0xbb10('0x2f')},'dialQueueTimeout':{'type':Sequelize[_0xbb10('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0xbb10('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xbb10('0x17')](0x3)[_0xbb10('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xbb10('0x17')](0x5)[_0xbb10('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbb10('0x30')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xbb10('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xbb10('0x31')},'dialBusyRetryFrequency':{'type':Sequelize[_0xbb10('0x17')](0x5)[_0xbb10('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbb10('0x32')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xbb10('0x17')](0x3)[_0xbb10('0x26')],'defaultValue':0x3,'comment':_0xbb10('0x33')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xbb10('0x17')](0x5)[_0xbb10('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xbb10('0x34')},'dialGlobalMaxRetry':{'type':Sequelize[_0xbb10('0x17')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xbb10('0x35')},'dialTimezone':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xbb10('0x36')},'dialPrefix':{'type':Sequelize[_0xbb10('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xbb10('0x3')](_0xbb10('0x37'),_0xbb10('0x38'),_0xbb10('0x39')),'defaultValue':_0xbb10('0x37')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xbb10('0x17')](0x9)[_0xbb10('0x26')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xbb10('0x3a')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xbb10('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xbb10('0x17')](0x9)[_0xbb10('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xbb10('0x3c')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xbb10('0x17')](0x9)[_0xbb10('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xbb10('0x3d')},'dialAMDMinWordLength':{'type':Sequelize[_0xbb10('0x17')](0x9)[_0xbb10('0x26')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xbb10('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xbb10('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xbb10('0x17')](0x9)[_0xbb10('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xbb10('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xbb10('0x17')](0x5)[_0xbb10('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xbb10('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xbb10('0x17')](0x9)[_0xbb10('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xbb10('0x42')},'dialRecallMeTimeout':{'type':Sequelize[_0xbb10('0x17')](0x5)[_0xbb10('0x26')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xbb10('0x43')},'dialRecallInQueue':{'type':Sequelize[_0xbb10('0x23')],'defaultValue':0x0,'comment':_0xbb10('0x44')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xbb10('0x45'),'ASC'),'defaultValue':_0xbb10('0x45')},'dialQueueProject2':{'type':Sequelize[_0xbb10('0x1')],'comment':_0xbb10('0x46')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xbb10('0x23')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xbb10('0x23')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xbb10('0x17')](0x3)[_0xbb10('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xbb10('0x47')},'dialCutDigit':{'type':Sequelize[_0xbb10('0x17')](0x3)[_0xbb10('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xbb10('0x48')}};
\ No newline at end of file
+var _0x7a54=['booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','join','periodic_announce','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','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\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','onlyIfOpen','#AMD\x20Initial\x20Silence','#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)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','sequelize','exports','STRING','ENUM','inbound','default','leastrecent','random','rrmemory','wrandom','setDataValue','strategy','getDataValue','dialMethod'];(function(_0x17598a,_0x522cc6){var _0x4cd046=function(_0x496f1a){while(--_0x496f1a){_0x17598a['push'](_0x17598a['shift']());}};_0x4cd046(++_0x522cc6);}(_0x7a54,0x106));var _0x47a5=function(_0x3d1df5,_0x5bbbfb){_0x3d1df5=_0x3d1df5-0x0;var _0xeaa2f1=_0x7a54[_0x3d1df5];return _0xeaa2f1;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'name':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x4'),'outbound'),'allowNull':![],'defaultValue':_0x47a5('0x4')},'musiconhold':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':_0x47a5('0x5')},'announce':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x47a5('0x3')]('rr','ringall',_0x47a5('0x6'),'fewestcalls',_0x47a5('0x7'),_0x47a5('0x8'),'linear',_0x47a5('0x9'),'rrordered'),'allowNull':![],'defaultValue':'ringall','set':function(_0x582352){this[_0x47a5('0xa')](_0x47a5('0xb'),_0x582352?_0x582352:'rrmemory');},'get':function(){var _0x2eb0dd=this['getDataValue']('type');var _0x1f47f4=this[_0x47a5('0xc')](_0x47a5('0xd'));var _0x250fad=this[_0x47a5('0xc')](_0x47a5('0xb'));if(_0x2eb0dd===_0x47a5('0x4')){return _0x250fad;}if(_0x1f47f4==='booked'&&_0x250fad===_0x47a5('0x8')||_0x1f47f4===_0x47a5('0xe')&&_0x250fad===_0x47a5('0xf')){return _0x250fad;}if(_0x1f47f4===_0x47a5('0x10')||_0x1f47f4===_0x47a5('0x11')||_0x1f47f4===_0x47a5('0x12')){return _0x250fad;}return null;}},'servicelevel':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x47a5('0x2')]},'weight':{'type':Sequelize[_0x47a5('0x13')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x47a5('0x14')},'autopause':{'type':Sequelize['ENUM']('yes','no',_0x47a5('0x15')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x47a5('0x13')](0xb)},'autopausebusy':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x14'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x14'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x14'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x47a5('0x14'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x47a5('0x3')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x14'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x47a5('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x47a5('0x3')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x14'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x14'),'no',_0x47a5('0x16')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x47a5('0x3')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x47a5('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize['STRING'],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x47a5('0x2')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x47a5('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x47a5('0x2')]},'queue_quantity1':{'type':Sequelize[_0x47a5('0x2')]},'queue_quantity2':{'type':Sequelize[_0x47a5('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x47a5('0x2')]},'queue_less_than':{'type':Sequelize[_0x47a5('0x2')]},'periodic_announce':{'type':Sequelize[_0x47a5('0x17')],'set':function(_0x528582){this[_0x47a5('0xa')]('periodic_announce',_0x528582?_0x528582[_0x47a5('0x18')](','):[]);},'get':function(){return this[_0x47a5('0xc')](_0x47a5('0x19'))?this['getDataValue'](_0x47a5('0x19'))[_0x47a5('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':_0x47a5('0x14'),'set':function(_0x51cc81){this['setDataValue'](_0x47a5('0x1b'),_0x51cc81?_0x51cc81[_0x47a5('0x18')](','):[]);},'get':function(){return this['getDataValue']('joinempty')?this[_0x47a5('0xc')](_0x47a5('0x1b'))['split'](','):[];}},'leavewhenempty':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':'no','set':function(_0x53119b){this[_0x47a5('0xa')](_0x47a5('0x1c'),_0x53119b?_0x53119b['join'](','):[]);},'get':function(){return this['getDataValue'](_0x47a5('0x1c'))?this['getDataValue'](_0x47a5('0x1c'))[_0x47a5('0x1a')](','):[];}},'reportholdtime':{'type':Sequelize[_0x47a5('0x3')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x47a5('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x47a5('0x3')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x47a5('0x2')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0x47a5('0x1d')],'defaultValue':0x0,'set':function(_0x3534cb){this[_0x47a5('0xa')](_0x47a5('0x1e'),_0x3534cb);if(_0x3534cb){if(this[_0x47a5('0xc')](_0x47a5('0x1f'))<0x2){this[_0x47a5('0xa')](_0x47a5('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x47a5('0x13')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x47a5('0x20')},'dialMethod':{'type':Sequelize[_0x47a5('0x3')]('preview',_0x47a5('0x10'),_0x47a5('0x12'),_0x47a5('0x11'),'booked'),'defaultValue':_0x47a5('0x10'),'comment':_0x47a5('0x21')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x47a5('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x47a5('0x23')},'dialLimitQueue':{'type':Sequelize['INTEGER'](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[_0x47a5('0x24')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x47a5('0x25')},'dialPredictiveOptimization':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x26'),_0x47a5('0x27')),'defaultValue':_0x47a5('0x27'),'comment':_0x47a5('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x47a5('0x24')](0x2)[_0x47a5('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x47a5('0x29')},'dialPredictiveInterval':{'type':Sequelize[_0x47a5('0x13')](0x3)[_0x47a5('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x47a5('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0x47a5('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x47a5('0x13')](0x3)[_0x47a5('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x47a5('0x2b')},'dialQueueOptions':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':'tTxX','comment':_0x47a5('0x2c')},'dialQueueTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0x47a5('0x2d')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x47a5('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x47a5('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x47a5('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47a5('0x2f')},'dialBusyMaxRetry':{'type':Sequelize[_0x47a5('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x47a5('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47a5('0x30')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x47a5('0x13')](0x3)[_0x47a5('0x22')],'defaultValue':0x3,'comment':_0x47a5('0x31')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x47a5('0x13')](0x5)[_0x47a5('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x47a5('0x32')},'dialGlobalMaxRetry':{'type':Sequelize[_0x47a5('0x13')](0x3)[_0x47a5('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x47a5('0x33')},'dialTimezone':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':_0x47a5('0x34')},'dialPrefix':{'type':Sequelize[_0x47a5('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x35'),'never',_0x47a5('0x36')),'defaultValue':_0x47a5('0x35')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x47a5('0x13')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x47a5('0x37')},'dialAMDGreeting':{'type':Sequelize[_0x47a5('0x13')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x47a5('0x13')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x47a5('0x38')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x47a5('0x13')](0x9)[_0x47a5('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x47a5('0x39')},'dialAMDMinWordLength':{'type':Sequelize[_0x47a5('0x13')](0x9)[_0x47a5('0x22')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x47a5('0x3a')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x47a5('0x3b')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x47a5('0x13')](0x9)[_0x47a5('0x22')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x47a5('0x3c')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x47a5('0x13')](0x5)[_0x47a5('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x47a5('0x3d')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x47a5('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x47a5('0x3e')},'dialRecallMeTimeout':{'type':Sequelize[_0x47a5('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x47a5('0x3f')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x47a5('0x40')},'dialOrderByScheduledAt':{'type':Sequelize[_0x47a5('0x3')](_0x47a5('0x41'),_0x47a5('0x42')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x47a5('0x2')],'comment':_0x47a5('0x2d')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x47a5('0x1d')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x47a5('0x1d')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x47a5('0x13')](0x3)[_0x47a5('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x47a5('0x43')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x47a5('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x47a5('0x44')}};
\ No newline at end of file
index 40179c2..93a3904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x471f=['status','set','Content-Range','apply','save','update','then','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','map','value','includes','type','destroy','stack','name','send','index','VoiceQueue','rawAttributes','model','keys','query','dateStart','dateEnd','intersection','attributes','length','hasOwnProperty','limit','order','sort','where','filters','pick','add','day','merge','key','VIRTUAL','options','includeAll','include','rows','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','omit','createdAt','updatedAt','UserProfileSection','getHoppers','findOne','nolimit','CmHopper','getHopperHistories','CmHopperHistory','VoiceQueueId','findAll','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','ids','Agents','addAgents','addTeams','removeTeams','removeAgents','emit','User','loginInPause','voicePause','interface','push','UserVoiceQueueRt','upsert','isNil','SIP/%s','penalty','all','isArray','userVoiceQueue:remove','realtime','getAgents','getMembers','getLists','addLists','spread','dialCheckDuplicateType','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','NOW()','CmListId','toString','from','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','VoiceQueueId\x20=\x20?','onlyIfOpen','insert','into','cm_contacts','phone\x20IS\x20NOT\x20NULL','removeLists','getBlackLists','CmList','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','register','sendStatus','end','json','count','offset'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x471f,0x88));var _0xf471=function(_0x315239,_0x1bd801){_0x315239=_0x315239-0x0;var _0xa1e160=_0x471f[_0x315239];return _0xa1e160;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0xf471('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf471('0x1'));var moment=require('moment');var BPromise=require(_0xf471('0x2'));var Mustache=require(_0xf471('0x3'));var util=require(_0xf471('0x4'));var path=require(_0xf471('0x5'));var sox=require(_0xf471('0x6'));var csv=require(_0xf471('0x7'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require(_0xf471('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xf471('0x9'));var toCsv=require(_0xf471('0x7'));var querystring=require(_0xf471('0xa'));var Papa=require(_0xf471('0xb'));var Redis=require('ioredis');var qs=require(_0xf471('0xc'));var logger=require('../../config/logger')(_0xf471('0xd'));var utils=require(_0xf471('0xe'));var config=require(_0xf471('0xf'));var db=require(_0xf471('0x10'))['db'];config['redis']=_['defaults'](config[_0xf471('0x11')],{'host':_0xf471('0x12'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf471('0x11')]));require('./voiceQueue.socket')[_0xf471('0x13')](socket);function respondWithStatusCode(_0x12af32,_0x48ef43){_0x48ef43=_0x48ef43||0xcc;return function(_0x2208d9){if(_0x2208d9){return _0x12af32[_0xf471('0x14')](_0x48ef43);}return _0x12af32['status'](_0x48ef43)[_0xf471('0x15')]();};}function respondWithResult(_0x33e2ea,_0x8b5e47){_0x8b5e47=_0x8b5e47||0xc8;return function(_0x47796a){if(_0x47796a){return _0x33e2ea['status'](_0x8b5e47)[_0xf471('0x16')](_0x47796a);}};}function respondWithFilteredResult(_0xf3c6e6,_0x31aa7e){return function(_0x1bd50b){if(_0x1bd50b){var _0x49c820=_0x1bd50b[_0xf471('0x17')],_0x39042a=_0x31aa7e[_0xf471('0x18')],_0x241883=_0x31aa7e[_0xf471('0x18')]+_0x31aa7e['limit'],_0x2ecc47;if(_0x241883>=_0x49c820){_0x241883=_0x49c820;_0x2ecc47=0xc8;}else{_0x2ecc47=0xce;}_0xf3c6e6[_0xf471('0x19')](_0x2ecc47);return _0xf3c6e6[_0xf471('0x1a')](_0xf471('0x1b'),_0x39042a+'-'+_0x241883+'/'+_0x49c820)[_0xf471('0x16')](_0x1bd50b);}return null;};}function patchUpdates(_0x4e4ed5){return function(_0x114932){try{jsonpatch[_0xf471('0x1c')](_0x114932,_0x4e4ed5,!![]);}catch(_0x1695ec){return BPromise['reject'](_0x1695ec);}return _0x114932[_0xf471('0x1d')]();};}function saveUpdates(_0x41bebc,_0x123800){return function(_0x14b486){if(_0x14b486){return _0x14b486[_0xf471('0x1e')](_0x41bebc)['then'](function(_0xb4bc2e){return _0xb4bc2e;});}return null;};}function removeEntity(_0x4d41f2,_0x214764){return function(_0x1eded1){if(_0x1eded1){return _0x1eded1['destroy']()[_0xf471('0x1f')](function(){var _0x424664=_0x1eded1[_0xf471('0x20')]({'plain':!![]});var _0x44b5bc=[{'name':_0xf471('0x21'),'value':_0xf471('0x22'),'ignore':![]},{'name':_0xf471('0x23'),'value':_0xf471('0x24'),'ignore':![]}];var _0x10ec0e=_(_0x44b5bc)[_0xf471('0x25')]('ignore')[_0xf471('0x26')](_0xf471('0x27'))['value']();if(_[_0xf471('0x28')](_0x10ec0e,_0x424664['type'])){return;}var _0x3ebf36=_['find'](_0x44b5bc,[_0xf471('0x27'),_0x424664[_0xf471('0x29')]])['name'];return db['UserProfileResource'][_0xf471('0x2a')]({'where':{'type':_0x3ebf36,'resourceId':_0x424664['id']}})[_0xf471('0x1f')](function(){return _0x1eded1;});})[_0xf471('0x1f')](function(){_0x4d41f2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x400896,_0x9c2a12){return function(_0x31c5f9){if(!_0x31c5f9){_0x400896[_0xf471('0x14')](0x194);}return _0x31c5f9;};}function handleError(_0x5c6c4c,_0x2b32e6){_0x2b32e6=_0x2b32e6||0x1f4;return function(_0x878e02){logger['error'](_0x878e02[_0xf471('0x2b')]);if(_0x878e02[_0xf471('0x2c')]){delete _0x878e02['name'];}_0x5c6c4c[_0xf471('0x19')](_0x2b32e6)[_0xf471('0x2d')](_0x878e02);};}exports[_0xf471('0x2e')]=function(_0x2e3be2,_0x4234e8){var _0x5545bd={},_0x354f45={},_0x49e4a7={'count':0x0,'rows':[]};var _0x258d44=db[_0xf471('0x2f')][_0xf471('0x30')];_0x354f45[_0xf471('0x31')]=_[_0xf471('0x32')](_0x258d44);var _0xa7ae15={'dateStart':_0x2e3be2[_0xf471('0x33')][_0xf471('0x34')],'dateEnd':_0x2e3be2[_0xf471('0x33')][_0xf471('0x35')]};delete _0x2e3be2[_0xf471('0x33')][_0xf471('0x34')];delete _0x2e3be2[_0xf471('0x33')][_0xf471('0x35')];_0x354f45[_0xf471('0x33')]=_['keys'](_0x2e3be2[_0xf471('0x33')]);_0x354f45['filters']=_[_0xf471('0x36')](_0x354f45[_0xf471('0x31')],_0x354f45['query']);_0x5545bd[_0xf471('0x37')]=_[_0xf471('0x36')](_0x354f45[_0xf471('0x31')],qs['fields'](_0x2e3be2[_0xf471('0x33')]['fields']));_0x5545bd['attributes']=_0x5545bd['attributes'][_0xf471('0x38')]?_0x5545bd[_0xf471('0x37')]:_0x354f45['model'];if(!_0x2e3be2[_0xf471('0x33')][_0xf471('0x39')]('nolimit')){_0x5545bd[_0xf471('0x3a')]=qs[_0xf471('0x3a')](_0x2e3be2[_0xf471('0x33')][_0xf471('0x3a')]);_0x5545bd['offset']=qs[_0xf471('0x18')](_0x2e3be2[_0xf471('0x33')]['offset']);}_0x5545bd[_0xf471('0x3b')]=qs[_0xf471('0x3c')](_0x2e3be2['query']['sort']);_0x5545bd[_0xf471('0x3d')]=qs[_0xf471('0x3e')](_[_0xf471('0x3f')](_0x2e3be2[_0xf471('0x33')],_0x354f45[_0xf471('0x3e')]));if(_0xa7ae15[_0xf471('0x34')]){if(_0xa7ae15[_0xf471('0x35')]){_0xa7ae15[_0xf471('0x35')]=moment(_0xa7ae15[_0xf471('0x35')])[_0xf471('0x40')](0x1,_0xf471('0x41'));}else{_0xa7ae15[_0xf471('0x35')]=moment(_0xa7ae15[_0xf471('0x34')])[_0xf471('0x40')](0x1,_0xf471('0x41'));}_[_0xf471('0x42')](_0x5545bd['where'],{'createdAt':{'$gte':_0xa7ae15[_0xf471('0x34')],'$lte':_0xa7ae15[_0xf471('0x35')]}});}if(_0x2e3be2[_0xf471('0x33')][_0xf471('0x25')]){_0x5545bd[_0xf471('0x3d')]=_['merge'](_0x5545bd[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x258d44,function(_0x52d10c){if(_0x52d10c[_0xf471('0x29')][_0xf471('0x43')]!==_0xf471('0x44')){var _0x2c708c={};_0x2c708c[_0x52d10c['field']]={'$like':'%'+_0x2e3be2[_0xf471('0x33')][_0xf471('0x25')]+'%'};return _0x2c708c;}})});}_0x5545bd=_['merge']({},_0x5545bd,_0x2e3be2[_0xf471('0x45')]);var _0x4941f0={'where':_0x5545bd[_0xf471('0x3d')]};return db[_0xf471('0x2f')][_0xf471('0x17')](_0x4941f0)[_0xf471('0x1f')](function(_0x50914e){_0x49e4a7['count']=_0x50914e;if(_0x2e3be2[_0xf471('0x33')][_0xf471('0x46')]){_0x5545bd[_0xf471('0x47')]=[{'all':!![]}];}return db[_0xf471('0x2f')]['findAll'](_0x5545bd);})[_0xf471('0x1f')](function(_0xf67748){_0x49e4a7[_0xf471('0x48')]=_0xf67748;return _0x49e4a7;})[_0xf471('0x1f')](respondWithFilteredResult(_0x4234e8,_0x5545bd))['catch'](handleError(_0x4234e8,null));};exports['show']=function(_0xfad9f8,_0x39ec2b){var _0x2b35ec={'raw':![],'where':{'id':_0xfad9f8['params']['id']}},_0x3a5644={};_0x3a5644[_0xf471('0x31')]=_[_0xf471('0x32')](db[_0xf471('0x2f')]['rawAttributes']);_0x3a5644[_0xf471('0x33')]=_[_0xf471('0x32')](_0xfad9f8[_0xf471('0x33')]);_0x3a5644['filters']=_[_0xf471('0x36')](_0x3a5644[_0xf471('0x31')],_0x3a5644['query']);_0x2b35ec[_0xf471('0x37')]=_['intersection'](_0x3a5644['model'],qs[_0xf471('0x49')](_0xfad9f8[_0xf471('0x33')]['fields']));_0x2b35ec['attributes']=_0x2b35ec[_0xf471('0x37')][_0xf471('0x38')]?_0x2b35ec[_0xf471('0x37')]:_0x3a5644[_0xf471('0x31')];if(_0xfad9f8[_0xf471('0x33')]['includeAll']){_0x2b35ec[_0xf471('0x47')]=[{'all':!![]}];}_0x2b35ec=_[_0xf471('0x42')]({},_0x2b35ec,_0xfad9f8[_0xf471('0x45')]);return db[_0xf471('0x2f')][_0xf471('0x4a')](_0x2b35ec)[_0xf471('0x1f')](handleEntityNotFound(_0x39ec2b,null))[_0xf471('0x1f')](respondWithResult(_0x39ec2b,null))['catch'](handleError(_0x39ec2b,null));};exports[_0xf471('0x4b')]=function(_0x3df7dd,_0x766082){return db[_0xf471('0x2f')][_0xf471('0x4b')](_0x3df7dd[_0xf471('0x4c')],{})['then'](function(_0x115dbe){var _0x6d20a6=_0x3df7dd[_0xf471('0x4d')][_0xf471('0x20')]({'plain':!![]});if(!_0x6d20a6)throw new Error(_0xf471('0x4e'));if(_0x6d20a6[_0xf471('0x4f')]===_0xf471('0x4d')){var _0x587530=_0x115dbe[_0xf471('0x20')]({'plain':!![]});var _0x10d601=[{'name':'VoiceQueues','value':_0xf471('0x22')},{'name':_0xf471('0x23'),'value':_0xf471('0x24')}];var _0xbfcc8d=_[_0xf471('0x4a')](_0x10d601,[_0xf471('0x27'),_0x587530[_0xf471('0x29')]])[_0xf471('0x2c')];return db['UserProfileSection'][_0xf471('0x4a')]({'where':{'name':_0xbfcc8d,'userProfileId':_0x6d20a6[_0xf471('0x50')]},'raw':!![]})[_0xf471('0x1f')](function(_0x17d21f){if(_0x17d21f&&_0x17d21f[_0xf471('0x51')]===0x0){return db[_0xf471('0x52')][_0xf471('0x4b')]({'name':_0x587530[_0xf471('0x2c')],'resourceId':_0x587530['id'],'type':_0x17d21f[_0xf471('0x2c')],'sectionId':_0x17d21f['id']},{})[_0xf471('0x1f')](function(){return _0x115dbe;});}else{return _0x115dbe;}})[_0xf471('0x53')](function(_0x2c67b4){logger[_0xf471('0x54')](_0xf471('0x55'),_0x2c67b4);throw _0x2c67b4;});}return _0x115dbe;})[_0xf471('0x1f')](respondWithResult(_0x766082,0xc9))[_0xf471('0x53')](handleError(_0x766082,null));};exports['clone']=function(_0x1e8d17,_0x371632){var _0xa1dd58={'raw':![],'where':{'id':_0x1e8d17[_0xf471('0x56')]['id']}},_0x1c20ca={};_0x1c20ca[_0xf471('0x31')]=_[_0xf471('0x32')](db[_0xf471('0x2f')]['rawAttributes']);_0xa1dd58[_0xf471('0x37')]=_[_0xf471('0x36')](_0x1c20ca[_0xf471('0x31')],qs[_0xf471('0x49')](_0x1e8d17[_0xf471('0x33')]['fields']));_0xa1dd58[_0xf471('0x37')]=_0xa1dd58['attributes'][_0xf471('0x38')]?_0xa1dd58[_0xf471('0x37')]:_0x1c20ca[_0xf471('0x31')];if(_0x1e8d17[_0xf471('0x33')][_0xf471('0x46')]){_0xa1dd58[_0xf471('0x47')]=[{'all':!![]}];}_0xa1dd58=_[_0xf471('0x42')]({},_0xa1dd58,_0x1e8d17['options']);return db['VoiceQueue'][_0xf471('0x4a')](_0xa1dd58)[_0xf471('0x1f')](handleEntityNotFound(_0x371632,null))[_0xf471('0x1f')](function(_0x1398d4){if(_0x1398d4){var _0x132cc4=_0x1398d4[_0xf471('0x20')]({'plain':!![]});_0x132cc4=qs[_0xf471('0x57')](_0x132cc4,['id',_0xf471('0x58'),_0xf471('0x59')]);_0x1e8d17[_0xf471('0x4c')]=_[_0xf471('0x57')](_0x1e8d17['body'],['id',_0xf471('0x58'),_0xf471('0x59')]);return db['VoiceQueue'][_0xf471('0x4b')](_[_0xf471('0x42')](_0x132cc4,_0x1e8d17['body']),{'include':_0x1e8d17[_0xf471('0x33')][_0xf471('0x46')]?[{'all':!![]}]:undefined})[_0xf471('0x1f')](function(_0x597074){var _0x33edde=_0x1e8d17[_0xf471('0x4d')][_0xf471('0x20')]({'plain':!![]});if(!_0x33edde)throw new Error(_0xf471('0x4e'));if(_0x33edde['role']===_0xf471('0x4d')){var _0x1dab2d=_0x597074[_0xf471('0x20')]({'plain':!![]});var _0xc28a95=[{'name':_0xf471('0x21'),'value':_0xf471('0x22')},{'name':'QueueCampaigns','value':_0xf471('0x24')}];var _0x2022bf=_[_0xf471('0x4a')](_0xc28a95,['value',_0x1dab2d[_0xf471('0x29')]])['name'];return db[_0xf471('0x5a')][_0xf471('0x4a')]({'where':{'name':_0x2022bf,'userProfileId':_0x33edde[_0xf471('0x50')]},'raw':!![]})['then'](function(_0x4d865f){if(_0x4d865f&&_0x4d865f[_0xf471('0x51')]===0x0){return db[_0xf471('0x52')][_0xf471('0x4b')]({'name':_0x1dab2d[_0xf471('0x2c')],'resourceId':_0x1dab2d['id'],'type':_0x4d865f[_0xf471('0x2c')],'sectionId':_0x4d865f['id']},{})[_0xf471('0x1f')](function(){return _0x597074;});}else{return _0x597074;}})[_0xf471('0x53')](function(_0x2fef60){logger['error'](_0xf471('0x55'),_0x2fef60);throw _0x2fef60;});}return _0x597074;});}})[_0xf471('0x1f')](respondWithResult(_0x371632,0xc9))[_0xf471('0x53')](handleError(_0x371632,null));};exports['update']=function(_0x17891e,_0x2135fb){if(_0x17891e['body']['id']){delete _0x17891e['body']['id'];}return db['VoiceQueue'][_0xf471('0x4a')]({'where':{'id':_0x17891e[_0xf471('0x56')]['id']}})['then'](handleEntityNotFound(_0x2135fb,null))[_0xf471('0x1f')](saveUpdates(_0x17891e[_0xf471('0x4c')],null))['then'](respondWithResult(_0x2135fb,null))[_0xf471('0x53')](handleError(_0x2135fb,null));};exports[_0xf471('0x2a')]=function(_0x39c682,_0x9b7e7c){return db[_0xf471('0x2f')][_0xf471('0x4a')]({'where':{'id':_0x39c682[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x9b7e7c,null))[_0xf471('0x1f')](removeEntity(_0x9b7e7c,null))['catch'](handleError(_0x9b7e7c,null));};exports[_0xf471('0x5b')]=function(_0xf2132a,_0x35464f,_0x2ed038){var _0x57f011={'raw':![],'where':{}};var _0x11e1b7={};var _0x4f623b={'count':0x0,'rows':[]};return db[_0xf471('0x2f')][_0xf471('0x5c')]({'where':{'id':_0xf2132a[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x35464f,null))[_0xf471('0x1f')](function(_0x5a1a35){if(_0x5a1a35){_0x11e1b7['model']=_[_0xf471('0x32')](db['CmHopper'][_0xf471('0x30')]);_0x11e1b7[_0xf471('0x33')]=_[_0xf471('0x32')](_0xf2132a[_0xf471('0x33')]);_0x11e1b7[_0xf471('0x3e')]=_['intersection'](_0x11e1b7[_0xf471('0x31')],_0x11e1b7[_0xf471('0x33')]);_0x57f011[_0xf471('0x37')]=_[_0xf471('0x36')](_0x11e1b7[_0xf471('0x31')],qs[_0xf471('0x49')](_0xf2132a[_0xf471('0x33')][_0xf471('0x49')]));_0x57f011[_0xf471('0x37')]=_0x57f011[_0xf471('0x37')][_0xf471('0x38')]?_0x57f011[_0xf471('0x37')]:_0x11e1b7[_0xf471('0x31')];if(!_0xf2132a[_0xf471('0x33')]['hasOwnProperty'](_0xf471('0x5d'))){_0x57f011[_0xf471('0x3a')]=qs[_0xf471('0x3a')](_0xf2132a['query'][_0xf471('0x3a')]);_0x57f011[_0xf471('0x18')]=qs['offset'](_0xf2132a['query']['offset']);}_0x57f011[_0xf471('0x3b')]=qs[_0xf471('0x3c')](_0xf2132a[_0xf471('0x33')]['sort']);_0x57f011[_0xf471('0x3d')]=qs[_0xf471('0x3e')](_[_0xf471('0x3f')](_0xf2132a[_0xf471('0x33')],_0x11e1b7[_0xf471('0x3e')]));_0x57f011[_0xf471('0x3d')]['VoiceQueueId']=_0x5a1a35['id'];if(_0xf2132a[_0xf471('0x33')]['filter']){_0x57f011[_0xf471('0x3d')]=_[_0xf471('0x42')](_0x57f011['where'],{'$or':_[_0xf471('0x26')](_0x57f011[_0xf471('0x37')],function(_0x1b9685){var _0x5bb389={};_0x5bb389[_0x1b9685]={'$like':'%'+_0xf2132a[_0xf471('0x33')][_0xf471('0x25')]+'%'};return _0x5bb389;})});}_0x57f011=_['merge']({},_0x57f011,_0xf2132a[_0xf471('0x45')]);return db[_0xf471('0x5e')][_0xf471('0x17')]({'where':_0x57f011['where']})['then'](function(_0xbcdd98){_0x4f623b[_0xf471('0x17')]=_0xbcdd98;if(_0xf2132a['query'][_0xf471('0x46')]){_0x57f011[_0xf471('0x47')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x57f011);})['then'](function(_0x5b7888){_0x4f623b[_0xf471('0x48')]=_0x5b7888;return _0x4f623b;});}})['then'](respondWithFilteredResult(_0x35464f,_0x57f011))[_0xf471('0x53')](handleError(_0x35464f,null));};exports[_0xf471('0x5f')]=function(_0x472649,_0x5bcc23,_0x15330d){var _0x28f517={'raw':!![],'where':{}};var _0x50e3db={};var _0x4869a5={'count':0x0,'rows':[]};return db[_0xf471('0x2f')][_0xf471('0x5c')]({'where':{'id':_0x472649[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x5bcc23,null))[_0xf471('0x1f')](function(_0x296d2c){if(_0x296d2c){_0x50e3db[_0xf471('0x31')]=_[_0xf471('0x32')](db[_0xf471('0x60')][_0xf471('0x30')]);_0x50e3db[_0xf471('0x33')]=_['keys'](_0x472649[_0xf471('0x33')]);_0x50e3db['filters']=_[_0xf471('0x36')](_0x50e3db['model'],_0x50e3db[_0xf471('0x33')]);_0x28f517[_0xf471('0x37')]=_[_0xf471('0x36')](_0x50e3db['model'],qs[_0xf471('0x49')](_0x472649[_0xf471('0x33')][_0xf471('0x49')]));_0x28f517[_0xf471('0x37')]=_0x28f517['attributes'][_0xf471('0x38')]?_0x28f517[_0xf471('0x37')]:_0x50e3db[_0xf471('0x31')];if(!_0x472649['query']['hasOwnProperty'](_0xf471('0x5d'))){_0x28f517['limit']=qs[_0xf471('0x3a')](_0x472649[_0xf471('0x33')][_0xf471('0x3a')]);_0x28f517[_0xf471('0x18')]=qs[_0xf471('0x18')](_0x472649[_0xf471('0x33')][_0xf471('0x18')]);}_0x28f517[_0xf471('0x3b')]=qs[_0xf471('0x3c')](_0x472649['query']['sort']);_0x28f517[_0xf471('0x3d')]=qs['filters'](_['pick'](_0x472649[_0xf471('0x33')],_0x50e3db[_0xf471('0x3e')]));_0x28f517[_0xf471('0x3d')][_0xf471('0x61')]=_0x296d2c['id'];if(_0x472649[_0xf471('0x33')]['filter']){_0x28f517[_0xf471('0x3d')]=_['merge'](_0x28f517[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x28f517[_0xf471('0x37')],function(_0x29d9ae){var _0x57e94c={};_0x57e94c[_0x29d9ae]={'$like':'%'+_0x472649['query'][_0xf471('0x25')]+'%'};return _0x57e94c;})});}_0x28f517=_[_0xf471('0x42')]({},_0x28f517,_0x472649[_0xf471('0x45')]);return db[_0xf471('0x60')][_0xf471('0x17')]({'where':_0x28f517['where']})[_0xf471('0x1f')](function(_0x24cc66){_0x4869a5['count']=_0x24cc66;if(_0x472649[_0xf471('0x33')]['includeAll']){_0x28f517[_0xf471('0x47')]=[{'all':!![]}];}return db[_0xf471('0x60')][_0xf471('0x62')](_0x28f517);})['then'](function(_0x58d6c2){_0x4869a5[_0xf471('0x48')]=_0x58d6c2;return _0x4869a5;});}})[_0xf471('0x1f')](respondWithFilteredResult(_0x5bcc23,_0x28f517))[_0xf471('0x53')](handleError(_0x5bcc23,null));};exports[_0xf471('0x63')]=function(_0x295ce1,_0x324385,_0x19ac18){var _0x21b971={'raw':!![],'where':{}};var _0x5444ca={};var _0x2c0ccb={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x295ce1['params']['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x324385,null))[_0xf471('0x1f')](function(_0x2a6d15){if(_0x2a6d15){_0x5444ca['model']=_['keys'](db[_0xf471('0x64')]['rawAttributes']);_0x5444ca['query']=_[_0xf471('0x32')](_0x295ce1[_0xf471('0x33')]);_0x5444ca[_0xf471('0x3e')]=_[_0xf471('0x36')](_0x5444ca['model'],_0x5444ca[_0xf471('0x33')]);_0x21b971[_0xf471('0x37')]=_[_0xf471('0x36')](_0x5444ca[_0xf471('0x31')],qs[_0xf471('0x49')](_0x295ce1[_0xf471('0x33')][_0xf471('0x49')]));_0x21b971['attributes']=_0x21b971[_0xf471('0x37')][_0xf471('0x38')]?_0x21b971['attributes']:_0x5444ca[_0xf471('0x31')];if(!_0x295ce1[_0xf471('0x33')][_0xf471('0x39')](_0xf471('0x5d'))){_0x21b971[_0xf471('0x3a')]=qs[_0xf471('0x3a')](_0x295ce1[_0xf471('0x33')][_0xf471('0x3a')]);_0x21b971['offset']=qs[_0xf471('0x18')](_0x295ce1['query'][_0xf471('0x18')]);}_0x21b971[_0xf471('0x3b')]=qs['sort'](_0x295ce1[_0xf471('0x33')][_0xf471('0x3c')]);_0x21b971[_0xf471('0x3d')]=qs['filters'](_[_0xf471('0x3f')](_0x295ce1[_0xf471('0x33')],_0x5444ca[_0xf471('0x3e')]));_0x21b971['where'][_0xf471('0x61')]=_0x2a6d15['id'];if(_0x295ce1[_0xf471('0x33')][_0xf471('0x25')]){_0x21b971[_0xf471('0x3d')]=_[_0xf471('0x42')](_0x21b971[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x21b971['attributes'],function(_0x37bd4b){var _0x26bfea={};_0x26bfea[_0x37bd4b]={'$like':'%'+_0x295ce1[_0xf471('0x33')][_0xf471('0x25')]+'%'};return _0x26bfea;})});}_0x21b971=_[_0xf471('0x42')]({},_0x21b971,_0x295ce1[_0xf471('0x45')]);return db['CmHopperFinal'][_0xf471('0x17')]({'where':_0x21b971[_0xf471('0x3d')]})[_0xf471('0x1f')](function(_0x51cfea){_0x2c0ccb[_0xf471('0x17')]=_0x51cfea;if(_0x295ce1[_0xf471('0x33')][_0xf471('0x46')]){_0x21b971[_0xf471('0x47')]=[{'all':!![]}];}return db[_0xf471('0x64')][_0xf471('0x62')](_0x21b971);})[_0xf471('0x1f')](function(_0x2386f2){_0x2c0ccb[_0xf471('0x48')]=_0x2386f2;return _0x2c0ccb;});}})[_0xf471('0x1f')](respondWithFilteredResult(_0x324385,_0x21b971))[_0xf471('0x53')](handleError(_0x324385,null));};exports[_0xf471('0x65')]=function(_0x3176e7,_0x5a4765,_0x3f259a){var _0x2d30a7={'raw':!![],'where':{}};var _0x112e3d={};var _0x29ef1f={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xf471('0x5c')]({'where':{'id':_0x3176e7[_0xf471('0x56')]['id']}})['then'](handleEntityNotFound(_0x5a4765,null))[_0xf471('0x1f')](function(_0x48834e){if(_0x48834e){_0x112e3d['model']=_[_0xf471('0x32')](db[_0xf471('0x66')][_0xf471('0x30')]);_0x112e3d['query']=_[_0xf471('0x32')](_0x3176e7[_0xf471('0x33')]);_0x112e3d[_0xf471('0x3e')]=_[_0xf471('0x36')](_0x112e3d[_0xf471('0x31')],_0x112e3d['query']);_0x2d30a7[_0xf471('0x37')]=_[_0xf471('0x36')](_0x112e3d[_0xf471('0x31')],qs[_0xf471('0x49')](_0x3176e7[_0xf471('0x33')]['fields']));_0x2d30a7[_0xf471('0x37')]=_0x2d30a7[_0xf471('0x37')][_0xf471('0x38')]?_0x2d30a7['attributes']:_0x112e3d[_0xf471('0x31')];if(!_0x3176e7[_0xf471('0x33')]['hasOwnProperty'](_0xf471('0x5d'))){_0x2d30a7[_0xf471('0x3a')]=qs[_0xf471('0x3a')](_0x3176e7[_0xf471('0x33')][_0xf471('0x3a')]);_0x2d30a7[_0xf471('0x18')]=qs[_0xf471('0x18')](_0x3176e7[_0xf471('0x33')][_0xf471('0x18')]);}_0x2d30a7[_0xf471('0x3b')]=qs['sort'](_0x3176e7['query']['sort']);_0x2d30a7[_0xf471('0x3d')]=qs[_0xf471('0x3e')](_['pick'](_0x3176e7[_0xf471('0x33')],_0x112e3d[_0xf471('0x3e')]));_0x2d30a7[_0xf471('0x3d')]['VoiceQueueId']=_0x48834e['id'];if(_0x3176e7[_0xf471('0x33')][_0xf471('0x25')]){_0x2d30a7['where']=_[_0xf471('0x42')](_0x2d30a7[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x2d30a7['attributes'],function(_0x499bfb){var _0x4a0712={};_0x4a0712[_0x499bfb]={'$like':'%'+_0x3176e7[_0xf471('0x33')]['filter']+'%'};return _0x4a0712;})});}_0x2d30a7=_[_0xf471('0x42')]({},_0x2d30a7,_0x3176e7[_0xf471('0x45')]);return db['CmHopperBlack'][_0xf471('0x17')]({'where':_0x2d30a7[_0xf471('0x3d')]})[_0xf471('0x1f')](function(_0x571a8b){_0x29ef1f[_0xf471('0x17')]=_0x571a8b;if(_0x3176e7[_0xf471('0x33')][_0xf471('0x46')]){_0x2d30a7['include']=[{'all':!![]}];}return db[_0xf471('0x66')][_0xf471('0x62')](_0x2d30a7);})['then'](function(_0x2c3cee){_0x29ef1f[_0xf471('0x48')]=_0x2c3cee;return _0x29ef1f;});}})[_0xf471('0x1f')](respondWithFilteredResult(_0x5a4765,_0x2d30a7))[_0xf471('0x53')](handleError(_0x5a4765,null));};exports['getTeams']=function(_0x53104c,_0x241a23,_0x537ba8){var _0x4307b4={};var _0x1e3f69={};var _0x2945fe;var _0x21b730;return db[_0xf471('0x2f')][_0xf471('0x5c')]({'where':{'id':_0x53104c['params']['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x241a23,null))['then'](function(_0x41750e){if(_0x41750e){_0x2945fe=_0x41750e;_0x1e3f69[_0xf471('0x31')]=_[_0xf471('0x32')](db['Team'][_0xf471('0x30')]);_0x1e3f69['query']=_[_0xf471('0x32')](_0x53104c[_0xf471('0x33')]);_0x1e3f69['filters']=_[_0xf471('0x36')](_0x1e3f69[_0xf471('0x31')],_0x1e3f69['query']);_0x4307b4['attributes']=_['intersection'](_0x1e3f69[_0xf471('0x31')],qs[_0xf471('0x49')](_0x53104c[_0xf471('0x33')]['fields']));_0x4307b4[_0xf471('0x37')]=_0x4307b4[_0xf471('0x37')][_0xf471('0x38')]?_0x4307b4[_0xf471('0x37')]:_0x1e3f69[_0xf471('0x31')];_0x4307b4[_0xf471('0x3b')]=qs[_0xf471('0x3c')](_0x53104c[_0xf471('0x33')][_0xf471('0x3c')]);_0x4307b4[_0xf471('0x3d')]=qs[_0xf471('0x3e')](_[_0xf471('0x3f')](_0x53104c['query'],_0x1e3f69[_0xf471('0x3e')]));if(_0x53104c[_0xf471('0x33')][_0xf471('0x25')]){_0x4307b4[_0xf471('0x3d')]=_[_0xf471('0x42')](_0x4307b4[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x4307b4['attributes'],function(_0x387e9e){var _0x250f07={};_0x250f07[_0x387e9e]={'$like':'%'+_0x53104c['query'][_0xf471('0x25')]+'%'};return _0x250f07;})});}_0x4307b4=_[_0xf471('0x42')]({},_0x4307b4,_0x53104c[_0xf471('0x45')]);return _0x2945fe['getTeams'](_0x4307b4);}})[_0xf471('0x1f')](function(_0x1329fd){if(_0x1329fd){_0x21b730=_0x1329fd[_0xf471('0x38')];if(!_0x53104c[_0xf471('0x33')][_0xf471('0x39')](_0xf471('0x5d'))){_0x4307b4[_0xf471('0x3a')]=qs[_0xf471('0x3a')](_0x53104c['query']['limit']);_0x4307b4[_0xf471('0x18')]=qs['offset'](_0x53104c[_0xf471('0x33')][_0xf471('0x18')]);}return _0x2945fe[_0xf471('0x67')](_0x4307b4);}})[_0xf471('0x1f')](function(_0x1176d3){if(_0x1176d3){return _0x1176d3?{'count':_0x21b730,'rows':_0x1176d3}:null;}})[_0xf471('0x1f')](respondWithResult(_0x241a23,null))[_0xf471('0x53')](handleError(_0x241a23,null));};exports['addTeams']=function(_0x2b0964,_0x504c1f,_0x4037de){var _0x180d5b=[];var _0x714aee;return db[_0xf471('0x68')]['findAll']({'where':{'id':_0x2b0964[_0xf471('0x4c')][_0xf471('0x69')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xf471('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xf471('0x1f')](function(_0x3b484f){if(_0x3b484f){for(var _0x308294=0x0;_0x308294<_0x3b484f[_0xf471('0x38')];_0x308294+=0x1){for(var _0x1a4bb1=0x0;_0x1a4bb1<_0x3b484f[_0x308294][_0xf471('0x6a')][_0xf471('0x38')];_0x1a4bb1+=0x1){_0x180d5b=_['union'](_0x180d5b,[_0x3b484f[_0x308294][_0xf471('0x6a')][_0x1a4bb1]['id']]);}}return _0x180d5b;}})[_0xf471('0x1f')](function(_0x2892da){if(_0x2892da){return db['VoiceQueue'][_0xf471('0x4a')]({'where':{'id':_0x2b0964[_0xf471('0x56')]['id']}});}})['then'](function(_0x429a04){if(_0x429a04){_0x714aee=_0x429a04;return _0x714aee[_0xf471('0x6b')](_0x180d5b,{'penalty':_0x2b0964[_0xf471('0x4c')]['penalty']});}})[_0xf471('0x1f')](function(_0xd6c6c6){if(_0xd6c6c6){return _0x714aee[_0xf471('0x6c')](_0x2b0964[_0xf471('0x4c')][_0xf471('0x69')]);}})['then'](handleEntityNotFound(_0x504c1f,null))['then'](respondWithStatusCode(_0x504c1f,null))[_0xf471('0x53')](handleError(_0x504c1f,null));};exports[_0xf471('0x6d')]=function(_0x458eba,_0x4c3ccd,_0x517ff7){var _0x25de25=[];var _0xb803ac;return db['Team'][_0xf471('0x62')]({'where':{'id':_0x458eba[_0xf471('0x33')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0xf471('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xf471('0x1f')](function(_0x46cd4b){if(_0x46cd4b){for(var _0x1a8312=0x0;_0x1a8312<_0x46cd4b['length'];_0x1a8312+=0x1){for(var _0x4db3c6=0x0;_0x4db3c6<_0x46cd4b[_0x1a8312][_0xf471('0x6a')][_0xf471('0x38')];_0x4db3c6+=0x1){_0x25de25=_['union'](_0x25de25,[_0x46cd4b[_0x1a8312][_0xf471('0x6a')][_0x4db3c6]['id']]);}}return _0x25de25;}})[_0xf471('0x1f')](function(_0x19c109){if(_0x19c109){return db[_0xf471('0x2f')]['find']({'where':{'id':_0x458eba[_0xf471('0x56')]['id']}});}})[_0xf471('0x1f')](function(_0x411488){if(_0x411488){_0xb803ac=_0x411488;return _0xb803ac[_0xf471('0x6e')](_0x25de25);}})[_0xf471('0x1f')](function(_0xcd07c7){if(_0xb803ac){return _0xb803ac[_0xf471('0x6d')](_0x458eba[_0xf471('0x33')][_0xf471('0x69')]);}})['then'](handleEntityNotFound(_0x4c3ccd,null))['then'](respondWithStatusCode(_0x4c3ccd,null))['catch'](handleError(_0x4c3ccd,null));};exports['addAgents']=function(_0x163cf6,_0x2cf564,_0x35bfea){var _0x32ed9f,_0x231b51;return db[_0xf471('0x2f')]['find']({'where':{'id':_0x163cf6[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x2cf564,null))['then'](function(_0x243e35){if(_0x243e35){_0x231b51=_0x243e35;return _0x243e35[_0xf471('0x6b')](_0x163cf6[_0xf471('0x4c')][_0xf471('0x69')],_[_0xf471('0x57')](_0x163cf6[_0xf471('0x4c')],[_0xf471('0x69'),'id'])||{})['spread'](function(_0x32775f){for(var _0x211df6=0x0;_0x211df6<_0x163cf6[_0xf471('0x4c')][_0xf471('0x69')][_0xf471('0x38')];_0x211df6+=0x1){socket[_0xf471('0x6f')]('userVoiceQueue:save',{'UserId':_0x163cf6[_0xf471('0x4c')]['ids'][_0x211df6],'VoiceQueueId':_0x163cf6[_0xf471('0x56')]['id']});}return _0x32775f;});}})['then'](function(_0x4cfb4f){_0x32ed9f=_0x4cfb4f||[];if(_0x231b51){return db[_0xf471('0x70')][_0xf471('0x62')]({'where':{'id':_0x163cf6[_0xf471('0x4c')][_0xf471('0x69')]},'attributes':['id','name',_0xf471('0x71'),_0xf471('0x72'),_0xf471('0x73')],'raw':!![]});}})['then'](function(_0x4fd76f){if(_0x4fd76f&&_0x4fd76f['length']){var _0x41cfd2=[];for(var _0x44913d=0x0;_0x44913d<_0x4fd76f[_0xf471('0x38')];_0x44913d++){_0x41cfd2[_0xf471('0x74')](db[_0xf471('0x75')][_0xf471('0x76')]({'membername':_0x4fd76f[_0x44913d][_0xf471('0x2c')],'UserId':_0x4fd76f[_0x44913d]['id'],'queue_name':_0x231b51[_0xf471('0x2c')],'VoiceQueueId':_0x231b51['id'],'interface':_[_0xf471('0x77')](_0x4fd76f[_0x44913d][_0xf471('0x73')])?util['format'](_0xf471('0x78'),_0x4fd76f[_0x44913d][_0xf471('0x2c')]):_0x4fd76f[_0x44913d][_0xf471('0x73')],'paused':_0x4fd76f[_0x44913d]['voicePause']||![],'penalty':_0x163cf6[_0xf471('0x4c')][_0xf471('0x79')]||0x0}));}return BPromise[_0xf471('0x7a')](_0x41cfd2);}})[_0xf471('0x1f')](function(_0x38b394){return _0x32ed9f;})[_0xf471('0x1f')](respondWithResult(_0x2cf564,null))[_0xf471('0x53')](handleError(_0x2cf564,null));};exports[_0xf471('0x6e')]=function(_0x202319,_0x367770,_0x3b5fae){var _0x4d9b17;return db[_0xf471('0x2f')][_0xf471('0x4a')]({'where':{'id':_0x202319[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x367770,null))[_0xf471('0x1f')](function(_0x2667dd){if(_0x2667dd){return _0x2667dd[_0xf471('0x6e')](_0x202319[_0xf471('0x33')][_0xf471('0x69')])[_0xf471('0x1f')](function(_0x1f1286){if(_[_0xf471('0x7b')](_0x202319[_0xf471('0x33')][_0xf471('0x69')])){for(var _0x162a5e=0x0;_0x162a5e<_0x202319[_0xf471('0x33')][_0xf471('0x69')][_0xf471('0x38')];_0x162a5e+=0x1){socket[_0xf471('0x6f')](_0xf471('0x7c'),{'UserId':_0x202319['query'][_0xf471('0x69')][_0x162a5e],'VoiceQueueId':_0x202319[_0xf471('0x56')]['id']});}}else{socket[_0xf471('0x6f')]('userVoiceQueue:remove',{'UserId':_0x202319[_0xf471('0x33')][_0xf471('0x69')],'VoiceQueueId':_0x202319['params']['id']});}});}})[_0xf471('0x1f')](function(_0x7d7d51){if(_0x202319['query'][_0xf471('0x7d')]){_0x4d9b17=_0x7d7d51;return db[_0xf471('0x75')]['destroy']({'where':{'VoiceQueueId':_0x202319[_0xf471('0x56')]['id'],'UserId':_0x202319[_0xf471('0x33')][_0xf471('0x69')]}})[_0xf471('0x1f')](function(){return _0x4d9b17;});}})[_0xf471('0x1f')](respondWithStatusCode(_0x367770,null))[_0xf471('0x53')](handleError(_0x367770,null));};exports[_0xf471('0x7e')]=function(_0x1f5b57,_0x3bef65,_0x90bf0b){var _0x436f42={};var _0x960f85={};var _0x1882fa;var _0x25dc14;return db[_0xf471('0x2f')]['findOne']({'where':{'id':_0x1f5b57[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x3bef65,null))[_0xf471('0x1f')](function(_0xbc8640){if(_0xbc8640){_0x1882fa=_0xbc8640;_0x960f85[_0xf471('0x31')]=_[_0xf471('0x32')](db[_0xf471('0x70')][_0xf471('0x30')]);_0x960f85['query']=_['keys'](_0x1f5b57[_0xf471('0x33')]);_0x960f85[_0xf471('0x3e')]=_[_0xf471('0x36')](_0x960f85[_0xf471('0x31')],_0x960f85['query']);_0x436f42[_0xf471('0x37')]=_['intersection'](_0x960f85[_0xf471('0x31')],qs[_0xf471('0x49')](_0x1f5b57['query'][_0xf471('0x49')]));_0x436f42[_0xf471('0x37')]=_0x436f42[_0xf471('0x37')][_0xf471('0x38')]?_0x436f42[_0xf471('0x37')]:_0x960f85[_0xf471('0x31')];_0x436f42[_0xf471('0x3b')]=qs[_0xf471('0x3c')](_0x1f5b57[_0xf471('0x33')][_0xf471('0x3c')]);_0x436f42[_0xf471('0x3d')]=qs[_0xf471('0x3e')](_['pick'](_0x1f5b57[_0xf471('0x33')],_0x960f85['filters']));if(_0x1f5b57[_0xf471('0x33')][_0xf471('0x25')]){_0x436f42[_0xf471('0x3d')]=_[_0xf471('0x42')](_0x436f42[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x436f42[_0xf471('0x37')],function(_0x34b623){var _0x2a6dd3={};_0x2a6dd3[_0x34b623]={'$like':'%'+_0x1f5b57['query'][_0xf471('0x25')]+'%'};return _0x2a6dd3;})});}_0x436f42=_[_0xf471('0x42')]({},_0x436f42,_0x1f5b57[_0xf471('0x45')]);return _0x1882fa[_0xf471('0x7e')](_0x436f42);}})[_0xf471('0x1f')](function(_0x23e9a7){if(_0x23e9a7){_0x25dc14=_0x23e9a7[_0xf471('0x38')];if(!_0x1f5b57[_0xf471('0x33')][_0xf471('0x39')](_0xf471('0x5d'))){_0x436f42[_0xf471('0x3a')]=qs[_0xf471('0x3a')](_0x1f5b57['query'][_0xf471('0x3a')]);_0x436f42['offset']=qs[_0xf471('0x18')](_0x1f5b57[_0xf471('0x33')][_0xf471('0x18')]);}return _0x1882fa['getAgents'](_0x436f42);}})['then'](function(_0x1d8428){if(_0x1d8428){return _0x1d8428?{'count':_0x25dc14,'rows':_0x1d8428}:null;}})[_0xf471('0x1f')](respondWithResult(_0x3bef65,null))[_0xf471('0x53')](handleError(_0x3bef65,null));};exports['getMembers']=function(_0x1f7d81,_0x2b0a7f,_0x1240fb){var _0x17c2e0={};var _0x10975b={};var _0x3cd5a3;var _0x48dc63;return db[_0xf471('0x2f')][_0xf471('0x5c')]({'where':{'id':_0x1f7d81[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x2b0a7f,null))[_0xf471('0x1f')](function(_0x436283){if(_0x436283){_0x3cd5a3=_0x436283;_0x10975b[_0xf471('0x31')]=_['keys'](db['UserVoiceQueueRt'][_0xf471('0x30')]);_0x10975b[_0xf471('0x33')]=_[_0xf471('0x32')](_0x1f7d81[_0xf471('0x33')]);_0x10975b[_0xf471('0x3e')]=_[_0xf471('0x36')](_0x10975b['model'],_0x10975b[_0xf471('0x33')]);_0x17c2e0[_0xf471('0x37')]=_[_0xf471('0x36')](_0x10975b[_0xf471('0x31')],qs['fields'](_0x1f7d81['query'][_0xf471('0x49')]));_0x17c2e0[_0xf471('0x37')]=_0x17c2e0[_0xf471('0x37')][_0xf471('0x38')]?_0x17c2e0[_0xf471('0x37')]:_0x10975b[_0xf471('0x31')];_0x17c2e0['order']=qs['sort'](_0x1f7d81['query'][_0xf471('0x3c')]);_0x17c2e0[_0xf471('0x3d')]=qs['filters'](_[_0xf471('0x3f')](_0x1f7d81[_0xf471('0x33')],_0x10975b[_0xf471('0x3e')]));if(_0x1f7d81[_0xf471('0x33')][_0xf471('0x25')]){_0x17c2e0[_0xf471('0x3d')]=_[_0xf471('0x42')](_0x17c2e0[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x17c2e0['attributes'],function(_0x345353){var _0x4df203={};_0x4df203[_0x345353]={'$like':'%'+_0x1f7d81[_0xf471('0x33')][_0xf471('0x25')]+'%'};return _0x4df203;})});}_0x17c2e0=_[_0xf471('0x42')]({},_0x17c2e0,_0x1f7d81[_0xf471('0x45')]);return _0x3cd5a3['getMembers'](_0x17c2e0);}})['then'](function(_0x4b1d61){if(_0x4b1d61){_0x48dc63=_0x4b1d61['length'];if(!_0x1f7d81[_0xf471('0x33')]['hasOwnProperty'](_0xf471('0x5d'))){_0x17c2e0[_0xf471('0x3a')]=qs[_0xf471('0x3a')](_0x1f7d81[_0xf471('0x33')]['limit']);_0x17c2e0[_0xf471('0x18')]=qs[_0xf471('0x18')](_0x1f7d81[_0xf471('0x33')][_0xf471('0x18')]);}return _0x3cd5a3[_0xf471('0x7f')](_0x17c2e0);}})[_0xf471('0x1f')](function(_0x44a106){return _0x44a106?{'count':_0x48dc63,'rows':_0x44a106}:null;})[_0xf471('0x1f')](respondWithResult(_0x2b0a7f,null))[_0xf471('0x53')](handleError(_0x2b0a7f,null));};exports[_0xf471('0x80')]=function(_0x1803c8,_0xc8df6b,_0x386ab1){var _0x2d5363={};var _0x2667c7={};var _0x436432;var _0x5e086d;return db['VoiceQueue'][_0xf471('0x5c')]({'where':{'id':_0x1803c8[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0xc8df6b,null))[_0xf471('0x1f')](function(_0x4e1d96){if(_0x4e1d96){_0x436432=_0x4e1d96;_0x2667c7[_0xf471('0x31')]=_[_0xf471('0x32')](db['CmList'][_0xf471('0x30')]);_0x2667c7['query']=_['keys'](_0x1803c8['query']);_0x2667c7[_0xf471('0x3e')]=_[_0xf471('0x36')](_0x2667c7[_0xf471('0x31')],_0x2667c7['query']);_0x2d5363[_0xf471('0x37')]=_[_0xf471('0x36')](_0x2667c7[_0xf471('0x31')],qs['fields'](_0x1803c8[_0xf471('0x33')][_0xf471('0x49')]));_0x2d5363[_0xf471('0x37')]=_0x2d5363[_0xf471('0x37')][_0xf471('0x38')]?_0x2d5363['attributes']:_0x2667c7[_0xf471('0x31')];_0x2d5363[_0xf471('0x3b')]=qs[_0xf471('0x3c')](_0x1803c8[_0xf471('0x33')][_0xf471('0x3c')]);_0x2d5363[_0xf471('0x3d')]=qs['filters'](_[_0xf471('0x3f')](_0x1803c8[_0xf471('0x33')],_0x2667c7['filters']));if(_0x1803c8[_0xf471('0x33')][_0xf471('0x25')]){_0x2d5363[_0xf471('0x3d')]=_[_0xf471('0x42')](_0x2d5363[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x2d5363[_0xf471('0x37')],function(_0x539309){var _0x80d241={};_0x80d241[_0x539309]={'$like':'%'+_0x1803c8['query']['filter']+'%'};return _0x80d241;})});}_0x2d5363=_[_0xf471('0x42')]({},_0x2d5363,_0x1803c8[_0xf471('0x45')]);return _0x436432[_0xf471('0x80')](_0x2d5363);}})[_0xf471('0x1f')](function(_0x79f049){if(_0x79f049){_0x5e086d=_0x79f049[_0xf471('0x38')];if(!_0x1803c8['query'][_0xf471('0x39')]('nolimit')){_0x2d5363[_0xf471('0x3a')]=qs['limit'](_0x1803c8['query']['limit']);_0x2d5363[_0xf471('0x18')]=qs[_0xf471('0x18')](_0x1803c8['query'][_0xf471('0x18')]);}return _0x436432[_0xf471('0x80')](_0x2d5363);}})[_0xf471('0x1f')](function(_0x28a2b6){if(_0x28a2b6){return _0x28a2b6?{'count':_0x5e086d,'rows':_0x28a2b6}:null;}})['then'](respondWithResult(_0xc8df6b,null))[_0xf471('0x53')](handleError(_0xc8df6b,null));};exports['addLists']=function(_0x4f2e75,_0x372d62,_0x2b5268){var _0x433991,_0x10fa35;return db[_0xf471('0x2f')]['find']({'where':{'id':_0x4f2e75['params']['id']}})['then'](handleEntityNotFound(_0x372d62,null))[_0xf471('0x1f')](function(_0x2b5063){if(_0x2b5063){_0x10fa35=_0x2b5063;return _0x2b5063[_0xf471('0x81')](_0x4f2e75[_0xf471('0x4c')][_0xf471('0x69')],_[_0xf471('0x57')](_0x4f2e75[_0xf471('0x4c')],[_0xf471('0x69'),'id'])||{});}return null;})[_0xf471('0x82')](function(_0x225d3c){var _0x41c504;_0x433991=_0x225d3c||[];var _0x34785a=[];if(_0x225d3c){for(var _0x31fa60=0x0;_0x31fa60<_0x225d3c[_0xf471('0x38')];_0x31fa60+=0x1){var _0x3a2cd0=_0x225d3c[_0x31fa60]['get']({'plain':!![]});_0x10fa35[_0xf471('0x83')]=_0x4f2e75[_0xf471('0x4c')]['dialCheckDuplicateType']?_0x4f2e75['body'][_0xf471('0x83')]:_0x10fa35[_0xf471('0x83')];switch(_0x10fa35[_0xf471('0x83')]){case'always':_0x41c504=squel['insert']()['into'](_0xf471('0x84'))[_0xf471('0x85')]([_0xf471('0x86'),_0xf471('0x87'),_0xf471('0x88'),_0xf471('0x89'),_0xf471('0x61'),_0xf471('0x58'),'updatedAt'],squel[_0xf471('0x8a')]()[_0xf471('0x8b')](_0xf471('0x86'),_0xf471('0x86'))[_0xf471('0x8b')](_0xf471('0x8c'),_0xf471('0x87'))[_0xf471('0x8b')]('id',_0xf471('0x88'))[_0xf471('0x8b')](_0x3a2cd0[_0xf471('0x8d')][_0xf471('0x8e')](),_0xf471('0x89'))[_0xf471('0x8b')](_0x4f2e75[_0xf471('0x56')]['id']['toString'](),'VoiceQueueId')[_0xf471('0x8b')](_0xf471('0x8c'),_0xf471('0x58'))[_0xf471('0x8b')]('NOW()',_0xf471('0x59'))[_0xf471('0x8f')]('cm_contacts')[_0xf471('0x3d')](_0xf471('0x90'))[_0xf471('0x3d')](_0xf471('0x91'),_0x3a2cd0[_0xf471('0x8d')]['toString']())[_0xf471('0x3d')]('phone\x20IS\x20NOT\x20NULL')[_0xf471('0x3d')](_0xf471('0x92'),squel[_0xf471('0x8a')]()[_0xf471('0x8b')](_0xf471('0x93'))[_0xf471('0x8f')](_0xf471('0x94'))[_0xf471('0x3d')](_0xf471('0x95'),_0x4f2e75[_0xf471('0x56')]['id'][_0xf471('0x8e')]()))['where'](_0xf471('0x92'),squel['select']()['field'](_0xf471('0x86'))['from'](_0xf471('0x84'))[_0xf471('0x3d')](_0xf471('0x95'),_0x4f2e75['params']['id'][_0xf471('0x8e')]())))[_0xf471('0x8e')]();break;case _0xf471('0x96'):_0x41c504=squel[_0xf471('0x97')]()[_0xf471('0x98')](_0xf471('0x84'))[_0xf471('0x85')]([_0xf471('0x86'),_0xf471('0x87'),_0xf471('0x88'),_0xf471('0x89'),_0xf471('0x61'),_0xf471('0x58'),_0xf471('0x59')],squel['select']()[_0xf471('0x8b')]('phone',_0xf471('0x86'))[_0xf471('0x8b')](_0xf471('0x8c'),_0xf471('0x87'))[_0xf471('0x8b')]('id',_0xf471('0x88'))[_0xf471('0x8b')](_0x3a2cd0['CmListId']['toString'](),_0xf471('0x89'))[_0xf471('0x8b')](_0x4f2e75[_0xf471('0x56')]['id'][_0xf471('0x8e')](),'VoiceQueueId')[_0xf471('0x8b')](_0xf471('0x8c'),_0xf471('0x58'))['field']('NOW()','updatedAt')[_0xf471('0x8f')](_0xf471('0x99'))['where'](_0xf471('0x90'))['where'](_0xf471('0x91'),_0x3a2cd0['CmListId'][_0xf471('0x8e')]())[_0xf471('0x3d')](_0xf471('0x9a'))[_0xf471('0x3d')](_0xf471('0x92'),squel[_0xf471('0x8a')]()[_0xf471('0x8b')](_0xf471('0x86'))['from']('cm_hopper')['where'](_0xf471('0x95'),_0x4f2e75[_0xf471('0x56')]['id'][_0xf471('0x8e')]())))['toString']();break;default:_0x41c504=squel['insert']()[_0xf471('0x98')](_0xf471('0x84'))[_0xf471('0x85')]([_0xf471('0x86'),_0xf471('0x87'),_0xf471('0x88'),'ListId',_0xf471('0x61'),_0xf471('0x58'),'updatedAt'],squel['select']()['field'](_0xf471('0x86'),'phone')[_0xf471('0x8b')]('NOW()',_0xf471('0x87'))[_0xf471('0x8b')]('id','ContactId')['field'](_0x3a2cd0[_0xf471('0x8d')][_0xf471('0x8e')](),_0xf471('0x89'))['field'](_0x4f2e75[_0xf471('0x56')]['id'][_0xf471('0x8e')](),_0xf471('0x61'))[_0xf471('0x8b')](_0xf471('0x8c'),_0xf471('0x58'))[_0xf471('0x8b')]('NOW()',_0xf471('0x59'))[_0xf471('0x8f')](_0xf471('0x99'))[_0xf471('0x3d')](_0xf471('0x90'))[_0xf471('0x3d')](_0xf471('0x91'),_0x3a2cd0[_0xf471('0x8d')][_0xf471('0x8e')]())[_0xf471('0x3d')](_0xf471('0x9a')))['toString']();}_0x34785a[_0xf471('0x74')](db['sequelize'][_0xf471('0x33')](_0x41c504));}return BPromise['all'](_0x34785a);}})[_0xf471('0x1f')](function(){return _0x433991;})[_0xf471('0x1f')](respondWithResult(_0x372d62,null))['catch'](handleError(_0x372d62,null));};exports[_0xf471('0x9b')]=function(_0x42586b,_0x326dbd,_0x1a0447){var _0x38aef6;return db[_0xf471('0x2f')][_0xf471('0x4a')]({'where':{'id':_0x42586b[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x326dbd,null))['then'](function(_0x2caf00){if(_0x2caf00){return _0x2caf00[_0xf471('0x9b')](_0x42586b[_0xf471('0x33')][_0xf471('0x69')]);}})[_0xf471('0x1f')](function(_0x281f3f){if(_0x281f3f){_0x38aef6=_0x281f3f;return db[_0xf471('0x5e')][_0xf471('0x2a')]({'where':{'ListId':_0x42586b[_0xf471('0x33')][_0xf471('0x69')],'VoiceQueueId':_0x42586b[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](function(){return _0x38aef6;});}})[_0xf471('0x1f')](respondWithStatusCode(_0x326dbd,null))[_0xf471('0x53')](handleError(_0x326dbd,null));};exports[_0xf471('0x9c')]=function(_0x329d16,_0x21b187,_0x3e3227){var _0x529709={};var _0xa9b3c3={};var _0x7be04b;var _0x3cf88a;return db[_0xf471('0x2f')][_0xf471('0x5c')]({'where':{'id':_0x329d16[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x21b187,null))['then'](function(_0x4cfc72){if(_0x4cfc72){_0x7be04b=_0x4cfc72;_0xa9b3c3[_0xf471('0x31')]=_[_0xf471('0x32')](db[_0xf471('0x9d')]['rawAttributes']);_0xa9b3c3[_0xf471('0x33')]=_[_0xf471('0x32')](_0x329d16[_0xf471('0x33')]);_0xa9b3c3[_0xf471('0x3e')]=_['intersection'](_0xa9b3c3[_0xf471('0x31')],_0xa9b3c3[_0xf471('0x33')]);_0x529709[_0xf471('0x37')]=_[_0xf471('0x36')](_0xa9b3c3['model'],qs[_0xf471('0x49')](_0x329d16['query'][_0xf471('0x49')]));_0x529709[_0xf471('0x37')]=_0x529709[_0xf471('0x37')][_0xf471('0x38')]?_0x529709[_0xf471('0x37')]:_0xa9b3c3['model'];_0x529709[_0xf471('0x3b')]=qs[_0xf471('0x3c')](_0x329d16[_0xf471('0x33')][_0xf471('0x3c')]);_0x529709[_0xf471('0x3d')]=qs[_0xf471('0x3e')](_[_0xf471('0x3f')](_0x329d16[_0xf471('0x33')],_0xa9b3c3['filters']));if(_0x329d16[_0xf471('0x33')][_0xf471('0x25')]){_0x529709[_0xf471('0x3d')]=_['merge'](_0x529709[_0xf471('0x3d')],{'$or':_[_0xf471('0x26')](_0x529709['attributes'],function(_0x31a906){var _0xde1b27={};_0xde1b27[_0x31a906]={'$like':'%'+_0x329d16[_0xf471('0x33')][_0xf471('0x25')]+'%'};return _0xde1b27;})});}_0x529709=_[_0xf471('0x42')]({},_0x529709,_0x329d16[_0xf471('0x45')]);return _0x7be04b[_0xf471('0x9c')](_0x529709);}})[_0xf471('0x1f')](function(_0x3d3aa9){if(_0x3d3aa9){_0x3cf88a=_0x3d3aa9[_0xf471('0x38')];if(!_0x329d16[_0xf471('0x33')][_0xf471('0x39')](_0xf471('0x5d'))){_0x529709[_0xf471('0x3a')]=qs[_0xf471('0x3a')](_0x329d16['query'][_0xf471('0x3a')]);_0x529709[_0xf471('0x18')]=qs[_0xf471('0x18')](_0x329d16['query'][_0xf471('0x18')]);}return _0x7be04b[_0xf471('0x9c')](_0x529709);}})['then'](function(_0x252267){if(_0x252267){return _0x252267?{'count':_0x3cf88a,'rows':_0x252267}:null;}})[_0xf471('0x1f')](respondWithResult(_0x21b187,null))[_0xf471('0x53')](handleError(_0x21b187,null));};exports[_0xf471('0x9e')]=function(_0x583c3d,_0xec8437,_0x947dce){var _0x4a3511,_0x41f8ef;return db[_0xf471('0x2f')]['find']({'where':{'id':_0x583c3d['params']['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0xec8437,null))[_0xf471('0x1f')](function(_0x33154c){if(_0x33154c){_0x41f8ef=_0x33154c;return _0x33154c['addBlackLists'](_0x583c3d[_0xf471('0x4c')]['ids'],_[_0xf471('0x57')](_0x583c3d[_0xf471('0x4c')],[_0xf471('0x69'),'id'])||{});}return null;})[_0xf471('0x82')](function(_0x32e2dc){var _0x2322c3;_0x4a3511=_0x32e2dc||[];var _0x23ff18=[];if(_0x32e2dc){for(var _0x475152=0x0;_0x475152<_0x32e2dc['length'];_0x475152+=0x1){var _0x2209c6=_0x32e2dc[_0x475152][_0xf471('0x20')]({'plain':!![]});_0x2322c3=squel['insert']()[_0xf471('0x98')](_0xf471('0x9f'))[_0xf471('0x85')]([_0xf471('0x86'),_0xf471('0x88'),_0xf471('0x89'),_0xf471('0x61'),_0xf471('0x58'),_0xf471('0x59')],squel[_0xf471('0x8a')]()[_0xf471('0x8b')]('phone',_0xf471('0x86'))[_0xf471('0x8b')]('id',_0xf471('0x88'))[_0xf471('0x8b')](_0x2209c6[_0xf471('0x8d')]['toString'](),_0xf471('0x89'))[_0xf471('0x8b')](_0x583c3d[_0xf471('0x56')]['id']['toString'](),_0xf471('0x61'))['field'](_0xf471('0x8c'),_0xf471('0x58'))[_0xf471('0x8b')](_0xf471('0x8c'),_0xf471('0x59'))['from'](_0xf471('0x99'))[_0xf471('0x3d')]('deletedAt\x20IS\x20NULL')[_0xf471('0x3d')](_0xf471('0x91'),_0x2209c6[_0xf471('0x8d')][_0xf471('0x8e')]())[_0xf471('0x3d')](_0xf471('0x9a')))[_0xf471('0x8e')]();_0x23ff18[_0xf471('0x74')](db['sequelize'][_0xf471('0x33')](_0x2322c3));}return BPromise['all'](_0x23ff18);}})['then'](function(){return _0x4a3511;})[_0xf471('0x1f')](respondWithResult(_0xec8437,null))['catch'](handleError(_0xec8437,null));};exports[_0xf471('0xa0')]=function(_0x882e02,_0x5ba0d7,_0x261428){var _0x1656e3;return db[_0xf471('0x2f')][_0xf471('0x4a')]({'where':{'id':_0x882e02[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](handleEntityNotFound(_0x5ba0d7,null))[_0xf471('0x1f')](function(_0xd8dceb){if(_0xd8dceb){return _0xd8dceb[_0xf471('0xa0')](_0x882e02[_0xf471('0x33')]['ids']);}})[_0xf471('0x1f')](function(_0x4735a8){if(_0x4735a8){_0x1656e3=_0x4735a8;return db[_0xf471('0x66')][_0xf471('0x2a')]({'where':{'ListId':_0x882e02['query']['ids'],'VoiceQueueId':_0x882e02[_0xf471('0x56')]['id']}})[_0xf471('0x1f')](function(){return _0x1656e3;});}})[_0xf471('0x1f')](respondWithStatusCode(_0x5ba0d7,null))[_0xf471('0x53')](handleError(_0x5ba0d7,null));};
\ No newline at end of file
+var _0x58de=['realtime','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','toString','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','cm_hopper_final','VoiceQueueId\x20=\x20?','CmListId','push','removeLists','getBlackLists','addBlackLists','cm_hopper_black','sequelize','all','removeBlackLists','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','end','json','count','offset','status','Content-Range','apply','reject','save','then','destroy','VoiceQueues','inbound','outbound','filter','map','value','includes','find','type','error','stack','name','send','index','VoiceQueue','rawAttributes','model','keys','dateStart','query','dateEnd','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','filters','pick','add','day','merge','key','options','include','findAll','show','params','includeAll','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','QueueCampaigns','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','UserProfileSection','autoAssociation','update','getHoppers','findOne','VoiceQueueId','CmHopper','rows','getHopperHistories','nolimit','CmHopperHistory','CmHopperFinal','CmHopperBlack','Team','getTeams','addTeams','ids','Agents','union','removeTeams','User','removeAgents','addAgents','omit','spread','emit','userVoiceQueue:save','loginInPause','UserVoiceQueueRt','upsert','interface','format','SIP/%s','penalty','userVoiceQueue:remove'];(function(_0x56273c,_0x574e50){var _0x974fc3=function(_0x4b607d){while(--_0x4b607d){_0x56273c['push'](_0x56273c['shift']());}};_0x974fc3(++_0x574e50);}(_0x58de,0x171));var _0xe58d=function(_0x1353aa,_0x2402bd){_0x1353aa=_0x1353aa-0x0;var _0x1c94bc=_0x58de[_0x1353aa];return _0x1c94bc;};'use strict';var pdf=require(_0xe58d('0x0'));var emlformat=require(_0xe58d('0x1'));var rimraf=require(_0xe58d('0x2'));var zipdir=require(_0xe58d('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe58d('0x4'));var moment=require(_0xe58d('0x5'));var BPromise=require(_0xe58d('0x6'));var Mustache=require(_0xe58d('0x7'));var util=require(_0xe58d('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xe58d('0x9'));var ejs=require(_0xe58d('0xa'));var fs=require('fs');var _=require(_0xe58d('0xb'));var squel=require(_0xe58d('0xc'));var crypto=require(_0xe58d('0xd'));var jsforce=require(_0xe58d('0xe'));var deskjs=require(_0xe58d('0xf'));var toCsv=require(_0xe58d('0x9'));var querystring=require(_0xe58d('0x10'));var Papa=require('papaparse');var Redis=require(_0xe58d('0x11'));var qs=require(_0xe58d('0x12'));var logger=require(_0xe58d('0x13'))(_0xe58d('0x14'));var utils=require(_0xe58d('0x15'));var config=require('../../config/environment');var db=require(_0xe58d('0x16'))['db'];config[_0xe58d('0x17')]=_[_0xe58d('0x18')](config[_0xe58d('0x17')],{'host':_0xe58d('0x19'),'port':0x18eb});var socket=require(_0xe58d('0x1a'))(new Redis(config[_0xe58d('0x17')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x168acf,_0x11d836){_0x11d836=_0x11d836||0xcc;return function(_0x217f17){if(_0x217f17){return _0x168acf[_0xe58d('0x1b')](_0x11d836);}return _0x168acf['status'](_0x11d836)[_0xe58d('0x1c')]();};}function respondWithResult(_0x250e42,_0x148244){_0x148244=_0x148244||0xc8;return function(_0x1af2a8){if(_0x1af2a8){return _0x250e42['status'](_0x148244)[_0xe58d('0x1d')](_0x1af2a8);}};}function respondWithFilteredResult(_0x439c41,_0x3e24a8){return function(_0x4e7680){if(_0x4e7680){var _0x340d1a=_0x4e7680[_0xe58d('0x1e')],_0x160a29=_0x3e24a8['offset'],_0x33d4d8=_0x3e24a8[_0xe58d('0x1f')]+_0x3e24a8['limit'],_0x1b5bb5;if(_0x33d4d8>=_0x340d1a){_0x33d4d8=_0x340d1a;_0x1b5bb5=0xc8;}else{_0x1b5bb5=0xce;}_0x439c41[_0xe58d('0x20')](_0x1b5bb5);return _0x439c41['set'](_0xe58d('0x21'),_0x160a29+'-'+_0x33d4d8+'/'+_0x340d1a)['json'](_0x4e7680);}return null;};}function patchUpdates(_0x5770b9){return function(_0x7e8069){try{jsonpatch[_0xe58d('0x22')](_0x7e8069,_0x5770b9,!![]);}catch(_0x10f66f){return BPromise[_0xe58d('0x23')](_0x10f66f);}return _0x7e8069[_0xe58d('0x24')]();};}function saveUpdates(_0x4b2d93,_0x1620f9){return function(_0x55ba8a){if(_0x55ba8a){return _0x55ba8a['update'](_0x4b2d93)[_0xe58d('0x25')](function(_0x320821){return _0x320821;});}return null;};}function removeEntity(_0x3cc373,_0x41a631){return function(_0x5dbd1a){if(_0x5dbd1a){return _0x5dbd1a[_0xe58d('0x26')]()['then'](function(){var _0x32056e=_0x5dbd1a['get']({'plain':!![]});var _0x2bc99d=[{'name':_0xe58d('0x27'),'value':_0xe58d('0x28'),'ignore':![]},{'name':'QueueCampaigns','value':_0xe58d('0x29'),'ignore':![]}];var _0x50fac3=_(_0x2bc99d)[_0xe58d('0x2a')]('ignore')[_0xe58d('0x2b')](_0xe58d('0x2c'))[_0xe58d('0x2c')]();if(_[_0xe58d('0x2d')](_0x50fac3,_0x32056e['type'])){return;}var _0x352d6a=_[_0xe58d('0x2e')](_0x2bc99d,[_0xe58d('0x2c'),_0x32056e[_0xe58d('0x2f')]])['name'];return db['UserProfileResource'][_0xe58d('0x26')]({'where':{'type':_0x352d6a,'resourceId':_0x32056e['id']}})[_0xe58d('0x25')](function(){return _0x5dbd1a;});})[_0xe58d('0x25')](function(){_0x3cc373[_0xe58d('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58b9c2,_0x48b9ee){return function(_0x491e21){if(!_0x491e21){_0x58b9c2[_0xe58d('0x1b')](0x194);}return _0x491e21;};}function handleError(_0x5cdb50,_0x3c0b26){_0x3c0b26=_0x3c0b26||0x1f4;return function(_0x49d9d7){logger[_0xe58d('0x30')](_0x49d9d7[_0xe58d('0x31')]);if(_0x49d9d7[_0xe58d('0x32')]){delete _0x49d9d7[_0xe58d('0x32')];}_0x5cdb50[_0xe58d('0x20')](_0x3c0b26)[_0xe58d('0x33')](_0x49d9d7);};}exports[_0xe58d('0x34')]=function(_0x5a86a2,_0x484a77){var _0x30d509={},_0x18aba3={},_0x172400={'count':0x0,'rows':[]};var _0x5127f8=db[_0xe58d('0x35')][_0xe58d('0x36')];_0x18aba3[_0xe58d('0x37')]=_[_0xe58d('0x38')](_0x5127f8);var _0x377703={'dateStart':_0x5a86a2['query'][_0xe58d('0x39')],'dateEnd':_0x5a86a2[_0xe58d('0x3a')][_0xe58d('0x3b')]};delete _0x5a86a2[_0xe58d('0x3a')]['dateStart'];delete _0x5a86a2[_0xe58d('0x3a')]['dateEnd'];_0x18aba3[_0xe58d('0x3a')]=_[_0xe58d('0x38')](_0x5a86a2[_0xe58d('0x3a')]);_0x18aba3['filters']=_[_0xe58d('0x3c')](_0x18aba3[_0xe58d('0x37')],_0x18aba3['query']);_0x30d509[_0xe58d('0x3d')]=_['intersection'](_0x18aba3[_0xe58d('0x37')],qs['fields'](_0x5a86a2['query'][_0xe58d('0x3e')]));_0x30d509['attributes']=_0x30d509['attributes'][_0xe58d('0x3f')]?_0x30d509[_0xe58d('0x3d')]:_0x18aba3['model'];if(!_0x5a86a2[_0xe58d('0x3a')][_0xe58d('0x40')]('nolimit')){_0x30d509[_0xe58d('0x41')]=qs[_0xe58d('0x41')](_0x5a86a2['query']['limit']);_0x30d509[_0xe58d('0x1f')]=qs[_0xe58d('0x1f')](_0x5a86a2['query']['offset']);}_0x30d509[_0xe58d('0x42')]=qs[_0xe58d('0x43')](_0x5a86a2[_0xe58d('0x3a')][_0xe58d('0x43')]);_0x30d509[_0xe58d('0x44')]=qs[_0xe58d('0x45')](_[_0xe58d('0x46')](_0x5a86a2[_0xe58d('0x3a')],_0x18aba3[_0xe58d('0x45')]));if(_0x377703[_0xe58d('0x39')]){if(_0x377703[_0xe58d('0x3b')]){_0x377703[_0xe58d('0x3b')]=moment(_0x377703[_0xe58d('0x3b')])[_0xe58d('0x47')](0x1,_0xe58d('0x48'));}else{_0x377703[_0xe58d('0x3b')]=moment(_0x377703[_0xe58d('0x39')])['add'](0x1,_0xe58d('0x48'));}_[_0xe58d('0x49')](_0x30d509['where'],{'createdAt':{'$gte':_0x377703[_0xe58d('0x39')],'$lte':_0x377703[_0xe58d('0x3b')]}});}if(_0x5a86a2[_0xe58d('0x3a')][_0xe58d('0x2a')]){_0x30d509['where']=_[_0xe58d('0x49')](_0x30d509[_0xe58d('0x44')],{'$or':_[_0xe58d('0x2b')](_0x5127f8,function(_0x20e22e){if(_0x20e22e[_0xe58d('0x2f')][_0xe58d('0x4a')]!=='VIRTUAL'){var _0x2cc923={};_0x2cc923[_0x20e22e['field']]={'$like':'%'+_0x5a86a2[_0xe58d('0x3a')][_0xe58d('0x2a')]+'%'};return _0x2cc923;}})});}_0x30d509=_[_0xe58d('0x49')]({},_0x30d509,_0x5a86a2[_0xe58d('0x4b')]);var _0x38a103={'where':_0x30d509[_0xe58d('0x44')]};return db['VoiceQueue'][_0xe58d('0x1e')](_0x38a103)[_0xe58d('0x25')](function(_0x199b6e){_0x172400['count']=_0x199b6e;if(_0x5a86a2[_0xe58d('0x3a')]['includeAll']){_0x30d509[_0xe58d('0x4c')]=[{'all':!![]}];}return db[_0xe58d('0x35')][_0xe58d('0x4d')](_0x30d509);})[_0xe58d('0x25')](function(_0x22ac71){_0x172400['rows']=_0x22ac71;return _0x172400;})[_0xe58d('0x25')](respondWithFilteredResult(_0x484a77,_0x30d509))['catch'](handleError(_0x484a77,null));};exports[_0xe58d('0x4e')]=function(_0x1c730b,_0x4578ff){var _0x1ebfeb={'raw':![],'where':{'id':_0x1c730b[_0xe58d('0x4f')]['id']}},_0x500103={};_0x500103[_0xe58d('0x37')]=_[_0xe58d('0x38')](db[_0xe58d('0x35')]['rawAttributes']);_0x500103[_0xe58d('0x3a')]=_['keys'](_0x1c730b[_0xe58d('0x3a')]);_0x500103[_0xe58d('0x45')]=_['intersection'](_0x500103[_0xe58d('0x37')],_0x500103['query']);_0x1ebfeb[_0xe58d('0x3d')]=_[_0xe58d('0x3c')](_0x500103[_0xe58d('0x37')],qs['fields'](_0x1c730b['query'][_0xe58d('0x3e')]));_0x1ebfeb[_0xe58d('0x3d')]=_0x1ebfeb[_0xe58d('0x3d')]['length']?_0x1ebfeb[_0xe58d('0x3d')]:_0x500103[_0xe58d('0x37')];if(_0x1c730b[_0xe58d('0x3a')][_0xe58d('0x50')]){_0x1ebfeb['include']=[{'all':!![]}];}_0x1ebfeb=_[_0xe58d('0x49')]({},_0x1ebfeb,_0x1c730b[_0xe58d('0x4b')]);return db['VoiceQueue'][_0xe58d('0x2e')](_0x1ebfeb)[_0xe58d('0x25')](handleEntityNotFound(_0x4578ff,null))['then'](respondWithResult(_0x4578ff,null))[_0xe58d('0x51')](handleError(_0x4578ff,null));};exports['create']=function(_0xf0e113,_0x311601){return db['VoiceQueue'][_0xe58d('0x52')](_0xf0e113[_0xe58d('0x53')],{})['then'](function(_0x2ae1e4){var _0x1c151f=_0xf0e113[_0xe58d('0x54')][_0xe58d('0x55')]({'plain':!![]});if(!_0x1c151f)throw new Error(_0xe58d('0x56'));if(_0x1c151f[_0xe58d('0x57')]===_0xe58d('0x54')){var _0x28cc3b=_0x2ae1e4[_0xe58d('0x55')]({'plain':!![]});var _0x160dd7=[{'name':_0xe58d('0x27'),'value':_0xe58d('0x28')},{'name':_0xe58d('0x58'),'value':_0xe58d('0x29')}];var _0x19451e=_['find'](_0x160dd7,['value',_0x28cc3b[_0xe58d('0x2f')]])[_0xe58d('0x32')];return db['UserProfileSection']['find']({'where':{'name':_0x19451e,'userProfileId':_0x1c151f['userProfileId']},'raw':!![]})['then'](function(_0x194831){if(_0x194831&&_0x194831['autoAssociation']===0x0){return db[_0xe58d('0x59')][_0xe58d('0x52')]({'name':_0x28cc3b['name'],'resourceId':_0x28cc3b['id'],'type':_0x194831['name'],'sectionId':_0x194831['id']},{})['then'](function(){return _0x2ae1e4;});}else{return _0x2ae1e4;}})[_0xe58d('0x51')](function(_0x4e7ca5){logger[_0xe58d('0x30')](_0xe58d('0x5a'),_0x4e7ca5);throw _0x4e7ca5;});}return _0x2ae1e4;})['then'](respondWithResult(_0x311601,0xc9))[_0xe58d('0x51')](handleError(_0x311601,null));};exports[_0xe58d('0x5b')]=function(_0x385325,_0x1fdc4b){var _0x5b9b8c={'raw':![],'where':{'id':_0x385325['params']['id']}},_0x56925a={};_0x56925a[_0xe58d('0x37')]=_[_0xe58d('0x38')](db[_0xe58d('0x35')]['rawAttributes']);_0x5b9b8c[_0xe58d('0x3d')]=_[_0xe58d('0x3c')](_0x56925a['model'],qs[_0xe58d('0x3e')](_0x385325[_0xe58d('0x3a')][_0xe58d('0x3e')]));_0x5b9b8c[_0xe58d('0x3d')]=_0x5b9b8c[_0xe58d('0x3d')][_0xe58d('0x3f')]?_0x5b9b8c[_0xe58d('0x3d')]:_0x56925a[_0xe58d('0x37')];if(_0x385325[_0xe58d('0x3a')]['includeAll']){_0x5b9b8c['include']=[{'all':!![]}];}_0x5b9b8c=_[_0xe58d('0x49')]({},_0x5b9b8c,_0x385325['options']);return db[_0xe58d('0x35')][_0xe58d('0x2e')](_0x5b9b8c)[_0xe58d('0x25')](handleEntityNotFound(_0x1fdc4b,null))['then'](function(_0x3a8e70){if(_0x3a8e70){var _0x3fbe92=_0x3a8e70[_0xe58d('0x55')]({'plain':!![]});_0x3fbe92=qs['omit'](_0x3fbe92,['id',_0xe58d('0x5c'),_0xe58d('0x5d')]);_0x385325[_0xe58d('0x53')]=_['omit'](_0x385325[_0xe58d('0x53')],['id',_0xe58d('0x5c'),'updatedAt']);return db[_0xe58d('0x35')][_0xe58d('0x52')](_[_0xe58d('0x49')](_0x3fbe92,_0x385325[_0xe58d('0x53')]),{'include':_0x385325[_0xe58d('0x3a')][_0xe58d('0x50')]?[{'all':!![]}]:undefined})['then'](function(_0xbd503){var _0x34bc3e=_0x385325[_0xe58d('0x54')][_0xe58d('0x55')]({'plain':!![]});if(!_0x34bc3e)throw new Error(_0xe58d('0x56'));if(_0x34bc3e['role']===_0xe58d('0x54')){var _0xfcd04e=_0xbd503['get']({'plain':!![]});var _0x2caea5=[{'name':_0xe58d('0x27'),'value':_0xe58d('0x28')},{'name':_0xe58d('0x58'),'value':_0xe58d('0x29')}];var _0x1d8857=_[_0xe58d('0x2e')](_0x2caea5,[_0xe58d('0x2c'),_0xfcd04e['type']])[_0xe58d('0x32')];return db[_0xe58d('0x5e')][_0xe58d('0x2e')]({'where':{'name':_0x1d8857,'userProfileId':_0x34bc3e['userProfileId']},'raw':!![]})[_0xe58d('0x25')](function(_0xceda32){if(_0xceda32&&_0xceda32[_0xe58d('0x5f')]===0x0){return db[_0xe58d('0x59')][_0xe58d('0x52')]({'name':_0xfcd04e[_0xe58d('0x32')],'resourceId':_0xfcd04e['id'],'type':_0xceda32[_0xe58d('0x32')],'sectionId':_0xceda32['id']},{})[_0xe58d('0x25')](function(){return _0xbd503;});}else{return _0xbd503;}})['catch'](function(_0x169f2a){logger[_0xe58d('0x30')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x169f2a);throw _0x169f2a;});}return _0xbd503;});}})[_0xe58d('0x25')](respondWithResult(_0x1fdc4b,0xc9))[_0xe58d('0x51')](handleError(_0x1fdc4b,null));};exports[_0xe58d('0x60')]=function(_0x451d9f,_0x5c6116){if(_0x451d9f[_0xe58d('0x53')]['id']){delete _0x451d9f['body']['id'];}return db[_0xe58d('0x35')][_0xe58d('0x2e')]({'where':{'id':_0x451d9f['params']['id']}})['then'](handleEntityNotFound(_0x5c6116,null))['then'](saveUpdates(_0x451d9f[_0xe58d('0x53')],null))[_0xe58d('0x25')](respondWithResult(_0x5c6116,null))[_0xe58d('0x51')](handleError(_0x5c6116,null));};exports[_0xe58d('0x26')]=function(_0x4be4ea,_0x225b0e){return db[_0xe58d('0x35')][_0xe58d('0x2e')]({'where':{'id':_0x4be4ea[_0xe58d('0x4f')]['id']}})['then'](handleEntityNotFound(_0x225b0e,null))['then'](removeEntity(_0x225b0e,null))['catch'](handleError(_0x225b0e,null));};exports[_0xe58d('0x61')]=function(_0x5bcb04,_0x537ce2,_0x1e8f6e){var _0x369b53={'raw':![],'where':{}};var _0x2fabc4={};var _0x14c561={'count':0x0,'rows':[]};return db[_0xe58d('0x35')][_0xe58d('0x62')]({'where':{'id':_0x5bcb04['params']['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x537ce2,null))['then'](function(_0x1a3891){if(_0x1a3891){_0x2fabc4['model']=_[_0xe58d('0x38')](db['CmHopper'][_0xe58d('0x36')]);_0x2fabc4['query']=_['keys'](_0x5bcb04[_0xe58d('0x3a')]);_0x2fabc4[_0xe58d('0x45')]=_[_0xe58d('0x3c')](_0x2fabc4[_0xe58d('0x37')],_0x2fabc4['query']);_0x369b53[_0xe58d('0x3d')]=_[_0xe58d('0x3c')](_0x2fabc4['model'],qs[_0xe58d('0x3e')](_0x5bcb04[_0xe58d('0x3a')][_0xe58d('0x3e')]));_0x369b53[_0xe58d('0x3d')]=_0x369b53[_0xe58d('0x3d')][_0xe58d('0x3f')]?_0x369b53[_0xe58d('0x3d')]:_0x2fabc4[_0xe58d('0x37')];if(!_0x5bcb04[_0xe58d('0x3a')][_0xe58d('0x40')]('nolimit')){_0x369b53[_0xe58d('0x41')]=qs[_0xe58d('0x41')](_0x5bcb04[_0xe58d('0x3a')][_0xe58d('0x41')]);_0x369b53[_0xe58d('0x1f')]=qs['offset'](_0x5bcb04['query'][_0xe58d('0x1f')]);}_0x369b53['order']=qs[_0xe58d('0x43')](_0x5bcb04['query'][_0xe58d('0x43')]);_0x369b53[_0xe58d('0x44')]=qs['filters'](_['pick'](_0x5bcb04[_0xe58d('0x3a')],_0x2fabc4['filters']));_0x369b53[_0xe58d('0x44')][_0xe58d('0x63')]=_0x1a3891['id'];if(_0x5bcb04['query'][_0xe58d('0x2a')]){_0x369b53[_0xe58d('0x44')]=_[_0xe58d('0x49')](_0x369b53['where'],{'$or':_[_0xe58d('0x2b')](_0x369b53[_0xe58d('0x3d')],function(_0x388c94){var _0x4c9f80={};_0x4c9f80[_0x388c94]={'$like':'%'+_0x5bcb04[_0xe58d('0x3a')][_0xe58d('0x2a')]+'%'};return _0x4c9f80;})});}_0x369b53=_[_0xe58d('0x49')]({},_0x369b53,_0x5bcb04[_0xe58d('0x4b')]);return db[_0xe58d('0x64')][_0xe58d('0x1e')]({'where':_0x369b53[_0xe58d('0x44')]})[_0xe58d('0x25')](function(_0x36dad4){_0x14c561['count']=_0x36dad4;if(_0x5bcb04[_0xe58d('0x3a')]['includeAll']){_0x369b53[_0xe58d('0x4c')]=[{'all':!![]}];}return db[_0xe58d('0x64')][_0xe58d('0x4d')](_0x369b53);})['then'](function(_0x2e2b68){_0x14c561[_0xe58d('0x65')]=_0x2e2b68;return _0x14c561;});}})[_0xe58d('0x25')](respondWithFilteredResult(_0x537ce2,_0x369b53))[_0xe58d('0x51')](handleError(_0x537ce2,null));};exports[_0xe58d('0x66')]=function(_0x2a80e0,_0x3779df,_0x330b45){var _0x37b46d={'raw':!![],'where':{}};var _0x488b29={};var _0x17640e={'count':0x0,'rows':[]};return db[_0xe58d('0x35')]['findOne']({'where':{'id':_0x2a80e0[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x3779df,null))[_0xe58d('0x25')](function(_0x3ed30c){if(_0x3ed30c){_0x488b29[_0xe58d('0x37')]=_['keys'](db['CmHopperHistory'][_0xe58d('0x36')]);_0x488b29[_0xe58d('0x3a')]=_[_0xe58d('0x38')](_0x2a80e0[_0xe58d('0x3a')]);_0x488b29[_0xe58d('0x45')]=_[_0xe58d('0x3c')](_0x488b29[_0xe58d('0x37')],_0x488b29['query']);_0x37b46d[_0xe58d('0x3d')]=_[_0xe58d('0x3c')](_0x488b29[_0xe58d('0x37')],qs[_0xe58d('0x3e')](_0x2a80e0[_0xe58d('0x3a')][_0xe58d('0x3e')]));_0x37b46d[_0xe58d('0x3d')]=_0x37b46d[_0xe58d('0x3d')][_0xe58d('0x3f')]?_0x37b46d[_0xe58d('0x3d')]:_0x488b29[_0xe58d('0x37')];if(!_0x2a80e0[_0xe58d('0x3a')][_0xe58d('0x40')](_0xe58d('0x67'))){_0x37b46d[_0xe58d('0x41')]=qs[_0xe58d('0x41')](_0x2a80e0['query'][_0xe58d('0x41')]);_0x37b46d[_0xe58d('0x1f')]=qs[_0xe58d('0x1f')](_0x2a80e0[_0xe58d('0x3a')]['offset']);}_0x37b46d[_0xe58d('0x42')]=qs[_0xe58d('0x43')](_0x2a80e0[_0xe58d('0x3a')][_0xe58d('0x43')]);_0x37b46d['where']=qs[_0xe58d('0x45')](_[_0xe58d('0x46')](_0x2a80e0[_0xe58d('0x3a')],_0x488b29[_0xe58d('0x45')]));_0x37b46d[_0xe58d('0x44')][_0xe58d('0x63')]=_0x3ed30c['id'];if(_0x2a80e0[_0xe58d('0x3a')][_0xe58d('0x2a')]){_0x37b46d['where']=_[_0xe58d('0x49')](_0x37b46d[_0xe58d('0x44')],{'$or':_[_0xe58d('0x2b')](_0x37b46d[_0xe58d('0x3d')],function(_0xf3908e){var _0x8c21d5={};_0x8c21d5[_0xf3908e]={'$like':'%'+_0x2a80e0['query'][_0xe58d('0x2a')]+'%'};return _0x8c21d5;})});}_0x37b46d=_[_0xe58d('0x49')]({},_0x37b46d,_0x2a80e0[_0xe58d('0x4b')]);return db[_0xe58d('0x68')][_0xe58d('0x1e')]({'where':_0x37b46d[_0xe58d('0x44')]})[_0xe58d('0x25')](function(_0x7a60b8){_0x17640e[_0xe58d('0x1e')]=_0x7a60b8;if(_0x2a80e0[_0xe58d('0x3a')][_0xe58d('0x50')]){_0x37b46d[_0xe58d('0x4c')]=[{'all':!![]}];}return db[_0xe58d('0x68')][_0xe58d('0x4d')](_0x37b46d);})[_0xe58d('0x25')](function(_0x2c1f2b){_0x17640e[_0xe58d('0x65')]=_0x2c1f2b;return _0x17640e;});}})[_0xe58d('0x25')](respondWithFilteredResult(_0x3779df,_0x37b46d))[_0xe58d('0x51')](handleError(_0x3779df,null));};exports['getHopperFinals']=function(_0x21f780,_0x267486,_0x3af643){var _0x53596d={'raw':!![],'where':{}};var _0x1f6d91={};var _0x42df82={'count':0x0,'rows':[]};return db[_0xe58d('0x35')]['findOne']({'where':{'id':_0x21f780[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x267486,null))[_0xe58d('0x25')](function(_0x527996){if(_0x527996){_0x1f6d91['model']=_[_0xe58d('0x38')](db[_0xe58d('0x69')][_0xe58d('0x36')]);_0x1f6d91[_0xe58d('0x3a')]=_[_0xe58d('0x38')](_0x21f780[_0xe58d('0x3a')]);_0x1f6d91['filters']=_[_0xe58d('0x3c')](_0x1f6d91['model'],_0x1f6d91[_0xe58d('0x3a')]);_0x53596d[_0xe58d('0x3d')]=_[_0xe58d('0x3c')](_0x1f6d91[_0xe58d('0x37')],qs['fields'](_0x21f780[_0xe58d('0x3a')]['fields']));_0x53596d[_0xe58d('0x3d')]=_0x53596d[_0xe58d('0x3d')]['length']?_0x53596d[_0xe58d('0x3d')]:_0x1f6d91[_0xe58d('0x37')];if(!_0x21f780[_0xe58d('0x3a')][_0xe58d('0x40')](_0xe58d('0x67'))){_0x53596d[_0xe58d('0x41')]=qs['limit'](_0x21f780[_0xe58d('0x3a')][_0xe58d('0x41')]);_0x53596d[_0xe58d('0x1f')]=qs['offset'](_0x21f780['query'][_0xe58d('0x1f')]);}_0x53596d['order']=qs[_0xe58d('0x43')](_0x21f780[_0xe58d('0x3a')][_0xe58d('0x43')]);_0x53596d[_0xe58d('0x44')]=qs[_0xe58d('0x45')](_[_0xe58d('0x46')](_0x21f780[_0xe58d('0x3a')],_0x1f6d91[_0xe58d('0x45')]));_0x53596d[_0xe58d('0x44')][_0xe58d('0x63')]=_0x527996['id'];if(_0x21f780[_0xe58d('0x3a')]['filter']){_0x53596d[_0xe58d('0x44')]=_[_0xe58d('0x49')](_0x53596d['where'],{'$or':_[_0xe58d('0x2b')](_0x53596d[_0xe58d('0x3d')],function(_0x320200){var _0x20dc31={};_0x20dc31[_0x320200]={'$like':'%'+_0x21f780['query'][_0xe58d('0x2a')]+'%'};return _0x20dc31;})});}_0x53596d=_[_0xe58d('0x49')]({},_0x53596d,_0x21f780[_0xe58d('0x4b')]);return db[_0xe58d('0x69')][_0xe58d('0x1e')]({'where':_0x53596d[_0xe58d('0x44')]})['then'](function(_0x4156e1){_0x42df82['count']=_0x4156e1;if(_0x21f780[_0xe58d('0x3a')][_0xe58d('0x50')]){_0x53596d[_0xe58d('0x4c')]=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x53596d);})['then'](function(_0x3dc740){_0x42df82[_0xe58d('0x65')]=_0x3dc740;return _0x42df82;});}})[_0xe58d('0x25')](respondWithFilteredResult(_0x267486,_0x53596d))[_0xe58d('0x51')](handleError(_0x267486,null));};exports['getHopperBlacks']=function(_0x4e11c2,_0x27de86,_0x330cd1){var _0x410a03={'raw':!![],'where':{}};var _0xef6b46={};var _0xffd67={'count':0x0,'rows':[]};return db[_0xe58d('0x35')][_0xe58d('0x62')]({'where':{'id':_0x4e11c2[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x27de86,null))['then'](function(_0x16164a){if(_0x16164a){_0xef6b46[_0xe58d('0x37')]=_[_0xe58d('0x38')](db[_0xe58d('0x6a')][_0xe58d('0x36')]);_0xef6b46[_0xe58d('0x3a')]=_['keys'](_0x4e11c2[_0xe58d('0x3a')]);_0xef6b46['filters']=_[_0xe58d('0x3c')](_0xef6b46[_0xe58d('0x37')],_0xef6b46[_0xe58d('0x3a')]);_0x410a03['attributes']=_[_0xe58d('0x3c')](_0xef6b46[_0xe58d('0x37')],qs[_0xe58d('0x3e')](_0x4e11c2[_0xe58d('0x3a')]['fields']));_0x410a03[_0xe58d('0x3d')]=_0x410a03[_0xe58d('0x3d')]['length']?_0x410a03[_0xe58d('0x3d')]:_0xef6b46[_0xe58d('0x37')];if(!_0x4e11c2[_0xe58d('0x3a')]['hasOwnProperty'](_0xe58d('0x67'))){_0x410a03['limit']=qs[_0xe58d('0x41')](_0x4e11c2['query'][_0xe58d('0x41')]);_0x410a03[_0xe58d('0x1f')]=qs[_0xe58d('0x1f')](_0x4e11c2['query'][_0xe58d('0x1f')]);}_0x410a03[_0xe58d('0x42')]=qs[_0xe58d('0x43')](_0x4e11c2[_0xe58d('0x3a')][_0xe58d('0x43')]);_0x410a03['where']=qs['filters'](_[_0xe58d('0x46')](_0x4e11c2['query'],_0xef6b46[_0xe58d('0x45')]));_0x410a03['where'][_0xe58d('0x63')]=_0x16164a['id'];if(_0x4e11c2['query'][_0xe58d('0x2a')]){_0x410a03[_0xe58d('0x44')]=_[_0xe58d('0x49')](_0x410a03['where'],{'$or':_[_0xe58d('0x2b')](_0x410a03[_0xe58d('0x3d')],function(_0x3ae506){var _0x5b2b79={};_0x5b2b79[_0x3ae506]={'$like':'%'+_0x4e11c2[_0xe58d('0x3a')]['filter']+'%'};return _0x5b2b79;})});}_0x410a03=_[_0xe58d('0x49')]({},_0x410a03,_0x4e11c2[_0xe58d('0x4b')]);return db['CmHopperBlack']['count']({'where':_0x410a03['where']})['then'](function(_0x3d2698){_0xffd67[_0xe58d('0x1e')]=_0x3d2698;if(_0x4e11c2[_0xe58d('0x3a')][_0xe58d('0x50')]){_0x410a03[_0xe58d('0x4c')]=[{'all':!![]}];}return db[_0xe58d('0x6a')][_0xe58d('0x4d')](_0x410a03);})[_0xe58d('0x25')](function(_0x2cfa9e){_0xffd67['rows']=_0x2cfa9e;return _0xffd67;});}})[_0xe58d('0x25')](respondWithFilteredResult(_0x27de86,_0x410a03))['catch'](handleError(_0x27de86,null));};exports['getTeams']=function(_0x10bf27,_0x250c54,_0x48038c){var _0x3e72e9={};var _0x2bb57f={};var _0x605fe1;var _0x131613;return db[_0xe58d('0x35')][_0xe58d('0x62')]({'where':{'id':_0x10bf27[_0xe58d('0x4f')]['id']}})['then'](handleEntityNotFound(_0x250c54,null))[_0xe58d('0x25')](function(_0x428f36){if(_0x428f36){_0x605fe1=_0x428f36;_0x2bb57f['model']=_[_0xe58d('0x38')](db[_0xe58d('0x6b')]['rawAttributes']);_0x2bb57f[_0xe58d('0x3a')]=_[_0xe58d('0x38')](_0x10bf27[_0xe58d('0x3a')]);_0x2bb57f['filters']=_[_0xe58d('0x3c')](_0x2bb57f[_0xe58d('0x37')],_0x2bb57f['query']);_0x3e72e9[_0xe58d('0x3d')]=_[_0xe58d('0x3c')](_0x2bb57f['model'],qs[_0xe58d('0x3e')](_0x10bf27[_0xe58d('0x3a')][_0xe58d('0x3e')]));_0x3e72e9[_0xe58d('0x3d')]=_0x3e72e9[_0xe58d('0x3d')]['length']?_0x3e72e9['attributes']:_0x2bb57f[_0xe58d('0x37')];_0x3e72e9['order']=qs[_0xe58d('0x43')](_0x10bf27[_0xe58d('0x3a')]['sort']);_0x3e72e9['where']=qs[_0xe58d('0x45')](_[_0xe58d('0x46')](_0x10bf27[_0xe58d('0x3a')],_0x2bb57f[_0xe58d('0x45')]));if(_0x10bf27['query'][_0xe58d('0x2a')]){_0x3e72e9[_0xe58d('0x44')]=_[_0xe58d('0x49')](_0x3e72e9[_0xe58d('0x44')],{'$or':_[_0xe58d('0x2b')](_0x3e72e9[_0xe58d('0x3d')],function(_0x4ee0ac){var _0x413194={};_0x413194[_0x4ee0ac]={'$like':'%'+_0x10bf27[_0xe58d('0x3a')][_0xe58d('0x2a')]+'%'};return _0x413194;})});}_0x3e72e9=_[_0xe58d('0x49')]({},_0x3e72e9,_0x10bf27[_0xe58d('0x4b')]);return _0x605fe1[_0xe58d('0x6c')](_0x3e72e9);}})[_0xe58d('0x25')](function(_0x195624){if(_0x195624){_0x131613=_0x195624[_0xe58d('0x3f')];if(!_0x10bf27[_0xe58d('0x3a')][_0xe58d('0x40')](_0xe58d('0x67'))){_0x3e72e9[_0xe58d('0x41')]=qs[_0xe58d('0x41')](_0x10bf27['query'][_0xe58d('0x41')]);_0x3e72e9[_0xe58d('0x1f')]=qs[_0xe58d('0x1f')](_0x10bf27[_0xe58d('0x3a')]['offset']);}return _0x605fe1[_0xe58d('0x6c')](_0x3e72e9);}})['then'](function(_0x32e2d6){if(_0x32e2d6){return _0x32e2d6?{'count':_0x131613,'rows':_0x32e2d6}:null;}})[_0xe58d('0x25')](respondWithResult(_0x250c54,null))['catch'](handleError(_0x250c54,null));};exports[_0xe58d('0x6d')]=function(_0x2b6657,_0x464f55,_0xcaa2e){var _0x302168=[];var _0x53dbef;return db['Team'][_0xe58d('0x4d')]({'where':{'id':_0x2b6657[_0xe58d('0x53')][_0xe58d('0x6e')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe58d('0x6f'),'attributes':['id'],'raw':!![]}]})[_0xe58d('0x25')](function(_0x537fc7){if(_0x537fc7){for(var _0x4eb402=0x0;_0x4eb402<_0x537fc7[_0xe58d('0x3f')];_0x4eb402+=0x1){for(var _0x587b4e=0x0;_0x587b4e<_0x537fc7[_0x4eb402][_0xe58d('0x6f')]['length'];_0x587b4e+=0x1){_0x302168=_[_0xe58d('0x70')](_0x302168,[_0x537fc7[_0x4eb402][_0xe58d('0x6f')][_0x587b4e]['id']]);}}return _0x302168;}})[_0xe58d('0x25')](function(_0x523667){if(_0x523667){return db[_0xe58d('0x35')][_0xe58d('0x2e')]({'where':{'id':_0x2b6657[_0xe58d('0x4f')]['id']}});}})['then'](function(_0xea3673){if(_0xea3673){_0x53dbef=_0xea3673;return _0x53dbef['addAgents'](_0x302168,{'penalty':_0x2b6657[_0xe58d('0x53')]['penalty']});}})[_0xe58d('0x25')](function(_0x43f8db){if(_0x43f8db){return _0x53dbef['addTeams'](_0x2b6657[_0xe58d('0x53')][_0xe58d('0x6e')]);}})[_0xe58d('0x25')](handleEntityNotFound(_0x464f55,null))[_0xe58d('0x25')](respondWithStatusCode(_0x464f55,null))['catch'](handleError(_0x464f55,null));};exports[_0xe58d('0x71')]=function(_0x14ecf6,_0x5e83f5,_0x129efd){var _0x205e54=[];var _0x366fe3;return db[_0xe58d('0x6b')][_0xe58d('0x4d')]({'where':{'id':_0x14ecf6[_0xe58d('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0xe58d('0x72')],'as':_0xe58d('0x6f'),'attributes':['id'],'raw':!![]}]})[_0xe58d('0x25')](function(_0x969238){if(_0x969238){for(var _0xb22ae0=0x0;_0xb22ae0<_0x969238[_0xe58d('0x3f')];_0xb22ae0+=0x1){for(var _0x353d27=0x0;_0x353d27<_0x969238[_0xb22ae0]['Agents'][_0xe58d('0x3f')];_0x353d27+=0x1){_0x205e54=_[_0xe58d('0x70')](_0x205e54,[_0x969238[_0xb22ae0][_0xe58d('0x6f')][_0x353d27]['id']]);}}return _0x205e54;}})['then'](function(_0x4b4ec3){if(_0x4b4ec3){return db[_0xe58d('0x35')][_0xe58d('0x2e')]({'where':{'id':_0x14ecf6[_0xe58d('0x4f')]['id']}});}})[_0xe58d('0x25')](function(_0x5e7d94){if(_0x5e7d94){_0x366fe3=_0x5e7d94;return _0x366fe3[_0xe58d('0x73')](_0x205e54);}})[_0xe58d('0x25')](function(_0x33dcd9){if(_0x366fe3){return _0x366fe3[_0xe58d('0x71')](_0x14ecf6[_0xe58d('0x3a')]['ids']);}})[_0xe58d('0x25')](handleEntityNotFound(_0x5e83f5,null))['then'](respondWithStatusCode(_0x5e83f5,null))[_0xe58d('0x51')](handleError(_0x5e83f5,null));};exports[_0xe58d('0x74')]=function(_0x2c5798,_0x24a17c,_0x4fd3d9){var _0x176396,_0x4b882d;return db['VoiceQueue'][_0xe58d('0x2e')]({'where':{'id':_0x2c5798[_0xe58d('0x4f')]['id']}})['then'](handleEntityNotFound(_0x24a17c,null))[_0xe58d('0x25')](function(_0x3dfe23){if(_0x3dfe23){_0x4b882d=_0x3dfe23;return _0x3dfe23[_0xe58d('0x74')](_0x2c5798[_0xe58d('0x53')][_0xe58d('0x6e')],_[_0xe58d('0x75')](_0x2c5798[_0xe58d('0x53')],[_0xe58d('0x6e'),'id'])||{})[_0xe58d('0x76')](function(_0x569f98){for(var _0x148cde=0x0;_0x148cde<_0x2c5798[_0xe58d('0x53')]['ids'][_0xe58d('0x3f')];_0x148cde+=0x1){socket[_0xe58d('0x77')](_0xe58d('0x78'),{'UserId':_0x2c5798[_0xe58d('0x53')][_0xe58d('0x6e')][_0x148cde],'VoiceQueueId':_0x2c5798[_0xe58d('0x4f')]['id']});}return _0x569f98;});}})[_0xe58d('0x25')](function(_0x33adca){_0x176396=_0x33adca||[];if(_0x4b882d){return db[_0xe58d('0x72')][_0xe58d('0x4d')]({'where':{'id':_0x2c5798[_0xe58d('0x53')][_0xe58d('0x6e')]},'attributes':['id',_0xe58d('0x32'),_0xe58d('0x79'),'voicePause','interface'],'raw':!![]});}})[_0xe58d('0x25')](function(_0x58f344){if(_0x58f344&&_0x58f344[_0xe58d('0x3f')]){var _0x4e1c7c=[];for(var _0xac9a63=0x0;_0xac9a63<_0x58f344[_0xe58d('0x3f')];_0xac9a63++){_0x4e1c7c['push'](db[_0xe58d('0x7a')][_0xe58d('0x7b')]({'membername':_0x58f344[_0xac9a63][_0xe58d('0x32')],'UserId':_0x58f344[_0xac9a63]['id'],'queue_name':_0x4b882d['name'],'VoiceQueueId':_0x4b882d['id'],'interface':_['isNil'](_0x58f344[_0xac9a63][_0xe58d('0x7c')])?util[_0xe58d('0x7d')](_0xe58d('0x7e'),_0x58f344[_0xac9a63][_0xe58d('0x32')]):_0x58f344[_0xac9a63][_0xe58d('0x7c')],'paused':_0x58f344[_0xac9a63]['voicePause']||![],'penalty':_0x2c5798[_0xe58d('0x53')][_0xe58d('0x7f')]||0x0}));}return BPromise['all'](_0x4e1c7c);}})[_0xe58d('0x25')](function(_0x20bd73){return _0x176396;})['then'](respondWithResult(_0x24a17c,null))[_0xe58d('0x51')](handleError(_0x24a17c,null));};exports['removeAgents']=function(_0x1abec2,_0x42fa35,_0xf4e9bc){var _0x1aff8b;return db[_0xe58d('0x35')][_0xe58d('0x2e')]({'where':{'id':_0x1abec2[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x42fa35,null))[_0xe58d('0x25')](function(_0x1f1054){if(_0x1f1054){return _0x1f1054['removeAgents'](_0x1abec2[_0xe58d('0x3a')][_0xe58d('0x6e')])[_0xe58d('0x25')](function(_0x27c2c5){if(_['isArray'](_0x1abec2[_0xe58d('0x3a')][_0xe58d('0x6e')])){for(var _0x1b47d4=0x0;_0x1b47d4<_0x1abec2[_0xe58d('0x3a')][_0xe58d('0x6e')][_0xe58d('0x3f')];_0x1b47d4+=0x1){socket[_0xe58d('0x77')]('userVoiceQueue:remove',{'UserId':_0x1abec2[_0xe58d('0x3a')][_0xe58d('0x6e')][_0x1b47d4],'VoiceQueueId':_0x1abec2[_0xe58d('0x4f')]['id']});}}else{socket['emit'](_0xe58d('0x80'),{'UserId':_0x1abec2[_0xe58d('0x3a')][_0xe58d('0x6e')],'VoiceQueueId':_0x1abec2[_0xe58d('0x4f')]['id']});}});}})['then'](function(_0x32d7b1){if(_0x1abec2[_0xe58d('0x3a')][_0xe58d('0x81')]){_0x1aff8b=_0x32d7b1;return db[_0xe58d('0x7a')][_0xe58d('0x26')]({'where':{'VoiceQueueId':_0x1abec2[_0xe58d('0x4f')]['id'],'UserId':_0x1abec2[_0xe58d('0x3a')]['ids']}})[_0xe58d('0x25')](function(){return _0x1aff8b;});}})[_0xe58d('0x25')](respondWithStatusCode(_0x42fa35,null))[_0xe58d('0x51')](handleError(_0x42fa35,null));};exports[_0xe58d('0x82')]=function(_0x22848f,_0x266d79,_0x5ae823){var _0x2592a9={};var _0x57694e={};var _0xffb503;var _0x446106;return db[_0xe58d('0x35')]['findOne']({'where':{'id':_0x22848f['params']['id']}})['then'](handleEntityNotFound(_0x266d79,null))[_0xe58d('0x25')](function(_0x5300d7){if(_0x5300d7){_0xffb503=_0x5300d7;_0x57694e[_0xe58d('0x37')]=_['keys'](db['User'][_0xe58d('0x36')]);_0x57694e[_0xe58d('0x3a')]=_['keys'](_0x22848f[_0xe58d('0x3a')]);_0x57694e[_0xe58d('0x45')]=_[_0xe58d('0x3c')](_0x57694e[_0xe58d('0x37')],_0x57694e[_0xe58d('0x3a')]);_0x2592a9[_0xe58d('0x3d')]=_[_0xe58d('0x3c')](_0x57694e[_0xe58d('0x37')],qs['fields'](_0x22848f[_0xe58d('0x3a')][_0xe58d('0x3e')]));_0x2592a9[_0xe58d('0x3d')]=_0x2592a9[_0xe58d('0x3d')][_0xe58d('0x3f')]?_0x2592a9[_0xe58d('0x3d')]:_0x57694e[_0xe58d('0x37')];_0x2592a9[_0xe58d('0x42')]=qs[_0xe58d('0x43')](_0x22848f['query'][_0xe58d('0x43')]);_0x2592a9[_0xe58d('0x44')]=qs['filters'](_[_0xe58d('0x46')](_0x22848f[_0xe58d('0x3a')],_0x57694e[_0xe58d('0x45')]));if(_0x22848f[_0xe58d('0x3a')]['filter']){_0x2592a9['where']=_[_0xe58d('0x49')](_0x2592a9[_0xe58d('0x44')],{'$or':_['map'](_0x2592a9[_0xe58d('0x3d')],function(_0x6d31f8){var _0x4fd94f={};_0x4fd94f[_0x6d31f8]={'$like':'%'+_0x22848f[_0xe58d('0x3a')][_0xe58d('0x2a')]+'%'};return _0x4fd94f;})});}_0x2592a9=_['merge']({},_0x2592a9,_0x22848f[_0xe58d('0x4b')]);return _0xffb503[_0xe58d('0x82')](_0x2592a9);}})[_0xe58d('0x25')](function(_0x58e487){if(_0x58e487){_0x446106=_0x58e487[_0xe58d('0x3f')];if(!_0x22848f[_0xe58d('0x3a')][_0xe58d('0x40')](_0xe58d('0x67'))){_0x2592a9[_0xe58d('0x41')]=qs[_0xe58d('0x41')](_0x22848f[_0xe58d('0x3a')][_0xe58d('0x41')]);_0x2592a9[_0xe58d('0x1f')]=qs['offset'](_0x22848f[_0xe58d('0x3a')][_0xe58d('0x1f')]);}return _0xffb503['getAgents'](_0x2592a9);}})[_0xe58d('0x25')](function(_0x48773f){if(_0x48773f){return _0x48773f?{'count':_0x446106,'rows':_0x48773f}:null;}})[_0xe58d('0x25')](respondWithResult(_0x266d79,null))[_0xe58d('0x51')](handleError(_0x266d79,null));};exports[_0xe58d('0x83')]=function(_0x35b850,_0xa14302,_0x3fb06d){var _0x41d56b={};var _0x2ae693={};var _0xc2190c;var _0x144662;return db[_0xe58d('0x35')][_0xe58d('0x62')]({'where':{'id':_0x35b850[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0xa14302,null))['then'](function(_0x39a165){if(_0x39a165){_0xc2190c=_0x39a165;_0x2ae693[_0xe58d('0x37')]=_[_0xe58d('0x38')](db[_0xe58d('0x7a')][_0xe58d('0x36')]);_0x2ae693[_0xe58d('0x3a')]=_[_0xe58d('0x38')](_0x35b850[_0xe58d('0x3a')]);_0x2ae693['filters']=_['intersection'](_0x2ae693['model'],_0x2ae693[_0xe58d('0x3a')]);_0x41d56b[_0xe58d('0x3d')]=_[_0xe58d('0x3c')](_0x2ae693[_0xe58d('0x37')],qs[_0xe58d('0x3e')](_0x35b850[_0xe58d('0x3a')][_0xe58d('0x3e')]));_0x41d56b['attributes']=_0x41d56b[_0xe58d('0x3d')][_0xe58d('0x3f')]?_0x41d56b['attributes']:_0x2ae693[_0xe58d('0x37')];_0x41d56b[_0xe58d('0x42')]=qs[_0xe58d('0x43')](_0x35b850[_0xe58d('0x3a')]['sort']);_0x41d56b['where']=qs[_0xe58d('0x45')](_[_0xe58d('0x46')](_0x35b850[_0xe58d('0x3a')],_0x2ae693[_0xe58d('0x45')]));if(_0x35b850[_0xe58d('0x3a')][_0xe58d('0x2a')]){_0x41d56b[_0xe58d('0x44')]=_[_0xe58d('0x49')](_0x41d56b['where'],{'$or':_[_0xe58d('0x2b')](_0x41d56b[_0xe58d('0x3d')],function(_0x5b2f5b){var _0x22cb5d={};_0x22cb5d[_0x5b2f5b]={'$like':'%'+_0x35b850[_0xe58d('0x3a')][_0xe58d('0x2a')]+'%'};return _0x22cb5d;})});}_0x41d56b=_['merge']({},_0x41d56b,_0x35b850[_0xe58d('0x4b')]);return _0xc2190c[_0xe58d('0x83')](_0x41d56b);}})[_0xe58d('0x25')](function(_0x2b0f46){if(_0x2b0f46){_0x144662=_0x2b0f46['length'];if(!_0x35b850[_0xe58d('0x3a')][_0xe58d('0x40')](_0xe58d('0x67'))){_0x41d56b[_0xe58d('0x41')]=qs[_0xe58d('0x41')](_0x35b850[_0xe58d('0x3a')][_0xe58d('0x41')]);_0x41d56b[_0xe58d('0x1f')]=qs[_0xe58d('0x1f')](_0x35b850[_0xe58d('0x3a')][_0xe58d('0x1f')]);}return _0xc2190c[_0xe58d('0x83')](_0x41d56b);}})[_0xe58d('0x25')](function(_0x4d9728){return _0x4d9728?{'count':_0x144662,'rows':_0x4d9728}:null;})['then'](respondWithResult(_0xa14302,null))[_0xe58d('0x51')](handleError(_0xa14302,null));};exports[_0xe58d('0x84')]=function(_0x55171d,_0xf5c211,_0x214c83){var _0x421aa5={};var _0xc9b559={};var _0xf82754;var _0x225ca5;return db['VoiceQueue'][_0xe58d('0x62')]({'where':{'id':_0x55171d[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0xf5c211,null))[_0xe58d('0x25')](function(_0x282885){if(_0x282885){_0xf82754=_0x282885;_0xc9b559[_0xe58d('0x37')]=_[_0xe58d('0x38')](db[_0xe58d('0x85')][_0xe58d('0x36')]);_0xc9b559[_0xe58d('0x3a')]=_[_0xe58d('0x38')](_0x55171d[_0xe58d('0x3a')]);_0xc9b559[_0xe58d('0x45')]=_[_0xe58d('0x3c')](_0xc9b559['model'],_0xc9b559[_0xe58d('0x3a')]);_0x421aa5[_0xe58d('0x3d')]=_['intersection'](_0xc9b559[_0xe58d('0x37')],qs[_0xe58d('0x3e')](_0x55171d[_0xe58d('0x3a')][_0xe58d('0x3e')]));_0x421aa5[_0xe58d('0x3d')]=_0x421aa5[_0xe58d('0x3d')][_0xe58d('0x3f')]?_0x421aa5[_0xe58d('0x3d')]:_0xc9b559[_0xe58d('0x37')];_0x421aa5[_0xe58d('0x42')]=qs['sort'](_0x55171d[_0xe58d('0x3a')][_0xe58d('0x43')]);_0x421aa5['where']=qs[_0xe58d('0x45')](_[_0xe58d('0x46')](_0x55171d[_0xe58d('0x3a')],_0xc9b559[_0xe58d('0x45')]));if(_0x55171d[_0xe58d('0x3a')][_0xe58d('0x2a')]){_0x421aa5[_0xe58d('0x44')]=_[_0xe58d('0x49')](_0x421aa5['where'],{'$or':_[_0xe58d('0x2b')](_0x421aa5['attributes'],function(_0x37da46){var _0x3add14={};_0x3add14[_0x37da46]={'$like':'%'+_0x55171d[_0xe58d('0x3a')][_0xe58d('0x2a')]+'%'};return _0x3add14;})});}_0x421aa5=_[_0xe58d('0x49')]({},_0x421aa5,_0x55171d['options']);return _0xf82754[_0xe58d('0x84')](_0x421aa5);}})[_0xe58d('0x25')](function(_0x1ac3b4){if(_0x1ac3b4){_0x225ca5=_0x1ac3b4[_0xe58d('0x3f')];if(!_0x55171d[_0xe58d('0x3a')][_0xe58d('0x40')]('nolimit')){_0x421aa5['limit']=qs[_0xe58d('0x41')](_0x55171d['query'][_0xe58d('0x41')]);_0x421aa5['offset']=qs[_0xe58d('0x1f')](_0x55171d['query'][_0xe58d('0x1f')]);}return _0xf82754['getLists'](_0x421aa5);}})[_0xe58d('0x25')](function(_0x1653ab){if(_0x1653ab){return _0x1653ab?{'count':_0x225ca5,'rows':_0x1653ab}:null;}})[_0xe58d('0x25')](respondWithResult(_0xf5c211,null))['catch'](handleError(_0xf5c211,null));};exports[_0xe58d('0x86')]=function(_0x180b9f,_0x3063cc,_0x39b60b){var _0x423e9f,_0x1b5ced;return db[_0xe58d('0x35')][_0xe58d('0x2e')]({'where':{'id':_0x180b9f[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x3063cc,null))[_0xe58d('0x25')](function(_0x4b4213){if(_0x4b4213){_0x1b5ced=_0x4b4213;return _0x4b4213[_0xe58d('0x86')](_0x180b9f[_0xe58d('0x53')][_0xe58d('0x6e')],_['omit'](_0x180b9f[_0xe58d('0x53')],[_0xe58d('0x6e'),'id'])||{});}return null;})['spread'](function(_0x3a2275){var _0x440ede;_0x423e9f=_0x3a2275||[];var _0x1c05ae=[];if(_0x3a2275){for(var _0x2951b9=0x0;_0x2951b9<_0x3a2275[_0xe58d('0x3f')];_0x2951b9+=0x1){var _0x22a95f=_0x3a2275[_0x2951b9]['get']({'plain':!![]});_0x1b5ced[_0xe58d('0x87')]=_0x180b9f['body'][_0xe58d('0x87')]?_0x180b9f[_0xe58d('0x53')][_0xe58d('0x87')]:_0x1b5ced[_0xe58d('0x87')];switch(_0x1b5ced[_0xe58d('0x87')]){case _0xe58d('0x88'):_0x440ede=squel[_0xe58d('0x89')]()[_0xe58d('0x8a')](_0xe58d('0x8b'))[_0xe58d('0x8c')]([_0xe58d('0x8d'),_0xe58d('0x8e'),_0xe58d('0x8f'),_0xe58d('0x90'),_0xe58d('0x63'),'createdAt',_0xe58d('0x5d')],squel[_0xe58d('0x91')]()[_0xe58d('0x92')](_0xe58d('0x8d'),_0xe58d('0x8d'))['field']('NOW()','scheduledAt')[_0xe58d('0x92')]('id',_0xe58d('0x8f'))[_0xe58d('0x92')](_0x22a95f['CmListId']['toString'](),'ListId')['field'](_0x180b9f[_0xe58d('0x4f')]['id']['toString'](),_0xe58d('0x63'))[_0xe58d('0x92')](_0xe58d('0x93'),'createdAt')[_0xe58d('0x92')](_0xe58d('0x93'),_0xe58d('0x5d'))['from'](_0xe58d('0x94'))[_0xe58d('0x44')](_0xe58d('0x95'))[_0xe58d('0x44')](_0xe58d('0x96'),_0x22a95f['CmListId'][_0xe58d('0x97')]())['where'](_0xe58d('0x98'))[_0xe58d('0x44')](_0xe58d('0x99'),squel[_0xe58d('0x91')]()[_0xe58d('0x92')]('calleridnum')[_0xe58d('0x9a')](_0xe58d('0x9b'))['where'](_0xe58d('0x9c'),_0x180b9f['params']['id'][_0xe58d('0x97')]()))['where'](_0xe58d('0x99'),squel[_0xe58d('0x91')]()[_0xe58d('0x92')](_0xe58d('0x8d'))[_0xe58d('0x9a')]('cm_hopper')[_0xe58d('0x44')](_0xe58d('0x9c'),_0x180b9f['params']['id'][_0xe58d('0x97')]())))[_0xe58d('0x97')]();break;case'onlyIfOpen':_0x440ede=squel[_0xe58d('0x89')]()[_0xe58d('0x8a')]('cm_hopper')[_0xe58d('0x8c')]([_0xe58d('0x8d'),'scheduledAt',_0xe58d('0x8f'),_0xe58d('0x90'),_0xe58d('0x63'),_0xe58d('0x5c'),'updatedAt'],squel[_0xe58d('0x91')]()[_0xe58d('0x92')](_0xe58d('0x8d'),_0xe58d('0x8d'))[_0xe58d('0x92')](_0xe58d('0x93'),'scheduledAt')[_0xe58d('0x92')]('id',_0xe58d('0x8f'))['field'](_0x22a95f[_0xe58d('0x9d')][_0xe58d('0x97')](),_0xe58d('0x90'))[_0xe58d('0x92')](_0x180b9f[_0xe58d('0x4f')]['id'][_0xe58d('0x97')](),_0xe58d('0x63'))[_0xe58d('0x92')](_0xe58d('0x93'),_0xe58d('0x5c'))[_0xe58d('0x92')]('NOW()',_0xe58d('0x5d'))[_0xe58d('0x9a')](_0xe58d('0x94'))['where'](_0xe58d('0x95'))[_0xe58d('0x44')]('ListId\x20=\x20?',_0x22a95f['CmListId'][_0xe58d('0x97')]())[_0xe58d('0x44')](_0xe58d('0x98'))['where'](_0xe58d('0x99'),squel[_0xe58d('0x91')]()[_0xe58d('0x92')](_0xe58d('0x8d'))[_0xe58d('0x9a')]('cm_hopper')[_0xe58d('0x44')]('VoiceQueueId\x20=\x20?',_0x180b9f['params']['id'][_0xe58d('0x97')]())))[_0xe58d('0x97')]();break;default:_0x440ede=squel[_0xe58d('0x89')]()[_0xe58d('0x8a')]('cm_hopper')[_0xe58d('0x8c')]([_0xe58d('0x8d'),_0xe58d('0x8e'),_0xe58d('0x8f'),'ListId',_0xe58d('0x63'),_0xe58d('0x5c'),'updatedAt'],squel['select']()[_0xe58d('0x92')](_0xe58d('0x8d'),_0xe58d('0x8d'))[_0xe58d('0x92')](_0xe58d('0x93'),_0xe58d('0x8e'))[_0xe58d('0x92')]('id',_0xe58d('0x8f'))[_0xe58d('0x92')](_0x22a95f[_0xe58d('0x9d')][_0xe58d('0x97')](),_0xe58d('0x90'))['field'](_0x180b9f[_0xe58d('0x4f')]['id']['toString'](),_0xe58d('0x63'))['field']('NOW()',_0xe58d('0x5c'))['field'](_0xe58d('0x93'),_0xe58d('0x5d'))['from'](_0xe58d('0x94'))[_0xe58d('0x44')](_0xe58d('0x95'))['where'](_0xe58d('0x96'),_0x22a95f['CmListId'][_0xe58d('0x97')]())[_0xe58d('0x44')](_0xe58d('0x98')))[_0xe58d('0x97')]();}_0x1c05ae[_0xe58d('0x9e')](db['sequelize'][_0xe58d('0x3a')](_0x440ede));}return BPromise['all'](_0x1c05ae);}})[_0xe58d('0x25')](function(){return _0x423e9f;})[_0xe58d('0x25')](respondWithResult(_0x3063cc,null))[_0xe58d('0x51')](handleError(_0x3063cc,null));};exports[_0xe58d('0x9f')]=function(_0x1c6bf3,_0xe98ce2,_0x5c5210){var _0x1d1c92;return db[_0xe58d('0x35')][_0xe58d('0x2e')]({'where':{'id':_0x1c6bf3[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0xe98ce2,null))[_0xe58d('0x25')](function(_0x211bd5){if(_0x211bd5){return _0x211bd5[_0xe58d('0x9f')](_0x1c6bf3[_0xe58d('0x3a')][_0xe58d('0x6e')]);}})[_0xe58d('0x25')](function(_0x2af247){if(_0x2af247){_0x1d1c92=_0x2af247;return db[_0xe58d('0x64')][_0xe58d('0x26')]({'where':{'ListId':_0x1c6bf3['query']['ids'],'VoiceQueueId':_0x1c6bf3[_0xe58d('0x4f')]['id']}})['then'](function(){return _0x1d1c92;});}})[_0xe58d('0x25')](respondWithStatusCode(_0xe98ce2,null))[_0xe58d('0x51')](handleError(_0xe98ce2,null));};exports[_0xe58d('0xa0')]=function(_0x5f0909,_0x20173a,_0x3f803b){var _0x5be906={};var _0x1f8065={};var _0x2300d9;var _0x567a3e;return db[_0xe58d('0x35')][_0xe58d('0x62')]({'where':{'id':_0x5f0909[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x20173a,null))[_0xe58d('0x25')](function(_0x2582b1){if(_0x2582b1){_0x2300d9=_0x2582b1;_0x1f8065[_0xe58d('0x37')]=_[_0xe58d('0x38')](db[_0xe58d('0x85')]['rawAttributes']);_0x1f8065[_0xe58d('0x3a')]=_[_0xe58d('0x38')](_0x5f0909[_0xe58d('0x3a')]);_0x1f8065[_0xe58d('0x45')]=_['intersection'](_0x1f8065[_0xe58d('0x37')],_0x1f8065['query']);_0x5be906['attributes']=_['intersection'](_0x1f8065[_0xe58d('0x37')],qs[_0xe58d('0x3e')](_0x5f0909[_0xe58d('0x3a')][_0xe58d('0x3e')]));_0x5be906[_0xe58d('0x3d')]=_0x5be906[_0xe58d('0x3d')]['length']?_0x5be906['attributes']:_0x1f8065[_0xe58d('0x37')];_0x5be906['order']=qs[_0xe58d('0x43')](_0x5f0909['query'][_0xe58d('0x43')]);_0x5be906['where']=qs['filters'](_[_0xe58d('0x46')](_0x5f0909['query'],_0x1f8065['filters']));if(_0x5f0909[_0xe58d('0x3a')][_0xe58d('0x2a')]){_0x5be906[_0xe58d('0x44')]=_[_0xe58d('0x49')](_0x5be906[_0xe58d('0x44')],{'$or':_[_0xe58d('0x2b')](_0x5be906[_0xe58d('0x3d')],function(_0x3e2cf4){var _0x16c0b5={};_0x16c0b5[_0x3e2cf4]={'$like':'%'+_0x5f0909[_0xe58d('0x3a')][_0xe58d('0x2a')]+'%'};return _0x16c0b5;})});}_0x5be906=_['merge']({},_0x5be906,_0x5f0909['options']);return _0x2300d9[_0xe58d('0xa0')](_0x5be906);}})[_0xe58d('0x25')](function(_0x5d27da){if(_0x5d27da){_0x567a3e=_0x5d27da[_0xe58d('0x3f')];if(!_0x5f0909[_0xe58d('0x3a')][_0xe58d('0x40')](_0xe58d('0x67'))){_0x5be906[_0xe58d('0x41')]=qs[_0xe58d('0x41')](_0x5f0909['query'][_0xe58d('0x41')]);_0x5be906[_0xe58d('0x1f')]=qs[_0xe58d('0x1f')](_0x5f0909[_0xe58d('0x3a')][_0xe58d('0x1f')]);}return _0x2300d9[_0xe58d('0xa0')](_0x5be906);}})[_0xe58d('0x25')](function(_0x53deb3){if(_0x53deb3){return _0x53deb3?{'count':_0x567a3e,'rows':_0x53deb3}:null;}})['then'](respondWithResult(_0x20173a,null))['catch'](handleError(_0x20173a,null));};exports[_0xe58d('0xa1')]=function(_0x14b838,_0x5a79a6,_0x148173){var _0x454353,_0x2ada77;return db['VoiceQueue'][_0xe58d('0x2e')]({'where':{'id':_0x14b838['params']['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x5a79a6,null))['then'](function(_0x15116c){if(_0x15116c){_0x2ada77=_0x15116c;return _0x15116c[_0xe58d('0xa1')](_0x14b838[_0xe58d('0x53')][_0xe58d('0x6e')],_[_0xe58d('0x75')](_0x14b838['body'],['ids','id'])||{});}return null;})[_0xe58d('0x76')](function(_0x4bfd57){var _0x2f62df;_0x454353=_0x4bfd57||[];var _0xeb6fe0=[];if(_0x4bfd57){for(var _0x556534=0x0;_0x556534<_0x4bfd57[_0xe58d('0x3f')];_0x556534+=0x1){var _0x4f5e7f=_0x4bfd57[_0x556534][_0xe58d('0x55')]({'plain':!![]});_0x2f62df=squel['insert']()['into'](_0xe58d('0xa2'))['fromQuery']([_0xe58d('0x8d'),_0xe58d('0x8f'),_0xe58d('0x90'),_0xe58d('0x63'),_0xe58d('0x5c'),_0xe58d('0x5d')],squel[_0xe58d('0x91')]()[_0xe58d('0x92')]('phone',_0xe58d('0x8d'))[_0xe58d('0x92')]('id',_0xe58d('0x8f'))[_0xe58d('0x92')](_0x4f5e7f[_0xe58d('0x9d')][_0xe58d('0x97')](),_0xe58d('0x90'))['field'](_0x14b838[_0xe58d('0x4f')]['id'][_0xe58d('0x97')](),_0xe58d('0x63'))['field'](_0xe58d('0x93'),_0xe58d('0x5c'))[_0xe58d('0x92')]('NOW()',_0xe58d('0x5d'))[_0xe58d('0x9a')](_0xe58d('0x94'))[_0xe58d('0x44')](_0xe58d('0x95'))[_0xe58d('0x44')](_0xe58d('0x96'),_0x4f5e7f[_0xe58d('0x9d')]['toString']())['where'](_0xe58d('0x98')))['toString']();_0xeb6fe0['push'](db[_0xe58d('0xa3')]['query'](_0x2f62df));}return BPromise[_0xe58d('0xa4')](_0xeb6fe0);}})[_0xe58d('0x25')](function(){return _0x454353;})[_0xe58d('0x25')](respondWithResult(_0x5a79a6,null))[_0xe58d('0x51')](handleError(_0x5a79a6,null));};exports[_0xe58d('0xa5')]=function(_0x4756f1,_0x375bfb,_0x349131){var _0x1f1021;return db['VoiceQueue'][_0xe58d('0x2e')]({'where':{'id':_0x4756f1[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](handleEntityNotFound(_0x375bfb,null))['then'](function(_0x11c14c){if(_0x11c14c){return _0x11c14c[_0xe58d('0xa5')](_0x4756f1[_0xe58d('0x3a')][_0xe58d('0x6e')]);}})[_0xe58d('0x25')](function(_0x3f6d28){if(_0x3f6d28){_0x1f1021=_0x3f6d28;return db[_0xe58d('0x6a')][_0xe58d('0x26')]({'where':{'ListId':_0x4756f1[_0xe58d('0x3a')]['ids'],'VoiceQueueId':_0x4756f1[_0xe58d('0x4f')]['id']}})[_0xe58d('0x25')](function(){return _0x1f1021;});}})[_0xe58d('0x25')](respondWithStatusCode(_0x375bfb,null))[_0xe58d('0x51')](handleError(_0x375bfb,null));};
\ No newline at end of file
index 78eb4b3..f39d831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x193f=['../../mysqldb','VoiceQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x1cadc0,_0x2215c0){var _0x572223=function(_0x37da8a){while(--_0x37da8a){_0x1cadc0['push'](_0x1cadc0['shift']());}};_0x572223(++_0x2215c0);}(_0x193f,0x9f));var _0xf193=function(_0x1ff2ec,_0x386e86){_0x1ff2ec=_0x1ff2ec-0x0;var _0x405683=_0x193f[_0x1ff2ec];return _0x405683;};'use strict';var EventEmitter=require(_0xf193('0x0'));var VoiceQueue=require(_0xf193('0x1'))['db'][_0xf193('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xf193('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf193('0x4'),'afterDestroy':_0xf193('0x5')};function emitEvent(_0x364f83){return function(_0x5af626,_0x488834,_0x5dd256){VoiceQueueEvents[_0xf193('0x6')](_0x364f83+':'+_0x5af626['id'],_0x5af626);VoiceQueueEvents[_0xf193('0x6')](_0x364f83,_0x5af626);_0x5dd256(null);};}for(var e in events){if(events[_0xf193('0x7')](e)){var event=events[e];VoiceQueue[_0xf193('0x8')](e,emitEvent(event));}}module[_0xf193('0x9')]=VoiceQueueEvents;
\ No newline at end of file
+var _0xe671=['save','update','emit','hook','exports','events','setMaxListeners'];(function(_0x2e7b5b,_0x26d5b4){var _0x3513a5=function(_0xfea17b){while(--_0xfea17b){_0x2e7b5b['push'](_0x2e7b5b['shift']());}};_0x3513a5(++_0x26d5b4);}(_0xe671,0x1be));var _0x1e67=function(_0x39a0eb,_0x59ea19){_0x39a0eb=_0x39a0eb-0x0;var _0x5b743c=_0xe671[_0x39a0eb];return _0x5b743c;};'use strict';var EventEmitter=require(_0x1e67('0x0'));var VoiceQueue=require('../../mysqldb')['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x1e67('0x1')](0x0);var events={'afterCreate':_0x1e67('0x2'),'afterUpdate':_0x1e67('0x3'),'afterDestroy':'remove'};function emitEvent(_0x7b4643){return function(_0x528e88,_0x51b251,_0xfc33f0){VoiceQueueEvents[_0x1e67('0x4')](_0x7b4643+':'+_0x528e88['id'],_0x528e88);VoiceQueueEvents[_0x1e67('0x4')](_0x7b4643,_0x528e88);_0xfc33f0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0x1e67('0x5')](e,emitEvent(event));}}module[_0x1e67('0x6')]=VoiceQueueEvents;
\ No newline at end of file
index dbdfb20..01cec27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x514d=['../../config/logger','moment','bluebird','./voiceQueue.attributes','exports','define','VoiceQueue','lodash'];(function(_0x1b97c6,_0x337ad0){var _0x243850=function(_0x539f2f){while(--_0x539f2f){_0x1b97c6['push'](_0x1b97c6['shift']());}};_0x243850(++_0x337ad0);}(_0x514d,0x17f));var _0xd514=function(_0xea7ebc,_0x3bf9a0){_0xea7ebc=_0xea7ebc-0x0;var _0x3747ae=_0x514d[_0xea7ebc];return _0x3747ae;};'use strict';var _=require(_0xd514('0x0'));var util=require('util');var logger=require(_0xd514('0x1'))('api');var moment=require(_0xd514('0x2'));var BPromise=require(_0xd514('0x3'));var rp=require('request-promise');var attributes=require(_0xd514('0x4'));module[_0xd514('0x5')]=function(_0x46b76d,_0x28aca4){return _0x46b76d[_0xd514('0x6')](_0xd514('0x7'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f35=['util','moment','./voiceQueue.attributes','exports','define','voice_queues','lodash'];(function(_0x5d0354,_0x4cfec4){var _0x367575=function(_0x58a202){while(--_0x58a202){_0x5d0354['push'](_0x5d0354['shift']());}};_0x367575(++_0x4cfec4);}(_0x7f35,0x1e2));var _0x57f3=function(_0x494e28,_0x41c849){_0x494e28=_0x494e28-0x0;var _0x5308b4=_0x7f35[_0x494e28];return _0x5308b4;};'use strict';var _=require(_0x57f3('0x0'));var util=require(_0x57f3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x57f3('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x57f3('0x3'));module[_0x57f3('0x4')]=function(_0x4ad8d1,_0x47b147){return _0x4ad8d1[_0x57f3('0x5')]('VoiceQueue',attributes,{'tableName':_0x57f3('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61307c5..8503d98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetVoiceQueue','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowVoiceQueue','VoiceQueue','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter'];(function(_0x18dee7,_0x33f03f){var _0x128ab6=function(_0x243a99){while(--_0x243a99){_0x18dee7['push'](_0x18dee7['shift']());}};_0x128ab6(++_0x33f03f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});config[_0x0a9e('0xa')]=_[_0x0a9e('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0a9e('0xc'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x0a9e('0xd')](socket);function respondWithRpcPromise(_0xf81284,_0x307b3e,_0x3ab53f){return new BPromise(function(_0xfeb75b,_0xbd1168){return client['request'](_0xf81284,_0x3ab53f)['then'](function(_0x527cdd){logger['info'](_0x0a9e('0xe'),_0x307b3e,_0x0a9e('0xf'));logger[_0x0a9e('0x10')](_0x0a9e('0x11'),_0x307b3e,_0x0a9e('0xf'),JSON[_0x0a9e('0x12')](_0x527cdd));if(_0x527cdd['error']){if(_0x527cdd[_0x0a9e('0x13')][_0x0a9e('0x14')]===0x1f4){logger[_0x0a9e('0x13')](_0x0a9e('0xe'),_0x307b3e,_0x527cdd[_0x0a9e('0x13')][_0x0a9e('0x15')]);return _0xbd1168(_0x527cdd['error'][_0x0a9e('0x15')]);}logger['error'](_0x0a9e('0xe'),_0x307b3e,_0x527cdd['error'][_0x0a9e('0x15')]);return _0xfeb75b(_0x527cdd[_0x0a9e('0x13')]['message']);}else{logger[_0x0a9e('0x16')]('VoiceQueue,\x20%s,\x20%s',_0x307b3e,_0x0a9e('0xf'));_0xfeb75b(_0x527cdd[_0x0a9e('0x17')][_0x0a9e('0x15')]);}})[_0x0a9e('0x18')](function(_0x31b1ca){logger[_0x0a9e('0x13')](_0x0a9e('0xe'),_0x307b3e,_0x31b1ca);_0xbd1168(_0x31b1ca);});});}exports[_0x0a9e('0x19')]=function(_0x1314ae){var _0x112016=this;return new Promise(function(_0x1c696a,_0x105080){return db['VoiceQueue'][_0x0a9e('0x1a')]({'raw':_0x1314ae[_0x0a9e('0x1b')]?_0x1314ae['options'][_0x0a9e('0x1c')]===undefined?!![]:![]:!![],'where':_0x1314ae['options']?_0x1314ae['options'][_0x0a9e('0x1d')]||null:null,'attributes':_0x1314ae[_0x0a9e('0x1b')]?_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x1e')]||null:null,'limit':_0x1314ae['options']?_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x1f')]||null:null,'include':_0x1314ae[_0x0a9e('0x1b')]?_0x1314ae[_0x0a9e('0x1b')][_0x0a9e('0x20')]?_[_0x0a9e('0x21')](_0x1314ae[_0x0a9e('0x1b')]['include'],function(_0x59181e){return{'model':db[_0x59181e[_0x0a9e('0x22')]],'as':_0x59181e['as'],'attributes':_0x59181e[_0x0a9e('0x1e')],'include':_0x59181e[_0x0a9e('0x20')]?_[_0x0a9e('0x21')](_0x59181e['include'],function(_0x384319){return{'model':db[_0x384319['model']],'as':_0x384319['as'],'attributes':_0x384319[_0x0a9e('0x1e')],'include':_0x384319['include']?_[_0x0a9e('0x21')](_0x384319[_0x0a9e('0x20')],function(_0x25fba9){return{'model':db[_0x25fba9[_0x0a9e('0x22')]],'as':_0x25fba9['as'],'attributes':_0x25fba9[_0x0a9e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x11c3b6){logger[_0x0a9e('0x16')]('GetVoiceQueue',_0x1314ae);logger[_0x0a9e('0x10')](_0x0a9e('0x19'),_0x1314ae,JSON[_0x0a9e('0x12')](_0x11c3b6));_0x1c696a(_0x11c3b6);})[_0x0a9e('0x18')](function(_0x5c877d){logger[_0x0a9e('0x13')](_0x0a9e('0x19'),_0x5c877d[_0x0a9e('0x15')],_0x1314ae);_0x105080(_0x112016[_0x0a9e('0x13')](0x1f4,_0x5c877d[_0x0a9e('0x15')]));});});};exports[_0x0a9e('0x24')]=function(_0x296f41){var _0x2e8759=this;return new Promise(function(_0x1dbde2,_0x540530){return db[_0x0a9e('0x25')]['find']({'raw':_0x296f41[_0x0a9e('0x1b')]?_0x296f41[_0x0a9e('0x1b')][_0x0a9e('0x1c')]===undefined?!![]:![]:!![],'where':_0x296f41[_0x0a9e('0x1b')]?_0x296f41[_0x0a9e('0x1b')]['where']||null:null,'attributes':_0x296f41[_0x0a9e('0x1b')]?_0x296f41[_0x0a9e('0x1b')][_0x0a9e('0x1e')]||null:null,'include':_0x296f41[_0x0a9e('0x1b')]?_0x296f41[_0x0a9e('0x1b')][_0x0a9e('0x20')]?_[_0x0a9e('0x21')](_0x296f41[_0x0a9e('0x1b')]['include'],function(_0x44295a){return{'model':db[_0x44295a['model']],'as':_0x44295a['as'],'attributes':_0x44295a[_0x0a9e('0x1e')],'include':_0x44295a[_0x0a9e('0x20')]?_[_0x0a9e('0x21')](_0x44295a[_0x0a9e('0x20')],function(_0x567193){return{'model':db[_0x567193[_0x0a9e('0x22')]],'as':_0x567193['as'],'attributes':_0x567193[_0x0a9e('0x1e')],'include':_0x567193[_0x0a9e('0x20')]?_[_0x0a9e('0x21')](_0x567193['include'],function(_0x54135e){return{'model':db[_0x54135e[_0x0a9e('0x22')]],'as':_0x54135e['as'],'attributes':_0x54135e['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x3d9717){logger[_0x0a9e('0x16')](_0x0a9e('0x24'),_0x296f41);logger['debug'](_0x0a9e('0x24'),_0x296f41,JSON[_0x0a9e('0x12')](_0x3d9717));_0x1dbde2(_0x3d9717);})[_0x0a9e('0x18')](function(_0x533942){logger[_0x0a9e('0x13')](_0x0a9e('0x24'),_0x533942[_0x0a9e('0x15')],_0x296f41);_0x540530(_0x2e8759['error'](0x1f4,_0x533942['message']));});});};
\ No newline at end of file
+var _0x9957=['register','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','options','raw','where','attributes','limit','include','model','map','catch','GetVoiceQueue','ShowVoiceQueue','VoiceQueue','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket'];(function(_0x234ae1,_0x42bdd6){var _0x227ba0=function(_0x1f6531){while(--_0x1f6531){_0x234ae1['push'](_0x234ae1['shift']());}};_0x227ba0(++_0x42bdd6);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'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});config[_0x7995('0xc')]=_[_0x7995('0xd')](config['redis'],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require(_0x7995('0xf'))(new Redis(config['redis']));require(_0x7995('0x10'))[_0x7995('0x11')](socket);function respondWithRpcPromise(_0x18c8a3,_0x35b5fe,_0x3c1d19){return new BPromise(function(_0x1e400a,_0x341672){return client['request'](_0x18c8a3,_0x3c1d19)[_0x7995('0x12')](function(_0x41c652){logger['info'](_0x7995('0x13'),_0x35b5fe,_0x7995('0x14'));logger[_0x7995('0x15')](_0x7995('0x16'),_0x35b5fe,_0x7995('0x14'),JSON[_0x7995('0x17')](_0x41c652));if(_0x41c652[_0x7995('0x18')]){if(_0x41c652['error']['code']===0x1f4){logger[_0x7995('0x18')](_0x7995('0x13'),_0x35b5fe,_0x41c652[_0x7995('0x18')][_0x7995('0x19')]);return _0x341672(_0x41c652[_0x7995('0x18')][_0x7995('0x19')]);}logger[_0x7995('0x18')](_0x7995('0x13'),_0x35b5fe,_0x41c652['error'][_0x7995('0x19')]);return _0x1e400a(_0x41c652['error'][_0x7995('0x19')]);}else{logger[_0x7995('0x1a')](_0x7995('0x13'),_0x35b5fe,_0x7995('0x14'));_0x1e400a(_0x41c652[_0x7995('0x1b')][_0x7995('0x19')]);}})['catch'](function(_0x54c9ae){logger[_0x7995('0x18')]('VoiceQueue,\x20%s,\x20%s',_0x35b5fe,_0x54c9ae);_0x341672(_0x54c9ae);});});}exports['GetVoiceQueue']=function(_0x3ec178){var _0x3d463e=this;return new Promise(function(_0x4cbe10,_0x3a9b54){return db['VoiceQueue']['findAll']({'raw':_0x3ec178[_0x7995('0x1c')]?_0x3ec178[_0x7995('0x1c')][_0x7995('0x1d')]===undefined?!![]:![]:!![],'where':_0x3ec178[_0x7995('0x1c')]?_0x3ec178[_0x7995('0x1c')][_0x7995('0x1e')]||null:null,'attributes':_0x3ec178['options']?_0x3ec178[_0x7995('0x1c')][_0x7995('0x1f')]||null:null,'limit':_0x3ec178[_0x7995('0x1c')]?_0x3ec178[_0x7995('0x1c')][_0x7995('0x20')]||null:null,'include':_0x3ec178[_0x7995('0x1c')]?_0x3ec178[_0x7995('0x1c')][_0x7995('0x21')]?_['map'](_0x3ec178[_0x7995('0x1c')][_0x7995('0x21')],function(_0x401dc3){return{'model':db[_0x401dc3[_0x7995('0x22')]],'as':_0x401dc3['as'],'attributes':_0x401dc3[_0x7995('0x1f')],'include':_0x401dc3[_0x7995('0x21')]?_['map'](_0x401dc3[_0x7995('0x21')],function(_0x5911c3){return{'model':db[_0x5911c3[_0x7995('0x22')]],'as':_0x5911c3['as'],'attributes':_0x5911c3[_0x7995('0x1f')],'include':_0x5911c3[_0x7995('0x21')]?_[_0x7995('0x23')](_0x5911c3[_0x7995('0x21')],function(_0x4b6f99){return{'model':db[_0x4b6f99[_0x7995('0x22')]],'as':_0x4b6f99['as'],'attributes':_0x4b6f99['attributes']};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x3250e0){logger[_0x7995('0x1a')]('GetVoiceQueue',_0x3ec178);logger['debug']('GetVoiceQueue',_0x3ec178,JSON[_0x7995('0x17')](_0x3250e0));_0x4cbe10(_0x3250e0);})[_0x7995('0x24')](function(_0x327a81){logger[_0x7995('0x18')](_0x7995('0x25'),_0x327a81[_0x7995('0x19')],_0x3ec178);_0x3a9b54(_0x3d463e['error'](0x1f4,_0x327a81['message']));});});};exports[_0x7995('0x26')]=function(_0x5524af){var _0x553671=this;return new Promise(function(_0x3eb566,_0x29fac5){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':_0x5524af['options']?_0x5524af[_0x7995('0x1c')][_0x7995('0x1d')]===undefined?!![]:![]:!![],'where':_0x5524af['options']?_0x5524af['options']['where']||null:null,'attributes':_0x5524af[_0x7995('0x1c')]?_0x5524af[_0x7995('0x1c')]['attributes']||null:null,'include':_0x5524af[_0x7995('0x1c')]?_0x5524af['options'][_0x7995('0x21')]?_[_0x7995('0x23')](_0x5524af[_0x7995('0x1c')]['include'],function(_0x52d76d){return{'model':db[_0x52d76d[_0x7995('0x22')]],'as':_0x52d76d['as'],'attributes':_0x52d76d['attributes'],'include':_0x52d76d['include']?_[_0x7995('0x23')](_0x52d76d[_0x7995('0x21')],function(_0x5212ff){return{'model':db[_0x5212ff[_0x7995('0x22')]],'as':_0x5212ff['as'],'attributes':_0x5212ff[_0x7995('0x1f')],'include':_0x5212ff[_0x7995('0x21')]?_[_0x7995('0x23')](_0x5212ff[_0x7995('0x21')],function(_0x53002a){return{'model':db[_0x53002a[_0x7995('0x22')]],'as':_0x53002a['as'],'attributes':_0x53002a[_0x7995('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x1d60b8){logger['info'](_0x7995('0x26'),_0x5524af);logger[_0x7995('0x15')](_0x7995('0x26'),_0x5524af,JSON[_0x7995('0x17')](_0x1d60b8));_0x3eb566(_0x1d60b8);})[_0x7995('0x24')](function(_0x1035dc){logger['error'](_0x7995('0x26'),_0x1035dc[_0x7995('0x19')],_0x5524af);_0x29fac5(_0x553671[_0x7995('0x18')](0x1f4,_0x1035dc[_0x7995('0x19')]));});});};
\ No newline at end of file
index 1d31bab..9169069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e2c=['save','remove','update','register','length','voiceQueue:','./voiceQueue.events'];(function(_0x19ee96,_0x48b7d5){var _0x57aaf0=function(_0x26f332){while(--_0x26f332){_0x19ee96['push'](_0x19ee96['shift']());}};_0x57aaf0(++_0x48b7d5);}(_0x9e2c,0x14f));var _0xc9e2=function(_0x41542d,_0x533a38){_0x41542d=_0x41542d-0x0;var _0x2b4b3d=_0x9e2c[_0x41542d];return _0x2b4b3d;};'use strict';var VoiceQueueEvents=require(_0xc9e2('0x0'));var events=[_0xc9e2('0x1'),_0xc9e2('0x2'),_0xc9e2('0x3')];function createListener(_0x3c7ab5,_0x1fac42){return function(_0x46cc69){_0x1fac42['emit'](_0x3c7ab5,_0x46cc69);};}function removeListener(_0x1c20e2,_0x2889f8){return function(){VoiceQueueEvents['removeListener'](_0x1c20e2,_0x2889f8);};}exports[_0xc9e2('0x4')]=function(_0x4ed95d){for(var _0x315f2e=0x0,_0x48d0d0=events[_0xc9e2('0x5')];_0x315f2e<_0x48d0d0;_0x315f2e++){var _0x52a44e=events[_0x315f2e];var _0x137305=createListener(_0xc9e2('0x6')+_0x52a44e,_0x4ed95d);VoiceQueueEvents['on'](_0x52a44e,_0x137305);}};
\ No newline at end of file
+var _0xaf46=['./voiceQueue.events','remove','emit','register','length','voiceQueue:'];(function(_0x54b607,_0x1c3d70){var _0x3dd871=function(_0x4d3f39){while(--_0x4d3f39){_0x54b607['push'](_0x54b607['shift']());}};_0x3dd871(++_0x1c3d70);}(_0xaf46,0x1ce));var _0x6af4=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xaf46[_0x321bb2];return _0x9c12ed;};'use strict';var VoiceQueueEvents=require(_0x6af4('0x0'));var events=['save',_0x6af4('0x1'),'update'];function createListener(_0x9640b6,_0x538392){return function(_0x436621){_0x538392[_0x6af4('0x2')](_0x9640b6,_0x436621);};}function removeListener(_0x4e7918,_0xea4c7d){return function(){VoiceQueueEvents['removeListener'](_0x4e7918,_0xea4c7d);};}exports[_0x6af4('0x3')]=function(_0x4ac3bf){for(var _0x5e27d6=0x0,_0x2efd93=events[_0x6af4('0x4')];_0x5e27d6<_0x2efd93;_0x5e27d6++){var _0x23ff85=events[_0x5e27d6];var _0x4734ea=createListener(_0x6af4('0x5')+_0x23ff85,_0x4ac3bf);VoiceQueueEvents['on'](_0x23ff85,_0x4734ea);}};
\ No newline at end of file
index 354f18d..c65d987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd7e=['getVoiceQueuesReport','/:id','show','post','create','put','update','delete','destroy','util','path','express','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','index','get','/describe'];(function(_0x25d74e,_0x29e4d0){var _0x26f58d=function(_0x3a8dca){while(--_0x3a8dca){_0x25d74e['push'](_0x25d74e['shift']());}};_0x26f58d(++_0x29e4d0);}(_0xcd7e,0xa1));var _0xecd7=function(_0x34eb31,_0x8f0f70){_0x34eb31=_0x34eb31-0x0;var _0x254994=_0xcd7e[_0x34eb31];return _0x254994;};'use strict';var multer=require('multer');var util=require(_0xecd7('0x0'));var path=require(_0xecd7('0x1'));var timeout=require('connect-timeout');var express=require(_0xecd7('0x2'));var router=express['Router']();var auth=require(_0xecd7('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xecd7('0x4'));var controller=require(_0xecd7('0x5'));router['get']('/',auth[_0xecd7('0x6')](),controller[_0xecd7('0x7')]);router[_0xecd7('0x8')](_0xecd7('0x9'),auth[_0xecd7('0x6')](),controller['describe']);router[_0xecd7('0x8')]('/index',auth[_0xecd7('0x6')](),controller[_0xecd7('0xa')]);router[_0xecd7('0x8')](_0xecd7('0xb'),auth[_0xecd7('0x6')](),controller[_0xecd7('0xc')]);router[_0xecd7('0xd')]('/',auth[_0xecd7('0x6')](),controller[_0xecd7('0xe')]);router[_0xecd7('0xf')](_0xecd7('0xb'),auth[_0xecd7('0x6')](),controller[_0xecd7('0x10')]);router[_0xecd7('0x11')](_0xecd7('0xb'),auth[_0xecd7('0x6')](),controller[_0xecd7('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa9fb=['post','create','put','delete','destroy','exports','util','path','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','getVoiceQueuesReport','/:id'];(function(_0x321621,_0x37f64e){var _0x2d57d0=function(_0x38c353){while(--_0x38c353){_0x321621['push'](_0x321621['shift']());}};_0x2d57d0(++_0x37f64e);}(_0xa9fb,0xa8));var _0xba9f=function(_0x1f63b0,_0x41ed39){_0x1f63b0=_0x1f63b0-0x0;var _0x4a0191=_0xa9fb[_0x1f63b0];return _0x4a0191;};'use strict';var multer=require('multer');var util=require(_0xba9f('0x0'));var path=require(_0xba9f('0x1'));var timeout=require('connect-timeout');var express=require(_0xba9f('0x2'));var router=express[_0xba9f('0x3')]();var auth=require(_0xba9f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xba9f('0x5'));var controller=require('./voiceQueueReport.controller');router[_0xba9f('0x6')]('/',auth[_0xba9f('0x7')](),controller[_0xba9f('0x8')]);router[_0xba9f('0x6')](_0xba9f('0x9'),auth[_0xba9f('0x7')](),controller['describe']);router['get']('/index',auth['isAuthenticated'](),controller[_0xba9f('0xa')]);router[_0xba9f('0x6')](_0xba9f('0xb'),auth[_0xba9f('0x7')](),controller['show']);router[_0xba9f('0xc')]('/',auth[_0xba9f('0x7')](),controller[_0xba9f('0xd')]);router[_0xba9f('0xe')](_0xba9f('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xba9f('0xf')](_0xba9f('0xb'),auth[_0xba9f('0x7')](),controller[_0xba9f('0x10')]);module[_0xba9f('0x11')]=router;
\ No newline at end of file
index b917ed2..b7a2e42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe03e=['sequelize','moment','exports','STRING','DATE','getDataValue','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x384b64,_0x4f0784){var _0x3a8f2c=function(_0xc28196){while(--_0xc28196){_0x384b64['push'](_0x384b64['shift']());}};_0x3a8f2c(++_0x4f0784);}(_0xe03e,0xa5));var _0xee03=function(_0x285038,_0x3cb067){_0x285038=_0x285038-0x0;var _0x1fdd7a=_0xe03e[_0x285038];return _0x1fdd7a;};'use strict';var Sequelize=require(_0xee03('0x0'));var moment=require(_0xee03('0x1'));module[_0xee03('0x2')]={'type':{'type':Sequelize[_0xee03('0x3')]},'uniqueid':{'type':Sequelize[_0xee03('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xee03('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0xee03('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0xee03('0x4')],'set':function(_0x8f5e10){var _0x3f3aee=moment(_0x8f5e10);var _0x40b18e=moment(this[_0xee03('0x5')]('queuecallerjoinAt'))['format'](_0xee03('0x6'));var _0x2ca474=_0x3f3aee[_0xee03('0x7')](_0x40b18e,_0xee03('0x8'));this[_0xee03('0x9')]('queuecallerleaveAt',_0x8f5e10);this['setDataValue'](_0xee03('0xa'),_0x2ca474||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0xee03('0xb')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xee03('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xee03('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xee03('0x4')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0xee03('0xd')},'originalposition':{'type':Sequelize[_0xee03('0xb')]},'channel':{'type':Sequelize[_0xee03('0x3')]},'connectedlinenum':{'type':Sequelize[_0xee03('0x3')]},'connectedlinename':{'type':Sequelize[_0xee03('0x3')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xee03('0x3')]},'exten':{'type':Sequelize[_0xee03('0x3')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize[_0xee03('0xb')]},'mohtime':{'type':Sequelize[_0xee03('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xee03('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xee03('0x3')]},'transfer':{'type':Sequelize[_0xee03('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xee03('0x3')],'comment':_0xee03('0xe')},'transferexten':{'type':Sequelize[_0xee03('0x3')]},'transferuniqueid':{'type':Sequelize[_0xee03('0x3')]},'disposition':{'type':Sequelize[_0xee03('0x3')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa454=['STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','sequelize','moment','exports'];(function(_0x5ce15c,_0x19c917){var _0x36e4f5=function(_0x50fa90){while(--_0x50fa90){_0x5ce15c['push'](_0x5ce15c['shift']());}};_0x36e4f5(++_0x19c917);}(_0xa454,0xf9));var _0x4a45=function(_0x3d7e99,_0x33bc04){_0x3d7e99=_0x3d7e99-0x0;var _0x2180ff=_0xa454[_0x3d7e99];return _0x2180ff;};'use strict';var Sequelize=require(_0x4a45('0x0'));var moment=require(_0x4a45('0x1'));module[_0x4a45('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x4a45('0x3')]},'calleridname':{'type':Sequelize[_0x4a45('0x3')]},'queue':{'type':Sequelize[_0x4a45('0x3')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x4a45('0x4')],'set':function(_0x3e6c5f){var _0x3da4c6=moment(_0x3e6c5f);var _0xa000db=moment(this['getDataValue']('queuecallerjoinAt'))[_0x4a45('0x5')](_0x4a45('0x6'));var _0x43b971=_0x3da4c6['diff'](_0xa000db,_0x4a45('0x7'));this[_0x4a45('0x8')](_0x4a45('0x9'),_0x3e6c5f);this[_0x4a45('0x8')](_0x4a45('0xa'),_0x43b971||null);}},'position':{'type':Sequelize[_0x4a45('0xb')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0x4a45('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x4a45('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x4a45('0x4')]},'queuecallerexit':{'type':Sequelize[_0x4a45('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x4a45('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x4a45('0x3')],'comment':_0x4a45('0xd')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0x4a45('0x3')]},'connectedlinenum':{'type':Sequelize[_0x4a45('0x3')]},'connectedlinename':{'type':Sequelize[_0x4a45('0x3')]},'accountcode':{'type':Sequelize[_0x4a45('0x3')]},'context':{'type':Sequelize[_0x4a45('0x3')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x4a45('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x4a45('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x4a45('0x3')]},'transfer':{'type':Sequelize[_0x4a45('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x4a45('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x4a45('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x4a45('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 01849b4..d7c1b3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4853=['offset','where','pick','add','day','merge','filter','type','key','VIRTUAL','field','count','includeAll','findAll','catch','show','keys','include','options','find','create','body','params','describe','getVoiceQueuesReport','hasOwnProperty','order','sort','map','rows','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','./voiceQueueReport.socket','register','end','status','set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','VoiceQueueReport','model','query','dateEnd','dateStart','filters','attributes','intersection','fields','length','nolimit','limit'];(function(_0x562362,_0x5d54f4){var _0x3a18ce=function(_0x4b96ed){while(--_0x4b96ed){_0x562362['push'](_0x562362['shift']());}};_0x3a18ce(++_0x5d54f4);}(_0x4853,0x11d));var _0x3485=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4853[_0xa464c9];return _0x3d73c4;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x3485('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3485('0x1'));var jsonpatch=require(_0x3485('0x2'));var rp=require(_0x3485('0x3'));var moment=require(_0x3485('0x4'));var BPromise=require(_0x3485('0x5'));var Mustache=require(_0x3485('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x3485('0x7'));var ejs=require(_0x3485('0x8'));var fs=require('fs');var _=require(_0x3485('0x9'));var squel=require(_0x3485('0xa'));var crypto=require(_0x3485('0xb'));var jsforce=require(_0x3485('0xc'));var deskjs=require(_0x3485('0xd'));var toCsv=require('to-csv');var querystring=require(_0x3485('0xe'));var Papa=require(_0x3485('0xf'));var Redis=require(_0x3485('0x10'));var qs=require(_0x3485('0x11'));var logger=require(_0x3485('0x12'))(_0x3485('0x13'));var utils=require(_0x3485('0x14'));var config=require(_0x3485('0x15'));var db=require(_0x3485('0x16'))['db'];config['redis']=_[_0x3485('0x17')](config[_0x3485('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3485('0x18')]));require(_0x3485('0x19'))[_0x3485('0x1a')](socket);function respondWithStatusCode(_0x516082,_0x4c33dd){_0x4c33dd=_0x4c33dd||0xcc;return function(_0x4dcbd8){if(_0x4dcbd8){return _0x516082['sendStatus'](_0x4c33dd);}return _0x516082['status'](_0x4c33dd)[_0x3485('0x1b')]();};}function respondWithResult(_0xd9f8c9,_0xa43d7){_0xa43d7=_0xa43d7||0xc8;return function(_0x5e792d){if(_0x5e792d){return _0xd9f8c9[_0x3485('0x1c')](_0xa43d7)['json'](_0x5e792d);}};}function respondWithFilteredResult(_0x55d0d5,_0x431c09){return function(_0x50b06b){if(_0x50b06b){var _0x1b00fe=_0x50b06b['count'],_0x306d08=_0x431c09['offset'],_0x440a00=_0x431c09['offset']+_0x431c09['limit'],_0x444c00;if(_0x440a00>=_0x1b00fe){_0x440a00=_0x1b00fe;_0x444c00=0xc8;}else{_0x444c00=0xce;}_0x55d0d5['status'](_0x444c00);return _0x55d0d5[_0x3485('0x1d')](_0x3485('0x1e'),_0x306d08+'-'+_0x440a00+'/'+_0x1b00fe)[_0x3485('0x1f')](_0x50b06b);}return null;};}function patchUpdates(_0x3dfa2a){return function(_0x181c9c){try{jsonpatch[_0x3485('0x20')](_0x181c9c,_0x3dfa2a,!![]);}catch(_0x2365f0){return BPromise[_0x3485('0x21')](_0x2365f0);}return _0x181c9c[_0x3485('0x22')]();};}function saveUpdates(_0x3be025,_0x116249){return function(_0x4b085d){if(_0x4b085d){return _0x4b085d['update'](_0x3be025)[_0x3485('0x23')](function(_0x5e97d4){return _0x5e97d4;});}return null;};}function removeEntity(_0x757cf0,_0x98440b){return function(_0x182954){if(_0x182954){return _0x182954[_0x3485('0x24')]()[_0x3485('0x23')](function(){_0x757cf0[_0x3485('0x1c')](0xcc)[_0x3485('0x1b')]();});}};}function handleEntityNotFound(_0x282375,_0x5b09e1){return function(_0xba1190){if(!_0xba1190){_0x282375[_0x3485('0x25')](0x194);}return _0xba1190;};}function handleError(_0x9829f2,_0xf5ec85){_0xf5ec85=_0xf5ec85||0x1f4;return function(_0x1633db){logger[_0x3485('0x26')](_0x1633db[_0x3485('0x27')]);if(_0x1633db[_0x3485('0x28')]){delete _0x1633db[_0x3485('0x28')];}_0x9829f2[_0x3485('0x1c')](_0xf5ec85)[_0x3485('0x29')](_0x1633db);};}exports[_0x3485('0x2a')]=function(_0x3646c8,_0x544fbb){var _0x3410e1={},_0x3308bf={},_0x3cc604={'count':0x0,'rows':[]};var _0x1d77d4=db[_0x3485('0x2b')]['rawAttributes'];_0x3308bf[_0x3485('0x2c')]=_['keys'](_0x1d77d4);var _0xf394e9={'dateStart':_0x3646c8[_0x3485('0x2d')]['dateStart'],'dateEnd':_0x3646c8[_0x3485('0x2d')][_0x3485('0x2e')]};delete _0x3646c8[_0x3485('0x2d')][_0x3485('0x2f')];delete _0x3646c8['query']['dateEnd'];_0x3308bf[_0x3485('0x2d')]=_['keys'](_0x3646c8[_0x3485('0x2d')]);_0x3308bf[_0x3485('0x30')]=_['intersection'](_0x3308bf[_0x3485('0x2c')],_0x3308bf[_0x3485('0x2d')]);_0x3410e1[_0x3485('0x31')]=_[_0x3485('0x32')](_0x3308bf[_0x3485('0x2c')],qs[_0x3485('0x33')](_0x3646c8['query'][_0x3485('0x33')]));_0x3410e1['attributes']=_0x3410e1[_0x3485('0x31')][_0x3485('0x34')]?_0x3410e1[_0x3485('0x31')]:_0x3308bf[_0x3485('0x2c')];if(!_0x3646c8['query']['hasOwnProperty'](_0x3485('0x35'))){_0x3410e1[_0x3485('0x36')]=qs[_0x3485('0x36')](_0x3646c8['query'][_0x3485('0x36')]);_0x3410e1[_0x3485('0x37')]=qs[_0x3485('0x37')](_0x3646c8['query'][_0x3485('0x37')]);}_0x3410e1['order']=qs['sort'](_0x3646c8[_0x3485('0x2d')]['sort']);_0x3410e1[_0x3485('0x38')]=qs[_0x3485('0x30')](_[_0x3485('0x39')](_0x3646c8[_0x3485('0x2d')],_0x3308bf[_0x3485('0x30')]));if(_0xf394e9[_0x3485('0x2f')]){if(_0xf394e9[_0x3485('0x2e')]){_0xf394e9['dateEnd']=moment(_0xf394e9[_0x3485('0x2e')])[_0x3485('0x3a')](0x1,'day');}else{_0xf394e9['dateEnd']=moment(_0xf394e9[_0x3485('0x2f')])[_0x3485('0x3a')](0x1,_0x3485('0x3b'));}_[_0x3485('0x3c')](_0x3410e1[_0x3485('0x38')],{'createdAt':{'$gte':_0xf394e9[_0x3485('0x2f')],'$lte':_0xf394e9[_0x3485('0x2e')]}});}if(_0x3646c8[_0x3485('0x2d')][_0x3485('0x3d')]){_0x3410e1[_0x3485('0x38')]=_[_0x3485('0x3c')](_0x3410e1['where'],{'$or':_['map'](_0x1d77d4,function(_0x534e14){if(_0x534e14[_0x3485('0x3e')][_0x3485('0x3f')]!==_0x3485('0x40')){var _0x1ff485={};_0x1ff485[_0x534e14[_0x3485('0x41')]]={'$like':'%'+_0x3646c8[_0x3485('0x2d')]['filter']+'%'};return _0x1ff485;}})});}_0x3410e1=_[_0x3485('0x3c')]({},_0x3410e1,_0x3646c8['options']);var _0x325522={'where':_0x3410e1[_0x3485('0x38')]};return db[_0x3485('0x2b')]['count'](_0x325522)[_0x3485('0x23')](function(_0x168ea2){_0x3cc604[_0x3485('0x42')]=_0x168ea2;if(_0x3646c8[_0x3485('0x2d')][_0x3485('0x43')]){_0x3410e1['include']=[{'all':!![]}];}return db[_0x3485('0x2b')][_0x3485('0x44')](_0x3410e1);})['then'](function(_0x4ffb88){_0x3cc604['rows']=_0x4ffb88;return _0x3cc604;})[_0x3485('0x23')](respondWithFilteredResult(_0x544fbb,_0x3410e1))[_0x3485('0x45')](handleError(_0x544fbb,null));};exports[_0x3485('0x46')]=function(_0x354597,_0x5d8a81){var _0x30eb3e={'raw':![],'where':{'id':_0x354597['params']['id']}},_0x2f648c={};_0x2f648c['model']=_[_0x3485('0x47')](db[_0x3485('0x2b')]['rawAttributes']);_0x2f648c[_0x3485('0x2d')]=_[_0x3485('0x47')](_0x354597[_0x3485('0x2d')]);_0x2f648c[_0x3485('0x30')]=_[_0x3485('0x32')](_0x2f648c[_0x3485('0x2c')],_0x2f648c[_0x3485('0x2d')]);_0x30eb3e[_0x3485('0x31')]=_[_0x3485('0x32')](_0x2f648c[_0x3485('0x2c')],qs['fields'](_0x354597[_0x3485('0x2d')][_0x3485('0x33')]));_0x30eb3e[_0x3485('0x31')]=_0x30eb3e[_0x3485('0x31')]['length']?_0x30eb3e[_0x3485('0x31')]:_0x2f648c[_0x3485('0x2c')];if(_0x354597['query'][_0x3485('0x43')]){_0x30eb3e[_0x3485('0x48')]=[{'all':!![]}];}_0x30eb3e=_[_0x3485('0x3c')]({},_0x30eb3e,_0x354597[_0x3485('0x49')]);return db[_0x3485('0x2b')][_0x3485('0x4a')](_0x30eb3e)['then'](handleEntityNotFound(_0x5d8a81,null))[_0x3485('0x23')](respondWithResult(_0x5d8a81,null))[_0x3485('0x45')](handleError(_0x5d8a81,null));};exports['create']=function(_0x29bd22,_0x50fa27){return db[_0x3485('0x2b')][_0x3485('0x4b')](_0x29bd22['body'],{})[_0x3485('0x23')](respondWithResult(_0x50fa27,0xc9))[_0x3485('0x45')](handleError(_0x50fa27,null));};exports['update']=function(_0x4fb292,_0x10a193){if(_0x4fb292[_0x3485('0x4c')]['id']){delete _0x4fb292[_0x3485('0x4c')]['id'];}return db['VoiceQueueReport'][_0x3485('0x4a')]({'where':{'id':_0x4fb292[_0x3485('0x4d')]['id']}})[_0x3485('0x23')](handleEntityNotFound(_0x10a193,null))['then'](saveUpdates(_0x4fb292[_0x3485('0x4c')],null))['then'](respondWithResult(_0x10a193,null))[_0x3485('0x45')](handleError(_0x10a193,null));};exports[_0x3485('0x24')]=function(_0x478a3f,_0x5be673){return db[_0x3485('0x2b')]['find']({'where':{'id':_0x478a3f['params']['id']}})['then'](handleEntityNotFound(_0x5be673,null))[_0x3485('0x23')](removeEntity(_0x5be673,null))[_0x3485('0x45')](handleError(_0x5be673,null));};exports[_0x3485('0x4e')]=function(_0x2d6602,_0x5deab6){return db[_0x3485('0x2b')][_0x3485('0x4e')]()[_0x3485('0x23')](respondWithResult(_0x5deab6,null))[_0x3485('0x45')](handleError(_0x5deab6,null));};exports[_0x3485('0x4f')]=function(_0x6047ad,_0xe8725){var _0x46b97b={},_0x52e016={},_0x21eea9={'count':0x0,'rows':[]};_0x52e016['model']=_[_0x3485('0x47')](db['VoiceQueueReport']['rawAttributes']);var _0x15a865={'dateStart':_0x6047ad[_0x3485('0x2d')][_0x3485('0x2f')],'dateEnd':_0x6047ad[_0x3485('0x2d')][_0x3485('0x2e')]};delete _0x6047ad[_0x3485('0x2d')][_0x3485('0x2f')];delete _0x6047ad[_0x3485('0x2d')]['dateEnd'];_0x52e016[_0x3485('0x2d')]=_[_0x3485('0x47')](_0x6047ad[_0x3485('0x2d')]);_0x52e016[_0x3485('0x30')]=_[_0x3485('0x32')](_0x52e016[_0x3485('0x2c')],_0x52e016[_0x3485('0x2d')]);_0x46b97b[_0x3485('0x31')]=_['intersection'](_0x52e016[_0x3485('0x2c')],qs[_0x3485('0x33')](_0x6047ad[_0x3485('0x2d')]['fields']));_0x46b97b[_0x3485('0x31')]=_0x46b97b['attributes'][_0x3485('0x34')]?_0x46b97b[_0x3485('0x31')]:_0x52e016['model'];if(!_0x6047ad['query'][_0x3485('0x50')]('nolimit')){_0x46b97b[_0x3485('0x36')]=qs[_0x3485('0x36')](_0x6047ad[_0x3485('0x2d')][_0x3485('0x36')]);_0x46b97b[_0x3485('0x37')]=qs['offset'](_0x6047ad['query'][_0x3485('0x37')]);}_0x46b97b[_0x3485('0x51')]=qs[_0x3485('0x52')](_0x6047ad['query']['sort']);_0x46b97b[_0x3485('0x38')]=qs['filters'](_[_0x3485('0x39')](_0x6047ad['query'],_0x52e016[_0x3485('0x30')]));if(_0x15a865[_0x3485('0x2f')]){if(_0x15a865[_0x3485('0x2e')]){_0x15a865['dateEnd']=moment(_0x15a865[_0x3485('0x2e')])[_0x3485('0x3a')](0x1,_0x3485('0x3b'));}else{_0x15a865['dateEnd']=moment(_0x15a865[_0x3485('0x2f')])['add'](0x1,_0x3485('0x3b'));}_['merge'](_0x46b97b[_0x3485('0x38')],{'createdAt':{'$gte':_0x15a865[_0x3485('0x2f')],'$lte':_0x15a865['dateEnd']}});}if(_0x6047ad[_0x3485('0x2d')][_0x3485('0x3d')]){_0x46b97b['where']=_[_0x3485('0x3c')](_0x46b97b[_0x3485('0x38')],{'$or':_[_0x3485('0x53')](_0x46b97b[_0x3485('0x31')],function(_0x2afd22){var _0x557652={};_0x557652[_0x2afd22]={'$like':'%'+_0x6047ad[_0x3485('0x2d')][_0x3485('0x3d')]+'%'};return _0x557652;})});}_0x46b97b=_[_0x3485('0x3c')]({},_0x46b97b,_0x6047ad[_0x3485('0x49')]);var _0x24e450={'where':_0x46b97b['where']};return db[_0x3485('0x2b')][_0x3485('0x42')](_0x24e450)[_0x3485('0x23')](function(_0xb30a70){_0x21eea9[_0x3485('0x42')]=_0xb30a70;if(_0x6047ad['query'][_0x3485('0x43')]){_0x46b97b[_0x3485('0x48')]=[{'all':!![]}];}return db[_0x3485('0x2b')][_0x3485('0x44')](_0x46b97b);})[_0x3485('0x23')](function(_0x460c2d){_0x21eea9[_0x3485('0x54')]=_0x460c2d;return _0x21eea9;})[_0x3485('0x23')](respondWithFilteredResult(_0xe8725,_0x46b97b,_0x3485('0x4f')))['catch'](handleError(_0xe8725,null,_0x3485('0x4f')));};
\ No newline at end of file
+var _0x9d92=['getVoiceQueuesReport','html-pdf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','api','../../config/utils','../../config/environment','redis','defaults','localhost','sendStatus','status','json','count','limit','Content-Range','apply','reject','update','end','error','name','index','VoiceQueueReport','rawAttributes','query','dateStart','dateEnd','keys','filters','model','fields','attributes','length','nolimit','offset','order','sort','pick','day','merge','where','filter','map','type','key','options','then','includeAll','include','findAll','rows','catch','params','intersection','create','body','find','destroy','describe','hasOwnProperty','add'];(function(_0x403e05,_0x4683c9){var _0x27e9e3=function(_0x5ea220){while(--_0x5ea220){_0x403e05['push'](_0x403e05['shift']());}};_0x27e9e3(++_0x4683c9);}(_0x9d92,0xdf));var _0x29d9=function(_0x3c6dce,_0x5424dd){_0x3c6dce=_0x3c6dce-0x0;var _0x1450e9=_0x9d92[_0x3c6dce];return _0x1450e9;};'use strict';var pdf=require(_0x29d9('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x29d9('0x1'));var jsonpatch=require(_0x29d9('0x2'));var rp=require('request-promise');var moment=require(_0x29d9('0x3'));var BPromise=require(_0x29d9('0x4'));var Mustache=require(_0x29d9('0x5'));var util=require(_0x29d9('0x6'));var path=require(_0x29d9('0x7'));var sox=require(_0x29d9('0x8'));var csv=require(_0x29d9('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x29d9('0xa'));var squel=require(_0x29d9('0xb'));var crypto=require(_0x29d9('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x29d9('0xd'));var toCsv=require(_0x29d9('0x9'));var querystring=require(_0x29d9('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x29d9('0xf'));var utils=require(_0x29d9('0x10'));var config=require(_0x29d9('0x11'));var db=require('../../mysqldb')['db'];config[_0x29d9('0x12')]=_[_0x29d9('0x13')](config[_0x29d9('0x12')],{'host':_0x29d9('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x29d9('0x12')]));require('./voiceQueueReport.socket')['register'](socket);function respondWithStatusCode(_0x5d05b5,_0x399643){_0x399643=_0x399643||0xcc;return function(_0x24b770){if(_0x24b770){return _0x5d05b5[_0x29d9('0x15')](_0x399643);}return _0x5d05b5[_0x29d9('0x16')](_0x399643)['end']();};}function respondWithResult(_0x1ab294,_0x2a2603){_0x2a2603=_0x2a2603||0xc8;return function(_0xa5b923){if(_0xa5b923){return _0x1ab294[_0x29d9('0x16')](_0x2a2603)[_0x29d9('0x17')](_0xa5b923);}};}function respondWithFilteredResult(_0x36f1f7,_0x3f382e){return function(_0x327c5f){if(_0x327c5f){var _0xe1b08b=_0x327c5f[_0x29d9('0x18')],_0x8f79e4=_0x3f382e['offset'],_0x2b4f42=_0x3f382e['offset']+_0x3f382e[_0x29d9('0x19')],_0x578da9;if(_0x2b4f42>=_0xe1b08b){_0x2b4f42=_0xe1b08b;_0x578da9=0xc8;}else{_0x578da9=0xce;}_0x36f1f7[_0x29d9('0x16')](_0x578da9);return _0x36f1f7['set'](_0x29d9('0x1a'),_0x8f79e4+'-'+_0x2b4f42+'/'+_0xe1b08b)[_0x29d9('0x17')](_0x327c5f);}return null;};}function patchUpdates(_0x2725f7){return function(_0x9b0337){try{jsonpatch[_0x29d9('0x1b')](_0x9b0337,_0x2725f7,!![]);}catch(_0x268485){return BPromise[_0x29d9('0x1c')](_0x268485);}return _0x9b0337['save']();};}function saveUpdates(_0x3d03d0,_0xbb8ceb){return function(_0x2c756a){if(_0x2c756a){return _0x2c756a[_0x29d9('0x1d')](_0x3d03d0)['then'](function(_0x52f99d){return _0x52f99d;});}return null;};}function removeEntity(_0x1e99a0,_0x24ccc5){return function(_0x47a7f3){if(_0x47a7f3){return _0x47a7f3['destroy']()['then'](function(){_0x1e99a0[_0x29d9('0x16')](0xcc)[_0x29d9('0x1e')]();});}};}function handleEntityNotFound(_0x302a7b,_0x5d80c4){return function(_0x45da6c){if(!_0x45da6c){_0x302a7b[_0x29d9('0x15')](0x194);}return _0x45da6c;};}function handleError(_0xb564c2,_0x1d8903){_0x1d8903=_0x1d8903||0x1f4;return function(_0x47d353){logger[_0x29d9('0x1f')](_0x47d353['stack']);if(_0x47d353['name']){delete _0x47d353[_0x29d9('0x20')];}_0xb564c2[_0x29d9('0x16')](_0x1d8903)['send'](_0x47d353);};}exports[_0x29d9('0x21')]=function(_0x5c5de5,_0x383b69){var _0x29a034={},_0x3c10da={},_0x30d4e7={'count':0x0,'rows':[]};var _0x30212d=db[_0x29d9('0x22')][_0x29d9('0x23')];_0x3c10da['model']=_['keys'](_0x30212d);var _0x520cf5={'dateStart':_0x5c5de5[_0x29d9('0x24')][_0x29d9('0x25')],'dateEnd':_0x5c5de5[_0x29d9('0x24')][_0x29d9('0x26')]};delete _0x5c5de5[_0x29d9('0x24')][_0x29d9('0x25')];delete _0x5c5de5['query'][_0x29d9('0x26')];_0x3c10da['query']=_[_0x29d9('0x27')](_0x5c5de5[_0x29d9('0x24')]);_0x3c10da[_0x29d9('0x28')]=_['intersection'](_0x3c10da['model'],_0x3c10da['query']);_0x29a034['attributes']=_['intersection'](_0x3c10da[_0x29d9('0x29')],qs[_0x29d9('0x2a')](_0x5c5de5[_0x29d9('0x24')]['fields']));_0x29a034[_0x29d9('0x2b')]=_0x29a034[_0x29d9('0x2b')][_0x29d9('0x2c')]?_0x29a034[_0x29d9('0x2b')]:_0x3c10da[_0x29d9('0x29')];if(!_0x5c5de5[_0x29d9('0x24')]['hasOwnProperty'](_0x29d9('0x2d'))){_0x29a034[_0x29d9('0x19')]=qs[_0x29d9('0x19')](_0x5c5de5[_0x29d9('0x24')][_0x29d9('0x19')]);_0x29a034['offset']=qs[_0x29d9('0x2e')](_0x5c5de5[_0x29d9('0x24')][_0x29d9('0x2e')]);}_0x29a034[_0x29d9('0x2f')]=qs[_0x29d9('0x30')](_0x5c5de5[_0x29d9('0x24')][_0x29d9('0x30')]);_0x29a034['where']=qs[_0x29d9('0x28')](_[_0x29d9('0x31')](_0x5c5de5[_0x29d9('0x24')],_0x3c10da[_0x29d9('0x28')]));if(_0x520cf5[_0x29d9('0x25')]){if(_0x520cf5[_0x29d9('0x26')]){_0x520cf5['dateEnd']=moment(_0x520cf5[_0x29d9('0x26')])['add'](0x1,'day');}else{_0x520cf5['dateEnd']=moment(_0x520cf5[_0x29d9('0x25')])['add'](0x1,_0x29d9('0x32'));}_[_0x29d9('0x33')](_0x29a034[_0x29d9('0x34')],{'createdAt':{'$gte':_0x520cf5[_0x29d9('0x25')],'$lte':_0x520cf5[_0x29d9('0x26')]}});}if(_0x5c5de5[_0x29d9('0x24')][_0x29d9('0x35')]){_0x29a034[_0x29d9('0x34')]=_[_0x29d9('0x33')](_0x29a034[_0x29d9('0x34')],{'$or':_[_0x29d9('0x36')](_0x30212d,function(_0x4eadde){if(_0x4eadde[_0x29d9('0x37')][_0x29d9('0x38')]!=='VIRTUAL'){var _0x558dd3={};_0x558dd3[_0x4eadde['field']]={'$like':'%'+_0x5c5de5[_0x29d9('0x24')][_0x29d9('0x35')]+'%'};return _0x558dd3;}})});}_0x29a034=_[_0x29d9('0x33')]({},_0x29a034,_0x5c5de5[_0x29d9('0x39')]);var _0x34a973={'where':_0x29a034['where']};return db[_0x29d9('0x22')][_0x29d9('0x18')](_0x34a973)[_0x29d9('0x3a')](function(_0x5281bc){_0x30d4e7[_0x29d9('0x18')]=_0x5281bc;if(_0x5c5de5[_0x29d9('0x24')][_0x29d9('0x3b')]){_0x29a034[_0x29d9('0x3c')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x29d9('0x3d')](_0x29a034);})[_0x29d9('0x3a')](function(_0xdc679){_0x30d4e7[_0x29d9('0x3e')]=_0xdc679;return _0x30d4e7;})['then'](respondWithFilteredResult(_0x383b69,_0x29a034))[_0x29d9('0x3f')](handleError(_0x383b69,null));};exports['show']=function(_0x4bd8c5,_0x19e54f){var _0x225c84={'raw':![],'where':{'id':_0x4bd8c5[_0x29d9('0x40')]['id']}},_0x361018={};_0x361018[_0x29d9('0x29')]=_[_0x29d9('0x27')](db[_0x29d9('0x22')][_0x29d9('0x23')]);_0x361018['query']=_[_0x29d9('0x27')](_0x4bd8c5['query']);_0x361018['filters']=_[_0x29d9('0x41')](_0x361018['model'],_0x361018[_0x29d9('0x24')]);_0x225c84[_0x29d9('0x2b')]=_[_0x29d9('0x41')](_0x361018[_0x29d9('0x29')],qs[_0x29d9('0x2a')](_0x4bd8c5['query']['fields']));_0x225c84[_0x29d9('0x2b')]=_0x225c84[_0x29d9('0x2b')][_0x29d9('0x2c')]?_0x225c84[_0x29d9('0x2b')]:_0x361018[_0x29d9('0x29')];if(_0x4bd8c5[_0x29d9('0x24')][_0x29d9('0x3b')]){_0x225c84[_0x29d9('0x3c')]=[{'all':!![]}];}_0x225c84=_[_0x29d9('0x33')]({},_0x225c84,_0x4bd8c5[_0x29d9('0x39')]);return db[_0x29d9('0x22')]['find'](_0x225c84)[_0x29d9('0x3a')](handleEntityNotFound(_0x19e54f,null))[_0x29d9('0x3a')](respondWithResult(_0x19e54f,null))[_0x29d9('0x3f')](handleError(_0x19e54f,null));};exports[_0x29d9('0x42')]=function(_0x44bafa,_0x34be83){return db['VoiceQueueReport'][_0x29d9('0x42')](_0x44bafa['body'],{})[_0x29d9('0x3a')](respondWithResult(_0x34be83,0xc9))[_0x29d9('0x3f')](handleError(_0x34be83,null));};exports['update']=function(_0x238a54,_0x4bf9d8){if(_0x238a54[_0x29d9('0x43')]['id']){delete _0x238a54[_0x29d9('0x43')]['id'];}return db[_0x29d9('0x22')][_0x29d9('0x44')]({'where':{'id':_0x238a54['params']['id']}})[_0x29d9('0x3a')](handleEntityNotFound(_0x4bf9d8,null))['then'](saveUpdates(_0x238a54['body'],null))[_0x29d9('0x3a')](respondWithResult(_0x4bf9d8,null))[_0x29d9('0x3f')](handleError(_0x4bf9d8,null));};exports[_0x29d9('0x45')]=function(_0xe60a8c,_0x155912){return db[_0x29d9('0x22')][_0x29d9('0x44')]({'where':{'id':_0xe60a8c[_0x29d9('0x40')]['id']}})[_0x29d9('0x3a')](handleEntityNotFound(_0x155912,null))[_0x29d9('0x3a')](removeEntity(_0x155912,null))['catch'](handleError(_0x155912,null));};exports[_0x29d9('0x46')]=function(_0x1de7ae,_0x1dc193){return db[_0x29d9('0x22')]['describe']()[_0x29d9('0x3a')](respondWithResult(_0x1dc193,null))['catch'](handleError(_0x1dc193,null));};exports['getVoiceQueuesReport']=function(_0x4ce50f,_0x5c7f6b){var _0x342d76={},_0x417351={},_0x329e37={'count':0x0,'rows':[]};_0x417351[_0x29d9('0x29')]=_[_0x29d9('0x27')](db[_0x29d9('0x22')][_0x29d9('0x23')]);var _0x55c209={'dateStart':_0x4ce50f[_0x29d9('0x24')][_0x29d9('0x25')],'dateEnd':_0x4ce50f[_0x29d9('0x24')][_0x29d9('0x26')]};delete _0x4ce50f[_0x29d9('0x24')][_0x29d9('0x25')];delete _0x4ce50f[_0x29d9('0x24')]['dateEnd'];_0x417351[_0x29d9('0x24')]=_[_0x29d9('0x27')](_0x4ce50f[_0x29d9('0x24')]);_0x417351[_0x29d9('0x28')]=_[_0x29d9('0x41')](_0x417351[_0x29d9('0x29')],_0x417351[_0x29d9('0x24')]);_0x342d76[_0x29d9('0x2b')]=_[_0x29d9('0x41')](_0x417351[_0x29d9('0x29')],qs[_0x29d9('0x2a')](_0x4ce50f['query'][_0x29d9('0x2a')]));_0x342d76[_0x29d9('0x2b')]=_0x342d76['attributes'][_0x29d9('0x2c')]?_0x342d76[_0x29d9('0x2b')]:_0x417351[_0x29d9('0x29')];if(!_0x4ce50f[_0x29d9('0x24')][_0x29d9('0x47')](_0x29d9('0x2d'))){_0x342d76['limit']=qs[_0x29d9('0x19')](_0x4ce50f['query'][_0x29d9('0x19')]);_0x342d76[_0x29d9('0x2e')]=qs[_0x29d9('0x2e')](_0x4ce50f[_0x29d9('0x24')][_0x29d9('0x2e')]);}_0x342d76[_0x29d9('0x2f')]=qs[_0x29d9('0x30')](_0x4ce50f['query'][_0x29d9('0x30')]);_0x342d76[_0x29d9('0x34')]=qs[_0x29d9('0x28')](_[_0x29d9('0x31')](_0x4ce50f['query'],_0x417351['filters']));if(_0x55c209[_0x29d9('0x25')]){if(_0x55c209[_0x29d9('0x26')]){_0x55c209[_0x29d9('0x26')]=moment(_0x55c209[_0x29d9('0x26')])[_0x29d9('0x48')](0x1,_0x29d9('0x32'));}else{_0x55c209[_0x29d9('0x26')]=moment(_0x55c209[_0x29d9('0x25')])['add'](0x1,_0x29d9('0x32'));}_[_0x29d9('0x33')](_0x342d76[_0x29d9('0x34')],{'createdAt':{'$gte':_0x55c209[_0x29d9('0x25')],'$lte':_0x55c209['dateEnd']}});}if(_0x4ce50f[_0x29d9('0x24')]['filter']){_0x342d76[_0x29d9('0x34')]=_['merge'](_0x342d76[_0x29d9('0x34')],{'$or':_[_0x29d9('0x36')](_0x342d76[_0x29d9('0x2b')],function(_0x1d4a66){var _0x4f51f0={};_0x4f51f0[_0x1d4a66]={'$like':'%'+_0x4ce50f['query'][_0x29d9('0x35')]+'%'};return _0x4f51f0;})});}_0x342d76=_[_0x29d9('0x33')]({},_0x342d76,_0x4ce50f[_0x29d9('0x39')]);var _0x19fec3={'where':_0x342d76['where']};return db[_0x29d9('0x22')]['count'](_0x19fec3)[_0x29d9('0x3a')](function(_0x49c30b){_0x329e37[_0x29d9('0x18')]=_0x49c30b;if(_0x4ce50f['query'][_0x29d9('0x3b')]){_0x342d76[_0x29d9('0x3c')]=[{'all':!![]}];}return db[_0x29d9('0x22')][_0x29d9('0x3d')](_0x342d76);})[_0x29d9('0x3a')](function(_0x5cafd4){_0x329e37[_0x29d9('0x3e')]=_0x5cafd4;return _0x329e37;})[_0x29d9('0x3a')](respondWithFilteredResult(_0x5c7f6b,_0x342d76,_0x29d9('0x49')))[_0x29d9('0x3f')](handleError(_0x5c7f6b,null,_0x29d9('0x49')));};
\ No newline at end of file
index f4d2baa..466d368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x023c=['remove','emit','hasOwnProperty','../../mysqldb','VoiceQueueReport','save','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x023c,0x153));var _0xc023=function(_0x164087,_0x56d757){_0x164087=_0x164087-0x0;var _0x3e9266=_0x023c[_0x164087];return _0x3e9266;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xc023('0x0'))['db'][_0xc023('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc023('0x2'),'afterUpdate':_0xc023('0x3'),'afterDestroy':_0xc023('0x4')};function emitEvent(_0x5055b8){return function(_0x25d56b,_0x10a831,_0x4e7271){VoiceQueueReportEvents[_0xc023('0x5')](_0x5055b8+':'+_0x25d56b['id'],_0x25d56b);VoiceQueueReportEvents['emit'](_0x5055b8,_0x25d56b);_0x4e7271(null);};}for(var e in events){if(events[_0xc023('0x6')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x206a=['update','remove','emit','hasOwnProperty','hook','../../mysqldb','VoiceQueueReport','setMaxListeners','save'];(function(_0x455b41,_0x55840a){var _0x3143ae=function(_0x3ddb59){while(--_0x3ddb59){_0x455b41['push'](_0x455b41['shift']());}};_0x3143ae(++_0x55840a);}(_0x206a,0xef));var _0xa206=function(_0xa68a32,_0x54036d){_0xa68a32=_0xa68a32-0x0;var _0x1e4b16=_0x206a[_0xa68a32];return _0x1e4b16;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xa206('0x0'))['db'][_0xa206('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xa206('0x2')](0x0);var events={'afterCreate':_0xa206('0x3'),'afterUpdate':_0xa206('0x4'),'afterDestroy':_0xa206('0x5')};function emitEvent(_0x37cbb9){return function(_0x171bae,_0x42e701,_0x538040){VoiceQueueReportEvents['emit'](_0x37cbb9+':'+_0x171bae['id'],_0x171bae);VoiceQueueReportEvents[_0xa206('0x6')](_0x37cbb9,_0x171bae);_0x538040(null);};}for(var e in events){if(events[_0xa206('0x7')](e)){var event=events[e];VoiceQueueReport[_0xa206('0x8')](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
index 0d52065..a5b9cf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed67=['define','report_queue','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./voiceQueueReport.attributes','exports'];(function(_0x1edbeb,_0x40b732){var _0x589010=function(_0x193f6e){while(--_0x193f6e){_0x1edbeb['push'](_0x1edbeb['shift']());}};_0x589010(++_0x40b732);}(_0xed67,0x10a));var _0x7ed6=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0xed67[_0x1a72f3];return _0x57ef47;};'use strict';var _=require(_0x7ed6('0x0'));var util=require(_0x7ed6('0x1'));var logger=require(_0x7ed6('0x2'))(_0x7ed6('0x3'));var moment=require(_0x7ed6('0x4'));var BPromise=require(_0x7ed6('0x5'));var rp=require(_0x7ed6('0x6'));var attributes=require(_0x7ed6('0x7'));module[_0x7ed6('0x8')]=function(_0x5b1b56,_0x3da24c){return _0x5b1b56[_0x7ed6('0x9')]('VoiceQueueReport',attributes,{'tableName':_0x7ed6('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9cd=['report_queue','uniqueid','calleridnum','lodash','../../config/logger','api','moment','bluebird','request-promise','./voiceQueueReport.attributes','exports','define','VoiceQueueReport'];(function(_0x3c3ec0,_0xe6883c){var _0x4cd47c=function(_0x4338b4){while(--_0x4338b4){_0x3c3ec0['push'](_0x3c3ec0['shift']());}};_0x4cd47c(++_0xe6883c);}(_0xc9cd,0x16f));var _0xdc9c=function(_0x5f42f1,_0x956be5){_0x5f42f1=_0x5f42f1-0x0;var _0x5534ee=_0xc9cd[_0x5f42f1];return _0x5534ee;};'use strict';var _=require(_0xdc9c('0x0'));var util=require('util');var logger=require(_0xdc9c('0x1'))(_0xdc9c('0x2'));var moment=require(_0xdc9c('0x3'));var BPromise=require(_0xdc9c('0x4'));var rp=require(_0xdc9c('0x5'));var attributes=require(_0xdc9c('0x6'));module[_0xdc9c('0x7')]=function(_0x2d7065,_0x1bf95f){return _0x2d7065[_0xdc9c('0x8')](_0xdc9c('0x9'),attributes,{'tableName':_0xdc9c('0xa'),'paranoid':![],'indexes':[{'fields':[_0xdc9c('0xb')]},{'fields':[_0xdc9c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 2116f50..7939f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc428=['localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','GetVoiceQueueReport','VoiceQueueReport','options','raw','include','model','attributes','map','debug','catch','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','where','limit','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults'];(function(_0xd95a4f,_0x5b2faf){var _0x913026=function(_0x4e9711){while(--_0x4e9711){_0xd95a4f['push'](_0xd95a4f['shift']());}};_0x913026(++_0x5b2faf);}(_0xc428,0x165));var _0x8c42=function(_0x5608ab,_0x3eb6c6){_0x5608ab=_0x5608ab-0x0;var _0x21c8b1=_0xc428[_0x5608ab];return _0x21c8b1;};'use strict';var _=require(_0x8c42('0x0'));var util=require(_0x8c42('0x1'));var moment=require(_0x8c42('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8c42('0x3'));var db=require(_0x8c42('0x4'))['db'];var utils=require(_0x8c42('0x5'));var logger=require(_0x8c42('0x6'))('rpc');var config=require(_0x8c42('0x7'));var jayson=require(_0x8c42('0x8'));var client=jayson[_0x8c42('0x9')]['http']({'port':0x232a});config[_0x8c42('0xa')]=_[_0x8c42('0xb')](config[_0x8c42('0xa')],{'host':_0x8c42('0xc'),'port':0x18eb});var socket=require(_0x8c42('0xd'))(new Redis(config['redis']));require(_0x8c42('0xe'))['register'](socket);function respondWithRpcPromise(_0x434cf3,_0x300702,_0xbb4c98){return new BPromise(function(_0xf9000,_0x33ef7f){return client[_0x8c42('0xf')](_0x434cf3,_0xbb4c98)[_0x8c42('0x10')](function(_0x5ae7b0){logger['info'](_0x8c42('0x11'),_0x300702,_0x8c42('0x12'));logger['debug']('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x300702,_0x8c42('0x12'),JSON[_0x8c42('0x13')](_0x5ae7b0));if(_0x5ae7b0[_0x8c42('0x14')]){if(_0x5ae7b0['error'][_0x8c42('0x15')]===0x1f4){logger[_0x8c42('0x14')](_0x8c42('0x11'),_0x300702,_0x5ae7b0[_0x8c42('0x14')]['message']);return _0x33ef7f(_0x5ae7b0[_0x8c42('0x14')][_0x8c42('0x16')]);}logger[_0x8c42('0x14')](_0x8c42('0x11'),_0x300702,_0x5ae7b0['error']['message']);return _0xf9000(_0x5ae7b0[_0x8c42('0x14')]['message']);}else{logger[_0x8c42('0x17')](_0x8c42('0x11'),_0x300702,'request\x20sent');_0xf9000(_0x5ae7b0[_0x8c42('0x18')][_0x8c42('0x16')]);}})['catch'](function(_0xa41c74){logger[_0x8c42('0x14')](_0x8c42('0x11'),_0x300702,_0xa41c74);_0x33ef7f(_0xa41c74);});});}exports[_0x8c42('0x19')]=function(_0x3f6d4d){var _0x33599e=this;return new Promise(function(_0x519f28,_0x513d96){return db[_0x8c42('0x1a')]['findAll']({'raw':_0x3f6d4d[_0x8c42('0x1b')]?_0x3f6d4d[_0x8c42('0x1b')][_0x8c42('0x1c')]===undefined?!![]:![]:!![],'where':_0x3f6d4d['options']?_0x3f6d4d['options']['where']||null:null,'attributes':_0x3f6d4d['options']?_0x3f6d4d['options']['attributes']||null:null,'limit':_0x3f6d4d['options']?_0x3f6d4d['options']['limit']||null:null,'include':_0x3f6d4d[_0x8c42('0x1b')]?_0x3f6d4d[_0x8c42('0x1b')]['include']?_['map'](_0x3f6d4d[_0x8c42('0x1b')][_0x8c42('0x1d')],function(_0x3ba603){return{'model':db[_0x3ba603[_0x8c42('0x1e')]],'as':_0x3ba603['as'],'attributes':_0x3ba603[_0x8c42('0x1f')],'include':_0x3ba603[_0x8c42('0x1d')]?_['map'](_0x3ba603['include'],function(_0x173225){return{'model':db[_0x173225[_0x8c42('0x1e')]],'as':_0x173225['as'],'attributes':_0x173225[_0x8c42('0x1f')],'include':_0x173225[_0x8c42('0x1d')]?_[_0x8c42('0x20')](_0x173225[_0x8c42('0x1d')],function(_0x4315d3){return{'model':db[_0x4315d3['model']],'as':_0x4315d3['as'],'attributes':_0x4315d3[_0x8c42('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x8c42('0x10')](function(_0xffda8d){logger[_0x8c42('0x17')](_0x8c42('0x19'),_0x3f6d4d);logger[_0x8c42('0x21')](_0x8c42('0x19'),_0x3f6d4d,JSON[_0x8c42('0x13')](_0xffda8d));_0x519f28(_0xffda8d);})[_0x8c42('0x22')](function(_0x3f8bd3){logger[_0x8c42('0x14')](_0x8c42('0x19'),_0x3f8bd3['message'],_0x3f6d4d);_0x513d96(_0x33599e[_0x8c42('0x14')](0x1f4,_0x3f8bd3['message']));});});};exports[_0x8c42('0x23')]=function(_0x5a61aa){var _0x3f9386=this;return new Promise(function(_0x43501a,_0xcd9466){return db[_0x8c42('0x1a')][_0x8c42('0x24')](_0x5a61aa[_0x8c42('0x25')],{'raw':_0x5a61aa[_0x8c42('0x1b')]?_0x5a61aa[_0x8c42('0x1b')][_0x8c42('0x1c')]===undefined?!![]:![]:!![]})[_0x8c42('0x10')](function(_0x2336c1){logger[_0x8c42('0x17')]('CreateVoiceQueueReport',_0x5a61aa);logger[_0x8c42('0x21')]('CreateVoiceQueueReport',_0x5a61aa,JSON[_0x8c42('0x13')](_0x2336c1));_0x43501a(_0x2336c1);})['catch'](function(_0xf1512){logger[_0x8c42('0x14')](_0x8c42('0x23'),_0xf1512[_0x8c42('0x16')],_0x5a61aa);_0xcd9466(_0x3f9386[_0x8c42('0x14')](0x1f4,_0xf1512[_0x8c42('0x16')]));});});};exports[_0x8c42('0x26')]=function(_0x2c7a59){var _0x49a4d4=this;return new Promise(function(_0x2b6eac,_0x216d71){return db[_0x8c42('0x1a')]['update'](_0x2c7a59[_0x8c42('0x25')],{'raw':_0x2c7a59[_0x8c42('0x1b')]?_0x2c7a59[_0x8c42('0x1b')][_0x8c42('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2c7a59[_0x8c42('0x1b')]?_0x2c7a59[_0x8c42('0x1b')][_0x8c42('0x27')]||null:null,'attributes':_0x2c7a59['options']?_0x2c7a59[_0x8c42('0x1b')][_0x8c42('0x1f')]||null:null,'limit':_0x2c7a59[_0x8c42('0x1b')]?_0x2c7a59['options'][_0x8c42('0x28')]||null:null})[_0x8c42('0x10')](function(_0xf7cb34){logger['info'](_0x8c42('0x26'),_0x2c7a59);logger[_0x8c42('0x21')](_0x8c42('0x26'),_0x2c7a59,JSON[_0x8c42('0x13')](_0xf7cb34));_0x2b6eac(_0xf7cb34);})[_0x8c42('0x22')](function(_0x98b0b6){logger[_0x8c42('0x14')](_0x8c42('0x26'),_0x98b0b6[_0x8c42('0x16')],_0x2c7a59);_0x216d71(_0x49a4d4['error'](0x1f4,_0x98b0b6[_0x8c42('0x16')]));});});};
\ No newline at end of file
+var _0xa298=['then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','where','attributes','limit','map','include','model','body','raw','CreateVoiceQueueReport','update','UpdateVoiceQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','request'];(function(_0x3ebfcd,_0x595578){var _0x16afe2=function(_0xe8681f){while(--_0xe8681f){_0x3ebfcd['push'](_0x3ebfcd['shift']());}};_0x16afe2(++_0x595578);}(_0xa298,0x14d));var _0x8a29=function(_0x28ec47,_0x32cbe3){_0x28ec47=_0x28ec47-0x0;var _0x3ab24d=_0xa298[_0x28ec47];return _0x3ab24d;};'use strict';var _=require('lodash');var util=require(_0x8a29('0x0'));var moment=require(_0x8a29('0x1'));var BPromise=require(_0x8a29('0x2'));var rs=require(_0x8a29('0x3'));var fs=require('fs');var Redis=require(_0x8a29('0x4'));var db=require(_0x8a29('0x5'))['db'];var utils=require(_0x8a29('0x6'));var logger=require(_0x8a29('0x7'))(_0x8a29('0x8'));var config=require(_0x8a29('0x9'));var jayson=require(_0x8a29('0xa'));var client=jayson[_0x8a29('0xb')][_0x8a29('0xc')]({'port':0x232a});config[_0x8a29('0xd')]=_[_0x8a29('0xe')](config[_0x8a29('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x8a29('0xf'))(new Redis(config[_0x8a29('0xd')]));require(_0x8a29('0x10'))[_0x8a29('0x11')](socket);function respondWithRpcPromise(_0x4dfff5,_0x490840,_0x4c9ad5){return new BPromise(function(_0x2e0bab,_0x9eb7f6){return client[_0x8a29('0x12')](_0x4dfff5,_0x4c9ad5)[_0x8a29('0x13')](function(_0x441213){logger[_0x8a29('0x14')](_0x8a29('0x15'),_0x490840,_0x8a29('0x16'));logger[_0x8a29('0x17')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x490840,_0x8a29('0x16'),JSON[_0x8a29('0x18')](_0x441213));if(_0x441213[_0x8a29('0x19')]){if(_0x441213['error']['code']===0x1f4){logger['error'](_0x8a29('0x15'),_0x490840,_0x441213[_0x8a29('0x19')][_0x8a29('0x1a')]);return _0x9eb7f6(_0x441213['error'][_0x8a29('0x1a')]);}logger['error'](_0x8a29('0x15'),_0x490840,_0x441213[_0x8a29('0x19')][_0x8a29('0x1a')]);return _0x2e0bab(_0x441213['error'][_0x8a29('0x1a')]);}else{logger[_0x8a29('0x14')]('VoiceQueueReport,\x20%s,\x20%s',_0x490840,'request\x20sent');_0x2e0bab(_0x441213[_0x8a29('0x1b')]['message']);}})[_0x8a29('0x1c')](function(_0x50ee0d){logger[_0x8a29('0x19')](_0x8a29('0x15'),_0x490840,_0x50ee0d);_0x9eb7f6(_0x50ee0d);});});}exports[_0x8a29('0x1d')]=function(_0xa69688){var _0xc1e591=this;return new Promise(function(_0x1771d1,_0x269999){return db[_0x8a29('0x1e')][_0x8a29('0x1f')]({'raw':_0xa69688['options']?_0xa69688[_0x8a29('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0xa69688['options']?_0xa69688[_0x8a29('0x20')][_0x8a29('0x21')]||null:null,'attributes':_0xa69688['options']?_0xa69688[_0x8a29('0x20')][_0x8a29('0x22')]||null:null,'limit':_0xa69688['options']?_0xa69688[_0x8a29('0x20')][_0x8a29('0x23')]||null:null,'include':_0xa69688[_0x8a29('0x20')]?_0xa69688['options']['include']?_[_0x8a29('0x24')](_0xa69688['options'][_0x8a29('0x25')],function(_0x5254d7){return{'model':db[_0x5254d7[_0x8a29('0x26')]],'as':_0x5254d7['as'],'attributes':_0x5254d7['attributes'],'include':_0x5254d7[_0x8a29('0x25')]?_[_0x8a29('0x24')](_0x5254d7[_0x8a29('0x25')],function(_0x22efbf){return{'model':db[_0x22efbf[_0x8a29('0x26')]],'as':_0x22efbf['as'],'attributes':_0x22efbf[_0x8a29('0x22')],'include':_0x22efbf['include']?_['map'](_0x22efbf[_0x8a29('0x25')],function(_0x2a9866){return{'model':db[_0x2a9866[_0x8a29('0x26')]],'as':_0x2a9866['as'],'attributes':_0x2a9866[_0x8a29('0x22')]};}):[]};}):[]};}):[]:[]})[_0x8a29('0x13')](function(_0x51313a){logger[_0x8a29('0x14')](_0x8a29('0x1d'),_0xa69688);logger['debug'](_0x8a29('0x1d'),_0xa69688,JSON[_0x8a29('0x18')](_0x51313a));_0x1771d1(_0x51313a);})[_0x8a29('0x1c')](function(_0x3e719a){logger['error'](_0x8a29('0x1d'),_0x3e719a[_0x8a29('0x1a')],_0xa69688);_0x269999(_0xc1e591[_0x8a29('0x19')](0x1f4,_0x3e719a[_0x8a29('0x1a')]));});});};exports['CreateVoiceQueueReport']=function(_0x179ea8){var _0x22e666=this;return new Promise(function(_0x57bce9,_0x226ded){return db['VoiceQueueReport']['create'](_0x179ea8[_0x8a29('0x27')],{'raw':_0x179ea8[_0x8a29('0x20')]?_0x179ea8[_0x8a29('0x20')][_0x8a29('0x28')]===undefined?!![]:![]:!![]})[_0x8a29('0x13')](function(_0x3e3158){logger[_0x8a29('0x14')](_0x8a29('0x29'),_0x179ea8);logger[_0x8a29('0x17')](_0x8a29('0x29'),_0x179ea8,JSON[_0x8a29('0x18')](_0x3e3158));_0x57bce9(_0x3e3158);})[_0x8a29('0x1c')](function(_0x2f5226){logger[_0x8a29('0x19')]('CreateVoiceQueueReport',_0x2f5226[_0x8a29('0x1a')],_0x179ea8);_0x226ded(_0x22e666['error'](0x1f4,_0x2f5226[_0x8a29('0x1a')]));});});};exports['UpdateVoiceQueueReport']=function(_0x443856){var _0x4d3532=this;return new Promise(function(_0x544d31,_0x10530f){return db[_0x8a29('0x1e')][_0x8a29('0x2a')](_0x443856['body'],{'raw':_0x443856['options']?_0x443856[_0x8a29('0x20')][_0x8a29('0x28')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x443856[_0x8a29('0x20')]?_0x443856[_0x8a29('0x20')][_0x8a29('0x21')]||null:null,'attributes':_0x443856[_0x8a29('0x20')]?_0x443856[_0x8a29('0x20')][_0x8a29('0x22')]||null:null,'limit':_0x443856[_0x8a29('0x20')]?_0x443856[_0x8a29('0x20')][_0x8a29('0x23')]||null:null})['then'](function(_0x124770){logger[_0x8a29('0x14')]('UpdateVoiceQueueReport',_0x443856);logger[_0x8a29('0x17')](_0x8a29('0x2b'),_0x443856,JSON[_0x8a29('0x18')](_0x124770));_0x544d31(_0x124770);})[_0x8a29('0x1c')](function(_0x45df89){logger[_0x8a29('0x19')]('UpdateVoiceQueueReport',_0x45df89[_0x8a29('0x1a')],_0x443856);_0x10530f(_0x4d3532['error'](0x1f4,_0x45df89[_0x8a29('0x1a')]));});});};
\ No newline at end of file
index ac2dca3..eb02166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x445f=['remove','update','emit','removeListener','register','voiceQueueReport:','save'];(function(_0x45c1cf,_0x36f5cc){var _0x54fe02=function(_0x57c09a){while(--_0x57c09a){_0x45c1cf['push'](_0x45c1cf['shift']());}};_0x54fe02(++_0x36f5cc);}(_0x445f,0x12c));var _0xf445=function(_0x3187ae,_0x2f035e){_0x3187ae=_0x3187ae-0x0;var _0x2daf10=_0x445f[_0x3187ae];return _0x2daf10;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0xf445('0x0'),_0xf445('0x1'),_0xf445('0x2')];function createListener(_0x251913,_0x9fd287){return function(_0x5995f3){_0x9fd287[_0xf445('0x3')](_0x251913,_0x5995f3);};}function removeListener(_0x2dfd48,_0x43dc7d){return function(){VoiceQueueReportEvents[_0xf445('0x4')](_0x2dfd48,_0x43dc7d);};}exports[_0xf445('0x5')]=function(_0x47b92f){for(var _0x1e9742=0x0,_0x4d6094=events['length'];_0x1e9742<_0x4d6094;_0x1e9742++){var _0x551b6a=events[_0x1e9742];var _0x209b2b=createListener(_0xf445('0x6')+_0x551b6a,_0x47b92f);VoiceQueueReportEvents['on'](_0x551b6a,_0x209b2b);}};
\ No newline at end of file
+var _0x34be=['voiceQueueReport:','save','register','length'];(function(_0x2f6233,_0x90172){var _0x1c9c36=function(_0x3ac680){while(--_0x3ac680){_0x2f6233['push'](_0x2f6233['shift']());}};_0x1c9c36(++_0x90172);}(_0x34be,0x139));var _0xe34b=function(_0x178668,_0x1ec300){_0x178668=_0x178668-0x0;var _0x26107d=_0x34be[_0x178668];return _0x26107d;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0xe34b('0x0'),'remove','update'];function createListener(_0x4e3bb3,_0x52be12){return function(_0x54a4a8){_0x52be12['emit'](_0x4e3bb3,_0x54a4a8);};}function removeListener(_0x83c7c,_0x3e57f7){return function(){VoiceQueueReportEvents['removeListener'](_0x83c7c,_0x3e57f7);};}exports[_0xe34b('0x1')]=function(_0x5f4c78){for(var _0x2c7e9d=0x0,_0x4d4d19=events[_0xe34b('0x2')];_0x2c7e9d<_0x4d4d19;_0x2c7e9d++){var _0x55ebde=events[_0x2c7e9d];var _0x3bcd66=createListener(_0xe34b('0x3')+_0x55ebde,_0x5f4c78);VoiceQueueReportEvents['on'](_0x55ebde,_0x3bcd66);}};
\ No newline at end of file
index 990c70f..7ca0563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff5=['../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create','update','delete','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x44946b,_0xf874ec){var _0x249bc4=function(_0x40a23e){while(--_0x40a23e){_0x44946b['push'](_0x44946b['shift']());}};_0x249bc4(++_0xf874ec);}(_0xbff5,0x1bc));var _0x5bff=function(_0x1e8d24,_0x25de54){_0x1e8d24=_0x1e8d24-0x0;var _0x3e7d50=_0xbff5[_0x1e8d24];return _0x3e7d50;};'use strict';var multer=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var path=require(_0x5bff('0x2'));var timeout=require(_0x5bff('0x3'));var express=require(_0x5bff('0x4'));var router=express[_0x5bff('0x5')]();var auth=require(_0x5bff('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5bff('0x7'));var controller=require('./voiceQueuesLog.controller');router['get']('/',auth[_0x5bff('0x8')](),controller[_0x5bff('0x9')]);router[_0x5bff('0xa')](_0x5bff('0xb'),auth[_0x5bff('0x8')](),controller[_0x5bff('0xc')]);router[_0x5bff('0xd')]('/',auth[_0x5bff('0x8')](),controller[_0x5bff('0xe')]);router['put'](_0x5bff('0xb'),auth['isAuthenticated'](),controller[_0x5bff('0xf')]);router[_0x5bff('0x10')]('/:id',auth[_0x5bff('0x8')](),controller['destroy']);module[_0x5bff('0x11')]=router;
\ No newline at end of file
+var _0x9bb8=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','/:id','show','post','put','update','destroy','multer','util'];(function(_0x592060,_0x447690){var _0x35aada=function(_0x446f0d){while(--_0x446f0d){_0x592060['push'](_0x592060['shift']());}};_0x35aada(++_0x447690);}(_0x9bb8,0x1ae));var _0x89bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9bb8[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x89bb('0x0'));var util=require(_0x89bb('0x1'));var path=require(_0x89bb('0x2'));var timeout=require(_0x89bb('0x3'));var express=require(_0x89bb('0x4'));var router=express[_0x89bb('0x5')]();var auth=require(_0x89bb('0x6'));var interaction=require(_0x89bb('0x7'));var config=require(_0x89bb('0x8'));var controller=require(_0x89bb('0x9'));router[_0x89bb('0xa')]('/',auth[_0x89bb('0xb')](),controller['index']);router[_0x89bb('0xa')](_0x89bb('0xc'),auth[_0x89bb('0xb')](),controller[_0x89bb('0xd')]);router[_0x89bb('0xe')]('/',auth[_0x89bb('0xb')](),controller['create']);router[_0x89bb('0xf')](_0x89bb('0xc'),auth['isAuthenticated'](),controller[_0x89bb('0x10')]);router['delete'](_0x89bb('0xc'),auth['isAuthenticated'](),controller[_0x89bb('0x11')]);module['exports']=router;
\ No newline at end of file
index d5dc026..2dc9dfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['sequelize','exports','STRING','DATE','format'];(function(_0x18a07d,_0xe0d1a0){var _0x417401=function(_0x23a798){while(--_0x23a798){_0x18a07d['push'](_0x18a07d['shift']());}};_0x417401(++_0xe0d1a0);}(_0x425d,0x1e0));var _0xd425=function(_0x1c52b3,_0x2c3ecf){_0x1c52b3=_0x1c52b3-0x0;var _0x38b25e=_0x425d[_0x1c52b3];return _0x38b25e;};'use strict';var Sequelize=require(_0xd425('0x0'));var moment=require('moment');module[_0xd425('0x1')]={'time':{'type':Sequelize[_0xd425('0x2')]},'callid':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xd425('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xd425('0x3')],'allowNull':![],'defaultValue':moment()[_0xd425('0x4')]('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
+var _0x8d0e=['format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports','STRING','DATE'];(function(_0x16feb7,_0x1311a6){var _0x2f8144=function(_0x55cf6b){while(--_0x55cf6b){_0x16feb7['push'](_0x16feb7['shift']());}};_0x2f8144(++_0x1311a6);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x5f2260,_0x1eea44){_0x5f2260=_0x5f2260-0x0;var _0x3cae37=_0x8d0e[_0x5f2260];return _0x3cae37;};'use strict';var Sequelize=require(_0xe8d0('0x0'));var moment=require(_0xe8d0('0x1'));module[_0xe8d0('0x2')]={'time':{'type':Sequelize[_0xe8d0('0x3')]},'callid':{'type':Sequelize[_0xe8d0('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xe8d0('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xe8d0('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xe8d0('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xe8d0('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xe8d0('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xe8d0('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xe8d0('0x4')],'allowNull':![],'defaultValue':moment()[_0xe8d0('0x5')](_0xe8d0('0x6'))}};
\ No newline at end of file
index 014279d..b8a564e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbb9=['zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','end','status','json','count','offset','set','apply','save','then','sendStatus','stack','name','send','index','VoiceQueuesLog','rawAttributes','model','keys','query','dateEnd','dateStart','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','sort','pick','add','day','merge','filter','where','VIRTUAL','field','options','includeAll','include','findAll','rows','params','find','catch','create','body','html-pdf','eml-format'];(function(_0x2d176f,_0x52fa45){var _0x1f45ba=function(_0x51a442){while(--_0x51a442){_0x2d176f['push'](_0x2d176f['shift']());}};_0x1f45ba(++_0x52fa45);}(_0xfbb9,0xd0));var _0x9fbb=function(_0xb2711b,_0x24dff3){_0xb2711b=_0xb2711b-0x0;var _0x5c185a=_0xfbb9[_0xb2711b];return _0x5c185a;};'use strict';var pdf=require(_0x9fbb('0x0'));var emlformat=require(_0x9fbb('0x1'));var rimraf=require('rimraf');var zipdir=require(_0x9fbb('0x2'));var jsonpatch=require(_0x9fbb('0x3'));var rp=require(_0x9fbb('0x4'));var moment=require('moment');var BPromise=require(_0x9fbb('0x5'));var Mustache=require(_0x9fbb('0x6'));var util=require(_0x9fbb('0x7'));var path=require(_0x9fbb('0x8'));var sox=require(_0x9fbb('0x9'));var csv=require('to-csv');var ejs=require(_0x9fbb('0xa'));var fs=require('fs');var _=require(_0x9fbb('0xb'));var squel=require(_0x9fbb('0xc'));var crypto=require(_0x9fbb('0xd'));var jsforce=require(_0x9fbb('0xe'));var deskjs=require(_0x9fbb('0xf'));var toCsv=require(_0x9fbb('0x10'));var querystring=require('querystring');var Papa=require(_0x9fbb('0x11'));var Redis=require('ioredis');var qs=require(_0x9fbb('0x12'));var logger=require(_0x9fbb('0x13'))(_0x9fbb('0x14'));var utils=require(_0x9fbb('0x15'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x37ff91,_0x4e2cdd){_0x4e2cdd=_0x4e2cdd||0xcc;return function(_0x4cff97){if(_0x4cff97){return _0x37ff91['sendStatus'](_0x4e2cdd);}return _0x37ff91['status'](_0x4e2cdd)[_0x9fbb('0x16')]();};}function respondWithResult(_0x1a0748,_0x432fca){_0x432fca=_0x432fca||0xc8;return function(_0x502e18){if(_0x502e18){return _0x1a0748[_0x9fbb('0x17')](_0x432fca)[_0x9fbb('0x18')](_0x502e18);}};}function respondWithFilteredResult(_0x242f2e,_0xc04c37){return function(_0x23ad0a){if(_0x23ad0a){var _0x160e9f=_0x23ad0a[_0x9fbb('0x19')],_0x3de799=_0xc04c37['offset'],_0xc8320b=_0xc04c37[_0x9fbb('0x1a')]+_0xc04c37['limit'],_0x3d9d66;if(_0xc8320b>=_0x160e9f){_0xc8320b=_0x160e9f;_0x3d9d66=0xc8;}else{_0x3d9d66=0xce;}_0x242f2e[_0x9fbb('0x17')](_0x3d9d66);return _0x242f2e[_0x9fbb('0x1b')]('Content-Range',_0x3de799+'-'+_0xc8320b+'/'+_0x160e9f)[_0x9fbb('0x18')](_0x23ad0a);}return null;};}function patchUpdates(_0x36c1fa){return function(_0x5a2587){try{jsonpatch[_0x9fbb('0x1c')](_0x5a2587,_0x36c1fa,!![]);}catch(_0x39f6c0){return BPromise['reject'](_0x39f6c0);}return _0x5a2587[_0x9fbb('0x1d')]();};}function saveUpdates(_0xad0f9b,_0x533939){return function(_0x49a033){if(_0x49a033){return _0x49a033['update'](_0xad0f9b)[_0x9fbb('0x1e')](function(_0x2eadc2){return _0x2eadc2;});}return null;};}function removeEntity(_0x438656,_0x44f412){return function(_0x5617b8){if(_0x5617b8){return _0x5617b8['destroy']()[_0x9fbb('0x1e')](function(){_0x438656[_0x9fbb('0x17')](0xcc)[_0x9fbb('0x16')]();});}};}function handleEntityNotFound(_0xe7092,_0x45e2a2){return function(_0x2fb261){if(!_0x2fb261){_0xe7092[_0x9fbb('0x1f')](0x194);}return _0x2fb261;};}function handleError(_0xb28ccc,_0xcf3526){_0xcf3526=_0xcf3526||0x1f4;return function(_0x2e5163){logger['error'](_0x2e5163[_0x9fbb('0x20')]);if(_0x2e5163[_0x9fbb('0x21')]){delete _0x2e5163[_0x9fbb('0x21')];}_0xb28ccc[_0x9fbb('0x17')](_0xcf3526)[_0x9fbb('0x22')](_0x2e5163);};}exports[_0x9fbb('0x23')]=function(_0x176bc7,_0x29f035){var _0xe005f3={},_0x267923={},_0x192ccb={'count':0x0,'rows':[]};var _0x374781=db[_0x9fbb('0x24')][_0x9fbb('0x25')];_0x267923[_0x9fbb('0x26')]=_[_0x9fbb('0x27')](_0x374781);var _0x6f3354={'dateStart':_0x176bc7['query']['dateStart'],'dateEnd':_0x176bc7[_0x9fbb('0x28')][_0x9fbb('0x29')]};delete _0x176bc7[_0x9fbb('0x28')][_0x9fbb('0x2a')];delete _0x176bc7[_0x9fbb('0x28')][_0x9fbb('0x29')];_0x267923['query']=_[_0x9fbb('0x27')](_0x176bc7[_0x9fbb('0x28')]);_0x267923[_0x9fbb('0x2b')]=_['intersection'](_0x267923[_0x9fbb('0x26')],_0x267923[_0x9fbb('0x28')]);_0xe005f3[_0x9fbb('0x2c')]=_[_0x9fbb('0x2d')](_0x267923[_0x9fbb('0x26')],qs[_0x9fbb('0x2e')](_0x176bc7[_0x9fbb('0x28')][_0x9fbb('0x2e')]));_0xe005f3['attributes']=_0xe005f3[_0x9fbb('0x2c')][_0x9fbb('0x2f')]?_0xe005f3['attributes']:_0x267923[_0x9fbb('0x26')];if(!_0x176bc7['query'][_0x9fbb('0x30')](_0x9fbb('0x31'))){_0xe005f3[_0x9fbb('0x32')]=qs[_0x9fbb('0x32')](_0x176bc7[_0x9fbb('0x28')][_0x9fbb('0x32')]);_0xe005f3['offset']=qs['offset'](_0x176bc7['query'][_0x9fbb('0x1a')]);}_0xe005f3['order']=qs[_0x9fbb('0x33')](_0x176bc7[_0x9fbb('0x28')]['sort']);_0xe005f3['where']=qs['filters'](_[_0x9fbb('0x34')](_0x176bc7[_0x9fbb('0x28')],_0x267923[_0x9fbb('0x2b')]));if(_0x6f3354['dateStart']){if(_0x6f3354[_0x9fbb('0x29')]){_0x6f3354['dateEnd']=moment(_0x6f3354[_0x9fbb('0x29')])[_0x9fbb('0x35')](0x1,_0x9fbb('0x36'));}else{_0x6f3354['dateEnd']=moment(_0x6f3354[_0x9fbb('0x2a')])[_0x9fbb('0x35')](0x1,'day');}_[_0x9fbb('0x37')](_0xe005f3['where'],{'createdAt':{'$gte':_0x6f3354['dateStart'],'$lte':_0x6f3354[_0x9fbb('0x29')]}});}if(_0x176bc7['query'][_0x9fbb('0x38')]){_0xe005f3['where']=_[_0x9fbb('0x37')](_0xe005f3[_0x9fbb('0x39')],{'$or':_['map'](_0x374781,function(_0x5f1396){if(_0x5f1396['type']['key']!==_0x9fbb('0x3a')){var _0x1bf867={};_0x1bf867[_0x5f1396[_0x9fbb('0x3b')]]={'$like':'%'+_0x176bc7[_0x9fbb('0x28')][_0x9fbb('0x38')]+'%'};return _0x1bf867;}})});}_0xe005f3=_[_0x9fbb('0x37')]({},_0xe005f3,_0x176bc7[_0x9fbb('0x3c')]);var _0x519412={'where':_0xe005f3[_0x9fbb('0x39')]};return db[_0x9fbb('0x24')]['count'](_0x519412)[_0x9fbb('0x1e')](function(_0x1f35a7){_0x192ccb[_0x9fbb('0x19')]=_0x1f35a7;if(_0x176bc7[_0x9fbb('0x28')][_0x9fbb('0x3d')]){_0xe005f3[_0x9fbb('0x3e')]=[{'all':!![]}];}return db[_0x9fbb('0x24')][_0x9fbb('0x3f')](_0xe005f3);})[_0x9fbb('0x1e')](function(_0x1f2561){_0x192ccb[_0x9fbb('0x40')]=_0x1f2561;return _0x192ccb;})[_0x9fbb('0x1e')](respondWithFilteredResult(_0x29f035,_0xe005f3))['catch'](handleError(_0x29f035,null));};exports['show']=function(_0x5f5b6e,_0x49de3f){var _0x523d61={'raw':!![],'where':{'id':_0x5f5b6e[_0x9fbb('0x41')]['id']}},_0x4914bf={};_0x4914bf[_0x9fbb('0x26')]=_['keys'](db[_0x9fbb('0x24')]['rawAttributes']);_0x4914bf['query']=_[_0x9fbb('0x27')](_0x5f5b6e[_0x9fbb('0x28')]);_0x4914bf['filters']=_[_0x9fbb('0x2d')](_0x4914bf[_0x9fbb('0x26')],_0x4914bf['query']);_0x523d61[_0x9fbb('0x2c')]=_['intersection'](_0x4914bf[_0x9fbb('0x26')],qs['fields'](_0x5f5b6e[_0x9fbb('0x28')][_0x9fbb('0x2e')]));_0x523d61[_0x9fbb('0x2c')]=_0x523d61[_0x9fbb('0x2c')]['length']?_0x523d61[_0x9fbb('0x2c')]:_0x4914bf[_0x9fbb('0x26')];if(_0x5f5b6e[_0x9fbb('0x28')][_0x9fbb('0x3d')]){_0x523d61[_0x9fbb('0x3e')]=[{'all':!![]}];}_0x523d61=_['merge']({},_0x523d61,_0x5f5b6e[_0x9fbb('0x3c')]);return db[_0x9fbb('0x24')][_0x9fbb('0x42')](_0x523d61)['then'](handleEntityNotFound(_0x49de3f,null))[_0x9fbb('0x1e')](respondWithResult(_0x49de3f,null))[_0x9fbb('0x43')](handleError(_0x49de3f,null));};exports[_0x9fbb('0x44')]=function(_0xe234de,_0x2b4865){return db['VoiceQueuesLog'][_0x9fbb('0x44')](_0xe234de[_0x9fbb('0x45')],{})['then'](respondWithResult(_0x2b4865,0xc9))[_0x9fbb('0x43')](handleError(_0x2b4865,null));};exports['update']=function(_0x5490a8,_0x7d63e6){if(_0x5490a8[_0x9fbb('0x45')]['id']){delete _0x5490a8[_0x9fbb('0x45')]['id'];}return db[_0x9fbb('0x24')][_0x9fbb('0x42')]({'where':{'id':_0x5490a8['params']['id']}})[_0x9fbb('0x1e')](handleEntityNotFound(_0x7d63e6,null))['then'](saveUpdates(_0x5490a8['body'],null))[_0x9fbb('0x1e')](respondWithResult(_0x7d63e6,null))[_0x9fbb('0x43')](handleError(_0x7d63e6,null));};exports['destroy']=function(_0x5795a1,_0x3a5fd1){return db[_0x9fbb('0x24')][_0x9fbb('0x42')]({'where':{'id':_0x5795a1['params']['id']}})[_0x9fbb('0x1e')](handleEntityNotFound(_0x3a5fd1,null))[_0x9fbb('0x1e')](removeEntity(_0x3a5fd1,null))[_0x9fbb('0x43')](handleError(_0x3a5fd1,null));};
\ No newline at end of file
+var _0xc0df=['params','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','VoiceQueuesLog','model','dateStart','query','dateEnd','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','add','day','filter','merge','map','type','key','VIRTUAL','field','count','includeAll','include','findAll','rows','options','find','catch','create','body'];(function(_0xcf8e2a,_0x5c5170){var _0x4be1e1=function(_0x1d3d07){while(--_0x1d3d07){_0xcf8e2a['push'](_0xcf8e2a['shift']());}};_0x4be1e1(++_0x5c5170);}(_0xc0df,0x1e7));var _0xfc0d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc0df[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0xfc0d('0x0'));var emlformat=require(_0xfc0d('0x1'));var rimraf=require(_0xfc0d('0x2'));var zipdir=require(_0xfc0d('0x3'));var jsonpatch=require(_0xfc0d('0x4'));var rp=require(_0xfc0d('0x5'));var moment=require(_0xfc0d('0x6'));var BPromise=require(_0xfc0d('0x7'));var Mustache=require(_0xfc0d('0x8'));var util=require(_0xfc0d('0x9'));var path=require(_0xfc0d('0xa'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfc0d('0xb'));var fs=require('fs');var _=require(_0xfc0d('0xc'));var squel=require(_0xfc0d('0xd'));var crypto=require(_0xfc0d('0xe'));var jsforce=require(_0xfc0d('0xf'));var deskjs=require(_0xfc0d('0x10'));var toCsv=require(_0xfc0d('0x11'));var querystring=require(_0xfc0d('0x12'));var Papa=require(_0xfc0d('0x13'));var Redis=require(_0xfc0d('0x14'));var qs=require(_0xfc0d('0x15'));var logger=require(_0xfc0d('0x16'))(_0xfc0d('0x17'));var utils=require(_0xfc0d('0x18'));var config=require(_0xfc0d('0x19'));var db=require(_0xfc0d('0x1a'))['db'];function respondWithStatusCode(_0x14e7b0,_0x243991){_0x243991=_0x243991||0xcc;return function(_0x5406f5){if(_0x5406f5){return _0x14e7b0[_0xfc0d('0x1b')](_0x243991);}return _0x14e7b0['status'](_0x243991)[_0xfc0d('0x1c')]();};}function respondWithResult(_0x688f04,_0x13770d){_0x13770d=_0x13770d||0xc8;return function(_0x5e5adb){if(_0x5e5adb){return _0x688f04[_0xfc0d('0x1d')](_0x13770d)['json'](_0x5e5adb);}};}function respondWithFilteredResult(_0x483714,_0x159e83){return function(_0x30c9a9){if(_0x30c9a9){var _0x30fe2a=_0x30c9a9['count'],_0x4aaf53=_0x159e83[_0xfc0d('0x1e')],_0x4b1636=_0x159e83[_0xfc0d('0x1e')]+_0x159e83['limit'],_0x1fe84b;if(_0x4b1636>=_0x30fe2a){_0x4b1636=_0x30fe2a;_0x1fe84b=0xc8;}else{_0x1fe84b=0xce;}_0x483714[_0xfc0d('0x1d')](_0x1fe84b);return _0x483714[_0xfc0d('0x1f')](_0xfc0d('0x20'),_0x4aaf53+'-'+_0x4b1636+'/'+_0x30fe2a)[_0xfc0d('0x21')](_0x30c9a9);}return null;};}function patchUpdates(_0x5613a5){return function(_0x32a863){try{jsonpatch[_0xfc0d('0x22')](_0x32a863,_0x5613a5,!![]);}catch(_0xbf7066){return BPromise[_0xfc0d('0x23')](_0xbf7066);}return _0x32a863[_0xfc0d('0x24')]();};}function saveUpdates(_0x4bd98a,_0x42a81d){return function(_0x1f619f){if(_0x1f619f){return _0x1f619f[_0xfc0d('0x25')](_0x4bd98a)[_0xfc0d('0x26')](function(_0x394fd7){return _0x394fd7;});}return null;};}function removeEntity(_0xf20115,_0x4b90ec){return function(_0x3df039){if(_0x3df039){return _0x3df039[_0xfc0d('0x27')]()[_0xfc0d('0x26')](function(){_0xf20115[_0xfc0d('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f20a1,_0x1cfd56){return function(_0x2151ef){if(!_0x2151ef){_0x4f20a1[_0xfc0d('0x1b')](0x194);}return _0x2151ef;};}function handleError(_0x22fb7c,_0x38a74c){_0x38a74c=_0x38a74c||0x1f4;return function(_0x2df8e8){logger[_0xfc0d('0x28')](_0x2df8e8[_0xfc0d('0x29')]);if(_0x2df8e8[_0xfc0d('0x2a')]){delete _0x2df8e8['name'];}_0x22fb7c['status'](_0x38a74c)['send'](_0x2df8e8);};}exports[_0xfc0d('0x2b')]=function(_0x34111e,_0x53e642){var _0x58c3a2={},_0x2aa5a7={},_0x471dcc={'count':0x0,'rows':[]};var _0x476288=db[_0xfc0d('0x2c')]['rawAttributes'];_0x2aa5a7[_0xfc0d('0x2d')]=_['keys'](_0x476288);var _0x32be74={'dateStart':_0x34111e['query'][_0xfc0d('0x2e')],'dateEnd':_0x34111e[_0xfc0d('0x2f')][_0xfc0d('0x30')]};delete _0x34111e['query'][_0xfc0d('0x2e')];delete _0x34111e[_0xfc0d('0x2f')][_0xfc0d('0x30')];_0x2aa5a7['query']=_[_0xfc0d('0x31')](_0x34111e[_0xfc0d('0x2f')]);_0x2aa5a7[_0xfc0d('0x32')]=_[_0xfc0d('0x33')](_0x2aa5a7['model'],_0x2aa5a7[_0xfc0d('0x2f')]);_0x58c3a2['attributes']=_[_0xfc0d('0x33')](_0x2aa5a7[_0xfc0d('0x2d')],qs[_0xfc0d('0x34')](_0x34111e[_0xfc0d('0x2f')][_0xfc0d('0x34')]));_0x58c3a2[_0xfc0d('0x35')]=_0x58c3a2['attributes'][_0xfc0d('0x36')]?_0x58c3a2['attributes']:_0x2aa5a7[_0xfc0d('0x2d')];if(!_0x34111e[_0xfc0d('0x2f')][_0xfc0d('0x37')](_0xfc0d('0x38'))){_0x58c3a2[_0xfc0d('0x39')]=qs['limit'](_0x34111e[_0xfc0d('0x2f')][_0xfc0d('0x39')]);_0x58c3a2[_0xfc0d('0x1e')]=qs[_0xfc0d('0x1e')](_0x34111e[_0xfc0d('0x2f')][_0xfc0d('0x1e')]);}_0x58c3a2['order']=qs[_0xfc0d('0x3a')](_0x34111e[_0xfc0d('0x2f')]['sort']);_0x58c3a2[_0xfc0d('0x3b')]=qs[_0xfc0d('0x32')](_[_0xfc0d('0x3c')](_0x34111e[_0xfc0d('0x2f')],_0x2aa5a7[_0xfc0d('0x32')]));if(_0x32be74[_0xfc0d('0x2e')]){if(_0x32be74['dateEnd']){_0x32be74[_0xfc0d('0x30')]=moment(_0x32be74['dateEnd'])[_0xfc0d('0x3d')](0x1,_0xfc0d('0x3e'));}else{_0x32be74[_0xfc0d('0x30')]=moment(_0x32be74['dateStart'])[_0xfc0d('0x3d')](0x1,_0xfc0d('0x3e'));}_['merge'](_0x58c3a2[_0xfc0d('0x3b')],{'createdAt':{'$gte':_0x32be74[_0xfc0d('0x2e')],'$lte':_0x32be74['dateEnd']}});}if(_0x34111e[_0xfc0d('0x2f')][_0xfc0d('0x3f')]){_0x58c3a2['where']=_[_0xfc0d('0x40')](_0x58c3a2['where'],{'$or':_[_0xfc0d('0x41')](_0x476288,function(_0x382aca){if(_0x382aca[_0xfc0d('0x42')][_0xfc0d('0x43')]!==_0xfc0d('0x44')){var _0x42b991={};_0x42b991[_0x382aca[_0xfc0d('0x45')]]={'$like':'%'+_0x34111e['query'][_0xfc0d('0x3f')]+'%'};return _0x42b991;}})});}_0x58c3a2=_[_0xfc0d('0x40')]({},_0x58c3a2,_0x34111e['options']);var _0x221454={'where':_0x58c3a2[_0xfc0d('0x3b')]};return db[_0xfc0d('0x2c')][_0xfc0d('0x46')](_0x221454)[_0xfc0d('0x26')](function(_0x1e6c59){_0x471dcc['count']=_0x1e6c59;if(_0x34111e[_0xfc0d('0x2f')][_0xfc0d('0x47')]){_0x58c3a2[_0xfc0d('0x48')]=[{'all':!![]}];}return db[_0xfc0d('0x2c')][_0xfc0d('0x49')](_0x58c3a2);})[_0xfc0d('0x26')](function(_0x329a21){_0x471dcc[_0xfc0d('0x4a')]=_0x329a21;return _0x471dcc;})[_0xfc0d('0x26')](respondWithFilteredResult(_0x53e642,_0x58c3a2))['catch'](handleError(_0x53e642,null));};exports['show']=function(_0x59922f,_0x391516){var _0x101914={'raw':!![],'where':{'id':_0x59922f['params']['id']}},_0x3eb48b={};_0x3eb48b[_0xfc0d('0x2d')]=_['keys'](db[_0xfc0d('0x2c')]['rawAttributes']);_0x3eb48b[_0xfc0d('0x2f')]=_[_0xfc0d('0x31')](_0x59922f[_0xfc0d('0x2f')]);_0x3eb48b['filters']=_[_0xfc0d('0x33')](_0x3eb48b['model'],_0x3eb48b[_0xfc0d('0x2f')]);_0x101914['attributes']=_[_0xfc0d('0x33')](_0x3eb48b[_0xfc0d('0x2d')],qs[_0xfc0d('0x34')](_0x59922f['query'][_0xfc0d('0x34')]));_0x101914[_0xfc0d('0x35')]=_0x101914[_0xfc0d('0x35')][_0xfc0d('0x36')]?_0x101914[_0xfc0d('0x35')]:_0x3eb48b[_0xfc0d('0x2d')];if(_0x59922f[_0xfc0d('0x2f')]['includeAll']){_0x101914[_0xfc0d('0x48')]=[{'all':!![]}];}_0x101914=_['merge']({},_0x101914,_0x59922f[_0xfc0d('0x4b')]);return db[_0xfc0d('0x2c')][_0xfc0d('0x4c')](_0x101914)['then'](handleEntityNotFound(_0x391516,null))['then'](respondWithResult(_0x391516,null))[_0xfc0d('0x4d')](handleError(_0x391516,null));};exports[_0xfc0d('0x4e')]=function(_0x11869c,_0x21f440){return db[_0xfc0d('0x2c')][_0xfc0d('0x4e')](_0x11869c[_0xfc0d('0x4f')],{})[_0xfc0d('0x26')](respondWithResult(_0x21f440,0xc9))[_0xfc0d('0x4d')](handleError(_0x21f440,null));};exports[_0xfc0d('0x25')]=function(_0x4ba86c,_0x8ee4d3){if(_0x4ba86c[_0xfc0d('0x4f')]['id']){delete _0x4ba86c[_0xfc0d('0x4f')]['id'];}return db[_0xfc0d('0x2c')][_0xfc0d('0x4c')]({'where':{'id':_0x4ba86c[_0xfc0d('0x50')]['id']}})['then'](handleEntityNotFound(_0x8ee4d3,null))['then'](saveUpdates(_0x4ba86c[_0xfc0d('0x4f')],null))['then'](respondWithResult(_0x8ee4d3,null))[_0xfc0d('0x4d')](handleError(_0x8ee4d3,null));};exports[_0xfc0d('0x27')]=function(_0x5b04d4,_0x1ae3ee){return db[_0xfc0d('0x2c')][_0xfc0d('0x4c')]({'where':{'id':_0x5b04d4[_0xfc0d('0x50')]['id']}})[_0xfc0d('0x26')](handleEntityNotFound(_0x1ae3ee,null))[_0xfc0d('0x26')](removeEntity(_0x1ae3ee,null))[_0xfc0d('0x4d')](handleError(_0x1ae3ee,null));};
\ No newline at end of file
index a8562d1..5c7c440 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d9f=['VoiceQueuesLog','event','lodash','../../config/logger','api','bluebird','request-promise','./voiceQueuesLog.attributes','exports','define'];(function(_0x1ab180,_0x382b2c){var _0xfb2c2d=function(_0x1c5fd3){while(--_0x1c5fd3){_0x1ab180['push'](_0x1ab180['shift']());}};_0xfb2c2d(++_0x382b2c);}(_0x1d9f,0x174));var _0xf1d9=function(_0x2b65a7,_0x1ca639){_0x2b65a7=_0x2b65a7-0x0;var _0x22d19d=_0x1d9f[_0x2b65a7];return _0x22d19d;};'use strict';var _=require(_0xf1d9('0x0'));var util=require('util');var logger=require(_0xf1d9('0x1'))(_0xf1d9('0x2'));var moment=require('moment');var BPromise=require(_0xf1d9('0x3'));var rp=require(_0xf1d9('0x4'));var attributes=require(_0xf1d9('0x5'));module[_0xf1d9('0x6')]=function(_0x4121b4,_0x2eb7a4){return _0x4121b4[_0xf1d9('0x7')](_0xf1d9('0x8'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0xf1d9('0x9'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0x444a=['lodash','../../config/logger','./voiceQueuesLog.attributes','define','voice_queues_log','dtm'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x444a,0xa2));var _0xa444=function(_0x4283c0,_0xc694d5){_0x4283c0=_0x4283c0-0x0;var _0x6b47ab=_0x444a[_0x4283c0];return _0x6b47ab;};'use strict';var _=require(_0xa444('0x0'));var util=require('util');var logger=require(_0xa444('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0xa444('0x2'));module['exports']=function(_0x3c0c53,_0x4c348c){return _0x3c0c53[_0xa444('0x3')]('VoiceQueuesLog',attributes,{'tableName':_0xa444('0x4'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':['event',_0xa444('0x5')]}],'timestamps':![]});};
\ No newline at end of file
index e1c3b64..168da36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9443=['then','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x946e1b,_0x4f9f57){var _0x4db99b=function(_0x16f0e9){while(--_0x16f0e9){_0x946e1b['push'](_0x946e1b['shift']());}};_0x4db99b(++_0x4f9f57);}(_0x9443,0xc3));var _0x3944=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x9443[_0x209941];return _0x1e8729;};'use strict';var _=require(_0x3944('0x0'));var util=require(_0x3944('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3944('0x2'));var fs=require('fs');var Redis=require(_0x3944('0x3'));var db=require(_0x3944('0x4'))['db'];var utils=require(_0x3944('0x5'));var logger=require(_0x3944('0x6'))(_0x3944('0x7'));var config=require(_0x3944('0x8'));var jayson=require(_0x3944('0x9'));var client=jayson['client'][_0x3944('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42a5b2,_0x4a8d88,_0x30e673){return new BPromise(function(_0x4bb319,_0x36efda){return client[_0x3944('0xb')](_0x42a5b2,_0x30e673)[_0x3944('0xc')](function(_0x3e4e9e){logger['info'](_0x3944('0xd'),_0x4a8d88,_0x3944('0xe'));logger[_0x3944('0xf')](_0x3944('0x10'),_0x4a8d88,_0x3944('0xe'),JSON[_0x3944('0x11')](_0x3e4e9e));if(_0x3e4e9e[_0x3944('0x12')]){if(_0x3e4e9e[_0x3944('0x12')][_0x3944('0x13')]===0x1f4){logger['error'](_0x3944('0xd'),_0x4a8d88,_0x3e4e9e[_0x3944('0x12')][_0x3944('0x14')]);return _0x36efda(_0x3e4e9e[_0x3944('0x12')][_0x3944('0x14')]);}logger[_0x3944('0x12')](_0x3944('0xd'),_0x4a8d88,_0x3e4e9e[_0x3944('0x12')]['message']);return _0x4bb319(_0x3e4e9e[_0x3944('0x12')][_0x3944('0x14')]);}else{logger[_0x3944('0x15')](_0x3944('0xd'),_0x4a8d88,'request\x20sent');_0x4bb319(_0x3e4e9e['result'][_0x3944('0x14')]);}})[_0x3944('0x16')](function(_0x2fbf05){logger[_0x3944('0x12')](_0x3944('0xd'),_0x4a8d88,_0x2fbf05);_0x36efda(_0x2fbf05);});});}
\ No newline at end of file
+var _0xc9cb=['randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x557f28,_0xc7a5a6){var _0x2ffa93=function(_0x57abe2){while(--_0x57abe2){_0x557f28['push'](_0x557f28['shift']());}};_0x2ffa93(++_0xc7a5a6);}(_0xc9cb,0x14d));var _0xbc9c=function(_0x3cd394,_0x206454){_0x3cd394=_0x3cd394-0x0;var _0x3a5967=_0xc9cb[_0x3cd394];return _0x3a5967;};'use strict';var _=require(_0xbc9c('0x0'));var util=require('util');var moment=require(_0xbc9c('0x1'));var BPromise=require(_0xbc9c('0x2'));var rs=require(_0xbc9c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbc9c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbc9c('0x5'))(_0xbc9c('0x6'));var config=require(_0xbc9c('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xbc9c('0x8')][_0xbc9c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x221b33,_0x48db53,_0x3cc98a){return new BPromise(function(_0x47e724,_0x34d10a){return client[_0xbc9c('0xa')](_0x221b33,_0x3cc98a)[_0xbc9c('0xb')](function(_0x23ddf5){logger[_0xbc9c('0xc')](_0xbc9c('0xd'),_0x48db53,_0xbc9c('0xe'));logger['debug'](_0xbc9c('0xf'),_0x48db53,_0xbc9c('0xe'),JSON['stringify'](_0x23ddf5));if(_0x23ddf5[_0xbc9c('0x10')]){if(_0x23ddf5[_0xbc9c('0x10')][_0xbc9c('0x11')]===0x1f4){logger[_0xbc9c('0x10')](_0xbc9c('0xd'),_0x48db53,_0x23ddf5[_0xbc9c('0x10')][_0xbc9c('0x12')]);return _0x34d10a(_0x23ddf5[_0xbc9c('0x10')][_0xbc9c('0x12')]);}logger[_0xbc9c('0x10')](_0xbc9c('0xd'),_0x48db53,_0x23ddf5[_0xbc9c('0x10')][_0xbc9c('0x12')]);return _0x47e724(_0x23ddf5['error'][_0xbc9c('0x12')]);}else{logger['info'](_0xbc9c('0xd'),_0x48db53,_0xbc9c('0xe'));_0x47e724(_0x23ddf5[_0xbc9c('0x13')]['message']);}})[_0xbc9c('0x14')](function(_0x245f46){logger[_0xbc9c('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x48db53,_0x245f46);_0x34d10a(_0x245f46);});});}
\ No newline at end of file
index 03af5d9..ee74355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['/:id/downloads','put','update','delete','destroy','exports','multer','util','path','Router','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','/describe','/:id','/:id/download','download'];(function(_0x27ba06,_0x525aa9){var _0x279f00=function(_0x1c9522){while(--_0x1c9522){_0x27ba06['push'](_0x27ba06['shift']());}};_0x279f00(++_0x525aa9);}(_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 auth=require('../../components/auth/service');var interaction=require(_0x0a9e('0x4'));var config=require(_0x0a9e('0x5'));var controller=require(_0x0a9e('0x6'));router[_0x0a9e('0x7')]('/',auth[_0x0a9e('0x8')](),controller['index']);router[_0x0a9e('0x7')](_0x0a9e('0x9'),auth[_0x0a9e('0x8')](),controller['describe']);router['get'](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x7')](_0x0a9e('0xb'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xc')]);router[_0x0a9e('0x7')](_0x0a9e('0xd'),controller['downloads']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xe')](_0x0a9e('0xa'),auth[_0x0a9e('0x8')](),controller[_0x0a9e('0xf')]);router[_0x0a9e('0x10')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _0xcea2=['./voiceRecording.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/download','download','/:id/downloads','downloads','post','put','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../config/environment'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xcea2,0x15a));var _0x2cea=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0xcea2[_0x243b2f];return _0xcb3c2d;};'use strict';var multer=require(_0x2cea('0x0'));var util=require('util');var path=require(_0x2cea('0x1'));var timeout=require('connect-timeout');var express=require(_0x2cea('0x2'));var router=express[_0x2cea('0x3')]();var auth=require(_0x2cea('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x2cea('0x5'));var controller=require(_0x2cea('0x6'));router[_0x2cea('0x7')]('/',auth['isAuthenticated'](),controller[_0x2cea('0x8')]);router['get'](_0x2cea('0x9'),auth[_0x2cea('0xa')](),controller[_0x2cea('0xb')]);router[_0x2cea('0x7')](_0x2cea('0xc'),auth[_0x2cea('0xa')](),controller['show']);router[_0x2cea('0x7')](_0x2cea('0xd'),auth[_0x2cea('0xa')](),controller[_0x2cea('0xe')]);router[_0x2cea('0x7')](_0x2cea('0xf'),controller[_0x2cea('0x10')]);router[_0x2cea('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2cea('0x12')](_0x2cea('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x2cea('0x13')]('/:id',auth[_0x2cea('0xa')](),controller[_0x2cea('0x14')]);module[_0x2cea('0x15')]=router;
\ No newline at end of file
index ba0565f..2d6d994 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc6=['MM-DD-YYYY\x20HH:mm','toString','updatedAt','sequelize','moment','path','VIRTUAL','getDataValue','value','extname','STRING','setDataValue','membername','INTEGER','DATE','createdAt','format'];(function(_0x1fe7f6,_0x45cb28){var _0x4b2388=function(_0x234e6f){while(--_0x234e6f){_0x1fe7f6['push'](_0x1fe7f6['shift']());}};_0x4b2388(++_0x45cb28);}(_0x6dc6,0x102));var _0x66dc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6dc6[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x66dc('0x0'));var moment=require(_0x66dc('0x1'));var path=require(_0x66dc('0x2'));module['exports']={'format':{'type':Sequelize[_0x66dc('0x3')],'get':function(){return this[_0x66dc('0x4')](_0x66dc('0x5'))?path[_0x66dc('0x6')](this[_0x66dc('0x4')](_0x66dc('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x66dc('0x7')]},'channel':{'type':Sequelize['STRING'],'set':function(_0x5681e3){if(_0x5681e3){this[_0x66dc('0x8')]('channel',_0x5681e3);this[_0x66dc('0x8')](_0x66dc('0x9'),_0x5681e3['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x66dc('0x7')]},'calleridnum':{'type':Sequelize[_0x66dc('0x7')]},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x66dc('0x7')]},'connectedlinename':{'type':Sequelize[_0x66dc('0x7')]},'accountcode':{'type':Sequelize[_0x66dc('0x7')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x66dc('0x7')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize[_0x66dc('0xa')],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize[_0x66dc('0x7')]},'userDisposition':{'type':Sequelize['STRING']},'createdAt':{'type':Sequelize[_0x66dc('0xb')],'get':function(){return moment(this[_0x66dc('0x4')](_0x66dc('0xc')))[_0x66dc('0xd')](_0x66dc('0xe'))[_0x66dc('0xf')]();}},'updatedAt':{'type':Sequelize[_0x66dc('0xb')],'get':function(){return moment(this[_0x66dc('0x4')](_0x66dc('0x10')))[_0x66dc('0xd')](_0x66dc('0xe'))[_0x66dc('0xf')]();}}};
\ No newline at end of file
+var _0xc87d=['STRING','setDataValue','channel','split','INTEGER','DATE','format','toString','updatedAt','MM-DD-YYYY\x20HH:mm','sequelize','path','exports','VIRTUAL','value','getDataValue'];(function(_0x2c8850,_0x3816e8){var _0x49e77a=function(_0x3ace7e){while(--_0x3ace7e){_0x2c8850['push'](_0x2c8850['shift']());}};_0x49e77a(++_0x3816e8);}(_0xc87d,0x17a));var _0xdc87=function(_0x594aaf,_0x4a9273){_0x594aaf=_0x594aaf-0x0;var _0x2692aa=_0xc87d[_0x594aaf];return _0x2692aa;};'use strict';var Sequelize=require(_0xdc87('0x0'));var moment=require('moment');var path=require(_0xdc87('0x1'));module[_0xdc87('0x2')]={'format':{'type':Sequelize[_0xdc87('0x3')],'get':function(){return this['getDataValue'](_0xdc87('0x4'))?path['extname'](this[_0xdc87('0x5')]('value')):undefined;}},'uniqueid':{'type':Sequelize[_0xdc87('0x6')]},'channel':{'type':Sequelize['STRING'],'set':function(_0x4ca0ce){if(_0x4ca0ce){this[_0xdc87('0x7')](_0xdc87('0x8'),_0x4ca0ce);this[_0xdc87('0x7')]('membername',_0x4ca0ce[_0xdc87('0x9')](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0xdc87('0x6')]},'calleridnum':{'type':Sequelize[_0xdc87('0x6')]},'calleridname':{'type':Sequelize[_0xdc87('0x6')]},'connectedlinenum':{'type':Sequelize[_0xdc87('0x6')]},'connectedlinename':{'type':Sequelize[_0xdc87('0x6')]},'accountcode':{'type':Sequelize[_0xdc87('0x6')]},'context':{'type':Sequelize[_0xdc87('0x6')]},'exten':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize[_0xdc87('0xa')],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize[_0xdc87('0x6')]},'userDisposition':{'type':Sequelize[_0xdc87('0x6')]},'createdAt':{'type':Sequelize[_0xdc87('0xb')],'get':function(){return moment(this[_0xdc87('0x5')]('createdAt'))[_0xdc87('0xc')]('MM-DD-YYYY\x20HH:mm')[_0xdc87('0xd')]();}},'updatedAt':{'type':Sequelize[_0xdc87('0xb')],'get':function(){return moment(this[_0xdc87('0x5')](_0xdc87('0xe')))[_0xdc87('0xc')](_0xdc87('0xf'))[_0xdc87('0xd')]();}}};
\ No newline at end of file
index a0d328d..fd6598a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ea0=['day','merge','filter','map','type','key','VIRTUAL','field','options','includeAll','include','findAll','catch','params','find','create','body','destroy','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','secrets','recording','Sequelize','VoiceRecording\x20not\x20found','filename','extname','unlink','downloads','sequelize','MD5','col','token','$and','push','decryptFile','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','save','then','error','stack','name','send','VoiceRecording','rawAttributes','model','keys','format','query','dateEnd','dateStart','filters','intersection','fields','attributes','length','sort','where','pick','add'];(function(_0x5b3a06,_0x4d4637){var _0x1160eb=function(_0x32328b){while(--_0x32328b){_0x5b3a06['push'](_0x5b3a06['shift']());}};_0x1160eb(++_0x4d4637);}(_0x2ea0,0xe4));var _0x02ea=function(_0x4ed546,_0x244bd0){_0x4ed546=_0x4ed546-0x0;var _0x10bfcc=_0x2ea0[_0x4ed546];return _0x10bfcc;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x02ea('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x02ea('0x1'));var jsonpatch=require(_0x02ea('0x2'));var rp=require(_0x02ea('0x3'));var moment=require(_0x02ea('0x4'));var BPromise=require(_0x02ea('0x5'));var Mustache=require(_0x02ea('0x6'));var util=require(_0x02ea('0x7'));var path=require(_0x02ea('0x8'));var sox=require(_0x02ea('0x9'));var csv=require(_0x02ea('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x02ea('0xb'));var squel=require(_0x02ea('0xc'));var crypto=require(_0x02ea('0xd'));var jsforce=require(_0x02ea('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x02ea('0xa'));var querystring=require(_0x02ea('0xf'));var Papa=require(_0x02ea('0x10'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x02ea('0x11'))(_0x02ea('0x12'));var utils=require('../../config/utils');var config=require(_0x02ea('0x13'));var db=require(_0x02ea('0x14'))['db'];function respondWithStatusCode(_0x58a023,_0x2224c9){_0x2224c9=_0x2224c9||0xcc;return function(_0x202b9d){if(_0x202b9d){return _0x58a023[_0x02ea('0x15')](_0x2224c9);}return _0x58a023[_0x02ea('0x16')](_0x2224c9)[_0x02ea('0x17')]();};}function respondWithResult(_0x5ef4eb,_0x465531){_0x465531=_0x465531||0xc8;return function(_0x37e496){if(_0x37e496){return _0x5ef4eb[_0x02ea('0x16')](_0x465531)[_0x02ea('0x18')](_0x37e496);}};}function respondWithFilteredResult(_0x136103,_0x286017){return function(_0x4acf25){if(_0x4acf25){var _0x113e68=_0x4acf25[_0x02ea('0x19')],_0xf84337=_0x286017[_0x02ea('0x1a')],_0x5015c1=_0x286017[_0x02ea('0x1a')]+_0x286017[_0x02ea('0x1b')],_0x5ef4c2;if(_0x5015c1>=_0x113e68){_0x5015c1=_0x113e68;_0x5ef4c2=0xc8;}else{_0x5ef4c2=0xce;}_0x136103[_0x02ea('0x16')](_0x5ef4c2);return _0x136103[_0x02ea('0x1c')](_0x02ea('0x1d'),_0xf84337+'-'+_0x5015c1+'/'+_0x113e68)['json'](_0x4acf25);}return null;};}function patchUpdates(_0x16bbaf){return function(_0x527d0b){try{jsonpatch[_0x02ea('0x1e')](_0x527d0b,_0x16bbaf,!![]);}catch(_0x2eeeb2){return BPromise['reject'](_0x2eeeb2);}return _0x527d0b[_0x02ea('0x1f')]();};}function saveUpdates(_0x538d3c,_0x176a1f){return function(_0xef7e14){if(_0xef7e14){return _0xef7e14['update'](_0x538d3c)[_0x02ea('0x20')](function(_0x14a190){return _0x14a190;});}return null;};}function removeEntity(_0x4b131a,_0x25799d){return function(_0x4e195f){if(_0x4e195f){return _0x4e195f['destroy']()[_0x02ea('0x20')](function(){_0x4b131a[_0x02ea('0x16')](0xcc)[_0x02ea('0x17')]();});}};}function handleEntityNotFound(_0x1882b1,_0x4a3687){return function(_0x1a77ef){if(!_0x1a77ef){_0x1882b1['sendStatus'](0x194);}return _0x1a77ef;};}function handleError(_0x5f0d29,_0x269045){_0x269045=_0x269045||0x1f4;return function(_0x2d3884){logger[_0x02ea('0x21')](_0x2d3884[_0x02ea('0x22')]);if(_0x2d3884[_0x02ea('0x23')]){delete _0x2d3884['name'];}_0x5f0d29[_0x02ea('0x16')](_0x269045)[_0x02ea('0x24')](_0x2d3884);};}exports['index']=function(_0x5c2056,_0x16bb33){var _0x357bdd={},_0x5b05fb={},_0x132478={'count':0x0,'rows':[]};var _0x4dfeed=db[_0x02ea('0x25')][_0x02ea('0x26')];_0x5b05fb[_0x02ea('0x27')]=_['differenceBy'](_[_0x02ea('0x28')](_0x4dfeed),[_0x02ea('0x29')]);var _0x37bd60={'dateStart':_0x5c2056[_0x02ea('0x2a')]['dateStart'],'dateEnd':_0x5c2056['query'][_0x02ea('0x2b')]};delete _0x5c2056[_0x02ea('0x2a')][_0x02ea('0x2c')];delete _0x5c2056[_0x02ea('0x2a')][_0x02ea('0x2b')];_0x5b05fb['query']=_[_0x02ea('0x28')](_0x5c2056[_0x02ea('0x2a')]);_0x5b05fb[_0x02ea('0x2d')]=_[_0x02ea('0x2e')](_0x5b05fb['model'],_0x5b05fb[_0x02ea('0x2a')]);_0x357bdd['attributes']=_[_0x02ea('0x2e')](_0x5b05fb[_0x02ea('0x27')],qs[_0x02ea('0x2f')](_0x5c2056[_0x02ea('0x2a')][_0x02ea('0x2f')]));_0x357bdd['attributes']=_0x357bdd[_0x02ea('0x30')][_0x02ea('0x31')]?_0x357bdd[_0x02ea('0x30')]:_0x5b05fb[_0x02ea('0x27')];if(!_0x5c2056['query']['hasOwnProperty']('nolimit')){_0x357bdd[_0x02ea('0x1b')]=qs[_0x02ea('0x1b')](_0x5c2056[_0x02ea('0x2a')][_0x02ea('0x1b')]);_0x357bdd['offset']=qs[_0x02ea('0x1a')](_0x5c2056[_0x02ea('0x2a')][_0x02ea('0x1a')]);}_0x357bdd['order']=qs[_0x02ea('0x32')](_0x5c2056[_0x02ea('0x2a')][_0x02ea('0x32')]);_0x357bdd[_0x02ea('0x33')]=qs[_0x02ea('0x2d')](_[_0x02ea('0x34')](_0x5c2056[_0x02ea('0x2a')],_0x5b05fb[_0x02ea('0x2d')]));if(_0x37bd60[_0x02ea('0x2c')]){if(_0x37bd60[_0x02ea('0x2b')]){_0x37bd60[_0x02ea('0x2b')]=moment(_0x37bd60[_0x02ea('0x2b')])[_0x02ea('0x35')](0x1,'day');}else{_0x37bd60[_0x02ea('0x2b')]=moment(_0x37bd60[_0x02ea('0x2c')])[_0x02ea('0x35')](0x1,_0x02ea('0x36'));}_[_0x02ea('0x37')](_0x357bdd[_0x02ea('0x33')],{'createdAt':{'$gte':_0x37bd60[_0x02ea('0x2c')],'$lte':_0x37bd60[_0x02ea('0x2b')]}});}if(_0x5c2056[_0x02ea('0x2a')][_0x02ea('0x38')]){_0x357bdd[_0x02ea('0x33')]=_[_0x02ea('0x37')](_0x357bdd[_0x02ea('0x33')],{'$or':_[_0x02ea('0x39')](_0x4dfeed,function(_0x12ec34){if(_0x12ec34[_0x02ea('0x3a')][_0x02ea('0x3b')]!==_0x02ea('0x3c')){var _0x5ace6={};_0x5ace6[_0x12ec34[_0x02ea('0x3d')]]={'$like':'%'+_0x5c2056['query'][_0x02ea('0x38')]+'%'};return _0x5ace6;}})});}_0x357bdd=_[_0x02ea('0x37')]({},_0x357bdd,_0x5c2056[_0x02ea('0x3e')]);var _0x1f54e0={'where':_0x357bdd[_0x02ea('0x33')]};return db[_0x02ea('0x25')]['count'](_0x1f54e0)[_0x02ea('0x20')](function(_0x4a9418){_0x132478[_0x02ea('0x19')]=_0x4a9418;if(_0x5c2056['query'][_0x02ea('0x3f')]){_0x357bdd[_0x02ea('0x40')]=[{'all':!![]}];}return db[_0x02ea('0x25')][_0x02ea('0x41')](_0x357bdd);})[_0x02ea('0x20')](function(_0x2d4acb){_0x132478['rows']=_0x2d4acb;return _0x132478;})[_0x02ea('0x20')](respondWithFilteredResult(_0x16bb33,_0x357bdd))[_0x02ea('0x42')](handleError(_0x16bb33,null));};exports['show']=function(_0x4e8b6f,_0x36b110){var _0x2e5db5={'raw':![],'where':{'id':_0x4e8b6f[_0x02ea('0x43')]['id']}},_0x301bfc={};_0x301bfc[_0x02ea('0x27')]=_['keys'](db[_0x02ea('0x25')][_0x02ea('0x26')]);_0x301bfc[_0x02ea('0x2a')]=_[_0x02ea('0x28')](_0x4e8b6f[_0x02ea('0x2a')]);_0x301bfc[_0x02ea('0x2d')]=_[_0x02ea('0x2e')](_0x301bfc['model'],_0x301bfc['query']);_0x2e5db5[_0x02ea('0x30')]=_[_0x02ea('0x2e')](_0x301bfc[_0x02ea('0x27')],qs[_0x02ea('0x2f')](_0x4e8b6f[_0x02ea('0x2a')][_0x02ea('0x2f')]));_0x2e5db5[_0x02ea('0x30')]=_0x2e5db5['attributes'][_0x02ea('0x31')]?_0x2e5db5[_0x02ea('0x30')]:_0x301bfc['model'];if(_0x4e8b6f[_0x02ea('0x2a')][_0x02ea('0x3f')]){_0x2e5db5[_0x02ea('0x40')]=[{'all':!![]}];}_0x2e5db5=_[_0x02ea('0x37')]({},_0x2e5db5,_0x4e8b6f[_0x02ea('0x3e')]);return db[_0x02ea('0x25')][_0x02ea('0x44')](_0x2e5db5)[_0x02ea('0x20')](handleEntityNotFound(_0x36b110,null))[_0x02ea('0x20')](respondWithResult(_0x36b110,null))[_0x02ea('0x42')](handleError(_0x36b110,null));};exports[_0x02ea('0x45')]=function(_0x355787,_0x2af72b){return db['VoiceRecording'][_0x02ea('0x45')](_0x355787[_0x02ea('0x46')],{})[_0x02ea('0x20')](respondWithResult(_0x2af72b,0xc9))[_0x02ea('0x42')](handleError(_0x2af72b,null));};exports['update']=function(_0x2ea10f,_0xa8da5f){if(_0x2ea10f['body']['id']){delete _0x2ea10f[_0x02ea('0x46')]['id'];}return db[_0x02ea('0x25')][_0x02ea('0x44')]({'where':{'id':_0x2ea10f['params']['id']}})[_0x02ea('0x20')](handleEntityNotFound(_0xa8da5f,null))[_0x02ea('0x20')](saveUpdates(_0x2ea10f['body'],null))[_0x02ea('0x20')](respondWithResult(_0xa8da5f,null))[_0x02ea('0x42')](handleError(_0xa8da5f,null));};exports[_0x02ea('0x47')]=function(_0x56b329,_0x21fa20){return db[_0x02ea('0x25')][_0x02ea('0x44')]({'where':{'id':_0x56b329[_0x02ea('0x43')]['id']}})[_0x02ea('0x20')](handleEntityNotFound(_0x21fa20,null))[_0x02ea('0x20')](removeEntity(_0x21fa20,null))[_0x02ea('0x42')](handleError(_0x21fa20,null));};exports[_0x02ea('0x48')]=function(_0x9898d5,_0x2c739f){return db['VoiceRecording'][_0x02ea('0x48')]()[_0x02ea('0x20')](respondWithResult(_0x2c739f,null))['catch'](handleError(_0x2c739f,null));};exports[_0x02ea('0x49')]=function(_0x5c446d,_0x14c054,_0x370356){var _0x6dc65=require(_0x02ea('0x4a'));var _0x124dc6=![];var _0xa762eb={};if(_0x5c446d[_0x02ea('0x2a')][_0x02ea('0x3a')]&&_0x5c446d[_0x02ea('0x2a')][_0x02ea('0x3a')]===_0x02ea('0x4b')){_0xa762eb[_0x02ea('0x4b')]=_0x5c446d[_0x02ea('0x43')]['id'];}else{_0xa762eb['id']=_0x5c446d[_0x02ea('0x43')]['id'];}return db[_0x02ea('0x25')][_0x02ea('0x44')]({'where':_0xa762eb,'attributes':['id',_0x02ea('0x4c')],'raw':!![]})[_0x02ea('0x20')](handleEntityNotFound(_0x14c054,null))[_0x02ea('0x20')](function(_0x312f6b){if(_0x312f6b){var _0x3ac519=util[_0x02ea('0x29')](_0x02ea('0x4d'),_0x312f6b[_0x02ea('0x4c')]);if(fs[_0x02ea('0x4e')](_0x3ac519)){_0x124dc6=!![];return _0x6dc65['decryptFile'](_0x3ac519,_0x312f6b['value'],config[_0x02ea('0x4f')][_0x02ea('0x50')])['then'](function(){return _0x312f6b;});}return _0x312f6b;}})[_0x02ea('0x20')](function(_0x4725b5){if(_0x4725b5){if(!fs[_0x02ea('0x4e')](_0x4725b5[_0x02ea('0x4c')])){throw new db[(_0x02ea('0x51'))]['ValidationError'](_0x02ea('0x52'));}if(_0x4725b5['filename']){return _0x14c054['download'](_0x4725b5[_0x02ea('0x4c')],_0x4725b5[_0x02ea('0x53')]+path[_0x02ea('0x54')](_0x4725b5[_0x02ea('0x4c')]),function(){if(_0x124dc6){fs[_0x02ea('0x55')](_0x4725b5[_0x02ea('0x4c')]);}});}else{return _0x14c054[_0x02ea('0x49')](_0x4725b5[_0x02ea('0x4c')],function(_0x4d607a){if(_0x124dc6){fs[_0x02ea('0x55')](_0x4725b5[_0x02ea('0x4c')]);}});}}})[_0x02ea('0x42')](handleError(_0x14c054,null));};exports[_0x02ea('0x56')]=function(_0x23ff15,_0x2cdbd9,_0x3041d9){var _0x297baa=require(_0x02ea('0x4a'));var _0x2f0da0=![];var _0x3396b8={'$and':[db[_0x02ea('0x57')][_0x02ea('0x33')](db['sequelize']['fn'](_0x02ea('0x58'),db[_0x02ea('0x57')][_0x02ea('0x59')](_0x02ea('0x4b'))),_0x23ff15[_0x02ea('0x2a')][_0x02ea('0x5a')])]};if(_0x23ff15[_0x02ea('0x2a')][_0x02ea('0x3a')]&&_0x23ff15[_0x02ea('0x2a')][_0x02ea('0x3a')]==='uniqueid'){_0x3396b8[_0x02ea('0x5b')]['push']({'uniqueid':_0x23ff15[_0x02ea('0x43')]['id']});}else{_0x3396b8[_0x02ea('0x5b')][_0x02ea('0x5c')]({'id':_0x23ff15[_0x02ea('0x43')]['id']});}return db[_0x02ea('0x25')][_0x02ea('0x44')]({'where':_0x3396b8,'attributes':['id',_0x02ea('0x4c')],'raw':!![]})[_0x02ea('0x20')](handleEntityNotFound(_0x2cdbd9,null))[_0x02ea('0x20')](function(_0x4a70f3){if(_0x4a70f3){var _0x17877c=util[_0x02ea('0x29')](_0x02ea('0x4d'),_0x4a70f3[_0x02ea('0x4c')]);if(fs['existsSync'](_0x17877c)){_0x2f0da0=!![];return _0x297baa[_0x02ea('0x5d')](_0x17877c,_0x4a70f3['value'],config['secrets'][_0x02ea('0x50')])[_0x02ea('0x20')](function(){return _0x4a70f3;});}return _0x4a70f3;}})[_0x02ea('0x20')](function(_0x4ae4b4){if(_0x4ae4b4){if(!fs[_0x02ea('0x4e')](_0x4ae4b4[_0x02ea('0x4c')])){throw new db[(_0x02ea('0x51'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x4ae4b4[_0x02ea('0x53')]){return _0x2cdbd9['download'](_0x4ae4b4[_0x02ea('0x4c')],_0x4ae4b4[_0x02ea('0x53')]+path[_0x02ea('0x54')](_0x4ae4b4['value']),function(){if(_0x2f0da0){fs[_0x02ea('0x55')](_0x4ae4b4[_0x02ea('0x4c')]);}});}else{return _0x2cdbd9[_0x02ea('0x49')](_0x4ae4b4[_0x02ea('0x4c')],function(_0x36c258){if(_0x2f0da0){fs[_0x02ea('0x55')](_0x4ae4b4['value']);}});}}})[_0x02ea('0x42')](handleError(_0x2cdbd9,null));};
\ No newline at end of file
+var _0x54a9=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count','offset','Content-Range','apply','reject','save','then','destroy','name','send','index','VoiceRecording','rawAttributes','differenceBy','keys','query','dateEnd','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','dateStart','add','day','merge','map','type','VIRTUAL','field','filter','includeAll','include','findAll','catch','show','params','options','find','body','update','describe','download','../../components/encryptor','uniqueid','value','format','%s.cypher','existsSync','secrets','recording','Sequelize','filename','extname','unlink','sequelize','MD5','col','$and','push','decryptFile','ValidationError','VoiceRecording\x20not\x20found','html-pdf','rimraf'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x54a9,0x186));var _0x954a=function(_0x2766fe,_0x1f6024){_0x2766fe=_0x2766fe-0x0;var _0x10210a=_0x54a9[_0x2766fe];return _0x10210a;};'use strict';var pdf=require(_0x954a('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x954a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x954a('0x2'));var rp=require(_0x954a('0x3'));var moment=require(_0x954a('0x4'));var BPromise=require(_0x954a('0x5'));var Mustache=require(_0x954a('0x6'));var util=require(_0x954a('0x7'));var path=require(_0x954a('0x8'));var sox=require('sox');var csv=require(_0x954a('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x954a('0xa'));var squel=require(_0x954a('0xb'));var crypto=require(_0x954a('0xc'));var jsforce=require(_0x954a('0xd'));var deskjs=require(_0x954a('0xe'));var toCsv=require(_0x954a('0x9'));var querystring=require(_0x954a('0xf'));var Papa=require(_0x954a('0x10'));var Redis=require(_0x954a('0x11'));var qs=require('../../components/parsers/qs');var logger=require(_0x954a('0x12'))(_0x954a('0x13'));var utils=require(_0x954a('0x14'));var config=require(_0x954a('0x15'));var db=require(_0x954a('0x16'))['db'];function respondWithStatusCode(_0x4b2522,_0x388c7d){_0x388c7d=_0x388c7d||0xcc;return function(_0x4f0a44){if(_0x4f0a44){return _0x4b2522[_0x954a('0x17')](_0x388c7d);}return _0x4b2522[_0x954a('0x18')](_0x388c7d)[_0x954a('0x19')]();};}function respondWithResult(_0x3dcc4a,_0x26c450){_0x26c450=_0x26c450||0xc8;return function(_0xaa23de){if(_0xaa23de){return _0x3dcc4a[_0x954a('0x18')](_0x26c450)[_0x954a('0x1a')](_0xaa23de);}};}function respondWithFilteredResult(_0x163ce3,_0x11d574){return function(_0x3daee6){if(_0x3daee6){var _0x159be2=_0x3daee6[_0x954a('0x1b')],_0x1f393c=_0x11d574[_0x954a('0x1c')],_0x488b8c=_0x11d574[_0x954a('0x1c')]+_0x11d574['limit'],_0x22e60f;if(_0x488b8c>=_0x159be2){_0x488b8c=_0x159be2;_0x22e60f=0xc8;}else{_0x22e60f=0xce;}_0x163ce3[_0x954a('0x18')](_0x22e60f);return _0x163ce3['set'](_0x954a('0x1d'),_0x1f393c+'-'+_0x488b8c+'/'+_0x159be2)[_0x954a('0x1a')](_0x3daee6);}return null;};}function patchUpdates(_0x1a69ec){return function(_0x5af6bc){try{jsonpatch[_0x954a('0x1e')](_0x5af6bc,_0x1a69ec,!![]);}catch(_0x51a796){return BPromise[_0x954a('0x1f')](_0x51a796);}return _0x5af6bc[_0x954a('0x20')]();};}function saveUpdates(_0x212093,_0x428895){return function(_0x2a2511){if(_0x2a2511){return _0x2a2511['update'](_0x212093)[_0x954a('0x21')](function(_0x17d17b){return _0x17d17b;});}return null;};}function removeEntity(_0x2c123c,_0x1cd21a){return function(_0x3a3766){if(_0x3a3766){return _0x3a3766[_0x954a('0x22')]()[_0x954a('0x21')](function(){_0x2c123c[_0x954a('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x549c20,_0x56af4b){return function(_0x163f2f){if(!_0x163f2f){_0x549c20[_0x954a('0x17')](0x194);}return _0x163f2f;};}function handleError(_0x4b013d,_0x5328c7){_0x5328c7=_0x5328c7||0x1f4;return function(_0x221a2c){logger['error'](_0x221a2c['stack']);if(_0x221a2c[_0x954a('0x23')]){delete _0x221a2c[_0x954a('0x23')];}_0x4b013d[_0x954a('0x18')](_0x5328c7)[_0x954a('0x24')](_0x221a2c);};}exports[_0x954a('0x25')]=function(_0x21b602,_0x49fb5c){var _0x6c1fb7={},_0x3703cc={},_0x3f2ced={'count':0x0,'rows':[]};var _0x462b83=db[_0x954a('0x26')][_0x954a('0x27')];_0x3703cc['model']=_[_0x954a('0x28')](_[_0x954a('0x29')](_0x462b83),['format']);var _0x533705={'dateStart':_0x21b602[_0x954a('0x2a')]['dateStart'],'dateEnd':_0x21b602[_0x954a('0x2a')]['dateEnd']};delete _0x21b602[_0x954a('0x2a')]['dateStart'];delete _0x21b602[_0x954a('0x2a')][_0x954a('0x2b')];_0x3703cc[_0x954a('0x2a')]=_[_0x954a('0x29')](_0x21b602['query']);_0x3703cc[_0x954a('0x2c')]=_[_0x954a('0x2d')](_0x3703cc[_0x954a('0x2e')],_0x3703cc[_0x954a('0x2a')]);_0x6c1fb7[_0x954a('0x2f')]=_['intersection'](_0x3703cc[_0x954a('0x2e')],qs['fields'](_0x21b602['query'][_0x954a('0x30')]));_0x6c1fb7['attributes']=_0x6c1fb7[_0x954a('0x2f')][_0x954a('0x31')]?_0x6c1fb7[_0x954a('0x2f')]:_0x3703cc[_0x954a('0x2e')];if(!_0x21b602[_0x954a('0x2a')][_0x954a('0x32')](_0x954a('0x33'))){_0x6c1fb7['limit']=qs[_0x954a('0x34')](_0x21b602[_0x954a('0x2a')][_0x954a('0x34')]);_0x6c1fb7[_0x954a('0x1c')]=qs[_0x954a('0x1c')](_0x21b602[_0x954a('0x2a')][_0x954a('0x1c')]);}_0x6c1fb7[_0x954a('0x35')]=qs[_0x954a('0x36')](_0x21b602[_0x954a('0x2a')]['sort']);_0x6c1fb7[_0x954a('0x37')]=qs[_0x954a('0x2c')](_[_0x954a('0x38')](_0x21b602['query'],_0x3703cc[_0x954a('0x2c')]));if(_0x533705[_0x954a('0x39')]){if(_0x533705['dateEnd']){_0x533705[_0x954a('0x2b')]=moment(_0x533705['dateEnd'])[_0x954a('0x3a')](0x1,_0x954a('0x3b'));}else{_0x533705[_0x954a('0x2b')]=moment(_0x533705[_0x954a('0x39')])[_0x954a('0x3a')](0x1,_0x954a('0x3b'));}_['merge'](_0x6c1fb7[_0x954a('0x37')],{'createdAt':{'$gte':_0x533705[_0x954a('0x39')],'$lte':_0x533705['dateEnd']}});}if(_0x21b602[_0x954a('0x2a')]['filter']){_0x6c1fb7['where']=_[_0x954a('0x3c')](_0x6c1fb7[_0x954a('0x37')],{'$or':_[_0x954a('0x3d')](_0x462b83,function(_0x229070){if(_0x229070[_0x954a('0x3e')]['key']!==_0x954a('0x3f')){var _0x4e5b2b={};_0x4e5b2b[_0x229070[_0x954a('0x40')]]={'$like':'%'+_0x21b602[_0x954a('0x2a')][_0x954a('0x41')]+'%'};return _0x4e5b2b;}})});}_0x6c1fb7=_[_0x954a('0x3c')]({},_0x6c1fb7,_0x21b602['options']);var _0x1782e1={'where':_0x6c1fb7[_0x954a('0x37')]};return db[_0x954a('0x26')][_0x954a('0x1b')](_0x1782e1)['then'](function(_0x419a42){_0x3f2ced['count']=_0x419a42;if(_0x21b602[_0x954a('0x2a')][_0x954a('0x42')]){_0x6c1fb7[_0x954a('0x43')]=[{'all':!![]}];}return db[_0x954a('0x26')][_0x954a('0x44')](_0x6c1fb7);})['then'](function(_0x1f7eb6){_0x3f2ced['rows']=_0x1f7eb6;return _0x3f2ced;})[_0x954a('0x21')](respondWithFilteredResult(_0x49fb5c,_0x6c1fb7))[_0x954a('0x45')](handleError(_0x49fb5c,null));};exports[_0x954a('0x46')]=function(_0x5e3949,_0x4355c8){var _0x3b2351={'raw':![],'where':{'id':_0x5e3949[_0x954a('0x47')]['id']}},_0x12210d={};_0x12210d[_0x954a('0x2e')]=_[_0x954a('0x29')](db[_0x954a('0x26')][_0x954a('0x27')]);_0x12210d[_0x954a('0x2a')]=_[_0x954a('0x29')](_0x5e3949[_0x954a('0x2a')]);_0x12210d['filters']=_[_0x954a('0x2d')](_0x12210d[_0x954a('0x2e')],_0x12210d['query']);_0x3b2351['attributes']=_[_0x954a('0x2d')](_0x12210d[_0x954a('0x2e')],qs['fields'](_0x5e3949[_0x954a('0x2a')]['fields']));_0x3b2351[_0x954a('0x2f')]=_0x3b2351['attributes'][_0x954a('0x31')]?_0x3b2351[_0x954a('0x2f')]:_0x12210d[_0x954a('0x2e')];if(_0x5e3949[_0x954a('0x2a')][_0x954a('0x42')]){_0x3b2351['include']=[{'all':!![]}];}_0x3b2351=_[_0x954a('0x3c')]({},_0x3b2351,_0x5e3949[_0x954a('0x48')]);return db[_0x954a('0x26')][_0x954a('0x49')](_0x3b2351)[_0x954a('0x21')](handleEntityNotFound(_0x4355c8,null))['then'](respondWithResult(_0x4355c8,null))[_0x954a('0x45')](handleError(_0x4355c8,null));};exports['create']=function(_0x5f36a0,_0x226f4f){return db['VoiceRecording']['create'](_0x5f36a0[_0x954a('0x4a')],{})[_0x954a('0x21')](respondWithResult(_0x226f4f,0xc9))[_0x954a('0x45')](handleError(_0x226f4f,null));};exports[_0x954a('0x4b')]=function(_0x42ebb4,_0x3465ab){if(_0x42ebb4['body']['id']){delete _0x42ebb4['body']['id'];}return db[_0x954a('0x26')][_0x954a('0x49')]({'where':{'id':_0x42ebb4[_0x954a('0x47')]['id']}})[_0x954a('0x21')](handleEntityNotFound(_0x3465ab,null))[_0x954a('0x21')](saveUpdates(_0x42ebb4[_0x954a('0x4a')],null))[_0x954a('0x21')](respondWithResult(_0x3465ab,null))['catch'](handleError(_0x3465ab,null));};exports['destroy']=function(_0x11c038,_0x564e16){return db['VoiceRecording'][_0x954a('0x49')]({'where':{'id':_0x11c038[_0x954a('0x47')]['id']}})[_0x954a('0x21')](handleEntityNotFound(_0x564e16,null))[_0x954a('0x21')](removeEntity(_0x564e16,null))[_0x954a('0x45')](handleError(_0x564e16,null));};exports[_0x954a('0x4c')]=function(_0xb1896d,_0xe3a70c){return db['VoiceRecording'][_0x954a('0x4c')]()[_0x954a('0x21')](respondWithResult(_0xe3a70c,null))[_0x954a('0x45')](handleError(_0xe3a70c,null));};exports[_0x954a('0x4d')]=function(_0xce6a89,_0x3b84d1,_0xd13152){var _0x11a494=require(_0x954a('0x4e'));var _0x4d2ccb=![];var _0x5b5969={};if(_0xce6a89[_0x954a('0x2a')][_0x954a('0x3e')]&&_0xce6a89[_0x954a('0x2a')][_0x954a('0x3e')]===_0x954a('0x4f')){_0x5b5969[_0x954a('0x4f')]=_0xce6a89[_0x954a('0x47')]['id'];}else{_0x5b5969['id']=_0xce6a89[_0x954a('0x47')]['id'];}return db[_0x954a('0x26')]['find']({'where':_0x5b5969,'attributes':['id',_0x954a('0x50')],'raw':!![]})[_0x954a('0x21')](handleEntityNotFound(_0x3b84d1,null))[_0x954a('0x21')](function(_0x30f645){if(_0x30f645){var _0x5280e3=util[_0x954a('0x51')](_0x954a('0x52'),_0x30f645[_0x954a('0x50')]);if(fs[_0x954a('0x53')](_0x5280e3)){_0x4d2ccb=!![];return _0x11a494['decryptFile'](_0x5280e3,_0x30f645[_0x954a('0x50')],config[_0x954a('0x54')][_0x954a('0x55')])[_0x954a('0x21')](function(){return _0x30f645;});}return _0x30f645;}})['then'](function(_0x99797){if(_0x99797){if(!fs[_0x954a('0x53')](_0x99797[_0x954a('0x50')])){throw new db[(_0x954a('0x56'))]['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x99797[_0x954a('0x57')]){return _0x3b84d1['download'](_0x99797[_0x954a('0x50')],_0x99797[_0x954a('0x57')]+path[_0x954a('0x58')](_0x99797['value']),function(){if(_0x4d2ccb){fs[_0x954a('0x59')](_0x99797[_0x954a('0x50')]);}});}else{return _0x3b84d1[_0x954a('0x4d')](_0x99797['value'],function(_0x4f7eae){if(_0x4d2ccb){fs[_0x954a('0x59')](_0x99797[_0x954a('0x50')]);}});}}})[_0x954a('0x45')](handleError(_0x3b84d1,null));};exports['downloads']=function(_0xa86eb1,_0x230d1e,_0x36bb4d){var _0x1f2eea=require(_0x954a('0x4e'));var _0x351a3b=![];var _0x252e4b={'$and':[db[_0x954a('0x5a')][_0x954a('0x37')](db[_0x954a('0x5a')]['fn'](_0x954a('0x5b'),db[_0x954a('0x5a')][_0x954a('0x5c')](_0x954a('0x4f'))),_0xa86eb1['query']['token'])]};if(_0xa86eb1[_0x954a('0x2a')][_0x954a('0x3e')]&&_0xa86eb1[_0x954a('0x2a')]['type']==='uniqueid'){_0x252e4b[_0x954a('0x5d')][_0x954a('0x5e')]({'uniqueid':_0xa86eb1[_0x954a('0x47')]['id']});}else{_0x252e4b[_0x954a('0x5d')][_0x954a('0x5e')]({'id':_0xa86eb1[_0x954a('0x47')]['id']});}return db['VoiceRecording'][_0x954a('0x49')]({'where':_0x252e4b,'attributes':['id',_0x954a('0x50')],'raw':!![]})[_0x954a('0x21')](handleEntityNotFound(_0x230d1e,null))[_0x954a('0x21')](function(_0x344c23){if(_0x344c23){var _0x5bcc82=util['format'](_0x954a('0x52'),_0x344c23[_0x954a('0x50')]);if(fs[_0x954a('0x53')](_0x5bcc82)){_0x351a3b=!![];return _0x1f2eea[_0x954a('0x5f')](_0x5bcc82,_0x344c23['value'],config[_0x954a('0x54')]['recording'])[_0x954a('0x21')](function(){return _0x344c23;});}return _0x344c23;}})['then'](function(_0x2ab6c0){if(_0x2ab6c0){if(!fs[_0x954a('0x53')](_0x2ab6c0[_0x954a('0x50')])){throw new db[(_0x954a('0x56'))][(_0x954a('0x60'))](_0x954a('0x61'));}if(_0x2ab6c0['filename']){return _0x230d1e['download'](_0x2ab6c0[_0x954a('0x50')],_0x2ab6c0[_0x954a('0x57')]+path[_0x954a('0x58')](_0x2ab6c0['value']),function(){if(_0x351a3b){fs[_0x954a('0x59')](_0x2ab6c0['value']);}});}else{return _0x230d1e[_0x954a('0x4d')](_0x2ab6c0[_0x954a('0x50')],function(_0x4148a9){if(_0x351a3b){fs[_0x954a('0x59')](_0x2ab6c0['value']);}});}}})[_0x954a('0x45')](handleError(_0x230d1e,null));};
\ No newline at end of file
index 85a98af..eb15d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3910=['exports','define','VoiceRecording','voice_recordings','uniqueid','lodash','util','../../config/logger','moment','bluebird','./voiceRecording.attributes'];(function(_0x33bae8,_0x5287cb){var _0x3ea88f=function(_0x53a162){while(--_0x53a162){_0x33bae8['push'](_0x33bae8['shift']());}};_0x3ea88f(++_0x5287cb);}(_0x3910,0x1c8));var _0x0391=function(_0x5bf5a3,_0x1f7996){_0x5bf5a3=_0x5bf5a3-0x0;var _0x6a9ff0=_0x3910[_0x5bf5a3];return _0x6a9ff0;};'use strict';var _=require(_0x0391('0x0'));var util=require(_0x0391('0x1'));var logger=require(_0x0391('0x2'))('api');var moment=require(_0x0391('0x3'));var BPromise=require(_0x0391('0x4'));var rp=require('request-promise');var attributes=require(_0x0391('0x5'));module[_0x0391('0x6')]=function(_0x2830eb,_0x4ed6e1){return _0x2830eb[_0x0391('0x7')](_0x0391('0x8'),attributes,{'tableName':_0x0391('0x9'),'paranoid':![],'indexes':[{'name':_0x0391('0xa'),'fields':[_0x0391('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfb63=['exports','define','voice_recordings','uniqueid','lodash','util','../../config/logger','api','./voiceRecording.attributes'];(function(_0x46b2b9,_0x10349d){var _0x36c39c=function(_0x300f5a){while(--_0x300f5a){_0x46b2b9['push'](_0x46b2b9['shift']());}};_0x36c39c(++_0x10349d);}(_0xfb63,0x1e1));var _0x3fb6=function(_0x5d6e9c,_0xc28379){_0x5d6e9c=_0x5d6e9c-0x0;var _0x17c875=_0xfb63[_0x5d6e9c];return _0x17c875;};'use strict';var _=require(_0x3fb6('0x0'));var util=require(_0x3fb6('0x1'));var logger=require(_0x3fb6('0x2'))(_0x3fb6('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var attributes=require(_0x3fb6('0x4'));module[_0x3fb6('0x5')]=function(_0x51a4b6,_0x4120a5){return _0x51a4b6[_0x3fb6('0x6')]('VoiceRecording',attributes,{'tableName':_0x3fb6('0x7'),'paranoid':![],'indexes':[{'name':_0x3fb6('0x8'),'fields':[_0x3fb6('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index b8297a1..f9a73cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4560=['findOne','callRecordingEncryption','create','value','format','%s.cypher','secrets','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','limit','debug','CreateVoiceRecording','../../components/encryptor','Setting'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x4560,0xd6));var _0x0456=function(_0x3d4a7d,_0xa68224){_0x3d4a7d=_0x3d4a7d-0x0;var _0x40e9ad=_0x4560[_0x3d4a7d];return _0x40e9ad;};'use strict';var _=require(_0x0456('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0456('0x1'));var rs=require(_0x0456('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0456('0x3'))['db'];var utils=require(_0x0456('0x4'));var logger=require('../../config/logger')(_0x0456('0x5'));var config=require(_0x0456('0x6'));var jayson=require(_0x0456('0x7'));var client=jayson[_0x0456('0x8')][_0x0456('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30e5c9,_0x58e402,_0x595b81){return new BPromise(function(_0x19b1b7,_0xb5ca01){return client[_0x0456('0xa')](_0x30e5c9,_0x595b81)[_0x0456('0xb')](function(_0x27f5ef){logger[_0x0456('0xc')](_0x0456('0xd'),_0x58e402,_0x0456('0xe'));logger['debug'](_0x0456('0xf'),_0x58e402,_0x0456('0xe'),JSON[_0x0456('0x10')](_0x27f5ef));if(_0x27f5ef['error']){if(_0x27f5ef['error']['code']===0x1f4){logger[_0x0456('0x11')]('VoiceRecording,\x20%s,\x20%s',_0x58e402,_0x27f5ef[_0x0456('0x11')][_0x0456('0x12')]);return _0xb5ca01(_0x27f5ef[_0x0456('0x11')]['message']);}logger[_0x0456('0x11')]('VoiceRecording,\x20%s,\x20%s',_0x58e402,_0x27f5ef['error'][_0x0456('0x12')]);return _0x19b1b7(_0x27f5ef[_0x0456('0x11')]['message']);}else{logger[_0x0456('0xc')](_0x0456('0xd'),_0x58e402,_0x0456('0xe'));_0x19b1b7(_0x27f5ef[_0x0456('0x13')][_0x0456('0x12')]);}})[_0x0456('0x14')](function(_0x40105c){logger[_0x0456('0x11')](_0x0456('0xd'),_0x58e402,_0x40105c);_0xb5ca01(_0x40105c);});});}exports[_0x0456('0x15')]=function(_0x225e1b){var _0x22e12c=this;return new Promise(function(_0x56733b,_0x42aa52){return db[_0x0456('0x16')][_0x0456('0x17')](_0x225e1b[_0x0456('0x18')],{'raw':_0x225e1b['options']?_0x225e1b[_0x0456('0x19')][_0x0456('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x225e1b[_0x0456('0x19')]?_0x225e1b[_0x0456('0x19')]['where']||null:null,'attributes':_0x225e1b['options']?_0x225e1b[_0x0456('0x19')]['attributes']||null:null,'limit':_0x225e1b['options']?_0x225e1b['options'][_0x0456('0x1b')]||null:null})[_0x0456('0xb')](function(_0x185c9d){logger[_0x0456('0xc')]('UpdateVoiceRecording',_0x225e1b);logger[_0x0456('0x1c')](_0x0456('0x15'),_0x225e1b,JSON[_0x0456('0x10')](_0x185c9d));_0x56733b(_0x185c9d);})[_0x0456('0x14')](function(_0x59159a){logger['error'](_0x0456('0x15'),_0x59159a[_0x0456('0x12')],_0x225e1b);_0x42aa52(_0x22e12c[_0x0456('0x11')](0x1f4,_0x59159a[_0x0456('0x12')]));});});};exports[_0x0456('0x1d')]=function(_0x161b35){var _0x51b1ba=this;return new Promise(function(_0x10e9a5,_0x1621d8){var _0x3896c0=require(_0x0456('0x1e'));var _0x588cd8;return db[_0x0456('0x1f')][_0x0456('0x20')]({'attributes':['id',_0x0456('0x21')],'where':{'id':0x1},'raw':!![]})[_0x0456('0xb')](function(_0x59ae98){_0x588cd8=_0x59ae98;return db[_0x0456('0x16')][_0x0456('0x22')](_0x161b35[_0x0456('0x18')]);})['then'](function(_0x34a209){if(_0x588cd8['callRecordingEncryption']&&fs['existsSync'](_0x34a209[_0x0456('0x23')])){var _0x3f9058=util[_0x0456('0x24')](_0x0456('0x25'),_0x34a209[_0x0456('0x23')]);return _0x3896c0['encryptFile'](_0x34a209[_0x0456('0x23')],_0x3f9058,config[_0x0456('0x26')]['recording'])[_0x0456('0xb')](function(){fs[_0x0456('0x27')](_0x34a209[_0x0456('0x23')]);logger[_0x0456('0xc')](_0x0456('0x28'));return _0x34a209;});}return _0x34a209;})[_0x0456('0xb')](function(_0x2123f0){logger[_0x0456('0xc')](_0x0456('0x1d'),_0x161b35);logger[_0x0456('0x1c')](_0x0456('0x1d'),_0x161b35,JSON['stringify'](_0x2123f0));_0x10e9a5(_0x2123f0);})[_0x0456('0x14')](function(_0x238f7e){logger[_0x0456('0x11')](_0x0456('0x1d'),_0x238f7e[_0x0456('0x12')],_0x161b35);_0x1621d8(_0x51b1ba[_0x0456('0x11')](0x1f4,_0x238f7e[_0x0456('0x12')]));});});};
\ No newline at end of file
+var _0x5939=['format','CreateVoiceRecording\x20file\x20encrypted','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','update','body','options','raw','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','Setting','callRecordingEncryption','VoiceRecording','create','existsSync','value'];(function(_0x3481d7,_0x4fb52a){var _0xf50029=function(_0x648fd8){while(--_0x648fd8){_0x3481d7['push'](_0x3481d7['shift']());}};_0xf50029(++_0x4fb52a);}(_0x5939,0xf2));var _0x9593=function(_0x217ae9,_0x1be506){_0x217ae9=_0x217ae9-0x0;var _0xf2d705=_0x5939[_0x217ae9];return _0xf2d705;};'use strict';var _=require(_0x9593('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9593('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9593('0x2'));var db=require(_0x9593('0x3'))['db'];var utils=require(_0x9593('0x4'));var logger=require(_0x9593('0x5'))('rpc');var config=require(_0x9593('0x6'));var jayson=require(_0x9593('0x7'));var client=jayson['client'][_0x9593('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x10b26d,_0x3550e3,_0x361e9a){return new BPromise(function(_0x4e142b,_0x1c0b75){return client[_0x9593('0x9')](_0x10b26d,_0x361e9a)[_0x9593('0xa')](function(_0x32aab4){logger[_0x9593('0xb')](_0x9593('0xc'),_0x3550e3,_0x9593('0xd'));logger[_0x9593('0xe')](_0x9593('0xf'),_0x3550e3,_0x9593('0xd'),JSON[_0x9593('0x10')](_0x32aab4));if(_0x32aab4['error']){if(_0x32aab4[_0x9593('0x11')][_0x9593('0x12')]===0x1f4){logger[_0x9593('0x11')]('VoiceRecording,\x20%s,\x20%s',_0x3550e3,_0x32aab4['error'][_0x9593('0x13')]);return _0x1c0b75(_0x32aab4[_0x9593('0x11')][_0x9593('0x13')]);}logger['error'](_0x9593('0xc'),_0x3550e3,_0x32aab4['error']['message']);return _0x4e142b(_0x32aab4[_0x9593('0x11')][_0x9593('0x13')]);}else{logger[_0x9593('0xb')](_0x9593('0xc'),_0x3550e3,_0x9593('0xd'));_0x4e142b(_0x32aab4[_0x9593('0x14')][_0x9593('0x13')]);}})[_0x9593('0x15')](function(_0x52780f){logger['error'](_0x9593('0xc'),_0x3550e3,_0x52780f);_0x1c0b75(_0x52780f);});});}exports[_0x9593('0x16')]=function(_0x4565f4){var _0x3ee4c1=this;return new Promise(function(_0x1253d5,_0x31503f){return db['VoiceRecording'][_0x9593('0x17')](_0x4565f4[_0x9593('0x18')],{'raw':_0x4565f4[_0x9593('0x19')]?_0x4565f4['options'][_0x9593('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4565f4[_0x9593('0x19')]?_0x4565f4[_0x9593('0x19')][_0x9593('0x1b')]||null:null,'attributes':_0x4565f4[_0x9593('0x19')]?_0x4565f4[_0x9593('0x19')][_0x9593('0x1c')]||null:null,'limit':_0x4565f4['options']?_0x4565f4[_0x9593('0x19')][_0x9593('0x1d')]||null:null})[_0x9593('0xa')](function(_0x16108b){logger[_0x9593('0xb')](_0x9593('0x16'),_0x4565f4);logger[_0x9593('0xe')]('UpdateVoiceRecording',_0x4565f4,JSON[_0x9593('0x10')](_0x16108b));_0x1253d5(_0x16108b);})[_0x9593('0x15')](function(_0x33a0c8){logger['error']('UpdateVoiceRecording',_0x33a0c8[_0x9593('0x13')],_0x4565f4);_0x31503f(_0x3ee4c1[_0x9593('0x11')](0x1f4,_0x33a0c8['message']));});});};exports[_0x9593('0x1e')]=function(_0x23a6b1){var _0x37c6cc=this;return new Promise(function(_0x5d1c6b,_0x1b331b){var _0x3a040d=require(_0x9593('0x1f'));var _0xfc7121;return db[_0x9593('0x20')]['findOne']({'attributes':['id',_0x9593('0x21')],'where':{'id':0x1},'raw':!![]})[_0x9593('0xa')](function(_0x40c047){_0xfc7121=_0x40c047;return db[_0x9593('0x22')][_0x9593('0x23')](_0x23a6b1[_0x9593('0x18')]);})[_0x9593('0xa')](function(_0xf383e2){if(_0xfc7121[_0x9593('0x21')]&&fs[_0x9593('0x24')](_0xf383e2[_0x9593('0x25')])){var _0x12782e=util[_0x9593('0x26')]('%s.cypher',_0xf383e2[_0x9593('0x25')]);return _0x3a040d['encryptFile'](_0xf383e2[_0x9593('0x25')],_0x12782e,config['secrets']['recording'])[_0x9593('0xa')](function(){fs['unlink'](_0xf383e2['value']);logger[_0x9593('0xb')](_0x9593('0x27'));return _0xf383e2;});}return _0xf383e2;})[_0x9593('0xa')](function(_0xe18b9){logger[_0x9593('0xb')]('CreateVoiceRecording',_0x23a6b1);logger['debug'](_0x9593('0x1e'),_0x23a6b1,JSON[_0x9593('0x10')](_0xe18b9));_0x5d1c6b(_0xe18b9);})[_0x9593('0x15')](function(_0x207b20){logger[_0x9593('0x11')](_0x9593('0x1e'),_0x207b20[_0x9593('0x13')],_0x23a6b1);_0x1b331b(_0x37c6cc[_0x9593('0x11')](0x1f4,_0x207b20[_0x9593('0x13')]));});});};
\ No newline at end of file
index e7aebb9..7eb4621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb564=['get','index','/:id','isAuthenticated','post','put','update','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller'];(function(_0x1c41e2,_0x2feda5){var _0x4bb681=function(_0x4aa7e4){while(--_0x4aa7e4){_0x1c41e2['push'](_0x1c41e2['shift']());}};_0x4bb681(++_0x2feda5);}(_0xb564,0x171));var _0x4b56=function(_0x3d66d0,_0x1ea928){_0x3d66d0=_0x3d66d0-0x0;var _0x36bdb4=_0xb564[_0x3d66d0];return _0x36bdb4;};'use strict';var multer=require('multer');var util=require(_0x4b56('0x0'));var path=require(_0x4b56('0x1'));var timeout=require(_0x4b56('0x2'));var express=require(_0x4b56('0x3'));var router=express[_0x4b56('0x4')]();var auth=require(_0x4b56('0x5'));var interaction=require(_0x4b56('0x6'));var config=require(_0x4b56('0x7'));var controller=require(_0x4b56('0x8'));router[_0x4b56('0x9')]('/',auth['isAuthenticated'](),controller[_0x4b56('0xa')]);router[_0x4b56('0x9')](_0x4b56('0xb'),auth[_0x4b56('0xc')](),controller['show']);router[_0x4b56('0xd')]('/',auth[_0x4b56('0xc')](),controller['create']);router[_0x4b56('0xe')](_0x4b56('0xb'),auth['isAuthenticated'](),controller[_0x4b56('0xf')]);router['delete'](_0x4b56('0xb'),auth['isAuthenticated'](),controller[_0x4b56('0x10')]);module[_0x4b56('0x11')]=router;
\ No newline at end of file
+var _0x8d53=['isAuthenticated','create','put','/:id','update','delete','multer','util','express','Router','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','show','post'];(function(_0x147df9,_0x230cb1){var _0x477e2d=function(_0x293a5f){while(--_0x293a5f){_0x147df9['push'](_0x147df9['shift']());}};_0x477e2d(++_0x230cb1);}(_0x8d53,0x76));var _0x38d5=function(_0x867a3e,_0x496e41){_0x867a3e=_0x867a3e-0x0;var _0x56c5ae=_0x8d53[_0x867a3e];return _0x56c5ae;};'use strict';var multer=require(_0x38d5('0x0'));var util=require(_0x38d5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x38d5('0x2'));var router=express[_0x38d5('0x3')]();var auth=require(_0x38d5('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x38d5('0x5'));var controller=require(_0x38d5('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x38d5('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x38d5('0x8')]);router[_0x38d5('0x9')]('/',auth[_0x38d5('0xa')](),controller[_0x38d5('0xb')]);router[_0x38d5('0xc')](_0x38d5('0xd'),auth[_0x38d5('0xa')](),controller[_0x38d5('0xe')]);router[_0x38d5('0xf')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6f8ad35..39ba36e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567f=['moment','exports','ENUM','blind','attended','STRING','Yes','sequelize'];(function(_0x25dcd6,_0x2534cb){var _0x1ed907=function(_0x5a85bf){while(--_0x5a85bf){_0x25dcd6['push'](_0x25dcd6['shift']());}};_0x1ed907(++_0x2534cb);}(_0x567f,0x147));var _0xf567=function(_0x323d87,_0x4ef3f9){_0x323d87=_0x323d87-0x0;var _0x5e8f74=_0x567f[_0x323d87];return _0x5e8f74;};'use strict';var Sequelize=require(_0xf567('0x0'));var moment=require(_0xf567('0x1'));module[_0xf567('0x2')]={'type':{'type':Sequelize[_0xf567('0x3')](_0xf567('0x4'),_0xf567('0x5'))},'result':{'type':Sequelize[_0xf567('0x6')]},'transfererchannel':{'type':Sequelize[_0xf567('0x6')]},'transferercalleridnum':{'type':Sequelize[_0xf567('0x6')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0xf567('0x6')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0xf567('0x6')]},'transferercontext':{'type':Sequelize[_0xf567('0x6')]},'transfererexten':{'type':Sequelize[_0xf567('0x6')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0xf567('0x6')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0xf567('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0xf567('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0xf567('0x6')]},'transfereecontext':{'type':Sequelize[_0xf567('0x6')]},'transfereeexten':{'type':Sequelize[_0xf567('0x6')]},'transfereelinkedid':{'type':Sequelize[_0xf567('0x6')]},'isexternal':{'type':Sequelize['ENUM'](_0xf567('0x7'),'No')},'context':{'type':Sequelize[_0xf567('0x6')]},'extension':{'type':Sequelize[_0xf567('0x6')]}};
\ No newline at end of file
+var _0x72ef=['STRING','sequelize','ENUM','blind','attended'];(function(_0x28167a,_0x5dee70){var _0x574937=function(_0x3909ff){while(--_0x3909ff){_0x28167a['push'](_0x28167a['shift']());}};_0x574937(++_0x5dee70);}(_0x72ef,0x141));var _0xf72e=function(_0x595000,_0x3d973a){_0x595000=_0x595000-0x0;var _0x2c8b11=_0x72ef[_0x595000];return _0x2c8b11;};'use strict';var Sequelize=require(_0xf72e('0x0'));var moment=require('moment');module['exports']={'type':{'type':Sequelize[_0xf72e('0x1')](_0xf72e('0x2'),_0xf72e('0x3'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0xf72e('0x4')]},'transferercalleridnum':{'type':Sequelize['STRING']},'transferercalleridname':{'type':Sequelize[_0xf72e('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0xf72e('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0xf72e('0x4')]},'transfereraccountcode':{'type':Sequelize[_0xf72e('0x4')]},'transferercontext':{'type':Sequelize[_0xf72e('0x4')]},'transfererexten':{'type':Sequelize[_0xf72e('0x4')]},'transfererlinkedid':{'type':Sequelize[_0xf72e('0x4')]},'transfereechannel':{'type':Sequelize[_0xf72e('0x4')]},'transfereecalleridnum':{'type':Sequelize[_0xf72e('0x4')]},'transfereecalleridname':{'type':Sequelize[_0xf72e('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xf72e('0x4')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0xf72e('0x4')]},'transfereecontext':{'type':Sequelize[_0xf72e('0x4')]},'transfereeexten':{'type':Sequelize[_0xf72e('0x4')]},'transfereelinkedid':{'type':Sequelize[_0xf72e('0x4')]},'isexternal':{'type':Sequelize[_0xf72e('0x1')]('Yes','No')},'context':{'type':Sequelize[_0xf72e('0x4')]},'extension':{'type':Sequelize[_0xf72e('0x4')]}};
\ No newline at end of file
index 759abd8..d56b116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd32b=['offset','Content-Range','update','then','destroy','error','name','send','rawAttributes','model','dateStart','dateEnd','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','sort','where','pick','add','day','merge','filter','map','type','key','includeAll','include','VoiceTransferReport','findAll','rows','catch','show','params','length','options','find','create','body','html-pdf','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','count'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd32b,0x1d6));var _0xbd32=function(_0x36e137,_0x39e47d){_0x36e137=_0x36e137-0x0;var _0x528d6d=_0xd32b[_0x36e137];return _0x528d6d;};'use strict';var pdf=require(_0xbd32('0x0'));var emlformat=require(_0xbd32('0x1'));var rimraf=require('rimraf');var zipdir=require(_0xbd32('0x2'));var jsonpatch=require(_0xbd32('0x3'));var rp=require('request-promise');var moment=require(_0xbd32('0x4'));var BPromise=require(_0xbd32('0x5'));var Mustache=require(_0xbd32('0x6'));var util=require(_0xbd32('0x7'));var path=require(_0xbd32('0x8'));var sox=require(_0xbd32('0x9'));var csv=require(_0xbd32('0xa'));var ejs=require(_0xbd32('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0xbd32('0xc'));var crypto=require('crypto');var jsforce=require(_0xbd32('0xd'));var deskjs=require(_0xbd32('0xe'));var toCsv=require('to-csv');var querystring=require(_0xbd32('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var qs=require(_0xbd32('0x10'));var logger=require(_0xbd32('0x11'))(_0xbd32('0x12'));var utils=require(_0xbd32('0x13'));var config=require(_0xbd32('0x14'));var db=require(_0xbd32('0x15'))['db'];function respondWithStatusCode(_0x1864e2,_0x585641){_0x585641=_0x585641||0xcc;return function(_0x2faf03){if(_0x2faf03){return _0x1864e2[_0xbd32('0x16')](_0x585641);}return _0x1864e2[_0xbd32('0x17')](_0x585641)[_0xbd32('0x18')]();};}function respondWithResult(_0x55f193,_0x1dc591){_0x1dc591=_0x1dc591||0xc8;return function(_0xf7bdf0){if(_0xf7bdf0){return _0x55f193['status'](_0x1dc591)[_0xbd32('0x19')](_0xf7bdf0);}};}function respondWithFilteredResult(_0x3e1dc1,_0x195ebe){return function(_0x21c94c){if(_0x21c94c){var _0x28fc2a=_0x21c94c[_0xbd32('0x1a')],_0x339a68=_0x195ebe[_0xbd32('0x1b')],_0x11a703=_0x195ebe[_0xbd32('0x1b')]+_0x195ebe['limit'],_0xcf167a;if(_0x11a703>=_0x28fc2a){_0x11a703=_0x28fc2a;_0xcf167a=0xc8;}else{_0xcf167a=0xce;}_0x3e1dc1[_0xbd32('0x17')](_0xcf167a);return _0x3e1dc1['set'](_0xbd32('0x1c'),_0x339a68+'-'+_0x11a703+'/'+_0x28fc2a)[_0xbd32('0x19')](_0x21c94c);}return null;};}function patchUpdates(_0x3b1ddd){return function(_0x117fae){try{jsonpatch['apply'](_0x117fae,_0x3b1ddd,!![]);}catch(_0x4a4911){return BPromise['reject'](_0x4a4911);}return _0x117fae['save']();};}function saveUpdates(_0x152776,_0x11376a){return function(_0x266366){if(_0x266366){return _0x266366[_0xbd32('0x1d')](_0x152776)[_0xbd32('0x1e')](function(_0x4f07bb){return _0x4f07bb;});}return null;};}function removeEntity(_0x5e142b,_0x483f5d){return function(_0x318d79){if(_0x318d79){return _0x318d79[_0xbd32('0x1f')]()[_0xbd32('0x1e')](function(){_0x5e142b[_0xbd32('0x17')](0xcc)[_0xbd32('0x18')]();});}};}function handleEntityNotFound(_0x1a3152,_0x20286c){return function(_0x3b61a5){if(!_0x3b61a5){_0x1a3152['sendStatus'](0x194);}return _0x3b61a5;};}function handleError(_0x5c7afc,_0x34e778){_0x34e778=_0x34e778||0x1f4;return function(_0x23204c){logger[_0xbd32('0x20')](_0x23204c['stack']);if(_0x23204c[_0xbd32('0x21')]){delete _0x23204c['name'];}_0x5c7afc['status'](_0x34e778)[_0xbd32('0x22')](_0x23204c);};}exports['index']=function(_0x1f0476,_0x26f6d4){var _0x51317e={},_0x5c51df={},_0xd5e565={'count':0x0,'rows':[]};var _0x34eff3=db['VoiceTransferReport'][_0xbd32('0x23')];_0x5c51df[_0xbd32('0x24')]=_['keys'](_0x34eff3);var _0x46dbfe={'dateStart':_0x1f0476['query'][_0xbd32('0x25')],'dateEnd':_0x1f0476['query'][_0xbd32('0x26')]};delete _0x1f0476[_0xbd32('0x27')]['dateStart'];delete _0x1f0476[_0xbd32('0x27')][_0xbd32('0x26')];_0x5c51df[_0xbd32('0x27')]=_[_0xbd32('0x28')](_0x1f0476[_0xbd32('0x27')]);_0x5c51df[_0xbd32('0x29')]=_[_0xbd32('0x2a')](_0x5c51df[_0xbd32('0x24')],_0x5c51df['query']);_0x51317e['attributes']=_[_0xbd32('0x2a')](_0x5c51df[_0xbd32('0x24')],qs[_0xbd32('0x2b')](_0x1f0476[_0xbd32('0x27')][_0xbd32('0x2b')]));_0x51317e[_0xbd32('0x2c')]=_0x51317e[_0xbd32('0x2c')]['length']?_0x51317e[_0xbd32('0x2c')]:_0x5c51df['model'];if(!_0x1f0476[_0xbd32('0x27')][_0xbd32('0x2d')](_0xbd32('0x2e'))){_0x51317e['limit']=qs[_0xbd32('0x2f')](_0x1f0476[_0xbd32('0x27')][_0xbd32('0x2f')]);_0x51317e[_0xbd32('0x1b')]=qs[_0xbd32('0x1b')](_0x1f0476['query'][_0xbd32('0x1b')]);}_0x51317e['order']=qs[_0xbd32('0x30')](_0x1f0476[_0xbd32('0x27')][_0xbd32('0x30')]);_0x51317e[_0xbd32('0x31')]=qs[_0xbd32('0x29')](_[_0xbd32('0x32')](_0x1f0476[_0xbd32('0x27')],_0x5c51df[_0xbd32('0x29')]));if(_0x46dbfe['dateStart']){if(_0x46dbfe[_0xbd32('0x26')]){_0x46dbfe[_0xbd32('0x26')]=moment(_0x46dbfe[_0xbd32('0x26')])[_0xbd32('0x33')](0x1,_0xbd32('0x34'));}else{_0x46dbfe['dateEnd']=moment(_0x46dbfe['dateStart'])[_0xbd32('0x33')](0x1,_0xbd32('0x34'));}_[_0xbd32('0x35')](_0x51317e[_0xbd32('0x31')],{'createdAt':{'$gte':_0x46dbfe[_0xbd32('0x25')],'$lte':_0x46dbfe[_0xbd32('0x26')]}});}if(_0x1f0476[_0xbd32('0x27')][_0xbd32('0x36')]){_0x51317e[_0xbd32('0x31')]=_[_0xbd32('0x35')](_0x51317e[_0xbd32('0x31')],{'$or':_[_0xbd32('0x37')](_0x34eff3,function(_0x2dbdd3){if(_0x2dbdd3[_0xbd32('0x38')][_0xbd32('0x39')]!=='VIRTUAL'){var _0x61411a={};_0x61411a[_0x2dbdd3['field']]={'$like':'%'+_0x1f0476[_0xbd32('0x27')][_0xbd32('0x36')]+'%'};return _0x61411a;}})});}_0x51317e=_['merge']({},_0x51317e,_0x1f0476['options']);var _0x42dd45={'where':_0x51317e['where']};return db['VoiceTransferReport']['count'](_0x42dd45)[_0xbd32('0x1e')](function(_0x12378c){_0xd5e565[_0xbd32('0x1a')]=_0x12378c;if(_0x1f0476[_0xbd32('0x27')][_0xbd32('0x3a')]){_0x51317e[_0xbd32('0x3b')]=[{'all':!![]}];}return db[_0xbd32('0x3c')][_0xbd32('0x3d')](_0x51317e);})['then'](function(_0x194d21){_0xd5e565[_0xbd32('0x3e')]=_0x194d21;return _0xd5e565;})[_0xbd32('0x1e')](respondWithFilteredResult(_0x26f6d4,_0x51317e))[_0xbd32('0x3f')](handleError(_0x26f6d4,null));};exports[_0xbd32('0x40')]=function(_0x2c2871,_0x2710f1){var _0x4b731a={'raw':!![],'where':{'id':_0x2c2871[_0xbd32('0x41')]['id']}},_0x3244bf={};_0x3244bf[_0xbd32('0x24')]=_[_0xbd32('0x28')](db['VoiceTransferReport'][_0xbd32('0x23')]);_0x3244bf[_0xbd32('0x27')]=_[_0xbd32('0x28')](_0x2c2871[_0xbd32('0x27')]);_0x3244bf[_0xbd32('0x29')]=_[_0xbd32('0x2a')](_0x3244bf['model'],_0x3244bf[_0xbd32('0x27')]);_0x4b731a['attributes']=_[_0xbd32('0x2a')](_0x3244bf['model'],qs[_0xbd32('0x2b')](_0x2c2871[_0xbd32('0x27')][_0xbd32('0x2b')]));_0x4b731a[_0xbd32('0x2c')]=_0x4b731a[_0xbd32('0x2c')][_0xbd32('0x42')]?_0x4b731a[_0xbd32('0x2c')]:_0x3244bf[_0xbd32('0x24')];if(_0x2c2871[_0xbd32('0x27')][_0xbd32('0x3a')]){_0x4b731a['include']=[{'all':!![]}];}_0x4b731a=_[_0xbd32('0x35')]({},_0x4b731a,_0x2c2871[_0xbd32('0x43')]);return db[_0xbd32('0x3c')][_0xbd32('0x44')](_0x4b731a)[_0xbd32('0x1e')](handleEntityNotFound(_0x2710f1,null))[_0xbd32('0x1e')](respondWithResult(_0x2710f1,null))[_0xbd32('0x3f')](handleError(_0x2710f1,null));};exports[_0xbd32('0x45')]=function(_0x33917d,_0x3c4bc0){return db[_0xbd32('0x3c')][_0xbd32('0x45')](_0x33917d[_0xbd32('0x46')],{})[_0xbd32('0x1e')](respondWithResult(_0x3c4bc0,0xc9))[_0xbd32('0x3f')](handleError(_0x3c4bc0,null));};exports[_0xbd32('0x1d')]=function(_0x5045b7,_0x4b4816){if(_0x5045b7[_0xbd32('0x46')]['id']){delete _0x5045b7[_0xbd32('0x46')]['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x5045b7['params']['id']}})[_0xbd32('0x1e')](handleEntityNotFound(_0x4b4816,null))[_0xbd32('0x1e')](saveUpdates(_0x5045b7[_0xbd32('0x46')],null))[_0xbd32('0x1e')](respondWithResult(_0x4b4816,null))[_0xbd32('0x3f')](handleError(_0x4b4816,null));};exports[_0xbd32('0x1f')]=function(_0x5bd0bb,_0x258ff3){return db[_0xbd32('0x3c')]['find']({'where':{'id':_0x5bd0bb[_0xbd32('0x41')]['id']}})['then'](handleEntityNotFound(_0x258ff3,null))['then'](removeEntity(_0x258ff3,null))[_0xbd32('0x3f')](handleError(_0x258ff3,null));};
\ No newline at end of file
+var _0xde9e=['api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','rawAttributes','model','keys','query','dateStart','dateEnd','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','add','day','filter','merge','map','type','VIRTUAL','options','count','includeAll','include','VoiceTransferReport','rows','params','catch','create','body','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x277025,_0x29b4f0){var _0x232beb=function(_0x49f5aa){while(--_0x49f5aa){_0x277025['push'](_0x277025['shift']());}};_0x232beb(++_0x29b4f0);}(_0xde9e,0x1ae));var _0xede9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xde9e[_0x3dd15e];return _0x231fd0;};'use strict';var pdf=require(_0xede9('0x0'));var emlformat=require(_0xede9('0x1'));var rimraf=require(_0xede9('0x2'));var zipdir=require(_0xede9('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0xede9('0x4'));var moment=require(_0xede9('0x5'));var BPromise=require(_0xede9('0x6'));var Mustache=require(_0xede9('0x7'));var util=require(_0xede9('0x8'));var path=require(_0xede9('0x9'));var sox=require(_0xede9('0xa'));var csv=require('to-csv');var ejs=require(_0xede9('0xb'));var fs=require('fs');var _=require('lodash');var squel=require(_0xede9('0xc'));var crypto=require(_0xede9('0xd'));var jsforce=require(_0xede9('0xe'));var deskjs=require(_0xede9('0xf'));var toCsv=require(_0xede9('0x10'));var querystring=require(_0xede9('0x11'));var Papa=require(_0xede9('0x12'));var Redis=require(_0xede9('0x13'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xede9('0x14'));var utils=require(_0xede9('0x15'));var config=require(_0xede9('0x16'));var db=require(_0xede9('0x17'))['db'];function respondWithStatusCode(_0x2605d9,_0x2cdbad){_0x2cdbad=_0x2cdbad||0xcc;return function(_0x35a262){if(_0x35a262){return _0x2605d9[_0xede9('0x18')](_0x2cdbad);}return _0x2605d9['status'](_0x2cdbad)[_0xede9('0x19')]();};}function respondWithResult(_0x232803,_0x5bdee6){_0x5bdee6=_0x5bdee6||0xc8;return function(_0x5dc44e){if(_0x5dc44e){return _0x232803[_0xede9('0x1a')](_0x5bdee6)['json'](_0x5dc44e);}};}function respondWithFilteredResult(_0x5366f0,_0x248349){return function(_0x2eb957){if(_0x2eb957){var _0x1f858d=_0x2eb957['count'],_0x404783=_0x248349['offset'],_0x577a3f=_0x248349[_0xede9('0x1b')]+_0x248349[_0xede9('0x1c')],_0x32ab9b;if(_0x577a3f>=_0x1f858d){_0x577a3f=_0x1f858d;_0x32ab9b=0xc8;}else{_0x32ab9b=0xce;}_0x5366f0[_0xede9('0x1a')](_0x32ab9b);return _0x5366f0[_0xede9('0x1d')](_0xede9('0x1e'),_0x404783+'-'+_0x577a3f+'/'+_0x1f858d)[_0xede9('0x1f')](_0x2eb957);}return null;};}function patchUpdates(_0x545eed){return function(_0x30590d){try{jsonpatch[_0xede9('0x20')](_0x30590d,_0x545eed,!![]);}catch(_0x2cb5ce){return BPromise[_0xede9('0x21')](_0x2cb5ce);}return _0x30590d[_0xede9('0x22')]();};}function saveUpdates(_0x4e3aeb,_0x7659c5){return function(_0x56696a){if(_0x56696a){return _0x56696a[_0xede9('0x23')](_0x4e3aeb)[_0xede9('0x24')](function(_0x4861e1){return _0x4861e1;});}return null;};}function removeEntity(_0x345daf,_0x4f1b5a){return function(_0x400dd3){if(_0x400dd3){return _0x400dd3[_0xede9('0x25')]()['then'](function(){_0x345daf[_0xede9('0x1a')](0xcc)[_0xede9('0x19')]();});}};}function handleEntityNotFound(_0x5802cf,_0x5ee0fa){return function(_0x23132b){if(!_0x23132b){_0x5802cf[_0xede9('0x18')](0x194);}return _0x23132b;};}function handleError(_0x4301b0,_0x294b5c){_0x294b5c=_0x294b5c||0x1f4;return function(_0x5b0976){logger[_0xede9('0x26')](_0x5b0976[_0xede9('0x27')]);if(_0x5b0976[_0xede9('0x28')]){delete _0x5b0976[_0xede9('0x28')];}_0x4301b0[_0xede9('0x1a')](_0x294b5c)['send'](_0x5b0976);};}exports[_0xede9('0x29')]=function(_0x4ae823,_0x5d1af4){var _0x1c0dd3={},_0x3acadd={},_0x528731={'count':0x0,'rows':[]};var _0x24001e=db['VoiceTransferReport'][_0xede9('0x2a')];_0x3acadd[_0xede9('0x2b')]=_[_0xede9('0x2c')](_0x24001e);var _0x474ee3={'dateStart':_0x4ae823[_0xede9('0x2d')][_0xede9('0x2e')],'dateEnd':_0x4ae823[_0xede9('0x2d')][_0xede9('0x2f')]};delete _0x4ae823[_0xede9('0x2d')][_0xede9('0x2e')];delete _0x4ae823[_0xede9('0x2d')]['dateEnd'];_0x3acadd[_0xede9('0x2d')]=_[_0xede9('0x2c')](_0x4ae823[_0xede9('0x2d')]);_0x3acadd[_0xede9('0x30')]=_[_0xede9('0x31')](_0x3acadd[_0xede9('0x2b')],_0x3acadd['query']);_0x1c0dd3[_0xede9('0x32')]=_['intersection'](_0x3acadd[_0xede9('0x2b')],qs[_0xede9('0x33')](_0x4ae823['query']['fields']));_0x1c0dd3[_0xede9('0x32')]=_0x1c0dd3[_0xede9('0x32')][_0xede9('0x34')]?_0x1c0dd3[_0xede9('0x32')]:_0x3acadd[_0xede9('0x2b')];if(!_0x4ae823['query'][_0xede9('0x35')](_0xede9('0x36'))){_0x1c0dd3['limit']=qs[_0xede9('0x1c')](_0x4ae823[_0xede9('0x2d')][_0xede9('0x1c')]);_0x1c0dd3[_0xede9('0x1b')]=qs[_0xede9('0x1b')](_0x4ae823[_0xede9('0x2d')][_0xede9('0x1b')]);}_0x1c0dd3['order']=qs[_0xede9('0x37')](_0x4ae823[_0xede9('0x2d')][_0xede9('0x37')]);_0x1c0dd3[_0xede9('0x38')]=qs[_0xede9('0x30')](_[_0xede9('0x39')](_0x4ae823[_0xede9('0x2d')],_0x3acadd['filters']));if(_0x474ee3['dateStart']){if(_0x474ee3[_0xede9('0x2f')]){_0x474ee3[_0xede9('0x2f')]=moment(_0x474ee3[_0xede9('0x2f')])[_0xede9('0x3a')](0x1,'day');}else{_0x474ee3[_0xede9('0x2f')]=moment(_0x474ee3['dateStart'])[_0xede9('0x3a')](0x1,_0xede9('0x3b'));}_['merge'](_0x1c0dd3[_0xede9('0x38')],{'createdAt':{'$gte':_0x474ee3[_0xede9('0x2e')],'$lte':_0x474ee3[_0xede9('0x2f')]}});}if(_0x4ae823['query'][_0xede9('0x3c')]){_0x1c0dd3[_0xede9('0x38')]=_[_0xede9('0x3d')](_0x1c0dd3[_0xede9('0x38')],{'$or':_[_0xede9('0x3e')](_0x24001e,function(_0x5b64b5){if(_0x5b64b5[_0xede9('0x3f')]['key']!==_0xede9('0x40')){var _0xf2acc1={};_0xf2acc1[_0x5b64b5['field']]={'$like':'%'+_0x4ae823[_0xede9('0x2d')][_0xede9('0x3c')]+'%'};return _0xf2acc1;}})});}_0x1c0dd3=_[_0xede9('0x3d')]({},_0x1c0dd3,_0x4ae823[_0xede9('0x41')]);var _0x21559b={'where':_0x1c0dd3[_0xede9('0x38')]};return db['VoiceTransferReport'][_0xede9('0x42')](_0x21559b)[_0xede9('0x24')](function(_0x2d1982){_0x528731['count']=_0x2d1982;if(_0x4ae823['query'][_0xede9('0x43')]){_0x1c0dd3[_0xede9('0x44')]=[{'all':!![]}];}return db[_0xede9('0x45')]['findAll'](_0x1c0dd3);})[_0xede9('0x24')](function(_0x1918ea){_0x528731[_0xede9('0x46')]=_0x1918ea;return _0x528731;})[_0xede9('0x24')](respondWithFilteredResult(_0x5d1af4,_0x1c0dd3))['catch'](handleError(_0x5d1af4,null));};exports['show']=function(_0x410617,_0x12c2eb){var _0x20d496={'raw':!![],'where':{'id':_0x410617[_0xede9('0x47')]['id']}},_0x166753={};_0x166753[_0xede9('0x2b')]=_[_0xede9('0x2c')](db[_0xede9('0x45')][_0xede9('0x2a')]);_0x166753[_0xede9('0x2d')]=_[_0xede9('0x2c')](_0x410617['query']);_0x166753[_0xede9('0x30')]=_[_0xede9('0x31')](_0x166753[_0xede9('0x2b')],_0x166753['query']);_0x20d496[_0xede9('0x32')]=_[_0xede9('0x31')](_0x166753[_0xede9('0x2b')],qs[_0xede9('0x33')](_0x410617[_0xede9('0x2d')][_0xede9('0x33')]));_0x20d496[_0xede9('0x32')]=_0x20d496['attributes'][_0xede9('0x34')]?_0x20d496[_0xede9('0x32')]:_0x166753[_0xede9('0x2b')];if(_0x410617[_0xede9('0x2d')][_0xede9('0x43')]){_0x20d496[_0xede9('0x44')]=[{'all':!![]}];}_0x20d496=_[_0xede9('0x3d')]({},_0x20d496,_0x410617['options']);return db[_0xede9('0x45')]['find'](_0x20d496)[_0xede9('0x24')](handleEntityNotFound(_0x12c2eb,null))[_0xede9('0x24')](respondWithResult(_0x12c2eb,null))[_0xede9('0x48')](handleError(_0x12c2eb,null));};exports[_0xede9('0x49')]=function(_0x3da5ca,_0x1859a7){return db[_0xede9('0x45')][_0xede9('0x49')](_0x3da5ca[_0xede9('0x4a')],{})[_0xede9('0x24')](respondWithResult(_0x1859a7,0xc9))['catch'](handleError(_0x1859a7,null));};exports[_0xede9('0x23')]=function(_0x26c91a,_0x46dfdd){if(_0x26c91a[_0xede9('0x4a')]['id']){delete _0x26c91a['body']['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x26c91a[_0xede9('0x47')]['id']}})[_0xede9('0x24')](handleEntityNotFound(_0x46dfdd,null))[_0xede9('0x24')](saveUpdates(_0x26c91a[_0xede9('0x4a')],null))[_0xede9('0x24')](respondWithResult(_0x46dfdd,null))[_0xede9('0x48')](handleError(_0x46dfdd,null));};exports['destroy']=function(_0x55c0d7,_0x241ebc){return db[_0xede9('0x45')]['find']({'where':{'id':_0x55c0d7['params']['id']}})[_0xede9('0x24')](handleEntityNotFound(_0x241ebc,null))['then'](removeEntity(_0x241ebc,null))[_0xede9('0x48')](handleError(_0x241ebc,null));};
\ No newline at end of file
index 1690bfb..a000f08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf36d=['define','lodash','util','moment','bluebird','./voiceTransferReport.attributes'];(function(_0x3c9952,_0x49b183){var _0x4ca178=function(_0x3188d0){while(--_0x3188d0){_0x3c9952['push'](_0x3c9952['shift']());}};_0x4ca178(++_0x49b183);}(_0xf36d,0xa9));var _0xdf36=function(_0x26b8b5,_0xf5c2c1){_0x26b8b5=_0x26b8b5-0x0;var _0x2150a9=_0xf36d[_0x26b8b5];return _0x2150a9;};'use strict';var _=require(_0xdf36('0x0'));var util=require(_0xdf36('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xdf36('0x2'));var BPromise=require(_0xdf36('0x3'));var rp=require('request-promise');var attributes=require(_0xdf36('0x4'));module['exports']=function(_0x1a0b66,_0x3fdd9d){return _0x1a0b66[_0xdf36('0x5')]('VoiceTransferReport',attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde52=['api','moment','bluebird','request-promise','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','lodash','util','../../config/logger'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xde52,0x110));var _0x2de5=function(_0x11f1f4,_0x189cf3){_0x11f1f4=_0x11f1f4-0x0;var _0x6d3dec=_0xde52[_0x11f1f4];return _0x6d3dec;};'use strict';var _=require(_0x2de5('0x0'));var util=require(_0x2de5('0x1'));var logger=require(_0x2de5('0x2'))(_0x2de5('0x3'));var moment=require(_0x2de5('0x4'));var BPromise=require(_0x2de5('0x5'));var rp=require(_0x2de5('0x6'));var attributes=require(_0x2de5('0x7'));module[_0x2de5('0x8')]=function(_0x6fd984,_0x2f2893){return _0x6fd984[_0x2de5('0x9')](_0x2de5('0xa'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 59790cf..d7f04de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dbc=['message','catch','CreateVoiceTransferReport','VoiceTransferReport','body','options','raw','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1d816f,_0xe3dfe){var _0x8fd161=function(_0x418cff){while(--_0x418cff){_0x1d816f['push'](_0x1d816f['shift']());}};_0x8fd161(++_0xe3dfe);}(_0x2dbc,0xfa));var _0xc2db=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x2dbc[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0xc2db('0x0'));var util=require(_0xc2db('0x1'));var moment=require('moment');var BPromise=require(_0xc2db('0x2'));var rs=require(_0xc2db('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc2db('0x4'));var logger=require(_0xc2db('0x5'))(_0xc2db('0x6'));var config=require(_0xc2db('0x7'));var jayson=require(_0xc2db('0x8'));var client=jayson[_0xc2db('0x9')][_0xc2db('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xceaf,_0x4fe796,_0x443bfb){return new BPromise(function(_0x4f1535,_0xf5885e){return client['request'](_0xceaf,_0x443bfb)[_0xc2db('0xb')](function(_0x2a37a0){logger[_0xc2db('0xc')](_0xc2db('0xd'),_0x4fe796,_0xc2db('0xe'));logger[_0xc2db('0xf')](_0xc2db('0x10'),_0x4fe796,_0xc2db('0xe'),JSON[_0xc2db('0x11')](_0x2a37a0));if(_0x2a37a0[_0xc2db('0x12')]){if(_0x2a37a0[_0xc2db('0x12')][_0xc2db('0x13')]===0x1f4){logger[_0xc2db('0x12')](_0xc2db('0xd'),_0x4fe796,_0x2a37a0[_0xc2db('0x12')][_0xc2db('0x14')]);return _0xf5885e(_0x2a37a0['error'][_0xc2db('0x14')]);}logger[_0xc2db('0x12')](_0xc2db('0xd'),_0x4fe796,_0x2a37a0[_0xc2db('0x12')][_0xc2db('0x14')]);return _0x4f1535(_0x2a37a0['error'][_0xc2db('0x14')]);}else{logger[_0xc2db('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x4fe796,_0xc2db('0xe'));_0x4f1535(_0x2a37a0['result'][_0xc2db('0x14')]);}})[_0xc2db('0x15')](function(_0x593ad4){logger['error'](_0xc2db('0xd'),_0x4fe796,_0x593ad4);_0xf5885e(_0x593ad4);});});}exports[_0xc2db('0x16')]=function(_0x2654b4){var _0x5c8b9c=this;return new Promise(function(_0x395514,_0x334dfe){return db[_0xc2db('0x17')]['create'](_0x2654b4[_0xc2db('0x18')],{'raw':_0x2654b4[_0xc2db('0x19')]?_0x2654b4[_0xc2db('0x19')][_0xc2db('0x1a')]===undefined?!![]:![]:!![]})[_0xc2db('0xb')](function(_0x13c9c3){logger[_0xc2db('0xc')](_0xc2db('0x16'),_0x2654b4);logger['debug'](_0xc2db('0x16'),_0x2654b4,JSON[_0xc2db('0x11')](_0x13c9c3));_0x395514(_0x13c9c3);})[_0xc2db('0x15')](function(_0x45a165){logger[_0xc2db('0x12')]('CreateVoiceTransferReport',_0x45a165[_0xc2db('0x14')],_0x2654b4);_0x334dfe(_0x5c8b9c['error'](0x1f4,_0x45a165[_0xc2db('0x14')]));});});};
\ No newline at end of file
+var _0xc4a2=['../../config/environment','client','http','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','then','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x16bce9,_0x6d3fab){var _0xa0f8c5=function(_0x1cce18){while(--_0x1cce18){_0x16bce9['push'](_0x16bce9['shift']());}};_0xa0f8c5(++_0x6d3fab);}(_0xc4a2,0x13c));var _0x2c4a=function(_0x49c907,_0x1cd620){_0x49c907=_0x49c907-0x0;var _0x314597=_0xc4a2[_0x49c907];return _0x314597;};'use strict';var _=require(_0x2c4a('0x0'));var util=require(_0x2c4a('0x1'));var moment=require(_0x2c4a('0x2'));var BPromise=require(_0x2c4a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2c4a('0x4'))['db'];var utils=require(_0x2c4a('0x5'));var logger=require(_0x2c4a('0x6'))(_0x2c4a('0x7'));var config=require(_0x2c4a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2c4a('0x9')][_0x2c4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d17b3,_0x23d018,_0x2b70e1){return new BPromise(function(_0x4ef844,_0x5862f3){return client['request'](_0x1d17b3,_0x2b70e1)['then'](function(_0x45616c){logger[_0x2c4a('0xb')](_0x2c4a('0xc'),_0x23d018,_0x2c4a('0xd'));logger[_0x2c4a('0xe')](_0x2c4a('0xf'),_0x23d018,_0x2c4a('0xd'),JSON[_0x2c4a('0x10')](_0x45616c));if(_0x45616c['error']){if(_0x45616c[_0x2c4a('0x11')]['code']===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x23d018,_0x45616c[_0x2c4a('0x11')]['message']);return _0x5862f3(_0x45616c[_0x2c4a('0x11')][_0x2c4a('0x12')]);}logger[_0x2c4a('0x11')](_0x2c4a('0xc'),_0x23d018,_0x45616c[_0x2c4a('0x11')][_0x2c4a('0x12')]);return _0x4ef844(_0x45616c[_0x2c4a('0x11')][_0x2c4a('0x12')]);}else{logger[_0x2c4a('0xb')]('VoiceTransferReport,\x20%s,\x20%s',_0x23d018,_0x2c4a('0xd'));_0x4ef844(_0x45616c['result'][_0x2c4a('0x12')]);}})[_0x2c4a('0x13')](function(_0x39ae58){logger[_0x2c4a('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x23d018,_0x39ae58);_0x5862f3(_0x39ae58);});});}exports[_0x2c4a('0x14')]=function(_0x3d1ea5){var _0x305639=this;return new Promise(function(_0x1e1c38,_0x58fb53){return db[_0x2c4a('0x15')][_0x2c4a('0x16')](_0x3d1ea5[_0x2c4a('0x17')],{'raw':_0x3d1ea5[_0x2c4a('0x18')]?_0x3d1ea5[_0x2c4a('0x18')][_0x2c4a('0x19')]===undefined?!![]:![]:!![]})[_0x2c4a('0x1a')](function(_0x4a7685){logger[_0x2c4a('0xb')](_0x2c4a('0x14'),_0x3d1ea5);logger[_0x2c4a('0xe')]('CreateVoiceTransferReport',_0x3d1ea5,JSON[_0x2c4a('0x10')](_0x4a7685));_0x1e1c38(_0x4a7685);})['catch'](function(_0x39e0be){logger[_0x2c4a('0x11')]('CreateVoiceTransferReport',_0x39e0be[_0x2c4a('0x12')],_0x3d1ea5);_0x58fb53(_0x305639['error'](0x1f4,_0x39e0be[_0x2c4a('0x12')]));});});};
\ No newline at end of file
index 547a2c7..8b60356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd096=['./config/schedule/chat','sequelize','then','listen','info','start','Online\x20apps:','filter','online','name','Offline\x20apps:','map','status','None','./config/seedDB','default','./config/license','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule'];(function(_0x40686f,_0x3f24bf){var _0x53b21c=function(_0x3f2829){while(--_0x3f2829){_0x40686f['push'](_0x40686f['shift']());}};_0x53b21c(++_0x3f24bf);}(_0xd096,0x1e8));var _0x6d09=function(_0x1a5e33,_0x514799){_0x1a5e33=_0x1a5e33-0x0;var _0x496316=_0xd096[_0x1a5e33];return _0x496316;};'use strict';var _=require('lodash');var mysqldb=require('./mysqldb');var rpc=require('./rpc');var config=require(_0x6d09('0x0'));var logger=require(_0x6d09('0x1'))(_0x6d09('0x2'));var pm2=require(_0x6d09('0x3'));var pm2Config=require(_0x6d09('0x4'));var schedule=require(_0x6d09('0x5'));var chat=require(_0x6d09('0x6'));function main(){return mysqldb['db'][_0x6d09('0x7')]['sync']()[_0x6d09('0x8')](function(){return rpc[_0x6d09('0x9')]();})[_0x6d09('0x8')](function(_0x4f14ac){logger[_0x6d09('0xa')](_0x4f14ac);return chat[_0x6d09('0xb')]();})[_0x6d09('0x8')](function(){return schedule['start']();})['then'](function(_0x47fd71){logger[_0x6d09('0xa')](_0x47fd71);return pm2['start'](pm2Config);})[_0x6d09('0x8')](function(_0x491e26){logger['info'](_0x6d09('0xc'),_['map'](_[_0x6d09('0xd')](_0x491e26,{'status':_0x6d09('0xe')}),_0x6d09('0xf'))['join']());logger['info'](_0x6d09('0x10'),_[_0x6d09('0x11')](_[_0x6d09('0xd')](_0x491e26,function(_0x159a62){return _0x159a62[_0x6d09('0x12')]!==_0x6d09('0xe');}),_0x6d09('0xf'))['join']()||_0x6d09('0x13'));config['seedDB']&&require(_0x6d09('0x14'))[_0x6d09('0x15')]();require(_0x6d09('0x16'))[_0x6d09('0x15')]();})[_0x6d09('0x17')](function(_0x3032ec){logger[_0x6d09('0x18')](_0x6d09('0x19'),_0x3032ec);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0x7d0e=['./config/pm2/config','./config/schedule','./config/schedule/chat','sequelize','sync','listen','start','then','info','filter','online','name','join','status','None','default','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/environment','app','./config/pm2'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x7d0e,0x18a));var _0xe7d0=function(_0x492743,_0x2660fa){_0x492743=_0x492743-0x0;var _0x354816=_0x7d0e[_0x492743];return _0x354816;};'use strict';var _=require(_0xe7d0('0x0'));var mysqldb=require(_0xe7d0('0x1'));var rpc=require(_0xe7d0('0x2'));var config=require(_0xe7d0('0x3'));var logger=require('./config/logger')(_0xe7d0('0x4'));var pm2=require(_0xe7d0('0x5'));var pm2Config=require(_0xe7d0('0x6'));var schedule=require(_0xe7d0('0x7'));var chat=require(_0xe7d0('0x8'));function main(){return mysqldb['db'][_0xe7d0('0x9')][_0xe7d0('0xa')]()['then'](function(){return rpc[_0xe7d0('0xb')]();})['then'](function(_0x5bd01e){logger['info'](_0x5bd01e);return chat[_0xe7d0('0xc')]();})[_0xe7d0('0xd')](function(){return schedule[_0xe7d0('0xc')]();})[_0xe7d0('0xd')](function(_0x4c9050){logger[_0xe7d0('0xe')](_0x4c9050);return pm2[_0xe7d0('0xc')](pm2Config);})['then'](function(_0x5bdd22){logger[_0xe7d0('0xe')]('Online\x20apps:',_['map'](_[_0xe7d0('0xf')](_0x5bdd22,{'status':_0xe7d0('0x10')}),_0xe7d0('0x11'))[_0xe7d0('0x12')]());logger[_0xe7d0('0xe')]('Offline\x20apps:',_['map'](_[_0xe7d0('0xf')](_0x5bdd22,function(_0x592b1f){return _0x592b1f[_0xe7d0('0x13')]!==_0xe7d0('0x10');}),'name')['join']()||_0xe7d0('0x14'));config['seedDB']&&require('./config/seedDB')[_0xe7d0('0x15')]();require('./config/license')[_0xe7d0('0x15')]();})['catch'](function(_0x21da98){logger[_0xe7d0('0x16')](_0xe7d0('0x17'),_0x21da98);process[_0xe7d0('0x18')](0x1);});}main();
\ No newline at end of file
index 118fb60..1f5fc4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xace2=['json','Unmanaged.','Forbidden.','catch','headers','authorization','startsWith','Basic','name','then','authenticate','pass','status','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format.','isAuthenticated','../../config/license/util','getLicense','update','Forbidden','canUpdate','signToken','hasRole','indexOf','userRoles','cookie','motion.user','stringify','pick','redirect','/dashboards/general','../../mysqldb','../../config/environment','express-jwt','composable-middleware','secrets','session','role','fullname','internal','email','userpic','permissions','chatPause','mailPause','faxPause','smsPause','openchannelPause','showWebBar','phoneBarRemoteControlPort','phoneBarRemoteControl','userProfileId','isChatInteractionAuthorized','use','user','findOne','params','closed','disposition','unmanaged'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xace2,0x18e));var _0x2ace=function(_0x369534,_0x5557c4){_0x369534=_0x369534-0x0;var _0x524bf9=_0xace2[_0x369534];return _0x524bf9;};'use strict';var db=require(_0x2ace('0x0'))['db'];var config=require(_0x2ace('0x1'));var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require(_0x2ace('0x2'));var compose=require(_0x2ace('0x3'));var basicAuth=require('basic-auth');var ipaddr=require('ipaddr.js');var validateJwt=expressJwt({'secret':config[_0x2ace('0x4')][_0x2ace('0x5')]});var userAttributes=['id',_0x2ace('0x6'),_0x2ace('0x7'),'name',_0x2ace('0x8'),_0x2ace('0x9'),_0x2ace('0xa'),_0x2ace('0xb'),'voicePause',_0x2ace('0xc'),_0x2ace('0xd'),_0x2ace('0xe'),_0x2ace('0xf'),_0x2ace('0x10'),'pauseType',_0x2ace('0x11'),_0x2ace('0x12'),_0x2ace('0x13'),'interface',_0x2ace('0x14')];exports[_0x2ace('0x15')]=function(){return isAuthenticated(!![])[_0x2ace('0x16')](function(_0x1031e4,_0x3846a3,_0x25c270){if(_0x1031e4[_0x2ace('0x17')]){_0x25c270();}else{return db['ChatInteraction'][_0x2ace('0x18')]({'where':{'id':_0x1031e4[_0x2ace('0x19')]['id']},'attributes':['id',_0x2ace('0x1a'),_0x2ace('0x1b')],'raw':!![]})['then'](function(_0x56ffd2){if(_0x56ffd2&&_0x56ffd2[_0x2ace('0x1a')]){return _0x3846a3['status'](_0x56ffd2[_0x2ace('0x1b')]===_0x2ace('0x1c')?0x195:0x193)[_0x2ace('0x1d')]({'message':_0x56ffd2[_0x2ace('0x1b')]===_0x2ace('0x1c')?_0x2ace('0x1e'):_0x2ace('0x1f')});}else{_0x25c270();}})[_0x2ace('0x20')](function(_0x16eb6f){_0x25c270(_0x16eb6f);});}});};function isAuthenticated(_0x3eabfd){return compose()[_0x2ace('0x16')](function(_0x6c1e0,_0x5b2a81,_0x355e5b){if(_0x6c1e0[_0x2ace('0x21')][_0x2ace('0x22')]){if(_[_0x2ace('0x23')](_0x6c1e0[_0x2ace('0x21')][_0x2ace('0x22')],_0x2ace('0x24'))){var _0x1a296d=basicAuth(_0x6c1e0);db['User']['find']({'where':{'name':_0x1a296d[_0x2ace('0x25')]}})[_0x2ace('0x26')](function(_0xdc5726){if(!_0xdc5726||!_0xdc5726[_0x2ace('0x27')](_0x1a296d[_0x2ace('0x28')])){return _0x5b2a81[_0x2ace('0x29')](0x191)['json']({'message':_0x2ace('0x2a')});}_0x6c1e0['user']={'id':_0xdc5726['id']};_0x355e5b();})[_0x2ace('0x20')](function(_0x58c773){_0x355e5b(_0x58c773);});}else if(_[_0x2ace('0x23')](_0x6c1e0[_0x2ace('0x21')]['authorization'],_0x2ace('0x2b'))){validateJwt(_0x6c1e0,_0x5b2a81,_0x355e5b);}}else{if(_0x3eabfd){_0x355e5b();}else{return _0x5b2a81[_0x2ace('0x29')](0x191)[_0x2ace('0x1d')]({'message':_0x2ace('0x2c')});}}})[_0x2ace('0x16')](function(_0x4e1cf7,_0x402614,_0x2c6d32){if(_0x4e1cf7['user']){db['User']['find']({'where':{'id':_0x4e1cf7[_0x2ace('0x17')]['id']},'attributes':userAttributes})[_0x2ace('0x26')](function(_0x2109f7){if(!_0x2109f7){return _0x402614[_0x2ace('0x29')](0x194)['json']({'message':'User\x20not\x20found.'});}_0x4e1cf7[_0x2ace('0x17')]=_0x2109f7;_0x2c6d32();})[_0x2ace('0x20')](function(_0x189de1){_0x2c6d32(_0x189de1);});}else if(_0x3eabfd){_0x2c6d32();}else{return _0x402614['status'](0x194)[_0x2ace('0x1d')]({'message':'User\x20object\x20not\x20found.'});}});}exports[_0x2ace('0x2d')]=isAuthenticated;function canUpdate(){return compose()[_0x2ace('0x16')](function(_0x43a2e6,_0x51cf34,_0x432cb5){return require(_0x2ace('0x2e'))[_0x2ace('0x2f')]()['then'](function(_0x31594d){if(_0x31594d[_0x2ace('0x30')]){_0x432cb5();}else{return _0x51cf34[_0x2ace('0x29')](0x193)[_0x2ace('0x1d')]({'message':_0x2ace('0x31')});}})[_0x2ace('0x20')](function(_0x245a54){_0x432cb5(_0x245a54);});});}exports[_0x2ace('0x32')]=canUpdate;function signToken(_0x547008,_0x51db06){return jwt['sign']({'id':_0x547008,'role':_0x51db06},config[_0x2ace('0x4')]['session'],{'expiresIn':0x15180});}exports[_0x2ace('0x33')]=signToken;exports[_0x2ace('0x34')]=function(_0x29de9e){if(!_0x29de9e){throw new Error('Required\x20role\x20needs\x20to\x20be\x20set');}return compose()[_0x2ace('0x16')](isAuthenticated())[_0x2ace('0x16')](function meetsRequirements(_0x2e0051,_0x526368,_0x58690c){if(config['userRoles'][_0x2ace('0x35')](_0x2e0051['user'][_0x2ace('0x6')])>=config[_0x2ace('0x36')][_0x2ace('0x35')](_0x29de9e)){return _0x58690c();}else{return _0x526368[_0x2ace('0x29')](0x193)[_0x2ace('0x1d')]({'message':_0x2ace('0x31')});}});};exports['setTokenCookie']=function(_0x36d4db,_0x134456){if(!_0x36d4db['user']){return _0x134456[_0x2ace('0x29')](0x194)[_0x2ace('0x1d')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x1902ac=signToken(_0x36d4db[_0x2ace('0x17')]['id'],_0x36d4db['user']['role']);_0x134456['cookie']('motion.token',_0x1902ac);_0x134456[_0x2ace('0x37')](_0x2ace('0x38'),JSON[_0x2ace('0x39')](_[_0x2ace('0x3a')](_0x36d4db[_0x2ace('0x17')],userAttributes)));_0x134456[_0x2ace('0x3b')](_0x2ace('0x3c'));};
\ No newline at end of file
+var _0xe45d=['name','internal','voicePause','chatPause','faxPause','smsPause','pauseType','showWebBar','interface','userProfileId','isChatInteractionAuthorized','use','ChatInteraction','findOne','params','closed','disposition','json','unmanaged','Unmanaged.','Forbidden.','headers','startsWith','authorization','Basic','User','find','then','authenticate','status','user','catch','Bearer','Unknown\x20authorization\x20format.','User\x20not\x20found.','User\x20object\x20not\x20found.','isAuthenticated','getLicense','update','Forbidden','canUpdate','sign','secrets','session','signToken','hasRole','Required\x20role\x20needs\x20to\x20be\x20set','indexOf','userRoles','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','motion.user','stringify','pick','/dashboards/general','../../mysqldb','jsonwebtoken','express-jwt','composable-middleware','basic-auth','ipaddr.js','role','fullname'];(function(_0x6f63de,_0x132d5f){var _0x100a9f=function(_0x38e58c){while(--_0x38e58c){_0x6f63de['push'](_0x6f63de['shift']());}};_0x100a9f(++_0x132d5f);}(_0xe45d,0xfc));var _0xde45=function(_0x341fd6,_0x9d0e71){_0x341fd6=_0x341fd6-0x0;var _0x3755d3=_0xe45d[_0x341fd6];return _0x3755d3;};'use strict';var db=require(_0xde45('0x0'))['db'];var config=require('../../config/environment');var _=require('lodash');var jwt=require(_0xde45('0x1'));var expressJwt=require(_0xde45('0x2'));var compose=require(_0xde45('0x3'));var basicAuth=require(_0xde45('0x4'));var ipaddr=require(_0xde45('0x5'));var validateJwt=expressJwt({'secret':config['secrets']['session']});var userAttributes=['id',_0xde45('0x6'),_0xde45('0x7'),_0xde45('0x8'),_0xde45('0x9'),'email','userpic','permissions',_0xde45('0xa'),_0xde45('0xb'),'mailPause',_0xde45('0xc'),_0xde45('0xd'),'openchannelPause',_0xde45('0xe'),_0xde45('0xf'),'phoneBarRemoteControlPort','phoneBarRemoteControl',_0xde45('0x10'),_0xde45('0x11')];exports[_0xde45('0x12')]=function(){return isAuthenticated(!![])[_0xde45('0x13')](function(_0x519ffc,_0xc3f2ec,_0x181d36){if(_0x519ffc['user']){_0x181d36();}else{return db[_0xde45('0x14')][_0xde45('0x15')]({'where':{'id':_0x519ffc[_0xde45('0x16')]['id']},'attributes':['id',_0xde45('0x17'),_0xde45('0x18')],'raw':!![]})['then'](function(_0x3e6503){if(_0x3e6503&&_0x3e6503[_0xde45('0x17')]){return _0xc3f2ec['status'](_0x3e6503[_0xde45('0x18')]==='unmanaged'?0x195:0x193)[_0xde45('0x19')]({'message':_0x3e6503[_0xde45('0x18')]===_0xde45('0x1a')?_0xde45('0x1b'):_0xde45('0x1c')});}else{_0x181d36();}})['catch'](function(_0x191dc4){_0x181d36(_0x191dc4);});}});};function isAuthenticated(_0x30fb1b){return compose()['use'](function(_0x629308,_0x320d68,_0x6e999b){if(_0x629308[_0xde45('0x1d')]['authorization']){if(_[_0xde45('0x1e')](_0x629308[_0xde45('0x1d')][_0xde45('0x1f')],_0xde45('0x20'))){var _0x320074=basicAuth(_0x629308);db[_0xde45('0x21')][_0xde45('0x22')]({'where':{'name':_0x320074[_0xde45('0x8')]}})[_0xde45('0x23')](function(_0x4f9457){if(!_0x4f9457||!_0x4f9457[_0xde45('0x24')](_0x320074['pass'])){return _0x320d68[_0xde45('0x25')](0x191)[_0xde45('0x19')]({'message':'Wrong\x20credentials.'});}_0x629308[_0xde45('0x26')]={'id':_0x4f9457['id']};_0x6e999b();})[_0xde45('0x27')](function(_0x5307b3){_0x6e999b(_0x5307b3);});}else if(_['startsWith'](_0x629308['headers'][_0xde45('0x1f')],_0xde45('0x28'))){validateJwt(_0x629308,_0x320d68,_0x6e999b);}}else{if(_0x30fb1b){_0x6e999b();}else{return _0x320d68[_0xde45('0x25')](0x191)[_0xde45('0x19')]({'message':_0xde45('0x29')});}}})['use'](function(_0x68b0aa,_0x3675b7,_0x4f740d){if(_0x68b0aa[_0xde45('0x26')]){db['User'][_0xde45('0x22')]({'where':{'id':_0x68b0aa['user']['id']},'attributes':userAttributes})[_0xde45('0x23')](function(_0xdc300e){if(!_0xdc300e){return _0x3675b7[_0xde45('0x25')](0x194)[_0xde45('0x19')]({'message':_0xde45('0x2a')});}_0x68b0aa[_0xde45('0x26')]=_0xdc300e;_0x4f740d();})[_0xde45('0x27')](function(_0x5542ff){_0x4f740d(_0x5542ff);});}else if(_0x30fb1b){_0x4f740d();}else{return _0x3675b7['status'](0x194)['json']({'message':_0xde45('0x2b')});}});}exports[_0xde45('0x2c')]=isAuthenticated;function canUpdate(){return compose()[_0xde45('0x13')](function(_0x466bc5,_0x3b3534,_0x3b58b6){return require('../../config/license/util')[_0xde45('0x2d')]()[_0xde45('0x23')](function(_0x31ec3a){if(_0x31ec3a[_0xde45('0x2e')]){_0x3b58b6();}else{return _0x3b3534[_0xde45('0x25')](0x193)[_0xde45('0x19')]({'message':_0xde45('0x2f')});}})[_0xde45('0x27')](function(_0xbbb6b){_0x3b58b6(_0xbbb6b);});});}exports[_0xde45('0x30')]=canUpdate;function signToken(_0x3d5189,_0x565005){return jwt[_0xde45('0x31')]({'id':_0x3d5189,'role':_0x565005},config[_0xde45('0x32')][_0xde45('0x33')],{'expiresIn':0x15180});}exports[_0xde45('0x34')]=signToken;exports[_0xde45('0x35')]=function(_0x44bcb1){if(!_0x44bcb1){throw new Error(_0xde45('0x36'));}return compose()[_0xde45('0x13')](isAuthenticated())['use'](function meetsRequirements(_0x3d5a2b,_0x59616a,_0x74422c){if(config['userRoles'][_0xde45('0x37')](_0x3d5a2b[_0xde45('0x26')][_0xde45('0x6')])>=config[_0xde45('0x38')][_0xde45('0x37')](_0x44bcb1)){return _0x74422c();}else{return _0x59616a[_0xde45('0x25')](0x193)[_0xde45('0x19')]({'message':'Forbidden'});}});};exports[_0xde45('0x39')]=function(_0x1c2df0,_0x4fd5bb){if(!_0x1c2df0[_0xde45('0x26')]){return _0x4fd5bb[_0xde45('0x25')](0x194)[_0xde45('0x19')]({'message':_0xde45('0x3a')});}var _0x438be7=signToken(_0x1c2df0[_0xde45('0x26')]['id'],_0x1c2df0[_0xde45('0x26')][_0xde45('0x6')]);_0x4fd5bb[_0xde45('0x3b')](_0xde45('0x3c'),_0x438be7);_0x4fd5bb['cookie'](_0xde45('0x3d'),JSON[_0xde45('0x3e')](_[_0xde45('0x3f')](_0x1c2df0[_0xde45('0x26')],userAttributes)));_0x4fd5bb['redirect'](_0xde45('0x40'));};
\ No newline at end of file
index ef84abe..5ed23b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb18c=['decryptFile','data','crypto','hasOwnProperty','encryptFile','createReadStream','createWriteStream','createCipher','algorithm','update','end','final','binary','write','close','unlink'];(function(_0x4e40af,_0x5eb687){var _0x563867=function(_0x1e96bf){while(--_0x1e96bf){_0x4e40af['push'](_0x4e40af['shift']());}};_0x563867(++_0x5eb687);}(_0xb18c,0x152));var _0xcb18=function(_0x5218c2,_0x4303ff){_0x5218c2=_0x5218c2-0x0;var _0x3e2c62=_0xb18c[_0x5218c2];return _0x3e2c62;};'use strict';var crypto=require(_0xcb18('0x0'));var fs=require('fs');var BPromise=require('bluebird');var defaultOptions={'algorithm':'aes192'};function combineOptions(_0x9e4883){var _0x53814a={};for(var _0x5b0c49 in defaultOptions){if(defaultOptions[_0xcb18('0x1')](_0x5b0c49)){_0x53814a[_0x5b0c49]=defaultOptions[_0x5b0c49];}}if(_0x9e4883){for(var _0x3a3d66 in _0x9e4883){if(_0x9e4883[_0xcb18('0x1')](_0x3a3d66)){_0x53814a[_0x3a3d66]=_0x9e4883[_0x3a3d66];}}}return _0x53814a;}exports[_0xcb18('0x2')]=function(_0xa9ae6f,_0x5db637,_0x1acbbf,_0x1238b6){return new BPromise(function(_0x2355a8,_0x1aee79){_0x1238b6=combineOptions(_0x1238b6);var _0x3adae1=new Buffer(_0x1acbbf);var _0x4f1d1f=fs[_0xcb18('0x3')](_0xa9ae6f);var _0xedec9d=fs[_0xcb18('0x4')](_0x5db637);var _0x59a00f=crypto[_0xcb18('0x5')](_0x1238b6[_0xcb18('0x6')],_0x3adae1);_0x4f1d1f['on']('data',function(_0x3a399b){var _0x61aa18=new Buffer(_0x59a00f[_0xcb18('0x7')](_0x3a399b),'binary');_0xedec9d['write'](_0x61aa18);});_0x4f1d1f['on'](_0xcb18('0x8'),function(){try{var _0x2078cc=new Buffer(_0x59a00f[_0xcb18('0x9')](_0xcb18('0xa')),_0xcb18('0xa'));_0xedec9d[_0xcb18('0xb')](_0x2078cc);_0xedec9d[_0xcb18('0x8')]();_0xedec9d['on'](_0xcb18('0xc'),function(){return _0x2355a8(_0x5db637);});}catch(_0x23a0d5){fs[_0xcb18('0xd')](_0x5db637);return _0x1aee79(_0x23a0d5);}});});};exports[_0xcb18('0xe')]=function(_0x5b54ab,_0x31ed6b,_0x3eee0c,_0xbf244a){return new BPromise(function(_0x5ba186,_0x52b7ca){_0xbf244a=combineOptions(_0xbf244a);var _0x3f6002=new Buffer(_0x3eee0c);var _0x2c4277=fs['createReadStream'](_0x5b54ab);var _0x835601=fs['createWriteStream'](_0x31ed6b);var _0x52d1bc=crypto['createDecipher'](_0xbf244a[_0xcb18('0x6')],_0x3f6002);_0x2c4277['on'](_0xcb18('0xf'),function(_0x323bd8){var _0x58680e=new Buffer(_0x52d1bc[_0xcb18('0x7')](_0x323bd8),_0xcb18('0xa'));_0x835601[_0xcb18('0xb')](_0x58680e);});_0x2c4277['on'](_0xcb18('0x8'),function(){try{var _0x3895fa=new Buffer(_0x52d1bc[_0xcb18('0x9')](_0xcb18('0xa')),_0xcb18('0xa'));_0x835601[_0xcb18('0xb')](_0x3895fa);_0x835601[_0xcb18('0x8')]();_0x835601['on'](_0xcb18('0xc'),function(){return _0x5ba186(_0x31ed6b);});}catch(_0x2d3cbe){fs[_0xcb18('0xd')](_0x31ed6b);return _0x52b7ca(_0x2d3cbe);}});});};
\ No newline at end of file
+var _0x3e08=['encryptFile','createWriteStream','algorithm','update','binary','end','final','write','close','unlink','decryptFile','createReadStream','createDecipher','data','bluebird','aes192','hasOwnProperty'];(function(_0x57c87e,_0x2413fe){var _0x10fde1=function(_0x39aaeb){while(--_0x39aaeb){_0x57c87e['push'](_0x57c87e['shift']());}};_0x10fde1(++_0x2413fe);}(_0x3e08,0x12f));var _0x83e0=function(_0x4f5fbc,_0x74cb4e){_0x4f5fbc=_0x4f5fbc-0x0;var _0x486e0e=_0x3e08[_0x4f5fbc];return _0x486e0e;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x83e0('0x0'));var defaultOptions={'algorithm':_0x83e0('0x1')};function combineOptions(_0x1fee72){var _0x52323c={};for(var _0x398223 in defaultOptions){if(defaultOptions['hasOwnProperty'](_0x398223)){_0x52323c[_0x398223]=defaultOptions[_0x398223];}}if(_0x1fee72){for(var _0x51ac58 in _0x1fee72){if(_0x1fee72[_0x83e0('0x2')](_0x51ac58)){_0x52323c[_0x51ac58]=_0x1fee72[_0x51ac58];}}}return _0x52323c;}exports[_0x83e0('0x3')]=function(_0x57caad,_0x3f5599,_0x413878,_0x3ae68a){return new BPromise(function(_0x17d63a,_0x2b39b9){_0x3ae68a=combineOptions(_0x3ae68a);var _0xd2beab=new Buffer(_0x413878);var _0x1b953b=fs['createReadStream'](_0x57caad);var _0x47ed14=fs[_0x83e0('0x4')](_0x3f5599);var _0x591379=crypto['createCipher'](_0x3ae68a[_0x83e0('0x5')],_0xd2beab);_0x1b953b['on']('data',function(_0x522fbe){var _0xf2dae9=new Buffer(_0x591379[_0x83e0('0x6')](_0x522fbe),_0x83e0('0x7'));_0x47ed14['write'](_0xf2dae9);});_0x1b953b['on'](_0x83e0('0x8'),function(){try{var _0x484855=new Buffer(_0x591379[_0x83e0('0x9')](_0x83e0('0x7')),_0x83e0('0x7'));_0x47ed14[_0x83e0('0xa')](_0x484855);_0x47ed14[_0x83e0('0x8')]();_0x47ed14['on'](_0x83e0('0xb'),function(){return _0x17d63a(_0x3f5599);});}catch(_0x53d5f4){fs[_0x83e0('0xc')](_0x3f5599);return _0x2b39b9(_0x53d5f4);}});});};exports[_0x83e0('0xd')]=function(_0x250e07,_0x47b287,_0xf5d602,_0x54d727){return new BPromise(function(_0x5d28c4,_0x34e8f9){_0x54d727=combineOptions(_0x54d727);var _0x12a643=new Buffer(_0xf5d602);var _0x293000=fs[_0x83e0('0xe')](_0x250e07);var _0x1019d7=fs[_0x83e0('0x4')](_0x47b287);var _0xfa746f=crypto[_0x83e0('0xf')](_0x54d727[_0x83e0('0x5')],_0x12a643);_0x293000['on'](_0x83e0('0x10'),function(_0xaf9009){var _0x2a7630=new Buffer(_0xfa746f[_0x83e0('0x6')](_0xaf9009),_0x83e0('0x7'));_0x1019d7['write'](_0x2a7630);});_0x293000['on']('end',function(){try{var _0xe3b0a4=new Buffer(_0xfa746f['final'](_0x83e0('0x7')),'binary');_0x1019d7[_0x83e0('0xa')](_0xe3b0a4);_0x1019d7[_0x83e0('0x8')]();_0x1019d7['on'](_0x83e0('0xb'),function(){return _0x5d28c4(_0x47b287);});}catch(_0x206752){fs[_0x83e0('0xc')](_0x47b287);return _0x34e8f9(_0x206752);}});});};
\ No newline at end of file
index f7ddaf3..c65f5f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2749=['join','each','%s%d.%s','%s.%s','csv','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Failed','util','path','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','analytics','argv','savename','AnalyticExtractedReport','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','Empty','length','num','split','push','format','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','.csv','existsSync','mkdirSync'];(function(_0x218972,_0x1f9794){var _0x1bb1a8=function(_0x3fb962){while(--_0x3fb962){_0x218972['push'](_0x218972['shift']());}};_0x1bb1a8(++_0x1f9794);}(_0x2749,0xe1));var _0x9274=function(_0x388914,_0x3c63f9){_0x388914=_0x388914-0x0;var _0x1f9111=_0x2749[_0x388914];return _0x1f9111;};'use strict';var util=require(_0x9274('0x0'));var path=require(_0x9274('0x1'));var _=require(_0x9274('0x2'));var csv=require(_0x9274('0x3'));var fs=require('fs');var BPromise=require(_0x9274('0x4'));var zipdir=require(_0x9274('0x5'));var rimraf=require(_0x9274('0x6'));var db=require(_0x9274('0x7'))['db'];var dbH=require(_0x9274('0x7'))['dbH'];var logger=require('../../config/logger')(_0x9274('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x9274('0x9')][0x2]);var QUERY=process[_0x9274('0x9')][0x3];var PATH=process[_0x9274('0x9')][0x4];function analyticExtractedReport(_0x3c206c,_0x4601a7){var _0x10dc70={'status':_0x3c206c};var _0x1a33e5={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4601a7){_0x10dc70[_0x9274('0xa')]=_0x4601a7;}return db[_0x9274('0xb')]['update'](_0x10dc70,_0x1a33e5);}function main(){var _0x29a395=0x1388;var _0x447aff;logger['info'](util['format'](_0x9274('0xc'),EXTRACTED_REPORT_ID,_0x9274('0xd')));return db[_0x9274('0xe')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x9274('0xf')]})[_0x9274('0x10')](function(_0x8417c7){if(_0x8417c7){_0x447aff=_0x8417c7;_0x29a395=_0x447aff[_0x9274('0xf')]||0x1388;}})[_0x9274('0x10')](function(){return dbH[_0x9274('0x11')][_0x9274('0x12')](util['format'](_0x9274('0x13'),QUERY),{'type':dbH[_0x9274('0x11')]['QueryTypes'][_0x9274('0x14')]});})[_0x9274('0x10')](function(_0x44da5d){if(!_0x44da5d[0x0]['num']){return analyticExtractedReport(_0x9274('0x15'));}var _0x288fd1=[];var _0xd0bb64=0x0;var _0x1f1110=!![];if(_0x44da5d&&_0x44da5d[_0x9274('0x16')]){var _0x1c2c3c=_0x44da5d[0x0][_0x9274('0x17')]%(_0xd0bb64+_0x29a395);if(_0x447aff[_0x9274('0x18')]){for(;_0x1f1110;_0xd0bb64+=_0x29a395,_0x1c2c3c=_0x44da5d[0x0][_0x9274('0x17')]%(_0xd0bb64+_0x29a395)){if(_0x1c2c3c==0x0||_0x1c2c3c==_0x44da5d[0x0][_0x9274('0x17')]){_0x1f1110=![];}_0x288fd1[_0x9274('0x19')](dbH[_0x9274('0x11')][_0x9274('0x12')](util[_0x9274('0x1a')](_0x9274('0x1b'),QUERY,_0x29a395,_0xd0bb64),{'type':dbH[_0x9274('0x11')][_0x9274('0x1c')]['SELECT']}));}}else{_0x288fd1[_0x9274('0x19')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x9274('0x11')][_0x9274('0x1c')]['SELECT']}));}}var _0x186686=path[_0x9274('0x1d')](PATH);var _0x1ae67d=path['basename'](PATH,_0x9274('0x1e'));var _0x4730b4=_0x447aff[_0x9274('0x18')]&&_0x288fd1[_0x9274('0x16')]>0x1;var _0x18a2f2=[];if(!fs[_0x9274('0x1f')](path['join'](_0x186686,_0x1ae67d))&&_0x4730b4){fs[_0x9274('0x20')](path[_0x9274('0x21')](_0x186686,_0x1ae67d));}return BPromise[_0x9274('0x22')](_0x288fd1,function(_0x5412a5){_0x18a2f2['push'](_0x5412a5);})[_0x9274('0x10')](function(){for(var _0x6eabbd=0x0;_0x6eabbd<_0x18a2f2['length'];_0x6eabbd+=0x1){var _0xad14e7;var _0x2f2443=_0x18a2f2[_0x6eabbd];if(_0x4730b4){_0xad14e7=path[_0x9274('0x21')](_0x186686,_0x1ae67d,util[_0x9274('0x1a')](_0x9274('0x23'),_0x1ae67d,_0x6eabbd,'csv'));}else{_0xad14e7=path[_0x9274('0x21')](_0x186686,util[_0x9274('0x1a')](_0x9274('0x24'),_0x1ae67d,_0x9274('0x25')));}fs['writeFileSync'](_0xad14e7,csv(_0x2f2443));}})[_0x9274('0x10')](function(){if(_0x4730b4){zipdir(path[_0x9274('0x21')](_0x186686,_0x1ae67d),{'saveTo':path['join'](_0x186686,util[_0x9274('0x1a')]('%s.%s',_0x1ae67d,_0x9274('0x26')))},function(_0x44999d,_0x414dfe){});rimraf(path['join'](_0x186686,_0x1ae67d),function(){});}})[_0x9274('0x10')](function(){logger[_0x9274('0x27')](util[_0x9274('0x1a')](_0x9274('0x28'),EXTRACTED_REPORT_ID,_0x9274('0xd')));return analyticExtractedReport('Completed',_0x4730b4?util[_0x9274('0x1a')]('%s.%s',_0x1ae67d,_0x4730b4?_0x9274('0x26'):'csv'):null);});})[_0x9274('0x29')](function(_0x43cca8){logger[_0x9274('0x27')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'),util['inspect'](_0x43cca8,{'showHidden':![],'depth':null}));return analyticExtractedReport(_0x9274('0x2a'));});}main();
\ No newline at end of file
+var _0xd84d=['writeFileSync','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','path','to-csv','bluebird','../../mysqldb','argv','savename','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','splitSizeCsv','then','sequelize','query','QueryTypes','SELECT','num','Empty','format','push','basename','.csv','split','existsSync','join','each','length','%s%d.%s','%s.%s','csv'];(function(_0x2cbe09,_0x3df4b3){var _0x3576e0=function(_0x4ae30a){while(--_0x4ae30a){_0x2cbe09['push'](_0x2cbe09['shift']());}};_0x3576e0(++_0x3df4b3);}(_0xd84d,0x13f));var _0xdd84=function(_0x24258d,_0x11ff80){_0x24258d=_0x24258d-0x0;var _0x3ec633=_0xd84d[_0x24258d];return _0x3ec633;};'use strict';var util=require('util');var path=require(_0xdd84('0x0'));var _=require('lodash');var csv=require(_0xdd84('0x1'));var fs=require('fs');var BPromise=require(_0xdd84('0x2'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var db=require(_0xdd84('0x3'))['db'];var dbH=require(_0xdd84('0x3'))['dbH'];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xdd84('0x4')][0x2]);var QUERY=process[_0xdd84('0x4')][0x3];var PATH=process[_0xdd84('0x4')][0x4];function analyticExtractedReport(_0x59447c,_0x2240d8){var _0xa93ff2={'status':_0x59447c};var _0x438f59={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2240d8){_0xa93ff2[_0xdd84('0x5')]=_0x2240d8;}return db['AnalyticExtractedReport'][_0xdd84('0x6')](_0xa93ff2,_0x438f59);}function main(){var _0x19e850=0x1388;var _0x138ba0;logger[_0xdd84('0x7')](util['format'](_0xdd84('0x8'),EXTRACTED_REPORT_ID,_0xdd84('0x9')));return db[_0xdd84('0xa')][_0xdd84('0xb')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xdd84('0xc')]})[_0xdd84('0xd')](function(_0x271794){if(_0x271794){_0x138ba0=_0x271794;_0x19e850=_0x138ba0[_0xdd84('0xc')]||0x1388;}})['then'](function(){return dbH[_0xdd84('0xe')][_0xdd84('0xf')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0xdd84('0x10')][_0xdd84('0x11')]});})[_0xdd84('0xd')](function(_0x45ac7e){if(!_0x45ac7e[0x0][_0xdd84('0x12')]){return analyticExtractedReport(_0xdd84('0x13'));}var _0x54bbe6=[];var _0x217e4f=0x0;var _0x291d1d=!![];if(_0x45ac7e&&_0x45ac7e['length']){var _0x139ff6=_0x45ac7e[0x0][_0xdd84('0x12')]%(_0x217e4f+_0x19e850);if(_0x138ba0['split']){for(;_0x291d1d;_0x217e4f+=_0x19e850,_0x139ff6=_0x45ac7e[0x0][_0xdd84('0x12')]%(_0x217e4f+_0x19e850)){if(_0x139ff6==0x0||_0x139ff6==_0x45ac7e[0x0][_0xdd84('0x12')]){_0x291d1d=![];}_0x54bbe6['push'](dbH[_0xdd84('0xe')][_0xdd84('0xf')](util[_0xdd84('0x14')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x19e850,_0x217e4f),{'type':dbH[_0xdd84('0xe')][_0xdd84('0x10')]['SELECT']}));}}else{_0x54bbe6[_0xdd84('0x15')](dbH['sequelize'][_0xdd84('0xf')](QUERY,{'type':dbH[_0xdd84('0xe')][_0xdd84('0x10')]['SELECT']}));}}var _0x51762d=path['dirname'](PATH);var _0x1f8117=path[_0xdd84('0x16')](PATH,_0xdd84('0x17'));var _0xf505c=_0x138ba0[_0xdd84('0x18')]&&_0x54bbe6['length']>0x1;var _0x162103=[];if(!fs[_0xdd84('0x19')](path['join'](_0x51762d,_0x1f8117))&&_0xf505c){fs['mkdirSync'](path[_0xdd84('0x1a')](_0x51762d,_0x1f8117));}return BPromise[_0xdd84('0x1b')](_0x54bbe6,function(_0x9457c0){_0x162103[_0xdd84('0x15')](_0x9457c0);})[_0xdd84('0xd')](function(){for(var _0x56d20d=0x0;_0x56d20d<_0x162103[_0xdd84('0x1c')];_0x56d20d+=0x1){var _0x421593;var _0x1f9a1b=_0x162103[_0x56d20d];if(_0xf505c){_0x421593=path[_0xdd84('0x1a')](_0x51762d,_0x1f8117,util[_0xdd84('0x14')](_0xdd84('0x1d'),_0x1f8117,_0x56d20d,'csv'));}else{_0x421593=path[_0xdd84('0x1a')](_0x51762d,util[_0xdd84('0x14')](_0xdd84('0x1e'),_0x1f8117,_0xdd84('0x1f')));}fs[_0xdd84('0x20')](_0x421593,csv(_0x1f9a1b));}})[_0xdd84('0xd')](function(){if(_0xf505c){zipdir(path[_0xdd84('0x1a')](_0x51762d,_0x1f8117),{'saveTo':path[_0xdd84('0x1a')](_0x51762d,util[_0xdd84('0x14')](_0xdd84('0x1e'),_0x1f8117,_0xdd84('0x21')))},function(_0x4819fd,_0xf31a30){});rimraf(path['join'](_0x51762d,_0x1f8117),function(){});}})['then'](function(){logger[_0xdd84('0x7')](util[_0xdd84('0x14')](_0xdd84('0x22'),EXTRACTED_REPORT_ID,_0xdd84('0x9')));return analyticExtractedReport(_0xdd84('0x23'),_0xf505c?util['format'](_0xdd84('0x1e'),_0x1f8117,_0xf505c?_0xdd84('0x21'):_0xdd84('0x1f')):null);});})['catch'](function(_0x254439){logger[_0xdd84('0x7')](util[_0xdd84('0x14')](_0xdd84('0x24'),EXTRACTED_REPORT_ID,'CSV'),util[_0xdd84('0x25')](_0x254439,{'showHidden':![],'depth':null}));return analyticExtractedReport(_0xdd84('0x26'));});}main();
\ No newline at end of file
index 827559a..eb4fd87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e2e=['dirname','basename','Setting','find','splitSizePdf','then','sequelize','query','format','SELECT','QueryTypes','existsSync','join','each','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','startDate','landscape','header','black','body','length','hasOwnProperty','toString','content','/fonts/Roboto-Regular.ttf','/fonts/Roboto-Medium.ttf','/fonts/Roboto-MediumItalic.ttf','createPdfKitDocument','%s%d.%s','%s.%s','pdf','pipe','createWriteStream','log','err','end','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','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','lodash','bluebird','util','path','moment','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','push','num','Empty'];(function(_0x3e70a1,_0x3e2dcc){var _0x33c6c0=function(_0xc9e8c0){while(--_0xc9e8c0){_0x3e70a1['push'](_0x3e70a1['shift']());}};_0x33c6c0(++_0x3e2dcc);}(_0x7e2e,0x1df));var _0xe7e2=function(_0x1931c6,_0x28c8ce){_0x1931c6=_0x1931c6-0x0;var _0x63536f=_0x7e2e[_0x1931c6];return _0x63536f;};'use strict';var _=require(_0xe7e2('0x0'));var fs=require('fs');var BPromise=require(_0xe7e2('0x1'));var util=require(_0xe7e2('0x2'));var path=require(_0xe7e2('0x3'));var moment=require(_0xe7e2('0x4'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0xe7e2('0x5'));var rimraf=require(_0xe7e2('0x6'));var db=require('../../mysqldb')['db'];var dbH=require(_0xe7e2('0x7'))[_0xe7e2('0x8')];var logger=require(_0xe7e2('0x9'))(_0xe7e2('0xa'));var EXTRACTED_REPORT_ID=Number(process[_0xe7e2('0xb')][0x2]);var QUERY=process[_0xe7e2('0xb')][0x3];var PATH=process[_0xe7e2('0xb')][0x4];var NAME=process['argv'][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var _extractedReport;function analyticExtractedReport(_0x342147,_0x3be6bf){var _0x3e5910={'status':_0x342147};var _0xa18fc0={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x3be6bf){_0x3e5910[_0xe7e2('0xc')]=_0x3be6bf;}return db[_0xe7e2('0xd')]['update'](_0x3e5910,_0xa18fc0);}function getHeader(_0x22125b){var _0x53afc5=[];for(var _0x37c63a in _0x22125b){if(_0x22125b['hasOwnProperty'](_0x37c63a)){_0x53afc5[_0xe7e2('0xe')]({'text':_0x37c63a,'style':'tableHeader'});}}return _0x53afc5;}function extractReport(_0x522d51){var _0x3cac38=0x1388;var _0x45f2a0;if(!_0x522d51[0x0][_0xe7e2('0xf')]){return analyticExtractedReport(_0xe7e2('0x10'));}var _0x2b56b3=[];var _0x195a33=0x0;var _0x5259fd=!![];var _0xfd0fa3=path[_0xe7e2('0x11')](PATH);var _0x25e135=path[_0xe7e2('0x12')](PATH,'.pdf');var _0xaeb52e=![];var _0x272152=[];return db[_0xe7e2('0x13')][_0xe7e2('0x14')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xe7e2('0x15')]})[_0xe7e2('0x16')](function(_0x101c5f){if(_0x101c5f){_0x45f2a0=_0x101c5f;_0x3cac38=_0x45f2a0[_0xe7e2('0x15')]||0x3e8;}})[_0xe7e2('0x16')](function(){if(_0x522d51&&_0x522d51['length']){var _0xfd0baf=_0x522d51[0x0]['num']%(_0x195a33+_0x3cac38);if(_0x45f2a0['split']){for(;_0x5259fd;_0x195a33+=_0x3cac38,_0xfd0baf=_0x522d51[0x0][_0xe7e2('0xf')]%(_0x195a33+_0x3cac38)){if(_0xfd0baf==0x0||_0xfd0baf==_0x522d51[0x0][_0xe7e2('0xf')]){_0x5259fd=![];}_0x2b56b3[_0xe7e2('0xe')](dbH[_0xe7e2('0x17')][_0xe7e2('0x18')](util[_0xe7e2('0x19')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x3cac38,_0x195a33),{'type':dbH['sequelize']['QueryTypes'][_0xe7e2('0x1a')]}));}}else{_0x2b56b3[_0xe7e2('0xe')](dbH[_0xe7e2('0x17')]['query'](QUERY,{'type':dbH[_0xe7e2('0x17')][_0xe7e2('0x1b')]['SELECT']}));}}_0xaeb52e=_0x45f2a0['split']&&_0x2b56b3['length']>0x1;if(!fs[_0xe7e2('0x1c')](path['join'](_0xfd0fa3,_0x25e135))&&_0xaeb52e){fs['mkdirSync'](path[_0xe7e2('0x1d')](_0xfd0fa3,_0x25e135));}return BPromise[_0xe7e2('0x1e')](_0x2b56b3,function(_0x21e427){_0x272152[_0xe7e2('0xe')](_0x21e427);});})[_0xe7e2('0x16')](function(){return BPromise[_0xe7e2('0x1e')](_0x2b56b3,function(_0x510397,_0x20fe16){var _0x34a9a2;var _0x4c04a8=util[_0xe7e2('0x19')](_0xe7e2('0x1f'),NAME,_extractedReport['name'],moment(_extractedReport[_0xe7e2('0x20')])[_0xe7e2('0x19')](FORMAT),moment(_extractedReport['endDate'])[_0xe7e2('0x19')](FORMAT));var _0x41d7cf={'pageSize':'A4','pageOrientation':_0xe7e2('0x21'),'content':[{'text':_0x4c04a8,'style':_0xe7e2('0x22')}],'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xe7e2('0x23')}}};var _0x492e22={'headerRows':0x1,'body':[]};_0x492e22[_0xe7e2('0x24')][_0xe7e2('0xe')](getHeader(_0x510397[0x0]));var _0x3084fc;for(var _0x4013ef=0x0;_0x4013ef<_0x510397[_0xe7e2('0x25')];_0x4013ef+=0x1){_0x3084fc=[];for(var _0xbda252 in _0x510397[_0x4013ef]){if(_0x510397[_0x4013ef][_0xe7e2('0x26')](_0xbda252)){_0x3084fc['push'](_0x510397[_0x4013ef][_0xbda252]?_[_0xe7e2('0x27')](_0x510397[_0x4013ef][_0xbda252]):'');}}_0x492e22[_0xe7e2('0x24')][_0xe7e2('0xe')](_0x3084fc);}_0x41d7cf[_0xe7e2('0x28')][_0xe7e2('0xe')]({'table':_0x492e22});return new BPromise(function(_0x42923d,_0x114c3a){var _0x175a6d=new PdfPrinter({'Roboto':{'normal':__dirname+_0xe7e2('0x29'),'bold':__dirname+_0xe7e2('0x2a'),'italics':__dirname+'/fonts/Roboto-Italic.ttf','bolditalics':__dirname+_0xe7e2('0x2b')}});var _0xd508d4=_0x175a6d[_0xe7e2('0x2c')](_0x41d7cf);if(_0xaeb52e){_0x34a9a2=path[_0xe7e2('0x1d')](_0xfd0fa3,_0x25e135,util['format'](_0xe7e2('0x2d'),_0x25e135,_0x20fe16,'pdf'));}else{_0x34a9a2=path['join'](_0xfd0fa3,util[_0xe7e2('0x19')](_0xe7e2('0x2e'),_0x25e135,_0xe7e2('0x2f')));}var _0x41fb6d=_0xd508d4[_0xe7e2('0x30')](fs[_0xe7e2('0x31')](_0x34a9a2));_0x41fb6d['on']('finish',function(){_0x42923d();});_0x41fb6d['on']('error',function(_0x4a7288){console[_0xe7e2('0x32')](_0xe7e2('0x33'),_0x4a7288);_0x114c3a(_0x4a7288);});_0xd508d4[_0xe7e2('0x34')]();});});})['then'](function(){if(_0xaeb52e){return new BPromise(function(_0x38f232,_0x1c5558){zipdir(path[_0xe7e2('0x1d')](_0xfd0fa3,_0x25e135),{'saveTo':path['join'](_0xfd0fa3,util[_0xe7e2('0x19')](_0xe7e2('0x2e'),_0x25e135,_0xe7e2('0x35')))},function(_0x85aa9d){if(_0x85aa9d){_0x1c5558(_0x85aa9d);}else{_0x38f232();}});});}})[_0xe7e2('0x16')](function(){if(_0xaeb52e){rimraf(path['join'](_0xfd0fa3,_0x25e135),function(){});}})['then'](function(){logger[_0xe7e2('0x36')](util[_0xe7e2('0x19')](_0xe7e2('0x37'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport('Completed',_0xaeb52e?util['format'](_0xe7e2('0x2e'),_0x25e135,_0xaeb52e?_0xe7e2('0x35'):_0xe7e2('0x2f')):null);});}function main(){logger[_0xe7e2('0x36')](util[_0xe7e2('0x19')](_0xe7e2('0x38'),EXTRACTED_REPORT_ID,'PDF'));return db[_0xe7e2('0xd')][_0xe7e2('0x39')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x111b58){_extractedReport=_0x111b58;return dbH['sequelize'][_0xe7e2('0x18')](util[_0xe7e2('0x19')](_0xe7e2('0x3a'),QUERY),{'type':dbH['sequelize'][_0xe7e2('0x1b')][_0xe7e2('0x1a')]});})[_0xe7e2('0x16')](extractReport)[_0xe7e2('0x3b')](function(_0x2acfdf){logger[_0xe7e2('0x36')](util['format'](_0xe7e2('0x3c'),EXTRACTED_REPORT_ID,_0xe7e2('0x3d')),util['inspect'](_0x2acfdf,{'showHidden':![],'depth':null}));return analyticExtractedReport('Failed');});}main();
\ No newline at end of file
+var _0xec44=['black','toString','body','/fonts/Roboto-Regular.ttf','/fonts/Roboto-Italic.ttf','createPdfKitDocument','pdf','pipe','createWriteStream','finish','log','err','end','%s.%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','PDF','findOne','catch','inspect','Failed','bluebird','util','path','moment','pdfmake/src/printer','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','hasOwnProperty','push','tableHeader','num','Empty','dirname','.pdf','Setting','find','split','splitSizePdf','then','length','sequelize','query','format','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','existsSync','join','mkdirSync','each','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','landscape','header'];(function(_0x46c0ac,_0x54c2f2){var _0x10686e=function(_0x3f4208){while(--_0x3f4208){_0x46c0ac['push'](_0x46c0ac['shift']());}};_0x10686e(++_0x54c2f2);}(_0xec44,0x1ed));var _0x4ec4=function(_0x3452a8,_0x4bfaa4){_0x3452a8=_0x3452a8-0x0;var _0x233814=_0xec44[_0x3452a8];return _0x233814;};'use strict';var _=require('lodash');var fs=require('fs');var BPromise=require(_0x4ec4('0x0'));var util=require(_0x4ec4('0x1'));var path=require(_0x4ec4('0x2'));var moment=require(_0x4ec4('0x3'));var PdfPrinter=require(_0x4ec4('0x4'));var zipdir=require(_0x4ec4('0x5'));var rimraf=require(_0x4ec4('0x6'));var db=require(_0x4ec4('0x7'))['db'];var dbH=require(_0x4ec4('0x7'))[_0x4ec4('0x8')];var logger=require(_0x4ec4('0x9'))(_0x4ec4('0xa'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x4ec4('0xb')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x4ec4('0xb')][0x5];var FORMAT=_0x4ec4('0xc');var _extractedReport;function analyticExtractedReport(_0x3f48ce,_0x50c97b){var _0x12c201={'status':_0x3f48ce};var _0x2da304={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x50c97b){_0x12c201['savename']=_0x50c97b;}return db[_0x4ec4('0xd')]['update'](_0x12c201,_0x2da304);}function getHeader(_0x5985a3){var _0x19f92c=[];for(var _0x5c49bb in _0x5985a3){if(_0x5985a3[_0x4ec4('0xe')](_0x5c49bb)){_0x19f92c[_0x4ec4('0xf')]({'text':_0x5c49bb,'style':_0x4ec4('0x10')});}}return _0x19f92c;}function extractReport(_0x5a01a6){var _0x3a4a01=0x1388;var _0x3ed3aa;if(!_0x5a01a6[0x0][_0x4ec4('0x11')]){return analyticExtractedReport(_0x4ec4('0x12'));}var _0x2eb3f0=[];var _0x1c2616=0x0;var _0x293804=!![];var _0x5425db=path[_0x4ec4('0x13')](PATH);var _0x362709=path['basename'](PATH,_0x4ec4('0x14'));var _0x1886ee=![];var _0x128535=[];return db[_0x4ec4('0x15')][_0x4ec4('0x16')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4ec4('0x17'),_0x4ec4('0x18')]})[_0x4ec4('0x19')](function(_0x50f18e){if(_0x50f18e){_0x3ed3aa=_0x50f18e;_0x3a4a01=_0x3ed3aa[_0x4ec4('0x18')]||0x3e8;}})[_0x4ec4('0x19')](function(){if(_0x5a01a6&&_0x5a01a6[_0x4ec4('0x1a')]){var _0xe8aafd=_0x5a01a6[0x0]['num']%(_0x1c2616+_0x3a4a01);if(_0x3ed3aa[_0x4ec4('0x17')]){for(;_0x293804;_0x1c2616+=_0x3a4a01,_0xe8aafd=_0x5a01a6[0x0][_0x4ec4('0x11')]%(_0x1c2616+_0x3a4a01)){if(_0xe8aafd==0x0||_0xe8aafd==_0x5a01a6[0x0][_0x4ec4('0x11')]){_0x293804=![];}_0x2eb3f0['push'](dbH[_0x4ec4('0x1b')][_0x4ec4('0x1c')](util[_0x4ec4('0x1d')](_0x4ec4('0x1e'),QUERY,_0x3a4a01,_0x1c2616),{'type':dbH[_0x4ec4('0x1b')][_0x4ec4('0x1f')][_0x4ec4('0x20')]}));}}else{_0x2eb3f0['push'](dbH[_0x4ec4('0x1b')][_0x4ec4('0x1c')](QUERY,{'type':dbH[_0x4ec4('0x1b')][_0x4ec4('0x1f')][_0x4ec4('0x20')]}));}}_0x1886ee=_0x3ed3aa['split']&&_0x2eb3f0[_0x4ec4('0x1a')]>0x1;if(!fs[_0x4ec4('0x21')](path[_0x4ec4('0x22')](_0x5425db,_0x362709))&&_0x1886ee){fs[_0x4ec4('0x23')](path[_0x4ec4('0x22')](_0x5425db,_0x362709));}return BPromise[_0x4ec4('0x24')](_0x2eb3f0,function(_0x498d79){_0x128535[_0x4ec4('0xf')](_0x498d79);});})[_0x4ec4('0x19')](function(){return BPromise[_0x4ec4('0x24')](_0x2eb3f0,function(_0x361ccf,_0x2d24c6){var _0x59f7f0;var _0x591d06=util[_0x4ec4('0x1d')](_0x4ec4('0x25'),NAME,_extractedReport[_0x4ec4('0x26')],moment(_extractedReport[_0x4ec4('0x27')])['format'](FORMAT),moment(_extractedReport[_0x4ec4('0x28')])['format'](FORMAT));var _0x356f48={'pageSize':'A4','pageOrientation':_0x4ec4('0x29'),'content':[{'text':_0x591d06,'style':_0x4ec4('0x2a')}],'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x4ec4('0x2b')}}};var _0x1438b9={'headerRows':0x1,'body':[]};_0x1438b9['body'][_0x4ec4('0xf')](getHeader(_0x361ccf[0x0]));var _0x4cd7a8;for(var _0xf6d5e6=0x0;_0xf6d5e6<_0x361ccf['length'];_0xf6d5e6+=0x1){_0x4cd7a8=[];for(var _0x538fa8 in _0x361ccf[_0xf6d5e6]){if(_0x361ccf[_0xf6d5e6][_0x4ec4('0xe')](_0x538fa8)){_0x4cd7a8['push'](_0x361ccf[_0xf6d5e6][_0x538fa8]?_[_0x4ec4('0x2c')](_0x361ccf[_0xf6d5e6][_0x538fa8]):'');}}_0x1438b9[_0x4ec4('0x2d')][_0x4ec4('0xf')](_0x4cd7a8);}_0x356f48['content'][_0x4ec4('0xf')]({'table':_0x1438b9});return new BPromise(function(_0x4ced96,_0x5859e1){var _0x344043=new PdfPrinter({'Roboto':{'normal':__dirname+_0x4ec4('0x2e'),'bold':__dirname+'/fonts/Roboto-Medium.ttf','italics':__dirname+_0x4ec4('0x2f'),'bolditalics':__dirname+'/fonts/Roboto-MediumItalic.ttf'}});var _0x456a22=_0x344043[_0x4ec4('0x30')](_0x356f48);if(_0x1886ee){_0x59f7f0=path[_0x4ec4('0x22')](_0x5425db,_0x362709,util[_0x4ec4('0x1d')]('%s%d.%s',_0x362709,_0x2d24c6,_0x4ec4('0x31')));}else{_0x59f7f0=path[_0x4ec4('0x22')](_0x5425db,util['format']('%s.%s',_0x362709,'pdf'));}var _0x1a5d40=_0x456a22[_0x4ec4('0x32')](fs[_0x4ec4('0x33')](_0x59f7f0));_0x1a5d40['on'](_0x4ec4('0x34'),function(){_0x4ced96();});_0x1a5d40['on']('error',function(_0x32d805){console[_0x4ec4('0x35')](_0x4ec4('0x36'),_0x32d805);_0x5859e1(_0x32d805);});_0x456a22[_0x4ec4('0x37')]();});});})[_0x4ec4('0x19')](function(){if(_0x1886ee){return new BPromise(function(_0x4010cd,_0x27ab19){zipdir(path[_0x4ec4('0x22')](_0x5425db,_0x362709),{'saveTo':path['join'](_0x5425db,util[_0x4ec4('0x1d')](_0x4ec4('0x38'),_0x362709,_0x4ec4('0x39')))},function(_0x4c9719){if(_0x4c9719){_0x27ab19(_0x4c9719);}else{_0x4010cd();}});});}})[_0x4ec4('0x19')](function(){if(_0x1886ee){rimraf(path[_0x4ec4('0x22')](_0x5425db,_0x362709),function(){});}})['then'](function(){logger[_0x4ec4('0x3a')](util['format'](_0x4ec4('0x3b'),EXTRACTED_REPORT_ID,_0x4ec4('0x3c')));return analyticExtractedReport('Completed',_0x1886ee?util['format'](_0x4ec4('0x38'),_0x362709,_0x1886ee?_0x4ec4('0x39'):_0x4ec4('0x31')):null);});}function main(){logger[_0x4ec4('0x3a')](util[_0x4ec4('0x1d')](_0x4ec4('0x3d'),EXTRACTED_REPORT_ID,_0x4ec4('0x3e')));return db[_0x4ec4('0xd')][_0x4ec4('0x3f')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x4ec4('0x19')](function(_0x58c2a2){_extractedReport=_0x58c2a2;return dbH[_0x4ec4('0x1b')]['query'](util[_0x4ec4('0x1d')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x4ec4('0x20')]});})[_0x4ec4('0x19')](extractReport)[_0x4ec4('0x40')](function(_0xa56706){logger[_0x4ec4('0x3a')](util[_0x4ec4('0x1d')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x4ec4('0x3e')),util[_0x4ec4('0x41')](_0xa56706,{'showHidden':![],'depth':null}));return analyticExtractedReport(_0x4ec4('0x42'));});}main();
\ No newline at end of file
index 8e25edc..964978c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bbf=['binary','zip','info','Completed','%s.%s','catch','inspect','Failed','path','lodash','json2xls','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','update','format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','SELECT','num','Empty','length','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','push','dirname','basename','.xlsx','existsSync','join','mkdirSync','%s%d.%s','xlsx','writeFileSync'];(function(_0x56a616,_0x5a3c7c){var _0xe94844=function(_0x1d3816){while(--_0x1d3816){_0x56a616['push'](_0x56a616['shift']());}};_0xe94844(++_0x5a3c7c);}(_0x8bbf,0x160));var _0xf8bb=function(_0x2c97cc,_0x368043){_0x2c97cc=_0x2c97cc-0x0;var _0x42265f=_0x8bbf[_0x2c97cc];return _0x42265f;};'use strict';var util=require('util');var path=require(_0xf8bb('0x0'));var _=require(_0xf8bb('0x1'));var fs=require('fs');var json2xls=require(_0xf8bb('0x2'));var BPromise=require('bluebird');var zipdir=require(_0xf8bb('0x3'));var rimraf=require(_0xf8bb('0x4'));var db=require(_0xf8bb('0x5'))['db'];var dbH=require(_0xf8bb('0x5'))[_0xf8bb('0x6')];var logger=require(_0xf8bb('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xf8bb('0x8')][0x2]);var QUERY=process[_0xf8bb('0x8')][0x3];var PATH=process['argv'][0x4];function analyticExtractedReport(_0x354bcc,_0x4f8703){var _0x1893a9={'status':_0x354bcc};var _0xfb17ff={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4f8703){_0x1893a9['savename']=_0x4f8703;}return db['AnalyticExtractedReport'][_0xf8bb('0x9')](_0x1893a9,_0xfb17ff);}function main(){var _0xad57bc=0x1388;var _0x720aba;logger['info'](util[_0xf8bb('0xa')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xf8bb('0xb')));return db[_0xf8bb('0xc')][_0xf8bb('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf8bb('0xe'),_0xf8bb('0xf')]})[_0xf8bb('0x10')](function(_0x3c918f){if(_0x3c918f){_0x720aba=_0x3c918f;_0xad57bc=_0x720aba[_0xf8bb('0xf')]||0x1388;}})[_0xf8bb('0x10')](function(){return dbH[_0xf8bb('0x11')][_0xf8bb('0x12')](util[_0xf8bb('0xa')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize']['QueryTypes'][_0xf8bb('0x13')]});})['then'](function(_0x1a54e7){if(!_0x1a54e7[0x0][_0xf8bb('0x14')]){return analyticExtractedReport(_0xf8bb('0x15'));}var _0x445dc9=[];var _0x3c800a=0x0;var _0x36adeb=!![];if(_0x720aba[_0xf8bb('0xe')]){if(_0x1a54e7&&_0x1a54e7[_0xf8bb('0x16')]){var _0x9f54aa=_0x1a54e7[0x0][_0xf8bb('0x14')]%(_0x3c800a+_0xad57bc);for(;_0x36adeb;_0x3c800a+=_0xad57bc,_0x9f54aa=_0x1a54e7[0x0][_0xf8bb('0x14')]%(_0x3c800a+_0xad57bc)){if(_0x9f54aa==0x0||_0x9f54aa==_0x1a54e7[0x0][_0xf8bb('0x14')]){_0x36adeb=![];}_0x445dc9['push'](dbH[_0xf8bb('0x11')][_0xf8bb('0x12')](util['format'](_0xf8bb('0x17'),QUERY,_0xad57bc,_0x3c800a),{'type':dbH[_0xf8bb('0x11')][_0xf8bb('0x18')][_0xf8bb('0x13')]}));}}}else{_0x445dc9[_0xf8bb('0x19')](dbH[_0xf8bb('0x11')][_0xf8bb('0x12')](QUERY,{'type':dbH[_0xf8bb('0x11')][_0xf8bb('0x18')][_0xf8bb('0x13')]}));}var _0x35c104=path[_0xf8bb('0x1a')](PATH);var _0x2b5723=path[_0xf8bb('0x1b')](PATH,_0xf8bb('0x1c'));var _0x2aab78=_0x720aba[_0xf8bb('0xe')]&&_0x445dc9[_0xf8bb('0x16')]>0x1;var _0x572d37=[];if(!fs[_0xf8bb('0x1d')](path[_0xf8bb('0x1e')](_0x35c104,_0x2b5723))&&_0x2aab78){fs[_0xf8bb('0x1f')](path['join'](_0x35c104,_0x2b5723));}return BPromise['each'](_0x445dc9,function(_0x4bd01c){_0x572d37[_0xf8bb('0x19')](_0x4bd01c);})['then'](function(){for(var _0x318c4b=0x0;_0x318c4b<_0x572d37[_0xf8bb('0x16')];_0x318c4b+=0x1){var _0x6d5c00;var _0x5a68e8=_0x572d37[_0x318c4b];if(_0x2aab78){_0x6d5c00=path[_0xf8bb('0x1e')](_0x35c104,_0x2b5723,util[_0xf8bb('0xa')](_0xf8bb('0x20'),_0x2b5723,_0x318c4b,_0xf8bb('0x21')));}else{_0x6d5c00=path[_0xf8bb('0x1e')](_0x35c104,util[_0xf8bb('0xa')]('%s.%s',_0x2b5723,_0xf8bb('0x21')));}fs[_0xf8bb('0x22')](_0x6d5c00,json2xls(_0x5a68e8),_0xf8bb('0x23'));}})[_0xf8bb('0x10')](function(){if(_0x2aab78){zipdir(path[_0xf8bb('0x1e')](_0x35c104,_0x2b5723),{'saveTo':path[_0xf8bb('0x1e')](_0x35c104,util[_0xf8bb('0xa')]('%s.%s',_0x2b5723,_0xf8bb('0x24')))},function(_0x163de1,_0x31310f){});rimraf(path[_0xf8bb('0x1e')](_0x35c104,_0x2b5723),function(){});}})[_0xf8bb('0x10')](function(){logger[_0xf8bb('0x25')](util[_0xf8bb('0xa')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xf8bb('0xb')));return analyticExtractedReport(_0xf8bb('0x26'),_0x2aab78?util[_0xf8bb('0xa')](_0xf8bb('0x27'),_0x2b5723,_0x2aab78?_0xf8bb('0x24'):_0xf8bb('0x21')):null);});})[_0xf8bb('0x28')](function(_0x1cd3b4){logger['info'](util[_0xf8bb('0xa')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'),util[_0xf8bb('0x29')](_0x1cd3b4,{'showHidden':![],'depth':null}));return analyticExtractedReport(_0xf8bb('0x2a'));});}main();
\ No newline at end of file
+var _0xb770=['join','xlsx','%s.%s','binary','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','util','path','lodash','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','split','then','splitSizeXlsx','sequelize','query','QueryTypes','SELECT','num','length','push','basename','.xlsx','existsSync','mkdirSync'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb770,0x12a));var _0x0b77=function(_0x11cc54,_0x1b3e76){_0x11cc54=_0x11cc54-0x0;var _0x2b04c0=_0xb770[_0x11cc54];return _0x2b04c0;};'use strict';var util=require(_0x0b77('0x0'));var path=require(_0x0b77('0x1'));var _=require(_0x0b77('0x2'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require('bluebird');var zipdir=require(_0x0b77('0x3'));var rimraf=require(_0x0b77('0x4'));var db=require(_0x0b77('0x5'))['db'];var dbH=require(_0x0b77('0x5'))['dbH'];var logger=require(_0x0b77('0x6'))(_0x0b77('0x7'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x0b77('0x8')][0x3];var PATH=process[_0x0b77('0x8')][0x4];function analyticExtractedReport(_0x51811a,_0x14c43f){var _0x38f9f0={'status':_0x51811a};var _0x13a9f0={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x14c43f){_0x38f9f0['savename']=_0x14c43f;}return db[_0x0b77('0x9')][_0x0b77('0xa')](_0x38f9f0,_0x13a9f0);}function main(){var _0x4af6b7=0x1388;var _0x48c62c;logger[_0x0b77('0xb')](util[_0x0b77('0xc')](_0x0b77('0xd'),EXTRACTED_REPORT_ID,_0x0b77('0xe')));return db[_0x0b77('0xf')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x0b77('0x10'),'splitSizeXlsx']})[_0x0b77('0x11')](function(_0x103cab){if(_0x103cab){_0x48c62c=_0x103cab;_0x4af6b7=_0x48c62c[_0x0b77('0x12')]||0x1388;}})[_0x0b77('0x11')](function(){return dbH[_0x0b77('0x13')][_0x0b77('0x14')](util[_0x0b77('0xc')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x0b77('0x15')][_0x0b77('0x16')]});})[_0x0b77('0x11')](function(_0x5769a1){if(!_0x5769a1[0x0][_0x0b77('0x17')]){return analyticExtractedReport('Empty');}var _0x18d47e=[];var _0x54bf58=0x0;var _0x4c80ed=!![];if(_0x48c62c[_0x0b77('0x10')]){if(_0x5769a1&&_0x5769a1[_0x0b77('0x18')]){var _0x38110f=_0x5769a1[0x0]['num']%(_0x54bf58+_0x4af6b7);for(;_0x4c80ed;_0x54bf58+=_0x4af6b7,_0x38110f=_0x5769a1[0x0][_0x0b77('0x17')]%(_0x54bf58+_0x4af6b7)){if(_0x38110f==0x0||_0x38110f==_0x5769a1[0x0]['num']){_0x4c80ed=![];}_0x18d47e[_0x0b77('0x19')](dbH[_0x0b77('0x13')][_0x0b77('0x14')](util[_0x0b77('0xc')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4af6b7,_0x54bf58),{'type':dbH['sequelize'][_0x0b77('0x15')][_0x0b77('0x16')]}));}}}else{_0x18d47e['push'](dbH[_0x0b77('0x13')][_0x0b77('0x14')](QUERY,{'type':dbH['sequelize']['QueryTypes']['SELECT']}));}var _0x5f5d04=path['dirname'](PATH);var _0x11fec4=path[_0x0b77('0x1a')](PATH,_0x0b77('0x1b'));var _0x289a9b=_0x48c62c[_0x0b77('0x10')]&&_0x18d47e[_0x0b77('0x18')]>0x1;var _0x30a1f4=[];if(!fs[_0x0b77('0x1c')](path['join'](_0x5f5d04,_0x11fec4))&&_0x289a9b){fs[_0x0b77('0x1d')](path['join'](_0x5f5d04,_0x11fec4));}return BPromise['each'](_0x18d47e,function(_0x2b96bc){_0x30a1f4[_0x0b77('0x19')](_0x2b96bc);})['then'](function(){for(var _0x4377cd=0x0;_0x4377cd<_0x30a1f4[_0x0b77('0x18')];_0x4377cd+=0x1){var _0x326755;var _0x864fdd=_0x30a1f4[_0x4377cd];if(_0x289a9b){_0x326755=path[_0x0b77('0x1e')](_0x5f5d04,_0x11fec4,util['format']('%s%d.%s',_0x11fec4,_0x4377cd,_0x0b77('0x1f')));}else{_0x326755=path['join'](_0x5f5d04,util['format'](_0x0b77('0x20'),_0x11fec4,_0x0b77('0x1f')));}fs['writeFileSync'](_0x326755,json2xls(_0x864fdd),_0x0b77('0x21'));}})[_0x0b77('0x11')](function(){if(_0x289a9b){zipdir(path[_0x0b77('0x1e')](_0x5f5d04,_0x11fec4),{'saveTo':path[_0x0b77('0x1e')](_0x5f5d04,util['format'](_0x0b77('0x20'),_0x11fec4,_0x0b77('0x22')))},function(_0x1be104,_0x130bd4){});rimraf(path[_0x0b77('0x1e')](_0x5f5d04,_0x11fec4),function(){});}})[_0x0b77('0x11')](function(){logger[_0x0b77('0xb')](util[_0x0b77('0xc')](_0x0b77('0x23'),EXTRACTED_REPORT_ID,_0x0b77('0xe')));return analyticExtractedReport(_0x0b77('0x24'),_0x289a9b?util[_0x0b77('0xc')](_0x0b77('0x20'),_0x11fec4,_0x289a9b?_0x0b77('0x22'):'xlsx'):null);});})[_0x0b77('0x25')](function(_0x5954fa){logger['info'](util[_0x0b77('0xc')](_0x0b77('0x26'),EXTRACTED_REPORT_ID,'XLSX'),util[_0x0b77('0x27')](_0x5954fa,{'showHidden':![],'depth':null}));return analyticExtractedReport(_0x0b77('0x28'));});}main();
\ No newline at end of file
index 5027002..c8922ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e84=['priority','format','CDR(type)=%s','length','createdAt','updatedAt','interval','*,*,*,*','IntervalId','hasOwnProperty','tag','Set','context','VoiceExtensionId','callerID','CALLERID(all)=','indexOf','toLowerCase','appType','custom','progress','Progress','recordingFormat','record','MixMonitor',',ab','StopMixMonitor','splice','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','bulkCreate','sortBy','catch','error','rewrite','Interval','findAll','then','models','VoiceExtension','uniq','exten','queue','playback','answer','extensions','push','type'];(function(_0x4424fc,_0x4f1063){var _0x1b072e=function(_0x506c91){while(--_0x506c91){_0x4424fc['push'](_0x4424fc['shift']());}};_0x1b072e(++_0x4f1063);}(_0x5e84,0x193));var _0x45e8=function(_0xad60f6,_0x2d9b39){_0xad60f6=_0xad60f6-0x0;var _0x543052=_0x5e84[_0xad60f6];return _0x543052;};'use strict';var _=require('lodash');var util=require('util');function rewrite(_0x5c6dc1,_0xf4d610){var _0x2846b3=this;return _0x5c6dc1['models'][_0x45e8('0x0')][_0x45e8('0x1')]({'raw':!![]})[_0x45e8('0x2')](function(_0x3f8d9a){_0x2846b3['intervals']=_0x3f8d9a;return _0x5c6dc1[_0x45e8('0x3')][_0x45e8('0x4')][_0x45e8('0x1')]({'where':{'IntervalId':_0xf4d610['IntervalId']},'raw':!![]});})[_0x45e8('0x2')](function(_0x291476){return _0x5c6dc1['models']['VoiceExtension']['findAll']({'where':{'exten':{'$in':_[_0x45e8('0x5')](_['map'](_0x291476,_0x45e8('0x6')))},'isApp':!![]},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x45e8('0x2')](function(_0x1c1431){var _0x43e4a9=_['groupBy'](_0x1c1431,_0x45e8('0x6'));var _0x4a62cf=[_0x45e8('0x7'),_0x45e8('0x8')];var _0x1d421b=[];var _0x1f1a62=[];for(var _0x2215e8 in _0x43e4a9){if(_0x43e4a9['hasOwnProperty'](_0x2215e8)){_0x2846b3[_0x45e8('0x9')]=![];_0x2846b3['progress']=![];_0x2846b3['priority']=0x2;_0x2846b3['extensions']=[];_0x2846b3[_0x45e8('0xa')][_0x45e8('0xb')]({'type':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0xc')],'context':_0x43e4a9[_0x2215e8][0x0]['context'],'exten':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x6')],'priority':_0x2846b3[_0x45e8('0xd')]++,'app':'Set','appdata':util[_0x45e8('0xe')](_0x45e8('0xf'),_0x43e4a9[_0x2215e8][0x0][_0x45e8('0xc')]),'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0]['VoiceExtensionId']});for(var _0x138ad1=0x0,_0x5ee4f6=0x0;_0x138ad1<_0x43e4a9[_0x2215e8][_0x45e8('0x10')];_0x138ad1+=0x1,_0x5ee4f6=0x0){var _0x3e4eba=_0x43e4a9[_0x2215e8][_0x138ad1];var _0x2d0fcd=[];var _0x132922=[];delete _0x3e4eba['id'];delete _0x3e4eba[_0x45e8('0x11')];delete _0x3e4eba[_0x45e8('0x12')];var _0x4e7f5a=_0x3e4eba[_0x45e8('0x13')]!==_0x45e8('0x14')?[_0x3e4eba[_0x45e8('0x13')]]:_0x3e4eba[_0x45e8('0x15')]?_['map'](_['filter'](_0x2846b3['intervals'],{'IntervalId':_0x3e4eba[_0x45e8('0x15')]}),'interval'):[];if(_0x3e4eba[_0x45e8('0x16')](_0x45e8('0x17'))){if(_0x3e4eba[_0x45e8('0x17')]&&_0x3e4eba['tag']!=='--'){_0x2d0fcd[_0x45e8('0xb')]({'type':_0x3e4eba[_0x45e8('0xc')],'app':_0x45e8('0x18'),'appdata':'CDR(tag)='+_0x3e4eba[_0x45e8('0x17')],'context':_0x3e4eba[_0x45e8('0x19')],'exten':_0x3e4eba[_0x45e8('0x6')],'priority':_0x4e7f5a[_0x45e8('0x10')]+_0x2846b3[_0x45e8('0xd')]+_0x5ee4f6++,'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x1a')]});}}if(_0x3e4eba[_0x45e8('0x16')](_0x45e8('0x1b'))){if(_0x3e4eba[_0x45e8('0x1b')]){_0x2d0fcd[_0x45e8('0xb')]({'type':_0x3e4eba[_0x45e8('0xc')],'app':'Set','appdata':_0x45e8('0x1c')+_0x3e4eba[_0x45e8('0x1b')],'context':_0x3e4eba[_0x45e8('0x19')],'exten':_0x3e4eba[_0x45e8('0x6')],'priority':_0x4e7f5a[_0x45e8('0x10')]+_0x2846b3[_0x45e8('0xd')]+_0x5ee4f6++,'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x1a')]});}}if(_0x3e4eba[_0x45e8('0x16')](_0x45e8('0x9'))){if(_0x4a62cf[_0x45e8('0x1d')](_0x3e4eba['app'][_0x45e8('0x1e')]())>=0x0&&_0x3e4eba[_0x45e8('0x1f')]!==_0x45e8('0x20')){if(!_0x2846b3[_0x45e8('0x9')]&&_0x3e4eba[_0x45e8('0x9')]){_0x2846b3[_0x45e8('0x9')]=!![];_0x2d0fcd[_0x45e8('0xb')]({'type':_0x3e4eba['type'],'app':'Answer','context':_0x3e4eba[_0x45e8('0x19')],'exten':_0x3e4eba['exten'],'priority':_0x4e7f5a['length']+_0x2846b3[_0x45e8('0xd')]+_0x5ee4f6++,'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0]['VoiceExtensionId']});}if(!_0x2846b3['answer']&&!_0x2846b3[_0x45e8('0x21')]&&!_0x3e4eba['answer']){_0x2846b3[_0x45e8('0x21')]=!![];_0x2d0fcd[_0x45e8('0xb')]({'type':_0x3e4eba[_0x45e8('0xc')],'app':_0x45e8('0x22'),'context':_0x3e4eba[_0x45e8('0x19')],'exten':_0x3e4eba[_0x45e8('0x6')],'priority':_0x4e7f5a[_0x45e8('0x10')]+_0x2846b3['priority']+_0x5ee4f6++,'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x1a')]});}}}if(_0x3e4eba[_0x45e8('0x16')]('record')&&_0x3e4eba[_0x45e8('0x16')](_0x45e8('0x23'))){if(_0x3e4eba[_0x45e8('0x24')]){_0x2d0fcd[_0x45e8('0xb')]({'type':_0x3e4eba[_0x45e8('0xc')],'app':_0x45e8('0x25'),'appdata':'${UNIQUEID}.'+_0x3e4eba[_0x45e8('0x23')]+_0x45e8('0x26'),'context':_0x3e4eba['context'],'exten':_0x3e4eba[_0x45e8('0x6')],'priority':_0x4e7f5a[_0x45e8('0x10')]+_0x2846b3[_0x45e8('0xd')]+_0x5ee4f6++,'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x1a')]});}}if(_0x3e4eba['hasOwnProperty'](_0x45e8('0x24'))&&_0x3e4eba['hasOwnProperty'](_0x45e8('0x23'))){if(_0x3e4eba[_0x45e8('0x24')]){_0x132922[_0x45e8('0xb')]({'type':_0x3e4eba[_0x45e8('0xc')],'app':_0x45e8('0x27'),'appdata':null,'context':_0x3e4eba[_0x45e8('0x19')],'exten':_0x3e4eba[_0x45e8('0x6')],'priority':_0x4e7f5a[_0x45e8('0x10')]+_0x2846b3['priority']+_0x5ee4f6++ +0x1,'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0]['VoiceExtensionId']});}}for(var _0x4c96ce=0x0;_0x4c96ce<_0x4e7f5a['length'];_0x4c96ce+=0x1){var _0x3ca728=_0x2846b3['priority']+_0x4e7f5a[_0x45e8('0x10')];var _0x34a8a4=_0x4c96ce===_0x4e7f5a[_0x45e8('0x10')]-0x1?_0x2846b3[_0x45e8('0xd')]+_0x2d0fcd[_0x45e8('0x10')]+_0x132922['length']+0x2:_0x2846b3[_0x45e8('0xd')]+_0x4c96ce+0x1;_0x2d0fcd[_0x45e8('0x28')](_0x4c96ce,0x0,{'type':_0x3e4eba[_0x45e8('0xc')],'app':_0x45e8('0x29'),'appdata':_0x4e7f5a[_0x4c96ce]+'?'+_0x3e4eba[_0x45e8('0x19')]+_0x45e8('0x2a')+_0x3ca728+':'+_0x3e4eba[_0x45e8('0x19')]+_0x45e8('0x2a')+_0x34a8a4,'exten':_0x3e4eba[_0x45e8('0x6')],'context':_0x3e4eba[_0x45e8('0x19')],'priority':_0x2846b3['priority']+_0x4c96ce,'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x1a')]});}_0x3e4eba[_0x45e8('0xd')]=_0x2d0fcd[_0x45e8('0x10')]?_[_0x45e8('0x2b')](_0x2d0fcd)[_0x45e8('0xd')]+0x1:_0x2846b3[_0x45e8('0xd')];_0x2846b3['priority']=(_0x132922[_0x45e8('0x10')]?_[_0x45e8('0x2b')](_0x132922)[_0x45e8('0xd')]:_0x3e4eba[_0x45e8('0xd')])+0x1;_0x2846b3['extensions']=_[_0x45e8('0x2c')](_0x2846b3[_0x45e8('0xa')],_0x2d0fcd,[_0x3e4eba],_0x132922);}_0x2846b3[_0x45e8('0xa')]['push']({'type':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0xc')],'app':'Hangup','exten':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x6')],'context':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x19')],'priority':_0x2846b3['priority'],'VoiceExtensionId':_0x43e4a9[_0x2215e8][0x0][_0x45e8('0x1a')]});_0x1d421b[_0x45e8('0xb')](_0x43e4a9[_0x2215e8][0x0]['VoiceExtensionId']);_0x1f1a62=_[_0x45e8('0x2c')](_0x1f1a62,_0x2846b3['extensions']);}}return _0x5c6dc1[_0x45e8('0x2d')](function(_0x5c8fff){return _0x5c6dc1[_0x45e8('0x3')]['VoiceExtension'][_0x45e8('0x2e')]({'where':{'VoiceExtensionId':{'$in':_0x1d421b}},'transaction':_0x5c8fff})[_0x45e8('0x2')](function(_0x1bace9){return _0x5c6dc1['models'][_0x45e8('0x4')][_0x45e8('0x2f')](_[_0x45e8('0x30')](_0x1f1a62,_0x45e8('0xd')),{'transaction':_0x5c8fff});});});})[_0x45e8('0x31')](function(_0x24eb19){console[_0x45e8('0x32')](_0x24eb19);});}exports[_0x45e8('0x33')]=rewrite;
\ No newline at end of file
+var _0x5f7a=[',ab','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','catch','error','rewrite','lodash','util','models','then','intervals','VoiceExtension','findAll','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','groupBy','queue','playback','hasOwnProperty','answer','progress','priority','extensions','push','type','context','Set','format','VoiceExtensionId','length','createdAt','*,*,*,*','interval','IntervalId','filter','tag','CDR(tag)=','CALLERID(all)=','callerID','indexOf','app','toLowerCase','appType','custom','Answer','Progress','record','recordingFormat','MixMonitor','${UNIQUEID}.'];(function(_0x5d8782,_0x31c702){var _0x26c389=function(_0xe25cc6){while(--_0xe25cc6){_0x5d8782['push'](_0x5d8782['shift']());}};_0x26c389(++_0x31c702);}(_0x5f7a,0x16f));var _0xa5f7=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x5f7a[_0x160c73];return _0xd9302;};'use strict';var _=require(_0xa5f7('0x0'));var util=require(_0xa5f7('0x1'));function rewrite(_0x396b23,_0x50b7a9){var _0x594601=this;return _0x396b23[_0xa5f7('0x2')]['Interval']['findAll']({'raw':!![]})[_0xa5f7('0x3')](function(_0x5a9df3){_0x594601[_0xa5f7('0x4')]=_0x5a9df3;return _0x396b23[_0xa5f7('0x2')][_0xa5f7('0x5')][_0xa5f7('0x6')]({'where':{'IntervalId':_0x50b7a9['IntervalId']},'raw':!![]});})['then'](function(_0x2e80a9){return _0x396b23[_0xa5f7('0x2')][_0xa5f7('0x5')][_0xa5f7('0x6')]({'where':{'exten':{'$in':_[_0xa5f7('0x7')](_[_0xa5f7('0x8')](_0x2e80a9,_0xa5f7('0x9')))},'isApp':!![]},'order':[{'raw':_0xa5f7('0xa')}],'raw':!![]});})[_0xa5f7('0x3')](function(_0x1b02b0){var _0x2f6c53=_[_0xa5f7('0xb')](_0x1b02b0,_0xa5f7('0x9'));var _0x3ac6c4=[_0xa5f7('0xc'),_0xa5f7('0xd')];var _0x1b2b43=[];var _0x3c12fe=[];for(var _0x27e6a7 in _0x2f6c53){if(_0x2f6c53[_0xa5f7('0xe')](_0x27e6a7)){_0x594601[_0xa5f7('0xf')]=![];_0x594601[_0xa5f7('0x10')]=![];_0x594601[_0xa5f7('0x11')]=0x2;_0x594601[_0xa5f7('0x12')]=[];_0x594601[_0xa5f7('0x12')][_0xa5f7('0x13')]({'type':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x14')],'context':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x15')],'exten':_0x2f6c53[_0x27e6a7][0x0]['exten'],'priority':_0x594601['priority']++,'app':_0xa5f7('0x16'),'appdata':util[_0xa5f7('0x17')]('CDR(type)=%s',_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x14')]),'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x18')]});for(var _0x59faa7=0x0,_0x42afd5=0x0;_0x59faa7<_0x2f6c53[_0x27e6a7][_0xa5f7('0x19')];_0x59faa7+=0x1,_0x42afd5=0x0){var _0x4245bc=_0x2f6c53[_0x27e6a7][_0x59faa7];var _0x103e97=[];var _0x469879=[];delete _0x4245bc['id'];delete _0x4245bc[_0xa5f7('0x1a')];delete _0x4245bc['updatedAt'];var _0x3fb93a=_0x4245bc['interval']!==_0xa5f7('0x1b')?[_0x4245bc[_0xa5f7('0x1c')]]:_0x4245bc[_0xa5f7('0x1d')]?_[_0xa5f7('0x8')](_[_0xa5f7('0x1e')](_0x594601['intervals'],{'IntervalId':_0x4245bc[_0xa5f7('0x1d')]}),'interval'):[];if(_0x4245bc[_0xa5f7('0xe')](_0xa5f7('0x1f'))){if(_0x4245bc[_0xa5f7('0x1f')]&&_0x4245bc[_0xa5f7('0x1f')]!=='--'){_0x103e97['push']({'type':_0x4245bc[_0xa5f7('0x14')],'app':_0xa5f7('0x16'),'appdata':_0xa5f7('0x20')+_0x4245bc[_0xa5f7('0x1f')],'context':_0x4245bc[_0xa5f7('0x15')],'exten':_0x4245bc[_0xa5f7('0x9')],'priority':_0x3fb93a['length']+_0x594601['priority']+_0x42afd5++,'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x18')]});}}if(_0x4245bc[_0xa5f7('0xe')]('callerID')){if(_0x4245bc['callerID']){_0x103e97[_0xa5f7('0x13')]({'type':_0x4245bc[_0xa5f7('0x14')],'app':'Set','appdata':_0xa5f7('0x21')+_0x4245bc[_0xa5f7('0x22')],'context':_0x4245bc[_0xa5f7('0x15')],'exten':_0x4245bc[_0xa5f7('0x9')],'priority':_0x3fb93a[_0xa5f7('0x19')]+_0x594601['priority']+_0x42afd5++,'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0]['VoiceExtensionId']});}}if(_0x4245bc['hasOwnProperty']('answer')){if(_0x3ac6c4[_0xa5f7('0x23')](_0x4245bc[_0xa5f7('0x24')][_0xa5f7('0x25')]())>=0x0&&_0x4245bc[_0xa5f7('0x26')]!==_0xa5f7('0x27')){if(!_0x594601[_0xa5f7('0xf')]&&_0x4245bc['answer']){_0x594601[_0xa5f7('0xf')]=!![];_0x103e97[_0xa5f7('0x13')]({'type':_0x4245bc['type'],'app':_0xa5f7('0x28'),'context':_0x4245bc[_0xa5f7('0x15')],'exten':_0x4245bc[_0xa5f7('0x9')],'priority':_0x3fb93a[_0xa5f7('0x19')]+_0x594601['priority']+_0x42afd5++,'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0]['VoiceExtensionId']});}if(!_0x594601[_0xa5f7('0xf')]&&!_0x594601[_0xa5f7('0x10')]&&!_0x4245bc[_0xa5f7('0xf')]){_0x594601[_0xa5f7('0x10')]=!![];_0x103e97['push']({'type':_0x4245bc[_0xa5f7('0x14')],'app':_0xa5f7('0x29'),'context':_0x4245bc['context'],'exten':_0x4245bc[_0xa5f7('0x9')],'priority':_0x3fb93a['length']+_0x594601[_0xa5f7('0x11')]+_0x42afd5++,'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x18')]});}}}if(_0x4245bc['hasOwnProperty'](_0xa5f7('0x2a'))&&_0x4245bc[_0xa5f7('0xe')](_0xa5f7('0x2b'))){if(_0x4245bc[_0xa5f7('0x2a')]){_0x103e97['push']({'type':_0x4245bc['type'],'app':_0xa5f7('0x2c'),'appdata':_0xa5f7('0x2d')+_0x4245bc['recordingFormat']+_0xa5f7('0x2e'),'context':_0x4245bc[_0xa5f7('0x15')],'exten':_0x4245bc['exten'],'priority':_0x3fb93a[_0xa5f7('0x19')]+_0x594601[_0xa5f7('0x11')]+_0x42afd5++,'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x18')]});}}if(_0x4245bc[_0xa5f7('0xe')]('record')&&_0x4245bc['hasOwnProperty'](_0xa5f7('0x2b'))){if(_0x4245bc[_0xa5f7('0x2a')]){_0x469879[_0xa5f7('0x13')]({'type':_0x4245bc['type'],'app':'StopMixMonitor','appdata':null,'context':_0x4245bc['context'],'exten':_0x4245bc[_0xa5f7('0x9')],'priority':_0x3fb93a[_0xa5f7('0x19')]+_0x594601[_0xa5f7('0x11')]+_0x42afd5++ +0x1,'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0]['VoiceExtensionId']});}}for(var _0x32e060=0x0;_0x32e060<_0x3fb93a[_0xa5f7('0x19')];_0x32e060+=0x1){var _0x527095=_0x594601[_0xa5f7('0x11')]+_0x3fb93a[_0xa5f7('0x19')];var _0x35aafc=_0x32e060===_0x3fb93a['length']-0x1?_0x594601['priority']+_0x103e97[_0xa5f7('0x19')]+_0x469879['length']+0x2:_0x594601[_0xa5f7('0x11')]+_0x32e060+0x1;_0x103e97[_0xa5f7('0x2f')](_0x32e060,0x0,{'type':_0x4245bc[_0xa5f7('0x14')],'app':_0xa5f7('0x30'),'appdata':_0x3fb93a[_0x32e060]+'?'+_0x4245bc['context']+_0xa5f7('0x31')+_0x527095+':'+_0x4245bc[_0xa5f7('0x15')]+_0xa5f7('0x31')+_0x35aafc,'exten':_0x4245bc[_0xa5f7('0x9')],'context':_0x4245bc['context'],'priority':_0x594601['priority']+_0x32e060,'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x18')]});}_0x4245bc[_0xa5f7('0x11')]=_0x103e97['length']?_[_0xa5f7('0x32')](_0x103e97)[_0xa5f7('0x11')]+0x1:_0x594601[_0xa5f7('0x11')];_0x594601[_0xa5f7('0x11')]=(_0x469879[_0xa5f7('0x19')]?_['last'](_0x469879)[_0xa5f7('0x11')]:_0x4245bc[_0xa5f7('0x11')])+0x1;_0x594601[_0xa5f7('0x12')]=_[_0xa5f7('0x33')](_0x594601[_0xa5f7('0x12')],_0x103e97,[_0x4245bc],_0x469879);}_0x594601[_0xa5f7('0x12')][_0xa5f7('0x13')]({'type':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x14')],'app':_0xa5f7('0x34'),'exten':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x9')],'context':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x15')],'priority':_0x594601[_0xa5f7('0x11')],'VoiceExtensionId':_0x2f6c53[_0x27e6a7][0x0][_0xa5f7('0x18')]});_0x1b2b43[_0xa5f7('0x13')](_0x2f6c53[_0x27e6a7][0x0]['VoiceExtensionId']);_0x3c12fe=_['concat'](_0x3c12fe,_0x594601[_0xa5f7('0x12')]);}}return _0x396b23[_0xa5f7('0x35')](function(_0x45b724){return _0x396b23[_0xa5f7('0x2')][_0xa5f7('0x5')][_0xa5f7('0x36')]({'where':{'VoiceExtensionId':{'$in':_0x1b2b43}},'transaction':_0x45b724})['then'](function(_0x23c74d){return _0x396b23[_0xa5f7('0x2')][_0xa5f7('0x5')][_0xa5f7('0x37')](_['sortBy'](_0x3c12fe,'priority'),{'transaction':_0x45b724});});});})[_0xa5f7('0x38')](function(_0x131f07){console[_0xa5f7('0x39')](_0x131f07);});}exports[_0xa5f7('0x3a')]=rewrite;
\ No newline at end of file
index f3f079b..2a5a534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1713=['emit','contact:csv_','resume','unlinkSync','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','null','Missing\x20filepath\x20parameter!','undefined','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','index','test','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','inspect','insert','into','cm_hopper','fromQuery','select','field','NOW()','scheduledAt','ContactId','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','createdAt','updatedAt','str','calleridnum','cm_hopper_final','id\x20IN\x20?','cm_hopper_black','VoiceQueue','findAll','outbound','CmList','Lists','get','dialCheckDuplicateType','push','sequelize','onlyIfOpen','query','VoiceQueueId','all','Campaign','always','CampaignId','BlackLists','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1713,0x1d0));var _0x3171=function(_0xbbf227,_0x5ecac5){_0xbbf227=_0xbbf227-0x0;var _0xfe830b=_0x1713[_0xbbf227];return _0xfe830b;};'use strict';var BPromise=require('bluebird');var util=require(_0x3171('0x0'));var _=require(_0x3171('0x1'));var fs=require('fs');var squel=require(_0x3171('0x2'));var Papa=require(_0x3171('0x3'));var Redis=require(_0x3171('0x4'));var db=require(_0x3171('0x5'))['db'];var config=require(_0x3171('0x6'));var logger=require(_0x3171('0x7'))(_0x3171('0x8'));config[_0x3171('0x9')]=_[_0x3171('0xa')](config[_0x3171('0x9')],{'host':_0x3171('0xb'),'port':0x18eb});var socket=require(_0x3171('0xc'))(new Redis(config[_0x3171('0x9')]));require(_0x3171('0xd'))[_0x3171('0xe')](socket);try{if(!process['argv'][0x2]||process[_0x3171('0xf')][0x2]==='undefined'||process[_0x3171('0xf')][0x2]===_0x3171('0x10')){throw new Error(_0x3171('0x11'));}var FILEPATH=process[_0x3171('0xf')][0x2];if(!process[_0x3171('0xf')][0x3]||process[_0x3171('0xf')][0x3]===_0x3171('0x12')||process[_0x3171('0xf')][0x3]==='null'||!process[_0x3171('0xf')][0x4]||process[_0x3171('0xf')][0x4]===_0x3171('0x12')||process[_0x3171('0xf')][0x4]===_0x3171('0x10')){throw new Error(_0x3171('0x13'));}var FIELDS=_['zipObject'](process[_0x3171('0xf')][0x3][_0x3171('0x14')](','),process['argv'][0x4][_0x3171('0x14')](','));if(!process[_0x3171('0xf')][0x5]||process[_0x3171('0xf')][0x5]===_0x3171('0x12')||process[_0x3171('0xf')][0x5]===_0x3171('0x10')){throw new Error(_0x3171('0x15'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x3171('0xf')][0x6]&&process[_0x3171('0xf')][0x6]!==_0x3171('0x12')&&process['argv'][0x6]!==_0x3171('0x10')?process[_0x3171('0xf')][0x6]:null;var DUPLICATES=process[_0x3171('0xf')][0x7]&&process[_0x3171('0xf')][0x7]!=='undefined'&&process[_0x3171('0xf')][0x7]!==_0x3171('0x10')?process[_0x3171('0xf')][0x7]:null;if(!process[_0x3171('0xf')][0x8]||process[_0x3171('0xf')][0x8]===_0x3171('0x12')||process[_0x3171('0xf')][0x8]===_0x3171('0x10')){throw new Error(_0x3171('0x16'));}var SOCKET_TIMESTAMP=process[_0x3171('0xf')][0x8];}catch(_0x1b9374){logger[_0x3171('0x17')](_0x1b9374);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(_0x551631,_0x34b400,_0x5db3a5,_0x2ebf96){var _0x3dd789={'message':_0x34b400};_0x3dd789[_0x551631]=!![];if(_0x5db3a5){_0x3dd789['contact']=_0x5db3a5;}if(_0x2ebf96){_0x3dd789[_0x3171('0x18')]=_0x2ebf96;}return _0x3dd789;}function isEmail(_0x103380){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))*$/[_0x3171('0x19')](_0x103380);}function checkRow(_0x299fbb,_0x2a2ad2,_0x45c9a7){return new BPromise(function(_0x2d4ba0,_0x210924){if(_['isNil'](_0x299fbb)){return _0x210924(handleCheckRowError(_0x3171('0x17'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x45c9a7));}if(_0x299fbb[_0x3171('0x1a')]&&_0x299fbb[_0x3171('0x1a')][_0x3171('0x1b')]){var _0x698468=_[_0x3171('0x1c')](_0x299fbb[_0x3171('0x1a')],_0x3171('0x1d'))[_0x3171('0x1e')](';');return _0x210924(handleCheckRowError(_0x3171('0x17'),_0x698468,null,_0x45c9a7));}var _0x5f3ff5={};for(var _0x39dcf1 in FIELDS){if(FIELDS[_0x3171('0x1f')](_0x39dcf1)&&FIELDS[_0x39dcf1]){_0x5f3ff5[_0x39dcf1]=_0x299fbb[_0x3171('0x20')][0x0][FIELDS[_0x39dcf1]]||_0x299fbb['data'][0x0]['\ufeff'+FIELDS[_0x39dcf1]];}}if(!_0x5f3ff5[_0x3171('0x21')]){return _0x210924(handleCheckRowError(_0x3171('0x17'),_0x3171('0x22'),null,_0x45c9a7));}if(!_0x5f3ff5[_0x3171('0x23')]){return _0x210924(handleCheckRowError(_0x3171('0x17'),_0x3171('0x24'),null,_0x45c9a7));}if(_0x5f3ff5['birthDate']){var _0x3f9d35=moment(_0x5f3ff5[_0x3171('0x25')],_0x3171('0x26'));if(!_0x3f9d35['isValid']()){return _0x210924(handleCheckRowError(_0x3171('0x17'),_0x3171('0x27'),null,_0x45c9a7));}}if(_0x5f3ff5[_0x3171('0x28')]){if(!isEmail(_0x5f3ff5[_0x3171('0x28')])){return _0x210924(handleCheckRowError(_0x3171('0x17'),_0x3171('0x29'),null,_0x45c9a7));}}_0x5f3ff5[_0x3171('0x2a')]=LISTID;_0x5f3ff5[_0x3171('0x2b')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x2a2ad2){var _0x33fdf5={};for(var _0x45bcfa=0x0,_0x2236eb=DUPLICATES['length'];_0x45bcfa<_0x2236eb;_0x45bcfa+=0x1){_0x33fdf5[DUPLICATES[_0x45bcfa]]=_0x5f3ff5[DUPLICATES[_0x45bcfa]];}var _0x37c3a9=_[_0x3171('0x2c')](_0x2a2ad2,_0x33fdf5);if(_0x37c3a9){return _0x210924(handleCheckRowError(_0x3171('0x2d'),_0x3171('0x2e'),_0x37c3a9,_0x45c9a7));}}return db[_0x3171('0x2f')][_0x3171('0x30')](_0x5f3ff5,{'raw':!![],'hooks':![],'fields':_[_0x3171('0x31')](_0x5f3ff5)})[_0x3171('0x32')](function(_0xcec5f6){if(DUPLICATES&&DUPLICATES[_0x3171('0x1b')]&&_0x2a2ad2){_0x2a2ad2['push'](_['pick'](_0x5f3ff5,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0xcec5f6['id'];return _0x2d4ba0();})[_0x3171('0x33')](function(_0x542dd1){return _0x210924(handleCheckRowError(_0x3171('0x17'),_0x3171('0x34')+(_0x542dd1[_0x3171('0x1d')]||JSON[_0x3171('0x35')](_0x542dd1)),null,_0x45c9a7));});});}function checkHopper(){function _0x527340(){return function(_0x27a5e9){logger[_0x3171('0x17')](_0x3171('0x36'),'checkHopper',util[_0x3171('0x37')](_0x27a5e9,{'showHidden':![],'depth':null}));};}var _0x25ea61=function(_0x5b66ef,_0x277864){var _0x2355fe=squel[_0x3171('0x38')]()[_0x3171('0x39')](_0x3171('0x3a'))[_0x3171('0x3b')]([_0x3171('0x23'),'scheduledAt','ContactId','ListId',_0x277864,'createdAt','updatedAt'],squel[_0x3171('0x3c')]()[_0x3171('0x3d')](_0x3171('0x23'),_0x3171('0x23'))['field'](_0x3171('0x3e'),_0x3171('0x3f'))[_0x3171('0x3d')]('id',_0x3171('0x40'))[_0x3171('0x3d')](LISTID['toString'](),_0x3171('0x2a'))[_0x3171('0x3d')](_0x5b66ef['id'][_0x3171('0x41')](),_0x277864)[_0x3171('0x3d')](_0x3171('0x3e'),'createdAt')[_0x3171('0x3d')](_0x3171('0x3e'),'updatedAt')[_0x3171('0x42')](_0x3171('0x43'))['where'](_0x3171('0x44'))[_0x3171('0x45')](_0x3171('0x46'),LISTID['toString']())[_0x3171('0x45')](_0x3171('0x47'))['where'](_0x3171('0x48'),squel[_0x3171('0x3c')]()[_0x3171('0x3d')](_0x3171('0x23'))[_0x3171('0x42')](_0x3171('0x3a'))['where'](_0x277864+_0x3171('0x49'),_0x5b66ef['id'][_0x3171('0x41')]())))[_0x3171('0x41')]();return _0x2355fe;};var _0x86d7cd=function(_0xbc7c35,_0x4b3cda){var _0x285db5=squel[_0x3171('0x38')]()[_0x3171('0x39')](_0x3171('0x3a'))[_0x3171('0x3b')]([_0x3171('0x23'),'scheduledAt','ContactId',_0x3171('0x2a'),_0x4b3cda,_0x3171('0x4a'),_0x3171('0x4b')],squel['select']()['field']('phone',_0x3171('0x23'))[_0x3171('0x3d')]('NOW()',_0x3171('0x3f'))[_0x3171('0x3d')]('id',_0x3171('0x40'))['field'](LISTID[_0x3171('0x41')](),'ListId')[_0x3171('0x3d')](_0xbc7c35['id']['toString'](),_0x4b3cda)[_0x3171('0x3d')]('NOW()',_0x3171('0x4a'))[_0x3171('0x3d')](_0x3171('0x3e'),_0x3171('0x4b'))[_0x3171('0x42')](_0x3171('0x43'))[_0x3171('0x45')]('deletedAt\x20IS\x20NULL')[_0x3171('0x45')](_0x3171('0x46'),LISTID['toString']())[_0x3171('0x45')]('id\x20IN\x20?',squel[_0x3171('0x4c')](hopperContacts))[_0x3171('0x45')](_0x3171('0x47'))[_0x3171('0x45')](_0x3171('0x48'),squel['select']()[_0x3171('0x3d')](_0x3171('0x4d'))[_0x3171('0x42')](_0x3171('0x4e'))['where'](_0x4b3cda+_0x3171('0x49'),_0xbc7c35['id'][_0x3171('0x41')]()))[_0x3171('0x45')]('phone\x20NOT\x20IN\x20(?)',squel['select']()['field'](_0x3171('0x23'))['from']('cm_hopper')[_0x3171('0x45')](_0x4b3cda+_0x3171('0x49'),_0xbc7c35['id'][_0x3171('0x41')]())))[_0x3171('0x41')]();return _0x285db5;};function _0x5d205a(_0x1a3d5a,_0x3c40cd){var _0x53429a=squel['insert']()[_0x3171('0x39')](_0x3171('0x3a'))[_0x3171('0x3b')]([_0x3171('0x23'),_0x3171('0x3f'),_0x3171('0x40'),_0x3171('0x2a'),_0x3c40cd,_0x3171('0x4a'),_0x3171('0x4b')],squel[_0x3171('0x3c')]()['field'](_0x3171('0x23'),_0x3171('0x23'))[_0x3171('0x3d')](_0x3171('0x3e'),_0x3171('0x3f'))[_0x3171('0x3d')]('id',_0x3171('0x40'))['field'](LISTID[_0x3171('0x41')](),_0x3171('0x2a'))[_0x3171('0x3d')](_0x1a3d5a['id'][_0x3171('0x41')](),_0x3c40cd)['field'](_0x3171('0x3e'),_0x3171('0x4a'))[_0x3171('0x3d')](_0x3171('0x3e'),'updatedAt')[_0x3171('0x42')](_0x3171('0x43'))[_0x3171('0x45')](_0x3171('0x44'))['where'](_0x3171('0x46'),LISTID[_0x3171('0x41')]())[_0x3171('0x45')](_0x3171('0x4f'),squel[_0x3171('0x4c')](hopperContacts))[_0x3171('0x45')]('phone\x20IS\x20NOT\x20NULL'))[_0x3171('0x41')]();return _0x53429a;}function _0x2e3fd9(_0x1447d6,_0x4360d1){var _0x1d0240=squel[_0x3171('0x38')]()[_0x3171('0x39')](_0x3171('0x50'))[_0x3171('0x3b')]([_0x3171('0x23'),_0x3171('0x40'),'ListId',_0x4360d1,_0x3171('0x4a'),_0x3171('0x4b')],squel[_0x3171('0x3c')]()['field'](_0x3171('0x23'),_0x3171('0x23'))[_0x3171('0x3d')]('id',_0x3171('0x40'))[_0x3171('0x3d')](LISTID[_0x3171('0x41')](),'ListId')[_0x3171('0x3d')](_0x1447d6['id'][_0x3171('0x41')](),_0x4360d1)[_0x3171('0x3d')](_0x3171('0x3e'),_0x3171('0x4a'))[_0x3171('0x3d')](_0x3171('0x3e'),'updatedAt')[_0x3171('0x42')]('cm_contacts')[_0x3171('0x45')](_0x3171('0x44'))[_0x3171('0x45')](_0x3171('0x46'),LISTID[_0x3171('0x41')]())[_0x3171('0x45')](_0x3171('0x4f'),squel[_0x3171('0x4c')](hopperContacts))[_0x3171('0x45')]('phone\x20IS\x20NOT\x20NULL'))[_0x3171('0x41')]();return _0x1d0240;}return db[_0x3171('0x51')][_0x3171('0x52')]({'where':{'type':_0x3171('0x53')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x3171('0x54')],'as':_0x3171('0x55'),'where':{'id':LISTID}}]})['then'](function(_0x4b0557){var _0x2bf2cf=[];if(_0x4b0557){var _0x16c2e7;for(var _0x37b17d=0x0,_0x5aae1a;_0x37b17d<_0x4b0557[_0x3171('0x1b')];_0x37b17d+=0x1){_0x5aae1a=_0x4b0557[_0x37b17d][_0x3171('0x56')]({'plain':!![]});switch(_0x5aae1a[_0x3171('0x57')]){case'always':_0x2bf2cf[_0x3171('0x58')](db[_0x3171('0x59')]['query'](_0x86d7cd(_0x5aae1a,'VoiceQueueId'))[_0x3171('0x32')](function(){})[_0x3171('0x33')](_0x527340()));break;case _0x3171('0x5a'):_0x2bf2cf['push'](db['sequelize'][_0x3171('0x5b')](_0x25ea61(_0x5aae1a,'VoiceQueueId'))[_0x3171('0x32')](function(){})['catch'](_0x527340()));break;default:_0x2bf2cf[_0x3171('0x58')](db[_0x3171('0x59')][_0x3171('0x5b')](_0x5d205a(_0x5aae1a,_0x3171('0x5c')))['then'](function(){})['catch'](_0x527340()));}}}return _0x2bf2cf;})['all']()[_0x3171('0x32')](function(){return db[_0x3171('0x51')][_0x3171('0x52')]({'where':{'type':_0x3171('0x53')},'attributes':['id'],'include':[{'model':db['CmList'],'as':'BlackLists','where':{'id':LISTID}}]})[_0x3171('0x32')](function(_0x538a07){var _0x5a7cb3=[];if(_0x538a07){var _0x455a71;for(var _0xf7ab03=0x0,_0x52cd2e;_0xf7ab03<_0x538a07['length'];_0xf7ab03+=0x1){_0x52cd2e=_0x538a07[_0xf7ab03][_0x3171('0x56')]({'plain':!![]});_0x5a7cb3['push'](db[_0x3171('0x59')]['query'](_0x2e3fd9(_0x52cd2e,_0x3171('0x5c')))[_0x3171('0x32')](function(){})['catch'](_0x527340()));}}return _0x5a7cb3;})[_0x3171('0x5d')]();})[_0x3171('0x32')](function(){return db[_0x3171('0x5e')][_0x3171('0x52')]({'attributes':['id',_0x3171('0x57')],'include':[{'model':db[_0x3171('0x54')],'as':_0x3171('0x55'),'where':{'id':LISTID}}]})[_0x3171('0x32')](function(_0x202162){var _0x24fdbc=[];if(_0x202162){for(var _0x1c268a=0x0,_0x1ba220;_0x1c268a<_0x202162[_0x3171('0x1b')];_0x1c268a+=0x1){_0x1ba220=_0x202162[_0x1c268a][_0x3171('0x56')]({'plain':!![]});switch(_0x1ba220['dialCheckDuplicateType']){case _0x3171('0x5f'):_0x24fdbc['push'](db[_0x3171('0x59')][_0x3171('0x5b')](_0x86d7cd(_0x1ba220,'CampaignId'))[_0x3171('0x32')](function(){})['catch'](_0x527340()));break;case _0x3171('0x5a'):_0x24fdbc[_0x3171('0x58')](db[_0x3171('0x59')][_0x3171('0x5b')](_0x25ea61(_0x1ba220,_0x3171('0x60')))[_0x3171('0x32')](function(){})[_0x3171('0x33')](_0x527340()));break;default:_0x24fdbc[_0x3171('0x58')](db[_0x3171('0x59')][_0x3171('0x5b')](_0x5d205a(_0x1ba220,_0x3171('0x60')))['then'](function(){})['catch'](_0x527340()));}}}return _0x24fdbc;})[_0x3171('0x5d')]();})[_0x3171('0x32')](function(){return db[_0x3171('0x5e')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x3171('0x54')],'as':_0x3171('0x61'),'where':{'id':LISTID}}]})['then'](function(_0x6039fc){var _0xb4a345=[];if(_0x6039fc){for(var _0x1a7606=0x0,_0x3df83d;_0x1a7606<_0x6039fc[_0x3171('0x1b')];_0x1a7606+=0x1){_0x3df83d=_0x6039fc[_0x1a7606]['get']({'plain':!![]});_0xb4a345[_0x3171('0x58')](db[_0x3171('0x59')]['query'](_0x2e3fd9(_0x3df83d,_0x3171('0x60')))['then'](function(){})['catch'](_0x527340()));}}return _0xb4a345;})[_0x3171('0x5d')]();})[_0x3171('0x33')](function(_0x1d2f7b){logger[_0x3171('0x17')]('cmContact,\x20%s,\x20%s',_0x3171('0x62'),_0x1d2f7b[_0x3171('0x1d')]);});}var processPromises=function(_0x1a1952){return BPromise['all'](promises)[_0x3171('0x32')](function(_0x403478){})['catch'](function(_0x61c27b){logger[_0x3171('0x17')](_0x3171('0x63'),JSON['stringify'](_0x61c27b));})[_0x3171('0x64')](function(){socket[_0x3171('0x65')](_0x3171('0x66')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x1a1952){return _0x1a1952[_0x3171('0x67')]();}});};var endCsv=function(){return BPromise['resolve']()[_0x3171('0x32')](function(){if(hopperContacts){return checkHopper();}})[_0x3171('0x32')](function(){socket[_0x3171('0x65')](_0x3171('0x66')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x3171('0x68')](FILEPATH);}catch(_0x271d64){logger[_0x3171('0x17')]('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x3171('0x35')](_0x271d64));}finally{process['exit'](0x0);}});};process['on']('SIGINT',function(){logger['info'](_0x3171('0x69'));endCsv();});function main(){return BPromise['resolve']()[_0x3171('0x32')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x3171('0x14')](',');return db['CmContact'][_0x3171('0x52')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x3171('0x32')](function(_0x589ac0){var _0x3ec7a0=fs[_0x3171('0x6a')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x3171('0x6b')](_0x3ec7a0,{'header':!![],'skipEmptyLines':!![],'step':function(_0x5a9fb2,_0x423938){total+=0x1;var _0x725eb0=total;promises['push'](checkRow(_0x5a9fb2,_0x589ac0,_0x725eb0)[_0x3171('0x32')](function(){success+=0x1;})[_0x3171('0x33')](function(_0x3da8ad){if(_0x3da8ad[_0x3171('0x17')]){errors+=0x1;delete _0x3da8ad[_0x3171('0x17')];}else if(_0x3da8ad['duplicate']){duplicates+=0x1;delete _0x3da8ad[_0x3171('0x2d')];}rows[_0x3171('0x58')](_0x3da8ad);}));if(total%0xc8===0x0){_0x423938[_0x3171('0x6c')]();return processPromises(_0x423938);}},'complete':function(){return processPromises()['then'](function(){logger[_0x3171('0x6d')](_0x3171('0x6e'));endCsv();});},'error':function(_0x1dbf06,_0x4d9651){logger['info'](_0x3171('0x6f'),JSON[_0x3171('0x35')](_0x1dbf06));endCsv();}});})[_0x3171('0x33')](function(_0x5ed3f8){logger['error'](_0x3171('0x70'),JSON[_0x3171('0x35')](_0x5ed3f8));});}main();
\ No newline at end of file
+var _0x36b2=['\x20=\x20?','createdAt','select','deletedAt\x20IS\x20NULL','id\x20IN\x20?','str','calleridnum','cm_hopper_final','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','get','always','sequelize','query','VoiceQueueId','onlyIfOpen','BlackLists','all','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','emit','resume','resolve','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','stringify','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','../../../mysqldb','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','argv','undefined','Missing\x20filepath\x20parameter!','null','split','Missing\x20ListId\x20parameter!','error','contact','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','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','CmContact','create','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','cmContact','checkHopper','inspect','insert','into','cm_hopper','fromQuery','scheduledAt','updatedAt','field','NOW()','ContactId','toString','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)'];(function(_0x2a2397,_0x32b017){var _0x1408f8=function(_0x132cb7){while(--_0x132cb7){_0x2a2397['push'](_0x2a2397['shift']());}};_0x1408f8(++_0x32b017);}(_0x36b2,0x18a));var _0x236b=function(_0x4e2e6e,_0x2890de){_0x4e2e6e=_0x4e2e6e-0x0;var _0x2f333e=_0x36b2[_0x4e2e6e];return _0x2f333e;};'use strict';var BPromise=require(_0x236b('0x0'));var util=require(_0x236b('0x1'));var _=require(_0x236b('0x2'));var fs=require('fs');var squel=require(_0x236b('0x3'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require(_0x236b('0x4'))['db'];var config=require('../../../config/environment');var logger=require(_0x236b('0x5'))(_0x236b('0x6'));config[_0x236b('0x7')]=_[_0x236b('0x8')](config[_0x236b('0x7')],{'host':_0x236b('0x9'),'port':0x18eb});var socket=require(_0x236b('0xa'))(new Redis(config['redis']));require(_0x236b('0xb'))['register'](socket);try{if(!process[_0x236b('0xc')][0x2]||process['argv'][0x2]===_0x236b('0xd')||process[_0x236b('0xc')][0x2]==='null'){throw new Error(_0x236b('0xe'));}var FILEPATH=process[_0x236b('0xc')][0x2];if(!process[_0x236b('0xc')][0x3]||process[_0x236b('0xc')][0x3]===_0x236b('0xd')||process['argv'][0x3]===_0x236b('0xf')||!process[_0x236b('0xc')][0x4]||process[_0x236b('0xc')][0x4]===_0x236b('0xd')||process[_0x236b('0xc')][0x4]===_0x236b('0xf')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_['zipObject'](process[_0x236b('0xc')][0x3]['split'](','),process[_0x236b('0xc')][0x4][_0x236b('0x10')](','));if(!process['argv'][0x5]||process[_0x236b('0xc')][0x5]==='undefined'||process[_0x236b('0xc')][0x5]===_0x236b('0xf')){throw new Error(_0x236b('0x11'));}var LISTID=process[_0x236b('0xc')][0x5];var COMPANYID=process[_0x236b('0xc')][0x6]&&process[_0x236b('0xc')][0x6]!==_0x236b('0xd')&&process['argv'][0x6]!==_0x236b('0xf')?process[_0x236b('0xc')][0x6]:null;var DUPLICATES=process[_0x236b('0xc')][0x7]&&process[_0x236b('0xc')][0x7]!=='undefined'&&process[_0x236b('0xc')][0x7]!==_0x236b('0xf')?process[_0x236b('0xc')][0x7]:null;if(!process['argv'][0x8]||process['argv'][0x8]===_0x236b('0xd')||process[_0x236b('0xc')][0x8]===_0x236b('0xf')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x3a9648){logger[_0x236b('0x12')](_0x3a9648);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(_0x155f9e,_0x25f419,_0x975acb,_0x3046bb){var _0x47c761={'message':_0x25f419};_0x47c761[_0x155f9e]=!![];if(_0x975acb){_0x47c761[_0x236b('0x13')]=_0x975acb;}if(_0x3046bb){_0x47c761[_0x236b('0x14')]=_0x3046bb;}return _0x47c761;}function isEmail(_0x57a006){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))*$/[_0x236b('0x15')](_0x57a006);}function checkRow(_0x351565,_0x2a434a,_0x425465){return new BPromise(function(_0x584162,_0x37505c){if(_['isNil'](_0x351565)){return _0x37505c(handleCheckRowError(_0x236b('0x12'),_0x236b('0x16'),null,_0x425465));}if(_0x351565[_0x236b('0x17')]&&_0x351565[_0x236b('0x17')][_0x236b('0x18')]){var _0x49035e=_[_0x236b('0x19')](_0x351565['errors'],'message')['join'](';');return _0x37505c(handleCheckRowError(_0x236b('0x12'),_0x49035e,null,_0x425465));}var _0x147420={};for(var _0x4d3f6e in FIELDS){if(FIELDS[_0x236b('0x1a')](_0x4d3f6e)&&FIELDS[_0x4d3f6e]){_0x147420[_0x4d3f6e]=_0x351565[_0x236b('0x1b')][0x0][FIELDS[_0x4d3f6e]]||_0x351565['data'][0x0]['\ufeff'+FIELDS[_0x4d3f6e]];}}if(!_0x147420[_0x236b('0x1c')]){return _0x37505c(handleCheckRowError(_0x236b('0x12'),_0x236b('0x1d'),null,_0x425465));}if(!_0x147420[_0x236b('0x1e')]){return _0x37505c(handleCheckRowError(_0x236b('0x12'),_0x236b('0x1f'),null,_0x425465));}if(_0x147420[_0x236b('0x20')]){var _0x549dbd=moment(_0x147420[_0x236b('0x20')],_0x236b('0x21'));if(!_0x549dbd[_0x236b('0x22')]()){return _0x37505c(handleCheckRowError(_0x236b('0x12'),_0x236b('0x23'),null,_0x425465));}}if(_0x147420[_0x236b('0x24')]){if(!isEmail(_0x147420[_0x236b('0x24')])){return _0x37505c(handleCheckRowError('error',_0x236b('0x25'),null,_0x425465));}}_0x147420[_0x236b('0x26')]=LISTID;_0x147420[_0x236b('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x2a434a){var _0x8ad765={};for(var _0x4c0f16=0x0,_0x519c58=DUPLICATES[_0x236b('0x18')];_0x4c0f16<_0x519c58;_0x4c0f16+=0x1){_0x8ad765[DUPLICATES[_0x4c0f16]]=_0x147420[DUPLICATES[_0x4c0f16]];}var _0x1bb076=_[_0x236b('0x28')](_0x2a434a,_0x8ad765);if(_0x1bb076){return _0x37505c(handleCheckRowError(_0x236b('0x29'),_0x236b('0x2a'),_0x1bb076,_0x425465));}}return db[_0x236b('0x2b')][_0x236b('0x2c')](_0x147420,{'raw':!![],'hooks':![],'fields':_['keys'](_0x147420)})[_0x236b('0x2d')](function(_0x4bdf61){if(DUPLICATES&&DUPLICATES[_0x236b('0x18')]&&_0x2a434a){_0x2a434a[_0x236b('0x2e')](_[_0x236b('0x2f')](_0x147420,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x4bdf61['id'];return _0x584162();})[_0x236b('0x30')](function(_0x53f68c){return _0x37505c(handleCheckRowError(_0x236b('0x12'),_0x236b('0x31')+(_0x53f68c[_0x236b('0x32')]||JSON['stringify'](_0x53f68c)),null,_0x425465));});});}function checkHopper(){function _0x596bb8(){return function(_0x38d12d){logger[_0x236b('0x12')](_0x236b('0x33'),_0x236b('0x34'),util[_0x236b('0x35')](_0x38d12d,{'showHidden':![],'depth':null}));};}var _0x1ef3a1=function(_0x11ed25,_0x3066d3){var _0x536ede=squel[_0x236b('0x36')]()[_0x236b('0x37')](_0x236b('0x38'))[_0x236b('0x39')](['phone',_0x236b('0x3a'),'ContactId',_0x236b('0x26'),_0x3066d3,'createdAt',_0x236b('0x3b')],squel['select']()[_0x236b('0x3c')](_0x236b('0x1e'),_0x236b('0x1e'))[_0x236b('0x3c')](_0x236b('0x3d'),_0x236b('0x3a'))[_0x236b('0x3c')]('id',_0x236b('0x3e'))[_0x236b('0x3c')](LISTID[_0x236b('0x3f')](),'ListId')['field'](_0x11ed25['id'][_0x236b('0x3f')](),_0x3066d3)[_0x236b('0x3c')](_0x236b('0x3d'),'createdAt')['field']('NOW()',_0x236b('0x3b'))[_0x236b('0x40')](_0x236b('0x41'))[_0x236b('0x42')]('deletedAt\x20IS\x20NULL')[_0x236b('0x42')](_0x236b('0x43'),LISTID['toString']())['where'](_0x236b('0x44'))[_0x236b('0x42')](_0x236b('0x45'),squel['select']()[_0x236b('0x3c')](_0x236b('0x1e'))[_0x236b('0x40')](_0x236b('0x38'))['where'](_0x3066d3+_0x236b('0x46'),_0x11ed25['id'][_0x236b('0x3f')]())))[_0x236b('0x3f')]();return _0x536ede;};var _0x4e7e6b=function(_0x1bc8f3,_0x530e9b){var _0xd94256=squel['insert']()['into'](_0x236b('0x38'))['fromQuery']([_0x236b('0x1e'),_0x236b('0x3a'),_0x236b('0x3e'),_0x236b('0x26'),_0x530e9b,_0x236b('0x47'),_0x236b('0x3b')],squel[_0x236b('0x48')]()[_0x236b('0x3c')]('phone',_0x236b('0x1e'))[_0x236b('0x3c')](_0x236b('0x3d'),_0x236b('0x3a'))[_0x236b('0x3c')]('id',_0x236b('0x3e'))[_0x236b('0x3c')](LISTID[_0x236b('0x3f')](),'ListId')[_0x236b('0x3c')](_0x1bc8f3['id'][_0x236b('0x3f')](),_0x530e9b)['field'](_0x236b('0x3d'),_0x236b('0x47'))[_0x236b('0x3c')](_0x236b('0x3d'),_0x236b('0x3b'))[_0x236b('0x40')](_0x236b('0x41'))[_0x236b('0x42')](_0x236b('0x49'))['where'](_0x236b('0x43'),LISTID['toString']())['where'](_0x236b('0x4a'),squel[_0x236b('0x4b')](hopperContacts))[_0x236b('0x42')]('phone\x20IS\x20NOT\x20NULL')[_0x236b('0x42')](_0x236b('0x45'),squel['select']()['field'](_0x236b('0x4c'))['from'](_0x236b('0x4d'))[_0x236b('0x42')](_0x530e9b+_0x236b('0x46'),_0x1bc8f3['id'][_0x236b('0x3f')]()))[_0x236b('0x42')](_0x236b('0x45'),squel['select']()[_0x236b('0x3c')]('phone')[_0x236b('0x40')]('cm_hopper')[_0x236b('0x42')](_0x530e9b+_0x236b('0x46'),_0x1bc8f3['id'][_0x236b('0x3f')]())))[_0x236b('0x3f')]();return _0xd94256;};function _0x1b203a(_0x2354ea,_0x445f14){var _0x34cd8a=squel['insert']()['into'](_0x236b('0x38'))['fromQuery']([_0x236b('0x1e'),_0x236b('0x3a'),'ContactId',_0x236b('0x26'),_0x445f14,_0x236b('0x47'),'updatedAt'],squel['select']()[_0x236b('0x3c')](_0x236b('0x1e'),_0x236b('0x1e'))['field']('NOW()','scheduledAt')[_0x236b('0x3c')]('id',_0x236b('0x3e'))[_0x236b('0x3c')](LISTID['toString'](),_0x236b('0x26'))[_0x236b('0x3c')](_0x2354ea['id'][_0x236b('0x3f')](),_0x445f14)[_0x236b('0x3c')](_0x236b('0x3d'),_0x236b('0x47'))[_0x236b('0x3c')](_0x236b('0x3d'),_0x236b('0x3b'))[_0x236b('0x40')](_0x236b('0x41'))[_0x236b('0x42')]('deletedAt\x20IS\x20NULL')['where'](_0x236b('0x43'),LISTID[_0x236b('0x3f')]())[_0x236b('0x42')](_0x236b('0x4a'),squel[_0x236b('0x4b')](hopperContacts))[_0x236b('0x42')](_0x236b('0x44')))[_0x236b('0x3f')]();return _0x34cd8a;}function _0x50b97a(_0x66679a,_0x528cbe){var _0x414f25=squel[_0x236b('0x36')]()[_0x236b('0x37')](_0x236b('0x4e'))[_0x236b('0x39')]([_0x236b('0x1e'),_0x236b('0x3e'),_0x236b('0x26'),_0x528cbe,_0x236b('0x47'),_0x236b('0x3b')],squel[_0x236b('0x48')]()[_0x236b('0x3c')](_0x236b('0x1e'),_0x236b('0x1e'))[_0x236b('0x3c')]('id',_0x236b('0x3e'))[_0x236b('0x3c')](LISTID[_0x236b('0x3f')](),_0x236b('0x26'))[_0x236b('0x3c')](_0x66679a['id'][_0x236b('0x3f')](),_0x528cbe)[_0x236b('0x3c')]('NOW()',_0x236b('0x47'))[_0x236b('0x3c')](_0x236b('0x3d'),_0x236b('0x3b'))['from'](_0x236b('0x41'))['where'](_0x236b('0x49'))['where'](_0x236b('0x43'),LISTID[_0x236b('0x3f')]())['where'](_0x236b('0x4a'),squel[_0x236b('0x4b')](hopperContacts))[_0x236b('0x42')]('phone\x20IS\x20NOT\x20NULL'))[_0x236b('0x3f')]();return _0x414f25;}return db[_0x236b('0x4f')][_0x236b('0x50')]({'where':{'type':_0x236b('0x51')},'attributes':['id',_0x236b('0x52')],'include':[{'model':db[_0x236b('0x53')],'as':_0x236b('0x54'),'where':{'id':LISTID}}]})[_0x236b('0x2d')](function(_0x4f4e89){var _0x378037=[];if(_0x4f4e89){var _0x35dd84;for(var _0x29593f=0x0,_0x4b53b0;_0x29593f<_0x4f4e89[_0x236b('0x18')];_0x29593f+=0x1){_0x4b53b0=_0x4f4e89[_0x29593f][_0x236b('0x55')]({'plain':!![]});switch(_0x4b53b0[_0x236b('0x52')]){case _0x236b('0x56'):_0x378037[_0x236b('0x2e')](db[_0x236b('0x57')][_0x236b('0x58')](_0x4e7e6b(_0x4b53b0,_0x236b('0x59')))[_0x236b('0x2d')](function(){})[_0x236b('0x30')](_0x596bb8()));break;case _0x236b('0x5a'):_0x378037[_0x236b('0x2e')](db[_0x236b('0x57')]['query'](_0x1ef3a1(_0x4b53b0,_0x236b('0x59')))[_0x236b('0x2d')](function(){})['catch'](_0x596bb8()));break;default:_0x378037['push'](db[_0x236b('0x57')]['query'](_0x1b203a(_0x4b53b0,_0x236b('0x59')))['then'](function(){})[_0x236b('0x30')](_0x596bb8()));}}}return _0x378037;})['all']()['then'](function(){return db[_0x236b('0x4f')][_0x236b('0x50')]({'where':{'type':_0x236b('0x51')},'attributes':['id'],'include':[{'model':db[_0x236b('0x53')],'as':_0x236b('0x5b'),'where':{'id':LISTID}}]})[_0x236b('0x2d')](function(_0x2c162a){var _0x3ecd0d=[];if(_0x2c162a){var _0xf98dc2;for(var _0x11bee3=0x0,_0x33da71;_0x11bee3<_0x2c162a[_0x236b('0x18')];_0x11bee3+=0x1){_0x33da71=_0x2c162a[_0x11bee3][_0x236b('0x55')]({'plain':!![]});_0x3ecd0d[_0x236b('0x2e')](db['sequelize']['query'](_0x50b97a(_0x33da71,_0x236b('0x59')))['then'](function(){})['catch'](_0x596bb8()));}}return _0x3ecd0d;})[_0x236b('0x5c')]();})[_0x236b('0x2d')](function(){return db[_0x236b('0x5d')][_0x236b('0x50')]({'attributes':['id',_0x236b('0x52')],'include':[{'model':db['CmList'],'as':_0x236b('0x54'),'where':{'id':LISTID}}]})[_0x236b('0x2d')](function(_0x397289){var _0x56ba7a=[];if(_0x397289){for(var _0x3f3e3b=0x0,_0x2d20c9;_0x3f3e3b<_0x397289['length'];_0x3f3e3b+=0x1){_0x2d20c9=_0x397289[_0x3f3e3b]['get']({'plain':!![]});switch(_0x2d20c9[_0x236b('0x52')]){case'always':_0x56ba7a[_0x236b('0x2e')](db['sequelize'][_0x236b('0x58')](_0x4e7e6b(_0x2d20c9,_0x236b('0x5e')))[_0x236b('0x2d')](function(){})[_0x236b('0x30')](_0x596bb8()));break;case _0x236b('0x5a'):_0x56ba7a[_0x236b('0x2e')](db[_0x236b('0x57')][_0x236b('0x58')](_0x1ef3a1(_0x2d20c9,_0x236b('0x5e')))['then'](function(){})[_0x236b('0x30')](_0x596bb8()));break;default:_0x56ba7a[_0x236b('0x2e')](db[_0x236b('0x57')][_0x236b('0x58')](_0x1b203a(_0x2d20c9,_0x236b('0x5e')))[_0x236b('0x2d')](function(){})[_0x236b('0x30')](_0x596bb8()));}}}return _0x56ba7a;})[_0x236b('0x5c')]();})['then'](function(){return db[_0x236b('0x5d')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x236b('0x53')],'as':_0x236b('0x5b'),'where':{'id':LISTID}}]})[_0x236b('0x2d')](function(_0x1994c7){var _0x22e859=[];if(_0x1994c7){for(var _0x234b63=0x0,_0x252331;_0x234b63<_0x1994c7[_0x236b('0x18')];_0x234b63+=0x1){_0x252331=_0x1994c7[_0x234b63][_0x236b('0x55')]({'plain':!![]});_0x22e859[_0x236b('0x2e')](db['sequelize'][_0x236b('0x58')](_0x50b97a(_0x252331,'CampaignId'))[_0x236b('0x2d')](function(){})[_0x236b('0x30')](_0x596bb8()));}}return _0x22e859;})[_0x236b('0x5c')]();})[_0x236b('0x30')](function(_0xc3a7da){logger[_0x236b('0x12')](_0x236b('0x5f'),_0x236b('0x60'),_0xc3a7da[_0x236b('0x32')]);});}var processPromises=function(_0x52e131){return BPromise['all'](promises)[_0x236b('0x2d')](function(_0x556700){})[_0x236b('0x30')](function(_0x3c4b8a){logger[_0x236b('0x12')](_0x236b('0x61'),JSON['stringify'](_0x3c4b8a));})[_0x236b('0x62')](function(){socket[_0x236b('0x63')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x52e131){return _0x52e131[_0x236b('0x64')]();}});};var endCsv=function(){return BPromise[_0x236b('0x65')]()[_0x236b('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0x236b('0x2d')](function(){socket[_0x236b('0x63')](_0x236b('0x66')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x236b('0x67')](FILEPATH);}catch(_0x141381){logger['error'](_0x236b('0x68'),JSON['stringify'](_0x141381));}finally{process[_0x236b('0x69')](0x0);}});};process['on'](_0x236b('0x6a'),function(){logger[_0x236b('0x6b')](_0x236b('0x6c'));endCsv();});function main(){return BPromise[_0x236b('0x65')]()[_0x236b('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x236b('0x10')](',');return db['CmContact']['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x236b('0x2d')](function(_0x475e12){var _0x3eb4f4=fs[_0x236b('0x6d')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x236b('0x6e')](_0x3eb4f4,{'header':!![],'skipEmptyLines':!![],'step':function(_0x40dc4e,_0x22be05){total+=0x1;var _0x36bcb5=total;promises[_0x236b('0x2e')](checkRow(_0x40dc4e,_0x475e12,_0x36bcb5)['then'](function(){success+=0x1;})[_0x236b('0x30')](function(_0x39e279){if(_0x39e279[_0x236b('0x12')]){errors+=0x1;delete _0x39e279[_0x236b('0x12')];}else if(_0x39e279[_0x236b('0x29')]){duplicates+=0x1;delete _0x39e279['duplicate'];}rows['push'](_0x39e279);}));if(total%0xc8===0x0){_0x22be05[_0x236b('0x6f')]();return processPromises(_0x22be05);}},'complete':function(){return processPromises()[_0x236b('0x2d')](function(){logger[_0x236b('0x6b')](_0x236b('0x70'));endCsv();});},'error':function(_0x38483b,_0x210c8a){logger[_0x236b('0x6b')](_0x236b('0x71'),JSON[_0x236b('0x72')](_0x38483b));endCsv();}});})[_0x236b('0x30')](function(_0x4078a6){logger[_0x236b('0x12')](_0x236b('0x73'),JSON[_0x236b('0x72')](_0x4078a6));});}main();
\ No newline at end of file
index 8a2d109..3db85a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcba2=['header','writeFileSync','parse','createReadStream','length','errors','hasOwnProperty','data','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','email','email\x20wrong\x20format','dateOfBirth','\x20not\x20specified','SystemRow','appendFileSync','rows','emit','contact:import:','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues_has_cm_lists','VoiceQueueId','voice_queues','campaigns_has_cm_lists','campaigns','CampaignId','campaigns_has_cm_blacklists','each','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','uncaughtException','path','lodash','papaparse','moment','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','defaults','localhost','format','test','select','field','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','phone','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_hopper_black','ListId\x20=\x20?','\x20=\x20?','concat','keys','CompanyId','MIN(id)','info','Received\x20SIGINT','error','message','exit','code','query','push','catch','main','stringify','send','binding','socket_timestamp','.csv'];(function(_0x161410,_0x4ee06f){var _0x1a8c77=function(_0x451d97){while(--_0x451d97){_0x161410['push'](_0x161410['shift']());}};_0x1a8c77(++_0x4ee06f);}(_0xcba2,0x1cd));var _0x2cba=function(_0x3e901f,_0x57bff5){_0x3e901f=_0x3e901f-0x0;var _0x5a9079=_0xcba2[_0x3e901f];return _0x5a9079;};'use strict';var fs=require('fs');var path=require(_0x2cba('0x0'));var _=require(_0x2cba('0x1'));var Papa=require(_0x2cba('0x2'));var util=require('util');var BPromise=require('bluebird');var moment=require(_0x2cba('0x3'));var squel=require(_0x2cba('0x4'));var Redis=require('ioredis');var db=require(_0x2cba('0x5'))['db'];var config=require(_0x2cba('0x6'));var logger=require(_0x2cba('0x7'))(_0x2cba('0x8'));config[_0x2cba('0x9')]=_[_0x2cba('0xa')](config[_0x2cba('0x9')],{'host':_0x2cba('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x2cba('0xc')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x144034){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))*$/[_0x2cba('0xd')](_0x144034);}function selectNotIn(_0x3309c1,_0x226798,_0x76910f,_0x4a8b2f,_0x31bec7){return squel[_0x2cba('0xe')]()[_0x2cba('0xf')]('phone')['from'](_0x4a8b2f)[_0x2cba('0x10')](_0x226798,null,_0x226798+_0x2cba('0x11')+_0x4a8b2f+'.'+_0x76910f)[_0x2cba('0x12')](_0x4a8b2f+'.'+_0x76910f+_0x2cba('0x13')+_0x3309c1+'.'+_0x76910f)[_0x2cba('0x12')](_0x226798+_0x2cba('0x14')+_0x31bec7['join']()+')');}function insertCmHopper(_0x5e3c74,_0x3bddea,_0x5e3b84,_0x3fc3aa,_0x2d785b){var _0x837c46=[_0x2cba('0x15'),_0x2cba('0x16'),_0x2cba('0x17'),_0x2cba('0x18'),_0x3bddea+'.'+_0x3fc3aa,_0x2cba('0x19'),_0x2cba('0x1a'),_0x2cba('0x1b'),_0x2cba('0x1c'),'\x22'+_0x2d785b+'\x22'];return squel[_0x2cba('0x1d')]()[_0x2cba('0x1e')](_0x2cba('0x1f'))[_0x2cba('0x20')](['phone',_0x2cba('0x21'),_0x2cba('0x22'),_0x2cba('0x23'),_0x3fc3aa,_0x2cba('0x24'),_0x2cba('0x25'),_0x2cba('0x26'),_0x2cba('0x27'),_0x2cba('0x28')],squel['select']()[_0x2cba('0x29')](_0x837c46)[_0x2cba('0x2a')](_0x3bddea)['join'](_0x2cba('0x2b'),null,_0x2cba('0x2c')+_0x3bddea+'.CmListId')[_0x2cba('0x10')](_0x5e3b84,null,_0x5e3b84+'.id\x20=\x20'+_0x3bddea+'.'+_0x3fc3aa)[_0x2cba('0x12')](_0x3bddea+'.CmListId\x20=\x20?',_0x5e3c74)[_0x2cba('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x2cba('0x12')](_0x2cba('0x2d'),selectNotIn(_0x3bddea,_0x5e3b84,_0x3fc3aa,_0x2cba('0x1f'),[_0x2cba('0x2e'),_0x2cba('0x2f')]))[_0x2cba('0x12')](_0x2cba('0x2d'),selectNotIn(_0x3bddea,_0x5e3b84,_0x3fc3aa,_0x2cba('0x1f'),[_0x2cba('0x2e')])))[_0x2cba('0x30')]();}function insertCmHopperBlack(_0x1aa885,_0x3a518b,_0x1a0b0c,_0x9fe08c){var _0x36681a=['cm_contacts.phone','cm_contacts.id','cm_contacts.ListId',_0x3a518b+'.'+_0x9fe08c,_0x2cba('0x19'),_0x2cba('0x1a')];return squel[_0x2cba('0x1d')]()[_0x2cba('0x1e')]('cm_hopper_black')['fromQuery']([_0x2cba('0x31'),_0x2cba('0x22'),'ListId',_0x9fe08c,'createdAt',_0x2cba('0x25')],squel[_0x2cba('0xe')]()['fields'](_0x36681a)[_0x2cba('0x2a')](_0x3a518b)[_0x2cba('0x10')]('cm_contacts',null,_0x2cba('0x2c')+_0x3a518b+_0x2cba('0x32'))[_0x2cba('0x10')](_0x1a0b0c,null,_0x1a0b0c+_0x2cba('0x11')+_0x3a518b+'.'+_0x9fe08c)[_0x2cba('0x12')](_0x3a518b+_0x2cba('0x33'),_0x1aa885)[_0x2cba('0x12')](_0x2cba('0x34'),NOW)['where'](_0x2cba('0x2d'),squel[_0x2cba('0xe')]()['field'](_0x2cba('0x31'))[_0x2cba('0x2a')](_0x2cba('0x35'))[_0x2cba('0x12')](_0x2cba('0x36'),_0x1aa885)[_0x2cba('0x12')](_0x9fe08c+_0x2cba('0x37'),_0x3a518b+'.'+_0x9fe08c)))[_0x2cba('0x30')]();}function insertCmContact(_0xdecbc0,_0x43ff75,_0x503491,_0x462634){var _0x1ef33e=_[_0x2cba('0x38')](_[_0x2cba('0x39')](_0x462634),[_0x2cba('0x23'),_0x2cba('0x3a'),_0x2cba('0x24'),_0x2cba('0x25')]);return squel[_0x2cba('0x1d')]()[_0x2cba('0x1e')](_0x2cba('0x2b'))[_0x2cba('0x20')](_0x1ef33e,squel[_0x2cba('0xe')]()[_0x2cba('0x29')](_0x1ef33e)[_0x2cba('0x2a')](_0x43ff75)['where']('('+_0x503491[_0x2cba('0x10')](',')+')\x20NOT\x20IN\x20?',squel['select']()['fields'](_0x503491)['from'](_0x2cba('0x2b'))[_0x2cba('0x12')]('ListId\x20=\x20?',_0xdecbc0))[_0x2cba('0x12')]('id\x20IN\x20?',squel[_0x2cba('0xe')]()[_0x2cba('0xf')](_0x2cba('0x3b'),'min_id')[_0x2cba('0x2a')](_0x43ff75)['group'](_0x503491[_0x2cba('0x10')](','))))[_0x2cba('0x30')]();}function handleStop(){logger[_0x2cba('0x3c')](_0x2cba('0x3d'));stopped=!![];}function handleUncaughtException(_0xbebc50){logger[_0x2cba('0x3e')](_0xbebc50[_0x2cba('0x3f')]);process[_0x2cba('0x40')](0x1);}function handleError(_0x4d73f7,_0x652acb){stats['errors']['push']({'name':_0x652acb[_0x2cba('0x41')],'message':_0x652acb[_0x2cba('0x3f')],'row':_0x4d73f7});}function handleQuery(_0x1402f3){logger[_0x2cba('0x3c')](_0x1402f3);return db['sequelize'][_0x2cba('0x42')](_0x1402f3)['spread'](function(_0x42b526){results[_0x2cba('0x43')](_0x42b526);})[_0x2cba('0x44')](function(_0x9eb03c){logger['error'](_0x9eb03c[_0x2cba('0x3f')]);});}function main(_0x4fc00e,_0x4c9705,_0x1a5868,_0x5cb9ad){logger['info'](_0x2cba('0x45'),_0x4fc00e,JSON[_0x2cba('0x46')](_0x4c9705));process[_0x2cba('0x47')]('start');var _0x30c821=_0x4c9705[_0x2cba('0x48')];var _0x8c5c93=_0x4c9705[_0x2cba('0x49')];var _0x36bf27=path['join'](config['root'],'server/files/tmp',_0x8c5c93+_0x2cba('0x4a'));var _0x3d90da=_[_0x2cba('0x39')](_0x30c821)['join']();logger[_0x2cba('0x3c')](_0x2cba('0x4b'),_0x3d90da);fs[_0x2cba('0x4c')](_0x36bf27,_0x3d90da+'\x0a');Papa[_0x2cba('0x4d')](fs[_0x2cba('0x4e')](_0x4fc00e),{'header':!![],'skipEmptyLines':!![],'step':function(_0x355ebd,_0x24585f){try{for(var _0x1a88d4=0x0,_0x203ec2=[];_0x1a88d4<_0x355ebd['data'][_0x2cba('0x4f')];_0x1a88d4++){stats['rows']+=0x1;if(_0x355ebd['errors'][_0x1a88d4]){handleError(_0x355ebd['data'][_0x1a88d4],_0x355ebd[_0x2cba('0x50')][_0x1a88d4]);}else{var _0x216e5b=[];for(var _0x3da858 in _0x30c821){if(_0x30c821[_0x2cba('0x51')](_0x3da858)){if(_0x355ebd[_0x2cba('0x52')][_0x1a88d4][_0x30c821[_0x3da858]]){var _0x163b4d=_['trim'](_0x355ebd[_0x2cba('0x52')][_0x1a88d4][_0x30c821[_0x3da858]]['replace'](/"/g,'\x27'));switch(_0x3da858){case _0x2cba('0x21'):var _0x409d0c=moment(_0x163b4d,_0x2cba('0x53'),!![]);if(_0x409d0c[_0x2cba('0x54')]()){_0x203ec2[_0x2cba('0x43')]('\x22'+_0x163b4d+'\x22');}else{_0x216e5b[_0x2cba('0x43')](_0x2cba('0x55'));}break;case _0x2cba('0x26'):var _0x1b0476=parseInt(_0x163b4d);_0x163b4d=_[_0x2cba('0x56')](_0x1b0476)||_0x1b0476<0x0||_0x1b0476>0x4?_0x5cb9ad?0x3:0x2:_0x1b0476;_0x203ec2[_0x2cba('0x43')]('\x22'+_0x163b4d+'\x22');break;case'UserId':var _0x49e406=parseInt(_0x163b4d);if(_[_0x2cba('0x57')](_0x49e406)&&_[_0x2cba('0x58')](_0x1a5868,_0x49e406)){_0x203ec2[_0x2cba('0x43')]('\x22'+_0x49e406+'\x22');}else{_0x216e5b[_0x2cba('0x43')]('agent\x20not\x20exists');}break;case _0x2cba('0x59'):if(isEmail(_0x163b4d)){_0x203ec2[_0x2cba('0x43')]('\x22'+_0x163b4d+'\x22');}else{_0x216e5b['push'](_0x2cba('0x5a'));}break;case _0x2cba('0x5b'):var _0x3d816b=moment(_0x163b4d,'YYYY-MM-DD',!![]);if(_0x3d816b[_0x2cba('0x54')]()){_0x203ec2[_0x2cba('0x43')]('\x22'+_0x163b4d+'\x22');}else{_0x216e5b['push']('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x203ec2[_0x2cba('0x43')]('\x22'+_0x163b4d+'\x22');}}else{switch(_0x3da858){case'firstName':case _0x2cba('0x31'):_0x216e5b[_0x2cba('0x43')](_0x3da858+_0x2cba('0x5c'));break;default:_0x203ec2[_0x2cba('0x43')]('\x22\x22');}}}}if(_0x216e5b[_0x2cba('0x4f')]){handleError(_0x355ebd[_0x2cba('0x52')][_0x1a88d4],{'code':_0x2cba('0x5d'),'message':_0x216e5b[_0x2cba('0x10')]()});}else{fs[_0x2cba('0x5e')](_0x36bf27,_0x203ec2[_0x2cba('0x10')]()+'\x0a');}_0x203ec2=[];}if(!(stats[_0x2cba('0x5f')]%0xc8)){socket[_0x2cba('0x60')](_0x2cba('0x61')+_0x8c5c93,stats);stats['errors']=[];}}if(stopped){logger[_0x2cba('0x3c')]('Abort\x20parser');_0x24585f[_0x2cba('0x62')]();}}catch(_0x224729){handleError(_0x355ebd[_0x2cba('0x52')][_0x1a88d4],{'code':_0x2cba('0x63'),'message':_0x224729[_0x2cba('0x3f')]});logger['error'](_0x2cba('0x64'),_0x224729[_0x2cba('0x3f')]);}},'complete':function(){try{var _0x58451f=[];var _0x1e52bc=_0x2cba('0x2b');if(_0x4c9705[_0x2cba('0x65')]&&_0x4c9705['duplicates'][_0x2cba('0x4f')]){_0x1e52bc=_0x2cba('0x66')+_0x8c5c93;_0x58451f[_0x2cba('0x43')](_0x2cba('0x67')+_0x1e52bc+_0x2cba('0x68'));}var _0x15e590=util[_0x2cba('0xc')](_0x2cba('0x69'),_0x36bf27,_0x1e52bc,_0x3d90da,_0x4c9705[_0x2cba('0x23')],_0x4c9705['CompanyId']||null,NOW,NOW);if(_[_0x2cba('0x6a')](_0x30c821[_0x2cba('0x21')])){_0x15e590+=_0x2cba('0x6b');}_0x58451f[_0x2cba('0x43')](_0x15e590);if(_0x4c9705[_0x2cba('0x65')]&&_0x4c9705[_0x2cba('0x65')][_0x2cba('0x4f')]){_0x58451f[_0x2cba('0x43')](insertCmContact(_0x4c9705['ListId'],_0x1e52bc,_0x4c9705[_0x2cba('0x65')],_0x30c821));_0x58451f[_0x2cba('0x43')](_0x2cba('0x6c')+_0x1e52bc+';');}_0x58451f[_0x2cba('0x43')](insertCmHopper(_0x4c9705['ListId'],_0x2cba('0x6d'),'voice_queues',_0x2cba('0x6e'),_0x5cb9ad));_0x58451f[_0x2cba('0x43')](insertCmHopperBlack(_0x4c9705[_0x2cba('0x23')],'voice_queues_has_cm_blacklists',_0x2cba('0x6f'),'VoiceQueueId'));_0x58451f[_0x2cba('0x43')](insertCmHopper(_0x4c9705[_0x2cba('0x23')],_0x2cba('0x70'),_0x2cba('0x71'),_0x2cba('0x72'),_0x5cb9ad));_0x58451f['push'](insertCmHopperBlack(_0x4c9705[_0x2cba('0x23')],_0x2cba('0x73'),_0x2cba('0x71'),_0x2cba('0x72')));BPromise[_0x2cba('0x74')](_0x58451f,handleQuery)['then'](function(_0x3406ab){stats[_0x2cba('0x75')]=!![];stats[_0x2cba('0x76')]=_0x4c9705['duplicates']&&_0x4c9705[_0x2cba('0x65')][_0x2cba('0x4f')]?results[0x2][_0x2cba('0x76')]:results[0x0][_0x2cba('0x76')];socket['emit'](_0x2cba('0x61')+_0x8c5c93,stats);fs['unlink'](_0x4fc00e);fs[_0x2cba('0x77')](_0x36bf27);process[_0x2cba('0x40')](0x0);})[_0x2cba('0x44')](function(_0x311f62){logger[_0x2cba('0x3e')](_0x311f62[_0x2cba('0x3f')]);process['exit'](0x1);});}catch(_0x259800){logger['error'](_0x2cba('0x78'),_0x259800['message']);process['exit'](0x1);}},'error':function(_0x2c989f,_0x4aac98,_0x4bc200,_0x88496a){throw new Error(_0x88496a);}});}function validate(){if(process[_0x2cba('0x79')]&&process[_0x2cba('0x79')][_0x2cba('0x4f')]<0x4){throw new Error(_0x2cba('0x7a'));}var _0x4dc5ba=path['join'](config[_0x2cba('0x7b')],_0x2cba('0x7c'),process[_0x2cba('0x79')][0x2]);if(!fs[_0x2cba('0x7d')](_0x4dc5ba)){throw new Error(_0x2cba('0x7e'));}var _0xaf749c={};try{_0xaf749c=JSON[_0x2cba('0x4d')](process[_0x2cba('0x79')][0x3]);if(!_0xaf749c[_0x2cba('0x48')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0xaf749c[_0x2cba('0x48')]['phone']){throw new Error(_0x2cba('0x7f'));}if(!_0xaf749c[_0x2cba('0x48')][_0x2cba('0x80')]){throw new Error(_0x2cba('0x81'));}var _0x4418b5=0x0;if(_0xaf749c[_0x2cba('0x48')][_0x2cba('0x27')]){_0x4418b5=0x1;}if(!_0xaf749c[_0x2cba('0x23')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x5bc2d1){throw new Error(_0x2cba('0x82'));}var _0xb4d3c8=[];try{_0xb4d3c8=_[_0x2cba('0x83')](JSON[_0x2cba('0x4d')](process[_0x2cba('0x79')][0x4]),'id');}catch(_0x30dc5e){logger[_0x2cba('0x3c')](_0x2cba('0x84'));}main(_0x4dc5ba,_0xaf749c,_0xb4d3c8,_0x4418b5);}validate();process['on']('SIGINT',handleStop);process['on'](_0x2cba('0x85'),handleUncaughtException);
\ No newline at end of file
+var _0xbc56=['../../../config/environment','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','phone','from','join','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','recallme','select','fields','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','cm_contacts.ListId','cm_contacts.updatedAt','cm_hopper_black','createdAt','cm_contacts.ListId\x20=\x20','ListId\x20=\x20?','toString','keys','CompanyId','updatedAt',')\x20NOT\x20IN\x20?','id\x20IN\x20?','field','info','Received\x20SIGINT','error','message','exit','errors','push','code','query','spread','stringify','send','start','socket_timestamp','server/files/tmp','.csv','header','writeFileSync','parse','createReadStream','data','length','rows','hasOwnProperty','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','isNumber','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','firstName','SystemRow','appendFileSync','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues','voice_queues_has_cm_blacklists','VoiceQueueId','campaigns_has_cm_blacklists','CampaignId','then','finish','affectedRows','emit','unlink','complete','arguments\x20<filename>\x20<parameters>\x20<agents>','root','argv','existsSync','binding','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','papaparse','util','bluebird','moment','squel','ioredis','../../../mysqldb'];(function(_0x4a4ffc,_0x4c2ffa){var _0x282301=function(_0x3196e3){while(--_0x3196e3){_0x4a4ffc['push'](_0x4a4ffc['shift']());}};_0x282301(++_0x4c2ffa);}(_0xbc56,0x17c));var _0x6bc5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbc56[_0x14add3];return _0x4a174f;};'use strict';var fs=require('fs');var path=require('path');var _=require('lodash');var Papa=require(_0x6bc5('0x0'));var util=require(_0x6bc5('0x1'));var BPromise=require(_0x6bc5('0x2'));var moment=require(_0x6bc5('0x3'));var squel=require(_0x6bc5('0x4'));var Redis=require(_0x6bc5('0x5'));var db=require(_0x6bc5('0x6'))['db'];var config=require(_0x6bc5('0x7'));var logger=require(_0x6bc5('0x8'))(_0x6bc5('0x9'));config[_0x6bc5('0xa')]=_[_0x6bc5('0xb')](config[_0x6bc5('0xa')],{'host':_0x6bc5('0xc'),'port':0x18eb});var socket=require(_0x6bc5('0xd'))(new Redis(config[_0x6bc5('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x6bc5('0xe')](_0x6bc5('0xf'));function isEmail(_0x42fbac){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'](_0x42fbac);}function selectNotIn(_0x5c1a9e,_0x201057,_0x566b8,_0x242a65,_0x1a9deb){return squel['select']()['field'](_0x6bc5('0x10'))[_0x6bc5('0x11')](_0x242a65)[_0x6bc5('0x12')](_0x201057,null,_0x201057+_0x6bc5('0x13')+_0x242a65+'.'+_0x566b8)['where'](_0x242a65+'.'+_0x566b8+_0x6bc5('0x14')+_0x5c1a9e+'.'+_0x566b8)[_0x6bc5('0x15')](_0x201057+_0x6bc5('0x16')+_0x1a9deb[_0x6bc5('0x12')]()+')');}function insertCmHopper(_0x54b6d0,_0x21bfda,_0x2b9ba8,_0x36905c,_0x5e0c6c){var _0x5c64d5=[_0x6bc5('0x17'),_0x6bc5('0x18'),_0x6bc5('0x19'),'cm_contacts.ListId',_0x21bfda+'.'+_0x36905c,_0x6bc5('0x1a'),'cm_contacts.updatedAt',_0x6bc5('0x1b'),_0x6bc5('0x1c'),'\x22'+_0x5e0c6c+'\x22'];return squel[_0x6bc5('0x1d')]()[_0x6bc5('0x1e')](_0x6bc5('0x1f'))[_0x6bc5('0x20')]([_0x6bc5('0x10'),_0x6bc5('0x21'),_0x6bc5('0x22'),_0x6bc5('0x23'),_0x36905c,'createdAt','updatedAt','priority','UserId',_0x6bc5('0x24')],squel[_0x6bc5('0x25')]()[_0x6bc5('0x26')](_0x5c64d5)[_0x6bc5('0x11')](_0x21bfda)['join'](_0x6bc5('0x27'),null,'cm_contacts.ListId\x20=\x20'+_0x21bfda+_0x6bc5('0x28'))['join'](_0x2b9ba8,null,_0x2b9ba8+_0x6bc5('0x13')+_0x21bfda+'.'+_0x36905c)['where'](_0x21bfda+_0x6bc5('0x29'),_0x54b6d0)[_0x6bc5('0x15')](_0x6bc5('0x2a'),NOW)['where'](_0x6bc5('0x2b'),selectNotIn(_0x21bfda,_0x2b9ba8,_0x36905c,_0x6bc5('0x1f'),[_0x6bc5('0x2c'),'\x22onlyIfOpen\x22']))[_0x6bc5('0x15')](_0x6bc5('0x2b'),selectNotIn(_0x21bfda,_0x2b9ba8,_0x36905c,_0x6bc5('0x1f'),[_0x6bc5('0x2c')])))['toString']();}function insertCmHopperBlack(_0x5eb71f,_0x15e2f2,_0x369f55,_0xdc28cd){var _0x4d38a2=['cm_contacts.phone','cm_contacts.id',_0x6bc5('0x2d'),_0x15e2f2+'.'+_0xdc28cd,_0x6bc5('0x1a'),_0x6bc5('0x2e')];return squel[_0x6bc5('0x1d')]()['into'](_0x6bc5('0x2f'))[_0x6bc5('0x20')]([_0x6bc5('0x10'),'ContactId',_0x6bc5('0x23'),_0xdc28cd,_0x6bc5('0x30'),'updatedAt'],squel['select']()['fields'](_0x4d38a2)['from'](_0x15e2f2)[_0x6bc5('0x12')](_0x6bc5('0x27'),null,_0x6bc5('0x31')+_0x15e2f2+_0x6bc5('0x28'))[_0x6bc5('0x12')](_0x369f55,null,_0x369f55+_0x6bc5('0x13')+_0x15e2f2+'.'+_0xdc28cd)[_0x6bc5('0x15')](_0x15e2f2+'.CmListId\x20=\x20?',_0x5eb71f)[_0x6bc5('0x15')](_0x6bc5('0x2a'),NOW)['where'](_0x6bc5('0x2b'),squel['select']()['field'](_0x6bc5('0x10'))[_0x6bc5('0x11')](_0x6bc5('0x2f'))['where'](_0x6bc5('0x32'),_0x5eb71f)[_0x6bc5('0x15')](_0xdc28cd+'\x20=\x20?',_0x15e2f2+'.'+_0xdc28cd)))[_0x6bc5('0x33')]();}function insertCmContact(_0x55da0c,_0x25f7ca,_0x143562,_0x543b67){var _0x2c25e4=_['concat'](_[_0x6bc5('0x34')](_0x543b67),[_0x6bc5('0x23'),_0x6bc5('0x35'),_0x6bc5('0x30'),_0x6bc5('0x36')]);return squel[_0x6bc5('0x1d')]()[_0x6bc5('0x1e')](_0x6bc5('0x27'))[_0x6bc5('0x20')](_0x2c25e4,squel[_0x6bc5('0x25')]()[_0x6bc5('0x26')](_0x2c25e4)[_0x6bc5('0x11')](_0x25f7ca)[_0x6bc5('0x15')]('('+_0x143562[_0x6bc5('0x12')](',')+_0x6bc5('0x37'),squel[_0x6bc5('0x25')]()[_0x6bc5('0x26')](_0x143562)[_0x6bc5('0x11')](_0x6bc5('0x27'))[_0x6bc5('0x15')]('ListId\x20=\x20?',_0x55da0c))[_0x6bc5('0x15')](_0x6bc5('0x38'),squel[_0x6bc5('0x25')]()[_0x6bc5('0x39')]('MIN(id)','min_id')[_0x6bc5('0x11')](_0x25f7ca)['group'](_0x143562[_0x6bc5('0x12')](','))))[_0x6bc5('0x33')]();}function handleStop(){logger[_0x6bc5('0x3a')](_0x6bc5('0x3b'));stopped=!![];}function handleUncaughtException(_0xcc6ff4){logger[_0x6bc5('0x3c')](_0xcc6ff4[_0x6bc5('0x3d')]);process[_0x6bc5('0x3e')](0x1);}function handleError(_0x2060ff,_0x27240d){stats[_0x6bc5('0x3f')][_0x6bc5('0x40')]({'name':_0x27240d[_0x6bc5('0x41')],'message':_0x27240d['message'],'row':_0x2060ff});}function handleQuery(_0x2a25bb){logger[_0x6bc5('0x3a')](_0x2a25bb);return db['sequelize'][_0x6bc5('0x42')](_0x2a25bb)[_0x6bc5('0x43')](function(_0x22910b){results['push'](_0x22910b);})['catch'](function(_0x426d02){logger[_0x6bc5('0x3c')](_0x426d02[_0x6bc5('0x3d')]);});}function main(_0x3a1093,_0xcd2f75,_0x29891d,_0x208938){logger[_0x6bc5('0x3a')]('main',_0x3a1093,JSON[_0x6bc5('0x44')](_0xcd2f75));process[_0x6bc5('0x45')](_0x6bc5('0x46'));var _0x463886=_0xcd2f75['binding'];var _0x4ac996=_0xcd2f75[_0x6bc5('0x47')];var _0x29de7a=path[_0x6bc5('0x12')](config['root'],_0x6bc5('0x48'),_0x4ac996+_0x6bc5('0x49'));var _0x301827=_[_0x6bc5('0x34')](_0x463886)[_0x6bc5('0x12')]();logger['info'](_0x6bc5('0x4a'),_0x301827);fs[_0x6bc5('0x4b')](_0x29de7a,_0x301827+'\x0a');Papa[_0x6bc5('0x4c')](fs[_0x6bc5('0x4d')](_0x3a1093),{'header':!![],'skipEmptyLines':!![],'step':function(_0xd47b2,_0x450875){try{for(var _0x3e1d5c=0x0,_0x3a982b=[];_0x3e1d5c<_0xd47b2[_0x6bc5('0x4e')][_0x6bc5('0x4f')];_0x3e1d5c++){stats[_0x6bc5('0x50')]+=0x1;if(_0xd47b2[_0x6bc5('0x3f')][_0x3e1d5c]){handleError(_0xd47b2[_0x6bc5('0x4e')][_0x3e1d5c],_0xd47b2[_0x6bc5('0x3f')][_0x3e1d5c]);}else{var _0x11337a=[];for(var _0xc312fa in _0x463886){if(_0x463886[_0x6bc5('0x51')](_0xc312fa)){if(_0xd47b2['data'][_0x3e1d5c][_0x463886[_0xc312fa]]){var _0x3047e9=_['trim'](_0xd47b2[_0x6bc5('0x4e')][_0x3e1d5c][_0x463886[_0xc312fa]][_0x6bc5('0x52')](/"/g,'\x27'));switch(_0xc312fa){case _0x6bc5('0x21'):var _0x5a45bd=moment(_0x3047e9,_0x6bc5('0xf'),!![]);if(_0x5a45bd[_0x6bc5('0x53')]()){_0x3a982b[_0x6bc5('0x40')]('\x22'+_0x3047e9+'\x22');}else{_0x11337a['push'](_0x6bc5('0x54'));}break;case _0x6bc5('0x55'):var _0x2e9003=parseInt(_0x3047e9);_0x3047e9=_[_0x6bc5('0x56')](_0x2e9003)||_0x2e9003<0x0||_0x2e9003>0x4?_0x208938?0x3:0x2:_0x2e9003;_0x3a982b[_0x6bc5('0x40')]('\x22'+_0x3047e9+'\x22');break;case'UserId':var _0x257c77=parseInt(_0x3047e9);if(_[_0x6bc5('0x57')](_0x257c77)&&_[_0x6bc5('0x58')](_0x29891d,_0x257c77)){_0x3a982b[_0x6bc5('0x40')]('\x22'+_0x257c77+'\x22');}else{_0x11337a['push'](_0x6bc5('0x59'));}break;case'email':if(isEmail(_0x3047e9)){_0x3a982b[_0x6bc5('0x40')]('\x22'+_0x3047e9+'\x22');}else{_0x11337a[_0x6bc5('0x40')](_0x6bc5('0x5a'));}break;case _0x6bc5('0x5b'):var _0x25ee04=moment(_0x3047e9,'YYYY-MM-DD',!![]);if(_0x25ee04['isValid']()){_0x3a982b[_0x6bc5('0x40')]('\x22'+_0x3047e9+'\x22');}else{_0x11337a[_0x6bc5('0x40')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x3a982b[_0x6bc5('0x40')]('\x22'+_0x3047e9+'\x22');}}else{switch(_0xc312fa){case _0x6bc5('0x5c'):case _0x6bc5('0x10'):_0x11337a[_0x6bc5('0x40')](_0xc312fa+'\x20not\x20specified');break;default:_0x3a982b['push']('\x22\x22');}}}}if(_0x11337a[_0x6bc5('0x4f')]){handleError(_0xd47b2[_0x6bc5('0x4e')][_0x3e1d5c],{'code':_0x6bc5('0x5d'),'message':_0x11337a['join']()});}else{fs[_0x6bc5('0x5e')](_0x29de7a,_0x3a982b['join']()+'\x0a');}_0x3a982b=[];}if(!(stats[_0x6bc5('0x50')]%0xc8)){socket['emit'](_0x6bc5('0x5f')+_0x4ac996,stats);stats[_0x6bc5('0x3f')]=[];}}if(stopped){logger[_0x6bc5('0x3a')](_0x6bc5('0x60'));_0x450875[_0x6bc5('0x61')]();}}catch(_0x423e8e){handleError(_0xd47b2[_0x6bc5('0x4e')][_0x3e1d5c],{'code':_0x6bc5('0x62'),'message':_0x423e8e[_0x6bc5('0x3d')]});logger[_0x6bc5('0x3c')](_0x6bc5('0x63'),_0x423e8e[_0x6bc5('0x3d')]);}},'complete':function(){try{var _0x38a8a8=[];var _0x3cdd4=_0x6bc5('0x27');if(_0xcd2f75['duplicates']&&_0xcd2f75[_0x6bc5('0x64')]['length']){_0x3cdd4=_0x6bc5('0x65')+_0x4ac996;_0x38a8a8[_0x6bc5('0x40')](_0x6bc5('0x66')+_0x3cdd4+'\x20LIKE\x20cm_contacts;');}var _0x40ce47=util[_0x6bc5('0xe')]('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',_0x29de7a,_0x3cdd4,_0x301827,_0xcd2f75[_0x6bc5('0x23')],_0xcd2f75[_0x6bc5('0x35')]||null,NOW,NOW);if(_[_0x6bc5('0x67')](_0x463886[_0x6bc5('0x21')])){_0x40ce47+=_0x6bc5('0x68');}_0x38a8a8[_0x6bc5('0x40')](_0x40ce47);if(_0xcd2f75['duplicates']&&_0xcd2f75[_0x6bc5('0x64')][_0x6bc5('0x4f')]){_0x38a8a8[_0x6bc5('0x40')](insertCmContact(_0xcd2f75['ListId'],_0x3cdd4,_0xcd2f75[_0x6bc5('0x64')],_0x463886));_0x38a8a8[_0x6bc5('0x40')](_0x6bc5('0x69')+_0x3cdd4+';');}_0x38a8a8[_0x6bc5('0x40')](insertCmHopper(_0xcd2f75[_0x6bc5('0x23')],'voice_queues_has_cm_lists',_0x6bc5('0x6a'),'VoiceQueueId',_0x208938));_0x38a8a8['push'](insertCmHopperBlack(_0xcd2f75['ListId'],_0x6bc5('0x6b'),_0x6bc5('0x6a'),_0x6bc5('0x6c')));_0x38a8a8['push'](insertCmHopper(_0xcd2f75[_0x6bc5('0x23')],'campaigns_has_cm_lists','campaigns','CampaignId',_0x208938));_0x38a8a8[_0x6bc5('0x40')](insertCmHopperBlack(_0xcd2f75['ListId'],_0x6bc5('0x6d'),'campaigns',_0x6bc5('0x6e')));BPromise['each'](_0x38a8a8,handleQuery)[_0x6bc5('0x6f')](function(_0x5a41e7){stats[_0x6bc5('0x70')]=!![];stats[_0x6bc5('0x71')]=_0xcd2f75[_0x6bc5('0x64')]&&_0xcd2f75[_0x6bc5('0x64')]['length']?results[0x2][_0x6bc5('0x71')]:results[0x0][_0x6bc5('0x71')];socket[_0x6bc5('0x72')](_0x6bc5('0x5f')+_0x4ac996,stats);fs[_0x6bc5('0x73')](_0x3a1093);fs[_0x6bc5('0x73')](_0x29de7a);process[_0x6bc5('0x3e')](0x0);})['catch'](function(_0x26bb38){logger['error'](_0x26bb38['message']);process[_0x6bc5('0x3e')](0x1);});}catch(_0x338ffb){logger[_0x6bc5('0x3c')](_0x6bc5('0x74'),_0x338ffb[_0x6bc5('0x3d')]);process[_0x6bc5('0x3e')](0x1);}},'error':function(_0x24e616,_0x414dd0,_0x15812c,_0x274444){throw new Error(_0x274444);}});}function validate(){if(process['argv']&&process['argv'][_0x6bc5('0x4f')]<0x4){throw new Error(_0x6bc5('0x75'));}var _0xfe731e=path[_0x6bc5('0x12')](config[_0x6bc5('0x76')],_0x6bc5('0x48'),process[_0x6bc5('0x77')][0x2]);if(!fs[_0x6bc5('0x78')](_0xfe731e)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x5effdb={};try{_0x5effdb=JSON[_0x6bc5('0x4c')](process[_0x6bc5('0x77')][0x3]);if(!_0x5effdb[_0x6bc5('0x79')]){throw new Error(_0x6bc5('0x7a'));}if(!_0x5effdb[_0x6bc5('0x79')]['phone']){throw new Error(_0x6bc5('0x7b'));}if(!_0x5effdb[_0x6bc5('0x79')][_0x6bc5('0x5c')]){throw new Error(_0x6bc5('0x7c'));}var _0x248702=0x0;if(_0x5effdb[_0x6bc5('0x79')]['UserId']){_0x248702=0x1;}if(!_0x5effdb[_0x6bc5('0x23')]){throw new Error(_0x6bc5('0x7d'));}}catch(_0x1506fd){throw new Error('body\x20id\x20mandatory');}var _0x2a8247=[];try{_0x2a8247=_[_0x6bc5('0x7e')](JSON[_0x6bc5('0x4c')](process[_0x6bc5('0x77')][0x4]),'id');}catch(_0x364b7e){logger['info'](_0x6bc5('0x7f'));}main(_0xfe731e,_0x5effdb,_0x2a8247,_0x248702);}validate();process['on'](_0x6bc5('0x80'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index d4ff804..a2005fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b3=['Hold\x20Time','holdtime','Talk\x20Time','talktime','Called\x20Number','Member\x20Name','membername','Date','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','outbound','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum','Caller\x20Name','Call\x20To','destexten','Queue','UniqueId','uniqueid','agentcalledAt','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt'];(function(_0x16aee8,_0x481ce1){var _0x433306=function(_0x438ac6){while(--_0x438ac6){_0x16aee8['push'](_0x16aee8['shift']());}};_0x433306(++_0x481ce1);}(_0xe5b3,0x133));var _0x3e5b=function(_0x24252a,_0x4ea503){_0x24252a=_0x24252a-0x0;var _0x7ee9b1=_0xe5b3[_0x24252a];return _0x7ee9b1;};'use strict';exports['getSubjects']=function(_0x9b4a66,_0xba44a0){var _0x243fe0=[{'type':_0x3e5b('0x0'),'content':_0x3e5b('0x1'),'variableName':null}];switch(_0x9b4a66[_0x3e5b('0x2')]()){case _0x3e5b('0x3'):switch(_0xba44a0[_0x3e5b('0x2')]()){case _0x3e5b('0x4'):_0x243fe0[_0x3e5b('0x5')]({'type':_0x3e5b('0x6'),'content':'','variableName':'queue'});_0x243fe0[_0x3e5b('0x5')]({'type':_0x3e5b('0x6'),'content':'','variableName':'calleridnum'});break;case _0x3e5b('0x7'):_0x243fe0[_0x3e5b('0x5')]({'type':_0x3e5b('0x0'),'content':_0x3e5b('0x8'),'variableName':null});_0x243fe0['push']({'type':'variable','content':'','variableName':_0x3e5b('0x9')});break;}}return _0x243fe0;};exports[_0x3e5b('0xa')]=function(_0x22fc1a,_0x17dee7){var _0xeeaabc=[];switch(_0x22fc1a['toLowerCase']()){case _0x3e5b('0x3'):switch(_0x17dee7['toLowerCase']()){case _0x3e5b('0x4'):_0xeeaabc=[{'type':_0x3e5b('0x0'),'content':_0x3e5b('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0xd'),'keyType':_0x3e5b('0x6'),'variableName':_0x3e5b('0xe')},{'type':'keyValue','content':'','key':_0x3e5b('0xf'),'keyType':'variable','variableName':'calleridname'},{'type':'keyValue','content':'','key':_0x3e5b('0x10'),'keyType':_0x3e5b('0x6'),'variableName':_0x3e5b('0x11')},{'type':'keyValue','content':'','key':_0x3e5b('0x12'),'keyType':'variable','variableName':'queue'},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x13'),'keyType':'variable','variableName':_0x3e5b('0x14')},{'type':_0x3e5b('0xc'),'content':'','key':'Date','keyType':_0x3e5b('0x6'),'variableName':_0x3e5b('0x15')},{'type':'string','content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x16'),'keyType':_0x3e5b('0x6'),'variableName':_0x3e5b('0x17')},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x18'),'keyType':_0x3e5b('0x6'),'variableName':_0x3e5b('0x9')},{'type':_0x3e5b('0x0'),'content':_0x3e5b('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x1a'),'keyType':_0x3e5b('0x6'),'variableName':_0x3e5b('0x15')},{'type':'keyValue','content':'','key':_0x3e5b('0x1b'),'keyType':_0x3e5b('0x6'),'variableName':_0x3e5b('0x1c')},{'type':_0x3e5b('0xc'),'content':'','key':'Agent\x20Complete','keyType':_0x3e5b('0x6'),'variableName':'agentcompleteAt'},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x1d'),'keyType':'variable','variableName':_0x3e5b('0x1e')},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x1f'),'keyType':_0x3e5b('0x6'),'variableName':_0x3e5b('0x20')}];break;case _0x3e5b('0x7'):_0xeeaabc=[{'type':_0x3e5b('0x0'),'content':_0x3e5b('0xb'),'variableName':null},{'type':'keyValue','content':'','key':_0x3e5b('0x21'),'keyType':'variable','keyContent':'','variableName':_0x3e5b('0x9')},{'type':'keyValue','content':'','key':_0x3e5b('0x22'),'keyType':_0x3e5b('0x6'),'keyContent':'','variableName':_0x3e5b('0x23')},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x13'),'keyType':_0x3e5b('0x6'),'keyContent':'','variableName':_0x3e5b('0x14')},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x24'),'keyType':_0x3e5b('0x6'),'keyContent':'','variableName':_0x3e5b('0x25')},{'type':'string','content':_0x3e5b('0x19')},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x26'),'keyType':_0x3e5b('0x6'),'keyContent':'','variableName':_0x3e5b('0x27')},{'type':_0x3e5b('0xc'),'content':'','key':_0x3e5b('0x28'),'keyType':'variable','keyContent':'','variableName':_0x3e5b('0x29')}];break;}}return _0xeeaabc;};
\ No newline at end of file
+var _0x4bc3=['destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','outbound','membername','UniqueId','uniqueid','starttime','Complete\x20Time','endtime','getSubjects','string','toLowerCase','voice','inbound','push','variable','queue','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','Caller\x20Name','Call\x20To','destexten','Queue','Date','agentcalledAt','***\x20Agent\x20Info\x20***'];(function(_0x5bbf59,_0xa0d46b){var _0x1010bd=function(_0x11c867){while(--_0x11c867){_0x5bbf59['push'](_0x5bbf59['shift']());}};_0x1010bd(++_0xa0d46b);}(_0x4bc3,0x16e));var _0x34bc=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x4bc3[_0x2070da];return _0x4f9fe1;};'use strict';exports[_0x34bc('0x0')]=function(_0xaaf670,_0x4a6fe8){var _0x14787d=[{'type':_0x34bc('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0xaaf670[_0x34bc('0x2')]()){case _0x34bc('0x3'):switch(_0x4a6fe8[_0x34bc('0x2')]()){case _0x34bc('0x4'):_0x14787d[_0x34bc('0x5')]({'type':_0x34bc('0x6'),'content':'','variableName':_0x34bc('0x7')});_0x14787d['push']({'type':_0x34bc('0x6'),'content':'','variableName':'calleridnum'});break;case'outbound':_0x14787d[_0x34bc('0x5')]({'type':_0x34bc('0x1'),'content':_0x34bc('0x8'),'variableName':null});_0x14787d[_0x34bc('0x5')]({'type':_0x34bc('0x6'),'content':'','variableName':_0x34bc('0x9')});break;}}return _0x14787d;};exports['getDescriptions']=function(_0x5a478d,_0x2b8112){var _0x33025c=[];switch(_0x5a478d[_0x34bc('0x2')]()){case'voice':switch(_0x2b8112[_0x34bc('0x2')]()){case'inbound':_0x33025c=[{'type':_0x34bc('0x1'),'content':_0x34bc('0xa'),'key':null,'keyType':null,'variableName':null},{'type':_0x34bc('0xb'),'content':'','key':'Caller\x20Number','keyType':_0x34bc('0x6'),'variableName':'calleridnum'},{'type':_0x34bc('0xb'),'content':'','key':_0x34bc('0xc'),'keyType':_0x34bc('0x6'),'variableName':'calleridname'},{'type':'keyValue','content':'','key':_0x34bc('0xd'),'keyType':'variable','variableName':_0x34bc('0xe')},{'type':_0x34bc('0xb'),'content':'','key':_0x34bc('0xf'),'keyType':_0x34bc('0x6'),'variableName':_0x34bc('0x7')},{'type':_0x34bc('0xb'),'content':'','key':'UniqueId','keyType':'variable','variableName':'uniqueid'},{'type':_0x34bc('0xb'),'content':'','key':_0x34bc('0x10'),'keyType':_0x34bc('0x6'),'variableName':_0x34bc('0x11')},{'type':'string','content':_0x34bc('0x12'),'key':null,'keyType':null,'variableName':null},{'type':_0x34bc('0xb'),'content':'','key':'Agent\x20Name','keyType':_0x34bc('0x6'),'variableName':_0x34bc('0x13')},{'type':'keyValue','content':'','key':_0x34bc('0x14'),'keyType':_0x34bc('0x6'),'variableName':_0x34bc('0x9')},{'type':_0x34bc('0x1'),'content':_0x34bc('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0x34bc('0xb'),'content':'','key':'Agent\x20Ring','keyType':_0x34bc('0x6'),'variableName':_0x34bc('0x11')},{'type':_0x34bc('0xb'),'content':'','key':'Agent\x20Connect','keyType':'variable','variableName':_0x34bc('0x16')},{'type':_0x34bc('0xb'),'content':'','key':_0x34bc('0x17'),'keyType':_0x34bc('0x6'),'variableName':_0x34bc('0x18')},{'type':_0x34bc('0xb'),'content':'','key':_0x34bc('0x19'),'keyType':_0x34bc('0x6'),'variableName':_0x34bc('0x1a')},{'type':_0x34bc('0xb'),'content':'','key':_0x34bc('0x1b'),'keyType':_0x34bc('0x6'),'variableName':'talktime'}];break;case _0x34bc('0x1c'):_0x33025c=[{'type':'string','content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x34bc('0xb'),'content':'','key':'Called\x20Number','keyType':_0x34bc('0x6'),'keyContent':'','variableName':_0x34bc('0x9')},{'type':_0x34bc('0xb'),'content':'','key':'Member\x20Name','keyType':_0x34bc('0x6'),'keyContent':'','variableName':_0x34bc('0x1d')},{'type':_0x34bc('0xb'),'content':'','key':_0x34bc('0x1e'),'keyType':_0x34bc('0x6'),'keyContent':'','variableName':_0x34bc('0x1f')},{'type':'keyValue','content':'','key':_0x34bc('0x10'),'keyType':_0x34bc('0x6'),'keyContent':'','variableName':_0x34bc('0x20')},{'type':_0x34bc('0x1'),'content':_0x34bc('0x15')},{'type':_0x34bc('0xb'),'content':'','key':'Answer\x20Time','keyType':_0x34bc('0x6'),'keyContent':'','variableName':'answertime'},{'type':'keyValue','content':'','key':_0x34bc('0x21'),'keyType':'variable','keyContent':'','variableName':_0x34bc('0x22')}];break;}}return _0x33025c;};
\ No newline at end of file
index c6cd074..3042719 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf04=['mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','role','findOne','then','update','info','error','user','clone','body','omit','phone'];(function(_0x4f600b,_0x3666f8){var _0x3001dd=function(_0x285f64){while(--_0x285f64){_0x4f600b['push'](_0x4f600b['shift']());}};_0x3001dd(++_0x3666f8);}(_0xbf04,0xc1));var _0x4bf0=function(_0x3a6cb1,_0x4be29d){_0x3a6cb1=_0x3a6cb1-0x0;var _0x5b4b3f=_0xbf04[_0x3a6cb1];return _0x5b4b3f;};'use strict';var _=require(_0x4bf0('0x0'));var db=require(_0x4bf0('0x1'))['db'];var loggers={'openchannel':require(_0x4bf0('0x2'))(_0x4bf0('0x3')),'mail':require('../../config/logger')(_0x4bf0('0x4')),'fax':require(_0x4bf0('0x2'))('fax-interactions'),'sms':require('../../config/logger')(_0x4bf0('0x5')),'chat':require(_0x4bf0('0x2'))('chat-interactions')};function getInteractionId(_0x3c0a01,_0x79b268,_0x3a94c7){if(_0x3c0a01&&_0x3c0a01[_[_0x4bf0('0x6')](_0x3a94c7)+'InteractionId']){return _0x3c0a01[_[_0x4bf0('0x6')](_0x3a94c7)+_0x4bf0('0x7')];}else if(_0x3c0a01&&_0x3c0a01['id']){return _0x3c0a01['id'];}else if(_0x79b268&&_0x79b268['id']){return _0x79b268['id'];}else{return _0x4bf0('0x8');}}function log(_0x353a86,_0x111fbc,_0x5f419f,_0x1791ba,_0x571341,_0x2afea9){loggers[_0x571341[_0x4bf0('0x9')]()][_0x353a86](_0x4bf0('0xa'),_0x2afea9[_0x4bf0('0xb')](),_0x111fbc?_0x111fbc['id']:null,_0x111fbc?_0x111fbc['name']:null,_0x111fbc?_0x111fbc[_0x4bf0('0xc')]:null,getInteractionId(_0x5f419f,_0x1791ba,_0x571341),_0x5f419f?JSON['stringify'](_0x5f419f):'null');}function updateUser(_0x40df1c,_0xb82dc5,_0x1c3cfd,_0x2e3f67,_0x542545){db[_['upperFirst'](_0x2e3f67)+'Interaction'][_0x4bf0('0xd')]({'where':{'id':getInteractionId(_0xb82dc5,_0x1c3cfd,_0x2e3f67)}})[_0x4bf0('0xe')](function(_0xaa8b5e){if(_0xaa8b5e){return _0xaa8b5e[_0x4bf0('0xf')]({'UserId':_0x40df1c?_0x40df1c['id']:null});}})[_0x4bf0('0xe')](function(_0x2659ad){if(_0x2659ad){log(_0x4bf0('0x10'),_0x40df1c,_0xb82dc5,_0x1c3cfd,_0x2e3f67,_0x542545);}})['catch'](function(){log(_0x4bf0('0x11'),_0x40df1c,_0xb82dc5,_0x1c3cfd,_0x2e3f67,_0x542545);});}exports['tracked']=function(_0x5eed8a,_0x3ddf12){return function(_0x582986,_0x8d8802,_0x365e72){var _0x1d1d26=_0x582986[_0x4bf0('0x12')];var _0x332063={};var _0x27632c=_0x582986['query'];if(_0x332063){_0x332063=_[_0x4bf0('0x13')](_0x582986[_0x4bf0('0x14')]);_0x332063=_[_0x4bf0('0x15')](_0x332063,['body','html',_0x4bf0('0x16'),'fax',_0x4bf0('0x17')]);}updateUser(_0x1d1d26,_0x332063,_0x27632c,_0x5eed8a,_0x3ddf12);_0x365e72(null);};};
\ No newline at end of file
+var _0xbdae=['fax-interactions','sms-interactions','chat-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','findOne','then','update','info','catch','tracked','user','query','clone','body','omit','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xbdae,0x1ea));var _0xebda=function(_0xfacee2,_0x29c3b0){_0xfacee2=_0xfacee2-0x0;var _0x4cc9ea=_0xbdae[_0xfacee2];return _0x4cc9ea;};'use strict';var _=require(_0xebda('0x0'));var db=require(_0xebda('0x1'))['db'];var loggers={'openchannel':require(_0xebda('0x2'))(_0xebda('0x3')),'mail':require(_0xebda('0x2'))(_0xebda('0x4')),'fax':require(_0xebda('0x2'))(_0xebda('0x5')),'sms':require('../../config/logger')(_0xebda('0x6')),'chat':require(_0xebda('0x2'))(_0xebda('0x7'))};function getInteractionId(_0x58e506,_0x563292,_0x4d70e2){if(_0x58e506&&_0x58e506[_[_0xebda('0x8')](_0x4d70e2)+_0xebda('0x9')]){return _0x58e506[_[_0xebda('0x8')](_0x4d70e2)+_0xebda('0x9')];}else if(_0x58e506&&_0x58e506['id']){return _0x58e506['id'];}else if(_0x563292&&_0x563292['id']){return _0x563292['id'];}else{return _0xebda('0xa');}}function log(_0x433964,_0x1b7f31,_0x2894c4,_0x538284,_0x5970b8,_0x689f0f){loggers[_0x5970b8[_0xebda('0xb')]()][_0x433964](_0xebda('0xc'),_0x689f0f[_0xebda('0xd')](),_0x1b7f31?_0x1b7f31['id']:null,_0x1b7f31?_0x1b7f31[_0xebda('0xe')]:null,_0x1b7f31?_0x1b7f31[_0xebda('0xf')]:null,getInteractionId(_0x2894c4,_0x538284,_0x5970b8),_0x2894c4?JSON[_0xebda('0x10')](_0x2894c4):_0xebda('0x11'));}function updateUser(_0x37d1c0,_0xf5275f,_0x5e0b8f,_0x75232b,_0x5035ce){db[_[_0xebda('0x8')](_0x75232b)+'Interaction'][_0xebda('0x12')]({'where':{'id':getInteractionId(_0xf5275f,_0x5e0b8f,_0x75232b)}})[_0xebda('0x13')](function(_0x5017f9){if(_0x5017f9){return _0x5017f9[_0xebda('0x14')]({'UserId':_0x37d1c0?_0x37d1c0['id']:null});}})[_0xebda('0x13')](function(_0x96f7ea){if(_0x96f7ea){log(_0xebda('0x15'),_0x37d1c0,_0xf5275f,_0x5e0b8f,_0x75232b,_0x5035ce);}})[_0xebda('0x16')](function(){log('error',_0x37d1c0,_0xf5275f,_0x5e0b8f,_0x75232b,_0x5035ce);});}exports[_0xebda('0x17')]=function(_0x51ed59,_0x628f62){return function(_0x19b0c5,_0x3353aa,_0x602381){var _0x55b8be=_0x19b0c5[_0xebda('0x18')];var _0x4aac33={};var _0x52ab61=_0x19b0c5[_0xebda('0x19')];if(_0x4aac33){_0x4aac33=_[_0xebda('0x1a')](_0x19b0c5[_0xebda('0x1b')]);_0x4aac33=_[_0xebda('0x1c')](_0x4aac33,[_0xebda('0x1b'),_0xebda('0x1d'),_0xebda('0x1e'),_0xebda('0x1f'),_0xebda('0x20')]);}updateUser(_0x55b8be,_0x4aac33,_0x52ab61,_0x51ed59,_0x628f62);_0x602381(null);};};
\ No newline at end of file
index 144ee65..bc1ef00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5799=['json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','user','isUserLimit','util','composable-middleware','../../mysqldb','data1','license','split','%s:%s:%s','update','base64','final','utf8','parse','hasOwnProperty','License','then','status'];(function(_0x121ea9,_0x33dba2){var _0x1e3676=function(_0x58805f){while(--_0x58805f){_0x121ea9['push'](_0x121ea9['shift']());}};_0x1e3676(++_0x33dba2);}(_0x5799,0x91));var _0x9579=function(_0x4d8397,_0x44cb2e){_0x4d8397=_0x4d8397-0x0;var _0x3abb8d=_0x5799[_0x4d8397];return _0x3abb8d;};'use strict';var crypto=require('crypto');var util=require(_0x9579('0x0'));var compose=require(_0x9579('0x1'));var db=require(_0x9579('0x2'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0xd6f605,_0x44bd32){if(_0xd6f605&&_0x44bd32){if(_0x44bd32[_0x9579('0x3')]&&_0x44bd32['license']){var _0x3ee272=_0x44bd32['data1'];var _0x566532=_0x44bd32[_0x9579('0x4')];var _0x382850=_0x3ee272[_0x9579('0x5')]('-')[0x4];var _0x442bfc=_0x3ee272[_0x9579('0x5')]('-')[0x0];var _0x311576=crypto['createDecipher']('aes-256-ctr',util['format'](_0x9579('0x6'),_0x382850,_0x3ee272,_0x442bfc));var _0x5b639d=_0x311576[_0x9579('0x7')](_0x566532,_0x9579('0x8'),'utf8');_0x5b639d+=_0x311576[_0x9579('0x9')](_0x9579('0xa'));var _0x5883c6=JSON[_0x9579('0xb')](_0x5b639d);return _0x5883c6[_0x9579('0xc')](_0xd6f605)?_0x5883c6[_0xd6f605]:null;}}return null;}function isLimit(_0x28a89d,_0x10f316,_0x593901,_0xa94be6){var _0x48dc56=_0x10f316;return compose()['use'](function(_0x7fc227,_0x3c4d76,_0x27365a){return db[_0x9579('0xd')]['findOne']({'where':{'id':0x1},'raw':!![]})['then'](function(_0x58dcb6){var _0x25ceca=getValueFromLicense(_0x28a89d,_0x58dcb6);return _0x25ceca?_0x25ceca:_0x48dc56;})[_0x9579('0xe')](function(_0x46d6db){_0x48dc56=_0x46d6db;return _0x593901['count'](_0xa94be6);})[_0x9579('0xe')](function(_0x2c9769){if(_0x2c9769>=_0x48dc56){return _0x3c4d76[_0x9579('0xf')](0x193)[_0x9579('0x10')]({'message':util['format'](_0x9579('0x11'),_0x28a89d)});}_0x27365a();})[_0x9579('0x12')](function(_0x4d6e85){_0x27365a(_0x4d6e85);});});}function isUserLimit(){return isLimit(_0x9579('0x13'),0x1,db['User'],{'where':{'$or':[{'role':_0x9579('0x14')},{'role':_0x9579('0x15')}]}});}exports[_0x9579('0x16')]=isUserLimit;
\ No newline at end of file
+var _0x9fa0=['findOne','then','count','status','json','format','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','User','admin','user','isUserLimit','../../mysqldb','../../config/environment','license','data1','split','aes-256-ctr','%s:%s:%s','update','utf8','final','parse','use'];(function(_0x2abc3d,_0x48edca){var _0x252745=function(_0x32bb6f){while(--_0x32bb6f){_0x2abc3d['push'](_0x2abc3d['shift']());}};_0x252745(++_0x48edca);}(_0x9fa0,0x6c));var _0x09fa=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x9fa0[_0x484e36];return _0xafc85d;};'use strict';var crypto=require('crypto');var util=require('util');var compose=require('composable-middleware');var db=require(_0x09fa('0x0'))['db'];var config=require(_0x09fa('0x1'));function getValueFromLicense(_0x3b3f36,_0x1887d1){if(_0x3b3f36&&_0x1887d1){if(_0x1887d1['data1']&&_0x1887d1[_0x09fa('0x2')]){var _0x253c83=_0x1887d1[_0x09fa('0x3')];var _0x4af857=_0x1887d1[_0x09fa('0x2')];var _0x5c10d2=_0x253c83[_0x09fa('0x4')]('-')[0x4];var _0x2f536f=_0x253c83[_0x09fa('0x4')]('-')[0x0];var _0x1aefdb=crypto['createDecipher'](_0x09fa('0x5'),util['format'](_0x09fa('0x6'),_0x5c10d2,_0x253c83,_0x2f536f));var _0x5b3327=_0x1aefdb[_0x09fa('0x7')](_0x4af857,'base64',_0x09fa('0x8'));_0x5b3327+=_0x1aefdb[_0x09fa('0x9')](_0x09fa('0x8'));var _0x43853c=JSON[_0x09fa('0xa')](_0x5b3327);return _0x43853c['hasOwnProperty'](_0x3b3f36)?_0x43853c[_0x3b3f36]:null;}}return null;}function isLimit(_0x109b5f,_0x2243aa,_0xe62fee,_0x49c1a7){var _0x49d8f7=_0x2243aa;return compose()[_0x09fa('0xb')](function(_0x331536,_0x5eab97,_0x31595c){return db['License'][_0x09fa('0xc')]({'where':{'id':0x1},'raw':!![]})[_0x09fa('0xd')](function(_0x31d8aa){var _0x10e070=getValueFromLicense(_0x109b5f,_0x31d8aa);return _0x10e070?_0x10e070:_0x49d8f7;})[_0x09fa('0xd')](function(_0x2179cd){_0x49d8f7=_0x2179cd;return _0xe62fee[_0x09fa('0xe')](_0x49c1a7);})[_0x09fa('0xd')](function(_0x441d1b){if(_0x441d1b>=_0x49d8f7){return _0x5eab97[_0x09fa('0xf')](0x193)[_0x09fa('0x10')]({'message':util[_0x09fa('0x11')](_0x09fa('0x12'),_0x109b5f)});}_0x31595c();})[_0x09fa('0x13')](function(_0x5a7015){_0x31595c(_0x5a7015);});});}function isUserLimit(){return isLimit('users',0x1,db[_0x09fa('0x14')],{'where':{'$or':[{'role':_0x09fa('0x15')},{'role':_0x09fa('0x16')}]}});}exports[_0x09fa('0x17')]=isUserLimit;
\ No newline at end of file
index dc7d9af..65153ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3c9=['isString','unset','lodash','sequelize','fields','split','filters','parse','limit','offset','sort','map','indexOf','priority','cast','col','unsigned','DESC','ASC','omit','isEmpty','isArray','length'];(function(_0x5e0c50,_0x3e545a){var _0x33c929=function(_0x199b42){while(--_0x199b42){_0x5e0c50['push'](_0x5e0c50['shift']());}};_0x33c929(++_0x3e545a);}(_0xf3c9,0x189));var _0x9f3c=function(_0xae00f2,_0x2839b5){_0xae00f2=_0xae00f2-0x0;var _0x465866=_0xf3c9[_0xae00f2];return _0x465866;};'use strict';var _=require(_0x9f3c('0x0'));var sequelize=require(_0x9f3c('0x1'));var LIMIT_VALUE=0xfa;exports[_0x9f3c('0x2')]=function(_0x2cd250){var _0x618c67=null;if(_0x2cd250){_0x618c67=_0x2cd250[_0x9f3c('0x3')](',');}return _0x618c67;};exports[_0x9f3c('0x4')]=function(_0x58f208){var _0x2136b2={};if(!_['isEmpty'](_0x58f208)){_0x2136b2={};_['forOwn'](_0x58f208,function(_0x4fa6ca,_0x2ff6e4){try{_0x2136b2[_0x2ff6e4]=JSON[_0x9f3c('0x5')](_0x4fa6ca);}catch(_0x5975b9){_0x2136b2[_0x2ff6e4]=_0x4fa6ca[_0x9f3c('0x3')](',');}});}return _0x2136b2;};exports[_0x9f3c('0x6')]=function(_0x507290){_0x507290=parseInt(_0x507290,0xa);if(!_0x507290||_0x507290<0x0){_0x507290=LIMIT_VALUE;}return _0x507290;};exports[_0x9f3c('0x7')]=function(_0x4cdafa){_0x4cdafa=parseInt(_0x4cdafa,0xa);if(!_0x4cdafa||_0x4cdafa<0x0){_0x4cdafa=0x0;}return _0x4cdafa;};exports[_0x9f3c('0x8')]=function(_0x1b3d3b){var _0xae0661,_0x15c684=null;if(_0x1b3d3b){_0xae0661=_0x1b3d3b[_0x9f3c('0x3')](',');_0x15c684=_[_0x9f3c('0x9')](_0xae0661,function(_0x5d7f3a){if(_0x5d7f3a[_0x9f3c('0xa')]('-')===0x0){return[_0x5d7f3a===_0x9f3c('0xb')?sequelize[_0x9f3c('0xc')](sequelize[_0x9f3c('0xd')]('priority'),_0x9f3c('0xe')):_0x5d7f3a['substr'](0x1),_0x9f3c('0xf')];}else{return[_0x5d7f3a==='priority'?sequelize[_0x9f3c('0xc')](sequelize[_0x9f3c('0xd')](_0x9f3c('0xb')),_0x9f3c('0xe')):_0x5d7f3a,_0x9f3c('0x10')];}});}return _0x15c684;};exports[_0x9f3c('0x11')]=function(_0x3710d5,_0x1a7b98){if(_[_0x9f3c('0x12')](_0x3710d5)){return _0x3710d5;}if(_[_0x9f3c('0x13')](_0x3710d5)){for(var _0x1d2a79=0x0;_0x1d2a79<_0x3710d5[_0x9f3c('0x14')];_0x1d2a79+=0x1){_0x3710d5[_0x1d2a79]=this[_0x9f3c('0x11')](_0x3710d5[_0x1d2a79],_0x1a7b98);}return _0x3710d5;}if(!_['isObject'](_0x3710d5)){return _0x3710d5;}if(_[_0x9f3c('0x15')](_0x1a7b98)){_0x1a7b98=[_0x1a7b98];}if(!_[_0x9f3c('0x13')](_0x1a7b98)){return _0x3710d5;}for(var _0x2b64af=0x0;_0x2b64af<_0x1a7b98[_0x9f3c('0x14')];_0x2b64af+=0x1){_[_0x9f3c('0x16')](_0x3710d5,_0x1a7b98[_0x2b64af]);}for(var _0x5115e6 in _0x3710d5){if(_0x3710d5['hasOwnProperty'](_0x5115e6)){_0x3710d5[_0x5115e6]=this[_0x9f3c('0x11')](_0x3710d5[_0x5115e6],_0x1a7b98);}}return _0x3710d5;};
\ No newline at end of file
+var _0xdcf8=['omit','isObject','length','unset','hasOwnProperty','lodash','sequelize','fields','filters','isEmpty','forOwn','parse','split','offset','sort','map','indexOf','cast','col','priority','unsigned','substr','DESC','ASC','isArray'];(function(_0x39b217,_0x2405af){var _0x4df191=function(_0x4945c1){while(--_0x4945c1){_0x39b217['push'](_0x39b217['shift']());}};_0x4df191(++_0x2405af);}(_0xdcf8,0x195));var _0x8dcf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xdcf8[_0x432682];return _0x463d05;};'use strict';var _=require(_0x8dcf('0x0'));var sequelize=require(_0x8dcf('0x1'));var LIMIT_VALUE=0xfa;exports[_0x8dcf('0x2')]=function(_0x35ce11){var _0x311766=null;if(_0x35ce11){_0x311766=_0x35ce11['split'](',');}return _0x311766;};exports[_0x8dcf('0x3')]=function(_0x2e69f8){var _0x4f308f={};if(!_[_0x8dcf('0x4')](_0x2e69f8)){_0x4f308f={};_[_0x8dcf('0x5')](_0x2e69f8,function(_0x50b08e,_0x50a998){try{_0x4f308f[_0x50a998]=JSON[_0x8dcf('0x6')](_0x50b08e);}catch(_0x1b6a12){_0x4f308f[_0x50a998]=_0x50b08e[_0x8dcf('0x7')](',');}});}return _0x4f308f;};exports['limit']=function(_0x52e901){_0x52e901=parseInt(_0x52e901,0xa);if(!_0x52e901||_0x52e901<0x0){_0x52e901=LIMIT_VALUE;}return _0x52e901;};exports[_0x8dcf('0x8')]=function(_0x13ad7d){_0x13ad7d=parseInt(_0x13ad7d,0xa);if(!_0x13ad7d||_0x13ad7d<0x0){_0x13ad7d=0x0;}return _0x13ad7d;};exports[_0x8dcf('0x9')]=function(_0x2ecd72){var _0x379159,_0x285aa1=null;if(_0x2ecd72){_0x379159=_0x2ecd72[_0x8dcf('0x7')](',');_0x285aa1=_[_0x8dcf('0xa')](_0x379159,function(_0x498047){if(_0x498047[_0x8dcf('0xb')]('-')===0x0){return[_0x498047==='priority'?sequelize[_0x8dcf('0xc')](sequelize[_0x8dcf('0xd')](_0x8dcf('0xe')),_0x8dcf('0xf')):_0x498047[_0x8dcf('0x10')](0x1),_0x8dcf('0x11')];}else{return[_0x498047===_0x8dcf('0xe')?sequelize[_0x8dcf('0xc')](sequelize[_0x8dcf('0xd')]('priority'),_0x8dcf('0xf')):_0x498047,_0x8dcf('0x12')];}});}return _0x285aa1;};exports['omit']=function(_0x533230,_0x3faf8e){if(_[_0x8dcf('0x4')](_0x533230)){return _0x533230;}if(_[_0x8dcf('0x13')](_0x533230)){for(var _0x325831=0x0;_0x325831<_0x533230['length'];_0x325831+=0x1){_0x533230[_0x325831]=this[_0x8dcf('0x14')](_0x533230[_0x325831],_0x3faf8e);}return _0x533230;}if(!_[_0x8dcf('0x15')](_0x533230)){return _0x533230;}if(_['isString'](_0x3faf8e)){_0x3faf8e=[_0x3faf8e];}if(!_['isArray'](_0x3faf8e)){return _0x533230;}for(var _0x4c7f85=0x0;_0x4c7f85<_0x3faf8e[_0x8dcf('0x16')];_0x4c7f85+=0x1){_[_0x8dcf('0x17')](_0x533230,_0x3faf8e[_0x4c7f85]);}for(var _0x305e01 in _0x533230){if(_0x533230[_0x8dcf('0x18')](_0x305e01)){_0x533230[_0x305e01]=this[_0x8dcf('0x14')](_0x533230[_0x305e01],_0x3faf8e);}}return _0x533230;};
\ No newline at end of file
index ecf5535..0a08f6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['use','join','root','favicon.ico','set','appPath','development','test','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','50mb','json','initialize','body-parser','method-override','cookie-parser','errorhandler','path','cors','moment','./environment','../mysqldb','default','get','env','production'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var express=require('express');var favicon=require('serve-favicon');var bodyParser=require(_0x3071('0x0'));var methodOverride=require(_0x3071('0x1'));var cookieParser=require(_0x3071('0x2'));var errorHandler=require(_0x3071('0x3'));var path=require(_0x3071('0x4'));var passport=require('passport');var cors=require(_0x3071('0x5'));var moment=require(_0x3071('0x6'));var config=require(_0x3071('0x7'));var db=require(_0x3071('0x8'))['db'];exports[_0x3071('0x9')]=function(_0x41cf76){var _0x1d3dd6=_0x41cf76[_0x3071('0xa')](_0x3071('0xb'));if(_0x1d3dd6===_0x3071('0xc')){_0x41cf76[_0x3071('0xd')](favicon(path[_0x3071('0xe')](config[_0x3071('0xf')],'public',_0x3071('0x10'))));_0x41cf76[_0x3071('0x11')](_0x3071('0x12'),path[_0x3071('0xe')](config[_0x3071('0xf')],'public'));}if(_0x1d3dd6===_0x3071('0x13')||_0x1d3dd6===_0x3071('0x14')){_0x41cf76[_0x3071('0xd')](favicon(path[_0x3071('0xe')](config[_0x3071('0xf')],'client','favicon.ico')));_0x41cf76[_0x3071('0x11')]('appPath',path[_0x3071('0xe')](config[_0x3071('0xf')],'client'));_0x41cf76[_0x3071('0xd')](errorHandler());}_0x41cf76['set'](_0x3071('0x15'),function(_0x45c93b,_0x1271d0){if(this[_0x45c93b]instanceof Date){_0x1271d0=this[_0x45c93b][_0x3071('0x16')]()[_0x3071('0x17')]('.')[0x0]+'Z';}return _0x1271d0;});_0x41cf76[_0x3071('0xd')](express[_0x3071('0x18')](_0x41cf76[_0x3071('0xa')](_0x3071('0x12'))));_0x41cf76[_0x3071('0x11')]('views',config[_0x3071('0xf')]+_0x3071('0x19'));_0x41cf76[_0x3071('0x1a')](_0x3071('0x1b'),require(_0x3071('0x1c'))[_0x3071('0x1d')]);_0x41cf76[_0x3071('0x11')](_0x3071('0x1e'),'html');_0x41cf76[_0x3071('0xd')](bodyParser[_0x3071('0x1f')]({'limit':_0x3071('0x20'),'extended':!![]}));_0x41cf76['use'](bodyParser[_0x3071('0x21')]({'limit':'50mb'}));_0x41cf76[_0x3071('0xd')](cors());_0x41cf76[_0x3071('0xd')](methodOverride());_0x41cf76[_0x3071('0xd')](cookieParser());_0x41cf76[_0x3071('0xd')](passport[_0x3071('0x22')]());};
\ No newline at end of file
+var _0x70e0=['test','client','set','json\x20replacer','split','static','get','views','/server/views','engine','html','renderFile','view\x20engine','json','50mb','initialize','express','serve-favicon','body-parser','errorhandler','path','passport','cors','./environment','default','env','production','use','join','root','public','favicon.ico','development'];(function(_0x2c5346,_0x4e0184){var _0x44dacb=function(_0x3f335b){while(--_0x3f335b){_0x2c5346['push'](_0x2c5346['shift']());}};_0x44dacb(++_0x4e0184);}(_0x70e0,0x17b));var _0x070e=function(_0xa40fa,_0x24c3f6){_0xa40fa=_0xa40fa-0x0;var _0x57b32f=_0x70e0[_0xa40fa];return _0x57b32f;};'use strict';var express=require(_0x070e('0x0'));var favicon=require(_0x070e('0x1'));var bodyParser=require(_0x070e('0x2'));var methodOverride=require('method-override');var cookieParser=require('cookie-parser');var errorHandler=require(_0x070e('0x3'));var path=require(_0x070e('0x4'));var passport=require(_0x070e('0x5'));var cors=require(_0x070e('0x6'));var moment=require('moment');var config=require(_0x070e('0x7'));var db=require('../mysqldb')['db'];exports[_0x070e('0x8')]=function(_0x4b041d){var _0x56e420=_0x4b041d['get'](_0x070e('0x9'));if(_0x56e420===_0x070e('0xa')){_0x4b041d[_0x070e('0xb')](favicon(path[_0x070e('0xc')](config[_0x070e('0xd')],_0x070e('0xe'),_0x070e('0xf'))));_0x4b041d['set']('appPath',path[_0x070e('0xc')](config[_0x070e('0xd')],_0x070e('0xe')));}if(_0x56e420===_0x070e('0x10')||_0x56e420===_0x070e('0x11')){_0x4b041d[_0x070e('0xb')](favicon(path[_0x070e('0xc')](config[_0x070e('0xd')],_0x070e('0x12'),_0x070e('0xf'))));_0x4b041d[_0x070e('0x13')]('appPath',path['join'](config[_0x070e('0xd')],'client'));_0x4b041d['use'](errorHandler());}_0x4b041d['set'](_0x070e('0x14'),function(_0x14c3fd,_0x51d14d){if(this[_0x14c3fd]instanceof Date){_0x51d14d=this[_0x14c3fd]['toISOString']()[_0x070e('0x15')]('.')[0x0]+'Z';}return _0x51d14d;});_0x4b041d[_0x070e('0xb')](express[_0x070e('0x16')](_0x4b041d[_0x070e('0x17')]('appPath')));_0x4b041d['set'](_0x070e('0x18'),config[_0x070e('0xd')]+_0x070e('0x19'));_0x4b041d[_0x070e('0x1a')](_0x070e('0x1b'),require('ejs')[_0x070e('0x1c')]);_0x4b041d[_0x070e('0x13')](_0x070e('0x1d'),_0x070e('0x1b'));_0x4b041d[_0x070e('0xb')](bodyParser['urlencoded']({'limit':'50mb','extended':!![]}));_0x4b041d['use'](bodyParser[_0x070e('0x1e')]({'limit':_0x070e('0x1f')}));_0x4b041d[_0x070e('0xb')](cors());_0x4b041d['use'](methodOverride());_0x4b041d[_0x070e('0xb')](cookieParser());_0x4b041d['use'](passport[_0x070e('0x20')]());};
\ No newline at end of file
index 9737d9a..1c91ceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3889=['join','createHash','md5','update','digest','hex','getUuid','win32','dmidecode\x20--string\x20system-uuid','replace','hostname','macAddress','ipAddress','substring','lodash','crypto','execSync','networkInterfaces','keys','length','filter','family','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','orderBy','model'];(function(_0x123cf1,_0x9b6d6){var _0x1623ef=function(_0x124fdd){while(--_0x124fdd){_0x123cf1['push'](_0x123cf1['shift']());}};_0x1623ef(++_0x9b6d6);}(_0x3889,0xae));var _0x9388=function(_0x537c4c,_0x1f33e9){_0x537c4c=_0x537c4c-0x0;var _0x139ce5=_0x3889[_0x537c4c];return _0x139ce5;};'use strict';var _=require(_0x9388('0x0'));var os=require('os');var crypto=require(_0x9388('0x1'));var machine=require('bimedia-machine-uuid');var exec=require('child_process')[_0x9388('0x2')];function getInterfaces(){var _0x363b7f=[];var _0x455995=os[_0x9388('0x3')]();var _0x353ac3=_['orderBy'](_[_0x9388('0x4')](_0x455995));for(var _0x3165ce=0x0;_0x3165ce<_0x353ac3[_0x9388('0x5')];_0x3165ce++){var _0x144b3b=_0x455995[_0x353ac3[_0x3165ce]][_0x9388('0x6')](function(_0x140660){return _0x140660[_0x9388('0x7')]==='IPv4'&&_0x140660[_0x9388('0x8')]===![];});_0x363b7f=_0x363b7f[_0x9388('0x9')](_0x144b3b);}return _0x363b7f;}function getFirstInterface(){var _0x124f0b=_[_0x9388('0xa')](getInterfaces());return{'macAddress':_0x124f0b&&_0x124f0b[_0x9388('0xb')]?_0x124f0b['mac']:_0x9388('0xc'),'ipAddress':_0x124f0b&&_0x124f0b[_0x9388('0xd')]?_0x124f0b['address']:_0x9388('0xe')};}exports[_0x9388('0xf')]=getFirstInterface;function getCPUhash(){var _0x4c1e8b=_[_0x9388('0x10')](os['cpus']()['map'](function(_0x35e298){return _0x35e298[_0x9388('0x11')];}))[_0x9388('0x12')](':');return crypto[_0x9388('0x13')](_0x9388('0x14'))[_0x9388('0x15')](_0x4c1e8b)[_0x9388('0x16')](_0x9388('0x17'));}exports[_0x9388('0x18')]=function(){switch(os['platform']()){case _0x9388('0x19'):return exec(_0x9388('0x1a'),{'encoding':'utf8'})[_0x9388('0x1b')]('\x0d\x0a','');default:var _0x387499=getFirstInterface();var _0x40b509=getCPUhash();var _0x1cf38e=_0x40b509+'|'+os[_0x9388('0x1c')]()+'|'+_0x387499[_0x9388('0x1d')]+'|'+_0x387499[_0x9388('0x1e')];var _0x42e667=crypto['createHash'](_0x9388('0x14'))[_0x9388('0x15')](_0x1cf38e)[_0x9388('0x16')](_0x9388('0x17'));return _0x42e667[_0x9388('0x1f')](0x0,0x8)+'-'+_0x42e667[_0x9388('0x1f')](0x8,0xc)+'-'+_0x42e667[_0x9388('0x1f')](0xc,0x10)+'-'+_0x42e667[_0x9388('0x1f')](0x10,0x14)+'-'+_0x42e667[_0x9388('0x1f')](0x14);}};
\ No newline at end of file
+var _0xb7f0=['keys','filter','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','createHash','md5','update','getUuid','platform','dmidecode\x20--string\x20system-uuid','utf8','replace','macAddress','ipAddress','digest','hex','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','networkInterfaces','orderBy'];(function(_0x59ac72,_0x231bc8){var _0x12923c=function(_0x5ea63f){while(--_0x5ea63f){_0x59ac72['push'](_0x59ac72['shift']());}};_0x12923c(++_0x231bc8);}(_0xb7f0,0x1c7));var _0x0b7f=function(_0x398140,_0x55b247){_0x398140=_0x398140-0x0;var _0x39f02f=_0xb7f0[_0x398140];return _0x39f02f;};'use strict';var _=require(_0x0b7f('0x0'));var os=require('os');var crypto=require(_0x0b7f('0x1'));var machine=require(_0x0b7f('0x2'));var exec=require(_0x0b7f('0x3'))[_0x0b7f('0x4')];function getInterfaces(){var _0x4c531b=[];var _0x3203b8=os[_0x0b7f('0x5')]();var _0x3cff7b=_[_0x0b7f('0x6')](_[_0x0b7f('0x7')](_0x3203b8));for(var _0x3d1ba1=0x0;_0x3d1ba1<_0x3cff7b['length'];_0x3d1ba1++){var _0x4b8226=_0x3203b8[_0x3cff7b[_0x3d1ba1]][_0x0b7f('0x8')](function(_0x4913a5){return _0x4913a5['family']==='IPv4'&&_0x4913a5[_0x0b7f('0x9')]===![];});_0x4c531b=_0x4c531b[_0x0b7f('0xa')](_0x4b8226);}return _0x4c531b;}function getFirstInterface(){var _0x44aa60=_[_0x0b7f('0xb')](getInterfaces());return{'macAddress':_0x44aa60&&_0x44aa60[_0x0b7f('0xc')]?_0x44aa60[_0x0b7f('0xc')]:_0x0b7f('0xd'),'ipAddress':_0x44aa60&&_0x44aa60[_0x0b7f('0xe')]?_0x44aa60[_0x0b7f('0xe')]:_0x0b7f('0xf')};}exports[_0x0b7f('0x10')]=getFirstInterface;function getCPUhash(){var _0x5249a8=_[_0x0b7f('0x6')](os[_0x0b7f('0x11')]()[_0x0b7f('0x12')](function(_0x464431){return _0x464431[_0x0b7f('0x13')];}))['join'](':');return crypto[_0x0b7f('0x14')](_0x0b7f('0x15'))[_0x0b7f('0x16')](_0x5249a8)['digest']('hex');}exports[_0x0b7f('0x17')]=function(){switch(os[_0x0b7f('0x18')]()){case'win32':return exec(_0x0b7f('0x19'),{'encoding':_0x0b7f('0x1a')})[_0x0b7f('0x1b')]('\x0d\x0a','');default:var _0x44500c=getFirstInterface();var _0x359491=getCPUhash();var _0x4f2b62=_0x359491+'|'+os['hostname']()+'|'+_0x44500c[_0x0b7f('0x1c')]+'|'+_0x44500c[_0x0b7f('0x1d')];var _0x495283=crypto[_0x0b7f('0x14')](_0x0b7f('0x15'))[_0x0b7f('0x16')](_0x4f2b62)[_0x0b7f('0x1e')](_0x0b7f('0x1f'));return _0x495283['substring'](0x0,0x8)+'-'+_0x495283[_0x0b7f('0x20')](0x8,0xc)+'-'+_0x495283[_0x0b7f('0x20')](0xc,0x10)+'-'+_0x495283[_0x0b7f('0x20')](0x10,0x14)+'-'+_0x495283[_0x0b7f('0x20')](0x14);}};
\ No newline at end of file
index a45dd74..7bf4c50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeda=['crypto','bluebird','pkginfo','version','../../mysqldb','../environment','../logger','license','../../api/jira/jira.controller','www.xcallymotion.com','/api/servers/%s/check?version=%s','exports','GET','application/json','request','setEncoding','data','parse','error','end','createCipher','aes-256-ctr','secrets','session','update','utf8','final','base64','||FIELD||VALUE||\x0a','findOne','admin','fullname','email','then','|reason|','|name|','|email|','ipAddress','MOTLICENSE','Motion\x20License\x20Alert','Alert','get','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','data1','uuid','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','format','YYYY-MM-DD\x20HH:mm','diff','data2','days','DEMO\x20START\x20AT\x20%s','catch','message','finally','getUuid','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','https'];(function(_0x528501,_0x2430e4){var _0x2aeef5=function(_0x3f6b00){while(--_0x3f6b00){_0x528501['push'](_0x528501['shift']());}};_0x2aeef5(++_0x2430e4);}(_0xdeda,0x18a));var _0xaded=function(_0x5a2141,_0x10f036){_0x5a2141=_0x5a2141-0x0;var _0x577f88=_0xdeda[_0x5a2141];return _0x577f88;};'use strict';var util=require(_0xaded('0x0'));var https=require(_0xaded('0x1'));var crypto=require(_0xaded('0x2'));var moment=require('moment');var BPromise=require(_0xaded('0x3'));var pkginfo=require(_0xaded('0x4'))(module,_0xaded('0x5'));var db=require(_0xaded('0x6'))['db'];var config=require(_0xaded('0x7'));var hardware=require('./hardware');var logger=require(_0xaded('0x8'))(_0xaded('0x9'));var jira=require(_0xaded('0xa'));var HOST=_0xaded('0xb');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var ADMIN;function httpRequest(_0x4fe4d2){return new BPromise(function(_0x327991,_0x487dad){var _0x239e67={'host':HOST,'port':0x1bb,'path':util['format'](_0xaded('0xc'),_0x4fe4d2,module[_0xaded('0xd')][_0xaded('0x5')]),'method':_0xaded('0xe'),'timeout':0xea60,'headers':{'Content-Type':_0xaded('0xf')}};var _0x4b7475=https[_0xaded('0x10')](_0x239e67,function(_0x2ac258){_0x2ac258[_0xaded('0x11')]('utf8');var _0xa378c0='';_0x2ac258['on'](_0xaded('0x12'),function(_0x2811c5){_0xa378c0+=_0x2811c5;});_0x2ac258['on']('end',function(){try{_0x327991(JSON[_0xaded('0x13')](_0xa378c0));}catch(_0x4eac85){_0x487dad(_0x4eac85);}});});_0x4b7475['on'](_0xaded('0x14'),_0x487dad);_0x4b7475[_0xaded('0x15')]();});}function encryptDate(_0x1d8fa9){var _0x25bdb2=crypto[_0xaded('0x16')](_0xaded('0x17'),config[_0xaded('0x18')][_0xaded('0x19')]);var _0x5ce291=_0x25bdb2[_0xaded('0x1a')](_0x1d8fa9,_0xaded('0x1b'),'base64');_0x5ce291+=_0x25bdb2[_0xaded('0x1c')](_0xaded('0x1d'));return _0x5ce291;}function decryptDate(_0x4a0dc5){var _0x15895f=crypto['createDecipher'](_0xaded('0x17'),config[_0xaded('0x18')][_0xaded('0x19')]);var _0x396af0=_0x15895f[_0xaded('0x1a')](_0x4a0dc5,_0xaded('0x1d'),_0xaded('0x1b'));_0x396af0+=_0x15895f['final'](_0xaded('0x1b'));return _0x396af0;}function sendJiraAlert(_0x517ea8,_0x15a82c,_0x37492c){var _0x325665=_0xaded('0x1e');return db['User'][_0xaded('0x1f')]({'where':{'role':_0xaded('0x20')},'attributes':[_0xaded('0x21'),_0xaded('0x22')],'raw':!![]})[_0xaded('0x23')](function(_0x9f0453){ADMIN=_0x9f0453;_0x325665+=_0xaded('0x24')+_0x37492c+'|\x0a';_0x325665+='|uuid|'+_0x517ea8+'|\x0a';_0x325665+='|machineUuid|'+_0x15a82c+'|\x0a';_0x325665+=_0xaded('0x25')+ADMIN['fullname']+'|\x0a';_0x325665+=_0xaded('0x26')+ADMIN[_0xaded('0x22')]+'|\x0a';return _0x325665;})['then'](function(_0x66d99b){var _0xc7f91c=hardware['getFirstInterface']()[_0xaded('0x27')];return jira['openIssue']({'key':_0xaded('0x28'),'summary':_0xaded('0x29'),'description':_0x66d99b,'issuetype':_0xaded('0x2a'),'oldToken':_0x517ea8,'newToken':_0x15a82c,'email':ADMIN[_0xaded('0x22')],'name':ADMIN[_0xaded('0x21')],'reason':GRAY_PERIOD_REASON,'ip':_0xc7f91c});});}function manageLicense(_0x4b4dcd,_0x3db059){var _0x5c8073=_0x3db059[_0xaded('0x2b')]({'plain':!![]});httpRequest(_0x4b4dcd)['then'](function(_0x1e6996){if(_0x1e6996[_0xaded('0x2c')]){if(!_0x5c8073[_0xaded('0x9')]&&_0x5c8073[_0xaded('0x9')]!=_0x1e6996[_0xaded('0x9')]||_0x5c8073[_0xaded('0x9')]&&_0x5c8073['data2']){logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x5c8073[_0xaded('0x9')]&&!_0x5c8073['data2']&&_0x5c8073[_0xaded('0x9')]!=_0x1e6996[_0xaded('0x9')]){logger[_0xaded('0x2d')](_0xaded('0x2e'));}if(_0x5c8073[_0xaded('0x9')]&&!_0x5c8073['data2']&&_0x5c8073[_0xaded('0x9')]==_0x1e6996[_0xaded('0x9')]){return _0x3db059;}return _0x3db059[_0xaded('0x1a')]({'data1':_0x4b4dcd,'data2':null,'license':_0x1e6996[_0xaded('0x9')]});}else{if(_0x1e6996[_0xaded('0x9')]||_0x5c8073[_0xaded('0x9')]){if(!_0x5c8073['data2']){if(_0x5c8073['data1']==_0x4b4dcd){GRAY_PERIOD_REASON='Disabled';logger['info'](_0xaded('0x2f'));}else{GRAY_PERIOD_REASON=_0xaded('0x30');logger[_0xaded('0x2d')](_0xaded('0x31'),_0x5c8073[_0xaded('0x32')],_0x4b4dcd);}sendJiraAlert(_0x5c8073[_0xaded('0x32')],_0x1e6996[_0xaded('0x33')],GRAY_PERIOD_REASON);logger[_0xaded('0x2d')](_0xaded('0x34'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0xaded('0x35')](_0xaded('0x36')));return _0x3db059['update']({'data2':encryptDate(moment()[_0xaded('0x35')](_0xaded('0x36')))});}else{if(moment()[_0xaded('0x37')](decryptDate(_0x5c8073[_0xaded('0x38')]),_0xaded('0x39'))>DAYS){logger[_0xaded('0x2d')](_0xaded('0x3a'),moment()[_0xaded('0x35')](_0xaded('0x36')));return _0x3db059[_0xaded('0x1a')]({'data1':_0x4b4dcd,'data2':null,'license':null});}}}else{if(_0x5c8073[_0xaded('0x32')]!=_0x4b4dcd){logger[_0xaded('0x2d')](_0xaded('0x31'),_0x5c8073[_0xaded('0x32')],_0x4b4dcd);return _0x3db059[_0xaded('0x1a')]({'data1':_0x4b4dcd,'data2':null,'license':null});}}}return _0x3db059;})['then'](function(_0x560a7a){_0x3db059=_0x560a7a;})[_0xaded('0x3b')](function(_0x1a7c34){logger['error'](_0x1a7c34[_0xaded('0x3c')]);})[_0xaded('0x3d')](function(){setTimeout(function(){manageLicense(hardware[_0xaded('0x3e')](),_0x3db059);},TIME);});}function defaultLicense(){var _0x2e08ae=hardware[_0xaded('0x3e')]();if(_0x2e08ae){return db['License']['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x2e08ae}})[_0xaded('0x3f')](function(_0x47550d,_0xe04a13){logger['info'](_0xaded('0x40'),_0x2e08ae);manageLicense(_0x2e08ae,_0x47550d);})['catch'](function(_0x28b4a9){logger[_0xaded('0x14')](_0x28b4a9[_0xaded('0x3c')]);});}}exports[_0xaded('0x41')]=defaultLicense;
\ No newline at end of file
+var _0x0e96=['application/json','setEncoding','utf8','end','parse','error','createCipher','aes-256-ctr','secrets','session','update','final','base64','||FIELD||VALUE||\x0a','User','findOne','admin','then','|uuid|','|machineUuid|','fullname','|email|','email','getFirstInterface','openIssue','MOTLICENSE','Motion\x20License\x20Alert','Alert','get','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','data1','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','uuid','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','diff','days','catch','message','finally','getUuid','findOrCreate','default','util','crypto','moment','bluebird','pkginfo','version','../../mysqldb','../environment','./hardware','license','../../api/jira/jira.controller','www.xcallymotion.com','format','/api/servers/%s/check?version=%s','GET'];(function(_0x14faa6,_0xccadc8){var _0x3ca44a=function(_0x414bb4){while(--_0x414bb4){_0x14faa6['push'](_0x14faa6['shift']());}};_0x3ca44a(++_0xccadc8);}(_0x0e96,0xed));var _0x60e9=function(_0x3ba4c8,_0x2dfaab){_0x3ba4c8=_0x3ba4c8-0x0;var _0x2cf5a2=_0x0e96[_0x3ba4c8];return _0x2cf5a2;};'use strict';var util=require(_0x60e9('0x0'));var https=require('https');var crypto=require(_0x60e9('0x1'));var moment=require(_0x60e9('0x2'));var BPromise=require(_0x60e9('0x3'));var pkginfo=require(_0x60e9('0x4'))(module,_0x60e9('0x5'));var db=require(_0x60e9('0x6'))['db'];var config=require(_0x60e9('0x7'));var hardware=require(_0x60e9('0x8'));var logger=require('../logger')(_0x60e9('0x9'));var jira=require(_0x60e9('0xa'));var HOST=_0x60e9('0xb');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var ADMIN;function httpRequest(_0x6650e8){return new BPromise(function(_0x33f722,_0x55fedc){var _0x3cea29={'host':HOST,'port':0x1bb,'path':util[_0x60e9('0xc')](_0x60e9('0xd'),_0x6650e8,module['exports'][_0x60e9('0x5')]),'method':_0x60e9('0xe'),'timeout':0xea60,'headers':{'Content-Type':_0x60e9('0xf')}};var _0x3badb1=https['request'](_0x3cea29,function(_0x2a837d){_0x2a837d[_0x60e9('0x10')](_0x60e9('0x11'));var _0x4e1d17='';_0x2a837d['on']('data',function(_0x3e32d7){_0x4e1d17+=_0x3e32d7;});_0x2a837d['on'](_0x60e9('0x12'),function(){try{_0x33f722(JSON[_0x60e9('0x13')](_0x4e1d17));}catch(_0x439a1f){_0x55fedc(_0x439a1f);}});});_0x3badb1['on'](_0x60e9('0x14'),_0x55fedc);_0x3badb1[_0x60e9('0x12')]();});}function encryptDate(_0x251f9e){var _0x5e43c4=crypto[_0x60e9('0x15')](_0x60e9('0x16'),config[_0x60e9('0x17')][_0x60e9('0x18')]);var _0x2605f0=_0x5e43c4[_0x60e9('0x19')](_0x251f9e,_0x60e9('0x11'),'base64');_0x2605f0+=_0x5e43c4[_0x60e9('0x1a')]('base64');return _0x2605f0;}function decryptDate(_0x279602){var _0xe849e6=crypto['createDecipher']('aes-256-ctr',config['secrets'][_0x60e9('0x18')]);var _0x1dec2f=_0xe849e6[_0x60e9('0x19')](_0x279602,_0x60e9('0x1b'),'utf8');_0x1dec2f+=_0xe849e6[_0x60e9('0x1a')]('utf8');return _0x1dec2f;}function sendJiraAlert(_0x5b0ce2,_0xce2438,_0x38706f){var _0x5725f8=_0x60e9('0x1c');return db[_0x60e9('0x1d')][_0x60e9('0x1e')]({'where':{'role':_0x60e9('0x1f')},'attributes':['fullname','email'],'raw':!![]})[_0x60e9('0x20')](function(_0x5cfab6){ADMIN=_0x5cfab6;_0x5725f8+='|reason|'+_0x38706f+'|\x0a';_0x5725f8+=_0x60e9('0x21')+_0x5b0ce2+'|\x0a';_0x5725f8+=_0x60e9('0x22')+_0xce2438+'|\x0a';_0x5725f8+='|name|'+ADMIN[_0x60e9('0x23')]+'|\x0a';_0x5725f8+=_0x60e9('0x24')+ADMIN[_0x60e9('0x25')]+'|\x0a';return _0x5725f8;})[_0x60e9('0x20')](function(_0x4b1503){var _0x438a3a=hardware[_0x60e9('0x26')]()['ipAddress'];return jira[_0x60e9('0x27')]({'key':_0x60e9('0x28'),'summary':_0x60e9('0x29'),'description':_0x4b1503,'issuetype':_0x60e9('0x2a'),'oldToken':_0x5b0ce2,'newToken':_0xce2438,'email':ADMIN[_0x60e9('0x25')],'name':ADMIN[_0x60e9('0x23')],'reason':GRAY_PERIOD_REASON,'ip':_0x438a3a});});}function manageLicense(_0x1c832d,_0x5e9b4f){var _0x2f355b=_0x5e9b4f[_0x60e9('0x2b')]({'plain':!![]});httpRequest(_0x1c832d)[_0x60e9('0x20')](function(_0x1c008c){if(_0x1c008c[_0x60e9('0x2c')]){if(!_0x2f355b['license']&&_0x2f355b[_0x60e9('0x9')]!=_0x1c008c[_0x60e9('0x9')]||_0x2f355b['license']&&_0x2f355b[_0x60e9('0x2d')]){logger[_0x60e9('0x2e')](_0x60e9('0x2f'));}if(_0x2f355b[_0x60e9('0x9')]&&!_0x2f355b[_0x60e9('0x2d')]&&_0x2f355b[_0x60e9('0x9')]!=_0x1c008c['license']){logger['info'](_0x60e9('0x30'));}if(_0x2f355b[_0x60e9('0x9')]&&!_0x2f355b[_0x60e9('0x2d')]&&_0x2f355b[_0x60e9('0x9')]==_0x1c008c[_0x60e9('0x9')]){return _0x5e9b4f;}return _0x5e9b4f[_0x60e9('0x19')]({'data1':_0x1c832d,'data2':null,'license':_0x1c008c['license']});}else{if(_0x1c008c[_0x60e9('0x9')]||_0x2f355b[_0x60e9('0x9')]){if(!_0x2f355b['data2']){if(_0x2f355b[_0x60e9('0x31')]==_0x1c832d){GRAY_PERIOD_REASON=_0x60e9('0x32');logger[_0x60e9('0x2e')](_0x60e9('0x33'));}else{GRAY_PERIOD_REASON='Changed';logger[_0x60e9('0x2e')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x2f355b[_0x60e9('0x31')],_0x1c832d);}sendJiraAlert(_0x2f355b['data1'],_0x1c008c[_0x60e9('0x34')],GRAY_PERIOD_REASON);logger[_0x60e9('0x2e')](_0x60e9('0x35'),GRAY_PERIOD_REASON['toUpperCase'](),moment()['format'](_0x60e9('0x36')));return _0x5e9b4f[_0x60e9('0x19')]({'data2':encryptDate(moment()['format']('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x60e9('0x37')](decryptDate(_0x2f355b['data2']),_0x60e9('0x38'))>DAYS){logger[_0x60e9('0x2e')]('DEMO\x20START\x20AT\x20%s',moment()[_0x60e9('0xc')](_0x60e9('0x36')));return _0x5e9b4f[_0x60e9('0x19')]({'data1':_0x1c832d,'data2':null,'license':null});}}}else{if(_0x2f355b[_0x60e9('0x31')]!=_0x1c832d){logger[_0x60e9('0x2e')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x2f355b['data1'],_0x1c832d);return _0x5e9b4f[_0x60e9('0x19')]({'data1':_0x1c832d,'data2':null,'license':null});}}}return _0x5e9b4f;})[_0x60e9('0x20')](function(_0x34278a){_0x5e9b4f=_0x34278a;})[_0x60e9('0x39')](function(_0x39c926){logger[_0x60e9('0x14')](_0x39c926[_0x60e9('0x3a')]);})[_0x60e9('0x3b')](function(){setTimeout(function(){manageLicense(hardware[_0x60e9('0x3c')](),_0x5e9b4f);},TIME);});}function defaultLicense(){var _0xc46eeb=hardware[_0x60e9('0x3c')]();if(_0xc46eeb){return db['License'][_0x60e9('0x3d')]({'where':{'id':0x1},'defaults':{'data1':_0xc46eeb}})['spread'](function(_0x1f56d1,_0x1b4deb){logger[_0x60e9('0x2e')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0xc46eeb);manageLicense(_0xc46eeb,_0x1f56d1);})['catch'](function(_0x5a388e){logger['error'](_0x5a388e[_0x60e9('0x3a')]);});}}exports[_0x60e9('0x3e')]=defaultLicense;
\ No newline at end of file
index 163e07c..09df303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9193=['session','gray','deadline','add','days','grayReason','disabled','2027-01-01T00:00:00.000Z','Breaking\x20license','message','Demo\x20license','getLicense','License','defaults','then','checkLicense','util','lodash','moment','./hardware','../environment','../../mysqldb','data1','data2','split','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','demo','uuid','machineUuid','getUuid','secrets'];(function(_0x4d90ed,_0x5d92b5){var _0x643016=function(_0x1c4a5e){while(--_0x1c4a5e){_0x4d90ed['push'](_0x4d90ed['shift']());}};_0x643016(++_0x5d92b5);}(_0x9193,0x18c));var _0x3919=function(_0xe5b349,_0x5f06e4){_0xe5b349=_0xe5b349-0x0;var _0x26b0ad=_0x9193[_0xe5b349];return _0x26b0ad;};'use strict';var crypto=require('crypto');var util=require(_0x3919('0x0'));var _=require(_0x3919('0x1'));var moment=require(_0x3919('0x2'));var hardware=require(_0x3919('0x3'));var config=require(_0x3919('0x4'));var db=require(_0x3919('0x5'))['db'];function checkLicense(_0x301f62,_0x113ba0){if(_0x301f62){try{var _0x4a0b71=_0x113ba0||_0x301f62['license'];if(_['isEmpty'](_0x4a0b71)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x312b54=_0x301f62[_0x3919('0x6')];var _0x303ee6=_0x301f62[_0x3919('0x7')];var _0x3eb128=_0x312b54[_0x3919('0x8')]('-')[0x4];var _0x39e38e=_0x312b54[_0x3919('0x8')]('-')[0x0];var _0x6f60d3=crypto['createDecipher'](_0x3919('0x9'),util[_0x3919('0xa')](_0x3919('0xb'),_0x3eb128,_0x312b54,_0x39e38e));var _0x5d6935=_0x6f60d3[_0x3919('0xc')](_0x4a0b71,_0x3919('0xd'),_0x3919('0xe'));_0x5d6935+=_0x6f60d3[_0x3919('0xf')]('utf8');var _0x373236=JSON[_0x3919('0x10')](_0x5d6935);_0x373236[_0x3919('0x11')]=![];_0x373236[_0x3919('0x12')]=_0x312b54;_0x373236[_0x3919('0x13')]=hardware[_0x3919('0x14')]();if(_0x303ee6){var _0x2d2457=crypto['createDecipher'](_0x3919('0x9'),config[_0x3919('0x15')][_0x3919('0x16')]);var _0x7685d4=_0x2d2457['update'](_0x303ee6,_0x3919('0xd'),_0x3919('0xe'));_0x7685d4+=_0x2d2457[_0x3919('0xf')](_0x3919('0xe'));_0x373236[_0x3919('0x17')]=_0x7685d4;_0x373236[_0x3919('0x18')]=moment(_0x7685d4)[_0x3919('0x19')](0x7,_0x3919('0x1a'))['format']();_0x373236[_0x3919('0x1b')]=_0x373236['uuid']!=_0x373236['machineUuid']?'changed':_0x3919('0x1c');}return _0x373236;}catch(_0x14f9e0){return{'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x3919('0x1d'),'chat':![],'mail':![],'fax':![],'messaging':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x3919('0x1e'),'uuid':_0x301f62[_0x3919('0x6')],'machineUuid':hardware[_0x3919('0x14')](),'message':_0x14f9e0[_0x3919('0x1f')],'virtual':0x0,'voice':!![],'preferred':![]};}}return{'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x3919('0x1d'),'chat':![],'mail':![],'fax':![],'messaging':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x3919('0x20'),'uuid':_0x301f62[_0x3919('0x6')],'machineUuid':hardware[_0x3919('0x14')](),'virtual':0x0,'voice':!![],'preferred':![]};}exports[_0x3919('0x21')]=function(_0x27fc2e){return db[_0x3919('0x22')]['find'](_[_0x3919('0x23')](_0x27fc2e,{'raw':!![],'where':{'id':0x1}}))[_0x3919('0x24')](function(_0xc3b47d){return checkLicense(_0xc3b47d,null);});};exports[_0x3919('0x25')]=checkLicense;
\ No newline at end of file
+var _0xef22=['moment','./hardware','../../mysqldb','license','License\x20key\x20value\x20not\x20found','data1','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','parse','uuid','machineUuid','getUuid','secrets','utf8','final','gray','days','grayReason','disabled','2027-01-01T00:00:00.000Z','Breaking\x20license','message','getLicense','License','find','then','checkLicense','crypto','util','lodash'];(function(_0x92a3d9,_0xcf3970){var _0x56458b=function(_0x36a48c){while(--_0x36a48c){_0x92a3d9['push'](_0x92a3d9['shift']());}};_0x56458b(++_0xcf3970);}(_0xef22,0x1c4));var _0x2ef2=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xef22[_0x92c450];return _0x2a9599;};'use strict';var crypto=require(_0x2ef2('0x0'));var util=require(_0x2ef2('0x1'));var _=require(_0x2ef2('0x2'));var moment=require(_0x2ef2('0x3'));var hardware=require(_0x2ef2('0x4'));var config=require('../environment');var db=require(_0x2ef2('0x5'))['db'];function checkLicense(_0x3e0c97,_0x45050f){if(_0x3e0c97){try{var _0x282d3c=_0x45050f||_0x3e0c97[_0x2ef2('0x6')];if(_['isEmpty'](_0x282d3c)){throw new Error(_0x2ef2('0x7'));}var _0xe88f36=_0x3e0c97[_0x2ef2('0x8')];var _0x38257a=_0x3e0c97['data2'];var _0x2c4cb2=_0xe88f36[_0x2ef2('0x9')]('-')[0x4];var _0x361057=_0xe88f36[_0x2ef2('0x9')]('-')[0x0];var _0x112d8d=crypto[_0x2ef2('0xa')](_0x2ef2('0xb'),util[_0x2ef2('0xc')](_0x2ef2('0xd'),_0x2c4cb2,_0xe88f36,_0x361057));var _0x291eb2=_0x112d8d[_0x2ef2('0xe')](_0x282d3c,_0x2ef2('0xf'),'utf8');_0x291eb2+=_0x112d8d['final']('utf8');var _0x1887fe=JSON[_0x2ef2('0x10')](_0x291eb2);_0x1887fe['demo']=![];_0x1887fe[_0x2ef2('0x11')]=_0xe88f36;_0x1887fe[_0x2ef2('0x12')]=hardware[_0x2ef2('0x13')]();if(_0x38257a){var _0x433b7f=crypto[_0x2ef2('0xa')](_0x2ef2('0xb'),config[_0x2ef2('0x14')]['session']);var _0x2333f0=_0x433b7f[_0x2ef2('0xe')](_0x38257a,_0x2ef2('0xf'),_0x2ef2('0x15'));_0x2333f0+=_0x433b7f[_0x2ef2('0x16')]('utf8');_0x1887fe[_0x2ef2('0x17')]=_0x2333f0;_0x1887fe['deadline']=moment(_0x2333f0)['add'](0x7,_0x2ef2('0x18'))[_0x2ef2('0xc')]();_0x1887fe[_0x2ef2('0x19')]=_0x1887fe['uuid']!=_0x1887fe[_0x2ef2('0x12')]?'changed':_0x2ef2('0x1a');}return _0x1887fe;}catch(_0x4adf11){return{'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2ef2('0x1b'),'chat':![],'mail':![],'fax':![],'messaging':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x2ef2('0x1c'),'uuid':_0x3e0c97[_0x2ef2('0x8')],'machineUuid':hardware[_0x2ef2('0x13')](),'message':_0x4adf11[_0x2ef2('0x1d')],'virtual':0x0,'voice':!![],'preferred':![]};}}return{'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x2ef2('0x1b'),'chat':![],'mail':![],'fax':![],'messaging':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Demo\x20license','uuid':_0x3e0c97[_0x2ef2('0x8')],'machineUuid':hardware[_0x2ef2('0x13')](),'virtual':0x0,'voice':!![],'preferred':![]};}exports[_0x2ef2('0x1e')]=function(_0x3b2544){return db[_0x2ef2('0x1f')][_0x2ef2('0x20')](_['defaults'](_0x3b2544,{'raw':!![],'where':{'id':0x1}}))[_0x2ef2('0x21')](function(_0x3407a3){return checkLicense(_0x3407a3,null);});};exports[_0x2ef2('0x22')]=checkLicense;
\ No newline at end of file
index a2cec32..15948cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aea=['myappanuglar-secret','secret','exports'];(function(_0x31de93,_0xce31fe){var _0x2e3fcc=function(_0x4eb995){while(--_0x4eb995){_0x31de93['push'](_0x31de93['shift']());}};_0x2e3fcc(++_0xce31fe);}(_0x9aea,0xdd));var _0xa9ae=function(_0x3400a0,_0x4e01e6){_0x3400a0=_0x3400a0-0x0;var _0x28a797=_0x9aea[_0x3400a0];return _0x28a797;};'use strict';module[_0xa9ae('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xa9ae('0x1'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xa9ae('0x2'),'DEBUG':''};
\ No newline at end of file
+var _0x40ca=['exports','app-id','secret'];(function(_0x21cd0c,_0x58ab7e){var _0x9348a2=function(_0x1d77d4){while(--_0x1d77d4){_0x21cd0c['push'](_0x21cd0c['shift']());}};_0x9348a2(++_0x58ab7e);}(_0x40ca,0x1a1));var _0xa40c=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0x40ca[_0x2ec461];return _0x28603d;};'use strict';module[_0xa40c('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0xa40c('0x1'),'GOOGLE_SECRET':_0xa40c('0x2'),'DEBUG':''};
\ No newline at end of file
index 3c46cd0..d6c6e75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ffb=['info','Console','env','debugLevel','moment','winston','util','path','INFO','join','log','xcally','%s-%s.log','format','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','message','exports','Logger','transports','File','%s-%s','error'];(function(_0x35f48e,_0x5b2e1e){var _0x494ad5=function(_0x551002){while(--_0x551002){_0x35f48e['push'](_0x35f48e['shift']());}};_0x494ad5(++_0x5b2e1e);}(_0x0ffb,0x13c));var _0xb0ff=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0ffb[_0xa464c9];return _0x3d73c4;};'use strict';var moment=require(_0xb0ff('0x0'));var winston=require(_0xb0ff('0x1'));var util=require(_0xb0ff('0x2'));var path=require(_0xb0ff('0x3'));var debugLevel=_0xb0ff('0x4');function filename(_0x8ca514,_0x476704){return path[_0xb0ff('0x5')]('/var',_0xb0ff('0x6'),_0xb0ff('0x7'),util['format'](_0xb0ff('0x8'),_0x8ca514,_0x476704));}function formatter(_0x25df03,_0x14a3e3){return util[_0xb0ff('0x9')](_0xb0ff('0xa'),moment()[_0xb0ff('0x9')](_0xb0ff('0xb')),_0x14a3e3[_0xb0ff('0xc')]['toUpperCase'](),_0x25df03,_0x14a3e3[_0xb0ff('0xd')]);}module[_0xb0ff('0xe')]=function(_0x515f07){return new winston[(_0xb0ff('0xf'))]({'transports':[new winston[(_0xb0ff('0x10'))][(_0xb0ff('0x11'))]({'name':util[_0xb0ff('0x9')](_0xb0ff('0x12'),_0x515f07,_0xb0ff('0x13')),'filename':filename(_0x515f07,_0xb0ff('0x13')),'level':_0xb0ff('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1ebb85){return formatter(_0x515f07,_0x1ebb85);}}),new winston[(_0xb0ff('0x10'))]['File']({'name':util['format'](_0xb0ff('0x12'),_0x515f07,'info'),'filename':filename(_0x515f07,'info'),'level':_0xb0ff('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x10f379){return formatter(_0x515f07,_0x10f379);}}),new winston[(_0xb0ff('0x10'))][(_0xb0ff('0x15'))]({'level':process[_0xb0ff('0x16')][_0xb0ff('0x17')]||debugLevel,'json':![],'formatter':function(_0x1e3e8c){return formatter(_0x515f07,_0x1e3e8c);}})]});};
\ No newline at end of file
+var _0xc10d=['[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','message','exports','Logger','File','error','%s-%s','info','transports','Console','env','debugLevel','moment','util','path','INFO','log','xcally','%s-%s.log','format'];(function(_0x25a143,_0x65db13){var _0x106e24=function(_0x4dae2d){while(--_0x4dae2d){_0x25a143['push'](_0x25a143['shift']());}};_0x106e24(++_0x65db13);}(_0xc10d,0x17f));var _0xdc10=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xc10d[_0x311c35];return _0x5cc50c;};'use strict';var moment=require(_0xdc10('0x0'));var winston=require('winston');var util=require(_0xdc10('0x1'));var path=require(_0xdc10('0x2'));var debugLevel=_0xdc10('0x3');function filename(_0x715e7c,_0x208398){return path['join']('/var',_0xdc10('0x4'),_0xdc10('0x5'),util['format'](_0xdc10('0x6'),_0x715e7c,_0x208398));}function formatter(_0x265ef9,_0xae071c){return util[_0xdc10('0x7')](_0xdc10('0x8'),moment()[_0xdc10('0x7')](_0xdc10('0x9')),_0xae071c[_0xdc10('0xa')][_0xdc10('0xb')](),_0x265ef9,_0xae071c[_0xdc10('0xc')]);}module[_0xdc10('0xd')]=function(_0x514ee2){return new winston[(_0xdc10('0xe'))]({'transports':[new winston['transports'][(_0xdc10('0xf'))]({'name':util['format']('%s-%s',_0x514ee2,_0xdc10('0x10')),'filename':filename(_0x514ee2,_0xdc10('0x10')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5537ae){return formatter(_0x514ee2,_0x5537ae);}}),new winston['transports']['File']({'name':util['format'](_0xdc10('0x11'),_0x514ee2,_0xdc10('0x12')),'filename':filename(_0x514ee2,_0xdc10('0x12')),'level':_0xdc10('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x479452){return formatter(_0x514ee2,_0x479452);}}),new winston[(_0xdc10('0x13'))][(_0xdc10('0x14'))]({'level':process[_0xdc10('0x15')][_0xdc10('0x16')]||debugLevel,'json':![],'formatter':function(_0x4128bd){return formatter(_0x514ee2,_0x4128bd);}})]});};
\ No newline at end of file
index 46143e9..5d0c493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b4=['../../services/express/index.js','ami','../../services/ami/index.js','agi','email','../../services/email/index.js','routing','xdr','../../services/xdr/index.js','exports','path','express','join'];(function(_0x30d54e,_0x26ab4b){var _0x2a3ec8=function(_0x473cd0){while(--_0x473cd0){_0x30d54e['push'](_0x30d54e['shift']());}};_0x2a3ec8(++_0x26ab4b);}(_0x15b4,0x99));var _0x415b=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x15b4[_0x5c2e3e];return _0x53f64a;};'use strict';var path=require(_0x415b('0x0'));var os=require('os');var config={'apps':[{'name':_0x415b('0x1'),'script':path[_0x415b('0x2')](__dirname,_0x415b('0x3'))},{'name':_0x415b('0x4'),'script':path[_0x415b('0x2')](__dirname,_0x415b('0x5'))},{'name':_0x415b('0x6'),'script':path[_0x415b('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0x415b('0x7'),'script':path[_0x415b('0x2')](__dirname,_0x415b('0x8'))},{'name':_0x415b('0x9'),'script':path[_0x415b('0x2')](__dirname,'../../services/routing/index.js')},{'name':_0x415b('0xa'),'script':path[_0x415b('0x2')](__dirname,_0x415b('0xb'))}]};module[_0x415b('0xc')]=config;
\ No newline at end of file
+var _0xeee0=['../../services/ami/index.js','agi','../../services/agi/index.js','../../services/email/index.js','xdr','../../services/xdr/index.js','exports','join','../../services/express/index.js','ami'];(function(_0x4a2532,_0x4161c3){var _0x20c394=function(_0x4376dc){while(--_0x4376dc){_0x4a2532['push'](_0x4a2532['shift']());}};_0x20c394(++_0x4161c3);}(_0xeee0,0x183));var _0x0eee=function(_0xdf3db6,_0x2a1952){_0xdf3db6=_0xdf3db6-0x0;var _0x4b7a65=_0xeee0[_0xdf3db6];return _0x4b7a65;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':'express','script':path[_0x0eee('0x0')](__dirname,_0x0eee('0x1'))},{'name':_0x0eee('0x2'),'script':path[_0x0eee('0x0')](__dirname,_0x0eee('0x3'))},{'name':_0x0eee('0x4'),'script':path[_0x0eee('0x0')](__dirname,_0x0eee('0x5'))},{'name':'email','script':path[_0x0eee('0x0')](__dirname,_0x0eee('0x6'))},{'name':'routing','script':path['join'](__dirname,'../../services/routing/index.js')},{'name':_0x0eee('0x7'),'script':path[_0x0eee('0x0')](__dirname,_0x0eee('0x8'))}]};module[_0x0eee('0x9')]=config;
\ No newline at end of file
index b006c76..d8877e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['start','then','disconnect','stop','restart','list','describe','delete','pm2','bluebird','./config','connected'];(function(_0x130a7d,_0x2f2bf7){var _0x320d25=function(_0x3aa384){while(--_0x3aa384){_0x130a7d['push'](_0x130a7d['shift']());}};_0x320d25(++_0x2f2bf7);}(_0x008c,0x188));var _0xc008=function(_0x1bcb2c,_0xf85d2a){_0x1bcb2c=_0x1bcb2c-0x0;var _0x843eab=_0x008c[_0x1bcb2c];return _0x843eab;};'use strict';var pm2=require(_0xc008('0x0'));var BPromise=require(_0xc008('0x1'));var config=require(_0xc008('0x2'));function connect(){return new BPromise(function(_0xae17af,_0x1d119a){return pm2['connect'](function(_0x3641af){if(_0x3641af){return _0x1d119a(_0x3641af);}return _0xae17af(_0xc008('0x3'));});});};exports[_0xc008('0x4')]=function(_0x163bd9){return connect()[_0xc008('0x5')](function(){return new BPromise(function(_0x1679e0,_0x13aa7){return pm2[_0xc008('0x4')](_0x163bd9,function(_0x9c8cb2,_0x4af530){if(_0x9c8cb2){return _0x13aa7(_0x9c8cb2);}pm2[_0xc008('0x6')]();return _0x1679e0(_0x4af530);});});});};exports['stop']=function(_0x30be38){return connect()['then'](function(){return new BPromise(function(_0x52041f,_0x27830d){return pm2[_0xc008('0x7')](_0x30be38,function(_0x57c46d,_0x51ba7d){if(_0x57c46d){return _0x27830d(_0x57c46d);}pm2['disconnect']();return _0x52041f(_0x51ba7d);});});});};exports[_0xc008('0x8')]=function(_0xc881aa){return connect()['then'](function(){return new BPromise(function(_0xae2dab,_0x332fd4){return pm2[_0xc008('0x8')](_0xc881aa,function(_0x2a5b4e,_0x9ffa93){if(_0x2a5b4e){return _0x332fd4(_0x2a5b4e);}pm2[_0xc008('0x6')]();return _0xae2dab(_0x9ffa93);});});});};exports[_0xc008('0x9')]=function(){return connect()['then'](function(){return new BPromise(function(_0x560e28,_0x33f44c){return pm2['list'](function(_0x25e13f,_0x4584e1){if(_0x25e13f){return _0x33f44c(_0x25e13f);}pm2[_0xc008('0x6')]();return _0x560e28(_0x4584e1);});});});};exports[_0xc008('0xa')]=function(_0x3f0ecf){return connect()['then'](function(){return new BPromise(function(_0x5e894e,_0x4bd0f4){return pm2[_0xc008('0xa')](_0x3f0ecf,function(_0x15a6ad,_0x3cafe3){if(_0x15a6ad){return _0x4bd0f4(_0x15a6ad);}pm2[_0xc008('0x6')]();return _0x5e894e(_0x3cafe3);});});});};exports['delete']=function(_0x53b06e){return connect()['then'](function(){return new BPromise(function(_0x5c2668,_0x46042b){return pm2[_0xc008('0xb')](_0x53b06e,function(_0x501137,_0x813397){if(_0x501137){return _0x46042b(_0x501137);}pm2['disconnect']();return _0x5c2668(_0x813397);});});});};exports['dump']=function(){return connect()['then'](function(){return new BPromise(function(_0x50261c,_0x5754a0){return pm2['dump'](function(_0x5560b1){if(_0x5560b1){return _0x5754a0(_0x5560b1);}return _0x50261c('saved');});});});};
\ No newline at end of file
+var _0x9c44=['describe','delete','dump','saved','./config','connect','connected','then','start','disconnect','restart','list'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0x9c44,0x178));var _0x49c4=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x9c44[_0x550d12];return _0x12103d;};'use strict';var pm2=require('pm2');var BPromise=require('bluebird');var config=require(_0x49c4('0x0'));function connect(){return new BPromise(function(_0x18bf2d,_0x26844b){return pm2[_0x49c4('0x1')](function(_0x455700){if(_0x455700){return _0x26844b(_0x455700);}return _0x18bf2d(_0x49c4('0x2'));});});};exports['start']=function(_0x4941f1){return connect()[_0x49c4('0x3')](function(){return new BPromise(function(_0x57effd,_0xc1278f){return pm2[_0x49c4('0x4')](_0x4941f1,function(_0x69bc41,_0x2c4e2e){if(_0x69bc41){return _0xc1278f(_0x69bc41);}pm2[_0x49c4('0x5')]();return _0x57effd(_0x2c4e2e);});});});};exports['stop']=function(_0x11c586){return connect()[_0x49c4('0x3')](function(){return new BPromise(function(_0x1d13fb,_0x4487ca){return pm2['stop'](_0x11c586,function(_0x5ab4a3,_0x451ea6){if(_0x5ab4a3){return _0x4487ca(_0x5ab4a3);}pm2[_0x49c4('0x5')]();return _0x1d13fb(_0x451ea6);});});});};exports['restart']=function(_0xb611a1){return connect()[_0x49c4('0x3')](function(){return new BPromise(function(_0x4adb3c,_0x536d42){return pm2[_0x49c4('0x6')](_0xb611a1,function(_0x6d1b08,_0x5487cd){if(_0x6d1b08){return _0x536d42(_0x6d1b08);}pm2[_0x49c4('0x5')]();return _0x4adb3c(_0x5487cd);});});});};exports[_0x49c4('0x7')]=function(){return connect()['then'](function(){return new BPromise(function(_0x1909fe,_0x280996){return pm2[_0x49c4('0x7')](function(_0x2decee,_0x12777c){if(_0x2decee){return _0x280996(_0x2decee);}pm2[_0x49c4('0x5')]();return _0x1909fe(_0x12777c);});});});};exports[_0x49c4('0x8')]=function(_0x3de397){return connect()['then'](function(){return new BPromise(function(_0x3acd06,_0x141003){return pm2[_0x49c4('0x8')](_0x3de397,function(_0x81e831,_0x2abc78){if(_0x81e831){return _0x141003(_0x81e831);}pm2['disconnect']();return _0x3acd06(_0x2abc78);});});});};exports[_0x49c4('0x9')]=function(_0x2891f4){return connect()['then'](function(){return new BPromise(function(_0x512650,_0x3c782d){return pm2[_0x49c4('0x9')](_0x2891f4,function(_0x3addb2,_0x59f29b){if(_0x3addb2){return _0x3c782d(_0x3addb2);}pm2[_0x49c4('0x5')]();return _0x512650(_0x59f29b);});});});};exports['dump']=function(){return connect()[_0x49c4('0x3')](function(){return new BPromise(function(_0x1806c2,_0xe31fcc){return pm2[_0x49c4('0xa')](function(_0x382040){if(_0x382040){return _0xe31fcc(_0x382040);}return _0x1806c2(_0x49c4('0xb'));});});});};
\ No newline at end of file
index 886add6..0d6b65e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8d8=['error','start','lodash','moment','ioredis','../../mysqldb','../../config/environment','redis','defaults','localhost','find','then','lastMsgAt','timeout','format','chatInteraction:update','catch'];(function(_0x5f0ecc,_0x51c82e){var _0x5e0cbe=function(_0x8dbc7){while(--_0x8dbc7){_0x5f0ecc['push'](_0x5f0ecc['shift']());}};_0x5e0cbe(++_0x51c82e);}(_0xa8d8,0x79));var _0x8a8d=function(_0x22381f,_0x2b4039){_0x22381f=_0x22381f-0x0;var _0x20fcf7=_0xa8d8[_0x22381f];return _0x20fcf7;};'use strict';var _=require(_0x8a8d('0x0'));var moment=require(_0x8a8d('0x1'));var Redis=require(_0x8a8d('0x2'));var db=require(_0x8a8d('0x3'))['db'];var config=require(_0x8a8d('0x4'));config[_0x8a8d('0x5')]=_[_0x8a8d('0x6')](config['redis'],{'host':_0x8a8d('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8a8d('0x5')]));function closeInteractions(){var _0x2f4133=0x0;var _0x2fa3a2=[];return db['Setting'][_0x8a8d('0x8')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0x8a8d('0x9')](function(_0x1772d8){_0x2f4133=_0x1772d8['chatTimeout'];if(_0x2f4133){return db['ChatInteraction']['findAll']({'raw':!![],'attributes':['id',_0x8a8d('0xa')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x1772d8['chatTimeout'],'minutes')}}});}else{return[];}})[_0x8a8d('0x9')](function(_0x51f9db){_0x2fa3a2=_0x51f9db;if(_0x2f4133){return db['ChatInteraction']['update']({'closeReason':'system','disposition':_0x8a8d('0xb'),'closed':!![],'closedAt':moment()[_0x8a8d('0xc')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_['map'](_0x2fa3a2||[],'id')}});}})['then'](function(_0x22774e){for(var _0x2b03d3=0x0;_0x2b03d3<_0x2fa3a2['length'];_0x2b03d3++){io['emit'](_0x8a8d('0xd'),{'id':_0x2fa3a2[_0x2b03d3]['id'],'closed':!![]});}})[_0x8a8d('0xe')](function(_0x5ec00f){console[_0x8a8d('0xf')](_0x5ec00f);});}exports[_0x8a8d('0x10')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x188e=['lastMsgAt','subtract','minutes','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','map','length','chatInteraction:update','catch','error','start','moment','ioredis','../../config/environment','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then','findAll'];(function(_0x194d38,_0x3838eb){var _0x58b14f=function(_0x441b26){while(--_0x441b26){_0x194d38['push'](_0x194d38['shift']());}};_0x58b14f(++_0x3838eb);}(_0x188e,0x1cf));var _0xe188=function(_0x4c556c,_0x2c701f){_0x4c556c=_0x4c556c-0x0;var _0x53869b=_0x188e[_0x4c556c];return _0x53869b;};'use strict';var _=require('lodash');var moment=require(_0xe188('0x0'));var Redis=require(_0xe188('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xe188('0x2'));config[_0xe188('0x3')]=_[_0xe188('0x4')](config[_0xe188('0x3')],{'host':_0xe188('0x5'),'port':0x18eb});var io=require(_0xe188('0x6'))(new Redis(config[_0xe188('0x3')]));function closeInteractions(){var _0x4cdf2f=0x0;var _0xe15d9c=[];return db[_0xe188('0x7')][_0xe188('0x8')]({'raw':!![],'attributes':['id',_0xe188('0x9')],'where':{'id':0x1}})[_0xe188('0xa')](function(_0x3080f0){_0x4cdf2f=_0x3080f0[_0xe188('0x9')];if(_0x4cdf2f){return db['ChatInteraction'][_0xe188('0xb')]({'raw':!![],'attributes':['id',_0xe188('0xc')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xe188('0xd')](_0x3080f0[_0xe188('0x9')],_0xe188('0xe'))}}});}else{return[];}})[_0xe188('0xa')](function(_0x38fdf1){_0xe15d9c=_0x38fdf1;if(_0x4cdf2f){return db['ChatInteraction'][_0xe188('0xf')]({'closeReason':_0xe188('0x10'),'disposition':_0xe188('0x11'),'closed':!![],'closedAt':moment()['format'](_0xe188('0x12'))},{'where':{'id':_[_0xe188('0x13')](_0xe15d9c||[],'id')}});}})[_0xe188('0xa')](function(_0x231bd5){for(var _0x300739=0x0;_0x300739<_0xe15d9c[_0xe188('0x14')];_0x300739++){io['emit'](_0xe188('0x15'),{'id':_0xe15d9c[_0x300739]['id'],'closed':!![]});}})[_0xe188('0x16')](function(_0x2c190a){console[_0xe188('0x17')](_0x2c190a);});}exports[_0xe188('0x18')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index c64a55e..b74eaa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f30=['existsSync','status','message','attachments','stringify','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','keys','jobs','map','toString','intersection','difference','length','exists','deleteJob','delete\x20cron','toRun','index','cron','active','isBetween','endAt','add','add\x20cron','stop','stop\x20cron','startAt','update','run','util','path','lodash','cron-job-manager','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','format','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','join','../../files/reports','savename','%s.%s','basename','zip'];(function(_0x3d16ad,_0x36675c){var _0x5ebf92=function(_0x1c0860){while(--_0x1c0860){_0x3d16ad['push'](_0x3d16ad['shift']());}};_0x5ebf92(++_0x36675c);}(_0x0f30,0xe8));var _0x00f3=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0x0f30[_0x3b5250];return _0xc844a1;};'use strict';var fs=require('fs');var util=require(_0x00f3('0x0'));var path=require(_0x00f3('0x1'));var _=require(_0x00f3('0x2'));var moment=require('moment');var CronJobManager=require(_0x00f3('0x3'));var jayson=require(_0x00f3('0x4'));var BPromise=require(_0x00f3('0x5'));var logger=require(_0x00f3('0x6'))('schedule');var db=require(_0x00f3('0x7'))['db'];var analyticCustomReportController=require(_0x00f3('0x8'));var analyticDefaultReportController=require(_0x00f3('0x9'));var client=jayson[_0x00f3('0xa')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3f1096,_0x321ffa){return function(){logger[_0x00f3('0xb')](_0x00f3('0xc'),_0x3f1096[_0x00f3('0xd')]);var _0x2546e6=!![];var _0x1a7d54={'tls':{'rejectUnauthorized':![]}};if(_0x3f1096[_0x00f3('0xe')][_0x00f3('0xf')][_0x00f3('0x10')]){_0x1a7d54[_0x00f3('0x10')]=_0x3f1096['MailAccount']['Smtp']['service'];}else{_0x1a7d54['host']=_0x3f1096['MailAccount'][_0x00f3('0xf')][_0x00f3('0x11')];_0x1a7d54[_0x00f3('0x12')]=_0x3f1096[_0x00f3('0xe')]['Smtp'][_0x00f3('0x12')];_0x1a7d54[_0x00f3('0x13')]=_0x3f1096[_0x00f3('0xe')][_0x00f3('0xf')][_0x00f3('0x13')];}if(_0x3f1096[_0x00f3('0xe')][_0x00f3('0xf')][_0x00f3('0x14')]){_0x1a7d54[_0x00f3('0x15')]={'user':_0x3f1096[_0x00f3('0xe')]['Smtp'][_0x00f3('0x16')],'pass':_0x3f1096[_0x00f3('0xe')]['Smtp'][_0x00f3('0x17')]};}var _0x4cd1f8={'account':_0x1a7d54,'message':{'from':util[_0x00f3('0x18')]('\x22%s\x22\x20<%s>',_0x3f1096['MailAccount'][_0x00f3('0x19')],_0x3f1096[_0x00f3('0xe')][_0x00f3('0xd')]||_0x3f1096[_0x00f3('0xe')][_0x00f3('0xf')][_0x00f3('0x16')]),'to':_0x3f1096[_0x00f3('0xd')],'cc':_0x3f1096['cc'],'bcc':_0x3f1096[_0x00f3('0x1a')],'subject':util[_0x00f3('0x18')](_0x00f3('0x1b'),_0x321ffa[_0x00f3('0x19')],_0x3f1096[_0x00f3('0x1c')],_0x3f1096['subtractUnit'])}};var _0xf2fbfe=path[_0x00f3('0x1d')](__dirname,_0x00f3('0x1e'));var _0x557247=_0x321ffa[_0x00f3('0x1f')];var _0x8c63a8=util[_0x00f3('0x18')](_0x00f3('0x20'),path[_0x00f3('0x21')](_0x321ffa[_0x00f3('0x1f')],path['extname'](_0x321ffa['savename'])),_0x00f3('0x22'));var _0x5752a5=path[_0x00f3('0x1d')](_0xf2fbfe,_0x557247);var _0x20cfbc=path[_0x00f3('0x1d')](_0xf2fbfe,_0x8c63a8);if(fs[_0x00f3('0x23')](_0x5752a5)){_0x321ffa[_0x00f3('0x24')]='Sent';_0x4cd1f8[_0x00f3('0x25')][_0x00f3('0x26')]=[{'filename':_0x557247,'path':_0x5752a5}];_0x4cd1f8[_0x00f3('0x25')]['text']=util[_0x00f3('0x18')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x00f3('0x27')](_0x321ffa,null,0x2));}else if(fs[_0x00f3('0x23')](_0x20cfbc)){_0x321ffa[_0x00f3('0x24')]='Sent';_0x4cd1f8[_0x00f3('0x25')][_0x00f3('0x26')]=[{'filename':_0x8c63a8,'path':_0x20cfbc}];}else{_0x4cd1f8['message'][_0x00f3('0x28')]=_0x00f3('0x29');if(!_0x3f1096[_0x00f3('0x2a')]){_0x2546e6=![];logger[_0x00f3('0xb')](_0x00f3('0x2b'));}}if(_0x2546e6){return client[_0x00f3('0x2c')](_0x00f3('0x2d'),_0x4cd1f8)[_0x00f3('0x2e')](function(_0x10eb82){if(_0x10eb82[_0x00f3('0x2f')]){return logger[_0x00f3('0x2f')](_0x00f3('0x30'),JSON['stringify'](_0x10eb82));}return logger[_0x00f3('0xb')](_0x00f3('0x31'));})[_0x00f3('0x32')](function(_0x2c1890){return logger[_0x00f3('0x2f')](_0x00f3('0x30'),JSON[_0x00f3('0x27')](_0x2c1890));});}};}function handleError(){return function(_0x23a0d8){return logger[_0x00f3('0x2f')](JSON[_0x00f3('0x27')](_0x23a0d8));};}function handleResult(_0x994fc1){return function(_0x21b0da){logger['info'](_0x00f3('0x33'),JSON[_0x00f3('0x27')](_0x21b0da));if(_0x994fc1[_0x00f3('0xe')]&&_0x994fc1[_0x00f3('0xe')][_0x00f3('0xf')]&&!_['isNil'](_0x994fc1['email'])){setTimeout(handleSendEmail(_0x994fc1,_0x21b0da),0x3c*0x3e8);}};}function handleJob(_0x22edf8){return function(){try{if(_[_0x00f3('0x34')](_0x22edf8[_0x00f3('0x1c')])){return logger[_0x00f3('0xb')](_0x00f3('0x35'));}if(_[_0x00f3('0x34')](_0x22edf8[_0x00f3('0x36')])){return logger[_0x00f3('0xb')](_0x00f3('0x37'));}var _0x1ae08a={'startDate':moment()[_0x00f3('0x38')](_0x22edf8[_0x00f3('0x1c')],_0x22edf8[_0x00f3('0x36')])['format'](_0x00f3('0x39')),'endDate':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x00f3('0x3a'),'output':_0x22edf8[_0x00f3('0x3b')],'name':_0x22edf8[_0x00f3('0x19')]};if(!_[_0x00f3('0x34')](_0x22edf8[_0x00f3('0x3c')])){logger[_0x00f3('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x22edf8[_0x00f3('0x3c')]);return analyticDefaultReportController[_0x00f3('0x3d')]({'id':_0x22edf8['DefaultReportId']},_0x1ae08a)[_0x00f3('0x2e')](handleResult(_0x22edf8))[_0x00f3('0x32')](handleError());}if(!_[_0x00f3('0x34')](_0x22edf8['CustomReportId'])){logger[_0x00f3('0xb')](_0x00f3('0x3e'),_0x22edf8[_0x00f3('0x3f')]);return analyticCustomReportController[_0x00f3('0x3d')]({'id':_0x22edf8['CustomReportId']},_0x1ae08a)[_0x00f3('0x2e')](handleResult(_0x22edf8))['catch'](handleError());}}catch(_0x21db32){logger[_0x00f3('0x2f')](JSON[_0x00f3('0x27')](_0x21db32));}return logger[_0x00f3('0xb')](_0x00f3('0x40'));};}function getJobs(_0xc9353c){var _0x100de7={};if(_0xc9353c){_0x100de7['id']=_0xc9353c;}return db[_0x00f3('0x41')]['findAll']({'where':_0x100de7,'include':[{'model':db[_0x00f3('0xe')],'attributes':['id',_0x00f3('0x19'),_0x00f3('0xd')],'include':[{'model':db['MailServerOut'],'as':_0x00f3('0xf')}]}]})[_0x00f3('0x2e')](function(_0x12d7e0){var _0xc24f70=_[_0x00f3('0x42')](manager[_0x00f3('0x43')]);var _0x11c552=_[_0x00f3('0x44')](_0x12d7e0,function(_0x122d72){return _0x122d72['id']['toString']();});var _0x2becdc=_['keyBy'](_0x12d7e0,function(_0x1d33a9){return _0x1d33a9['id'][_0x00f3('0x45')]();});var _0x20b0dd=_0xc9353c?_0x11c552:_['difference'](_0x11c552,_0xc24f70);var _0x2840f1=_[_0x00f3('0x46')](_0x11c552,_0xc24f70);var _0x13c70f=_[_0x00f3('0x47')](_0xc24f70,_0x11c552);var _0x2be1b7;var _0x4aa4c8;for(_0x2be1b7=0x0;_0x2be1b7<_0x13c70f[_0x00f3('0x48')]&&!_0xc9353c;_0x2be1b7+=0x1){_0x4aa4c8=_0x13c70f[_0x2be1b7]['toString']();if(manager[_0x00f3('0x49')](_0x4aa4c8)){manager['stop'](_0x4aa4c8);manager[_0x00f3('0x4a')](_0x4aa4c8);logger[_0x00f3('0xb')](_0x00f3('0x4b'),_0x4aa4c8);}}logger['info'](_0x00f3('0x4c'),JSON[_0x00f3('0x27')](_0x20b0dd));for(_0x2be1b7=0x0;_0x2be1b7<_0x20b0dd[_0x00f3('0x48')];_0x2be1b7+=0x1){_0x4aa4c8=_0x20b0dd[_0x2be1b7][_0x00f3('0x45')]();logger[_0x00f3('0xb')](_0x00f3('0x4d'),_0x4aa4c8);if(_0xc9353c){logger[_0x00f3('0xb')]('my\x20id',_0xc9353c);logger[_0x00f3('0xb')](JSON[_0x00f3('0x27')](_0x2becdc[_0x4aa4c8]));BPromise['resolve']()[_0x00f3('0x2e')](handleJob(_0x2becdc[_0x4aa4c8]));logger[_0x00f3('0xb')]('run\x20job',_0x2becdc[_0x4aa4c8][_0x00f3('0x19')],_0x2becdc[_0x4aa4c8]['cron']);}else if(_0x2becdc[_0x4aa4c8][_0x00f3('0x4e')]&&_0x2becdc[_0x4aa4c8][_0x00f3('0x4f')]&&moment()[_0x00f3('0x50')](_0x2becdc[_0x4aa4c8]['startAt'],_0x2becdc[_0x4aa4c8][_0x00f3('0x51')])){manager[_0x00f3('0x52')](_0x4aa4c8,_0x2becdc[_0x4aa4c8]['cron'],handleJob(_0x2becdc[_0x4aa4c8]));manager['start'](_0x4aa4c8);logger[_0x00f3('0xb')](_0x00f3('0x53'),_0x2becdc[_0x4aa4c8]['name'],_0x2becdc[_0x4aa4c8][_0x00f3('0x4e')]);}else if(manager[_0x00f3('0x49')](_0x4aa4c8)){manager[_0x00f3('0x54')](_0x4aa4c8);manager[_0x00f3('0x4a')](_0x4aa4c8);logger[_0x00f3('0xb')](_0x00f3('0x55'),_0x2becdc[_0x4aa4c8]['name'],_0x2becdc[_0x4aa4c8][_0x00f3('0x4e')]);}}for(_0x2be1b7=0x0,_0x4aa4c8;_0x2be1b7<_0x2840f1[_0x00f3('0x48')]&&!_0xc9353c;_0x2be1b7+=0x1){_0x4aa4c8=_0x2840f1[_0x2be1b7]['toString']();if(manager[_0x00f3('0x49')](_0x4aa4c8)){if(_0x2becdc[_0x4aa4c8][_0x00f3('0x4e')]&&_0x2becdc[_0x4aa4c8][_0x00f3('0x4f')]&&moment()[_0x00f3('0x50')](_0x2becdc[_0x4aa4c8][_0x00f3('0x56')],_0x2becdc[_0x4aa4c8][_0x00f3('0x51')])){manager[_0x00f3('0x57')](_0x4aa4c8,_0x2becdc[_0x4aa4c8][_0x00f3('0x4e')],handleJob(_0x2becdc[_0x4aa4c8]));logger[_0x00f3('0xb')]('update\x20cron',_0x2becdc[_0x4aa4c8]['name'],_0x2becdc[_0x4aa4c8]['cron']);}else{manager[_0x00f3('0x54')](_0x4aa4c8);manager['deleteJob'](_0x4aa4c8);logger[_0x00f3('0xb')]('stop\x20cron',_0x2becdc[_0x4aa4c8][_0x00f3('0x19')],_0x2becdc[_0x4aa4c8][_0x00f3('0x4e')]);}}}})[_0x00f3('0x32')](function(_0x5c6940){logger[_0x00f3('0x2f')](JSON[_0x00f3('0x27')](_0x5c6940));});}exports[_0x00f3('0x58')]=function(_0x34340f){return getJobs(_0x34340f);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xa849=['update','update\x20cron','start','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','join','savename','%s.%s','extname','zip','existsSync','status','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','stringify','email\x20sent','catch','error\x20mail','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','keyBy','difference','intersection','length','exists','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','endAt','add','add\x20cron','stop','deleteJob','stop\x20cron','isBetween','startAt'];(function(_0x518e12,_0x3491ad){var _0x1da7ff=function(_0x528771){while(--_0x528771){_0x518e12['push'](_0x518e12['shift']());}};_0x1da7ff(++_0x3491ad);}(_0xa849,0x64));var _0x9a84=function(_0x3354d5,_0x203e02){_0x3354d5=_0x3354d5-0x0;var _0x35b6ae=_0xa849[_0x3354d5];return _0x35b6ae;};'use strict';var fs=require('fs');var util=require(_0x9a84('0x0'));var path=require(_0x9a84('0x1'));var _=require(_0x9a84('0x2'));var moment=require(_0x9a84('0x3'));var CronJobManager=require(_0x9a84('0x4'));var jayson=require(_0x9a84('0x5'));var BPromise=require(_0x9a84('0x6'));var logger=require(_0x9a84('0x7'))(_0x9a84('0x8'));var db=require(_0x9a84('0x9'))['db'];var analyticCustomReportController=require(_0x9a84('0xa'));var analyticDefaultReportController=require(_0x9a84('0xb'));var client=jayson[_0x9a84('0xc')][_0x9a84('0xd')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x433b56,_0x866976){return function(){logger[_0x9a84('0xe')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x433b56[_0x9a84('0xf')]);var _0x472d1c=!![];var _0xd06235={'tls':{'rejectUnauthorized':![]}};if(_0x433b56[_0x9a84('0x10')][_0x9a84('0x11')][_0x9a84('0x12')]){_0xd06235[_0x9a84('0x12')]=_0x433b56['MailAccount'][_0x9a84('0x11')][_0x9a84('0x12')];}else{_0xd06235['host']=_0x433b56['MailAccount']['Smtp'][_0x9a84('0x13')];_0xd06235[_0x9a84('0x14')]=_0x433b56[_0x9a84('0x10')][_0x9a84('0x11')]['port'];_0xd06235['secure']=_0x433b56[_0x9a84('0x10')][_0x9a84('0x11')][_0x9a84('0x15')];}if(_0x433b56[_0x9a84('0x10')]['Smtp'][_0x9a84('0x16')]){_0xd06235[_0x9a84('0x17')]={'user':_0x433b56['MailAccount']['Smtp'][_0x9a84('0x18')],'pass':_0x433b56[_0x9a84('0x10')][_0x9a84('0x11')][_0x9a84('0x19')]};}var _0xcbeb73={'account':_0xd06235,'message':{'from':util[_0x9a84('0x1a')](_0x9a84('0x1b'),_0x433b56['MailAccount']['name'],_0x433b56['MailAccount']['email']||_0x433b56[_0x9a84('0x10')][_0x9a84('0x11')]['user']),'to':_0x433b56[_0x9a84('0xf')],'cc':_0x433b56['cc'],'bcc':_0x433b56[_0x9a84('0x1c')],'subject':util['format'](_0x9a84('0x1d'),_0x866976[_0x9a84('0x1e')],_0x433b56[_0x9a84('0x1f')],_0x433b56['subtractUnit'])}};var _0x4c43b9=path[_0x9a84('0x20')](__dirname,'../../files/reports');var _0x12103a=_0x866976[_0x9a84('0x21')];var _0x288445=util['format'](_0x9a84('0x22'),path['basename'](_0x866976[_0x9a84('0x21')],path[_0x9a84('0x23')](_0x866976[_0x9a84('0x21')])),_0x9a84('0x24'));var _0x47e44b=path['join'](_0x4c43b9,_0x12103a);var _0xc9e710=path[_0x9a84('0x20')](_0x4c43b9,_0x288445);if(fs[_0x9a84('0x25')](_0x47e44b)){_0x866976[_0x9a84('0x26')]=_0x9a84('0x27');_0xcbeb73[_0x9a84('0x28')][_0x9a84('0x29')]=[{'filename':_0x12103a,'path':_0x47e44b}];_0xcbeb73[_0x9a84('0x28')][_0x9a84('0x2a')]=util['format'](_0x9a84('0x2b'),JSON['stringify'](_0x866976,null,0x2));}else if(fs['existsSync'](_0xc9e710)){_0x866976[_0x9a84('0x26')]=_0x9a84('0x27');_0xcbeb73[_0x9a84('0x28')][_0x9a84('0x29')]=[{'filename':_0x288445,'path':_0xc9e710}];}else{_0xcbeb73[_0x9a84('0x28')]['text']=_0x9a84('0x2c');if(!_0x433b56[_0x9a84('0x2d')]){_0x472d1c=![];logger['info'](_0x9a84('0x2e'));}}if(_0x472d1c){return client[_0x9a84('0x2f')](_0x9a84('0x30'),_0xcbeb73)[_0x9a84('0x31')](function(_0x575461){if(_0x575461[_0x9a84('0x32')]){return logger[_0x9a84('0x32')]('error\x20mail',JSON[_0x9a84('0x33')](_0x575461));}return logger[_0x9a84('0xe')](_0x9a84('0x34'));})[_0x9a84('0x35')](function(_0x109b84){return logger['error'](_0x9a84('0x36'),JSON[_0x9a84('0x33')](_0x109b84));});}};}function handleError(){return function(_0x90e08c){return logger[_0x9a84('0x32')](JSON['stringify'](_0x90e08c));};}function handleResult(_0x583032){return function(_0x1a1532){logger[_0x9a84('0xe')]('data',JSON['stringify'](_0x1a1532));if(_0x583032[_0x9a84('0x10')]&&_0x583032[_0x9a84('0x10')][_0x9a84('0x11')]&&!_[_0x9a84('0x37')](_0x583032['email'])){setTimeout(handleSendEmail(_0x583032,_0x1a1532),0x3c*0x3e8);}};}function handleJob(_0x2a0117){return function(){try{if(_[_0x9a84('0x37')](_0x2a0117['subtractNumber'])){return logger[_0x9a84('0xe')](_0x9a84('0x38'));}if(_[_0x9a84('0x37')](_0x2a0117[_0x9a84('0x39')])){return logger[_0x9a84('0xe')](_0x9a84('0x3a'));}var _0x18d262={'startDate':moment()['subtract'](_0x2a0117[_0x9a84('0x1f')],_0x2a0117[_0x9a84('0x39')])[_0x9a84('0x1a')](_0x9a84('0x3b')),'endDate':moment()[_0x9a84('0x1a')](_0x9a84('0x3b')),'type':_0x9a84('0x3c'),'output':_0x2a0117[_0x9a84('0x3d')],'name':_0x2a0117['name']};if(!_[_0x9a84('0x37')](_0x2a0117['DefaultReportId'])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0x2a0117[_0x9a84('0x3e')]);return analyticDefaultReportController['runReport']({'id':_0x2a0117[_0x9a84('0x3e')]},_0x18d262)[_0x9a84('0x31')](handleResult(_0x2a0117))[_0x9a84('0x35')](handleError());}if(!_[_0x9a84('0x37')](_0x2a0117[_0x9a84('0x3f')])){logger['info'](_0x9a84('0x40'),_0x2a0117[_0x9a84('0x3f')]);return analyticCustomReportController[_0x9a84('0x41')]({'id':_0x2a0117[_0x9a84('0x3f')]},_0x18d262)[_0x9a84('0x31')](handleResult(_0x2a0117))[_0x9a84('0x35')](handleError());}}catch(_0x417586){logger[_0x9a84('0x32')](JSON[_0x9a84('0x33')](_0x417586));}return logger[_0x9a84('0xe')](_0x9a84('0x42'));};}function getJobs(_0x11e77a){var _0x18a5e1={};if(_0x11e77a){_0x18a5e1['id']=_0x11e77a;}return db[_0x9a84('0x43')][_0x9a84('0x44')]({'where':_0x18a5e1,'include':[{'model':db[_0x9a84('0x10')],'attributes':['id',_0x9a84('0x1e'),_0x9a84('0xf')],'include':[{'model':db[_0x9a84('0x45')],'as':_0x9a84('0x11')}]}]})[_0x9a84('0x31')](function(_0x3fce37){var _0x5c32d2=_[_0x9a84('0x46')](manager[_0x9a84('0x47')]);var _0x2fde53=_['map'](_0x3fce37,function(_0x4b12f2){return _0x4b12f2['id'][_0x9a84('0x48')]();});var _0x2c5946=_[_0x9a84('0x49')](_0x3fce37,function(_0x126c88){return _0x126c88['id'][_0x9a84('0x48')]();});var _0x4fbb1e=_0x11e77a?_0x2fde53:_[_0x9a84('0x4a')](_0x2fde53,_0x5c32d2);var _0x3ed204=_[_0x9a84('0x4b')](_0x2fde53,_0x5c32d2);var _0x509776=_['difference'](_0x5c32d2,_0x2fde53);var _0x3ed7c5;var _0x21fa4a;for(_0x3ed7c5=0x0;_0x3ed7c5<_0x509776[_0x9a84('0x4c')]&&!_0x11e77a;_0x3ed7c5+=0x1){_0x21fa4a=_0x509776[_0x3ed7c5][_0x9a84('0x48')]();if(manager[_0x9a84('0x4d')](_0x21fa4a)){manager['stop'](_0x21fa4a);manager['deleteJob'](_0x21fa4a);logger[_0x9a84('0xe')](_0x9a84('0x4e'),_0x21fa4a);}}logger[_0x9a84('0xe')](_0x9a84('0x4f'),JSON['stringify'](_0x4fbb1e));for(_0x3ed7c5=0x0;_0x3ed7c5<_0x4fbb1e['length'];_0x3ed7c5+=0x1){_0x21fa4a=_0x4fbb1e[_0x3ed7c5][_0x9a84('0x48')]();logger[_0x9a84('0xe')](_0x9a84('0x50'),_0x21fa4a);if(_0x11e77a){logger[_0x9a84('0xe')](_0x9a84('0x51'),_0x11e77a);logger[_0x9a84('0xe')](JSON[_0x9a84('0x33')](_0x2c5946[_0x21fa4a]));BPromise[_0x9a84('0x52')]()[_0x9a84('0x31')](handleJob(_0x2c5946[_0x21fa4a]));logger[_0x9a84('0xe')](_0x9a84('0x53'),_0x2c5946[_0x21fa4a][_0x9a84('0x1e')],_0x2c5946[_0x21fa4a][_0x9a84('0x54')]);}else if(_0x2c5946[_0x21fa4a]['cron']&&_0x2c5946[_0x21fa4a][_0x9a84('0x55')]&&moment()['isBetween'](_0x2c5946[_0x21fa4a]['startAt'],_0x2c5946[_0x21fa4a][_0x9a84('0x56')])){manager[_0x9a84('0x57')](_0x21fa4a,_0x2c5946[_0x21fa4a]['cron'],handleJob(_0x2c5946[_0x21fa4a]));manager['start'](_0x21fa4a);logger[_0x9a84('0xe')](_0x9a84('0x58'),_0x2c5946[_0x21fa4a]['name'],_0x2c5946[_0x21fa4a][_0x9a84('0x54')]);}else if(manager['exists'](_0x21fa4a)){manager[_0x9a84('0x59')](_0x21fa4a);manager[_0x9a84('0x5a')](_0x21fa4a);logger[_0x9a84('0xe')](_0x9a84('0x5b'),_0x2c5946[_0x21fa4a][_0x9a84('0x1e')],_0x2c5946[_0x21fa4a][_0x9a84('0x54')]);}}for(_0x3ed7c5=0x0,_0x21fa4a;_0x3ed7c5<_0x3ed204[_0x9a84('0x4c')]&&!_0x11e77a;_0x3ed7c5+=0x1){_0x21fa4a=_0x3ed204[_0x3ed7c5]['toString']();if(manager[_0x9a84('0x4d')](_0x21fa4a)){if(_0x2c5946[_0x21fa4a]['cron']&&_0x2c5946[_0x21fa4a][_0x9a84('0x55')]&&moment()[_0x9a84('0x5c')](_0x2c5946[_0x21fa4a][_0x9a84('0x5d')],_0x2c5946[_0x21fa4a][_0x9a84('0x56')])){manager[_0x9a84('0x5e')](_0x21fa4a,_0x2c5946[_0x21fa4a][_0x9a84('0x54')],handleJob(_0x2c5946[_0x21fa4a]));logger[_0x9a84('0xe')](_0x9a84('0x5f'),_0x2c5946[_0x21fa4a][_0x9a84('0x1e')],_0x2c5946[_0x21fa4a]['cron']);}else{manager[_0x9a84('0x59')](_0x21fa4a);manager[_0x9a84('0x5a')](_0x21fa4a);logger[_0x9a84('0xe')](_0x9a84('0x5b'),_0x2c5946[_0x21fa4a][_0x9a84('0x1e')],_0x2c5946[_0x21fa4a][_0x9a84('0x54')]);}}}})[_0x9a84('0x35')](function(_0x138dd6){logger[_0x9a84('0x32')](JSON[_0x9a84('0x33')](_0x138dd6));});}exports['run']=function(_0xf56dca){return getJobs(_0xf56dca);};exports[_0x9a84('0x60')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 350cc2e..9deebd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bc4=['bulkCreate','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','util','push','Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','destroy','then','CmContact'];(function(_0x8c9fed,_0x59ae19){var _0x8803a0=function(_0x35dc2b){while(--_0x35dc2b){_0x8c9fed['push'](_0x8c9fed['shift']());}};_0x8803a0(++_0x59ae19);}(_0x1bc4,0xd3));var _0x41bc=function(_0xaed0d3,_0x2fa035){_0xaed0d3=_0xaed0d3-0x0;var _0x25c1b7=_0x1bc4[_0xaed0d3];return _0x25c1b7;};'use strict';var util=require(_0x41bc('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x41bc('0x1')]({'id':i,'firstName':_0x41bc('0x2')+i,'lastName':_0x41bc('0x3')+i,'phone':0xf879fb460+i,'email':_0x41bc('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x41bc('0x5')](),'updatedAt':Date[_0x41bc('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x41bc('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x41bc('0x4')+i+_0x41bc('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x41bc('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x41bc('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x41bc('0x5')](),'updatedAt':Date['now']()});}db['CmContact'][_0x41bc('0x7')]({'where':{}})[_0x41bc('0x8')](function(){return db[_0x41bc('0x9')][_0x41bc('0xa')](contacts);})[_0x41bc('0x8')](function(){console[_0x41bc('0xb')](_0x41bc('0xc'),_0x41bc('0xd'));return db[_0x41bc('0xe')][_0x41bc('0x7')]({'where':{}});})[_0x41bc('0x8')](function(){return db[_0x41bc('0xe')][_0x41bc('0xa')](hopper);})['then'](function(){console[_0x41bc('0xb')](_0x41bc('0xc'),_0x41bc('0xf'));return db[_0x41bc('0x9')][_0x41bc('0xa')](contacts2);})[_0x41bc('0x8')](function(){console[_0x41bc('0xb')](_0x41bc('0xc'),_0x41bc('0x10'));return db[_0x41bc('0xe')][_0x41bc('0xa')](hopper2);})[_0x41bc('0x8')](function(){console['log']('finished\x20populating','hopper2');})['catch'](function(_0x29275e){console[_0x41bc('0xb')](_0x29275e);});
\ No newline at end of file
+var _0xf4e6=['then','bulkCreate','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','hopper2','catch','../mysqldb','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','push','now','CmContact','destroy'];(function(_0x5288b6,_0x429b55){var _0x233c12=function(_0x500328){while(--_0x500328){_0x5288b6['push'](_0x5288b6['shift']());}};_0x233c12(++_0x429b55);}(_0xf4e6,0x160));var _0x6f4e=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xf4e6[_0x5f1391];return _0x50ebe3;};'use strict';var util=require('util');var db=require(_0x6f4e('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0x6f4e('0x1')+i,'lastName':_0x6f4e('0x2')+i,'phone':0xf879fb460+i,'email':_0x6f4e('0x3')+i+_0x6f4e('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x6f4e('0x5')]({'id':i,'active':![],'scheduledat':Date[_0x6f4e('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x6f4e('0x6')](),'updatedAt':Date[_0x6f4e('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x6f4e('0x5')]({'id':i,'firstName':_0x6f4e('0x1')+i,'lastName':_0x6f4e('0x2')+i,'phone':0xf879fb460+i,'email':_0x6f4e('0x3')+i+_0x6f4e('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date[_0x6f4e('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x6f4e('0x6')](),'updatedAt':Date['now']()});}db[_0x6f4e('0x7')][_0x6f4e('0x8')]({'where':{}})[_0x6f4e('0x9')](function(){return db[_0x6f4e('0x7')][_0x6f4e('0xa')](contacts);})[_0x6f4e('0x9')](function(){console[_0x6f4e('0xb')](_0x6f4e('0xc'),_0x6f4e('0xd'));return db[_0x6f4e('0xe')][_0x6f4e('0x8')]({'where':{}});})[_0x6f4e('0x9')](function(){return db[_0x6f4e('0xe')][_0x6f4e('0xa')](hopper);})[_0x6f4e('0x9')](function(){console[_0x6f4e('0xb')](_0x6f4e('0xc'),_0x6f4e('0xf'));return db['CmContact'][_0x6f4e('0xa')](contacts2);})[_0x6f4e('0x9')](function(){console['log']('finished\x20populating',_0x6f4e('0x10'));return db[_0x6f4e('0xe')][_0x6f4e('0xa')](hopper2);})[_0x6f4e('0x9')](function(){console[_0x6f4e('0xb')](_0x6f4e('0xc'),_0x6f4e('0x11'));})[_0x6f4e('0x12')](function(_0x43e813){console['log'](_0x43e813);});
\ No newline at end of file
index 699af85..1206e6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa659=['then','add\x20user','catch','log','util','../mysqldb','%s%s','agent','format','%s%s@xcally.com','password','friend','udp','all','ulaw','yes','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate'];(function(_0x40f7e3,_0x5d2c41){var _0x146e15=function(_0x3ef90e){while(--_0x3ef90e){_0x40f7e3['push'](_0x40f7e3['shift']());}};_0x146e15(++_0x5d2c41);}(_0xa659,0xf4));var _0x9a65=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa659[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x9a65('0x0'));var db=require(_0x9a65('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util['format'](_0x9a65('0x2'),_0x9a65('0x3'),i),'fullname':util[_0x9a65('0x4')]('%s%s',_0x9a65('0x3'),i),'email':util[_0x9a65('0x4')](_0x9a65('0x5'),_0x9a65('0x3'),i),'role':_0x9a65('0x3'),'password':_0x9a65('0x6'),'internal':0xfa0+i,'type':_0x9a65('0x7'),'transport':[_0x9a65('0x8'),'ws','wss'],'disallow':[_0x9a65('0x9')],'allow':[_0x9a65('0xa')],'defaultuser':util[_0x9a65('0x4')]('%s%s',_0x9a65('0x3'),i),'encryption':_0x9a65('0xb'),'avpf':_0x9a65('0xb'),'force_avp':_0x9a65('0xb'),'icesupport':_0x9a65('0xb'),'dtlsenable':_0x9a65('0xb'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0x9a65('0xc'),'dtlssetup':_0x9a65('0xd'),'callerid':util['format']('\x22%s\x22\x20<%s>',util['format'](_0x9a65('0x2'),_0x9a65('0x3'),i),0xfa0+i)});}db[_0x9a65('0xe')][_0x9a65('0xf')](users)[_0x9a65('0x10')](function(){console['log'](_0x9a65('0x11'));})[_0x9a65('0x12')](function(_0x4fd051){console[_0x9a65('0x13')](_0x4fd051);});
\ No newline at end of file
+var _0xa723=['../mysqldb','push','format','%s%s','agent','password','friend','udp','wss','ulaw','yes','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','bulkCreate','then','log','add\x20user','catch','util'];(function(_0x1af47f,_0x578c68){var _0x8ef25f=function(_0x47f50d){while(--_0x47f50d){_0x1af47f['push'](_0x1af47f['shift']());}};_0x8ef25f(++_0x578c68);}(_0xa723,0x1a3));var _0x3a72=function(_0x45b1ba,_0x5a6a21){_0x45b1ba=_0x45b1ba-0x0;var _0x145ddb=_0xa723[_0x45b1ba];return _0x145ddb;};'use strict';var util=require(_0x3a72('0x0'));var db=require(_0x3a72('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x3a72('0x2')]({'name':util['format']('%s%s','agent',i),'fullname':util[_0x3a72('0x3')](_0x3a72('0x4'),_0x3a72('0x5'),i),'email':util[_0x3a72('0x3')]('%s%s@xcally.com',_0x3a72('0x5'),i),'role':_0x3a72('0x5'),'password':_0x3a72('0x6'),'internal':0xfa0+i,'type':_0x3a72('0x7'),'transport':[_0x3a72('0x8'),'ws',_0x3a72('0x9')],'disallow':['all'],'allow':[_0x3a72('0xa')],'defaultuser':util[_0x3a72('0x3')](_0x3a72('0x4'),_0x3a72('0x5'),i),'encryption':'yes','avpf':_0x3a72('0xb'),'force_avp':_0x3a72('0xb'),'icesupport':_0x3a72('0xb'),'dtlsenable':_0x3a72('0xb'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0x3a72('0xc'),'dtlssetup':_0x3a72('0xd'),'callerid':util['format'](_0x3a72('0xe'),util[_0x3a72('0x3')](_0x3a72('0x4'),_0x3a72('0x5'),i),0xfa0+i)});}db['User'][_0x3a72('0xf')](users)[_0x3a72('0x10')](function(){console[_0x3a72('0x11')](_0x3a72('0x12'));})[_0x3a72('0x13')](function(_0x2b82a2){console['log'](_0x2b82a2);});
\ No newline at end of file
index 9929773..fc31490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70c9=['../mysqldb','./environment','name','Agents','User','role','agent','type','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','where','Campaign','%s:queue:%s','length','format','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','user','MailQueues','OpenchannelQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','sms','mail','openchannel','telephone:%s','trunk:%s','leave','removeChatInteractions','emit','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','removeOpenchannelInteractions','catch','log','join','default','connection','setMaxListeners','address','request','remoteAddress','connectedAt','SocketIO\x20','nsp','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird'];(function(_0x5ef7b8,_0x15cc07){var _0x2c7148=function(_0x398519){while(--_0x398519){_0x5ef7b8['push'](_0x5ef7b8['shift']());}};_0x2c7148(++_0x15cc07);}(_0x70c9,0x123));var _0x970c=function(_0x3d4bf4,_0x1e691c){_0x3d4bf4=_0x3d4bf4-0x0;var _0x1df6a0=_0x70c9[_0x3d4bf4];return _0x1df6a0;};'use strict';var _=require(_0x970c('0x0'));var util=require(_0x970c('0x1'));var BPromise=require(_0x970c('0x2'));var db=require(_0x970c('0x3'))['db'];var config=require(_0x970c('0x4'));var queryQueues={'attributes':['id',_0x970c('0x5')],'include':[{'as':_0x970c('0x6'),'model':db[_0x970c('0x7')],'attributes':['id','name',_0x970c('0x8')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x970c('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x970c('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x970c('0x5')],'where':{'role':_0x970c('0x9')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x970c('0x5'),_0x970c('0xa')],'where':{'type':_0x970c('0xb')}};function getAssociatedResources(_0x345442,_0x5c2370,_0x3ed838){return db[_0x970c('0xc')][_0x970c('0xd')]({'where':{'name':_0x345442,'userProfileId':_0x5c2370},'raw':!![]})[_0x970c('0xe')](function(_0x2364a8){if(_0x2364a8){if(_0x2364a8['autoAssociation']){switch(_0x345442){case _0x970c('0xf'):case _0x970c('0x10'):case _0x970c('0x11'):case _0x970c('0x12'):case'MailQueues':case'OpenchannelQueues':return db[_0x3ed838][_0x970c('0x13')](queryQueues);case _0x970c('0x14'):return db[_0x3ed838]['findAll'](queryTelephones);case _0x970c('0x15'):return db[_0x3ed838][_0x970c('0x13')](queryTrunks);case _0x970c('0x16'):return db[_0x3ed838]['findAll'](queryCampaigns);}}else{return db[_0x970c('0x17')]['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x2364a8['id']},'raw':!![]})[_0x970c('0xe')](function(_0x34636f){if(_0x34636f){var _0x31b72d={'where':{'id':_[_0x970c('0x18')](_0x34636f,_0x970c('0x19'))},'raw':!![]};switch(_0x3ed838){case _0x970c('0x7'):_0x31b72d[_0x970c('0x1a')][_0x970c('0x8')]='telephone';break;case _0x970c('0x1b'):_0x31b72d['where'][_0x970c('0xa')]=_0x970c('0xb');break;}return db[_0x3ed838][_0x970c('0x13')](_0x31b72d);}else{return[];}});}}else{return[];}})['then'](function(_0x2c6189){return _0x2c6189;});}function joinOrLeaveQueues(_0x4f61ff,_0x5648f4,_0x28ff92,_0x2f7cd8){_0x4f61ff[_0x5648f4](util['format'](_0x970c('0x1c'),_0x28ff92,_0x2f7cd8[_0x970c('0x5')]));if(_0x2f7cd8['Agents']){for(var _0x2ba044=0x0;_0x2ba044<_0x2f7cd8[_0x970c('0x6')][_0x970c('0x1d')];_0x2ba044+=0x1){_0x4f61ff[_0x5648f4](util[_0x970c('0x1e')]('user:%s',_0x2f7cd8['Agents'][_0x2ba044][_0x970c('0x5')]));}}}function joinOrLeave(_0x3ffda7,_0x4b20fe,_0x3f8d5a){var _0x307b0c;if(_0x3ffda7[_0x970c('0x1f')][_0x970c('0x20')]['id']){db[_0x970c('0x7')][_0x970c('0x21')]({'attributes':['id',_0x970c('0x5'),_0x970c('0x8'),_0x970c('0x22')],'where':{'id':_0x3ffda7['handshake'][_0x970c('0x20')]['id']},'include':[{'model':db[_0x970c('0x23')],'as':_0x970c('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x970c('0x25')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x970c('0x26')],'as':_0x970c('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x970c('0x28')],'as':_0x970c('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x970c('0x2a')],'as':_0x970c('0x2b'),'attributes':['id'],'raw':!![]}]})[_0x970c('0xe')](function(_0x3237d1){if(_0x3237d1){_0x307b0c=_0x3237d1;_0x3ffda7[_0x4b20fe](util[_0x970c('0x1e')](_0x970c('0x2c'),_0x3237d1[_0x970c('0x5')]));var _0x1edd2f=[];switch(_0x3237d1[_0x970c('0x8')]){case _0x970c('0x2d'):_0x3ffda7[_0x4b20fe](_0x970c('0x2e'));_0x3ffda7[_0x4b20fe](_0x970c('0x2f'));if(queryQueues[_0x970c('0x30')](_0x970c('0x31'))){delete queryQueues[_0x970c('0x31')];}_0x1edd2f['push'](db[_0x970c('0x32')][_0x970c('0x13')](queryQueues));_0x1edd2f[_0x970c('0x33')](db[_0x970c('0x34')][_0x970c('0x13')](queryQueues));_0x1edd2f[_0x970c('0x33')](db[_0x970c('0x35')][_0x970c('0x13')](queryQueues));_0x1edd2f[_0x970c('0x33')](db[_0x970c('0x36')][_0x970c('0x13')](queryQueues));_0x1edd2f[_0x970c('0x33')](db[_0x970c('0x37')][_0x970c('0x13')](queryQueues));_0x1edd2f[_0x970c('0x33')](db[_0x970c('0x38')][_0x970c('0x13')](queryQueues));_0x1edd2f[_0x970c('0x33')](db['User']['findAll'](queryTelephones));_0x1edd2f[_0x970c('0x33')](db[_0x970c('0x39')][_0x970c('0x13')](queryTrunks));_0x1edd2f['push'](db[_0x970c('0x1b')][_0x970c('0x13')](queryCampaigns));_0x1edd2f[_0x970c('0x33')](db[_0x970c('0x7')]['findAll'](queryAgents));break;case _0x970c('0x3a'):_0x3ffda7[_0x4b20fe](_0x970c('0x2e'));_0x3ffda7[_0x4b20fe](_0x970c('0x2f'));_0x1edd2f['push'](getAssociatedResources(_0x970c('0xf'),_0x3237d1[_0x970c('0x22')],_0x970c('0x32')));_0x1edd2f[_0x970c('0x33')](getAssociatedResources(_0x970c('0x10'),_0x3237d1[_0x970c('0x22')],_0x970c('0x34')));_0x1edd2f[_0x970c('0x33')](getAssociatedResources(_0x970c('0x11'),_0x3237d1['userProfileId'],_0x970c('0x35')));_0x1edd2f[_0x970c('0x33')](getAssociatedResources(_0x970c('0x12'),_0x3237d1[_0x970c('0x22')],_0x970c('0x36')));_0x1edd2f[_0x970c('0x33')](getAssociatedResources(_0x970c('0x3b'),_0x3237d1['userProfileId'],_0x970c('0x37')));_0x1edd2f['push'](getAssociatedResources(_0x970c('0x3c'),_0x3237d1[_0x970c('0x22')],_0x970c('0x38')));_0x1edd2f[_0x970c('0x33')](getAssociatedResources(_0x970c('0x14'),_0x3237d1['userProfileId'],'User'));_0x1edd2f[_0x970c('0x33')](getAssociatedResources(_0x970c('0x15'),_0x3237d1[_0x970c('0x22')],'Trunk'));_0x1edd2f['push'](getAssociatedResources(_0x970c('0x16'),_0x3237d1[_0x970c('0x22')],_0x970c('0x1b')));_0x1edd2f[_0x970c('0x33')](db[_0x970c('0x7')][_0x970c('0x13')](queryAgents));break;case _0x970c('0x9'):_0x3ffda7[_0x4b20fe](_0x970c('0x2e'));_0x3ffda7[_0x4b20fe](_0x970c('0x2f'));_0x1edd2f[_0x970c('0x33')](_0x3237d1['getVoiceQueues']({'attributes':['id',_0x970c('0x5')]}));_0x1edd2f[_0x970c('0x33')](_0x3237d1[_0x970c('0x3d')]({'attributes':['id',_0x970c('0x5')]}));_0x1edd2f[_0x970c('0x33')](_0x3237d1[_0x970c('0x3e')]({'attributes':['id',_0x970c('0x5')]}));_0x1edd2f[_0x970c('0x33')](_0x3237d1['getSmsQueues']({'attributes':['id',_0x970c('0x5')]}));_0x1edd2f[_0x970c('0x33')](_0x3237d1[_0x970c('0x3f')]({'attributes':['id',_0x970c('0x5')]}));_0x1edd2f['push'](_0x3237d1[_0x970c('0x40')]({'attributes':['id',_0x970c('0x5')]}));break;}return BPromise[_0x970c('0x41')](_0x1edd2f);}})[_0x970c('0xe')](function(_0x165b32){if(_0x165b32&&_0x165b32['length']){for(var _0x5ee3ad=0x0;_0x5ee3ad<_0x165b32[_0x970c('0x1d')];_0x5ee3ad+=0x1){for(var _0x3ca037=0x0;_0x3ca037<_0x165b32[_0x5ee3ad][_0x970c('0x1d')];_0x3ca037+=0x1){switch(_0x5ee3ad){case 0x0:joinOrLeaveQueues(_0x3ffda7,_0x4b20fe,_0x970c('0x42'),_0x165b32[_0x5ee3ad][_0x3ca037]);break;case 0x1:joinOrLeaveQueues(_0x3ffda7,_0x4b20fe,_0x970c('0x43'),_0x165b32[_0x5ee3ad][_0x3ca037]);break;case 0x2:joinOrLeaveQueues(_0x3ffda7,_0x4b20fe,'fax',_0x165b32[_0x5ee3ad][_0x3ca037]);break;case 0x3:joinOrLeaveQueues(_0x3ffda7,_0x4b20fe,_0x970c('0x44'),_0x165b32[_0x5ee3ad][_0x3ca037]);break;case 0x4:joinOrLeaveQueues(_0x3ffda7,_0x4b20fe,_0x970c('0x45'),_0x165b32[_0x5ee3ad][_0x3ca037]);break;case 0x5:joinOrLeaveQueues(_0x3ffda7,_0x4b20fe,_0x970c('0x46'),_0x165b32[_0x5ee3ad][_0x3ca037]);break;case 0x6:_0x3ffda7[_0x4b20fe](util[_0x970c('0x1e')](_0x970c('0x47'),_0x165b32[_0x5ee3ad][_0x3ca037][_0x970c('0x5')]));break;case 0x7:_0x3ffda7[_0x4b20fe](util[_0x970c('0x1e')](_0x970c('0x48'),_0x165b32[_0x5ee3ad][_0x3ca037][_0x970c('0x5')]));break;case 0x8:_0x3ffda7[_0x4b20fe](util[_0x970c('0x1e')]('campaign:%s:%s',_0x165b32[_0x5ee3ad][_0x3ca037][_0x970c('0xa')],_0x165b32[_0x5ee3ad][_0x3ca037]['name']));break;case 0x9:_0x3ffda7[_0x4b20fe](util[_0x970c('0x1e')](_0x970c('0x2c'),_0x165b32[_0x5ee3ad][_0x3ca037][_0x970c('0x5')]));break;}}}}})[_0x970c('0xe')](function(){if(_0x4b20fe===_0x970c('0x49')){var _0x282d19=_['map'](_0x307b0c[_0x970c('0x24')],'id');return _0x307b0c[_0x970c('0x4a')](_0x282d19)[_0x970c('0xe')](function(){for(var _0x114d32=0x0;_0x114d32<_0x282d19[_0x970c('0x1d')];_0x114d32+=0x1){_0x3f8d5a[_0x970c('0x4b')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x282d19[_0x114d32]),'UserId':Number(_0x307b0c['id'])});}});}})['then'](function(){if(_0x4b20fe==='leave'){var _0x3a5f1e=_[_0x970c('0x18')](_0x307b0c[_0x970c('0x4c')],'id');return _0x307b0c[_0x970c('0x4d')](_0x3a5f1e)['then'](function(){for(var _0x2807f5=0x0;_0x2807f5<_0x3a5f1e[_0x970c('0x1d')];_0x2807f5+=0x1){_0x3f8d5a[_0x970c('0x4b')](_0x970c('0x4e'),{'MailInteractionId':Number(_0x3a5f1e[_0x2807f5]),'UserId':Number(_0x307b0c['id'])});}});}})[_0x970c('0xe')](function(){if(_0x4b20fe==='leave'){var _0x490d46=_['map'](_0x307b0c[_0x970c('0x27')],'id');return _0x307b0c[_0x970c('0x4f')](_0x490d46)['then'](function(){for(var _0x44e6ee=0x0;_0x44e6ee<_0x490d46[_0x970c('0x1d')];_0x44e6ee+=0x1){_0x3f8d5a['emit'](_0x970c('0x50'),{'FaxInteractionId':Number(_0x490d46[_0x44e6ee]),'UserId':Number(_0x307b0c['id'])});}});}})[_0x970c('0xe')](function(){if(_0x4b20fe===_0x970c('0x49')){var _0x3c7a09=_[_0x970c('0x18')](_0x307b0c[_0x970c('0x29')],'id');return _0x307b0c[_0x970c('0x51')](_0x3c7a09)[_0x970c('0xe')](function(){for(var _0x297d21=0x0;_0x297d21<_0x3c7a09[_0x970c('0x1d')];_0x297d21+=0x1){_0x3f8d5a[_0x970c('0x4b')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x3c7a09[_0x297d21]),'UserId':Number(_0x307b0c['id'])});}});}})[_0x970c('0xe')](function(){if(_0x4b20fe===_0x970c('0x49')){var _0x106c96=_[_0x970c('0x18')](_0x307b0c['OpenchannelInteractions'],'id');return _0x307b0c[_0x970c('0x52')](_0x106c96)[_0x970c('0xe')](function(){for(var _0x27bc89=0x0;_0x27bc89<_0x106c96[_0x970c('0x1d')];_0x27bc89+=0x1){_0x3f8d5a['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x106c96[_0x27bc89]),'UserId':Number(_0x307b0c['id'])});}});}})[_0x970c('0x53')](function(_0x1f00a5){_0x3ffda7[_0x970c('0x54')](_0x1f00a5);});}}function onDisconnect(_0x1a35a7,_0x1ea71f){joinOrLeave(_0x1a35a7,'leave',_0x1ea71f);}function onConnect(_0x37c4bf){joinOrLeave(_0x37c4bf,_0x970c('0x55'));}exports[_0x970c('0x56')]=function(_0x2b3c1d){_0x2b3c1d['on'](_0x970c('0x57'),function(_0x5027cc){_0x5027cc[_0x970c('0x58')](0x0);_0x5027cc[_0x970c('0x59')]=_0x5027cc[_0x970c('0x5a')][_0x970c('0x57')][_0x970c('0x5b')]+':'+_0x5027cc[_0x970c('0x5a')][_0x970c('0x57')]['remotePort'];_0x5027cc[_0x970c('0x5c')]=new Date();_0x5027cc[_0x970c('0x54')]=function(_0x307784){console['log'](_0x970c('0x5d')+_0x5027cc[_0x970c('0x5e')][_0x970c('0x5')]+'['+_0x5027cc[_0x970c('0x59')]+']',_0x307784);};_0x5027cc['on'](_0x970c('0x5f'),function(){onDisconnect(_0x5027cc,_0x2b3c1d);_0x5027cc[_0x970c('0x54')](_0x970c('0x60'));});onConnect(_0x5027cc);_0x5027cc[_0x970c('0x54')](_0x970c('0x61'));});};
\ No newline at end of file
+var _0x12ea=['disconnect','DISCONNECTED','CONNECTED','util','bluebird','../mysqldb','name','agent','type','ivr','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','findAll','Trunks','resourceId','where','role','telephone','Campaign','format','Agents','length','user:%s','query','User','find','handshake','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','admin','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','Trunk','user','userProfileId','SmsQueues','SmsQueue','OpenchannelQueues','Telephones','IvrCampaigns','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','all','voice','chat','fax','mail','openchannel','trunk:%s','campaign:%s:%s','leave','map','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','catch','log','join','connection','address','request','remotePort','connectedAt','SocketIO\x20','nsp'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x12ea,0x120));var _0xa12e=function(_0x441d15,_0xdb2d50){_0x441d15=_0x441d15-0x0;var _0x363a8d=_0x12ea[_0x441d15];return _0x363a8d;};'use strict';var _=require('lodash');var util=require(_0xa12e('0x0'));var BPromise=require(_0xa12e('0x1'));var db=require(_0xa12e('0x2'))['db'];var config=require('./environment');var queryQueues={'attributes':['id',_0xa12e('0x3')],'include':[{'as':'Agents','model':db['User'],'attributes':['id',_0xa12e('0x3'),'role'],'raw':!![],'where':{'role':_0xa12e('0x4')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xa12e('0x3')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xa12e('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0xa12e('0x3')],'where':{'role':_0xa12e('0x4')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xa12e('0x3'),_0xa12e('0x5')],'where':{'type':_0xa12e('0x6')}};function getAssociatedResources(_0x3ccd46,_0x5008c7,_0xcf4163){return db['UserProfileSection'][_0xa12e('0x7')]({'where':{'name':_0x3ccd46,'userProfileId':_0x5008c7},'raw':!![]})[_0xa12e('0x8')](function(_0x3d473f){if(_0x3d473f){if(_0x3d473f[_0xa12e('0x9')]){switch(_0x3ccd46){case _0xa12e('0xa'):case _0xa12e('0xb'):case _0xa12e('0xc'):case'SmsQueues':case _0xa12e('0xd'):case'OpenchannelQueues':return db[_0xcf4163][_0xa12e('0xe')](queryQueues);case'Telephones':return db[_0xcf4163][_0xa12e('0xe')](queryTelephones);case _0xa12e('0xf'):return db[_0xcf4163][_0xa12e('0xe')](queryTrunks);case'IvrCampaigns':return db[_0xcf4163]['findAll'](queryCampaigns);}}else{return db['UserProfileResource'][_0xa12e('0xe')]({'attributes':['resourceId'],'where':{'sectionId':_0x3d473f['id']},'raw':!![]})[_0xa12e('0x8')](function(_0x2c825e){if(_0x2c825e){var _0xc6ebda={'where':{'id':_['map'](_0x2c825e,_0xa12e('0x10'))},'raw':!![]};switch(_0xcf4163){case'User':_0xc6ebda[_0xa12e('0x11')][_0xa12e('0x12')]=_0xa12e('0x13');break;case _0xa12e('0x14'):_0xc6ebda[_0xa12e('0x11')][_0xa12e('0x5')]='ivr';break;}return db[_0xcf4163][_0xa12e('0xe')](_0xc6ebda);}else{return[];}});}}else{return[];}})['then'](function(_0x4b3b54){return _0x4b3b54;});}function joinOrLeaveQueues(_0x3bf385,_0x134a47,_0x567452,_0x3d0e6a){_0x3bf385[_0x134a47](util[_0xa12e('0x15')]('%s:queue:%s',_0x567452,_0x3d0e6a[_0xa12e('0x3')]));if(_0x3d0e6a['Agents']){for(var _0x4efcc0=0x0;_0x4efcc0<_0x3d0e6a[_0xa12e('0x16')][_0xa12e('0x17')];_0x4efcc0+=0x1){_0x3bf385[_0x134a47](util[_0xa12e('0x15')](_0xa12e('0x18'),_0x3d0e6a[_0xa12e('0x16')][_0x4efcc0][_0xa12e('0x3')]));}}}function joinOrLeave(_0x5b810c,_0x75e187,_0x43c5f4){var _0x526d94;if(_0x5b810c['handshake'][_0xa12e('0x19')]['id']){db[_0xa12e('0x1a')][_0xa12e('0x1b')]({'attributes':['id',_0xa12e('0x3'),_0xa12e('0x12'),'userProfileId'],'where':{'id':_0x5b810c[_0xa12e('0x1c')]['query']['id']},'include':[{'model':db[_0xa12e('0x1d')],'as':_0xa12e('0x1e'),'attributes':['id'],'raw':!![]},{'model':db[_0xa12e('0x1f')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xa12e('0x20')],'as':_0xa12e('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0xa12e('0x22')],'as':_0xa12e('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xa12e('0x24')],'as':_0xa12e('0x25'),'attributes':['id'],'raw':!![]}]})[_0xa12e('0x8')](function(_0x721c21){if(_0x721c21){_0x526d94=_0x721c21;_0x5b810c[_0x75e187](util['format'](_0xa12e('0x18'),_0x721c21[_0xa12e('0x3')]));var _0x1061d2=[];switch(_0x721c21['role']){case _0xa12e('0x26'):_0x5b810c[_0x75e187](_0xa12e('0x27'));_0x5b810c[_0x75e187](_0xa12e('0x28'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0xa12e('0x29')];}_0x1061d2[_0xa12e('0x2a')](db[_0xa12e('0x2b')][_0xa12e('0xe')](queryQueues));_0x1061d2['push'](db[_0xa12e('0x2c')][_0xa12e('0xe')](queryQueues));_0x1061d2[_0xa12e('0x2a')](db[_0xa12e('0x2d')][_0xa12e('0xe')](queryQueues));_0x1061d2['push'](db['SmsQueue'][_0xa12e('0xe')](queryQueues));_0x1061d2[_0xa12e('0x2a')](db[_0xa12e('0x2e')]['findAll'](queryQueues));_0x1061d2[_0xa12e('0x2a')](db[_0xa12e('0x2f')][_0xa12e('0xe')](queryQueues));_0x1061d2['push'](db[_0xa12e('0x1a')][_0xa12e('0xe')](queryTelephones));_0x1061d2[_0xa12e('0x2a')](db[_0xa12e('0x30')][_0xa12e('0xe')](queryTrunks));_0x1061d2['push'](db['Campaign']['findAll'](queryCampaigns));_0x1061d2[_0xa12e('0x2a')](db[_0xa12e('0x1a')][_0xa12e('0xe')](queryAgents));break;case _0xa12e('0x31'):_0x5b810c[_0x75e187](_0xa12e('0x27'));_0x5b810c[_0x75e187]('voice:outbound');_0x1061d2['push'](getAssociatedResources('VoiceQueues',_0x721c21[_0xa12e('0x32')],_0xa12e('0x2b')));_0x1061d2[_0xa12e('0x2a')](getAssociatedResources(_0xa12e('0xb'),_0x721c21[_0xa12e('0x32')],_0xa12e('0x2c')));_0x1061d2[_0xa12e('0x2a')](getAssociatedResources(_0xa12e('0xc'),_0x721c21[_0xa12e('0x32')],_0xa12e('0x2d')));_0x1061d2['push'](getAssociatedResources(_0xa12e('0x33'),_0x721c21[_0xa12e('0x32')],_0xa12e('0x34')));_0x1061d2[_0xa12e('0x2a')](getAssociatedResources(_0xa12e('0xd'),_0x721c21[_0xa12e('0x32')],_0xa12e('0x2e')));_0x1061d2['push'](getAssociatedResources(_0xa12e('0x35'),_0x721c21[_0xa12e('0x32')],_0xa12e('0x2f')));_0x1061d2[_0xa12e('0x2a')](getAssociatedResources(_0xa12e('0x36'),_0x721c21[_0xa12e('0x32')],'User'));_0x1061d2[_0xa12e('0x2a')](getAssociatedResources(_0xa12e('0xf'),_0x721c21[_0xa12e('0x32')],_0xa12e('0x30')));_0x1061d2['push'](getAssociatedResources(_0xa12e('0x37'),_0x721c21[_0xa12e('0x32')],_0xa12e('0x14')));_0x1061d2[_0xa12e('0x2a')](db[_0xa12e('0x1a')][_0xa12e('0xe')](queryAgents));break;case'agent':_0x5b810c[_0x75e187]('voice:inbound');_0x5b810c[_0x75e187](_0xa12e('0x28'));_0x1061d2[_0xa12e('0x2a')](_0x721c21[_0xa12e('0x38')]({'attributes':['id',_0xa12e('0x3')]}));_0x1061d2['push'](_0x721c21[_0xa12e('0x39')]({'attributes':['id',_0xa12e('0x3')]}));_0x1061d2[_0xa12e('0x2a')](_0x721c21[_0xa12e('0x3a')]({'attributes':['id','name']}));_0x1061d2[_0xa12e('0x2a')](_0x721c21[_0xa12e('0x3b')]({'attributes':['id',_0xa12e('0x3')]}));_0x1061d2[_0xa12e('0x2a')](_0x721c21[_0xa12e('0x3c')]({'attributes':['id',_0xa12e('0x3')]}));_0x1061d2['push'](_0x721c21[_0xa12e('0x3d')]({'attributes':['id',_0xa12e('0x3')]}));break;}return BPromise[_0xa12e('0x3e')](_0x1061d2);}})['then'](function(_0xb8d73c){if(_0xb8d73c&&_0xb8d73c[_0xa12e('0x17')]){for(var _0x2aba5a=0x0;_0x2aba5a<_0xb8d73c[_0xa12e('0x17')];_0x2aba5a+=0x1){for(var _0x25ecab=0x0;_0x25ecab<_0xb8d73c[_0x2aba5a][_0xa12e('0x17')];_0x25ecab+=0x1){switch(_0x2aba5a){case 0x0:joinOrLeaveQueues(_0x5b810c,_0x75e187,_0xa12e('0x3f'),_0xb8d73c[_0x2aba5a][_0x25ecab]);break;case 0x1:joinOrLeaveQueues(_0x5b810c,_0x75e187,_0xa12e('0x40'),_0xb8d73c[_0x2aba5a][_0x25ecab]);break;case 0x2:joinOrLeaveQueues(_0x5b810c,_0x75e187,_0xa12e('0x41'),_0xb8d73c[_0x2aba5a][_0x25ecab]);break;case 0x3:joinOrLeaveQueues(_0x5b810c,_0x75e187,'sms',_0xb8d73c[_0x2aba5a][_0x25ecab]);break;case 0x4:joinOrLeaveQueues(_0x5b810c,_0x75e187,_0xa12e('0x42'),_0xb8d73c[_0x2aba5a][_0x25ecab]);break;case 0x5:joinOrLeaveQueues(_0x5b810c,_0x75e187,_0xa12e('0x43'),_0xb8d73c[_0x2aba5a][_0x25ecab]);break;case 0x6:_0x5b810c[_0x75e187](util[_0xa12e('0x15')]('telephone:%s',_0xb8d73c[_0x2aba5a][_0x25ecab]['name']));break;case 0x7:_0x5b810c[_0x75e187](util[_0xa12e('0x15')](_0xa12e('0x44'),_0xb8d73c[_0x2aba5a][_0x25ecab][_0xa12e('0x3')]));break;case 0x8:_0x5b810c[_0x75e187](util[_0xa12e('0x15')](_0xa12e('0x45'),_0xb8d73c[_0x2aba5a][_0x25ecab][_0xa12e('0x5')],_0xb8d73c[_0x2aba5a][_0x25ecab][_0xa12e('0x3')]));break;case 0x9:_0x5b810c[_0x75e187](util[_0xa12e('0x15')]('user:%s',_0xb8d73c[_0x2aba5a][_0x25ecab][_0xa12e('0x3')]));break;}}}}})[_0xa12e('0x8')](function(){if(_0x75e187===_0xa12e('0x46')){var _0x164b90=_[_0xa12e('0x47')](_0x526d94[_0xa12e('0x1e')],'id');return _0x526d94[_0xa12e('0x48')](_0x164b90)[_0xa12e('0x8')](function(){for(var _0x196184=0x0;_0x196184<_0x164b90[_0xa12e('0x17')];_0x196184+=0x1){_0x43c5f4[_0xa12e('0x49')](_0xa12e('0x4a'),{'ChatInteractionId':Number(_0x164b90[_0x196184]),'UserId':Number(_0x526d94['id'])});}});}})['then'](function(){if(_0x75e187===_0xa12e('0x46')){var _0x5a6a1c=_[_0xa12e('0x47')](_0x526d94['MailInteractions'],'id');return _0x526d94[_0xa12e('0x4b')](_0x5a6a1c)[_0xa12e('0x8')](function(){for(var _0x1b6253=0x0;_0x1b6253<_0x5a6a1c[_0xa12e('0x17')];_0x1b6253+=0x1){_0x43c5f4[_0xa12e('0x49')](_0xa12e('0x4c'),{'MailInteractionId':Number(_0x5a6a1c[_0x1b6253]),'UserId':Number(_0x526d94['id'])});}});}})['then'](function(){if(_0x75e187===_0xa12e('0x46')){var _0x1d75a7=_[_0xa12e('0x47')](_0x526d94[_0xa12e('0x21')],'id');return _0x526d94[_0xa12e('0x4d')](_0x1d75a7)[_0xa12e('0x8')](function(){for(var _0xad1c03=0x0;_0xad1c03<_0x1d75a7[_0xa12e('0x17')];_0xad1c03+=0x1){_0x43c5f4[_0xa12e('0x49')](_0xa12e('0x4e'),{'FaxInteractionId':Number(_0x1d75a7[_0xad1c03]),'UserId':Number(_0x526d94['id'])});}});}})['then'](function(){if(_0x75e187===_0xa12e('0x46')){var _0x36746d=_['map'](_0x526d94[_0xa12e('0x23')],'id');return _0x526d94[_0xa12e('0x4f')](_0x36746d)[_0xa12e('0x8')](function(){for(var _0x48f6bb=0x0;_0x48f6bb<_0x36746d[_0xa12e('0x17')];_0x48f6bb+=0x1){_0x43c5f4[_0xa12e('0x49')](_0xa12e('0x50'),{'SmsInteractionId':Number(_0x36746d[_0x48f6bb]),'UserId':Number(_0x526d94['id'])});}});}})['then'](function(){if(_0x75e187===_0xa12e('0x46')){var _0x5ef8da=_[_0xa12e('0x47')](_0x526d94[_0xa12e('0x25')],'id');return _0x526d94[_0xa12e('0x51')](_0x5ef8da)[_0xa12e('0x8')](function(){for(var _0x431da8=0x0;_0x431da8<_0x5ef8da['length'];_0x431da8+=0x1){_0x43c5f4[_0xa12e('0x49')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x5ef8da[_0x431da8]),'UserId':Number(_0x526d94['id'])});}});}})[_0xa12e('0x52')](function(_0x54c8dc){_0x5b810c[_0xa12e('0x53')](_0x54c8dc);});}}function onDisconnect(_0x1ae4a3,_0x3381bd){joinOrLeave(_0x1ae4a3,_0xa12e('0x46'),_0x3381bd);}function onConnect(_0xad6dbd){joinOrLeave(_0xad6dbd,_0xa12e('0x54'));}exports['default']=function(_0x352208){_0x352208['on'](_0xa12e('0x55'),function(_0x74463f){_0x74463f['setMaxListeners'](0x0);_0x74463f[_0xa12e('0x56')]=_0x74463f[_0xa12e('0x57')][_0xa12e('0x55')]['remoteAddress']+':'+_0x74463f[_0xa12e('0x57')][_0xa12e('0x55')][_0xa12e('0x58')];_0x74463f[_0xa12e('0x59')]=new Date();_0x74463f[_0xa12e('0x53')]=function(_0x14174d){console[_0xa12e('0x53')](_0xa12e('0x5a')+_0x74463f[_0xa12e('0x5b')][_0xa12e('0x3')]+'['+_0x74463f[_0xa12e('0x56')]+']',_0x14174d);};_0x74463f['on'](_0xa12e('0x5c'),function(){onDisconnect(_0x74463f,_0x352208);_0x74463f['log'](_0xa12e('0x5d'));});onConnect(_0x74463f);_0x74463f[_0xa12e('0x53')](_0xa12e('0x5e'));});};
\ No newline at end of file
index b0966e5..533794f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf667=['Fax','FaxInteraction','FaxMessage','MailInteraction','closedinteraction','Mail','MailMessage','Openchannel','request','then','info','EventManager','error','Trigger,\x20%s','get','channel','event','direction','UserId','name','format','SIP/%s','catch','opened','changed','closed','User','find','interface','default','length','hasOwnProperty','model','hook','callback','condition','util','../../mysqldb','jayson/promise','../logger','triggers','client','http','afterCreate','newinteraction','ChatInteraction','afterUpdate','Chat','newmessage','SmsInteraction','Sms'];(function(_0x1e4b79,_0x34d6fa){var _0x207bb2=function(_0x293c9a){while(--_0x293c9a){_0x1e4b79['push'](_0x1e4b79['shift']());}};_0x207bb2(++_0x34d6fa);}(_0xf667,0x123));var _0x7f66=function(_0x5a79e2,_0x319b1a){_0x5a79e2=_0x5a79e2-0x0;var _0x266c45=_0xf667[_0x5a79e2];return _0x266c45;};'use strict';var util=require(_0x7f66('0x0'));var db=require(_0x7f66('0x1'))['db'];var jayson=require(_0x7f66('0x2'));var logger=require(_0x7f66('0x3'))(_0x7f66('0x4'));var client=jayson[_0x7f66('0x5')][_0x7f66('0x6')]({'port':0x232a});var triggers=[{'channel':'Chat','model':'ChatInteraction','event':_0x7f66('0x7'),'condition':_0x7f66('0x8'),'callback':afterCreate},{'channel':'Chat','model':_0x7f66('0x9'),'event':_0x7f66('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x7f66('0xb'),'model':'ChatMessage','event':_0x7f66('0x7'),'condition':_0x7f66('0xc'),'callback':afterCreateMessage},{'channel':'Sms','model':_0x7f66('0xd'),'event':_0x7f66('0x7'),'condition':_0x7f66('0x8'),'callback':afterCreate},{'channel':_0x7f66('0xe'),'model':_0x7f66('0xd'),'event':_0x7f66('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x7f66('0xe'),'model':'SmsMessage','event':_0x7f66('0x7'),'condition':_0x7f66('0xc'),'callback':afterCreateMessage},{'channel':_0x7f66('0xf'),'model':_0x7f66('0x10'),'event':_0x7f66('0x7'),'condition':_0x7f66('0x8'),'callback':afterCreate},{'channel':_0x7f66('0xf'),'model':'FaxInteraction','event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':_0x7f66('0x11'),'event':_0x7f66('0x7'),'condition':_0x7f66('0xc'),'callback':afterCreateMessage},{'channel':'Mail','model':'MailInteraction','event':_0x7f66('0x7'),'condition':_0x7f66('0x8'),'callback':afterCreate},{'channel':'Mail','model':_0x7f66('0x12'),'event':'afterUpdate','condition':_0x7f66('0x13'),'callback':afterUpdate},{'channel':_0x7f66('0x14'),'model':_0x7f66('0x15'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x7f66('0x16'),'model':'OpenchannelInteraction','event':'afterCreate','condition':_0x7f66('0x8'),'callback':afterCreate},{'channel':_0x7f66('0x16'),'model':'OpenchannelInteraction','event':_0x7f66('0xa'),'condition':_0x7f66('0x13'),'callback':afterUpdate},{'channel':'Openchannel','model':'OpenchannelMessage','event':_0x7f66('0x7'),'condition':_0x7f66('0xc'),'callback':afterCreateMessage}];function request(_0x5a6534){return client[_0x7f66('0x17')]('EventManager',_0x5a6534)[_0x7f66('0x18')](function(_0x4606de){logger[_0x7f66('0x19')]('Trigger,\x20%s',_0x7f66('0x1a'),_0x4606de);if(_0x4606de[_0x7f66('0x1b')]){if(_0x4606de['error']['code']===0x1f4){logger[_0x7f66('0x1b')]('Trigger,\x20%s',_0x7f66('0x1a'),_0x4606de['error']);}}})['catch'](function(_0x108183){logger[_0x7f66('0x1b')](_0x7f66('0x1c'),_0x7f66('0x1a'),_0x108183);});}function afterCreateMessage(_0x578798,_0x1ad635){return function(_0x250a65,_0x5111da){_0x250a65=_0x250a65[_0x7f66('0x1d')]({'plain':!![]});_0x250a65[_0x7f66('0x1e')]=_0x578798;_0x250a65[_0x7f66('0x1f')]=_0x250a65[_0x7f66('0x20')];if(_0x250a65[_0x7f66('0x21')]){return db['User']['find']({'where':{'id':_0x250a65[_0x7f66('0x21')]},'attributes':['id',_0x7f66('0x22')],'raw':!![]})[_0x7f66('0x18')](function(_0x1c94ce){_0x250a65['interface']=util[_0x7f66('0x23')](_0x7f66('0x24'),_0x1c94ce[_0x7f66('0x22')]);_0x250a65[_0x7f66('0x1e')]=_0x578798;return request({'event':'incomingmessage','message':_0x250a65});})[_0x7f66('0x25')](function(_0x4f5b10){console[_0x7f66('0x1b')](_0x4f5b10);});}else{return request({'event':'outgoingmessage','message':_0x250a65});}};}function afterCreate(_0x17a9c7,_0x3c84d9){return function(_0xa37abe,_0x24e551){_0xa37abe=_0xa37abe['get']({'plain':!![]});_0xa37abe['channel']=_0x17a9c7;_0xa37abe[_0x7f66('0x1f')]=_0x7f66('0x26');return request({'event':_0x3c84d9,'message':_0xa37abe});};}function afterUpdate(_0x22bd88,_0x481281){return function(_0x330f33,_0x44c811){if(_0x330f33[_0x7f66('0x27')]('closed')&&_0x330f33[_0x7f66('0x28')]){_0x330f33=_0x330f33[_0x7f66('0x1d')]({'plain':!![]});_0x330f33['channel']=_0x22bd88;_0x330f33[_0x7f66('0x1f')]=_0x7f66('0x28');if(_0x330f33['UserId']){return db[_0x7f66('0x29')][_0x7f66('0x2a')]({'where':{'id':_0x330f33[_0x7f66('0x21')]},'attributes':['id','name'],'raw':!![]})['then'](function(_0x5a59f3){_0x330f33[_0x7f66('0x2b')]=util[_0x7f66('0x23')](_0x7f66('0x24'),_0x5a59f3[_0x7f66('0x22')]);return request({'event':_0x481281,'message':_0x330f33});})[_0x7f66('0x25')](function(_0x46446c){console[_0x7f66('0x1b')](_0x46446c);});}else{return request({'event':_0x481281,'message':_0x330f33});}}};}exports[_0x7f66('0x2c')]=function(){for(var _0x53314f=0x0;_0x53314f<triggers[_0x7f66('0x2d')];_0x53314f+=0x1){if(db[_0x7f66('0x2e')](triggers[_0x53314f][_0x7f66('0x2f')])){db[triggers[_0x53314f][_0x7f66('0x2f')]][_0x7f66('0x30')](triggers[_0x53314f]['event'],triggers[_0x53314f][_0x7f66('0x31')](triggers[_0x53314f][_0x7f66('0x1e')]['toLowerCase'](),triggers[_0x53314f][_0x7f66('0x32')]));}}};
\ No newline at end of file
+var _0x63e6=['Chat','afterUpdate','closedinteraction','Sms','SmsInteraction','SmsMessage','newmessage','FaxInteraction','Fax','MailInteraction','Mail','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','then','info','Trigger,\x20%s','error','code','catch','get','channel','event','UserId','User','find','name','format','SIP/%s','incomingmessage','outgoingmessage','opened','changed','closed','interface','default','length','model','hook','callback','toLowerCase','condition','util','../../mysqldb','triggers','client','http','ChatInteraction','afterCreate','newinteraction'];(function(_0xbedd48,_0x33062d){var _0xeff224=function(_0x105155){while(--_0x105155){_0xbedd48['push'](_0xbedd48['shift']());}};_0xeff224(++_0x33062d);}(_0x63e6,0xfc));var _0x663e=function(_0x10595e,_0x9bf938){_0x10595e=_0x10595e-0x0;var _0x55873f=_0x63e6[_0x10595e];return _0x55873f;};'use strict';var util=require(_0x663e('0x0'));var db=require(_0x663e('0x1'))['db'];var jayson=require('jayson/promise');var logger=require('../logger')(_0x663e('0x2'));var client=jayson[_0x663e('0x3')][_0x663e('0x4')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x663e('0x5'),'event':_0x663e('0x6'),'condition':_0x663e('0x7'),'callback':afterCreate},{'channel':_0x663e('0x8'),'model':'ChatInteraction','event':_0x663e('0x9'),'condition':_0x663e('0xa'),'callback':afterUpdate},{'channel':_0x663e('0x8'),'model':'ChatMessage','event':_0x663e('0x6'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x663e('0xb'),'model':_0x663e('0xc'),'event':'afterCreate','condition':_0x663e('0x7'),'callback':afterCreate},{'channel':_0x663e('0xb'),'model':_0x663e('0xc'),'event':_0x663e('0x9'),'condition':_0x663e('0xa'),'callback':afterUpdate},{'channel':'Sms','model':_0x663e('0xd'),'event':_0x663e('0x6'),'condition':_0x663e('0xe'),'callback':afterCreateMessage},{'channel':'Fax','model':_0x663e('0xf'),'event':_0x663e('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x663e('0x10'),'model':'FaxInteraction','event':_0x663e('0x9'),'condition':_0x663e('0xa'),'callback':afterUpdate},{'channel':_0x663e('0x10'),'model':'FaxMessage','event':_0x663e('0x6'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Mail','model':_0x663e('0x11'),'event':_0x663e('0x6'),'condition':_0x663e('0x7'),'callback':afterCreate},{'channel':'Mail','model':_0x663e('0x11'),'event':_0x663e('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x663e('0x12'),'model':_0x663e('0x13'),'event':_0x663e('0x6'),'condition':_0x663e('0xe'),'callback':afterCreateMessage},{'channel':_0x663e('0x14'),'model':'OpenchannelInteraction','event':_0x663e('0x6'),'condition':_0x663e('0x7'),'callback':afterCreate},{'channel':_0x663e('0x14'),'model':_0x663e('0x15'),'event':_0x663e('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x663e('0x14'),'model':'OpenchannelMessage','event':_0x663e('0x6'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x169cf){return client[_0x663e('0x16')](_0x663e('0x17'),_0x169cf)[_0x663e('0x18')](function(_0x4cdada){logger[_0x663e('0x19')](_0x663e('0x1a'),_0x663e('0x17'),_0x4cdada);if(_0x4cdada['error']){if(_0x4cdada[_0x663e('0x1b')][_0x663e('0x1c')]===0x1f4){logger[_0x663e('0x1b')](_0x663e('0x1a'),_0x663e('0x17'),_0x4cdada[_0x663e('0x1b')]);}}})[_0x663e('0x1d')](function(_0x3d39ea){logger['error'](_0x663e('0x1a'),'EventManager',_0x3d39ea);});}function afterCreateMessage(_0x4c2502,_0x426dec){return function(_0x3eba03,_0x557c87){_0x3eba03=_0x3eba03[_0x663e('0x1e')]({'plain':!![]});_0x3eba03[_0x663e('0x1f')]=_0x4c2502;_0x3eba03[_0x663e('0x20')]=_0x3eba03['direction'];if(_0x3eba03[_0x663e('0x21')]){return db[_0x663e('0x22')][_0x663e('0x23')]({'where':{'id':_0x3eba03[_0x663e('0x21')]},'attributes':['id',_0x663e('0x24')],'raw':!![]})['then'](function(_0x4ab95f){_0x3eba03['interface']=util[_0x663e('0x25')](_0x663e('0x26'),_0x4ab95f[_0x663e('0x24')]);_0x3eba03[_0x663e('0x1f')]=_0x4c2502;return request({'event':_0x663e('0x27'),'message':_0x3eba03});})[_0x663e('0x1d')](function(_0x59929a){console['error'](_0x59929a);});}else{return request({'event':_0x663e('0x28'),'message':_0x3eba03});}};}function afterCreate(_0xc51bc5,_0x23559){return function(_0x5adc4c,_0x55a63b){_0x5adc4c=_0x5adc4c[_0x663e('0x1e')]({'plain':!![]});_0x5adc4c[_0x663e('0x1f')]=_0xc51bc5;_0x5adc4c[_0x663e('0x20')]=_0x663e('0x29');return request({'event':_0x23559,'message':_0x5adc4c});};}function afterUpdate(_0x4ca792,_0x2e34c9){return function(_0xeace2d,_0x4dc2c5){if(_0xeace2d[_0x663e('0x2a')]('closed')&&_0xeace2d[_0x663e('0x2b')]){_0xeace2d=_0xeace2d['get']({'plain':!![]});_0xeace2d[_0x663e('0x1f')]=_0x4ca792;_0xeace2d[_0x663e('0x20')]=_0x663e('0x2b');if(_0xeace2d['UserId']){return db[_0x663e('0x22')][_0x663e('0x23')]({'where':{'id':_0xeace2d['UserId']},'attributes':['id',_0x663e('0x24')],'raw':!![]})['then'](function(_0x430a2b){_0xeace2d[_0x663e('0x2c')]=util[_0x663e('0x25')]('SIP/%s',_0x430a2b['name']);return request({'event':_0x2e34c9,'message':_0xeace2d});})[_0x663e('0x1d')](function(_0x1b0175){console['error'](_0x1b0175);});}else{return request({'event':_0x2e34c9,'message':_0xeace2d});}}};}exports[_0x663e('0x2d')]=function(){for(var _0x388433=0x0;_0x388433<triggers[_0x663e('0x2e')];_0x388433+=0x1){if(db['hasOwnProperty'](triggers[_0x388433][_0x663e('0x2f')])){db[triggers[_0x388433]['model']][_0x663e('0x30')](triggers[_0x388433][_0x663e('0x20')],triggers[_0x388433][_0x663e('0x31')](triggers[_0x388433]['channel'][_0x663e('0x32')](),triggers[_0x388433][_0x663e('0x33')]));}}};
\ No newline at end of file
index b3037be..dafd9ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2289=['mail','fax','sms','openchannel','toLowerCase','includes','lodash','voice'];(function(_0x1fbff3,_0x1610da){var _0xcedc3f=function(_0x682cc6){while(--_0x682cc6){_0x1fbff3['push'](_0x1fbff3['shift']());}};_0xcedc3f(++_0x1610da);}(_0x2289,0xc6));var _0x9228=function(_0x560a9e,_0x2f7e67){_0x560a9e=_0x560a9e-0x0;var _0x11d1e4=_0x2289[_0x560a9e];return _0x11d1e4;};'use strict';var _=require(_0x9228('0x0'));var channels=[_0x9228('0x1'),_0x9228('0x2'),'chat',_0x9228('0x3'),_0x9228('0x4'),_0x9228('0x5')];module['exports']={'getChannels':function(){return channels;},'isValidChannel':function(_0x1c5982){_0x1c5982=_0x1c5982[_0x9228('0x6')]();return _[_0x9228('0x7')](channels,_0x1c5982);}};
\ No newline at end of file
+var _0x12ec=['fax','sms','openchannel','toLowerCase','includes','lodash','voice','mail','chat'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x12ec,0x1d9));var _0xc12e=function(_0x2d9c6a,_0x59393d){_0x2d9c6a=_0x2d9c6a-0x0;var _0xf3c918=_0x12ec[_0x2d9c6a];return _0xf3c918;};'use strict';var _=require(_0xc12e('0x0'));var channels=[_0xc12e('0x1'),_0xc12e('0x2'),_0xc12e('0x3'),_0xc12e('0x4'),_0xc12e('0x5'),_0xc12e('0x6')];module['exports']={'getChannels':function(){return channels;},'isValidChannel':function(_0x1f6b7c){_0x1f6b7c=_0x1f6b7c[_0xc12e('0x7')]();return _[_0xc12e('0x8')](channels,_0x1f6b7c);}};
\ No newline at end of file
index 2796e2a..81bb5b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9b4=['send','exports','404','render','status'];(function(_0x2678d6,_0x4e2001){var _0x475503=function(_0x34b23d){while(--_0x34b23d){_0x2678d6['push'](_0x2678d6['shift']());}};_0x475503(++_0x4e2001);}(_0xd9b4,0x8d));var _0x4d9b=function(_0x3a0021,_0x3dfa84){_0x3a0021=_0x3a0021-0x0;var _0x46fa7e=_0xd9b4[_0x3a0021];return _0x46fa7e;};'use strict';module[_0x4d9b('0x0')][0x194]=function pageNotFound(_0x4e6d0f,_0x2d90ae){var _0x5d91f9=_0x4d9b('0x1');var _0x2f8859=0x194;var _0x577ae6={'status':_0x2f8859};_0x2d90ae['status'](_0x577ae6['status']);_0x2d90ae[_0x4d9b('0x2')](_0x5d91f9,{},function(_0x22a897,_0x15123b){if(_0x22a897){return _0x2d90ae[_0x4d9b('0x3')](_0x577ae6[_0x4d9b('0x3')])['json'](_0x577ae6);}_0x2d90ae[_0x4d9b('0x4')](_0x15123b);});};
\ No newline at end of file
+var _0x7515=['status','404'];(function(_0x52b904,_0x20a577){var _0x150f25=function(_0x2071cc){while(--_0x2071cc){_0x52b904['push'](_0x52b904['shift']());}};_0x150f25(++_0x20a577);}(_0x7515,0x151));var _0x5751=function(_0x8fd79f,_0x1fd03a){_0x8fd79f=_0x8fd79f-0x0;var _0x410c0c=_0x7515[_0x8fd79f];return _0x410c0c;};'use strict';module['exports'][0x194]=function pageNotFound(_0x266fba,_0x592649){var _0x567901=_0x5751('0x0');var _0x3d1a8d=0x194;var _0x262dca={'status':_0x3d1a8d};_0x592649['status'](_0x262dca[_0x5751('0x1')]);_0x592649['render'](_0x567901,{},function(_0x9a3b0b,_0x4859fc){if(_0x9a3b0b){return _0x592649[_0x5751('0x1')](_0x262dca[_0x5751('0x1')])['json'](_0x262dca);}_0x592649['send'](_0x4859fc);});};
\ No newline at end of file
diff --git a/server/migrations/2.2.3.js b/server/migrations/2.2.3.js
new file mode 100644 (file)
index 0000000..c32d2ba
--- /dev/null
@@ -0,0 +1,175 @@
+'use strict';
+
+var BPromise = require('bluebird');
+var util = require('util');
+
+var logger = require('../config/logger')('migration');
+
+var Sequence = function() {};
+
+Sequence.prototype.enqueue = function(fn) {
+    this.tail = this.tail ? this.tail.finally(fn) : fn();
+};
+
+var Migration = function(queryInterface) {
+    this.queryInterface = queryInterface;
+    this.sequence = new Sequence();
+};
+
+Migration.prototype.changeColumn = function(table, column, type) {
+    var _this = this;
+    this.sequence.enqueue(function() {
+        return _this.queryInterface
+            .changeColumn(table, column, type)
+            .then(function() {
+                logger.info('Changed column %s in table %s', column, table);
+            })
+            .catch(function(err) {
+                logger.info(JSON.stringify(err));
+            });
+    });
+};
+
+Migration.prototype.addColumn = function(table, column, type) {
+    var _this = this;
+    this.sequence.enqueue(function() {
+        return _this.queryInterface
+            .addColumn(table, column, type)
+            .then(function() {
+                logger.info('Added column %s to %s', column, table);
+            })
+            .catch(function(err) {
+                logger.info(JSON.stringify(err));
+            });
+    });
+};
+
+Migration.prototype.dropTable = function(table) {
+    var _this = this;
+    this.sequence.enqueue(function() {
+        return _this.queryInterface
+            .dropTable(table, {
+                force: true
+            })
+            .then(function() {
+                logger.info('table dropped %s', table);
+            })
+            .catch(function(err) {
+                logger.info(JSON.stringify(err));
+            });
+    });
+};
+
+Migration.prototype.addIndex = function(table, column, indexName) {
+    var _this = this;
+    this.sequence.enqueue(function() {
+        return _this.queryInterface
+            .addIndex(table, column, {
+                indexName: indexName
+            })
+            .then(function() {
+                logger.info('addIndex %s %s %s', table, column.join(','), indexName);
+            })
+            .catch(function(err) {
+                logger.info(JSON.stringify(err));
+            });
+    });
+};
+
+Migration.prototype.removeIndex = function(table, indexName) {
+    var _this = this;
+    this.sequence.enqueue(function() {
+        return _this.queryInterface
+            .removeIndex(table, indexName)
+            .then(function() {
+                logger.info('removeIndex %s %s', table, indexName);
+            })
+            .catch(function(err) {
+                logger.info(JSON.stringify(err));
+            });
+    });
+};
+
+Migration.prototype.query = function(sql) {
+    var _this = this;
+    this.sequence.enqueue(function() {
+        return _this.queryInterface.sequelize
+            .query(sql)
+            .then(function() {
+                logger.info('query %s', sql);
+            })
+            .catch(function(err) {
+                logger.info(JSON.stringify(err));
+            });
+    });
+};
+
+Migration.prototype.removeColumn = function(table, column) {
+    var _this = this;
+    this.sequence.enqueue(function() {
+        return _this.queryInterface
+            .removeColumn(table, column)
+            .then(function() {
+                logger.info('Removed column %s from %s', column, table);
+            })
+            .catch(function(err) {
+                logger.info(
+                    util.inspect(err, {
+                        showHidden: false,
+                        depth: null
+                    })
+                );
+            });
+    });
+};
+
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {
+    var _this = this;
+    this.sequence.enqueue(function() {
+        return _this.queryInterface
+            .renameColumn(table, oldColumn, newColumn)
+            .then(function() {
+                logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);
+            })
+            .catch(function(err) {
+                logger.info(
+                    util.inspect(err, {
+                        showHidden: false,
+                        depth: null
+                    })
+                );
+            });
+    });
+};
+
+Migration.prototype.final = function(resolve) {
+    this.sequence.enqueue(function() {
+        return resolve();
+    });
+};
+
+module.exports = {
+    up: function(queryInterface, Sequelize) {
+        return new BPromise(function(resolve) {
+            var migration = new Migration(queryInterface);
+
+            // START EMAIL
+            migration.changeColumn('mail_interactions', 'inReplyTo', {
+                type: Sequelize.STRING(510)
+            });
+
+            migration.changeColumn('mail_messages', 'messageId', {
+                type: Sequelize.STRING(510)
+            });
+            // END EMAIL
+
+            // START FINAL
+            migration.final(resolve);
+            // END FINAL
+        });
+    },
+
+    down: function(queryInterface, Sequelize) {
+        // var migration = new Migration(queryInterface);
+    }
+};
\ No newline at end of file
index cbb3630..60fc734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','Queues','sectionId','exports','path','sequelize','lodash','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','name','utf8_general_ci','mysql','utf8','database','username','sequelizeHistory','password','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','VoiceQueue','../api/voiceQueue/voiceQueue.model','../api/voiceRecording/voiceRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','MailInteraction','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsApplication/smsApplication.model','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelQueue','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatGroup','CmCompany','CmContact','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','../api/reportAgentPreview/reportAgentPreview.model','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/schedule/schedule.model','Sound','Tag','../api/tag/tag.model','Trigger','../api/trigger/trigger.model','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','Integration','../api/integration/integration.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/migration/migration.model','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','CmList','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','User','hasOne','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','VoiceExtension','Extensions','HopperFinals','HopperHistory','ReportAgentPreview','OpenchannelInteractions','ChatInteractions','SmsInteraction','SmsInteractions','FaxInteractions','MailInteractions','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','VoiceQueues','MailQueues','UserMailQueue','ChatQueue','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','UserOpenchannelQueue','VoicePrefixes','user_has_voice_prefixes','ChatWebsite','ChatWebsites','user_has_chat_websites','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperHistories','HopperBlacks','Trunk','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','voice_queues_has_cm_lists','Agents','Teams','team_has_voice_queues','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','uniqueid','AgentReports','Contact','MailServerIn','MailAccountId','Smtp','Dispositions','Answers','Interactions','List','Template','team_has_mail_queues','MailInteractionId','Account','ContactId','mail_interaction_has_tags','ThroughTags','Users','Attachments','Interaction','restrict','TagId','ListId','Items','FaxAccountId','FaxInteraction','Exntensions','user_has_fax_accounts','FaxInteractionId','Owner','fax_interaction_has_tags','Tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','OpenchannelApplication','openchannel_interaction_has_tags','OpenchannelInteractionId','OpenchannelQueueId','team_has_openchannel_queues','ChatWebsiteId','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatOfflineMessage','team_has_chat_queues','CompanyId','JscriptySessions','cm_contact_has_tags','CampaignId','OwnerId','Condition','AutomationAllId','Any','Actions','Intervals','MailApplications','FaxApplications','SmsApplications','Schedule','AnalyticDefaultReport','DefaultReportId','CustomReportId','Mohs','AllConditions','AllCondition','AnyConditions','AnyCondition','Action','TriggerId','Fields','AnalyticMetric','MetricId','SalesforceConfiguration','Configurations','AccountId','Subjects','DescriptionId','FieldId','Subject','Description','Field','Variable','VariableId','SugarcrmAccount','SubjectId','DeskAccount','Descriptions','ZohoConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','int_freshdesk_configuration_has_tags','int_vtiger_configuration_has_tags','FromId','SessionId','ProjectId','user_has_teams','OpenchannelQueues','SquareProjectId','campaigns_has_cm_blacklists','FromUserId','ToUserId','ToAgent','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','FromAgent','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','FromAccount','ToFaxQueueId','ToFaxAccountId'];(function(_0x12aec1,_0x3911e1){var _0x22c828=function(_0x375fba){while(--_0x375fba){_0x12aec1['push'](_0x12aec1['shift']());}};_0x22c828(++_0x3911e1);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x11e517,_0x2549b1){_0x11e517=_0x11e517-0x0;var _0x37f75b=_0x3eea[_0x11e517];return _0x37f75b;};'use strict';var path=require(_0xa3ee('0x0'));var config=require('../config/environment');var Sequelize=require(_0xa3ee('0x1'));var _=require(_0xa3ee('0x2'));var jstz=require(_0xa3ee('0x3'));var timezone=jstz[_0xa3ee('0x4')]();config[_0xa3ee('0x1')]=_[_0xa3ee('0x5')](config[_0xa3ee('0x1')],{'database':_0xa3ee('0x6'),'username':_0xa3ee('0x7'),'password':_0xa3ee('0x8'),'options':{'host':_0xa3ee('0x9'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xa3ee('0xa')](),'define':{'charset':'utf8','collate':_0xa3ee('0xb')}}});config['sequelizeHistory']=_[_0xa3ee('0x5')](config['sequelizeHistory'],{'database':_0xa3ee('0x6'),'username':'xcall','password':_0xa3ee('0x8'),'options':{'host':_0xa3ee('0x9'),'port':0xcea,'dialect':_0xa3ee('0xc'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xa3ee('0xa')](),'define':{'charset':_0xa3ee('0xd'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0xa3ee('0xe')],config[_0xa3ee('0x1')][_0xa3ee('0xf')],config[_0xa3ee('0x1')]['password'],config[_0xa3ee('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xa3ee('0x10')][_0xa3ee('0xe')],config[_0xa3ee('0x10')][_0xa3ee('0xf')],config['sequelizeHistory'][_0xa3ee('0x11')],config[_0xa3ee('0x10')]['options'])};db['User']=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x13'));db[_0xa3ee('0x14')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x15'));db[_0xa3ee('0x16')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x17'));db['VoiceExtension']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x18'));db[_0xa3ee('0x19')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0xa3ee('0x1a')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x1b'));db['VoiceRecording']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x1c'));db[_0xa3ee('0x1d')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x1e'));db[_0xa3ee('0x1f')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0xa3ee('0x20')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x21'));db[_0xa3ee('0x22')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x23'));db[_0xa3ee('0x24')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x25'));db[_0xa3ee('0x26')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x27'));db['MemberReport']=db['sequelize']['import'](_0xa3ee('0x28'));db['Trunk']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x29'));db[_0xa3ee('0x2a')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x2b'));db[_0xa3ee('0x2c')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0xa3ee('0x2d')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x2e'));db['UserChatQueue']=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x2f'));db['UserMailQueue']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x30'));db[_0xa3ee('0x31')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x32'));db[_0xa3ee('0x33')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x34'));db['UserOpenchannelQueue']=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x35'));db['MailServerIn']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x36'));db[_0xa3ee('0x37')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x38'));db[_0xa3ee('0x39')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x3a'));db[_0xa3ee('0x3b')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x3c'));db[_0xa3ee('0x3d')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/mailSubstatus/mailSubstatus.model');db[_0xa3ee('0x3e')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0xa3ee('0x3f')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x40'));db[_0xa3ee('0x41')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x42'));db[_0xa3ee('0x43')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x44'));db[_0xa3ee('0x45')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x46'));db[_0xa3ee('0x47')]=db['sequelize']['import']('../api/dashboardItem/dashboardItem.model');db[_0xa3ee('0x48')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x49'));db[_0xa3ee('0x4a')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x4b'));db['FaxInteraction']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x4c'));db[_0xa3ee('0x4d')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x4e'));db[_0xa3ee('0x4f')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x50'));db[_0xa3ee('0x51')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x52'));db[_0xa3ee('0x53')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/smsAccount/smsAccount.model');db[_0xa3ee('0x54')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x55'));db['SmsInteraction']=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x56'));db[_0xa3ee('0x57')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x58'));db[_0xa3ee('0x59')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x5a'));db[_0xa3ee('0x5b')]=db['sequelize'][_0xa3ee('0x12')]('../api/openchannelAccount/openchannelAccount.model');db['OpenchannelApplication']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x5c'));db[_0xa3ee('0x5d')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x5e'));db['OpenchannelMessage']=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/openchannelMessage/openchannelMessage.model');db[_0xa3ee('0x5f')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/openchannelQueue/openchannelQueue.model');db['ChatWebsite']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x60'));db[_0xa3ee('0x61')]=db[_0xa3ee('0x1')]['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0xa3ee('0x62')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x63'));db[_0xa3ee('0x64')]=db[_0xa3ee('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0xa3ee('0x65')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x66'));db['ChatOfflineMessage']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x67'));db['ChatQueue']=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/chatQueue/chatQueue.model');db[_0xa3ee('0x68')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/chatGroup/chatGroup.model');db['ChatProactiveAction']=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/chatProactiveAction/chatProactiveAction.model');db[_0xa3ee('0x69')]=db[_0xa3ee('0x1')]['import']('../api/cmCompany/cmCompany.model');db[_0xa3ee('0x6a')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/cmContact/cmContact.model');db[_0xa3ee('0x6b')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x6c'));db[_0xa3ee('0x6d')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x6e'));db[_0xa3ee('0x6f')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x70'));db[_0xa3ee('0x71')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x72'));db['ReportAgentPreview']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x73'));db['CmCustomField']=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/cmCustomField/cmCustomField.model');db['Action']=db['sequelize']['import'](_0xa3ee('0x74'));db[_0xa3ee('0x75')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x76'));db[_0xa3ee('0x77')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x78'));db[_0xa3ee('0x79')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x7a'));db['Condition']=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x7b'));db[_0xa3ee('0x7c')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x7d'));db[_0xa3ee('0x7e')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x7f'));db[_0xa3ee('0x80')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x81'));db[_0xa3ee('0x82')]=db['sequelize'][_0xa3ee('0x12')]('../api/voiceQueuesLog/voiceQueuesLog.model');db['Schedule']=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x83'));db[_0xa3ee('0x84')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/sound/sound.model');db[_0xa3ee('0x85')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x86'));db['Template']=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/template/template.model');db[_0xa3ee('0x87')]=db['sequelize']['import'](_0xa3ee('0x88'));db['Variable']=db['sequelize'][_0xa3ee('0x12')]('../api/variable/variable.model');db['Integration']=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/integration/integration.model');db['IntegrationReport']=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x89'));db[_0xa3ee('0x8a')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x8b'));db['AnalyticDefaultReport']=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x8c'));db[_0xa3ee('0x8d')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0x8e'));db['AnalyticMetric']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x8f'));db[_0xa3ee('0x90')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x91'));db[_0xa3ee('0x92')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x93'));db[_0xa3ee('0x94')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x95'));db['SalesforceConfiguration']=db['sequelize'][_0xa3ee('0x12')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db[_0xa3ee('0x96')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x97'));db['SugarcrmAccount']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0x98'));db[_0xa3ee('0x99')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x9a'));db[_0xa3ee('0x9b')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x9c'));db['DeskAccount']=db[_0xa3ee('0x1')]['import'](_0xa3ee('0x9d'));db[_0xa3ee('0x9e')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0xa3ee('0x9f')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0xa0'));db[_0xa3ee('0xa1')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xa2'));db['ZohoConfiguration']=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0xa3ee('0xa3')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xa4'));db[_0xa3ee('0xa5')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xa6'));db[_0xa3ee('0xa7')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0xa8'));db[_0xa3ee('0xa9')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0xaa'));db['FreshdeskAccount']=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xa3ee('0xab')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0xac'));db[_0xa3ee('0xad')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xae'));db[_0xa3ee('0xaf')]=db['sequelize']['import']('../api/intVtigerAccount/intVtigerAccount.model');db[_0xa3ee('0xb0')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0xb1'));db[_0xa3ee('0xb2')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xb3'));db[_0xa3ee('0xb4')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xb5'));db[_0xa3ee('0xb6')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xb7'));db[_0xa3ee('0xb8')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xb9'));db[_0xa3ee('0xba')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0xbb'));db[_0xa3ee('0xbc')]=db['sequelize']['import'](_0xa3ee('0xbd'));db[_0xa3ee('0xbe')]=db['sequelize']['import'](_0xa3ee('0xbf'));db[_0xa3ee('0xc0')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xc1'));db[_0xa3ee('0xc2')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xc3'));db[_0xa3ee('0xc4')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xc5'));db['SquareDetailsReport']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xc6'));db[_0xa3ee('0xc7')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/jscriptyProject/jscriptyProject.model');db['Setting']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xc8'));db['SquareOdbc']=db[_0xa3ee('0x1')]['import'](_0xa3ee('0xc9'));db[_0xa3ee('0xca')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xcb'));db[_0xa3ee('0xcc')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xcd'));db[_0xa3ee('0xce')]=db['sequelize']['import']('../api/squareMessage/squareMessage.model');db[_0xa3ee('0xcf')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0xd0'));db[_0xa3ee('0xd1')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xd2'));db[_0xa3ee('0xd3')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/campaign/campaign.model');db['Migration']=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xd4'));db[_0xa3ee('0xd5')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')]('../api/attachment/attachment.model');db[_0xa3ee('0xd6')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xd7'));db[_0xa3ee('0xd8')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xd9'));db[_0xa3ee('0xda')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0xdb'));db[_0xa3ee('0xdc')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xdd'));db[_0xa3ee('0xde')]=db['sequelize']['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db['SmsTransferReport']=db['sequelize'][_0xa3ee('0x12')]('../api/smsTransferReport/smsTransferReport.model');db[_0xa3ee('0xdf')]=db['sequelize'][_0xa3ee('0x12')](_0xa3ee('0xe0'));db[_0xa3ee('0xe1')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xe2'));db[_0xa3ee('0xe3')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xe4'));db[_0xa3ee('0xe5')]=db[_0xa3ee('0x1')]['import'](_0xa3ee('0xe6'));db[_0xa3ee('0xe7')]=db[_0xa3ee('0x1')][_0xa3ee('0x12')](_0xa3ee('0xe8'));db[_0xa3ee('0xe9')][_0xa3ee('0xea')](db[_0xa3ee('0x1d')],{'as':_0xa3ee('0x1d'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0xec')});db[_0xa3ee('0xe9')][_0xa3ee('0xed')](db[_0xa3ee('0xee')],{'as':_0xa3ee('0xef'),'foreignKey':_0xa3ee('0xec')});db['User']['hasMany'](db['UserVoiceQueueRt'],{'as':_0xa3ee('0xf0'),'foreignKey':'UserId'});db[_0xa3ee('0xe9')][_0xa3ee('0xed')](db[_0xa3ee('0xf1')],{'as':_0xa3ee('0xf2'),'onDelete':_0xa3ee('0xeb'),'hooks':!![]});db[_0xa3ee('0xe9')][_0xa3ee('0xed')](db[_0xa3ee('0x6f')],{'as':_0xa3ee('0xf3'),'foreignKey':_0xa3ee('0xec')});db['User'][_0xa3ee('0xed')](db[_0xa3ee('0x71')],{'as':_0xa3ee('0xf4'),'foreignKey':'UserId'});db[_0xa3ee('0xe9')][_0xa3ee('0xed')](db['ReportAgentPreview'],{'as':_0xa3ee('0xf5'),'foreignKey':_0xa3ee('0xec')});db['User'][_0xa3ee('0xed')](db['OpenchannelInteraction'],{'as':_0xa3ee('0xf6'),'foreignKey':_0xa3ee('0xec')});db['User'][_0xa3ee('0xed')](db['ChatInteraction'],{'as':_0xa3ee('0xf7'),'foreignKey':_0xa3ee('0xec')});db['User'][_0xa3ee('0xed')](db[_0xa3ee('0xf8')],{'as':_0xa3ee('0xf9'),'foreignKey':_0xa3ee('0xec')});db[_0xa3ee('0xe9')]['hasMany'](db['FaxInteraction'],{'as':_0xa3ee('0xfa'),'foreignKey':_0xa3ee('0xec')});db[_0xa3ee('0xe9')][_0xa3ee('0xed')](db['MailInteraction'],{'as':_0xa3ee('0xfb'),'foreignKey':_0xa3ee('0xec')});db[_0xa3ee('0xe9')][_0xa3ee('0xfc')](db['UserProfile'],{'as':'UserProfile','foreignKey':_0xa3ee('0xfd')});db['User'][_0xa3ee('0xfe')](db[_0xa3ee('0x68')],{'as':_0xa3ee('0xff'),'through':_0xa3ee('0x100')});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x101'),'through':_0xa3ee('0x102')});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x103'),'through':_0xa3ee('0x104')});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0xcf')],{'through':'user_has_teams'});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0x3e')],{'as':'MailInteractions','through':_0xa3ee('0x105')});db[_0xa3ee('0xe9')]['belongsToMany'](db['ChatInteraction'],{'as':_0xa3ee('0xf7'),'through':_0xa3ee('0x106')});db['User']['belongsToMany'](db['FaxInteraction'],{'as':'FaxInteractions','through':_0xa3ee('0x107')});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0xf8')],{'as':_0xa3ee('0xf9'),'through':_0xa3ee('0x108')});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0x5d')],{'as':_0xa3ee('0xf6'),'through':_0xa3ee('0x109')});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0x1a')],{'as':_0xa3ee('0x10a'),'through':_0xa3ee('0x2d'),'required':![]});db['User'][_0xa3ee('0xfe')](db[_0xa3ee('0x3b')],{'as':_0xa3ee('0x10b'),'through':_0xa3ee('0x10c'),'required':![]});db['User'][_0xa3ee('0xfe')](db[_0xa3ee('0x10d')],{'as':_0xa3ee('0x10e'),'through':_0xa3ee('0x10f'),'required':![],'hooks':!![]});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0x4f')],{'as':_0xa3ee('0x110'),'through':'UserFaxQueue','required':![]});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0x59')],{'as':_0xa3ee('0x111'),'through':'UserSmsQueue','required':![]});db[_0xa3ee('0xe9')]['belongsToMany'](db[_0xa3ee('0x5f')],{'as':'OpenchannelQueues','through':_0xa3ee('0x112'),'required':![]});db[_0xa3ee('0xe9')]['belongsToMany'](db[_0xa3ee('0xdf')],{'through':_0xa3ee('0x104')});db[_0xa3ee('0xe9')]['belongsToMany'](db[_0xa3ee('0xe1')],{'as':_0xa3ee('0x113'),'through':_0xa3ee('0x114'),'required':![]});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0x115')],{'as':_0xa3ee('0x116'),'through':_0xa3ee('0x117')});db[_0xa3ee('0xe9')]['belongsToMany'](db[_0xa3ee('0x48')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db['User'][_0xa3ee('0xfe')](db['MailAccount'],{'as':'MailAccounts','through':_0xa3ee('0x118')});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db['OpenchannelAccount'],{'as':_0xa3ee('0x119'),'through':_0xa3ee('0x11a')});db[_0xa3ee('0xe9')]['belongsToMany'](db['SmsAccount'],{'as':_0xa3ee('0x11b'),'through':_0xa3ee('0x11c')});db[_0xa3ee('0xe9')][_0xa3ee('0xfe')](db[_0xa3ee('0xca')],{'as':_0xa3ee('0x11d'),'through':_0xa3ee('0x11e')});db[_0xa3ee('0x14')][_0xa3ee('0xed')](db[_0xa3ee('0xf1')],{'as':_0xa3ee('0x11f'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x120')});db[_0xa3ee('0x16')][_0xa3ee('0xed')](db[_0xa3ee('0xf1')],{'onDelete':_0xa3ee('0xeb')});db['VoiceExtension'][_0xa3ee('0xed')](db['VoiceExtension'],{'as':_0xa3ee('0x121'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x19')][_0xa3ee('0xfe')](db[_0xa3ee('0x84')],{'as':_0xa3ee('0x122'),'through':_0xa3ee('0x123')});db[_0xa3ee('0x1a')][_0xa3ee('0xed')](db[_0xa3ee('0x2c')],{'as':_0xa3ee('0x124'),'foreignKey':_0xa3ee('0x125')});db[_0xa3ee('0x1a')][_0xa3ee('0xed')](db[_0xa3ee('0x6b')],{'as':_0xa3ee('0x126'),'foreignKey':'VoiceQueueId'});db[_0xa3ee('0x1a')][_0xa3ee('0xed')](db[_0xa3ee('0x6f')],{'as':'HopperFinals','foreignKey':'VoiceQueueId'});db[_0xa3ee('0x1a')][_0xa3ee('0xed')](db['CmHopperHistory'],{'as':_0xa3ee('0x127'),'foreignKey':_0xa3ee('0x125')});db['VoiceQueue'][_0xa3ee('0xed')](db[_0xa3ee('0xf5')],{'as':_0xa3ee('0xf5'),'foreignKey':'VoiceQueueId'});db[_0xa3ee('0x1a')]['hasMany'](db['CmHopperBlack'],{'as':_0xa3ee('0x128'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db['JscriptySessionReport'],{'as':'JscriptySessions','foreignKey':_0xa3ee('0x125')});db[_0xa3ee('0x1a')][_0xa3ee('0xfc')](db[_0xa3ee('0x129')],{'as':_0xa3ee('0x129'),'foreignKey':_0xa3ee('0x12a')});db[_0xa3ee('0x1a')][_0xa3ee('0xfc')](db['Trunk'],{'as':_0xa3ee('0x12b'),'foreignKey':_0xa3ee('0x12c')});db['VoiceQueue']['belongsTo'](db[_0xa3ee('0x7c')],{'as':_0xa3ee('0x7c'),'foreignKey':_0xa3ee('0x12d')});db[_0xa3ee('0x1a')]['belongsToMany'](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x103'),'through':_0xa3ee('0x12e')});db[_0xa3ee('0x1a')]['belongsToMany'](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x2d')});db[_0xa3ee('0x1a')][_0xa3ee('0xfe')](db['Team'],{'as':_0xa3ee('0x130'),'through':_0xa3ee('0x131')});db[_0xa3ee('0x1a')][_0xa3ee('0xfe')](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x132'),'through':_0xa3ee('0x133')});db[_0xa3ee('0xee')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0xe9'),'foreignKey':_0xa3ee('0xec')});db[_0xa3ee('0x1d')][_0xa3ee('0xed')](db[_0xa3ee('0x1f')],{'as':_0xa3ee('0x134'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x135'),'sourceKey':'mailbox'});db[_0xa3ee('0x1f')][_0xa3ee('0xfc')](db[_0xa3ee('0x1d')],{'foreignKey':_0xa3ee('0x135'),'targetKey':_0xa3ee('0x136')});db[_0xa3ee('0x20')]['hasMany'](db[_0xa3ee('0x26')],{'as':'QueueCalls','foreignKey':_0xa3ee('0x137'),'constraints':![]});db[_0xa3ee('0x20')][_0xa3ee('0xed')](db['VoiceAgentReport'],{'as':_0xa3ee('0x138'),'foreignKey':_0xa3ee('0x137'),'constraints':![]});db[_0xa3ee('0x20')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0xe9'),'foreignKey':'UserId'});db[_0xa3ee('0x20')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':'ContactId'});db[_0xa3ee('0x13a')][_0xa3ee('0xfc')](db['MailAccount'],{'as':_0xa3ee('0x39'),'foreignKey':_0xa3ee('0x13b')});db[_0xa3ee('0x37')][_0xa3ee('0xfc')](db['MailAccount'],{'as':_0xa3ee('0x39'),'foreignKey':_0xa3ee('0x13b')});db[_0xa3ee('0x39')]['hasOne'](db[_0xa3ee('0x13a')],{'as':'Imap','onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x39')][_0xa3ee('0xea')](db[_0xa3ee('0x37')],{'as':_0xa3ee('0x13c'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x39')][_0xa3ee('0xed')](db[_0xa3ee('0x79')],{'as':_0xa3ee('0x13d'),'foreignKey':_0xa3ee('0x13b')});db[_0xa3ee('0x39')]['hasMany'](db[_0xa3ee('0x77')],{'as':_0xa3ee('0x13e'),'foreignKey':_0xa3ee('0x13b')});db[_0xa3ee('0x39')][_0xa3ee('0xed')](db[_0xa3ee('0x3f')],{'as':_0xa3ee('0x134'),'foreignKey':'MailAccountId'});db[_0xa3ee('0x39')][_0xa3ee('0xed')](db[_0xa3ee('0x3e')],{'as':_0xa3ee('0x13f')});db['MailAccount'][_0xa3ee('0xed')](db['MailApplication'],{'as':_0xa3ee('0x121')});db[_0xa3ee('0x39')]['belongsTo'](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x140'),'foreignKey':'ListId'});db['MailAccount']['belongsTo'](db[_0xa3ee('0x141')],{'as':'Template','foreignKey':'TemplateId'});db['MailAccount']['belongsToMany'](db[_0xa3ee('0xe9')],{'as':'Agents','through':'user_has_mail_accounts'});db[_0xa3ee('0x3b')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x10c')});db[_0xa3ee('0x3b')][_0xa3ee('0xfe')](db[_0xa3ee('0xcf')],{'through':_0xa3ee('0x142'),'as':_0xa3ee('0x130')});db['MailInteraction'][_0xa3ee('0xed')](db['MailMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0xa3ee('0x143')});db[_0xa3ee('0x3e')]['belongsTo'](db['MailAccount'],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x13b')});db[_0xa3ee('0x3e')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':'Contact','foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x3e')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':'Owner','foreignKey':'UserId'});db[_0xa3ee('0x3e')]['belongsToMany'](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x146'),'as':'Tags'});db['MailInteraction'][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x146'),'as':_0xa3ee('0x147')});db[_0xa3ee('0x3e')]['belongsToMany'](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x148'),'through':_0xa3ee('0x105'),'foreignKey':_0xa3ee('0x143')});db['MailMessage'][_0xa3ee('0xed')](db[_0xa3ee('0xd5')],{'as':_0xa3ee('0x149'),'onDelete':'cascade'});db['MailMessage'][_0xa3ee('0xfc')](db['User'],{'as':_0xa3ee('0xe9')});db[_0xa3ee('0x3f')]['belongsTo'](db[_0xa3ee('0x6a')],{'onDelete':_0xa3ee('0xeb'),'as':_0xa3ee('0x139')});db[_0xa3ee('0x3f')][_0xa3ee('0xfc')](db[_0xa3ee('0x3e')],{'as':_0xa3ee('0x14a'),'foreignKey':_0xa3ee('0x143')});db[_0xa3ee('0x3f')][_0xa3ee('0xfc')](db[_0xa3ee('0x39')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x13b')});db['MailApplication'][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x41')][_0xa3ee('0xfc')](db['MailQueue'],{'onDelete':'restrict'});db[_0xa3ee('0x41')]['belongsTo'](db[_0xa3ee('0x39')],{'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x41')][_0xa3ee('0xfc')](db['Interval'],{'onDelete':_0xa3ee('0x14b'),'foreignKey':_0xa3ee('0x12d')});db[_0xa3ee('0x41')]['belongsTo'](db[_0xa3ee('0x85')],{'onDelete':_0xa3ee('0x14b'),'foreignKey':_0xa3ee('0x14c')});db[_0xa3ee('0x43')]['belongsTo'](db['MailAccount'],{});db['MailQueueReport'][_0xa3ee('0xfc')](db['CmList'],{'as':_0xa3ee('0x140'),'foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0x43')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':'ContactId'});db[_0xa3ee('0x43')][_0xa3ee('0xfc')](db[_0xa3ee('0x3e')],{});db['MailQueueReport']['belongsTo'](db['MailMessage'],{});db[_0xa3ee('0x43')]['belongsTo'](db[_0xa3ee('0xe9')],{});db[_0xa3ee('0x43')][_0xa3ee('0xfc')](db[_0xa3ee('0x3b')],{});db['Dashboard'][_0xa3ee('0xed')](db[_0xa3ee('0x47')],{'as':_0xa3ee('0x14e'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x48')]['hasMany'](db[_0xa3ee('0x79')],{'as':_0xa3ee('0x13d'),'foreignKey':_0xa3ee('0x14f')});db[_0xa3ee('0x48')][_0xa3ee('0xed')](db[_0xa3ee('0x77')],{'as':_0xa3ee('0x13e'),'foreignKey':_0xa3ee('0x14f')});db[_0xa3ee('0x48')][_0xa3ee('0xed')](db[_0xa3ee('0x150')],{'as':_0xa3ee('0x13f')});db[_0xa3ee('0x48')]['hasMany'](db[_0xa3ee('0x4a')],{'as':_0xa3ee('0x121')});db['FaxAccount'][_0xa3ee('0xed')](db['VoiceExtension'],{'as':_0xa3ee('0x151'),'onDelete':_0xa3ee('0xeb')});db['FaxAccount']['hasMany'](db[_0xa3ee('0x4d')],{'as':_0xa3ee('0x134')});db[_0xa3ee('0x48')][_0xa3ee('0xfc')](db['Trunk'],{'as':_0xa3ee('0x129')});db['FaxAccount'][_0xa3ee('0xfc')](db[_0xa3ee('0xdf')],{'as':'List','foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0x48')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':'Agents','through':_0xa3ee('0x152')});db['FaxApplication'][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x4a')]['belongsTo'](db[_0xa3ee('0x4f')],{'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x4a')][_0xa3ee('0xfc')](db[_0xa3ee('0x48')],{'onDelete':_0xa3ee('0x14b')});db['FaxApplication'][_0xa3ee('0xfc')](db['Tag'],{'onDelete':_0xa3ee('0x14b'),'foreignKey':_0xa3ee('0x14c')});db[_0xa3ee('0x150')][_0xa3ee('0xed')](db[_0xa3ee('0x4d')],{'as':_0xa3ee('0x134'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x153')});db[_0xa3ee('0x150')][_0xa3ee('0xfc')](db[_0xa3ee('0x48')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x14f')});db[_0xa3ee('0x150')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x150')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x154'),'foreignKey':_0xa3ee('0xec')});db['FaxInteraction'][_0xa3ee('0xfe')](db['Tag'],{'through':_0xa3ee('0x155'),'as':_0xa3ee('0x156')});db[_0xa3ee('0x150')][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x155'),'as':'ThroughTags'});db[_0xa3ee('0x150')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x148'),'through':'user_has_fax_interactions','foreignKey':_0xa3ee('0x153')});db[_0xa3ee('0x4d')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'onDelete':_0xa3ee('0xeb'),'as':_0xa3ee('0xe9')});db[_0xa3ee('0x4d')][_0xa3ee('0xfc')](db['FaxInteraction'],{'as':_0xa3ee('0x14a'),'foreignKey':_0xa3ee('0x153')});db['FaxMessage']['belongsTo'](db[_0xa3ee('0x6a')],{'onDelete':_0xa3ee('0xeb'),'as':'Contact'});db['FaxMessage'][_0xa3ee('0xfc')](db['Attachment'],{'as':_0xa3ee('0xd5'),'foreignKey':_0xa3ee('0x157')});db[_0xa3ee('0x4d')][_0xa3ee('0xfc')](db[_0xa3ee('0x48')],{'as':'Account','foreignKey':_0xa3ee('0x14f')});db['FaxQueue'][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x31')});db[_0xa3ee('0x4f')][_0xa3ee('0xfe')](db[_0xa3ee('0xcf')],{'through':_0xa3ee('0x158'),'as':'Teams'});db['FaxQueueReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x48')],{});db['FaxQueueReport']['belongsTo'](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x140'),'foreignKey':_0xa3ee('0x14d')});db['FaxQueueReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x51')][_0xa3ee('0xfc')](db['FaxInteraction'],{});db['FaxQueueReport'][_0xa3ee('0xfc')](db['FaxMessage'],{});db[_0xa3ee('0x51')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{});db[_0xa3ee('0x51')]['belongsTo'](db[_0xa3ee('0x4f')],{});db['SmsAccount'][_0xa3ee('0xed')](db[_0xa3ee('0x79')],{'as':'Dispositions','foreignKey':'SmsAccountId'});db[_0xa3ee('0x53')][_0xa3ee('0xed')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0xa3ee('0x159')});db['SmsAccount'][_0xa3ee('0xed')](db[_0xa3ee('0x57')],{'as':_0xa3ee('0x134'),'foreignKey':_0xa3ee('0x159')});db[_0xa3ee('0x53')][_0xa3ee('0xed')](db[_0xa3ee('0xf8')],{'as':'Interactions'});db['SmsAccount'][_0xa3ee('0xed')](db['SmsApplication'],{'as':_0xa3ee('0x121')});db[_0xa3ee('0x53')][_0xa3ee('0xfc')](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x140'),'foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0x53')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x11c')});db['SmsApplication'][_0xa3ee('0xfc')](db['User'],{'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x54')][_0xa3ee('0xfc')](db[_0xa3ee('0x59')],{'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x54')][_0xa3ee('0xfc')](db[_0xa3ee('0x53')],{'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x54')]['belongsTo'](db[_0xa3ee('0x7c')],{'onDelete':_0xa3ee('0x14b'),'foreignKey':_0xa3ee('0x12d')});db[_0xa3ee('0x54')][_0xa3ee('0xfc')](db[_0xa3ee('0x85')],{'onDelete':_0xa3ee('0x14b'),'foreignKey':'TagId'});db[_0xa3ee('0xf8')][_0xa3ee('0xed')](db[_0xa3ee('0x57')],{'as':_0xa3ee('0x134'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x15a')});db['SmsInteraction'][_0xa3ee('0xfc')](db[_0xa3ee('0x53')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x159')});db[_0xa3ee('0xf8')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':'Contact','foreignKey':'ContactId'});db[_0xa3ee('0xf8')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x154'),'foreignKey':_0xa3ee('0xec')});db[_0xa3ee('0xf8')][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'through':'sms_interaction_has_tags','as':'Tags'});db[_0xa3ee('0xf8')][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x15b'),'as':_0xa3ee('0x147')});db[_0xa3ee('0xf8')]['belongsToMany'](db['User'],{'as':_0xa3ee('0x148'),'through':_0xa3ee('0x108'),'foreignKey':_0xa3ee('0x15a')});db[_0xa3ee('0x57')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0xe9')});db[_0xa3ee('0x57')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'onDelete':'cascade','as':_0xa3ee('0x139')});db['SmsMessage'][_0xa3ee('0xfc')](db[_0xa3ee('0xf8')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0xa3ee('0x15a')});db[_0xa3ee('0x57')]['belongsTo'](db[_0xa3ee('0x53')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x159')});db[_0xa3ee('0x59')]['belongsToMany'](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x33'),'foreignKey':_0xa3ee('0x15c')});db[_0xa3ee('0x59')][_0xa3ee('0xfe')](db['Team'],{'through':_0xa3ee('0x15d'),'as':_0xa3ee('0x130')});db['OpenchannelAccount'][_0xa3ee('0xed')](db[_0xa3ee('0x79')],{'as':_0xa3ee('0x13d'),'foreignKey':'OpenchannelAccountId'});db[_0xa3ee('0x5b')][_0xa3ee('0xed')](db[_0xa3ee('0x77')],{'as':'Answers','foreignKey':_0xa3ee('0x15e')});db['OpenchannelAccount'][_0xa3ee('0xed')](db[_0xa3ee('0x5d')],{'as':_0xa3ee('0x13f'),'foreignKey':_0xa3ee('0x15e')});db[_0xa3ee('0x5b')][_0xa3ee('0xed')](db[_0xa3ee('0x15f')],{'as':_0xa3ee('0x134'),'foreignKey':_0xa3ee('0x15e')});db[_0xa3ee('0x5b')][_0xa3ee('0xed')](db[_0xa3ee('0x160')],{'as':'Applications','foreignKey':'OpenchannelAccountId'});db[_0xa3ee('0x5b')][_0xa3ee('0xfc')](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x140'),'foreignKey':_0xa3ee('0x14d')});db['OpenchannelAccount'][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x11a')});db['OpenchannelApplication'][_0xa3ee('0xfc')](db['User'],{'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x160')][_0xa3ee('0xfc')](db[_0xa3ee('0x5f')],{'onDelete':_0xa3ee('0x14b'),'foreignKey':'OpenchannelQueueId'});db['OpenchannelApplication'][_0xa3ee('0xfc')](db[_0xa3ee('0x5b')],{'onDelete':_0xa3ee('0x14b'),'foreignKey':_0xa3ee('0x15e')});db[_0xa3ee('0x160')][_0xa3ee('0xfc')](db['Interval'],{'onDelete':_0xa3ee('0x14b'),'foreignKey':_0xa3ee('0x12d')});db[_0xa3ee('0x160')][_0xa3ee('0xfc')](db[_0xa3ee('0x85')],{'onDelete':_0xa3ee('0x14b'),'foreignKey':'TagId'});db[_0xa3ee('0x5d')][_0xa3ee('0xed')](db[_0xa3ee('0x15f')],{'as':_0xa3ee('0x134'),'onDelete':_0xa3ee('0xeb'),'foreignKey':'OpenchannelInteractionId'});db[_0xa3ee('0x5d')][_0xa3ee('0xfc')](db[_0xa3ee('0x5b')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x15e')});db[_0xa3ee('0x5d')][_0xa3ee('0xfc')](db['CmContact'],{'as':_0xa3ee('0x139'),'foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x5d')]['belongsTo'](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x154'),'foreignKey':_0xa3ee('0xec')});db['OpenchannelInteraction'][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x161'),'as':_0xa3ee('0x156')});db[_0xa3ee('0x5d')][_0xa3ee('0xfe')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0xa3ee('0x147')});db[_0xa3ee('0x5d')]['belongsToMany'](db['User'],{'as':_0xa3ee('0x148'),'through':'user_has_openchannel_interactions','foreignKey':_0xa3ee('0x162')});db[_0xa3ee('0x15f')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'onDelete':_0xa3ee('0xeb'),'as':_0xa3ee('0xe9')});db[_0xa3ee('0x15f')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'onDelete':_0xa3ee('0xeb'),'as':'Contact'});db['OpenchannelMessage'][_0xa3ee('0xfc')](db[_0xa3ee('0x5d')],{'onDelete':'cascade','as':_0xa3ee('0x14a'),'foreignKey':_0xa3ee('0x162')});db['OpenchannelMessage'][_0xa3ee('0xfc')](db['Attachment'],{'as':'Attachment','foreignKey':_0xa3ee('0x157')});db['OpenchannelMessage']['belongsTo'](db[_0xa3ee('0x5b')],{'as':'Account','foreignKey':'OpenchannelAccountId'});db[_0xa3ee('0x5f')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':'Agents','through':_0xa3ee('0x112'),'foreignKey':_0xa3ee('0x163')});db[_0xa3ee('0x5f')][_0xa3ee('0xfe')](db[_0xa3ee('0xcf')],{'through':_0xa3ee('0x164'),'as':'Teams'});db['ChatWebsite'][_0xa3ee('0xed')](db[_0xa3ee('0x79')],{'as':_0xa3ee('0x13d'),'foreignKey':_0xa3ee('0x165')});db[_0xa3ee('0x115')][_0xa3ee('0xed')](db['CannedAnswer'],{'as':_0xa3ee('0x13e'),'foreignKey':_0xa3ee('0x165')});db['ChatWebsite']['hasMany'](db[_0xa3ee('0x166')],{'as':_0xa3ee('0x167')});db['ChatWebsite'][_0xa3ee('0xed')](db['ChatInteraction'],{'as':_0xa3ee('0x13f')});db[_0xa3ee('0x115')][_0xa3ee('0xed')](db[_0xa3ee('0x62')],{'as':_0xa3ee('0x121')});db['ChatWebsite'][_0xa3ee('0xed')](db[_0xa3ee('0x65')],{'as':_0xa3ee('0x134')});db[_0xa3ee('0x115')][_0xa3ee('0xfc')](db['CmList'],{'as':_0xa3ee('0x140'),'foreignKey':'ListId'});db[_0xa3ee('0x115')][_0xa3ee('0xfc')](db[_0xa3ee('0x7c')],{'as':_0xa3ee('0x7c'),'foreignKey':'IntervalId'});db[_0xa3ee('0x115')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x117')});db['OpenchannelQueueReport']['belongsTo'](db[_0xa3ee('0x5b')],{});db[_0xa3ee('0x61')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0x61')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':'ContactId'});db[_0xa3ee('0x61')][_0xa3ee('0xfc')](db[_0xa3ee('0x5d')],{});db[_0xa3ee('0x61')][_0xa3ee('0xfc')](db[_0xa3ee('0x15f')],{});db[_0xa3ee('0x61')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{});db['OpenchannelQueueReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x5f')],{});db[_0xa3ee('0x62')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x168'),'foreignKey':_0xa3ee('0xec'),'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x62')][_0xa3ee('0xfc')](db[_0xa3ee('0x10d')],{'as':_0xa3ee('0x169'),'foreignKey':_0xa3ee('0x16a'),'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x62')][_0xa3ee('0xfc')](db[_0xa3ee('0x115')],{'as':_0xa3ee('0x16b'),'foreignKey':_0xa3ee('0x165'),'onDelete':_0xa3ee('0x14b')});db['ChatApplication'][_0xa3ee('0xfc')](db[_0xa3ee('0x85')],{'onDelete':_0xa3ee('0x14b'),'foreignKey':'TagId'});db['ChatInteraction'][_0xa3ee('0xed')](db[_0xa3ee('0x65')],{'as':'Messages','onDelete':'cascade','foreignKey':_0xa3ee('0x16c')});db[_0xa3ee('0x64')][_0xa3ee('0xfc')](db['ChatWebsite'],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x165')});db['ChatInteraction']['belongsTo'](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':_0xa3ee('0x145')});db['ChatInteraction'][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':'Owner','foreignKey':_0xa3ee('0xec')});db[_0xa3ee('0x64')][_0xa3ee('0xfe')](db['Tag'],{'through':_0xa3ee('0x16d'),'as':'Tags'});db[_0xa3ee('0x64')][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x16d'),'as':_0xa3ee('0x147')});db[_0xa3ee('0x64')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x148'),'through':_0xa3ee('0x106'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0xa3ee('0xfc')](db['User'],{'onDelete':_0xa3ee('0xeb'),'as':'User'});db['ChatMessage'][_0xa3ee('0xfc')](db['CmContact'],{'onDelete':_0xa3ee('0xeb'),'as':_0xa3ee('0x139'),'foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x65')][_0xa3ee('0xfc')](db['ChatInteraction'],{'onDelete':'cascade','as':_0xa3ee('0x14a'),'foreignKey':_0xa3ee('0x16c')});db['ChatMessage']['belongsTo'](db[_0xa3ee('0xd5')],{'as':_0xa3ee('0xd5'),'foreignKey':_0xa3ee('0x157')});db[_0xa3ee('0x65')]['belongsTo'](db[_0xa3ee('0x115')],{'as':_0xa3ee('0x144'),'foreignKey':'ChatWebsiteId'});db[_0xa3ee('0x16e')]['belongsTo'](db[_0xa3ee('0x6a')],{'onDelete':'cascade','as':_0xa3ee('0x139'),'foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x16e')][_0xa3ee('0xfc')](db[_0xa3ee('0x115')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0xa3ee('0x10d')]['belongsToMany'](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x10f'),'hooks':!![]});db[_0xa3ee('0x10d')][_0xa3ee('0xfe')](db[_0xa3ee('0xcf')],{'through':_0xa3ee('0x16f'),'as':_0xa3ee('0x130')});db[_0xa3ee('0x68')][_0xa3ee('0xed')](db[_0xa3ee('0xba')],{'as':'Messages','foreignKey':'ChatGroupId','onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x68')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x124'),'through':'chat_group_has_users'});db[_0xa3ee('0x166')][_0xa3ee('0xfc')](db['ChatWebsite'],{'as':'Website','foreignKey':_0xa3ee('0x165')});db[_0xa3ee('0x69')][_0xa3ee('0xed')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x101'),'foreignKey':_0xa3ee('0x170')});db[_0xa3ee('0x6a')][_0xa3ee('0xed')](db[_0xa3ee('0x6b')],{'as':_0xa3ee('0x126'),'foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x6a')][_0xa3ee('0xed')](db[_0xa3ee('0x6f')],{'as':_0xa3ee('0xf3'),'foreignKey':'ContactId'});db[_0xa3ee('0x6a')][_0xa3ee('0xed')](db[_0xa3ee('0x71')],{'as':'HopperHistories','foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x6a')][_0xa3ee('0xed')](db['ReportAgentPreview'],{'as':_0xa3ee('0xf5'),'foreignKey':_0xa3ee('0x145')});db['CmContact'][_0xa3ee('0xed')](db[_0xa3ee('0xc0')],{'as':_0xa3ee('0x171'),'foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0x6a')]['hasMany'](db['OpenchannelInteraction'],{'as':_0xa3ee('0xf6'),'foreignKey':'ContactId','onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x6a')][_0xa3ee('0xed')](db[_0xa3ee('0x64')],{'as':'ChatInteractions','foreignKey':_0xa3ee('0x145'),'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x6a')][_0xa3ee('0xed')](db[_0xa3ee('0xf8')],{'as':_0xa3ee('0xf9'),'foreignKey':'ContactId','onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x6a')][_0xa3ee('0xed')](db[_0xa3ee('0x150')],{'as':_0xa3ee('0xfa'),'foreignKey':_0xa3ee('0x145'),'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x6a')][_0xa3ee('0xed')](db[_0xa3ee('0x3e')],{'as':_0xa3ee('0xfb'),'foreignKey':'ContactId','onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x6a')][_0xa3ee('0xfc')](db[_0xa3ee('0x69')],{'as':'Company','foreignKey':_0xa3ee('0x170')});db[_0xa3ee('0x6a')][_0xa3ee('0xfc')](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x140'),'foreignKey':'ListId','onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x6a')]['belongsToMany'](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x148'),'through':_0xa3ee('0x102')});db[_0xa3ee('0x6a')][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'as':_0xa3ee('0x156'),'through':_0xa3ee('0x172')});db[_0xa3ee('0x6a')][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x172'),'as':_0xa3ee('0x147')});db[_0xa3ee('0x6b')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':_0xa3ee('0x145'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x6b')]['belongsTo'](db[_0xa3ee('0xdf')],{'as':'List','foreignKey':_0xa3ee('0x14d'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x6b')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'as':'Agent','foreignKey':'UserId'});db[_0xa3ee('0x6b')][_0xa3ee('0xfc')](db[_0xa3ee('0x1a')],{'as':_0xa3ee('0x169'),'foreignKey':'VoiceQueueId','onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x6b')][_0xa3ee('0xfc')](db[_0xa3ee('0xd3')],{'as':'Campaign','foreignKey':_0xa3ee('0x173'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x6b')]['belongsTo'](db['User'],{'as':_0xa3ee('0x154'),'foreignKey':_0xa3ee('0x174')});db['CmHopperBlack'][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':'ContactId','onDelete':_0xa3ee('0xeb')});db['CmHopperBlack'][_0xa3ee('0xfc')](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x140'),'foreignKey':_0xa3ee('0x14d'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x6d')][_0xa3ee('0xfc')](db[_0xa3ee('0x1a')],{'as':_0xa3ee('0x169'),'foreignKey':_0xa3ee('0x125'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0x6d')][_0xa3ee('0xfc')](db[_0xa3ee('0xd3')],{'as':_0xa3ee('0xd3'),'foreignKey':_0xa3ee('0x173'),'onDelete':'cascade'});db[_0xa3ee('0x75')][_0xa3ee('0xed')](db[_0xa3ee('0x175')],{'as':{'plural':'All','singular':'OneAll'},'foreignKey':_0xa3ee('0x176'),'onDelete':_0xa3ee('0xeb'),'hooks':!![]});db[_0xa3ee('0x75')]['hasMany'](db[_0xa3ee('0x175')],{'as':{'plural':_0xa3ee('0x177'),'singular':'OneAny'},'foreignKey':'AutomationAnyId','onDelete':_0xa3ee('0xeb'),'hooks':!![]});db[_0xa3ee('0x75')][_0xa3ee('0xed')](db['Action'],{'as':_0xa3ee('0x178'),'foreignKey':'AutomationId','onDelete':_0xa3ee('0xeb'),'hooks':!![]});db[_0xa3ee('0x7c')][_0xa3ee('0xed')](db[_0xa3ee('0x7c')],{'as':_0xa3ee('0x179'),'foreignKey':_0xa3ee('0x12d'),'onDelete':_0xa3ee('0xeb'),'hooks':!![],'required':![]});db['Interval']['hasMany'](db[_0xa3ee('0xf1')],{'as':_0xa3ee('0xf2'),'foreignKey':_0xa3ee('0x12d'),'onDelete':'restrict'});db[_0xa3ee('0x7c')]['hasMany'](db[_0xa3ee('0x41')],{'as':_0xa3ee('0x17a'),'foreignKey':_0xa3ee('0x12d')});db['Interval']['hasMany'](db['ChatApplication'],{'as':'ChatApplications','foreignKey':'IntervalId'});db[_0xa3ee('0x7c')][_0xa3ee('0xed')](db[_0xa3ee('0x4a')],{'as':_0xa3ee('0x17b'),'foreignKey':'IntervalId'});db[_0xa3ee('0x7c')][_0xa3ee('0xed')](db[_0xa3ee('0x54')],{'as':_0xa3ee('0x17c'),'foreignKey':'IntervalId'});db[_0xa3ee('0x17d')][_0xa3ee('0xfc')](db[_0xa3ee('0x39')],{});db[_0xa3ee('0x17d')][_0xa3ee('0xfc')](db[_0xa3ee('0x17e')],{'foreignKey':_0xa3ee('0x17f')});db[_0xa3ee('0x17d')][_0xa3ee('0xfc')](db[_0xa3ee('0x8a')],{'foreignKey':_0xa3ee('0x180')});db[_0xa3ee('0x84')]['belongsToMany'](db[_0xa3ee('0x19')],{'as':_0xa3ee('0x181'),'through':_0xa3ee('0x123'),'onDelete':_0xa3ee('0x14b')});db[_0xa3ee('0x85')][_0xa3ee('0xfe')](db[_0xa3ee('0x6a')],{'through':_0xa3ee('0x172')});db[_0xa3ee('0x85')][_0xa3ee('0xfe')](db[_0xa3ee('0x64')],{'through':_0xa3ee('0x16d')});db[_0xa3ee('0x85')]['belongsToMany'](db[_0xa3ee('0x3e')],{'through':_0xa3ee('0x146')});db[_0xa3ee('0x85')][_0xa3ee('0xfe')](db['SmsInteraction'],{'through':_0xa3ee('0x15b')});db[_0xa3ee('0x85')][_0xa3ee('0xfe')](db[_0xa3ee('0x150')],{'through':_0xa3ee('0x155')});db[_0xa3ee('0x85')][_0xa3ee('0xfe')](db[_0xa3ee('0x5d')],{'through':_0xa3ee('0x161')});db['Trigger'][_0xa3ee('0xed')](db[_0xa3ee('0x175')],{'as':{'plural':_0xa3ee('0x182'),'singular':_0xa3ee('0x183')},'foreignKey':'TriggerAllId','onDelete':_0xa3ee('0xeb'),'hooks':!![]});db[_0xa3ee('0x87')]['hasMany'](db[_0xa3ee('0x175')],{'as':{'plural':_0xa3ee('0x184'),'singular':_0xa3ee('0x185')},'foreignKey':'TriggerAnyId','onDelete':_0xa3ee('0xeb'),'hooks':!![]});db[_0xa3ee('0x87')][_0xa3ee('0xed')](db[_0xa3ee('0x186')],{'as':_0xa3ee('0x178'),'foreignKey':_0xa3ee('0x187'),'onDelete':_0xa3ee('0xeb'),'hooks':!![]});db[_0xa3ee('0x8a')][_0xa3ee('0xed')](db[_0xa3ee('0x90')],{'as':_0xa3ee('0x188'),'onDelete':'cascade','foreignKey':_0xa3ee('0x180'),'hooks':!![]});db[_0xa3ee('0x17e')][_0xa3ee('0xed')](db[_0xa3ee('0x90')],{'as':'Fields','onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x17f')});db[_0xa3ee('0x189')][_0xa3ee('0xed')](db['AnalyticFieldReport'],{'as':_0xa3ee('0x188'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x18a')});db[_0xa3ee('0x90')]['belongsTo'](db[_0xa3ee('0x189')],{'foreignKey':_0xa3ee('0x18a')});db['SalesforceAccount'][_0xa3ee('0xed')](db[_0xa3ee('0x18b')],{'as':_0xa3ee('0x18c'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x18d')});db[_0xa3ee('0x18b')][_0xa3ee('0xed')](db[_0xa3ee('0x96')],{'as':_0xa3ee('0x18e'),'onDelete':_0xa3ee('0xeb'),'foreignKey':'SubjectId'});db[_0xa3ee('0x18b')][_0xa3ee('0xed')](db['SalesforceField'],{'as':'Descriptions','onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0x18b')][_0xa3ee('0xed')](db['SalesforceField'],{'as':'Fields','onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0x18b')][_0xa3ee('0xfc')](db[_0xa3ee('0x94')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x18d')});db[_0xa3ee('0x96')][_0xa3ee('0xed')](db[_0xa3ee('0x96')],{'as':_0xa3ee('0x191'),'foreignKey':'SubjectId'});db['SalesforceField'][_0xa3ee('0xed')](db[_0xa3ee('0x96')],{'as':_0xa3ee('0x192'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0x96')][_0xa3ee('0xed')](db['SalesforceField'],{'as':_0xa3ee('0x193'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0x96')][_0xa3ee('0xfc')](db[_0xa3ee('0x194')],{'as':_0xa3ee('0x194'),'foreignKey':_0xa3ee('0x195')});db[_0xa3ee('0x196')][_0xa3ee('0xed')](db['SugarcrmConfiguration'],{'as':_0xa3ee('0x18c'),'onDelete':_0xa3ee('0xeb'),'foreignKey':'AccountId'});db[_0xa3ee('0x99')][_0xa3ee('0xed')](db['SugarcrmField'],{'as':'Subjects','onDelete':'cascade','foreignKey':_0xa3ee('0x197')});db[_0xa3ee('0x99')][_0xa3ee('0xed')](db[_0xa3ee('0x9b')],{'as':'Descriptions','onDelete':_0xa3ee('0xeb'),'foreignKey':'DescriptionId'});db[_0xa3ee('0x99')][_0xa3ee('0xed')](db[_0xa3ee('0x9b')],{'as':'Fields','onDelete':_0xa3ee('0xeb'),'foreignKey':'FieldId'});db['SugarcrmConfiguration']['belongsTo'](db[_0xa3ee('0x196')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x18d')});db[_0xa3ee('0x9b')]['hasMany'](db[_0xa3ee('0x9b')],{'as':_0xa3ee('0x191'),'foreignKey':_0xa3ee('0x197')});db[_0xa3ee('0x9b')][_0xa3ee('0xed')](db[_0xa3ee('0x9b')],{'as':_0xa3ee('0x192'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0x9b')]['hasMany'](db[_0xa3ee('0x9b')],{'as':_0xa3ee('0x193'),'foreignKey':'FieldId'});db[_0xa3ee('0x9b')][_0xa3ee('0xfc')](db[_0xa3ee('0x194')],{'as':'Variable','foreignKey':_0xa3ee('0x195')});db[_0xa3ee('0x198')][_0xa3ee('0xed')](db[_0xa3ee('0x9e')],{'as':_0xa3ee('0x18c'),'onDelete':_0xa3ee('0xeb'),'foreignKey':'AccountId'});db['DeskConfiguration'][_0xa3ee('0xed')](db[_0xa3ee('0x9f')],{'as':_0xa3ee('0x18e'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x197')});db[_0xa3ee('0x9e')]['hasMany'](db[_0xa3ee('0x9f')],{'as':_0xa3ee('0x199'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0x9e')][_0xa3ee('0xed')](db[_0xa3ee('0x9f')],{'as':_0xa3ee('0x188'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x190')});db['DeskConfiguration']['belongsTo'](db[_0xa3ee('0x198')],{'as':'Account','foreignKey':_0xa3ee('0x18d')});db[_0xa3ee('0x9e')][_0xa3ee('0xfe')](db['Tag'],{'through':'int_desk_configuration_has_tags'});db[_0xa3ee('0x9f')]['hasMany'](db[_0xa3ee('0x9f')],{'as':'Subject','foreignKey':_0xa3ee('0x197')});db[_0xa3ee('0x9f')][_0xa3ee('0xed')](db[_0xa3ee('0x9f')],{'as':_0xa3ee('0x192'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0x9f')][_0xa3ee('0xed')](db[_0xa3ee('0x9f')],{'as':_0xa3ee('0x193'),'foreignKey':'FieldId'});db[_0xa3ee('0x9f')][_0xa3ee('0xfc')](db[_0xa3ee('0x194')],{'as':_0xa3ee('0x194'),'foreignKey':_0xa3ee('0x195')});db[_0xa3ee('0xa1')][_0xa3ee('0xed')](db['ZohoConfiguration'],{'as':_0xa3ee('0x18c'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x18d')});db['ZohoConfiguration'][_0xa3ee('0xed')](db['ZohoField'],{'as':_0xa3ee('0x18e'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xa3ee('0x19a')][_0xa3ee('0xed')](db['ZohoField'],{'as':_0xa3ee('0x199'),'onDelete':_0xa3ee('0xeb'),'foreignKey':'DescriptionId'});db[_0xa3ee('0x19a')]['hasMany'](db[_0xa3ee('0xa3')],{'as':_0xa3ee('0x188'),'onDelete':'cascade','foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0x19a')]['belongsTo'](db[_0xa3ee('0xa1')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x18d')});db[_0xa3ee('0xa3')]['hasMany'](db[_0xa3ee('0xa3')],{'as':_0xa3ee('0x191'),'foreignKey':'SubjectId'});db[_0xa3ee('0xa3')][_0xa3ee('0xed')](db[_0xa3ee('0xa3')],{'as':_0xa3ee('0x192'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0xa3')][_0xa3ee('0xed')](db[_0xa3ee('0xa3')],{'as':_0xa3ee('0x193'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0xa3')][_0xa3ee('0xfc')](db[_0xa3ee('0x194')],{'as':_0xa3ee('0x194'),'foreignKey':_0xa3ee('0x195')});db['ZendeskAccount'][_0xa3ee('0xed')](db[_0xa3ee('0xa7')],{'as':_0xa3ee('0x18c'),'onDelete':_0xa3ee('0xeb'),'foreignKey':'AccountId'});db['ZendeskConfiguration']['hasMany'](db['ZendeskField'],{'as':'Subjects','foreignKey':'SubjectId'});db[_0xa3ee('0xa7')][_0xa3ee('0xed')](db['ZendeskField'],{'as':_0xa3ee('0x199'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0xa7')][_0xa3ee('0xed')](db['ZendeskField'],{'as':_0xa3ee('0x188'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0xa7')][_0xa3ee('0xfc')](db[_0xa3ee('0xa5')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x18d')});db[_0xa3ee('0xa7')]['belongsToMany'](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x19b')});db[_0xa3ee('0xa9')][_0xa3ee('0xed')](db['ZendeskField'],{'as':'Subject','foreignKey':_0xa3ee('0x197')});db[_0xa3ee('0xa9')][_0xa3ee('0xed')](db[_0xa3ee('0xa9')],{'as':_0xa3ee('0x192'),'foreignKey':'DescriptionId'});db[_0xa3ee('0xa9')][_0xa3ee('0xed')](db[_0xa3ee('0xa9')],{'as':_0xa3ee('0x193'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0xa9')]['belongsTo'](db[_0xa3ee('0x194')],{'as':_0xa3ee('0x194'),'foreignKey':'VariableId'});db[_0xa3ee('0x19c')][_0xa3ee('0xed')](db[_0xa3ee('0xab')],{'as':_0xa3ee('0x18c'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xa3ee('0xab')][_0xa3ee('0xed')](db['FreshdeskField'],{'as':'Subjects','onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x197')});db['FreshdeskConfiguration'][_0xa3ee('0xed')](db['FreshdeskField'],{'as':_0xa3ee('0x199'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0xab')][_0xa3ee('0xed')](db['FreshdeskField'],{'as':_0xa3ee('0x188'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0xab')][_0xa3ee('0xfc')](db['FreshdeskAccount'],{'as':'Account','foreignKey':_0xa3ee('0x18d')});db[_0xa3ee('0xab')]['belongsToMany'](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x19d')});db['FreshdeskField']['hasMany'](db['FreshdeskField'],{'as':_0xa3ee('0x191'),'foreignKey':_0xa3ee('0x197')});db[_0xa3ee('0xad')]['hasMany'](db[_0xa3ee('0xad')],{'as':'Description','foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0xad')]['hasMany'](db['FreshdeskField'],{'as':_0xa3ee('0x193'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0xad')]['belongsTo'](db[_0xa3ee('0x194')],{'as':_0xa3ee('0x194'),'foreignKey':_0xa3ee('0x195')});db[_0xa3ee('0xaf')]['hasMany'](db['VtigerConfiguration'],{'as':_0xa3ee('0x18c'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x18d')});db['VtigerConfiguration'][_0xa3ee('0xed')](db['VtigerField'],{'as':_0xa3ee('0x18e'),'foreignKey':_0xa3ee('0x197')});db[_0xa3ee('0xb0')][_0xa3ee('0xed')](db['VtigerField'],{'as':_0xa3ee('0x199'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0xb0')][_0xa3ee('0xed')](db[_0xa3ee('0xb2')],{'as':_0xa3ee('0x188'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0xb0')][_0xa3ee('0xfc')](db[_0xa3ee('0xaf')],{'as':_0xa3ee('0x144'),'foreignKey':_0xa3ee('0x18d')});db[_0xa3ee('0xb0')][_0xa3ee('0xfe')](db[_0xa3ee('0x85')],{'through':_0xa3ee('0x19e')});db[_0xa3ee('0xb2')]['hasMany'](db[_0xa3ee('0xb2')],{'as':'Subject','foreignKey':_0xa3ee('0x197')});db[_0xa3ee('0xb2')][_0xa3ee('0xed')](db[_0xa3ee('0xb2')],{'as':_0xa3ee('0x192'),'foreignKey':_0xa3ee('0x18f')});db[_0xa3ee('0xb2')][_0xa3ee('0xed')](db[_0xa3ee('0xb2')],{'as':_0xa3ee('0x193'),'foreignKey':_0xa3ee('0x190')});db[_0xa3ee('0xb2')][_0xa3ee('0xfc')](db['Variable'],{'as':'Variable','foreignKey':_0xa3ee('0x195')});db['ChatQueueReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x115')],{});db[_0xa3ee('0xb8')]['belongsTo'](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x140'),'foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0xb8')][_0xa3ee('0xfc')](db['CmContact'],{'as':_0xa3ee('0x139'),'foreignKey':'ContactId'});db[_0xa3ee('0xb8')][_0xa3ee('0xfc')](db[_0xa3ee('0x64')],{});db[_0xa3ee('0xb8')][_0xa3ee('0xfc')](db[_0xa3ee('0x65')],{});db[_0xa3ee('0xb8')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{});db['ChatQueueReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x10d')],{});db['ChatInternalMessage'][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x19f')});db[_0xa3ee('0xba')]['belongsTo'](db[_0xa3ee('0xe9')],{'onDelete':_0xa3ee('0xeb'),'foreignKey':'ToId'});db[_0xa3ee('0xc0')]['hasMany'](db[_0xa3ee('0xbe')],{'foreignKey':_0xa3ee('0x1a0'),'onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0xc0')][_0xa3ee('0xed')](db[_0xa3ee('0xbc')],{'foreignKey':_0xa3ee('0x1a0'),'onDelete':_0xa3ee('0xeb')});db['SmsQueueReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x53')],{});db[_0xa3ee('0xc2')][_0xa3ee('0xfc')](db[_0xa3ee('0xdf')],{'as':'List','foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0xc2')][_0xa3ee('0xfc')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x139'),'foreignKey':_0xa3ee('0x145')});db[_0xa3ee('0xc2')]['belongsTo'](db[_0xa3ee('0xf8')],{});db[_0xa3ee('0xc2')][_0xa3ee('0xfc')](db[_0xa3ee('0x57')],{});db[_0xa3ee('0xc2')]['belongsTo'](db[_0xa3ee('0xe9')],{});db['SmsQueueReport'][_0xa3ee('0xfc')](db['SmsQueue'],{});db[_0xa3ee('0xc7')][_0xa3ee('0xed')](db[_0xa3ee('0xc0')],{'foreignKey':_0xa3ee('0x1a1')});db[_0xa3ee('0xc7')]['hasMany'](db[_0xa3ee('0xbe')],{'foreignKey':_0xa3ee('0x1a1')});db[_0xa3ee('0xc7')][_0xa3ee('0xed')](db[_0xa3ee('0xbc')],{'foreignKey':_0xa3ee('0x1a1')});db[_0xa3ee('0xca')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x148'),'through':'user_has_square_projects'});db[_0xa3ee('0xcf')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x1a2')});db[_0xa3ee('0xcf')][_0xa3ee('0xfe')](db['VoiceQueue'],{'through':_0xa3ee('0x131'),'as':_0xa3ee('0x10a')});db['Team'][_0xa3ee('0xfe')](db[_0xa3ee('0x3b')],{'through':_0xa3ee('0x142'),'as':_0xa3ee('0x10b')});db[_0xa3ee('0xcf')][_0xa3ee('0xfe')](db[_0xa3ee('0x10d')],{'through':_0xa3ee('0x16f'),'as':_0xa3ee('0x10e')});db['Team'][_0xa3ee('0xfe')](db[_0xa3ee('0x4f')],{'through':_0xa3ee('0x158'),'as':'FaxQueues'});db[_0xa3ee('0xcf')][_0xa3ee('0xfe')](db[_0xa3ee('0x59')],{'through':_0xa3ee('0x15d'),'as':_0xa3ee('0x111')});db[_0xa3ee('0xcf')][_0xa3ee('0xfe')](db[_0xa3ee('0x5f')],{'through':_0xa3ee('0x164'),'as':_0xa3ee('0x1a3')});db[_0xa3ee('0xd3')][_0xa3ee('0xed')](db[_0xa3ee('0x6b')],{'as':_0xa3ee('0x126'),'foreignKey':'CampaignId'});db[_0xa3ee('0xd3')]['hasMany'](db[_0xa3ee('0x6f')],{'as':_0xa3ee('0xf3'),'foreignKey':'CampaignId'});db['Campaign'][_0xa3ee('0xed')](db['CmHopperHistory'],{'as':_0xa3ee('0x127'),'foreignKey':_0xa3ee('0x173')});db[_0xa3ee('0xd3')]['hasMany'](db[_0xa3ee('0x6d')],{'as':'HopperBlacks','foreignKey':_0xa3ee('0x173')});db[_0xa3ee('0xd3')]['belongsTo'](db[_0xa3ee('0x129')],{'as':_0xa3ee('0x129'),'foreignKey':_0xa3ee('0x12a')});db[_0xa3ee('0xd3')][_0xa3ee('0xfc')](db[_0xa3ee('0x129')],{'as':_0xa3ee('0x12b'),'foreignKey':_0xa3ee('0x12c')});db[_0xa3ee('0xd3')][_0xa3ee('0xfc')](db['Interval'],{'as':_0xa3ee('0x7c'),'foreignKey':_0xa3ee('0x12d')});db[_0xa3ee('0xd3')][_0xa3ee('0xfc')](db[_0xa3ee('0xca')],{'as':'SquareProject','foreignKey':_0xa3ee('0x1a4')});db['Campaign'][_0xa3ee('0xfe')](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x103'),'through':'campaigns_has_cm_lists'});db['Campaign'][_0xa3ee('0xfe')](db[_0xa3ee('0xdf')],{'as':_0xa3ee('0x132'),'through':_0xa3ee('0x1a5')});db['MailTransferReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x3f')],{});db[_0xa3ee('0xd8')][_0xa3ee('0xfc')](db['MailInteraction'],{});db[_0xa3ee('0xd8')][_0xa3ee('0xfc')](db['MailAccount'],{'foreignKey':'FromMailAccountId','as':'FromAccount'});db['MailTransferReport'][_0xa3ee('0xfc')](db['User'],{'foreignKey':_0xa3ee('0x1a6'),'as':'FromAgent'});db[_0xa3ee('0xd8')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'foreignKey':_0xa3ee('0x1a7'),'as':_0xa3ee('0x1a8')});db[_0xa3ee('0xd8')]['belongsTo'](db[_0xa3ee('0x3b')],{'foreignKey':'ToMailQueueId','as':_0xa3ee('0x1a9')});db[_0xa3ee('0xd8')]['belongsTo'](db['MailAccount'],{'foreignKey':_0xa3ee('0x1aa'),'as':_0xa3ee('0x1ab')});db[_0xa3ee('0xda')][_0xa3ee('0xfc')](db[_0xa3ee('0x65')],{});db[_0xa3ee('0xda')]['belongsTo'](db[_0xa3ee('0x64')],{});db['ChatTransferReport']['belongsTo'](db[_0xa3ee('0x115')],{'foreignKey':_0xa3ee('0x1ac'),'as':'FromAccount'});db[_0xa3ee('0xda')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'foreignKey':_0xa3ee('0x1a6'),'as':_0xa3ee('0x1ad')});db[_0xa3ee('0xda')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'foreignKey':'ToUserId','as':_0xa3ee('0x1a8')});db[_0xa3ee('0xda')][_0xa3ee('0xfc')](db[_0xa3ee('0x10d')],{'foreignKey':_0xa3ee('0x1ae'),'as':_0xa3ee('0x1a9')});db[_0xa3ee('0xda')][_0xa3ee('0xfc')](db['ChatWebsite'],{'foreignKey':_0xa3ee('0x1af'),'as':_0xa3ee('0x1ab')});db[_0xa3ee('0xdc')]['belongsTo'](db[_0xa3ee('0x4d')],{});db[_0xa3ee('0xdc')][_0xa3ee('0xfc')](db[_0xa3ee('0x150')],{});db['FaxTransferReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x48')],{'foreignKey':_0xa3ee('0x1b0'),'as':_0xa3ee('0x1b1')});db['FaxTransferReport'][_0xa3ee('0xfc')](db['User'],{'foreignKey':'FromUserId','as':_0xa3ee('0x1ad')});db[_0xa3ee('0xdc')]['belongsTo'](db[_0xa3ee('0xe9')],{'foreignKey':_0xa3ee('0x1a7'),'as':'ToAgent'});db[_0xa3ee('0xdc')][_0xa3ee('0xfc')](db[_0xa3ee('0x4f')],{'foreignKey':_0xa3ee('0x1b2'),'as':'ToQueue'});db[_0xa3ee('0xdc')][_0xa3ee('0xfc')](db[_0xa3ee('0x48')],{'foreignKey':_0xa3ee('0x1b3'),'as':_0xa3ee('0x1ab')});db[_0xa3ee('0xde')][_0xa3ee('0xfc')](db['OpenchannelMessage'],{});db[_0xa3ee('0xde')][_0xa3ee('0xfc')](db[_0xa3ee('0x5d')],{});db[_0xa3ee('0xde')][_0xa3ee('0xfc')](db[_0xa3ee('0x5b')],{'foreignKey':_0xa3ee('0x1b4'),'as':'FromAccount'});db['OpenchannelTransferReport'][_0xa3ee('0xfc')](db['User'],{'foreignKey':_0xa3ee('0x1a6'),'as':'FromAgent'});db[_0xa3ee('0xde')][_0xa3ee('0xfc')](db['User'],{'foreignKey':_0xa3ee('0x1a7'),'as':_0xa3ee('0x1a8')});db[_0xa3ee('0xde')][_0xa3ee('0xfc')](db[_0xa3ee('0x5f')],{'foreignKey':_0xa3ee('0x1b5'),'as':_0xa3ee('0x1a9')});db['OpenchannelTransferReport'][_0xa3ee('0xfc')](db[_0xa3ee('0x5b')],{'foreignKey':_0xa3ee('0x1b6'),'as':_0xa3ee('0x1ab')});db[_0xa3ee('0x1b7')][_0xa3ee('0xfc')](db[_0xa3ee('0x57')],{});db[_0xa3ee('0x1b7')][_0xa3ee('0xfc')](db['SmsInteraction'],{});db[_0xa3ee('0x1b7')]['belongsTo'](db[_0xa3ee('0x53')],{'foreignKey':_0xa3ee('0x1b8'),'as':_0xa3ee('0x1b1')});db['SmsTransferReport'][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'foreignKey':_0xa3ee('0x1a6'),'as':_0xa3ee('0x1ad')});db[_0xa3ee('0x1b7')][_0xa3ee('0xfc')](db[_0xa3ee('0xe9')],{'foreignKey':_0xa3ee('0x1a7'),'as':'ToAgent'});db[_0xa3ee('0x1b7')]['belongsTo'](db['SmsQueue'],{'foreignKey':_0xa3ee('0x1b9'),'as':'ToQueue'});db[_0xa3ee('0x1b7')][_0xa3ee('0xfc')](db[_0xa3ee('0x53')],{'foreignKey':_0xa3ee('0x1ba'),'as':_0xa3ee('0x1ab')});db[_0xa3ee('0xdf')][_0xa3ee('0xed')](db[_0xa3ee('0x79')],{'as':_0xa3ee('0x13d'),'foreignKey':'ListId'});db[_0xa3ee('0xdf')][_0xa3ee('0xed')](db[_0xa3ee('0x1bb')],{'as':'CustomFields','foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0xdf')][_0xa3ee('0xed')](db[_0xa3ee('0x6a')],{'as':_0xa3ee('0x101'),'onDelete':_0xa3ee('0xeb'),'foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0xdf')]['hasMany'](db[_0xa3ee('0x6f')],{'as':_0xa3ee('0xf3'),'foreignKey':'ListId'});db[_0xa3ee('0xdf')][_0xa3ee('0xed')](db[_0xa3ee('0x71')],{'as':_0xa3ee('0xf4'),'foreignKey':_0xa3ee('0x14d')});db[_0xa3ee('0xdf')][_0xa3ee('0xed')](db[_0xa3ee('0xf5')],{'as':_0xa3ee('0xf5'),'foreignKey':_0xa3ee('0x14d')});db['CmList'][_0xa3ee('0xfe')](db['VoiceQueue'],{'as':_0xa3ee('0x1bc'),'through':_0xa3ee('0x12e')});db[_0xa3ee('0xdf')][_0xa3ee('0xfe')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x104')});db[_0xa3ee('0xe1')][_0xa3ee('0xed')](db[_0xa3ee('0xf1')],{'as':_0xa3ee('0xf2'),'onDelete':'restrict'});db[_0xa3ee('0xe1')]['belongsToMany'](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x12f'),'through':_0xa3ee('0x114')});db['UserProfile'][_0xa3ee('0xed')](db[_0xa3ee('0xe9')],{'as':_0xa3ee('0x148'),'foreignKey':_0xa3ee('0xfd')});db[_0xa3ee('0xe3')][_0xa3ee('0xed')](db['UserProfileSection'],{'as':'UserProfileSections','foreignKey':'userProfileId','onDelete':_0xa3ee('0xeb')});db[_0xa3ee('0xe5')][_0xa3ee('0xed')](db['UserProfileResource'],{'as':'Resources','foreignKey':_0xa3ee('0x1bd'),'onDelete':_0xa3ee('0xeb')});module[_0xa3ee('0x1be')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x4f17=['CmHopperHistory','HopperHistories','HopperBlacks','JscriptySessionReport','JscriptySessions','TrunkId','TrunkBackup','IntervalId','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','ContactId','MailAccountId','Imap','Smtp','Dispositions','CannedAnswer','Answers','Interactions','MailApplication','List','ListId','TemplateId','Teams','MailInteractionId','Account','mail_interaction_has_tags','Tags','Users','Attachments','restrict','Dashboard','Items','FaxApplication','FaxInteractionId','FaxAccountId','fax_interaction_has_tags','Interaction','AttachmentId','team_has_fax_queues','FaxQueueReport','SmsAccountId','SmsMessage','TagId','SmsInteractionId','Owner','sms_interaction_has_tags','ThroughTags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueue','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','ChatWebsiteId','ProactiveActions','Queue','Website','ChatInteractionId','user_has_chat_interactions','team_has_chat_queues','ChatGroupId','CompanyId','HopperFinals','OpenchannelInteractions','MailInteractions','cm_contact_has_tags','Agent','CampaignId','All','OneAll','Any','OneAny','AutomationAnyId','Actions','AutomationId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','Schedule','DefaultReportId','Mohs','AllConditions','AllCondition','TriggerAllId','AnyCondition','TriggerId','Fields','MetricId','SalesforceConfiguration','Configurations','AccountId','SalesforceField','Subjects','SubjectId','Descriptions','DescriptionId','Subject','FieldId','Description','Field','VariableId','int_desk_configuration_has_tags','ZohoAccount','ZohoField','FreshdeskAccount','VtigerAccount','ChatQueueReport','ToId','JscriptyQuestionReport','SessionId','ProjectId','team_has_voice_queues','team_has_openchannel_queues','OpenchannelQueues','TrunkBackupId','SquareProjectId','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToQueue','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','FromSmsAccountId','ToSmsQueueId','CmCustomField','CustomFields','UserProfileSections','UserProfileResource','Resources','sectionId','path','sequelize','lodash','determine','defaultsDeep','motion2','127.0.0.1','utf8mb4','utf8','utf8_general_ci','sequelizeHistory','xcall','mysql','database','username','password','options','User','../api/user/user.model','VoiceChanSpy','import','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','VoiceRecording','../api/voiceRecording/voiceRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','MailQueueReport','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','Disposition','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','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','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','../api/intVtigerField/intVtigerField.model','Integration','../api/integration/integration.model','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','hasOne','UserId','hasMany','UserVoiceQueueRt','Extensions','HopperHistory','SmsInteractions','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','ChatInteractions','FaxInteractions','user_has_fax_interactions','user_has_openchannel_interactions','VoiceQueues','MailQueues','UserMailQueue','ChatQueues','FaxQueues','SmsQueues','UserOpenchannelQueue','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Applications','cascade','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers'];(function(_0x9a9bd,_0x484f48){var _0x1a21a1=function(_0x465e71){while(--_0x465e71){_0x9a9bd['push'](_0x9a9bd['shift']());}};_0x1a21a1(++_0x484f48);}(_0x4f17,0x9e));var _0x74f1=function(_0x26393b,_0x449a84){_0x26393b=_0x26393b-0x0;var _0x57230a=_0x4f17[_0x26393b];return _0x57230a;};'use strict';var path=require(_0x74f1('0x0'));var config=require('../config/environment');var Sequelize=require(_0x74f1('0x1'));var _=require(_0x74f1('0x2'));var jstz=require('jstz');var timezone=jstz[_0x74f1('0x3')]();config[_0x74f1('0x1')]=_[_0x74f1('0x4')](config[_0x74f1('0x1')],{'database':_0x74f1('0x5'),'username':'xcall','password':'xC@LL1234','options':{'host':_0x74f1('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x74f1('0x7')},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x74f1('0x8'),'collate':_0x74f1('0x9')}}});config[_0x74f1('0xa')]=_['defaultsDeep'](config[_0x74f1('0xa')],{'database':'motion2','username':_0x74f1('0xb'),'password':'xC@LL1234','options':{'host':_0x74f1('0x6'),'port':0xcea,'dialect':_0x74f1('0xc'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x74f1('0x8'),'collate':_0x74f1('0x9')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x74f1('0x1')][_0x74f1('0xd')],config[_0x74f1('0x1')][_0x74f1('0xe')],config[_0x74f1('0x1')][_0x74f1('0xf')],config[_0x74f1('0x1')][_0x74f1('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x74f1('0xd')],config['sequelizeHistory'][_0x74f1('0xe')],config['sequelizeHistory'][_0x74f1('0xf')],config[_0x74f1('0xa')][_0x74f1('0x10')])};db[_0x74f1('0x11')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x12'));db[_0x74f1('0x13')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0x15'));db['VoiceContext']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x16'));db[_0x74f1('0x17')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x18'));db[_0x74f1('0x19')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x1a'));db[_0x74f1('0x1b')]=db['sequelize']['import']('../api/voiceQueue/voiceQueue.model');db[_0x74f1('0x1c')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x1d'));db[_0x74f1('0x1e')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x1f'));db[_0x74f1('0x20')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/voiceMailMessage/voiceMailMessage.model');db['VoiceCallReport']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x21'));db[_0x74f1('0x22')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x23'));db['VoiceAgentReport']=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0x74f1('0x24')]=db['sequelize']['import'](_0x74f1('0x25'));db[_0x74f1('0x26')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x27'));db[_0x74f1('0x28')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x29'));db[_0x74f1('0x2a')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x2b'));db['UserVoiceQueueRt']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x2c'));db[_0x74f1('0x2d')]=db['sequelize'][_0x74f1('0x14')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x74f1('0x2e')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x2f'));db['UserMailQueue']=db[_0x74f1('0x1')]['import'](_0x74f1('0x30'));db[_0x74f1('0x31')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x32'));db[_0x74f1('0x33')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x34'));db['UserOpenchannelQueue']=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x74f1('0x35')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x36'));db[_0x74f1('0x37')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x38'));db[_0x74f1('0x39')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x3a'));db[_0x74f1('0x3b')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x3c'));db[_0x74f1('0x3d')]=db['sequelize'][_0x74f1('0x14')]('../api/mailSubstatus/mailSubstatus.model');db[_0x74f1('0x3e')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x3f'));db[_0x74f1('0x40')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0x41'));db['MailApplication']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x42'));db[_0x74f1('0x43')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/mailQueueReport/mailQueueReport.model');db['Dashboard']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x44'));db[_0x74f1('0x45')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x46'));db[_0x74f1('0x47')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/faxAccount/faxAccount.model');db['FaxApplication']=db[_0x74f1('0x1')]['import'](_0x74f1('0x48'));db[_0x74f1('0x49')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x4a'));db[_0x74f1('0x4b')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x4c'));db[_0x74f1('0x4d')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/faxQueue/faxQueue.model');db['FaxQueueReport']=db[_0x74f1('0x1')]['import'](_0x74f1('0x4e'));db[_0x74f1('0x4f')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x50'));db[_0x74f1('0x51')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x52'));db[_0x74f1('0x53')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x54'));db['SmsMessage']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x55'));db[_0x74f1('0x56')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x57'));db[_0x74f1('0x58')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x59'));db[_0x74f1('0x5a')]=db[_0x74f1('0x1')]['import']('../api/openchannelApplication/openchannelApplication.model');db[_0x74f1('0x5b')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x5c'));db[_0x74f1('0x5d')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x5e'));db['OpenchannelQueue']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x5f'));db[_0x74f1('0x60')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/chatWebsite/chatWebsite.model');db[_0x74f1('0x61')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x62'));db[_0x74f1('0x63')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x64'));db[_0x74f1('0x65')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x66'));db[_0x74f1('0x67')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x68'));db[_0x74f1('0x69')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x6a'));db[_0x74f1('0x6b')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x6c'));db[_0x74f1('0x6d')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x6e'));db[_0x74f1('0x6f')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/chatProactiveAction/chatProactiveAction.model');db[_0x74f1('0x70')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x71'));db[_0x74f1('0x72')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x73'));db[_0x74f1('0x74')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x75'));db[_0x74f1('0x76')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x77'));db[_0x74f1('0x78')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0x79'));db['CmHopperHistory']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x7a'));db[_0x74f1('0x7b')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x7c'));db['CmCustomField']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x7d'));db[_0x74f1('0x7e')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x7f'));db[_0x74f1('0x80')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x81'));db['CannedAnswer']=db['sequelize'][_0x74f1('0x14')](_0x74f1('0x82'));db[_0x74f1('0x83')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/disposition/disposition.model');db[_0x74f1('0x84')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x85'));db[_0x74f1('0x86')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x87'));db[_0x74f1('0x88')]=db[_0x74f1('0x1')]['import']('../api/pause/pause.model');db[_0x74f1('0x89')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0x8a'));db[_0x74f1('0x8b')]=db['sequelize'][_0x74f1('0x14')]('../api/voiceQueuesLog/voiceQueuesLog.model');db['Schedule']=db[_0x74f1('0x1')]['import'](_0x74f1('0x8c'));db[_0x74f1('0x8d')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x8e'));db[_0x74f1('0x8f')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x90'));db[_0x74f1('0x91')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x92'));db[_0x74f1('0x93')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x94'));db[_0x74f1('0x95')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x96'));db['Integration']=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/integration/integration.model');db['IntegrationReport']=db[_0x74f1('0x1')]['import'](_0x74f1('0x97'));db[_0x74f1('0x98')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x99'));db[_0x74f1('0x9a')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0x9b'));db[_0x74f1('0x9c')]=db[_0x74f1('0x1')]['import'](_0x74f1('0x9d'));db[_0x74f1('0x9e')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0x9f'));db[_0x74f1('0xa0')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xa1'));db[_0x74f1('0xa2')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xa3'));db[_0x74f1('0xa4')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xa5'));db['SalesforceConfiguration']=db[_0x74f1('0x1')]['import'](_0x74f1('0xa6'));db['SalesforceField']=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xa7'));db[_0x74f1('0xa8')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xa9'));db[_0x74f1('0xaa')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xab'));db[_0x74f1('0xac')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xad'));db[_0x74f1('0xae')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xaf'));db[_0x74f1('0xb0')]=db['sequelize']['import'](_0x74f1('0xb1'));db[_0x74f1('0xb2')]=db['sequelize']['import'](_0x74f1('0xb3'));db['ZohoAccount']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xb4'));db[_0x74f1('0xb5')]=db[_0x74f1('0x1')]['import']('../api/intZohoConfiguration/intZohoConfiguration.model');db['ZohoField']=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/intZohoField/intZohoField.model');db[_0x74f1('0xb6')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x74f1('0xb7')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xb8'));db[_0x74f1('0xb9')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xba'));db['FreshdeskAccount']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xbb'));db[_0x74f1('0xbc')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xbd'));db[_0x74f1('0xbe')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xbf'));db['VtigerAccount']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xc0'));db[_0x74f1('0xc1')]=db['sequelize']['import']('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x74f1('0xc2')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xc3'));db[_0x74f1('0xc4')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xc5'));db['Network']=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xc6'));db['ChatQueueReport']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xc7'));db[_0x74f1('0xc8')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x74f1('0xc9')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xca'));db['JscriptyQuestionReport']=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xcb'));db['JscriptySessionReport']=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xcc'));db[_0x74f1('0xcd')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xce'));db['SquareReport']=db['sequelize'][_0x74f1('0x14')]('../api/squareReport/squareReport.model');db['SquareDetailsReport']=db[_0x74f1('0x1')]['import'](_0x74f1('0xcf'));db[_0x74f1('0xd0')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xd1'));db[_0x74f1('0xd2')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xd3'));db[_0x74f1('0xd4')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xd5'));db[_0x74f1('0xd6')]=db[_0x74f1('0x1')]['import'](_0x74f1('0xd7'));db['SquareRecording']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xd8'));db[_0x74f1('0xd9')]=db[_0x74f1('0x1')]['import'](_0x74f1('0xda'));db[_0x74f1('0xdb')]=db[_0x74f1('0x1')]['import'](_0x74f1('0xdc'));db['License']=db[_0x74f1('0x1')]['import'](_0x74f1('0xdd'));db[_0x74f1('0xde')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xdf'));db[_0x74f1('0xe0')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/migration/migration.model');db[_0x74f1('0xe1')]=db[_0x74f1('0x1')]['import']('../api/attachment/attachment.model');db[_0x74f1('0xe2')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xe3'));db[_0x74f1('0xe4')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xe5'));db['ChatTransferReport']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xe6'));db[_0x74f1('0xe7')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xe8'));db[_0x74f1('0xe9')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xea'));db['SmsTransferReport']=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xeb'));db[_0x74f1('0xec')]=db[_0x74f1('0x1')][_0x74f1('0x14')](_0x74f1('0xed'));db['VoicePrefix']=db[_0x74f1('0x1')]['import'](_0x74f1('0xee'));db[_0x74f1('0xef')]=db['sequelize'][_0x74f1('0x14')](_0x74f1('0xf0'));db[_0x74f1('0xf1')]=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/userProfileSection/userProfileSection.model');db['UserProfileResource']=db[_0x74f1('0x1')][_0x74f1('0x14')]('../api/userProfileResource/userProfileResource.model');db['User'][_0x74f1('0xf2')](db[_0x74f1('0x1e')],{'as':_0x74f1('0x1e'),'onDelete':'cascade','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')][_0x74f1('0xf4')](db['VoiceRecording'],{'as':'Recordings','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')][_0x74f1('0xf4')](db[_0x74f1('0xf5')],{'as':'VoiceQueuesRt','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')]['hasMany'](db[_0x74f1('0x17')],{'as':_0x74f1('0xf6'),'onDelete':'cascade','hooks':!![]});db[_0x74f1('0x11')][_0x74f1('0xf4')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')][_0x74f1('0xf4')](db['CmHopperHistory'],{'as':_0x74f1('0xf7'),'foreignKey':_0x74f1('0xf3')});db['User'][_0x74f1('0xf4')](db[_0x74f1('0x7b')],{'as':_0x74f1('0x7b'),'foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')][_0x74f1('0xf4')](db[_0x74f1('0x5b')],{'as':'OpenchannelInteractions','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')]['hasMany'](db[_0x74f1('0x65')],{'as':'ChatInteractions','foreignKey':_0x74f1('0xf3')});db['User'][_0x74f1('0xf4')](db['SmsInteraction'],{'as':_0x74f1('0xf8'),'foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')]['hasMany'](db[_0x74f1('0x49')],{'as':'FaxInteractions','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')][_0x74f1('0xf4')](db[_0x74f1('0x3e')],{'as':'MailInteractions','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x11')][_0x74f1('0xf9')](db[_0x74f1('0xef')],{'as':_0x74f1('0xef'),'foreignKey':_0x74f1('0xfa')});db['User'][_0x74f1('0xfb')](db[_0x74f1('0x6d')],{'as':_0x74f1('0xfc'),'through':_0x74f1('0xfd')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db['CmContact'],{'as':_0x74f1('0xfe'),'through':_0x74f1('0xff')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0xec')],{'as':_0x74f1('0x100'),'through':_0x74f1('0x101')});db[_0x74f1('0x11')]['belongsToMany'](db['Team'],{'through':_0x74f1('0x102')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0x3e')],{'as':'MailInteractions','through':_0x74f1('0x103')});db['User'][_0x74f1('0xfb')](db['ChatInteraction'],{'as':_0x74f1('0x104'),'through':'user_has_chat_interactions'});db['User'][_0x74f1('0xfb')](db['FaxInteraction'],{'as':_0x74f1('0x105'),'through':_0x74f1('0x106')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0x53')],{'as':_0x74f1('0xf8'),'through':'user_has_sms_interactions'});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0x5b')],{'as':'OpenchannelInteractions','through':_0x74f1('0x107')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0x1b')],{'as':_0x74f1('0x108'),'through':'UserVoiceQueue','required':![]});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0x3b')],{'as':_0x74f1('0x109'),'through':_0x74f1('0x10a'),'required':![]});db[_0x74f1('0x11')]['belongsToMany'](db[_0x74f1('0x6b')],{'as':_0x74f1('0x10b'),'through':'UserChatQueue','required':![],'hooks':!![]});db['User']['belongsToMany'](db[_0x74f1('0x4d')],{'as':_0x74f1('0x10c'),'through':_0x74f1('0x31'),'required':![]});db[_0x74f1('0x11')][_0x74f1('0xfb')](db['SmsQueue'],{'as':_0x74f1('0x10d'),'through':_0x74f1('0x33'),'required':![]});db[_0x74f1('0x11')]['belongsToMany'](db['OpenchannelQueue'],{'as':'OpenchannelQueues','through':_0x74f1('0x10e'),'required':![]});db[_0x74f1('0x11')][_0x74f1('0xfb')](db['CmList'],{'through':_0x74f1('0x101')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db['VoicePrefix'],{'as':'VoicePrefixes','through':_0x74f1('0x10f'),'required':![]});db['User'][_0x74f1('0xfb')](db[_0x74f1('0x60')],{'as':_0x74f1('0x110'),'through':_0x74f1('0x111')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0x47')],{'as':_0x74f1('0x112'),'through':_0x74f1('0x113')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0x39')],{'as':_0x74f1('0x114'),'through':_0x74f1('0x115')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db['OpenchannelAccount'],{'as':_0x74f1('0x116'),'through':_0x74f1('0x117')});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0x4f')],{'as':_0x74f1('0x118'),'through':'user_has_sms_accounts'});db[_0x74f1('0x11')][_0x74f1('0xfb')](db[_0x74f1('0xd6')],{'as':_0x74f1('0x119'),'through':_0x74f1('0x11a')});db[_0x74f1('0x13')][_0x74f1('0xf4')](db['VoiceExtension'],{'as':_0x74f1('0x11b'),'onDelete':'cascade','foreignKey':_0x74f1('0x11c')});db[_0x74f1('0x11d')][_0x74f1('0xf4')](db[_0x74f1('0x17')],{'onDelete':'cascade'});db['VoiceExtension']['hasMany'](db[_0x74f1('0x17')],{'as':_0x74f1('0x11e'),'onDelete':_0x74f1('0x11f')});db[_0x74f1('0x19')][_0x74f1('0xfb')](db[_0x74f1('0x8d')],{'as':_0x74f1('0x120'),'through':_0x74f1('0x121')});db[_0x74f1('0x1b')][_0x74f1('0xf4')](db['UserVoiceQueueRt'],{'as':_0x74f1('0x122'),'foreignKey':_0x74f1('0x123')});db[_0x74f1('0x1b')]['hasMany'](db[_0x74f1('0x74')],{'as':_0x74f1('0x124'),'foreignKey':_0x74f1('0x123')});db[_0x74f1('0x1b')][_0x74f1('0xf4')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':_0x74f1('0x123')});db['VoiceQueue'][_0x74f1('0xf4')](db[_0x74f1('0x125')],{'as':_0x74f1('0x126'),'foreignKey':_0x74f1('0x123')});db[_0x74f1('0x1b')][_0x74f1('0xf4')](db[_0x74f1('0x7b')],{'as':_0x74f1('0x7b'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x74f1('0xf4')](db[_0x74f1('0x76')],{'as':_0x74f1('0x127'),'foreignKey':_0x74f1('0x123')});db[_0x74f1('0x1b')][_0x74f1('0xf4')](db[_0x74f1('0x128')],{'as':_0x74f1('0x129'),'foreignKey':'VoiceQueueId'});db[_0x74f1('0x1b')]['belongsTo'](db[_0x74f1('0x28')],{'as':_0x74f1('0x28'),'foreignKey':_0x74f1('0x12a')});db[_0x74f1('0x1b')][_0x74f1('0xf9')](db[_0x74f1('0x28')],{'as':_0x74f1('0x12b'),'foreignKey':'TrunkBackupId'});db[_0x74f1('0x1b')][_0x74f1('0xf9')](db[_0x74f1('0x86')],{'as':_0x74f1('0x86'),'foreignKey':_0x74f1('0x12c')});db[_0x74f1('0x1b')]['belongsToMany'](db[_0x74f1('0xec')],{'as':_0x74f1('0x100'),'through':_0x74f1('0x12d')});db[_0x74f1('0x1b')][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':_0x74f1('0x12e'),'through':'UserVoiceQueue'});db[_0x74f1('0x1b')][_0x74f1('0xfb')](db['Team'],{'as':'Teams','through':'team_has_voice_queues'});db[_0x74f1('0x1b')][_0x74f1('0xfb')](db[_0x74f1('0xec')],{'as':_0x74f1('0x12f'),'through':_0x74f1('0x130')});db['VoiceRecording'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':'User','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x1e')][_0x74f1('0xf4')](db[_0x74f1('0x20')],{'as':_0x74f1('0x131'),'onDelete':_0x74f1('0x11f'),'foreignKey':'mailboxuser','sourceKey':_0x74f1('0x132')});db[_0x74f1('0x20')]['belongsTo'](db['VoiceMail'],{'foreignKey':_0x74f1('0x133'),'targetKey':_0x74f1('0x132')});db[_0x74f1('0x134')]['hasMany'](db[_0x74f1('0x24')],{'as':_0x74f1('0x135'),'foreignKey':_0x74f1('0x136'),'constraints':![]});db['VoiceCallReport']['hasMany'](db[_0x74f1('0x137')],{'as':_0x74f1('0x138'),'foreignKey':_0x74f1('0x136'),'constraints':![]});db[_0x74f1('0x134')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':_0x74f1('0x11'),'foreignKey':'UserId'});db[_0x74f1('0x134')][_0x74f1('0xf9')](db['CmContact'],{'as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x35')][_0x74f1('0xf9')](db['MailAccount'],{'as':_0x74f1('0x39'),'foreignKey':_0x74f1('0x13b')});db['MailServerOut'][_0x74f1('0xf9')](db[_0x74f1('0x39')],{'as':'MailAccount','foreignKey':_0x74f1('0x13b')});db[_0x74f1('0x39')][_0x74f1('0xf2')](db[_0x74f1('0x35')],{'as':_0x74f1('0x13c'),'onDelete':_0x74f1('0x11f')});db[_0x74f1('0x39')][_0x74f1('0xf2')](db[_0x74f1('0x37')],{'as':_0x74f1('0x13d'),'onDelete':_0x74f1('0x11f')});db['MailAccount'][_0x74f1('0xf4')](db[_0x74f1('0x83')],{'as':_0x74f1('0x13e'),'foreignKey':_0x74f1('0x13b')});db[_0x74f1('0x39')]['hasMany'](db[_0x74f1('0x13f')],{'as':_0x74f1('0x140'),'foreignKey':_0x74f1('0x13b')});db[_0x74f1('0x39')]['hasMany'](db[_0x74f1('0x40')],{'as':_0x74f1('0x131'),'foreignKey':'MailAccountId'});db[_0x74f1('0x39')]['hasMany'](db['MailInteraction'],{'as':_0x74f1('0x141')});db[_0x74f1('0x39')][_0x74f1('0xf4')](db[_0x74f1('0x142')],{'as':_0x74f1('0x11e')});db[_0x74f1('0x39')][_0x74f1('0xf9')](db[_0x74f1('0xec')],{'as':_0x74f1('0x143'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0x39')][_0x74f1('0xf9')](db[_0x74f1('0x91')],{'as':_0x74f1('0x91'),'foreignKey':_0x74f1('0x145')});db[_0x74f1('0x39')][_0x74f1('0xfb')](db['User'],{'as':'Agents','through':_0x74f1('0x115')});db[_0x74f1('0x3b')]['belongsToMany'](db[_0x74f1('0x11')],{'as':'Agents','through':_0x74f1('0x10a')});db['MailQueue'][_0x74f1('0xfb')](db[_0x74f1('0xdb')],{'through':'team_has_mail_queues','as':_0x74f1('0x146')});db[_0x74f1('0x3e')][_0x74f1('0xf4')](db[_0x74f1('0x40')],{'as':_0x74f1('0x131'),'onDelete':'cascade','foreignKey':_0x74f1('0x147')});db[_0x74f1('0x3e')][_0x74f1('0xf9')](db[_0x74f1('0x39')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x13b')});db['MailInteraction'][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'as':'Contact','foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x3e')]['belongsTo'](db[_0x74f1('0x11')],{'as':'Owner','foreignKey':_0x74f1('0xf3')});db['MailInteraction'][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'through':_0x74f1('0x149'),'as':_0x74f1('0x14a')});db['MailInteraction'][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'through':'mail_interaction_has_tags','as':'ThroughTags'});db[_0x74f1('0x3e')][_0x74f1('0xfb')](db['User'],{'as':_0x74f1('0x14b'),'through':_0x74f1('0x103'),'foreignKey':_0x74f1('0x147')});db[_0x74f1('0x40')][_0x74f1('0xf4')](db[_0x74f1('0xe1')],{'as':_0x74f1('0x14c'),'onDelete':_0x74f1('0x11f')});db[_0x74f1('0x40')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':_0x74f1('0x11')});db[_0x74f1('0x40')]['belongsTo'](db[_0x74f1('0x72')],{'onDelete':_0x74f1('0x11f'),'as':_0x74f1('0x139')});db[_0x74f1('0x40')]['belongsTo'](db[_0x74f1('0x3e')],{'as':'Interaction','foreignKey':_0x74f1('0x147')});db['MailMessage']['belongsTo'](db[_0x74f1('0x39')],{'as':_0x74f1('0x148'),'foreignKey':'MailAccountId'});db['MailApplication'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'onDelete':_0x74f1('0x14d')});db['MailApplication'][_0x74f1('0xf9')](db[_0x74f1('0x3b')],{'onDelete':_0x74f1('0x14d')});db['MailApplication'][_0x74f1('0xf9')](db[_0x74f1('0x39')],{'onDelete':_0x74f1('0x14d')});db[_0x74f1('0x142')][_0x74f1('0xf9')](db[_0x74f1('0x86')],{'onDelete':_0x74f1('0x14d'),'foreignKey':_0x74f1('0x12c')});db[_0x74f1('0x142')][_0x74f1('0xf9')](db[_0x74f1('0x8f')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x74f1('0x43')][_0x74f1('0xf9')](db[_0x74f1('0x39')],{});db[_0x74f1('0x43')][_0x74f1('0xf9')](db[_0x74f1('0xec')],{'as':'List','foreignKey':_0x74f1('0x144')});db[_0x74f1('0x43')][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'as':'Contact','foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x43')][_0x74f1('0xf9')](db[_0x74f1('0x3e')],{});db[_0x74f1('0x43')]['belongsTo'](db[_0x74f1('0x40')],{});db[_0x74f1('0x43')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{});db[_0x74f1('0x43')][_0x74f1('0xf9')](db['MailQueue'],{});db[_0x74f1('0x14e')][_0x74f1('0xf4')](db[_0x74f1('0x45')],{'as':_0x74f1('0x14f'),'onDelete':_0x74f1('0x11f')});db[_0x74f1('0x47')]['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':'FaxAccountId'});db[_0x74f1('0x47')][_0x74f1('0xf4')](db[_0x74f1('0x13f')],{'as':_0x74f1('0x140'),'foreignKey':'FaxAccountId'});db[_0x74f1('0x47')]['hasMany'](db['FaxInteraction'],{'as':_0x74f1('0x141')});db[_0x74f1('0x47')][_0x74f1('0xf4')](db[_0x74f1('0x150')],{'as':'Applications'});db['FaxAccount']['hasMany'](db[_0x74f1('0x17')],{'as':'Exntensions','onDelete':_0x74f1('0x11f')});db[_0x74f1('0x47')][_0x74f1('0xf4')](db[_0x74f1('0x4b')],{'as':_0x74f1('0x131')});db[_0x74f1('0x47')][_0x74f1('0xf9')](db[_0x74f1('0x28')],{'as':_0x74f1('0x28')});db[_0x74f1('0x47')]['belongsTo'](db[_0x74f1('0xec')],{'as':'List','foreignKey':_0x74f1('0x144')});db[_0x74f1('0x47')][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':_0x74f1('0x12e'),'through':_0x74f1('0x113')});db[_0x74f1('0x150')][_0x74f1('0xf9')](db['User'],{'onDelete':_0x74f1('0x14d')});db[_0x74f1('0x150')][_0x74f1('0xf9')](db[_0x74f1('0x4d')],{'onDelete':'restrict'});db[_0x74f1('0x150')][_0x74f1('0xf9')](db[_0x74f1('0x47')],{'onDelete':'restrict'});db[_0x74f1('0x150')]['belongsTo'](db['Tag'],{'onDelete':_0x74f1('0x14d'),'foreignKey':'TagId'});db[_0x74f1('0x49')][_0x74f1('0xf4')](db[_0x74f1('0x4b')],{'as':'Messages','onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x151')});db[_0x74f1('0x49')][_0x74f1('0xf9')](db[_0x74f1('0x47')],{'as':'Account','foreignKey':_0x74f1('0x152')});db['FaxInteraction'][_0x74f1('0xf9')](db['CmContact'],{'as':_0x74f1('0x139'),'foreignKey':'ContactId'});db['FaxInteraction'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':'Owner','foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x49')][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'through':_0x74f1('0x153'),'as':_0x74f1('0x14a')});db[_0x74f1('0x49')][_0x74f1('0xfb')](db['Tag'],{'through':_0x74f1('0x153'),'as':'ThroughTags'});db['FaxInteraction'][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':_0x74f1('0x14b'),'through':_0x74f1('0x106'),'foreignKey':_0x74f1('0x151')});db[_0x74f1('0x4b')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'onDelete':_0x74f1('0x11f'),'as':_0x74f1('0x11')});db[_0x74f1('0x4b')]['belongsTo'](db[_0x74f1('0x49')],{'as':_0x74f1('0x154'),'foreignKey':_0x74f1('0x151')});db['FaxMessage']['belongsTo'](db[_0x74f1('0x72')],{'onDelete':_0x74f1('0x11f'),'as':'Contact'});db[_0x74f1('0x4b')][_0x74f1('0xf9')](db[_0x74f1('0xe1')],{'as':'Attachment','foreignKey':_0x74f1('0x155')});db[_0x74f1('0x4b')]['belongsTo'](db['FaxAccount'],{'as':_0x74f1('0x148'),'foreignKey':'FaxAccountId'});db[_0x74f1('0x4d')][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':_0x74f1('0x12e'),'through':'UserFaxQueue'});db['FaxQueue']['belongsToMany'](db[_0x74f1('0xdb')],{'through':_0x74f1('0x156'),'as':_0x74f1('0x146')});db[_0x74f1('0x157')][_0x74f1('0xf9')](db[_0x74f1('0x47')],{});db[_0x74f1('0x157')][_0x74f1('0xf9')](db['CmList'],{'as':_0x74f1('0x143'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0x157')][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a')});db['FaxQueueReport'][_0x74f1('0xf9')](db['FaxInteraction'],{});db[_0x74f1('0x157')]['belongsTo'](db[_0x74f1('0x4b')],{});db[_0x74f1('0x157')][_0x74f1('0xf9')](db['User'],{});db[_0x74f1('0x157')]['belongsTo'](db[_0x74f1('0x4d')],{});db[_0x74f1('0x4f')][_0x74f1('0xf4')](db[_0x74f1('0x83')],{'as':'Dispositions','foreignKey':'SmsAccountId'});db[_0x74f1('0x4f')]['hasMany'](db[_0x74f1('0x13f')],{'as':'Answers','foreignKey':_0x74f1('0x158')});db[_0x74f1('0x4f')]['hasMany'](db[_0x74f1('0x159')],{'as':_0x74f1('0x131'),'foreignKey':_0x74f1('0x158')});db[_0x74f1('0x4f')][_0x74f1('0xf4')](db[_0x74f1('0x53')],{'as':_0x74f1('0x141')});db['SmsAccount'][_0x74f1('0xf4')](db[_0x74f1('0x51')],{'as':_0x74f1('0x11e')});db['SmsAccount'][_0x74f1('0xf9')](db[_0x74f1('0xec')],{'as':_0x74f1('0x143'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0x4f')][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':'Agents','through':'user_has_sms_accounts'});db['SmsApplication']['belongsTo'](db['User'],{'onDelete':'restrict'});db[_0x74f1('0x51')][_0x74f1('0xf9')](db[_0x74f1('0x56')],{'onDelete':_0x74f1('0x14d')});db[_0x74f1('0x51')]['belongsTo'](db['SmsAccount'],{'onDelete':_0x74f1('0x14d')});db['SmsApplication'][_0x74f1('0xf9')](db[_0x74f1('0x86')],{'onDelete':_0x74f1('0x14d'),'foreignKey':_0x74f1('0x12c')});db['SmsApplication'][_0x74f1('0xf9')](db[_0x74f1('0x8f')],{'onDelete':'restrict','foreignKey':_0x74f1('0x15a')});db[_0x74f1('0x53')][_0x74f1('0xf4')](db['SmsMessage'],{'as':_0x74f1('0x131'),'onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x15b')});db[_0x74f1('0x53')][_0x74f1('0xf9')](db[_0x74f1('0x4f')],{'as':'Account','foreignKey':_0x74f1('0x158')});db[_0x74f1('0x53')]['belongsTo'](db[_0x74f1('0x72')],{'as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a')});db['SmsInteraction'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':_0x74f1('0x15c'),'foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x53')][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'through':'sms_interaction_has_tags','as':_0x74f1('0x14a')});db[_0x74f1('0x53')]['belongsToMany'](db[_0x74f1('0x8f')],{'through':_0x74f1('0x15d'),'as':_0x74f1('0x15e')});db[_0x74f1('0x53')][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':'Users','through':'user_has_sms_interactions','foreignKey':'SmsInteractionId'});db[_0x74f1('0x159')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':_0x74f1('0x11')});db[_0x74f1('0x159')]['belongsTo'](db['CmContact'],{'onDelete':_0x74f1('0x11f'),'as':'Contact'});db['SmsMessage'][_0x74f1('0xf9')](db['SmsInteraction'],{'onDelete':_0x74f1('0x11f'),'as':'Interaction','foreignKey':_0x74f1('0x15b')});db[_0x74f1('0x159')][_0x74f1('0xf9')](db[_0x74f1('0x4f')],{'as':_0x74f1('0x148'),'foreignKey':'SmsAccountId'});db[_0x74f1('0x56')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x74f1('0x33'),'foreignKey':_0x74f1('0x15f')});db['SmsQueue'][_0x74f1('0xfb')](db[_0x74f1('0xdb')],{'through':_0x74f1('0x160'),'as':_0x74f1('0x146')});db['OpenchannelAccount'][_0x74f1('0xf4')](db[_0x74f1('0x83')],{'as':_0x74f1('0x13e'),'foreignKey':_0x74f1('0x161')});db['OpenchannelAccount'][_0x74f1('0xf4')](db['CannedAnswer'],{'as':_0x74f1('0x140'),'foreignKey':_0x74f1('0x161')});db[_0x74f1('0x58')][_0x74f1('0xf4')](db[_0x74f1('0x5b')],{'as':_0x74f1('0x141'),'foreignKey':_0x74f1('0x161')});db['OpenchannelAccount'][_0x74f1('0xf4')](db[_0x74f1('0x5d')],{'as':_0x74f1('0x131'),'foreignKey':_0x74f1('0x161')});db[_0x74f1('0x58')][_0x74f1('0xf4')](db['OpenchannelApplication'],{'as':_0x74f1('0x11e'),'foreignKey':_0x74f1('0x161')});db['OpenchannelAccount'][_0x74f1('0xf9')](db['CmList'],{'as':_0x74f1('0x143'),'foreignKey':'ListId'});db[_0x74f1('0x58')][_0x74f1('0xfb')](db['User'],{'as':_0x74f1('0x12e'),'through':_0x74f1('0x117')});db[_0x74f1('0x5a')]['belongsTo'](db[_0x74f1('0x11')],{'onDelete':_0x74f1('0x14d')});db['OpenchannelApplication'][_0x74f1('0xf9')](db[_0x74f1('0x162')],{'onDelete':_0x74f1('0x14d'),'foreignKey':_0x74f1('0x163')});db[_0x74f1('0x5a')][_0x74f1('0xf9')](db[_0x74f1('0x58')],{'onDelete':_0x74f1('0x14d'),'foreignKey':_0x74f1('0x161')});db[_0x74f1('0x5a')][_0x74f1('0xf9')](db['Interval'],{'onDelete':_0x74f1('0x14d'),'foreignKey':_0x74f1('0x12c')});db[_0x74f1('0x5a')]['belongsTo'](db[_0x74f1('0x8f')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x74f1('0x5b')]['hasMany'](db[_0x74f1('0x5d')],{'as':'Messages','onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x164')});db['OpenchannelInteraction'][_0x74f1('0xf9')](db[_0x74f1('0x58')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x161')});db[_0x74f1('0x5b')][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'as':'Contact','foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x5b')][_0x74f1('0xf9')](db['User'],{'as':_0x74f1('0x15c'),'foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x5b')][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'through':'openchannel_interaction_has_tags','as':_0x74f1('0x14a')});db[_0x74f1('0x5b')][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'through':_0x74f1('0x165'),'as':_0x74f1('0x15e')});db['OpenchannelInteraction'][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':_0x74f1('0x14b'),'through':_0x74f1('0x107'),'foreignKey':_0x74f1('0x164')});db[_0x74f1('0x5d')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'onDelete':_0x74f1('0x11f'),'as':_0x74f1('0x11')});db['OpenchannelMessage'][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'onDelete':_0x74f1('0x11f'),'as':_0x74f1('0x139')});db[_0x74f1('0x5d')][_0x74f1('0xf9')](db[_0x74f1('0x5b')],{'onDelete':'cascade','as':_0x74f1('0x154'),'foreignKey':'OpenchannelInteractionId'});db[_0x74f1('0x5d')][_0x74f1('0xf9')](db[_0x74f1('0xe1')],{'as':_0x74f1('0xe1'),'foreignKey':_0x74f1('0x155')});db[_0x74f1('0x5d')][_0x74f1('0xf9')](db[_0x74f1('0x58')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x161')});db[_0x74f1('0x162')][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':_0x74f1('0x12e'),'through':_0x74f1('0x10e'),'foreignKey':_0x74f1('0x163')});db['OpenchannelQueue']['belongsToMany'](db[_0x74f1('0xdb')],{'through':'team_has_openchannel_queues','as':_0x74f1('0x146')});db['ChatWebsite']['hasMany'](db['Disposition'],{'as':_0x74f1('0x13e'),'foreignKey':_0x74f1('0x166')});db['ChatWebsite'][_0x74f1('0xf4')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0x74f1('0x166')});db[_0x74f1('0x60')][_0x74f1('0xf4')](db['ChatProactiveAction'],{'as':_0x74f1('0x167')});db[_0x74f1('0x60')][_0x74f1('0xf4')](db['ChatInteraction'],{'as':_0x74f1('0x141')});db[_0x74f1('0x60')][_0x74f1('0xf4')](db[_0x74f1('0x63')],{'as':_0x74f1('0x11e')});db[_0x74f1('0x60')][_0x74f1('0xf4')](db[_0x74f1('0x67')],{'as':_0x74f1('0x131')});db[_0x74f1('0x60')][_0x74f1('0xf9')](db[_0x74f1('0xec')],{'as':_0x74f1('0x143'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0x60')]['belongsTo'](db['Interval'],{'as':_0x74f1('0x86'),'foreignKey':'IntervalId'});db[_0x74f1('0x60')]['belongsToMany'](db[_0x74f1('0x11')],{'as':_0x74f1('0x12e'),'through':_0x74f1('0x111')});db[_0x74f1('0x61')][_0x74f1('0xf9')](db['OpenchannelAccount'],{});db['OpenchannelQueueReport'][_0x74f1('0xf9')](db['CmList'],{'as':_0x74f1('0x143'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0x61')][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x61')][_0x74f1('0xf9')](db[_0x74f1('0x5b')],{});db[_0x74f1('0x61')][_0x74f1('0xf9')](db[_0x74f1('0x5d')],{});db[_0x74f1('0x61')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{});db[_0x74f1('0x61')][_0x74f1('0xf9')](db[_0x74f1('0x162')],{});db[_0x74f1('0x63')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':'Agent','foreignKey':'UserId','onDelete':'restrict'});db[_0x74f1('0x63')][_0x74f1('0xf9')](db[_0x74f1('0x6b')],{'as':_0x74f1('0x168'),'foreignKey':'ChatQueueId','onDelete':_0x74f1('0x14d')});db['ChatApplication'][_0x74f1('0xf9')](db[_0x74f1('0x60')],{'as':_0x74f1('0x169'),'foreignKey':_0x74f1('0x166'),'onDelete':_0x74f1('0x14d')});db['ChatApplication']['belongsTo'](db['Tag'],{'onDelete':_0x74f1('0x14d'),'foreignKey':_0x74f1('0x15a')});db[_0x74f1('0x65')][_0x74f1('0xf4')](db['ChatMessage'],{'as':'Messages','onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x16a')});db[_0x74f1('0x65')][_0x74f1('0xf9')](db['ChatWebsite'],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x166')});db[_0x74f1('0x65')]['belongsTo'](db[_0x74f1('0x72')],{'as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a')});db['ChatInteraction'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':_0x74f1('0x15c'),'foreignKey':_0x74f1('0xf3')});db[_0x74f1('0x65')]['belongsToMany'](db[_0x74f1('0x8f')],{'through':'chat_interaction_has_tags','as':_0x74f1('0x14a')});db[_0x74f1('0x65')][_0x74f1('0xfb')](db['Tag'],{'through':'chat_interaction_has_tags','as':_0x74f1('0x15e')});db[_0x74f1('0x65')][_0x74f1('0xfb')](db['User'],{'as':_0x74f1('0x14b'),'through':_0x74f1('0x16b'),'foreignKey':_0x74f1('0x16a')});db[_0x74f1('0x67')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'onDelete':'cascade','as':'User'});db[_0x74f1('0x67')][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'onDelete':'cascade','as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x67')][_0x74f1('0xf9')](db[_0x74f1('0x65')],{'onDelete':'cascade','as':_0x74f1('0x154'),'foreignKey':_0x74f1('0x16a')});db[_0x74f1('0x67')][_0x74f1('0xf9')](db[_0x74f1('0xe1')],{'as':_0x74f1('0xe1'),'foreignKey':_0x74f1('0x155')});db[_0x74f1('0x67')][_0x74f1('0xf9')](db[_0x74f1('0x60')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x166')});db[_0x74f1('0x69')][_0x74f1('0xf9')](db['CmContact'],{'onDelete':'cascade','as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x69')]['belongsTo'](db[_0x74f1('0x60')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x166')});db[_0x74f1('0x6b')][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':'Agents','through':_0x74f1('0x2e'),'hooks':!![]});db['ChatQueue'][_0x74f1('0xfb')](db[_0x74f1('0xdb')],{'through':_0x74f1('0x16c'),'as':'Teams'});db[_0x74f1('0x6d')][_0x74f1('0xf4')](db[_0x74f1('0xc8')],{'as':_0x74f1('0x131'),'foreignKey':_0x74f1('0x16d'),'onDelete':'cascade'});db[_0x74f1('0x6d')][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':_0x74f1('0x122'),'through':_0x74f1('0xfd')});db['ChatProactiveAction'][_0x74f1('0xf9')](db[_0x74f1('0x60')],{'as':'Website','foreignKey':_0x74f1('0x166')});db[_0x74f1('0x70')][_0x74f1('0xf4')](db['CmContact'],{'as':_0x74f1('0xfe'),'foreignKey':_0x74f1('0x16e')});db['CmContact']['hasMany'](db[_0x74f1('0x74')],{'as':_0x74f1('0x124'),'foreignKey':'ContactId'});db[_0x74f1('0x72')][_0x74f1('0xf4')](db[_0x74f1('0x78')],{'as':_0x74f1('0x16f'),'foreignKey':_0x74f1('0x13a')});db['CmContact']['hasMany'](db[_0x74f1('0x125')],{'as':_0x74f1('0x126'),'foreignKey':_0x74f1('0x13a')});db['CmContact'][_0x74f1('0xf4')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x72')][_0x74f1('0xf4')](db[_0x74f1('0x128')],{'as':_0x74f1('0x129'),'foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x72')]['hasMany'](db[_0x74f1('0x5b')],{'as':_0x74f1('0x170'),'foreignKey':'ContactId','onDelete':_0x74f1('0x14d')});db[_0x74f1('0x72')][_0x74f1('0xf4')](db[_0x74f1('0x65')],{'as':_0x74f1('0x104'),'foreignKey':_0x74f1('0x13a'),'onDelete':_0x74f1('0x14d')});db[_0x74f1('0x72')]['hasMany'](db[_0x74f1('0x53')],{'as':'SmsInteractions','foreignKey':_0x74f1('0x13a'),'onDelete':_0x74f1('0x14d')});db[_0x74f1('0x72')][_0x74f1('0xf4')](db[_0x74f1('0x49')],{'as':'FaxInteractions','foreignKey':'ContactId','onDelete':_0x74f1('0x14d')});db['CmContact'][_0x74f1('0xf4')](db[_0x74f1('0x3e')],{'as':_0x74f1('0x171'),'foreignKey':_0x74f1('0x13a'),'onDelete':_0x74f1('0x14d')});db[_0x74f1('0x72')][_0x74f1('0xf9')](db[_0x74f1('0x70')],{'as':'Company','foreignKey':'CompanyId'});db[_0x74f1('0x72')][_0x74f1('0xf9')](db['CmList'],{'as':_0x74f1('0x143'),'foreignKey':'ListId','onDelete':_0x74f1('0x11f')});db['CmContact'][_0x74f1('0xfb')](db['User'],{'as':_0x74f1('0x14b'),'through':_0x74f1('0xff')});db[_0x74f1('0x72')][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'as':_0x74f1('0x14a'),'through':_0x74f1('0x172')});db['CmContact'][_0x74f1('0xfb')](db['Tag'],{'through':_0x74f1('0x172'),'as':_0x74f1('0x15e')});db[_0x74f1('0x74')][_0x74f1('0xf9')](db['CmContact'],{'as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a'),'onDelete':_0x74f1('0x11f')});db[_0x74f1('0x74')][_0x74f1('0xf9')](db[_0x74f1('0xec')],{'as':_0x74f1('0x143'),'foreignKey':_0x74f1('0x144'),'onDelete':'cascade'});db['CmHopper'][_0x74f1('0xf9')](db['User'],{'as':_0x74f1('0x173'),'foreignKey':'UserId'});db[_0x74f1('0x74')][_0x74f1('0xf9')](db[_0x74f1('0x1b')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':'cascade'});db['CmHopper'][_0x74f1('0xf9')](db[_0x74f1('0xde')],{'as':_0x74f1('0xde'),'foreignKey':_0x74f1('0x174'),'onDelete':_0x74f1('0x11f')});db['CmHopper'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'as':_0x74f1('0x15c'),'foreignKey':'OwnerId'});db['CmHopperBlack'][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a'),'onDelete':_0x74f1('0x11f')});db[_0x74f1('0x76')][_0x74f1('0xf9')](db[_0x74f1('0xec')],{'as':_0x74f1('0x143'),'foreignKey':_0x74f1('0x144'),'onDelete':_0x74f1('0x11f')});db[_0x74f1('0x76')][_0x74f1('0xf9')](db[_0x74f1('0x1b')],{'as':_0x74f1('0x168'),'foreignKey':_0x74f1('0x123'),'onDelete':'cascade'});db[_0x74f1('0x76')][_0x74f1('0xf9')](db[_0x74f1('0xde')],{'as':'Campaign','foreignKey':_0x74f1('0x174'),'onDelete':_0x74f1('0x11f')});db['Automation']['hasMany'](db[_0x74f1('0x84')],{'as':{'plural':_0x74f1('0x175'),'singular':_0x74f1('0x176')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x74f1('0x80')][_0x74f1('0xf4')](db[_0x74f1('0x84')],{'as':{'plural':_0x74f1('0x177'),'singular':_0x74f1('0x178')},'foreignKey':_0x74f1('0x179'),'onDelete':_0x74f1('0x11f'),'hooks':!![]});db[_0x74f1('0x80')]['hasMany'](db[_0x74f1('0x7e')],{'as':_0x74f1('0x17a'),'foreignKey':_0x74f1('0x17b'),'onDelete':_0x74f1('0x11f'),'hooks':!![]});db[_0x74f1('0x86')]['hasMany'](db[_0x74f1('0x86')],{'as':_0x74f1('0x17c'),'foreignKey':_0x74f1('0x12c'),'onDelete':_0x74f1('0x11f'),'hooks':!![],'required':![]});db[_0x74f1('0x86')][_0x74f1('0xf4')](db[_0x74f1('0x17')],{'as':'Extensions','foreignKey':_0x74f1('0x12c'),'onDelete':'restrict'});db['Interval'][_0x74f1('0xf4')](db['MailApplication'],{'as':_0x74f1('0x17d'),'foreignKey':_0x74f1('0x12c')});db[_0x74f1('0x86')][_0x74f1('0xf4')](db[_0x74f1('0x63')],{'as':_0x74f1('0x17e'),'foreignKey':_0x74f1('0x12c')});db[_0x74f1('0x86')][_0x74f1('0xf4')](db[_0x74f1('0x150')],{'as':_0x74f1('0x17f'),'foreignKey':_0x74f1('0x12c')});db[_0x74f1('0x86')][_0x74f1('0xf4')](db['SmsApplication'],{'as':_0x74f1('0x180'),'foreignKey':_0x74f1('0x12c')});db['Schedule'][_0x74f1('0xf9')](db['MailAccount'],{});db[_0x74f1('0x181')][_0x74f1('0xf9')](db[_0x74f1('0x9a')],{'foreignKey':_0x74f1('0x182')});db[_0x74f1('0x181')][_0x74f1('0xf9')](db[_0x74f1('0x98')],{'foreignKey':'CustomReportId'});db['Sound']['belongsToMany'](db[_0x74f1('0x19')],{'as':_0x74f1('0x183'),'through':_0x74f1('0x121'),'onDelete':_0x74f1('0x14d')});db[_0x74f1('0x8f')][_0x74f1('0xfb')](db['CmContact'],{'through':_0x74f1('0x172')});db[_0x74f1('0x8f')][_0x74f1('0xfb')](db[_0x74f1('0x65')],{'through':'chat_interaction_has_tags'});db[_0x74f1('0x8f')][_0x74f1('0xfb')](db['MailInteraction'],{'through':_0x74f1('0x149')});db[_0x74f1('0x8f')][_0x74f1('0xfb')](db['SmsInteraction'],{'through':_0x74f1('0x15d')});db[_0x74f1('0x8f')][_0x74f1('0xfb')](db[_0x74f1('0x49')],{'through':_0x74f1('0x153')});db[_0x74f1('0x8f')]['belongsToMany'](db[_0x74f1('0x5b')],{'through':_0x74f1('0x165')});db[_0x74f1('0x93')]['hasMany'](db[_0x74f1('0x84')],{'as':{'plural':_0x74f1('0x184'),'singular':_0x74f1('0x185')},'foreignKey':_0x74f1('0x186'),'onDelete':_0x74f1('0x11f'),'hooks':!![]});db['Trigger'][_0x74f1('0xf4')](db[_0x74f1('0x84')],{'as':{'plural':'AnyConditions','singular':_0x74f1('0x187')},'foreignKey':'TriggerAnyId','onDelete':_0x74f1('0x11f'),'hooks':!![]});db[_0x74f1('0x93')][_0x74f1('0xf4')](db[_0x74f1('0x7e')],{'as':'Actions','foreignKey':_0x74f1('0x188'),'onDelete':_0x74f1('0x11f'),'hooks':!![]});db[_0x74f1('0x98')][_0x74f1('0xf4')](db[_0x74f1('0xa0')],{'as':_0x74f1('0x189'),'onDelete':'cascade','foreignKey':'CustomReportId','hooks':!![]});db[_0x74f1('0x9a')][_0x74f1('0xf4')](db[_0x74f1('0xa0')],{'as':_0x74f1('0x189'),'onDelete':'cascade','foreignKey':_0x74f1('0x182')});db[_0x74f1('0x9e')][_0x74f1('0xf4')](db['AnalyticFieldReport'],{'as':_0x74f1('0x189'),'onDelete':_0x74f1('0x11f'),'foreignKey':'MetricId'});db[_0x74f1('0xa0')]['belongsTo'](db[_0x74f1('0x9e')],{'foreignKey':_0x74f1('0x18a')});db[_0x74f1('0xa4')][_0x74f1('0xf4')](db[_0x74f1('0x18b')],{'as':_0x74f1('0x18c'),'onDelete':'cascade','foreignKey':_0x74f1('0x18d')});db[_0x74f1('0x18b')][_0x74f1('0xf4')](db[_0x74f1('0x18e')],{'as':_0x74f1('0x18f'),'onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x190')});db[_0x74f1('0x18b')][_0x74f1('0xf4')](db[_0x74f1('0x18e')],{'as':_0x74f1('0x191'),'onDelete':'cascade','foreignKey':_0x74f1('0x192')});db['SalesforceConfiguration'][_0x74f1('0xf4')](db['SalesforceField'],{'as':_0x74f1('0x189'),'onDelete':_0x74f1('0x11f'),'foreignKey':'FieldId'});db['SalesforceConfiguration']['belongsTo'](db[_0x74f1('0xa4')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x18d')});db[_0x74f1('0x18e')]['hasMany'](db[_0x74f1('0x18e')],{'as':_0x74f1('0x193'),'foreignKey':_0x74f1('0x190')});db[_0x74f1('0x18e')][_0x74f1('0xf4')](db[_0x74f1('0x18e')],{'as':'Description','foreignKey':_0x74f1('0x192')});db[_0x74f1('0x18e')][_0x74f1('0xf4')](db[_0x74f1('0x18e')],{'as':'Field','foreignKey':_0x74f1('0x194')});db['SalesforceField'][_0x74f1('0xf9')](db[_0x74f1('0x95')],{'as':'Variable','foreignKey':'VariableId'});db[_0x74f1('0xa8')][_0x74f1('0xf4')](db[_0x74f1('0xaa')],{'as':_0x74f1('0x18c'),'onDelete':_0x74f1('0x11f'),'foreignKey':'AccountId'});db[_0x74f1('0xaa')][_0x74f1('0xf4')](db[_0x74f1('0xac')],{'as':_0x74f1('0x18f'),'onDelete':'cascade','foreignKey':_0x74f1('0x190')});db['SugarcrmConfiguration'][_0x74f1('0xf4')](db[_0x74f1('0xac')],{'as':_0x74f1('0x191'),'onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x192')});db[_0x74f1('0xaa')][_0x74f1('0xf4')](db[_0x74f1('0xac')],{'as':_0x74f1('0x189'),'onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x194')});db['SugarcrmConfiguration'][_0x74f1('0xf9')](db[_0x74f1('0xa8')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x18d')});db['SugarcrmField'][_0x74f1('0xf4')](db[_0x74f1('0xac')],{'as':'Subject','foreignKey':_0x74f1('0x190')});db[_0x74f1('0xac')][_0x74f1('0xf4')](db[_0x74f1('0xac')],{'as':_0x74f1('0x195'),'foreignKey':_0x74f1('0x192')});db[_0x74f1('0xac')][_0x74f1('0xf4')](db['SugarcrmField'],{'as':_0x74f1('0x196'),'foreignKey':_0x74f1('0x194')});db[_0x74f1('0xac')]['belongsTo'](db[_0x74f1('0x95')],{'as':_0x74f1('0x95'),'foreignKey':_0x74f1('0x197')});db[_0x74f1('0xae')][_0x74f1('0xf4')](db[_0x74f1('0xb0')],{'as':_0x74f1('0x18c'),'onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x18d')});db[_0x74f1('0xb0')][_0x74f1('0xf4')](db[_0x74f1('0xb2')],{'as':'Subjects','onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x190')});db['DeskConfiguration'][_0x74f1('0xf4')](db[_0x74f1('0xb2')],{'as':_0x74f1('0x191'),'onDelete':_0x74f1('0x11f'),'foreignKey':'DescriptionId'});db[_0x74f1('0xb0')][_0x74f1('0xf4')](db[_0x74f1('0xb2')],{'as':'Fields','onDelete':_0x74f1('0x11f'),'foreignKey':'FieldId'});db['DeskConfiguration']['belongsTo'](db['DeskAccount'],{'as':_0x74f1('0x148'),'foreignKey':'AccountId'});db[_0x74f1('0xb0')][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'through':_0x74f1('0x198')});db[_0x74f1('0xb2')][_0x74f1('0xf4')](db[_0x74f1('0xb2')],{'as':_0x74f1('0x193'),'foreignKey':_0x74f1('0x190')});db[_0x74f1('0xb2')][_0x74f1('0xf4')](db[_0x74f1('0xb2')],{'as':'Description','foreignKey':_0x74f1('0x192')});db[_0x74f1('0xb2')][_0x74f1('0xf4')](db[_0x74f1('0xb2')],{'as':_0x74f1('0x196'),'foreignKey':_0x74f1('0x194')});db['DeskField'][_0x74f1('0xf9')](db[_0x74f1('0x95')],{'as':'Variable','foreignKey':_0x74f1('0x197')});db[_0x74f1('0x199')][_0x74f1('0xf4')](db[_0x74f1('0xb5')],{'as':_0x74f1('0x18c'),'onDelete':_0x74f1('0x11f'),'foreignKey':'AccountId'});db[_0x74f1('0xb5')]['hasMany'](db['ZohoField'],{'as':_0x74f1('0x18f'),'onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x190')});db[_0x74f1('0xb5')]['hasMany'](db[_0x74f1('0x19a')],{'as':_0x74f1('0x191'),'onDelete':_0x74f1('0x11f'),'foreignKey':'DescriptionId'});db['ZohoConfiguration']['hasMany'](db[_0x74f1('0x19a')],{'as':_0x74f1('0x189'),'onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x194')});db['ZohoConfiguration'][_0x74f1('0xf9')](db[_0x74f1('0x199')],{'as':_0x74f1('0x148'),'foreignKey':'AccountId'});db[_0x74f1('0x19a')][_0x74f1('0xf4')](db[_0x74f1('0x19a')],{'as':_0x74f1('0x193'),'foreignKey':_0x74f1('0x190')});db[_0x74f1('0x19a')][_0x74f1('0xf4')](db[_0x74f1('0x19a')],{'as':'Description','foreignKey':_0x74f1('0x192')});db[_0x74f1('0x19a')][_0x74f1('0xf4')](db[_0x74f1('0x19a')],{'as':'Field','foreignKey':_0x74f1('0x194')});db['ZohoField']['belongsTo'](db[_0x74f1('0x95')],{'as':'Variable','foreignKey':_0x74f1('0x197')});db['ZendeskAccount']['hasMany'](db['ZendeskConfiguration'],{'as':'Configurations','onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x18d')});db[_0x74f1('0xb7')][_0x74f1('0xf4')](db['ZendeskField'],{'as':_0x74f1('0x18f'),'foreignKey':'SubjectId'});db[_0x74f1('0xb7')][_0x74f1('0xf4')](db[_0x74f1('0xb9')],{'as':_0x74f1('0x191'),'foreignKey':_0x74f1('0x192')});db[_0x74f1('0xb7')][_0x74f1('0xf4')](db[_0x74f1('0xb9')],{'as':'Fields','foreignKey':_0x74f1('0x194')});db[_0x74f1('0xb7')][_0x74f1('0xf9')](db[_0x74f1('0xb6')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x18d')});db[_0x74f1('0xb7')][_0x74f1('0xfb')](db[_0x74f1('0x8f')],{'through':'int_zendesk_configuration_has_tags'});db[_0x74f1('0xb9')][_0x74f1('0xf4')](db['ZendeskField'],{'as':_0x74f1('0x193'),'foreignKey':'SubjectId'});db[_0x74f1('0xb9')][_0x74f1('0xf4')](db[_0x74f1('0xb9')],{'as':_0x74f1('0x195'),'foreignKey':'DescriptionId'});db[_0x74f1('0xb9')][_0x74f1('0xf4')](db[_0x74f1('0xb9')],{'as':_0x74f1('0x196'),'foreignKey':'FieldId'});db['ZendeskField'][_0x74f1('0xf9')](db[_0x74f1('0x95')],{'as':_0x74f1('0x95'),'foreignKey':_0x74f1('0x197')});db[_0x74f1('0x19b')]['hasMany'](db[_0x74f1('0xbc')],{'as':_0x74f1('0x18c'),'onDelete':_0x74f1('0x11f'),'foreignKey':'AccountId'});db['FreshdeskConfiguration'][_0x74f1('0xf4')](db[_0x74f1('0xbe')],{'as':'Subjects','onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x190')});db['FreshdeskConfiguration'][_0x74f1('0xf4')](db['FreshdeskField'],{'as':'Descriptions','onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x192')});db[_0x74f1('0xbc')]['hasMany'](db[_0x74f1('0xbe')],{'as':'Fields','onDelete':_0x74f1('0x11f'),'foreignKey':'FieldId'});db[_0x74f1('0xbc')][_0x74f1('0xf9')](db['FreshdeskAccount'],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x18d')});db[_0x74f1('0xbc')][_0x74f1('0xfb')](db['Tag'],{'through':'int_freshdesk_configuration_has_tags'});db['FreshdeskField'][_0x74f1('0xf4')](db[_0x74f1('0xbe')],{'as':'Subject','foreignKey':_0x74f1('0x190')});db[_0x74f1('0xbe')][_0x74f1('0xf4')](db[_0x74f1('0xbe')],{'as':_0x74f1('0x195'),'foreignKey':_0x74f1('0x192')});db[_0x74f1('0xbe')][_0x74f1('0xf4')](db[_0x74f1('0xbe')],{'as':'Field','foreignKey':_0x74f1('0x194')});db[_0x74f1('0xbe')][_0x74f1('0xf9')](db[_0x74f1('0x95')],{'as':'Variable','foreignKey':'VariableId'});db[_0x74f1('0x19c')][_0x74f1('0xf4')](db['VtigerConfiguration'],{'as':_0x74f1('0x18c'),'onDelete':'cascade','foreignKey':_0x74f1('0x18d')});db[_0x74f1('0xc1')][_0x74f1('0xf4')](db[_0x74f1('0xc2')],{'as':_0x74f1('0x18f'),'foreignKey':_0x74f1('0x190')});db[_0x74f1('0xc1')][_0x74f1('0xf4')](db[_0x74f1('0xc2')],{'as':_0x74f1('0x191'),'foreignKey':_0x74f1('0x192')});db[_0x74f1('0xc1')][_0x74f1('0xf4')](db[_0x74f1('0xc2')],{'as':_0x74f1('0x189'),'foreignKey':_0x74f1('0x194')});db[_0x74f1('0xc1')]['belongsTo'](db[_0x74f1('0x19c')],{'as':_0x74f1('0x148'),'foreignKey':_0x74f1('0x18d')});db[_0x74f1('0xc1')][_0x74f1('0xfb')](db['Tag'],{'through':'int_vtiger_configuration_has_tags'});db['VtigerField'][_0x74f1('0xf4')](db[_0x74f1('0xc2')],{'as':'Subject','foreignKey':_0x74f1('0x190')});db[_0x74f1('0xc2')]['hasMany'](db[_0x74f1('0xc2')],{'as':_0x74f1('0x195'),'foreignKey':'DescriptionId'});db[_0x74f1('0xc2')][_0x74f1('0xf4')](db[_0x74f1('0xc2')],{'as':_0x74f1('0x196'),'foreignKey':'FieldId'});db[_0x74f1('0xc2')][_0x74f1('0xf9')](db[_0x74f1('0x95')],{'as':_0x74f1('0x95'),'foreignKey':_0x74f1('0x197')});db[_0x74f1('0x19d')][_0x74f1('0xf9')](db[_0x74f1('0x60')],{});db[_0x74f1('0x19d')]['belongsTo'](db['CmList'],{'as':_0x74f1('0x143'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0x19d')][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'as':_0x74f1('0x139'),'foreignKey':_0x74f1('0x13a')});db[_0x74f1('0x19d')][_0x74f1('0xf9')](db['ChatInteraction'],{});db[_0x74f1('0x19d')][_0x74f1('0xf9')](db[_0x74f1('0x67')],{});db[_0x74f1('0x19d')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{});db[_0x74f1('0x19d')]['belongsTo'](db[_0x74f1('0x6b')],{});db['ChatInternalMessage'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'onDelete':_0x74f1('0x11f'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'onDelete':'cascade','foreignKey':_0x74f1('0x19e')});db[_0x74f1('0x128')][_0x74f1('0xf4')](db[_0x74f1('0x19f')],{'foreignKey':_0x74f1('0x1a0'),'onDelete':'cascade'});db[_0x74f1('0x128')][_0x74f1('0xf4')](db['JscriptyAnswerReport'],{'foreignKey':_0x74f1('0x1a0'),'onDelete':'cascade'});db[_0x74f1('0xcd')]['belongsTo'](db[_0x74f1('0x4f')],{});db[_0x74f1('0xcd')][_0x74f1('0xf9')](db[_0x74f1('0xec')],{'as':_0x74f1('0x143'),'foreignKey':'ListId'});db[_0x74f1('0xcd')][_0x74f1('0xf9')](db[_0x74f1('0x72')],{'as':_0x74f1('0x139'),'foreignKey':'ContactId'});db[_0x74f1('0xcd')][_0x74f1('0xf9')](db['SmsInteraction'],{});db[_0x74f1('0xcd')][_0x74f1('0xf9')](db[_0x74f1('0x159')],{});db['SmsQueueReport'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{});db[_0x74f1('0xcd')][_0x74f1('0xf9')](db['SmsQueue'],{});db['JscriptyProject']['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0x74f1('0x1a1')});db[_0x74f1('0xd0')][_0x74f1('0xf4')](db['JscriptyQuestionReport'],{'foreignKey':_0x74f1('0x1a1')});db[_0x74f1('0xd0')][_0x74f1('0xf4')](db[_0x74f1('0xc9')],{'foreignKey':_0x74f1('0x1a1')});db['SquareProject'][_0x74f1('0xfb')](db['User'],{'as':'Users','through':'user_has_square_projects'});db[_0x74f1('0xdb')]['belongsToMany'](db[_0x74f1('0x11')],{'as':_0x74f1('0x12e'),'through':_0x74f1('0x102')});db[_0x74f1('0xdb')][_0x74f1('0xfb')](db[_0x74f1('0x1b')],{'through':_0x74f1('0x1a2'),'as':_0x74f1('0x108')});db['Team'][_0x74f1('0xfb')](db[_0x74f1('0x3b')],{'through':'team_has_mail_queues','as':_0x74f1('0x109')});db['Team']['belongsToMany'](db[_0x74f1('0x6b')],{'through':_0x74f1('0x16c'),'as':'ChatQueues'});db[_0x74f1('0xdb')][_0x74f1('0xfb')](db[_0x74f1('0x4d')],{'through':_0x74f1('0x156'),'as':_0x74f1('0x10c')});db[_0x74f1('0xdb')][_0x74f1('0xfb')](db['SmsQueue'],{'through':'team_has_sms_queues','as':_0x74f1('0x10d')});db[_0x74f1('0xdb')][_0x74f1('0xfb')](db[_0x74f1('0x162')],{'through':_0x74f1('0x1a3'),'as':_0x74f1('0x1a4')});db['Campaign'][_0x74f1('0xf4')](db[_0x74f1('0x74')],{'as':_0x74f1('0x124'),'foreignKey':'CampaignId'});db[_0x74f1('0xde')]['hasMany'](db['CmHopperFinal'],{'as':_0x74f1('0x16f'),'foreignKey':_0x74f1('0x174')});db[_0x74f1('0xde')]['hasMany'](db[_0x74f1('0x125')],{'as':_0x74f1('0x126'),'foreignKey':_0x74f1('0x174')});db[_0x74f1('0xde')]['hasMany'](db[_0x74f1('0x76')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db['Campaign'][_0x74f1('0xf9')](db[_0x74f1('0x28')],{'as':_0x74f1('0x28'),'foreignKey':_0x74f1('0x12a')});db['Campaign'][_0x74f1('0xf9')](db[_0x74f1('0x28')],{'as':'TrunkBackup','foreignKey':_0x74f1('0x1a5')});db['Campaign'][_0x74f1('0xf9')](db[_0x74f1('0x86')],{'as':'Interval','foreignKey':'IntervalId'});db[_0x74f1('0xde')][_0x74f1('0xf9')](db[_0x74f1('0xd6')],{'as':'SquareProject','foreignKey':_0x74f1('0x1a6')});db[_0x74f1('0xde')][_0x74f1('0xfb')](db['CmList'],{'as':_0x74f1('0x100'),'through':'campaigns_has_cm_lists'});db[_0x74f1('0xde')][_0x74f1('0xfb')](db[_0x74f1('0xec')],{'as':'BlackLists','through':_0x74f1('0x1a7')});db['MailTransferReport'][_0x74f1('0xf9')](db[_0x74f1('0x40')],{});db['MailTransferReport'][_0x74f1('0xf9')](db[_0x74f1('0x3e')],{});db[_0x74f1('0xe4')][_0x74f1('0xf9')](db[_0x74f1('0x39')],{'foreignKey':_0x74f1('0x1a8'),'as':_0x74f1('0x1a9')});db['MailTransferReport'][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'foreignKey':'FromUserId','as':_0x74f1('0x1aa')});db['MailTransferReport']['belongsTo'](db[_0x74f1('0x11')],{'foreignKey':_0x74f1('0x1ab'),'as':_0x74f1('0x1ac')});db[_0x74f1('0xe4')][_0x74f1('0xf9')](db[_0x74f1('0x3b')],{'foreignKey':'ToMailQueueId','as':_0x74f1('0x1ad')});db[_0x74f1('0xe4')]['belongsTo'](db[_0x74f1('0x39')],{'foreignKey':_0x74f1('0x1ae'),'as':_0x74f1('0x1af')});db[_0x74f1('0x1b0')][_0x74f1('0xf9')](db[_0x74f1('0x67')],{});db[_0x74f1('0x1b0')][_0x74f1('0xf9')](db[_0x74f1('0x65')],{});db[_0x74f1('0x1b0')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x74f1('0x1b1'),'as':_0x74f1('0x1a9')});db[_0x74f1('0x1b0')][_0x74f1('0xf9')](db['User'],{'foreignKey':_0x74f1('0x1b2'),'as':_0x74f1('0x1aa')});db[_0x74f1('0x1b0')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'foreignKey':'ToUserId','as':_0x74f1('0x1ac')});db[_0x74f1('0x1b0')][_0x74f1('0xf9')](db[_0x74f1('0x6b')],{'foreignKey':_0x74f1('0x1b3'),'as':_0x74f1('0x1ad')});db[_0x74f1('0x1b0')][_0x74f1('0xf9')](db[_0x74f1('0x60')],{'foreignKey':_0x74f1('0x1b4'),'as':_0x74f1('0x1af')});db[_0x74f1('0xe7')]['belongsTo'](db[_0x74f1('0x4b')],{});db[_0x74f1('0xe7')][_0x74f1('0xf9')](db[_0x74f1('0x49')],{});db['FaxTransferReport'][_0x74f1('0xf9')](db[_0x74f1('0x47')],{'foreignKey':_0x74f1('0x1b5'),'as':_0x74f1('0x1a9')});db[_0x74f1('0xe7')]['belongsTo'](db['User'],{'foreignKey':_0x74f1('0x1b2'),'as':_0x74f1('0x1aa')});db[_0x74f1('0xe7')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'foreignKey':_0x74f1('0x1ab'),'as':_0x74f1('0x1ac')});db[_0x74f1('0xe7')][_0x74f1('0xf9')](db['FaxQueue'],{'foreignKey':'ToFaxQueueId','as':_0x74f1('0x1ad')});db['FaxTransferReport'][_0x74f1('0xf9')](db[_0x74f1('0x47')],{'foreignKey':_0x74f1('0x1b6'),'as':'ToAccount'});db[_0x74f1('0xe9')][_0x74f1('0xf9')](db[_0x74f1('0x5d')],{});db[_0x74f1('0xe9')]['belongsTo'](db['OpenchannelInteraction'],{});db['OpenchannelTransferReport']['belongsTo'](db[_0x74f1('0x58')],{'foreignKey':_0x74f1('0x1b7'),'as':_0x74f1('0x1a9')});db[_0x74f1('0xe9')][_0x74f1('0xf9')](db['User'],{'foreignKey':'FromUserId','as':_0x74f1('0x1aa')});db[_0x74f1('0xe9')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'foreignKey':_0x74f1('0x1ab'),'as':'ToAgent'});db[_0x74f1('0xe9')][_0x74f1('0xf9')](db['OpenchannelQueue'],{'foreignKey':_0x74f1('0x1b8'),'as':_0x74f1('0x1ad')});db[_0x74f1('0xe9')][_0x74f1('0xf9')](db[_0x74f1('0x58')],{'foreignKey':_0x74f1('0x1b9'),'as':_0x74f1('0x1af')});db[_0x74f1('0x1ba')][_0x74f1('0xf9')](db[_0x74f1('0x159')],{});db[_0x74f1('0x1ba')][_0x74f1('0xf9')](db[_0x74f1('0x53')],{});db[_0x74f1('0x1ba')]['belongsTo'](db[_0x74f1('0x4f')],{'foreignKey':_0x74f1('0x1bb'),'as':_0x74f1('0x1a9')});db[_0x74f1('0x1ba')][_0x74f1('0xf9')](db[_0x74f1('0x11')],{'foreignKey':_0x74f1('0x1b2'),'as':'FromAgent'});db[_0x74f1('0x1ba')][_0x74f1('0xf9')](db['User'],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x74f1('0x1ba')][_0x74f1('0xf9')](db['SmsQueue'],{'foreignKey':_0x74f1('0x1bc'),'as':_0x74f1('0x1ad')});db['SmsTransferReport']['belongsTo'](db[_0x74f1('0x4f')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList'][_0x74f1('0xf4')](db[_0x74f1('0x83')],{'as':_0x74f1('0x13e'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0xec')][_0x74f1('0xf4')](db[_0x74f1('0x1bd')],{'as':_0x74f1('0x1be'),'foreignKey':'ListId'});db[_0x74f1('0xec')][_0x74f1('0xf4')](db[_0x74f1('0x72')],{'as':_0x74f1('0xfe'),'onDelete':_0x74f1('0x11f'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0xec')][_0x74f1('0xf4')](db[_0x74f1('0x78')],{'as':_0x74f1('0x16f'),'foreignKey':_0x74f1('0x144')});db[_0x74f1('0xec')][_0x74f1('0xf4')](db[_0x74f1('0x125')],{'as':_0x74f1('0xf7'),'foreignKey':_0x74f1('0x144')});db['CmList'][_0x74f1('0xf4')](db['ReportAgentPreview'],{'as':_0x74f1('0x7b'),'foreignKey':_0x74f1('0x144')});db['CmList'][_0x74f1('0xfb')](db[_0x74f1('0x1b')],{'as':'Queues','through':_0x74f1('0x12d')});db['CmList'][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':'Agents','through':_0x74f1('0x101')});db['VoicePrefix'][_0x74f1('0xf4')](db['VoiceExtension'],{'as':_0x74f1('0xf6'),'onDelete':_0x74f1('0x14d')});db['VoicePrefix'][_0x74f1('0xfb')](db[_0x74f1('0x11')],{'as':'Agents','through':_0x74f1('0x10f')});db['UserProfile']['hasMany'](db[_0x74f1('0x11')],{'as':'Users','foreignKey':_0x74f1('0xfa')});db['UserProfile']['hasMany'](db[_0x74f1('0xf1')],{'as':_0x74f1('0x1bf'),'foreignKey':_0x74f1('0xfa'),'onDelete':_0x74f1('0x11f')});db[_0x74f1('0xf1')][_0x74f1('0xf4')](db[_0x74f1('0x1c0')],{'as':_0x74f1('0x1c1'),'foreignKey':_0x74f1('0x1c2'),'onDelete':_0x74f1('0x11f')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index a40dffa..bb25b93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5438=['./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','./api/migration','/api/attachments','./api/attachment','./api/plugin','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','./api/faxTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/auth/local','./api/authLocal','/api/auth/google','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','/api/system','./api/system','/api/pm2','./api/pm2','/apidoc','static','/www','join','root','/snippet','snippet','1.0.10','/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','express','util','./config/environment','./config/logger','api','auth','default','use','logger','format','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','method','headers','x-forwarded-for','connection','url','responseTime','user','role','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','body','agent_id','remoteAddress','statusCode','device','other','agent_name','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','/api/voice/mails','./api/voiceMail','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','./api/mailInteraction','/api/mail/messages','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','./api/openchannelQueue','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','/api/automations','/api/canned_answers','./api/cannedAnswer','/api/dispositions','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/tags','./api/tag','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','./api/analyticDefaultReport','/api/analytics/extracted_reports'];(function(_0x252751,_0x543b81){var _0x56e1b1=function(_0x2c8deb){while(--_0x2c8deb){_0x252751['push'](_0x252751['shift']());}};_0x56e1b1(++_0x543b81);}(_0x5438,0x171));var _0x8543=function(_0x22f137,_0x3d0b72){_0x22f137=_0x22f137-0x0;var _0x5d1395=_0x5438[_0x22f137];return _0x5d1395;};'use strict';var path=require('path');var express=require(_0x8543('0x0'));var ewinston=require('express-winston');var util=require(_0x8543('0x1'));var errors=require('./errors');var config=require(_0x8543('0x2'));var logger=require(_0x8543('0x3'))(_0x8543('0x4'));var authLogger=require('./config/logger')(_0x8543('0x5'));exports[_0x8543('0x6')]=function(_0x5177da){_0x5177da[_0x8543('0x7')](ewinston[_0x8543('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x144dc6,_0x3cc375){return util[_0x8543('0x9')](_0x8543('0xa'),_0x144dc6[_0x8543('0xb')],_0x144dc6[_0x8543('0xc')][_0x8543('0xd')]?_0x144dc6['headers'][_0x8543('0xd')]:_0x144dc6[_0x8543('0xe')]['remoteAddress']||_0x144dc6['ip'],_0x144dc6[_0x8543('0xf')],_0x3cc375['statusCode'],_0x3cc375[_0x8543('0x10')],_0x144dc6[_0x8543('0x11')]?_0x144dc6['user']['id']:null,_0x144dc6[_0x8543('0x11')]?_0x144dc6[_0x8543('0x11')]['name']:null,_0x144dc6[_0x8543('0x11')]?_0x144dc6[_0x8543('0x11')][_0x8543('0x12')]:null);}}));_0x5177da[_0x8543('0x7')](ewinston[_0x8543('0x8')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x3c1202,_0x52a55f){var _0x2d2e51=_0x8543('0x13');if(_0x3c1202['body']&&_0x3c1202[_0x8543('0x14')]['device']&&_0x3c1202[_0x8543('0x14')][_0x8543('0x15')]){_0x2d2e51='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x8543('0x9')](_0x2d2e51,_0x3c1202[_0x8543('0xb')],_0x3c1202[_0x8543('0xc')][_0x8543('0xd')]?_0x3c1202[_0x8543('0xc')][_0x8543('0xd')]:_0x3c1202[_0x8543('0xe')][_0x8543('0x16')]||_0x3c1202['ip'],_0x3c1202[_0x8543('0xf')],_0x52a55f[_0x8543('0x17')],_0x52a55f[_0x8543('0x10')],_0x3c1202[_0x8543('0x11')]?_0x3c1202[_0x8543('0x11')]['id']:null,_0x3c1202[_0x8543('0x11')]?_0x3c1202['user']['name']:null,_0x3c1202['user']?_0x3c1202[_0x8543('0x11')][_0x8543('0x12')]:null,_0x3c1202[_0x8543('0x14')]&&_0x3c1202[_0x8543('0x14')]['device']?_0x3c1202[_0x8543('0x14')][_0x8543('0x18')]:_0x8543('0x19'),_0x3c1202[_0x8543('0x14')]&&_0x3c1202[_0x8543('0x14')][_0x8543('0x15')]?_0x3c1202['body']['agent_id']:'',_0x3c1202[_0x8543('0x14')]&&_0x3c1202['body']['agent_name']?_0x3c1202[_0x8543('0x14')][_0x8543('0x1a')]:'');},'ignoreRoute':function(_0x2fc505){var _0x543031=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x543031['test'](_0x2fc505[_0x8543('0xf')]);}}));_0x5177da[_0x8543('0x7')](_0x8543('0x1b'),require(_0x8543('0x1c')));_0x5177da[_0x8543('0x7')](_0x8543('0x1d'),require(_0x8543('0x1e')));_0x5177da[_0x8543('0x7')]('/api/voice/contexts',require(_0x8543('0x1f')));_0x5177da['use'](_0x8543('0x20'),require(_0x8543('0x21')));_0x5177da[_0x8543('0x7')](_0x8543('0x22'),require('./api/voiceMusicOnHold'));_0x5177da[_0x8543('0x7')](_0x8543('0x23'),require(_0x8543('0x24')));_0x5177da['use'](_0x8543('0x25'),require('./api/voiceRecording'));_0x5177da[_0x8543('0x7')](_0x8543('0x26'),require(_0x8543('0x27')));_0x5177da[_0x8543('0x7')]('/api/voice/mails/messages',require(_0x8543('0x28')));_0x5177da[_0x8543('0x7')](_0x8543('0x29'),require(_0x8543('0x2a')));_0x5177da[_0x8543('0x7')]('/api/voice/dials/reports',require(_0x8543('0x2b')));_0x5177da[_0x8543('0x7')](_0x8543('0x2c'),require(_0x8543('0x2d')));_0x5177da[_0x8543('0x7')](_0x8543('0x2e'),require('./api/voiceQueueReport'));_0x5177da[_0x8543('0x7')]('/api/members/reports',require(_0x8543('0x2f')));_0x5177da[_0x8543('0x7')](_0x8543('0x30'),require(_0x8543('0x31')));_0x5177da['use'](_0x8543('0x32'),require(_0x8543('0x33')));_0x5177da['use'](_0x8543('0x34'),require('./api/mailServerOut'));_0x5177da[_0x8543('0x7')]('/api/mail/accounts',require('./api/mailAccount'));_0x5177da[_0x8543('0x7')](_0x8543('0x35'),require(_0x8543('0x36')));_0x5177da[_0x8543('0x7')](_0x8543('0x37'),require(_0x8543('0x38')));_0x5177da[_0x8543('0x7')]('/api/mail/interactions',require(_0x8543('0x39')));_0x5177da[_0x8543('0x7')](_0x8543('0x3a'),require('./api/mailMessage'));_0x5177da['use'](_0x8543('0x3b'),require(_0x8543('0x3c')));_0x5177da['use'](_0x8543('0x3d'),require(_0x8543('0x3e')));_0x5177da[_0x8543('0x7')]('/api/dashboards',require('./api/dashboard'));_0x5177da[_0x8543('0x7')](_0x8543('0x3f'),require(_0x8543('0x40')));_0x5177da[_0x8543('0x7')](_0x8543('0x41'),require(_0x8543('0x42')));_0x5177da[_0x8543('0x7')](_0x8543('0x43'),require(_0x8543('0x44')));_0x5177da[_0x8543('0x7')](_0x8543('0x45'),require(_0x8543('0x46')));_0x5177da[_0x8543('0x7')](_0x8543('0x47'),require(_0x8543('0x48')));_0x5177da[_0x8543('0x7')](_0x8543('0x49'),require('./api/faxQueue'));_0x5177da[_0x8543('0x7')](_0x8543('0x4a'),require(_0x8543('0x4b')));_0x5177da['use'](_0x8543('0x4c'),require(_0x8543('0x4d')));_0x5177da['use'](_0x8543('0x4e'),require(_0x8543('0x4f')));_0x5177da[_0x8543('0x7')]('/api/sms/interactions',require(_0x8543('0x50')));_0x5177da[_0x8543('0x7')](_0x8543('0x51'),require(_0x8543('0x52')));_0x5177da[_0x8543('0x7')](_0x8543('0x53'),require('./api/smsQueue'));_0x5177da[_0x8543('0x7')](_0x8543('0x54'),require(_0x8543('0x55')));_0x5177da[_0x8543('0x7')](_0x8543('0x56'),require(_0x8543('0x57')));_0x5177da[_0x8543('0x7')](_0x8543('0x58'),require(_0x8543('0x59')));_0x5177da[_0x8543('0x7')](_0x8543('0x5a'),require(_0x8543('0x5b')));_0x5177da['use']('/api/openchannel/queues',require(_0x8543('0x5c')));_0x5177da['use']('/api/chat/websites',require(_0x8543('0x5d')));_0x5177da[_0x8543('0x7')](_0x8543('0x5e'),require(_0x8543('0x5f')));_0x5177da[_0x8543('0x7')](_0x8543('0x60'),require(_0x8543('0x61')));_0x5177da['use'](_0x8543('0x62'),require(_0x8543('0x63')));_0x5177da['use'](_0x8543('0x64'),require(_0x8543('0x65')));_0x5177da[_0x8543('0x7')](_0x8543('0x66'),require('./api/chatOfflineMessage'));_0x5177da['use'](_0x8543('0x67'),require(_0x8543('0x68')));_0x5177da[_0x8543('0x7')](_0x8543('0x69'),require(_0x8543('0x6a')));_0x5177da['use'](_0x8543('0x6b'),require(_0x8543('0x6c')));_0x5177da['use'](_0x8543('0x6d'),require(_0x8543('0x6e')));_0x5177da[_0x8543('0x7')](_0x8543('0x6f'),require(_0x8543('0x70')));_0x5177da[_0x8543('0x7')]('/api/cm/hopper',require('./api/cmHopper'));_0x5177da[_0x8543('0x7')](_0x8543('0x71'),require(_0x8543('0x72')));_0x5177da[_0x8543('0x7')](_0x8543('0x73'),require('./api/cmHopperFinal'));_0x5177da['use'](_0x8543('0x74'),require(_0x8543('0x75')));_0x5177da[_0x8543('0x7')](_0x8543('0x76'),require(_0x8543('0x77')));_0x5177da['use'](_0x8543('0x78'),require('./api/action'));_0x5177da['use'](_0x8543('0x79'),require('./api/automation'));_0x5177da[_0x8543('0x7')](_0x8543('0x7a'),require(_0x8543('0x7b')));_0x5177da[_0x8543('0x7')](_0x8543('0x7c'),require('./api/disposition'));_0x5177da['use'](_0x8543('0x7d'),require(_0x8543('0x7e')));_0x5177da['use'](_0x8543('0x7f'),require(_0x8543('0x80')));_0x5177da[_0x8543('0x7')](_0x8543('0x81'),require(_0x8543('0x82')));_0x5177da[_0x8543('0x7')](_0x8543('0x83'),require(_0x8543('0x84')));_0x5177da['use'](_0x8543('0x85'),require(_0x8543('0x86')));_0x5177da[_0x8543('0x7')](_0x8543('0x87'),require(_0x8543('0x88')));_0x5177da[_0x8543('0x7')]('/api/sounds',require('./api/sound'));_0x5177da[_0x8543('0x7')](_0x8543('0x89'),require(_0x8543('0x8a')));_0x5177da['use'](_0x8543('0x8b'),require(_0x8543('0x8c')));_0x5177da['use'](_0x8543('0x8d'),require(_0x8543('0x8e')));_0x5177da[_0x8543('0x7')](_0x8543('0x8f'),require('./api/variable'));_0x5177da[_0x8543('0x7')](_0x8543('0x90'),require(_0x8543('0x91')));_0x5177da['use'](_0x8543('0x92'),require(_0x8543('0x93')));_0x5177da[_0x8543('0x7')]('/api/analytics/custom_reports',require(_0x8543('0x94')));_0x5177da[_0x8543('0x7')]('/api/analytics/default_reports',require(_0x8543('0x95')));_0x5177da['use'](_0x8543('0x96'),require(_0x8543('0x97')));_0x5177da['use'](_0x8543('0x98'),require(_0x8543('0x99')));_0x5177da[_0x8543('0x7')](_0x8543('0x9a'),require(_0x8543('0x9b')));_0x5177da['use']('/api/analytics/tree_reports',require(_0x8543('0x9c')));_0x5177da[_0x8543('0x7')](_0x8543('0x9d'),require('./api/intSalesforceAccount'));_0x5177da[_0x8543('0x7')]('/api/integrations/salesforce/configurations',require('./api/intSalesforceConfiguration'));_0x5177da['use']('/api/integrations/salesforce/fields',require(_0x8543('0x9e')));_0x5177da[_0x8543('0x7')](_0x8543('0x9f'),require(_0x8543('0xa0')));_0x5177da[_0x8543('0x7')](_0x8543('0xa1'),require(_0x8543('0xa2')));_0x5177da[_0x8543('0x7')](_0x8543('0xa3'),require('./api/intSugarcrmField'));_0x5177da[_0x8543('0x7')](_0x8543('0xa4'),require(_0x8543('0xa5')));_0x5177da[_0x8543('0x7')]('/api/integrations/desk/configurations',require(_0x8543('0xa6')));_0x5177da[_0x8543('0x7')](_0x8543('0xa7'),require(_0x8543('0xa8')));_0x5177da['use']('/api/integrations/zoho/accounts',require(_0x8543('0xa9')));_0x5177da['use'](_0x8543('0xaa'),require(_0x8543('0xab')));_0x5177da[_0x8543('0x7')](_0x8543('0xac'),require('./api/intZohoField'));_0x5177da['use'](_0x8543('0xad'),require('./api/intZendeskAccount'));_0x5177da[_0x8543('0x7')]('/api/integrations/zendesk/configurations',require(_0x8543('0xae')));_0x5177da[_0x8543('0x7')](_0x8543('0xaf'),require('./api/intZendeskField'));_0x5177da['use'](_0x8543('0xb0'),require(_0x8543('0xb1')));_0x5177da['use'](_0x8543('0xb2'),require('./api/intFreshdeskConfiguration'));_0x5177da['use'](_0x8543('0xb3'),require(_0x8543('0xb4')));_0x5177da[_0x8543('0x7')](_0x8543('0xb5'),require(_0x8543('0xb6')));_0x5177da[_0x8543('0x7')]('/api/integrations/vtiger/configurations',require(_0x8543('0xb7')));_0x5177da['use'](_0x8543('0xb8'),require(_0x8543('0xb9')));_0x5177da[_0x8543('0x7')](_0x8543('0xba'),require(_0x8543('0xbb')));_0x5177da[_0x8543('0x7')](_0x8543('0xbc'),require(_0x8543('0xbd')));_0x5177da[_0x8543('0x7')](_0x8543('0xbe'),require(_0x8543('0xbf')));_0x5177da[_0x8543('0x7')]('/api/jscripty/answers/reports',require(_0x8543('0xc0')));_0x5177da[_0x8543('0x7')](_0x8543('0xc1'),require(_0x8543('0xc2')));_0x5177da[_0x8543('0x7')](_0x8543('0xc3'),require(_0x8543('0xc4')));_0x5177da['use'](_0x8543('0xc5'),require(_0x8543('0xc6')));_0x5177da[_0x8543('0x7')]('/api/square/reports',require(_0x8543('0xc7')));_0x5177da[_0x8543('0x7')](_0x8543('0xc8'),require(_0x8543('0xc9')));_0x5177da[_0x8543('0x7')](_0x8543('0xca'),require(_0x8543('0xcb')));_0x5177da['use']('/api/settings',require(_0x8543('0xcc')));_0x5177da[_0x8543('0x7')](_0x8543('0xcd'),require(_0x8543('0xce')));_0x5177da[_0x8543('0x7')](_0x8543('0xcf'),require('./api/squareProject'));_0x5177da[_0x8543('0x7')](_0x8543('0xd0'),require(_0x8543('0xd1')));_0x5177da[_0x8543('0x7')](_0x8543('0xd2'),require(_0x8543('0xd3')));_0x5177da['use']('/api/teams',require(_0x8543('0xd4')));_0x5177da[_0x8543('0x7')](_0x8543('0xd5'),require(_0x8543('0xd6')));_0x5177da[_0x8543('0x7')](_0x8543('0xd7'),require(_0x8543('0xd8')));_0x5177da[_0x8543('0x7')]('/api/migrations',require(_0x8543('0xd9')));_0x5177da['use'](_0x8543('0xda'),require(_0x8543('0xdb')));_0x5177da[_0x8543('0x7')]('/api/plugins',require(_0x8543('0xdc')));_0x5177da[_0x8543('0x7')]('/api/mail/reports/transfer',require(_0x8543('0xdd')));_0x5177da['use'](_0x8543('0xde'),require(_0x8543('0xdf')));_0x5177da['use']('/api/fax/reports/transfer',require(_0x8543('0xe0')));_0x5177da['use'](_0x8543('0xe1'),require('./api/openchannelTransferReport'));_0x5177da[_0x8543('0x7')](_0x8543('0xe2'),require('./api/smsTransferReport'));_0x5177da[_0x8543('0x7')]('/api/cm/lists',require('./api/cmList'));_0x5177da[_0x8543('0x7')]('/api/voice/prefixes',require('./api/voicePrefix'));_0x5177da[_0x8543('0x7')](_0x8543('0xe3'),require(_0x8543('0xe4')));_0x5177da[_0x8543('0x7')](_0x8543('0xe5'),require(_0x8543('0xe6')));_0x5177da[_0x8543('0x7')]('/api/userProfile/resources',require(_0x8543('0xe7')));_0x5177da['use'](_0x8543('0xe8'),require(_0x8543('0xe9')));_0x5177da[_0x8543('0x7')](_0x8543('0xea'),require('./api/authGoogle'));_0x5177da[_0x8543('0x7')](_0x8543('0xeb'),require(_0x8543('0xec')));_0x5177da[_0x8543('0x7')](_0x8543('0xed'),require(_0x8543('0xee')));_0x5177da[_0x8543('0x7')](_0x8543('0xef'),require('./api/version'));_0x5177da[_0x8543('0x7')](_0x8543('0xf0'),require(_0x8543('0xf1')));_0x5177da['use'](_0x8543('0xf2'),require(_0x8543('0xf3')));_0x5177da[_0x8543('0x7')](_0x8543('0xf4'),express[_0x8543('0xf5')](path['join'](config['root'],_0x8543('0xf4'))));_0x5177da[_0x8543('0x7')](_0x8543('0xf6'),express['static'](path[_0x8543('0xf7')](config[_0x8543('0xf8')],'/www')));_0x5177da[_0x8543('0x7')]('/demo',express[_0x8543('0xf5')](path['join'](config['root'],'/demo')));_0x5177da[_0x8543('0x7')](_0x8543('0xf9'),express['static'](path[_0x8543('0xf7')](config['root'],_0x8543('0xfa'),_0x8543('0xfb'))));_0x5177da[_0x8543('0x7')](_0x8543('0xfc'),express[_0x8543('0xf5')](path[_0x8543('0xf7')](config['root'],'/server/files/plugins')));_0x5177da[_0x8543('0xfd')](_0x8543('0xfe'))[_0x8543('0xff')](errors[0x194]);_0x5177da[_0x8543('0xfd')]('/*')['get'](function(_0x99099d,_0x425d25){_0x425d25[_0x8543('0x100')](path[_0x8543('0x101')](_0x5177da[_0x8543('0xff')](_0x8543('0x102'))+_0x8543('0x103')));});};
\ No newline at end of file
+var _0x43f3=['./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/team','/api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/mailTransferReport','/api/chat/reports/transfer','/api/fax/reports/transfer','./api/faxTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','./api/rpc','/api/version','./api/version','/api/system','/api/pm2','/apidoc','join','root','/www','/demo','static','/snippet','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','express-winston','util','./errors','./config/environment','./config/logger','api','auth','default','logger','format','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','method','headers','x-forwarded-for','remoteAddress','url','statusCode','responseTime','user','name','role','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','body','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)','connection','other','agent_name','test','use','/api/users','./api/user','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','./api/openchannelMessage','/api/openchannel/queues','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmHopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','/api/templates','./api/template','/api/triggers','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceConfiguration','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','/api/integrations/zoho/fields','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','./api/intVtigerField','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports'];(function(_0x4b1f7e,_0x19d08f){var _0x5c6d3b=function(_0x4387ba){while(--_0x4387ba){_0x4b1f7e['push'](_0x4b1f7e['shift']());}};_0x5c6d3b(++_0x19d08f);}(_0x43f3,0x141));var _0x343f=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x43f3[_0x53ccf2];return _0x5a2964;};'use strict';var path=require(_0x343f('0x0'));var express=require('express');var ewinston=require(_0x343f('0x1'));var util=require(_0x343f('0x2'));var errors=require(_0x343f('0x3'));var config=require(_0x343f('0x4'));var logger=require(_0x343f('0x5'))(_0x343f('0x6'));var authLogger=require(_0x343f('0x5'))(_0x343f('0x7'));exports[_0x343f('0x8')]=function(_0x28ac7f){_0x28ac7f['use'](ewinston[_0x343f('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x29d1f2,_0x4aeab3){return util[_0x343f('0xa')](_0x343f('0xb'),_0x29d1f2[_0x343f('0xc')],_0x29d1f2[_0x343f('0xd')][_0x343f('0xe')]?_0x29d1f2[_0x343f('0xd')][_0x343f('0xe')]:_0x29d1f2['connection'][_0x343f('0xf')]||_0x29d1f2['ip'],_0x29d1f2[_0x343f('0x10')],_0x4aeab3[_0x343f('0x11')],_0x4aeab3[_0x343f('0x12')],_0x29d1f2[_0x343f('0x13')]?_0x29d1f2[_0x343f('0x13')]['id']:null,_0x29d1f2['user']?_0x29d1f2[_0x343f('0x13')][_0x343f('0x14')]:null,_0x29d1f2[_0x343f('0x13')]?_0x29d1f2['user'][_0x343f('0x15')]:null);}}));_0x28ac7f['use'](ewinston[_0x343f('0x9')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x4fe95c,_0x46eac1){var _0x279460=_0x343f('0x16');if(_0x4fe95c[_0x343f('0x17')]&&_0x4fe95c[_0x343f('0x17')][_0x343f('0x18')]&&_0x4fe95c[_0x343f('0x17')][_0x343f('0x19')]){_0x279460=_0x343f('0x1a');}return util[_0x343f('0xa')](_0x279460,_0x4fe95c['method'],_0x4fe95c['headers']['x-forwarded-for']?_0x4fe95c['headers'][_0x343f('0xe')]:_0x4fe95c[_0x343f('0x1b')]['remoteAddress']||_0x4fe95c['ip'],_0x4fe95c[_0x343f('0x10')],_0x46eac1[_0x343f('0x11')],_0x46eac1[_0x343f('0x12')],_0x4fe95c[_0x343f('0x13')]?_0x4fe95c[_0x343f('0x13')]['id']:null,_0x4fe95c['user']?_0x4fe95c[_0x343f('0x13')]['name']:null,_0x4fe95c[_0x343f('0x13')]?_0x4fe95c['user'][_0x343f('0x15')]:null,_0x4fe95c['body']&&_0x4fe95c[_0x343f('0x17')][_0x343f('0x18')]?_0x4fe95c[_0x343f('0x17')][_0x343f('0x18')]:_0x343f('0x1c'),_0x4fe95c[_0x343f('0x17')]&&_0x4fe95c[_0x343f('0x17')]['agent_id']?_0x4fe95c[_0x343f('0x17')][_0x343f('0x19')]:'',_0x4fe95c[_0x343f('0x17')]&&_0x4fe95c[_0x343f('0x17')][_0x343f('0x1d')]?_0x4fe95c['body'][_0x343f('0x1d')]:'');},'ignoreRoute':function(_0x5fa8a7){var _0x448944=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x448944[_0x343f('0x1e')](_0x5fa8a7[_0x343f('0x10')]);}}));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x20'),require(_0x343f('0x21')));_0x28ac7f[_0x343f('0x1f')]('/api/voice/chanspy',require(_0x343f('0x22')));_0x28ac7f[_0x343f('0x1f')]('/api/voice/contexts',require(_0x343f('0x23')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x24'),require(_0x343f('0x25')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x26'),require(_0x343f('0x27')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x28'),require('./api/voiceQueue'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x29'),require('./api/voiceRecording'));_0x28ac7f['use'](_0x343f('0x2a'),require(_0x343f('0x2b')));_0x28ac7f['use'](_0x343f('0x2c'),require(_0x343f('0x2d')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x2e'),require(_0x343f('0x2f')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x30'),require('./api/voiceDialReport'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x31'),require(_0x343f('0x32')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x33'),require(_0x343f('0x34')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x35'),require(_0x343f('0x36')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x37'),require(_0x343f('0x38')));_0x28ac7f['use'](_0x343f('0x39'),require(_0x343f('0x3a')));_0x28ac7f['use']('/api/mail/out_servers',require(_0x343f('0x3b')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x3c'),require(_0x343f('0x3d')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x3e'),require(_0x343f('0x3f')));_0x28ac7f['use'](_0x343f('0x40'),require(_0x343f('0x41')));_0x28ac7f['use']('/api/mail/interactions',require(_0x343f('0x42')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x43'),require(_0x343f('0x44')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x45'),require(_0x343f('0x46')));_0x28ac7f[_0x343f('0x1f')]('/api/mail/reports/queue',require(_0x343f('0x47')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x48'),require(_0x343f('0x49')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x4a'),require(_0x343f('0x4b')));_0x28ac7f[_0x343f('0x1f')]('/api/fax/accounts',require(_0x343f('0x4c')));_0x28ac7f['use']('/api/fax/applications',require(_0x343f('0x4d')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x4e'),require(_0x343f('0x4f')));_0x28ac7f['use'](_0x343f('0x50'),require(_0x343f('0x51')));_0x28ac7f[_0x343f('0x1f')]('/api/fax/queues',require('./api/faxQueue'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x52'),require(_0x343f('0x53')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x54'),require(_0x343f('0x55')));_0x28ac7f[_0x343f('0x1f')]('/api/sms/applications',require(_0x343f('0x56')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x57'),require(_0x343f('0x58')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x59'),require(_0x343f('0x5a')));_0x28ac7f['use'](_0x343f('0x5b'),require(_0x343f('0x5c')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x5d'),require('./api/openchannelAccount'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x5e'),require(_0x343f('0x5f')));_0x28ac7f[_0x343f('0x1f')]('/api/openchannel/interactions',require(_0x343f('0x60')));_0x28ac7f[_0x343f('0x1f')]('/api/openchannel/messages',require(_0x343f('0x61')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x62'),require('./api/openchannelQueue'));_0x28ac7f['use'](_0x343f('0x63'),require(_0x343f('0x64')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x65'),require(_0x343f('0x66')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x67'),require('./api/chatApplication'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x68'),require('./api/chatInteraction'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x69'),require(_0x343f('0x6a')));_0x28ac7f[_0x343f('0x1f')]('/api/chat/offline_messages',require(_0x343f('0x6b')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x6c'),require('./api/chatQueue'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x6d'),require(_0x343f('0x6e')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x6f'),require(_0x343f('0x70')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x71'),require(_0x343f('0x72')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x73'),require('./api/cmContact'));_0x28ac7f[_0x343f('0x1f')]('/api/cm/hopper',require(_0x343f('0x74')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x75'),require('./api/cmHopperBlack'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x76'),require(_0x343f('0x77')));_0x28ac7f['use'](_0x343f('0x78'),require('./api/cmHopperHistory'));_0x28ac7f['use'](_0x343f('0x79'),require('./api/cmCustomField'));_0x28ac7f['use'](_0x343f('0x7a'),require(_0x343f('0x7b')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x7c'),require(_0x343f('0x7d')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x7e'),require(_0x343f('0x7f')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x80'),require(_0x343f('0x81')));_0x28ac7f['use'](_0x343f('0x82'),require(_0x343f('0x83')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x84'),require('./api/interval'));_0x28ac7f['use'](_0x343f('0x85'),require(_0x343f('0x86')));_0x28ac7f['use'](_0x343f('0x87'),require(_0x343f('0x88')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x89'),require(_0x343f('0x8a')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x8b'),require('./api/schedule'));_0x28ac7f['use']('/api/sounds',require('./api/sound'));_0x28ac7f[_0x343f('0x1f')]('/api/tags',require('./api/tag'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x8c'),require(_0x343f('0x8d')));_0x28ac7f['use'](_0x343f('0x8e'),require('./api/trigger'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x8f'),require(_0x343f('0x90')));_0x28ac7f['use'](_0x343f('0x91'),require(_0x343f('0x92')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x93'),require(_0x343f('0x94')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x95'),require(_0x343f('0x96')));_0x28ac7f['use'](_0x343f('0x97'),require(_0x343f('0x98')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x99'),require('./api/analyticExtractedReport'));_0x28ac7f[_0x343f('0x1f')]('/api/analytics/metrics',require(_0x343f('0x9a')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x9b'),require(_0x343f('0x9c')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x9d'),require(_0x343f('0x9e')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0x9f'),require('./api/intSalesforceAccount'));_0x28ac7f[_0x343f('0x1f')]('/api/integrations/salesforce/configurations',require(_0x343f('0xa0')));_0x28ac7f[_0x343f('0x1f')]('/api/integrations/salesforce/fields',require(_0x343f('0xa1')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xa2'),require(_0x343f('0xa3')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xa4'),require('./api/intSugarcrmConfiguration'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xa5'),require(_0x343f('0xa6')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xa7'),require('./api/intDeskAccount'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xa8'),require(_0x343f('0xa9')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xaa'),require(_0x343f('0xab')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xac'),require(_0x343f('0xad')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xae'),require('./api/intZohoConfiguration'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xaf'),require('./api/intZohoField'));_0x28ac7f['use']('/api/integrations/zendesk/accounts',require(_0x343f('0xb0')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xb1'),require(_0x343f('0xb2')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xb3'),require(_0x343f('0xb4')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xb5'),require(_0x343f('0xb6')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xb7'),require(_0x343f('0xb8')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xb9'),require(_0x343f('0xba')));_0x28ac7f['use']('/api/integrations/vtiger/accounts',require(_0x343f('0xbb')));_0x28ac7f['use'](_0x343f('0xbc'),require('./api/intVtigerConfiguration'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xbd'),require(_0x343f('0xbe')));_0x28ac7f[_0x343f('0x1f')]('/api/networks',require(_0x343f('0xbf')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xc0'),require(_0x343f('0xc1')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xc2'),require(_0x343f('0xc3')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xc4'),require('./api/jscriptyAnswerReport'));_0x28ac7f[_0x343f('0x1f')]('/api/jscripty/questions/reports',require(_0x343f('0xc5')));_0x28ac7f['use'](_0x343f('0xc6'),require(_0x343f('0xc7')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xc8'),require(_0x343f('0xc9')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xca'),require(_0x343f('0xcb')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xcc'),require('./api/squareReportDetail'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xcd'),require(_0x343f('0xce')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xcf'),require(_0x343f('0xd0')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xd1'),require('./api/squareOdbc'));_0x28ac7f[_0x343f('0x1f')]('/api/square/projects',require(_0x343f('0xd2')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xd3'),require(_0x343f('0xd4')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xd5'),require('./api/squareMessage'));_0x28ac7f[_0x343f('0x1f')]('/api/teams',require(_0x343f('0xd6')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xd7'),require('./api/license'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xd8'),require(_0x343f('0xd9')));_0x28ac7f['use'](_0x343f('0xda'),require(_0x343f('0xdb')));_0x28ac7f['use'](_0x343f('0xdc'),require('./api/attachment'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xdd'),require('./api/plugin'));_0x28ac7f[_0x343f('0x1f')]('/api/mail/reports/transfer',require(_0x343f('0xde')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xdf'),require('./api/chatTransferReport'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xe0'),require(_0x343f('0xe1')));_0x28ac7f[_0x343f('0x1f')]('/api/openchannel/reports/transfer',require('./api/openchannelTransferReport'));_0x28ac7f['use'](_0x343f('0xe2'),require(_0x343f('0xe3')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xe4'),require(_0x343f('0xe5')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xe6'),require('./api/voicePrefix'));_0x28ac7f['use'](_0x343f('0xe7'),require('./api/userProfile'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xe8'),require(_0x343f('0xe9')));_0x28ac7f[_0x343f('0x1f')]('/api/userProfile/resources',require(_0x343f('0xea')));_0x28ac7f[_0x343f('0x1f')]('/api/auth/local',require(_0x343f('0xeb')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xec'),require(_0x343f('0xed')));_0x28ac7f['use'](_0x343f('0xee'),require(_0x343f('0xef')));_0x28ac7f['use']('/api/rpc',require(_0x343f('0xf0')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xf1'),require(_0x343f('0xf2')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xf3'),require('./api/system'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xf4'),require('./api/pm2'));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xf5'),express['static'](path[_0x343f('0xf6')](config['root'],'/apidoc')));_0x28ac7f[_0x343f('0x1f')]('/www',express['static'](path[_0x343f('0xf6')](config[_0x343f('0xf7')],_0x343f('0xf8'))));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xf9'),express[_0x343f('0xfa')](path['join'](config['root'],'/demo')));_0x28ac7f[_0x343f('0x1f')](_0x343f('0xfb'),express[_0x343f('0xfa')](path['join'](config[_0x343f('0xf7')],'snippet','1.0.10')));_0x28ac7f[_0x343f('0x1f')]('/plugins',express[_0x343f('0xfa')](path[_0x343f('0xf6')](config['root'],_0x343f('0xfc'))));_0x28ac7f[_0x343f('0xfd')](_0x343f('0xfe'))['get'](errors[0x194]);_0x28ac7f[_0x343f('0xfd')]('/*')[_0x343f('0xff')](function(_0x1003f7,_0x2b7049){_0x2b7049[_0x343f('0x100')](path[_0x343f('0x101')](_0x28ac7f[_0x343f('0xff')](_0x343f('0x102'))+_0x343f('0x103')));});};
\ No newline at end of file
index c4bbe17..8cda47c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareRecording/squareRecording.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','server','http','rpc','port','localhost','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','jayson/promise','bluebird','lodash','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.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/faxApplication/faxApplication.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/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc'];(function(_0x21fec0,_0x2f9a99){var _0xcf272e=function(_0x18e35d){while(--_0x18e35d){_0x21fec0['push'](_0x21fec0['shift']());}};_0xcf272e(++_0x2f9a99);}(_0x7a54,0x106));var _0x47a5=function(_0x3da8ef,_0x245a16){_0x3da8ef=_0x3da8ef-0x0;var _0x512c8a=_0x7a54[_0x3da8ef];return _0x512c8a;};'use strict';var jayson=require(_0x47a5('0x0'));var BPromise=require(_0x47a5('0x1'));var _=require(_0x47a5('0x2'));var config=require('../config/environment');exports[_0x47a5('0x3')]=function(){return new BPromise(function(_0x4086cd,_0x4880bf){var _0x5f7f12={};_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x5')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x6')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x7')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x8')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/voiceDialReport/voiceDialReport.rpc'));_0x5f7f12=_['merge'](_0x5f7f12,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x9')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0xa')));_0x5f7f12=_['merge'](_0x5f7f12,require('../api/trunk/trunk.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0xb')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0xc')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0xd')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/mailAccount/mailAccount.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0xe')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0xf')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x10')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x11')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x12')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x13')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x14')));_0x5f7f12=_['merge'](_0x5f7f12,require('../api/faxInteraction/faxInteraction.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/faxMessage/faxMessage.rpc'));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x15')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x16')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x17')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x18')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x19')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x1a')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x1b')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x1c')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x1d')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x1e')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/chatMessage/chatMessage.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x1f')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x20')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/cmHopper/cmHopper.rpc'));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x21')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x22')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x23')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x24')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x25')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x26')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x27')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x28')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x29')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x2a')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x2b')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x2c')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x2d')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x2e')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x2f')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x30')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/squareReport/squareReport.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x31')));_0x5f7f12=_['merge'](_0x5f7f12,require('../api/squareOdbc/squareOdbc.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/squareProject/squareProject.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require(_0x47a5('0x32')));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/squareMessage/squareMessage.rpc'));_0x5f7f12=_[_0x47a5('0x4')](_0x5f7f12,require('../api/campaign/campaign.rpc'));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x33')));_0x5f7f12=_['merge'](_0x5f7f12,require(_0x47a5('0x34')));var _0x5ef577=jayson[_0x47a5('0x35')](_0x5f7f12)[_0x47a5('0x36')]();var _0x38c8d4=config[_0x47a5('0x37')][_0x47a5('0x38')]||config[_0x47a5('0x38')]+0x1;var _0xee582c=config[_0x47a5('0x37')]['ip']||_0x47a5('0x39');_0x5ef577['on']('error',function(_0x396a9a){return _0x4880bf(_0x396a9a);});_0x5ef577[_0x47a5('0x3')](_0x38c8d4,_0xee582c,function(){console['log'](_0x47a5('0x3a'),_0xee582c,_0x38c8d4);require(_0x47a5('0x3b'))[_0x47a5('0x3c')]();return _0x4086cd('RPC\x20listening\x20on\x20'+_0xee582c+':'+_0x38c8d4);});});};
\ No newline at end of file
+var _0x814b=['../api/voiceRecording/voiceRecording.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/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.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','http','rpc','port','localhost','log','../config/triggers','default','jayson/promise','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc'];(function(_0x1669ff,_0x43eb23){var _0x19977f=function(_0x2b47d1){while(--_0x2b47d1){_0x1669ff['push'](_0x1669ff['shift']());}};_0x19977f(++_0x43eb23);}(_0x814b,0x1a2));var _0xb814=function(_0xe56790,_0x5f304d){_0xe56790=_0xe56790-0x0;var _0x145cf7=_0x814b[_0xe56790];return _0x145cf7;};'use strict';var jayson=require(_0xb814('0x0'));var BPromise=require(_0xb814('0x1'));var _=require(_0xb814('0x2'));var config=require(_0xb814('0x3'));exports[_0xb814('0x4')]=function(){return new BPromise(function(_0x477725,_0x4a98af){var _0x38c21a={};_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x6')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x7')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require('../api/voiceQueue/voiceQueue.rpc'));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x8')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x9')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0xa')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0xb')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0xc')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0xd')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0xe')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0xf')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x10')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x11')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x12')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x13')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x14')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x15')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x16')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x17')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x18')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x19')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x1a')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x1b')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x1c')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x38c21a=_['merge'](_0x38c21a,require('../api/smsAccount/smsAccount.rpc'));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require('../api/smsInteraction/smsInteraction.rpc'));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x1d')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x1e')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x1f')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x20')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x21')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x22')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x23')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x24')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x25')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x26')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x27')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x28')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x29')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x2a')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x2b')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x2c')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require('../api/interval/interval.rpc'));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x2d')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x2e')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x2f')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x30')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require('../api/variable/variable.rpc'));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x31')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x32')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x33')));_0x38c21a=_['merge'](_0x38c21a,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x34')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x35')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x36')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x37')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x38')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x39')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x3a')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x3b')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x3c')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x3d')));_0x38c21a=_[_0xb814('0x5')](_0x38c21a,require(_0xb814('0x3e')));_0x38c21a=_['merge'](_0x38c21a,require(_0xb814('0x3f')));var _0xbdb3e9=jayson['server'](_0x38c21a)[_0xb814('0x40')]();var _0x2d0e27=config[_0xb814('0x41')][_0xb814('0x42')]||config[_0xb814('0x42')]+0x1;var _0x467cf9=config['rpc']['ip']||_0xb814('0x43');_0xbdb3e9['on']('error',function(_0x2aaf1c){return _0x4a98af(_0x2aaf1c);});_0xbdb3e9['listen'](_0x2d0e27,_0x467cf9,function(){console[_0xb814('0x44')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x467cf9,_0x2d0e27);require(_0xb814('0x45'))[_0xb814('0x46')]();return _0x477725('RPC\x20listening\x20on\x20'+_0x467cf9+':'+_0x2d0e27);});});};
\ No newline at end of file
index e3eb48a..7e574cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x022d=['BEEP','streamFile','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','lodash','events','EventEmitter','./error','call','utf8','setEncoding','line','toLowerCase','hangup','emit','520-Invalid','search','function','substring','replace','result=','indexOf','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','write','prototype','sendRequest','sync','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','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','SET\x20VARIABLE\x20%s\x20\x22%s\x22','toString','sayNumber','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','wav'];(function(_0x4f51bb,_0x310f52){var _0x20200c=function(_0x2f0117){while(--_0x2f0117){_0x4f51bb['push'](_0x4f51bb['shift']());}};_0x20200c(++_0x310f52);}(_0x022d,0xe0));var _0xd022=function(_0x4615f4,_0x195d4c){_0x4615f4=_0x4615f4-0x0;var _0x3f08e9=_0x022d[_0x4615f4];return _0x3f08e9;};'use strict';var util=require('util');var _=require(_0xd022('0x0'));var EventEmitter=require(_0xd022('0x1'))[_0xd022('0x2')];var AGIReply=require('./reply');var AGIError=require(_0xd022('0x3'));function AGIChannel(_0x4284fd){var _0xc7399e=this,_0xc37796=new AGIReply(),_0x50008f=![],_0x1ba774={};EventEmitter[_0xd022('0x4')](_0xc7399e);_0x4284fd['setEncoding'](_0xd022('0x5'));_0x4284fd['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0xc37796[_0xd022('0x6')](_0xd022('0x5'));_0xc37796['on']('headers',function(_0x19ebb3){for(var _0x3f09f6 in _0x19ebb3){_0xc7399e[_0x3f09f6]=_0x19ebb3[_0x3f09f6];}_0xc7399e['emit']('ready');});_0xc37796['on'](_0xd022('0x7'),function(_0x8396cb){if(_0x8396cb[_0xd022('0x8')]()==_0xd022('0x9')){_0xc7399e[_0xd022('0xa')](_0xd022('0x9'));return;}if(_0x8396cb['substring'](0x0,0xb)==_0xd022('0xb')){_0x50008f=!![];}if(_0x50008f){_0x1ba774['rx']+=_0x8396cb+'\x0a';if(_0x8396cb[_0xd022('0xc')]('520\x20End\x20of\x20proper')!=-0x1){_0x50008f=![];}}else{_0x1ba774['rx']=_0x8396cb;}if(_0x50008f){return;}if(typeof _0x1ba774['cb']==_0xd022('0xd')){var _0x50b969=_0x1ba774['rx'][_0xd022('0xe')](0x0,0x3),_0x2b8059=null,_0x49be18=null;_0x50b969=parseInt(_0x50b969);if(isNaN(_0x50b969)){_0x1ba774['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x50b969!=0xc8){_0x1ba774['cb'](null,{'code':_0x50b969,'result':-0x1,'extra':'KO'});return;}_0x2b8059=_0x1ba774['rx'][_0xd022('0xe')](0x4)[_0xd022('0xf')](_0xd022('0x10'),'');if(_0x2b8059['indexOf']('\x20')!=-0x1){_0x2b8059=_0x2b8059['substr'](0x0,_0x2b8059[_0xd022('0x11')]('\x20'));}if(_['startsWith'](_0x2b8059,'-1')){_0x2b8059=parseInt(_0x2b8059);}_0x49be18=_0x1ba774['rx'][_0xd022('0x12')]('\x20');if(_0x49be18[_0xd022('0x13')]==0x3){_0x49be18=_0x49be18[0x2][_0xd022('0xe')](0x1,_0x49be18[0x2][_0xd022('0x13')]-0x1);}else if(_0x49be18['length']>0x3){var _0x379fd3=/\((.+)\)/;var _0x508533=_0x1ba774['rx'][_0xd022('0x14')](_0x379fd3);if(_0x508533){_0x49be18=_0x508533[0x1];}else{_0x49be18=null;}}else{_0x49be18=null;}_0x1ba774['cb'](null,{'code':_0x50b969,'result':_0x2b8059,'extra':_0x49be18});}});_0x4284fd['on'](_0xd022('0x15'),function(_0x35de95){_0xc7399e['emit'](_0xd022('0x15'),new AGIError(_0xd022('0x16'),_0x35de95[_0xd022('0x17')]));});_0x4284fd['on'](_0xd022('0x18'),function(){_0xc7399e[_0xd022('0xa')](_0xd022('0x18'),new AGIError(_0xd022('0x19')));});_0x4284fd['on'](_0xd022('0x1a'),function(){_0xc7399e['emit']('timeout',new AGIError(_0xd022('0x1b')));_0x4284fd[_0xd022('0x1c')]();});_0x4284fd['pipe'](_0xc37796);this['command']=function(_0x10d564,_0xff7f0d){var _0x10d564=_0x10d564||'',_0xff7f0d=typeof _0xff7f0d==_0xd022('0xd')?_0xff7f0d:new Function();_0x1ba774={'tx':_0x10d564,'rx':'','cb':_0xff7f0d};_0x4284fd[_0xd022('0x1d')](_0x10d564+'\x0a');},this[_0xd022('0x18')]=function(){_0x4284fd['destroy']();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0xd022('0x1e')][_0xd022('0x1f')]=function(_0x39a343){return this['command'][_0xd022('0x20')](this,_0x39a343);};AGIChannel[_0xd022('0x1e')][_0xd022('0x21')]=function(){return this[_0xd022('0x1f')](_0xd022('0x22'));};AGIChannel[_0xd022('0x1e')][_0xd022('0x23')]=function(_0x53ce3d,_0x192dcb,_0x3b8f35){_0x53ce3d=_0x53ce3d===undefined?_0xd022('0x24'):_0x53ce3d;_0x192dcb=_0x192dcb===undefined?'5':_0x192dcb;_0x3b8f35=_0x3b8f35===undefined?'1':_0x3b8f35;return this[_0xd022('0x1f')](util[_0xd022('0x25')](_0xd022('0x26'),_0x53ce3d,_0x192dcb*0x3e8,_0x3b8f35));};AGIChannel[_0xd022('0x1e')][_0xd022('0x27')]=function(_0x5d0860){_0x5d0860=_0x5d0860||_0xd022('0x28');return this[_0xd022('0x1f')](util[_0xd022('0x25')](_0xd022('0x29'),_0x5d0860));};AGIChannel[_0xd022('0x1e')][_0xd022('0x2a')]=function(_0x1baf2e,_0x1e7055){if(_[_0xd022('0x2b')](_0x1e7055)){return this[_0xd022('0x1f')](util[_0xd022('0x25')](_0xd022('0x2c'),_0x1baf2e,_0x1e7055[_0xd022('0x2d')](',')));}return this[_0xd022('0x1f')](util[_0xd022('0x25')]('EXEC\x20%s\x20%s',_0x1baf2e,_0x1e7055));};AGIChannel[_0xd022('0x1e')][_0xd022('0x2e')]=function(_0x5d589f){return this[_0xd022('0x1f')](util[_0xd022('0x25')]('SET\x20CONTEXT\x20%s',_0x5d589f));};AGIChannel['prototype']['setExtension']=function(_0x531ffc){return this[_0xd022('0x1f')](util['format'](_0xd022('0x2f'),_0x531ffc));};AGIChannel[_0xd022('0x1e')][_0xd022('0x30')]=function(_0x42463f){return this[_0xd022('0x1f')](util['format'](_0xd022('0x31'),_0x42463f));};AGIChannel['prototype'][_0xd022('0x9')]=function(){return this['sendRequest'](_0xd022('0x32'));};AGIChannel[_0xd022('0x1e')][_0xd022('0x33')]=function(_0x2b013f,_0x38c947){return this[_0xd022('0x1f')](util[_0xd022('0x25')](_0xd022('0x34'),_0x2b013f,_0x38c947?_0x38c947[_0xd022('0x35')]()[_0xd022('0xf')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xd022('0x36')]=function(_0x210e34,_0xcebe7c){return this[_0xd022('0x1f')](util[_0xd022('0x25')]('SAY\x20NUMBER\x20%s\x20%s',_0x210e34,_0xcebe7c));};AGIChannel['prototype']['sayDigits']=function(_0x32bc65,_0x3f2052){return this[_0xd022('0x1f')](util[_0xd022('0x25')](_0xd022('0x37'),_0x32bc65,_0x3f2052));};AGIChannel[_0xd022('0x1e')][_0xd022('0x38')]=function(_0x507644,_0x220b35){return this[_0xd022('0x1f')](util['format'](_0xd022('0x39'),_0x507644,_0x220b35));};AGIChannel[_0xd022('0x1e')][_0xd022('0x3a')]=function(_0x32ba61,_0x122b68,_0x4c5baf){_0x122b68=_0x122b68||this[_0xd022('0x3b')];_0x4c5baf=_0x4c5baf||0x1;this['setContext'](_0x32ba61);this['setExtension'](_0x122b68);this['setPriority'](_0x4c5baf);return this['noop'](util['format'](_0xd022('0x3c'),_0x32ba61,_0x122b68,_0x4c5baf));};AGIChannel[_0xd022('0x1e')][_0xd022('0x3d')]=function(_0xa52a28){return this[_0xd022('0x1f')](util['format'](_0xd022('0x3e'),_0xa52a28));};AGIChannel[_0xd022('0x1e')]['recordFile']=function(_0x120017,_0x2ea8c9,_0x35b34c,_0xfbbdf1,_0x1b1126,_0x57e40b){_0x2ea8c9=_0x2ea8c9||_0xd022('0x3f');_0x35b34c=_0x35b34c||'';_0xfbbdf1=_0xfbbdf1===undefined?-0x1:_0xfbbdf1==='-1'?-0x1:_0xfbbdf1*0x3e8;_0x1b1126=_0x1b1126===undefined?'':'s='+_0x1b1126;_0x57e40b=_0x57e40b?_0xd022('0x40'):'';return this[_0xd022('0x1f')](util[_0xd022('0x25')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x120017,_0x2ea8c9,_0x35b34c,_0xfbbdf1,_0x57e40b,_0x1b1126));};AGIChannel[_0xd022('0x1e')][_0xd022('0x41')]=function(_0x369db9,_0x2e2d72){_0x2e2d72=_0x2e2d72||'';return this[_0xd022('0x1f')](util[_0xd022('0x25')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x369db9,_0x2e2d72));};AGIChannel[_0xd022('0x1e')]['agi']=function(_0x4bba41){return this[_0xd022('0x2a')](_0xd022('0x42'),_0x4bba41);};AGIChannel[_0xd022('0x1e')][_0xd022('0x43')]=function(_0x7531ec){return this['exec'](_0xd022('0x44'),_0x7531ec);};AGIChannel['prototype'][_0xd022('0x15')]=function(_0x27a2ef,_0x1ecec7){this[_0xd022('0x27')](util['format'](_0xd022('0x45'),_0x27a2ef['id'],_0x27a2ef[_0xd022('0x46')],_0x1ecec7));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xd022('0x47')]=AGIChannel;
\ No newline at end of file
+var _0x5e0a=['utf8','setTimeout','headers','emit','ready','line','hangup','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','replace','result=','substr','indexOf','startsWith','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','prototype','sendRequest','sync','ANSWER','getData','beep','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','format','join','setContext','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','setPriority','HANGUP','setVariable','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setExtension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','wav','BEEP','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','lodash','events','EventEmitter','./error','call','setEncoding'];(function(_0x5bed23,_0x5349c4){var _0x24fd14=function(_0x3a7e13){while(--_0x3a7e13){_0x5bed23['push'](_0x5bed23['shift']());}};_0x24fd14(++_0x5349c4);}(_0x5e0a,0xd7));var _0xa5e0=function(_0x13dd56,_0x2e454e){_0x13dd56=_0x13dd56-0x0;var _0x3b0aba=_0x5e0a[_0x13dd56];return _0x3b0aba;};'use strict';var util=require(_0xa5e0('0x0'));var _=require(_0xa5e0('0x1'));var EventEmitter=require(_0xa5e0('0x2'))[_0xa5e0('0x3')];var AGIReply=require('./reply');var AGIError=require(_0xa5e0('0x4'));function AGIChannel(_0x5451dc){var _0x4db788=this,_0x28f2c2=new AGIReply(),_0x4c9f07=![],_0x358621={};EventEmitter[_0xa5e0('0x5')](_0x4db788);_0x5451dc[_0xa5e0('0x6')](_0xa5e0('0x7'));_0x5451dc[_0xa5e0('0x8')](0x8*0x3c*0x3c*0x3e8);_0x28f2c2[_0xa5e0('0x6')](_0xa5e0('0x7'));_0x28f2c2['on'](_0xa5e0('0x9'),function(_0x41e49d){for(var _0x87457 in _0x41e49d){_0x4db788[_0x87457]=_0x41e49d[_0x87457];}_0x4db788[_0xa5e0('0xa')](_0xa5e0('0xb'));});_0x28f2c2['on'](_0xa5e0('0xc'),function(_0x1a78e7){if(_0x1a78e7['toLowerCase']()==_0xa5e0('0xd')){_0x4db788[_0xa5e0('0xa')](_0xa5e0('0xd'));return;}if(_0x1a78e7['substring'](0x0,0xb)==_0xa5e0('0xe')){_0x4c9f07=!![];}if(_0x4c9f07){_0x358621['rx']+=_0x1a78e7+'\x0a';if(_0x1a78e7[_0xa5e0('0xf')](_0xa5e0('0x10'))!=-0x1){_0x4c9f07=![];}}else{_0x358621['rx']=_0x1a78e7;}if(_0x4c9f07){return;}if(typeof _0x358621['cb']==_0xa5e0('0x11')){var _0x292b2e=_0x358621['rx'][_0xa5e0('0x12')](0x0,0x3),_0x15f88a=null,_0x417df0=null;_0x292b2e=parseInt(_0x292b2e);if(isNaN(_0x292b2e)){_0x358621['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x292b2e!=0xc8){_0x358621['cb'](null,{'code':_0x292b2e,'result':-0x1,'extra':'KO'});return;}_0x15f88a=_0x358621['rx'][_0xa5e0('0x12')](0x4)[_0xa5e0('0x13')](_0xa5e0('0x14'),'');if(_0x15f88a['indexOf']('\x20')!=-0x1){_0x15f88a=_0x15f88a[_0xa5e0('0x15')](0x0,_0x15f88a[_0xa5e0('0x16')]('\x20'));}if(_[_0xa5e0('0x17')](_0x15f88a,'-1')){_0x15f88a=parseInt(_0x15f88a);}_0x417df0=_0x358621['rx']['split']('\x20');if(_0x417df0['length']==0x3){_0x417df0=_0x417df0[0x2]['substring'](0x1,_0x417df0[0x2][_0xa5e0('0x18')]-0x1);}else if(_0x417df0[_0xa5e0('0x18')]>0x3){var _0x407fd1=/\((.+)\)/;var _0x3a7557=_0x358621['rx'][_0xa5e0('0x19')](_0x407fd1);if(_0x3a7557){_0x417df0=_0x3a7557[0x1];}else{_0x417df0=null;}}else{_0x417df0=null;}_0x358621['cb'](null,{'code':_0x292b2e,'result':_0x15f88a,'extra':_0x417df0});}});_0x5451dc['on']('error',function(_0xbabb12){_0x4db788[_0xa5e0('0xa')](_0xa5e0('0x1a'),new AGIError(_0xa5e0('0x1b'),_0xbabb12[_0xa5e0('0x1c')]));});_0x5451dc['on'](_0xa5e0('0x1d'),function(){_0x4db788[_0xa5e0('0xa')](_0xa5e0('0x1d'),new AGIError(_0xa5e0('0x1e')));});_0x5451dc['on'](_0xa5e0('0x1f'),function(){_0x4db788[_0xa5e0('0xa')](_0xa5e0('0x1f'),new AGIError(_0xa5e0('0x20')));_0x5451dc[_0xa5e0('0x21')]();});_0x5451dc[_0xa5e0('0x22')](_0x28f2c2);this[_0xa5e0('0x23')]=function(_0x44432f,_0x34f9fd){var _0x44432f=_0x44432f||'',_0x34f9fd=typeof _0x34f9fd==_0xa5e0('0x11')?_0x34f9fd:new Function();_0x358621={'tx':_0x44432f,'rx':'','cb':_0x34f9fd};_0x5451dc[_0xa5e0('0x24')](_0x44432f+'\x0a');},this['close']=function(){_0x5451dc[_0xa5e0('0x21')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x26')]=function(_0x1a7e06){return this[_0xa5e0('0x23')][_0xa5e0('0x27')](this,_0x1a7e06);};AGIChannel[_0xa5e0('0x25')]['answer']=function(){return this[_0xa5e0('0x26')](_0xa5e0('0x28'));};AGIChannel['prototype'][_0xa5e0('0x29')]=function(_0x495753,_0x45cd2a,_0x36c14d){_0x495753=_0x495753===undefined?_0xa5e0('0x2a'):_0x495753;_0x45cd2a=_0x45cd2a===undefined?'5':_0x45cd2a;_0x36c14d=_0x36c14d===undefined?'1':_0x36c14d;return this[_0xa5e0('0x26')](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x495753,_0x45cd2a*0x3e8,_0x36c14d));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x2b')]=function(_0xc55429){_0xc55429=_0xc55429||_0xa5e0('0x2c');return this[_0xa5e0('0x26')](util['format'](_0xa5e0('0x2d'),_0xc55429));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x2e')]=function(_0x249ec1,_0x3c185f){if(_['isArray'](_0x3c185f)){return this['sendRequest'](util[_0xa5e0('0x2f')]('EXEC\x20%s\x20%s',_0x249ec1,_0x3c185f[_0xa5e0('0x30')](',')));}return this[_0xa5e0('0x26')](util[_0xa5e0('0x2f')]('EXEC\x20%s\x20%s',_0x249ec1,_0x3c185f));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x31')]=function(_0x35d939){return this['sendRequest'](util[_0xa5e0('0x2f')](_0xa5e0('0x32'),_0x35d939));};AGIChannel[_0xa5e0('0x25')]['setExtension']=function(_0x2d898c){return this[_0xa5e0('0x26')](util[_0xa5e0('0x2f')](_0xa5e0('0x33'),_0x2d898c));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x34')]=function(_0x3cb8f5){return this[_0xa5e0('0x26')](util[_0xa5e0('0x2f')]('SET\x20PRIORITY\x20%s',_0x3cb8f5));};AGIChannel['prototype'][_0xa5e0('0xd')]=function(){return this[_0xa5e0('0x26')](_0xa5e0('0x35'));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x36')]=function(_0x25fc80,_0x4f7f8e){return this[_0xa5e0('0x26')](util[_0xa5e0('0x2f')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x25fc80,_0x4f7f8e?_0x4f7f8e[_0xa5e0('0x37')]()[_0xa5e0('0x13')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xa5e0('0x38')]=function(_0x205773,_0x343a15){return this[_0xa5e0('0x26')](util[_0xa5e0('0x2f')](_0xa5e0('0x39'),_0x205773,_0x343a15));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x3a')]=function(_0x593d17,_0x2029db){return this[_0xa5e0('0x26')](util[_0xa5e0('0x2f')]('SAY\x20DIGITS\x20%s\x20%s',_0x593d17,_0x2029db));};AGIChannel['prototype'][_0xa5e0('0x3b')]=function(_0x28f05b,_0xdcfcc4){return this[_0xa5e0('0x26')](util['format'](_0xa5e0('0x3c'),_0x28f05b,_0xdcfcc4));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x3d')]=function(_0x1a72a6,_0x2b1751,_0x2a6ac7){_0x2b1751=_0x2b1751||this['extension'];_0x2a6ac7=_0x2a6ac7||0x1;this['setContext'](_0x1a72a6);this[_0xa5e0('0x3e')](_0x2b1751);this['setPriority'](_0x2a6ac7);return this[_0xa5e0('0x2b')](util[_0xa5e0('0x2f')](_0xa5e0('0x3f'),_0x1a72a6,_0x2b1751,_0x2a6ac7));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x40')]=function(_0x4bf5de){return this[_0xa5e0('0x26')](util[_0xa5e0('0x2f')](_0xa5e0('0x41'),_0x4bf5de));};AGIChannel[_0xa5e0('0x25')]['recordFile']=function(_0x2ef77f,_0x5353b9,_0x269180,_0x302ac9,_0x3af298,_0x4e72bb){_0x5353b9=_0x5353b9||_0xa5e0('0x42');_0x269180=_0x269180||'';_0x302ac9=_0x302ac9===undefined?-0x1:_0x302ac9==='-1'?-0x1:_0x302ac9*0x3e8;_0x3af298=_0x3af298===undefined?'':'s='+_0x3af298;_0x4e72bb=_0x4e72bb?_0xa5e0('0x43'):'';return this['sendRequest'](util[_0xa5e0('0x2f')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x2ef77f,_0x5353b9,_0x269180,_0x302ac9,_0x4e72bb,_0x3af298));};AGIChannel[_0xa5e0('0x25')]['streamFile']=function(_0x5cbe61,_0x1da7e2){_0x1da7e2=_0x1da7e2||'';return this['sendRequest'](util[_0xa5e0('0x2f')](_0xa5e0('0x44'),_0x5cbe61,_0x1da7e2));};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x45')]=function(_0x5acc89){return this['exec']('AGI',_0x5acc89);};AGIChannel[_0xa5e0('0x25')][_0xa5e0('0x46')]=function(_0x2149cc){return this[_0xa5e0('0x2e')](_0xa5e0('0x47'),_0x2149cc);};AGIChannel[_0xa5e0('0x25')]['error']=function(_0xc1cdf7,_0x1a89e7){this['noop'](util['format'](_0xa5e0('0x48'),_0xc1cdf7['id'],_0xc1cdf7[_0xa5e0('0x49')],_0x1a89e7));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index 07da7ab..1dc37c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a49=['Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','push','format','name','util'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x6a49,0xb3));var _0x96a4=function(_0x1673fc,_0x1f5e77){_0x1673fc=_0x1673fc-0x0;var _0x580d19=_0x6a49[_0x1673fc];return _0x580d19;};'use strict';var util=require(_0x96a4('0x0'));var error={'E_AGI_UNDEFINED':_0x96a4('0x1'),'E_AGI_ARGUMENT_PORT':_0x96a4('0x2'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0x96a4('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0x96a4('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x96a4('0x5'),'E_AGI_SOCKET_ERROR':_0x96a4('0x6'),'E_AGI_SOCKET_CLOSE':_0x96a4('0x7'),'E_AGI_SOCKET_TIMEOUT':_0x96a4('0x8'),'E_AGI_COMMAND_EMPTY':_0x96a4('0x9'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x96a4('0xa'),'E_AGI_IVR_ENTRY':_0x96a4('0xb')};function AGIError(_0x5e6a31){var _0x5e6a31=_0x5e6a31||null,_0x5aa333=_0x5aa333||[],_0x2924fa=0x1,_0x4c65e2='';if(!error[_0x5e6a31]){_0x5e6a31='E_AGI_UNDEFINED';}_0x5aa333[_0x96a4('0xc')](error[_0x5e6a31]);while(arguments[_0x2924fa]){_0x5aa333[_0x96a4('0xc')](arguments[_0x2924fa]);_0x2924fa++;}_0x4c65e2=util[_0x96a4('0xd')]['apply'](util,_0x5aa333);this['message']=_0x4c65e2;this[_0x96a4('0xe')]=_0x5e6a31;}module['exports']=AGIError;
\ No newline at end of file
+var _0xed71=['util','Undefined\x20error.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','push','format','apply','message','name','exports'];(function(_0x41d623,_0x512249){var _0x4a6ec5=function(_0x3d57d5){while(--_0x3d57d5){_0x41d623['push'](_0x41d623['shift']());}};_0x4a6ec5(++_0x512249);}(_0xed71,0xb0));var _0x1ed7=function(_0x593683,_0x2b3213){_0x593683=_0x593683-0x0;var _0x44cc39=_0xed71[_0x593683];return _0x44cc39;};'use strict';var util=require(_0x1ed7('0x0'));var error={'E_AGI_UNDEFINED':_0x1ed7('0x1'),'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':_0x1ed7('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0x1ed7('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0x1ed7('0x4'),'E_AGI_SOCKET_ERROR':_0x1ed7('0x5'),'E_AGI_SOCKET_CLOSE':_0x1ed7('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x1ed7('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x1ed7('0x8'),'E_AGI_IVR_ENTRY':_0x1ed7('0x9')};function AGIError(_0x33a8f0){var _0x33a8f0=_0x33a8f0||null,_0xca502=_0xca502||[],_0x20c5b2=0x1,_0x4f1d6c='';if(!error[_0x33a8f0]){_0x33a8f0='E_AGI_UNDEFINED';}_0xca502[_0x1ed7('0xa')](error[_0x33a8f0]);while(arguments[_0x20c5b2]){_0xca502[_0x1ed7('0xa')](arguments[_0x20c5b2]);_0x20c5b2++;}_0x4f1d6c=util[_0x1ed7('0xb')][_0x1ed7('0xc')](util,_0xca502);this[_0x1ed7('0xd')]=_0x4f1d6c;this[_0x1ed7('0xe')]=_0x33a8f0;}module[_0x1ed7('0xf')]=AGIError;
\ No newline at end of file
index 9ca60c4..bd63617 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b17=['agicommand','vswitch','target','default','invalid','traverseBFS','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','agi','getdigits','getsecretdigits','edges','addVertex','vertices','prototype','addEdge','push','numberOfEdges','size','relations','getVertex','stop\x20traverse','length','info','no\x20edge/s\x20available','condition'];(function(_0x5f0314,_0x3bac78){var _0x3707d4=function(_0x529bca){while(--_0x529bca){_0x5f0314['push'](_0x5f0314['shift']());}};_0x3707d4(++_0x3bac78);}(_0x4b17,0x10f));var _0x74b1=function(_0x2bd88d,_0x2d5dc3){_0x2bd88d=_0x2bd88d-0x0;var _0x5516d4=_0x4b17[_0x2bd88d];return _0x5516d4;};'use strict';var _=require(_0x74b1('0x0'));var logger=require('../../../config/logger')(_0x74b1('0x1'));var verticesWithRetry=['menu',_0x74b1('0x2'),_0x74b1('0x3')];var Graph=function(){this['vertices']={};this[_0x74b1('0x4')]={};this['numberOfEdges']=0x0;};Graph['prototype'][_0x74b1('0x5')]=function(_0x30d910){this[_0x74b1('0x6')][_0x30d910['id']]=_0x30d910;this[_0x74b1('0x4')][_0x30d910['id']]=[];};Graph[_0x74b1('0x7')][_0x74b1('0x8')]=function(_0x16761b,_0x4c293c,_0x287e3e){this[_0x74b1('0x4')][_0x16761b][_0x74b1('0x9')]({'target':_0x4c293c,'condition':_0x287e3e});this[_0x74b1('0xa')]+=0x1;};Graph[_0x74b1('0x7')]['size']=function(){return _[_0x74b1('0xb')](this[_0x74b1('0x6')]);};Graph['prototype'][_0x74b1('0xc')]=function(){return this[_0x74b1('0xa')];};Graph[_0x74b1('0x7')][_0x74b1('0xd')]=function(_0x5da02f){return this[_0x74b1('0x6')][_0x5da02f];};Graph['prototype']['traverseBFS']=function(_0x239d04,_0x34d1e2){if(!this['vertices'][_0x239d04]){return logger['info']('no\x20vertex\x20found');}var _0x86390=_0x34d1e2(this['vertices'][_0x239d04]);if(!_0x86390){return logger['info'](_0x74b1('0xe'));}if(this[_0x74b1('0x4')][_0x239d04][_0x74b1('0xf')]===0x0){return logger[_0x74b1('0x10')](_0x74b1('0x11'));}for(var _0x10138e=0x0,_0x528e8c=[],_0x6237be=![];_0x10138e<this[_0x74b1('0x4')][_0x239d04][_0x74b1('0xf')];_0x10138e+=0x1){if(this[_0x74b1('0x4')][_0x239d04][_0x10138e][_0x74b1('0x12')]){_0x528e8c=this[_0x74b1('0x4')][_0x239d04][_0x10138e][_0x74b1('0x12')]['split'](',');for(var _0xd50f0=0x0;_0xd50f0<_0x528e8c[_0x74b1('0xf')];_0xd50f0+=0x1){if(this['vertices'][_0x239d04][_0x74b1('0x13')]===_0x74b1('0x14')&&_0x528e8c[_0xd50f0]==='-'){_0x6237be=this[_0x74b1('0x4')][_0x239d04][_0x10138e][_0x74b1('0x15')];logger[_0x74b1('0x10')](_0x74b1('0x16'),_0x528e8c[_0xd50f0],this[_0x74b1('0x4')][_0x239d04][_0x10138e][_0x74b1('0x15')]);}else if(this['vertices'][_0x239d04][_0x74b1('0x13')]==='menu'&&_0x528e8c[_0xd50f0]==='i'){_0x6237be=this['edges'][_0x239d04][_0x10138e]['target'];logger[_0x74b1('0x10')](_0x74b1('0x17'),_0x528e8c[_0xd50f0],this[_0x74b1('0x4')][_0x239d04][_0x10138e][_0x74b1('0x15')]);}if(_0x528e8c[_0xd50f0]===_0x86390){return this[_0x74b1('0x18')](this['edges'][_0x239d04][_0x10138e][_0x74b1('0x15')],_0x34d1e2);}}}else{return this['traverseBFS'](this[_0x74b1('0x4')][_0x239d04][_0x10138e][_0x74b1('0x15')],_0x34d1e2);}}if(_0x528e8c[_0x74b1('0xf')]){if(this[_0x74b1('0x6')][_0x239d04][_0x74b1('0x13')]===_0x74b1('0x14')){if(_0x6237be){return this[_0x74b1('0x18')](_0x6237be,_0x34d1e2);}return logger[_0x74b1('0x10')]('default\x20on\x20switch\x20not\x20found');}else if(_[_0x74b1('0x19')](verticesWithRetry,this[_0x74b1('0x6')][_0x239d04][_0x74b1('0x13')])){if(_0x86390==='-'){return logger['info'](_0x74b1('0x1a'));}if(_0x6237be&&_0x86390!=='t'){return this[_0x74b1('0x18')](_0x6237be,_0x34d1e2);}return this[_0x74b1('0x18')](_0x239d04,_0x34d1e2);}return logger[_0x74b1('0x10')](_0x74b1('0x1b'));}};module[_0x74b1('0x1c')]=Graph;
\ No newline at end of file
+var _0xd5fc=['traverseBFS','agicommand','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','exports','lodash','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','push','size','relations','getVertex','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','vswitch','target','menu','invalid'];(function(_0x262f73,_0x5450c3){var _0x519cbe=function(_0x31c8b2){while(--_0x31c8b2){_0x262f73['push'](_0x262f73['shift']());}};_0x519cbe(++_0x5450c3);}(_0xd5fc,0xae));var _0xcd5f=function(_0x2aceb5,_0x10e7f4){_0x2aceb5=_0x2aceb5-0x0;var _0x34b772=_0xd5fc[_0x2aceb5];return _0x34b772;};'use strict';var _=require(_0xcd5f('0x0'));var logger=require('../../../config/logger')('agi');var verticesWithRetry=['menu',_0xcd5f('0x1'),_0xcd5f('0x2')];var Graph=function(){this[_0xcd5f('0x3')]={};this[_0xcd5f('0x4')]={};this[_0xcd5f('0x5')]=0x0;};Graph[_0xcd5f('0x6')]['addVertex']=function(_0x3eeb6b){this['vertices'][_0x3eeb6b['id']]=_0x3eeb6b;this[_0xcd5f('0x4')][_0x3eeb6b['id']]=[];};Graph[_0xcd5f('0x6')]['addEdge']=function(_0x58d65d,_0x4e668e,_0x102ce9){this['edges'][_0x58d65d][_0xcd5f('0x7')]({'target':_0x4e668e,'condition':_0x102ce9});this[_0xcd5f('0x5')]+=0x1;};Graph['prototype'][_0xcd5f('0x8')]=function(){return _['size'](this[_0xcd5f('0x3')]);};Graph['prototype'][_0xcd5f('0x9')]=function(){return this[_0xcd5f('0x5')];};Graph[_0xcd5f('0x6')][_0xcd5f('0xa')]=function(_0x53a250){return this[_0xcd5f('0x3')][_0x53a250];};Graph[_0xcd5f('0x6')]['traverseBFS']=function(_0x14125f,_0x2c23a7){if(!this[_0xcd5f('0x3')][_0x14125f]){return logger[_0xcd5f('0xb')](_0xcd5f('0xc'));}var _0x4d2d39=_0x2c23a7(this[_0xcd5f('0x3')][_0x14125f]);if(!_0x4d2d39){return logger[_0xcd5f('0xb')](_0xcd5f('0xd'));}if(this[_0xcd5f('0x4')][_0x14125f][_0xcd5f('0xe')]===0x0){return logger[_0xcd5f('0xb')](_0xcd5f('0xf'));}for(var _0x503ab6=0x0,_0x398e16=[],_0x33ab1a=![];_0x503ab6<this[_0xcd5f('0x4')][_0x14125f][_0xcd5f('0xe')];_0x503ab6+=0x1){if(this['edges'][_0x14125f][_0x503ab6][_0xcd5f('0x10')]){_0x398e16=this['edges'][_0x14125f][_0x503ab6][_0xcd5f('0x10')][_0xcd5f('0x11')](',');for(var _0x48d5bb=0x0;_0x48d5bb<_0x398e16[_0xcd5f('0xe')];_0x48d5bb+=0x1){if(this[_0xcd5f('0x3')][_0x14125f]['agicommand']===_0xcd5f('0x12')&&_0x398e16[_0x48d5bb]==='-'){_0x33ab1a=this['edges'][_0x14125f][_0x503ab6][_0xcd5f('0x13')];logger['info']('default',_0x398e16[_0x48d5bb],this[_0xcd5f('0x4')][_0x14125f][_0x503ab6]['target']);}else if(this['vertices'][_0x14125f]['agicommand']===_0xcd5f('0x14')&&_0x398e16[_0x48d5bb]==='i'){_0x33ab1a=this['edges'][_0x14125f][_0x503ab6][_0xcd5f('0x13')];logger[_0xcd5f('0xb')](_0xcd5f('0x15'),_0x398e16[_0x48d5bb],this[_0xcd5f('0x4')][_0x14125f][_0x503ab6][_0xcd5f('0x13')]);}if(_0x398e16[_0x48d5bb]===_0x4d2d39){return this['traverseBFS'](this[_0xcd5f('0x4')][_0x14125f][_0x503ab6][_0xcd5f('0x13')],_0x2c23a7);}}}else{return this[_0xcd5f('0x16')](this[_0xcd5f('0x4')][_0x14125f][_0x503ab6][_0xcd5f('0x13')],_0x2c23a7);}}if(_0x398e16[_0xcd5f('0xe')]){if(this[_0xcd5f('0x3')][_0x14125f][_0xcd5f('0x17')]===_0xcd5f('0x12')){if(_0x33ab1a){return this[_0xcd5f('0x16')](_0x33ab1a,_0x2c23a7);}return logger[_0xcd5f('0xb')](_0xcd5f('0x18'));}else if(_[_0xcd5f('0x19')](verticesWithRetry,this[_0xcd5f('0x3')][_0x14125f][_0xcd5f('0x17')])){if(_0x4d2d39==='-'){return logger[_0xcd5f('0xb')](_0xcd5f('0x1a'));}if(_0x33ab1a&&_0x4d2d39!=='t'){return this['traverseBFS'](_0x33ab1a,_0x2c23a7);}return this[_0xcd5f('0x16')](_0x14125f,_0x2c23a7);}return logger[_0xcd5f('0xb')]('condition\x20not\x20found');}};module[_0xcd5f('0x1b')]=Graph;
\ No newline at end of file
index af517f4..0a50653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc492=['hangup','production','start','joinAt','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','isUndefined','result','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','vertex','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','Project\x20%s\x20not\x20found','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','port','listening','xml2json','lodash','syncho','../../config/environment','../../config/license/util','./rpc','./graph','agi','defaults','127.0.0.1','nextTick','error','log','format','name','message','[%s]\x20%s','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','info','evtHangup','toJson','mxGraphModel','root','agicommand','hasOwnProperty','maxRetry','retry','addVertex','omit','isArray','length','source','addEdge','target','value','getSquareProject','then','catch','createSquareReport','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','close'];(function(_0x18bd26,_0x714922){var _0x43f738=function(_0x4fc30f){while(--_0x4fc30f){_0x18bd26['push'](_0x18bd26['shift']());}};_0x43f738(++_0x714922);}(_0xc492,0xd7));var _0x2c49=function(_0x422986,_0x23895f){_0x422986=_0x422986-0x0;var _0x5cccd1=_0xc492[_0x422986];return _0x5cccd1;};'use strict';var parser=require(_0x2c49('0x0'));var _=require(_0x2c49('0x1'));var syncho=require(_0x2c49('0x2'));var util=require('util');var moment=require('moment');var config=require(_0x2c49('0x3'));var logger=require('../../config/logger')('agi');var utilLicense=require(_0x2c49('0x4'));var rpc=require(_0x2c49('0x5'));var mailRpc=require('./mailRpc');var Graph=require(_0x2c49('0x6'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x2c49('0x7')]=_[_0x2c49('0x8')](config['agi'],{'ip':_0x2c49('0x9'),'port':0x11dd});function connectionHandler(_0x17f596){process[_0x2c49('0xa')](function(){syncho(function(){try{setChannelVariables(_0x17f596);agiHandler(_0x17f596);}catch(_0x42b3bb){logger[_0x2c49('0xb')](_0x42b3bb['stack']);}});});}function listeningHandler(){console[_0x2c49('0xc')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi']['port']);logger['info'](util[_0x2c49('0xd')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x2c49('0x7')]['ip'],config[_0x2c49('0x7')]['port']));}function errorHandler(_0x110aaf){if(_0x110aaf&&_0x110aaf[_0x2c49('0xe')]&&_0x110aaf[_0x2c49('0xf')]){logger[_0x2c49('0xb')](util[_0x2c49('0xd')](_0x2c49('0x10'),_0x110aaf['name'],_0x110aaf[_0x2c49('0xf')]));}else{logger[_0x2c49('0xb')](util[_0x2c49('0xd')](_0x2c49('0x11'),_0x110aaf[_0x2c49('0x12')]));}}function closeHandler(){logger['info'](util[_0x2c49('0xd')](_0x2c49('0x13'),this[_0x2c49('0x14')],this[_0x2c49('0x15')],this[_0x2c49('0x16')],this[_0x2c49('0x17')],this[_0x2c49('0x18')]));try{createSquareReport(this);}catch(_0x2e2e07){logger[_0x2c49('0xb')](_0x2e2e07[_0x2c49('0x12')]);}}function timeoutHandler(){logger['info'](util[_0x2c49('0xd')](_0x2c49('0x19'),this[_0x2c49('0x14')],this[_0x2c49('0x15')],this['callerid'],this[_0x2c49('0x17')],this['uniqueid']));}function hangupHandler(){logger[_0x2c49('0x1a')](util[_0x2c49('0xd')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0x2c49('0x15')],this[_0x2c49('0x16')],this[_0x2c49('0x17')],this[_0x2c49('0x18')]));this[_0x2c49('0x1b')]=!![];}function getRoot(_0x294c70){return parser[_0x2c49('0x1c')](_0x294c70,{'object':!![]})[_0x2c49('0x1d')][_0x2c49('0x1e')];}function addVertex(_0x54fe21,_0x14ca06,_0x20f3bf){_0x14ca06[_0x2c49('0x1f')]=_0x20f3bf;if(_0x14ca06[_0x2c49('0x20')]('retry')){_0x14ca06[_0x2c49('0x21')]=parseInt(_0x14ca06[_0x2c49('0x22')],0xa);}_0x54fe21[_0x2c49('0x23')](_[_0x2c49('0x24')](_0x14ca06,'mxCell'));}function initGraph(_0x3384f3,_0x18a41e){var _0x25bf3d=new Graph();for(var _0x50da06 in _0x3384f3){if(_0x3384f3[_0x2c49('0x20')](_0x50da06)){if(_[_0x2c49('0x25')](_0x3384f3[_0x50da06])){for(var _0x5039f2=0x0;_0x5039f2<_0x3384f3[_0x50da06][_0x2c49('0x26')];_0x5039f2+=0x1){addVertex(_0x25bf3d,_0x3384f3[_0x50da06][_0x5039f2],_0x50da06);}}else{addVertex(_0x25bf3d,_0x3384f3[_0x50da06],_0x50da06);}}}for(var _0x5d795c=0x0;_0x5d795c<_0x18a41e['length'];_0x5d795c+=0x1){if(_0x18a41e[_0x5d795c][_0x2c49('0x27')]&&_0x18a41e[_0x5d795c]['target']){_0x25bf3d[_0x2c49('0x28')](_0x18a41e[_0x5d795c]['source'],_0x18a41e[_0x5d795c][_0x2c49('0x29')],_0x18a41e[_0x5d795c][_0x2c49('0x2a')]);}}return _0x25bf3d;}function getSquareProject(_0x2b2dd5,_0x42f904){rpc[_0x2c49('0x2b')](_0x2b2dd5)[_0x2c49('0x2c')](function(_0x131c06){_0x42f904(null,_0x131c06);})[_0x2c49('0x2d')](function(_0x184d0d){_0x42f904(null,_0x184d0d);});}function createSquareReport(_0x42c4fb,_0x5c7f5b){rpc[_0x2c49('0x2e')](_0x42c4fb)['then'](function(_0x20ebca){if(_0x5c7f5b){_0x5c7f5b(null,_0x20ebca);}})[_0x2c49('0x2d')](function(_0x1df70f){if(_0x5c7f5b){_0x5c7f5b(null,_0x1df70f);}});}function setChannelVariables(_0xdaed9b){for(var _0x37c400 in _0xdaed9b){if(_0xdaed9b[_0x2c49('0x20')](_0x37c400)){if(_0x37c400[_0x2c49('0x2f')](_0x2c49('0x30'))===0x0){_0xdaed9b[_0x37c400[_0x2c49('0x31')](0x4)]=_0xdaed9b[_0x37c400];delete _0xdaed9b[_0x37c400];}}}}function getLogFromObject(_0x2c1b30){return util[_0x2c49('0x32')](_0x2c1b30,{'showHidden':![],'depth':null});}function agiHandler(_0x47af63){var _0x24aed5,_0x1d8a5d,_0x4f4345,_0x51c8f9,_0x1dc911;logger[_0x2c49('0x33')]('variables',JSON[_0x2c49('0x34')](_0x47af63,null,0x2));logger[_0x2c49('0x1a')](util[_0x2c49('0xd')](_0x2c49('0x35'),_0x47af63[_0x2c49('0x14')],_0x47af63[_0x2c49('0x15')],_0x47af63[_0x2c49('0x16')],_0x47af63[_0x2c49('0x17')],_0x47af63['uniqueid']));_0x47af63['on'](_0x2c49('0xb'),errorHandler);_0x47af63['on'](_0x2c49('0x36'),closeHandler);_0x47af63['on']('timeout',timeoutHandler);_0x47af63[_0x2c49('0x1b')]=![];_0x47af63['on'](_0x2c49('0x37'),hangupHandler);var _0xddfe1a=getSquareProject['sync'](null,_0x47af63[_0x2c49('0x14')]);if(_0xddfe1a){if(_0xddfe1a[_0x2c49('0x38')]){_0x24aed5=getRoot(_0xddfe1a[_0x2c49('0x38')]);if(_0x24aed5&&_0x24aed5[_0x2c49('0x39')]){logger[_0x2c49('0x33')](_0x2c49('0x1e'),JSON['stringify'](_0x24aed5,null,0x2));_0x47af63[_0x2c49('0x3a')]=moment()[_0x2c49('0xd')]('YYYY-MM-DD\x20HH:mm:ss');_0x1d8a5d=initGraph(_[_0x2c49('0x24')](_0x24aed5,_0x2c49('0x3b')),_0x24aed5['mxCell']);_0x4f4345=new Vertices(_0x47af63,rpc,mailRpc);logger[_0x2c49('0x1a')](util['format'](_0x2c49('0x3c'),_0x47af63[_0x2c49('0x14')],_0x47af63[_0x2c49('0x15')],_0x47af63['callerid'],_0x47af63[_0x2c49('0x17')],_0x47af63['uniqueid']));_0x1d8a5d[_0x2c49('0x3d')](_0x24aed5[_0x2c49('0x39')]['id'],function(_0x24e53a){try{_0x24e53a=_0x4f4345[_0x2c49('0x3e')](_0x24e53a);logger[_0x2c49('0x33')]('vertex',JSON[_0x2c49('0x34')](_0x24e53a,null,0x2));if(_0x24e53a[_0x2c49('0x1f')]===_0x2c49('0x3f')){logger[_0x2c49('0x1a')](_0x2c49('0x40'));_0x47af63[_0x2c49('0x41')]=_0x24e53a[_0x2c49('0x41')]||_0x47af63[_0x2c49('0x41')];_0x47af63['extension']=_0x24e53a[_0x2c49('0x42')];_0x47af63[_0x2c49('0x43')]=_0x24e53a['priority']?_0x24e53a[_0x2c49('0x43')]-0x1:0x1;return null;}else if(_0x24e53a&&_0x4f4345[_0x24e53a[_0x2c49('0x1f')]]){_0x1dc911=_0x4f4345[_0x24e53a['agicommand']](_0x24e53a);logger[_0x2c49('0x1a')]('response',JSON['stringify'](_0x1dc911,null,0x2));if(_0x1dc911&&_0x1dc911['code']===AGI_CODE_SUCCESS&&_0x1dc911['result']!==AGI_RESULT_ERROR&&!_0x47af63[_0x2c49('0x1b')]){logger[_0x2c49('0x33')](_0x2c49('0x44'),getLogFromObject(_0x1dc911));return _[_0x2c49('0x45')](_0x1dc911[_0x2c49('0x46')])?null:_0x1dc911['result']['toString']();}else{logger['error']('response',getLogFromObject(_0x1dc911));return null;}}else{logger[_0x2c49('0xb')]('agicommand\x20not\x20found');return null;}}catch(_0x341fd6){logger['error'](_0x341fd6['stack']);return null;}});if(_0x24aed5['finally']){logger[_0x2c49('0x1a')](util['format'](_0x2c49('0x47'),_0x47af63[_0x2c49('0x14')],_0x47af63['calleridname'],_0x47af63['callerid'],_0x47af63[_0x2c49('0x17')],_0x47af63[_0x2c49('0x18')]));_0x1d8a5d[_0x2c49('0x3d')](_0x24aed5[_0x2c49('0x48')]['id'],function(_0x276fcb){try{_0x276fcb=_0x4f4345['clear'](_0x276fcb);logger['debug'](_0x2c49('0x49'),JSON[_0x2c49('0x34')](_0x276fcb,null,0x2));if(_0x276fcb&&_0x4f4345[_0x276fcb['agicommand']]){_0x1dc911=_0x4f4345[_0x276fcb['agicommand']](_0x276fcb);if(_0x1dc911){logger['debug'](_0x2c49('0x44'),getLogFromObject(_0x1dc911));return _[_0x2c49('0x45')](_0x1dc911[_0x2c49('0x46')])?null:_0x1dc911['result'][_0x2c49('0x4a')]();}else{logger[_0x2c49('0xb')](_0x2c49('0x44'),getLogFromObject(_0x1dc911));return null;}}else{logger[_0x2c49('0xb')](_0x2c49('0x4b'));return null;}}catch(_0x146da0){logger[_0x2c49('0xb')](_0x146da0['stack']);return null;}});}logger['info'](util['format'](_0x2c49('0x4c'),_0x47af63[_0x2c49('0x14')],_0x47af63['calleridname'],_0x47af63[_0x2c49('0x16')],_0x47af63[_0x2c49('0x17')],_0x47af63[_0x2c49('0x18')]));logger[_0x2c49('0x1a')](util[_0x2c49('0xd')](_0x2c49('0x4d'),_0x47af63[_0x2c49('0x41')],_0x47af63[_0x2c49('0x42')],parseInt(_0x47af63[_0x2c49('0x43')],0xa)+0x1));_0x47af63[_0x2c49('0x4e')](_0x47af63['context'],_0x47af63[_0x2c49('0x42')],parseInt(_0x47af63[_0x2c49('0x43')],0xa)+0x1);_0x47af63[_0x2c49('0x36')]();}}else{logger['error'](util[_0x2c49('0xd')](_0x2c49('0x4f'),_0x47af63['arg_1']));_0x47af63[_0x2c49('0x4e')](_0x47af63[_0x2c49('0x41')],_0x47af63[_0x2c49('0x42')],parseInt(_0x47af63[_0x2c49('0x43')],0xa)+0x1);_0x47af63['close']();}}else{logger[_0x2c49('0xb')](util[_0x2c49('0xd')](_0x2c49('0x50'),_0x47af63[_0x2c49('0x14')]));_0x47af63['continueAt'](_0x47af63[_0x2c49('0x41')],_0x47af63[_0x2c49('0x42')],parseInt(_0x47af63[_0x2c49('0x43')],0xa)+0x1);_0x47af63[_0x2c49('0x36')]();}}function main(){var _0x8e85ba;return utilLicense[_0x2c49('0x51')]()[_0x2c49('0x2c')](function(_0x2db963){if(_0x2db963){if(_0x2db963[_0x2c49('0x52')]){if(_0x2db963['callysquare']&&_0x2db963['callysquare']>0x0){logger[_0x2c49('0x1a')](util[_0x2c49('0xd')]('[LICENSE]\x20CHANNELS:\x20%s',_0x2db963[_0x2c49('0x53')]));_0x8e85ba=_0x2db963['callysquare'];}else{logger[_0x2c49('0x1a')](_0x2c49('0x54'));}}else{logger[_0x2c49('0x1a')](_0x2c49('0x55'));_0x8e85ba=-0x1;}}})[_0x2c49('0x2d')](function(_0x4a60dc){logger[_0x2c49('0xb')](_0x2c49('0x56'),_0x4a60dc[_0x2c49('0x12')]);})['finally'](function(){var _0x26cbb0=require(_0x2c49('0x57'))(config['agi'][_0x2c49('0x58')],config[_0x2c49('0x7')]['ip'],_0x8e85ba);_0x26cbb0['on']('error',errorHandler);_0x26cbb0['on'](_0x2c49('0x59'),listeningHandler);_0x26cbb0['on']('connection',connectionHandler);_0x26cbb0['on'](_0x2c49('0x36'),closeHandler);});}main();
\ No newline at end of file
+var _0xa9b1=['name','message','[ERROR]\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','toJson','mxGraphModel','root','hasOwnProperty','maxRetry','retry','addVertex','mxCell','length','source','target','getSquareProject','then','catch','createSquareReport','indexOf','agi_','inspect','variables','stringify','close','timeout','hangup','production','start','debug','YYYY-MM-DD\x20HH:mm:ss','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','toString','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','finally','./server','connection','syncho','util','moment','../../config/environment','../../config/logger','agi','./graph','./vertices','defaults','127.0.0.1','nextTick','error','stack','log','port','info','format'];(function(_0xef88d0,_0x1b7c28){var _0x30f513=function(_0x566455){while(--_0x566455){_0xef88d0['push'](_0xef88d0['shift']());}};_0x30f513(++_0x1b7c28);}(_0xa9b1,0x133));var _0x1a9b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa9b1[_0x3dd15e];return _0x231fd0;};'use strict';var parser=require('xml2json');var _=require('lodash');var syncho=require(_0x1a9b('0x0'));var util=require(_0x1a9b('0x1'));var moment=require(_0x1a9b('0x2'));var config=require(_0x1a9b('0x3'));var logger=require(_0x1a9b('0x4'))(_0x1a9b('0x5'));var utilLicense=require('../../config/license/util');var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require(_0x1a9b('0x6'));var Vertices=require(_0x1a9b('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x1a9b('0x5')]=_[_0x1a9b('0x8')](config[_0x1a9b('0x5')],{'ip':_0x1a9b('0x9'),'port':0x11dd});function connectionHandler(_0x263b84){process[_0x1a9b('0xa')](function(){syncho(function(){try{setChannelVariables(_0x263b84);agiHandler(_0x263b84);}catch(_0x29932a){logger[_0x1a9b('0xb')](_0x29932a[_0x1a9b('0xc')]);}});});}function listeningHandler(){console[_0x1a9b('0xd')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0x1a9b('0xe')]);logger[_0x1a9b('0xf')](util[_0x1a9b('0x10')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config['agi']['ip'],config['agi'][_0x1a9b('0xe')]));}function errorHandler(_0x3a49dd){if(_0x3a49dd&&_0x3a49dd[_0x1a9b('0x11')]&&_0x3a49dd[_0x1a9b('0x12')]){logger[_0x1a9b('0xb')](util[_0x1a9b('0x10')]('[%s]\x20%s',_0x3a49dd[_0x1a9b('0x11')],_0x3a49dd[_0x1a9b('0x12')]));}else{logger[_0x1a9b('0xb')](util['format'](_0x1a9b('0x13'),_0x3a49dd[_0x1a9b('0xc')]));}}function closeHandler(){logger['info'](util[_0x1a9b('0x10')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x1a9b('0x14')],this[_0x1a9b('0x15')],this[_0x1a9b('0x16')],this[_0x1a9b('0x17')],this[_0x1a9b('0x18')]));try{createSquareReport(this);}catch(_0x20b8dc){logger[_0x1a9b('0xb')](_0x20b8dc[_0x1a9b('0xc')]);}}function timeoutHandler(){logger[_0x1a9b('0xf')](util[_0x1a9b('0x10')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x1a9b('0x14')],this[_0x1a9b('0x15')],this[_0x1a9b('0x16')],this[_0x1a9b('0x17')],this['uniqueid']));}function hangupHandler(){logger[_0x1a9b('0xf')](util[_0x1a9b('0x10')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x1a9b('0x14')],this[_0x1a9b('0x15')],this[_0x1a9b('0x16')],this[_0x1a9b('0x17')],this[_0x1a9b('0x18')]));this['evtHangup']=!![];}function getRoot(_0x189e78){return parser[_0x1a9b('0x19')](_0x189e78,{'object':!![]})[_0x1a9b('0x1a')][_0x1a9b('0x1b')];}function addVertex(_0x36391a,_0x2e42f1,_0x28f937){_0x2e42f1['agicommand']=_0x28f937;if(_0x2e42f1[_0x1a9b('0x1c')]('retry')){_0x2e42f1[_0x1a9b('0x1d')]=parseInt(_0x2e42f1[_0x1a9b('0x1e')],0xa);}_0x36391a[_0x1a9b('0x1f')](_['omit'](_0x2e42f1,_0x1a9b('0x20')));}function initGraph(_0x3db708,_0x1521f4){var _0x181331=new Graph();for(var _0x18c9dd in _0x3db708){if(_0x3db708[_0x1a9b('0x1c')](_0x18c9dd)){if(_['isArray'](_0x3db708[_0x18c9dd])){for(var _0x3f7807=0x0;_0x3f7807<_0x3db708[_0x18c9dd][_0x1a9b('0x21')];_0x3f7807+=0x1){addVertex(_0x181331,_0x3db708[_0x18c9dd][_0x3f7807],_0x18c9dd);}}else{addVertex(_0x181331,_0x3db708[_0x18c9dd],_0x18c9dd);}}}for(var _0x566fb4=0x0;_0x566fb4<_0x1521f4[_0x1a9b('0x21')];_0x566fb4+=0x1){if(_0x1521f4[_0x566fb4][_0x1a9b('0x22')]&&_0x1521f4[_0x566fb4]['target']){_0x181331['addEdge'](_0x1521f4[_0x566fb4][_0x1a9b('0x22')],_0x1521f4[_0x566fb4][_0x1a9b('0x23')],_0x1521f4[_0x566fb4]['value']);}}return _0x181331;}function getSquareProject(_0x30278b,_0x4071dd){rpc[_0x1a9b('0x24')](_0x30278b)[_0x1a9b('0x25')](function(_0x1a5085){_0x4071dd(null,_0x1a5085);})[_0x1a9b('0x26')](function(_0x26949c){_0x4071dd(null,_0x26949c);});}function createSquareReport(_0x5ed1e3,_0x3ba2fe){rpc[_0x1a9b('0x27')](_0x5ed1e3)[_0x1a9b('0x25')](function(_0x4185ad){if(_0x3ba2fe){_0x3ba2fe(null,_0x4185ad);}})[_0x1a9b('0x26')](function(_0x284b5f){if(_0x3ba2fe){_0x3ba2fe(null,_0x284b5f);}});}function setChannelVariables(_0xe0dd38){for(var _0x3fadcd in _0xe0dd38){if(_0xe0dd38[_0x1a9b('0x1c')](_0x3fadcd)){if(_0x3fadcd[_0x1a9b('0x28')](_0x1a9b('0x29'))===0x0){_0xe0dd38[_0x3fadcd['substring'](0x4)]=_0xe0dd38[_0x3fadcd];delete _0xe0dd38[_0x3fadcd];}}}}function getLogFromObject(_0x579a34){return util[_0x1a9b('0x2a')](_0x579a34,{'showHidden':![],'depth':null});}function agiHandler(_0x1d0179){var _0x174cda,_0x47f470,_0x248a31,_0x50f835,_0x2595f1;logger['debug'](_0x1a9b('0x2b'),JSON[_0x1a9b('0x2c')](_0x1d0179,null,0x2));logger['info'](util[_0x1a9b('0x10')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x1d0179[_0x1a9b('0x14')],_0x1d0179[_0x1a9b('0x15')],_0x1d0179[_0x1a9b('0x16')],_0x1d0179[_0x1a9b('0x17')],_0x1d0179['uniqueid']));_0x1d0179['on'](_0x1a9b('0xb'),errorHandler);_0x1d0179['on'](_0x1a9b('0x2d'),closeHandler);_0x1d0179['on'](_0x1a9b('0x2e'),timeoutHandler);_0x1d0179['evtHangup']=![];_0x1d0179['on'](_0x1a9b('0x2f'),hangupHandler);var _0x5be8b9=getSquareProject['sync'](null,_0x1d0179[_0x1a9b('0x14')]);if(_0x5be8b9){if(_0x5be8b9[_0x1a9b('0x30')]){_0x174cda=getRoot(_0x5be8b9[_0x1a9b('0x30')]);if(_0x174cda&&_0x174cda[_0x1a9b('0x31')]){logger[_0x1a9b('0x32')](_0x1a9b('0x1b'),JSON[_0x1a9b('0x2c')](_0x174cda,null,0x2));_0x1d0179['joinAt']=moment()[_0x1a9b('0x10')](_0x1a9b('0x33'));_0x47f470=initGraph(_[_0x1a9b('0x34')](_0x174cda,'mxCell'),_0x174cda[_0x1a9b('0x20')]);_0x248a31=new Vertices(_0x1d0179,rpc,mailRpc);logger[_0x1a9b('0xf')](util[_0x1a9b('0x10')](_0x1a9b('0x35'),_0x1d0179['arg_1'],_0x1d0179['calleridname'],_0x1d0179[_0x1a9b('0x16')],_0x1d0179[_0x1a9b('0x17')],_0x1d0179[_0x1a9b('0x18')]));_0x47f470['traverseBFS'](_0x174cda['start']['id'],function(_0x2b9bcf){try{_0x2b9bcf=_0x248a31[_0x1a9b('0x36')](_0x2b9bcf);logger[_0x1a9b('0x32')](_0x1a9b('0x37'),JSON[_0x1a9b('0x2c')](_0x2b9bcf,null,0x2));if(_0x2b9bcf[_0x1a9b('0x38')]===_0x1a9b('0x39')){logger['info'](_0x1a9b('0x3a'));_0x1d0179[_0x1a9b('0x3b')]=_0x2b9bcf[_0x1a9b('0x3b')]||_0x1d0179[_0x1a9b('0x3b')];_0x1d0179[_0x1a9b('0x3c')]=_0x2b9bcf[_0x1a9b('0x3c')];_0x1d0179[_0x1a9b('0x3d')]=_0x2b9bcf[_0x1a9b('0x3d')]?_0x2b9bcf[_0x1a9b('0x3d')]-0x1:0x1;return null;}else if(_0x2b9bcf&&_0x248a31[_0x2b9bcf[_0x1a9b('0x38')]]){_0x2595f1=_0x248a31[_0x2b9bcf[_0x1a9b('0x38')]](_0x2b9bcf);logger[_0x1a9b('0xf')](_0x1a9b('0x3e'),JSON[_0x1a9b('0x2c')](_0x2595f1,null,0x2));if(_0x2595f1&&_0x2595f1[_0x1a9b('0x3f')]===AGI_CODE_SUCCESS&&_0x2595f1[_0x1a9b('0x40')]!==AGI_RESULT_ERROR&&!_0x1d0179['evtHangup']){logger[_0x1a9b('0x32')](_0x1a9b('0x3e'),getLogFromObject(_0x2595f1));return _['isUndefined'](_0x2595f1[_0x1a9b('0x40')])?null:_0x2595f1['result']['toString']();}else{logger[_0x1a9b('0xb')](_0x1a9b('0x3e'),getLogFromObject(_0x2595f1));return null;}}else{logger[_0x1a9b('0xb')](_0x1a9b('0x41'));return null;}}catch(_0x27acf0){logger[_0x1a9b('0xb')](_0x27acf0[_0x1a9b('0xc')]);return null;}});if(_0x174cda['finally']){logger[_0x1a9b('0xf')](util[_0x1a9b('0x10')](_0x1a9b('0x42'),_0x1d0179[_0x1a9b('0x14')],_0x1d0179['calleridname'],_0x1d0179[_0x1a9b('0x16')],_0x1d0179[_0x1a9b('0x17')],_0x1d0179[_0x1a9b('0x18')]));_0x47f470[_0x1a9b('0x43')](_0x174cda['finally']['id'],function(_0x5ae813){try{_0x5ae813=_0x248a31[_0x1a9b('0x36')](_0x5ae813);logger[_0x1a9b('0x32')](_0x1a9b('0x37'),JSON[_0x1a9b('0x2c')](_0x5ae813,null,0x2));if(_0x5ae813&&_0x248a31[_0x5ae813['agicommand']]){_0x2595f1=_0x248a31[_0x5ae813['agicommand']](_0x5ae813);if(_0x2595f1){logger[_0x1a9b('0x32')](_0x1a9b('0x3e'),getLogFromObject(_0x2595f1));return _['isUndefined'](_0x2595f1['result'])?null:_0x2595f1[_0x1a9b('0x40')][_0x1a9b('0x44')]();}else{logger[_0x1a9b('0xb')]('response',getLogFromObject(_0x2595f1));return null;}}else{logger[_0x1a9b('0xb')](_0x1a9b('0x41'));return null;}}catch(_0x437ec9){logger[_0x1a9b('0xb')](_0x437ec9[_0x1a9b('0xc')]);return null;}});}logger[_0x1a9b('0xf')](util[_0x1a9b('0x10')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x1d0179['arg_1'],_0x1d0179['calleridname'],_0x1d0179[_0x1a9b('0x16')],_0x1d0179[_0x1a9b('0x17')],_0x1d0179[_0x1a9b('0x18')]));logger[_0x1a9b('0xf')](util[_0x1a9b('0x10')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x1d0179[_0x1a9b('0x3b')],_0x1d0179[_0x1a9b('0x3c')],parseInt(_0x1d0179[_0x1a9b('0x3d')],0xa)+0x1));_0x1d0179[_0x1a9b('0x45')](_0x1d0179[_0x1a9b('0x3b')],_0x1d0179[_0x1a9b('0x3c')],parseInt(_0x1d0179[_0x1a9b('0x3d')],0xa)+0x1);_0x1d0179[_0x1a9b('0x2d')]();}}else{logger[_0x1a9b('0xb')](util[_0x1a9b('0x10')](_0x1a9b('0x46'),_0x1d0179[_0x1a9b('0x14')]));_0x1d0179[_0x1a9b('0x45')](_0x1d0179[_0x1a9b('0x3b')],_0x1d0179[_0x1a9b('0x3c')],parseInt(_0x1d0179[_0x1a9b('0x3d')],0xa)+0x1);_0x1d0179[_0x1a9b('0x2d')]();}}else{logger[_0x1a9b('0xb')](util[_0x1a9b('0x10')](_0x1a9b('0x47'),_0x1d0179[_0x1a9b('0x14')]));_0x1d0179['continueAt'](_0x1d0179['context'],_0x1d0179[_0x1a9b('0x3c')],parseInt(_0x1d0179[_0x1a9b('0x3d')],0xa)+0x1);_0x1d0179[_0x1a9b('0x2d')]();}}function main(){var _0x13361f;return utilLicense['getLicense']()[_0x1a9b('0x25')](function(_0x4ba93b){if(_0x4ba93b){if(_0x4ba93b[_0x1a9b('0x48')]){if(_0x4ba93b[_0x1a9b('0x49')]&&_0x4ba93b[_0x1a9b('0x49')]>0x0){logger[_0x1a9b('0xf')](util[_0x1a9b('0x10')](_0x1a9b('0x4a'),_0x4ba93b[_0x1a9b('0x49')]));_0x13361f=_0x4ba93b[_0x1a9b('0x49')];}else{logger[_0x1a9b('0xf')](_0x1a9b('0x4b'));}}else{logger[_0x1a9b('0xf')](_0x1a9b('0x4c'));_0x13361f=-0x1;}}})[_0x1a9b('0x26')](function(_0x2d7981){logger[_0x1a9b('0xb')](_0x1a9b('0x4d'),_0x2d7981[_0x1a9b('0xc')]);})[_0x1a9b('0x4e')](function(){var _0x4e4eab=require(_0x1a9b('0x4f'))(config[_0x1a9b('0x5')][_0x1a9b('0xe')],config[_0x1a9b('0x5')]['ip'],_0x13361f);_0x4e4eab['on']('error',errorHandler);_0x4e4eab['on']('listening',listeningHandler);_0x4e4eab['on'](_0x1a9b('0x50'),connectionHandler);_0x4e4eab['on'](_0x1a9b('0x2d'),closeHandler);});}main();
\ No newline at end of file
index 854e5f6..7446c37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','error','message'];(function(_0x107a67,_0x195a5b){var _0x59f632=function(_0x5d1187){while(--_0x5d1187){_0x107a67['push'](_0x107a67['shift']());}};_0x59f632(++_0x195a5b);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var BPromise=require(_0x7995('0x0'));var jayson=require(_0x7995('0x1'));var client=jayson[_0x7995('0x2')][_0x7995('0x3')]({'port':0x232b});function request(_0x5b96eb,_0x86c128){return new BPromise(function(_0x3c58eb,_0x1902b4){return client[_0x7995('0x4')](_0x5b96eb,_0x86c128)['then'](function(_0x744bea){if(_0x744bea[_0x7995('0x5')]){return _0x1902b4(_0x744bea[_0x7995('0x5')][_0x7995('0x6')]);}else{return _0x3c58eb(_0x744bea[_0x7995('0x7')]);}})[_0x7995('0x8')](function(_0x4996ca){return _0x1902b4(_0x4996ca);});});}exports[_0x7995('0x9')]=function(_0x1cad37,_0x4a64f7){return request(_0x7995('0xa'),{'account':_0x1cad37,'message':_0x4a64f7});};
\ No newline at end of file
+var _0x9957=['result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','error','message'];(function(_0x2b86f0,_0xa5917b){var _0x4ce94d=function(_0x3af46c){while(--_0x3af46c){_0x2b86f0['push'](_0x2b86f0['shift']());}};_0x4ce94d(++_0xa5917b);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var BPromise=require(_0x7995('0x0'));var jayson=require(_0x7995('0x1'));var client=jayson[_0x7995('0x2')][_0x7995('0x3')]({'port':0x232b});function request(_0x5b96eb,_0x86c128){return new BPromise(function(_0x3c58eb,_0x1902b4){return client[_0x7995('0x4')](_0x5b96eb,_0x86c128)['then'](function(_0x744bea){if(_0x744bea[_0x7995('0x5')]){return _0x1902b4(_0x744bea[_0x7995('0x5')][_0x7995('0x6')]);}else{return _0x3c58eb(_0x744bea[_0x7995('0x7')]);}})[_0x7995('0x8')](function(_0x4996ca){return _0x1902b4(_0x4996ca);});});}exports[_0x7995('0x9')]=function(_0x1cad37,_0x4a64f7){return request(_0x7995('0xa'),{'account':_0x1cad37,'message':_0x4a64f7});};
\ No newline at end of file
index a33a76d..bd9a49f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['exports','util','stream','Transform','call','_localBuffer','_inBody','inherits','\x0d\x0a\x0d\x0a','toString','substring','length','split','slice','trim','headers','indexOf','emit','line'];(function(_0x5d706f,_0x107ecc){var _0xe30a47=function(_0x2e9578){while(--_0x2e9578){_0x5d706f['push'](_0x5d706f['shift']());}};_0xe30a47(++_0x107ecc);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3cfb2d,_0xabefb1){_0x3cfb2d=_0x3cfb2d-0x0;var _0x50ac92=_0x5f2f[_0x3cfb2d];return _0x50ac92;};'use strict';var util=require(_0xf5f2('0x0'));var Transform=require(_0xf5f2('0x1'))[_0xf5f2('0x2')];function AGIReply(_0x1a7be1){Transform[_0xf5f2('0x3')](this,_0x1a7be1);this[_0xf5f2('0x4')]='';this[_0xf5f2('0x5')]=![];}util[_0xf5f2('0x6')](AGIReply,Transform);AGIReply['prototype']['_transform']=function(_0x1665c7,_0x192215,_0xad7f65){var _0x3eebf6='\x0a',_0x3133bc=['\x0a\x0a',_0xf5f2('0x7')],_0x473100=-0x1,_0x5907aa=-0x1,_0x466882='',_0x46cd9c=0x0,_0x2ec345='',_0x56a69f='';this[_0xf5f2('0x4')]+=_0x1665c7[_0xf5f2('0x8')]();_0x2ec345=this['_localBuffer'];if(!this[_0xf5f2('0x5')]){_0x46cd9c=0x0;while(_0x3133bc[_0x46cd9c]){while((_0x5907aa=_0x2ec345['indexOf'](_0x3133bc[_0x46cd9c]))!=-0x1){_0x466882=_0x3133bc[_0x46cd9c];_0x56a69f=_0x2ec345['substring'](0x0,_0x5907aa);_0x2ec345=_0x2ec345[_0xf5f2('0x9')](_0x5907aa+_0x466882[_0xf5f2('0xa')]);var _0x4b78cd=_0x56a69f[_0xf5f2('0xb')](_0x3eebf6),_0x336f6b=0x0,_0x14b51f={},_0x331482='',_0x3f2997='',_0x59bb6c=-0x1;while(_0x4b78cd[_0x336f6b]){_0x59bb6c=_0x4b78cd[_0x336f6b]['indexOf'](':');if(_0x59bb6c!=-0x1){_0x331482=_0x4b78cd[_0x336f6b][_0xf5f2('0xc')](0x0,_0x59bb6c)[_0xf5f2('0xd')]();_0x3f2997=_0x4b78cd[_0x336f6b][_0xf5f2('0xc')](_0x59bb6c+0x1)[_0xf5f2('0xd')]();if(_0x331482[_0xf5f2('0xa')]>0x0){_0x14b51f[_0x331482]=_0x3f2997;}}else{}_0x336f6b++;}this['emit'](_0xf5f2('0xe'),_0x14b51f);this[_0xf5f2('0x5')]=!![];}_0x46cd9c++;}this[_0xf5f2('0x4')]=_0x2ec345;}else{while((_0x473100=_0x2ec345[_0xf5f2('0xf')](_0x3eebf6))!=-0x1){_0x56a69f=_0x2ec345[_0xf5f2('0x9')](0x0,_0x473100);this[_0xf5f2('0x10')](_0xf5f2('0x11'),_0x56a69f);_0x2ec345=_0x2ec345[_0xf5f2('0x9')](_0x473100+_0x3eebf6[_0xf5f2('0xa')]);}this[_0xf5f2('0x4')]=_0x2ec345;}_0xad7f65();};module[_0xf5f2('0x12')]=AGIReply;
\ No newline at end of file
+var _0xb10b=['call','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','_localBuffer','toString','indexOf','substring','split','trim','slice','length','emit','headers','line','exports','util','Transform'];(function(_0x587fb5,_0x59cb3b){var _0x551105=function(_0x5bbef4){while(--_0x5bbef4){_0x587fb5['push'](_0x587fb5['shift']());}};_0x551105(++_0x59cb3b);}(_0xb10b,0x12a));var _0xbb10=function(_0x521e8d,_0x23a290){_0x521e8d=_0x521e8d-0x0;var _0x518bbd=_0xb10b[_0x521e8d];return _0x518bbd;};'use strict';var util=require(_0xbb10('0x0'));var Transform=require('stream')[_0xbb10('0x1')];function AGIReply(_0x35bc5f){Transform[_0xbb10('0x2')](this,_0x35bc5f);this['_localBuffer']='';this[_0xbb10('0x3')]=![];}util[_0xbb10('0x4')](AGIReply,Transform);AGIReply[_0xbb10('0x5')][_0xbb10('0x6')]=function(_0x49baf4,_0x312b72,_0x481979){var _0x328583='\x0a',_0x3cdd53=['\x0a\x0a',_0xbb10('0x7')],_0x513741=-0x1,_0x1b9e94=-0x1,_0x3fb675='',_0x21370f=0x0,_0x1c3ee5='',_0x2353ef='';this[_0xbb10('0x8')]+=_0x49baf4[_0xbb10('0x9')]();_0x1c3ee5=this['_localBuffer'];if(!this['_inBody']){_0x21370f=0x0;while(_0x3cdd53[_0x21370f]){while((_0x1b9e94=_0x1c3ee5[_0xbb10('0xa')](_0x3cdd53[_0x21370f]))!=-0x1){_0x3fb675=_0x3cdd53[_0x21370f];_0x2353ef=_0x1c3ee5[_0xbb10('0xb')](0x0,_0x1b9e94);_0x1c3ee5=_0x1c3ee5[_0xbb10('0xb')](_0x1b9e94+_0x3fb675['length']);var _0x408248=_0x2353ef[_0xbb10('0xc')](_0x328583),_0x5be7e0=0x0,_0x44fb19={},_0x916a32='',_0x285009='',_0x193a27=-0x1;while(_0x408248[_0x5be7e0]){_0x193a27=_0x408248[_0x5be7e0][_0xbb10('0xa')](':');if(_0x193a27!=-0x1){_0x916a32=_0x408248[_0x5be7e0]['slice'](0x0,_0x193a27)[_0xbb10('0xd')]();_0x285009=_0x408248[_0x5be7e0][_0xbb10('0xe')](_0x193a27+0x1)[_0xbb10('0xd')]();if(_0x916a32[_0xbb10('0xf')]>0x0){_0x44fb19[_0x916a32]=_0x285009;}}else{}_0x5be7e0++;}this[_0xbb10('0x10')](_0xbb10('0x11'),_0x44fb19);this[_0xbb10('0x3')]=!![];}_0x21370f++;}this[_0xbb10('0x8')]=_0x1c3ee5;}else{while((_0x513741=_0x1c3ee5[_0xbb10('0xa')](_0x328583))!=-0x1){_0x2353ef=_0x1c3ee5[_0xbb10('0xb')](0x0,_0x513741);this['emit'](_0xbb10('0x12'),_0x2353ef);_0x1c3ee5=_0x1c3ee5[_0xbb10('0xb')](_0x513741+_0x328583[_0xbb10('0xf')]);}this[_0xbb10('0x8')]=_0x1c3ee5;}_0x481979();};module[_0xbb10('0x13')]=AGIReply;
\ No newline at end of file
index 2168180..e683c59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed92=['ShowSquareProject','production','getMailAccountById','ShowMailAccount','Smtp','name','getSquareProjectById','ShowVoiceQueue','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','ShowInterval','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','arg_2','createSquareRecording','CreateSquareRecording','createSquareMessage','createCmContact','phone','CreateCmContact','getPauseById','agentLogin','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','bluebird','moment','lodash','util','jayson/promise','client','request','then','error','message','result'];(function(_0x51472d,_0x592b0b){var _0x5f00f1=function(_0x4a9b97){while(--_0x4a9b97){_0x51472d['push'](_0x51472d['shift']());}};_0x5f00f1(++_0x592b0b);}(_0xed92,0x1a5));var _0x2ed9=function(_0x249949,_0x2d0bbd){_0x249949=_0x249949-0x0;var _0x206b5e=_0xed92[_0x249949];return _0x206b5e;};'use strict';var BPromise=require(_0x2ed9('0x0'));var moment=require(_0x2ed9('0x1'));var _=require(_0x2ed9('0x2'));var util=require(_0x2ed9('0x3'));var jayson=require(_0x2ed9('0x4'));var client=jayson[_0x2ed9('0x5')]['http']({'port':0x2329});function request(_0x169395,_0x279995){return new BPromise(function(_0x14dbbc,_0x31584d){return client[_0x2ed9('0x6')](_0x169395,_0x279995)[_0x2ed9('0x7')](function(_0x2bbd6e){if(_0x2bbd6e[_0x2ed9('0x8')]){return _0x31584d(_0x2bbd6e['error'][_0x2ed9('0x9')]);}else{return _0x14dbbc(_0x2bbd6e[_0x2ed9('0xa')]);}})['catch'](function(_0x87ab33){return _0x31584d(_0x87ab33);});});}exports['getSquareProject']=function(_0x5c61be){return request(_0x2ed9('0xb'),{'options':{'raw':![],'where':{'name':_0x5c61be},'attributes':[_0x2ed9('0xc')]}});};exports[_0x2ed9('0xd')]=function(_0x5a3e55){return request(_0x2ed9('0xe'),{'options':{'raw':![],'where':{'id':_0x5a3e55},'include':[{'model':'MailServerOut','as':_0x2ed9('0xf')}],'attributes':['id',_0x2ed9('0x10'),'email']}});};exports[_0x2ed9('0x11')]=function(_0x16287b){return request('ShowSquareProject',{'options':{'where':{'id':_0x16287b},'attributes':[_0x2ed9('0x10')]}});};exports['getVoiceQueueById']=function(_0x4047e1){return request(_0x2ed9('0x12'),{'options':{'where':{'id':_0x4047e1},'attributes':[_0x2ed9('0x10')]}});};exports['getVariableById']=function(_0x172569){return request(_0x2ed9('0x13'),{'options':{'where':{'id':_0x172569},'attributes':[_0x2ed9('0x10')]}});};exports[_0x2ed9('0x14')]=function(_0x4abc14){return request(_0x2ed9('0x15'),{'options':{'where':{'id':_0x4abc14},'attributes':[_0x2ed9('0x16')]}});};exports[_0x2ed9('0x17')]=function(_0x16506e){return request(_0x2ed9('0x18'),{'options':{'where':{'id':_0x16506e},'attributes':[_0x2ed9('0x10')]}});};exports[_0x2ed9('0x19')]=function(_0x5f1283){return request(_0x2ed9('0x1a'),{'options':{'where':{'id':_0x5f1283},'attributes':[_0x2ed9('0x10')]}});};exports[_0x2ed9('0x1b')]=function(_0x1b17b5){return request(_0x2ed9('0x1c'),{'options':{'where':{'id':_0x1b17b5},'attributes':[_0x2ed9('0x1d')]}});};exports['getIntervalById']=function(_0x3c3930){return request(_0x2ed9('0x1e'),{'options':{'raw':![],'where':{'id':_0x3c3930},'include':[{'model':_0x2ed9('0x1f'),'as':'Intervals'}]}});};exports[_0x2ed9('0x20')]=function(_0x2241cd){return request(_0x2ed9('0x21'),{'options':{'where':{'id':_0x2241cd},'attributes':['id',_0x2ed9('0x10')]}});};exports[_0x2ed9('0x22')]=function(_0x47ef2d){return request(_0x2ed9('0x23'),{'body':_0x47ef2d});};exports[_0x2ed9('0x24')]=function(_0x2abfa3){return request(_0x2ed9('0x25'),{'body':_0x2abfa3});};exports[_0x2ed9('0x26')]=function(_0xd51684){return request(_0x2ed9('0x27'),{'body':_['merge'](_0xd51684,{'project_name':_0xd51684['arg_1'],'prev_project_name':_0xd51684[_0x2ed9('0x28')]||'','is_subproject':_0xd51684[_0x2ed9('0x28')]?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x2ed9('0x29')]=function(_0x5a448b){return request(_0x2ed9('0x2a'),{'body':_0x5a448b});};exports[_0x2ed9('0x2b')]=function(_0x514cef){return request('CreateSquareMessage',{'body':_0x514cef});};exports[_0x2ed9('0x2c')]=function(_0x4ea556){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x4ea556[_0x2ed9('0x2d')],'ListId':_0x4ea556['ListId']}}})['then'](function(_0x2d012a){if(_0x2d012a){return _0x2d012a;}return request(_0x2ed9('0x2e'),{'body':_0x4ea556});});};exports[_0x2ed9('0x2f')]=function(_0x16bbac){return request('ShowPause',{'options':{'where':{'id':_0x16bbac},'attributes':[_0x2ed9('0x10')]}});};exports[_0x2ed9('0x30')]=function(_0x47bbd9,_0x8591df){return request('LoginUser',{'body':{'interface':_0x8591df},'options':{'where':_0x47bbd9}});};exports['agentPause']=function(_0x569690,_0x17f975,_0x3c9a62){return request(_0x2ed9('0x31'),{'body':{'type':_0x17f975,'uniqueid':_0x3c9a62},'options':{'where':_0x569690}});};exports[_0x2ed9('0x32')]=function(_0x2345f9){return request(_0x2ed9('0x33'),{'body':{},'options':{'where':_0x2345f9}});};exports[_0x2ed9('0x34')]=function(_0x401e2a){return request(_0x2ed9('0x35'),{'body':{},'options':{'where':_0x401e2a}});};
\ No newline at end of file
+var _0xb2af=['getSoundById','ShowSound','save_name','Interval','Intervals','getSmsAccountById','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','merge','arg_1','arg_2','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','ShowPause','LoginUser','agentPause','PauseUser','LogoutUser','bluebird','moment','lodash','util','client','http','request','then','error','message','result','catch','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','ShowTrunk'];(function(_0x2f0798,_0x1f748c){var _0x53585a=function(_0xe620ff){while(--_0xe620ff){_0x2f0798['push'](_0x2f0798['shift']());}};_0x53585a(++_0x1f748c);}(_0xb2af,0xd2));var _0xfb2a=function(_0x43dddc,_0x425b1e){_0x43dddc=_0x43dddc-0x0;var _0x296404=_0xb2af[_0x43dddc];return _0x296404;};'use strict';var BPromise=require(_0xfb2a('0x0'));var moment=require(_0xfb2a('0x1'));var _=require(_0xfb2a('0x2'));var util=require(_0xfb2a('0x3'));var jayson=require('jayson/promise');var client=jayson[_0xfb2a('0x4')][_0xfb2a('0x5')]({'port':0x2329});function request(_0x5aed73,_0x856b1){return new BPromise(function(_0xd63d49,_0x5b7553){return client[_0xfb2a('0x6')](_0x5aed73,_0x856b1)[_0xfb2a('0x7')](function(_0xb1be3f){if(_0xb1be3f['error']){return _0x5b7553(_0xb1be3f[_0xfb2a('0x8')][_0xfb2a('0x9')]);}else{return _0xd63d49(_0xb1be3f[_0xfb2a('0xa')]);}})[_0xfb2a('0xb')](function(_0x2c529e){return _0x5b7553(_0x2c529e);});});}exports[_0xfb2a('0xc')]=function(_0x3d3333){return request(_0xfb2a('0xd'),{'options':{'raw':![],'where':{'name':_0x3d3333},'attributes':[_0xfb2a('0xe')]}});};exports[_0xfb2a('0xf')]=function(_0x2f4f0e){return request(_0xfb2a('0x10'),{'options':{'raw':![],'where':{'id':_0x2f4f0e},'include':[{'model':_0xfb2a('0x11'),'as':_0xfb2a('0x12')}],'attributes':['id',_0xfb2a('0x13'),_0xfb2a('0x14')]}});};exports['getSquareProjectById']=function(_0x4dad44){return request('ShowSquareProject',{'options':{'where':{'id':_0x4dad44},'attributes':[_0xfb2a('0x13')]}});};exports[_0xfb2a('0x15')]=function(_0x422f6f){return request(_0xfb2a('0x16'),{'options':{'where':{'id':_0x422f6f},'attributes':['name']}});};exports[_0xfb2a('0x17')]=function(_0x5b8a45){return request('ShowVariable',{'options':{'where':{'id':_0x5b8a45},'attributes':[_0xfb2a('0x13')]}});};exports['getSquareOdbcById']=function(_0x55ab68){return request(_0xfb2a('0x18'),{'options':{'where':{'id':_0x55ab68},'attributes':[_0xfb2a('0x19')]}});};exports[_0xfb2a('0x1a')]=function(_0x193af1){return request(_0xfb2a('0x1b'),{'options':{'where':{'id':_0x193af1},'attributes':[_0xfb2a('0x13')]}});};exports[_0xfb2a('0x1c')]=function(_0x214051){return request(_0xfb2a('0x1d'),{'options':{'where':{'id':_0x214051},'attributes':['name']}});};exports[_0xfb2a('0x1e')]=function(_0xb5ff5c){return request(_0xfb2a('0x1f'),{'options':{'where':{'id':_0xb5ff5c},'attributes':[_0xfb2a('0x20')]}});};exports['getIntervalById']=function(_0x2644ed){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x2644ed},'include':[{'model':_0xfb2a('0x21'),'as':_0xfb2a('0x22')}]}});};exports[_0xfb2a('0x23')]=function(_0x593291){return request('ShowSmsAccount',{'options':{'where':{'id':_0x593291},'attributes':['id','name']}});};exports['createSmsMessage']=function(_0x16671c){return request(_0xfb2a('0x24'),{'body':_0x16671c});};exports[_0xfb2a('0x25')]=function(_0x3145d3){return request(_0xfb2a('0x26'),{'body':_0x3145d3});};exports[_0xfb2a('0x27')]=function(_0x2a9504){return request(_0xfb2a('0x28'),{'body':_[_0xfb2a('0x29')](_0x2a9504,{'project_name':_0x2a9504[_0xfb2a('0x2a')],'prev_project_name':_0x2a9504['arg_2']||'','is_subproject':_0x2a9504[_0xfb2a('0x2b')]?!![]:![],'leaveAt':moment()['format'](_0xfb2a('0x2c'))})});};exports[_0xfb2a('0x2d')]=function(_0x5726b3){return request(_0xfb2a('0x2e'),{'body':_0x5726b3});};exports[_0xfb2a('0x2f')]=function(_0x4eb16e){return request(_0xfb2a('0x30'),{'body':_0x4eb16e});};exports[_0xfb2a('0x31')]=function(_0x4cdb14){return request(_0xfb2a('0x32'),{'options':{'raw':![],'where':{'phone':_0x4cdb14[_0xfb2a('0x33')],'ListId':_0x4cdb14[_0xfb2a('0x34')]}}})[_0xfb2a('0x7')](function(_0x3f9190){if(_0x3f9190){return _0x3f9190;}return request(_0xfb2a('0x35'),{'body':_0x4cdb14});});};exports[_0xfb2a('0x36')]=function(_0x3f3da3){return request(_0xfb2a('0x37'),{'options':{'where':{'id':_0x3f3da3},'attributes':[_0xfb2a('0x13')]}});};exports['agentLogin']=function(_0xbbf3b4,_0x3a4861){return request(_0xfb2a('0x38'),{'body':{'interface':_0x3a4861},'options':{'where':_0xbbf3b4}});};exports[_0xfb2a('0x39')]=function(_0x34d2b3,_0xe1a1cf,_0x2cecb){return request(_0xfb2a('0x3a'),{'body':{'type':_0xe1a1cf,'uniqueid':_0x2cecb},'options':{'where':_0x34d2b3}});};exports['agentUnpause']=function(_0x225e04){return request('UnpauseUser',{'body':{},'options':{'where':_0x225e04}});};exports['agentLogout']=function(_0x1c3551){return request(_0xfb2a('0x3b'),{'body':{},'options':{'where':_0x1c3551}});};
\ No newline at end of file
index 3205f53..887d068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5401=['./lex','exports'];(function(_0x53ec8d,_0x1559a8){var _0x5f2e74=function(_0x384052){while(--_0x384052){_0x53ec8d['push'](_0x53ec8d['shift']());}};_0x5f2e74(++_0x1559a8);}(_0x5401,0x182));var _0x1540=function(_0x191993,_0x3c4d3c){_0x191993=_0x191993-0x0;var _0x53c1bf=_0x5401[_0x191993];return _0x53c1bf;};var polly=require('./polly');var lex=require(_0x1540('0x0'));module[_0x1540('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xd8dd=['./polly','./lex'];(function(_0x59e821,_0x86c723){var _0x5333f6=function(_0x5dc2c9){while(--_0x5dc2c9){_0x59e821['push'](_0x59e821['shift']());}};_0x5333f6(++_0x86c723);}(_0xd8dd,0xf0));var _0xdd8d=function(_0x50a1f4,_0x27fec6){_0x50a1f4=_0x50a1f4-0x0;var _0xa9555a=_0xd8dd[_0x50a1f4];return _0xa9555a;};var polly=require(_0xdd8d('0x0'));var lex=require(_0xdd8d('0x1'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
index b183c2d..524a6f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var lex=require('./lib/api');module['exports']=function(_0x58f423,_0xb5dfb5,_0x1be610,_0x1b5e18,_0xf1d406,_0x3e22dd){return lex(_0x58f423,_0xb5dfb5,_0x1be610,_0x1b5e18,_0xf1d406,_0x3e22dd);};
\ No newline at end of file
+'use strict';var lex=require('./lib/api');module['exports']=function(_0x412fb1,_0x5ba407,_0x2b8a76,_0x2a0b30,_0x24f912,_0x1bf88c){return lex(_0x412fb1,_0x5ba407,_0x2b8a76,_0x2a0b30,_0x24f912,_0x1bf88c);};
\ No newline at end of file
index af8491b..da6e80a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5077=['slots','hasOwnProperty','slot_','LexRuntime','$LATEST','aws-sdk','postText'];(function(_0x40b4eb,_0x28be81){var _0x1f966d=function(_0x3d8edf){while(--_0x3d8edf){_0x40b4eb['push'](_0x40b4eb['shift']());}};_0x1f966d(++_0x28be81);}(_0x5077,0xfa));var _0x7507=function(_0x12bdab,_0x4e9464){_0x12bdab=_0x12bdab-0x0;var _0x43c056=_0x5077[_0x12bdab];return _0x43c056;};'use strict';var BPromise=require('bluebird');var AWS=require(_0x7507('0x0'));function lexResult(_0x3dd21d,_0x23e518){return new BPromise(function(_0xd40f1f,_0x4833db){_0x3dd21d[_0x7507('0x1')](_0x23e518,function(_0x13c4e0,_0x225f68){if(_0x13c4e0){_0x4833db(_0x13c4e0);}if(_0x225f68[_0x7507('0x2')]){for(const _0x1fd137 in _0x225f68['slots']){if(_0x225f68[_0x7507('0x2')][_0x7507('0x3')](_0x1fd137)){var _0x22dbeb=_0x225f68[_0x7507('0x2')][_0x1fd137];_0x225f68[_0x7507('0x4')+_0x1fd137]=_0x22dbeb;}}}_0xd40f1f(_0x225f68);});});}module['exports']=function(_0x1e2590,_0x3d76d9,_0xb4221a,_0x3288fe,_0x36b358,_0x4bd6c9){var _0xce2162=new AWS[(_0x7507('0x5'))]({'accessKeyId':_0x3d76d9,'secretAccessKey':_0xb4221a,'region':_0x3288fe});var _0x44238e={'botAlias':_0x7507('0x6'),'botName':_0x4bd6c9,'inputText':_0x36b358,'userId':_0x1e2590};return lexResult(_0xce2162,_0x44238e);};
\ No newline at end of file
+var _0x18a8=['$LATEST','bluebird','aws-sdk','postText','slots','hasOwnProperty','slot_','LexRuntime'];(function(_0x5a7f64,_0x347d57){var _0x3d30f1=function(_0x4bd1d6){while(--_0x4bd1d6){_0x5a7f64['push'](_0x5a7f64['shift']());}};_0x3d30f1(++_0x347d57);}(_0x18a8,0x71));var _0x818a=function(_0x5bb233,_0x35363e){_0x5bb233=_0x5bb233-0x0;var _0x4df1f7=_0x18a8[_0x5bb233];return _0x4df1f7;};'use strict';var BPromise=require(_0x818a('0x0'));var AWS=require(_0x818a('0x1'));function lexResult(_0x52b0a9,_0x4a5897){return new BPromise(function(_0x6f46db,_0x2c6da1){_0x52b0a9[_0x818a('0x2')](_0x4a5897,function(_0x231bd7,_0x40c104){if(_0x231bd7){_0x2c6da1(_0x231bd7);}if(_0x40c104['slots']){for(const _0x6fc7b8 in _0x40c104[_0x818a('0x3')]){if(_0x40c104[_0x818a('0x3')][_0x818a('0x4')](_0x6fc7b8)){var _0x26695a=_0x40c104[_0x818a('0x3')][_0x6fc7b8];_0x40c104[_0x818a('0x5')+_0x6fc7b8]=_0x26695a;}}}_0x6f46db(_0x40c104);});});}module['exports']=function(_0x1049f8,_0x4b3ff9,_0x411774,_0x2aebca,_0x20d797,_0x481dad){var _0x390458=new AWS[(_0x818a('0x6'))]({'accessKeyId':_0x4b3ff9,'secretAccessKey':_0x411774,'region':_0x2aebca});var _0x4418b9={'botAlias':_0x818a('0x7'),'botName':_0x481dad,'inputText':_0x20d797,'userId':_0x1049f8};return lexResult(_0x390458,_0x4418b9);};
\ No newline at end of file
index 4484e69..ed82770 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6981=['exports','./lib/api'];(function(_0x53108d,_0x20493c){var _0x19eeee=function(_0x3f5f81){while(--_0x3f5f81){_0x53108d['push'](_0x53108d['shift']());}};_0x19eeee(++_0x20493c);}(_0x6981,0x14d));var _0x1698=function(_0x3f385b,_0x5e93bc){_0x3f385b=_0x3f385b-0x0;var _0x970eb0=_0x6981[_0x3f385b];return _0x970eb0;};'use strict';var polly=require(_0x1698('0x0'));module[_0x1698('0x1')]=function(_0x21a788,_0x2ff6cb,_0x4bebbf,_0x3d91d2,_0x419477,_0x4fc338,_0x44e353){return polly(_0x21a788,_0x2ff6cb,_0x4bebbf,_0x3d91d2,_0x419477,_0x4fc338,_0x44e353);};
\ No newline at end of file
+var _0x692a=['./lib/api'];(function(_0x54706c,_0x4191b3){var _0x2a89f7=function(_0x233435){while(--_0x233435){_0x54706c['push'](_0x54706c['shift']());}};_0x2a89f7(++_0x4191b3);}(_0x692a,0x15b));var _0xa692=function(_0xf0a04b,_0x4d3070){_0xf0a04b=_0xf0a04b-0x0;var _0x4ca916=_0x692a[_0xf0a04b];return _0x4ca916;};'use strict';var polly=require(_0xa692('0x0'));module['exports']=function(_0x195996,_0x4898ff,_0x3d8266,_0x2b9d75,_0x13db3f,_0x1e39bd,_0x374747){return polly(_0x195996,_0x4898ff,_0x3d8266,_0x2b9d75,_0x13db3f,_0x1e39bd,_0x374747);};
\ No newline at end of file
index e69a250..48fcddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4e9=['text','mp3','path','randomstring','aws-sdk','synthesizeSpeech','writeFile','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly'];(function(_0x4401aa,_0x37c719){var _0x1dcf9d=function(_0x334081){while(--_0x334081){_0x4401aa['push'](_0x4401aa['shift']());}};_0x1dcf9d(++_0x37c719);}(_0xd4e9,0xe6));var _0x9d4e=function(_0x1daf39,_0x190625){_0x1daf39=_0x1daf39-0x0;var _0x229375=_0xd4e9[_0x1daf39];return _0x229375;};'use strict';var fs=require('fs');var path=require(_0x9d4e('0x0'));var BPromise=require('bluebird');var rs=require(_0x9d4e('0x1'));var AWS=require(_0x9d4e('0x2'));function pollyResult(_0x404440,_0x1f5597,_0x4f372d){return new BPromise(function(_0x169f8d,_0x384f1f){_0x404440[_0x9d4e('0x3')](_0x1f5597,function(_0x1b2e02,_0x4f2241){if(_0x1b2e02){_0x384f1f(_0x1b2e02);}else if(_0x4f2241){if(_0x4f2241['AudioStream']instanceof Buffer){fs[_0x9d4e('0x4')](_0x4f372d,_0x4f2241[_0x9d4e('0x5')],function(_0x107579){if(_0x107579){_0x384f1f(_0x107579);}else{_0x169f8d();}});}else{_0x384f1f(new Error(_0x9d4e('0x6')));}}else{_0x384f1f(new Error(_0x9d4e('0x7')));}});});}module[_0x9d4e('0x8')]=function(_0x2b3107,_0x11ad9b,_0x448d78,_0x494255,_0x240733,_0x3be9e6,_0x3bc1b9){var _0xb098f4=new AWS[(_0x9d4e('0x9'))]({'accessKeyId':_0x2b3107,'secretAccessKey':_0x11ad9b,'region':_0x448d78});var _0x30cac0={'Text':_0x240733,'TextType':_0x3be9e6||_0x9d4e('0xa'),'OutputFormat':_0x9d4e('0xb'),'VoiceId':_0x494255};return pollyResult(_0xb098f4,_0x30cac0,_0x3bc1b9);};
\ No newline at end of file
+var _0xb75c=['synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird'];(function(_0x337b7a,_0x2666e0){var _0x22cf27=function(_0x6608c7){while(--_0x6608c7){_0x337b7a['push'](_0x337b7a['shift']());}};_0x22cf27(++_0x2666e0);}(_0xb75c,0x1de));var _0xcb75=function(_0x57ae9a,_0xa0c20b){_0x57ae9a=_0x57ae9a-0x0;var _0x32ec44=_0xb75c[_0x57ae9a];return _0x32ec44;};'use strict';var fs=require('fs');var path=require(_0xcb75('0x0'));var BPromise=require(_0xcb75('0x1'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x27dcc9,_0x37d254,_0x5a4017){return new BPromise(function(_0x18148e,_0x230673){_0x27dcc9[_0xcb75('0x2')](_0x37d254,function(_0x3c6b46,_0xd320e0){if(_0x3c6b46){_0x230673(_0x3c6b46);}else if(_0xd320e0){if(_0xd320e0[_0xcb75('0x3')]instanceof Buffer){fs[_0xcb75('0x4')](_0x5a4017,_0xd320e0[_0xcb75('0x3')],function(_0x5aeecc){if(_0x5aeecc){_0x230673(_0x5aeecc);}else{_0x18148e();}});}else{_0x230673(new Error(_0xcb75('0x5')));}}else{_0x230673(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xcb75('0x6')]=function(_0xddd128,_0x34503e,_0x4ca0e0,_0x49dc76,_0x35f60e,_0x539e3e,_0x1b6b40){var _0x5582e2=new AWS[(_0xcb75('0x7'))]({'accessKeyId':_0xddd128,'secretAccessKey':_0x34503e,'region':_0x4ca0e0});var _0x4add38={'Text':_0x35f60e,'TextType':_0x539e3e||_0xcb75('0x8'),'OutputFormat':_0xcb75('0x9'),'VoiceId':_0x49dc76};return pollyResult(_0x5582e2,_0x4add38,_0x1b6b40);};
\ No newline at end of file
index 7331e82..c1f838b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f08=['./lib/api','exports'];(function(_0x3c327d,_0x1c6652){var _0x15bdbe=function(_0x862b16){while(--_0x862b16){_0x3c327d['push'](_0x3c327d['shift']());}};_0x15bdbe(++_0x1c6652);}(_0x4f08,0x194));var _0x84f0=function(_0x328965,_0x1e92ea){_0x328965=_0x328965-0x0;var _0x1b5415=_0x4f08[_0x328965];return _0x1b5415;};'use strict';var asr=require(_0x84f0('0x0'));module[_0x84f0('0x1')]=function(_0x4bff2d,_0x343656,_0x211a1a,_0x5b53ff){return asr(_0x4bff2d,_0x343656,_0x211a1a);};
\ No newline at end of file
+var _0xbee0=['exports'];(function(_0x27c63e,_0x3ca7d4){var _0x403919=function(_0x569ca8){while(--_0x569ca8){_0x27c63e['push'](_0x27c63e['shift']());}};_0x403919(++_0x3ca7d4);}(_0xbee0,0x147));var _0x0bee=function(_0x2f8b2a,_0x49b531){_0x2f8b2a=_0x2f8b2a-0x0;var _0x235505=_0xbee0[_0x2f8b2a];return _0x235505;};'use strict';var asr=require('./lib/api');module[_0x0bee('0x0')]=function(_0x258133,_0x34531f,_0x37fcf4,_0x1e68ef){return asr(_0x258133,_0x34531f,_0x37fcf4);};
\ No newline at end of file
index 61e534f..044e128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebaf=['toString','base64','/v1/speech:recognize?key=','LINEAR16','8000','bluebird','https://speech.googleapis.com','exports','string','length','key\x20should\x20be\x20a\x20string','undefined','readFileSync'];(function(_0x1b393d,_0xa634a8){var _0x5dbc9f=function(_0x5befad){while(--_0x5befad){_0x1b393d['push'](_0x1b393d['shift']());}};_0x5dbc9f(++_0xa634a8);}(_0xebaf,0x1b2));var _0xfeba=function(_0x33dfaa,_0x49e6b0){_0x33dfaa=_0x33dfaa-0x0;var _0x315bc1=_0xebaf[_0x33dfaa];return _0x315bc1;};'use strict';var url=require('url');var BPromise=require(_0xfeba('0x0'));var fs=require('fs');var host=_0xfeba('0x1');module[_0xfeba('0x2')]=function(_0x30ed37,_0x406f48,_0xe76ce0){return new BPromise(function(_0x5ccd17,_0x1f511f){var _0x40ea75;if(typeof _0x30ed37!==_0xfeba('0x3')||_0x30ed37[_0xfeba('0x4')]===0x0){return _0x1f511f('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x406f48!=='string'||_0x406f48[_0xfeba('0x4')]===0x0){return _0x1f511f(_0xfeba('0x5'));}if(typeof _0xe76ce0!==_0xfeba('0x6')&&(typeof _0xe76ce0!==_0xfeba('0x3')||_0xe76ce0['length']===0x0)){return _0x1f511f('lang\x20should\x20be\x20a\x20string');}try{_0x40ea75=fs[_0xfeba('0x7')](_0x30ed37)[_0xfeba('0x8')](_0xfeba('0x9'));}catch(_0x420020){return _0x1f511f(_0x420020);}return _0x5ccd17({'method':'POST','uri':host+_0xfeba('0xa')+_0x406f48,'body':{'config':{'encoding':_0xfeba('0xb'),'sampleRateHertz':_0xfeba('0xc'),'languageCode':_0xe76ce0},'audio':{'content':_0x40ea75}},'json':!![]});});};
\ No newline at end of file
+var _0x7aed=['readFileSync','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','string','length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x7aed,0xc9));var _0xd7ae=function(_0x46c0e2,_0x431822){_0x46c0e2=_0x46c0e2-0x0;var _0x5ab592=_0x7aed[_0x46c0e2];return _0x5ab592;};'use strict';var url=require(_0xd7ae('0x0'));var BPromise=require(_0xd7ae('0x1'));var fs=require('fs');var host=_0xd7ae('0x2');module['exports']=function(_0x424d2d,_0x5b2255,_0x246335){return new BPromise(function(_0x41d19c,_0xc0b866){var _0x186870;if(typeof _0x424d2d!==_0xd7ae('0x3')||_0x424d2d['length']===0x0){return _0xc0b866('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x5b2255!==_0xd7ae('0x3')||_0x5b2255[_0xd7ae('0x4')]===0x0){return _0xc0b866(_0xd7ae('0x5'));}if(typeof _0x246335!==_0xd7ae('0x6')&&(typeof _0x246335!=='string'||_0x246335[_0xd7ae('0x4')]===0x0)){return _0xc0b866(_0xd7ae('0x7'));}try{_0x186870=fs[_0xd7ae('0x8')](_0x424d2d)['toString']('base64');}catch(_0x29240e){return _0xc0b866(_0x29240e);}return _0x41d19c({'method':'POST','uri':host+'/v1/speech:recognize?key='+_0x5b2255,'body':{'config':{'encoding':_0xd7ae('0x9'),'sampleRateHertz':_0xd7ae('0xa'),'languageCode':_0x246335},'audio':{'content':_0x186870}},'json':!![]});});};
\ No newline at end of file
index 10cb4be..762ee43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var asr=require('./asr');module['exports']={'asr':asr};
\ No newline at end of file
+var _0xedd9=['exports'];(function(_0x5caffa,_0x2e4ccf){var _0x5b78e1=function(_0xfd372d){while(--_0xfd372d){_0x5caffa['push'](_0x5caffa['shift']());}};_0x5b78e1(++_0x2e4ccf);}(_0xedd9,0xfc));var _0x9edd=function(_0x1ad75c,_0x1a8426){_0x1ad75c=_0x1ad75c-0x0;var _0x43052e=_0xedd9[_0x1ad75c];return _0x43052e;};var asr=require('./asr');module[_0x9edd('0x0')]={'asr':asr};
\ No newline at end of file
index e94fa88..5a97526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['url','parse','randomstring','sox','request-promise','util','querystring','moment','apiai-promise','md5','./aws','./tilde','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','WHAT_EVER','get','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','https:','data','transcode','wav','error\x20convert','info','finish\x20to\x20convert','start','tmp','.wav','base64','then','readFileSync','toString','googleTTS','resolve','generate','.mp3','goggleTTS\x20path','split','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','catch','message','googleDialogflow','textRequest','stringify','result','source','resolvedQuery','action','fulfillment','score','status','code','metadata','endConversation','isFallbackIntent','tildeASR','asr','Tilde\x20ASR\x20transcription','awsPolly','polly','chmodSync','777','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','freeform=3','nda','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','path','https'];(function(_0x4d337e,_0x2f7eed){var _0x247963=function(_0x3d6564){while(--_0x3d6564){_0x4d337e['push'](_0x4d337e['shift']());}};_0x247963(++_0x2f7eed);}(_0xb10b,0x12a));var _0xbb10=function(_0x441a8b,_0x4c6cc9){_0x441a8b=_0x441a8b-0x0;var _0x367ac5=_0xb10b[_0x441a8b];return _0x367ac5;};'use strict';var fs=require('fs');var path=require(_0xbb10('0x0'));var http=require('http');var https=require(_0xbb10('0x1'));var urlParse=require(_0xbb10('0x2'))[_0xbb10('0x3')];var BPromise=require('bluebird');var rs=require(_0xbb10('0x4'));var sox=require(_0xbb10('0x5'));var rp=require(_0xbb10('0x6'));var util=require(_0xbb10('0x7'));var querystring=require(_0xbb10('0x8'));var moment=require(_0xbb10('0x9'));var tts=require('google-tts-api');var apiai=require(_0xbb10('0xa'));var md5=require(_0xbb10('0xb'));var google=require('./google');var aws=require(_0xbb10('0xc'));var tilde=require(_0xbb10('0xd'));var sestek=require(_0xbb10('0xe'));var logger=require(_0xbb10('0xf'))(_0xbb10('0x10'));var ISPEECH_API=_0xbb10('0x11');function downloadFile(_0x229887,_0xa3adc8){return new BPromise(function(_0x5ab04a,_0x4e47f8){var _0x20bd61=urlParse(_0x229887);var _0x118a74=_0x20bd61[_0xbb10('0x12')]==='https:'?https:http;var _0x408248={'host':_0x20bd61['host'],'path':_0x20bd61[_0xbb10('0x0')],'headers':{'user-agent':_0xbb10('0x13')}};_0x118a74[_0xbb10('0x14')](_0x408248,function(_0x193a27){if(_0x193a27[_0xbb10('0x15')]!==0xc8){logger[_0xbb10('0x16')]('request\x20to\x20'+_0x229887+_0xbb10('0x17')+_0x193a27[_0xbb10('0x15')]+'\x20('+_0x193a27[_0xbb10('0x18')]+')');_0x4e47f8(new Error(_0xbb10('0x19')+_0x229887+_0xbb10('0x17')+_0x193a27[_0xbb10('0x15')]+'\x20('+_0x193a27[_0xbb10('0x18')]+')'));return;}var _0x36b5e8=fs[_0xbb10('0x1a')](_0xa3adc8);_0x36b5e8['on'](_0xbb10('0x1b'),function(){logger['info'](_0xbb10('0x1c'));_0x36b5e8[_0xbb10('0x1d')](_0x5ab04a);});_0x36b5e8['on'](_0xbb10('0x16'),function(_0x42db98){fs[_0xbb10('0x1e')](_0xa3adc8);logger[_0xbb10('0x16')](_0xbb10('0x1f'),_0x42db98);_0x4e47f8(_0x42db98);});_0x193a27[_0xbb10('0x20')](_0x36b5e8);})['on'](_0xbb10('0x16'),function(_0xe1c665){logger['error'](_0xe1c665);_0x4e47f8(_0xe1c665);})[_0xbb10('0x21')]();});}function uploadFile(_0x19f48d){return new BPromise(function(_0x388fab,_0x109908){var _0xdf237d=urlParse(_0x19f48d);var _0x44e563=_0xdf237d['protocol']===_0xbb10('0x22')?https:http;var _0x12ef77={'host':_0xdf237d['host'],'path':_0xdf237d['path'],'headers':{'user-agent':_0xbb10('0x13')}};_0x44e563[_0xbb10('0x14')](_0x12ef77,function(_0x2e911d){if(_0x2e911d[_0xbb10('0x15')]!==0xc8){_0x109908(new Error(_0xbb10('0x19')+_0x19f48d+_0xbb10('0x17')+_0x2e911d[_0xbb10('0x15')]+'\x20('+_0x2e911d[_0xbb10('0x18')]+')'));return;}var _0x7f2377='';_0x2e911d['on'](_0xbb10('0x23'),function(_0x3ba6cd){_0x7f2377+=_0x3ba6cd;});_0x2e911d['on'](_0xbb10('0x21'),function(){_0x388fab(_0x7f2377);});})['on']('error',function(_0x4fedac){_0x109908(_0x4fedac);})['end']();});}function convertFile(_0xc93a04,_0x3c5ae7){return new BPromise(function(_0x2c89b9,_0x4e25ff){var _0x2fdde9=sox[_0xbb10('0x24')](_0xc93a04,_0x3c5ae7,{'sampleRate':0x1f40,'format':_0xbb10('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2fdde9['on'](_0xbb10('0x16'),function(_0x1acce9){logger[_0xbb10('0x16')](_0xbb10('0x26'),_0x1acce9);_0x4e25ff(_0x1acce9);});_0x2fdde9['on']('end',function(){logger[_0xbb10('0x27')](_0xbb10('0x28'));_0x2c89b9();});_0x2fdde9[_0xbb10('0x29')]();});}function base64Decode(_0x2e0249,_0x1d30aa){var _0x2ff4c1=path['resolve'](__dirname,_0xbb10('0x2a'),rs['generate'](0x4)+_0xbb10('0x2b'));fs['writeFileSync'](_0x2ff4c1,_0x2e0249,_0xbb10('0x2c'));return convertFile(_0x2ff4c1,_0x1d30aa)[_0xbb10('0x2d')](function(){try{fs[_0xbb10('0x1e')](_0x2ff4c1);fs['chmodSync'](_0x1d30aa,'777');}catch(_0x4c3744){logger[_0xbb10('0x16')](_0x4c3744);}return _0x1d30aa['split']('.')[0x0];});}function base64Encode(_0x359ad4){var _0x37dde7=fs[_0xbb10('0x2e')](_0x359ad4);return new Buffer(_0x37dde7)[_0xbb10('0x2f')](_0xbb10('0x2c'));}exports[_0xbb10('0x30')]=function(_0xf85197,_0x4975f5){var _0x25acb3,_0x1da9c9;return tts(_0xf85197,_0x4975f5||'en',0x1)[_0xbb10('0x2d')](function(_0x8c1ce6){logger[_0xbb10('0x27')](_0x8c1ce6);_0x25acb3=path[_0xbb10('0x31')](__dirname,_0xbb10('0x2a'),rs[_0xbb10('0x32')](0x4)+_0xbb10('0x33'));return downloadFile(_0x8c1ce6,_0x25acb3);})['then'](function(){_0x1da9c9=path[_0xbb10('0x31')](__dirname,_0xbb10('0x2a'),rs[_0xbb10('0x32')](0x4)+_0xbb10('0x2b'));return convertFile(_0x25acb3,_0x1da9c9);})['then'](function(){try{fs[_0xbb10('0x1e')](_0x25acb3);fs['chmodSync'](_0x1da9c9,'777');}catch(_0x3eb3cc){logger[_0xbb10('0x16')](_0x3eb3cc);}logger[_0xbb10('0x27')](_0xbb10('0x34'),_0x1da9c9[_0xbb10('0x35')]('.')[0x0]);return _0x1da9c9[_0xbb10('0x35')]('.')[0x0];});};exports['googleASR']=function(_0x1e5bbd,_0x25d72f,_0x52de31){return google['asr'](_0x1e5bbd,_0x25d72f,_0x52de31)['then'](function(_0x31bee3){logger[_0xbb10('0x27')](_0x31bee3[_0xbb10('0x36')]);return rp(_0x31bee3);})['then'](function(_0x3c0cd7){var _0x3e8538='';var _0x4345f3=0x0;try{fs['unlink'](_0x1e5bbd);}catch(_0x17b6c5){logger[_0xbb10('0x16')](_0x17b6c5);}if(_0x3c0cd7&&_0x3c0cd7[_0xbb10('0x37')]){_0x3e8538=_0x3c0cd7[_0xbb10('0x37')]['map'](function(_0xd238e9){return _0xd238e9&&_0xd238e9[_0xbb10('0x38')][0x0]&&_0xd238e9['alternatives'][0x0][_0xbb10('0x39')]?_0xd238e9[_0xbb10('0x38')][0x0][_0xbb10('0x39')]:'';})[_0xbb10('0x3a')]('\x0a');_0x4345f3=_0x3c0cd7[_0xbb10('0x37')][_0xbb10('0x3b')](function(_0x5f3d67){return _0x5f3d67&&_0x5f3d67[_0xbb10('0x38')][0x0]&&_0x5f3d67[_0xbb10('0x38')][0x0][_0xbb10('0x3c')]?_0x5f3d67[_0xbb10('0x38')][0x0]['confidence']:0x0;})[_0xbb10('0x3a')]('\x0a');}logger[_0xbb10('0x27')](_0xbb10('0x3d'),_0x3e8538);logger[_0xbb10('0x27')]('googleASR\x20confidence',_0x4345f3);return{'transcript':_0x3e8538,'confidence':_0x4345f3};})[_0xbb10('0x3e')](function(_0x202c60){logger['error']('[%s]\x20%s:%s',_0x202c60[_0xbb10('0x15')],_0x202c60['name'],_0x202c60[_0xbb10('0x3f')]);});};exports[_0xbb10('0x40')]=function(_0x4c66d8,_0x366608,_0x1d82bf,_0x474e99){var _0x5cf4f8=apiai(_0x366608,{'language':_0x474e99||'en'});return _0x5cf4f8[_0xbb10('0x41')](_0x1d82bf,{'sessionId':md5(_0x4c66d8)})[_0xbb10('0x2d')](function(_0x3b9fdf){logger[_0xbb10('0x27')](JSON[_0xbb10('0x42')](_0x3b9fdf));return{'source':_0x3b9fdf[_0xbb10('0x43')][_0xbb10('0x44')],'resolvedQuery':_0x3b9fdf[_0xbb10('0x43')][_0xbb10('0x45')],'action':_0x3b9fdf[_0xbb10('0x43')][_0xbb10('0x46')],'actionIncomplete':_0x3b9fdf[_0xbb10('0x43')]['actionIncomplete'],'speech':_0x3b9fdf[_0xbb10('0x43')][_0xbb10('0x47')]['speech'],'score':_0x3b9fdf[_0xbb10('0x43')][_0xbb10('0x48')],'statusCode':_0x3b9fdf[_0xbb10('0x49')][_0xbb10('0x4a')],'endConversation':_0x3b9fdf[_0xbb10('0x43')][_0xbb10('0x4b')][_0xbb10('0x4c')]||![],'isFallbackIntent':_0x3b9fdf['result']['metadata'][_0xbb10('0x4d')]};});};exports[_0xbb10('0x4e')]=function(_0x2b12bd,_0x57d2c0,_0x5f0c12,_0x3cd6f3){return tilde[_0xbb10('0x4f')](_0x2b12bd,_0x57d2c0,_0x5f0c12,_0x3cd6f3)[_0xbb10('0x2d')](function(_0xf820fe){try{fs[_0xbb10('0x1e')](_0x2b12bd);}catch(_0x22b315){logger[_0xbb10('0x16')](_0x22b315);}logger[_0xbb10('0x27')](_0xbb10('0x50'),_0xf820fe[_0xbb10('0x39')]);logger['info']('Tilde\x20ASR\x20confidence',_0xf820fe[_0xbb10('0x3c')]);return _0xf820fe;});};exports[_0xbb10('0x51')]=function(_0x36ab7d,_0xb014b0,_0x36aa7d,_0x440f9e,_0x358e7e,_0x445870){var _0x1c0d8f=path[_0xbb10('0x31')](__dirname,_0xbb10('0x2a'),rs[_0xbb10('0x32')](0x4)+_0xbb10('0x33'));var _0x2e6fd9;return aws[_0xbb10('0x52')](_0x36ab7d,_0xb014b0,_0x36aa7d,_0x440f9e,_0x358e7e,_0x445870,_0x1c0d8f)['then'](function(){_0x2e6fd9=path[_0xbb10('0x31')](__dirname,'tmp',rs[_0xbb10('0x32')](0x4)+_0xbb10('0x2b'));return convertFile(_0x1c0d8f,_0x2e6fd9);})[_0xbb10('0x2d')](function(){try{fs[_0xbb10('0x1e')](_0x1c0d8f);fs[_0xbb10('0x53')](_0x2e6fd9,_0xbb10('0x54'));}catch(_0x2e3326){logger[_0xbb10('0x16')](_0x2e3326);}return _0x2e6fd9[_0xbb10('0x35')]('.')[0x0];});};exports[_0xbb10('0x55')]=function(_0x44a056,_0x1c2dce,_0x1d49e1,_0x3d7e17,_0x4475e1,_0x5de0cc){return aws[_0xbb10('0x56')](_0x44a056,_0x1c2dce,_0x1d49e1,_0x3d7e17,_0x4475e1,_0x5de0cc)[_0xbb10('0x2d')](function(_0x1b83a9){logger[_0xbb10('0x27')](JSON[_0xbb10('0x42')](_0x1b83a9));return _0x1b83a9;});};exports[_0xbb10('0x57')]=function(_0x4bedd0,_0x120bda,_0x4731ce,_0x2909a1){var _0x14fed3=util[_0xbb10('0x58')](_0xbb10('0x59'),ISPEECH_API,_0x4bedd0,encodeURIComponent(_0x120bda),_0x4731ce,_0x2909a1);var _0x175872=path[_0xbb10('0x31')](__dirname,_0xbb10('0x2a'),rs[_0xbb10('0x32')](0x4)+_0xbb10('0x33'));var _0x2a1ce1;return downloadFile(_0x14fed3,_0x175872)[_0xbb10('0x2d')](function(){_0x2a1ce1=path['resolve'](__dirname,'tmp',rs[_0xbb10('0x32')](0x4)+_0xbb10('0x2b'));return convertFile(_0x175872,_0x2a1ce1);})[_0xbb10('0x2d')](function(){try{fs[_0xbb10('0x1e')](_0x175872);fs['chmodSync'](_0x2a1ce1,'777');}catch(_0x79411e){logger[_0xbb10('0x16')](_0x79411e);}return _0x2a1ce1[_0xbb10('0x35')]('.')[0x0];});};exports[_0xbb10('0x5a')]=function(_0x412f13,_0x3e9753,_0x45c0dc,_0x4a5fb9){var _0x117e84=util[_0xbb10('0x58')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x3e9753,_0x45c0dc,base64Encode(_0x412f13),_0x4a5fb9?util['format']('model=%s',encodeURIComponent(_0x4a5fb9)):_0xbb10('0x5b'));return uploadFile(_0x117e84)[_0xbb10('0x2d')](function(_0x155dc5){return querystring['parse'](_0x155dc5);});};exports['sestekNDA']=function(_0x5846d1,_0x3ebc5f){return sestek[_0xbb10('0x5c')](_0x5846d1,_0x3ebc5f)[_0xbb10('0x2d')](function(_0x4e9fbd){logger[_0xbb10('0x27')](JSON[_0xbb10('0x42')](_0x4e9fbd));var _0x5a6538={'speech':_0x4e9fbd['text'],'action':_0x4e9fbd[_0xbb10('0x5d')]?_0x4e9fbd[_0xbb10('0x5d')][_0xbb10('0x5e')]:undefined,'actiondata':_0x4e9fbd[_0xbb10('0x5d')]?_0x4e9fbd['channelData'][_0xbb10('0x5f')]:undefined};if(_0x4e9fbd[_0xbb10('0x5d')]&&_0x4e9fbd[_0xbb10('0x5d')]['AudioFromTts']){return base64Decode(_0x4e9fbd[_0xbb10('0x5d')][_0xbb10('0x60')][_0xbb10('0x61')],path['resolve'](__dirname,_0xbb10('0x2a'),rs[_0xbb10('0x32')](0x4)+_0xbb10('0x2b')))[_0xbb10('0x2d')](function(_0x5e4a6e){_0x5a6538[_0xbb10('0x62')]=_0x5e4a6e;return _0x5a6538;});}return _0x5a6538;});};exports[_0xbb10('0x63')]=function(){return __dirname;};
\ No newline at end of file
+var _0xa9e0=['text','channelData','CustomAction','AudioFromTts','Data','dirName','path','http','https','bluebird','sox','request-promise','util','querystring','moment','apiai-promise','md5','./google','./sestek','https://api.ispeech.org/api/rest','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','finish\x20download\x20file','error','unlink','download\x20error','pipe','end','protocol','https:','data','transcode','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','base64','then','chmodSync','777','split','readFileSync','googleTTS','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','stringify','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','code','metadata','endConversation','isFallbackIntent','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','awsLex','lex','format','freeform=3','parse','sestekNDA','nda'];(function(_0xc86616,_0x34ff3d){var _0x1873bd=function(_0x6317f1){while(--_0x6317f1){_0xc86616['push'](_0xc86616['shift']());}};_0x1873bd(++_0x34ff3d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'use strict';var fs=require('fs');var path=require(_0x0a9e('0x0'));var http=require(_0x0a9e('0x1'));var https=require(_0x0a9e('0x2'));var urlParse=require('url')['parse'];var BPromise=require(_0x0a9e('0x3'));var rs=require('randomstring');var sox=require(_0x0a9e('0x4'));var rp=require(_0x0a9e('0x5'));var util=require(_0x0a9e('0x6'));var querystring=require(_0x0a9e('0x7'));var moment=require(_0x0a9e('0x8'));var tts=require('google-tts-api');var apiai=require(_0x0a9e('0x9'));var md5=require(_0x0a9e('0xa'));var google=require(_0x0a9e('0xb'));var aws=require('./aws');var tilde=require('./tilde');var sestek=require(_0x0a9e('0xc'));var logger=require('../../../config/logger')('agi');var ISPEECH_API=_0x0a9e('0xd');function downloadFile(_0xf81284,_0x307b3e){return new BPromise(function(_0x3ab53f,_0xfeb75b){var _0xbd1168=urlParse(_0xf81284);var _0x4a4c56=_0xbd1168['protocol']==='https:'?https:http;var _0x4cfe67={'host':_0xbd1168[_0x0a9e('0xe')],'path':_0xbd1168[_0x0a9e('0x0')],'headers':{'user-agent':_0x0a9e('0xf')}};_0x4a4c56[_0x0a9e('0x10')](_0x4cfe67,function(_0x32d742){if(_0x32d742[_0x0a9e('0x11')]!==0xc8){logger['error'](_0x0a9e('0x12')+_0xf81284+_0x0a9e('0x13')+_0x32d742[_0x0a9e('0x11')]+'\x20('+_0x32d742[_0x0a9e('0x14')]+')');_0xfeb75b(new Error(_0x0a9e('0x12')+_0xf81284+_0x0a9e('0x13')+_0x32d742['statusCode']+'\x20('+_0x32d742[_0x0a9e('0x14')]+')'));return;}var _0x5d0880=fs[_0x0a9e('0x15')](_0x307b3e);_0x5d0880['on']('finish',function(){logger[_0x0a9e('0x16')](_0x0a9e('0x17'));_0x5d0880['close'](_0x3ab53f);});_0x5d0880['on'](_0x0a9e('0x18'),function(_0x5a0a06){fs[_0x0a9e('0x19')](_0x307b3e);logger[_0x0a9e('0x18')](_0x0a9e('0x1a'),_0x5a0a06);_0xfeb75b(_0x5a0a06);});_0x32d742[_0x0a9e('0x1b')](_0x5d0880);})['on'](_0x0a9e('0x18'),function(_0x2eb11f){logger[_0x0a9e('0x18')](_0x2eb11f);_0xfeb75b(_0x2eb11f);})[_0x0a9e('0x1c')]();});}function uploadFile(_0x1314ae){return new BPromise(function(_0x112016,_0x1c696a){var _0x105080=urlParse(_0x1314ae);var _0x4bb1e3=_0x105080[_0x0a9e('0x1d')]===_0x0a9e('0x1e')?https:http;var _0x53682f={'host':_0x105080[_0x0a9e('0xe')],'path':_0x105080['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x4bb1e3[_0x0a9e('0x10')](_0x53682f,function(_0x432e56){if(_0x432e56[_0x0a9e('0x11')]!==0xc8){_0x1c696a(new Error(_0x0a9e('0x12')+_0x1314ae+'\x20failed,\x20status\x20code\x20=\x20'+_0x432e56[_0x0a9e('0x11')]+'\x20('+_0x432e56[_0x0a9e('0x14')]+')'));return;}var _0x3b45bc='';_0x432e56['on'](_0x0a9e('0x1f'),function(_0x370d86){_0x3b45bc+=_0x370d86;});_0x432e56['on'](_0x0a9e('0x1c'),function(){_0x112016(_0x3b45bc);});})['on'](_0x0a9e('0x18'),function(_0x5ea472){_0x1c696a(_0x5ea472);})['end']();});}function convertFile(_0x197ec0,_0x3a8e58){return new BPromise(function(_0x40c424,_0x33161b){var _0x526cf3=sox[_0x0a9e('0x20')](_0x197ec0,_0x3a8e58,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x526cf3['on'](_0x0a9e('0x18'),function(_0x5bfb33){logger[_0x0a9e('0x18')](_0x0a9e('0x21'),_0x5bfb33);_0x33161b(_0x5bfb33);});_0x526cf3['on'](_0x0a9e('0x1c'),function(){logger[_0x0a9e('0x16')](_0x0a9e('0x22'));_0x40c424();});_0x526cf3[_0x0a9e('0x23')]();});}function base64Decode(_0x11c3b6,_0x14de77){var _0x5a101a=path[_0x0a9e('0x24')](__dirname,_0x0a9e('0x25'),rs[_0x0a9e('0x26')](0x4)+_0x0a9e('0x27'));fs['writeFileSync'](_0x5a101a,_0x11c3b6,_0x0a9e('0x28'));return convertFile(_0x5a101a,_0x14de77)[_0x0a9e('0x29')](function(){try{fs[_0x0a9e('0x19')](_0x5a101a);fs[_0x0a9e('0x2a')](_0x14de77,_0x0a9e('0x2b'));}catch(_0x563b45){logger[_0x0a9e('0x18')](_0x563b45);}return _0x14de77[_0x0a9e('0x2c')]('.')[0x0];});}function base64Encode(_0x1dbde2){var _0x540530=fs[_0x0a9e('0x2d')](_0x1dbde2);return new Buffer(_0x540530)['toString'](_0x0a9e('0x28'));}exports[_0x0a9e('0x2e')]=function(_0x1122db,_0x33bdb7){var _0x25ce3a,_0x5180f1;return tts(_0x1122db,_0x33bdb7||'en',0x1)[_0x0a9e('0x29')](function(_0x46f0a5){logger[_0x0a9e('0x16')](_0x46f0a5);_0x25ce3a=path[_0x0a9e('0x24')](__dirname,_0x0a9e('0x25'),rs[_0x0a9e('0x26')](0x4)+_0x0a9e('0x2f'));return downloadFile(_0x46f0a5,_0x25ce3a);})[_0x0a9e('0x29')](function(){_0x5180f1=path['resolve'](__dirname,_0x0a9e('0x25'),rs['generate'](0x4)+_0x0a9e('0x27'));return convertFile(_0x25ce3a,_0x5180f1);})[_0x0a9e('0x29')](function(){try{fs[_0x0a9e('0x19')](_0x25ce3a);fs[_0x0a9e('0x2a')](_0x5180f1,'777');}catch(_0x191e91){logger[_0x0a9e('0x18')](_0x191e91);}logger[_0x0a9e('0x16')](_0x0a9e('0x30'),_0x5180f1['split']('.')[0x0]);return _0x5180f1['split']('.')[0x0];});};exports[_0x0a9e('0x31')]=function(_0x5640eb,_0x24936a,_0x3d9717){return google[_0x0a9e('0x32')](_0x5640eb,_0x24936a,_0x3d9717)[_0x0a9e('0x29')](function(_0x4f41ae){logger[_0x0a9e('0x16')](_0x4f41ae[_0x0a9e('0x33')]);return rp(_0x4f41ae);})[_0x0a9e('0x29')](function(_0x533942){var _0x1dbf74='';var _0x1a180b=0x0;try{fs[_0x0a9e('0x19')](_0x5640eb);}catch(_0x4c1c0e){logger['error'](_0x4c1c0e);}if(_0x533942&&_0x533942[_0x0a9e('0x34')]){_0x1dbf74=_0x533942[_0x0a9e('0x34')]['map'](function(_0x2b814e){return _0x2b814e&&_0x2b814e[_0x0a9e('0x35')][0x0]&&_0x2b814e[_0x0a9e('0x35')][0x0][_0x0a9e('0x36')]?_0x2b814e['alternatives'][0x0]['transcript']:'';})[_0x0a9e('0x37')]('\x0a');_0x1a180b=_0x533942[_0x0a9e('0x34')]['map'](function(_0x183991){return _0x183991&&_0x183991[_0x0a9e('0x35')][0x0]&&_0x183991[_0x0a9e('0x35')][0x0]['confidence']?_0x183991[_0x0a9e('0x35')][0x0][_0x0a9e('0x38')]:0x0;})[_0x0a9e('0x37')]('\x0a');}logger[_0x0a9e('0x16')](_0x0a9e('0x39'),_0x1dbf74);logger[_0x0a9e('0x16')](_0x0a9e('0x3a'),_0x1a180b);return{'transcript':_0x1dbf74,'confidence':_0x1a180b};})[_0x0a9e('0x3b')](function(_0x23b089){logger[_0x0a9e('0x18')](_0x0a9e('0x3c'),_0x23b089[_0x0a9e('0x11')],_0x23b089[_0x0a9e('0x3d')],_0x23b089[_0x0a9e('0x3e')]);});};exports[_0x0a9e('0x3f')]=function(_0x4d04c8,_0x52628e,_0x473fdc,_0xb3795a){var _0x405c8f=apiai(_0x52628e,{'language':_0xb3795a||'en'});return _0x405c8f[_0x0a9e('0x40')](_0x473fdc,{'sessionId':md5(_0x4d04c8)})[_0x0a9e('0x29')](function(_0xc9a702){logger[_0x0a9e('0x16')](JSON[_0x0a9e('0x41')](_0xc9a702));return{'source':_0xc9a702[_0x0a9e('0x42')][_0x0a9e('0x43')],'resolvedQuery':_0xc9a702[_0x0a9e('0x42')][_0x0a9e('0x44')],'action':_0xc9a702['result'][_0x0a9e('0x45')],'actionIncomplete':_0xc9a702[_0x0a9e('0x42')][_0x0a9e('0x46')],'speech':_0xc9a702[_0x0a9e('0x42')][_0x0a9e('0x47')][_0x0a9e('0x48')],'score':_0xc9a702[_0x0a9e('0x42')][_0x0a9e('0x49')],'statusCode':_0xc9a702['status'][_0x0a9e('0x4a')],'endConversation':_0xc9a702['result'][_0x0a9e('0x4b')][_0x0a9e('0x4c')]||![],'isFallbackIntent':_0xc9a702[_0x0a9e('0x42')]['metadata'][_0x0a9e('0x4d')]};});};exports[_0x0a9e('0x4e')]=function(_0x4774f4,_0x34aa5a,_0x45c845,_0x37be73){return tilde[_0x0a9e('0x32')](_0x4774f4,_0x34aa5a,_0x45c845,_0x37be73)['then'](function(_0x13f44d){try{fs[_0x0a9e('0x19')](_0x4774f4);}catch(_0x1b5e80){logger[_0x0a9e('0x18')](_0x1b5e80);}logger[_0x0a9e('0x16')](_0x0a9e('0x4f'),_0x13f44d[_0x0a9e('0x36')]);logger[_0x0a9e('0x16')](_0x0a9e('0x50'),_0x13f44d['confidence']);return _0x13f44d;});};exports[_0x0a9e('0x51')]=function(_0x3fe430,_0x4f7240,_0x4ae14b,_0x5ddf84,_0x1adfee,_0x4317e3){var _0x37edaa=path[_0x0a9e('0x24')](__dirname,_0x0a9e('0x25'),rs[_0x0a9e('0x26')](0x4)+_0x0a9e('0x2f'));var _0x375c18;return aws['polly'](_0x3fe430,_0x4f7240,_0x4ae14b,_0x5ddf84,_0x1adfee,_0x4317e3,_0x37edaa)['then'](function(){_0x375c18=path['resolve'](__dirname,_0x0a9e('0x25'),rs[_0x0a9e('0x26')](0x4)+_0x0a9e('0x27'));return convertFile(_0x37edaa,_0x375c18);})['then'](function(){try{fs[_0x0a9e('0x19')](_0x37edaa);fs[_0x0a9e('0x2a')](_0x375c18,'777');}catch(_0x5a88da){logger[_0x0a9e('0x18')](_0x5a88da);}return _0x375c18['split']('.')[0x0];});};exports[_0x0a9e('0x52')]=function(_0x4c3845,_0x2e5e62,_0x3c20b2,_0x439340,_0x53613a,_0x2f82da){return aws[_0x0a9e('0x53')](_0x4c3845,_0x2e5e62,_0x3c20b2,_0x439340,_0x53613a,_0x2f82da)['then'](function(_0x50f687){logger[_0x0a9e('0x16')](JSON[_0x0a9e('0x41')](_0x50f687));return _0x50f687;});};exports['ispeechTTS']=function(_0x145931,_0x5ce9ac,_0x211ef9,_0x523cd2){var _0xe22ccc=util['format']('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x145931,encodeURIComponent(_0x5ce9ac),_0x211ef9,_0x523cd2);var _0x5df0ad=path[_0x0a9e('0x24')](__dirname,'tmp',rs[_0x0a9e('0x26')](0x4)+_0x0a9e('0x2f'));var _0x3cfd00;return downloadFile(_0xe22ccc,_0x5df0ad)[_0x0a9e('0x29')](function(){_0x3cfd00=path[_0x0a9e('0x24')](__dirname,_0x0a9e('0x25'),rs[_0x0a9e('0x26')](0x4)+_0x0a9e('0x27'));return convertFile(_0x5df0ad,_0x3cfd00);})['then'](function(){try{fs[_0x0a9e('0x19')](_0x5df0ad);fs[_0x0a9e('0x2a')](_0x3cfd00,_0x0a9e('0x2b'));}catch(_0x30c491){logger[_0x0a9e('0x18')](_0x30c491);}return _0x3cfd00[_0x0a9e('0x2c')]('.')[0x0];});};exports['ispeechASR']=function(_0x956fbe,_0x26bc80,_0x5239ef,_0x3649cc){var _0x5cc8fb=util[_0x0a9e('0x54')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x26bc80,_0x5239ef,base64Encode(_0x956fbe),_0x3649cc?util['format']('model=%s',encodeURIComponent(_0x3649cc)):_0x0a9e('0x55'));return uploadFile(_0x5cc8fb)['then'](function(_0x2244d6){return querystring[_0x0a9e('0x56')](_0x2244d6);});};exports[_0x0a9e('0x57')]=function(_0x7be420,_0x1cca9f){return sestek[_0x0a9e('0x58')](_0x7be420,_0x1cca9f)['then'](function(_0x1627a7){logger['info'](JSON[_0x0a9e('0x41')](_0x1627a7));var _0x1f07cb={'speech':_0x1627a7[_0x0a9e('0x59')],'action':_0x1627a7['channelData']?_0x1627a7[_0x0a9e('0x5a')][_0x0a9e('0x5b')]:undefined,'actiondata':_0x1627a7[_0x0a9e('0x5a')]?_0x1627a7[_0x0a9e('0x5a')]['CustomActionData']:undefined};if(_0x1627a7[_0x0a9e('0x5a')]&&_0x1627a7[_0x0a9e('0x5a')]['AudioFromTts']){return base64Decode(_0x1627a7[_0x0a9e('0x5a')][_0x0a9e('0x5c')][_0x0a9e('0x5d')],path[_0x0a9e('0x24')](__dirname,_0x0a9e('0x25'),rs['generate'](0x4)+_0x0a9e('0x27')))[_0x0a9e('0x29')](function(_0x281c7d){_0x1f07cb['audiofile']=_0x281c7d;return _0x1f07cb;});}return _0x1f07cb;});};exports[_0x0a9e('0x5e')]=function(){return __dirname;};
\ No newline at end of file
index d443387..b1b8fca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x579e=['exports','./nda'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x579e,0x15d));var _0xe579=function(_0x23c545,_0x3cefed){_0x23c545=_0x23c545-0x0;var _0x465326=_0x579e[_0x23c545];return _0x465326;};var nda=require(_0xe579('0x0'));module[_0xe579('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x54f3=['./nda','exports'];(function(_0x576170,_0x1712ae){var _0x397c70=function(_0x2eb9de){while(--_0x2eb9de){_0x576170['push'](_0x576170['shift']());}};_0x397c70(++_0x1712ae);}(_0x54f3,0xec));var _0x354f=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x54f3[_0x199572];return _0x13cfa3;};var nda=require(_0x354f('0x0'));module[_0x354f('0x1')]={'nda':nda};
\ No newline at end of file
index f0ec9f4..3995828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x384c=['/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','uniqueid','calleridname','Bearer\x20','access_token','project','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','custom_action','body','CustomActionData','custom_action_data','info','request-promise','url','../../../../../config/logger','agi','POST','resolve','password','username','then'];(function(_0x2325e7,_0xd24bf6){var _0x26b60d=function(_0x388bf9){while(--_0x388bf9){_0x2325e7['push'](_0x2325e7['shift']());}};_0x26b60d(++_0xd24bf6);}(_0x384c,0xad));var _0xc384=function(_0x1b18a2,_0x9f862){_0x1b18a2=_0x1b18a2-0x0;var _0x8b809a=_0x384c[_0x1b18a2];return _0x8b809a;};'use strict';var rp=require(_0xc384('0x0'));var url=require(_0xc384('0x1'));var logger=require(_0xc384('0x2'))(_0xc384('0x3'));module['exports']=function(_0x33dbcf,_0x440246){var _0x5fbddc={'method':_0xc384('0x4'),'uri':url[_0xc384('0x5')](_0x440246['ndauth_url'],'/token'),'form':{'grant_type':_0xc384('0x6'),'username':_0x440246[_0xc384('0x7')],'password':_0x440246['password']},'json':!![]};return rp(_0x5fbddc)[_0xc384('0x8')](function(_0x8b6ad0){var _0x3de4d3={'method':_0xc384('0x4'),'uri':url[_0xc384('0x5')](_0x440246['ndassistant_url'],_0xc384('0x9')),'body':{'type':_0x440246[_0xc384('0xa')]||_0xc384('0xb'),'channelId':'Nda','conversation':{'id':_0x33dbcf[_0xc384('0xc')]},'from':{'id':_0x33dbcf['callerid'],'name':_0x33dbcf[_0xc384('0xd')]},'recipient':{'id':_0x33dbcf['dnid'],'name':_0x33dbcf['extension']},'text':_0x440246['text'],'channelData':{}},'headers':{'Authorization':_0xc384('0xe')+_0x8b6ad0[_0xc384('0xf')]},'json':!![]};if(_0x440246[_0xc384('0x10')]){_0x3de4d3['body'][_0xc384('0x11')][_0xc384('0x12')]=_0x440246[_0xc384('0x10')];}if(_0x440246[_0xc384('0x13')]=='1'){_0x3de4d3['body']['channelData'][_0xc384('0x14')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x440246[_0xc384('0x15')]){_0x3de4d3[_0xc384('0x16')][_0xc384('0x11')]['CustomAction']=_0x440246['custom_action'];if(_0x440246['custom_action_data']){_0x3de4d3[_0xc384('0x16')][_0xc384('0x11')][_0xc384('0x17')]=_0x440246[_0xc384('0x18')];}}logger[_0xc384('0x19')](JSON['stringify'](_0x3de4d3));return rp(_0x3de4d3);});};
\ No newline at end of file
+var _0x465e=['ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action','CustomActionData','info','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','uniqueid','calleridname','dnid','extension','Bearer\x20','project','body','channelData','ProjectName'];(function(_0x35505c,_0x4f5d22){var _0x55d0f6=function(_0x77248b){while(--_0x77248b){_0x35505c['push'](_0x35505c['shift']());}};_0x55d0f6(++_0x4f5d22);}(_0x465e,0x10b));var _0xe465=function(_0x2a8c21,_0x163576){_0x2a8c21=_0x2a8c21-0x0;var _0x5f3061=_0x465e[_0x2a8c21];return _0x5f3061;};'use strict';var rp=require('request-promise');var url=require('url');var logger=require(_0xe465('0x0'))(_0xe465('0x1'));module[_0xe465('0x2')]=function(_0x565032,_0x31fad1){var _0x5345ed={'method':_0xe465('0x3'),'uri':url[_0xe465('0x4')](_0x31fad1[_0xe465('0x5')],_0xe465('0x6')),'form':{'grant_type':_0xe465('0x7'),'username':_0x31fad1[_0xe465('0x8')],'password':_0x31fad1['password']},'json':!![]};return rp(_0x5345ed)[_0xe465('0x9')](function(_0x12a85c){var _0x4b0db5={'method':'POST','uri':url[_0xe465('0x4')](_0x31fad1[_0xe465('0xa')],_0xe465('0xb')),'body':{'type':_0x31fad1[_0xe465('0xc')]||_0xe465('0xd'),'channelId':'Nda','conversation':{'id':_0x565032[_0xe465('0xe')]},'from':{'id':_0x565032['callerid'],'name':_0x565032[_0xe465('0xf')]},'recipient':{'id':_0x565032[_0xe465('0x10')],'name':_0x565032[_0xe465('0x11')]},'text':_0x31fad1['text'],'channelData':{}},'headers':{'Authorization':_0xe465('0x12')+_0x12a85c['access_token']},'json':!![]};if(_0x31fad1[_0xe465('0x13')]){_0x4b0db5[_0xe465('0x14')][_0xe465('0x15')][_0xe465('0x16')]=_0x31fad1[_0xe465('0x13')];}if(_0x31fad1[_0xe465('0x17')]=='1'){_0x4b0db5[_0xe465('0x14')][_0xe465('0x15')][_0xe465('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xe465('0x19')};}if(_0x31fad1[_0xe465('0x1a')]){_0x4b0db5['body'][_0xe465('0x15')]['CustomAction']=_0x31fad1[_0xe465('0x1a')];if(_0x31fad1['custom_action_data']){_0x4b0db5['body'][_0xe465('0x15')][_0xe465('0x1b')]=_0x31fad1['custom_action_data'];}}logger[_0xe465('0x1c')](JSON['stringify'](_0x4b0db5));return rp(_0x4b0db5);});};
\ No newline at end of file
index 2aab6a8..2726076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a0c=['exports'];(function(_0x26b622,_0x237e9e){var _0x58a028=function(_0xde1652){while(--_0xde1652){_0x26b622['push'](_0x26b622['shift']());}};_0x58a028(++_0x237e9e);}(_0x9a0c,0x8b));var _0xc9a0=function(_0x165de3,_0x29cafb){_0x165de3=_0x165de3-0x0;var _0xacbf97=_0x9a0c[_0x165de3];return _0xacbf97;};'use strict';var asr=require('./lib/api');module[_0xc9a0('0x0')]=function(_0x135031,_0x2a2506,_0x22753f,_0x3810b1){return asr(_0x135031,_0x2a2506,_0x22753f,_0x3810b1);};
\ No newline at end of file
+var _0x296f=['./lib/api'];(function(_0x4cf0fc,_0x1c8c52){var _0x3d1466=function(_0x200a84){while(--_0x200a84){_0x4cf0fc['push'](_0x4cf0fc['shift']());}};_0x3d1466(++_0x1c8c52);}(_0x296f,0xea));var _0xf296=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x296f[_0x199572];return _0x13cfa3;};'use strict';var asr=require(_0xf296('0x0'));module['exports']=function(_0x43f3e7,_0x3e57cf,_0x5d70a2,_0x4c7794){return asr(_0x43f3e7,_0x3e57cf,_0x5d70a2,_0x4c7794);};
\ No newline at end of file
index 2abee05..5afbab6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3362=['wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','hex','unix','send','createReadStream','data','close','EOS','error','terminate','parse','result','final','Tilde\x20ASR\x20hypoteses','stringify','hypotheses','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','moment','crypto','info'];(function(_0x537d2b,_0x2bed1a){var _0x30507e=function(_0x54f059){while(--_0x54f059){_0x537d2b['push'](_0x537d2b['shift']());}};_0x30507e(++_0x2bed1a);}(_0x3362,0xaf));var _0x2336=function(_0x152fb4,_0x4dc737){_0x152fb4=_0x152fb4-0x0;var _0x4beecf=_0x3362[_0x152fb4];return _0x4beecf;};'use strict';var BPromise=require(_0x2336('0x0'));var _=require(_0x2336('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x2336('0x2'));var crypto=require(_0x2336('0x3'));var logger=require('../../../../../../config/logger')('agi');module['exports']=function(_0x512ee1,_0x2ebc45,_0x34a1ef,_0x304ee4){return new BPromise(function(_0xff38f2,_0x737d6d){logger[_0x2336('0x4')]('Tilde\x20URI',_0x304ee4||_0x2336('0x5'));var _0x362095=new WebSocket(_0x304ee4||_0x2336('0x5'),{'perMessageDeflate':![]});var _0x1df9c7='';var _0x54889d='0';var _0x54785c='1';var _0x21b660=_0x2336('0x6');function _0x327f89(_0x2f0a25){var _0x4eb8ed=crypto[_0x2336('0x7')](_0x2336('0x8'));_0x4eb8ed['update'](_0x2f0a25);return _0x4eb8ed['digest'](_0x2336('0x9'));}function _0x7354d8(){try{logger['info']('Open\x20Tilde\x20ASR\x20socket');var _0x557341=moment()[_0x2336('0xa')]();var _0x1d49d5=_0x327f89(_0x557341+_0x2ebc45+_0x34a1ef);_0x362095[_0x2336('0xb')](JSON['stringify']({'appID':_0x2ebc45,'timestamp':_0x557341,'appKey':_0x1d49d5}));var _0x1a1340=fs[_0x2336('0xc')](_0x512ee1);_0x1a1340['on'](_0x2336('0xd'),function(_0x45c734){_0x362095['send'](_0x45c734);});_0x1a1340['on'](_0x2336('0xe'),function(){_0x362095[_0x2336('0xb')](_0x2336('0xf'));});}catch(_0x174cac){logger[_0x2336('0x10')]('Tilde\x20ASR\x20send\x20error',JSON['stringify'](_0x174cac));_0x362095[_0x2336('0x11')]();}}function _0x4a9b0c(_0x39db16){try{if(_0x39db16){var _0x3b00bb=JSON[_0x2336('0x12')](_0x39db16);switch(_0x3b00bb['status']){case 0x0:if(_0x3b00bb[_0x2336('0x13')]){if(_0x3b00bb[_0x2336('0x13')][_0x2336('0x14')]){logger[_0x2336('0x4')](_0x2336('0x15'),JSON[_0x2336('0x16')](_0x3b00bb['result'][_0x2336('0x17')]));_0x1df9c7=_0x3b00bb[_0x2336('0x13')][_0x2336('0x17')][0x0]['transcript'];_0x54889d=_0x3b00bb['result'][_0x2336('0x17')][0x0][_0x2336('0x18')];_0x54785c='0';_0x21b660=_0x2336('0x19');_0x362095[_0x2336('0x11')]();}}break;case 0x1:logger['info'](_0x2336('0x6'));_0x54785c='1';_0x21b660='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger['info'](_0x2336('0x1a'));_0x54785c='2';_0x21b660='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x2336('0x4')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x54785c='9';_0x21b660=_0x2336('0x1b');break;case 0xa:logger[_0x2336('0x4')](_0x2336('0x1c'));_0x54785c='10';_0x21b660=_0x2336('0x1c');break;case 0xb:logger[_0x2336('0x4')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x54785c='11';_0x21b660=_0x2336('0x1d');}}}catch(_0x1d2901){logger[_0x2336('0x10')](_0x2336('0x1e'),JSON[_0x2336('0x16')](_0x1d2901));_0x362095[_0x2336('0x11')]();}}function _0x13bb68(){logger[_0x2336('0x4')]('Close\x20Tilde\x20ASR\x20socket');_0xff38f2({'transcript':_0x1df9c7,'confidence':_0x54889d,'status':_0x54785c,'status_message':_0x21b660});}function _0xe60989(_0x2a30d3){logger['error'](_0x2336('0x1f'));if(!_[_0x2336('0x20')](_0x2a30d3)){logger[_0x2336('0x10')](_[_0x2336('0x21')](_0x2a30d3)?JSON[_0x2336('0x16')](_0x2a30d3):_0x2a30d3);}}_0x362095['on'](_0x2336('0x22'),_0x7354d8);_0x362095['on'](_0x2336('0x23'),_0x4a9b0c);_0x362095['on'](_0x2336('0xe'),_0x13bb68);_0x362095['on'](_0x2336('0x10'),_0xe60989);});};
\ No newline at end of file
+var _0x659e=['transcript','likelihood','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','open','message','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi','exports','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','sha1','update','digest','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses'];(function(_0x43b3aa,_0xe83a37){var _0x52952e=function(_0x230b5c){while(--_0x230b5c){_0x43b3aa['push'](_0x43b3aa['shift']());}};_0x52952e(++_0xe83a37);}(_0x659e,0x18f));var _0xe659=function(_0x1c484c,_0x58b6dd){_0x1c484c=_0x1c484c-0x0;var _0x2bab38=_0x659e[_0x1c484c];return _0x2bab38;};'use strict';var BPromise=require(_0xe659('0x0'));var _=require(_0xe659('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xe659('0x2'));var crypto=require(_0xe659('0x3'));var logger=require(_0xe659('0x4'))(_0xe659('0x5'));module[_0xe659('0x6')]=function(_0x44ed55,_0x505bf6,_0x2a8ea8,_0x245680){return new BPromise(function(_0x18615f,_0x346c65){logger['info'](_0xe659('0x7'),_0x245680||_0xe659('0x8'));var _0xb5b9fe=new WebSocket(_0x245680||_0xe659('0x8'),{'perMessageDeflate':![]});var _0x2119b6='';var _0x443ad9='0';var _0x12267b='1';var _0x2e999a=_0xe659('0x9');function _0x2ce04c(_0x15cc0c){var _0x217ca5=crypto['createHash'](_0xe659('0xa'));_0x217ca5[_0xe659('0xb')](_0x15cc0c);return _0x217ca5[_0xe659('0xc')](_0xe659('0xd'));}function _0x1048dd(){try{logger[_0xe659('0xe')](_0xe659('0xf'));var _0x385c36=moment()[_0xe659('0x10')]();var _0x2f4eeb=_0x2ce04c(_0x385c36+_0x505bf6+_0x2a8ea8);_0xb5b9fe[_0xe659('0x11')](JSON[_0xe659('0x12')]({'appID':_0x505bf6,'timestamp':_0x385c36,'appKey':_0x2f4eeb}));var _0x30ace0=fs[_0xe659('0x13')](_0x44ed55);_0x30ace0['on'](_0xe659('0x14'),function(_0x57761a){_0xb5b9fe[_0xe659('0x11')](_0x57761a);});_0x30ace0['on'](_0xe659('0x15'),function(){_0xb5b9fe[_0xe659('0x11')](_0xe659('0x16'));});}catch(_0x4b5c36){logger[_0xe659('0x17')](_0xe659('0x18'),JSON['stringify'](_0x4b5c36));_0xb5b9fe[_0xe659('0x19')]();}}function _0x4f9519(_0x4d4d5b){try{if(_0x4d4d5b){var _0x547215=JSON[_0xe659('0x1a')](_0x4d4d5b);switch(_0x547215[_0xe659('0x1b')]){case 0x0:if(_0x547215[_0xe659('0x1c')]){if(_0x547215[_0xe659('0x1c')][_0xe659('0x1d')]){logger['info'](_0xe659('0x1e'),JSON[_0xe659('0x12')](_0x547215[_0xe659('0x1c')]['hypotheses']));_0x2119b6=_0x547215[_0xe659('0x1c')]['hypotheses'][0x0][_0xe659('0x1f')];_0x443ad9=_0x547215[_0xe659('0x1c')]['hypotheses'][0x0][_0xe659('0x20')];_0x12267b='0';_0x2e999a='Success.';_0xb5b9fe[_0xe659('0x19')]();}}break;case 0x1:logger['info'](_0xe659('0x9'));_0x12267b='1';_0x2e999a='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0xe659('0xe')](_0xe659('0x21'));_0x12267b='2';_0x2e999a='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xe659('0xe')](_0xe659('0x22'));_0x12267b='9';_0x2e999a=_0xe659('0x22');break;case 0xa:logger[_0xe659('0xe')]('Authentication\x20failed.');_0x12267b='10';_0x2e999a=_0xe659('0x23');break;case 0xb:logger[_0xe659('0xe')](_0xe659('0x24'));_0x12267b='11';_0x2e999a=_0xe659('0x24');}}}catch(_0x1bedff){logger['error'](_0xe659('0x25'),JSON['stringify'](_0x1bedff));_0xb5b9fe['terminate']();}}function _0x457616(){logger[_0xe659('0xe')](_0xe659('0x26'));_0x18615f({'transcript':_0x2119b6,'confidence':_0x443ad9,'status':_0x12267b,'status_message':_0x2e999a});}function _0x596bfd(_0x398628){logger[_0xe659('0x17')](_0xe659('0x27'));if(!_[_0xe659('0x28')](_0x398628)){logger[_0xe659('0x17')](_['isObject'](_0x398628)?JSON[_0xe659('0x12')](_0x398628):_0x398628);}}_0xb5b9fe['on'](_0xe659('0x29'),_0x1048dd);_0xb5b9fe['on'](_0xe659('0x2a'),_0x4f9519);_0xb5b9fe['on'](_0xe659('0x15'),_0x457616);_0xb5b9fe['on'](_0xe659('0x17'),_0x596bfd);});};
\ No newline at end of file
index bffc22f..58baabc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['exports'];(function(_0x1dab2b,_0x4bd2d8){var _0x5e2733=function(_0x38762a){while(--_0x38762a){_0x1dab2b['push'](_0x1dab2b['shift']());}};_0x5e2733(++_0x4bd2d8);}(_0xedd9,0xfc));var _0x9edd=function(_0x3c5e6d,_0x10178f){_0x3c5e6d=_0x3c5e6d-0x0;var _0x24b98d=_0xedd9[_0x3c5e6d];return _0x24b98d;};var asr=require('./asr');module[_0x9edd('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x34e8=['./asr','exports'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x34e8,0x12c));var _0x834e=function(_0x40d804,_0x48393e){_0x40d804=_0x40d804-0x0;var _0x27962e=_0x34e8[_0x40d804];return _0x27962e;};var asr=require(_0x834e('0x0'));module[_0x834e('0x1')]={'asr':asr};
\ No newline at end of file
index 88c1be9..7c0b8b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8275=['call','emit','error','E_AGI_ARGUMENT_PORT','listen','listening','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','events','EventEmitter','./error','./channel','127.0.0.1'];(function(_0x52d80b,_0x1c42c3){var _0x5d5516=function(_0x1b96c0){while(--_0x1b96c0){_0x52d80b['push'](_0x52d80b['shift']());}};_0x5d5516(++_0x1c42c3);}(_0x8275,0x180));var _0x5827=function(_0xf1f015,_0x1cc594){_0xf1f015=_0xf1f015-0x0;var _0x48a310=_0x8275[_0xf1f015];return _0x48a310;};'use strict';var util=require(_0x5827('0x0'));var net=require(_0x5827('0x1'));var EventEmitter=require(_0x5827('0x2'))[_0x5827('0x3')];var AGIError=require(_0x5827('0x4'));var AGIChannel=require(_0x5827('0x5'));var AGIServer=function(_0x3fbdcb,_0x5259ce,_0x22937f){var _0x318e3d=this,_0x3fbdcb=_0x3fbdcb||0x11dd,_0x5259ce=_0x5259ce||_0x5827('0x6'),_0x4f2056=null,_0x4ad986=0x0;EventEmitter[_0x5827('0x7')](_0x318e3d);function _0x4660e0(){if(!_0x3fbdcb){_0x318e3d[_0x5827('0x8')](_0x5827('0x9'),new AGIError(_0x5827('0xa')));return![];}_0x4f2056=net['createServer']();_0x4f2056[_0x5827('0xb')](_0x3fbdcb,_0x5259ce);_0x4f2056['on'](_0x5827('0xc'),function(){_0x318e3d[_0x5827('0x8')]('listening');});_0x4f2056['on']('connection',function(_0x49fc08){_0x4f2056['getConnections'](function(_0x306d9d,_0x114950){if(_0x306d9d){_0x318e3d[_0x5827('0x8')](_0x5827('0x9'),new AGIError('E_AGI_SERVER_ERROR',_0x306d9d));}else if(_0x22937f&&_0x22937f<0x0){_0x318e3d[_0x5827('0x8')]('error',new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x49fc08[_0x5827('0xd')]();}else if(_0x22937f&&_0x22937f>0x0&&_0x22937f<_0x114950){_0x4ad986+=0x1;_0x318e3d[_0x5827('0x8')](_0x5827('0x9'),new AGIError(_0x5827('0xe'),_0x4ad986));_0x49fc08['destroy']();}else{var _0x1aa43d=new AGIChannel(_0x49fc08);_0x1aa43d['on'](_0x5827('0xf'),function(){_0x318e3d[_0x5827('0x8')](_0x5827('0x10'),_0x1aa43d);});}});});_0x4f2056['on']('error',function(_0x486c5d){_0x318e3d['emit'](_0x5827('0x9'),new AGIError(_0x5827('0x11'),_0x486c5d['code']));});_0x4f2056['on'](_0x5827('0x12'),function(){_0x318e3d['emit'](_0x5827('0x12'),new AGIError(_0x5827('0x13')));});}process[_0x5827('0x14')](function(){_0x4660e0();});};util[_0x5827('0x15')](AGIServer,EventEmitter);module[_0x5827('0x16')]=function(_0x5ac644,_0x17b7d5,_0x2bcf43){return new AGIServer(_0x5ac644,_0x17b7d5,_0x2bcf43);};
\ No newline at end of file
+var _0xebea=['E_AGI_SERVER_MAXCONNECTION','ready','connection','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','EventEmitter','./error','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listening','getConnections','E_AGI_SERVER_VOICE_DISABLED'];(function(_0x14a25d,_0x4a561a){var _0x4aa6b8=function(_0xcb5998){while(--_0xcb5998){_0x14a25d['push'](_0x14a25d['shift']());}};_0x4aa6b8(++_0x4a561a);}(_0xebea,0xec));var _0xaebe=function(_0x875832,_0x57f4b8){_0x875832=_0x875832-0x0;var _0x2512d7=_0xebea[_0x875832];return _0x2512d7;};'use strict';var util=require('util');var net=require('net');var EventEmitter=require('events')[_0xaebe('0x0')];var AGIError=require(_0xaebe('0x1'));var AGIChannel=require('./channel');var AGIServer=function(_0x4ec2f8,_0x47495d,_0x3decf6){var _0x4ae639=this,_0x4ec2f8=_0x4ec2f8||0x11dd,_0x47495d=_0x47495d||_0xaebe('0x2'),_0x1050a1=null,_0x59aba5=0x0;EventEmitter[_0xaebe('0x3')](_0x4ae639);function _0x3716c8(){if(!_0x4ec2f8){_0x4ae639[_0xaebe('0x4')](_0xaebe('0x5'),new AGIError(_0xaebe('0x6')));return![];}_0x1050a1=net[_0xaebe('0x7')]();_0x1050a1['listen'](_0x4ec2f8,_0x47495d);_0x1050a1['on'](_0xaebe('0x8'),function(){_0x4ae639[_0xaebe('0x4')]('listening');});_0x1050a1['on']('connection',function(_0x3932ee){_0x1050a1[_0xaebe('0x9')](function(_0x31c156,_0x30eb2f){if(_0x31c156){_0x4ae639[_0xaebe('0x4')](_0xaebe('0x5'),new AGIError('E_AGI_SERVER_ERROR',_0x31c156));}else if(_0x3decf6&&_0x3decf6<0x0){_0x4ae639[_0xaebe('0x4')]('error',new AGIError(_0xaebe('0xa')));_0x3932ee['destroy']();}else if(_0x3decf6&&_0x3decf6>0x0&&_0x3decf6<_0x30eb2f){_0x59aba5+=0x1;_0x4ae639[_0xaebe('0x4')]('error',new AGIError(_0xaebe('0xb'),_0x59aba5));_0x3932ee['destroy']();}else{var _0x5565a7=new AGIChannel(_0x3932ee);_0x5565a7['on'](_0xaebe('0xc'),function(){_0x4ae639[_0xaebe('0x4')](_0xaebe('0xd'),_0x5565a7);});}});});_0x1050a1['on'](_0xaebe('0x5'),function(_0x5a669c){_0x4ae639[_0xaebe('0x4')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x5a669c['code']));});_0x1050a1['on']('close',function(){_0x4ae639[_0xaebe('0x4')](_0xaebe('0xe'),new AGIError(_0xaebe('0xf')));});}process[_0xaebe('0x10')](function(){_0x3716c8();});};util[_0xaebe('0x11')](AGIServer,EventEmitter);module[_0xaebe('0x12')]=function(_0x4b5d8e,_0x52df5b,_0x45a7bc){return new AGIServer(_0x4b5d8e,_0x52df5b,_0x45a7bc);};
\ No newline at end of file
index 77484f1..d98c22b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bb8=['no\x20mail\x20account\x20configured','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','subject','service','host','secure','authentication','auth','pass','template_id','debug','sendMail\x20message','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','sms_account_id','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','answer','yes','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','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','mailbox','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','path','lodash','shelljs','odbc','randomstring','moment','mustache','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','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','map','Intervals','interval','format','%s/sounds/converted/%s','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','query','info','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','createSquareRecording','calleridname','extension','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','lastName','isNil','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','getPause','getPauseById','agentPause','agent','agentUnpause','callerid','agentLogout','internal','%s/%s@from-sip/n','agentLogin','shellCommand','exec','trim','replace','googleTTS','text','google_tts_language','googleDialogflow','key','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','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','tildeASR','appid','appsecret','includes','hasOwnProperty','isString','replaceAllVariables','split','length','replaceAll','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','extra','setVariable','maxRetry','sync','Enter\x20in\x20AGI\x20(%s)\x20block','args','Enter\x20in\x20ANSWER\x20(%s)\x20block','timeout','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','callback_priority','noop','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','options','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Executed\x20command\x20MRCPSynth\x20%s','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','grammar','MRCPRecog','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','no\x20grammar\x20configured','RECOG_CONFIDENCE()','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_INSTANCE','database','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','getQueryOdbc','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','url','Executed\x20command\x20%s','dialogflow','Trying\x20Dialogflow:\x20%s','toUpperCase','speech','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','password','no\x20password\x20configured','bot','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20found','trunk_name','no\x20trunk\x20selected','SIP/%s/%s','opts','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','no\x20file\x20audio\x20selected','file_id','no\x20file\x20audio\x20found','getData','response','maxdigit','toString','test','mindigit','hiddendigitsnum','hiddendigitspos','first','substr','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','message','Amazon\x20Lex\x20ready\x20for\x20fulfillment','out','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','wav','%s/recordings/%s','%s.%s','recordFile','intKey','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','stringify','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','NOBEEP','TILDE_ASR_%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','beep','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','failure','math','Enter\x20in\x20MATH\x20(%s)\x20block','no\x20operation\x20configured','operation','isArray','%s[%s]','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','saydigits','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','number','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail'];(function(_0x5c2475,_0x5b068e){var _0x11270a=function(_0x3bae8d){while(--_0x3bae8d){_0x5c2475['push'](_0x5c2475['shift']());}};_0x11270a(++_0x5b068e);}(_0x3bb8,0x1df));var _0x83bb=function(_0x209413,_0x3e0a60){_0x209413=_0x209413-0x0;var _0x1c7ee4=_0x3bb8[_0x209413];return _0x1c7ee4;};'use strict';var fs=require('fs');var path=require(_0x83bb('0x0'));var util=require('util');var _=require(_0x83bb('0x1'));var sh=require(_0x83bb('0x2'));var odbc=require(_0x83bb('0x3'))();var rs=require(_0x83bb('0x4'));var moment=require(_0x83bb('0x5'));var Mustache=require(_0x83bb('0x6'));var logger=require(_0x83bb('0x7'))(_0x83bb('0x8'));var config=require(_0x83bb('0x9'));var scripts=require(_0x83bb('0xa'));var FILES_PATH=_0x83bb('0xb');var verticesWithRetry=[_0x83bb('0xc'),_0x83bb('0xd'),_0x83bb('0xe')];var AGIVertices=function(_0x5725d0,_0x26c92f,_0x1ac88f){this[_0x83bb('0xf')]=_0x5725d0;this[_0x83bb('0x10')]=_0x26c92f;this[_0x83bb('0x11')]=_0x1ac88f;};AGIVertices[_0x83bb('0x12')][_0x83bb('0x13')]=function(_0x531394,_0x5f2595){this[_0x83bb('0x10')][_0x83bb('0x14')](_0x531394)[_0x83bb('0x15')](function(_0x5f63b8){_0x5f2595(null,_0x5f63b8?_0x5f63b8[_0x83bb('0x16')]:![]);})[_0x83bb('0x17')](function(_0x1589fb){_0x5f2595(_0x1589fb);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x18')]=function(_0x23e87f,_0x290267){this[_0x83bb('0x10')]['getVoiceQueueById'](_0x23e87f)[_0x83bb('0x15')](function(_0x391e7c){_0x290267(null,_0x391e7c?_0x391e7c[_0x83bb('0x16')]:![]);})[_0x83bb('0x17')](function(_0x59c601){_0x290267(_0x59c601);});};AGIVertices[_0x83bb('0x12')]['getSquareProject']=function(_0x3b8ead,_0x4d5036){this[_0x83bb('0x10')][_0x83bb('0x19')](_0x3b8ead)[_0x83bb('0x15')](function(_0x430d69){_0x4d5036(null,_0x430d69?_0x430d69['name']:![]);})[_0x83bb('0x17')](function(_0x438178){_0x4d5036(_0x438178);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x1a')]=function(_0x55213c,_0x3a2ca3){this[_0x83bb('0x10')][_0x83bb('0x1b')](_0x55213c)[_0x83bb('0x15')](function(_0x39c2e4){_0x3a2ca3(null,_0x39c2e4?_0x39c2e4[_0x83bb('0x1c')]:![]);})['catch'](function(_0x22f2de){_0x3a2ca3(_0x22f2de);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x1d')]=function(_0x17a382,_0x3668be){this['rpc'][_0x83bb('0x1e')](_0x17a382)[_0x83bb('0x15')](function(_0x197740){_0x3668be(null,_0x197740?_0x197740[_0x83bb('0x16')]:![]);})[_0x83bb('0x17')](function(_0x2503e0){_0x3668be(_0x2503e0);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x1f')]=function(_0x2ddbd9,_0x44e8ac){this[_0x83bb('0x10')][_0x83bb('0x20')](_0x2ddbd9)[_0x83bb('0x15')](function(_0x531ac0){_0x44e8ac(null,_0x531ac0?_0x531ac0['name']:![]);})[_0x83bb('0x17')](function(_0x491ff9){_0x44e8ac(_0x491ff9);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x21')]=function(_0x3aca2c,_0x387a6d){var _0x55eb1b=this;this[_0x83bb('0x10')][_0x83bb('0x22')](_0x3aca2c)[_0x83bb('0x15')](function(_0x4fcdec){_0x387a6d(null,_0x4fcdec?_0x55eb1b[_0x83bb('0x23')](_0x4fcdec[_0x83bb('0x24')]):![]);})[_0x83bb('0x17')](function(_0x49b767){_0x387a6d(_0x49b767);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x25')]=function(_0xf28b84,_0x47f7c3){this[_0x83bb('0x10')][_0x83bb('0x26')](_0xf28b84)[_0x83bb('0x15')](function(_0x435e64){_0x47f7c3(null,_0x435e64?_0x435e64:![]);})[_0x83bb('0x17')](function(_0x5807c7){_0x47f7c3(_0x5807c7);});};AGIVertices[_0x83bb('0x12')]['sendMailMessage']=function(_0xa619e3,_0x141bc9,_0x31528f){this['mailRpc'][_0x83bb('0x27')](_0xa619e3,_0x141bc9)[_0x83bb('0x15')](function(){_0x31528f(null);})['catch'](function(_0x15161d){_0x31528f(_0x15161d);});};AGIVertices['prototype'][_0x83bb('0x28')]=function(_0xf06d76,_0x374c75){this[_0x83bb('0x10')][_0x83bb('0x29')](_0xf06d76)[_0x83bb('0x15')](function(_0x185c07){if(_0x185c07){if(_0x185c07[_0x83bb('0x2a')]){_0x374c75(null,[_0x185c07['interval']]);}else{_0x374c75(null,_[_0x83bb('0x2b')](_0x185c07[_0x83bb('0x2c')],_0x83bb('0x2d')));}}else{_0x374c75(null,![]);}})[_0x83bb('0x17')](function(_0x1f78a3){_0x374c75(_0x1f78a3);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x23')]=function(_0x33e422){return util[_0x83bb('0x2e')](_0x83bb('0x2f'),FILES_PATH,_0x33e422);};AGIVertices[_0x83bb('0x12')]['getQueryOdbc']=function(_0x390345,_0x56534e,_0x14f990){odbc['open'](_0x390345,function(_0x40219c){if(_0x40219c){logger[_0x83bb('0x30')](_0x83bb('0x31'),_0x40219c);_0x14f990(_0x40219c);}else{logger['info'](_0x83bb('0x32'));odbc[_0x83bb('0x33')](_0x56534e,function(_0x6e1c8,_0x2a836c){if(_0x6e1c8){logger[_0x83bb('0x34')](_0x83bb('0x35'),_0x56534e);_0x14f990(_0x6e1c8);}else{logger['info'](_0x83bb('0x36'),_0x56534e);odbc[_0x83bb('0x37')](function(_0x2bf5de){if(_0x2bf5de){logger['error']('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x2bf5de);}_0x14f990(null,_0x2a836c);});}});}});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x38')]=function(_0x2ece50,_0x578dfc){this[_0x83bb('0x10')][_0x83bb('0x39')](_0x2ece50)[_0x83bb('0x15')](function(_0x3f2dd2){_0x578dfc(null,_0x3f2dd2?_0x3f2dd2:![]);})['catch'](function(_0x573096){_0x578dfc(_0x573096);});};AGIVertices['prototype'][_0x83bb('0x3a')]=function(_0x1ecb2d,_0x5d6bff){this[_0x83bb('0x10')]['createSmsMessage'](_0x1ecb2d)[_0x83bb('0x15')](function(_0x459ab4){_0x5d6bff(null,_0x459ab4);})[_0x83bb('0x17')](function(_0x16421f){_0x5d6bff(_0x16421f);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x3b')]=function(_0x621fe4,_0x5b8199,_0x3a33af){this[_0x83bb('0x10')][_0x83bb('0x3b')]({'uniqueid':this[_0x83bb('0xf')][_0x83bb('0x3c')],'node':_0x621fe4[_0x83bb('0x3d')],'application':_0x621fe4[_0x83bb('0x3e')],'data':_0x5b8199||null,'project_name':this['channel'][_0x83bb('0x3f')],'callerid':this[_0x83bb('0xf')]['callerid']})[_0x83bb('0x15')](function(_0x4e79fb){if(_0x3a33af){_0x3a33af(null,_0x4e79fb);}})['catch'](function(_0x3b7abf){if(_0x3a33af){_0x3a33af(_0x3b7abf);}});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x40')]=function(_0x5be95b,_0x1851d5,_0x123165,_0x1a0bbd){this[_0x83bb('0x10')][_0x83bb('0x40')]({'uniqueid':this[_0x83bb('0xf')][_0x83bb('0x3c')],'callerid':this[_0x83bb('0xf')]['callerid'],'calleridname':this[_0x83bb('0xf')][_0x83bb('0x41')],'context':this[_0x83bb('0xf')]['context'],'extension':this['channel'][_0x83bb('0x42')],'priority':this[_0x83bb('0xf')]['priority'],'accountcode':this[_0x83bb('0xf')][_0x83bb('0x43')],'dnid':this[_0x83bb('0xf')][_0x83bb('0x44')],'projectName':this['channel'][_0x83bb('0x3f')],'saveName':_0x1851d5,'filename':_0x5be95b[_0x83bb('0x45')]||_0x1851d5,'savePath':_0x123165})[_0x83bb('0x15')](function(_0x2355b6){_0x1a0bbd(null,_0x2355b6);})[_0x83bb('0x17')](function(_0x518001){_0x1a0bbd(_0x518001);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x46')]=function(_0x128c59,_0x500b5d,_0x182068){this[_0x83bb('0x10')][_0x83bb('0x46')]({'uniqueid':this[_0x83bb('0xf')][_0x83bb('0x3c')],'body':_0x128c59,'direction':_0x500b5d})['then'](function(_0x2af4ee){if(_0x182068){_0x182068(null,_0x2af4ee);}})[_0x83bb('0x17')](function(_0x5255ea){if(_0x182068){_0x182068(_0x5255ea);}});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x47')]=function(_0x59cdd2,_0x59ab25){this[_0x83bb('0x10')][_0x83bb('0x47')]({'firstName':_[_0x83bb('0x48')](_0x59cdd2[_0x83bb('0x16')])||_['isNil'](_0x59cdd2[_0x83bb('0x16')])?'callback_'+Math['random']():_0x59cdd2['name'],'lastName':_[_0x83bb('0x48')](_0x59cdd2[_0x83bb('0x49')])||_[_0x83bb('0x4a')](_0x59cdd2['lastName'])?null:_0x59cdd2[_0x83bb('0x49')],'phone':_0x59cdd2[_0x83bb('0x4b')],'ListId':_0x59cdd2[_0x83bb('0x4c')],'scheduledAt':_0x59cdd2[_0x83bb('0x4d')],'callbackUniqueid':this[_0x83bb('0xf')]['uniqueid'],'tags':_0x83bb('0x4e'),'description':_0x83bb('0x4f')+_0x59cdd2[_0x83bb('0x4d')]['toString'](),'priority':_0x59cdd2['callback_priority']})[_0x83bb('0x15')](function(_0x18e87b){_0x59ab25(null,_0x18e87b);})[_0x83bb('0x17')](function(_0x313ddd){_0x59ab25(_0x313ddd);});};AGIVertices['prototype'][_0x83bb('0x50')]=function(_0x1b9097,_0x1f4a23){this[_0x83bb('0x10')][_0x83bb('0x51')](_0x1b9097)[_0x83bb('0x15')](function(_0x389f89){_0x1f4a23(null,_0x389f89?_0x389f89[_0x83bb('0x16')]:![]);})[_0x83bb('0x17')](function(_0x18c63e){_0x1f4a23(_0x18c63e);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x52')]=function(_0x3a7ca6,_0x3e6d15,_0x5ba0c0){var _0x59fa25={'role':_0x83bb('0x53')};_0x59fa25[_0x3a7ca6]=this[_0x83bb('0xf')]['callerid'];this[_0x83bb('0x10')]['agentPause'](_0x59fa25,_0x3e6d15,this[_0x83bb('0xf')][_0x83bb('0x3c')])['then'](function(_0x25c9f4){_0x5ba0c0(null,_[_0x83bb('0x4a')](_0x25c9f4)?![]:!![]);})[_0x83bb('0x17')](function(_0x3d9a84){logger['error'](_0x3d9a84);_0x5ba0c0(null,![]);});};AGIVertices['prototype'][_0x83bb('0x54')]=function(_0x36b7ea,_0x307aa8){var _0x470b45={'role':_0x83bb('0x53')};_0x470b45[_0x36b7ea]=this[_0x83bb('0xf')][_0x83bb('0x55')];this[_0x83bb('0x10')][_0x83bb('0x54')](_0x470b45)[_0x83bb('0x15')](function(_0x4d5a6e){_0x307aa8(null,_[_0x83bb('0x4a')](_0x4d5a6e)?![]:!![]);})[_0x83bb('0x17')](function(_0x169484){logger[_0x83bb('0x30')](_0x169484);_0x307aa8(null,![]);});};AGIVertices[_0x83bb('0x12')]['agentLogout']=function(_0x318578,_0xd1de0){var _0x202a91={'role':_0x83bb('0x53')};_0x202a91[_0x318578]=this[_0x83bb('0xf')][_0x83bb('0x55')];this[_0x83bb('0x10')][_0x83bb('0x56')](_0x202a91)[_0x83bb('0x15')](function(_0xc0cd9c){_0xd1de0(null,_[_0x83bb('0x4a')](_0xc0cd9c)?![]:!![]);})[_0x83bb('0x17')](function(_0x1e222f){logger[_0x83bb('0x30')](_0x1e222f);_0xd1de0(null,![]);});};AGIVertices[_0x83bb('0x12')]['agentLogin']=function(_0x4b9154,_0x593c99){var _0x2b188c={'role':_0x83bb('0x53')};_0x2b188c[_0x4b9154]=this[_0x83bb('0xf')][_0x83bb('0x55')];var _0x315e80=_0x4b9154!=_0x83bb('0x57')?util[_0x83bb('0x2e')](_0x83bb('0x58'),'LOCAL',this[_0x83bb('0xf')][_0x83bb('0x55')]):undefined;this[_0x83bb('0x10')][_0x83bb('0x59')](_0x2b188c,_0x315e80)[_0x83bb('0x15')](function(_0x3bc110){_0x593c99(null,_[_0x83bb('0x4a')](_0x3bc110)?![]:!![]);})[_0x83bb('0x17')](function(_0x2b08bd){logger[_0x83bb('0x30')](_0x2b08bd);_0x593c99(null,![]);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x5a')]=function(_0x12ec15,_0x4b23ad){sh[_0x83bb('0x5b')](_[_0x83bb('0x5c')](_0x12ec15),function(_0x11b097,_0x325dac){var _0x6af75a=_0x325dac[_0x83bb('0x5d')](/(\r\n|\n|\r)/gm,'');_0x4b23ad(null,_0x6af75a);});};AGIVertices['prototype'][_0x83bb('0x5e')]=function(_0x57f50c,_0x3db944){scripts[_0x83bb('0x5e')](_0x57f50c[_0x83bb('0x5f')],_0x57f50c[_0x83bb('0x60')]||'en',0x1)[_0x83bb('0x15')](function(_0x2110e0){_0x3db944(null,_0x2110e0);})[_0x83bb('0x17')](function(_0x3edde2){_0x3db944(_0x3edde2);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x61')]=function(_0x38e0d0,_0x2e2a6a){scripts[_0x83bb('0x61')](this[_0x83bb('0xf')]['uniqueid'],_0x38e0d0[_0x83bb('0x62')],_0x38e0d0['text'],_0x38e0d0['dialogflow_language']||'en')['then'](function(_0x31f6a3){_0x2e2a6a(null,_0x31f6a3);})[_0x83bb('0x17')](function(_0x4162af){_0x2e2a6a(_0x4162af);});};AGIVertices[_0x83bb('0x12')]['sestekNDA']=function(_0x54bfcd,_0xf14570){scripts[_0x83bb('0x63')](this[_0x83bb('0xf')],_0x54bfcd)[_0x83bb('0x15')](function(_0x58c6fc){_0xf14570(null,_0x58c6fc);})['catch'](function(_0x1f1fa5){_0xf14570(_0x1f1fa5);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x64')]=function(_0x39b18c,_0x1debcb){scripts[_0x83bb('0x64')](_0x39b18c[_0x83bb('0x62')],_0x39b18c[_0x83bb('0x5f')],_0x39b18c[_0x83bb('0x65')]||_0x83bb('0x66'),_0x39b18c[_0x83bb('0x67')])[_0x83bb('0x15')](function(_0x27b3c6){_0x1debcb(null,_0x27b3c6);})[_0x83bb('0x17')](function(_0x59eb33){_0x1debcb(_0x59eb33);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x68')]=function(_0xabbb24,_0xd3721,_0x2bd755){scripts[_0x83bb('0x68')](_0xd3721,_0xabbb24[_0x83bb('0x62')],_0xabbb24['ispeech_asr_language']||_0x83bb('0x66'),this[_0x83bb('0x69')](_0xabbb24[_0x83bb('0x6a')])?_0xabbb24[_0x83bb('0x6a')]:undefined)[_0x83bb('0x15')](function(_0x5ad5ec){_0x2bd755(null,_0x5ad5ec);})[_0x83bb('0x17')](function(_0x1448e4){_0x2bd755(_0x1448e4);});};AGIVertices[_0x83bb('0x12')][_0x83bb('0x6b')]=function(_0x18235b,_0x1e55df){scripts[_0x83bb('0x6b')](_0x18235b[_0x83bb('0x6c')],_0x18235b[_0x83bb('0x6d')],_0x18235b[_0x83bb('0x6e')],_0x18235b[_0x83bb('0x6f')]||_0x83bb('0x70'),_0x18235b[_0x83bb('0x5f')],_0x18235b[_0x83bb('0x71')]||_0x83bb('0x5f'))[_0x83bb('0x15')](function(_0x463b26){_0x1e55df(null,_0x463b26);})[_0x83bb('0x17')](function(_0x21c5ba){_0x1e55df(_0x21c5ba);});};AGIVertices['prototype'][_0x83bb('0x72')]=function(_0x1f8fe4,_0x59b516){scripts[_0x83bb('0x72')](this[_0x83bb('0xf')][_0x83bb('0x3c')],_0x1f8fe4['aws_access_key_id'],_0x1f8fe4[_0x83bb('0x6d')],_0x1f8fe4[_0x83bb('0x73')],_0x1f8fe4[_0x83bb('0x5f')],_0x1f8fe4[_0x83bb('0x74')])['then'](function(_0x19f559){_0x59b516(null,_0x19f559);})['catch'](function(_0x4cdcc8){_0x59b516(_0x4cdcc8);});};AGIVertices['prototype'][_0x83bb('0x75')]=function(_0x5ae544,_0x3a04f9,_0x6b2e13){scripts[_0x83bb('0x75')](_0x3a04f9,_0x5ae544[_0x83bb('0x62')],_0x5ae544['google_asr_language']||'en-US')[_0x83bb('0x15')](function(_0x34a2f9){_0x6b2e13(null,_0x34a2f9);})[_0x83bb('0x17')](function(_0x244852){_0x6b2e13(_0x244852);});};AGIVertices[_0x83bb('0x12')]['tildeASR']=function(_0x4eee96,_0x403d3,_0x57e139){scripts[_0x83bb('0x76')](_0x403d3,_0x4eee96[_0x83bb('0x77')],_0x4eee96[_0x83bb('0x78')],_0x4eee96['uri'])[_0x83bb('0x15')](function(_0x53cadd){_0x57e139(null,_0x53cadd);})[_0x83bb('0x17')](function(_0x43a42e){_0x57e139(_0x43a42e);});};AGIVertices['prototype']['clear']=function(_0x1422af){var _0x3efc4f=_[_0x83bb('0x79')](verticesWithRetry,_0x1422af[_0x83bb('0x3e')])?_0x1422af:_['clone'](_0x1422af);for(var _0x80af19 in _0x3efc4f){if(_0x3efc4f[_0x83bb('0x7a')](_0x80af19)){if(_0x3efc4f[_0x80af19]&&_[_0x83bb('0x7b')](_0x3efc4f[_0x80af19])){_0x3efc4f[_0x80af19]=this[_0x83bb('0x7c')](_0x3efc4f[_0x80af19]);}}}return _0x3efc4f;};AGIVertices['prototype'][_0x83bb('0x7c')]=function(_0x1ee1b0){var _0x2ba175=_0x1ee1b0[_0x83bb('0x7d')]('{');for(var _0x4db7ec=0x1;_0x4db7ec<_0x2ba175['length'];_0x4db7ec+=0x1){var _0xc5d7b0=_0x2ba175[_0x4db7ec][_0x83bb('0x7d')]('}');if(_0xc5d7b0[_0x83bb('0x7e')]>0x1){_0x1ee1b0=_0x1ee1b0[_0x83bb('0x7f')]('{'+_0xc5d7b0[0x0]+'}',this[_0x83bb('0xf')][_0x83bb('0x13')](_0xc5d7b0[0x0])['extra']||_0xc5d7b0[0x0]);}}if(_0x2ba175['length']===0x1){return _0x1ee1b0['toString']();}return this[_0x83bb('0x7c')](_0x1ee1b0);};AGIVertices[_0x83bb('0x12')][_0x83bb('0x80')]=function(_0x4ee403,_0x4bd6d2){var _0x19348e=this[_0x83bb('0xf')][_0x83bb('0x13')](_0x4ee403);if(_0x19348e[_0x83bb('0x81')]===-0x1){return _0x19348e;}logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x82'),_0x4bd6d2,_0x19348e[_0x83bb('0x83')]));return this[_0x83bb('0xf')][_0x83bb('0x84')](_0x4bd6d2,_0x19348e[_0x83bb('0x83')]);};AGIVertices['prototype'][_0x83bb('0x69')]=function(_0x35fa76){return _0x35fa76&&_0x35fa76!=='0'&&_0x35fa76!=='-1'&&_0x35fa76!=='';};AGIVertices[_0x83bb('0x12')][_0x83bb('0x85')]=function(_0x1fb0fd){this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x1fb0fd,'-');_0x1fb0fd['retry']=_0x1fb0fd[_0x83bb('0x85')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype']['agi']=function(_0x2ef2d1){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x87'),_0x2ef2d1[_0x83bb('0x3d')]));return this[_0x83bb('0xf')][_0x83bb('0x8')]([_0x2ef2d1['command'],_0x2ef2d1[_0x83bb('0x88')]]);};AGIVertices[_0x83bb('0x12')]['answer']=function(_0x49092e){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x89'),_0x49092e[_0x83bb('0x3d')]));if(this[_0x83bb('0x69')](_0x49092e['timeout'])){logger['info'](util[_0x83bb('0x2e')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x49092e[_0x83bb('0x8a')]));var _0x411c3c=this[_0x83bb('0xf')]['wait'](_0x49092e[_0x83bb('0x8a')]);if(_0x411c3c[_0x83bb('0x81')]===-0x1){return _0x411c3c;}}return this[_0x83bb('0xf')]['answer']();};AGIVertices[_0x83bb('0x12')]['callback']=function(_0x5cb47f){logger[_0x83bb('0x34')](util['format'](_0x83bb('0x8b'),_0x5cb47f[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x5cb47f[_0x83bb('0x4c')])){return this['channel'][_0x83bb('0x30')](_0x5cb47f,_0x83bb('0x8c'));}_0x5cb47f[_0x83bb('0x4d')]=moment();if(this[_0x83bb('0x69')](_0x5cb47f[_0x83bb('0x8d')])){_0x5cb47f[_0x83bb('0x4d')]=moment()['add'](_0x5cb47f[_0x83bb('0x8d')],'minutes');}if(!this[_0x83bb('0x69')](_0x5cb47f[_0x83bb('0x8e')])){_0x5cb47f[_0x83bb('0x8e')]=0x2;}this[_0x83bb('0x47')][_0x83bb('0x86')](this,_0x5cb47f);return this['channel'][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x90'),_0x5cb47f[_0x83bb('0x4b')],_0x5cb47f[_0x83bb('0x4c')],_0x5cb47f[_0x83bb('0x4d')]));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x91')]=function(_0xefc70c){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x92'),_0xefc70c[_0x83bb('0x3d')]));var _0x21555f=this[_0x83bb('0xf')]['exec'](_0xefc70c[_0x83bb('0x93')],_0xefc70c[_0x83bb('0x94')]);if(_0x21555f[_0x83bb('0x81')]===-0x1){return _0x21555f;}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x95'),_0xefc70c[_0x83bb('0x93')],_0xefc70c[_0x83bb('0x94')]));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x96')]=function(_0x2d1440){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x97'),_0x2d1440[_0x83bb('0x3d')]));if(!this['isConfigured'](_0x2d1440[_0x83bb('0x5f')])){return this['channel'][_0x83bb('0x8f')](_0x83bb('0x98'));}var _0x1b8803='\x22'+_0x2d1440[_0x83bb('0x5f')]+'\x22';if(this[_0x83bb('0x69')](_0x2d1440[_0x83bb('0x94')])){_0x1b8803+=','+_0x2d1440[_0x83bb('0x94')];}var _0x465c1c=this['channel']['exec'](_0x83bb('0x99'),_0x1b8803);if(_0x465c1c[_0x83bb('0x81')]===-0x1){return _0x465c1c;}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')]('Executed\x20command\x20MRCPSynth\x20%s',_0x1b8803));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x9a')]=function(_0x3b3b62){logger['info'](util['format'](_0x83bb('0x9b'),_0x3b3b62[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x3b3b62[_0x83bb('0x5f')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x98'));}var _0x2e865b='\x22'+_0x3b3b62[_0x83bb('0x5f')]+'\x22';if(this[_0x83bb('0x69')](_0x3b3b62[_0x83bb('0x94')])){_0x2e865b+=','+_0x3b3b62[_0x83bb('0x94')];}var _0x53acfe=this[_0x83bb('0xf')][_0x83bb('0x5b')](_0x83bb('0x99'),_0x2e865b);if(_0x53acfe['result']===-0x1){return _0x53acfe;}return this['channel'][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x9c'),_0x2e865b));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x9d')]=function(_0x16ed06){logger[_0x83bb('0x34')](util['format'](_0x83bb('0x9e'),_0x16ed06[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x16ed06[_0x83bb('0x9f')])){return this['channel'][_0x83bb('0x8f')]('no\x20grammar\x20configured');}var _0x40b7ac=_0x16ed06['grammar'];if(this['isConfigured'](_0x16ed06[_0x83bb('0x94')])){_0x40b7ac+=','+_0x16ed06[_0x83bb('0x94')];}var _0x374fd7=this['channel'][_0x83bb('0x5b')](_0x83bb('0xa0'),_0x40b7ac);if(_0x374fd7[_0x83bb('0x81')]===-0x1){return _0x374fd7;}var _0x403215=this[_0x83bb('0x80')]('RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE');if(_0x403215[_0x83bb('0x81')]===-0x1){return _0x403215;}var _0x5732b9=this['getAndSetVariable'](_0x83bb('0xa1'),_0x83bb('0xa2'));if(_0x5732b9[_0x83bb('0x81')]===-0x1){return _0x5732b9;}var _0xb54743=this['getAndSetVariable'](_0x83bb('0xa3'),'LUMENVOX_ASR_INSTANCE');if(_0xb54743[_0x83bb('0x81')]===-0x1){return _0xb54743;}return this['channel'][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0xa4'),_0x40b7ac));};AGIVertices['prototype'][_0x83bb('0xa5')]=function(_0x2a29b8){logger[_0x83bb('0x34')](util['format'](_0x83bb('0xa6'),_0x2a29b8[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x2a29b8[_0x83bb('0x9f')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0xa7'));}var _0x1179ce=_0x2a29b8[_0x83bb('0x9f')];if(this[_0x83bb('0x69')](_0x2a29b8[_0x83bb('0x94')])){_0x1179ce+=','+_0x2a29b8[_0x83bb('0x94')];}var _0x5205e=this[_0x83bb('0xf')][_0x83bb('0x5b')]('MRCPRecog',_0x1179ce);if(_0x5205e[_0x83bb('0x81')]===-0x1){return _0x5205e;}var _0x3f5a6c=this[_0x83bb('0x80')](_0x83bb('0xa8'),_0x83bb('0xa9'));if(_0x3f5a6c[_0x83bb('0x81')]===-0x1){return _0x3f5a6c;}var _0x333b39=this['getAndSetVariable'](_0x83bb('0xa1'),'SESTEK_ASR_TRANSCRIPT');if(_0x333b39[_0x83bb('0x81')]===-0x1){return _0x333b39;}var _0x1b187b=this[_0x83bb('0x80')]('RECOG_INSTANCE()',_0x83bb('0xaa'));if(_0x1b187b['result']===-0x1){return _0x1b187b;}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format'](_0x83bb('0xa4'),_0x1179ce));};AGIVertices[_0x83bb('0x12')][_0x83bb('0xab')]=function(_0x13f7c7){logger[_0x83bb('0x34')](util['format']('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x13f7c7[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x13f7c7['odbc_id'])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x13f7c7,_0x83bb('0xac'));}var _0x25dd4d=this[_0x83bb('0x1a')][_0x83bb('0x86')](this,_0x13f7c7[_0x83bb('0xad')]);if(!_0x25dd4d){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x13f7c7,_0x83bb('0xae'));}if(!this[_0x83bb('0x69')](_0x13f7c7[_0x83bb('0x33')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x13f7c7,_0x83bb('0xaf'));}var _0x23ee93=_0x13f7c7['query'][_0x83bb('0x5d')](/(\r\n|\n|\r)/gm,'\x20');this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0xb0'),_0x23ee93));var _0x53647d=this[_0x83bb('0xb1')][_0x83bb('0x86')](this,_0x25dd4d,_0x23ee93);this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x13f7c7,_0x23ee93);if(!this['isConfigured'](_0x13f7c7[_0x83bb('0xb2')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0xb3'));}var _0x54e684=this['getVariable'][_0x83bb('0x86')](this,_0x13f7c7['variable_id']);if(!_0x54e684){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x13f7c7,_0x83bb('0xb4'));}var _0x348d83=this;_0x53647d[_0x83bb('0xb5')](function(_0x4a455c,_0xc1882d){Object[_0x83bb('0xb6')](_0x4a455c)[_0x83bb('0xb5')](function(_0x1735c8){_0x348d83[_0x83bb('0xf')][_0x83bb('0x84')](util[_0x83bb('0x2e')](_0x83bb('0xb7'),_0x54e684,_0xc1882d,_0x1735c8),_0x4a455c[_0x1735c8]);});});this[_0x83bb('0xf')][_0x83bb('0x84')](util['format'](_0x83bb('0xb8'),_0x54e684),_0x53647d[_0x83bb('0x7e')]);return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0xb9'),_0x54e684));};AGIVertices['prototype'][_0x83bb('0xba')]=function(_0x582ca9){logger['debug'](util['format']('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x582ca9[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x582ca9[_0x83bb('0xbb')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x582ca9,_0x83bb('0xbc'));}var _0x87feae=this['getUser'][_0x83bb('0x86')](this,_0x582ca9[_0x83bb('0xbb')]);if(!_0x87feae){return this[_0x83bb('0xf')]['error'](_0x582ca9,_0x83bb('0xbd'));}var _0x1f5d03=this['channel']['exec'](_0x83bb('0xbe'),[util[_0x83bb('0x2e')]('SIP/%s',_0x87feae),_0x582ca9[_0x83bb('0x8a')],_0x582ca9['opts'],_0x582ca9[_0x83bb('0xbf')]]);if(_0x1f5d03['result']===-0x1){return _0x1f5d03;}return this[_0x83bb('0xf')]['noop'](util['format'](_0x83bb('0xc0'),_0x83bb('0xbe')));};AGIVertices['prototype'][_0x83bb('0xc1')]=function(_0x39132b){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x39132b['label']));if(!this['isConfigured'](_0x39132b[_0x83bb('0x62')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')]('no\x20key\x20configured');}if(!this[_0x83bb('0x69')](_0x39132b[_0x83bb('0x5f')])){return this['channel'][_0x83bb('0x8f')](_0x83bb('0x98'));}this[_0x83bb('0xf')]['bot']=!![];this['createSquareDetailsReport'](_0x39132b);this[_0x83bb('0x46')](_0x39132b[_0x83bb('0x5f')],'in');this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0xc2'),_0x39132b['text']));var _0x3fca01=this['googleDialogflow'][_0x83bb('0x86')](this,_0x39132b);if(_0x3fca01){for(var _0x25a769 in _0x3fca01){if(_0x3fca01[_0x83bb('0x7a')](_0x25a769)){this[_0x83bb('0xf')][_0x83bb('0x84')](util[_0x83bb('0x2e')]('DIALOGFLOW_%s',_0x25a769[_0x83bb('0xc3')]()),_0x3fca01[_0x25a769]);}}this[_0x83bb('0x46')](_0x3fca01[_0x83bb('0xc4')],'out');return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0xc5'),_0x3fca01[_0x83bb('0xc4')]));}return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x39132b,_0x83bb('0xc6'));};AGIVertices[_0x83bb('0x12')][_0x83bb('0xc7')]=function(_0x145d8e){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0xc8'),_0x145d8e[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x145d8e[_0x83bb('0xc9')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0xca'));}if(!this['isConfigured'](_0x145d8e[_0x83bb('0xcb')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')]('no\x20username\x20configured');}if(!this[_0x83bb('0x69')](_0x145d8e[_0x83bb('0xcc')])){return this[_0x83bb('0xf')]['noop'](_0x83bb('0xcd'));}if(!this[_0x83bb('0x69')](_0x145d8e['ndassistant_url'])){return this['channel']['noop'](_0x83bb('0x98'));}this[_0x83bb('0xf')][_0x83bb('0xce')]=!![];this['createSquareDetailsReport'](_0x145d8e);this[_0x83bb('0x46')](_0x145d8e[_0x83bb('0x5f')],'in');this[_0x83bb('0xf')]['noop'](util[_0x83bb('0x2e')](_0x83bb('0xcf'),_0x145d8e['text']));var _0x5f5a12=this[_0x83bb('0x63')][_0x83bb('0x86')](this,_0x145d8e);if(_0x5f5a12){for(var _0x21b820 in _0x5f5a12){if(_0x5f5a12[_0x83bb('0x7a')](_0x21b820)){this['channel'][_0x83bb('0x84')](util[_0x83bb('0x2e')](_0x83bb('0xd0'),_0x21b820[_0x83bb('0xc3')]()),_0x5f5a12[_0x21b820]);}}this[_0x83bb('0x46')](_0x5f5a12[_0x83bb('0xc4')],'out');if(_0x5f5a12['audiofile']){this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0x5f5a12[_0x83bb('0xd1')]));var _0x1ec1fc=this['channel'][_0x83bb('0xd2')](_0x5f5a12[_0x83bb('0xd1')]);try{fs[_0x83bb('0xd3')](_0x5f5a12[_0x83bb('0xd1')]+_0x83bb('0xd4'));}catch(_0x17a47a){logger['error'](_0x17a47a);}return _0x1ec1fc;}else{return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0xd5'),_0x5f5a12[_0x83bb('0xc4')]));}}return this['channel'][_0x83bb('0x30')](_0x145d8e,_0x83bb('0xd6'));};AGIVertices[_0x83bb('0x12')][_0x83bb('0xd7')]=function(_0x481c65){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0xd8'),_0x481c65[_0x83bb('0x3d')]));return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0xd7'));};AGIVertices[_0x83bb('0x12')][_0x83bb('0xd9')]=function(_0x211f8d){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0xda'),_0x211f8d[_0x83bb('0x3d')]));var _0x27b40a='';if(_0x211f8d['trunk_id']){if(!this['isConfigured'](_0x211f8d[_0x83bb('0xdb')])){return this['channel'][_0x83bb('0x30')](_0x211f8d,'no\x20trunk\x20selected');}else{var _0x33a088=parseInt(_0x211f8d[_0x83bb('0xdb')],0xa);if(isNaN(_0x33a088)){_0x27b40a=_0x211f8d[_0x83bb('0xdb')];}else{_0x27b40a=this[_0x83bb('0x1f')][_0x83bb('0x86')](this,_0x211f8d['trunk_id']);if(!_0x27b40a){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x211f8d,_0x83bb('0xdc'));}}}}else if(_0x211f8d[_0x83bb('0xdd')]){_0x27b40a=_0x211f8d['trunk_name'];}else{return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x211f8d,_0x83bb('0xde'));}var _0x49fc4e=this['channel'][_0x83bb('0x5b')](_0x83bb('0xbe'),[util[_0x83bb('0x2e')](_0x83bb('0xdf'),_0x27b40a,_0x211f8d[_0x83bb('0x4b')]),_0x211f8d[_0x83bb('0x8a')],_0x211f8d[_0x83bb('0xe0')],_0x211f8d[_0x83bb('0xbf')]]);if(_0x49fc4e[_0x83bb('0x81')]===-0x1){return _0x49fc4e;}return this[_0x83bb('0xf')]['noop'](util[_0x83bb('0x2e')](_0x83bb('0xc0'),_0x83bb('0xbe')));};AGIVertices['prototype'][_0x83bb('0xe1')]=function(_0x1d2299){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0xe2'),_0x1d2299['label']));return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0xe1'));};AGIVertices[_0x83bb('0x12')][_0x83bb('0xd')]=function(_0x31f4d8){logger[_0x83bb('0x34')](util['format'](_0x83bb('0xe3'),_0x31f4d8[_0x83bb('0x3d')]));if(_0x31f4d8[_0x83bb('0xe4')]===0x0){return this[_0x83bb('0x85')](_0x31f4d8);}_0x31f4d8[_0x83bb('0xe4')]-=0x1;if(!this[_0x83bb('0x69')](_0x31f4d8['file_id'])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x31f4d8,_0x83bb('0xe5'));}var _0x30dc06=this[_0x83bb('0x21')][_0x83bb('0x86')](this,_0x31f4d8[_0x83bb('0xe6')]);if(!_0x30dc06){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x31f4d8,_0x83bb('0xe7'));}if(!this[_0x83bb('0x69')](_0x31f4d8['variable_id'])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x83bb('0xb3'));}var _0x2fa95a=this[_0x83bb('0xf')][_0x83bb('0xe8')](_0x30dc06,_0x31f4d8[_0x83bb('0xe9')],_0x31f4d8[_0x83bb('0xea')]);var _0xc4102b=_0x2fa95a[_0x83bb('0x81')]?_0x2fa95a[_0x83bb('0x81')][_0x83bb('0xeb')]():'';logger[_0x83bb('0x34')](_0x83bb('0xec'),JSON['stringify'](_0x2fa95a));if(_0x2fa95a[_0x83bb('0x81')]===-0x1){this['createSquareDetailsReport'][_0x83bb('0x86')](this,_0x31f4d8,_0xc4102b);return _0x2fa95a;}else if(_0x2fa95a[_0x83bb('0x83')]===_0x83bb('0x8a')){_0x2fa95a[_0x83bb('0x81')]=_0xc4102b[_0x83bb('0x7e')]>=parseInt(_0x31f4d8['mindigit'])?'x':'i';}else{_0x2fa95a['result']=_0xc4102b['length']>=parseInt(_0x31f4d8[_0x83bb('0xed')])&&_0xc4102b[_0x83bb('0x7e')]<=parseInt(_0x31f4d8[_0x83bb('0xea')])?'x':'i';}var _0x280023=this[_0x83bb('0x13')][_0x83bb('0x86')](this,_0x31f4d8[_0x83bb('0xb2')]);if(!_0x280023){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x31f4d8,_0x83bb('0xb4'));}this[_0x83bb('0xf')][_0x83bb('0x84')](_0x280023,_0xc4102b);if(this[_0x83bb('0x69')](_0x31f4d8[_0x83bb('0xee')])){var _0x4a5a17=parseInt(_0x31f4d8[_0x83bb('0xee')],0xa);var _0x486432=rs['generate']({'charset':'*','length':_0x4a5a17});var _0x1191a9=_0xc4102b[_0x83bb('0x7e')];if(_0x1191a9>0x0){if(_0x1191a9>_0x4a5a17){this[_0x83bb('0x3b')]['sync'](this,_0x31f4d8,_0x31f4d8[_0x83bb('0xef')]===_0x83bb('0xf0')?_0x486432+_0xc4102b[_0x83bb('0xf1')](_0x4a5a17):_0xc4102b[_0x83bb('0xf1')](0x0,_0x1191a9-_0x4a5a17)+_0x486432);}else{this[_0x83bb('0x3b')]['sync'](this,_0x31f4d8,rs[_0x83bb('0xf2')]({'charset':'*','length':_0x1191a9}));}}else{this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x31f4d8,'');}}else{this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x31f4d8,_0xc4102b);}return _0x2fa95a;};AGIVertices['prototype'][_0x83bb('0xe')]=function(_0x133f87){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0xf3'),_0x133f87[_0x83bb('0x3d')]));return this[_0x83bb('0xd')](_0x133f87);};AGIVertices[_0x83bb('0x12')]['goal']=function(_0x2cda48){logger[_0x83bb('0x34')](util['format']('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x2cda48['label']));this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x2cda48,_0x2cda48[_0x83bb('0xf4')]);return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0xf5'),_0x2cda48['goalname']));};AGIVertices[_0x83bb('0x12')][_0x83bb('0xf6')]=function(_0x257896){logger[_0x83bb('0x34')](util['format'](_0x83bb('0xf7'),_0x257896['label']));if(!this['isConfigured'](_0x257896['aws_access_key_id'])||!this[_0x83bb('0x69')](_0x257896[_0x83bb('0x6d')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x83bb('0x69')](_0x257896[_0x83bb('0x5f')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x98'));}this[_0x83bb('0xf')]['noop'](util[_0x83bb('0x2e')](_0x83bb('0xf8'),_0x257896[_0x83bb('0x5f')]));var _0x564cb7=this[_0x83bb('0x6b')]['sync'](this,_0x257896);if(_0x564cb7){this[_0x83bb('0xf')]['noop'](util[_0x83bb('0x2e')](_0x83bb('0xf9'),_0x564cb7));var _0x25403d=this[_0x83bb('0xf')][_0x83bb('0xd2')](_0x564cb7);try{fs[_0x83bb('0xd3')](_0x564cb7+'.wav');}catch(_0x373d98){logger[_0x83bb('0x30')](_0x373d98);}return _0x25403d;}return this['channel'][_0x83bb('0x30')](_0x257896,_0x83bb('0xfa'));};AGIVertices['prototype'][_0x83bb('0xfb')]=function(_0x3ac779){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0xfc'),_0x3ac779[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x3ac779['aws_access_key_id'])||!this[_0x83bb('0x69')](_0x3ac779['aws_secret_access_key'])){return this['channel'][_0x83bb('0x8f')](_0x83bb('0xfd'));}if(!this[_0x83bb('0x69')](_0x3ac779[_0x83bb('0x74')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0xfe'));}if(!this[_0x83bb('0x69')](_0x3ac779['text'])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x98'));}this[_0x83bb('0xf')][_0x83bb('0xce')]=!![];this[_0x83bb('0x3b')](_0x3ac779);this[_0x83bb('0x46')](_0x3ac779[_0x83bb('0x5f')],'in');this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0xff'),_0x3ac779[_0x83bb('0x5f')]));var _0x47062e=this['awsLex']['sync'](this,_0x3ac779);if(_0x47062e){for(var _0x20247d in _0x47062e){if(_0x47062e['hasOwnProperty'](_0x20247d)&&_[_0x83bb('0x7b')](_0x47062e[_0x20247d])){this[_0x83bb('0xf')][_0x83bb('0x84')](util['format'](_0x83bb('0x100'),_0x20247d[_0x83bb('0xc3')]()),_0x47062e[_0x20247d]);}}if(_[_0x83bb('0x4a')](_0x47062e[_0x83bb('0x101')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x102'));}else{this[_0x83bb('0x46')](_0x47062e[_0x83bb('0x101')],_0x83bb('0x103'));return this['channel'][_0x83bb('0x8f')](util[_0x83bb('0x2e')]('Amazon\x20Lex\x20Result\x20%s',_0x47062e['message']));}}return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x3ac779,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0x83bb('0x12')][_0x83bb('0x104')]=function(_0x4a15f8){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x105'),_0x4a15f8[_0x83bb('0x3d')],_0x4a15f8[_0x83bb('0x8a')]));if(!this['isConfigured'](_0x4a15f8['key'])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x106'));}var _0x426b39=_0x83bb('0x107');var _0x120e2=util['format'](_0x83bb('0x108'),FILES_PATH,rs['generate'](0x4));var _0x471104=util[_0x83bb('0x2e')](_0x83bb('0x109'),_0x120e2,_0x426b39);var _0x58e435=!![];if(_0x4a15f8['beep']==='NOBEEP'){_0x58e435=![];}var _0x2658ac=this['channel'][_0x83bb('0x10a')](_0x120e2,_0x426b39,_0x4a15f8[_0x83bb('0x10b')],_0x4a15f8[_0x83bb('0x8a')],undefined,_0x58e435);if(_0x2658ac[_0x83bb('0x81')]!==-0x1){this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x10c'),_0x471104));var _0x545913=this['googleASR'][_0x83bb('0x86')](this,_0x4a15f8,_0x471104);if(_0x545913){for(var _0x5a3b23 in _0x545913){if(_0x545913[_0x83bb('0x7a')](_0x5a3b23)){this['channel'][_0x83bb('0x84')](util[_0x83bb('0x2e')]('GOOGLE_ASR_%s',_0x5a3b23[_0x83bb('0xc3')]()),_0x545913[_0x5a3b23]);}}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x10d'),JSON[_0x83bb('0x10e')](_0x545913)));}}return _0x2658ac;};AGIVertices[_0x83bb('0x12')][_0x83bb('0x10f')]=function(_0x27b47c){logger['info'](util[_0x83bb('0x2e')](_0x83bb('0x110'),_0x27b47c[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x27b47c['appid'])){return this[_0x83bb('0xf')][_0x83bb('0x8f')]('no\x20appid\x20configured');}if(!this[_0x83bb('0x69')](_0x27b47c[_0x83bb('0x78')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x111'));}var _0x22a30b=_0x83bb('0x107');var _0x256587=util['format'](_0x83bb('0x108'),FILES_PATH,rs['generate'](0x4));var _0x192e50=util[_0x83bb('0x2e')](_0x83bb('0x109'),_0x256587,_0x22a30b);var _0x30c4ff=!![];if(_0x27b47c['beep']===_0x83bb('0x112')){_0x30c4ff=![];}var _0x1ca29d=this[_0x83bb('0xf')][_0x83bb('0x10a')](_0x256587,_0x22a30b,_0x27b47c[_0x83bb('0x10b')],_0x27b47c[_0x83bb('0x8a')],undefined,_0x30c4ff);if(_0x1ca29d['result']!==-0x1){this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format']('tilde\x20%s\x20file\x20created',_0x192e50));var _0x5b7d49=this['tildeASR'][_0x83bb('0x86')](this,_0x27b47c,_0x192e50);if(_0x5b7d49){for(var _0x284f6c in _0x5b7d49){if(_0x5b7d49[_0x83bb('0x7a')](_0x284f6c)){this[_0x83bb('0xf')][_0x83bb('0x84')](util[_0x83bb('0x2e')](_0x83bb('0x113'),_0x284f6c[_0x83bb('0xc3')]()),_0x5b7d49[_0x284f6c]);}}return this[_0x83bb('0xf')]['noop'](util[_0x83bb('0x2e')]('TildeASR\x20Result\x20%s',JSON[_0x83bb('0x10e')](_0x5b7d49)));}}return _0x1ca29d;};AGIVertices[_0x83bb('0x12')][_0x83bb('0x114')]=function(_0x3cb343){logger[_0x83bb('0x34')](util['format'](_0x83bb('0x115'),_0x3cb343[_0x83bb('0x3d')]));return this['channel'][_0x83bb('0x116')](_0x3cb343[_0x83bb('0x117')],_0x3cb343[_0x83bb('0x42')],_0x3cb343['priority']);};AGIVertices[_0x83bb('0x12')][_0x83bb('0x118')]=function(_0x127006){logger['info'](util[_0x83bb('0x2e')](_0x83bb('0x119'),_0x127006[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x127006[_0x83bb('0x11a')])){return this['channel'][_0x83bb('0x30')](_0x127006,_0x83bb('0x11b'));}try{var _0x1bb4c4=eval(_0x127006[_0x83bb('0x11a')])?_0x83bb('0x11c'):_0x83bb('0x11d');this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x11e'),_0x127006[_0x83bb('0x11a')],_0x1bb4c4));return{'code':0xc8,'result':_0x1bb4c4};}catch(_0x562f0e){return{'code':0xc8,'result':_0x83bb('0x11d')};}};AGIVertices[_0x83bb('0x12')]['gotoiftime']=function(_0x424ef1){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x424ef1[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x424ef1[_0x83bb('0x11f')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x424ef1,_0x83bb('0x120'));}var _0x1baba6=this[_0x83bb('0x28')][_0x83bb('0x86')](this,_0x424ef1[_0x83bb('0x11f')]);if(!_0x1baba6){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x424ef1,_0x83bb('0x121'));}for(var _0x12b5c5=0x0;_0x12b5c5<_0x1baba6[_0x83bb('0x7e')];_0x12b5c5+=0x1){var _0x54c13b=this[_0x83bb('0xf')][_0x83bb('0x13')](util[_0x83bb('0x2e')]('IFTIME(%s?true:false)',_0x1baba6[_0x12b5c5]));if(_0x54c13b[_0x83bb('0x81')]===-0x1){return _0x54c13b;}logger['info'](util[_0x83bb('0x2e')](_0x83bb('0x122'),_0x1baba6[_0x12b5c5],_0x54c13b[_0x83bb('0x83')]));if(_0x54c13b['extra']===_0x83bb('0x11c')){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')]('IFTIME\x20%s\x20%s',_0x1baba6[_0x12b5c5],'true'));this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format']('IFTIME\x20%s\x20%s',_0x1baba6[_0x12b5c5],_0x83bb('0x11c')));return{'code':0xc8,'result':_0x83bb('0x11c')};}else{logger[_0x83bb('0x34')](util['format']('IFTIME\x20%s\x20%s',_0x1baba6[_0x12b5c5],'false'));this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x122'),_0x1baba6[_0x12b5c5],'false'));}}return{'code':0xc8,'result':'false'};};AGIVertices['prototype']['hangup']=function(_0x57199c){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x123'),_0x57199c['label']));return this['channel']['hangup']();};AGIVertices[_0x83bb('0x12')]['ispeechasr']=function(_0x4673dc){logger['info'](util['format'](_0x83bb('0x124'),_0x4673dc[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x4673dc[_0x83bb('0x62')])){return this['channel'][_0x83bb('0x8f')](_0x83bb('0x106'));}var _0x276456='wav';var _0x5b7718=util[_0x83bb('0x2e')](_0x83bb('0x108'),FILES_PATH,rs['generate'](0x4));var _0x155f5a=util[_0x83bb('0x2e')](_0x83bb('0x109'),_0x5b7718,_0x276456);var _0x34bc71=!![];if(_0x4673dc[_0x83bb('0x125')]===_0x83bb('0x112')){_0x34bc71=![];}var _0x1cb95d=this[_0x83bb('0xf')]['recordFile'](_0x5b7718,_0x276456,_0x4673dc[_0x83bb('0x10b')],_0x4673dc[_0x83bb('0x8a')],undefined,_0x34bc71);if(_0x1cb95d['result']!==-0x1){this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format'](_0x83bb('0x126'),_0x155f5a));var _0x4c6f11=this[_0x83bb('0x68')]['sync'](this,_0x4673dc,_0x155f5a);if(_0x4c6f11){for(var _0x14a956 in _0x4c6f11){if(_0x4c6f11[_0x83bb('0x7a')](_0x14a956)){this[_0x83bb('0xf')][_0x83bb('0x84')](util[_0x83bb('0x2e')](_0x83bb('0x127'),_0x14a956['toUpperCase']()),_0x4c6f11[_0x14a956]);}}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x128'),JSON[_0x83bb('0x10e')](_0x4c6f11)));}}return _0x1cb95d;};AGIVertices[_0x83bb('0x12')][_0x83bb('0x129')]=function(_0x334472){logger['info'](util[_0x83bb('0x2e')](_0x83bb('0x12a'),_0x334472[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x334472[_0x83bb('0x62')])){return this[_0x83bb('0xf')]['noop'](_0x83bb('0x106'));}if(!this[_0x83bb('0x69')](_0x334472['text'])){return this[_0x83bb('0xf')][_0x83bb('0x8f')]('no\x20text\x20configured');}this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x12b'),_0x334472['text']));var _0x1fd08e=this[_0x83bb('0x64')][_0x83bb('0x86')](this,_0x334472);if(_0x1fd08e){this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x126'),_0x1fd08e));var _0x5891c7=this['channel']['streamFile'](_0x1fd08e,_0x334472['intKey']);try{fs['unlink'](_0x1fd08e+_0x83bb('0xd4'));}catch(_0x331c3a){logger[_0x83bb('0x30')](_0x331c3a);}return _0x5891c7;}return this['channel'][_0x83bb('0x30')](_0x334472,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x83bb('0x12')][_0x83bb('0x12c')]=function(_0x322a1b){logger['info'](util[_0x83bb('0x2e')](_0x83bb('0x12d'),_0x322a1b[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x322a1b[_0x83bb('0x12e')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x322a1b,_0x83bb('0x12f'));}logger['info'](util['format'](_0x83bb('0x130'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x322a1b['findBy']));var _0x4a24bf=this[_0x83bb('0x59')][_0x83bb('0x86')](this,_0x322a1b['findBy']);if(_0x4a24bf){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x131'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x322a1b[_0x83bb('0x12e')]));this[_0x83bb('0xf')]['noop'](util[_0x83bb('0x2e')](_0x83bb('0x131'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x322a1b[_0x83bb('0x12e')]));return{'code':0xc8,'result':_0x83bb('0x132')};}else{logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x133'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x322a1b[_0x83bb('0x12e')]));this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x83bb('0x55')],_0x322a1b[_0x83bb('0x12e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x83bb('0x12')][_0x83bb('0x134')]=function(_0x7a4829){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x135'),_0x7a4829['label']));if(!this[_0x83bb('0x69')](_0x7a4829[_0x83bb('0x12e')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x7a4829,'no\x20find\x20by\x20configured');}logger['info'](util[_0x83bb('0x2e')](_0x83bb('0x130'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x7a4829[_0x83bb('0x12e')]));var _0x29743f=this[_0x83bb('0x56')]['sync'](this,_0x7a4829[_0x83bb('0x12e')]);if(_0x29743f){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x83bb('0xf')][_0x83bb('0x55')],_0x7a4829[_0x83bb('0x12e')]));this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x131'),this['channel'][_0x83bb('0x55')],_0x7a4829['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x133'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x7a4829[_0x83bb('0x12e')]));this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format'](_0x83bb('0x133'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x7a4829[_0x83bb('0x12e')]));return{'code':0xc8,'result':_0x83bb('0x136')};}};AGIVertices[_0x83bb('0x12')][_0x83bb('0x137')]=function(_0x54825d){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x138'),_0x54825d[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x54825d['operation'])){return this[_0x83bb('0xf')]['error'](_0x54825d,_0x83bb('0x139'));}this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format']('math\x20%s',_0x54825d['operation']));var _0x1cbe20=eval(_0x54825d[_0x83bb('0x13a')]);if(!this[_0x83bb('0x69')](_0x54825d[_0x83bb('0xb2')])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0xb3'));}var _0xdb0297=this[_0x83bb('0x13')]['sync'](this,_0x54825d[_0x83bb('0xb2')]);if(!_0xdb0297){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x54825d,_0x83bb('0xb4'));}if(_[_0x83bb('0x13b')](_0x1cbe20)){var _0x40bb1f=this;_0x1cbe20['forEach'](function(_0x4a2ef7,_0x2955e3){_0x40bb1f[_0x83bb('0xf')][_0x83bb('0x84')](util['format'](_0x83bb('0x13c'),_0xdb0297,_0x2955e3),_0x4a2ef7);});return this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format']('variable\x20%s[key]\x20set',_0xdb0297));}else{return this[_0x83bb('0xf')]['setVariable'](_0xdb0297,_0x1cbe20);}};AGIVertices[_0x83bb('0x12')][_0x83bb('0xc')]=function(_0x40e54b){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x40e54b['label']));if(_0x40e54b[_0x83bb('0xe4')]===0x0){return this[_0x83bb('0x85')](_0x40e54b);}_0x40e54b[_0x83bb('0xe4')]-=0x1;if(!this[_0x83bb('0x69')](_0x40e54b[_0x83bb('0xe6')])){return this[_0x83bb('0xf')]['error'](_0x40e54b,'no\x20file\x20audio\x20selected');}var _0x38b2af=this[_0x83bb('0x21')][_0x83bb('0x86')](this,_0x40e54b[_0x83bb('0xe6')]);if(!_0x38b2af){return this[_0x83bb('0xf')]['error'](_0x40e54b,_0x83bb('0xe7'));}var _0x2756ef=this[_0x83bb('0xf')][_0x83bb('0xe8')](_0x38b2af,_0x40e54b['response'],_0x40e54b[_0x83bb('0x13d')]);var _0x4c9991=_0x2756ef[_0x83bb('0x81')];if(_0x2756ef[_0x83bb('0x81')]===-0x1){this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x40e54b,'-1');return _0x2756ef;}else if(_0x2756ef[_0x83bb('0x83')]===_0x83bb('0x8a')){_0x2756ef[_0x83bb('0x81')]=_0x2756ef[_0x83bb('0x81')][_0x83bb('0x7e')]>0x0?_0x2756ef[_0x83bb('0x81')]:'t';}else if(_[_0x83bb('0x48')](_0x2756ef[_0x83bb('0x81')])){_0x2756ef[_0x83bb('0x81')]='#';_0x4c9991='#';}if(!this[_0x83bb('0x69')](_0x40e54b[_0x83bb('0xb2')])){this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0xb3'));}else{var _0x215b6e=this[_0x83bb('0x13')][_0x83bb('0x86')](this,_0x40e54b[_0x83bb('0xb2')]);if(!_0x215b6e){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x40e54b,'no\x20variable\x20found');}this[_0x83bb('0xf')]['setVariable'](_0x215b6e,_0x4c9991);}this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x40e54b,_0x4c9991);return _0x2756ef;};AGIVertices[_0x83bb('0x12')][_0x83bb('0x8f')]=function(_0x21e341){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x13e'),_0x21e341[_0x83bb('0x3d')]));return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x21e341['output']||_0x21e341[_0x83bb('0x3d')]);};AGIVertices[_0x83bb('0x12')][_0x83bb('0x13f')]=function(_0x4d8901){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x140'),_0x4d8901[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x4d8901[_0x83bb('0x12e')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x4d8901,_0x83bb('0x12f'));}logger['info'](util['format'](_0x83bb('0x130'),this['channel'][_0x83bb('0x55')],_0x4d8901[_0x83bb('0x12e')]));var _0x550015=this['getPause'][_0x83bb('0x86')](this,_0x4d8901[_0x83bb('0x141')]);var _0x2bc2d9=this[_0x83bb('0x52')]['sync'](this,_0x4d8901[_0x83bb('0x12e')],_0x550015);if(_0x2bc2d9){logger[_0x83bb('0x34')](util['format'](_0x83bb('0x131'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x4d8901[_0x83bb('0x12e')]));this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x131'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x4d8901[_0x83bb('0x12e')]));return{'code':0xc8,'result':_0x83bb('0x132')};}else{logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x133'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x4d8901[_0x83bb('0x12e')]));this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x131'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x4d8901[_0x83bb('0x12e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x83bb('0x12')][_0x83bb('0x142')]=function(_0x2cf9bb){logger['info'](util['format'](_0x83bb('0x143'),_0x2cf9bb[_0x83bb('0x3d')]));if(!this['isConfigured'](_0x2cf9bb[_0x83bb('0xe6')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x2cf9bb,_0x83bb('0xe5'));}var _0xd491e0=this[_0x83bb('0x21')][_0x83bb('0x86')](this,_0x2cf9bb[_0x83bb('0xe6')]);if(!_0xd491e0){return this[_0x83bb('0xf')]['error'](_0x2cf9bb,_0x83bb('0xe7'));}var _0x1cc195=this[_0x83bb('0xf')]['exec']('PLAYBACK',[_0xd491e0,_0x2cf9bb['opts']]);if(_0x1cc195['result']===-0x1){return _0x1cc195;}return this['channel']['noop'](util['format'](_0x83bb('0x95'),_0x83bb('0x144'),_0xd491e0));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x145')]=function(_0x1e0211){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x146'),_0x1e0211['label']));if(!this[_0x83bb('0x69')](_0x1e0211[_0x83bb('0x147')])){return this['channel']['error'](_0x1e0211,_0x83bb('0x148'));}var _0x2211e7='';var _0x1ff8df=parseInt(_0x1e0211[_0x83bb('0x147')],0xa);if(isNaN(_0x1ff8df)){_0x2211e7=_0x1e0211[_0x83bb('0x147')];}else{_0x2211e7=this[_0x83bb('0x18')]['sync'](this,_0x1e0211['queue_id']);if(!_0x2211e7){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x1e0211,_0x83bb('0x149'));}}var _0x3e11fa='';if(this['isConfigured'](_0x1e0211[_0x83bb('0xe6')])){var _0x5b0f38=this[_0x83bb('0x21')][_0x83bb('0x86')](this,_0x1e0211[_0x83bb('0xe6')]);if(_0x5b0f38){_0x3e11fa=_0x5b0f38;}}this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x1e0211,_0x2211e7);if(_0x1e0211[_0x83bb('0xe0')]['indexOf']('x')<0x0){_0x1e0211['opts']+='x';}if(_0x1e0211[_0x83bb('0xe0')][_0x83bb('0x14a')]('X')<0x0){_0x1e0211[_0x83bb('0xe0')]+='X';}this[_0x83bb('0xf')][_0x83bb('0x84')](_0x83bb('0x14b'),_0x2211e7?_0x2211e7[_0x83bb('0x14c')]():'');var _0x683da6=this[_0x83bb('0xf')][_0x83bb('0x5b')](_0x83bb('0x14d'),[_0x2211e7,_0x1e0211[_0x83bb('0xe0')],_0x1e0211[_0x83bb('0xbf')],_0x3e11fa,_0x1e0211[_0x83bb('0x8a')],_0x1e0211[_0x83bb('0x8')],_0x1e0211[_0x83bb('0x14e')],_0x1e0211[_0x83bb('0x14f')],'',_0x1e0211['position']]);if(_0x683da6['result']===-0x1){return _0x683da6;}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x95'),_0x83bb('0x14d'),_0x2211e7));};AGIVertices['prototype'][_0x83bb('0x150')]=function(_0x395eff){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x151'),_0x395eff[_0x83bb('0x3d')]));var _0x3acdf1=_0x395eff[_0x83bb('0x152')]||_0x83bb('0x107');var _0x74a170=util[_0x83bb('0x2e')](_0x83bb('0x153'),this[_0x83bb('0xf')]['uniqueid'],rs[_0x83bb('0xf2')](0x5));var _0x50a154=util['format'](_0x83bb('0x154'),FILES_PATH,_0x74a170,_0x3acdf1);var _0x452870=util[_0x83bb('0x2e')](_0x83bb('0x108'),FILES_PATH,_0x74a170);this[_0x83bb('0x40')][_0x83bb('0x86')](this,_0x395eff,_0x74a170,_0x50a154);this['channel'][_0x83bb('0x84')](_0x83bb('0x155'),_0x74a170);logger['info'](_0x83bb('0x156'),_0x452870,_0x3acdf1,_0x395eff[_0x83bb('0x157')],_0x395eff[_0x83bb('0x8a')]);return this[_0x83bb('0xf')][_0x83bb('0x10a')](_0x452870,_0x3acdf1,_0x395eff['escape_digits'],_0x395eff['timeout'],undefined,!![]);};AGIVertices['prototype'][_0x83bb('0x158')]=function(_0x2e4f66){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')]('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x2e4f66[_0x83bb('0x3d')]));return this[_0x83bb('0xf')]['sayDigits'](_0x2e4f66[_0x83bb('0x159')][_0x83bb('0x5d')](/\s+/g,''),_0x2e4f66[_0x83bb('0x157')]);};AGIVertices['prototype']['saynumber']=function(_0xd6cf95){logger['info'](util[_0x83bb('0x2e')](_0x83bb('0x15a'),_0xd6cf95[_0x83bb('0x3d')]));return this[_0x83bb('0xf')][_0x83bb('0x15b')](_0xd6cf95[_0x83bb('0x15c')][_0x83bb('0x5d')](/\s+/g,''),_0xd6cf95[_0x83bb('0x157')]);};AGIVertices[_0x83bb('0x12')][_0x83bb('0x15d')]=function(_0x4f2eca){logger['info'](util[_0x83bb('0x2e')](_0x83bb('0x15e'),_0x4f2eca[_0x83bb('0x3d')]));return this[_0x83bb('0xf')][_0x83bb('0x15f')](_0x4f2eca[_0x83bb('0x5f')],_0x4f2eca[_0x83bb('0x157')]);};AGIVertices[_0x83bb('0x12')][_0x83bb('0x160')]=function(_0x5384a6){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x5384a6[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0x5384a6['account_id'])){return this['channel'][_0x83bb('0x8f')](_0x83bb('0x161'));}var _0x2e8024=this[_0x83bb('0x25')]['sync'](this,_0x5384a6[_0x83bb('0x162')]);if(!_0x2e8024||!_0x2e8024[_0x83bb('0x163')]){return this['channel'][_0x83bb('0x30')](_0x5384a6,_0x83bb('0x164'));}var _0x1a10de={'from':util['format'](_0x83bb('0x165'),_0x2e8024[_0x83bb('0x16')],_0x2e8024[_0x83bb('0x166')]||_0x2e8024[_0x83bb('0x163')]['user']),'to':_0x5384a6['to']||'','cc':_0x5384a6['cc']||'','bcc':_0x5384a6[_0x83bb('0x167')]||'','subject':_0x5384a6[_0x83bb('0x168')],'html':_0x5384a6['text'],'text':_0x5384a6[_0x83bb('0x5f')]};var _0x8eddcd={'tls':{'rejectUnauthorized':![]}};if(_0x2e8024[_0x83bb('0x163')][_0x83bb('0x169')]){_0x8eddcd[_0x83bb('0x169')]=_0x2e8024[_0x83bb('0x163')][_0x83bb('0x169')];}else{_0x8eddcd[_0x83bb('0x16a')]=_0x2e8024['Smtp'][_0x83bb('0x16a')];_0x8eddcd['port']=_0x2e8024[_0x83bb('0x163')]['port'];_0x8eddcd[_0x83bb('0x16b')]=_0x2e8024[_0x83bb('0x163')]['secure'];}if(_0x2e8024[_0x83bb('0x163')][_0x83bb('0x16c')]){_0x8eddcd[_0x83bb('0x16d')]={'user':_0x2e8024['Smtp']['user'],'pass':_0x2e8024[_0x83bb('0x163')][_0x83bb('0x16e')]};}if(this[_0x83bb('0x69')](_0x5384a6[_0x83bb('0x16f')])){}logger[_0x83bb('0x170')](_0x83bb('0x171'),JSON[_0x83bb('0x10e')](_0x1a10de));this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x5384a6,_0x5384a6[_0x83bb('0x162')]);this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x2e8024[_0x83bb('0x16')]));this[_0x83bb('0x27')]['sync'](this,_0x8eddcd,_0x1a10de);return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x172'));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x173')]=function(_0x3e1828){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x174'),_0x3e1828[_0x83bb('0x3d')]));return this['channel'][_0x83bb('0x8f')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0x83bb('0x12')][_0x83bb('0x175')]=function(_0x3d0e90){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x176'),_0x3d0e90[_0x83bb('0x3d')]));if(!this['isConfigured'](_0x3d0e90['sms_account_id'])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x177'));}var _0x11cd48=this[_0x83bb('0x38')][_0x83bb('0x86')](this,_0x3d0e90['sms_account_id']);if(!_0x11cd48){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x3d0e90,_0x83bb('0x178'));}var _0x383bfd={'body':_0x3d0e90[_0x83bb('0x179')],'phone':_0x3d0e90['to']||'','SmsAccountId':_0x11cd48['id']};logger[_0x83bb('0x170')](_0x83bb('0x17a'),JSON['stringify'](_0x383bfd));this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x3d0e90,_0x3d0e90[_0x83bb('0x17b')]);this[_0x83bb('0xf')]['noop'](util[_0x83bb('0x2e')](_0x83bb('0x17c'),_0x11cd48[_0x83bb('0x16')]));this[_0x83bb('0x3a')][_0x83bb('0x86')](this,_0x383bfd);return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x17d'));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x17e')]=function(_0x24e2b1){logger['info'](util[_0x83bb('0x2e')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x24e2b1['label']));if(!this[_0x83bb('0x69')](_0x24e2b1['variable_id'])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x24e2b1,_0x83bb('0x17f'));}var _0x33bc72=this[_0x83bb('0x13')][_0x83bb('0x86')](this,_0x24e2b1[_0x83bb('0xb2')]);if(!_0x33bc72){return this['channel'][_0x83bb('0x30')](_0x24e2b1,'no\x20variable\x20found');}return this[_0x83bb('0xf')][_0x83bb('0x84')](_0x33bc72,_0x24e2b1['variable_value']);};AGIVertices[_0x83bb('0x12')]['start']=function(_0x4e304a){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x180'),_0x4e304a[_0x83bb('0x3d')]));this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x181'));if(_0x4e304a[_0x83bb('0x182')]===_0x83bb('0x183')){this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x184'));return this['channel']['answer']();}return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x185'));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x186')]=function(_0x5dcbcd){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x187'),_0x5dcbcd['label']));if(!this[_0x83bb('0x69')](_0x5dcbcd[_0x83bb('0x188')])){return this['channel'][_0x83bb('0x30')](_0x5dcbcd,_0x83bb('0x189'));}var _0x211a15=this[_0x83bb('0x18a')][_0x83bb('0x86')](this,_0x5dcbcd[_0x83bb('0x188')]);if(!this[_0x83bb('0x69')](_0x211a15)){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x5dcbcd,util[_0x83bb('0x2e')](_0x83bb('0x18b'),_0x5dcbcd[_0x83bb('0x188')]));}if(_0x211a15===this[_0x83bb('0xf')][_0x83bb('0x3f')]){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x5dcbcd,_0x83bb('0x18c'));}this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x5dcbcd,_0x211a15);var _0x817eb3=this[_0x83bb('0xf')][_0x83bb('0x5b')](_0x83bb('0x18d'),util[_0x83bb('0x2e')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x83bb('0x8')][_0x83bb('0x16a')]||_0x83bb('0x18e'),_0x211a15,this[_0x83bb('0xf')][_0x83bb('0x3f')]));if(_0x817eb3[_0x83bb('0x81')]===-0x1){return _0x817eb3;}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format'](_0x83bb('0x95'),'AGI',_0x211a15));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x18f')]=function(_0x39ec42){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x190'),_0x39ec42[_0x83bb('0x3d')]));var _0x27031d=this[_0x83bb('0x5a')]['sync'](this,_0x39ec42[_0x83bb('0x191')]);this[_0x83bb('0x3b')][_0x83bb('0x86')](this,_0x39ec42,_0x39ec42[_0x83bb('0x191')]);if(this[_0x83bb('0x69')](_0x39ec42['variable_id'])){var _0x35d41f=this[_0x83bb('0x13')]['sync'](this,_0x39ec42[_0x83bb('0xb2')]);if(_0x35d41f){this[_0x83bb('0xf')][_0x83bb('0x84')](_0x35d41f,_0x27031d);return this['channel']['noop'](util[_0x83bb('0x2e')](_0x83bb('0x192'),_0x39ec42[_0x83bb('0x191')],_0x35d41f));}}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x193'),_0x39ec42[_0x83bb('0x191')]));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x194')]=function(_0x56e8f7){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x195'),_0x56e8f7[_0x83bb('0x3d')]));if(!this['isConfigured'](_0x56e8f7['text'])){return this[_0x83bb('0xf')][_0x83bb('0x8f')](_0x83bb('0x98'));}this[_0x83bb('0xf')]['noop'](util[_0x83bb('0x2e')]('Trying\x20Google\x20TTS\x20%s',_0x56e8f7[_0x83bb('0x5f')]));var _0x55d0fa=this[_0x83bb('0x5e')]['sync'](this,_0x56e8f7);if(_0x55d0fa){this['channel'][_0x83bb('0x8f')](util['format']('Google\x20TTS\x20%s\x20file\x20created',_0x55d0fa));var _0x214d86=this['channel'][_0x83bb('0xd2')](_0x55d0fa);try{fs['unlink'](_0x55d0fa+'.wav');}catch(_0x45b300){logger['error'](_0x45b300);}return _0x214d86;}return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x56e8f7,_0x83bb('0x196'));};AGIVertices['prototype']['unpause']=function(_0x283c02){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x197'),_0x283c02['label']));if(!this[_0x83bb('0x69')](_0x283c02[_0x83bb('0x12e')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0x283c02,_0x83bb('0x12f'));}logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x130'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x283c02[_0x83bb('0x12e')]));var _0x317d6c=this[_0x83bb('0x54')][_0x83bb('0x86')](this,_0x283c02['findBy']);if(_0x317d6c){logger[_0x83bb('0x34')](util['format'](_0x83bb('0x131'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x283c02['findBy']));this[_0x83bb('0xf')][_0x83bb('0x8f')](util['format'](_0x83bb('0x131'),this[_0x83bb('0xf')][_0x83bb('0x55')],_0x283c02[_0x83bb('0x12e')]));return{'code':0xc8,'result':_0x83bb('0x132')};}else{logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x133'),this[_0x83bb('0xf')]['callerid'],_0x283c02['findBy']));this[_0x83bb('0xf')]['noop'](util['format'](_0x83bb('0x133'),this[_0x83bb('0xf')]['callerid'],_0x283c02[_0x83bb('0x12e')]));return{'code':0xc8,'result':_0x83bb('0x136')};}};AGIVertices[_0x83bb('0x12')][_0x83bb('0x198')]=function(_0x486e39){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x199'),_0x486e39[_0x83bb('0x3d')]));var _0x43cb34=this[_0x83bb('0xf')][_0x83bb('0x5b')]('VOICEMAIL',[_0x486e39[_0x83bb('0x19a')],_0x486e39[_0x83bb('0x94')]]);if(_0x43cb34[_0x83bb('0x81')]===-0x1){return _0x43cb34;}return this[_0x83bb('0xf')][_0x83bb('0x8f')](util[_0x83bb('0x2e')](_0x83bb('0x95'),_0x83bb('0x19b'),_0x486e39['mailbox']));};AGIVertices[_0x83bb('0x12')][_0x83bb('0x19c')]=function(_0xd3ea6a){logger[_0x83bb('0x34')](util[_0x83bb('0x2e')](_0x83bb('0x19d'),_0xd3ea6a[_0x83bb('0x3d')]));if(!this[_0x83bb('0x69')](_0xd3ea6a[_0x83bb('0xb2')])){return this[_0x83bb('0xf')][_0x83bb('0x30')](_0xd3ea6a,'no\x20variable\x20selected');}var _0x17c7a2=this[_0x83bb('0x13')][_0x83bb('0x86')](this,_0xd3ea6a[_0x83bb('0xb2')]);if(!_0x17c7a2){return this['channel'][_0x83bb('0x30')](_0xd3ea6a,_0x83bb('0xb4'));}var _0x3d0391=this[_0x83bb('0xf')][_0x83bb('0x13')](_0x17c7a2);return{'code':0xc8,'result':_0x3d0391[_0x83bb('0x83')]?_0x3d0391['extra']:'-'};};String[_0x83bb('0x12')][_0x83bb('0x7f')]=function(_0xbc22f,_0x8e66ef){return this[_0x83bb('0x7d')](_0xbc22f)[_0x83bb('0x19e')](_0x8e66ef);};module[_0x83bb('0x19f')]=AGIVertices;
\ No newline at end of file
+var _0xa668=['Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','AGI','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20no\x20stored','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','path','shelljs','odbc','randomstring','moment','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','menu','getsecretdigits','channel','mailRpc','prototype','getVariable','rpc','getVariableById','then','catch','getVoiceQueue','getVoiceQueueById','name','getSquareProject','getSquareProjectById','getSquareOdbc','dsn','getUser','getTrunk','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','map','Intervals','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','extension','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','googleTTS','text','google_tts_language','googleDialogflow','key','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','isConfigured','model','awsPolly','aws_access_key_id','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','uri','clear','includes','clone','hasOwnProperty','isString','replaceAllVariables','split','length','replaceAll','extra','result','setVariable','maxRetry','sync','retry','Enter\x20in\x20AGI\x20(%s)\x20block','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','timeout','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','callback_priority','noop','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','exec','application','options','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','no\x20text\x20configured','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','getAndSetVariable','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20odbc\x20database\x20found','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','%s[%s][%s]','%s_ROWS_COUNT','debug','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','DIALOGFLOW_%s','speech','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','bot','Trying\x20SestekNDA:\x20%s','sestekNDA','SESTEK_NDA_%s','toUpperCase','audiofile','streamFile','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','getData','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','Enter\x20in\x20GOAL\x20(%s)\x20block','GOAL\x20%s','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','aws\x20Polly\x20%s\x20file\x20created','unlink','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','message','Amazon\x20Lex\x20ready\x20for\x20fulfillment','out','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','stringify','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','%s.%s','NOBEEP','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','priority','gotoif','condition','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','isArray','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','response','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20found','indexOf','toLowerCase','QUEUE','url','macro','position','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','saydigits','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','number','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','service','host','secure','authentication','template_id','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','set','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes'];(function(_0x8b4939,_0x4a8076){var _0x40e5fb=function(_0x5c507f){while(--_0x5c507f){_0x8b4939['push'](_0x8b4939['shift']());}};_0x40e5fb(++_0x4a8076);}(_0xa668,0x1ac));var _0x8a66=function(_0x219dfe,_0xfec2b9){_0x219dfe=_0x219dfe-0x0;var _0x2d9fb8=_0xa668[_0x219dfe];return _0x2d9fb8;};'use strict';var fs=require('fs');var path=require(_0x8a66('0x0'));var util=require('util');var _=require('lodash');var sh=require(_0x8a66('0x1'));var odbc=require(_0x8a66('0x2'))();var rs=require(_0x8a66('0x3'));var moment=require(_0x8a66('0x4'));var Mustache=require('mustache');var logger=require('../../config/logger')(_0x8a66('0x5'));var config=require(_0x8a66('0x6'));var scripts=require(_0x8a66('0x7'));var FILES_PATH=_0x8a66('0x8');var verticesWithRetry=[_0x8a66('0x9'),'getdigits',_0x8a66('0xa')];var AGIVertices=function(_0x2b9d45,_0x2ef755,_0x54421b){this[_0x8a66('0xb')]=_0x2b9d45;this['rpc']=_0x2ef755;this[_0x8a66('0xc')]=_0x54421b;};AGIVertices[_0x8a66('0xd')][_0x8a66('0xe')]=function(_0x3ebd63,_0x377bda){this[_0x8a66('0xf')][_0x8a66('0x10')](_0x3ebd63)[_0x8a66('0x11')](function(_0x5b3b47){_0x377bda(null,_0x5b3b47?_0x5b3b47['name']:![]);})[_0x8a66('0x12')](function(_0x113327){_0x377bda(_0x113327);});};AGIVertices['prototype'][_0x8a66('0x13')]=function(_0x36740c,_0x5e6e6a){this[_0x8a66('0xf')][_0x8a66('0x14')](_0x36740c)[_0x8a66('0x11')](function(_0x3f4c27){_0x5e6e6a(null,_0x3f4c27?_0x3f4c27[_0x8a66('0x15')]:![]);})[_0x8a66('0x12')](function(_0x56daa2){_0x5e6e6a(_0x56daa2);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x16')]=function(_0x5bd11a,_0x150dfa){this[_0x8a66('0xf')][_0x8a66('0x17')](_0x5bd11a)[_0x8a66('0x11')](function(_0x14ee66){_0x150dfa(null,_0x14ee66?_0x14ee66[_0x8a66('0x15')]:![]);})[_0x8a66('0x12')](function(_0x68feb1){_0x150dfa(_0x68feb1);});};AGIVertices['prototype'][_0x8a66('0x18')]=function(_0x5281cb,_0x34a94a){this[_0x8a66('0xf')]['getSquareOdbcById'](_0x5281cb)[_0x8a66('0x11')](function(_0x1c6fb1){_0x34a94a(null,_0x1c6fb1?_0x1c6fb1[_0x8a66('0x19')]:![]);})['catch'](function(_0x3ab623){_0x34a94a(_0x3ab623);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x1a')]=function(_0x390f90,_0x3cc8f0){this[_0x8a66('0xf')]['getUserById'](_0x390f90)[_0x8a66('0x11')](function(_0x25f567){_0x3cc8f0(null,_0x25f567?_0x25f567[_0x8a66('0x15')]:![]);})['catch'](function(_0x3d7790){_0x3cc8f0(_0x3d7790);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x1b')]=function(_0x196d2d,_0x81ff28){this[_0x8a66('0xf')]['getTrunkById'](_0x196d2d)['then'](function(_0x17b38c){_0x81ff28(null,_0x17b38c?_0x17b38c[_0x8a66('0x15')]:![]);})[_0x8a66('0x12')](function(_0x1b9b1c){_0x81ff28(_0x1b9b1c);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x1c')]=function(_0x31cb34,_0x3a0c08){var _0x34b1c0=this;this[_0x8a66('0xf')][_0x8a66('0x1d')](_0x31cb34)[_0x8a66('0x11')](function(_0xa8e15e){_0x3a0c08(null,_0xa8e15e?_0x34b1c0[_0x8a66('0x1e')](_0xa8e15e[_0x8a66('0x1f')]):![]);})[_0x8a66('0x12')](function(_0x1bf565){_0x3a0c08(_0x1bf565);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x20')]=function(_0xdcda41,_0x4e6623){this['rpc'][_0x8a66('0x21')](_0xdcda41)[_0x8a66('0x11')](function(_0x76da30){_0x4e6623(null,_0x76da30?_0x76da30:![]);})[_0x8a66('0x12')](function(_0x18c35c){_0x4e6623(_0x18c35c);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x22')]=function(_0x502a93,_0x50ea16,_0x21e1da){this[_0x8a66('0xc')][_0x8a66('0x22')](_0x502a93,_0x50ea16)[_0x8a66('0x11')](function(){_0x21e1da(null);})[_0x8a66('0x12')](function(_0x525bc3){_0x21e1da(_0x525bc3);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x23')]=function(_0x46ca36,_0x41ccae){this[_0x8a66('0xf')]['getIntervalById'](_0x46ca36)['then'](function(_0xb01f0d){if(_0xb01f0d){if(_0xb01f0d['IntervalId']){_0x41ccae(null,[_0xb01f0d['interval']]);}else{_0x41ccae(null,_[_0x8a66('0x24')](_0xb01f0d[_0x8a66('0x25')],_0x8a66('0x26')));}}else{_0x41ccae(null,![]);}})[_0x8a66('0x12')](function(_0x33ebe7){_0x41ccae(_0x33ebe7);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x1e')]=function(_0x3918a2){return util[_0x8a66('0x27')](_0x8a66('0x28'),FILES_PATH,_0x3918a2);};AGIVertices[_0x8a66('0xd')][_0x8a66('0x29')]=function(_0x38cc62,_0x4b3670,_0x575d19){odbc[_0x8a66('0x2a')](_0x38cc62,function(_0x91ed15){if(_0x91ed15){logger[_0x8a66('0x2b')](_0x8a66('0x2c'),_0x91ed15);_0x575d19(_0x91ed15);}else{logger[_0x8a66('0x2d')](_0x8a66('0x2e'));odbc[_0x8a66('0x2f')](_0x4b3670,function(_0x25d9c4,_0x63804f){if(_0x25d9c4){logger[_0x8a66('0x2d')](_0x8a66('0x30'),_0x4b3670);_0x575d19(_0x25d9c4);}else{logger[_0x8a66('0x2d')](_0x8a66('0x31'),_0x4b3670);odbc[_0x8a66('0x32')](function(_0x4c06cb){if(_0x4c06cb){logger[_0x8a66('0x2b')](_0x8a66('0x33'),_0x4c06cb);}_0x575d19(null,_0x63804f);});}});}});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x34')]=function(_0xf47fad,_0x56e62c){this[_0x8a66('0xf')][_0x8a66('0x35')](_0xf47fad)[_0x8a66('0x11')](function(_0x2b7c0c){_0x56e62c(null,_0x2b7c0c?_0x2b7c0c:![]);})[_0x8a66('0x12')](function(_0x3a9bc0){_0x56e62c(_0x3a9bc0);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x36')]=function(_0xbd5a80,_0x546497){this[_0x8a66('0xf')][_0x8a66('0x36')](_0xbd5a80)[_0x8a66('0x11')](function(_0x138e3b){_0x546497(null,_0x138e3b);})[_0x8a66('0x12')](function(_0x432260){_0x546497(_0x432260);});};AGIVertices['prototype'][_0x8a66('0x37')]=function(_0x5dc038,_0x1c9ce2,_0x5ddcd6){this[_0x8a66('0xf')]['createSquareDetailsReport']({'uniqueid':this['channel'][_0x8a66('0x38')],'node':_0x5dc038[_0x8a66('0x39')],'application':_0x5dc038[_0x8a66('0x3a')],'data':_0x1c9ce2||null,'project_name':this['channel'][_0x8a66('0x3b')],'callerid':this['channel'][_0x8a66('0x3c')]})[_0x8a66('0x11')](function(_0x2e030c){if(_0x5ddcd6){_0x5ddcd6(null,_0x2e030c);}})[_0x8a66('0x12')](function(_0x2d254c){if(_0x5ddcd6){_0x5ddcd6(_0x2d254c);}});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x3d')]=function(_0x20d90a,_0x34f33f,_0x4f2f53,_0x4a25e6){this[_0x8a66('0xf')][_0x8a66('0x3d')]({'uniqueid':this[_0x8a66('0xb')][_0x8a66('0x38')],'callerid':this[_0x8a66('0xb')]['callerid'],'calleridname':this[_0x8a66('0xb')][_0x8a66('0x3e')],'context':this[_0x8a66('0xb')][_0x8a66('0x3f')],'extension':this[_0x8a66('0xb')][_0x8a66('0x40')],'priority':this[_0x8a66('0xb')]['priority'],'accountcode':this['channel'][_0x8a66('0x41')],'dnid':this[_0x8a66('0xb')][_0x8a66('0x42')],'projectName':this['channel'][_0x8a66('0x3b')],'saveName':_0x34f33f,'filename':_0x20d90a[_0x8a66('0x43')]||_0x34f33f,'savePath':_0x4f2f53})[_0x8a66('0x11')](function(_0x519b39){_0x4a25e6(null,_0x519b39);})[_0x8a66('0x12')](function(_0x2dc735){_0x4a25e6(_0x2dc735);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x44')]=function(_0x37bcee,_0x2cead6,_0x349fc3){this[_0x8a66('0xf')][_0x8a66('0x44')]({'uniqueid':this[_0x8a66('0xb')][_0x8a66('0x38')],'body':_0x37bcee,'direction':_0x2cead6})[_0x8a66('0x11')](function(_0x4cfaea){if(_0x349fc3){_0x349fc3(null,_0x4cfaea);}})[_0x8a66('0x12')](function(_0x5b471c){if(_0x349fc3){_0x349fc3(_0x5b471c);}});};AGIVertices['prototype'][_0x8a66('0x45')]=function(_0xc37b18,_0x56a50d){this[_0x8a66('0xf')][_0x8a66('0x45')]({'firstName':_[_0x8a66('0x46')](_0xc37b18[_0x8a66('0x15')])||_[_0x8a66('0x47')](_0xc37b18[_0x8a66('0x15')])?_0x8a66('0x48')+Math[_0x8a66('0x49')]():_0xc37b18[_0x8a66('0x15')],'lastName':_[_0x8a66('0x46')](_0xc37b18['lastName'])||_[_0x8a66('0x47')](_0xc37b18['lastName'])?null:_0xc37b18[_0x8a66('0x4a')],'phone':_0xc37b18[_0x8a66('0x4b')],'ListId':_0xc37b18[_0x8a66('0x4c')],'scheduledAt':_0xc37b18[_0x8a66('0x4d')],'callbackUniqueid':this[_0x8a66('0xb')][_0x8a66('0x38')],'tags':_0x8a66('0x4e'),'description':_0x8a66('0x4f')+_0xc37b18[_0x8a66('0x4d')][_0x8a66('0x50')](),'priority':_0xc37b18['callback_priority']})['then'](function(_0xcf8e59){_0x56a50d(null,_0xcf8e59);})[_0x8a66('0x12')](function(_0x25ea47){_0x56a50d(_0x25ea47);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x51')]=function(_0x534dbe,_0x46260c){this['rpc'][_0x8a66('0x52')](_0x534dbe)[_0x8a66('0x11')](function(_0x2d9055){_0x46260c(null,_0x2d9055?_0x2d9055['name']:![]);})[_0x8a66('0x12')](function(_0x5998d3){_0x46260c(_0x5998d3);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x53')]=function(_0x20b9b2,_0x66c682,_0x4757d3){var _0x8e9b3={'role':_0x8a66('0x54')};_0x8e9b3[_0x20b9b2]=this['channel']['callerid'];this['rpc']['agentPause'](_0x8e9b3,_0x66c682,this['channel']['uniqueid'])[_0x8a66('0x11')](function(_0xb4616a){_0x4757d3(null,_[_0x8a66('0x47')](_0xb4616a)?![]:!![]);})['catch'](function(_0x5eb6a4){logger[_0x8a66('0x2b')](_0x5eb6a4);_0x4757d3(null,![]);});};AGIVertices['prototype'][_0x8a66('0x55')]=function(_0xdae0de,_0x3f591b){var _0x17ae67={'role':_0x8a66('0x54')};_0x17ae67[_0xdae0de]=this[_0x8a66('0xb')][_0x8a66('0x3c')];this[_0x8a66('0xf')][_0x8a66('0x55')](_0x17ae67)[_0x8a66('0x11')](function(_0x15a70c){_0x3f591b(null,_['isNil'](_0x15a70c)?![]:!![]);})[_0x8a66('0x12')](function(_0x25f923){logger[_0x8a66('0x2b')](_0x25f923);_0x3f591b(null,![]);});};AGIVertices[_0x8a66('0xd')]['agentLogout']=function(_0x486fda,_0x483cbc){var _0x35ebbc={'role':_0x8a66('0x54')};_0x35ebbc[_0x486fda]=this[_0x8a66('0xb')]['callerid'];this[_0x8a66('0xf')][_0x8a66('0x56')](_0x35ebbc)[_0x8a66('0x11')](function(_0x230bf0){_0x483cbc(null,_[_0x8a66('0x47')](_0x230bf0)?![]:!![]);})['catch'](function(_0x10f298){logger[_0x8a66('0x2b')](_0x10f298);_0x483cbc(null,![]);});};AGIVertices['prototype'][_0x8a66('0x57')]=function(_0x3144f4,_0x1390a9){var _0x16b802={'role':_0x8a66('0x54')};_0x16b802[_0x3144f4]=this[_0x8a66('0xb')][_0x8a66('0x3c')];var _0xd62d59=_0x3144f4!=_0x8a66('0x58')?util['format'](_0x8a66('0x59'),_0x8a66('0x5a'),this[_0x8a66('0xb')]['callerid']):undefined;this[_0x8a66('0xf')][_0x8a66('0x57')](_0x16b802,_0xd62d59)[_0x8a66('0x11')](function(_0x1d0383){_0x1390a9(null,_[_0x8a66('0x47')](_0x1d0383)?![]:!![]);})[_0x8a66('0x12')](function(_0x118599){logger[_0x8a66('0x2b')](_0x118599);_0x1390a9(null,![]);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x5b')]=function(_0x20077e,_0x37573f){sh['exec'](_['trim'](_0x20077e),function(_0x3100e4,_0x19d44f){var _0x26ec22=_0x19d44f['replace'](/(\r\n|\n|\r)/gm,'');_0x37573f(null,_0x26ec22);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x5c')]=function(_0x4e3d23,_0xad43f3){scripts[_0x8a66('0x5c')](_0x4e3d23[_0x8a66('0x5d')],_0x4e3d23[_0x8a66('0x5e')]||'en',0x1)[_0x8a66('0x11')](function(_0xad9c2c){_0xad43f3(null,_0xad9c2c);})[_0x8a66('0x12')](function(_0x43907e){_0xad43f3(_0x43907e);});};AGIVertices['prototype'][_0x8a66('0x5f')]=function(_0x41d34b,_0x281f8d){scripts[_0x8a66('0x5f')](this['channel'][_0x8a66('0x38')],_0x41d34b[_0x8a66('0x60')],_0x41d34b[_0x8a66('0x5d')],_0x41d34b['dialogflow_language']||'en')[_0x8a66('0x11')](function(_0x54fb30){_0x281f8d(null,_0x54fb30);})[_0x8a66('0x12')](function(_0x439dac){_0x281f8d(_0x439dac);});};AGIVertices[_0x8a66('0xd')]['sestekNDA']=function(_0x1854fa,_0x4202f9){scripts['sestekNDA'](this[_0x8a66('0xb')],_0x1854fa)[_0x8a66('0x11')](function(_0x952c6b){_0x4202f9(null,_0x952c6b);})[_0x8a66('0x12')](function(_0x185a64){_0x4202f9(_0x185a64);});};AGIVertices[_0x8a66('0xd')]['ispeechTTS']=function(_0x2b9fc9,_0x25e80e){scripts[_0x8a66('0x61')](_0x2b9fc9[_0x8a66('0x60')],_0x2b9fc9[_0x8a66('0x5d')],_0x2b9fc9[_0x8a66('0x62')]||_0x8a66('0x63'),_0x2b9fc9[_0x8a66('0x64')])[_0x8a66('0x11')](function(_0x44f008){_0x25e80e(null,_0x44f008);})[_0x8a66('0x12')](function(_0x420591){_0x25e80e(_0x420591);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x65')]=function(_0x2ae28a,_0x7f9d73,_0x3da1cf){scripts[_0x8a66('0x65')](_0x7f9d73,_0x2ae28a[_0x8a66('0x60')],_0x2ae28a['ispeech_asr_language']||_0x8a66('0x63'),this[_0x8a66('0x66')](_0x2ae28a[_0x8a66('0x67')])?_0x2ae28a[_0x8a66('0x67')]:undefined)['then'](function(_0x326018){_0x3da1cf(null,_0x326018);})[_0x8a66('0x12')](function(_0x1937ef){_0x3da1cf(_0x1937ef);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x68')]=function(_0x28cba0,_0x2d1012){scripts[_0x8a66('0x68')](_0x28cba0[_0x8a66('0x69')],_0x28cba0['aws_secret_access_key'],_0x28cba0[_0x8a66('0x6a')],_0x28cba0[_0x8a66('0x6b')]||_0x8a66('0x6c'),_0x28cba0[_0x8a66('0x5d')],_0x28cba0[_0x8a66('0x6d')]||_0x8a66('0x5d'))[_0x8a66('0x11')](function(_0x377af9){_0x2d1012(null,_0x377af9);})[_0x8a66('0x12')](function(_0x575f8c){_0x2d1012(_0x575f8c);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x6e')]=function(_0x18ad60,_0x23f76f){scripts[_0x8a66('0x6e')](this[_0x8a66('0xb')][_0x8a66('0x38')],_0x18ad60[_0x8a66('0x69')],_0x18ad60[_0x8a66('0x6f')],_0x18ad60[_0x8a66('0x70')],_0x18ad60[_0x8a66('0x5d')],_0x18ad60[_0x8a66('0x71')])[_0x8a66('0x11')](function(_0x2c5817){_0x23f76f(null,_0x2c5817);})[_0x8a66('0x12')](function(_0x196d87){_0x23f76f(_0x196d87);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x72')]=function(_0x46b166,_0x2f1359,_0x28ecc7){scripts[_0x8a66('0x72')](_0x2f1359,_0x46b166[_0x8a66('0x60')],_0x46b166[_0x8a66('0x73')]||_0x8a66('0x63'))[_0x8a66('0x11')](function(_0x343e37){_0x28ecc7(null,_0x343e37);})[_0x8a66('0x12')](function(_0x34fc86){_0x28ecc7(_0x34fc86);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x74')]=function(_0x2aec9e,_0x552a89,_0x4cc83d){scripts[_0x8a66('0x74')](_0x552a89,_0x2aec9e[_0x8a66('0x75')],_0x2aec9e[_0x8a66('0x76')],_0x2aec9e[_0x8a66('0x77')])['then'](function(_0x99711d){_0x4cc83d(null,_0x99711d);})[_0x8a66('0x12')](function(_0xb05332){_0x4cc83d(_0xb05332);});};AGIVertices[_0x8a66('0xd')][_0x8a66('0x78')]=function(_0x119a38){var _0x579b48=_[_0x8a66('0x79')](verticesWithRetry,_0x119a38['agicommand'])?_0x119a38:_[_0x8a66('0x7a')](_0x119a38);for(var _0x48e204 in _0x579b48){if(_0x579b48[_0x8a66('0x7b')](_0x48e204)){if(_0x579b48[_0x48e204]&&_[_0x8a66('0x7c')](_0x579b48[_0x48e204])){_0x579b48[_0x48e204]=this[_0x8a66('0x7d')](_0x579b48[_0x48e204]);}}}return _0x579b48;};AGIVertices[_0x8a66('0xd')][_0x8a66('0x7d')]=function(_0x5968dc){var _0x180c99=_0x5968dc[_0x8a66('0x7e')]('{');for(var _0x3f3f15=0x1;_0x3f3f15<_0x180c99[_0x8a66('0x7f')];_0x3f3f15+=0x1){var _0x38338b=_0x180c99[_0x3f3f15][_0x8a66('0x7e')]('}');if(_0x38338b[_0x8a66('0x7f')]>0x1){_0x5968dc=_0x5968dc[_0x8a66('0x80')]('{'+_0x38338b[0x0]+'}',this[_0x8a66('0xb')]['getVariable'](_0x38338b[0x0])[_0x8a66('0x81')]||_0x38338b[0x0]);}}if(_0x180c99[_0x8a66('0x7f')]===0x1){return _0x5968dc[_0x8a66('0x50')]();}return this['replaceAllVariables'](_0x5968dc);};AGIVertices[_0x8a66('0xd')]['getAndSetVariable']=function(_0x6c4f49,_0xb18e4c){var _0x560c32=this['channel']['getVariable'](_0x6c4f49);if(_0x560c32[_0x8a66('0x82')]===-0x1){return _0x560c32;}logger[_0x8a66('0x2d')](util['format']('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0xb18e4c,_0x560c32[_0x8a66('0x81')]));return this[_0x8a66('0xb')][_0x8a66('0x83')](_0xb18e4c,_0x560c32['extra']);};AGIVertices[_0x8a66('0xd')][_0x8a66('0x66')]=function(_0xf8a7ab){return _0xf8a7ab&&_0xf8a7ab!=='0'&&_0xf8a7ab!=='-1'&&_0xf8a7ab!=='';};AGIVertices['prototype'][_0x8a66('0x84')]=function(_0x326bf0){this[_0x8a66('0x37')][_0x8a66('0x85')](this,_0x326bf0,'-');_0x326bf0[_0x8a66('0x86')]=_0x326bf0[_0x8a66('0x84')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x8a66('0xd')][_0x8a66('0x5')]=function(_0x4293b3){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x87'),_0x4293b3[_0x8a66('0x39')]));return this['channel'][_0x8a66('0x5')]([_0x4293b3['command'],_0x4293b3[_0x8a66('0x88')]]);};AGIVertices[_0x8a66('0xd')][_0x8a66('0x89')]=function(_0xb67f60){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0x8a'),_0xb67f60[_0x8a66('0x39')]));if(this[_0x8a66('0x66')](_0xb67f60[_0x8a66('0x8b')])){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0x8c'),_0xb67f60[_0x8a66('0x8b')]));var _0x4e82b4=this['channel'][_0x8a66('0x8d')](_0xb67f60[_0x8a66('0x8b')]);if(_0x4e82b4[_0x8a66('0x82')]===-0x1){return _0x4e82b4;}}return this[_0x8a66('0xb')][_0x8a66('0x89')]();};AGIVertices[_0x8a66('0xd')][_0x8a66('0x4e')]=function(_0x177469){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x8e'),_0x177469['label']));if(!this[_0x8a66('0x66')](_0x177469[_0x8a66('0x4c')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x177469,'no\x20list\x20selected');}_0x177469[_0x8a66('0x4d')]=moment();if(this['isConfigured'](_0x177469['delay'])){_0x177469['scheduledAt']=moment()['add'](_0x177469[_0x8a66('0x8f')],'minutes');}if(!this['isConfigured'](_0x177469[_0x8a66('0x90')])){_0x177469['callback_priority']=0x2;}this['createCmContact'][_0x8a66('0x85')](this,_0x177469);return this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x92'),_0x177469[_0x8a66('0x4b')],_0x177469['list_id'],_0x177469[_0x8a66('0x4d')]));};AGIVertices[_0x8a66('0xd')]['custom_app']=function(_0x3724e0){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x93'),_0x3724e0[_0x8a66('0x39')]));var _0x1cb4e4=this[_0x8a66('0xb')][_0x8a66('0x94')](_0x3724e0[_0x8a66('0x95')],_0x3724e0[_0x8a66('0x96')]);if(_0x1cb4e4[_0x8a66('0x82')]===-0x1){return _0x1cb4e4;}return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')]('Executed\x20command\x20%s\x20%s',_0x3724e0['application'],_0x3724e0[_0x8a66('0x96')]));};AGIVertices[_0x8a66('0xd')]['lumenvoxtts']=function(_0x47dc66){logger['info'](util[_0x8a66('0x27')](_0x8a66('0x97'),_0x47dc66['label']));if(!this[_0x8a66('0x66')](_0x47dc66['text'])){return this[_0x8a66('0xb')]['noop']('no\x20text\x20configured');}var _0x13c3dd='\x22'+_0x47dc66[_0x8a66('0x5d')]+'\x22';if(this[_0x8a66('0x66')](_0x47dc66[_0x8a66('0x96')])){_0x13c3dd+=','+_0x47dc66[_0x8a66('0x96')];}var _0x37c4ea=this[_0x8a66('0xb')]['exec'](_0x8a66('0x98'),_0x13c3dd);if(_0x37c4ea[_0x8a66('0x82')]===-0x1){return _0x37c4ea;}return this[_0x8a66('0xb')]['noop'](util[_0x8a66('0x27')](_0x8a66('0x99'),_0x13c3dd));};AGIVertices['prototype'][_0x8a66('0x9a')]=function(_0x634ab9){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x9b'),_0x634ab9[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x634ab9['text'])){return this[_0x8a66('0xb')]['noop'](_0x8a66('0x9c'));}var _0x49e54b='\x22'+_0x634ab9[_0x8a66('0x5d')]+'\x22';if(this['isConfigured'](_0x634ab9[_0x8a66('0x96')])){_0x49e54b+=','+_0x634ab9[_0x8a66('0x96')];}var _0x259703=this[_0x8a66('0xb')][_0x8a66('0x94')](_0x8a66('0x98'),_0x49e54b);if(_0x259703[_0x8a66('0x82')]===-0x1){return _0x259703;}return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x99'),_0x49e54b));};AGIVertices[_0x8a66('0xd')][_0x8a66('0x9d')]=function(_0x558d2f){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x9e'),_0x558d2f['label']));if(!this['isConfigured'](_0x558d2f[_0x8a66('0x9f')])){return this[_0x8a66('0xb')]['noop'](_0x8a66('0xa0'));}var _0x503473=_0x558d2f[_0x8a66('0x9f')];if(this['isConfigured'](_0x558d2f['options'])){_0x503473+=','+_0x558d2f[_0x8a66('0x96')];}var _0x3fcba3=this[_0x8a66('0xb')][_0x8a66('0x94')](_0x8a66('0xa1'),_0x503473);if(_0x3fcba3['result']===-0x1){return _0x3fcba3;}var _0x289ed1=this[_0x8a66('0xa2')](_0x8a66('0xa3'),_0x8a66('0xa4'));if(_0x289ed1['result']===-0x1){return _0x289ed1;}var _0x2830e7=this[_0x8a66('0xa2')](_0x8a66('0xa5'),_0x8a66('0xa6'));if(_0x2830e7[_0x8a66('0x82')]===-0x1){return _0x2830e7;}var _0x4267e7=this['getAndSetVariable'](_0x8a66('0xa7'),'LUMENVOX_ASR_INSTANCE');if(_0x4267e7[_0x8a66('0x82')]===-0x1){return _0x4267e7;}return this[_0x8a66('0xb')][_0x8a66('0x91')](util['format'](_0x8a66('0xa8'),_0x503473));};AGIVertices[_0x8a66('0xd')][_0x8a66('0xa9')]=function(_0x2330b0){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0xaa'),_0x2330b0[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x2330b0[_0x8a66('0x9f')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xa0'));}var _0x7b794=_0x2330b0[_0x8a66('0x9f')];if(this['isConfigured'](_0x2330b0['options'])){_0x7b794+=','+_0x2330b0[_0x8a66('0x96')];}var _0x350510=this[_0x8a66('0xb')][_0x8a66('0x94')](_0x8a66('0xa1'),_0x7b794);if(_0x350510[_0x8a66('0x82')]===-0x1){return _0x350510;}var _0x82ba0d=this[_0x8a66('0xa2')](_0x8a66('0xa3'),'SESTEK_ASR_CONFIDENCE');if(_0x82ba0d[_0x8a66('0x82')]===-0x1){return _0x82ba0d;}var _0x458834=this[_0x8a66('0xa2')](_0x8a66('0xa5'),_0x8a66('0xab'));if(_0x458834['result']===-0x1){return _0x458834;}var _0x498d86=this[_0x8a66('0xa2')]('RECOG_INSTANCE()','SESTEK_ASR_INSTANCE');if(_0x498d86['result']===-0x1){return _0x498d86;}return this[_0x8a66('0xb')][_0x8a66('0x91')](util['format'](_0x8a66('0xa8'),_0x7b794));};AGIVertices[_0x8a66('0xd')][_0x8a66('0xac')]=function(_0x19d79b){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0xad'),_0x19d79b[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x19d79b[_0x8a66('0xae')])){return this['channel'][_0x8a66('0x2b')](_0x19d79b,'no\x20database\x20selected');}var _0x58a752=this[_0x8a66('0x18')]['sync'](this,_0x19d79b[_0x8a66('0xae')]);if(!_0x58a752){return this['channel'][_0x8a66('0x2b')](_0x19d79b,_0x8a66('0xaf'));}if(!this[_0x8a66('0x66')](_0x19d79b[_0x8a66('0x2f')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x19d79b,'no\x20query\x20configured');}var _0x3971ba=_0x19d79b[_0x8a66('0x2f')][_0x8a66('0xb0')](/(\r\n|\n|\r)/gm,'\x20');this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0xb1'),_0x3971ba));var _0x5a96a4=this['getQueryOdbc']['sync'](this,_0x58a752,_0x3971ba);this['createSquareDetailsReport'][_0x8a66('0x85')](this,_0x19d79b,_0x3971ba);if(!this[_0x8a66('0x66')](_0x19d79b[_0x8a66('0xb2')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xb3'));}var _0x3b2a4e=this[_0x8a66('0xe')]['sync'](this,_0x19d79b[_0x8a66('0xb2')]);if(!_0x3b2a4e){return this[_0x8a66('0xb')]['error'](_0x19d79b,_0x8a66('0xb4'));}var _0x206242=this;_0x5a96a4[_0x8a66('0xb5')](function(_0x4568a6,_0x323d4a){Object['keys'](_0x4568a6)[_0x8a66('0xb5')](function(_0x33dcc7){_0x206242[_0x8a66('0xb')]['setVariable'](util[_0x8a66('0x27')](_0x8a66('0xb6'),_0x3b2a4e,_0x323d4a,_0x33dcc7),_0x4568a6[_0x33dcc7]);});});this[_0x8a66('0xb')][_0x8a66('0x83')](util['format'](_0x8a66('0xb7'),_0x3b2a4e),_0x5a96a4[_0x8a66('0x7f')]);return this['channel']['noop'](util[_0x8a66('0x27')]('variable\x20%s\x20set',_0x3b2a4e));};AGIVertices[_0x8a66('0xd')]['dial']=function(_0x2cfbd4){logger[_0x8a66('0xb8')](util[_0x8a66('0x27')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x2cfbd4[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x2cfbd4['sip_id'])){return this['channel'][_0x8a66('0x2b')](_0x2cfbd4,'no\x20user\x20selected');}var _0x2f4190=this[_0x8a66('0x1a')][_0x8a66('0x85')](this,_0x2cfbd4[_0x8a66('0xb9')]);if(!_0x2f4190){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x2cfbd4,_0x8a66('0xba'));}var _0x2e8b44=this[_0x8a66('0xb')][_0x8a66('0x94')](_0x8a66('0xbb'),[util['format'](_0x8a66('0xbc'),_0x2f4190),_0x2cfbd4[_0x8a66('0x8b')],_0x2cfbd4[_0x8a66('0xbd')],_0x2cfbd4['url']]);if(_0x2e8b44['result']===-0x1){return _0x2e8b44;}return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')]('Executed\x20command\x20%s',_0x8a66('0xbb')));};AGIVertices[_0x8a66('0xd')][_0x8a66('0xbe')]=function(_0x3b2b11){logger['info'](util[_0x8a66('0x27')](_0x8a66('0xbf'),_0x3b2b11[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x3b2b11[_0x8a66('0x60')])){return this['channel'][_0x8a66('0x91')](_0x8a66('0xc0'));}if(!this['isConfigured'](_0x3b2b11[_0x8a66('0x5d')])){return this['channel'][_0x8a66('0x91')](_0x8a66('0x9c'));}this[_0x8a66('0xb')]['bot']=!![];this[_0x8a66('0x37')](_0x3b2b11);this[_0x8a66('0x44')](_0x3b2b11[_0x8a66('0x5d')],'in');this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')]('Trying\x20Dialogflow:\x20%s',_0x3b2b11[_0x8a66('0x5d')]));var _0x330be2=this[_0x8a66('0x5f')][_0x8a66('0x85')](this,_0x3b2b11);if(_0x330be2){for(var _0x14e3b2 in _0x330be2){if(_0x330be2[_0x8a66('0x7b')](_0x14e3b2)){this[_0x8a66('0xb')][_0x8a66('0x83')](util[_0x8a66('0x27')](_0x8a66('0xc1'),_0x14e3b2['toUpperCase']()),_0x330be2[_0x14e3b2]);}}this[_0x8a66('0x44')](_0x330be2[_0x8a66('0xc2')],'out');return this['channel']['noop'](util['format'](_0x8a66('0xc3'),_0x330be2[_0x8a66('0xc2')]));}return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x3b2b11,_0x8a66('0xc4'));};AGIVertices[_0x8a66('0xd')][_0x8a66('0xc5')]=function(_0xd59547){logger['info'](util['format'](_0x8a66('0xc6'),_0xd59547[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0xd59547['ndauth_url'])){return this['channel'][_0x8a66('0x91')](_0x8a66('0xc7'));}if(!this[_0x8a66('0x66')](_0xd59547[_0x8a66('0xc8')])){return this['channel'][_0x8a66('0x91')](_0x8a66('0xc9'));}if(!this[_0x8a66('0x66')](_0xd59547[_0x8a66('0xca')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xcb'));}if(!this[_0x8a66('0x66')](_0xd59547[_0x8a66('0xcc')])){return this[_0x8a66('0xb')][_0x8a66('0x91')]('no\x20text\x20configured');}this[_0x8a66('0xb')][_0x8a66('0xcd')]=!![];this[_0x8a66('0x37')](_0xd59547);this['createSquareMessage'](_0xd59547[_0x8a66('0x5d')],'in');this[_0x8a66('0xb')]['noop'](util[_0x8a66('0x27')](_0x8a66('0xce'),_0xd59547[_0x8a66('0x5d')]));var _0x515fd3=this[_0x8a66('0xcf')][_0x8a66('0x85')](this,_0xd59547);if(_0x515fd3){for(var _0x53f009 in _0x515fd3){if(_0x515fd3[_0x8a66('0x7b')](_0x53f009)){this['channel']['setVariable'](util[_0x8a66('0x27')](_0x8a66('0xd0'),_0x53f009[_0x8a66('0xd1')]()),_0x515fd3[_0x53f009]);}}this[_0x8a66('0x44')](_0x515fd3['speech'],'out');if(_0x515fd3[_0x8a66('0xd2')]){this[_0x8a66('0xb')][_0x8a66('0x91')](util['format']('Sestek\x20NDA\x20%s\x20file\x20created',_0x515fd3[_0x8a66('0xd2')]));var _0x33fbc8=this[_0x8a66('0xb')][_0x8a66('0xd3')](_0x515fd3['audiofile']);try{fs['unlink'](_0x515fd3[_0x8a66('0xd2')]+_0x8a66('0xd4'));}catch(_0x4c58e5){logger[_0x8a66('0x2b')](_0x4c58e5);}return _0x33fbc8;}else{return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0xd5'),_0x515fd3[_0x8a66('0xc2')]));}}return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0xd59547,_0x8a66('0xd6'));};AGIVertices['prototype'][_0x8a66('0xd7')]=function(_0x3f7e94){logger['info'](util['format'](_0x8a66('0xd8'),_0x3f7e94[_0x8a66('0x39')]));return this[_0x8a66('0xb')][_0x8a66('0x91')]('end');};AGIVertices[_0x8a66('0xd')][_0x8a66('0xd9')]=function(_0x5f2fa5){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x5f2fa5[_0x8a66('0x39')]));var _0xda8fe8='';if(_0x5f2fa5[_0x8a66('0xda')]){if(!this[_0x8a66('0x66')](_0x5f2fa5[_0x8a66('0xda')])){return this['channel'][_0x8a66('0x2b')](_0x5f2fa5,_0x8a66('0xdb'));}else{var _0x5c7cbe=parseInt(_0x5f2fa5['trunk_id'],0xa);if(isNaN(_0x5c7cbe)){_0xda8fe8=_0x5f2fa5[_0x8a66('0xda')];}else{_0xda8fe8=this[_0x8a66('0x1b')][_0x8a66('0x85')](this,_0x5f2fa5[_0x8a66('0xda')]);if(!_0xda8fe8){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x5f2fa5,_0x8a66('0xdc'));}}}}else if(_0x5f2fa5[_0x8a66('0xdd')]){_0xda8fe8=_0x5f2fa5[_0x8a66('0xdd')];}else{return this['channel'][_0x8a66('0x2b')](_0x5f2fa5,_0x8a66('0xdb'));}var _0xe5f366=this[_0x8a66('0xb')]['exec']('DIAL',[util[_0x8a66('0x27')]('SIP/%s/%s',_0xda8fe8,_0x5f2fa5['phone']),_0x5f2fa5[_0x8a66('0x8b')],_0x5f2fa5['opts'],_0x5f2fa5['url']]);if(_0xe5f366[_0x8a66('0x82')]===-0x1){return _0xe5f366;}return this['channel'][_0x8a66('0x91')](util['format']('Executed\x20command\x20%s',_0x8a66('0xbb')));};AGIVertices[_0x8a66('0xd')][_0x8a66('0xde')]=function(_0x27b446){logger['info'](util[_0x8a66('0x27')](_0x8a66('0xdf'),_0x27b446[_0x8a66('0x39')]));return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xde'));};AGIVertices[_0x8a66('0xd')][_0x8a66('0xe0')]=function(_0x40d504){logger['info'](util[_0x8a66('0x27')](_0x8a66('0xe1'),_0x40d504['label']));if(_0x40d504[_0x8a66('0x86')]===0x0){return this[_0x8a66('0x84')](_0x40d504);}_0x40d504[_0x8a66('0x86')]-=0x1;if(!this['isConfigured'](_0x40d504[_0x8a66('0xe2')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x40d504,'no\x20file\x20audio\x20selected');}var _0x53b5c7=this['getSound'][_0x8a66('0x85')](this,_0x40d504[_0x8a66('0xe2')]);if(!_0x53b5c7){return this['channel'][_0x8a66('0x2b')](_0x40d504,'no\x20file\x20audio\x20found');}if(!this[_0x8a66('0x66')](_0x40d504[_0x8a66('0xb2')])){return this['channel'][_0x8a66('0x2b')](_0x8a66('0xb3'));}var _0x32f0f9=this[_0x8a66('0xb')][_0x8a66('0xe3')](_0x53b5c7,_0x40d504['response'],_0x40d504[_0x8a66('0xe4')]);var _0x540ea2=_0x32f0f9[_0x8a66('0x82')]?_0x32f0f9[_0x8a66('0x82')]['toString']():'';logger[_0x8a66('0x2d')](_0x8a66('0xe5'),JSON['stringify'](_0x32f0f9));if(_0x32f0f9[_0x8a66('0x82')]===-0x1){this[_0x8a66('0x37')][_0x8a66('0x85')](this,_0x40d504,_0x540ea2);return _0x32f0f9;}else if(_0x32f0f9[_0x8a66('0x81')]===_0x8a66('0x8b')){_0x32f0f9[_0x8a66('0x82')]=_0x540ea2[_0x8a66('0x7f')]>=parseInt(_0x40d504[_0x8a66('0xe6')])?'x':'i';}else{_0x32f0f9[_0x8a66('0x82')]=_0x540ea2[_0x8a66('0x7f')]>=parseInt(_0x40d504[_0x8a66('0xe6')])&&_0x540ea2[_0x8a66('0x7f')]<=parseInt(_0x40d504['maxdigit'])?'x':'i';}var _0x3e5068=this[_0x8a66('0xe')][_0x8a66('0x85')](this,_0x40d504[_0x8a66('0xb2')]);if(!_0x3e5068){return this[_0x8a66('0xb')]['error'](_0x40d504,_0x8a66('0xb4'));}this['channel'][_0x8a66('0x83')](_0x3e5068,_0x540ea2);if(this[_0x8a66('0x66')](_0x40d504[_0x8a66('0xe7')])){var _0x54225c=parseInt(_0x40d504['hiddendigitsnum'],0xa);var _0x286c5a=rs[_0x8a66('0xe8')]({'charset':'*','length':_0x54225c});var _0x536152=_0x540ea2['length'];if(_0x536152>0x0){if(_0x536152>_0x54225c){this['createSquareDetailsReport'][_0x8a66('0x85')](this,_0x40d504,_0x40d504[_0x8a66('0xe9')]==='first'?_0x286c5a+_0x540ea2['substr'](_0x54225c):_0x540ea2['substr'](0x0,_0x536152-_0x54225c)+_0x286c5a);}else{this['createSquareDetailsReport'][_0x8a66('0x85')](this,_0x40d504,rs[_0x8a66('0xe8')]({'charset':'*','length':_0x536152}));}}else{this[_0x8a66('0x37')][_0x8a66('0x85')](this,_0x40d504,'');}}else{this[_0x8a66('0x37')][_0x8a66('0x85')](this,_0x40d504,_0x540ea2);}return _0x32f0f9;};AGIVertices[_0x8a66('0xd')]['getsecretdigits']=function(_0x48ec42){logger['info'](util[_0x8a66('0x27')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x48ec42[_0x8a66('0x39')]));return this[_0x8a66('0xe0')](_0x48ec42);};AGIVertices[_0x8a66('0xd')]['goal']=function(_0x27a30d){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0xea'),_0x27a30d[_0x8a66('0x39')]));this['createSquareDetailsReport'][_0x8a66('0x85')](this,_0x27a30d,_0x27a30d['goalname']);return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0xeb'),_0x27a30d[_0x8a66('0xec')]));};AGIVertices['prototype']['awspolly']=function(_0x433dc1){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0xed'),_0x433dc1[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x433dc1[_0x8a66('0x69')])||!this['isConfigured'](_0x433dc1[_0x8a66('0x6f')])){return this[_0x8a66('0xb')][_0x8a66('0x91')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x8a66('0x66')](_0x433dc1[_0x8a66('0x5d')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0x9c'));}this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')]('Trying\x20aws\x20Polly\x20%s',_0x433dc1[_0x8a66('0x5d')]));var _0x38253f=this[_0x8a66('0x68')][_0x8a66('0x85')](this,_0x433dc1);if(_0x38253f){this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0xee'),_0x38253f));var _0x1e013b=this[_0x8a66('0xb')][_0x8a66('0xd3')](_0x38253f);try{fs[_0x8a66('0xef')](_0x38253f+_0x8a66('0xd4'));}catch(_0x44c9ff){logger[_0x8a66('0x2b')](_0x44c9ff);}return _0x1e013b;}return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x433dc1,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x8a66('0xd')]['awslex']=function(_0x58dd54){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0xf0'),_0x58dd54[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x58dd54[_0x8a66('0x69')])||!this[_0x8a66('0x66')](_0x58dd54[_0x8a66('0x6f')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xf1'));}if(!this[_0x8a66('0x66')](_0x58dd54[_0x8a66('0x71')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xf2'));}if(!this['isConfigured'](_0x58dd54['text'])){return this['channel'][_0x8a66('0x91')](_0x8a66('0x9c'));}this[_0x8a66('0xb')][_0x8a66('0xcd')]=!![];this[_0x8a66('0x37')](_0x58dd54);this['createSquareMessage'](_0x58dd54[_0x8a66('0x5d')],'in');this['channel']['noop'](util[_0x8a66('0x27')](_0x8a66('0xf3'),_0x58dd54[_0x8a66('0x5d')]));var _0x2cf003=this['awsLex']['sync'](this,_0x58dd54);if(_0x2cf003){for(var _0x264742 in _0x2cf003){if(_0x2cf003[_0x8a66('0x7b')](_0x264742)&&_[_0x8a66('0x7c')](_0x2cf003[_0x264742])){this[_0x8a66('0xb')]['setVariable'](util[_0x8a66('0x27')]('AWS_LEX_%s',_0x264742[_0x8a66('0xd1')]()),_0x2cf003[_0x264742]);}}if(_[_0x8a66('0x47')](_0x2cf003[_0x8a66('0xf4')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xf5'));}else{this[_0x8a66('0x44')](_0x2cf003[_0x8a66('0xf4')],_0x8a66('0xf6'));return this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0xf7'),_0x2cf003[_0x8a66('0xf4')]));}}return this[_0x8a66('0xb')]['error'](_0x58dd54,_0x8a66('0xf8'));};AGIVertices[_0x8a66('0xd')][_0x8a66('0xf9')]=function(_0x2f4dbf){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0xfa'),_0x2f4dbf[_0x8a66('0x39')],_0x2f4dbf[_0x8a66('0x8b')]));if(!this[_0x8a66('0x66')](_0x2f4dbf['key'])){return this['channel'][_0x8a66('0x91')](_0x8a66('0xc0'));}var _0x1e576b=_0x8a66('0xfb');var _0x22d756=util['format'](_0x8a66('0xfc'),FILES_PATH,rs[_0x8a66('0xe8')](0x4));var _0x148bbc=util[_0x8a66('0x27')]('%s.%s',_0x22d756,_0x1e576b);var _0x1bb941=!![];if(_0x2f4dbf[_0x8a66('0xfd')]==='NOBEEP'){_0x1bb941=![];}var _0x3e2e84=this['channel'][_0x8a66('0xfe')](_0x22d756,_0x1e576b,_0x2f4dbf[_0x8a66('0xff')],_0x2f4dbf[_0x8a66('0x8b')],undefined,_0x1bb941);if(_0x3e2e84['result']!==-0x1){this[_0x8a66('0xb')][_0x8a66('0x91')](util['format'](_0x8a66('0x100'),_0x148bbc));var _0x350545=this[_0x8a66('0x72')]['sync'](this,_0x2f4dbf,_0x148bbc);if(_0x350545){for(var _0x472ada in _0x350545){if(_0x350545[_0x8a66('0x7b')](_0x472ada)){this[_0x8a66('0xb')][_0x8a66('0x83')](util['format'](_0x8a66('0x101'),_0x472ada[_0x8a66('0xd1')]()),_0x350545[_0x472ada]);}}return this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x102'),JSON[_0x8a66('0x103')](_0x350545)));}}return _0x3e2e84;};AGIVertices['prototype']['tildeasr']=function(_0xdbfa2a){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0x104'),_0xdbfa2a[_0x8a66('0x39')]));if(!this['isConfigured'](_0xdbfa2a[_0x8a66('0x75')])){return this['channel'][_0x8a66('0x91')]('no\x20appid\x20configured');}if(!this[_0x8a66('0x66')](_0xdbfa2a[_0x8a66('0x76')])){return this['channel'][_0x8a66('0x91')](_0x8a66('0x105'));}var _0x59c0cc='wav';var _0x2b3d20=util[_0x8a66('0x27')](_0x8a66('0xfc'),FILES_PATH,rs[_0x8a66('0xe8')](0x4));var _0x197ceb=util[_0x8a66('0x27')](_0x8a66('0x106'),_0x2b3d20,_0x59c0cc);var _0x336d9c=!![];if(_0xdbfa2a[_0x8a66('0xfd')]===_0x8a66('0x107')){_0x336d9c=![];}var _0x5247ae=this['channel'][_0x8a66('0xfe')](_0x2b3d20,_0x59c0cc,_0xdbfa2a[_0x8a66('0xff')],_0xdbfa2a[_0x8a66('0x8b')],undefined,_0x336d9c);if(_0x5247ae['result']!==-0x1){this[_0x8a66('0xb')][_0x8a66('0x91')](util['format'](_0x8a66('0x108'),_0x197ceb));var _0x3a9b1f=this[_0x8a66('0x74')][_0x8a66('0x85')](this,_0xdbfa2a,_0x197ceb);if(_0x3a9b1f){for(var _0x29f809 in _0x3a9b1f){if(_0x3a9b1f['hasOwnProperty'](_0x29f809)){this[_0x8a66('0xb')]['setVariable'](util['format'](_0x8a66('0x109'),_0x29f809[_0x8a66('0xd1')]()),_0x3a9b1f[_0x29f809]);}}return this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x10a'),JSON[_0x8a66('0x103')](_0x3a9b1f)));}}return _0x5247ae;};AGIVertices[_0x8a66('0xd')][_0x8a66('0x10b')]=function(_0x4a2847){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x10c'),_0x4a2847['label']));return this[_0x8a66('0xb')][_0x8a66('0x10d')](_0x4a2847['context'],_0x4a2847[_0x8a66('0x40')],_0x4a2847[_0x8a66('0x10e')]);};AGIVertices['prototype'][_0x8a66('0x10f')]=function(_0x4476fc){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x4476fc[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x4476fc['condition'])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x4476fc,'no\x20condition\x20configured');}try{var _0x59cc33=eval(_0x4476fc[_0x8a66('0x110')])?'true':_0x8a66('0x111');this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x112'),_0x4476fc[_0x8a66('0x110')],_0x59cc33));return{'code':0xc8,'result':_0x59cc33};}catch(_0x50c107){return{'code':0xc8,'result':_0x8a66('0x111')};}};AGIVertices['prototype'][_0x8a66('0x113')]=function(_0xcf5252){logger['info'](util[_0x8a66('0x27')](_0x8a66('0x114'),_0xcf5252[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0xcf5252[_0x8a66('0x115')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0xcf5252,_0x8a66('0x116'));}var _0x271af6=this[_0x8a66('0x23')][_0x8a66('0x85')](this,_0xcf5252[_0x8a66('0x115')]);if(!_0x271af6){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0xcf5252,'no\x20intervals\x20found');}for(var _0x3454a2=0x0;_0x3454a2<_0x271af6[_0x8a66('0x7f')];_0x3454a2+=0x1){var _0x231a47=this[_0x8a66('0xb')][_0x8a66('0xe')](util[_0x8a66('0x27')](_0x8a66('0x117'),_0x271af6[_0x3454a2]));if(_0x231a47[_0x8a66('0x82')]===-0x1){return _0x231a47;}logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x118'),_0x271af6[_0x3454a2],_0x231a47[_0x8a66('0x81')]));if(_0x231a47[_0x8a66('0x81')]===_0x8a66('0x119')){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('IFTIME\x20%s\x20%s',_0x271af6[_0x3454a2],'true'));this['channel']['noop'](util['format'](_0x8a66('0x118'),_0x271af6[_0x3454a2],_0x8a66('0x119')));return{'code':0xc8,'result':_0x8a66('0x119')};}else{logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('IFTIME\x20%s\x20%s',_0x271af6[_0x3454a2],_0x8a66('0x111')));this[_0x8a66('0xb')]['noop'](util[_0x8a66('0x27')](_0x8a66('0x118'),_0x271af6[_0x3454a2],_0x8a66('0x111')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x8a66('0xd')][_0x8a66('0x11a')]=function(_0x368878){logger['info'](util[_0x8a66('0x27')](_0x8a66('0x11b'),_0x368878[_0x8a66('0x39')]));return this[_0x8a66('0xb')][_0x8a66('0x11a')]();};AGIVertices[_0x8a66('0xd')][_0x8a66('0x11c')]=function(_0x1cff66){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0x11d'),_0x1cff66[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x1cff66['key'])){return this['channel'][_0x8a66('0x91')](_0x8a66('0xc0'));}var _0x58827f='wav';var _0x1eb50b=util[_0x8a66('0x27')](_0x8a66('0xfc'),FILES_PATH,rs[_0x8a66('0xe8')](0x4));var _0x344471=util[_0x8a66('0x27')]('%s.%s',_0x1eb50b,_0x58827f);var _0x25001f=!![];if(_0x1cff66[_0x8a66('0xfd')]===_0x8a66('0x107')){_0x25001f=![];}var _0x5bfcba=this['channel'][_0x8a66('0xfe')](_0x1eb50b,_0x58827f,_0x1cff66['intKey'],_0x1cff66[_0x8a66('0x8b')],undefined,_0x25001f);if(_0x5bfcba[_0x8a66('0x82')]!==-0x1){this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x11e'),_0x344471));var _0x26a163=this['ispeechASR'][_0x8a66('0x85')](this,_0x1cff66,_0x344471);if(_0x26a163){for(var _0x3dce31 in _0x26a163){if(_0x26a163[_0x8a66('0x7b')](_0x3dce31)){this[_0x8a66('0xb')][_0x8a66('0x83')](util[_0x8a66('0x27')]('ISPEECH_ASR_%s',_0x3dce31[_0x8a66('0xd1')]()),_0x26a163[_0x3dce31]);}}return this[_0x8a66('0xb')]['noop'](util['format']('IspeechASR\x20Result\x20%s',JSON[_0x8a66('0x103')](_0x26a163)));}}return _0x5bfcba;};AGIVertices[_0x8a66('0xd')]['ispeechtts']=function(_0x1c4d53){logger['info'](util[_0x8a66('0x27')](_0x8a66('0x11f'),_0x1c4d53[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x1c4d53[_0x8a66('0x60')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xc0'));}if(!this[_0x8a66('0x66')](_0x1c4d53[_0x8a66('0x5d')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0x9c'));}this[_0x8a66('0xb')][_0x8a66('0x91')](util['format'](_0x8a66('0x120'),_0x1c4d53[_0x8a66('0x5d')]));var _0x5780c7=this[_0x8a66('0x61')][_0x8a66('0x85')](this,_0x1c4d53);if(_0x5780c7){this[_0x8a66('0xb')][_0x8a66('0x91')](util['format'](_0x8a66('0x11e'),_0x5780c7));var _0x4d0f4b=this[_0x8a66('0xb')][_0x8a66('0xd3')](_0x5780c7,_0x1c4d53[_0x8a66('0xff')]);try{fs[_0x8a66('0xef')](_0x5780c7+_0x8a66('0xd4'));}catch(_0x51b892){logger[_0x8a66('0x2b')](_0x51b892);}return _0x4d0f4b;}return this[_0x8a66('0xb')]['error'](_0x1c4d53,_0x8a66('0x121'));};AGIVertices[_0x8a66('0xd')][_0x8a66('0x122')]=function(_0x54e303){logger['info'](util[_0x8a66('0x27')](_0x8a66('0x123'),_0x54e303[_0x8a66('0x39')]));if(!this['isConfigured'](_0x54e303['findBy'])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x54e303,_0x8a66('0x124'));}logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x125'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x54e303[_0x8a66('0x126')]));var _0x4c6e0f=this['agentLogin']['sync'](this,_0x54e303[_0x8a66('0x126')]);if(_0x4c6e0f){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x127'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x54e303[_0x8a66('0x126')]));this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x127'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x54e303[_0x8a66('0x126')]));return{'code':0xc8,'result':_0x8a66('0x128')};}else{logger[_0x8a66('0x2d')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x54e303[_0x8a66('0x126')]));this[_0x8a66('0xb')]['noop'](util['format'](_0x8a66('0x129'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x54e303[_0x8a66('0x126')]));return{'code':0xc8,'result':_0x8a66('0x12a')};}};AGIVertices[_0x8a66('0xd')][_0x8a66('0x12b')]=function(_0x125634){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x12c'),_0x125634['label']));if(!this[_0x8a66('0x66')](_0x125634['findBy'])){return this['channel'][_0x8a66('0x2b')](_0x125634,_0x8a66('0x124'));}logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x125'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x125634['findBy']));var _0x256f96=this[_0x8a66('0x56')][_0x8a66('0x85')](this,_0x125634['findBy']);if(_0x256f96){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x125634[_0x8a66('0x126')]));this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x127'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x125634[_0x8a66('0x126')]));return{'code':0xc8,'result':_0x8a66('0x128')};}else{logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x129'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x125634[_0x8a66('0x126')]));this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x129'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x125634[_0x8a66('0x126')]));return{'code':0xc8,'result':_0x8a66('0x12a')};}};AGIVertices[_0x8a66('0xd')]['math']=function(_0xbbbe88){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x12d'),_0xbbbe88[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0xbbbe88[_0x8a66('0x12e')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0xbbbe88,_0x8a66('0x12f'));}this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x130'),_0xbbbe88['operation']));var _0x44f361=eval(_0xbbbe88[_0x8a66('0x12e')]);if(!this[_0x8a66('0x66')](_0xbbbe88[_0x8a66('0xb2')])){return this[_0x8a66('0xb')]['noop'](_0x8a66('0xb3'));}var _0x1ca213=this[_0x8a66('0xe')][_0x8a66('0x85')](this,_0xbbbe88[_0x8a66('0xb2')]);if(!_0x1ca213){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0xbbbe88,_0x8a66('0xb4'));}if(_[_0x8a66('0x131')](_0x44f361)){var _0x54f254=this;_0x44f361[_0x8a66('0xb5')](function(_0x4b353d,_0xa07be){_0x54f254['channel'][_0x8a66('0x83')](util[_0x8a66('0x27')](_0x8a66('0x132'),_0x1ca213,_0xa07be),_0x4b353d);});return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x133'),_0x1ca213));}else{return this['channel'][_0x8a66('0x83')](_0x1ca213,_0x44f361);}};AGIVertices[_0x8a66('0xd')]['menu']=function(_0x2a5e49){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x134'),_0x2a5e49[_0x8a66('0x39')]));if(_0x2a5e49[_0x8a66('0x86')]===0x0){return this[_0x8a66('0x84')](_0x2a5e49);}_0x2a5e49['retry']-=0x1;if(!this['isConfigured'](_0x2a5e49[_0x8a66('0xe2')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x2a5e49,_0x8a66('0x135'));}var _0xed30b3=this[_0x8a66('0x1c')][_0x8a66('0x85')](this,_0x2a5e49[_0x8a66('0xe2')]);if(!_0xed30b3){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x2a5e49,_0x8a66('0x136'));}var _0x582d9a=this[_0x8a66('0xb')]['getData'](_0xed30b3,_0x2a5e49[_0x8a66('0x137')],_0x2a5e49[_0x8a66('0x138')]);var _0x144857=_0x582d9a[_0x8a66('0x82')];if(_0x582d9a[_0x8a66('0x82')]===-0x1){this['createSquareDetailsReport']['sync'](this,_0x2a5e49,'-1');return _0x582d9a;}else if(_0x582d9a['extra']==='timeout'){_0x582d9a['result']=_0x582d9a[_0x8a66('0x82')][_0x8a66('0x7f')]>0x0?_0x582d9a[_0x8a66('0x82')]:'t';}else if(_['isEmpty'](_0x582d9a[_0x8a66('0x82')])){_0x582d9a[_0x8a66('0x82')]='#';_0x144857='#';}if(!this[_0x8a66('0x66')](_0x2a5e49[_0x8a66('0xb2')])){this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0xb3'));}else{var _0x3c6eda=this['getVariable'][_0x8a66('0x85')](this,_0x2a5e49[_0x8a66('0xb2')]);if(!_0x3c6eda){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x2a5e49,_0x8a66('0xb4'));}this['channel'][_0x8a66('0x83')](_0x3c6eda,_0x144857);}this['createSquareDetailsReport']['sync'](this,_0x2a5e49,_0x144857);return _0x582d9a;};AGIVertices[_0x8a66('0xd')][_0x8a66('0x91')]=function(_0xb19d76){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x139'),_0xb19d76[_0x8a66('0x39')]));return this[_0x8a66('0xb')][_0x8a66('0x91')](_0xb19d76[_0x8a66('0x13a')]||_0xb19d76['label']);};AGIVertices[_0x8a66('0xd')][_0x8a66('0x13b')]=function(_0x348d9e){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x13c'),_0x348d9e['label']));if(!this[_0x8a66('0x66')](_0x348d9e['findBy'])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x348d9e,_0x8a66('0x124'));}logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x348d9e[_0x8a66('0x126')]));var _0x1c418f=this[_0x8a66('0x51')]['sync'](this,_0x348d9e[_0x8a66('0x13d')]);var _0x35c621=this[_0x8a66('0x53')]['sync'](this,_0x348d9e[_0x8a66('0x126')],_0x1c418f);if(_0x35c621){logger['info'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x8a66('0xb')]['callerid'],_0x348d9e[_0x8a66('0x126')]));this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x127'),this[_0x8a66('0xb')]['callerid'],_0x348d9e[_0x8a66('0x126')]));return{'code':0xc8,'result':_0x8a66('0x128')};}else{logger['info'](util[_0x8a66('0x27')](_0x8a66('0x129'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x348d9e['findBy']));this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x127'),this[_0x8a66('0xb')]['callerid'],_0x348d9e[_0x8a66('0x126')]));return{'code':0xc8,'result':_0x8a66('0x12a')};}};AGIVertices[_0x8a66('0xd')][_0x8a66('0x13e')]=function(_0x1859e7){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x13f'),_0x1859e7[_0x8a66('0x39')]));if(!this['isConfigured'](_0x1859e7['file_id'])){return this['channel'][_0x8a66('0x2b')](_0x1859e7,'no\x20file\x20audio\x20selected');}var _0x169e49=this[_0x8a66('0x1c')][_0x8a66('0x85')](this,_0x1859e7['file_id']);if(!_0x169e49){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x1859e7,_0x8a66('0x136'));}var _0x435a68=this[_0x8a66('0xb')][_0x8a66('0x94')](_0x8a66('0x140'),[_0x169e49,_0x1859e7[_0x8a66('0xbd')]]);if(_0x435a68[_0x8a66('0x82')]===-0x1){return _0x435a68;}return this[_0x8a66('0xb')][_0x8a66('0x91')](util['format'](_0x8a66('0x141'),'PLAYBACK',_0x169e49));};AGIVertices[_0x8a66('0xd')][_0x8a66('0x142')]=function(_0x110ec4){logger['info'](util[_0x8a66('0x27')](_0x8a66('0x143'),_0x110ec4['label']));if(!this[_0x8a66('0x66')](_0x110ec4[_0x8a66('0x144')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x110ec4,'no\x20queue\x20selected');}var _0x41b3f5='';var _0x172bab=parseInt(_0x110ec4[_0x8a66('0x144')],0xa);if(isNaN(_0x172bab)){_0x41b3f5=_0x110ec4[_0x8a66('0x144')];}else{_0x41b3f5=this[_0x8a66('0x13')][_0x8a66('0x85')](this,_0x110ec4[_0x8a66('0x144')]);if(!_0x41b3f5){return this['channel'][_0x8a66('0x2b')](_0x110ec4,_0x8a66('0x145'));}}var _0x50def3='';if(this[_0x8a66('0x66')](_0x110ec4[_0x8a66('0xe2')])){var _0xbf7cf5=this[_0x8a66('0x1c')]['sync'](this,_0x110ec4[_0x8a66('0xe2')]);if(_0xbf7cf5){_0x50def3=_0xbf7cf5;}}this[_0x8a66('0x37')]['sync'](this,_0x110ec4,_0x41b3f5);if(_0x110ec4['opts']['indexOf']('x')<0x0){_0x110ec4[_0x8a66('0xbd')]+='x';}if(_0x110ec4[_0x8a66('0xbd')][_0x8a66('0x146')]('X')<0x0){_0x110ec4[_0x8a66('0xbd')]+='X';}this[_0x8a66('0xb')][_0x8a66('0x83')]('XMCS-QUEUE',_0x41b3f5?_0x41b3f5[_0x8a66('0x147')]():'');var _0x5d96f2=this[_0x8a66('0xb')][_0x8a66('0x94')](_0x8a66('0x148'),[_0x41b3f5,_0x110ec4[_0x8a66('0xbd')],_0x110ec4[_0x8a66('0x149')],_0x50def3,_0x110ec4[_0x8a66('0x8b')],_0x110ec4[_0x8a66('0x5')],_0x110ec4[_0x8a66('0x14a')],_0x110ec4['gosub'],'',_0x110ec4[_0x8a66('0x14b')]]);if(_0x5d96f2[_0x8a66('0x82')]===-0x1){return _0x5d96f2;}return this['channel'][_0x8a66('0x91')](util['format'](_0x8a66('0x141'),_0x8a66('0x148'),_0x41b3f5));};AGIVertices['prototype']['record']=function(_0x5985b5){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0x14c'),_0x5985b5[_0x8a66('0x39')]));var _0x565ead=_0x5985b5[_0x8a66('0x14d')]||'wav';var _0x2d4766=util[_0x8a66('0x27')](_0x8a66('0x14e'),this[_0x8a66('0xb')][_0x8a66('0x38')],rs['generate'](0x5));var _0x49855c=util[_0x8a66('0x27')](_0x8a66('0x14f'),FILES_PATH,_0x2d4766,_0x565ead);var _0x5ce5a9=util['format'](_0x8a66('0xfc'),FILES_PATH,_0x2d4766);this[_0x8a66('0x3d')][_0x8a66('0x85')](this,_0x5985b5,_0x2d4766,_0x49855c);this[_0x8a66('0xb')][_0x8a66('0x83')](_0x8a66('0x150'),_0x2d4766);logger[_0x8a66('0x2d')](_0x8a66('0x151'),_0x5ce5a9,_0x565ead,_0x5985b5[_0x8a66('0x152')],_0x5985b5[_0x8a66('0x8b')]);return this[_0x8a66('0xb')]['recordFile'](_0x5ce5a9,_0x565ead,_0x5985b5['escape_digits'],_0x5985b5['timeout'],undefined,!![]);};AGIVertices[_0x8a66('0xd')][_0x8a66('0x153')]=function(_0x4a8e60){logger['info'](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x4a8e60[_0x8a66('0x39')]));return this[_0x8a66('0xb')][_0x8a66('0x154')](_0x4a8e60[_0x8a66('0x155')]['replace'](/\s+/g,''),_0x4a8e60[_0x8a66('0x152')]);};AGIVertices['prototype'][_0x8a66('0x156')]=function(_0x197d92){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0x157'),_0x197d92[_0x8a66('0x39')]));return this['channel'][_0x8a66('0x158')](_0x197d92[_0x8a66('0x159')][_0x8a66('0xb0')](/\s+/g,''),_0x197d92[_0x8a66('0x152')]);};AGIVertices['prototype'][_0x8a66('0x15a')]=function(_0x5aec6d){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x15b'),_0x5aec6d[_0x8a66('0x39')]));return this['channel'][_0x8a66('0x15c')](_0x5aec6d[_0x8a66('0x5d')],_0x5aec6d[_0x8a66('0x152')]);};AGIVertices[_0x8a66('0xd')][_0x8a66('0x15d')]=function(_0x3adda2){logger['info'](util['format']('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x3adda2[_0x8a66('0x39')]));if(!this['isConfigured'](_0x3adda2[_0x8a66('0x15e')])){return this['channel']['noop'](_0x8a66('0x15f'));}var _0xdcf22=this['getMailAccount'][_0x8a66('0x85')](this,_0x3adda2[_0x8a66('0x15e')]);if(!_0xdcf22||!_0xdcf22[_0x8a66('0x160')]){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x3adda2,_0x8a66('0x161'));}var _0x34733f={'from':util[_0x8a66('0x27')](_0x8a66('0x162'),_0xdcf22['name'],_0xdcf22[_0x8a66('0x163')]||_0xdcf22['Smtp'][_0x8a66('0x164')]),'to':_0x3adda2['to']||'','cc':_0x3adda2['cc']||'','bcc':_0x3adda2[_0x8a66('0x165')]||'','subject':_0x3adda2[_0x8a66('0x166')],'html':_0x3adda2[_0x8a66('0x5d')],'text':_0x3adda2[_0x8a66('0x5d')]};var _0x1b38ea={'tls':{'rejectUnauthorized':![]}};if(_0xdcf22[_0x8a66('0x160')][_0x8a66('0x167')]){_0x1b38ea[_0x8a66('0x167')]=_0xdcf22[_0x8a66('0x160')][_0x8a66('0x167')];}else{_0x1b38ea[_0x8a66('0x168')]=_0xdcf22['Smtp']['host'];_0x1b38ea['port']=_0xdcf22[_0x8a66('0x160')]['port'];_0x1b38ea[_0x8a66('0x169')]=_0xdcf22[_0x8a66('0x160')][_0x8a66('0x169')];}if(_0xdcf22['Smtp'][_0x8a66('0x16a')]){_0x1b38ea['auth']={'user':_0xdcf22[_0x8a66('0x160')][_0x8a66('0x164')],'pass':_0xdcf22[_0x8a66('0x160')]['pass']};}if(this[_0x8a66('0x66')](_0x3adda2[_0x8a66('0x16b')])){}logger[_0x8a66('0xb8')]('sendMail\x20message',JSON[_0x8a66('0x103')](_0x34733f));this[_0x8a66('0x37')][_0x8a66('0x85')](this,_0x3adda2,_0x3adda2[_0x8a66('0x15e')]);this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x16c'),_0xdcf22[_0x8a66('0x15')]));this[_0x8a66('0x22')][_0x8a66('0x85')](this,_0x1b38ea,_0x34733f);return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0x16d'));};AGIVertices[_0x8a66('0xd')][_0x8a66('0x16e')]=function(_0x4382aa){logger['info'](util[_0x8a66('0x27')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x4382aa['label']));return this[_0x8a66('0xb')]['noop'](_0x8a66('0x16f'));};AGIVertices['prototype'][_0x8a66('0x170')]=function(_0xc78e13){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x171'),_0xc78e13[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0xc78e13['sms_account_id'])){return this[_0x8a66('0xb')]['noop']('no\x20sms\x20account\x20configured');}var _0x247d42=this[_0x8a66('0x34')][_0x8a66('0x85')](this,_0xc78e13['sms_account_id']);if(!_0x247d42){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0xc78e13,'no\x20sms\x20account\x20found');}var _0x23f5d3={'body':_0xc78e13[_0x8a66('0x172')],'phone':_0xc78e13['to']||'','SmsAccountId':_0x247d42['id']};logger['debug']('sendSMS\x20message',JSON[_0x8a66('0x103')](_0x23f5d3));this[_0x8a66('0x37')][_0x8a66('0x85')](this,_0xc78e13,_0xc78e13['sms_account_id']);this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x173'),_0x247d42[_0x8a66('0x15')]));this[_0x8a66('0x36')][_0x8a66('0x85')](this,_0x23f5d3);return this[_0x8a66('0xb')][_0x8a66('0x91')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x8a66('0xd')][_0x8a66('0x174')]=function(_0x58b623){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x58b623[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x58b623['variable_id'])){return this['channel'][_0x8a66('0x2b')](_0x58b623,_0x8a66('0x175'));}var _0x404f60=this[_0x8a66('0xe')][_0x8a66('0x85')](this,_0x58b623[_0x8a66('0xb2')]);if(!_0x404f60){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x58b623,_0x8a66('0xb4'));}return this[_0x8a66('0xb')][_0x8a66('0x83')](_0x404f60,_0x58b623[_0x8a66('0x176')]);};AGIVertices[_0x8a66('0xd')]['start']=function(_0x3dbd48){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x177'),_0x3dbd48[_0x8a66('0x39')]));this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0x178'));if(_0x3dbd48[_0x8a66('0x89')]===_0x8a66('0x179')){this[_0x8a66('0xb')]['noop'](_0x8a66('0x17a'));return this[_0x8a66('0xb')][_0x8a66('0x89')]();}return this['channel']['noop'](_0x8a66('0x17b'));};AGIVertices[_0x8a66('0xd')][_0x8a66('0x17c')]=function(_0x291341){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x17d'),_0x291341[_0x8a66('0x39')]));if(!this['isConfigured'](_0x291341[_0x8a66('0x17e')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x291341,_0x8a66('0x17f'));}var _0x590b20=this['getSquareProject']['sync'](this,_0x291341[_0x8a66('0x17e')]);if(!this[_0x8a66('0x66')](_0x590b20)){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x291341,util[_0x8a66('0x27')](_0x8a66('0x180'),_0x291341[_0x8a66('0x17e')]));}if(_0x590b20===this['channel'][_0x8a66('0x3b')]){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x291341,_0x8a66('0x181'));}this['createSquareDetailsReport'][_0x8a66('0x85')](this,_0x291341,_0x590b20);var _0x46b739=this[_0x8a66('0xb')]['exec']('AGI',util[_0x8a66('0x27')](_0x8a66('0x182'),config[_0x8a66('0x5')][_0x8a66('0x168')]||_0x8a66('0x183'),_0x590b20,this[_0x8a66('0xb')]['arg_1']));if(_0x46b739['result']===-0x1){return _0x46b739;}return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x141'),_0x8a66('0x184'),_0x590b20));};AGIVertices[_0x8a66('0xd')]['system']=function(_0x34702f){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x185'),_0x34702f[_0x8a66('0x39')]));var _0x45eaeb=this[_0x8a66('0x5b')][_0x8a66('0x85')](this,_0x34702f[_0x8a66('0x186')]);this[_0x8a66('0x37')][_0x8a66('0x85')](this,_0x34702f,_0x34702f[_0x8a66('0x186')]);if(this[_0x8a66('0x66')](_0x34702f[_0x8a66('0xb2')])){var _0x383ab1=this['getVariable'][_0x8a66('0x85')](this,_0x34702f['variable_id']);if(_0x383ab1){this[_0x8a66('0xb')][_0x8a66('0x83')](_0x383ab1,_0x45eaeb);return this[_0x8a66('0xb')]['noop'](util[_0x8a66('0x27')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x34702f[_0x8a66('0x186')],_0x383ab1));}}return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x187'),_0x34702f[_0x8a66('0x186')]));};AGIVertices[_0x8a66('0xd')]['tts']=function(_0x17a6c2){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x17a6c2['label']));if(!this['isConfigured'](_0x17a6c2[_0x8a66('0x5d')])){return this[_0x8a66('0xb')][_0x8a66('0x91')](_0x8a66('0x9c'));}this['channel']['noop'](util[_0x8a66('0x27')](_0x8a66('0x188'),_0x17a6c2[_0x8a66('0x5d')]));var _0x10fdee=this[_0x8a66('0x5c')][_0x8a66('0x85')](this,_0x17a6c2);if(_0x10fdee){this['channel'][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x189'),_0x10fdee));var _0x28248c=this[_0x8a66('0xb')][_0x8a66('0xd3')](_0x10fdee);try{fs[_0x8a66('0xef')](_0x10fdee+_0x8a66('0xd4'));}catch(_0x2941eb){logger[_0x8a66('0x2b')](_0x2941eb);}return _0x28248c;}return this[_0x8a66('0xb')]['error'](_0x17a6c2,_0x8a66('0x18a'));};AGIVertices[_0x8a66('0xd')][_0x8a66('0x18b')]=function(_0x3c7cc1){logger[_0x8a66('0x2d')](util[_0x8a66('0x27')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x3c7cc1[_0x8a66('0x39')]));if(!this['isConfigured'](_0x3c7cc1[_0x8a66('0x126')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x3c7cc1,_0x8a66('0x124'));}logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x125'),this['channel']['callerid'],_0x3c7cc1['findBy']));var _0xab2867=this['agentUnpause'][_0x8a66('0x85')](this,_0x3c7cc1['findBy']);if(_0xab2867){logger['info'](util['format'](_0x8a66('0x127'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x3c7cc1[_0x8a66('0x126')]));this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x127'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x3c7cc1[_0x8a66('0x126')]));return{'code':0xc8,'result':_0x8a66('0x128')};}else{logger[_0x8a66('0x2d')](util[_0x8a66('0x27')](_0x8a66('0x129'),this[_0x8a66('0xb')][_0x8a66('0x3c')],_0x3c7cc1[_0x8a66('0x126')]));this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')](_0x8a66('0x129'),this['channel']['callerid'],_0x3c7cc1[_0x8a66('0x126')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x8a66('0xd')][_0x8a66('0x18c')]=function(_0x47d302){logger['info'](util[_0x8a66('0x27')](_0x8a66('0x18d'),_0x47d302[_0x8a66('0x39')]));var _0x10dbbe=this['channel']['exec']('VOICEMAIL',[_0x47d302['mailbox'],_0x47d302['options']]);if(_0x10dbbe['result']===-0x1){return _0x10dbbe;}return this[_0x8a66('0xb')][_0x8a66('0x91')](util[_0x8a66('0x27')]('Executed\x20command\x20%s\x20%s',_0x8a66('0x18e'),_0x47d302[_0x8a66('0x18f')]));};AGIVertices[_0x8a66('0xd')]['vswitch']=function(_0x215c30){logger[_0x8a66('0x2d')](util['format'](_0x8a66('0x190'),_0x215c30[_0x8a66('0x39')]));if(!this[_0x8a66('0x66')](_0x215c30[_0x8a66('0xb2')])){return this[_0x8a66('0xb')][_0x8a66('0x2b')](_0x215c30,'no\x20variable\x20selected');}var _0x576904=this[_0x8a66('0xe')][_0x8a66('0x85')](this,_0x215c30['variable_id']);if(!_0x576904){return this['channel']['error'](_0x215c30,_0x8a66('0xb4'));}var _0x4c17a1=this['channel'][_0x8a66('0xe')](_0x576904);return{'code':0xc8,'result':_0x4c17a1[_0x8a66('0x81')]?_0x4c17a1['extra']:'-'};};String['prototype'][_0x8a66('0x80')]=function(_0x5028cd,_0x55e379){return this[_0x8a66('0x7e')](_0x5028cd)[_0x8a66('0x191')](_0x55e379);};module[_0x8a66('0x192')]=AGIVertices;
\ No newline at end of file
index e7460ab..9e2cb9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['catch','error','[%s][UPDATE][ERRORS:%s]','finally','message','[TIMER][STOP][AGENT:%s]','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','syncBlindTransfer','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','util','moment','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncAgentConnectPreview','milliseconds','diff','prototype','startAcw','queue','Action','QueuePause','ACW','getAgent','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6aa7,0x178));var _0x76aa=function(_0x4dfcf6,_0xa48d31){_0x4dfcf6=_0x4dfcf6-0x0;var _0x3bd09e=_0x6aa7[_0x4dfcf6];return _0x3bd09e;};'use strict';var util=require(_0x76aa('0x0'));var _=require('lodash');var moment=require(_0x76aa('0x1'));var ami=require(_0x76aa('0x2'));var logger=require(_0x76aa('0x3'))(_0x76aa('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x76aa('0x5'));function Acw(_0xef15ef){this[_0x76aa('0x6')]=_0xef15ef['voiceQueues'];this['agents']=_0xef15ef[_0x76aa('0x7')];this['timers']=_0xef15ef[_0x76aa('0x8')];this[_0x76aa('0x9')]={};ami['on'](_0x76aa('0xa'),this['syncAgentConnect'][_0x76aa('0xb')](this));ami['on'](_0x76aa('0xc'),this[_0x76aa('0xd')]['bind'](this));ami['on'](_0x76aa('0xe'),this[_0x76aa('0xf')][_0x76aa('0xb')](this));ami['on'](_0x76aa('0x10'),this[_0x76aa('0x11')][_0x76aa('0xb')](this));ami['on'](_0x76aa('0x12'),this[_0x76aa('0x13')][_0x76aa('0xb')](this));ami['on'](_0x76aa('0x14'),this['syncBlindTransfer'][_0x76aa('0xb')](this));ami['on']('custom:agentConnectPreview',this[_0x76aa('0x15')][_0x76aa('0xb')](this));}function getDiff(_0x3f8f6b){var _0x8e44ed=moment()[_0x76aa('0x16')](0x0);var _0x4e309f=moment(_0x3f8f6b)['milliseconds'](0x0);return _0x8e44ed[_0x76aa('0x17')](_0x4e309f,'seconds');}Acw[_0x76aa('0x18')][_0x76aa('0x19')]=function(_0x5cf594){try{var _0x2111c7=this;var _0x550d9a=this[_0x76aa('0x9')][_0x5cf594]['interface'];var _0x1515e9=this[_0x76aa('0x9')][_0x5cf594][_0x76aa('0x1a')];ami[_0x76aa('0x1b')]({'action':_0x76aa('0x1c'),'interface':_0x550d9a,'paused':!![],'reason':_0x76aa('0x1d')})['then'](function(_0x5d6202){if(_0x2111c7[_0x76aa('0x7')][_0x550d9a]){return RpcUser[_0x76aa('0x1e')](_0x2111c7[_0x76aa('0x7')][_0x550d9a]['id'])[_0x76aa('0x1f')](function(_0x15109b){if(_0x15109b&&!_0x15109b[_0x76aa('0x20')]){logger[_0x76aa('0x21')](_0x76aa('0x22'),_0x5cf594,_0x550d9a,_0x1515e9);return RpcUser[_0x76aa('0x23')](_0x2111c7['agents'][_0x550d9a],_0x76aa('0x1d'),_0x5cf594)[_0x76aa('0x1f')](function(_0x338a6b){_0x2111c7['timers'][_0x550d9a]={};logger[_0x76aa('0x21')](_0x76aa('0x24'),_0x5cf594,_0x2111c7[_0x76aa('0x6')][_0x1515e9][_0x76aa('0x25')],_0x550d9a,_0x1515e9);_0x2111c7[_0x76aa('0x8')][_0x550d9a][_0x76aa('0x26')]=setTimeout(_0x2111c7[_0x76aa('0x27')][_0x76aa('0xb')](_0x2111c7,_0x550d9a),_0x2111c7[_0x76aa('0x6')][_0x1515e9][_0x76aa('0x25')]*0x3e8);_0x2111c7[_0x76aa('0x8')][_0x550d9a][_0x76aa('0x28')]=_0x338a6b[_0x76aa('0x28')];_0x2111c7['timers'][_0x550d9a][_0x76aa('0x29')]=_0x5cf594;_0x2111c7[_0x76aa('0x8')][_0x550d9a][_0x76aa('0x1a')]=_0x1515e9;_0x2111c7[_0x76aa('0x8')][_0x550d9a][_0x76aa('0x2a')]=function(){var _0x2f9316=getDiff(_0x2111c7[_0x76aa('0x8')][_0x550d9a][_0x76aa('0x28')]);clearTimeout(_0x2111c7[_0x76aa('0x8')][_0x550d9a][_0x76aa('0x26')]);RpcVoiceAgentReport['update']({'acwtime':_0x2f9316},_0x2111c7[_0x76aa('0x8')][_0x550d9a]['uniqueid'],_0x550d9a)[_0x76aa('0x1f')](function(_0x365ff8){logger[_0x76aa('0x21')](_0x76aa('0x2b'),_0x5cf594,_0x2f9316,_0x365ff8);})[_0x76aa('0x2c')](function(_0x2d6213){logger[_0x76aa('0x2d')](_0x76aa('0x2e'),_0x5cf594,_0x2d6213);});delete _0x2111c7[_0x76aa('0x8')][_0x550d9a];};});}else{logger[_0x76aa('0x21')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x5cf594,_0x550d9a,_0x1515e9);}});}})[_0x76aa('0x2c')](function(_0x5532c7){logger[_0x76aa('0x2d')](_0x76aa('0x24'),_0x5cf594,_0x2111c7[_0x76aa('0x6')][_0x1515e9][_0x76aa('0x25')],_0x550d9a,_0x1515e9);})[_0x76aa('0x2f')](function(){delete _0x2111c7['channels'][_0x5cf594];});}catch(_0x258624){logger[_0x76aa('0x2d')]('[ACW][START]\x20%s',_0x258624[_0x76aa('0x30')]);}};Acw['prototype'][_0x76aa('0x27')]=function(_0x4c90b6){try{var _0x8479a3=this;if(_0x8479a3['timers'][_0x4c90b6]){var _0x58f135=_0x8479a3[_0x76aa('0x8')][_0x4c90b6][_0x76aa('0x29')];var _0x198fcb=_0x8479a3[_0x76aa('0x8')][_0x4c90b6]['queue'];var _0x592596=_0x8479a3[_0x76aa('0x6')][_0x198fcb][_0x76aa('0x25')];logger[_0x76aa('0x21')](_0x76aa('0x31'),_0x4c90b6);RpcUser[_0x76aa('0x32')](this['agents'][_0x4c90b6]);RpcVoiceAgentReport[_0x76aa('0x33')]({'acwtime':_0x592596,'agentacw':!![]},_0x58f135,_0x4c90b6)['then'](function(_0x5086f5){logger[_0x76aa('0x21')](_0x76aa('0x2b'),_0x58f135,_0x592596,_0x5086f5);})[_0x76aa('0x2c')](function(_0x127bc4){logger['error'](_0x76aa('0x2e'),_0x58f135,_0x127bc4);});}else{logger[_0x76aa('0x2d')](_0x76aa('0x34'),_0x4c90b6);if(_0x8479a3['timers']){logger[_0x76aa('0x21')](_0x76aa('0x35'),JSON[_0x76aa('0x36')](_0x8479a3[_0x76aa('0x8')]));}}}catch(_0x45d7b3){logger[_0x76aa('0x2d')](_0x76aa('0x37'),_0x45d7b3[_0x76aa('0x30')]);}};Acw[_0x76aa('0x18')]['syncAgentConnect']=function(_0x1525cb){try{if(this[_0x76aa('0x6')][_0x1525cb[_0x76aa('0x1a')]]&&this[_0x76aa('0x6')][_0x1525cb[_0x76aa('0x1a')]][_0x76aa('0x4')]){if(this['agents'][_0x1525cb['interface']]){this[_0x76aa('0x9')][_0x1525cb[_0x76aa('0x29')]]={'queue':_0x1525cb[_0x76aa('0x1a')],'interface':_0x1525cb[_0x76aa('0x38')]};}}}catch(_0x50599f){logger[_0x76aa('0x2d')](_0x76aa('0x39'),_0x50599f[_0x76aa('0x30')]);}};Acw[_0x76aa('0x18')][_0x76aa('0x15')]=function(_0x4aa2f3){try{if(this[_0x76aa('0x6')][_0x4aa2f3['queue']]&&this[_0x76aa('0x6')][_0x4aa2f3['queue']]['acw']){if(this['agents'][_0x4aa2f3[_0x76aa('0x38')]]){this['channels'][_0x4aa2f3['uniqueid']]={'queue':_0x4aa2f3['queue'],'interface':_0x4aa2f3[_0x76aa('0x38')]};}}}catch(_0x3fd153){logger[_0x76aa('0x2d')](_0x76aa('0x3a'),_0x3fd153[_0x76aa('0x30')]);}};Acw['prototype'][_0x76aa('0xd')]=function(_0x14df8c){try{if(this[_0x76aa('0x9')][_0x14df8c[_0x76aa('0x29')]]&&_[_0x76aa('0x3b')](this['channels'][_0x14df8c[_0x76aa('0x29')]][_0x76aa('0x3c')])){logger['info'](_0x76aa('0x3d'),_0x14df8c['uniqueid']);this[_0x76aa('0x19')](_0x14df8c[_0x76aa('0x29')]);}else if(this[_0x76aa('0x9')][_0x14df8c[_0x76aa('0x3e')]]&&_[_0x76aa('0x3b')](this[_0x76aa('0x9')][_0x14df8c[_0x76aa('0x3e')]][_0x76aa('0x3c')])){logger[_0x76aa('0x21')](_0x76aa('0x3f'),_0x14df8c['linkedid']);this[_0x76aa('0x19')](_0x14df8c['linkedid']);}}catch(_0x288417){logger[_0x76aa('0x2d')](_0x76aa('0x40'),_0x288417[_0x76aa('0x30')]);}};Acw['prototype']['syncHangup']=function(_0x4f58c8){try{if(this['channels'][_0x4f58c8[_0x76aa('0x29')]]&&this[_0x76aa('0x9')][_0x4f58c8[_0x76aa('0x29')]][_0x76aa('0x3c')]){logger[_0x76aa('0x21')](_0x76aa('0x41'),_0x4f58c8['uniqueid']);this['startAcw'](_0x4f58c8[_0x76aa('0x29')]);}else if(this[_0x76aa('0x9')][_0x4f58c8[_0x76aa('0x3e')]]&&this[_0x76aa('0x9')][_0x4f58c8[_0x76aa('0x3e')]][_0x76aa('0x3c')]){logger['info'](_0x76aa('0x42'),_0x4f58c8[_0x76aa('0x3e')]);this[_0x76aa('0x19')](_0x4f58c8['linkedid']);}}catch(_0x30d930){logger['error'](_0x76aa('0x43'),_0x30d930['message']);}};Acw[_0x76aa('0x18')][_0x76aa('0x13')]=function(_0x3c63e5){try{if(!_[_0x76aa('0x44')](this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x45')]])){this[_0x76aa('0x19')](_0x3c63e5['transfereeuniqueid']);if(this[_0x76aa('0x9')][_0x3c63e5['secondtransfereruniqueid']]){this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x46')]][_0x76aa('0x3c')]=!![];this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x47')]]=this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x46')]];delete this['channels'][_0x3c63e5[_0x76aa('0x46')]];}}else if(!_[_0x76aa('0x44')](this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x47')]])){this['startAcw'](_0x3c63e5[_0x76aa('0x47')]);if(this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x48')]]){this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x48')]][_0x76aa('0x3c')]=!![];this['channels'][_0x3c63e5[_0x76aa('0x45')]]=this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x48')]];delete this[_0x76aa('0x9')][_0x3c63e5[_0x76aa('0x48')]];}}}catch(_0x2fdc4f){logger[_0x76aa('0x2d')]('[ACW][syncAttendedTransfer]\x20%s',_0x2fdc4f['message']);}};Acw[_0x76aa('0x18')][_0x76aa('0x49')]=function(_0x5713e7){try{if(this[_0x76aa('0x9')][_0x5713e7[_0x76aa('0x4a')]]){logger['info'](_0x76aa('0x4b'),JSON[_0x76aa('0x36')](_0x5713e7[_0x76aa('0x4a')]));this[_0x76aa('0x19')](_0x5713e7[_0x76aa('0x4a')]);}else if(this[_0x76aa('0x9')][_0x5713e7[_0x76aa('0x4c')]]){logger[_0x76aa('0x21')](_0x76aa('0x4d'),JSON['stringify'](_0x5713e7[_0x76aa('0x4c')]));this['startAcw'](_0x5713e7[_0x76aa('0x4c')]);}}catch(_0x46dbac){logger[_0x76aa('0x2d')](_0x76aa('0x4e'),_0x46dbac[_0x76aa('0x30')]);}};Acw[_0x76aa('0x18')][_0x76aa('0x11')]=function(_0x431d1c){try{if(this[_0x76aa('0x6')][_0x431d1c['queue']]&&this[_0x76aa('0x6')][_0x431d1c[_0x76aa('0x1a')]][_0x76aa('0x4f')]===_0x76aa('0x50')){if(this[_0x76aa('0x7')][_0x431d1c[_0x76aa('0x38')]]){logger[_0x76aa('0x21')](_0x76aa('0x51'),_0x431d1c['uniqueid'],_0x431d1c[_0x76aa('0x38')],_0x431d1c['queue']);return RpcUser[_0x76aa('0x23')](this[_0x76aa('0x7')][_0x431d1c[_0x76aa('0x38')]],_0x76aa('0x52'),_0x431d1c[_0x76aa('0x29')]);}}}catch(_0x234dc4){logger[_0x76aa('0x2d')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x234dc4[_0x76aa('0x30')]);}};module[_0x76aa('0x53')]=Acw;
\ No newline at end of file
+var _0x425d=['[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','stringify','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','interface','queue','Action','QueuePause','ACW','then','info','[%s][START][AGENT:%s][QUEUE:%s]','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','uniqueid','updateAcw','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','message','[TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','isUndefined','attended','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]'];(function(_0x689daf,_0x3ed464){var _0xb8fafd=function(_0x3dfa73){while(--_0x3dfa73){_0x689daf['push'](_0x689daf['shift']());}};_0xb8fafd(++_0x3ed464);}(_0x425d,0x1e0));var _0xd425=function(_0x5f0c76,_0x44b266){_0x5f0c76=_0x5f0c76-0x0;var _0x308606=_0x425d[_0x5f0c76];return _0x308606;};'use strict';var util=require(_0xd425('0x0'));var _=require('lodash');var moment=require(_0xd425('0x1'));var ami=require(_0xd425('0x2'));var logger=require(_0xd425('0x3'))(_0xd425('0x4'));var RpcUser=require(_0xd425('0x5'));var RpcVoiceAgentReport=require(_0xd425('0x6'));function Acw(_0x47043f){this['voiceQueues']=_0x47043f[_0xd425('0x7')];this[_0xd425('0x8')]=_0x47043f[_0xd425('0x8')];this[_0xd425('0x9')]=_0x47043f[_0xd425('0x9')];this[_0xd425('0xa')]={};ami['on']('agentconnect',this[_0xd425('0xb')][_0xd425('0xc')](this));ami['on'](_0xd425('0xd'),this[_0xd425('0xe')][_0xd425('0xc')](this));ami['on'](_0xd425('0xf'),this[_0xd425('0x10')][_0xd425('0xc')](this));ami['on'](_0xd425('0x11'),this[_0xd425('0x12')][_0xd425('0xc')](this));ami['on'](_0xd425('0x13'),this[_0xd425('0x14')][_0xd425('0xc')](this));ami['on'](_0xd425('0x15'),this[_0xd425('0x16')][_0xd425('0xc')](this));ami['on'](_0xd425('0x17'),this[_0xd425('0x18')][_0xd425('0xc')](this));}function getDiff(_0x51263f){var _0x27318c=moment()[_0xd425('0x19')](0x0);var _0x336dc3=moment(_0x51263f)['milliseconds'](0x0);return _0x27318c[_0xd425('0x1a')](_0x336dc3,_0xd425('0x1b'));}Acw[_0xd425('0x1c')][_0xd425('0x1d')]=function(_0x1fc822){try{var _0x538a0a=this;var _0x278626=this[_0xd425('0xa')][_0x1fc822][_0xd425('0x1e')];var _0x5dda0c=this['channels'][_0x1fc822][_0xd425('0x1f')];ami[_0xd425('0x20')]({'action':_0xd425('0x21'),'interface':_0x278626,'paused':!![],'reason':_0xd425('0x22')})['then'](function(_0x58a0c1){if(_0x538a0a['agents'][_0x278626]){return RpcUser['getAgent'](_0x538a0a[_0xd425('0x8')][_0x278626]['id'])[_0xd425('0x23')](function(_0x3c98db){if(_0x3c98db&&!_0x3c98db['voicePause']){logger[_0xd425('0x24')](_0xd425('0x25'),_0x1fc822,_0x278626,_0x5dda0c);return RpcUser['savePause'](_0x538a0a[_0xd425('0x8')][_0x278626],_0xd425('0x22'),_0x1fc822)[_0xd425('0x23')](function(_0x1d3fc0){_0x538a0a[_0xd425('0x9')][_0x278626]={};logger[_0xd425('0x24')](_0xd425('0x26'),_0x1fc822,_0x538a0a[_0xd425('0x7')][_0x5dda0c][_0xd425('0x27')],_0x278626,_0x5dda0c);_0x538a0a[_0xd425('0x9')][_0x278626][_0xd425('0x28')]=setTimeout(_0x538a0a[_0xd425('0x29')]['bind'](_0x538a0a,_0x278626),_0x538a0a[_0xd425('0x7')][_0x5dda0c][_0xd425('0x27')]*0x3e8);_0x538a0a[_0xd425('0x9')][_0x278626][_0xd425('0x2a')]=_0x1d3fc0[_0xd425('0x2a')];_0x538a0a[_0xd425('0x9')][_0x278626][_0xd425('0x2b')]=_0x1fc822;_0x538a0a['timers'][_0x278626][_0xd425('0x1f')]=_0x5dda0c;_0x538a0a[_0xd425('0x9')][_0x278626][_0xd425('0x2c')]=function(){var _0x57c950=getDiff(_0x538a0a[_0xd425('0x9')][_0x278626][_0xd425('0x2a')]);clearTimeout(_0x538a0a[_0xd425('0x9')][_0x278626][_0xd425('0x28')]);RpcVoiceAgentReport[_0xd425('0x2d')]({'acwtime':_0x57c950},_0x538a0a[_0xd425('0x9')][_0x278626][_0xd425('0x2b')],_0x278626)[_0xd425('0x23')](function(_0x24da23){logger[_0xd425('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0x1fc822,_0x57c950,_0x24da23);})[_0xd425('0x2e')](function(_0x219ada){logger[_0xd425('0x2f')](_0xd425('0x30'),_0x1fc822,_0x219ada);});delete _0x538a0a[_0xd425('0x9')][_0x278626];};});}else{logger[_0xd425('0x24')](_0xd425('0x31'),_0x1fc822,_0x278626,_0x5dda0c);}});}})[_0xd425('0x2e')](function(_0x3ec51b){logger[_0xd425('0x2f')](_0xd425('0x26'),_0x1fc822,_0x538a0a['voiceQueues'][_0x5dda0c][_0xd425('0x27')],_0x278626,_0x5dda0c);})[_0xd425('0x32')](function(){delete _0x538a0a[_0xd425('0xa')][_0x1fc822];});}catch(_0x21e0bd){logger[_0xd425('0x2f')]('[ACW][START]\x20%s',_0x21e0bd[_0xd425('0x33')]);}};Acw[_0xd425('0x1c')]['stopAcw']=function(_0x574962){try{var _0x51669d=this;if(_0x51669d[_0xd425('0x9')][_0x574962]){var _0xfb0c8=_0x51669d[_0xd425('0x9')][_0x574962][_0xd425('0x2b')];var _0x4aa5b2=_0x51669d[_0xd425('0x9')][_0x574962][_0xd425('0x1f')];var _0x30a9dc=_0x51669d[_0xd425('0x7')][_0x4aa5b2][_0xd425('0x27')];logger[_0xd425('0x24')](_0xd425('0x34'),_0x574962);RpcUser['saveUnpause'](this[_0xd425('0x8')][_0x574962]);RpcVoiceAgentReport['update']({'acwtime':_0x30a9dc,'agentacw':!![]},_0xfb0c8,_0x574962)[_0xd425('0x23')](function(_0x29cca9){logger[_0xd425('0x24')]('[%s][UPDATE][ACWTIME:%s]',_0xfb0c8,_0x30a9dc,_0x29cca9);})[_0xd425('0x2e')](function(_0x26806c){logger[_0xd425('0x2f')](_0xd425('0x30'),_0xfb0c8,_0x26806c);});}else{logger['error'](_0xd425('0x35'),_0x574962);if(_0x51669d[_0xd425('0x9')]){logger['info']('[ACW][TIMERS]',JSON['stringify'](_0x51669d[_0xd425('0x9')]));}}}catch(_0x400d57){logger[_0xd425('0x2f')]('[ACW][STOP]\x20%s',_0x400d57['message']);}};Acw['prototype'][_0xd425('0xb')]=function(_0x3f9090){try{if(this[_0xd425('0x7')][_0x3f9090[_0xd425('0x1f')]]&&this[_0xd425('0x7')][_0x3f9090[_0xd425('0x1f')]][_0xd425('0x4')]){if(this['agents'][_0x3f9090[_0xd425('0x1e')]]){this[_0xd425('0xa')][_0x3f9090[_0xd425('0x2b')]]={'queue':_0x3f9090['queue'],'interface':_0x3f9090[_0xd425('0x1e')]};}}}catch(_0x2dffc7){logger[_0xd425('0x2f')]('[ACW][syncAgentConnect]\x20%s',_0x2dffc7[_0xd425('0x33')]);}};Acw[_0xd425('0x1c')][_0xd425('0x18')]=function(_0x2d7a2f){try{if(this['voiceQueues'][_0x2d7a2f[_0xd425('0x1f')]]&&this[_0xd425('0x7')][_0x2d7a2f[_0xd425('0x1f')]][_0xd425('0x4')]){if(this[_0xd425('0x8')][_0x2d7a2f[_0xd425('0x1e')]]){this[_0xd425('0xa')][_0x2d7a2f['uniqueid']]={'queue':_0x2d7a2f[_0xd425('0x1f')],'interface':_0x2d7a2f[_0xd425('0x1e')]};}}}catch(_0x5b65fe){logger[_0xd425('0x2f')]('[ACW][syncAgentConnectPreview]\x20%s',_0x5b65fe['message']);}};Acw[_0xd425('0x1c')]['syncHangupRequest']=function(_0x1be60a){try{if(this['channels'][_0x1be60a[_0xd425('0x2b')]]&&_[_0xd425('0x36')](this[_0xd425('0xa')][_0x1be60a[_0xd425('0x2b')]][_0xd425('0x37')])){logger['info'](_0xd425('0x38'),_0x1be60a['uniqueid']);this[_0xd425('0x1d')](_0x1be60a['uniqueid']);}else if(this[_0xd425('0xa')][_0x1be60a[_0xd425('0x39')]]&&_[_0xd425('0x36')](this[_0xd425('0xa')][_0x1be60a[_0xd425('0x39')]]['attended'])){logger[_0xd425('0x24')](_0xd425('0x3a'),_0x1be60a[_0xd425('0x39')]);this[_0xd425('0x1d')](_0x1be60a[_0xd425('0x39')]);}}catch(_0x499796){logger[_0xd425('0x2f')](_0xd425('0x3b'),_0x499796[_0xd425('0x33')]);}};Acw[_0xd425('0x1c')][_0xd425('0x10')]=function(_0xf7a74c){try{if(this['channels'][_0xf7a74c[_0xd425('0x2b')]]&&this[_0xd425('0xa')][_0xf7a74c['uniqueid']][_0xd425('0x37')]){logger[_0xd425('0x24')](_0xd425('0x3c'),_0xf7a74c[_0xd425('0x2b')]);this['startAcw'](_0xf7a74c[_0xd425('0x2b')]);}else if(this[_0xd425('0xa')][_0xf7a74c[_0xd425('0x39')]]&&this[_0xd425('0xa')][_0xf7a74c[_0xd425('0x39')]]['attended']){logger['info'](_0xd425('0x3d'),_0xf7a74c['linkedid']);this[_0xd425('0x1d')](_0xf7a74c[_0xd425('0x39')]);}}catch(_0x5594f9){logger[_0xd425('0x2f')]('[ACW][syncHangup]\x20%s',_0x5594f9['message']);}};Acw[_0xd425('0x1c')][_0xd425('0x14')]=function(_0xe6451f){try{if(!_[_0xd425('0x3e')](this[_0xd425('0xa')][_0xe6451f[_0xd425('0x3f')]])){this[_0xd425('0x1d')](_0xe6451f[_0xd425('0x3f')]);if(this['channels'][_0xe6451f[_0xd425('0x40')]]){this[_0xd425('0xa')][_0xe6451f[_0xd425('0x40')]][_0xd425('0x37')]=!![];this[_0xd425('0xa')][_0xe6451f[_0xd425('0x41')]]=this[_0xd425('0xa')][_0xe6451f[_0xd425('0x40')]];delete this['channels'][_0xe6451f['secondtransfereruniqueid']];}}else if(!_['isNil'](this[_0xd425('0xa')][_0xe6451f[_0xd425('0x41')]])){this[_0xd425('0x1d')](_0xe6451f[_0xd425('0x41')]);if(this['channels'][_0xe6451f['origtransfereruniqueid']]){this['channels'][_0xe6451f['origtransfereruniqueid']][_0xd425('0x37')]=!![];this[_0xd425('0xa')][_0xe6451f['transfereeuniqueid']]=this[_0xd425('0xa')][_0xe6451f[_0xd425('0x42')]];delete this[_0xd425('0xa')][_0xe6451f['origtransfereruniqueid']];}}}catch(_0x517e2e){logger[_0xd425('0x2f')]('[ACW][syncAttendedTransfer]\x20%s',_0x517e2e['message']);}};Acw['prototype'][_0xd425('0x16')]=function(_0x259482){try{if(this[_0xd425('0xa')][_0x259482['transfereruniqueid']]){logger[_0xd425('0x24')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON[_0xd425('0x43')](_0x259482[_0xd425('0x44')]));this[_0xd425('0x1d')](_0x259482[_0xd425('0x44')]);}else if(this[_0xd425('0xa')][_0x259482[_0xd425('0x45')]]){logger[_0xd425('0x24')](_0xd425('0x46'),JSON[_0xd425('0x43')](_0x259482['transfererlinkedid']));this[_0xd425('0x1d')](_0x259482[_0xd425('0x45')]);}}catch(_0x18dc33){logger[_0xd425('0x2f')]('[ACW][syncBlindTransfer]\x20%s',_0x18dc33['message']);}};Acw[_0xd425('0x1c')][_0xd425('0x12')]=function(_0x142660){try{if(this[_0xd425('0x7')][_0x142660[_0xd425('0x1f')]]&&this[_0xd425('0x7')][_0x142660[_0xd425('0x1f')]][_0xd425('0x47')]===_0xd425('0x48')){if(this[_0xd425('0x8')][_0x142660[_0xd425('0x1e')]]){logger[_0xd425('0x24')](_0xd425('0x49'),_0x142660[_0xd425('0x2b')],_0x142660['interface'],_0x142660[_0xd425('0x1f')]);return RpcUser[_0xd425('0x4a')](this[_0xd425('0x8')][_0x142660['interface']],'Auto-Pause',_0x142660['uniqueid']);}}}catch(_0x403cb3){logger[_0xd425('0x2f')](_0xd425('0x4b'),_0x403cb3['message']);}};module[_0xd425('0x4c')]=Acw;
\ No newline at end of file
index 630289f..a60eeb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9415=['inspect','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionSipPeerStatus','actionQueueSummary','log','close','exports','asterisk-manager','bluebird','moment','util','../../config/logger','ami','../../config/environment','asterisk','port','username','password','keepConnected','Action','promisify','action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionDeviceStateList','devicestatelist','sippeerstatus','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x9415,0x185));var _0x5941=function(_0x10f7f7,_0x457207){_0x10f7f7=_0x10f7f7-0x0;var _0x4ca615=_0x9415[_0x10f7f7];return _0x4ca615;};'use strict';var Manager=require(_0x5941('0x0'));var BPromise=require(_0x5941('0x1'));var moment=require(_0x5941('0x2'));var util=require(_0x5941('0x3'));var _=require('lodash');var logger=require(_0x5941('0x4'))(_0x5941('0x5'));var config=require(_0x5941('0x6'));var ami=new Manager(config[_0x5941('0x7')][_0x5941('0x8')],config[_0x5941('0x7')]['ip'],config[_0x5941('0x7')][_0x5941('0x9')],config[_0x5941('0x7')][_0x5941('0xa')],!![]);ami[_0x5941('0xb')]();ami[_0x5941('0xc')]=BPromise[_0x5941('0xd')](ami[_0x5941('0xe')]);function error(_0x19f90a){logger['error'](util[_0x5941('0xf')](_0x5941('0x10'),config['asterisk'][_0x5941('0x9')],config[_0x5941('0x7')]['ip'],config['asterisk']['port'],util['inspect'](_0x19f90a,![],null)));}function close(){logger[_0x5941('0x11')](util[_0x5941('0xf')](_0x5941('0x12'),config[_0x5941('0x7')][_0x5941('0x9')],config[_0x5941('0x7')]['ip'],config[_0x5941('0x7')][_0x5941('0x8')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x5941('0xc')]({'action':_0x5941('0x13')});};};ami[_0x5941('0x14')]=function(){return function(){return ami[_0x5941('0xc')]({'action':_0x5941('0x15')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x5941('0xc')]({'action':_0x5941('0x16')});};};ami['actionQueueSummary']=function(){return function(){return ami['Action']({'action':'queuesummary'});};};ami[_0x5941('0x17')]=function(){return function(){return ami['Action']({'action':_0x5941('0x18')});};};function connect(_0x220429){logger[_0x5941('0x19')](util[_0x5941('0xf')](_0x5941('0x1a'),config[_0x5941('0x7')][_0x5941('0x9')],config[_0x5941('0x7')]['ip'],config[_0x5941('0x7')][_0x5941('0x8')]));ami[_0x5941('0x1b')](_0x5941('0x11'),error);ami[_0x5941('0x1b')]('close',close);}ami['on'](_0x5941('0x1c'),connect);ami['on'](_0x5941('0x1d'),function(_0x7108f6){logger[_0x5941('0x19')](util[_0x5941('0xf')](_0x5941('0x1e'),config[_0x5941('0x7')][_0x5941('0x9')],config[_0x5941('0x7')]['ip'],config[_0x5941('0x7')]['port'],util[_0x5941('0x1f')](_0x7108f6,![],null)));});ami['on'](_0x5941('0x20'),function(_0x58db8f){logger[_0x5941('0x19')](util['format'](_0x5941('0x21'),config[_0x5941('0x7')][_0x5941('0x9')],config[_0x5941('0x7')]['ip'],config[_0x5941('0x7')][_0x5941('0x8')]));return BPromise[_0x5941('0x22')]()[_0x5941('0x23')](ami[_0x5941('0x24')]())[_0x5941('0x23')](ami[_0x5941('0x14')]())[_0x5941('0x23')](ami[_0x5941('0x25')]())[_0x5941('0x23')](ami[_0x5941('0x26')]())[_0x5941('0x23')](ami[_0x5941('0x17')]())['catch'](function(_0x145f71){console[_0x5941('0x27')](_0x145f71);});});ami[_0x5941('0x1b')](_0x5941('0x11'),error);ami[_0x5941('0x1b')](_0x5941('0x28'),close);module[_0x5941('0x29')]=ami;
\ No newline at end of file
+var _0xf5ef=['ami','../../config/environment','asterisk','port','username','password','keepConnected','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','log','asterisk-manager','bluebird','moment','util','lodash','../../config/logger'];(function(_0x448394,_0x5cfc01){var _0x203632=function(_0x46ca8d){while(--_0x46ca8d){_0x448394['push'](_0x448394['shift']());}};_0x203632(++_0x5cfc01);}(_0xf5ef,0x127));var _0xff5e=function(_0x525209,_0x256e19){_0x525209=_0x525209-0x0;var _0x4f438f=_0xf5ef[_0x525209];return _0x4f438f;};'use strict';var Manager=require(_0xff5e('0x0'));var BPromise=require(_0xff5e('0x1'));var moment=require(_0xff5e('0x2'));var util=require(_0xff5e('0x3'));var _=require(_0xff5e('0x4'));var logger=require(_0xff5e('0x5'))(_0xff5e('0x6'));var config=require(_0xff5e('0x7'));var ami=new Manager(config[_0xff5e('0x8')][_0xff5e('0x9')],config['asterisk']['ip'],config[_0xff5e('0x8')][_0xff5e('0xa')],config['asterisk'][_0xff5e('0xb')],!![]);ami[_0xff5e('0xc')]();ami[_0xff5e('0xd')]=BPromise[_0xff5e('0xe')](ami[_0xff5e('0xf')]);function error(_0x5ec95b){logger[_0xff5e('0x10')](util[_0xff5e('0x11')](_0xff5e('0x12'),config[_0xff5e('0x8')][_0xff5e('0xa')],config[_0xff5e('0x8')]['ip'],config[_0xff5e('0x8')]['port'],util[_0xff5e('0x13')](_0x5ec95b,![],null)));}function close(){logger['error'](util[_0xff5e('0x11')](_0xff5e('0x14'),config['asterisk'][_0xff5e('0xa')],config['asterisk']['ip'],config['asterisk'][_0xff5e('0x9')]));}ami[_0xff5e('0x15')]=function(){return function(){return ami['Action']({'action':_0xff5e('0x16')});};};ami[_0xff5e('0x17')]=function(){return function(){return ami['Action']({'action':_0xff5e('0x18')});};};ami[_0xff5e('0x19')]=function(){return function(){return ami[_0xff5e('0xd')]({'action':_0xff5e('0x1a')});};};ami[_0xff5e('0x1b')]=function(){return function(){return ami['Action']({'action':_0xff5e('0x1c')});};};ami[_0xff5e('0x1d')]=function(){return function(){return ami[_0xff5e('0xd')]({'action':_0xff5e('0x1e')});};};function connect(_0x44b412){logger[_0xff5e('0x1f')](util['format'](_0xff5e('0x20'),config[_0xff5e('0x8')]['username'],config['asterisk']['ip'],config['asterisk'][_0xff5e('0x9')]));ami[_0xff5e('0x21')]('error',error);ami[_0xff5e('0x21')](_0xff5e('0x22'),close);}ami['on'](_0xff5e('0x23'),connect);ami['on'](_0xff5e('0x24'),function(_0x5bf8e6){logger[_0xff5e('0x1f')](util['format'](_0xff5e('0x25'),config[_0xff5e('0x8')][_0xff5e('0xa')],config['asterisk']['ip'],config[_0xff5e('0x8')][_0xff5e('0x9')],util[_0xff5e('0x13')](_0x5bf8e6,![],null)));});ami['on'](_0xff5e('0x26'),function(_0x4b3830){logger[_0xff5e('0x1f')](util['format'](_0xff5e('0x27'),config[_0xff5e('0x8')]['username'],config[_0xff5e('0x8')]['ip'],config['asterisk'][_0xff5e('0x9')]));return BPromise[_0xff5e('0x28')]()[_0xff5e('0x29')](ami[_0xff5e('0x15')]())[_0xff5e('0x29')](ami[_0xff5e('0x17')]())['then'](ami['actionSipPeerStatus']())[_0xff5e('0x29')](ami[_0xff5e('0x1b')]())[_0xff5e('0x29')](ami[_0xff5e('0x1d')]())['catch'](function(_0x4ba9b0){console[_0xff5e('0x2a')](_0x4ba9b0);});});ami[_0xff5e('0x21')]('error',error);ami[_0xff5e('0x21')]('close',close);module['exports']=ami;
\ No newline at end of file
index 846a329..0f4f412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe663=['then','debug','rpc','error','message','catch','memberReport','exports','bluebird','ami','client','http','Request','request'];(function(_0x433a86,_0x175b5c){var _0x23000c=function(_0x4b1fa0){while(--_0x4b1fa0){_0x433a86['push'](_0x433a86['shift']());}};_0x23000c(++_0x175b5c);}(_0xe663,0x6a));var _0x3e66=function(_0x33bb30,_0x53cada){_0x33bb30=_0x33bb30-0x0;var _0x4e9384=_0xe663[_0x33bb30];return _0x4e9384;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x3e66('0x0'));var logger=require('../../config/logger')(_0x3e66('0x1'));var client=jayson[_0x3e66('0x2')][_0x3e66('0x3')]({'port':0x2329});client[_0x3e66('0x4')]=function(_0x5ab215,_0xe6eac7){return new BPromise(function(_0x1f53b7,_0x2c8161){return client[_0x3e66('0x5')](_0x5ab215,_0xe6eac7)[_0x3e66('0x6')](function(_0x41b3c3){logger[_0x3e66('0x7')](_0x3e66('0x8'),'memberReport',_0x5ab215,_0xe6eac7,_0x41b3c3);if(_0x41b3c3['error']){logger[_0x3e66('0x9')](_0x3e66('0x8'),'memberReport',_0x5ab215,_0x41b3c3['error'][_0x3e66('0xa')],_0xe6eac7);return _0x2c8161(_0x41b3c3[_0x3e66('0x9')][_0x3e66('0xa')]);}else{return _0x1f53b7(_0x41b3c3['result']);}})[_0x3e66('0xb')](function(_0x1ac1dc){logger[_0x3e66('0x9')]('rpc',_0x3e66('0xc'),_0x5ab215,_0x1ac1dc,_0xe6eac7);return _0x2c8161(_0x1ac1dc);});});};module[_0x3e66('0xd')]=client;
\ No newline at end of file
+var _0x204c=['error','rpc','message','result','catch','exports','../../config/logger','http','Request','request','memberReport'];(function(_0x2ee906,_0x4f1c61){var _0x1c5449=function(_0x2ef7a4){while(--_0x2ef7a4){_0x2ee906['push'](_0x2ee906['shift']());}};_0x1c5449(++_0x4f1c61);}(_0x204c,0x1df));var _0xc204=function(_0x1b9edd,_0x66b166){_0x1b9edd=_0x1b9edd-0x0;var _0x4907c4=_0x204c[_0x1b9edd];return _0x4907c4;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xc204('0x0'))('ami');var client=jayson['client'][_0xc204('0x1')]({'port':0x2329});client[_0xc204('0x2')]=function(_0x31e232,_0x1037a0){return new BPromise(function(_0x1531f2,_0x340c7b){return client[_0xc204('0x3')](_0x31e232,_0x1037a0)['then'](function(_0x5691c8){logger['debug']('rpc',_0xc204('0x4'),_0x31e232,_0x1037a0,_0x5691c8);if(_0x5691c8[_0xc204('0x5')]){logger[_0xc204('0x5')](_0xc204('0x6'),_0xc204('0x4'),_0x31e232,_0x5691c8['error'][_0xc204('0x7')],_0x1037a0);return _0x340c7b(_0x5691c8[_0xc204('0x5')][_0xc204('0x7')]);}else{return _0x1531f2(_0x5691c8[_0xc204('0x8')]);}})[_0xc204('0x9')](function(_0x5b27ca){logger['error']('rpc',_0xc204('0x4'),_0x31e232,_0x5b27ca,_0x1037a0);return _0x340c7b(_0x5b27ca);});});};module[_0xc204('0xa')]=client;
\ No newline at end of file
index 6b8aabd..e2fdbe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb432=['string','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','dialQueueTimeout','scheduledat','countcongestionretry','countnoanswerretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','originatecalleridnum','originatecalleridname','prototype','substring','dialCutDigit','getQueue','exports','lodash','isNil'];(function(_0x2b5ee5,_0x3741bf){var _0x1c480b=function(_0x437a18){while(--_0x437a18){_0x2b5ee5['push'](_0x2b5ee5['shift']());}};_0x1c480b(++_0x3741bf);}(_0xb432,0x8e));var _0x2b43=function(_0x119ec0,_0x206327){_0x119ec0=_0x119ec0-0x0;var _0x56f82b=_0xb432[_0x119ec0];return _0x56f82b;};'use strict';var util=require('util');var _=require(_0x2b43('0x0'));var moment=require('moment');function checkNameSurname(_0x3d9e70,_0x577149,_0x4152c4){var _0x588f6a='';if(!_[_0x2b43('0x1')](_0x577149)&&_0x2b43('0x2')===typeof _0x577149){_0x588f6a+=_0x577149;}if(!_['isNil'](_0x4152c4)&&'string'===typeof _0x4152c4){_0x588f6a+='\x20'+_0x4152c4;}if(_0x588f6a!==''){return _0x588f6a;}return _0x3d9e70;}function Action(_0x1e187b,_0x5494c9,_0x5e2c3b){this[_0x2b43('0x3')]=_0x1e187b;this[_0x2b43('0x4')]=_0x5e2c3b||undefined;this[_0x2b43('0x5')]=checkNameSurname(_0x5494c9[_0x2b43('0x6')][_0x2b43('0x7')],_0x5494c9[_0x2b43('0x6')][_0x2b43('0x8')],_0x5494c9['Contact'][_0x2b43('0x9')]);this[_0x2b43('0xa')]=_0x5494c9[_0x2b43('0x6')][_0x2b43('0x7')];this[_0x2b43('0xb')]=_0x1e187b[_0x2b43('0x5')];this[_0x2b43('0xc')]=_0x5494c9[_0x2b43('0xc')]||![];this['type']=_0x1e187b['type'];this['dialQueueTimeout']=_0x1e187b[_0x2b43('0xd')]||0x3;this[_0x2b43('0xe')]=_0x5494c9['scheduledat'];this['countbusyretry']=_0x5494c9['countbusyretry'];this['countcongestionretry']=_0x5494c9[_0x2b43('0xf')];this['countnoanswerretry']=_0x5494c9[_0x2b43('0x10')];this[_0x2b43('0x11')]=_0x5494c9[_0x2b43('0x11')];this[_0x2b43('0x12')]=_0x5494c9[_0x2b43('0x12')];this[_0x2b43('0x13')]=_0x5494c9[_0x2b43('0x13')];this[_0x2b43('0x14')]=_0x5494c9['VoiceQueueId'];this[_0x2b43('0x15')]=_0x5494c9['CampaignId'];this['idHopper']=_0x5494c9['id'];this[_0x2b43('0x16')]=_0x5494c9[_0x2b43('0x6')][_0x2b43('0x8')]||'';this[_0x2b43('0x17')]=moment()[_0x2b43('0x18')](_0x2b43('0x19'));this[_0x2b43('0x1a')]=_0x5494c9[_0x2b43('0x1a')];this[_0x2b43('0x1b')]=_0x5494c9[_0x2b43('0x1b')];this[_0x2b43('0x1c')]=_0x5494c9[_0x2b43('0x1c')];this['recallme']=_0x5494c9['recallme'];this[_0x2b43('0x1d')]='';this[_0x2b43('0x1e')]='';}Action[_0x2b43('0x1f')]['getCaller']=function(){return util['format']('\x22%s\x22\x20<%s>',this['name'],this['voiceQueue']['dialCutDigit']>0x0?this['number'][_0x2b43('0x20')](this[_0x2b43('0x3')][_0x2b43('0x21')]):this[_0x2b43('0xa')]);};Action[_0x2b43('0x1f')][_0x2b43('0x22')]=function(){return this[_0x2b43('0xb')];};module[_0x2b43('0x23')]=Action;
\ No newline at end of file
+var _0x96eb=['queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countnoanswerretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','voiceQueue','substring','dialCutDigit','prototype','getQueue','exports','util','lodash','moment','isNil','string','uniqueid','name','Contact','phone','firstName','lastName','number'];(function(_0x3406d5,_0x16011d){var _0x324565=function(_0x2b1aa1){while(--_0x2b1aa1){_0x3406d5['push'](_0x3406d5['shift']());}};_0x324565(++_0x16011d);}(_0x96eb,0x113));var _0xb96e=function(_0x215326,_0x52c7fd){_0x215326=_0x215326-0x0;var _0x21c49f=_0x96eb[_0x215326];return _0x21c49f;};'use strict';var util=require(_0xb96e('0x0'));var _=require(_0xb96e('0x1'));var moment=require(_0xb96e('0x2'));function checkNameSurname(_0x210464,_0x24b13b,_0x1fdf6b){var _0x2c05a5='';if(!_[_0xb96e('0x3')](_0x24b13b)&&_0xb96e('0x4')===typeof _0x24b13b){_0x2c05a5+=_0x24b13b;}if(!_[_0xb96e('0x3')](_0x1fdf6b)&&_0xb96e('0x4')===typeof _0x1fdf6b){_0x2c05a5+='\x20'+_0x1fdf6b;}if(_0x2c05a5!==''){return _0x2c05a5;}return _0x210464;}function Action(_0xa8c53a,_0xbda7a7,_0x2f6997){this['voiceQueue']=_0xa8c53a;this[_0xb96e('0x5')]=_0x2f6997||undefined;this[_0xb96e('0x6')]=checkNameSurname(_0xbda7a7[_0xb96e('0x7')][_0xb96e('0x8')],_0xbda7a7['Contact'][_0xb96e('0x9')],_0xbda7a7[_0xb96e('0x7')][_0xb96e('0xa')]);this[_0xb96e('0xb')]=_0xbda7a7['Contact'][_0xb96e('0x8')];this[_0xb96e('0xc')]=_0xa8c53a[_0xb96e('0x6')];this[_0xb96e('0xd')]=_0xbda7a7[_0xb96e('0xd')]||![];this['type']=_0xa8c53a[_0xb96e('0xe')];this[_0xb96e('0xf')]=_0xa8c53a[_0xb96e('0xf')]||0x3;this[_0xb96e('0x10')]=_0xbda7a7[_0xb96e('0x10')];this[_0xb96e('0x11')]=_0xbda7a7[_0xb96e('0x11')];this['countcongestionretry']=_0xbda7a7['countcongestionretry'];this[_0xb96e('0x12')]=_0xbda7a7['countnoanswerretry'];this['ContactId']=_0xbda7a7[_0xb96e('0x13')];this[_0xb96e('0x14')]=_0xbda7a7[_0xb96e('0x14')];this[_0xb96e('0x15')]=_0xbda7a7[_0xb96e('0x15')];this[_0xb96e('0x16')]=_0xbda7a7[_0xb96e('0x16')];this[_0xb96e('0x17')]=_0xbda7a7[_0xb96e('0x17')];this['idHopper']=_0xbda7a7['id'];this[_0xb96e('0x18')]=_0xbda7a7[_0xb96e('0x7')][_0xb96e('0x9')]||'';this[_0xb96e('0x19')]=moment()[_0xb96e('0x1a')](_0xb96e('0x1b'));this[_0xb96e('0x1c')]=_0xbda7a7[_0xb96e('0x1c')];this[_0xb96e('0x1d')]=_0xbda7a7[_0xb96e('0x1d')];this[_0xb96e('0x1e')]=_0xbda7a7[_0xb96e('0x1e')];this[_0xb96e('0x1f')]=_0xbda7a7[_0xb96e('0x1f')];this['originatecalleridnum']='';this[_0xb96e('0x20')]='';}Action['prototype'][_0xb96e('0x21')]=function(){return util[_0xb96e('0x1a')](_0xb96e('0x22'),this[_0xb96e('0x6')],this[_0xb96e('0x23')]['dialCutDigit']>0x0?this[_0xb96e('0xb')][_0xb96e('0x24')](this[_0xb96e('0x23')][_0xb96e('0x25')]):this[_0xb96e('0xb')]);};Action[_0xb96e('0x26')][_0xb96e('0x27')]=function(){return this[_0xb96e('0xc')];};module[_0xb96e('0x28')]=Action;
\ No newline at end of file
index c295838..688a7b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78e2=['responsetime','answertime','format','holdtime','talktime','reason','callback','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','statedesc','Answer','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','uniqueid','calleridname','calleridnum','number','starttime'];(function(_0x45f254,_0x10d7d7){var _0x4e55f7=function(_0x12678c){while(--_0x12678c){_0x45f254['push'](_0x45f254['shift']());}};_0x4e55f7(++_0x10d7d7);}(_0x78e2,0x127));var _0x278e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x78e2[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x278e('0x0'));var _=require(_0x278e('0x1'));var moment=require(_0x278e('0x2'));function getSeconds(_0x9ae032,_0x1c548c){var _0x32ccde=moment(_0x9ae032)[_0x278e('0x3')](0x0);var _0xbdae07=moment(_0x1c548c)[_0x278e('0x3')](0x0);return _0x32ccde[_0x278e('0x4')](_0xbdae07,_0x278e('0x5'));}function AgentComplete(_0x29caa6,_0x4b2c2b){this['state']=0x4;this[_0x278e('0x6')]=_0x278e('0x7');this['scheduledat']=_0x29caa6['scheduledat'];this[_0x278e('0x8')]=_0x29caa6[_0x278e('0x8')];this['campaigntype']=_0x29caa6['type']===_0x278e('0x9')?_0x278e('0xa'):_0x29caa6[_0x278e('0x8')];this['countbusyretry']=_0x29caa6[_0x278e('0xb')];this['countcongestionretry']=_0x29caa6[_0x278e('0xc')];this['countnoanswerretry']=_0x29caa6[_0x278e('0xd')];this[_0x278e('0xe')]=_0x29caa6[_0x278e('0xb')]+_0x29caa6[_0x278e('0xc')]+_0x29caa6[_0x278e('0xd')];this['uniqueid']=_0x4b2c2b[_0x278e('0xf')];this[_0x278e('0x10')]=_0x29caa6['name'];this[_0x278e('0x11')]=_0x29caa6[_0x278e('0x12')];this[_0x278e('0x13')]=_0x29caa6['starttime'];this[_0x278e('0x14')]=_0x29caa6[_0x278e('0x14')];this[_0x278e('0x15')]=_0x29caa6[_0x278e('0x15')];this['endtime']=moment()[_0x278e('0x16')]('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x29caa6[_0x278e('0x14')],_0x29caa6[_0x278e('0x13')]);this[_0x278e('0x17')]=getSeconds(_0x29caa6[_0x278e('0x15')],_0x29caa6[_0x278e('0x14')]);this[_0x278e('0x18')]=getSeconds(this['endtime'],_0x29caa6[_0x278e('0x15')]);this[_0x278e('0xa')]=_0x4b2c2b['queue'];this['membername']=_0x4b2c2b['membername'];this[_0x278e('0x19')]=_0x4b2c2b['reason'];this[_0x278e('0x1a')]=_0x29caa6[_0x278e('0x1a')];this['callbackuniqueid']=_0x29caa6['callbackuniqueid'];this['callbackat']=_0x29caa6[_0x278e('0x1b')];this[_0x278e('0x1c')]=_0x29caa6[_0x278e('0x1c')];this['ContactId']=_0x29caa6[_0x278e('0x1d')];this['ListId']=_0x29caa6['ListId'];this[_0x278e('0x1e')]=_0x29caa6[_0x278e('0x1e')];this['VoiceQueueId']=_0x29caa6[_0x278e('0x1f')];this[_0x278e('0x20')]=_0x29caa6['CampaignId'];this[_0x278e('0x21')]=_0x29caa6[_0x278e('0x21')]||'';this[_0x278e('0x22')]=_0x29caa6['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x5909=['responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','originatecalleridnum','originatecalleridname','util','lodash','milliseconds','state','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','uniqueid','calleridname','name','calleridnum','number','starttime'];(function(_0x49f29b,_0x264173){var _0x2a68ae=function(_0x4a872b){while(--_0x4a872b){_0x49f29b['push'](_0x49f29b['shift']());}};_0x2a68ae(++_0x264173);}(_0x5909,0x168));var _0x9590=function(_0x334d1e,_0x28a488){_0x334d1e=_0x334d1e-0x0;var _0x3b33ba=_0x5909[_0x334d1e];return _0x3b33ba;};'use strict';var util=require(_0x9590('0x0'));var _=require(_0x9590('0x1'));var moment=require('moment');function getSeconds(_0x21409b,_0x2647ad){var _0x3dc54d=moment(_0x21409b)[_0x9590('0x2')](0x0);var _0x45411a=moment(_0x2647ad)[_0x9590('0x2')](0x0);return _0x3dc54d['diff'](_0x45411a,'seconds');}function AgentComplete(_0x3fc2d0,_0xcc097c){this[_0x9590('0x3')]=0x4;this[_0x9590('0x4')]='Answer';this[_0x9590('0x5')]=_0x3fc2d0[_0x9590('0x5')];this[_0x9590('0x6')]=_0x3fc2d0[_0x9590('0x6')];this[_0x9590('0x7')]=_0x3fc2d0['type']===_0x9590('0x8')?_0x9590('0x9'):_0x3fc2d0[_0x9590('0x6')];this[_0x9590('0xa')]=_0x3fc2d0[_0x9590('0xa')];this['countcongestionretry']=_0x3fc2d0[_0x9590('0xb')];this['countnoanswerretry']=_0x3fc2d0[_0x9590('0xc')];this[_0x9590('0xd')]=_0x3fc2d0['countbusyretry']+_0x3fc2d0['countcongestionretry']+_0x3fc2d0[_0x9590('0xc')];this[_0x9590('0xe')]=_0xcc097c['uniqueid'];this[_0x9590('0xf')]=_0x3fc2d0[_0x9590('0x10')];this[_0x9590('0x11')]=_0x3fc2d0[_0x9590('0x12')];this['starttime']=_0x3fc2d0[_0x9590('0x13')];this[_0x9590('0x14')]=_0x3fc2d0[_0x9590('0x14')];this[_0x9590('0x15')]=_0x3fc2d0[_0x9590('0x15')];this[_0x9590('0x16')]=moment()[_0x9590('0x17')](_0x9590('0x18'));this[_0x9590('0x19')]=getSeconds(_0x3fc2d0['responsetime'],_0x3fc2d0[_0x9590('0x13')]);this[_0x9590('0x1a')]=getSeconds(_0x3fc2d0['answertime'],_0x3fc2d0[_0x9590('0x14')]);this[_0x9590('0x1b')]=getSeconds(this[_0x9590('0x16')],_0x3fc2d0[_0x9590('0x15')]);this[_0x9590('0x9')]=_0xcc097c[_0x9590('0x9')];this[_0x9590('0x1c')]=_0xcc097c[_0x9590('0x1c')];this[_0x9590('0x1d')]=_0xcc097c[_0x9590('0x1d')];this['callback']=_0x3fc2d0[_0x9590('0x1e')];this['callbackuniqueid']=_0x3fc2d0[_0x9590('0x1f')];this[_0x9590('0x20')]=_0x3fc2d0[_0x9590('0x20')];this[_0x9590('0x21')]=_0x3fc2d0[_0x9590('0x21')];this[_0x9590('0x22')]=_0x3fc2d0[_0x9590('0x22')];this[_0x9590('0x23')]=_0x3fc2d0[_0x9590('0x23')];this['UserId']=_0x3fc2d0['UserId'];this['VoiceQueueId']=_0x3fc2d0['VoiceQueueId'];this['CampaignId']=_0x3fc2d0['CampaignId'];this[_0x9590('0x24')]=_0x3fc2d0[_0x9590('0x24')]||'';this[_0x9590('0x25')]=_0x3fc2d0[_0x9590('0x25')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
index 76ddb11..463d0b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7919=['callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','uniqueid','scheduledat','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','queue','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime'];(function(_0x5ec50d,_0x3a8dc7){var _0x2c6db3=function(_0x5ba0a9){while(--_0x5ba0a9){_0x5ec50d['push'](_0x5ec50d['shift']());}};_0x2c6db3(++_0x3a8dc7);}(_0x7919,0xeb));var _0x9791=function(_0x3cdc88,_0x55ad66){_0x3cdc88=_0x3cdc88-0x0;var _0x233a89=_0x7919[_0x3cdc88];return _0x233a89;};'use strict';var util=require(_0x9791('0x0'));var _=require(_0x9791('0x1'));var moment=require(_0x9791('0x2'));function getSeconds(_0x1c714b,_0x2aaa32){var _0x433982=moment(_0x1c714b)[_0x9791('0x3')](0x0);var _0x54b9c0=moment(_0x2aaa32)[_0x9791('0x3')](0x0);return _0x433982[_0x9791('0x4')](_0x54b9c0,'seconds');}function Final(_0x2624e0){this[_0x9791('0x5')]=_0x2624e0[_0x9791('0x5')];this[_0x9791('0x6')]=_0x2624e0[_0x9791('0x6')];this['type']=_0x2624e0[_0x9791('0x7')];this['campaigntype']=_0x2624e0[_0x9791('0x7')]==='outbound'?'queue':_0x2624e0[_0x9791('0x7')];this['countbusyretry']=_0x2624e0[_0x9791('0x8')];this[_0x9791('0x9')]=_0x2624e0[_0x9791('0x9')];this[_0x9791('0xa')]=_0x2624e0[_0x9791('0xa')];this[_0x9791('0xb')]=_0x2624e0[_0x9791('0x8')]+_0x2624e0['countcongestionretry']+_0x2624e0[_0x9791('0xa')];this['queue']=_0x2624e0[_0x9791('0xc')];this[_0x9791('0xd')]=_0x2624e0['calleridname'];this[_0x9791('0xe')]=_0x2624e0['calleridnum'];this[_0x9791('0xf')]=_0x2624e0[_0x9791('0xf')];this[_0x9791('0x10')]=_0x2624e0[_0x9791('0x10')];this[_0x9791('0x11')]=_0x2624e0[_0x9791('0x10')];this[_0x9791('0x12')]=_0x2624e0[_0x9791('0x12')]||0x0;this[_0x9791('0x13')]=_0x2624e0[_0x9791('0x13')]||0x0;this[_0x9791('0x14')]=_0x2624e0[_0x9791('0x14')]||0x0;this[_0x9791('0x15')]=_0x2624e0['callback'];this[_0x9791('0x16')]=_0x2624e0[_0x9791('0x16')];this[_0x9791('0x17')]=_0x2624e0[_0x9791('0x17')];this[_0x9791('0x18')]=_0x2624e0['recallme'];this[_0x9791('0x19')]=_0x2624e0[_0x9791('0x19')];this[_0x9791('0x1a')]=_0x2624e0[_0x9791('0x1a')];this[_0x9791('0x1b')]=_0x2624e0[_0x9791('0x1b')];this[_0x9791('0x1c')]=_0x2624e0[_0x9791('0x1c')];this[_0x9791('0x1d')]=_0x2624e0[_0x9791('0x1d')];this[_0x9791('0x1e')]=_0x2624e0['originatecalleridnum']||'';this[_0x9791('0x1f')]=_0x2624e0['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
+var _0x22b4=['ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme'];(function(_0x2fefa8,_0x355ecd){var _0x4692fe=function(_0x42c06d){while(--_0x42c06d){_0x2fefa8['push'](_0x2fefa8['shift']());}};_0x4692fe(++_0x355ecd);}(_0x22b4,0x8b));var _0x422b=function(_0x5834bc,_0x3d4801){_0x5834bc=_0x5834bc-0x0;var _0x3e183a=_0x22b4[_0x5834bc];return _0x3e183a;};'use strict';var util=require(_0x422b('0x0'));var _=require(_0x422b('0x1'));var moment=require(_0x422b('0x2'));function getSeconds(_0x1f180d,_0x16c3ed){var _0x15cbc7=moment(_0x1f180d)['milliseconds'](0x0);var _0x4b3f83=moment(_0x16c3ed)[_0x422b('0x3')](0x0);return _0x15cbc7['diff'](_0x4b3f83,_0x422b('0x4'));}function Final(_0x2df71e){this[_0x422b('0x5')]=_0x2df71e[_0x422b('0x5')];this[_0x422b('0x6')]=_0x2df71e[_0x422b('0x6')];this['type']=_0x2df71e[_0x422b('0x7')];this['campaigntype']=_0x2df71e[_0x422b('0x7')]===_0x422b('0x8')?_0x422b('0x9'):_0x2df71e[_0x422b('0x7')];this[_0x422b('0xa')]=_0x2df71e[_0x422b('0xa')];this['countcongestionretry']=_0x2df71e[_0x422b('0xb')];this[_0x422b('0xc')]=_0x2df71e[_0x422b('0xc')];this[_0x422b('0xd')]=_0x2df71e[_0x422b('0xa')]+_0x2df71e[_0x422b('0xb')]+_0x2df71e[_0x422b('0xc')];this[_0x422b('0x9')]=_0x2df71e['queue'];this['calleridname']=_0x2df71e[_0x422b('0xe')];this[_0x422b('0xf')]=_0x2df71e[_0x422b('0xf')];this[_0x422b('0x10')]=_0x2df71e[_0x422b('0x10')];this[_0x422b('0x11')]=_0x2df71e[_0x422b('0x11')];this[_0x422b('0x12')]=_0x2df71e['responsetime'];this[_0x422b('0x13')]=_0x2df71e['ringtime']||0x0;this[_0x422b('0x14')]=_0x2df71e[_0x422b('0x14')]||0x0;this[_0x422b('0x15')]=_0x2df71e[_0x422b('0x15')]||0x0;this[_0x422b('0x16')]=_0x2df71e[_0x422b('0x16')];this['callbackuniqueid']=_0x2df71e[_0x422b('0x17')];this[_0x422b('0x18')]=_0x2df71e[_0x422b('0x18')];this['recallme']=_0x2df71e[_0x422b('0x19')];this[_0x422b('0x1a')]=_0x2df71e[_0x422b('0x1a')];this[_0x422b('0x1b')]=_0x2df71e[_0x422b('0x1b')];this[_0x422b('0x1c')]=_0x2df71e[_0x422b('0x1c')];this['VoiceQueueId']=_0x2df71e[_0x422b('0x1d')];this['CampaignId']=_0x2df71e['CampaignId'];this[_0x422b('0x1e')]=_0x2df71e['originatecalleridnum']||'';this[_0x422b('0x1f')]=_0x2df71e['originatecalleridname']||'';}module[_0x422b('0x20')]=Final;
\ No newline at end of file
index 875762e..061c0e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['countglobal','countcongestionretry','countnoanswerretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','type','outbound','queue','countbusyretry'];(function(_0xd02bb,_0x26e2d0){var _0x1cdf23=function(_0x18fd05){while(--_0x18fd05){_0xd02bb['push'](_0xd02bb['shift']());}};_0x1cdf23(++_0x26e2d0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function getSeconds(_0x5dd881,_0x550fbc){var _0x18d5c9=moment(_0x5dd881)['milliseconds'](0x0);var _0x333808=moment(_0x550fbc)[_0x0a9e('0x3')](0x0);return _0x18d5c9[_0x0a9e('0x4')](_0x333808,_0x0a9e('0x5'));}function Hangup(_0x981158,_0x57b080){this[_0x0a9e('0x6')]=0x4;this[_0x0a9e('0x7')]=_0x0a9e('0x8');this['scheduledat']=_0x981158['scheduledat'];this[_0x0a9e('0x9')]=_0x981158['type'];this['campaigntype']=_0x981158[_0x0a9e('0x9')]===_0x0a9e('0xa')?_0x0a9e('0xb'):_0x981158[_0x0a9e('0x9')];this[_0x0a9e('0xc')]=_0x981158[_0x0a9e('0xc')];this['countcongestionretry']=_0x981158['countcongestionretry'];this['countnoanswerretry']=_0x981158['countnoanswerretry'];this[_0x0a9e('0xd')]=_0x981158[_0x0a9e('0xc')]+_0x981158[_0x0a9e('0xe')]+_0x981158[_0x0a9e('0xf')];this[_0x0a9e('0x10')]=_0x57b080[_0x0a9e('0x10')];this['calleridname']=_0x981158[_0x0a9e('0x11')];this[_0x0a9e('0x12')]=_0x981158[_0x0a9e('0x13')];this[_0x0a9e('0x14')]=_0x981158[_0x0a9e('0x14')];this[_0x0a9e('0x15')]=_0x981158['responsetime'];this[_0x0a9e('0x16')]=moment()['format'](_0x0a9e('0x17'));this['ringtime']=getSeconds(_0x981158[_0x0a9e('0x15')],_0x981158[_0x0a9e('0x14')]);this['holdtime']=0x0;this[_0x0a9e('0x18')]=getSeconds(this['endtime'],_0x981158[_0x0a9e('0x15')]);this[_0x0a9e('0xb')]=_0x981158[_0x0a9e('0xb')];this[_0x0a9e('0x19')]=_0x0a9e('0x1a');this[_0x0a9e('0x1b')]=_0x57b080[_0x0a9e('0x1c')];this[_0x0a9e('0x1d')]=_0x981158[_0x0a9e('0x1d')];this[_0x0a9e('0x1e')]=_0x981158[_0x0a9e('0x1e')];this[_0x0a9e('0x1f')]=_0x981158['callbackat'];this[_0x0a9e('0x20')]=_0x981158[_0x0a9e('0x20')];this['ContactId']=_0x981158[_0x0a9e('0x21')];this['ListId']=_0x981158['ListId'];this[_0x0a9e('0x22')]=_0x981158[_0x0a9e('0x22')];this[_0x0a9e('0x23')]=_0x981158[_0x0a9e('0x23')];this['CampaignId']=_0x981158[_0x0a9e('0x24')];}module[_0x0a9e('0x25')]=Hangup;
\ No newline at end of file
+var _0x9957=['state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','uniqueid','calleridname','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','seconds'];(function(_0xdfdb0b,_0x110a57){var _0x1526b5=function(_0x1ff44b){while(--_0x1ff44b){_0xdfdb0b['push'](_0xdfdb0b['shift']());}};_0x1526b5(++_0x110a57);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var util=require(_0x7995('0x0'));var _=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));function getSeconds(_0x10a05d,_0x5b96eb){var _0x86c128=moment(_0x10a05d)[_0x7995('0x3')](0x0);var _0x1902b4=moment(_0x5b96eb)[_0x7995('0x3')](0x0);return _0x86c128['diff'](_0x1902b4,_0x7995('0x4'));}function Hangup(_0x1a36d8,_0x137b6b){this[_0x7995('0x5')]=0x4;this[_0x7995('0x6')]=_0x7995('0x7');this['scheduledat']=_0x1a36d8[_0x7995('0x8')];this[_0x7995('0x9')]=_0x1a36d8['type'];this[_0x7995('0xa')]=_0x1a36d8[_0x7995('0x9')]===_0x7995('0xb')?_0x7995('0xc'):_0x1a36d8[_0x7995('0x9')];this[_0x7995('0xd')]=_0x1a36d8[_0x7995('0xd')];this['countcongestionretry']=_0x1a36d8[_0x7995('0xe')];this[_0x7995('0xf')]=_0x1a36d8['countnoanswerretry'];this[_0x7995('0x10')]=_0x1a36d8[_0x7995('0xd')]+_0x1a36d8[_0x7995('0xe')]+_0x1a36d8[_0x7995('0xf')];this[_0x7995('0x11')]=_0x137b6b[_0x7995('0x11')];this[_0x7995('0x12')]=_0x1a36d8['name'];this['calleridnum']=_0x1a36d8[_0x7995('0x13')];this[_0x7995('0x14')]=_0x1a36d8[_0x7995('0x14')];this[_0x7995('0x15')]=_0x1a36d8[_0x7995('0x15')];this[_0x7995('0x16')]=moment()[_0x7995('0x17')](_0x7995('0x18'));this['ringtime']=getSeconds(_0x1a36d8[_0x7995('0x15')],_0x1a36d8['starttime']);this[_0x7995('0x19')]=0x0;this[_0x7995('0x1a')]=getSeconds(this[_0x7995('0x16')],_0x1a36d8[_0x7995('0x15')]);this[_0x7995('0xc')]=_0x1a36d8[_0x7995('0xc')];this['membername']='IVR';this[_0x7995('0x1b')]=_0x137b6b['cause-txt'];this['callback']=_0x1a36d8[_0x7995('0x1c')];this[_0x7995('0x1d')]=_0x1a36d8['callbackuniqueid'];this[_0x7995('0x1e')]=_0x1a36d8['callbackat'];this['recallme']=_0x1a36d8[_0x7995('0x1f')];this[_0x7995('0x20')]=_0x1a36d8[_0x7995('0x20')];this[_0x7995('0x21')]=_0x1a36d8[_0x7995('0x21')];this[_0x7995('0x22')]=_0x1a36d8['UserId'];this[_0x7995('0x23')]=_0x1a36d8[_0x7995('0x23')];this[_0x7995('0x24')]=_0x1a36d8[_0x7995('0x24')];}module[_0x7995('0x25')]=Hangup;
\ No newline at end of file
index 00f4af2..c58a96b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd42d=['recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','calleridname','name','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat'];(function(_0x5158bb,_0x4265d1){var _0x4a2124=function(_0x4ce3f4){while(--_0x4ce3f4){_0x5158bb['push'](_0x5158bb['shift']());}};_0x4a2124(++_0x4265d1);}(_0xd42d,0xe9));var _0xdd42=function(_0x331c5c,_0x197e4f){_0x331c5c=_0x331c5c-0x0;var _0x80b3b1=_0xd42d[_0x331c5c];return _0x80b3b1;};'use strict';var util=require(_0xdd42('0x0'));var _=require('lodash');var moment=require(_0xdd42('0x1'));function getSeconds(_0x50f12c,_0x3aae6d){var _0x22a9e0=moment(_0x50f12c)[_0xdd42('0x2')](0x0);var _0x361a77=moment(_0x3aae6d)['milliseconds'](0x0);return _0x22a9e0[_0xdd42('0x3')](_0x361a77,'seconds');}function History(_0x263b21){this[_0xdd42('0x4')]=_0x263b21[_0xdd42('0x4')];this[_0xdd42('0x5')]=_0x263b21[_0xdd42('0x5')]||undefined;this[_0xdd42('0x6')]=_0x263b21['type'];this[_0xdd42('0x7')]=_0x263b21[_0xdd42('0x6')]===_0xdd42('0x8')?_0xdd42('0x9'):_0x263b21['type'];this['countbusyretry']=_0x263b21[_0xdd42('0xa')];this['countcongestionretry']=_0x263b21['countcongestionretry'];this[_0xdd42('0xb')]=_0x263b21[_0xdd42('0xb')];this['countglobal']=_0x263b21[_0xdd42('0xa')]+_0x263b21['countcongestionretry']+_0x263b21[_0xdd42('0xb')];this['queue']=_0x263b21['queue'];this[_0xdd42('0xc')]=_0x263b21[_0xdd42('0xd')];this[_0xdd42('0xe')]=_0x263b21['number'];this[_0xdd42('0xf')]=_0x263b21[_0xdd42('0xf')];this[_0xdd42('0x10')]=_0x263b21[_0xdd42('0x10')];this['endtime']=_0x263b21[_0xdd42('0x10')];this[_0xdd42('0x11')]=getSeconds(_0x263b21[_0xdd42('0x10')],_0x263b21[_0xdd42('0xf')]);this[_0xdd42('0x12')]=0x0;this[_0xdd42('0x13')]=0x0;this[_0xdd42('0x14')]=_0x263b21['callback'];this[_0xdd42('0x15')]=_0x263b21[_0xdd42('0x15')];this[_0xdd42('0x16')]=_0x263b21['callbackat'];this[_0xdd42('0x17')]=_0x263b21[_0xdd42('0x17')];this[_0xdd42('0x18')]=_0x263b21[_0xdd42('0x18')];this['ListId']=_0x263b21[_0xdd42('0x19')];this[_0xdd42('0x1a')]=_0x263b21['UserId'];this['VoiceQueueId']=_0x263b21[_0xdd42('0x1b')];this[_0xdd42('0x1c')]=_0x263b21[_0xdd42('0x1c')];this[_0xdd42('0x1d')]=_0x263b21[_0xdd42('0x1d')]||'';this['originatecalleridname']=_0x263b21[_0xdd42('0x1e')]||'';}module[_0xdd42('0x1f')]=History;
\ No newline at end of file
+var _0xbbd7=['ListId','UserId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','calleridname','name','number','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbbd7,0xb0));var _0x7bbd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbbd7[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x7bbd('0x0'));var _=require('lodash');var moment=require(_0x7bbd('0x1'));function getSeconds(_0x330cca,_0x52db1c){var _0x4ca92e=moment(_0x330cca)[_0x7bbd('0x2')](0x0);var _0x328955=moment(_0x52db1c)[_0x7bbd('0x2')](0x0);return _0x4ca92e[_0x7bbd('0x3')](_0x328955,_0x7bbd('0x4'));}function History(_0x13331f){this[_0x7bbd('0x5')]=_0x13331f['uniqueid'];this['scheduledat']=_0x13331f[_0x7bbd('0x6')]||undefined;this['type']=_0x13331f[_0x7bbd('0x7')];this[_0x7bbd('0x8')]=_0x13331f[_0x7bbd('0x7')]===_0x7bbd('0x9')?_0x7bbd('0xa'):_0x13331f[_0x7bbd('0x7')];this[_0x7bbd('0xb')]=_0x13331f['countbusyretry'];this['countcongestionretry']=_0x13331f[_0x7bbd('0xc')];this[_0x7bbd('0xd')]=_0x13331f['countnoanswerretry'];this['countglobal']=_0x13331f[_0x7bbd('0xb')]+_0x13331f[_0x7bbd('0xc')]+_0x13331f['countnoanswerretry'];this[_0x7bbd('0xa')]=_0x13331f[_0x7bbd('0xa')];this[_0x7bbd('0xe')]=_0x13331f[_0x7bbd('0xf')];this['calleridnum']=_0x13331f[_0x7bbd('0x10')];this[_0x7bbd('0x11')]=_0x13331f[_0x7bbd('0x11')];this[_0x7bbd('0x12')]=_0x13331f[_0x7bbd('0x12')];this[_0x7bbd('0x13')]=_0x13331f['responsetime'];this[_0x7bbd('0x14')]=getSeconds(_0x13331f['responsetime'],_0x13331f[_0x7bbd('0x11')]);this[_0x7bbd('0x15')]=0x0;this[_0x7bbd('0x16')]=0x0;this[_0x7bbd('0x17')]=_0x13331f[_0x7bbd('0x17')];this[_0x7bbd('0x18')]=_0x13331f[_0x7bbd('0x18')];this['callbackat']=_0x13331f[_0x7bbd('0x19')];this[_0x7bbd('0x1a')]=_0x13331f[_0x7bbd('0x1a')];this[_0x7bbd('0x1b')]=_0x13331f[_0x7bbd('0x1b')];this['ListId']=_0x13331f[_0x7bbd('0x1c')];this['UserId']=_0x13331f[_0x7bbd('0x1d')];this['VoiceQueueId']=_0x13331f['VoiceQueueId'];this[_0x7bbd('0x1e')]=_0x13331f[_0x7bbd('0x1e')];this[_0x7bbd('0x1f')]=_0x13331f[_0x7bbd('0x1f')]||'';this[_0x7bbd('0x20')]=_0x13331f[_0x7bbd('0x20')]||'';}module[_0x7bbd('0x21')]=History;
\ No newline at end of file
index 5e25772..7752419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c3c=['No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','getContactDialer','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','notFound','saveInDb','merge','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','SIP/%s','reachable','unmonitored','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','value','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','[syncHangupInAMD][createHistory]','MACHINE','Machine','[syncMachine][createHistory]','[syncMachine]','dialAMDActive','AMD','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','amd','[syncMachineIvr]','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','cause-txt','Unknow','dialQueueProject2','dialAgiAfterHangupAgent','YYYY-MM-DD\x20HH:mm:ss','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','Drop','dropreason','TIMEOUT','queueCallerAbandonCreateState','predictiveIntervalDroppedCallsCallersExit','Abandoned','syncNewExten','actionid','locked','paused','stateinterface','push','queueStatusComplete','[unlockQueueStatus][undefined]','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','checkIsTrunkReachable','isTrunkReachable','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','iftime\x20%s,%s','content','indexOf','true','all','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','checkDialMethod','progressive','power','handlePower','dialPowerLevel','method\x20not\x20recognized','launchHandleIvr','handleIvr','dialMethod','dialGlobalInterval','dialTimezone','[syncQueueSummary]','syncCampaigns','active','[syncCampaigns]','pow','replace','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','NONE','\x22agi://%s/square,%s\x22','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialQueueTimeout','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','createdAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','Error','originate\x20action\x20Error','getQueue','callProgressDetecting','[callProgressDetecting]\x20','countbusyretry','countcongestionretry','countnoanswerretry','dialGlobalMaxRetry','dialNoAnswerMaxRetry','minutes','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','add','dialBusyRetryFrequency','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','reason','[syncAgentComplete][createHistory][0]','stateGlobal','reason\x200\x20no\x20such\x20number....','createStateFinal','outboundNoAnswerCallsDay','NoAnswer','countglobal','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','[syncAgentComplete][createHistory][5]','checkRetriveMax','reason\x205\x20busy','Congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','[syncAgentComplete][createHistory][?]','Success','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalPauses','predictiveIntervalLowerLimit','floor','erlangCalls','erlangAbandonmentRate','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive][Date]','dialPredictiveInterval','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][LowerLimitInterval]','agent\x20max\x20free\x20','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','getDataPredictive','startMethodPredictive','[averageHandleTime][ErlangB]\x20','predictiveIntervalAnsweredCalls','abandonmentRate','[CatchErlangB]','agentBusyFactor','outboundQueuePauses','[getDataPredictive]','erlangCallToSecond','[handlePredictive]','[startMethodPredictive][milliseconds]\x20','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','dialRecallMeTimeout','dialRecallInQueue','RECALLINQUEUE','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','[Originate][MoveBlacklist]','inBlackList','limitCalls','temp','dialOrderByScheduledAt','[getContactCampaign2][Empty]','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','RUNNING','tryOriginatePredictive','[getContactDialerPredictive]','[abandonmentRate]','\x20m\x20=\x20','\x20interval\x20=\x20','\x20Ts\x20=\x20','\x20Amax\x20=\x20','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','Amax\x20=\x20','[busyFactor]','\x20Umin\x20=\x20','util','lodash','bluebird','uuid','md5','ioredis','../../../config/environment/','../../../config/logger','dialer','booked','predictive','syncQueueSummary','../ami','defaults','redis','socket.io-emitter','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','./action','./history','./agentComplete','./queueCallerAbandon','./hangup','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','contactsId','uniqueId','optionPredictive','startPredictive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','originateresponse','syncOriginateResponse','syncAgentComplete','custom:queuesummary','hangup','syncHangup','newexten','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','name','\x20AGENTS\x20NOT\x20LOGGED','message','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','Intervals','\x20INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','stringify','milliseconds','diff','seconds','type','outbound','strategy','loggedIn','pTalking','sumDuration','talking','total','abandoned','waiting','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','Trunk','callerid','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','campaign:save','isUndefined','[checkGetDataPredictive][avgTalktime]','info','[checkGetDataPredictive][avgHoldtime]','[checkGetDataPredictive][objIsEmpty]','[ErlangB]','startProgressive','[freeVariablesPredictive]','handlePredictive','preview','string','\x22%s\x22\x20<%s>','error','inspect','length','hasOwnProperty','originated','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','starttime','loopClearZombieChannels','clearZombieChannels','[actions]','isNil','Action','status','channel','catch'];(function(_0x37fb45,_0x536a60){var _0x1d202e=function(_0x1aa98a){while(--_0x1aa98a){_0x37fb45['push'](_0x37fb45['shift']());}};_0x1d202e(++_0x536a60);}(_0x5c3c,0x132));var _0xc5c3=function(_0xa6cc5c,_0x239c99){_0xa6cc5c=_0xa6cc5c-0x0;var _0x44803d=_0x5c3c[_0xa6cc5c];return _0x44803d;};'use strict';var util=require(_0xc5c3('0x0'));var _=require(_0xc5c3('0x1'));var BPromise=require(_0xc5c3('0x2'));var uuid=require(_0xc5c3('0x3'));var moment=require('moment');var rr=require('rr');var md5=require(_0xc5c3('0x4'));var Redis=require(_0xc5c3('0x5'));var config=require(_0xc5c3('0x6'));var logger=require(_0xc5c3('0x7'))(_0xc5c3('0x8'));var loggerBooked=require(_0xc5c3('0x7'))(_0xc5c3('0x9'));var loggerPredictive=require(_0xc5c3('0x7'))(_0xc5c3('0xa'));var loggerPredictiveCalls=require('../../../config/logger')('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')(_0xc5c3('0xb'));var ami=require(_0xc5c3('0xc'));config['redis']=_[_0xc5c3('0xd')](config[_0xc5c3('0xe')],{'host':'localhost','port':0x18eb});var io=require(_0xc5c3('0xf'))(new Redis(config[_0xc5c3('0xe')]));var cmHopper=require('../rpc/cmHopper');var cmHopperFinal=require(_0xc5c3('0x10'));var cmHopperHistory=require(_0xc5c3('0x11'));var cmHopperBlack=require(_0xc5c3('0x12'));var voiceQueueRt=require('../rpc/voiceQueueRt');var Action=require(_0xc5c3('0x13'));var History=require(_0xc5c3('0x14'));var Final=require('./final');var AgentComplete=require(_0xc5c3('0x15'));var QueueCallerAbandon=require(_0xc5c3('0x16'));var Hangup=require(_0xc5c3('0x17'));var ipAgi=process['env'][_0xc5c3('0x18')]||_0xc5c3('0x19');var strategy={'rrmemory':_0xc5c3('0x1a'),'roundrobin':_0xc5c3('0x1b')};var Sequence=function(){};Sequence[_0xc5c3('0x1c')]['enqueue']=function(_0x5c0341){this[_0xc5c3('0x1d')]=this[_0xc5c3('0x1d')]?this[_0xc5c3('0x1d')][_0xc5c3('0x1e')](_0x5c0341):_0x5c0341();};function Dialer(_0x5ecd4b,_0x4ff2de){this[_0xc5c3('0x1f')]=new Sequence();this['preview']=_0x4ff2de;this[_0xc5c3('0x20')]=_0x5ecd4b[_0xc5c3('0x20')];this[_0xc5c3('0x21')]=_0x5ecd4b[_0xc5c3('0x21')];this[_0xc5c3('0x22')]=_0x5ecd4b['agents'];this[_0xc5c3('0x23')]=_0x5ecd4b[_0xc5c3('0x23')];this[_0xc5c3('0x24')]=config[_0xc5c3('0x24')]||0x2;this['channels']={};this[_0xc5c3('0x25')]={};this[_0xc5c3('0x26')]={};this[_0xc5c3('0x27')]={};this[_0xc5c3('0x28')]={};this[_0xc5c3('0x29')]={};this['startProgressive']={};this[_0xc5c3('0x2a')]={};this[_0xc5c3('0x2b')]={};this[_0xc5c3('0x2c')]={};ami['on'](_0xc5c3('0x2d'),this[_0xc5c3('0x2e')][_0xc5c3('0x2f')](this));ami['on'](_0xc5c3('0x30'),this['syncQueueCallerAbandon']['bind'](this));ami['on'](_0xc5c3('0x31'),this[_0xc5c3('0x32')]['bind'](this));ami['on']('agentcomplete',this[_0xc5c3('0x33')][_0xc5c3('0x2f')](this));ami['on'](_0xc5c3('0x34'),this['syncQueueSummary']['bind'](this));ami['on'](_0xc5c3('0x35'),this[_0xc5c3('0x36')][_0xc5c3('0x2f')](this));ami['on'](_0xc5c3('0x37'),this['syncNewExten'][_0xc5c3('0x2f')](this));ami['on']('varset',this[_0xc5c3('0x38')]['bind'](this));ami['on'](_0xc5c3('0x39'),this[_0xc5c3('0x3a')][_0xc5c3('0x2f')](this));ami['on'](_0xc5c3('0x3b'),this[_0xc5c3('0x3c')][_0xc5c3('0x2f')](this));this[_0xc5c3('0x3d')]();this['loopClearZombieChannels']();}function isNotNull(_0xbcafd6){return _0xbcafd6!==null&&!_['isUndefined'](_0xbcafd6);}function checkIsLoggedIn(_0xc4b134,_0x43ebfc){return function(){if(_0x43ebfc<=0x0){_0xc4b134['message']='AGENTS_NOT_LOGGED';throw _0xc4b134[_0xc5c3('0x3e')]+_0xc5c3('0x3f');}};}function isActive(_0x66e83c){return _0x66e83c;}function checkIsActive(_0x19e482,_0x52adcf){return function(){if(!isActive(_0x52adcf)){_0x19e482[_0xc5c3('0x40')]=_0xc5c3('0x41');throw _0x19e482[_0xc5c3('0x3e')]+_0xc5c3('0x42');}};}function checkInterval(_0x1b4538){return function(){if(!isNotNull(_0x1b4538[_0xc5c3('0x43')])){_0x1b4538[_0xc5c3('0x40')]=_0xc5c3('0x44');throw _0x1b4538[_0xc5c3('0x3e')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x1b4538[_0xc5c3('0x43')][_0xc5c3('0x45')])){_0x1b4538[_0xc5c3('0x40')]=_0xc5c3('0x44');throw _0x1b4538[_0xc5c3('0x3e')]+_0xc5c3('0x46');}if(!isNotNull(_[_0xc5c3('0x47')](_0x1b4538['Interval']['Intervals']))){_0x1b4538[_0xc5c3('0x40')]='INTERVAL_IS_NULL';throw _0x1b4538[_0xc5c3('0x3e')]+_0xc5c3('0x46');}};}function msgResponse(_0x30a01e,_0x15c656,_0x32df1e){return{'action':_0x30a01e,'response':_0x15c656,'message':_0x32df1e};}function myreject(_0x498677){return function(_0x21b243){return _0x498677(msgResponse(_0xc5c3('0x48'),'Error',JSON[_0xc5c3('0x49')](_0x21b243)));};}function getSeconds(_0x17d93c,_0x321917){var _0x80d0df=moment(_0x17d93c)[_0xc5c3('0x4a')](0x0);var _0x32118c=moment(_0x321917)[_0xc5c3('0x4a')](0x0);return _0x80d0df[_0xc5c3('0x4b')](_0x32118c,_0xc5c3('0x4c'));}function emit(_0xf4f027,_0x49523a,_0x361b04){io['to'](_0xf4f027)['emit'](_0x49523a,_0x361b04);}function emitVoiceQueueSummary(_0x4fdbe6){if(_0x4fdbe6[_0xc5c3('0x4d')]===_0xc5c3('0x4e')){var _0x1b546e={'id':_0x4fdbe6['id'],'name':_0x4fdbe6[_0xc5c3('0x3e')],'strategy':_0x4fdbe6[_0xc5c3('0x4f')],'answered':_0x4fdbe6['answered'],'available':_0x4fdbe6['available'],'loggedIn':_0x4fdbe6[_0xc5c3('0x50')],'pTalking':_0x4fdbe6[_0xc5c3('0x51')],'sumBillable':_0x4fdbe6['sumBillable'],'sumDuration':_0x4fdbe6[_0xc5c3('0x52')],'sumHoldTime':_0x4fdbe6['sumHoldTime']||0x0,'talking':_0x4fdbe6[_0xc5c3('0x53')],'total':_0x4fdbe6[_0xc5c3('0x54')],'type':_0x4fdbe6[_0xc5c3('0x4d')],'unmanaged':_0x4fdbe6['unmanaged'],'abandoned':_0x4fdbe6[_0xc5c3('0x55')],'waiting':_0x4fdbe6[_0xc5c3('0x56')],'loggedInDb':_0x4fdbe6['loggedInDb'],'dialActive':_0x4fdbe6[_0xc5c3('0x57')],'dialMethod':_0x4fdbe6['dialMethod'],'dialOriginateCallerIdName':_0x4fdbe6[_0xc5c3('0x58')],'dialOriginateCallerIdNumber':_0x4fdbe6[_0xc5c3('0x59')],'dialOriginateTimeout':_0x4fdbe6['dialOriginateTimeout'],'dialPrefix':_0x4fdbe6['dialPrefix'],'outboundAnswerAgiCallsDay':_0x4fdbe6['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x4fdbe6[_0xc5c3('0x5a')],'outboundBlacklistCallsDay':_0x4fdbe6[_0xc5c3('0x5b')],'outboundBusyCallsDay':_0x4fdbe6['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x4fdbe6[_0xc5c3('0x5c')],'outboundDropCallsDayACS':_0x4fdbe6[_0xc5c3('0x5d')],'outboundDropCallsDayCallersExit':_0x4fdbe6[_0xc5c3('0x5e')],'outboundDropCallsDayTimeout':_0x4fdbe6[_0xc5c3('0x5f')],'outboundNoAnswerCallsDay':_0x4fdbe6['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x4fdbe6[_0xc5c3('0x60')],'outboundOriginateFailureCallsDay':_0x4fdbe6['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x4fdbe6['outboundReCallsDay'],'outboundRejectCallsDay':_0x4fdbe6[_0xc5c3('0x61')],'outboundUnknownCallsDay':_0x4fdbe6[_0xc5c3('0x62')],'predictiveIntervalAnsweredCalls':_0x4fdbe6['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x4fdbe6[_0xc5c3('0x63')],'predictiveIntervalAvgTalktime':_0x4fdbe6[_0xc5c3('0x64')],'predictiveIntervalDroppedCallsCallersExit':_0x4fdbe6['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x4fdbe6[_0xc5c3('0x65')],'predictiveIntervalErlangCalls':_0x4fdbe6['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x4fdbe6[_0xc5c3('0x66')],'predictiveIntervalHitRate':_0x4fdbe6[_0xc5c3('0x67')],'predictiveIntervalLowerLimit':_0x4fdbe6['predictiveIntervalLowerLimit'],'predictiveIntervalMultiplicativeFactor':_0x4fdbe6[_0xc5c3('0x68')],'predictiveIntervalPauses':_0x4fdbe6['predictiveIntervalPauses'],'predictiveIntervalTotalCalls':_0x4fdbe6[_0xc5c3('0x69')],'message':_0x4fdbe6[_0xc5c3('0x40')],'originated':_0x4fdbe6['originated']};if(_0x4fdbe6[_0xc5c3('0x6a')]){_0x1b546e[_0xc5c3('0x6a')]={'id':_0x4fdbe6[_0xc5c3('0x6a')]['id'],'name':_0x4fdbe6[_0xc5c3('0x6a')][_0xc5c3('0x3e')],'active':_0x4fdbe6[_0xc5c3('0x6a')]['active'],'callerid':_0x4fdbe6[_0xc5c3('0x6a')][_0xc5c3('0x6b')]};}if(_0x4fdbe6[_0xc5c3('0x43')]){_0x1b546e[_0xc5c3('0x43')]={'id':_0x4fdbe6[_0xc5c3('0x43')]['id'],'name':_0x4fdbe6['Interval']['name']};}var _0x108ce4=md5(JSON[_0xc5c3('0x49')](_0x1b546e));if(_0x4fdbe6[_0xc5c3('0x4')]!==_0x108ce4){_0x4fdbe6['md5']=_0x108ce4;emit(util[_0xc5c3('0x6c')](_0xc5c3('0x6d'),_0x1b546e[_0xc5c3('0x3e')]),_0xc5c3('0x6e'),_0x1b546e);}}}function emitCampaignSummary(_0x2c1cde){if(_0x2c1cde[_0xc5c3('0x4d')]===_0xc5c3('0x6f')){emit(util['format'](_0xc5c3('0x70'),_0x2c1cde[_0xc5c3('0x3e')]),_0xc5c3('0x71'),_0x2c1cde);}}function checkGetDataPredictive(_0x5730cb){if(isNotNull(_0x5730cb)){if(!_[_0xc5c3('0x47')](_0x5730cb)){if(_0x5730cb[_0xc5c3('0x69')]>0x0){if(!_[_0xc5c3('0x72')](_0x5730cb[_0xc5c3('0x64')])&&_0x5730cb[_0xc5c3('0x64')]>0x0){return!![];}else{loggerPredictive['info'](_0xc5c3('0x73'),JSON['stringify'](_0x5730cb));}if(!_[_0xc5c3('0x72')](_0x5730cb['predictiveIntervalAvgHoldtime'])&&_0x5730cb[_0xc5c3('0x63')]>0x0){return!![];}else{loggerPredictive[_0xc5c3('0x74')](_0xc5c3('0x75'),JSON[_0xc5c3('0x49')](_0x5730cb));}}else{loggerPredictive[_0xc5c3('0x74')]('[checkGetDataPredictive][totalCalls]',JSON[_0xc5c3('0x49')](_0x5730cb));}}else{loggerPredictive[_0xc5c3('0x74')](_0xc5c3('0x76'),JSON[_0xc5c3('0x49')](_0x5730cb));}}else{loggerPredictive[_0xc5c3('0x74')]('[checkGetDataPredictive][obj]',JSON[_0xc5c3('0x49')](_0x5730cb));}return![];}function mergeDataErlangB(_0x34bf9c){return function(_0x24ef39){loggerPredictive['info'](_0xc5c3('0x77'),JSON['stringify'](_0x24ef39));_['merge'](_0x34bf9c,_0x24ef39);};}function getDiff(_0x39f83a){var _0x11a6c4=moment()[_0xc5c3('0x4a')](0x0);var _0x3b8dc7=moment(_0x39f83a)[_0xc5c3('0x4a')](0x0);return _0x11a6c4[_0xc5c3('0x4b')](_0x3b8dc7,'seconds');}function ifInterval(_0x1e8acd,_0x1ad3aa){if(_[_0xc5c3('0x72')](_0x1ad3aa)){return![];}if(getDiff(_0x1ad3aa)<_0x1e8acd*0x3c){return!![];}else{return![];}}function freeVariablesPredictive(_0x2a93d8){if(isNotNull(_0x2a93d8)){if(!_[_0xc5c3('0x72')](_0x2a93d8[_0xc5c3('0x78')])){_0x2a93d8[_0xc5c3('0x78')]=undefined;loggerPredictive['info']('[freeVariablesPredictive]',_0xc5c3('0x78'),_0x2a93d8[_0xc5c3('0x3e')]);}if(!_['isUndefined'](_0x2a93d8[_0xc5c3('0x29')])){_0x2a93d8[_0xc5c3('0x29')]=undefined;loggerPredictive[_0xc5c3('0x74')](_0xc5c3('0x79'),'startPredictive',_0x2a93d8[_0xc5c3('0x3e')]);}if(!_[_0xc5c3('0x72')](_0x2a93d8[_0xc5c3('0x7a')])){clearInterval(_0x2a93d8[_0xc5c3('0x7a')]);_0x2a93d8[_0xc5c3('0x7a')]=undefined;loggerPredictive[_0xc5c3('0x74')](_0xc5c3('0x79'),_0xc5c3('0x7a'),_0x2a93d8[_0xc5c3('0x3e')]);}}}function erlangb(_0x5ae4af,_0x394c9d){if(_0x394c9d===0x0){return 0x0;}var _0x260534=0x1;for(var _0x213030=0x1;_0x213030<=_0x394c9d;_0x213030+=0x1){_0x260534=0x1+_0x260534*_0x213030/_0x5ae4af;}return 0x1/_0x260534;}function isVoiceQueueOutbound(_0x5a36f8){return _0x5a36f8===_0xc5c3('0x4e');}function isNotPreview(_0x939ee1){return _0x939ee1!==_0xc5c3('0x7b');}function isCampaignIvr(_0x30226f){return _0x30226f===_0xc5c3('0x6f');}function getCallerId(_0x5067ed,_0xf54924,_0xea569b){if(!_[_0xc5c3('0x72')](_0xea569b)&&_0xc5c3('0x7c')===typeof _0xea569b&&!_[_0xc5c3('0x47')](_0xea569b)){if(!_[_0xc5c3('0x72')](_0xf54924)&&_0xc5c3('0x7c')===typeof _0xf54924&&!_['isEmpty'](_0xf54924)){return util[_0xc5c3('0x6c')](_0xc5c3('0x7d'),_0xf54924,_0xea569b);}return util[_0xc5c3('0x6c')](_0xc5c3('0x7d'),_0xea569b,_0xea569b);}if(!_[_0xc5c3('0x72')](_0x5067ed)&&_0xc5c3('0x7c')===typeof _0x5067ed&&!_[_0xc5c3('0x47')](_0x5067ed)){return _0x5067ed;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x485ae9,_0x200eca){return function(_0x33d489){freeVariablesPredictive(_0x200eca);emitVoiceQueueSummary(_0x200eca);emitCampaignSummary(_0x200eca);loggerSyncQueueSummary[_0xc5c3('0x7e')](_0x485ae9,util[_0xc5c3('0x7f')](_0x33d489,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x1ed757,_0x28412e){return function(_0x17520e){loggerPredictive[_0xc5c3('0x7e')](_0x1ed757,JSON[_0xc5c3('0x49')](_0x17520e));freeVariablesPredictive(_0x28412e);};}function loggerCatch(_0x4d3e6f){return function(_0x92c6cf){logger[_0xc5c3('0x7e')](_0x4d3e6f,util['inspect'](_0x92c6cf,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4b950b){return _0x4b950b&&!_[_0xc5c3('0x72')](_0x4b950b)&&_0x4b950b[_0xc5c3('0x80')]>0x0;}function decremetOriginate(_0x3a26c3){if(!_[_0xc5c3('0x72')](_0x3a26c3)&&_0x3a26c3!==null){if(_0x3a26c3[_0xc5c3('0x81')](_0xc5c3('0x82'))){if(_0x3a26c3[_0xc5c3('0x82')]>0x0){_0x3a26c3[_0xc5c3('0x82')]-=0x1;}else{logger[_0xc5c3('0x7e')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xc5c3('0x7e')](_0xc5c3('0x83'));}}function checkContactLowerLimitOriginate(_0xa4ecb4,_0xf83013,_0xf23177){if(_0xf83013>_0xf23177){for(var _0x278457=0x0;_0x278457<_0xf83013-_0xf23177;_0x278457+=0x1){decremetOriginate(_0xa4ecb4);}}}function loggerGetContactDialer(_0x183f6b,_0x114c90,_0x22606a){return function(_0x31e280){checkContactLowerLimitOriginate(_0x114c90,_0x22606a,0x0);logger[_0xc5c3('0x7e')](_0x183f6b,util['inspect'](_0x31e280,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x4ca6e6){return function(_0x2fedac){if(isNotNull(_0x2fedac)&&isNotNull(_0x2fedac[0x0])){if(_0x2fedac[0x0][_0xc5c3('0x84')]>0x0){_0x4ca6e6[_0xc5c3('0x40')]=_0xc5c3('0x85');logger[_0xc5c3('0x74')](_0xc5c3('0x86')+_0x4ca6e6[_0xc5c3('0x3e')],_0x2fedac[0x0][_0xc5c3('0x84')],_0xc5c3('0x87'));}else{_0x4ca6e6[_0xc5c3('0x40')]=_0xc5c3('0x88');logger[_0xc5c3('0x74')]('[getContactDialer2][Empty]'+_0x4ca6e6[_0xc5c3('0x3e')]);}}};}function notSendMessagesQueue(_0x5139c5){if(_0x5139c5[_0xc5c3('0x89')]){freeVariablesPredictive(_0x5139c5);if(_0x5139c5[_0xc5c3('0x82')]===0x0&&_0x5139c5[_0xc5c3('0x53')]===0x0&&_0x5139c5[_0xc5c3('0x56')]===0x0&&(_0x5139c5[_0xc5c3('0x51')]||0x0)===0x0){_0x5139c5[_0xc5c3('0x89')]=![];_0x5139c5[_0xc5c3('0x8a')]=0x0;_0x5139c5[_0xc5c3('0x40')]='NOT_ACTIVE';loggerSyncQueueSummary[_0xc5c3('0x7e')](_0xc5c3('0x8b'),_0x5139c5[_0xc5c3('0x3e')],'is\x20not\x20active');}else{_0x5139c5['message']=_0xc5c3('0x8c');loggerSyncQueueSummary['error'](_0xc5c3('0x8b'),_0x5139c5[_0xc5c3('0x3e')],_0xc5c3('0x8d'));}emitVoiceQueueSummary(_0x5139c5);}}function notSendMessagesCampaign(_0x5f42d5){if(_0x5f42d5[_0xc5c3('0x89')]){if(_0x5f42d5['originated']===0x0){_0x5f42d5['sendMessageOneNotActive']=![];_0x5f42d5[_0xc5c3('0x40')]=_0xc5c3('0x41');loggerSyncQueueSummary[_0xc5c3('0x7e')](_0xc5c3('0x8e'),_0x5f42d5[_0xc5c3('0x3e')],'is\x20not\x20active');}else{_0x5f42d5[_0xc5c3('0x40')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xc5c3('0x7e')](_0xc5c3('0x8e'),_0x5f42d5[_0xc5c3('0x3e')],_0xc5c3('0x8d'));}emitCampaignSummary(_0x5f42d5);}}function createObjHistory(_0xdc6c06,_0x4fc5f4,_0x5588d9,_0x4ee662,_0x42a235){_0xdc6c06[_0xc5c3('0x40')]=_0x5588d9;var _0xa78c7e=new Action(_0xdc6c06,_0x4fc5f4);var _0x510dcc=new History(_0xa78c7e);_0x510dcc[_0xc5c3('0x8f')]=_0x4ee662;_0x510dcc[_0xc5c3('0x90')]=_0x42a235;_0x510dcc['endtime']=_0xa78c7e[_0xc5c3('0x91')];return _0x510dcc;}Dialer['prototype'][_0xc5c3('0x92')]=function(){var _0xb5a444=this;setInterval(function(){_0xb5a444[_0xc5c3('0x93')](_0xb5a444[_0xc5c3('0x27')],'[uniqueid]');_0xb5a444[_0xc5c3('0x93')](_0xb5a444[_0xc5c3('0x25')],_0xc5c3('0x94'));},0x32c8);};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x93')]=function(_0x2ddf24,_0x642326){var _0x1f36f8=this;for(var _0x5b15ca in _0x2ddf24){if(_0x2ddf24['hasOwnProperty'](_0x5b15ca)){this['sequence']['enqueue'](function(){if(!_[_0xc5c3('0x95')](_0x2ddf24[_0x5b15ca])){return ami[_0xc5c3('0x96')]({'action':_0xc5c3('0x97'),'channel':_0x2ddf24[_0x5b15ca][_0xc5c3('0x98')]})[_0xc5c3('0x99')](function(_0x24b5af){if(_0x24b5af[_0xc5c3('0x40')]===_0xc5c3('0x9a')){setTimeout(function(){if(_0x2ddf24[_0x5b15ca]&&_0x2ddf24[_0x5b15ca][_0xc5c3('0x4d')]!=='ivr'){_0x1f36f8[_0xc5c3('0x9b')](_0x1f36f8[_0xc5c3('0x20')][_0x2ddf24[_0x5b15ca][_0xc5c3('0x9c')]]);logger[_0xc5c3('0x7e')](_0xc5c3('0x9d'),_0x642326,_0x5b15ca,_0x2ddf24[_0x5b15ca][_0xc5c3('0x9c')]);delete _0x2ddf24[_0x5b15ca];}if(_0x2ddf24[_0x5b15ca]&&_0x2ddf24[_0x5b15ca][_0xc5c3('0x4d')]==='ivr'){_0x1f36f8['updateOriginated'](_0x1f36f8[_0xc5c3('0x21')][_0x2ddf24[_0x5b15ca][_0xc5c3('0x9c')]]);logger[_0xc5c3('0x7e')](_0xc5c3('0x9e'),_0x642326,_0x5b15ca,_0x2ddf24[_0x5b15ca][_0xc5c3('0x9c')]);delete _0x2ddf24[_0x5b15ca];}},0x2328);}});}});}}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x9f')]=function(_0x20de43){return BPromise[_0xc5c3('0xa0')]()[_0xc5c3('0xa1')](cmHopper[_0xc5c3('0x9f')](_0x20de43))['catch'](loggerCatch(_0xc5c3('0xa2')));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xa3')]=function(_0x361412){return BPromise[_0xc5c3('0xa0')]()['then'](cmHopperBlack[_0xc5c3('0xa3')](_0x361412))[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xa4')));};Dialer[_0xc5c3('0x1c')]['checkIsBlackListIvr']=function(_0x40854d){return BPromise[_0xc5c3('0xa0')]()[_0xc5c3('0xa1')](cmHopperBlack['checkIsBlackListIvr'](_0x40854d))[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xa5')));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xa6')]=function(_0x265b63){return BPromise[_0xc5c3('0xa0')]()[_0xc5c3('0xa1')](cmHopperHistory[_0xc5c3('0xa7')](_0x265b63))[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xa8')));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xa9')]=function(_0x418ae3){return BPromise[_0xc5c3('0xa0')]()[_0xc5c3('0xa1')](cmHopper[_0xc5c3('0xa9')](_0x418ae3))['catch'](loggerCatch(_0xc5c3('0xaa')));};Dialer[_0xc5c3('0x1c')]['getContactDialer']=function(_0x448d9a,_0x5431b0,_0xa59763,_0x17524c){return BPromise[_0xc5c3('0xa0')]()[_0xc5c3('0xa1')](cmHopper[_0xc5c3('0xab')](_0x448d9a,_0x5431b0,_0xa59763,_0x17524c))['catch'](loggerCatch(_0xc5c3('0xac')));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xad')]=function(_0x536197,_0x508798,_0x2b93bf){return BPromise['resolve']()[_0xc5c3('0xa1')](cmHopper[_0xc5c3('0xad')](_0x536197,_0x508798,_0x2b93bf))[_0xc5c3('0x99')](loggerCatch('[getContactDialer]\x20'));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xae')]=function(_0x11a296){return BPromise[_0xc5c3('0xa0')]()[_0xc5c3('0xa1')](voiceQueueRt['getVoiceQueueRtPauses'](_0x11a296))[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xaf')));};Dialer[_0xc5c3('0x1c')]['moveContactManagedDialer']=function(_0xd3091c){return BPromise[_0xc5c3('0xa0')]()[_0xc5c3('0xa1')](cmHopper[_0xc5c3('0xb0')](_0xd3091c))[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xb1')));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xb2')]=function(_0x515a7c){return BPromise[_0xc5c3('0xa0')]()['then'](cmHopperHistory[_0xc5c3('0xb2')](_0x515a7c))[_0xc5c3('0x99')](loggerCatch('[createHistory]\x20'));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x9b')]=function(_0x5deddc){if(!_[_0xc5c3('0x72')](_0x5deddc)&&_0x5deddc!==null){if(_0x5deddc[_0xc5c3('0x81')](_0xc5c3('0x82'))){if(_0x5deddc[_0xc5c3('0x82')]>0x0){_0x5deddc[_0xc5c3('0x82')]-=0x1;}else{logger['error'](_0xc5c3('0xb3'));}}}else{logger[_0xc5c3('0x7e')](_0xc5c3('0xb4'));}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xb5')]=function(_0x7359ed,_0x4f9309){var _0x321694=this;return function(_0x1a4a51){_0x321694['updateOriginated'](_0x4f9309);logger['error'](_0x7359ed,util[_0xc5c3('0x7f')](_0x1a4a51,{'showHidden':![],'depth':null}));};};Dialer[_0xc5c3('0x1c')]['emptyContact']=function(_0x13d8f6,_0x337a54,_0x2236a3){var _0x5eaf47={'state':0x19,'statedesc':_0xc5c3('0xb6')};this[_0xc5c3('0x9b')](_0x337a54);this[_0xc5c3('0xb7')](_[_0xc5c3('0xb8')](_0x5eaf47,_[_0xc5c3('0xb9')](_0x2236a3,[_0xc5c3('0xba'),_0xc5c3('0xbb'),_0xc5c3('0xbc'),_0xc5c3('0xbd'),_0xc5c3('0xbe')])),_0xc5c3('0xbf'),_0xc5c3('0xc0'));logger['error'](_0x13d8f6);};Dialer['prototype'][_0xc5c3('0xc1')]=function(_0x4b422e){return _0x4b422e==='Success';};Dialer[_0xc5c3('0x1c')]['isTrunkReachable']=function(_0x11dbab){return!_[_0xc5c3('0x72')](_0x11dbab)&&_0x11dbab&&!_['isUndefined'](_0x11dbab['name'])&&!_[_0xc5c3('0x72')](_0x11dbab['active'])&&_0x11dbab['active']&&(this[_0xc5c3('0x23')][util[_0xc5c3('0x6c')](_0xc5c3('0xc2'),_0x11dbab[_0xc5c3('0x3e')])][_0xc5c3('0x97')]===_0xc5c3('0xc3')||this[_0xc5c3('0x23')][util[_0xc5c3('0x6c')](_0xc5c3('0xc2'),_0x11dbab['name'])]['status']===_0xc5c3('0xc4'));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xb7')]=function(_0x3e955a,_0x386811,_0x5a4a47){this[_0xc5c3('0xb2')](_0x3e955a)['catch'](loggerCatch(_0x386811));this[_0xc5c3('0xb0')](_0x3e955a)[_0xc5c3('0x99')](loggerCatch(_0x5a4a47));};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x38')]=function(_0x9e9372){var _0x42c54e=this[_0xc5c3('0x27')][_0x9e9372[_0xc5c3('0xc5')]];var _0x5e3332;if(!_['isNil'](_0x9e9372)&&!_['isNil'](_0x9e9372[_0xc5c3('0xc6')])&&!_[_0xc5c3('0x95')](_0x9e9372[_0xc5c3('0xc6')][_0xc5c3('0xc7')])&&_0x9e9372[_0xc5c3('0xc8')]===_0xc5c3('0xc9')&&_0x42c54e){if(_0x42c54e[_0xc5c3('0x4d')]!==_0xc5c3('0x6f')&&this[_0xc5c3('0x20')][_0x42c54e[_0xc5c3('0x9c')]]['dialAMDActive']&&_0x9e9372[_0xc5c3('0xca')]===_0xc5c3('0xcb')){delete this[_0xc5c3('0x27')][_0x9e9372[_0xc5c3('0xc5')]];this[_0xc5c3('0x9b')](this['voiceQueues'][_0x42c54e[_0xc5c3('0x9c')]]);this[_0xc5c3('0x20')][_0x42c54e[_0xc5c3('0x9c')]]['outboundAnswerCallsDay']+=0x1;this[_0xc5c3('0x20')][_0x42c54e[_0xc5c3('0x9c')]][_0xc5c3('0xcc')]+=0x1;_0x5e3332=new Hangup(_0x42c54e,_0x9e9372);_0x5e3332[_0xc5c3('0x8f')]=0x12;_0x5e3332[_0xc5c3('0x90')]=_0xc5c3('0xcd');_0x5e3332[_0xc5c3('0xce')]='AMD';this[_0xc5c3('0xb7')](_0x5e3332,_0xc5c3('0xcf'),'[syncHangupInAMD]');}if(_0x42c54e[_0xc5c3('0x4d')]!==_0xc5c3('0x6f')&&this[_0xc5c3('0x20')][_0x42c54e[_0xc5c3('0x9c')]]['dialAMDActive']&&_0x9e9372[_0xc5c3('0xca')]===_0xc5c3('0xd0')){delete this[_0xc5c3('0x27')][_0x9e9372[_0xc5c3('0xc5')]];this[_0xc5c3('0x9b')](this[_0xc5c3('0x20')][_0x42c54e['queue']]);this[_0xc5c3('0x20')][_0x42c54e[_0xc5c3('0x9c')]]['outboundAnswerCallsDay']+=0x1;this[_0xc5c3('0x20')][_0x42c54e['queue']][_0xc5c3('0xcc')]+=0x1;_0x5e3332=new Hangup(_0x42c54e,_0x9e9372);_0x5e3332[_0xc5c3('0x8f')]=0x13;_0x5e3332[_0xc5c3('0x90')]=_0xc5c3('0xd1');_0x5e3332['membername']='AMD';_0x5e3332['amd']=!![];this[_0xc5c3('0xb7')](_0x5e3332,_0xc5c3('0xd2'),_0xc5c3('0xd3'));}if(_0x42c54e['type']===_0xc5c3('0x6f')&&this['campaigns'][_0x42c54e[_0xc5c3('0x9c')]][_0xc5c3('0xd4')]&&_0x9e9372[_0xc5c3('0xca')]===_0xc5c3('0xcb')){delete this[_0xc5c3('0x27')][_0x9e9372[_0xc5c3('0xc5')]];this[_0xc5c3('0x9b')](this[_0xc5c3('0x21')][_0x42c54e[_0xc5c3('0x9c')]]);_0x5e3332=new Hangup(_0x42c54e,_0x9e9372);_0x5e3332[_0xc5c3('0x8f')]=0x12;_0x5e3332['statedesc']=_0xc5c3('0xcd');_0x5e3332['membername']=_0xc5c3('0xd5');this[_0xc5c3('0xb7')](_0x5e3332,_0xc5c3('0xd6'),_0xc5c3('0xd7'));}if(_0x42c54e['type']===_0xc5c3('0x6f')&&this[_0xc5c3('0x21')][_0x42c54e[_0xc5c3('0x9c')]]['dialAMDActive']&&_0x9e9372['value']===_0xc5c3('0xd0')){delete this['uniqueId'][_0x9e9372[_0xc5c3('0xc5')]];this[_0xc5c3('0x9b')](this['campaigns'][_0x42c54e[_0xc5c3('0x9c')]]);_0x5e3332=new Hangup(_0x42c54e,_0x9e9372);_0x5e3332[_0xc5c3('0x8f')]=0x13;_0x5e3332['statedesc']='Machine';_0x5e3332[_0xc5c3('0xce')]=_0xc5c3('0xd5');_0x5e3332[_0xc5c3('0xd8')]=!![];this[_0xc5c3('0xb7')](_0x5e3332,'[syncMachineIvr][createHistory]',_0xc5c3('0xd9'));}}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x36')]=function(_0x4f34a6){var _0xbff71a=this[_0xc5c3('0x27')][_0x4f34a6['uniqueid']];var _0x8ec6b6=this;var _0x336506;if(_0xbff71a&&_0xbff71a[_0xc5c3('0x4d')]===_0xc5c3('0x6f')){delete this[_0xc5c3('0x27')][_0x4f34a6['uniqueid']];this[_0xc5c3('0x9b')](this['campaigns'][_0xbff71a['queue']]);this['campaigns'][_0xbff71a[_0xc5c3('0x9c')]]['ivrAnswerCallsDay']+=0x1;_0x336506=new Hangup(_0xbff71a,_0x4f34a6);this[_0xc5c3('0xb2')](_0x336506)['catch'](loggerCatch(_0xc5c3('0xda')));this['moveContactManagedDialer'](_0x336506)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xdb')));}if(_0xbff71a&&_0xbff71a[_0xc5c3('0x4d')]!==_0xc5c3('0x6f')&&isNotNull(this[_0xc5c3('0x20')][_0xbff71a['queue']][_0xc5c3('0xdc')])){delete this['uniqueId'][_0x4f34a6['uniqueid']];this['updateOriginated'](this[_0xc5c3('0x20')][_0xbff71a[_0xc5c3('0x9c')]]);this[_0xc5c3('0x20')][_0xbff71a[_0xc5c3('0x9c')]][_0xc5c3('0x5a')]+=0x1;this[_0xc5c3('0x20')][_0xbff71a[_0xc5c3('0x9c')]][_0xc5c3('0xcc')]+=0x1;_0x336506=new Hangup(_0xbff71a,_0x4f34a6);_0x336506[_0xc5c3('0x8f')]=0x10;_0x336506[_0xc5c3('0x90')]=_0xc5c3('0xdd');_0x336506['membername']=_0xc5c3('0xde');this[_0xc5c3('0xb2')](_0x336506)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xda')));this[_0xc5c3('0xb0')](_0x336506)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xdb')));}if(_0xbff71a&&_0xbff71a['type']!==_0xc5c3('0x6f')&&!isNotNull(this[_0xc5c3('0x20')][_0xbff71a['queue']]['dialQueueProject'])){delete this[_0xc5c3('0x27')][_0x4f34a6[_0xc5c3('0xc5')]];this[_0xc5c3('0x9b')](this['voiceQueues'][_0xbff71a[_0xc5c3('0x9c')]]);this[_0xc5c3('0x20')][_0xbff71a[_0xc5c3('0x9c')]][_0xc5c3('0x62')]+=0x1;_0x336506=new Hangup(_0xbff71a,_0x4f34a6);_0x336506[_0xc5c3('0x8f')]=0xc;_0x336506[_0xc5c3('0x90')]=_0x4f34a6[_0xc5c3('0xdf')];_0x336506[_0xc5c3('0xce')]=_0xc5c3('0xe0');this[_0xc5c3('0xb2')](_0x336506)[_0xc5c3('0x99')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xc5c3('0xb0')](_0x336506)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xdb')));}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x33')]=function(_0x2b884d){var _0x85c8e3=this[_0xc5c3('0x27')][_0x2b884d[_0xc5c3('0xc5')]];var _0x2db9c7=this;if(this['voiceQueues'][_0x2b884d['queue']]){if(_0x85c8e3&&_0x85c8e3[_0xc5c3('0x4d')]!==_0xc5c3('0x6f')){delete this[_0xc5c3('0x27')][_0x2b884d[_0xc5c3('0xc5')]];this[_0xc5c3('0x20')][_0x2b884d[_0xc5c3('0x9c')]][_0xc5c3('0x5a')]+=0x1;var _0x41025c=new AgentComplete(_0x85c8e3,_0x2b884d);if(_0x2b884d['reason']==='agent'){_0x41025c['agiafterat']=this[_0xc5c3('0x20')][_0x2b884d[_0xc5c3('0x9c')]][_0xc5c3('0xe1')]&&this[_0xc5c3('0x20')][_0x2b884d['queue']][_0xc5c3('0xe2')]?moment()[_0xc5c3('0x6c')](_0xc5c3('0xe3')):undefined;}this['createHistory'](_0x41025c)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xe4')));this[_0xc5c3('0xb0')](_0x41025c)['catch'](loggerCatch(_0xc5c3('0xe5')));}}};Dialer['prototype'][_0xc5c3('0x2e')]=function(_0x47e898){if(this[_0xc5c3('0x20')][_0x47e898[_0xc5c3('0x9c')]]){if(this[_0xc5c3('0x27')][_0x47e898[_0xc5c3('0xc5')]]&&this[_0xc5c3('0x27')][_0x47e898[_0xc5c3('0xc5')]]['type']!==_0xc5c3('0x6f')){this[_0xc5c3('0x9b')](this[_0xc5c3('0x20')][_0x47e898[_0xc5c3('0x9c')]]);this['uniqueId'][_0x47e898[_0xc5c3('0xc5')]][_0xc5c3('0xe6')]=moment()[_0xc5c3('0x6c')](_0xc5c3('0xe3'));}}};Dialer[_0xc5c3('0x1c')]['queueCallerAbandonCreateState']=function(_0x4483d3){this[_0xc5c3('0xb2')](_0x4483d3)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xe4')));this['moveContactManagedDialer'](_0x4483d3)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xe7')));};Dialer['prototype']['syncQueueCallerAbandon']=function(_0x1f36c3){var _0x26ae77=this[_0xc5c3('0x27')][_0x1f36c3[_0xc5c3('0xc5')]];var _0x21d793=this;if(this[_0xc5c3('0x20')][_0x1f36c3['queue']]){if(_0x26ae77&&_0x26ae77['type']!==_0xc5c3('0x6f')){delete this[_0xc5c3('0x27')][_0x1f36c3[_0xc5c3('0xc5')]];this[_0xc5c3('0x9b')](this[_0xc5c3('0x20')][_0x1f36c3['queue']]);_0x26ae77[_0xc5c3('0xe8')]=moment()[_0xc5c3('0x6c')](_0xc5c3('0xe3'));var _0x34b9d9=new QueueCallerAbandon(_0x26ae77,_0x1f36c3);if(getSeconds(_0x26ae77[_0xc5c3('0xe8')],_0x26ae77[_0xc5c3('0xe9')])>=_0x26ae77['dialQueueTimeout']){this[_0xc5c3('0x20')][_0x1f36c3['queue']]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0xc5c3('0x20')][_0x1f36c3['queue']][_0xc5c3('0x5f')]+=0x1;this[_0xc5c3('0x20')][_0x1f36c3[_0xc5c3('0x9c')]][_0xc5c3('0x66')]+=0x1;_0x34b9d9[_0xc5c3('0x8f')]=0xa;_0x34b9d9['statedesc']=_0xc5c3('0xea');_0x34b9d9[_0xc5c3('0xeb')]=_0xc5c3('0xec');_0x34b9d9['agiafterat']=this[_0xc5c3('0x20')][_0x1f36c3[_0xc5c3('0x9c')]]['dialQueueProject2']?moment()['format'](_0xc5c3('0xe3')):undefined;this[_0xc5c3('0xed')](_0x34b9d9);}else{this[_0xc5c3('0x20')][_0x1f36c3[_0xc5c3('0x9c')]][_0xc5c3('0xee')]+=0x1;this[_0xc5c3('0x20')][_0x1f36c3['queue']][_0xc5c3('0x5e')]+=0x1;_0x34b9d9[_0xc5c3('0x8f')]=0xb;_0x34b9d9['statedesc']=_0xc5c3('0xef');_0x34b9d9[_0xc5c3('0xeb')]='CALLEREXIT';this[_0xc5c3('0xed')](_0x34b9d9);}}}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xf0')]=function(_0x3f05e7){if(this['actions'][_0x3f05e7[_0xc5c3('0xc5')]]){this[_0xc5c3('0x25')][_0x3f05e7[_0xc5c3('0xc5')]][_0xc5c3('0x98')]=_0x3f05e7['channel'];}if(this[_0xc5c3('0x27')][_0x3f05e7[_0xc5c3('0xc5')]]){this['uniqueId'][_0x3f05e7[_0xc5c3('0xc5')]]['channel']=_0x3f05e7[_0xc5c3('0x98')];}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x3a')]=function(_0x29f72c){if(strategy[this[_0xc5c3('0x20')][this[_0xc5c3('0x25')][_0x29f72c[_0xc5c3('0xf1')]]['queue']][_0xc5c3('0x4f')]]===_0xc5c3('0x1b')){if(this['actions'][_0x29f72c[_0xc5c3('0xf1')]]&&_[_0xc5c3('0x95')](this[_0xc5c3('0x25')][_0x29f72c[_0xc5c3('0xf1')]][_0xc5c3('0xf2')])&&_0x29f72c[_0xc5c3('0x97')]==='1'&&_0x29f72c[_0xc5c3('0xf3')]==='0'){if(this[_0xc5c3('0x22')][_0x29f72c['stateinterface']]){if(!this['agents'][_0x29f72c[_0xc5c3('0xf4')]]['locked']){this['agents'][_0x29f72c[_0xc5c3('0xf4')]]['locked']=!![];this['actions'][_0x29f72c['actionid']][_0xc5c3('0xf2')]=!![];this['actions'][_0x29f72c[_0xc5c3('0xf1')]][_0xc5c3('0xf4')]=_0x29f72c[_0xc5c3('0xf4')];}}}}else if((strategy[this[_0xc5c3('0x20')][this['actions'][_0x29f72c[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]['strategy']]||_0xc5c3('0x1a'))===_0xc5c3('0x1a')){if(this[_0xc5c3('0x25')][_0x29f72c[_0xc5c3('0xf1')]]){if(this[_0xc5c3('0x22')][_0x29f72c[_0xc5c3('0xf4')]]){this[_0xc5c3('0x25')][_0x29f72c['actionid']][_0xc5c3('0xf4')]=_0x29f72c[_0xc5c3('0xf4')];if(_[_0xc5c3('0x95')](this[_0xc5c3('0x2b')][this[_0xc5c3('0x25')][_0x29f72c[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]])){this[_0xc5c3('0x2b')][this[_0xc5c3('0x25')][_0x29f72c[_0xc5c3('0xf1')]]['queue']]=[];}this[_0xc5c3('0x2b')][this[_0xc5c3('0x25')][_0x29f72c[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]][_0xc5c3('0xf5')](_[_0xc5c3('0xb8')](_[_0xc5c3('0xb9')](this[_0xc5c3('0x25')][_0x29f72c['actionid']],['idHopper',_0xc5c3('0xf4')]),{'status':_0x29f72c[_0xc5c3('0x97')],'paused':_0x29f72c[_0xc5c3('0xf3')]}));}}}};function unlockQueueStatus(_0x145550,_0x3d72e6){setTimeout(function(){if(_[_0xc5c3('0x72')](_0x145550[_0xc5c3('0xf6')])){loggerBooked['error'](_0xc5c3('0xf7'),_0x3d72e6);}_0x145550[_0xc5c3('0xf6')]=!![];loggerBooked['info']('[booked][unlockQueueStatus]',_0x3d72e6,JSON['stringify'](_[_0xc5c3('0xb9')](_0x145550,[_0xc5c3('0x3e'),_0xc5c3('0xf6')])));},0x1f3);}Dialer[_0xc5c3('0x1c')]['syncQueueStatusComplete']=function(_0x72588b){var _0x1c1462=this;var _0x51da76=_0x1c1462[_0xc5c3('0x20')][_0x1c1462[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]];if(strategy[this[_0xc5c3('0x20')][this['actions'][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]][_0xc5c3('0x4f')]]===_0xc5c3('0x1b')){if(this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]]&&this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]]['stateinterface']){this['preview'][_0xc5c3('0xf8')](this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xf9')],this['actions'][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xf4')])[_0xc5c3('0x99')](function(_0x31c4cc){logger[_0xc5c3('0x7e')](_0xc5c3('0xfa'),util[_0xc5c3('0x7f')](_0x31c4cc,{'showHidden':![],'depth':null}));})[_0xc5c3('0x1e')](function(){_0x1c1462['updateOriginated'](_0x1c1462[_0xc5c3('0x20')][_0x1c1462[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]);_0x1c1462[_0xc5c3('0x22')][_0x1c1462[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xf4')]][_0xc5c3('0xf2')]=![];delete _0x1c1462['actions'][_0x72588b[_0xc5c3('0xf1')]];unlockQueueStatus(_0x51da76);});}else{this['updateOriginated'](this['voiceQueues'][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]);this[_0xc5c3('0xa9')]({'active':![],'ContactId':this[_0xc5c3('0x25')][_0x72588b['actionid']]['ContactId'],'ListId':this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xbb')],'VoiceQueueId':this['actions'][_0x72588b[_0xc5c3('0xf1')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x72588b[_0xc5c3('0xf1')]]['CampaignId']||undefined})[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xfb')));delete this['actions'][_0x72588b['actionid']];unlockQueueStatus(_0x51da76);}}else if((strategy[this[_0xc5c3('0x20')][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]][_0xc5c3('0x4f')]]||_0xc5c3('0x1a'))===_0xc5c3('0x1a')){var _0x546453;if(this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]]&&!_[_0xc5c3('0x47')](this[_0xc5c3('0x2b')][this['actions'][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]])){if(this[_0xc5c3('0x2c')][_0x1c1462[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]){this[_0xc5c3('0x2c')][_0x1c1462[_0xc5c3('0x25')][_0x72588b['actionid']][_0xc5c3('0x9c')]]=this['queueBookedRR'][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]?this[_0xc5c3('0x2c')][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]:this[_0xc5c3('0x2b')][this['actions'][_0x72588b[_0xc5c3('0xf1')]]['queue']]?this[_0xc5c3('0x2b')][this[_0xc5c3('0x25')][_0x72588b['actionid']][_0xc5c3('0x9c')]]['_rr']||0x0:0x0;}this['queueBooked'][this['actions'][_0x72588b[_0xc5c3('0xf1')]]['queue']][_0xc5c3('0xfc')]=this['queueBookedRR'][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]];for(var _0x3c5339=0x0;_0x3c5339<this[_0xc5c3('0x2b')][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]]['queue']][_0xc5c3('0x80')];_0x3c5339+=0x1){_0x546453=rr(this[_0xc5c3('0x2b')][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]);this[_0xc5c3('0x2c')][_0x1c1462[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]=this[_0xc5c3('0x2b')][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]['_rr'];if(_0x546453[_0xc5c3('0x97')]==='1'&&_0x546453['paused']==='0'){break;}}if(!_[_0xc5c3('0x95')](_0x546453)){this[_0xc5c3('0x22')][_0x546453['stateinterface']]['unlockRR']=_[_0xc5c3('0x72')](this[_0xc5c3('0x22')][_0x546453[_0xc5c3('0xf4')]][_0xc5c3('0xfd')])?!![]:this[_0xc5c3('0x22')][_0x546453[_0xc5c3('0xf4')]]['unlockRR'];}loggerBooked['info'](_0xc5c3('0xfe'),_0x72588b['actionid'],_0xc5c3('0xff'),JSON[_0xc5c3('0x49')](_['pick'](this['agents'][_0x546453[_0xc5c3('0xf4')]],['name',_0xc5c3('0xfd')])),'contactAgent-idHopper:\x20',JSON[_0xc5c3('0x49')](_0x546453[_0xc5c3('0xf9')]));if(!_[_0xc5c3('0x95')](_0x546453)&&_0x546453[_0xc5c3('0x97')]==='1'&&_0x546453[_0xc5c3('0xf3')]==='0'&&this[_0xc5c3('0x22')][_0x546453[_0xc5c3('0xf4')]][_0xc5c3('0xfd')]){this[_0xc5c3('0x22')][_0x546453['stateinterface']][_0xc5c3('0xfd')]=![];this[_0xc5c3('0x2b')][_0x1c1462['actions'][_0x72588b['actionid']]['queue']]=[];this[_0xc5c3('0x7b')]['run'](_0x546453[_0xc5c3('0xf9')],_0x546453[_0xc5c3('0xf4')])['catch'](function(_0x3e2452){logger[_0xc5c3('0x7e')]('[Catch][Preview][syncQueueStatusComplete]',util[_0xc5c3('0x7f')](_0x3e2452,{'showHidden':![],'depth':null}));})['finally'](function(){_0x1c1462[_0xc5c3('0x9b')](_0x1c1462[_0xc5c3('0x20')][_0x1c1462[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]);setTimeout(function(){_0x1c1462['agents'][_0x546453[_0xc5c3('0xf4')]][_0xc5c3('0xfd')]=!![];loggerBooked[_0xc5c3('0x74')](_0xc5c3('0x100'),_0x72588b[_0xc5c3('0xf1')],'Agent:\x20',JSON[_0xc5c3('0x49')](_['pick'](_0x1c1462[_0xc5c3('0x22')][_0x546453['stateinterface']],[_0xc5c3('0x3e'),_0xc5c3('0xfd')])),'contactAgent-idHopper:\x20',JSON[_0xc5c3('0x49')](_0x546453[_0xc5c3('0xf9')]));},0xc7);delete _0x1c1462[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]];unlockQueueStatus(_0x51da76,_0x72588b[_0xc5c3('0xf1')]);});}else{loggerBooked[_0xc5c3('0x74')](_0xc5c3('0x101'));this[_0xc5c3('0x9b')](this[_0xc5c3('0x20')][this[_0xc5c3('0x25')][_0x72588b['actionid']][_0xc5c3('0x9c')]]);this[_0xc5c3('0xa9')]({'active':![],'ContactId':this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]]['ContactId'],'ListId':this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xbb')],'VoiceQueueId':this[_0xc5c3('0x25')][_0x72588b['actionid']]['VoiceQueueId']||undefined,'CampaignId':this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xbe')]||undefined})[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xfb')));delete this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]];unlockQueueStatus(_0x51da76);}}else{loggerBooked[_0xc5c3('0x74')](_0xc5c3('0x102'));this[_0xc5c3('0x9b')](this[_0xc5c3('0x20')][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]);this[_0xc5c3('0xa9')]({'active':![],'ContactId':this['actions'][_0x72588b[_0xc5c3('0xf1')]]['ContactId'],'ListId':this[_0xc5c3('0x25')][_0x72588b['actionid']][_0xc5c3('0xbb')],'VoiceQueueId':this['actions'][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xbd')]||undefined,'CampaignId':this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xbe')]||undefined})[_0xc5c3('0x99')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]];unlockQueueStatus(_0x51da76);}}else{loggerBooked[_0xc5c3('0x74')](_0xc5c3('0x103'));this[_0xc5c3('0x9b')](this[_0xc5c3('0x20')][this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0x9c')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xba')],'ListId':this[_0xc5c3('0x25')][_0x72588b['actionid']][_0xc5c3('0xbb')],'VoiceQueueId':this['actions'][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xbd')]||undefined,'CampaignId':this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]][_0xc5c3('0xbe')]||undefined})['catch'](loggerCatch(_0xc5c3('0x104')));delete this[_0xc5c3('0x25')][_0x72588b[_0xc5c3('0xf1')]];unlockQueueStatus(_0x51da76);}};Dialer['prototype']['loopCampaigns']=function(){var _0x7751bd=this;setInterval(function(){_0x7751bd['syncCampaigns']();},0x3e8);};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x105')]=function(_0x1ddb9f){var _0x1ed884=this;return function(){if(!_0x1ed884[_0xc5c3('0x106')](_0x1ddb9f[_0xc5c3('0x6a')])){if(!_0x1ed884[_0xc5c3('0x106')](_0x1ddb9f['TrunkBackup'])){_0x1ddb9f[_0xc5c3('0x40')]='TRUNK_IS_NOT_REACHABLE';throw _0x1ddb9f[_0xc5c3('0x3e')]+_0xc5c3('0x107');}}};};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x108')]=function(_0x2bae67,_0x1a0b97,_0x3b5468,_0x60e0c3){var _0x4f3e71=this;return function(){var _0xe83bbb=!![];return _0x4f3e71['ifTime'](_0x2bae67,_0x1a0b97,_0x3b5468,_0x60e0c3,_0xe83bbb);};};Dialer['prototype'][_0xc5c3('0x109')]=function(_0x8fed34,_0x5648dd,_0x6adce4,_0x1de3cc){var _0x21f849=this;return function(){var _0x40f642=![];return _0x21f849[_0xc5c3('0x10a')](_0x8fed34['Intervals'],_0x5648dd,_0x6adce4,_0x1de3cc,_0x40f642);};};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x10a')]=function(_0x513f97,_0x1f0c0b,_0x2978e1,_0x166d2e,_0x21e78e){var _0x534589=[];return new BPromise(function(_0x24a2d9,_0x324c55){if(!isNotNull(_0x513f97)){_0x166d2e[_0xc5c3('0x40')]='INTERVAL_IS_NULL';return _0x324c55(msgResponse('ifTime',_0xc5c3('0x10b'),_0x2978e1+_0xc5c3('0x10c')));}if(_[_0xc5c3('0x47')](_0x513f97)){_0x166d2e[_0xc5c3('0x40')]=_0xc5c3('0x10d');return _0x324c55(msgResponse('ifTime','Failure',_0x2978e1+'\x20Intervals\x20is\x20empty\x20'));}if(_0x1f0c0b&&_['isUndefined'](config[_0xc5c3('0x10e')][_0x1f0c0b])){_0x166d2e[_0xc5c3('0x40')]=_0xc5c3('0x10f');return _0x324c55(msgResponse(_0xc5c3('0x10a'),_0xc5c3('0x10b'),_0x2978e1+_0xc5c3('0x110')+_0x1f0c0b));}if(_[_0xc5c3('0x111')](_0x513f97)){for(var _0x3f9623=0x0;_0x3f9623<_0x513f97[_0xc5c3('0x80')];_0x3f9623+=0x1){_0x534589[_0xc5c3('0xf5')](ami[_0xc5c3('0x96')]({'action':'command','command':util['format'](_0xc5c3('0x112'),_0x513f97[_0x3f9623]['interval'],!_[_0xc5c3('0x72')](config[_0xc5c3('0x10e')][_0x1f0c0b])?_0x1f0c0b:'')})[_0xc5c3('0xa1')](function(_0x4f424e){return _0x4f424e[_0xc5c3('0x113')]['indexOf']('true')>=0x0?!![]:![];})[_0xc5c3('0x99')](myreject(_0x324c55)));}}else{_0x534589['push'](ami[_0xc5c3('0x96')]({'action':'command','command':util['format'](_0xc5c3('0x112'),_0x513f97,!_[_0xc5c3('0x72')](config['timezones'][_0x1f0c0b])?_0x1f0c0b:'')})[_0xc5c3('0xa1')](function(_0x5a16de){return _0x5a16de[_0xc5c3('0x113')][_0xc5c3('0x114')](_0xc5c3('0x115'))>=0x0?!![]:![];})[_0xc5c3('0x99')](myreject(_0x324c55)));}BPromise[_0xc5c3('0x116')](_0x534589)[_0xc5c3('0xa1')](function(_0x186678){var _0x14510c=_['some'](_0x186678);if(_0x14510c){return _0x24a2d9(_0x14510c);}else{_0x166d2e['message']=_0x21e78e?'GLOBAL_INTERVAL_IS_OVERTIME':'INTERVAL_IS_OVERTIME';return _0x324c55(msgResponse(_0xc5c3('0x117'),_0xc5c3('0x10b'),_0xc5c3('0x118')+_0x21e78e+'\x20'+_0x2978e1+_0xc5c3('0x119')+util['inspect'](_0x513f97,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x1f0c0b));}})['catch'](function(_0x53980d){return _0x324c55(msgResponse(_0xc5c3('0x10a'),_0xc5c3('0x10b'),JSON[_0xc5c3('0x49')](_0x53980d)));});});};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x11a')]=function(_0x45f8be){var _0x93a07e=this;return function(){switch(_0x45f8be['dialMethod']){case _0xc5c3('0x11b'):freeVariablesPredictive(_0x45f8be);_0x93a07e['handlePower'](_0x45f8be,0x1);break;case _0xc5c3('0x11c'):freeVariablesPredictive(_0x45f8be);_0x93a07e[_0xc5c3('0x11d')](_0x45f8be,_0x45f8be[_0xc5c3('0x11e')]);break;case'predictive':_0x93a07e['predictive'](_0x45f8be);break;case _0xc5c3('0x9'):freeVariablesPredictive(_0x45f8be);_0x93a07e[_0xc5c3('0x11d')](_0x45f8be,0x1);break;default:freeVariablesPredictive(_0x45f8be);logger[_0xc5c3('0x7e')]('Queue',_0x45f8be[_0xc5c3('0x3e')],_0xc5c3('0x11f'));}};};Dialer['prototype'][_0xc5c3('0x120')]=function(_0xa4d331){var _0x176683=this;return function(){_0x176683[_0xc5c3('0x121')](_0xa4d331);};};Dialer[_0xc5c3('0x1c')][_0xc5c3('0xb')]=function(_0x93bccf){var _0x491a79=this;if(isNotPreview(_0x93bccf[_0xc5c3('0x122')])){if(isVoiceQueueOutbound(_0x93bccf[_0xc5c3('0x4d')])&&isActive(_0x93bccf[_0xc5c3('0x57')])){_0x93bccf[_0xc5c3('0x89')]=!![];BPromise['resolve']()[_0xc5c3('0xa1')](checkIsLoggedIn(_0x93bccf,_0x93bccf['loggedIn']))['then'](checkIsActive(_0x93bccf,_0x93bccf[_0xc5c3('0x57')]))[_0xc5c3('0xa1')](checkInterval(_0x93bccf))['then'](_0x491a79[_0xc5c3('0x105')](_0x93bccf))[_0xc5c3('0xa1')](_0x491a79[_0xc5c3('0x108')](_0x93bccf[_0xc5c3('0x123')],_0x93bccf[_0xc5c3('0x124')],_0x93bccf[_0xc5c3('0x3e')],_0x93bccf))[_0xc5c3('0xa1')](_0x491a79[_0xc5c3('0x109')](_0x93bccf[_0xc5c3('0x43')],_0x93bccf[_0xc5c3('0x124')],_0x93bccf[_0xc5c3('0x3e')],_0x93bccf))[_0xc5c3('0xa1')](_0x491a79[_0xc5c3('0x11a')](_0x93bccf))[_0xc5c3('0x99')](loggerCatchQueueSummary(_0xc5c3('0x125'),_0x93bccf));}else{notSendMessagesQueue(_0x93bccf);}}else{freeVariablesPredictive(_0x93bccf);}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x126')]=function(){var _0x108256=this;var _0x15fe96;for(var _0x5d350b in this[_0xc5c3('0x21')]){if(this[_0xc5c3('0x21')][_0xc5c3('0x81')](_0x5d350b)){_0x15fe96=this[_0xc5c3('0x21')][_0x5d350b];if(isCampaignIvr(_0x15fe96[_0xc5c3('0x4d')])&&isActive(_0x15fe96[_0xc5c3('0x127')])){_0x15fe96[_0xc5c3('0x89')]=!![];BPromise['resolve']()[_0xc5c3('0xa1')](checkIsActive(_0x15fe96,_0x15fe96[_0xc5c3('0x127')]))[_0xc5c3('0xa1')](checkInterval(_0x15fe96))[_0xc5c3('0xa1')](_0x108256[_0xc5c3('0x105')](_0x15fe96))[_0xc5c3('0xa1')](_0x108256[_0xc5c3('0x108')](_0x15fe96['dialGlobalInterval'],_0x15fe96[_0xc5c3('0x124')],_0x15fe96[_0xc5c3('0x3e')],_0x15fe96))['then'](_0x108256[_0xc5c3('0x109')](_0x15fe96[_0xc5c3('0x43')],_0x15fe96[_0xc5c3('0x124')],_0x15fe96['name'],_0x15fe96))[_0xc5c3('0xa1')](_0x108256[_0xc5c3('0x120')](_0x15fe96))[_0xc5c3('0x99')](loggerCatchQueueSummary(_0xc5c3('0x128'),_0x15fe96));}else{notSendMessagesCampaign(_0x15fe96);}}}};function getCallerIdRandom(_0xa2e80f,_0x30699b){var _0x2fc098,_0x29a902,_0x2fa190;if(_0x30699b<=0x0){_0x30699b=0x1;}_0x2fc098=new RegExp('\x5cw{0,'+_0x30699b+'}$');_0x29a902=Math[_0xc5c3('0x129')](0xa,_0x30699b-0x1);_0x2fa190=Math[_0xc5c3('0x129')](0xa,_0x30699b)-0x1;return util[_0xc5c3('0x6c')]('%s',_[_0xc5c3('0x12a')](_0xa2e80f,_0x2fc098,_[_0xc5c3('0x12b')](_0x29a902,_0x2fa190)));}function extractCalleridName(_0x25adbb){var _0x4726a9=_0x25adbb['match'](/"(.*?)"/);return _0x4726a9?_0x4726a9[0x1]:_0x25adbb;}function extractCalleridNumber(_0x56d90e){var _0x2e5ac4=_0x56d90e[_0xc5c3('0x12c')](/<(.*?)>/);return _0x2e5ac4?_0x2e5ac4[0x1]:_0x56d90e;}Dialer[_0xc5c3('0x1c')][_0xc5c3('0x12d')]=function(_0x3cb280,_0x3076f3){var _0xd04ed2=this;var _0x1d4dc4=uuid['v4']();this['actions'][_0x1d4dc4]=new Action(_0x3cb280,_0x3076f3,_0x1d4dc4);return new BPromise(function(_0xe170ca,_0x4843bf){if(_[_0xc5c3('0x72')](_0x3cb280)&&_0xc5c3('0x12e')!==typeof _0x3cb280){return _0x4843bf(msgResponse(_0xc5c3('0x12f'),_0xc5c3('0x10b'),_0xc5c3('0x130')));}if(_[_0xc5c3('0x72')](_0x3076f3[_0xc5c3('0x131')][_0xc5c3('0x132')])||_0x3076f3[_0xc5c3('0x131')]['phone']===null){return _0x4843bf(msgResponse(_0xc5c3('0x12f'),'Failure',_0xc5c3('0x133')));}var _0x1dcd8a={'XMD-CALLERID':_0xd04ed2[_0xc5c3('0x25')][_0x1d4dc4][_0xc5c3('0x134')](),'XMD-AGI':_0x3cb280[_0xc5c3('0xdc')]?util[_0xc5c3('0x6c')]('\x22agi://%s/square,%s\x22',ipAgi,_0x3cb280[_0xc5c3('0xdc')]):_0xc5c3('0x135'),'XMD-AGIAFTER':_0x3cb280[_0xc5c3('0xe1')]?util[_0xc5c3('0x6c')](_0xc5c3('0x136'),ipAgi,_0x3cb280[_0xc5c3('0xe1')]):_0xc5c3('0x135'),'XMD-QUEUE':_0x3cb280[_0xc5c3('0x4d')]===_0xc5c3('0x4e')?util[_0xc5c3('0x6c')](_0xc5c3('0x137'),_0x3cb280[_0xc5c3('0x3e')],_0x3cb280[_0xc5c3('0x138')]||'',_0x3cb280['dialAgiAfterHangupAgent']?'c':'',_0x3cb280[_0xc5c3('0x139')]||0x3):'NONE','XMD-CONTACTID':_0x3076f3[_0xc5c3('0xba')],'XMD-CDRTYPE':_0xc5c3('0x8'),'CALLERID(all)':_0xd04ed2[_0xc5c3('0x25')][_0x1d4dc4][_0xc5c3('0x134')](),'XMD-AMD':_0x3cb280[_0xc5c3('0xd4')]?_0xc5c3('0x13a'):_0xc5c3('0x135'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x3cb280[_0xc5c3('0xd4')]){_0x1dcd8a[_0xc5c3('0x13b')]=_0x3cb280[_0xc5c3('0x13c')]||0x9c4;_0x1dcd8a['XMD-AMDGREETING']=_0x3cb280[_0xc5c3('0x13d')]||0x5dc;_0x1dcd8a[_0xc5c3('0x13e')]=_0x3cb280[_0xc5c3('0x13f')]||0x320;_0x1dcd8a[_0xc5c3('0x140')]=_0x3cb280[_0xc5c3('0x141')]||0x1388;_0x1dcd8a[_0xc5c3('0x142')]=_0x3cb280[_0xc5c3('0x143')]||0x64;_0x1dcd8a[_0xc5c3('0x144')]=_0x3cb280['dialAMDBetweenWordsSilence']||0x32;_0x1dcd8a['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x3cb280['dialAMDMaximumNumberOfWords']||0x3;_0x1dcd8a[_0xc5c3('0x145')]=_0x3cb280[_0xc5c3('0x146')]||0x100;_0x1dcd8a[_0xc5c3('0x147')]=_0x3cb280[_0xc5c3('0x148')]||0x1388;}if(_0x3cb280['type']===_0xc5c3('0x4e')){_0x1dcd8a[_0xc5c3('0x149')]=_0x3076f3[_0xc5c3('0xbd')];}else{_0x1dcd8a['XMD-CAMPAIGNID']=_0x3076f3['CampaignId'];}for(var _0x419178 in _0x3076f3['Contact']){if(_0x3076f3[_0xc5c3('0x131')]['hasOwnProperty'](_0x419178)){if(isNotNull(_0x3076f3['Contact'][_0x419178])&&_0x419178!=='id'&&_0x419178!=='tags'&&_0x419178!==_0xc5c3('0x14a')&&_0x419178!=='updatedAt'){_0x1dcd8a[util[_0xc5c3('0x6c')](_0xc5c3('0x14b'),_0xc5c3('0x14c'),_['toUpper'](_0x419178))]=_0x3076f3[_0xc5c3('0x131')][_0x419178];}}}var _0x2a5382=_0xd04ed2[_0xc5c3('0x106')](_0x3cb280['Trunk'])?getCallerId(_0x3cb280[_0xc5c3('0x6a')]['callerid'],_0x3cb280['dialOriginateCallerIdName'],_0x3cb280['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x3cb280[_0xc5c3('0x59')],_0x3cb280[_0xc5c3('0x14d')]):_0x3cb280[_0xc5c3('0x59')]):getCallerId(_[_0xc5c3('0x95')](_0x3cb280[_0xc5c3('0x14e')])?_0x3cb280[_0xc5c3('0x6a')][_0xc5c3('0x6b')]:_0x3cb280[_0xc5c3('0x14e')][_0xc5c3('0x6b')],_0x3cb280['dialOriginateCallerIdName'],_0x3cb280[_0xc5c3('0x14d')]>0x0?getCallerIdRandom(_0x3cb280[_0xc5c3('0x59')],_0x3cb280['dialRandomLastDigitCallerIdNumber']):_0x3cb280[_0xc5c3('0x59')]);if(_0x2a5382){_0x1dcd8a[_0xc5c3('0x14f')]=_0xd04ed2[_0xc5c3('0x25')][_0x1d4dc4]['originatecalleridname']=extractCalleridName(_0x2a5382);_0x1dcd8a[_0xc5c3('0x150')]=_0xd04ed2[_0xc5c3('0x25')][_0x1d4dc4]['originatecalleridnum']=extractCalleridNumber(_0x2a5382);}return ami['Action']({'actionid':_0x1d4dc4,'action':_0xc5c3('0x12f'),'channel':_0xd04ed2['isTrunkReachable'](_0x3cb280[_0xc5c3('0x6a')])?util[_0xc5c3('0x6c')](_0xc5c3('0x151'),_0x3cb280['Trunk'][_0xc5c3('0x3e')],isNotNull(_0x3cb280[_0xc5c3('0x152')])?_0x3cb280[_0xc5c3('0x152')][_0xc5c3('0x153')]()||'':'',_0x3cb280[_0xc5c3('0x154')]>0x0?_0x3076f3[_0xc5c3('0x131')][_0xc5c3('0x132')][_0xc5c3('0x155')](_0x3cb280['dialCutDigit']):_0x3076f3[_0xc5c3('0x131')][_0xc5c3('0x132')]):util['format']('SIP/%s/%s%s',_[_0xc5c3('0x95')](_0x3cb280[_0xc5c3('0x14e')])?_0x3cb280[_0xc5c3('0x6a')][_0xc5c3('0x3e')]:_0x3cb280[_0xc5c3('0x14e')][_0xc5c3('0x3e')],isNotNull(_0x3cb280[_0xc5c3('0x152')])?_0x3cb280[_0xc5c3('0x152')][_0xc5c3('0x153')]()||'':'',_0x3cb280[_0xc5c3('0x154')]>0x0?_0x3076f3[_0xc5c3('0x131')]['phone']['substring'](_0x3cb280[_0xc5c3('0x154')]):_0x3076f3[_0xc5c3('0x131')]['phone']),'callerid':_0x2a5382,'Exten':_0xc5c3('0xc9'),'Context':'from-sip','Priority':'1','variable':_0x1dcd8a,'timeout':(_0x3cb280[_0xc5c3('0x156')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1d4dc4})[_0xc5c3('0xa1')](function(_0x3edb2e){return _0xe170ca(_0x3edb2e);})[_0xc5c3('0x99')](function(_0x20a63f){_0x3cb280[_0xc5c3('0x157')]+=0x1;var _0x23ec0c=new History(_0xd04ed2[_0xc5c3('0x25')][_0x1d4dc4]);logger[_0xc5c3('0x7e')](util['format'](_0xc5c3('0x158'),JSON['stringify'](_0x20a63f)));_0x23ec0c['state']=0xe;_0x23ec0c['statedesc']=_0xc5c3('0x159');_0x23ec0c[_0xc5c3('0x91')]=moment()[_0xc5c3('0x6c')](_0xc5c3('0xe3'));_0x23ec0c['endtime']=_0x23ec0c['starttime'];_0xd04ed2['createHistory'](_0x23ec0c)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x15a')));_0xd04ed2[_0xc5c3('0xb0')](_0x23ec0c)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x15a')))[_0xc5c3('0x1e')](function(){delete _0xd04ed2['actions'][_0x1d4dc4];return _0x4843bf(msgResponse(_0xc5c3('0x12f'),_0xc5c3('0x15b'),_0xc5c3('0x15c')));});});});};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x32')]=function(_0x247609){var _0x5960f1=this['actions'][_0x247609[_0xc5c3('0xf1')]];var _0x2dab48=this;if(_0x5960f1){delete this[_0xc5c3('0x25')][_0x247609[_0xc5c3('0xf1')]];_0x5960f1[_0xc5c3('0xe9')]=moment()[_0xc5c3('0x6c')](_0xc5c3('0xe3'));var _0x2a6629=_0x5960f1[_0xc5c3('0x4d')]===_0xc5c3('0x6f')?this[_0xc5c3('0x21')][_0x5960f1[_0xc5c3('0x9c')]]:this[_0xc5c3('0x20')][_0x5960f1[_0xc5c3('0x15d')]()];if(!this[_0xc5c3('0xc1')](_0x247609['response'])){this['updateOriginated'](_0x2a6629);return this[_0xc5c3('0x15e')](_0x5960f1,_0x2a6629,_0x247609)[_0xc5c3('0xa1')](function(_0x213fe5){})['catch'](loggerCatch(_0xc5c3('0x15f')));}else{this[_0xc5c3('0x27')][_0x247609[_0xc5c3('0xc5')]]=_0x5960f1;}}};Dialer[_0xc5c3('0x1c')]['checkRetriveMax']=function(_0x21fd40,_0x1039dc,_0x4d843f){var _0x24258e=new History(_0x1039dc);if(_0x24258e[_0xc5c3('0x160')]+_0x24258e[_0xc5c3('0x161')]+_0x24258e[_0xc5c3('0x162')]>=_0x4d843f[_0xc5c3('0x163')]-0x1){return!![];}switch(_0x21fd40){case 0x3:if(_0x24258e['countnoanswerretry']>=_0x4d843f[_0xc5c3('0x164')]-0x1){return!![];}else{this[_0xc5c3('0xa9')]({'active':![],'countnoanswerretry':_0x24258e[_0xc5c3('0x162')]+=0x1,'scheduledat':moment()['add'](_0x4d843f['dialNoAnswerRetryFrequency'],_0xc5c3('0x165'))[_0xc5c3('0x6c')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x24258e['ContactId'],'ListId':_0x24258e['ListId'],'VoiceQueueId':_0x24258e['VoiceQueueId']||undefined,'CampaignId':_0x24258e[_0xc5c3('0xbe')]||undefined})[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x166')));}break;case 0x5:if(_0x24258e['countbusyretry']>=_0x4d843f[_0xc5c3('0x167')]-0x1){return!![];}else{this[_0xc5c3('0xa9')]({'active':![],'countbusyretry':_0x24258e[_0xc5c3('0x160')]+=0x1,'scheduledat':moment()[_0xc5c3('0x168')](_0x4d843f[_0xc5c3('0x169')],_0xc5c3('0x165'))[_0xc5c3('0x6c')](_0xc5c3('0xe3')),'ContactId':_0x24258e['ContactId'],'ListId':_0x24258e[_0xc5c3('0xbb')],'VoiceQueueId':_0x24258e[_0xc5c3('0xbd')]||undefined,'CampaignId':_0x24258e[_0xc5c3('0xbe')]||undefined})[_0xc5c3('0x99')](loggerCatch('[rescheduleContact]\x20[Busy]'));}break;case 0x8:if(_0x24258e[_0xc5c3('0x161')]>=_0x4d843f[_0xc5c3('0x16a')]-0x1){return!![];}else{this[_0xc5c3('0xa9')]({'active':![],'countcongestionretry':_0x24258e['countcongestionretry']+=0x1,'scheduledat':moment()[_0xc5c3('0x168')](_0x4d843f[_0xc5c3('0x16b')],_0xc5c3('0x165'))[_0xc5c3('0x6c')](_0xc5c3('0xe3')),'ContactId':_0x24258e[_0xc5c3('0xba')],'ListId':_0x24258e[_0xc5c3('0xbb')],'VoiceQueueId':_0x24258e[_0xc5c3('0xbd')]||undefined,'CampaignId':_0x24258e[_0xc5c3('0xbe')]||undefined})['catch'](loggerCatch(_0xc5c3('0x16c')));}break;default:return!![];}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x15e')]=function(_0x51d126,_0x284019,_0x44f614){var _0x57a6cb=this;var _0x431e2f=new History(_0x51d126);return new BPromise(function(_0x6d582d,_0x266709){if(_[_0xc5c3('0x72')](_0x284019)&&_0xc5c3('0x12e')!==typeof _0x284019){return _0x266709(msgResponse(_0xc5c3('0x16d'),'Failure',_0xc5c3('0x16e')));}if(_[_0xc5c3('0x72')](_0x44f614)&&_0xc5c3('0x12e')!==typeof _0x44f614){return _0x266709(msgResponse(_0xc5c3('0x16d'),_0xc5c3('0x10b'),_0xc5c3('0x16f')));}switch(_0x44f614[_0xc5c3('0x170')]){case'0':_0x284019[_0xc5c3('0x60')]+=0x1;_0x431e2f[_0xc5c3('0x8f')]=0x0;_0x431e2f[_0xc5c3('0x90')]='NoSuchNumber';_0x57a6cb[_0xc5c3('0xb2')](_0x431e2f)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x171')));if(_0x57a6cb['checkRetriveMax'](0x0,_0x51d126,_0x284019)){if(_0x431e2f['countbusyretry']+_0x431e2f['countcongestionretry']+_0x431e2f[_0xc5c3('0x162')]>=_0x284019[_0xc5c3('0x163')]){_0x57a6cb[_0xc5c3('0x172')](_0x431e2f,_0x6d582d,_0x266709,_0xc5c3('0x173'));}else{_0x57a6cb[_0xc5c3('0x174')](_0x431e2f,_0x6d582d,_0x266709,_0xc5c3('0x173'));}}break;case'3':_0x284019[_0xc5c3('0x175')]+=0x1;_0x431e2f['state']=0x3;_0x431e2f[_0xc5c3('0x90')]=_0xc5c3('0x176');_0x431e2f[_0xc5c3('0x162')]+=0x1;_0x431e2f[_0xc5c3('0x177')]+=0x1;_0x57a6cb[_0xc5c3('0xb2')](_0x431e2f)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x178')));if(_0x57a6cb['checkRetriveMax'](0x3,_0x51d126,_0x284019)){if(_0x431e2f[_0xc5c3('0x162')]>=_0x284019['dialNoAnswerMaxRetry']){_0x57a6cb['createStateFinal'](_0x431e2f,_0x6d582d,_0x266709,_0xc5c3('0x179'));}else{_0x57a6cb['stateGlobal'](_0x431e2f,_0x6d582d,_0x266709,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x284019[_0xc5c3('0x17a')]+=0x1;_0x431e2f[_0xc5c3('0x8f')]=0x5;_0x431e2f[_0xc5c3('0x90')]='Busy';_0x431e2f['countbusyretry']+=0x1;_0x431e2f[_0xc5c3('0x177')]+=0x1;_0x57a6cb[_0xc5c3('0xb2')](_0x431e2f)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x17b')));if(_0x57a6cb[_0xc5c3('0x17c')](0x5,_0x51d126,_0x284019)){if(_0x431e2f['countbusyretry']>=_0x284019[_0xc5c3('0x167')]){_0x57a6cb[_0xc5c3('0x174')](_0x431e2f,_0x6d582d,_0x266709,_0xc5c3('0x17d'));}else{_0x57a6cb['stateGlobal'](_0x431e2f,_0x6d582d,_0x266709,_0xc5c3('0x17d'));}}break;case'8':_0x284019[_0xc5c3('0x5c')]+=0x1;_0x431e2f[_0xc5c3('0x8f')]=0x8;_0x431e2f[_0xc5c3('0x90')]=_0xc5c3('0x17e');_0x431e2f[_0xc5c3('0x161')]+=0x1;_0x431e2f[_0xc5c3('0x177')]+=0x1;_0x57a6cb['createHistory'](_0x431e2f)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x17f')));if(_0x57a6cb[_0xc5c3('0x17c')](0x8,_0x51d126,_0x284019)){if(_0x431e2f[_0xc5c3('0x161')]>=_0x284019[_0xc5c3('0x16a')]){_0x57a6cb[_0xc5c3('0x174')](_0x431e2f,_0x6d582d,_0x266709,'reason\x208\x20congestion');}else{_0x57a6cb[_0xc5c3('0x172')](_0x431e2f,_0x6d582d,_0x266709,_0xc5c3('0x180'));}}break;default:_0x284019['outboundUnknownCallsDay']+=0x1;_0x431e2f[_0xc5c3('0x8f')]=0xc;_0x431e2f[_0xc5c3('0x90')]=_0x44f614[_0xc5c3('0x170')];_0x57a6cb[_0xc5c3('0xb2')](_0x431e2f)[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x181')));if(_0x57a6cb[_0xc5c3('0x17c')](_0x44f614[_0xc5c3('0x170')],_0x51d126,_0x284019)){if(_0x431e2f[_0xc5c3('0x160')]+_0x431e2f['countcongestionretry']+_0x431e2f[_0xc5c3('0x162')]>=_0x284019[_0xc5c3('0x163')]){_0x57a6cb['stateGlobal'](_0x431e2f,_0x6d582d,_0x266709,_0x44f614[_0xc5c3('0x170')]);}else{_0x57a6cb[_0xc5c3('0x174')](_0x431e2f,_0x6d582d,_0x266709,_0x44f614[_0xc5c3('0x170')]);}}}});};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x172')]=function(_0x3c7ed3,_0x5c34d1,_0x4cd805,_0x376cd8){var _0x2b01e3=new Final(_0x3c7ed3);_0x2b01e3['state']=0xf;_0x2b01e3[_0xc5c3('0x90')]='Global';this[_0xc5c3('0x174')](_0x2b01e3,_0x5c34d1,_0x4cd805,_0x376cd8);};Dialer['prototype'][_0xc5c3('0x174')]=function(_0xce32f5,_0x46f81a,_0x26ed3b,_0x374398){this[_0xc5c3('0xb0')](_0xce32f5)['then'](function(_0x3ca7a0){return _0x46f81a(msgResponse(_0xc5c3('0x16d'),_0xc5c3('0x182'),_0x374398));})[_0xc5c3('0x99')](function(_0x10e620){return _0x26ed3b(msgResponse(_0xc5c3('0x183'),_0xc5c3('0x10b'),_0xc5c3('0x184')));});};Dialer['prototype']['predictive']=function(_0x41267c){var _0x364ea0=this;var _0x339fdf=_0x41267c[_0xc5c3('0x185')]/0x64;var _0x265581=_0x41267c[_0xc5c3('0x5f')]/(_0x41267c[_0xc5c3('0x5f')]+_0x41267c[_0xc5c3('0x5a')]);var _0x31d295=_0x41267c[_0xc5c3('0x50')]-_0x41267c[_0xc5c3('0x186')]-_0x41267c[_0xc5c3('0x56')]-_0x41267c['originated']-_0x41267c[_0xc5c3('0x53')];var _0xd5b4cc=(_0x41267c[_0xc5c3('0x50')]-_0x41267c['predictiveIntervalPauses'])*_0x41267c[_0xc5c3('0x187')];var _0x54099a=Math[_0xc5c3('0x188')](_0x41267c[_0xc5c3('0x189')]*_0x41267c[_0xc5c3('0x18a')]*_0x41267c['predictiveIntervalHitRate']*_0x41267c[_0xc5c3('0x68')]);if(_[_0xc5c3('0x72')](_0x41267c[_0xc5c3('0x78')])){loggerPredictive[_0xc5c3('0x74')]('[startMethodPredictive][StartProgressive][First]');if(!_[_0xc5c3('0x72')](_0x41267c[_0xc5c3('0x29')])){_0x41267c['startPredictive']=undefined;loggerPredictive[_0xc5c3('0x7e')](_0xc5c3('0x18b'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_['isUndefined'](_0x41267c['handlePredictive'])){loggerPredictive[_0xc5c3('0x7e')](_0xc5c3('0x18b'),_0xc5c3('0x18c'));clearInterval(_0x41267c[_0xc5c3('0x7a')]);_0x41267c[_0xc5c3('0x7a')]=undefined;}_0x41267c['startProgressive']=moment()[_0xc5c3('0x6c')](_0xc5c3('0xe3'));loggerPredictive[_0xc5c3('0x74')](_0xc5c3('0x18d'),_0x41267c[_0xc5c3('0x78')],_0x41267c[_0xc5c3('0x3e')]);this[_0xc5c3('0x11d')](_0x41267c,0x1);}else if(ifInterval(_0x41267c[_0xc5c3('0x18e')],_0x41267c[_0xc5c3('0x78')])){this[_0xc5c3('0x11d')](_0x41267c,0x1);loggerPredictiveCalls[_0xc5c3('0x74')]('[startMethodPredictive][StartProgressive][Loop]',_0x41267c[_0xc5c3('0x78')],_0x41267c[_0xc5c3('0x3e')]);_0x41267c['erlangCalls']=0x0;_0x41267c[_0xc5c3('0x66')]=0x0;}else if(_0x339fdf<_0x265581&&_0x41267c['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x41267c);loggerPredictive['info'](_0xc5c3('0x18f'),_0xc5c3('0x190'),_0x265581,_0xc5c3('0x78'),_0x41267c[_0xc5c3('0x3e')]);}else if(_0x31d295>_0xd5b4cc){freeVariablesPredictive(_0x41267c);loggerPredictive[_0xc5c3('0x74')](_0xc5c3('0x191'),'Agent\x20free',_0x31d295,_0xc5c3('0x192'),_0xd5b4cc);}else if(_0x54099a<_0x41267c[_0xc5c3('0x66')]&&_0x41267c[_0xc5c3('0x193')]===_0xc5c3('0x194')){freeVariablesPredictive(_0x41267c);loggerPredictive['info'](_0xc5c3('0x195'),_0xc5c3('0x196'),_0x54099a,'Drop\x20in\x20this\x20interval',_0x41267c['predictiveIntervalErlangCallsDroppedCalls'],_0xc5c3('0x78'),_0x41267c['name']);}else if(!ifInterval(_0x41267c[_0xc5c3('0x18e')],_0x41267c[_0xc5c3('0x78')])&&_[_0xc5c3('0x72')](_0x41267c[_0xc5c3('0x29')])&&!_[_0xc5c3('0x72')](_0x41267c[_0xc5c3('0x78')])){_0x41267c[_0xc5c3('0x29')]=moment()[_0xc5c3('0x6c')](_0xc5c3('0xe3'));loggerPredictive['info']('[startMethodPredictive][StartPredictive][First]',_0x41267c[_0xc5c3('0x29')],_0x41267c[_0xc5c3('0x3e')]);this[_0xc5c3('0xa6')](_0x41267c[_0xc5c3('0x18e')])[_0xc5c3('0xa1')](this[_0xc5c3('0x197')](_0x41267c))['then'](mergeDataErlangB(_0x41267c))[_0xc5c3('0xa1')](this[_0xc5c3('0x198')](_0x41267c))[_0xc5c3('0x99')](loggerCatchPredictive(_0xc5c3('0x199'),_0x41267c));}else if(!ifInterval(_0x41267c[_0xc5c3('0x18e')],_0x41267c[_0xc5c3('0x29')])){_0x41267c[_0xc5c3('0x66')]=0x0;_0x41267c['startPredictive']=moment()[_0xc5c3('0x6c')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xc5c3('0x74')]('[startMethodPredictive][StartPredictive][Repeat]',_0x41267c['startPredictive'],_0x41267c[_0xc5c3('0x3e')]);clearInterval(_0x41267c[_0xc5c3('0x7a')]);_0x41267c['handlePredictive']=undefined;this[_0xc5c3('0xa6')](_0x41267c['dialPredictiveInterval'])[_0xc5c3('0xa1')](this['getDataPredictive'](_0x41267c))[_0xc5c3('0xa1')](mergeDataErlangB(_0x41267c))[_0xc5c3('0xa1')](this[_0xc5c3('0x198')](_0x41267c))[_0xc5c3('0x99')](loggerCatchPredictive(_0xc5c3('0x199'),_0x41267c));}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x197')]=function(_0x2403f5){var _0x1ac8c1=this;return function(_0x32f9d8){return new BPromise(function(_0x2b8639,_0x967a89){_[_0xc5c3('0xb8')](_0x2403f5,_0x32f9d8[0x0]);if(checkGetDataPredictive(_0x32f9d8[0x0])){loggerPredictive[_0xc5c3('0x74')](JSON[_0xc5c3('0x49')](_0x32f9d8[0x0]));if(_0x2403f5[_0xc5c3('0x193')]===_0xc5c3('0x194')){return _0x1ac8c1[_0xc5c3('0xae')](_0x2403f5['id'])[_0xc5c3('0xa1')](function(_0x44b82f){var _0x141547=_0x2403f5['loggedIn']-_0x44b82f[0x0]['outboundQueuePauses'];var _0x3d0433=_0x2403f5[_0xc5c3('0x18e')]*0x3c;var _0x406bf8=_0x32f9d8[0x0][_0xc5c3('0x64')]+_0x32f9d8[0x0][_0xc5c3('0x63')];var _0x1b0e7d=(_0x32f9d8[0x0][_0xc5c3('0x19a')]+_0x32f9d8[0x0][_0xc5c3('0x65')]+_0x32f9d8[0x0][_0xc5c3('0xee')])/_0x32f9d8[0x0][_0xc5c3('0x69')];var _0x14636a=_0x2403f5[_0xc5c3('0x185')]/0x64;_0x2403f5[_0xc5c3('0x186')]=_0x44b82f[0x0]['outboundQueuePauses']||0x0;_0x2403f5[_0xc5c3('0x67')]=_0x1b0e7d>0x0?_0x1b0e7d:0x1;return _0x1ac8c1[_0xc5c3('0x19b')](_0x141547,_0x3d0433,_0x406bf8,_0x1b0e7d,_0x14636a);})[_0xc5c3('0xa1')](function(_0x4891d6){return _0x2b8639(_0x4891d6);})[_0xc5c3('0x99')](function(_0x37ef29){return _0x967a89(msgResponse(_0xc5c3('0x19c'),'Failure',JSON[_0xc5c3('0x49')](_0x37ef29)));});}if(_0x2403f5[_0xc5c3('0x193')]===_0xc5c3('0x19d')){return _0x1ac8c1[_0xc5c3('0xae')](_0x2403f5['id'])[_0xc5c3('0xa1')](function(_0x1bb66c){var _0x55db3a=_0x2403f5[_0xc5c3('0x50')]-_0x1bb66c[0x0][_0xc5c3('0x19e')];var _0x1659dd=_0x2403f5[_0xc5c3('0x18e')]*0x3c;var _0x43a5c5=_0x32f9d8[0x0][_0xc5c3('0x64')]+_0x32f9d8[0x0][_0xc5c3('0x63')];var _0x4d7997=(_0x32f9d8[0x0][_0xc5c3('0x19a')]+_0x32f9d8[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x32f9d8[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x32f9d8[0x0][_0xc5c3('0x69')];var _0x590ad0=_0x2403f5[_0xc5c3('0x185')]/0x64;_0x2403f5[_0xc5c3('0x186')]=_0x1bb66c[0x0][_0xc5c3('0x19e')]||0x0;_0x2403f5[_0xc5c3('0x67')]=_0x4d7997>0x0?_0x4d7997:0x1;return _0x1ac8c1['busyFactor'](_0x55db3a,_0x1659dd,_0x43a5c5,_0x4d7997,_0x590ad0);})[_0xc5c3('0xa1')](function(_0x48563c){return _0x2b8639(_0x48563c);})[_0xc5c3('0x99')](function(_0x39e5a5){return _0x967a89(msgResponse('[CatchErlangB]',_0xc5c3('0x10b'),JSON[_0xc5c3('0x49')](_0x39e5a5)));});}}else{return _0x967a89(msgResponse(_0xc5c3('0x19f'),_0xc5c3('0x10b'),'check\x20failure'));}});};};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x198')]=function(_0xb5616c){var _0x3f40d8=this;return function(){var _0x5125dd=0x0;var _0x435bc4=Math[_0xc5c3('0x188')](_0xb5616c[_0xc5c3('0x1a0')]*0x3e8);if(_0x435bc4>0x0){_0x435bc4=_0x435bc4<0x64?0x64:_0x435bc4;loggerPredictive[_0xc5c3('0x74')]('[startMethodPredictive]',_0x435bc4);_0xb5616c[_0xc5c3('0x7a')]=setInterval(function(){_0x3f40d8[_0xc5c3('0x7a')](_0xb5616c);loggerPredictiveCalls[_0xc5c3('0x74')](_0xc5c3('0x1a1'),_0x5125dd+=0x1);},_0x435bc4);}else{loggerPredictive[_0xc5c3('0x74')](_0xc5c3('0x1a2'),'Failure\x20',_0x435bc4);}};};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x1a3')]=function(_0x3fce1e,_0x566b37){var _0x117fc1=this;return function(_0x113d31){if(_[_0xc5c3('0x47')](_0x113d31)){if(_['isNil'](_0x566b37[_0xc5c3('0xbc')])||!_0x566b37[_0xc5c3('0x1a4')]){if(_0x3fce1e[_0xc5c3('0x122')]==='booked'){_0x3fce1e[_0xc5c3('0xf6')]=_[_0xc5c3('0x72')](_0x3fce1e[_0xc5c3('0xf6')])?!![]:_0x3fce1e['queueStatusComplete'];var _0x97aa99=uuid['v4']();_0x117fc1[_0xc5c3('0x25')][_0x97aa99]=new Action(_0x3fce1e,_0x566b37,_0x97aa99);loggerBooked[_0xc5c3('0x74')](_0xc5c3('0x1a5'),_0x97aa99,_0xc5c3('0x1a6'),JSON['stringify'](_0x3fce1e[_0xc5c3('0xf6')]),_0xc5c3('0x1a7'),_0x3fce1e[_0xc5c3('0x3e')]);if(_0x3fce1e[_0xc5c3('0xf6')]){_0x3fce1e[_0xc5c3('0xf6')]=![];_0x117fc1[_0xc5c3('0x2b')][_0x117fc1[_0xc5c3('0x25')][_0x97aa99][_0xc5c3('0x9c')]]=[];ami[_0xc5c3('0x96')]({'actionid':_0x97aa99,'action':_0xc5c3('0x1a8'),'queue':_0x3fce1e[_0xc5c3('0x3e')]})['catch'](function(_0x20d9bd){_0x117fc1[_0xc5c3('0x9b')](_0x3fce1e);_0x117fc1['rescheduleContact']({'active':![],'ContactId':_0x117fc1[_0xc5c3('0x25')][_0x97aa99][_0xc5c3('0xba')],'ListId':_0x117fc1[_0xc5c3('0x25')][_0x97aa99][_0xc5c3('0xbb')],'VoiceQueueId':_0x117fc1['actions'][_0x97aa99][_0xc5c3('0xbd')]||undefined,'CampaignId':_0x117fc1[_0xc5c3('0x25')][_0x97aa99][_0xc5c3('0xbe')]||undefined})[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x1a9')));delete _0x117fc1[_0xc5c3('0x25')][_0x97aa99];});}else{loggerBooked['info']('[booked][checkContactBlack][else]',JSON[_0xc5c3('0x49')](_0x3fce1e[_0xc5c3('0xf6')]),_0xc5c3('0x1a7'),_0x3fce1e[_0xc5c3('0x3e')]);_0x117fc1[_0xc5c3('0x9b')](_0x3fce1e);_0x117fc1[_0xc5c3('0xa9')]({'active':![],'ContactId':_0x117fc1[_0xc5c3('0x25')][_0x97aa99]['ContactId'],'ListId':_0x117fc1['actions'][_0x97aa99][_0xc5c3('0xbb')],'VoiceQueueId':_0x117fc1['actions'][_0x97aa99][_0xc5c3('0xbd')]||undefined,'CampaignId':_0x117fc1['actions'][_0x97aa99][_0xc5c3('0xbe')]||undefined})[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0x1a9')));delete _0x117fc1[_0xc5c3('0x25')][_0x97aa99];}}else{return _0x117fc1[_0xc5c3('0x12d')](_0x3fce1e,_0x566b37);}}else{if(getDiff(_0x566b37['scheduledat'])<_0x3fce1e[_0xc5c3('0x1aa')]*0x3c){_0x117fc1[_0xc5c3('0x7b')][_0xc5c3('0xf8')](_0x566b37['id'])['finally'](function(){_0x117fc1[_0xc5c3('0x9b')](_0x3fce1e);});}else{_0x3fce1e['outboundReCallsDay']+=0x1;_0x117fc1[_0xc5c3('0x9b')](_0x3fce1e);if(_0x3fce1e[_0xc5c3('0x1ab')]){_0x117fc1[_0xc5c3('0xa9')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x566b37[_0xc5c3('0xba')],'ListId':_0x566b37['ListId'],'VoiceQueueId':_0x566b37[_0xc5c3('0xbd')]||undefined,'CampaignId':_0x566b37[_0xc5c3('0xbe')]||undefined})[_0xc5c3('0x99')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x117fc1[_0xc5c3('0xb2')](createObjHistory(_0x3fce1e,_0x566b37,_0xc5c3('0x1ac'),0x17,'RecallInQueue'))[_0xc5c3('0x99')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x117fc1[_0xc5c3('0xb7')](createObjHistory(_0x3fce1e,_0x566b37,_0xc5c3('0x1ad'),0x16,_0xc5c3('0x1ae')),_0xc5c3('0x1af'),_0xc5c3('0x1b0'));}}}}else{_0x3fce1e['outboundBlacklistCallsDay']+=0x1;_0x117fc1[_0xc5c3('0xb7')](createObjHistory(_0x3fce1e,_0x566b37,'BLACKLIST',0xd,'Blacklist'),'[Originate][historyBlacklist]',_0xc5c3('0x1b1'));throw _0xc5c3('0x1b2');}};};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x121')]=function(_0x1e6d56){var _0x3b7b6e=this;var _0x187965=[];var _0x4fbfe8=_0x1e6d56[_0xc5c3('0x1b3')]-_0x1e6d56[_0xc5c3('0x82')]-_0x1e6d56['temp'];emitCampaignSummary(_0x1e6d56);if(_0x4fbfe8>0x0){if(_0x4fbfe8>this[_0xc5c3('0x24')]){_0x4fbfe8=this['maxNumberOriginate'];}_0x1e6d56[_0xc5c3('0x1b4')]+=_0x4fbfe8;this[_0xc5c3('0xad')](_0x1e6d56['id'],_0x4fbfe8,_0x1e6d56[_0xc5c3('0x1b5')])['then'](function(_0x13b871){_0x1e6d56[_0xc5c3('0x1b4')]-=_0x4fbfe8;_0x1e6d56['temp']=_0x1e6d56[_0xc5c3('0x1b4')]>0x0?_0x1e6d56[_0xc5c3('0x1b4')]:0x0;if(!checkContactEmpty(_0x13b871)){_0x1e6d56[_0xc5c3('0x40')]=_0xc5c3('0x88');logger[_0xc5c3('0x74')](_0xc5c3('0x1b6')+_0x1e6d56['name']);}else{_0x1e6d56['originated']+=_0x13b871[_0xc5c3('0x80')];_0x1e6d56['message']='RUNNING';for(var _0x485afd=0x0;_0x485afd<_0x13b871[_0xc5c3('0x80')];_0x485afd+=0x1){_0x1e6d56[_0xc5c3('0x1b7')]+=0x1;if(_[_0xc5c3('0x95')](_0x13b871[_0x485afd])||_[_0xc5c3('0x95')](_0x13b871[_0x485afd][_0xc5c3('0x131')])||_[_0xc5c3('0x95')](_0x13b871[_0x485afd][_0xc5c3('0x131')]['phone'])){_0x3b7b6e[_0xc5c3('0x1b8')](_0xc5c3('0x1b9'),_0x1e6d56,_0x13b871[_0x485afd]);}else{_0x3b7b6e['checkIsBlackListIvr'](_[_0xc5c3('0xb9')](_0x13b871[_0x485afd],[_0xc5c3('0xbe'),'Contact.phone']))[_0xc5c3('0xa1')](_0x3b7b6e[_0xc5c3('0x1a3')](_0x1e6d56,_0x13b871[_0x485afd]))[_0xc5c3('0x99')](_0x3b7b6e[_0xc5c3('0xb5')](_0xc5c3('0x1ba'),_0x1e6d56));}}}})[_0xc5c3('0x99')](loggerGetContactDialer(_0xc5c3('0x1bb'),_0x1e6d56,_0x4fbfe8));}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x11d')]=function(_0x39c77a,_0x2099f2){var _0x1d9bbd=this;var _0xecfebb=[];var _0xab129c=_0x2099f2>=0x1?_0x2099f2:0x1;var _0xd0e5db=[];if(_0x39c77a[_0xc5c3('0x122')]===_0xc5c3('0x9')){_0xab129c=0x1;}var _0x35a0f7=Math[_0xc5c3('0x188')](_0x39c77a['available']*_0xab129c)-_0x39c77a[_0xc5c3('0x82')]-_0x39c77a[_0xc5c3('0x1b4')];emitVoiceQueueSummary(_0x39c77a);if(_0x39c77a['dialLimitQueue']>0x0){var _0x438b03=_0x39c77a[_0xc5c3('0x1bc')]-_0x39c77a[_0xc5c3('0x82')]-_0x39c77a['talking']-_0x39c77a[_0xc5c3('0x1b4')]-_0x39c77a['pTalking'];if(_0x35a0f7>_0x438b03){_0x35a0f7=_0x438b03;}}if(_0x35a0f7>0x0){if(_0x39c77a['dialMethod']==='booked'){_0x35a0f7=0x1;}if(_0x35a0f7>this['maxNumberOriginate']){_0x35a0f7=this[_0xc5c3('0x24')];}_0x39c77a[_0xc5c3('0x1b4')]+=_0x35a0f7;for(var _0x46dde9 in this[_0xc5c3('0x22')]){if(this[_0xc5c3('0x22')][_0xc5c3('0x81')](_0x46dde9)){if(this[_0xc5c3('0x22')][_0x46dde9][_0xc5c3('0x8f')]===_0xc5c3('0x1bd')&&this[_0xc5c3('0x22')][_0x46dde9][_0xc5c3('0x97')]===_0xc5c3('0xc3')){_0xecfebb['push'](this[_0xc5c3('0x22')][_0x46dde9]['id']);}}}this[_0xc5c3('0xab')](_0x39c77a['id'],_0xecfebb,_0x35a0f7,_0x39c77a[_0xc5c3('0x1b5')])[_0xc5c3('0xa1')](function(_0x544c1f){_0x39c77a[_0xc5c3('0x1b4')]-=_0x35a0f7;_0x39c77a[_0xc5c3('0x1b4')]=_0x39c77a['temp']>0x0?_0x39c77a[_0xc5c3('0x1b4')]:0x0;if(!checkContactEmpty(_0x544c1f)){_0x1d9bbd['countReScheduled'](_0x39c77a)[_0xc5c3('0xa1')](sendMessageReschedule(_0x39c77a))[_0xc5c3('0x99')](loggerCatch('[countReScheduled]\x20'));}else{_0x39c77a['originated']+=_0x544c1f[_0xc5c3('0x80')];_0x39c77a['message']=_0x39c77a['dialMethod']==='booked'?_0xc5c3('0x13a'):_0xc5c3('0x1be');for(var _0x100cd4=0x0;_0x100cd4<_0x544c1f[_0xc5c3('0x80')];_0x100cd4+=0x1){if(_[_0xc5c3('0x95')](_0x544c1f[_0x100cd4])||_[_0xc5c3('0x95')](_0x544c1f[_0x100cd4][_0xc5c3('0x131')])||_[_0xc5c3('0x95')](_0x544c1f[_0x100cd4]['Contact']['phone'])){_0x1d9bbd[_0xc5c3('0x1b8')](_0xc5c3('0x1b9'),_0x39c77a,_0x544c1f[_0x100cd4]);}else{_0x1d9bbd[_0xc5c3('0xa3')](_[_0xc5c3('0xb9')](_0x544c1f[_0x100cd4],[_0xc5c3('0xbd'),'Contact.phone']))[_0xc5c3('0xa1')](_0x1d9bbd[_0xc5c3('0x1a3')](_0x39c77a,_0x544c1f[_0x100cd4]))['catch'](_0x1d9bbd[_0xc5c3('0xb5')](_0xc5c3('0x1b9'),_0x39c77a));}}}})[_0xc5c3('0x99')](loggerGetContactDialer('[getContactDialer2]',_0x39c77a,_0x35a0f7));}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x7a')]=function(_0x50e17e){var _0x11ec95=this;if(_0x50e17e[_0xc5c3('0x1bc')]>0x0){var _0x53f0d6=_0x50e17e[_0xc5c3('0x1bc')]-_0x50e17e[_0xc5c3('0x82')]-_0x50e17e[_0xc5c3('0x53')];if(_0x53f0d6>0x0){this[_0xc5c3('0x1bf')](_0x50e17e);}else{loggerPredictiveCalls['info']('[handlePredictive][limitChannel]');}}else{this[_0xc5c3('0x1bf')](_0x50e17e);}};Dialer[_0xc5c3('0x1c')][_0xc5c3('0x1bf')]=function(_0x1e2cec){var _0x1e27ba=this;var _0x338702=[];_0x1e2cec[_0xc5c3('0x82')]+=0x1;for(var _0x3d18e9 in this[_0xc5c3('0x22')]){if(this[_0xc5c3('0x22')]['hasOwnProperty'](_0x3d18e9)){if(this['agents'][_0x3d18e9][_0xc5c3('0x8f')]===_0xc5c3('0x1bd')&&this[_0xc5c3('0x22')][_0x3d18e9][_0xc5c3('0x97')]===_0xc5c3('0xc3')){_0x338702['push'](this[_0xc5c3('0x22')][_0x3d18e9]['id']);}}}this[_0xc5c3('0xab')](_0x1e2cec['id'],_0x338702,0x1,_0x1e2cec[_0xc5c3('0x1b5')])[_0xc5c3('0xa1')](function(_0x1e54e7){if(!checkContactEmpty(_0x1e54e7)){checkContactLowerLimitOriginate(_0x1e2cec,0x1,0x0);_0x1e27ba[_0xc5c3('0x9f')](_0x1e2cec)['then'](sendMessageReschedule(_0x1e2cec))[_0xc5c3('0x99')](loggerCatch(_0xc5c3('0xa2')));}else{_0x1e2cec[_0xc5c3('0x40')]=_0xc5c3('0x1be');if(_[_0xc5c3('0x95')](_0x1e54e7[0x0])||_[_0xc5c3('0x95')](_0x1e54e7[0x0][_0xc5c3('0x131')])||_['isNil'](_0x1e54e7[0x0][_0xc5c3('0x131')][_0xc5c3('0x132')])){_0x1e27ba[_0xc5c3('0x1b8')]('[actionOriginate]\x20',_0x1e2cec,_0x1e54e7[0x0]);}else{_0x1e27ba[_0xc5c3('0xa3')](_[_0xc5c3('0xb9')](_0x1e54e7[0x0],[_0xc5c3('0xbd'),'Contact.phone']))[_0xc5c3('0xa1')](_0x1e27ba['checkContactBlack'](_0x1e2cec,_0x1e54e7[0x0]))['catch'](_0x1e27ba[_0xc5c3('0xb5')]('[actionOriginatePredictive]\x20',_0x1e2cec));}}})[_0xc5c3('0x99')](loggerGetContactDialer(_0xc5c3('0x1c0'),_0x1e2cec,0x1));emitVoiceQueueSummary(_0x1e2cec);};Dialer['prototype'][_0xc5c3('0x19b')]=function(_0x55930f,_0x3b317c,_0x1bc86d,_0x22d54f,_0x174509,_0x3495b6){loggerPredictive[_0xc5c3('0x74')](_0xc5c3('0x1c1'),_0xc5c3('0x1c2'),_0x55930f,_0xc5c3('0x1c3'),_0x3b317c,_0xc5c3('0x1c4'),_0x1bc86d,'\x20p\x20=\x20',_0x22d54f,_0xc5c3('0x1c5'),_0x174509);return new BPromise(function(_0x1d79fa,_0x1b7cb2){if(_0x55930f<=0x0||isNaN(_0x55930f)){return _0x1b7cb2(msgResponse(_0xc5c3('0x1c1'),_0xc5c3('0x15b'),_0xc5c3('0x1c6')+_0x55930f));}if(_0x1bc86d<=0x0||isNaN(_0x1bc86d)){return _0x1b7cb2(msgResponse(_0xc5c3('0x1c1'),'Error',_0xc5c3('0x1c7')+_0x1bc86d));}if(_0x22d54f<=0x0||isNaN(_0x22d54f)){return _0x1b7cb2(msgResponse('[abandonmentRate]',_0xc5c3('0x15b'),_0xc5c3('0x1c8')+_0x22d54f));}if(_0x3b317c<=0x0||isNaN(_0x3b317c)){return _0x1b7cb2(msgResponse(_0xc5c3('0x1c1'),'Error','interval\x20=\x20'+_0x3b317c));}if(_0x174509<=0x0||isNaN(_0x174509)){return _0x1b7cb2(msgResponse(_0xc5c3('0x1c1'),'Error',_0xc5c3('0x1c9')+_0x174509));}_0x3495b6=_0x3495b6||0x0;var _0x39af2c=0x1/_0x1bc86d;var _0x161269=0x0;var _0x284fe5=0x0;var _0x49e129=0x0;var _0x21f27d=0x0;for(var _0x47c292=0x0;_0x49e129<_0x174509;_0x47c292+=0x1){_0x284fe5=_0x47c292/_0x3b317c;_0x161269=(_0x22d54f*_0x284fe5+_0x3495b6)/_0x39af2c;_0x49e129=erlangb(_0x161269,_0x55930f);_0x21f27d=_0x161269/_0x55930f*(0x1-erlangb(_0x161269,_0x55930f));}return _0x1d79fa({'erlangCalls':_0x47c292,'erlangCallToSecond':_0x3b317c/_0x47c292,'erlangAbandonmentRate':_0x49e129,'erlangBusyFactor':_0x21f27d});});};Dialer['prototype']['busyFactor']=function(_0xfb05c3,_0x23f623,_0x39fd7d,_0x47cabe,_0x269068,_0x19148b){loggerPredictive['info'](_0xc5c3('0x1ca'),_0xc5c3('0x1c2'),_0xfb05c3,'\x20interval\x20=\x20',_0x23f623,_0xc5c3('0x1c4'),_0x39fd7d,'\x20p\x20=\x20',_0x47cabe,_0xc5c3('0x1cb'),_0x269068);return new BPromise(function(_0x24ce43,_0x507574){if(_0xfb05c3<=0x0||isNaN(_0xfb05c3)){return _0x507574(msgResponse(_0xc5c3('0x1c1'),_0xc5c3('0x15b'),_0xc5c3('0x1c6')+_0xfb05c3));}if(_0x39fd7d<=0x0||isNaN(_0x39fd7d)){return _0x507574(msgResponse(_0xc5c3('0x1c1'),_0xc5c3('0x15b'),_0xc5c3('0x1c7')+_0x39fd7d));}if(_0x47cabe<=0x0||isNaN(_0x47cabe)){return _0x507574(msgResponse(_0xc5c3('0x1c1'),_0xc5c3('0x15b'),'p\x20=\x20'+_0x47cabe));}if(_0x23f623<=0x0||isNaN(_0x23f623)){return _0x507574(msgResponse(_0xc5c3('0x1c1'),_0xc5c3('0x15b'),'interval\x20=\x20'+_0x23f623));}if(_0x269068<=0x0||isNaN(_0x269068)){return _0x507574(msgResponse('[abandonmentRate]',_0xc5c3('0x15b'),_0xc5c3('0x1c9')+_0x269068));}_0x19148b=_0x19148b||0x0;var _0x2cb450=0x1/_0x39fd7d;var _0xf75965=0x0;var _0x17efa2=0x0;var _0x36fde3=0x0;var _0x2300f7=0x0;for(var _0x324165=0x0;_0x2300f7<_0x269068;_0x324165+=0x1){_0x17efa2=_0x324165/_0x23f623;_0xf75965=(_0x47cabe*_0x17efa2+_0x19148b)/_0x2cb450;_0x36fde3=erlangb(_0xf75965,_0xfb05c3);_0x2300f7=_0xf75965/_0xfb05c3*(0x1-erlangb(_0xf75965,_0xfb05c3));}return _0x24ce43({'erlangCalls':_0x324165,'erlangCallToSecond':_0x23f623/_0x324165,'erlangAbandonmentRate':_0x36fde3,'erlangBusyFactor':_0x2300f7});});};module['exports']=Dialer;
\ No newline at end of file
+var _0x1775=['bluebird','uuid','moment','md5','ioredis','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','prototype','enqueue','tail','finally','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','queuecallerabandon','bind','originateresponse','syncOriginateResponse','syncAgentComplete','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','loopCampaigns','loopClearZombieChannels','isUndefined','message','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','emit','type','outbound','strategy','available','loggedIn','sumBillable','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalLowerLimit','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','originated','Trunk','active','format','ivr','campaign:ivr:%s','predictiveIntervalAvgTalktime','info','[checkGetDataPredictive][avgTalktime]','[checkGetDataPredictive][avgHoldtime]','[checkGetDataPredictive][objIsEmpty]','[checkGetDataPredictive][obj]','[ErlangB]','merge','[freeVariablesPredictive]','handlePredictive','string','isEmpty','\x22%s\x22\x20<%s>','inspect','error','length','hasOwnProperty','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','statedesc','starttime','clearZombieChannels','[actions]','sequence','isNil','status','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','pick','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','reachable','SIP/%s','unmonitored','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','HANGUP','uniqueid','outboundAnswerCallsDay','state','membername','AMD','saveInDb','[syncHangupInAMD]','value','MACHINE','Machine','amd','[syncMachine][createHistory]','[syncMachine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','[syncMachineIvr][createHistory]','[syncMachineIvr]','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','cause-txt','Unknow','reason','agent','dialQueueProject2','dialAgiAfterHangupAgent','YYYY-MM-DD\x20HH:mm:ss','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','syncQueueCallerAbandon','droptime','responsetime','dialQueueTimeout','Drop','agiafterat','Abandoned','dropreason','CALLEREXIT','channel','locked','paused','stateinterface','actionid','idHopper','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','queueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','ContactId','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','Agent:\x20','[booked][unlock]','[unlock][syncQueueStatusComplete]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','push','Action','iftime\x20%s,%s','interval','content','indexOf','true','command','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','[syncQueueSummary]','dialGlobalInterval','dialTimezone','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','originate','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','updatedAt','%s%s','XMD-','dialRandomLastDigitCallerIdNumber','callerid','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countcongestionretry','countnoanswerretry','dialNoAnswerMaxRetry','add','dialNoAnswerRetryFrequency','minutes','[rescheduleContact][NoAnswer]','countbusyretry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','entity\x20is\x20undefine','object','[callProgressDetecting]','evt\x20is\x20undefine','[syncAgentComplete][createHistory][0]','dialGlobalMaxRetry','stateGlobal','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','countglobal','createStateFinal','reason\x203\x20ringing\x20no\x20answer','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','Congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','outboundDropCallsDayTimeout','floor','erlangCalls','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','[startMethodPredictive][StartProgressive][Date]','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][LowerLimitInterval]','Agent\x20free','agent\x20max\x20free\x20','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','[startMethodPredictive][StartPredictive][First]','averageHandleTime','getDataPredictive','startMethodPredictive','[startMethodPredictive][StartPredictive][Repeat]','outboundQueuePauses','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalPauses','abandonmentRate','[CatchErlangB]','busyFactor','[getDataPredictive]','[startMethodPredictive]','Failure\x20','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','dialRecallMeTimeout','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','Blacklist','[Originate][MoveBlacklist]','inBlackList','handleIvr','temp','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','getContactDialer','ACTIVE','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','[abandonmentRate]','\x20m\x20=\x20','\x20interval\x20=\x20','\x20Ts\x20=\x20','\x20p\x20=\x20','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','[busyFactor]','\x20Umin\x20=\x20','exports','lodash'];(function(_0x582d0b,_0x28f609){var _0x2e93e1=function(_0xb6a81c){while(--_0xb6a81c){_0x582d0b['push'](_0x582d0b['shift']());}};_0x2e93e1(++_0x28f609);}(_0x1775,0x1db));var _0x5177=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x1775[_0x19e35c];return _0x3e1fe8;};'use strict';var util=require('util');var _=require(_0x5177('0x0'));var BPromise=require(_0x5177('0x1'));var uuid=require(_0x5177('0x2'));var moment=require(_0x5177('0x3'));var rr=require('rr');var md5=require(_0x5177('0x4'));var Redis=require(_0x5177('0x5'));var config=require(_0x5177('0x6'));var logger=require(_0x5177('0x7'))(_0x5177('0x8'));var loggerBooked=require(_0x5177('0x7'))(_0x5177('0x9'));var loggerPredictive=require(_0x5177('0x7'))(_0x5177('0xa'));var loggerPredictiveCalls=require(_0x5177('0x7'))(_0x5177('0xb'));var loggerSyncQueueSummary=require(_0x5177('0x7'))(_0x5177('0xc'));var ami=require(_0x5177('0xd'));config[_0x5177('0xe')]=_[_0x5177('0xf')](config[_0x5177('0xe')],{'host':_0x5177('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var cmHopper=require(_0x5177('0x11'));var cmHopperFinal=require(_0x5177('0x12'));var cmHopperHistory=require(_0x5177('0x13'));var cmHopperBlack=require(_0x5177('0x14'));var voiceQueueRt=require(_0x5177('0x15'));var Action=require('./action');var History=require(_0x5177('0x16'));var Final=require(_0x5177('0x17'));var AgentComplete=require(_0x5177('0x18'));var QueueCallerAbandon=require(_0x5177('0x19'));var Hangup=require(_0x5177('0x1a'));var ipAgi=process[_0x5177('0x1b')][_0x5177('0x1c')]||_0x5177('0x1d');var strategy={'rrmemory':_0x5177('0x1e'),'roundrobin':_0x5177('0x1f')};var Sequence=function(){};Sequence[_0x5177('0x20')][_0x5177('0x21')]=function(_0x29cd2c){this[_0x5177('0x22')]=this[_0x5177('0x22')]?this[_0x5177('0x22')][_0x5177('0x23')](_0x29cd2c):_0x29cd2c();};function Dialer(_0x7dba6f,_0xe6dcf6){this['sequence']=new Sequence();this[_0x5177('0x24')]=_0xe6dcf6;this[_0x5177('0x25')]=_0x7dba6f[_0x5177('0x25')];this[_0x5177('0x26')]=_0x7dba6f['campaigns'];this[_0x5177('0x27')]=_0x7dba6f[_0x5177('0x27')];this[_0x5177('0x28')]=_0x7dba6f['trunks'];this[_0x5177('0x29')]=config['maxNumberOriginate']||0x2;this[_0x5177('0x2a')]={};this[_0x5177('0x2b')]={};this[_0x5177('0x2c')]={};this[_0x5177('0x2d')]={};this[_0x5177('0x2e')]={};this[_0x5177('0x2f')]={};this[_0x5177('0x30')]={};this[_0x5177('0x31')]={};this[_0x5177('0x32')]={};this[_0x5177('0x33')]={};ami['on'](_0x5177('0x34'),this[_0x5177('0x35')]['bind'](this));ami['on'](_0x5177('0x36'),this['syncQueueCallerAbandon'][_0x5177('0x37')](this));ami['on'](_0x5177('0x38'),this[_0x5177('0x39')][_0x5177('0x37')](this));ami['on']('agentcomplete',this[_0x5177('0x3a')]['bind'](this));ami['on']('custom:queuesummary',this[_0x5177('0xc')][_0x5177('0x37')](this));ami['on']('hangup',this[_0x5177('0x3b')]['bind'](this));ami['on'](_0x5177('0x3c'),this[_0x5177('0x3d')]['bind'](this));ami['on'](_0x5177('0x3e'),this[_0x5177('0x3f')][_0x5177('0x37')](this));ami['on'](_0x5177('0x40'),this[_0x5177('0x41')][_0x5177('0x37')](this));ami['on']('queuestatuscomplete',this['syncQueueStatusComplete'][_0x5177('0x37')](this));this[_0x5177('0x42')]();this[_0x5177('0x43')]();}function isNotNull(_0x174f7a){return _0x174f7a!==null&&!_[_0x5177('0x44')](_0x174f7a);}function checkIsLoggedIn(_0x8134f9,_0x31eb9f){return function(){if(_0x31eb9f<=0x0){_0x8134f9[_0x5177('0x45')]='AGENTS_NOT_LOGGED';throw _0x8134f9[_0x5177('0x46')]+_0x5177('0x47');}};}function isActive(_0x4f3416){return _0x4f3416;}function checkIsActive(_0x32bea9,_0x5e4c48){return function(){if(!isActive(_0x5e4c48)){_0x32bea9[_0x5177('0x45')]=_0x5177('0x48');throw _0x32bea9[_0x5177('0x46')]+'\x20NOT\x20Active';}};}function checkInterval(_0x4f70df){return function(){if(!isNotNull(_0x4f70df[_0x5177('0x49')])){_0x4f70df[_0x5177('0x45')]=_0x5177('0x4a');throw _0x4f70df[_0x5177('0x46')]+_0x5177('0x4b');}if(!isNotNull(_0x4f70df[_0x5177('0x49')][_0x5177('0x4c')])){_0x4f70df[_0x5177('0x45')]='INTERVAL_IS_NULL';throw _0x4f70df[_0x5177('0x46')]+_0x5177('0x4b');}if(!isNotNull(_['isEmpty'](_0x4f70df[_0x5177('0x49')][_0x5177('0x4c')]))){_0x4f70df[_0x5177('0x45')]=_0x5177('0x4a');throw _0x4f70df[_0x5177('0x46')]+_0x5177('0x4b');}};}function msgResponse(_0x4eaed4,_0x40c607,_0x1cb4a0){return{'action':_0x4eaed4,'response':_0x40c607,'message':_0x1cb4a0};}function myreject(_0x28b1d5){return function(_0x2e2cc2){return _0x28b1d5(msgResponse(_0x5177('0x4d'),_0x5177('0x4e'),JSON[_0x5177('0x4f')](_0x2e2cc2)));};}function getSeconds(_0x5a5a33,_0x257350){var _0x2ff13b=moment(_0x5a5a33)['milliseconds'](0x0);var _0x486dd5=moment(_0x257350)[_0x5177('0x50')](0x0);return _0x2ff13b[_0x5177('0x51')](_0x486dd5,_0x5177('0x52'));}function emit(_0x182c78,_0x3285c3,_0x1ea3be){io['to'](_0x182c78)[_0x5177('0x53')](_0x3285c3,_0x1ea3be);}function emitVoiceQueueSummary(_0x24fd92){if(_0x24fd92[_0x5177('0x54')]===_0x5177('0x55')){var _0x16fabc={'id':_0x24fd92['id'],'name':_0x24fd92[_0x5177('0x46')],'strategy':_0x24fd92[_0x5177('0x56')],'answered':_0x24fd92['answered'],'available':_0x24fd92[_0x5177('0x57')],'loggedIn':_0x24fd92[_0x5177('0x58')],'pTalking':_0x24fd92['pTalking'],'sumBillable':_0x24fd92[_0x5177('0x59')],'sumDuration':_0x24fd92['sumDuration'],'sumHoldTime':_0x24fd92[_0x5177('0x5a')]||0x0,'talking':_0x24fd92[_0x5177('0x5b')],'total':_0x24fd92[_0x5177('0x5c')],'type':_0x24fd92['type'],'unmanaged':_0x24fd92['unmanaged'],'abandoned':_0x24fd92[_0x5177('0x5d')],'waiting':_0x24fd92[_0x5177('0x5e')],'loggedInDb':_0x24fd92[_0x5177('0x5f')],'dialActive':_0x24fd92[_0x5177('0x60')],'dialMethod':_0x24fd92[_0x5177('0x61')],'dialOriginateCallerIdName':_0x24fd92[_0x5177('0x62')],'dialOriginateCallerIdNumber':_0x24fd92[_0x5177('0x63')],'dialOriginateTimeout':_0x24fd92[_0x5177('0x64')],'dialPrefix':_0x24fd92['dialPrefix'],'outboundAnswerAgiCallsDay':_0x24fd92[_0x5177('0x65')],'outboundAnswerCallsDay':_0x24fd92['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x24fd92['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x24fd92[_0x5177('0x66')],'outboundCongestionCallsDay':_0x24fd92[_0x5177('0x67')],'outboundDropCallsDayACS':_0x24fd92['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x24fd92[_0x5177('0x68')],'outboundDropCallsDayTimeout':_0x24fd92['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x24fd92['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x24fd92[_0x5177('0x69')],'outboundOriginateFailureCallsDay':_0x24fd92[_0x5177('0x6a')],'outboundReCallsDay':_0x24fd92[_0x5177('0x6b')],'outboundRejectCallsDay':_0x24fd92[_0x5177('0x6c')],'outboundUnknownCallsDay':_0x24fd92[_0x5177('0x6d')],'predictiveIntervalAnsweredCalls':_0x24fd92[_0x5177('0x6e')],'predictiveIntervalAvgHoldtime':_0x24fd92[_0x5177('0x6f')],'predictiveIntervalAvgTalktime':_0x24fd92['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x24fd92['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x24fd92[_0x5177('0x70')],'predictiveIntervalErlangCalls':_0x24fd92['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x24fd92[_0x5177('0x71')],'predictiveIntervalHitRate':_0x24fd92[_0x5177('0x72')],'predictiveIntervalLowerLimit':_0x24fd92[_0x5177('0x73')],'predictiveIntervalMultiplicativeFactor':_0x24fd92[_0x5177('0x74')],'predictiveIntervalPauses':_0x24fd92['predictiveIntervalPauses'],'predictiveIntervalTotalCalls':_0x24fd92[_0x5177('0x75')],'message':_0x24fd92[_0x5177('0x45')],'originated':_0x24fd92[_0x5177('0x76')]};if(_0x24fd92[_0x5177('0x77')]){_0x16fabc[_0x5177('0x77')]={'id':_0x24fd92[_0x5177('0x77')]['id'],'name':_0x24fd92[_0x5177('0x77')][_0x5177('0x46')],'active':_0x24fd92[_0x5177('0x77')][_0x5177('0x78')],'callerid':_0x24fd92[_0x5177('0x77')]['callerid']};}if(_0x24fd92[_0x5177('0x49')]){_0x16fabc['Interval']={'id':_0x24fd92['Interval']['id'],'name':_0x24fd92['Interval'][_0x5177('0x46')]};}var _0x2ce71a=md5(JSON['stringify'](_0x16fabc));if(_0x24fd92[_0x5177('0x4')]!==_0x2ce71a){_0x24fd92[_0x5177('0x4')]=_0x2ce71a;emit(util[_0x5177('0x79')]('voice:queue:%s',_0x16fabc[_0x5177('0x46')]),'voice_queue:save',_0x16fabc);}}}function emitCampaignSummary(_0x52b5e2){if(_0x52b5e2['type']===_0x5177('0x7a')){emit(util[_0x5177('0x79')](_0x5177('0x7b'),_0x52b5e2['name']),'campaign:save',_0x52b5e2);}}function checkGetDataPredictive(_0x42b827){if(isNotNull(_0x42b827)){if(!_['isEmpty'](_0x42b827)){if(_0x42b827[_0x5177('0x75')]>0x0){if(!_[_0x5177('0x44')](_0x42b827[_0x5177('0x7c')])&&_0x42b827[_0x5177('0x7c')]>0x0){return!![];}else{loggerPredictive[_0x5177('0x7d')](_0x5177('0x7e'),JSON[_0x5177('0x4f')](_0x42b827));}if(!_[_0x5177('0x44')](_0x42b827[_0x5177('0x6f')])&&_0x42b827[_0x5177('0x6f')]>0x0){return!![];}else{loggerPredictive[_0x5177('0x7d')](_0x5177('0x7f'),JSON[_0x5177('0x4f')](_0x42b827));}}else{loggerPredictive['info']('[checkGetDataPredictive][totalCalls]',JSON[_0x5177('0x4f')](_0x42b827));}}else{loggerPredictive['info'](_0x5177('0x80'),JSON['stringify'](_0x42b827));}}else{loggerPredictive[_0x5177('0x7d')](_0x5177('0x81'),JSON[_0x5177('0x4f')](_0x42b827));}return![];}function mergeDataErlangB(_0x55a0b6){return function(_0x5be224){loggerPredictive[_0x5177('0x7d')](_0x5177('0x82'),JSON[_0x5177('0x4f')](_0x5be224));_[_0x5177('0x83')](_0x55a0b6,_0x5be224);};}function getDiff(_0x4a4758){var _0x5718a1=moment()[_0x5177('0x50')](0x0);var _0x131da7=moment(_0x4a4758)[_0x5177('0x50')](0x0);return _0x5718a1[_0x5177('0x51')](_0x131da7,'seconds');}function ifInterval(_0xc3c118,_0x143aff){if(_[_0x5177('0x44')](_0x143aff)){return![];}if(getDiff(_0x143aff)<_0xc3c118*0x3c){return!![];}else{return![];}}function freeVariablesPredictive(_0x589da8){if(isNotNull(_0x589da8)){if(!_[_0x5177('0x44')](_0x589da8[_0x5177('0x30')])){_0x589da8[_0x5177('0x30')]=undefined;loggerPredictive['info'](_0x5177('0x84'),'startProgressive',_0x589da8[_0x5177('0x46')]);}if(!_[_0x5177('0x44')](_0x589da8[_0x5177('0x2f')])){_0x589da8['startPredictive']=undefined;loggerPredictive[_0x5177('0x7d')](_0x5177('0x84'),_0x5177('0x2f'),_0x589da8[_0x5177('0x46')]);}if(!_[_0x5177('0x44')](_0x589da8[_0x5177('0x85')])){clearInterval(_0x589da8[_0x5177('0x85')]);_0x589da8[_0x5177('0x85')]=undefined;loggerPredictive['info']('[freeVariablesPredictive]','handlePredictive',_0x589da8[_0x5177('0x46')]);}}}function erlangb(_0x18222f,_0x35aa22){if(_0x35aa22===0x0){return 0x0;}var _0x75cc0e=0x1;for(var _0x2472e9=0x1;_0x2472e9<=_0x35aa22;_0x2472e9+=0x1){_0x75cc0e=0x1+_0x75cc0e*_0x2472e9/_0x18222f;}return 0x1/_0x75cc0e;}function isVoiceQueueOutbound(_0x62a68a){return _0x62a68a==='outbound';}function isNotPreview(_0x523531){return _0x523531!==_0x5177('0x24');}function isCampaignIvr(_0x23eb6e){return _0x23eb6e===_0x5177('0x7a');}function getCallerId(_0x336017,_0x123d40,_0x1b1778){if(!_[_0x5177('0x44')](_0x1b1778)&&_0x5177('0x86')===typeof _0x1b1778&&!_[_0x5177('0x87')](_0x1b1778)){if(!_['isUndefined'](_0x123d40)&&_0x5177('0x86')===typeof _0x123d40&&!_[_0x5177('0x87')](_0x123d40)){return util['format'](_0x5177('0x88'),_0x123d40,_0x1b1778);}return util[_0x5177('0x79')]('\x22%s\x22\x20<%s>',_0x1b1778,_0x1b1778);}if(!_[_0x5177('0x44')](_0x336017)&&_0x5177('0x86')===typeof _0x336017&&!_[_0x5177('0x87')](_0x336017)){return _0x336017;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x23b246,_0x400e27){return function(_0x5f5bd5){freeVariablesPredictive(_0x400e27);emitVoiceQueueSummary(_0x400e27);emitCampaignSummary(_0x400e27);loggerSyncQueueSummary['error'](_0x23b246,util[_0x5177('0x89')](_0x5f5bd5,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x4f76d7,_0x460bdb){return function(_0x53f599){loggerPredictive[_0x5177('0x8a')](_0x4f76d7,JSON[_0x5177('0x4f')](_0x53f599));freeVariablesPredictive(_0x460bdb);};}function loggerCatch(_0x5a8ada){return function(_0x2af938){logger[_0x5177('0x8a')](_0x5a8ada,util[_0x5177('0x89')](_0x2af938,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x46b63d){return _0x46b63d&&!_[_0x5177('0x44')](_0x46b63d)&&_0x46b63d[_0x5177('0x8b')]>0x0;}function decremetOriginate(_0x20d476){if(!_['isUndefined'](_0x20d476)&&_0x20d476!==null){if(_0x20d476[_0x5177('0x8c')]('originated')){if(_0x20d476['originated']>0x0){_0x20d476[_0x5177('0x76')]-=0x1;}else{logger[_0x5177('0x8a')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x5177('0x8a')](_0x5177('0x8d'));}}function checkContactLowerLimitOriginate(_0x43abdd,_0x9087e0,_0x19b587){if(_0x9087e0>_0x19b587){for(var _0x128cab=0x0;_0x128cab<_0x9087e0-_0x19b587;_0x128cab+=0x1){decremetOriginate(_0x43abdd);}}}function loggerGetContactDialer(_0xe22e2a,_0x3b26f4,_0x478d5e){return function(_0x54b28f){checkContactLowerLimitOriginate(_0x3b26f4,_0x478d5e,0x0);logger[_0x5177('0x8a')](_0xe22e2a,util[_0x5177('0x89')](_0x54b28f,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x260475){return function(_0x2d24b3){if(isNotNull(_0x2d24b3)&&isNotNull(_0x2d24b3[0x0])){if(_0x2d24b3[0x0][_0x5177('0x8e')]>0x0){_0x260475[_0x5177('0x45')]='RESCHEDULED_CONTACTS';logger[_0x5177('0x7d')](_0x5177('0x8f')+_0x260475[_0x5177('0x46')],_0x2d24b3[0x0][_0x5177('0x8e')],'contacts');}else{_0x260475[_0x5177('0x45')]=_0x5177('0x90');logger[_0x5177('0x7d')](_0x5177('0x91')+_0x260475[_0x5177('0x46')]);}}};}function notSendMessagesQueue(_0x5130e6){if(_0x5130e6[_0x5177('0x92')]){freeVariablesPredictive(_0x5130e6);if(_0x5130e6['originated']===0x0&&_0x5130e6[_0x5177('0x5b')]===0x0&&_0x5130e6[_0x5177('0x5e')]===0x0&&(_0x5130e6['pTalking']||0x0)===0x0){_0x5130e6[_0x5177('0x92')]=![];_0x5130e6[_0x5177('0x57')]=0x0;_0x5130e6[_0x5177('0x45')]=_0x5177('0x48');loggerSyncQueueSummary['error'](_0x5177('0x93'),_0x5130e6[_0x5177('0x46')],_0x5177('0x94'));}else{_0x5130e6[_0x5177('0x45')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x5177('0x8a')](_0x5177('0x93'),_0x5130e6[_0x5177('0x46')],'is\x20disactive');}emitVoiceQueueSummary(_0x5130e6);}}function notSendMessagesCampaign(_0x54b87d){if(_0x54b87d[_0x5177('0x92')]){if(_0x54b87d[_0x5177('0x76')]===0x0){_0x54b87d[_0x5177('0x92')]=![];_0x54b87d[_0x5177('0x45')]=_0x5177('0x48');loggerSyncQueueSummary[_0x5177('0x8a')](_0x5177('0x95'),_0x54b87d[_0x5177('0x46')],_0x5177('0x94'));}else{_0x54b87d['message']='IS_DISACTIVED';loggerSyncQueueSummary['error'](_0x5177('0x95'),_0x54b87d['name'],_0x5177('0x96'));}emitCampaignSummary(_0x54b87d);}}function createObjHistory(_0x3255a2,_0x56c1aa,_0x7474,_0x183393,_0x5269b0){_0x3255a2[_0x5177('0x45')]=_0x7474;var _0x10247=new Action(_0x3255a2,_0x56c1aa);var _0x41a7fa=new History(_0x10247);_0x41a7fa['state']=_0x183393;_0x41a7fa[_0x5177('0x97')]=_0x5269b0;_0x41a7fa['endtime']=_0x10247[_0x5177('0x98')];return _0x41a7fa;}Dialer[_0x5177('0x20')]['loopClearZombieChannels']=function(){var _0xe5a705=this;setInterval(function(){_0xe5a705[_0x5177('0x99')](_0xe5a705['uniqueId'],'[uniqueid]');_0xe5a705[_0x5177('0x99')](_0xe5a705['actions'],_0x5177('0x9a'));},0x32c8);};Dialer[_0x5177('0x20')]['clearZombieChannels']=function(_0x698518,_0x115be0){var _0xcbbb73=this;for(var _0x20ceb9 in _0x698518){if(_0x698518[_0x5177('0x8c')](_0x20ceb9)){this[_0x5177('0x9b')][_0x5177('0x21')](function(){if(!_[_0x5177('0x9c')](_0x698518[_0x20ceb9])){return ami['Action']({'action':_0x5177('0x9d'),'channel':_0x698518[_0x20ceb9]['channel']})[_0x5177('0x9e')](function(_0x339d5d){if(_0x339d5d[_0x5177('0x45')]===_0x5177('0x9f')){setTimeout(function(){if(_0x698518[_0x20ceb9]&&_0x698518[_0x20ceb9]['type']!==_0x5177('0x7a')){_0xcbbb73[_0x5177('0xa0')](_0xcbbb73['voiceQueues'][_0x698518[_0x20ceb9][_0x5177('0xa1')]]);logger[_0x5177('0x8a')]('[Dialer][checkChannel]',_0x115be0,_0x20ceb9,_0x698518[_0x20ceb9][_0x5177('0xa1')]);delete _0x698518[_0x20ceb9];}if(_0x698518[_0x20ceb9]&&_0x698518[_0x20ceb9]['type']===_0x5177('0x7a')){_0xcbbb73['updateOriginated'](_0xcbbb73['campaigns'][_0x698518[_0x20ceb9]['queue']]);logger[_0x5177('0x8a')](_0x5177('0xa2'),_0x115be0,_0x20ceb9,_0x698518[_0x20ceb9][_0x5177('0xa1')]);delete _0x698518[_0x20ceb9];}},0x2328);}});}});}}};Dialer['prototype'][_0x5177('0xa3')]=function(_0x3473ef){return BPromise[_0x5177('0xa4')]()[_0x5177('0xa5')](cmHopper[_0x5177('0xa3')](_0x3473ef))['catch'](loggerCatch(_0x5177('0xa6')));};Dialer[_0x5177('0x20')]['checkIsBlackList']=function(_0x29f5a6){return BPromise['resolve']()[_0x5177('0xa5')](cmHopperBlack['checkIsBlackList'](_0x29f5a6))[_0x5177('0x9e')](loggerCatch(_0x5177('0xa7')));};Dialer[_0x5177('0x20')][_0x5177('0xa8')]=function(_0x3447b9){return BPromise[_0x5177('0xa4')]()['then'](cmHopperBlack['checkIsBlackListIvr'](_0x3447b9))[_0x5177('0x9e')](loggerCatch(_0x5177('0xa9')));};Dialer[_0x5177('0x20')]['averageHandleTime']=function(_0x405b03){return BPromise[_0x5177('0xa4')]()['then'](cmHopperHistory[_0x5177('0xaa')](_0x405b03))['catch'](loggerCatch(_0x5177('0xab')));};Dialer[_0x5177('0x20')][_0x5177('0xac')]=function(_0x593262){return BPromise[_0x5177('0xa4')]()['then'](cmHopper[_0x5177('0xac')](_0x593262))[_0x5177('0x9e')](loggerCatch('[rescheduleContact]\x20'));};Dialer['prototype']['getContactDialer']=function(_0x249b0f,_0x5f4769,_0x34b17e,_0x3132f0){return BPromise[_0x5177('0xa4')]()['then'](cmHopper['getContactDialer'](_0x249b0f,_0x5f4769,_0x34b17e,_0x3132f0))['catch'](loggerCatch(_0x5177('0xad')));};Dialer[_0x5177('0x20')][_0x5177('0xae')]=function(_0x5a7df2,_0x4152f2,_0x358c97){return BPromise['resolve']()[_0x5177('0xa5')](cmHopper['getContactDialerIvr'](_0x5a7df2,_0x4152f2,_0x358c97))[_0x5177('0x9e')](loggerCatch('[getContactDialer]\x20'));};Dialer['prototype']['getVoiceQueueRtPauses']=function(_0x3940dd){return BPromise['resolve']()[_0x5177('0xa5')](voiceQueueRt[_0x5177('0xaf')](_0x3940dd))[_0x5177('0x9e')](loggerCatch(_0x5177('0xb0')));};Dialer[_0x5177('0x20')][_0x5177('0xb1')]=function(_0x580d34){return BPromise[_0x5177('0xa4')]()[_0x5177('0xa5')](cmHopper['moveContactManagedDialer'](_0x580d34))[_0x5177('0x9e')](loggerCatch(_0x5177('0xb2')));};Dialer[_0x5177('0x20')]['createHistory']=function(_0x555da1){return BPromise['resolve']()[_0x5177('0xa5')](cmHopperHistory[_0x5177('0xb3')](_0x555da1))[_0x5177('0x9e')](loggerCatch(_0x5177('0xb4')));};Dialer[_0x5177('0x20')][_0x5177('0xa0')]=function(_0x2053b1){if(!_[_0x5177('0x44')](_0x2053b1)&&_0x2053b1!==null){if(_0x2053b1[_0x5177('0x8c')](_0x5177('0x76'))){if(_0x2053b1[_0x5177('0x76')]>0x0){_0x2053b1[_0x5177('0x76')]-=0x1;}else{logger['error'](_0x5177('0xb5'));}}}else{logger['error'](_0x5177('0xb6'));}};Dialer[_0x5177('0x20')][_0x5177('0xb7')]=function(_0x5006de,_0x1868e8){var _0x15f6bd=this;return function(_0x3867c9){_0x15f6bd[_0x5177('0xa0')](_0x1868e8);logger[_0x5177('0x8a')](_0x5006de,util[_0x5177('0x89')](_0x3867c9,{'showHidden':![],'depth':null}));};};Dialer[_0x5177('0x20')][_0x5177('0xb8')]=function(_0x50b76e,_0x479948,_0x67fde4){var _0x4f5fe1={'state':0x19,'statedesc':_0x5177('0xb9')};this[_0x5177('0xa0')](_0x479948);this['saveInDb'](_[_0x5177('0x83')](_0x4f5fe1,_[_0x5177('0xba')](_0x67fde4,['ContactId',_0x5177('0xbb'),_0x5177('0xbc'),_0x5177('0xbd'),_0x5177('0xbe')])),_0x5177('0xbf'),_0x5177('0xc0'));logger[_0x5177('0x8a')](_0x50b76e);};Dialer[_0x5177('0x20')][_0x5177('0xc1')]=function(_0x8c0153){return _0x8c0153===_0x5177('0xc2');};Dialer[_0x5177('0x20')][_0x5177('0xc3')]=function(_0x4f27ec){return!_[_0x5177('0x44')](_0x4f27ec)&&_0x4f27ec&&!_[_0x5177('0x44')](_0x4f27ec[_0x5177('0x46')])&&!_['isUndefined'](_0x4f27ec[_0x5177('0x78')])&&_0x4f27ec[_0x5177('0x78')]&&(this['trunks'][util[_0x5177('0x79')]('SIP/%s',_0x4f27ec['name'])][_0x5177('0x9d')]===_0x5177('0xc4')||this[_0x5177('0x28')][util[_0x5177('0x79')](_0x5177('0xc5'),_0x4f27ec[_0x5177('0x46')])]['status']===_0x5177('0xc6'));};Dialer[_0x5177('0x20')]['saveInDb']=function(_0x1aa8ca,_0xa8114c,_0x27bfd9){this[_0x5177('0xb3')](_0x1aa8ca)[_0x5177('0x9e')](loggerCatch(_0xa8114c));this[_0x5177('0xb1')](_0x1aa8ca)[_0x5177('0x9e')](loggerCatch(_0x27bfd9));};Dialer[_0x5177('0x20')]['syncVarSet']=function(_0x193dbf){var _0x566d71=this[_0x5177('0x2d')][_0x193dbf['uniqueid']];var _0x2007d2;if(!_[_0x5177('0x9c')](_0x193dbf)&&!_[_0x5177('0x9c')](_0x193dbf[_0x5177('0xc7')])&&!_['isNil'](_0x193dbf[_0x5177('0xc7')][_0x5177('0xc8')])&&_0x193dbf[_0x5177('0xc9')]===_0x5177('0xca')&&_0x566d71){if(_0x566d71['type']!=='ivr'&&this['voiceQueues'][_0x566d71['queue']][_0x5177('0xcb')]&&_0x193dbf['value']===_0x5177('0xcc')){delete this['uniqueId'][_0x193dbf[_0x5177('0xcd')]];this['updateOriginated'](this[_0x5177('0x25')][_0x566d71[_0x5177('0xa1')]]);this[_0x5177('0x25')][_0x566d71[_0x5177('0xa1')]][_0x5177('0xce')]+=0x1;this[_0x5177('0x25')][_0x566d71[_0x5177('0xa1')]][_0x5177('0x65')]+=0x1;_0x2007d2=new Hangup(_0x566d71,_0x193dbf);_0x2007d2[_0x5177('0xcf')]=0x12;_0x2007d2[_0x5177('0x97')]='HangupInAMD';_0x2007d2[_0x5177('0xd0')]=_0x5177('0xd1');this[_0x5177('0xd2')](_0x2007d2,'[syncHangupInAMD][createHistory]',_0x5177('0xd3'));}if(_0x566d71[_0x5177('0x54')]!==_0x5177('0x7a')&&this[_0x5177('0x25')][_0x566d71[_0x5177('0xa1')]][_0x5177('0xcb')]&&_0x193dbf[_0x5177('0xd4')]===_0x5177('0xd5')){delete this[_0x5177('0x2d')][_0x193dbf[_0x5177('0xcd')]];this[_0x5177('0xa0')](this['voiceQueues'][_0x566d71[_0x5177('0xa1')]]);this[_0x5177('0x25')][_0x566d71[_0x5177('0xa1')]]['outboundAnswerCallsDay']+=0x1;this[_0x5177('0x25')][_0x566d71[_0x5177('0xa1')]]['outboundAnswerAgiCallsDay']+=0x1;_0x2007d2=new Hangup(_0x566d71,_0x193dbf);_0x2007d2[_0x5177('0xcf')]=0x13;_0x2007d2[_0x5177('0x97')]=_0x5177('0xd6');_0x2007d2['membername']=_0x5177('0xd1');_0x2007d2[_0x5177('0xd7')]=!![];this[_0x5177('0xd2')](_0x2007d2,_0x5177('0xd8'),_0x5177('0xd9'));}if(_0x566d71['type']==='ivr'&&this[_0x5177('0x26')][_0x566d71[_0x5177('0xa1')]]['dialAMDActive']&&_0x193dbf[_0x5177('0xd4')]===_0x5177('0xcc')){delete this['uniqueId'][_0x193dbf[_0x5177('0xcd')]];this[_0x5177('0xa0')](this['campaigns'][_0x566d71['queue']]);_0x2007d2=new Hangup(_0x566d71,_0x193dbf);_0x2007d2[_0x5177('0xcf')]=0x12;_0x2007d2['statedesc']='HangupInAMD';_0x2007d2[_0x5177('0xd0')]=_0x5177('0xd1');this['saveInDb'](_0x2007d2,_0x5177('0xda'),_0x5177('0xdb'));}if(_0x566d71[_0x5177('0x54')]===_0x5177('0x7a')&&this[_0x5177('0x26')][_0x566d71[_0x5177('0xa1')]]['dialAMDActive']&&_0x193dbf[_0x5177('0xd4')]==='MACHINE'){delete this['uniqueId'][_0x193dbf[_0x5177('0xcd')]];this[_0x5177('0xa0')](this[_0x5177('0x26')][_0x566d71['queue']]);_0x2007d2=new Hangup(_0x566d71,_0x193dbf);_0x2007d2[_0x5177('0xcf')]=0x13;_0x2007d2[_0x5177('0x97')]=_0x5177('0xd6');_0x2007d2[_0x5177('0xd0')]=_0x5177('0xd1');_0x2007d2[_0x5177('0xd7')]=!![];this[_0x5177('0xd2')](_0x2007d2,_0x5177('0xdc'),_0x5177('0xdd'));}}};Dialer[_0x5177('0x20')][_0x5177('0x3b')]=function(_0x2592ad){var _0x5e2957=this[_0x5177('0x2d')][_0x2592ad[_0x5177('0xcd')]];var _0x38f0f4=this;var _0x43891f;if(_0x5e2957&&_0x5e2957['type']==='ivr'){delete this['uniqueId'][_0x2592ad[_0x5177('0xcd')]];this[_0x5177('0xa0')](this[_0x5177('0x26')][_0x5e2957[_0x5177('0xa1')]]);this[_0x5177('0x26')][_0x5e2957['queue']][_0x5177('0xde')]+=0x1;_0x43891f=new Hangup(_0x5e2957,_0x2592ad);this['createHistory'](_0x43891f)[_0x5177('0x9e')](loggerCatch(_0x5177('0xdf')));this[_0x5177('0xb1')](_0x43891f)[_0x5177('0x9e')](loggerCatch(_0x5177('0xe0')));}if(_0x5e2957&&_0x5e2957[_0x5177('0x54')]!==_0x5177('0x7a')&&isNotNull(this[_0x5177('0x25')][_0x5e2957[_0x5177('0xa1')]][_0x5177('0xe1')])){delete this[_0x5177('0x2d')][_0x2592ad[_0x5177('0xcd')]];this[_0x5177('0xa0')](this['voiceQueues'][_0x5e2957[_0x5177('0xa1')]]);this[_0x5177('0x25')][_0x5e2957['queue']][_0x5177('0xce')]+=0x1;this[_0x5177('0x25')][_0x5e2957[_0x5177('0xa1')]]['outboundAnswerAgiCallsDay']+=0x1;_0x43891f=new Hangup(_0x5e2957,_0x2592ad);_0x43891f[_0x5177('0xcf')]=0x10;_0x43891f['statedesc']='AnswerAGI';_0x43891f[_0x5177('0xd0')]='AGI';this[_0x5177('0xb3')](_0x43891f)[_0x5177('0x9e')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x5177('0xb1')](_0x43891f)[_0x5177('0x9e')](loggerCatch(_0x5177('0xe0')));}if(_0x5e2957&&_0x5e2957[_0x5177('0x54')]!==_0x5177('0x7a')&&!isNotNull(this['voiceQueues'][_0x5e2957['queue']][_0x5177('0xe1')])){delete this[_0x5177('0x2d')][_0x2592ad[_0x5177('0xcd')]];this[_0x5177('0xa0')](this[_0x5177('0x25')][_0x5e2957[_0x5177('0xa1')]]);this['voiceQueues'][_0x5e2957[_0x5177('0xa1')]]['outboundUnknownCallsDay']+=0x1;_0x43891f=new Hangup(_0x5e2957,_0x2592ad);_0x43891f[_0x5177('0xcf')]=0xc;_0x43891f[_0x5177('0x97')]=_0x2592ad[_0x5177('0xe2')];_0x43891f[_0x5177('0xd0')]=_0x5177('0xe3');this[_0x5177('0xb3')](_0x43891f)[_0x5177('0x9e')](loggerCatch(_0x5177('0xdf')));this[_0x5177('0xb1')](_0x43891f)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer[_0x5177('0x20')][_0x5177('0x3a')]=function(_0x197806){var _0x4cc2b1=this[_0x5177('0x2d')][_0x197806[_0x5177('0xcd')]];var _0x83efb8=this;if(this[_0x5177('0x25')][_0x197806[_0x5177('0xa1')]]){if(_0x4cc2b1&&_0x4cc2b1[_0x5177('0x54')]!==_0x5177('0x7a')){delete this['uniqueId'][_0x197806[_0x5177('0xcd')]];this[_0x5177('0x25')][_0x197806['queue']][_0x5177('0xce')]+=0x1;var _0x689916=new AgentComplete(_0x4cc2b1,_0x197806);if(_0x197806[_0x5177('0xe4')]===_0x5177('0xe5')){_0x689916['agiafterat']=this[_0x5177('0x25')][_0x197806[_0x5177('0xa1')]][_0x5177('0xe6')]&&this[_0x5177('0x25')][_0x197806['queue']][_0x5177('0xe7')]?moment()[_0x5177('0x79')](_0x5177('0xe8')):undefined;}this[_0x5177('0xb3')](_0x689916)[_0x5177('0x9e')](loggerCatch(_0x5177('0xe9')));this[_0x5177('0xb1')](_0x689916)[_0x5177('0x9e')](loggerCatch(_0x5177('0xea')));}}};Dialer[_0x5177('0x20')][_0x5177('0x35')]=function(_0x4bef3d){if(this['voiceQueues'][_0x4bef3d[_0x5177('0xa1')]]){if(this[_0x5177('0x2d')][_0x4bef3d[_0x5177('0xcd')]]&&this['uniqueId'][_0x4bef3d[_0x5177('0xcd')]][_0x5177('0x54')]!==_0x5177('0x7a')){this[_0x5177('0xa0')](this[_0x5177('0x25')][_0x4bef3d[_0x5177('0xa1')]]);this['uniqueId'][_0x4bef3d[_0x5177('0xcd')]][_0x5177('0xeb')]=moment()[_0x5177('0x79')](_0x5177('0xe8'));}}};Dialer[_0x5177('0x20')][_0x5177('0xec')]=function(_0x4a5766){this[_0x5177('0xb3')](_0x4a5766)[_0x5177('0x9e')](loggerCatch(_0x5177('0xe9')));this[_0x5177('0xb1')](_0x4a5766)[_0x5177('0x9e')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0x5177('0x20')][_0x5177('0xed')]=function(_0x3128b8){var _0x439a36=this[_0x5177('0x2d')][_0x3128b8['uniqueid']];var _0xbe6f55=this;if(this[_0x5177('0x25')][_0x3128b8['queue']]){if(_0x439a36&&_0x439a36[_0x5177('0x54')]!==_0x5177('0x7a')){delete this['uniqueId'][_0x3128b8['uniqueid']];this[_0x5177('0xa0')](this[_0x5177('0x25')][_0x3128b8['queue']]);_0x439a36[_0x5177('0xee')]=moment()[_0x5177('0x79')]('YYYY-MM-DD\x20HH:mm:ss');var _0x81fca0=new QueueCallerAbandon(_0x439a36,_0x3128b8);if(getSeconds(_0x439a36[_0x5177('0xee')],_0x439a36[_0x5177('0xef')])>=_0x439a36[_0x5177('0xf0')]){this[_0x5177('0x25')][_0x3128b8[_0x5177('0xa1')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this[_0x5177('0x25')][_0x3128b8['queue']]['outboundDropCallsDayTimeout']+=0x1;this[_0x5177('0x25')][_0x3128b8[_0x5177('0xa1')]][_0x5177('0x71')]+=0x1;_0x81fca0[_0x5177('0xcf')]=0xa;_0x81fca0[_0x5177('0x97')]=_0x5177('0xf1');_0x81fca0['dropreason']='TIMEOUT';_0x81fca0[_0x5177('0xf2')]=this[_0x5177('0x25')][_0x3128b8[_0x5177('0xa1')]][_0x5177('0xe6')]?moment()['format'](_0x5177('0xe8')):undefined;this['queueCallerAbandonCreateState'](_0x81fca0);}else{this[_0x5177('0x25')][_0x3128b8[_0x5177('0xa1')]]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this['voiceQueues'][_0x3128b8[_0x5177('0xa1')]][_0x5177('0x68')]+=0x1;_0x81fca0['state']=0xb;_0x81fca0['statedesc']=_0x5177('0xf3');_0x81fca0[_0x5177('0xf4')]=_0x5177('0xf5');this[_0x5177('0xec')](_0x81fca0);}}}};Dialer[_0x5177('0x20')]['syncNewExten']=function(_0xdaae71){if(this[_0x5177('0x2b')][_0xdaae71[_0x5177('0xcd')]]){this[_0x5177('0x2b')][_0xdaae71[_0x5177('0xcd')]][_0x5177('0xf6')]=_0xdaae71[_0x5177('0xf6')];}if(this[_0x5177('0x2d')][_0xdaae71[_0x5177('0xcd')]]){this['uniqueId'][_0xdaae71[_0x5177('0xcd')]][_0x5177('0xf6')]=_0xdaae71[_0x5177('0xf6')];}};Dialer[_0x5177('0x20')][_0x5177('0x41')]=function(_0x514fb7){if(strategy[this[_0x5177('0x25')][this['actions'][_0x514fb7['actionid']][_0x5177('0xa1')]][_0x5177('0x56')]]===_0x5177('0x1f')){if(this[_0x5177('0x2b')][_0x514fb7['actionid']]&&_[_0x5177('0x9c')](this[_0x5177('0x2b')][_0x514fb7['actionid']][_0x5177('0xf7')])&&_0x514fb7[_0x5177('0x9d')]==='1'&&_0x514fb7[_0x5177('0xf8')]==='0'){if(this[_0x5177('0x27')][_0x514fb7[_0x5177('0xf9')]]){if(!this[_0x5177('0x27')][_0x514fb7[_0x5177('0xf9')]][_0x5177('0xf7')]){this[_0x5177('0x27')][_0x514fb7[_0x5177('0xf9')]][_0x5177('0xf7')]=!![];this[_0x5177('0x2b')][_0x514fb7[_0x5177('0xfa')]][_0x5177('0xf7')]=!![];this[_0x5177('0x2b')][_0x514fb7[_0x5177('0xfa')]][_0x5177('0xf9')]=_0x514fb7['stateinterface'];}}}}else if((strategy[this['voiceQueues'][this[_0x5177('0x2b')][_0x514fb7[_0x5177('0xfa')]][_0x5177('0xa1')]][_0x5177('0x56')]]||_0x5177('0x1e'))==='rrmemory'){if(this[_0x5177('0x2b')][_0x514fb7['actionid']]){if(this[_0x5177('0x27')][_0x514fb7[_0x5177('0xf9')]]){this['actions'][_0x514fb7['actionid']]['stateinterface']=_0x514fb7[_0x5177('0xf9')];if(_[_0x5177('0x9c')](this['queueBooked'][this[_0x5177('0x2b')][_0x514fb7[_0x5177('0xfa')]][_0x5177('0xa1')]])){this[_0x5177('0x32')][this[_0x5177('0x2b')][_0x514fb7[_0x5177('0xfa')]][_0x5177('0xa1')]]=[];}this[_0x5177('0x32')][this[_0x5177('0x2b')][_0x514fb7['actionid']]['queue']]['push'](_[_0x5177('0x83')](_[_0x5177('0xba')](this['actions'][_0x514fb7['actionid']],[_0x5177('0xfb'),'stateinterface']),{'status':_0x514fb7[_0x5177('0x9d')],'paused':_0x514fb7[_0x5177('0xf8')]}));}}}};function unlockQueueStatus(_0x53bec7,_0x423339){setTimeout(function(){if(_[_0x5177('0x44')](_0x53bec7['queueStatusComplete'])){loggerBooked[_0x5177('0x8a')](_0x5177('0xfc'),_0x423339);}_0x53bec7['queueStatusComplete']=!![];loggerBooked['info'](_0x5177('0xfd'),_0x423339,JSON[_0x5177('0x4f')](_[_0x5177('0xba')](_0x53bec7,[_0x5177('0x46'),_0x5177('0xfe')])));},0x1f3);}Dialer[_0x5177('0x20')]['syncQueueStatusComplete']=function(_0x320170){var _0x1f7fbd=this;var _0x3bb644=_0x1f7fbd['voiceQueues'][_0x1f7fbd[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]];if(strategy[this[_0x5177('0x25')][this['actions'][_0x320170[_0x5177('0xfa')]]['queue']][_0x5177('0x56')]]===_0x5177('0x1f')){if(this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]]&&this[_0x5177('0x2b')][_0x320170['actionid']][_0x5177('0xf9')]){this[_0x5177('0x24')][_0x5177('0xff')](this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xfb')],this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xf9')])['catch'](function(_0x11dfcf){logger[_0x5177('0x8a')](_0x5177('0x100'),util[_0x5177('0x89')](_0x11dfcf,{'showHidden':![],'depth':null}));})[_0x5177('0x23')](function(){_0x1f7fbd[_0x5177('0xa0')](_0x1f7fbd['voiceQueues'][_0x1f7fbd['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]);_0x1f7fbd['agents'][_0x1f7fbd[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]]['stateinterface']][_0x5177('0xf7')]=![];delete _0x1f7fbd[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]];unlockQueueStatus(_0x3bb644);});}else{this[_0x5177('0xa0')](this[_0x5177('0x25')][this['actions'][_0x320170['actionid']][_0x5177('0xa1')]]);this[_0x5177('0xac')]({'active':![],'ContactId':this[_0x5177('0x2b')][_0x320170['actionid']][_0x5177('0x101')],'ListId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbb')],'VoiceQueueId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbd')]||undefined,'CampaignId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbe')]||undefined})[_0x5177('0x9e')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]];unlockQueueStatus(_0x3bb644);}}else if((strategy[this[_0x5177('0x25')][this['actions'][_0x320170['actionid']][_0x5177('0xa1')]][_0x5177('0x56')]]||_0x5177('0x1e'))===_0x5177('0x1e')){var _0x19b55b;if(this[_0x5177('0x2b')][_0x320170['actionid']]&&!_[_0x5177('0x87')](this[_0x5177('0x32')][this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]])){if(this[_0x5177('0x33')][_0x1f7fbd['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]){this[_0x5177('0x33')][_0x1f7fbd['actions'][_0x320170[_0x5177('0xfa')]]['queue']]=this[_0x5177('0x33')][this['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]?this[_0x5177('0x33')][this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]:this['queueBooked'][this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]?this['queueBooked'][this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]['_rr']||0x0:0x0;}this[_0x5177('0x32')][this['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]['_rr']=this[_0x5177('0x33')][this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]];for(var _0x37feb0=0x0;_0x37feb0<this[_0x5177('0x32')][this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]][_0x5177('0x8b')];_0x37feb0+=0x1){_0x19b55b=rr(this[_0x5177('0x32')][this['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]);this[_0x5177('0x33')][_0x1f7fbd['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]=this['queueBooked'][this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]['_rr'];if(_0x19b55b[_0x5177('0x9d')]==='1'&&_0x19b55b[_0x5177('0xf8')]==='0'){break;}}if(!_[_0x5177('0x9c')](_0x19b55b)){this[_0x5177('0x27')][_0x19b55b[_0x5177('0xf9')]][_0x5177('0x102')]=_[_0x5177('0x44')](this[_0x5177('0x27')][_0x19b55b[_0x5177('0xf9')]][_0x5177('0x102')])?!![]:this['agents'][_0x19b55b[_0x5177('0xf9')]]['unlockRR'];}loggerBooked[_0x5177('0x7d')](_0x5177('0x103'),_0x320170['actionid'],'Agent:\x20',JSON[_0x5177('0x4f')](_[_0x5177('0xba')](this[_0x5177('0x27')][_0x19b55b[_0x5177('0xf9')]],[_0x5177('0x46'),_0x5177('0x102')])),_0x5177('0x104'),JSON[_0x5177('0x4f')](_0x19b55b[_0x5177('0xfb')]));if(!_[_0x5177('0x9c')](_0x19b55b)&&_0x19b55b['status']==='1'&&_0x19b55b[_0x5177('0xf8')]==='0'&&this[_0x5177('0x27')][_0x19b55b[_0x5177('0xf9')]][_0x5177('0x102')]){this[_0x5177('0x27')][_0x19b55b['stateinterface']][_0x5177('0x102')]=![];this[_0x5177('0x32')][_0x1f7fbd['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]=[];this['preview'][_0x5177('0xff')](_0x19b55b[_0x5177('0xfb')],_0x19b55b[_0x5177('0xf9')])[_0x5177('0x9e')](function(_0x554df3){logger[_0x5177('0x8a')](_0x5177('0x100'),util[_0x5177('0x89')](_0x554df3,{'showHidden':![],'depth':null}));})['finally'](function(){_0x1f7fbd[_0x5177('0xa0')](_0x1f7fbd['voiceQueues'][_0x1f7fbd['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]);setTimeout(function(){_0x1f7fbd[_0x5177('0x27')][_0x19b55b['stateinterface']]['unlockRR']=!![];loggerBooked[_0x5177('0x7d')]('[booked][RR][finaly]',_0x320170[_0x5177('0xfa')],_0x5177('0x105'),JSON[_0x5177('0x4f')](_[_0x5177('0xba')](_0x1f7fbd['agents'][_0x19b55b[_0x5177('0xf9')]],['name','unlockRR'])),'contactAgent-idHopper:\x20',JSON[_0x5177('0x4f')](_0x19b55b[_0x5177('0xfb')]));},0xc7);delete _0x1f7fbd[_0x5177('0x2b')][_0x320170['actionid']];unlockQueueStatus(_0x3bb644,_0x320170['actionid']);});}else{loggerBooked[_0x5177('0x7d')](_0x5177('0x106'));this['updateOriginated'](this[_0x5177('0x25')][this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]]['queue']]);this['rescheduleContact']({'active':![],'ContactId':this[_0x5177('0x2b')][_0x320170['actionid']][_0x5177('0x101')],'ListId':this[_0x5177('0x2b')][_0x320170['actionid']][_0x5177('0xbb')],'VoiceQueueId':this[_0x5177('0x2b')][_0x320170['actionid']][_0x5177('0xbd')]||undefined,'CampaignId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbe')]||undefined})[_0x5177('0x9e')](loggerCatch(_0x5177('0x107')));delete this[_0x5177('0x2b')][_0x320170['actionid']];unlockQueueStatus(_0x3bb644);}}else{loggerBooked[_0x5177('0x7d')]('[booked][unlock2]');this[_0x5177('0xa0')](this[_0x5177('0x25')][this[_0x5177('0x2b')][_0x320170['actionid']][_0x5177('0xa1')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0x101')],'ListId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbb')],'VoiceQueueId':this['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xbd')]||undefined,'CampaignId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbe')]||undefined})['catch'](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this['actions'][_0x320170[_0x5177('0xfa')]];unlockQueueStatus(_0x3bb644);}}else{loggerBooked[_0x5177('0x7d')]('[booked][unlock3]');this[_0x5177('0xa0')](this[_0x5177('0x25')][this['actions'][_0x320170[_0x5177('0xfa')]][_0x5177('0xa1')]]);this[_0x5177('0xac')]({'active':![],'ContactId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0x101')],'ListId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbb')],'VoiceQueueId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbd')]||undefined,'CampaignId':this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]][_0x5177('0xbe')]||undefined})[_0x5177('0x9e')](loggerCatch(_0x5177('0x108')));delete this[_0x5177('0x2b')][_0x320170[_0x5177('0xfa')]];unlockQueueStatus(_0x3bb644);}};Dialer[_0x5177('0x20')][_0x5177('0x42')]=function(){var _0x5bef3d=this;setInterval(function(){_0x5bef3d[_0x5177('0x109')]();},0x3e8);};Dialer['prototype'][_0x5177('0x10a')]=function(_0xc149bc){var _0x41b9ca=this;return function(){if(!_0x41b9ca[_0x5177('0xc3')](_0xc149bc[_0x5177('0x77')])){if(!_0x41b9ca['isTrunkReachable'](_0xc149bc[_0x5177('0x10b')])){_0xc149bc[_0x5177('0x45')]=_0x5177('0x10c');throw _0xc149bc[_0x5177('0x46')]+_0x5177('0x10d');}}};};Dialer[_0x5177('0x20')][_0x5177('0x10e')]=function(_0x511cbb,_0x2a71ee,_0x5819f6,_0x21f261){var _0x51d244=this;return function(){var _0x433922=!![];return _0x51d244[_0x5177('0x10f')](_0x511cbb,_0x2a71ee,_0x5819f6,_0x21f261,_0x433922);};};Dialer[_0x5177('0x20')][_0x5177('0x110')]=function(_0x269f81,_0x22d84a,_0x3adf12,_0x45b69){var _0xe4005e=this;return function(){var _0x22d659=![];return _0xe4005e[_0x5177('0x10f')](_0x269f81[_0x5177('0x4c')],_0x22d84a,_0x3adf12,_0x45b69,_0x22d659);};};Dialer['prototype']['ifTime']=function(_0x46c199,_0x419d25,_0x241392,_0x147b19,_0x22cc65){var _0x21cdcd=[];return new BPromise(function(_0x228782,_0x414134){if(!isNotNull(_0x46c199)){_0x147b19['message']=_0x5177('0x4a');return _0x414134(msgResponse(_0x5177('0x10f'),'Failure',_0x241392+'\x20Intervals\x20is\x20null\x20'));}if(_['isEmpty'](_0x46c199)){_0x147b19[_0x5177('0x45')]='INTERVAL_IS_EMPTY';return _0x414134(msgResponse(_0x5177('0x10f'),_0x5177('0x111'),_0x241392+'\x20Intervals\x20is\x20empty\x20'));}if(_0x419d25&&_[_0x5177('0x44')](config[_0x5177('0x112')][_0x419d25])){_0x147b19[_0x5177('0x45')]=_0x5177('0x113');return _0x414134(msgResponse(_0x5177('0x10f'),_0x5177('0x111'),_0x241392+_0x5177('0x114')+_0x419d25));}if(_['isArray'](_0x46c199)){for(var _0x446f09=0x0;_0x446f09<_0x46c199[_0x5177('0x8b')];_0x446f09+=0x1){_0x21cdcd[_0x5177('0x115')](ami[_0x5177('0x116')]({'action':'command','command':util[_0x5177('0x79')](_0x5177('0x117'),_0x46c199[_0x446f09][_0x5177('0x118')],!_[_0x5177('0x44')](config[_0x5177('0x112')][_0x419d25])?_0x419d25:'')})[_0x5177('0xa5')](function(_0x339c38){return _0x339c38[_0x5177('0x119')][_0x5177('0x11a')](_0x5177('0x11b'))>=0x0?!![]:![];})[_0x5177('0x9e')](myreject(_0x414134)));}}else{_0x21cdcd[_0x5177('0x115')](ami[_0x5177('0x116')]({'action':_0x5177('0x11c'),'command':util['format'](_0x5177('0x117'),_0x46c199,!_[_0x5177('0x44')](config[_0x5177('0x112')][_0x419d25])?_0x419d25:'')})['then'](function(_0x555d18){return _0x555d18[_0x5177('0x119')]['indexOf']('true')>=0x0?!![]:![];})[_0x5177('0x9e')](myreject(_0x414134)));}BPromise['all'](_0x21cdcd)['then'](function(_0x46fa0f){var _0x25e1f3=_[_0x5177('0x11d')](_0x46fa0f);if(_0x25e1f3){return _0x228782(_0x25e1f3);}else{_0x147b19['message']=_0x22cc65?_0x5177('0x11e'):_0x5177('0x11f');return _0x414134(msgResponse(_0x5177('0x120'),_0x5177('0x111'),_0x5177('0x121')+_0x22cc65+'\x20'+_0x241392+_0x5177('0x122')+util[_0x5177('0x89')](_0x46c199,{'showHidden':![],'depth':null})+_0x5177('0x123')+_0x419d25));}})[_0x5177('0x9e')](function(_0x284df1){return _0x414134(msgResponse(_0x5177('0x10f'),_0x5177('0x111'),JSON[_0x5177('0x4f')](_0x284df1)));});});};Dialer['prototype'][_0x5177('0x124')]=function(_0x1a0fa1){var _0x227c18=this;return function(){switch(_0x1a0fa1[_0x5177('0x61')]){case'progressive':freeVariablesPredictive(_0x1a0fa1);_0x227c18[_0x5177('0x125')](_0x1a0fa1,0x1);break;case'power':freeVariablesPredictive(_0x1a0fa1);_0x227c18[_0x5177('0x125')](_0x1a0fa1,_0x1a0fa1[_0x5177('0x126')]);break;case _0x5177('0xa'):_0x227c18['predictive'](_0x1a0fa1);break;case'booked':freeVariablesPredictive(_0x1a0fa1);_0x227c18[_0x5177('0x125')](_0x1a0fa1,0x1);break;default:freeVariablesPredictive(_0x1a0fa1);logger[_0x5177('0x8a')](_0x5177('0x127'),_0x1a0fa1['name'],_0x5177('0x128'));}};};Dialer[_0x5177('0x20')][_0x5177('0x129')]=function(_0x4762a5){var _0x3356ac=this;return function(){_0x3356ac['handleIvr'](_0x4762a5);};};Dialer['prototype'][_0x5177('0xc')]=function(_0x31730d){var _0x21d360=this;if(isNotPreview(_0x31730d['dialMethod'])){if(isVoiceQueueOutbound(_0x31730d['type'])&&isActive(_0x31730d['dialActive'])){_0x31730d[_0x5177('0x92')]=!![];BPromise['resolve']()[_0x5177('0xa5')](checkIsLoggedIn(_0x31730d,_0x31730d[_0x5177('0x58')]))[_0x5177('0xa5')](checkIsActive(_0x31730d,_0x31730d[_0x5177('0x60')]))[_0x5177('0xa5')](checkInterval(_0x31730d))[_0x5177('0xa5')](_0x21d360[_0x5177('0x10a')](_0x31730d))[_0x5177('0xa5')](_0x21d360[_0x5177('0x10e')](_0x31730d['dialGlobalInterval'],_0x31730d['dialTimezone'],_0x31730d[_0x5177('0x46')],_0x31730d))[_0x5177('0xa5')](_0x21d360['checkIfTimeIntervals'](_0x31730d[_0x5177('0x49')],_0x31730d['dialTimezone'],_0x31730d[_0x5177('0x46')],_0x31730d))[_0x5177('0xa5')](_0x21d360['checkDialMethod'](_0x31730d))[_0x5177('0x9e')](loggerCatchQueueSummary(_0x5177('0x12a'),_0x31730d));}else{notSendMessagesQueue(_0x31730d);}}else{freeVariablesPredictive(_0x31730d);}};Dialer[_0x5177('0x20')][_0x5177('0x109')]=function(){var _0x374444=this;var _0x2c4a62;for(var _0xd219fa in this[_0x5177('0x26')]){if(this[_0x5177('0x26')][_0x5177('0x8c')](_0xd219fa)){_0x2c4a62=this[_0x5177('0x26')][_0xd219fa];if(isCampaignIvr(_0x2c4a62['type'])&&isActive(_0x2c4a62[_0x5177('0x78')])){_0x2c4a62[_0x5177('0x92')]=!![];BPromise['resolve']()[_0x5177('0xa5')](checkIsActive(_0x2c4a62,_0x2c4a62[_0x5177('0x78')]))['then'](checkInterval(_0x2c4a62))['then'](_0x374444[_0x5177('0x10a')](_0x2c4a62))[_0x5177('0xa5')](_0x374444[_0x5177('0x10e')](_0x2c4a62[_0x5177('0x12b')],_0x2c4a62[_0x5177('0x12c')],_0x2c4a62[_0x5177('0x46')],_0x2c4a62))[_0x5177('0xa5')](_0x374444[_0x5177('0x110')](_0x2c4a62[_0x5177('0x49')],_0x2c4a62[_0x5177('0x12c')],_0x2c4a62[_0x5177('0x46')],_0x2c4a62))[_0x5177('0xa5')](_0x374444['launchHandleIvr'](_0x2c4a62))['catch'](loggerCatchQueueSummary(_0x5177('0x12d'),_0x2c4a62));}else{notSendMessagesCampaign(_0x2c4a62);}}}};function getCallerIdRandom(_0x547ed2,_0x66420f){var _0x5c5cb0,_0x4a43cb,_0x56f07e;if(_0x66420f<=0x0){_0x66420f=0x1;}_0x5c5cb0=new RegExp(_0x5177('0x12e')+_0x66420f+'}$');_0x4a43cb=Math[_0x5177('0x12f')](0xa,_0x66420f-0x1);_0x56f07e=Math[_0x5177('0x12f')](0xa,_0x66420f)-0x1;return util[_0x5177('0x79')]('%s',_[_0x5177('0x130')](_0x547ed2,_0x5c5cb0,_[_0x5177('0x131')](_0x4a43cb,_0x56f07e)));}function extractCalleridName(_0x564f02){var _0x3c900f=_0x564f02['match'](/"(.*?)"/);return _0x3c900f?_0x3c900f[0x1]:_0x564f02;}function extractCalleridNumber(_0x1c76d6){var _0x25a3ff=_0x1c76d6[_0x5177('0x132')](/<(.*?)>/);return _0x25a3ff?_0x25a3ff[0x1]:_0x1c76d6;}Dialer[_0x5177('0x20')][_0x5177('0x133')]=function(_0x5e6160,_0x2ca1ea){var _0x443253=this;var _0x1fdf3c=uuid['v4']();this[_0x5177('0x2b')][_0x1fdf3c]=new Action(_0x5e6160,_0x2ca1ea,_0x1fdf3c);return new BPromise(function(_0x5e6547,_0x527b92){if(_['isUndefined'](_0x5e6160)&&'object'!==typeof _0x5e6160){return _0x527b92(msgResponse(_0x5177('0x134'),_0x5177('0x111'),'voiceQueue\x20is\x20undefine'));}if(_[_0x5177('0x44')](_0x2ca1ea[_0x5177('0x135')][_0x5177('0x136')])||_0x2ca1ea['Contact'][_0x5177('0x136')]===null){return _0x527b92(msgResponse(_0x5177('0x134'),_0x5177('0x111'),_0x5177('0x137')));}var _0x341063={'XMD-CALLERID':_0x443253['actions'][_0x1fdf3c][_0x5177('0x138')](),'XMD-AGI':_0x5e6160[_0x5177('0xe1')]?util[_0x5177('0x79')](_0x5177('0x139'),ipAgi,_0x5e6160[_0x5177('0xe1')]):'NONE','XMD-AGIAFTER':_0x5e6160[_0x5177('0xe6')]?util['format'](_0x5177('0x139'),ipAgi,_0x5e6160[_0x5177('0xe6')]):_0x5177('0x13a'),'XMD-QUEUE':_0x5e6160[_0x5177('0x54')]===_0x5177('0x55')?util[_0x5177('0x79')](_0x5177('0x13b'),_0x5e6160[_0x5177('0x46')],_0x5e6160[_0x5177('0x13c')]||'',_0x5e6160[_0x5177('0xe7')]?'c':'',_0x5e6160['dialQueueTimeout']||0x3):_0x5177('0x13a'),'XMD-CONTACTID':_0x2ca1ea[_0x5177('0x101')],'XMD-CDRTYPE':_0x5177('0x8'),'CALLERID(all)':_0x443253['actions'][_0x1fdf3c][_0x5177('0x138')](),'XMD-AMD':_0x5e6160[_0x5177('0xcb')]?'ACTIVE':_0x5177('0x13a'),'XMD-DESTINATION':_0x5177('0xca')};if(_0x5e6160[_0x5177('0xcb')]){_0x341063[_0x5177('0x13d')]=_0x5e6160[_0x5177('0x13e')]||0x9c4;_0x341063['XMD-AMDGREETING']=_0x5e6160['dialAMDGreeting']||0x5dc;_0x341063[_0x5177('0x13f')]=_0x5e6160[_0x5177('0x140')]||0x320;_0x341063[_0x5177('0x141')]=_0x5e6160[_0x5177('0x142')]||0x1388;_0x341063[_0x5177('0x143')]=_0x5e6160[_0x5177('0x144')]||0x64;_0x341063[_0x5177('0x145')]=_0x5e6160[_0x5177('0x146')]||0x32;_0x341063[_0x5177('0x147')]=_0x5e6160[_0x5177('0x148')]||0x3;_0x341063['XMD-AMDSILENCETHRESHOLD']=_0x5e6160[_0x5177('0x149')]||0x100;_0x341063[_0x5177('0x14a')]=_0x5e6160[_0x5177('0x14b')]||0x1388;}if(_0x5e6160[_0x5177('0x54')]===_0x5177('0x55')){_0x341063[_0x5177('0x14c')]=_0x2ca1ea[_0x5177('0xbd')];}else{_0x341063[_0x5177('0x14d')]=_0x2ca1ea['CampaignId'];}for(var _0x1f3402 in _0x2ca1ea[_0x5177('0x135')]){if(_0x2ca1ea[_0x5177('0x135')][_0x5177('0x8c')](_0x1f3402)){if(isNotNull(_0x2ca1ea['Contact'][_0x1f3402])&&_0x1f3402!=='id'&&_0x1f3402!==_0x5177('0x14e')&&_0x1f3402!==_0x5177('0x14f')&&_0x1f3402!==_0x5177('0x150')){_0x341063[util[_0x5177('0x79')](_0x5177('0x151'),_0x5177('0x152'),_['toUpper'](_0x1f3402))]=_0x2ca1ea['Contact'][_0x1f3402];}}}var _0x1ae7c8=_0x443253[_0x5177('0xc3')](_0x5e6160[_0x5177('0x77')])?getCallerId(_0x5e6160[_0x5177('0x77')]['callerid'],_0x5e6160[_0x5177('0x62')],_0x5e6160[_0x5177('0x153')]>0x0?getCallerIdRandom(_0x5e6160[_0x5177('0x63')],_0x5e6160[_0x5177('0x153')]):_0x5e6160[_0x5177('0x63')]):getCallerId(_[_0x5177('0x9c')](_0x5e6160['TrunkBackup'])?_0x5e6160[_0x5177('0x77')][_0x5177('0x154')]:_0x5e6160[_0x5177('0x10b')][_0x5177('0x154')],_0x5e6160[_0x5177('0x62')],_0x5e6160[_0x5177('0x153')]>0x0?getCallerIdRandom(_0x5e6160[_0x5177('0x63')],_0x5e6160[_0x5177('0x153')]):_0x5e6160['dialOriginateCallerIdNumber']);if(_0x1ae7c8){_0x341063['XMD-ORIGINATECALLERIDNAME']=_0x443253['actions'][_0x1fdf3c][_0x5177('0x155')]=extractCalleridName(_0x1ae7c8);_0x341063[_0x5177('0x156')]=_0x443253[_0x5177('0x2b')][_0x1fdf3c][_0x5177('0x157')]=extractCalleridNumber(_0x1ae7c8);}return ami[_0x5177('0x116')]({'actionid':_0x1fdf3c,'action':_0x5177('0x134'),'channel':_0x443253[_0x5177('0xc3')](_0x5e6160[_0x5177('0x77')])?util[_0x5177('0x79')](_0x5177('0x158'),_0x5e6160['Trunk']['name'],isNotNull(_0x5e6160['dialPrefix'])?_0x5e6160[_0x5177('0x159')][_0x5177('0x15a')]()||'':'',_0x5e6160[_0x5177('0x15b')]>0x0?_0x2ca1ea[_0x5177('0x135')][_0x5177('0x136')]['substring'](_0x5e6160['dialCutDigit']):_0x2ca1ea['Contact'][_0x5177('0x136')]):util[_0x5177('0x79')](_0x5177('0x158'),_['isNil'](_0x5e6160[_0x5177('0x10b')])?_0x5e6160[_0x5177('0x77')]['name']:_0x5e6160[_0x5177('0x10b')][_0x5177('0x46')],isNotNull(_0x5e6160[_0x5177('0x159')])?_0x5e6160['dialPrefix'][_0x5177('0x15a')]()||'':'',_0x5e6160['dialCutDigit']>0x0?_0x2ca1ea[_0x5177('0x135')][_0x5177('0x136')][_0x5177('0x15c')](_0x5e6160['dialCutDigit']):_0x2ca1ea[_0x5177('0x135')][_0x5177('0x136')]),'callerid':_0x1ae7c8,'Exten':_0x5177('0xca'),'Context':_0x5177('0x15d'),'Priority':'1','variable':_0x341063,'timeout':(_0x5e6160['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x1fdf3c})[_0x5177('0xa5')](function(_0x2f83b0){return _0x5e6547(_0x2f83b0);})[_0x5177('0x9e')](function(_0x353414){_0x5e6160[_0x5177('0x6a')]+=0x1;var _0x3b9a57=new History(_0x443253[_0x5177('0x2b')][_0x1fdf3c]);logger[_0x5177('0x8a')](util[_0x5177('0x79')](_0x5177('0x15e'),JSON['stringify'](_0x353414)));_0x3b9a57[_0x5177('0xcf')]=0xe;_0x3b9a57[_0x5177('0x97')]=_0x5177('0x15f');_0x3b9a57[_0x5177('0x98')]=moment()[_0x5177('0x79')](_0x5177('0xe8'));_0x3b9a57['endtime']=_0x3b9a57[_0x5177('0x98')];_0x443253[_0x5177('0xb3')](_0x3b9a57)['catch'](loggerCatch('[originate][error]'));_0x443253[_0x5177('0xb1')](_0x3b9a57)[_0x5177('0x9e')](loggerCatch(_0x5177('0x160')))['finally'](function(){delete _0x443253[_0x5177('0x2b')][_0x1fdf3c];return _0x527b92(msgResponse(_0x5177('0x134'),_0x5177('0x4e'),_0x5177('0x161')));});});});};Dialer[_0x5177('0x20')][_0x5177('0x39')]=function(_0x394617){var _0x3ab10f=this[_0x5177('0x2b')][_0x394617[_0x5177('0xfa')]];var _0x2625c9=this;if(_0x3ab10f){delete this['actions'][_0x394617[_0x5177('0xfa')]];_0x3ab10f['responsetime']=moment()['format'](_0x5177('0xe8'));var _0x7485f1=_0x3ab10f['type']===_0x5177('0x7a')?this['campaigns'][_0x3ab10f[_0x5177('0xa1')]]:this['voiceQueues'][_0x3ab10f['getQueue']()];if(!this[_0x5177('0xc1')](_0x394617[_0x5177('0x162')])){this[_0x5177('0xa0')](_0x7485f1);return this[_0x5177('0x163')](_0x3ab10f,_0x7485f1,_0x394617)[_0x5177('0xa5')](function(_0x2d2767){})[_0x5177('0x9e')](loggerCatch(_0x5177('0x164')));}else{this[_0x5177('0x2d')][_0x394617[_0x5177('0xcd')]]=_0x3ab10f;}}};Dialer['prototype'][_0x5177('0x165')]=function(_0x49200a,_0x1461f2,_0x14f8af){var _0x1ed488=new History(_0x1461f2);if(_0x1ed488['countbusyretry']+_0x1ed488[_0x5177('0x166')]+_0x1ed488[_0x5177('0x167')]>=_0x14f8af['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x49200a){case 0x3:if(_0x1ed488['countnoanswerretry']>=_0x14f8af[_0x5177('0x168')]-0x1){return!![];}else{this[_0x5177('0xac')]({'active':![],'countnoanswerretry':_0x1ed488[_0x5177('0x167')]+=0x1,'scheduledat':moment()[_0x5177('0x169')](_0x14f8af[_0x5177('0x16a')],_0x5177('0x16b'))['format'](_0x5177('0xe8')),'ContactId':_0x1ed488[_0x5177('0x101')],'ListId':_0x1ed488['ListId'],'VoiceQueueId':_0x1ed488['VoiceQueueId']||undefined,'CampaignId':_0x1ed488[_0x5177('0xbe')]||undefined})[_0x5177('0x9e')](loggerCatch(_0x5177('0x16c')));}break;case 0x5:if(_0x1ed488[_0x5177('0x16d')]>=_0x14f8af['dialBusyMaxRetry']-0x1){return!![];}else{this[_0x5177('0xac')]({'active':![],'countbusyretry':_0x1ed488[_0x5177('0x16d')]+=0x1,'scheduledat':moment()[_0x5177('0x169')](_0x14f8af[_0x5177('0x16e')],_0x5177('0x16b'))[_0x5177('0x79')](_0x5177('0xe8')),'ContactId':_0x1ed488[_0x5177('0x101')],'ListId':_0x1ed488[_0x5177('0xbb')],'VoiceQueueId':_0x1ed488[_0x5177('0xbd')]||undefined,'CampaignId':_0x1ed488[_0x5177('0xbe')]||undefined})[_0x5177('0x9e')](loggerCatch(_0x5177('0x16f')));}break;case 0x8:if(_0x1ed488[_0x5177('0x166')]>=_0x14f8af[_0x5177('0x170')]-0x1){return!![];}else{this[_0x5177('0xac')]({'active':![],'countcongestionretry':_0x1ed488[_0x5177('0x166')]+=0x1,'scheduledat':moment()[_0x5177('0x169')](_0x14f8af['dialCongestionRetryFrequency'],_0x5177('0x16b'))[_0x5177('0x79')](_0x5177('0xe8')),'ContactId':_0x1ed488[_0x5177('0x101')],'ListId':_0x1ed488[_0x5177('0xbb')],'VoiceQueueId':_0x1ed488['VoiceQueueId']||undefined,'CampaignId':_0x1ed488['CampaignId']||undefined})[_0x5177('0x9e')](loggerCatch(_0x5177('0x171')));}break;default:return!![];}};Dialer[_0x5177('0x20')]['callProgressDetecting']=function(_0x4ad945,_0x1cd917,_0x47f096){var _0x45a65f=this;var _0x2bdde2=new History(_0x4ad945);return new BPromise(function(_0x1b5d2f,_0x14e9ea){if(_[_0x5177('0x44')](_0x1cd917)&&'object'!==typeof _0x1cd917){return _0x14e9ea(msgResponse('[callProgressDetecting]',_0x5177('0x111'),_0x5177('0x172')));}if(_[_0x5177('0x44')](_0x47f096)&&_0x5177('0x173')!==typeof _0x47f096){return _0x14e9ea(msgResponse(_0x5177('0x174'),'Failure',_0x5177('0x175')));}switch(_0x47f096[_0x5177('0xe4')]){case'0':_0x1cd917[_0x5177('0x69')]+=0x1;_0x2bdde2[_0x5177('0xcf')]=0x0;_0x2bdde2[_0x5177('0x97')]='NoSuchNumber';_0x45a65f[_0x5177('0xb3')](_0x2bdde2)[_0x5177('0x9e')](loggerCatch(_0x5177('0x176')));if(_0x45a65f[_0x5177('0x165')](0x0,_0x4ad945,_0x1cd917)){if(_0x2bdde2[_0x5177('0x16d')]+_0x2bdde2['countcongestionretry']+_0x2bdde2[_0x5177('0x167')]>=_0x1cd917[_0x5177('0x177')]){_0x45a65f[_0x5177('0x178')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,_0x5177('0x179'));}else{_0x45a65f['createStateFinal'](_0x2bdde2,_0x1b5d2f,_0x14e9ea,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x1cd917[_0x5177('0x17a')]+=0x1;_0x2bdde2['state']=0x3;_0x2bdde2['statedesc']=_0x5177('0x17b');_0x2bdde2['countnoanswerretry']+=0x1;_0x2bdde2[_0x5177('0x17c')]+=0x1;_0x45a65f['createHistory'](_0x2bdde2)[_0x5177('0x9e')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x45a65f['checkRetriveMax'](0x3,_0x4ad945,_0x1cd917)){if(_0x2bdde2[_0x5177('0x167')]>=_0x1cd917[_0x5177('0x168')]){_0x45a65f[_0x5177('0x17d')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,_0x5177('0x17e'));}else{_0x45a65f[_0x5177('0x178')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,_0x5177('0x17e'));}}break;case'5':_0x1cd917[_0x5177('0x66')]+=0x1;_0x2bdde2[_0x5177('0xcf')]=0x5;_0x2bdde2[_0x5177('0x97')]='Busy';_0x2bdde2[_0x5177('0x16d')]+=0x1;_0x2bdde2['countglobal']+=0x1;_0x45a65f[_0x5177('0xb3')](_0x2bdde2)[_0x5177('0x9e')](loggerCatch(_0x5177('0x17f')));if(_0x45a65f[_0x5177('0x165')](0x5,_0x4ad945,_0x1cd917)){if(_0x2bdde2[_0x5177('0x16d')]>=_0x1cd917[_0x5177('0x180')]){_0x45a65f[_0x5177('0x17d')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,_0x5177('0x181'));}else{_0x45a65f[_0x5177('0x178')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,'reason\x205\x20busy');}}break;case'8':_0x1cd917[_0x5177('0x67')]+=0x1;_0x2bdde2['state']=0x8;_0x2bdde2[_0x5177('0x97')]=_0x5177('0x182');_0x2bdde2[_0x5177('0x166')]+=0x1;_0x2bdde2[_0x5177('0x17c')]+=0x1;_0x45a65f['createHistory'](_0x2bdde2)[_0x5177('0x9e')](loggerCatch(_0x5177('0x183')));if(_0x45a65f[_0x5177('0x165')](0x8,_0x4ad945,_0x1cd917)){if(_0x2bdde2['countcongestionretry']>=_0x1cd917['dialCongestionMaxRetry']){_0x45a65f[_0x5177('0x17d')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,'reason\x208\x20congestion');}else{_0x45a65f[_0x5177('0x178')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,_0x5177('0x184'));}}break;default:_0x1cd917['outboundUnknownCallsDay']+=0x1;_0x2bdde2[_0x5177('0xcf')]=0xc;_0x2bdde2['statedesc']=_0x47f096['reason'];_0x45a65f[_0x5177('0xb3')](_0x2bdde2)[_0x5177('0x9e')](loggerCatch(_0x5177('0x185')));if(_0x45a65f[_0x5177('0x165')](_0x47f096[_0x5177('0xe4')],_0x4ad945,_0x1cd917)){if(_0x2bdde2['countbusyretry']+_0x2bdde2[_0x5177('0x166')]+_0x2bdde2[_0x5177('0x167')]>=_0x1cd917[_0x5177('0x177')]){_0x45a65f[_0x5177('0x178')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,_0x47f096['reason']);}else{_0x45a65f[_0x5177('0x17d')](_0x2bdde2,_0x1b5d2f,_0x14e9ea,_0x47f096[_0x5177('0xe4')]);}}}});};Dialer[_0x5177('0x20')][_0x5177('0x178')]=function(_0x233c41,_0xd54d60,_0x3de35a,_0x166a09){var _0x4ee260=new Final(_0x233c41);_0x4ee260[_0x5177('0xcf')]=0xf;_0x4ee260[_0x5177('0x97')]=_0x5177('0x186');this['createStateFinal'](_0x4ee260,_0xd54d60,_0x3de35a,_0x166a09);};Dialer[_0x5177('0x20')][_0x5177('0x17d')]=function(_0x9b39a6,_0x33d381,_0x43eb5f,_0x45a969){this[_0x5177('0xb1')](_0x9b39a6)['then'](function(_0x55175c){return _0x33d381(msgResponse('[callProgressDetecting]',_0x5177('0xc2'),_0x45a969));})[_0x5177('0x9e')](function(_0x4a79f2){return _0x43eb5f(msgResponse(_0x5177('0x187'),'Failure',_0x5177('0x188')));});};Dialer['prototype'][_0x5177('0xa')]=function(_0x3fba0b){var _0x443245=this;var _0x3e8ea6=_0x3fba0b[_0x5177('0x189')]/0x64;var _0x30c749=_0x3fba0b[_0x5177('0x18a')]/(_0x3fba0b[_0x5177('0x18a')]+_0x3fba0b[_0x5177('0xce')]);var _0x14d0ab=_0x3fba0b[_0x5177('0x58')]-_0x3fba0b['predictiveIntervalPauses']-_0x3fba0b[_0x5177('0x5e')]-_0x3fba0b[_0x5177('0x76')]-_0x3fba0b[_0x5177('0x5b')];var _0x4d3bd6=(_0x3fba0b[_0x5177('0x58')]-_0x3fba0b['predictiveIntervalPauses'])*_0x3fba0b['predictiveIntervalLowerLimit'];var _0x3f9c6e=Math[_0x5177('0x18b')](_0x3fba0b[_0x5177('0x18c')]*_0x3fba0b['erlangAbandonmentRate']*_0x3fba0b[_0x5177('0x72')]*_0x3fba0b[_0x5177('0x74')]);if(_['isUndefined'](_0x3fba0b[_0x5177('0x30')])){loggerPredictive['info']('[startMethodPredictive][StartProgressive][First]');if(!_[_0x5177('0x44')](_0x3fba0b[_0x5177('0x2f')])){_0x3fba0b[_0x5177('0x2f')]=undefined;loggerPredictive[_0x5177('0x8a')](_0x5177('0x18d'),_0x5177('0x18e'));}if(!_[_0x5177('0x44')](_0x3fba0b['handlePredictive'])){loggerPredictive[_0x5177('0x8a')](_0x5177('0x18d'),_0x5177('0x18f'));clearInterval(_0x3fba0b['handlePredictive']);_0x3fba0b[_0x5177('0x85')]=undefined;}_0x3fba0b[_0x5177('0x30')]=moment()['format'](_0x5177('0xe8'));loggerPredictive[_0x5177('0x7d')](_0x5177('0x190'),_0x3fba0b[_0x5177('0x30')],_0x3fba0b[_0x5177('0x46')]);this[_0x5177('0x125')](_0x3fba0b,0x1);}else if(ifInterval(_0x3fba0b[_0x5177('0x191')],_0x3fba0b[_0x5177('0x30')])){this[_0x5177('0x125')](_0x3fba0b,0x1);loggerPredictiveCalls[_0x5177('0x7d')](_0x5177('0x192'),_0x3fba0b[_0x5177('0x30')],_0x3fba0b[_0x5177('0x46')]);_0x3fba0b[_0x5177('0x18c')]=0x0;_0x3fba0b[_0x5177('0x71')]=0x0;}else if(_0x3e8ea6<_0x30c749&&_0x3fba0b[_0x5177('0x193')]===_0x5177('0x194')){freeVariablesPredictive(_0x3fba0b);loggerPredictive[_0x5177('0x7d')](_0x5177('0x195'),_0x5177('0x196'),_0x30c749,_0x5177('0x30'),_0x3fba0b[_0x5177('0x46')]);}else if(_0x14d0ab>_0x4d3bd6){freeVariablesPredictive(_0x3fba0b);loggerPredictive['info'](_0x5177('0x197'),_0x5177('0x198'),_0x14d0ab,_0x5177('0x199'),_0x4d3bd6);}else if(_0x3f9c6e<_0x3fba0b['predictiveIntervalErlangCallsDroppedCalls']&&_0x3fba0b[_0x5177('0x193')]===_0x5177('0x194')){freeVariablesPredictive(_0x3fba0b);loggerPredictive[_0x5177('0x7d')](_0x5177('0x19a'),_0x5177('0x19b'),_0x3f9c6e,_0x5177('0x19c'),_0x3fba0b[_0x5177('0x71')],'startProgressive',_0x3fba0b[_0x5177('0x46')]);}else if(!ifInterval(_0x3fba0b['dialPredictiveInterval'],_0x3fba0b['startProgressive'])&&_[_0x5177('0x44')](_0x3fba0b[_0x5177('0x2f')])&&!_[_0x5177('0x44')](_0x3fba0b[_0x5177('0x30')])){_0x3fba0b['startPredictive']=moment()[_0x5177('0x79')](_0x5177('0xe8'));loggerPredictive[_0x5177('0x7d')](_0x5177('0x19d'),_0x3fba0b[_0x5177('0x2f')],_0x3fba0b[_0x5177('0x46')]);this[_0x5177('0x19e')](_0x3fba0b['dialPredictiveInterval'])[_0x5177('0xa5')](this[_0x5177('0x19f')](_0x3fba0b))['then'](mergeDataErlangB(_0x3fba0b))['then'](this[_0x5177('0x1a0')](_0x3fba0b))[_0x5177('0x9e')](loggerCatchPredictive('[averageHandleTime][ErlangB]\x20',_0x3fba0b));}else if(!ifInterval(_0x3fba0b[_0x5177('0x191')],_0x3fba0b[_0x5177('0x2f')])){_0x3fba0b[_0x5177('0x71')]=0x0;_0x3fba0b['startPredictive']=moment()['format'](_0x5177('0xe8'));loggerPredictive[_0x5177('0x7d')](_0x5177('0x1a1'),_0x3fba0b[_0x5177('0x2f')],_0x3fba0b[_0x5177('0x46')]);clearInterval(_0x3fba0b[_0x5177('0x85')]);_0x3fba0b[_0x5177('0x85')]=undefined;this[_0x5177('0x19e')](_0x3fba0b[_0x5177('0x191')])[_0x5177('0xa5')](this[_0x5177('0x19f')](_0x3fba0b))[_0x5177('0xa5')](mergeDataErlangB(_0x3fba0b))[_0x5177('0xa5')](this['startMethodPredictive'](_0x3fba0b))[_0x5177('0x9e')](loggerCatchPredictive('[averageHandleTime][ErlangB]\x20',_0x3fba0b));}};Dialer[_0x5177('0x20')][_0x5177('0x19f')]=function(_0x2d7fd7){var _0x25a3a6=this;return function(_0x5c2d2f){return new BPromise(function(_0x2e89cf,_0x1a6813){_[_0x5177('0x83')](_0x2d7fd7,_0x5c2d2f[0x0]);if(checkGetDataPredictive(_0x5c2d2f[0x0])){loggerPredictive[_0x5177('0x7d')](JSON['stringify'](_0x5c2d2f[0x0]));if(_0x2d7fd7[_0x5177('0x193')]===_0x5177('0x194')){return _0x25a3a6['getVoiceQueueRtPauses'](_0x2d7fd7['id'])[_0x5177('0xa5')](function(_0x22c120){var _0x53bcba=_0x2d7fd7[_0x5177('0x58')]-_0x22c120[0x0][_0x5177('0x1a2')];var _0x241ba9=_0x2d7fd7['dialPredictiveInterval']*0x3c;var _0x2fe8e8=_0x5c2d2f[0x0][_0x5177('0x7c')]+_0x5c2d2f[0x0][_0x5177('0x6f')];var _0x1778eb=(_0x5c2d2f[0x0][_0x5177('0x6e')]+_0x5c2d2f[0x0][_0x5177('0x70')]+_0x5c2d2f[0x0][_0x5177('0x1a3')])/_0x5c2d2f[0x0][_0x5177('0x75')];var _0x22fa3a=_0x2d7fd7[_0x5177('0x189')]/0x64;_0x2d7fd7[_0x5177('0x1a4')]=_0x22c120[0x0]['outboundQueuePauses']||0x0;_0x2d7fd7[_0x5177('0x72')]=_0x1778eb>0x0?_0x1778eb:0x1;return _0x25a3a6[_0x5177('0x1a5')](_0x53bcba,_0x241ba9,_0x2fe8e8,_0x1778eb,_0x22fa3a);})[_0x5177('0xa5')](function(_0x59af30){return _0x2e89cf(_0x59af30);})[_0x5177('0x9e')](function(_0x2611af){return _0x1a6813(msgResponse(_0x5177('0x1a6'),_0x5177('0x111'),JSON[_0x5177('0x4f')](_0x2611af)));});}if(_0x2d7fd7[_0x5177('0x193')]==='agentBusyFactor'){return _0x25a3a6['getVoiceQueueRtPauses'](_0x2d7fd7['id'])[_0x5177('0xa5')](function(_0x215e5a){var _0x3dfbda=_0x2d7fd7[_0x5177('0x58')]-_0x215e5a[0x0][_0x5177('0x1a2')];var _0x28e430=_0x2d7fd7[_0x5177('0x191')]*0x3c;var _0x1c8131=_0x5c2d2f[0x0]['predictiveIntervalAvgTalktime']+_0x5c2d2f[0x0][_0x5177('0x6f')];var _0x3a65f6=(_0x5c2d2f[0x0][_0x5177('0x6e')]+_0x5c2d2f[0x0][_0x5177('0x70')]+_0x5c2d2f[0x0][_0x5177('0x1a3')])/_0x5c2d2f[0x0][_0x5177('0x75')];var _0x33b9b1=_0x2d7fd7[_0x5177('0x189')]/0x64;_0x2d7fd7['predictiveIntervalPauses']=_0x215e5a[0x0][_0x5177('0x1a2')]||0x0;_0x2d7fd7[_0x5177('0x72')]=_0x3a65f6>0x0?_0x3a65f6:0x1;return _0x25a3a6[_0x5177('0x1a7')](_0x3dfbda,_0x28e430,_0x1c8131,_0x3a65f6,_0x33b9b1);})[_0x5177('0xa5')](function(_0x1a37b1){return _0x2e89cf(_0x1a37b1);})[_0x5177('0x9e')](function(_0x47ee0e){return _0x1a6813(msgResponse(_0x5177('0x1a6'),_0x5177('0x111'),JSON[_0x5177('0x4f')](_0x47ee0e)));});}}else{return _0x1a6813(msgResponse(_0x5177('0x1a8'),_0x5177('0x111'),'check\x20failure'));}});};};Dialer[_0x5177('0x20')][_0x5177('0x1a0')]=function(_0x3d4e2b){var _0x58d89c=this;return function(){var _0x4c3865=0x0;var _0x69b226=Math['floor'](_0x3d4e2b['erlangCallToSecond']*0x3e8);if(_0x69b226>0x0){_0x69b226=_0x69b226<0x64?0x64:_0x69b226;loggerPredictive['info'](_0x5177('0x1a9'),_0x69b226);_0x3d4e2b[_0x5177('0x85')]=setInterval(function(){_0x58d89c[_0x5177('0x85')](_0x3d4e2b);loggerPredictiveCalls[_0x5177('0x7d')]('[handlePredictive]',_0x4c3865+=0x1);},_0x69b226);}else{loggerPredictive[_0x5177('0x7d')]('[startMethodPredictive][milliseconds]\x20',_0x5177('0x1aa'),_0x69b226);}};};Dialer['prototype'][_0x5177('0x1ab')]=function(_0x4204d0,_0x34a4d2){var _0x380eba=this;return function(_0x2a4cb5){if(_[_0x5177('0x87')](_0x2a4cb5)){if(_['isNil'](_0x34a4d2['UserId'])||!_0x34a4d2['recallme']){if(_0x4204d0[_0x5177('0x61')]===_0x5177('0x9')){_0x4204d0[_0x5177('0xfe')]=_[_0x5177('0x44')](_0x4204d0[_0x5177('0xfe')])?!![]:_0x4204d0['queueStatusComplete'];var _0x44bf05=uuid['v4']();_0x380eba['actions'][_0x44bf05]=new Action(_0x4204d0,_0x34a4d2,_0x44bf05);loggerBooked['info'](_0x5177('0x1ac'),_0x44bf05,_0x5177('0x1ad'),JSON['stringify'](_0x4204d0[_0x5177('0xfe')]),_0x5177('0x1ae'),_0x4204d0[_0x5177('0x46')]);if(_0x4204d0[_0x5177('0xfe')]){_0x4204d0[_0x5177('0xfe')]=![];_0x380eba['queueBooked'][_0x380eba['actions'][_0x44bf05][_0x5177('0xa1')]]=[];ami[_0x5177('0x116')]({'actionid':_0x44bf05,'action':_0x5177('0x1af'),'queue':_0x4204d0['name']})[_0x5177('0x9e')](function(_0x5a47e7){_0x380eba[_0x5177('0xa0')](_0x4204d0);_0x380eba[_0x5177('0xac')]({'active':![],'ContactId':_0x380eba[_0x5177('0x2b')][_0x44bf05]['ContactId'],'ListId':_0x380eba[_0x5177('0x2b')][_0x44bf05][_0x5177('0xbb')],'VoiceQueueId':_0x380eba['actions'][_0x44bf05]['VoiceQueueId']||undefined,'CampaignId':_0x380eba['actions'][_0x44bf05]['CampaignId']||undefined})[_0x5177('0x9e')](loggerCatch(_0x5177('0x1b0')));delete _0x380eba[_0x5177('0x2b')][_0x44bf05];});}else{loggerBooked[_0x5177('0x7d')](_0x5177('0x1b1'),JSON[_0x5177('0x4f')](_0x4204d0['queueStatusComplete']),_0x5177('0x1ae'),_0x4204d0[_0x5177('0x46')]);_0x380eba['updateOriginated'](_0x4204d0);_0x380eba[_0x5177('0xac')]({'active':![],'ContactId':_0x380eba[_0x5177('0x2b')][_0x44bf05][_0x5177('0x101')],'ListId':_0x380eba[_0x5177('0x2b')][_0x44bf05][_0x5177('0xbb')],'VoiceQueueId':_0x380eba['actions'][_0x44bf05][_0x5177('0xbd')]||undefined,'CampaignId':_0x380eba[_0x5177('0x2b')][_0x44bf05][_0x5177('0xbe')]||undefined})[_0x5177('0x9e')](loggerCatch(_0x5177('0x1b0')));delete _0x380eba['actions'][_0x44bf05];}}else{return _0x380eba[_0x5177('0x133')](_0x4204d0,_0x34a4d2);}}else{if(getDiff(_0x34a4d2['scheduledat'])<_0x4204d0[_0x5177('0x1b2')]*0x3c){_0x380eba['preview']['run'](_0x34a4d2['id'])['finally'](function(){_0x380eba[_0x5177('0xa0')](_0x4204d0);});}else{_0x4204d0[_0x5177('0x6b')]+=0x1;_0x380eba[_0x5177('0xa0')](_0x4204d0);if(_0x4204d0[_0x5177('0x1b3')]){_0x380eba[_0x5177('0xac')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x34a4d2['ContactId'],'ListId':_0x34a4d2['ListId'],'VoiceQueueId':_0x34a4d2['VoiceQueueId']||undefined,'CampaignId':_0x34a4d2['CampaignId']||undefined})[_0x5177('0x9e')](loggerCatch(_0x5177('0x1b4')));_0x380eba['createHistory'](createObjHistory(_0x4204d0,_0x34a4d2,'RECALLINQUEUE',0x17,_0x5177('0x1b5')))[_0x5177('0x9e')](loggerCatch(_0x5177('0x1b6')));}else{_0x380eba[_0x5177('0xd2')](createObjHistory(_0x4204d0,_0x34a4d2,'RECALLFAILEDTIMEOUT',0x16,_0x5177('0x1b7')),_0x5177('0x1b8'),_0x5177('0x1b9'));}}}}else{_0x4204d0[_0x5177('0x1ba')]+=0x1;_0x380eba[_0x5177('0xd2')](createObjHistory(_0x4204d0,_0x34a4d2,'BLACKLIST',0xd,_0x5177('0x1bb')),'[Originate][historyBlacklist]',_0x5177('0x1bc'));throw _0x5177('0x1bd');}};};Dialer[_0x5177('0x20')][_0x5177('0x1be')]=function(_0x14484c){var _0x53427e=this;var _0x2bae5a=[];var _0x4ffd40=_0x14484c['limitCalls']-_0x14484c[_0x5177('0x76')]-_0x14484c[_0x5177('0x1bf')];emitCampaignSummary(_0x14484c);if(_0x4ffd40>0x0){if(_0x4ffd40>this[_0x5177('0x29')]){_0x4ffd40=this['maxNumberOriginate'];}_0x14484c[_0x5177('0x1bf')]+=_0x4ffd40;this[_0x5177('0xae')](_0x14484c['id'],_0x4ffd40,_0x14484c[_0x5177('0x1c0')])[_0x5177('0xa5')](function(_0x501ce6){_0x14484c[_0x5177('0x1bf')]-=_0x4ffd40;_0x14484c[_0x5177('0x1bf')]=_0x14484c[_0x5177('0x1bf')]>0x0?_0x14484c[_0x5177('0x1bf')]:0x0;if(!checkContactEmpty(_0x501ce6)){_0x14484c[_0x5177('0x45')]=_0x5177('0x90');logger[_0x5177('0x7d')]('[getContactCampaign2][Empty]'+_0x14484c[_0x5177('0x46')]);}else{_0x14484c[_0x5177('0x76')]+=_0x501ce6[_0x5177('0x8b')];_0x14484c['message']=_0x5177('0x1c1');for(var _0x2790e5=0x0;_0x2790e5<_0x501ce6[_0x5177('0x8b')];_0x2790e5+=0x1){_0x14484c[_0x5177('0x1c2')]+=0x1;if(_[_0x5177('0x9c')](_0x501ce6[_0x2790e5])||_[_0x5177('0x9c')](_0x501ce6[_0x2790e5]['Contact'])||_[_0x5177('0x9c')](_0x501ce6[_0x2790e5][_0x5177('0x135')]['phone'])){_0x53427e[_0x5177('0xb8')](_0x5177('0x1c3'),_0x14484c,_0x501ce6[_0x2790e5]);}else{_0x53427e[_0x5177('0xa8')](_[_0x5177('0xba')](_0x501ce6[_0x2790e5],['CampaignId',_0x5177('0x1c4')]))['then'](_0x53427e[_0x5177('0x1ab')](_0x14484c,_0x501ce6[_0x2790e5]))[_0x5177('0x9e')](_0x53427e[_0x5177('0xb7')](_0x5177('0x1c5'),_0x14484c));}}}})['catch'](loggerGetContactDialer(_0x5177('0x1c6'),_0x14484c,_0x4ffd40));}};Dialer['prototype'][_0x5177('0x125')]=function(_0xddf342,_0x3f22c7){var _0x42ee36=this;var _0x5bfe71=[];var _0x32df88=_0x3f22c7>=0x1?_0x3f22c7:0x1;var _0x563587=[];if(_0xddf342[_0x5177('0x61')]==='booked'){_0x32df88=0x1;}var _0x1d3ef5=Math[_0x5177('0x18b')](_0xddf342[_0x5177('0x57')]*_0x32df88)-_0xddf342[_0x5177('0x76')]-_0xddf342['temp'];emitVoiceQueueSummary(_0xddf342);if(_0xddf342[_0x5177('0x1c7')]>0x0){var _0x438ace=_0xddf342[_0x5177('0x1c7')]-_0xddf342[_0x5177('0x76')]-_0xddf342[_0x5177('0x5b')]-_0xddf342[_0x5177('0x1bf')]-_0xddf342['pTalking'];if(_0x1d3ef5>_0x438ace){_0x1d3ef5=_0x438ace;}}if(_0x1d3ef5>0x0){if(_0xddf342[_0x5177('0x61')]===_0x5177('0x9')){_0x1d3ef5=0x1;}if(_0x1d3ef5>this[_0x5177('0x29')]){_0x1d3ef5=this[_0x5177('0x29')];}_0xddf342[_0x5177('0x1bf')]+=_0x1d3ef5;for(var _0x32cbad in this['agents']){if(this[_0x5177('0x27')][_0x5177('0x8c')](_0x32cbad)){if(this['agents'][_0x32cbad][_0x5177('0xcf')]===_0x5177('0x1c8')&&this[_0x5177('0x27')][_0x32cbad][_0x5177('0x9d')]===_0x5177('0xc4')){_0x5bfe71[_0x5177('0x115')](this[_0x5177('0x27')][_0x32cbad]['id']);}}}this[_0x5177('0x1c9')](_0xddf342['id'],_0x5bfe71,_0x1d3ef5,_0xddf342['dialOrderByScheduledAt'])[_0x5177('0xa5')](function(_0x2a8e62){_0xddf342['temp']-=_0x1d3ef5;_0xddf342[_0x5177('0x1bf')]=_0xddf342['temp']>0x0?_0xddf342[_0x5177('0x1bf')]:0x0;if(!checkContactEmpty(_0x2a8e62)){_0x42ee36['countReScheduled'](_0xddf342)[_0x5177('0xa5')](sendMessageReschedule(_0xddf342))[_0x5177('0x9e')](loggerCatch(_0x5177('0xa6')));}else{_0xddf342[_0x5177('0x76')]+=_0x2a8e62['length'];_0xddf342[_0x5177('0x45')]=_0xddf342['dialMethod']===_0x5177('0x9')?_0x5177('0x1ca'):_0x5177('0x1c1');for(var _0x215715=0x0;_0x215715<_0x2a8e62[_0x5177('0x8b')];_0x215715+=0x1){if(_[_0x5177('0x9c')](_0x2a8e62[_0x215715])||_[_0x5177('0x9c')](_0x2a8e62[_0x215715][_0x5177('0x135')])||_['isNil'](_0x2a8e62[_0x215715][_0x5177('0x135')]['phone'])){_0x42ee36[_0x5177('0xb8')](_0x5177('0x1c3'),_0xddf342,_0x2a8e62[_0x215715]);}else{_0x42ee36[_0x5177('0x1cb')](_[_0x5177('0xba')](_0x2a8e62[_0x215715],['VoiceQueueId',_0x5177('0x1c4')]))[_0x5177('0xa5')](_0x42ee36['checkContactBlack'](_0xddf342,_0x2a8e62[_0x215715]))[_0x5177('0x9e')](_0x42ee36[_0x5177('0xb7')]('[actionOriginate]\x20',_0xddf342));}}}})['catch'](loggerGetContactDialer(_0x5177('0x1cc'),_0xddf342,_0x1d3ef5));}};Dialer[_0x5177('0x20')][_0x5177('0x85')]=function(_0x5d095c){var _0x1c5c7b=this;if(_0x5d095c[_0x5177('0x1c7')]>0x0){var _0xdd0bf3=_0x5d095c[_0x5177('0x1c7')]-_0x5d095c[_0x5177('0x76')]-_0x5d095c[_0x5177('0x5b')];if(_0xdd0bf3>0x0){this[_0x5177('0x1cd')](_0x5d095c);}else{loggerPredictiveCalls[_0x5177('0x7d')]('[handlePredictive][limitChannel]');}}else{this['tryOriginatePredictive'](_0x5d095c);}};Dialer['prototype'][_0x5177('0x1cd')]=function(_0x28e093){var _0x3a3009=this;var _0x34011d=[];_0x28e093['originated']+=0x1;for(var _0x5a996d in this[_0x5177('0x27')]){if(this[_0x5177('0x27')][_0x5177('0x8c')](_0x5a996d)){if(this[_0x5177('0x27')][_0x5a996d][_0x5177('0xcf')]===_0x5177('0x1c8')&&this[_0x5177('0x27')][_0x5a996d]['status']===_0x5177('0xc4')){_0x34011d['push'](this['agents'][_0x5a996d]['id']);}}}this[_0x5177('0x1c9')](_0x28e093['id'],_0x34011d,0x1,_0x28e093[_0x5177('0x1c0')])[_0x5177('0xa5')](function(_0x64e073){if(!checkContactEmpty(_0x64e073)){checkContactLowerLimitOriginate(_0x28e093,0x1,0x0);_0x3a3009['countReScheduled'](_0x28e093)[_0x5177('0xa5')](sendMessageReschedule(_0x28e093))[_0x5177('0x9e')](loggerCatch(_0x5177('0xa6')));}else{_0x28e093[_0x5177('0x45')]=_0x5177('0x1c1');if(_[_0x5177('0x9c')](_0x64e073[0x0])||_[_0x5177('0x9c')](_0x64e073[0x0]['Contact'])||_[_0x5177('0x9c')](_0x64e073[0x0]['Contact'][_0x5177('0x136')])){_0x3a3009[_0x5177('0xb8')](_0x5177('0x1c3'),_0x28e093,_0x64e073[0x0]);}else{_0x3a3009['checkIsBlackList'](_[_0x5177('0xba')](_0x64e073[0x0],['VoiceQueueId',_0x5177('0x1c4')]))[_0x5177('0xa5')](_0x3a3009[_0x5177('0x1ab')](_0x28e093,_0x64e073[0x0]))[_0x5177('0x9e')](_0x3a3009['loggerHandler'](_0x5177('0x1ce'),_0x28e093));}}})[_0x5177('0x9e')](loggerGetContactDialer(_0x5177('0x1cf'),_0x28e093,0x1));emitVoiceQueueSummary(_0x28e093);};Dialer[_0x5177('0x20')][_0x5177('0x1a5')]=function(_0x8a767c,_0x1bf095,_0x4ec3ba,_0x3cdbd4,_0x5ec009,_0x40a59a){loggerPredictive[_0x5177('0x7d')](_0x5177('0x1d0'),_0x5177('0x1d1'),_0x8a767c,_0x5177('0x1d2'),_0x1bf095,_0x5177('0x1d3'),_0x4ec3ba,_0x5177('0x1d4'),_0x3cdbd4,'\x20Amax\x20=\x20',_0x5ec009);return new BPromise(function(_0x365deb,_0x289343){if(_0x8a767c<=0x0||isNaN(_0x8a767c)){return _0x289343(msgResponse(_0x5177('0x1d0'),_0x5177('0x4e'),_0x5177('0x1d5')+_0x8a767c));}if(_0x4ec3ba<=0x0||isNaN(_0x4ec3ba)){return _0x289343(msgResponse(_0x5177('0x1d0'),_0x5177('0x4e'),_0x5177('0x1d6')+_0x4ec3ba));}if(_0x3cdbd4<=0x0||isNaN(_0x3cdbd4)){return _0x289343(msgResponse(_0x5177('0x1d0'),_0x5177('0x4e'),_0x5177('0x1d7')+_0x3cdbd4));}if(_0x1bf095<=0x0||isNaN(_0x1bf095)){return _0x289343(msgResponse(_0x5177('0x1d0'),'Error',_0x5177('0x1d8')+_0x1bf095));}if(_0x5ec009<=0x0||isNaN(_0x5ec009)){return _0x289343(msgResponse(_0x5177('0x1d0'),_0x5177('0x4e'),'Amax\x20=\x20'+_0x5ec009));}_0x40a59a=_0x40a59a||0x0;var _0x3bffd2=0x1/_0x4ec3ba;var _0x479f9a=0x0;var _0x269d3f=0x0;var _0x3cb380=0x0;var _0x123679=0x0;for(var _0x492a2b=0x0;_0x3cb380<_0x5ec009;_0x492a2b+=0x1){_0x269d3f=_0x492a2b/_0x1bf095;_0x479f9a=(_0x3cdbd4*_0x269d3f+_0x40a59a)/_0x3bffd2;_0x3cb380=erlangb(_0x479f9a,_0x8a767c);_0x123679=_0x479f9a/_0x8a767c*(0x1-erlangb(_0x479f9a,_0x8a767c));}return _0x365deb({'erlangCalls':_0x492a2b,'erlangCallToSecond':_0x1bf095/_0x492a2b,'erlangAbandonmentRate':_0x3cb380,'erlangBusyFactor':_0x123679});});};Dialer['prototype'][_0x5177('0x1a7')]=function(_0x5daf7f,_0x45887a,_0x1d3647,_0x51165f,_0x2b9772,_0x403066){loggerPredictive[_0x5177('0x7d')](_0x5177('0x1d9'),_0x5177('0x1d1'),_0x5daf7f,'\x20interval\x20=\x20',_0x45887a,'\x20Ts\x20=\x20',_0x1d3647,_0x5177('0x1d4'),_0x51165f,_0x5177('0x1da'),_0x2b9772);return new BPromise(function(_0x444472,_0x3074ff){if(_0x5daf7f<=0x0||isNaN(_0x5daf7f)){return _0x3074ff(msgResponse('[abandonmentRate]',_0x5177('0x4e'),_0x5177('0x1d5')+_0x5daf7f));}if(_0x1d3647<=0x0||isNaN(_0x1d3647)){return _0x3074ff(msgResponse(_0x5177('0x1d0'),_0x5177('0x4e'),_0x5177('0x1d6')+_0x1d3647));}if(_0x51165f<=0x0||isNaN(_0x51165f)){return _0x3074ff(msgResponse('[abandonmentRate]',_0x5177('0x4e'),_0x5177('0x1d7')+_0x51165f));}if(_0x45887a<=0x0||isNaN(_0x45887a)){return _0x3074ff(msgResponse('[abandonmentRate]',_0x5177('0x4e'),_0x5177('0x1d8')+_0x45887a));}if(_0x2b9772<=0x0||isNaN(_0x2b9772)){return _0x3074ff(msgResponse('[abandonmentRate]',_0x5177('0x4e'),'Amax\x20=\x20'+_0x2b9772));}_0x403066=_0x403066||0x0;var _0x2a2074=0x1/_0x1d3647;var _0x4edb4c=0x0;var _0x39f1ad=0x0;var _0x1bf4bb=0x0;var _0x296b91=0x0;for(var _0x5eef2c=0x0;_0x296b91<_0x2b9772;_0x5eef2c+=0x1){_0x39f1ad=_0x5eef2c/_0x45887a;_0x4edb4c=(_0x51165f*_0x39f1ad+_0x403066)/_0x2a2074;_0x1bf4bb=erlangb(_0x4edb4c,_0x5daf7f);_0x296b91=_0x4edb4c/_0x5daf7f*(0x1-erlangb(_0x4edb4c,_0x5daf7f));}return _0x444472({'erlangCalls':_0x5eef2c,'erlangCallToSecond':_0x45887a/_0x5eef2c,'erlangAbandonmentRate':_0x1bf4bb,'erlangBusyFactor':_0x296b91});});};module[_0x5177('0x1db')]=Dialer;
\ No newline at end of file
index 0e88c6c..0aa5a16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b5d=['connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','uniqueid','calleridname','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','talktime'];(function(_0x3a142b,_0x40aeff){var _0x3ad829=function(_0x90ef7a){while(--_0x90ef7a){_0x3a142b['push'](_0x3a142b['shift']());}};_0x3ad829(++_0x40aeff);}(_0x1b5d,0x1ca));var _0xd1b5=function(_0x471540,_0x428580){_0x471540=_0x471540-0x0;var _0x10217a=_0x1b5d[_0x471540];return _0x10217a;};'use strict';var util=require(_0xd1b5('0x0'));var _=require(_0xd1b5('0x1'));var moment=require(_0xd1b5('0x2'));function getSeconds(_0x49a424,_0x285c07){var _0x40eae3=moment(_0x49a424)[_0xd1b5('0x3')](0x0);var _0x475b1a=moment(_0x285c07)[_0xd1b5('0x3')](0x0);return _0x40eae3['diff'](_0x475b1a,_0xd1b5('0x4'));}function QueueCallerAbandon(_0x57d06d,_0x44821d){this[_0xd1b5('0x5')]=_0x57d06d[_0xd1b5('0x5')];this[_0xd1b5('0x6')]=_0x57d06d[_0xd1b5('0x6')];this[_0xd1b5('0x7')]=_0x57d06d[_0xd1b5('0x6')]==='outbound'?_0xd1b5('0x8'):_0x57d06d['type'];this['countbusyretry']=_0x57d06d[_0xd1b5('0x9')];this[_0xd1b5('0xa')]=_0x57d06d[_0xd1b5('0xa')];this[_0xd1b5('0xb')]=_0x57d06d[_0xd1b5('0xb')];this[_0xd1b5('0xc')]=_0x57d06d[_0xd1b5('0x9')]+_0x57d06d['countcongestionretry']+_0x57d06d['countnoanswerretry'];this[_0xd1b5('0xd')]=_0x44821d['uniqueid'];this[_0xd1b5('0xe')]=_0x57d06d['name'];this[_0xd1b5('0xf')]=_0x57d06d[_0xd1b5('0x10')];this[_0xd1b5('0x11')]=_0x57d06d[_0xd1b5('0x11')];this[_0xd1b5('0x12')]=_0x57d06d[_0xd1b5('0x12')];this[_0xd1b5('0x13')]=_0x57d06d[_0xd1b5('0x13')];this[_0xd1b5('0x14')]=this[_0xd1b5('0x13')];this[_0xd1b5('0x15')]=getSeconds(_0x57d06d[_0xd1b5('0x12')],_0x57d06d[_0xd1b5('0x11')]);this['holdtime']=getSeconds(this['droptime'],_0x57d06d['responsetime']);this[_0xd1b5('0x16')]=0x0;this[_0xd1b5('0x8')]=_0x44821d[_0xd1b5('0x8')];this['membername']=_0x44821d[_0xd1b5('0x17')];this[_0xd1b5('0x18')]=_0x44821d[_0xd1b5('0x18')];this[_0xd1b5('0x19')]=_0x57d06d[_0xd1b5('0x19')];this[_0xd1b5('0x1a')]=_0x57d06d['callbackuniqueid'];this[_0xd1b5('0x1b')]=_0x57d06d[_0xd1b5('0x1b')];this[_0xd1b5('0x1c')]=_0x57d06d['recallme'];this[_0xd1b5('0x1d')]=_0x57d06d[_0xd1b5('0x1d')];this[_0xd1b5('0x1e')]=_0x57d06d[_0xd1b5('0x1e')];this['UserId']=_0x57d06d[_0xd1b5('0x1f')];this['VoiceQueueId']=_0x57d06d[_0xd1b5('0x20')];this[_0xd1b5('0x21')]=_0x57d06d[_0xd1b5('0x21')];this[_0xd1b5('0x22')]=_0x57d06d[_0xd1b5('0x22')]||'';this['originatecalleridname']=_0x57d06d[_0xd1b5('0x23')]||'';}module[_0xd1b5('0x24')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x19ea=['endtime','ringtime','holdtime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','exports','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','droptime'];(function(_0x2307fa,_0x266e5e){var _0x496486=function(_0x53466e){while(--_0x53466e){_0x2307fa['push'](_0x2307fa['shift']());}};_0x496486(++_0x266e5e);}(_0x19ea,0x19d));var _0xa19e=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x19ea[_0x487b0c];return _0x1adbdc;};'use strict';var util=require('util');var _=require(_0xa19e('0x0'));var moment=require(_0xa19e('0x1'));function getSeconds(_0x596006,_0x4d2736){var _0x578826=moment(_0x596006)[_0xa19e('0x2')](0x0);var _0x19714c=moment(_0x4d2736)[_0xa19e('0x2')](0x0);return _0x578826[_0xa19e('0x3')](_0x19714c,_0xa19e('0x4'));}function QueueCallerAbandon(_0x2bd9f7,_0x40c9bd){this[_0xa19e('0x5')]=_0x2bd9f7[_0xa19e('0x5')];this[_0xa19e('0x6')]=_0x2bd9f7[_0xa19e('0x6')];this[_0xa19e('0x7')]=_0x2bd9f7[_0xa19e('0x6')]===_0xa19e('0x8')?'queue':_0x2bd9f7[_0xa19e('0x6')];this[_0xa19e('0x9')]=_0x2bd9f7[_0xa19e('0x9')];this[_0xa19e('0xa')]=_0x2bd9f7['countcongestionretry'];this[_0xa19e('0xb')]=_0x2bd9f7['countnoanswerretry'];this['countglobal']=_0x2bd9f7[_0xa19e('0x9')]+_0x2bd9f7['countcongestionretry']+_0x2bd9f7[_0xa19e('0xb')];this[_0xa19e('0xc')]=_0x40c9bd['uniqueid'];this[_0xa19e('0xd')]=_0x2bd9f7['name'];this[_0xa19e('0xe')]=_0x2bd9f7[_0xa19e('0xf')];this[_0xa19e('0x10')]=_0x2bd9f7[_0xa19e('0x10')];this[_0xa19e('0x11')]=_0x2bd9f7[_0xa19e('0x11')];this[_0xa19e('0x12')]=_0x2bd9f7[_0xa19e('0x12')];this[_0xa19e('0x13')]=this[_0xa19e('0x12')];this[_0xa19e('0x14')]=getSeconds(_0x2bd9f7[_0xa19e('0x11')],_0x2bd9f7[_0xa19e('0x10')]);this[_0xa19e('0x15')]=getSeconds(this[_0xa19e('0x12')],_0x2bd9f7[_0xa19e('0x11')]);this['talktime']=0x0;this['queue']=_0x40c9bd['queue'];this[_0xa19e('0x16')]=_0x40c9bd[_0xa19e('0x17')];this[_0xa19e('0x18')]=_0x40c9bd[_0xa19e('0x18')];this[_0xa19e('0x19')]=_0x2bd9f7[_0xa19e('0x19')];this[_0xa19e('0x1a')]=_0x2bd9f7['callbackuniqueid'];this[_0xa19e('0x1b')]=_0x2bd9f7['callbackat'];this[_0xa19e('0x1c')]=_0x2bd9f7['recallme'];this[_0xa19e('0x1d')]=_0x2bd9f7[_0xa19e('0x1d')];this['ListId']=_0x2bd9f7[_0xa19e('0x1e')];this[_0xa19e('0x1f')]=_0x2bd9f7[_0xa19e('0x1f')];this[_0xa19e('0x20')]=_0x2bd9f7[_0xa19e('0x20')];this[_0xa19e('0x21')]=_0x2bd9f7[_0xa19e('0x21')];this['originatecalleridnum']=_0x2bd9f7['originatecalleridnum']||'';this[_0xa19e('0x22')]=_0x2bd9f7[_0xa19e('0x22')]||'';}module[_0xa19e('0x23')]=QueueCallerAbandon;
\ No newline at end of file
index e65bb3f..f6c00fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dd5=['channel','format','%s/%s/%s','tech','Trunk','name','fax','localstationid','headerinfo','path','AttachmentId','moment','uniqueid'];(function(_0x31c3f8,_0x169252){var _0x8811e2=function(_0x57b04d){while(--_0x57b04d){_0x31c3f8['push'](_0x31c3f8['shift']());}};_0x8811e2(++_0x169252);}(_0x9dd5,0x16a));var _0x59dd=function(_0x7656d4,_0x77e448){_0x7656d4=_0x7656d4-0x0;var _0x1424ab=_0x9dd5[_0x7656d4];return _0x1424ab;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x59dd('0x0'));function Action(_0x3f0149,_0x530f99,_0x4d6843){this[_0x59dd('0x1')]=_0x3f0149||undefined;this[_0x59dd('0x2')]=util[_0x59dd('0x3')](_0x59dd('0x4'),_0x530f99[_0x59dd('0x5')],_0x530f99[_0x59dd('0x6')][_0x59dd('0x7')],_0x4d6843[_0x59dd('0x8')]);this[_0x59dd('0x9')]=_0x530f99[_0x59dd('0x9')];this[_0x59dd('0xa')]=_0x530f99[_0x59dd('0xa')];this['path']=_0x4d6843[_0x59dd('0xb')];this[_0x59dd('0xc')]=_0x4d6843[_0x59dd('0xc')];}module['exports']=Action;
\ No newline at end of file
+var _0x52a6=['AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk','name','fax','localstationid','headerinfo','path'];(function(_0x13a0d6,_0x9a1972){var _0x241df1=function(_0x44fd40){while(--_0x44fd40){_0x13a0d6['push'](_0x13a0d6['shift']());}};_0x241df1(++_0x9a1972);}(_0x52a6,0xe3));var _0x652a=function(_0x576266,_0x4002b0){_0x576266=_0x576266-0x0;var _0x18234f=_0x52a6[_0x576266];return _0x18234f;};'use strict';var util=require(_0x652a('0x0'));var _=require(_0x652a('0x1'));var moment=require(_0x652a('0x2'));function Action(_0x173ca9,_0x4a5f55,_0x23ada8){this['uniqueid']=_0x173ca9||undefined;this[_0x652a('0x3')]=util[_0x652a('0x4')](_0x652a('0x5'),_0x4a5f55[_0x652a('0x6')],_0x4a5f55[_0x652a('0x7')][_0x652a('0x8')],_0x23ada8[_0x652a('0x9')]);this['localstationid']=_0x4a5f55[_0x652a('0xa')];this[_0x652a('0xb')]=_0x4a5f55['headerinfo'];this[_0x652a('0xc')]=_0x23ada8[_0x652a('0xc')];this[_0x652a('0xd')]=_0x23ada8[_0x652a('0xd')];}module[_0x652a('0xe')]=Action;
\ No newline at end of file
index 13e70d1..eb0380e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf44c=['isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','uuid','tiff2pdf','fax','../ami','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','actions','newchannel','bind','syncVarSet','syncNewState','syncNewExten','faxstatus','receivefax','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','syncNewchannel','context','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','variable','value','channelstate','channelstatedesc','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','create','parse','application/pdf','.pdf','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','pick','reason','update','AttachmentId','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','message','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','path','execute','format','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xf44c,0xf9));var _0xcf44=function(_0x59deaa,_0x1cb468){_0x59deaa=_0x59deaa-0x0;var _0x77b196=_0xf44c[_0x59deaa];return _0x77b196;};'use strict';var util=require(_0xcf44('0x0'));var _=require(_0xcf44('0x1'));var BPromise=require('bluebird');var uuid=require(_0xcf44('0x2'));var moment=require('moment');var path=require('path');var tiff2pdf=require(_0xcf44('0x3'));var gs=require('./util/gs');var logger=require('../../../config/logger')(_0xcf44('0x4'));var ami=require(_0xcf44('0x5'));var rpcDb=require('./rpcDb');var Channel=require(_0xcf44('0x6'));var ut=require(_0xcf44('0x7'));var Action=require(_0xcf44('0x8'));var faxAccount=require(_0xcf44('0x9'));var attachment=require(_0xcf44('0xa'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x5ae167){this[_0xcf44('0xb')]={};this[_0xcf44('0xc')]=_0x5ae167[_0xcf44('0xc')];this[_0xcf44('0xd')]=_0x5ae167[_0xcf44('0xd')];this[_0xcf44('0xe')]={};ami['on'](_0xcf44('0xf'),this['syncNewchannel'][_0xcf44('0x10')](this));ami['on']('varset',this[_0xcf44('0x11')][_0xcf44('0x10')](this));ami['on']('newstate',this[_0xcf44('0x12')]['bind'](this));ami['on']('newexten',this[_0xcf44('0x13')]['bind'](this));ami['on'](_0xcf44('0x14'),this['syncFaxStatus'][_0xcf44('0x10')](this));ami['on'](_0xcf44('0x15'),this[_0xcf44('0x16')][_0xcf44('0x10')](this));ami['on'](_0xcf44('0x17'),this['syncHangup'][_0xcf44('0x10')](this));ami['on'](_0xcf44('0x18'),this[_0xcf44('0x19')][_0xcf44('0x10')](this));}Fax['prototype'][_0xcf44('0x1a')]=function(_0x356f7c){if(_0x356f7c[_0xcf44('0x1b')]==='from-voip-provider'){for(var _0x3bf392 in this['faxAccounts']){if(this[_0xcf44('0xc')][_0xcf44('0x1c')](_0x3bf392)){if(_0x356f7c[_0xcf44('0x1d')]===this[_0xcf44('0xc')][_0x3bf392][_0xcf44('0x1e')]){this['channels'][_0x356f7c[_0xcf44('0x1f')]]={};this[_0xcf44('0xb')][_0x356f7c[_0xcf44('0x1f')]][_0xcf44('0x20')]=_0x356f7c['channel'];this['channels'][_0x356f7c['uniqueid']]['id']=this[_0xcf44('0xc')][_0x3bf392]['id'];this['channels'][_0x356f7c[_0xcf44('0x1f')]][_0xcf44('0x21')]=this[_0xcf44('0xc')][_0x3bf392][_0xcf44('0x21')];logger[_0xcf44('0x22')](_0x356f7c[_0xcf44('0x1f')],'\x20syncNewchannel\x20');}}}}if(this['actions'][_0x356f7c[_0xcf44('0x1f')]]){this['channels'][_0x356f7c[_0xcf44('0x1f')]]={};this['channels'][_0x356f7c['uniqueid']][_0xcf44('0x20')]=_0x356f7c['channel'];logger['info'](_0x356f7c[_0xcf44('0x1f')],_0xcf44('0x23'));}};Fax[_0xcf44('0x24')][_0xcf44('0x11')]=function(_0x128feb){if(this[_0xcf44('0xb')][_0x128feb['uniqueid']]){for(var _0x1bab8c in _0x128feb[_0xcf44('0x25')]){if(_0x128feb[_0xcf44('0x25')][_0xcf44('0x1c')](_0x1bab8c)){this[_0xcf44('0xb')][_0x128feb[_0xcf44('0x1f')]][_0x1bab8c]=_0x128feb[_0xcf44('0x26')];}}}};Fax['prototype'][_0xcf44('0x12')]=function(_0xe485b3){if(this[_0xcf44('0xb')][_0xe485b3[_0xcf44('0x1f')]]){this['channels'][_0xe485b3[_0xcf44('0x1f')]][_0xcf44('0x27')]=_0xe485b3[_0xcf44('0x27')];this[_0xcf44('0xb')][_0xe485b3[_0xcf44('0x1f')]][_0xcf44('0x28')]=_0xe485b3[_0xcf44('0x28')];}};Fax[_0xcf44('0x24')]['syncNewExten']=function(_0x14f257){if(this[_0xcf44('0xb')][_0x14f257[_0xcf44('0x1f')]]){for(var _0x459602 in _0x14f257[_0xcf44('0x25')]){if(_0x14f257[_0xcf44('0x25')][_0xcf44('0x1c')](_0x459602)){this['channels'][_0x14f257[_0xcf44('0x1f')]][_0x459602]=_0x14f257[_0xcf44('0x26')];}}}};Fax[_0xcf44('0x24')][_0xcf44('0x29')]=function(_0x503cfa){if(this['channels'][_0x503cfa[_0xcf44('0x1f')]]){this[_0xcf44('0xb')][_0x503cfa['uniqueid']]['operation']=_0x503cfa[_0xcf44('0x2a')];this[_0xcf44('0xb')][_0x503cfa[_0xcf44('0x1f')]][_0xcf44('0x2b')]=_0x503cfa[_0xcf44('0x2b')];this[_0xcf44('0xb')][_0x503cfa[_0xcf44('0x1f')]][_0xcf44('0x1e')]=_0x503cfa[_0xcf44('0x1e')];this['channels'][_0x503cfa[_0xcf44('0x1f')]][_0xcf44('0x2c')]=_0x503cfa[_0xcf44('0x2c')];logger[_0xcf44('0x22')](_0x503cfa['uniqueid'],_0xcf44('0x2d'));}};Fax[_0xcf44('0x24')][_0xcf44('0x16')]=function(_0x245903){var _0x3d17fd=this;if(this[_0xcf44('0xb')][_0x245903[_0xcf44('0x1f')]]){var _0x3a4aa1=this['channels'][_0x245903[_0xcf44('0x1f')]]['id'];this[_0xcf44('0xb')][_0x245903[_0xcf44('0x1f')]][_0xcf44('0x2e')]=_0x245903[_0xcf44('0x2e')];this['channels'][_0x245903[_0xcf44('0x1f')]][_0xcf44('0x2f')]=_0x245903[_0xcf44('0x2f')];this[_0xcf44('0xb')][_0x245903[_0xcf44('0x1f')]][_0xcf44('0x1e')]=_0x245903['localstationid'];this['channels'][_0x245903[_0xcf44('0x1f')]][_0xcf44('0x30')]=_0x245903[_0xcf44('0x30')];this[_0xcf44('0xb')][_0x245903[_0xcf44('0x1f')]][_0xcf44('0x31')]=_0x245903[_0xcf44('0x31')];this['channels'][_0x245903['uniqueid']][_0xcf44('0x2c')]=_0x245903[_0xcf44('0x2c')];this['channels'][_0x245903[_0xcf44('0x1f')]][_0xcf44('0x32')]=_0x245903[_0xcf44('0x32')];if(this[_0xcf44('0xb')][_0x245903['uniqueid']][_0xcf44('0x2f')]>0x0){tiff2pdf(_0x245903[_0xcf44('0x2c')],_0xcf44('0x33'),function(_0x4114e2){logger[_0xcf44('0x22')](_0x245903[_0xcf44('0x1f')],_0xcf44('0x34'),_0x4114e2['message']);attachment[_0xcf44('0x35')]({'name':path[_0xcf44('0x36')](_0x245903[_0xcf44('0x2c')])[_0xcf44('0x21')],'basename':path[_0xcf44('0x36')](_0x245903[_0xcf44('0x2c')])[_0xcf44('0x21')]+'.pdf','type':_0xcf44('0x37')})['then'](function(_0x628b07){faxAccount['notify'](_0x3a4aa1,{'from':_0x245903[_0xcf44('0x32')],'mapKey':_0xcf44('0x4'),'body':path[_0xcf44('0x36')](_0x245903[_0xcf44('0x2c')])[_0xcf44('0x21')]+_0xcf44('0x38'),'AttachmentId':_0x628b07['id']})[_0xcf44('0x39')](function(_0x348426){logger[_0xcf44('0x3a')](_0x245903[_0xcf44('0x1f')],_0xcf44('0x3b'),JSON['stringify'](_0x348426));});})[_0xcf44('0x39')](function(_0x43f928){logger[_0xcf44('0x3a')](_0x245903[_0xcf44('0x1f')],_0xcf44('0x3c'),JSON[_0xcf44('0x3d')](_0x43f928));});});}logger[_0xcf44('0x22')](_0x245903['uniqueid'],'\x20receiveFax\x20');}};Fax[_0xcf44('0x24')][_0xcf44('0x19')]=function(_0x254a61){if(this[_0xcf44('0xe')][_0x254a61[_0xcf44('0x1f')]]){_[_0xcf44('0x3e')](this['channels'][_0x254a61['uniqueid']],_[_0xcf44('0x3f')](_0x254a61,['response',_0xcf44('0x40')]));}};function updateStatus(_0x3c3b9d){if(_0x3c3b9d['AttachmentId']){faxMessage[_0xcf44('0x41')](_0x3c3b9d[_0xcf44('0x42')],{'failMessage':_0xcf44('0x43')})[_0xcf44('0x44')](function(_0x27c7c1){ut[_0xcf44('0x45')](_0xcf44('0x46'),_0x27c7c1);})['catch'](function(_0x3b5567){ut[_0xcf44('0x45')](_0xcf44('0x47'),_0x3b5567);});}else{ut[_0xcf44('0x45')](_0xcf44('0x48'));}}Fax[_0xcf44('0x24')][_0xcf44('0x49')]=function(_0x5f4844,_0x3113a6,_0x51ce15){var _0xd443d0=this;var _0x355d6d={};if(_0x3113a6){_0x355d6d={'read':_0x3113a6};}else{_0x355d6d={'failMessage':_0x51ce15};}if(this[_0xcf44('0xe')][_0x5f4844][_0xcf44('0x42')]){faxMessage[_0xcf44('0x41')](this[_0xcf44('0xe')][_0x5f4844][_0xcf44('0x42')],_0x355d6d)[_0xcf44('0x44')](function(_0x4629d9){ut[_0xcf44('0x45')](_0xcf44('0x4a'),_0x4629d9);})[_0xcf44('0x39')](function(_0x1d24e4){ut[_0xcf44('0x45')](_0xcf44('0x4b'),_0x1d24e4);})[_0xcf44('0x4c')](function(){delete _0xd443d0['channels'][_0x5f4844];delete _0xd443d0[_0xcf44('0xe')][_0x5f4844];});}else{ut[_0xcf44('0x45')](_0xcf44('0x4d'));delete this[_0xcf44('0xb')][_0x5f4844];delete this[_0xcf44('0xe')][_0x5f4844];}};Fax['prototype']['syncHangup']=function(_0x135a25){var _0x78210c=this;if(this[_0xcf44('0xb')][_0x135a25[_0xcf44('0x1f')]]){if(this[_0xcf44('0xe')][_0x135a25[_0xcf44('0x1f')]]){this['channels'][_0x135a25[_0xcf44('0x1f')]]['id']=this['actions'][_0x135a25[_0xcf44('0x1f')]]['id'];this[_0xcf44('0xb')][_0x135a25['uniqueid']][_0xcf44('0x21')]=this[_0xcf44('0xe')][_0x135a25[_0xcf44('0x1f')]][_0xcf44('0x21')];}logger[_0xcf44('0x22')](_0x135a25[_0xcf44('0x1f')],this[_0xcf44('0xe')][_0x135a25[_0xcf44('0x1f')]]?_0xcf44('0x4e'):_0xcf44('0x4f'),JSON[_0xcf44('0x3d')](this[_0xcf44('0xb')][_0x135a25['uniqueid']]));if(this[_0xcf44('0xe')][_0x135a25[_0xcf44('0x1f')]]){if(this['channels'][_0x135a25['uniqueid']][_0xcf44('0x50')]>0x0&&this[_0xcf44('0xb')][_0x135a25['uniqueid']][_0xcf44('0x14')]==='SUCCESS'){this[_0xcf44('0x49')](_0x135a25[_0xcf44('0x1f')],!![]);}else{this[_0xcf44('0x49')](_0x135a25[_0xcf44('0x1f')],![],this['channels'][_0x135a25[_0xcf44('0x1f')]][_0xcf44('0x51')]?_0xcf44('0x52')+this[_0xcf44('0xb')][_0x135a25['uniqueid']][_0xcf44('0x51')]:_0xcf44('0x53'));}}}};Fax[_0xcf44('0x24')][_0xcf44('0x54')]=function(_0x2a5b79){var _0x33b8e2=this;return new BPromise(function(_0xeffa2d,_0x2f55f9){_0x33b8e2[_0xcf44('0x55')](_0x2a5b79,_0x33b8e2['faxAccounts'][_0x2a5b79[_0xcf44('0x56')]])[_0xcf44('0x44')](function(_0x3624a6){ut[_0xcf44('0x45')]('[Fax][execOriginate][success]',_0x3624a6);_0xeffa2d(ut[_0xcf44('0x57')](_0xcf44('0x58')));})[_0xcf44('0x39')](function(_0x3880bd){ut['logger'](_0xcf44('0x59'),_0x3880bd);updateStatus(_0x2a5b79);_0x2f55f9(ut[_0xcf44('0x57')](_0xcf44('0x5a')));});});};Fax[_0xcf44('0x24')][_0xcf44('0x5b')]=function(_0x40798e){var _0x196e19=this;return new BPromise(function(_0x149ffd,_0x3eaaa4){var _0x650306=_0x196e19[_0xcf44('0x5c')](_0x196e19[_0xcf44('0xc')][_0x40798e[_0xcf44('0x56')]][_0xcf44('0x5d')],_0x40798e);if(_0x650306[_0xcf44('0x5e')]){_0x149ffd(ut['message']('Trunk\x20Reachable'));}else{_0x3eaaa4(ut['message'](_0x650306['message']));}});};function originate(_0x176223,_0x1d2cba,_0x4b71bc){return new BPromise(function(_0x168bc9,_0x4ef1e1){if(_0x4b71bc){var _0x335d01=util['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[_0xcf44('0x36')](_0x176223[_0xcf44('0x5f')])[_0xcf44('0x21')],_0x176223[_0xcf44('0x5f')]);gs[_0xcf44('0x60')](_0x335d01)[_0xcf44('0x44')](function(){_0x176223[_0xcf44('0x5f')]=util[_0xcf44('0x61')](_0xcf44('0x62'),path['parse'](_0x176223[_0xcf44('0x5f')])[_0xcf44('0x63')],path['parse'](_0x176223[_0xcf44('0x5f')])[_0xcf44('0x21')]);_0x1d2cba[_0xcf44('0x64')]=_0x176223['path'];ut[_0xcf44('0x45')](_0xcf44('0x65'),'');ami[_0xcf44('0x66')](ut['variablesAction'](_0x176223,_0x1d2cba))[_0xcf44('0x44')](function(_0x4ab674){_0x168bc9(_0x4ab674);})[_0xcf44('0x39')](function(_0x523096){_0x4ef1e1(_0x523096);});})[_0xcf44('0x39')](function(_0x31b8c1){_0x4ef1e1(_0x31b8c1);});}else{ami[_0xcf44('0x66')](ut[_0xcf44('0x67')](_0x176223,_0x1d2cba))[_0xcf44('0x44')](function(_0x295ca1){_0x168bc9(_0x295ca1);})['catch'](function(_0xb92c1){_0x4ef1e1(_0xb92c1);});}});}Fax[_0xcf44('0x24')][_0xcf44('0x55')]=function(_0x2a429d,_0x323a37){var _0x491373=this;return new BPromise(function(_0x28ff32,_0x3b0502){var _0x20c0d8=uuid['v4']();var _0x4c1d28=ut[_0xcf44('0x68')](_0x2a429d,_0x323a37);_0x491373['actions'][_0x20c0d8]=new Action(_0x20c0d8,_0x323a37,_0x2a429d);var _0x2c8cca=_0x491373['actions'][_0x20c0d8];if(path[_0xcf44('0x36')](_0x2a429d[_0xcf44('0x5f')])['ext']==='.pdf'){originate(_0x2c8cca,_0x4c1d28,!![])[_0xcf44('0x44')](function(_0x2cc1fd){_0x28ff32(_0x2cc1fd);})[_0xcf44('0x39')](function(_0x354161){_0x3b0502(_0x354161);});}else{originate(_0x2c8cca,_0x4c1d28,![])[_0xcf44('0x44')](function(_0x55d291){_0x28ff32(_0x55d291);})[_0xcf44('0x39')](function(_0x54c09a){_0x3b0502(_0x54c09a);});}});};Fax[_0xcf44('0x24')][_0xcf44('0x69')]=function(_0x3037a3){return!_['isNil'](_0x3037a3)&&!_[_0xcf44('0x6a')](_0x3037a3[_0xcf44('0x21')])&&!_[_0xcf44('0x6a')](_0x3037a3[_0xcf44('0x6b')])&&_0x3037a3['active']&&!_[_0xcf44('0x6a')](this[_0xcf44('0xd')][util['format'](_0xcf44('0x6c'),_0x3037a3['name'])])&&!_[_0xcf44('0x6a')](this['trunks'][util[_0xcf44('0x61')]('SIP/%s',_0x3037a3[_0xcf44('0x21')])][_0xcf44('0x2b')])&&(this['trunks'][util[_0xcf44('0x61')](_0xcf44('0x6c'),_0x3037a3[_0xcf44('0x21')])]['status']===_0xcf44('0x6d')||this[_0xcf44('0xd')][util['format'](_0xcf44('0x6c'),_0x3037a3['name'])][_0xcf44('0x2b')]===_0xcf44('0x6e'));};Fax[_0xcf44('0x24')][_0xcf44('0x5c')]=function(_0x9aaef5,_0x2ff27f){if(!this[_0xcf44('0x69')](_0x9aaef5)){ut[_0xcf44('0x45')](_0xcf44('0x6f'),_[_0xcf44('0x6a')](_0x9aaef5)?'':_0x9aaef5['name']+_0xcf44('0x70'));return{'isValid':![],'message':_0xcf44('0x71')};}if(_[_0xcf44('0x6a')](_0x2ff27f['fax'])){ut[_0xcf44('0x45')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0xcf44('0x3d')](_0x2ff27f));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0xcf44('0x6a')](_0x2ff27f[_0xcf44('0x5f')])){ut[_0xcf44('0x45')](_0xcf44('0x72'),JSON['stringify'](_0x2ff27f));return{'isValid':![],'message':_0xcf44('0x73')};}return{'isValid':!![],'message':_0xcf44('0x74')};};module[_0xcf44('0x75')]=Fax;
\ No newline at end of file
+var _0x8cff=['uniqueid','channel','name','\x20syncNewchannel\x20','info','prototype','variable','value','syncNewState','channelstate','channelstatedesc','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','then','notify','.pdf','catch','\x20notify\x20','stringify','error','\x20receiveFax\x20','pick','response','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','updateStatus','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','faxstatusstring','send','execOriginate','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','Trunk\x20Reachable','execute','format','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','variablesAction','Action','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/faxMessage','channels','faxAccounts','trunks','actions','syncNewchannel','bind','varset','syncVarSet','newstate','newexten','faxstatus','receivefax','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','from-voip-provider','hasOwnProperty','exten','localstationid'];(function(_0x2c05d1,_0x23f105){var _0xc49d97=function(_0x2b8125){while(--_0x2b8125){_0x2c05d1['push'](_0x2c05d1['shift']());}};_0xc49d97(++_0x23f105);}(_0x8cff,0xd2));var _0xf8cf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8cff[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xf8cf('0x0'));var _=require(_0xf8cf('0x1'));var BPromise=require(_0xf8cf('0x2'));var uuid=require('uuid');var moment=require(_0xf8cf('0x3'));var path=require(_0xf8cf('0x4'));var tiff2pdf=require(_0xf8cf('0x5'));var gs=require(_0xf8cf('0x6'));var logger=require(_0xf8cf('0x7'))(_0xf8cf('0x8'));var ami=require(_0xf8cf('0x9'));var rpcDb=require(_0xf8cf('0xa'));var Channel=require(_0xf8cf('0xb'));var ut=require(_0xf8cf('0xc'));var Action=require(_0xf8cf('0xd'));var faxAccount=require(_0xf8cf('0xe'));var attachment=require('../rpc/attachment');var faxMessage=require(_0xf8cf('0xf'));function Fax(_0x4322b2){this[_0xf8cf('0x10')]={};this[_0xf8cf('0x11')]=_0x4322b2[_0xf8cf('0x11')];this[_0xf8cf('0x12')]=_0x4322b2[_0xf8cf('0x12')];this[_0xf8cf('0x13')]={};ami['on']('newchannel',this[_0xf8cf('0x14')][_0xf8cf('0x15')](this));ami['on'](_0xf8cf('0x16'),this[_0xf8cf('0x17')]['bind'](this));ami['on'](_0xf8cf('0x18'),this['syncNewState'][_0xf8cf('0x15')](this));ami['on'](_0xf8cf('0x19'),this['syncNewExten'][_0xf8cf('0x15')](this));ami['on'](_0xf8cf('0x1a'),this['syncFaxStatus'][_0xf8cf('0x15')](this));ami['on'](_0xf8cf('0x1b'),this[_0xf8cf('0x1c')]['bind'](this));ami['on'](_0xf8cf('0x1d'),this['syncHangup']['bind'](this));ami['on'](_0xf8cf('0x1e'),this[_0xf8cf('0x1f')][_0xf8cf('0x15')](this));}Fax['prototype']['syncNewchannel']=function(_0x1e15e3){if(_0x1e15e3['context']===_0xf8cf('0x20')){for(var _0x28263d in this[_0xf8cf('0x11')]){if(this[_0xf8cf('0x11')][_0xf8cf('0x21')](_0x28263d)){if(_0x1e15e3[_0xf8cf('0x22')]===this[_0xf8cf('0x11')][_0x28263d][_0xf8cf('0x23')]){this[_0xf8cf('0x10')][_0x1e15e3[_0xf8cf('0x24')]]={};this['channels'][_0x1e15e3[_0xf8cf('0x24')]][_0xf8cf('0x25')]=_0x1e15e3['channel'];this['channels'][_0x1e15e3[_0xf8cf('0x24')]]['id']=this['faxAccounts'][_0x28263d]['id'];this[_0xf8cf('0x10')][_0x1e15e3[_0xf8cf('0x24')]]['name']=this['faxAccounts'][_0x28263d][_0xf8cf('0x26')];logger['info'](_0x1e15e3[_0xf8cf('0x24')],_0xf8cf('0x27'));}}}}if(this[_0xf8cf('0x13')][_0x1e15e3[_0xf8cf('0x24')]]){this[_0xf8cf('0x10')][_0x1e15e3[_0xf8cf('0x24')]]={};this[_0xf8cf('0x10')][_0x1e15e3[_0xf8cf('0x24')]][_0xf8cf('0x25')]=_0x1e15e3[_0xf8cf('0x25')];logger[_0xf8cf('0x28')](_0x1e15e3[_0xf8cf('0x24')],_0xf8cf('0x27'));}};Fax[_0xf8cf('0x29')][_0xf8cf('0x17')]=function(_0x27a5f3){if(this['channels'][_0x27a5f3['uniqueid']]){for(var _0x4b0277 in _0x27a5f3['variable']){if(_0x27a5f3[_0xf8cf('0x2a')]['hasOwnProperty'](_0x4b0277)){this['channels'][_0x27a5f3[_0xf8cf('0x24')]][_0x4b0277]=_0x27a5f3[_0xf8cf('0x2b')];}}}};Fax[_0xf8cf('0x29')][_0xf8cf('0x2c')]=function(_0x48da06){if(this['channels'][_0x48da06[_0xf8cf('0x24')]]){this['channels'][_0x48da06[_0xf8cf('0x24')]][_0xf8cf('0x2d')]=_0x48da06['channelstate'];this[_0xf8cf('0x10')][_0x48da06[_0xf8cf('0x24')]]['channelstatedesc']=_0x48da06[_0xf8cf('0x2e')];}};Fax[_0xf8cf('0x29')]['syncNewExten']=function(_0x4f218c){if(this['channels'][_0x4f218c[_0xf8cf('0x24')]]){for(var _0xd8a434 in _0x4f218c['variable']){if(_0x4f218c[_0xf8cf('0x2a')][_0xf8cf('0x21')](_0xd8a434)){this[_0xf8cf('0x10')][_0x4f218c[_0xf8cf('0x24')]][_0xd8a434]=_0x4f218c['value'];}}}};Fax[_0xf8cf('0x29')][_0xf8cf('0x2f')]=function(_0xa11fcb){if(this[_0xf8cf('0x10')][_0xa11fcb[_0xf8cf('0x24')]]){this[_0xf8cf('0x10')][_0xa11fcb['uniqueid']][_0xf8cf('0x30')]=_0xa11fcb[_0xf8cf('0x30')];this[_0xf8cf('0x10')][_0xa11fcb[_0xf8cf('0x24')]]['status']=_0xa11fcb[_0xf8cf('0x31')];this[_0xf8cf('0x10')][_0xa11fcb[_0xf8cf('0x24')]][_0xf8cf('0x23')]=_0xa11fcb[_0xf8cf('0x23')];this[_0xf8cf('0x10')][_0xa11fcb[_0xf8cf('0x24')]]['filename']=_0xa11fcb[_0xf8cf('0x32')];logger[_0xf8cf('0x28')](_0xa11fcb[_0xf8cf('0x24')],_0xf8cf('0x33'));}};Fax[_0xf8cf('0x29')][_0xf8cf('0x1c')]=function(_0x7b549d){var _0x412ea8=this;if(this['channels'][_0x7b549d[_0xf8cf('0x24')]]){var _0x4eae1a=this[_0xf8cf('0x10')][_0x7b549d[_0xf8cf('0x24')]]['id'];this[_0xf8cf('0x10')][_0x7b549d['uniqueid']][_0xf8cf('0x34')]=_0x7b549d['remotestationid'];this['channels'][_0x7b549d[_0xf8cf('0x24')]][_0xf8cf('0x35')]=_0x7b549d[_0xf8cf('0x35')];this[_0xf8cf('0x10')][_0x7b549d['uniqueid']][_0xf8cf('0x23')]=_0x7b549d[_0xf8cf('0x23')];this[_0xf8cf('0x10')][_0x7b549d[_0xf8cf('0x24')]]['resolution']=_0x7b549d[_0xf8cf('0x36')];this[_0xf8cf('0x10')][_0x7b549d[_0xf8cf('0x24')]][_0xf8cf('0x37')]=_0x7b549d[_0xf8cf('0x37')];this[_0xf8cf('0x10')][_0x7b549d['uniqueid']][_0xf8cf('0x32')]=_0x7b549d[_0xf8cf('0x32')];this[_0xf8cf('0x10')][_0x7b549d[_0xf8cf('0x24')]][_0xf8cf('0x38')]=_0x7b549d['calleridnum'];if(this['channels'][_0x7b549d[_0xf8cf('0x24')]][_0xf8cf('0x35')]>0x0){tiff2pdf(_0x7b549d['filename'],_0xf8cf('0x39'),function(_0x4c3d5a){logger[_0xf8cf('0x28')](_0x7b549d[_0xf8cf('0x24')],_0xf8cf('0x3a'),_0x4c3d5a[_0xf8cf('0x3b')]);attachment[_0xf8cf('0x3c')]({'name':path[_0xf8cf('0x3d')](_0x7b549d[_0xf8cf('0x32')])[_0xf8cf('0x26')],'basename':path[_0xf8cf('0x3d')](_0x7b549d[_0xf8cf('0x32')])['name']+'.pdf','type':'application/pdf'})[_0xf8cf('0x3e')](function(_0x3613c4){faxAccount[_0xf8cf('0x3f')](_0x4eae1a,{'from':_0x7b549d[_0xf8cf('0x38')],'mapKey':_0xf8cf('0x8'),'body':path[_0xf8cf('0x3d')](_0x7b549d[_0xf8cf('0x32')])['name']+_0xf8cf('0x40'),'AttachmentId':_0x3613c4['id']})[_0xf8cf('0x41')](function(_0x1385a6){logger['error'](_0x7b549d[_0xf8cf('0x24')],_0xf8cf('0x42'),JSON[_0xf8cf('0x43')](_0x1385a6));});})[_0xf8cf('0x41')](function(_0xdc0dcd){logger[_0xf8cf('0x44')](_0x7b549d[_0xf8cf('0x24')],_0xf8cf('0x45'),JSON[_0xf8cf('0x43')](_0xdc0dcd));});});}logger[_0xf8cf('0x28')](_0x7b549d['uniqueid'],_0xf8cf('0x45'));}};Fax['prototype']['syncOriginateResponse']=function(_0x5237aa){if(this[_0xf8cf('0x13')][_0x5237aa[_0xf8cf('0x24')]]){_['merge'](this[_0xf8cf('0x10')][_0x5237aa[_0xf8cf('0x24')]],_[_0xf8cf('0x46')](_0x5237aa,[_0xf8cf('0x47'),'reason']));}};function updateStatus(_0x3c680e){if(_0x3c680e[_0xf8cf('0x48')]){faxMessage[_0xf8cf('0x49')](_0x3c680e[_0xf8cf('0x48')],{'failMessage':_0xf8cf('0x4a')})[_0xf8cf('0x3e')](function(_0x3c393b){ut[_0xf8cf('0x4b')](_0xf8cf('0x4c'),_0x3c393b);})[_0xf8cf('0x41')](function(_0x567244){ut['logger'](_0xf8cf('0x4d'),_0x567244);});}else{ut[_0xf8cf('0x4b')]('[Fax][Message][Error][NoUpdate2]');}}Fax[_0xf8cf('0x29')][_0xf8cf('0x4e')]=function(_0x594510,_0x2af17d,_0x1d51d7){var _0x327db4=this;var _0x2a468e={};if(_0x2af17d){_0x2a468e={'read':_0x2af17d};}else{_0x2a468e={'failMessage':_0x1d51d7};}if(this['actions'][_0x594510][_0xf8cf('0x48')]){faxMessage[_0xf8cf('0x49')](this[_0xf8cf('0x13')][_0x594510][_0xf8cf('0x48')],_0x2a468e)[_0xf8cf('0x3e')](function(_0x4db7fc){ut[_0xf8cf('0x4b')]('[Fax][Message][Updated]',_0x4db7fc);})[_0xf8cf('0x41')](function(_0x25e616){ut[_0xf8cf('0x4b')](_0xf8cf('0x4f'),_0x25e616);})[_0xf8cf('0x50')](function(){delete _0x327db4[_0xf8cf('0x10')][_0x594510];delete _0x327db4[_0xf8cf('0x13')][_0x594510];});}else{ut['logger'](_0xf8cf('0x51'));delete this[_0xf8cf('0x10')][_0x594510];delete this['actions'][_0x594510];}};Fax[_0xf8cf('0x29')][_0xf8cf('0x52')]=function(_0xd9a2ef){var _0xcf55bf=this;if(this[_0xf8cf('0x10')][_0xd9a2ef[_0xf8cf('0x24')]]){if(this[_0xf8cf('0x13')][_0xd9a2ef[_0xf8cf('0x24')]]){this[_0xf8cf('0x10')][_0xd9a2ef[_0xf8cf('0x24')]]['id']=this[_0xf8cf('0x13')][_0xd9a2ef[_0xf8cf('0x24')]]['id'];this['channels'][_0xd9a2ef[_0xf8cf('0x24')]][_0xf8cf('0x26')]=this[_0xf8cf('0x13')][_0xd9a2ef['uniqueid']]['name'];}logger[_0xf8cf('0x28')](_0xd9a2ef['uniqueid'],this[_0xf8cf('0x13')][_0xd9a2ef[_0xf8cf('0x24')]]?_0xf8cf('0x53'):_0xf8cf('0x54'),JSON[_0xf8cf('0x43')](this[_0xf8cf('0x10')][_0xd9a2ef[_0xf8cf('0x24')]]));if(this[_0xf8cf('0x13')][_0xd9a2ef[_0xf8cf('0x24')]]){if(this['channels'][_0xd9a2ef[_0xf8cf('0x24')]][_0xf8cf('0x55')]>0x0&&this[_0xf8cf('0x10')][_0xd9a2ef[_0xf8cf('0x24')]][_0xf8cf('0x1a')]===_0xf8cf('0x56')){this['updateStatus'](_0xd9a2ef[_0xf8cf('0x24')],!![]);}else{this[_0xf8cf('0x4e')](_0xd9a2ef['uniqueid'],![],this[_0xf8cf('0x10')][_0xd9a2ef[_0xf8cf('0x24')]][_0xf8cf('0x57')]?'SENDING\x20FAILED:\x20'+this[_0xf8cf('0x10')][_0xd9a2ef[_0xf8cf('0x24')]][_0xf8cf('0x57')]:'SENDING\x20FAILED');}}}};Fax[_0xf8cf('0x29')][_0xf8cf('0x58')]=function(_0x2ce6c4){var _0x3c28c2=this;return new BPromise(function(_0x142f81,_0x361f75){_0x3c28c2[_0xf8cf('0x59')](_0x2ce6c4,_0x3c28c2[_0xf8cf('0x11')][_0x2ce6c4[_0xf8cf('0x5a')]])[_0xf8cf('0x3e')](function(_0x2f5287){ut[_0xf8cf('0x4b')]('[Fax][execOriginate][success]',_0x2f5287);_0x142f81(ut[_0xf8cf('0x3b')](_0xf8cf('0x5b')));})[_0xf8cf('0x41')](function(_0x42ea1c){ut['logger'](_0xf8cf('0x5c'),_0x42ea1c);updateStatus(_0x2ce6c4);_0x361f75(ut[_0xf8cf('0x3b')](_0xf8cf('0x5d')));});});};Fax[_0xf8cf('0x29')][_0xf8cf('0x5e')]=function(_0x126f5c){var _0x100e9e=this;return new BPromise(function(_0x518624,_0x3a229e){var _0x18730e=_0x100e9e[_0xf8cf('0x5f')](_0x100e9e[_0xf8cf('0x11')][_0x126f5c[_0xf8cf('0x5a')]][_0xf8cf('0x60')],_0x126f5c);if(_0x18730e['isValid']){_0x518624(ut[_0xf8cf('0x3b')](_0xf8cf('0x61')));}else{_0x3a229e(ut[_0xf8cf('0x3b')](_0x18730e[_0xf8cf('0x3b')]));}});};function originate(_0x2ec88f,_0x394f47,_0x2f535a){return new BPromise(function(_0x59ff09,_0x5c36d6){if(_0x2f535a){var _0x4f7335=util['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[_0xf8cf('0x3d')](_0x2ec88f[_0xf8cf('0x4')])[_0xf8cf('0x26')],_0x2ec88f[_0xf8cf('0x4')]);gs[_0xf8cf('0x62')](_0x4f7335)[_0xf8cf('0x3e')](function(){_0x2ec88f[_0xf8cf('0x4')]=util[_0xf8cf('0x63')](_0xf8cf('0x64'),path[_0xf8cf('0x3d')](_0x2ec88f[_0xf8cf('0x4')])[_0xf8cf('0x65')],path[_0xf8cf('0x3d')](_0x2ec88f[_0xf8cf('0x4')])[_0xf8cf('0x26')]);_0x394f47[_0xf8cf('0x66')]=_0x2ec88f[_0xf8cf('0x4')];ut[_0xf8cf('0x4b')](_0xf8cf('0x67'),'');ami['Action'](ut[_0xf8cf('0x68')](_0x2ec88f,_0x394f47))[_0xf8cf('0x3e')](function(_0x4b83d0){_0x59ff09(_0x4b83d0);})[_0xf8cf('0x41')](function(_0x54ee90){_0x5c36d6(_0x54ee90);});})['catch'](function(_0x4c9afd){_0x5c36d6(_0x4c9afd);});}else{ami[_0xf8cf('0x69')](ut[_0xf8cf('0x68')](_0x2ec88f,_0x394f47))[_0xf8cf('0x3e')](function(_0x3f58ea){_0x59ff09(_0x3f58ea);})['catch'](function(_0xbb804e){_0x5c36d6(_0xbb804e);});}});}Fax['prototype'][_0xf8cf('0x59')]=function(_0x4b36ca,_0x1086e2){var _0xec3fa0=this;return new BPromise(function(_0x44be87,_0x550b52){var _0x50089d=uuid['v4']();var _0x502597=ut[_0xf8cf('0x6a')](_0x4b36ca,_0x1086e2);_0xec3fa0[_0xf8cf('0x13')][_0x50089d]=new Action(_0x50089d,_0x1086e2,_0x4b36ca);var _0x303ffc=_0xec3fa0['actions'][_0x50089d];if(path[_0xf8cf('0x3d')](_0x4b36ca[_0xf8cf('0x4')])[_0xf8cf('0x6b')]===_0xf8cf('0x40')){originate(_0x303ffc,_0x502597,!![])[_0xf8cf('0x3e')](function(_0x3d1dc6){_0x44be87(_0x3d1dc6);})['catch'](function(_0x21b7d3){_0x550b52(_0x21b7d3);});}else{originate(_0x303ffc,_0x502597,![])[_0xf8cf('0x3e')](function(_0x481e40){_0x44be87(_0x481e40);})['catch'](function(_0x3c617d){_0x550b52(_0x3c617d);});}});};Fax['prototype'][_0xf8cf('0x6c')]=function(_0x507b38){return!_['isNil'](_0x507b38)&&!_['isNil'](_0x507b38[_0xf8cf('0x26')])&&!_[_0xf8cf('0x6d')](_0x507b38[_0xf8cf('0x6e')])&&_0x507b38[_0xf8cf('0x6e')]&&!_[_0xf8cf('0x6d')](this[_0xf8cf('0x12')][util[_0xf8cf('0x63')](_0xf8cf('0x6f'),_0x507b38[_0xf8cf('0x26')])])&&!_[_0xf8cf('0x6d')](this[_0xf8cf('0x12')][util[_0xf8cf('0x63')](_0xf8cf('0x6f'),_0x507b38[_0xf8cf('0x26')])][_0xf8cf('0x31')])&&(this[_0xf8cf('0x12')][util[_0xf8cf('0x63')](_0xf8cf('0x6f'),_0x507b38[_0xf8cf('0x26')])]['status']===_0xf8cf('0x70')||this['trunks'][util[_0xf8cf('0x63')](_0xf8cf('0x6f'),_0x507b38[_0xf8cf('0x26')])][_0xf8cf('0x31')]===_0xf8cf('0x71'));};Fax['prototype'][_0xf8cf('0x5f')]=function(_0x2b6011,_0xcff38){if(!this[_0xf8cf('0x6c')](_0x2b6011)){ut[_0xf8cf('0x4b')](_0xf8cf('0x72'),_[_0xf8cf('0x6d')](_0x2b6011)?'':_0x2b6011[_0xf8cf('0x26')]+_0xf8cf('0x73'));return{'isValid':![],'message':_0xf8cf('0x74')};}if(_[_0xf8cf('0x6d')](_0xcff38[_0xf8cf('0x8')])){ut[_0xf8cf('0x4b')](_0xf8cf('0x75'),JSON[_0xf8cf('0x43')](_0xcff38));return{'isValid':![],'message':_0xf8cf('0x76')};}if(_[_0xf8cf('0x6d')](_0xcff38[_0xf8cf('0x4')])){ut[_0xf8cf('0x4b')](_0xf8cf('0x77'),JSON['stringify'](_0xcff38));return{'isValid':![],'message':_0xf8cf('0x78')};}return{'isValid':!![],'message':_0xf8cf('0x79')};};module[_0xf8cf('0x7a')]=Fax;
\ No newline at end of file
index bb66aee..2764f75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a2=['error','inspect','notify','resolve','then','catch','[Notify]\x20','util','bluebird','preview','lodash'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x37a2,0xe3));var _0x237a=function(_0x16fc13,_0x5d5deb){_0x16fc13=_0x16fc13-0x0;var _0x4c8f23=_0x37a2[_0x16fc13];return _0x4c8f23;};'use strict';var util=require(_0x237a('0x0'));var BPromise=require(_0x237a('0x1'));var logger=require('../../../config/logger')(_0x237a('0x2'));var _=require(_0x237a('0x3'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x4ccd07){return function(_0x2e3180){logger[_0x237a('0x4')](_0x4ccd07,util[_0x237a('0x5')](_0x2e3180,{'showHidden':![],'depth':null}));};}exports[_0x237a('0x6')]=function(_0x13c483,_0x266f95){return BPromise[_0x237a('0x7')]()[_0x237a('0x8')](faxAccount[_0x237a('0x6')](_0x13c483,_0x266f95))[_0x237a('0x9')](loggerCatch(_0x237a('0xa')));};
\ No newline at end of file
+var _0xeb54=['util','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect','notify','then','catch'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0xeb54,0x13f));var _0x4eb5=function(_0x2fefe8,_0x3364c9){_0x2fefe8=_0x2fefe8-0x0;var _0x294add=_0xeb54[_0x2fefe8];return _0x294add;};'use strict';var util=require(_0x4eb5('0x0'));var BPromise=require(_0x4eb5('0x1'));var logger=require(_0x4eb5('0x2'))(_0x4eb5('0x3'));var _=require(_0x4eb5('0x4'));var faxAccount=require(_0x4eb5('0x5'));function loggerCatch(_0x5e6c71){return function(_0xbfc329){logger[_0x4eb5('0x6')](_0x5e6c71,util[_0x4eb5('0x7')](_0xbfc329,{'showHidden':![],'depth':null}));};}exports[_0x4eb5('0x8')]=function(_0x127a99,_0x281e7e){return BPromise['resolve']()[_0x4eb5('0x9')](faxAccount[_0x4eb5('0x8')](_0x127a99,_0x281e7e))[_0x4eb5('0xa')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
index 40c220a..b8680b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd576=['util','../../../../config/logger','fax','bluebird','exec','execute','info','\x20Error\x20:','inspect'];(function(_0x20cb25,_0xe8a77d){var _0x21ec01=function(_0x874666){while(--_0x874666){_0x20cb25['push'](_0x20cb25['shift']());}};_0x21ec01(++_0xe8a77d);}(_0xd576,0x1b9));var _0x6d57=function(_0x5a8f97,_0x542723){_0x5a8f97=_0x5a8f97-0x0;var _0x107882=_0xd576[_0x5a8f97];return _0x107882;};'use strict';var util=require(_0x6d57('0x0'));var logger=require(_0x6d57('0x1'))(_0x6d57('0x2'));var BPromise=require(_0x6d57('0x3'));var exec=require('child_process')[_0x6d57('0x4')];exports[_0x6d57('0x5')]=function(_0x29062b){return new BPromise(function(_0x85aa01,_0x9297dd){exec(_0x29062b,function(_0x3ca0c7,_0x3f80e3,_0x5ef965){logger[_0x6d57('0x6')]('Exec\x20gs',_0x3f80e3);if(_0x3ca0c7){logger[_0x6d57('0x6')]('Exec\x20gs',_0x6d57('0x7'),util[_0x6d57('0x8')](_0x3ca0c7,{'showHidden':![],'depth':null}),_0x3f80e3,_0x5ef965);_0x9297dd(_0x3ca0c7);}_0x85aa01(_0x3f80e3);});});};
\ No newline at end of file
+var _0x1cc9=['util','../../../../config/logger','fax','execute','info','Exec\x20gs','\x20Error\x20:','inspect'];(function(_0x67ddd9,_0x5563db){var _0x3d8cbd=function(_0xb77ab9){while(--_0xb77ab9){_0x67ddd9['push'](_0x67ddd9['shift']());}};_0x3d8cbd(++_0x5563db);}(_0x1cc9,0x90));var _0x91cc=function(_0x84d9dd,_0x13db4b){_0x84d9dd=_0x84d9dd-0x0;var _0x58587b=_0x1cc9[_0x84d9dd];return _0x58587b;};'use strict';var util=require(_0x91cc('0x0'));var logger=require(_0x91cc('0x1'))(_0x91cc('0x2'));var BPromise=require('bluebird');var exec=require('child_process')['exec'];exports[_0x91cc('0x3')]=function(_0x57b36f){return new BPromise(function(_0x23f874,_0x2ae0c8){exec(_0x57b36f,function(_0x1c6b39,_0x487cf1,_0x51b5bd){logger[_0x91cc('0x4')](_0x91cc('0x5'),_0x487cf1);if(_0x1c6b39){logger['info'](_0x91cc('0x5'),_0x91cc('0x6'),util[_0x91cc('0x7')](_0x1c6b39,{'showHidden':![],'depth':null}),_0x487cf1,_0x51b5bd);_0x2ae0c8(_0x1c6b39);}_0x23f874(_0x487cf1);});});};
\ No newline at end of file
index 4f1c53e..29c6f99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b53=['info','inspect','ecm','headerinfo','minrate','maxrate','modem','gateway','t38timeout','path','channel','from-sip','format','localstationid','uniqueid','util','lodash','../../../../config/logger','fax','message'];(function(_0x256422,_0x367394){var _0x55dddc=function(_0x1594bc){while(--_0x1594bc){_0x256422['push'](_0x256422['shift']());}};_0x55dddc(++_0x367394);}(_0x5b53,0x1ef));var _0x35b5=function(_0x1e20f4,_0x103413){_0x1e20f4=_0x1e20f4-0x0;var _0x7d34cd=_0x5b53[_0x1e20f4];return _0x7d34cd;};'use strict';var util=require(_0x35b5('0x0'));var _=require(_0x35b5('0x1'));var moment=require('moment');var logger=require(_0x35b5('0x2'))(_0x35b5('0x3'));exports[_0x35b5('0x4')]=function(_0x25e418){return{'message':_0x25e418};};exports['logger']=function(_0x2254d6,_0x5ea4a5){logger[_0x35b5('0x5')](_0x2254d6,util[_0x35b5('0x6')](_0x5ea4a5,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x20dbf7,_0xf2153a){var _0x1061d6={'XMF-ECM':_0xf2153a[_0x35b5('0x7')],'XMF-HEADERINFO':_0xf2153a[_0x35b5('0x8')],'XMF-MINRATE':_0xf2153a[_0x35b5('0x9')],'XMF-MAXRATE':_0xf2153a[_0x35b5('0xa')],'XMF-MODEM':util['format']('\x22%s\x22',_0xf2153a[_0x35b5('0xb')]),'XMF-GATEWAY':_0xf2153a[_0x35b5('0xc')],'XMF-FAXDETECT':_0xf2153a['faxdetect'],'XMF-T38TIMEOUT':_0xf2153a[_0x35b5('0xd')],'XMF-LOCALSTATIONID':_0xf2153a['localstationid'],'XMF-PATH':_0x20dbf7[_0x35b5('0xe')]};return _0x1061d6;};exports['variablesAction']=function(_0x2be695,_0xdb71f6){return{'actionid':_0x2be695['uniqueid'],'action':'originate','channel':_0x2be695[_0x35b5('0xf')],'Exten':'xcally-motion-fax','Context':_0x35b5('0x10'),'Priority':'1','callerid':util[_0x35b5('0x11')]('\x22%s\x22\x20<%s>',_0x2be695['headerinfo']?_0x2be695['headerinfo']:'',_0x2be695[_0x35b5('0x12')]),'variable':_0xdb71f6,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x2be695[_0x35b5('0x13')]};};
\ No newline at end of file
+var _0x6138=['faxdetect','t38timeout','localstationid','variablesAction','originate','xcally-motion-fax','format','\x22%s\x22\x20<%s>','uniqueid','util','lodash','moment','fax','message','info','addVariables','ecm','headerinfo','minrate','maxrate','\x22%s\x22','modem'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x6138,0x1ed));var _0x8613=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x6138[_0x31e29a];return _0x32d892;};'use strict';var util=require(_0x8613('0x0'));var _=require(_0x8613('0x1'));var moment=require(_0x8613('0x2'));var logger=require('../../../../config/logger')(_0x8613('0x3'));exports[_0x8613('0x4')]=function(_0xb17da1){return{'message':_0xb17da1};};exports['logger']=function(_0x3c74ec,_0x423295){logger[_0x8613('0x5')](_0x3c74ec,util['inspect'](_0x423295,{'showHidden':![],'depth':null}));};exports[_0x8613('0x6')]=function(_0x50ac82,_0x2ac706){var _0x28280b={'XMF-ECM':_0x2ac706[_0x8613('0x7')],'XMF-HEADERINFO':_0x2ac706[_0x8613('0x8')],'XMF-MINRATE':_0x2ac706[_0x8613('0x9')],'XMF-MAXRATE':_0x2ac706[_0x8613('0xa')],'XMF-MODEM':util['format'](_0x8613('0xb'),_0x2ac706[_0x8613('0xc')]),'XMF-GATEWAY':_0x2ac706['gateway'],'XMF-FAXDETECT':_0x2ac706[_0x8613('0xd')],'XMF-T38TIMEOUT':_0x2ac706[_0x8613('0xe')],'XMF-LOCALSTATIONID':_0x2ac706[_0x8613('0xf')],'XMF-PATH':_0x50ac82['path']};return _0x28280b;};exports[_0x8613('0x10')]=function(_0x31756b,_0x3047ae){return{'actionid':_0x31756b['uniqueid'],'action':_0x8613('0x11'),'channel':_0x31756b['channel'],'Exten':_0x8613('0x12'),'Context':'from-sip','Priority':'1','callerid':util[_0x8613('0x13')](_0x8613('0x14'),_0x31756b['headerinfo']?_0x31756b[_0x8613('0x8')]:'',_0x31756b['localstationid']),'variable':_0x3047ae,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x31756b[_0x8613('0x15')]};};
\ No newline at end of file
index d65d91b..4a57484 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b99=['./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/freshdesk','./rpc/integrations/zoho','./rpc/integrations/vtiger','get','hour','resolve','then','getTelephones','initTelephones','getTrunks','getVoiceQueues','initVoiceQueues','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initCampaigns','getVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','listen','sync','catch','log','util','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory'];(function(_0x3ca25f,_0x4d36b7){var _0x3d27a6=function(_0x798a4d){while(--_0x798a4d){_0x3ca25f['push'](_0x3ca25f['shift']());}};_0x3d27a6(++_0x4d36b7);}(_0x2b99,0x1d8));var _0x92b9=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x2b99[_0x525c7b];return _0x27b33e;};'use strict';var BPromise=require('bluebird');var util=require(_0x92b9('0x0'));var moment=require(_0x92b9('0x1'));var server=require(_0x92b9('0x2'));var Realtime=require(_0x92b9('0x3'));var Report=require(_0x92b9('0x4'));var Acw=require(_0x92b9('0x5'));var Trigger=require(_0x92b9('0x6'));var Dialer=require(_0x92b9('0x7'));var Preview=require(_0x92b9('0x8'));var Fax=require(_0x92b9('0x9'));var user=require('./rpc/user');var voiceQueue=require(_0x92b9('0xa'));var voiceQueueReport=require(_0x92b9('0xb'));var voiceCallReport=require(_0x92b9('0xc'));var trunk=require('./rpc/trunk');var trigger=require(_0x92b9('0xd'));var template=require(_0x92b9('0xe'));var cmHopperHistory=require(_0x92b9('0xf'));var campaign=require(_0x92b9('0x10'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0x92b9('0x11'));var zendesk=require(_0x92b9('0x12'));var salesforce=require(_0x92b9('0x13'));var sugarcrm=require('./rpc/integrations/sugarcrm');var freshdesk=require(_0x92b9('0x14'));var desk=require('./rpc/integrations/desk');var zoho=require(_0x92b9('0x15'));var vtiger=require(_0x92b9('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x92b9('0x17')](_0x92b9('0x18'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x92b9('0x17')](_0x92b9('0x18'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x92b9('0x19')]()[_0x92b9('0x1a')](user['getAgents']())[_0x92b9('0x1a')](realtime['initAgents']())[_0x92b9('0x1a')](user[_0x92b9('0x1b')]())[_0x92b9('0x1a')](realtime[_0x92b9('0x1c')]())[_0x92b9('0x1a')](trunk[_0x92b9('0x1d')]())[_0x92b9('0x1a')](realtime['initTrunks']())[_0x92b9('0x1a')](voiceQueue[_0x92b9('0x1e')]())[_0x92b9('0x1a')](realtime[_0x92b9('0x1f')]())[_0x92b9('0x1a')](trigger['getTriggers']())[_0x92b9('0x1a')](realtime['initTriggers']())[_0x92b9('0x1a')](template[_0x92b9('0x20')]())[_0x92b9('0x1a')](realtime[_0x92b9('0x21')]())['then'](zendesk['getZendeskAccounts']())[_0x92b9('0x1a')](realtime[_0x92b9('0x22')]())['then'](salesforce[_0x92b9('0x23')]())[_0x92b9('0x1a')](realtime[_0x92b9('0x24')]())[_0x92b9('0x1a')](sugarcrm[_0x92b9('0x25')]())['then'](realtime[_0x92b9('0x26')]())['then'](freshdesk[_0x92b9('0x27')]())['then'](realtime[_0x92b9('0x28')]())[_0x92b9('0x1a')](desk[_0x92b9('0x29')]())['then'](realtime['initDeskAccounts']())[_0x92b9('0x1a')](zoho[_0x92b9('0x2a')]())['then'](realtime[_0x92b9('0x2b')]())[_0x92b9('0x1a')](vtiger[_0x92b9('0x2c')]())[_0x92b9('0x1a')](realtime[_0x92b9('0x2d')]())[_0x92b9('0x1a')](campaign['getCampaigns']())[_0x92b9('0x1a')](realtime[_0x92b9('0x2e')]())['then'](voiceExtension[_0x92b9('0x2f')]())[_0x92b9('0x1a')](realtime['initVoiceExtensions']())[_0x92b9('0x1a')](faxAccount[_0x92b9('0x30')]())[_0x92b9('0x1a')](realtime[_0x92b9('0x31')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x92b9('0x19')]()[_0x92b9('0x1a')](voiceQueueReport[_0x92b9('0x32')]())[_0x92b9('0x1a')](realtime['initVoiceQueueReports']())[_0x92b9('0x1a')](cmHopperHistory[_0x92b9('0x33')]())['then'](realtime[_0x92b9('0x34')]())[_0x92b9('0x1a')](cmHopperHistory[_0x92b9('0x35')]())[_0x92b9('0x1a')](realtime[_0x92b9('0x36')]())[_0x92b9('0x1a')](voiceCallReport[_0x92b9('0x37')]())[_0x92b9('0x1a')](realtime[_0x92b9('0x38')]())[_0x92b9('0x1a')](function(_0x31f623){})['catch'](function(_0x13dbc1){console['log'](_0x13dbc1);});}function main(){return server[_0x92b9('0x39')](realtime,preview,fax)[_0x92b9('0x1a')](function(_0x42d30f){return initRealtime();})['then'](function(){return initParams();})[_0x92b9('0x1a')](function(){report[_0x92b9('0x3a')]();setInterval(initRealtime,0x1388);})[_0x92b9('0x3b')](function(_0x3e6f0e){console[_0x92b9('0x3c')](_0x3e6f0e);});}main();
\ No newline at end of file
+var _0x39fd=['./rpc/voiceCallReport','./rpc/trunk','./rpc/template','./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initTemplates','initZendeskAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','getVtigerAccounts','initVtigerAccounts','initCampaigns','initVoiceExtensions','getFaxAccounts','initFaxAccounts','initVoiceQueueReports','getVoiceQueueHopperHistory','getCampaignHopperHistory','catch','log','listen','sync','bluebird','util','./acw','./trigger','./dialer','./preview','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport'];(function(_0xf82e3f,_0x180583){var _0x502e94=function(_0x21bcab){while(--_0x21bcab){_0xf82e3f['push'](_0xf82e3f['shift']());}};_0x502e94(++_0x180583);}(_0x39fd,0x19f));var _0xd39f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x39fd[_0x57b54c];return _0x59cc19;};'use strict';var BPromise=require(_0xd39f('0x0'));var util=require(_0xd39f('0x1'));var moment=require('moment');var server=require('./server');var Realtime=require('./realtime');var Report=require('./report');var Acw=require(_0xd39f('0x2'));var Trigger=require(_0xd39f('0x3'));var Dialer=require(_0xd39f('0x4'));var Preview=require(_0xd39f('0x5'));var Fax=require('./fax');var user=require(_0xd39f('0x6'));var voiceQueue=require(_0xd39f('0x7'));var voiceQueueReport=require(_0xd39f('0x8'));var voiceCallReport=require(_0xd39f('0x9'));var trunk=require(_0xd39f('0xa'));var trigger=require('./rpc/trigger');var template=require(_0xd39f('0xb'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0xd39f('0xc'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0xd39f('0xd'));var zendesk=require(_0xd39f('0xe'));var salesforce=require(_0xd39f('0xf'));var sugarcrm=require(_0xd39f('0x10'));var freshdesk=require(_0xd39f('0x11'));var desk=require(_0xd39f('0x12'));var zoho=require(_0xd39f('0x13'));var vtiger=require(_0xd39f('0x14'));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()[_0xd39f('0x15')](_0xd39f('0x16'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xd39f('0x15')](_0xd39f('0x16'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xd39f('0x17')]()[_0xd39f('0x18')](user[_0xd39f('0x19')]())[_0xd39f('0x18')](realtime[_0xd39f('0x1a')]())[_0xd39f('0x18')](user[_0xd39f('0x1b')]())[_0xd39f('0x18')](realtime[_0xd39f('0x1c')]())[_0xd39f('0x18')](trunk[_0xd39f('0x1d')]())[_0xd39f('0x18')](realtime[_0xd39f('0x1e')]())[_0xd39f('0x18')](voiceQueue[_0xd39f('0x1f')]())[_0xd39f('0x18')](realtime['initVoiceQueues']())[_0xd39f('0x18')](trigger['getTriggers']())[_0xd39f('0x18')](realtime['initTriggers']())['then'](template['getTemplates']())[_0xd39f('0x18')](realtime[_0xd39f('0x20')]())[_0xd39f('0x18')](zendesk['getZendeskAccounts']())[_0xd39f('0x18')](realtime[_0xd39f('0x21')]())[_0xd39f('0x18')](salesforce['getSalesforceAccounts']())['then'](realtime['initSalesforceAccounts']())[_0xd39f('0x18')](sugarcrm[_0xd39f('0x22')]())[_0xd39f('0x18')](realtime[_0xd39f('0x23')]())['then'](freshdesk[_0xd39f('0x24')]())[_0xd39f('0x18')](realtime['initFreshdeskAccounts']())[_0xd39f('0x18')](desk[_0xd39f('0x25')]())[_0xd39f('0x18')](realtime[_0xd39f('0x26')]())[_0xd39f('0x18')](zoho[_0xd39f('0x27')]())[_0xd39f('0x18')](realtime['initZohoAccounts']())[_0xd39f('0x18')](vtiger[_0xd39f('0x28')]())[_0xd39f('0x18')](realtime[_0xd39f('0x29')]())['then'](campaign['getCampaigns']())[_0xd39f('0x18')](realtime[_0xd39f('0x2a')]())[_0xd39f('0x18')](voiceExtension['getVoiceExtensions']())[_0xd39f('0x18')](realtime[_0xd39f('0x2b')]())[_0xd39f('0x18')](faxAccount[_0xd39f('0x2c')]())[_0xd39f('0x18')](realtime[_0xd39f('0x2d')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0xd39f('0x17')]()['then'](voiceQueueReport['getVoiceQueueReports']())['then'](realtime[_0xd39f('0x2e')]())['then'](cmHopperHistory[_0xd39f('0x2f')]())['then'](realtime['initVoiceQueueHopperHistory']())[_0xd39f('0x18')](cmHopperHistory[_0xd39f('0x30')]())[_0xd39f('0x18')](realtime['initCampaignHopperHistory']())[_0xd39f('0x18')](voiceCallReport['getVoiceCallReports']())['then'](realtime['initVoiceCallReports']())[_0xd39f('0x18')](function(_0x5b8851){})[_0xd39f('0x31')](function(_0xf650c2){console[_0xd39f('0x32')](_0xf650c2);});}function main(){return server[_0xd39f('0x33')](realtime,preview,fax)[_0xd39f('0x18')](function(_0x1790f5){return initRealtime();})['then'](function(){return initParams();})[_0xd39f('0x18')](function(){report[_0xd39f('0x34')]();setInterval(initRealtime,0x1388);})[_0xd39f('0x31')](function(_0x45c2d0){console['log'](_0x45c2d0);});}main();
\ No newline at end of file
index 521c0a5..b844cc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e37=['voiceStatusCallerIdNumber','interface','stringify','user:%s','emit','user:save','exports','util','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','accountcode','fullname','state','stateTime','status','unknown','mobile','online','voiceStatus','voiceStatusTime','voiceStatusQueue','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse','talking','statePause','format','email'];(function(_0x7633c,_0x1e45bf){var _0x1b77e2=function(_0x4c3e7f){while(--_0x4c3e7f){_0x7633c['push'](_0x7633c['shift']());}};_0x1b77e2(++_0x1e45bf);}(_0x6e37,0xcf));var _0x76e3=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6e37[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x76e3('0x0'));var moment=require(_0x76e3('0x1'));var md5=require(_0x76e3('0x2'));var Redis=require(_0x76e3('0x3'));var config=require(_0x76e3('0x4'));config[_0x76e3('0x5')]=_[_0x76e3('0x6')](config[_0x76e3('0x5')],{'host':_0x76e3('0x7'),'port':0x18eb});var io=require(_0x76e3('0x8'))(new Redis(config[_0x76e3('0x5')]));function Agent(_0x3af1a8){this['id']=_0x3af1a8['id']||0x0;this[_0x76e3('0x9')]=_0x3af1a8['name']||'';this['email']=_0x3af1a8['email']||'';this[_0x76e3('0xa')]=_0x3af1a8['accountcode']||'';this[_0x76e3('0xb')]=_0x3af1a8['fullname']||'';this[_0x76e3('0xc')]='unknown';this[_0x76e3('0xd')]=0x0;this[_0x76e3('0xe')]=_0x76e3('0xf');this['address']='';this['phone']='';this[_0x76e3('0x10')]='';this['interface']='';this[_0x76e3('0x11')]=_0x3af1a8[_0x76e3('0x11')]||![];this[_0x76e3('0x12')]='unknown';this[_0x76e3('0x13')]=0x0;this['voiceStatusCallerIdNumber']='';this[_0x76e3('0x14')]='';this[_0x76e3('0x15')]=![];this[_0x76e3('0x16')]=![];this[_0x76e3('0x2')]='';}Agent[_0x76e3('0x17')][_0x76e3('0x18')]=function(_0x5e0ef0){var _0xe35cdb;if(_0x5e0ef0&&_0x5e0ef0['state']){_0xe35cdb=_0x5e0ef0['state'][_0x76e3('0x19')]();switch(_0xe35cdb){case _0x76e3('0x1a'):_0xe35cdb=_0x76e3('0x1b');break;case _0x76e3('0x1c'):_0xe35cdb=_0x76e3('0x1d');break;}}if(_0xe35cdb&&this[_0x76e3('0x12')]!==_0xe35cdb||_0x5e0ef0[_0x76e3('0x1e')]){this[_0x76e3('0x13')]=_['toNumber'](moment()[_0x76e3('0x1f')]('x'));}if(_0xe35cdb){this[_0x76e3('0x12')]=_0xe35cdb;}var _0x31cade={'id':this['id'],'name':this[_0x76e3('0x9')],'email':this[_0x76e3('0x20')],'accountcode':this[_0x76e3('0xa')],'fullname':this['fullname'],'state':this[_0x76e3('0xc')],'stateTime':this[_0x76e3('0xd')],'status':this['status'],'address':this['address'],'online':this[_0x76e3('0x11')],'voiceStatus':this[_0x76e3('0x12')],'voiceStatusTime':this['voiceStatusTime'],'voiceStatusCallerIdNumber':this[_0x76e3('0x21')],'voiceStatusQueue':this[_0x76e3('0x14')],'interface':this[_0x76e3('0x22')],'onhold':this[_0x76e3('0x15')]};var _0x1f2f36=md5(JSON[_0x76e3('0x23')](_0x31cade));if(this[_0x76e3('0x2')]!==_0x1f2f36){this[_0x76e3('0x2')]=_0x1f2f36;io['to'](util[_0x76e3('0x1f')](_0x76e3('0x24'),_0x31cade['name']))[_0x76e3('0x25')](_0x76e3('0x26'),_0x31cade);}};module[_0x76e3('0x27')]=Agent;
\ No newline at end of file
+var _0x1529=['fullname','state','unknown','address','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusQueue','onhold','prototype','toLowerCase','not_inuse','idle','inuse','toNumber','format','stateTime','status','voiceStatusCallerIdNumber','stringify','user:%s','emit','user:save','exports','lodash','util','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','email','accountcode'];(function(_0x2ae870,_0xcf8709){var _0x28136e=function(_0x541014){while(--_0x541014){_0x2ae870['push'](_0x2ae870['shift']());}};_0x28136e(++_0xcf8709);}(_0x1529,0xfe));var _0x9152=function(_0x1b126a,_0x354ce0){_0x1b126a=_0x1b126a-0x0;var _0x1da353=_0x1529[_0x1b126a];return _0x1da353;};'use strict';var _=require(_0x9152('0x0'));var util=require(_0x9152('0x1'));var moment=require(_0x9152('0x2'));var md5=require(_0x9152('0x3'));var Redis=require(_0x9152('0x4'));var config=require(_0x9152('0x5'));config[_0x9152('0x6')]=_[_0x9152('0x7')](config[_0x9152('0x6')],{'host':_0x9152('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function Agent(_0x26f2c3){this['id']=_0x26f2c3['id']||0x0;this[_0x9152('0x9')]=_0x26f2c3['name']||'';this['email']=_0x26f2c3[_0x9152('0xa')]||'';this['accountcode']=_0x26f2c3[_0x9152('0xb')]||'';this[_0x9152('0xc')]=_0x26f2c3['fullname']||'';this[_0x9152('0xd')]=_0x9152('0xe');this['stateTime']=0x0;this['status']=_0x9152('0xe');this[_0x9152('0xf')]='';this['phone']='';this[_0x9152('0x10')]='';this[_0x9152('0x11')]='';this[_0x9152('0x12')]=_0x26f2c3[_0x9152('0x12')]||![];this[_0x9152('0x13')]=_0x9152('0xe');this[_0x9152('0x14')]=0x0;this['voiceStatusCallerIdNumber']='';this[_0x9152('0x15')]='';this[_0x9152('0x16')]=![];this['local']=![];this['md5']='';}Agent[_0x9152('0x17')]['updateStatusRealtime']=function(_0x1247cd){var _0x1643ad;if(_0x1247cd&&_0x1247cd[_0x9152('0xd')]){_0x1643ad=_0x1247cd['state'][_0x9152('0x18')]();switch(_0x1643ad){case _0x9152('0x19'):_0x1643ad=_0x9152('0x1a');break;case _0x9152('0x1b'):_0x1643ad='talking';break;}}if(_0x1643ad&&this[_0x9152('0x13')]!==_0x1643ad||_0x1247cd['statePause']){this[_0x9152('0x14')]=_[_0x9152('0x1c')](moment()[_0x9152('0x1d')]('x'));}if(_0x1643ad){this[_0x9152('0x13')]=_0x1643ad;}var _0x5ad253={'id':this['id'],'name':this[_0x9152('0x9')],'email':this[_0x9152('0xa')],'accountcode':this[_0x9152('0xb')],'fullname':this['fullname'],'state':this[_0x9152('0xd')],'stateTime':this[_0x9152('0x1e')],'status':this[_0x9152('0x1f')],'address':this[_0x9152('0xf')],'online':this[_0x9152('0x12')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x9152('0x14')],'voiceStatusCallerIdNumber':this[_0x9152('0x20')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0x9152('0x11')],'onhold':this['onhold']};var _0x440547=md5(JSON[_0x9152('0x21')](_0x5ad253));if(this[_0x9152('0x3')]!==_0x440547){this[_0x9152('0x3')]=_0x440547;io['to'](util[_0x9152('0x1d')](_0x9152('0x22'),_0x5ad253[_0x9152('0x9')]))[_0x9152('0x23')](_0x9152('0x24'),_0x5ad253);}};module[_0x9152('0x25')]=Agent;
\ No newline at end of file
index d4858f3..77df078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3d1=['sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message'];(function(_0x52d9f9,_0x23fe8d){var _0x459ae1=function(_0x44c6c6){while(--_0x44c6c6){_0x52d9f9['push'](_0x52d9f9['shift']());}};_0x459ae1(++_0x23fe8d);}(_0xd3d1,0x172));var _0x1d3d=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xd3d1[_0xbd08b4];return _0x314f1e;};'use strict';function Campaign(_0x534a48){this['id']=_0x534a48['id']||0x0;this[_0x1d3d('0x0')]=_0x534a48['name']||'';this['type']=_0x534a48[_0x1d3d('0x1')]||_0x1d3d('0x2');this[_0x1d3d('0x3')]=0x0;this[_0x1d3d('0x4')]=0x0;this[_0x1d3d('0x5')]=0x0;this[_0x1d3d('0x6')]=0x0;this[_0x1d3d('0x7')]='';this[_0x1d3d('0x8')]=!![];this[_0x1d3d('0x9')]=_0x534a48[_0x1d3d('0x9')];this[_0x1d3d('0xa')]=_0x534a48[_0x1d3d('0xa')];this[_0x1d3d('0xb')]=_0x534a48[_0x1d3d('0xb')]||null;this[_0x1d3d('0xc')]=_0x534a48[_0x1d3d('0xc')]?_0x534a48[_0x1d3d('0xc')]:null;this['dialOriginateCallerIdName']=_0x534a48[_0x1d3d('0xd')];this[_0x1d3d('0xe')]=_0x534a48[_0x1d3d('0xe')];this[_0x1d3d('0xf')]=_0x534a48[_0x1d3d('0xf')]||0x1e;this[_0x1d3d('0x10')]=_0x534a48[_0x1d3d('0x10')];this[_0x1d3d('0x11')]=_0x534a48[_0x1d3d('0x11')];this[_0x1d3d('0x12')]=_0x534a48[_0x1d3d('0x12')];this['dialBusyRetryFrequency']=_0x534a48[_0x1d3d('0x13')];this[_0x1d3d('0x14')]=_0x534a48['dialNoAnswerMaxRetry'];this['dialNoAnswerRetryFrequency']=_0x534a48[_0x1d3d('0x15')];this[_0x1d3d('0x16')]=_0x534a48[_0x1d3d('0x16')];this['dialOrderByScheduledAt']=_0x534a48[_0x1d3d('0x17')]||'DESC';this[_0x1d3d('0x18')]=_0x534a48[_0x1d3d('0x18')]||undefined;this[_0x1d3d('0x19')]=_0x534a48[_0x1d3d('0x19')]||undefined;this[_0x1d3d('0x1a')]=_0x534a48[_0x1d3d('0x1a')]||undefined;this[_0x1d3d('0x1b')]=_0x534a48['TrunkBackup']?_0x534a48['TrunkBackup']:undefined;this[_0x1d3d('0x1c')]=_0x534a48[_0x1d3d('0x1c')]?_0x534a48['Trunk']:undefined;this[_0x1d3d('0x1d')]=_0x534a48['Interval']?_0x534a48[_0x1d3d('0x1d')]:undefined;this[_0x1d3d('0x1e')]=_0x534a48[_0x1d3d('0x1e')]?_0x534a48[_0x1d3d('0x1e')]:undefined;this['dialQueueProject']=_0x534a48[_0x1d3d('0x1e')]?_0x534a48['SquareProject']['name']:undefined;this[_0x1d3d('0x1f')]=_0x534a48[_0x1d3d('0x1f')]||![];this[_0x1d3d('0x20')]=_0x534a48[_0x1d3d('0x20')];this[_0x1d3d('0x21')]=_0x534a48[_0x1d3d('0x21')];this[_0x1d3d('0x22')]=_0x534a48[_0x1d3d('0x22')];this[_0x1d3d('0x23')]=_0x534a48[_0x1d3d('0x23')];this[_0x1d3d('0x24')]=_0x534a48['dialAMDMinWordLength'];this[_0x1d3d('0x25')]=_0x534a48[_0x1d3d('0x25')];this['dialAMDMaximumNumberOfWords']=_0x534a48[_0x1d3d('0x26')];this['dialAMDSilenceThreshold']=_0x534a48[_0x1d3d('0x27')];this[_0x1d3d('0x28')]=_0x534a48[_0x1d3d('0x28')];}module[_0x1d3d('0x29')]=Campaign;
\ No newline at end of file
+var _0x5db8=['dialOriginateTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','campaign','originated','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber'];(function(_0x18c4a8,_0x96c52e){var _0x189ff1=function(_0x4a3ea8){while(--_0x4a3ea8){_0x18c4a8['push'](_0x18c4a8['shift']());}};_0x189ff1(++_0x96c52e);}(_0x5db8,0xbb));var _0x85db=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x5db8[_0x47a7d0];return _0xb9bd08;};'use strict';function Campaign(_0x1435b2){this['id']=_0x1435b2['id']||0x0;this[_0x85db('0x0')]=_0x1435b2[_0x85db('0x0')]||'';this['type']=_0x1435b2[_0x85db('0x1')]||_0x85db('0x2');this[_0x85db('0x3')]=0x0;this['temp']=0x0;this['ivrAnswerCallsDay']=0x0;this[_0x85db('0x4')]=0x0;this[_0x85db('0x5')]='';this[_0x85db('0x6')]=!![];this[_0x85db('0x7')]=_0x1435b2['active'];this['limitCalls']=_0x1435b2[_0x85db('0x8')];this[_0x85db('0x9')]=_0x1435b2[_0x85db('0x9')]||null;this[_0x85db('0xa')]=_0x1435b2['dialGlobalInterval']?_0x1435b2[_0x85db('0xa')]:null;this['dialOriginateCallerIdName']=_0x1435b2[_0x85db('0xb')];this[_0x85db('0xc')]=_0x1435b2[_0x85db('0xc')];this[_0x85db('0xd')]=_0x1435b2['dialOriginateTimeout']||0x1e;this['dialCongestionMaxRetry']=_0x1435b2['dialCongestionMaxRetry'];this[_0x85db('0xe')]=_0x1435b2[_0x85db('0xe')];this['dialBusyMaxRetry']=_0x1435b2[_0x85db('0xf')];this['dialBusyRetryFrequency']=_0x1435b2[_0x85db('0x10')];this[_0x85db('0x11')]=_0x1435b2[_0x85db('0x11')];this[_0x85db('0x12')]=_0x1435b2[_0x85db('0x12')];this[_0x85db('0x13')]=_0x1435b2[_0x85db('0x13')];this[_0x85db('0x14')]=_0x1435b2[_0x85db('0x14')]||_0x85db('0x15');this[_0x85db('0x16')]=_0x1435b2[_0x85db('0x16')]||undefined;this[_0x85db('0x17')]=_0x1435b2['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x85db('0x18')]=_0x1435b2[_0x85db('0x18')]||undefined;this[_0x85db('0x19')]=_0x1435b2[_0x85db('0x19')]?_0x1435b2[_0x85db('0x19')]:undefined;this[_0x85db('0x1a')]=_0x1435b2[_0x85db('0x1a')]?_0x1435b2['Trunk']:undefined;this[_0x85db('0x1b')]=_0x1435b2[_0x85db('0x1b')]?_0x1435b2[_0x85db('0x1b')]:undefined;this[_0x85db('0x1c')]=_0x1435b2[_0x85db('0x1c')]?_0x1435b2[_0x85db('0x1c')]:undefined;this[_0x85db('0x1d')]=_0x1435b2[_0x85db('0x1c')]?_0x1435b2[_0x85db('0x1c')][_0x85db('0x0')]:undefined;this['dialAMDActive']=_0x1435b2[_0x85db('0x1e')]||![];this[_0x85db('0x1f')]=_0x1435b2[_0x85db('0x1f')];this[_0x85db('0x20')]=_0x1435b2[_0x85db('0x20')];this[_0x85db('0x21')]=_0x1435b2[_0x85db('0x21')];this[_0x85db('0x22')]=_0x1435b2['dialAMDTotalAnalysisTime'];this[_0x85db('0x23')]=_0x1435b2[_0x85db('0x23')];this[_0x85db('0x24')]=_0x1435b2[_0x85db('0x24')];this[_0x85db('0x25')]=_0x1435b2[_0x85db('0x25')];this['dialAMDSilenceThreshold']=_0x1435b2[_0x85db('0x26')];this[_0x85db('0x27')]=_0x1435b2[_0x85db('0x27')];}module['exports']=Campaign;
\ No newline at end of file
index efa1931..bef81ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b6=['queue','monitors','transfercalleridnum','transferconnectedlinenum','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','exten','answertime','endtime','unmanaged','abandoned','lastdata','duration','holdtime','type','tag','disposition','monitor','monitorFilename'];(function(_0x1667df,_0x266940){var _0x341abf=function(_0x123c3f){while(--_0x123c3f){_0x1667df['push'](_0x1667df['shift']());}};_0x341abf(++_0x266940);}(_0x29b6,0x17e));var _0x629b=function(_0x4870c4,_0xf922b){_0x4870c4=_0x4870c4-0x0;var _0x593aa0=_0x29b6[_0x4870c4];return _0x593aa0;};'use strict';function Channel(){this[_0x629b('0x0')]=null;this[_0x629b('0x1')]='';this[_0x629b('0x2')]='';this[_0x629b('0x3')]=0x0;this[_0x629b('0x4')]='';this[_0x629b('0x5')]=undefined;this[_0x629b('0x6')]=undefined;this[_0x629b('0x7')]=0x0;this[_0x629b('0x8')]='';this[_0x629b('0x9')]=0x0;this['linkedid']=0x0;this[_0x629b('0xa')]=0x0;this['answered']=![];this[_0x629b('0xb')]=null;this[_0x629b('0xc')]=null;this[_0x629b('0xd')]=![];this[_0x629b('0xe')]=![];this['lastapplication']='';this[_0x629b('0xf')]='';this[_0x629b('0x10')]=0x0;this['billableseconds']=0x0;this[_0x629b('0x11')]=0x0;this[_0x629b('0x12')]=null;this[_0x629b('0x13')]=null;this[_0x629b('0x14')]=null;this[_0x629b('0x15')]=![];this[_0x629b('0x16')]=null;this[_0x629b('0x17')]=null;this[_0x629b('0x18')]=[];this[_0x629b('0x19')]=undefined;this[_0x629b('0x1a')]=undefined;this['mohtime']=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x078f=['lastapplication','lastdata','billableseconds','type','tag','disposition','monitor','queue','transfercalleridnum','transferconnectedlinenum','mohtime','channel','destinationchannel','calleridname','connectedlinenum','connectedlinename','accountcode','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','abandoned'];(function(_0x11f0a6,_0x1ce59d){var _0xa5ab4b=function(_0x42fd28){while(--_0x42fd28){_0x11f0a6['push'](_0x11f0a6['shift']());}};_0xa5ab4b(++_0x1ce59d);}(_0x078f,0x1b4));var _0xf078=function(_0x5941bb,_0x9846f7){_0x5941bb=_0x5941bb-0x0;var _0x593717=_0x078f[_0x5941bb];return _0x593717;};'use strict';function Channel(){this['starttime']=null;this[_0xf078('0x0')]='';this[_0xf078('0x1')]='';this['calleridnum']=0x0;this[_0xf078('0x2')]='';this[_0xf078('0x3')]=undefined;this[_0xf078('0x4')]=undefined;this[_0xf078('0x5')]=0x0;this['context']='';this[_0xf078('0x6')]=0x0;this[_0xf078('0x7')]=0x0;this[_0xf078('0x8')]=0x0;this[_0xf078('0x9')]=![];this[_0xf078('0xa')]=null;this[_0xf078('0xb')]=null;this[_0xf078('0xc')]=![];this[_0xf078('0xd')]=![];this[_0xf078('0xe')]='';this[_0xf078('0xf')]='';this['duration']=0x0;this[_0xf078('0x10')]=0x0;this['holdtime']=0x0;this[_0xf078('0x11')]=null;this[_0xf078('0x12')]=null;this[_0xf078('0x13')]=null;this[_0xf078('0x14')]=![];this['monitorFilename']=null;this[_0xf078('0x15')]=null;this['monitors']=[];this[_0xf078('0x16')]=undefined;this[_0xf078('0x17')]=undefined;this[_0xf078('0x18')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 45ca8e7..5e5bfe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa930=['consumerKey','consumerSecret','token','type','serverUrl','name','username','remoteUri','authType','password'];(function(_0x22dfb9,_0x5847cf){var _0x17ff9f=function(_0x28784b){while(--_0x28784b){_0x22dfb9['push'](_0x22dfb9['shift']());}};_0x17ff9f(++_0x5847cf);}(_0xa930,0xe1));var _0x0a93=function(_0x214590,_0x5e2ea5){_0x214590=_0x214590-0x0;var _0x1f02a4=_0xa930[_0x214590];return _0x1f02a4;};'use strict';function DeskAccount(_0x59c526){this['id']=_0x59c526['id']||0x0;this[_0x0a93('0x0')]=_0x59c526['name']||'';this[_0x0a93('0x1')]=_0x59c526[_0x0a93('0x1')]||'';this[_0x0a93('0x2')]=_0x59c526[_0x0a93('0x2')]||'';this[_0x0a93('0x3')]=_0x59c526[_0x0a93('0x3')]||'';this['password']=_0x59c526[_0x0a93('0x4')]||'';this[_0x0a93('0x5')]=_0x59c526['consumerKey']||'';this['consumerSecret']=_0x59c526[_0x0a93('0x6')]||'';this['token']=_0x59c526[_0x0a93('0x7')]||'';this['tokenSecret']=_0x59c526['tokenSecret']||'';this[_0x0a93('0x8')]=_0x59c526[_0x0a93('0x8')]||'';this['serverUrl']=_0x59c526[_0x0a93('0x9')]||'';this['Configurations']=_0x59c526['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x2355=['serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type'];(function(_0x4edc7e,_0x45f0ee){var _0x4be20f=function(_0x272dda){while(--_0x272dda){_0x4edc7e['push'](_0x4edc7e['shift']());}};_0x4be20f(++_0x45f0ee);}(_0x2355,0x12e));var _0x5235=function(_0x3ef65a,_0x2f16d6){_0x3ef65a=_0x3ef65a-0x0;var _0x5a00a4=_0x2355[_0x3ef65a];return _0x5a00a4;};'use strict';function DeskAccount(_0x3e0e60){this['id']=_0x3e0e60['id']||0x0;this[_0x5235('0x0')]=_0x3e0e60[_0x5235('0x0')]||'';this[_0x5235('0x1')]=_0x3e0e60[_0x5235('0x1')]||'';this[_0x5235('0x2')]=_0x3e0e60['remoteUri']||'';this[_0x5235('0x3')]=_0x3e0e60[_0x5235('0x3')]||'';this[_0x5235('0x4')]=_0x3e0e60[_0x5235('0x4')]||'';this[_0x5235('0x5')]=_0x3e0e60[_0x5235('0x5')]||'';this[_0x5235('0x6')]=_0x3e0e60[_0x5235('0x6')]||'';this[_0x5235('0x7')]=_0x3e0e60[_0x5235('0x7')]||'';this[_0x5235('0x8')]=_0x3e0e60[_0x5235('0x8')]||'';this[_0x5235('0x9')]=_0x3e0e60[_0x5235('0x9')]||'';this[_0x5235('0xa')]=_0x3e0e60[_0x5235('0xa')]||'';this[_0x5235('0xb')]=_0x3e0e60[_0x5235('0xb')]||{};}module[_0x5235('0xc')]=DeskAccount;
\ No newline at end of file
index f3ecb1a..a6a94b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a3=['t38timeout','tech','Trunk','ListId','key','name','description','ecm','headerinfo','localstationid','minrate','maxrate','gateway','faxdetect'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x44a3,0x1a9));var _0x344a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x44a3[_0x42cae2];return _0x5f256f;};'use strict';function FaxAccount(_0x2df766){this['id']=_0x2df766['id']||0x0;this[_0x344a('0x0')]=_0x2df766[_0x344a('0x0')]||'';this[_0x344a('0x1')]=_0x2df766[_0x344a('0x1')];this[_0x344a('0x2')]=_0x2df766[_0x344a('0x2')];this[_0x344a('0x3')]=_0x2df766['headerinfo'];this[_0x344a('0x4')]=_0x2df766[_0x344a('0x4')];this[_0x344a('0x5')]=_0x2df766[_0x344a('0x5')]||0x960;this[_0x344a('0x6')]=_0x2df766['maxrate']||0x3840;this['modem']=_0x2df766['modem']||'v17,v27,v29';this[_0x344a('0x7')]=_0x2df766[_0x344a('0x7')]||'no';this[_0x344a('0x8')]=_0x2df766[_0x344a('0x8')]||'no';this[_0x344a('0x9')]=_0x2df766['t38timeout']||0x1388;this[_0x344a('0xa')]=_0x2df766[_0x344a('0xa')]||'SIP';this[_0x344a('0xb')]=_0x2df766['Trunk']?_0x2df766[_0x344a('0xb')]:undefined;this['ListId']=_0x2df766[_0x344a('0xc')];this[_0x344a('0xd')]=_0x2df766['key'];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0xb4e6=['Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','v17,v27,v29','faxdetect','t38timeout','tech','SIP'];(function(_0x20f32d,_0x3a4d5a){var _0x5b6e4a=function(_0x5b8f4f){while(--_0x5b8f4f){_0x20f32d['push'](_0x20f32d['shift']());}};_0x5b6e4a(++_0x3a4d5a);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x2338fa,_0x80579a){_0x2338fa=_0x2338fa-0x0;var _0x42df9b=_0xb4e6[_0x2338fa];return _0x42df9b;};'use strict';function FaxAccount(_0x54acd0){this['id']=_0x54acd0['id']||0x0;this['name']=_0x54acd0[_0x6b4e('0x0')]||'';this[_0x6b4e('0x1')]=_0x54acd0[_0x6b4e('0x1')];this[_0x6b4e('0x2')]=_0x54acd0[_0x6b4e('0x2')];this[_0x6b4e('0x3')]=_0x54acd0[_0x6b4e('0x3')];this['localstationid']=_0x54acd0[_0x6b4e('0x4')];this[_0x6b4e('0x5')]=_0x54acd0[_0x6b4e('0x5')]||0x960;this['maxrate']=_0x54acd0[_0x6b4e('0x6')]||0x3840;this['modem']=_0x54acd0['modem']||_0x6b4e('0x7');this['gateway']=_0x54acd0['gateway']||'no';this[_0x6b4e('0x8')]=_0x54acd0[_0x6b4e('0x8')]||'no';this[_0x6b4e('0x9')]=_0x54acd0[_0x6b4e('0x9')]||0x1388;this[_0x6b4e('0xa')]=_0x54acd0[_0x6b4e('0xa')]||_0x6b4e('0xb');this['Trunk']=_0x54acd0[_0x6b4e('0xc')]?_0x54acd0[_0x6b4e('0xc')]:undefined;this['ListId']=_0x54acd0[_0x6b4e('0xd')];this[_0x6b4e('0xe')]=_0x54acd0[_0x6b4e('0xe')];}module[_0x6b4e('0xf')]=FaxAccount;
\ No newline at end of file
index 7fa3d6d..d30a708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b4c=['serverUrl','Configurations','name','username','apiKey','token','remoteUri'];(function(_0x2aef9c,_0x2b4983){var _0x5a0d3d=function(_0x1dc746){while(--_0x1dc746){_0x2aef9c['push'](_0x2aef9c['shift']());}};_0x5a0d3d(++_0x2b4983);}(_0x9b4c,0xdb));var _0xc9b4=function(_0x5e9817,_0xa29439){_0x5e9817=_0x5e9817-0x0;var _0x25b437=_0x9b4c[_0x5e9817];return _0x25b437;};'use strict';function FreshdeskAccount(_0x2c8af5){this['id']=_0x2c8af5['id']||0x0;this[_0xc9b4('0x0')]=_0x2c8af5['name']||'';this[_0xc9b4('0x1')]=_0x2c8af5[_0xc9b4('0x1')]||'';this[_0xc9b4('0x2')]=_0x2c8af5[_0xc9b4('0x3')]||'';this['remoteUri']=_0x2c8af5[_0xc9b4('0x4')]||'';this[_0xc9b4('0x5')]=_0x2c8af5[_0xc9b4('0x5')]||'';this[_0xc9b4('0x6')]=_0x2c8af5[_0xc9b4('0x6')]||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
+var _0xd69d=['remoteUri','serverUrl','exports','name','username','apiKey','token'];(function(_0x3da047,_0x167b2c){var _0x5040c8=function(_0x5c995a){while(--_0x5c995a){_0x3da047['push'](_0x3da047['shift']());}};_0x5040c8(++_0x167b2c);}(_0xd69d,0x11b));var _0xdd69=function(_0x27a743,_0x13a7ae){_0x27a743=_0x27a743-0x0;var _0x51fd00=_0xd69d[_0x27a743];return _0x51fd00;};'use strict';function FreshdeskAccount(_0x761d87){this['id']=_0x761d87['id']||0x0;this[_0xdd69('0x0')]=_0x761d87[_0xdd69('0x0')]||'';this[_0xdd69('0x1')]=_0x761d87['username']||'';this[_0xdd69('0x2')]=_0x761d87[_0xdd69('0x3')]||'';this[_0xdd69('0x4')]=_0x761d87['remoteUri']||'';this[_0xdd69('0x5')]=_0x761d87['serverUrl']||'';this['Configurations']=_0x761d87['Configurations']||{};}module[_0xdd69('0x6')]=FreshdeskAccount;
\ No newline at end of file
index 10133b6..9438f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a29=['position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','accountcode','context','exten','priority','holdtime','assigned','lastAssignedTo','mohtime','variables','exports','inbound','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4a29,0x133));var _0x94a2=function(_0x598e76,_0x54ee3b){_0x598e76=_0x598e76-0x0;var _0x3e379a=_0x4a29[_0x598e76];return _0x3e379a;};'use strict';function QueueReport(){this['type']=_0x94a2('0x0');this['uniqueid']='';this[_0x94a2('0x1')]='';this[_0x94a2('0x2')]='';this['queue']='';this[_0x94a2('0x3')]=null;this[_0x94a2('0x4')]=null;this[_0x94a2('0x5')]=0x1;this[_0x94a2('0x6')]=0x1;this[_0x94a2('0x7')]=![];this[_0x94a2('0x8')]=null;this[_0x94a2('0x9')]=![];this[_0x94a2('0xa')]=null;this[_0x94a2('0xb')]=![];this[_0x94a2('0xc')]=null;this[_0x94a2('0xd')]=0x1;this[_0x94a2('0xe')]='';this[_0x94a2('0xf')]='';this['connectedlinename']='';this[_0x94a2('0x10')]='';this[_0x94a2('0x11')]='';this[_0x94a2('0x12')]='';this[_0x94a2('0x13')]='';this[_0x94a2('0x14')]=0x0;this[_0x94a2('0x15')]=![];this[_0x94a2('0x16')]='';this[_0x94a2('0x17')]=0x0;this[_0x94a2('0x18')]={};}module[_0x94a2('0x19')]=QueueReport;
\ No newline at end of file
+var _0x0ad3=['queuecallercomplete','queuecallercompleteAt','queuecallerexit','originalposition','connectedlinename','accountcode','context','exten','priority','holdtime','assigned','lastAssignedTo','variables','exports','type','inbound','uniqueid','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandonAt'];(function(_0x25cf3c,_0x5d0270){var _0xfa8f6=function(_0x372eab){while(--_0x372eab){_0x25cf3c['push'](_0x25cf3c['shift']());}};_0xfa8f6(++_0x5d0270);}(_0x0ad3,0x188));var _0x30ad=function(_0x2cd0fd,_0x137ab0){_0x2cd0fd=_0x2cd0fd-0x0;var _0x36f5fe=_0x0ad3[_0x2cd0fd];return _0x36f5fe;};'use strict';function QueueReport(){this[_0x30ad('0x0')]=_0x30ad('0x1');this[_0x30ad('0x2')]='';this['calleridnum']='';this['calleridname']='';this['queue']='';this[_0x30ad('0x3')]=null;this[_0x30ad('0x4')]=null;this['position']=0x1;this[_0x30ad('0x5')]=0x1;this['queuecallerabandon']=![];this[_0x30ad('0x6')]=null;this[_0x30ad('0x7')]=![];this[_0x30ad('0x8')]=null;this[_0x30ad('0x9')]=![];this['queuecallerexitAt']=null;this[_0x30ad('0xa')]=0x1;this['channel']='';this['connectedlinenum']='';this[_0x30ad('0xb')]='';this[_0x30ad('0xc')]='';this[_0x30ad('0xd')]='';this[_0x30ad('0xe')]='';this[_0x30ad('0xf')]='';this[_0x30ad('0x10')]=0x0;this[_0x30ad('0x11')]=![];this[_0x30ad('0x12')]='';this['mohtime']=0x0;this[_0x30ad('0x13')]={};}module[_0x30ad('0x14')]=QueueReport;
\ No newline at end of file
index 5f51679..054e02a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc84f=['integrationTab','serverUrl','exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type'];(function(_0x2572b4,_0x4d545b){var _0x14ea48=function(_0x1256b6){while(--_0x1256b6){_0x2572b4['push'](_0x2572b4['shift']());}};_0x14ea48(++_0x4d545b);}(_0xc84f,0x116));var _0xfc84=function(_0x59526c,_0x597d9d){_0x59526c=_0x59526c-0x0;var _0x239b2c=_0xc84f[_0x59526c];return _0x239b2c;};'use strict';function SalesforceAccount(_0x44c855){this['id']=_0x44c855['id']||0x0;this[_0xfc84('0x0')]=_0x44c855['name']||'';this['username']=_0x44c855[_0xfc84('0x1')]||'';this[_0xfc84('0x2')]=_0x44c855[_0xfc84('0x2')]||'';this[_0xfc84('0x3')]=_0x44c855['password']||'';this[_0xfc84('0x4')]=_0x44c855['clientId']||'';this[_0xfc84('0x5')]=_0x44c855[_0xfc84('0x5')]||'';this[_0xfc84('0x6')]=_0x44c855[_0xfc84('0x6')]||'';this[_0xfc84('0x7')]=_0x44c855[_0xfc84('0x7')]||_0xfc84('0x8');this[_0xfc84('0x9')]=_0x44c855['serverUrl']||'';this['Configurations']=_0x44c855['Configurations']||{};}module[_0xfc84('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0xb389=['clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password'];(function(_0x32056c,_0x1b6db7){var _0x317313=function(_0x6456b6){while(--_0x6456b6){_0x32056c['push'](_0x32056c['shift']());}};_0x317313(++_0x1b6db7);}(_0xb389,0x1e8));var _0x9b38=function(_0xbb9dbf,_0x5dafa4){_0xbb9dbf=_0xbb9dbf-0x0;var _0x30223c=_0xb389[_0xbb9dbf];return _0x30223c;};'use strict';function SalesforceAccount(_0x18061a){this['id']=_0x18061a['id']||0x0;this[_0x9b38('0x0')]=_0x18061a[_0x9b38('0x0')]||'';this[_0x9b38('0x1')]=_0x18061a[_0x9b38('0x1')]||'';this[_0x9b38('0x2')]=_0x18061a[_0x9b38('0x2')]||'';this[_0x9b38('0x3')]=_0x18061a[_0x9b38('0x3')]||'';this[_0x9b38('0x4')]=_0x18061a[_0x9b38('0x4')]||'';this[_0x9b38('0x5')]=_0x18061a[_0x9b38('0x5')]||'';this[_0x9b38('0x6')]=_0x18061a[_0x9b38('0x6')]||'';this['type']=_0x18061a[_0x9b38('0x7')]||_0x9b38('0x8');this[_0x9b38('0x9')]=_0x18061a[_0x9b38('0x9')]||'';this[_0x9b38('0xa')]=_0x18061a[_0x9b38('0xa')]||{};}module[_0x9b38('0xb')]=SalesforceAccount;
\ No newline at end of file
index e9fc124..0022951 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bfb=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x2bfb,0x158));var _0xb2bf=function(_0x59342b,_0x4e2cb5){_0x59342b=_0x59342b-0x0;var _0x2a4940=_0x2bfb[_0x59342b];return _0x2a4940;};'use strict';function SugarcrmAccount(_0x265d2d){this['id']=_0x265d2d['id']||0x0;this['name']=_0x265d2d[_0xb2bf('0x0')]||'';this[_0xb2bf('0x1')]=_0x265d2d[_0xb2bf('0x1')]||'';this[_0xb2bf('0x2')]=_0x265d2d[_0xb2bf('0x2')]||'';this['remoteUri']=_0x265d2d[_0xb2bf('0x3')]||'';this[_0xb2bf('0x4')]=_0x265d2d['serverUrl']||'';this['Configurations']=_0x265d2d[_0xb2bf('0x5')]||{};}module[_0xb2bf('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x2707=['Configurations','name','username','password','remoteUri','serverUrl'];(function(_0x5a80ce,_0x9a5ba3){var _0x50f4df=function(_0x4a9faa){while(--_0x4a9faa){_0x5a80ce['push'](_0x5a80ce['shift']());}};_0x50f4df(++_0x9a5ba3);}(_0x2707,0xeb));var _0x7270=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0x2707[_0x22b68a];return _0x1ac67a;};'use strict';function SugarcrmAccount(_0x431b4b){this['id']=_0x431b4b['id']||0x0;this[_0x7270('0x0')]=_0x431b4b[_0x7270('0x0')]||'';this['username']=_0x431b4b[_0x7270('0x1')]||'';this[_0x7270('0x2')]=_0x431b4b[_0x7270('0x2')]||'';this[_0x7270('0x3')]=_0x431b4b[_0x7270('0x3')]||'';this[_0x7270('0x4')]=_0x431b4b[_0x7270('0x4')]||'';this[_0x7270('0x5')]=_0x431b4b[_0x7270('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index c37b4c4..42c1325 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb60=['status','address','exports','name','accountcode','state','unknown','stateTime'];(function(_0x43780d,_0x2dfb2c){var _0x1bf6dc=function(_0x357522){while(--_0x357522){_0x43780d['push'](_0x43780d['shift']());}};_0x1bf6dc(++_0x2dfb2c);}(_0xbb60,0x19b));var _0x0bb6=function(_0x1df6b7,_0x172c49){_0x1df6b7=_0x1df6b7-0x0;var _0x2769ec=_0xbb60[_0x1df6b7];return _0x2769ec;};'use strict';function Telephone(_0x47d635){this['id']=_0x47d635['id']||0x0;this[_0x0bb6('0x0')]=_0x47d635['name']||'';this[_0x0bb6('0x1')]=_0x47d635[_0x0bb6('0x1')]||'';this[_0x0bb6('0x2')]=_0x0bb6('0x3');this[_0x0bb6('0x4')]=0x0;this[_0x0bb6('0x5')]='unknown';this[_0x0bb6('0x6')]='';}module[_0x0bb6('0x7')]=Telephone;
\ No newline at end of file
+var _0x8689=['state','status','address','exports','name','accountcode'];(function(_0x232ec0,_0x45fdd0){var _0x356705=function(_0x4099ea){while(--_0x4099ea){_0x232ec0['push'](_0x232ec0['shift']());}};_0x356705(++_0x45fdd0);}(_0x8689,0x1de));var _0x9868=function(_0x8a77ba,_0x140bcc){_0x8a77ba=_0x8a77ba-0x0;var _0x5a68b7=_0x8689[_0x8a77ba];return _0x5a68b7;};'use strict';function Telephone(_0x13cf3b){this['id']=_0x13cf3b['id']||0x0;this[_0x9868('0x0')]=_0x13cf3b['name']||'';this[_0x9868('0x1')]=_0x13cf3b[_0x9868('0x1')]||'';this[_0x9868('0x2')]='unknown';this['stateTime']=0x0;this[_0x9868('0x3')]='unknown';this[_0x9868('0x4')]='';}module[_0x9868('0x5')]=Telephone;
\ No newline at end of file
index 676b7b9..8e8c540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['exports'];(function(_0x2c9329,_0x291b82){var _0x431735=function(_0x44a1ea){while(--_0x44a1ea){_0x2c9329['push'](_0x2c9329['shift']());}};_0x431735(++_0x291b82);}(_0xf4eb,0xec));var _0xbf4e=function(_0x14667,_0x47a698){_0x14667=_0x14667-0x0;var _0xe248fb=_0xf4eb[_0x14667];return _0xe248fb;};'use strict';function template(_0x3e6fbd){this['id']=_0x3e6fbd['id']||0x0;this['name']=_0x3e6fbd['name']||'';this['html']=_0x3e6fbd['html']||'';}module[_0xbf4e('0x0')]=template;
\ No newline at end of file
+var _0x9f62=['exports','name','html'];(function(_0x10b7b4,_0x1baea5){var _0x1a5fc5=function(_0x2b18f9){while(--_0x2b18f9){_0x10b7b4['push'](_0x10b7b4['shift']());}};_0x1a5fc5(++_0x1baea5);}(_0x9f62,0x154));var _0x29f6=function(_0x34e6eb,_0x561f8e){_0x34e6eb=_0x34e6eb-0x0;var _0x4c8f81=_0x9f62[_0x34e6eb];return _0x4c8f81;};'use strict';function template(_0x5c9988){this['id']=_0x5c9988['id']||0x0;this[_0x29f6('0x0')]=_0x5c9988['name']||'';this[_0x29f6('0x1')]=_0x5c9988[_0x29f6('0x1')]||'';}module[_0x29f6('0x2')]=template;
\ No newline at end of file
index e0e01a5..4237e8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec5=['AnyConditions','Actions','exports','name','channel','voice','status','AllConditions'];(function(_0x131eb7,_0x55dd00){var _0x4bccdf=function(_0x141251){while(--_0x141251){_0x131eb7['push'](_0x131eb7['shift']());}};_0x4bccdf(++_0x55dd00);}(_0x3ec5,0x9b));var _0x53ec=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3ec5[_0x14add3];return _0x4a174f;};'use strict';function Trigger(_0x811880){this['id']=_0x811880['id']||0x0;this[_0x53ec('0x0')]=_0x811880[_0x53ec('0x0')]||'';this['channel']=_0x811880[_0x53ec('0x1')]||_0x53ec('0x2');this[_0x53ec('0x3')]=_0x811880[_0x53ec('0x3')]||![];this[_0x53ec('0x4')]=_0x811880['AllConditions']||[];this[_0x53ec('0x5')]=_0x811880[_0x53ec('0x5')]||[];this[_0x53ec('0x6')]=_0x811880[_0x53ec('0x6')]||[];}module[_0x53ec('0x7')]=Trigger;
\ No newline at end of file
+var _0xc18a=['name','channel','voice','status','AllConditions','AnyConditions','Actions','exports'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xc18a,0x98));var _0xac18=function(_0x3caa65,_0x4aa770){_0x3caa65=_0x3caa65-0x0;var _0x4aeba7=_0xc18a[_0x3caa65];return _0x4aeba7;};'use strict';function Trigger(_0x5182fb){this['id']=_0x5182fb['id']||0x0;this[_0xac18('0x0')]=_0x5182fb[_0xac18('0x0')]||'';this[_0xac18('0x1')]=_0x5182fb[_0xac18('0x1')]||_0xac18('0x2');this[_0xac18('0x3')]=_0x5182fb[_0xac18('0x3')]||![];this[_0xac18('0x4')]=_0x5182fb[_0xac18('0x4')]||[];this[_0xac18('0x5')]=_0x5182fb[_0xac18('0x5')]||[];this[_0xac18('0x6')]=_0x5182fb[_0xac18('0x6')]||[];}module[_0xac18('0x7')]=Trigger;
\ No newline at end of file
index bd19fba..7bf0c55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cbf=['registrationtime','address','exports','active','state','registry','indexOf','split','host','domain','domainport','refresh','stateRegistry','unknown'];(function(_0x324e96,_0x5b47ed){var _0x825c09=function(_0x455aa6){while(--_0x455aa6){_0x324e96['push'](_0x324e96['shift']());}};_0x825c09(++_0x5b47ed);}(_0x7cbf,0x1ed));var _0xf7cb=function(_0x19f68a,_0x42736b){_0x19f68a=_0x19f68a-0x0;var _0x583c7e=_0x7cbf[_0x19f68a];return _0x583c7e;};'use strict';function Trunk(_0xdd3a5d){this['id']=_0xdd3a5d['id']||0x0;this[_0xf7cb('0x0')]=_0xdd3a5d[_0xf7cb('0x0')]||![];this['name']=_0xdd3a5d['name']||'';this[_0xf7cb('0x1')]='unknown';this['stateTime']=0x0;this['status']='unknown';this[_0xf7cb('0x2')]=_0xdd3a5d['registry']&&_0xdd3a5d['registry'][_0xf7cb('0x3')](':')?_0xdd3a5d[_0xf7cb('0x2')][_0xf7cb('0x4')](':')[0x0]:'';this[_0xf7cb('0x5')]='';this['port']='';this[_0xf7cb('0x6')]='';this[_0xf7cb('0x7')]='';this[_0xf7cb('0x8')]='';this[_0xf7cb('0x9')]=_0xf7cb('0xa');this[_0xf7cb('0xb')]='';this[_0xf7cb('0xc')]='';}module[_0xf7cb('0xd')]=Trunk;
\ No newline at end of file
+var _0xf315=['state','unknown','status','registry','indexOf','split','host','port','domain','refresh','stateRegistry','registrationtime','active','name'];(function(_0x22f057,_0x4fab8d){var _0x103fa1=function(_0x54fdc4){while(--_0x54fdc4){_0x22f057['push'](_0x22f057['shift']());}};_0x103fa1(++_0x4fab8d);}(_0xf315,0x98));var _0x5f31=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf315[_0x20a584];return _0x4b41a8;};'use strict';function Trunk(_0x3ff372){this['id']=_0x3ff372['id']||0x0;this[_0x5f31('0x0')]=_0x3ff372[_0x5f31('0x0')]||![];this[_0x5f31('0x1')]=_0x3ff372[_0x5f31('0x1')]||'';this[_0x5f31('0x2')]=_0x5f31('0x3');this['stateTime']=0x0;this[_0x5f31('0x4')]=_0x5f31('0x3');this[_0x5f31('0x5')]=_0x3ff372['registry']&&_0x3ff372[_0x5f31('0x5')][_0x5f31('0x6')](':')?_0x3ff372['registry'][_0x5f31('0x7')](':')[0x0]:'';this[_0x5f31('0x8')]='';this[_0x5f31('0x9')]='';this[_0x5f31('0xa')]='';this['domainport']='';this[_0x5f31('0xb')]='';this[_0x5f31('0xc')]=_0x5f31('0x3');this[_0x5f31('0xd')]='';this['address']='';}module['exports']=Trunk;
\ No newline at end of file
index 4a6b686..40afe72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['exten','recordingFormat','none'];(function(_0x237182,_0x421ba2){var _0x2394df=function(_0x3c7bf4){while(--_0x3c7bf4){_0x237182['push'](_0x237182['shift']());}};_0x2394df(++_0x421ba2);}(_0x91a7,0xe7));var _0x791a=function(_0x2c2dff,_0x302e28){_0x2c2dff=_0x2c2dff-0x0;var _0x1177a4=_0x91a7[_0x2c2dff];return _0x1177a4;};'use strict';function voiceExtension(_0x27c92e){this['id']=_0x27c92e['id']||0x0;this[_0x791a('0x0')]=_0x27c92e[_0x791a('0x0')]||'';this[_0x791a('0x1')]=_0x27c92e['recordingFormat']||_0x791a('0x2');}module['exports']=voiceExtension;
\ No newline at end of file
+var _0xac4a=['none','exten','recordingFormat'];(function(_0x368621,_0x4a687a){var _0x5c012f=function(_0x416345){while(--_0x416345){_0x368621['push'](_0x368621['shift']());}};_0x5c012f(++_0x4a687a);}(_0xac4a,0x13f));var _0xaac4=function(_0x107ce2,_0x5a9b89){_0x107ce2=_0x107ce2-0x0;var _0x95f9ed=_0xac4a[_0x107ce2];return _0x95f9ed;};'use strict';function voiceExtension(_0x5d2081){this['id']=_0x5d2081['id']||0x0;this[_0xaac4('0x0')]=_0x5d2081[_0xaac4('0x0')]||'';this[_0xaac4('0x1')]=_0x5d2081[_0xaac4('0x1')]||_0xaac4('0x2');}module['exports']=voiceExtension;
\ No newline at end of file
index 173226f..f8ae46f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fb4=['unavailable','ringing','ringinuse','onhold','gsm','rrmemory','roundrobin','name','monitor_format','type','talking','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','loggedIn','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalPauses','predictiveIntervalLowerLimit','predictiveIntervalErlangCallsDroppedCalls','erlangCallToSecond','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','unknown','not_inuse','inuse','busy','invalid'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8fb4,0x19f));var _0x48fb=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x8fb4[_0xa464c9];return _0x3d73c4;};'use strict';var statusDesc=[_0x48fb('0x0'),_0x48fb('0x1'),_0x48fb('0x2'),_0x48fb('0x3'),_0x48fb('0x4'),_0x48fb('0x5'),_0x48fb('0x6'),_0x48fb('0x7'),_0x48fb('0x8')];var monitorFormat={'wav':'wav','wav49':'wav49','gsm':_0x48fb('0x9')};var strategy={'rrmemory':_0x48fb('0xa'),'roundrobin':_0x48fb('0xb')};function VoiceQueue(_0x18818b){this['id']=_0x18818b['id']||0x0;this['name']=_0x18818b[_0x48fb('0xc')]||'';this[_0x48fb('0xd')]=_0x18818b[_0x48fb('0xd')]||'';this['type']=_0x18818b[_0x48fb('0xe')]||'inbound';this['waiting']=0x0;this[_0x48fb('0xf')]=0x0;this['total']=0x0;this[_0x48fb('0x10')]=0x0;this[_0x48fb('0x11')]=0x0;this[_0x48fb('0x12')]=0x0;this[_0x48fb('0x13')]=0x0;this[_0x48fb('0x14')]=0x0;this['abandoned']=0x0;this[_0x48fb('0x15')]=0x0;this['available']=0x0;this['acw']=_0x18818b[_0x48fb('0x16')]||![];this['acwTimeout']=_0x18818b[_0x48fb('0x17')]||0xa;this['autopause']=_0x18818b[_0x48fb('0x18')]||'no';this[_0x48fb('0x19')]=!![];this[_0x48fb('0x1a')]='';this[_0x48fb('0x1b')]=0x0;this[_0x48fb('0x1c')]=0x0;this['dialTimezone']=_0x18818b['dialTimezone']||null;this['dialGlobalInterval']=_0x18818b[_0x48fb('0x1d')]?_0x18818b[_0x48fb('0x1d')]:null;this[_0x48fb('0x1e')]=_0x18818b[_0x48fb('0x1e')];this[_0x48fb('0x1f')]=_0x18818b[_0x48fb('0x1f')]||_0x48fb('0x20');this['dialLimitChannel']=_0x18818b[_0x48fb('0x21')]||0x0;this[_0x48fb('0x22')]=_0x18818b['dialLimitQueue']||0x0;this[_0x48fb('0x23')]=_0x18818b[_0x48fb('0x23')]||0x1;this[_0x48fb('0x24')]=_0x18818b[_0x48fb('0x24')]||_0x48fb('0x25');this[_0x48fb('0x26')]=_0x18818b[_0x48fb('0x26')]||0.03;this['dialPredictiveInterval']=_0x18818b[_0x48fb('0x27')]||0x258;this['dialOriginateCallerIdName']=_0x18818b[_0x48fb('0x28')]||'anonymous';this[_0x48fb('0x29')]=_0x18818b['dialOriginateCallerIdNumber']||_0x48fb('0x2a');this['dialOriginateTimeout']=_0x18818b[_0x48fb('0x2b')]||0x1e;this['dialQueueOptions']=_0x18818b['dialQueueOptions']||_0x48fb('0x2c');this[_0x48fb('0x2d')]=_0x18818b[_0x48fb('0x2d')]||0x3;this['dialQueueProject']=_0x18818b[_0x48fb('0x2e')]||undefined;this[_0x48fb('0x2f')]=_0x18818b[_0x48fb('0x2f')]||0x3;this['dialCongestionRetryFrequency']=_0x18818b[_0x48fb('0x30')]||0x96;this['dialBusyMaxRetry']=_0x18818b[_0x48fb('0x31')]||0x3;this[_0x48fb('0x32')]=_0x18818b[_0x48fb('0x32')]||0x96;this[_0x48fb('0x33')]=_0x18818b['dialNoAnswerMaxRetry']||0x3;this['dialNoAnswerRetryFrequency']=_0x18818b[_0x48fb('0x34')]||0x96;this[_0x48fb('0x35')]=_0x18818b[_0x48fb('0x35')]||0x4;this[_0x48fb('0x36')]=_0x18818b[_0x48fb('0x36')]?_0x18818b[_0x48fb('0x36')]:undefined;this[_0x48fb('0x37')]=_0x18818b[_0x48fb('0x37')]?_0x18818b[_0x48fb('0x37')]:undefined;this[_0x48fb('0x38')]=_0x18818b[_0x48fb('0x38')]||undefined;this[_0x48fb('0x39')]=_0x18818b['Interval']?_0x18818b[_0x48fb('0x39')]:undefined;this[_0x48fb('0x3a')]=_0x18818b[_0x48fb('0x3a')]||_0x48fb('0x3b');this[_0x48fb('0x3c')]=_0x18818b['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x48fb('0x3d')]=_0x18818b[_0x48fb('0x3d')]||undefined;this['strategy']=strategy[_0x18818b[_0x48fb('0x3e')]]||_0x48fb('0xa');this['queueStatusComplete']=!![];this[_0x48fb('0x3f')]=_0x18818b[_0x48fb('0x3f')]||![];this[_0x48fb('0x40')]=_0x18818b[_0x48fb('0x40')];this[_0x48fb('0x41')]=_0x18818b[_0x48fb('0x41')];this[_0x48fb('0x42')]=_0x18818b[_0x48fb('0x42')];this['dialAMDTotalAnalysisTime']=_0x18818b[_0x48fb('0x43')];this['dialAMDMinWordLength']=_0x18818b[_0x48fb('0x44')];this[_0x48fb('0x45')]=_0x18818b[_0x48fb('0x45')];this[_0x48fb('0x46')]=_0x18818b[_0x48fb('0x46')];this['dialAMDSilenceThreshold']=_0x18818b[_0x48fb('0x47')];this[_0x48fb('0x48')]=_0x18818b[_0x48fb('0x48')];this[_0x48fb('0x49')]=0x0;this[_0x48fb('0x4a')]=0x0;this['timeout']=_0x18818b[_0x48fb('0x4b')];this[_0x48fb('0x4c')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0x48fb('0x4d')]=0x0;this[_0x48fb('0x4e')]=0x0;this[_0x48fb('0x4f')]=0x0;this[_0x48fb('0x50')]=0x0;this[_0x48fb('0x51')]=0x0;this[_0x48fb('0x52')]=0x0;this[_0x48fb('0x53')]=0x0;this[_0x48fb('0x54')]=0x0;this[_0x48fb('0x55')]=0x0;this[_0x48fb('0x56')]=0x0;this[_0x48fb('0x57')]=0x0;this['startProgressive']=undefined;this[_0x48fb('0x58')]=undefined;this[_0x48fb('0x59')]=undefined;this[_0x48fb('0x5a')]=1.05;this[_0x48fb('0x5b')]=0x0;this[_0x48fb('0x5c')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0x48fb('0x5d')]=0x0;this[_0x48fb('0x5e')]=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x48fb('0x5f')]=0x0;this[_0x48fb('0x60')]=0.4;this['predictiveIntervalErlangCalls']=0x0;this[_0x48fb('0x61')]=0x0;this['predictiveIntervalHitRate']=0x1;this['erlangCalls']=0x0;this[_0x48fb('0x62')]=0x0;this['erlangAbandonmentRate']=0x0;this[_0x48fb('0x63')]=0x0;this[_0x48fb('0x64')]=_0x18818b[_0x48fb('0x64')]||0x1e;this[_0x48fb('0x65')]=_0x18818b['dialRecallInQueue']||![];this[_0x48fb('0x66')]=_0x18818b[_0x48fb('0x66')]||undefined;this[_0x48fb('0x67')]=_0x18818b['dialAgiAfterHangupClient']||![];this[_0x48fb('0x68')]=_0x18818b[_0x48fb('0x68')]||![];this[_0x48fb('0xd')]=monitorFormat[_0x18818b[_0x48fb('0xd')]]?monitorFormat[_0x18818b[_0x48fb('0xd')]]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0xacf0=['predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','monitor_format','exports','unknown','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','gsm','rrmemory','name','type','waiting','talking','total','sumDuration','sumHoldTime','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','strategy','queueStatusComplete','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalLowerLimit'];(function(_0x27630c,_0x4b5a02){var _0x404ec6=function(_0x5100e6){while(--_0x5100e6){_0x27630c['push'](_0x27630c['shift']());}};_0x404ec6(++_0x4b5a02);}(_0xacf0,0x7c));var _0x0acf=function(_0x1776f3,_0x1ccbbc){_0x1776f3=_0x1776f3-0x0;var _0x14ea38=_0xacf0[_0x1776f3];return _0x14ea38;};'use strict';var statusDesc=[_0x0acf('0x0'),_0x0acf('0x1'),_0x0acf('0x2'),_0x0acf('0x3'),_0x0acf('0x4'),_0x0acf('0x5'),_0x0acf('0x6'),_0x0acf('0x7'),_0x0acf('0x8')];var monitorFormat={'wav':_0x0acf('0x9'),'wav49':_0x0acf('0xa'),'gsm':_0x0acf('0xb')};var strategy={'rrmemory':_0x0acf('0xc'),'roundrobin':'roundrobin'};function VoiceQueue(_0x1cfd3b){this['id']=_0x1cfd3b['id']||0x0;this[_0x0acf('0xd')]=_0x1cfd3b[_0x0acf('0xd')]||'';this['monitor_format']=_0x1cfd3b['monitor_format']||'';this[_0x0acf('0xe')]=_0x1cfd3b['type']||'inbound';this[_0x0acf('0xf')]=0x0;this[_0x0acf('0x10')]=0x0;this[_0x0acf('0x11')]=0x0;this['answered']=0x0;this[_0x0acf('0x12')]=0x0;this[_0x0acf('0x13')]=0x0;this['sumBillable']=0x0;this[_0x0acf('0x14')]=0x0;this[_0x0acf('0x15')]=0x0;this[_0x0acf('0x16')]=0x0;this[_0x0acf('0x17')]=0x0;this['acw']=_0x1cfd3b[_0x0acf('0x18')]||![];this[_0x0acf('0x19')]=_0x1cfd3b[_0x0acf('0x19')]||0xa;this[_0x0acf('0x1a')]=_0x1cfd3b[_0x0acf('0x1a')]||'no';this['sendMessageOneNotActive']=!![];this['message']='';this['originated']=0x0;this[_0x0acf('0x1b')]=0x0;this[_0x0acf('0x1c')]=_0x1cfd3b[_0x0acf('0x1c')]||null;this[_0x0acf('0x1d')]=_0x1cfd3b[_0x0acf('0x1d')]?_0x1cfd3b[_0x0acf('0x1d')]:null;this[_0x0acf('0x1e')]=_0x1cfd3b[_0x0acf('0x1e')];this[_0x0acf('0x1f')]=_0x1cfd3b[_0x0acf('0x1f')]||'progressive';this[_0x0acf('0x20')]=_0x1cfd3b[_0x0acf('0x20')]||0x0;this[_0x0acf('0x21')]=_0x1cfd3b[_0x0acf('0x21')]||0x0;this[_0x0acf('0x22')]=_0x1cfd3b[_0x0acf('0x22')]||0x1;this[_0x0acf('0x23')]=_0x1cfd3b[_0x0acf('0x23')]||_0x0acf('0x24');this[_0x0acf('0x25')]=_0x1cfd3b['dialPredictiveOptimizationPercentage']||0.03;this['dialPredictiveInterval']=_0x1cfd3b[_0x0acf('0x26')]||0x258;this[_0x0acf('0x27')]=_0x1cfd3b[_0x0acf('0x27')]||_0x0acf('0x28');this[_0x0acf('0x29')]=_0x1cfd3b['dialOriginateCallerIdNumber']||_0x0acf('0x28');this[_0x0acf('0x2a')]=_0x1cfd3b[_0x0acf('0x2a')]||0x1e;this['dialQueueOptions']=_0x1cfd3b['dialQueueOptions']||_0x0acf('0x2b');this['dialQueueTimeout']=_0x1cfd3b[_0x0acf('0x2c')]||0x3;this[_0x0acf('0x2d')]=_0x1cfd3b[_0x0acf('0x2d')]||undefined;this[_0x0acf('0x2e')]=_0x1cfd3b[_0x0acf('0x2e')]||0x3;this[_0x0acf('0x2f')]=_0x1cfd3b[_0x0acf('0x2f')]||0x96;this[_0x0acf('0x30')]=_0x1cfd3b[_0x0acf('0x30')]||0x3;this[_0x0acf('0x31')]=_0x1cfd3b[_0x0acf('0x31')]||0x96;this[_0x0acf('0x32')]=_0x1cfd3b[_0x0acf('0x32')]||0x3;this[_0x0acf('0x33')]=_0x1cfd3b['dialNoAnswerRetryFrequency']||0x96;this[_0x0acf('0x34')]=_0x1cfd3b[_0x0acf('0x34')]||0x4;this[_0x0acf('0x35')]=_0x1cfd3b[_0x0acf('0x35')]?_0x1cfd3b['Trunk']:undefined;this[_0x0acf('0x36')]=_0x1cfd3b['TrunkBackup']?_0x1cfd3b[_0x0acf('0x36')]:undefined;this[_0x0acf('0x37')]=_0x1cfd3b[_0x0acf('0x37')]||undefined;this[_0x0acf('0x38')]=_0x1cfd3b[_0x0acf('0x38')]?_0x1cfd3b[_0x0acf('0x38')]:undefined;this['dialOrderByScheduledAt']=_0x1cfd3b[_0x0acf('0x39')]||_0x0acf('0x3a');this[_0x0acf('0x3b')]=_0x1cfd3b[_0x0acf('0x3b')]||undefined;this['dialCutDigit']=_0x1cfd3b['dialCutDigit']||undefined;this[_0x0acf('0x3c')]=strategy[_0x1cfd3b[_0x0acf('0x3c')]]||_0x0acf('0xc');this[_0x0acf('0x3d')]=!![];this['dialAMDActive']=_0x1cfd3b['dialAMDActive']||![];this[_0x0acf('0x3e')]=_0x1cfd3b[_0x0acf('0x3e')];this[_0x0acf('0x3f')]=_0x1cfd3b[_0x0acf('0x3f')];this[_0x0acf('0x40')]=_0x1cfd3b[_0x0acf('0x40')];this[_0x0acf('0x41')]=_0x1cfd3b[_0x0acf('0x41')];this[_0x0acf('0x42')]=_0x1cfd3b['dialAMDMinWordLength'];this[_0x0acf('0x43')]=_0x1cfd3b[_0x0acf('0x43')];this['dialAMDMaximumNumberOfWords']=_0x1cfd3b['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0x1cfd3b[_0x0acf('0x44')];this['dialAMDMaximumWordLength']=_0x1cfd3b[_0x0acf('0x45')];this[_0x0acf('0x46')]=0x0;this[_0x0acf('0x47')]=0x0;this[_0x0acf('0x48')]=_0x1cfd3b[_0x0acf('0x48')];this[_0x0acf('0x49')]=0x0;this[_0x0acf('0x4a')]=0x0;this[_0x0acf('0x4b')]=0x0;this[_0x0acf('0x4c')]=0x0;this[_0x0acf('0x4d')]=0x0;this[_0x0acf('0x4e')]=0x0;this[_0x0acf('0x4f')]=0x0;this[_0x0acf('0x50')]=0x0;this[_0x0acf('0x51')]=0x0;this[_0x0acf('0x52')]=0x0;this[_0x0acf('0x53')]=0x0;this[_0x0acf('0x54')]=0x0;this[_0x0acf('0x55')]=0x0;this[_0x0acf('0x56')]=undefined;this['startPredictive']=undefined;this[_0x0acf('0x57')]=undefined;this[_0x0acf('0x58')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x0acf('0x59')]=0x0;this[_0x0acf('0x5a')]=0x0;this[_0x0acf('0x5b')]=0x0;this[_0x0acf('0x5c')]=0x0;this[_0x0acf('0x5d')]=0x0;this[_0x0acf('0x5e')]=0x0;this[_0x0acf('0x5f')]=0.4;this[_0x0acf('0x60')]=0x0;this[_0x0acf('0x61')]=0x0;this[_0x0acf('0x62')]=0x1;this[_0x0acf('0x63')]=0x0;this[_0x0acf('0x64')]=0x0;this[_0x0acf('0x65')]=0x0;this[_0x0acf('0x66')]=0x0;this['dialRecallMeTimeout']=_0x1cfd3b[_0x0acf('0x67')]||0x1e;this[_0x0acf('0x68')]=_0x1cfd3b[_0x0acf('0x68')]||![];this['dialQueueProject2']=_0x1cfd3b[_0x0acf('0x69')]||undefined;this[_0x0acf('0x6a')]=_0x1cfd3b[_0x0acf('0x6a')]||![];this[_0x0acf('0x6b')]=_0x1cfd3b[_0x0acf('0x6b')]||![];this[_0x0acf('0x6c')]=monitorFormat[_0x1cfd3b[_0x0acf('0x6c')]]?monitorFormat[_0x1cfd3b['monitor_format']]:undefined;}module[_0x0acf('0x6d')]=VoiceQueue;
\ No newline at end of file
index c530658..450dd37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa833=['Configurations','exports','name','username','accessKey','remoteUri'];(function(_0x18ae8f,_0x25f684){var _0x43e219=function(_0x1cb733){while(--_0x1cb733){_0x18ae8f['push'](_0x18ae8f['shift']());}};_0x43e219(++_0x25f684);}(_0xa833,0x1f4));var _0x3a83=function(_0x19dd90,_0x39f104){_0x19dd90=_0x19dd90-0x0;var _0x2a6f41=_0xa833[_0x19dd90];return _0x2a6f41;};'use strict';function VtigerAccount(_0x350c67){this['id']=_0x350c67['id']||0x0;this[_0x3a83('0x0')]=_0x350c67['name']||'';this[_0x3a83('0x1')]=_0x350c67[_0x3a83('0x1')]||'';this[_0x3a83('0x2')]=_0x350c67[_0x3a83('0x2')]||'';this[_0x3a83('0x3')]=_0x350c67[_0x3a83('0x3')]||'';this['serverUrl']=_0x350c67['serverUrl']||'';this[_0x3a83('0x4')]=_0x350c67['Configurations']||{};}module[_0x3a83('0x5')]=VtigerAccount;
\ No newline at end of file
+var _0x3c8e=['name','username','accessKey','remoteUri','serverUrl','Configurations','exports'];(function(_0x2ceb33,_0x39930d){var _0x30db5b=function(_0xe04391){while(--_0xe04391){_0x2ceb33['push'](_0x2ceb33['shift']());}};_0x30db5b(++_0x39930d);}(_0x3c8e,0xc4));var _0xe3c8=function(_0x3a743c,_0x5a953d){_0x3a743c=_0x3a743c-0x0;var _0x5f415b=_0x3c8e[_0x3a743c];return _0x5f415b;};'use strict';function VtigerAccount(_0x31aef9){this['id']=_0x31aef9['id']||0x0;this[_0xe3c8('0x0')]=_0x31aef9[_0xe3c8('0x0')]||'';this['username']=_0x31aef9[_0xe3c8('0x1')]||'';this[_0xe3c8('0x2')]=_0x31aef9[_0xe3c8('0x2')]||'';this[_0xe3c8('0x3')]=_0x31aef9[_0xe3c8('0x3')]||'';this[_0xe3c8('0x4')]=_0x31aef9[_0xe3c8('0x4')]||'';this['Configurations']=_0x31aef9[_0xe3c8('0x5')]||{};}module[_0xe3c8('0x6')]=VtigerAccount;
\ No newline at end of file
index 914c0ef..fb145f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x974e=['username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports','name'];(function(_0x2283dc,_0x2fcfc5){var _0x16db90=function(_0x376c35){while(--_0x376c35){_0x2283dc['push'](_0x2283dc['shift']());}};_0x16db90(++_0x2fcfc5);}(_0x974e,0x1ee));var _0xe974=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x974e[_0x21a9d9];return _0x46adce;};'use strict';function ZendeskAccount(_0x55b109){this['id']=_0x55b109['id']||0x0;this[_0xe974('0x0')]=_0x55b109['name']||'';this[_0xe974('0x1')]=_0x55b109['username']||'';this['password']=_0x55b109[_0xe974('0x2')]||'';this[_0xe974('0x3')]=_0x55b109['token']||'';this['remoteUri']=_0x55b109[_0xe974('0x4')]||'';this['authType']=_0x55b109[_0xe974('0x5')]||'';this[_0xe974('0x6')]=_0x55b109[_0xe974('0x6')]||_0xe974('0x7');this[_0xe974('0x8')]=_0x55b109[_0xe974('0x8')]||'';this[_0xe974('0x9')]=_0x55b109[_0xe974('0x9')]||{};}module[_0xe974('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0x6b57=['exports','name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations'];(function(_0x4d2f00,_0x4e94d5){var _0x2d7b7f=function(_0x18fa08){while(--_0x18fa08){_0x4d2f00['push'](_0x4d2f00['shift']());}};_0x2d7b7f(++_0x4e94d5);}(_0x6b57,0x135));var _0x76b5=function(_0xacb53d,_0x1c2500){_0xacb53d=_0xacb53d-0x0;var _0x20562d=_0x6b57[_0xacb53d];return _0x20562d;};'use strict';function ZendeskAccount(_0x2012c7){this['id']=_0x2012c7['id']||0x0;this[_0x76b5('0x0')]=_0x2012c7['name']||'';this[_0x76b5('0x1')]=_0x2012c7[_0x76b5('0x1')]||'';this[_0x76b5('0x2')]=_0x2012c7[_0x76b5('0x2')]||'';this[_0x76b5('0x3')]=_0x2012c7['token']||'';this[_0x76b5('0x4')]=_0x2012c7[_0x76b5('0x4')]||'';this[_0x76b5('0x5')]=_0x2012c7['authType']||'';this[_0x76b5('0x6')]=_0x2012c7[_0x76b5('0x6')]||_0x76b5('0x7');this[_0x76b5('0x8')]=_0x2012c7[_0x76b5('0x8')]||'';this[_0x76b5('0x9')]=_0x2012c7[_0x76b5('0x9')]||{};}module[_0x76b5('0xa')]=ZendeskAccount;
\ No newline at end of file
index 8525074..df5c205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['Configurations','serverUrl','exports','host'];(function(_0x7cb540,_0x1666e4){var _0x921a0a=function(_0x2fe4b2){while(--_0x2fe4b2){_0x7cb540['push'](_0x7cb540['shift']());}};_0x921a0a(++_0x1666e4);}(_0x5d58,0x187));var _0x85d5=function(_0xaa7ad9,_0x1e26ee){_0xaa7ad9=_0xaa7ad9-0x0;var _0x36b91a=_0x5d58[_0xaa7ad9];return _0x36b91a;};'use strict';function ZohoAccount(_0x4a8117){this['id']=_0x4a8117['id']||0x0;this['name']=_0x4a8117['name']||'';this['authToken']=_0x4a8117['authToken']||'';this[_0x85d5('0x0')]=_0x4a8117[_0x85d5('0x0')]||'';this['Configurations']=_0x4a8117[_0x85d5('0x1')]||{};this[_0x85d5('0x2')]=_0x4a8117['serverUrl']||'';}module[_0x85d5('0x3')]=ZohoAccount;
\ No newline at end of file
+var _0x2ef3=['name','authToken','host','Configurations','serverUrl','exports'];(function(_0x17d48d,_0x4074fb){var _0x26aee9=function(_0x13cb1e){while(--_0x13cb1e){_0x17d48d['push'](_0x17d48d['shift']());}};_0x26aee9(++_0x4074fb);}(_0x2ef3,0xba));var _0x32ef=function(_0x5dc1f5,_0x2de455){_0x5dc1f5=_0x5dc1f5-0x0;var _0x5657dd=_0x2ef3[_0x5dc1f5];return _0x5657dd;};'use strict';function ZohoAccount(_0x4d5ac8){this['id']=_0x4d5ac8['id']||0x0;this[_0x32ef('0x0')]=_0x4d5ac8[_0x32ef('0x0')]||'';this[_0x32ef('0x1')]=_0x4d5ac8[_0x32ef('0x1')]||'';this[_0x32ef('0x2')]=_0x4d5ac8['host']||'';this[_0x32ef('0x3')]=_0x4d5ac8[_0x32ef('0x3')]||{};this['serverUrl']=_0x4d5ac8[_0x32ef('0x4')]||'';}module[_0x32ef('0x5')]=ZohoAccount;
\ No newline at end of file
index c903c43..ca1e8c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf38=['lodash','moment','isNil','string','uniqueid','queue','type','campaigntype','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','calleridname','Contact','firstName','lastName','active','calleridnum','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','number','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xbf38,0x1d4));var _0x8bf3=function(_0x59ca6b,_0x13ba69){_0x59ca6b=_0x59ca6b-0x0;var _0x355907=_0xbf38[_0x59ca6b];return _0x355907;};'use strict';var util=require('util');var _=require(_0x8bf3('0x0'));var moment=require(_0x8bf3('0x1'));function checkNameSurname(_0x28c3bf,_0x1b0a6e,_0x20bdba){var _0x45c49e='';if(!_[_0x8bf3('0x2')](_0x1b0a6e)&&_0x8bf3('0x3')===typeof _0x1b0a6e){_0x45c49e+=_0x1b0a6e;}if(!_[_0x8bf3('0x2')](_0x20bdba)&&'string'===typeof _0x20bdba){_0x45c49e+='\x20'+_0x20bdba;}if(_0x45c49e!==''){return _0x45c49e;}return _0x28c3bf;}function Action(_0x3c0a2b,_0x1b8ae4,_0x319020,_0x587336,_0x99d9b5){this[_0x8bf3('0x4')]=_0x319020||undefined;this['idContact']=_0x3c0a2b['id'];this[_0x8bf3('0x5')]=_0x1b8ae4['name'];this[_0x8bf3('0x6')]=_0x1b8ae4[_0x8bf3('0x6')];this[_0x8bf3('0x7')]=_0x8bf3('0x5');this[_0x8bf3('0x8')]=![];this[_0x8bf3('0x9')]=_[_0x8bf3('0x2')](_0x3c0a2b['Agent'])?undefined:_0x3c0a2b[_0x8bf3('0xa')]['name'];this[_0x8bf3('0xb')]=this[_0x8bf3('0x9')]?util[_0x8bf3('0xc')](_0x8bf3('0xd'),this[_0x8bf3('0x9')]):_0x587336||undefined;this[_0x8bf3('0xe')]=checkNameSurname(_0x3c0a2b[_0x8bf3('0xf')]['phone'],_0x3c0a2b[_0x8bf3('0xf')][_0x8bf3('0x10')],_0x3c0a2b['Contact'][_0x8bf3('0x11')]);this[_0x8bf3('0x12')]=_0x3c0a2b[_0x8bf3('0x12')]||![];this[_0x8bf3('0x13')]=_0x3c0a2b[_0x8bf3('0xf')][_0x8bf3('0x14')];this[_0x8bf3('0x15')]=_0x3c0a2b[_0x8bf3('0x15')];this[_0x8bf3('0x16')]=_0x3c0a2b[_0x8bf3('0x16')]||0x0;this[_0x8bf3('0x17')]=_0x3c0a2b['countcongestionretry']||0x0;this[_0x8bf3('0x18')]=_0x3c0a2b[_0x8bf3('0x18')]||0x0;this['countglobal']=(_0x3c0a2b['countbusyretry']||0x0)+(_0x3c0a2b[_0x8bf3('0x17')]||0x0)+(_0x3c0a2b[_0x8bf3('0x18')]||0x0);this[_0x8bf3('0x19')]=_0x3c0a2b[_0x8bf3('0x19')];this[_0x8bf3('0x1a')]=_0x3c0a2b[_0x8bf3('0x1a')];this[_0x8bf3('0x1b')]=_0x3c0a2b[_0x8bf3('0x1b')];this[_0x8bf3('0x1c')]=_0x3c0a2b[_0x8bf3('0x1c')];this[_0x8bf3('0x1d')]=_0x3c0a2b['ContactId'];this['ListId']=_0x3c0a2b[_0x8bf3('0x1e')];this[_0x8bf3('0x1f')]=_[_0x8bf3('0x2')](_0x3c0a2b[_0x8bf3('0xa')])?_0x3c0a2b[_0x8bf3('0x1f')]:_0x3c0a2b[_0x8bf3('0xa')]['id'];this['VoiceQueueId']=_0x3c0a2b[_0x8bf3('0x20')];this[_0x8bf3('0x21')]='';this[_0x8bf3('0x22')]='';}Action[_0x8bf3('0x23')]['getCaller']=function(){return util[_0x8bf3('0xc')](_0x8bf3('0x24'),this[_0x8bf3('0xe')],this[_0x8bf3('0x25')]);};module[_0x8bf3('0x26')]=Action;
\ No newline at end of file
+var _0xcd35=['format','\x22%s\x22\x20<%s>','calleridname','number','exports','lodash','moment','isNil','string','uniqueid','idContact','queue','type','campaigntype','dialAnswer','membername','Agent','name','channelAgent','SIP/%s','phone','firstName','Contact','lastName','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','prototype'];(function(_0x39caaa,_0x1f37bc){var _0x9b9c7d=function(_0x2da02c){while(--_0x2da02c){_0x39caaa['push'](_0x39caaa['shift']());}};_0x9b9c7d(++_0x1f37bc);}(_0xcd35,0xc8));var _0x5cd3=function(_0x5518f2,_0x214129){_0x5518f2=_0x5518f2-0x0;var _0x51c90e=_0xcd35[_0x5518f2];return _0x51c90e;};'use strict';var util=require('util');var _=require(_0x5cd3('0x0'));var moment=require(_0x5cd3('0x1'));function checkNameSurname(_0x194bc,_0x53681b,_0x25a483){var _0x1974dc='';if(!_[_0x5cd3('0x2')](_0x53681b)&&'string'===typeof _0x53681b){_0x1974dc+=_0x53681b;}if(!_[_0x5cd3('0x2')](_0x25a483)&&_0x5cd3('0x3')===typeof _0x25a483){_0x1974dc+='\x20'+_0x25a483;}if(_0x1974dc!==''){return _0x1974dc;}return _0x194bc;}function Action(_0x39389d,_0x1abd63,_0x240583,_0x557fbd,_0x2ccdd8){this[_0x5cd3('0x4')]=_0x240583||undefined;this[_0x5cd3('0x5')]=_0x39389d['id'];this[_0x5cd3('0x6')]=_0x1abd63['name'];this['type']=_0x1abd63[_0x5cd3('0x7')];this[_0x5cd3('0x8')]=_0x5cd3('0x6');this[_0x5cd3('0x9')]=![];this[_0x5cd3('0xa')]=_[_0x5cd3('0x2')](_0x39389d[_0x5cd3('0xb')])?undefined:_0x39389d[_0x5cd3('0xb')][_0x5cd3('0xc')];this[_0x5cd3('0xd')]=this[_0x5cd3('0xa')]?util['format'](_0x5cd3('0xe'),this['membername']):_0x557fbd||undefined;this['calleridname']=checkNameSurname(_0x39389d['Contact'][_0x5cd3('0xf')],_0x39389d['Contact'][_0x5cd3('0x10')],_0x39389d[_0x5cd3('0x11')][_0x5cd3('0x12')]);this['active']=_0x39389d['active']||![];this[_0x5cd3('0x13')]=_0x39389d[_0x5cd3('0x11')][_0x5cd3('0xf')];this[_0x5cd3('0x14')]=_0x39389d['scheduledat'];this[_0x5cd3('0x15')]=_0x39389d[_0x5cd3('0x15')]||0x0;this[_0x5cd3('0x16')]=_0x39389d[_0x5cd3('0x16')]||0x0;this['countnoanswerretry']=_0x39389d[_0x5cd3('0x17')]||0x0;this[_0x5cd3('0x18')]=(_0x39389d[_0x5cd3('0x15')]||0x0)+(_0x39389d['countcongestionretry']||0x0)+(_0x39389d[_0x5cd3('0x17')]||0x0);this[_0x5cd3('0x19')]=_0x39389d['callback'];this[_0x5cd3('0x1a')]=_0x39389d[_0x5cd3('0x1a')];this[_0x5cd3('0x1b')]=_0x39389d[_0x5cd3('0x1b')];this['recallme']=_0x39389d[_0x5cd3('0x1c')];this[_0x5cd3('0x1d')]=_0x39389d[_0x5cd3('0x1d')];this[_0x5cd3('0x1e')]=_0x39389d[_0x5cd3('0x1e')];this['UserId']=_[_0x5cd3('0x2')](_0x39389d[_0x5cd3('0xb')])?_0x39389d[_0x5cd3('0x1f')]:_0x39389d['Agent']['id'];this['VoiceQueueId']=_0x39389d['VoiceQueueId'];this[_0x5cd3('0x20')]='';this['originatecalleridname']='';}Action[_0x5cd3('0x21')]['getCaller']=function(){return util[_0x5cd3('0x22')](_0x5cd3('0x23'),this[_0x5cd3('0x24')],this[_0x5cd3('0x25')]);};module[_0x5cd3('0x26')]=Action;
\ No newline at end of file
index ea50a30..b9a13c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc48f=['unlockAgent','activeContact','NOANSWER','NoAnswer','[callProgressDetectingCustomer][logNoAnswer]','cloneAction','[callProgressDetectingCustomer][logNoAnswerGlobal]','countnoanswerretry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','[callProgressDetectingCustomer][logCongestion]','CANCEL','AgentReject','unlockContact','idContact','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','outboundUnknownCallsDay','cause-txt','dialstatus','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','originated:\x20','callProgressDetectingAgent','object','isUndefined','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','Contact','VoiceQueueId','execCall','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','outboundBlacklistCallsDay','logBlacklist','createHistory','active','SIP/%s','status','reachable','unmonitored','pick','unlock','disableContact','execRun','recallme','checkIsBlackList','Contact.phone','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','[Preview][validateContact][Empty\x20Contact]','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20work]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','trim','dialCutDigit','phone','substring','getCallerId','getCallerIdRandom','dialOriginateCallerIdNumber','dialRandomLastDigitCallerIdNumber','callerid','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','merge','toLowerVariables','variablesAction','[originated][increment]','[originateFailure][logOriginateFailure]','syncNewExten','channel','lookAgent','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','rejected','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','addVariable','variables','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','util','lodash','bluebird','uuid','moment','md5','../../../config/environment','../../../config/logger','actionPreview','../ami','./rpcDb','./util/util','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','bind','syncHangup','hanguprequest','syncHangupRequest','dialend','syncDialEnd','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','type','outbound','name','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','total','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalLowerLimit','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','originated','Trunk','Interval','stringify','format','voice:queue:%s','voice_queue:save','voice_queue_channel:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','logger','\x20is\x20disactive','syncCampaigns','hasOwnProperty','preview','booked','clearZombieChannels','dialActive','setMessage','isNil','info','Queue','queue','pTalking:\x20','dialAnswer','contactId','ListId','Action','catch','No\x20such\x20channel','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','clearZombieChannel','recallMe','getContactRecallMe','agentReadyId','getDiff','scheduledat','dialRecallMeTimeout','run','then','logger2','[RecallMe]','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','createCustomerFinal','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','NoSuchNumber','createCustomerHistory','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','linkedid','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','\x20Queue','emit','buildObj','acw','custom:agentConnectPreview','custom:agentcomplete','complete','outboundAnswerCallsDay','decrementTalkink','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','uniqueid','countbusyretry','Busy','[callProgressDetectingCustomer][logBusy]','Global','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','rescheduleContact','scheduledAt','dialBusyRetryFrequency'];(function(_0x3bddda,_0x42a67f){var _0x188997=function(_0x49b25a){while(--_0x49b25a){_0x3bddda['push'](_0x3bddda['shift']());}};_0x188997(++_0x42a67f);}(_0xc48f,0x1b8));var _0xfc48=function(_0x44eaec,_0xee3437){_0x44eaec=_0x44eaec-0x0;var _0x4730e7=_0xc48f[_0x44eaec];return _0x4730e7;};'use strict';var util=require(_0xfc48('0x0'));var _=require(_0xfc48('0x1'));var BPromise=require(_0xfc48('0x2'));var uuid=require(_0xfc48('0x3'));var moment=require(_0xfc48('0x4'));var md5=require(_0xfc48('0x5'));var Redis=require('ioredis');var config=require(_0xfc48('0x6'));var logger=require(_0xfc48('0x7'))('preview');var loggerAction=require('../../../config/logger')(_0xfc48('0x8'));var ami=require(_0xfc48('0x9'));var rpcDb=require(_0xfc48('0xa'));var Action=require('./action');var ut=require(_0xfc48('0xb'));config[_0xfc48('0xc')]=_['defaults'](config[_0xfc48('0xc')],{'host':_0xfc48('0xd'),'port':0x18eb});var io=require(_0xfc48('0xe'))(new Redis(config[_0xfc48('0xc')]));var Sequence=function(){};Sequence[_0xfc48('0xf')][_0xfc48('0x10')]=function(_0x8f5b06){this['tail']=this[_0xfc48('0x11')]?this['tail'][_0xfc48('0x12')](_0x8f5b06):_0x8f5b06();};function Preview(_0x205016){this[_0xfc48('0x13')]=new Sequence();this[_0xfc48('0x14')]=_0x205016[_0xfc48('0x15')];this[_0xfc48('0x16')]=_0x205016[_0xfc48('0x16')];this[_0xfc48('0x17')]={};this[_0xfc48('0x18')]=_0x205016[_0xfc48('0x18')];this[_0xfc48('0x19')]=0x0;ami['on']('originateresponse',this[_0xfc48('0x1a')][_0xfc48('0x1b')](this));ami['on']('hangup',this[_0xfc48('0x1c')][_0xfc48('0x1b')](this));ami['on'](_0xfc48('0x1d'),this[_0xfc48('0x1e')][_0xfc48('0x1b')](this));ami['on'](_0xfc48('0x1f'),this[_0xfc48('0x20')][_0xfc48('0x1b')](this));ami['on']('newexten',this['syncNewExten'][_0xfc48('0x1b')](this));ami['on'](_0xfc48('0x21'),this[_0xfc48('0x22')]['bind'](this));ami['on'](_0xfc48('0x23'),this[_0xfc48('0x24')][_0xfc48('0x1b')](this));ami['on'](_0xfc48('0x25'),this[_0xfc48('0x26')][_0xfc48('0x1b')](this));this[_0xfc48('0x27')](this[_0xfc48('0x14')]);}function emit(_0x2a4cf0,_0x1268b3,_0x36cf5e){io['to'](_0x2a4cf0)['emit'](_0x1268b3,_0x36cf5e);}function emitCampaignPreview(_0x44fd38){if(_0x44fd38[_0xfc48('0x28')]===_0xfc48('0x29')){var _0x304375={'id':_0x44fd38['id'],'name':_0x44fd38[_0xfc48('0x2a')],'strategy':_0x44fd38[_0xfc48('0x2b')],'answered':_0x44fd38[_0xfc48('0x2c')],'available':_0x44fd38[_0xfc48('0x2d')],'loggedIn':_0x44fd38[_0xfc48('0x2e')],'pTalking':_0x44fd38[_0xfc48('0x2f')],'sumBillable':_0x44fd38[_0xfc48('0x30')],'sumDuration':_0x44fd38['sumDuration'],'sumHoldTime':_0x44fd38[_0xfc48('0x31')]||0x0,'talking':_0x44fd38['talking'],'total':_0x44fd38[_0xfc48('0x32')],'type':_0x44fd38['type'],'unmanaged':_0x44fd38['unmanaged'],'abandoned':_0x44fd38[_0xfc48('0x33')],'waiting':_0x44fd38[_0xfc48('0x34')],'loggedInDb':_0x44fd38[_0xfc48('0x35')],'dialActive':_0x44fd38['dialActive'],'dialMethod':_0x44fd38[_0xfc48('0x36')],'dialOriginateCallerIdName':_0x44fd38[_0xfc48('0x37')],'dialOriginateCallerIdNumber':_0x44fd38['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x44fd38[_0xfc48('0x38')],'dialPrefix':_0x44fd38[_0xfc48('0x39')],'outboundAnswerAgiCallsDay':_0x44fd38[_0xfc48('0x3a')],'outboundAnswerCallsDay':_0x44fd38['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x44fd38['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x44fd38[_0xfc48('0x3b')],'outboundCongestionCallsDay':_0x44fd38[_0xfc48('0x3c')],'outboundDropCallsDayACS':_0x44fd38[_0xfc48('0x3d')],'outboundDropCallsDayCallersExit':_0x44fd38[_0xfc48('0x3e')],'outboundDropCallsDayTimeout':_0x44fd38[_0xfc48('0x3f')],'outboundNoAnswerCallsDay':_0x44fd38[_0xfc48('0x40')],'outboundNoSuchCallsDay':_0x44fd38[_0xfc48('0x41')],'outboundOriginateFailureCallsDay':_0x44fd38[_0xfc48('0x42')],'outboundReCallsDay':_0x44fd38[_0xfc48('0x43')],'outboundRejectCallsDay':_0x44fd38[_0xfc48('0x44')],'outboundUnknownCallsDay':_0x44fd38['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x44fd38[_0xfc48('0x45')],'predictiveIntervalAvgHoldtime':_0x44fd38[_0xfc48('0x46')],'predictiveIntervalAvgTalktime':_0x44fd38[_0xfc48('0x47')],'predictiveIntervalDroppedCallsCallersExit':_0x44fd38['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x44fd38[_0xfc48('0x48')],'predictiveIntervalErlangCalls':_0x44fd38[_0xfc48('0x49')],'predictiveIntervalErlangCallsDroppedCalls':_0x44fd38['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x44fd38[_0xfc48('0x4a')],'predictiveIntervalLowerLimit':_0x44fd38[_0xfc48('0x4b')],'predictiveIntervalMultiplicativeFactor':_0x44fd38[_0xfc48('0x4c')],'predictiveIntervalPauses':_0x44fd38[_0xfc48('0x4d')],'predictiveIntervalTotalCalls':_0x44fd38[_0xfc48('0x4e')],'message':_0x44fd38[_0xfc48('0x4f')],'originated':_0x44fd38[_0xfc48('0x50')]};if(_0x44fd38['Trunk']){_0x304375[_0xfc48('0x51')]={'id':_0x44fd38[_0xfc48('0x51')]['id'],'name':_0x44fd38[_0xfc48('0x51')]['name'],'active':_0x44fd38[_0xfc48('0x51')]['active'],'callerid':_0x44fd38['Trunk']['callerid']};}if(_0x44fd38[_0xfc48('0x52')]){_0x304375['Interval']={'id':_0x44fd38[_0xfc48('0x52')]['id'],'name':_0x44fd38[_0xfc48('0x52')][_0xfc48('0x2a')]};}var _0x1ca154=md5(JSON[_0xfc48('0x53')](_0x304375));if(_0x44fd38[_0xfc48('0x5')]!==_0x1ca154){_0x44fd38['md5']=_0x1ca154;emit(util[_0xfc48('0x54')](_0xfc48('0x55'),_0x304375[_0xfc48('0x2a')]),_0xfc48('0x56'),_0x304375);}}}function emitVoiceQueueChannelRemove(_0x1233d3){emit(util['format'](_0xfc48('0x55'),_0x1233d3[_0xfc48('0x2a')]),_0xfc48('0x57'),_0x1233d3);}function notSendMessagesQueue(_0x55db2a){if(_0x55db2a[_0xfc48('0x58')]){if(_0x55db2a[_0xfc48('0x50')]===0x0&&_0x55db2a[_0xfc48('0x2f')]===0x0){_0x55db2a[_0xfc48('0x58')]=![];_0x55db2a[_0xfc48('0x2d')]=0x0;_0x55db2a[_0xfc48('0x59')]=0x0;_0x55db2a[_0xfc48('0x4f')]=_0xfc48('0x5a');ut['logger'](_0xfc48('0x5b'),_0x55db2a[_0xfc48('0x2a')]+_0xfc48('0x5c'));}else{_0x55db2a[_0xfc48('0x4f')]=_0xfc48('0x5d');ut[_0xfc48('0x5e')](_0xfc48('0x5b'),_0x55db2a[_0xfc48('0x2a')]+_0xfc48('0x5f'));}emitCampaignPreview(_0x55db2a);}}Preview['prototype'][_0xfc48('0x27')]=function(){var _0x4b99fb=this;setInterval(function(){_0x4b99fb[_0xfc48('0x60')]();},0x7cf);};Preview[_0xfc48('0xf')][_0xfc48('0x60')]=function(){var _0x4cea66=this[_0xfc48('0x14')];this[_0xfc48('0x19')]+=0x1;for(var _0x32cede in _0x4cea66){if(_0x4cea66[_0xfc48('0x61')](_0x32cede)&&(_0x4cea66[_0x32cede]['dialMethod']===_0xfc48('0x62')||_0x4cea66[_0x32cede][_0xfc48('0x36')]===_0xfc48('0x63'))&&_0x4cea66[_0x32cede]['type']===_0xfc48('0x29')){if(this['clockClearZombieChannels']>0x7){this['clockClearZombieChannels']=0x0;this[_0xfc48('0x64')]();}}if(_0x4cea66[_0xfc48('0x61')](_0x32cede)&&_0x4cea66[_0x32cede]['dialMethod']===_0xfc48('0x62')&&_0x4cea66[_0x32cede][_0xfc48('0x28')]===_0xfc48('0x29')){if(_0x4cea66[_0x32cede][_0xfc48('0x65')]){this[_0xfc48('0x66')](_0x4cea66[_0x32cede]);this['recallMe'](_0x4cea66[_0x32cede]);}else{notSendMessagesQueue(_0x4cea66[_0x32cede]);}}}};Preview['prototype']['clearZombieChannel']=function(_0x31ec8a){var _0x3c1db7=this;this[_0xfc48('0x13')][_0xfc48('0x10')](function(){if(!_[_0xfc48('0x67')](_0x3c1db7[_0xfc48('0x17')][_0x31ec8a])){loggerAction[_0xfc48('0x68')]('[clearZombieChannels][talking]',_0x31ec8a,_0xfc48('0x69'),_0x3c1db7[_0xfc48('0x17')][_0x31ec8a][_0xfc48('0x6a')],'originated:\x20',JSON[_0xfc48('0x53')](_0x3c1db7[_0xfc48('0x14')][_0x3c1db7[_0xfc48('0x17')][_0x31ec8a]['queue']][_0xfc48('0x50')]),_0xfc48('0x6b'),JSON[_0xfc48('0x53')](_0x3c1db7[_0xfc48('0x14')][_0x3c1db7[_0xfc48('0x17')][_0x31ec8a][_0xfc48('0x6a')]][_0xfc48('0x2f')]),JSON[_0xfc48('0x53')](_0x3c1db7[_0xfc48('0x17')][_0x31ec8a][_0xfc48('0x6c')]),JSON[_0xfc48('0x53')](_['pick'](_0x3c1db7[_0xfc48('0x17')][_0x31ec8a],[_0xfc48('0x6d'),'UserId','VoiceQueueId',_0xfc48('0x6e')])));return ami[_0xfc48('0x6f')]({'action':'status','channel':_0x3c1db7['actions'][_0x31ec8a]['channel']})[_0xfc48('0x70')](function(_0x175e99){if(_0x175e99[_0xfc48('0x4f')]===_0xfc48('0x71')){setTimeout(function(){if(_0x3c1db7['actions'][_0x31ec8a]){ut['updateOriginated'](_0x3c1db7[_0xfc48('0x14')][_0x3c1db7[_0xfc48('0x17')][_0x31ec8a][_0xfc48('0x6a')]],_0xfc48('0x72'));if(_0x3c1db7[_0xfc48('0x17')][_0x31ec8a]['dialAnswer']===!![]){ut['decrementTalkink'](_0x3c1db7[_0xfc48('0x14')][_0x3c1db7[_0xfc48('0x17')][_0x31ec8a][_0xfc48('0x6a')]],_0xfc48('0x72'));ut[_0xfc48('0x73')](_0xfc48('0x74')+_0x31ec8a,_0x3c1db7[_0xfc48('0x17')][_0x31ec8a][_0xfc48('0x6a')]);}ut[_0xfc48('0x73')](_0xfc48('0x75')+_0x31ec8a,_0x3c1db7[_0xfc48('0x17')][_0x31ec8a][_0xfc48('0x6a')]);delete _0x3c1db7[_0xfc48('0x17')][_0x31ec8a];}},0x2328);}});}});};Preview[_0xfc48('0xf')][_0xfc48('0x64')]=function(){var _0x15fcf3=this;loggerAction[_0xfc48('0x68')](_0xfc48('0x76'),_[_0xfc48('0x77')](this[_0xfc48('0x17')]));for(var _0x73a9bc in this[_0xfc48('0x17')]){if(_0x15fcf3[_0xfc48('0x17')][_0xfc48('0x61')](_0x73a9bc)){_0x15fcf3[_0xfc48('0x78')](_0x73a9bc);}}};Preview[_0xfc48('0xf')][_0xfc48('0x79')]=function(_0x329202){var _0x3739ef=this;rpcDb[_0xfc48('0x7a')](_0x329202['id'],ut[_0xfc48('0x7b')](this[_0xfc48('0x18')]))['then'](function(_0x17d3e3){if(!_[_0xfc48('0x67')](_0x17d3e3)){for(var _0x37e1df=0x0;_0x37e1df<_0x17d3e3['length'];_0x37e1df+=0x1){if(ut[_0xfc48('0x7c')](_0x17d3e3[_0x37e1df][_0xfc48('0x7d')])<_0x329202[_0xfc48('0x7e')]*0x3c){_0x3739ef[_0xfc48('0x7f')](_0x17d3e3[_0x37e1df]['id'])[_0xfc48('0x80')](ut[_0xfc48('0x81')](_0xfc48('0x82')))['catch'](ut[_0xfc48('0x81')](_0xfc48('0x82')));}else{var _0x5c7f1a=new Action(_0x17d3e3[_0x37e1df],_0x329202);_0x5c7f1a[_0xfc48('0x83')]=moment()[_0xfc48('0x54')](_0xfc48('0x84'));_0x329202[_0xfc48('0x43')]+=0x1;ut[_0xfc48('0x85')](_0x5c7f1a,0x17,_0xfc48('0x86'));if(_0x329202[_0xfc48('0x87')]){rpcDb[_0xfc48('0x88')](ut[_0xfc48('0x89')](_0x17d3e3[_0x37e1df]));rpcDb['createCustomerHistory'](_0x5c7f1a,_0xfc48('0x8a'));}else{ut[_0xfc48('0x85')](_0x5c7f1a,0x16,_0xfc48('0x8b'));rpcDb['createCustomerHistory'](_0x5c7f1a,'[HistoryRecallClose]');rpcDb[_0xfc48('0x8c')](_0x5c7f1a,_0xfc48('0x8d'));}}}}})['catch'](ut[_0xfc48('0x81')](_0xfc48('0x8e')));};Preview[_0xfc48('0xf')][_0xfc48('0x66')]=function(_0x4a1ee4){_0x4a1ee4['sendMessageOneNotActive']=!![];if(ut[_0xfc48('0x8f')](_0x4a1ee4[_0xfc48('0x2e')])){_0x4a1ee4['message']=_0xfc48('0x90');}else if(!ut[_0xfc48('0x91')](_0x4a1ee4[_0xfc48('0x65')])){_0x4a1ee4[_0xfc48('0x4f')]='NOT_ACTIVE';}else if(!this['isTrunkReachable'](_0x4a1ee4[_0xfc48('0x51')])){if(!this[_0xfc48('0x92')](_0x4a1ee4[_0xfc48('0x93')])){_0x4a1ee4[_0xfc48('0x4f')]='TRUNK_IS_NOT_REACHABLE';}else{_0x4a1ee4[_0xfc48('0x4f')]=_0xfc48('0x94');}}else{_0x4a1ee4[_0xfc48('0x4f')]=_0xfc48('0x94');}emitCampaignPreview(_0x4a1ee4);};Preview[_0xfc48('0xf')][_0xfc48('0x95')]=function(_0x44bc5b,_0x27dd3b,_0x55b577){var _0x1a3977=this;var _0x524b32=this[_0xfc48('0x17')][_0x27dd3b];var _0x4e1a9d=this[_0xfc48('0x14')][_0x524b32[_0xfc48('0x6a')]];var _0xe473b9;if(_0x4e1a9d){switch(_0x55b577){case'1':_0x4e1a9d[_0xfc48('0x41')]+=0x1;_0x524b32[_0xfc48('0x96')]=ut[_0xfc48('0x97')](_0x524b32);ut[_0xfc48('0x85')](_0x524b32,0x0,_0xfc48('0x98'));rpcDb[_0xfc48('0x99')](_0x524b32,_0xfc48('0x9a'));if(ut[_0xfc48('0x97')](_0x524b32)>=_0x4e1a9d[_0xfc48('0x9b')]){_0xe473b9=ut['cloneAction'](_0x524b32,0xf,'Global');rpcDb[_0xfc48('0x8c')](_0xe473b9,_0xfc48('0x9c'));}else{rpcDb['createCustomerFinal'](_0x524b32,_0xfc48('0x9c'));}delete this['actions'][_0x44bc5b[_0xfc48('0x9d')]];break;case _0xfc48('0x9e'):var _0x6218d=moment()['format'](_0xfc48('0x84'));_0x524b32[_0xfc48('0x9f')]=_0x6218d;_0x524b32[_0xfc48('0xa0')]=_0x6218d;_0x524b32[_0xfc48('0x6c')]=!![];_0x4e1a9d[_0xfc48('0x2f')]+=0x1;logger[_0xfc48('0x68')](_0xfc48('0xa1'),_0x524b32['uniqueid'],_0xfc48('0xa2'),_0x4e1a9d['name'],_0xfc48('0x6b'),_0x4e1a9d['pTalking']);ami[_0xfc48('0xa3')]('custom:agentconnect',ut[_0xfc48('0xa4')](_0x524b32,'connect'));if(_0x4e1a9d[_0xfc48('0xa5')]){ami[_0xfc48('0xa3')](_0xfc48('0xa6'),ut['buildAcw'](_0x524b32));}break;case'16':ami[_0xfc48('0xa3')](_0xfc48('0xa7'),ut[_0xfc48('0xa4')](_0x524b32,_0xfc48('0xa8')));emitVoiceQueueChannelRemove(ut[_0xfc48('0xa4')](_0x524b32,_0xfc48('0xa8')));_0x4e1a9d[_0xfc48('0xa9')]+=0x1;_0x4e1a9d[_0xfc48('0x32')]+=0x1;_0x4e1a9d['answered']+=0x1;ut[_0xfc48('0xaa')](_0x4e1a9d,'[16]');_0x524b32[_0xfc48('0x96')]=ut[_0xfc48('0x97')](_0x524b32);ut[_0xfc48('0x85')](_0x524b32,0x4,'Answer');rpcDb[_0xfc48('0x99')](_0x524b32,_0xfc48('0xab'));rpcDb[_0xfc48('0x8c')](_0x524b32,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0xfc48('0xac')](_0x524b32);_0x4e1a9d[_0xfc48('0xad')]+=_0x524b32[_0xfc48('0xae')];_0x4e1a9d[_0xfc48('0x30')]+=_0x524b32[_0xfc48('0xae')];logger[_0xfc48('0x68')](_0xfc48('0xaf'),_0x524b32[_0xfc48('0xb0')],'\x20Queue',_0x4e1a9d['name'],_0xfc48('0x6b'),_0x4e1a9d[_0xfc48('0x2f')]);delete this[_0xfc48('0x17')][_0x44bc5b[_0xfc48('0x9d')]];break;case'BUSY':_0x4e1a9d[_0xfc48('0x3b')]+=0x1;_0x524b32[_0xfc48('0xb1')]+=0x1;_0x524b32[_0xfc48('0x96')]=ut[_0xfc48('0x97')](_0x524b32);ut['logCustomer'](_0x524b32,0x5,_0xfc48('0xb2'));rpcDb[_0xfc48('0x99')](_0x524b32,_0xfc48('0xb3'));if(ut[_0xfc48('0x97')](_0x524b32)>=_0x4e1a9d['dialGlobalMaxRetry']){_0xe473b9=ut['cloneAction'](_0x524b32,0xf,_0xfc48('0xb4'));rpcDb[_0xfc48('0x8c')](_0xe473b9,_0xfc48('0xb5'));}else{if(_0x524b32[_0xfc48('0xb1')]>=_0x4e1a9d[_0xfc48('0xb6')]){rpcDb[_0xfc48('0x8c')](_0x524b32,_0xfc48('0xb3'));}else{rpcDb[_0xfc48('0xb7')](ut[_0xfc48('0xb8')](_0x524b32,_0xfc48('0xb1'),_0x4e1a9d[_0xfc48('0xb9')]),_0x524b32[_0xfc48('0xba')],_0x524b32[_0xfc48('0xbb')]);}}break;case _0xfc48('0xbc'):_0x4e1a9d[_0xfc48('0x40')]+=0x1;_0x524b32['countnoanswerretry']+=0x1;_0x524b32[_0xfc48('0x96')]=ut[_0xfc48('0x97')](_0x524b32);ut[_0xfc48('0x85')](_0x524b32,0x3,_0xfc48('0xbd'));rpcDb[_0xfc48('0x99')](_0x524b32,_0xfc48('0xbe'));if(ut[_0xfc48('0x97')](_0x524b32)>=_0x4e1a9d[_0xfc48('0x9b')]){_0xe473b9=ut[_0xfc48('0xbf')](_0x524b32,0xf,_0xfc48('0xb4'));rpcDb['createCustomerFinal'](_0xe473b9,_0xfc48('0xc0'));}else{if(_0x524b32[_0xfc48('0xc1')]>=_0x4e1a9d['dialNoAnswerMaxRetry']){rpcDb[_0xfc48('0x8c')](_0x524b32,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0xfc48('0xb7')](ut[_0xfc48('0xb8')](_0x524b32,_0xfc48('0xc1'),_0x4e1a9d[_0xfc48('0xc2')]),_0x524b32[_0xfc48('0xba')],_0x524b32[_0xfc48('0xbb')]);}}break;case _0xfc48('0xc3'):_0x4e1a9d[_0xfc48('0x3c')]+=0x1;_0x524b32[_0xfc48('0xc4')]+=0x1;_0x524b32[_0xfc48('0x96')]=ut['totalGlobal'](_0x524b32);ut[_0xfc48('0x85')](_0x524b32,0x8,_0xfc48('0xc5'));rpcDb[_0xfc48('0x99')](_0x524b32,_0xfc48('0xc6'));if(ut['totalGlobal'](_0x524b32)>=_0x4e1a9d['dialGlobalMaxRetry']){_0xe473b9=ut[_0xfc48('0xbf')](_0x524b32,0xf,'Global');rpcDb[_0xfc48('0x8c')](_0xe473b9,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x524b32[_0xfc48('0xc4')]>=_0x4e1a9d['dialCongestionMaxRetry']){rpcDb[_0xfc48('0x8c')](_0x524b32,_0xfc48('0xc6'));}else{rpcDb[_0xfc48('0xb7')](ut[_0xfc48('0xb8')](_0x524b32,'countcongestionretry',_0x4e1a9d[_0xfc48('0xb9')]),_0x524b32[_0xfc48('0xba')],_0x524b32['activeContact']);}}break;case _0xfc48('0xc7'):_0x4e1a9d[_0xfc48('0x44')]+=0x1;_0x524b32['countglobal']=ut[_0xfc48('0x97')](_0x524b32);ut[_0xfc48('0x85')](_0x524b32,0x14,_0xfc48('0xc8'));rpcDb[_0xfc48('0x99')](_0x524b32,'[syncHangupRequest][logAgentReject]');if(_0x524b32[_0xfc48('0xba')]){rpcDb[_0xfc48('0xc9')](_0x524b32[_0xfc48('0xca')]);}if(_0x524b32[_0xfc48('0xbb')]){rpcDb['disableContact'](_0x524b32[_0xfc48('0xca')]);}break;default:if(_0x524b32[_0xfc48('0x6c')]){ut[_0xfc48('0xaa')](_0x4e1a9d,_0xfc48('0xcb'));ut[_0xfc48('0x73')](_0xfc48('0xcc')+_0x4e1a9d[_0xfc48('0x2a')],_0x44bc5b);}_0x4e1a9d[_0xfc48('0xcd')]+=0x1;_0x524b32[_0xfc48('0x96')]=ut[_0xfc48('0x97')](_0x524b32);ut[_0xfc48('0x85')](_0x524b32,0xc,_0x44bc5b[_0xfc48('0xce')]||_0x44bc5b[_0xfc48('0xcf')]);rpcDb[_0xfc48('0x99')](_0x524b32,_0xfc48('0xd0'));if(ut[_0xfc48('0x97')](_0x524b32)>=_0x4e1a9d['dialGlobalMaxRetry']){_0xe473b9=ut[_0xfc48('0xbf')](_0x524b32,0xf,_0xfc48('0xb4'));rpcDb[_0xfc48('0x8c')](_0xe473b9,_0xfc48('0xd1'));}else{rpcDb[_0xfc48('0x8c')](_0x524b32,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this['actions'][_0x44bc5b[_0xfc48('0x9d')]];}if(!(_0x524b32[_0xfc48('0x6c')]&&_0x55b577==='16')){ut[_0xfc48('0xd2')](_0x4e1a9d,'[callProgressDetectingCustomer]');logger[_0xfc48('0x68')]('[originated][decrement][callProgressDetectingCustomer]',_0x524b32[_0xfc48('0xb0')],'\x20Queue',_0x4e1a9d[_0xfc48('0x2a')],_0xfc48('0xd3'),_0x4e1a9d[_0xfc48('0x50')]);}if(_0x55b577!==_0xfc48('0x9e')){delete this[_0xfc48('0x17')][_0x44bc5b[_0xfc48('0x9d')]];delete this['actions'][_0x44bc5b['destlinkedid']];}}};Preview[_0xfc48('0xf')][_0xfc48('0xd4')]=function(_0x3f0e76,_0x3a1971,_0x2ebd28){if(_['isUndefined'](_0x3a1971)&&_0xfc48('0xd5')!==typeof _0x3a1971){return;}if(_[_0xfc48('0xd6')](_0x2ebd28)&&_0xfc48('0xd5')!==typeof _0x2ebd28){return;}switch(_0x2ebd28[_0xfc48('0xd7')]){case'0':ut[_0xfc48('0xd8')](_0x3f0e76,0x0,_0xfc48('0x98'));rpcDb[_0xfc48('0xd9')](_0x3f0e76,_0xfc48('0xda'));break;case'3':ut[_0xfc48('0xd8')](_0x3f0e76,0x3,_0xfc48('0xbd'));rpcDb[_0xfc48('0xd9')](_0x3f0e76,_0xfc48('0xdb'));break;case'5':ut[_0xfc48('0xd8')](_0x3f0e76,0x5,_0xfc48('0xb2'));rpcDb['createAgentHistory'](_0x3f0e76,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0xfc48('0xd8')](_0x3f0e76,0x8,_0xfc48('0xc5'));rpcDb[_0xfc48('0xd9')](_0x3f0e76,_0xfc48('0xdc'));break;case'22':ut[_0xfc48('0xd8')](_0x3f0e76,0x16,_0xfc48('0xdd'));rpcDb[_0xfc48('0xd9')](_0x3f0e76,_0xfc48('0xde'));break;default:ut[_0xfc48('0xd8')](_0x3f0e76,0xc,_0x2ebd28[_0xfc48('0xd7')]);rpcDb[_0xfc48('0xd9')](_0x3f0e76,_0xfc48('0xdc'));}ut[_0xfc48('0xd2')](_0x3a1971,_0xfc48('0xdf'));logger['info'](_0xfc48('0xe0'),_0x3f0e76[_0xfc48('0xb0')],_0xfc48('0xa2'),_0x3a1971[_0xfc48('0x2a')],_0xfc48('0xd3'),_0x3a1971[_0xfc48('0x50')]);delete this[_0xfc48('0x17')][_0x3f0e76['uniqueid']];};Preview[_0xfc48('0xf')]['checkInBlack']=function(_0x4e7ad8,_0x2a9e91,_0x4d09bf,_0x16d02f,_0x3b1d94){var _0xdb0c4d=this;return new BPromise(function(_0x61af2e,_0x4de842){if(_[_0xfc48('0x67')](_0x2a9e91)||_['isNil'](_0x2a9e91[_0xfc48('0xe1')])||_[_0xfc48('0x67')](_0x2a9e91[_0xfc48('0xe1')]['phone'])||_[_0xfc48('0x67')](_0x2a9e91[_0xfc48('0xe2')])){_0x4de842(ut[_0xfc48('0x4f')]('Contact\x20is\x20undefined',_0x16d02f,_0x3b1d94));return;}var _0x1d2984=uuid['v4']();var _0x336471=_0xdb0c4d[_0xfc48('0x14')][_0x2a9e91[_0xfc48('0x69')]['name']];var _0xdf8872=_0x4d09bf?_0xdb0c4d[_0xfc48('0x18')][_0x4d09bf]['id']:undefined;_0xdb0c4d[_0xfc48('0x17')][_0x1d2984]=new Action(_0x2a9e91,_0x336471,_0x1d2984,_0x4d09bf,_0xdf8872);var _0x58c218=_0xdb0c4d[_0xfc48('0x17')][_0x1d2984];_0x58c218[_0xfc48('0xba')]=_0x16d02f;_0x58c218[_0xfc48('0xbb')]=_0x3b1d94;_0x58c218['lookAgent']=_0x4d09bf;if(_['isEmpty'](_0x4e7ad8)){_0xdb0c4d[_0xfc48('0xe3')](_0x58c218,_0x336471,_0x2a9e91,_0x4d09bf)[_0xfc48('0x80')](function(_0x490285){logger[_0xfc48('0x68')]('[Preview][execCall][success]',_0xfc48('0xe4')+_0x58c218[_0xfc48('0x6a')]+_0xfc48('0xe5')+_0x58c218['idContact'],JSON['stringify'](_0x490285));ami[_0xfc48('0xa3')](_0xfc48('0xe6'),ut[_0xfc48('0xa4')](_0x58c218,_0xfc48('0xe7')));_0x61af2e(ut[_0xfc48('0x4f')](_0xfc48('0xe8')));})[_0xfc48('0x70')](function(_0x5a5298){ut['logger'](_0xfc48('0xe9'),_0x5a5298);_0x4de842(ut[_0xfc48('0x4f')](_0xfc48('0xea'),_0x16d02f,_0x3b1d94));});}else{_0x336471[_0xfc48('0xeb')]+=0x1;ut[_0xfc48('0xec')](_0x58c218);rpcDb[_0xfc48('0xed')](_0x58c218,'[Blacklist][error]');delete _0xdb0c4d[_0xfc48('0x17')][_0x1d2984];_0x4de842(ut[_0xfc48('0x4f')]('Contact\x20in\x20black\x20List',_0x16d02f,_0x3b1d94));}});};Preview[_0xfc48('0xf')]['isTrunkReachable']=function(_0x1c3b3c){return!_[_0xfc48('0x67')](_0x1c3b3c)&&!_[_0xfc48('0x67')](_0x1c3b3c[_0xfc48('0x2a')])&&!_[_0xfc48('0x67')](_0x1c3b3c[_0xfc48('0xee')])&&_0x1c3b3c[_0xfc48('0xee')]&&!_[_0xfc48('0x67')](this[_0xfc48('0x16')][util[_0xfc48('0x54')](_0xfc48('0xef'),_0x1c3b3c[_0xfc48('0x2a')])])&&!_[_0xfc48('0x67')](this[_0xfc48('0x16')][util[_0xfc48('0x54')](_0xfc48('0xef'),_0x1c3b3c[_0xfc48('0x2a')])][_0xfc48('0xf0')])&&(this['trunks'][util[_0xfc48('0x54')]('SIP/%s',_0x1c3b3c['name'])][_0xfc48('0xf0')]===_0xfc48('0xf1')||this[_0xfc48('0x16')][util[_0xfc48('0x54')]('SIP/%s',_0x1c3b3c['name'])]['status']===_0xfc48('0xf2'));};Preview[_0xfc48('0xf')][_0xfc48('0x7f')]=function(_0x1d5b38,_0x451496){var _0x31c970=this;return new BPromise(function(_0x38b841,_0x49202d){_0x31c970['execRun'](_0x1d5b38,_0x451496)[_0xfc48('0x80')](function(_0x3420c4){_0x38b841(_[_0xfc48('0xf3')](_0x3420c4,[_0xfc48('0x4f')]));})['catch'](function(_0xe9e5b9){if(_0xe9e5b9[_0xfc48('0xf4')]){rpcDb[_0xfc48('0xc9')](_0x1d5b38);}if(_0xe9e5b9[_0xfc48('0xee')]){rpcDb[_0xfc48('0xf5')](_0x1d5b38);}_0x49202d(_[_0xfc48('0xf3')](_0xe9e5b9,[_0xfc48('0x4f')]));});});};Preview['prototype'][_0xfc48('0xf6')]=function(_0x57498f,_0x49db9c){var _0x5c70ea=this;return new BPromise(function(_0x41cde5,_0x2b74c0){var _0x2b592d,_0x1c6fc7;rpcDb['getContactPreview'](_0x57498f)[_0xfc48('0x80')](function(_0x498026){if(!_['isNil'](_0x498026[0x0])){_0x1c6fc7=_0x498026[0x0][_0xfc48('0xf7')]?![]:!![];_0x2b592d=_0x498026[0x0][_0xfc48('0xf7')]?!![]:![];_0x2b592d=_0x49db9c?!![]:_0x2b592d;}var _0x4d9377=_0x5c70ea['validateContact'](_0x498026);if(_0x4d9377['isValid']){rpcDb[_0xfc48('0xf8')](_[_0xfc48('0xf3')](_0x498026[0x0],[_0xfc48('0xe2'),_0xfc48('0xf9')]))[_0xfc48('0x80')](function(_0x445499){_0x5c70ea['checkInBlack'](_0x445499,_0x498026[0x0],_0x49db9c,_0x1c6fc7,_0x2b592d)[_0xfc48('0x80')](function(_0x474c01){_0x41cde5(_0x474c01);})[_0xfc48('0x70')](function(_0x1b4824){_0x2b74c0(_0x1b4824);});})[_0xfc48('0x70')](function(_0x3617b1){ut['logger']('[Preview][checkIsBlackList]',_0x3617b1);_0x2b74c0(ut[_0xfc48('0x4f')](_0xfc48('0xfa'),_0x1c6fc7,_0x2b592d));});}else{_0x2b74c0(ut[_0xfc48('0x4f')](_0x4d9377['message'],_0x1c6fc7,_0x2b592d));}})['catch'](function(_0x26b434){ut[_0xfc48('0x5e')](_0xfc48('0xfb'),_0x26b434);_0x2b74c0(ut['message'](_0xfc48('0xfa'),![],!![]));});});};Preview[_0xfc48('0xf')][_0xfc48('0xfc')]=function(_0x578299){if(_[_0xfc48('0x67')](_0x578299)||_['isEmpty'](_0x578299)||!_['isNil'](_0x578299[0x0]['Agent'])&&_[_0xfc48('0x67')](_0x578299[0x0]['Agent'][_0xfc48('0x2a')])){ut['logger'](_0xfc48('0xfd'),_0x578299);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x1900ca=this['campaignsPreview'][_0x578299[0x0][_0xfc48('0x69')]['name']];_0x1900ca[_0xfc48('0x4f')]='ACTIVE';if(_[_0xfc48('0x67')](_0x1900ca)){ut[_0xfc48('0x5e')](_0xfc48('0xfe'),_0x1900ca);return{'isValid':![],'message':_0xfc48('0xff')};}if(!this[_0xfc48('0x92')](_0x1900ca[_0xfc48('0x51')])){ut[_0xfc48('0x5e')]('[Preview][validateContact][Trunk\x20not\x20work]',_0xfc48('0x100')+_0x1900ca['name']+_0xfc48('0x101'));if(!this['isTrunkReachable'](_0x1900ca[_0xfc48('0x93')])){ut[_0xfc48('0x5e')](_0xfc48('0x102'),_0x1900ca[_0xfc48('0x2a')]+_0xfc48('0x103'));return{'isValid':![],'message':_0xfc48('0x104')};}}if(!ut['isActive'](_0x1900ca['dialActive'])){ut[_0xfc48('0x5e')](_0xfc48('0x105'),_0x1900ca[_0xfc48('0x2a')]+_0xfc48('0x106'));return{'isValid':![],'message':_0xfc48('0x100')+_0x1900ca[_0xfc48('0x2a')]+_0xfc48('0x106')};}return{'isValid':!![],'message':_0xfc48('0x107')};};Preview[_0xfc48('0xf')][_0xfc48('0xe3')]=function(_0x410b21,_0x10c035,_0x57ec8d,_0x508064){var _0x4515b5=this;return new BPromise(function(_0x1ebf3f,_0x5c06fb){var _0x14ecb2=_0x410b21[_0xfc48('0xb0')];var _0x38717d=_0x4515b5['isTrunkReachable'](_0x10c035[_0xfc48('0x51')])?util[_0xfc48('0x54')]('SIP/%s/%s%s',_0x10c035[_0xfc48('0x51')][_0xfc48('0x2a')],_[_0xfc48('0x67')](_0x10c035[_0xfc48('0x39')])?'':_0x10c035[_0xfc48('0x39')][_0xfc48('0x108')]()||'',_0x10c035[_0xfc48('0x109')]>0x0?_0x57ec8d[_0xfc48('0xe1')][_0xfc48('0x10a')]['substring'](_0x10c035['dialCutDigit']):_0x57ec8d['Contact'][_0xfc48('0x10a')]):util['format']('SIP/%s/%s%s',_[_0xfc48('0x67')](_0x10c035['TrunkBackup'])?_0x10c035[_0xfc48('0x51')]['name']:_0x10c035[_0xfc48('0x93')][_0xfc48('0x2a')],_[_0xfc48('0x67')](_0x10c035[_0xfc48('0x39')])?'':_0x10c035[_0xfc48('0x39')]['trim']()||'',_0x10c035[_0xfc48('0x109')]>0x0?_0x57ec8d[_0xfc48('0xe1')][_0xfc48('0x10a')][_0xfc48('0x10b')](_0x10c035[_0xfc48('0x109')]):_0x57ec8d[_0xfc48('0xe1')][_0xfc48('0x10a')]);var _0x5a68e3=_0x4515b5[_0xfc48('0x92')](_0x10c035[_0xfc48('0x51')])?ut[_0xfc48('0x10c')](_0x10c035[_0xfc48('0x51')]['callerid'],_0x10c035['dialOriginateCallerIdName'],_0x10c035['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xfc48('0x10d')](_0x10c035[_0xfc48('0x10e')],_0x10c035[_0xfc48('0x10f')]):_0x10c035[_0xfc48('0x10e')]):ut[_0xfc48('0x10c')](_[_0xfc48('0x67')](_0x10c035[_0xfc48('0x93')])?_0x10c035[_0xfc48('0x51')][_0xfc48('0x110')]:_0x10c035[_0xfc48('0x93')][_0xfc48('0x110')],_0x10c035['dialOriginateCallerIdName'],_0x10c035[_0xfc48('0x10f')]>0x0?ut[_0xfc48('0x10d')](_0x10c035[_0xfc48('0x10e')],_0x10c035[_0xfc48('0x10f')]):_0x10c035[_0xfc48('0x10e')]);if(_0x5a68e3){_0x410b21[_0xfc48('0x111')]=ut[_0xfc48('0x112')](_0x5a68e3);_0x410b21[_0xfc48('0x113')]=ut[_0xfc48('0x114')](_0x5a68e3);}var _0x5536ed=ut['addVariables'](_0x10c035,_0x57ec8d,_0x38717d,_0x5a68e3,_0x14ecb2,_0x410b21);_[_0xfc48('0x115')](_0x410b21,ut[_0xfc48('0x116')](_0x5536ed));_0x410b21['starttime']=moment()['format'](_0xfc48('0x84'));ami[_0xfc48('0x6f')](ut[_0xfc48('0x117')](_0x410b21,_0x10c035,_0x5536ed,_0x410b21[_0xfc48('0xbb')],_0x508064))['then'](function(_0x589a5e){_0x10c035[_0xfc48('0x50')]+=0x1;logger[_0xfc48('0x68')](_0xfc48('0x118'),_0x14ecb2,_0xfc48('0xa2'),_0x10c035[_0xfc48('0x2a')],'originated:\x20',_0x10c035['originated']);_0x1ebf3f(_0x589a5e);})[_0xfc48('0x70')](function(_0x3f8c15){ut[_0xfc48('0xd8')](_0x410b21,0xe,'OriginateError');rpcDb[_0xfc48('0xd9')](_0x410b21,_0xfc48('0x119'));_0x5c06fb(_0x3f8c15);});});};Preview[_0xfc48('0xf')][_0xfc48('0x11a')]=function(_0x353e00){if(this[_0xfc48('0x17')][_0x353e00[_0xfc48('0x9d')]]){this[_0xfc48('0x17')][_0x353e00[_0xfc48('0x9d')]][_0xfc48('0x11b')]=_0x353e00[_0xfc48('0x11b')];}};Preview[_0xfc48('0xf')]['syncOriginateResponse']=function(_0x37f79e){var _0x2f33db=this;var _0xe46ecf=this['actions'][_0x37f79e['actionid']];if(_0xe46ecf){if(_0xe46ecf[_0xfc48('0x11c')]&&this['agents'][_0xe46ecf['lookAgent']]){ut[_0xfc48('0x11d')](_0xe46ecf,this[_0xfc48('0x18')][_0xe46ecf[_0xfc48('0x11c')]][_0xfc48('0x2a')],this[_0xfc48('0x18')][_0xe46ecf['lookAgent']]['id']);}var _0x3ea3f9=_[_0xfc48('0x11e')](_0xe46ecf);_0x3ea3f9[_0xfc48('0x9f')]=moment()[_0xfc48('0x54')](_0xfc48('0x84'));var _0x50c259=_0x2f33db['campaignsPreview'][_0xe46ecf['queue']];if(ut[_0xfc48('0x11f')](_0x37f79e[_0xfc48('0x120')])){if(_0xe46ecf['unlockAgent']){rpcDb[_0xfc48('0xc9')](_0xe46ecf[_0xfc48('0xca')]);}if(_0xe46ecf[_0xfc48('0xbb')]){rpcDb['disableContact'](_0xe46ecf[_0xfc48('0xca')]);}ami[_0xfc48('0xa3')](_0xfc48('0x121'),ut[_0xfc48('0xa4')](_0xe46ecf,_0xfc48('0x122')));this[_0xfc48('0xd4')](_0x3ea3f9,_0x50c259,_0x37f79e);}else{_0xe46ecf[_0xfc48('0x83')]=moment()[_0xfc48('0x54')](_0xfc48('0x84'));ut['logAgent'](_0x3ea3f9,0x4,_0xfc48('0x123'));rpcDb[_0xfc48('0xd9')](_0x3ea3f9,_0xfc48('0x124'));}}};Preview[_0xfc48('0xf')][_0xfc48('0x1c')]=function(_0x446b3d){var _0x2ab972=this;var _0x2e35ee=this[_0xfc48('0x17')][_0x446b3d[_0xfc48('0x9d')]];var _0xc4cf69;if(_0x2e35ee){_0xc4cf69=this[_0xfc48('0x14')][_0x2e35ee[_0xfc48('0x6a')]];logger[_0xfc48('0x68')](_0xfc48('0x125'),_0x446b3d[_0xfc48('0x9d')],_0xfc48('0xa2'),_0xc4cf69[_0xfc48('0x2a')],_0xfc48('0x6b'),_0xc4cf69[_0xfc48('0x2f')]);}if(this[_0xfc48('0x17')][_0x446b3d[_0xfc48('0x9d')]]&&_0x446b3d['linkedid']!==_0x446b3d[_0xfc48('0xb0')]){if(_0x446b3d[_0xfc48('0x126')]==='16'&&this[_0xfc48('0x17')][_0x446b3d['linkedid']][_0xfc48('0x6c')]){this['callProgressDetectingCustomer'](_0x446b3d,_0x446b3d[_0xfc48('0x9d')],_0x446b3d['cause']);}else if(this[_0xfc48('0x17')][_0x446b3d['linkedid']][_0xfc48('0x6c')]){logger[_0xfc48('0x68')](_0xfc48('0x127'),_0x446b3d[_0xfc48('0x9d')],_0x446b3d[_0xfc48('0x126')],'\x20Queue',_0xc4cf69[_0xfc48('0x2a')],_0xfc48('0x6b'),_0xc4cf69[_0xfc48('0x2f')]);this[_0xfc48('0x95')](_0x446b3d,_0x446b3d[_0xfc48('0x9d')],_0x446b3d[_0xfc48('0x126')]);}}else if(_0x2e35ee&&_['isNil'](_0x2e35ee['statedesc'])&&_0xc4cf69[_0xfc48('0x128')]&&_0x446b3d['linkedid']===_0x446b3d[_0xfc48('0xb0')]&&_[_0xfc48('0x67')](_0x446b3d[_0xfc48('0xd7')])&&_0x446b3d[_0xfc48('0x126')]==='16'&&_0x446b3d[_0xfc48('0x129')]==='6'&&_['isUndefined'](_0x2e35ee[_0xfc48('0x12a')])){if(_0x2e35ee[_0xfc48('0xba')]){rpcDb[_0xfc48('0xc9')](_0x2e35ee[_0xfc48('0xca')]);}if(_0x2e35ee[_0xfc48('0xbb')]){rpcDb['disableContact'](_0x2e35ee[_0xfc48('0xca')]);}_0x446b3d['reason']='22';this[_0xfc48('0xd4')](_0x2e35ee,_0xc4cf69,_0x446b3d);}else if(_0x2e35ee&&_0x2e35ee[_0xfc48('0x12a')]){if(_0x446b3d[_0xfc48('0x126')]==='16'&&this['actions'][_0x446b3d[_0xfc48('0x9d')]]['dialAnswer']){logger[_0xfc48('0x68')](_0xfc48('0x12b'),_0x446b3d[_0xfc48('0x9d')],_0x446b3d[_0xfc48('0x126')],_0xfc48('0xa2'),_0xc4cf69[_0xfc48('0x2a')],_0xfc48('0x6b'),_0xc4cf69[_0xfc48('0x2f')]);this[_0xfc48('0x95')](_0x446b3d,_0x446b3d[_0xfc48('0x9d')],_0x446b3d['cause']);}else if(this[_0xfc48('0x17')][_0x446b3d[_0xfc48('0x9d')]][_0xfc48('0x6c')]){logger[_0xfc48('0x68')](_0xfc48('0x127'),_0x446b3d[_0xfc48('0x9d')],_0x446b3d[_0xfc48('0x126')],_0xfc48('0xa2'),_0xc4cf69[_0xfc48('0x2a')],_0xfc48('0x6b'),_0xc4cf69[_0xfc48('0x2f')]);this[_0xfc48('0x95')](_0x446b3d,_0x446b3d[_0xfc48('0x9d')],_0x446b3d[_0xfc48('0x126')]);}}};Preview[_0xfc48('0xf')][_0xfc48('0x20')]=function(_0x20f62c){if(this[_0xfc48('0x17')][_0x20f62c[_0xfc48('0x12c')]]&&_0x20f62c['destlinkedid']!==_0x20f62c[_0xfc48('0x12d')]){this[_0xfc48('0x95')](_0x20f62c,_0x20f62c[_0xfc48('0x12c')],_0x20f62c[_0xfc48('0xcf')]);}};Preview['prototype'][_0xfc48('0x1e')]=function(_0x33a686){if(this[_0xfc48('0x17')][_0x33a686[_0xfc48('0x9d')]]&&_0x33a686[_0xfc48('0x9d')]!==_0x33a686[_0xfc48('0xb0')]&&!this[_0xfc48('0x17')][_0x33a686[_0xfc48('0x9d')]][_0xfc48('0x6c')]){if(_0x33a686[_0xfc48('0x126')]==='1'){this[_0xfc48('0x95')](_0x33a686,_0x33a686[_0xfc48('0x9d')],_0x33a686['cause']);}}};Preview[_0xfc48('0xf')][_0xfc48('0x12e')]=function(_0xd25704,_0x4a612d,_0x186f62){if(this['actions'][_0xd25704]){if(_[_0xfc48('0x67')](this[_0xfc48('0x17')][_0xd25704][_0xfc48('0x12f')])){this[_0xfc48('0x17')][_0xd25704][_0xfc48('0x12f')]={};}this[_0xfc48('0x17')][_0xd25704][_0xfc48('0x12f')][_0x4a612d]=_0x186f62;}};Preview[_0xfc48('0xf')][_0xfc48('0x22')]=function(_0xd857e){try{if(!_[_0xfc48('0x67')](_0xd857e)){if(ut[_0xfc48('0x130')](_[_0xfc48('0x131')](_0xd857e['variable'])[0x0])){this['addVariable'](_0xd857e[_0xfc48('0xb0')],_['keys'](_0xd857e[_0xfc48('0x132')])[0x0],_0xd857e[_0xfc48('0x133')]);}}}catch(_0x582241){logger[_0xfc48('0x134')](_0xfc48('0x135'),util[_0xfc48('0x136')](_0x582241,{'showHidden':![],'depth':null}));}};Preview[_0xfc48('0xf')][_0xfc48('0x24')]=function(_0x40796b){if(_0x40796b){if(this[_0xfc48('0x17')][_0x40796b[_0xfc48('0x137')]]){this[_0xfc48('0x17')][_0x40796b[_0xfc48('0x137')]][_0xfc48('0x12a')]=!![];}}};Preview[_0xfc48('0xf')][_0xfc48('0x26')]=function(_0x3cdf0a){if(_0x3cdf0a){if(this[_0xfc48('0x17')][_0x3cdf0a[_0xfc48('0x138')]]){this[_0xfc48('0x17')][_0x3cdf0a['transfererlinkedid']][_0xfc48('0x12a')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0x51e7=['responsetime','isFailure','custom:agentringnoanswer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','callProgressDetectingCustomer','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','filterKey','keys','variable','value','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','lodash','bluebird','moment','md5','../../../config/environment','../../../config/logger','actionPreview','../ami','./action','redis','defaults','localhost','socket.io-emitter','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','syncDialEnd','newexten','varset','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','outbound','name','strategy','answered','available','loggedIn','pTalking','sumDuration','sumHoldTime','total','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalLowerLimit','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','Trunk','active','callerid','Interval','stringify','voice:queue:%s','format','originated','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','prototype','syncCampaigns','hasOwnProperty','preview','booked','clearZombieChannels','type','recallMe','enqueue','isNil','info','Queue','originated:\x20','pTalking:\x20','queue','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','decrementTalkink','[clearZombieChannel]','[Dialer][checkChannel][pTalking][Preview]','loggerError','[Dialer][checkChannel][Preview]','[action]','size','clearZombieChannel','getContactRecallMe','agents','then','getDiff','scheduledat','dialRecallMeTimeout','run','[RecallMe]','starttime','logCustomer','dialRecallInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','createCustomerFinal','logger2','setMessage','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','countglobal','totalGlobal','NoSuchNumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logNoSuchGlobal]','ANSWER','YYYY-MM-DD\x20HH:mm:ss','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','custom:agentconnect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','buildObj','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumBillable','talktime','linkedid','countbusyretry','[callProgressDetectingCustomer][logBusy]','dialBusyMaxRetry','rescheduleContact','dialBusyRetryFrequency','unlockAgent','activeContact','NOANSWER','countnoanswerretry','NoAnswer','Global','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','scheduledAt','CONGESTION','Congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','CANCEL','AgentReject','[syncHangupRequest][logAgentReject]','disableContact','idContact','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','cause-txt','dialstatus','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','createHistory','[Blacklist][error]','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','getContactPreview','recallme','validateContact','isValid','Contact.phone','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','isEmpty','Agent','[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','isActive','\x20Not\x20Active','execCall','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','originatecalleridnum','extractCalleridNumber','addVariables','toLowerVariables','variablesAction','[originated][increment]','OriginateError','actionid','logLookAgent','clone'];(function(_0x211087,_0x354fdd){var _0x2a581f=function(_0x2928fe){while(--_0x2928fe){_0x211087['push'](_0x211087['shift']());}};_0x2a581f(++_0x354fdd);}(_0x51e7,0x14e));var _0x751e=function(_0x8b8060,_0x3dd837){_0x8b8060=_0x8b8060-0x0;var _0x50e6dc=_0x51e7[_0x8b8060];return _0x50e6dc;};'use strict';var util=require('util');var _=require(_0x751e('0x0'));var BPromise=require(_0x751e('0x1'));var uuid=require('uuid');var moment=require(_0x751e('0x2'));var md5=require(_0x751e('0x3'));var Redis=require('ioredis');var config=require(_0x751e('0x4'));var logger=require(_0x751e('0x5'))('preview');var loggerAction=require(_0x751e('0x5'))(_0x751e('0x6'));var ami=require(_0x751e('0x7'));var rpcDb=require('./rpcDb');var Action=require(_0x751e('0x8'));var ut=require('./util/util');config[_0x751e('0x9')]=_[_0x751e('0xa')](config[_0x751e('0x9')],{'host':_0x751e('0xb'),'port':0x18eb});var io=require(_0x751e('0xc'))(new Redis(config[_0x751e('0x9')]));var Sequence=function(){};Sequence['prototype']['enqueue']=function(_0x52beeb){this[_0x751e('0xd')]=this['tail']?this[_0x751e('0xd')][_0x751e('0xe')](_0x52beeb):_0x52beeb();};function Preview(_0x133962){this[_0x751e('0xf')]=new Sequence();this[_0x751e('0x10')]=_0x133962[_0x751e('0x11')];this[_0x751e('0x12')]=_0x133962[_0x751e('0x12')];this[_0x751e('0x13')]={};this['agents']=_0x133962['agents'];this[_0x751e('0x14')]=0x0;ami['on'](_0x751e('0x15'),this[_0x751e('0x16')][_0x751e('0x17')](this));ami['on'](_0x751e('0x18'),this[_0x751e('0x19')][_0x751e('0x17')](this));ami['on'](_0x751e('0x1a'),this[_0x751e('0x1b')][_0x751e('0x17')](this));ami['on']('dialend',this[_0x751e('0x1c')][_0x751e('0x17')](this));ami['on'](_0x751e('0x1d'),this['syncNewExten'][_0x751e('0x17')](this));ami['on'](_0x751e('0x1e'),this[_0x751e('0x1f')][_0x751e('0x17')](this));ami['on']('attendedtransfer',this[_0x751e('0x20')][_0x751e('0x17')](this));ami['on'](_0x751e('0x21'),this[_0x751e('0x22')][_0x751e('0x17')](this));this['loopCampaigns'](this[_0x751e('0x10')]);}function emit(_0x3baefa,_0x46871f,_0x37084f){io['to'](_0x3baefa)[_0x751e('0x23')](_0x46871f,_0x37084f);}function emitCampaignPreview(_0x412f0a){if(_0x412f0a['type']===_0x751e('0x24')){var _0xe2e8cd={'id':_0x412f0a['id'],'name':_0x412f0a[_0x751e('0x25')],'strategy':_0x412f0a[_0x751e('0x26')],'answered':_0x412f0a[_0x751e('0x27')],'available':_0x412f0a[_0x751e('0x28')],'loggedIn':_0x412f0a[_0x751e('0x29')],'pTalking':_0x412f0a[_0x751e('0x2a')],'sumBillable':_0x412f0a['sumBillable'],'sumDuration':_0x412f0a[_0x751e('0x2b')],'sumHoldTime':_0x412f0a[_0x751e('0x2c')]||0x0,'talking':_0x412f0a['talking'],'total':_0x412f0a[_0x751e('0x2d')],'type':_0x412f0a['type'],'unmanaged':_0x412f0a['unmanaged'],'abandoned':_0x412f0a['abandoned'],'waiting':_0x412f0a[_0x751e('0x2e')],'loggedInDb':_0x412f0a[_0x751e('0x2f')],'dialActive':_0x412f0a[_0x751e('0x30')],'dialMethod':_0x412f0a[_0x751e('0x31')],'dialOriginateCallerIdName':_0x412f0a[_0x751e('0x32')],'dialOriginateCallerIdNumber':_0x412f0a['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x412f0a[_0x751e('0x33')],'dialPrefix':_0x412f0a[_0x751e('0x34')],'outboundAnswerAgiCallsDay':_0x412f0a[_0x751e('0x35')],'outboundAnswerCallsDay':_0x412f0a[_0x751e('0x36')],'outboundBlacklistCallsDay':_0x412f0a[_0x751e('0x37')],'outboundBusyCallsDay':_0x412f0a[_0x751e('0x38')],'outboundCongestionCallsDay':_0x412f0a[_0x751e('0x39')],'outboundDropCallsDayACS':_0x412f0a[_0x751e('0x3a')],'outboundDropCallsDayCallersExit':_0x412f0a[_0x751e('0x3b')],'outboundDropCallsDayTimeout':_0x412f0a['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x412f0a[_0x751e('0x3c')],'outboundNoSuchCallsDay':_0x412f0a[_0x751e('0x3d')],'outboundOriginateFailureCallsDay':_0x412f0a[_0x751e('0x3e')],'outboundReCallsDay':_0x412f0a[_0x751e('0x3f')],'outboundRejectCallsDay':_0x412f0a[_0x751e('0x40')],'outboundUnknownCallsDay':_0x412f0a[_0x751e('0x41')],'predictiveIntervalAnsweredCalls':_0x412f0a[_0x751e('0x42')],'predictiveIntervalAvgHoldtime':_0x412f0a[_0x751e('0x43')],'predictiveIntervalAvgTalktime':_0x412f0a['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x412f0a[_0x751e('0x44')],'predictiveIntervalDroppedCallsTimeout':_0x412f0a[_0x751e('0x45')],'predictiveIntervalErlangCalls':_0x412f0a[_0x751e('0x46')],'predictiveIntervalErlangCallsDroppedCalls':_0x412f0a[_0x751e('0x47')],'predictiveIntervalHitRate':_0x412f0a[_0x751e('0x48')],'predictiveIntervalLowerLimit':_0x412f0a[_0x751e('0x49')],'predictiveIntervalMultiplicativeFactor':_0x412f0a[_0x751e('0x4a')],'predictiveIntervalPauses':_0x412f0a[_0x751e('0x4b')],'predictiveIntervalTotalCalls':_0x412f0a[_0x751e('0x4c')],'message':_0x412f0a[_0x751e('0x4d')],'originated':_0x412f0a['originated']};if(_0x412f0a[_0x751e('0x4e')]){_0xe2e8cd['Trunk']={'id':_0x412f0a[_0x751e('0x4e')]['id'],'name':_0x412f0a[_0x751e('0x4e')][_0x751e('0x25')],'active':_0x412f0a[_0x751e('0x4e')][_0x751e('0x4f')],'callerid':_0x412f0a[_0x751e('0x4e')][_0x751e('0x50')]};}if(_0x412f0a['Interval']){_0xe2e8cd[_0x751e('0x51')]={'id':_0x412f0a[_0x751e('0x51')]['id'],'name':_0x412f0a[_0x751e('0x51')]['name']};}var _0x32d896=md5(JSON[_0x751e('0x52')](_0xe2e8cd));if(_0x412f0a[_0x751e('0x3')]!==_0x32d896){_0x412f0a[_0x751e('0x3')]=_0x32d896;emit(util['format'](_0x751e('0x53'),_0xe2e8cd[_0x751e('0x25')]),'voice_queue:save',_0xe2e8cd);}}}function emitVoiceQueueChannelRemove(_0x190222){emit(util[_0x751e('0x54')](_0x751e('0x53'),_0x190222[_0x751e('0x25')]),'voice_queue_channel:remove',_0x190222);}function notSendMessagesQueue(_0x3c900b){if(_0x3c900b['sendMessageOneNotActive']){if(_0x3c900b[_0x751e('0x55')]===0x0&&_0x3c900b[_0x751e('0x2a')]===0x0){_0x3c900b[_0x751e('0x56')]=![];_0x3c900b[_0x751e('0x28')]=0x0;_0x3c900b[_0x751e('0x57')]=0x0;_0x3c900b[_0x751e('0x4d')]=_0x751e('0x58');ut[_0x751e('0x59')](_0x751e('0x5a'),_0x3c900b[_0x751e('0x25')]+_0x751e('0x5b'));}else{_0x3c900b[_0x751e('0x4d')]=_0x751e('0x5c');ut[_0x751e('0x59')](_0x751e('0x5a'),_0x3c900b[_0x751e('0x25')]+'\x20is\x20disactive');}emitCampaignPreview(_0x3c900b);}}Preview[_0x751e('0x5d')]['loopCampaigns']=function(){var _0x555ed0=this;setInterval(function(){_0x555ed0['syncCampaigns']();},0x7cf);};Preview[_0x751e('0x5d')][_0x751e('0x5e')]=function(){var _0x421a45=this[_0x751e('0x10')];this[_0x751e('0x14')]+=0x1;for(var _0x2ce601 in _0x421a45){if(_0x421a45[_0x751e('0x5f')](_0x2ce601)&&(_0x421a45[_0x2ce601][_0x751e('0x31')]===_0x751e('0x60')||_0x421a45[_0x2ce601][_0x751e('0x31')]===_0x751e('0x61'))&&_0x421a45[_0x2ce601]['type']===_0x751e('0x24')){if(this[_0x751e('0x14')]>0x7){this[_0x751e('0x14')]=0x0;this[_0x751e('0x62')]();}}if(_0x421a45[_0x751e('0x5f')](_0x2ce601)&&_0x421a45[_0x2ce601][_0x751e('0x31')]==='preview'&&_0x421a45[_0x2ce601][_0x751e('0x63')]===_0x751e('0x24')){if(_0x421a45[_0x2ce601][_0x751e('0x30')]){this['setMessage'](_0x421a45[_0x2ce601]);this[_0x751e('0x64')](_0x421a45[_0x2ce601]);}else{notSendMessagesQueue(_0x421a45[_0x2ce601]);}}}};Preview[_0x751e('0x5d')]['clearZombieChannel']=function(_0x1516d2){var _0x2b299b=this;this[_0x751e('0xf')][_0x751e('0x65')](function(){if(!_[_0x751e('0x66')](_0x2b299b[_0x751e('0x13')][_0x1516d2])){loggerAction[_0x751e('0x67')]('[clearZombieChannels][talking]',_0x1516d2,_0x751e('0x68'),_0x2b299b[_0x751e('0x13')][_0x1516d2]['queue'],_0x751e('0x69'),JSON[_0x751e('0x52')](_0x2b299b[_0x751e('0x10')][_0x2b299b[_0x751e('0x13')][_0x1516d2]['queue']][_0x751e('0x55')]),_0x751e('0x6a'),JSON[_0x751e('0x52')](_0x2b299b[_0x751e('0x10')][_0x2b299b[_0x751e('0x13')][_0x1516d2][_0x751e('0x6b')]][_0x751e('0x2a')]),JSON['stringify'](_0x2b299b[_0x751e('0x13')][_0x1516d2][_0x751e('0x6c')]),JSON[_0x751e('0x52')](_[_0x751e('0x6d')](_0x2b299b[_0x751e('0x13')][_0x1516d2],[_0x751e('0x6e'),_0x751e('0x6f'),_0x751e('0x70'),_0x751e('0x71')])));return ami[_0x751e('0x72')]({'action':_0x751e('0x73'),'channel':_0x2b299b[_0x751e('0x13')][_0x1516d2][_0x751e('0x74')]})[_0x751e('0x75')](function(_0x29b166){if(_0x29b166['message']===_0x751e('0x76')){setTimeout(function(){if(_0x2b299b['actions'][_0x1516d2]){ut[_0x751e('0x77')](_0x2b299b[_0x751e('0x10')][_0x2b299b[_0x751e('0x13')][_0x1516d2][_0x751e('0x6b')]],'[clearZombieChannel]');if(_0x2b299b['actions'][_0x1516d2]['dialAnswer']===!![]){ut[_0x751e('0x78')](_0x2b299b[_0x751e('0x10')][_0x2b299b[_0x751e('0x13')][_0x1516d2]['queue']],_0x751e('0x79'));ut['loggerError'](_0x751e('0x7a')+_0x1516d2,_0x2b299b[_0x751e('0x13')][_0x1516d2][_0x751e('0x6b')]);}ut[_0x751e('0x7b')](_0x751e('0x7c')+_0x1516d2,_0x2b299b[_0x751e('0x13')][_0x1516d2]['queue']);delete _0x2b299b[_0x751e('0x13')][_0x1516d2];}},0x2328);}});}});};Preview[_0x751e('0x5d')][_0x751e('0x62')]=function(){var _0x5593de=this;loggerAction['info'](_0x751e('0x7d'),_[_0x751e('0x7e')](this[_0x751e('0x13')]));for(var _0x4f7670 in this['actions']){if(_0x5593de[_0x751e('0x13')][_0x751e('0x5f')](_0x4f7670)){_0x5593de[_0x751e('0x7f')](_0x4f7670);}}};Preview[_0x751e('0x5d')][_0x751e('0x64')]=function(_0x2b46d4){var _0x4010b7=this;rpcDb[_0x751e('0x80')](_0x2b46d4['id'],ut['agentReadyId'](this[_0x751e('0x81')]))[_0x751e('0x82')](function(_0x142cfc){if(!_[_0x751e('0x66')](_0x142cfc)){for(var _0x4fccf3=0x0;_0x4fccf3<_0x142cfc['length'];_0x4fccf3+=0x1){if(ut[_0x751e('0x83')](_0x142cfc[_0x4fccf3][_0x751e('0x84')])<_0x2b46d4[_0x751e('0x85')]*0x3c){_0x4010b7[_0x751e('0x86')](_0x142cfc[_0x4fccf3]['id'])['then'](ut['logger2'](_0x751e('0x87')))[_0x751e('0x75')](ut['logger2'](_0x751e('0x87')));}else{var _0x470dad=new Action(_0x142cfc[_0x4fccf3],_0x2b46d4);_0x470dad[_0x751e('0x88')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2b46d4['outboundReCallsDay']+=0x1;ut[_0x751e('0x89')](_0x470dad,0x17,'RecallInQueue');if(_0x2b46d4[_0x751e('0x8a')]){rpcDb['rescheduleContactInQueue'](ut[_0x751e('0x8b')](_0x142cfc[_0x4fccf3]));rpcDb[_0x751e('0x8c')](_0x470dad,_0x751e('0x8d'));}else{ut[_0x751e('0x89')](_0x470dad,0x16,'RecallFailedTimeout');rpcDb[_0x751e('0x8c')](_0x470dad,_0x751e('0x8e'));rpcDb[_0x751e('0x8f')](_0x470dad,'[HistoryRecallClose]');}}}}})['catch'](ut[_0x751e('0x90')]('[getContactRecallMe]'));};Preview['prototype'][_0x751e('0x91')]=function(_0x31abca){_0x31abca['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x31abca[_0x751e('0x29')])){_0x31abca[_0x751e('0x4d')]='AGENTS_NOT_LOGGED';}else if(!ut['isActive'](_0x31abca[_0x751e('0x30')])){_0x31abca[_0x751e('0x4d')]='NOT_ACTIVE';}else if(!this[_0x751e('0x92')](_0x31abca[_0x751e('0x4e')])){if(!this[_0x751e('0x92')](_0x31abca['TrunkBackup'])){_0x31abca[_0x751e('0x4d')]=_0x751e('0x93');}else{_0x31abca[_0x751e('0x4d')]=_0x751e('0x94');}}else{_0x31abca[_0x751e('0x4d')]='ACTIVE';}emitCampaignPreview(_0x31abca);};Preview['prototype']['callProgressDetectingCustomer']=function(_0x45348b,_0x4ed73e,_0x37119e){var _0x44a79c=this;var _0xe4cec0=this[_0x751e('0x13')][_0x4ed73e];var _0x3904f9=this[_0x751e('0x10')][_0xe4cec0[_0x751e('0x6b')]];var _0x3acd48;if(_0x3904f9){switch(_0x37119e){case'1':_0x3904f9[_0x751e('0x3d')]+=0x1;_0xe4cec0[_0x751e('0x95')]=ut[_0x751e('0x96')](_0xe4cec0);ut[_0x751e('0x89')](_0xe4cec0,0x0,_0x751e('0x97'));rpcDb[_0x751e('0x8c')](_0xe4cec0,_0x751e('0x98'));if(ut[_0x751e('0x96')](_0xe4cec0)>=_0x3904f9[_0x751e('0x99')]){_0x3acd48=ut[_0x751e('0x9a')](_0xe4cec0,0xf,'Global');rpcDb[_0x751e('0x8f')](_0x3acd48,_0x751e('0x9b'));}else{rpcDb[_0x751e('0x8f')](_0xe4cec0,'[callProgressDetectingCustomer][logNoSuchGlobal]');}delete this[_0x751e('0x13')][_0x45348b['linkedid']];break;case _0x751e('0x9c'):var _0x243292=moment()[_0x751e('0x54')](_0x751e('0x9d'));_0xe4cec0['responsetime']=_0x243292;_0xe4cec0[_0x751e('0x9e')]=_0x243292;_0xe4cec0['dialAnswer']=!![];_0x3904f9[_0x751e('0x2a')]+=0x1;logger[_0x751e('0x67')](_0x751e('0x9f'),_0xe4cec0[_0x751e('0xa0')],_0x751e('0xa1'),_0x3904f9['name'],_0x751e('0x6a'),_0x3904f9['pTalking']);ami['emit'](_0x751e('0xa2'),ut['buildObj'](_0xe4cec0,'connect'));if(_0x3904f9['acw']){ami[_0x751e('0x23')](_0x751e('0xa3'),ut[_0x751e('0xa4')](_0xe4cec0));}break;case'16':ami['emit'](_0x751e('0xa5'),ut[_0x751e('0xa6')](_0xe4cec0,_0x751e('0xa7')));emitVoiceQueueChannelRemove(ut[_0x751e('0xa6')](_0xe4cec0,_0x751e('0xa7')));_0x3904f9[_0x751e('0x36')]+=0x1;_0x3904f9[_0x751e('0x2d')]+=0x1;_0x3904f9[_0x751e('0x27')]+=0x1;ut[_0x751e('0x78')](_0x3904f9,_0x751e('0xa8'));_0xe4cec0[_0x751e('0x95')]=ut['totalGlobal'](_0xe4cec0);ut[_0x751e('0x89')](_0xe4cec0,0x4,_0x751e('0xa9'));rpcDb[_0x751e('0x8c')](_0xe4cec0,_0x751e('0xaa'));rpcDb[_0x751e('0x8f')](_0xe4cec0,_0x751e('0xab'));rpcDb[_0x751e('0xac')](_0xe4cec0);_0x3904f9[_0x751e('0x2b')]+=_0xe4cec0['talktime'];_0x3904f9[_0x751e('0xad')]+=_0xe4cec0[_0x751e('0xae')];logger[_0x751e('0x67')]('[syncHangup][talking][decrement]',_0xe4cec0[_0x751e('0xa0')],_0x751e('0xa1'),_0x3904f9[_0x751e('0x25')],_0x751e('0x6a'),_0x3904f9[_0x751e('0x2a')]);delete this[_0x751e('0x13')][_0x45348b[_0x751e('0xaf')]];break;case'BUSY':_0x3904f9['outboundBusyCallsDay']+=0x1;_0xe4cec0[_0x751e('0xb0')]+=0x1;_0xe4cec0[_0x751e('0x95')]=ut[_0x751e('0x96')](_0xe4cec0);ut[_0x751e('0x89')](_0xe4cec0,0x5,'Busy');rpcDb['createCustomerHistory'](_0xe4cec0,_0x751e('0xb1'));if(ut[_0x751e('0x96')](_0xe4cec0)>=_0x3904f9[_0x751e('0x99')]){_0x3acd48=ut[_0x751e('0x9a')](_0xe4cec0,0xf,'Global');rpcDb[_0x751e('0x8f')](_0x3acd48,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0xe4cec0[_0x751e('0xb0')]>=_0x3904f9[_0x751e('0xb2')]){rpcDb['createCustomerFinal'](_0xe4cec0,_0x751e('0xb1'));}else{rpcDb[_0x751e('0xb3')](ut['scheduledAt'](_0xe4cec0,'countbusyretry',_0x3904f9[_0x751e('0xb4')]),_0xe4cec0[_0x751e('0xb5')],_0xe4cec0[_0x751e('0xb6')]);}}break;case _0x751e('0xb7'):_0x3904f9[_0x751e('0x3c')]+=0x1;_0xe4cec0[_0x751e('0xb8')]+=0x1;_0xe4cec0['countglobal']=ut[_0x751e('0x96')](_0xe4cec0);ut[_0x751e('0x89')](_0xe4cec0,0x3,_0x751e('0xb9'));rpcDb[_0x751e('0x8c')](_0xe4cec0,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0x751e('0x96')](_0xe4cec0)>=_0x3904f9[_0x751e('0x99')]){_0x3acd48=ut[_0x751e('0x9a')](_0xe4cec0,0xf,_0x751e('0xba'));rpcDb[_0x751e('0x8f')](_0x3acd48,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0xe4cec0[_0x751e('0xb8')]>=_0x3904f9[_0x751e('0xbb')]){rpcDb['createCustomerFinal'](_0xe4cec0,_0x751e('0xbc'));}else{rpcDb[_0x751e('0xb3')](ut[_0x751e('0xbd')](_0xe4cec0,_0x751e('0xb8'),_0x3904f9['dialNoAnswerRetryFrequency']),_0xe4cec0[_0x751e('0xb5')],_0xe4cec0[_0x751e('0xb6')]);}}break;case _0x751e('0xbe'):_0x3904f9[_0x751e('0x39')]+=0x1;_0xe4cec0['countcongestionretry']+=0x1;_0xe4cec0[_0x751e('0x95')]=ut[_0x751e('0x96')](_0xe4cec0);ut[_0x751e('0x89')](_0xe4cec0,0x8,_0x751e('0xbf'));rpcDb['createCustomerHistory'](_0xe4cec0,_0x751e('0xc0'));if(ut[_0x751e('0x96')](_0xe4cec0)>=_0x3904f9['dialGlobalMaxRetry']){_0x3acd48=ut[_0x751e('0x9a')](_0xe4cec0,0xf,_0x751e('0xba'));rpcDb[_0x751e('0x8f')](_0x3acd48,_0x751e('0xc1'));}else{if(_0xe4cec0[_0x751e('0xc2')]>=_0x3904f9[_0x751e('0xc3')]){rpcDb[_0x751e('0x8f')](_0xe4cec0,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0x751e('0xb3')](ut[_0x751e('0xbd')](_0xe4cec0,_0x751e('0xc2'),_0x3904f9[_0x751e('0xb4')]),_0xe4cec0[_0x751e('0xb5')],_0xe4cec0['activeContact']);}}break;case _0x751e('0xc4'):_0x3904f9[_0x751e('0x40')]+=0x1;_0xe4cec0[_0x751e('0x95')]=ut[_0x751e('0x96')](_0xe4cec0);ut[_0x751e('0x89')](_0xe4cec0,0x14,_0x751e('0xc5'));rpcDb['createCustomerHistory'](_0xe4cec0,_0x751e('0xc6'));if(_0xe4cec0[_0x751e('0xb5')]){rpcDb['unlockContact'](_0xe4cec0['idContact']);}if(_0xe4cec0[_0x751e('0xb6')]){rpcDb[_0x751e('0xc7')](_0xe4cec0[_0x751e('0xc8')]);}break;default:if(_0xe4cec0[_0x751e('0x6c')]){ut[_0x751e('0x78')](_0x3904f9,_0x751e('0xc9'));ut[_0x751e('0x7b')](_0x751e('0xca')+_0x3904f9[_0x751e('0x25')],_0x45348b);}_0x3904f9[_0x751e('0x41')]+=0x1;_0xe4cec0[_0x751e('0x95')]=ut[_0x751e('0x96')](_0xe4cec0);ut[_0x751e('0x89')](_0xe4cec0,0xc,_0x45348b[_0x751e('0xcb')]||_0x45348b[_0x751e('0xcc')]);rpcDb['createCustomerHistory'](_0xe4cec0,_0x751e('0xcd'));if(ut[_0x751e('0x96')](_0xe4cec0)>=_0x3904f9['dialGlobalMaxRetry']){_0x3acd48=ut[_0x751e('0x9a')](_0xe4cec0,0xf,_0x751e('0xba'));rpcDb[_0x751e('0x8f')](_0x3acd48,_0x751e('0xce'));}else{rpcDb[_0x751e('0x8f')](_0xe4cec0,_0x751e('0xce'));}delete this[_0x751e('0x13')][_0x45348b[_0x751e('0xaf')]];}if(!(_0xe4cec0[_0x751e('0x6c')]&&_0x37119e==='16')){ut[_0x751e('0x77')](_0x3904f9,_0x751e('0xcf'));logger[_0x751e('0x67')]('[originated][decrement][callProgressDetectingCustomer]',_0xe4cec0['uniqueid'],_0x751e('0xa1'),_0x3904f9[_0x751e('0x25')],'originated:\x20',_0x3904f9['originated']);}if(_0x37119e!=='ANSWER'){delete this['actions'][_0x45348b[_0x751e('0xaf')]];delete this['actions'][_0x45348b[_0x751e('0xd0')]];}}};Preview[_0x751e('0x5d')][_0x751e('0xd1')]=function(_0x2c98dd,_0x1e02b9,_0x3bd2d8){if(_[_0x751e('0xd2')](_0x1e02b9)&&_0x751e('0xd3')!==typeof _0x1e02b9){return;}if(_[_0x751e('0xd2')](_0x3bd2d8)&&_0x751e('0xd3')!==typeof _0x3bd2d8){return;}switch(_0x3bd2d8['reason']){case'0':ut[_0x751e('0xd4')](_0x2c98dd,0x0,_0x751e('0x97'));rpcDb[_0x751e('0xd5')](_0x2c98dd,_0x751e('0xd6'));break;case'3':ut[_0x751e('0xd4')](_0x2c98dd,0x3,_0x751e('0xb9'));rpcDb[_0x751e('0xd5')](_0x2c98dd,_0x751e('0xd7'));break;case'5':ut[_0x751e('0xd4')](_0x2c98dd,0x5,'Busy');rpcDb[_0x751e('0xd5')](_0x2c98dd,_0x751e('0xd8'));break;case'8':ut['logAgent'](_0x2c98dd,0x8,'Congestion');rpcDb['createAgentHistory'](_0x2c98dd,_0x751e('0xd9'));break;case'22':ut[_0x751e('0xd4')](_0x2c98dd,0x16,_0x751e('0xda'));rpcDb['createAgentHistory'](_0x2c98dd,_0x751e('0xdb'));break;default:ut['logAgent'](_0x2c98dd,0xc,_0x3bd2d8[_0x751e('0xdc')]);rpcDb['createAgentHistory'](_0x2c98dd,_0x751e('0xd9'));}ut[_0x751e('0x77')](_0x1e02b9,_0x751e('0xdd'));logger[_0x751e('0x67')](_0x751e('0xde'),_0x2c98dd[_0x751e('0xa0')],_0x751e('0xa1'),_0x1e02b9[_0x751e('0x25')],'originated:\x20',_0x1e02b9[_0x751e('0x55')]);delete this['actions'][_0x2c98dd[_0x751e('0xa0')]];};Preview[_0x751e('0x5d')][_0x751e('0xdf')]=function(_0x39e6a2,_0x1bc443,_0x5efc78,_0x14fa53,_0x45f0d5){var _0x1af64d=this;return new BPromise(function(_0x357d4f,_0x1f6be1){if(_['isNil'](_0x1bc443)||_[_0x751e('0x66')](_0x1bc443[_0x751e('0xe0')])||_[_0x751e('0x66')](_0x1bc443[_0x751e('0xe0')][_0x751e('0xe1')])||_[_0x751e('0x66')](_0x1bc443['VoiceQueueId'])){_0x1f6be1(ut[_0x751e('0x4d')](_0x751e('0xe2'),_0x14fa53,_0x45f0d5));return;}var _0x439436=uuid['v4']();var _0x32d4c4=_0x1af64d[_0x751e('0x10')][_0x1bc443[_0x751e('0x68')][_0x751e('0x25')]];var _0x3bdbb7=_0x5efc78?_0x1af64d[_0x751e('0x81')][_0x5efc78]['id']:undefined;_0x1af64d['actions'][_0x439436]=new Action(_0x1bc443,_0x32d4c4,_0x439436,_0x5efc78,_0x3bdbb7);var _0x54dc11=_0x1af64d[_0x751e('0x13')][_0x439436];_0x54dc11['unlockAgent']=_0x14fa53;_0x54dc11[_0x751e('0xb6')]=_0x45f0d5;_0x54dc11[_0x751e('0xe3')]=_0x5efc78;if(_['isEmpty'](_0x39e6a2)){_0x1af64d['execCall'](_0x54dc11,_0x32d4c4,_0x1bc443,_0x5efc78)[_0x751e('0x82')](function(_0x558cfa){logger[_0x751e('0x67')](_0x751e('0xe4'),_0x751e('0xe5')+_0x54dc11[_0x751e('0x6b')]+_0x751e('0xe6')+_0x54dc11[_0x751e('0xc8')],JSON[_0x751e('0x52')](_0x558cfa));ami[_0x751e('0x23')](_0x751e('0xe7'),ut[_0x751e('0xa6')](_0x54dc11,_0x751e('0xe8')));_0x357d4f(ut[_0x751e('0x4d')](_0x751e('0xe9')));})[_0x751e('0x75')](function(_0x476b03){ut['logger'](_0x751e('0xea'),_0x476b03);_0x1f6be1(ut[_0x751e('0x4d')](_0x751e('0xeb'),_0x14fa53,_0x45f0d5));});}else{_0x32d4c4[_0x751e('0x37')]+=0x1;ut['logBlacklist'](_0x54dc11);rpcDb[_0x751e('0xec')](_0x54dc11,_0x751e('0xed'));delete _0x1af64d[_0x751e('0x13')][_0x439436];_0x1f6be1(ut[_0x751e('0x4d')]('Contact\x20in\x20black\x20List',_0x14fa53,_0x45f0d5));}});};Preview[_0x751e('0x5d')][_0x751e('0x92')]=function(_0x108699){return!_[_0x751e('0x66')](_0x108699)&&!_[_0x751e('0x66')](_0x108699[_0x751e('0x25')])&&!_[_0x751e('0x66')](_0x108699[_0x751e('0x4f')])&&_0x108699['active']&&!_['isNil'](this[_0x751e('0x12')][util[_0x751e('0x54')](_0x751e('0xee'),_0x108699[_0x751e('0x25')])])&&!_[_0x751e('0x66')](this[_0x751e('0x12')][util[_0x751e('0x54')]('SIP/%s',_0x108699[_0x751e('0x25')])][_0x751e('0x73')])&&(this[_0x751e('0x12')][util[_0x751e('0x54')](_0x751e('0xee'),_0x108699[_0x751e('0x25')])][_0x751e('0x73')]===_0x751e('0xef')||this[_0x751e('0x12')][util[_0x751e('0x54')]('SIP/%s',_0x108699[_0x751e('0x25')])][_0x751e('0x73')]===_0x751e('0xf0'));};Preview['prototype']['run']=function(_0xf197ef,_0x33b224){var _0x3da30d=this;return new BPromise(function(_0x309818,_0x401355){_0x3da30d[_0x751e('0xf1')](_0xf197ef,_0x33b224)[_0x751e('0x82')](function(_0x3bb3b3){_0x309818(_[_0x751e('0x6d')](_0x3bb3b3,[_0x751e('0x4d')]));})[_0x751e('0x75')](function(_0x42160b){if(_0x42160b[_0x751e('0xf2')]){rpcDb[_0x751e('0xf3')](_0xf197ef);}if(_0x42160b[_0x751e('0x4f')]){rpcDb['disableContact'](_0xf197ef);}_0x401355(_[_0x751e('0x6d')](_0x42160b,[_0x751e('0x4d')]));});});};Preview['prototype'][_0x751e('0xf1')]=function(_0x2d0489,_0xecc3f6){var _0x10aec1=this;return new BPromise(function(_0xec0b15,_0x4b3bfa){var _0xe7ef3c,_0x12dc3b;rpcDb[_0x751e('0xf4')](_0x2d0489)[_0x751e('0x82')](function(_0xe68b50){if(!_[_0x751e('0x66')](_0xe68b50[0x0])){_0x12dc3b=_0xe68b50[0x0][_0x751e('0xf5')]?![]:!![];_0xe7ef3c=_0xe68b50[0x0]['recallme']?!![]:![];_0xe7ef3c=_0xecc3f6?!![]:_0xe7ef3c;}var _0x3ce185=_0x10aec1[_0x751e('0xf6')](_0xe68b50);if(_0x3ce185[_0x751e('0xf7')]){rpcDb['checkIsBlackList'](_['pick'](_0xe68b50[0x0],['VoiceQueueId',_0x751e('0xf8')]))['then'](function(_0x1d131a){_0x10aec1[_0x751e('0xdf')](_0x1d131a,_0xe68b50[0x0],_0xecc3f6,_0x12dc3b,_0xe7ef3c)[_0x751e('0x82')](function(_0x551e2d){_0xec0b15(_0x551e2d);})[_0x751e('0x75')](function(_0x4bb59a){_0x4b3bfa(_0x4bb59a);});})[_0x751e('0x75')](function(_0x440af2){ut[_0x751e('0x59')](_0x751e('0xf9'),_0x440af2);_0x4b3bfa(ut[_0x751e('0x4d')]('Call\x20unsuccessful',_0x12dc3b,_0xe7ef3c));});}else{_0x4b3bfa(ut[_0x751e('0x4d')](_0x3ce185['message'],_0x12dc3b,_0xe7ef3c));}})[_0x751e('0x75')](function(_0x5e0133){ut[_0x751e('0x59')](_0x751e('0xfa'),_0x5e0133);_0x4b3bfa(ut[_0x751e('0x4d')](_0x751e('0xfb'),![],!![]));});});};Preview['prototype'][_0x751e('0xf6')]=function(_0x3fd845){if(_[_0x751e('0x66')](_0x3fd845)||_[_0x751e('0xfc')](_0x3fd845)||!_['isNil'](_0x3fd845[0x0]['Agent'])&&_[_0x751e('0x66')](_0x3fd845[0x0][_0x751e('0xfd')][_0x751e('0x25')])){ut['logger'](_0x751e('0xfe'),_0x3fd845);return{'isValid':![],'message':_0x751e('0xff')};}var _0x48b6ad=this[_0x751e('0x10')][_0x3fd845[0x0]['Queue'][_0x751e('0x25')]];_0x48b6ad[_0x751e('0x4d')]=_0x751e('0x94');if(_[_0x751e('0x66')](_0x48b6ad)){ut[_0x751e('0x59')](_0x751e('0x100'),_0x48b6ad);return{'isValid':![],'message':_0x751e('0x101')};}if(!this[_0x751e('0x92')](_0x48b6ad[_0x751e('0x4e')])){ut[_0x751e('0x59')](_0x751e('0x102'),_0x751e('0x103')+_0x48b6ad[_0x751e('0x25')]+_0x751e('0x104'));if(!this['isTrunkReachable'](_0x48b6ad[_0x751e('0x105')])){ut[_0x751e('0x59')](_0x751e('0x102'),_0x48b6ad[_0x751e('0x25')]+_0x751e('0x106'));return{'isValid':![],'message':_0x751e('0x107')};}}if(!ut[_0x751e('0x108')](_0x48b6ad['dialActive'])){ut[_0x751e('0x59')]('[Preview][validateContact][Campaign\x20Active]',_0x48b6ad[_0x751e('0x25')]+_0x751e('0x109'));return{'isValid':![],'message':_0x751e('0x103')+_0x48b6ad['name']+'\x20Not\x20Active'};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview['prototype'][_0x751e('0x10a')]=function(_0x71380b,_0x4719b8,_0x52f171,_0x3b98fe){var _0x12cbb7=this;return new BPromise(function(_0x25bdf8,_0x4df964){var _0x148130=_0x71380b['uniqueid'];var _0x30ea30=_0x12cbb7[_0x751e('0x92')](_0x4719b8[_0x751e('0x4e')])?util['format'](_0x751e('0x10b'),_0x4719b8[_0x751e('0x4e')][_0x751e('0x25')],_['isNil'](_0x4719b8['dialPrefix'])?'':_0x4719b8[_0x751e('0x34')][_0x751e('0x10c')]()||'',_0x4719b8[_0x751e('0x10d')]>0x0?_0x52f171['Contact'][_0x751e('0xe1')][_0x751e('0x10e')](_0x4719b8['dialCutDigit']):_0x52f171['Contact'][_0x751e('0xe1')]):util['format'](_0x751e('0x10b'),_[_0x751e('0x66')](_0x4719b8[_0x751e('0x105')])?_0x4719b8['Trunk']['name']:_0x4719b8['TrunkBackup'][_0x751e('0x25')],_[_0x751e('0x66')](_0x4719b8[_0x751e('0x34')])?'':_0x4719b8[_0x751e('0x34')]['trim']()||'',_0x4719b8[_0x751e('0x10d')]>0x0?_0x52f171[_0x751e('0xe0')][_0x751e('0xe1')]['substring'](_0x4719b8['dialCutDigit']):_0x52f171[_0x751e('0xe0')][_0x751e('0xe1')]);var _0x5561bf=_0x12cbb7['isTrunkReachable'](_0x4719b8['Trunk'])?ut[_0x751e('0x10f')](_0x4719b8['Trunk'][_0x751e('0x50')],_0x4719b8[_0x751e('0x32')],_0x4719b8[_0x751e('0x110')]>0x0?ut[_0x751e('0x111')](_0x4719b8[_0x751e('0x112')],_0x4719b8[_0x751e('0x110')]):_0x4719b8['dialOriginateCallerIdNumber']):ut[_0x751e('0x10f')](_['isNil'](_0x4719b8[_0x751e('0x105')])?_0x4719b8['Trunk']['callerid']:_0x4719b8[_0x751e('0x105')][_0x751e('0x50')],_0x4719b8['dialOriginateCallerIdName'],_0x4719b8[_0x751e('0x110')]>0x0?ut[_0x751e('0x111')](_0x4719b8[_0x751e('0x112')],_0x4719b8[_0x751e('0x110')]):_0x4719b8['dialOriginateCallerIdNumber']);if(_0x5561bf){_0x71380b[_0x751e('0x113')]=ut['extractCalleridName'](_0x5561bf);_0x71380b[_0x751e('0x114')]=ut[_0x751e('0x115')](_0x5561bf);}var _0x1b334d=ut[_0x751e('0x116')](_0x4719b8,_0x52f171,_0x30ea30,_0x5561bf,_0x148130,_0x71380b);_['merge'](_0x71380b,ut[_0x751e('0x117')](_0x1b334d));_0x71380b[_0x751e('0x88')]=moment()[_0x751e('0x54')](_0x751e('0x9d'));ami[_0x751e('0x72')](ut[_0x751e('0x118')](_0x71380b,_0x4719b8,_0x1b334d,_0x71380b['activeContact'],_0x3b98fe))[_0x751e('0x82')](function(_0x23c6dd){_0x4719b8[_0x751e('0x55')]+=0x1;logger[_0x751e('0x67')](_0x751e('0x119'),_0x148130,_0x751e('0xa1'),_0x4719b8[_0x751e('0x25')],'originated:\x20',_0x4719b8[_0x751e('0x55')]);_0x25bdf8(_0x23c6dd);})[_0x751e('0x75')](function(_0x472f25){ut[_0x751e('0xd4')](_0x71380b,0xe,_0x751e('0x11a'));rpcDb[_0x751e('0xd5')](_0x71380b,'[originateFailure][logOriginateFailure]');_0x4df964(_0x472f25);});});};Preview['prototype']['syncNewExten']=function(_0x3fea1f){if(this[_0x751e('0x13')][_0x3fea1f[_0x751e('0xaf')]]){this['actions'][_0x3fea1f[_0x751e('0xaf')]][_0x751e('0x74')]=_0x3fea1f[_0x751e('0x74')];}};Preview[_0x751e('0x5d')][_0x751e('0x16')]=function(_0x1441a2){var _0x21ae5e=this;var _0x56d8e6=this[_0x751e('0x13')][_0x1441a2[_0x751e('0x11b')]];if(_0x56d8e6){if(_0x56d8e6[_0x751e('0xe3')]&&this[_0x751e('0x81')][_0x56d8e6['lookAgent']]){ut[_0x751e('0x11c')](_0x56d8e6,this[_0x751e('0x81')][_0x56d8e6[_0x751e('0xe3')]][_0x751e('0x25')],this[_0x751e('0x81')][_0x56d8e6['lookAgent']]['id']);}var _0x1624ca=_[_0x751e('0x11d')](_0x56d8e6);_0x1624ca[_0x751e('0x11e')]=moment()[_0x751e('0x54')](_0x751e('0x9d'));var _0x3df83f=_0x21ae5e[_0x751e('0x10')][_0x56d8e6['queue']];if(ut[_0x751e('0x11f')](_0x1441a2['response'])){if(_0x56d8e6['unlockAgent']){rpcDb[_0x751e('0xf3')](_0x56d8e6[_0x751e('0xc8')]);}if(_0x56d8e6[_0x751e('0xb6')]){rpcDb[_0x751e('0xc7')](_0x56d8e6[_0x751e('0xc8')]);}ami[_0x751e('0x23')](_0x751e('0x120'),ut[_0x751e('0xa6')](_0x56d8e6,'rejected'));this['callProgressDetectingAgent'](_0x1624ca,_0x3df83f,_0x1441a2);}else{_0x56d8e6[_0x751e('0x88')]=moment()[_0x751e('0x54')](_0x751e('0x9d'));ut[_0x751e('0xd4')](_0x1624ca,0x4,_0x751e('0xa9'));rpcDb[_0x751e('0xd5')](_0x1624ca,_0x751e('0x121'));}}};Preview[_0x751e('0x5d')][_0x751e('0x19')]=function(_0x404673){var _0x1c2ed9=this;var _0x34ca91=this[_0x751e('0x13')][_0x404673[_0x751e('0xaf')]];var _0x4ce6b6;if(_0x34ca91){_0x4ce6b6=this['campaignsPreview'][_0x34ca91['queue']];logger[_0x751e('0x67')](_0x751e('0x122'),_0x404673[_0x751e('0xaf')],_0x751e('0xa1'),_0x4ce6b6['name'],_0x751e('0x6a'),_0x4ce6b6[_0x751e('0x2a')]);}if(this[_0x751e('0x13')][_0x404673[_0x751e('0xaf')]]&&_0x404673[_0x751e('0xaf')]!==_0x404673[_0x751e('0xa0')]){if(_0x404673[_0x751e('0x123')]==='16'&&this[_0x751e('0x13')][_0x404673['linkedid']]['dialAnswer']){this['callProgressDetectingCustomer'](_0x404673,_0x404673['linkedid'],_0x404673[_0x751e('0x123')]);}else if(this['actions'][_0x404673[_0x751e('0xaf')]][_0x751e('0x6c')]){logger[_0x751e('0x67')](_0x751e('0x124'),_0x404673[_0x751e('0xaf')],_0x404673['cause'],_0x751e('0xa1'),_0x4ce6b6[_0x751e('0x25')],_0x751e('0x6a'),_0x4ce6b6[_0x751e('0x2a')]);this[_0x751e('0x125')](_0x404673,_0x404673[_0x751e('0xaf')],_0x404673[_0x751e('0x123')]);}}else if(_0x34ca91&&_[_0x751e('0x66')](_0x34ca91['statedesc'])&&_0x4ce6b6[_0x751e('0x126')]&&_0x404673[_0x751e('0xaf')]===_0x404673[_0x751e('0xa0')]&&_[_0x751e('0x66')](_0x404673[_0x751e('0xdc')])&&_0x404673['cause']==='16'&&_0x404673[_0x751e('0x127')]==='6'&&_['isUndefined'](_0x34ca91[_0x751e('0x128')])){if(_0x34ca91['unlockAgent']){rpcDb['unlockContact'](_0x34ca91['idContact']);}if(_0x34ca91[_0x751e('0xb6')]){rpcDb[_0x751e('0xc7')](_0x34ca91['idContact']);}_0x404673[_0x751e('0xdc')]='22';this[_0x751e('0xd1')](_0x34ca91,_0x4ce6b6,_0x404673);}else if(_0x34ca91&&_0x34ca91[_0x751e('0x128')]){if(_0x404673[_0x751e('0x123')]==='16'&&this[_0x751e('0x13')][_0x404673[_0x751e('0xaf')]]['dialAnswer']){logger[_0x751e('0x67')](_0x751e('0x129'),_0x404673['linkedid'],_0x404673[_0x751e('0x123')],_0x751e('0xa1'),_0x4ce6b6[_0x751e('0x25')],_0x751e('0x6a'),_0x4ce6b6[_0x751e('0x2a')]);this[_0x751e('0x125')](_0x404673,_0x404673['linkedid'],_0x404673[_0x751e('0x123')]);}else if(this[_0x751e('0x13')][_0x404673['linkedid']][_0x751e('0x6c')]){logger[_0x751e('0x67')](_0x751e('0x124'),_0x404673[_0x751e('0xaf')],_0x404673['cause'],_0x751e('0xa1'),_0x4ce6b6[_0x751e('0x25')],_0x751e('0x6a'),_0x4ce6b6[_0x751e('0x2a')]);this[_0x751e('0x125')](_0x404673,_0x404673[_0x751e('0xaf')],_0x404673[_0x751e('0x123')]);}}};Preview[_0x751e('0x5d')][_0x751e('0x1c')]=function(_0x1d8b7c){if(this[_0x751e('0x13')][_0x1d8b7c[_0x751e('0xd0')]]&&_0x1d8b7c[_0x751e('0xd0')]!==_0x1d8b7c[_0x751e('0x12a')]){this[_0x751e('0x125')](_0x1d8b7c,_0x1d8b7c[_0x751e('0xd0')],_0x1d8b7c['dialstatus']);}};Preview[_0x751e('0x5d')][_0x751e('0x1b')]=function(_0xcc25cd){if(this[_0x751e('0x13')][_0xcc25cd[_0x751e('0xaf')]]&&_0xcc25cd['linkedid']!==_0xcc25cd['uniqueid']&&!this[_0x751e('0x13')][_0xcc25cd[_0x751e('0xaf')]]['dialAnswer']){if(_0xcc25cd[_0x751e('0x123')]==='1'){this[_0x751e('0x125')](_0xcc25cd,_0xcc25cd[_0x751e('0xaf')],_0xcc25cd[_0x751e('0x123')]);}}};Preview[_0x751e('0x5d')][_0x751e('0x12b')]=function(_0x15ef37,_0x60a529,_0x31c686){if(this[_0x751e('0x13')][_0x15ef37]){if(_[_0x751e('0x66')](this[_0x751e('0x13')][_0x15ef37][_0x751e('0x12c')])){this[_0x751e('0x13')][_0x15ef37][_0x751e('0x12c')]={};}this[_0x751e('0x13')][_0x15ef37]['variables'][_0x60a529]=_0x31c686;}};Preview['prototype'][_0x751e('0x1f')]=function(_0x3fc7f4){try{if(!_['isNil'](_0x3fc7f4)){if(ut[_0x751e('0x12d')](_[_0x751e('0x12e')](_0x3fc7f4[_0x751e('0x12f')])[0x0])){this[_0x751e('0x12b')](_0x3fc7f4[_0x751e('0xa0')],_[_0x751e('0x12e')](_0x3fc7f4['variable'])[0x0],_0x3fc7f4[_0x751e('0x130')]);}}}catch(_0x3854e6){logger['error'](_0x751e('0x131'),util[_0x751e('0x132')](_0x3854e6,{'showHidden':![],'depth':null}));}};Preview[_0x751e('0x5d')][_0x751e('0x20')]=function(_0x43b2b7){if(_0x43b2b7){if(this[_0x751e('0x13')][_0x43b2b7['transfertargetlinkedid']]){this[_0x751e('0x13')][_0x43b2b7[_0x751e('0x133')]]['transfer']=!![];}}};Preview['prototype']['syncBlindTransfer']=function(_0x328ec9){if(_0x328ec9){if(this[_0x751e('0x13')][_0x328ec9[_0x751e('0x134')]]){this[_0x751e('0x13')][_0x328ec9[_0x751e('0x134')]]['transfer']=!![];}}};module[_0x751e('0x135')]=Preview;
\ No newline at end of file
index 75f905b..8579731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f91=['../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','catch','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','uniqueid','calleridname','queue','queuecallerjoinAt','answertime','queuecallercompleteAt','endtime','connectedlinename','from-sip','exten','holdtime','lastAssignedTo','membername','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/voiceQueueRt'];(function(_0x48ec91,_0x212edc){var _0x22766c=function(_0x136751){while(--_0x136751){_0x48ec91['push'](_0x48ec91['shift']());}};_0x22766c(++_0x212edc);}(_0x6f91,0x9a));var _0x16f9=function(_0x119280,_0x439c3e){_0x119280=_0x119280-0x0;var _0x481797=_0x6f91[_0x119280];return _0x481797;};'use strict';var util=require(_0x16f9('0x0'));var BPromise=require(_0x16f9('0x1'));var logger=require(_0x16f9('0x2'))(_0x16f9('0x3'));var _=require(_0x16f9('0x4'));var cmHopper=require(_0x16f9('0x5'));var cmHopperFinal=require(_0x16f9('0x6'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x16f9('0x7'));var agentReportPreview=require(_0x16f9('0x8'));var voiceQueueReport=require(_0x16f9('0x9'));function loggerCatch(_0x31363d){return function(_0x16f806){logger[_0x16f9('0xa')](_0x31363d,util[_0x16f9('0xb')](_0x16f806,{'showHidden':![],'depth':null}));};}function create(_0x160bcb){return BPromise[_0x16f9('0xc')]()[_0x16f9('0xd')](cmHopperHistory[_0x16f9('0xe')](_0x160bcb))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x10')));}function createAgent(_0x47491b){return BPromise[_0x16f9('0xc')]()[_0x16f9('0xd')](agentReportPreview[_0x16f9('0xe')](_0x47491b))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x10')));}function moveContact(_0x1eec52){return BPromise[_0x16f9('0xc')]()['then'](cmHopper[_0x16f9('0x11')](_0x1eec52,!![]))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x12')));}exports[_0x16f9('0x13')]=function(_0x4b633c){return BPromise[_0x16f9('0xc')]()[_0x16f9('0xd')](cmHopperBlack[_0x16f9('0x13')](_0x4b633c))['catch'](loggerCatch(_0x16f9('0x14')));};exports[_0x16f9('0x15')]=function(_0x1fb443){return BPromise[_0x16f9('0xc')]()['then'](cmHopper[_0x16f9('0x15')](_0x1fb443))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x16')));};exports[_0x16f9('0xe')]=function(_0x416312,_0x4ed7c5){create(_0x416312)[_0x16f9('0xf')](loggerCatch(_0x4ed7c5));moveContact(_0x416312)[_0x16f9('0xf')](loggerCatch(_0x4ed7c5));};exports[_0x16f9('0x17')]=function(_0x5b6ede,_0x12f5d0){createAgent(_0x5b6ede)[_0x16f9('0xf')](loggerCatch(_0x12f5d0));};exports['createCustomerHistory']=function(_0x417982,_0xe49cd0){create(_0x417982)[_0x16f9('0xf')](loggerCatch(_0xe49cd0));};exports['createCustomerFinal']=function(_0x229fdf,_0x1ebc46){moveContact(_0x229fdf)[_0x16f9('0xf')](loggerCatch(_0x1ebc46));};exports[_0x16f9('0x18')]=function(_0x5b90fd,_0x25d16d,_0x45faa4){if(_0x25d16d){_0x5b90fd[_0x16f9('0x19')]=null;}if(_0x45faa4){_0x5b90fd['active']=![];}return BPromise[_0x16f9('0xc')]()[_0x16f9('0xd')](cmHopper['rescheduleContact'](_0x5b90fd))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x1a')));};exports[_0x16f9('0x1b')]=function(_0x5063f9){return BPromise[_0x16f9('0xc')]()[_0x16f9('0xd')](cmHopper[_0x16f9('0x1b')](_0x5063f9))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x1c')));};exports['unlockContact']=function(_0x33c46e){return BPromise[_0x16f9('0xc')]()[_0x16f9('0xd')](cmHopper[_0x16f9('0x1d')]({'UserId':null},_0x33c46e,0x1))[_0x16f9('0xf')](loggerCatch('[unlockContact]\x20'));};exports[_0x16f9('0x1e')]=function(_0x11f80b){return BPromise[_0x16f9('0xc')]()[_0x16f9('0xd')](cmHopper[_0x16f9('0x1d')]({'active':![]},_0x11f80b,0x1))['catch'](loggerCatch(_0x16f9('0x1f')));};exports[_0x16f9('0x20')]=function(_0x43261a){var _0x5f262f={};_0x5f262f['type']=_0x43261a['type'];_0x5f262f[_0x16f9('0x21')]=_0x43261a[_0x16f9('0x21')];_0x5f262f['calleridnum']=_0x43261a['calleridnum'];_0x5f262f[_0x16f9('0x22')]=_0x43261a[_0x16f9('0x22')];_0x5f262f[_0x16f9('0x23')]=_0x43261a[_0x16f9('0x23')];_0x5f262f[_0x16f9('0x24')]=_0x43261a[_0x16f9('0x25')];_0x5f262f['queuecallerleaveAt']=_0x43261a[_0x16f9('0x25')];_0x5f262f['queuecallercomplete']=0x1;_0x5f262f[_0x16f9('0x26')]=_0x43261a[_0x16f9('0x27')];_0x5f262f[_0x16f9('0x28')]=_0x43261a['membername'];_0x5f262f['context']=_0x16f9('0x29');_0x5f262f[_0x16f9('0x2a')]='xcally-motion-preview';_0x5f262f[_0x16f9('0x2b')]=0x0;_0x5f262f['assigned']=0x1;_0x5f262f[_0x16f9('0x2c')]=_0x43261a[_0x16f9('0x2d')];_0x5f262f[_0x16f9('0x2e')]=_0x16f9('0x2f');return BPromise[_0x16f9('0xc')]()[_0x16f9('0xd')](voiceQueueReport[_0x16f9('0x30')](_0x5f262f))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x31')));};exports[_0x16f9('0x32')]=function(_0x4323e4,_0x1caa42){return BPromise[_0x16f9('0xc')]()['then'](cmHopper[_0x16f9('0x32')](_0x4323e4,_0x1caa42))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x33')));};exports[_0x16f9('0x34')]=function(_0x20454c){return BPromise['resolve']()['then'](cmHopper['rescheduleContact'](_0x20454c,!![],!![]))[_0x16f9('0xf')](loggerCatch(_0x16f9('0x35')));};
\ No newline at end of file
+var _0x5af1=['calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','membername','context','from-sip','xcally-motion-preview','holdtime','assigned','queuecallerexitreason','create','[voiceQueueReport]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueReport','error','resolve','then','createHistory','catch','[createHistory]\x20','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum'];(function(_0x482fcc,_0x448923){var _0x16ab21=function(_0x468a99){while(--_0x468a99){_0x482fcc['push'](_0x482fcc['shift']());}};_0x16ab21(++_0x448923);}(_0x5af1,0x14b));var _0x15af=function(_0x59162a,_0x10e547){_0x59162a=_0x59162a-0x0;var _0x35e50d=_0x5af1[_0x59162a];return _0x35e50d;};'use strict';var util=require(_0x15af('0x0'));var BPromise=require(_0x15af('0x1'));var logger=require(_0x15af('0x2'))('preview');var _=require(_0x15af('0x3'));var cmHopper=require(_0x15af('0x4'));var cmHopperFinal=require(_0x15af('0x5'));var cmHopperHistory=require(_0x15af('0x6'));var cmHopperBlack=require(_0x15af('0x7'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0x15af('0x8'));function loggerCatch(_0x1cda97){return function(_0x56a439){logger[_0x15af('0x9')](_0x1cda97,util['inspect'](_0x56a439,{'showHidden':![],'depth':null}));};}function create(_0x32cd29){return BPromise[_0x15af('0xa')]()[_0x15af('0xb')](cmHopperHistory[_0x15af('0xc')](_0x32cd29))[_0x15af('0xd')](loggerCatch(_0x15af('0xe')));}function createAgent(_0x386c3a){return BPromise[_0x15af('0xa')]()[_0x15af('0xb')](agentReportPreview['createHistory'](_0x386c3a))[_0x15af('0xd')](loggerCatch(_0x15af('0xe')));}function moveContact(_0x89b05a){return BPromise[_0x15af('0xa')]()['then'](cmHopper['moveContactManagedDialer'](_0x89b05a,!![]))['catch'](loggerCatch(_0x15af('0xf')));}exports[_0x15af('0x10')]=function(_0x3ece2b){return BPromise['resolve']()['then'](cmHopperBlack[_0x15af('0x10')](_0x3ece2b))[_0x15af('0xd')](loggerCatch('[checkIsBlackList]\x20'));};exports[_0x15af('0x11')]=function(_0x54d492){return BPromise['resolve']()[_0x15af('0xb')](cmHopper[_0x15af('0x11')](_0x54d492))[_0x15af('0xd')](loggerCatch(_0x15af('0x12')));};exports['createHistory']=function(_0x3169e0,_0x725408){create(_0x3169e0)[_0x15af('0xd')](loggerCatch(_0x725408));moveContact(_0x3169e0)[_0x15af('0xd')](loggerCatch(_0x725408));};exports[_0x15af('0x13')]=function(_0x41cb25,_0x49889c){createAgent(_0x41cb25)[_0x15af('0xd')](loggerCatch(_0x49889c));};exports[_0x15af('0x14')]=function(_0x2c4f27,_0xcf5f79){create(_0x2c4f27)['catch'](loggerCatch(_0xcf5f79));};exports[_0x15af('0x15')]=function(_0x181e52,_0x1daff4){moveContact(_0x181e52)[_0x15af('0xd')](loggerCatch(_0x1daff4));};exports[_0x15af('0x16')]=function(_0x1ca437,_0xd41620,_0x5704ad){if(_0xd41620){_0x1ca437[_0x15af('0x17')]=null;}if(_0x5704ad){_0x1ca437[_0x15af('0x18')]=![];}return BPromise[_0x15af('0xa')]()[_0x15af('0xb')](cmHopper[_0x15af('0x16')](_0x1ca437))[_0x15af('0xd')](loggerCatch('[rescheduleContact]\x20'));};exports[_0x15af('0x19')]=function(_0xe93b6e){return BPromise[_0x15af('0xa')]()[_0x15af('0xb')](cmHopper['countReScheduled'](_0xe93b6e))[_0x15af('0xd')](loggerCatch(_0x15af('0x1a')));};exports['unlockContact']=function(_0x94080a){return BPromise[_0x15af('0xa')]()['then'](cmHopper[_0x15af('0x1b')]({'UserId':null},_0x94080a,0x1))[_0x15af('0xd')](loggerCatch(_0x15af('0x1c')));};exports['disableContact']=function(_0x2cced1){return BPromise['resolve']()[_0x15af('0xb')](cmHopper[_0x15af('0x1b')]({'active':![]},_0x2cced1,0x1))[_0x15af('0xd')](loggerCatch('[activeContact]\x20'));};exports[_0x15af('0x1d')]=function(_0x65250){var _0x8177df={};_0x8177df[_0x15af('0x1e')]=_0x65250[_0x15af('0x1e')];_0x8177df[_0x15af('0x1f')]=_0x65250[_0x15af('0x1f')];_0x8177df['calleridnum']=_0x65250[_0x15af('0x20')];_0x8177df['calleridname']=_0x65250[_0x15af('0x21')];_0x8177df[_0x15af('0x22')]=_0x65250[_0x15af('0x22')];_0x8177df[_0x15af('0x23')]=_0x65250['answertime'];_0x8177df[_0x15af('0x24')]=_0x65250[_0x15af('0x25')];_0x8177df[_0x15af('0x26')]=0x1;_0x8177df[_0x15af('0x27')]=_0x65250[_0x15af('0x28')];_0x8177df['connectedlinename']=_0x65250[_0x15af('0x29')];_0x8177df[_0x15af('0x2a')]=_0x15af('0x2b');_0x8177df['exten']=_0x15af('0x2c');_0x8177df[_0x15af('0x2d')]=0x0;_0x8177df[_0x15af('0x2e')]=0x1;_0x8177df['lastAssignedTo']=_0x65250[_0x15af('0x29')];_0x8177df[_0x15af('0x2f')]='COMPLETED';return BPromise['resolve']()[_0x15af('0xb')](voiceQueueReport[_0x15af('0x30')](_0x8177df))[_0x15af('0xd')](loggerCatch(_0x15af('0x31')));};exports['getContactRecallMe']=function(_0x1e195e,_0x232b45){return BPromise[_0x15af('0xa')]()[_0x15af('0xb')](cmHopper['getContactRecallMe'](_0x1e195e,_0x232b45))[_0x15af('0xd')](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0x15af('0x32')]=function(_0x40287f){return BPromise[_0x15af('0xa')]()[_0x15af('0xb')](cmHopper[_0x15af('0x16')](_0x40287f,!![],!![]))[_0x15af('0xd')](loggerCatch(_0x15af('0x33')));};
\ No newline at end of file
index 653a5b6..63b33d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74cb=['info','loggerError','message','getCallerId','isEmpty','isUndefined','string','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isNil','addVariables','Queue','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','Contact','createdAt','updatedAt','%s%s','XMD-','toLowerVariables','hasOwnProperty','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','responsetime','endtime','logAgent','statedesc','ringtime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','isFailure','variablesAction','RECALL','originate','from-sip','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','cloneAction','Global','scheduledAt','active','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','IsNotLoggedIn','buildObj','queue','interface','channelAgent','buildAcw','agentReadyId','not_inuse','status','reachable','push','diff','createBody','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialoptions','xmd-dialid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosbridged','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','util','lodash','moment','XCALLY_IP_AGI','127.0.0.1','milliseconds','seconds','loggerCatch','error','inspect'];(function(_0x616fb8,_0x177e11){var _0x739e20=function(_0xfe27e9){while(--_0xfe27e9){_0x616fb8['push'](_0x616fb8['shift']());}};_0x739e20(++_0x177e11);}(_0x74cb,0x7e));var _0xb74c=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0x74cb[_0x4b7b62];return _0x2280df;};'use strict';var util=require(_0xb74c('0x0'));var _=require(_0xb74c('0x1'));var moment=require(_0xb74c('0x2'));var logger=require('../../../../config/logger')('preview');var ipAgi=process['env'][_0xb74c('0x3')]||_0xb74c('0x4');function getSeconds(_0x40186d,_0x36e8c6){var _0x230ec0=moment(_0x40186d)[_0xb74c('0x5')](0x0);var _0x2fc9d9=moment(_0x36e8c6)[_0xb74c('0x5')](0x0);return _0x230ec0['diff'](_0x2fc9d9,_0xb74c('0x6'));}exports[_0xb74c('0x7')]=function(_0x1d678f){return function(_0x44e5e9){logger[_0xb74c('0x8')](_0x1d678f,util[_0xb74c('0x9')](_0x44e5e9,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x544ae5,_0x575f40){logger[_0xb74c('0xa')](_0x544ae5,util[_0xb74c('0x9')](_0x575f40,{'showHidden':![],'depth':null}));};exports[_0xb74c('0xb')]=function(_0x1b7264,_0x57c10d){logger[_0xb74c('0x8')](_0x1b7264,util['inspect'](_0x57c10d,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x380d9d){return function(_0x8f3263){logger[_0xb74c('0xa')](_0x380d9d,util[_0xb74c('0x9')](_0x8f3263,{'showHidden':![],'depth':null}));};};exports[_0xb74c('0xc')]=function(_0x1dc688,_0x2e7d95,_0x18974){return{'message':_0x1dc688,'unlock':_0x2e7d95,'active':_0x18974};};exports[_0xb74c('0xd')]=function(_0x88f3df,_0x196ba6,_0x13effe){if(!_['isUndefined'](_0x13effe)&&'string'===typeof _0x13effe&&!_[_0xb74c('0xe')](_0x13effe)){if(!_[_0xb74c('0xf')](_0x196ba6)&&_0xb74c('0x10')===typeof _0x196ba6&&!_[_0xb74c('0xe')](_0x196ba6)){return util[_0xb74c('0x11')](_0xb74c('0x12'),_0x196ba6,_0x13effe);}return util[_0xb74c('0x11')]('\x22%s\x22\x20<%s>',_0x13effe,_0x13effe);}if(!_[_0xb74c('0xf')](_0x88f3df)&&'string'===typeof _0x88f3df&&!_[_0xb74c('0xe')](_0x88f3df)){return _0x88f3df;}return _0xb74c('0x13');};exports['isActive']=function(_0x54a208){if(_[_0xb74c('0x14')](_0x54a208)){return![];}return _0x54a208;};exports[_0xb74c('0x15')]=function(_0x531109,_0x37736f,_0x405a77,_0x502292,_0x12ded0,_0x2bb13d){var _0xd6fea1={'XMD-QUEUE':_0x37736f['Queue']?_0x37736f[_0xb74c('0x16')]['name']:'','XMD-CALLERID':_0x502292,'XMD-CALLERID-PREVIEW':_0x2bb13d?util[_0xb74c('0x11')](_0xb74c('0x12'),_0x2bb13d[_0xb74c('0x17')],_0x2bb13d[_0xb74c('0x18')]):_0x502292,'XMD-DIALID':_0x12ded0,'XMD-CONTACTID':_0x37736f[_0xb74c('0x19')],'XMD-CDRTYPE':_0xb74c('0x1a'),'CALLERID(all)':_0x502292,'XMD-VOICEQUEUEID':_0x37736f[_0xb74c('0x1b')],'XMD-DIALCHANNEL':_0x405a77,'XMD-DIALTIMEOUT':_0x531109[_0xb74c('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0xb74c('0x11')](_0xb74c('0x1d'),_0x531109[_0xb74c('0x1e')]?'g':'',_['isEmpty'](_0x531109[_0xb74c('0x1f')])?'':_0xb74c('0x20')),'XMD-DIALURL':_0x531109[_0xb74c('0x21')]||'','XMD-AGI':_0x531109[_0xb74c('0x22')]?util['format'](_0xb74c('0x23'),ipAgi,_0x531109[_0xb74c('0x22')]):_0xb74c('0x24'),'XMD-AGIAFTER':_0x531109['dialQueueProject2']?util[_0xb74c('0x11')]('\x22agi://%s/square,%s\x22',ipAgi,_0x531109['dialQueueProject2']):_0xb74c('0x24'),'XMD-ORIGINATECALLERIDNUM':_0x2bb13d?_0x2bb13d[_0xb74c('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x2bb13d?_0x2bb13d[_0xb74c('0x26')]:'','XMD-DESTINATION':_0xb74c('0x27')};if(!_[_0xb74c('0xe')](_0x531109['monitor_format'])){_0xd6fea1[util[_0xb74c('0x11')]('%s',_0xb74c('0x28'))]=_0x531109[_0xb74c('0x1f')];_0xd6fea1[util['format']('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x12ded0;}if(_0x37736f&&_0x37736f[_0xb74c('0x29')]){for(var _0x5a5ea6 in _0x37736f[_0xb74c('0x29')]){if(_0x37736f['Contact']['hasOwnProperty'](_0x5a5ea6)){if(!_[_0xb74c('0x14')](_0x37736f[_0xb74c('0x29')][_0x5a5ea6])&&_0x5a5ea6!=='id'&&_0x5a5ea6!=='tags'&&_0x5a5ea6!==_0xb74c('0x2a')&&_0x5a5ea6!==_0xb74c('0x2b')){_0xd6fea1[util[_0xb74c('0x11')](_0xb74c('0x2c'),_0xb74c('0x2d'),_['toUpper'](_0x5a5ea6))]=_0x37736f['Contact'][_0x5a5ea6];}}}}return _0xd6fea1;};exports[_0xb74c('0x2e')]=function(_0x36f7c8){var _0x432657={};for(var _0x5121bc in _0x36f7c8){if(_0x36f7c8[_0xb74c('0x2f')](_0x5121bc)){_0x432657[util[_0xb74c('0x11')]('%s',_['toLower'](_0x5121bc))]=_0x36f7c8[_0x5121bc];}}return{'variables':_0x432657};};exports['updateOriginated']=function(_0x172330,_0x4ecaa8){if(!_[_0xb74c('0x14')](_0x172330)){if(_0x172330[_0xb74c('0x2f')](_0xb74c('0x30'))){if(_0x172330[_0xb74c('0x30')]>0x0){_0x172330[_0xb74c('0x30')]-=0x1;}else{logger[_0xb74c('0x8')](_0xb74c('0x31'),_0x4ecaa8);}}}else{logger[_0xb74c('0x8')](_0xb74c('0x32'),_0x4ecaa8);}};exports[_0xb74c('0x33')]=function(_0x150dc3){var _0x2ab288=moment()['format'](_0xb74c('0x34'));_0x150dc3[_0xb74c('0x35')]=0xd;_0x150dc3['statedesc']=_0xb74c('0x36');_0x150dc3[_0xb74c('0x37')]=_0x2ab288;_0x150dc3[_0xb74c('0x38')]=_0x2ab288;_0x150dc3[_0xb74c('0x39')]=_0x2ab288;};exports[_0xb74c('0x3a')]=function(_0x3d44e2,_0x1e9f68,_0x13764f){var _0x31146a=moment()[_0xb74c('0x11')](_0xb74c('0x34'));_0x3d44e2['state']=_0x1e9f68;_0x3d44e2[_0xb74c('0x3b')]=_0x13764f;_0x3d44e2[_0xb74c('0x38')]=_0x31146a;_0x3d44e2[_0xb74c('0x3c')]=getSeconds(_0x3d44e2[_0xb74c('0x38')],_0x3d44e2[_0xb74c('0x37')]);};exports[_0xb74c('0x3d')]=function(_0x8853d3,_0xc74f62,_0x40058e){_0x8853d3[_0xb74c('0x3e')]=_0xc74f62;_0x8853d3[_0xb74c('0x3f')]=_0x40058e;};exports[_0xb74c('0x40')]=function(_0x47399c,_0x4d3e6d,_0x3c94ce){var _0x35030d=moment()[_0xb74c('0x11')](_0xb74c('0x34'));_0x47399c['state']=_0x4d3e6d;_0x47399c[_0xb74c('0x3b')]=_0x3c94ce;_0x47399c[_0xb74c('0x38')]=_0x47399c[_0xb74c('0x38')]?_0x47399c['responsetime']:_0x35030d;_0x47399c[_0xb74c('0x39')]=_0x47399c[_0xb74c('0x39')]?_0x47399c[_0xb74c('0x39')]:_0x35030d;_0x47399c[_0xb74c('0x3c')]=getSeconds(_0x47399c[_0xb74c('0x38')]||0x0,_0x47399c[_0xb74c('0x37')]||0x0);_0x47399c[_0xb74c('0x41')]=_0x47399c[_0xb74c('0x42')]?getSeconds(_0x47399c[_0xb74c('0x39')],_0x47399c['answertime']):0x0;};exports[_0xb74c('0x43')]=function(_0x276146){return _0x276146==='Failure';};exports[_0xb74c('0x44')]=function(_0x4f2374,_0x580200,_0x7794c3,_0x1d77c6,_0xd497c6){var _0xc1560b=_0x1d77c6?_0xb74c('0x45'):_0x4f2374[_0xb74c('0x17')];_0xc1560b=_0xd497c6?'BOOKED':_0xc1560b;return{'actionid':_0x4f2374['uniqueid'],'action':_0xb74c('0x46'),'channel':_0x4f2374['channelAgent'],'callerid':util[_0xb74c('0x11')](_0xb74c('0x12'),_0xc1560b,_0x4f2374[_0xb74c('0x18')]),'Exten':_0xb74c('0x27'),'Context':_0xb74c('0x47'),'Priority':'1','variable':_0x7794c3,'timeout':(_0x580200[_0xb74c('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4f2374[_0xb74c('0x49')]};};exports[_0xb74c('0x4a')]=function(_0x44300a){return _0x44300a[_0xb74c('0x4b')]+_0x44300a[_0xb74c('0x4c')]+_0x44300a[_0xb74c('0x4d')];};exports[_0xb74c('0x4e')]=function(_0x2ace15){var _0x17e2ef=_['clone'](_0x2ace15);_0x17e2ef['state']=0xf;_0x17e2ef[_0xb74c('0x3b')]=_0xb74c('0x4f');return _0x17e2ef;};exports[_0xb74c('0x50')]=function(_0x4c1204,_0x2e991e,_0x3befc3){var _0x548c63={};_0x548c63[_0x2e991e]=_0x4c1204[_0x2e991e];_0x548c63[_0xb74c('0x51')]=![];_0x548c63[_0xb74c('0x52')]=moment()[_0xb74c('0x53')](_0x3befc3,_0xb74c('0x54'))[_0xb74c('0x11')](_0xb74c('0x34'));_0x548c63[_0xb74c('0x19')]=_0x4c1204[_0xb74c('0x19')];_0x548c63[_0xb74c('0x55')]=_0x4c1204['ListId'];_0x548c63[_0xb74c('0x1b')]=_0x4c1204['VoiceQueueId']||undefined;return _0x548c63;};exports[_0xb74c('0x56')]=function(_0x53ab43,_0x192d60){if(!_[_0xb74c('0x14')](_0x53ab43)){if(_0x53ab43[_0xb74c('0x57')]>0x0){_0x53ab43[_0xb74c('0x57')]-=0x1;}else{logger[_0xb74c('0x8')](_0x192d60,_0xb74c('0x58'));}}else{logger['error'](_0x192d60,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0xb74c('0x59')]=function(_0x482098){if(_0x482098<=0x0){return!![];}return![];};exports[_0xb74c('0x5a')]=function(_0x29fe79,_0x1f32af){_0x29fe79['lastevent']=_0x1f32af;_0x29fe79['name']=_0x29fe79[_0xb74c('0x5b')];_0x29fe79[_0xb74c('0x5c')]=_0x29fe79[_0xb74c('0x5d')];return _0x29fe79;};exports[_0xb74c('0x5e')]=function(_0x2ce24b){var _0x4a241b={};_0x4a241b[_0xb74c('0x5b')]=_0x2ce24b[_0xb74c('0x5b')];_0x4a241b['interface']=_0x2ce24b[_0xb74c('0x5d')];_0x4a241b[_0xb74c('0x49')]=_0x2ce24b['uniqueid'];return _0x4a241b;};exports[_0xb74c('0x5f')]=function(_0xc2cdcf){var _0x37b73d=[];for(var _0xb69ce7 in _0xc2cdcf){if(_0xc2cdcf['hasOwnProperty'](_0xb69ce7)){if(!_[_0xb74c('0x14')](_0xc2cdcf[_0xb69ce7])&&_0xc2cdcf[_0xb69ce7][_0xb74c('0x35')]===_0xb74c('0x60')&&_0xc2cdcf[_0xb69ce7][_0xb74c('0x61')]===_0xb74c('0x62')){_0x37b73d[_0xb74c('0x63')](_0xc2cdcf[_0xb69ce7]['id']);}}}return _0x37b73d;};exports['getDiff']=function(_0x123533){var _0x28807d=moment()[_0xb74c('0x5')](0x0);var _0x47b652=moment(_0x123533)[_0xb74c('0x5')](0x0);return _0x28807d[_0xb74c('0x64')](_0x47b652,_0xb74c('0x6'));};exports[_0xb74c('0x65')]=function(_0x591599){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x591599[_0xb74c('0x19')],'ListId':_0x591599[_0xb74c('0x55')],'VoiceQueueId':_0x591599['VoiceQueueId']||undefined,'CampaignId':_0x591599[_0xb74c('0x66')]||undefined};};exports[_0xb74c('0x67')]=function(_0x1f4d2b){if(_0x1f4d2b==='uniqueid'||_0x1f4d2b===_0xb74c('0x68')||_0x1f4d2b===_0xb74c('0x5b')||_0x1f4d2b===_0xb74c('0x69')||_0x1f4d2b===_0xb74c('0x6a')||_0x1f4d2b===_0xb74c('0x6b')||_0x1f4d2b===_0xb74c('0x3e')||_0x1f4d2b==='channelAgent'||_0x1f4d2b===_0xb74c('0x17')||_0x1f4d2b===_0xb74c('0x51')||_0x1f4d2b===_0xb74c('0x18')||_0x1f4d2b===_0xb74c('0x52')||_0x1f4d2b===_0xb74c('0x4b')||_0x1f4d2b==='countcongestionretry'||_0x1f4d2b===_0xb74c('0x4d')||_0x1f4d2b==='countglobal'||_0x1f4d2b==='callback'||_0x1f4d2b===_0xb74c('0x6c')||_0x1f4d2b===_0xb74c('0x6d')||_0x1f4d2b===_0xb74c('0x6e')||_0x1f4d2b===_0xb74c('0x19')||_0x1f4d2b===_0xb74c('0x55')||_0x1f4d2b===_0xb74c('0x3f')||_0x1f4d2b===_0xb74c('0x1b')||_0x1f4d2b===_0xb74c('0x6f')||_0x1f4d2b===_0xb74c('0x70')||_0x1f4d2b===_0xb74c('0x71')||_0x1f4d2b===_0xb74c('0x72')||_0x1f4d2b===_0xb74c('0x73')||_0x1f4d2b==='xmd-dialurl'||_0x1f4d2b==='xmd-dialtimeout'||_0x1f4d2b===_0xb74c('0x74')||_0x1f4d2b===_0xb74c('0x75')||_0x1f4d2b==='xmd-dialchannel'||_0x1f4d2b==='xmd-contactid'||_0x1f4d2b===_0xb74c('0x76')||_0x1f4d2b===_0xb74c('0x77')||_0x1f4d2b===_0xb74c('0x78')||_0x1f4d2b==='xmd-agi'||_0x1f4d2b===_0xb74c('0x79')||_0x1f4d2b==='rtpaudioqosbridged'||_0x1f4d2b===_0xb74c('0x7a')||_0x1f4d2b===_0xb74c('0x7b')||_0x1f4d2b===_0xb74c('0x7c')||_0x1f4d2b===_0xb74c('0x7d')||_0x1f4d2b===_0xb74c('0x7e')||_0x1f4d2b==='rtpaudioqosrttbridged'||_0x1f4d2b===_0xb74c('0x79')||_0x1f4d2b===_0xb74c('0x7f')||_0x1f4d2b===_0xb74c('0x7a')||_0x1f4d2b===_0xb74c('0x7b')||_0x1f4d2b===_0xb74c('0x7c')||_0x1f4d2b==='rtpaudioqoslossbridged'||_0x1f4d2b===_0xb74c('0x7e')||_0x1f4d2b===_0xb74c('0x80')||_0x1f4d2b===_0xb74c('0x81')||_0x1f4d2b===_0xb74c('0x82')||_0x1f4d2b===_0xb74c('0x35')||_0x1f4d2b===_0xb74c('0x3b')){return![];}return!![];};exports[_0xb74c('0x83')]=function(_0x36c424,_0x4d322b){var _0x4ec9ef,_0x2ccf94,_0xbdf044;if(_0x4d322b<=0x0){_0x4d322b=0x1;}_0x4ec9ef=new RegExp(_0xb74c('0x84')+_0x4d322b+'}$');_0x2ccf94=Math[_0xb74c('0x85')](0xa,_0x4d322b-0x1);_0xbdf044=Math[_0xb74c('0x85')](0xa,_0x4d322b)-0x1;return util['format']('%s',_[_0xb74c('0x86')](_0x36c424,_0x4ec9ef,_[_0xb74c('0x87')](_0x2ccf94,_0xbdf044)));};exports['extractCalleridName']=function(_0x5cfd58){var _0x52b608=_0x5cfd58['match'](/"(.*?)"/);return _0x52b608?_0x52b608[0x1]:_0x5cfd58;};exports['extractCalleridNumber']=function(_0x1ba412){var _0x372837=_0x1ba412['match'](/<(.*?)>/);return _0x372837?_0x372837[0x1]:_0x1ba412;};
\ No newline at end of file
+var _0x36d0=['BOOKED','uniqueid','originate','channelAgent','calleridnum','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','cloneAction','clone','Global','scheduledAt','active','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','IsNotLoggedIn','buildObj','lastevent','queue','interface','buildAcw','agentReadyId','status','reachable','push','getDiff','seconds','createBody','CampaignId','filterKey','idContact','type','campaigntype','countglobal','callback','callbackuniqueid','recallme','UserId','sipcallid','xmd-voicequeueid','xmd-dialurl','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agi','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosbridged','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','pow','replace','random','extractCalleridName','match','lodash','moment','../../../../config/logger','preview','XCALLY_IP_AGI','milliseconds','diff','loggerCatch','inspect','loggerError','error','logger2','info','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','name','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','dialQueueProject2','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-','toLower','updateOriginated','isNil','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','statedesc','Blacklist','endtime','logAgent','YYYY-MM-DD\x20HH:mm:ss','state','responsetime','ringtime','starttime','logLookAgent','membername','answertime','isFailure','Failure','variablesAction','RECALL','calleridname'];(function(_0x552804,_0x3c3d1e){var _0x32be66=function(_0x14c213){while(--_0x14c213){_0x552804['push'](_0x552804['shift']());}};_0x32be66(++_0x3c3d1e);}(_0x36d0,0x1e5));var _0x036d=function(_0x209bb8,_0x20a857){_0x209bb8=_0x209bb8-0x0;var _0x16d006=_0x36d0[_0x209bb8];return _0x16d006;};'use strict';var util=require('util');var _=require(_0x036d('0x0'));var moment=require(_0x036d('0x1'));var logger=require(_0x036d('0x2'))(_0x036d('0x3'));var ipAgi=process['env'][_0x036d('0x4')]||'127.0.0.1';function getSeconds(_0x38c86a,_0x5c8185){var _0x501841=moment(_0x38c86a)['milliseconds'](0x0);var _0x3af17e=moment(_0x5c8185)[_0x036d('0x5')](0x0);return _0x501841[_0x036d('0x6')](_0x3af17e,'seconds');}exports[_0x036d('0x7')]=function(_0xdff3db){return function(_0x3ecbcb){logger['error'](_0xdff3db,util['inspect'](_0x3ecbcb,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0xca5e16,_0x230a2b){logger['info'](_0xca5e16,util[_0x036d('0x8')](_0x230a2b,{'showHidden':![],'depth':null}));};exports[_0x036d('0x9')]=function(_0x5c3791,_0x49690c){logger[_0x036d('0xa')](_0x5c3791,util[_0x036d('0x8')](_0x49690c,{'showHidden':![],'depth':null}));};exports[_0x036d('0xb')]=function(_0x2fe8b8){return function(_0x5c4ae4){logger[_0x036d('0xc')](_0x2fe8b8,util['inspect'](_0x5c4ae4,{'showHidden':![],'depth':null}));};};exports[_0x036d('0xd')]=function(_0x3d763a,_0x115bc4,_0x674070){return{'message':_0x3d763a,'unlock':_0x115bc4,'active':_0x674070};};exports[_0x036d('0xe')]=function(_0x5b9f26,_0x350226,_0x30b32b){if(!_[_0x036d('0xf')](_0x30b32b)&&_0x036d('0x10')===typeof _0x30b32b&&!_[_0x036d('0x11')](_0x30b32b)){if(!_['isUndefined'](_0x350226)&&_0x036d('0x10')===typeof _0x350226&&!_['isEmpty'](_0x350226)){return util[_0x036d('0x12')](_0x036d('0x13'),_0x350226,_0x30b32b);}return util[_0x036d('0x12')]('\x22%s\x22\x20<%s>',_0x30b32b,_0x30b32b);}if(!_[_0x036d('0xf')](_0x5b9f26)&&_0x036d('0x10')===typeof _0x5b9f26&&!_['isEmpty'](_0x5b9f26)){return _0x5b9f26;}return _0x036d('0x14');};exports[_0x036d('0x15')]=function(_0x23df4e){if(_['isNil'](_0x23df4e)){return![];}return _0x23df4e;};exports[_0x036d('0x16')]=function(_0xdaf578,_0x1c9dba,_0x5d822a,_0x46229d,_0x50722e,_0x4e4000){var _0x51e9bf={'XMD-QUEUE':_0x1c9dba[_0x036d('0x17')]?_0x1c9dba[_0x036d('0x17')][_0x036d('0x18')]:'','XMD-CALLERID':_0x46229d,'XMD-CALLERID-PREVIEW':_0x4e4000?util[_0x036d('0x12')](_0x036d('0x13'),_0x4e4000['calleridname'],_0x4e4000['calleridnum']):_0x46229d,'XMD-DIALID':_0x50722e,'XMD-CONTACTID':_0x1c9dba[_0x036d('0x19')],'XMD-CDRTYPE':_0x036d('0x1a'),'CALLERID(all)':_0x46229d,'XMD-VOICEQUEUEID':_0x1c9dba[_0x036d('0x1b')],'XMD-DIALCHANNEL':_0x5d822a,'XMD-DIALTIMEOUT':_0xdaf578[_0x036d('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0x036d('0x12')]('\x22rtTxX%s%s\x22',_0xdaf578['dialQueueProject2']?'g':'',_['isEmpty'](_0xdaf578[_0x036d('0x1d')])?'':_0x036d('0x1e')),'XMD-DIALURL':_0xdaf578[_0x036d('0x1f')]||'','XMD-AGI':_0xdaf578[_0x036d('0x20')]?util[_0x036d('0x12')](_0x036d('0x21'),ipAgi,_0xdaf578[_0x036d('0x20')]):_0x036d('0x22'),'XMD-AGIAFTER':_0xdaf578[_0x036d('0x23')]?util[_0x036d('0x12')](_0x036d('0x21'),ipAgi,_0xdaf578[_0x036d('0x23')]):_0x036d('0x22'),'XMD-ORIGINATECALLERIDNUM':_0x4e4000?_0x4e4000[_0x036d('0x24')]:'','XMD-ORIGINATECALLERIDNAME':_0x4e4000?_0x4e4000[_0x036d('0x25')]:'','XMD-DESTINATION':_0x036d('0x26')};if(!_[_0x036d('0x11')](_0xdaf578[_0x036d('0x1d')])){_0x51e9bf[util[_0x036d('0x12')]('%s',_0x036d('0x27'))]=_0xdaf578[_0x036d('0x1d')];_0x51e9bf[util[_0x036d('0x12')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x50722e;}if(_0x1c9dba&&_0x1c9dba[_0x036d('0x28')]){for(var _0x15d823 in _0x1c9dba[_0x036d('0x28')]){if(_0x1c9dba[_0x036d('0x28')][_0x036d('0x29')](_0x15d823)){if(!_['isNil'](_0x1c9dba[_0x036d('0x28')][_0x15d823])&&_0x15d823!=='id'&&_0x15d823!==_0x036d('0x2a')&&_0x15d823!==_0x036d('0x2b')&&_0x15d823!==_0x036d('0x2c')){_0x51e9bf[util[_0x036d('0x12')](_0x036d('0x2d'),_0x036d('0x2e'),_['toUpper'](_0x15d823))]=_0x1c9dba[_0x036d('0x28')][_0x15d823];}}}}return _0x51e9bf;};exports['toLowerVariables']=function(_0x176135){var _0x34a85c={};for(var _0x5da34b in _0x176135){if(_0x176135[_0x036d('0x29')](_0x5da34b)){_0x34a85c[util[_0x036d('0x12')]('%s',_[_0x036d('0x2f')](_0x5da34b))]=_0x176135[_0x5da34b];}}return{'variables':_0x34a85c};};exports[_0x036d('0x30')]=function(_0x586785,_0x52f63f){if(!_[_0x036d('0x31')](_0x586785)){if(_0x586785[_0x036d('0x29')](_0x036d('0x32'))){if(_0x586785[_0x036d('0x32')]>0x0){_0x586785[_0x036d('0x32')]-=0x1;}else{logger['error'](_0x036d('0x33'),_0x52f63f);}}}else{logger['error'](_0x036d('0x34'),_0x52f63f);}};exports[_0x036d('0x35')]=function(_0x2830f8){var _0x1bb4bf=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2830f8['state']=0xd;_0x2830f8[_0x036d('0x36')]=_0x036d('0x37');_0x2830f8['starttime']=_0x1bb4bf;_0x2830f8['responsetime']=_0x1bb4bf;_0x2830f8[_0x036d('0x38')]=_0x1bb4bf;};exports[_0x036d('0x39')]=function(_0x53cbbf,_0x199411,_0x2f1db0){var _0x202a64=moment()['format'](_0x036d('0x3a'));_0x53cbbf[_0x036d('0x3b')]=_0x199411;_0x53cbbf[_0x036d('0x36')]=_0x2f1db0;_0x53cbbf[_0x036d('0x3c')]=_0x202a64;_0x53cbbf[_0x036d('0x3d')]=getSeconds(_0x53cbbf[_0x036d('0x3c')],_0x53cbbf[_0x036d('0x3e')]);};exports[_0x036d('0x3f')]=function(_0x4ac178,_0x347d06,_0x2bd5e7){_0x4ac178[_0x036d('0x40')]=_0x347d06;_0x4ac178['UserId']=_0x2bd5e7;};exports['logCustomer']=function(_0x2ceb49,_0xd189a6,_0x1d5eaf){var _0x384783=moment()[_0x036d('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x2ceb49[_0x036d('0x3b')]=_0xd189a6;_0x2ceb49[_0x036d('0x36')]=_0x1d5eaf;_0x2ceb49['responsetime']=_0x2ceb49[_0x036d('0x3c')]?_0x2ceb49['responsetime']:_0x384783;_0x2ceb49['endtime']=_0x2ceb49[_0x036d('0x38')]?_0x2ceb49[_0x036d('0x38')]:_0x384783;_0x2ceb49[_0x036d('0x3d')]=getSeconds(_0x2ceb49[_0x036d('0x3c')]||0x0,_0x2ceb49[_0x036d('0x3e')]||0x0);_0x2ceb49['talktime']=_0x2ceb49[_0x036d('0x41')]?getSeconds(_0x2ceb49[_0x036d('0x38')],_0x2ceb49['answertime']):0x0;};exports[_0x036d('0x42')]=function(_0x53dd2a){return _0x53dd2a===_0x036d('0x43');};exports[_0x036d('0x44')]=function(_0x47e6d6,_0x210b3e,_0x4ebe3c,_0x581ab4,_0x5dd4f8){var _0x52be55=_0x581ab4?_0x036d('0x45'):_0x47e6d6[_0x036d('0x46')];_0x52be55=_0x5dd4f8?_0x036d('0x47'):_0x52be55;return{'actionid':_0x47e6d6[_0x036d('0x48')],'action':_0x036d('0x49'),'channel':_0x47e6d6[_0x036d('0x4a')],'callerid':util[_0x036d('0x12')](_0x036d('0x13'),_0x52be55,_0x47e6d6[_0x036d('0x4b')]),'Exten':_0x036d('0x26'),'Context':_0x036d('0x4c'),'Priority':'1','variable':_0x4ebe3c,'timeout':(_0x210b3e[_0x036d('0x4d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x47e6d6[_0x036d('0x48')]};};exports[_0x036d('0x4e')]=function(_0x41db85){return _0x41db85[_0x036d('0x4f')]+_0x41db85[_0x036d('0x50')]+_0x41db85[_0x036d('0x51')];};exports[_0x036d('0x52')]=function(_0x3c6dae){var _0x2fd483=_[_0x036d('0x53')](_0x3c6dae);_0x2fd483[_0x036d('0x3b')]=0xf;_0x2fd483[_0x036d('0x36')]=_0x036d('0x54');return _0x2fd483;};exports[_0x036d('0x55')]=function(_0x5da008,_0x284cd8,_0x362aac){var _0x37f86a={};_0x37f86a[_0x284cd8]=_0x5da008[_0x284cd8];_0x37f86a[_0x036d('0x56')]=![];_0x37f86a[_0x036d('0x57')]=moment()[_0x036d('0x58')](_0x362aac,_0x036d('0x59'))[_0x036d('0x12')](_0x036d('0x3a'));_0x37f86a['ContactId']=_0x5da008[_0x036d('0x19')];_0x37f86a[_0x036d('0x5a')]=_0x5da008[_0x036d('0x5a')];_0x37f86a[_0x036d('0x1b')]=_0x5da008[_0x036d('0x1b')]||undefined;return _0x37f86a;};exports[_0x036d('0x5b')]=function(_0x1f019a,_0x3448b5){if(!_[_0x036d('0x31')](_0x1f019a)){if(_0x1f019a[_0x036d('0x5c')]>0x0){_0x1f019a[_0x036d('0x5c')]-=0x1;}else{logger['error'](_0x3448b5,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x036d('0xa')](_0x3448b5,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x036d('0x5d')]=function(_0x13da80){if(_0x13da80<=0x0){return!![];}return![];};exports[_0x036d('0x5e')]=function(_0x90c9bf,_0x251e00){_0x90c9bf[_0x036d('0x5f')]=_0x251e00;_0x90c9bf['name']=_0x90c9bf[_0x036d('0x60')];_0x90c9bf[_0x036d('0x61')]=_0x90c9bf[_0x036d('0x4a')];return _0x90c9bf;};exports[_0x036d('0x62')]=function(_0x5bf683){var _0x261556={};_0x261556[_0x036d('0x60')]=_0x5bf683[_0x036d('0x60')];_0x261556[_0x036d('0x61')]=_0x5bf683[_0x036d('0x4a')];_0x261556[_0x036d('0x48')]=_0x5bf683['uniqueid'];return _0x261556;};exports[_0x036d('0x63')]=function(_0x131721){var _0xeeae8e=[];for(var _0x250d23 in _0x131721){if(_0x131721[_0x036d('0x29')](_0x250d23)){if(!_[_0x036d('0x31')](_0x131721[_0x250d23])&&_0x131721[_0x250d23]['state']==='not_inuse'&&_0x131721[_0x250d23][_0x036d('0x64')]===_0x036d('0x65')){_0xeeae8e[_0x036d('0x66')](_0x131721[_0x250d23]['id']);}}}return _0xeeae8e;};exports[_0x036d('0x67')]=function(_0x55a874){var _0xcc4410=moment()[_0x036d('0x5')](0x0);var _0x12adb6=moment(_0x55a874)[_0x036d('0x5')](0x0);return _0xcc4410['diff'](_0x12adb6,_0x036d('0x68'));};exports[_0x036d('0x69')]=function(_0x13fda4){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x13fda4['ContactId'],'ListId':_0x13fda4[_0x036d('0x5a')],'VoiceQueueId':_0x13fda4[_0x036d('0x1b')]||undefined,'CampaignId':_0x13fda4[_0x036d('0x6a')]||undefined};};exports[_0x036d('0x6b')]=function(_0x29400c){if(_0x29400c===_0x036d('0x48')||_0x29400c===_0x036d('0x6c')||_0x29400c===_0x036d('0x60')||_0x29400c===_0x036d('0x6d')||_0x29400c===_0x036d('0x6e')||_0x29400c==='dialAnswer'||_0x29400c==='membername'||_0x29400c===_0x036d('0x4a')||_0x29400c===_0x036d('0x46')||_0x29400c===_0x036d('0x56')||_0x29400c==='calleridnum'||_0x29400c===_0x036d('0x57')||_0x29400c==='countbusyretry'||_0x29400c===_0x036d('0x50')||_0x29400c===_0x036d('0x51')||_0x29400c===_0x036d('0x6f')||_0x29400c===_0x036d('0x70')||_0x29400c===_0x036d('0x71')||_0x29400c==='callbackat'||_0x29400c===_0x036d('0x72')||_0x29400c==='ContactId'||_0x29400c===_0x036d('0x5a')||_0x29400c===_0x036d('0x73')||_0x29400c==='VoiceQueueId'||_0x29400c===_0x036d('0x74')||_0x29400c===_0x036d('0x75')||_0x29400c==='xmd-queue'||_0x29400c==='xmd-phone'||_0x29400c==='xmd-listid'||_0x29400c===_0x036d('0x76')||_0x29400c==='xmd-dialtimeout'||_0x29400c==='xmd-dialoptions'||_0x29400c===_0x036d('0x77')||_0x29400c===_0x036d('0x78')||_0x29400c===_0x036d('0x79')||_0x29400c===_0x036d('0x7a')||_0x29400c==='xmd-callerid'||_0x29400c==='xmd-agiafter'||_0x29400c===_0x036d('0x7b')||_0x29400c===_0x036d('0x7c')||_0x29400c==='rtpaudioqosbridged'||_0x29400c===_0x036d('0x7d')||_0x29400c===_0x036d('0x7e')||_0x29400c===_0x036d('0x7f')||_0x29400c===_0x036d('0x80')||_0x29400c===_0x036d('0x81')||_0x29400c==='rtpaudioqosrttbridged'||_0x29400c===_0x036d('0x7c')||_0x29400c===_0x036d('0x82')||_0x29400c==='rtpaudioqosjitter'||_0x29400c===_0x036d('0x7e')||_0x29400c===_0x036d('0x7f')||_0x29400c===_0x036d('0x80')||_0x29400c===_0x036d('0x81')||_0x29400c===_0x036d('0x83')||_0x29400c===_0x036d('0x84')||_0x29400c===_0x036d('0x85')||_0x29400c==='state'||_0x29400c==='statedesc'){return![];}return!![];};exports['getCallerIdRandom']=function(_0xdb96f8,_0x3958fb){var _0x428ea9,_0xf34e0,_0x45a6b9;if(_0x3958fb<=0x0){_0x3958fb=0x1;}_0x428ea9=new RegExp('\x5cw{0,'+_0x3958fb+'}$');_0xf34e0=Math[_0x036d('0x86')](0xa,_0x3958fb-0x1);_0x45a6b9=Math[_0x036d('0x86')](0xa,_0x3958fb)-0x1;return util['format']('%s',_[_0x036d('0x87')](_0xdb96f8,_0x428ea9,_[_0x036d('0x88')](_0xf34e0,_0x45a6b9)));};exports[_0x036d('0x89')]=function(_0x2fe4f8){var _0x31890d=_0x2fe4f8[_0x036d('0x8a')](/"(.*?)"/);return _0x31890d?_0x31890d[0x1]:_0x2fe4f8;};exports['extractCalleridNumber']=function(_0x24f945){var _0xa08e33=_0x24f945[_0x036d('0x8a')](/<(.*?)>/);return _0xa08e33?_0xa08e33[0x1]:_0x24f945;};
\ No newline at end of file
index e55d73b..1ab5a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb91a=['voicequeuechannelredirect','queueadd','string','boolean','queueremove','queuepause','reload','voicechannel','voicequeuechannelhangup'];(function(_0x14981d,_0x2e1321){var _0x4c9a5e=function(_0x365345){while(--_0x365345){_0x14981d['push'](_0x14981d['shift']());}};_0x4c9a5e(++_0x2e1321);}(_0xb91a,0xf4));var _0xab91=function(_0x8e90bf,_0x153c1d){_0x8e90bf=_0x8e90bf-0x0;var _0x553c3e=_0xb91a[_0x8e90bf];return _0x553c3e;};'use strict';exports[_0xab91('0x0')]={'queue':{'type':_0xab91('0x1'),'required':!![]},'interface':{'type':_0xab91('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0xab91('0x2'),'required':![]}};exports[_0xab91('0x3')]={'queue':{'type':_0xab91('0x1'),'required':!![]},'interface':{'type':_0xab91('0x1'),'required':!![]}};exports[_0xab91('0x4')]={'interface':{'type':_0xab91('0x1'),'required':!![]},'paused':{'type':_0xab91('0x2')},'reason':{'type':_0xab91('0x1'),'required':![]}};exports[_0xab91('0x5')]={'module':{'type':_0xab91('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xab91('0x1'),'required':!![]}};exports[_0xab91('0x6')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':'string'},'format':{'type':'string'},'mixmonitorid':{'type':_0xab91('0x1')}};exports[_0xab91('0x7')]={'uniqueid':{'type':_0xab91('0x1'),'required':!![]}};exports[_0xab91('0x8')]={'uniqueid':{'type':_0xab91('0x1'),'required':!![]},'exten':{'type':_0xab91('0x1'),'required':!![]},'context':{'type':_0xab91('0x1')}};
\ No newline at end of file
+var _0xbd50=['number','boolean','queueremove','reload','voicequeuechannel','voicequeuechannelredirect','queueadd','string'];(function(_0x3b4437,_0x133f45){var _0x4dc61a=function(_0x33b217){while(--_0x33b217){_0x3b4437['push'](_0x3b4437['shift']());}};_0x4dc61a(++_0x133f45);}(_0xbd50,0x196));var _0x0bd5=function(_0x39b8d,_0x56d0b9){_0x39b8d=_0x39b8d-0x0;var _0x1e56bc=_0xbd50[_0x39b8d];return _0x1e56bc;};'use strict';exports[_0x0bd5('0x0')]={'queue':{'type':_0x0bd5('0x1'),'required':!![]},'interface':{'type':_0x0bd5('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x0bd5('0x2'),'required':![]},'paused':{'type':_0x0bd5('0x3'),'required':![]}};exports[_0x0bd5('0x4')]={'queue':{'type':_0x0bd5('0x1'),'required':!![]},'interface':{'type':_0x0bd5('0x1'),'required':!![]}};exports['queuepause']={'interface':{'type':'string','required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x0bd5('0x1'),'required':![]}};exports[_0x0bd5('0x5')]={'module':{'type':_0x0bd5('0x1'),'required':![]}};exports[_0x0bd5('0x6')]={'uniqueid':{'type':_0x0bd5('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0x0bd5('0x1')},'format':{'type':_0x0bd5('0x1')},'mixmonitorid':{'type':_0x0bd5('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x0bd5('0x1'),'required':!![]}};exports[_0x0bd5('0x7')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':_0x0bd5('0x1'),'required':!![]},'context':{'type':_0x0bd5('0x1')}};
\ No newline at end of file
index 65faf6d..72e9f93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf99a=['queuecallercompleteAt','queuecallerabandonAt','queuecallerjoinAt','queuecallercomplete','queuecallerleaveAt','duration','disposition','ANSWERED','initVoiceExtensions','voiceExtensions','initFaxAccounts','bluebird','lodash','moment','../model/telephone','../model/trunk','../model/voiceQueue','../model/template','../model/campaign','../model/voiceExtension','../model/freshdeskAccount','../model/sugarcrmAccount','../model/deskAccount','../model/faxAccount','agents','telephones','trunks','triggers','campaigns','outbound','channels','queueChannels','outboundChannels','timers','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','interface','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','length','isNil','isUndefined','initTrunks','initVoiceQueues','voiceQueues','initTriggers','templates','zendeskAccounts','initSalesforceAccounts','freshdeskAccounts','initZohoAccounts','initDeskAccounts','initVtigerAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','uniqueid','queue','queuecallerexit','unmanaged','abandoned','diff','seconds'];(function(_0x146907,_0x541dcb){var _0x47e370=function(_0x1b7984){while(--_0x1b7984){_0x146907['push'](_0x146907['shift']());}};_0x47e370(++_0x541dcb);}(_0xf99a,0x177));var _0xaf99=function(_0x1aa757,_0x3d4515){_0x1aa757=_0x1aa757-0x0;var _0x65d7dd=_0xf99a[_0x1aa757];return _0x65d7dd;};'use strict';var BPromise=require(_0xaf99('0x0'));var util=require('util');var _=require(_0xaf99('0x1'));var moment=require(_0xaf99('0x2'));var Agent=require('../model/agent');var Telephone=require(_0xaf99('0x3'));var Trunk=require(_0xaf99('0x4'));var VoiceQueue=require(_0xaf99('0x5'));var Trigger=require('../model/trigger');var Template=require(_0xaf99('0x6'));var Campaign=require(_0xaf99('0x7'));var VoiceExtension=require(_0xaf99('0x8'));var ZendeskAccount=require('../model/zendeskAccount');var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require(_0xaf99('0x9'));var SugarcrmAccount=require(_0xaf99('0xa'));var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require(_0xaf99('0xb'));var VtigerAccount=require('../model/vtigerAccount');var FaxAccount=require(_0xaf99('0xc'));var Realtime=function(){this[_0xaf99('0xd')]={};this[_0xaf99('0xe')]={};this[_0xaf99('0xf')]={};this['voiceQueues']={};this[_0xaf99('0x10')]={};this[_0xaf99('0x11')]={};this['templates']={};this[_0xaf99('0x12')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0xaf99('0x13')]={};this[_0xaf99('0x14')]={};this[_0xaf99('0x15')]={};this[_0xaf99('0x16')]={};this['zendeskAccounts']={};this[_0xaf99('0x17')]={};this[_0xaf99('0x18')]={};this['freshdeskAccounts']={};this[_0xaf99('0x19')]={};this[_0xaf99('0x1a')]={};this[_0xaf99('0x1b')]={};this[_0xaf99('0x1c')]={};};function freeIsNotKey(_0x41435f,_0x2358e8,_0x41cb78){var _0x2f164e=_[_0xaf99('0x1d')](_0x41435f,function(_0x4d7bac,_0x1f1411){return _0x4d7bac[_0x41cb78];});for(var _0x8f6e77 in _0x2358e8){if(_0x2358e8[_0xaf99('0x1e')](_0x8f6e77)){if(!_0x2f164e[_0x8f6e77]){delete _0x2358e8[_0x8f6e77];}}}}function freeIsNotKeySip(_0x825796,_0x113d2d){var _0xa54241=_[_0xaf99('0x1d')](_0x825796,function(_0x141b93,_0x3c0ebf){return util[_0xaf99('0x1f')](_0xaf99('0x20'),_0x141b93[_0xaf99('0x21')]);});for(var _0x52ed24 in _0x113d2d){if(_0x113d2d['hasOwnProperty'](_0x52ed24)){if(!_0xa54241[_0x52ed24]){delete _0x113d2d[_0x52ed24];}}}}function freeIsNotKeyAgent(_0x1cf514,_0x137b4f){var _0x145e21=_[_0xaf99('0x1d')](_0x1cf514,function(_0x29aab8,_0x4d8e9b){var _0xacdbe1=_['isNil'](_0x29aab8[_0xaf99('0x22')])?util[_0xaf99('0x1f')](_0xaf99('0x20'),_0x29aab8['name']):_0x29aab8[_0xaf99('0x22')];return _0xacdbe1;});for(var _0x1467ba in _0x137b4f){if(_0x137b4f[_0xaf99('0x1e')](_0x1467ba)){if(!_0x145e21[_0x1467ba]){delete _0x137b4f[_0x1467ba];}}}}function clearVoiceCallReports(_0x2dd4d5){_0x2dd4d5[_0xaf99('0x23')]=0x0;_0x2dd4d5[_0xaf99('0x24')]=0x0;_0x2dd4d5[_0xaf99('0x25')]=0x0;_0x2dd4d5[_0xaf99('0x26')]=0x0;_0x2dd4d5[_0xaf99('0x27')]=0x0;}function clearCampaigns(_0x48ac64){if(!_[_0xaf99('0x28')](_0x48ac64)){for(var _0x269561 in _0x48ac64){if(_0x48ac64[_0xaf99('0x1e')](_0x269561)){_0x48ac64[_0x269561][_0xaf99('0x29')]=0x0;_0x48ac64[_0x269561][_0xaf99('0x2a')]=0x0;}}}}function clearVoiceQueues(_0x7bea6c){if(!_['isEmpty'](_0x7bea6c)){for(var _0x56dcd5 in _0x7bea6c){if(_0x7bea6c[_0xaf99('0x1e')](_0x56dcd5)){_0x7bea6c[_0x56dcd5][_0xaf99('0x23')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x24')]=0x0;_0x7bea6c[_0x56dcd5]['unmanaged']=0x0;_0x7bea6c[_0x56dcd5]['abandoned']=0x0;_0x7bea6c[_0x56dcd5]['sumHoldTime']=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x26')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x27')]=0x0;_0x7bea6c[_0x56dcd5]['outboundAnswerAgiCallsDay']=0x0;_0x7bea6c[_0x56dcd5]['outboundNoAnswerCallsDay']=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x2b')]=0x0;_0x7bea6c[_0x56dcd5]['outboundCongestionCallsDay']=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x2c')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x2d')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x2e')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x2f')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x30')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x31')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x32')]=0x0;_0x7bea6c[_0x56dcd5]['outboundReCallsDay']=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x33')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x34')]=0x0;_0x7bea6c[_0x56dcd5][_0xaf99('0x35')]=!![];}}}}Realtime[_0xaf99('0x36')][_0xaf99('0x37')]=function(_0x2fe728,_0x172b2b){for(var _0x3f81bd in _0x172b2b){if(_0x2fe728[_0xaf99('0x1e')](_0x3f81bd)){_0x2fe728[_0x3f81bd]=_0x172b2b[_0x3f81bd];}}};Realtime[_0xaf99('0x36')]['initAgents']=function(){var _0x5d2eaa=this;return function(_0x5d5aeb){if(_0x5d5aeb){freeIsNotKeyAgent(_0x5d5aeb,_0x5d2eaa[_0xaf99('0xd')]);for(var _0x1191e9=0x0,_0x5bab4c={},_0x3858b2={};_0x1191e9<_0x5d5aeb[_0xaf99('0x38')];_0x1191e9+=0x1){_0x5bab4c=_0x5d5aeb[_0x1191e9];var _0x21891b=_[_0xaf99('0x39')](_0x5bab4c[_0xaf99('0x22')])?util[_0xaf99('0x1f')](_0xaf99('0x20'),_0x5bab4c[_0xaf99('0x21')]):_0x5bab4c['interface'];if(_['isUndefined'](_0x5d2eaa[_0xaf99('0xd')][_0x21891b])){_0x5d2eaa[_0xaf99('0xd')][_0x21891b]=new Agent(_0x5bab4c);}else{_0x5d2eaa['mergeFromDatabase'](_0x5d2eaa[_0xaf99('0xd')][_0x21891b],_0x5bab4c);}}}return _0x5d2eaa[_0xaf99('0xd')];};};Realtime[_0xaf99('0x36')]['initTelephones']=function(){var _0x46cd44=this;return function(_0x61f801){if(_0x61f801){freeIsNotKeySip(_0x61f801,_0x46cd44['telephones']);for(var _0x467703=0x0,_0xcbeb={},_0xc653a3={};_0x467703<_0x61f801[_0xaf99('0x38')];_0x467703+=0x1){_0xcbeb=_0x61f801[_0x467703];if(_[_0xaf99('0x3a')](_0x46cd44[_0xaf99('0xe')][util[_0xaf99('0x1f')](_0xaf99('0x20'),_0xcbeb[_0xaf99('0x21')])])){_0x46cd44[_0xaf99('0xe')][util[_0xaf99('0x1f')](_0xaf99('0x20'),_0xcbeb['name'])]=new Telephone(_0xcbeb);}else{_0x46cd44[_0xaf99('0x37')](_0x46cd44[_0xaf99('0xe')][util[_0xaf99('0x1f')](_0xaf99('0x20'),_0xcbeb[_0xaf99('0x21')])],_0xcbeb);}}}return _0x46cd44['telephones'];};};Realtime[_0xaf99('0x36')][_0xaf99('0x3b')]=function(){var _0x18a43e=this;return function(_0x44aa07){if(_0x44aa07){freeIsNotKeySip(_0x44aa07,_0x18a43e[_0xaf99('0xf')]);for(var _0x10ea43=0x0,_0x1a157a={},_0x1de7e0={};_0x10ea43<_0x44aa07[_0xaf99('0x38')];_0x10ea43+=0x1){_0x1a157a=_0x44aa07[_0x10ea43];if(_[_0xaf99('0x3a')](_0x18a43e['trunks'][util[_0xaf99('0x1f')](_0xaf99('0x20'),_0x1a157a['name'])])){_0x18a43e['trunks'][util[_0xaf99('0x1f')](_0xaf99('0x20'),_0x1a157a[_0xaf99('0x21')])]=new Trunk(_0x1a157a);}else{_0x18a43e[_0xaf99('0x37')](_0x18a43e[_0xaf99('0xf')][util[_0xaf99('0x1f')]('SIP/%s',_0x1a157a[_0xaf99('0x21')])],_0x1a157a);}}}return _0x18a43e[_0xaf99('0xf')];};};Realtime[_0xaf99('0x36')][_0xaf99('0x3c')]=function(){var _0x182bae=this;return function(_0x36e407){if(_0x36e407){freeIsNotKey(_0x36e407,_0x182bae['voiceQueues'],_0xaf99('0x21'));for(var _0x1f9004=0x0,_0x210906={},_0x4acd90={};_0x1f9004<_0x36e407[_0xaf99('0x38')];_0x1f9004+=0x1){_0x210906=_0x36e407[_0x1f9004];if(_[_0xaf99('0x3a')](_0x182bae[_0xaf99('0x3d')][_0x210906[_0xaf99('0x21')]])){_0x182bae[_0xaf99('0x3d')][_0x210906['name']]=new VoiceQueue(_0x210906);}else{_0x182bae[_0xaf99('0x37')](_0x182bae[_0xaf99('0x3d')][_0x210906[_0xaf99('0x21')]],_0x210906);}}}return _0x182bae[_0xaf99('0x3d')];};};Realtime[_0xaf99('0x36')][_0xaf99('0x3e')]=function(){var _0x550089=this;return function(_0x2160e4){if(_0x2160e4){freeIsNotKey(_0x2160e4,_0x550089[_0xaf99('0x10')],'id');for(var _0xff9d77=0x0,_0x30c85f={},_0x100b43={};_0xff9d77<_0x2160e4['length'];_0xff9d77+=0x1){_0x30c85f=_0x2160e4[_0xff9d77];if(_[_0xaf99('0x3a')](_0x550089[_0xaf99('0x10')][_0x30c85f['id']])){_0x550089[_0xaf99('0x10')][_0x30c85f['id']]=new Trigger(_0x30c85f);}else{_0x550089[_0xaf99('0x37')](_0x550089[_0xaf99('0x10')][_0x30c85f['id']],_0x30c85f);}}}return _0x550089[_0xaf99('0x10')];};};Realtime[_0xaf99('0x36')]['initTemplates']=function(){var _0x431973=this;return function(_0x59b6cb){if(_0x59b6cb){freeIsNotKey(_0x59b6cb,_0x431973['templates'],'id');for(var _0x5083c2=0x0,_0x3c756e={},_0x4ff26e={};_0x5083c2<_0x59b6cb['length'];_0x5083c2+=0x1){_0x3c756e=_0x59b6cb[_0x5083c2];if(_['isUndefined'](_0x431973[_0xaf99('0x3f')][_0x3c756e['id']])){_0x431973[_0xaf99('0x3f')][_0x3c756e['id']]=new Template(_0x3c756e);}else{_0x431973[_0xaf99('0x37')](_0x431973[_0xaf99('0x3f')][_0x3c756e['id']],_0x3c756e);}}}return _0x431973['templates'];};};Realtime[_0xaf99('0x36')]['initZendeskAccounts']=function(){var _0x2ed8a2=this;return function(_0x3e10a2){if(_0x3e10a2){freeIsNotKey(_0x3e10a2,_0x2ed8a2['zendeskAccounts'],'id');for(var _0x19bb86=0x0,_0x135429={},_0x5adf41={};_0x19bb86<_0x3e10a2[_0xaf99('0x38')];_0x19bb86+=0x1){_0x135429=_0x3e10a2[_0x19bb86];if(_[_0xaf99('0x3a')](_0x2ed8a2[_0xaf99('0x40')][_0x135429['id']])){_0x2ed8a2[_0xaf99('0x40')][_0x135429['id']]=new ZendeskAccount(_0x135429);}else{_0x2ed8a2[_0xaf99('0x37')](_0x2ed8a2[_0xaf99('0x40')][_0x135429['id']],_0x135429);}}}return _0x2ed8a2[_0xaf99('0x40')];};};Realtime[_0xaf99('0x36')][_0xaf99('0x41')]=function(){var _0x2c9ce9=this;return function(_0x114f34){if(_0x114f34){freeIsNotKey(_0x114f34,_0x2c9ce9[_0xaf99('0x17')],'id');for(var _0x2614bb=0x0,_0x4301dc={},_0x2826d6={};_0x2614bb<_0x114f34['length'];_0x2614bb+=0x1){_0x4301dc=_0x114f34[_0x2614bb];if(_[_0xaf99('0x3a')](_0x2c9ce9[_0xaf99('0x17')][_0x4301dc['id']])){_0x2c9ce9['salesforceAccounts'][_0x4301dc['id']]=new SalesforceAccount(_0x4301dc);}else{_0x2c9ce9[_0xaf99('0x37')](_0x2c9ce9[_0xaf99('0x17')][_0x4301dc['id']],_0x4301dc);}}}return _0x2c9ce9[_0xaf99('0x17')];};};Realtime[_0xaf99('0x36')]['initFreshdeskAccounts']=function(){var _0x56bd57=this;return function(_0x13347a){if(_0x13347a){freeIsNotKey(_0x13347a,_0x56bd57[_0xaf99('0x42')],'id');for(var _0x1b6ff1=0x0,_0x471bb2={},_0x443339={};_0x1b6ff1<_0x13347a[_0xaf99('0x38')];_0x1b6ff1+=0x1){_0x471bb2=_0x13347a[_0x1b6ff1];if(_[_0xaf99('0x3a')](_0x56bd57[_0xaf99('0x42')][_0x471bb2['id']])){_0x56bd57[_0xaf99('0x42')][_0x471bb2['id']]=new FreshdeskAccount(_0x471bb2);}else{_0x56bd57[_0xaf99('0x37')](_0x56bd57['freshdeskAccounts'][_0x471bb2['id']],_0x471bb2);}}}return _0x56bd57[_0xaf99('0x42')];};};Realtime[_0xaf99('0x36')][_0xaf99('0x43')]=function(){var _0x1261c5=this;return function(_0x525720){if(_0x525720){freeIsNotKey(_0x525720,_0x1261c5[_0xaf99('0x19')],'id');for(var _0x4f6d30=0x0,_0x4cfb15={},_0x87af7b={};_0x4f6d30<_0x525720[_0xaf99('0x38')];_0x4f6d30+=0x1){_0x4cfb15=_0x525720[_0x4f6d30];if(_[_0xaf99('0x3a')](_0x1261c5['zohoAccounts'][_0x4cfb15['id']])){_0x1261c5[_0xaf99('0x19')][_0x4cfb15['id']]=new ZohoAccount(_0x4cfb15);}else{_0x1261c5[_0xaf99('0x37')](_0x1261c5[_0xaf99('0x19')][_0x4cfb15['id']],_0x4cfb15);}}}return _0x1261c5['zohoAccounts'];};};Realtime[_0xaf99('0x36')][_0xaf99('0x44')]=function(){var _0x1f9b00=this;return function(_0x1fc528){if(_0x1fc528){freeIsNotKey(_0x1fc528,_0x1f9b00[_0xaf99('0x1a')],'id');for(var _0x55e85d=0x0,_0x4cb9ab={},_0x473ccb={};_0x55e85d<_0x1fc528['length'];_0x55e85d+=0x1){_0x4cb9ab=_0x1fc528[_0x55e85d];if(_['isUndefined'](_0x1f9b00['deskAccounts'][_0x4cb9ab['id']])){_0x1f9b00[_0xaf99('0x1a')][_0x4cb9ab['id']]=new DeskAccount(_0x4cb9ab);}else{_0x1f9b00[_0xaf99('0x37')](_0x1f9b00[_0xaf99('0x1a')][_0x4cb9ab['id']],_0x4cb9ab);}}}return _0x1f9b00[_0xaf99('0x1a')];};};Realtime[_0xaf99('0x36')]['initSugarcrmAccounts']=function(){var _0x1f5f86=this;return function(_0x3f9b52){if(_0x3f9b52){freeIsNotKey(_0x3f9b52,_0x1f5f86[_0xaf99('0x18')],'id');for(var _0x5e6dd0=0x0,_0x361a4e={},_0x35d879={};_0x5e6dd0<_0x3f9b52[_0xaf99('0x38')];_0x5e6dd0+=0x1){_0x361a4e=_0x3f9b52[_0x5e6dd0];if(_[_0xaf99('0x3a')](_0x1f5f86[_0xaf99('0x18')][_0x361a4e['id']])){_0x1f5f86[_0xaf99('0x18')][_0x361a4e['id']]=new SugarcrmAccount(_0x361a4e);}else{_0x1f5f86['mergeFromDatabase'](_0x1f5f86[_0xaf99('0x18')][_0x361a4e['id']],_0x361a4e);}}}return _0x1f5f86[_0xaf99('0x18')];};};Realtime['prototype'][_0xaf99('0x45')]=function(){var _0x535c78=this;return function(_0x4b2712){if(_0x4b2712){freeIsNotKey(_0x4b2712,_0x535c78['vtigerAccounts'],'id');for(var _0x5bec85=0x0,_0x137961={},_0x34e2da={};_0x5bec85<_0x4b2712['length'];_0x5bec85+=0x1){_0x137961=_0x4b2712[_0x5bec85];if(_[_0xaf99('0x3a')](_0x535c78[_0xaf99('0x1b')][_0x137961['id']])){_0x535c78[_0xaf99('0x1b')][_0x137961['id']]=new VtigerAccount(_0x137961);}else{_0x535c78[_0xaf99('0x37')](_0x535c78['vtigerAccounts'][_0x137961['id']],_0x137961);}}}return _0x535c78[_0xaf99('0x1b')];};};Realtime[_0xaf99('0x36')][_0xaf99('0x46')]=function(){var _0x525786=this;return function(_0x55a26d){for(var _0x516bb9=0x0;_0x516bb9<_0x55a26d[_0xaf99('0x38')];_0x516bb9+=0x1){_[_0xaf99('0x47')](_0x525786[_0xaf99('0x3d')][_0x55a26d[_0x516bb9]['name']],_0x55a26d[_0x516bb9]);}return _0x525786[_0xaf99('0x3d')];};};Realtime['prototype'][_0xaf99('0x48')]=function(){var _0x142f7a=this;return function(_0x2d2e40){clearVoiceQueues(_0x142f7a[_0xaf99('0x3d')]);if(_0x2d2e40){_0x2d2e40=_['groupBy'](_0x2d2e40,_0xaf99('0x49'));for(var _0x2c607c in _0x2d2e40){if(_0x2d2e40[_0xaf99('0x1e')](_0x2c607c)){var _0x396b7b={};for(var _0x5eca29=0x0;_0x5eca29<_0x2d2e40[_0x2c607c][_0xaf99('0x38')];_0x5eca29+=0x1){var _0x5b23b0=_0x2d2e40[_0x2c607c][_0x5eca29][_0xaf99('0x4a')];if(_0x142f7a['voiceQueues'][_0x5b23b0]){if(_0x2d2e40[_0x2c607c][_0x5eca29][_0xaf99('0x4b')]){_0x142f7a['voiceQueues'][_0x5b23b0][_0xaf99('0x4c')]+=0x1;}if(_0x2d2e40[_0x2c607c][_0x5eca29]['queuecallerabandon']){_0x142f7a['voiceQueues'][_0x5b23b0][_0xaf99('0x4d')]+=0x1;}_0x142f7a[_0xaf99('0x3d')][_0x5b23b0][_0xaf99('0x25')]+=moment(_0x2d2e40[_0x2c607c][_0x5eca29]['queuecallerleaveAt'])[_0xaf99('0x4e')](moment(_0x2d2e40[_0x2c607c][_0x5eca29]['queuecallerjoinAt']),_0xaf99('0x4f'))||0x0;if(_0x5eca29===_0x2d2e40[_0x2c607c][_0xaf99('0x38')]-0x1){_0x142f7a['voiceQueues'][_0x5b23b0]['sumDuration']+=moment(_0x2d2e40[_0x2c607c][_0x5eca29][_0xaf99('0x50')]||_0x2d2e40[_0x2c607c][_0x5eca29][_0xaf99('0x51')]||_0x2d2e40[_0x2c607c][_0x5eca29]['queuecallerexitAt'])[_0xaf99('0x4e')](moment(_0x2d2e40[_0x2c607c][_0x5eca29][_0xaf99('0x52')]),'seconds')||0x0;_0x142f7a[_0xaf99('0x3d')][_0x5b23b0][_0xaf99('0x23')]+=0x1;if(_0x2d2e40[_0x2c607c][_0x5eca29][_0xaf99('0x53')]){_0x142f7a['voiceQueues'][_0x5b23b0][_0xaf99('0x24')]+=0x1;_0x142f7a[_0xaf99('0x3d')][_0x5b23b0]['sumBillable']+=moment(_0x2d2e40[_0x2c607c][_0x5eca29][_0xaf99('0x50')])[_0xaf99('0x4e')](moment(_0x2d2e40[_0x2c607c][_0x5eca29][_0xaf99('0x54')]),_0xaf99('0x4f'))||0x0;}}else{_0x142f7a['voiceQueues'][_0x5b23b0][_0xaf99('0x26')]+=_0x142f7a[_0xaf99('0x3d')][_0x5b23b0][_0xaf99('0x25')]||0x0;}}}}}}return _0x142f7a[_0xaf99('0x3d')];};};Realtime[_0xaf99('0x36')]['initVoiceCallReports']=function(){var _0x2bd028=this;return function(_0x192c4d){clearVoiceCallReports(_0x2bd028[_0xaf99('0x12')]);if(_0x192c4d){for(var _0x2b1194=0x0;_0x2b1194<_0x192c4d[_0xaf99('0x38')];_0x2b1194+=0x1){_0x2bd028['outbound'][_0xaf99('0x23')]+=0x1;_0x2bd028[_0xaf99('0x12')][_0xaf99('0x26')]+=_0x192c4d[_0x2b1194][_0xaf99('0x55')];if(_0x192c4d[_0x2b1194][_0xaf99('0x56')]===_0xaf99('0x57')){_0x2bd028[_0xaf99('0x12')][_0xaf99('0x24')]+=0x1;_0x2bd028['outbound'][_0xaf99('0x25')]+=_0x192c4d[_0x2b1194][_0xaf99('0x55')]-_0x192c4d[_0x2b1194]['billableseconds']||0x0;_0x2bd028[_0xaf99('0x12')][_0xaf99('0x27')]+=_0x192c4d[_0x2b1194]['billableseconds'];}}}return _0x2bd028['outbound'];};};Realtime[_0xaf99('0x36')]['initCampaigns']=function(){var _0x320ab5=this;return function(_0x4eab22){if(_0x4eab22){freeIsNotKey(_0x4eab22,_0x320ab5[_0xaf99('0x11')],_0xaf99('0x21'));for(var _0x4900ff=0x0,_0xf6efb1={};_0x4900ff<_0x4eab22[_0xaf99('0x38')];_0x4900ff+=0x1){_0xf6efb1=_0x4eab22[_0x4900ff];if(_[_0xaf99('0x3a')](_0x320ab5[_0xaf99('0x11')][_0xf6efb1[_0xaf99('0x21')]])){_0x320ab5[_0xaf99('0x11')][_0xf6efb1['name']]=new Campaign(_0xf6efb1);}else{_0x320ab5[_0xaf99('0x37')](_0x320ab5['campaigns'][_0xf6efb1[_0xaf99('0x21')]],_0xf6efb1);}}}return _0x320ab5[_0xaf99('0x11')];};};Realtime[_0xaf99('0x36')][_0xaf99('0x58')]=function(){var _0x401e82=this;return function(_0x325a95){if(_0x325a95){freeIsNotKey(_0x325a95,_0x401e82['voiceExtensions'],'id');for(var _0x145b34=0x0,_0xa37c7e={};_0x145b34<_0x325a95[_0xaf99('0x38')];_0x145b34+=0x1){_0xa37c7e=_0x325a95[_0x145b34];if(_[_0xaf99('0x3a')](_0x401e82['voiceExtensions'][_0xa37c7e['id']])){_0x401e82[_0xaf99('0x59')][_0xa37c7e['id']]=new VoiceExtension(_0xa37c7e);}else{_0x401e82[_0xaf99('0x37')](_0x401e82[_0xaf99('0x59')][_0xa37c7e['id']],_0xa37c7e);}}}return _0x401e82[_0xaf99('0x59')];};};Realtime[_0xaf99('0x36')]['initCampaignHopperHistory']=function(){var _0x1c814f=this;return function(_0x462653){clearCampaigns(_0x1c814f[_0xaf99('0x11')]);for(var _0x1808ec=0x0;_0x1808ec<_0x462653[_0xaf99('0x38')];_0x1808ec+=0x1){_['merge'](_0x1c814f[_0xaf99('0x11')][_0x462653[_0x1808ec][_0xaf99('0x21')]],_0x462653[_0x1808ec]);}return _0x1c814f[_0xaf99('0x11')];};};Realtime['prototype'][_0xaf99('0x5a')]=function(){var _0x3e23b5=this;return function(_0x15d251){if(_0x15d251){freeIsNotKey(_0x15d251,_0x3e23b5[_0xaf99('0x1c')],'id');for(var _0x56221e=0x0,_0x41d349={},_0x522ebc={};_0x56221e<_0x15d251[_0xaf99('0x38')];_0x56221e+=0x1){_0x41d349=_0x15d251[_0x56221e];if(_[_0xaf99('0x3a')](_0x3e23b5['faxAccounts'][_0x41d349['id']])){_0x3e23b5[_0xaf99('0x1c')][_0x41d349['id']]=new FaxAccount(_0x41d349);}else{_0x3e23b5['mergeFromDatabase'](_0x3e23b5[_0xaf99('0x1c')][_0x41d349['id']],_0x41d349);}}}return _0x3e23b5[_0xaf99('0x1c')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0xd14f=['outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','isUndefined','initTelephones','initTrunks','length','initVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','zohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initVoiceQueueHopperHistory','merge','uniqueid','queue','queuecallerexit','queuecallerabandon','diff','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','queuecallerleaveAt','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','initVoiceExtensions','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','faxAccounts','exports','bluebird','util','lodash','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/vtigerAccount','agents','telephones','trunks','voiceQueues','triggers','templates','outbound','channels','queueChannels','outboundChannels','timers','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','deskAccounts','mapKeys','format','SIP/%s','hasOwnProperty','isNil','interface','name','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay'];(function(_0x6810d0,_0x4565c3){var _0x568796=function(_0x20bb42){while(--_0x20bb42){_0x6810d0['push'](_0x6810d0['shift']());}};_0x568796(++_0x4565c3);}(_0xd14f,0x104));var _0xfd14=function(_0x3f15d1,_0x1e8587){_0x3f15d1=_0x3f15d1-0x0;var _0x596831=_0xd14f[_0x3f15d1];return _0x596831;};'use strict';var BPromise=require(_0xfd14('0x0'));var util=require(_0xfd14('0x1'));var _=require(_0xfd14('0x2'));var moment=require('moment');var Agent=require(_0xfd14('0x3'));var Telephone=require(_0xfd14('0x4'));var Trunk=require(_0xfd14('0x5'));var VoiceQueue=require(_0xfd14('0x6'));var Trigger=require(_0xfd14('0x7'));var Template=require(_0xfd14('0x8'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0xfd14('0x9'));var ZendeskAccount=require(_0xfd14('0xa'));var SalesforceAccount=require(_0xfd14('0xb'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0xfd14('0xc'));var ZohoAccount=require(_0xfd14('0xd'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xfd14('0xe'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xfd14('0xf')]={};this[_0xfd14('0x10')]={};this[_0xfd14('0x11')]={};this[_0xfd14('0x12')]={};this[_0xfd14('0x13')]={};this['campaigns']={};this[_0xfd14('0x14')]={};this[_0xfd14('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0xfd14('0x16')]={};this[_0xfd14('0x17')]={};this[_0xfd14('0x18')]={};this[_0xfd14('0x19')]={};this[_0xfd14('0x1a')]={};this[_0xfd14('0x1b')]={};this[_0xfd14('0x1c')]={};this[_0xfd14('0x1d')]={};this['zohoAccounts']={};this[_0xfd14('0x1e')]={};this['vtigerAccounts']={};this['faxAccounts']={};};function freeIsNotKey(_0x45bbe8,_0x577b3e,_0x43762a){var _0x4cc0ae=_[_0xfd14('0x1f')](_0x45bbe8,function(_0x16de7a,_0x113c7e){return _0x16de7a[_0x43762a];});for(var _0xeee1e2 in _0x577b3e){if(_0x577b3e['hasOwnProperty'](_0xeee1e2)){if(!_0x4cc0ae[_0xeee1e2]){delete _0x577b3e[_0xeee1e2];}}}}function freeIsNotKeySip(_0x25b344,_0x2acd83){var _0xe87097=_['mapKeys'](_0x25b344,function(_0x383e86,_0x82d87c){return util[_0xfd14('0x20')](_0xfd14('0x21'),_0x383e86['name']);});for(var _0x1af027 in _0x2acd83){if(_0x2acd83[_0xfd14('0x22')](_0x1af027)){if(!_0xe87097[_0x1af027]){delete _0x2acd83[_0x1af027];}}}}function freeIsNotKeyAgent(_0x3c1f9d,_0x2018bf){var _0xa7e99=_['mapKeys'](_0x3c1f9d,function(_0x30b9bf,_0x472573){var _0x41fcfd=_[_0xfd14('0x23')](_0x30b9bf[_0xfd14('0x24')])?util[_0xfd14('0x20')](_0xfd14('0x21'),_0x30b9bf[_0xfd14('0x25')]):_0x30b9bf[_0xfd14('0x24')];return _0x41fcfd;});for(var _0x379164 in _0x2018bf){if(_0x2018bf[_0xfd14('0x22')](_0x379164)){if(!_0xa7e99[_0x379164]){delete _0x2018bf[_0x379164];}}}}function clearVoiceCallReports(_0x61c91e){_0x61c91e[_0xfd14('0x26')]=0x0;_0x61c91e[_0xfd14('0x27')]=0x0;_0x61c91e[_0xfd14('0x28')]=0x0;_0x61c91e[_0xfd14('0x29')]=0x0;_0x61c91e[_0xfd14('0x2a')]=0x0;}function clearCampaigns(_0x3ce8c7){if(!_[_0xfd14('0x2b')](_0x3ce8c7)){for(var _0xbc7f9b in _0x3ce8c7){if(_0x3ce8c7[_0xfd14('0x22')](_0xbc7f9b)){_0x3ce8c7[_0xbc7f9b][_0xfd14('0x2c')]=0x0;_0x3ce8c7[_0xbc7f9b]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x2f61b3){if(!_[_0xfd14('0x2b')](_0x2f61b3)){for(var _0x8bd041 in _0x2f61b3){if(_0x2f61b3[_0xfd14('0x22')](_0x8bd041)){_0x2f61b3[_0x8bd041]['total']=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x27')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x2d')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x2e')]=0x0;_0x2f61b3[_0x8bd041]['sumHoldTime']=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x29')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x2a')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x2f')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x30')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x31')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x32')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x33')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x34')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x35')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x36')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x37')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x38')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x39')]=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x3a')]=0x0;_0x2f61b3[_0x8bd041]['outboundAnswerAgiCallsDay']=0x0;_0x2f61b3[_0x8bd041]['outboundAnswerCallsDay']=0x0;_0x2f61b3[_0x8bd041][_0xfd14('0x3b')]=!![];}}}}Realtime[_0xfd14('0x3c')][_0xfd14('0x3d')]=function(_0x52c299,_0x21602c){for(var _0x79437 in _0x21602c){if(_0x52c299['hasOwnProperty'](_0x79437)){_0x52c299[_0x79437]=_0x21602c[_0x79437];}}};Realtime[_0xfd14('0x3c')][_0xfd14('0x3e')]=function(){var _0x4f5ca1=this;return function(_0xa6a77d){if(_0xa6a77d){freeIsNotKeyAgent(_0xa6a77d,_0x4f5ca1['agents']);for(var _0x531856=0x0,_0x3896f6={},_0x2b0a99={};_0x531856<_0xa6a77d['length'];_0x531856+=0x1){_0x3896f6=_0xa6a77d[_0x531856];var _0x3438a2=_[_0xfd14('0x23')](_0x3896f6['interface'])?util[_0xfd14('0x20')](_0xfd14('0x21'),_0x3896f6[_0xfd14('0x25')]):_0x3896f6[_0xfd14('0x24')];if(_[_0xfd14('0x3f')](_0x4f5ca1[_0xfd14('0xf')][_0x3438a2])){_0x4f5ca1[_0xfd14('0xf')][_0x3438a2]=new Agent(_0x3896f6);}else{_0x4f5ca1[_0xfd14('0x3d')](_0x4f5ca1[_0xfd14('0xf')][_0x3438a2],_0x3896f6);}}}return _0x4f5ca1[_0xfd14('0xf')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x40')]=function(){var _0x12d4e9=this;return function(_0x578be9){if(_0x578be9){freeIsNotKeySip(_0x578be9,_0x12d4e9[_0xfd14('0x10')]);for(var _0x2e6665=0x0,_0x1ecccf={},_0x36f031={};_0x2e6665<_0x578be9['length'];_0x2e6665+=0x1){_0x1ecccf=_0x578be9[_0x2e6665];if(_['isUndefined'](_0x12d4e9[_0xfd14('0x10')][util[_0xfd14('0x20')]('SIP/%s',_0x1ecccf['name'])])){_0x12d4e9['telephones'][util[_0xfd14('0x20')]('SIP/%s',_0x1ecccf[_0xfd14('0x25')])]=new Telephone(_0x1ecccf);}else{_0x12d4e9[_0xfd14('0x3d')](_0x12d4e9[_0xfd14('0x10')][util['format'](_0xfd14('0x21'),_0x1ecccf['name'])],_0x1ecccf);}}}return _0x12d4e9[_0xfd14('0x10')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x41')]=function(){var _0x22fde1=this;return function(_0x47fd10){if(_0x47fd10){freeIsNotKeySip(_0x47fd10,_0x22fde1[_0xfd14('0x11')]);for(var _0x51c1d4=0x0,_0x43254f={},_0x3511a6={};_0x51c1d4<_0x47fd10[_0xfd14('0x42')];_0x51c1d4+=0x1){_0x43254f=_0x47fd10[_0x51c1d4];if(_['isUndefined'](_0x22fde1[_0xfd14('0x11')][util['format'](_0xfd14('0x21'),_0x43254f['name'])])){_0x22fde1[_0xfd14('0x11')][util[_0xfd14('0x20')](_0xfd14('0x21'),_0x43254f[_0xfd14('0x25')])]=new Trunk(_0x43254f);}else{_0x22fde1[_0xfd14('0x3d')](_0x22fde1[_0xfd14('0x11')][util[_0xfd14('0x20')]('SIP/%s',_0x43254f[_0xfd14('0x25')])],_0x43254f);}}}return _0x22fde1[_0xfd14('0x11')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x43')]=function(){var _0x1e9bb1=this;return function(_0x16a826){if(_0x16a826){freeIsNotKey(_0x16a826,_0x1e9bb1[_0xfd14('0x12')],_0xfd14('0x25'));for(var _0x416823=0x0,_0x460104={},_0x29d2d1={};_0x416823<_0x16a826[_0xfd14('0x42')];_0x416823+=0x1){_0x460104=_0x16a826[_0x416823];if(_[_0xfd14('0x3f')](_0x1e9bb1[_0xfd14('0x12')][_0x460104[_0xfd14('0x25')]])){_0x1e9bb1['voiceQueues'][_0x460104[_0xfd14('0x25')]]=new VoiceQueue(_0x460104);}else{_0x1e9bb1[_0xfd14('0x3d')](_0x1e9bb1[_0xfd14('0x12')][_0x460104[_0xfd14('0x25')]],_0x460104);}}}return _0x1e9bb1[_0xfd14('0x12')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x44')]=function(){var _0x4c37a0=this;return function(_0x22e62e){if(_0x22e62e){freeIsNotKey(_0x22e62e,_0x4c37a0[_0xfd14('0x13')],'id');for(var _0x5d43e4=0x0,_0x65f501={},_0x3c46ce={};_0x5d43e4<_0x22e62e[_0xfd14('0x42')];_0x5d43e4+=0x1){_0x65f501=_0x22e62e[_0x5d43e4];if(_[_0xfd14('0x3f')](_0x4c37a0[_0xfd14('0x13')][_0x65f501['id']])){_0x4c37a0[_0xfd14('0x13')][_0x65f501['id']]=new Trigger(_0x65f501);}else{_0x4c37a0[_0xfd14('0x3d')](_0x4c37a0[_0xfd14('0x13')][_0x65f501['id']],_0x65f501);}}}return _0x4c37a0[_0xfd14('0x13')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x45')]=function(){var _0x5a5960=this;return function(_0x5d2f4e){if(_0x5d2f4e){freeIsNotKey(_0x5d2f4e,_0x5a5960[_0xfd14('0x14')],'id');for(var _0x577426=0x0,_0xc0abd={},_0x257d8b={};_0x577426<_0x5d2f4e[_0xfd14('0x42')];_0x577426+=0x1){_0xc0abd=_0x5d2f4e[_0x577426];if(_[_0xfd14('0x3f')](_0x5a5960['templates'][_0xc0abd['id']])){_0x5a5960[_0xfd14('0x14')][_0xc0abd['id']]=new Template(_0xc0abd);}else{_0x5a5960[_0xfd14('0x3d')](_0x5a5960[_0xfd14('0x14')][_0xc0abd['id']],_0xc0abd);}}}return _0x5a5960[_0xfd14('0x14')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x46')]=function(){var _0xaf162e=this;return function(_0x35fda3){if(_0x35fda3){freeIsNotKey(_0x35fda3,_0xaf162e[_0xfd14('0x1a')],'id');for(var _0x1df445=0x0,_0x5e3d66={},_0x48a8cd={};_0x1df445<_0x35fda3[_0xfd14('0x42')];_0x1df445+=0x1){_0x5e3d66=_0x35fda3[_0x1df445];if(_[_0xfd14('0x3f')](_0xaf162e['zendeskAccounts'][_0x5e3d66['id']])){_0xaf162e[_0xfd14('0x1a')][_0x5e3d66['id']]=new ZendeskAccount(_0x5e3d66);}else{_0xaf162e['mergeFromDatabase'](_0xaf162e[_0xfd14('0x1a')][_0x5e3d66['id']],_0x5e3d66);}}}return _0xaf162e[_0xfd14('0x1a')];};};Realtime['prototype'][_0xfd14('0x47')]=function(){var _0x495eed=this;return function(_0x16c10a){if(_0x16c10a){freeIsNotKey(_0x16c10a,_0x495eed[_0xfd14('0x1b')],'id');for(var _0x53898f=0x0,_0x1e8793={},_0x2d8d01={};_0x53898f<_0x16c10a['length'];_0x53898f+=0x1){_0x1e8793=_0x16c10a[_0x53898f];if(_[_0xfd14('0x3f')](_0x495eed[_0xfd14('0x1b')][_0x1e8793['id']])){_0x495eed['salesforceAccounts'][_0x1e8793['id']]=new SalesforceAccount(_0x1e8793);}else{_0x495eed['mergeFromDatabase'](_0x495eed['salesforceAccounts'][_0x1e8793['id']],_0x1e8793);}}}return _0x495eed[_0xfd14('0x1b')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x48')]=function(){var _0x272328=this;return function(_0x3c88b9){if(_0x3c88b9){freeIsNotKey(_0x3c88b9,_0x272328[_0xfd14('0x1d')],'id');for(var _0x4dee65=0x0,_0x435cb5={},_0x563cf0={};_0x4dee65<_0x3c88b9['length'];_0x4dee65+=0x1){_0x435cb5=_0x3c88b9[_0x4dee65];if(_['isUndefined'](_0x272328[_0xfd14('0x1d')][_0x435cb5['id']])){_0x272328[_0xfd14('0x1d')][_0x435cb5['id']]=new FreshdeskAccount(_0x435cb5);}else{_0x272328[_0xfd14('0x3d')](_0x272328['freshdeskAccounts'][_0x435cb5['id']],_0x435cb5);}}}return _0x272328['freshdeskAccounts'];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x49')]=function(){var _0xef023e=this;return function(_0x161378){if(_0x161378){freeIsNotKey(_0x161378,_0xef023e['zohoAccounts'],'id');for(var _0x27f1a0=0x0,_0x6e6419={},_0x21f216={};_0x27f1a0<_0x161378['length'];_0x27f1a0+=0x1){_0x6e6419=_0x161378[_0x27f1a0];if(_[_0xfd14('0x3f')](_0xef023e[_0xfd14('0x4a')][_0x6e6419['id']])){_0xef023e[_0xfd14('0x4a')][_0x6e6419['id']]=new ZohoAccount(_0x6e6419);}else{_0xef023e[_0xfd14('0x3d')](_0xef023e[_0xfd14('0x4a')][_0x6e6419['id']],_0x6e6419);}}}return _0xef023e[_0xfd14('0x4a')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x4b')]=function(){var _0x4283db=this;return function(_0x1e5010){if(_0x1e5010){freeIsNotKey(_0x1e5010,_0x4283db[_0xfd14('0x1e')],'id');for(var _0x4ef713=0x0,_0x42ee3e={},_0xf99f77={};_0x4ef713<_0x1e5010[_0xfd14('0x42')];_0x4ef713+=0x1){_0x42ee3e=_0x1e5010[_0x4ef713];if(_[_0xfd14('0x3f')](_0x4283db[_0xfd14('0x1e')][_0x42ee3e['id']])){_0x4283db[_0xfd14('0x1e')][_0x42ee3e['id']]=new DeskAccount(_0x42ee3e);}else{_0x4283db[_0xfd14('0x3d')](_0x4283db[_0xfd14('0x1e')][_0x42ee3e['id']],_0x42ee3e);}}}return _0x4283db['deskAccounts'];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x4c')]=function(){var _0x3454c3=this;return function(_0x84e03){if(_0x84e03){freeIsNotKey(_0x84e03,_0x3454c3['sugarcrmAccounts'],'id');for(var _0x1fa61f=0x0,_0x11288a={},_0x41461b={};_0x1fa61f<_0x84e03['length'];_0x1fa61f+=0x1){_0x11288a=_0x84e03[_0x1fa61f];if(_['isUndefined'](_0x3454c3['sugarcrmAccounts'][_0x11288a['id']])){_0x3454c3[_0xfd14('0x1c')][_0x11288a['id']]=new SugarcrmAccount(_0x11288a);}else{_0x3454c3[_0xfd14('0x3d')](_0x3454c3['sugarcrmAccounts'][_0x11288a['id']],_0x11288a);}}}return _0x3454c3['sugarcrmAccounts'];};};Realtime['prototype'][_0xfd14('0x4d')]=function(){var _0x257f9c=this;return function(_0x248719){if(_0x248719){freeIsNotKey(_0x248719,_0x257f9c['vtigerAccounts'],'id');for(var _0x129434=0x0,_0x2e1dce={},_0x472451={};_0x129434<_0x248719[_0xfd14('0x42')];_0x129434+=0x1){_0x2e1dce=_0x248719[_0x129434];if(_['isUndefined'](_0x257f9c[_0xfd14('0x4e')][_0x2e1dce['id']])){_0x257f9c['vtigerAccounts'][_0x2e1dce['id']]=new VtigerAccount(_0x2e1dce);}else{_0x257f9c[_0xfd14('0x3d')](_0x257f9c[_0xfd14('0x4e')][_0x2e1dce['id']],_0x2e1dce);}}}return _0x257f9c['vtigerAccounts'];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x4f')]=function(){var _0x47bfc6=this;return function(_0x3601f3){for(var _0x4786d9=0x0;_0x4786d9<_0x3601f3['length'];_0x4786d9+=0x1){_[_0xfd14('0x50')](_0x47bfc6[_0xfd14('0x12')][_0x3601f3[_0x4786d9][_0xfd14('0x25')]],_0x3601f3[_0x4786d9]);}return _0x47bfc6['voiceQueues'];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0xce9cea=this;return function(_0x4fc1e2){clearVoiceQueues(_0xce9cea['voiceQueues']);if(_0x4fc1e2){_0x4fc1e2=_['groupBy'](_0x4fc1e2,_0xfd14('0x51'));for(var _0x3e15ca in _0x4fc1e2){if(_0x4fc1e2[_0xfd14('0x22')](_0x3e15ca)){var _0x320fa7={};for(var _0x54f8e6=0x0;_0x54f8e6<_0x4fc1e2[_0x3e15ca][_0xfd14('0x42')];_0x54f8e6+=0x1){var _0x3679af=_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x52')];if(_0xce9cea[_0xfd14('0x12')][_0x3679af]){if(_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x53')]){_0xce9cea['voiceQueues'][_0x3679af][_0xfd14('0x2d')]+=0x1;}if(_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x54')]){_0xce9cea['voiceQueues'][_0x3679af][_0xfd14('0x2e')]+=0x1;}_0xce9cea[_0xfd14('0x12')][_0x3679af]['sumHoldTime']+=moment(_0x4fc1e2[_0x3e15ca][_0x54f8e6]['queuecallerleaveAt'])[_0xfd14('0x55')](moment(_0x4fc1e2[_0x3e15ca][_0x54f8e6]['queuecallerjoinAt']),_0xfd14('0x56'))||0x0;if(_0x54f8e6===_0x4fc1e2[_0x3e15ca][_0xfd14('0x42')]-0x1){_0xce9cea[_0xfd14('0x12')][_0x3679af][_0xfd14('0x29')]+=moment(_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x57')]||_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x58')]||_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x59')])[_0xfd14('0x55')](moment(_0x4fc1e2[_0x3e15ca][_0x54f8e6]['queuecallerjoinAt']),_0xfd14('0x56'))||0x0;_0xce9cea[_0xfd14('0x12')][_0x3679af]['total']+=0x1;if(_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x5a')]){_0xce9cea[_0xfd14('0x12')][_0x3679af]['answered']+=0x1;_0xce9cea[_0xfd14('0x12')][_0x3679af][_0xfd14('0x2a')]+=moment(_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x57')])['diff'](moment(_0x4fc1e2[_0x3e15ca][_0x54f8e6][_0xfd14('0x5b')]),_0xfd14('0x56'))||0x0;}}else{_0xce9cea[_0xfd14('0x12')][_0x3679af][_0xfd14('0x29')]+=_0xce9cea[_0xfd14('0x12')][_0x3679af][_0xfd14('0x28')]||0x0;}}}}}}return _0xce9cea[_0xfd14('0x12')];};};Realtime[_0xfd14('0x3c')]['initVoiceCallReports']=function(){var _0x418d67=this;return function(_0x471e20){clearVoiceCallReports(_0x418d67[_0xfd14('0x15')]);if(_0x471e20){for(var _0x7e511b=0x0;_0x7e511b<_0x471e20[_0xfd14('0x42')];_0x7e511b+=0x1){_0x418d67[_0xfd14('0x15')][_0xfd14('0x26')]+=0x1;_0x418d67[_0xfd14('0x15')][_0xfd14('0x29')]+=_0x471e20[_0x7e511b][_0xfd14('0x5c')];if(_0x471e20[_0x7e511b][_0xfd14('0x5d')]===_0xfd14('0x5e')){_0x418d67['outbound'][_0xfd14('0x27')]+=0x1;_0x418d67[_0xfd14('0x15')][_0xfd14('0x28')]+=_0x471e20[_0x7e511b][_0xfd14('0x5c')]-_0x471e20[_0x7e511b][_0xfd14('0x5f')]||0x0;_0x418d67[_0xfd14('0x15')][_0xfd14('0x2a')]+=_0x471e20[_0x7e511b][_0xfd14('0x5f')];}}}return _0x418d67['outbound'];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x60')]=function(){var _0x44946f=this;return function(_0x28e52c){if(_0x28e52c){freeIsNotKey(_0x28e52c,_0x44946f[_0xfd14('0x61')],'name');for(var _0x36ca2c=0x0,_0x3bcc6a={};_0x36ca2c<_0x28e52c[_0xfd14('0x42')];_0x36ca2c+=0x1){_0x3bcc6a=_0x28e52c[_0x36ca2c];if(_[_0xfd14('0x3f')](_0x44946f['campaigns'][_0x3bcc6a[_0xfd14('0x25')]])){_0x44946f[_0xfd14('0x61')][_0x3bcc6a['name']]=new Campaign(_0x3bcc6a);}else{_0x44946f[_0xfd14('0x3d')](_0x44946f[_0xfd14('0x61')][_0x3bcc6a['name']],_0x3bcc6a);}}}return _0x44946f['campaigns'];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x62')]=function(){var _0x1f58a7=this;return function(_0x44514b){if(_0x44514b){freeIsNotKey(_0x44514b,_0x1f58a7[_0xfd14('0x63')],'id');for(var _0x1cf352=0x0,_0x2278af={};_0x1cf352<_0x44514b['length'];_0x1cf352+=0x1){_0x2278af=_0x44514b[_0x1cf352];if(_[_0xfd14('0x3f')](_0x1f58a7[_0xfd14('0x63')][_0x2278af['id']])){_0x1f58a7['voiceExtensions'][_0x2278af['id']]=new VoiceExtension(_0x2278af);}else{_0x1f58a7['mergeFromDatabase'](_0x1f58a7[_0xfd14('0x63')][_0x2278af['id']],_0x2278af);}}}return _0x1f58a7[_0xfd14('0x63')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x64')]=function(){var _0x13e9a4=this;return function(_0x5d7ac1){clearCampaigns(_0x13e9a4['campaigns']);for(var _0x1cebfb=0x0;_0x1cebfb<_0x5d7ac1[_0xfd14('0x42')];_0x1cebfb+=0x1){_[_0xfd14('0x50')](_0x13e9a4[_0xfd14('0x61')][_0x5d7ac1[_0x1cebfb][_0xfd14('0x25')]],_0x5d7ac1[_0x1cebfb]);}return _0x13e9a4[_0xfd14('0x61')];};};Realtime[_0xfd14('0x3c')][_0xfd14('0x65')]=function(){var _0x31b1b4=this;return function(_0x242485){if(_0x242485){freeIsNotKey(_0x242485,_0x31b1b4['faxAccounts'],'id');for(var _0x5de47d=0x0,_0x2ed598={},_0x206fab={};_0x5de47d<_0x242485[_0xfd14('0x42')];_0x5de47d+=0x1){_0x2ed598=_0x242485[_0x5de47d];if(_[_0xfd14('0x3f')](_0x31b1b4[_0xfd14('0x66')][_0x2ed598['id']])){_0x31b1b4[_0xfd14('0x66')][_0x2ed598['id']]=new FaxAccount(_0x2ed598);}else{_0x31b1b4[_0xfd14('0x3d')](_0x31b1b4[_0xfd14('0x66')][_0x2ed598['id']],_0x2ed598);}}}return _0x31b1b4['faxAccounts'];};};module[_0xfd14('0x67')]=Realtime;
\ No newline at end of file
index 21437f0..52d7af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1555=['calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','monitor','monitors','createdAt','connectedlinename','membername','xcally-motion-dialer','voiceAgentReport','voiceDialReport','startsWith','indexOf','mobile','phone','substring','lastIndexOf','blindTransfer','attendedTransfer','exports','moment','util','../../../config/logger','ami','../ami','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','sync','findAgent','find','accountcode','name','isNil','interface','format','SIP/%s','prototype','voiceQueueReport','length','connectedlinenum','assigned','queuecallercomplete','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','destination','exten','type','dialer','lastapplication','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview'];(function(_0x43506e,_0x671bd7){var _0x88dd16=function(_0x4b243e){while(--_0x4b243e){_0x43506e['push'](_0x43506e['shift']());}};_0x88dd16(++_0x671bd7);}(_0x1555,0x1d6));var _0x5155=function(_0x3a8cb6,_0x1e6061){_0x3a8cb6=_0x3a8cb6-0x0;var _0x352f79=_0x1555[_0x3a8cb6];return _0x352f79;};'use strict';var BPromise=require('bluebird');var _=require('lodash');var moment=require(_0x5155('0x0'));var util=require(_0x5155('0x1'));var logger=require(_0x5155('0x2'))(_0x5155('0x3'));var ami=require(_0x5155('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x5155('0x5'));var RpcVoiceDialReport=require(_0x5155('0x6'));var RpcMemberReport=require(_0x5155('0x7'));var RpcVoiceQueueReport=require(_0x5155('0x8'));var RpcVoiceRecording=require('../rpc/voiceRecording');var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x5155('0x9'));var VoiceCallReport=require(_0x5155('0xa'));var VoiceAgentReport=require(_0x5155('0xb'));var VoiceDialReport=require(_0x5155('0xc'));var UserReport=require(_0x5155('0xd'));function Report(_0x554d3f){this[_0x5155('0xe')]=_0x554d3f;this[_0x5155('0xf')]=_0x554d3f[_0x5155('0xf')];this[_0x5155('0x10')]=_0x554d3f['telephones'];}Report['prototype'][_0x5155('0x11')]=function(_0x575df6){var _0x3b9010=new VoiceQueueReport(this[_0x5155('0xe')]);var _0x37e35b=new VoiceAgentReport(this['realtime']);var _0x38dee9=new VoiceDialReport(this[_0x5155('0xe')]);var _0x165947=new VoiceCallReport(this[_0x5155('0xe')]);var _0x2e487c=new UserReport(this[_0x5155('0xe')]);};Report['prototype'][_0x5155('0x12')]=function(_0x270906){var _0x5b5a42=undefined;_0x5b5a42=_[_0x5155('0x13')](this['agents'],function(_0x42da17){return _0x42da17[_0x5155('0x14')]==_0x270906||_0x42da17[_0x5155('0x15')]==_0x270906;});if(_[_0x5155('0x16')](_0x5b5a42)){var _0x41731c=_[_0x5155('0x13')](this[_0x5155('0x10')],function(_0x3f6079){return _0x3f6079[_0x5155('0x14')]==_0x270906||_0x3f6079[_0x5155('0x15')]==_0x270906;});if(_0x41731c){_0x5b5a42=_[_0x5155('0x13')](this[_0x5155('0xf')],function(_0xbb88c2){return _0xbb88c2[_0x5155('0x17')]==util[_0x5155('0x18')](_0x5155('0x19'),_0x41731c[_0x5155('0x15')]);});}}return _0x5b5a42;};Report[_0x5155('0x1a')][_0x5155('0x1b')]=function(_0x2d668e){for(var _0x2f5156=0x0;_0x2f5156<_0x2d668e[_0x5155('0x1c')];_0x2f5156+=0x1){var _0x1b644f=this['findAgent'](_0x2d668e[_0x2f5156][_0x5155('0x1d')]);if(_0x1b644f){_0x2d668e[_0x2f5156]['accountcode']=_0x1b644f[_0x5155('0x14')];_0x2d668e[_0x2f5156][_0x5155('0x1e')]=!![];_0x2d668e[_0x2f5156]['lastAssignedTo']=_0x1b644f[_0x5155('0x15')];_0x2d668e[_0x2f5156][_0x5155('0x17')]=_[_0x5155('0x16')](_0x1b644f[_0x5155('0x17')])?util['format']('SIP/%s',_0x1b644f[_0x5155('0x15')]):_0x1b644f['interface'];if(_0x2d668e[_0x2f5156][_0x5155('0x1f')]){_0x2d668e[_0x2f5156]['queuecallercompleteAt']=moment()[_0x5155('0x18')](_0x5155('0x20'));}if(_0x2d668e[_0x2f5156][_0x5155('0x21')]){_0x2d668e[_0x2f5156][_0x5155('0x22')]=moment()[_0x5155('0x18')](_0x5155('0x20'));}RpcMemberReport[_0x5155('0x1b')](_0x2d668e[_0x2f5156]);}RpcVoiceQueueReport[_0x5155('0x23')](_0x2d668e[_0x2f5156]);}};function extractCalleridNumber(_0x2c7abc){var _0x3e8809=_0x2c7abc[_0x5155('0x24')](/<(.*?)>/);return _0x3e8809?_0x3e8809[0x1]:_0x2c7abc;}Report[_0x5155('0x1a')]['voiceCallReport']=function(_0x300a5c){_0x300a5c['destination']=_0x300a5c[_0x5155('0x25')]||_0x300a5c[_0x5155('0x26')];if(_0x300a5c[_0x5155('0x27')]==_0x5155('0x28')){_0x300a5c[_0x5155('0x29')]=_0x5155('0x2a');_0x300a5c['lastdata']=_0x300a5c[_0x5155('0x2a')];if(_0x300a5c[_0x5155('0x2b')]==_0x5155('0x2c')){_0x300a5c[_0x5155('0x14')]='';_0x300a5c[_0x5155('0x25')]=extractCalleridNumber(_0x300a5c[_0x5155('0x2d')]);}else if(_0x300a5c[_0x5155('0x2b')]==_0x5155('0x2e')){if(_0x300a5c[_0x5155('0x25')]==_0x5155('0x2f')){_0x300a5c[_0x5155('0x25')]=extractCalleridNumber(_0x300a5c[_0x5155('0x30')]);_0x300a5c[_0x5155('0x31')]=_0x300a5c[_0x5155('0x32')];_0x300a5c[_0x5155('0x33')]=[_0x300a5c[_0x5155('0x34')],_0x300a5c[_0x5155('0x34')]=_0x300a5c['destinationchannel']][0x0];_0x300a5c['callerid']=_0x300a5c[_0x5155('0x30')];}else{_0x300a5c[_0x5155('0x25')]=_0x300a5c[_0x5155('0x31')];_0x300a5c[_0x5155('0x31')]=_0x300a5c[_0x5155('0x32')];if(_0x300a5c[_0x5155('0x35')]==_0x5155('0x36')){_0x300a5c[_0x5155('0x14')]=_0x300a5c[_0x5155('0x1d')];}else{_0x300a5c[_0x5155('0x14')]='';}}}}else{_0x300a5c[_0x5155('0x2d')]=util[_0x5155('0x18')](_0x5155('0x37'),_0x300a5c[_0x5155('0x38')],_0x300a5c[_0x5155('0x31')]);}RpcVoiceCallReport['create'](_0x300a5c);if(_0x300a5c[_0x5155('0x39')]){for(var _0x5e7221=0x0;_0x5e7221<_0x300a5c[_0x5155('0x3a')][_0x5155('0x1c')];_0x5e7221+=0x1){_0x300a5c['monitorFilename']=_0x300a5c[_0x5155('0x3a')][_0x5e7221]['filename'];_0x300a5c[_0x5155('0x3b')]=_0x300a5c[_0x5155('0x3a')][_0x5e7221][_0x5155('0x3b')];if(_0x300a5c['exten']==_0x5155('0x2f')){_0x300a5c[_0x5155('0x31')]=_0x300a5c[_0x5155('0x1d')];_0x300a5c[_0x5155('0x38')]=_0x300a5c[_0x5155('0x3c')];_0x300a5c['connectedlinenum']=_0x300a5c[_0x5155('0x14')];_0x300a5c[_0x5155('0x3c')]=_0x300a5c[_0x5155('0x3d')];_0x300a5c[_0x5155('0x26')]=_0x300a5c[_0x5155('0x32')];}else if(_0x300a5c[_0x5155('0x26')]==_0x5155('0x3e')){_0x300a5c[_0x5155('0x31')]=_0x300a5c['destination'];_0x300a5c[_0x5155('0x26')]=_0x300a5c['originatecalleridnum'];}RpcVoiceRecording[_0x5155('0x23')](_0x300a5c);}}};Report[_0x5155('0x1a')][_0x5155('0x3f')]=function(_0x34a2d4){RpcVoiceAgentReport[_0x5155('0x23')](_0x34a2d4);};Report[_0x5155('0x1a')][_0x5155('0x40')]=function(_0x624be8){RpcVoiceDialReport[_0x5155('0x23')](_0x624be8);var _0x46eb05=undefined;var _0x46855e=_0x624be8[_0x5155('0x34')];if(_[_0x5155('0x41')](_0x46855e,'Local')){var _0x1544fd=_0x46855e['substring'](_0x46855e[_0x5155('0x42')]('/')+0x1,_0x46855e['indexOf']('@'));_0x46eb05=_['find'](this[_0x5155('0xf')],function(_0x58cb46){return _0x58cb46[_0x5155('0x43')]==_0x1544fd||_0x58cb46[_0x5155('0x44')]==_0x1544fd||_0x58cb46['accountcode']==_0x1544fd;});}else{var _0x1544fd=_0x46855e[_0x5155('0x45')](_0x46855e[_0x5155('0x42')]('/')+0x1,_0x46855e[_0x5155('0x46')]('-'));_0x46eb05=this[_0x5155('0x12')](_0x1544fd);}if(_0x46eb05){_0x624be8[_0x5155('0x17')]=_[_0x5155('0x16')](_0x46eb05[_0x5155('0x17')])?util[_0x5155('0x18')](_0x5155('0x19'),_0x46eb05['name']):_0x46eb05[_0x5155('0x17')];_0x624be8['membername']=_0x46eb05[_0x5155('0x15')];_0x624be8[_0x5155('0x14')]=_0x46eb05[_0x5155('0x14')];RpcMemberReport['voiceDialReport'](_0x624be8);}};Report[_0x5155('0x1a')]['blindTransfer']=function(_0x5c4614){RpcVoiceTransferReport[_0x5155('0x47')](_0x5c4614);};Report[_0x5155('0x1a')][_0x5155('0x48')]=function(_0x514196){RpcVoiceTransferReport['attendedTransfer'](_0x514196);};module[_0x5155('0x49')]=Report;
\ No newline at end of file
+var _0x6a32=['interface','SIP/%s','queuecallercomplete','queuecallercompleteAt','format','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','create','match','voiceCallReport','destination','exten','type','dialer','lastapplication','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','monitor','monitorFilename','monitors','filename','createdAt','membername','voiceAgentReport','voiceDialReport','startsWith','Local','substring','indexOf','mobile','phone','blindTransfer','attendedTransfer','exports','bluebird','moment','util','ami','../ami','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','realtime','agents','telephones','prototype','findAgent','find','accountcode','isNil','name','voiceQueueReport','length','connectedlinenum','assigned','lastAssignedTo'];(function(_0x3adb8e,_0x247ca2){var _0x3eacdb=function(_0x127ddf){while(--_0x127ddf){_0x3adb8e['push'](_0x3adb8e['shift']());}};_0x3eacdb(++_0x247ca2);}(_0x6a32,0x79));var _0x26a3=function(_0xaad974,_0x396049){_0xaad974=_0xaad974-0x0;var _0x3801e9=_0x6a32[_0xaad974];return _0x3801e9;};'use strict';var BPromise=require(_0x26a3('0x0'));var _=require('lodash');var moment=require(_0x26a3('0x1'));var util=require(_0x26a3('0x2'));var logger=require('../../../config/logger')(_0x26a3('0x3'));var ami=require(_0x26a3('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x26a3('0x5'));var RpcVoiceDialReport=require(_0x26a3('0x6'));var RpcMemberReport=require(_0x26a3('0x7'));var RpcVoiceQueueReport=require(_0x26a3('0x8'));var RpcVoiceRecording=require(_0x26a3('0x9'));var RpcVoiceTransferReport=require(_0x26a3('0xa'));var VoiceQueueReport=require(_0x26a3('0xb'));var VoiceCallReport=require(_0x26a3('0xc'));var VoiceAgentReport=require(_0x26a3('0xd'));var VoiceDialReport=require(_0x26a3('0xe'));var UserReport=require('./userReport');function Report(_0x43e085){this[_0x26a3('0xf')]=_0x43e085;this[_0x26a3('0x10')]=_0x43e085[_0x26a3('0x10')];this[_0x26a3('0x11')]=_0x43e085[_0x26a3('0x11')];}Report['prototype']['sync']=function(_0x5c9b13){var _0x5e56d8=new VoiceQueueReport(this[_0x26a3('0xf')]);var _0x1cf2ad=new VoiceAgentReport(this[_0x26a3('0xf')]);var _0x46d632=new VoiceDialReport(this[_0x26a3('0xf')]);var _0x2edb7d=new VoiceCallReport(this[_0x26a3('0xf')]);var _0x2e405c=new UserReport(this['realtime']);};Report[_0x26a3('0x12')][_0x26a3('0x13')]=function(_0x240f9d){var _0x3d43dc=undefined;_0x3d43dc=_[_0x26a3('0x14')](this['agents'],function(_0x3ce43d){return _0x3ce43d[_0x26a3('0x15')]==_0x240f9d||_0x3ce43d['name']==_0x240f9d;});if(_[_0x26a3('0x16')](_0x3d43dc)){var _0x132e57=_[_0x26a3('0x14')](this[_0x26a3('0x11')],function(_0x59366a){return _0x59366a[_0x26a3('0x15')]==_0x240f9d||_0x59366a[_0x26a3('0x17')]==_0x240f9d;});if(_0x132e57){_0x3d43dc=_[_0x26a3('0x14')](this[_0x26a3('0x10')],function(_0x3bbc37){return _0x3bbc37['interface']==util['format']('SIP/%s',_0x132e57[_0x26a3('0x17')]);});}}return _0x3d43dc;};Report[_0x26a3('0x12')][_0x26a3('0x18')]=function(_0x1e35b1){for(var _0x26903a=0x0;_0x26903a<_0x1e35b1[_0x26a3('0x19')];_0x26903a+=0x1){var _0x5bf41a=this['findAgent'](_0x1e35b1[_0x26903a][_0x26a3('0x1a')]);if(_0x5bf41a){_0x1e35b1[_0x26903a][_0x26a3('0x15')]=_0x5bf41a['accountcode'];_0x1e35b1[_0x26903a][_0x26a3('0x1b')]=!![];_0x1e35b1[_0x26903a][_0x26a3('0x1c')]=_0x5bf41a[_0x26a3('0x17')];_0x1e35b1[_0x26903a][_0x26a3('0x1d')]=_[_0x26a3('0x16')](_0x5bf41a[_0x26a3('0x1d')])?util['format'](_0x26a3('0x1e'),_0x5bf41a[_0x26a3('0x17')]):_0x5bf41a[_0x26a3('0x1d')];if(_0x1e35b1[_0x26903a][_0x26a3('0x1f')]){_0x1e35b1[_0x26903a][_0x26a3('0x20')]=moment()[_0x26a3('0x21')](_0x26a3('0x22'));}if(_0x1e35b1[_0x26903a][_0x26a3('0x23')]){_0x1e35b1[_0x26903a]['queuecallerexitAt']=moment()[_0x26a3('0x21')](_0x26a3('0x22'));}RpcMemberReport[_0x26a3('0x18')](_0x1e35b1[_0x26903a]);}RpcVoiceQueueReport[_0x26a3('0x24')](_0x1e35b1[_0x26903a]);}};function extractCalleridNumber(_0x1f90eb){var _0x22d24e=_0x1f90eb[_0x26a3('0x25')](/<(.*?)>/);return _0x22d24e?_0x22d24e[0x1]:_0x1f90eb;}Report[_0x26a3('0x12')][_0x26a3('0x26')]=function(_0x2b02a0){_0x2b02a0[_0x26a3('0x27')]=_0x2b02a0['destination']||_0x2b02a0[_0x26a3('0x28')];if(_0x2b02a0[_0x26a3('0x29')]==_0x26a3('0x2a')){_0x2b02a0[_0x26a3('0x2b')]=_0x26a3('0x2c');_0x2b02a0['lastdata']=_0x2b02a0['queue'];if(_0x2b02a0[_0x26a3('0x2d')]==_0x26a3('0x2e')){_0x2b02a0[_0x26a3('0x15')]='';_0x2b02a0[_0x26a3('0x27')]=extractCalleridNumber(_0x2b02a0[_0x26a3('0x2f')]);}else if(_0x2b02a0[_0x26a3('0x2d')]==_0x26a3('0x30')){if(_0x2b02a0[_0x26a3('0x27')]==_0x26a3('0x31')){_0x2b02a0[_0x26a3('0x27')]=extractCalleridNumber(_0x2b02a0[_0x26a3('0x32')]);_0x2b02a0[_0x26a3('0x33')]=_0x2b02a0[_0x26a3('0x34')];_0x2b02a0[_0x26a3('0x35')]=[_0x2b02a0[_0x26a3('0x36')],_0x2b02a0[_0x26a3('0x36')]=_0x2b02a0[_0x26a3('0x35')]][0x0];_0x2b02a0[_0x26a3('0x2f')]=_0x2b02a0['calleridpreview'];}else{_0x2b02a0['destination']=_0x2b02a0[_0x26a3('0x33')];_0x2b02a0[_0x26a3('0x33')]=_0x2b02a0['originatecalleridnum'];if(_0x2b02a0[_0x26a3('0x37')]==_0x26a3('0x38')){_0x2b02a0[_0x26a3('0x15')]=_0x2b02a0[_0x26a3('0x1a')];}else{_0x2b02a0['accountcode']='';}}}}else{_0x2b02a0[_0x26a3('0x2f')]=util['format'](_0x26a3('0x39'),_0x2b02a0['calleridname'],_0x2b02a0['calleridnum']);}RpcVoiceCallReport[_0x26a3('0x24')](_0x2b02a0);if(_0x2b02a0[_0x26a3('0x3a')]){for(var _0x227c79=0x0;_0x227c79<_0x2b02a0['monitors'][_0x26a3('0x19')];_0x227c79+=0x1){_0x2b02a0[_0x26a3('0x3b')]=_0x2b02a0[_0x26a3('0x3c')][_0x227c79][_0x26a3('0x3d')];_0x2b02a0[_0x26a3('0x3e')]=_0x2b02a0[_0x26a3('0x3c')][_0x227c79]['createdAt'];if(_0x2b02a0['exten']==_0x26a3('0x31')){_0x2b02a0[_0x26a3('0x33')]=_0x2b02a0[_0x26a3('0x1a')];_0x2b02a0['calleridname']=_0x2b02a0['connectedlinename'];_0x2b02a0[_0x26a3('0x1a')]=_0x2b02a0['accountcode'];_0x2b02a0['connectedlinename']=_0x2b02a0[_0x26a3('0x3f')];_0x2b02a0[_0x26a3('0x28')]=_0x2b02a0[_0x26a3('0x34')];}else if(_0x2b02a0['exten']=='xcally-motion-dialer'){_0x2b02a0[_0x26a3('0x33')]=_0x2b02a0[_0x26a3('0x27')];_0x2b02a0['exten']=_0x2b02a0['originatecalleridnum'];}RpcVoiceRecording[_0x26a3('0x24')](_0x2b02a0);}}};Report[_0x26a3('0x12')][_0x26a3('0x40')]=function(_0x5f2c18){RpcVoiceAgentReport['create'](_0x5f2c18);};Report['prototype'][_0x26a3('0x41')]=function(_0x20a392){RpcVoiceDialReport[_0x26a3('0x24')](_0x20a392);var _0x4706de=undefined;var _0x3d4dc9=_0x20a392[_0x26a3('0x36')];if(_[_0x26a3('0x42')](_0x3d4dc9,_0x26a3('0x43'))){var _0x58f945=_0x3d4dc9[_0x26a3('0x44')](_0x3d4dc9['indexOf']('/')+0x1,_0x3d4dc9[_0x26a3('0x45')]('@'));_0x4706de=_[_0x26a3('0x14')](this[_0x26a3('0x10')],function(_0x38ec8e){return _0x38ec8e[_0x26a3('0x46')]==_0x58f945||_0x38ec8e[_0x26a3('0x47')]==_0x58f945||_0x38ec8e[_0x26a3('0x15')]==_0x58f945;});}else{var _0x58f945=_0x3d4dc9['substring'](_0x3d4dc9[_0x26a3('0x45')]('/')+0x1,_0x3d4dc9['lastIndexOf']('-'));_0x4706de=this[_0x26a3('0x13')](_0x58f945);}if(_0x4706de){_0x20a392['interface']=_[_0x26a3('0x16')](_0x4706de[_0x26a3('0x1d')])?util[_0x26a3('0x21')](_0x26a3('0x1e'),_0x4706de[_0x26a3('0x17')]):_0x4706de[_0x26a3('0x1d')];_0x20a392['membername']=_0x4706de[_0x26a3('0x17')];_0x20a392['accountcode']=_0x4706de['accountcode'];RpcMemberReport['voiceDialReport'](_0x20a392);}};Report[_0x26a3('0x12')]['blindTransfer']=function(_0x290a0d){RpcVoiceTransferReport[_0x26a3('0x48')](_0x290a0d);};Report[_0x26a3('0x12')]['attendedTransfer']=function(_0x30cadf){RpcVoiceTransferReport[_0x26a3('0x49')](_0x30cadf);};module[_0x26a3('0x4a')]=Report;
\ No newline at end of file
index a79a35b..7dd4530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aa0=['merge','actionid','trunk:%s','name','trunk:save','[syncRegistry][UserReport]','device','local','toLowerCase','inuse','stateTime','format','updateStatusRealtime','toNumber','telephone:%s','telephone:save','startsWith','Queue','Local','substring','indexOf','mobile','phone','error','[syncDeviceState][UserReport]','peer','peerstatus','address','status','exports','lodash','moment','bluebird','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','registry','bind','devicestatechange','syncDeviceState','syncPeerStatus','loopSyncRealTimeShow','resolve','then','actionDeviceStateList','actionSipPeerStatus','catch','[loopSyncRealTimeShow]','inspect','prototype','actionSipShowRegistry','emit','isNotNull','find','username','stateRegistry','state'];(function(_0x5e36d1,_0x471178){var _0x950b9e=function(_0x1872f3){while(--_0x1872f3){_0x5e36d1['push'](_0x5e36d1['shift']());}};_0x950b9e(++_0x471178);}(_0x9aa0,0xe7));var _0x09aa=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x9aa0[_0x24237f];return _0x48298e;};'use strict';var _=require(_0x09aa('0x0'));var moment=require(_0x09aa('0x1'));var BPromise=require(_0x09aa('0x2'));var util=require('util');var Redis=require(_0x09aa('0x3'));var config=require(_0x09aa('0x4'));var logger=require(_0x09aa('0x5'))(_0x09aa('0x6'));var ami=require(_0x09aa('0x7'));config[_0x09aa('0x8')]=_['defaults'](config[_0x09aa('0x8')],{'host':_0x09aa('0x9'),'port':0x18eb});var io=require(_0x09aa('0xa'))(new Redis(config[_0x09aa('0x8')]));function UserReport(_0x3fb291){this[_0x09aa('0xb')]=_0x3fb291[_0x09aa('0xb')];this[_0x09aa('0xc')]=_0x3fb291[_0x09aa('0xc')];this[_0x09aa('0xd')]=_0x3fb291[_0x09aa('0xd')];ami['on'](_0x09aa('0xe'),this[_0x09aa('0xf')]['bind'](this));ami['on'](_0x09aa('0x10'),this[_0x09aa('0xf')][_0x09aa('0x11')](this));ami['on'](_0x09aa('0x12'),this[_0x09aa('0x13')][_0x09aa('0x11')](this));ami['on']('peerstatus',this[_0x09aa('0x14')]['bind'](this));this[_0x09aa('0x15')]();return BPromise[_0x09aa('0x16')]()[_0x09aa('0x17')](ami['actionSipShowRegistry']())['then'](ami[_0x09aa('0x18')]())[_0x09aa('0x17')](ami[_0x09aa('0x19')]())[_0x09aa('0x1a')](loggerCatch(_0x09aa('0x1b')));}function loggerCatch(_0x464c8d){return function(_0x12a2f2){logger['error'](_0x464c8d,util[_0x09aa('0x1c')](_0x12a2f2,{'showHidden':![],'depth':null}));};}UserReport[_0x09aa('0x1d')][_0x09aa('0x15')]=function(){setInterval(function(){BPromise[_0x09aa('0x16')]()[_0x09aa('0x17')](ami[_0x09aa('0x1e')]())[_0x09aa('0x17')](ami['actionDeviceStateList']())[_0x09aa('0x17')](ami[_0x09aa('0x19')]())[_0x09aa('0x1a')](loggerCatch('[loopSyncRealTimeShow]'));},0x32c8);};UserReport[_0x09aa('0x1d')]['isNotNull']=function(_0x2d1365){return _0x2d1365!==null&&!_['isUndefined'](_0x2d1365);};UserReport[_0x09aa('0x1d')][_0x09aa('0x1f')]=function(_0x75d560,_0x57cdf7,_0x1e0198){io['to'](_0x75d560)[_0x09aa('0x1f')](_0x57cdf7,_0x1e0198);};UserReport['prototype']['syncRegistry']=function(_0xfe93e9){try{if(this[_0x09aa('0x20')](_0xfe93e9)){var _0x44b25b=_[_0x09aa('0x21')](this[_0x09aa('0xb')],{'registry':_0xfe93e9[_0x09aa('0x22')]});if(_0x44b25b){_0xfe93e9[_0x09aa('0x23')]=_0xfe93e9[_0x09aa('0x24')];_[_0x09aa('0x25')](_0x44b25b,_['omit'](_0xfe93e9,['event',_0x09aa('0x26'),_0x09aa('0x22'),_0x09aa('0x24')]));this[_0x09aa('0x1f')](util['format'](_0x09aa('0x27'),_0x44b25b[_0x09aa('0x28')]),_0x09aa('0x29'),_0x44b25b);}}}catch(_0x36c8c6){logger['error'](_0x09aa('0x2a'),util[_0x09aa('0x1c')](_0x36c8c6,{'showHidden':![],'depth':null}));}};UserReport[_0x09aa('0x1d')]['syncDeviceState']=function(_0x166a65){try{if(this[_0x09aa('0x20')](_0x166a65)){if(this['agents'][_0x166a65[_0x09aa('0x2b')]]){if(!this['agents'][_0x166a65[_0x09aa('0x2b')]][_0x09aa('0x2c')]||_0x166a65['state'][_0x09aa('0x2d')]()==_0x09aa('0x2e')){this['agents'][_0x166a65['device']]['local']=![];if(this[_0x09aa('0xc')][_0x166a65[_0x09aa('0x2b')]]['state']!==_0x166a65[_0x09aa('0x24')][_0x09aa('0x2d')]()){this[_0x09aa('0xc')][_0x166a65[_0x09aa('0x2b')]][_0x09aa('0x2f')]=_['toNumber'](moment()[_0x09aa('0x30')]('x'));}this[_0x09aa('0xc')][_0x166a65[_0x09aa('0x2b')]][_0x09aa('0x24')]=_0x166a65[_0x09aa('0x24')]['toLowerCase']();this[_0x09aa('0xc')][_0x166a65[_0x09aa('0x2b')]][_0x09aa('0x31')](_0x166a65);}}else if(this[_0x09aa('0xd')][_0x166a65[_0x09aa('0x2b')]]){if(this[_0x09aa('0xd')][_0x166a65[_0x09aa('0x2b')]]['state']!==_0x166a65[_0x09aa('0x24')][_0x09aa('0x2d')]()){this[_0x09aa('0xd')][_0x166a65[_0x09aa('0x2b')]][_0x09aa('0x2f')]=_[_0x09aa('0x32')](moment()[_0x09aa('0x30')]('x'));}this[_0x09aa('0xd')][_0x166a65[_0x09aa('0x2b')]]['state']=_0x166a65[_0x09aa('0x24')][_0x09aa('0x2d')]();this[_0x09aa('0x1f')](util['format'](_0x09aa('0x33'),this['telephones'][_0x166a65[_0x09aa('0x2b')]]['name']),_0x09aa('0x34'),this[_0x09aa('0xd')][_0x166a65[_0x09aa('0x2b')]]);}else if(this['trunks'][_0x166a65[_0x09aa('0x2b')]]){if(this[_0x09aa('0xb')][_0x166a65['device']]['state']!==_0x166a65[_0x09aa('0x24')][_0x09aa('0x2d')]()){this['trunks'][_0x166a65[_0x09aa('0x2b')]]['stateTime']=_[_0x09aa('0x32')](moment()[_0x09aa('0x30')]('x'));}this[_0x09aa('0xb')][_0x166a65[_0x09aa('0x2b')]]['state']=_0x166a65[_0x09aa('0x24')][_0x09aa('0x2d')]();this[_0x09aa('0x1f')](util[_0x09aa('0x30')](_0x09aa('0x27'),this[_0x09aa('0xb')][_0x166a65[_0x09aa('0x2b')]][_0x09aa('0x28')]),'trunk:save',this[_0x09aa('0xb')][_0x166a65[_0x09aa('0x2b')]]);}else if(_[_0x09aa('0x35')](_0x166a65['device'],_0x09aa('0x36'))){}else if(_[_0x09aa('0x35')](_0x166a65[_0x09aa('0x2b')],_0x09aa('0x37'))){var _0x1141eb=_0x166a65[_0x09aa('0x2b')];var _0x2b63a=_0x1141eb[_0x09aa('0x38')](_0x1141eb['indexOf']('/')+0x1,_0x1141eb[_0x09aa('0x39')]('@'));var _0x18a035=_[_0x09aa('0x21')](this[_0x09aa('0xc')],function(_0x25b973){return _0x25b973[_0x09aa('0x3a')]==_0x2b63a||_0x25b973[_0x09aa('0x3b')]==_0x2b63a||_0x25b973['accountcode']==_0x2b63a;});if(_0x18a035){if(_0x18a035['state']!==_0x166a65[_0x09aa('0x24')][_0x09aa('0x2d')]()){_0x18a035[_0x09aa('0x2f')]=_[_0x09aa('0x32')](moment()['format']('x'));}_0x18a035[_0x09aa('0x24')]=_0x166a65[_0x09aa('0x24')][_0x09aa('0x2d')]();_0x18a035['local']=!![];_0x18a035['updateStatusRealtime'](_0x166a65);}}else{}}}catch(_0x513f2b){logger[_0x09aa('0x3c')](_0x09aa('0x3d'),util[_0x09aa('0x1c')](_0x513f2b,{'showHidden':![],'depth':null}));}};UserReport[_0x09aa('0x1d')][_0x09aa('0x14')]=function(_0x4e2409){try{if(this[_0x09aa('0x20')](_0x4e2409)&&this[_0x09aa('0x20')](_0x4e2409['peerstatus'])){if(this[_0x09aa('0xc')][_0x4e2409[_0x09aa('0x3e')]]){if(!this[_0x09aa('0xc')][_0x4e2409[_0x09aa('0x3e')]][_0x09aa('0x2c')]||_0x4e2409[_0x09aa('0x3f')][_0x09aa('0x2d')]()=='registered'){this['agents'][_0x4e2409[_0x09aa('0x3e')]]['local']=![];this[_0x09aa('0xc')][_0x4e2409[_0x09aa('0x3e')]]['status']=_0x4e2409[_0x09aa('0x3f')][_0x09aa('0x2d')]();this['agents'][_0x4e2409[_0x09aa('0x3e')]]['address']=_0x4e2409[_0x09aa('0x40')];this[_0x09aa('0xc')][_0x4e2409[_0x09aa('0x3e')]][_0x09aa('0x31')](_0x4e2409);}}else if(this['telephones'][_0x4e2409['peer']]){this[_0x09aa('0xd')][_0x4e2409[_0x09aa('0x3e')]][_0x09aa('0x41')]=_0x4e2409[_0x09aa('0x3f')][_0x09aa('0x2d')]();this[_0x09aa('0xd')][_0x4e2409[_0x09aa('0x3e')]][_0x09aa('0x40')]=_0x4e2409[_0x09aa('0x40')];this[_0x09aa('0x1f')](util['format'](_0x09aa('0x33'),this['telephones'][_0x4e2409[_0x09aa('0x3e')]][_0x09aa('0x28')]),_0x09aa('0x34'),this['telephones'][_0x4e2409['peer']]);}else if(this[_0x09aa('0xb')][_0x4e2409['peer']]){this[_0x09aa('0xb')][_0x4e2409[_0x09aa('0x3e')]][_0x09aa('0x41')]=_0x4e2409[_0x09aa('0x3f')][_0x09aa('0x2d')]();this[_0x09aa('0xb')][_0x4e2409[_0x09aa('0x3e')]][_0x09aa('0x40')]=_0x4e2409[_0x09aa('0x40')];this[_0x09aa('0x1f')](util[_0x09aa('0x30')](_0x09aa('0x27'),this['trunks'][_0x4e2409['peer']][_0x09aa('0x28')]),_0x09aa('0x29'),this['trunks'][_0x4e2409[_0x09aa('0x3e')]]);}else{}}}catch(_0x3febde){logger[_0x09aa('0x3c')]('[syncPeerStatus][UserReport]',util['inspect'](_0x3febde,{'showHidden':![],'depth':null}));}};module[_0x09aa('0x42')]=UserReport;
\ No newline at end of file
+var _0x6de2=['../../../config/environment','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','loopSyncRealTimeShow','resolve','then','actionDeviceStateList','actionSipPeerStatus','catch','[loopSyncRealTimeShow]','inspect','actionSipShowRegistry','prototype','isNotNull','emit','find','stateRegistry','omit','event','actionid','username','state','format','trunk:%s','name','error','[syncRegistry][UserReport]','device','local','inuse','toLowerCase','stateTime','toNumber','updateStatusRealtime','telephone:%s','telephone:save','Local','substring','indexOf','mobile','phone','[syncDeviceState][UserReport]','peer','registered','address','status','trunk:save','exports','lodash','moment','bluebird','ioredis'];(function(_0x48ede2,_0x563842){var _0xeea134=function(_0x5990d5){while(--_0x5990d5){_0x48ede2['push'](_0x48ede2['shift']());}};_0xeea134(++_0x563842);}(_0x6de2,0x1ca));var _0x26de=function(_0x28c7c5,_0x1576b9){_0x28c7c5=_0x28c7c5-0x0;var _0x5930c0=_0x6de2[_0x28c7c5];return _0x5930c0;};'use strict';var _=require(_0x26de('0x0'));var moment=require(_0x26de('0x1'));var BPromise=require(_0x26de('0x2'));var util=require('util');var Redis=require(_0x26de('0x3'));var config=require(_0x26de('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x26de('0x5'));config[_0x26de('0x6')]=_[_0x26de('0x7')](config[_0x26de('0x6')],{'host':_0x26de('0x8'),'port':0x18eb});var io=require(_0x26de('0x9'))(new Redis(config[_0x26de('0x6')]));function UserReport(_0x57405f){this[_0x26de('0xa')]=_0x57405f[_0x26de('0xa')];this[_0x26de('0xb')]=_0x57405f[_0x26de('0xb')];this['telephones']=_0x57405f[_0x26de('0xc')];ami['on'](_0x26de('0xd'),this[_0x26de('0xe')][_0x26de('0xf')](this));ami['on'](_0x26de('0x10'),this[_0x26de('0xe')][_0x26de('0xf')](this));ami['on'](_0x26de('0x11'),this[_0x26de('0x12')]['bind'](this));ami['on'](_0x26de('0x13'),this[_0x26de('0x14')][_0x26de('0xf')](this));this[_0x26de('0x15')]();return BPromise[_0x26de('0x16')]()['then'](ami['actionSipShowRegistry']())[_0x26de('0x17')](ami[_0x26de('0x18')]())[_0x26de('0x17')](ami[_0x26de('0x19')]())[_0x26de('0x1a')](loggerCatch(_0x26de('0x1b')));}function loggerCatch(_0x401d7f){return function(_0x1b3d64){logger['error'](_0x401d7f,util[_0x26de('0x1c')](_0x1b3d64,{'showHidden':![],'depth':null}));};}UserReport['prototype'][_0x26de('0x15')]=function(){setInterval(function(){BPromise[_0x26de('0x16')]()['then'](ami[_0x26de('0x1d')]())[_0x26de('0x17')](ami['actionDeviceStateList']())[_0x26de('0x17')](ami[_0x26de('0x19')]())['catch'](loggerCatch(_0x26de('0x1b')));},0x32c8);};UserReport[_0x26de('0x1e')][_0x26de('0x1f')]=function(_0x1230ef){return _0x1230ef!==null&&!_['isUndefined'](_0x1230ef);};UserReport['prototype'][_0x26de('0x20')]=function(_0x1ffdcd,_0x5bda00,_0x4ed244){io['to'](_0x1ffdcd)['emit'](_0x5bda00,_0x4ed244);};UserReport[_0x26de('0x1e')][_0x26de('0xe')]=function(_0x307f74){try{if(this[_0x26de('0x1f')](_0x307f74)){var _0x3c7469=_[_0x26de('0x21')](this[_0x26de('0xa')],{'registry':_0x307f74['username']});if(_0x3c7469){_0x307f74[_0x26de('0x22')]=_0x307f74['state'];_['merge'](_0x3c7469,_[_0x26de('0x23')](_0x307f74,[_0x26de('0x24'),_0x26de('0x25'),_0x26de('0x26'),_0x26de('0x27')]));this[_0x26de('0x20')](util[_0x26de('0x28')](_0x26de('0x29'),_0x3c7469[_0x26de('0x2a')]),'trunk:save',_0x3c7469);}}}catch(_0x17a095){logger[_0x26de('0x2b')](_0x26de('0x2c'),util[_0x26de('0x1c')](_0x17a095,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x26de('0x12')]=function(_0x2af5d4){try{if(this[_0x26de('0x1f')](_0x2af5d4)){if(this[_0x26de('0xb')][_0x2af5d4[_0x26de('0x2d')]]){if(!this[_0x26de('0xb')][_0x2af5d4['device']][_0x26de('0x2e')]||_0x2af5d4['state']['toLowerCase']()==_0x26de('0x2f')){this[_0x26de('0xb')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x2e')]=![];if(this['agents'][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x27')]!==_0x2af5d4[_0x26de('0x27')][_0x26de('0x30')]()){this[_0x26de('0xb')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x31')]=_[_0x26de('0x32')](moment()['format']('x'));}this[_0x26de('0xb')][_0x2af5d4['device']][_0x26de('0x27')]=_0x2af5d4['state'][_0x26de('0x30')]();this[_0x26de('0xb')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x33')](_0x2af5d4);}}else if(this[_0x26de('0xc')][_0x2af5d4['device']]){if(this[_0x26de('0xc')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x27')]!==_0x2af5d4['state'][_0x26de('0x30')]()){this[_0x26de('0xc')][_0x2af5d4['device']]['stateTime']=_[_0x26de('0x32')](moment()[_0x26de('0x28')]('x'));}this[_0x26de('0xc')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x27')]=_0x2af5d4[_0x26de('0x27')]['toLowerCase']();this['emit'](util[_0x26de('0x28')](_0x26de('0x34'),this['telephones'][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x2a')]),_0x26de('0x35'),this['telephones'][_0x2af5d4[_0x26de('0x2d')]]);}else if(this['trunks'][_0x2af5d4['device']]){if(this[_0x26de('0xa')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x27')]!==_0x2af5d4[_0x26de('0x27')][_0x26de('0x30')]()){this[_0x26de('0xa')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x31')]=_[_0x26de('0x32')](moment()[_0x26de('0x28')]('x'));}this[_0x26de('0xa')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x27')]=_0x2af5d4[_0x26de('0x27')]['toLowerCase']();this[_0x26de('0x20')](util['format'](_0x26de('0x29'),this[_0x26de('0xa')][_0x2af5d4[_0x26de('0x2d')]][_0x26de('0x2a')]),'trunk:save',this[_0x26de('0xa')][_0x2af5d4[_0x26de('0x2d')]]);}else if(_['startsWith'](_0x2af5d4[_0x26de('0x2d')],'Queue')){}else if(_['startsWith'](_0x2af5d4[_0x26de('0x2d')],_0x26de('0x36'))){var _0x1d6be0=_0x2af5d4[_0x26de('0x2d')];var _0x59d620=_0x1d6be0[_0x26de('0x37')](_0x1d6be0[_0x26de('0x38')]('/')+0x1,_0x1d6be0[_0x26de('0x38')]('@'));var _0x410313=_['find'](this[_0x26de('0xb')],function(_0x3d92e4){return _0x3d92e4[_0x26de('0x39')]==_0x59d620||_0x3d92e4[_0x26de('0x3a')]==_0x59d620||_0x3d92e4['accountcode']==_0x59d620;});if(_0x410313){if(_0x410313[_0x26de('0x27')]!==_0x2af5d4[_0x26de('0x27')]['toLowerCase']()){_0x410313['stateTime']=_[_0x26de('0x32')](moment()[_0x26de('0x28')]('x'));}_0x410313['state']=_0x2af5d4['state'][_0x26de('0x30')]();_0x410313['local']=!![];_0x410313[_0x26de('0x33')](_0x2af5d4);}}else{}}}catch(_0x4cb6e5){logger[_0x26de('0x2b')](_0x26de('0x3b'),util[_0x26de('0x1c')](_0x4cb6e5,{'showHidden':![],'depth':null}));}};UserReport[_0x26de('0x1e')][_0x26de('0x14')]=function(_0x4462c7){try{if(this[_0x26de('0x1f')](_0x4462c7)&&this[_0x26de('0x1f')](_0x4462c7[_0x26de('0x13')])){if(this['agents'][_0x4462c7[_0x26de('0x3c')]]){if(!this[_0x26de('0xb')][_0x4462c7[_0x26de('0x3c')]][_0x26de('0x2e')]||_0x4462c7['peerstatus'][_0x26de('0x30')]()==_0x26de('0x3d')){this[_0x26de('0xb')][_0x4462c7[_0x26de('0x3c')]][_0x26de('0x2e')]=![];this[_0x26de('0xb')][_0x4462c7[_0x26de('0x3c')]]['status']=_0x4462c7[_0x26de('0x13')][_0x26de('0x30')]();this['agents'][_0x4462c7[_0x26de('0x3c')]]['address']=_0x4462c7['address'];this[_0x26de('0xb')][_0x4462c7[_0x26de('0x3c')]][_0x26de('0x33')](_0x4462c7);}}else if(this['telephones'][_0x4462c7[_0x26de('0x3c')]]){this[_0x26de('0xc')][_0x4462c7[_0x26de('0x3c')]]['status']=_0x4462c7[_0x26de('0x13')][_0x26de('0x30')]();this[_0x26de('0xc')][_0x4462c7[_0x26de('0x3c')]][_0x26de('0x3e')]=_0x4462c7[_0x26de('0x3e')];this[_0x26de('0x20')](util[_0x26de('0x28')]('telephone:%s',this[_0x26de('0xc')][_0x4462c7[_0x26de('0x3c')]][_0x26de('0x2a')]),_0x26de('0x35'),this[_0x26de('0xc')][_0x4462c7[_0x26de('0x3c')]]);}else if(this[_0x26de('0xa')][_0x4462c7[_0x26de('0x3c')]]){this[_0x26de('0xa')][_0x4462c7[_0x26de('0x3c')]][_0x26de('0x3f')]=_0x4462c7[_0x26de('0x13')][_0x26de('0x30')]();this[_0x26de('0xa')][_0x4462c7['peer']][_0x26de('0x3e')]=_0x4462c7[_0x26de('0x3e')];this['emit'](util[_0x26de('0x28')](_0x26de('0x29'),this[_0x26de('0xa')][_0x4462c7[_0x26de('0x3c')]][_0x26de('0x2a')]),_0x26de('0x40'),this[_0x26de('0xa')][_0x4462c7['peer']]);}else{}}}catch(_0x481c39){logger[_0x26de('0x2b')]('[syncPeerStatus][UserReport]',util[_0x26de('0x1c')](_0x481c39,{'showHidden':![],'depth':null}));}};module[_0x26de('0x41')]=UserReport;
\ No newline at end of file
index ad3f98b..6dcb857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63da=['ringtime','connect','agentconnectAt','agentcalledAt','custom:agentconnect','user:%s','user:agentconnect','CONNECT','error','syncMusicOnHoldStart','find','onhold','updateStatusRealtime','rejected','agentringnoanswerAt','custom:agentringnoanswer','RINGNOANSWER','position','originalposition','abandoned','custom:agentqueuecallerabandon','CALLERABANDON','transfer','reason','acw','acwTimeout','agentcompleteAt','cause','answered_elsewhere','custom:agentcomplete','user:agentcomplete','HANGUP','custom:voiceAgentReport','cause-txt','recalculate','complete','talktime','user:save','clear','ATTENDED','secondtransfereruniqueid','secondtransfererexten','secondtransferercontext','transfertargetchannel','transfererchannel','BLIND','transfereeuniqueid','extension','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','keys','variable','includes','value','exports','lodash','moment','../../../config/environment','../ami','defaults','localhost','socket.io-emitter','redis','voiceQueues','agents','channels','syncAgentCalled','agentconnect','syncAgentConnect','bind','agentringnoanswer','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstop','syncMusicOnHoldStop','prototype','format','queue','exten','join','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','diffTime','diff','interface','assign','calleridnum','emit','destchannel','calleridname','destcalleridname','accountcode','channel','uniqueid','destuniqueid','context','priority','inbound','membername','agent','called','variables','user:called','log','CALLED','stack','isNil','holdtime'];(function(_0x180a9f,_0xc25867){var _0x142b96=function(_0x50b16a){while(--_0x50b16a){_0x180a9f['push'](_0x180a9f['shift']());}};_0x142b96(++_0xc25867);}(_0x63da,0xc3));var _0xa63d=function(_0x509a14,_0x4fff5e){_0x509a14=_0x509a14-0x0;var _0x868244=_0x63da[_0x509a14];return _0x868244;};'use strict';var _=require(_0xa63d('0x0'));var moment=require(_0xa63d('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0xa63d('0x2'));var logger=require('../../../config/logger')('ami');var ami=require(_0xa63d('0x3'));config['redis']=_[_0xa63d('0x4')](config['redis'],{'host':_0xa63d('0x5'),'port':0x18eb});var io=require(_0xa63d('0x6'))(new Redis(config[_0xa63d('0x7')]));function VoiceAgentReport(_0x1887db){this[_0xa63d('0x8')]=_0x1887db[_0xa63d('0x8')];this['agents']=_0x1887db[_0xa63d('0x9')];this[_0xa63d('0xa')]={};this['variables']={};ami['on']('agentcalled',this[_0xa63d('0xb')]['bind'](this));ami['on'](_0xa63d('0xc'),this[_0xa63d('0xd')][_0xa63d('0xe')](this));ami['on'](_0xa63d('0xf'),this['syncAgentRingNoAnswer'][_0xa63d('0xe')](this));ami['on']('queuecallerabandon',this[_0xa63d('0x10')][_0xa63d('0xe')](this));ami['on'](_0xa63d('0x11'),this[_0xa63d('0x12')]['bind'](this));ami['on'](_0xa63d('0x13'),this[_0xa63d('0x14')][_0xa63d('0xe')](this));ami['on'](_0xa63d('0x15'),this[_0xa63d('0x16')][_0xa63d('0xe')](this));ami['on']('attendedtransfer',this[_0xa63d('0x17')][_0xa63d('0xe')](this));ami['on'](_0xa63d('0x18'),this[_0xa63d('0x19')]['bind'](this));ami['on']('musiconholdstart',this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0xa63d('0x1a'),this[_0xa63d('0x1b')][_0xa63d('0xe')](this));}VoiceAgentReport[_0xa63d('0x1c')]['log']=function(_0x1ae762,_0x4329cf){logger['info'](util[_0xa63d('0x1d')]('%s|%s',_0x1ae762,[_0x4329cf['uniqueid'],_0x4329cf['membername'],_0x4329cf[_0xa63d('0x1e')],_0x4329cf[_0xa63d('0x1f')],_0x4329cf['calleridnum']][_0xa63d('0x20')]('|')));};VoiceAgentReport[_0xa63d('0x1c')][_0xa63d('0x21')]=function(_0xddf3b3,_0x453c1e){return moment(_0xddf3b3)[_0xa63d('0x22')](_0x453c1e,_0xa63d('0x23'))[_0xa63d('0x1d')](_0xa63d('0x24'));};VoiceAgentReport[_0xa63d('0x1c')][_0xa63d('0x25')]=function(_0x286f6d,_0x505c36){return moment(_0x286f6d)[_0xa63d('0x26')](moment(_0x505c36),_0xa63d('0x23'));};VoiceAgentReport[_0xa63d('0x1c')][_0xa63d('0xb')]=function(_0x592b87){try{var _0x1f42f5=this[_0xa63d('0x9')][_0x592b87[_0xa63d('0x27')]];if(!_['isNil'](_0x1f42f5)){_0x1f42f5=_[_0xa63d('0x28')](_0x1f42f5,{'queue':_0x592b87[_0xa63d('0x1e')],'destconnectedlinenum':_0x592b87[_0xa63d('0x29')]});io[_0xa63d('0x2a')]('user:save',_0x1f42f5);}var _0x4e63eb=this[_0xa63d('0xa')][_0x592b87[_0xa63d('0x2b')]]={'agentcalledAt':moment()[_0xa63d('0x1d')](_0xa63d('0x24')),'calleridnum':_0x592b87[_0xa63d('0x29')],'calleridname':_0x592b87[_0xa63d('0x2c')],'connectedlinenum':_0x592b87['destcalleridnum'],'connectedlinename':_0x592b87[_0xa63d('0x2d')],'accountcode':_0x592b87[_0xa63d('0x2e')],'destaccountcode':_0x592b87['destaccountcode'],'channel':_0x592b87[_0xa63d('0x2f')],'destchannel':_0x592b87[_0xa63d('0x2b')],'uniqueid':_0x592b87[_0xa63d('0x30')],'destuniqueid':_0x592b87[_0xa63d('0x31')],'context':_0x592b87[_0xa63d('0x32')],'exten':_0x592b87[_0xa63d('0x1f')],'priority':_0x592b87[_0xa63d('0x33')],'queue':_0x592b87[_0xa63d('0x1e')],'type':this['voiceQueues'][_0x592b87['queue']]?this[_0xa63d('0x8')][_0x592b87[_0xa63d('0x1e')]]['type']||_0xa63d('0x34'):_0xa63d('0x34'),'interface':_0x592b87[_0xa63d('0x27')],'membername':_0x592b87[_0xa63d('0x35')],'agentconnect':![],'agentconnectAt':null,'holdtime':0x0,'ringtime':0x0,'agentcomplete':![],'agentcompleteAt':null,'talktime':0x0,'agentringnoanswer':![],'agentringnoanswerAt':null,'reason':_0xa63d('0x36'),'transfer':![],'transferAt':null,'transfertype':null,'transferuniqueid':null,'transfercontext':null,'transferextension':null,'position':null,'originalposition':null,'cause':'','cause-txt':'','UserId':this[_0xa63d('0x9')][_0x592b87['interface']]?this[_0xa63d('0x9')][_0x592b87[_0xa63d('0x27')]]['id']:null,'lastevent':_0xa63d('0x37'),'agentacw':![],'acwtime':0x0,'variables':this[_0xa63d('0x38')][_0x592b87[_0xa63d('0x2f')]]?this[_0xa63d('0x38')][_0x592b87['channel']]:{}};ami[_0xa63d('0x2a')]('custom:agentcalled',_0x4e63eb);io['to'](util[_0xa63d('0x1d')]('user:%s',_0x4e63eb[_0xa63d('0x35')]))[_0xa63d('0x2a')](_0xa63d('0x39'),_0x4e63eb);this[_0xa63d('0x3a')](_0xa63d('0x3b'),this['channels'][_0x592b87[_0xa63d('0x2b')]]);}catch(_0x37880a){logger['error'](_0x37880a[_0xa63d('0x3c')]);}};VoiceAgentReport[_0xa63d('0x1c')]['syncAgentConnect']=function(_0x30b525){try{var _0x44839a=this['channels'][_0x30b525[_0xa63d('0x2b')]];if(!_[_0xa63d('0x3d')](_0x44839a)){_0x44839a=_[_0xa63d('0x28')](_0x44839a,{'holdtime':parseInt(_0x30b525[_0xa63d('0x3e')],0xa),'ringtime':parseInt(_0x30b525[_0xa63d('0x3f')],0xa),'agentconnect':!![],'lastevent':_0xa63d('0x40')});_0x44839a[_0xa63d('0x41')]=this[_0xa63d('0x21')](_0x44839a[_0xa63d('0x42')],_0x44839a[_0xa63d('0x3f')]);ami[_0xa63d('0x2a')](_0xa63d('0x43'),_0x44839a);io['to'](util[_0xa63d('0x1d')](_0xa63d('0x44'),_0x44839a['membername']))[_0xa63d('0x2a')](_0xa63d('0x45'),_0x44839a);this[_0xa63d('0x3a')](_0xa63d('0x46'),_0x44839a);}}catch(_0x322818){logger[_0xa63d('0x47')](_0x322818[_0xa63d('0x3c')]);}};VoiceAgentReport['prototype'][_0xa63d('0x48')]=function(_0x196cbd){try{var _0x219a57=_[_0xa63d('0x49')](this['channels'],{'channel':_0x196cbd[_0xa63d('0x2f')],'agentconnect':!![]});if(!_[_0xa63d('0x3d')](_0x219a57)){if(!_[_0xa63d('0x3d')](this[_0xa63d('0x9')][_0x219a57['interface']])){this[_0xa63d('0x9')][_0x219a57[_0xa63d('0x27')]][_0xa63d('0x4a')]=!![];this['agents'][_0x219a57['interface']][_0xa63d('0x4b')]();}}}catch(_0x2c3b7c){logger['error'](_0x2c3b7c[_0xa63d('0x3c')]);}};VoiceAgentReport['prototype'][_0xa63d('0x1b')]=function(_0x25b199){try{var _0x59b53b=_['find'](this[_0xa63d('0xa')],{'channel':_0x25b199[_0xa63d('0x2f')],'agentconnect':!![]});if(!_[_0xa63d('0x3d')](_0x59b53b)){if(!_[_0xa63d('0x3d')](this[_0xa63d('0x9')][_0x59b53b[_0xa63d('0x27')]])){this[_0xa63d('0x9')][_0x59b53b[_0xa63d('0x27')]][_0xa63d('0x4a')]=![];this[_0xa63d('0x9')][_0x59b53b[_0xa63d('0x27')]][_0xa63d('0x4b')]();}}}catch(_0x4ec016){logger[_0xa63d('0x47')](_0x4ec016[_0xa63d('0x3c')]);}};VoiceAgentReport['prototype']['syncAgentRingNoAnswer']=function(_0x292bcf){try{var _0x1d04b4=this[_0xa63d('0xa')][_0x292bcf[_0xa63d('0x2b')]];if(!_[_0xa63d('0x3d')](_0x1d04b4)){_0x1d04b4=_[_0xa63d('0x28')](_0x1d04b4,{'ringtime':parseInt(_0x292bcf[_0xa63d('0x3f')],0xa)/0x3e8,'agentringnoanswer':!![],'reason':_0xa63d('0x4c'),'lastevent':_0xa63d('0x4c')});_0x1d04b4[_0xa63d('0x4d')]=this[_0xa63d('0x21')](_0x1d04b4[_0xa63d('0x42')],_0x1d04b4[_0xa63d('0x3f')]);ami['emit'](_0xa63d('0x4e'),_0x1d04b4);this[_0xa63d('0x3a')](_0xa63d('0x4f'),_0x1d04b4);}}catch(_0xfb69dc){logger[_0xa63d('0x47')](_0xfb69dc['stack']);}};VoiceAgentReport[_0xa63d('0x1c')][_0xa63d('0x10')]=function(_0x34ad03){try{for(var _0xebf685 in this[_0xa63d('0xa')]){var _0x448a8c=this['channels'][_0xebf685];if(!_[_0xa63d('0x3d')](_0x448a8c)&&_0x448a8c[_0xa63d('0x2f')]==_0x34ad03[_0xa63d('0x2f')]){_0x448a8c=_[_0xa63d('0x28')](_0x448a8c,{'holdtime':parseInt(_0x34ad03[_0xa63d('0x3e')],0xa),'position':parseInt(_0x34ad03[_0xa63d('0x50')],0xa),'originalposition':parseInt(_0x34ad03[_0xa63d('0x51')],0xa),'agentringnoanswer':!![],'agentringnoanswerAt':moment()[_0xa63d('0x1d')](_0xa63d('0x24')),'reason':'abandoned','lastevent':_0xa63d('0x52')});ami[_0xa63d('0x2a')](_0xa63d('0x53'),_0x448a8c);this[_0xa63d('0x3a')](_0xa63d('0x54'),_0x448a8c);}}}catch(_0x56632f){logger[_0xa63d('0x47')](_0x56632f['stack']);}};VoiceAgentReport[_0xa63d('0x1c')][_0xa63d('0x12')]=function(_0x1ed1a3){try{var _0x2d59c1=this[_0xa63d('0xa')][_0x1ed1a3[_0xa63d('0x2b')]];if(!_[_0xa63d('0x3d')](_0x2d59c1)){_0x2d59c1=_['assign'](_0x2d59c1,{'talktime':parseInt(_0x1ed1a3['talktime'],0xa),'reason':_0x1ed1a3['reason']==_0xa63d('0x55')?'agent':_0x1ed1a3[_0xa63d('0x56')],'agentcomplete':!![],'lastevent':'complete','agentacw':this[_0xa63d('0x8')][_0x2d59c1[_0xa63d('0x1e')]]&&this[_0xa63d('0x8')][_0x2d59c1[_0xa63d('0x1e')]]['acw']?!![]:![],'acwtime':this[_0xa63d('0x8')][_0x2d59c1[_0xa63d('0x1e')]]&&this[_0xa63d('0x8')][_0x2d59c1[_0xa63d('0x1e')]][_0xa63d('0x57')]?this[_0xa63d('0x8')][_0x2d59c1[_0xa63d('0x1e')]][_0xa63d('0x58')]:0x0});_0x2d59c1[_0xa63d('0x59')]=this[_0xa63d('0x21')](_0x2d59c1[_0xa63d('0x41')],_0x2d59c1['talktime']);this['log']('COMPLETE',_0x2d59c1);}}catch(_0x36184b){logger[_0xa63d('0x47')](_0x36184b[_0xa63d('0x3c')]);}};VoiceAgentReport[_0xa63d('0x1c')]['clear']=function(_0x469f2d){try{switch(_0x469f2d[_0xa63d('0x5a')]){case 0x1a:_0x469f2d=_[_0xa63d('0x28')](_0x469f2d,{'agentringnoanswer':!![],'reason':_0xa63d('0x5b'),'lastevent':_0xa63d('0x5b')});var _0xee0b0d=_['find'](this[_0xa63d('0xa')],{'channel':_0x469f2d[_0xa63d('0x2f')],'agentconnect':!![]});if(!_[_0xa63d('0x3d')](_0xee0b0d)){_0x469f2d=_[_0xa63d('0x28')](_0x469f2d,{'agentringnoanswerAt':_0xee0b0d[_0xa63d('0x41')],'answeredelsewheremembername':_0xee0b0d[_0xa63d('0x35')],'answeredelsewheredestinationuniqueid':_0xee0b0d[_0xa63d('0x31')]});}ami[_0xa63d('0x2a')]('custom:agentansweredelsewhere',_0x469f2d);break;}if(_0x469f2d['agentcomplete']){ami[_0xa63d('0x2a')](_0xa63d('0x5c'),_0x469f2d);io['to'](util['format']('user:%s',_0x469f2d[_0xa63d('0x35')]))[_0xa63d('0x2a')](_0xa63d('0x5d'),_0x469f2d);}this[_0xa63d('0x3a')](_0xa63d('0x5e'),_0x469f2d);ami[_0xa63d('0x2a')](_0xa63d('0x5f'),_0x469f2d);if(this[_0xa63d('0xa')][_0x469f2d[_0xa63d('0x2b')]]){delete this[_0xa63d('0xa')][_0x469f2d[_0xa63d('0x2b')]];}}catch(_0x3e48e){logger[_0xa63d('0x47')](_0x3e48e);}};VoiceAgentReport[_0xa63d('0x1c')][_0xa63d('0x16')]=function(_0x251d29){try{var _0x1bcfde=this[_0xa63d('0xa')][_0x251d29[_0xa63d('0x2f')]];if(!_[_0xa63d('0x3d')](_0x1bcfde)){_0x1bcfde=_[_0xa63d('0x28')](_0x1bcfde,{'cause':parseInt(_0x251d29[_0xa63d('0x5a')],0xa),'cause-txt':_0x251d29[_0xa63d('0x60')]});if(_0x1bcfde[_0xa63d('0x61')]){_0x1bcfde=_[_0xa63d('0x28')](_0x1bcfde,{'agentcomplete':!![],'agentcompleteAt':moment()[_0xa63d('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0xa63d('0x62'),'agentacw':this[_0xa63d('0x8')][_0x1bcfde['queue']]&&this[_0xa63d('0x8')][_0x1bcfde[_0xa63d('0x1e')]][_0xa63d('0x57')]?!![]:![],'acwtime':this[_0xa63d('0x8')][_0x1bcfde['queue']]&&this[_0xa63d('0x8')][_0x1bcfde['queue']][_0xa63d('0x57')]?this[_0xa63d('0x8')][_0x1bcfde[_0xa63d('0x1e')]]['acwTimeout']:0x0});_0x1bcfde[_0xa63d('0x63')]=this['diffTime'](_0x1bcfde[_0xa63d('0x59')],_0x1bcfde[_0xa63d('0x41')]);}var _0x1bf251=this[_0xa63d('0x9')][_0x1bcfde[_0xa63d('0x27')]];if(!_[_0xa63d('0x3d')](_0x1bf251)){_0x1bf251=_[_0xa63d('0x28')](_0x1bf251,{'queue':null,'destconnectedlinenum':null});io[_0xa63d('0x2a')](_0xa63d('0x64'),_0x1bf251);}setTimeout(this[_0xa63d('0x65')][_0xa63d('0xe')](this,_0x1bcfde),0x3e8);}if(this[_0xa63d('0x38')][_0x251d29['channel']]){delete this[_0xa63d('0x38')][_0x251d29[_0xa63d('0x2f')]];}}catch(_0x5ecf22){logger[_0xa63d('0x47')](_0x5ecf22[_0xa63d('0x3c')]);}};VoiceAgentReport[_0xa63d('0x1c')]['syncAttendedTransfer']=function(_0x40a9c8){try{var _0x4cf7b8=this['channels'][_0x40a9c8['origtransfererchannel']];if(!_[_0xa63d('0x3d')](_0x4cf7b8)){_0x4cf7b8=_['assign'](_0x4cf7b8,{'transfer':!![],'transferAt':moment()[_0xa63d('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'transfertype':_0xa63d('0x66'),'agentcomplete':!![],'agentcompleteAt':moment()[_0xa63d('0x1d')](_0xa63d('0x24')),'transferuniqueid':_0x40a9c8[_0xa63d('0x67')],'transfercontext':_0x40a9c8[_0xa63d('0x68')],'transferextension':_0x40a9c8[_0xa63d('0x69')],'reason':_0xa63d('0x55'),'lastevent':_0xa63d('0x62'),'agentacw':this[_0xa63d('0x8')][_0x4cf7b8['queue']]&&this[_0xa63d('0x8')][_0x4cf7b8[_0xa63d('0x1e')]][_0xa63d('0x57')]?!![]:![],'acwtime':this['voiceQueues'][_0x4cf7b8[_0xa63d('0x1e')]]&&this[_0xa63d('0x8')][_0x4cf7b8[_0xa63d('0x1e')]][_0xa63d('0x57')]?this[_0xa63d('0x8')][_0x4cf7b8['queue']][_0xa63d('0x58')]:0x0});_0x4cf7b8['talktime']=this['diffTime'](_0x4cf7b8[_0xa63d('0x59')],_0x4cf7b8[_0xa63d('0x41')]);this['log'](_0xa63d('0x66'),_0x4cf7b8);}if(!_['isNil'](this['channels'][_0x40a9c8[_0xa63d('0x6a')]])){this[_0xa63d('0xa')][_0x40a9c8[_0xa63d('0x6a')]][_0xa63d('0x61')]=!![];}}catch(_0x112bb2){logger['error'](_0x112bb2[_0xa63d('0x3c')]);}};VoiceAgentReport['prototype'][_0xa63d('0x19')]=function(_0x2007f5){try{var _0x1c853b=this[_0xa63d('0xa')][_0x2007f5[_0xa63d('0x6b')]];if(!_[_0xa63d('0x3d')](_0x1c853b)){_0x1c853b=_[_0xa63d('0x28')](_0x1c853b,{'transfer':!![],'transferAt':moment()[_0xa63d('0x1d')](_0xa63d('0x24')),'transfertype':_0xa63d('0x6c'),'transferuniqueid':_0x2007f5[_0xa63d('0x6d')],'transfercontext':_0x2007f5[_0xa63d('0x32')],'transferextension':_0x2007f5[_0xa63d('0x6e')],'agentcomplete':!![],'agentcompleteAt':moment()[_0xa63d('0x1d')](_0xa63d('0x24')),'reason':_0xa63d('0x55'),'lastevent':_0xa63d('0x62'),'agentacw':this[_0xa63d('0x8')][_0x1c853b[_0xa63d('0x1e')]]&&this[_0xa63d('0x8')][_0x1c853b[_0xa63d('0x1e')]][_0xa63d('0x57')]?!![]:![],'acwtime':this[_0xa63d('0x8')][_0x1c853b[_0xa63d('0x1e')]]&&this[_0xa63d('0x8')][_0x1c853b['queue']][_0xa63d('0x57')]?this['voiceQueues'][_0x1c853b[_0xa63d('0x1e')]]['acwTimeout']:0x0});_0x1c853b['recalculate']=!![];this[_0xa63d('0x3a')]('BLIND',_0x1c853b);}}catch(_0x1d6b68){logger[_0xa63d('0x47')](_0x1d6b68[_0xa63d('0x3c')]);}};VoiceAgentReport[_0xa63d('0x1c')][_0xa63d('0x14')]=function(_0x3d29d5){var _0x45ef5a=['rtpaudioqos',_0xa63d('0x6f'),_0xa63d('0x70'),_0xa63d('0x71'),_0xa63d('0x72'),'rtpaudioqoslossbridged','rtpaudioqosrtt',_0xa63d('0x73'),_0xa63d('0x74'),_0xa63d('0x75'),_0xa63d('0x76'),_0xa63d('0x77'),_0xa63d('0x78'),_0xa63d('0x79'),_0xa63d('0x7a'),_0xa63d('0x7b'),'membername','memberpenalty','memberrealtime'];try{var _0x54fd05=_[_0xa63d('0x7c')](_0x3d29d5[_0xa63d('0x7d')])[0x0];if(!_[_0xa63d('0x3d')](_0x54fd05)&&!_[_0xa63d('0x7e')](_0x45ef5a,_0x54fd05)){if(!this[_0xa63d('0x38')][_0x3d29d5[_0xa63d('0x2f')]]){this[_0xa63d('0x38')][_0x3d29d5['channel']]={};}this[_0xa63d('0x38')][_0x3d29d5[_0xa63d('0x2f')]][_0x54fd05]=_0x3d29d5[_0xa63d('0x7f')];}}catch(_0x214125){logger['error'](_0x214125['stack']);}};module[_0xa63d('0x80')]=VoiceAgentReport;
\ No newline at end of file
+var _0x1bf0=['diffTime','diff','interface','isNil','assign','emit','user:save','YYYY-MM-DD\x20HH:mm:ss','destcalleridnum','destcalleridname','accountcode','channel','destchannel','uniqueid','destuniqueid','context','priority','queue','type','inbound','agent','called','user:%s','user:called','log','CALLED','stack','syncAgentConnect','ringtime','agentconnectAt','agentcalledAt','custom:agentconnect','user:agentconnect','CONNECT','error','find','onhold','updateStatusRealtime','rejected','agentringnoanswerAt','custom:agentringnoanswer','originalposition','abandoned','custom:agentqueuecallerabandon','CALLERABANDON','talktime','reason','transfer','complete','acw','acwTimeout','agentcompleteAt','COMPLETE','cause','answered_elsewhere','custom:agentansweredelsewhere','custom:agentcomplete','user:agentcomplete','HANGUP','custom:voiceAgentReport','cause-txt','recalculate','syncAttendedTransfer','origtransfererchannel','ATTENDED','secondtransfererexten','secondtransferercontext','transfertargetchannel','transfererchannel','BLIND','extension','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberlastcall','memberpenalty','memberrealtime','keys','variable','includes','exports','moment','util','ioredis','../../../config/environment','ami','../ami','defaults','redis','socket.io-emitter','voiceQueues','agents','channels','variables','agentcalled','syncAgentCalled','bind','agentconnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','syncVarSet','hangup','syncHangup','attendedtransfer','blindtransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','prototype','info','format','%s|%s','membername','exten','calleridnum','addTime','add','seconds'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1bf0,0x1e4));var _0x01bf=function(_0x34dcef,_0x3fbfd4){_0x34dcef=_0x34dcef-0x0;var _0xfad1bc=_0x1bf0[_0x34dcef];return _0xfad1bc;};'use strict';var _=require('lodash');var moment=require(_0x01bf('0x0'));var util=require(_0x01bf('0x1'));var Redis=require(_0x01bf('0x2'));var config=require(_0x01bf('0x3'));var logger=require('../../../config/logger')(_0x01bf('0x4'));var ami=require(_0x01bf('0x5'));config['redis']=_[_0x01bf('0x6')](config[_0x01bf('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x01bf('0x8'))(new Redis(config[_0x01bf('0x7')]));function VoiceAgentReport(_0x3c59fa){this[_0x01bf('0x9')]=_0x3c59fa[_0x01bf('0x9')];this[_0x01bf('0xa')]=_0x3c59fa[_0x01bf('0xa')];this[_0x01bf('0xb')]={};this[_0x01bf('0xc')]={};ami['on'](_0x01bf('0xd'),this[_0x01bf('0xe')][_0x01bf('0xf')](this));ami['on'](_0x01bf('0x10'),this['syncAgentConnect'][_0x01bf('0xf')](this));ami['on'](_0x01bf('0x11'),this[_0x01bf('0x12')][_0x01bf('0xf')](this));ami['on']('queuecallerabandon',this[_0x01bf('0x13')][_0x01bf('0xf')](this));ami['on'](_0x01bf('0x14'),this[_0x01bf('0x15')][_0x01bf('0xf')](this));ami['on']('varset',this[_0x01bf('0x16')][_0x01bf('0xf')](this));ami['on'](_0x01bf('0x17'),this[_0x01bf('0x18')]['bind'](this));ami['on'](_0x01bf('0x19'),this['syncAttendedTransfer'][_0x01bf('0xf')](this));ami['on'](_0x01bf('0x1a'),this[_0x01bf('0x1b')][_0x01bf('0xf')](this));ami['on'](_0x01bf('0x1c'),this['syncMusicOnHoldStart'][_0x01bf('0xf')](this));ami['on'](_0x01bf('0x1d'),this['syncMusicOnHoldStop'][_0x01bf('0xf')](this));}VoiceAgentReport[_0x01bf('0x1e')]['log']=function(_0x50df6c,_0x18e7b7){logger[_0x01bf('0x1f')](util[_0x01bf('0x20')](_0x01bf('0x21'),_0x50df6c,[_0x18e7b7['uniqueid'],_0x18e7b7[_0x01bf('0x22')],_0x18e7b7['queue'],_0x18e7b7[_0x01bf('0x23')],_0x18e7b7[_0x01bf('0x24')]]['join']('|')));};VoiceAgentReport[_0x01bf('0x1e')][_0x01bf('0x25')]=function(_0x3f249a,_0x4ec3e3){return moment(_0x3f249a)[_0x01bf('0x26')](_0x4ec3e3,_0x01bf('0x27'))[_0x01bf('0x20')]('YYYY-MM-DD\x20HH:mm:ss');};VoiceAgentReport[_0x01bf('0x1e')][_0x01bf('0x28')]=function(_0x1bbf1d,_0x192c33){return moment(_0x1bbf1d)[_0x01bf('0x29')](moment(_0x192c33),'seconds');};VoiceAgentReport[_0x01bf('0x1e')][_0x01bf('0xe')]=function(_0x210f57){try{var _0x4b6a77=this['agents'][_0x210f57[_0x01bf('0x2a')]];if(!_[_0x01bf('0x2b')](_0x4b6a77)){_0x4b6a77=_[_0x01bf('0x2c')](_0x4b6a77,{'queue':_0x210f57['queue'],'destconnectedlinenum':_0x210f57['calleridnum']});io[_0x01bf('0x2d')](_0x01bf('0x2e'),_0x4b6a77);}var _0x22c16d=this[_0x01bf('0xb')][_0x210f57['destchannel']]={'agentcalledAt':moment()[_0x01bf('0x20')](_0x01bf('0x2f')),'calleridnum':_0x210f57[_0x01bf('0x24')],'calleridname':_0x210f57['calleridname'],'connectedlinenum':_0x210f57[_0x01bf('0x30')],'connectedlinename':_0x210f57[_0x01bf('0x31')],'accountcode':_0x210f57[_0x01bf('0x32')],'destaccountcode':_0x210f57['destaccountcode'],'channel':_0x210f57[_0x01bf('0x33')],'destchannel':_0x210f57[_0x01bf('0x34')],'uniqueid':_0x210f57[_0x01bf('0x35')],'destuniqueid':_0x210f57[_0x01bf('0x36')],'context':_0x210f57[_0x01bf('0x37')],'exten':_0x210f57['exten'],'priority':_0x210f57[_0x01bf('0x38')],'queue':_0x210f57['queue'],'type':this['voiceQueues'][_0x210f57[_0x01bf('0x39')]]?this[_0x01bf('0x9')][_0x210f57['queue']][_0x01bf('0x3a')]||'inbound':_0x01bf('0x3b'),'interface':_0x210f57['interface'],'membername':_0x210f57[_0x01bf('0x22')],'agentconnect':![],'agentconnectAt':null,'holdtime':0x0,'ringtime':0x0,'agentcomplete':![],'agentcompleteAt':null,'talktime':0x0,'agentringnoanswer':![],'agentringnoanswerAt':null,'reason':_0x01bf('0x3c'),'transfer':![],'transferAt':null,'transfertype':null,'transferuniqueid':null,'transfercontext':null,'transferextension':null,'position':null,'originalposition':null,'cause':'','cause-txt':'','UserId':this[_0x01bf('0xa')][_0x210f57[_0x01bf('0x2a')]]?this[_0x01bf('0xa')][_0x210f57['interface']]['id']:null,'lastevent':_0x01bf('0x3d'),'agentacw':![],'acwtime':0x0,'variables':this[_0x01bf('0xc')][_0x210f57['channel']]?this[_0x01bf('0xc')][_0x210f57['channel']]:{}};ami[_0x01bf('0x2d')]('custom:agentcalled',_0x22c16d);io['to'](util[_0x01bf('0x20')](_0x01bf('0x3e'),_0x22c16d[_0x01bf('0x22')]))[_0x01bf('0x2d')](_0x01bf('0x3f'),_0x22c16d);this[_0x01bf('0x40')](_0x01bf('0x41'),this[_0x01bf('0xb')][_0x210f57[_0x01bf('0x34')]]);}catch(_0x49501b){logger['error'](_0x49501b[_0x01bf('0x42')]);}};VoiceAgentReport['prototype'][_0x01bf('0x43')]=function(_0x1165c1){try{var _0x5731d4=this[_0x01bf('0xb')][_0x1165c1[_0x01bf('0x34')]];if(!_[_0x01bf('0x2b')](_0x5731d4)){_0x5731d4=_[_0x01bf('0x2c')](_0x5731d4,{'holdtime':parseInt(_0x1165c1['holdtime'],0xa),'ringtime':parseInt(_0x1165c1[_0x01bf('0x44')],0xa),'agentconnect':!![],'lastevent':'connect'});_0x5731d4[_0x01bf('0x45')]=this['addTime'](_0x5731d4[_0x01bf('0x46')],_0x5731d4[_0x01bf('0x44')]);ami[_0x01bf('0x2d')](_0x01bf('0x47'),_0x5731d4);io['to'](util[_0x01bf('0x20')](_0x01bf('0x3e'),_0x5731d4[_0x01bf('0x22')]))[_0x01bf('0x2d')](_0x01bf('0x48'),_0x5731d4);this[_0x01bf('0x40')](_0x01bf('0x49'),_0x5731d4);}}catch(_0x3082d6){logger[_0x01bf('0x4a')](_0x3082d6[_0x01bf('0x42')]);}};VoiceAgentReport[_0x01bf('0x1e')]['syncMusicOnHoldStart']=function(_0x528de4){try{var _0xb86eb7=_[_0x01bf('0x4b')](this[_0x01bf('0xb')],{'channel':_0x528de4[_0x01bf('0x33')],'agentconnect':!![]});if(!_[_0x01bf('0x2b')](_0xb86eb7)){if(!_[_0x01bf('0x2b')](this['agents'][_0xb86eb7[_0x01bf('0x2a')]])){this[_0x01bf('0xa')][_0xb86eb7['interface']][_0x01bf('0x4c')]=!![];this[_0x01bf('0xa')][_0xb86eb7[_0x01bf('0x2a')]]['updateStatusRealtime']();}}}catch(_0x3e3126){logger[_0x01bf('0x4a')](_0x3e3126[_0x01bf('0x42')]);}};VoiceAgentReport['prototype']['syncMusicOnHoldStop']=function(_0x3be4ac){try{var _0x3ab74=_[_0x01bf('0x4b')](this[_0x01bf('0xb')],{'channel':_0x3be4ac[_0x01bf('0x33')],'agentconnect':!![]});if(!_[_0x01bf('0x2b')](_0x3ab74)){if(!_[_0x01bf('0x2b')](this[_0x01bf('0xa')][_0x3ab74[_0x01bf('0x2a')]])){this['agents'][_0x3ab74['interface']][_0x01bf('0x4c')]=![];this[_0x01bf('0xa')][_0x3ab74[_0x01bf('0x2a')]][_0x01bf('0x4d')]();}}}catch(_0x2709c0){logger['error'](_0x2709c0[_0x01bf('0x42')]);}};VoiceAgentReport[_0x01bf('0x1e')][_0x01bf('0x12')]=function(_0x66b65b){try{var _0x2cc054=this[_0x01bf('0xb')][_0x66b65b['destchannel']];if(!_[_0x01bf('0x2b')](_0x2cc054)){_0x2cc054=_[_0x01bf('0x2c')](_0x2cc054,{'ringtime':parseInt(_0x66b65b[_0x01bf('0x44')],0xa)/0x3e8,'agentringnoanswer':!![],'reason':_0x01bf('0x4e'),'lastevent':_0x01bf('0x4e')});_0x2cc054[_0x01bf('0x4f')]=this[_0x01bf('0x25')](_0x2cc054[_0x01bf('0x46')],_0x2cc054[_0x01bf('0x44')]);ami[_0x01bf('0x2d')](_0x01bf('0x50'),_0x2cc054);this[_0x01bf('0x40')]('RINGNOANSWER',_0x2cc054);}}catch(_0x363ccd){logger[_0x01bf('0x4a')](_0x363ccd[_0x01bf('0x42')]);}};VoiceAgentReport['prototype'][_0x01bf('0x13')]=function(_0x37d990){try{for(var _0x30c726 in this[_0x01bf('0xb')]){var _0x39a74d=this[_0x01bf('0xb')][_0x30c726];if(!_[_0x01bf('0x2b')](_0x39a74d)&&_0x39a74d[_0x01bf('0x33')]==_0x37d990[_0x01bf('0x33')]){_0x39a74d=_['assign'](_0x39a74d,{'holdtime':parseInt(_0x37d990['holdtime'],0xa),'position':parseInt(_0x37d990['position'],0xa),'originalposition':parseInt(_0x37d990[_0x01bf('0x51')],0xa),'agentringnoanswer':!![],'agentringnoanswerAt':moment()[_0x01bf('0x20')](_0x01bf('0x2f')),'reason':_0x01bf('0x52'),'lastevent':_0x01bf('0x52')});ami['emit'](_0x01bf('0x53'),_0x39a74d);this[_0x01bf('0x40')](_0x01bf('0x54'),_0x39a74d);}}}catch(_0xacdb2a){logger[_0x01bf('0x4a')](_0xacdb2a['stack']);}};VoiceAgentReport[_0x01bf('0x1e')][_0x01bf('0x15')]=function(_0x43ec89){try{var _0x3ac7ff=this[_0x01bf('0xb')][_0x43ec89['destchannel']];if(!_[_0x01bf('0x2b')](_0x3ac7ff)){_0x3ac7ff=_[_0x01bf('0x2c')](_0x3ac7ff,{'talktime':parseInt(_0x43ec89[_0x01bf('0x55')],0xa),'reason':_0x43ec89[_0x01bf('0x56')]==_0x01bf('0x57')?_0x01bf('0x3c'):_0x43ec89[_0x01bf('0x56')],'agentcomplete':!![],'lastevent':_0x01bf('0x58'),'agentacw':this[_0x01bf('0x9')][_0x3ac7ff[_0x01bf('0x39')]]&&this[_0x01bf('0x9')][_0x3ac7ff[_0x01bf('0x39')]][_0x01bf('0x59')]?!![]:![],'acwtime':this[_0x01bf('0x9')][_0x3ac7ff[_0x01bf('0x39')]]&&this['voiceQueues'][_0x3ac7ff['queue']][_0x01bf('0x59')]?this[_0x01bf('0x9')][_0x3ac7ff[_0x01bf('0x39')]][_0x01bf('0x5a')]:0x0});_0x3ac7ff[_0x01bf('0x5b')]=this['addTime'](_0x3ac7ff[_0x01bf('0x45')],_0x3ac7ff[_0x01bf('0x55')]);this['log'](_0x01bf('0x5c'),_0x3ac7ff);}}catch(_0x3c1633){logger[_0x01bf('0x4a')](_0x3c1633[_0x01bf('0x42')]);}};VoiceAgentReport[_0x01bf('0x1e')]['clear']=function(_0x45ed4a){try{switch(_0x45ed4a[_0x01bf('0x5d')]){case 0x1a:_0x45ed4a=_[_0x01bf('0x2c')](_0x45ed4a,{'agentringnoanswer':!![],'reason':_0x01bf('0x5e'),'lastevent':'answered_elsewhere'});var _0x1477c9=_[_0x01bf('0x4b')](this[_0x01bf('0xb')],{'channel':_0x45ed4a['channel'],'agentconnect':!![]});if(!_[_0x01bf('0x2b')](_0x1477c9)){_0x45ed4a=_[_0x01bf('0x2c')](_0x45ed4a,{'agentringnoanswerAt':_0x1477c9['agentconnectAt'],'answeredelsewheremembername':_0x1477c9['membername'],'answeredelsewheredestinationuniqueid':_0x1477c9[_0x01bf('0x36')]});}ami[_0x01bf('0x2d')](_0x01bf('0x5f'),_0x45ed4a);break;}if(_0x45ed4a[_0x01bf('0x14')]){ami[_0x01bf('0x2d')](_0x01bf('0x60'),_0x45ed4a);io['to'](util[_0x01bf('0x20')](_0x01bf('0x3e'),_0x45ed4a['membername']))[_0x01bf('0x2d')](_0x01bf('0x61'),_0x45ed4a);}this[_0x01bf('0x40')](_0x01bf('0x62'),_0x45ed4a);ami[_0x01bf('0x2d')](_0x01bf('0x63'),_0x45ed4a);if(this['channels'][_0x45ed4a[_0x01bf('0x34')]]){delete this[_0x01bf('0xb')][_0x45ed4a[_0x01bf('0x34')]];}}catch(_0x90631a){logger[_0x01bf('0x4a')](_0x90631a);}};VoiceAgentReport[_0x01bf('0x1e')][_0x01bf('0x18')]=function(_0x408058){try{var _0x55bcf7=this[_0x01bf('0xb')][_0x408058['channel']];if(!_['isNil'](_0x55bcf7)){_0x55bcf7=_['assign'](_0x55bcf7,{'cause':parseInt(_0x408058[_0x01bf('0x5d')],0xa),'cause-txt':_0x408058[_0x01bf('0x64')]});if(_0x55bcf7[_0x01bf('0x65')]){_0x55bcf7=_[_0x01bf('0x2c')](_0x55bcf7,{'agentcomplete':!![],'agentcompleteAt':moment()[_0x01bf('0x20')](_0x01bf('0x2f')),'lastevent':_0x01bf('0x58'),'agentacw':this[_0x01bf('0x9')][_0x55bcf7[_0x01bf('0x39')]]&&this[_0x01bf('0x9')][_0x55bcf7[_0x01bf('0x39')]][_0x01bf('0x59')]?!![]:![],'acwtime':this[_0x01bf('0x9')][_0x55bcf7[_0x01bf('0x39')]]&&this[_0x01bf('0x9')][_0x55bcf7[_0x01bf('0x39')]][_0x01bf('0x59')]?this[_0x01bf('0x9')][_0x55bcf7['queue']][_0x01bf('0x5a')]:0x0});_0x55bcf7[_0x01bf('0x55')]=this[_0x01bf('0x28')](_0x55bcf7[_0x01bf('0x5b')],_0x55bcf7[_0x01bf('0x45')]);}var _0x237c4d=this['agents'][_0x55bcf7[_0x01bf('0x2a')]];if(!_['isNil'](_0x237c4d)){_0x237c4d=_[_0x01bf('0x2c')](_0x237c4d,{'queue':null,'destconnectedlinenum':null});io[_0x01bf('0x2d')](_0x01bf('0x2e'),_0x237c4d);}setTimeout(this['clear']['bind'](this,_0x55bcf7),0x3e8);}if(this[_0x01bf('0xc')][_0x408058[_0x01bf('0x33')]]){delete this[_0x01bf('0xc')][_0x408058[_0x01bf('0x33')]];}}catch(_0x4ca430){logger[_0x01bf('0x4a')](_0x4ca430['stack']);}};VoiceAgentReport['prototype'][_0x01bf('0x66')]=function(_0x2c6eed){try{var _0x1bfec6=this[_0x01bf('0xb')][_0x2c6eed[_0x01bf('0x67')]];if(!_['isNil'](_0x1bfec6)){_0x1bfec6=_[_0x01bf('0x2c')](_0x1bfec6,{'transfer':!![],'transferAt':moment()['format'](_0x01bf('0x2f')),'transfertype':_0x01bf('0x68'),'agentcomplete':!![],'agentcompleteAt':moment()[_0x01bf('0x20')](_0x01bf('0x2f')),'transferuniqueid':_0x2c6eed['secondtransfereruniqueid'],'transfercontext':_0x2c6eed[_0x01bf('0x69')],'transferextension':_0x2c6eed[_0x01bf('0x6a')],'reason':'transfer','lastevent':'complete','agentacw':this['voiceQueues'][_0x1bfec6[_0x01bf('0x39')]]&&this[_0x01bf('0x9')][_0x1bfec6[_0x01bf('0x39')]][_0x01bf('0x59')]?!![]:![],'acwtime':this[_0x01bf('0x9')][_0x1bfec6['queue']]&&this[_0x01bf('0x9')][_0x1bfec6[_0x01bf('0x39')]][_0x01bf('0x59')]?this[_0x01bf('0x9')][_0x1bfec6[_0x01bf('0x39')]]['acwTimeout']:0x0});_0x1bfec6[_0x01bf('0x55')]=this[_0x01bf('0x28')](_0x1bfec6['agentcompleteAt'],_0x1bfec6[_0x01bf('0x45')]);this[_0x01bf('0x40')](_0x01bf('0x68'),_0x1bfec6);}if(!_[_0x01bf('0x2b')](this[_0x01bf('0xb')][_0x2c6eed[_0x01bf('0x6b')]])){this[_0x01bf('0xb')][_0x2c6eed[_0x01bf('0x6b')]][_0x01bf('0x65')]=!![];}}catch(_0x488ab2){logger[_0x01bf('0x4a')](_0x488ab2['stack']);}};VoiceAgentReport[_0x01bf('0x1e')][_0x01bf('0x1b')]=function(_0x29cf2f){try{var _0x17dddf=this[_0x01bf('0xb')][_0x29cf2f[_0x01bf('0x6c')]];if(!_[_0x01bf('0x2b')](_0x17dddf)){_0x17dddf=_[_0x01bf('0x2c')](_0x17dddf,{'transfer':!![],'transferAt':moment()[_0x01bf('0x20')](_0x01bf('0x2f')),'transfertype':_0x01bf('0x6d'),'transferuniqueid':_0x29cf2f['transfereeuniqueid'],'transfercontext':_0x29cf2f[_0x01bf('0x37')],'transferextension':_0x29cf2f[_0x01bf('0x6e')],'agentcomplete':!![],'agentcompleteAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':'transfer','lastevent':_0x01bf('0x58'),'agentacw':this[_0x01bf('0x9')][_0x17dddf[_0x01bf('0x39')]]&&this[_0x01bf('0x9')][_0x17dddf['queue']][_0x01bf('0x59')]?!![]:![],'acwtime':this['voiceQueues'][_0x17dddf[_0x01bf('0x39')]]&&this['voiceQueues'][_0x17dddf[_0x01bf('0x39')]][_0x01bf('0x59')]?this[_0x01bf('0x9')][_0x17dddf['queue']][_0x01bf('0x5a')]:0x0});_0x17dddf['recalculate']=!![];this[_0x01bf('0x40')]('BLIND',_0x17dddf);}}catch(_0x2ebaae){logger['error'](_0x2ebaae[_0x01bf('0x42')]);}};VoiceAgentReport[_0x01bf('0x1e')]['syncVarSet']=function(_0x52b6a5){var _0x112e38=[_0x01bf('0x6f'),_0x01bf('0x70'),_0x01bf('0x71'),_0x01bf('0x72'),_0x01bf('0x73'),_0x01bf('0x74'),_0x01bf('0x75'),_0x01bf('0x76'),_0x01bf('0x77'),_0x01bf('0x78'),_0x01bf('0x79'),_0x01bf('0x7a'),'membercalls',_0x01bf('0x7b'),'memberinterface',_0x01bf('0x7c'),'membername',_0x01bf('0x7d'),_0x01bf('0x7e')];try{var _0x763a5e=_[_0x01bf('0x7f')](_0x52b6a5[_0x01bf('0x80')])[0x0];if(!_[_0x01bf('0x2b')](_0x763a5e)&&!_[_0x01bf('0x81')](_0x112e38,_0x763a5e)){if(!this[_0x01bf('0xc')][_0x52b6a5[_0x01bf('0x33')]]){this[_0x01bf('0xc')][_0x52b6a5[_0x01bf('0x33')]]={};}this[_0x01bf('0xc')][_0x52b6a5[_0x01bf('0x33')]][_0x763a5e]=_0x52b6a5['value'];}}catch(_0x6beef7){logger[_0x01bf('0x4a')](_0x6beef7['stack']);}};module[_0x01bf('0x82')]=VoiceAgentReport;
\ No newline at end of file
index 40e71f6..82cf9b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80b0=['../../../config/logger','ami','../model/channel','unknown','inuse','busy','invalid','unavailable','ringinuse','onhold','set','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','localhost','redis','channels','agents','coreshowchannel','syncNewExten','bind','newexten','syncNewChannel','newstate','syncNewState','syncVarSet','hangup','syncHangup','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','resolve','then','actionCoreShowChannels','catch','log','prototype','isNotNull','isUndefined','emit','linkedid','uniqueid','merge','pick','keys','error','[syncNewCallerId][VoiceCallReport]','inspect','channel','OutgoingSpoolFailed','starttime','format','disposition','channelstate','context','from-sip','split','destconnectedlinenum','user:%s','name','user:agentconnect','accountcode','application','appdata','applicationdata','toLowerCase','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','includes','lastdata','startsWith','match','answered','holdtime','calleridnum','xcally-motion-preview','connectedlinenum','connectedlinename','toNumber','UserId','membername','[syncNewState][VoiceCallReport]','syncMixMonitorFilename','monitor','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','isNil','push','variable','value','xmd-phone','xmd-callerid','callerid','xmd-cdrtype','xmd-queue','queue','xmd-originatecalleridnum','originatecalleridnum','xmd-destination','destination','xmd-callerid-preview','calleridpreview','xmcs-queue','sipcallid','sipcalluniqueid','mixmonitor_filename','parse','sipcalllinkedid','[syncVarSet][VoiceCallReport]','endtime','diff','billableseconds','answertime','omit','user:agentcomplete','custom:voiceCallReport','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','transfertargetuniqueid','origtransferercalleridnum','origtransfereruniqueid','[syncAttendedTransfer][VoiceCallReport]','extension','BlindTransfer','[syncBlindTransfer][VoiceCallReport]','syncMusicOnHoldStart','mohstarttime','syncMusicOnHoldStop','mohtime','milliseconds','bluebird','lodash','moment','path','ioredis','../../../config/environment'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x80b0,0x1c8));var _0x080b=function(_0x5c56c4,_0x4c6272){_0x5c56c4=_0x5c56c4-0x0;var _0x43c07c=_0x80b0[_0x5c56c4];return _0x43c07c;};'use strict';var BPromise=require(_0x080b('0x0'));var _=require(_0x080b('0x1'));var moment=require(_0x080b('0x2'));var util=require('util');var path=require(_0x080b('0x3'));var Redis=require(_0x080b('0x4'));var config=require(_0x080b('0x5'));var logger=require(_0x080b('0x6'))(_0x080b('0x7'));var ami=require('../ami');var Channel=require(_0x080b('0x8'));var statusDesc=[_0x080b('0x9'),'not_inuse',_0x080b('0xa'),_0x080b('0xb'),_0x080b('0xc'),_0x080b('0xd'),'ringing',_0x080b('0xe'),_0x080b('0xf')];var applications=[_0x080b('0x10'),'queue',_0x080b('0x11'),_0x080b('0x12'),_0x080b('0x13'),'voicemail'];var dispositions=[_0x080b('0x14'),_0x080b('0x15'),_0x080b('0x15'),'NO\x20ANSWER',_0x080b('0x14'),'NO\x20ANSWER',_0x080b('0x16'),_0x080b('0x17'),_0x080b('0x15'),'FAILED',_0x080b('0x15')];var actions={};config['redis']=_[_0x080b('0x18')](config['redis'],{'host':_0x080b('0x19'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x080b('0x1a')]));function VoiceCallReport(_0x17e347){this[_0x080b('0x1b')]=_0x17e347['channels'];this[_0x080b('0x1c')]=_0x17e347[_0x080b('0x1c')];ami['on'](_0x080b('0x1d'),this[_0x080b('0x1e')][_0x080b('0x1f')](this));ami['on'](_0x080b('0x20'),this[_0x080b('0x1e')][_0x080b('0x1f')](this));ami['on']('newchannel',this[_0x080b('0x21')]['bind'](this));ami['on'](_0x080b('0x22'),this[_0x080b('0x23')][_0x080b('0x1f')](this));ami['on']('varset',this[_0x080b('0x24')][_0x080b('0x1f')](this));ami['on'](_0x080b('0x25'),this[_0x080b('0x26')][_0x080b('0x1f')](this));ami['on']('newcallerid',this[_0x080b('0x27')][_0x080b('0x1f')](this));ami['on'](_0x080b('0x28'),this[_0x080b('0x29')][_0x080b('0x1f')](this));ami['on'](_0x080b('0x2a'),this[_0x080b('0x2b')][_0x080b('0x1f')](this));ami['on'](_0x080b('0x2c'),this['syncMusicOnHoldStart'][_0x080b('0x1f')](this));ami['on'](_0x080b('0x2d'),this['syncMusicOnHoldStop'][_0x080b('0x1f')](this));return BPromise[_0x080b('0x2e')]()[_0x080b('0x2f')](ami[_0x080b('0x30')]())[_0x080b('0x31')](function(_0x3f2fd3){console[_0x080b('0x32')](_0x3f2fd3);});}VoiceCallReport[_0x080b('0x33')][_0x080b('0x34')]=function(_0x1a27c5){return _0x1a27c5!==null&&!_[_0x080b('0x35')](_0x1a27c5);};VoiceCallReport[_0x080b('0x33')][_0x080b('0x36')]=function(_0x4fa4c0,_0x1c28cb,_0x3bd24b){io['to'](_0x4fa4c0)[_0x080b('0x36')](_0x1c28cb,_0x3bd24b);};VoiceCallReport['prototype']['syncNewCallerId']=function(_0x2b7151){try{if(this['isNotNull'](_0x2b7151)){if(_0x2b7151['uniqueid']===_0x2b7151[_0x080b('0x37')]){if(!_['isUndefined'](this[_0x080b('0x1b')][_0x2b7151[_0x080b('0x38')]])){_[_0x080b('0x39')](this[_0x080b('0x1b')][_0x2b7151['uniqueid']],_[_0x080b('0x3a')](_0x2b7151,_[_0x080b('0x3b')](this[_0x080b('0x1b')][_0x2b7151[_0x080b('0x38')]])));}}}}catch(_0x4257d0){logger[_0x080b('0x3c')](_0x080b('0x3d'),util[_0x080b('0x3e')](_0x4257d0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x080b('0x33')][_0x080b('0x21')]=function(_0x1763c1){try{if(this[_0x080b('0x34')](_0x1763c1)){if(_0x1763c1['uniqueid']===_0x1763c1[_0x080b('0x37')]&&_0x1763c1[_0x080b('0x3f')]!=_0x080b('0x40')){if(_[_0x080b('0x35')](this[_0x080b('0x1b')][_0x1763c1['uniqueid']])){this['channels'][_0x1763c1[_0x080b('0x38')]]=new Channel();this[_0x080b('0x1b')][_0x1763c1[_0x080b('0x38')]][_0x080b('0x41')]=moment()[_0x080b('0x42')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x1763c1['uniqueid']][_0x080b('0x43')]=dispositions[_['toNumber'](_0x1763c1[_0x080b('0x44')])];_[_0x080b('0x39')](this[_0x080b('0x1b')][_0x1763c1[_0x080b('0x38')]],_[_0x080b('0x3a')](_0x1763c1,_[_0x080b('0x3b')](this[_0x080b('0x1b')][_0x1763c1[_0x080b('0x38')]])));if(_0x1763c1[_0x080b('0x45')]===_0x080b('0x46')){if(this[_0x080b('0x1c')][_0x1763c1[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]]){this['agents'][_0x1763c1[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]][_0x080b('0x48')]=_0x1763c1['exten'];this['emit'](util[_0x080b('0x42')](_0x080b('0x49'),this[_0x080b('0x1c')][_0x1763c1[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]][_0x080b('0x4a')]),_0x080b('0x4b'),{'destaccountcode':this['agents'][_0x1763c1[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]][_0x080b('0x4c')],'destconnectedlinenum':_0x1763c1['exten']});}}}}}}catch(_0x58fe43){logger[_0x080b('0x3c')]('[syncNewChannel][VoiceCallReport]',util[_0x080b('0x3e')](_0x58fe43,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x080b('0x1e')]=function(_0x16f688){try{if(this[_0x080b('0x34')](_0x16f688)){if(_0x16f688['uniqueid']===_0x16f688[_0x080b('0x37')]&&_0x16f688['exten']!='h'&&_0x16f688[_0x080b('0x3f')]!=_0x080b('0x40')){_0x16f688[_0x080b('0x4d')]=_0x16f688[_0x080b('0x4d')]['toLowerCase']();_0x16f688['applicationdata']=(_0x16f688[_0x080b('0x4e')]||_0x16f688[_0x080b('0x4f')])[_0x080b('0x50')]();if(_['isUndefined'](this[_0x080b('0x1b')][_0x16f688['uniqueid']])){this['channels'][_0x16f688[_0x080b('0x38')]]=new Channel();this[_0x080b('0x1b')][_0x16f688[_0x080b('0x38')]][_0x080b('0x41')]=_0x16f688[_0x080b('0x51')]?moment()['subtract'](moment[_0x080b('0x51')](_0x16f688[_0x080b('0x51')])[_0x080b('0x52')](),'seconds')[_0x080b('0x42')](_0x080b('0x53')):moment()[_0x080b('0x42')](_0x080b('0x53'));this[_0x080b('0x1b')][_0x16f688['uniqueid']][_0x080b('0x43')]=_0x080b('0x14');}_[_0x080b('0x39')](this[_0x080b('0x1b')][_0x16f688[_0x080b('0x38')]],_[_0x080b('0x3a')](_0x16f688,_[_0x080b('0x3b')](this[_0x080b('0x1b')][_0x16f688[_0x080b('0x38')]])));if(_[_0x080b('0x54')](applications,_0x16f688[_0x080b('0x4d')])){this['channels'][_0x16f688['uniqueid']]['lastapplication']=_0x16f688[_0x080b('0x4d')];this[_0x080b('0x1b')][_0x16f688['uniqueid']][_0x080b('0x55')]=_0x16f688[_0x080b('0x4f')];if(_0x16f688['application']===_0x080b('0x10')&&_[_0x080b('0x56')](_0x16f688['applicationdata'],'cdr(')){var _0x453318=_0x16f688[_0x080b('0x4f')][_0x080b('0x47')]('=');var _0x17dd03=_0x453318[0x0][_0x080b('0x57')](/cdr\((.*)\)/);if(_0x17dd03){this['channels'][_0x16f688[_0x080b('0x38')]][_0x17dd03[0x1]]=_0x453318[0x1];}}else if(_0x16f688[_0x080b('0x4d')]==='queue'){this['channels'][_0x16f688['uniqueid']]['queue']=_0x16f688[_0x080b('0x4f')][_0x080b('0x47')](',')[0x0];}}}}}catch(_0xec33d5){logger[_0x080b('0x3c')]('[syncNewExten][VoiceCallReport]',util[_0x080b('0x3e')](_0xec33d5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x080b('0x33')][_0x080b('0x23')]=function(_0x30051c){try{if(this[_0x080b('0x34')](_0x30051c)){if(_0x30051c[_0x080b('0x38')]!==_0x30051c['linkedid']){if(this[_0x080b('0x1b')][_0x30051c[_0x080b('0x37')]]){if(_0x30051c['channelstate']==='6'){if(!this[_0x080b('0x1b')][_0x30051c[_0x080b('0x37')]][_0x080b('0x58')]){var _0x4bc70a=moment();this['channels'][_0x30051c[_0x080b('0x37')]][_0x080b('0x58')]=!![];this[_0x080b('0x1b')][_0x30051c['linkedid']]['answertime']=_0x4bc70a[_0x080b('0x42')](_0x080b('0x53'));if(this[_0x080b('0x1b')][_0x30051c['linkedid']][_0x080b('0x41')]){this[_0x080b('0x1b')][_0x30051c[_0x080b('0x37')]][_0x080b('0x59')]=_0x4bc70a['diff'](this['channels'][_0x30051c[_0x080b('0x37')]]['starttime'],_0x080b('0x52'));}}this[_0x080b('0x1b')][_0x30051c['linkedid']][_0x080b('0x37')]=_0x30051c['uniqueid'];if(_0x30051c[_0x080b('0x5a')]!==_0x080b('0x5b')){this[_0x080b('0x1b')][_0x30051c[_0x080b('0x37')]][_0x080b('0x5c')]=_0x30051c[_0x080b('0x5a')];}this[_0x080b('0x1b')][_0x30051c[_0x080b('0x37')]][_0x080b('0x5d')]=_0x30051c['calleridname'];this['channels'][_0x30051c[_0x080b('0x37')]]['destinationchannel']=_0x30051c[_0x080b('0x3f')];this[_0x080b('0x1b')][_0x30051c['linkedid']][_0x080b('0x43')]=dispositions[_[_0x080b('0x5e')](_0x30051c[_0x080b('0x44')])];if(this[_0x080b('0x1c')][_0x30051c[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]]){this[_0x080b('0x1b')][_0x30051c[_0x080b('0x37')]][_0x080b('0x5f')]=this[_0x080b('0x1c')][_0x30051c[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]]['id'];this[_0x080b('0x1b')][_0x30051c[_0x080b('0x37')]]['membername']=this[_0x080b('0x1c')][_0x30051c[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]][_0x080b('0x4a')];}}}}else{if(this[_0x080b('0x1b')][_0x30051c[_0x080b('0x38')]]){if(_0x30051c[_0x080b('0x44')]==='6'){if(this['agents'][_0x30051c[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]]){this[_0x080b('0x1b')][_0x30051c['uniqueid']]['UserId']=this[_0x080b('0x1c')][_0x30051c[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]]['id'];this[_0x080b('0x1b')][_0x30051c[_0x080b('0x38')]][_0x080b('0x60')]=this['agents'][_0x30051c['channel']['split']('-')[0x0]][_0x080b('0x4a')];}}}}}}catch(_0x23cd59){logger[_0x080b('0x3c')](_0x080b('0x61'),util[_0x080b('0x3e')](_0x23cd59,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x080b('0x33')][_0x080b('0x62')]=function(_0x5e333f,_0x433eb6){if(this[_0x080b('0x1b')][_0x5e333f]){this[_0x080b('0x1b')][_0x5e333f][_0x080b('0x63')]=!![];if(_[_0x080b('0x64')](_0x433eb6,_0x080b('0x65'))){_0x433eb6=_0x433eb6[_0x080b('0x66')](_0x080b('0x65'),_0x080b('0x67'));}this[_0x080b('0x1b')][_0x5e333f][_0x080b('0x68')]=_0x433eb6;var _0x45cba1=_[_0x080b('0x69')](this[_0x080b('0x1b')][_0x5e333f][_0x080b('0x6a')],{'filename':_0x433eb6});if(_[_0x080b('0x6b')](_0x45cba1)){this[_0x080b('0x1b')][_0x5e333f][_0x080b('0x6a')][_0x080b('0x6c')]({'filename':_0x433eb6,'createdAt':moment()['format'](_0x080b('0x53')),'mixmonitorid':'','status':'rec'});}}};VoiceCallReport['prototype'][_0x080b('0x24')]=function(_0x294afc){try{if(this[_0x080b('0x34')](_0x294afc)){if(this[_0x080b('0x1b')][_0x294afc[_0x080b('0x38')]]&&_0x294afc[_0x080b('0x3f')]!=_0x080b('0x40')){if(this[_0x080b('0x34')](_0x294afc['variable'])){if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')]['mixmonitor_filename'])){this['syncMixMonitorFilename'](_0x294afc[_0x080b('0x38')],_0x294afc[_0x080b('0x6e')]);}else if(this[_0x080b('0x34')](_0x294afc['variable'][_0x080b('0x6f')])){this[_0x080b('0x1b')][_0x294afc[_0x080b('0x38')]]['calleridnum']=_0x294afc[_0x080b('0x6e')];}else if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x70')])){this[_0x080b('0x1b')][_0x294afc['uniqueid']][_0x080b('0x71')]=_0x294afc[_0x080b('0x6e')];}else if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x72')])){this[_0x080b('0x1b')][_0x294afc['uniqueid']]['type']=_0x294afc['value'];}else if(this['isNotNull'](_0x294afc[_0x080b('0x6d')][_0x080b('0x73')])){this[_0x080b('0x1b')][_0x294afc['uniqueid']][_0x080b('0x74')]=_0x294afc[_0x080b('0x6e')][_0x080b('0x47')](',')[0x0];}else if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x75')])){this[_0x080b('0x1b')][_0x294afc['uniqueid']][_0x080b('0x76')]=_0x294afc[_0x080b('0x6e')];}else if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x77')])){this[_0x080b('0x1b')][_0x294afc[_0x080b('0x38')]][_0x080b('0x78')]=_0x294afc[_0x080b('0x6e')];}else if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x79')])){this[_0x080b('0x1b')][_0x294afc[_0x080b('0x38')]][_0x080b('0x7a')]=_0x294afc[_0x080b('0x6e')];}else if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x7b')])){this[_0x080b('0x1b')][_0x294afc[_0x080b('0x38')]][_0x080b('0x74')]=_0x294afc['value'];}else if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x7c')])){this[_0x080b('0x1b')][_0x294afc[_0x080b('0x38')]][_0x080b('0x7d')]=_0x294afc[_0x080b('0x6e')];}}}else if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x7e')])){if(_0x294afc[_0x080b('0x6e')]){var _0x37c134=path[_0x080b('0x7f')](_0x294afc[_0x080b('0x6e')])[_0x080b('0x4a')];this[_0x080b('0x62')](_0x37c134,_0x294afc[_0x080b('0x6e')]);}}else if(this['channels'][_0x294afc[_0x080b('0x37')]]){if(this['isNotNull'](_0x294afc[_0x080b('0x6d')])){if(this[_0x080b('0x34')](_0x294afc[_0x080b('0x6d')][_0x080b('0x7c')])){this[_0x080b('0x1b')][_0x294afc['linkedid']][_0x080b('0x80')]=_0x294afc[_0x080b('0x6e')];}}}}}catch(_0xef20bd){logger[_0x080b('0x3c')](_0x080b('0x81'),util[_0x080b('0x3e')](_0xef20bd,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x080b('0x33')]['syncHangup']=function(_0xf6d2){try{if(this['isNotNull'](_0xf6d2)){if(this[_0x080b('0x1b')][_0xf6d2[_0x080b('0x38')]]){var _0x5dd716=moment();this['channels'][_0xf6d2[_0x080b('0x38')]][_0x080b('0x82')]=_0x5dd716['format'](_0x080b('0x53'));this[_0x080b('0x1b')][_0xf6d2['uniqueid']][_0x080b('0x51')]=_0x5dd716[_0x080b('0x83')](this[_0x080b('0x1b')][_0xf6d2[_0x080b('0x38')]][_0x080b('0x41')],'seconds');if(this[_0x080b('0x1b')][_0xf6d2[_0x080b('0x38')]][_0x080b('0x58')]){this['channels'][_0xf6d2['uniqueid']][_0x080b('0x84')]=_0x5dd716[_0x080b('0x83')](this['channels'][_0xf6d2['uniqueid']][_0x080b('0x85')],'seconds');this[_0x080b('0x1b')][_0xf6d2['uniqueid']][_0x080b('0x59')]=this[_0x080b('0x1b')][_0xf6d2['uniqueid']][_0x080b('0x51')]-this['channels'][_0xf6d2[_0x080b('0x38')]][_0x080b('0x84')];}if(_0xf6d2[_0x080b('0x45')]==='from-sip'){if(this[_0x080b('0x1c')][_0xf6d2[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]]){this[_0x080b('0x1c')][_0xf6d2[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]]=_[_0x080b('0x86')](this[_0x080b('0x1c')][_0xf6d2[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]],['destconnectedlinenum']);this['emit'](util[_0x080b('0x42')](_0x080b('0x49'),this[_0x080b('0x1c')][_0xf6d2[_0x080b('0x3f')]['split']('-')[0x0]][_0x080b('0x4a')]),_0x080b('0x87'),{'destaccountcode':this['agents'][_0xf6d2[_0x080b('0x3f')][_0x080b('0x47')]('-')[0x0]][_0x080b('0x4c')]});}}ami[_0x080b('0x36')](_0x080b('0x88'),this[_0x080b('0x1b')][_0xf6d2[_0x080b('0x38')]]);delete this[_0x080b('0x1b')][_0xf6d2[_0x080b('0x38')]];}}}catch(_0x1c0822){logger[_0x080b('0x3c')]('[syncHangup][VoiceCallReport]',util['inspect'](_0x1c0822,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x080b('0x29')]=function(_0x52fc50){try{if(this[_0x080b('0x34')](_0x52fc50)){if(this[_0x080b('0x1b')][_0x52fc50['transfereeuniqueid']]){this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x89')]][_0x080b('0x8a')]=_0x52fc50['origtransferercalleridnum'];this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x89')]][_0x080b('0x8b')]=_0x52fc50[_0x080b('0x8c')];if(this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x8d')]]){var _0x44a3fa=this['channels'][_0x52fc50[_0x080b('0x8d')]];this[_0x080b('0x1b')][_0x52fc50['secondtransfereruniqueid']]=this[_0x080b('0x1b')][_0x52fc50['transfereeuniqueid']];this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x89')]]=_0x44a3fa;}}else if(this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x8e')]]){this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x8e')]]['transfercalleridnum']=_0x52fc50[_0x080b('0x8f')];this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x8e')]][_0x080b('0x8b')]=_0x52fc50[_0x080b('0x8c')];if(this[_0x080b('0x1b')][_0x52fc50['origtransfereruniqueid']]){var _0x44a3fa=this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x90')]];this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x90')]]=this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x8e')]];this[_0x080b('0x1b')][_0x52fc50[_0x080b('0x8e')]]=_0x44a3fa;}}}}catch(_0x2b02e3){logger['error'](_0x080b('0x91'),util[_0x080b('0x3e')](_0x2b02e3,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x080b('0x2b')]=function(_0x20f844){try{if(this[_0x080b('0x34')](_0x20f844)){if(this['channels'][_0x20f844[_0x080b('0x89')]]){this[_0x080b('0x1b')][_0x20f844['transfereeuniqueid']][_0x080b('0x8a')]=_0x20f844['transfereecalleridnum'];this[_0x080b('0x1b')][_0x20f844[_0x080b('0x89')]][_0x080b('0x8b')]=_0x20f844[_0x080b('0x92')];this['syncHangup']({'event':_0x080b('0x93'),'uniqueid':_0x20f844[_0x080b('0x89')],'context':_0x20f844['context'],'channel':_0x20f844['transfererchannel']});}}}catch(_0x197bbb){logger[_0x080b('0x3c')](_0x080b('0x94'),util['inspect'](_0x197bbb,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x080b('0x95')]=function(_0x1e27c9){try{if(this[_0x080b('0x34')](_0x1e27c9)){if(this[_0x080b('0x1b')][_0x1e27c9[_0x080b('0x38')]]){if(!_[_0x080b('0x6b')](this[_0x080b('0x1b')][_0x1e27c9[_0x080b('0x38')]]['answertime'])){this[_0x080b('0x1b')][_0x1e27c9[_0x080b('0x38')]][_0x080b('0x96')]=moment()[_0x080b('0x42')](_0x080b('0x53'));}}}}catch(_0x32a537){logger[_0x080b('0x3c')]('[syncMusicOnHoldStart][VoiceCallReport]',util[_0x080b('0x3e')](_0x32a537,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x080b('0x33')][_0x080b('0x97')]=function(_0x51165f){try{if(this[_0x080b('0x34')](_0x51165f)){if(this['channels'][_0x51165f['uniqueid']]){if(!_[_0x080b('0x6b')](this['channels'][_0x51165f[_0x080b('0x38')]]['mohstarttime'])){this['channels'][_0x51165f[_0x080b('0x38')]][_0x080b('0x98')]+=moment()[_0x080b('0x99')](0x0)[_0x080b('0x83')](this['channels'][_0x51165f['uniqueid']][_0x080b('0x96')],_0x080b('0x52'));delete this['channels'][_0x51165f[_0x080b('0x38')]][_0x080b('0x96')];}}}}catch(_0x5a0b8e){logger[_0x080b('0x3c')]('[syncMusicOnHoldStop][VoiceCallReport]',util[_0x080b('0x3e')](_0x5a0b8e,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0x82c0=['toLowerCase','applicationdata','appdata','starttime','duration','subtract','seconds','includes','lastapplication','lastdata','startsWith','cdr(','match','[syncNewExten][VoiceCallReport]','syncNewState','answered','answertime','diff','calleridnum','xcally-motion-preview','connectedlinenum','connectedlinename','membername','UserId','[syncNewState][VoiceCallReport]','syncMixMonitorFilename','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','isNil','push','variable','value','xmd-phone','xmd-callerid','callerid','xmd-cdrtype','type','xmd-queue','xmd-destination','destination','xmd-callerid-preview','calleridpreview','sipcalluniqueid','mixmonitor_filename','parse','sipcallid','sipcalllinkedid','[syncVarSet][VoiceCallReport]','endtime','billableseconds','holdtime','omit','destconnectedlinenum','user:%s','user:agentcomplete','transfercalleridnum','origtransferercalleridnum','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','transferconnectedlinenum','transfertargetcalleridnum','origtransfereruniqueid','[syncAttendedTransfer][VoiceCallReport]','transfereecalleridnum','extension','transfererchannel','[syncBlindTransfer][VoiceCallReport]','mohstarttime','[syncMusicOnHoldStart][VoiceCallReport]','mohtime','[syncMusicOnHoldStop][VoiceCallReport]','bluebird','lodash','util','path','ioredis','../../../config/environment','../ami','../model/channel','not_inuse','invalid','unavailable','ringing','onhold','set','queue','agi','dial','voicemail','NO\x20ANSWER','FAILED','ANSWERED','defaults','redis','localhost','socket.io-emitter','channels','agents','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','varset','syncVarSet','hangup','syncHangup','syncNewCallerId','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','resolve','then','actionCoreShowChannels','catch','log','prototype','isNotNull','isUndefined','emit','linkedid','uniqueid','pick','keys','error','[syncNewCallerId][VoiceCallReport]','channel','format','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','merge','context','from-sip','exten','split','name','user:agentconnect','accountcode','[syncNewChannel][VoiceCallReport]','inspect','OutgoingSpoolFailed','application'];(function(_0x540f6f,_0x4693ff){var _0x5765a1=function(_0x265183){while(--_0x265183){_0x540f6f['push'](_0x540f6f['shift']());}};_0x5765a1(++_0x4693ff);}(_0x82c0,0xe8));var _0x082c=function(_0x4dc428,_0x3b3dbd){_0x4dc428=_0x4dc428-0x0;var _0x5b45f7=_0x82c0[_0x4dc428];return _0x5b45f7;};'use strict';var BPromise=require(_0x082c('0x0'));var _=require(_0x082c('0x1'));var moment=require('moment');var util=require(_0x082c('0x2'));var path=require(_0x082c('0x3'));var Redis=require(_0x082c('0x4'));var config=require(_0x082c('0x5'));var logger=require('../../../config/logger')('ami');var ami=require(_0x082c('0x6'));var Channel=require(_0x082c('0x7'));var statusDesc=['unknown',_0x082c('0x8'),'inuse','busy',_0x082c('0x9'),_0x082c('0xa'),_0x082c('0xb'),'ringinuse',_0x082c('0xc')];var applications=[_0x082c('0xd'),_0x082c('0xe'),_0x082c('0xf'),_0x082c('0x10'),'playback',_0x082c('0x11')];var dispositions=[_0x082c('0x12'),_0x082c('0x13'),'FAILED',_0x082c('0x12'),'NO\x20ANSWER',_0x082c('0x12'),_0x082c('0x14'),'BUSY','FAILED',_0x082c('0x13'),_0x082c('0x13')];var actions={};config['redis']=_[_0x082c('0x15')](config[_0x082c('0x16')],{'host':_0x082c('0x17'),'port':0x18eb});var io=require(_0x082c('0x18'))(new Redis(config[_0x082c('0x16')]));function VoiceCallReport(_0x5f1f95){this[_0x082c('0x19')]=_0x5f1f95[_0x082c('0x19')];this[_0x082c('0x1a')]=_0x5f1f95['agents'];ami['on'](_0x082c('0x1b'),this[_0x082c('0x1c')][_0x082c('0x1d')](this));ami['on'](_0x082c('0x1e'),this[_0x082c('0x1c')][_0x082c('0x1d')](this));ami['on'](_0x082c('0x1f'),this[_0x082c('0x20')][_0x082c('0x1d')](this));ami['on'](_0x082c('0x21'),this['syncNewState'][_0x082c('0x1d')](this));ami['on'](_0x082c('0x22'),this[_0x082c('0x23')][_0x082c('0x1d')](this));ami['on'](_0x082c('0x24'),this[_0x082c('0x25')][_0x082c('0x1d')](this));ami['on']('newcallerid',this[_0x082c('0x26')][_0x082c('0x1d')](this));ami['on'](_0x082c('0x27'),this[_0x082c('0x28')][_0x082c('0x1d')](this));ami['on']('blindtransfer',this[_0x082c('0x29')][_0x082c('0x1d')](this));ami['on']('musiconholdstart',this[_0x082c('0x2a')][_0x082c('0x1d')](this));ami['on'](_0x082c('0x2b'),this[_0x082c('0x2c')]['bind'](this));return BPromise[_0x082c('0x2d')]()[_0x082c('0x2e')](ami[_0x082c('0x2f')]())[_0x082c('0x30')](function(_0x1ffbae){console[_0x082c('0x31')](_0x1ffbae);});}VoiceCallReport[_0x082c('0x32')][_0x082c('0x33')]=function(_0x22995e){return _0x22995e!==null&&!_[_0x082c('0x34')](_0x22995e);};VoiceCallReport[_0x082c('0x32')]['emit']=function(_0xe2410f,_0x3b9833,_0x3f88cb){io['to'](_0xe2410f)[_0x082c('0x35')](_0x3b9833,_0x3f88cb);};VoiceCallReport[_0x082c('0x32')][_0x082c('0x26')]=function(_0x4f39a7){try{if(this[_0x082c('0x33')](_0x4f39a7)){if(_0x4f39a7['uniqueid']===_0x4f39a7[_0x082c('0x36')]){if(!_['isUndefined'](this[_0x082c('0x19')][_0x4f39a7[_0x082c('0x37')]])){_['merge'](this[_0x082c('0x19')][_0x4f39a7['uniqueid']],_[_0x082c('0x38')](_0x4f39a7,_[_0x082c('0x39')](this[_0x082c('0x19')][_0x4f39a7[_0x082c('0x37')]])));}}}}catch(_0x3d8243){logger[_0x082c('0x3a')](_0x082c('0x3b'),util['inspect'](_0x3d8243,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')]['syncNewChannel']=function(_0x288bff){try{if(this['isNotNull'](_0x288bff)){if(_0x288bff[_0x082c('0x37')]===_0x288bff[_0x082c('0x36')]&&_0x288bff[_0x082c('0x3c')]!='OutgoingSpoolFailed'){if(_[_0x082c('0x34')](this[_0x082c('0x19')][_0x288bff[_0x082c('0x37')]])){this[_0x082c('0x19')][_0x288bff[_0x082c('0x37')]]=new Channel();this['channels'][_0x288bff[_0x082c('0x37')]]['starttime']=moment()[_0x082c('0x3d')](_0x082c('0x3e'));this[_0x082c('0x19')][_0x288bff[_0x082c('0x37')]][_0x082c('0x3f')]=dispositions[_[_0x082c('0x40')](_0x288bff[_0x082c('0x41')])];_[_0x082c('0x42')](this[_0x082c('0x19')][_0x288bff[_0x082c('0x37')]],_[_0x082c('0x38')](_0x288bff,_[_0x082c('0x39')](this['channels'][_0x288bff[_0x082c('0x37')]])));if(_0x288bff[_0x082c('0x43')]===_0x082c('0x44')){if(this[_0x082c('0x1a')][_0x288bff[_0x082c('0x3c')]['split']('-')[0x0]]){this['agents'][_0x288bff[_0x082c('0x3c')]['split']('-')[0x0]]['destconnectedlinenum']=_0x288bff[_0x082c('0x45')];this[_0x082c('0x35')](util[_0x082c('0x3d')]('user:%s',this[_0x082c('0x1a')][_0x288bff['channel'][_0x082c('0x46')]('-')[0x0]][_0x082c('0x47')]),_0x082c('0x48'),{'destaccountcode':this[_0x082c('0x1a')][_0x288bff[_0x082c('0x3c')][_0x082c('0x46')]('-')[0x0]][_0x082c('0x49')],'destconnectedlinenum':_0x288bff['exten']});}}}}}}catch(_0x54c4af){logger[_0x082c('0x3a')](_0x082c('0x4a'),util[_0x082c('0x4b')](_0x54c4af,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')]['syncNewExten']=function(_0x4c0bac){try{if(this['isNotNull'](_0x4c0bac)){if(_0x4c0bac[_0x082c('0x37')]===_0x4c0bac['linkedid']&&_0x4c0bac[_0x082c('0x45')]!='h'&&_0x4c0bac['channel']!=_0x082c('0x4c')){_0x4c0bac[_0x082c('0x4d')]=_0x4c0bac[_0x082c('0x4d')][_0x082c('0x4e')]();_0x4c0bac[_0x082c('0x4f')]=(_0x4c0bac[_0x082c('0x50')]||_0x4c0bac['applicationdata'])[_0x082c('0x4e')]();if(_[_0x082c('0x34')](this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]])){this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]]=new Channel();this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]][_0x082c('0x51')]=_0x4c0bac[_0x082c('0x52')]?moment()[_0x082c('0x53')](moment[_0x082c('0x52')](_0x4c0bac[_0x082c('0x52')])[_0x082c('0x54')](),'seconds')[_0x082c('0x3d')]('YYYY-MM-DD\x20HH:mm:ss'):moment()[_0x082c('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]][_0x082c('0x3f')]='NO\x20ANSWER';}_['merge'](this['channels'][_0x4c0bac[_0x082c('0x37')]],_[_0x082c('0x38')](_0x4c0bac,_[_0x082c('0x39')](this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]])));if(_[_0x082c('0x55')](applications,_0x4c0bac[_0x082c('0x4d')])){this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]][_0x082c('0x56')]=_0x4c0bac['application'];this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]][_0x082c('0x57')]=_0x4c0bac[_0x082c('0x4f')];if(_0x4c0bac[_0x082c('0x4d')]===_0x082c('0xd')&&_[_0x082c('0x58')](_0x4c0bac[_0x082c('0x4f')],_0x082c('0x59'))){var _0x4c8ce8=_0x4c0bac[_0x082c('0x4f')][_0x082c('0x46')]('=');var _0x2384a5=_0x4c8ce8[0x0][_0x082c('0x5a')](/cdr\((.*)\)/);if(_0x2384a5){this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]][_0x2384a5[0x1]]=_0x4c8ce8[0x1];}}else if(_0x4c0bac[_0x082c('0x4d')]==='queue'){this[_0x082c('0x19')][_0x4c0bac[_0x082c('0x37')]][_0x082c('0xe')]=_0x4c0bac[_0x082c('0x4f')][_0x082c('0x46')](',')[0x0];}}}}}catch(_0x3c8952){logger[_0x082c('0x3a')](_0x082c('0x5b'),util[_0x082c('0x4b')](_0x3c8952,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')][_0x082c('0x5c')]=function(_0x29a9fc){try{if(this[_0x082c('0x33')](_0x29a9fc)){if(_0x29a9fc[_0x082c('0x37')]!==_0x29a9fc['linkedid']){if(this[_0x082c('0x19')][_0x29a9fc['linkedid']]){if(_0x29a9fc['channelstate']==='6'){if(!this['channels'][_0x29a9fc[_0x082c('0x36')]]['answered']){var _0x4e4409=moment();this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x36')]][_0x082c('0x5d')]=!![];this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x36')]][_0x082c('0x5e')]=_0x4e4409[_0x082c('0x3d')](_0x082c('0x3e'));if(this[_0x082c('0x19')][_0x29a9fc['linkedid']][_0x082c('0x51')]){this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x36')]]['holdtime']=_0x4e4409[_0x082c('0x5f')](this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x36')]][_0x082c('0x51')],_0x082c('0x54'));}}this['channels'][_0x29a9fc['linkedid']]['linkedid']=_0x29a9fc[_0x082c('0x37')];if(_0x29a9fc[_0x082c('0x60')]!==_0x082c('0x61')){this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x36')]][_0x082c('0x62')]=_0x29a9fc[_0x082c('0x60')];}this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x36')]][_0x082c('0x63')]=_0x29a9fc['calleridname'];this['channels'][_0x29a9fc[_0x082c('0x36')]]['destinationchannel']=_0x29a9fc[_0x082c('0x3c')];this['channels'][_0x29a9fc[_0x082c('0x36')]][_0x082c('0x3f')]=dispositions[_[_0x082c('0x40')](_0x29a9fc[_0x082c('0x41')])];if(this[_0x082c('0x1a')][_0x29a9fc[_0x082c('0x3c')][_0x082c('0x46')]('-')[0x0]]){this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x36')]]['UserId']=this[_0x082c('0x1a')][_0x29a9fc[_0x082c('0x3c')][_0x082c('0x46')]('-')[0x0]]['id'];this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x36')]][_0x082c('0x64')]=this[_0x082c('0x1a')][_0x29a9fc['channel']['split']('-')[0x0]][_0x082c('0x47')];}}}}else{if(this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x37')]]){if(_0x29a9fc['channelstate']==='6'){if(this['agents'][_0x29a9fc[_0x082c('0x3c')]['split']('-')[0x0]]){this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x37')]][_0x082c('0x65')]=this[_0x082c('0x1a')][_0x29a9fc[_0x082c('0x3c')][_0x082c('0x46')]('-')[0x0]]['id'];this[_0x082c('0x19')][_0x29a9fc[_0x082c('0x37')]][_0x082c('0x64')]=this[_0x082c('0x1a')][_0x29a9fc[_0x082c('0x3c')][_0x082c('0x46')]('-')[0x0]][_0x082c('0x47')];}}}}}}catch(_0x437913){logger['error'](_0x082c('0x66'),util[_0x082c('0x4b')](_0x437913,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')][_0x082c('0x67')]=function(_0x10fb0f,_0x1cfcd5){if(this['channels'][_0x10fb0f]){this[_0x082c('0x19')][_0x10fb0f][_0x082c('0x68')]=!![];if(_[_0x082c('0x69')](_0x1cfcd5,_0x082c('0x6a'))){_0x1cfcd5=_0x1cfcd5['replace']('.wav49',_0x082c('0x6b'));}this[_0x082c('0x19')][_0x10fb0f][_0x082c('0x6c')]=_0x1cfcd5;var _0x3caaeb=_[_0x082c('0x6d')](this['channels'][_0x10fb0f][_0x082c('0x6e')],{'filename':_0x1cfcd5});if(_[_0x082c('0x6f')](_0x3caaeb)){this[_0x082c('0x19')][_0x10fb0f]['monitors'][_0x082c('0x70')]({'filename':_0x1cfcd5,'createdAt':moment()[_0x082c('0x3d')](_0x082c('0x3e')),'mixmonitorid':'','status':'rec'});}}};VoiceCallReport[_0x082c('0x32')][_0x082c('0x23')]=function(_0x37efc8){try{if(this['isNotNull'](_0x37efc8)){if(this[_0x082c('0x19')][_0x37efc8[_0x082c('0x37')]]&&_0x37efc8[_0x082c('0x3c')]!=_0x082c('0x4c')){if(this[_0x082c('0x33')](_0x37efc8[_0x082c('0x71')])){if(this['isNotNull'](_0x37efc8[_0x082c('0x71')]['mixmonitor_filename'])){this[_0x082c('0x67')](_0x37efc8[_0x082c('0x37')],_0x37efc8[_0x082c('0x72')]);}else if(this[_0x082c('0x33')](_0x37efc8[_0x082c('0x71')][_0x082c('0x73')])){this['channels'][_0x37efc8[_0x082c('0x37')]]['calleridnum']=_0x37efc8[_0x082c('0x72')];}else if(this[_0x082c('0x33')](_0x37efc8['variable'][_0x082c('0x74')])){this[_0x082c('0x19')][_0x37efc8[_0x082c('0x37')]][_0x082c('0x75')]=_0x37efc8[_0x082c('0x72')];}else if(this[_0x082c('0x33')](_0x37efc8[_0x082c('0x71')][_0x082c('0x76')])){this[_0x082c('0x19')][_0x37efc8[_0x082c('0x37')]][_0x082c('0x77')]=_0x37efc8[_0x082c('0x72')];}else if(this[_0x082c('0x33')](_0x37efc8[_0x082c('0x71')][_0x082c('0x78')])){this[_0x082c('0x19')][_0x37efc8['uniqueid']][_0x082c('0xe')]=_0x37efc8['value'][_0x082c('0x46')](',')[0x0];}else if(this['isNotNull'](_0x37efc8[_0x082c('0x71')]['xmd-originatecalleridnum'])){this[_0x082c('0x19')][_0x37efc8['uniqueid']]['originatecalleridnum']=_0x37efc8['value'];}else if(this['isNotNull'](_0x37efc8['variable'][_0x082c('0x79')])){this[_0x082c('0x19')][_0x37efc8[_0x082c('0x37')]][_0x082c('0x7a')]=_0x37efc8['value'];}else if(this[_0x082c('0x33')](_0x37efc8[_0x082c('0x71')][_0x082c('0x7b')])){this[_0x082c('0x19')][_0x37efc8['uniqueid']][_0x082c('0x7c')]=_0x37efc8[_0x082c('0x72')];}else if(this[_0x082c('0x33')](_0x37efc8['variable']['xmcs-queue'])){this[_0x082c('0x19')][_0x37efc8[_0x082c('0x37')]]['queue']=_0x37efc8[_0x082c('0x72')];}else if(this[_0x082c('0x33')](_0x37efc8[_0x082c('0x71')]['sipcallid'])){this[_0x082c('0x19')][_0x37efc8[_0x082c('0x37')]][_0x082c('0x7d')]=_0x37efc8[_0x082c('0x72')];}}}else if(this[_0x082c('0x33')](_0x37efc8[_0x082c('0x71')][_0x082c('0x7e')])){if(_0x37efc8[_0x082c('0x72')]){var _0x456743=path[_0x082c('0x7f')](_0x37efc8[_0x082c('0x72')])['name'];this[_0x082c('0x67')](_0x456743,_0x37efc8[_0x082c('0x72')]);}}else if(this[_0x082c('0x19')][_0x37efc8[_0x082c('0x36')]]){if(this['isNotNull'](_0x37efc8['variable'])){if(this['isNotNull'](_0x37efc8[_0x082c('0x71')][_0x082c('0x80')])){this[_0x082c('0x19')][_0x37efc8[_0x082c('0x36')]][_0x082c('0x81')]=_0x37efc8[_0x082c('0x72')];}}}}}catch(_0x4932d2){logger[_0x082c('0x3a')](_0x082c('0x82'),util[_0x082c('0x4b')](_0x4932d2,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')][_0x082c('0x25')]=function(_0x272ed6){try{if(this[_0x082c('0x33')](_0x272ed6)){if(this[_0x082c('0x19')][_0x272ed6[_0x082c('0x37')]]){var _0x4bd8ad=moment();this['channels'][_0x272ed6[_0x082c('0x37')]][_0x082c('0x83')]=_0x4bd8ad[_0x082c('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x082c('0x19')][_0x272ed6[_0x082c('0x37')]][_0x082c('0x52')]=_0x4bd8ad[_0x082c('0x5f')](this['channels'][_0x272ed6[_0x082c('0x37')]]['starttime'],_0x082c('0x54'));if(this[_0x082c('0x19')][_0x272ed6[_0x082c('0x37')]]['answered']){this[_0x082c('0x19')][_0x272ed6['uniqueid']][_0x082c('0x84')]=_0x4bd8ad['diff'](this[_0x082c('0x19')][_0x272ed6[_0x082c('0x37')]][_0x082c('0x5e')],_0x082c('0x54'));this[_0x082c('0x19')][_0x272ed6['uniqueid']][_0x082c('0x85')]=this[_0x082c('0x19')][_0x272ed6[_0x082c('0x37')]][_0x082c('0x52')]-this['channels'][_0x272ed6[_0x082c('0x37')]][_0x082c('0x84')];}if(_0x272ed6[_0x082c('0x43')]===_0x082c('0x44')){if(this[_0x082c('0x1a')][_0x272ed6[_0x082c('0x3c')]['split']('-')[0x0]]){this[_0x082c('0x1a')][_0x272ed6[_0x082c('0x3c')]['split']('-')[0x0]]=_[_0x082c('0x86')](this['agents'][_0x272ed6['channel'][_0x082c('0x46')]('-')[0x0]],[_0x082c('0x87')]);this['emit'](util[_0x082c('0x3d')](_0x082c('0x88'),this[_0x082c('0x1a')][_0x272ed6['channel'][_0x082c('0x46')]('-')[0x0]]['name']),_0x082c('0x89'),{'destaccountcode':this[_0x082c('0x1a')][_0x272ed6[_0x082c('0x3c')][_0x082c('0x46')]('-')[0x0]][_0x082c('0x49')]});}}ami[_0x082c('0x35')]('custom:voiceCallReport',this['channels'][_0x272ed6[_0x082c('0x37')]]);delete this[_0x082c('0x19')][_0x272ed6['uniqueid']];}}}catch(_0x5d551a){logger['error']('[syncHangup][VoiceCallReport]',util[_0x082c('0x4b')](_0x5d551a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')][_0x082c('0x28')]=function(_0x571116){try{if(this[_0x082c('0x33')](_0x571116)){if(this[_0x082c('0x19')][_0x571116['transfereeuniqueid']]){this[_0x082c('0x19')][_0x571116['transfereeuniqueid']][_0x082c('0x8a')]=_0x571116[_0x082c('0x8b')];this[_0x082c('0x19')][_0x571116[_0x082c('0x8c')]]['transferconnectedlinenum']=_0x571116['transfertargetcalleridnum'];if(this['channels'][_0x571116['secondtransfereruniqueid']]){var _0x5773ef=this[_0x082c('0x19')][_0x571116[_0x082c('0x8d')]];this['channels'][_0x571116[_0x082c('0x8d')]]=this[_0x082c('0x19')][_0x571116[_0x082c('0x8c')]];this['channels'][_0x571116['transfereeuniqueid']]=_0x5773ef;}}else if(this[_0x082c('0x19')][_0x571116[_0x082c('0x8e')]]){this[_0x082c('0x19')][_0x571116[_0x082c('0x8e')]][_0x082c('0x8a')]=_0x571116[_0x082c('0x8b')];this[_0x082c('0x19')][_0x571116[_0x082c('0x8e')]][_0x082c('0x8f')]=_0x571116[_0x082c('0x90')];if(this[_0x082c('0x19')][_0x571116[_0x082c('0x91')]]){var _0x5773ef=this[_0x082c('0x19')][_0x571116[_0x082c('0x91')]];this[_0x082c('0x19')][_0x571116[_0x082c('0x91')]]=this[_0x082c('0x19')][_0x571116['transfertargetuniqueid']];this[_0x082c('0x19')][_0x571116[_0x082c('0x8e')]]=_0x5773ef;}}}}catch(_0x40bd1d){logger[_0x082c('0x3a')](_0x082c('0x92'),util['inspect'](_0x40bd1d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')][_0x082c('0x29')]=function(_0x597828){try{if(this[_0x082c('0x33')](_0x597828)){if(this[_0x082c('0x19')][_0x597828[_0x082c('0x8c')]]){this['channels'][_0x597828[_0x082c('0x8c')]]['transfercalleridnum']=_0x597828[_0x082c('0x93')];this[_0x082c('0x19')][_0x597828[_0x082c('0x8c')]][_0x082c('0x8f')]=_0x597828[_0x082c('0x94')];this['syncHangup']({'event':'BlindTransfer','uniqueid':_0x597828[_0x082c('0x8c')],'context':_0x597828[_0x082c('0x43')],'channel':_0x597828[_0x082c('0x95')]});}}}catch(_0x4579b8){logger['error'](_0x082c('0x96'),util[_0x082c('0x4b')](_0x4579b8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')]['syncMusicOnHoldStart']=function(_0x4282dc){try{if(this['isNotNull'](_0x4282dc)){if(this[_0x082c('0x19')][_0x4282dc['uniqueid']]){if(!_[_0x082c('0x6f')](this['channels'][_0x4282dc['uniqueid']][_0x082c('0x5e')])){this[_0x082c('0x19')][_0x4282dc[_0x082c('0x37')]][_0x082c('0x97')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}}}}catch(_0x261123){logger[_0x082c('0x3a')](_0x082c('0x98'),util[_0x082c('0x4b')](_0x261123,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x082c('0x32')][_0x082c('0x2c')]=function(_0x284c04){try{if(this[_0x082c('0x33')](_0x284c04)){if(this['channels'][_0x284c04['uniqueid']]){if(!_[_0x082c('0x6f')](this[_0x082c('0x19')][_0x284c04[_0x082c('0x37')]][_0x082c('0x97')])){this[_0x082c('0x19')][_0x284c04[_0x082c('0x37')]][_0x082c('0x99')]+=moment()['milliseconds'](0x0)['diff'](this['channels'][_0x284c04[_0x082c('0x37')]][_0x082c('0x97')],_0x082c('0x54'));delete this['channels'][_0x284c04[_0x082c('0x37')]][_0x082c('0x97')];}}}}catch(_0x4f3279){logger[_0x082c('0x3a')](_0x082c('0x9a'),util[_0x082c('0x4b')](_0x4f3279,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index 1df4a69..b669927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbb6=['bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','membername','memberpenalty','isNil','syncHangup','endtime','duration','seconds','complete','answered','holdtime','diff','sumHoldTime','sumBillable','billableseconds','custom:voiceDialReport','custom:dialend','voice_outbound:save','voice_outbound_channel:remove','[syncHangup][VoiceDialReport]','exports','lodash','util','ioredis','../../../config/environment','ami','../ami','redis','localhost','socket.io-emitter','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','prototype','isUndefined','emit','uniqueid','merge','YYYY-MM-DD\x20HH:mm:ss','called','substring','channel','lastIndexOf','omit','event','privilege','voice:outbound','voice_outbound_channel:save','channels','custom:dialbegin','[syncDialBegin][VoiceDialReport]','inspect','isNotNull','dialstatus','connectedlinename','answertime','format','lastevent','custom:dialconnect','error','keys','variable','value','outboundrouteid','[syncVarSet][VoiceDialReport]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid'];(function(_0x538c9e,_0x3e01c4){var _0x3698fd=function(_0xb3a07e){while(--_0xb3a07e){_0x538c9e['push'](_0x538c9e['shift']());}};_0x3698fd(++_0x3e01c4);}(_0xfbb6,0x171));var _0x6fbb=function(_0x27332e,_0x247ad6){_0x27332e=_0x27332e-0x0;var _0x5882fc=_0xfbb6[_0x27332e];return _0x5882fc;};'use strict';var _=require(_0x6fbb('0x0'));var moment=require('moment');var util=require(_0x6fbb('0x1'));var Redis=require(_0x6fbb('0x2'));var config=require(_0x6fbb('0x3'));var logger=require('../../../config/logger')(_0x6fbb('0x4'));var ami=require(_0x6fbb('0x5'));config['redis']=_['defaults'](config[_0x6fbb('0x6')],{'host':_0x6fbb('0x7'),'port':0x18eb});var io=require(_0x6fbb('0x8'))(new Redis(config[_0x6fbb('0x6')]));function VoiceDialReport(_0x28fa95){this['channels']=_0x28fa95[_0x6fbb('0x9')];this[_0x6fbb('0xa')]=_0x28fa95[_0x6fbb('0xa')];this[_0x6fbb('0xb')]={};ami['on'](_0x6fbb('0xc'),this[_0x6fbb('0xd')][_0x6fbb('0xe')](this));ami['on'](_0x6fbb('0xf'),this[_0x6fbb('0x10')][_0x6fbb('0xe')](this));ami['on'](_0x6fbb('0x11'),this[_0x6fbb('0x12')][_0x6fbb('0xe')](this));ami['on']('hangup',this['syncHangup']['bind'](this));}VoiceDialReport[_0x6fbb('0x13')]['isNotNull']=function(_0x358d3a){return _0x358d3a!==null&&!_[_0x6fbb('0x14')](_0x358d3a);};VoiceDialReport[_0x6fbb('0x13')][_0x6fbb('0x15')]=function(_0x9a3cbf,_0x2b58d7,_0x5f540b){io['to'](_0x9a3cbf)[_0x6fbb('0x15')](_0x2b58d7,_0x5f540b);};VoiceDialReport['prototype'][_0x6fbb('0xd')]=function(_0x27b317){try{if(this['isNotNull'](_0x27b317)){if(this['channels'][_0x27b317[_0x6fbb('0x16')]]){_[_0x6fbb('0x17')](this['channels'][_0x27b317[_0x6fbb('0x16')]],{'starttime':moment()['format'](_0x6fbb('0x18')),'lastevent':_0x6fbb('0x19'),'interface':_0x27b317['channel'][_0x6fbb('0x1a')](0x0,_0x27b317[_0x6fbb('0x1b')]['lastIndexOf']('-')),'membername':_0x27b317['channel']['substring'](_0x27b317[_0x6fbb('0x1b')][_0x6fbb('0x1c')]('/')+0x1,_0x27b317[_0x6fbb('0x1b')][_0x6fbb('0x1c')]('-'))},_[_0x6fbb('0x1d')](_0x27b317,[_0x6fbb('0x1e'),_0x6fbb('0x1f')]));this[_0x6fbb('0x15')](_0x6fbb('0x20'),_0x6fbb('0x21'),this[_0x6fbb('0x22')][_0x27b317['uniqueid']]);ami['emit'](_0x6fbb('0x23'),this[_0x6fbb('0x22')][_0x27b317['uniqueid']]);}}}catch(_0x13015d){logger['error'](_0x6fbb('0x24'),util[_0x6fbb('0x25')](_0x13015d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6fbb('0x13')][_0x6fbb('0x10')]=function(_0x4a0c19){try{if(this[_0x6fbb('0x26')](_0x4a0c19)){if(this[_0x6fbb('0x22')][_0x4a0c19['uniqueid']]){this[_0x6fbb('0x22')][_0x4a0c19[_0x6fbb('0x16')]]['dialstatus']=_0x4a0c19[_0x6fbb('0x27')];if(_0x4a0c19[_0x6fbb('0x27')]==='ANSWER'){this[_0x6fbb('0x22')][_0x4a0c19[_0x6fbb('0x16')]]['connectedlinenum']=_0x4a0c19['connectedlinenum'];this[_0x6fbb('0x22')][_0x4a0c19[_0x6fbb('0x16')]][_0x6fbb('0x28')]=_0x4a0c19['connectedlinename'];this['channels'][_0x4a0c19[_0x6fbb('0x16')]][_0x6fbb('0x29')]=moment()[_0x6fbb('0x2a')](_0x6fbb('0x18'));this[_0x6fbb('0x22')][_0x4a0c19['uniqueid']][_0x6fbb('0x2b')]='connect';ami[_0x6fbb('0x15')](_0x6fbb('0x2c'),this[_0x6fbb('0x22')][_0x4a0c19['uniqueid']]);}this[_0x6fbb('0x15')]('voice:outbound',_0x6fbb('0x21'),this['channels'][_0x4a0c19[_0x6fbb('0x16')]]);}}}catch(_0x276c69){logger[_0x6fbb('0x2d')]('[syncDialEnd][VoiceDialReport]',util['inspect'](_0x276c69,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6fbb('0x13')]['syncVarSet']=function(_0x2d04ab){try{if(this[_0x6fbb('0x26')](_0x2d04ab)){this['addVariable'](_0x2d04ab[_0x6fbb('0x16')],_[_0x6fbb('0x2e')](_0x2d04ab[_0x6fbb('0x2f')])[0x0],_0x2d04ab[_0x6fbb('0x30')]);if(this[_0x6fbb('0x26')](_0x2d04ab[_0x6fbb('0x2f')])&&this[_0x6fbb('0x26')](_0x2d04ab[_0x6fbb('0x2f')][_0x6fbb('0x31')])){if(_[_0x6fbb('0x14')](this[_0x6fbb('0x22')][_0x2d04ab[_0x6fbb('0x16')]])){this[_0x6fbb('0x22')][_0x2d04ab[_0x6fbb('0x16')]]={'routeId':_0x2d04ab[_0x6fbb('0x30')],'variables':this[_0x6fbb('0xb')][_0x2d04ab['uniqueid']]};this['emit'](_0x6fbb('0x20'),_0x6fbb('0x21'),this[_0x6fbb('0x22')][_0x2d04ab[_0x6fbb('0x16')]]);}}}}catch(_0x305cfa){logger['error'](_0x6fbb('0x32'),util[_0x6fbb('0x25')](_0x305cfa,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6fbb('0x13')][_0x6fbb('0x33')]=function(_0x5e874d,_0x35598b,_0x3af09c){var _0x15eac5=[_0x6fbb('0x34'),_0x6fbb('0x35'),_0x6fbb('0x36'),_0x6fbb('0x37'),_0x6fbb('0x38'),_0x6fbb('0x39'),_0x6fbb('0x3a'),_0x6fbb('0x3b'),_0x6fbb('0x3c'),'sipuri',_0x6fbb('0x3d'),_0x6fbb('0x3e'),_0x6fbb('0x3f'),_0x6fbb('0x40'),_0x6fbb('0x41'),'memberlastcall',_0x6fbb('0x42'),_0x6fbb('0x43'),'memberrealtime'];if(!_[_0x6fbb('0x44')](_0x35598b)&&!_['includes'](_0x15eac5,_0x35598b)){if(_[_0x6fbb('0x14')](this[_0x6fbb('0xb')][_0x5e874d])){this[_0x6fbb('0xb')][_0x5e874d]={};}this[_0x6fbb('0xb')][_0x5e874d][_0x35598b]=_0x3af09c;}};VoiceDialReport[_0x6fbb('0x13')][_0x6fbb('0x45')]=function(_0x1e68d5){try{if(this[_0x6fbb('0x26')](_0x1e68d5)){if(this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]]){this['channels'][_0x1e68d5['uniqueid']][_0x6fbb('0x46')]=moment()[_0x6fbb('0x2a')](_0x6fbb('0x18'));this['channels'][_0x1e68d5[_0x6fbb('0x16')]][_0x6fbb('0x47')]=moment(this[_0x6fbb('0x22')][_0x1e68d5['uniqueid']][_0x6fbb('0x46')])['diff'](this['channels'][_0x1e68d5['uniqueid']]['starttime'],_0x6fbb('0x48'));this['channels'][_0x1e68d5[_0x6fbb('0x16')]][_0x6fbb('0x2b')]=_0x6fbb('0x49');this[_0x6fbb('0xa')]['total']+=0x1;if(this[_0x6fbb('0x22')][_0x1e68d5['uniqueid']][_0x6fbb('0x29')]){this[_0x6fbb('0xa')][_0x6fbb('0x4a')]+=0x1;this['channels'][_0x1e68d5[_0x6fbb('0x16')]][_0x6fbb('0x4b')]=moment(this['channels'][_0x1e68d5[_0x6fbb('0x16')]]['answertime'])[_0x6fbb('0x4c')](this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]]['starttime'],_0x6fbb('0x48'));this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]]['billableseconds']=moment(this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]][_0x6fbb('0x46')])[_0x6fbb('0x4c')](this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]][_0x6fbb('0x29')],'seconds');this[_0x6fbb('0xa')][_0x6fbb('0x4d')]+=this['channels'][_0x1e68d5[_0x6fbb('0x16')]]['holdtime']||0x0;this[_0x6fbb('0xa')][_0x6fbb('0x4e')]+=this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]][_0x6fbb('0x4f')];}this['outbound']['sumDuration']+=this['channels'][_0x1e68d5[_0x6fbb('0x16')]][_0x6fbb('0x47')];ami[_0x6fbb('0x15')](_0x6fbb('0x50'),this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]]);ami[_0x6fbb('0x15')](_0x6fbb('0x51'),this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]]);this[_0x6fbb('0x15')](_0x6fbb('0x20'),_0x6fbb('0x52'),this[_0x6fbb('0xa')]);this['emit'](_0x6fbb('0x20'),_0x6fbb('0x53'),this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]]);delete this[_0x6fbb('0x22')][_0x1e68d5[_0x6fbb('0x16')]];}if(this[_0x6fbb('0xb')][_0x1e68d5[_0x6fbb('0x16')]]){delete this[_0x6fbb('0xb')][_0x1e68d5['uniqueid']];}}}catch(_0x7403d6){logger[_0x6fbb('0x2d')](_0x6fbb('0x54'),util[_0x6fbb('0x25')](_0x7403d6,{'showHidden':![],'depth':null}));}};module[_0x6fbb('0x55')]=VoiceDialReport;
\ No newline at end of file
+var _0xd7f9=['emit','syncDialBegin','isNotNull','merge','uniqueid','YYYY-MM-DD\x20HH:mm:ss','channel','substring','lastIndexOf','omit','voice:outbound','voice_outbound_channel:save','custom:dialbegin','[syncDialBegin][VoiceDialReport]','inspect','dialstatus','ANSWER','connectedlinenum','answertime','format','lastevent','connect','custom:dialconnect','error','[syncDialEnd][VoiceDialReport]','keys','variable','value','[syncVarSet][VoiceDialReport]','addVariable','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqosrtt','sipcallid','sipuri','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','includes','syncHangup','duration','endtime','diff','seconds','complete','total','answered','starttime','sumHoldTime','holdtime','sumBillable','billableseconds','sumDuration','custom:dialend','voice_outbound:save','voice_outbound_channel:remove','exports','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','channels','outboundChannels','outbound','variables','dialbegin','bind','syncDialEnd','varset','syncVarSet','hangup','prototype','isUndefined'];(function(_0x111f05,_0x3801da){var _0xbcdf6a=function(_0x46a85c){while(--_0x46a85c){_0x111f05['push'](_0x111f05['shift']());}};_0xbcdf6a(++_0x3801da);}(_0xd7f9,0xec));var _0x9d7f=function(_0x5c619e,_0x1bccdf){_0x5c619e=_0x5c619e-0x0;var _0x445cf8=_0xd7f9[_0x5c619e];return _0x445cf8;};'use strict';var _=require(_0x9d7f('0x0'));var moment=require(_0x9d7f('0x1'));var util=require(_0x9d7f('0x2'));var Redis=require(_0x9d7f('0x3'));var config=require('../../../config/environment');var logger=require(_0x9d7f('0x4'))(_0x9d7f('0x5'));var ami=require(_0x9d7f('0x6'));config[_0x9d7f('0x7')]=_[_0x9d7f('0x8')](config[_0x9d7f('0x7')],{'host':_0x9d7f('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9d7f('0x7')]));function VoiceDialReport(_0x5443c2){this[_0x9d7f('0xa')]=_0x5443c2[_0x9d7f('0xb')];this[_0x9d7f('0xc')]=_0x5443c2['outbound'];this[_0x9d7f('0xd')]={};ami['on'](_0x9d7f('0xe'),this['syncDialBegin'][_0x9d7f('0xf')](this));ami['on']('dialend',this[_0x9d7f('0x10')][_0x9d7f('0xf')](this));ami['on'](_0x9d7f('0x11'),this[_0x9d7f('0x12')][_0x9d7f('0xf')](this));ami['on'](_0x9d7f('0x13'),this['syncHangup']['bind'](this));}VoiceDialReport[_0x9d7f('0x14')]['isNotNull']=function(_0x20f042){return _0x20f042!==null&&!_[_0x9d7f('0x15')](_0x20f042);};VoiceDialReport[_0x9d7f('0x14')][_0x9d7f('0x16')]=function(_0x1bc2e8,_0x362ee7,_0x27d8cd){io['to'](_0x1bc2e8)[_0x9d7f('0x16')](_0x362ee7,_0x27d8cd);};VoiceDialReport[_0x9d7f('0x14')][_0x9d7f('0x17')]=function(_0xca9c12){try{if(this[_0x9d7f('0x18')](_0xca9c12)){if(this[_0x9d7f('0xa')][_0xca9c12['uniqueid']]){_[_0x9d7f('0x19')](this[_0x9d7f('0xa')][_0xca9c12[_0x9d7f('0x1a')]],{'starttime':moment()['format'](_0x9d7f('0x1b')),'lastevent':'called','interface':_0xca9c12[_0x9d7f('0x1c')][_0x9d7f('0x1d')](0x0,_0xca9c12[_0x9d7f('0x1c')][_0x9d7f('0x1e')]('-')),'membername':_0xca9c12['channel'][_0x9d7f('0x1d')](_0xca9c12[_0x9d7f('0x1c')][_0x9d7f('0x1e')]('/')+0x1,_0xca9c12['channel'][_0x9d7f('0x1e')]('-'))},_[_0x9d7f('0x1f')](_0xca9c12,['event','privilege']));this[_0x9d7f('0x16')](_0x9d7f('0x20'),_0x9d7f('0x21'),this[_0x9d7f('0xa')][_0xca9c12[_0x9d7f('0x1a')]]);ami[_0x9d7f('0x16')](_0x9d7f('0x22'),this['channels'][_0xca9c12[_0x9d7f('0x1a')]]);}}}catch(_0x227587){logger['error'](_0x9d7f('0x23'),util[_0x9d7f('0x24')](_0x227587,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9d7f('0x14')]['syncDialEnd']=function(_0x2ba978){try{if(this[_0x9d7f('0x18')](_0x2ba978)){if(this[_0x9d7f('0xa')][_0x2ba978[_0x9d7f('0x1a')]]){this[_0x9d7f('0xa')][_0x2ba978[_0x9d7f('0x1a')]]['dialstatus']=_0x2ba978[_0x9d7f('0x25')];if(_0x2ba978[_0x9d7f('0x25')]===_0x9d7f('0x26')){this[_0x9d7f('0xa')][_0x2ba978[_0x9d7f('0x1a')]][_0x9d7f('0x27')]=_0x2ba978[_0x9d7f('0x27')];this['channels'][_0x2ba978[_0x9d7f('0x1a')]]['connectedlinename']=_0x2ba978['connectedlinename'];this[_0x9d7f('0xa')][_0x2ba978[_0x9d7f('0x1a')]][_0x9d7f('0x28')]=moment()[_0x9d7f('0x29')](_0x9d7f('0x1b'));this['channels'][_0x2ba978['uniqueid']][_0x9d7f('0x2a')]=_0x9d7f('0x2b');ami[_0x9d7f('0x16')](_0x9d7f('0x2c'),this[_0x9d7f('0xa')][_0x2ba978[_0x9d7f('0x1a')]]);}this[_0x9d7f('0x16')](_0x9d7f('0x20'),_0x9d7f('0x21'),this[_0x9d7f('0xa')][_0x2ba978[_0x9d7f('0x1a')]]);}}}catch(_0x3c6b57){logger[_0x9d7f('0x2d')](_0x9d7f('0x2e'),util[_0x9d7f('0x24')](_0x3c6b57,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncVarSet']=function(_0x3907d8){try{if(this[_0x9d7f('0x18')](_0x3907d8)){this['addVariable'](_0x3907d8[_0x9d7f('0x1a')],_[_0x9d7f('0x2f')](_0x3907d8[_0x9d7f('0x30')])[0x0],_0x3907d8[_0x9d7f('0x31')]);if(this['isNotNull'](_0x3907d8[_0x9d7f('0x30')])&&this[_0x9d7f('0x18')](_0x3907d8['variable']['outboundrouteid'])){if(_[_0x9d7f('0x15')](this[_0x9d7f('0xa')][_0x3907d8[_0x9d7f('0x1a')]])){this['channels'][_0x3907d8['uniqueid']]={'routeId':_0x3907d8[_0x9d7f('0x31')],'variables':this[_0x9d7f('0xd')][_0x3907d8[_0x9d7f('0x1a')]]};this[_0x9d7f('0x16')]('voice:outbound','voice_outbound_channel:save',this['channels'][_0x3907d8[_0x9d7f('0x1a')]]);}}}}catch(_0x2e051c){logger[_0x9d7f('0x2d')](_0x9d7f('0x32'),util[_0x9d7f('0x24')](_0x2e051c,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x9d7f('0x33')]=function(_0x1ad968,_0x2a5535,_0x228f61){var _0x3c9bee=['rtpaudioqos',_0x9d7f('0x34'),_0x9d7f('0x35'),'rtpaudioqosjitterbridged',_0x9d7f('0x36'),'rtpaudioqoslossbridged',_0x9d7f('0x37'),'rtpaudioqosrttbridged',_0x9d7f('0x38'),_0x9d7f('0x39'),'bridgepeer',_0x9d7f('0x3a'),_0x9d7f('0x3b'),_0x9d7f('0x3c'),_0x9d7f('0x3d'),_0x9d7f('0x3e'),_0x9d7f('0x3f'),_0x9d7f('0x40'),_0x9d7f('0x41')];if(!_[_0x9d7f('0x42')](_0x2a5535)&&!_[_0x9d7f('0x43')](_0x3c9bee,_0x2a5535)){if(_[_0x9d7f('0x15')](this[_0x9d7f('0xd')][_0x1ad968])){this[_0x9d7f('0xd')][_0x1ad968]={};}this[_0x9d7f('0xd')][_0x1ad968][_0x2a5535]=_0x228f61;}};VoiceDialReport[_0x9d7f('0x14')][_0x9d7f('0x44')]=function(_0x458a25){try{if(this[_0x9d7f('0x18')](_0x458a25)){if(this['channels'][_0x458a25[_0x9d7f('0x1a')]]){this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]]['endtime']=moment()[_0x9d7f('0x29')](_0x9d7f('0x1b'));this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]][_0x9d7f('0x45')]=moment(this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]][_0x9d7f('0x46')])[_0x9d7f('0x47')](this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]]['starttime'],_0x9d7f('0x48'));this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]]['lastevent']=_0x9d7f('0x49');this[_0x9d7f('0xc')][_0x9d7f('0x4a')]+=0x1;if(this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]]['answertime']){this[_0x9d7f('0xc')][_0x9d7f('0x4b')]+=0x1;this[_0x9d7f('0xa')][_0x458a25['uniqueid']]['holdtime']=moment(this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]][_0x9d7f('0x28')])[_0x9d7f('0x47')](this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]][_0x9d7f('0x4c')],_0x9d7f('0x48'));this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]]['billableseconds']=moment(this['channels'][_0x458a25['uniqueid']][_0x9d7f('0x46')])[_0x9d7f('0x47')](this['channels'][_0x458a25[_0x9d7f('0x1a')]][_0x9d7f('0x28')],_0x9d7f('0x48'));this[_0x9d7f('0xc')][_0x9d7f('0x4d')]+=this['channels'][_0x458a25[_0x9d7f('0x1a')]][_0x9d7f('0x4e')]||0x0;this['outbound'][_0x9d7f('0x4f')]+=this['channels'][_0x458a25[_0x9d7f('0x1a')]][_0x9d7f('0x50')];}this[_0x9d7f('0xc')][_0x9d7f('0x51')]+=this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]]['duration'];ami[_0x9d7f('0x16')]('custom:voiceDialReport',this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]]);ami[_0x9d7f('0x16')](_0x9d7f('0x52'),this[_0x9d7f('0xa')][_0x458a25['uniqueid']]);this[_0x9d7f('0x16')]('voice:outbound',_0x9d7f('0x53'),this[_0x9d7f('0xc')]);this['emit'](_0x9d7f('0x20'),_0x9d7f('0x54'),this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]]);delete this[_0x9d7f('0xa')][_0x458a25[_0x9d7f('0x1a')]];}if(this['variables'][_0x458a25[_0x9d7f('0x1a')]]){delete this[_0x9d7f('0xd')][_0x458a25[_0x9d7f('0x1a')]];}}}catch(_0x5e0a74){logger[_0x9d7f('0x2d')]('[syncHangup][VoiceDialReport]',util['inspect'](_0x5e0a74,{'showHidden':![],'depth':null}));}};module[_0x9d7f('0x55')]=VoiceDialReport;
\ No newline at end of file
index d728361..e9aebbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18f4=['localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete','bind','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','syncAgentComplete','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isUndefined','hasOwnProperty','isEmpty','originated','talking','pTalking','waiting','unlockRR','clearZombieChannels','switch','isNil','Action','status','message','No\x20such\x20channel','[voiceQueueReport][checkChannel]','error','[voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','emit','emitVoiceQueueChannelSave','format','voice:queue:%s','name','voice_queue_channel:save','emitVoiceQueueSummary','type','strategy','available','loggedIn','sumDuration','total','unmanaged','Trunk','active','callerid','Interval','stringify','isNotNull','queues','catch','then','[queuesummary]','queue','countBy','callers','toNumber','loggedin','custom:queuesummary','syncNewExten','uniqueid','inbound','YYYY-MM-DD\x20HH:mm:ss','position','count','merge','pick','keys','push','[syncQueueCallerJoin][VoiceQueueReport]','inspect','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','queuecallerexitreason','ABANDONED','lastAssignedTo','[syncQueueCallerAbandon][VoiceQueueReport]','queuecallerleaveAt','connectedlinenum','connectedlinename','[syncQueueCallerLeave][VoiceQueueReport]','COMPLETEDBYAGENT','[syncAgentConnect][VoiceQueueReport]','queuecallerabandonAt','assigned','queuecallerexit','queuecallerexitAt','reason','transfer','COMPLETED','channel','local/','linkedid','queuecallerjoinAt','add','seconds','FORWARDTRANSFER','transfertype','transferexten','destexten','transferuniqueid','toUpperCase','addVariable','variable','value','CONTINUE','queueposition','EXITWITHKEY','[syncVarSet][VoiceQueueReport]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','memberinterface','membername','memberpenalty','memberrealtime','syncHangup','length','diff','milliseconds','answered','custom:queuecallerunmanaged','lastevent','custom:queuecallerabandon','sumHoldTime','custom:voiceQueueReport','[syncHangup][VoiceQueueReport]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','transfertargetuniqueid','origtransfererexten','ATTENDED','origtransfereruniqueid','BLINDTRANSFER','BLIND','extension','BlindTransfer','context','transfererchannel','mohstarttime','[syncMusicOnHoldStart][VoiceQueueReport]','exports','moment','bluebird','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0x30a640,_0x300254){var _0x21f6b4=function(_0x5f330d){while(--_0x5f330d){_0x30a640['push'](_0x30a640['shift']());}};_0x21f6b4(++_0x300254);}(_0x18f4,0x181));var _0x418f=function(_0x3a5f9a,_0x31dca3){_0x3a5f9a=_0x3a5f9a-0x0;var _0x5ebcb0=_0x18f4[_0x3a5f9a];return _0x5ebcb0;};'use strict';var _=require('lodash');var moment=require(_0x418f('0x0'));var BPromise=require(_0x418f('0x1'));var util=require(_0x418f('0x2'));var md5=require(_0x418f('0x3'));var Redis=require(_0x418f('0x4'));var config=require(_0x418f('0x5'));var logger=require(_0x418f('0x6'))(_0x418f('0x7'));var ami=require(_0x418f('0x8'));var QueueReport=require('../model/queueReport');config[_0x418f('0x9')]=_[_0x418f('0xa')](config[_0x418f('0x9')],{'host':_0x418f('0xb'),'port':0x18eb});var io=require(_0x418f('0xc'))(new Redis(config[_0x418f('0x9')]));var Sequence=function(){};Sequence[_0x418f('0xd')][_0x418f('0xe')]=function(_0x53bc2c){this['tail']=this[_0x418f('0xf')]?this[_0x418f('0xf')][_0x418f('0x10')](_0x53bc2c):_0x53bc2c();};function VoiceQueueReport(_0x31a363){this[_0x418f('0x11')]=new Sequence();this[_0x418f('0x12')]={};this[_0x418f('0x13')]=_0x31a363[_0x418f('0x13')];this[_0x418f('0x14')]=_0x31a363[_0x418f('0x15')];this['voiceQueues']=_0x31a363[_0x418f('0x16')];this[_0x418f('0x17')]=!![];this[_0x418f('0x18')]=_0x31a363['campaigns'];this[_0x418f('0x19')]={};ami['on'](_0x418f('0x1a'),this[_0x418f('0x1b')]['bind'](this));ami['on'](_0x418f('0x1c'),this[_0x418f('0x1d')][_0x418f('0x1e')](this));ami['on'](_0x418f('0x1f'),this[_0x418f('0x20')][_0x418f('0x1e')](this));ami['on']('queuecallerabandon',this[_0x418f('0x21')][_0x418f('0x1e')](this));ami['on'](_0x418f('0x22'),this[_0x418f('0x23')]['bind'](this));ami['on']('agentcomplete',this[_0x418f('0x24')][_0x418f('0x1e')](this));ami['on']('agentconnect',this[_0x418f('0x25')][_0x418f('0x1e')](this));ami['on'](_0x418f('0x26'),this[_0x418f('0x27')][_0x418f('0x1e')](this));ami['on'](_0x418f('0x28'),this['syncHangup'][_0x418f('0x1e')](this));ami['on'](_0x418f('0x29'),this[_0x418f('0x2a')][_0x418f('0x1e')](this));ami['on'](_0x418f('0x2b'),this[_0x418f('0x2c')]['bind'](this));ami['on']('musiconholdstop',this[_0x418f('0x2d')][_0x418f('0x1e')](this));ami['on'](_0x418f('0x2e'),this[_0x418f('0x2f')][_0x418f('0x1e')](this));ami['on']('blindtransfer',this[_0x418f('0x30')][_0x418f('0x1e')](this));this[_0x418f('0x31')]();this[_0x418f('0x32')]();}function isNotNull(_0x408bf2){return _0x408bf2!==null&&!_[_0x418f('0x33')](_0x408bf2);}function clearChannels(_0x3f6617){if(!_['isEmpty'](_0x3f6617)){for(var _0x18ff00 in _0x3f6617){if(_0x3f6617[_0x418f('0x34')](_0x18ff00)){delete _0x3f6617[_0x18ff00];}}}}function clearCampaigns(_0x317cde){if(!_['isEmpty'](_0x317cde)){for(var _0x50ab90 in _0x317cde){if(_0x317cde[_0x418f('0x34')](_0x50ab90)){_0x317cde[_0x50ab90]['originated']=0x0;}}}}function clearVoiceQueues(_0x2e3882){if(!_[_0x418f('0x35')](_0x2e3882)){for(var _0xfb366c in _0x2e3882){if(_0x2e3882[_0x418f('0x34')](_0xfb366c)){_0x2e3882[_0xfb366c][_0x418f('0x36')]=0x0;_0x2e3882[_0xfb366c][_0x418f('0x37')]=0x0;_0x2e3882[_0xfb366c][_0x418f('0x38')]=0x0;_0x2e3882[_0xfb366c][_0x418f('0x39')]=0x0;_0x2e3882[_0xfb366c]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x327662){if(!_[_0x418f('0x35')](_0x327662)){for(var _0x26d65a in _0x327662){if(_0x327662[_0x418f('0x34')](_0x26d65a)){_0x327662[_0x26d65a][_0x418f('0x3a')]=!![];}}}}VoiceQueueReport['prototype'][_0x418f('0x3b')]=function(){var _0x480cea=this;for(var _0x36e656 in this['channels']){if(this['channels']['hasOwnProperty'](_0x36e656)&&!this[_0x418f('0x14')][_0x36e656][_0x418f('0x3c')]){this[_0x418f('0x11')][_0x418f('0xe')](function(){if(!_[_0x418f('0x3d')](_0x480cea[_0x418f('0x14')][_0x36e656])){return ami[_0x418f('0x3e')]({'action':_0x418f('0x3f'),'channel':_0x480cea[_0x418f('0x14')][_0x36e656]['channel']})['catch'](function(_0x2956e4){if(_0x2956e4[_0x418f('0x40')]===_0x418f('0x41')){setTimeout(function(){if(_0x480cea[_0x418f('0x14')][_0x36e656]){delete _0x480cea[_0x418f('0x14')][_0x36e656];logger['error'](_0x418f('0x42'),_0x36e656);}if(_0x480cea[_0x418f('0x12')][_0x36e656]){delete _0x480cea[_0x418f('0x12')][_0x36e656];logger[_0x418f('0x43')]('[voiceQueueReport][checkQueueReport]',_0x36e656);}if(_0x480cea['variables'][_0x36e656]){delete _0x480cea[_0x418f('0x19')][_0x36e656];logger[_0x418f('0x43')](_0x418f('0x44'),_0x36e656);}},0x1f40);}});}});}}};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x2a')]=function(){logger['error'](_0x418f('0x45'));clearChannels(this['channels']);this[_0x418f('0x46')](this[_0x418f('0x12')]);clearAgentBooked(this[_0x418f('0x13')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x418f('0x18')]);};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x46')]=function(_0x364671){var _0x3fe409=this;if(!_[_0x418f('0x35')](_0x364671)){for(var _0x332c81 in _0x364671){if(_0x364671[_0x418f('0x34')](_0x332c81)){_0x3fe409[_0x418f('0x47')](_0x364671[_0x332c81]);delete _0x364671[_0x332c81];}}}};function loggerCatch(_0x5190a3){return function(_0x11b684){logger[_0x418f('0x43')](_0x5190a3,util['inspect'](_0x11b684,{'showHidden':![],'depth':null}));};}VoiceQueueReport[_0x418f('0xd')]['emit']=function(_0x593a8f,_0x18d848,_0x2c4d43){io['to'](_0x593a8f)[_0x418f('0x48')](_0x18d848,_0x2c4d43);};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x49')]=function(_0x275cf0){this[_0x418f('0x48')](util[_0x418f('0x4a')](_0x418f('0x4b'),_0x275cf0[_0x418f('0x4c')]),_0x418f('0x4d'),_0x275cf0);};VoiceQueueReport['prototype'][_0x418f('0x47')]=function(_0x7e3997){this[_0x418f('0x48')](util[_0x418f('0x4a')](_0x418f('0x4b'),_0x7e3997[_0x418f('0x4c')]),'voice_queue_channel:remove',_0x7e3997);};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x4e')]=function(_0x141fbc){if(_0x141fbc[_0x418f('0x4f')]==='inbound'){var _0x2c5587={'id':_0x141fbc['id'],'name':_0x141fbc['name'],'strategy':_0x141fbc[_0x418f('0x50')],'answered':_0x141fbc['answered'],'available':_0x141fbc[_0x418f('0x51')],'loggedIn':_0x141fbc[_0x418f('0x52')],'pTalking':_0x141fbc[_0x418f('0x38')],'sumBillable':_0x141fbc['sumBillable'],'sumDuration':_0x141fbc[_0x418f('0x53')],'sumHoldTime':_0x141fbc['sumHoldTime']||0x0,'talking':_0x141fbc[_0x418f('0x37')],'total':_0x141fbc[_0x418f('0x54')],'type':_0x141fbc[_0x418f('0x4f')],'unmanaged':_0x141fbc[_0x418f('0x55')],'abandoned':_0x141fbc['abandoned'],'waiting':_0x141fbc[_0x418f('0x39')]};if(_0x141fbc[_0x418f('0x56')]){_0x2c5587['Trunk']={'id':_0x141fbc[_0x418f('0x56')]['id'],'name':_0x141fbc[_0x418f('0x56')][_0x418f('0x4c')],'active':_0x141fbc[_0x418f('0x56')][_0x418f('0x57')],'callerid':_0x141fbc[_0x418f('0x56')][_0x418f('0x58')]};}if(_0x141fbc[_0x418f('0x59')]){_0x2c5587[_0x418f('0x59')]={'id':_0x141fbc[_0x418f('0x59')]['id'],'name':_0x141fbc[_0x418f('0x59')]['name']};}var _0x17e872=md5(JSON[_0x418f('0x5a')](_0x2c5587));if(_0x141fbc[_0x418f('0x3')]!==_0x17e872){_0x141fbc[_0x418f('0x3')]=_0x17e872;this[_0x418f('0x48')](util[_0x418f('0x4a')](_0x418f('0x4b'),_0x2c5587['name']),'voice_queue:save',_0x2c5587);}}};VoiceQueueReport['prototype'][_0x418f('0x5b')]=function(_0x51cb4a){return _0x51cb4a!==null&&!_['isUndefined'](_0x51cb4a);};VoiceQueueReport['prototype']['loopQueueShow']=function(){var _0x565a25=this;setInterval(function(){_0x565a25[_0x418f('0x3b')]();ami['Action']({'action':_0x418f('0x5c')})[_0x418f('0x5d')](loggerCatch('[queues]'));},0x2710);};VoiceQueueReport[_0x418f('0xd')]['loopQueueSummary']=function(){var _0x35b3cf=this;setInterval(function(){if(_0x35b3cf[_0x418f('0x17')]){return ami[_0x418f('0x3e')]({'action':_0x418f('0x1a')})[_0x418f('0x5e')](function(_0x2066ea){_0x35b3cf[_0x418f('0x17')]=![];})[_0x418f('0x5d')](loggerCatch(_0x418f('0x5f')));}},0x3e8);};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x1b')]=function(_0x15f3f4){try{if(this['isNotNull'](_0x15f3f4)&&this[_0x418f('0x5b')](_0x15f3f4['queue'])){if(this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]]){var _0x3e7db7=_[_0x418f('0x61')](this[_0x418f('0x14')],'queue')[_0x15f3f4[_0x418f('0x60')]]||0x0;var _0x41ae04=_0x3e7db7-_0x15f3f4[_0x418f('0x62')];if(this[_0x418f('0x16')][_0x15f3f4['queue']][_0x418f('0x39')]!==_[_0x418f('0x63')](_0x15f3f4[_0x418f('0x62')])||this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x52')]!==_[_0x418f('0x63')](_0x15f3f4[_0x418f('0x64')])||this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x51')]!==_[_0x418f('0x63')](_0x15f3f4[_0x418f('0x51')])||this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x37')]!==_0x41ae04){this['voiceQueues'][_0x15f3f4[_0x418f('0x60')]]['waiting']=_[_0x418f('0x63')](_0x15f3f4[_0x418f('0x62')]);this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x52')]=_[_0x418f('0x63')](_0x15f3f4[_0x418f('0x64')]);this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x51')]=_[_0x418f('0x63')](_0x15f3f4[_0x418f('0x51')]);this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x37')]=_0x41ae04>0x0?_0x41ae04:0x0;this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x37')]=this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x37')]>_[_0x418f('0x63')](_0x15f3f4[_0x418f('0x64')])?_[_0x418f('0x63')](_0x15f3f4['loggedin']):this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]][_0x418f('0x37')];this[_0x418f('0x4e')](this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]]);}ami['emit'](_0x418f('0x65'),this[_0x418f('0x16')][_0x15f3f4[_0x418f('0x60')]]);}}}catch(_0x3deb2f){logger['error']('[syncQueueSummary][VoiceQueueReport]',util['inspect'](_0x3deb2f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x1d')]=function(_0xffd4f6){this[_0x418f('0x17')]=!![];};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x66')]=function(_0x56b2e3){};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x20')]=function(_0xad5eeb){try{if(this[_0x418f('0x5b')](_0xad5eeb)){if(_['isUndefined'](this[_0x418f('0x12')][_0xad5eeb['uniqueid']])){this[_0x418f('0x12')][_0xad5eeb['uniqueid']]=[];this[_0x418f('0x14')][_0xad5eeb[_0x418f('0x67')]]={};}var _0x5ba561=new QueueReport();_0x5ba561[_0x418f('0x4c')]=_0xad5eeb[_0x418f('0x60')];_0x5ba561[_0x418f('0x4f')]=this[_0x418f('0x16')][_0x5ba561['name']]&&this[_0x418f('0x16')][_0x5ba561[_0x418f('0x4c')]][_0x418f('0x4f')]?this['voiceQueues'][_0x5ba561[_0x418f('0x4c')]][_0x418f('0x4f')]||_0x418f('0x68'):_0x418f('0x68');_0x5ba561['queue']=_0xad5eeb[_0x418f('0x60')];_0x5ba561['queuecallerjoinAt']=moment()['format'](_0x418f('0x69'));_0x5ba561[_0x418f('0x6a')]=_0xad5eeb[_0x418f('0x6a')];_0x5ba561[_0x418f('0x6b')]=_0xad5eeb[_0x418f('0x6b')];_[_0x418f('0x6c')](_0x5ba561,_[_0x418f('0x6d')](_0xad5eeb,_[_0x418f('0x6e')](_0x5ba561)));this['queueReports'][_0xad5eeb[_0x418f('0x67')]][_0x418f('0x6f')](_0x5ba561);this[_0x418f('0x14')][_0xad5eeb['uniqueid']]=_0x5ba561;this['emitVoiceQueueChannelSave'](_0x5ba561);}}catch(_0x4d4fd4){logger[_0x418f('0x43')](_0x418f('0x70'),util[_0x418f('0x71')](_0x4d4fd4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x21')]=function(_0x49ccf2){try{if(this['isNotNull'](_0x49ccf2)){if(this[_0x418f('0x12')][_0x49ccf2['uniqueid']]){var _0x3dc671=_[_0x418f('0x72')](this[_0x418f('0x12')][_0x49ccf2[_0x418f('0x67')]]);_0x3dc671[_0x418f('0x73')]=![];_0x3dc671[_0x418f('0x74')]=null;_0x3dc671[_0x418f('0x75')]=_0x49ccf2[_0x418f('0x75')];_0x3dc671[_0x418f('0x76')]=_0x49ccf2[_0x418f('0x76')];_0x3dc671[_0x418f('0x77')]=!![];_0x3dc671['queuecallerabandonAt']=moment()[_0x418f('0x4a')](_0x418f('0x69'));_0x3dc671[_0x418f('0x78')]=_0x418f('0x79');_0x3dc671[_0x418f('0x7a')]=null;this[_0x418f('0x14')][_0x49ccf2[_0x418f('0x67')]]=_0x3dc671;this[_0x418f('0x47')](_0x3dc671);}}}catch(_0x1f9fed){logger[_0x418f('0x43')](_0x418f('0x7b'),util[_0x418f('0x71')](_0x1f9fed,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x23')]=function(_0x5cc5a8){try{if(this['isNotNull'](_0x5cc5a8)){if(this['queueReports'][_0x5cc5a8[_0x418f('0x67')]]){var _0x20f91e=_[_0x418f('0x72')](this['queueReports'][_0x5cc5a8[_0x418f('0x67')]]);_0x20f91e[_0x418f('0x7c')]=moment()[_0x418f('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x20f91e[_0x418f('0x7d')]=_0x5cc5a8[_0x418f('0x7d')];_0x20f91e[_0x418f('0x7e')]=_0x5cc5a8[_0x418f('0x7e')];this[_0x418f('0x14')][_0x5cc5a8['uniqueid']]=_0x20f91e;this[_0x418f('0x49')](_0x20f91e);}}}catch(_0x4c4062){logger['error'](_0x418f('0x7f'),util[_0x418f('0x71')](_0x4c4062,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x25')]=function(_0x492116){try{if(this[_0x418f('0x5b')](_0x492116)){if(this[_0x418f('0x12')][_0x492116[_0x418f('0x67')]]){var _0x4c051d=_[_0x418f('0x72')](this[_0x418f('0x12')][_0x492116['uniqueid']]);_0x4c051d['queuecallercomplete']=!![];_0x4c051d[_0x418f('0x78')]=_0x418f('0x80');}}}catch(_0x4f8546){logger['error'](_0x418f('0x81'),util['inspect'](_0x4f8546,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x418f('0x24')]=function(_0x290934){try{if(this[_0x418f('0x5b')](_0x290934)){if(this[_0x418f('0x12')][_0x290934[_0x418f('0x67')]]){var _0x4fc742=_[_0x418f('0x72')](this[_0x418f('0x12')][_0x290934[_0x418f('0x67')]]);_0x4fc742[_0x418f('0x77')]=![];_0x4fc742[_0x418f('0x82')]=null;_0x4fc742[_0x418f('0x83')]=!![];_0x4fc742['lastAssignedTo']=_0x290934['membername'];_0x4fc742[_0x418f('0x75')]=_0x290934[_0x418f('0x75')];_0x4fc742[_0x418f('0x73')]=!![];_0x4fc742[_0x418f('0x84')]=![];_0x4fc742[_0x418f('0x85')]=null;if(!_0x4fc742['transfer']){if(_0x290934[_0x418f('0x86')]==_0x418f('0x87')){_0x4fc742[_0x418f('0x78')]=_0x418f('0x88');}else{if(_['startsWith'](_0x290934[_0x418f('0x89')]['toLowerCase'](),_0x418f('0x8a'))){if(this[_0x418f('0x12')][_0x290934[_0x418f('0x8b')]]){var _0xa29e7e=_[_0x418f('0x72')](this[_0x418f('0x12')][_0x290934[_0x418f('0x8b')]]);_0xa29e7e[_0x418f('0x73')]=![];_0xa29e7e[_0x418f('0x84')]=!![];_0xa29e7e['queuecallerexitAt']=moment(_0x4fc742[_0x418f('0x8c')])[_0x418f('0x8d')](_0x290934[_0x418f('0x75')],_0x418f('0x8e'))[_0x418f('0x4a')](_0x418f('0x69'));_0xa29e7e['queuecallerexitreason']=_0x418f('0x8f');_0xa29e7e['transfer']=!![];_0xa29e7e[_0x418f('0x90')]='FORWARD';_0xa29e7e[_0x418f('0x91')]=_0x290934[_0x418f('0x92')];_0xa29e7e[_0x418f('0x93')]=_0x290934['uniqueid'];var _0x48d277=this[_0x418f('0x12')][_0x290934[_0x418f('0x8b')]];this['queueReports'][_0x290934[_0x418f('0x8b')]]=this[_0x418f('0x12')][_0x290934[_0x418f('0x67')]];this['queueReports'][_0x290934[_0x418f('0x67')]]=_0x48d277;}}else{_0x4fc742['queuecallerexitreason']='COMPLETEDBY'+_0x290934[_0x418f('0x86')][_0x418f('0x94')]();}}}this[_0x418f('0x14')][_0x290934[_0x418f('0x67')]]=_0x4fc742;this[_0x418f('0x47')](_0x4fc742);}}}catch(_0x5a7285){logger['error']('[syncAgentComplete][VoiceQueueReport]',util[_0x418f('0x71')](_0x5a7285,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x418f('0xd')]['syncVarSet']=function(_0x53f2ac){try{if(this[_0x418f('0x5b')](_0x53f2ac)){this[_0x418f('0x95')](_0x53f2ac[_0x418f('0x67')],_[_0x418f('0x6e')](_0x53f2ac[_0x418f('0x96')])[0x0],_0x53f2ac[_0x418f('0x97')]);if(this[_0x418f('0x12')][_0x53f2ac['uniqueid']]){var _0x42b740=_[_0x418f('0x72')](this['queueReports'][_0x53f2ac[_0x418f('0x67')]]);if(_0x42b740){if(this[_0x418f('0x5b')](_0x53f2ac[_0x418f('0x96')])&&this[_0x418f('0x5b')](_0x53f2ac[_0x418f('0x96')]['queuestatus'])){switch(_0x53f2ac[_0x418f('0x97')]){case _0x418f('0x98'):_0x42b740[_0x418f('0x84')]=![];_0x42b740[_0x418f('0x85')]=null;break;default:_0x42b740[_0x418f('0x84')]=!![];_0x42b740['queuecallerexitAt']=moment()[_0x418f('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x42b740[_0x418f('0x7c')]=moment()[_0x418f('0x4a')](_0x418f('0x69'));}_0x42b740['queuecallerabandon']=![];_0x42b740[_0x418f('0x82')]=null;_0x42b740[_0x418f('0x78')]=_0x53f2ac[_0x418f('0x97')];this['channels'][_0x53f2ac[_0x418f('0x67')]]=_0x42b740;this['emitVoiceQueueChannelRemove'](_0x42b740);}else if(this[_0x418f('0x5b')](_0x53f2ac[_0x418f('0x96')])&&this[_0x418f('0x5b')](_0x53f2ac[_0x418f('0x96')][_0x418f('0x99')])){if(!_0x42b740['queuecallerabandon']){_0x42b740[_0x418f('0x84')]=!![];_0x42b740[_0x418f('0x85')]=moment()[_0x418f('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x42b740[_0x418f('0x78')]=_0x418f('0x9a');_0x42b740[_0x418f('0x7c')]=moment()['format'](_0x418f('0x69'));this[_0x418f('0x14')][_0x53f2ac[_0x418f('0x67')]]=_0x42b740;}}_0x42b740['variables']=this['variables'][_0x53f2ac[_0x418f('0x67')]];}}}}catch(_0x2db73a){logger[_0x418f('0x43')](_0x418f('0x9b'),util['inspect'](_0x2db73a,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x418f('0x95')]=function(_0x18d0aa,_0x564981,_0x3dd6ee){var _0x1a6b28=[_0x418f('0x9c'),_0x418f('0x9d'),_0x418f('0x9e'),_0x418f('0x9f'),_0x418f('0xa0'),_0x418f('0xa1'),_0x418f('0xa2'),_0x418f('0xa3'),'sipcallid',_0x418f('0xa4'),_0x418f('0xa5'),'bridgepvtcallid','membercalls','memberdynamic',_0x418f('0xa6'),'memberlastcall',_0x418f('0xa7'),_0x418f('0xa8'),_0x418f('0xa9')];if(!_[_0x418f('0x3d')](_0x564981)&&!_['includes'](_0x1a6b28,_0x564981)){if(_['isUndefined'](this[_0x418f('0x19')][_0x18d0aa])){this[_0x418f('0x19')][_0x18d0aa]={};}this['variables'][_0x18d0aa][_0x564981]=_0x3dd6ee;}};VoiceQueueReport[_0x418f('0xd')][_0x418f('0xaa')]=function(_0x4e7e4b){try{if(this[_0x418f('0x5b')](_0x4e7e4b)){if(this[_0x418f('0x12')][_0x4e7e4b[_0x418f('0x67')]]){for(var _0x6ff9e4=0x0,_0x190eb3={};_0x6ff9e4<this[_0x418f('0x12')][_0x4e7e4b[_0x418f('0x67')]][_0x418f('0xab')];_0x6ff9e4+=0x1){_0x190eb3=this['queueReports'][_0x4e7e4b[_0x418f('0x67')]][_0x6ff9e4];if(this[_0x418f('0x16')][_0x190eb3[_0x418f('0x60')]]){if(_0x190eb3[_0x418f('0x84')]){this[_0x418f('0x16')][_0x190eb3['queue']]['unmanaged']+=0x1;}if(_0x190eb3[_0x418f('0x77')]){this['voiceQueues'][_0x190eb3[_0x418f('0x60')]]['abandoned']+=0x1;}this[_0x418f('0x16')][_0x190eb3['queue']]['sumHoldTime']+=moment(_0x190eb3[_0x418f('0x7c')])[_0x418f('0xac')](_0x190eb3['queuecallerjoinAt'],_0x418f('0x8e'))||0x0;if(_0x6ff9e4===this[_0x418f('0x12')][_0x4e7e4b[_0x418f('0x67')]][_0x418f('0xab')]-0x1){this[_0x418f('0x16')][_0x190eb3['queue']]['sumDuration']+=moment()[_0x418f('0xad')](0x0)['diff'](_0x190eb3[_0x418f('0x8c')],_0x418f('0x8e'));this['voiceQueues'][_0x190eb3['queue']][_0x418f('0x54')]+=0x1;if(_0x190eb3[_0x418f('0x73')]){this[_0x418f('0x16')][_0x190eb3[_0x418f('0x60')]][_0x418f('0xae')]+=0x1;this[_0x418f('0x16')][_0x190eb3[_0x418f('0x60')]]['sumBillable']+=moment()['milliseconds'](0x0)[_0x418f('0xac')](_0x190eb3[_0x418f('0x7c')],_0x418f('0x8e'));_0x190eb3[_0x418f('0x74')]=moment()[_0x418f('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x190eb3[_0x418f('0x84')]=![];_0x190eb3['queuecallerexitAt']=null;}if(_0x190eb3[_0x418f('0x84')]){_0x190eb3['lastevent']='unmanaged';ami[_0x418f('0x48')](_0x418f('0xaf'),_0x190eb3);}if(_0x190eb3['queuecallerabandon']){_0x190eb3[_0x418f('0xb0')]='abandoned';ami[_0x418f('0x48')](_0x418f('0xb1'),_0x190eb3);}}else{this[_0x418f('0x16')][_0x190eb3[_0x418f('0x60')]][_0x418f('0x53')]+=this['voiceQueues'][_0x190eb3['queue']][_0x418f('0xb2')];}this[_0x418f('0x14')][_0x4e7e4b[_0x418f('0x67')]]=_0x190eb3;this[_0x418f('0x47')](_0x190eb3);this[_0x418f('0x4e')](this[_0x418f('0x16')][_0x190eb3[_0x418f('0x60')]]);}}ami['emit'](_0x418f('0xb3'),this['queueReports'][_0x4e7e4b[_0x418f('0x67')]]);delete this[_0x418f('0x12')][_0x4e7e4b[_0x418f('0x67')]];delete this[_0x418f('0x14')][_0x4e7e4b[_0x418f('0x67')]];}if(this[_0x418f('0x19')][_0x4e7e4b[_0x418f('0x67')]]){delete this[_0x418f('0x19')][_0x4e7e4b[_0x418f('0x67')]];}}}catch(_0x6a8668){logger[_0x418f('0x43')](_0x418f('0xb4'),util[_0x418f('0x71')](_0x6a8668,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x2f')]=function(_0x35c4bc){try{if(this[_0x418f('0x5b')](_0x35c4bc)){var _0x3c9e4f;if(this[_0x418f('0x12')][_0x35c4bc[_0x418f('0xb5')]]){_0x3c9e4f=_['last'](this[_0x418f('0x12')][_0x35c4bc[_0x418f('0xb5')]]);_0x3c9e4f[_0x418f('0x91')]=_0x35c4bc[_0x418f('0xb6')];_0x3c9e4f['transferuniqueid']=_0x35c4bc[_0x418f('0xb7')];_0x3c9e4f[_0x418f('0x78')]=_0x418f('0xb8');_0x3c9e4f['transfer']=!![];_0x3c9e4f[_0x418f('0x90')]='ATTENDED';if(this[_0x418f('0x12')][_0x35c4bc[_0x418f('0xb7')]]){var _0x3fb52f=this[_0x418f('0x12')][_0x35c4bc['secondtransfereruniqueid']];this[_0x418f('0x12')][_0x35c4bc[_0x418f('0xb7')]]=this[_0x418f('0x12')][_0x35c4bc[_0x418f('0xb5')]];this['queueReports'][_0x35c4bc['transfereeuniqueid']]=_0x3fb52f;var _0x295583=_[_0x418f('0x72')](this[_0x418f('0x12')][_0x35c4bc['transfereeuniqueid']]);_0x295583[_0x418f('0x3c')]=!![];}}else if(this[_0x418f('0x12')][_0x35c4bc[_0x418f('0xb9')]]){_0x3c9e4f=_[_0x418f('0x72')](this[_0x418f('0x12')][_0x35c4bc[_0x418f('0xb9')]]);_0x3c9e4f[_0x418f('0x91')]=_0x35c4bc[_0x418f('0xba')];_0x3c9e4f['transferuniqueid']=_0x35c4bc['origtransfereruniqueid'];_0x3c9e4f['queuecallerexitreason']='ATTENDEDTRANSFER';_0x3c9e4f[_0x418f('0x87')]=!![];_0x3c9e4f[_0x418f('0x90')]=_0x418f('0xbb');if(this['queueReports'][_0x35c4bc[_0x418f('0xbc')]]){var _0x3fb52f=this['queueReports'][_0x35c4bc[_0x418f('0xbc')]];this[_0x418f('0x12')][_0x35c4bc[_0x418f('0xbc')]]=this['queueReports'][_0x35c4bc['transfertargetuniqueid']];this['queueReports'][_0x35c4bc[_0x418f('0xb9')]]=_0x3fb52f;var _0x295583=_[_0x418f('0x72')](this['queueReports'][_0x35c4bc[_0x418f('0xb9')]]);_0x295583['switch']=!![];}}}}catch(_0x1c35c6){logger[_0x418f('0x43')]('[syncAttendedTransfer][VoiceQueueReport]',util['inspect'](_0x1c35c6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x418f('0xd')][_0x418f('0x30')]=function(_0x2266e9){try{if(this[_0x418f('0x5b')](_0x2266e9)){if(this[_0x418f('0x12')][_0x2266e9['transfereeuniqueid']]){var _0x58d935=_[_0x418f('0x72')](this['queueReports'][_0x2266e9[_0x418f('0xb5')]]);_0x58d935['queuecallerexitreason']=_0x418f('0xbd');_0x58d935[_0x418f('0x87')]=!![];_0x58d935[_0x418f('0x90')]=_0x418f('0xbe');_0x58d935[_0x418f('0x91')]=_0x2266e9[_0x418f('0xbf')];_0x58d935[_0x418f('0x93')]=_0x2266e9['transfereeuniqueid'];this[_0x418f('0xaa')]({'event':_0x418f('0xc0'),'uniqueid':_0x2266e9[_0x418f('0xb5')],'context':_0x2266e9[_0x418f('0xc1')],'channel':_0x2266e9[_0x418f('0xc2')]});}}}catch(_0x63f676){logger[_0x418f('0x43')]('[syncBlindTransfer][VoiceQueueReport]',util[_0x418f('0x71')](_0x63f676,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x418f('0x2c')]=function(_0x2231ae){try{if(this[_0x418f('0x5b')](_0x2231ae)){if(this[_0x418f('0x12')][_0x2231ae[_0x418f('0x67')]]){var _0x19cd99=_['last'](this['queueReports'][_0x2231ae[_0x418f('0x67')]]);if(!_[_0x418f('0x3d')](_0x19cd99[_0x418f('0x7c')])){_0x19cd99[_0x418f('0xc3')]=moment()[_0x418f('0x4a')](_0x418f('0x69'));}}}}catch(_0x17b602){logger[_0x418f('0x43')](_0x418f('0xc4'),util[_0x418f('0x71')](_0x17b602,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x418f('0x2d')]=function(_0x5a62b1){try{if(this[_0x418f('0x5b')](_0x5a62b1)){if(this[_0x418f('0x12')][_0x5a62b1[_0x418f('0x67')]]){var _0x142fff=_[_0x418f('0x72')](this['queueReports'][_0x5a62b1[_0x418f('0x67')]]);if(!_[_0x418f('0x3d')](_0x142fff['mohstarttime'])){_0x142fff['mohtime']+=moment()['milliseconds'](0x0)[_0x418f('0xac')](_0x142fff[_0x418f('0xc3')],_0x418f('0x8e'));delete _0x142fff[_0x418f('0xc3')];}}}}catch(_0x1ee783){logger['error']('[syncMusicOnHoldStop][VoiceQueueReport]',util['inspect'](_0x1ee783,{'showHidden':![],'depth':null}));}};module[_0x418f('0xc5')]=VoiceQueueReport;
\ No newline at end of file
+var _0xdfc7=['ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','defaults','redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','syncQueueSummary','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','bind','queuecallerabandon','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','unlockRR','clearZombieChannels','isNil','Action','status','catch','message','No\x20such\x20channel','error','variables','[voiceQueueReport][checkVariables]','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','inspect','emit','emitVoiceQueueChannelSave','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_channel:remove','type','inbound','strategy','answered','available','loggedIn','sumHoldTime','total','unmanaged','abandoned','Trunk','active','Interval','stringify','voice_queue:save','[queues]','queuesummary','then','[queuesummary]','isNotNull','queue','countBy','callers','toNumber','loggedin','emitVoiceQueueSummary','custom:queuesummary','[syncQueueSummary][VoiceQueueReport]','isUndefined','uniqueid','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','merge','pick','keys','push','[syncQueueCallerJoin][VoiceQueueReport]','syncQueueCallerAbandon','last','queuecallercomplete','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[syncQueueCallerAbandon][VoiceQueueReport]','queuecallerleaveAt','connectedlinename','[syncQueueCallerLeave][VoiceQueueReport]','COMPLETEDBYAGENT','[syncAgentConnect][VoiceQueueReport]','assigned','membername','queuecallerexitAt','transfer','startsWith','toLowerCase','local/','linkedid','FORWARDTRANSFER','transfertype','FORWARD','destexten','transferuniqueid','reason','[syncAgentComplete][VoiceQueueReport]','addVariable','variable','queuestatus','value','queuecallerexit','queueposition','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberrealtime','length','diff','seconds','sumDuration','sumBillable','milliseconds','queuecallercompleteAt','lastevent','custom:queuecallerunmanaged','custom:queuecallerabandon','[syncHangup][VoiceQueueReport]','syncAttendedTransfer','transfereeuniqueid','transferexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','switch','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[syncAttendedTransfer][VoiceQueueReport]','BLINDTRANSFER','BLIND','extension','context','transfererchannel','mohstarttime','[syncMusicOnHoldStart][VoiceQueueReport]','mohtime','[syncMusicOnHoldStop][VoiceQueueReport]','exports','bluebird','util','md5'];(function(_0x772a1f,_0x1c217b){var _0x434da9=function(_0x2b68ec){while(--_0x2b68ec){_0x772a1f['push'](_0x772a1f['shift']());}};_0x434da9(++_0x1c217b);}(_0xdfc7,0xc1));var _0x7dfc=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xdfc7[_0x87b0ff];return _0x3bc0b2;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0x7dfc('0x0'));var util=require(_0x7dfc('0x1'));var md5=require(_0x7dfc('0x2'));var Redis=require(_0x7dfc('0x3'));var config=require(_0x7dfc('0x4'));var logger=require(_0x7dfc('0x5'))(_0x7dfc('0x6'));var ami=require(_0x7dfc('0x7'));var QueueReport=require(_0x7dfc('0x8'));config['redis']=_[_0x7dfc('0x9')](config[_0x7dfc('0xa')],{'host':_0x7dfc('0xb'),'port':0x18eb});var io=require(_0x7dfc('0xc'))(new Redis(config[_0x7dfc('0xa')]));var Sequence=function(){};Sequence[_0x7dfc('0xd')][_0x7dfc('0xe')]=function(_0x5e0de2){this[_0x7dfc('0xf')]=this[_0x7dfc('0xf')]?this[_0x7dfc('0xf')][_0x7dfc('0x10')](_0x5e0de2):_0x5e0de2();};function VoiceQueueReport(_0x5895bd){this[_0x7dfc('0x11')]=new Sequence();this[_0x7dfc('0x12')]={};this[_0x7dfc('0x13')]=_0x5895bd['agents'];this[_0x7dfc('0x14')]=_0x5895bd[_0x7dfc('0x15')];this[_0x7dfc('0x16')]=_0x5895bd[_0x7dfc('0x16')];this[_0x7dfc('0x17')]=!![];this['campaigns']=_0x5895bd['campaigns'];this['variables']={};ami['on']('queuesummary',this[_0x7dfc('0x18')]['bind'](this));ami['on'](_0x7dfc('0x19'),this[_0x7dfc('0x1a')]['bind'](this));ami['on'](_0x7dfc('0x1b'),this[_0x7dfc('0x1c')][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x1e'),this['syncQueueCallerAbandon']['bind'](this));ami['on']('queuecallerleave',this[_0x7dfc('0x1f')]['bind'](this));ami['on'](_0x7dfc('0x20'),this['syncAgentComplete'][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x21'),this[_0x7dfc('0x22')][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x23'),this[_0x7dfc('0x24')][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x25'),this[_0x7dfc('0x26')][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x27'),this['syncFullyBooted'][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x28'),this[_0x7dfc('0x29')][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x2a'),this[_0x7dfc('0x2b')][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x2c'),this['syncAttendedTransfer'][_0x7dfc('0x1d')](this));ami['on'](_0x7dfc('0x2d'),this[_0x7dfc('0x2e')]['bind'](this));this[_0x7dfc('0x2f')]();this['loopQueueShow']();}function isNotNull(_0xdea82e){return _0xdea82e!==null&&!_['isUndefined'](_0xdea82e);}function clearChannels(_0xbc2175){if(!_[_0x7dfc('0x30')](_0xbc2175)){for(var _0x3e8952 in _0xbc2175){if(_0xbc2175['hasOwnProperty'](_0x3e8952)){delete _0xbc2175[_0x3e8952];}}}}function clearCampaigns(_0x1bea0f){if(!_[_0x7dfc('0x30')](_0x1bea0f)){for(var _0x1138c8 in _0x1bea0f){if(_0x1bea0f[_0x7dfc('0x31')](_0x1138c8)){_0x1bea0f[_0x1138c8]['originated']=0x0;}}}}function clearVoiceQueues(_0x3ac18c){if(!_[_0x7dfc('0x30')](_0x3ac18c)){for(var _0x546439 in _0x3ac18c){if(_0x3ac18c['hasOwnProperty'](_0x546439)){_0x3ac18c[_0x546439][_0x7dfc('0x32')]=0x0;_0x3ac18c[_0x546439][_0x7dfc('0x33')]=0x0;_0x3ac18c[_0x546439][_0x7dfc('0x34')]=0x0;_0x3ac18c[_0x546439][_0x7dfc('0x35')]=0x0;_0x3ac18c[_0x546439]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x5e532c){if(!_[_0x7dfc('0x30')](_0x5e532c)){for(var _0x1bb18c in _0x5e532c){if(_0x5e532c['hasOwnProperty'](_0x1bb18c)){_0x5e532c[_0x1bb18c][_0x7dfc('0x36')]=!![];}}}}VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x37')]=function(){var _0x5efd3b=this;for(var _0x4d15f4 in this[_0x7dfc('0x14')]){if(this[_0x7dfc('0x14')][_0x7dfc('0x31')](_0x4d15f4)&&!this[_0x7dfc('0x14')][_0x4d15f4]['switch']){this[_0x7dfc('0x11')][_0x7dfc('0xe')](function(){if(!_[_0x7dfc('0x38')](_0x5efd3b[_0x7dfc('0x14')][_0x4d15f4])){return ami[_0x7dfc('0x39')]({'action':_0x7dfc('0x3a'),'channel':_0x5efd3b[_0x7dfc('0x14')][_0x4d15f4]['channel']})[_0x7dfc('0x3b')](function(_0x549d4e){if(_0x549d4e[_0x7dfc('0x3c')]===_0x7dfc('0x3d')){setTimeout(function(){if(_0x5efd3b['channels'][_0x4d15f4]){delete _0x5efd3b[_0x7dfc('0x14')][_0x4d15f4];logger[_0x7dfc('0x3e')]('[voiceQueueReport][checkChannel]',_0x4d15f4);}if(_0x5efd3b['queueReports'][_0x4d15f4]){delete _0x5efd3b[_0x7dfc('0x12')][_0x4d15f4];logger['error']('[voiceQueueReport][checkQueueReport]',_0x4d15f4);}if(_0x5efd3b[_0x7dfc('0x3f')][_0x4d15f4]){delete _0x5efd3b[_0x7dfc('0x3f')][_0x4d15f4];logger[_0x7dfc('0x3e')](_0x7dfc('0x40'),_0x4d15f4);}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x7dfc('0x41')]=function(){logger[_0x7dfc('0x3e')](_0x7dfc('0x42'));clearChannels(this[_0x7dfc('0x14')]);this[_0x7dfc('0x43')](this[_0x7dfc('0x12')]);clearAgentBooked(this[_0x7dfc('0x13')]);clearVoiceQueues(this[_0x7dfc('0x16')]);clearCampaigns(this['campaigns']);};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x43')]=function(_0x34a30b){var _0x259a46=this;if(!_[_0x7dfc('0x30')](_0x34a30b)){for(var _0x2047ab in _0x34a30b){if(_0x34a30b[_0x7dfc('0x31')](_0x2047ab)){_0x259a46[_0x7dfc('0x44')](_0x34a30b[_0x2047ab]);delete _0x34a30b[_0x2047ab];}}}};function loggerCatch(_0x64c300){return function(_0x1ae970){logger[_0x7dfc('0x3e')](_0x64c300,util[_0x7dfc('0x45')](_0x1ae970,{'showHidden':![],'depth':null}));};}VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x46')]=function(_0x44fbef,_0xf5fe8a,_0x4b21e6){io['to'](_0x44fbef)[_0x7dfc('0x46')](_0xf5fe8a,_0x4b21e6);};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x47')]=function(_0x2b9bed){this[_0x7dfc('0x46')](util[_0x7dfc('0x48')](_0x7dfc('0x49'),_0x2b9bed[_0x7dfc('0x4a')]),_0x7dfc('0x4b'),_0x2b9bed);};VoiceQueueReport[_0x7dfc('0xd')]['emitVoiceQueueChannelRemove']=function(_0x1399d8){this[_0x7dfc('0x46')](util[_0x7dfc('0x48')](_0x7dfc('0x49'),_0x1399d8[_0x7dfc('0x4a')]),_0x7dfc('0x4c'),_0x1399d8);};VoiceQueueReport[_0x7dfc('0xd')]['emitVoiceQueueSummary']=function(_0x3339ce){if(_0x3339ce[_0x7dfc('0x4d')]===_0x7dfc('0x4e')){var _0x2274e4={'id':_0x3339ce['id'],'name':_0x3339ce[_0x7dfc('0x4a')],'strategy':_0x3339ce[_0x7dfc('0x4f')],'answered':_0x3339ce[_0x7dfc('0x50')],'available':_0x3339ce[_0x7dfc('0x51')],'loggedIn':_0x3339ce[_0x7dfc('0x52')],'pTalking':_0x3339ce[_0x7dfc('0x34')],'sumBillable':_0x3339ce['sumBillable'],'sumDuration':_0x3339ce['sumDuration'],'sumHoldTime':_0x3339ce[_0x7dfc('0x53')]||0x0,'talking':_0x3339ce['talking'],'total':_0x3339ce[_0x7dfc('0x54')],'type':_0x3339ce[_0x7dfc('0x4d')],'unmanaged':_0x3339ce[_0x7dfc('0x55')],'abandoned':_0x3339ce[_0x7dfc('0x56')],'waiting':_0x3339ce['waiting']};if(_0x3339ce['Trunk']){_0x2274e4[_0x7dfc('0x57')]={'id':_0x3339ce[_0x7dfc('0x57')]['id'],'name':_0x3339ce[_0x7dfc('0x57')][_0x7dfc('0x4a')],'active':_0x3339ce['Trunk'][_0x7dfc('0x58')],'callerid':_0x3339ce[_0x7dfc('0x57')]['callerid']};}if(_0x3339ce[_0x7dfc('0x59')]){_0x2274e4[_0x7dfc('0x59')]={'id':_0x3339ce[_0x7dfc('0x59')]['id'],'name':_0x3339ce[_0x7dfc('0x59')][_0x7dfc('0x4a')]};}var _0x12df07=md5(JSON[_0x7dfc('0x5a')](_0x2274e4));if(_0x3339ce[_0x7dfc('0x2')]!==_0x12df07){_0x3339ce[_0x7dfc('0x2')]=_0x12df07;this[_0x7dfc('0x46')](util[_0x7dfc('0x48')](_0x7dfc('0x49'),_0x2274e4[_0x7dfc('0x4a')]),_0x7dfc('0x5b'),_0x2274e4);}}};VoiceQueueReport['prototype']['isNotNull']=function(_0xf5d23f){return _0xf5d23f!==null&&!_['isUndefined'](_0xf5d23f);};VoiceQueueReport['prototype']['loopQueueShow']=function(){var _0x5a443d=this;setInterval(function(){_0x5a443d[_0x7dfc('0x37')]();ami[_0x7dfc('0x39')]({'action':'queues'})[_0x7dfc('0x3b')](loggerCatch(_0x7dfc('0x5c')));},0x2710);};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x2f')]=function(){var _0x27b917=this;setInterval(function(){if(_0x27b917['flagQueueSummary']){return ami[_0x7dfc('0x39')]({'action':_0x7dfc('0x5d')})[_0x7dfc('0x5e')](function(_0x48ca21){_0x27b917[_0x7dfc('0x17')]=![];})['catch'](loggerCatch(_0x7dfc('0x5f')));}},0x3e8);};VoiceQueueReport['prototype'][_0x7dfc('0x18')]=function(_0x5bad8a){try{if(this[_0x7dfc('0x60')](_0x5bad8a)&&this['isNotNull'](_0x5bad8a[_0x7dfc('0x61')])){if(this[_0x7dfc('0x16')][_0x5bad8a['queue']]){var _0x26e3d6=_[_0x7dfc('0x62')](this[_0x7dfc('0x14')],_0x7dfc('0x61'))[_0x5bad8a[_0x7dfc('0x61')]]||0x0;var _0x2090f8=_0x26e3d6-_0x5bad8a[_0x7dfc('0x63')];if(this[_0x7dfc('0x16')][_0x5bad8a['queue']][_0x7dfc('0x35')]!==_[_0x7dfc('0x64')](_0x5bad8a[_0x7dfc('0x63')])||this[_0x7dfc('0x16')][_0x5bad8a[_0x7dfc('0x61')]][_0x7dfc('0x52')]!==_[_0x7dfc('0x64')](_0x5bad8a['loggedin'])||this['voiceQueues'][_0x5bad8a[_0x7dfc('0x61')]][_0x7dfc('0x51')]!==_['toNumber'](_0x5bad8a['available'])||this['voiceQueues'][_0x5bad8a['queue']][_0x7dfc('0x33')]!==_0x2090f8){this[_0x7dfc('0x16')][_0x5bad8a[_0x7dfc('0x61')]][_0x7dfc('0x35')]=_[_0x7dfc('0x64')](_0x5bad8a[_0x7dfc('0x63')]);this[_0x7dfc('0x16')][_0x5bad8a[_0x7dfc('0x61')]][_0x7dfc('0x52')]=_[_0x7dfc('0x64')](_0x5bad8a[_0x7dfc('0x65')]);this['voiceQueues'][_0x5bad8a[_0x7dfc('0x61')]][_0x7dfc('0x51')]=_['toNumber'](_0x5bad8a[_0x7dfc('0x51')]);this[_0x7dfc('0x16')][_0x5bad8a[_0x7dfc('0x61')]][_0x7dfc('0x33')]=_0x2090f8>0x0?_0x2090f8:0x0;this['voiceQueues'][_0x5bad8a['queue']][_0x7dfc('0x33')]=this[_0x7dfc('0x16')][_0x5bad8a[_0x7dfc('0x61')]][_0x7dfc('0x33')]>_[_0x7dfc('0x64')](_0x5bad8a[_0x7dfc('0x65')])?_[_0x7dfc('0x64')](_0x5bad8a['loggedin']):this[_0x7dfc('0x16')][_0x5bad8a[_0x7dfc('0x61')]][_0x7dfc('0x33')];this[_0x7dfc('0x66')](this[_0x7dfc('0x16')][_0x5bad8a[_0x7dfc('0x61')]]);}ami[_0x7dfc('0x46')](_0x7dfc('0x67'),this[_0x7dfc('0x16')][_0x5bad8a[_0x7dfc('0x61')]]);}}}catch(_0x4568ca){logger['error'](_0x7dfc('0x68'),util[_0x7dfc('0x45')](_0x4568ca,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueSummaryComplete']=function(_0x44ae17){this[_0x7dfc('0x17')]=!![];};VoiceQueueReport['prototype']['syncNewExten']=function(_0x5b130c){};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x1c')]=function(_0x99e3){try{if(this[_0x7dfc('0x60')](_0x99e3)){if(_[_0x7dfc('0x69')](this[_0x7dfc('0x12')][_0x99e3[_0x7dfc('0x6a')]])){this[_0x7dfc('0x12')][_0x99e3['uniqueid']]=[];this[_0x7dfc('0x14')][_0x99e3['uniqueid']]={};}var _0x56eefa=new QueueReport();_0x56eefa['name']=_0x99e3[_0x7dfc('0x61')];_0x56eefa[_0x7dfc('0x4d')]=this[_0x7dfc('0x16')][_0x56eefa[_0x7dfc('0x4a')]]&&this[_0x7dfc('0x16')][_0x56eefa['name']]['type']?this[_0x7dfc('0x16')][_0x56eefa[_0x7dfc('0x4a')]][_0x7dfc('0x4d')]||_0x7dfc('0x4e'):_0x7dfc('0x4e');_0x56eefa[_0x7dfc('0x61')]=_0x99e3[_0x7dfc('0x61')];_0x56eefa[_0x7dfc('0x6b')]=moment()[_0x7dfc('0x48')](_0x7dfc('0x6c'));_0x56eefa[_0x7dfc('0x6d')]=_0x99e3[_0x7dfc('0x6d')];_0x56eefa[_0x7dfc('0x6e')]=_0x99e3[_0x7dfc('0x6e')];_[_0x7dfc('0x6f')](_0x56eefa,_[_0x7dfc('0x70')](_0x99e3,_[_0x7dfc('0x71')](_0x56eefa)));this[_0x7dfc('0x12')][_0x99e3[_0x7dfc('0x6a')]][_0x7dfc('0x72')](_0x56eefa);this['channels'][_0x99e3[_0x7dfc('0x6a')]]=_0x56eefa;this[_0x7dfc('0x47')](_0x56eefa);}}catch(_0x145a4){logger[_0x7dfc('0x3e')](_0x7dfc('0x73'),util[_0x7dfc('0x45')](_0x145a4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x74')]=function(_0x324de3){try{if(this['isNotNull'](_0x324de3)){if(this[_0x7dfc('0x12')][_0x324de3[_0x7dfc('0x6a')]]){var _0xab2f61=_[_0x7dfc('0x75')](this[_0x7dfc('0x12')][_0x324de3['uniqueid']]);_0xab2f61[_0x7dfc('0x76')]=![];_0xab2f61['queuecallercompleteAt']=null;_0xab2f61[_0x7dfc('0x77')]=_0x324de3['holdtime'];_0xab2f61[_0x7dfc('0x78')]=_0x324de3[_0x7dfc('0x78')];_0xab2f61[_0x7dfc('0x1e')]=!![];_0xab2f61[_0x7dfc('0x79')]=moment()['format'](_0x7dfc('0x6c'));_0xab2f61[_0x7dfc('0x7a')]=_0x7dfc('0x7b');_0xab2f61[_0x7dfc('0x7c')]=null;this[_0x7dfc('0x14')][_0x324de3[_0x7dfc('0x6a')]]=_0xab2f61;this[_0x7dfc('0x44')](_0xab2f61);}}}catch(_0x58485c){logger[_0x7dfc('0x3e')](_0x7dfc('0x7d'),util[_0x7dfc('0x45')](_0x58485c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x1f')]=function(_0x7d0231){try{if(this[_0x7dfc('0x60')](_0x7d0231)){if(this[_0x7dfc('0x12')][_0x7d0231[_0x7dfc('0x6a')]]){var _0x52cf6e=_[_0x7dfc('0x75')](this['queueReports'][_0x7d0231[_0x7dfc('0x6a')]]);_0x52cf6e[_0x7dfc('0x7e')]=moment()[_0x7dfc('0x48')](_0x7dfc('0x6c'));_0x52cf6e['connectedlinenum']=_0x7d0231['connectedlinenum'];_0x52cf6e[_0x7dfc('0x7f')]=_0x7d0231[_0x7dfc('0x7f')];this[_0x7dfc('0x14')][_0x7d0231[_0x7dfc('0x6a')]]=_0x52cf6e;this[_0x7dfc('0x47')](_0x52cf6e);}}}catch(_0xcf221f){logger[_0x7dfc('0x3e')](_0x7dfc('0x80'),util[_0x7dfc('0x45')](_0xcf221f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7dfc('0xd')]['syncAgentConnect']=function(_0x2d7898){try{if(this[_0x7dfc('0x60')](_0x2d7898)){if(this[_0x7dfc('0x12')][_0x2d7898['uniqueid']]){var _0x5fc4eb=_['last'](this[_0x7dfc('0x12')][_0x2d7898[_0x7dfc('0x6a')]]);_0x5fc4eb['queuecallercomplete']=!![];_0x5fc4eb[_0x7dfc('0x7a')]=_0x7dfc('0x81');}}}catch(_0x7f73d6){logger['error'](_0x7dfc('0x82'),util['inspect'](_0x7f73d6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7dfc('0xd')]['syncAgentComplete']=function(_0x4ffe2d){try{if(this[_0x7dfc('0x60')](_0x4ffe2d)){if(this['queueReports'][_0x4ffe2d[_0x7dfc('0x6a')]]){var _0xd93d95=_[_0x7dfc('0x75')](this['queueReports'][_0x4ffe2d['uniqueid']]);_0xd93d95[_0x7dfc('0x1e')]=![];_0xd93d95[_0x7dfc('0x79')]=null;_0xd93d95[_0x7dfc('0x83')]=!![];_0xd93d95[_0x7dfc('0x7c')]=_0x4ffe2d[_0x7dfc('0x84')];_0xd93d95[_0x7dfc('0x77')]=_0x4ffe2d[_0x7dfc('0x77')];_0xd93d95['queuecallercomplete']=!![];_0xd93d95['queuecallerexit']=![];_0xd93d95[_0x7dfc('0x85')]=null;if(!_0xd93d95['transfer']){if(_0x4ffe2d['reason']==_0x7dfc('0x86')){_0xd93d95[_0x7dfc('0x7a')]='COMPLETED';}else{if(_[_0x7dfc('0x87')](_0x4ffe2d['channel'][_0x7dfc('0x88')](),_0x7dfc('0x89'))){if(this['queueReports'][_0x4ffe2d[_0x7dfc('0x8a')]]){var _0x21a6d0=_[_0x7dfc('0x75')](this[_0x7dfc('0x12')][_0x4ffe2d[_0x7dfc('0x8a')]]);_0x21a6d0[_0x7dfc('0x76')]=![];_0x21a6d0['queuecallerexit']=!![];_0x21a6d0[_0x7dfc('0x85')]=moment(_0xd93d95['queuecallerjoinAt'])['add'](_0x4ffe2d[_0x7dfc('0x77')],'seconds')['format'](_0x7dfc('0x6c'));_0x21a6d0[_0x7dfc('0x7a')]=_0x7dfc('0x8b');_0x21a6d0[_0x7dfc('0x86')]=!![];_0x21a6d0[_0x7dfc('0x8c')]=_0x7dfc('0x8d');_0x21a6d0['transferexten']=_0x4ffe2d[_0x7dfc('0x8e')];_0x21a6d0[_0x7dfc('0x8f')]=_0x4ffe2d['uniqueid'];var _0x3cf688=this[_0x7dfc('0x12')][_0x4ffe2d[_0x7dfc('0x8a')]];this[_0x7dfc('0x12')][_0x4ffe2d[_0x7dfc('0x8a')]]=this['queueReports'][_0x4ffe2d[_0x7dfc('0x6a')]];this[_0x7dfc('0x12')][_0x4ffe2d['uniqueid']]=_0x3cf688;}}else{_0xd93d95[_0x7dfc('0x7a')]='COMPLETEDBY'+_0x4ffe2d[_0x7dfc('0x90')]['toUpperCase']();}}}this[_0x7dfc('0x14')][_0x4ffe2d[_0x7dfc('0x6a')]]=_0xd93d95;this[_0x7dfc('0x44')](_0xd93d95);}}}catch(_0x16c59f){logger[_0x7dfc('0x3e')](_0x7dfc('0x91'),util['inspect'](_0x16c59f,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x7dfc('0x24')]=function(_0x21be72){try{if(this[_0x7dfc('0x60')](_0x21be72)){this[_0x7dfc('0x92')](_0x21be72[_0x7dfc('0x6a')],_['keys'](_0x21be72[_0x7dfc('0x93')])[0x0],_0x21be72['value']);if(this[_0x7dfc('0x12')][_0x21be72['uniqueid']]){var _0x2e80ab=_['last'](this[_0x7dfc('0x12')][_0x21be72['uniqueid']]);if(_0x2e80ab){if(this[_0x7dfc('0x60')](_0x21be72[_0x7dfc('0x93')])&&this[_0x7dfc('0x60')](_0x21be72['variable'][_0x7dfc('0x94')])){switch(_0x21be72[_0x7dfc('0x95')]){case'CONTINUE':_0x2e80ab[_0x7dfc('0x96')]=![];_0x2e80ab[_0x7dfc('0x85')]=null;break;default:_0x2e80ab['queuecallerexit']=!![];_0x2e80ab[_0x7dfc('0x85')]=moment()['format'](_0x7dfc('0x6c'));_0x2e80ab['queuecallerleaveAt']=moment()[_0x7dfc('0x48')](_0x7dfc('0x6c'));}_0x2e80ab[_0x7dfc('0x1e')]=![];_0x2e80ab[_0x7dfc('0x79')]=null;_0x2e80ab[_0x7dfc('0x7a')]=_0x21be72[_0x7dfc('0x95')];this[_0x7dfc('0x14')][_0x21be72[_0x7dfc('0x6a')]]=_0x2e80ab;this['emitVoiceQueueChannelRemove'](_0x2e80ab);}else if(this[_0x7dfc('0x60')](_0x21be72[_0x7dfc('0x93')])&&this['isNotNull'](_0x21be72['variable'][_0x7dfc('0x97')])){if(!_0x2e80ab[_0x7dfc('0x1e')]){_0x2e80ab[_0x7dfc('0x96')]=!![];_0x2e80ab['queuecallerexitAt']=moment()[_0x7dfc('0x48')](_0x7dfc('0x6c'));_0x2e80ab[_0x7dfc('0x7a')]='EXITWITHKEY';_0x2e80ab['queuecallerleaveAt']=moment()[_0x7dfc('0x48')](_0x7dfc('0x6c'));this[_0x7dfc('0x14')][_0x21be72[_0x7dfc('0x6a')]]=_0x2e80ab;}}_0x2e80ab[_0x7dfc('0x3f')]=this[_0x7dfc('0x3f')][_0x21be72[_0x7dfc('0x6a')]];}}}}catch(_0x1b450d){logger[_0x7dfc('0x3e')]('[syncVarSet][VoiceQueueReport]',util[_0x7dfc('0x45')](_0x1b450d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x7dfc('0x92')]=function(_0x248532,_0x5863b5,_0x17b0f6){var _0x18bbf2=['rtpaudioqos',_0x7dfc('0x98'),_0x7dfc('0x99'),_0x7dfc('0x9a'),_0x7dfc('0x9b'),'rtpaudioqoslossbridged','rtpaudioqosrtt',_0x7dfc('0x9c'),_0x7dfc('0x9d'),_0x7dfc('0x9e'),_0x7dfc('0x9f'),_0x7dfc('0xa0'),_0x7dfc('0xa1'),_0x7dfc('0xa2'),'memberinterface','memberlastcall','membername','memberpenalty',_0x7dfc('0xa3')];if(!_[_0x7dfc('0x38')](_0x5863b5)&&!_['includes'](_0x18bbf2,_0x5863b5)){if(_['isUndefined'](this[_0x7dfc('0x3f')][_0x248532])){this[_0x7dfc('0x3f')][_0x248532]={};}this[_0x7dfc('0x3f')][_0x248532][_0x5863b5]=_0x17b0f6;}};VoiceQueueReport[_0x7dfc('0xd')]['syncHangup']=function(_0x38f487){try{if(this[_0x7dfc('0x60')](_0x38f487)){if(this[_0x7dfc('0x12')][_0x38f487[_0x7dfc('0x6a')]]){for(var _0xf2738a=0x0,_0x208e80={};_0xf2738a<this[_0x7dfc('0x12')][_0x38f487[_0x7dfc('0x6a')]][_0x7dfc('0xa4')];_0xf2738a+=0x1){_0x208e80=this['queueReports'][_0x38f487['uniqueid']][_0xf2738a];if(this[_0x7dfc('0x16')][_0x208e80[_0x7dfc('0x61')]]){if(_0x208e80[_0x7dfc('0x96')]){this['voiceQueues'][_0x208e80[_0x7dfc('0x61')]][_0x7dfc('0x55')]+=0x1;}if(_0x208e80[_0x7dfc('0x1e')]){this[_0x7dfc('0x16')][_0x208e80[_0x7dfc('0x61')]][_0x7dfc('0x56')]+=0x1;}this[_0x7dfc('0x16')][_0x208e80[_0x7dfc('0x61')]][_0x7dfc('0x53')]+=moment(_0x208e80[_0x7dfc('0x7e')])[_0x7dfc('0xa5')](_0x208e80[_0x7dfc('0x6b')],_0x7dfc('0xa6'))||0x0;if(_0xf2738a===this[_0x7dfc('0x12')][_0x38f487[_0x7dfc('0x6a')]][_0x7dfc('0xa4')]-0x1){this['voiceQueues'][_0x208e80[_0x7dfc('0x61')]][_0x7dfc('0xa7')]+=moment()['milliseconds'](0x0)['diff'](_0x208e80[_0x7dfc('0x6b')],_0x7dfc('0xa6'));this['voiceQueues'][_0x208e80[_0x7dfc('0x61')]][_0x7dfc('0x54')]+=0x1;if(_0x208e80[_0x7dfc('0x76')]){this[_0x7dfc('0x16')][_0x208e80[_0x7dfc('0x61')]][_0x7dfc('0x50')]+=0x1;this['voiceQueues'][_0x208e80[_0x7dfc('0x61')]][_0x7dfc('0xa8')]+=moment()[_0x7dfc('0xa9')](0x0)[_0x7dfc('0xa5')](_0x208e80[_0x7dfc('0x7e')],'seconds');_0x208e80[_0x7dfc('0xaa')]=moment()['format'](_0x7dfc('0x6c'));_0x208e80[_0x7dfc('0x96')]=![];_0x208e80[_0x7dfc('0x85')]=null;}if(_0x208e80[_0x7dfc('0x96')]){_0x208e80[_0x7dfc('0xab')]='unmanaged';ami[_0x7dfc('0x46')](_0x7dfc('0xac'),_0x208e80);}if(_0x208e80['queuecallerabandon']){_0x208e80[_0x7dfc('0xab')]='abandoned';ami[_0x7dfc('0x46')](_0x7dfc('0xad'),_0x208e80);}}else{this[_0x7dfc('0x16')][_0x208e80[_0x7dfc('0x61')]][_0x7dfc('0xa7')]+=this[_0x7dfc('0x16')][_0x208e80['queue']]['sumHoldTime'];}this[_0x7dfc('0x14')][_0x38f487['uniqueid']]=_0x208e80;this['emitVoiceQueueChannelRemove'](_0x208e80);this[_0x7dfc('0x66')](this['voiceQueues'][_0x208e80['queue']]);}}ami[_0x7dfc('0x46')]('custom:voiceQueueReport',this[_0x7dfc('0x12')][_0x38f487[_0x7dfc('0x6a')]]);delete this[_0x7dfc('0x12')][_0x38f487[_0x7dfc('0x6a')]];delete this['channels'][_0x38f487[_0x7dfc('0x6a')]];}if(this[_0x7dfc('0x3f')][_0x38f487[_0x7dfc('0x6a')]]){delete this[_0x7dfc('0x3f')][_0x38f487[_0x7dfc('0x6a')]];}}}catch(_0x26d9c1){logger['error'](_0x7dfc('0xae'),util[_0x7dfc('0x45')](_0x26d9c1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0xaf')]=function(_0x111ed1){try{if(this[_0x7dfc('0x60')](_0x111ed1)){var _0x24fe0e;if(this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb0')]]){_0x24fe0e=_[_0x7dfc('0x75')](this['queueReports'][_0x111ed1['transfereeuniqueid']]);_0x24fe0e[_0x7dfc('0xb1')]=_0x111ed1['secondtransfererexten'];_0x24fe0e[_0x7dfc('0x8f')]=_0x111ed1[_0x7dfc('0xb2')];_0x24fe0e[_0x7dfc('0x7a')]=_0x7dfc('0xb3');_0x24fe0e['transfer']=!![];_0x24fe0e[_0x7dfc('0x8c')]=_0x7dfc('0xb4');if(this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb2')]]){var _0x18e45a=this['queueReports'][_0x111ed1['secondtransfereruniqueid']];this['queueReports'][_0x111ed1['secondtransfereruniqueid']]=this['queueReports'][_0x111ed1['transfereeuniqueid']];this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb0')]]=_0x18e45a;var _0x31c036=_['last'](this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb0')]]);_0x31c036[_0x7dfc('0xb5')]=!![];}}else if(this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb6')]]){_0x24fe0e=_[_0x7dfc('0x75')](this['queueReports'][_0x111ed1['transfertargetuniqueid']]);_0x24fe0e[_0x7dfc('0xb1')]=_0x111ed1[_0x7dfc('0xb7')];_0x24fe0e[_0x7dfc('0x8f')]=_0x111ed1[_0x7dfc('0xb8')];_0x24fe0e[_0x7dfc('0x7a')]=_0x7dfc('0xb3');_0x24fe0e[_0x7dfc('0x86')]=!![];_0x24fe0e[_0x7dfc('0x8c')]='ATTENDED';if(this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb8')]]){var _0x18e45a=this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb8')]];this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb8')]]=this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb6')]];this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb6')]]=_0x18e45a;var _0x31c036=_['last'](this[_0x7dfc('0x12')][_0x111ed1[_0x7dfc('0xb6')]]);_0x31c036['switch']=!![];}}}}catch(_0x35230a){logger[_0x7dfc('0x3e')](_0x7dfc('0xb9'),util[_0x7dfc('0x45')](_0x35230a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x2e')]=function(_0x18474d){try{if(this[_0x7dfc('0x60')](_0x18474d)){if(this[_0x7dfc('0x12')][_0x18474d['transfereeuniqueid']]){var _0x5a3939=_[_0x7dfc('0x75')](this[_0x7dfc('0x12')][_0x18474d['transfereeuniqueid']]);_0x5a3939['queuecallerexitreason']=_0x7dfc('0xba');_0x5a3939['transfer']=!![];_0x5a3939[_0x7dfc('0x8c')]=_0x7dfc('0xbb');_0x5a3939[_0x7dfc('0xb1')]=_0x18474d[_0x7dfc('0xbc')];_0x5a3939[_0x7dfc('0x8f')]=_0x18474d['transfereeuniqueid'];this[_0x7dfc('0x26')]({'event':'BlindTransfer','uniqueid':_0x18474d[_0x7dfc('0xb0')],'context':_0x18474d[_0x7dfc('0xbd')],'channel':_0x18474d[_0x7dfc('0xbe')]});}}}catch(_0x5a6ae3){logger['error']('[syncBlindTransfer][VoiceQueueReport]',util[_0x7dfc('0x45')](_0x5a6ae3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x29')]=function(_0x5108d6){try{if(this[_0x7dfc('0x60')](_0x5108d6)){if(this['queueReports'][_0x5108d6[_0x7dfc('0x6a')]]){var _0x4934c2=_['last'](this['queueReports'][_0x5108d6[_0x7dfc('0x6a')]]);if(!_[_0x7dfc('0x38')](_0x4934c2[_0x7dfc('0x7e')])){_0x4934c2[_0x7dfc('0xbf')]=moment()[_0x7dfc('0x48')](_0x7dfc('0x6c'));}}}}catch(_0x38198f){logger[_0x7dfc('0x3e')](_0x7dfc('0xc0'),util[_0x7dfc('0x45')](_0x38198f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7dfc('0xd')][_0x7dfc('0x2b')]=function(_0x6d982){try{if(this[_0x7dfc('0x60')](_0x6d982)){if(this[_0x7dfc('0x12')][_0x6d982[_0x7dfc('0x6a')]]){var _0x47d60d=_['last'](this[_0x7dfc('0x12')][_0x6d982[_0x7dfc('0x6a')]]);if(!_[_0x7dfc('0x38')](_0x47d60d['mohstarttime'])){_0x47d60d[_0x7dfc('0xc1')]+=moment()[_0x7dfc('0xa9')](0x0)[_0x7dfc('0xa5')](_0x47d60d[_0x7dfc('0xbf')],_0x7dfc('0xa6'));delete _0x47d60d[_0x7dfc('0xbf')];}}}}catch(_0x2051c5){logger['error'](_0x7dfc('0xc2'),util['inspect'](_0x2051c5,{'showHidden':![],'depth':null}));}};module[_0x7dfc('0xc3')]=VoiceQueueReport;
\ No newline at end of file
index 10bb6d5..d6a89bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x032e=['CreateReportAgentPreview','../client','campaign'];(function(_0x41963a,_0x500ed7){var _0x56798b=function(_0xa327ea){while(--_0xa327ea){_0x41963a['push'](_0x41963a['shift']());}};_0x56798b(++_0x500ed7);}(_0x032e,0x124));var _0xe032=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x032e[_0x13ea00];return _0x1f7347;};'use strict';var client=require(_0xe032('0x0'));exports['createHistory']=function(_0x299adf){return function(){_0x299adf[_0xe032('0x1')]=_0x299adf['queue'];return client['Request'](_0xe032('0x2'),{'body':_0x299adf,'log':_0xe032('0x2')});};};
\ No newline at end of file
+var _0xac31=['campaign','queue','Request','CreateReportAgentPreview','../client','createHistory'];(function(_0x322eb8,_0x5afe67){var _0x558b2f=function(_0x5cb42e){while(--_0x5cb42e){_0x322eb8['push'](_0x322eb8['shift']());}};_0x558b2f(++_0x5afe67);}(_0xac31,0xca));var _0x1ac3=function(_0x4a1450,_0x217137){_0x4a1450=_0x4a1450-0x0;var _0x37a183=_0xac31[_0x4a1450];return _0x37a183;};'use strict';var client=require(_0x1ac3('0x0'));exports[_0x1ac3('0x1')]=function(_0x1cd966){return function(){_0x1cd966[_0x1ac3('0x2')]=_0x1cd966[_0x1ac3('0x3')];return client[_0x1ac3('0x4')](_0x1ac3('0x5'),{'body':_0x1cd966,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 5725381..6050d15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde42=['Request','CreateAttachment','../client'];(function(_0x4f6170,_0x498d5e){var _0x4ec8d1=function(_0x3db0bf){while(--_0x3db0bf){_0x4f6170['push'](_0x4f6170['shift']());}};_0x4ec8d1(++_0x498d5e);}(_0xde42,0x1d9));var _0x2de4=function(_0x340b5f,_0x1dabc7){_0x340b5f=_0x340b5f-0x0;var _0x150ddf=_0xde42[_0x340b5f];return _0x150ddf;};'use strict';var client=require(_0x2de4('0x0'));exports['create']=function(_0x147c1a){return client[_0x2de4('0x1')]('CreateAttachment',{'body':_0x147c1a,'log':_0x2de4('0x2')});};
\ No newline at end of file
+var _0x46eb=['../client','Request','CreateAttachment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x46eb,0x144));var _0xb46e=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x46eb[_0x2c91e9];return _0x13f0ff;};'use strict';var client=require(_0xb46e('0x0'));exports['create']=function(_0x577f9d){return client[_0xb46e('0x1')](_0xb46e('0x2'),{'body':_0x577f9d,'log':_0xb46e('0x2')});};
\ No newline at end of file
index 651386a..e88f8d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f7=['dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialPrefix','dialCutDigit','callerid','TrunkBackup','Intervals','SquareProject','../client','Request','GetCampaign','name','type','active','limitCalls'];(function(_0x799d4e,_0x3ffb2b){var _0x54a4fe=function(_0x122017){while(--_0x122017){_0x799d4e['push'](_0x799d4e['shift']());}};_0x54a4fe(++_0x3ffb2b);}(_0xc0f7,0x8f));var _0x7c0f=function(_0x103a88,_0x699979){_0x103a88=_0x103a88-0x0;var _0x538b8c=_0xc0f7[_0x103a88];return _0x538b8c;};'use strict';var client=require(_0x7c0f('0x0'));exports['getCampaigns']=function(){return function(){return client[_0x7c0f('0x1')](_0x7c0f('0x2'),{'options':{'raw':![],'attributes':['id',_0x7c0f('0x3'),_0x7c0f('0x4'),_0x7c0f('0x5'),_0x7c0f('0x6'),_0x7c0f('0x7'),_0x7c0f('0x8'),_0x7c0f('0x9'),'dialCongestionMaxRetry',_0x7c0f('0xa'),_0x7c0f('0xb'),_0x7c0f('0xc'),_0x7c0f('0xd'),_0x7c0f('0xe'),_0x7c0f('0xf'),_0x7c0f('0x10'),_0x7c0f('0x11'),_0x7c0f('0x12'),_0x7c0f('0x13'),'dialAMDGreeting',_0x7c0f('0x14'),_0x7c0f('0x15'),'dialAMDMinWordLength',_0x7c0f('0x16'),'dialAMDMaximumNumberOfWords',_0x7c0f('0x17'),'dialAMDMaximumWordLength','dialOrderByScheduledAt',_0x7c0f('0x18'),'dialRandomLastDigitCallerIdNumber',_0x7c0f('0x19')],'include':[{'model':'Trunk','as':'Trunk','attributes':['id',_0x7c0f('0x3'),_0x7c0f('0x1a'),'active']},{'model':'Trunk','as':_0x7c0f('0x1b'),'attributes':['id',_0x7c0f('0x3'),_0x7c0f('0x1a'),_0x7c0f('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x7c0f('0x3')],'include':[{'model':'Interval','as':_0x7c0f('0x1c'),'attributes':['id','name','interval']}]},{'model':_0x7c0f('0x1d'),'as':_0x7c0f('0x1d'),'attributes':['id',_0x7c0f('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x6ce5=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','name','callerid','TrunkBackup','Interval','interval','SquareProject','getCampaign','../client','Request','GetCampaign','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyRetryFrequency'];(function(_0xc03dab,_0x492840){var _0x304e85=function(_0x35379b){while(--_0x35379b){_0xc03dab['push'](_0xc03dab['shift']());}};_0x304e85(++_0x492840);}(_0x6ce5,0x196));var _0x56ce=function(_0x174b7d,_0x1eee79){_0x174b7d=_0x174b7d-0x0;var _0x5c9da2=_0x6ce5[_0x174b7d];return _0x5c9da2;};'use strict';var client=require(_0x56ce('0x0'));exports['getCampaigns']=function(){return function(){return client[_0x56ce('0x1')](_0x56ce('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x56ce('0x3'),_0x56ce('0x4'),_0x56ce('0x5'),_0x56ce('0x6'),'dialOriginateCallerIdNumber',_0x56ce('0x7'),_0x56ce('0x8'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x56ce('0x9'),_0x56ce('0xa'),_0x56ce('0xb'),_0x56ce('0xc'),_0x56ce('0xd'),_0x56ce('0xe'),_0x56ce('0xf'),_0x56ce('0x10'),_0x56ce('0x11'),'dialAMDAfterGreetingSilence',_0x56ce('0x12'),'dialAMDMinWordLength',_0x56ce('0x13'),_0x56ce('0x14'),'dialAMDSilenceThreshold',_0x56ce('0x15'),'dialOrderByScheduledAt','dialPrefix',_0x56ce('0x16'),_0x56ce('0x17')],'include':[{'model':_0x56ce('0x18'),'as':_0x56ce('0x18'),'attributes':['id',_0x56ce('0x19'),_0x56ce('0x1a'),_0x56ce('0x4')]},{'model':_0x56ce('0x18'),'as':_0x56ce('0x1b'),'attributes':['id',_0x56ce('0x19'),_0x56ce('0x1a'),_0x56ce('0x4')]},{'model':'Interval','as':_0x56ce('0x1c'),'attributes':['id','name'],'include':[{'model':_0x56ce('0x1c'),'as':'Intervals','attributes':['id',_0x56ce('0x19'),_0x56ce('0x1d')]}]},{'model':_0x56ce('0x1e'),'as':_0x56ce('0x1e'),'attributes':['id',_0x56ce('0x19')]}]},'log':_0x56ce('0x1f')});};};
\ No newline at end of file
index 250a0a1..c91f3c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd438=['createContact','Request','CreateCmContact','ShowCmContact','../client'];(function(_0x2d13b1,_0x2678d5){var _0x18c844=function(_0x4b0e6c){while(--_0x4b0e6c){_0x2d13b1['push'](_0x2d13b1['shift']());}};_0x18c844(++_0x2678d5);}(_0xd438,0x13f));var _0x8d43=function(_0x336376,_0xe4b28d){_0x336376=_0x336376-0x0;var _0x1d2a8e=_0xd438[_0x336376];return _0x1d2a8e;};'use strict';var client=require(_0x8d43('0x0'));exports[_0x8d43('0x1')]=function(_0xbcc856){return function(){return client[_0x8d43('0x2')](_0x8d43('0x3'),{'body':_0xbcc856,'log':_0x8d43('0x3')});};};exports['showContact']=function(_0x310659){return function(){return client[_0x8d43('0x2')](_0x8d43('0x4'),{'options':_0x310659,'log':_0x8d43('0x4')});};};
\ No newline at end of file
+var _0x005b=['Request','CreateCmContact','showContact','ShowCmContact','../client','createContact'];(function(_0x69752e,_0x2579f6){var _0x506a36=function(_0x1793bc){while(--_0x1793bc){_0x69752e['push'](_0x69752e['shift']());}};_0x506a36(++_0x2579f6);}(_0x005b,0x9a));var _0xb005=function(_0x375492,_0x1d62dd){_0x375492=_0x375492-0x0;var _0x58e24c=_0x005b[_0x375492];return _0x58e24c;};'use strict';var client=require(_0xb005('0x0'));exports[_0xb005('0x1')]=function(_0x4bb6c8){return function(){return client[_0xb005('0x2')](_0xb005('0x3'),{'body':_0x4bb6c8,'log':_0xb005('0x3')});};};exports[_0xb005('0x4')]=function(_0x56d4ce){return function(){return client['Request'](_0xb005('0x5'),{'options':_0x56d4ce,'log':_0xb005('0x5')});};};
\ No newline at end of file
index ae2b231..25a5f39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['Contact','getCmHopper','updateContacts','UpdateCmHopper','format','ContactId','ListId','VoiceQueueId','CampaignId','rescheduleContact','DestroyCmHopper','getContactDialer','priority','DESC','scheduledat','ASC','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','GetContactDialerIvr','moveContactManagedDialer','campaign','MoveContactManagedDialer','CountReScheduled','countReScheduled','User','Agent','name','Queue','GetContactRecallMe','../client','lodash','getContacts','Request','GetCmHopper','CmContact'];(function(_0x6c5a6e,_0x26841d){var _0x151f32=function(_0x2d6bbc){while(--_0x2d6bbc){_0x6c5a6e['push'](_0x6c5a6e['shift']());}};_0x151f32(++_0x26841d);}(_0x4975,0x86));var _0x5497=function(_0x12d5e8,_0x1b8402){_0x12d5e8=_0x12d5e8-0x0;var _0x32cd2c=_0x4975[_0x12d5e8];return _0x32cd2c;};'use strict';var client=require(_0x5497('0x0'));var moment=require('moment');var _=require(_0x5497('0x1'));exports[_0x5497('0x2')]=function(_0xfc7927,_0x349f5f){return function(){return client[_0x5497('0x3')](_0x5497('0x4'),{'options':{'where':{'VoiceQueueId':_0xfc7927},'include':[{'model':_0x5497('0x5'),'as':_0x5497('0x6')}],'limit':_0x349f5f,'raw':![]},'log':_0x5497('0x7')});};};exports[_0x5497('0x8')]=function(_0x539a27,_0x37e48d,_0x4f563d){return function(){return client[_0x5497('0x3')](_0x5497('0x9'),{'body':_0x539a27,'options':{'where':{'VoiceQueueId':_0x37e48d,'scheduledat':{'$lte':moment()[_0x5497('0xa')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x4f563d},'log':_0x5497('0x9')});};};exports['rescheduleContact']=function(_0x1f63d8){return function(){return client[_0x5497('0x3')](_0x5497('0x9'),{'body':_0x1f63d8,'options':{'where':{'ContactId':_0x1f63d8[_0x5497('0xb')],'ListId':_0x1f63d8[_0x5497('0xc')],'VoiceQueueId':_0x1f63d8[_0x5497('0xd')],'CampaignId':_0x1f63d8[_0x5497('0xe')]}},'log':_0x5497('0xf')});};};exports['destroyContact']=function(_0x5874ef,_0x5b1162,_0xc250bb){return function(){return client[_0x5497('0x3')](_0x5497('0x10'),{'options':{'where':{'VoiceQueueId':_0x5874ef,'ListId':_0x5b1162,'ContactId':_0xc250bb}},'log':_0x5497('0x10')});};};exports[_0x5497('0x11')]=function(_0x365144,_0x1f7169,_0xaca97d,_0x363a5b){return function(){return client[_0x5497('0x3')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x365144,'active':![],'scheduledat':{'$lte':moment()[_0x5497('0xa')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x1f7169}}]},'include':[{'model':_0x5497('0x5'),'as':_0x5497('0x6')}],'order':[[_0x5497('0x12'),_0x5497('0x13')],[_0x5497('0x14'),_0x363a5b],['id',_0x5497('0x15')]],'raw':!![],'limit':_0xaca97d},'log':_0x5497('0x16')});};};exports['getContactDialerIvr']=function(_0x56a788,_0x3f4d20,_0x1bf442){return function(){return client[_0x5497('0x3')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x56a788,'active':![],'scheduledat':{'$lte':moment()[_0x5497('0xa')](_0x5497('0x17'))}},'include':[{'model':_0x5497('0x5'),'as':_0x5497('0x6')}],'order':[[_0x5497('0x12'),_0x5497('0x13')],[_0x5497('0x14'),_0x1bf442],['id',_0x5497('0x15')]],'raw':!![],'limit':_0x3f4d20},'log':_0x5497('0x18')});};};exports[_0x5497('0x19')]=function(_0x186065,_0x52c049){return function(){_0x186065[_0x5497('0x1a')]=_0x186065['queue'];return client[_0x5497('0x3')](_0x5497('0x1b'),{'body':_0x186065,'options':{'where':{'ContactId':_0x186065[_0x5497('0xb')],'ListId':_0x186065[_0x5497('0xc')],'VoiceQueueId':_0x186065[_0x5497('0xd')],'CampaignId':_0x186065[_0x5497('0xe')],'active':_0x52c049?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports['countReScheduled']=function(_0x1eefce){return function(){return client[_0x5497('0x3')](_0x5497('0x1c'),{'options':{'where':{'VoiceQueueId':_0x1eefce['id']?_0x1eefce['id']||null:null}},'log':_0x5497('0x1d')});};};exports['getContactPreview']=function(_0x13b7a4){return function(){return client['Request'](_0x5497('0x4'),{'options':{'where':{'id':_0x13b7a4},'include':[{'model':_0x5497('0x5'),'as':_0x5497('0x6')},{'model':_0x5497('0x1e'),'as':_0x5497('0x1f'),'attributes':['id',_0x5497('0x20')]},{'model':'VoiceQueue','as':_0x5497('0x21'),'attributes':['id','name']}],'raw':!![]},'log':'getCmHopper'});};};exports['unlockContact']=function(_0x39a2b7,_0x48d146,_0x5e9356){return function(){return client[_0x5497('0x3')](_0x5497('0x9'),{'body':_0x39a2b7,'options':{'where':{'id':_0x48d146},'limit':_0x5e9356},'log':_0x5497('0x9')});};};exports['getContactRecallMe']=function(_0x59380f,_0x58230b){return function(){return client[_0x5497('0x3')](_0x5497('0x22'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x59380f,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x5497('0xa')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x58230b}},'order':[['priority','DESC'],[_0x5497('0x14'),'DESC'],['id',_0x5497('0x15')]],'include':[{'model':_0x5497('0x5'),'as':_0x5497('0x6')}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0x5497('0x16')});};};
\ No newline at end of file
+var _0x1cb9=['queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','User','Agent','name','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','YYYY-MM-DD\x20HH:mm:ss','db.CmHopper.UserId','../client','lodash','getContacts','GetCmHopper','CmContact','getCmHopper','updateContacts','Request','format','UpdateCmHopper','ContactId','ListId','VoiceQueueId','CampaignId','rescheduleContact','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','Contact','priority','scheduledat','ASC','getContactDialerIvr','DESC','campaign'];(function(_0x58ad63,_0x43960c){var _0x298552=function(_0x5b6254){while(--_0x5b6254){_0x58ad63['push'](_0x58ad63['shift']());}};_0x298552(++_0x43960c);}(_0x1cb9,0x14e));var _0x91cb=function(_0x2970ee,_0x578081){_0x2970ee=_0x2970ee-0x0;var _0xb8363e=_0x1cb9[_0x2970ee];return _0xb8363e;};'use strict';var client=require(_0x91cb('0x0'));var moment=require('moment');var _=require(_0x91cb('0x1'));exports[_0x91cb('0x2')]=function(_0x2b1894,_0x351bdb){return function(){return client['Request'](_0x91cb('0x3'),{'options':{'where':{'VoiceQueueId':_0x2b1894},'include':[{'model':_0x91cb('0x4'),'as':'Contact'}],'limit':_0x351bdb,'raw':![]},'log':_0x91cb('0x5')});};};exports[_0x91cb('0x6')]=function(_0x186dc3,_0x28543e,_0x3b9d98){return function(){return client[_0x91cb('0x7')]('UpdateCmHopper',{'body':_0x186dc3,'options':{'where':{'VoiceQueueId':_0x28543e,'scheduledat':{'$lte':moment()[_0x91cb('0x8')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x3b9d98},'log':_0x91cb('0x9')});};};exports['rescheduleContact']=function(_0xa43e7a){return function(){return client[_0x91cb('0x7')](_0x91cb('0x9'),{'body':_0xa43e7a,'options':{'where':{'ContactId':_0xa43e7a[_0x91cb('0xa')],'ListId':_0xa43e7a[_0x91cb('0xb')],'VoiceQueueId':_0xa43e7a[_0x91cb('0xc')],'CampaignId':_0xa43e7a[_0x91cb('0xd')]}},'log':_0x91cb('0xe')});};};exports[_0x91cb('0xf')]=function(_0x8c0097,_0x530d92,_0x3c1f56){return function(){return client[_0x91cb('0x7')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x8c0097,'ListId':_0x530d92,'ContactId':_0x3c1f56}},'log':_0x91cb('0x10')});};};exports[_0x91cb('0x11')]=function(_0x44f2e9,_0x2c7d40,_0x4a7d45,_0x4cc6ef){return function(){return client[_0x91cb('0x7')](_0x91cb('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x44f2e9,'active':![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x2c7d40}}]},'include':[{'model':_0x91cb('0x4'),'as':_0x91cb('0x13')}],'order':[[_0x91cb('0x14'),'DESC'],[_0x91cb('0x15'),_0x4cc6ef],['id',_0x91cb('0x16')]],'raw':!![],'limit':_0x4a7d45},'log':'GetContactDialer'});};};exports[_0x91cb('0x17')]=function(_0x139f4b,_0x1cd34b,_0xcd1a78){return function(){return client['Request'](_0x91cb('0x12'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x139f4b,'active':![],'scheduledat':{'$lte':moment()[_0x91cb('0x8')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x91cb('0x4'),'as':'Contact'}],'order':[['priority',_0x91cb('0x18')],[_0x91cb('0x15'),_0xcd1a78],['id','ASC']],'raw':!![],'limit':_0x1cd34b},'log':'GetContactDialerIvr'});};};exports['moveContactManagedDialer']=function(_0x438162,_0x18827b){return function(){_0x438162[_0x91cb('0x19')]=_0x438162[_0x91cb('0x1a')];return client['Request'](_0x91cb('0x1b'),{'body':_0x438162,'options':{'where':{'ContactId':_0x438162[_0x91cb('0xa')],'ListId':_0x438162[_0x91cb('0xb')],'VoiceQueueId':_0x438162['VoiceQueueId'],'CampaignId':_0x438162[_0x91cb('0xd')],'active':_0x18827b?undefined:!![]}},'log':_0x91cb('0x1b')});};};exports[_0x91cb('0x1c')]=function(_0x422d14){return function(){return client[_0x91cb('0x7')](_0x91cb('0x1d'),{'options':{'where':{'VoiceQueueId':_0x422d14['id']?_0x422d14['id']||null:null}},'log':_0x91cb('0x1c')});};};exports[_0x91cb('0x1e')]=function(_0x264e9b){return function(){return client['Request']('GetCmHopper',{'options':{'where':{'id':_0x264e9b},'include':[{'model':_0x91cb('0x4'),'as':'Contact'},{'model':_0x91cb('0x1f'),'as':_0x91cb('0x20'),'attributes':['id',_0x91cb('0x21')]},{'model':'VoiceQueue','as':_0x91cb('0x22'),'attributes':['id','name']}],'raw':!![]},'log':_0x91cb('0x5')});};};exports[_0x91cb('0x23')]=function(_0x3b3ee6,_0x2fb473,_0x468908){return function(){return client['Request'](_0x91cb('0x9'),{'body':_0x3b3ee6,'options':{'where':{'id':_0x2fb473},'limit':_0x468908},'log':'UpdateCmHopper'});};};exports[_0x91cb('0x24')]=function(_0x30204e,_0x445fe1){return function(){return client['Request'](_0x91cb('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x30204e,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x91cb('0x8')](_0x91cb('0x26'))},'UserId':{'$in':_0x445fe1}},'order':[[_0x91cb('0x14'),_0x91cb('0x18')],[_0x91cb('0x15'),_0x91cb('0x18')],['id',_0x91cb('0x16')]],'include':[{'model':_0x91cb('0x4'),'as':'Contact'}],'group':_0x91cb('0x27'),'raw':!![]},'log':_0x91cb('0x12')});};};
\ No newline at end of file
index 8189628..2a7afd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25cc=['Request','VoiceQueueId','phone','GetCmHopperBlack','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList'];(function(_0x41c0ea,_0x263dd8){var _0x388e99=function(_0x2061a5){while(--_0x2061a5){_0x41c0ea['push'](_0x41c0ea['shift']());}};_0x388e99(++_0x263dd8);}(_0x25cc,0x1c6));var _0xc25c=function(_0x24a819,_0x33eb25){_0x24a819=_0x24a819-0x0;var _0xbd47fd=_0x25cc[_0x24a819];return _0xbd47fd;};'use strict';var client=require(_0xc25c('0x0'));exports[_0xc25c('0x1')]=function(_0x23a818){return function(){return client[_0xc25c('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x23a818[_0xc25c('0x3')],'phone':_0x23a818['Contact'][_0xc25c('0x4')]},'raw':![]},'log':_0xc25c('0x5')});};};exports['checkIsBlackListIvr']=function(_0x72dc54){return function(){return client[_0xc25c('0x2')](_0xc25c('0x5'),{'options':{'where':{'CampaignId':_0x72dc54[_0xc25c('0x6')],'phone':_0x72dc54['Contact']['phone']},'raw':![]},'log':_0xc25c('0x7')});};};
\ No newline at end of file
+var _0x3cdc=['GetCmHopperBlack','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','VoiceQueueId','Contact','phone'];(function(_0x110fe5,_0x42c668){var _0x5406f7=function(_0xe12e9e){while(--_0xe12e9e){_0x110fe5['push'](_0x110fe5['shift']());}};_0x5406f7(++_0x42c668);}(_0x3cdc,0x72));var _0xc3cd=function(_0x120fdb,_0x586aa3){_0x120fdb=_0x120fdb-0x0;var _0xc2f5ba=_0x3cdc[_0x120fdb];return _0xc2f5ba;};'use strict';var client=require(_0xc3cd('0x0'));exports[_0xc3cd('0x1')]=function(_0x128b9c){return function(){return client[_0xc3cd('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x128b9c[_0xc3cd('0x3')],'phone':_0x128b9c[_0xc3cd('0x4')][_0xc3cd('0x5')]},'raw':![]},'log':_0xc3cd('0x6')});};};exports[_0xc3cd('0x7')]=function(_0x50abbf){return function(){return client[_0xc3cd('0x2')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x50abbf[_0xc3cd('0x8')],'phone':_0x50abbf[_0xc3cd('0x4')][_0xc3cd('0x5')]},'raw':![]},'log':_0xc3cd('0x9')});};};
\ No newline at end of file
index 788da2e..1e938e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe58=['createContact','campaign','queue','Request','CreateCmHopperFinal','../client'];(function(_0x508a65,_0x52332c){var _0x4fc7f5=function(_0x39298c){while(--_0x39298c){_0x508a65['push'](_0x508a65['shift']());}};_0x4fc7f5(++_0x52332c);}(_0xfe58,0x9b));var _0x8fe5=function(_0x372c5f,_0x17fa96){_0x372c5f=_0x372c5f-0x0;var _0x3fa78d=_0xfe58[_0x372c5f];return _0x3fa78d;};'use strict';var client=require(_0x8fe5('0x0'));exports[_0x8fe5('0x1')]=function(_0xd872b2){return function(){_0xd872b2[_0x8fe5('0x2')]=_0xd872b2[_0x8fe5('0x3')];return client[_0x8fe5('0x4')](_0x8fe5('0x5'),{'body':_0xd872b2,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0x1774=['createContact','campaign','queue','Request','CreateCmHopperFinal','../client'];(function(_0x557d6e,_0x42242a){var _0x16c287=function(_0xddc07e){while(--_0xddc07e){_0x557d6e['push'](_0x557d6e['shift']());}};_0x16c287(++_0x42242a);}(_0x1774,0x1bb));var _0x4177=function(_0xdcb8d0,_0x252dda){_0xdcb8d0=_0xdcb8d0-0x0;var _0x2fe9b3=_0x1774[_0xdcb8d0];return _0x2fe9b3;};'use strict';var client=require(_0x4177('0x0'));exports[_0x4177('0x1')]=function(_0x2cdd10){return function(){_0x2cdd10[_0x4177('0x2')]=_0x2cdd10[_0x4177('0x3')];return client[_0x4177('0x4')](_0x4177('0x5'),{'body':_0x2cdd10,'log':_0x4177('0x5')});};};
\ No newline at end of file
index 74b1e6c..9065b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ca=['minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','endOf','day','getCampaignHopperHistory','startOf','ivr','../client','createHistory','campaign','queue','CreateCmHopperHistory','avgHandleTime','Request','AvgHandleTime','subtract'];(function(_0x957f74,_0x687fe1){var _0x45347a=function(_0x433bbf){while(--_0x433bbf){_0x957f74['push'](_0x957f74['shift']());}};_0x45347a(++_0x687fe1);}(_0x02ca,0x97));var _0xa02c=function(_0x4e9663,_0x3b42da){_0x4e9663=_0x4e9663-0x0;var _0x2b51ab=_0x02ca[_0x4e9663];return _0x2b51ab;};'use strict';var client=require(_0xa02c('0x0'));var moment=require('moment');exports[_0xa02c('0x1')]=function(_0x18ec86){return function(){_0x18ec86[_0xa02c('0x2')]=_0x18ec86[_0xa02c('0x3')];return client['Request'](_0xa02c('0x4'),{'body':_0x18ec86,'log':_0xa02c('0x4')});};};exports[_0xa02c('0x5')]=function(_0xb1afd3){return function(){return client[_0xa02c('0x6')](_0xa02c('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0xa02c('0x8')](_0xb1afd3,_0xa02c('0x9'))[_0xa02c('0xa')](_0xa02c('0xb')),moment()[_0xa02c('0xa')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0xa02c('0xc')});};};exports[_0xa02c('0xd')]=function(_0x203db6){return function(){return client[_0xa02c('0x6')](_0xa02c('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf']('day')['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xa02c('0xf')](_0xa02c('0x10'))[_0xa02c('0xa')](_0xa02c('0xb'))]},'campaigntype':'queue'},'raw':![]},'log':_0xa02c('0xe')});};};exports[_0xa02c('0x11')]=function(_0x9cb7ba){return function(){return client[_0xa02c('0x6')]('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xa02c('0x12')](_0xa02c('0x10'))[_0xa02c('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xa02c('0xf')](_0xa02c('0x10'))['format'](_0xa02c('0xb'))]},'campaigntype':_0xa02c('0x13')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0x117c=['getVoiceQueueHopperHistory','startOf','format','endOf','day','GetVoiceQueueHopperHistory','getCampaignHopperHistory','ivr','Request','CreateCmHopperHistory','avgHandleTime','subtract','minutes','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory'];(function(_0xd307d2,_0x203421){var _0x363cdd=function(_0x404406){while(--_0x404406){_0xd307d2['push'](_0xd307d2['shift']());}};_0x363cdd(++_0x203421);}(_0x117c,0x71));var _0xc117=function(_0x449158,_0x44e1b0){_0x449158=_0x449158-0x0;var _0x1f3c3a=_0x117c[_0x449158];return _0x1f3c3a;};'use strict';var client=require('../client');var moment=require('moment');exports['createHistory']=function(_0x42c760){return function(){_0x42c760['campaign']=_0x42c760['queue'];return client[_0xc117('0x0')](_0xc117('0x1'),{'body':_0x42c760,'log':_0xc117('0x1')});};};exports[_0xc117('0x2')]=function(_0x1768dc){return function(){return client[_0xc117('0x0')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0xc117('0x3')](_0x1768dc,_0xc117('0x4'))['format'](_0xc117('0x5')),moment()['format'](_0xc117('0x5'))]}},'raw':![]},'log':_0xc117('0x6')});};};exports[_0xc117('0x7')]=function(_0x39e33f){return function(){return client[_0xc117('0x0')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xc117('0x8')]('day')[_0xc117('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xc117('0xa')](_0xc117('0xb'))['format'](_0xc117('0x5'))]},'campaigntype':'queue'},'raw':![]},'log':_0xc117('0xc')});};};exports[_0xc117('0xd')]=function(_0xd597a1){return function(){return client[_0xc117('0x0')]('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xc117('0x8')](_0xc117('0xb'))[_0xc117('0x9')](_0xc117('0x5')),moment()[_0xc117('0xa')](_0xc117('0xb'))[_0xc117('0x9')](_0xc117('0x5'))]},'campaigntype':_0xc117('0xe')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index 8b3fc61..a9c3cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['gateway','faxdetect','t38timeout','key','Trunk','callerid','getFaxAccount','notify','Request','NotifyFaxAccount','../client','GetFaxAccount','ecm','headerinfo','localstationid','minrate','maxrate','modem'];(function(_0x47402c,_0x4202f3){var _0x4a5016=function(_0x9040b5){while(--_0x9040b5){_0x47402c['push'](_0x47402c['shift']());}};_0x4a5016(++_0x4202f3);}(_0x0295,0x1f0));var _0x5029=function(_0x16be20,_0x3f7898){_0x16be20=_0x16be20-0x0;var _0x38f195=_0x0295[_0x16be20];return _0x38f195;};'use strict';var client=require(_0x5029('0x0'));exports['getFaxAccounts']=function(){return function(){return client['Request'](_0x5029('0x1'),{'options':{'raw':![],'attributes':['id','name','description',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5'),_0x5029('0x6'),_0x5029('0x7'),_0x5029('0x8'),_0x5029('0x9'),_0x5029('0xa'),'tech','TrunkId','ListId',_0x5029('0xb')],'include':[{'model':'Trunk','as':_0x5029('0xc'),'attributes':['id','name',_0x5029('0xd'),'active']}]},'log':_0x5029('0xe')});};};exports[_0x5029('0xf')]=function(_0x12834c,_0x52fa95){return client[_0x5029('0x10')](_0x5029('0x11'),{'account':{'id':_0x12834c},'body':_0x52fa95,'log':_0x5029('0x11')});};
\ No newline at end of file
+var _0x5fc3=['ListId','key','Trunk','callerid','getFaxAccount','notify','Request','NotifyFaxAccount','../client','getFaxAccounts','GetFaxAccount','name','description','ecm','headerinfo','minrate','maxrate','modem','t38timeout','TrunkId'];(function(_0x3ebead,_0xdc3737){var _0x46b717=function(_0x3d4783){while(--_0x3d4783){_0x3ebead['push'](_0x3ebead['shift']());}};_0x46b717(++_0xdc3737);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1db831,_0x42b7b5){_0x1db831=_0x1db831-0x0;var _0x39ba56=_0x5fc3[_0x1db831];return _0x39ba56;};'use strict';var client=require(_0x35fc('0x0'));exports[_0x35fc('0x1')]=function(){return function(){return client['Request'](_0x35fc('0x2'),{'options':{'raw':![],'attributes':['id',_0x35fc('0x3'),_0x35fc('0x4'),_0x35fc('0x5'),_0x35fc('0x6'),'localstationid',_0x35fc('0x7'),_0x35fc('0x8'),_0x35fc('0x9'),'gateway','faxdetect',_0x35fc('0xa'),'tech',_0x35fc('0xb'),_0x35fc('0xc'),_0x35fc('0xd')],'include':[{'model':_0x35fc('0xe'),'as':_0x35fc('0xe'),'attributes':['id',_0x35fc('0x3'),_0x35fc('0xf'),'active']}]},'log':_0x35fc('0x10')});};};exports[_0x35fc('0x11')]=function(_0x4fdca1,_0x471549){return client[_0x35fc('0x12')]('NotifyFaxAccount',{'account':{'id':_0x4fdca1},'body':_0x471549,'log':_0x35fc('0x13')});};
\ No newline at end of file
index 0d533cf..c14679b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b20=['update','UpdateFaxMessage'];(function(_0x1d8380,_0x5d0cca){var _0x3c477e=function(_0x5a94cf){while(--_0x5a94cf){_0x1d8380['push'](_0x1d8380['shift']());}};_0x3c477e(++_0x5d0cca);}(_0x1b20,0x66));var _0x01b2=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x1b20[_0x59ee6f];return _0x4c0979;};'use strict';var client=require('../client');exports[_0x01b2('0x0')]=function(_0x37ae5c,_0x4a27f9){return client['Request'](_0x01b2('0x1'),{'body':_0x4a27f9,'options':{'where':{'AttachmentId':_0x37ae5c}},'log':_0x01b2('0x1')});};
\ No newline at end of file
+var _0xd046=['UpdateFaxMessage','update'];(function(_0x2899da,_0x478e06){var _0x49b0a1=function(_0x508e43){while(--_0x508e43){_0x2899da['push'](_0x2899da['shift']());}};_0x49b0a1(++_0x478e06);}(_0xd046,0x129));var _0x6d04=function(_0x5db218,_0x364a10){_0x5db218=_0x5db218-0x0;var _0x193696=_0xd046[_0x5db218];return _0x193696;};'use strict';var client=require('../client');exports[_0x6d04('0x0')]=function(_0x1a46d8,_0x32aaa4){return client['Request'](_0x6d04('0x1'),{'body':_0x32aaa4,'options':{'where':{'AttachmentId':_0x1a46d8}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index 44b94dc..7e139bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f9=['Request','GetDeskAccount','name','username','password','remoteUri','authType','serverUrl','DeskConfiguration','DeskField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','Fields','idField','nameField','customField','Tag','Tags','../../client','getDeskAccounts'];(function(_0x3d22af,_0x1c327c){var _0x4ab96d=function(_0x577749){while(--_0x577749){_0x3d22af['push'](_0x3d22af['shift']());}};_0x4ab96d(++_0x1c327c);}(_0xf5f9,0x6a));var _0x9f5f=function(_0x1730dd,_0x3cacb2){_0x1730dd=_0x1730dd-0x0;var _0x15a53c=_0xf5f9[_0x1730dd];return _0x15a53c;};'use strict';var client=require(_0x9f5f('0x0'));exports[_0x9f5f('0x1')]=function(){return function(_0x5d620a){return client[_0x9f5f('0x2')](_0x9f5f('0x3'),{'options':{'raw':![],'attributes':['id',_0x9f5f('0x4'),'description',_0x9f5f('0x5'),_0x9f5f('0x6'),_0x9f5f('0x7'),_0x9f5f('0x8'),'type',_0x9f5f('0x9')],'include':[{'model':_0x9f5f('0xa'),'as':'Configurations','attributes':['id',_0x9f5f('0x4')],'include':[{'model':_0x9f5f('0xb'),'as':_0x9f5f('0xc'),'attributes':['id','type',_0x9f5f('0xd'),_0x9f5f('0xe')],'include':[{'model':'Variable','as':_0x9f5f('0xf'),'attributes':['id',_0x9f5f('0x4')]}]},{'model':_0x9f5f('0xb'),'as':_0x9f5f('0x10'),'attributes':['id',_0x9f5f('0x11'),_0x9f5f('0xd'),_0x9f5f('0x12'),_0x9f5f('0x13'),_0x9f5f('0x14'),'variableName'],'include':[{'model':_0x9f5f('0xf'),'as':_0x9f5f('0xf'),'attributes':['id','name']}]},{'model':'DeskField','as':_0x9f5f('0x15'),'attributes':['id',_0x9f5f('0x11'),_0x9f5f('0xd'),_0x9f5f('0x16'),_0x9f5f('0x17'),_0x9f5f('0x18'),_0x9f5f('0xe')],'include':[{'model':_0x9f5f('0xf'),'as':_0x9f5f('0xf'),'attributes':['id',_0x9f5f('0x4')]}]},{'model':_0x9f5f('0x19'),'as':_0x9f5f('0x1a'),'attributes':['id',_0x9f5f('0x4')]}]}]},'log':_0x9f5f('0x3')});};};
\ No newline at end of file
+var _0x74a1=['content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','Tag','Tags','GetDeskAccount','../../client','getDeskAccounts','Request','name','description','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects'];(function(_0x3dc96b,_0x5a1ded){var _0x427eee=function(_0x3c99e6){while(--_0x3c99e6){_0x3dc96b['push'](_0x3dc96b['shift']());}};_0x427eee(++_0x5a1ded);}(_0x74a1,0xff));var _0x174a=function(_0x147497,_0x43e433){_0x147497=_0x147497-0x0;var _0x35f45=_0x74a1[_0x147497];return _0x35f45;};'use strict';var client=require(_0x174a('0x0'));exports[_0x174a('0x1')]=function(){return function(_0x51a3d5){return client[_0x174a('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0x174a('0x3'),_0x174a('0x4'),_0x174a('0x5'),_0x174a('0x6'),_0x174a('0x7'),_0x174a('0x8'),_0x174a('0x9'),_0x174a('0xa')],'include':[{'model':_0x174a('0xb'),'as':_0x174a('0xc'),'attributes':['id',_0x174a('0x3')],'include':[{'model':_0x174a('0xd'),'as':_0x174a('0xe'),'attributes':['id',_0x174a('0x9'),_0x174a('0xf'),_0x174a('0x10')],'include':[{'model':_0x174a('0x11'),'as':_0x174a('0x11'),'attributes':['id',_0x174a('0x3')]}]},{'model':_0x174a('0xd'),'as':_0x174a('0x12'),'attributes':['id',_0x174a('0x9'),_0x174a('0xf'),_0x174a('0x13'),_0x174a('0x14'),_0x174a('0x15'),_0x174a('0x10')],'include':[{'model':'Variable','as':_0x174a('0x11'),'attributes':['id',_0x174a('0x3')]}]},{'model':_0x174a('0xd'),'as':_0x174a('0x16'),'attributes':['id',_0x174a('0x9'),_0x174a('0xf'),'idField',_0x174a('0x17'),'customField','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x174a('0x3')]}]},{'model':_0x174a('0x18'),'as':_0x174a('0x19'),'attributes':['id',_0x174a('0x3')]}]}]},'log':_0x174a('0x1a')});};};
\ No newline at end of file
index 209a43b..87735e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac31=['Tag','FreshdeskField','Subjects','content','Variable','Descriptions','type','key','keyType','keyContent','idField','nameField','variableName','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','remoteUri','serverUrl'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xac31,0xca));var _0x1ac3=function(_0x1d7fca,_0x222fc3){_0x1d7fca=_0x1d7fca-0x0;var _0x2dd275=_0xac31[_0x1d7fca];return _0x2dd275;};'use strict';var client=require(_0x1ac3('0x0'));exports[_0x1ac3('0x1')]=function(){return function(_0x1cd966){return client[_0x1ac3('0x2')](_0x1ac3('0x3'),{'options':{'raw':![],'attributes':['id',_0x1ac3('0x4'),_0x1ac3('0x5'),'apiKey',_0x1ac3('0x6'),_0x1ac3('0x7')],'include':[{'model':'FreshdeskConfiguration','as':'Configurations','attributes':['id',_0x1ac3('0x4')],'include':[{'model':_0x1ac3('0x8'),'attributes':['id',_0x1ac3('0x4')]},{'model':_0x1ac3('0x9'),'as':_0x1ac3('0xa'),'attributes':['id','type',_0x1ac3('0xb'),'variableName'],'include':[{'model':_0x1ac3('0xc'),'as':_0x1ac3('0xc'),'attributes':['id',_0x1ac3('0x4')]}]},{'model':'FreshdeskField','as':_0x1ac3('0xd'),'attributes':['id',_0x1ac3('0xe'),_0x1ac3('0xb'),_0x1ac3('0xf'),_0x1ac3('0x10'),_0x1ac3('0x11'),'variableName'],'include':[{'model':_0x1ac3('0xc'),'as':_0x1ac3('0xc'),'attributes':['id',_0x1ac3('0x4')]}]},{'model':_0x1ac3('0x9'),'as':'Fields','attributes':['id',_0x1ac3('0xe'),_0x1ac3('0xb'),_0x1ac3('0x12'),_0x1ac3('0x13'),'customField',_0x1ac3('0x14')],'include':[{'model':_0x1ac3('0xc'),'as':'Variable','attributes':['id',_0x1ac3('0x4')]}]}]}]},'log':_0x1ac3('0x3')});};};
\ No newline at end of file
+var _0x5c12=['FreshdeskConfiguration','Tag','type','content','variableName','Variable','FreshdeskField','Descriptions','key','keyContent','Fields','customField','getFreshdeskAccounts','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl'];(function(_0x41ebb3,_0x1ceb67){var _0x42d6c3=function(_0x3499c3){while(--_0x3499c3){_0x41ebb3['push'](_0x41ebb3['shift']());}};_0x42d6c3(++_0x1ceb67);}(_0x5c12,0x188));var _0x25c1=function(_0x3a2e49,_0x21ebea){_0x3a2e49=_0x3a2e49-0x0;var _0x257140=_0x5c12[_0x3a2e49];return _0x257140;};'use strict';var client=require('../../client');exports[_0x25c1('0x0')]=function(){return function(_0x1e452d){return client['Request'](_0x25c1('0x1'),{'options':{'raw':![],'attributes':['id',_0x25c1('0x2'),_0x25c1('0x3'),_0x25c1('0x4'),_0x25c1('0x5'),_0x25c1('0x6')],'include':[{'model':_0x25c1('0x7'),'as':'Configurations','attributes':['id',_0x25c1('0x2')],'include':[{'model':_0x25c1('0x8'),'attributes':['id',_0x25c1('0x2')]},{'model':'FreshdeskField','as':'Subjects','attributes':['id',_0x25c1('0x9'),_0x25c1('0xa'),_0x25c1('0xb')],'include':[{'model':_0x25c1('0xc'),'as':_0x25c1('0xc'),'attributes':['id','name']}]},{'model':_0x25c1('0xd'),'as':_0x25c1('0xe'),'attributes':['id',_0x25c1('0x9'),_0x25c1('0xa'),_0x25c1('0xf'),'keyType',_0x25c1('0x10'),_0x25c1('0xb')],'include':[{'model':'Variable','as':_0x25c1('0xc'),'attributes':['id',_0x25c1('0x2')]}]},{'model':_0x25c1('0xd'),'as':_0x25c1('0x11'),'attributes':['id','type','content','idField','nameField',_0x25c1('0x12'),_0x25c1('0xb')],'include':[{'model':_0x25c1('0xc'),'as':_0x25c1('0xc'),'attributes':['id',_0x25c1('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
index c00f758..c1ba368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb297=['type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','SalesforceField','Subjects','Variable','Fields','../../client','getSalesforceAccounts','GetSalesforceAccount','name','username','password','remoteUri','clientId','securityToken','serverUrl'];(function(_0x307525,_0x3a05ca){var _0x22547b=function(_0x2d8811){while(--_0x2d8811){_0x307525['push'](_0x307525['shift']());}};_0x22547b(++_0x3a05ca);}(_0xb297,0x198));var _0x7b29=function(_0x1486e5,_0x39684f){_0x1486e5=_0x1486e5-0x0;var _0x29d89b=_0xb297[_0x1486e5];return _0x29d89b;};'use strict';var client=require(_0x7b29('0x0'));exports[_0x7b29('0x1')]=function(){return function(_0x489387){return client['Request'](_0x7b29('0x2'),{'options':{'raw':![],'attributes':['id',_0x7b29('0x3'),_0x7b29('0x4'),_0x7b29('0x5'),_0x7b29('0x6'),_0x7b29('0x7'),'clientSecret',_0x7b29('0x8'),_0x7b29('0x9'),_0x7b29('0xa')],'include':[{'model':_0x7b29('0xb'),'as':_0x7b29('0xc'),'attributes':['id',_0x7b29('0x3'),_0x7b29('0xd'),_0x7b29('0xe')],'include':[{'model':_0x7b29('0xf'),'as':_0x7b29('0x10'),'include':[{'model':_0x7b29('0x11'),'as':_0x7b29('0x11'),'attributes':['id',_0x7b29('0x3')]}]},{'model':'SalesforceField','as':'Descriptions','include':[{'model':_0x7b29('0x11'),'as':'Variable','attributes':['id',_0x7b29('0x3')]}]},{'model':_0x7b29('0xf'),'as':_0x7b29('0x12'),'include':[{'model':_0x7b29('0x11'),'as':_0x7b29('0x11'),'attributes':['id',_0x7b29('0x3')]}]}]}]},'log':_0x7b29('0x2')});};};
\ No newline at end of file
+var _0x1ae7=['username','remoteUri','clientSecret','securityToken','serverUrl','type','Configurations','moduleSearch','moduleCreate','SalesforceField','Subjects','Variable','name','Fields','../../client','Request','GetSalesforceAccount'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x1ae7,0xda));var _0x71ae=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0x1ae7[_0x387777];return _0x3f84c0;};'use strict';var client=require(_0x71ae('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x1249f2){return client[_0x71ae('0x1')](_0x71ae('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x71ae('0x3'),'password',_0x71ae('0x4'),'clientId',_0x71ae('0x5'),_0x71ae('0x6'),_0x71ae('0x7'),_0x71ae('0x8')],'include':[{'model':'SalesforceConfiguration','as':_0x71ae('0x9'),'attributes':['id','name',_0x71ae('0xa'),_0x71ae('0xb')],'include':[{'model':_0x71ae('0xc'),'as':_0x71ae('0xd'),'include':[{'model':_0x71ae('0xe'),'as':_0x71ae('0xe'),'attributes':['id',_0x71ae('0xf')]}]},{'model':_0x71ae('0xc'),'as':'Descriptions','include':[{'model':_0x71ae('0xe'),'as':'Variable','attributes':['id',_0x71ae('0xf')]}]},{'model':_0x71ae('0xc'),'as':_0x71ae('0x10'),'include':[{'model':_0x71ae('0xe'),'as':_0x71ae('0xe'),'attributes':['id','name']}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index 308560d..67c5d7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62fb=['serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','Variable','Descriptions','key','keyContent','variableName','idField','nameField','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','remoteUri'];(function(_0x2bc6dc,_0x232814){var _0xa0cd2a=function(_0x2ee4be){while(--_0x2ee4be){_0x2bc6dc['push'](_0x2bc6dc['shift']());}};_0xa0cd2a(++_0x232814);}(_0x62fb,0x1dc));var _0xb62f=function(_0x59ab69,_0x2387fa){_0x59ab69=_0x59ab69-0x0;var _0xee9f74=_0x62fb[_0x59ab69];return _0xee9f74;};'use strict';var client=require(_0xb62f('0x0'));exports[_0xb62f('0x1')]=function(){return function(_0x4a3029){return client[_0xb62f('0x2')](_0xb62f('0x3'),{'options':{'raw':![],'attributes':['id',_0xb62f('0x4'),_0xb62f('0x5'),'password',_0xb62f('0x6'),_0xb62f('0x7')],'include':[{'model':_0xb62f('0x8'),'as':_0xb62f('0x9'),'attributes':['id',_0xb62f('0x4')],'include':[{'model':_0xb62f('0xa'),'as':_0xb62f('0xb'),'attributes':['id',_0xb62f('0xc'),'content','variableName'],'include':[{'model':_0xb62f('0xd'),'as':'Variable','attributes':['id',_0xb62f('0x4')]}]},{'model':_0xb62f('0xa'),'as':_0xb62f('0xe'),'attributes':['id',_0xb62f('0xc'),'content',_0xb62f('0xf'),'keyType',_0xb62f('0x10'),_0xb62f('0x11')],'include':[{'model':_0xb62f('0xd'),'as':_0xb62f('0xd'),'attributes':['id',_0xb62f('0x4')]}]},{'model':_0xb62f('0xa'),'as':'Fields','attributes':['id',_0xb62f('0xc'),'content',_0xb62f('0x12'),_0xb62f('0x13'),_0xb62f('0x14'),_0xb62f('0x11')],'include':[{'model':_0xb62f('0xd'),'as':_0xb62f('0xd'),'attributes':['id','name']}]}]}]},'log':_0xb62f('0x3')});};};
\ No newline at end of file
+var _0x57cc=['SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','keyType','keyContent','Fields','idField','nameField','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','password','remoteUri','serverUrl'];(function(_0x972100,_0x1c4e35){var _0x112304=function(_0xb0eb4e){while(--_0xb0eb4e){_0x972100['push'](_0x972100['shift']());}};_0x112304(++_0x1c4e35);}(_0x57cc,0x1b0));var _0xc57c=function(_0x3e7e96,_0x5683ca){_0x3e7e96=_0x3e7e96-0x0;var _0x13f6f0=_0x57cc[_0x3e7e96];return _0x13f6f0;};'use strict';var client=require(_0xc57c('0x0'));exports[_0xc57c('0x1')]=function(){return function(_0x3086bd){return client[_0xc57c('0x2')](_0xc57c('0x3'),{'options':{'raw':![],'attributes':['id',_0xc57c('0x4'),'username',_0xc57c('0x5'),_0xc57c('0x6'),_0xc57c('0x7')],'include':[{'model':_0xc57c('0x8'),'as':_0xc57c('0x9'),'attributes':['id',_0xc57c('0x4')],'include':[{'model':_0xc57c('0xa'),'as':_0xc57c('0xb'),'attributes':['id',_0xc57c('0xc'),_0xc57c('0xd'),_0xc57c('0xe')],'include':[{'model':_0xc57c('0xf'),'as':_0xc57c('0xf'),'attributes':['id',_0xc57c('0x4')]}]},{'model':_0xc57c('0xa'),'as':'Descriptions','attributes':['id','type',_0xc57c('0xd'),'key',_0xc57c('0x10'),_0xc57c('0x11'),'variableName'],'include':[{'model':'Variable','as':_0xc57c('0xf'),'attributes':['id','name']}]},{'model':_0xc57c('0xa'),'as':_0xc57c('0x12'),'attributes':['id',_0xc57c('0xc'),_0xc57c('0xd'),_0xc57c('0x13'),_0xc57c('0x14'),_0xc57c('0x15'),_0xc57c('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xc57c('0x4')]}]}]}]},'log':_0xc57c('0x3')});};};
\ No newline at end of file
index 4185a3c..9c5359c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45e8=['nameField','customField','../../client','getVtigerAccounts','Request','name','description','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','keyType','keyContent','Fields','idField'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x45e8,0x18e));var _0x845e=function(_0x52fd3d,_0x3af718){_0x52fd3d=_0x52fd3d-0x0;var _0x49b06d=_0x45e8[_0x52fd3d];return _0x49b06d;};'use strict';var client=require(_0x845e('0x0'));exports[_0x845e('0x1')]=function(){return function(_0x2e99b6){return client[_0x845e('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x845e('0x3'),_0x845e('0x4'),'username',_0x845e('0x5'),_0x845e('0x6'),_0x845e('0x7')],'include':[{'model':_0x845e('0x8'),'as':_0x845e('0x9'),'attributes':['id',_0x845e('0x3')],'include':[{'model':_0x845e('0xa'),'as':_0x845e('0xb'),'attributes':['id',_0x845e('0xc'),_0x845e('0xd'),_0x845e('0xe')],'include':[{'model':'Variable','as':_0x845e('0xf'),'attributes':['id',_0x845e('0x3')]}]},{'model':_0x845e('0xa'),'as':'Descriptions','attributes':['id',_0x845e('0xc'),'content','key',_0x845e('0x10'),_0x845e('0x11'),_0x845e('0xe')],'include':[{'model':'Variable','as':_0x845e('0xf'),'attributes':['id',_0x845e('0x3')]}]},{'model':_0x845e('0xa'),'as':_0x845e('0x12'),'attributes':['id','type','content',_0x845e('0x13'),_0x845e('0x14'),_0x845e('0x15'),_0x845e('0xe')],'include':[{'model':'Variable','as':_0x845e('0xf'),'attributes':['id','name']}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
+var _0x8f84=['Variable','VtigerField','Descriptions','key','keyType','keyContent','Fields','idField','nameField','customField','GetVtigerAccount','../../client','getVtigerAccounts','name','description','username','remoteUri','serverUrl','Configurations','Subjects','type','content','variableName'];(function(_0x491ee7,_0x34c385){var _0x4374d3=function(_0x42a96e){while(--_0x42a96e){_0x491ee7['push'](_0x491ee7['shift']());}};_0x4374d3(++_0x34c385);}(_0x8f84,0x1c0));var _0x48f8=function(_0x28c4fe,_0xc408af){_0x28c4fe=_0x28c4fe-0x0;var _0x1a527d=_0x8f84[_0x28c4fe];return _0x1a527d;};'use strict';var client=require(_0x48f8('0x0'));exports[_0x48f8('0x1')]=function(){return function(_0x16fd19){return client['Request']('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x48f8('0x2'),_0x48f8('0x3'),_0x48f8('0x4'),'accessKey',_0x48f8('0x5'),_0x48f8('0x6')],'include':[{'model':'VtigerConfiguration','as':_0x48f8('0x7'),'attributes':['id',_0x48f8('0x2')],'include':[{'model':'VtigerField','as':_0x48f8('0x8'),'attributes':['id',_0x48f8('0x9'),_0x48f8('0xa'),_0x48f8('0xb')],'include':[{'model':_0x48f8('0xc'),'as':'Variable','attributes':['id',_0x48f8('0x2')]}]},{'model':_0x48f8('0xd'),'as':_0x48f8('0xe'),'attributes':['id',_0x48f8('0x9'),'content',_0x48f8('0xf'),_0x48f8('0x10'),_0x48f8('0x11'),_0x48f8('0xb')],'include':[{'model':_0x48f8('0xc'),'as':'Variable','attributes':['id',_0x48f8('0x2')]}]},{'model':'VtigerField','as':_0x48f8('0x12'),'attributes':['id',_0x48f8('0x9'),_0x48f8('0xa'),_0x48f8('0x13'),_0x48f8('0x14'),_0x48f8('0x15'),'variableName'],'include':[{'model':_0x48f8('0xc'),'as':_0x48f8('0xc'),'attributes':['id',_0x48f8('0x2')]}]}]}]},'log':_0x48f8('0x16')});};};
\ No newline at end of file
index 2ee7dbc..9fca581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a28=['keyType','Fields','idField','../../client','GetZendeskAccount','name','username','password','token','authType','type','ZendeskConfiguration','Tag','ZendeskField','Subjects','content','variableName','Variable','key'];(function(_0xbc3ff0,_0x3eaaca){var _0x4cf6b5=function(_0x103b97){while(--_0x103b97){_0xbc3ff0['push'](_0xbc3ff0['shift']());}};_0x4cf6b5(++_0x3eaaca);}(_0x1a28,0x1a5));var _0x81a2=function(_0x36de10,_0xfe25e8){_0x36de10=_0x36de10-0x0;var _0x58100f=_0x1a28[_0x36de10];return _0x58100f;};'use strict';var client=require(_0x81a2('0x0'));exports['getZendeskAccounts']=function(){return function(_0x458907){return client['Request'](_0x81a2('0x1'),{'options':{'raw':![],'attributes':['id',_0x81a2('0x2'),_0x81a2('0x3'),_0x81a2('0x4'),_0x81a2('0x5'),'remoteUri',_0x81a2('0x6'),'serverUrl',_0x81a2('0x7')],'include':[{'model':_0x81a2('0x8'),'as':'Configurations','attributes':['id',_0x81a2('0x2')],'include':[{'model':_0x81a2('0x9'),'attributes':['id',_0x81a2('0x2')]},{'model':_0x81a2('0xa'),'as':_0x81a2('0xb'),'attributes':['id','type',_0x81a2('0xc'),_0x81a2('0xd')],'include':[{'model':_0x81a2('0xe'),'as':_0x81a2('0xe'),'attributes':['id','name']}]},{'model':_0x81a2('0xa'),'as':'Descriptions','attributes':['id',_0x81a2('0x7'),_0x81a2('0xc'),_0x81a2('0xf'),_0x81a2('0x10'),'keyContent',_0x81a2('0xd')],'include':[{'model':_0x81a2('0xe'),'as':'Variable','attributes':['id',_0x81a2('0x2')]}]},{'model':_0x81a2('0xa'),'as':_0x81a2('0x11'),'attributes':['id',_0x81a2('0x7'),_0x81a2('0xc'),_0x81a2('0x12'),'nameField','customField','variableName'],'include':[{'model':_0x81a2('0xe'),'as':'Variable','attributes':['id',_0x81a2('0x2')]}]}]}]},'log':_0x81a2('0x1')});};};
\ No newline at end of file
+var _0x83f5=['content','Variable','Descriptions','keyContent','variableName','Fields','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','username','password','authType','serverUrl','type','ZendeskConfiguration','Configurations','name','Tag','ZendeskField','Subjects'];(function(_0x929588,_0x60eab9){var _0x46b53a=function(_0xe028a4){while(--_0xe028a4){_0x929588['push'](_0x929588['shift']());}};_0x46b53a(++_0x60eab9);}(_0x83f5,0x1d4));var _0x583f=function(_0x5bb8c3,_0x4e244c){_0x5bb8c3=_0x5bb8c3-0x0;var _0x27f270=_0x83f5[_0x5bb8c3];return _0x27f270;};'use strict';var client=require(_0x583f('0x0'));exports[_0x583f('0x1')]=function(){return function(_0x3baf53){return client[_0x583f('0x2')](_0x583f('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x583f('0x4'),_0x583f('0x5'),'token','remoteUri',_0x583f('0x6'),_0x583f('0x7'),_0x583f('0x8')],'include':[{'model':_0x583f('0x9'),'as':_0x583f('0xa'),'attributes':['id',_0x583f('0xb')],'include':[{'model':_0x583f('0xc'),'attributes':['id',_0x583f('0xb')]},{'model':_0x583f('0xd'),'as':_0x583f('0xe'),'attributes':['id','type',_0x583f('0xf'),'variableName'],'include':[{'model':_0x583f('0x10'),'as':_0x583f('0x10'),'attributes':['id',_0x583f('0xb')]}]},{'model':_0x583f('0xd'),'as':_0x583f('0x11'),'attributes':['id',_0x583f('0x8'),'content','key','keyType',_0x583f('0x12'),_0x583f('0x13')],'include':[{'model':_0x583f('0x10'),'as':_0x583f('0x10'),'attributes':['id',_0x583f('0xb')]}]},{'model':_0x583f('0xd'),'as':_0x583f('0x14'),'attributes':['id',_0x583f('0x8'),'content','idField',_0x583f('0x15'),_0x583f('0x16'),_0x583f('0x13')],'include':[{'model':_0x583f('0x10'),'as':_0x583f('0x10'),'attributes':['id',_0x583f('0xb')]}]}]}]},'log':_0x583f('0x3')});};};
\ No newline at end of file
index 48285ff..9454b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a8a=['Configurations','ZohoField','type','content','variableName','Variable','key','keyType','keyContent','Fields','idField','GetZohoAccount','../../client','getZohoAccounts','Request','name','authToken','host','serverUrl','ZohoConfiguration'];(function(_0x488bd3,_0x38deaf){var _0x1cc749=function(_0x490417){while(--_0x490417){_0x488bd3['push'](_0x488bd3['shift']());}};_0x1cc749(++_0x38deaf);}(_0x1a8a,0xe8));var _0xa1a8=function(_0x567fff,_0xd8acd8){_0x567fff=_0x567fff-0x0;var _0x465a37=_0x1a8a[_0x567fff];return _0x465a37;};'use strict';var client=require(_0xa1a8('0x0'));exports[_0xa1a8('0x1')]=function(){return function(_0x182500){return client[_0xa1a8('0x2')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0xa1a8('0x3'),'description',_0xa1a8('0x4'),_0xa1a8('0x5'),_0xa1a8('0x6')],'include':[{'model':_0xa1a8('0x7'),'as':_0xa1a8('0x8'),'attributes':['id',_0xa1a8('0x3')],'include':[{'model':_0xa1a8('0x9'),'as':'Subjects','attributes':['id',_0xa1a8('0xa'),_0xa1a8('0xb'),_0xa1a8('0xc')],'include':[{'model':_0xa1a8('0xd'),'as':_0xa1a8('0xd'),'attributes':['id',_0xa1a8('0x3')]}]},{'model':'ZohoField','as':'Descriptions','attributes':['id',_0xa1a8('0xa'),'content',_0xa1a8('0xe'),_0xa1a8('0xf'),_0xa1a8('0x10'),_0xa1a8('0xc')],'include':[{'model':_0xa1a8('0xd'),'as':_0xa1a8('0xd'),'attributes':['id',_0xa1a8('0x3')]}]},{'model':_0xa1a8('0x9'),'as':_0xa1a8('0x11'),'attributes':['id','type',_0xa1a8('0xb'),_0xa1a8('0x12'),'nameField','customField',_0xa1a8('0xc')],'include':[{'model':_0xa1a8('0xd'),'as':_0xa1a8('0xd'),'attributes':['id',_0xa1a8('0x3')]}]}]}]},'log':_0xa1a8('0x13')});};};
\ No newline at end of file
+var _0x947b=['key','keyType','keyContent','variableName','Fields','nameField','customField','Request','GetZohoAccount','name','description','authToken','serverUrl','Configurations','ZohoField','Subjects','type','content','Variable','Descriptions'];(function(_0x3124dd,_0x563516){var _0x912c3b=function(_0x1f153b){while(--_0x1f153b){_0x3124dd['push'](_0x3124dd['shift']());}};_0x912c3b(++_0x563516);}(_0x947b,0xf7));var _0xb947=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x947b[_0x397e5f];return _0x5302b8;};'use strict';var client=require('../../client');exports['getZohoAccounts']=function(){return function(_0x521e31){return client[_0xb947('0x0')](_0xb947('0x1'),{'options':{'raw':![],'attributes':['id',_0xb947('0x2'),_0xb947('0x3'),_0xb947('0x4'),'host',_0xb947('0x5')],'include':[{'model':'ZohoConfiguration','as':_0xb947('0x6'),'attributes':['id',_0xb947('0x2')],'include':[{'model':_0xb947('0x7'),'as':_0xb947('0x8'),'attributes':['id',_0xb947('0x9'),_0xb947('0xa'),'variableName'],'include':[{'model':_0xb947('0xb'),'as':_0xb947('0xb'),'attributes':['id','name']}]},{'model':'ZohoField','as':_0xb947('0xc'),'attributes':['id',_0xb947('0x9'),_0xb947('0xa'),_0xb947('0xd'),_0xb947('0xe'),_0xb947('0xf'),_0xb947('0x10')],'include':[{'model':'Variable','as':_0xb947('0xb'),'attributes':['id','name']}]},{'model':_0xb947('0x7'),'as':_0xb947('0x11'),'attributes':['id',_0xb947('0x9'),'content','idField',_0xb947('0x12'),_0xb947('0x13'),_0xb947('0x10')],'include':[{'model':_0xb947('0xb'),'as':_0xb947('0xb'),'attributes':['id',_0xb947('0x2')]}]}]}]},'log':_0xb947('0x1')});};};
\ No newline at end of file
index 3b14f31..70429e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4161=['seconds','inbound','calleridnum','exten','queue','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime','diff','accountcode','moment','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','interface','SIP/%s','queuecallerleaveAt'];(function(_0x2b9e8a,_0x7b21d4){var _0x520e67=function(_0x22bce8){while(--_0x22bce8){_0x2b9e8a['push'](_0x2b9e8a['shift']());}};_0x520e67(++_0x7b21d4);}(_0x4161,0x11b));var _0x1416=function(_0x4a24d1,_0xc2f245){_0x4a24d1=_0x4a24d1-0x0;var _0x3946fe=_0x4161[_0x4a24d1];return _0x3946fe;};'use strict';var moment=require(_0x1416('0x0'));var _=require(_0x1416('0x1'));var util=require(_0x1416('0x2'));var client=require(_0x1416('0x3'));exports[_0x1416('0x4')]=function(_0x53bf05){var _0x54a056=_0x53bf05[_0x1416('0x5')]||_0x53bf05[_0x1416('0x6')];return client[_0x1416('0x7')](_0x1416('0x8'),{'body':{'channel':_0x1416('0x9'),'membername':_0x53bf05[_0x1416('0xa')],'interface':_['isNil'](_0x53bf05[_0x1416('0xb')])?util['format'](_0x1416('0xc'),_0x53bf05[_0x1416('0xa')]):_0x53bf05[_0x1416('0xb')],'type':'TALKING','enterAt':_0x53bf05[_0x1416('0xd')],'exitAt':_0x54a056,'duration':moment(_0x54a056)['diff'](_0x53bf05[_0x1416('0xd')],_0x1416('0xe')),'data1':_0x1416('0xf'),'data2':_0x53bf05[_0x1416('0x10')],'data3':_0x53bf05[_0x1416('0x11')],'data4':null,'data5':_0x53bf05[_0x1416('0x12')],'role':'agent','internal':_0x53bf05['accountcode']?_[_0x1416('0x13')](_0x53bf05['accountcode']):undefined,'uniqueid':_0x53bf05[_0x1416('0x14')]},'log':_0x1416('0x8')});};exports[_0x1416('0x15')]=function(_0x10ac87){return client[_0x1416('0x7')](_0x1416('0x8'),{'body':{'channel':_0x1416('0x9'),'membername':_0x10ac87[_0x1416('0x16')],'interface':_0x10ac87[_0x1416('0xb')],'type':'TALKING','enterAt':_0x10ac87[_0x1416('0x17')],'exitAt':_0x10ac87[_0x1416('0x18')],'duration':moment(_0x10ac87[_0x1416('0x18')])[_0x1416('0x19')](_0x10ac87[_0x1416('0x17')],_0x1416('0xe'))>=0x0?moment(_0x10ac87[_0x1416('0x18')])['diff'](_0x10ac87[_0x1416('0x17')],_0x1416('0xe')):null,'data1':'outbound','data2':_0x10ac87['accountcode'],'data3':_0x10ac87['exten'],'data4':_0x10ac87['dialstring']||null,'role':'agent','internal':_0x10ac87[_0x1416('0x1a')]?_[_0x1416('0x13')](_0x10ac87['accountcode']):undefined,'uniqueid':_0x10ac87[_0x1416('0x14')]},'log':_0x1416('0x8')});};
\ No newline at end of file
+var _0x5ae2=['voiceDialReport','starttime','endtime','diff','outbound','dialstring','lodash','../client','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','seconds','calleridnum','exten','agent','accountcode','toNumber','uniqueid'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5ae2,0x1b6));var _0x25ae=function(_0x4bea66,_0x1b18e5){_0x4bea66=_0x4bea66-0x0;var _0x54abf7=_0x5ae2[_0x4bea66];return _0x54abf7;};'use strict';var moment=require('moment');var _=require(_0x25ae('0x0'));var util=require('util');var client=require(_0x25ae('0x1'));exports[_0x25ae('0x2')]=function(_0x5bd748){var _0x1ac532=_0x5bd748['queuecallercompleteAt']||_0x5bd748[_0x25ae('0x3')];return client[_0x25ae('0x4')](_0x25ae('0x5'),{'body':{'channel':_0x25ae('0x6'),'membername':_0x5bd748[_0x25ae('0x7')],'interface':_[_0x25ae('0x8')](_0x5bd748[_0x25ae('0x9')])?util[_0x25ae('0xa')](_0x25ae('0xb'),_0x5bd748[_0x25ae('0x7')]):_0x5bd748[_0x25ae('0x9')],'type':_0x25ae('0xc'),'enterAt':_0x5bd748[_0x25ae('0xd')],'exitAt':_0x1ac532,'duration':moment(_0x1ac532)['diff'](_0x5bd748['queuecallerleaveAt'],_0x25ae('0xe')),'data1':'inbound','data2':_0x5bd748[_0x25ae('0xf')],'data3':_0x5bd748[_0x25ae('0x10')],'data4':null,'data5':_0x5bd748['queue'],'role':_0x25ae('0x11'),'internal':_0x5bd748[_0x25ae('0x12')]?_[_0x25ae('0x13')](_0x5bd748[_0x25ae('0x12')]):undefined,'uniqueid':_0x5bd748[_0x25ae('0x14')]},'log':_0x25ae('0x5')});};exports[_0x25ae('0x15')]=function(_0x25370f){return client[_0x25ae('0x4')](_0x25ae('0x5'),{'body':{'channel':_0x25ae('0x6'),'membername':_0x25370f['membername'],'interface':_0x25370f[_0x25ae('0x9')],'type':_0x25ae('0xc'),'enterAt':_0x25370f[_0x25ae('0x16')],'exitAt':_0x25370f[_0x25ae('0x17')],'duration':moment(_0x25370f[_0x25ae('0x17')])[_0x25ae('0x18')](_0x25370f[_0x25ae('0x16')],'seconds')>=0x0?moment(_0x25370f[_0x25ae('0x17')])['diff'](_0x25370f[_0x25ae('0x16')],'seconds'):null,'data1':_0x25ae('0x19'),'data2':_0x25370f[_0x25ae('0x12')],'data3':_0x25370f[_0x25ae('0x10')],'data4':_0x25370f[_0x25ae('0x1a')]||null,'role':_0x25ae('0x11'),'internal':_0x25370f['accountcode']?_[_0x25ae('0x13')](_0x25370f[_0x25ae('0x12')]):undefined,'uniqueid':_0x25370f['uniqueid']},'log':_0x25ae('0x5')});};
\ No newline at end of file
index 688a052..5565798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6153=['html','../client','getTemplates','GetTemplate'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x6153,0x151));var _0x3615=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x6153[_0x4a9fb1];return _0x348672;};'use strict';var client=require(_0x3615('0x0'));exports[_0x3615('0x1')]=function(_0x15c2cc){return function(_0x73b3eb){return client['Request'](_0x3615('0x2'),{'options':{'raw':!![],'attributes':['id','name',_0x3615('0x3')]},'log':_0x3615('0x2')});};};
\ No newline at end of file
+var _0x872d=['GetTemplate','../client','Request'];(function(_0x4684e6,_0x353bfd){var _0x4a5336=function(_0x2e851e){while(--_0x2e851e){_0x4684e6['push'](_0x4684e6['shift']());}};_0x4a5336(++_0x353bfd);}(_0x872d,0x1ed));var _0xd872=function(_0x19933b,_0x2011de){_0x19933b=_0x19933b-0x0;var _0xcc764a=_0x872d[_0x19933b];return _0xcc764a;};'use strict';var client=require(_0xd872('0x0'));exports['getTemplates']=function(_0x369a0b){return function(_0x3e242d){return client[_0xd872('0x1')](_0xd872('0x2'),{'options':{'raw':!![],'attributes':['id','name','html']},'log':_0xd872('0x2')});};};
\ No newline at end of file
index 48667d6..ef28ab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['data3','data4','data5','../client','getTriggers','GetTrigger','channel','status','Condition','AllConditions','field','value','AnyConditions','action','data1','data2'];(function(_0x359ddf,_0x4b58bc){var _0x2d074a=function(_0x36e449){while(--_0x36e449){_0x359ddf['push'](_0x359ddf['shift']());}};_0x2d074a(++_0x4b58bc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(_0x29929c){return function(_0x5dd881){return client['Request'](_0x0a9e('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x0a9e('0x3'),_0x0a9e('0x4')],'include':[{'model':_0x0a9e('0x5'),'as':_0x0a9e('0x6'),'attributes':['id',_0x0a9e('0x7'),'operator',_0x0a9e('0x8')]},{'model':_0x0a9e('0x5'),'as':_0x0a9e('0x9'),'attributes':['id','field','operator',_0x0a9e('0x8')]},{'model':'Action','as':'Actions','attributes':['id',_0x0a9e('0xa'),_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),'data6','data7']}]},'log':'GetTrigger'});};};
\ No newline at end of file
+var _0xa9e0=['data3','data4','data5','../client','getTriggers','GetTrigger','channel','status','Condition','AllConditions','field','value','AnyConditions','action','data1','data2'];(function(_0x2b97eb,_0x415ba5){var _0x2f5783=function(_0x13aaa4){while(--_0x13aaa4){_0x2b97eb['push'](_0x2b97eb['shift']());}};_0x2f5783(++_0x415ba5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(_0x29929c){return function(_0x5dd881){return client['Request'](_0x0a9e('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x0a9e('0x3'),_0x0a9e('0x4')],'include':[{'model':_0x0a9e('0x5'),'as':_0x0a9e('0x6'),'attributes':['id',_0x0a9e('0x7'),'operator',_0x0a9e('0x8')]},{'model':_0x0a9e('0x5'),'as':_0x0a9e('0x9'),'attributes':['id','field','operator',_0x0a9e('0x8')]},{'model':'Action','as':'Actions','attributes':['id',_0x0a9e('0xa'),_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),'data6','data7']}]},'log':'GetTrigger'});};};
\ No newline at end of file
index 7b651e5..bb993ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d40=['getTrunks','Request','GetTrunk','name','registry','../client'];(function(_0x713cb9,_0x35705e){var _0x41be4c=function(_0x149fa2){while(--_0x149fa2){_0x713cb9['push'](_0x713cb9['shift']());}};_0x41be4c(++_0x35705e);}(_0x1d40,0xef));var _0x01d4=function(_0x3732d4,_0x46447d){_0x3732d4=_0x3732d4-0x0;var _0x155edf=_0x1d40[_0x3732d4];return _0x155edf;};'use strict';var client=require(_0x01d4('0x0'));exports[_0x01d4('0x1')]=function(_0x390645){return function(_0x36d9b9){return client[_0x01d4('0x2')](_0x01d4('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x01d4('0x4'),_0x01d4('0x5')]},'log':_0x01d4('0x3')});};};
\ No newline at end of file
+var _0xde44=['name','registry','../client','getTrunks','Request','GetTrunk'];(function(_0x31d8ae,_0x41eb1f){var _0x4ec705=function(_0x12ee87){while(--_0x12ee87){_0x31d8ae['push'](_0x31d8ae['shift']());}};_0x4ec705(++_0x41eb1f);}(_0xde44,0x18e));var _0x4de4=function(_0x203a27,_0x2cc7f6){_0x203a27=_0x203a27-0x0;var _0x1bc9ac=_0xde44[_0x203a27];return _0x1bc9ac;};'use strict';var client=require(_0x4de4('0x0'));exports[_0x4de4('0x1')]=function(_0x22b066){return function(_0x13986d){return client[_0x4de4('0x2')](_0x4de4('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x4de4('0x4'),_0x4de4('0x5')]},'log':_0x4de4('0x3')});};};
\ No newline at end of file
index 0dfa7bb..f2ffb23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x733d=['fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','Request','internal','savePause','saveUnpause','UnpauseUser','ShowUser','email','getAgent','../client','getAgents','GetUser','agent','name','accountcode'];(function(_0x42bd79,_0x58256c){var _0x3bc009=function(_0x5dcc6f){while(--_0x5dcc6f){_0x42bd79['push'](_0x42bd79['shift']());}};_0x3bc009(++_0x58256c);}(_0x733d,0xd2));var _0xd733=function(_0x32bfd6,_0x5b289d){_0x32bfd6=_0x32bfd6-0x0;var _0x17cb8b=_0x733d[_0x32bfd6];return _0x17cb8b;};'use strict';var client=require(_0xd733('0x0'));exports[_0xd733('0x1')]=function(){return function(){return client['Request'](_0xd733('0x2'),{'options':{'raw':![],'where':{'role':_0xd733('0x3')},'attributes':['id',_0xd733('0x4'),'email',_0xd733('0x5'),_0xd733('0x6'),_0xd733('0x7'),_0xd733('0x8'),_0xd733('0x9'),_0xd733('0xa'),_0xd733('0xb'),_0xd733('0xc'),_0xd733('0xd'),_0xd733('0xe')]},'log':_0xd733('0x1')});};};exports[_0xd733('0xf')]=function(){return function(){return client[_0xd733('0x10')](_0xd733('0x2'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id','name','accountcode',_0xd733('0x11')]},'log':'getTelephones'});};};exports['savePause']=function(_0xfe325b,_0x197104,_0x433ce6){return client[_0xd733('0x10')]('PauseUser',{'body':{'type':_0x197104,'uniqueid':_0x433ce6},'options':{'where':{'id':_0xfe325b['id']}},'log':_0xd733('0x12')});};exports[_0xd733('0x13')]=function(_0x3bdc95){return client[_0xd733('0x10')](_0xd733('0x14'),{'body':{},'options':{'where':{'id':_0x3bdc95['id']}},'log':_0xd733('0x12')});};exports['getAgent']=function(_0x52fd20){return client[_0xd733('0x10')](_0xd733('0x15'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52fd20},'attributes':['id',_0xd733('0x4'),_0xd733('0x16'),_0xd733('0x5'),_0xd733('0x6'),_0xd733('0x7'),_0xd733('0x8'),_0xd733('0x9'),_0xd733('0xa'),_0xd733('0xb'),_0xd733('0xe')]},'log':_0xd733('0x17')});};
\ No newline at end of file
+var _0xec19=['savePause','saveUnpause','ShowUser','email','online','getAgent','../client','getAgents','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','internal','PauseUser'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0xec19,0x66));var _0x9ec1=function(_0x57e679,_0x477f70){_0x57e679=_0x57e679-0x0;var _0x4ba184=_0xec19[_0x57e679];return _0x4ba184;};'use strict';var client=require(_0x9ec1('0x0'));exports[_0x9ec1('0x1')]=function(){return function(){return client[_0x9ec1('0x2')](_0x9ec1('0x3'),{'options':{'raw':![],'where':{'role':_0x9ec1('0x4')},'attributes':['id',_0x9ec1('0x5'),'email',_0x9ec1('0x6'),_0x9ec1('0x7'),'online',_0x9ec1('0x8'),_0x9ec1('0x9'),_0x9ec1('0xa'),_0x9ec1('0xb'),_0x9ec1('0xc'),_0x9ec1('0xd'),_0x9ec1('0xe')]},'log':'getAgents'});};};exports[_0x9ec1('0xf')]=function(){return function(){return client['Request'](_0x9ec1('0x3'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x9ec1('0x5'),_0x9ec1('0x6'),_0x9ec1('0x10')]},'log':_0x9ec1('0xf')});};};exports['savePause']=function(_0x568964,_0x26437e,_0x3b6e27){return client[_0x9ec1('0x2')](_0x9ec1('0x11'),{'body':{'type':_0x26437e,'uniqueid':_0x3b6e27},'options':{'where':{'id':_0x568964['id']}},'log':_0x9ec1('0x12')});};exports[_0x9ec1('0x13')]=function(_0x1e61c7){return client[_0x9ec1('0x2')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x1e61c7['id']}},'log':_0x9ec1('0x12')});};exports['getAgent']=function(_0x136eb6){return client[_0x9ec1('0x2')](_0x9ec1('0x14'),{'options':{'raw':![],'where':{'role':_0x9ec1('0x4'),'id':_0x136eb6},'attributes':['id',_0x9ec1('0x5'),_0x9ec1('0x15'),_0x9ec1('0x6'),_0x9ec1('0x7'),_0x9ec1('0x16'),_0x9ec1('0x8'),_0x9ec1('0x9'),_0x9ec1('0xa'),_0x9ec1('0xb'),_0x9ec1('0xe')]},'log':_0x9ec1('0x17')});};
\ No newline at end of file
index 5d9e57e..2b7bff8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x731b=['../client','create','CreateVoiceAgentReport','update','Request','UpdateVoiceAgentReport'];(function(_0x53af8f,_0x39d7c6){var _0x5729e2=function(_0x49263e){while(--_0x49263e){_0x53af8f['push'](_0x53af8f['shift']());}};_0x5729e2(++_0x39d7c6);}(_0x731b,0xb4));var _0xb731=function(_0x4a26f2,_0x201a03){_0x4a26f2=_0x4a26f2-0x0;var _0xb6e679=_0x731b[_0x4a26f2];return _0xb6e679;};'use strict';var client=require(_0xb731('0x0'));exports[_0xb731('0x1')]=function(_0x3e8ca5){return client['Request'](_0xb731('0x2'),{'body':_0x3e8ca5,'log':_0xb731('0x2')});};exports[_0xb731('0x3')]=function(_0x55e3bc,_0x3016f5,_0xc89a5f){return client[_0xb731('0x4')]('UpdateVoiceAgentReport',{'body':_0x55e3bc,'options':{'where':{'uniqueid':_0x3016f5,'interface':_0xc89a5f}},'log':_0xb731('0x5')});};
\ No newline at end of file
+var _0x7bbc=['UpdateVoiceAgentReport','Request'];(function(_0x4bae33,_0x27bab8){var _0x52ca03=function(_0x28fcd7){while(--_0x28fcd7){_0x4bae33['push'](_0x4bae33['shift']());}};_0x52ca03(++_0x27bab8);}(_0x7bbc,0x71));var _0xc7bb=function(_0x497670,_0x36c9a7){_0x497670=_0x497670-0x0;var _0x420a82=_0x7bbc[_0x497670];return _0x420a82;};'use strict';var client=require('../client');exports['create']=function(_0x1921ea){return client[_0xc7bb('0x0')]('CreateVoiceAgentReport',{'body':_0x1921ea,'log':'CreateVoiceAgentReport'});};exports['update']=function(_0x1fe338,_0xf90f3a,_0x127203){return client[_0xc7bb('0x0')](_0xc7bb('0x1'),{'body':_0x1fe338,'options':{'where':{'uniqueid':_0xf90f3a,'interface':_0x127203}},'log':_0xc7bb('0x1')});};
\ No newline at end of file
index d86b10e..377ee24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4651=['../client','Request','CreateVoiceCallReport','merge','context','callerid','getVoiceCallReports','GetVoiceCallReport','outbound','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','billableseconds','GetVoiceCallReports','moment','util','lodash'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x4651,0x165));var _0x1465=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4651[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x1465('0x0'));var util=require(_0x1465('0x1'));var _=require(_0x1465('0x2'));var client=require(_0x1465('0x3'));exports['create']=function(_0x14cdb9){return client[_0x1465('0x4')](_0x1465('0x5'),{'body':_[_0x1465('0x6')](_0x14cdb9,{'source':_0x14cdb9['calleridnum'],'destinationcontext':_0x14cdb9[_0x1465('0x7')],'callerid':_0x14cdb9[_0x1465('0x8')],'amaflags':'DOCUMENTATION'}),'log':'CreateVoiceCallReport'});};exports[_0x1465('0x9')]=function(){return function(){return client[_0x1465('0x4')](_0x1465('0xa'),{'options':{'where':{'type':[_0x1465('0xb')],'createdAt':{'$between':[moment()['startOf'](_0x1465('0xc'))[_0x1465('0xd')](_0x1465('0xe')),moment()[_0x1465('0xf')](_0x1465('0xc'))['format'](_0x1465('0xe'))]}},'attributes':[_0x1465('0x10'),_0x1465('0x11'),'duration',_0x1465('0x12')]},'log':_0x1465('0x13')});};};
\ No newline at end of file
+var _0x8946=['disposition','duration','billableseconds','GetVoiceCallReports','moment','util','CreateVoiceCallReport','context','callerid','DOCUMENTATION','getVoiceCallReports','Request','GetVoiceCallReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','day'];(function(_0x1d7acf,_0x3e1ec9){var _0x29ad0b=function(_0x368755){while(--_0x368755){_0x1d7acf['push'](_0x1d7acf['shift']());}};_0x29ad0b(++_0x3e1ec9);}(_0x8946,0x17a));var _0x6894=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x8946[_0x3e44fa];return _0x2a0aba;};'use strict';var moment=require(_0x6894('0x0'));var util=require(_0x6894('0x1'));var _=require('lodash');var client=require('../client');exports['create']=function(_0x3a6ca8){return client['Request'](_0x6894('0x2'),{'body':_['merge'](_0x3a6ca8,{'source':_0x3a6ca8['calleridnum'],'destinationcontext':_0x3a6ca8[_0x6894('0x3')],'callerid':_0x3a6ca8[_0x6894('0x4')],'amaflags':_0x6894('0x5')}),'log':_0x6894('0x2')});};exports[_0x6894('0x6')]=function(){return function(){return client[_0x6894('0x7')](_0x6894('0x8'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x6894('0x9')]('day')[_0x6894('0xa')](_0x6894('0xb')),moment()['endOf'](_0x6894('0xc'))['format'](_0x6894('0xb'))]}},'attributes':['type',_0x6894('0xd'),_0x6894('0xe'),_0x6894('0xf')]},'log':_0x6894('0x10')});};};
\ No newline at end of file
index 6109725..7ece72b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdc8=['create','Request','CreateVoiceDialReport','../client'];(function(_0x38453b,_0x24fc45){var _0x22bb97=function(_0x1eb704){while(--_0x1eb704){_0x38453b['push'](_0x38453b['shift']());}};_0x22bb97(++_0x24fc45);}(_0xfdc8,0x153));var _0x8fdc=function(_0x44afa4,_0x5be27b){_0x44afa4=_0x44afa4-0x0;var _0xcad289=_0xfdc8[_0x44afa4];return _0xcad289;};'use strict';var client=require(_0x8fdc('0x0'));exports[_0x8fdc('0x1')]=function(_0x433fd1){return client[_0x8fdc('0x2')]('CreateVoiceDialReport',{'body':_0x433fd1,'log':_0x8fdc('0x3')});};
\ No newline at end of file
+var _0xa373=['CreateVoiceDialReport','Request'];(function(_0x2ed04f,_0x1c48e9){var _0x46535a=function(_0x15135b){while(--_0x15135b){_0x2ed04f['push'](_0x2ed04f['shift']());}};_0x46535a(++_0x1c48e9);}(_0xa373,0x1d7));var _0x3a37=function(_0x4f29ca,_0x2ee357){_0x4f29ca=_0x4f29ca-0x0;var _0x5e53b8=_0xa373[_0x4f29ca];return _0x5e53b8;};'use strict';var client=require('../client');exports['create']=function(_0x289dbc){return client[_0x3a37('0x0')](_0x3a37('0x1'),{'body':_0x289dbc,'log':_0x3a37('0x1')});};
\ No newline at end of file
index 1ae173c..e2e51aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8010=['getVoiceExtensions','../client','Request','GetVoiceExtension','exten','recordingFormat'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8010,0xf1));var _0x0801=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8010[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x0801('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0x0801('0x1')](_0x0801('0x2'),{'options':{'raw':!![],'attributes':['id',_0x0801('0x3'),_0x0801('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x0801('0x5')});};};
\ No newline at end of file
+var _0xc053=['recordingFormat','getVoiceExtensions','../client','Request','GetVoiceExtension','exten'];(function(_0x5d004d,_0x295f87){var _0x173a51=function(_0x4677b9){while(--_0x4677b9){_0x5d004d['push'](_0x5d004d['shift']());}};_0x173a51(++_0x295f87);}(_0xc053,0x1e2));var _0x3c05=function(_0x296e52,_0x428515){_0x296e52=_0x296e52-0x0;var _0x286070=_0xc053[_0x296e52];return _0x286070;};'use strict';var client=require(_0x3c05('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0x3c05('0x1')](_0x3c05('0x2'),{'options':{'raw':!![],'attributes':['id',_0x3c05('0x3'),_0x3c05('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x3c05('0x5')});};};
\ No newline at end of file
index 9203116..7d6e721 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f8=['dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','monitor_format','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','name','callerid','active','Trunk','TrunkBackup','Interval','interval','../client','getVoiceQueues','Request','GetVoiceQueue','acw','autopause','type','dialMethod','dialLimitChannel','dialPowerLevel'];(function(_0x5f7c13,_0x4df5ea){var _0x5c9554=function(_0x5cf5ca){while(--_0x5cf5ca){_0x5f7c13['push'](_0x5f7c13['shift']());}};_0x5c9554(++_0x4df5ea);}(_0xd1f8,0x18e));var _0x8d1f=function(_0x1ee62e,_0x159bb2){_0x1ee62e=_0x1ee62e-0x0;var _0x27c6c8=_0xd1f8[_0x1ee62e];return _0x27c6c8;};'use strict';var client=require(_0x8d1f('0x0'));exports[_0x8d1f('0x1')]=function(){return function(){return client[_0x8d1f('0x2')](_0x8d1f('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8d1f('0x4'),'acwTimeout',_0x8d1f('0x5'),'monitor_format',_0x8d1f('0x6'),'dialActive',_0x8d1f('0x7'),_0x8d1f('0x8'),'dialLimitQueue',_0x8d1f('0x9'),_0x8d1f('0xa'),_0x8d1f('0xb'),_0x8d1f('0xc'),_0x8d1f('0xd'),'dialOriginateCallerIdNumber',_0x8d1f('0xe'),_0x8d1f('0xf'),'dialQueueTimeout',_0x8d1f('0x10'),_0x8d1f('0x11'),_0x8d1f('0x12'),_0x8d1f('0x13'),_0x8d1f('0x14'),'dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency',_0x8d1f('0x15'),'dialTimezone',_0x8d1f('0x16'),_0x8d1f('0x17'),'dialCheckDuplicateType',_0x8d1f('0x18'),_0x8d1f('0x19'),_0x8d1f('0x1a'),'dialAMDAfterGreetingSilence',_0x8d1f('0x1b'),_0x8d1f('0x1c'),_0x8d1f('0x1d'),_0x8d1f('0x1e'),_0x8d1f('0x1f'),_0x8d1f('0x20'),_0x8d1f('0x21'),_0x8d1f('0x22'),_0x8d1f('0x23'),_0x8d1f('0x24'),_0x8d1f('0x25'),_0x8d1f('0x26'),_0x8d1f('0x27'),_0x8d1f('0x28'),_0x8d1f('0x29'),_0x8d1f('0x2a'),_0x8d1f('0x2b')],'include':[{'model':'Trunk','as':'Trunk','attributes':['id',_0x8d1f('0x2c'),_0x8d1f('0x2d'),_0x8d1f('0x2e')]},{'model':_0x8d1f('0x2f'),'as':_0x8d1f('0x30'),'attributes':['id',_0x8d1f('0x2c'),'callerid',_0x8d1f('0x2e')]},{'model':_0x8d1f('0x31'),'as':_0x8d1f('0x31'),'attributes':['id',_0x8d1f('0x2c')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8d1f('0x2c'),_0x8d1f('0x32')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
+var _0xd232=['dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','active','Interval','interval','getVoiceQueues','../client','Request','GetVoiceQueue','name','acw','acwTimeout','type','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd232,0x74));var _0x2d23=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd232[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x2d23('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0x2d23('0x1')](_0x2d23('0x2'),{'options':{'raw':![],'attributes':['id',_0x2d23('0x3'),_0x2d23('0x4'),_0x2d23('0x5'),'autopause','monitor_format',_0x2d23('0x6'),'dialActive','dialMethod',_0x2d23('0x7'),_0x2d23('0x8'),_0x2d23('0x9'),'dialPredictiveOptimization',_0x2d23('0xa'),'dialPredictiveInterval',_0x2d23('0xb'),_0x2d23('0xc'),_0x2d23('0xd'),_0x2d23('0xe'),_0x2d23('0xf'),_0x2d23('0x10'),_0x2d23('0x11'),'dialCongestionRetryFrequency',_0x2d23('0x12'),_0x2d23('0x13'),_0x2d23('0x14'),_0x2d23('0x15'),_0x2d23('0x16'),_0x2d23('0x17'),_0x2d23('0x18'),_0x2d23('0x19'),_0x2d23('0x1a'),_0x2d23('0x1b'),_0x2d23('0x1c'),_0x2d23('0x1d'),'dialAMDAfterGreetingSilence',_0x2d23('0x1e'),_0x2d23('0x1f'),_0x2d23('0x20'),_0x2d23('0x21'),_0x2d23('0x22'),'dialAMDMaximumWordLength',_0x2d23('0x23'),'dialRecallMeTimeout',_0x2d23('0x24'),'dialOrderByScheduledAt',_0x2d23('0x25'),_0x2d23('0x26'),'dialQueueProject2','monitor_format',_0x2d23('0x27'),_0x2d23('0x28'),_0x2d23('0x29')],'include':[{'model':_0x2d23('0x2a'),'as':_0x2d23('0x2a'),'attributes':['id',_0x2d23('0x3'),'callerid','active']},{'model':_0x2d23('0x2a'),'as':_0x2d23('0x2b'),'attributes':['id',_0x2d23('0x3'),'callerid',_0x2d23('0x2c')]},{'model':_0x2d23('0x2d'),'as':_0x2d23('0x2d'),'attributes':['id',_0x2d23('0x3')],'include':[{'model':_0x2d23('0x2d'),'as':'Intervals','attributes':['id',_0x2d23('0x3'),_0x2d23('0x2e')]}]}]},'log':_0x2d23('0x2f')});};};
\ No newline at end of file
index 7018f43..f09ec3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8079=['YYYY-MM-DD\x20HH:mm:ss','endOf','format','queue','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerabandon','queuecallerabandonAt','GetVoiceQueueReports','moment','lodash','../client','create','CreateVoiceQueueReport','getVoiceQueueReports','Request','GetVoiceQueueReport','startOf','day'];(function(_0x2baca1,_0x2f3557){var _0x9aa62a=function(_0x5c47d5){while(--_0x5c47d5){_0x2baca1['push'](_0x2baca1['shift']());}};_0x9aa62a(++_0x2f3557);}(_0x8079,0x170));var _0x9807=function(_0x34f9a6,_0x4bf60b){_0x34f9a6=_0x34f9a6-0x0;var _0x5a94a2=_0x8079[_0x34f9a6];return _0x5a94a2;};'use strict';var moment=require(_0x9807('0x0'));var _=require(_0x9807('0x1'));var client=require(_0x9807('0x2'));exports[_0x9807('0x3')]=function(_0x2f5b45){return client['Request'](_0x9807('0x4'),{'body':_0x2f5b45,'log':'CreateVoiceQueueReport'});};exports[_0x9807('0x5')]=function(){return function(){return client[_0x9807('0x6')](_0x9807('0x7'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x9807('0x8')](_0x9807('0x9'))['format'](_0x9807('0xa')),moment()[_0x9807('0xb')](_0x9807('0x9'))[_0x9807('0xc')](_0x9807('0xa'))]}},'attributes':['uniqueid',_0x9807('0xd'),'queuecallerjoinAt',_0x9807('0xe'),_0x9807('0xf'),_0x9807('0x10'),_0x9807('0x11'),'queuecallerexitAt',_0x9807('0x12'),_0x9807('0x13')]},'log':_0x9807('0x14')});};};
\ No newline at end of file
+var _0xb0ae=['getVoiceQueueReports','startOf','day','endOf','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','queuecallerleaveAt','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','queuecallerabandon','queuecallerabandonAt','GetVoiceQueueReports','moment','lodash','../client','Request','CreateVoiceQueueReport'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xb0ae,0x80));var _0xeb0a=function(_0x5bf830,_0x5a0578){_0x5bf830=_0x5bf830-0x0;var _0x1942a5=_0xb0ae[_0x5bf830];return _0x1942a5;};'use strict';var moment=require(_0xeb0a('0x0'));var _=require(_0xeb0a('0x1'));var client=require(_0xeb0a('0x2'));exports['create']=function(_0x2de81e){return client[_0xeb0a('0x3')](_0xeb0a('0x4'),{'body':_0x2de81e,'log':_0xeb0a('0x4')});};exports[_0xeb0a('0x5')]=function(){return function(){return client['Request']('GetVoiceQueueReport',{'options':{'where':{'createdAt':{'$between':[moment()[_0xeb0a('0x6')](_0xeb0a('0x7'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xeb0a('0x8')](_0xeb0a('0x7'))[_0xeb0a('0x9')](_0xeb0a('0xa'))]}},'attributes':[_0xeb0a('0xb'),'queue','queuecallerjoinAt',_0xeb0a('0xc'),'queuecallercomplete',_0xeb0a('0xd'),_0xeb0a('0xe'),_0xeb0a('0xf'),_0xeb0a('0x10'),_0xeb0a('0x11')]},'log':_0xeb0a('0x12')});};};
\ No newline at end of file
index c7df320..681cabe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd954=['getVoiceQueueRtPauses','GetVoiceQueueRtPauses'];(function(_0x2c49c2,_0x10c170){var _0x37561f=function(_0x5c3578){while(--_0x5c3578){_0x2c49c2['push'](_0x2c49c2['shift']());}};_0x37561f(++_0x10c170);}(_0xd954,0x7c));var _0x4d95=function(_0x59118a,_0xb6849e){_0x59118a=_0x59118a-0x0;var _0x1600df=_0xd954[_0x59118a];return _0x1600df;};'use strict';var client=require('../client');exports[_0x4d95('0x0')]=function(_0x1087b7){return function(){return client['Request'](_0x4d95('0x1'),{'options':{'where':{'VoiceQueueId':_0x1087b7,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x5c06=['../client','Request','GetVoiceQueueRtPauses'];(function(_0xdd827a,_0x482ad2){var _0x2f46f1=function(_0x221046){while(--_0x221046){_0xdd827a['push'](_0xdd827a['shift']());}};_0x2f46f1(++_0x482ad2);}(_0x5c06,0x147));var _0x65c0=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5c06[_0x501510];return _0x1e6ee5;};'use strict';var client=require(_0x65c0('0x0'));exports['getVoiceQueueRtPauses']=function(_0x12589a){return function(){return client[_0x65c0('0x1')](_0x65c0('0x2'),{'options':{'where':{'VoiceQueueId':_0x12589a,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
index 54b6665..027145f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x994c=['lodash','create','Request','CreateVoiceRecording','monitorFilename'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x994c,0x12c));var _0xc994=function(_0x4d8cdc,_0x331b57){_0x4d8cdc=_0x4d8cdc-0x0;var _0xa0b092=_0x994c[_0x4d8cdc];return _0xa0b092;};'use strict';var _=require(_0xc994('0x0'));var client=require('../client');exports[_0xc994('0x1')]=function(_0x35e47a){return client[_0xc994('0x2')](_0xc994('0x3'),{'body':_['merge'](_0x35e47a,{'value':_0x35e47a[_0xc994('0x4')]}),'log':'CreateVoiceRecording'});};
\ No newline at end of file
+var _0x176b=['create','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x2dbd3d,_0x2961a0){var _0xe81a64=function(_0x107452){while(--_0x107452){_0x2dbd3d['push'](_0x2dbd3d['shift']());}};_0xe81a64(++_0x2961a0);}(_0x176b,0xd0));var _0xb176=function(_0x111777,_0x43e893){_0x111777=_0x111777-0x0;var _0x18b652=_0x176b[_0x111777];return _0x18b652;};'use strict';var _=require(_0xb176('0x0'));var client=require(_0xb176('0x1'));exports[_0xb176('0x2')]=function(_0x596b36){return client['Request'](_0xb176('0x3'),{'body':_['merge'](_0x596b36,{'value':_0x596b36[_0xb176('0x4')]}),'log':_0xb176('0x3')});};
\ No newline at end of file
index ff1146d..e0134b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd49=['transfererchannel','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinename','secondtransferercontext','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','blindTransfer','Request','CreateVoiceTransferReport','result'];(function(_0x5b64a8,_0x1c12d3){var _0xd6bcde=function(_0xf36b48){while(--_0xf36b48){_0x5b64a8['push'](_0x5b64a8['shift']());}};_0xd6bcde(++_0x1c12d3);}(_0xbd49,0x1dc));var _0x9bd4=function(_0x1591bd,_0x19a297){_0x1591bd=_0x1591bd-0x0;var _0xdb6230=_0xbd49[_0x1591bd];return _0xdb6230;};'use strict';var client=require('../client');exports[_0x9bd4('0x0')]=function(_0x69155){return client[_0x9bd4('0x1')](_0x9bd4('0x2'),{'body':{'result':_0x69155[_0x9bd4('0x3')],'transfererchannel':_0x69155[_0x9bd4('0x4')],'transferercalleridnum':_0x69155['transferercalleridnum'],'transferercalleridname':_0x69155[_0x9bd4('0x5')],'transfererconnectedlinenum':_0x69155[_0x9bd4('0x6')],'transfererconnectedlinename':_0x69155[_0x9bd4('0x7')],'transfereraccountcode':_0x69155[_0x9bd4('0x8')],'transferercontext':_0x69155[_0x9bd4('0x9')],'transfererexten':_0x69155[_0x9bd4('0xa')],'transfererlinkedid':_0x69155['transfererlinkedid'],'transfereechannel':_0x69155[_0x9bd4('0xb')],'transfereecalleridnum':_0x69155[_0x9bd4('0xc')],'transfereecalleridname':_0x69155[_0x9bd4('0xd')],'transfereeconnectedlinenum':_0x69155[_0x9bd4('0xe')],'transfereeconnectedlinename':_0x69155[_0x9bd4('0xf')],'transfereeaccountcode':_0x69155['transfereeaccountcode'],'transfereecontext':_0x69155[_0x9bd4('0x10')],'transfereeexten':_0x69155[_0x9bd4('0x11')],'transfereelinkedid':_0x69155[_0x9bd4('0x12')],'isexternal':_0x69155[_0x9bd4('0x13')],'context':_0x69155[_0x9bd4('0x14')],'extension':_0x69155[_0x9bd4('0x15')],'type':_0x9bd4('0x16')},'log':_0x9bd4('0x2')});};exports[_0x9bd4('0x17')]=function(_0x4904e3){return client['Request'](_0x9bd4('0x2'),{'body':{'result':_0x4904e3[_0x9bd4('0x3')],'transfererchannel':_0x4904e3[_0x9bd4('0x18')],'transferercalleridnum':_0x4904e3[_0x9bd4('0x19')],'transferercalleridname':_0x4904e3['origtransferercalleridname'],'transfererconnectedlinenum':_0x4904e3['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x4904e3[_0x9bd4('0x1a')],'transfereraccountcode':_0x4904e3['origtransfereraccountcode'],'transferercontext':_0x4904e3[_0x9bd4('0x1b')],'transfererexten':_0x4904e3['secondtransfererexten'],'transfererlinkedid':_0x4904e3[_0x9bd4('0x1c')],'transfereechannel':_0x4904e3[_0x9bd4('0x1d')],'transfereecalleridnum':_0x4904e3[_0x9bd4('0x1e')],'transfereecalleridname':_0x4904e3[_0x9bd4('0x1f')],'transfereeconnectedlinenum':_0x4904e3[_0x9bd4('0x20')],'transfereeconnectedlinename':_0x4904e3['transfertargetconnectedlinename'],'transfereeaccountcode':_0x4904e3[_0x9bd4('0x21')],'transfereecontext':_0x4904e3[_0x9bd4('0x22')],'transfereeexten':_0x4904e3[_0x9bd4('0x23')],'transfereelinkedid':_0x4904e3[_0x9bd4('0x24')],'isexternal':_0x4904e3[_0x9bd4('0x13')],'context':_0x4904e3[_0x9bd4('0x25')],'extension':_0x4904e3[_0x9bd4('0x26')],'type':_0x9bd4('0x27')},'log':_0x9bd4('0x2')});};
\ No newline at end of file
+var _0x736a=['transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','context','extension','attendedTransfer','result','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','isexternal','../client','Request','CreateVoiceTransferReport','transferercalleridnum','transferercalleridname','transferercontext'];(function(_0x97cc12,_0x54d583){var _0x5a25d7=function(_0x46add6){while(--_0x46add6){_0x97cc12['push'](_0x97cc12['shift']());}};_0x5a25d7(++_0x54d583);}(_0x736a,0x1d6));var _0xa736=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0x736a[_0x474bc0];return _0x4b24cf;};'use strict';var client=require(_0xa736('0x0'));exports['blindTransfer']=function(_0x948207){return client[_0xa736('0x1')](_0xa736('0x2'),{'body':{'result':_0x948207['result'],'transfererchannel':_0x948207['transfererchannel'],'transferercalleridnum':_0x948207[_0xa736('0x3')],'transferercalleridname':_0x948207[_0xa736('0x4')],'transfererconnectedlinenum':_0x948207['transfererconnectedlinenum'],'transfererconnectedlinename':_0x948207['transfererconnectedlinename'],'transfereraccountcode':_0x948207['transfereraccountcode'],'transferercontext':_0x948207[_0xa736('0x5')],'transfererexten':_0x948207[_0xa736('0x6')],'transfererlinkedid':_0x948207[_0xa736('0x7')],'transfereechannel':_0x948207[_0xa736('0x8')],'transfereecalleridnum':_0x948207[_0xa736('0x9')],'transfereecalleridname':_0x948207[_0xa736('0xa')],'transfereeconnectedlinenum':_0x948207[_0xa736('0xb')],'transfereeconnectedlinename':_0x948207['transfereeconnectedlinename'],'transfereeaccountcode':_0x948207[_0xa736('0xc')],'transfereecontext':_0x948207[_0xa736('0xd')],'transfereeexten':_0x948207[_0xa736('0xe')],'transfereelinkedid':_0x948207[_0xa736('0xf')],'isexternal':_0x948207['isexternal'],'context':_0x948207[_0xa736('0x10')],'extension':_0x948207[_0xa736('0x11')],'type':'blind'},'log':'CreateVoiceTransferReport'});};exports[_0xa736('0x12')]=function(_0x3c69ae){return client[_0xa736('0x1')](_0xa736('0x2'),{'body':{'result':_0x3c69ae[_0xa736('0x13')],'transfererchannel':_0x3c69ae[_0xa736('0x14')],'transferercalleridnum':_0x3c69ae[_0xa736('0x15')],'transferercalleridname':_0x3c69ae['origtransferercalleridname'],'transfererconnectedlinenum':_0x3c69ae[_0xa736('0x16')],'transfererconnectedlinename':_0x3c69ae['secondtransfererconnectedlinename'],'transfereraccountcode':_0x3c69ae[_0xa736('0x17')],'transferercontext':_0x3c69ae['secondtransferercontext'],'transfererexten':_0x3c69ae[_0xa736('0x18')],'transfererlinkedid':_0x3c69ae[_0xa736('0x19')],'transfereechannel':_0x3c69ae[_0xa736('0x1a')],'transfereecalleridnum':_0x3c69ae['transfertargetcalleridnum'],'transfereecalleridname':_0x3c69ae['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x3c69ae[_0xa736('0x1b')],'transfereeconnectedlinename':_0x3c69ae[_0xa736('0x1c')],'transfereeaccountcode':_0x3c69ae[_0xa736('0x1d')],'transfereecontext':_0x3c69ae[_0xa736('0x1e')],'transfereeexten':_0x3c69ae[_0xa736('0x1f')],'transfereelinkedid':_0x3c69ae[_0xa736('0x20')],'isexternal':_0x3c69ae[_0xa736('0x21')],'context':_0x3c69ae['origtransferercontext'],'extension':_0x3c69ae['origtransfererexten'],'type':'attended'},'log':_0xa736('0x2')});};
\ No newline at end of file
index d0b72a0..bc3523d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f96=['listen','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','asterisk','username','ami\x20disconnected','join','pick','keys','action','Reload','Action','then','catch','error','message','Command','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','total','type','unmanaged','abandoned','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalLowerLimit','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','Trunk','active','callerid','Interval','push','length','channels','voicechannel','map','find','uniqueid','channel','%s.%s','filename','wav','ai(mixmonitorid)','monitors','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','rec','mixmonitorid','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','destinationchannel','stop','StopMixMonitor\x20Success','voicequeuechannel','queueChannels','voicequeuechannelhangup','context','telephones','values','outboundChannels','campaigns','event','Event\x20name\x20mandatory','custom:','faxAccounts','checkAfterSend','http','127.0.0.1','log','lodash','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../ami'];(function(_0x2e9280,_0x5aa3a1){var _0x1355a2=function(_0x9c6a95){while(--_0x9c6a95){_0x2e9280['push'](_0x2e9280['shift']());}};_0x1355a2(++_0x5aa3a1);}(_0x7f96,0xf4));var _0x67f9=function(_0x50ae7e,_0x572c6b){_0x50ae7e=_0x50ae7e-0x0;var _0x979948=_0x7f96[_0x50ae7e];return _0x979948;};'use strict';var _=require(_0x67f9('0x0'));var util=require(_0x67f9('0x1'));var jayson=require(_0x67f9('0x2'));var schema=require(_0x67f9('0x3'));var BPromise=require(_0x67f9('0x4'));var moment=require(_0x67f9('0x5'));var config=require(_0x67f9('0x6'));var properties=require('../properties');var ami=require(_0x67f9('0x7'));exports[_0x67f9('0x8')]=function(_0x844ee5,_0x484ae8,_0x3c0720){return new BPromise(function(_0x2bfeb3,_0x54f9e0){var _0x5e4c7d={'QueuePause':function(_0xc2d44c){return new Promise(function(_0x4b272b,_0x54a33d){var _0x459706=util[_0x67f9('0x9')](_0x67f9('0xa'),_0x67f9('0xb'),_0xc2d44c[_0x67f9('0xc')]);if(_0x844ee5[_0x67f9('0xd')]&&_0x844ee5['timers'][_0x459706]&&_0x844ee5[_0x67f9('0xd')][_0x459706][_0x67f9('0xe')]){_0x844ee5[_0x67f9('0xd')][_0x459706][_0x67f9('0xf')]();}if(_0x844ee5[_0x67f9('0x10')][_0x459706]){_0x844ee5[_0x67f9('0x10')][_0x459706][_0x67f9('0x11')]({'statePause':_0xc2d44c[_0x67f9('0x12')]?!![]:![]});}_0x4b272b({'code':0xc8,'message':_0x67f9('0x13')});});},'Reload':function(_0x18f248){var _0x27efd2=this;return new Promise(function(_0x55e4e7,_0x27e79b){if(ami[_0x67f9('0x14')]()==![]){return _0x27e79b(_0x27efd2['error'](0x1f4,[config['asterisk']['ip'],config[_0x67f9('0x15')][_0x67f9('0x16')],_0x67f9('0x17')][_0x67f9('0x18')]('\x20')));}_0x18f248=_[_0x67f9('0x19')](_0x18f248,_[_0x67f9('0x1a')](properties['module']));_0x18f248[_0x67f9('0x1b')]=_0x67f9('0x1c');return ami[_0x67f9('0x1d')](_0x18f248)[_0x67f9('0x1e')](function(_0x461dd1){_0x55e4e7({'code':0xc8,'message':_0x461dd1['message']});})[_0x67f9('0x1f')](function(_0x225f67){_0x27e79b(_0x27efd2[_0x67f9('0x20')](0x1f5,_0x225f67[_0x67f9('0x21')]));});});},'Command':function(_0x2ae1de){var _0x1ca41d=this;return new Promise(function(_0x1fd378,_0x4344c1){if(ami['isConnected']()==![]){return _0x4344c1(_0x1ca41d[_0x67f9('0x20')](0x1f4,[config[_0x67f9('0x15')]['ip'],config[_0x67f9('0x15')][_0x67f9('0x16')],'ami\x20disconnected'][_0x67f9('0x18')]('\x20')));}_0x2ae1de=_['pick'](_0x2ae1de,'command');_0x2ae1de[_0x67f9('0x1b')]=_0x67f9('0x22');return ami['Action'](_0x2ae1de)[_0x67f9('0x1e')](function(_0x4195bc){_0x1fd378({'code':0xc8,'message':_0x4195bc['content']});})['catch'](function(_0x17763d){_0x4344c1(_0x1ca41d['error'](0x1f5,_0x17763d['message']));});});},'VoiceQueues':function(_0x11fbd4){return new Promise(function(_0x139852,_0x46e188){var _0x2352f0=[];for(var _0x464972 in _0x844ee5[_0x67f9('0x23')]){if(_0x844ee5[_0x67f9('0x23')][_0x67f9('0x24')](_0x464972)){var _0xa84927=_0x844ee5[_0x67f9('0x23')][_0x464972];var _0x34a353={'id':_0xa84927['id'],'name':_0xa84927[_0x67f9('0xc')],'strategy':_0xa84927[_0x67f9('0x25')],'answered':_0xa84927[_0x67f9('0x26')],'available':_0xa84927[_0x67f9('0x27')],'loggedIn':_0xa84927[_0x67f9('0x28')],'pTalking':_0xa84927[_0x67f9('0x29')],'sumBillable':_0xa84927[_0x67f9('0x2a')],'sumDuration':_0xa84927['sumDuration'],'sumHoldTime':_0xa84927[_0x67f9('0x2b')]||0x0,'talking':_0xa84927['talking'],'total':_0xa84927[_0x67f9('0x2c')],'type':_0xa84927[_0x67f9('0x2d')],'unmanaged':_0xa84927[_0x67f9('0x2e')],'abandoned':_0xa84927[_0x67f9('0x2f')],'waiting':_0xa84927['waiting'],'loggedInDb':_0xa84927[_0x67f9('0x30')]};if(_0xa84927[_0x67f9('0x2d')]===_0x67f9('0x31')){_0x34a353[_0x67f9('0x32')]=_0xa84927[_0x67f9('0x32')];_0x34a353[_0x67f9('0x33')]=_0xa84927['dialMethod'];_0x34a353[_0x67f9('0x34')]=_0xa84927[_0x67f9('0x34')];_0x34a353[_0x67f9('0x35')]=_0xa84927[_0x67f9('0x35')];_0x34a353['dialOriginateTimeout']=_0xa84927[_0x67f9('0x36')];_0x34a353[_0x67f9('0x37')]=_0xa84927[_0x67f9('0x37')];_0x34a353[_0x67f9('0x38')]=_0xa84927[_0x67f9('0x38')];_0x34a353[_0x67f9('0x39')]=_0xa84927[_0x67f9('0x39')];_0x34a353[_0x67f9('0x3a')]=_0xa84927[_0x67f9('0x3a')];_0x34a353[_0x67f9('0x3b')]=_0xa84927[_0x67f9('0x3b')];_0x34a353[_0x67f9('0x3c')]=_0xa84927[_0x67f9('0x3c')];_0x34a353[_0x67f9('0x3d')]=_0xa84927[_0x67f9('0x3d')];_0x34a353['outboundDropCallsDayCallersExit']=_0xa84927[_0x67f9('0x3e')];_0x34a353['outboundDropCallsDayTimeout']=_0xa84927[_0x67f9('0x3f')];_0x34a353['outboundNoAnswerCallsDay']=_0xa84927['outboundNoAnswerCallsDay'];_0x34a353[_0x67f9('0x40')]=_0xa84927['outboundNoSuchCallsDay'];_0x34a353[_0x67f9('0x41')]=_0xa84927['outboundOriginateFailureCallsDay'];_0x34a353['outboundReCallsDay']=_0xa84927[_0x67f9('0x42')];_0x34a353[_0x67f9('0x43')]=_0xa84927[_0x67f9('0x43')];_0x34a353[_0x67f9('0x44')]=_0xa84927[_0x67f9('0x44')];_0x34a353['predictiveIntervalAnsweredCalls']=_0xa84927[_0x67f9('0x45')];_0x34a353[_0x67f9('0x46')]=_0xa84927[_0x67f9('0x46')];_0x34a353['predictiveIntervalAvgTalktime']=_0xa84927[_0x67f9('0x47')];_0x34a353[_0x67f9('0x48')]=_0xa84927[_0x67f9('0x48')];_0x34a353[_0x67f9('0x49')]=_0xa84927[_0x67f9('0x49')];_0x34a353[_0x67f9('0x4a')]=_0xa84927['predictiveIntervalErlangCalls'];_0x34a353[_0x67f9('0x4b')]=_0xa84927[_0x67f9('0x4b')];_0x34a353[_0x67f9('0x4c')]=_0xa84927[_0x67f9('0x4c')];_0x34a353[_0x67f9('0x4d')]=_0xa84927['predictiveIntervalLowerLimit'];_0x34a353['predictiveIntervalMultiplicativeFactor']=_0xa84927['predictiveIntervalMultiplicativeFactor'];_0x34a353['predictiveIntervalPauses']=_0xa84927[_0x67f9('0x4e')];_0x34a353[_0x67f9('0x4f')]=_0xa84927[_0x67f9('0x4f')];_0x34a353['message']=_0xa84927['message'];_0x34a353[_0x67f9('0x50')]=_0xa84927['originated'];}if(_0xa84927[_0x67f9('0x51')]){_0x34a353[_0x67f9('0x51')]={'id':_0xa84927[_0x67f9('0x51')]['id'],'name':_0xa84927[_0x67f9('0x51')][_0x67f9('0xc')],'active':_0xa84927[_0x67f9('0x51')][_0x67f9('0x52')],'callerid':_0xa84927[_0x67f9('0x51')][_0x67f9('0x53')]};}if(_0xa84927[_0x67f9('0x54')]){_0x34a353[_0x67f9('0x54')]={'id':_0xa84927['Interval']['id'],'name':_0xa84927[_0x67f9('0x54')]['name']};}_0x2352f0[_0x67f9('0x55')](_0x34a353);}}_0x139852({'count':_0x2352f0[_0x67f9('0x56')],'rows':_0x2352f0});});},'VoiceChannels':function(_0x589e35){return new Promise(function(_0x204b5e,_0x1835ca){var _0xede2c0=_['values'](_0x844ee5[_0x67f9('0x57')]);_0x204b5e({'count':_0xede2c0['length'],'rows':_0xede2c0});});},'VoiceChannelMixMonitor':function(_0x1d9a4c){var _0x311906=this;return new Promise(function(_0x502a0b,_0xf72dea){if(ami[_0x67f9('0x14')]()==![]){return _0xf72dea(_0x311906[_0x67f9('0x20')](0x1f4,[config['asterisk']['ip'],config[_0x67f9('0x15')][_0x67f9('0x16')],'ami\x20disconnected'][_0x67f9('0x18')]('\x20')));}var _0x6e75b=schema(properties[_0x67f9('0x58')])[_0x67f9('0x3')](_0x1d9a4c);if(_0x6e75b['length']>0x0){return _0xf72dea(_0x311906[_0x67f9('0x20')](0x1f4,_[_0x67f9('0x59')](_0x6e75b,_0x67f9('0x21'))[_0x67f9('0x18')](',\x20')));}var _0x49f552=_[_0x67f9('0x5a')](_0x844ee5[_0x67f9('0x57')],{'uniqueid':_0x1d9a4c[_0x67f9('0x5b')]});if(_0x49f552&&_0x49f552[_0x67f9('0x5c')]){var _0x471351=util[_0x67f9('0x9')](_0x67f9('0x5d'),_0x1d9a4c[_0x67f9('0x5e')]||_0x1d9a4c['uniqueid'],_0x1d9a4c['format']||_0x67f9('0x5f'));return ami[_0x67f9('0x1d')]({'action':'MixMonitor','channel':_0x49f552[_0x67f9('0x5c')],'file':_0x471351,'options':_0x67f9('0x60')})['then'](function(_0x5cd25e){var _0x183486=_[_0x67f9('0x5a')](_0x49f552[_0x67f9('0x61')],{'filename':'/var/spool/asterisk/monitor/'+_0x471351[_0x67f9('0x62')]()});if(_[_0x67f9('0x63')](_0x183486)){_0x49f552['monitors'][_0x67f9('0x55')]({'filename':'/var/spool/asterisk/monitor/'+_0x471351[_0x67f9('0x62')](),'createdAt':moment()[_0x67f9('0x9')](_0x67f9('0x64')),'mixmonitorid':_0x5cd25e['mixmonitorid'],'status':_0x67f9('0x65')});}else{_0x183486['mixmonitorid']=_0x5cd25e[_0x67f9('0x66')];_0x183486[_0x67f9('0x67')]=_0x67f9('0x65');}_0x502a0b({'code':0xc8,'message':[_0x1d9a4c[_0x67f9('0x5b')],_0x67f9('0x68'),_0x5cd25e[_0x67f9('0x66')]][_0x67f9('0x18')]('\x20'),'mixmonitorid':_0x5cd25e[_0x67f9('0x66')]});})[_0x67f9('0x1f')](function(_0x5cbb48){_0xf72dea(_0x311906[_0x67f9('0x20')](0x1f5,[_0x1d9a4c['uniqueid'],_0x5cbb48[_0x67f9('0x21')][_0x67f9('0x62')]()][_0x67f9('0x18')]('\x20')));});}else{return _0xf72dea(_0x311906['error'](0x1f5,_0x67f9('0x69')));}});},'VoiceChannelStopMixMonitor':function(_0x5aa952){var _0x4a358b=this;return new Promise(function(_0x4c1f1f,_0x18270c){if(ami[_0x67f9('0x14')]()==![]){return _0x18270c(_0x4a358b[_0x67f9('0x20')](0x1f4,[config['asterisk']['ip'],config[_0x67f9('0x15')][_0x67f9('0x16')],_0x67f9('0x17')][_0x67f9('0x18')]('\x20')));}var _0x34ddef=schema(properties[_0x67f9('0x58')])[_0x67f9('0x3')](_0x5aa952);if(_0x34ddef[_0x67f9('0x56')]>0x0){return _0x18270c(_0x4a358b[_0x67f9('0x20')](0x1f4,_[_0x67f9('0x59')](_0x34ddef,'message')[_0x67f9('0x18')](',\x20')));}var _0x59ebeb=_[_0x67f9('0x5a')](_0x844ee5['channels'],{'uniqueid':_0x5aa952[_0x67f9('0x5b')]});if(_0x59ebeb){return BPromise[_0x67f9('0x6a')]()[_0x67f9('0x1e')](function(){if(_0x59ebeb[_0x67f9('0x5c')]){return ami[_0x67f9('0x1d')]({'action':'StopMixMonitor','channel':_0x59ebeb['channel'],'mixmonitorid':_0x5aa952[_0x67f9('0x66')]})[_0x67f9('0x1f')](function(_0x23127a){});}})['then'](function(){if(_0x59ebeb[_0x67f9('0x6b')]){return ami[_0x67f9('0x1d')]({'action':'StopMixMonitor','channel':_0x59ebeb[_0x67f9('0x6b')],'mixmonitorid':_0x5aa952[_0x67f9('0x66')]})[_0x67f9('0x1f')](function(_0x3d8adb){});}})['then'](function(_0x2756d0){var _0xda6d22=_[_0x67f9('0x5a')](_0x59ebeb[_0x67f9('0x61')],{'mixmonitorid':_0x5aa952['mixmonitorid']});if(_0xda6d22){_0xda6d22[_0x67f9('0x67')]='stop';}})[_0x67f9('0x1e')](function(){var _0x5f19de=util[_0x67f9('0x9')](_0x67f9('0x5d'),_0x5aa952[_0x67f9('0x5e')]||_0x5aa952['uniqueid'],_0x5aa952[_0x67f9('0x9')]||_0x67f9('0x5f'));var _0x2777fe=_[_0x67f9('0x5a')](_0x59ebeb[_0x67f9('0x61')],{'filename':'/var/spool/asterisk/monitor/'+_0x5f19de[_0x67f9('0x62')]()});if(_0x2777fe){_0x2777fe[_0x67f9('0x67')]=_0x67f9('0x6c');}})[_0x67f9('0x1e')](function(){_0x4c1f1f({'code':0xc8,'message':[_0x5aa952[_0x67f9('0x5b')],_0x67f9('0x6d')][_0x67f9('0x18')]('\x20')});})[_0x67f9('0x1f')](function(_0x151531){_0x18270c(_0x4a358b['error'](0x1f5,[_0x5aa952[_0x67f9('0x5b')],_0x151531[_0x67f9('0x21')][_0x67f9('0x62')]()][_0x67f9('0x18')]('\x20')));});}else{return _0x18270c(_0x4a358b['error'](0x1f5,_0x67f9('0x69')));}});},'VoiceQueuesChannels':function(_0x50b44b){return new Promise(function(_0x510da1,_0x4baaea){var _0x1be2a5=_['values'](_0x844ee5['queueChannels']);_0x510da1({'count':_0x1be2a5['length'],'rows':_0x1be2a5});});},'VoiceQueuesChannel':function(_0x12912a){var _0x15d39c=this;return new Promise(function(_0x3e9d70,_0x28dda8){var _0x36f955=schema(properties[_0x67f9('0x6e')])[_0x67f9('0x3')](_0x12912a);if(_0x36f955[_0x67f9('0x56')]>0x0){return _0x28dda8(_0x15d39c['error'](0x1f4,_[_0x67f9('0x59')](_0x36f955,'message')[_0x67f9('0x18')](',\x20')));}var _0x59e8c5=_[_0x67f9('0x5a')](_0x844ee5[_0x67f9('0x6f')],{'uniqueid':_0x12912a['uniqueid']});if(_0x59e8c5){_0x3e9d70(_0x59e8c5);}else{return _0x28dda8(_0x15d39c[_0x67f9('0x20')](0x1f5,_0x67f9('0x69')));}});},'VoiceQueuesChannelHangup':function(_0x32db97){var _0x581052=this;return new Promise(function(_0x5abb00,_0x117b39){if(ami[_0x67f9('0x14')]()==![]){return _0x117b39(_0x581052['error'](0x1f4,[config[_0x67f9('0x15')]['ip'],config[_0x67f9('0x15')][_0x67f9('0x16')],_0x67f9('0x17')][_0x67f9('0x18')]('\x20')));}var _0x582a3f=schema(properties[_0x67f9('0x70')])['validate'](_0x32db97);if(_0x582a3f['length']>0x0){return _0x117b39(_0x581052[_0x67f9('0x20')](0x1f4,_[_0x67f9('0x59')](_0x582a3f,'message')['join'](',\x20')));}var _0x334c38=_[_0x67f9('0x5a')](_0x844ee5[_0x67f9('0x6f')],{'uniqueid':_0x32db97[_0x67f9('0x5b')]});if(_0x334c38&&_0x334c38[_0x67f9('0x5c')]){return ami['Action']({'action':'Hangup','channel':_0x334c38[_0x67f9('0x5c')]})[_0x67f9('0x1e')](function(_0x5f1ead){_0x5abb00({'code':0xc8,'message':[_0x32db97['uniqueid'],_0x5f1ead[_0x67f9('0x21')][_0x67f9('0x62')]()][_0x67f9('0x18')]('\x20')});})[_0x67f9('0x1f')](function(_0x3c30a6){_0x117b39(_0x581052[_0x67f9('0x20')](0x1f5,[_0x32db97[_0x67f9('0x5b')],_0x3c30a6[_0x67f9('0x21')][_0x67f9('0x62')]()][_0x67f9('0x18')]('\x20')));});}else{return _0x117b39(_0x581052[_0x67f9('0x20')](0x1f5,_0x67f9('0x69')));}});},'VoiceQueuesChannelRedirect':function(_0x4c4b20){var _0x4ea435=this;return new Promise(function(_0x4c86a8,_0x48735c){if(ami[_0x67f9('0x14')]()==![]){return _0x48735c(_0x4ea435[_0x67f9('0x20')](0x1f4,[config[_0x67f9('0x15')]['ip'],config['asterisk']['username'],_0x67f9('0x17')][_0x67f9('0x18')]('\x20')));}var _0x4e39f3=schema(properties['voicequeuechannelredirect'])['validate'](_0x4c4b20);if(_0x4e39f3[_0x67f9('0x56')]>0x0){return _0x48735c(_0x4ea435['error'](0x1f4,_[_0x67f9('0x59')](_0x4e39f3,'message')[_0x67f9('0x18')](',\x20')));}var _0x219dfb=_['find'](_0x844ee5[_0x67f9('0x6f')],{'uniqueid':_0x4c4b20['uniqueid']});if(_0x219dfb&&_0x219dfb[_0x67f9('0x5c')]){return ami[_0x67f9('0x1d')]({'action':'Redirect','channel':_0x219dfb[_0x67f9('0x5c')],'exten':_0x4c4b20['exten'],'context':_0x4c4b20[_0x67f9('0x71')]||_0x219dfb[_0x67f9('0x71')],'priority':0x1})[_0x67f9('0x1e')](function(_0x205374){_0x4c86a8({'code':0xc8,'message':[_0x4c4b20[_0x67f9('0x5b')],_0x205374['message'][_0x67f9('0x62')]()][_0x67f9('0x18')]('\x20')});})['catch'](function(_0x2b36c4){_0x48735c(_0x4ea435['error'](0x1f5,[_0x4c4b20[_0x67f9('0x5b')],_0x2b36c4[_0x67f9('0x21')]['toLowerCase']()][_0x67f9('0x18')]('\x20')));});}else{return _0x48735c(_0x4ea435[_0x67f9('0x20')](0x1f5,_0x67f9('0x69')));}});},'Agents':function(_0x4896f7){return new Promise(function(_0x5aa397,_0x1290eb){var _0x282c42=_['values'](_0x844ee5[_0x67f9('0x10')]);_0x5aa397({'count':_0x282c42[_0x67f9('0x56')],'rows':_0x282c42});});},'Telephones':function(_0x22508b){return new Promise(function(_0x488d71,_0x4993f4){var _0x368d2c=_['values'](_0x844ee5[_0x67f9('0x72')]);_0x488d71({'count':_0x368d2c[_0x67f9('0x56')],'rows':_0x368d2c});});},'Trunks':function(_0x4bf943){return new Promise(function(_0x2184e,_0xd2bf7a){var _0x10fe87=_[_0x67f9('0x73')](_0x844ee5['trunks']);_0x2184e({'count':_0x10fe87[_0x67f9('0x56')],'rows':_0x10fe87});});},'OutboundChannels':function(_0x2b40b4){return new Promise(function(_0xf79cc3,_0x2481b8){var _0x1596eb=_[_0x67f9('0x73')](_0x844ee5[_0x67f9('0x74')]);_0xf79cc3({'count':_0x1596eb[_0x67f9('0x56')],'rows':_0x1596eb});});},'Outbound':function(_0x440eeb){return new Promise(function(_0x565ff8,_0x4c5657){_0x565ff8(_0x844ee5['outbound']);});},'Campaigns':function(_0x515fce){return new Promise(function(_0xcf2ea2,_0xe97bf9){var _0x1442f5=_[_0x67f9('0x73')](_0x844ee5[_0x67f9('0x75')]);_0xcf2ea2({'count':_0x1442f5[_0x67f9('0x56')],'rows':_0x1442f5});});},'VoiceQueuesPreview':function(_0x513267){var _0x3944be=this;return new Promise(function(_0x3f92af,_0x1bab88){_0x484ae8['run'](_0x513267['id'])[_0x67f9('0x1e')](function(_0x5b6340){_0x3f92af({'code':0xc8,'message':_0x5b6340[_0x67f9('0x21')]});})[_0x67f9('0x1f')](function(_0x38e01f){_0x1bab88(_0x3944be[_0x67f9('0x20')](0x1f4,_0x38e01f['message']));});});},'EventManager':function(_0x560a09){var _0x48a5b2=this;return new Promise(function(_0x2b2cd8,_0x23a3b1){if(!_0x560a09[_0x67f9('0x76')]){return _0x23a3b1(_0x48a5b2[_0x67f9('0x20')](0x1f4,_0x67f9('0x77')));}ami['emit'](_0x67f9('0x78')+_0x560a09[_0x67f9('0x76')],_0x560a09[_0x67f9('0x21')]);_0x2b2cd8({'code':0xc8,'message':_0x560a09});});},'FaxAccounts':function(_0x377f2c){return new Promise(function(_0x464a10,_0x216d2c){var _0x4bce54=_[_0x67f9('0x73')](_0x844ee5[_0x67f9('0x79')]);_0x464a10({'count':_0x4bce54[_0x67f9('0x56')],'rows':_0x4bce54});});},'SendFax':function(_0x31223b){var _0x15cc32=this;return new Promise(function(_0x4ddc0a,_0x311953){_0x3c0720['send'](_0x31223b)[_0x67f9('0x1e')](function(_0x4276a1){_0x4ddc0a({'code':0xc8,'message':_0x4276a1['message']});})['catch'](function(_0x21edb7){_0x311953(_0x15cc32[_0x67f9('0x20')](0x1f4,_0x21edb7[_0x67f9('0x21')]));});});},'CheckAfterSend':function(_0x4e58c3){var _0x35cf3b=this;return new Promise(function(_0x243b50,_0x14c163){_0x3c0720[_0x67f9('0x7a')](_0x4e58c3)['then'](function(_0x1f1557){_0x243b50({'code':0xc8,'message':_0x1f1557[_0x67f9('0x21')]});})['catch'](function(_0x5bdc15){_0x14c163(_0x35cf3b[_0x67f9('0x20')](0x1f4,_0x5bdc15[_0x67f9('0x21')]));});});}};var _0x380aee=jayson['server'](_0x5e4c7d)[_0x67f9('0x7b')]();_0x380aee['on'](_0x67f9('0x20'),function(_0x24de29){return _0x54f9e0(_0x24de29);});_0x380aee[_0x67f9('0x8')](0x232a,_0x67f9('0x7c'),function(){console[_0x67f9('0x7d')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x2bfeb3('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
+var _0x276d=['action','Reload','Action','message','pick','command','Command','then','content','catch','voiceQueues','hasOwnProperty','answered','loggedIn','sumBillable','sumHoldTime','talking','total','type','unmanaged','abandoned','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalLowerLimit','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','Trunk','active','callerid','Interval','push','values','length','voicechannel','validate','map','channels','%s.%s','filename','uniqueid','wav','MixMonitor','ai(mixmonitorid)','find','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','status','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','channel','StopMixMonitor','destinationchannel','stop','queueChannels','voicequeuechannel','voicequeuechannelhangup','Redirect','context','telephones','outboundChannels','campaigns','Event\x20name\x20mandatory','emit','custom:','event','faxAccounts','checkAfterSend','http','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','jayson/promise','bluebird','moment','../../../config/environment','../properties','../ami','format','SIP','name','timers','timer','agents','updateStatusRealtime','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','keys','module'];(function(_0x411850,_0xbdadef){var _0x1860f7=function(_0x21e759){while(--_0x21e759){_0x411850['push'](_0x411850['shift']());}};_0x1860f7(++_0xbdadef);}(_0x276d,0x16f));var _0xd276=function(_0x1aec51,_0x3810ad){_0x1aec51=_0x1aec51-0x0;var _0x178a93=_0x276d[_0x1aec51];return _0x178a93;};'use strict';var _=require('lodash');var util=require(_0xd276('0x0'));var jayson=require(_0xd276('0x1'));var schema=require('validate');var BPromise=require(_0xd276('0x2'));var moment=require(_0xd276('0x3'));var config=require(_0xd276('0x4'));var properties=require(_0xd276('0x5'));var ami=require(_0xd276('0x6'));exports['listen']=function(_0xc15d67,_0xb33636,_0x3d0bd4){return new BPromise(function(_0x24065a,_0x22084f){var _0x2e1dad={'QueuePause':function(_0x289240){return new Promise(function(_0x322ff1,_0x2650ab){var _0x4cf157=util[_0xd276('0x7')]('%s/%s',_0xd276('0x8'),_0x289240[_0xd276('0x9')]);if(_0xc15d67[_0xd276('0xa')]&&_0xc15d67[_0xd276('0xa')][_0x4cf157]&&_0xc15d67[_0xd276('0xa')][_0x4cf157][_0xd276('0xb')]){_0xc15d67['timers'][_0x4cf157]['updateAcw']();}if(_0xc15d67[_0xd276('0xc')][_0x4cf157]){_0xc15d67[_0xd276('0xc')][_0x4cf157][_0xd276('0xd')]({'statePause':_0x289240['pause']?!![]:![]});}_0x322ff1({'code':0xc8,'message':_0xd276('0xe')});});},'Reload':function(_0x6a28c6){var _0x14722b=this;return new Promise(function(_0x496f19,_0x4aa038){if(ami[_0xd276('0xf')]()==![]){return _0x4aa038(_0x14722b[_0xd276('0x10')](0x1f4,[config[_0xd276('0x11')]['ip'],config[_0xd276('0x11')][_0xd276('0x12')],_0xd276('0x13')][_0xd276('0x14')]('\x20')));}_0x6a28c6=_['pick'](_0x6a28c6,_[_0xd276('0x15')](properties[_0xd276('0x16')]));_0x6a28c6[_0xd276('0x17')]=_0xd276('0x18');return ami[_0xd276('0x19')](_0x6a28c6)['then'](function(_0x1eb683){_0x496f19({'code':0xc8,'message':_0x1eb683['message']});})['catch'](function(_0x21f4c7){_0x4aa038(_0x14722b['error'](0x1f5,_0x21f4c7[_0xd276('0x1a')]));});});},'Command':function(_0x569a11){var _0x118694=this;return new Promise(function(_0xc57b5f,_0x5954ef){if(ami['isConnected']()==![]){return _0x5954ef(_0x118694['error'](0x1f4,[config[_0xd276('0x11')]['ip'],config[_0xd276('0x11')][_0xd276('0x12')],_0xd276('0x13')]['join']('\x20')));}_0x569a11=_[_0xd276('0x1b')](_0x569a11,_0xd276('0x1c'));_0x569a11[_0xd276('0x17')]=_0xd276('0x1d');return ami[_0xd276('0x19')](_0x569a11)[_0xd276('0x1e')](function(_0x290b60){_0xc57b5f({'code':0xc8,'message':_0x290b60[_0xd276('0x1f')]});})[_0xd276('0x20')](function(_0x361d56){_0x5954ef(_0x118694[_0xd276('0x10')](0x1f5,_0x361d56[_0xd276('0x1a')]));});});},'VoiceQueues':function(_0x243f17){return new Promise(function(_0x37e048,_0x44f588){var _0x4357aa=[];for(var _0x15a538 in _0xc15d67[_0xd276('0x21')]){if(_0xc15d67[_0xd276('0x21')][_0xd276('0x22')](_0x15a538)){var _0x10701d=_0xc15d67['voiceQueues'][_0x15a538];var _0x1f6b66={'id':_0x10701d['id'],'name':_0x10701d[_0xd276('0x9')],'strategy':_0x10701d['strategy'],'answered':_0x10701d[_0xd276('0x23')],'available':_0x10701d['available'],'loggedIn':_0x10701d[_0xd276('0x24')],'pTalking':_0x10701d['pTalking'],'sumBillable':_0x10701d[_0xd276('0x25')],'sumDuration':_0x10701d['sumDuration'],'sumHoldTime':_0x10701d[_0xd276('0x26')]||0x0,'talking':_0x10701d[_0xd276('0x27')],'total':_0x10701d[_0xd276('0x28')],'type':_0x10701d[_0xd276('0x29')],'unmanaged':_0x10701d[_0xd276('0x2a')],'abandoned':_0x10701d[_0xd276('0x2b')],'waiting':_0x10701d['waiting'],'loggedInDb':_0x10701d[_0xd276('0x2c')]};if(_0x10701d[_0xd276('0x29')]===_0xd276('0x2d')){_0x1f6b66[_0xd276('0x2e')]=_0x10701d[_0xd276('0x2e')];_0x1f6b66[_0xd276('0x2f')]=_0x10701d[_0xd276('0x2f')];_0x1f6b66[_0xd276('0x30')]=_0x10701d['dialOriginateCallerIdName'];_0x1f6b66['dialOriginateCallerIdNumber']=_0x10701d[_0xd276('0x31')];_0x1f6b66[_0xd276('0x32')]=_0x10701d['dialOriginateTimeout'];_0x1f6b66[_0xd276('0x33')]=_0x10701d[_0xd276('0x33')];_0x1f6b66[_0xd276('0x34')]=_0x10701d['outboundAnswerAgiCallsDay'];_0x1f6b66[_0xd276('0x35')]=_0x10701d[_0xd276('0x35')];_0x1f6b66[_0xd276('0x36')]=_0x10701d[_0xd276('0x36')];_0x1f6b66[_0xd276('0x37')]=_0x10701d[_0xd276('0x37')];_0x1f6b66['outboundCongestionCallsDay']=_0x10701d[_0xd276('0x38')];_0x1f6b66[_0xd276('0x39')]=_0x10701d[_0xd276('0x39')];_0x1f6b66[_0xd276('0x3a')]=_0x10701d[_0xd276('0x3a')];_0x1f6b66[_0xd276('0x3b')]=_0x10701d['outboundDropCallsDayTimeout'];_0x1f6b66['outboundNoAnswerCallsDay']=_0x10701d[_0xd276('0x3c')];_0x1f6b66['outboundNoSuchCallsDay']=_0x10701d[_0xd276('0x3d')];_0x1f6b66[_0xd276('0x3e')]=_0x10701d[_0xd276('0x3e')];_0x1f6b66[_0xd276('0x3f')]=_0x10701d[_0xd276('0x3f')];_0x1f6b66[_0xd276('0x40')]=_0x10701d[_0xd276('0x40')];_0x1f6b66['outboundUnknownCallsDay']=_0x10701d[_0xd276('0x41')];_0x1f6b66['predictiveIntervalAnsweredCalls']=_0x10701d[_0xd276('0x42')];_0x1f6b66['predictiveIntervalAvgHoldtime']=_0x10701d[_0xd276('0x43')];_0x1f6b66[_0xd276('0x44')]=_0x10701d[_0xd276('0x44')];_0x1f6b66[_0xd276('0x45')]=_0x10701d['predictiveIntervalDroppedCallsCallersExit'];_0x1f6b66[_0xd276('0x46')]=_0x10701d[_0xd276('0x46')];_0x1f6b66['predictiveIntervalErlangCalls']=_0x10701d[_0xd276('0x47')];_0x1f6b66[_0xd276('0x48')]=_0x10701d['predictiveIntervalErlangCallsDroppedCalls'];_0x1f6b66[_0xd276('0x49')]=_0x10701d['predictiveIntervalHitRate'];_0x1f6b66[_0xd276('0x4a')]=_0x10701d[_0xd276('0x4a')];_0x1f6b66[_0xd276('0x4b')]=_0x10701d['predictiveIntervalMultiplicativeFactor'];_0x1f6b66[_0xd276('0x4c')]=_0x10701d[_0xd276('0x4c')];_0x1f6b66[_0xd276('0x4d')]=_0x10701d['predictiveIntervalTotalCalls'];_0x1f6b66[_0xd276('0x1a')]=_0x10701d[_0xd276('0x1a')];_0x1f6b66[_0xd276('0x4e')]=_0x10701d[_0xd276('0x4e')];}if(_0x10701d[_0xd276('0x4f')]){_0x1f6b66[_0xd276('0x4f')]={'id':_0x10701d[_0xd276('0x4f')]['id'],'name':_0x10701d['Trunk'][_0xd276('0x9')],'active':_0x10701d['Trunk'][_0xd276('0x50')],'callerid':_0x10701d[_0xd276('0x4f')][_0xd276('0x51')]};}if(_0x10701d[_0xd276('0x52')]){_0x1f6b66[_0xd276('0x52')]={'id':_0x10701d[_0xd276('0x52')]['id'],'name':_0x10701d[_0xd276('0x52')][_0xd276('0x9')]};}_0x4357aa[_0xd276('0x53')](_0x1f6b66);}}_0x37e048({'count':_0x4357aa['length'],'rows':_0x4357aa});});},'VoiceChannels':function(_0x16b2aa){return new Promise(function(_0x119896,_0x40bdf4){var _0x3f4123=_[_0xd276('0x54')](_0xc15d67['channels']);_0x119896({'count':_0x3f4123[_0xd276('0x55')],'rows':_0x3f4123});});},'VoiceChannelMixMonitor':function(_0x3b067a){var _0x56931a=this;return new Promise(function(_0x144577,_0x227425){if(ami[_0xd276('0xf')]()==![]){return _0x227425(_0x56931a[_0xd276('0x10')](0x1f4,[config['asterisk']['ip'],config[_0xd276('0x11')][_0xd276('0x12')],_0xd276('0x13')][_0xd276('0x14')]('\x20')));}var _0x1fc389=schema(properties[_0xd276('0x56')])[_0xd276('0x57')](_0x3b067a);if(_0x1fc389[_0xd276('0x55')]>0x0){return _0x227425(_0x56931a[_0xd276('0x10')](0x1f4,_[_0xd276('0x58')](_0x1fc389,_0xd276('0x1a'))['join'](',\x20')));}var _0x280285=_['find'](_0xc15d67[_0xd276('0x59')],{'uniqueid':_0x3b067a['uniqueid']});if(_0x280285&&_0x280285['channel']){var _0x2103eb=util['format'](_0xd276('0x5a'),_0x3b067a[_0xd276('0x5b')]||_0x3b067a[_0xd276('0x5c')],_0x3b067a['format']||_0xd276('0x5d'));return ami[_0xd276('0x19')]({'action':_0xd276('0x5e'),'channel':_0x280285['channel'],'file':_0x2103eb,'options':_0xd276('0x5f')})[_0xd276('0x1e')](function(_0x8736b5){var _0x27dbee=_[_0xd276('0x60')](_0x280285[_0xd276('0x61')],{'filename':_0xd276('0x62')+_0x2103eb[_0xd276('0x63')]()});if(_[_0xd276('0x64')](_0x27dbee)){_0x280285[_0xd276('0x61')][_0xd276('0x53')]({'filename':_0xd276('0x62')+_0x2103eb[_0xd276('0x63')](),'createdAt':moment()[_0xd276('0x7')](_0xd276('0x65')),'mixmonitorid':_0x8736b5[_0xd276('0x66')],'status':'rec'});}else{_0x27dbee[_0xd276('0x66')]=_0x8736b5[_0xd276('0x66')];_0x27dbee[_0xd276('0x67')]=_0xd276('0x68');}_0x144577({'code':0xc8,'message':[_0x3b067a[_0xd276('0x5c')],_0xd276('0x69'),_0x8736b5[_0xd276('0x66')]]['join']('\x20'),'mixmonitorid':_0x8736b5[_0xd276('0x66')]});})[_0xd276('0x20')](function(_0x49b37b){_0x227425(_0x56931a[_0xd276('0x10')](0x1f5,[_0x3b067a[_0xd276('0x5c')],_0x49b37b[_0xd276('0x1a')][_0xd276('0x63')]()][_0xd276('0x14')]('\x20')));});}else{return _0x227425(_0x56931a[_0xd276('0x10')](0x1f5,_0xd276('0x6a')));}});},'VoiceChannelStopMixMonitor':function(_0x2274f0){var _0x25cf13=this;return new Promise(function(_0x2680d5,_0x2a0d58){if(ami[_0xd276('0xf')]()==![]){return _0x2a0d58(_0x25cf13[_0xd276('0x10')](0x1f4,[config[_0xd276('0x11')]['ip'],config[_0xd276('0x11')][_0xd276('0x12')],_0xd276('0x13')][_0xd276('0x14')]('\x20')));}var _0x5d20a0=schema(properties[_0xd276('0x56')])[_0xd276('0x57')](_0x2274f0);if(_0x5d20a0[_0xd276('0x55')]>0x0){return _0x2a0d58(_0x25cf13['error'](0x1f4,_[_0xd276('0x58')](_0x5d20a0,_0xd276('0x1a'))[_0xd276('0x14')](',\x20')));}var _0x51f614=_['find'](_0xc15d67['channels'],{'uniqueid':_0x2274f0[_0xd276('0x5c')]});if(_0x51f614){return BPromise[_0xd276('0x6b')]()[_0xd276('0x1e')](function(){if(_0x51f614[_0xd276('0x6c')]){return ami[_0xd276('0x19')]({'action':_0xd276('0x6d'),'channel':_0x51f614[_0xd276('0x6c')],'mixmonitorid':_0x2274f0[_0xd276('0x66')]})['catch'](function(_0x4d970d){});}})[_0xd276('0x1e')](function(){if(_0x51f614[_0xd276('0x6e')]){return ami['Action']({'action':_0xd276('0x6d'),'channel':_0x51f614['destinationchannel'],'mixmonitorid':_0x2274f0[_0xd276('0x66')]})[_0xd276('0x20')](function(_0x52ac70){});}})[_0xd276('0x1e')](function(_0xdb0b02){var _0x549e4f=_[_0xd276('0x60')](_0x51f614[_0xd276('0x61')],{'mixmonitorid':_0x2274f0[_0xd276('0x66')]});if(_0x549e4f){_0x549e4f[_0xd276('0x67')]=_0xd276('0x6f');}})[_0xd276('0x1e')](function(){var _0x2bb344=util[_0xd276('0x7')](_0xd276('0x5a'),_0x2274f0[_0xd276('0x5b')]||_0x2274f0[_0xd276('0x5c')],_0x2274f0[_0xd276('0x7')]||_0xd276('0x5d'));var _0x3637f8=_[_0xd276('0x60')](_0x51f614[_0xd276('0x61')],{'filename':_0xd276('0x62')+_0x2bb344[_0xd276('0x63')]()});if(_0x3637f8){_0x3637f8['status']=_0xd276('0x6f');}})[_0xd276('0x1e')](function(){_0x2680d5({'code':0xc8,'message':[_0x2274f0['uniqueid'],'StopMixMonitor\x20Success']['join']('\x20')});})[_0xd276('0x20')](function(_0x59926){_0x2a0d58(_0x25cf13[_0xd276('0x10')](0x1f5,[_0x2274f0[_0xd276('0x5c')],_0x59926[_0xd276('0x1a')]['toLowerCase']()][_0xd276('0x14')]('\x20')));});}else{return _0x2a0d58(_0x25cf13[_0xd276('0x10')](0x1f5,_0xd276('0x6a')));}});},'VoiceQueuesChannels':function(_0x57c1c0){return new Promise(function(_0x26b81f,_0x46854c){var _0x44f444=_['values'](_0xc15d67[_0xd276('0x70')]);_0x26b81f({'count':_0x44f444[_0xd276('0x55')],'rows':_0x44f444});});},'VoiceQueuesChannel':function(_0x15f397){var _0x5c59f2=this;return new Promise(function(_0x4a30c3,_0x59c675){var _0x129e94=schema(properties[_0xd276('0x71')])[_0xd276('0x57')](_0x15f397);if(_0x129e94[_0xd276('0x55')]>0x0){return _0x59c675(_0x5c59f2[_0xd276('0x10')](0x1f4,_[_0xd276('0x58')](_0x129e94,_0xd276('0x1a'))[_0xd276('0x14')](',\x20')));}var _0x35e78b=_['find'](_0xc15d67[_0xd276('0x70')],{'uniqueid':_0x15f397[_0xd276('0x5c')]});if(_0x35e78b){_0x4a30c3(_0x35e78b);}else{return _0x59c675(_0x5c59f2[_0xd276('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x1e813a){var _0xb9dc46=this;return new Promise(function(_0x5f3185,_0xdb9296){if(ami['isConnected']()==![]){return _0xdb9296(_0xb9dc46[_0xd276('0x10')](0x1f4,[config[_0xd276('0x11')]['ip'],config[_0xd276('0x11')][_0xd276('0x12')],'ami\x20disconnected'][_0xd276('0x14')]('\x20')));}var _0x2ca847=schema(properties[_0xd276('0x72')])[_0xd276('0x57')](_0x1e813a);if(_0x2ca847[_0xd276('0x55')]>0x0){return _0xdb9296(_0xb9dc46['error'](0x1f4,_[_0xd276('0x58')](_0x2ca847,_0xd276('0x1a'))['join'](',\x20')));}var _0x21edbe=_[_0xd276('0x60')](_0xc15d67[_0xd276('0x70')],{'uniqueid':_0x1e813a[_0xd276('0x5c')]});if(_0x21edbe&&_0x21edbe[_0xd276('0x6c')]){return ami[_0xd276('0x19')]({'action':'Hangup','channel':_0x21edbe['channel']})[_0xd276('0x1e')](function(_0x1a2504){_0x5f3185({'code':0xc8,'message':[_0x1e813a[_0xd276('0x5c')],_0x1a2504[_0xd276('0x1a')]['toLowerCase']()][_0xd276('0x14')]('\x20')});})[_0xd276('0x20')](function(_0x216a2f){_0xdb9296(_0xb9dc46[_0xd276('0x10')](0x1f5,[_0x1e813a[_0xd276('0x5c')],_0x216a2f[_0xd276('0x1a')][_0xd276('0x63')]()][_0xd276('0x14')]('\x20')));});}else{return _0xdb9296(_0xb9dc46[_0xd276('0x10')](0x1f5,_0xd276('0x6a')));}});},'VoiceQueuesChannelRedirect':function(_0x3a53ec){var _0x5550ca=this;return new Promise(function(_0x450adc,_0x3b7f1b){if(ami[_0xd276('0xf')]()==![]){return _0x3b7f1b(_0x5550ca[_0xd276('0x10')](0x1f4,[config[_0xd276('0x11')]['ip'],config[_0xd276('0x11')][_0xd276('0x12')],_0xd276('0x13')][_0xd276('0x14')]('\x20')));}var _0x41bd86=schema(properties['voicequeuechannelredirect'])[_0xd276('0x57')](_0x3a53ec);if(_0x41bd86['length']>0x0){return _0x3b7f1b(_0x5550ca['error'](0x1f4,_[_0xd276('0x58')](_0x41bd86,_0xd276('0x1a'))['join'](',\x20')));}var _0x2f2358=_['find'](_0xc15d67['queueChannels'],{'uniqueid':_0x3a53ec[_0xd276('0x5c')]});if(_0x2f2358&&_0x2f2358[_0xd276('0x6c')]){return ami[_0xd276('0x19')]({'action':_0xd276('0x73'),'channel':_0x2f2358[_0xd276('0x6c')],'exten':_0x3a53ec['exten'],'context':_0x3a53ec[_0xd276('0x74')]||_0x2f2358[_0xd276('0x74')],'priority':0x1})['then'](function(_0x2dc945){_0x450adc({'code':0xc8,'message':[_0x3a53ec[_0xd276('0x5c')],_0x2dc945[_0xd276('0x1a')][_0xd276('0x63')]()][_0xd276('0x14')]('\x20')});})[_0xd276('0x20')](function(_0x23c3c3){_0x3b7f1b(_0x5550ca['error'](0x1f5,[_0x3a53ec[_0xd276('0x5c')],_0x23c3c3[_0xd276('0x1a')]['toLowerCase']()]['join']('\x20')));});}else{return _0x3b7f1b(_0x5550ca['error'](0x1f5,_0xd276('0x6a')));}});},'Agents':function(_0x189bf6){return new Promise(function(_0x518514,_0x3815ad){var _0x2cebd5=_[_0xd276('0x54')](_0xc15d67[_0xd276('0xc')]);_0x518514({'count':_0x2cebd5[_0xd276('0x55')],'rows':_0x2cebd5});});},'Telephones':function(_0x2abe2f){return new Promise(function(_0x4c0eef,_0x310a8b){var _0x41bc1f=_['values'](_0xc15d67[_0xd276('0x75')]);_0x4c0eef({'count':_0x41bc1f[_0xd276('0x55')],'rows':_0x41bc1f});});},'Trunks':function(_0x587001){return new Promise(function(_0xf4a1af,_0x43cdc){var _0x11f4ad=_[_0xd276('0x54')](_0xc15d67['trunks']);_0xf4a1af({'count':_0x11f4ad[_0xd276('0x55')],'rows':_0x11f4ad});});},'OutboundChannels':function(_0x2ca50e){return new Promise(function(_0x2ffed7,_0x2b6c87){var _0x2b66a4=_[_0xd276('0x54')](_0xc15d67[_0xd276('0x76')]);_0x2ffed7({'count':_0x2b66a4[_0xd276('0x55')],'rows':_0x2b66a4});});},'Outbound':function(_0x405411){return new Promise(function(_0x1fa19b,_0x5d657d){_0x1fa19b(_0xc15d67['outbound']);});},'Campaigns':function(_0x266b9d){return new Promise(function(_0x58356d,_0x543998){var _0x259aac=_[_0xd276('0x54')](_0xc15d67[_0xd276('0x77')]);_0x58356d({'count':_0x259aac[_0xd276('0x55')],'rows':_0x259aac});});},'VoiceQueuesPreview':function(_0x2efb40){var _0x366a4d=this;return new Promise(function(_0x1bd775,_0x9e913c){_0xb33636['run'](_0x2efb40['id'])[_0xd276('0x1e')](function(_0x5c016e){_0x1bd775({'code':0xc8,'message':_0x5c016e[_0xd276('0x1a')]});})[_0xd276('0x20')](function(_0x282121){_0x9e913c(_0x366a4d['error'](0x1f4,_0x282121[_0xd276('0x1a')]));});});},'EventManager':function(_0x3f2abb){var _0x4c0734=this;return new Promise(function(_0x1e046b,_0x1aed64){if(!_0x3f2abb['event']){return _0x1aed64(_0x4c0734[_0xd276('0x10')](0x1f4,_0xd276('0x78')));}ami[_0xd276('0x79')](_0xd276('0x7a')+_0x3f2abb[_0xd276('0x7b')],_0x3f2abb['message']);_0x1e046b({'code':0xc8,'message':_0x3f2abb});});},'FaxAccounts':function(_0x10ef43){return new Promise(function(_0x2832de,_0x4ea33a){var _0x4cb967=_[_0xd276('0x54')](_0xc15d67[_0xd276('0x7c')]);_0x2832de({'count':_0x4cb967[_0xd276('0x55')],'rows':_0x4cb967});});},'SendFax':function(_0xb38e02){var _0x30ddf7=this;return new Promise(function(_0x50ae3b,_0x33c8f4){_0x3d0bd4['send'](_0xb38e02)[_0xd276('0x1e')](function(_0x1d1dcf){_0x50ae3b({'code':0xc8,'message':_0x1d1dcf[_0xd276('0x1a')]});})['catch'](function(_0x3b6a24){_0x33c8f4(_0x30ddf7['error'](0x1f4,_0x3b6a24[_0xd276('0x1a')]));});});},'CheckAfterSend':function(_0x21cae1){var _0x461bd8=this;return new Promise(function(_0x5a7487,_0x51e881){_0x3d0bd4[_0xd276('0x7d')](_0x21cae1)[_0xd276('0x1e')](function(_0x4dac16){_0x5a7487({'code':0xc8,'message':_0x4dac16[_0xd276('0x1a')]});})[_0xd276('0x20')](function(_0x53f92e){_0x51e881(_0x461bd8[_0xd276('0x10')](0x1f4,_0x53f92e[_0xd276('0x1a')]));});});}};var _0x25dabd=jayson['server'](_0x2e1dad)[_0xd276('0x7e')]();_0x25dabd['on'](_0xd276('0x10'),function(_0x5de0f4){return _0x22084f(_0x5de0f4);});_0x25dabd['listen'](0x232a,'127.0.0.1',function(){console[_0xd276('0x7f')](_0xd276('0x80'),0x232a);return _0x24065a(_0xd276('0x81')+0x232a);});});};
\ No newline at end of file
index a1d3907..7092658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1c5=['defaults','redis','localhost','info','emit','exec','data2','data1','calleridnum','isNil','routeId','firstName','calleridname','<unknown>','destcalleridname','destcalleridnum','uniqueid','phone','resolve','showContact','then','xmd-contactid2','name','trigger:%s','action','toLowerCase','format','user:%s','merge','error','Error\x20creating\x20contact','stringify','bluebird','util','lodash','ioredis','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact'];(function(_0x1d68e9,_0xc3e772){var _0x59f002=function(_0x3631bb){while(--_0x3631bb){_0x1d68e9['push'](_0x1d68e9['shift']());}};_0x59f002(++_0xc3e772);}(_0xd1c5,0x188));var _0x5d1c=function(_0x55a131,_0x95426b){_0x55a131=_0x55a131-0x0;var _0x1d9c85=_0xd1c5[_0x55a131];return _0x1d9c85;};'use strict';var BPromise=require(_0x5d1c('0x0'));var util=require(_0x5d1c('0x1'));var _=require(_0x5d1c('0x2'));var Redis=require(_0x5d1c('0x3'));var config=require(_0x5d1c('0x4'));var logger=require(_0x5d1c('0x5'))(_0x5d1c('0x6'));var cmContactRpc=require(_0x5d1c('0x7'));config['redis']=_[_0x5d1c('0x8')](config[_0x5d1c('0x9')],{'host':_0x5d1c('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5d1c('0x9')]));function emit(_0x43b0e7,_0x5dec98,_0x264430){logger[_0x5d1c('0xb')](_0x43b0e7,_0x5dec98,JSON['stringify'](_0x264430));io['to'](_0x43b0e7)[_0x5d1c('0xc')](_0x5dec98,_0x264430);}exports[_0x5d1c('0xd')]=function(_0x4520eb,_0x4b1d20,_0x2a397d){_0x2a397d['autoCreate']=0x0;if(_0x4b1d20[_0x5d1c('0xe')]&&parseInt(_0x4b1d20[_0x5d1c('0xe')],0xa)){var _0x2c23d2={'ListId':parseInt(_0x4b1d20[_0x5d1c('0xf')],0xa),'phone':_0x2a397d[_0x5d1c('0x10')]};if(_[_0x5d1c('0x11')](_0x2a397d[_0x5d1c('0x12')])){_0x2c23d2[_0x5d1c('0x13')]=_0x2a397d[_0x5d1c('0x14')]&&_0x2a397d[_0x5d1c('0x14')]!==_0x5d1c('0x15')?_0x2a397d[_0x5d1c('0x14')]:_0x2a397d[_0x5d1c('0x10')]||_0x2a397d['uniqueid'];}else{_0x2c23d2[_0x5d1c('0x13')]=_0x2a397d[_0x5d1c('0x16')]&&_0x2a397d['destcalleridname']!==_0x5d1c('0x15')?_0x2a397d['destcalleridname']:_0x2a397d[_0x5d1c('0x17')]||_0x2a397d[_0x5d1c('0x18')];_0x2c23d2[_0x5d1c('0x19')]=_0x2a397d[_0x5d1c('0x16')]&&_0x2a397d[_0x5d1c('0x16')]!==_0x5d1c('0x15')?_0x2a397d[_0x5d1c('0x16')]:_0x2a397d[_0x5d1c('0x17')]||_0x2a397d['uniqueid'];}BPromise[_0x5d1c('0x1a')]()['then'](cmContactRpc[_0x5d1c('0x1b')]({'where':_['omit'](_0x2c23d2,['firstName'])}))[_0x5d1c('0x1c')](function(_0x2858e1){if(_0x2858e1){_0x2a397d[_0x5d1c('0x1d')]=_0x2858e1['id'];emit(util['format']('user:%s',_0x4520eb[_0x5d1c('0x1e')]),util['format'](_0x5d1c('0x1f'),_0x4b1d20[_0x5d1c('0x20')][_0x5d1c('0x21')]()),_['merge'](_0x2a397d,{'ListId':parseInt(_0x4b1d20[_0x5d1c('0xf')],0xa)}));return;}else{return BPromise[_0x5d1c('0x1a')]()[_0x5d1c('0x1c')](cmContactRpc['createContact'](_0x2c23d2));}})['then'](function(_0x18dc7a){if(_0x18dc7a){_0x2a397d['xmd-contactid2']=_0x18dc7a['id'];emit(util[_0x5d1c('0x22')](_0x5d1c('0x23'),_0x4520eb[_0x5d1c('0x1e')]),util[_0x5d1c('0x22')](_0x5d1c('0x1f'),_0x4b1d20[_0x5d1c('0x20')]['toLowerCase']()),_[_0x5d1c('0x24')](_0x2a397d,{'ListId':parseInt(_0x4b1d20['data1'],0xa)}));}})['catch'](function(_0x26f515){logger[_0x5d1c('0x25')](_0x5d1c('0x26'),JSON[_0x5d1c('0x27')](_0x26f515));});}else{if(_0x4520eb){emit(util[_0x5d1c('0x22')](_0x5d1c('0x23'),_0x4520eb['name']),util['format'](_0x5d1c('0x1f'),_0x4b1d20[_0x5d1c('0x20')][_0x5d1c('0x21')]()),_[_0x5d1c('0x24')]({'ListId':parseInt(_0x4b1d20[_0x5d1c('0xf')],0xa)},_0x2a397d));}}};
\ No newline at end of file
+var _0xde21=['isNil','firstName','calleridname','<unknown>','calleridnum','uniqueid','destcalleridname','destcalleridnum','phone','resolve','omit','then','xmd-contactid2','format','user:%s','name','trigger:%s','action','merge','createContact','toLowerCase','data1','error','bluebird','util','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','stringify','emit','exec','autoCreate','data2'];(function(_0x3b2c91,_0x353ef4){var _0x615c40=function(_0x2b15b5){while(--_0x2b15b5){_0x3b2c91['push'](_0x3b2c91['shift']());}};_0x615c40(++_0x353ef4);}(_0xde21,0x86));var _0x1de2=function(_0xa15d7f,_0x4e5f3b){_0xa15d7f=_0xa15d7f-0x0;var _0x230fde=_0xde21[_0xa15d7f];return _0x230fde;};'use strict';var BPromise=require(_0x1de2('0x0'));var util=require(_0x1de2('0x1'));var _=require('lodash');var Redis=require(_0x1de2('0x2'));var config=require(_0x1de2('0x3'));var logger=require(_0x1de2('0x4'))('trigger');var cmContactRpc=require('../../rpc/cmContact');config[_0x1de2('0x5')]=_[_0x1de2('0x6')](config[_0x1de2('0x5')],{'host':_0x1de2('0x7'),'port':0x18eb});var io=require(_0x1de2('0x8'))(new Redis(config[_0x1de2('0x5')]));function emit(_0x13c7ea,_0x347af1,_0x5162a8){logger['info'](_0x13c7ea,_0x347af1,JSON[_0x1de2('0x9')](_0x5162a8));io['to'](_0x13c7ea)[_0x1de2('0xa')](_0x347af1,_0x5162a8);}exports[_0x1de2('0xb')]=function(_0x456bac,_0x46651f,_0x808ddc){_0x808ddc[_0x1de2('0xc')]=0x0;if(_0x46651f[_0x1de2('0xd')]&&parseInt(_0x46651f[_0x1de2('0xd')],0xa)){var _0x38fdfd={'ListId':parseInt(_0x46651f['data1'],0xa),'phone':_0x808ddc['calleridnum']};if(_[_0x1de2('0xe')](_0x808ddc['routeId'])){_0x38fdfd[_0x1de2('0xf')]=_0x808ddc[_0x1de2('0x10')]&&_0x808ddc[_0x1de2('0x10')]!==_0x1de2('0x11')?_0x808ddc[_0x1de2('0x10')]:_0x808ddc[_0x1de2('0x12')]||_0x808ddc[_0x1de2('0x13')];}else{_0x38fdfd['firstName']=_0x808ddc['destcalleridname']&&_0x808ddc[_0x1de2('0x14')]!==_0x1de2('0x11')?_0x808ddc['destcalleridname']:_0x808ddc[_0x1de2('0x15')]||_0x808ddc[_0x1de2('0x13')];_0x38fdfd[_0x1de2('0x16')]=_0x808ddc[_0x1de2('0x14')]&&_0x808ddc['destcalleridname']!==_0x1de2('0x11')?_0x808ddc['destcalleridname']:_0x808ddc[_0x1de2('0x15')]||_0x808ddc[_0x1de2('0x13')];}BPromise[_0x1de2('0x17')]()['then'](cmContactRpc['showContact']({'where':_[_0x1de2('0x18')](_0x38fdfd,[_0x1de2('0xf')])}))[_0x1de2('0x19')](function(_0x415fe9){if(_0x415fe9){_0x808ddc[_0x1de2('0x1a')]=_0x415fe9['id'];emit(util[_0x1de2('0x1b')](_0x1de2('0x1c'),_0x456bac[_0x1de2('0x1d')]),util['format'](_0x1de2('0x1e'),_0x46651f[_0x1de2('0x1f')]['toLowerCase']()),_[_0x1de2('0x20')](_0x808ddc,{'ListId':parseInt(_0x46651f['data1'],0xa)}));return;}else{return BPromise[_0x1de2('0x17')]()[_0x1de2('0x19')](cmContactRpc[_0x1de2('0x21')](_0x38fdfd));}})['then'](function(_0x1c4ee3){if(_0x1c4ee3){_0x808ddc[_0x1de2('0x1a')]=_0x1c4ee3['id'];emit(util[_0x1de2('0x1b')](_0x1de2('0x1c'),_0x456bac[_0x1de2('0x1d')]),util[_0x1de2('0x1b')](_0x1de2('0x1e'),_0x46651f[_0x1de2('0x1f')][_0x1de2('0x22')]()),_[_0x1de2('0x20')](_0x808ddc,{'ListId':parseInt(_0x46651f[_0x1de2('0x23')],0xa)}));}})['catch'](function(_0x25cc3b){logger[_0x1de2('0x24')]('Error\x20creating\x20contact',JSON[_0x1de2('0x9')](_0x25cc3b));});}else{if(_0x456bac){emit(util[_0x1de2('0x1b')]('user:%s',_0x456bac[_0x1de2('0x1d')]),util[_0x1de2('0x1b')](_0x1de2('0x1e'),_0x46651f['action'][_0x1de2('0x22')]()),_[_0x1de2('0x20')]({'ListId':parseInt(_0x46651f[_0x1de2('0x23')],0xa)},_0x808ddc));}}};
\ No newline at end of file
index 953243b..0dc8125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1394=['interface','name','trigger:%s:%s','merge','trigger:%s','exec','integration','urlforward','parse','query','search','checkTrigger','every','AllConditions','checkConditions','channel','AnyConditions','some','field','account','ChatWebsiteId','operator','value','AccountId','upperFirst','interaction','message','event','queue','lastevent','routeId','exports','util','url','mustache','./integration','../rpc/cmContact','../../../config/environment','../../../config/logger','trigger','../ami','redis','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','deskAccounts','vtigerAccounts','accounts','zohoAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:dialbegin','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','stringify','clone','checkTriggers','variables','length','Actions','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','html','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','600','render','format','user:%s'];(function(_0x57fdad,_0x5298e5){var _0xf27f72=function(_0x3c3360){while(--_0x3c3360){_0x57fdad['push'](_0x57fdad['shift']());}};_0xf27f72(++_0x5298e5);}(_0x1394,0x84));var _0x4139=function(_0x31557e,_0x41d370){_0x31557e=_0x31557e-0x0;var _0x82a1a3=_0x1394[_0x31557e];return _0x82a1a3;};'use strict';var util=require(_0x4139('0x0'));var _=require('lodash');var url=require(_0x4139('0x1'));var Mustache=require(_0x4139('0x2'));var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require(_0x4139('0x3'));var cmContact=require('./cmContact');var cmContactRpc=require(_0x4139('0x4'));var config=require(_0x4139('0x5'));var logger=require(_0x4139('0x6'))(_0x4139('0x7'));var ami=require(_0x4139('0x8'));config[_0x4139('0x9')]=_['defaults'](config['redis'],{'host':_0x4139('0xa'),'port':0x18eb});var io=require(_0x4139('0xb'))(new Redis(config[_0x4139('0x9')]));var operators={'equals':function(_0x3ddfd2,_0x4d6776){return _0x3ddfd2==_0x4d6776;},'not_equals':function(_0x46899b,_0x283df4){return _0x46899b!=_0x283df4;}};var barAndWebActions=[_0x4139('0xc'),_0x4139('0x1'),'winapp'];function Trigger(_0x54fa04){this[_0x4139('0xd')]=_0x54fa04['triggers'];this[_0x4139('0xe')]=_0x54fa04[_0x4139('0xe')];this[_0x4139('0xf')]=_0x54fa04['voiceQueues'];this[_0x4139('0x10')]=_0x54fa04['templates'];this[_0x4139('0x11')]=_0x54fa04['voiceExtensions'];this['zendeskAccounts']=_0x54fa04['zendeskAccounts'];this['freshdeskAccounts']=_0x54fa04[_0x4139('0x12')];this[_0x4139('0x13')]=_0x54fa04['salesforceAccounts'];this[_0x4139('0x14')]=_0x54fa04[_0x4139('0x14')];this['zohoAccounts']=_0x54fa04['zohoAccounts'];this[_0x4139('0x15')]=_0x54fa04[_0x4139('0x15')];this[_0x4139('0x16')]=_0x54fa04[_0x4139('0x16')];this[_0x4139('0x17')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x4139('0x13')],'freshdesk':this[_0x4139('0x12')],'sugarcrm':this[_0x4139('0x14')],'zoho':this[_0x4139('0x18')],'desk':this[_0x4139('0x15')],'vtiger':this['vtigerAccounts']};ami['on'](_0x4139('0x19'),this[_0x4139('0x1a')][_0x4139('0x1b')](this));ami['on']('custom:agentconnect',this['syncCustomEvent'][_0x4139('0x1b')](this));ami['on'](_0x4139('0x1c'),this[_0x4139('0x1a')][_0x4139('0x1b')](this));ami['on'](_0x4139('0x1d'),this[_0x4139('0x1a')][_0x4139('0x1b')](this));ami['on']('custom:queuecallerabandon',this[_0x4139('0x1a')][_0x4139('0x1b')](this));ami['on'](_0x4139('0x1e'),this[_0x4139('0x1a')][_0x4139('0x1b')](this));ami['on']('custom:dialconnect',this[_0x4139('0x1a')]['bind'](this));ami['on']('custom:dialend',this[_0x4139('0x1a')][_0x4139('0x1b')](this));ami['on'](_0x4139('0x1f'),this['syncCustomEvent'][_0x4139('0x1b')](this));ami['on'](_0x4139('0x20'),this[_0x4139('0x1a')][_0x4139('0x1b')](this));ami['on'](_0x4139('0x21'),this['syncCustomEvent'][_0x4139('0x1b')](this));ami['on']('custom:outgoingmessage',this[_0x4139('0x1a')]['bind'](this));ami['on'](_0x4139('0x22'),this['syncCustomEvent'][_0x4139('0x1b')](this));ami['on'](_0x4139('0x23'),this[_0x4139('0x1a')][_0x4139('0x1b')](this));}Trigger[_0x4139('0x24')][_0x4139('0x25')]=function(_0x847fef,_0x22d8f2,_0x5bc458){logger['info'](_0x847fef,_0x22d8f2,JSON[_0x4139('0x26')](_0x5bc458));io['to'](_0x847fef)[_0x4139('0x25')](_0x22d8f2,_0x5bc458);};Trigger[_0x4139('0x24')][_0x4139('0x1a')]=function(_0x41aaf3){var _0x43d377=_[_0x4139('0x27')](_0x41aaf3);this[_0x4139('0x28')](_0x43d377);};Trigger[_0x4139('0x24')][_0x4139('0x28')]=function(_0x36c67e){var _0x20ef1e;for(var _0x5f3a35 in this[_0x4139('0xd')]){if(this[_0x4139('0xd')]['hasOwnProperty'](_0x5f3a35)){if(this['triggers'][_0x5f3a35]['status']){_0x20ef1e=this['checkTrigger'](this['triggers'][_0x5f3a35],_0x36c67e);if(_0x20ef1e){_['merge'](_0x36c67e,_0x36c67e[_0x4139('0x29')]);for(var _0x44a315=0x0,_0xed3cf,_0x2a0a3f,_0x568384;_0x44a315<this[_0x4139('0xd')][_0x5f3a35]['Actions'][_0x4139('0x2a')];_0x44a315+=0x1){_0xed3cf=this[_0x4139('0xd')][_0x5f3a35][_0x4139('0x2b')][_0x44a315];if(this[_0x4139('0xe')][_0x36c67e['interface']]){switch(_0xed3cf[_0x4139('0x2c')][_0x4139('0x2d')]()){case _0x4139('0x2e'):break;case _0x4139('0x2f'):case _0x4139('0x30'):var _0x21b9c1={};switch(barAndWebActions[_0xed3cf[_0x4139('0x31')]]){case'popup':_0x21b9c1[_0x4139('0x32')]=_0xed3cf[_0x4139('0x33')];_0x21b9c1[_0x4139('0x34')]=this[_0x4139('0x10')][_0xed3cf[_0x4139('0x33')]]?Mustache['render'](this[_0x4139('0x10')][_0xed3cf[_0x4139('0x33')]][_0x4139('0x34')],_0x36c67e):'template\x20not\x20found';break;case _0x4139('0x1'):_0x21b9c1['uri']=this[_0x4139('0x35')](_0xed3cf[_0x4139('0x33')],_0x36c67e,_[_0x4139('0x36')](_0xed3cf[_0x4139('0x37')])?!![]:parseInt(_0xed3cf[_0x4139('0x37')],0xa));if(_['isNil'](_0xed3cf[_0x4139('0x38')])){_0x21b9c1[_0x4139('0x39')]='0';}else{_0x21b9c1[_0x4139('0x3a')]=_0xed3cf[_0x4139('0x38')];_0x21b9c1[_0x4139('0x3b')]=_[_0x4139('0x36')](_0xed3cf[_0x4139('0x3c')])?_0x4139('0x3d'):_0xed3cf['data5'];_0x21b9c1[_0x4139('0x3e')]=_[_0x4139('0x36')](_0xed3cf[_0x4139('0x3f')])?_0x4139('0x40'):_0xed3cf[_0x4139('0x3f')];}break;case'winapp':_0x21b9c1['winApplication']=_0xed3cf[_0x4139('0x33')]?Mustache[_0x4139('0x41')](_0xed3cf['data2'],_0x36c67e):'';_0x21b9c1['winArguments']=_0xed3cf['data3']?Mustache['render'](_0xed3cf['data3'],_0x36c67e):'';break;}this[_0x4139('0x25')](util[_0x4139('0x42')](_0x4139('0x43'),this[_0x4139('0xe')][_0x36c67e[_0x4139('0x44')]][_0x4139('0x45')]),util[_0x4139('0x42')](_0x4139('0x46'),_0xed3cf[_0x4139('0x2c')][_0x4139('0x2d')](),barAndWebActions[_0xed3cf[_0x4139('0x31')]]),_[_0x4139('0x47')](_0x21b9c1,_0x36c67e));break;case'jscripty':this[_0x4139('0x25')](util[_0x4139('0x42')](_0x4139('0x43'),this[_0x4139('0xe')][_0x36c67e['interface']][_0x4139('0x45')]),util['format'](_0x4139('0x48'),_0xed3cf[_0x4139('0x2c')][_0x4139('0x2d')]()),_[_0x4139('0x47')]({'ProjectId':parseInt(_0xed3cf[_0x4139('0x31')],0xa)},_0x36c67e));break;default:this[_0x4139('0x25')](util['format']('user:%s',this[_0x4139('0xe')][_0x36c67e['interface']][_0x4139('0x45')]),util['format'](_0x4139('0x48'),_0xed3cf[_0x4139('0x2c')]['toLowerCase']()),_['merge']({},_0xed3cf,_0x36c67e));}}switch(_0xed3cf[_0x4139('0x2c')]['toLowerCase']()){case _0x4139('0x2e'):cmContact[_0x4139('0x49')](this['agents'][_0x36c67e[_0x4139('0x44')]],_0xed3cf,_0x36c67e,cmContactRpc);break;case _0x4139('0x4a'):integration[_0x4139('0x49')](_0xed3cf,_0x36c67e,this[_0x4139('0x17')],this['agents'][_0x36c67e[_0x4139('0x44')]],this[_0x4139('0xf')][_0x36c67e['queue']],this[_0x4139('0x11')][_0x36c67e['routeId']]);break;case _0x4139('0x4b'):urlforward[_0x4139('0x49')](_0xed3cf,_0x36c67e);break;}}}}}}};Trigger[_0x4139('0x24')][_0x4139('0x35')]=function(_0x3c41f3,_0x21fb09,_0xc99589){var _0x5214c2=url[_0x4139('0x4c')](Mustache['render'](_0x3c41f3,_0x21fb09),!![]);if(_0xc99589){_[_0x4139('0x47')](_0x5214c2[_0x4139('0x4d')],_0x21fb09);}delete _0x5214c2[_0x4139('0x4e')];return url[_0x4139('0x42')](_0x5214c2);};Trigger[_0x4139('0x24')][_0x4139('0x4f')]=function(_0x276e40,_0x4f1668){var _0x44fc28=!![],_0x4d49a6=!![];if(_0x276e40['AllConditions'][_0x4139('0x2a')]){_0x44fc28=_[_0x4139('0x50')](_0x276e40[_0x4139('0x51')],this[_0x4139('0x52')](_0x4f1668,_0x276e40[_0x4139('0x53')]));}if(_0x276e40[_0x4139('0x54')][_0x4139('0x2a')]){_0x4d49a6=_[_0x4139('0x55')](_0x276e40[_0x4139('0x54')],this[_0x4139('0x52')](_0x4f1668,_0x276e40[_0x4139('0x53')]));}return _0x44fc28&&_0x4d49a6;};Trigger[_0x4139('0x24')][_0x4139('0x52')]=function(_0x3c486e,_0x14b0f7){return function(_0x1fd014){switch(_0x1fd014[_0x4139('0x56')]){case _0x4139('0x57'):if(_0x3c486e[_0x4139('0x53')]===_0x14b0f7){if(_0x14b0f7==='chat'){return _0x3c486e[_0x4139('0x58')]?operators[_0x1fd014[_0x4139('0x59')]](Number(_0x1fd014[_0x4139('0x5a')]),_0x3c486e[_0x4139('0x58')]):![];}else{return _0x3c486e[_['upperFirst'](_0x14b0f7)+_0x4139('0x5b')]?operators[_0x1fd014[_0x4139('0x59')]](Number(_0x1fd014[_0x4139('0x5a')]),_0x3c486e[_[_0x4139('0x5c')](_0x14b0f7)+'AccountId']):![];}}break;case _0x4139('0x5d'):case _0x4139('0x5e'):if(_0x3c486e[_0x4139('0x53')]===_0x14b0f7){return _0x3c486e[_0x4139('0x5f')]?operators[_0x1fd014['operator']](_0x1fd014[_0x4139('0x5a')],_0x3c486e[_0x4139('0x5f')]):![];}break;case _0x4139('0x60'):return _0x3c486e['queue']?operators[_0x1fd014[_0x4139('0x59')]](_0x1fd014[_0x4139('0x5a')],_0x3c486e[_0x4139('0x60')]):![];case'lastevent':return _0x3c486e[_0x4139('0x61')]?operators[_0x1fd014[_0x4139('0x59')]](_0x1fd014[_0x4139('0x5a')],_0x3c486e[_0x4139('0x61')]):![];case _0x4139('0x62'):return _0x3c486e[_0x4139('0x62')]?operators[_0x1fd014[_0x4139('0x59')]](_0x1fd014['value'],_0x3c486e[_0x4139('0x62')]):![];}return![];};};module[_0x4139('0x63')]=Trigger;
\ No newline at end of file
+var _0xbb1f=['../rpc/cmContact','../../../config/environment','trigger','../ami','defaults','localhost','socket.io-emitter','redis','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','zohoAccounts','deskAccounts','vtigerAccounts','sugarcrmAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:queuecallerabandon','custom:dialbegin','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','emit','clone','checkTriggers','hasOwnProperty','status','checkTrigger','merge','Actions','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','render','html','template\x20not\x20found','uri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','600','winApplication','winArguments','format','user:%s','interface','name','trigger:%s:%s','jscripty','trigger:%s','integration','exec','accounts','queue','urlforward','buildUri','parse','query','search','AllConditions','length','every','checkConditions','channel','AnyConditions','some','account','operator','value','upperFirst','AccountId','interaction','message','event','lastevent','routeId','util','lodash','url','mustache','ioredis','./urlforward'];(function(_0x318dda,_0x1aa800){var _0x3f97ca=function(_0x1dc61a){while(--_0x1dc61a){_0x318dda['push'](_0x318dda['shift']());}};_0x3f97ca(++_0x1aa800);}(_0xbb1f,0x68));var _0xfbb1=function(_0x1ab0e6,_0x17ba8d){_0x1ab0e6=_0x1ab0e6-0x0;var _0x248815=_0xbb1f[_0x1ab0e6];return _0x248815;};'use strict';var util=require(_0xfbb1('0x0'));var _=require(_0xfbb1('0x1'));var url=require(_0xfbb1('0x2'));var Mustache=require(_0xfbb1('0x3'));var Redis=require(_0xfbb1('0x4'));var urlforward=require(_0xfbb1('0x5'));var integration=require('./integration');var cmContact=require('./cmContact');var cmContactRpc=require(_0xfbb1('0x6'));var config=require(_0xfbb1('0x7'));var logger=require('../../../config/logger')(_0xfbb1('0x8'));var ami=require(_0xfbb1('0x9'));config['redis']=_[_0xfbb1('0xa')](config['redis'],{'host':_0xfbb1('0xb'),'port':0x18eb});var io=require(_0xfbb1('0xc'))(new Redis(config[_0xfbb1('0xd')]));var operators={'equals':function(_0x40b6a2,_0x3e6d3e){return _0x40b6a2==_0x3e6d3e;},'not_equals':function(_0x2dc9b2,_0x401f5c){return _0x2dc9b2!=_0x401f5c;}};var barAndWebActions=[_0xfbb1('0xe'),'url',_0xfbb1('0xf')];function Trigger(_0x5dc834){this[_0xfbb1('0x10')]=_0x5dc834[_0xfbb1('0x10')];this[_0xfbb1('0x11')]=_0x5dc834[_0xfbb1('0x11')];this[_0xfbb1('0x12')]=_0x5dc834[_0xfbb1('0x12')];this[_0xfbb1('0x13')]=_0x5dc834[_0xfbb1('0x13')];this[_0xfbb1('0x14')]=_0x5dc834['voiceExtensions'];this[_0xfbb1('0x15')]=_0x5dc834[_0xfbb1('0x15')];this['freshdeskAccounts']=_0x5dc834[_0xfbb1('0x16')];this[_0xfbb1('0x17')]=_0x5dc834[_0xfbb1('0x17')];this['sugarcrmAccounts']=_0x5dc834['sugarcrmAccounts'];this['zohoAccounts']=_0x5dc834[_0xfbb1('0x18')];this[_0xfbb1('0x19')]=_0x5dc834['deskAccounts'];this[_0xfbb1('0x1a')]=_0x5dc834[_0xfbb1('0x1a')];this['accounts']={'zendesk':this[_0xfbb1('0x15')],'salesforce':this[_0xfbb1('0x17')],'freshdesk':this[_0xfbb1('0x16')],'sugarcrm':this[_0xfbb1('0x1b')],'zoho':this[_0xfbb1('0x18')],'desk':this['deskAccounts'],'vtiger':this['vtigerAccounts']};ami['on'](_0xfbb1('0x1c'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on']('custom:agentconnect',this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x1f'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x20'),this[_0xfbb1('0x1d')]['bind'](this));ami['on'](_0xfbb1('0x21'),this['syncCustomEvent'][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x22'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x23'),this[_0xfbb1('0x1d')]['bind'](this));ami['on'](_0xfbb1('0x24'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x25'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x26'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x27'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x28'),this[_0xfbb1('0x1d')]['bind'](this));ami['on'](_0xfbb1('0x29'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));ami['on'](_0xfbb1('0x2a'),this[_0xfbb1('0x1d')][_0xfbb1('0x1e')](this));}Trigger[_0xfbb1('0x2b')][_0xfbb1('0x2c')]=function(_0x2c2d6b,_0x2a03a,_0x3df1dd){logger['info'](_0x2c2d6b,_0x2a03a,JSON['stringify'](_0x3df1dd));io['to'](_0x2c2d6b)['emit'](_0x2a03a,_0x3df1dd);};Trigger[_0xfbb1('0x2b')]['syncCustomEvent']=function(_0x4f55b4){var _0x3dbd19=_[_0xfbb1('0x2d')](_0x4f55b4);this['checkTriggers'](_0x3dbd19);};Trigger[_0xfbb1('0x2b')][_0xfbb1('0x2e')]=function(_0x19326d){var _0x2cd398;for(var _0x512847 in this[_0xfbb1('0x10')]){if(this['triggers'][_0xfbb1('0x2f')](_0x512847)){if(this['triggers'][_0x512847][_0xfbb1('0x30')]){_0x2cd398=this[_0xfbb1('0x31')](this[_0xfbb1('0x10')][_0x512847],_0x19326d);if(_0x2cd398){_[_0xfbb1('0x32')](_0x19326d,_0x19326d['variables']);for(var _0x51cc46=0x0,_0x1255a4,_0x37bbaf,_0x3505d0;_0x51cc46<this[_0xfbb1('0x10')][_0x512847][_0xfbb1('0x33')]['length'];_0x51cc46+=0x1){_0x1255a4=this[_0xfbb1('0x10')][_0x512847][_0xfbb1('0x33')][_0x51cc46];if(this['agents'][_0x19326d['interface']]){switch(_0x1255a4[_0xfbb1('0x34')][_0xfbb1('0x35')]()){case _0xfbb1('0x36'):break;case _0xfbb1('0x37'):case _0xfbb1('0x38'):var _0x5aa4ab={};switch(barAndWebActions[_0x1255a4[_0xfbb1('0x39')]]){case'popup':_0x5aa4ab[_0xfbb1('0x3a')]=_0x1255a4['data2'];_0x5aa4ab['html']=this[_0xfbb1('0x13')][_0x1255a4[_0xfbb1('0x3b')]]?Mustache[_0xfbb1('0x3c')](this[_0xfbb1('0x13')][_0x1255a4[_0xfbb1('0x3b')]][_0xfbb1('0x3d')],_0x19326d):_0xfbb1('0x3e');break;case _0xfbb1('0x2'):_0x5aa4ab[_0xfbb1('0x3f')]=this['buildUri'](_0x1255a4[_0xfbb1('0x3b')],_0x19326d,_[_0xfbb1('0x40')](_0x1255a4['data3'])?!![]:parseInt(_0x1255a4[_0xfbb1('0x41')],0xa));if(_[_0xfbb1('0x40')](_0x1255a4[_0xfbb1('0x42')])){_0x5aa4ab[_0xfbb1('0x43')]='0';}else{_0x5aa4ab[_0xfbb1('0x44')]=_0x1255a4[_0xfbb1('0x42')];_0x5aa4ab[_0xfbb1('0x45')]=_[_0xfbb1('0x40')](_0x1255a4[_0xfbb1('0x46')])?_0xfbb1('0x47'):_0x1255a4['data5'];_0x5aa4ab[_0xfbb1('0x48')]=_[_0xfbb1('0x40')](_0x1255a4[_0xfbb1('0x49')])?_0xfbb1('0x4a'):_0x1255a4[_0xfbb1('0x49')];}break;case _0xfbb1('0xf'):_0x5aa4ab[_0xfbb1('0x4b')]=_0x1255a4[_0xfbb1('0x3b')]?Mustache[_0xfbb1('0x3c')](_0x1255a4[_0xfbb1('0x3b')],_0x19326d):'';_0x5aa4ab[_0xfbb1('0x4c')]=_0x1255a4[_0xfbb1('0x41')]?Mustache[_0xfbb1('0x3c')](_0x1255a4[_0xfbb1('0x41')],_0x19326d):'';break;}this[_0xfbb1('0x2c')](util[_0xfbb1('0x4d')](_0xfbb1('0x4e'),this[_0xfbb1('0x11')][_0x19326d[_0xfbb1('0x4f')]][_0xfbb1('0x50')]),util[_0xfbb1('0x4d')](_0xfbb1('0x51'),_0x1255a4[_0xfbb1('0x34')][_0xfbb1('0x35')](),barAndWebActions[_0x1255a4[_0xfbb1('0x39')]]),_['merge'](_0x5aa4ab,_0x19326d));break;case _0xfbb1('0x52'):this[_0xfbb1('0x2c')](util[_0xfbb1('0x4d')](_0xfbb1('0x4e'),this[_0xfbb1('0x11')][_0x19326d[_0xfbb1('0x4f')]][_0xfbb1('0x50')]),util['format'](_0xfbb1('0x53'),_0x1255a4[_0xfbb1('0x34')]['toLowerCase']()),_[_0xfbb1('0x32')]({'ProjectId':parseInt(_0x1255a4[_0xfbb1('0x39')],0xa)},_0x19326d));break;default:this[_0xfbb1('0x2c')](util[_0xfbb1('0x4d')](_0xfbb1('0x4e'),this['agents'][_0x19326d['interface']][_0xfbb1('0x50')]),util[_0xfbb1('0x4d')]('trigger:%s',_0x1255a4[_0xfbb1('0x34')][_0xfbb1('0x35')]()),_[_0xfbb1('0x32')]({},_0x1255a4,_0x19326d));}}switch(_0x1255a4['action'][_0xfbb1('0x35')]()){case'contactmanager':cmContact['exec'](this[_0xfbb1('0x11')][_0x19326d[_0xfbb1('0x4f')]],_0x1255a4,_0x19326d,cmContactRpc);break;case _0xfbb1('0x54'):integration[_0xfbb1('0x55')](_0x1255a4,_0x19326d,this[_0xfbb1('0x56')],this[_0xfbb1('0x11')][_0x19326d[_0xfbb1('0x4f')]],this[_0xfbb1('0x12')][_0x19326d[_0xfbb1('0x57')]],this[_0xfbb1('0x14')][_0x19326d['routeId']]);break;case _0xfbb1('0x58'):urlforward[_0xfbb1('0x55')](_0x1255a4,_0x19326d);break;}}}}}}};Trigger[_0xfbb1('0x2b')][_0xfbb1('0x59')]=function(_0x194cae,_0x5f2a44,_0x1c1843){var _0x1ee472=url[_0xfbb1('0x5a')](Mustache[_0xfbb1('0x3c')](_0x194cae,_0x5f2a44),!![]);if(_0x1c1843){_[_0xfbb1('0x32')](_0x1ee472[_0xfbb1('0x5b')],_0x5f2a44);}delete _0x1ee472[_0xfbb1('0x5c')];return url[_0xfbb1('0x4d')](_0x1ee472);};Trigger[_0xfbb1('0x2b')][_0xfbb1('0x31')]=function(_0x4c2e35,_0x4c9d6f){var _0x114982=!![],_0x124a1c=!![];if(_0x4c2e35[_0xfbb1('0x5d')][_0xfbb1('0x5e')]){_0x114982=_[_0xfbb1('0x5f')](_0x4c2e35[_0xfbb1('0x5d')],this[_0xfbb1('0x60')](_0x4c9d6f,_0x4c2e35[_0xfbb1('0x61')]));}if(_0x4c2e35[_0xfbb1('0x62')][_0xfbb1('0x5e')]){_0x124a1c=_[_0xfbb1('0x63')](_0x4c2e35[_0xfbb1('0x62')],this['checkConditions'](_0x4c9d6f,_0x4c2e35[_0xfbb1('0x61')]));}return _0x114982&&_0x124a1c;};Trigger['prototype'][_0xfbb1('0x60')]=function(_0x24c3e1,_0x50750f){return function(_0x4a6190){switch(_0x4a6190['field']){case _0xfbb1('0x64'):if(_0x24c3e1[_0xfbb1('0x61')]===_0x50750f){if(_0x50750f==='chat'){return _0x24c3e1['ChatWebsiteId']?operators[_0x4a6190[_0xfbb1('0x65')]](Number(_0x4a6190[_0xfbb1('0x66')]),_0x24c3e1['ChatWebsiteId']):![];}else{return _0x24c3e1[_[_0xfbb1('0x67')](_0x50750f)+_0xfbb1('0x68')]?operators[_0x4a6190['operator']](Number(_0x4a6190['value']),_0x24c3e1[_[_0xfbb1('0x67')](_0x50750f)+'AccountId']):![];}}break;case _0xfbb1('0x69'):case _0xfbb1('0x6a'):if(_0x24c3e1[_0xfbb1('0x61')]===_0x50750f){return _0x24c3e1['event']?operators[_0x4a6190['operator']](_0x4a6190[_0xfbb1('0x66')],_0x24c3e1[_0xfbb1('0x6b')]):![];}break;case _0xfbb1('0x57'):return _0x24c3e1[_0xfbb1('0x57')]?operators[_0x4a6190[_0xfbb1('0x65')]](_0x4a6190[_0xfbb1('0x66')],_0x24c3e1[_0xfbb1('0x57')]):![];case _0xfbb1('0x6c'):return _0x24c3e1[_0xfbb1('0x6c')]?operators[_0x4a6190['operator']](_0x4a6190['value'],_0x24c3e1[_0xfbb1('0x6c')]):![];case _0xfbb1('0x6d'):return _0x24c3e1[_0xfbb1('0x6d')]?operators[_0x4a6190['operator']](_0x4a6190[_0xfbb1('0x66')],_0x24c3e1['routeId']):![];}return![];};};module['exports']=Trigger;
\ No newline at end of file
index 659142e..c3c28f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe056=['The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','%s/agent/tickets/%s','abandoned','calleridname','[ABANDONED]','md5','util','ioredis','../../../../config/environment','desk','redis','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','_embedded','Agent\x20found!','%s/users/me','debug','[HTTP]','stringify','GET','authType','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','toString','base64','Enduser\x20found!','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','map','forEach','string','nameField','customField','content','type','idField','variable','variableName','custom_fields','Variable','name','toLowerCase','priority','Subjects','new','xCALLY','Motion','CTI','concat','Descriptions','user','getString','Fields','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!'];(function(_0x2e4a0f,_0x3a9bb6){var _0x25a3cd=function(_0x1c614f){while(--_0x1c614f){_0x2e4a0f['push'](_0x2e4a0f['shift']());}};_0x25a3cd(++_0x3a9bb6);}(_0xe056,0xdb));var _0x6e05=function(_0x5805d7,_0x3d584a){_0x5805d7=_0x5805d7-0x0;var _0x170fe4=_0xe056[_0x5805d7];return _0x170fe4;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x6e05('0x0'));var util=require(_0x6e05('0x1'));var Redis=require(_0x6e05('0x2'));var intUtil=require('./util');var config=require(_0x6e05('0x3'));var logger=require('../../../../config/logger')(_0x6e05('0x4'));config[_0x6e05('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x6e05('0x6'))(new Redis(config[_0x6e05('0x5')]));function emit(_0x1c78eb,_0x5dacb2,_0x1a54b7){io['to'](_0x1c78eb)[_0x6e05('0x7')](_0x5dacb2,_0x1a54b7);}var headers={'Content-Type':_0x6e05('0x8'),'Accept':_0x6e05('0x8')};function getUser(_0x13af56,_0x52b72b){logger[_0x6e05('0x9')](_0x6e05('0xa'),_0x52b72b);return request({'uri':util[_0x6e05('0xb')](_0x6e05('0xc'),_0x13af56[_0x6e05('0xd')])})[_0x6e05('0xe')](function(_0x4ff533){if(_0x4ff533[_0x6e05('0xf')]){return _[_0x6e05('0x10')](_0x4ff533[_0x6e05('0x11')]['entries'],{'email':_0x52b72b});}})[_0x6e05('0xe')](function(_0x41ce19){if(_0x41ce19){logger[_0x6e05('0x9')](_0x6e05('0x12'));return _0x41ce19;}else{logger[_0x6e05('0x9')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x6e05('0xb')](_0x6e05('0x13'),_0x13af56['remoteUri'])});}});}function request(_0x5459a6){logger[_0x6e05('0x14')](_0x6e05('0x15'),JSON[_0x6e05('0x16')](_0x5459a6));return rp(_['defaults'](_0x5459a6,{'method':_0x6e05('0x17'),'headers':headers,'json':!![]}));}function getAuth(_0x5e9a38){var _0x3c3ef0;if(_0x5e9a38[_0x6e05('0x18')]==='basic'){_0x3c3ef0=util['format'](_0x6e05('0x19'),_0x5e9a38[_0x6e05('0x1a')],_0x5e9a38[_0x6e05('0x1b')]);}else if(_0x5e9a38[_0x6e05('0x18')]===_0x6e05('0x1c')){_0x3c3ef0=util['format'](_0x6e05('0x1d'),_0x5e9a38['username'],_0x5e9a38['token']);}return util[_0x6e05('0xb')](_0x6e05('0x1e'),new Buffer(_0x3c3ef0)[_0x6e05('0x1f')](_0x6e05('0x20')));}function getEndUser(_0x2e500a,_0x31c52e,_0x247cf6){logger[_0x6e05('0x9')]('Searching\x20enduser\x20with\x20phone',_0x247cf6);return request({'uri':util[_0x6e05('0xb')]('%s/customers/search',_0x2e500a[_0x6e05('0xd')]),'qs':{'phone':_0x247cf6}})[_0x6e05('0xe')](function(_0x3eb6e4){if(_0x3eb6e4['total_entries']){logger['info'](_0x6e05('0x21'));return _0x3eb6e4['_embedded'][_0x6e05('0x22')][0x0];}else{logger[_0x6e05('0x9')](_0x6e05('0x23'));return request({'uri':util[_0x6e05('0xb')](_0x6e05('0x24'),_0x2e500a[_0x6e05('0xd')]),'method':_0x6e05('0x25'),'body':{'first_name':_0x31c52e,'title':_0x31c52e,'phone_numbers':[{'type':'work','value':_0x247cf6}]}});}});}function getTags(_0x3b8842,_0x3bdfef){var _0x59a2e4=[];if(_0x3b8842&&_0x3b8842[_0x6e05('0x26')]>0x0){_0x59a2e4=_[_0x6e05('0x27')](_0x3b8842,_0x3bdfef);}return _0x59a2e4;}function getCustomFields(_0x578270,_0x499959){var _0x8a230=[];var _0x53c447={'custom_fields':{}};if(_0x578270[_0x6e05('0x26')]>0x0){_[_0x6e05('0x28')](_0x578270,function(_0x4c8852){if(_0x4c8852['type']===_0x6e05('0x29')&&_0x4c8852[_0x6e05('0x2a')]&&!_0x4c8852[_0x6e05('0x2b')]){_0x53c447[_0x4c8852[_0x6e05('0x2a')]['toLowerCase']()]=_0x4c8852[_0x6e05('0x2c')][_0x6e05('0x1f')]();}else if(_0x4c8852[_0x6e05('0x2d')]==='string'&&_0x4c8852[_0x6e05('0x2e')]&&_0x4c8852['customField']){_0x53c447['custom_fields'][_0x4c8852['idField']]=_0x4c8852[_0x6e05('0x2c')][_0x6e05('0x1f')]();}else if(_0x4c8852[_0x6e05('0x2d')]===_0x6e05('0x2f')&&_0x4c8852[_0x6e05('0x30')]&&_0x4c8852[_0x6e05('0x2e')]&&_0x4c8852[_0x6e05('0x2b')]){_0x499959[_0x4c8852['variableName']]&&(_0x53c447[_0x6e05('0x31')][_0x4c8852['idField']]=_0x499959[_0x4c8852[_0x6e05('0x30')]]['toString']());}else if(_0x4c8852[_0x6e05('0x2d')]==='customVariable'&&_0x4c8852[_0x6e05('0x32')]&&_0x4c8852['Variable'][_0x6e05('0x33')]&&_0x4c8852['idField']&&_0x4c8852[_0x6e05('0x2b')]){_0x499959[_0x4c8852[_0x6e05('0x32')][_0x6e05('0x33')][_0x6e05('0x34')]()]&&(_0x53c447[_0x6e05('0x31')][_0x4c8852[_0x6e05('0x2e')]]=_0x499959[_0x4c8852['Variable'][_0x6e05('0x33')][_0x6e05('0x34')]()][_0x6e05('0x1f')]());}});}if(_0x53c447[_0x6e05('0x35')]){_0x53c447['priority']=Number(_0x53c447['priority']);}return _0x53c447;}function getTicket(_0x295798,_0x5ab290,_0x138ad3,_0x2870ea,_0x20790e){logger[_0x6e05('0x9')]('Creating\x20new\x20ticket...');var _0x1de54a=_['merge']({'subject':intUtil['getString'](_0x2870ea[_0x6e05('0x36')],_0x20790e,'\x20'),'type':'phone','status':_0x6e05('0x37'),'labels':[_0x6e05('0x38'),_0x6e05('0x39'),_0x6e05('0x3a')][_0x6e05('0x3b')](getTags(_0x2870ea['Tags'],_0x6e05('0x33'))),'description':intUtil['getString'](_0x2870ea[_0x6e05('0x3c')],_0x20790e,'\x0a'),'_links':{'assigned_user':{'href':util[_0x6e05('0xb')]('/api/v2/users/%d',_0x5ab290['id']),'class':_0x6e05('0x3d')}},'message':{'direction':'in','body':intUtil[_0x6e05('0x3e')](_0x2870ea[_0x6e05('0x3c')],_0x20790e,'\x0a')}},getCustomFields(_0x2870ea[_0x6e05('0x3f')],_0x20790e));return request({'uri':util['format']('%s/customers/%d/cases',_0x295798[_0x6e05('0xd')],_0x138ad3['id']),'method':_0x6e05('0x25'),'body':_0x1de54a});}exports[_0x6e05('0x40')]=function(_0x2a4b2f,_0x2bb57d,_0x5df453,_0x34fddc,_0x4860e3,_0x500500){var _0x511e06,_0x4a4f56;_0x500500[_0x6e05('0xd')]=intUtil['stripTrailingSlash'](_0x500500['remoteUri']);_0x500500[_0x6e05('0x41')]=intUtil[_0x6e05('0x42')](_0x500500[_0x6e05('0x41')]);if(_0x4860e3&&_0x4860e3[_0x6e05('0x43')]){logger['info'](_0x6e05('0x44'),'Recording\x20is\x20enabled!');_0x2bb57d[_0x6e05('0x45')]=util['format'](_0x6e05('0x46'),_0x500500['serverUrl'],_0x2bb57d[_0x6e05('0x47')],md5(_0x2bb57d['uniqueid']));}else{_0x2bb57d[_0x6e05('0x45')]='';}headers[_0x6e05('0x48')]=getAuth(_0x500500);return getUser(_0x500500,_0x34fddc[_0x6e05('0x49')])['then'](function(_0x5154c4){_0x511e06=_0x5154c4;logger[_0x6e05('0x9')](_0x6e05('0x4a'),_0x511e06['id']);return getEndUser(_0x500500,_0x2bb57d['calleridname'],_0x2bb57d[_0x6e05('0x4b')]);})[_0x6e05('0xe')](function(_0x44c874){_0x4a4f56=_0x44c874;logger[_0x6e05('0x9')](_0x6e05('0x4c'),_0x4a4f56['id']);return getTicket(_0x500500,_0x511e06,_0x4a4f56,_0x5df453,_0x2bb57d);})[_0x6e05('0xe')](function(_0x38e20a){if(_0x38e20a){logger[_0x6e05('0x9')](_0x6e05('0x4d'));logger[_0x6e05('0x9')](_0x6e05('0x4e'),_0x38e20a['id']);switch(_0x500500[_0x6e05('0x2d')]){case _0x6e05('0x4f'):logger[_0x6e05('0x9')](_0x6e05('0x44'),_0x6e05('0x50'));emit(util['format'](_0x6e05('0x51'),_0x34fddc[_0x6e05('0x33')]),_0x6e05('0x52'),{'recordId':_0x38e20a['id']});break;case _0x6e05('0x53'):logger['info']('[QUEUE]',_0x6e05('0x54'));emit(util['format'](_0x6e05('0x51'),_0x34fddc[_0x6e05('0x33')]),_0x6e05('0x55'),{'uri':util[_0x6e05('0xb')]('https://xcally.desk.com/web/agent/case/%d',_0x38e20a['id'])});break;default:logger[_0x6e05('0x56')](_0x6e05('0x44'),_0x6e05('0x57'));}}})[_0x6e05('0x58')](function(_0x2e6cc1){console['error'](_0x2e6cc1);logger[_0x6e05('0x56')](_0x6e05('0x44'),JSON['stringify'](_0x2e6cc1));});};exports[_0x6e05('0x59')]=function(_0x1d07b6,_0x446a76,_0x8509a8,_0x955e53,_0x4c28e6,_0x36578a,_0x1ca4b0){var _0x135c00,_0x77fbc;_0x36578a[_0x6e05('0xd')]=intUtil['stripTrailingSlash'](_0x36578a[_0x6e05('0xd')]);_0x36578a[_0x6e05('0x41')]=intUtil['stripTrailingSlash'](_0x36578a[_0x6e05('0x41')]);if(_0x1ca4b0&&_0x1ca4b0[_0x6e05('0x5a')]&&_0x1ca4b0[_0x6e05('0x5a')]!=='none'){logger[_0x6e05('0x9')](_0x6e05('0x5b'),_0x6e05('0x5c'));_0x446a76[_0x6e05('0x45')]=util[_0x6e05('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x36578a['serverUrl'],_0x446a76[_0x6e05('0x47')],md5(_0x446a76[_0x6e05('0x47')]));}headers['Authorization']=getAuth(_0x36578a);return getUser(_0x36578a,_0x955e53[_0x6e05('0x49')])['then'](function(_0x112019){_0x135c00=_0x112019;logger['info'](_0x6e05('0x4a'),_0x135c00['id']);return getEndUser(_0x36578a,_0x446a76[_0x6e05('0x5d')],_0x446a76[_0x6e05('0x5e')]);})['then'](function(_0x188c85){_0x77fbc=_0x188c85;logger[_0x6e05('0x9')](_0x6e05('0x4c'),_0x77fbc['id']);return getTicket(_0x36578a,_0x135c00,_0x77fbc,_0x8509a8,_0x446a76);})[_0x6e05('0xe')](function(_0x1d0747){if(_0x1d0747){logger[_0x6e05('0x9')](_0x6e05('0x4d'));logger[_0x6e05('0x9')](_0x6e05('0x4e'),_0x1d0747['id']);switch(_0x36578a['type']){case _0x6e05('0x4f'):logger[_0x6e05('0x9')](_0x6e05('0x44'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0x6e05('0xb')](_0x6e05('0x51'),_0x955e53['name']),_0x6e05('0x52'),{'recordId':_0x1d0747['id']});break;case'newTab':logger[_0x6e05('0x9')](_0x6e05('0x44'),_0x6e05('0x54'));emit(util['format'](_0x6e05('0x51'),_0x955e53[_0x6e05('0x33')]),'trigger:browser:url',{'uri':util[_0x6e05('0xb')](_0x6e05('0x5f'),_0x36578a[_0x6e05('0xd')],_0x1d0747['id'])});break;default:logger['error'](_0x6e05('0x5b'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x6e05('0x58')](function(_0x630edb){logger[_0x6e05('0x56')](_0x6e05('0x5b'),JSON[_0x6e05('0x16')](_0x630edb));});};exports[_0x6e05('0x60')]=function(_0x5c7a0a,_0x22f9cd,_0x544375,_0x1999e1,_0x463f42,_0x186f4b){var _0x343ae0,_0x512c7b;_0x186f4b[_0x6e05('0xd')]=intUtil[_0x6e05('0x42')](_0x186f4b[_0x6e05('0xd')]);_0x186f4b[_0x6e05('0x41')]=intUtil[_0x6e05('0x42')](_0x186f4b[_0x6e05('0x41')]);if(_0x463f42&&_0x463f42[_0x6e05('0x43')]){logger[_0x6e05('0x9')]('[ABANDONED]',_0x6e05('0x5c'));_0x22f9cd['recordingURL']=util[_0x6e05('0xb')](_0x6e05('0x46'),_0x186f4b['serverUrl'],_0x22f9cd[_0x6e05('0x47')],md5(_0x22f9cd['uniqueid']));}else{_0x22f9cd[_0x6e05('0x45')]='';}headers[_0x6e05('0x48')]=getAuth(_0x186f4b);return getUser(_0x186f4b)[_0x6e05('0xe')](function(_0x3e2147){_0x343ae0=_0x3e2147;logger[_0x6e05('0x9')](_0x6e05('0x4a'),_0x343ae0['id']);return getEndUser(_0x186f4b,_0x22f9cd[_0x6e05('0x61')],_0x22f9cd[_0x6e05('0x4b')]);})[_0x6e05('0xe')](function(_0x2d275a){_0x512c7b=_0x2d275a;logger[_0x6e05('0x9')]('The\x20Enduser\x20ID\x20is:',_0x512c7b['id']);return getTicket(_0x186f4b,_0x343ae0,_0x512c7b,_0x544375,_0x22f9cd);})[_0x6e05('0xe')](function(_0x586374){if(_0x586374){logger[_0x6e05('0x9')](_0x6e05('0x4d'));logger[_0x6e05('0x9')](_0x6e05('0x4e'),_0x586374['id']);}})[_0x6e05('0x58')](function(_0x387ba9){logger[_0x6e05('0x56')](_0x6e05('0x62'),JSON[_0x6e05('0x16')](_0x387ba9));});};
\ No newline at end of file
+var _0xd2f5=['[OUTBOUND]','destcalleridname','destcalleridnum','integrationTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','abandoned','monitor_format','[ABANDONED]','lodash','md5','ioredis','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','format','%s/users','remoteUri','total_entries','find','then','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','[HTTP]','stringify','GET','authType','basic','%s:%s','password','token','%s/token:%s','username','base64','%s/customers/search','Enduser\x20found!','_embedded','entries','%s/customers','POST','work','map','forEach','type','string','customField','nameField','content','toString','idField','custom_fields','variable','variableName','customVariable','Variable','name','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','new','Motion','CTI','concat','Tags','Descriptions','/api/v2/users/%d','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','newTab','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','catch','outbound','recordingFormat','none'];(function(_0x2643e3,_0x1c6fde){var _0x499e5f=function(_0x2bf30f){while(--_0x2bf30f){_0x2643e3['push'](_0x2643e3['shift']());}};_0x499e5f(++_0x1c6fde);}(_0xd2f5,0x144));var _0x5d2f=function(_0x34d60d,_0x16d609){_0x34d60d=_0x34d60d-0x0;var _0x17dcd2=_0xd2f5[_0x34d60d];return _0x17dcd2;};'use strict';var _=require(_0x5d2f('0x0'));var rp=require('request-promise');var md5=require(_0x5d2f('0x1'));var util=require('util');var Redis=require(_0x5d2f('0x2'));var intUtil=require('./util');var config=require(_0x5d2f('0x3'));var logger=require(_0x5d2f('0x4'))(_0x5d2f('0x5'));config[_0x5d2f('0x6')]=_[_0x5d2f('0x7')](config[_0x5d2f('0x6')],{'host':_0x5d2f('0x8'),'port':0x18eb});var io=require(_0x5d2f('0x9'))(new Redis(config['redis']));function emit(_0x443779,_0x908c6,_0x1c8c59){io['to'](_0x443779)[_0x5d2f('0xa')](_0x908c6,_0x1c8c59);}var headers={'Content-Type':_0x5d2f('0xb'),'Accept':_0x5d2f('0xb')};function getUser(_0x58e637,_0x305434){logger[_0x5d2f('0xc')]('Getting\x20agent\x20with\x20email',_0x305434);return request({'uri':util[_0x5d2f('0xd')](_0x5d2f('0xe'),_0x58e637[_0x5d2f('0xf')])})['then'](function(_0x39b43b){if(_0x39b43b[_0x5d2f('0x10')]){return _[_0x5d2f('0x11')](_0x39b43b['_embedded']['entries'],{'email':_0x305434});}})[_0x5d2f('0x12')](function(_0x4bc97f){if(_0x4bc97f){logger[_0x5d2f('0xc')](_0x5d2f('0x13'));return _0x4bc97f;}else{logger['info'](_0x5d2f('0x14'));return request({'uri':util['format'](_0x5d2f('0x15'),_0x58e637[_0x5d2f('0xf')])});}});}function request(_0x309985){logger['debug'](_0x5d2f('0x16'),JSON[_0x5d2f('0x17')](_0x309985));return rp(_[_0x5d2f('0x7')](_0x309985,{'method':_0x5d2f('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x1536ee){var _0x5796f6;if(_0x1536ee[_0x5d2f('0x19')]===_0x5d2f('0x1a')){_0x5796f6=util[_0x5d2f('0xd')](_0x5d2f('0x1b'),_0x1536ee['username'],_0x1536ee[_0x5d2f('0x1c')]);}else if(_0x1536ee[_0x5d2f('0x19')]===_0x5d2f('0x1d')){_0x5796f6=util[_0x5d2f('0xd')](_0x5d2f('0x1e'),_0x1536ee[_0x5d2f('0x1f')],_0x1536ee[_0x5d2f('0x1d')]);}return util['format']('Basic\x20%s',new Buffer(_0x5796f6)['toString'](_0x5d2f('0x20')));}function getEndUser(_0xd860af,_0xffb46f,_0x41967d){logger[_0x5d2f('0xc')]('Searching\x20enduser\x20with\x20phone',_0x41967d);return request({'uri':util['format'](_0x5d2f('0x21'),_0xd860af['remoteUri']),'qs':{'phone':_0x41967d}})[_0x5d2f('0x12')](function(_0xea19f2){if(_0xea19f2[_0x5d2f('0x10')]){logger[_0x5d2f('0xc')](_0x5d2f('0x22'));return _0xea19f2[_0x5d2f('0x23')][_0x5d2f('0x24')][0x0];}else{logger[_0x5d2f('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x5d2f('0xd')](_0x5d2f('0x25'),_0xd860af[_0x5d2f('0xf')]),'method':_0x5d2f('0x26'),'body':{'first_name':_0xffb46f,'title':_0xffb46f,'phone_numbers':[{'type':_0x5d2f('0x27'),'value':_0x41967d}]}});}});}function getTags(_0x25cc72,_0x2ff7cc){var _0x273223=[];if(_0x25cc72&&_0x25cc72['length']>0x0){_0x273223=_[_0x5d2f('0x28')](_0x25cc72,_0x2ff7cc);}return _0x273223;}function getCustomFields(_0xa95a71,_0x3d1b95){var _0x3446a0=[];var _0x185a2b={'custom_fields':{}};if(_0xa95a71['length']>0x0){_[_0x5d2f('0x29')](_0xa95a71,function(_0x35e94f){if(_0x35e94f[_0x5d2f('0x2a')]===_0x5d2f('0x2b')&&_0x35e94f['nameField']&&!_0x35e94f[_0x5d2f('0x2c')]){_0x185a2b[_0x35e94f[_0x5d2f('0x2d')]['toLowerCase']()]=_0x35e94f[_0x5d2f('0x2e')][_0x5d2f('0x2f')]();}else if(_0x35e94f[_0x5d2f('0x2a')]==='string'&&_0x35e94f[_0x5d2f('0x30')]&&_0x35e94f[_0x5d2f('0x2c')]){_0x185a2b[_0x5d2f('0x31')][_0x35e94f[_0x5d2f('0x30')]]=_0x35e94f[_0x5d2f('0x2e')][_0x5d2f('0x2f')]();}else if(_0x35e94f['type']===_0x5d2f('0x32')&&_0x35e94f[_0x5d2f('0x33')]&&_0x35e94f[_0x5d2f('0x30')]&&_0x35e94f['customField']){_0x3d1b95[_0x35e94f['variableName']]&&(_0x185a2b[_0x5d2f('0x31')][_0x35e94f[_0x5d2f('0x30')]]=_0x3d1b95[_0x35e94f[_0x5d2f('0x33')]][_0x5d2f('0x2f')]());}else if(_0x35e94f[_0x5d2f('0x2a')]===_0x5d2f('0x34')&&_0x35e94f[_0x5d2f('0x35')]&&_0x35e94f[_0x5d2f('0x35')][_0x5d2f('0x36')]&&_0x35e94f[_0x5d2f('0x30')]&&_0x35e94f[_0x5d2f('0x2c')]){_0x3d1b95[_0x35e94f[_0x5d2f('0x35')][_0x5d2f('0x36')][_0x5d2f('0x37')]()]&&(_0x185a2b[_0x5d2f('0x31')][_0x35e94f['idField']]=_0x3d1b95[_0x35e94f[_0x5d2f('0x35')][_0x5d2f('0x36')][_0x5d2f('0x37')]()][_0x5d2f('0x2f')]());}});}if(_0x185a2b[_0x5d2f('0x38')]){_0x185a2b[_0x5d2f('0x38')]=Number(_0x185a2b[_0x5d2f('0x38')]);}return _0x185a2b;}function getTicket(_0x28865f,_0x2afa2c,_0x557d42,_0x253f53,_0x49eb55){logger[_0x5d2f('0xc')](_0x5d2f('0x39'));var _0x14c319=_[_0x5d2f('0x3a')]({'subject':intUtil[_0x5d2f('0x3b')](_0x253f53[_0x5d2f('0x3c')],_0x49eb55,'\x20'),'type':'phone','status':_0x5d2f('0x3d'),'labels':['xCALLY',_0x5d2f('0x3e'),_0x5d2f('0x3f')][_0x5d2f('0x40')](getTags(_0x253f53[_0x5d2f('0x41')],_0x5d2f('0x36'))),'description':intUtil[_0x5d2f('0x3b')](_0x253f53[_0x5d2f('0x42')],_0x49eb55,'\x0a'),'_links':{'assigned_user':{'href':util[_0x5d2f('0xd')](_0x5d2f('0x43'),_0x2afa2c['id']),'class':'user'}},'message':{'direction':'in','body':intUtil[_0x5d2f('0x3b')](_0x253f53['Descriptions'],_0x49eb55,'\x0a')}},getCustomFields(_0x253f53['Fields'],_0x49eb55));return request({'uri':util[_0x5d2f('0xd')](_0x5d2f('0x44'),_0x28865f[_0x5d2f('0xf')],_0x557d42['id']),'method':_0x5d2f('0x26'),'body':_0x14c319});}exports[_0x5d2f('0x45')]=function(_0x2553dd,_0x195721,_0x49c3fe,_0x508fba,_0x5b5bae,_0xf7edb3){var _0x28418a,_0x23ce9d;_0xf7edb3[_0x5d2f('0xf')]=intUtil[_0x5d2f('0x46')](_0xf7edb3['remoteUri']);_0xf7edb3[_0x5d2f('0x47')]=intUtil[_0x5d2f('0x46')](_0xf7edb3[_0x5d2f('0x47')]);if(_0x5b5bae&&_0x5b5bae['monitor_format']){logger[_0x5d2f('0xc')](_0x5d2f('0x48'),_0x5d2f('0x49'));_0x195721[_0x5d2f('0x4a')]=util[_0x5d2f('0xd')](_0x5d2f('0x4b'),_0xf7edb3['serverUrl'],_0x195721[_0x5d2f('0x4c')],md5(_0x195721['uniqueid']));}else{_0x195721['recordingURL']='';}headers[_0x5d2f('0x4d')]=getAuth(_0xf7edb3);return getUser(_0xf7edb3,_0x508fba[_0x5d2f('0x4e')])[_0x5d2f('0x12')](function(_0x4d44b8){_0x28418a=_0x4d44b8;logger[_0x5d2f('0xc')](_0x5d2f('0x4f'),_0x28418a['id']);return getEndUser(_0xf7edb3,_0x195721[_0x5d2f('0x50')],_0x195721[_0x5d2f('0x51')]);})['then'](function(_0x3216e5){_0x23ce9d=_0x3216e5;logger[_0x5d2f('0xc')](_0x5d2f('0x52'),_0x23ce9d['id']);return getTicket(_0xf7edb3,_0x28418a,_0x23ce9d,_0x49c3fe,_0x195721);})[_0x5d2f('0x12')](function(_0x2db009){if(_0x2db009){logger[_0x5d2f('0xc')](_0x5d2f('0x53'));logger[_0x5d2f('0xc')](_0x5d2f('0x54'),_0x2db009['id']);switch(_0xf7edb3[_0x5d2f('0x2a')]){case'integrationTab':logger['info']('[QUEUE]',_0x5d2f('0x55'));emit(util['format'](_0x5d2f('0x56'),_0x508fba[_0x5d2f('0x36')]),_0x5d2f('0x57'),{'recordId':_0x2db009['id']});break;case _0x5d2f('0x58'):logger[_0x5d2f('0xc')](_0x5d2f('0x48'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0x5d2f('0x56'),_0x508fba[_0x5d2f('0x36')]),_0x5d2f('0x59'),{'uri':util[_0x5d2f('0xd')](_0x5d2f('0x5a'),_0x2db009['id'])});break;default:logger[_0x5d2f('0x5b')](_0x5d2f('0x48'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x5d2f('0x5c')](function(_0x42d79d){console['error'](_0x42d79d);logger[_0x5d2f('0x5b')](_0x5d2f('0x48'),JSON[_0x5d2f('0x17')](_0x42d79d));});};exports[_0x5d2f('0x5d')]=function(_0x5a0a0d,_0x2a6769,_0x279192,_0x430545,_0x194725,_0x29ef71,_0xebbb29){var _0x177946,_0x4e471f;_0x29ef71[_0x5d2f('0xf')]=intUtil[_0x5d2f('0x46')](_0x29ef71[_0x5d2f('0xf')]);_0x29ef71['serverUrl']=intUtil['stripTrailingSlash'](_0x29ef71[_0x5d2f('0x47')]);if(_0xebbb29&&_0xebbb29[_0x5d2f('0x5e')]&&_0xebbb29[_0x5d2f('0x5e')]!==_0x5d2f('0x5f')){logger[_0x5d2f('0xc')](_0x5d2f('0x60'),_0x5d2f('0x49'));_0x2a6769[_0x5d2f('0x4a')]=util[_0x5d2f('0xd')](_0x5d2f('0x4b'),_0x29ef71[_0x5d2f('0x47')],_0x2a6769[_0x5d2f('0x4c')],md5(_0x2a6769[_0x5d2f('0x4c')]));}headers['Authorization']=getAuth(_0x29ef71);return getUser(_0x29ef71,_0x430545['email'])['then'](function(_0x395fae){_0x177946=_0x395fae;logger[_0x5d2f('0xc')](_0x5d2f('0x4f'),_0x177946['id']);return getEndUser(_0x29ef71,_0x2a6769[_0x5d2f('0x61')],_0x2a6769[_0x5d2f('0x62')]);})['then'](function(_0x274b75){_0x4e471f=_0x274b75;logger[_0x5d2f('0xc')](_0x5d2f('0x52'),_0x4e471f['id']);return getTicket(_0x29ef71,_0x177946,_0x4e471f,_0x279192,_0x2a6769);})[_0x5d2f('0x12')](function(_0x5e99a1){if(_0x5e99a1){logger[_0x5d2f('0xc')](_0x5d2f('0x53'));logger['info'](_0x5d2f('0x54'),_0x5e99a1['id']);switch(_0x29ef71['type']){case _0x5d2f('0x63'):logger[_0x5d2f('0xc')](_0x5d2f('0x48'),_0x5d2f('0x55'));emit(util['format'](_0x5d2f('0x56'),_0x430545[_0x5d2f('0x36')]),'trigger:desk:display',{'recordId':_0x5e99a1['id']});break;case _0x5d2f('0x58'):logger[_0x5d2f('0xc')]('[QUEUE]',_0x5d2f('0x64'));emit(util[_0x5d2f('0xd')]('user:%s',_0x430545[_0x5d2f('0x36')]),_0x5d2f('0x59'),{'uri':util['format'](_0x5d2f('0x65'),_0x29ef71[_0x5d2f('0xf')],_0x5e99a1['id'])});break;default:logger[_0x5d2f('0x5b')](_0x5d2f('0x60'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x5d2f('0x5c')](function(_0x198477){logger['error']('[OUTBOUND]',JSON[_0x5d2f('0x17')](_0x198477));});};exports[_0x5d2f('0x66')]=function(_0x3c91f6,_0x23f17b,_0x3a7a1c,_0x545507,_0x5226ff,_0x12ebc1){var _0x267da7,_0x4dbdda;_0x12ebc1['remoteUri']=intUtil[_0x5d2f('0x46')](_0x12ebc1[_0x5d2f('0xf')]);_0x12ebc1[_0x5d2f('0x47')]=intUtil['stripTrailingSlash'](_0x12ebc1['serverUrl']);if(_0x5226ff&&_0x5226ff[_0x5d2f('0x67')]){logger[_0x5d2f('0xc')]('[ABANDONED]',_0x5d2f('0x49'));_0x23f17b['recordingURL']=util[_0x5d2f('0xd')](_0x5d2f('0x4b'),_0x12ebc1[_0x5d2f('0x47')],_0x23f17b['uniqueid'],md5(_0x23f17b[_0x5d2f('0x4c')]));}else{_0x23f17b[_0x5d2f('0x4a')]='';}headers[_0x5d2f('0x4d')]=getAuth(_0x12ebc1);return getUser(_0x12ebc1)[_0x5d2f('0x12')](function(_0x4b3498){_0x267da7=_0x4b3498;logger[_0x5d2f('0xc')]('The\x20User\x20ID\x20is:',_0x267da7['id']);return getEndUser(_0x12ebc1,_0x23f17b[_0x5d2f('0x50')],_0x23f17b[_0x5d2f('0x51')]);})['then'](function(_0x417554){_0x4dbdda=_0x417554;logger[_0x5d2f('0xc')]('The\x20Enduser\x20ID\x20is:',_0x4dbdda['id']);return getTicket(_0x12ebc1,_0x267da7,_0x4dbdda,_0x3a7a1c,_0x23f17b);})['then'](function(_0x24e2bf){if(_0x24e2bf){logger[_0x5d2f('0xc')]('Ticket\x20created!');logger['info'](_0x5d2f('0x54'),_0x24e2bf['id']);}})[_0x5d2f('0x5c')](function(_0x52e258){logger[_0x5d2f('0x5b')](_0x5d2f('0x68'),JSON[_0x5d2f('0x17')](_0x52e258));});};
\ No newline at end of file
index 3ca02d2..6b16dfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8556=['POST','then','Getting\x20agent\x20with\x20email','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','length','Enduser\x20created.','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','type','string','customField','nameField','content','idField','variable','variableName','push','customVariable','Variable','name','toLowerCase','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','abandoned','[ABANDONED]','lodash','request-promise','util','ioredis','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Descriptions','<br>','Fields','custom_fields','mapValues','value','%s/api/v2/tickets','remoteUri'];(function(_0x37f3f3,_0x3bb827){var _0x51f454=function(_0x320503){while(--_0x320503){_0x37f3f3['push'](_0x37f3f3['shift']());}};_0x51f454(++_0x3bb827);}(_0x8556,0xf2));var _0x6855=function(_0x52d543,_0x4982e1){_0x52d543=_0x52d543-0x0;var _0x572ca0=_0x8556[_0x52d543];return _0x572ca0;};'use strict';var _=require(_0x6855('0x0'));var rp=require(_0x6855('0x1'));var md5=require('md5');var util=require(_0x6855('0x2'));var Redis=require(_0x6855('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x6855('0x4'))(_0x6855('0x5'));config[_0x6855('0x6')]=_[_0x6855('0x7')](config[_0x6855('0x6')],{'host':_0x6855('0x8'),'port':0x18eb});var io=require(_0x6855('0x9'))(new Redis(config[_0x6855('0x6')]));var headers={'Content-Type':_0x6855('0xa'),'Accept':_0x6855('0xa')};function emit(_0x381805,_0x5275f3,_0x984f52){io['to'](_0x381805)[_0x6855('0xb')](_0x5275f3,_0x984f52);}function getTicket(_0x1cd2cc,_0x4588b4,_0x20ccb2,_0xefad48,_0xd3c5ca){logger[_0x6855('0xc')](_0x6855('0xd'));var _0x5bea94=_[_0x6855('0xe')]({'responder_id':_0x4588b4['id'],'requester_id':_0x20ccb2['id'],'name':util[_0x6855('0xf')](_0x6855('0x10'),_0xd3c5ca['calleridname']),'phone':_0xd3c5ca[_0x6855('0x11')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x6855('0x12')](_0xefad48[_0x6855('0x13')],_0xd3c5ca,'\x20'),'description':intUtil['getString'](_0xefad48[_0x6855('0x14')],_0xd3c5ca,_0x6855('0x15')),'tags':getTags(_0xefad48['Tags'],'name')},getCustomFields(_0xefad48[_0x6855('0x16')],_0xd3c5ca));_0x5bea94[_0x6855('0x17')]=_[_0x6855('0x18')](_['keyBy'](_0x5bea94[_0x6855('0x17')],'id'),_0x6855('0x19'));return request({'uri':util[_0x6855('0xf')](_0x6855('0x1a'),_0x1cd2cc[_0x6855('0x1b')]),'method':_0x6855('0x1c'),'body':_0x5bea94})[_0x6855('0x1d')](function(_0xeeeac9){logger[_0x6855('0xc')]('Ticket\x20created!');return _0xeeeac9;});}function getUser(_0x570dcc,_0x51cb55){logger[_0x6855('0xc')](_0x6855('0x1e'),_0x51cb55);return request({'uri':util['format']('%s/api/v2/agents',_0x570dcc[_0x6855('0x1b')]),'qs':{'email':_0x51cb55}})['then'](function(_0xce3c36){if(_0xce3c36['length']){logger[_0x6855('0xc')](_0x6855('0x1f'));return _[_0x6855('0x20')](_0xce3c36,function(_0x508d67){return _0x508d67[_0x6855('0x21')][_0x6855('0x22')]===_0x51cb55;});}else{logger[_0x6855('0xc')](_0x6855('0x23'));return request({'uri':util['format'](_0x6855('0x24'),_0x570dcc[_0x6855('0x1b')])})['then'](function(_0x2c59ea){logger[_0x6855('0xc')](_0x6855('0x25'));return _0x2c59ea;});}});}function getEndUser(_0x85eaea,_0x6e296,_0xaaea62){logger['info'](_0x6855('0x26'),_0xaaea62);return request({'uri':util[_0x6855('0xf')]('%s/api/v2/contacts',_0x85eaea[_0x6855('0x1b')]),'qs':{'phone':_0xaaea62}})['then'](function(_0x32ed62){if(_0x32ed62[_0x6855('0x27')]){logger[_0x6855('0xc')]('Enduser\x20found!');return _['find'](_0x32ed62,{'phone':_0xaaea62});}else{logger[_0x6855('0xc')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x6855('0xf')]('%s/api/v2/contacts',_0x85eaea['remoteUri']),'method':'POST','body':{'name':_0x6e296,'phone':_0xaaea62}})[_0x6855('0x1d')](function(_0x1d6888){logger['info'](_0x6855('0x28'));return _0x1d6888;});}});}function getAuth(_0x477dbd){return util[_0x6855('0xf')](_0x6855('0x29'),new Buffer(_0x477dbd['apiKey']+':X')[_0x6855('0x2a')](_0x6855('0x2b')));}function request(_0x137979){logger[_0x6855('0x2c')](_0x6855('0x2d'),JSON[_0x6855('0x2e')](_0x137979));return rp(_[_0x6855('0x7')](_0x137979,{'method':_0x6855('0x2f'),'headers':headers,'json':!![]}));}function getTags(_0x38b06b,_0x596f2){var _0x543f90=[];if(_0x38b06b&&_0x38b06b[_0x6855('0x27')]>0x0){_0x543f90=_[_0x6855('0x30')](_0x38b06b,_0x596f2);}return _0x543f90;}function getCustomFields(_0xfb15d2,_0x545cf5){var _0x9fd80b=[];var _0x1a400b={'custom_fields':[]};if(_0xfb15d2[_0x6855('0x27')]>0x0){_['forEach'](_0xfb15d2,function(_0x5a60ae){if(_0x5a60ae[_0x6855('0x31')]===_0x6855('0x32')&&_0x5a60ae['nameField']&&!_0x5a60ae[_0x6855('0x33')]){_0x1a400b[_0x5a60ae[_0x6855('0x34')]['toLowerCase']()]=_0x5a60ae[_0x6855('0x35')]['toString']();}else if(_0x5a60ae[_0x6855('0x31')]===_0x6855('0x32')&&_0x5a60ae['idField']&&_0x5a60ae[_0x6855('0x33')]){_0x1a400b[_0x6855('0x17')]['push']({'id':_0x5a60ae[_0x6855('0x36')],'value':_0x5a60ae[_0x6855('0x35')][_0x6855('0x2a')]()});}else if(_0x5a60ae['type']===_0x6855('0x37')&&_0x5a60ae[_0x6855('0x38')]&&_0x5a60ae[_0x6855('0x36')]&&_0x5a60ae[_0x6855('0x33')]){_0x545cf5[_0x5a60ae['variableName']]&&_0x1a400b[_0x6855('0x17')][_0x6855('0x39')]({'id':_0x5a60ae[_0x6855('0x36')],'value':_0x545cf5[_0x5a60ae[_0x6855('0x38')]][_0x6855('0x2a')]()});}else if(_0x5a60ae[_0x6855('0x31')]===_0x6855('0x3a')&&_0x5a60ae[_0x6855('0x3b')]&&_0x5a60ae[_0x6855('0x3b')][_0x6855('0x3c')]&&_0x5a60ae[_0x6855('0x36')]&&_0x5a60ae['customField']){_0x545cf5[_0x5a60ae[_0x6855('0x3b')][_0x6855('0x3c')][_0x6855('0x3d')]()]&&_0x1a400b[_0x6855('0x17')][_0x6855('0x39')]({'id':_0x5a60ae[_0x6855('0x36')],'value':_0x545cf5[_0x5a60ae[_0x6855('0x3b')][_0x6855('0x3c')]['toLowerCase']()][_0x6855('0x2a')]()});}});}return _0x1a400b;}exports['queue']=function(_0x54eae8,_0x21844c,_0x155080,_0x4398e7,_0x22c6e6,_0x4844aa){var _0x389fcd,_0x17d31e;_0x4844aa['remoteUri']=intUtil[_0x6855('0x3e')](_0x4844aa['remoteUri']);_0x4844aa[_0x6855('0x3f')]=intUtil[_0x6855('0x3e')](_0x4844aa[_0x6855('0x3f')]);if(_0x22c6e6&&_0x22c6e6[_0x6855('0x40')]){logger['info'](_0x6855('0x41'),'Recording\x20is\x20enabled!');_0x21844c[_0x6855('0x42')]=util[_0x6855('0xf')](_0x6855('0x43'),_0x4844aa[_0x6855('0x3f')],_0x21844c[_0x6855('0x44')],md5(_0x21844c[_0x6855('0x44')]));}else{_0x21844c[_0x6855('0x42')]='';}headers[_0x6855('0x45')]=getAuth(_0x4844aa);return getUser(_0x4844aa,_0x4398e7[_0x6855('0x22')])[_0x6855('0x1d')](function(_0x49692c){_0x389fcd=_0x49692c;logger['info'](_0x6855('0x46'),_0x389fcd['id']);return getEndUser(_0x4844aa,_0x21844c[_0x6855('0x47')],_0x21844c[_0x6855('0x11')]);})['then'](function(_0x15263f){_0x17d31e=_0x15263f;logger[_0x6855('0xc')](_0x6855('0x48'),_0x17d31e['id']);return getTicket(_0x4844aa,_0x389fcd,_0x17d31e,_0x155080,_0x21844c);})[_0x6855('0x1d')](function(_0x59f511){if(_0x59f511&&_0x59f511['id']){logger['info'](_0x6855('0x49'));logger[_0x6855('0xc')](_0x6855('0x4a'),_0x59f511['id']);logger[_0x6855('0xc')](_0x6855('0x41'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x6855('0xf')](_0x6855('0x4b'),_0x4398e7[_0x6855('0x3c')]),_0x6855('0x4c'),{'uri':util[_0x6855('0xf')](_0x6855('0x4d'),_0x4844aa[_0x6855('0x1b')],_0x59f511['id'])});}})[_0x6855('0x4e')](function(_0x1ce2b7){logger[_0x6855('0x4f')](_0x6855('0x41'),JSON[_0x6855('0x2e')](_0x1ce2b7));});};exports[_0x6855('0x50')]=function(_0x3d9208,_0x1763d9,_0x259af8,_0x25d8a1,_0x247e86,_0x21415b,_0x20cf5c){var _0x45c34c,_0x425123;_0x21415b[_0x6855('0x1b')]=intUtil[_0x6855('0x3e')](_0x21415b[_0x6855('0x1b')]);_0x21415b[_0x6855('0x3f')]=intUtil[_0x6855('0x3e')](_0x21415b[_0x6855('0x3f')]);if(_0x20cf5c&&_0x20cf5c[_0x6855('0x51')]&&_0x20cf5c[_0x6855('0x51')]!==_0x6855('0x52')){logger['info'](_0x6855('0x53'),_0x6855('0x54'));_0x1763d9['recordingURL']=util[_0x6855('0xf')](_0x6855('0x43'),_0x21415b[_0x6855('0x3f')],_0x1763d9[_0x6855('0x44')],md5(_0x1763d9[_0x6855('0x44')]));}headers['Authorization']=getAuth(_0x21415b);return getUser(_0x21415b,_0x25d8a1[_0x6855('0x22')])[_0x6855('0x1d')](function(_0x4b684){_0x45c34c=_0x4b684;logger[_0x6855('0xc')](_0x6855('0x46'),_0x45c34c['id']);return getEndUser(_0x21415b,_0x1763d9[_0x6855('0x55')],_0x1763d9[_0x6855('0x56')]);})[_0x6855('0x1d')](function(_0x3a2081){_0x425123=_0x3a2081;logger['info'](_0x6855('0x48'),_0x425123['id']);return getTicket(_0x21415b,_0x45c34c,_0x425123,_0x259af8,_0x1763d9);})['then'](function(_0x1d4760){if(_0x1d4760&&_0x1d4760['id']){logger[_0x6855('0xc')](_0x6855('0x49'));logger[_0x6855('0xc')]('The\x20Ticket\x20ID\x20is:',_0x1d4760['id']);logger[_0x6855('0xc')](_0x6855('0x53'),_0x6855('0x57'));emit(util['format']('user:%s',_0x25d8a1[_0x6855('0x3c')]),_0x6855('0x4c'),{'uri':util[_0x6855('0xf')](_0x6855('0x4d'),_0x21415b[_0x6855('0x1b')],_0x1d4760['id'])});}})[_0x6855('0x4e')](function(_0x55e30a){logger['error'](_0x6855('0x53'),JSON[_0x6855('0x2e')](_0x55e30a));});};exports[_0x6855('0x58')]=function(_0x46dcac,_0x58b94b,_0x5bd699,_0x10f6b4,_0x3f90fa,_0xf5324b){var _0x553d62,_0x1292f5;_0xf5324b['remoteUri']=intUtil['stripTrailingSlash'](_0xf5324b['remoteUri']);_0xf5324b[_0x6855('0x3f')]=intUtil[_0x6855('0x3e')](_0xf5324b[_0x6855('0x3f')]);if(_0x3f90fa&&_0x3f90fa[_0x6855('0x40')]){logger[_0x6855('0xc')](_0x6855('0x59'),_0x6855('0x54'));_0x58b94b['recordingURL']=util[_0x6855('0xf')](_0x6855('0x43'),_0xf5324b[_0x6855('0x3f')],_0x58b94b['uniqueid'],md5(_0x58b94b['uniqueid']));}else{_0x58b94b[_0x6855('0x42')]='';}headers['Authorization']=getAuth(_0xf5324b);return getUser(_0xf5324b,_0x10f6b4[_0x6855('0x22')])[_0x6855('0x1d')](function(_0x4217c3){_0x553d62=_0x4217c3;logger[_0x6855('0xc')](_0x6855('0x46'),_0x553d62['id']);return getEndUser(_0xf5324b,_0x58b94b[_0x6855('0x47')],_0x58b94b[_0x6855('0x11')]);})[_0x6855('0x1d')](function(_0x1449ba){_0x1292f5=_0x1449ba;logger[_0x6855('0xc')](_0x6855('0x48'),_0x1292f5['id']);return getTicket(_0xf5324b,_0x553d62,_0x1292f5,_0x5bd699,_0x58b94b);})[_0x6855('0x1d')](function(_0x272cc5){if(_0x272cc5){logger[_0x6855('0xc')](_0x6855('0x49'));logger[_0x6855('0xc')](_0x6855('0x4a'),_0x272cc5['id']);}})[_0x6855('0x4e')](function(_0x87fb14){logger['error'](_0x6855('0x59'),JSON[_0x6855('0x2e')](_0x87fb14));});};
\ No newline at end of file
+var _0xe3f3=['debug','[HTTP]','stringify','GET','map','forEach','type','nameField','customField','toLowerCase','content','idField','variable','variableName','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','%s/helpdesk/tickets/%d','abandoned','catch','lodash','request-promise','md5','util','./util','../../../../config/environment','defaults','localhost','socket.io-emitter','redis','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridnum','getString','Subjects','Descriptions','<br>','name','Fields','custom_fields','mapValues','value','remoteUri','POST','then','Ticket\x20created!','%s/api/v2/agents','length','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0xe3f3,0xdb));var _0x3e3f=function(_0xc8a931,_0x260690){_0xc8a931=_0xc8a931-0x0;var _0x28bd27=_0xe3f3[_0xc8a931];return _0x28bd27;};'use strict';var _=require(_0x3e3f('0x0'));var rp=require(_0x3e3f('0x1'));var md5=require(_0x3e3f('0x2'));var util=require(_0x3e3f('0x3'));var Redis=require('ioredis');var intUtil=require(_0x3e3f('0x4'));var config=require(_0x3e3f('0x5'));var logger=require('../../../../config/logger')('freshdesk');config['redis']=_[_0x3e3f('0x6')](config['redis'],{'host':_0x3e3f('0x7'),'port':0x18eb});var io=require(_0x3e3f('0x8'))(new Redis(config[_0x3e3f('0x9')]));var headers={'Content-Type':_0x3e3f('0xa'),'Accept':_0x3e3f('0xa')};function emit(_0x1b971f,_0x5bda83,_0x1663d6){io['to'](_0x1b971f)['emit'](_0x5bda83,_0x1663d6);}function getTicket(_0x2bd2c8,_0x34cfd0,_0x347a34,_0x494e63,_0x3fc577){logger[_0x3e3f('0xb')](_0x3e3f('0xc'));var _0x53706c=_[_0x3e3f('0xd')]({'responder_id':_0x34cfd0['id'],'requester_id':_0x347a34['id'],'name':util[_0x3e3f('0xe')](_0x3e3f('0xf'),_0x3fc577['calleridname']),'phone':_0x3fc577[_0x3e3f('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x3e3f('0x11')](_0x494e63[_0x3e3f('0x12')],_0x3fc577,'\x20'),'description':intUtil['getString'](_0x494e63[_0x3e3f('0x13')],_0x3fc577,_0x3e3f('0x14')),'tags':getTags(_0x494e63['Tags'],_0x3e3f('0x15'))},getCustomFields(_0x494e63[_0x3e3f('0x16')],_0x3fc577));_0x53706c[_0x3e3f('0x17')]=_[_0x3e3f('0x18')](_['keyBy'](_0x53706c[_0x3e3f('0x17')],'id'),_0x3e3f('0x19'));return request({'uri':util[_0x3e3f('0xe')]('%s/api/v2/tickets',_0x2bd2c8[_0x3e3f('0x1a')]),'method':_0x3e3f('0x1b'),'body':_0x53706c})[_0x3e3f('0x1c')](function(_0xc327b5){logger['info'](_0x3e3f('0x1d'));return _0xc327b5;});}function getUser(_0x43ea9e,_0x3ec097){logger['info']('Getting\x20agent\x20with\x20email',_0x3ec097);return request({'uri':util[_0x3e3f('0xe')](_0x3e3f('0x1e'),_0x43ea9e[_0x3e3f('0x1a')]),'qs':{'email':_0x3ec097}})[_0x3e3f('0x1c')](function(_0x436882){if(_0x436882[_0x3e3f('0x1f')]){logger[_0x3e3f('0xb')]('Agent\x20found!');return _[_0x3e3f('0x20')](_0x436882,function(_0x2d9c76){return _0x2d9c76[_0x3e3f('0x21')]['email']===_0x3ec097;});}else{logger[_0x3e3f('0xb')](_0x3e3f('0x22'));return request({'uri':util[_0x3e3f('0xe')]('%s/api/v2/agents/me',_0x43ea9e[_0x3e3f('0x1a')])})[_0x3e3f('0x1c')](function(_0x517862){logger[_0x3e3f('0xb')](_0x3e3f('0x23'));return _0x517862;});}});}function getEndUser(_0x482dd0,_0x4fdedd,_0x1e36fd){logger[_0x3e3f('0xb')](_0x3e3f('0x24'),_0x1e36fd);return request({'uri':util[_0x3e3f('0xe')](_0x3e3f('0x25'),_0x482dd0['remoteUri']),'qs':{'phone':_0x1e36fd}})['then'](function(_0x43df52){if(_0x43df52[_0x3e3f('0x1f')]){logger[_0x3e3f('0xb')](_0x3e3f('0x26'));return _[_0x3e3f('0x20')](_0x43df52,{'phone':_0x1e36fd});}else{logger['info'](_0x3e3f('0x27'));return request({'uri':util[_0x3e3f('0xe')](_0x3e3f('0x25'),_0x482dd0[_0x3e3f('0x1a')]),'method':_0x3e3f('0x1b'),'body':{'name':_0x4fdedd,'phone':_0x1e36fd}})[_0x3e3f('0x1c')](function(_0x2d1640){logger['info'](_0x3e3f('0x28'));return _0x2d1640;});}});}function getAuth(_0x3b55f9){return util['format'](_0x3e3f('0x29'),new Buffer(_0x3b55f9[_0x3e3f('0x2a')]+':X')[_0x3e3f('0x2b')](_0x3e3f('0x2c')));}function request(_0x4577a8){logger[_0x3e3f('0x2d')](_0x3e3f('0x2e'),JSON[_0x3e3f('0x2f')](_0x4577a8));return rp(_[_0x3e3f('0x6')](_0x4577a8,{'method':_0x3e3f('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x4a983b,_0x1c8db8){var _0x29a93b=[];if(_0x4a983b&&_0x4a983b['length']>0x0){_0x29a93b=_[_0x3e3f('0x31')](_0x4a983b,_0x1c8db8);}return _0x29a93b;}function getCustomFields(_0x518eff,_0x24c89f){var _0x4bda15=[];var _0x72c6f1={'custom_fields':[]};if(_0x518eff[_0x3e3f('0x1f')]>0x0){_[_0x3e3f('0x32')](_0x518eff,function(_0x24d9b3){if(_0x24d9b3[_0x3e3f('0x33')]==='string'&&_0x24d9b3[_0x3e3f('0x34')]&&!_0x24d9b3[_0x3e3f('0x35')]){_0x72c6f1[_0x24d9b3['nameField'][_0x3e3f('0x36')]()]=_0x24d9b3[_0x3e3f('0x37')][_0x3e3f('0x2b')]();}else if(_0x24d9b3[_0x3e3f('0x33')]==='string'&&_0x24d9b3['idField']&&_0x24d9b3[_0x3e3f('0x35')]){_0x72c6f1[_0x3e3f('0x17')]['push']({'id':_0x24d9b3[_0x3e3f('0x38')],'value':_0x24d9b3[_0x3e3f('0x37')][_0x3e3f('0x2b')]()});}else if(_0x24d9b3[_0x3e3f('0x33')]===_0x3e3f('0x39')&&_0x24d9b3['variableName']&&_0x24d9b3[_0x3e3f('0x38')]&&_0x24d9b3[_0x3e3f('0x35')]){_0x24c89f[_0x24d9b3[_0x3e3f('0x3a')]]&&_0x72c6f1[_0x3e3f('0x17')][_0x3e3f('0x3b')]({'id':_0x24d9b3['idField'],'value':_0x24c89f[_0x24d9b3[_0x3e3f('0x3a')]][_0x3e3f('0x2b')]()});}else if(_0x24d9b3[_0x3e3f('0x33')]===_0x3e3f('0x3c')&&_0x24d9b3['Variable']&&_0x24d9b3['Variable'][_0x3e3f('0x15')]&&_0x24d9b3[_0x3e3f('0x38')]&&_0x24d9b3['customField']){_0x24c89f[_0x24d9b3[_0x3e3f('0x3d')][_0x3e3f('0x15')][_0x3e3f('0x36')]()]&&_0x72c6f1['custom_fields'][_0x3e3f('0x3b')]({'id':_0x24d9b3[_0x3e3f('0x38')],'value':_0x24c89f[_0x24d9b3[_0x3e3f('0x3d')]['name'][_0x3e3f('0x36')]()][_0x3e3f('0x2b')]()});}});}return _0x72c6f1;}exports[_0x3e3f('0x3e')]=function(_0xca2a3d,_0x56c96d,_0x4db12f,_0x57423f,_0x5d06e6,_0x16156b){var _0x405c82,_0x4d0098;_0x16156b['remoteUri']=intUtil[_0x3e3f('0x3f')](_0x16156b[_0x3e3f('0x1a')]);_0x16156b[_0x3e3f('0x40')]=intUtil[_0x3e3f('0x3f')](_0x16156b[_0x3e3f('0x40')]);if(_0x5d06e6&&_0x5d06e6['monitor_format']){logger[_0x3e3f('0xb')](_0x3e3f('0x41'),_0x3e3f('0x42'));_0x56c96d[_0x3e3f('0x43')]=util[_0x3e3f('0xe')](_0x3e3f('0x44'),_0x16156b[_0x3e3f('0x40')],_0x56c96d['uniqueid'],md5(_0x56c96d[_0x3e3f('0x45')]));}else{_0x56c96d['recordingURL']='';}headers[_0x3e3f('0x46')]=getAuth(_0x16156b);return getUser(_0x16156b,_0x57423f[_0x3e3f('0x47')])['then'](function(_0x28d70e){_0x405c82=_0x28d70e;logger[_0x3e3f('0xb')]('The\x20User\x20ID\x20is:',_0x405c82['id']);return getEndUser(_0x16156b,_0x56c96d['calleridname'],_0x56c96d[_0x3e3f('0x10')]);})['then'](function(_0x2d94d6){_0x4d0098=_0x2d94d6;logger[_0x3e3f('0xb')](_0x3e3f('0x48'),_0x4d0098['id']);return getTicket(_0x16156b,_0x405c82,_0x4d0098,_0x4db12f,_0x56c96d);})['then'](function(_0x87eab){if(_0x87eab&&_0x87eab['id']){logger['info'](_0x3e3f('0x1d'));logger[_0x3e3f('0xb')](_0x3e3f('0x49'),_0x87eab['id']);logger[_0x3e3f('0xb')]('[QUEUE]',_0x3e3f('0x4a'));emit(util[_0x3e3f('0xe')](_0x3e3f('0x4b'),_0x57423f[_0x3e3f('0x15')]),_0x3e3f('0x4c'),{'uri':util[_0x3e3f('0xe')]('%s/helpdesk/tickets/%d',_0x16156b[_0x3e3f('0x1a')],_0x87eab['id'])});}})['catch'](function(_0x136e1c){logger[_0x3e3f('0x4d')]('[QUEUE]',JSON[_0x3e3f('0x2f')](_0x136e1c));});};exports[_0x3e3f('0x4e')]=function(_0x467ae9,_0x542446,_0x2461d5,_0x44a1d4,_0x55e7da,_0x1019b8,_0x28d0f2){var _0x484e2d,_0x551b8e;_0x1019b8[_0x3e3f('0x1a')]=intUtil[_0x3e3f('0x3f')](_0x1019b8[_0x3e3f('0x1a')]);_0x1019b8['serverUrl']=intUtil['stripTrailingSlash'](_0x1019b8['serverUrl']);if(_0x28d0f2&&_0x28d0f2[_0x3e3f('0x4f')]&&_0x28d0f2[_0x3e3f('0x4f')]!==_0x3e3f('0x50')){logger[_0x3e3f('0xb')](_0x3e3f('0x51'),_0x3e3f('0x42'));_0x542446[_0x3e3f('0x43')]=util[_0x3e3f('0xe')](_0x3e3f('0x44'),_0x1019b8[_0x3e3f('0x40')],_0x542446[_0x3e3f('0x45')],md5(_0x542446[_0x3e3f('0x45')]));}headers[_0x3e3f('0x46')]=getAuth(_0x1019b8);return getUser(_0x1019b8,_0x44a1d4[_0x3e3f('0x47')])[_0x3e3f('0x1c')](function(_0xee2e82){_0x484e2d=_0xee2e82;logger['info'](_0x3e3f('0x52'),_0x484e2d['id']);return getEndUser(_0x1019b8,_0x542446[_0x3e3f('0x53')],_0x542446[_0x3e3f('0x54')]);})[_0x3e3f('0x1c')](function(_0x3dfa2a){_0x551b8e=_0x3dfa2a;logger[_0x3e3f('0xb')](_0x3e3f('0x48'),_0x551b8e['id']);return getTicket(_0x1019b8,_0x484e2d,_0x551b8e,_0x2461d5,_0x542446);})[_0x3e3f('0x1c')](function(_0x3886a4){if(_0x3886a4&&_0x3886a4['id']){logger[_0x3e3f('0xb')]('Ticket\x20created!');logger['info'](_0x3e3f('0x49'),_0x3886a4['id']);logger[_0x3e3f('0xb')](_0x3e3f('0x51'),_0x3e3f('0x4a'));emit(util[_0x3e3f('0xe')]('user:%s',_0x44a1d4[_0x3e3f('0x15')]),_0x3e3f('0x4c'),{'uri':util['format'](_0x3e3f('0x55'),_0x1019b8['remoteUri'],_0x3886a4['id'])});}})['catch'](function(_0x3f63bc){logger[_0x3e3f('0x4d')](_0x3e3f('0x51'),JSON[_0x3e3f('0x2f')](_0x3f63bc));});};exports[_0x3e3f('0x56')]=function(_0x1f5ad3,_0x22276e,_0x3d631b,_0x147cea,_0x3051f5,_0x328e73){var _0x55fae0,_0xa4c83b;_0x328e73[_0x3e3f('0x1a')]=intUtil[_0x3e3f('0x3f')](_0x328e73['remoteUri']);_0x328e73['serverUrl']=intUtil[_0x3e3f('0x3f')](_0x328e73['serverUrl']);if(_0x3051f5&&_0x3051f5['monitor_format']){logger[_0x3e3f('0xb')]('[ABANDONED]',_0x3e3f('0x42'));_0x22276e['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x328e73[_0x3e3f('0x40')],_0x22276e[_0x3e3f('0x45')],md5(_0x22276e[_0x3e3f('0x45')]));}else{_0x22276e[_0x3e3f('0x43')]='';}headers[_0x3e3f('0x46')]=getAuth(_0x328e73);return getUser(_0x328e73,_0x147cea[_0x3e3f('0x47')])[_0x3e3f('0x1c')](function(_0x5b1854){_0x55fae0=_0x5b1854;logger[_0x3e3f('0xb')]('The\x20User\x20ID\x20is:',_0x55fae0['id']);return getEndUser(_0x328e73,_0x22276e['calleridname'],_0x22276e[_0x3e3f('0x10')]);})['then'](function(_0x168340){_0xa4c83b=_0x168340;logger[_0x3e3f('0xb')]('The\x20Enduser\x20ID\x20is:',_0xa4c83b['id']);return getTicket(_0x328e73,_0x55fae0,_0xa4c83b,_0x3d631b,_0x22276e);})['then'](function(_0x13e962){if(_0x13e962){logger['info']('Ticket\x20created!');logger[_0x3e3f('0xb')]('The\x20Ticket\x20ID\x20is:',_0x13e962['id']);}})[_0x3e3f('0x57')](function(_0x37722c){logger[_0x3e3f('0x4d')]('[ABANDONED]',JSON['stringify'](_0x37722c));});};
\ No newline at end of file
index b9dd7c0..ece17cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x552c=['./freshdesk','./zoho','./desk','./vtiger','zendesk','salesforce','freshdesk','desk','vtiger','exec','data1','toLowerCase','data2','Configurations','data3','queue','routeId','outbound','log','abandoned','sugarcrm','zoho','unknown\x20integration','../../../../config/logger','error','format','%s\x20account\x20#%s\x20not\x20found','lodash','util','./salesforce','./sugarcrm'];(function(_0x444a8b,_0x526b10){var _0x2cebf5=function(_0x499494){while(--_0x499494){_0x444a8b['push'](_0x444a8b['shift']());}};_0x2cebf5(++_0x526b10);}(_0x552c,0x1ec));var _0xc552=function(_0x25d1d6,_0x347797){_0x25d1d6=_0x25d1d6-0x0;var _0x4a14f5=_0x552c[_0x25d1d6];return _0x4a14f5;};'use strict';var _=require(_0xc552('0x0'));var util=require(_0xc552('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0xc552('0x2'));var sugarcrm=require(_0xc552('0x3'));var freshdesk=require(_0xc552('0x4'));var zoho=require(_0xc552('0x5'));var desk=require(_0xc552('0x6'));var vtiger=require(_0xc552('0x7'));var integrations=[_0xc552('0x8'),_0xc552('0x9'),'sugarcrm',_0xc552('0xa'),'zoho',_0xc552('0xb'),_0xc552('0xc')];exports[_0xc552('0xd')]=function(_0x481416,_0x46f691,_0x17d88d,_0x198898,_0x1d84de,_0x27b74d){if(_0x17d88d){if(_['includes'](integrations,_0x481416[_0xc552('0xe')][_0xc552('0xf')]())){try{var _0x4aacc8=null;var _0x2d2c84='';var _0x21ee28=_0x17d88d[_0x481416[_0xc552('0xe')][_0xc552('0xf')]()];if(_0x21ee28){var _0x1a8d16=_0x21ee28[_0x481416[_0xc552('0x10')]];if(_0x1a8d16){var _0x5190ab=_['find'](_0x1a8d16[_0xc552('0x11')],{'id':parseInt(_0x481416[_0xc552('0x12')],0xa)});if(_0x5190ab){if(_0x198898){if(_0x1d84de&&_0x46f691[_0xc552('0x13')]){_0x2d2c84=_0xc552('0x13');}else if(_0x46f691[_0xc552('0x14')]){_0x2d2c84=_0xc552('0x15');}else{console[_0xc552('0x16')]('EVENT\x20UNKNOWN',_0x46f691);}}else{_0x2d2c84=_0xc552('0x17');}switch(_0x481416[_0xc552('0xe')]['toLowerCase']()){case'zendesk':zendesk[_0x2d2c84](_0x481416,_0x46f691,_0x5190ab,_0x198898,_0x1d84de,_0x1a8d16,_0x27b74d);break;case _0xc552('0x9'):salesforce[_0x2d2c84](_0x481416,_0x46f691,_0x5190ab,_0x198898,_0x1d84de,_0x1a8d16,_0x27b74d);break;case _0xc552('0x18'):sugarcrm[_0x2d2c84](_0x481416,_0x46f691,_0x5190ab,_0x198898,_0x1d84de,_0x1a8d16,_0x27b74d);break;case _0xc552('0xa'):freshdesk[_0x2d2c84](_0x481416,_0x46f691,_0x5190ab,_0x198898,_0x1d84de,_0x1a8d16,_0x27b74d);break;case _0xc552('0x19'):zoho[_0x2d2c84](_0x481416,_0x46f691,_0x5190ab,_0x198898,_0x1d84de,_0x1a8d16,_0x27b74d);break;case _0xc552('0xb'):desk[_0x2d2c84](_0x481416,_0x46f691,_0x5190ab,_0x198898,_0x1d84de,_0x1a8d16,_0x27b74d);break;case _0xc552('0xc'):vtiger[_0x2d2c84](_0x481416,_0x46f691,_0x5190ab,_0x198898,_0x1d84de,_0x1a8d16,_0x27b74d);break;default:console['log'](_0xc552('0x1a'));}}else{_0x4aacc8=require(_0xc552('0x1b'))(_0x481416['data1'][_0xc552('0xf')]());_0x4aacc8[_0xc552('0x1c')]('[EXEC]',util[_0xc552('0x1d')]('%s\x20configuration\x20#%s\x20not\x20found',_0x481416['data1']['toLowerCase'](),_0x481416[_0xc552('0x12')]));}}else{_0x4aacc8=require(_0xc552('0x1b'))(_0x481416[_0xc552('0xe')][_0xc552('0xf')]());_0x4aacc8['error']('[EXEC]',util[_0xc552('0x1d')](_0xc552('0x1e'),_0x481416[_0xc552('0xe')][_0xc552('0xf')](),_0x481416[_0xc552('0x10')]));}}else{}}catch(_0x2c0135){console[_0xc552('0x1c')](_0x2c0135);}}}};
\ No newline at end of file
+var _0xa54e=['error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./vtiger','salesforce','zoho','vtiger','exec','includes','data1','toLowerCase','data2','Configurations','data3','queue','outbound','log','EVENT\x20UNKNOWN','zendesk','sugarcrm','freshdesk','desk','unknown\x20integration','../../../../config/logger'];(function(_0x3a85ab,_0x1f3525){var _0x32d91a=function(_0x216ab1){while(--_0x216ab1){_0x3a85ab['push'](_0x3a85ab['shift']());}};_0x32d91a(++_0x1f3525);}(_0xa54e,0x1d3));var _0xea54=function(_0xac56ce,_0xb73e4){_0xac56ce=_0xac56ce-0x0;var _0x5105e1=_0xa54e[_0xac56ce];return _0x5105e1;};'use strict';var _=require(_0xea54('0x0'));var util=require(_0xea54('0x1'));var zendesk=require(_0xea54('0x2'));var salesforce=require(_0xea54('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0xea54('0x4'));var zoho=require(_0xea54('0x5'));var desk=require(_0xea54('0x6'));var vtiger=require(_0xea54('0x7'));var integrations=['zendesk',_0xea54('0x8'),'sugarcrm','freshdesk',_0xea54('0x9'),'desk',_0xea54('0xa')];exports[_0xea54('0xb')]=function(_0x368436,_0x44ed80,_0x1971c9,_0x38b7d7,_0x7db7f8,_0x500c87){if(_0x1971c9){if(_[_0xea54('0xc')](integrations,_0x368436['data1']['toLowerCase']())){try{var _0x4aa031=null;var _0x1bc1c3='';var _0x2f1ed6=_0x1971c9[_0x368436[_0xea54('0xd')][_0xea54('0xe')]()];if(_0x2f1ed6){var _0x355055=_0x2f1ed6[_0x368436[_0xea54('0xf')]];if(_0x355055){var _0x3b8dd5=_['find'](_0x355055[_0xea54('0x10')],{'id':parseInt(_0x368436[_0xea54('0x11')],0xa)});if(_0x3b8dd5){if(_0x38b7d7){if(_0x7db7f8&&_0x44ed80[_0xea54('0x12')]){_0x1bc1c3=_0xea54('0x12');}else if(_0x44ed80['routeId']){_0x1bc1c3=_0xea54('0x13');}else{console[_0xea54('0x14')](_0xea54('0x15'),_0x44ed80);}}else{_0x1bc1c3='abandoned';}switch(_0x368436[_0xea54('0xd')][_0xea54('0xe')]()){case _0xea54('0x16'):zendesk[_0x1bc1c3](_0x368436,_0x44ed80,_0x3b8dd5,_0x38b7d7,_0x7db7f8,_0x355055,_0x500c87);break;case _0xea54('0x8'):salesforce[_0x1bc1c3](_0x368436,_0x44ed80,_0x3b8dd5,_0x38b7d7,_0x7db7f8,_0x355055,_0x500c87);break;case _0xea54('0x17'):sugarcrm[_0x1bc1c3](_0x368436,_0x44ed80,_0x3b8dd5,_0x38b7d7,_0x7db7f8,_0x355055,_0x500c87);break;case _0xea54('0x18'):freshdesk[_0x1bc1c3](_0x368436,_0x44ed80,_0x3b8dd5,_0x38b7d7,_0x7db7f8,_0x355055,_0x500c87);break;case _0xea54('0x9'):zoho[_0x1bc1c3](_0x368436,_0x44ed80,_0x3b8dd5,_0x38b7d7,_0x7db7f8,_0x355055,_0x500c87);break;case _0xea54('0x19'):desk[_0x1bc1c3](_0x368436,_0x44ed80,_0x3b8dd5,_0x38b7d7,_0x7db7f8,_0x355055,_0x500c87);break;case _0xea54('0xa'):vtiger[_0x1bc1c3](_0x368436,_0x44ed80,_0x3b8dd5,_0x38b7d7,_0x7db7f8,_0x355055,_0x500c87);break;default:console['log'](_0xea54('0x1a'));}}else{_0x4aa031=require(_0xea54('0x1b'))(_0x368436[_0xea54('0xd')][_0xea54('0xe')]());_0x4aa031[_0xea54('0x1c')](_0xea54('0x1d'),util[_0xea54('0x1e')](_0xea54('0x1f'),_0x368436[_0xea54('0xd')][_0xea54('0xe')](),_0x368436[_0xea54('0x11')]));}}else{_0x4aa031=require('../../../../config/logger')(_0x368436[_0xea54('0xd')][_0xea54('0xe')]());_0x4aa031[_0xea54('0x1c')](_0xea54('0x1d'),util[_0xea54('0x1e')](_0xea54('0x20'),_0x368436[_0xea54('0xd')]['toLowerCase'](),_0x368436[_0xea54('0xf')]));}}else{}}catch(_0x335170){console[_0xea54('0x1c')](_0x335170);}}}};
\ No newline at end of file
index c75b7f4..997ad8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71aa=['password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','calleridname','calleridnum','[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','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','[QUEUE]','stringify','outbound','recordingFormat','[OUTBOUND]','email','destcalleridname','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','%s/%s/e','Salesforce\x20account\x20type\x20not\x20recognized','abandoned','[ABANDONED]\x20Ticket\x20%s\x20created.','[ABANDONED]','lodash','request-promise','moment','bluebird','jsforce','util','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','emit','merge','utc','getString','Descriptions','sobject','Task','User','find','then','Email','Agent\x20%s\x20found.','resolve','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','Contact','execute','length','Lead','contact','lead','Phone','info','Enduser\x20with\x20phone\x20%s\x20found.','<unknown>','Caller\x20-\x20%s','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','No\x20Company','upperFirst','forEach','type','idField','content','variable','toString','customVariable','Variable','name','toLowerCase'];(function(_0x5d04ee,_0x2a38ca){var _0x4a666a=function(_0x1883e4){while(--_0x1883e4){_0x5d04ee['push'](_0x5d04ee['shift']());}};_0x4a666a(++_0x2a38ca);}(_0x71aa,0x94));var _0xa71a=function(_0x30a191,_0x38b23b){_0x30a191=_0x30a191-0x0;var _0xf6f720=_0x71aa[_0x30a191];return _0xf6f720;};'use strict';var _=require(_0xa71a('0x0'));var rp=require(_0xa71a('0x1'));var moment=require(_0xa71a('0x2'));var BPromise=require(_0xa71a('0x3'));var md5=require('md5');var jsforce=require(_0xa71a('0x4'));var util=require(_0xa71a('0x5'));var Redis=require(_0xa71a('0x6'));var intUtil=require(_0xa71a('0x7'));var config=require(_0xa71a('0x8'));var logger=require('../../../../config/logger')(_0xa71a('0x9'));config[_0xa71a('0xa')]=_[_0xa71a('0xb')](config[_0xa71a('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa71a('0xa')]));function emit(_0x1a71b8,_0x126565,_0x1be397){io['to'](_0x1a71b8)[_0xa71a('0xc')](_0x126565,_0x1be397);}function getTicket(_0x2a24ab,_0x56161d,_0x4d2816,_0x4b869c,_0x343fc9,_0x34e498,_0x3b4bda){var _0x153f73=_[_0xa71a('0xd')]({'OwnerId':_0x56161d['id'],'ActivityDate':moment[_0xa71a('0xe')](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0xa71a('0xf')](_0x4b869c['Subjects'],_0x343fc9,'\x20'),'Description':intUtil[_0xa71a('0xf')](_0x4b869c[_0xa71a('0x10')],_0x343fc9,'\x0a')},getCustomFields(_0x34e498,_0x343fc9));if(_0x4d2816){_0x153f73['WhoId']=_0x4d2816['id'];}return _0x3b4bda[_0xa71a('0x11')](_0xa71a('0x12'))['create'](_0x153f73);}function getUser(_0x55cb6f,_0x22ac04,_0x2373ea){var _0xa5466f={'Email':_0x22ac04};var _0x5c7752={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x2373ea['sobject'](_0xa71a('0x13'))[_0xa71a('0x14')](_0xa5466f,_0x5c7752)['execute']()[_0xa71a('0x15')](function(_0x1e18e3){if(_0x1e18e3['length']){var _0x11a044=_[_0xa71a('0x14')](_0x1e18e3,function(_0x3f95bf){return _0x3f95bf[_0xa71a('0x16')]===_0x22ac04;});if(_0x11a044){logger['info'](_0xa71a('0x17'),_0x22ac04);return BPromise[_0xa71a('0x18')]({'id':_0x11a044['Id'],'name':_0x11a044['Name']});}}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x22ac04);return _0x2373ea[_0xa71a('0x19')]()['then'](function(_0x4ebdd6){return BPromise[_0xa71a('0x18')]({'id':_0x4ebdd6[_0xa71a('0x1a')],'name':_0x4ebdd6[_0xa71a('0x1b')]});});}});}function getEndUser(_0x38105a,_0x240b35,_0xb76a59,_0x3a2911,_0xeeca42){var _0x1d7993={'Phone':_0x3a2911};var _0x11c0ca={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xa71a('0x18')]()[_0xa71a('0x15')](function(){logger['info'](_0xa71a('0x1c'),_0x3a2911,_0x240b35[_0xa71a('0x1d')]);switch(_0x240b35[_0xa71a('0x1d')]){case'contact_lead':return _0xeeca42[_0xa71a('0x11')](_0xa71a('0x1e'))[_0xa71a('0x14')](_0x1d7993,_0x11c0ca)[_0xa71a('0x1f')]()[_0xa71a('0x15')](function(_0x341766){if(_0x341766&&_0x341766[_0xa71a('0x20')]){return _0x341766;}else{return _0xeeca42[_0xa71a('0x11')](_0xa71a('0x21'))[_0xa71a('0x14')](_0x1d7993,_0x11c0ca);}});case _0xa71a('0x22'):return _0xeeca42['sobject'](_0xa71a('0x1e'))['find'](_0x1d7993,_0x11c0ca)[_0xa71a('0x1f')]();case _0xa71a('0x23'):return _0xeeca42[_0xa71a('0x11')](_0xa71a('0x21'))[_0xa71a('0x14')](_0x1d7993,_0x11c0ca);default:return null;}})[_0xa71a('0x15')](function(_0x58c7c6){if(_0x58c7c6&&_0x58c7c6[_0xa71a('0x20')]){var _0x5a5248=_['find'](_0x58c7c6,function(_0x2f4f90){return _0x2f4f90[_0xa71a('0x24')]===_0x3a2911;});if(_0x5a5248){return BPromise[_0xa71a('0x18')]({'id':_0x5a5248['Id'],'name':_0x5a5248['Name'],'phone':_0x5a5248[_0xa71a('0x24')]});}}})[_0xa71a('0x15')](function(_0x1762dc){if(_0x1762dc){logger[_0xa71a('0x25')](_0xa71a('0x26'),_0x3a2911);return BPromise[_0xa71a('0x18')](_0x1762dc);}else{logger[_0xa71a('0x25')]('Enduser\x20with\x20phone\x20%s\x20not\x20found.',_0x3a2911);var _0xb2b729={'LastName':_0xb76a59!==_0xa71a('0x27')?_0xb76a59:util['format'](_0xa71a('0x28'),_0x3a2911),'Phone':_0x3a2911};if(_0x240b35[_0xa71a('0x29')]){switch(_0x240b35['moduleCreate']){case _0xa71a('0x22'):logger[_0xa71a('0x25')](_0xa71a('0x2a'),_0x3a2911,_0x240b35[_0xa71a('0x29')]);break;case'lead':logger[_0xa71a('0x25')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x3a2911,_0x240b35[_0xa71a('0x29')]);_0xb2b729[_0xa71a('0x2b')]=_0xa71a('0x2c');break;default:return null;}}return _0xeeca42['sobject'](_[_0xa71a('0x2d')](_0x240b35['moduleCreate']))['create'](_0xb2b729);}});}function getCustomFields(_0x42b945,_0x1002d7){var _0x20d0d3={};if(_0x42b945[_0xa71a('0x20')]>0x0){_[_0xa71a('0x2e')](_0x42b945,function(_0x276071){if(_0x276071[_0xa71a('0x2f')]==='string'&&_0x276071['idField']){_0x20d0d3[_0x276071[_0xa71a('0x30')]]=_0x276071[_0xa71a('0x31')]['toString']();}else if(_0x276071['type']===_0xa71a('0x32')&&_0x276071['variableName']&&_0x276071[_0xa71a('0x30')]){_0x1002d7[_0x276071['variableName']]&&(_0x20d0d3[_0x276071[_0xa71a('0x30')]]=_0x1002d7[_0x276071['variableName']][_0xa71a('0x33')]());}else if(_0x276071[_0xa71a('0x2f')]===_0xa71a('0x34')&&_0x276071[_0xa71a('0x35')]&&_0x276071[_0xa71a('0x35')][_0xa71a('0x36')]&&_0x276071[_0xa71a('0x30')]){_0x1002d7[_0x276071[_0xa71a('0x35')][_0xa71a('0x36')]['toLowerCase']()]&&(_0x20d0d3[_0x276071[_0xa71a('0x30')]]=_0x1002d7[_0x276071[_0xa71a('0x35')][_0xa71a('0x36')][_0xa71a('0x37')]()][_0xa71a('0x33')]());}});}return _0x20d0d3;}function getConnection(_0x48ab2a){var _0x24ecf6=_0x48ab2a[_0xa71a('0x38')][_0xa71a('0x39')](_0x48ab2a[_0xa71a('0x3a')]);var _0x507715=new jsforce[(_0xa71a('0x3b'))]({'oauth2':{'loginUrl':_0x48ab2a[_0xa71a('0x3c')]||_0xa71a('0x3d'),'clientId':_0x48ab2a[_0xa71a('0x3e')],'clientSecret':_0x48ab2a[_0xa71a('0x3f')]}});return _0x507715[_0xa71a('0x40')](_0x48ab2a[_0xa71a('0x41')],_0x24ecf6)[_0xa71a('0x15')](function(){logger[_0xa71a('0x25')](_0xa71a('0x42'));return _0x507715;});}exports['queue']=function(_0x3f4c09,_0x2efc3a,_0x39a2f7,_0x3b3098,_0x5771d7,_0x1e2039){var _0x1ac3ab,_0x2daf40,_0x5063a8,_0x497038;_0x1e2039[_0xa71a('0x43')]=intUtil[_0xa71a('0x44')](_0x1e2039['serverUrl']);if(_0x5771d7&&_0x5771d7[_0xa71a('0x45')]){logger[_0xa71a('0x25')]('[QUEUE]',_0xa71a('0x46'));_0x2efc3a['recordingURL']=util[_0xa71a('0x47')](_0xa71a('0x48'),_0x1e2039[_0xa71a('0x43')],_0x2efc3a[_0xa71a('0x49')],md5(_0x2efc3a['uniqueid']));}else{_0x2efc3a[_0xa71a('0x4a')]='';}return getConnection(_0x1e2039)[_0xa71a('0x15')](function(_0x1984b3){_0x497038=_0x1984b3;return getUser(_0x1e2039,_0x3b3098['email'],_0x497038);})[_0xa71a('0x15')](function(_0x10bf98){_0x1ac3ab=_0x10bf98;return getEndUser(_0x1e2039,_0x39a2f7,_0x2efc3a[_0xa71a('0x4b')],_0x2efc3a[_0xa71a('0x4c')],_0x497038);})[_0xa71a('0x15')](function(_0x10bf1a){_0x2daf40=_0x10bf1a;return getTicket(_0x1e2039,_0x1ac3ab,_0x2daf40,_0x39a2f7,_0x2efc3a,_0x39a2f7['Fields'],_0x497038);})[_0xa71a('0x15')](function(_0xdbdb06){_0x5063a8=_0xdbdb06;logger[_0xa71a('0x25')](_0xa71a('0x4d'),_0x5063a8['id']);logger['info'](_0xa71a('0x4e'),_0x5063a8['id'],_0x3b3098[_0xa71a('0x36')],_0x1e2039[_0xa71a('0x2f')]);switch(_0x1e2039[_0xa71a('0x2f')]){case _0xa71a('0x4f'):emit(util[_0xa71a('0x47')](_0xa71a('0x50'),_0x3b3098[_0xa71a('0x36')]),_0xa71a('0x51'),{'recordId':_0x5063a8['id']});break;case _0xa71a('0x52'):emit(util[_0xa71a('0x47')](_0xa71a('0x50'),_0x3b3098['name']),'trigger:browser:url',{'uri':util[_0xa71a('0x47')]('%s/%s/e',_0x497038[_0xa71a('0x53')],_0x5063a8['id'])});break;default:logger[_0xa71a('0x54')](_0xa71a('0x55'));}})[_0xa71a('0x56')](function(_0x57b3c5){logger[_0xa71a('0x54')](_0xa71a('0x57'),JSON[_0xa71a('0x58')](_0x57b3c5));});};exports[_0xa71a('0x59')]=function(_0x4e988d,_0x364ef0,_0x34a5fd,_0x53b629,_0x2e67af,_0x167462,_0x2a6a7a){var _0x385092,_0x29d35b,_0x2a7778,_0x158b2b;_0x167462[_0xa71a('0x43')]=intUtil[_0xa71a('0x44')](_0x167462['serverUrl']);if(_0x2a6a7a&&_0x2a6a7a['recordingFormat']&&_0x2a6a7a[_0xa71a('0x5a')]!=='none'){logger['info'](_0xa71a('0x5b'),_0xa71a('0x46'));_0x364ef0[_0xa71a('0x4a')]=util['format'](_0xa71a('0x48'),_0x167462['serverUrl'],_0x364ef0[_0xa71a('0x49')],md5(_0x364ef0[_0xa71a('0x49')]));}return getConnection(_0x167462)[_0xa71a('0x15')](function(_0x28ed59){_0x158b2b=_0x28ed59;return getUser(_0x167462,_0x53b629[_0xa71a('0x5c')],_0x158b2b);})['then'](function(_0x54e2ed){_0x385092=_0x54e2ed;return getEndUser(_0x167462,_0x34a5fd,_0x364ef0[_0xa71a('0x5d')],_0x364ef0[_0xa71a('0x5e')],_0x158b2b);})[_0xa71a('0x15')](function(_0x2c6b01){_0x29d35b=_0x2c6b01;return getTicket(_0x167462,_0x385092,_0x29d35b,_0x34a5fd,_0x364ef0,_0x34a5fd[_0xa71a('0x5f')],_0x158b2b);})[_0xa71a('0x15')](function(_0x22156a){_0x2a7778=_0x22156a;logger['info'](_0xa71a('0x60'),_0x2a7778['id']);logger[_0xa71a('0x25')]('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x2a7778['id'],_0x53b629['name'],_0x167462['type']);switch(_0x167462[_0xa71a('0x2f')]){case _0xa71a('0x4f'):emit(util[_0xa71a('0x47')](_0xa71a('0x50'),_0x53b629[_0xa71a('0x36')]),_0xa71a('0x51'),{'recordId':_0x2a7778['id']});break;case _0xa71a('0x52'):emit(util['format'](_0xa71a('0x50'),_0x53b629[_0xa71a('0x36')]),'trigger:browser:url',{'uri':util[_0xa71a('0x47')](_0xa71a('0x61'),_0x158b2b[_0xa71a('0x53')],_0x2a7778['id'])});break;default:logger['error'](_0xa71a('0x5b'),_0xa71a('0x62'));}})[_0xa71a('0x56')](function(_0x16e5b6){logger[_0xa71a('0x54')]('[OUTBOUND]',JSON[_0xa71a('0x58')](_0x16e5b6));});};exports[_0xa71a('0x63')]=function(_0x26a44e,_0x4607f1,_0x234c18,_0x265114,_0x281ff7,_0x108045){var _0x24c33c,_0x50e10a,_0xdddbba,_0x18c784;_0x108045['serverUrl']=intUtil[_0xa71a('0x44')](_0x108045[_0xa71a('0x43')]);if(_0x281ff7&&_0x281ff7[_0xa71a('0x45')]){logger[_0xa71a('0x25')]('[ABANDONED]',_0xa71a('0x46'));_0x4607f1[_0xa71a('0x4a')]=util[_0xa71a('0x47')](_0xa71a('0x48'),_0x108045[_0xa71a('0x43')],_0x4607f1[_0xa71a('0x49')],md5(_0x4607f1[_0xa71a('0x49')]));}else{_0x4607f1['recordingURL']='';}return getConnection(_0x108045)['then'](function(_0x57d952){_0x18c784=_0x57d952;return getUser(_0x108045,_0x265114['email'],_0x18c784);})['then'](function(_0x15cf2a){_0x24c33c=_0x15cf2a;return getEndUser(_0x108045,_0x234c18,_0x4607f1['calleridname'],_0x4607f1[_0xa71a('0x4c')],_0x18c784);})['then'](function(_0x34117b){_0x50e10a=_0x34117b;return getTicket(_0x108045,_0x24c33c,_0x50e10a,_0x234c18,_0x4607f1,_0x234c18[_0xa71a('0x5f')],_0x18c784);})[_0xa71a('0x15')](function(_0xa9853d){_0xdddbba=_0xa9853d;logger[_0xa71a('0x25')](_0xa71a('0x64'),_0xdddbba['id']);logger[_0xa71a('0x25')]('[ABANDONED]\x20Integration\x20account\x20type\x20%s.',_0x108045[_0xa71a('0x2f')]);})['catch'](function(_0x4f6737){logger[_0xa71a('0x54')](_0xa71a('0x65'),JSON[_0xa71a('0x58')](_0x4f6737));});};
\ No newline at end of file
+var _0xfb53=['upperFirst','type','string','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','concat','securityToken','remoteUri','clientId','clientSecret','login','username','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','trigger:salesforce:display','newTab','trigger:browser:url','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','error','outbound','recordingFormat','[OUTBOUND]','email','destcalleridname','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','%s/%s/e','Salesforce\x20account\x20type\x20not\x20recognized','stringify','abandoned','[ABANDONED]\x20Ticket\x20%s\x20created.','[ABANDONED]\x20Integration\x20account\x20type\x20%s.','[ABANDONED]','lodash','bluebird','md5','util','./util','../../../../config/environment','../../../../config/logger','salesforce','defaults','redis','socket.io-emitter','emit','getString','Descriptions','WhoId','sobject','Task','create','User','find','then','Email','info','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','contact','Contact','execute','lead','Lead','length','Phone','Enduser\x20with\x20phone\x20%s\x20found.','Enduser\x20with\x20phone\x20%s\x20not\x20found.','<unknown>','format','Caller\x20-\x20%s','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','Company','No\x20Company'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0xfb53,0x107));var _0x3fb5=function(_0x37d4b1,_0x96ed82){_0x37d4b1=_0x37d4b1-0x0;var _0x25868e=_0xfb53[_0x37d4b1];return _0x25868e;};'use strict';var _=require(_0x3fb5('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3fb5('0x1'));var md5=require(_0x3fb5('0x2'));var jsforce=require('jsforce');var util=require(_0x3fb5('0x3'));var Redis=require('ioredis');var intUtil=require(_0x3fb5('0x4'));var config=require(_0x3fb5('0x5'));var logger=require(_0x3fb5('0x6'))(_0x3fb5('0x7'));config['redis']=_[_0x3fb5('0x8')](config[_0x3fb5('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x3fb5('0xa'))(new Redis(config[_0x3fb5('0x9')]));function emit(_0x2977a0,_0x4d6c52,_0x552da3){io['to'](_0x2977a0)[_0x3fb5('0xb')](_0x4d6c52,_0x552da3);}function getTicket(_0x5e8819,_0x366ce1,_0x16e829,_0x5cbd5a,_0x541ba9,_0x5700ba,_0x480218){var _0xf52a6c=_['merge']({'OwnerId':_0x366ce1['id'],'ActivityDate':moment['utc'](),'IsReminderSet':![],'IsRecurrence':![],'Subject':intUtil[_0x3fb5('0xc')](_0x5cbd5a['Subjects'],_0x541ba9,'\x20'),'Description':intUtil[_0x3fb5('0xc')](_0x5cbd5a[_0x3fb5('0xd')],_0x541ba9,'\x0a')},getCustomFields(_0x5700ba,_0x541ba9));if(_0x16e829){_0xf52a6c[_0x3fb5('0xe')]=_0x16e829['id'];}return _0x480218[_0x3fb5('0xf')](_0x3fb5('0x10'))[_0x3fb5('0x11')](_0xf52a6c);}function getUser(_0x45ca17,_0xb2be6b,_0x2861de){var _0x106b60={'Email':_0xb2be6b};var _0x3e4ba6={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x2861de[_0x3fb5('0xf')](_0x3fb5('0x12'))[_0x3fb5('0x13')](_0x106b60,_0x3e4ba6)['execute']()[_0x3fb5('0x14')](function(_0x254b8b){if(_0x254b8b['length']){var _0x3045ad=_[_0x3fb5('0x13')](_0x254b8b,function(_0xf3dfed){return _0xf3dfed[_0x3fb5('0x15')]===_0xb2be6b;});if(_0x3045ad){logger[_0x3fb5('0x16')](_0x3fb5('0x17'),_0xb2be6b);return BPromise[_0x3fb5('0x18')]({'id':_0x3045ad['Id'],'name':_0x3045ad[_0x3fb5('0x19')]});}}else{logger['info'](_0x3fb5('0x1a'),_0xb2be6b);return _0x2861de[_0x3fb5('0x1b')]()[_0x3fb5('0x14')](function(_0x22f203){return BPromise[_0x3fb5('0x18')]({'id':_0x22f203[_0x3fb5('0x1c')],'name':_0x22f203[_0x3fb5('0x1d')]});});}});}function getEndUser(_0x33c1be,_0x333553,_0x1f64c8,_0x222c80,_0x150d68){var _0x368b26={'Phone':_0x222c80};var _0x201ac5={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x3fb5('0x18')]()[_0x3fb5('0x14')](function(){logger[_0x3fb5('0x16')](_0x3fb5('0x1e'),_0x222c80,_0x333553[_0x3fb5('0x1f')]);switch(_0x333553[_0x3fb5('0x1f')]){case _0x3fb5('0x20'):return _0x150d68[_0x3fb5('0xf')]('Contact')[_0x3fb5('0x13')](_0x368b26,_0x201ac5)['execute']()[_0x3fb5('0x14')](function(_0x116bf2){if(_0x116bf2&&_0x116bf2['length']){return _0x116bf2;}else{return _0x150d68[_0x3fb5('0xf')]('Lead')['find'](_0x368b26,_0x201ac5);}});case _0x3fb5('0x21'):return _0x150d68[_0x3fb5('0xf')](_0x3fb5('0x22'))[_0x3fb5('0x13')](_0x368b26,_0x201ac5)[_0x3fb5('0x23')]();case _0x3fb5('0x24'):return _0x150d68[_0x3fb5('0xf')](_0x3fb5('0x25'))[_0x3fb5('0x13')](_0x368b26,_0x201ac5);default:return null;}})[_0x3fb5('0x14')](function(_0x2baa56){if(_0x2baa56&&_0x2baa56[_0x3fb5('0x26')]){var _0x45decf=_[_0x3fb5('0x13')](_0x2baa56,function(_0x449ee1){return _0x449ee1[_0x3fb5('0x27')]===_0x222c80;});if(_0x45decf){return BPromise[_0x3fb5('0x18')]({'id':_0x45decf['Id'],'name':_0x45decf[_0x3fb5('0x19')],'phone':_0x45decf[_0x3fb5('0x27')]});}}})['then'](function(_0x39bd6d){if(_0x39bd6d){logger[_0x3fb5('0x16')](_0x3fb5('0x28'),_0x222c80);return BPromise[_0x3fb5('0x18')](_0x39bd6d);}else{logger[_0x3fb5('0x16')](_0x3fb5('0x29'),_0x222c80);var _0x4284bb={'LastName':_0x1f64c8!==_0x3fb5('0x2a')?_0x1f64c8:util[_0x3fb5('0x2b')](_0x3fb5('0x2c'),_0x222c80),'Phone':_0x222c80};if(_0x333553[_0x3fb5('0x2d')]){switch(_0x333553[_0x3fb5('0x2d')]){case _0x3fb5('0x21'):logger['info'](_0x3fb5('0x2e'),_0x222c80,_0x333553['moduleCreate']);break;case _0x3fb5('0x24'):logger[_0x3fb5('0x16')](_0x3fb5('0x2e'),_0x222c80,_0x333553[_0x3fb5('0x2d')]);_0x4284bb[_0x3fb5('0x2f')]=_0x3fb5('0x30');break;default:return null;}}return _0x150d68[_0x3fb5('0xf')](_[_0x3fb5('0x31')](_0x333553['moduleCreate']))['create'](_0x4284bb);}});}function getCustomFields(_0xe6212b,_0x453e45){var _0x320f72={};if(_0xe6212b['length']>0x0){_['forEach'](_0xe6212b,function(_0x5e35f9){if(_0x5e35f9[_0x3fb5('0x32')]===_0x3fb5('0x33')&&_0x5e35f9[_0x3fb5('0x34')]){_0x320f72[_0x5e35f9['idField']]=_0x5e35f9[_0x3fb5('0x35')][_0x3fb5('0x36')]();}else if(_0x5e35f9[_0x3fb5('0x32')]==='variable'&&_0x5e35f9[_0x3fb5('0x37')]&&_0x5e35f9['idField']){_0x453e45[_0x5e35f9['variableName']]&&(_0x320f72[_0x5e35f9[_0x3fb5('0x34')]]=_0x453e45[_0x5e35f9[_0x3fb5('0x37')]][_0x3fb5('0x36')]());}else if(_0x5e35f9[_0x3fb5('0x32')]===_0x3fb5('0x38')&&_0x5e35f9['Variable']&&_0x5e35f9[_0x3fb5('0x39')]['name']&&_0x5e35f9[_0x3fb5('0x34')]){_0x453e45[_0x5e35f9[_0x3fb5('0x39')][_0x3fb5('0x3a')][_0x3fb5('0x3b')]()]&&(_0x320f72[_0x5e35f9[_0x3fb5('0x34')]]=_0x453e45[_0x5e35f9['Variable']['name']['toLowerCase']()][_0x3fb5('0x36')]());}});}return _0x320f72;}function getConnection(_0x1ee871){var _0x9561f1=_0x1ee871['password'][_0x3fb5('0x3c')](_0x1ee871[_0x3fb5('0x3d')]);var _0x174640=new jsforce['Connection']({'oauth2':{'loginUrl':_0x1ee871[_0x3fb5('0x3e')]||'https://login.salesforce.com','clientId':_0x1ee871[_0x3fb5('0x3f')],'clientSecret':_0x1ee871[_0x3fb5('0x40')]}});return _0x174640[_0x3fb5('0x41')](_0x1ee871[_0x3fb5('0x42')],_0x9561f1)[_0x3fb5('0x14')](function(){logger[_0x3fb5('0x16')]('Connection\x20established.');return _0x174640;});}exports[_0x3fb5('0x43')]=function(_0x42b024,_0x2d48c4,_0x24aa0e,_0x25f4a4,_0x27193b,_0x51a282){var _0x585923,_0x2e54f0,_0x4587d7,_0x3ed6fa;_0x51a282['serverUrl']=intUtil[_0x3fb5('0x44')](_0x51a282[_0x3fb5('0x45')]);if(_0x27193b&&_0x27193b[_0x3fb5('0x46')]){logger[_0x3fb5('0x16')](_0x3fb5('0x47'),_0x3fb5('0x48'));_0x2d48c4[_0x3fb5('0x49')]=util['format'](_0x3fb5('0x4a'),_0x51a282[_0x3fb5('0x45')],_0x2d48c4[_0x3fb5('0x4b')],md5(_0x2d48c4[_0x3fb5('0x4b')]));}else{_0x2d48c4[_0x3fb5('0x49')]='';}return getConnection(_0x51a282)[_0x3fb5('0x14')](function(_0x1367d1){_0x3ed6fa=_0x1367d1;return getUser(_0x51a282,_0x25f4a4['email'],_0x3ed6fa);})[_0x3fb5('0x14')](function(_0x330756){_0x585923=_0x330756;return getEndUser(_0x51a282,_0x24aa0e,_0x2d48c4[_0x3fb5('0x4c')],_0x2d48c4[_0x3fb5('0x4d')],_0x3ed6fa);})[_0x3fb5('0x14')](function(_0x2b1713){_0x2e54f0=_0x2b1713;return getTicket(_0x51a282,_0x585923,_0x2e54f0,_0x24aa0e,_0x2d48c4,_0x24aa0e[_0x3fb5('0x4e')],_0x3ed6fa);})[_0x3fb5('0x14')](function(_0x4cf1da){_0x4587d7=_0x4cf1da;logger[_0x3fb5('0x16')](_0x3fb5('0x4f'),_0x4587d7['id']);logger[_0x3fb5('0x16')](_0x3fb5('0x50'),_0x4587d7['id'],_0x25f4a4[_0x3fb5('0x3a')],_0x51a282['type']);switch(_0x51a282[_0x3fb5('0x32')]){case _0x3fb5('0x51'):emit(util[_0x3fb5('0x2b')]('user:%s',_0x25f4a4[_0x3fb5('0x3a')]),_0x3fb5('0x52'),{'recordId':_0x4587d7['id']});break;case _0x3fb5('0x53'):emit(util[_0x3fb5('0x2b')]('user:%s',_0x25f4a4[_0x3fb5('0x3a')]),_0x3fb5('0x54'),{'uri':util['format']('%s/%s/e',_0x3ed6fa[_0x3fb5('0x55')],_0x4587d7['id'])});break;default:logger['error'](_0x3fb5('0x56'));}})[_0x3fb5('0x57')](function(_0x298454){logger[_0x3fb5('0x58')](_0x3fb5('0x47'),JSON['stringify'](_0x298454));});};exports[_0x3fb5('0x59')]=function(_0x196a7f,_0x1fcff0,_0x3e1675,_0x1c1d95,_0x208fe7,_0x43fe60,_0x36f74f){var _0x56424f,_0x2e0cd7,_0x5f5210,_0xa47794;_0x43fe60[_0x3fb5('0x45')]=intUtil[_0x3fb5('0x44')](_0x43fe60['serverUrl']);if(_0x36f74f&&_0x36f74f[_0x3fb5('0x5a')]&&_0x36f74f['recordingFormat']!=='none'){logger[_0x3fb5('0x16')](_0x3fb5('0x5b'),_0x3fb5('0x48'));_0x1fcff0['recordingURL']=util[_0x3fb5('0x2b')](_0x3fb5('0x4a'),_0x43fe60[_0x3fb5('0x45')],_0x1fcff0[_0x3fb5('0x4b')],md5(_0x1fcff0[_0x3fb5('0x4b')]));}return getConnection(_0x43fe60)[_0x3fb5('0x14')](function(_0x48d6cb){_0xa47794=_0x48d6cb;return getUser(_0x43fe60,_0x1c1d95[_0x3fb5('0x5c')],_0xa47794);})[_0x3fb5('0x14')](function(_0x411ef3){_0x56424f=_0x411ef3;return getEndUser(_0x43fe60,_0x3e1675,_0x1fcff0[_0x3fb5('0x5d')],_0x1fcff0['destcalleridnum'],_0xa47794);})[_0x3fb5('0x14')](function(_0x57b05f){_0x2e0cd7=_0x57b05f;return getTicket(_0x43fe60,_0x56424f,_0x2e0cd7,_0x3e1675,_0x1fcff0,_0x3e1675[_0x3fb5('0x4e')],_0xa47794);})[_0x3fb5('0x14')](function(_0x5386b0){_0x5f5210=_0x5386b0;logger[_0x3fb5('0x16')](_0x3fb5('0x5e'),_0x5f5210['id']);logger[_0x3fb5('0x16')](_0x3fb5('0x5f'),_0x5f5210['id'],_0x1c1d95['name'],_0x43fe60[_0x3fb5('0x32')]);switch(_0x43fe60[_0x3fb5('0x32')]){case _0x3fb5('0x51'):emit(util['format'](_0x3fb5('0x60'),_0x1c1d95['name']),_0x3fb5('0x52'),{'recordId':_0x5f5210['id']});break;case'newTab':emit(util[_0x3fb5('0x2b')](_0x3fb5('0x60'),_0x1c1d95[_0x3fb5('0x3a')]),_0x3fb5('0x54'),{'uri':util['format'](_0x3fb5('0x61'),_0xa47794[_0x3fb5('0x55')],_0x5f5210['id'])});break;default:logger[_0x3fb5('0x58')](_0x3fb5('0x5b'),_0x3fb5('0x62'));}})[_0x3fb5('0x57')](function(_0x554ba2){logger['error'](_0x3fb5('0x5b'),JSON[_0x3fb5('0x63')](_0x554ba2));});};exports[_0x3fb5('0x64')]=function(_0x43eea1,_0x31b730,_0x5058d0,_0x1ff2e1,_0x446194,_0x44b2c9){var _0x5cf746,_0x13a612,_0x1c128a,_0x382935;_0x44b2c9[_0x3fb5('0x45')]=intUtil[_0x3fb5('0x44')](_0x44b2c9[_0x3fb5('0x45')]);if(_0x446194&&_0x446194[_0x3fb5('0x46')]){logger['info']('[ABANDONED]',_0x3fb5('0x48'));_0x31b730[_0x3fb5('0x49')]=util[_0x3fb5('0x2b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x44b2c9[_0x3fb5('0x45')],_0x31b730['uniqueid'],md5(_0x31b730[_0x3fb5('0x4b')]));}else{_0x31b730[_0x3fb5('0x49')]='';}return getConnection(_0x44b2c9)[_0x3fb5('0x14')](function(_0x547df7){_0x382935=_0x547df7;return getUser(_0x44b2c9,_0x1ff2e1[_0x3fb5('0x5c')],_0x382935);})['then'](function(_0x4c9399){_0x5cf746=_0x4c9399;return getEndUser(_0x44b2c9,_0x5058d0,_0x31b730[_0x3fb5('0x4c')],_0x31b730[_0x3fb5('0x4d')],_0x382935);})[_0x3fb5('0x14')](function(_0x432fce){_0x13a612=_0x432fce;return getTicket(_0x44b2c9,_0x5cf746,_0x13a612,_0x5058d0,_0x31b730,_0x5058d0[_0x3fb5('0x4e')],_0x382935);})[_0x3fb5('0x14')](function(_0x1a46af){_0x1c128a=_0x1a46af;logger[_0x3fb5('0x16')](_0x3fb5('0x65'),_0x1c128a['id']);logger[_0x3fb5('0x16')](_0x3fb5('0x66'),_0x44b2c9[_0x3fb5('0x32')]);})[_0x3fb5('0x57')](function(_0x4192d4){logger[_0x3fb5('0x58')](_0x3fb5('0x67'),JSON[_0x3fb5('0x63')](_0x4192d4));});};
\ No newline at end of file
index e16cd1d..3320220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','catch','error','stripTrailingSlash','recordingFormat','none','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','destcalleridnum','The\x20Ticket\x20ID\x20is:','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','[OUTBOUND]','[ABANDONED]','lodash','request-promise','bluebird','md5','ioredis','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','name','getString','Subjects','assigned_user_id','created_by','Descriptions','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','Contacts','length','forEach','variableName','push','JSON','stringify','Calls','format','apiKey','toString','base64','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','find','entry_list','user_name','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','get_entry_list','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','set_entry','first_name','<unknown>','then','Enduser\x20created.','debug','[HTTP]','merge','map','type','nameField','toLowerCase','content','string','idField','customField','custom_fields','variable','customVariable','Variable','login','username','password','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','queue','remoteUri','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','users','contacts'];(function(_0x3a460f,_0x38dc28){var _0x20a09c=function(_0x53e6fc){while(--_0x53e6fc){_0x3a460f['push'](_0x3a460f['shift']());}};_0x20a09c(++_0x38dc28);}(_0x2542,0x169));var _0x2254=function(_0x4f85a3,_0x4bcfd1){_0x4f85a3=_0x4f85a3-0x0;var _0x4ff770=_0x2542[_0x4f85a3];return _0x4ff770;};'use strict';var _=require(_0x2254('0x0'));var rp=require(_0x2254('0x1'));var BPromise=require(_0x2254('0x2'));var md5=require(_0x2254('0x3'));var util=require('util');var Redis=require(_0x2254('0x4'));var intUtil=require('./util');var config=require(_0x2254('0x5'));var logger=require(_0x2254('0x6'))(_0x2254('0x7'));config[_0x2254('0x8')]=_[_0x2254('0x9')](config['redis'],{'host':_0x2254('0xa'),'port':0x18eb});var io=require(_0x2254('0xb'))(new Redis(config[_0x2254('0x8')]));var def={'method':_0x2254('0xc'),'json':!![]};function emit(_0x1637ad,_0x477b47,_0x263459){io['to'](_0x1637ad)[_0x2254('0xd')](_0x477b47,_0x263459);}function getTicket(_0xb395da,_0x1ae415,_0x38fb2b,_0x5b1ab9,_0x336e14,_0x2655ea,_0x506abe){logger[_0x2254('0xe')]('Creating\x20new\x20ticket...');var _0x524fad=new Date();var _0xe4fc71=[{'name':_0x2254('0xf'),'value':intUtil[_0x2254('0x10')](_0x5b1ab9[_0x2254('0x11')],_0x336e14,'\x20')},{'name':_0x2254('0x12'),'value':_0x1ae415['id']},{'name':_0x2254('0x13'),'value':_0x1ae415['id']},{'name':'description','value':intUtil[_0x2254('0x10')](_0x5b1ab9[_0x2254('0x14')],_0x336e14,'\x0a')},{'name':'date_start','value':_0x524fad[_0x2254('0x15')]()[_0x2254('0x16')](0x0,0x13)[_0x2254('0x17')]('T','\x20')},{'name':_0x2254('0x18'),'value':'0'},{'name':_0x2254('0x19'),'value':'15'},{'name':_0x2254('0x1a'),'value':_0x38fb2b['id']},{'name':'parent_type','value':_0x2254('0x1b')},{'name':'parent_name','value':_0x38fb2b[_0x2254('0xf')]}];if(_0x2655ea[_0x2254('0x1c')]){_[_0x2254('0x1d')](_0x2655ea,function(_0x25f8b2){if(_0x336e14[_0x25f8b2[_0x2254('0x1e')]]){_0xe4fc71[_0x2254('0x1f')]({'name':_0x25f8b2['idField'],'value':_0x336e14[_0x25f8b2['variableName']]});}});}return request({'form':{'method':'set_entry','input_type':_0x2254('0x20'),'response_type':_0x2254('0x20'),'rest_data':JSON[_0x2254('0x21')]({'session':_0x506abe['id'],'module_name':_0x2254('0x22'),'name_value_list':_0xe4fc71})}});}function getAuth(_0x2801d9){return util[_0x2254('0x23')]('Basic\x20%s',new Buffer(_0x2801d9[_0x2254('0x24')]+':X')[_0x2254('0x25')](_0x2254('0x26')));}function getServerInfo(_0x576369){return request({'form':{'method':'get_server_info','input_type':'JSON','response_type':_0x2254('0x20'),'rest_data':JSON[_0x2254('0x21')]({'session':_0x576369['id']})}});}function getUser(_0xf88b56,_0x56b91e,_0x5713e4){logger['info']('Getting\x20agent\x20with\x20name',_0x56b91e);return request({'form':{'method':'get_entry_list','input_type':'JSON','response_type':_0x2254('0x20'),'rest_data':JSON[_0x2254('0x21')]({'session':_0x5713e4['id'],'module_name':_0x2254('0x27'),'query':util[_0x2254('0x23')](_0x2254('0x28'),_0x56b91e),'order_by':'','offset':'0','select_fields':['id',_0x2254('0xf'),'user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x1ada42){if(_0x1ada42['entry_list'][_0x2254('0x1c')]){var _0x141dc5=_[_0x2254('0x29')](_0x1ada42[_0x2254('0x2a')],function(_0x19043b){return _0x19043b['name_value_list'][_0x2254('0x2b')][_0x2254('0x2c')]===_0x56b91e;});if(_0x141dc5){logger[_0x2254('0xe')](_0x2254('0x2d'));return BPromise[_0x2254('0x2e')]({'id':_0x141dc5[_0x2254('0x2f')]['id'][_0x2254('0x2c')],'name':_0x141dc5[_0x2254('0x2f')][_0x2254('0xf')][_0x2254('0x2c')]});}}else{logger[_0x2254('0xe')](_0x2254('0x30'));return BPromise[_0x2254('0x2e')]({'id':_0x5713e4[_0x2254('0x2f')][_0x2254('0x31')]['id'],'name':_0x5713e4[_0x2254('0x2f')][_0x2254('0x2b')]['id']});}});}function getEndUser(_0x291894,_0x2f32f8,_0x4e3658,_0xe29526){logger[_0x2254('0xe')](_0x2254('0x32'),_0x4e3658);return request({'form':{'method':_0x2254('0x33'),'input_type':_0x2254('0x20'),'response_type':_0x2254('0x20'),'rest_data':JSON[_0x2254('0x21')]({'session':_0xe29526['id'],'module_name':_0x2254('0x1b'),'query':util[_0x2254('0x23')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x4e3658),'order_by':'','offset':'0','select_fields':['id',_0x2254('0xf'),_0x2254('0x34')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x240d4e){if(_0x240d4e[_0x2254('0x2a')][_0x2254('0x1c')]){var _0x16d8f3=_['find'](_0x240d4e['entry_list'],function(_0x20409d){return _0x20409d['name_value_list'][_0x2254('0x34')][_0x2254('0x2c')]===_0x4e3658;});if(_0x16d8f3){logger[_0x2254('0xe')](_0x2254('0x35'));return BPromise[_0x2254('0x2e')]({'id':_0x16d8f3[_0x2254('0x2f')]['id'][_0x2254('0x2c')],'name':_0x16d8f3['name_value_list'][_0x2254('0xf')][_0x2254('0x2c')],'phone':_0x16d8f3[_0x2254('0x2f')][_0x2254('0x34')][_0x2254('0x2c')]});}}else{logger[_0x2254('0xe')](_0x2254('0x36'));return request({'form':{'method':_0x2254('0x37'),'input_type':_0x2254('0x20'),'response_type':_0x2254('0x20'),'rest_data':JSON['stringify']({'session':_0xe29526['id'],'module_name':_0x2254('0x1b'),'name_value_list':[{'name':_0x2254('0x38'),'value':_0x2f32f8!==_0x2254('0x39')?_0x2f32f8:util[_0x2254('0x23')]('Caller\x20-\x20%s',_0x4e3658)},{'name':_0x2254('0x34'),'value':_0x4e3658}]})}})[_0x2254('0x3a')](function(_0x457625){logger[_0x2254('0xe')](_0x2254('0x3b'));return BPromise[_0x2254('0x2e')]({'id':_0x457625['id'],'name':_0x457625[_0x2254('0x2a')][_0x2254('0x38')]['value'],'phone':_0x457625[_0x2254('0x2a')]['phone_home'][_0x2254('0x2c')]});});}});}function request(_0x19b580){logger[_0x2254('0x3c')](_0x2254('0x3d'),JSON[_0x2254('0x21')](_0x19b580));return rp(_[_0x2254('0x3e')](def,_0x19b580));}function getTags(_0x1c9a27,_0x568ec9){var _0x3025ee=[];if(_0x1c9a27&&_0x1c9a27[_0x2254('0x1c')]>0x0){_0x3025ee=_[_0x2254('0x3f')](_0x1c9a27,_0x568ec9);}return _0x3025ee;}function getCustomFields(_0x17d478,_0x40d4da){var _0x57cda2=[];var _0x22bb98={'custom_fields':[]};if(_0x17d478[_0x2254('0x1c')]>0x0){_[_0x2254('0x1d')](_0x17d478,function(_0x135ed8){if(_0x135ed8[_0x2254('0x40')]==='string'&&_0x135ed8[_0x2254('0x41')]&&!_0x135ed8['customField']){_0x22bb98[_0x135ed8[_0x2254('0x41')][_0x2254('0x42')]()]=_0x135ed8[_0x2254('0x43')][_0x2254('0x25')]();}else if(_0x135ed8[_0x2254('0x40')]===_0x2254('0x44')&&_0x135ed8[_0x2254('0x45')]&&_0x135ed8[_0x2254('0x46')]){_0x22bb98[_0x2254('0x47')][_0x2254('0x1f')]({'id':_0x135ed8[_0x2254('0x45')],'value':_0x135ed8[_0x2254('0x43')][_0x2254('0x25')]()});}else if(_0x135ed8['type']===_0x2254('0x48')&&_0x135ed8[_0x2254('0x1e')]&&_0x135ed8[_0x2254('0x45')]&&_0x135ed8['customField']){_0x40d4da[_0x135ed8[_0x2254('0x1e')]]&&_0x22bb98[_0x2254('0x47')][_0x2254('0x1f')]({'id':_0x135ed8[_0x2254('0x45')],'value':_0x40d4da[_0x135ed8[_0x2254('0x1e')]][_0x2254('0x25')]()});}else if(_0x135ed8[_0x2254('0x40')]===_0x2254('0x49')&&_0x135ed8[_0x2254('0x4a')]&&_0x135ed8['Variable'][_0x2254('0xf')]&&_0x135ed8[_0x2254('0x45')]&&_0x135ed8[_0x2254('0x46')]){_0x40d4da[_0x135ed8[_0x2254('0x4a')][_0x2254('0xf')][_0x2254('0x42')]()]&&_0x22bb98[_0x2254('0x47')][_0x2254('0x1f')]({'id':_0x135ed8[_0x2254('0x45')],'value':_0x40d4da[_0x135ed8[_0x2254('0x4a')]['name'][_0x2254('0x42')]()][_0x2254('0x25')]()});}});}return _0x22bb98;}function getConnection(_0x5235b7){return request({'method':_0x2254('0xc'),'form':{'method':_0x2254('0x4b'),'input_type':_0x2254('0x20'),'response_type':_0x2254('0x20'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x5235b7[_0x2254('0x4c')],'password':_0x5235b7[_0x2254('0x4d')],'encryption':'PLAIN'},'application':_0x2254('0x4e')})}})[_0x2254('0x3a')](function(_0x23014b){var _0x43bb88=_0x23014b;if(_0x43bb88['id']){def['sessionID']=_0x43bb88['id'];return BPromise[_0x2254('0x2e')](_0x43bb88);}else{throw new Error(util[_0x2254('0x23')](_0x2254('0x4f'),_0x5235b7['id']));}});}function setRelationship(_0x4ba6ef,_0x4cc18a,_0x31dbba,_0x366de4){return request({'form':{'method':'set_relationship','input_type':_0x2254('0x20'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x4ba6ef['id'],'module_name':_0x2254('0x22'),'module_id':_0x31dbba['id'],'link_field_name':_0x366de4,'related_ids':[_0x4cc18a['id']]})}});}exports[_0x2254('0x50')]=function(_0x3be0f3,_0x2bfec4,_0x3c6f6c,_0x593f63,_0x5eceb9,_0x1bd988){var _0x5e3fbc,_0x10a8db,_0x28a7c6,_0x20bcc8;_0x1bd988[_0x2254('0x51')]=intUtil['stripTrailingSlash'](_0x1bd988[_0x2254('0x51')]);_0x1bd988[_0x2254('0x52')]=intUtil['stripTrailingSlash'](_0x1bd988['serverUrl']);def[_0x2254('0x53')]=util['format'](_0x2254('0x54'),_0x1bd988[_0x2254('0x51')]);if(_0x5eceb9&&_0x5eceb9[_0x2254('0x55')]){logger[_0x2254('0xe')](_0x2254('0x56'),'Recording\x20is\x20enabled!');_0x2bfec4['recordingURL']=util[_0x2254('0x23')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1bd988[_0x2254('0x52')],_0x2bfec4['uniqueid'],md5(_0x2bfec4['uniqueid']));}else{_0x2bfec4['recordingURL']='';}return getConnection(_0x1bd988)[_0x2254('0x3a')](function(_0x448773){_0x20bcc8=_0x448773;return getUser(_0x1bd988,_0x593f63[_0x2254('0xf')],_0x20bcc8);})[_0x2254('0x3a')](function(_0x13606e){_0x5e3fbc=_0x13606e;logger[_0x2254('0xe')](_0x2254('0x57'),_0x5e3fbc['id']);return getEndUser(_0x1bd988,_0x2bfec4[_0x2254('0x58')],_0x2bfec4[_0x2254('0x59')],_0x20bcc8);})[_0x2254('0x3a')](function(_0x2e68b5){_0x10a8db=_0x2e68b5;logger[_0x2254('0xe')](_0x2254('0x5a'),_0x10a8db['id']);return getTicket(_0x1bd988,_0x5e3fbc,_0x10a8db,_0x3c6f6c,_0x2bfec4,_0x3c6f6c[_0x2254('0x5b')],_0x20bcc8);})[_0x2254('0x3a')](function(_0x3b81bb){_0x28a7c6=_0x3b81bb;logger[_0x2254('0xe')](_0x2254('0x5c'));logger[_0x2254('0xe')]('The\x20Ticket\x20ID\x20is:',_0x28a7c6['id']);return setRelationship(_0x20bcc8,_0x5e3fbc,_0x28a7c6,_0x2254('0x5d'));})[_0x2254('0x3a')](function(){return setRelationship(_0x20bcc8,_0x10a8db,_0x28a7c6,_0x2254('0x5e'));})[_0x2254('0x3a')](function(){return getServerInfo(_0x20bcc8);})['then'](function(_0x494347){var _0x471fdd=parseInt(_0x494347[_0x2254('0x5f')][_0x2254('0x60')](0x0));var _0x2eb345=util[_0x2254('0x23')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x1bd988[_0x2254('0x51')],_0x28a7c6['id']);if(_0x471fdd>0x6){_0x2eb345=util[_0x2254('0x23')](_0x2254('0x61'),_0x1bd988['remoteUri'],_0x28a7c6['id']);}logger['info'](_0x2254('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2254('0x23')](_0x2254('0x62'),_0x593f63['name']),_0x2254('0x63'),{'uri':_0x2eb345});})[_0x2254('0x64')](function(_0x4d30a5){logger[_0x2254('0x65')](_0x2254('0x56'),JSON['stringify'](_0x4d30a5));});};exports['outbound']=function(_0xde4e7,_0xa159a4,_0x486b82,_0x506d95,_0x48406e,_0x53fca8,_0x1d880f){var _0x5d0229,_0x1cabab,_0x7bdd46,_0xaa9767;_0x53fca8[_0x2254('0x51')]=intUtil['stripTrailingSlash'](_0x53fca8[_0x2254('0x51')]);_0x53fca8['serverUrl']=intUtil[_0x2254('0x66')](_0x53fca8[_0x2254('0x52')]);def['uri']=util[_0x2254('0x23')](_0x2254('0x54'),_0x53fca8['remoteUri']);if(_0x1d880f&&_0x1d880f[_0x2254('0x67')]&&_0x1d880f[_0x2254('0x67')]!==_0x2254('0x68')){logger[_0x2254('0xe')]('[OUTBOUND]',_0x2254('0x69'));_0xa159a4[_0x2254('0x6a')]=util['format'](_0x2254('0x6b'),_0x53fca8[_0x2254('0x52')],_0xa159a4['uniqueid'],md5(_0xa159a4[_0x2254('0x6c')]));}return getConnection(_0x53fca8)['then'](function(_0x7075b1){_0xaa9767=_0x7075b1;return getUser(_0x53fca8,_0x506d95['name'],_0xaa9767);})[_0x2254('0x3a')](function(_0x1f95b2){_0x5d0229=_0x1f95b2;logger['info'](_0x2254('0x57'),_0x5d0229['id']);return getEndUser(_0x53fca8,_0xa159a4['destcalleridname'],_0xa159a4[_0x2254('0x6d')],_0xaa9767);})[_0x2254('0x3a')](function(_0x38294d){_0x1cabab=_0x38294d;logger['info'](_0x2254('0x5a'),_0x1cabab['id']);return getTicket(_0x53fca8,_0x5d0229,_0x1cabab,_0x486b82,_0xa159a4,_0x486b82['Fields'],_0xaa9767);})[_0x2254('0x3a')](function(_0x33f29b){_0x7bdd46=_0x33f29b;logger['info']('Ticket\x20created!');logger[_0x2254('0xe')](_0x2254('0x6e'),_0x7bdd46['id']);return setRelationship(_0xaa9767,_0x5d0229,_0x7bdd46,_0x2254('0x5d'));})[_0x2254('0x3a')](function(){return setRelationship(_0xaa9767,_0x1cabab,_0x7bdd46,'contacts');})[_0x2254('0x3a')](function(){return getServerInfo(_0xaa9767);})[_0x2254('0x3a')](function(_0x1b9dd8){var _0x403a4b=parseInt(_0x1b9dd8['version'][_0x2254('0x60')](0x0));var _0x42168f=util['format'](_0x2254('0x6f'),_0x53fca8['remoteUri'],_0x7bdd46['id']);if(_0x403a4b>0x6){_0x42168f=util[_0x2254('0x23')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x53fca8['remoteUri'],_0x7bdd46['id']);}logger['info'](_0x2254('0x70'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2254('0x23')](_0x2254('0x62'),_0x506d95['name']),_0x2254('0x63'),{'uri':_0x42168f});})[_0x2254('0x64')](function(_0x38b2a1){logger[_0x2254('0x65')](_0x2254('0x70'),JSON[_0x2254('0x21')](_0x38b2a1));});};exports['abandoned']=function(_0x553ac5,_0xeb4273,_0xfaa537,_0x148735,_0x17d06a,_0x3c8c99){var _0x47347f,_0x30e8cb,_0xf1a252,_0xdeafce;_0x3c8c99[_0x2254('0x51')]=intUtil['stripTrailingSlash'](_0x3c8c99[_0x2254('0x51')]);_0x3c8c99[_0x2254('0x52')]=intUtil['stripTrailingSlash'](_0x3c8c99[_0x2254('0x52')]);def['uri']=util[_0x2254('0x23')](_0x2254('0x54'),_0x3c8c99['remoteUri']);if(_0x17d06a&&_0x17d06a[_0x2254('0x55')]){logger['info'](_0x2254('0x71'),_0x2254('0x69'));_0xeb4273[_0x2254('0x6a')]=util[_0x2254('0x23')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3c8c99[_0x2254('0x52')],_0xeb4273[_0x2254('0x6c')],md5(_0xeb4273[_0x2254('0x6c')]));}else{_0xeb4273[_0x2254('0x6a')]='';}return getConnection(_0x3c8c99)['then'](function(_0x177f00){_0xdeafce=_0x177f00;return getUser(_0x3c8c99,_0x148735[_0x2254('0xf')],_0xdeafce);})['then'](function(_0x23f9ca){_0x47347f=_0x23f9ca;logger[_0x2254('0xe')]('The\x20User\x20ID\x20is:',_0x47347f['id']);return getEndUser(_0x3c8c99,_0xeb4273['calleridname'],_0xeb4273[_0x2254('0x59')],_0xdeafce);})[_0x2254('0x3a')](function(_0x1a3fd9){_0x30e8cb=_0x1a3fd9;logger[_0x2254('0xe')](_0x2254('0x5a'),_0x30e8cb['id']);return getTicket(_0x3c8c99,_0x47347f,_0x30e8cb,_0xfaa537,_0xeb4273,_0xfaa537[_0x2254('0x5b')],_0xdeafce);})[_0x2254('0x3a')](function(_0x251d70){_0xf1a252=_0x251d70;logger[_0x2254('0xe')]('Ticket\x20created!');logger[_0x2254('0xe')]('The\x20Ticket\x20ID\x20is:',_0xf1a252['id']);return setRelationship(_0xdeafce,_0x47347f,_0xf1a252,_0x2254('0x5d'));})['then'](function(){return setRelationship(_0xdeafce,_0x30e8cb,_0xf1a252,_0x2254('0x5e'));})[_0x2254('0x3a')](function(){return getServerInfo(_0xdeafce);})[_0x2254('0x64')](function(_0x53ef4e){logger[_0x2254('0x65')](_0x2254('0x71'),JSON[_0x2254('0x21')](_0x53ef4e));});};
\ No newline at end of file
+var _0xb016=['lodash','request-promise','util','./util','../../../../config/environment','../../../../config/logger','sugarcrm','defaults','redis','localhost','POST','emit','info','Creating\x20new\x20ticket...','Subjects','created_by','description','Descriptions','replace','parent_id','parent_type','Contacts','parent_name','name','length','forEach','variableName','push','idField','set_entry','JSON','stringify','Calls','format','Basic\x20%s','toString','base64','get_server_info','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','Agent\x20found!','resolve','value','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','string','customField','nameField','toLowerCase','type','custom_fields','content','customVariable','Variable','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','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','error','outbound','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','[ABANDONED]'];(function(_0x1fdb40,_0x51351c){var _0x281f93=function(_0x35eebe){while(--_0x35eebe){_0x1fdb40['push'](_0x1fdb40['shift']());}};_0x281f93(++_0x51351c);}(_0xb016,0x159));var _0x6b01=function(_0x474c8,_0x2c07da){_0x474c8=_0x474c8-0x0;var _0x3c4574=_0xb016[_0x474c8];return _0x3c4574;};'use strict';var _=require(_0x6b01('0x0'));var rp=require(_0x6b01('0x1'));var BPromise=require('bluebird');var md5=require('md5');var util=require(_0x6b01('0x2'));var Redis=require('ioredis');var intUtil=require(_0x6b01('0x3'));var config=require(_0x6b01('0x4'));var logger=require(_0x6b01('0x5'))(_0x6b01('0x6'));config['redis']=_[_0x6b01('0x7')](config[_0x6b01('0x8')],{'host':_0x6b01('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var def={'method':_0x6b01('0xa'),'json':!![]};function emit(_0x39f9fa,_0x526a7d,_0x5f4636){io['to'](_0x39f9fa)[_0x6b01('0xb')](_0x526a7d,_0x5f4636);}function getTicket(_0x1cb3a6,_0x2c4e48,_0x242394,_0xab37c,_0x5bed15,_0x4b4a4d,_0x4627ef){logger[_0x6b01('0xc')](_0x6b01('0xd'));var _0x5a8817=new Date();var _0x200614=[{'name':'name','value':intUtil['getString'](_0xab37c[_0x6b01('0xe')],_0x5bed15,'\x20')},{'name':'assigned_user_id','value':_0x2c4e48['id']},{'name':_0x6b01('0xf'),'value':_0x2c4e48['id']},{'name':_0x6b01('0x10'),'value':intUtil['getString'](_0xab37c[_0x6b01('0x11')],_0x5bed15,'\x0a')},{'name':'date_start','value':_0x5a8817['toISOString']()['slice'](0x0,0x13)[_0x6b01('0x12')]('T','\x20')},{'name':'duration_hours','value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0x6b01('0x13'),'value':_0x242394['id']},{'name':_0x6b01('0x14'),'value':_0x6b01('0x15')},{'name':_0x6b01('0x16'),'value':_0x242394[_0x6b01('0x17')]}];if(_0x4b4a4d[_0x6b01('0x18')]){_[_0x6b01('0x19')](_0x4b4a4d,function(_0x33ffe8){if(_0x5bed15[_0x33ffe8[_0x6b01('0x1a')]]){_0x200614[_0x6b01('0x1b')]({'name':_0x33ffe8[_0x6b01('0x1c')],'value':_0x5bed15[_0x33ffe8['variableName']]});}});}return request({'form':{'method':_0x6b01('0x1d'),'input_type':_0x6b01('0x1e'),'response_type':_0x6b01('0x1e'),'rest_data':JSON[_0x6b01('0x1f')]({'session':_0x4627ef['id'],'module_name':_0x6b01('0x20'),'name_value_list':_0x200614})}});}function getAuth(_0x11e4dc){return util[_0x6b01('0x21')](_0x6b01('0x22'),new Buffer(_0x11e4dc['apiKey']+':X')[_0x6b01('0x23')](_0x6b01('0x24')));}function getServerInfo(_0x424cd3){return request({'form':{'method':_0x6b01('0x25'),'input_type':_0x6b01('0x1e'),'response_type':_0x6b01('0x1e'),'rest_data':JSON[_0x6b01('0x1f')]({'session':_0x424cd3['id']})}});}function getUser(_0x542fab,_0x7caa07,_0xcf9200){logger[_0x6b01('0xc')]('Getting\x20agent\x20with\x20name',_0x7caa07);return request({'form':{'method':_0x6b01('0x26'),'input_type':_0x6b01('0x1e'),'response_type':_0x6b01('0x1e'),'rest_data':JSON[_0x6b01('0x1f')]({'session':_0xcf9200['id'],'module_name':_0x6b01('0x27'),'query':util[_0x6b01('0x21')](_0x6b01('0x28'),_0x7caa07),'order_by':'','offset':'0','select_fields':['id',_0x6b01('0x17'),_0x6b01('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x6b01('0x2a')](function(_0x3c0607){if(_0x3c0607[_0x6b01('0x2b')][_0x6b01('0x18')]){var _0x55ca4b=_[_0x6b01('0x2c')](_0x3c0607[_0x6b01('0x2b')],function(_0x32128f){return _0x32128f[_0x6b01('0x2d')][_0x6b01('0x29')]['value']===_0x7caa07;});if(_0x55ca4b){logger['info'](_0x6b01('0x2e'));return BPromise[_0x6b01('0x2f')]({'id':_0x55ca4b[_0x6b01('0x2d')]['id'][_0x6b01('0x30')],'name':_0x55ca4b[_0x6b01('0x2d')][_0x6b01('0x17')]['value']});}}else{logger[_0x6b01('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x6b01('0x2f')]({'id':_0xcf9200['name_value_list'][_0x6b01('0x31')]['id'],'name':_0xcf9200[_0x6b01('0x2d')][_0x6b01('0x29')]['id']});}});}function getEndUser(_0x1606ee,_0x3c8009,_0x54575c,_0x25ef16){logger[_0x6b01('0xc')](_0x6b01('0x32'),_0x54575c);return request({'form':{'method':'get_entry_list','input_type':'JSON','response_type':_0x6b01('0x1e'),'rest_data':JSON['stringify']({'session':_0x25ef16['id'],'module_name':_0x6b01('0x15'),'query':util[_0x6b01('0x21')](_0x6b01('0x33'),_0x54575c),'order_by':'','offset':'0','select_fields':['id','name',_0x6b01('0x34')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x6b01('0x2a')](function(_0x186a6d){if(_0x186a6d['entry_list'][_0x6b01('0x18')]){var _0x2ca8d9=_[_0x6b01('0x2c')](_0x186a6d[_0x6b01('0x2b')],function(_0x16bd9c){return _0x16bd9c['name_value_list'][_0x6b01('0x34')][_0x6b01('0x30')]===_0x54575c;});if(_0x2ca8d9){logger[_0x6b01('0xc')](_0x6b01('0x35'));return BPromise[_0x6b01('0x2f')]({'id':_0x2ca8d9[_0x6b01('0x2d')]['id'][_0x6b01('0x30')],'name':_0x2ca8d9[_0x6b01('0x2d')]['name'][_0x6b01('0x30')],'phone':_0x2ca8d9['name_value_list'][_0x6b01('0x34')][_0x6b01('0x30')]});}}else{logger[_0x6b01('0xc')](_0x6b01('0x36'));return request({'form':{'method':_0x6b01('0x1d'),'input_type':_0x6b01('0x1e'),'response_type':_0x6b01('0x1e'),'rest_data':JSON['stringify']({'session':_0x25ef16['id'],'module_name':_0x6b01('0x15'),'name_value_list':[{'name':_0x6b01('0x37'),'value':_0x3c8009!==_0x6b01('0x38')?_0x3c8009:util[_0x6b01('0x21')](_0x6b01('0x39'),_0x54575c)},{'name':_0x6b01('0x34'),'value':_0x54575c}]})}})[_0x6b01('0x2a')](function(_0x44bf46){logger['info'](_0x6b01('0x3a'));return BPromise['resolve']({'id':_0x44bf46['id'],'name':_0x44bf46[_0x6b01('0x2b')][_0x6b01('0x37')]['value'],'phone':_0x44bf46[_0x6b01('0x2b')][_0x6b01('0x34')][_0x6b01('0x30')]});});}});}function request(_0x45952a){logger[_0x6b01('0x3b')](_0x6b01('0x3c'),JSON[_0x6b01('0x1f')](_0x45952a));return rp(_[_0x6b01('0x3d')](def,_0x45952a));}function getTags(_0x2913e5,_0x17f335){var _0x5edf3f=[];if(_0x2913e5&&_0x2913e5[_0x6b01('0x18')]>0x0){_0x5edf3f=_[_0x6b01('0x3e')](_0x2913e5,_0x17f335);}return _0x5edf3f;}function getCustomFields(_0x527d08,_0x52cec0){var _0x32b9ec=[];var _0xd11195={'custom_fields':[]};if(_0x527d08['length']>0x0){_[_0x6b01('0x19')](_0x527d08,function(_0x3f9e46){if(_0x3f9e46['type']===_0x6b01('0x3f')&&_0x3f9e46['nameField']&&!_0x3f9e46[_0x6b01('0x40')]){_0xd11195[_0x3f9e46[_0x6b01('0x41')][_0x6b01('0x42')]()]=_0x3f9e46['content'][_0x6b01('0x23')]();}else if(_0x3f9e46[_0x6b01('0x43')]==='string'&&_0x3f9e46['idField']&&_0x3f9e46['customField']){_0xd11195[_0x6b01('0x44')][_0x6b01('0x1b')]({'id':_0x3f9e46[_0x6b01('0x1c')],'value':_0x3f9e46[_0x6b01('0x45')][_0x6b01('0x23')]()});}else if(_0x3f9e46[_0x6b01('0x43')]==='variable'&&_0x3f9e46[_0x6b01('0x1a')]&&_0x3f9e46[_0x6b01('0x1c')]&&_0x3f9e46[_0x6b01('0x40')]){_0x52cec0[_0x3f9e46[_0x6b01('0x1a')]]&&_0xd11195[_0x6b01('0x44')][_0x6b01('0x1b')]({'id':_0x3f9e46['idField'],'value':_0x52cec0[_0x3f9e46[_0x6b01('0x1a')]]['toString']()});}else if(_0x3f9e46['type']===_0x6b01('0x46')&&_0x3f9e46[_0x6b01('0x47')]&&_0x3f9e46['Variable'][_0x6b01('0x17')]&&_0x3f9e46[_0x6b01('0x1c')]&&_0x3f9e46[_0x6b01('0x40')]){_0x52cec0[_0x3f9e46['Variable']['name']['toLowerCase']()]&&_0xd11195[_0x6b01('0x44')][_0x6b01('0x1b')]({'id':_0x3f9e46['idField'],'value':_0x52cec0[_0x3f9e46[_0x6b01('0x47')]['name']['toLowerCase']()]['toString']()});}});}return _0xd11195;}function getConnection(_0x66770d){return request({'method':_0x6b01('0xa'),'form':{'method':'login','input_type':'JSON','response_type':_0x6b01('0x1e'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x66770d[_0x6b01('0x48')],'password':_0x66770d[_0x6b01('0x49')],'encryption':_0x6b01('0x4a')},'application':_0x6b01('0x4b')})}})[_0x6b01('0x2a')](function(_0x4d327f){var _0x2391f2=_0x4d327f;if(_0x2391f2['id']){def[_0x6b01('0x4c')]=_0x2391f2['id'];return BPromise[_0x6b01('0x2f')](_0x2391f2);}else{throw new Error(util['format'](_0x6b01('0x4d'),_0x66770d['id']));}});}function setRelationship(_0x13ab4f,_0x5617d7,_0x3c9f20,_0x328770){return request({'form':{'method':_0x6b01('0x4e'),'input_type':_0x6b01('0x1e'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x13ab4f['id'],'module_name':_0x6b01('0x20'),'module_id':_0x3c9f20['id'],'link_field_name':_0x328770,'related_ids':[_0x5617d7['id']]})}});}exports['queue']=function(_0x4f7332,_0x1161e9,_0x14cbed,_0x5b5c0c,_0x2bf4b5,_0xaad732){var _0x5c94ae,_0x1bd851,_0x1ce46d,_0x2c8c5d;_0xaad732[_0x6b01('0x4f')]=intUtil[_0x6b01('0x50')](_0xaad732['remoteUri']);_0xaad732[_0x6b01('0x51')]=intUtil['stripTrailingSlash'](_0xaad732[_0x6b01('0x51')]);def[_0x6b01('0x52')]=util[_0x6b01('0x21')]('%s/service/v4_1/rest.php',_0xaad732[_0x6b01('0x4f')]);if(_0x2bf4b5&&_0x2bf4b5[_0x6b01('0x53')]){logger[_0x6b01('0xc')](_0x6b01('0x54'),'Recording\x20is\x20enabled!');_0x1161e9[_0x6b01('0x55')]=util[_0x6b01('0x21')](_0x6b01('0x56'),_0xaad732['serverUrl'],_0x1161e9['uniqueid'],md5(_0x1161e9[_0x6b01('0x57')]));}else{_0x1161e9[_0x6b01('0x55')]='';}return getConnection(_0xaad732)[_0x6b01('0x2a')](function(_0x4e1702){_0x2c8c5d=_0x4e1702;return getUser(_0xaad732,_0x5b5c0c[_0x6b01('0x17')],_0x2c8c5d);})[_0x6b01('0x2a')](function(_0x35fa78){_0x5c94ae=_0x35fa78;logger['info']('The\x20User\x20ID\x20is:',_0x5c94ae['id']);return getEndUser(_0xaad732,_0x1161e9[_0x6b01('0x58')],_0x1161e9[_0x6b01('0x59')],_0x2c8c5d);})['then'](function(_0x3e16e8){_0x1bd851=_0x3e16e8;logger[_0x6b01('0xc')](_0x6b01('0x5a'),_0x1bd851['id']);return getTicket(_0xaad732,_0x5c94ae,_0x1bd851,_0x14cbed,_0x1161e9,_0x14cbed[_0x6b01('0x5b')],_0x2c8c5d);})[_0x6b01('0x2a')](function(_0x429c07){_0x1ce46d=_0x429c07;logger[_0x6b01('0xc')](_0x6b01('0x5c'));logger[_0x6b01('0xc')]('The\x20Ticket\x20ID\x20is:',_0x1ce46d['id']);return setRelationship(_0x2c8c5d,_0x5c94ae,_0x1ce46d,_0x6b01('0x5d'));})[_0x6b01('0x2a')](function(){return setRelationship(_0x2c8c5d,_0x1bd851,_0x1ce46d,_0x6b01('0x5e'));})[_0x6b01('0x2a')](function(){return getServerInfo(_0x2c8c5d);})[_0x6b01('0x2a')](function(_0x38e373){var _0x4d710a=parseInt(_0x38e373[_0x6b01('0x5f')][_0x6b01('0x60')](0x0));var _0x5dd77b=util[_0x6b01('0x21')](_0x6b01('0x61'),_0xaad732[_0x6b01('0x4f')],_0x1ce46d['id']);if(_0x4d710a>0x6){_0x5dd77b=util[_0x6b01('0x21')](_0x6b01('0x62'),_0xaad732[_0x6b01('0x4f')],_0x1ce46d['id']);}logger['info']('[QUEUE]',_0x6b01('0x63'));emit(util[_0x6b01('0x21')](_0x6b01('0x64'),_0x5b5c0c[_0x6b01('0x17')]),_0x6b01('0x65'),{'uri':_0x5dd77b});})[_0x6b01('0x66')](function(_0x59bf90){logger[_0x6b01('0x67')](_0x6b01('0x54'),JSON[_0x6b01('0x1f')](_0x59bf90));});};exports[_0x6b01('0x68')]=function(_0x427843,_0xf31bfa,_0x1e0504,_0x582bff,_0x3ea965,_0x4cb00d,_0x1f83a9){var _0x4623d9,_0x293340,_0x48bfcd,_0x297704;_0x4cb00d[_0x6b01('0x4f')]=intUtil[_0x6b01('0x50')](_0x4cb00d[_0x6b01('0x4f')]);_0x4cb00d[_0x6b01('0x51')]=intUtil[_0x6b01('0x50')](_0x4cb00d[_0x6b01('0x51')]);def[_0x6b01('0x52')]=util[_0x6b01('0x21')](_0x6b01('0x69'),_0x4cb00d[_0x6b01('0x4f')]);if(_0x1f83a9&&_0x1f83a9[_0x6b01('0x6a')]&&_0x1f83a9[_0x6b01('0x6a')]!==_0x6b01('0x6b')){logger[_0x6b01('0xc')](_0x6b01('0x6c'),_0x6b01('0x6d'));_0xf31bfa[_0x6b01('0x55')]=util[_0x6b01('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4cb00d[_0x6b01('0x51')],_0xf31bfa[_0x6b01('0x57')],md5(_0xf31bfa[_0x6b01('0x57')]));}return getConnection(_0x4cb00d)[_0x6b01('0x2a')](function(_0x1c419c){_0x297704=_0x1c419c;return getUser(_0x4cb00d,_0x582bff[_0x6b01('0x17')],_0x297704);})[_0x6b01('0x2a')](function(_0x17468f){_0x4623d9=_0x17468f;logger[_0x6b01('0xc')](_0x6b01('0x6e'),_0x4623d9['id']);return getEndUser(_0x4cb00d,_0xf31bfa[_0x6b01('0x6f')],_0xf31bfa[_0x6b01('0x70')],_0x297704);})[_0x6b01('0x2a')](function(_0x30171f){_0x293340=_0x30171f;logger[_0x6b01('0xc')]('The\x20Enduser\x20ID\x20is:',_0x293340['id']);return getTicket(_0x4cb00d,_0x4623d9,_0x293340,_0x1e0504,_0xf31bfa,_0x1e0504[_0x6b01('0x5b')],_0x297704);})[_0x6b01('0x2a')](function(_0x19a6d9){_0x48bfcd=_0x19a6d9;logger[_0x6b01('0xc')](_0x6b01('0x5c'));logger[_0x6b01('0xc')](_0x6b01('0x71'),_0x48bfcd['id']);return setRelationship(_0x297704,_0x4623d9,_0x48bfcd,_0x6b01('0x5d'));})[_0x6b01('0x2a')](function(){return setRelationship(_0x297704,_0x293340,_0x48bfcd,_0x6b01('0x5e'));})[_0x6b01('0x2a')](function(){return getServerInfo(_0x297704);})[_0x6b01('0x2a')](function(_0x2c9579){var _0x293613=parseInt(_0x2c9579[_0x6b01('0x5f')][_0x6b01('0x60')](0x0));var _0x421ecf=util[_0x6b01('0x21')](_0x6b01('0x61'),_0x4cb00d[_0x6b01('0x4f')],_0x48bfcd['id']);if(_0x293613>0x6){_0x421ecf=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x4cb00d['remoteUri'],_0x48bfcd['id']);}logger['info'](_0x6b01('0x6c'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x582bff[_0x6b01('0x17')]),'trigger:browser:url',{'uri':_0x421ecf});})[_0x6b01('0x66')](function(_0x2c04c2){logger[_0x6b01('0x67')](_0x6b01('0x6c'),JSON[_0x6b01('0x1f')](_0x2c04c2));});};exports['abandoned']=function(_0x4f1f73,_0x183b29,_0x1517c9,_0x3140c0,_0x4bea18,_0x3c3b5c){var _0x30a52b,_0xb6f544,_0x24bf5b,_0x2372c0;_0x3c3b5c['remoteUri']=intUtil[_0x6b01('0x50')](_0x3c3b5c['remoteUri']);_0x3c3b5c[_0x6b01('0x51')]=intUtil[_0x6b01('0x50')](_0x3c3b5c[_0x6b01('0x51')]);def[_0x6b01('0x52')]=util[_0x6b01('0x21')]('%s/service/v4_1/rest.php',_0x3c3b5c[_0x6b01('0x4f')]);if(_0x4bea18&&_0x4bea18[_0x6b01('0x53')]){logger[_0x6b01('0xc')](_0x6b01('0x72'),'Recording\x20is\x20enabled!');_0x183b29[_0x6b01('0x55')]=util[_0x6b01('0x21')](_0x6b01('0x56'),_0x3c3b5c[_0x6b01('0x51')],_0x183b29[_0x6b01('0x57')],md5(_0x183b29[_0x6b01('0x57')]));}else{_0x183b29['recordingURL']='';}return getConnection(_0x3c3b5c)['then'](function(_0x59d918){_0x2372c0=_0x59d918;return getUser(_0x3c3b5c,_0x3140c0[_0x6b01('0x17')],_0x2372c0);})[_0x6b01('0x2a')](function(_0x51a94b){_0x30a52b=_0x51a94b;logger[_0x6b01('0xc')](_0x6b01('0x6e'),_0x30a52b['id']);return getEndUser(_0x3c3b5c,_0x183b29[_0x6b01('0x58')],_0x183b29[_0x6b01('0x59')],_0x2372c0);})['then'](function(_0x18066a){_0xb6f544=_0x18066a;logger['info'](_0x6b01('0x5a'),_0xb6f544['id']);return getTicket(_0x3c3b5c,_0x30a52b,_0xb6f544,_0x1517c9,_0x183b29,_0x1517c9['Fields'],_0x2372c0);})[_0x6b01('0x2a')](function(_0x4bcf7a){_0x24bf5b=_0x4bcf7a;logger[_0x6b01('0xc')](_0x6b01('0x5c'));logger[_0x6b01('0xc')](_0x6b01('0x71'),_0x24bf5b['id']);return setRelationship(_0x2372c0,_0x30a52b,_0x24bf5b,_0x6b01('0x5d'));})[_0x6b01('0x2a')](function(){return setRelationship(_0x2372c0,_0xb6f544,_0x24bf5b,_0x6b01('0x5e'));})['then'](function(){return getServerInfo(_0x2372c0);})[_0x6b01('0x66')](function(_0x59fc0b){logger[_0x6b01('0x67')](_0x6b01('0x72'),JSON[_0x6b01('0x1f')](_0x59fc0b));});};
\ No newline at end of file
index 9e1c1ed..f56fc15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83d0=['lodash','getString','length','sortBy','type','string','push','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','format','keyContent','%s:\x20%s','join','stripTrailingSlash','substr'];(function(_0x67fe60,_0x4b4e0b){var _0x20196f=function(_0x4c0d7b){while(--_0x4c0d7b){_0x67fe60['push'](_0x67fe60['shift']());}};_0x20196f(++_0x4b4e0b);}(_0x83d0,0xfd));var _0x083d=function(_0x4edf18,_0x408cae){_0x4edf18=_0x4edf18-0x0;var _0x25221c=_0x83d0[_0x4edf18];return _0x25221c;};'use strict';var _=require(_0x083d('0x0'));var util=require('util');exports[_0x083d('0x1')]=function(_0x29e3eb,_0xdf2d5f,_0x5a1b0c){var _0x179bca=[];if(_0x29e3eb[_0x083d('0x2')]>0x0){var _0x34c79b=_[_0x083d('0x3')](_0x29e3eb,['id']);for(var _0x892a21=0x0;_0x892a21<_0x34c79b[_0x083d('0x2')];_0x892a21++){var _0x39026f=_0x34c79b[_0x892a21];if(_0x39026f[_0x083d('0x4')]===_0x083d('0x5')){_0x179bca[_0x083d('0x6')](_0x39026f['content']);}else if(_0x39026f[_0x083d('0x4')]===_0x083d('0x7')&&_0x39026f[_0x083d('0x8')]){_0xdf2d5f[_0x39026f[_0x083d('0x8')]]&&_0x179bca[_0x083d('0x6')](_0xdf2d5f[_0x39026f[_0x083d('0x8')]][_0x083d('0x9')]());}else if(_0x39026f[_0x083d('0x4')]===_0x083d('0xa')&&_0x39026f[_0x083d('0xb')]&&_0x39026f[_0x083d('0xb')][_0x083d('0xc')]){_0xdf2d5f[_0x39026f[_0x083d('0xb')][_0x083d('0xc')][_0x083d('0xd')]()]&&_0x179bca[_0x083d('0x6')](_0xdf2d5f[_0x39026f[_0x083d('0xb')][_0x083d('0xc')][_0x083d('0xd')]()][_0x083d('0x9')]());}else if(_0x39026f[_0x083d('0x4')]===_0x083d('0xe')){if(_0x39026f[_0x083d('0xf')]===_0x083d('0x5')&&_0x39026f[_0x083d('0x10')]){_0x179bca[_0x083d('0x6')](util[_0x083d('0x11')]('%s:\x20%s',_0x39026f[_0x083d('0x10')],_0x39026f[_0x083d('0x12')]));}else if(_0x39026f['keyType']===_0x083d('0x7')&&_0x39026f['variableName']&&_0x39026f[_0x083d('0x10')]){_0xdf2d5f[_0x39026f[_0x083d('0x8')]]&&_0x179bca['push'](util[_0x083d('0x11')](_0x083d('0x13'),_0x39026f[_0x083d('0x10')],_0xdf2d5f[_0x39026f[_0x083d('0x8')]]));}else if(_0x39026f[_0x083d('0xf')]===_0x083d('0xa')&&_0x39026f[_0x083d('0xb')]&&_0x39026f[_0x083d('0xb')][_0x083d('0xc')]&&_0x39026f[_0x083d('0x10')]){_0xdf2d5f[_0x39026f[_0x083d('0xb')][_0x083d('0xc')][_0x083d('0xd')]()]&&_0x179bca[_0x083d('0x6')](util[_0x083d('0x11')](_0x083d('0x13'),_0x39026f['key'],_0xdf2d5f[_0x39026f[_0x083d('0xb')][_0x083d('0xc')]['toLowerCase']()]));}}}}return _0x179bca[_0x083d('0x14')](_0x5a1b0c);};exports[_0x083d('0x15')]=function(_0x2b33de){if(_0x2b33de&&_0x2b33de[_0x083d('0x16')](-0x1)==='/'){return _0x2b33de['substr'](0x0,_0x2b33de[_0x083d('0x2')]-0x1);}return _0x2b33de;};
\ No newline at end of file
+var _0x17f7=['getString','sortBy','length','type','push','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','string','key','format','%s:\x20%s','variable','stripTrailingSlash','lodash','util'];(function(_0x33f37b,_0x1eef72){var _0x4ade47=function(_0xe22b0b){while(--_0xe22b0b){_0x33f37b['push'](_0x33f37b['shift']());}};_0x4ade47(++_0x1eef72);}(_0x17f7,0x139));var _0x717f=function(_0x10bc8a,_0x454ac6){_0x10bc8a=_0x10bc8a-0x0;var _0x3ec2a5=_0x17f7[_0x10bc8a];return _0x3ec2a5;};'use strict';var _=require(_0x717f('0x0'));var util=require(_0x717f('0x1'));exports[_0x717f('0x2')]=function(_0x44522c,_0x52e272,_0x2a7e1b){var _0x9229f0=[];if(_0x44522c['length']>0x0){var _0x3e9584=_[_0x717f('0x3')](_0x44522c,['id']);for(var _0x59717d=0x0;_0x59717d<_0x3e9584[_0x717f('0x4')];_0x59717d++){var _0x237168=_0x3e9584[_0x59717d];if(_0x237168[_0x717f('0x5')]==='string'){_0x9229f0[_0x717f('0x6')](_0x237168['content']);}else if(_0x237168[_0x717f('0x5')]==='variable'&&_0x237168[_0x717f('0x7')]){_0x52e272[_0x237168['variableName']]&&_0x9229f0[_0x717f('0x6')](_0x52e272[_0x237168[_0x717f('0x7')]][_0x717f('0x8')]());}else if(_0x237168[_0x717f('0x5')]===_0x717f('0x9')&&_0x237168[_0x717f('0xa')]&&_0x237168[_0x717f('0xa')][_0x717f('0xb')]){_0x52e272[_0x237168[_0x717f('0xa')][_0x717f('0xb')]['toLowerCase']()]&&_0x9229f0['push'](_0x52e272[_0x237168[_0x717f('0xa')][_0x717f('0xb')][_0x717f('0xc')]()][_0x717f('0x8')]());}else if(_0x237168[_0x717f('0x5')]===_0x717f('0xd')){if(_0x237168[_0x717f('0xe')]===_0x717f('0xf')&&_0x237168[_0x717f('0x10')]){_0x9229f0[_0x717f('0x6')](util[_0x717f('0x11')](_0x717f('0x12'),_0x237168['key'],_0x237168['keyContent']));}else if(_0x237168[_0x717f('0xe')]===_0x717f('0x13')&&_0x237168['variableName']&&_0x237168[_0x717f('0x10')]){_0x52e272[_0x237168['variableName']]&&_0x9229f0[_0x717f('0x6')](util[_0x717f('0x11')]('%s:\x20%s',_0x237168[_0x717f('0x10')],_0x52e272[_0x237168['variableName']]));}else if(_0x237168[_0x717f('0xe')]===_0x717f('0x9')&&_0x237168[_0x717f('0xa')]&&_0x237168[_0x717f('0xa')][_0x717f('0xb')]&&_0x237168[_0x717f('0x10')]){_0x52e272[_0x237168[_0x717f('0xa')][_0x717f('0xb')]['toLowerCase']()]&&_0x9229f0['push'](util[_0x717f('0x11')](_0x717f('0x12'),_0x237168[_0x717f('0x10')],_0x52e272[_0x237168[_0x717f('0xa')][_0x717f('0xb')][_0x717f('0xc')]()]));}}}}return _0x9229f0['join'](_0x2a7e1b);};exports[_0x717f('0x14')]=function(_0x1bc2e1){if(_0x1bc2e1&&_0x1bc2e1['substr'](-0x1)==='/'){return _0x1bc2e1['substr'](0x0,_0x1bc2e1['length']-0x1);}return _0x1bc2e1;};
\ No newline at end of file
index 812307f..f0b1b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['admin','sessionName','HelpDesk','stringify','success','resolve','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','test','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','info','Getting\x20agent\x20with\x20email','GET','remoteUri','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','then','result','Agent\x20found!','first_name','last_name','userId','username','getUser','Searching\x20end\x20user\x20with\x20phone','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;','length','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','create','Contacts','Enduser\x20created.','catch','getEndUser','getchallenge','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','recordingFormat','none','uniqueid','destcalleridnum','Ticket\x20created!','[OUTBOUND]','abandoned','[ABANDONED]','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','idField','toString','type','variableName','customVariable','Variable','name','toLowerCase','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','Descriptions','%s/webservice.php'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c44,0x178));var _0x49c4=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9c44[_0x53ccf2];return _0x5a2964;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_0x313e73['type']===_0x49c4('0xb')&&_0x313e73[_0x49c4('0xc')]){_0x4c7d3a[_0x313e73['idField']]=_0x313e73['content'][_0x49c4('0xd')]();}else if(_0x313e73[_0x49c4('0xe')]==='variable'&&_0x313e73[_0x49c4('0xf')]&&_0x313e73[_0x49c4('0xc')]&&_0x4487ca[_0x313e73['variableName']]){_0x4c7d3a[_0x313e73[_0x49c4('0xc')]]=_0x4487ca[_0x313e73[_0x49c4('0xf')]][_0x49c4('0xd')]();}else if(_0x313e73[_0x49c4('0xe')]===_0x49c4('0x10')&&_0x313e73[_0x49c4('0x11')]&&_0x313e73[_0x49c4('0x11')][_0x49c4('0x12')]&&_0x313e73['idField']&&_0x4487ca[_0x313e73[_0x49c4('0x11')][_0x49c4('0x12')][_0x49c4('0x13')]()]){_0x4c7d3a[_0x313e73[_0x49c4('0xc')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]['name'][_0x49c4('0x13')]()][_0x49c4('0xd')]();}});}return _0x4c7d3a;}function createTicket(_0x4c3253,_0x512650,_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d){logger['info'](_0x49c4('0x14'));var _0x1806c2=_[_0x49c4('0x15')]({'parent_id':'','assigned_user_id':_0x512650['id'],'ticketpriorities':_0x49c4('0x16'),'ticketstatus':_0x49c4('0x17'),'ticket_title':intUtil[_0x49c4('0x18')](_0x2f82d5[_0x49c4('0x19')],_0x3addb2,'\x20'),'description':intUtil[_0x49c4('0x18')](_0x2f82d5[_0x49c4('0x1a')],_0x3addb2,'\x0a'),'contact_id':_0x3c782d['id']},getCustomFields(_0x59f29b,_0x3addb2));var _0x578447={'method':'POST','uri':util['format'](_0x49c4('0x1b'),_0x4c3253['remoteUri']),'form':{'operation':'create','username':_0x49c4('0x1c'),'sessionName':_0x24856d[_0x49c4('0x1d')],'elementType':_0x49c4('0x1e'),'element':JSON[_0x49c4('0x1f')](_0x1806c2)},'json':!![]};return request(_0x578447)['then'](function(_0x5850f2){if(_0x5850f2[_0x49c4('0x20')]){return BPromise[_0x49c4('0x21')]({'id':_0x5850f2['result']['id']});}else{throw new Error(util[_0x49c4('0x22')](_0x49c4('0x23'),JSON[_0x49c4('0x1f')](_0x5850f2[_0x49c4('0x24')])));}})['catch'](function(_0x543ea2){var _0x449960=req['query'][_0x49c4('0x25')]?0x1f4:_0x543ea2[_0x49c4('0x26')]||0x1f4;logger[_0x49c4('0x24')](_0x49c4('0x27'),'createTicket',_0x449960,JSON[_0x49c4('0x1f')](_0x543ea2));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){logger[_0x49c4('0x28')](_0x49c4('0x29'),_0x46e04d);return request({'method':_0x49c4('0x2a'),'uri':util[_0x49c4('0x22')](_0x49c4('0x1b'),_0x2b2793[_0x49c4('0x2b')]),'qs':{'operation':_0x49c4('0x2c'),'username':'admin','sessionName':_0x4f28a2['sessionName'],'query':util['format'](_0x49c4('0x2d'),_0x46e04d)},'json':!![]})[_0x49c4('0x2e')](function(_0x1eb035){if(_0x1eb035[_0x49c4('0x20')]&&_0x1eb035[_0x49c4('0x2f')]['length']){logger[_0x49c4('0x28')](_0x49c4('0x30'));return BPromise[_0x49c4('0x21')]({'id':_0x1eb035[_0x49c4('0x2f')][0x0]['id'],'email':_0x1eb035['result'][0x0]['email1'],'name':_0x1eb035[_0x49c4('0x2f')][0x0][_0x49c4('0x31')]+'\x20'+_0x1eb035[_0x49c4('0x2f')][_0x49c4('0x32')]});}else{logger[_0x49c4('0x28')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x21')]({'id':_0x4f28a2[_0x49c4('0x33')],'email':_0x2b2793[_0x49c4('0x34')],'name':'admin'});}})['catch'](function(_0x85dce2){var _0x1991e9=req[_0x49c4('0x2c')][_0x49c4('0x25')]?0x1f4:_0x85dce2[_0x49c4('0x26')]||0x1f4;logger[_0x49c4('0x24')](_0x49c4('0x27'),_0x49c4('0x35'),_0x1991e9,JSON[_0x49c4('0x1f')](_0x85dce2));});}function getEndUser(_0x4e0209,_0x2d34ca,_0x5b96df,_0xdda586){logger[_0x49c4('0x28')](_0x49c4('0x36'),_0x5b96df);return request({'method':_0x49c4('0x2a'),'uri':util['format'](_0x49c4('0x1b'),_0x4e0209[_0x49c4('0x2b')]),'qs':{'operation':_0x49c4('0x2c'),'username':'admin','sessionName':_0xdda586[_0x49c4('0x1d')],'query':util[_0x49c4('0x22')](_0x49c4('0x37'),_0x5b96df,_0x5b96df,_0x5b96df,_0x5b96df,_0x5b96df)},'json':!![]})[_0x49c4('0x2e')](function(_0x1ba7a0){if(_0x1ba7a0[_0x49c4('0x20')]&&_0x1ba7a0[_0x49c4('0x2f')][_0x49c4('0x38')]){logger[_0x49c4('0x28')](_0x49c4('0x39'));return BPromise[_0x49c4('0x21')]({'id':_0x1ba7a0['result'][0x0]['id'],'name':_0x1ba7a0[_0x49c4('0x2f')][0x0][_0x49c4('0x3a')]+'\x20'+_0x1ba7a0[_0x49c4('0x2f')][0x0][_0x49c4('0x3b')],'phone':_0x5b96df});}else{logger[_0x49c4('0x28')](_0x49c4('0x3c'));return request({'method':_0x49c4('0x3d'),'uri':util[_0x49c4('0x22')](_0x49c4('0x1b'),_0x4e0209[_0x49c4('0x2b')]),'form':{'operation':_0x49c4('0x3e'),'sessionName':_0xdda586[_0x49c4('0x1d')],'elementType':_0x49c4('0x3f'),'element':JSON['stringify']({'lastname':_0x2d34ca,'phone':_0x5b96df,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x2e')](function(_0x49829e){logger[_0x49c4('0x28')](_0x49c4('0x40'));return BPromise[_0x49c4('0x21')]({'id':_0x49829e[_0x49c4('0x2f')]['id'],'name':_0x49829e[_0x49c4('0x2f')][_0x49c4('0x3b')],'phone':_0x49829e['result']['phone']});})[_0x49c4('0x41')](function(_0x1e7bdc){var _0x38349b=req[_0x49c4('0x2c')]['test']?0x1f4:_0x1e7bdc[_0x49c4('0x26')]||0x1f4;logger[_0x49c4('0x24')](_0x49c4('0x27'),_0x49c4('0x42'),_0x38349b,JSON[_0x49c4('0x1f')](_0x1e7bdc));});}});}function getConnection(_0x3bde49){var _0x1a9593=_0x3bde49[_0x49c4('0x34')];var _0x3c4a1d=_0x3bde49['accessKey'];return request({'method':_0x49c4('0x2a'),'uri':util['format'](_0x49c4('0x1b'),_0x3bde49[_0x49c4('0x2b')]),'qs':{'operation':_0x49c4('0x43'),'username':_0x1a9593},'json':!![]})[_0x49c4('0x2e')](function(_0x2d93d8){if(_0x2d93d8['success']){return request({'method':_0x49c4('0x3d'),'uri':util[_0x49c4('0x22')](_0x49c4('0x1b'),_0x3bde49[_0x49c4('0x2b')]),'form':{'operation':_0x49c4('0x44'),'username':_0x49c4('0x1c'),'accessKey':md5(_0x2d93d8[_0x49c4('0x2f')]['token']+_0x3c4a1d)},'json':!![]});}})[_0x49c4('0x2e')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x20')]){return BPromise[_0x49c4('0x21')](_0x5cfff9[_0x49c4('0x2f')]);}else{throw new Error(util[_0x49c4('0x22')](_0x49c4('0x45'),_0x3bde49['id']));}})[_0x49c4('0x41')](function(_0x2c6be1){var _0x506c71=req[_0x49c4('0x2c')][_0x49c4('0x25')]?0x1f4:_0x2c6be1['statusCode']||0x1f4;logger[_0x49c4('0x24')](_0x49c4('0x27'),_0x49c4('0x46'),_0x506c71,JSON[_0x49c4('0x1f')](_0x2c6be1));});}function request(_0x52a8f7){logger['info'](_0x49c4('0x47'),JSON['stringify'](_0x52a8f7));return rp(_0x52a8f7);}exports[_0x49c4('0x48')]=function(_0x1f941f,_0x3811b2,_0x23d500,_0x240c20,_0x286651,_0x394baa){var _0x563f0b,_0x1f26c2,_0x1550ce,_0x3936d3;_0x394baa[_0x49c4('0x2b')]=intUtil[_0x49c4('0x49')](_0x394baa[_0x49c4('0x2b')]);if(_0x286651&&_0x286651[_0x49c4('0x4a')]){logger[_0x49c4('0x28')](_0x49c4('0x4b'),_0x49c4('0x4c'));_0x3811b2['recordingURL']=util['format'](_0x49c4('0x4d'),_0x394baa[_0x49c4('0x4e')],_0x3811b2['uniqueid'],md5(_0x3811b2['uniqueid']));}else{_0x3811b2[_0x49c4('0x4f')]='';}return getConnection(_0x394baa)['then'](function(_0x54dda8){_0x3936d3=_0x54dda8;return getUser(_0x394baa,_0x240c20?_0x240c20[_0x49c4('0x50')]:'',_0x3936d3);})[_0x49c4('0x2e')](function(_0x4a0a93){_0x563f0b=_0x4a0a93;logger[_0x49c4('0x28')](_0x49c4('0x51'),_0x563f0b['id']);return getEndUser(_0x394baa,_0x3811b2[_0x49c4('0x52')],_0x3811b2[_0x49c4('0x53')],_0x3936d3);})['then'](function(_0x859dde){_0x1f26c2=_0x859dde;logger[_0x49c4('0x28')](_0x49c4('0x54'),_0x1f26c2['id']);return createTicket(_0x394baa,_0x563f0b,_0x1f26c2,_0x23d500,_0x3811b2,_0x23d500[_0x49c4('0x55')],_0x3936d3);})[_0x49c4('0x2e')](function(_0xa431d){_0x1550ce=_0xa431d;logger['info']('Ticket\x20created!');logger[_0x49c4('0x28')](_0x49c4('0x56'),_0x1550ce['id']);var _0x2a6308=util[_0x49c4('0x22')](_0x49c4('0x57'),_0x394baa[_0x49c4('0x2b')],_[_0x49c4('0x58')](_0x1550ce['id'],'x')[0x1]);logger['info'](_0x49c4('0x4b'),_0x49c4('0x59'));emit(util['format'](_0x49c4('0x5a'),_0x240c20['name']),_0x49c4('0x5b'),{'uri':_0x2a6308});})[_0x49c4('0x41')](function(_0x9eaa84){logger[_0x49c4('0x24')](_0x49c4('0x4b'),JSON[_0x49c4('0x1f')](_0x9eaa84));});};exports[_0x49c4('0x5c')]=function(_0x2f520f,_0x483770,_0x3894e0,_0x27b9c2,_0x59dc8d,_0x10dec7,_0x299e74){var _0x4fefbd,_0x39c455,_0x42e0e6,_0x4f50bf;_0x10dec7['remoteUri']=intUtil['stripTrailingSlash'](_0x10dec7['remoteUri']);_0x10dec7[_0x49c4('0x4e')]=intUtil['stripTrailingSlash'](_0x10dec7[_0x49c4('0x4e')]);if(_0x299e74&&_0x299e74[_0x49c4('0x5d')]&&_0x299e74['recordingFormat']!==_0x49c4('0x5e')){logger[_0x49c4('0x28')]('[OUTBOUND]',_0x49c4('0x4c'));_0x483770[_0x49c4('0x4f')]=util[_0x49c4('0x22')](_0x49c4('0x4d'),_0x10dec7['serverUrl'],_0x483770[_0x49c4('0x5f')],md5(_0x483770[_0x49c4('0x5f')]));}return getConnection(_0x10dec7)[_0x49c4('0x2e')](function(_0x20e97d){_0x4f50bf=_0x20e97d;return getUser(_0x10dec7,_0x27b9c2?_0x27b9c2['email']:'',_0x4f50bf);})[_0x49c4('0x2e')](function(_0x4a93bc){_0x4fefbd=_0x4a93bc;logger['info']('The\x20User\x20ID\x20is:',_0x4fefbd['id']);return getEndUser(_0x10dec7,_0x483770['destcalleridname'],_0x483770[_0x49c4('0x60')],_0x4f50bf);})[_0x49c4('0x2e')](function(_0x2ac7df){_0x39c455=_0x2ac7df;logger[_0x49c4('0x28')]('The\x20Enduser\x20ID\x20is:',_0x39c455['id']);return createTicket(_0x10dec7,_0x4fefbd,_0x39c455,_0x3894e0,_0x483770,_0x3894e0['Fields'],_0x4f50bf);})[_0x49c4('0x2e')](function(_0x109b81){_0x42e0e6=_0x109b81;logger[_0x49c4('0x28')](_0x49c4('0x61'));logger[_0x49c4('0x28')](_0x49c4('0x56'),_0x42e0e6['id']);var _0x3ba0d6=util[_0x49c4('0x22')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x10dec7[_0x49c4('0x2b')],_['split'](_0x42e0e6['id'],'x')[0x1]);logger[_0x49c4('0x28')](_0x49c4('0x62'),_0x49c4('0x59'));emit(util[_0x49c4('0x22')](_0x49c4('0x5a'),_0x27b9c2[_0x49c4('0x12')]),_0x49c4('0x5b'),{'uri':_0x3ba0d6});})[_0x49c4('0x41')](function(_0x13d951){logger[_0x49c4('0x24')](_0x49c4('0x62'),JSON[_0x49c4('0x1f')](_0x13d951));});};exports[_0x49c4('0x63')]=function(_0x14bd09,_0x2d5f63,_0x453cf2,_0x371e49,_0x3485c0,_0x4e1544){var _0x5ec201,_0x10f2ec,_0x16b3e8,_0x4af680;_0x4e1544[_0x49c4('0x2b')]=intUtil[_0x49c4('0x49')](_0x4e1544[_0x49c4('0x2b')]);_0x4e1544[_0x49c4('0x4e')]=intUtil['stripTrailingSlash'](_0x4e1544['serverUrl']);if(_0x3485c0&&_0x3485c0['monitor_format']){logger[_0x49c4('0x28')](_0x49c4('0x64'),_0x49c4('0x4c'));_0x2d5f63[_0x49c4('0x4f')]=util[_0x49c4('0x22')](_0x49c4('0x4d'),_0x4e1544[_0x49c4('0x4e')],_0x2d5f63[_0x49c4('0x5f')],md5(_0x2d5f63[_0x49c4('0x5f')]));}else{_0x2d5f63['recordingURL']='';}return getConnection(_0x4e1544)[_0x49c4('0x2e')](function(_0x10fb84){_0x4af680=_0x10fb84;return getUser(_0x4e1544,_0x371e49?_0x371e49[_0x49c4('0x50')]:'',_0x4af680);})['then'](function(_0x4448b9){_0x5ec201=_0x4448b9;logger[_0x49c4('0x28')](_0x49c4('0x51'),_0x5ec201['id']);return getEndUser(_0x4e1544,_0x2d5f63[_0x49c4('0x52')],_0x2d5f63[_0x49c4('0x53')],_0x4af680);})[_0x49c4('0x2e')](function(_0x35fa39){_0x10f2ec=_0x35fa39;logger[_0x49c4('0x28')]('The\x20Enduser\x20ID\x20is:',_0x10f2ec['id']);return createTicket(_0x4e1544,_0x5ec201,_0x10f2ec,_0x453cf2,_0x2d5f63,_0x453cf2[_0x49c4('0x55')],_0x4af680);})[_0x49c4('0x2e')](function(_0x85540f){_0x16b3e8=_0x85540f;logger[_0x49c4('0x28')](_0x49c4('0x61'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x16b3e8['id']);})[_0x49c4('0x41')](function(_0x59aa67){logger[_0x49c4('0x24')]('[ABANDONED]',JSON[_0x49c4('0x1f')](_0x59aa67));});};
\ No newline at end of file
+var _0xa9e0=['variable','variableName','idField','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','Descriptions','format','%s/webservice.php','remoteUri','create','sessionName','HelpDesk','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','catch','test','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','GET','admin','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','username','statusCode','Searching\x20end\x20user\x20with\x20phone','query','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','POST','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','recordingFormat','uniqueid','email','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Fields','The\x20Ticket\x20ID\x20is:','[OUTBOUND]','abandoned','monitor_format','[ABANDONED]','Ticket\x20created!','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','type','toString'];(function(_0x22d094,_0x35ca09){var _0x3e0b3c=function(_0x1b35d0){while(--_0x1b35d0){_0x22d094['push'](_0x22d094['shift']());}};_0x3e0b3c(++_0x35ca09);}(_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(_0xfeb75b[_0x0a9e('0xd')]==='string'&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b['idField']]=_0xfeb75b['content'][_0x0a9e('0xe')]();}else if(_0xfeb75b[_0x0a9e('0xd')]===_0x0a9e('0xf')&&_0xfeb75b[_0x0a9e('0x10')]&&_0xfeb75b[_0x0a9e('0x11')]&&_0x39753a[_0xfeb75b[_0x0a9e('0x10')]]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x10')]][_0x0a9e('0xe')]();}else if(_0xfeb75b[_0x0a9e('0xd')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b[_0x0a9e('0x13')]['name']&&_0xfeb75b[_0x0a9e('0x11')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x14')]['toLowerCase']()]){_0xf81284[_0xfeb75b[_0x0a9e('0x11')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]['name'][_0x0a9e('0x15')]()]['toString']();}});}return _0xf81284;}function createTicket(_0x459eb1,_0x478723,_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7){logger[_0x0a9e('0x16')](_0x0a9e('0x17'));var _0x112016=_[_0x0a9e('0x18')]({'parent_id':'','assigned_user_id':_0x478723['id'],'ticketpriorities':_0x0a9e('0x19'),'ticketstatus':'Open','ticket_title':intUtil[_0x0a9e('0x1a')](_0x205fd6[_0x0a9e('0x1b')],_0x31b1ca,'\x20'),'description':intUtil['getString'](_0x205fd6[_0x0a9e('0x1c')],_0x31b1ca,'\x0a'),'contact_id':_0x106033['id']},getCustomFields(_0x2eb11f,_0x31b1ca));var _0x5a09ef={'method':'POST','uri':util[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1[_0x0a9e('0x1f')]),'form':{'operation':_0x0a9e('0x20'),'username':'admin','sessionName':_0x530eb7[_0x0a9e('0x21')],'elementType':_0x0a9e('0x22'),'element':JSON[_0x0a9e('0x23')](_0x112016)},'json':!![]};return request(_0x5a09ef)[_0x0a9e('0x24')](function(_0x370d86){if(_0x370d86[_0x0a9e('0x25')]){return BPromise[_0x0a9e('0x26')]({'id':_0x370d86['result']['id']});}else{throw new Error(util['format'](_0x0a9e('0x27'),JSON[_0x0a9e('0x23')](_0x370d86[_0x0a9e('0x28')])));}})[_0x0a9e('0x29')](function(_0x526cf3){var _0x384319=req['query'][_0x0a9e('0x2a')]?0x1f4:_0x526cf3['statusCode']||0x1f4;logger[_0x0a9e('0x28')](_0x0a9e('0x2b'),_0x0a9e('0x2c'),_0x384319,JSON[_0x0a9e('0x23')](_0x526cf3));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){logger[_0x0a9e('0x16')]('Getting\x20agent\x20with\x20email',_0x1538a4);return request({'method':_0x0a9e('0x2d'),'uri':util[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x140511[_0x0a9e('0x1f')]),'qs':{'operation':'query','username':_0x0a9e('0x2e'),'sessionName':_0x11c3b6[_0x0a9e('0x21')],'query':util[_0x0a9e('0x1d')](_0x0a9e('0x2f'),_0x1538a4)},'json':!![]})[_0x0a9e('0x24')](function(_0x563b45){if(_0x563b45[_0x0a9e('0x25')]&&_0x563b45[_0x0a9e('0x30')][_0x0a9e('0xb')]){logger['info'](_0x0a9e('0x31'));return BPromise['resolve']({'id':_0x563b45[_0x0a9e('0x30')][0x0]['id'],'email':_0x563b45[_0x0a9e('0x30')][0x0][_0x0a9e('0x32')],'name':_0x563b45[_0x0a9e('0x30')][0x0][_0x0a9e('0x33')]+'\x20'+_0x563b45['result'][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x16')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x26')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x37')],'name':_0x0a9e('0x2e')});}})[_0x0a9e('0x29')](function(_0x5583a4){var _0x44295a=req['query'][_0x0a9e('0x2a')]?0x1f4:_0x5583a4[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x28')](_0x0a9e('0x2b'),'getUser',_0x44295a,JSON[_0x0a9e('0x23')](_0x5583a4));});}function getEndUser(_0xd1836d,_0x1fa90d,_0x15de0e,_0x4853b1){logger['info'](_0x0a9e('0x39'),_0x15de0e);return request({'method':'GET','uri':util[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0xd1836d[_0x0a9e('0x1f')]),'qs':{'operation':_0x0a9e('0x3a'),'username':'admin','sessionName':_0x4853b1[_0x0a9e('0x21')],'query':util[_0x0a9e('0x1d')](_0x0a9e('0x3b'),_0x15de0e,_0x15de0e,_0x15de0e,_0x15de0e,_0x15de0e)},'json':!![]})['then'](function(_0x1dbf74){if(_0x1dbf74[_0x0a9e('0x25')]&&_0x1dbf74[_0x0a9e('0x30')]['length']){logger['info'](_0x0a9e('0x3c'));return BPromise[_0x0a9e('0x26')]({'id':_0x1dbf74['result'][0x0]['id'],'name':_0x1dbf74[_0x0a9e('0x30')][0x0][_0x0a9e('0x3d')]+'\x20'+_0x1dbf74[_0x0a9e('0x30')][0x0][_0x0a9e('0x3e')],'phone':_0x15de0e});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'method':_0x0a9e('0x3f'),'uri':util[_0x0a9e('0x1d')]('%s/webservice.php',_0xd1836d[_0x0a9e('0x1f')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x4853b1[_0x0a9e('0x21')],'elementType':'Contacts','element':JSON[_0x0a9e('0x23')]({'lastname':_0x1fa90d,'phone':_0x15de0e,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x24')](function(_0x274e8e){logger[_0x0a9e('0x16')](_0x0a9e('0x40'));return BPromise[_0x0a9e('0x26')]({'id':_0x274e8e[_0x0a9e('0x30')]['id'],'name':_0x274e8e[_0x0a9e('0x30')][_0x0a9e('0x3e')],'phone':_0x274e8e[_0x0a9e('0x30')][_0x0a9e('0x41')]});})[_0x0a9e('0x29')](function(_0x1a7bce){var _0x11ca30=req[_0x0a9e('0x3a')]['test']?0x1f4:_0x1a7bce['statusCode']||0x1f4;logger[_0x0a9e('0x28')](_0x0a9e('0x2b'),_0x0a9e('0x42'),_0x11ca30,JSON[_0x0a9e('0x23')](_0x1a7bce));});}});}function getConnection(_0x1a69dd){var _0xc9a702=_0x1a69dd[_0x0a9e('0x37')];var _0x445e25=_0x1a69dd[_0x0a9e('0x43')];return request({'method':_0x0a9e('0x2d'),'uri':util[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x1a69dd['remoteUri']),'qs':{'operation':_0x0a9e('0x44'),'username':_0xc9a702},'json':!![]})[_0x0a9e('0x24')](function(_0xdd268f){if(_0xdd268f[_0x0a9e('0x25')]){return request({'method':_0x0a9e('0x3f'),'uri':util[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x1a69dd[_0x0a9e('0x1f')]),'form':{'operation':'login','username':_0x0a9e('0x2e'),'accessKey':md5(_0xdd268f['result'][_0x0a9e('0x45')]+_0x445e25)},'json':!![]});}})[_0x0a9e('0x24')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return BPromise[_0x0a9e('0x26')](_0x8d6dd1[_0x0a9e('0x30')]);}else{throw new Error(util[_0x0a9e('0x1d')](_0x0a9e('0x46'),_0x1a69dd['id']));}})[_0x0a9e('0x29')](function(_0x37be73){var _0x45bf7f=req['query'][_0x0a9e('0x2a')]?0x1f4:_0x37be73[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x28')](_0x0a9e('0x2b'),_0x0a9e('0x47'),_0x45bf7f,JSON[_0x0a9e('0x23')](_0x37be73));});}function request(_0x6054ee){logger[_0x0a9e('0x16')](_0x0a9e('0x48'),JSON['stringify'](_0x6054ee));return rp(_0x6054ee);}exports[_0x0a9e('0x49')]=function(_0x3fe430,_0x4f7240,_0x4ae14b,_0x5ddf84,_0x1adfee,_0x4317e3){var _0x37edaa,_0x11545a,_0x61bb17,_0x30decb;_0x4317e3[_0x0a9e('0x1f')]=intUtil[_0x0a9e('0x4a')](_0x4317e3['remoteUri']);if(_0x1adfee&&_0x1adfee['monitor_format']){logger['info'](_0x0a9e('0x4b'),_0x0a9e('0x4c'));_0x4f7240[_0x0a9e('0x4d')]=util['format'](_0x0a9e('0x4e'),_0x4317e3[_0x0a9e('0x4f')],_0x4f7240['uniqueid'],md5(_0x4f7240['uniqueid']));}else{_0x4f7240[_0x0a9e('0x4d')]='';}return getConnection(_0x4317e3)['then'](function(_0x443e72){_0x30decb=_0x443e72;return getUser(_0x4317e3,_0x5ddf84?_0x5ddf84['email']:'',_0x30decb);})[_0x0a9e('0x24')](function(_0x3c20b2){_0x37edaa=_0x3c20b2;logger[_0x0a9e('0x16')]('The\x20User\x20ID\x20is:',_0x37edaa['id']);return getEndUser(_0x4317e3,_0x4f7240[_0x0a9e('0x50')],_0x4f7240[_0x0a9e('0x51')],_0x30decb);})['then'](function(_0x50f687){_0x11545a=_0x50f687;logger[_0x0a9e('0x16')](_0x0a9e('0x52'),_0x11545a['id']);return createTicket(_0x4317e3,_0x37edaa,_0x11545a,_0x4ae14b,_0x4f7240,_0x4ae14b['Fields'],_0x30decb);})[_0x0a9e('0x24')](function(_0x5ce9ac){_0x61bb17=_0x5ce9ac;logger[_0x0a9e('0x16')]('Ticket\x20created!');logger[_0x0a9e('0x16')]('The\x20Ticket\x20ID\x20is:',_0x61bb17['id']);var _0x5da27d=util['format'](_0x0a9e('0x53'),_0x4317e3['remoteUri'],_[_0x0a9e('0x54')](_0x61bb17['id'],'x')[0x1]);logger[_0x0a9e('0x16')](_0x0a9e('0x4b'),_0x0a9e('0x55'));emit(util[_0x0a9e('0x1d')](_0x0a9e('0x56'),_0x5ddf84[_0x0a9e('0x14')]),_0x0a9e('0x57'),{'uri':_0x5da27d});})['catch'](function(_0x1c693e){logger[_0x0a9e('0x28')](_0x0a9e('0x4b'),JSON[_0x0a9e('0x23')](_0x1c693e));});};exports[_0x0a9e('0x58')]=function(_0x156662,_0x5d86e9,_0x956fbe,_0x26bc80,_0x5239ef,_0x3649cc,_0x5cc8fb){var _0x20c668,_0x5ba1f9,_0x4b3c1a,_0x5674ee;_0x3649cc[_0x0a9e('0x1f')]=intUtil['stripTrailingSlash'](_0x3649cc[_0x0a9e('0x1f')]);_0x3649cc[_0x0a9e('0x4f')]=intUtil[_0x0a9e('0x4a')](_0x3649cc[_0x0a9e('0x4f')]);if(_0x5cc8fb&&_0x5cc8fb[_0x0a9e('0x59')]&&_0x5cc8fb[_0x0a9e('0x59')]!=='none'){logger[_0x0a9e('0x16')]('[OUTBOUND]',_0x0a9e('0x4c'));_0x5d86e9[_0x0a9e('0x4d')]=util[_0x0a9e('0x1d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3649cc[_0x0a9e('0x4f')],_0x5d86e9[_0x0a9e('0x5a')],md5(_0x5d86e9[_0x0a9e('0x5a')]));}return getConnection(_0x3649cc)[_0x0a9e('0x24')](function(_0x497d91){_0x5674ee=_0x497d91;return getUser(_0x3649cc,_0x26bc80?_0x26bc80[_0x0a9e('0x5b')]:'',_0x5674ee);})[_0x0a9e('0x24')](function(_0x54327c){_0x20c668=_0x54327c;logger[_0x0a9e('0x16')](_0x0a9e('0x5c'),_0x20c668['id']);return getEndUser(_0x3649cc,_0x5d86e9[_0x0a9e('0x5d')],_0x5d86e9[_0x0a9e('0x5e')],_0x5674ee);})[_0x0a9e('0x24')](function(_0x4d4a35){_0x5ba1f9=_0x4d4a35;logger[_0x0a9e('0x16')](_0x0a9e('0x52'),_0x5ba1f9['id']);return createTicket(_0x3649cc,_0x20c668,_0x5ba1f9,_0x956fbe,_0x5d86e9,_0x956fbe[_0x0a9e('0x5f')],_0x5674ee);})['then'](function(_0x3528b7){_0x4b3c1a=_0x3528b7;logger['info']('Ticket\x20created!');logger[_0x0a9e('0x16')](_0x0a9e('0x60'),_0x4b3c1a['id']);var _0x9375fb=util[_0x0a9e('0x1d')](_0x0a9e('0x53'),_0x3649cc[_0x0a9e('0x1f')],_[_0x0a9e('0x54')](_0x4b3c1a['id'],'x')[0x1]);logger[_0x0a9e('0x16')](_0x0a9e('0x61'),_0x0a9e('0x55'));emit(util[_0x0a9e('0x1d')](_0x0a9e('0x56'),_0x26bc80[_0x0a9e('0x14')]),_0x0a9e('0x57'),{'uri':_0x9375fb});})[_0x0a9e('0x29')](function(_0x412a72){logger[_0x0a9e('0x28')](_0x0a9e('0x61'),JSON['stringify'](_0x412a72));});};exports[_0x0a9e('0x62')]=function(_0x295763,_0x243d12,_0x4edbb0,_0x1148a1,_0x30944e,_0x4b341d){var _0x83f0b2,_0x56e31e,_0x3ef315,_0x427946;_0x4b341d[_0x0a9e('0x1f')]=intUtil['stripTrailingSlash'](_0x4b341d['remoteUri']);_0x4b341d['serverUrl']=intUtil[_0x0a9e('0x4a')](_0x4b341d[_0x0a9e('0x4f')]);if(_0x30944e&&_0x30944e[_0x0a9e('0x63')]){logger[_0x0a9e('0x16')](_0x0a9e('0x64'),_0x0a9e('0x4c'));_0x243d12[_0x0a9e('0x4d')]=util[_0x0a9e('0x1d')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4b341d[_0x0a9e('0x4f')],_0x243d12[_0x0a9e('0x5a')],md5(_0x243d12[_0x0a9e('0x5a')]));}else{_0x243d12['recordingURL']='';}return getConnection(_0x4b341d)[_0x0a9e('0x24')](function(_0x583b2e){_0x427946=_0x583b2e;return getUser(_0x4b341d,_0x1148a1?_0x1148a1[_0x0a9e('0x5b')]:'',_0x427946);})[_0x0a9e('0x24')](function(_0x4c46c1){_0x83f0b2=_0x4c46c1;logger[_0x0a9e('0x16')](_0x0a9e('0x5c'),_0x83f0b2['id']);return getEndUser(_0x4b341d,_0x243d12[_0x0a9e('0x50')],_0x243d12[_0x0a9e('0x51')],_0x427946);})['then'](function(_0x1d442c){_0x56e31e=_0x1d442c;logger[_0x0a9e('0x16')](_0x0a9e('0x52'),_0x56e31e['id']);return createTicket(_0x4b341d,_0x83f0b2,_0x56e31e,_0x4edbb0,_0x243d12,_0x4edbb0[_0x0a9e('0x5f')],_0x427946);})['then'](function(_0x109ccb){_0x3ef315=_0x109ccb;logger[_0x0a9e('0x16')](_0x0a9e('0x65'));logger[_0x0a9e('0x16')]('The\x20Ticket\x20ID\x20is:',_0x3ef315['id']);})[_0x0a9e('0x29')](function(_0x3511c9){logger[_0x0a9e('0x28')](_0x0a9e('0x64'),JSON[_0x0a9e('0x23')](_0x3511c9));});};
\ No newline at end of file
index b4c1402..22c5eab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed98=['defaults','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','merge','getString','Subjects','Descriptions','Fields','info','Ticket\x20created!','Getting\x20agent\x20with\x20email','type:user\x20role:agent\x20email:%s','then','count','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','format','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','filter','end-user','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','%s/token:%s','token','Basic\x20%s','debug','[HTTP]','GET','type','nameField','customField','content','string','idField','custom_fields','push','variable','variableName','Variable','toLowerCase','name','toString','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','inspect','[ABANDONED]','[ABANDONED]\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','./util','../../../../config/logger','redis'];(function(_0x777b0d,_0x256c5e){var _0x1aaa4d=function(_0x39f8cd){while(--_0x39f8cd){_0x777b0d['push'](_0x777b0d['shift']());}};_0x1aaa4d(++_0x256c5e);}(_0xed98,0xc9));var _0x8ed9=function(_0x37f79e,_0x39f659){_0x37f79e=_0x37f79e-0x0;var _0x501d3f=_0xed98[_0x37f79e];return _0x501d3f;};'use strict';var _=require(_0x8ed9('0x0'));var rp=require(_0x8ed9('0x1'));var md5=require('md5');var util=require(_0x8ed9('0x2'));var Redis=require(_0x8ed9('0x3'));var intUtil=require(_0x8ed9('0x4'));var config=require('../../../../config/environment');var logger=require(_0x8ed9('0x5'))('zendesk');config[_0x8ed9('0x6')]=_[_0x8ed9('0x7')](config[_0x8ed9('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x8ed9('0x8'))(new Redis(config[_0x8ed9('0x6')]));function emit(_0x237ec6,_0x488982,_0x10dd34){io['to'](_0x237ec6)[_0x8ed9('0x9')](_0x488982,_0x10dd34);}var headers={'Content-Type':'application/json','Accept':_0x8ed9('0xa')};function getTicket(_0x46a592,_0x42d8e0,_0x215e62,_0x42ce01,_0xc69f4){logger['info'](_0x8ed9('0xb'));return request({'uri':util['format'](_0x8ed9('0xc'),_0x46a592[_0x8ed9('0xd')]),'method':_0x8ed9('0xe'),'body':{'ticket':_[_0x8ed9('0xf')]({'requester_id':_0x215e62['id'],'submitter_id':_0x42d8e0?_0x42d8e0['id']:undefined,'assignee_id':_0x42d8e0?_0x42d8e0['id']:undefined,'tags':getTags(_0x42ce01['Tags'],'name'),'subject':intUtil[_0x8ed9('0x10')](_0x42ce01[_0x8ed9('0x11')],_0xc69f4,'\x20'),'description':intUtil[_0x8ed9('0x10')](_0x42ce01[_0x8ed9('0x12')],_0xc69f4,'\x0a'),'comment':{'public':![],'body':intUtil[_0x8ed9('0x10')](_0x42ce01['Descriptions'],_0xc69f4,'\x0a')}},getCustomFields(_0x42ce01[_0x8ed9('0x13')],_0xc69f4))}})['then'](function(_0x86aa36){logger[_0x8ed9('0x14')](_0x8ed9('0x15'));return _0x86aa36['ticket'];});}function getUser(_0xbcdeb5,_0x3d525d){logger['info'](_0x8ed9('0x16'),_0x3d525d);return request({'uri':util['format']('%s/search.json',_0xbcdeb5[_0x8ed9('0xd')]),'qs':{'query':util['format'](_0x8ed9('0x17'),_0x3d525d)}})[_0x8ed9('0x18')](function(_0x11fcf6){if(_0x11fcf6[_0x8ed9('0x19')]){logger[_0x8ed9('0x14')]('Agent\x20found!');return _[_0x8ed9('0x1a')](_0x11fcf6[_0x8ed9('0x1b')],{'email':_0x3d525d,'role':'agent'});}else{logger[_0x8ed9('0x14')](_0x8ed9('0x1c'));return request({'uri':util[_0x8ed9('0x1d')]('%s/users/me.json',_0xbcdeb5[_0x8ed9('0xd')])})['then'](function(_0x259a1f){logger[_0x8ed9('0x14')](_0x8ed9('0x1e'));return _0x259a1f[_0x8ed9('0x1f')];});}});}function getEndUser(_0xf0ba65,_0x16fdf9,_0x4e718a){logger[_0x8ed9('0x14')](_0x8ed9('0x20'),_0x4e718a);return request({'uri':util[_0x8ed9('0x1d')](_0x8ed9('0x21'),_0xf0ba65[_0x8ed9('0xd')]),'qs':{'query':util['format'](_0x8ed9('0x22'),_0x4e718a)}})[_0x8ed9('0x18')](function(_0x15f2b6){var _0x3cb9b6;if(_0x15f2b6[_0x8ed9('0x1b')]['length']){_0x15f2b6['results']=_[_0x8ed9('0x23')](_0x15f2b6[_0x8ed9('0x1b')],{'suspended':![],'role':_0x8ed9('0x24')});if(_0x15f2b6[_0x8ed9('0x1b')][_0x8ed9('0x25')]){_0x3cb9b6=_[_0x8ed9('0x26')](_0x15f2b6[_0x8ed9('0x1b')]);}}if(_0x3cb9b6){logger[_0x8ed9('0x14')](_0x8ed9('0x27'));return _0x3cb9b6;}else{logger[_0x8ed9('0x14')](_0x8ed9('0x28'));return request({'uri':util['format'](_0x8ed9('0x29'),_0xf0ba65[_0x8ed9('0xd')]),'method':_0x8ed9('0xe'),'body':{'user':{'role':_0x8ed9('0x24'),'name':util[_0x8ed9('0x1d')](_0x8ed9('0x2a'),_0x16fdf9||_0x4e718a),'phone':_0x4e718a}}})[_0x8ed9('0x18')](function(_0x4f3c05){logger[_0x8ed9('0x14')](_0x8ed9('0x2b'));return _0x4f3c05['user'];});}});}function getAuth(_0x2be714){var _0x507c66;if(_0x2be714[_0x8ed9('0x2c')]===_0x8ed9('0x2d')){_0x507c66=util[_0x8ed9('0x1d')](_0x8ed9('0x2e'),_0x2be714[_0x8ed9('0x2f')],_0x2be714['password']);}else if(_0x2be714[_0x8ed9('0x2c')]==='token'){_0x507c66=util['format'](_0x8ed9('0x30'),_0x2be714[_0x8ed9('0x2f')],_0x2be714[_0x8ed9('0x31')]);}return util['format'](_0x8ed9('0x32'),new Buffer(_0x507c66)['toString']('base64'));}function request(_0x3ca859){logger[_0x8ed9('0x33')](_0x8ed9('0x34'),JSON['stringify'](_0x3ca859));return rp(_[_0x8ed9('0x7')](_0x3ca859,{'method':_0x8ed9('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x424e96,_0x48902c){var _0x548b75=[];if(_0x424e96&&_0x424e96[_0x8ed9('0x25')]>0x0){_0x548b75=_['map'](_0x424e96,_0x48902c);}return _0x548b75;}function getCustomFields(_0x19cbdb,_0x1c04bd){var _0x2ee782=[];var _0x1c582e={'custom_fields':[]};if(_0x19cbdb[_0x8ed9('0x25')]>0x0){_['forEach'](_0x19cbdb,function(_0x1d6389){if(_0x1d6389[_0x8ed9('0x36')]==='string'&&_0x1d6389[_0x8ed9('0x37')]&&!_0x1d6389[_0x8ed9('0x38')]){_0x1c582e[_0x1d6389[_0x8ed9('0x37')]['toLowerCase']()]=_0x1d6389[_0x8ed9('0x39')]['toString']();}else if(_0x1d6389['type']===_0x8ed9('0x3a')&&_0x1d6389[_0x8ed9('0x3b')]&&_0x1d6389[_0x8ed9('0x38')]){_0x1c582e[_0x8ed9('0x3c')][_0x8ed9('0x3d')]({'id':_0x1d6389[_0x8ed9('0x3b')],'value':_0x1d6389[_0x8ed9('0x39')]['toString']()});}else if(_0x1d6389[_0x8ed9('0x36')]===_0x8ed9('0x3e')&&_0x1d6389[_0x8ed9('0x3f')]&&_0x1d6389['idField']&&_0x1d6389[_0x8ed9('0x38')]){_0x1c04bd[_0x1d6389[_0x8ed9('0x3f')]]&&_0x1c582e[_0x8ed9('0x3c')][_0x8ed9('0x3d')]({'id':_0x1d6389[_0x8ed9('0x3b')],'value':_0x1c04bd[_0x1d6389[_0x8ed9('0x3f')]]['toString']()});}else if(_0x1d6389[_0x8ed9('0x36')]==='customVariable'&&_0x1d6389[_0x8ed9('0x40')]&&_0x1d6389[_0x8ed9('0x40')]['name']&&_0x1d6389['idField']&&_0x1d6389[_0x8ed9('0x38')]){_0x1c04bd[_0x1d6389['Variable']['name'][_0x8ed9('0x41')]()]&&_0x1c582e[_0x8ed9('0x3c')][_0x8ed9('0x3d')]({'id':_0x1d6389[_0x8ed9('0x3b')],'value':_0x1c04bd[_0x1d6389['Variable'][_0x8ed9('0x42')][_0x8ed9('0x41')]()][_0x8ed9('0x43')]()});}});}return _0x1c582e;}exports['queue']=function(_0x3534b1,_0x593c43,_0x3bddba,_0xdc6633,_0x2b1c3f,_0x1e3700){var _0x425234,_0x15acc2;_0x1e3700[_0x8ed9('0xd')]=intUtil[_0x8ed9('0x44')](_0x1e3700[_0x8ed9('0xd')]);_0x1e3700[_0x8ed9('0x45')]=intUtil['stripTrailingSlash'](_0x1e3700['serverUrl']);if(_0x2b1c3f&&_0x2b1c3f[_0x8ed9('0x46')]){logger[_0x8ed9('0x14')](_0x8ed9('0x47'),_0x8ed9('0x48'));_0x593c43['recordingURL']=util[_0x8ed9('0x1d')](_0x8ed9('0x49'),_0x1e3700[_0x8ed9('0x45')],_0x593c43[_0x8ed9('0x4a')],md5(_0x593c43['uniqueid']));}else{_0x593c43[_0x8ed9('0x4b')]='';}headers[_0x8ed9('0x4c')]=getAuth(_0x1e3700);return getUser(_0x1e3700,_0xdc6633[_0x8ed9('0x4d')])[_0x8ed9('0x18')](function(_0x175f2f){_0x425234=_0x175f2f;logger[_0x8ed9('0x14')]('The\x20User\x20ID\x20is:',_0x425234['id']);return getEndUser(_0x1e3700,_0x593c43['calleridname'],_0x593c43[_0x8ed9('0x4e')]);})[_0x8ed9('0x18')](function(_0x2798a7){_0x15acc2=_0x2798a7;logger['info'](_0x8ed9('0x4f'),_0x15acc2['id']);return getTicket(_0x1e3700,_0x425234,_0x15acc2,_0x3bddba,_0x593c43);})[_0x8ed9('0x18')](function(_0x16f160){if(_0x16f160){logger[_0x8ed9('0x14')](_0x8ed9('0x50'),_0x16f160['id']);switch(_0x1e3700[_0x8ed9('0x36')]){case'integrationTab':logger[_0x8ed9('0x14')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x8ed9('0x1d')](_0x8ed9('0x51'),_0x1e3700[_0x8ed9('0xd')],_0x425234['id'],_0x16f160['id']),'method':_0x8ed9('0xe')});case _0x8ed9('0x52'):logger[_0x8ed9('0x14')](_0x8ed9('0x47'),_0x8ed9('0x53'));emit(util[_0x8ed9('0x1d')](_0x8ed9('0x54'),_0xdc6633[_0x8ed9('0x42')]),_0x8ed9('0x55'),{'uri':util[_0x8ed9('0x1d')]('%s/agent/tickets/%s',_0x1e3700[_0x8ed9('0xd')],_0x16f160['id'])});break;default:logger[_0x8ed9('0x56')](_0x8ed9('0x47'),_0x8ed9('0x57'));}}})[_0x8ed9('0x58')](function(_0x8831c4){logger['error'](_0x8ed9('0x59'),util['inspect'](_0x8831c4,{'showHidden':!![],'depth':null}));});};exports[_0x8ed9('0x5a')]=function(_0x48bda2,_0x9e1218,_0x4f6205,_0x269e58,_0x94e3a5,_0x4b5344,_0x203aca){var _0x32b1a6,_0x59b6d3;_0x4b5344[_0x8ed9('0xd')]=intUtil[_0x8ed9('0x44')](_0x4b5344[_0x8ed9('0xd')]);_0x4b5344[_0x8ed9('0x45')]=intUtil['stripTrailingSlash'](_0x4b5344[_0x8ed9('0x45')]);if(_0x203aca&&_0x203aca['recordingFormat']&&_0x203aca[_0x8ed9('0x5b')]!==_0x8ed9('0x5c')){logger[_0x8ed9('0x14')](_0x8ed9('0x5d'),_0x8ed9('0x48'));_0x9e1218[_0x8ed9('0x4b')]=util[_0x8ed9('0x1d')](_0x8ed9('0x49'),_0x4b5344[_0x8ed9('0x45')],_0x9e1218[_0x8ed9('0x4a')],md5(_0x9e1218[_0x8ed9('0x4a')]));}headers[_0x8ed9('0x4c')]=getAuth(_0x4b5344);return getUser(_0x4b5344,_0x269e58[_0x8ed9('0x4d')])[_0x8ed9('0x18')](function(_0x9093b7){_0x32b1a6=_0x9093b7;logger['info'](_0x8ed9('0x5e'),_0x32b1a6['id']);return getEndUser(_0x4b5344,_0x9e1218[_0x8ed9('0x5f')],_0x9e1218[_0x8ed9('0x60')]);})[_0x8ed9('0x18')](function(_0x36947d){_0x59b6d3=_0x36947d;logger[_0x8ed9('0x14')]('The\x20Enduser\x20ID\x20is:',_0x59b6d3['id']);return getTicket(_0x4b5344,_0x32b1a6,_0x59b6d3,_0x4f6205,_0x9e1218);})[_0x8ed9('0x18')](function(_0x4fdb40){if(_0x4fdb40){logger['info'](_0x8ed9('0x50'),_0x4fdb40['id']);switch(_0x4b5344[_0x8ed9('0x36')]){case _0x8ed9('0x61'):logger[_0x8ed9('0x14')](_0x8ed9('0x5d'),_0x8ed9('0x62'));return request({'uri':util[_0x8ed9('0x1d')](_0x8ed9('0x51'),_0x4b5344[_0x8ed9('0xd')],_0x32b1a6['id'],_0x4fdb40['id']),'method':'POST'});case _0x8ed9('0x52'):logger[_0x8ed9('0x14')](_0x8ed9('0x5d'),_0x8ed9('0x53'));emit(util['format'](_0x8ed9('0x54'),_0x269e58['name']),_0x8ed9('0x55'),{'uri':util[_0x8ed9('0x1d')](_0x8ed9('0x63'),_0x4b5344[_0x8ed9('0xd')],_0x4fdb40['id'])});break;default:logger[_0x8ed9('0x56')]('[OUTBOUND]','Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x3ae1be){logger[_0x8ed9('0x56')](_0x8ed9('0x64'),util[_0x8ed9('0x65')](_0x3ae1be,{'showHidden':!![],'depth':null}));});};exports['abandoned']=function(_0x100c5c,_0x4c896d,_0x37a075,_0x5dcf03,_0x3b7be8,_0x2f5dad){var _0x55324a,_0x5d2f91;_0x2f5dad[_0x8ed9('0xd')]=intUtil[_0x8ed9('0x44')](_0x2f5dad[_0x8ed9('0xd')]);_0x2f5dad[_0x8ed9('0x45')]=intUtil[_0x8ed9('0x44')](_0x2f5dad['serverUrl']);if(_0x3b7be8&&_0x3b7be8[_0x8ed9('0x46')]){logger[_0x8ed9('0x14')](_0x8ed9('0x66'),_0x8ed9('0x48'));_0x4c896d[_0x8ed9('0x4b')]=util['format'](_0x8ed9('0x49'),_0x2f5dad[_0x8ed9('0x45')],_0x4c896d[_0x8ed9('0x4a')],md5(_0x4c896d['uniqueid']));}else{_0x4c896d[_0x8ed9('0x4b')]='';}headers[_0x8ed9('0x4c')]=getAuth(_0x2f5dad);return getUser(_0x2f5dad)['then'](function(_0x312e6b){_0x55324a=_0x312e6b;logger[_0x8ed9('0x14')](_0x8ed9('0x5e'),_0x55324a['id']);return getEndUser(_0x2f5dad,_0x4c896d['calleridname'],_0x4c896d[_0x8ed9('0x4e')]);})['then'](function(_0x2d6f1a){_0x5d2f91=_0x2d6f1a;logger['info']('The\x20Enduser\x20ID\x20is:',_0x5d2f91['id']);return getTicket(_0x2f5dad,_0x55324a,_0x5d2f91,_0x37a075,_0x4c896d);})['then'](function(_0x51fc4b){if(_0x51fc4b){logger[_0x8ed9('0x14')]('The\x20Ticket\x20ID\x20is:',_0x51fc4b['id']);}})[_0x8ed9('0x58')](function(_0x180ece){logger[_0x8ed9('0x56')](_0x8ed9('0x67'),util[_0x8ed9('0x65')](_0x180ece,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x12a1=['custom_fields','customVariable','Variable','name','toLowerCase','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','POST','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','error','Zendesk\x20account\x20type\x20not\x20recognized','inspect','outbound','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridnum','trigger:browser:url','%s/agent/tickets/%s','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','abandoned','[ABANDONED]','The\x20Ticket\x20ID\x20is:','[ABANDONED]\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','merge','Tags','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','format','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','token','%s/token:%s','username','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','forEach','type','string','nameField','customField','idField','push','content','variable','variableName'];(function(_0x292c39,_0x46338b){var _0x56859d=function(_0x2a27f2){while(--_0x2a27f2){_0x292c39['push'](_0x292c39['shift']());}};_0x56859d(++_0x46338b);}(_0x12a1,0x16f));var _0x112a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x12a1[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x112a('0x0'));var rp=require('request-promise');var md5=require(_0x112a('0x1'));var util=require('util');var Redis=require(_0x112a('0x2'));var intUtil=require(_0x112a('0x3'));var config=require(_0x112a('0x4'));var logger=require(_0x112a('0x5'))(_0x112a('0x6'));config[_0x112a('0x7')]=_[_0x112a('0x8')](config['redis'],{'host':_0x112a('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x112a('0x7')]));function emit(_0x7c1ee9,_0x3455b8,_0x49373a){io['to'](_0x7c1ee9)[_0x112a('0xa')](_0x3455b8,_0x49373a);}var headers={'Content-Type':'application/json','Accept':_0x112a('0xb')};function getTicket(_0x5207be,_0x22b84e,_0x42f8ce,_0x4d3c3f,_0x526aed){logger[_0x112a('0xc')](_0x112a('0xd'));return request({'uri':util['format'](_0x112a('0xe'),_0x5207be[_0x112a('0xf')]),'method':'POST','body':{'ticket':_[_0x112a('0x10')]({'requester_id':_0x42f8ce['id'],'submitter_id':_0x22b84e?_0x22b84e['id']:undefined,'assignee_id':_0x22b84e?_0x22b84e['id']:undefined,'tags':getTags(_0x4d3c3f[_0x112a('0x11')],'name'),'subject':intUtil[_0x112a('0x12')](_0x4d3c3f[_0x112a('0x13')],_0x526aed,'\x20'),'description':intUtil[_0x112a('0x12')](_0x4d3c3f[_0x112a('0x14')],_0x526aed,'\x0a'),'comment':{'public':![],'body':intUtil[_0x112a('0x12')](_0x4d3c3f[_0x112a('0x14')],_0x526aed,'\x0a')}},getCustomFields(_0x4d3c3f[_0x112a('0x15')],_0x526aed))}})[_0x112a('0x16')](function(_0x2432c0){logger['info'](_0x112a('0x17'));return _0x2432c0[_0x112a('0x18')];});}function getUser(_0x1853c2,_0x3451da){logger[_0x112a('0xc')]('Getting\x20agent\x20with\x20email',_0x3451da);return request({'uri':util[_0x112a('0x19')](_0x112a('0x1a'),_0x1853c2[_0x112a('0xf')]),'qs':{'query':util[_0x112a('0x19')](_0x112a('0x1b'),_0x3451da)}})[_0x112a('0x16')](function(_0x44afee){if(_0x44afee[_0x112a('0x1c')]){logger[_0x112a('0xc')](_0x112a('0x1d'));return _[_0x112a('0x1e')](_0x44afee[_0x112a('0x1f')],{'email':_0x3451da,'role':'agent'});}else{logger[_0x112a('0xc')](_0x112a('0x20'));return request({'uri':util['format'](_0x112a('0x21'),_0x1853c2[_0x112a('0xf')])})[_0x112a('0x16')](function(_0x2c8459){logger['info'](_0x112a('0x22'));return _0x2c8459[_0x112a('0x23')];});}});}function getEndUser(_0xf205f3,_0x531c1e,_0x245ce0){logger[_0x112a('0xc')](_0x112a('0x24'),_0x245ce0);return request({'uri':util[_0x112a('0x19')](_0x112a('0x1a'),_0xf205f3[_0x112a('0xf')]),'qs':{'query':util['format'](_0x112a('0x25'),_0x245ce0)}})[_0x112a('0x16')](function(_0x4f62a1){var _0x1a9de9;if(_0x4f62a1[_0x112a('0x1f')][_0x112a('0x26')]){_0x4f62a1[_0x112a('0x1f')]=_[_0x112a('0x27')](_0x4f62a1['results'],{'suspended':![],'role':_0x112a('0x28')});if(_0x4f62a1['results']['length']){_0x1a9de9=_[_0x112a('0x29')](_0x4f62a1[_0x112a('0x1f')]);}}if(_0x1a9de9){logger[_0x112a('0xc')](_0x112a('0x2a'));return _0x1a9de9;}else{logger[_0x112a('0xc')](_0x112a('0x2b'));return request({'uri':util[_0x112a('0x19')](_0x112a('0x2c'),_0xf205f3[_0x112a('0xf')]),'method':'POST','body':{'user':{'role':_0x112a('0x28'),'name':util[_0x112a('0x19')](_0x112a('0x2d'),_0x531c1e||_0x245ce0),'phone':_0x245ce0}}})[_0x112a('0x16')](function(_0x497157){logger[_0x112a('0xc')](_0x112a('0x2e'));return _0x497157[_0x112a('0x23')];});}});}function getAuth(_0x516cde){var _0x3ed2e1;if(_0x516cde[_0x112a('0x2f')]===_0x112a('0x30')){_0x3ed2e1=util['format']('%s:%s',_0x516cde['username'],_0x516cde['password']);}else if(_0x516cde[_0x112a('0x2f')]===_0x112a('0x31')){_0x3ed2e1=util[_0x112a('0x19')](_0x112a('0x32'),_0x516cde[_0x112a('0x33')],_0x516cde[_0x112a('0x31')]);}return util[_0x112a('0x19')](_0x112a('0x34'),new Buffer(_0x3ed2e1)[_0x112a('0x35')](_0x112a('0x36')));}function request(_0x400143){logger[_0x112a('0x37')](_0x112a('0x38'),JSON[_0x112a('0x39')](_0x400143));return rp(_[_0x112a('0x8')](_0x400143,{'method':_0x112a('0x3a'),'headers':headers,'json':!![]}));}function getTags(_0x39fb98,_0x3e3759){var _0x59fe77=[];if(_0x39fb98&&_0x39fb98[_0x112a('0x26')]>0x0){_0x59fe77=_['map'](_0x39fb98,_0x3e3759);}return _0x59fe77;}function getCustomFields(_0x52c8eb,_0x3fef7c){var _0xf3ef8c=[];var _0x503f93={'custom_fields':[]};if(_0x52c8eb['length']>0x0){_[_0x112a('0x3b')](_0x52c8eb,function(_0x48a0aa){if(_0x48a0aa[_0x112a('0x3c')]===_0x112a('0x3d')&&_0x48a0aa[_0x112a('0x3e')]&&!_0x48a0aa[_0x112a('0x3f')]){_0x503f93[_0x48a0aa[_0x112a('0x3e')]['toLowerCase']()]=_0x48a0aa['content']['toString']();}else if(_0x48a0aa[_0x112a('0x3c')]===_0x112a('0x3d')&&_0x48a0aa[_0x112a('0x40')]&&_0x48a0aa[_0x112a('0x3f')]){_0x503f93['custom_fields'][_0x112a('0x41')]({'id':_0x48a0aa['idField'],'value':_0x48a0aa[_0x112a('0x42')][_0x112a('0x35')]()});}else if(_0x48a0aa[_0x112a('0x3c')]===_0x112a('0x43')&&_0x48a0aa[_0x112a('0x44')]&&_0x48a0aa[_0x112a('0x40')]&&_0x48a0aa[_0x112a('0x3f')]){_0x3fef7c[_0x48a0aa[_0x112a('0x44')]]&&_0x503f93[_0x112a('0x45')][_0x112a('0x41')]({'id':_0x48a0aa[_0x112a('0x40')],'value':_0x3fef7c[_0x48a0aa[_0x112a('0x44')]][_0x112a('0x35')]()});}else if(_0x48a0aa['type']===_0x112a('0x46')&&_0x48a0aa[_0x112a('0x47')]&&_0x48a0aa[_0x112a('0x47')][_0x112a('0x48')]&&_0x48a0aa['idField']&&_0x48a0aa[_0x112a('0x3f')]){_0x3fef7c[_0x48a0aa['Variable'][_0x112a('0x48')][_0x112a('0x49')]()]&&_0x503f93[_0x112a('0x45')][_0x112a('0x41')]({'id':_0x48a0aa['idField'],'value':_0x3fef7c[_0x48a0aa[_0x112a('0x47')]['name'][_0x112a('0x49')]()]['toString']()});}});}return _0x503f93;}exports['queue']=function(_0x4c55a7,_0x259b3d,_0x124224,_0x1f5bda,_0x4023ac,_0x524101){var _0x364a33,_0x135aaa;_0x524101['remoteUri']=intUtil[_0x112a('0x4a')](_0x524101[_0x112a('0xf')]);_0x524101[_0x112a('0x4b')]=intUtil[_0x112a('0x4a')](_0x524101[_0x112a('0x4b')]);if(_0x4023ac&&_0x4023ac['monitor_format']){logger['info'](_0x112a('0x4c'),_0x112a('0x4d'));_0x259b3d['recordingURL']=util[_0x112a('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x524101[_0x112a('0x4b')],_0x259b3d[_0x112a('0x4e')],md5(_0x259b3d[_0x112a('0x4e')]));}else{_0x259b3d[_0x112a('0x4f')]='';}headers[_0x112a('0x50')]=getAuth(_0x524101);return getUser(_0x524101,_0x1f5bda[_0x112a('0x51')])[_0x112a('0x16')](function(_0x138c32){_0x364a33=_0x138c32;logger[_0x112a('0xc')](_0x112a('0x52'),_0x364a33['id']);return getEndUser(_0x524101,_0x259b3d[_0x112a('0x53')],_0x259b3d[_0x112a('0x54')]);})[_0x112a('0x16')](function(_0x35859e){_0x135aaa=_0x35859e;logger[_0x112a('0xc')](_0x112a('0x55'),_0x135aaa['id']);return getTicket(_0x524101,_0x364a33,_0x135aaa,_0x124224,_0x259b3d);})[_0x112a('0x16')](function(_0x5adb78){if(_0x5adb78){logger[_0x112a('0xc')]('The\x20Ticket\x20ID\x20is:',_0x5adb78['id']);switch(_0x524101['type']){case _0x112a('0x56'):logger[_0x112a('0xc')](_0x112a('0x4c'),_0x112a('0x57'));return request({'uri':util[_0x112a('0x19')](_0x112a('0x58'),_0x524101[_0x112a('0xf')],_0x364a33['id'],_0x5adb78['id']),'method':_0x112a('0x59')});case _0x112a('0x5a'):logger[_0x112a('0xc')](_0x112a('0x4c'),_0x112a('0x5b'));emit(util['format'](_0x112a('0x5c'),_0x1f5bda[_0x112a('0x48')]),'trigger:browser:url',{'uri':util[_0x112a('0x19')]('%s/agent/tickets/%s',_0x524101['remoteUri'],_0x5adb78['id'])});break;default:logger[_0x112a('0x5d')](_0x112a('0x4c'),_0x112a('0x5e'));}}})['catch'](function(_0x113cc1){logger[_0x112a('0x5d')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x112a('0x5f')](_0x113cc1,{'showHidden':!![],'depth':null}));});};exports[_0x112a('0x60')]=function(_0x508c3d,_0x161e62,_0x430a84,_0x57aa3f,_0x2d36bc,_0x48d337,_0xa94b7c){var _0x228f1c,_0x200986;_0x48d337[_0x112a('0xf')]=intUtil[_0x112a('0x4a')](_0x48d337[_0x112a('0xf')]);_0x48d337['serverUrl']=intUtil[_0x112a('0x4a')](_0x48d337[_0x112a('0x4b')]);if(_0xa94b7c&&_0xa94b7c['recordingFormat']&&_0xa94b7c['recordingFormat']!==_0x112a('0x61')){logger[_0x112a('0xc')](_0x112a('0x62'),'Recording\x20is\x20enabled!');_0x161e62[_0x112a('0x4f')]=util[_0x112a('0x19')](_0x112a('0x63'),_0x48d337[_0x112a('0x4b')],_0x161e62[_0x112a('0x4e')],md5(_0x161e62['uniqueid']));}headers[_0x112a('0x50')]=getAuth(_0x48d337);return getUser(_0x48d337,_0x57aa3f[_0x112a('0x51')])['then'](function(_0x2b9430){_0x228f1c=_0x2b9430;logger[_0x112a('0xc')]('The\x20User\x20ID\x20is:',_0x228f1c['id']);return getEndUser(_0x48d337,_0x161e62['destcalleridname'],_0x161e62[_0x112a('0x64')]);})[_0x112a('0x16')](function(_0x13c1ee){_0x200986=_0x13c1ee;logger[_0x112a('0xc')]('The\x20Enduser\x20ID\x20is:',_0x200986['id']);return getTicket(_0x48d337,_0x228f1c,_0x200986,_0x430a84,_0x161e62);})['then'](function(_0x4eed79){if(_0x4eed79){logger[_0x112a('0xc')]('The\x20Ticket\x20ID\x20is:',_0x4eed79['id']);switch(_0x48d337[_0x112a('0x3c')]){case'integrationTab':logger[_0x112a('0xc')](_0x112a('0x62'),_0x112a('0x57'));return request({'uri':util[_0x112a('0x19')](_0x112a('0x58'),_0x48d337['remoteUri'],_0x228f1c['id'],_0x4eed79['id']),'method':_0x112a('0x59')});case _0x112a('0x5a'):logger[_0x112a('0xc')](_0x112a('0x62'),_0x112a('0x5b'));emit(util[_0x112a('0x19')]('user:%s',_0x57aa3f[_0x112a('0x48')]),_0x112a('0x65'),{'uri':util[_0x112a('0x19')](_0x112a('0x66'),_0x48d337[_0x112a('0xf')],_0x4eed79['id'])});break;default:logger[_0x112a('0x5d')](_0x112a('0x62'),_0x112a('0x5e'));}}})[_0x112a('0x67')](function(_0x31d3ab){logger[_0x112a('0x5d')](_0x112a('0x68'),util[_0x112a('0x5f')](_0x31d3ab,{'showHidden':!![],'depth':null}));});};exports[_0x112a('0x69')]=function(_0x5b8b48,_0x475326,_0x29d90a,_0x35c390,_0x1e5a08,_0x17132a){var _0x1f447a,_0x5834d3;_0x17132a[_0x112a('0xf')]=intUtil[_0x112a('0x4a')](_0x17132a['remoteUri']);_0x17132a['serverUrl']=intUtil[_0x112a('0x4a')](_0x17132a['serverUrl']);if(_0x1e5a08&&_0x1e5a08['monitor_format']){logger[_0x112a('0xc')](_0x112a('0x6a'),_0x112a('0x4d'));_0x475326[_0x112a('0x4f')]=util[_0x112a('0x19')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x17132a[_0x112a('0x4b')],_0x475326['uniqueid'],md5(_0x475326[_0x112a('0x4e')]));}else{_0x475326[_0x112a('0x4f')]='';}headers['Authorization']=getAuth(_0x17132a);return getUser(_0x17132a)['then'](function(_0x515cea){_0x1f447a=_0x515cea;logger['info'](_0x112a('0x52'),_0x1f447a['id']);return getEndUser(_0x17132a,_0x475326[_0x112a('0x53')],_0x475326[_0x112a('0x54')]);})[_0x112a('0x16')](function(_0x57e710){_0x5834d3=_0x57e710;logger[_0x112a('0xc')](_0x112a('0x55'),_0x5834d3['id']);return getTicket(_0x17132a,_0x1f447a,_0x5834d3,_0x29d90a,_0x475326);})[_0x112a('0x16')](function(_0x184265){if(_0x184265){logger[_0x112a('0xc')](_0x112a('0x6b'),_0x184265['id']);}})['catch'](function(_0x3b43fa){logger['error'](_0x112a('0x6c'),util[_0x112a('0x5f')](_0x3b43fa,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index cb1e81a..4e38fa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['Agent\x20found!','Using\x20the\x20admin\x20account!','find','error','The\x20failing\x20result\x20is','stringify','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','Searching\x20enduser\x20with\x20phone','https://crm.%s/crm/private/json/Contacts/searchRecords','((Phone:%s))','Enduser\x20found\x20in\x20Contacts!','Contacts','row','length','val','content','Enduser\x20found\x20in\x20Leads!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','https://crm.%s/crm/private/xml/Leads/insertRecords','<Leads><row\x20no=\x221\x22><FL\x20val=\x22First\x20Name\x22>%s</FL><FL\x20val=\x22Last\x20Name\x22>%s</FL><FL\x20val=\x22Phone\x22>%s</FL></row></Leads>','parse','https://crm.%s/crm/private/json/Leads/getRecordById','Error\x20on\x20Lead\x20creation:\x20','debug','forEach','type','string','idField','toString','variable','variableName','customVariable','name','toLowerCase','Variable','split','queue','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Inbound','The\x20Call\x20ID\x20is:','user:%s','https://crm.%s/crm/EntityInfo.do?module=Calls&id=%s','catch','recordingFormat','none','destcalleridname','destcalleridnum','Outbound','[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','[ABANDONED]','calleridname','lodash','md5','util','./util','entities','moment','ioredis','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','application/json','info','merge','inbound','outbound','agentcalledAt','format','YYYY-MM-DD\x20HH:mm:ss','getString','Subjects','Descriptions','called','Call\x20Result','connect','rejected','Rejected','abandoned','Abandoned','Call\x20Duration','utc','talktime','endtime','starttime','mm:ss','CONTACTID','LEADID','SEMODULE','Leads','<Calls><row\x20no=\x221\x22>','hasOwnProperty','<FL\x20val=\x22%s\x22>%s</FL>','encodeXML','</row></Calls>','POST','https://crm.%s/crm/private/xml/Calls/insertRecords','authToken','crmapi','then','toJson','response','result','recorddetail','Call\x20created!','Error\x20on\x20call\x20creation:\x20','GET','https://crm.%s/crm/private/json/Users/getUsers','host','users','user','Standard'];(function(_0x2aefb6,_0x1bd384){var _0x202772=function(_0x507d3f){while(--_0x507d3f){_0x2aefb6['push'](_0x2aefb6['shift']());}};_0x202772(++_0x1bd384);}(_0x24ca,0x1bc));var _0xa24c=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x24ca[_0x279d37];return _0x530173;};'use strict';var _=require(_0xa24c('0x0'));var rp=require('request-promise');var md5=require(_0xa24c('0x1'));var util=require(_0xa24c('0x2'));var intUtil=require(_0xa24c('0x3'));var parser=require('xml2json');var entities=require(_0xa24c('0x4'));var moment=require(_0xa24c('0x5'));var Redis=require(_0xa24c('0x6'));var config=require(_0xa24c('0x7'));var logger=require(_0xa24c('0x8'))(_0xa24c('0x9'));config[_0xa24c('0xa')]=_[_0xa24c('0xb')](config[_0xa24c('0xa')],{'host':_0xa24c('0xc'),'port':0x18eb});var io=require(_0xa24c('0xd'))(new Redis(config['redis']));function emit(_0x42d89c,_0x3a5727,_0x2d645c){io['to'](_0x42d89c)['emit'](_0x3a5727,_0x2d645c);}var headers={'Content-Type':_0xa24c('0xe'),'Accept':_0xa24c('0xe')};function getCall(_0x288f76,_0x211003,_0x169632,_0x43aa5a,_0x1a71a8,_0xc82af0){logger[_0xa24c('0xf')]('Creating\x20new\x20call...');var _0x43bcd3=_[_0xa24c('0x10')]({'SMOWNERID':_0x211003['id'],'Call Type':_0xc82af0||_0xa24c('0x11'),'Call Start Time':(_0xc82af0===_0xa24c('0x12')?_0x1a71a8['starttime']:_0x1a71a8[_0xa24c('0x13')])||moment()[_0xa24c('0x14')](_0xa24c('0x15')),'Subject':intUtil[_0xa24c('0x16')](_0x43aa5a[_0xa24c('0x17')],_0x1a71a8,'\x20'),'Description':intUtil[_0xa24c('0x16')](_0x43aa5a[_0xa24c('0x18')],_0x1a71a8,'\x0a')},getCustomFields(_0x43aa5a['Fields'],_0x1a71a8));switch(_0x1a71a8['lastevent']){case _0xa24c('0x19'):_0x43bcd3[_0xa24c('0x1a')]='Called';break;case'complete':case _0xa24c('0x1b'):_0x43bcd3[_0xa24c('0x1a')]='Answered';break;case _0xa24c('0x1c'):_0x43bcd3['Call\x20Result']=_0xa24c('0x1d');break;case _0xa24c('0x1e'):_0x43bcd3[_0xa24c('0x1a')]=_0xa24c('0x1f');break;default:}if(_0x1a71a8['talktime']){_0x43bcd3[_0xa24c('0x20')]=moment[_0xa24c('0x21')](parseInt(_0x1a71a8[_0xa24c('0x22')])*0x3e8)['format']('mm:ss');}else if(_0x1a71a8['answertime']&&_0x1a71a8['endtime']){_0x43bcd3[_0xa24c('0x20')]=moment[_0xa24c('0x21')](moment(_0x1a71a8[_0xa24c('0x23')],_0xa24c('0x15'))['diff'](moment(_0x1a71a8[_0xa24c('0x24')],'YYYY-MM-DD\x20HH:mm:ss')))[_0xa24c('0x14')](_0xa24c('0x25'));}if(_0x169632['CONTACTID']){_0x43bcd3[_0xa24c('0x26')]=_0x169632[_0xa24c('0x26')];}else if(_0x169632[_0xa24c('0x27')]){_0x43bcd3[_0xa24c('0x28')]=_0xa24c('0x29');_0x43bcd3['SEID']=_0x169632[_0xa24c('0x27')];}var _0x5cc9cb=_0xa24c('0x2a');for(var _0x3951ae in _0x43bcd3){if(_0x43bcd3[_0xa24c('0x2b')](_0x3951ae)){_0x5cc9cb+=util['format'](_0xa24c('0x2c'),entities[_0xa24c('0x2d')](_0x3951ae),entities[_0xa24c('0x2d')](_0x43bcd3[_0x3951ae]));}}_0x5cc9cb+=_0xa24c('0x2e');return request({'method':_0xa24c('0x2f'),'uri':util[_0xa24c('0x14')](_0xa24c('0x30'),_0x288f76['host']),'qs':{'authtoken':_0x288f76[_0xa24c('0x31')],'scope':_0xa24c('0x32'),'xmlData':_0x5cc9cb},'json':!![]})[_0xa24c('0x33')](function(_0x12dbdc){_0x12dbdc=JSON['parse'](parser[_0xa24c('0x34')](_0x12dbdc));if(_0x12dbdc[_0xa24c('0x35')]){if(_0x12dbdc[_0xa24c('0x35')]['result']&&_0x12dbdc[_0xa24c('0x35')][_0xa24c('0x36')][_0xa24c('0x37')]){logger['info'](_0xa24c('0x38'));return{'id':_0x12dbdc['response'][_0xa24c('0x36')][_0xa24c('0x37')]['FL'][0x0]['$t']};}}throw new Error(_0xa24c('0x39')+JSON['stringify'](_0x12dbdc));});}function getUser(_0x1f52f8,_0x53f90){_0x53f90&&logger[_0xa24c('0xf')]('Getting\x20agent\x20with\x20email',_0x53f90);return request({'method':_0xa24c('0x3a'),'uri':util['format'](_0xa24c('0x3b'),_0x1f52f8[_0xa24c('0x3c')]),'qs':{'type':'AllUsers','authtoken':_0x1f52f8['authToken'],'scope':_0xa24c('0x32')},'json':!![]})[_0xa24c('0x33')](function(_0x182e86){if(_0x182e86[_0xa24c('0x3d')]&&_0x182e86[_0xa24c('0x3d')][_0xa24c('0x3e')]){var _0x4416a4;if(_0x53f90){_0x4416a4=_['find'](_0x182e86[_0xa24c('0x3d')][_0xa24c('0x3e')],{'email':_0x53f90,'profile':_0xa24c('0x3f')});}if(_0x4416a4){logger[_0xa24c('0xf')](_0xa24c('0x40'));}else{logger[_0xa24c('0xf')](_0xa24c('0x41'));_0x4416a4=_[_0xa24c('0x42')](_0x182e86[_0xa24c('0x3d')][_0xa24c('0x3e')],{'profile':'Administrator'});}return _0x4416a4;}else{logger[_0xa24c('0x43')](_0xa24c('0x44'),JSON[_0xa24c('0x45')](_0x182e86));throw new Error(_0xa24c('0x46')+JSON['stringify'](_0x182e86));}});}function getEndUser(_0x56a485,_0x19a65f,_0x56ef4d){logger[_0xa24c('0xf')](_0xa24c('0x47'),_0x56ef4d);return request({'method':_0xa24c('0x3a'),'uri':util[_0xa24c('0x14')](_0xa24c('0x48'),_0x56a485['host']),'qs':{'authtoken':_0x56a485['authToken'],'scope':_0xa24c('0x32'),'criteria':util[_0xa24c('0x14')](_0xa24c('0x49'),_0x56ef4d)},'json':!![]})[_0xa24c('0x33')](function(_0x722488){if(_0x722488[_0xa24c('0x35')]&&_0x722488['response']['result']){logger[_0xa24c('0xf')](_0xa24c('0x4a'));var _0x4037d6={};var _0x2101f8=_0x722488[_0xa24c('0x35')]['result'][_0xa24c('0x4b')][_0xa24c('0x4c')]['no']?_0x722488['response']['result'][_0xa24c('0x4b')][_0xa24c('0x4c')]['FL']:_0x722488[_0xa24c('0x35')]['result']['Contacts'][_0xa24c('0x4c')][0x0]['FL'];for(var _0x32af67=0x0,_0x31048c=_0x2101f8[_0xa24c('0x4d')];_0x32af67<_0x31048c;_0x32af67++){_0x4037d6[_0x2101f8[_0x32af67][_0xa24c('0x4e')]]=_0x2101f8[_0x32af67][_0xa24c('0x4f')];}return _0x4037d6;}else{return request({'method':_0xa24c('0x3a'),'uri':util[_0xa24c('0x14')]('https://crm.%s/crm/private/json/Leads/searchRecords',_0x56a485['host']),'qs':{'authtoken':_0x56a485[_0xa24c('0x31')],'scope':_0xa24c('0x32'),'criteria':util[_0xa24c('0x14')]('((Phone:%s))',_0x56ef4d)},'json':!![]})[_0xa24c('0x33')](function(_0x51df93){if(_0x51df93[_0xa24c('0x35')]&&_0x51df93[_0xa24c('0x35')][_0xa24c('0x36')]){logger[_0xa24c('0xf')](_0xa24c('0x50'));var _0x35ed8a={};var _0x3f52fe=_0x51df93[_0xa24c('0x35')]['result'][_0xa24c('0x29')][_0xa24c('0x4c')]['no']?_0x51df93[_0xa24c('0x35')]['result'][_0xa24c('0x29')][_0xa24c('0x4c')]['FL']:_0x51df93[_0xa24c('0x35')][_0xa24c('0x36')][_0xa24c('0x29')][_0xa24c('0x4c')][0x0]['FL'];for(var _0x1a20bd=0x0,_0x46f725=_0x3f52fe[_0xa24c('0x4d')];_0x1a20bd<_0x46f725;_0x1a20bd++){_0x35ed8a[_0x3f52fe[_0x1a20bd][_0xa24c('0x4e')]]=_0x3f52fe[_0x1a20bd][_0xa24c('0x4f')];}return _0x35ed8a;}else{logger['info'](_0xa24c('0x51'));_0x19a65f=getName(_0x19a65f);return request({'method':_0xa24c('0x2f'),'uri':util[_0xa24c('0x14')](_0xa24c('0x52'),_0x56a485[_0xa24c('0x3c')]),'qs':{'authtoken':_0x56a485[_0xa24c('0x31')],'scope':_0xa24c('0x32'),'xmlData':util[_0xa24c('0x14')](_0xa24c('0x53'),entities['encodeXML'](_0x19a65f[0x0]),entities['encodeXML'](_0x19a65f[0x1]),_0x56ef4d)},'json':!![]})[_0xa24c('0x33')](function(_0x5c14df){_0x5c14df=JSON[_0xa24c('0x54')](parser[_0xa24c('0x34')](_0x5c14df));if(_0x5c14df['response']){if(_0x5c14df[_0xa24c('0x35')][_0xa24c('0x36')]&&_0x5c14df[_0xa24c('0x35')]['result']['recorddetail']){logger[_0xa24c('0xf')]('Enduser\x20created.');return request({'method':_0xa24c('0x3a'),'uri':util[_0xa24c('0x14')](_0xa24c('0x55'),_0x56a485[_0xa24c('0x3c')]),'qs':{'authtoken':_0x56a485[_0xa24c('0x31')],'scope':_0xa24c('0x32'),'id':_0x5c14df[_0xa24c('0x35')][_0xa24c('0x36')][_0xa24c('0x37')]['FL'][0x0]['$t']},'json':!![]});}}throw new Error(_0xa24c('0x56')+JSON['stringify'](_0x5c14df));})[_0xa24c('0x33')](function(_0x2759c1){if(_0x2759c1[_0xa24c('0x35')]){if(_0x2759c1['response']['result']){var _0x487cc9={};for(var _0x2da4f0=0x0,_0x5c2367=_0x2759c1[_0xa24c('0x35')][_0xa24c('0x36')]['Leads'][_0xa24c('0x4c')]['FL'][_0xa24c('0x4d')];_0x2da4f0<_0x5c2367;_0x2da4f0++){_0x487cc9[_0x2759c1[_0xa24c('0x35')][_0xa24c('0x36')][_0xa24c('0x29')][_0xa24c('0x4c')]['FL'][_0x2da4f0][_0xa24c('0x4e')]]=_0x2759c1[_0xa24c('0x35')]['result'][_0xa24c('0x29')]['row']['FL'][_0x2da4f0]['content'];}return _0x487cc9;}}throw new Error('Error\x20on\x20Lead\x20retrieve:\x20'+JSON['stringify'](_0x2759c1));});}});}});}function request(_0x49b0df){logger[_0xa24c('0x57')]('[HTTP]',JSON[_0xa24c('0x45')](_0x49b0df));return rp(_0x49b0df);}function getCustomFields(_0x3fd3f9,_0x5247f9){var _0x1a5f17={};if(_0x3fd3f9[_0xa24c('0x4d')]>0x0){_[_0xa24c('0x58')](_0x3fd3f9,function(_0x6f5aad){if(_0x6f5aad[_0xa24c('0x59')]===_0xa24c('0x5a')&&_0x6f5aad[_0xa24c('0x5b')]){_0x1a5f17[_0x6f5aad[_0xa24c('0x5b')]]=_0x6f5aad[_0xa24c('0x4f')][_0xa24c('0x5c')]();}else if(_0x6f5aad[_0xa24c('0x59')]===_0xa24c('0x5d')&&_0x6f5aad['variableName']&&_0x6f5aad[_0xa24c('0x5b')]&&_0x5247f9[_0x6f5aad[_0xa24c('0x5e')]]){_0x1a5f17[_0x6f5aad['idField']]=_0x5247f9[_0x6f5aad[_0xa24c('0x5e')]][_0xa24c('0x5c')]();}else if(_0x6f5aad[_0xa24c('0x59')]===_0xa24c('0x5f')&&_0x6f5aad['Variable']&&_0x6f5aad['Variable'][_0xa24c('0x60')]&&_0x6f5aad['idField']&&_0x5247f9[_0x6f5aad['Variable'][_0xa24c('0x60')][_0xa24c('0x61')]()]){_0x1a5f17[_0x6f5aad[_0xa24c('0x5b')]]=_0x5247f9[_0x6f5aad[_0xa24c('0x62')]['name']['toLowerCase']()][_0xa24c('0x5c')]();}});}return _0x1a5f17;}function getName(_0x512b6f){if(_0x512b6f['indexOf']('\x20')>0x0){var _0xfcc193=_0x512b6f[_0xa24c('0x63')](/ (.+)/);if(_0xfcc193[0x1]){return _0xfcc193;}}return[_0x512b6f,_0x512b6f];}exports[_0xa24c('0x64')]=function(_0x54528f,_0x2fbc8b,_0x128e5b,_0x5c3285,_0x37d4da,_0x3f306d){var _0x3096bf,_0x4bee5c;if(_0x37d4da&&_0x37d4da[_0xa24c('0x65')]){logger[_0xa24c('0xf')](_0xa24c('0x66'),_0xa24c('0x67'));_0x2fbc8b[_0xa24c('0x68')]=util['format'](_0xa24c('0x69'),_0x3f306d[_0xa24c('0x6a')],_0x2fbc8b[_0xa24c('0x6b')],md5(_0x2fbc8b[_0xa24c('0x6b')]));}else{_0x2fbc8b[_0xa24c('0x68')]='';}return getUser(_0x3f306d,_0x5c3285[_0xa24c('0x6c')])[_0xa24c('0x33')](function(_0x4f4ed9){_0x3096bf=_0x4f4ed9;logger[_0xa24c('0xf')](_0xa24c('0x6d'),_0x3096bf['id']);return getEndUser(_0x3f306d,_0x2fbc8b['calleridname'],_0x2fbc8b[_0xa24c('0x6e')]);})[_0xa24c('0x33')](function(_0x14da5e){_0x4bee5c=_0x14da5e;logger[_0xa24c('0xf')](_0xa24c('0x6f'),_0x4bee5c[_0xa24c('0x26')]||_0x4bee5c[_0xa24c('0x27')]);return getCall(_0x3f306d,_0x3096bf,_0x4bee5c,_0x128e5b,_0x2fbc8b,_0xa24c('0x70'));})[_0xa24c('0x33')](function(_0x32ddc3){if(_0x32ddc3){logger['info'](_0xa24c('0x71'),_0x32ddc3['id']);logger[_0xa24c('0xf')](_0xa24c('0x66'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xa24c('0x14')](_0xa24c('0x72'),_0x5c3285[_0xa24c('0x60')]),'trigger:browser:url',{'uri':util[_0xa24c('0x14')](_0xa24c('0x73'),_0x3f306d[_0xa24c('0x3c')],_0x32ddc3['id'])});}})[_0xa24c('0x74')](function(_0x320901){logger[_0xa24c('0x43')]('[QUEUE]',JSON['stringify'](_0x320901));});};exports[_0xa24c('0x12')]=function(_0x4b281b,_0x16678e,_0x1879ae,_0x26427c,_0x4073c5,_0x12d715,_0x58e328){var _0x1f7b20,_0x39c76a;if(_0x58e328&&_0x58e328[_0xa24c('0x75')]&&_0x58e328[_0xa24c('0x75')]!==_0xa24c('0x76')){logger[_0xa24c('0xf')]('[OUTBOUND]',_0xa24c('0x67'));_0x16678e[_0xa24c('0x68')]=util[_0xa24c('0x14')](_0xa24c('0x69'),_0x12d715['serverUrl'],_0x16678e[_0xa24c('0x6b')],md5(_0x16678e['uniqueid']));}return getUser(_0x12d715,_0x26427c[_0xa24c('0x6c')])[_0xa24c('0x33')](function(_0x342442){_0x1f7b20=_0x342442;logger[_0xa24c('0xf')]('The\x20User\x20ID\x20is:',_0x1f7b20['id']);return getEndUser(_0x12d715,_0x16678e[_0xa24c('0x77')],_0x16678e[_0xa24c('0x78')]);})['then'](function(_0x8e5e2a){_0x39c76a=_0x8e5e2a;logger[_0xa24c('0xf')](_0xa24c('0x6f'),_0x39c76a[_0xa24c('0x26')]||_0x39c76a[_0xa24c('0x27')]);return getCall(_0x12d715,_0x1f7b20,_0x39c76a,_0x1879ae,_0x16678e,_0xa24c('0x79'));})[_0xa24c('0x33')](function(_0x37089c){if(_0x37089c){logger['info'](_0xa24c('0x71'),_0x37089c['id']);logger[_0xa24c('0xf')](_0xa24c('0x7a'),_0xa24c('0x7b'));emit(util[_0xa24c('0x14')](_0xa24c('0x72'),_0x26427c[_0xa24c('0x60')]),_0xa24c('0x7c'),{'uri':util[_0xa24c('0x14')](_0xa24c('0x73'),_0x12d715[_0xa24c('0x3c')],_0x37089c['id'])});}})['catch'](function(_0x283c5b){logger[_0xa24c('0x43')]('[OUTBOUND]',JSON[_0xa24c('0x45')](_0x283c5b));});};exports[_0xa24c('0x1e')]=function(_0x1f7c59,_0x4f0f11,_0x5b4468,_0xf03c2f,_0x4c9b19,_0x53928f){var _0x105ed5,_0x3101d5;if(_0x4c9b19&&_0x4c9b19[_0xa24c('0x65')]){logger[_0xa24c('0xf')](_0xa24c('0x7d'),_0xa24c('0x67'));_0x4f0f11['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x53928f[_0xa24c('0x6a')],_0x4f0f11['uniqueid'],md5(_0x4f0f11['uniqueid']));}else{_0x4f0f11[_0xa24c('0x68')]='';}return getUser(_0x53928f)[_0xa24c('0x33')](function(_0x32d14a){_0x105ed5=_0x32d14a;logger[_0xa24c('0xf')](_0xa24c('0x6d'),_0x105ed5['id']);return getEndUser(_0x53928f,_0x4f0f11[_0xa24c('0x7e')],_0x4f0f11[_0xa24c('0x6e')]);})[_0xa24c('0x33')](function(_0x2544fc){_0x3101d5=_0x2544fc;logger['info'](_0xa24c('0x6f'),_0x3101d5[_0xa24c('0x26')]||_0x3101d5[_0xa24c('0x27')]);return getCall(_0x53928f,_0x105ed5,_0x3101d5,_0x5b4468,_0x4f0f11,_0xa24c('0x70'));})[_0xa24c('0x33')](function(_0x84aa80){if(_0x84aa80){logger[_0xa24c('0xf')](_0xa24c('0x71'),_0x84aa80['id']);}})[_0xa24c('0x74')](function(_0x3c5495){logger[_0xa24c('0x43')](_0xa24c('0x7d'),JSON['stringify'](_0x3c5495));});};
\ No newline at end of file
+var _0x9c5a=['parse','toJson','response','result','recorddetail','Call\x20created!','Error\x20on\x20call\x20creation:\x20','stringify','Getting\x20agent\x20with\x20email','https://crm.%s/crm/private/json/Users/getUsers','AllUsers','authToken','user','find','users','Standard','Using\x20the\x20admin\x20account!','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','Searching\x20enduser\x20with\x20phone','GET','https://crm.%s/crm/private/json/Contacts/searchRecords','((Phone:%s))','Contacts','row','val','content','https://crm.%s/crm/private/json/Leads/searchRecords','Enduser\x20found\x20in\x20Leads!','length','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<Leads><row\x20no=\x221\x22><FL\x20val=\x22First\x20Name\x22>%s</FL><FL\x20val=\x22Last\x20Name\x22>%s</FL><FL\x20val=\x22Phone\x22>%s</FL></row></Leads>','https://crm.%s/crm/private/json/Leads/getRecordById','Error\x20on\x20Lead\x20creation:\x20','debug','[HTTP]','forEach','type','string','idField','toString','variable','variableName','customVariable','name','Variable','toLowerCase','indexOf','split','queue','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Call\x20ID\x20is:','[QUEUE]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','recordingFormat','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','Outbound','user:%s','Inbound','lodash','request-promise','util','./util','xml2json','entities','ioredis','../../../../config/environment','zoho','defaults','redis','emit','application/json','info','Creating\x20new\x20call...','merge','inbound','outbound','starttime','format','YYYY-MM-DD\x20HH:mm:ss','getString','Subjects','Descriptions','Fields','lastevent','called','Call\x20Result','complete','connect','rejected','Rejected','abandoned','Abandoned','talktime','Call\x20Duration','utc','mm:ss','endtime','diff','CONTACTID','LEADID','Leads','SEID','<Calls><row\x20no=\x221\x22>','hasOwnProperty','encodeXML','</row></Calls>','POST','https://crm.%s/crm/private/xml/Calls/insertRecords','host','crmapi','then'];(function(_0x182baf,_0x1375fb){var _0x4d10f1=function(_0x1e0dde){while(--_0x1e0dde){_0x182baf['push'](_0x182baf['shift']());}};_0x4d10f1(++_0x1375fb);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x3a4842,_0xaf4036){_0x3a4842=_0x3a4842-0x0;var _0x1edde6=_0x9c5a[_0x3a4842];return _0x1edde6;};'use strict';var _=require(_0xa9c5('0x0'));var rp=require(_0xa9c5('0x1'));var md5=require('md5');var util=require(_0xa9c5('0x2'));var intUtil=require(_0xa9c5('0x3'));var parser=require(_0xa9c5('0x4'));var entities=require(_0xa9c5('0x5'));var moment=require('moment');var Redis=require(_0xa9c5('0x6'));var config=require(_0xa9c5('0x7'));var logger=require('../../../../config/logger')(_0xa9c5('0x8'));config['redis']=_[_0xa9c5('0x9')](config[_0xa9c5('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa9c5('0xa')]));function emit(_0x16f331,_0x52afb2,_0x2e2b3e){io['to'](_0x16f331)[_0xa9c5('0xb')](_0x52afb2,_0x2e2b3e);}var headers={'Content-Type':'application/json','Accept':_0xa9c5('0xc')};function getCall(_0x40a79d,_0x4a19c0,_0x4c55e9,_0x38e106,_0x11421c,_0x45f8d8){logger[_0xa9c5('0xd')](_0xa9c5('0xe'));var _0x4492a4=_[_0xa9c5('0xf')]({'SMOWNERID':_0x4a19c0['id'],'Call Type':_0x45f8d8||_0xa9c5('0x10'),'Call Start Time':(_0x45f8d8===_0xa9c5('0x11')?_0x11421c[_0xa9c5('0x12')]:_0x11421c['agentcalledAt'])||moment()[_0xa9c5('0x13')](_0xa9c5('0x14')),'Subject':intUtil[_0xa9c5('0x15')](_0x38e106[_0xa9c5('0x16')],_0x11421c,'\x20'),'Description':intUtil[_0xa9c5('0x15')](_0x38e106[_0xa9c5('0x17')],_0x11421c,'\x0a')},getCustomFields(_0x38e106[_0xa9c5('0x18')],_0x11421c));switch(_0x11421c[_0xa9c5('0x19')]){case _0xa9c5('0x1a'):_0x4492a4[_0xa9c5('0x1b')]='Called';break;case _0xa9c5('0x1c'):case _0xa9c5('0x1d'):_0x4492a4[_0xa9c5('0x1b')]='Answered';break;case _0xa9c5('0x1e'):_0x4492a4[_0xa9c5('0x1b')]=_0xa9c5('0x1f');break;case _0xa9c5('0x20'):_0x4492a4[_0xa9c5('0x1b')]=_0xa9c5('0x21');break;default:}if(_0x11421c[_0xa9c5('0x22')]){_0x4492a4[_0xa9c5('0x23')]=moment[_0xa9c5('0x24')](parseInt(_0x11421c[_0xa9c5('0x22')])*0x3e8)[_0xa9c5('0x13')](_0xa9c5('0x25'));}else if(_0x11421c['answertime']&&_0x11421c[_0xa9c5('0x26')]){_0x4492a4[_0xa9c5('0x23')]=moment['utc'](moment(_0x11421c['endtime'],_0xa9c5('0x14'))[_0xa9c5('0x27')](moment(_0x11421c[_0xa9c5('0x12')],_0xa9c5('0x14'))))[_0xa9c5('0x13')](_0xa9c5('0x25'));}if(_0x4c55e9['CONTACTID']){_0x4492a4['CONTACTID']=_0x4c55e9[_0xa9c5('0x28')];}else if(_0x4c55e9[_0xa9c5('0x29')]){_0x4492a4['SEMODULE']=_0xa9c5('0x2a');_0x4492a4[_0xa9c5('0x2b')]=_0x4c55e9[_0xa9c5('0x29')];}var _0x32fc7d=_0xa9c5('0x2c');for(var _0x40f08b in _0x4492a4){if(_0x4492a4[_0xa9c5('0x2d')](_0x40f08b)){_0x32fc7d+=util['format']('<FL\x20val=\x22%s\x22>%s</FL>',entities[_0xa9c5('0x2e')](_0x40f08b),entities['encodeXML'](_0x4492a4[_0x40f08b]));}}_0x32fc7d+=_0xa9c5('0x2f');return request({'method':_0xa9c5('0x30'),'uri':util['format'](_0xa9c5('0x31'),_0x40a79d[_0xa9c5('0x32')]),'qs':{'authtoken':_0x40a79d['authToken'],'scope':_0xa9c5('0x33'),'xmlData':_0x32fc7d},'json':!![]})[_0xa9c5('0x34')](function(_0x198cdf){_0x198cdf=JSON[_0xa9c5('0x35')](parser[_0xa9c5('0x36')](_0x198cdf));if(_0x198cdf['response']){if(_0x198cdf[_0xa9c5('0x37')]['result']&&_0x198cdf[_0xa9c5('0x37')][_0xa9c5('0x38')][_0xa9c5('0x39')]){logger['info'](_0xa9c5('0x3a'));return{'id':_0x198cdf[_0xa9c5('0x37')]['result'][_0xa9c5('0x39')]['FL'][0x0]['$t']};}}throw new Error(_0xa9c5('0x3b')+JSON[_0xa9c5('0x3c')](_0x198cdf));});}function getUser(_0x378684,_0x22ee21){_0x22ee21&&logger[_0xa9c5('0xd')](_0xa9c5('0x3d'),_0x22ee21);return request({'method':'GET','uri':util[_0xa9c5('0x13')](_0xa9c5('0x3e'),_0x378684[_0xa9c5('0x32')]),'qs':{'type':_0xa9c5('0x3f'),'authtoken':_0x378684[_0xa9c5('0x40')],'scope':_0xa9c5('0x33')},'json':!![]})[_0xa9c5('0x34')](function(_0x36b599){if(_0x36b599['users']&&_0x36b599['users'][_0xa9c5('0x41')]){var _0x30a0e8;if(_0x22ee21){_0x30a0e8=_[_0xa9c5('0x42')](_0x36b599[_0xa9c5('0x43')][_0xa9c5('0x41')],{'email':_0x22ee21,'profile':_0xa9c5('0x44')});}if(_0x30a0e8){logger['info']('Agent\x20found!');}else{logger['info'](_0xa9c5('0x45'));_0x30a0e8=_[_0xa9c5('0x42')](_0x36b599['users'][_0xa9c5('0x41')],{'profile':'Administrator'});}return _0x30a0e8;}else{logger[_0xa9c5('0x46')](_0xa9c5('0x47'),JSON[_0xa9c5('0x3c')](_0x36b599));throw new Error(_0xa9c5('0x48')+JSON['stringify'](_0x36b599));}});}function getEndUser(_0x675588,_0x2cd721,_0x191153){logger[_0xa9c5('0xd')](_0xa9c5('0x49'),_0x191153);return request({'method':_0xa9c5('0x4a'),'uri':util[_0xa9c5('0x13')](_0xa9c5('0x4b'),_0x675588['host']),'qs':{'authtoken':_0x675588[_0xa9c5('0x40')],'scope':_0xa9c5('0x33'),'criteria':util[_0xa9c5('0x13')](_0xa9c5('0x4c'),_0x191153)},'json':!![]})[_0xa9c5('0x34')](function(_0x14f608){if(_0x14f608['response']&&_0x14f608[_0xa9c5('0x37')]['result']){logger[_0xa9c5('0xd')]('Enduser\x20found\x20in\x20Contacts!');var _0x426b17={};var _0xd4305d=_0x14f608[_0xa9c5('0x37')]['result'][_0xa9c5('0x4d')][_0xa9c5('0x4e')]['no']?_0x14f608[_0xa9c5('0x37')][_0xa9c5('0x38')]['Contacts'][_0xa9c5('0x4e')]['FL']:_0x14f608[_0xa9c5('0x37')][_0xa9c5('0x38')][_0xa9c5('0x4d')][_0xa9c5('0x4e')][0x0]['FL'];for(var _0x5dc092=0x0,_0x2a1138=_0xd4305d['length'];_0x5dc092<_0x2a1138;_0x5dc092++){_0x426b17[_0xd4305d[_0x5dc092][_0xa9c5('0x4f')]]=_0xd4305d[_0x5dc092][_0xa9c5('0x50')];}return _0x426b17;}else{return request({'method':_0xa9c5('0x4a'),'uri':util[_0xa9c5('0x13')](_0xa9c5('0x51'),_0x675588[_0xa9c5('0x32')]),'qs':{'authtoken':_0x675588[_0xa9c5('0x40')],'scope':_0xa9c5('0x33'),'criteria':util[_0xa9c5('0x13')](_0xa9c5('0x4c'),_0x191153)},'json':!![]})['then'](function(_0x2e92c5){if(_0x2e92c5[_0xa9c5('0x37')]&&_0x2e92c5[_0xa9c5('0x37')][_0xa9c5('0x38')]){logger[_0xa9c5('0xd')](_0xa9c5('0x52'));var _0x583ec9={};var _0x4194c8=_0x2e92c5[_0xa9c5('0x37')]['result']['Leads']['row']['no']?_0x2e92c5['response']['result'][_0xa9c5('0x2a')][_0xa9c5('0x4e')]['FL']:_0x2e92c5[_0xa9c5('0x37')][_0xa9c5('0x38')][_0xa9c5('0x2a')][_0xa9c5('0x4e')][0x0]['FL'];for(var _0xec9c4=0x0,_0x5b00a6=_0x4194c8[_0xa9c5('0x53')];_0xec9c4<_0x5b00a6;_0xec9c4++){_0x583ec9[_0x4194c8[_0xec9c4][_0xa9c5('0x4f')]]=_0x4194c8[_0xec9c4][_0xa9c5('0x50')];}return _0x583ec9;}else{logger[_0xa9c5('0xd')](_0xa9c5('0x54'));_0x2cd721=getName(_0x2cd721);return request({'method':'POST','uri':util[_0xa9c5('0x13')]('https://crm.%s/crm/private/xml/Leads/insertRecords',_0x675588[_0xa9c5('0x32')]),'qs':{'authtoken':_0x675588[_0xa9c5('0x40')],'scope':'crmapi','xmlData':util['format'](_0xa9c5('0x55'),entities[_0xa9c5('0x2e')](_0x2cd721[0x0]),entities[_0xa9c5('0x2e')](_0x2cd721[0x1]),_0x191153)},'json':!![]})['then'](function(_0x584504){_0x584504=JSON[_0xa9c5('0x35')](parser[_0xa9c5('0x36')](_0x584504));if(_0x584504['response']){if(_0x584504[_0xa9c5('0x37')][_0xa9c5('0x38')]&&_0x584504[_0xa9c5('0x37')][_0xa9c5('0x38')][_0xa9c5('0x39')]){logger[_0xa9c5('0xd')]('Enduser\x20created.');return request({'method':'GET','uri':util['format'](_0xa9c5('0x56'),_0x675588[_0xa9c5('0x32')]),'qs':{'authtoken':_0x675588[_0xa9c5('0x40')],'scope':_0xa9c5('0x33'),'id':_0x584504[_0xa9c5('0x37')][_0xa9c5('0x38')]['recorddetail']['FL'][0x0]['$t']},'json':!![]});}}throw new Error(_0xa9c5('0x57')+JSON[_0xa9c5('0x3c')](_0x584504));})[_0xa9c5('0x34')](function(_0x2bdc77){if(_0x2bdc77[_0xa9c5('0x37')]){if(_0x2bdc77[_0xa9c5('0x37')]['result']){var _0x4fcc44={};for(var _0x10ff6b=0x0,_0x56b642=_0x2bdc77[_0xa9c5('0x37')]['result'][_0xa9c5('0x2a')][_0xa9c5('0x4e')]['FL'][_0xa9c5('0x53')];_0x10ff6b<_0x56b642;_0x10ff6b++){_0x4fcc44[_0x2bdc77['response'][_0xa9c5('0x38')][_0xa9c5('0x2a')][_0xa9c5('0x4e')]['FL'][_0x10ff6b][_0xa9c5('0x4f')]]=_0x2bdc77['response']['result'][_0xa9c5('0x2a')][_0xa9c5('0x4e')]['FL'][_0x10ff6b][_0xa9c5('0x50')];}return _0x4fcc44;}}throw new Error('Error\x20on\x20Lead\x20retrieve:\x20'+JSON[_0xa9c5('0x3c')](_0x2bdc77));});}});}});}function request(_0x867922){logger[_0xa9c5('0x58')](_0xa9c5('0x59'),JSON[_0xa9c5('0x3c')](_0x867922));return rp(_0x867922);}function getCustomFields(_0x29b198,_0x24fc67){var _0x298b3d={};if(_0x29b198['length']>0x0){_[_0xa9c5('0x5a')](_0x29b198,function(_0x5a9d4f){if(_0x5a9d4f[_0xa9c5('0x5b')]===_0xa9c5('0x5c')&&_0x5a9d4f[_0xa9c5('0x5d')]){_0x298b3d[_0x5a9d4f['idField']]=_0x5a9d4f[_0xa9c5('0x50')][_0xa9c5('0x5e')]();}else if(_0x5a9d4f['type']===_0xa9c5('0x5f')&&_0x5a9d4f[_0xa9c5('0x60')]&&_0x5a9d4f[_0xa9c5('0x5d')]&&_0x24fc67[_0x5a9d4f[_0xa9c5('0x60')]]){_0x298b3d[_0x5a9d4f['idField']]=_0x24fc67[_0x5a9d4f[_0xa9c5('0x60')]][_0xa9c5('0x5e')]();}else if(_0x5a9d4f[_0xa9c5('0x5b')]===_0xa9c5('0x61')&&_0x5a9d4f['Variable']&&_0x5a9d4f['Variable'][_0xa9c5('0x62')]&&_0x5a9d4f[_0xa9c5('0x5d')]&&_0x24fc67[_0x5a9d4f[_0xa9c5('0x63')][_0xa9c5('0x62')][_0xa9c5('0x64')]()]){_0x298b3d[_0x5a9d4f[_0xa9c5('0x5d')]]=_0x24fc67[_0x5a9d4f['Variable'][_0xa9c5('0x62')][_0xa9c5('0x64')]()][_0xa9c5('0x5e')]();}});}return _0x298b3d;}function getName(_0x3990c7){if(_0x3990c7[_0xa9c5('0x65')]('\x20')>0x0){var _0x372ab9=_0x3990c7[_0xa9c5('0x66')](/ (.+)/);if(_0x372ab9[0x1]){return _0x372ab9;}}return[_0x3990c7,_0x3990c7];}exports[_0xa9c5('0x67')]=function(_0x456973,_0x389de8,_0x50d438,_0x5e17a2,_0x25c34f,_0x40ade1){var _0x3322cc,_0x47afaa;if(_0x25c34f&&_0x25c34f['monitor_format']){logger[_0xa9c5('0xd')]('[QUEUE]',_0xa9c5('0x68'));_0x389de8[_0xa9c5('0x69')]=util[_0xa9c5('0x13')](_0xa9c5('0x6a'),_0x40ade1[_0xa9c5('0x6b')],_0x389de8[_0xa9c5('0x6c')],md5(_0x389de8[_0xa9c5('0x6c')]));}else{_0x389de8[_0xa9c5('0x69')]='';}return getUser(_0x40ade1,_0x5e17a2[_0xa9c5('0x6d')])[_0xa9c5('0x34')](function(_0x446b8a){_0x3322cc=_0x446b8a;logger[_0xa9c5('0xd')]('The\x20User\x20ID\x20is:',_0x3322cc['id']);return getEndUser(_0x40ade1,_0x389de8[_0xa9c5('0x6e')],_0x389de8[_0xa9c5('0x6f')]);})[_0xa9c5('0x34')](function(_0xce9c8c){_0x47afaa=_0xce9c8c;logger[_0xa9c5('0xd')](_0xa9c5('0x70'),_0x47afaa[_0xa9c5('0x28')]||_0x47afaa['LEADID']);return getCall(_0x40ade1,_0x3322cc,_0x47afaa,_0x50d438,_0x389de8,'Inbound');})[_0xa9c5('0x34')](function(_0x502a00){if(_0x502a00){logger[_0xa9c5('0xd')](_0xa9c5('0x71'),_0x502a00['id']);logger['info'](_0xa9c5('0x72'),_0xa9c5('0x73'));emit(util['format']('user:%s',_0x5e17a2[_0xa9c5('0x62')]),_0xa9c5('0x74'),{'uri':util[_0xa9c5('0x13')]('https://crm.%s/crm/EntityInfo.do?module=Calls&id=%s',_0x40ade1['host'],_0x502a00['id'])});}})[_0xa9c5('0x75')](function(_0x3317c3){logger['error'](_0xa9c5('0x72'),JSON[_0xa9c5('0x3c')](_0x3317c3));});};exports[_0xa9c5('0x11')]=function(_0x3c0c7a,_0x135791,_0x45b0a3,_0x4e2fb1,_0x44d969,_0x3aeb3c,_0x4586ba){var _0xdc6836,_0x57841e;if(_0x4586ba&&_0x4586ba[_0xa9c5('0x76')]&&_0x4586ba[_0xa9c5('0x76')]!=='none'){logger[_0xa9c5('0xd')](_0xa9c5('0x77'),_0xa9c5('0x68'));_0x135791['recordingURL']=util[_0xa9c5('0x13')](_0xa9c5('0x6a'),_0x3aeb3c[_0xa9c5('0x6b')],_0x135791[_0xa9c5('0x6c')],md5(_0x135791[_0xa9c5('0x6c')]));}return getUser(_0x3aeb3c,_0x4e2fb1[_0xa9c5('0x6d')])[_0xa9c5('0x34')](function(_0x4acc1f){_0xdc6836=_0x4acc1f;logger[_0xa9c5('0xd')](_0xa9c5('0x78'),_0xdc6836['id']);return getEndUser(_0x3aeb3c,_0x135791[_0xa9c5('0x79')],_0x135791[_0xa9c5('0x7a')]);})[_0xa9c5('0x34')](function(_0x42b1d7){_0x57841e=_0x42b1d7;logger[_0xa9c5('0xd')](_0xa9c5('0x70'),_0x57841e[_0xa9c5('0x28')]||_0x57841e[_0xa9c5('0x29')]);return getCall(_0x3aeb3c,_0xdc6836,_0x57841e,_0x45b0a3,_0x135791,_0xa9c5('0x7b'));})['then'](function(_0x233e47){if(_0x233e47){logger[_0xa9c5('0xd')]('The\x20Call\x20ID\x20is:',_0x233e47['id']);logger[_0xa9c5('0xd')](_0xa9c5('0x77'),_0xa9c5('0x73'));emit(util['format'](_0xa9c5('0x7c'),_0x4e2fb1[_0xa9c5('0x62')]),_0xa9c5('0x74'),{'uri':util[_0xa9c5('0x13')]('https://crm.%s/crm/EntityInfo.do?module=Calls&id=%s',_0x3aeb3c[_0xa9c5('0x32')],_0x233e47['id'])});}})[_0xa9c5('0x75')](function(_0x4f4fa1){logger['error']('[OUTBOUND]',JSON['stringify'](_0x4f4fa1));});};exports['abandoned']=function(_0x4efbde,_0x5277ee,_0x54c8f5,_0x2fb53d,_0x21797e,_0x19cc35){var _0x247696,_0x3e0f0f;if(_0x21797e&&_0x21797e['monitor_format']){logger['info']('[ABANDONED]','Recording\x20is\x20enabled!');_0x5277ee[_0xa9c5('0x69')]=util[_0xa9c5('0x13')](_0xa9c5('0x6a'),_0x19cc35[_0xa9c5('0x6b')],_0x5277ee['uniqueid'],md5(_0x5277ee['uniqueid']));}else{_0x5277ee[_0xa9c5('0x69')]='';}return getUser(_0x19cc35)[_0xa9c5('0x34')](function(_0x144e97){_0x247696=_0x144e97;logger[_0xa9c5('0xd')](_0xa9c5('0x78'),_0x247696['id']);return getEndUser(_0x19cc35,_0x5277ee['calleridname'],_0x5277ee[_0xa9c5('0x6f')]);})[_0xa9c5('0x34')](function(_0xd063cf){_0x3e0f0f=_0xd063cf;logger['info'](_0xa9c5('0x70'),_0x3e0f0f[_0xa9c5('0x28')]||_0x3e0f0f[_0xa9c5('0x29')]);return getCall(_0x19cc35,_0x247696,_0x3e0f0f,_0x54c8f5,_0x5277ee,_0xa9c5('0x7d'));})['then'](function(_0x34fcea){if(_0x34fcea){logger[_0xa9c5('0xd')]('The\x20Call\x20ID\x20is:',_0x34fcea['id']);}})['catch'](function(_0x2f1e9f){logger['error']('[ABANDONED]',JSON[_0xa9c5('0x3c')](_0x2f1e9f));});};
\ No newline at end of file
index edfd524..aa20b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe156=['message','request-promise','../../../../config/logger','trigger','exec','data1','toUpperCase','GET','POST','body','data7','render','then','info','format','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20body:\x20%s','data2','statusCode','catch','error','%s\x20%s\x20%s\x20[%s]:%s','name'];(function(_0x49f49b,_0x46d977){var _0x25a57c=function(_0x4ef49d){while(--_0x4ef49d){_0x49f49b['push'](_0x49f49b['shift']());}};_0x25a57c(++_0x46d977);}(_0xe156,0x6f));var _0x6e15=function(_0xf2f332,_0x299fbf){_0xf2f332=_0xf2f332-0x0;var _0x56cce3=_0xe156[_0xf2f332];return _0x56cce3;};'use strict';var rp=require(_0x6e15('0x0'));var util=require('util');var Mustache=require('mustache');var logger=require(_0x6e15('0x1'))(_0x6e15('0x2'));exports[_0x6e15('0x3')]=function(_0x14c707,_0x1fa0ac){var _0x3fb67d={'method':_0x14c707[_0x6e15('0x4')][_0x6e15('0x5')](),'uri':encodeURI(Mustache['render'](_0x14c707['data2'],_0x1fa0ac)),'json':!![],'resolveWithFullResponse':!![]};switch(_0x14c707['data1'][_0x6e15('0x5')]()){case _0x6e15('0x6'):_0x3fb67d['qs']=_0x1fa0ac;break;case _0x6e15('0x7'):_0x3fb67d[_0x6e15('0x8')]=_0x14c707[_0x6e15('0x9')]?Mustache[_0x6e15('0xa')](_0x14c707['data7'],_0x1fa0ac):_0x1fa0ac;break;}rp(_0x3fb67d)[_0x6e15('0xb')](function(_0x5522a4){logger[_0x6e15('0xc')](util[_0x6e15('0xd')](_0x6e15('0xe'),_0x14c707[_0x6e15('0x4')],_0x14c707[_0x6e15('0xf')],_0x5522a4[_0x6e15('0x10')],_0x5522a4['body']));})[_0x6e15('0x11')](function(_0x4a4d55){logger[_0x6e15('0x12')](util[_0x6e15('0xd')](_0x6e15('0x13'),_0x14c707[_0x6e15('0x4')],_0x14c707[_0x6e15('0xf')],_0x4a4d55['statusCode'],_0x4a4d55[_0x6e15('0x14')],_0x4a4d55[_0x6e15('0x15')]));});};
\ No newline at end of file
+var _0x59db=['exec','data1','toUpperCase','render','data2','GET','POST','data7','then','info','format','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20body:\x20%s','statusCode','body','catch','error','%s\x20%s\x20%s\x20[%s]:%s','request-promise','../../../../config/logger','trigger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x59db,0x151));var _0xb59d=function(_0x1acbec,_0x313095){_0x1acbec=_0x1acbec-0x0;var _0x557465=_0x59db[_0x1acbec];return _0x557465;};'use strict';var rp=require(_0xb59d('0x0'));var util=require('util');var Mustache=require('mustache');var logger=require(_0xb59d('0x1'))(_0xb59d('0x2'));exports[_0xb59d('0x3')]=function(_0x5dddf8,_0x16182){var _0x18090b={'method':_0x5dddf8[_0xb59d('0x4')][_0xb59d('0x5')](),'uri':encodeURI(Mustache[_0xb59d('0x6')](_0x5dddf8[_0xb59d('0x7')],_0x16182)),'json':!![],'resolveWithFullResponse':!![]};switch(_0x5dddf8[_0xb59d('0x4')][_0xb59d('0x5')]()){case _0xb59d('0x8'):_0x18090b['qs']=_0x16182;break;case _0xb59d('0x9'):_0x18090b['body']=_0x5dddf8['data7']?Mustache[_0xb59d('0x6')](_0x5dddf8[_0xb59d('0xa')],_0x16182):_0x16182;break;}rp(_0x18090b)[_0xb59d('0xb')](function(_0x59d740){logger[_0xb59d('0xc')](util[_0xb59d('0xd')](_0xb59d('0xe'),_0x5dddf8[_0xb59d('0x4')],_0x5dddf8['data2'],_0x59d740[_0xb59d('0xf')],_0x59d740[_0xb59d('0x10')]));})[_0xb59d('0x11')](function(_0x55042d){logger[_0xb59d('0x12')](util[_0xb59d('0xd')](_0xb59d('0x13'),_0x5dddf8[_0xb59d('0x4')],_0x5dddf8[_0xb59d('0x7')],_0x55042d['statusCode'],_0x55042d['name'],_0x55042d['message']));});};
\ No newline at end of file
index 3f88dab..dda2b53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b1=['routing','client','Request','rpc','error','message','catch','exports','jayson/promise','bluebird','../../config/logger'];(function(_0x1e9341,_0x53ff67){var _0x344f8c=function(_0x3416f3){while(--_0x3416f3){_0x1e9341['push'](_0x1e9341['shift']());}};_0x344f8c(++_0x53ff67);}(_0xd8b1,0x105));var _0x1d8b=function(_0x3f14f6,_0x3a77d9){_0x3f14f6=_0x3f14f6-0x0;var _0xedb272=_0xd8b1[_0x3f14f6];return _0xedb272;};'use strict';var jayson=require(_0x1d8b('0x0'));var BPromise=require(_0x1d8b('0x1'));var logger=require(_0x1d8b('0x2'))(_0x1d8b('0x3'));var client=jayson[_0x1d8b('0x4')]['http']({'port':0x2329});client[_0x1d8b('0x5')]=function(_0x417c87,_0x531170){return new BPromise(function(_0xad218,_0x551980){return client['request'](_0x417c87,_0x531170)['then'](function(_0x27534c){logger['debug'](_0x1d8b('0x6'),_0x1d8b('0x3'),_0x417c87,_0x531170,_0x27534c);if(_0x27534c[_0x1d8b('0x7')]){logger[_0x1d8b('0x7')]('rpc','routing',_0x417c87,_0x27534c[_0x1d8b('0x7')]['message'],_0x531170);return _0x551980(_0x27534c['error'][_0x1d8b('0x8')]);}else{return _0xad218(_0x27534c['result']);}})[_0x1d8b('0x9')](function(_0x5326bf){logger[_0x1d8b('0x7')](_0x1d8b('0x6'),_0x1d8b('0x3'),_0x417c87,_0x5326bf,_0x531170);return _0x551980(_0x5326bf);});});};module[_0x1d8b('0xa')]=client;
\ No newline at end of file
+var _0x8bc3=['client','http','then','debug','rpc','routing','error','message','result','catch','jayson/promise','../../config/logger'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x8bc3,0x82));var _0x38bc=function(_0x48783c,_0x1f986b){_0x48783c=_0x48783c-0x0;var _0x2ce586=_0x8bc3[_0x48783c];return _0x2ce586;};'use strict';var jayson=require(_0x38bc('0x0'));var BPromise=require('bluebird');var logger=require(_0x38bc('0x1'))('routing');var client=jayson[_0x38bc('0x2')][_0x38bc('0x3')]({'port':0x2329});client['Request']=function(_0x38862e,_0x24ad99){return new BPromise(function(_0x20d785,_0x265fd7){return client['request'](_0x38862e,_0x24ad99)[_0x38bc('0x4')](function(_0x2165ed){logger[_0x38bc('0x5')](_0x38bc('0x6'),_0x38bc('0x7'),_0x38862e,_0x24ad99,_0x2165ed);if(_0x2165ed['error']){logger['error'](_0x38bc('0x6'),_0x38bc('0x7'),_0x38862e,_0x2165ed[_0x38bc('0x8')][_0x38bc('0x9')],_0x24ad99);return _0x265fd7(_0x2165ed[_0x38bc('0x8')][_0x38bc('0x9')]);}else{return _0x20d785(_0x2165ed[_0x38bc('0xa')]);}})[_0x38bc('0xb')](function(_0x202638){logger[_0x38bc('0x8')]('rpc','routing',_0x38862e,_0x202638,_0x24ad99);return _0x265fd7(_0x202638);});});};module['exports']=client;
\ No newline at end of file
index 61b5418..094781d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6214=['initMailAccounts','mailAccounts','catch','log','bluebird','./server','./realtime','./lib/email','./rpc/mailAccount','resolve','then','getMailAccounts'];(function(_0x56c571,_0x527788){var _0x1aebc0=function(_0x3a934b){while(--_0x3a934b){_0x56c571['push'](_0x56c571['shift']());}};_0x1aebc0(++_0x527788);}(_0x6214,0x7c));var _0x4621=function(_0x4bb145,_0x3e7d33){_0x4bb145=_0x4bb145-0x0;var _0x4db596=_0x6214[_0x4bb145];return _0x4db596;};'use strict';var BPromise=require(_0x4621('0x0'));var server=require(_0x4621('0x1'));var Realtime=require(_0x4621('0x2'));var EmailChannel=require(_0x4621('0x3'));var mailAccount=require(_0x4621('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x4621('0x5')]()[_0x4621('0x6')](mailAccount[_0x4621('0x7')]())['then'](realtime[_0x4621('0x8')]())['then'](function(){email['refresh'](realtime[_0x4621('0x9')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0x4621('0x6')](function(_0x267db5){return initRealtime();})[_0x4621('0x6')](function(_0x500929){return setInterval(initRealtime,0x2710);})[_0x4621('0xa')](function(_0x286c51){console[_0x4621('0xb')](_0x286c51);});}main();
\ No newline at end of file
+var _0xb8a2=['refresh','mailAccounts','listen','log','bluebird','./server','./realtime','./rpc/mailAccount','then','getMailAccounts'];(function(_0x9a4784,_0x55f5c5){var _0x4fd053=function(_0x2d3109){while(--_0x2d3109){_0x9a4784['push'](_0x9a4784['shift']());}};_0x4fd053(++_0x55f5c5);}(_0xb8a2,0x1bc));var _0x2b8a=function(_0x477a46,_0x4cdb19){_0x477a46=_0x477a46-0x0;var _0x50a335=_0xb8a2[_0x477a46];return _0x50a335;};'use strict';var BPromise=require(_0x2b8a('0x0'));var server=require(_0x2b8a('0x1'));var Realtime=require(_0x2b8a('0x2'));var EmailChannel=require('./lib/email');var mailAccount=require(_0x2b8a('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise['resolve']()[_0x2b8a('0x4')](mailAccount[_0x2b8a('0x5')]())[_0x2b8a('0x4')](realtime['initMailAccounts']())[_0x2b8a('0x4')](function(){email[_0x2b8a('0x6')](realtime[_0x2b8a('0x7')]);return realtime;});}function main(){return server[_0x2b8a('0x8')](realtime,email)[_0x2b8a('0x4')](function(_0x53fcd7){return initRealtime();})[_0x2b8a('0x4')](function(_0x193645){return setInterval(initRealtime,0x2710);})['catch'](function(_0x24fa1a){console[_0x2b8a('0x9')](_0x24fa1a);});}main();
\ No newline at end of file
index 9b2115e..9db456c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['stringify','mailAccount:update','hasOwnProperty','imapAccounts','box','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','status','disabled','handleImapBox','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','then','catch','sendMail','send','Smtp','lastSync','verify','exports','lodash','moment','bluebird','md5','../../../config/environment','email','redis','defaults','localhost','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','name','key','Imap','messageStatus','total','isNil'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9536,0x179));var _0x6953=function(_0x239dba,_0x309e95){_0x239dba=_0x239dba-0x0;var _0x1ceb11=_0x9536[_0x239dba];return _0x1ceb11;};'use strict';var _=require(_0x6953('0x0'));var moment=require(_0x6953('0x1'));var BPromise=require(_0x6953('0x2'));var md5=require(_0x6953('0x3'));var Redis=require('ioredis');var config=require(_0x6953('0x4'));var logger=require('../../../config/logger')(_0x6953('0x5'));config[_0x6953('0x6')]=_[_0x6953('0x7')](config[_0x6953('0x6')],{'host':_0x6953('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6953('0x6')]));var EmailImap=require(_0x6953('0x9'));var EmailSmtp=require(_0x6953('0xa'));var mailAccount=require(_0x6953('0xb'));var md5Accounts={};function EmailChannel(_0x1c8225){logger['info'](_0x6953('0xc'));this[_0x6953('0xd')]=_0x1c8225[_0x6953('0xd')];this['imapAccounts']={};this[_0x6953('0xe')]=new EmailSmtp();}EmailChannel[_0x6953('0xf')][_0x6953('0x10')]=function(_0xb13f2c){var _0x448c89=this[_0x6953('0xd')][_0xb13f2c];var _0x246534={'id':_0x448c89['id'],'name':_0x448c89[_0x6953('0x11')],'key':_0x448c89[_0x6953('0x12')],'active':_0x448c89['active'],'Imap':{'status':_0x448c89[_0x6953('0x13')]['status'],'messageStatus':_0x448c89[_0x6953('0x13')][_0x6953('0x14')],'total':_0x448c89[_0x6953('0x13')][_0x6953('0x15')]}};if(_[_0x6953('0x16')](md5Accounts[_0xb13f2c])){md5Accounts[_0xb13f2c]={};}var _0x244713=md5(JSON[_0x6953('0x17')](_0x246534));if(md5Accounts[_0xb13f2c][_0x6953('0x3')]!==_0x244713){md5Accounts[_0xb13f2c][_0x6953('0x3')]=_0x244713;io[_0x6953('0x10')](_0x6953('0x18'),_0x246534);}};EmailChannel['prototype']['refresh']=function(_0x399b9b){for(var _0x44e8a2 in _0x399b9b){if(_0x399b9b[_0x6953('0x19')](_0x44e8a2)){if(_0x399b9b[_0x44e8a2][_0x6953('0x13')]&&_0x399b9b[_0x44e8a2]['active']){var _0x1b6dcb=_0x399b9b[_0x44e8a2][_0x6953('0x13')];if(!this['imapAccounts'][_0x6953('0x19')](_0x1b6dcb['id'])){this[_0x6953('0x1a')][_0x1b6dcb['id']]=new EmailImap(_0x1b6dcb,_0x399b9b[_0x44e8a2][_0x6953('0x5')]);this[_0x6953('0x1a')][_0x1b6dcb['id']]['on'](_0x6953('0x1b'),this['handleImapBox'][_0x6953('0x1c')](this,_0x44e8a2));this[_0x6953('0x1a')][_0x1b6dcb['id']]['on'](_0x6953('0x5'),this[_0x6953('0x1d')][_0x6953('0x1c')](this,_0x44e8a2));this['imapAccounts'][_0x1b6dcb['id']]['on'](_0x6953('0x1e'),this[_0x6953('0x1f')]['bind'](this,_0x44e8a2));this[_0x6953('0x1a')][_0x1b6dcb['id']]['on'](_0x6953('0x20'),this[_0x6953('0x21')][_0x6953('0x1c')](this,_0x44e8a2));}}else{if(_['isNil'](this[_0x6953('0xd')][_0x44e8a2][_0x6953('0x13')])){this[_0x6953('0xd')][_0x44e8a2]['Imap']={};}this['mailAccounts'][_0x44e8a2]['Imap'][_0x6953('0x22')]=_0x6953('0x23');this['mailAccounts'][_0x44e8a2][_0x6953('0x13')]['messageStatus']='';this[_0x6953('0x10')](_0x44e8a2);}}}};EmailChannel[_0x6953('0xf')][_0x6953('0x24')]=function(_0x2cc01e,_0x191d80){if(this[_0x6953('0xd')][_0x2cc01e]){this['mailAccounts'][_0x2cc01e][_0x6953('0x13')][_0x6953('0x22')]='connected';this[_0x6953('0xd')][_0x2cc01e]['Imap'][_0x6953('0x14')]=_0x191d80[_0x6953('0x11')];if(_0x191d80[_0x6953('0x25')]){this['mailAccounts'][_0x2cc01e][_0x6953('0x13')][_0x6953('0x15')]=_0x191d80[_0x6953('0x25')]['total'];}return this[_0x6953('0x10')](_0x2cc01e);}};EmailChannel[_0x6953('0xf')]['handleImapEmail']=function(_0x4d856d,_0xd80e42){logger[_0x6953('0x26')](_0x6953('0x27'),_0xd80e42[_0x6953('0x28')],_0xd80e42[_0x6953('0x29')],_0xd80e42['from'],_0x4d856d);if(this[_0x6953('0xd')][_0x4d856d]){return mailAccount['notify'](_0x4d856d,_0xd80e42)[_0x6953('0x2a')](function(_0x2e85c7){if(_0x2e85c7){logger['info']('Mail\x20accepted\x20from\x20routing');}})[_0x6953('0x2b')](function(_0x1ad003){logger[_0x6953('0x20')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x6953('0x17')](_0x1ad003));});}};EmailChannel['prototype']['handleImapEnd']=function(_0x5eda70){if(this['mailAccounts'][_0x5eda70]&&this[_0x6953('0xd')][_0x5eda70][_0x6953('0x13')]){if(this[_0x6953('0x1a')][this[_0x6953('0xd')][_0x5eda70][_0x6953('0x13')]['id']]){delete this[_0x6953('0x1a')][this['mailAccounts'][_0x5eda70][_0x6953('0x13')]['id']];}this['mailAccounts'][_0x5eda70][_0x6953('0x13')]['lastSync']=moment();this[_0x6953('0x10')](_0x5eda70);}};EmailChannel[_0x6953('0xf')][_0x6953('0x21')]=function(_0x248fe7,_0x562792){if(this[_0x6953('0xd')][_0x248fe7]){this[_0x6953('0xd')][_0x248fe7][_0x6953('0x13')][_0x6953('0x22')]=_0x6953('0x20');this[_0x6953('0xd')][_0x248fe7][_0x6953('0x13')][_0x6953('0x14')]=_0x562792;return this[_0x6953('0x10')](_0x248fe7);}};EmailChannel[_0x6953('0xf')][_0x6953('0x2c')]=function(_0x483a33,_0x9d8ee1){return this[_0x6953('0xe')][_0x6953('0x2d')](_0x483a33,_0x9d8ee1);};EmailChannel['prototype']['verifySmtp']=function(_0x44faff){var _0x4b78ca=this;if(this['mailAccounts'][_0x44faff['id']]){if(_[_0x6953('0x16')](this[_0x6953('0xd')][_0x44faff['id']]['Smtp'])){this[_0x6953('0xd')][_0x44faff['id']][_0x6953('0x2e')]={};}this[_0x6953('0xd')][_0x44faff['id']][_0x6953('0x2e')][_0x6953('0x2f')]=moment();return new BPromise(function(_0x4d7f59,_0x51137b){return _0x4b78ca[_0x6953('0xe')][_0x6953('0x30')](_0x44faff)[_0x6953('0x2a')](function(_0x3a0104){_0x4b78ca[_0x6953('0xd')][_0x44faff['id']][_0x6953('0x2e')]['status']='verified';_0x4b78ca[_0x6953('0xd')][_0x44faff['id']]['Smtp']['messageStatus']='';_0x4b78ca[_0x6953('0x10')](_0x44faff['id']);_0x4d7f59(_0x3a0104);})[_0x6953('0x2b')](function(_0x2bdbb6){_0x4b78ca[_0x6953('0xd')][_0x44faff['id']][_0x6953('0x2e')]['status']='error';_0x4b78ca[_0x6953('0xd')][_0x44faff['id']][_0x6953('0x2e')]['messageStatus']=_0x2bdbb6;_0x4b78ca[_0x6953('0x10')](_0x44faff['id']);_0x51137b(_0x2bdbb6);});});}return this['smtp'][_0x6953('0x30')](_0x44faff);};module[_0x6953('0x31')]=EmailChannel;
\ No newline at end of file
+var _0xeae8=['defaults','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','prototype','emit','name','active','status','Imap','messageStatus','total','stringify','md5','mailAccount:update','refresh','hasOwnProperty','email','box','handleImapBox','bind','end','handleImapError','disabled','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','error','Mail\x20not\x20accepted\x20from\x20routing\x20%s','handleImapEnd','sendMail','verifySmtp','Smtp','verify','exports','lodash','moment','bluebird','ioredis','../../../config/logger','redis'];(function(_0x162b31,_0x2ba854){var _0x3fcba7=function(_0x5dcb06){while(--_0x5dcb06){_0x162b31['push'](_0x162b31['shift']());}};_0x3fcba7(++_0x2ba854);}(_0xeae8,0x66));var _0x8eae=function(_0x24f45c,_0x398d0b){_0x24f45c=_0x24f45c-0x0;var _0x4dcc16=_0xeae8[_0x24f45c];return _0x4dcc16;};'use strict';var _=require(_0x8eae('0x0'));var moment=require(_0x8eae('0x1'));var BPromise=require(_0x8eae('0x2'));var md5=require('md5');var Redis=require(_0x8eae('0x3'));var config=require('../../../config/environment');var logger=require(_0x8eae('0x4'))('email');config[_0x8eae('0x5')]=_[_0x8eae('0x6')](config[_0x8eae('0x5')],{'host':_0x8eae('0x7'),'port':0x18eb});var io=require(_0x8eae('0x8'))(new Redis(config[_0x8eae('0x5')]));var EmailImap=require(_0x8eae('0x9'));var EmailSmtp=require(_0x8eae('0xa'));var mailAccount=require(_0x8eae('0xb'));var md5Accounts={};function EmailChannel(_0x2ae6e7){logger[_0x8eae('0xc')]('start\x20email\x20channel');this['mailAccounts']=_0x2ae6e7[_0x8eae('0xd')];this[_0x8eae('0xe')]={};this[_0x8eae('0xf')]=new EmailSmtp();}EmailChannel[_0x8eae('0x10')][_0x8eae('0x11')]=function(_0x4aba96){var _0x4d3f22=this['mailAccounts'][_0x4aba96];var _0x9bf1c1={'id':_0x4d3f22['id'],'name':_0x4d3f22[_0x8eae('0x12')],'key':_0x4d3f22['key'],'active':_0x4d3f22[_0x8eae('0x13')],'Imap':{'status':_0x4d3f22['Imap'][_0x8eae('0x14')],'messageStatus':_0x4d3f22[_0x8eae('0x15')][_0x8eae('0x16')],'total':_0x4d3f22[_0x8eae('0x15')][_0x8eae('0x17')]}};if(_['isNil'](md5Accounts[_0x4aba96])){md5Accounts[_0x4aba96]={};}var _0x16f24a=md5(JSON[_0x8eae('0x18')](_0x9bf1c1));if(md5Accounts[_0x4aba96][_0x8eae('0x19')]!==_0x16f24a){md5Accounts[_0x4aba96][_0x8eae('0x19')]=_0x16f24a;io[_0x8eae('0x11')](_0x8eae('0x1a'),_0x9bf1c1);}};EmailChannel[_0x8eae('0x10')][_0x8eae('0x1b')]=function(_0x2afcc1){for(var _0x5324e3 in _0x2afcc1){if(_0x2afcc1['hasOwnProperty'](_0x5324e3)){if(_0x2afcc1[_0x5324e3]['Imap']&&_0x2afcc1[_0x5324e3][_0x8eae('0x13')]){var _0x47c1db=_0x2afcc1[_0x5324e3][_0x8eae('0x15')];if(!this[_0x8eae('0xe')][_0x8eae('0x1c')](_0x47c1db['id'])){this[_0x8eae('0xe')][_0x47c1db['id']]=new EmailImap(_0x47c1db,_0x2afcc1[_0x5324e3][_0x8eae('0x1d')]);this[_0x8eae('0xe')][_0x47c1db['id']]['on'](_0x8eae('0x1e'),this[_0x8eae('0x1f')][_0x8eae('0x20')](this,_0x5324e3));this[_0x8eae('0xe')][_0x47c1db['id']]['on']('email',this['handleImapEmail'][_0x8eae('0x20')](this,_0x5324e3));this[_0x8eae('0xe')][_0x47c1db['id']]['on'](_0x8eae('0x21'),this['handleImapEnd'][_0x8eae('0x20')](this,_0x5324e3));this[_0x8eae('0xe')][_0x47c1db['id']]['on']('error',this[_0x8eae('0x22')][_0x8eae('0x20')](this,_0x5324e3));}}else{if(_['isNil'](this[_0x8eae('0xd')][_0x5324e3][_0x8eae('0x15')])){this[_0x8eae('0xd')][_0x5324e3][_0x8eae('0x15')]={};}this[_0x8eae('0xd')][_0x5324e3][_0x8eae('0x15')][_0x8eae('0x14')]=_0x8eae('0x23');this[_0x8eae('0xd')][_0x5324e3][_0x8eae('0x15')][_0x8eae('0x16')]='';this['emit'](_0x5324e3);}}}};EmailChannel[_0x8eae('0x10')][_0x8eae('0x1f')]=function(_0x141940,_0x34dff7){if(this[_0x8eae('0xd')][_0x141940]){this[_0x8eae('0xd')][_0x141940][_0x8eae('0x15')]['status']=_0x8eae('0x24');this['mailAccounts'][_0x141940][_0x8eae('0x15')][_0x8eae('0x16')]=_0x34dff7[_0x8eae('0x12')];if(_0x34dff7[_0x8eae('0x25')]){this[_0x8eae('0xd')][_0x141940]['Imap']['total']=_0x34dff7[_0x8eae('0x25')][_0x8eae('0x17')];}return this[_0x8eae('0x11')](_0x141940);}};EmailChannel[_0x8eae('0x10')]['handleImapEmail']=function(_0x113dc7,_0x22ffeb){logger[_0x8eae('0xc')](_0x8eae('0x26'),_0x22ffeb[_0x8eae('0x27')],_0x22ffeb[_0x8eae('0x28')],_0x22ffeb[_0x8eae('0x29')],_0x113dc7);if(this[_0x8eae('0xd')][_0x113dc7]){return mailAccount[_0x8eae('0x2a')](_0x113dc7,_0x22ffeb)[_0x8eae('0x2b')](function(_0x3403a2){if(_0x3403a2){logger[_0x8eae('0xc')](_0x8eae('0x2c'));}})[_0x8eae('0x2d')](function(_0x1f247e){logger[_0x8eae('0x2e')](_0x8eae('0x2f'),JSON[_0x8eae('0x18')](_0x1f247e));});}};EmailChannel[_0x8eae('0x10')][_0x8eae('0x30')]=function(_0x143075){if(this['mailAccounts'][_0x143075]&&this[_0x8eae('0xd')][_0x143075][_0x8eae('0x15')]){if(this[_0x8eae('0xe')][this['mailAccounts'][_0x143075][_0x8eae('0x15')]['id']]){delete this[_0x8eae('0xe')][this[_0x8eae('0xd')][_0x143075][_0x8eae('0x15')]['id']];}this['mailAccounts'][_0x143075][_0x8eae('0x15')]['lastSync']=moment();this['emit'](_0x143075);}};EmailChannel[_0x8eae('0x10')][_0x8eae('0x22')]=function(_0x468e6d,_0x3ae748){if(this[_0x8eae('0xd')][_0x468e6d]){this[_0x8eae('0xd')][_0x468e6d][_0x8eae('0x15')]['status']=_0x8eae('0x2e');this[_0x8eae('0xd')][_0x468e6d]['Imap']['messageStatus']=_0x3ae748;return this['emit'](_0x468e6d);}};EmailChannel[_0x8eae('0x10')][_0x8eae('0x31')]=function(_0x4baa55,_0xcaf893){return this[_0x8eae('0xf')]['send'](_0x4baa55,_0xcaf893);};EmailChannel[_0x8eae('0x10')][_0x8eae('0x32')]=function(_0x17305e){var _0x11c626=this;if(this[_0x8eae('0xd')][_0x17305e['id']]){if(_['isNil'](this[_0x8eae('0xd')][_0x17305e['id']][_0x8eae('0x33')])){this[_0x8eae('0xd')][_0x17305e['id']]['Smtp']={};}this[_0x8eae('0xd')][_0x17305e['id']][_0x8eae('0x33')]['lastSync']=moment();return new BPromise(function(_0x44dad2,_0x2f8c54){return _0x11c626[_0x8eae('0xf')][_0x8eae('0x34')](_0x17305e)['then'](function(_0x41ea58){_0x11c626[_0x8eae('0xd')][_0x17305e['id']][_0x8eae('0x33')][_0x8eae('0x14')]='verified';_0x11c626[_0x8eae('0xd')][_0x17305e['id']][_0x8eae('0x33')][_0x8eae('0x16')]='';_0x11c626[_0x8eae('0x11')](_0x17305e['id']);_0x44dad2(_0x41ea58);})['catch'](function(_0x1dd9ec){_0x11c626['mailAccounts'][_0x17305e['id']][_0x8eae('0x33')]['status']=_0x8eae('0x2e');_0x11c626[_0x8eae('0xd')][_0x17305e['id']]['Smtp'][_0x8eae('0x16')]=_0x1dd9ec;_0x11c626[_0x8eae('0x11')](_0x17305e['id']);_0x2f8c54(_0x1dd9ec);});});}return this[_0x8eae('0xf')][_0x8eae('0x34')](_0x17305e);};module[_0x8eae('0x35')]=EmailChannel;
\ No newline at end of file
index e48c11f..d54f768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a3=['handleCloseBox','readUnseen','UNSEEN','handleReadUnseen','fetch','handleFetchMessage','error','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','stringify','textCode','imap','randomstring','simpleParser','events','EventEmitter','./utils','email','mailbox','INBOX','account','getAccount','once','ready','handleReady','end','handleEnd','handleError','connect','inherits','prototype','connTimeout','authTimeout','service','user','password','host','port','tls','getHost','anonymous@xcally.com','openBox','handleOpenBox','bind','emit','box'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x28a3,0xb5));var _0x328a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x28a3[_0x321bb2];return _0x9c12ed;};'use strict';var fs=require('fs');var path=require('path');var util=require('util');var Imap=require(_0x328a('0x0'));var _=require('lodash');var rs=require(_0x328a('0x1'));var simpleParser=require('mailparser')[_0x328a('0x2')];var EventEmitter=require(_0x328a('0x3'))[_0x328a('0x4')];var utils=require(_0x328a('0x5'));var logger=require('../../../config/logger')(_0x328a('0x6'));function EmailImap(_0x3158ef,_0x5370d6){this[_0x328a('0x7')]=_0x328a('0x8');this[_0x328a('0x9')]=this[_0x328a('0xa')](_0x3158ef,_0x5370d6);this['imap']=new Imap(this[_0x328a('0x9')]);this['imap'][_0x328a('0xb')](_0x328a('0xc'),this[_0x328a('0xd')]['bind'](this));this[_0x328a('0x0')][_0x328a('0xb')](_0x328a('0xe'),this[_0x328a('0xf')]['bind'](this));this[_0x328a('0x0')]['on']('error',this[_0x328a('0x10')]['bind'](this));this[_0x328a('0x0')][_0x328a('0x11')]();}util[_0x328a('0x12')](EmailImap,EventEmitter);EmailImap[_0x328a('0x13')][_0x328a('0xa')]=function(_0x23fcf3,_0x987306){var _0x178da8={'connTimeout':_0x23fcf3['connTimeout']?_0x23fcf3[_0x328a('0x14')]*0x3e8:0x2710,'authTimeout':_0x23fcf3[_0x328a('0x15')]?_0x23fcf3['authTimeout']*0x3e8:0x1388};if(_['isNil'](_0x23fcf3[_0x328a('0x16')])){if(_0x23fcf3['authentication']){_0x178da8[_0x328a('0x17')]=_0x23fcf3[_0x328a('0x17')];_0x178da8['password']=_0x23fcf3[_0x328a('0x18')];}_0x178da8[_0x328a('0x19')]=_0x23fcf3[_0x328a('0x19')];_0x178da8[_0x328a('0x1a')]=_0x23fcf3[_0x328a('0x1a')]||0x3e1;if(_0x23fcf3[_0x328a('0x1b')]){_0x178da8[_0x328a('0x1b')]=!![];}else{_0x178da8[_0x328a('0x1b')]=![];_0x178da8['autotls']='required';}}else{_0x178da8[_0x328a('0x17')]=_0x23fcf3[_0x328a('0x17')];_0x178da8[_0x328a('0x18')]=_0x23fcf3[_0x328a('0x18')];_0x178da8[_0x328a('0x19')]=utils[_0x328a('0x1c')](_0x23fcf3[_0x328a('0x16')]);_0x178da8[_0x328a('0x1a')]=0x3e1;_0x178da8['tls']=!![];}_0x178da8[_0x328a('0x6')]=_0x987306||_0x23fcf3[_0x328a('0x17')]||_0x328a('0x1d');return _0x178da8;};EmailImap[_0x328a('0x13')][_0x328a('0xd')]=function(){this['imap'][_0x328a('0x1e')](this[_0x328a('0x7')],![],this[_0x328a('0x1f')][_0x328a('0x20')](this));};EmailImap[_0x328a('0x13')][_0x328a('0x1f')]=function(_0x4667b7,_0x3ed272){if(_0x4667b7){this[_0x328a('0x10')](_0x4667b7,!![]);}else{this[_0x328a('0x21')](_0x328a('0x22'),_0x3ed272);this['readUnseen']();}};EmailImap[_0x328a('0x13')][_0x328a('0x23')]=function(_0x5c2f20){if(_0x5c2f20){this[_0x328a('0x10')](_0x5c2f20,!![]);}else{this[_0x328a('0x0')][_0x328a('0xe')]();}};EmailImap['prototype'][_0x328a('0x24')]=function(){this[_0x328a('0x0')]['search']([_0x328a('0x25')],this[_0x328a('0x26')][_0x328a('0x20')](this));};EmailImap[_0x328a('0x13')]['handleReadUnseen']=function(_0x1eacd0,_0x5c52aa){if(_0x1eacd0){this['handleError'](_0x1eacd0,!![]);}else{if(_0x5c52aa['length']){try{var _0x275d4e=this[_0x328a('0x0')][_0x328a('0x27')](_0x5c52aa,{'bodies':'','markSeen':!![]});_0x275d4e['on']('message',this[_0x328a('0x28')]['bind'](this));_0x275d4e['once'](_0x328a('0x29'),this[_0x328a('0x2a')][_0x328a('0x20')](this));_0x275d4e[_0x328a('0xb')]('end',this[_0x328a('0x2b')][_0x328a('0x20')](this));}catch(_0xd79305){logger[_0x328a('0x29')](_0xd79305);}}else{this[_0x328a('0x0')][_0x328a('0x2c')](!![],this[_0x328a('0x23')][_0x328a('0x20')](this));}}};EmailImap[_0x328a('0x13')][_0x328a('0x28')]=function(_0x28ef5f,_0x28c06b){_0x28ef5f['on'](_0x328a('0x2d'),this[_0x328a('0x2e')][_0x328a('0x20')](this));_0x28ef5f['once'](_0x328a('0x2f'),this[_0x328a('0x30')][_0x328a('0x20')](this));_0x28ef5f[_0x328a('0xb')](_0x328a('0xe'),this[_0x328a('0x31')]['bind'](this));};EmailImap[_0x328a('0x13')][_0x328a('0x2e')]=function(_0x4bc0d6,_0x58262f){simpleParser(_0x4bc0d6,this[_0x328a('0x32')]['bind'](this));};EmailImap[_0x328a('0x13')]['handleMessageAttributes']=function(_0xe53636){};EmailImap[_0x328a('0x13')][_0x328a('0x31')]=function(){};EmailImap[_0x328a('0x13')][_0x328a('0x32')]=function(_0x1bd714,_0xa0e7f8){if(_0x1bd714){logger['error'](_0x1bd714);}else{var _0x52006a=this;utils[_0x328a('0x33')](this[_0x328a('0x9')],_0xa0e7f8,function(_0x45329b){_0x52006a[_0x328a('0x21')]('email',_0x45329b);});}};EmailImap[_0x328a('0x13')][_0x328a('0x2b')]=function(){this[_0x328a('0x0')]['closeBox'](!![],this[_0x328a('0x23')][_0x328a('0x20')](this));};EmailImap[_0x328a('0x13')][_0x328a('0x2a')]=function(_0x10f9cc){this[_0x328a('0x10')](_0x10f9cc);this[_0x328a('0x0')][_0x328a('0x2c')](!![],this[_0x328a('0x23')][_0x328a('0x20')](this));};EmailImap['prototype']['handleEnd']=function(){this['emit'](_0x328a('0xe'));};EmailImap['prototype'][_0x328a('0x10')]=function(_0x6e0601,_0x575401){logger[_0x328a('0x29')](_0x328a('0x10'),this['account']['email'],JSON[_0x328a('0x34')](_0x6e0601));var _0x18e157='';if(_0x6e0601){if(_0x6e0601['textCode']){_0x18e157=_0x6e0601[_0x328a('0x35')];}else{for(var _0x531916 in _0x6e0601){if(_0x6e0601['hasOwnProperty'](_0x531916)){_0x18e157+=_['upperFirst'](_0x531916)+':\x20'+_0x6e0601[_0x531916]+'\x0a';}}}}if(_0x575401){this[_0x328a('0x0')][_0x328a('0xe')]();}else{this[_0x328a('0x21')](_0x328a('0x29'),_0x18e157);this[_0x328a('0x21')]('end');}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x654d=['simpleParser','./utils','../../../config/logger','email','INBOX','getAccount','account','once','ready','handleReady','bind','handleEnd','handleError','connect','prototype','connTimeout','authTimeout','isNil','user','host','port','tls','autotls','required','password','getHost','service','anonymous@xcally.com','openBox','handleOpenBox','emit','readUnseen','handleCloseBox','search','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','end','handleFetchEnd','error','closeBox','body','handleMessageBody','attributes','handleMessageEnd','parser','stringify','textCode','hasOwnProperty','exports','imap','lodash','mailparser'];(function(_0x12b5fe,_0x42557e){var _0x285adf=function(_0x3a5ae0){while(--_0x3a5ae0){_0x12b5fe['push'](_0x12b5fe['shift']());}};_0x285adf(++_0x42557e);}(_0x654d,0x1bd));var _0xd654=function(_0x5af970,_0x1b15ba){_0x5af970=_0x5af970-0x0;var _0x35b320=_0x654d[_0x5af970];return _0x35b320;};'use strict';var fs=require('fs');var path=require('path');var util=require('util');var Imap=require(_0xd654('0x0'));var _=require(_0xd654('0x1'));var rs=require('randomstring');var simpleParser=require(_0xd654('0x2'))[_0xd654('0x3')];var EventEmitter=require('events')['EventEmitter'];var utils=require(_0xd654('0x4'));var logger=require(_0xd654('0x5'))(_0xd654('0x6'));function EmailImap(_0x3dead8,_0x27f8c4){this['mailbox']=_0xd654('0x7');this['account']=this[_0xd654('0x8')](_0x3dead8,_0x27f8c4);this[_0xd654('0x0')]=new Imap(this[_0xd654('0x9')]);this[_0xd654('0x0')][_0xd654('0xa')](_0xd654('0xb'),this[_0xd654('0xc')][_0xd654('0xd')](this));this[_0xd654('0x0')][_0xd654('0xa')]('end',this[_0xd654('0xe')]['bind'](this));this[_0xd654('0x0')]['on']('error',this[_0xd654('0xf')][_0xd654('0xd')](this));this[_0xd654('0x0')][_0xd654('0x10')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xd654('0x11')][_0xd654('0x8')]=function(_0x5d2812,_0x1c7b31){var _0x2f2ae1={'connTimeout':_0x5d2812[_0xd654('0x12')]?_0x5d2812['connTimeout']*0x3e8:0x2710,'authTimeout':_0x5d2812['authTimeout']?_0x5d2812[_0xd654('0x13')]*0x3e8:0x1388};if(_[_0xd654('0x14')](_0x5d2812['service'])){if(_0x5d2812['authentication']){_0x2f2ae1[_0xd654('0x15')]=_0x5d2812[_0xd654('0x15')];_0x2f2ae1['password']=_0x5d2812['password'];}_0x2f2ae1[_0xd654('0x16')]=_0x5d2812[_0xd654('0x16')];_0x2f2ae1[_0xd654('0x17')]=_0x5d2812['port']||0x3e1;if(_0x5d2812['tls']){_0x2f2ae1[_0xd654('0x18')]=!![];}else{_0x2f2ae1['tls']=![];_0x2f2ae1[_0xd654('0x19')]=_0xd654('0x1a');}}else{_0x2f2ae1['user']=_0x5d2812['user'];_0x2f2ae1[_0xd654('0x1b')]=_0x5d2812['password'];_0x2f2ae1[_0xd654('0x16')]=utils[_0xd654('0x1c')](_0x5d2812[_0xd654('0x1d')]);_0x2f2ae1[_0xd654('0x17')]=0x3e1;_0x2f2ae1[_0xd654('0x18')]=!![];}_0x2f2ae1[_0xd654('0x6')]=_0x1c7b31||_0x5d2812[_0xd654('0x15')]||_0xd654('0x1e');return _0x2f2ae1;};EmailImap[_0xd654('0x11')]['handleReady']=function(){this[_0xd654('0x0')][_0xd654('0x1f')](this['mailbox'],![],this['handleOpenBox'][_0xd654('0xd')](this));};EmailImap[_0xd654('0x11')][_0xd654('0x20')]=function(_0x28be68,_0x2e3ff6){if(_0x28be68){this[_0xd654('0xf')](_0x28be68,!![]);}else{this[_0xd654('0x21')]('box',_0x2e3ff6);this[_0xd654('0x22')]();}};EmailImap['prototype'][_0xd654('0x23')]=function(_0x3b27){if(_0x3b27){this[_0xd654('0xf')](_0x3b27,!![]);}else{this[_0xd654('0x0')]['end']();}};EmailImap['prototype'][_0xd654('0x22')]=function(){this['imap'][_0xd654('0x24')](['UNSEEN'],this[_0xd654('0x25')][_0xd654('0xd')](this));};EmailImap[_0xd654('0x11')]['handleReadUnseen']=function(_0x432da6,_0x3131c9){if(_0x432da6){this[_0xd654('0xf')](_0x432da6,!![]);}else{if(_0x3131c9[_0xd654('0x26')]){try{var _0x4b6c9c=this['imap'][_0xd654('0x27')](_0x3131c9,{'bodies':'','markSeen':!![]});_0x4b6c9c['on'](_0xd654('0x28'),this[_0xd654('0x29')][_0xd654('0xd')](this));_0x4b6c9c[_0xd654('0xa')]('error',this[_0xd654('0x2a')][_0xd654('0xd')](this));_0x4b6c9c['once'](_0xd654('0x2b'),this[_0xd654('0x2c')]['bind'](this));}catch(_0x311f66){logger[_0xd654('0x2d')](_0x311f66);}}else{this[_0xd654('0x0')][_0xd654('0x2e')](!![],this['handleCloseBox']['bind'](this));}}};EmailImap[_0xd654('0x11')][_0xd654('0x29')]=function(_0x26203a,_0x22e415){_0x26203a['on'](_0xd654('0x2f'),this[_0xd654('0x30')][_0xd654('0xd')](this));_0x26203a[_0xd654('0xa')](_0xd654('0x31'),this['handleMessageAttributes'][_0xd654('0xd')](this));_0x26203a[_0xd654('0xa')]('end',this[_0xd654('0x32')][_0xd654('0xd')](this));};EmailImap[_0xd654('0x11')][_0xd654('0x30')]=function(_0x5c1b95,_0x54bd31){simpleParser(_0x5c1b95,this['handleSimpleParser'][_0xd654('0xd')](this));};EmailImap[_0xd654('0x11')]['handleMessageAttributes']=function(_0x3ad746){};EmailImap[_0xd654('0x11')]['handleMessageEnd']=function(){};EmailImap[_0xd654('0x11')]['handleSimpleParser']=function(_0x481035,_0x2c3397){if(_0x481035){logger['error'](_0x481035);}else{var _0x588c0a=this;utils[_0xd654('0x33')](this['account'],_0x2c3397,function(_0x4bc0c4){_0x588c0a[_0xd654('0x21')](_0xd654('0x6'),_0x4bc0c4);});}};EmailImap[_0xd654('0x11')]['handleFetchEnd']=function(){this['imap'][_0xd654('0x2e')](!![],this[_0xd654('0x23')][_0xd654('0xd')](this));};EmailImap['prototype'][_0xd654('0x2a')]=function(_0x23e4de){this[_0xd654('0xf')](_0x23e4de);this['imap']['closeBox'](!![],this[_0xd654('0x23')][_0xd654('0xd')](this));};EmailImap['prototype'][_0xd654('0xe')]=function(){this[_0xd654('0x21')](_0xd654('0x2b'));};EmailImap[_0xd654('0x11')][_0xd654('0xf')]=function(_0x746f03,_0x4c4773){logger['error']('handleError',this[_0xd654('0x9')][_0xd654('0x6')],JSON[_0xd654('0x34')](_0x746f03));var _0x56a618='';if(_0x746f03){if(_0x746f03[_0xd654('0x35')]){_0x56a618=_0x746f03[_0xd654('0x35')];}else{for(var _0x54ca91 in _0x746f03){if(_0x746f03[_0xd654('0x36')](_0x54ca91)){_0x56a618+=_['upperFirst'](_0x54ca91)+':\x20'+_0x746f03[_0x54ca91]+'\x0a';}}}}if(_0x4c4773){this['imap'][_0xd654('0x2b')]();}else{this[_0xd654('0x21')](_0xd654('0x2d'),_0x56a618);this[_0xd654('0x21')](_0xd654('0x2b'));}};module[_0xd654('0x37')]=EmailImap;
\ No newline at end of file
index f5a3382..bfd300a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6536=['send','createTransport','use','compile','sendMail','toString','verify','Not\x20verifired','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype'];(function(_0x43bacb,_0x2d6964){var _0x157f03=function(_0x301fb2){while(--_0x301fb2){_0x43bacb['push'](_0x43bacb['shift']());}};_0x157f03(++_0x2d6964);}(_0x6536,0xf8));var _0x6653=function(_0x5cd4b6,_0xed678d){_0x5cd4b6=_0x5cd4b6-0x0;var _0x5c04df=_0x6536[_0x5cd4b6];return _0x5c04df;};'use strict';var nodemailer=require(_0x6653('0x0'));var BPromise=require(_0x6653('0x1'));var inlineBase64=require(_0x6653('0x2'));function EmailSmtp(){}EmailSmtp[_0x6653('0x3')][_0x6653('0x4')]=function(_0x41f483,_0x1d6230){return new BPromise(function(_0xc6fa80,_0x47fc0e){var _0x145cde=nodemailer[_0x6653('0x5')](_0x41f483);_0x145cde[_0x6653('0x6')](_0x6653('0x7'),inlineBase64());_0x145cde[_0x6653('0x8')](_0x1d6230,function(_0xf32bd8,_0x490841){if(_0xf32bd8){_0x47fc0e(_0xf32bd8[_0x6653('0x9')]());}else{_0xc6fa80(_0x490841);}});});};EmailSmtp[_0x6653('0x3')][_0x6653('0xa')]=function(_0x348c08){return new BPromise(function(_0x13fcbf,_0x27aa6f){var _0x4240cb=nodemailer[_0x6653('0x5')](_0x348c08);_0x4240cb[_0x6653('0xa')](function(_0x4cf06e,_0x4bf645){if(_0x4cf06e){_0x27aa6f(_0x4cf06e['toString']());}else{if(_0x4bf645){_0x13fcbf(_0x4bf645);}else{_0x27aa6f(_0x6653('0xb'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
+var _0xc2c4=['sendMail','verify','toString','Not\x20verifired','exports','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport'];(function(_0x350615,_0x14fc3e){var _0x3a1985=function(_0x33d2c9){while(--_0x33d2c9){_0x350615['push'](_0x350615['shift']());}};_0x3a1985(++_0x14fc3e);}(_0xc2c4,0x11d));var _0x4c2c=function(_0x18b38d,_0x5d5c89){_0x18b38d=_0x18b38d-0x0;var _0x1324dd=_0xc2c4[_0x18b38d];return _0x1324dd;};'use strict';var nodemailer=require('nodemailer');var BPromise=require(_0x4c2c('0x0'));var inlineBase64=require(_0x4c2c('0x1'));function EmailSmtp(){}EmailSmtp[_0x4c2c('0x2')][_0x4c2c('0x3')]=function(_0x337502,_0x39c8a5){return new BPromise(function(_0x506d45,_0xed5e04){var _0x5ed6fb=nodemailer[_0x4c2c('0x4')](_0x337502);_0x5ed6fb['use']('compile',inlineBase64());_0x5ed6fb[_0x4c2c('0x5')](_0x39c8a5,function(_0x28b975,_0x34c617){if(_0x28b975){_0xed5e04(_0x28b975['toString']());}else{_0x506d45(_0x34c617);}});});};EmailSmtp[_0x4c2c('0x2')]['verify']=function(_0x2eee54){return new BPromise(function(_0x389e47,_0x547279){var _0x18e2e2=nodemailer[_0x4c2c('0x4')](_0x2eee54);_0x18e2e2[_0x4c2c('0x6')](function(_0xb53593,_0x6c6f21){if(_0xb53593){_0x547279(_0xb53593[_0x4c2c('0x7')]());}else{if(_0x6c6f21){_0x389e47(_0x6c6f21);}else{_0x547279(_0x4c2c('0x8'));}}});});};module[_0x4c2c('0x9')]=EmailSmtp;
\ No newline at end of file
index fdd5202..ab7dbb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x553f=['parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','getHost','gmail','imap.gmail.com','imap.mail.yahoo.com','hotmail','outlook365','127.0.0.1','lodash','moment','randomstring','path','util','email','head','address','anonymous','@xcally.com','name','split','slice','join','Anonymous','value','length','isEmpty','html','replace','body','message','originTo','originCc','includes','bcc','attachments','attach','attachment','filename','attachment-','format','%s-%s','now','root','server/files/attachments/','writeFileSync','content','push','contentType'];(function(_0x1c3ab8,_0x38aacf){var _0x4f9c01=function(_0x3daad2){while(--_0x3daad2){_0x1c3ab8['push'](_0x1c3ab8['shift']());}};_0x4f9c01(++_0x38aacf);}(_0x553f,0x1c0));var _0xf553=function(_0x24a9e8,_0x324dd4){_0x24a9e8=_0x24a9e8-0x0;var _0x1cdfc1=_0x553f[_0x24a9e8];return _0x1cdfc1;};'use strict';var _=require(_0xf553('0x0'));var moment=require(_0xf553('0x1'));var random=require(_0xf553('0x2'));var fs=require('fs');var path=require(_0xf553('0x3'));var util=require(_0xf553('0x4'));var tnef=require('node-tnef');var logger=require('../../../config/logger')(_0xf553('0x5'));var config=require('../../../config/environment');function getAddress(_0x2864fd){var _0x3b3c90=_[_0xf553('0x6')](_0x2864fd['value']);return _0x3b3c90&&_0x3b3c90[_0xf553('0x7')]?_0x3b3c90[_0xf553('0x7')]:_0xf553('0x8')+random['generate'](0x6)+_0xf553('0x9');}function getFirstName(_0xe2eec6){var _0x5d750a=_['head'](_0xe2eec6['value']);if(_0x5d750a&&_0x5d750a[_0xf553('0xa')]){var _0x1c9514=_0x5d750a['name'][_0xf553('0xb')](/\s+/);return _0x1c9514['length']?_0x1c9514[_0xf553('0xc')](0x0,-0x1)[_0xf553('0xd')]('\x20'):_0x5d750a['name'];}return _0xf553('0xe');}function getLastName(_0x271340){var _0x41e79=_[_0xf553('0x6')](_0x271340[_0xf553('0xf')]);if(_0x41e79&&_0x41e79[_0xf553('0xa')]){var _0x2aaf08=_0x41e79[_0xf553('0xa')][_0xf553('0xb')](/\s+/);return _0x2aaf08[_0xf553('0x10')]>0x1?_0x2aaf08['pop']():'';}return'';}function getMails(_0x275d32,_0x2ffe07){var _0x4ce024='';for(var _0x32a01b=0x0;_0x32a01b<_0x2ffe07[_0xf553('0xf')][_0xf553('0x10')];_0x32a01b+=0x1){if(_0x2ffe07[_0xf553('0xf')][_0x32a01b][_0xf553('0x7')]!==_0x275d32){if(!_[_0xf553('0x11')](_0x4ce024)){_0x4ce024+=',';}_0x4ce024+=_0x2ffe07['value'][_0x32a01b][_0xf553('0xa')]||_0x2ffe07[_0xf553('0xf')][_0x32a01b][_0xf553('0x7')]||'';_0x4ce024+='\x20<';_0x4ce024+=_0x2ffe07[_0xf553('0xf')][_0x32a01b][_0xf553('0x7')]?_0x2ffe07['value'][_0x32a01b][_0xf553('0x7')]:_0xf553('0x8')+random['generate'](0x6)+'@xcally.com';_0x4ce024+='>';}}return _0x4ce024;}function parseEmail(_0x155c8f,_0x2b0ed5,_0x5747d0){if(_0x2b0ed5['html']){var _0x21c395=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x21c395['test'](_0x2b0ed5[_0xf553('0x12')])){_0x2b0ed5[_0xf553('0x12')]=_0x2b0ed5[_0xf553('0x12')][_0xf553('0x13')](_0x21c395,'');}_0x5747d0[_0xf553('0x14')]=_0x2b0ed5[_0xf553('0x12')];}else{_0x5747d0['body']=_0x2b0ed5['textAsHtml'];}if(_0x5747d0[_0xf553('0x14')]){_0x5747d0[_0xf553('0x14')]=_0x5747d0['body'][_0xf553('0x13')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x2b0ed5['to']){_0x5747d0[_0xf553('0x15')][_0xf553('0x16')]=getMails(null,_0x2b0ed5['to']);var _0x3a0aa7=getMails(_0x155c8f['email'],_0x2b0ed5['to']);if(!_[_0xf553('0x11')](_0x3a0aa7)){_0x5747d0['message']['cc']+=_0x3a0aa7;}}if(_0x2b0ed5['cc']){_0x5747d0[_0xf553('0x15')][_0xf553('0x17')]=getMails(null,_0x2b0ed5['cc']);var _0x5c4dd2=getMails(_0x155c8f[_0xf553('0x5')],_0x2b0ed5['cc']);if(!_['isEmpty'](_0x5c4dd2)){if(!_[_0xf553('0x11')](_0x5747d0[_0xf553('0x15')]['cc'])){_0x5747d0['message']['cc']+=',';}_0x5747d0[_0xf553('0x15')]['cc']+=_0x5c4dd2;}}if(!_[_0xf553('0x18')](_0x5747d0[_0xf553('0x15')]['originTo'],_0x155c8f[_0xf553('0x5')])&&!_[_0xf553('0x18')](_0x5747d0[_0xf553('0x15')][_0xf553('0x17')],_0x155c8f['email'])){_0x5747d0[_0xf553('0x15')][_0xf553('0x19')]=_0x155c8f[_0xf553('0x5')];}if(_0x2b0ed5[_0xf553('0x1a')]&&_0x2b0ed5[_0xf553('0x1a')][_0xf553('0x10')]){_0x5747d0[_0xf553('0x15')][_0xf553('0x1b')]=_0x2b0ed5['attachments'][_0xf553('0x10')];for(var _0x225bc6=0x0,_0x52a652,_0x2158f7,_0x2e5583;_0x225bc6<_0x2b0ed5[_0xf553('0x1a')][_0xf553('0x10')];_0x225bc6+=0x1){if(_0x2b0ed5[_0xf553('0x1a')][_0x225bc6]['type']===_0xf553('0x1c')){_0x2e5583=_0x2b0ed5[_0xf553('0x1a')][_0x225bc6][_0xf553('0x1d')]||_0xf553('0x1e')+_0x225bc6;_0x52a652=util[_0xf553('0x1f')](_0xf553('0x20'),Date[_0xf553('0x21')](),_0x2e5583);_0x2158f7=path[_0xf553('0xd')](config[_0xf553('0x22')],_0xf553('0x23'),_0x52a652);fs[_0xf553('0x24')](_0x2158f7,_0x2b0ed5['attachments'][_0x225bc6][_0xf553('0x25')]);_0x5747d0[_0xf553('0x15')][_0xf553('0x1a')][_0xf553('0x26')]({'name':_0x2e5583,'basename':_0x52a652,'type':_0x2b0ed5[_0xf553('0x1a')][_0x225bc6][_0xf553('0x27')],'filepath':_0x2158f7});}}}return _0x5747d0;}exports[_0xf553('0x28')]=function(_0x5b2ef,_0x109585,_0x47c502){var _0x8d9e58={'from':getAddress(_0x109585[_0xf553('0x29')]),'firstName':getFirstName(_0x109585[_0xf553('0x29')]),'lastName':getLastName(_0x109585[_0xf553('0x29')]),'mapKey':'email','message':{'from':getMails(_0x5b2ef[_0xf553('0x5')],_0x109585[_0xf553('0x29')]),'to':_0x5b2ef[_0xf553('0x5')],'cc':'','subject':_0x109585[_0xf553('0x2a')]||'','messageId':_0x109585[_0xf553('0x2b')],'inReplyTo':_0x109585[_0xf553('0x2c')],'sentAt':moment(_0x109585[_0xf553('0x2d')])[_0xf553('0x1f')](_0xf553('0x2e')),'attach':![],'attachments':[]}};if(!_0x109585[_0xf553('0x12')]&&!_0x109585['textAsHtml']){var _0x35c0b7=_[_0xf553('0x2f')](_0x109585[_0xf553('0x1a')],{'contentType':'application/ms-tnef'});if(_0x35c0b7[_0xf553('0x10')]){logger['info'](util[_0xf553('0x1f')](_0xf553('0x30'),_0x109585[_0xf553('0x2b')]));tnef[_0xf553('0x31')](_['first'](_0x35c0b7)[_0xf553('0x25')],function(_0x1e334d,_0x3ecc5d){if(_0x3ecc5d){_0x109585[_0xf553('0x12')]=_0x3ecc5d[_0xf553('0x32')]||_0xf553('0x33');if(_0x3ecc5d['Attachments']){for(var _0xc14e44=0x0;_0xc14e44<_0x3ecc5d[_0xf553('0x34')][_0xf553('0x10')];_0xc14e44++){var _0x294a60=_0x3ecc5d[_0xf553('0x34')][_0xc14e44];_0x8d9e58[_0xf553('0x15')][_0xf553('0x1a')][_0xf553('0x26')]({'filename':_0x294a60['Title'],'content':new Buffer(_0x294a60[_0xf553('0x35')])});}}}_0x47c502(parseEmail(_0x5b2ef,_0x109585,_0x8d9e58));});}else{_0x109585[_0xf553('0x12')]=_0xf553('0x33');_0x47c502(parseEmail(_0x5b2ef,_0x109585,_0x8d9e58));}}else{_0x47c502(parseEmail(_0x5b2ef,_0x109585,_0x8d9e58));}};exports[_0xf553('0x36')]=function(_0x1a6990){switch(_0x1a6990){case _0xf553('0x37'):return _0xf553('0x38');case'yahoo':return _0xf553('0x39');case _0xf553('0x3a'):return'imap-mail.outlook.com';case _0xf553('0x3b'):return'outlook.office365.com';}return _0xf553('0x3c');};
\ No newline at end of file
+var _0xc4f3=['Anonymous','value','pop','anonymous','@xcally.com','html','test','replace','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','isEmpty','includes','originCc','bcc','attachments','attach','type','attachment','filename','attachment-','format','join','server/files/attachments/','writeFileSync','push','contentType','parser','from','subject','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','info','messageId','parseBuffer','first','content','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','yahoo','imap.mail.yahoo.com','imap-mail.outlook.com','outlook365','127.0.0.1','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','address','generate','name','split','length'];(function(_0x1213a5,_0x2873ac){var _0x17a930=function(_0xe0bc75){while(--_0xe0bc75){_0x1213a5['push'](_0x1213a5['shift']());}};_0x17a930(++_0x2873ac);}(_0xc4f3,0xbd));var _0x3c4f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4f3[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3c4f('0x0'));var moment=require(_0x3c4f('0x1'));var random=require(_0x3c4f('0x2'));var fs=require('fs');var path=require(_0x3c4f('0x3'));var util=require(_0x3c4f('0x4'));var tnef=require(_0x3c4f('0x5'));var logger=require(_0x3c4f('0x6'))(_0x3c4f('0x7'));var config=require(_0x3c4f('0x8'));function getAddress(_0x3cd3d4){var _0x4a74b6=_[_0x3c4f('0x9')](_0x3cd3d4['value']);return _0x4a74b6&&_0x4a74b6[_0x3c4f('0xa')]?_0x4a74b6[_0x3c4f('0xa')]:'anonymous'+random[_0x3c4f('0xb')](0x6)+'@xcally.com';}function getFirstName(_0x33152a){var _0x4237cc=_['head'](_0x33152a['value']);if(_0x4237cc&&_0x4237cc[_0x3c4f('0xc')]){var _0x56da52=_0x4237cc[_0x3c4f('0xc')][_0x3c4f('0xd')](/\s+/);return _0x56da52[_0x3c4f('0xe')]?_0x56da52['slice'](0x0,-0x1)['join']('\x20'):_0x4237cc[_0x3c4f('0xc')];}return _0x3c4f('0xf');}function getLastName(_0x29e915){var _0x4ef62b=_[_0x3c4f('0x9')](_0x29e915[_0x3c4f('0x10')]);if(_0x4ef62b&&_0x4ef62b[_0x3c4f('0xc')]){var _0x2460c5=_0x4ef62b[_0x3c4f('0xc')][_0x3c4f('0xd')](/\s+/);return _0x2460c5[_0x3c4f('0xe')]>0x1?_0x2460c5[_0x3c4f('0x11')]():'';}return'';}function getMails(_0x12345f,_0x437d74){var _0x3adbf7='';for(var _0x2e3820=0x0;_0x2e3820<_0x437d74['value']['length'];_0x2e3820+=0x1){if(_0x437d74['value'][_0x2e3820][_0x3c4f('0xa')]!==_0x12345f){if(!_['isEmpty'](_0x3adbf7)){_0x3adbf7+=',';}_0x3adbf7+=_0x437d74['value'][_0x2e3820][_0x3c4f('0xc')]||_0x437d74[_0x3c4f('0x10')][_0x2e3820][_0x3c4f('0xa')]||'';_0x3adbf7+='\x20<';_0x3adbf7+=_0x437d74['value'][_0x2e3820]['address']?_0x437d74[_0x3c4f('0x10')][_0x2e3820]['address']:_0x3c4f('0x12')+random[_0x3c4f('0xb')](0x6)+_0x3c4f('0x13');_0x3adbf7+='>';}}return _0x3adbf7;}function parseEmail(_0x4cd756,_0x5d39d2,_0x31b53f){if(_0x5d39d2[_0x3c4f('0x14')]){var _0xc188d0=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0xc188d0[_0x3c4f('0x15')](_0x5d39d2[_0x3c4f('0x14')])){_0x5d39d2[_0x3c4f('0x14')]=_0x5d39d2['html'][_0x3c4f('0x16')](_0xc188d0,'');}_0x31b53f['body']=_0x5d39d2[_0x3c4f('0x14')];}else{_0x31b53f[_0x3c4f('0x17')]=_0x5d39d2[_0x3c4f('0x18')];}if(_0x31b53f[_0x3c4f('0x17')]){_0x31b53f[_0x3c4f('0x17')]=_0x31b53f[_0x3c4f('0x17')][_0x3c4f('0x16')](/<a\s+/gi,_0x3c4f('0x19'));}if(_0x5d39d2['to']){_0x31b53f[_0x3c4f('0x1a')][_0x3c4f('0x1b')]=getMails(null,_0x5d39d2['to']);var _0xe787ff=getMails(_0x4cd756[_0x3c4f('0x7')],_0x5d39d2['to']);if(!_[_0x3c4f('0x1c')](_0xe787ff)){_0x31b53f[_0x3c4f('0x1a')]['cc']+=_0xe787ff;}}if(_0x5d39d2['cc']){_0x31b53f[_0x3c4f('0x1a')]['originCc']=getMails(null,_0x5d39d2['cc']);var _0x1672f0=getMails(_0x4cd756[_0x3c4f('0x7')],_0x5d39d2['cc']);if(!_['isEmpty'](_0x1672f0)){if(!_[_0x3c4f('0x1c')](_0x31b53f[_0x3c4f('0x1a')]['cc'])){_0x31b53f[_0x3c4f('0x1a')]['cc']+=',';}_0x31b53f[_0x3c4f('0x1a')]['cc']+=_0x1672f0;}}if(!_['includes'](_0x31b53f[_0x3c4f('0x1a')][_0x3c4f('0x1b')],_0x4cd756['email'])&&!_[_0x3c4f('0x1d')](_0x31b53f['message'][_0x3c4f('0x1e')],_0x4cd756['email'])){_0x31b53f[_0x3c4f('0x1a')][_0x3c4f('0x1f')]=_0x4cd756['email'];}if(_0x5d39d2['attachments']&&_0x5d39d2[_0x3c4f('0x20')][_0x3c4f('0xe')]){_0x31b53f[_0x3c4f('0x1a')][_0x3c4f('0x21')]=_0x5d39d2['attachments']['length'];for(var _0x7a459a=0x0,_0x191c7f,_0x1b81ad,_0x72dbc4;_0x7a459a<_0x5d39d2['attachments'][_0x3c4f('0xe')];_0x7a459a+=0x1){if(_0x5d39d2[_0x3c4f('0x20')][_0x7a459a][_0x3c4f('0x22')]===_0x3c4f('0x23')){_0x72dbc4=_0x5d39d2[_0x3c4f('0x20')][_0x7a459a][_0x3c4f('0x24')]||_0x3c4f('0x25')+_0x7a459a;_0x191c7f=util[_0x3c4f('0x26')]('%s-%s',Date['now'](),_0x72dbc4);_0x1b81ad=path[_0x3c4f('0x27')](config['root'],_0x3c4f('0x28'),_0x191c7f);fs[_0x3c4f('0x29')](_0x1b81ad,_0x5d39d2[_0x3c4f('0x20')][_0x7a459a]['content']);_0x31b53f[_0x3c4f('0x1a')][_0x3c4f('0x20')][_0x3c4f('0x2a')]({'name':_0x72dbc4,'basename':_0x191c7f,'type':_0x5d39d2[_0x3c4f('0x20')][_0x7a459a][_0x3c4f('0x2b')],'filepath':_0x1b81ad});}}}return _0x31b53f;}exports[_0x3c4f('0x2c')]=function(_0x157391,_0x29957e,_0x659b2a){var _0x46d9b1={'from':getAddress(_0x29957e['from']),'firstName':getFirstName(_0x29957e['from']),'lastName':getLastName(_0x29957e[_0x3c4f('0x2d')]),'mapKey':_0x3c4f('0x7'),'message':{'from':getMails(_0x157391[_0x3c4f('0x7')],_0x29957e['from']),'to':_0x157391[_0x3c4f('0x7')],'cc':'','subject':_0x29957e[_0x3c4f('0x2e')]||'','messageId':_0x29957e['messageId'],'inReplyTo':_0x29957e[_0x3c4f('0x2f')],'sentAt':moment(_0x29957e[_0x3c4f('0x30')])['format'](_0x3c4f('0x31')),'attach':![],'attachments':[]}};if(!_0x29957e[_0x3c4f('0x14')]&&!_0x29957e['textAsHtml']){var _0x2f582f=_[_0x3c4f('0x32')](_0x29957e[_0x3c4f('0x20')],{'contentType':'application/ms-tnef'});if(_0x2f582f[_0x3c4f('0xe')]){logger[_0x3c4f('0x33')](util[_0x3c4f('0x26')]('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x29957e[_0x3c4f('0x34')]));tnef[_0x3c4f('0x35')](_[_0x3c4f('0x36')](_0x2f582f)[_0x3c4f('0x37')],function(_0x4e468c,_0x45c4cd){if(_0x45c4cd){_0x29957e['html']=_0x45c4cd[_0x3c4f('0x38')]||_0x3c4f('0x39');if(_0x45c4cd['Attachments']){for(var _0xf66771=0x0;_0xf66771<_0x45c4cd['Attachments'][_0x3c4f('0xe')];_0xf66771++){var _0x57b15e=_0x45c4cd[_0x3c4f('0x3a')][_0xf66771];_0x46d9b1[_0x3c4f('0x1a')][_0x3c4f('0x20')][_0x3c4f('0x2a')]({'filename':_0x57b15e[_0x3c4f('0x3b')],'content':new Buffer(_0x57b15e[_0x3c4f('0x3c')])});}}}_0x659b2a(parseEmail(_0x157391,_0x29957e,_0x46d9b1));});}else{_0x29957e['html']=_0x3c4f('0x39');_0x659b2a(parseEmail(_0x157391,_0x29957e,_0x46d9b1));}}else{_0x659b2a(parseEmail(_0x157391,_0x29957e,_0x46d9b1));}};exports[_0x3c4f('0x3d')]=function(_0x568ada){switch(_0x568ada){case _0x3c4f('0x3e'):return'imap.gmail.com';case _0x3c4f('0x3f'):return _0x3c4f('0x40');case'hotmail':return _0x3c4f('0x41');case _0x3c4f('0x42'):return'outlook.office365.com';}return _0x3c4f('0x43');};
\ No newline at end of file
index 4d78441..325ec02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1603=['Smtp','exports','name','Service','key','active','Imap'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x1603,0x1b4));var _0x3160=function(_0x3b1546,_0x57123b){_0x3b1546=_0x3b1546-0x0;var _0x4af089=_0x1603[_0x3b1546];return _0x4af089;};'use strict';var _=require('lodash');function MailAccount(_0x13a045){this['id']=_0x13a045['id']||0x0;this[_0x3160('0x0')]=_0x13a045['name']||_0x3160('0x1');this[_0x3160('0x2')]=_0x13a045[_0x3160('0x2')]||'SERV';this[_0x3160('0x3')]=_0x13a045['active']||![];this[_0x3160('0x4')]=_0x13a045[_0x3160('0x4')]||[];this[_0x3160('0x5')]=_0x13a045[_0x3160('0x5')]||[];}module[_0x3160('0x6')]=MailAccount;
\ No newline at end of file
+var _0x22f8=['lodash','name','Service','key','SERV','active','Imap','Smtp','exports'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x22f8,0x105));var _0x822f=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0x22f8[_0x12d033];return _0x3b4e80;};'use strict';var _=require(_0x822f('0x0'));function MailAccount(_0x208e41){this['id']=_0x208e41['id']||0x0;this['name']=_0x208e41[_0x822f('0x1')]||_0x822f('0x2');this[_0x822f('0x3')]=_0x208e41[_0x822f('0x3')]||_0x822f('0x4');this[_0x822f('0x5')]=_0x208e41[_0x822f('0x5')]||![];this['Imap']=_0x208e41[_0x822f('0x6')]||[];this[_0x822f('0x7')]=_0x208e41[_0x822f('0x7')]||[];}module[_0x822f('0x8')]=MailAccount;
\ No newline at end of file
index 8924bfe..0d3ae93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1893=['length','merge','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts'];(function(_0x3abd78,_0x4f3e19){var _0x29deb7=function(_0x4ad9c4){while(--_0x4ad9c4){_0x3abd78['push'](_0x3abd78['shift']());}};_0x29deb7(++_0x4f3e19);}(_0x1893,0xa2));var _0x3189=function(_0x35485a,_0x91cdd4){_0x35485a=_0x35485a-0x0;var _0x5148e6=_0x1893[_0x35485a];return _0x5148e6;};'use strict';var _=require('lodash');var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x3189('0x0')]={};};function freeIsNotKey(_0x3aec2b,_0x1b12ad,_0x106df4){var _0x10c189=_[_0x3189('0x1')](_0x3aec2b,function(_0x3953a2,_0x5371db){return _0x3953a2[_0x106df4];});for(var _0x27445 in _0x1b12ad){if(_0x1b12ad[_0x3189('0x2')](_0x27445)){if(!_0x10c189[_0x27445]){delete _0x1b12ad[_0x27445];}}}}Realtime[_0x3189('0x3')][_0x3189('0x4')]=function(_0x77c566,_0x118970){for(var _0x14d84b in _0x118970){if(_0x77c566[_0x3189('0x2')](_0x14d84b)){_0x77c566[_0x14d84b]=_0x118970[_0x14d84b];}}};Realtime['prototype'][_0x3189('0x5')]=function(){var _0x56a190=this;return function(_0x127449){if(_0x127449){freeIsNotKey(_0x127449,_0x56a190['mailAccounts'],'id');for(var _0x3ec9d0=0x0,_0x33cdfb={},_0xca480c={};_0x3ec9d0<_0x127449[_0x3189('0x6')];_0x3ec9d0+=0x1){_0x33cdfb=_0x127449[_0x3ec9d0];if(_['isUndefined'](_0x56a190[_0x3189('0x0')][_0x33cdfb['id']])){_0x56a190[_0x3189('0x0')][_0x33cdfb['id']]=new MailAccount(_0x33cdfb);}else{_[_0x3189('0x7')](_0x56a190[_0x3189('0x0')][_0x33cdfb['id']],_0x33cdfb);}}}return _0x56a190[_0x3189('0x0')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0xeb3b=['mergeFromDatabase','initMailAccounts','length','isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype'];(function(_0x4dd1b3,_0x357e15){var _0x5d30ba=function(_0x419c4e){while(--_0x419c4e){_0x4dd1b3['push'](_0x4dd1b3['shift']());}};_0x5d30ba(++_0x357e15);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x229f5e,_0x433f0f){_0x229f5e=_0x229f5e-0x0;var _0x2d62ff=_0xeb3b[_0x229f5e];return _0x2d62ff;};'use strict';var _=require(_0xbeb3('0x0'));var MailAccount=require(_0xbeb3('0x1'));var Realtime=function(){this[_0xbeb3('0x2')]={};};function freeIsNotKey(_0x33e049,_0xba125a,_0x565c41){var _0x5df0cb=_[_0xbeb3('0x3')](_0x33e049,function(_0x5b0e3b,_0x2e8ce3){return _0x5b0e3b[_0x565c41];});for(var _0x4852ca in _0xba125a){if(_0xba125a[_0xbeb3('0x4')](_0x4852ca)){if(!_0x5df0cb[_0x4852ca]){delete _0xba125a[_0x4852ca];}}}}Realtime[_0xbeb3('0x5')][_0xbeb3('0x6')]=function(_0x294cc9,_0x406927){for(var _0x143255 in _0x406927){if(_0x294cc9['hasOwnProperty'](_0x143255)){_0x294cc9[_0x143255]=_0x406927[_0x143255];}}};Realtime[_0xbeb3('0x5')][_0xbeb3('0x7')]=function(){var _0x2a029e=this;return function(_0x3b61ac){if(_0x3b61ac){freeIsNotKey(_0x3b61ac,_0x2a029e[_0xbeb3('0x2')],'id');for(var _0x550805=0x0,_0x10161e={},_0x567333={};_0x550805<_0x3b61ac[_0xbeb3('0x8')];_0x550805+=0x1){_0x10161e=_0x3b61ac[_0x550805];if(_[_0xbeb3('0x9')](_0x2a029e['mailAccounts'][_0x10161e['id']])){_0x2a029e[_0xbeb3('0x2')][_0x10161e['id']]=new MailAccount(_0x10161e);}else{_[_0xbeb3('0xa')](_0x2a029e[_0xbeb3('0x2')][_0x10161e['id']],_0x10161e);}}}return _0x2a029e[_0xbeb3('0x2')];};};module[_0xbeb3('0xb')]=Realtime;
\ No newline at end of file
index a95a135..e081187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef3c=['active','key','ListId','Imap','MailServerOut','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','email'];(function(_0x57028f,_0x4bfc1d){var _0x59279d=function(_0x1f0ddd){while(--_0x1f0ddd){_0x57028f['push'](_0x57028f['shift']());}};_0x59279d(++_0x4bfc1d);}(_0xef3c,0x143));var _0xcef3=function(_0x596efc,_0x9235fb){_0x596efc=_0x596efc-0x0;var _0x1d2009=_0xef3c[_0x596efc];return _0x1d2009;};'use strict';var client=require(_0xcef3('0x0'));exports[_0xcef3('0x1')]=function(){return function(){return client[_0xcef3('0x2')](_0xcef3('0x3'),{'options':{'attributes':['id',_0xcef3('0x4'),_0xcef3('0x5'),_0xcef3('0x6'),_0xcef3('0x7'),_0xcef3('0x8'),_0xcef3('0x9'),'TemplateId'],'raw':![],'include':[{'model':'MailServerIn','as':_0xcef3('0xa')},{'model':_0xcef3('0xb'),'as':'Smtp'}]},'log':_0xcef3('0xc')});};};exports[_0xcef3('0xd')]=function(_0x300023,_0x346ff6){return client[_0xcef3('0x2')](_0xcef3('0xe'),{'account':{'id':_0x300023},'body':_0x346ff6,'log':_0xcef3('0xe')});};
\ No newline at end of file
+var _0x3aff=['Smtp','notify','Request','NotifyMailAccount','../client','name','email','key','TemplateId','MailServerIn','Imap','MailServerOut'];(function(_0x945f19,_0x5c3313){var _0x4c0fad=function(_0x5f2435){while(--_0x5f2435){_0x945f19['push'](_0x945f19['shift']());}};_0x4c0fad(++_0x5c3313);}(_0x3aff,0x148));var _0xf3af=function(_0x31f2b7,_0x260339){_0x31f2b7=_0x31f2b7-0x0;var _0x24fda3=_0x3aff[_0x31f2b7];return _0x24fda3;};'use strict';var client=require(_0xf3af('0x0'));exports['getMailAccounts']=function(){return function(){return client['Request']('GetMailAccount',{'options':{'attributes':['id',_0xf3af('0x1'),'service',_0xf3af('0x2'),'active',_0xf3af('0x3'),'ListId',_0xf3af('0x4')],'raw':![],'include':[{'model':_0xf3af('0x5'),'as':_0xf3af('0x6')},{'model':_0xf3af('0x7'),'as':_0xf3af('0x8')}]},'log':'getMailAccount'});};};exports[_0xf3af('0x9')]=function(_0x4a3c8a,_0x315cc3){return client[_0xf3af('0xa')](_0xf3af('0xb'),{'account':{'id':_0x4a3c8a},'body':_0x315cc3,'log':_0xf3af('0xb')});};
\ No newline at end of file
index e052d5f..5b71dcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb91a=['Smtp','pass','error','stringify','listen','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','bluebird','lodash','../../../config/logger','email','sendMail','account','then','Verified','values','mailAccounts','length','Imap','password'];(function(_0x3b6ada,_0x353ccb){var _0x13419b=function(_0x235c6c){while(--_0x235c6c){_0x3b6ada['push'](_0x3b6ada['shift']());}};_0x13419b(++_0x353ccb);}(_0xb91a,0xe5));var _0xab91=function(_0x221b7f,_0x196802){_0x221b7f=_0x221b7f-0x0;var _0x3f7fe4=_0xb91a[_0x221b7f];return _0x3f7fe4;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xab91('0x0'));var _=require(_0xab91('0x1'));var logger=require(_0xab91('0x2'))(_0xab91('0x3'));exports['listen']=function(_0xef323f,_0xaf3d79){return new BPromise(function(_0x53c757,_0x2b8873){var _0x4ec84d={'SendMail':function(_0x54c9f4){var _0x1f99d4=this;return new Promise(function(_0x1cce1e,_0x56f24d){_0xaf3d79[_0xab91('0x4')](_0x54c9f4[_0xab91('0x5')],_0x54c9f4['message'])[_0xab91('0x6')](function(_0x1cd3ff){_0x1cce1e({'code':0xc8,'message':_0x1cd3ff});})['catch'](function(_0x5765fc){_0x56f24d(_0x1f99d4['error'](0x1f4,_0x5765fc));});});},'VerifySmtp':function(_0x2da0bb){var _0x2273c9=this;return new Promise(function(_0x44d8b8,_0x8da5ed){_0xaf3d79['verifySmtp'](_0x2da0bb[_0xab91('0x5')])[_0xab91('0x6')](function(_0x5b8203){_0x44d8b8({'code':0xc8,'message':_0xab91('0x7')});})['catch'](function(_0x381007){_0x8da5ed(_0x2273c9['error'](0x1f4,_0x381007));});});},'MailAccounts':function(_0x4c74ad){return new Promise(function(_0x26f5e1,_0x4967bb){var _0x1dd6fa=_[_0xab91('0x8')](_0xef323f[_0xab91('0x9')]);for(var _0x29fadc=0x0;_0x29fadc<_0x1dd6fa[_0xab91('0xa')];_0x29fadc+=0x1){if(_0x1dd6fa[_0x29fadc][_0xab91('0xb')]&&_0x1dd6fa[_0x29fadc]['Imap'][_0xab91('0xc')]){delete _0x1dd6fa[_0x29fadc]['Imap'][_0xab91('0xc')];}if(_0x1dd6fa[_0x29fadc][_0xab91('0xd')]&&_0x1dd6fa[_0x29fadc][_0xab91('0xd')][_0xab91('0xe')]){delete _0x1dd6fa[_0x29fadc]['Smtp'][_0xab91('0xe')];}}_0x26f5e1({'count':_0x1dd6fa[_0xab91('0xa')],'rows':_0x1dd6fa});});}};var _0x1ece47=jayson['server'](_0x4ec84d)['http']();_0x1ece47['on'](_0xab91('0xf'),function(_0x2ca877){logger[_0xab91('0xf')](JSON[_0xab91('0x10')](_0x2ca877));return _0x2b8873(_0x2ca877);});_0x1ece47[_0xab91('0x11')](0x232b,_0xab91('0x12'),function(){console[_0xab91('0x13')](_0xab91('0x14'),0x232b);return _0x53c757(_0xab91('0x15')+0x232b);});});};
\ No newline at end of file
+var _0xf894=['account','message','catch','error','then','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','../../../config/logger','email','listen','sendMail'];(function(_0x14cfdf,_0x1348e0){var _0x15f578=function(_0x1cf468){while(--_0x1cf468){_0x14cfdf['push'](_0x14cfdf['shift']());}};_0x15f578(++_0x1348e0);}(_0xf894,0xfd));var _0x4f89=function(_0xdbff1d,_0x504984){_0xdbff1d=_0xdbff1d-0x0;var _0x1b5287=_0xf894[_0xdbff1d];return _0x1b5287;};'use strict';var jayson=require(_0x4f89('0x0'));var BPromise=require(_0x4f89('0x1'));var _=require(_0x4f89('0x2'));var logger=require(_0x4f89('0x3'))(_0x4f89('0x4'));exports[_0x4f89('0x5')]=function(_0x34ff01,_0x1bfd64){return new BPromise(function(_0x2c2f5a,_0x297f74){var _0x2f2d59={'SendMail':function(_0x413f13){var _0x8837a0=this;return new Promise(function(_0x343593,_0x324870){_0x1bfd64[_0x4f89('0x6')](_0x413f13[_0x4f89('0x7')],_0x413f13[_0x4f89('0x8')])['then'](function(_0x2f8cd8){_0x343593({'code':0xc8,'message':_0x2f8cd8});})[_0x4f89('0x9')](function(_0x2eb8fe){_0x324870(_0x8837a0[_0x4f89('0xa')](0x1f4,_0x2eb8fe));});});},'VerifySmtp':function(_0x27056c){var _0x24bf0e=this;return new Promise(function(_0x293e19,_0x593ec0){_0x1bfd64['verifySmtp'](_0x27056c['account'])[_0x4f89('0xb')](function(_0xb59c6f){_0x293e19({'code':0xc8,'message':'Verified'});})[_0x4f89('0x9')](function(_0x1106f9){_0x593ec0(_0x24bf0e[_0x4f89('0xa')](0x1f4,_0x1106f9));});});},'MailAccounts':function(_0x2e06ad){return new Promise(function(_0x350db9,_0x21ff06){var _0x29d6a4=_[_0x4f89('0xc')](_0x34ff01[_0x4f89('0xd')]);for(var _0x49c778=0x0;_0x49c778<_0x29d6a4[_0x4f89('0xe')];_0x49c778+=0x1){if(_0x29d6a4[_0x49c778][_0x4f89('0xf')]&&_0x29d6a4[_0x49c778][_0x4f89('0xf')][_0x4f89('0x10')]){delete _0x29d6a4[_0x49c778][_0x4f89('0xf')][_0x4f89('0x10')];}if(_0x29d6a4[_0x49c778][_0x4f89('0x11')]&&_0x29d6a4[_0x49c778]['Smtp'][_0x4f89('0x12')]){delete _0x29d6a4[_0x49c778]['Smtp']['pass'];}}_0x350db9({'count':_0x29d6a4[_0x4f89('0xe')],'rows':_0x29d6a4});});}};var _0x1b1937=jayson[_0x4f89('0x13')](_0x2f2d59)[_0x4f89('0x14')]();_0x1b1937['on']('error',function(_0x425d33){logger[_0x4f89('0xa')](JSON[_0x4f89('0x15')](_0x425d33));return _0x297f74(_0x425d33);});_0x1b1937[_0x4f89('0x5')](0x232b,_0x4f89('0x16'),function(){console[_0x4f89('0x17')](_0x4f89('0x18'),0x232b);return _0x2c2f5a(_0x4f89('0x19')+0x232b);});});};
\ No newline at end of file
index c55dc30..217fd93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad3=['http','express','sticky-session','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/socketio','default','../../routes','listening','log','exports','lodash'];(function(_0x3dea7d,_0x2cd4ea){var _0x53919a=function(_0x1554e2){while(--_0x1554e2){_0x3dea7d['push'](_0x3dea7d['shift']());}};_0x53919a(++_0x2cd4ea);}(_0x5ad3,0x1e2));var _0x35ad=function(_0xb0b922,_0x183826){_0xb0b922=_0xb0b922-0x0;var _0x5dc41e=_0x5ad3[_0xb0b922];return _0x5dc41e;};'use strict';var _=require(_0x35ad('0x0'));var http=require(_0x35ad('0x1'));var express=require(_0x35ad('0x2'));var sticky=require(_0x35ad('0x3'));var Redis=require('ioredis');var config=require(_0x35ad('0x4'));var app=express();var server=http[_0x35ad('0x5')](app);server[_0x35ad('0x6')]=0xdbba0;if(sticky[_0x35ad('0x7')](server,config[_0x35ad('0x8')])){var socketio=require(_0x35ad('0x9'))(server,{'transports':[_0x35ad('0xa'),_0x35ad('0xb')]});config[_0x35ad('0xc')]=_[_0x35ad('0xd')](config['redis'],{'host':_0x35ad('0xe'),'port':0x18eb});socketio[_0x35ad('0xf')](require(_0x35ad('0x10'))({'pubClient':new Redis(config['redis']),'subClient':new Redis(config[_0x35ad('0xc')])}));require('../../config/triggers')['default']();require(_0x35ad('0x11'))[_0x35ad('0x12')](socketio);require('../../config/express')[_0x35ad('0x12')](app);require(_0x35ad('0x13'))['default'](app);}else{server['once'](_0x35ad('0x14'),function(){console[_0x35ad('0x15')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x35ad('0x8')]);});}exports=module[_0x35ad('0x16')]=app;
\ No newline at end of file
+var _0x57d4=['redis','localhost','../../config/triggers','../../config/express','default','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','polling'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x57d4,0x78));var _0x457d=function(_0x3d2ea1,_0x1da465){_0x3d2ea1=_0x3d2ea1-0x0;var _0x45d788=_0x57d4[_0x3d2ea1];return _0x45d788;};'use strict';var _=require(_0x457d('0x0'));var http=require(_0x457d('0x1'));var express=require('express');var sticky=require(_0x457d('0x2'));var Redis=require(_0x457d('0x3'));var config=require(_0x457d('0x4'));var app=express();var server=http[_0x457d('0x5')](app);server[_0x457d('0x6')]=0xdbba0;if(sticky[_0x457d('0x7')](server,config[_0x457d('0x8')])){var socketio=require(_0x457d('0x9'))(server,{'transports':[_0x457d('0xa'),_0x457d('0xb')]});config[_0x457d('0xc')]=_['defaults'](config[_0x457d('0xc')],{'host':_0x457d('0xd'),'port':0x18eb});socketio['adapter'](require('socket.io-redis')({'pubClient':new Redis(config[_0x457d('0xc')]),'subClient':new Redis(config[_0x457d('0xc')])}));require(_0x457d('0xe'))['default']();require('../../config/socketio')['default'](socketio);require(_0x457d('0xf'))[_0x457d('0x10')](app);require(_0x457d('0x11'))[_0x457d('0x10')](app);}else{server[_0x457d('0x12')](_0x457d('0x13'),function(){console[_0x457d('0x14')](_0x457d('0x15'),config[_0x457d('0x8')]);});}exports=module['exports']=app;
\ No newline at end of file
index 0c60a27..f1d23c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f4=['jayson/promise','bluebird','routing','client','request','then','debug','error','result','rpc'];(function(_0x6820ad,_0x37a885){var _0x1bfba0=function(_0x55a1c8){while(--_0x55a1c8){_0x6820ad['push'](_0x6820ad['shift']());}};_0x1bfba0(++_0x37a885);}(_0x06f4,0x136));var _0x406f=function(_0x13ec66,_0x3e2b79){_0x13ec66=_0x13ec66-0x0;var _0x3c6446=_0x06f4[_0x13ec66];return _0x3c6446;};'use strict';var jayson=require(_0x406f('0x0'));var BPromise=require(_0x406f('0x1'));var logger=require('../../config/logger')(_0x406f('0x2'));var client=jayson[_0x406f('0x3')]['http']({'port':0x2329});client['Request']=function(_0x3a4ff0,_0x5ed32f){return new BPromise(function(_0x32abfd,_0x275c63){return client[_0x406f('0x4')](_0x3a4ff0,_0x5ed32f)[_0x406f('0x5')](function(_0x59821c){logger[_0x406f('0x6')]('rpc',_0x406f('0x2'),_0x3a4ff0,_0x5ed32f,_0x59821c);if(_0x59821c[_0x406f('0x7')]){logger[_0x406f('0x7')]('rpc',_0x406f('0x2'),_0x3a4ff0,_0x59821c['error']['message'],_0x5ed32f);return _0x275c63(_0x59821c[_0x406f('0x7')]['message']);}else{return _0x32abfd(_0x59821c[_0x406f('0x8')]);}})['catch'](function(_0x18eb6f){logger['error'](_0x406f('0x9'),_0x406f('0x2'),_0x3a4ff0,_0x18eb6f,_0x5ed32f);return _0x275c63(_0x18eb6f);});});};module['exports']=client;
\ No newline at end of file
+var _0x0f3c=['message','result','catch','jayson/promise','bluebird','http','Request','request','then','debug','rpc','error','routing'];(function(_0x5596ec,_0x4aa524){var _0x508a30=function(_0xdd9f3e){while(--_0xdd9f3e){_0x5596ec['push'](_0x5596ec['shift']());}};_0x508a30(++_0x4aa524);}(_0x0f3c,0x189));var _0xc0f3=function(_0x2b2ae4,_0x5ef1e2){_0x2b2ae4=_0x2b2ae4-0x0;var _0x2da549=_0x0f3c[_0x2b2ae4];return _0x2da549;};'use strict';var jayson=require(_0xc0f3('0x0'));var BPromise=require(_0xc0f3('0x1'));var logger=require('../../config/logger')('routing');var client=jayson['client'][_0xc0f3('0x2')]({'port':0x2329});client[_0xc0f3('0x3')]=function(_0xa6a874,_0x2d1f5d){return new BPromise(function(_0x1be43d,_0x279717){return client[_0xc0f3('0x4')](_0xa6a874,_0x2d1f5d)[_0xc0f3('0x5')](function(_0x4b76a0){logger[_0xc0f3('0x6')](_0xc0f3('0x7'),'routing',_0xa6a874,_0x2d1f5d,_0x4b76a0);if(_0x4b76a0[_0xc0f3('0x8')]){logger[_0xc0f3('0x8')]('rpc',_0xc0f3('0x9'),_0xa6a874,_0x4b76a0[_0xc0f3('0x8')][_0xc0f3('0xa')],_0x2d1f5d);return _0x279717(_0x4b76a0[_0xc0f3('0x8')][_0xc0f3('0xa')]);}else{return _0x1be43d(_0x4b76a0[_0xc0f3('0xb')]);}})[_0xc0f3('0xc')](function(_0x56ea36){logger[_0xc0f3('0x8')](_0xc0f3('0x7'),_0xc0f3('0x9'),_0xa6a874,_0x56ea36,_0x2d1f5d);return _0x279717(_0x56ea36);});});};module['exports']=client;
\ No newline at end of file
index f8f26fb..532ea29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0893=['initFaxQueues','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','resolve','then','getAgents','initAgents','getIntervals','getOpenchannelQueues','getChatQueues','initChatQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues'];(function(_0x210316,_0x8169eb){var _0x6aaf33=function(_0x5eea61){while(--_0x5eea61){_0x210316['push'](_0x210316['shift']());}};_0x6aaf33(++_0x8169eb);}(_0x0893,0x1a1));var _0x3089=function(_0x382ca4,_0x6b09cb){_0x382ca4=_0x382ca4-0x0;var _0x374e3c=_0x0893[_0x382ca4];return _0x374e3c;};'use strict';var BPromise=require(_0x3089('0x0'));var server=require(_0x3089('0x1'));var Realtime=require(_0x3089('0x2'));var user=require(_0x3089('0x3'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x3089('0x4'));var chatQueue=require(_0x3089('0x5'));var smsQueue=require(_0x3089('0x6'));var mailQueue=require(_0x3089('0x7'));var faxQueue=require('./rpc/faxQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x3089('0x8')]()[_0x3089('0x9')](user[_0x3089('0xa')]())[_0x3089('0x9')](realtime[_0x3089('0xb')]())[_0x3089('0x9')](interval[_0x3089('0xc')]())['then'](realtime['initIntervals']())['then'](openchannelQueue[_0x3089('0xd')]())[_0x3089('0x9')](realtime['initOpenchannelQueues']())[_0x3089('0x9')](chatQueue[_0x3089('0xe')]())[_0x3089('0x9')](realtime[_0x3089('0xf')]())['then'](smsQueue['getSmsQueues']())[_0x3089('0x9')](realtime[_0x3089('0x10')]())[_0x3089('0x9')](mailQueue[_0x3089('0x11')]())[_0x3089('0x9')](realtime[_0x3089('0x12')]())[_0x3089('0x9')](faxQueue[_0x3089('0x13')]())[_0x3089('0x9')](realtime[_0x3089('0x14')]())[_0x3089('0x9')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0x3089('0x9')](function(_0xc7144c){return initRealtime();})['then'](function(_0x11702b){return setInterval(initRealtime,0x1388);})[_0x3089('0x15')](function(_0x3f6d4f){console[_0x3089('0x16')](_0x3f6d4f);});}main();
\ No newline at end of file
+var _0x2250=['getChatQueues','getSmsQueues','getMailQueues','initMailQueues','initFaxQueues','listen','bluebird','./server','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/mailQueue','./rpc/faxQueue','then','getAgents','getIntervals','initIntervals','getOpenchannelQueues'];(function(_0x32a910,_0x453543){var _0x11139e=function(_0x173ed4){while(--_0x173ed4){_0x32a910['push'](_0x32a910['shift']());}};_0x11139e(++_0x453543);}(_0x2250,0x1a8));var _0x0225=function(_0x1a635e,_0x241651){_0x1a635e=_0x1a635e-0x0;var _0x5b3345=_0x2250[_0x1a635e];return _0x5b3345;};'use strict';var BPromise=require(_0x0225('0x0'));var server=require(_0x0225('0x1'));var Realtime=require(_0x0225('0x2'));var user=require(_0x0225('0x3'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x0225('0x4'));var chatQueue=require(_0x0225('0x5'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0x0225('0x6'));var faxQueue=require(_0x0225('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()[_0x0225('0x8')](user[_0x0225('0x9')]())[_0x0225('0x8')](realtime['initAgents']())[_0x0225('0x8')](interval[_0x0225('0xa')]())['then'](realtime[_0x0225('0xb')]())['then'](openchannelQueue[_0x0225('0xc')]())[_0x0225('0x8')](realtime['initOpenchannelQueues']())[_0x0225('0x8')](chatQueue[_0x0225('0xd')]())[_0x0225('0x8')](realtime['initChatQueues']())[_0x0225('0x8')](smsQueue[_0x0225('0xe')]())['then'](realtime['initSmsQueues']())[_0x0225('0x8')](mailQueue[_0x0225('0xf')]())['then'](realtime[_0x0225('0x10')]())[_0x0225('0x8')](faxQueue['getFaxQueues']())[_0x0225('0x8')](realtime[_0x0225('0x11')]())[_0x0225('0x8')](function(){return realtime;});}function main(){return server[_0x0225('0x12')](realtime)['then'](function(_0x19d47a){return initRealtime();})['then'](function(_0x25a7da){return setInterval(initRealtime,0x1388);})['catch'](function(_0x507188){console['log'](_0x507188);});}main();
\ No newline at end of file
index 53d6426..b23cd67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x239d=['activeRules','filter','asc','execute','result','clone','index_','ruleRef','nextTick','isEqual','restart','length','condition','call','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','map','consequence','toString','fromJSON','isString','parse','object','exports','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','isArray','rules','concat','sync'];(function(_0x22b045,_0x4e150d){var _0x43758f=function(_0x1b0fb9){while(--_0x1b0fb9){_0x22b045['push'](_0x22b045['shift']());}};_0x43758f(++_0x4e150d);}(_0x239d,0x99));var _0xd239=function(_0x3c637d,_0x2c2d77){_0x3c637d=_0x3c637d-0x0;var _0x402b94=_0x239d[_0x3c637d];return _0x402b94;};'use strict';var _=require('lodash');var util=require('util');var EventEmitter=require('events')[_0xd239('0x0')];function RuleEngine(_0x5c30fd,_0x1d2582){this[_0xd239('0x1')]();if(!_[_0xd239('0x2')](_0x5c30fd)){this[_0xd239('0x3')](_0x5c30fd);}if(_0x1d2582){this[_0xd239('0x4')]=_0x1d2582['ignoreFactChanges'];}return this;}util[_0xd239('0x5')](RuleEngine,EventEmitter);RuleEngine[_0xd239('0x6')][_0xd239('0x1')]=function(_0x397388){this['rules']=[];this['activeRules']=[];};RuleEngine[_0xd239('0x6')][_0xd239('0x3')]=function(_0x6592b7){if(Array[_0xd239('0x7')](_0x6592b7)){this[_0xd239('0x8')]=this['rules'][_0xd239('0x9')](_0x6592b7);}else if(_0x6592b7!==null&&_['isObject'](_0x6592b7)){this[_0xd239('0x8')]['push'](_0x6592b7);}this['sync']();};RuleEngine[_0xd239('0x6')][_0xd239('0xa')]=function(){this[_0xd239('0xb')]=this[_0xd239('0x8')][_0xd239('0xc')](function(_0x513623){if(_[_0xd239('0x2')](_0x513623['on'])){_0x513623['on']=!![];}if(_0x513623['on']===!![]){return _0x513623;}});this['activeRules']=_['orderBy'](this[_0xd239('0xb')],['p'],[_0xd239('0xd')]);};RuleEngine[_0xd239('0x6')][_0xd239('0xe')]=function(_0x130266,_0x271083){var _0x13faca=![];_0x130266[_0xd239('0xf')]=!![];var _0x5d0773=_[_0xd239('0x10')](_0x130266);var _0x1ebce9=_[_0xd239('0x10')](_0x130266);var _0x25bb5b=this[_0xd239('0xb')];var _0xff5e30=[];var _0x37584f=this[_0xd239('0x4')];(function FnRuleLoop(_0xe54604){var _0x6e1117={'rules':function(){return _0x25bb5b;},'rule':function(){return _0x25bb5b[_0xe54604];},'when':function(_0x545a93){if(_0x545a93){var _0x5223ec=_0x25bb5b[_0xe54604]['consequence'];_0x5223ec['ruleRef']=_0x25bb5b[_0xe54604]['id']||_0x25bb5b[_0xe54604]['name']||_0xd239('0x11')+_0xe54604;process['nextTick'](function(){_0xff5e30['push'](_0x5223ec[_0xd239('0x12')]);_0x5223ec['call'](_0x5d0773,_0x6e1117);});}else{process[_0xd239('0x13')](function(){_0x6e1117['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x13faca=!![];return FnRuleLoop(0x0);},'next':function(_0x67c269){if(!_0x37584f&&!_[_0xd239('0x14')](_0x1ebce9,_0x5d0773)){_0x1ebce9=_[_0xd239('0x10')](_0x5d0773);process['nextTick'](function(){_0x6e1117[_0xd239('0x15')]();});}else{process['nextTick'](function(){if(_[_0xd239('0x2')](_0x67c269)){return FnRuleLoop(_0xe54604+0x1);}else{return FnRuleLoop(_0x67c269);}});}}};if(_0xe54604<_0x25bb5b[_0xd239('0x16')]&&_0x13faca===![]){var _0x3e170e=_0x25bb5b[_0xe54604][_0xd239('0x17')];_0x3e170e[_0xd239('0x18')](_0x5d0773,_0x6e1117);}else{process[_0xd239('0x13')](function(){_0x5d0773[_0xd239('0x19')]=_0xff5e30;return _0x271083?_0x271083(_0x5d0773):_[_0xd239('0x1a')]();});}}(0x0));};RuleEngine[_0xd239('0x6')][_0xd239('0x1b')]=function(_0x22c041){if(_[_0xd239('0x2')](_0x22c041)){return this[_0xd239('0x8')];}else{var _0x559a86=_[_0xd239('0x1c')](_0x22c041);return _['filter'](this['rules'],_0x559a86);}};RuleEngine[_0xd239('0x6')][_0xd239('0x1d')]=function(_0xab29f8,_0x4fc28f){var _0xab29f8=_0xab29f8==='on'||_0xab29f8==='ON'?!![]:![];var _0x37ec55=this[_0xd239('0x1b')](_0x4fc28f);for(var _0x321808=0x0,_0x25fef1=_0x37ec55[_0xd239('0x16')];_0x321808<_0x25fef1;_0x321808+=0x1){_0x37ec55[_0x321808]['on']=_0xab29f8;}this[_0xd239('0xa')]();};RuleEngine[_0xd239('0x6')][_0xd239('0x1e')]=function(_0x1b97ca,_0x2131c5){_0x1b97ca=parseInt(_0x1b97ca,0xa);var _0x4a8f8=this[_0xd239('0x1b')](_0x2131c5);for(var _0x5ea53f=0x0,_0x59e1b1=_0x4a8f8['length'];_0x5ea53f<_0x59e1b1;_0x5ea53f+=0x1){_0x4a8f8[_0x5ea53f][_0xd239('0x1f')]=_0x1b97ca;}this[_0xd239('0xa')]();};RuleEngine[_0xd239('0x6')][_0xd239('0x20')]=function(){var _0x3c53ad=this[_0xd239('0x8')];if(_0x3c53ad instanceof Array){_0x3c53ad=_0x3c53ad[_0xd239('0x21')](function(_0x145cea){_0x145cea[_0xd239('0x17')]=_0x145cea['condition']['toString']();_0x145cea[_0xd239('0x22')]=_0x145cea['consequence'][_0xd239('0x23')]();return _0x145cea;});}else if(!_['isNil'](_0x3c53ad)){_0x3c53ad[_0xd239('0x17')]=_0x3c53ad[_0xd239('0x17')][_0xd239('0x23')]();_0x3c53ad['consequence']=_0x3c53ad['consequence'][_0xd239('0x23')]();}return _0x3c53ad;};RuleEngine[_0xd239('0x6')][_0xd239('0x24')]=function(_0x3d86a3){this['init']();if(_[_0xd239('0x25')](_0x3d86a3)){_0x3d86a3=JSON[_0xd239('0x26')](_0x3d86a3);}if(_0x3d86a3 instanceof Array){_0x3d86a3=_0x3d86a3[_0xd239('0x21')](function(_0x1096d3){_0x1096d3[_0xd239('0x17')]=eval('('+_0x1096d3[_0xd239('0x17')]+')');_0x1096d3[_0xd239('0x22')]=eval('('+_0x1096d3[_0xd239('0x22')]+')');return _0x1096d3;});}else if(_0x3d86a3!==null&&typeof _0x3d86a3==_0xd239('0x27')){_0x3d86a3[_0xd239('0x17')]=eval('('+_0x3d86a3[_0xd239('0x17')]+')');_0x3d86a3[_0xd239('0x22')]=eval('('+_0x3d86a3['consequence']+')');}this[_0xd239('0x3')](_0x3d86a3);};module[_0xd239('0x28')]=RuleEngine;
\ No newline at end of file
+var _0x44e6=['activeRules','isArray','concat','isObject','push','sync','execute','result','clone','consequence','ruleRef','name','index_','nextTick','call','next','isEqual','restart','condition','noop','findRules','filter','turn','length','prioritize','priority','map','toString','fromJSON','isString','parse','object','exports','lodash','events','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules'];(function(_0x43b8ce,_0x24a531){var _0xc69b1c=function(_0x19376c){while(--_0x19376c){_0x43b8ce['push'](_0x43b8ce['shift']());}};_0xc69b1c(++_0x24a531);}(_0x44e6,0x14e));var _0x644e=function(_0x4f49cd,_0x38a696){_0x4f49cd=_0x4f49cd-0x0;var _0x1cf72f=_0x44e6[_0x4f49cd];return _0x1cf72f;};'use strict';var _=require(_0x644e('0x0'));var util=require('util');var EventEmitter=require(_0x644e('0x1'))[_0x644e('0x2')];function RuleEngine(_0x4eac73,_0x774e8b){this[_0x644e('0x3')]();if(!_[_0x644e('0x4')](_0x4eac73)){this[_0x644e('0x5')](_0x4eac73);}if(_0x774e8b){this['ignoreFactChanges']=_0x774e8b[_0x644e('0x6')];}return this;}util[_0x644e('0x7')](RuleEngine,EventEmitter);RuleEngine[_0x644e('0x8')][_0x644e('0x3')]=function(_0x1b5a6b){this[_0x644e('0x9')]=[];this[_0x644e('0xa')]=[];};RuleEngine[_0x644e('0x8')][_0x644e('0x5')]=function(_0x5b5bd6){if(Array[_0x644e('0xb')](_0x5b5bd6)){this[_0x644e('0x9')]=this[_0x644e('0x9')][_0x644e('0xc')](_0x5b5bd6);}else if(_0x5b5bd6!==null&&_[_0x644e('0xd')](_0x5b5bd6)){this['rules'][_0x644e('0xe')](_0x5b5bd6);}this[_0x644e('0xf')]();};RuleEngine['prototype'][_0x644e('0xf')]=function(){this[_0x644e('0xa')]=this[_0x644e('0x9')]['filter'](function(_0x549dfb){if(_['isNil'](_0x549dfb['on'])){_0x549dfb['on']=!![];}if(_0x549dfb['on']===!![]){return _0x549dfb;}});this[_0x644e('0xa')]=_['orderBy'](this[_0x644e('0xa')],['p'],['asc']);};RuleEngine[_0x644e('0x8')][_0x644e('0x10')]=function(_0xd1ee43,_0x3b2881){var _0x141770=![];_0xd1ee43[_0x644e('0x11')]=!![];var _0xeec1e8=_[_0x644e('0x12')](_0xd1ee43);var _0x5e016a=_[_0x644e('0x12')](_0xd1ee43);var _0x20a7dd=this[_0x644e('0xa')];var _0x2b3702=[];var _0x3e1973=this[_0x644e('0x6')];(function FnRuleLoop(_0x25de7a){var _0x139552={'rules':function(){return _0x20a7dd;},'rule':function(){return _0x20a7dd[_0x25de7a];},'when':function(_0x8889a){if(_0x8889a){var _0x7837a0=_0x20a7dd[_0x25de7a][_0x644e('0x13')];_0x7837a0[_0x644e('0x14')]=_0x20a7dd[_0x25de7a]['id']||_0x20a7dd[_0x25de7a][_0x644e('0x15')]||_0x644e('0x16')+_0x25de7a;process[_0x644e('0x17')](function(){_0x2b3702[_0x644e('0xe')](_0x7837a0[_0x644e('0x14')]);_0x7837a0[_0x644e('0x18')](_0xeec1e8,_0x139552);});}else{process[_0x644e('0x17')](function(){_0x139552[_0x644e('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x141770=!![];return FnRuleLoop(0x0);},'next':function(_0x113725){if(!_0x3e1973&&!_[_0x644e('0x1a')](_0x5e016a,_0xeec1e8)){_0x5e016a=_[_0x644e('0x12')](_0xeec1e8);process[_0x644e('0x17')](function(){_0x139552[_0x644e('0x1b')]();});}else{process[_0x644e('0x17')](function(){if(_[_0x644e('0x4')](_0x113725)){return FnRuleLoop(_0x25de7a+0x1);}else{return FnRuleLoop(_0x113725);}});}}};if(_0x25de7a<_0x20a7dd['length']&&_0x141770===![]){var _0x54c8e5=_0x20a7dd[_0x25de7a][_0x644e('0x1c')];_0x54c8e5[_0x644e('0x18')](_0xeec1e8,_0x139552);}else{process['nextTick'](function(){_0xeec1e8['matchPath']=_0x2b3702;return _0x3b2881?_0x3b2881(_0xeec1e8):_[_0x644e('0x1d')]();});}}(0x0));};RuleEngine[_0x644e('0x8')][_0x644e('0x1e')]=function(_0x1922ad){if(_[_0x644e('0x4')](_0x1922ad)){return this[_0x644e('0x9')];}else{var _0x19ebd6=_['matches'](_0x1922ad);return _[_0x644e('0x1f')](this[_0x644e('0x9')],_0x19ebd6);}};RuleEngine['prototype'][_0x644e('0x20')]=function(_0xb4fc33,_0x2a0954){var _0xb4fc33=_0xb4fc33==='on'||_0xb4fc33==='ON'?!![]:![];var _0x6b117e=this['findRules'](_0x2a0954);for(var _0x157b09=0x0,_0x58c10f=_0x6b117e[_0x644e('0x21')];_0x157b09<_0x58c10f;_0x157b09+=0x1){_0x6b117e[_0x157b09]['on']=_0xb4fc33;}this['sync']();};RuleEngine[_0x644e('0x8')][_0x644e('0x22')]=function(_0x48dbe3,_0x362581){_0x48dbe3=parseInt(_0x48dbe3,0xa);var _0x451d51=this['findRules'](_0x362581);for(var _0x80218d=0x0,_0x4ad838=_0x451d51['length'];_0x80218d<_0x4ad838;_0x80218d+=0x1){_0x451d51[_0x80218d][_0x644e('0x23')]=_0x48dbe3;}this[_0x644e('0xf')]();};RuleEngine['prototype']['toJSON']=function(){var _0x2f5dba=this[_0x644e('0x9')];if(_0x2f5dba instanceof Array){_0x2f5dba=_0x2f5dba[_0x644e('0x24')](function(_0x2eadcc){_0x2eadcc[_0x644e('0x1c')]=_0x2eadcc['condition'][_0x644e('0x25')]();_0x2eadcc['consequence']=_0x2eadcc[_0x644e('0x13')][_0x644e('0x25')]();return _0x2eadcc;});}else if(!_[_0x644e('0x4')](_0x2f5dba)){_0x2f5dba[_0x644e('0x1c')]=_0x2f5dba[_0x644e('0x1c')]['toString']();_0x2f5dba['consequence']=_0x2f5dba[_0x644e('0x13')]['toString']();}return _0x2f5dba;};RuleEngine[_0x644e('0x8')][_0x644e('0x26')]=function(_0x5ce127){this['init']();if(_[_0x644e('0x27')](_0x5ce127)){_0x5ce127=JSON[_0x644e('0x28')](_0x5ce127);}if(_0x5ce127 instanceof Array){_0x5ce127=_0x5ce127['map'](function(_0x1b64fb){_0x1b64fb[_0x644e('0x1c')]=eval('('+_0x1b64fb['condition']+')');_0x1b64fb[_0x644e('0x13')]=eval('('+_0x1b64fb[_0x644e('0x13')]+')');return _0x1b64fb;});}else if(_0x5ce127!==null&&typeof _0x5ce127==_0x644e('0x29')){_0x5ce127[_0x644e('0x1c')]=eval('('+_0x5ce127[_0x644e('0x1c')]+')');_0x5ce127[_0x644e('0x13')]=eval('('+_0x5ce127[_0x644e('0x13')]+')');}this[_0x644e('0x5')](_0x5ce127);};module[_0x644e('0x2a')]=RuleEngine;
\ No newline at end of file
index bf8593d..337bbd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','error','message'];(function(_0x5daf32,_0x3d48ef){var _0xb8bcf2=function(_0x4195c9){while(--_0x4195c9){_0x5daf32['push'](_0x5daf32['shift']());}};_0xb8bcf2(++_0x3d48ef);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var BPromise=require(_0x7995('0x0'));var jayson=require(_0x7995('0x1'));var client=jayson[_0x7995('0x2')][_0x7995('0x3')]({'port':0x232b});function request(_0x5b96eb,_0x86c128){return new BPromise(function(_0x3c58eb,_0x1902b4){return client[_0x7995('0x4')](_0x5b96eb,_0x86c128)['then'](function(_0x744bea){if(_0x744bea[_0x7995('0x5')]){return _0x1902b4(_0x744bea[_0x7995('0x5')][_0x7995('0x6')]);}else{return _0x3c58eb(_0x744bea[_0x7995('0x7')]);}})[_0x7995('0x8')](function(_0x4996ca){return _0x1902b4(_0x4996ca);});});}exports[_0x7995('0x9')]=function(_0x1cad37,_0x4a64f7){return request(_0x7995('0xa'),{'account':_0x1cad37,'message':_0x4a64f7});};
\ No newline at end of file
+var _0x34e8=['catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request','then','error','message'];(function(_0x156136,_0x52575b){var _0x159e93=function(_0x1a3a78){while(--_0x1a3a78){_0x156136['push'](_0x156136['shift']());}};_0x159e93(++_0x52575b);}(_0x34e8,0x12c));var _0x834e=function(_0x19bf44,_0x1e1ca0){_0x19bf44=_0x19bf44-0x0;var _0x9e04df=_0x34e8[_0x19bf44];return _0x9e04df;};'use strict';var BPromise=require(_0x834e('0x0'));var jayson=require(_0x834e('0x1'));var client=jayson[_0x834e('0x2')][_0x834e('0x3')]({'port':0x232b});function request(_0x530939,_0x832422){return new BPromise(function(_0x21e2e0,_0x472111){return client[_0x834e('0x4')](_0x530939,_0x832422)[_0x834e('0x5')](function(_0x19a3e0){if(_0x19a3e0[_0x834e('0x6')]){return _0x472111(_0x19a3e0['error'][_0x834e('0x7')]);}else{return _0x21e2e0(_0x19a3e0['result']);}})[_0x834e('0x8')](function(_0x3cc2e3){return _0x472111(_0x3cc2e3);});});}exports[_0x834e('0x9')]=function(_0x2e69e2,_0x33ea05){return request(_0x834e('0xa'),{'account':_0x2e69e2,'message':_0x33ea05});};
\ No newline at end of file
index 48801da..8c703ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa33d=['defaults','localhost','name','online','voicePause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','working','idle','mail','fax','sms','length','Status','StatusTime','toNumber','format','chatPause','faxCapacity','smsCurrentCapacity','openchannelStatusTime','emit','user:save','exports','lodash','md5','ioredis','../../../config/environment','redis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa33d,0x1f3));var _0xda33=function(_0x515e8c,_0x36a0a6){_0x515e8c=_0x515e8c-0x0;var _0x3bf208=_0xa33d[_0x515e8c];return _0x3bf208;};'use strict';var _=require(_0xda33('0x0'));var moment=require('moment');var md5=require(_0xda33('0x1'));var Redis=require(_0xda33('0x2'));var config=require(_0xda33('0x3'));config[_0xda33('0x4')]=_[_0xda33('0x5')](config['redis'],{'host':_0xda33('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xda33('0x4')]));function Agent(_0x26ac67){this['id']=_0x26ac67['id']||0x0;this[_0xda33('0x7')]=_0x26ac67[_0xda33('0x7')]||'';this[_0xda33('0x8')]=_0x26ac67[_0xda33('0x8')]||!![];this['voicePause']=_0x26ac67[_0xda33('0x9')]||![];this['chatPause']=_0x26ac67['chatPause']||![];this[_0xda33('0xa')]=_0x26ac67[_0xda33('0xa')]||![];this[_0xda33('0xb')]=_0x26ac67[_0xda33('0xb')]||![];this[_0xda33('0xc')]=_0x26ac67['smsPause']||![];this[_0xda33('0xd')]=_0x26ac67['openchannelPause']||![];this[_0xda33('0xe')]=_0xda33('0xf');this[_0xda33('0x10')]=0x0;this[_0xda33('0x11')]=_0x26ac67['chatCapacity']||0x0;this[_0xda33('0x12')]=0x0;this[_0xda33('0x13')]=_0xda33('0xf');this[_0xda33('0x14')]=0x0;this[_0xda33('0x15')]=_0x26ac67[_0xda33('0x15')]||0x0;this[_0xda33('0x16')]=0x0;this[_0xda33('0x17')]=_0xda33('0xf');this[_0xda33('0x18')]=0x0;this['faxCapacity']=_0x26ac67['faxCapacity']||0x0;this[_0xda33('0x19')]=0x0;this[_0xda33('0x1a')]=_0xda33('0xf');this[_0xda33('0x1b')]=0x0;this[_0xda33('0x1c')]=_0x26ac67[_0xda33('0x1c')]||0x0;this['smsCurrentCapacity']=0x0;this[_0xda33('0x1d')]=_0xda33('0xf');this['openchannelStatusTime']=0x0;this[_0xda33('0x1e')]=_0x26ac67['openchannelCapacity']||0x0;this[_0xda33('0x1f')]=0x0;this[_0xda33('0x20')]=![];this[_0xda33('0x21')]=undefined;this[_0xda33('0x1')]='';this[_0xda33('0x22')]();}Agent[_0xda33('0x23')][_0xda33('0x24')]=function(_0x4b6c1a){if(this[_0x4b6c1a+_0xda33('0x25')]>0x0){if(this[_0x4b6c1a+_0xda33('0x26')]>0x0&&this[_0x4b6c1a+_0xda33('0x25')]>=this[_0x4b6c1a+_0xda33('0x26')]){return'maxcapacity';}else{return _0xda33('0x27');}}else{return _0xda33('0x28');}};Agent[_0xda33('0x23')][_0xda33('0x22')]=function(){var _0x15b141=[_0xda33('0x29'),'chat','openchannel',_0xda33('0x2a'),_0xda33('0x2b')];for(var _0x5795d1=0x0;_0x5795d1<_0x15b141[_0xda33('0x2c')];_0x5795d1+=0x1){var _0x4fc55d=this[_0xda33('0x24')](_0x15b141[_0x5795d1]);if(this[_0x15b141[_0x5795d1]+_0xda33('0x2d')]!==_0x4fc55d){this[_0x15b141[_0x5795d1]+_0xda33('0x2e')]=_[_0xda33('0x2f')](moment()[_0xda33('0x30')]('x'));}this[_0x15b141[_0x5795d1]+_0xda33('0x2d')]=_0x4fc55d;}var _0x69a4bf={'id':this['id'],'name':this[_0xda33('0x7')],'online':this[_0xda33('0x8')],'voicePause':this[_0xda33('0x9')],'chatPause':this[_0xda33('0x31')],'mailPause':this[_0xda33('0xa')],'smsPause':this[_0xda33('0xc')],'faxPause':this[_0xda33('0xb')],'openchannelPause':this[_0xda33('0xd')],'chatStatus':this[_0xda33('0xe')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0xda33('0x12')],'mailStatus':this[_0xda33('0x13')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0xda33('0x15')],'mailCurrentCapacity':this[_0xda33('0x16')],'faxStatus':this[_0xda33('0x17')],'faxStatusTime':this[_0xda33('0x18')],'faxCapacity':this[_0xda33('0x32')],'faxCurrentCapacity':this[_0xda33('0x19')],'smsStatus':this[_0xda33('0x1a')],'smsStatusTime':this[_0xda33('0x1b')],'smsCapacity':this[_0xda33('0x1c')],'smsCurrentCapacity':this[_0xda33('0x33')],'openchannelStatus':this[_0xda33('0x1d')],'openchannelStatusTime':this[_0xda33('0x34')],'openchannelCapacity':this[_0xda33('0x1e')],'openchannelCurrentCapacity':this[_0xda33('0x1f')],'busy':this[_0xda33('0x20')],'busyQueue':this[_0xda33('0x21')]};var _0x61074f=md5(JSON['stringify'](_0x69a4bf));if(this[_0xda33('0x1')]!==_0x61074f){this[_0xda33('0x1')]=_0x61074f;io[_0xda33('0x35')](_0xda33('0x36'),_0x69a4bf);}};module[_0xda33('0x37')]=Agent;
\ No newline at end of file
+var _0x7d7f=['mailCurrentCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatusTime','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','updateRealtime','prototype','getChannelStatus','Capacity','CurrentCapacity','maxcapacity','working','chat','fax','length','Status','StatusTime','toNumber','format','smsStatus','smsCapacity','smsCurrentCapacity','busyQueue','stringify','emit','exports','lodash','moment','md5','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','unknown','mailStatusTime','mailCapacity'];(function(_0x129fee,_0x683226){var _0x36af3f=function(_0x912b45){while(--_0x912b45){_0x129fee['push'](_0x129fee['shift']());}};_0x36af3f(++_0x683226);}(_0x7d7f,0x169));var _0xf7d7=function(_0x432dc3,_0x2c6d66){_0x432dc3=_0x432dc3-0x0;var _0x391401=_0x7d7f[_0x432dc3];return _0x391401;};'use strict';var _=require(_0xf7d7('0x0'));var moment=require(_0xf7d7('0x1'));var md5=require(_0xf7d7('0x2'));var Redis=require('ioredis');var config=require(_0xf7d7('0x3'));config[_0xf7d7('0x4')]=_[_0xf7d7('0x5')](config[_0xf7d7('0x4')],{'host':_0xf7d7('0x6'),'port':0x18eb});var io=require(_0xf7d7('0x7'))(new Redis(config[_0xf7d7('0x4')]));function Agent(_0x1dd782){this['id']=_0x1dd782['id']||0x0;this[_0xf7d7('0x8')]=_0x1dd782[_0xf7d7('0x8')]||'';this['online']=_0x1dd782[_0xf7d7('0x9')]||!![];this[_0xf7d7('0xa')]=_0x1dd782[_0xf7d7('0xa')]||![];this['chatPause']=_0x1dd782[_0xf7d7('0xb')]||![];this[_0xf7d7('0xc')]=_0x1dd782[_0xf7d7('0xc')]||![];this[_0xf7d7('0xd')]=_0x1dd782[_0xf7d7('0xd')]||![];this[_0xf7d7('0xe')]=_0x1dd782['smsPause']||![];this[_0xf7d7('0xf')]=_0x1dd782['openchannelPause']||![];this[_0xf7d7('0x10')]='unknown';this[_0xf7d7('0x11')]=0x0;this[_0xf7d7('0x12')]=_0x1dd782[_0xf7d7('0x12')]||0x0;this[_0xf7d7('0x13')]=0x0;this[_0xf7d7('0x14')]=_0xf7d7('0x15');this[_0xf7d7('0x16')]=0x0;this['mailCapacity']=_0x1dd782[_0xf7d7('0x17')]||0x0;this[_0xf7d7('0x18')]=0x0;this['faxStatus']='unknown';this[_0xf7d7('0x19')]=0x0;this[_0xf7d7('0x1a')]=_0x1dd782['faxCapacity']||0x0;this[_0xf7d7('0x1b')]=0x0;this['smsStatus']=_0xf7d7('0x15');this[_0xf7d7('0x1c')]=0x0;this['smsCapacity']=_0x1dd782['smsCapacity']||0x0;this['smsCurrentCapacity']=0x0;this[_0xf7d7('0x1d')]=_0xf7d7('0x15');this[_0xf7d7('0x1e')]=0x0;this[_0xf7d7('0x1f')]=_0x1dd782[_0xf7d7('0x1f')]||0x0;this[_0xf7d7('0x20')]=0x0;this[_0xf7d7('0x21')]=![];this['busyQueue']=undefined;this[_0xf7d7('0x2')]='';this[_0xf7d7('0x22')]();}Agent[_0xf7d7('0x23')][_0xf7d7('0x24')]=function(_0x40c965){if(this[_0x40c965+'CurrentCapacity']>0x0){if(this[_0x40c965+_0xf7d7('0x25')]>0x0&&this[_0x40c965+_0xf7d7('0x26')]>=this[_0x40c965+_0xf7d7('0x25')]){return _0xf7d7('0x27');}else{return _0xf7d7('0x28');}}else{return'idle';}};Agent[_0xf7d7('0x23')][_0xf7d7('0x22')]=function(){var _0x46a545=['mail',_0xf7d7('0x29'),'openchannel',_0xf7d7('0x2a'),'sms'];for(var _0x4040d6=0x0;_0x4040d6<_0x46a545[_0xf7d7('0x2b')];_0x4040d6+=0x1){var _0x5bda5b=this[_0xf7d7('0x24')](_0x46a545[_0x4040d6]);if(this[_0x46a545[_0x4040d6]+_0xf7d7('0x2c')]!==_0x5bda5b){this[_0x46a545[_0x4040d6]+_0xf7d7('0x2d')]=_[_0xf7d7('0x2e')](moment()[_0xf7d7('0x2f')]('x'));}this[_0x46a545[_0x4040d6]+'Status']=_0x5bda5b;}var _0x252fee={'id':this['id'],'name':this[_0xf7d7('0x8')],'online':this['online'],'voicePause':this[_0xf7d7('0xa')],'chatPause':this[_0xf7d7('0xb')],'mailPause':this[_0xf7d7('0xc')],'smsPause':this['smsPause'],'faxPause':this['faxPause'],'openchannelPause':this[_0xf7d7('0xf')],'chatStatus':this[_0xf7d7('0x10')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0xf7d7('0x12')],'chatCurrentCapacity':this[_0xf7d7('0x13')],'mailStatus':this[_0xf7d7('0x14')],'mailStatusTime':this[_0xf7d7('0x16')],'mailCapacity':this[_0xf7d7('0x17')],'mailCurrentCapacity':this[_0xf7d7('0x18')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0xf7d7('0x19')],'faxCapacity':this[_0xf7d7('0x1a')],'faxCurrentCapacity':this[_0xf7d7('0x1b')],'smsStatus':this[_0xf7d7('0x30')],'smsStatusTime':this[_0xf7d7('0x1c')],'smsCapacity':this[_0xf7d7('0x31')],'smsCurrentCapacity':this[_0xf7d7('0x32')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0xf7d7('0x1e')],'openchannelCapacity':this[_0xf7d7('0x1f')],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this[_0xf7d7('0x21')],'busyQueue':this[_0xf7d7('0x33')]};var _0x2536a3=md5(JSON[_0xf7d7('0x34')](_0x252fee));if(this[_0xf7d7('0x2')]!==_0x2536a3){this[_0xf7d7('0x2')]=_0x2536a3;io[_0xf7d7('0x35')]('user:save',_0x252fee);}};module[_0xf7d7('0x36')]=Agent;
\ No newline at end of file
index b7d1994..2335731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90f4=['updateRouting','updateRealtime','_rr','map','loggedIn','paused','length','online','chatPause','available','stringify','chat:queue:%s','emit','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','beepall','Agents','mapAgentsId','waiting'];(function(_0xb129ab,_0x3142e0){var _0x43c30e=function(_0x178c89){while(--_0x178c89){_0xb129ab['push'](_0xb129ab['shift']());}};_0x43c30e(++_0x3142e0);}(_0x90f4,0x15e));var _0x490f=function(_0x1fabb6,_0x56ced1){_0x1fabb6=_0x1fabb6-0x0;var _0x11dc00=_0x90f4[_0x1fabb6];return _0x11dc00;};'use strict';var _=require(_0x490f('0x0'));var md5=require(_0x490f('0x1'));var util=require('util');var Redis=require(_0x490f('0x2'));var config=require(_0x490f('0x3'));config[_0x490f('0x4')]=_[_0x490f('0x5')](config[_0x490f('0x4')],{'host':_0x490f('0x6'),'port':0x18eb});var io=require(_0x490f('0x7'))(new Redis(config[_0x490f('0x4')]));function ChatQueue(_0x2f9d55){this['id']=_0x2f9d55['id']||0x0;this['name']=_0x2f9d55[_0x490f('0x8')]||'';this[_0x490f('0x9')]=_0x2f9d55['timeout']||0xa;this['strategy']=_0x2f9d55['strategy']||_0x490f('0xa');this['Agents']=_0x2f9d55[_0x490f('0xb')];this[_0x490f('0xc')]={};this[_0x490f('0xd')]=0x0;this['md5']='';this[_0x490f('0xe')]();this[_0x490f('0xf')]();}ChatQueue['prototype']['updateRouting']=function(){var _0x4e02f1=this['mapAgentsId'][_0x490f('0x10')];this[_0x490f('0xc')]=_[_0x490f('0x11')](this[_0x490f('0xb')],'id');this[_0x490f('0xc')][_0x490f('0x10')]=_0x4e02f1;};ChatQueue['prototype']['updateRealtime']=function(){this[_0x490f('0x12')]=0x0;this[_0x490f('0x13')]=0x0;for(var _0x47103a=0x0;_0x47103a<this['Agents'][_0x490f('0x14')];_0x47103a+=0x1){if(this[_0x490f('0xb')][_0x47103a][_0x490f('0x15')]){this[_0x490f('0x12')]+=0x1;}if(this[_0x490f('0xb')][_0x47103a][_0x490f('0x16')]){this[_0x490f('0x13')]+=0x1;}}this['available']=this[_0x490f('0x12')]-this['paused'];this[_0x490f('0x17')]=this['available']>=0x0?this[_0x490f('0x17')]:0x0;var _0xa996c4={'id':this['id'],'available':this['available'],'loggedIn':this[_0x490f('0x12')],'name':this[_0x490f('0x8')],'paused':this[_0x490f('0x13')],'waiting':this[_0x490f('0xd')]};var _0x5010=md5(JSON[_0x490f('0x18')](_0xa996c4));if(this[_0x490f('0x1')]!==_0x5010){this['md5']=_0x5010;io['to'](util['format'](_0x490f('0x19'),_0xa996c4['name']))[_0x490f('0x1a')]('chat_queue:save',_0xa996c4);}};module[_0x490f('0x1b')]=ChatQueue;
\ No newline at end of file
+var _0xf59e=['beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','chatPause','available','stringify','format','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy'];(function(_0x43a1b8,_0x1c90c8){var _0x324ecc=function(_0x53a93b){while(--_0x53a93b){_0x43a1b8['push'](_0x43a1b8['shift']());}};_0x324ecc(++_0x1c90c8);}(_0xf59e,0x1d4));var _0xef59=function(_0x29ef89,_0x49d945){_0x29ef89=_0x29ef89-0x0;var _0x2e5633=_0xf59e[_0x29ef89];return _0x2e5633;};'use strict';var _=require(_0xef59('0x0'));var md5=require(_0xef59('0x1'));var util=require(_0xef59('0x2'));var Redis=require(_0xef59('0x3'));var config=require(_0xef59('0x4'));config[_0xef59('0x5')]=_[_0xef59('0x6')](config[_0xef59('0x5')],{'host':_0xef59('0x7'),'port':0x18eb});var io=require(_0xef59('0x8'))(new Redis(config[_0xef59('0x5')]));function ChatQueue(_0x41dd5f){this['id']=_0x41dd5f['id']||0x0;this[_0xef59('0x9')]=_0x41dd5f[_0xef59('0x9')]||'';this[_0xef59('0xa')]=_0x41dd5f[_0xef59('0xa')]||0xa;this[_0xef59('0xb')]=_0x41dd5f[_0xef59('0xb')]||_0xef59('0xc');this[_0xef59('0xd')]=_0x41dd5f[_0xef59('0xd')];this[_0xef59('0xe')]={};this['waiting']=0x0;this[_0xef59('0x1')]='';this[_0xef59('0xf')]();this[_0xef59('0x10')]();}ChatQueue[_0xef59('0x11')][_0xef59('0xf')]=function(){var _0x19a1a9=this[_0xef59('0xe')][_0xef59('0x12')];this[_0xef59('0xe')]=_[_0xef59('0x13')](this[_0xef59('0xd')],'id');this['mapAgentsId'][_0xef59('0x12')]=_0x19a1a9;};ChatQueue['prototype']['updateRealtime']=function(){this[_0xef59('0x14')]=0x0;this[_0xef59('0x15')]=0x0;for(var _0x2b3bf8=0x0;_0x2b3bf8<this[_0xef59('0xd')][_0xef59('0x16')];_0x2b3bf8+=0x1){if(this[_0xef59('0xd')][_0x2b3bf8][_0xef59('0x17')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x2b3bf8][_0xef59('0x18')]){this[_0xef59('0x15')]+=0x1;}}this[_0xef59('0x19')]=this[_0xef59('0x14')]-this['paused'];this[_0xef59('0x19')]=this['available']>=0x0?this['available']:0x0;var _0x19a7fa={'id':this['id'],'available':this[_0xef59('0x19')],'loggedIn':this[_0xef59('0x14')],'name':this[_0xef59('0x9')],'paused':this[_0xef59('0x15')],'waiting':this['waiting']};var _0x3e7f25=md5(JSON[_0xef59('0x1a')](_0x19a7fa));if(this['md5']!==_0x3e7f25){this['md5']=_0x3e7f25;io['to'](util[_0xef59('0x1b')]('chat:queue:%s',_0x19a7fa[_0xef59('0x9')]))['emit'](_0xef59('0x1c'),_0x19a7fa);}};module[_0xef59('0x1d')]=ChatQueue;
\ No newline at end of file
index f9d8e25..ed8577b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x221f=['loggedIn','paused','length','online','faxPause','available','stringify','fax:queue:%s','emit','fax_queue:save','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','map','updateRealtime'];(function(_0x129712,_0x1951f2){var _0xc29a8d=function(_0x42cc99){while(--_0x42cc99){_0x129712['push'](_0x129712['shift']());}};_0xc29a8d(++_0x1951f2);}(_0x221f,0x1ae));var _0xf221=function(_0x55ef8b,_0x5deb5e){_0x55ef8b=_0x55ef8b-0x0;var _0x359c84=_0x221f[_0x55ef8b];return _0x359c84;};'use strict';var _=require('lodash');var md5=require(_0xf221('0x0'));var util=require(_0xf221('0x1'));var Redis=require(_0xf221('0x2'));var config=require(_0xf221('0x3'));config[_0xf221('0x4')]=_[_0xf221('0x5')](config[_0xf221('0x4')],{'host':_0xf221('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf221('0x4')]));function FaxQueue(_0x4a6896){this['id']=_0x4a6896['id']||0x0;this[_0xf221('0x7')]=_0x4a6896[_0xf221('0x7')]||'';this[_0xf221('0x8')]=_0x4a6896['timeout']||0xa;this['strategy']=_0x4a6896['strategy']||_0xf221('0x9');this[_0xf221('0xa')]=_0x4a6896[_0xf221('0xa')];this[_0xf221('0xb')]={};this[_0xf221('0xc')]=0x0;this['md5']='';this[_0xf221('0xd')]();this['updateRealtime']();}FaxQueue[_0xf221('0xe')][_0xf221('0xd')]=function(){var _0x9d32b0=this[_0xf221('0xb')][_0xf221('0xf')];this[_0xf221('0xb')]=_[_0xf221('0x10')](this['Agents'],'id');this[_0xf221('0xb')][_0xf221('0xf')]=_0x9d32b0;};FaxQueue[_0xf221('0xe')][_0xf221('0x11')]=function(){this[_0xf221('0x12')]=0x0;this[_0xf221('0x13')]=0x0;for(var _0x4be10f=0x0;_0x4be10f<this[_0xf221('0xa')][_0xf221('0x14')];_0x4be10f+=0x1){if(this[_0xf221('0xa')][_0x4be10f][_0xf221('0x15')]){this[_0xf221('0x12')]+=0x1;}if(this['Agents'][_0x4be10f][_0xf221('0x16')]){this['paused']+=0x1;}}this[_0xf221('0x17')]=this['loggedIn']-this['paused'];this[_0xf221('0x17')]=this[_0xf221('0x17')]>=0x0?this[_0xf221('0x17')]:0x0;var _0x343858={'id':this['id'],'available':this[_0xf221('0x17')],'loggedIn':this[_0xf221('0x12')],'name':this['name'],'paused':this[_0xf221('0x13')],'waiting':this['waiting']};var _0xcffab5=md5(JSON[_0xf221('0x18')](_0x343858));if(this['md5']!==_0xcffab5){this[_0xf221('0x0')]=_0xcffab5;io['to'](util['format'](_0xf221('0x19'),_0x343858[_0xf221('0x7')]))[_0xf221('0x1a')](_0xf221('0x1b'),_0x343858);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0xdcd8=['fax:queue:%s','fax_queue:save','exports','lodash','md5','util','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','paused','length','online','faxPause','available','loggedIn','stringify'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0xdcd8,0xab));var _0x8dcd=function(_0x540687,_0x1f5277){_0x540687=_0x540687-0x0;var _0x53e71a=_0xdcd8[_0x540687];return _0x53e71a;};'use strict';var _=require(_0x8dcd('0x0'));var md5=require(_0x8dcd('0x1'));var util=require(_0x8dcd('0x2'));var Redis=require('ioredis');var config=require(_0x8dcd('0x3'));config[_0x8dcd('0x4')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x8dcd('0x5'))(new Redis(config['redis']));function FaxQueue(_0x15cb24){this['id']=_0x15cb24['id']||0x0;this[_0x8dcd('0x6')]=_0x15cb24[_0x8dcd('0x6')]||'';this[_0x8dcd('0x7')]=_0x15cb24[_0x8dcd('0x7')]||0xa;this[_0x8dcd('0x8')]=_0x15cb24[_0x8dcd('0x8')]||_0x8dcd('0x9');this[_0x8dcd('0xa')]=_0x15cb24[_0x8dcd('0xa')];this[_0x8dcd('0xb')]={};this[_0x8dcd('0xc')]=0x0;this[_0x8dcd('0x1')]='';this[_0x8dcd('0xd')]();this[_0x8dcd('0xe')]();}FaxQueue[_0x8dcd('0xf')][_0x8dcd('0xd')]=function(){var _0xb3b6b3=this[_0x8dcd('0xb')][_0x8dcd('0x10')];this[_0x8dcd('0xb')]=_[_0x8dcd('0x11')](this[_0x8dcd('0xa')],'id');this[_0x8dcd('0xb')][_0x8dcd('0x10')]=_0xb3b6b3;};FaxQueue['prototype'][_0x8dcd('0xe')]=function(){this['loggedIn']=0x0;this[_0x8dcd('0x12')]=0x0;for(var _0x51e16a=0x0;_0x51e16a<this['Agents'][_0x8dcd('0x13')];_0x51e16a+=0x1){if(this['Agents'][_0x51e16a][_0x8dcd('0x14')]){this['loggedIn']+=0x1;}if(this[_0x8dcd('0xa')][_0x51e16a][_0x8dcd('0x15')]){this['paused']+=0x1;}}this[_0x8dcd('0x16')]=this[_0x8dcd('0x17')]-this[_0x8dcd('0x12')];this[_0x8dcd('0x16')]=this[_0x8dcd('0x16')]>=0x0?this['available']:0x0;var _0x25782f={'id':this['id'],'available':this[_0x8dcd('0x16')],'loggedIn':this[_0x8dcd('0x17')],'name':this['name'],'paused':this[_0x8dcd('0x12')],'waiting':this[_0x8dcd('0xc')]};var _0x428cd1=md5(JSON[_0x8dcd('0x18')](_0x25782f));if(this['md5']!==_0x428cd1){this[_0x8dcd('0x1')]=_0x428cd1;io['to'](util['format'](_0x8dcd('0x19'),_0x25782f[_0x8dcd('0x6')]))['emit'](_0x8dcd('0x1a'),_0x25782f);}};module[_0x8dcd('0x1b')]=FaxQueue;
\ No newline at end of file
index f81804e..bb319e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24b0=['Intervals','name'];(function(_0x1a47f8,_0x272e9e){var _0x12aac9=function(_0x533afe){while(--_0x533afe){_0x1a47f8['push'](_0x1a47f8['shift']());}};_0x12aac9(++_0x272e9e);}(_0x24b0,0xc7));var _0x024b=function(_0x3fc8eb,_0x186a59){_0x3fc8eb=_0x3fc8eb-0x0;var _0xcb2c1f=_0x24b0[_0x3fc8eb];return _0xcb2c1f;};'use strict';function Interval(_0x756e2b){this['id']=_0x756e2b['id']||0x0;this[_0x024b('0x0')]=_0x756e2b[_0x024b('0x0')]||'';this[_0x024b('0x1')]=_0x756e2b[_0x024b('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0xad81=['name','Intervals','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xad81,0x168));var _0x1ad8=function(_0xbced40,_0x2fa5f0){_0xbced40=_0xbced40-0x0;var _0x230f2e=_0xad81[_0xbced40];return _0x230f2e;};'use strict';function Interval(_0xc4ac4f){this['id']=_0xc4ac4f['id']||0x0;this['name']=_0xc4ac4f[_0x1ad8('0x0')]||'';this[_0x1ad8('0x1')]=_0xc4ac4f[_0x1ad8('0x1')]||{};}module[_0x1ad8('0x2')]=Interval;
\ No newline at end of file
index cb6b130..af3c54d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8af=['redis','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','loggedIn','paused','length','online','mailPause','available','stringify','format','mail_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','localhost','socket.io-emitter'];(function(_0x19159a,_0x1cb5c3){var _0xa677f4=function(_0x24bb85){while(--_0x24bb85){_0x19159a['push'](_0x19159a['shift']());}};_0xa677f4(++_0x1cb5c3);}(_0xd8af,0x18d));var _0xfd8a=function(_0x56f708,_0x3081bc){_0x56f708=_0x56f708-0x0;var _0x53dcc0=_0xd8af[_0x56f708];return _0x53dcc0;};'use strict';var _=require(_0xfd8a('0x0'));var md5=require(_0xfd8a('0x1'));var util=require(_0xfd8a('0x2'));var Redis=require(_0xfd8a('0x3'));var config=require(_0xfd8a('0x4'));config['redis']=_[_0xfd8a('0x5')](config['redis'],{'host':_0xfd8a('0x6'),'port':0x18eb});var io=require(_0xfd8a('0x7'))(new Redis(config[_0xfd8a('0x8')]));function MailQueue(_0x5c2b68){this['id']=_0x5c2b68['id']||0x0;this[_0xfd8a('0x9')]=_0x5c2b68['name']||'';this[_0xfd8a('0xa')]=_0x5c2b68[_0xfd8a('0xa')]||0xa;this[_0xfd8a('0xb')]=_0x5c2b68[_0xfd8a('0xb')]||'beepall';this[_0xfd8a('0xc')]=_0x5c2b68[_0xfd8a('0xc')];this[_0xfd8a('0xd')]={};this[_0xfd8a('0xe')]=0x0;this[_0xfd8a('0x1')]='';this[_0xfd8a('0xf')]();this['updateRealtime']();}MailQueue['prototype'][_0xfd8a('0xf')]=function(){var _0x35a379=this[_0xfd8a('0xd')]['_rr'];this['mapAgentsId']=_['map'](this[_0xfd8a('0xc')],'id');this[_0xfd8a('0xd')]['_rr']=_0x35a379;};MailQueue['prototype'][_0xfd8a('0x10')]=function(){this[_0xfd8a('0x11')]=0x0;this[_0xfd8a('0x12')]=0x0;for(var _0x352e9b=0x0;_0x352e9b<this[_0xfd8a('0xc')][_0xfd8a('0x13')];_0x352e9b+=0x1){if(this[_0xfd8a('0xc')][_0x352e9b][_0xfd8a('0x14')]){this[_0xfd8a('0x11')]+=0x1;}if(this[_0xfd8a('0xc')][_0x352e9b][_0xfd8a('0x15')]){this[_0xfd8a('0x12')]+=0x1;}}this[_0xfd8a('0x16')]=this[_0xfd8a('0x11')]-this[_0xfd8a('0x12')];this[_0xfd8a('0x16')]=this[_0xfd8a('0x16')]>=0x0?this[_0xfd8a('0x16')]:0x0;var _0x45428e={'id':this['id'],'available':this[_0xfd8a('0x16')],'loggedIn':this[_0xfd8a('0x11')],'name':this[_0xfd8a('0x9')],'paused':this[_0xfd8a('0x12')],'waiting':this['waiting']};var _0xf8548a=md5(JSON[_0xfd8a('0x17')](_0x45428e));if(this[_0xfd8a('0x1')]!==_0xf8548a){this['md5']=_0xf8548a;io['to'](util[_0xfd8a('0x18')]('mail:queue:%s',_0x45428e[_0xfd8a('0x9')]))['emit'](_0xfd8a('0x19'),_0x45428e);}};module[_0xfd8a('0x1a')]=MailQueue;
\ No newline at end of file
+var _0x160c=['loggedIn','length','mailPause','paused','available','stringify','format','mail:queue:%s','emit','exports','md5','util','ioredis','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr'];(function(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0x160c,0x181));var _0xc160=function(_0xf27539,_0x2a9904){_0xf27539=_0xf27539-0x0;var _0x30ff9b=_0x160c[_0xf27539];return _0x30ff9b;};'use strict';var _=require('lodash');var md5=require(_0xc160('0x0'));var util=require(_0xc160('0x1'));var Redis=require(_0xc160('0x2'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0xc160('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xc160('0x4'))(new Redis(config[_0xc160('0x3')]));function MailQueue(_0x14dc50){this['id']=_0x14dc50['id']||0x0;this['name']=_0x14dc50[_0xc160('0x5')]||'';this['timeout']=_0x14dc50[_0xc160('0x6')]||0xa;this['strategy']=_0x14dc50[_0xc160('0x7')]||_0xc160('0x8');this['Agents']=_0x14dc50[_0xc160('0x9')];this[_0xc160('0xa')]={};this['waiting']=0x0;this[_0xc160('0x0')]='';this[_0xc160('0xb')]();this[_0xc160('0xc')]();}MailQueue[_0xc160('0xd')][_0xc160('0xb')]=function(){var _0xe6e9d2=this[_0xc160('0xa')][_0xc160('0xe')];this[_0xc160('0xa')]=_['map'](this[_0xc160('0x9')],'id');this[_0xc160('0xa')]['_rr']=_0xe6e9d2;};MailQueue[_0xc160('0xd')][_0xc160('0xc')]=function(){this[_0xc160('0xf')]=0x0;this['paused']=0x0;for(var _0x1c3110=0x0;_0x1c3110<this['Agents'][_0xc160('0x10')];_0x1c3110+=0x1){if(this[_0xc160('0x9')][_0x1c3110]['online']){this[_0xc160('0xf')]+=0x1;}if(this['Agents'][_0x1c3110][_0xc160('0x11')]){this[_0xc160('0x12')]+=0x1;}}this[_0xc160('0x13')]=this['loggedIn']-this['paused'];this[_0xc160('0x13')]=this[_0xc160('0x13')]>=0x0?this[_0xc160('0x13')]:0x0;var _0x54e6e0={'id':this['id'],'available':this[_0xc160('0x13')],'loggedIn':this[_0xc160('0xf')],'name':this[_0xc160('0x5')],'paused':this[_0xc160('0x12')],'waiting':this['waiting']};var _0x10da02=md5(JSON[_0xc160('0x14')](_0x54e6e0));if(this['md5']!==_0x10da02){this[_0xc160('0x0')]=_0x10da02;io['to'](util[_0xc160('0x15')](_0xc160('0x16'),_0x54e6e0[_0xc160('0x5')]))[_0xc160('0x17')]('mail_queue:save',_0x54e6e0);}};module[_0xc160('0x18')]=MailQueue;
\ No newline at end of file
index b52ba71..c280b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4b0=['md5','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','online','openchannelPause','available','waiting','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId'];(function(_0x1b42da,_0x492e18){var _0x59abab=function(_0x2b2dae){while(--_0x2b2dae){_0x1b42da['push'](_0x1b42da['shift']());}};_0x59abab(++_0x492e18);}(_0xc4b0,0x1a4));var _0x0c4b=function(_0x4ff7d1,_0x3331d1){_0x4ff7d1=_0x4ff7d1-0x0;var _0x16e063=_0xc4b0[_0x4ff7d1];return _0x16e063;};'use strict';var _=require(_0x0c4b('0x0'));var md5=require('md5');var util=require(_0x0c4b('0x1'));var Redis=require(_0x0c4b('0x2'));var config=require(_0x0c4b('0x3'));config[_0x0c4b('0x4')]=_[_0x0c4b('0x5')](config[_0x0c4b('0x4')],{'host':_0x0c4b('0x6'),'port':0x18eb});var io=require(_0x0c4b('0x7'))(new Redis(config['redis']));function OpenchannelQueue(_0x2d9bf3){this['id']=_0x2d9bf3['id']||0x0;this[_0x0c4b('0x8')]=_0x2d9bf3['name']||'';this['timeout']=_0x2d9bf3[_0x0c4b('0x9')]||0xa;this[_0x0c4b('0xa')]=_0x2d9bf3[_0x0c4b('0xa')]||_0x0c4b('0xb');this[_0x0c4b('0xc')]=_0x2d9bf3[_0x0c4b('0xc')];this[_0x0c4b('0xd')]={};this['waiting']=0x0;this[_0x0c4b('0xe')]='';this[_0x0c4b('0xf')]();this[_0x0c4b('0x10')]();}OpenchannelQueue[_0x0c4b('0x11')]['updateRouting']=function(){var _0x472008=this[_0x0c4b('0xd')][_0x0c4b('0x12')];this[_0x0c4b('0xd')]=_['map'](this[_0x0c4b('0xc')],'id');this[_0x0c4b('0xd')][_0x0c4b('0x12')]=_0x472008;};OpenchannelQueue[_0x0c4b('0x11')]['updateRealtime']=function(){this[_0x0c4b('0x13')]=0x0;this[_0x0c4b('0x14')]=0x0;for(var _0x3b696d=0x0;_0x3b696d<this[_0x0c4b('0xc')]['length'];_0x3b696d+=0x1){if(this[_0x0c4b('0xc')][_0x3b696d][_0x0c4b('0x15')]){this['loggedIn']+=0x1;}if(this[_0x0c4b('0xc')][_0x3b696d][_0x0c4b('0x16')]){this['paused']+=0x1;}}this[_0x0c4b('0x17')]=this[_0x0c4b('0x13')]-this[_0x0c4b('0x14')];this[_0x0c4b('0x17')]=this['available']>=0x0?this[_0x0c4b('0x17')]:0x0;var _0x32d7a2={'id':this['id'],'available':this[_0x0c4b('0x17')],'loggedIn':this['loggedIn'],'name':this[_0x0c4b('0x8')],'paused':this[_0x0c4b('0x14')],'waiting':this[_0x0c4b('0x18')]};var _0x3ae36f=md5(JSON[_0x0c4b('0x19')](_0x32d7a2));if(this[_0x0c4b('0xe')]!==_0x3ae36f){this[_0x0c4b('0xe')]=_0x3ae36f;io['to'](util[_0x0c4b('0x1a')](_0x0c4b('0x1b'),_0x32d7a2[_0x0c4b('0x8')]))[_0x0c4b('0x1c')](_0x0c4b('0x1d'),_0x32d7a2);}};module[_0x0c4b('0x1e')]=OpenchannelQueue;
\ No newline at end of file
+var _0x698c=['openchannel:queue:%s','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','paused','Agents','length','online','openchannelPause','available','stringify','format'];(function(_0x4ab5f9,_0x42e029){var _0x43fc54=function(_0x4f6e77){while(--_0x4f6e77){_0x4ab5f9['push'](_0x4ab5f9['shift']());}};_0x43fc54(++_0x42e029);}(_0x698c,0x158));var _0xc698=function(_0x58ba7c,_0x28c81f){_0x58ba7c=_0x58ba7c-0x0;var _0x227e91=_0x698c[_0x58ba7c];return _0x227e91;};'use strict';var _=require(_0xc698('0x0'));var md5=require(_0xc698('0x1'));var util=require(_0xc698('0x2'));var Redis=require(_0xc698('0x3'));var config=require(_0xc698('0x4'));config[_0xc698('0x5')]=_[_0xc698('0x6')](config['redis'],{'host':_0xc698('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc698('0x5')]));function OpenchannelQueue(_0x282cfe){this['id']=_0x282cfe['id']||0x0;this[_0xc698('0x8')]=_0x282cfe['name']||'';this[_0xc698('0x9')]=_0x282cfe[_0xc698('0x9')]||0xa;this[_0xc698('0xa')]=_0x282cfe[_0xc698('0xa')]||_0xc698('0xb');this['Agents']=_0x282cfe['Agents'];this['mapAgentsId']={};this[_0xc698('0xc')]=0x0;this[_0xc698('0x1')]='';this[_0xc698('0xd')]();this[_0xc698('0xe')]();}OpenchannelQueue[_0xc698('0xf')][_0xc698('0xd')]=function(){var _0x35185a=this[_0xc698('0x10')]['_rr'];this['mapAgentsId']=_[_0xc698('0x11')](this['Agents'],'id');this[_0xc698('0x10')][_0xc698('0x12')]=_0x35185a;};OpenchannelQueue[_0xc698('0xf')][_0xc698('0xe')]=function(){this[_0xc698('0x13')]=0x0;this[_0xc698('0x14')]=0x0;for(var _0x3fde88=0x0;_0x3fde88<this[_0xc698('0x15')][_0xc698('0x16')];_0x3fde88+=0x1){if(this[_0xc698('0x15')][_0x3fde88][_0xc698('0x17')]){this[_0xc698('0x13')]+=0x1;}if(this[_0xc698('0x15')][_0x3fde88][_0xc698('0x18')]){this[_0xc698('0x14')]+=0x1;}}this[_0xc698('0x19')]=this[_0xc698('0x13')]-this[_0xc698('0x14')];this[_0xc698('0x19')]=this[_0xc698('0x19')]>=0x0?this[_0xc698('0x19')]:0x0;var _0x5cba33={'id':this['id'],'available':this[_0xc698('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xc698('0xc')]};var _0x2dd09c=md5(JSON[_0xc698('0x1a')](_0x5cba33));if(this['md5']!==_0x2dd09c){this[_0xc698('0x1')]=_0x2dd09c;io['to'](util[_0xc698('0x1b')](_0xc698('0x1c'),_0x5cba33[_0xc698('0x8')]))['emit'](_0xc698('0x1d'),_0x5cba33);}};module[_0xc698('0x1e')]=OpenchannelQueue;
\ No newline at end of file
index ddc930e..4a654d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33be=['online','smsPause','available','stringify','format','sms:queue:%s','sms_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length'];(function(_0x367e5b,_0x5721e4){var _0x4b909e=function(_0x22c6a4){while(--_0x22c6a4){_0x367e5b['push'](_0x367e5b['shift']());}};_0x4b909e(++_0x5721e4);}(_0x33be,0x17c));var _0xe33b=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x33be[_0x16b9ed];return _0x66b1f8;};'use strict';var _=require('lodash');var md5=require(_0xe33b('0x0'));var util=require(_0xe33b('0x1'));var Redis=require(_0xe33b('0x2'));var config=require(_0xe33b('0x3'));config[_0xe33b('0x4')]=_[_0xe33b('0x5')](config['redis'],{'host':_0xe33b('0x6'),'port':0x18eb});var io=require(_0xe33b('0x7'))(new Redis(config['redis']));function SmsQueue(_0x573e44){this['id']=_0x573e44['id']||0x0;this['name']=_0x573e44[_0xe33b('0x8')]||'';this[_0xe33b('0x9')]=_0x573e44['timeout']||0xa;this[_0xe33b('0xa')]=_0x573e44['strategy']||_0xe33b('0xb');this[_0xe33b('0xc')]=_0x573e44[_0xe33b('0xc')];this[_0xe33b('0xd')]={};this[_0xe33b('0xe')]=0x0;this[_0xe33b('0x0')]='';this[_0xe33b('0xf')]();this[_0xe33b('0x10')]();}SmsQueue[_0xe33b('0x11')][_0xe33b('0xf')]=function(){var _0x260e5d=this[_0xe33b('0xd')][_0xe33b('0x12')];this[_0xe33b('0xd')]=_[_0xe33b('0x13')](this[_0xe33b('0xc')],'id');this[_0xe33b('0xd')]['_rr']=_0x260e5d;};SmsQueue[_0xe33b('0x11')][_0xe33b('0x10')]=function(){this[_0xe33b('0x14')]=0x0;this[_0xe33b('0x15')]=0x0;for(var _0x5b6be7=0x0;_0x5b6be7<this[_0xe33b('0xc')][_0xe33b('0x16')];_0x5b6be7+=0x1){if(this[_0xe33b('0xc')][_0x5b6be7][_0xe33b('0x17')]){this[_0xe33b('0x14')]+=0x1;}if(this[_0xe33b('0xc')][_0x5b6be7][_0xe33b('0x18')]){this['paused']+=0x1;}}this[_0xe33b('0x19')]=this[_0xe33b('0x14')]-this[_0xe33b('0x15')];this[_0xe33b('0x19')]=this[_0xe33b('0x19')]>=0x0?this[_0xe33b('0x19')]:0x0;var _0x440cb3={'id':this['id'],'available':this[_0xe33b('0x19')],'loggedIn':this[_0xe33b('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0xe33b('0xe')]};var _0x2baa4c=md5(JSON[_0xe33b('0x1a')](_0x440cb3));if(this[_0xe33b('0x0')]!==_0x2baa4c){this[_0xe33b('0x0')]=_0x2baa4c;io['to'](util[_0xe33b('0x1b')](_0xe33b('0x1c'),_0x440cb3[_0xe33b('0x8')]))['emit'](_0xe33b('0x1d'),_0x440cb3);}};module[_0xe33b('0x1e')]=SmsQueue;
\ No newline at end of file
+var _0x82eb=['timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','length','online','smsPause','available','stringify','format','sms:queue:%s','sms_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name'];(function(_0x3d7fa5,_0x49ce57){var _0x30fceb=function(_0x569654){while(--_0x569654){_0x3d7fa5['push'](_0x3d7fa5['shift']());}};_0x30fceb(++_0x49ce57);}(_0x82eb,0xaa));var _0xb82e=function(_0x5e8200,_0x1aa3fa){_0x5e8200=_0x5e8200-0x0;var _0x5e44f5=_0x82eb[_0x5e8200];return _0x5e44f5;};'use strict';var _=require(_0xb82e('0x0'));var md5=require(_0xb82e('0x1'));var util=require(_0xb82e('0x2'));var Redis=require(_0xb82e('0x3'));var config=require(_0xb82e('0x4'));config[_0xb82e('0x5')]=_[_0xb82e('0x6')](config[_0xb82e('0x5')],{'host':_0xb82e('0x7'),'port':0x18eb});var io=require(_0xb82e('0x8'))(new Redis(config[_0xb82e('0x5')]));function SmsQueue(_0x59e81e){this['id']=_0x59e81e['id']||0x0;this[_0xb82e('0x9')]=_0x59e81e[_0xb82e('0x9')]||'';this[_0xb82e('0xa')]=_0x59e81e[_0xb82e('0xa')]||0xa;this[_0xb82e('0xb')]=_0x59e81e[_0xb82e('0xb')]||_0xb82e('0xc');this[_0xb82e('0xd')]=_0x59e81e[_0xb82e('0xd')];this[_0xb82e('0xe')]={};this[_0xb82e('0xf')]=0x0;this[_0xb82e('0x1')]='';this[_0xb82e('0x10')]();this[_0xb82e('0x11')]();}SmsQueue[_0xb82e('0x12')][_0xb82e('0x10')]=function(){var _0x1f4e99=this['mapAgentsId'][_0xb82e('0x13')];this['mapAgentsId']=_['map'](this['Agents'],'id');this[_0xb82e('0xe')]['_rr']=_0x1f4e99;};SmsQueue['prototype'][_0xb82e('0x11')]=function(){this[_0xb82e('0x14')]=0x0;this[_0xb82e('0x15')]=0x0;for(var _0x1d8bf3=0x0;_0x1d8bf3<this['Agents'][_0xb82e('0x16')];_0x1d8bf3+=0x1){if(this[_0xb82e('0xd')][_0x1d8bf3][_0xb82e('0x17')]){this[_0xb82e('0x14')]+=0x1;}if(this[_0xb82e('0xd')][_0x1d8bf3][_0xb82e('0x18')]){this[_0xb82e('0x15')]+=0x1;}}this[_0xb82e('0x19')]=this[_0xb82e('0x14')]-this[_0xb82e('0x15')];this[_0xb82e('0x19')]=this[_0xb82e('0x19')]>=0x0?this[_0xb82e('0x19')]:0x0;var _0x2b6581={'id':this['id'],'available':this[_0xb82e('0x19')],'loggedIn':this[_0xb82e('0x14')],'name':this['name'],'paused':this[_0xb82e('0x15')],'waiting':this[_0xb82e('0xf')]};var _0x238d41=md5(JSON[_0xb82e('0x1a')](_0x2b6581));if(this[_0xb82e('0x1')]!==_0x238d41){this[_0xb82e('0x1')]=_0x238d41;io['to'](util[_0xb82e('0x1b')](_0xb82e('0x1c'),_0x2b6581['name']))['emit'](_0xb82e('0x1d'),_0x2b6581);}};module['exports']=SmsQueue;
\ No newline at end of file
index 313e4b0..4eb7e42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd515=['util','lodash','moment','../model/agent','../model/interval','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','openchannelQueues','chatQueues','smsQueues','faxQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','prototype','hasOwnProperty','initAgents','agents','length','isUndefined','mergeFromDatabase','initIntervals','intervals','initOpenchannelQueues','updateRouting','updateRealtime','initChatQueues','initSmsQueues','mailQueues'];(function(_0x2588af,_0x1738a1){var _0xfaaa0e=function(_0x3de06b){while(--_0x3de06b){_0x2588af['push'](_0x2588af['shift']());}};_0xfaaa0e(++_0x1738a1);}(_0xd515,0xcc));var _0x5d51=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0xd515[_0x2adbeb];return _0x5e18a6;};'use strict';var BPromise=require('bluebird');var util=require(_0x5d51('0x0'));var _=require(_0x5d51('0x1'));var moment=require(_0x5d51('0x2'));var Agent=require(_0x5d51('0x3'));var Interval=require(_0x5d51('0x4'));var OpenchannelQueue=require(_0x5d51('0x5'));var ChatQueue=require(_0x5d51('0x6'));var SmsQueue=require(_0x5d51('0x7'));var MailQueue=require(_0x5d51('0x8'));var FaxQueue=require(_0x5d51('0x9'));var Realtime=function(){this['agents']={};this['intervals']={};this[_0x5d51('0xa')]={};this[_0x5d51('0xb')]={};this[_0x5d51('0xc')]={};this['mailQueues']={};this[_0x5d51('0xd')]={};this[_0x5d51('0xe')]={};this[_0x5d51('0xf')]={};this[_0x5d51('0x10')]={};this[_0x5d51('0x11')]={};this['faxQueuesWaitingInteractions']={};};function freeIsNotKey(_0x55bba8,_0x6b3f05,_0x428e7c){var _0x1e9e03=_[_0x5d51('0x12')](_0x55bba8,function(_0x2484c9,_0x541140){return _0x2484c9[_0x428e7c];});for(var _0x1f0043 in _0x6b3f05){if(_0x6b3f05['hasOwnProperty'](_0x1f0043)){if(!_0x1e9e03[_0x1f0043]){delete _0x6b3f05[_0x1f0043];}}}}Realtime[_0x5d51('0x13')]['mergeFromDatabase']=function(_0xb597b3,_0x1f5476){for(var _0x551148 in _0x1f5476){if(_0xb597b3[_0x5d51('0x14')](_0x551148)){_0xb597b3[_0x551148]=_0x1f5476[_0x551148];}}};Realtime['prototype'][_0x5d51('0x15')]=function(){var _0x518ab8=this;return function(_0x380ea4){if(_0x380ea4){freeIsNotKey(_0x380ea4,_0x518ab8[_0x5d51('0x16')],'id');for(var _0x307256=0x0,_0x109f2c={},_0x3ecb0d={};_0x307256<_0x380ea4[_0x5d51('0x17')];_0x307256+=0x1){_0x109f2c=_0x380ea4[_0x307256];if(_[_0x5d51('0x18')](_0x518ab8[_0x5d51('0x16')][_0x109f2c['id']])){_0x518ab8[_0x5d51('0x16')][_0x109f2c['id']]=new Agent(_0x109f2c);}else{_0x518ab8[_0x5d51('0x19')](_0x518ab8[_0x5d51('0x16')][_0x109f2c['id']],_0x109f2c);}}}return _0x518ab8[_0x5d51('0x16')];};};Realtime[_0x5d51('0x13')][_0x5d51('0x1a')]=function(){var _0x2b4f80=this;return function(_0x3ac48){if(_0x3ac48){freeIsNotKey(_0x3ac48,_0x2b4f80[_0x5d51('0x1b')],'id');for(var _0x2480ad=0x0,_0xca4fe8={},_0x253817={};_0x2480ad<_0x3ac48['length'];_0x2480ad+=0x1){_0xca4fe8=_0x3ac48[_0x2480ad];if(_[_0x5d51('0x18')](_0x2b4f80['intervals'][_0xca4fe8['id']])){_0x2b4f80[_0x5d51('0x1b')][_0xca4fe8['id']]=new Interval(_0xca4fe8);}else{_0x2b4f80[_0x5d51('0x19')](_0x2b4f80[_0x5d51('0x1b')][_0xca4fe8['id']],_0xca4fe8);}}}return _0x2b4f80[_0x5d51('0x1b')];};};Realtime[_0x5d51('0x13')][_0x5d51('0x1c')]=function(){var _0x4c6571=this;return function(_0x243ce4){if(_0x243ce4){freeIsNotKey(_0x243ce4,_0x4c6571[_0x5d51('0xa')],'id');for(var _0x1217a9=0x0,_0x40a339={},_0x43a122={};_0x1217a9<_0x243ce4[_0x5d51('0x17')];_0x1217a9+=0x1){_0x40a339=_0x243ce4[_0x1217a9];if(_[_0x5d51('0x18')](_0x4c6571[_0x5d51('0xa')][_0x40a339['id']])){_0x4c6571[_0x5d51('0xa')][_0x40a339['id']]=new OpenchannelQueue(_0x40a339);}else{_0x4c6571[_0x5d51('0x19')](_0x4c6571[_0x5d51('0xa')][_0x40a339['id']],_0x40a339);}_0x4c6571[_0x5d51('0xa')][_0x40a339['id']][_0x5d51('0x1d')]();_0x4c6571[_0x5d51('0xa')][_0x40a339['id']][_0x5d51('0x1e')]();}}return _0x4c6571[_0x5d51('0xa')];};};Realtime[_0x5d51('0x13')][_0x5d51('0x1f')]=function(){var _0x2c97cd=this;return function(_0x51aec5){if(_0x51aec5){freeIsNotKey(_0x51aec5,_0x2c97cd[_0x5d51('0xb')],'id');for(var _0x4430d5=0x0,_0x3d43dc={},_0x5116d4={};_0x4430d5<_0x51aec5[_0x5d51('0x17')];_0x4430d5+=0x1){_0x3d43dc=_0x51aec5[_0x4430d5];if(_['isUndefined'](_0x2c97cd[_0x5d51('0xb')][_0x3d43dc['id']])){_0x2c97cd['chatQueues'][_0x3d43dc['id']]=new ChatQueue(_0x3d43dc);}else{_0x2c97cd['mergeFromDatabase'](_0x2c97cd[_0x5d51('0xb')][_0x3d43dc['id']],_0x3d43dc);}_0x2c97cd[_0x5d51('0xb')][_0x3d43dc['id']][_0x5d51('0x1d')]();_0x2c97cd[_0x5d51('0xb')][_0x3d43dc['id']][_0x5d51('0x1e')]();}}return _0x2c97cd[_0x5d51('0xb')];};};Realtime['prototype'][_0x5d51('0x20')]=function(){var _0x117056=this;return function(_0x36c639){if(_0x36c639){freeIsNotKey(_0x36c639,_0x117056[_0x5d51('0xc')],'id');for(var _0x4c0c03=0x0,_0x179ce1={},_0x5ae6f0={};_0x4c0c03<_0x36c639[_0x5d51('0x17')];_0x4c0c03+=0x1){_0x179ce1=_0x36c639[_0x4c0c03];if(_[_0x5d51('0x18')](_0x117056[_0x5d51('0xc')][_0x179ce1['id']])){_0x117056[_0x5d51('0xc')][_0x179ce1['id']]=new SmsQueue(_0x179ce1);}else{_0x117056['mergeFromDatabase'](_0x117056['smsQueues'][_0x179ce1['id']],_0x179ce1);}_0x117056['smsQueues'][_0x179ce1['id']]['updateRouting']();_0x117056['smsQueues'][_0x179ce1['id']]['updateRealtime']();}}return _0x117056[_0x5d51('0xc')];};};Realtime['prototype']['initMailQueues']=function(){var _0x5b7433=this;return function(_0x5830ca){if(_0x5830ca){freeIsNotKey(_0x5830ca,_0x5b7433[_0x5d51('0x21')],'id');for(var _0x437c48=0x0,_0x5cf26d={},_0x227d66={};_0x437c48<_0x5830ca['length'];_0x437c48+=0x1){_0x5cf26d=_0x5830ca[_0x437c48];if(_['isUndefined'](_0x5b7433[_0x5d51('0x21')][_0x5cf26d['id']])){_0x5b7433[_0x5d51('0x21')][_0x5cf26d['id']]=new MailQueue(_0x5cf26d);}else{_0x5b7433['mergeFromDatabase'](_0x5b7433['mailQueues'][_0x5cf26d['id']],_0x5cf26d);}_0x5b7433[_0x5d51('0x21')][_0x5cf26d['id']][_0x5d51('0x1d')]();_0x5b7433[_0x5d51('0x21')][_0x5cf26d['id']][_0x5d51('0x1e')]();}}return _0x5b7433['mailQueues'];};};Realtime[_0x5d51('0x13')]['initFaxQueues']=function(){var _0x3c6be5=this;return function(_0x1c5216){if(_0x1c5216){freeIsNotKey(_0x1c5216,_0x3c6be5[_0x5d51('0xd')],'id');for(var _0x4a8d8c=0x0,_0x16a5a2={},_0x4902c6={};_0x4a8d8c<_0x1c5216[_0x5d51('0x17')];_0x4a8d8c+=0x1){_0x16a5a2=_0x1c5216[_0x4a8d8c];if(_[_0x5d51('0x18')](_0x3c6be5[_0x5d51('0xd')][_0x16a5a2['id']])){_0x3c6be5['faxQueues'][_0x16a5a2['id']]=new FaxQueue(_0x16a5a2);}else{_0x3c6be5[_0x5d51('0x19')](_0x3c6be5['faxQueues'][_0x16a5a2['id']],_0x16a5a2);}_0x3c6be5[_0x5d51('0xd')][_0x16a5a2['id']][_0x5d51('0x1d')]();_0x3c6be5[_0x5d51('0xd')][_0x16a5a2['id']][_0x5d51('0x1e')]();}}return _0x3c6be5[_0x5d51('0xd')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x47d9=['updateRealtime','initChatQueues','initSmsQueues','initMailQueues','initFaxQueues','util','lodash','../model/agent','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','agents','chatQueues','smsQueues','mailQueues','faxQueues','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','mapKeys','prototype','mergeFromDatabase','length','isUndefined','intervals','initOpenchannelQueues','openchannelQueues','updateRouting'];(function(_0x9c4a28,_0x16b4b3){var _0xae34e9=function(_0x54c73e){while(--_0x54c73e){_0x9c4a28['push'](_0x9c4a28['shift']());}};_0xae34e9(++_0x16b4b3);}(_0x47d9,0x144));var _0x947d=function(_0x530aff,_0x2cba4f){_0x530aff=_0x530aff-0x0;var _0xe532f9=_0x47d9[_0x530aff];return _0xe532f9;};'use strict';var BPromise=require('bluebird');var util=require(_0x947d('0x0'));var _=require(_0x947d('0x1'));var moment=require('moment');var Agent=require(_0x947d('0x2'));var Interval=require('../model/interval');var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x947d('0x3'));var SmsQueue=require(_0x947d('0x4'));var MailQueue=require(_0x947d('0x5'));var FaxQueue=require(_0x947d('0x6'));var Realtime=function(){this[_0x947d('0x7')]={};this['intervals']={};this['openchannelQueues']={};this[_0x947d('0x8')]={};this[_0x947d('0x9')]={};this[_0x947d('0xa')]={};this[_0x947d('0xb')]={};this['chatQueuesWaitingInteractions']={};this[_0x947d('0xc')]={};this['openchannelQueuesWaitingInteractions']={};this[_0x947d('0xd')]={};this[_0x947d('0xe')]={};};function freeIsNotKey(_0x40f4fc,_0xaaef33,_0xd14fdc){var _0x2b53e8=_[_0x947d('0xf')](_0x40f4fc,function(_0x2b3215,_0x43c300){return _0x2b3215[_0xd14fdc];});for(var _0x1d35da in _0xaaef33){if(_0xaaef33['hasOwnProperty'](_0x1d35da)){if(!_0x2b53e8[_0x1d35da]){delete _0xaaef33[_0x1d35da];}}}}Realtime[_0x947d('0x10')][_0x947d('0x11')]=function(_0x4b3543,_0x424d33){for(var _0x2d8ffd in _0x424d33){if(_0x4b3543['hasOwnProperty'](_0x2d8ffd)){_0x4b3543[_0x2d8ffd]=_0x424d33[_0x2d8ffd];}}};Realtime[_0x947d('0x10')]['initAgents']=function(){var _0x12867e=this;return function(_0x121e9c){if(_0x121e9c){freeIsNotKey(_0x121e9c,_0x12867e[_0x947d('0x7')],'id');for(var _0x102bd5=0x0,_0x273a8f={},_0x304075={};_0x102bd5<_0x121e9c[_0x947d('0x12')];_0x102bd5+=0x1){_0x273a8f=_0x121e9c[_0x102bd5];if(_[_0x947d('0x13')](_0x12867e[_0x947d('0x7')][_0x273a8f['id']])){_0x12867e[_0x947d('0x7')][_0x273a8f['id']]=new Agent(_0x273a8f);}else{_0x12867e[_0x947d('0x11')](_0x12867e[_0x947d('0x7')][_0x273a8f['id']],_0x273a8f);}}}return _0x12867e[_0x947d('0x7')];};};Realtime[_0x947d('0x10')]['initIntervals']=function(){var _0x283012=this;return function(_0x39190e){if(_0x39190e){freeIsNotKey(_0x39190e,_0x283012[_0x947d('0x14')],'id');for(var _0x17ad3b=0x0,_0x16ba43={},_0x31a57c={};_0x17ad3b<_0x39190e['length'];_0x17ad3b+=0x1){_0x16ba43=_0x39190e[_0x17ad3b];if(_[_0x947d('0x13')](_0x283012[_0x947d('0x14')][_0x16ba43['id']])){_0x283012[_0x947d('0x14')][_0x16ba43['id']]=new Interval(_0x16ba43);}else{_0x283012[_0x947d('0x11')](_0x283012[_0x947d('0x14')][_0x16ba43['id']],_0x16ba43);}}}return _0x283012[_0x947d('0x14')];};};Realtime[_0x947d('0x10')][_0x947d('0x15')]=function(){var _0x1655ea=this;return function(_0x3e42f8){if(_0x3e42f8){freeIsNotKey(_0x3e42f8,_0x1655ea['openchannelQueues'],'id');for(var _0x345433=0x0,_0x550b26={},_0x523596={};_0x345433<_0x3e42f8['length'];_0x345433+=0x1){_0x550b26=_0x3e42f8[_0x345433];if(_[_0x947d('0x13')](_0x1655ea[_0x947d('0x16')][_0x550b26['id']])){_0x1655ea[_0x947d('0x16')][_0x550b26['id']]=new OpenchannelQueue(_0x550b26);}else{_0x1655ea[_0x947d('0x11')](_0x1655ea['openchannelQueues'][_0x550b26['id']],_0x550b26);}_0x1655ea[_0x947d('0x16')][_0x550b26['id']][_0x947d('0x17')]();_0x1655ea['openchannelQueues'][_0x550b26['id']][_0x947d('0x18')]();}}return _0x1655ea[_0x947d('0x16')];};};Realtime['prototype'][_0x947d('0x19')]=function(){var _0x34fe56=this;return function(_0x201be0){if(_0x201be0){freeIsNotKey(_0x201be0,_0x34fe56[_0x947d('0x8')],'id');for(var _0x1bd943=0x0,_0x3e6f1b={},_0x2a291b={};_0x1bd943<_0x201be0[_0x947d('0x12')];_0x1bd943+=0x1){_0x3e6f1b=_0x201be0[_0x1bd943];if(_[_0x947d('0x13')](_0x34fe56[_0x947d('0x8')][_0x3e6f1b['id']])){_0x34fe56['chatQueues'][_0x3e6f1b['id']]=new ChatQueue(_0x3e6f1b);}else{_0x34fe56[_0x947d('0x11')](_0x34fe56[_0x947d('0x8')][_0x3e6f1b['id']],_0x3e6f1b);}_0x34fe56[_0x947d('0x8')][_0x3e6f1b['id']][_0x947d('0x17')]();_0x34fe56[_0x947d('0x8')][_0x3e6f1b['id']][_0x947d('0x18')]();}}return _0x34fe56[_0x947d('0x8')];};};Realtime[_0x947d('0x10')][_0x947d('0x1a')]=function(){var _0x17c183=this;return function(_0x290ca9){if(_0x290ca9){freeIsNotKey(_0x290ca9,_0x17c183[_0x947d('0x9')],'id');for(var _0x3538be=0x0,_0x260d55={},_0x854782={};_0x3538be<_0x290ca9[_0x947d('0x12')];_0x3538be+=0x1){_0x260d55=_0x290ca9[_0x3538be];if(_[_0x947d('0x13')](_0x17c183[_0x947d('0x9')][_0x260d55['id']])){_0x17c183['smsQueues'][_0x260d55['id']]=new SmsQueue(_0x260d55);}else{_0x17c183[_0x947d('0x11')](_0x17c183[_0x947d('0x9')][_0x260d55['id']],_0x260d55);}_0x17c183['smsQueues'][_0x260d55['id']][_0x947d('0x17')]();_0x17c183[_0x947d('0x9')][_0x260d55['id']][_0x947d('0x18')]();}}return _0x17c183['smsQueues'];};};Realtime['prototype'][_0x947d('0x1b')]=function(){var _0x55a4bd=this;return function(_0x5f18b7){if(_0x5f18b7){freeIsNotKey(_0x5f18b7,_0x55a4bd[_0x947d('0xa')],'id');for(var _0x4621b1=0x0,_0x26aee5={},_0x183c00={};_0x4621b1<_0x5f18b7['length'];_0x4621b1+=0x1){_0x26aee5=_0x5f18b7[_0x4621b1];if(_['isUndefined'](_0x55a4bd[_0x947d('0xa')][_0x26aee5['id']])){_0x55a4bd[_0x947d('0xa')][_0x26aee5['id']]=new MailQueue(_0x26aee5);}else{_0x55a4bd[_0x947d('0x11')](_0x55a4bd[_0x947d('0xa')][_0x26aee5['id']],_0x26aee5);}_0x55a4bd[_0x947d('0xa')][_0x26aee5['id']][_0x947d('0x17')]();_0x55a4bd[_0x947d('0xa')][_0x26aee5['id']][_0x947d('0x18')]();}}return _0x55a4bd[_0x947d('0xa')];};};Realtime[_0x947d('0x10')][_0x947d('0x1c')]=function(){var _0x581534=this;return function(_0x49f9be){if(_0x49f9be){freeIsNotKey(_0x49f9be,_0x581534[_0x947d('0xb')],'id');for(var _0x4597f7=0x0,_0x192d18={},_0x306457={};_0x4597f7<_0x49f9be[_0x947d('0x12')];_0x4597f7+=0x1){_0x192d18=_0x49f9be[_0x4597f7];if(_[_0x947d('0x13')](_0x581534[_0x947d('0xb')][_0x192d18['id']])){_0x581534[_0x947d('0xb')][_0x192d18['id']]=new FaxQueue(_0x192d18);}else{_0x581534[_0x947d('0x11')](_0x581534[_0x947d('0xb')][_0x192d18['id']],_0x192d18);}_0x581534['faxQueues'][_0x192d18['id']][_0x947d('0x17')]();_0x581534[_0x947d('0xb')][_0x192d18['id']][_0x947d('0x18')]();}}return _0x581534[_0x947d('0xb')];};};module['exports']=Realtime;
\ No newline at end of file
index ee570f3..92d7740 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6975=['../client','update','Request','addTags'];(function(_0x47886a,_0x3dfe00){var _0x4bf68d=function(_0xcfcd61){while(--_0xcfcd61){_0x47886a['push'](_0x47886a['shift']());}};_0x4bf68d(++_0x3dfe00);}(_0x6975,0x13c));var _0x5697=function(_0x3dd991,_0x4bef12){_0x3dd991=_0x3dd991-0x0;var _0x251609=_0x6975[_0x3dd991];return _0x251609;};'use strict';var client=require(_0x5697('0x0'));exports[_0x5697('0x1')]=function(_0xeb0cb6,_0x36dcf7){return client[_0x5697('0x2')]('UpdateChatInteraction',{'body':_0x36dcf7,'options':{'where':{'id':_0xeb0cb6}},'log':'updateChatInteraction'});};exports[_0x5697('0x3')]=function(_0x202985,_0x2e9205){return client[_0x5697('0x2')]('AddTagsToChatInteraction',{'body':_0x2e9205,'options':{'where':{'id':_0x202985}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0xdc2a=['Request','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update','UpdateChatInteraction','addTags'];(function(_0x368922,_0xd74ca1){var _0x315487=function(_0x1fd411){while(--_0x1fd411){_0x368922['push'](_0x368922['shift']());}};_0x315487(++_0xd74ca1);}(_0xdc2a,0x73));var _0xadc2=function(_0x32d41b,_0x500ed8){_0x32d41b=_0x32d41b-0x0;var _0x2f1c0b=_0xdc2a[_0x32d41b];return _0x2f1c0b;};'use strict';var client=require(_0xadc2('0x0'));exports[_0xadc2('0x1')]=function(_0x176973,_0x3278f9){return client['Request'](_0xadc2('0x2'),{'body':_0x3278f9,'options':{'where':{'id':_0x176973}},'log':'updateChatInteraction'});};exports[_0xadc2('0x3')]=function(_0x2b6266,_0x3242e8){return client[_0xadc2('0x4')](_0xadc2('0x5'),{'body':_0x3242e8,'options':{'where':{'id':_0x2b6266}},'log':_0xadc2('0x6')});};
\ No newline at end of file
index c09147e..852e065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcb2=['Request','CreateChatMessage','createChatMessage','create'];(function(_0x5e5258,_0x1a8e65){var _0x38300d=function(_0x43a567){while(--_0x43a567){_0x5e5258['push'](_0x5e5258['shift']());}};_0x38300d(++_0x1a8e65);}(_0xfcb2,0xa3));var _0x2fcb=function(_0x53acda,_0x437936){_0x53acda=_0x53acda-0x0;var _0x2ede36=_0xfcb2[_0x53acda];return _0x2ede36;};'use strict';var client=require('../client');exports[_0x2fcb('0x0')]=function(_0x2f5382){return client[_0x2fcb('0x1')](_0x2fcb('0x2'),{'body':_0x2f5382,'log':_0x2fcb('0x3')});};
\ No newline at end of file
+var _0x033c=['Request','CreateChatMessage','../client','create'];(function(_0x52a192,_0x3ffac0){var _0x4da4ae=function(_0x533315){while(--_0x533315){_0x52a192['push'](_0x52a192['shift']());}};_0x4da4ae(++_0x3ffac0);}(_0x033c,0xf6));var _0xc033=function(_0x175160,_0x3cd751){_0x175160=_0x175160-0x0;var _0xf049b2=_0x033c[_0x175160];return _0xf049b2;};'use strict';var client=require(_0xc033('0x0'));exports[_0xc033('0x1')]=function(_0x48e2dc){return client[_0xc033('0x2')](_0xc033('0x3'),{'body':_0x48e2dc,'log':'createChatMessage'});};
\ No newline at end of file
index e9871b1..f894398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd462=['name','strategy','User','Agents','online','chatPause','getChatQueues','Request','GetChatQueue'];(function(_0x1756f6,_0x3f34ae){var _0xfe846=function(_0xdfe73e){while(--_0xdfe73e){_0x1756f6['push'](_0x1756f6['shift']());}};_0xfe846(++_0x3f34ae);}(_0xd462,0xde));var _0x2d46=function(_0x183256,_0x1a596d){_0x183256=_0x183256-0x0;var _0x5394a2=_0xd462[_0x183256];return _0x5394a2;};'use strict';var client=require('../client');exports[_0x2d46('0x0')]=function(){return function(){return client[_0x2d46('0x1')](_0x2d46('0x2'),{'options':{'raw':![],'attributes':['id',_0x2d46('0x3'),'timeout',_0x2d46('0x4')],'include':[{'model':_0x2d46('0x5'),'as':_0x2d46('0x6'),'attributes':['id',_0x2d46('0x3'),_0x2d46('0x7'),_0x2d46('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0xa03b=['Agents','online','chatPause','../client','getChatQueues','Request','GetChatQueue','name','timeout','User'];(function(_0x4c15ba,_0x5ce80a){var _0x500c5f=function(_0x6cfb26){while(--_0x6cfb26){_0x4c15ba['push'](_0x4c15ba['shift']());}};_0x500c5f(++_0x5ce80a);}(_0xa03b,0x19d));var _0xba03=function(_0x4fbb15,_0x21be0c){_0x4fbb15=_0x4fbb15-0x0;var _0x436338=_0xa03b[_0x4fbb15];return _0x436338;};'use strict';var client=require(_0xba03('0x0'));exports[_0xba03('0x1')]=function(){return function(){return client[_0xba03('0x2')](_0xba03('0x3'),{'options':{'raw':![],'attributes':['id',_0xba03('0x4'),_0xba03('0x5'),'strategy'],'include':[{'model':_0xba03('0x6'),'as':_0xba03('0x7'),'attributes':['id',_0xba03('0x4'),_0xba03('0x8'),_0xba03('0x9')]}]},'log':_0xba03('0x1')});};};
\ No newline at end of file
index d08085b..ac2aff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaec=['update','Request','UpdateChatQueueReport','../client','create'];(function(_0x5cc51f,_0x22c480){var _0x315a2f=function(_0x4f93bd){while(--_0x4f93bd){_0x5cc51f['push'](_0x5cc51f['shift']());}};_0x315a2f(++_0x22c480);}(_0xfaec,0x12f));var _0xcfae=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xfaec[_0x1facfa];return _0x9ec701;};'use strict';var client=require(_0xcfae('0x0'));exports[_0xcfae('0x1')]=function(_0x2f83e3){return client['Request']('CreateChatQueueReport',{'body':_0x2f83e3,'log':'CreateChatQueueReport'});};exports[_0xcfae('0x2')]=function(_0x2c5d89,_0xa45aee){return client[_0xcfae('0x3')](_0xcfae('0x4'),{'body':_0xa45aee,'options':{'where':{'uniqueid':_0x2c5d89},'order':[['id','DESC']],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
+var _0xc831=['Request','CreateChatQueueReport','update','UpdateChatQueueReport','create'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xc831,0x103));var _0x1c83=function(_0x20d3c0,_0x35a518){_0x20d3c0=_0x20d3c0-0x0;var _0x1ed023=_0xc831[_0x20d3c0];return _0x1ed023;};'use strict';var client=require('../client');exports[_0x1c83('0x0')]=function(_0xb982da){return client[_0x1c83('0x1')](_0x1c83('0x2'),{'body':_0xb982da,'log':_0x1c83('0x2')});};exports[_0x1c83('0x3')]=function(_0x282a11,_0x28441e){return client[_0x1c83('0x1')](_0x1c83('0x4'),{'body':_0x28441e,'options':{'where':{'uniqueid':_0x282a11},'order':[['id','DESC']],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index 281d047..d3456fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff21=['Request','AddTagsToFaxInteraction','../client','update','updateFaxInteraction'];(function(_0x3b2be5,_0x9c01ae){var _0x14cd8=function(_0x5262be){while(--_0x5262be){_0x3b2be5['push'](_0x3b2be5['shift']());}};_0x14cd8(++_0x9c01ae);}(_0xff21,0xc0));var _0x1ff2=function(_0x5c7158,_0x40146f){_0x5c7158=_0x5c7158-0x0;var _0x526bc4=_0xff21[_0x5c7158];return _0x526bc4;};'use strict';var client=require(_0x1ff2('0x0'));exports[_0x1ff2('0x1')]=function(_0x34f5d6,_0x1ab44a){return client['Request']('UpdateFaxInteraction',{'body':_0x1ab44a,'options':{'where':{'id':_0x34f5d6}},'log':_0x1ff2('0x2')});};exports['addTags']=function(_0x54a0fe,_0x2e8e9c){return client[_0x1ff2('0x3')](_0x1ff2('0x4'),{'body':_0x2e8e9c,'options':{'where':{'id':_0x54a0fe}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0xa7ac=['UpdateFaxInteraction','updateFaxInteraction','addTags','Request','AddTagsToFaxInteraction','../client'];(function(_0x55631c,_0x5a9e6e){var _0x202304=function(_0x5bf0fb){while(--_0x5bf0fb){_0x55631c['push'](_0x55631c['shift']());}};_0x202304(++_0x5a9e6e);}(_0xa7ac,0x18b));var _0xca7a=function(_0x192930,_0x30b11d){_0x192930=_0x192930-0x0;var _0x1f8097=_0xa7ac[_0x192930];return _0x1f8097;};'use strict';var client=require(_0xca7a('0x0'));exports['update']=function(_0x368fb9,_0x4e10b9){return client['Request'](_0xca7a('0x1'),{'body':_0x4e10b9,'options':{'where':{'id':_0x368fb9}},'log':_0xca7a('0x2')});};exports[_0xca7a('0x3')]=function(_0x3902c3,_0x294353){return client[_0xca7a('0x4')](_0xca7a('0x5'),{'body':_0x294353,'options':{'where':{'id':_0x3902c3}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index 8392067..b57f487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x950a=['Request','createFaxMessage','../client'];(function(_0x31e00c,_0x5a8bc7){var _0x52eeee=function(_0x1aa374){while(--_0x1aa374){_0x31e00c['push'](_0x31e00c['shift']());}};_0x52eeee(++_0x5a8bc7);}(_0x950a,0xcb));var _0xa950=function(_0x2bea50,_0x2c59e9){_0x2bea50=_0x2bea50-0x0;var _0x48af4b=_0x950a[_0x2bea50];return _0x48af4b;};'use strict';var client=require(_0xa950('0x0'));exports['create']=function(_0x52b530){return client[_0xa950('0x1')]('CreateFaxMessage',{'body':_0x52b530,'log':_0xa950('0x2')});};
\ No newline at end of file
+var _0x594e=['../client','create'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x594e,0xb8));var _0xe594=function(_0x58e7f9,_0x4b1ca3){_0x58e7f9=_0x58e7f9-0x0;var _0x3cb310=_0x594e[_0x58e7f9];return _0x3cb310;};'use strict';var client=require(_0xe594('0x0'));exports[_0xe594('0x1')]=function(_0x4d8a60){return client['Request']('CreateFaxMessage',{'body':_0x4d8a60,'log':'createFaxMessage'});};
\ No newline at end of file
index 363fa05..a0604a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc82=['getFaxQueues','Request','GetFaxQueue','name','timeout','User','Agents','faxPause','../client'];(function(_0x512aa7,_0x2be0d9){var _0x952539=function(_0x2d63d4){while(--_0x2d63d4){_0x512aa7['push'](_0x512aa7['shift']());}};_0x952539(++_0x2be0d9);}(_0xcc82,0x182));var _0x2cc8=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xcc82[_0x1b828b];return _0x98da1a;};'use strict';var client=require(_0x2cc8('0x0'));exports[_0x2cc8('0x1')]=function(){return function(){return client[_0x2cc8('0x2')](_0x2cc8('0x3'),{'options':{'raw':![],'attributes':['id',_0x2cc8('0x4'),_0x2cc8('0x5'),'strategy'],'include':[{'model':_0x2cc8('0x6'),'as':_0x2cc8('0x7'),'attributes':['id',_0x2cc8('0x4'),'online',_0x2cc8('0x8')]}]},'log':_0x2cc8('0x1')});};};
\ No newline at end of file
+var _0xc57e=['Agents','faxPause','getFaxQueues','../client','Request','GetFaxQueue','name','timeout','User'];(function(_0x102ff9,_0x907658){var _0x24fa97=function(_0x3622ff){while(--_0x3622ff){_0x102ff9['push'](_0x102ff9['shift']());}};_0x24fa97(++_0x907658);}(_0xc57e,0x150));var _0xec57=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc57e[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xec57('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0xec57('0x1')](_0xec57('0x2'),{'options':{'raw':![],'attributes':['id',_0xec57('0x3'),_0xec57('0x4'),'strategy'],'include':[{'model':_0xec57('0x5'),'as':_0xec57('0x6'),'attributes':['id','name','online',_0xec57('0x7')]}]},'log':_0xec57('0x8')});};};
\ No newline at end of file
index aa57875..4df6561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeff=['UpdateFaxQueueReport','DESC','create','Request','CreateFaxQueueReport'];(function(_0x5d8601,_0x39d87a){var _0xd82a3e=function(_0x23fb4e){while(--_0x23fb4e){_0x5d8601['push'](_0x5d8601['shift']());}};_0xd82a3e(++_0x39d87a);}(_0xbeff,0x8e));var _0xfbef=function(_0x4209a1,_0x5f5b36){_0x4209a1=_0x4209a1-0x0;var _0x99e3ac=_0xbeff[_0x4209a1];return _0x99e3ac;};'use strict';var client=require('../client');exports[_0xfbef('0x0')]=function(_0x28db4e){return client[_0xfbef('0x1')](_0xfbef('0x2'),{'body':_0x28db4e,'log':_0xfbef('0x2')});};exports['update']=function(_0x4f6ba4,_0x474798){return client[_0xfbef('0x1')](_0xfbef('0x3'),{'body':_0x474798,'options':{'where':{'uniqueid':_0x4f6ba4},'order':[['id',_0xfbef('0x4')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
+var _0x80ea=['UpdateFaxQueueReport','../client','create','Request','CreateFaxQueueReport','update'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x80ea,0x1cf));var _0xa80e=function(_0x3ae502,_0x358082){_0x3ae502=_0x3ae502-0x0;var _0x1b0478=_0x80ea[_0x3ae502];return _0x1b0478;};'use strict';var client=require(_0xa80e('0x0'));exports[_0xa80e('0x1')]=function(_0x42e8cf){return client[_0xa80e('0x2')](_0xa80e('0x3'),{'body':_0x42e8cf,'log':_0xa80e('0x3')});};exports[_0xa80e('0x4')]=function(_0x521626,_0x1d1c5b){return client[_0xa80e('0x2')](_0xa80e('0x5'),{'body':_0x1d1c5b,'options':{'where':{'uniqueid':_0x521626},'order':[['id','DESC']],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
index 9fa325f..e184288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f4d=['../client','getIntervals','Request','GetInterval','name','Interval','Intervals','interval'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x9f4d,0xb0));var _0xd9f4=function(_0x1d7973,_0x357676){_0x1d7973=_0x1d7973-0x0;var _0x43190c=_0x9f4d[_0x1d7973];return _0x43190c;};'use strict';var client=require(_0xd9f4('0x0'));exports[_0xd9f4('0x1')]=function(){return function(){return client[_0xd9f4('0x2')](_0xd9f4('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xd9f4('0x4')],'include':[{'model':_0xd9f4('0x5'),'as':_0xd9f4('0x6'),'attributes':['id',_0xd9f4('0x4'),_0xd9f4('0x7')]}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0x351d=['name','Intervals','interval','getIntervals','../client','Request','GetInterval'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x351d,0x90));var _0xd351=function(_0x462fc9,_0xf26076){_0x462fc9=_0x462fc9-0x0;var _0x166c28=_0x351d[_0x462fc9];return _0x166c28;};'use strict';var client=require(_0xd351('0x0'));exports['getIntervals']=function(){return function(){return client[_0xd351('0x1')](_0xd351('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xd351('0x3')],'include':[{'model':'Interval','as':_0xd351('0x4'),'attributes':['id','name',_0xd351('0x5')]}]},'log':_0xd351('0x6')});};};
\ No newline at end of file
index 9d9bae9..6bb5438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa3c=['Request','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction','update'];(function(_0x952d93,_0x42235c){var _0x5e5605=function(_0x235c7f){while(--_0x235c7f){_0x952d93['push'](_0x952d93['shift']());}};_0x5e5605(++_0x42235c);}(_0xaa3c,0xb5));var _0xcaa3=function(_0x204358,_0x443903){_0x204358=_0x204358-0x0;var _0x488b56=_0xaa3c[_0x204358];return _0x488b56;};'use strict';var client=require('../client');exports[_0xcaa3('0x0')]=function(_0x1c2926,_0x2995be){return client[_0xcaa3('0x1')](_0xcaa3('0x2'),{'body':_0x2995be,'options':{'where':{'id':_0x1c2926}},'log':_0xcaa3('0x3')});};exports[_0xcaa3('0x4')]=function(_0x9bc981,_0xb5647f){return client[_0xcaa3('0x1')](_0xcaa3('0x5'),{'body':_0xb5647f,'options':{'where':{'id':_0x9bc981}},'log':_0xcaa3('0x6')});};
\ No newline at end of file
+var _0xa23e=['update','UpdateMailInteraction','updateMailInteraction','Request','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x213322,_0x3b6b24){var _0x1f66bb=function(_0x1907e8){while(--_0x1907e8){_0x213322['push'](_0x213322['shift']());}};_0x1f66bb(++_0x3b6b24);}(_0xa23e,0x172));var _0xea23=function(_0x1cdf8f,_0x46d10c){_0x1cdf8f=_0x1cdf8f-0x0;var _0x6ad9ab=_0xa23e[_0x1cdf8f];return _0x6ad9ab;};'use strict';var client=require(_0xea23('0x0'));exports[_0xea23('0x1')]=function(_0x1d31a3,_0x794a72){return client['Request'](_0xea23('0x2'),{'body':_0x794a72,'options':{'where':{'id':_0x1d31a3}},'log':_0xea23('0x3')});};exports['addTags']=function(_0x15aaf8,_0x470d5e){return client[_0xea23('0x4')](_0xea23('0x5'),{'body':_0x470d5e,'options':{'where':{'id':_0x15aaf8}},'log':_0xea23('0x6')});};
\ No newline at end of file
index c899c34..add78bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf314=['Request','CreateMailMessage','createMailMessage','create'];(function(_0x302325,_0x51c70c){var _0x3d0e32=function(_0x5deadb){while(--_0x5deadb){_0x302325['push'](_0x302325['shift']());}};_0x3d0e32(++_0x51c70c);}(_0xf314,0xaf));var _0x4f31=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xf314[_0x550d12];return _0x12103d;};'use strict';var client=require('../client');exports[_0x4f31('0x0')]=function(_0x2eca51){return client[_0x4f31('0x1')](_0x4f31('0x2'),{'body':_0x2eca51,'log':_0x4f31('0x3')});};
\ No newline at end of file
+var _0x9ac6=['createMailMessage','Request'];(function(_0x5d0770,_0x71cd71){var _0x22a5e1=function(_0x6e7e11){while(--_0x6e7e11){_0x5d0770['push'](_0x5d0770['shift']());}};_0x22a5e1(++_0x71cd71);}(_0x9ac6,0x199));var _0x69ac=function(_0x2dc839,_0x5dd9c4){_0x2dc839=_0x2dc839-0x0;var _0x5d4861=_0x9ac6[_0x2dc839];return _0x5d4861;};'use strict';var client=require('../client');exports['create']=function(_0x38eb3b){return client[_0x69ac('0x0')]('CreateMailMessage',{'body':_0x38eb3b,'log':_0x69ac('0x1')});};
\ No newline at end of file
index 2d3b8e9..9f16d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99fc=['name','timeout','strategy','User','Agents','online','mailPause','../client','getMailQueues','GetMailQueue'];(function(_0x48fdf3,_0x3e3ceb){var _0x8b8b9e=function(_0x4fc273){while(--_0x4fc273){_0x48fdf3['push'](_0x48fdf3['shift']());}};_0x8b8b9e(++_0x3e3ceb);}(_0x99fc,0x1ab));var _0xc99f=function(_0x592df4,_0xb6839){_0x592df4=_0x592df4-0x0;var _0x5a7f3b=_0x99fc[_0x592df4];return _0x5a7f3b;};'use strict';var client=require(_0xc99f('0x0'));exports[_0xc99f('0x1')]=function(){return function(){return client['Request'](_0xc99f('0x2'),{'options':{'raw':![],'attributes':['id',_0xc99f('0x3'),_0xc99f('0x4'),_0xc99f('0x5')],'include':[{'model':_0xc99f('0x6'),'as':_0xc99f('0x7'),'attributes':['id',_0xc99f('0x3'),_0xc99f('0x8'),_0xc99f('0x9')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
+var _0x5a8e=['getMailQueues','Request','name','User','online'];(function(_0x14ec23,_0x64f853){var _0x2387bd=function(_0x4a424f){while(--_0x4a424f){_0x14ec23['push'](_0x14ec23['shift']());}};_0x2387bd(++_0x64f853);}(_0x5a8e,0x11d));var _0xe5a8=function(_0x82dc2c,_0x183cca){_0x82dc2c=_0x82dc2c-0x0;var _0x13b857=_0x5a8e[_0x82dc2c];return _0x13b857;};'use strict';var client=require('../client');exports[_0xe5a8('0x0')]=function(){return function(){return client[_0xe5a8('0x1')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0xe5a8('0x2'),'timeout','strategy'],'include':[{'model':_0xe5a8('0x3'),'as':'Agents','attributes':['id',_0xe5a8('0x2'),_0xe5a8('0x4'),'mailPause']}]},'log':_0xe5a8('0x0')});};};
\ No newline at end of file
index 98e3951..ae2c402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3d2=['Request','CreateMailQueueReport','update','DESC','UpdateMailQueueReport','create'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe3d2,0x1e5));var _0x2e3d=function(_0x25c9ce,_0x10152a){_0x25c9ce=_0x25c9ce-0x0;var _0xcc7ac0=_0xe3d2[_0x25c9ce];return _0xcc7ac0;};'use strict';var client=require('../client');exports[_0x2e3d('0x0')]=function(_0x4c7944){return client[_0x2e3d('0x1')](_0x2e3d('0x2'),{'body':_0x4c7944,'log':_0x2e3d('0x2')});};exports[_0x2e3d('0x3')]=function(_0x5cbb2a,_0x198903){return client[_0x2e3d('0x1')]('UpdateMailQueueReport',{'body':_0x198903,'options':{'where':{'uniqueid':_0x5cbb2a},'order':[['id',_0x2e3d('0x4')]],'limit':0x1},'log':_0x2e3d('0x5')});};
\ No newline at end of file
+var _0xcfe9=['update','Request','UpdateMailQueueReport','../client','create','CreateMailQueueReport'];(function(_0x480e9a,_0xd5afa0){var _0x22f890=function(_0x44fb02){while(--_0x44fb02){_0x480e9a['push'](_0x480e9a['shift']());}};_0x22f890(++_0xd5afa0);}(_0xcfe9,0x1b9));var _0x9cfe=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcfe9[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x9cfe('0x0'));exports[_0x9cfe('0x1')]=function(_0x5d331b){return client['Request']('CreateMailQueueReport',{'body':_0x5d331b,'log':_0x9cfe('0x2')});};exports[_0x9cfe('0x3')]=function(_0x5ee083,_0x978cdf){return client[_0x9cfe('0x4')]('UpdateMailQueueReport',{'body':_0x978cdf,'options':{'where':{'uniqueid':_0x5ee083},'order':[['id','DESC']],'limit':0x1},'log':_0x9cfe('0x5')});};
\ No newline at end of file
index a620fb2..47935cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97e6=['Request','updateOpenchannelInteraction','addTags','addTagsToChatInteraction','../client'];(function(_0x3a9661,_0x530b12){var _0x5bb119=function(_0x1278f){while(--_0x1278f){_0x3a9661['push'](_0x3a9661['shift']());}};_0x5bb119(++_0x530b12);}(_0x97e6,0xb8));var _0x697e=function(_0x10d670,_0x178996){_0x10d670=_0x10d670-0x0;var _0x20d6f8=_0x97e6[_0x10d670];return _0x20d6f8;};'use strict';var client=require(_0x697e('0x0'));exports['update']=function(_0x4c77e2,_0x35bf43){return client[_0x697e('0x1')]('UpdateOpenchannelInteraction',{'body':_0x35bf43,'options':{'where':{'id':_0x4c77e2}},'log':_0x697e('0x2')});};exports[_0x697e('0x3')]=function(_0x2fc530,_0x79f8b0){return client[_0x697e('0x1')]('AddTagsToOpenchannelInteraction',{'body':_0x79f8b0,'options':{'where':{'id':_0x2fc530}},'log':_0x697e('0x4')});};
\ No newline at end of file
+var _0x28e3=['AddTagsToOpenchannelInteraction','../client','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request'];(function(_0x3d0004,_0x71b5f4){var _0x17a93c=function(_0x3b0d7c){while(--_0x3b0d7c){_0x3d0004['push'](_0x3d0004['shift']());}};_0x17a93c(++_0x71b5f4);}(_0x28e3,0x145));var _0x328e=function(_0x409353,_0xe9f04d){_0x409353=_0x409353-0x0;var _0x4f4b59=_0x28e3[_0x409353];return _0x4f4b59;};'use strict';var client=require(_0x328e('0x0'));exports['update']=function(_0x3aee46,_0x8a71da){return client['Request'](_0x328e('0x1'),{'body':_0x8a71da,'options':{'where':{'id':_0x3aee46}},'log':_0x328e('0x2')});};exports[_0x328e('0x3')]=function(_0x5cec93,_0x1752fc){return client[_0x328e('0x4')](_0x328e('0x5'),{'body':_0x1752fc,'options':{'where':{'id':_0x5cec93}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 86c5353..b9ea0bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['createOpenchannelMessage','../client','create'];(function(_0x18b9a8,_0x1770b6){var _0x4a0a8f=function(_0x80ea93){while(--_0x80ea93){_0x18b9a8['push'](_0x18b9a8['shift']());}};_0x4a0a8f(++_0x1770b6);}(_0x70e0,0x17b));var _0x070e=function(_0x1e4a3c,_0x5a860b){_0x1e4a3c=_0x1e4a3c-0x0;var _0x34e849=_0x70e0[_0x1e4a3c];return _0x34e849;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(_0x198c2e){return client['Request']('CreateOpenchannelMessage',{'body':_0x198c2e,'log':_0x070e('0x2')});};
\ No newline at end of file
+var _0xa9e0=['../client','create','createOpenchannelMessage'];(function(_0x51c2bc,_0x23adc6){var _0x1cbd2b=function(_0x2cc826){while(--_0x2cc826){_0x51c2bc['push'](_0x51c2bc['shift']());}};_0x1cbd2b(++_0x23adc6);}(_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(_0x29929c){return client['Request']('CreateOpenchannelMessage',{'body':_0x29929c,'log':_0x0a9e('0x2')});};
\ No newline at end of file
index 540ba9f..6a0b26c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5674=['strategy','User','name','openchannelPause','../client'];(function(_0x4a0e68,_0x45c08c){var _0x4fb274=function(_0x5f36b1){while(--_0x5f36b1){_0x4a0e68['push'](_0x4a0e68['shift']());}};_0x4fb274(++_0x45c08c);}(_0x5674,0xbd));var _0x4567=function(_0x3bc2f7,_0x5a38a3){_0x3bc2f7=_0x3bc2f7-0x0;var _0x34dec1=_0x5674[_0x3bc2f7];return _0x34dec1;};'use strict';var client=require(_0x4567('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client['Request']('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id','name','timeout',_0x4567('0x1')],'include':[{'model':_0x4567('0x2'),'as':'Agents','attributes':['id',_0x4567('0x3'),'online',_0x4567('0x4')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
+var _0x7cbd=['online','openchannelPause','getOpenchannelQueues','name','strategy','Agents'];(function(_0x293e7a,_0x1792a2){var _0xb78342=function(_0x833afe){while(--_0x833afe){_0x293e7a['push'](_0x293e7a['shift']());}};_0xb78342(++_0x1792a2);}(_0x7cbd,0x68));var _0xd7cb=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x7cbd[_0x501510];return _0x1e6ee5;};'use strict';var client=require('../client');exports[_0xd7cb('0x0')]=function(){return function(){return client['Request']('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0xd7cb('0x1'),'timeout',_0xd7cb('0x2')],'include':[{'model':'User','as':_0xd7cb('0x3'),'attributes':['id',_0xd7cb('0x1'),_0xd7cb('0x4'),_0xd7cb('0x5')]}]},'log':_0xd7cb('0x0')});};};
\ No newline at end of file
index 0e363fb..d0e98c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5b9=['../client','Request'];(function(_0x477c83,_0x284562){var _0x423cf1=function(_0x13aeec){while(--_0x13aeec){_0x477c83['push'](_0x477c83['shift']());}};_0x423cf1(++_0x284562);}(_0xd5b9,0x13a));var _0x9d5b=function(_0x92a278,_0x80416d){_0x92a278=_0x92a278-0x0;var _0x2b0ea2=_0xd5b9[_0x92a278];return _0x2b0ea2;};'use strict';var client=require(_0x9d5b('0x0'));exports['create']=function(_0x3bf61){return client[_0x9d5b('0x1')]('CreateOpenchannelQueueReport',{'body':_0x3bf61,'log':'CreateOpenchannelQueueReport'});};exports['update']=function(_0x3d3ea8,_0x5524dc){return client[_0x9d5b('0x1')]('UpdateOpenchannelQueueReport',{'body':_0x5524dc,'options':{'where':{'uniqueid':_0x3d3ea8},'order':[['id','DESC']],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
+var _0x8137=['Request','CreateOpenchannelQueueReport','update','../client','create'];(function(_0x387319,_0x2ec32e){var _0x44a9e4=function(_0x291f16){while(--_0x291f16){_0x387319['push'](_0x387319['shift']());}};_0x44a9e4(++_0x2ec32e);}(_0x8137,0x116));var _0x7813=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x8137[_0x1cc8fe];return _0x230054;};'use strict';var client=require(_0x7813('0x0'));exports[_0x7813('0x1')]=function(_0x2091ba){return client[_0x7813('0x2')](_0x7813('0x3'),{'body':_0x2091ba,'log':_0x7813('0x3')});};exports[_0x7813('0x4')]=function(_0x469bd2,_0xc6db5b){return client[_0x7813('0x2')]('UpdateOpenchannelQueueReport',{'body':_0xc6db5b,'options':{'where':{'uniqueid':_0x469bd2},'order':[['id','DESC']],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
index c053042..acaf62a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35c8=['AddTagsToSmsInteraction','addTagsToSmsInteraction','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x5810a0,_0x5558e4){var _0x557835=function(_0x57ed8d){while(--_0x57ed8d){_0x5810a0['push'](_0x5810a0['shift']());}};_0x557835(++_0x5558e4);}(_0x35c8,0x152));var _0x835c=function(_0x4d226c,_0x8c289b){_0x4d226c=_0x4d226c-0x0;var _0x5de2e8=_0x35c8[_0x4d226c];return _0x5de2e8;};'use strict';var client=require('../client');exports[_0x835c('0x0')]=function(_0x6cc441,_0x1a1ebb){return client[_0x835c('0x1')](_0x835c('0x2'),{'body':_0x1a1ebb,'options':{'where':{'id':_0x6cc441}},'log':_0x835c('0x3')});};exports[_0x835c('0x4')]=function(_0x1d29e1,_0x2ad320){return client[_0x835c('0x1')](_0x835c('0x5'),{'body':_0x2ad320,'options':{'where':{'id':_0x1d29e1}},'log':_0x835c('0x6')});};
\ No newline at end of file
+var _0x1d80=['addTagsToSmsInteraction','../client','update','UpdateSmsInteraction','addTags','AddTagsToSmsInteraction'];(function(_0x26ab67,_0x2ebf81){var _0x8659fd=function(_0x5399fc){while(--_0x5399fc){_0x26ab67['push'](_0x26ab67['shift']());}};_0x8659fd(++_0x2ebf81);}(_0x1d80,0xaf));var _0x01d8=function(_0x33da17,_0x52adca){_0x33da17=_0x33da17-0x0;var _0x1a557a=_0x1d80[_0x33da17];return _0x1a557a;};'use strict';var client=require(_0x01d8('0x0'));exports[_0x01d8('0x1')]=function(_0x4eb66c,_0x58f769){return client['Request'](_0x01d8('0x2'),{'body':_0x58f769,'options':{'where':{'id':_0x4eb66c}},'log':'updateSmsInteraction'});};exports[_0x01d8('0x3')]=function(_0x1eadc8,_0x4026f7){return client['Request'](_0x01d8('0x4'),{'body':_0x4026f7,'options':{'where':{'id':_0x1eadc8}},'log':_0x01d8('0x5')});};
\ No newline at end of file
index f82e28c..31f6a0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db1=['../client','create','CreateSmsMessage'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x0db1,0x1aa));var _0x10db=function(_0x15803d,_0x5e3fa7){_0x15803d=_0x15803d-0x0;var _0xa5276d=_0x0db1[_0x15803d];return _0xa5276d;};'use strict';var client=require(_0x10db('0x0'));exports[_0x10db('0x1')]=function(_0x5744b9){return client['Request'](_0x10db('0x2'),{'body':_0x5744b9,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0x9d34=['../client','create','CreateSmsMessage','createSmsMessage'];(function(_0x2713ee,_0x5d4fe2){var _0x2182f7=function(_0x275194){while(--_0x275194){_0x2713ee['push'](_0x2713ee['shift']());}};_0x2182f7(++_0x5d4fe2);}(_0x9d34,0x16c));var _0x49d3=function(_0x1c5feb,_0x3d9b3b){_0x1c5feb=_0x1c5feb-0x0;var _0x534222=_0x9d34[_0x1c5feb];return _0x534222;};'use strict';var client=require(_0x49d3('0x0'));exports[_0x49d3('0x1')]=function(_0x95c482){return client['Request'](_0x49d3('0x2'),{'body':_0x95c482,'log':_0x49d3('0x3')});};
\ No newline at end of file
index ae3f983..97c8e53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x377e=['online','smsPause','getSmsQueues','../client','name','timeout','strategy','User','Agents'];(function(_0x5ddf77,_0x3cbe87){var _0x23e5ec=function(_0x529ce9){while(--_0x529ce9){_0x5ddf77['push'](_0x5ddf77['shift']());}};_0x23e5ec(++_0x3cbe87);}(_0x377e,0x1e9));var _0xe377=function(_0x5db720,_0x1d6bdd){_0x5db720=_0x5db720-0x0;var _0x2ab3e2=_0x377e[_0x5db720];return _0x2ab3e2;};'use strict';var client=require(_0xe377('0x0'));exports['getSmsQueues']=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0xe377('0x1'),_0xe377('0x2'),_0xe377('0x3')],'include':[{'model':_0xe377('0x4'),'as':_0xe377('0x5'),'attributes':['id',_0xe377('0x1'),_0xe377('0x6'),_0xe377('0x7')]}]},'log':_0xe377('0x8')});};};
\ No newline at end of file
+var _0xd69e=['Request','name','timeout','online','../client','getSmsQueues'];(function(_0x1417c6,_0x194309){var _0x44db97=function(_0xa2a293){while(--_0xa2a293){_0x1417c6['push'](_0x1417c6['shift']());}};_0x44db97(++_0x194309);}(_0xd69e,0xa0));var _0xed69=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xd69e[_0x4c12ec];return _0x3ae42c;};'use strict';var client=require(_0xed69('0x0'));exports[_0xed69('0x1')]=function(){return function(){return client[_0xed69('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0xed69('0x3'),_0xed69('0x4'),'strategy'],'include':[{'model':'User','as':'Agents','attributes':['id','name',_0xed69('0x5'),'smsPause']}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index 653eeba..ed179ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x536e=['update','Request','UpdateSmsQueueReport','create','CreateSmsQueueReport'];(function(_0x4a269f,_0x2f7052){var _0x2e0498=function(_0x7e4aef){while(--_0x7e4aef){_0x4a269f['push'](_0x4a269f['shift']());}};_0x2e0498(++_0x2f7052);}(_0x536e,0x111));var _0xe536=function(_0xb37185,_0x3ec508){_0xb37185=_0xb37185-0x0;var _0x575b45=_0x536e[_0xb37185];return _0x575b45;};'use strict';var client=require('../client');exports[_0xe536('0x0')]=function(_0x314019){return client['Request']('CreateSmsQueueReport',{'body':_0x314019,'log':_0xe536('0x1')});};exports[_0xe536('0x2')]=function(_0x2c6a7e,_0x190723){return client[_0xe536('0x3')]('UpdateSmsQueueReport',{'body':_0x190723,'options':{'where':{'uniqueid':_0x2c6a7e},'order':[['id','DESC']],'limit':0x1},'log':_0xe536('0x4')});};
\ No newline at end of file
+var _0x9a1b=['Request','UpdateSmsQueueReport','../client','CreateSmsQueueReport','update'];(function(_0xe9de28,_0x547dbc){var _0x2d4bfa=function(_0x5b8e85){while(--_0x5b8e85){_0xe9de28['push'](_0xe9de28['shift']());}};_0x2d4bfa(++_0x547dbc);}(_0x9a1b,0x1ba));var _0xb9a1=function(_0x5b8abc,_0x34c9e7){_0x5b8abc=_0x5b8abc-0x0;var _0x68eaa7=_0x9a1b[_0x5b8abc];return _0x68eaa7;};'use strict';var client=require(_0xb9a1('0x0'));exports['create']=function(_0x592bbe){return client['Request'](_0xb9a1('0x1'),{'body':_0x592bbe,'log':_0xb9a1('0x1')});};exports[_0xb9a1('0x2')]=function(_0x3d8773,_0x5b5b1f){return client[_0xb9a1('0x3')](_0xb9a1('0x4'),{'body':_0x5b5b1f,'options':{'where':{'uniqueid':_0x3d8773},'order':[['id','DESC']],'limit':0x1},'log':_0xb9a1('0x4')});};
\ No newline at end of file
index 45bde16..0f04e45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50a2=['chatCapacity','mailCapacity','faxCapacity','smsCapacity','getAgents','Request','name','pauseType','voicePause','chatPause','faxPause','smsPause','openchannelPause'];(function(_0x31ea6a,_0x19f51d){var _0x321410=function(_0x379181){while(--_0x379181){_0x31ea6a['push'](_0x31ea6a['shift']());}};_0x321410(++_0x19f51d);}(_0x50a2,0x13c));var _0x250a=function(_0xfad778,_0x1b125d){_0xfad778=_0xfad778-0x0;var _0x284697=_0x50a2[_0xfad778];return _0x284697;};'use strict';var client=require('../client');exports[_0x250a('0x0')]=function(){return function(){return client[_0x250a('0x1')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x250a('0x2'),'online',_0x250a('0x3'),'lastPauseAt',_0x250a('0x4'),_0x250a('0x5'),'mailPause',_0x250a('0x6'),_0x250a('0x7'),_0x250a('0x8'),_0x250a('0x9'),_0x250a('0xa'),_0x250a('0xb'),_0x250a('0xc'),'openchannelCapacity']},'log':'getAgents'});};};
\ No newline at end of file
+var _0xb252=['faxPause','smsPause','openchannelPause','smsCapacity','getAgents','../client','Request','GetUser','online','pauseType','voicePause','chatPause','mailPause'];(function(_0x26bafe,_0x13e506){var _0x307879=function(_0x5a1548){while(--_0x5a1548){_0x26bafe['push'](_0x26bafe['shift']());}};_0x307879(++_0x13e506);}(_0xb252,0x198));var _0x2b25=function(_0x453194,_0x57fca4){_0x453194=_0x453194-0x0;var _0x4461b5=_0xb252[_0x453194];return _0x4461b5;};'use strict';var client=require(_0x2b25('0x0'));exports['getAgents']=function(){return function(){return client[_0x2b25('0x1')](_0x2b25('0x2'),{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id','name',_0x2b25('0x3'),_0x2b25('0x4'),'lastPauseAt',_0x2b25('0x5'),_0x2b25('0x6'),_0x2b25('0x7'),_0x2b25('0x8'),_0x2b25('0x9'),_0x2b25('0xa'),'chatCapacity','mailCapacity','faxCapacity',_0x2b25('0xb'),'openchannelCapacity']},'log':_0x2b25('0xc')});};};
\ No newline at end of file
index 35e5c87..d4cbd28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2c1=['stack','seq-queue','../../../../config/logger','routing','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','validate','length','error','[%s][AGENT]\x20%s','map','join','find','agents','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','stop','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log'];(function(_0x153b0b,_0x204749){var _0x16bd75=function(_0x5314c4){while(--_0x5314c4){_0x153b0b['push'](_0x153b0b['shift']());}};_0x16bd75(++_0x204749);}(_0xf2c1,0x199));var _0x1f2c=function(_0x3eaafa,_0x1a41b7){_0x3eaafa=_0x3eaafa-0x0;var _0x16e821=_0xf2c1[_0x3eaafa];return _0x16e821;};'use strict';var schema=require('validate');var _=require('lodash');var util=require('util');var seqqueue=require(_0x1f2c('0x0'));var logger=require(_0x1f2c('0x1'))(_0x1f2c('0x2'));var strategy=require('./strategy');var queue=schema({'name':{'type':'string','required':!![],'message':_0x1f2c('0x3')},'timeout':{'type':_0x1f2c('0x4'),'message':_0x1f2c('0x5')}});function writeLog(_0x35127d,_0x2ff0bd,_0x1e00bc){return logger[_0x1f2c('0x6')](util[_0x1f2c('0x7')](_0x1f2c('0x8'),_0x35127d,_0x2ff0bd[_0x1f2c('0x9')],_0x1e00bc));}function handleFindAgent(_0x1bfa0){return function(_0x20e908){return _0x20e908['name'][_0x1f2c('0xa')]()===_0x1bfa0[_0x1f2c('0xa')]();};}exports[_0x1f2c('0xb')]=function(_0x363d6e,_0x2cc516,_0xea3b4e,_0xe7cf1b){return function(_0x232250){try{var _0x45ff43={'name':_0x2cc516[0x0],'timeout':_0x2cc516[0x1]};var _0x32f1be=queue[_0x1f2c('0xc')](_0x45ff43,{'typecast':!![]});if(_0x32f1be[_0x1f2c('0xd')]){logger[_0x1f2c('0xe')](_0x1f2c('0xf'),_0x363d6e,_[_0x1f2c('0x10')](_0x32f1be,'message')[_0x1f2c('0x11')](',\x20'));_0x232250['stop']();}else{var _0x2c38fb=_[_0x1f2c('0x12')](_0xea3b4e[_0x1f2c('0x13')],handleFindAgent(_0x45ff43['name']));if(_0x2c38fb){var _0x278585=(_0x45ff43['timeout']||0xa)*0x3e8;var _0x2ff909,_0x2845d7;var _0x1f8e44=seqqueue[_0x1f2c('0x14')](_0x278585);_0x1f8e44['id']=_0x363d6e;_0x1f8e44[_0x1f2c('0x15')]=_0x278585;_0x1f8e44[_0x1f2c('0x16')]=_0xe7cf1b['channel'];writeLog(_0x363d6e,_0x2c38fb,util[_0x1f2c('0x7')](_0x1f2c('0x17'),_0x278585));_0xea3b4e[_0x1f2c('0x18')][_0x363d6e]['on'](_0x1f2c('0x19'),function(){_0x1f8e44['close']();clearTimeout(_0x2845d7);_0x2845d7=undefined;if(_0xea3b4e['rules'][_0x363d6e]){delete _0xea3b4e[_0x1f2c('0x18')][_0x363d6e];}logger[_0x1f2c('0x6')](_0x1f2c('0x1a'),_0x363d6e);_0x232250[_0x1f2c('0x1b')]();});_0x2845d7=setTimeout(function(){clearTimeout(_0x2845d7);_0x1f8e44['close']();logger[_0x1f2c('0x6')](_0x1f2c('0x1c'),_0x363d6e);_0x232250[_0x1f2c('0x1d')]();},_0x278585);strategy[_0x1f2c('0x1e')](_0x1f8e44,_0x2c38fb,_0xea3b4e,_0xe7cf1b);}else{logger[_0x1f2c('0xe')](_0x1f2c('0x1f'),_0x363d6e,_0x45ff43[_0x1f2c('0x9')]);_0x232250[_0x1f2c('0x1b')]();}}}catch(_0x9799c5){console[_0x1f2c('0x20')](_0x9799c5);logger[_0x1f2c('0xe')]('[%s][QUEUE]\x20%s',_0x363d6e,_0x9799c5[_0x1f2c('0x21')]);_0x232250[_0x1f2c('0x1b')]();}};};
\ No newline at end of file
+var _0xe0c2=['join','stop','find','agents','atimeout','channel','rules','end','close','[%s][AGENT]\x20ROUTING\x20STOPPED','[%s][AGENT]\x20ROUTING\x20END','next','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','stack','validate','lodash','util','seq-queue','routing','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','[%s][AGENT]\x20%s','map'];(function(_0x1e9521,_0x396374){var _0x2106f2=function(_0xa3758a){while(--_0xa3758a){_0x1e9521['push'](_0x1e9521['shift']());}};_0x2106f2(++_0x396374);}(_0xe0c2,0xd7));var _0x2e0c=function(_0x4cff96,_0x584782){_0x4cff96=_0x4cff96-0x0;var _0x39dd96=_0xe0c2[_0x4cff96];return _0x39dd96;};'use strict';var schema=require(_0x2e0c('0x0'));var _=require(_0x2e0c('0x1'));var util=require(_0x2e0c('0x2'));var seqqueue=require(_0x2e0c('0x3'));var logger=require('../../../../config/logger')(_0x2e0c('0x4'));var strategy=require('./strategy');var queue=schema({'name':{'type':'string','required':!![],'message':_0x2e0c('0x5')},'timeout':{'type':_0x2e0c('0x6'),'message':_0x2e0c('0x7')}});function writeLog(_0x45d592,_0x40a5ff,_0x15c4d4){return logger[_0x2e0c('0x8')](util[_0x2e0c('0x9')](_0x2e0c('0xa'),_0x45d592,_0x40a5ff[_0x2e0c('0xb')],_0x15c4d4));}function handleFindAgent(_0x5d4fef){return function(_0x2381ca){return _0x2381ca[_0x2e0c('0xb')][_0x2e0c('0xc')]()===_0x5d4fef[_0x2e0c('0xc')]();};}exports[_0x2e0c('0xd')]=function(_0x3a84dd,_0x304d4f,_0x2b858c,_0x3c7378){return function(_0x1a0e95){try{var _0x328f03={'name':_0x304d4f[0x0],'timeout':_0x304d4f[0x1]};var _0x59a87e=queue[_0x2e0c('0x0')](_0x328f03,{'typecast':!![]});if(_0x59a87e['length']){logger['error'](_0x2e0c('0xe'),_0x3a84dd,_[_0x2e0c('0xf')](_0x59a87e,'message')[_0x2e0c('0x10')](',\x20'));_0x1a0e95[_0x2e0c('0x11')]();}else{var _0x524619=_[_0x2e0c('0x12')](_0x2b858c[_0x2e0c('0x13')],handleFindAgent(_0x328f03[_0x2e0c('0xb')]));if(_0x524619){var _0x5d23ec=(_0x328f03['timeout']||0xa)*0x3e8;var _0x91310d,_0x368c6d;var _0x9d2f17=seqqueue['createQueue'](_0x5d23ec);_0x9d2f17['id']=_0x3a84dd;_0x9d2f17[_0x2e0c('0x14')]=_0x5d23ec;_0x9d2f17[_0x2e0c('0x15')]=_0x3c7378[_0x2e0c('0x15')];writeLog(_0x3a84dd,_0x524619,util['format']('START:%s',_0x5d23ec));_0x2b858c[_0x2e0c('0x16')][_0x3a84dd]['on'](_0x2e0c('0x17'),function(){_0x9d2f17[_0x2e0c('0x18')]();clearTimeout(_0x368c6d);_0x368c6d=undefined;if(_0x2b858c[_0x2e0c('0x16')][_0x3a84dd]){delete _0x2b858c[_0x2e0c('0x16')][_0x3a84dd];}logger[_0x2e0c('0x8')](_0x2e0c('0x19'),_0x3a84dd);_0x1a0e95[_0x2e0c('0x11')]();});_0x368c6d=setTimeout(function(){clearTimeout(_0x368c6d);_0x9d2f17[_0x2e0c('0x18')]();logger[_0x2e0c('0x8')](_0x2e0c('0x1a'),_0x3a84dd);_0x1a0e95[_0x2e0c('0x1b')]();},_0x5d23ec);strategy[_0x2e0c('0x1c')](_0x9d2f17,_0x524619,_0x2b858c,_0x3c7378);}else{logger[_0x2e0c('0x1d')](_0x2e0c('0x1e'),_0x3a84dd,_0x328f03[_0x2e0c('0xb')]);_0x1a0e95[_0x2e0c('0x11')]();}}}catch(_0x1a779a){console[_0x2e0c('0x1f')](_0x1a779a);logger[_0x2e0c('0x1d')]('[%s][QUEUE]\x20%s',_0x3a84dd,_0x1a779a[_0x2e0c('0x20')]);_0x1a0e95[_0x2e0c('0x11')]();}};};
\ No newline at end of file
index ebf82e8..c5e2d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd09=['[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','isEmpty','body','Message','create','then','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','LexRuntime','$LATEST','message','toString','postText','dialogState','Failed','stop','lodash','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','info'];(function(_0x4aa36b,_0x47c1f9){var _0x31c572=function(_0x112ee9){while(--_0x112ee9){_0x4aa36b['push'](_0x4aa36b['shift']());}};_0x31c572(++_0x47c1f9);}(_0xbd09,0x190));var _0x9bd0=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xbd09[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0x9bd0('0x0'));var moment=require('moment');var AWS=require(_0x9bd0('0x1'));var utils=require(_0x9bd0('0x2'));var logger=require(_0x9bd0('0x3'))(_0x9bd0('0x4'));var rpc={'chatMessage':require(_0x9bd0('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x9bd0('0x6')),'smsMessage':require(_0x9bd0('0x7')),'faxMessage':require(_0x9bd0('0x8'))};exports[_0x9bd0('0x9')]=function(_0x122096,_0x2bcbaf){return function(_0x588c4e){try{if(!_[_0x9bd0('0xa')](this[_0x9bd0('0xb')][_0x9bd0('0xc')])){logger[_0x9bd0('0xd')](_0x9bd0('0xe'),_0x122096,_0x9bd0('0xf'));return _0x588c4e[_0x9bd0('0x10')]();}var _0x3078ac={'ContactId':this[_0x9bd0('0x11')]['id'],'sentAt':moment()[_0x9bd0('0x12')](_0x9bd0('0x13')),'direction':'out'};var _0x3f5298=this[_0x9bd0('0x14')];if(_0x3f5298===_0x9bd0('0x15')){_0x3078ac[_0x9bd0('0x16')]=this[_0x9bd0('0x17')]['id'];}else{_0x3078ac[_['upperFirst'](_0x3f5298)+_0x9bd0('0x18')]=this['account']['id'];}_0x3078ac[_[_0x9bd0('0x19')](_0x3f5298)+_0x9bd0('0x1a')]=this[_0x9bd0('0xb')]['id'];if(this[_0x9bd0('0xb')][_0x9bd0('0x1b')]){var _0x33964d=_0x2bcbaf[0x4];if(!_[_0x9bd0('0x1c')](_0x33964d)){_0x3078ac[_0x9bd0('0x1d')]=utils['getMustacheRender'](_0x33964d,this);return rpc[_0x3f5298+_0x9bd0('0x1e')][_0x9bd0('0x1f')](_0x3078ac)[_0x9bd0('0x20')](function(_0x501f0d){logger[_0x9bd0('0xd')](_0x9bd0('0xe'),_0x122096,_0x3078ac[_0x9bd0('0x1d')]);})[_0x9bd0('0x21')](function(_0x368a22){logger[_0x9bd0('0x22')]('[%s][AMAZONLEX]\x20%s',_0x122096,JSON[_0x9bd0('0x23')](_0x368a22));})[_0x9bd0('0x24')](function(){logger[_0x9bd0('0xd')](_0x9bd0('0x25'),_0x122096);_0x588c4e['stop']();});}else{logger[_0x9bd0('0xd')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x122096);_0x588c4e['stop']();}}else{var _0x97404b=this;var _0x30188f=new AWS[(_0x9bd0('0x26'))]({'accessKeyId':_0x2bcbaf[0x0],'secretAccessKey':_0x2bcbaf[0x1],'region':_0x2bcbaf[0x2]});var _0x59bc86={'botAlias':_0x9bd0('0x27'),'botName':_0x2bcbaf[0x3],'inputText':this[_0x9bd0('0x28')][_0x9bd0('0x1d')],'userId':this[_0x9bd0('0xb')]['id'][_0x9bd0('0x29')]()};_0x30188f[_0x9bd0('0x2a')](_0x59bc86,function(_0x69663d,_0x452d74){if(_0x69663d){logger[_0x9bd0('0x22')](_0x9bd0('0xe'),_0x122096,_0x69663d['message']);_0x588c4e[_0x9bd0('0x10')]();}else if(_0x452d74&&_0x452d74[_0x9bd0('0x28')]){_0x97404b[_0x9bd0('0x1d')]['amazonlex']=_0x452d74;_0x3078ac[_0x9bd0('0x1d')]=_0x452d74[_0x9bd0('0x28')];return rpc[_0x3f5298+_0x9bd0('0x1e')][_0x9bd0('0x1f')](_0x3078ac)[_0x9bd0('0x20')](function(_0x1ace32){logger['info'](_0x9bd0('0xe'),_0x122096,_0x3078ac[_0x9bd0('0x1d')]);if(_0x452d74[_0x9bd0('0x2b')]==_0x9bd0('0x2c')){_0x588c4e['next']();}else{_0x588c4e[_0x9bd0('0x2d')]();}})[_0x9bd0('0x21')](function(_0x427906){logger['error'](_0x9bd0('0xe'),_0x122096,JSON['stringify'](_0x427906));_0x588c4e['next']();});}else{_0x588c4e[_0x9bd0('0x10')]();}});}}catch(_0x5ace9d){logger[_0x9bd0('0x22')](_0x9bd0('0xe'),_0x122096,JSON[_0x9bd0('0x23')](_0x5ace9d));_0x588c4e[_0x9bd0('0x2d')]();}};};
\ No newline at end of file
+var _0xd5e5=['interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','chat','account','upperFirst','created','isEmpty','body','Message','create','then','error','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','$LATEST','message','postText','next','amazonlex','dialogState','Failed','stringify','lodash','moment','aws-sdk','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','isNil'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0xd5e5,0x69));var _0x5d5e=function(_0x1d8e9d,_0x36cd1d){_0x1d8e9d=_0x1d8e9d-0x0;var _0x49a99d=_0xd5e5[_0x1d8e9d];return _0x49a99d;};'use strict';var _=require(_0x5d5e('0x0'));var moment=require(_0x5d5e('0x1'));var AWS=require(_0x5d5e('0x2'));var utils=require('./utils');var logger=require(_0x5d5e('0x3'))(_0x5d5e('0x4'));var rpc={'chatMessage':require(_0x5d5e('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x5d5e('0x6')),'smsMessage':require(_0x5d5e('0x7')),'faxMessage':require('../../rpc/faxMessage')};exports['consequence']=function(_0x9dc684,_0x3a674e){return function(_0x212272){try{if(!_[_0x5d5e('0x8')](this[_0x5d5e('0x9')][_0x5d5e('0xa')])){logger[_0x5d5e('0xb')](_0x5d5e('0xc'),_0x9dc684,_0x5d5e('0xd'));return _0x212272['next']();}var _0x538b55={'ContactId':this[_0x5d5e('0xe')]['id'],'sentAt':moment()['format'](_0x5d5e('0xf')),'direction':_0x5d5e('0x10')};var _0x16dda7=this[_0x5d5e('0x11')];if(_0x16dda7===_0x5d5e('0x12')){_0x538b55['ChatWebsiteId']=this[_0x5d5e('0x13')]['id'];}else{_0x538b55[_['upperFirst'](_0x16dda7)+'AccountId']=this[_0x5d5e('0x13')]['id'];}_0x538b55[_[_0x5d5e('0x14')](_0x16dda7)+'InteractionId']=this[_0x5d5e('0x9')]['id'];if(this['interaction'][_0x5d5e('0x15')]){var _0x4cecf7=_0x3a674e[0x4];if(!_[_0x5d5e('0x16')](_0x4cecf7)){_0x538b55[_0x5d5e('0x17')]=utils['getMustacheRender'](_0x4cecf7,this);return rpc[_0x16dda7+_0x5d5e('0x18')][_0x5d5e('0x19')](_0x538b55)[_0x5d5e('0x1a')](function(_0x2a2665){logger[_0x5d5e('0xb')]('[%s][AMAZONLEX]\x20%s',_0x9dc684,_0x538b55[_0x5d5e('0x17')]);})['catch'](function(_0x5b2da7){logger[_0x5d5e('0x1b')](_0x5d5e('0xc'),_0x9dc684,JSON['stringify'](_0x5b2da7));})['finally'](function(){logger['info'](_0x5d5e('0x1c'),_0x9dc684);_0x212272[_0x5d5e('0x1d')]();});}else{logger[_0x5d5e('0xb')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x9dc684);_0x212272[_0x5d5e('0x1d')]();}}else{var _0x26da36=this;var _0x5d3a40=new AWS['LexRuntime']({'accessKeyId':_0x3a674e[0x0],'secretAccessKey':_0x3a674e[0x1],'region':_0x3a674e[0x2]});var _0x360c82={'botAlias':_0x5d5e('0x1e'),'botName':_0x3a674e[0x3],'inputText':this[_0x5d5e('0x1f')][_0x5d5e('0x17')],'userId':this[_0x5d5e('0x9')]['id']['toString']()};_0x5d3a40[_0x5d5e('0x20')](_0x360c82,function(_0x6e5923,_0x4f1226){if(_0x6e5923){logger[_0x5d5e('0x1b')](_0x5d5e('0xc'),_0x9dc684,_0x6e5923['message']);_0x212272[_0x5d5e('0x21')]();}else if(_0x4f1226&&_0x4f1226['message']){_0x26da36[_0x5d5e('0x17')][_0x5d5e('0x22')]=_0x4f1226;_0x538b55[_0x5d5e('0x17')]=_0x4f1226[_0x5d5e('0x1f')];return rpc[_0x16dda7+'Message'][_0x5d5e('0x19')](_0x538b55)['then'](function(_0x369643){logger[_0x5d5e('0xb')](_0x5d5e('0xc'),_0x9dc684,_0x538b55[_0x5d5e('0x17')]);if(_0x4f1226[_0x5d5e('0x23')]==_0x5d5e('0x24')){_0x212272[_0x5d5e('0x21')]();}else{_0x212272[_0x5d5e('0x1d')]();}})['catch'](function(_0xf7e67f){logger[_0x5d5e('0x1b')]('[%s][AMAZONLEX]\x20%s',_0x9dc684,JSON[_0x5d5e('0x25')](_0xf7e67f));_0x212272[_0x5d5e('0x21')]();});}else{_0x212272['next']();}});}}catch(_0x2fd27d){logger[_0x5d5e('0x1b')](_0x5d5e('0xc'),_0x9dc684,JSON[_0x5d5e('0x25')](_0x2fd27d));_0x212272[_0x5d5e('0x1d')]();}};};
\ No newline at end of file
index 46b5193..9c04759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['from','phone','subject','startsWith','Re:','chat','ChatWebsiteId','upperFirst','AccountId','account','Message','Smtp','service','host','port','secure','authentication','user','pass','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','</div>','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','then','error','finally','next','create','body','catch','stringify','stop','lodash','moment','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../mailRpc','interaction','created','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','channel','getMustacheRender','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','message'];(function(_0x5974b1,_0x39a574){var _0x372420=function(_0x4577ac){while(--_0x4577ac){_0x5974b1['push'](_0x5974b1['shift']());}};_0x372420(++_0x39a574);}(_0x70e0,0x17b));var _0x070e=function(_0x45f6c2,_0x40c866){_0x45f6c2=_0x45f6c2-0x0;var _0x46e0d8=_0x70e0[_0x45f6c2];return _0x46e0d8;};'use strict';var _=require(_0x070e('0x0'));var moment=require(_0x070e('0x1'));var utils=require(_0x070e('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x070e('0x3')),'openchannelMessage':require(_0x070e('0x4')),'mailMessage':require(_0x070e('0x5')),'smsMessage':require(_0x070e('0x6')),'faxMessage':require('../../rpc/faxMessage')};var mailRpc=require(_0x070e('0x7'));exports['consequence']=function(_0x46fe68,_0x4b041d){return function(_0x56e420){try{if(_0x4b041d[0x0]==='1'&&(_['isNil'](this[_0x070e('0x8')][_0x070e('0x9')])||!this[_0x070e('0x8')][_0x070e('0x9')])){logger[_0x070e('0xa')](_0x070e('0xb'),_0x46fe68,_0x070e('0xc'));return _0x56e420['next']();}var _0x49b2fb=this[_0x070e('0xd')];var _0x2e3e5e={'body':utils[_0x070e('0xe')](_0x4b041d[0x1],this),'ContactId':this[_0x070e('0xf')]['id'],'sentAt':moment()[_0x070e('0x10')](_0x070e('0x11')),'direction':_0x070e('0x12')};if(this[_0x070e('0x13')]){_0x2e3e5e['to']=this[_0x070e('0x13')][_0x070e('0x14')]||'';_0x2e3e5e['cc']=this[_0x070e('0x13')]['cc']||'';_0x2e3e5e['from']=this['message']['to']||'';_0x2e3e5e[_0x070e('0x15')]=this['message']['phone']||'';_0x2e3e5e['read']=!![];if(this[_0x070e('0x13')][_0x070e('0x16')]){_0x2e3e5e['subject']='';_0x2e3e5e['subject']+=_[_0x070e('0x17')](this[_0x070e('0x13')][_0x070e('0x16')],_0x070e('0x18'))?'':'Re:\x20';_0x2e3e5e['subject']+=this[_0x070e('0x13')][_0x070e('0x16')];}}if(this[_0x070e('0xd')]===_0x070e('0x19')){_0x2e3e5e[_0x070e('0x1a')]=this['account']['id'];}else{_0x2e3e5e[_[_0x070e('0x1b')](this[_0x070e('0xd')])+_0x070e('0x1c')]=this[_0x070e('0x1d')]['id'];}_0x2e3e5e[_[_0x070e('0x1b')](this['channel'])+'InteractionId']=this['interaction']['id'];if(rpc[this[_0x070e('0xd')]+_0x070e('0x1e')]){if(this[_0x070e('0xd')]==='mail'){var _0x5b184={'tls':{'rejectUnauthorized':![]}};if(this['account'][_0x070e('0x1f')][_0x070e('0x20')]){_0x5b184[_0x070e('0x20')]=this[_0x070e('0x1d')][_0x070e('0x1f')][_0x070e('0x20')];}else{_0x5b184[_0x070e('0x21')]=this[_0x070e('0x1d')]['Smtp'][_0x070e('0x21')];_0x5b184[_0x070e('0x22')]=this[_0x070e('0x1d')]['Smtp'][_0x070e('0x22')];_0x5b184['secure']=this['account'][_0x070e('0x1f')][_0x070e('0x23')];}if(this[_0x070e('0x1d')][_0x070e('0x1f')][_0x070e('0x24')]){_0x5b184['auth']={'user':this[_0x070e('0x1d')][_0x070e('0x1f')][_0x070e('0x25')],'pass':this[_0x070e('0x1d')][_0x070e('0x1f')][_0x070e('0x26')]};}_0x2e3e5e[_0x070e('0x27')]=this[_0x070e('0x13')]['messageId'];_0x2e3e5e[_0x070e('0x28')]=_0x070e('0x29')+_[_0x070e('0x2a')](_0x2e3e5e['body'],'<div\x20id=\x22xm-mail-content\x22',_0x070e('0x2b'))+_0x070e('0x2c');return mailRpc[_0x070e('0x2d')](_0x5b184,_0x2e3e5e)['then'](function(_0x3fa994){logger[_0x070e('0xa')](_0x070e('0x2e'),_0x46fe68);_0x2e3e5e[_0x070e('0x2f')]=_0x3fa994['message']['messageId'];return rpc[_0x49b2fb+'Message']['create'](_0x2e3e5e);})[_0x070e('0x30')](function(_0x4e0a7d){logger[_0x070e('0xa')](_0x070e('0xb'),_0x46fe68,JSON['stringify'](_0x4e0a7d));})['catch'](function(_0x699739){logger[_0x070e('0x31')]('[RPC][%s][AUTOREPLY]\x20%s',_0x46fe68,JSON['stringify'](_0x699739));})[_0x070e('0x32')](function(){_0x56e420[_0x070e('0x33')]();});}else{return rpc[this[_0x070e('0xd')]+_0x070e('0x1e')][_0x070e('0x34')](_0x2e3e5e)['then'](function(_0x482cc2){logger[_0x070e('0xa')](_0x070e('0xb'),_0x46fe68,_0x2e3e5e[_0x070e('0x35')]);})[_0x070e('0x36')](function(_0xf11439){logger['error'](_0x070e('0xb'),_0x46fe68,JSON[_0x070e('0x37')](_0xf11439));})['finally'](function(){_0x56e420[_0x070e('0x33')]();});}}}catch(_0x34746e){logger['error']('[%s][AUTOREPLY]\x20%s',_0x46fe68,JSON['stringify'](_0x34746e));_0x56e420[_0x070e('0x38')]();}};};
\ No newline at end of file
+var _0xd8b0=['upperFirst','AccountId','InteractionId','Message','service','Smtp','host','port','secure','pass','html','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','messageId','create','then','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','lodash','moment','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','interaction','created','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','next','channel','contact','YYYY-MM-DD\x20HH:mm:ss','out','message','from','phone','read','subject','startsWith','Re:','chat','ChatWebsiteId','account'];(function(_0x576b97,_0x3c61fe){var _0x1d7e5c=function(_0x567639){while(--_0x567639){_0x576b97['push'](_0x576b97['shift']());}};_0x1d7e5c(++_0x3c61fe);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x0d8b('0x0'));var moment=require(_0x0d8b('0x1'));var utils=require('./utils');var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x0d8b('0x2')),'openchannelMessage':require(_0x0d8b('0x3')),'mailMessage':require(_0x0d8b('0x4')),'smsMessage':require(_0x0d8b('0x5')),'faxMessage':require(_0x0d8b('0x6'))};var mailRpc=require('../../mailRpc');exports['consequence']=function(_0x3f8b6f,_0x227c63){return function(_0x39f43a){try{if(_0x227c63[0x0]==='1'&&(_['isNil'](this[_0x0d8b('0x7')][_0x0d8b('0x8')])||!this['interaction'][_0x0d8b('0x8')])){logger[_0x0d8b('0x9')](_0x0d8b('0xa'),_0x3f8b6f,_0x0d8b('0xb'));return _0x39f43a[_0x0d8b('0xc')]();}var _0x1cac62=this[_0x0d8b('0xd')];var _0x28f87c={'body':utils['getMustacheRender'](_0x227c63[0x1],this),'ContactId':this[_0x0d8b('0xe')]['id'],'sentAt':moment()['format'](_0x0d8b('0xf')),'direction':_0x0d8b('0x10')};if(this[_0x0d8b('0x11')]){_0x28f87c['to']=this[_0x0d8b('0x11')][_0x0d8b('0x12')]||'';_0x28f87c['cc']=this[_0x0d8b('0x11')]['cc']||'';_0x28f87c[_0x0d8b('0x12')]=this[_0x0d8b('0x11')]['to']||'';_0x28f87c[_0x0d8b('0x13')]=this[_0x0d8b('0x11')][_0x0d8b('0x13')]||'';_0x28f87c[_0x0d8b('0x14')]=!![];if(this[_0x0d8b('0x11')][_0x0d8b('0x15')]){_0x28f87c['subject']='';_0x28f87c[_0x0d8b('0x15')]+=_[_0x0d8b('0x16')](this[_0x0d8b('0x11')][_0x0d8b('0x15')],_0x0d8b('0x17'))?'':'Re:\x20';_0x28f87c[_0x0d8b('0x15')]+=this[_0x0d8b('0x11')][_0x0d8b('0x15')];}}if(this[_0x0d8b('0xd')]===_0x0d8b('0x18')){_0x28f87c[_0x0d8b('0x19')]=this[_0x0d8b('0x1a')]['id'];}else{_0x28f87c[_[_0x0d8b('0x1b')](this['channel'])+_0x0d8b('0x1c')]=this[_0x0d8b('0x1a')]['id'];}_0x28f87c[_[_0x0d8b('0x1b')](this[_0x0d8b('0xd')])+_0x0d8b('0x1d')]=this[_0x0d8b('0x7')]['id'];if(rpc[this[_0x0d8b('0xd')]+_0x0d8b('0x1e')]){if(this['channel']==='mail'){var _0x33fb87={'tls':{'rejectUnauthorized':![]}};if(this['account']['Smtp']['service']){_0x33fb87[_0x0d8b('0x1f')]=this[_0x0d8b('0x1a')][_0x0d8b('0x20')][_0x0d8b('0x1f')];}else{_0x33fb87[_0x0d8b('0x21')]=this[_0x0d8b('0x1a')][_0x0d8b('0x20')][_0x0d8b('0x21')];_0x33fb87[_0x0d8b('0x22')]=this['account'][_0x0d8b('0x20')][_0x0d8b('0x22')];_0x33fb87['secure']=this[_0x0d8b('0x1a')]['Smtp'][_0x0d8b('0x23')];}if(this[_0x0d8b('0x1a')][_0x0d8b('0x20')]['authentication']){_0x33fb87['auth']={'user':this[_0x0d8b('0x1a')][_0x0d8b('0x20')]['user'],'pass':this[_0x0d8b('0x1a')]['Smtp'][_0x0d8b('0x24')]};}_0x28f87c['inReplyTo']=this[_0x0d8b('0x11')]['messageId'];_0x28f87c[_0x0d8b('0x25')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0x0d8b('0x26')](_0x28f87c['body'],_0x0d8b('0x27'),_0x0d8b('0x28'))+_0x0d8b('0x29');return mailRpc['sendMailMessage'](_0x33fb87,_0x28f87c)['then'](function(_0x51cf32){logger[_0x0d8b('0x9')]('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x3f8b6f);_0x28f87c[_0x0d8b('0x2a')]=_0x51cf32['message']['messageId'];return rpc[_0x1cac62+_0x0d8b('0x1e')][_0x0d8b('0x2b')](_0x28f87c);})[_0x0d8b('0x2c')](function(_0xdeee5d){logger[_0x0d8b('0x9')](_0x0d8b('0xa'),_0x3f8b6f,JSON[_0x0d8b('0x2d')](_0xdeee5d));})[_0x0d8b('0x2e')](function(_0x553e03){logger[_0x0d8b('0x2f')](_0x0d8b('0x30'),_0x3f8b6f,JSON['stringify'](_0x553e03));})[_0x0d8b('0x31')](function(){_0x39f43a[_0x0d8b('0xc')]();});}else{return rpc[this[_0x0d8b('0xd')]+'Message'][_0x0d8b('0x2b')](_0x28f87c)[_0x0d8b('0x2c')](function(_0x206157){logger[_0x0d8b('0x9')](_0x0d8b('0xa'),_0x3f8b6f,_0x28f87c['body']);})[_0x0d8b('0x2e')](function(_0x1649fc){logger['error'](_0x0d8b('0xa'),_0x3f8b6f,JSON[_0x0d8b('0x2d')](_0x1649fc));})[_0x0d8b('0x31')](function(){_0x39f43a[_0x0d8b('0xc')]();});}}}catch(_0x373544){logger['error']('[%s][AUTOREPLY]\x20%s',_0x3f8b6f,JSON[_0x0d8b('0x2d')](_0x373544));_0x39f43a['stop']();}};};
\ No newline at end of file
index dfafb47..a3446cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c2c=['interaction','then','catch','[%s][CLOSE]\x20%s','stringify','finally','stop','error','moment','../../../../config/logger','../../rpc/smsInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction'];(function(_0x473619,_0x5d553a){var _0x594798=function(_0x4a1d94){while(--_0x4a1d94){_0x473619['push'](_0x473619['shift']());}};_0x594798(++_0x5d553a);}(_0x9c2c,0x1c0));var _0xc9c2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c2c[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0xc9c2('0x0'));var logger=require(_0xc9c2('0x1'))('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0xc9c2('0x2')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xc9c2('0x3'))};exports[_0xc9c2('0x4')]=function(_0x5bf334,_0x4db342,_0x35818b,_0x5140a8){return function(_0x30f3d6){try{logger[_0xc9c2('0x5')](_0xc9c2('0x6'),_0x5bf334,_0x4db342[0x0]);var _0x18a815={'closed':0x1,'closedAt':moment()[_0xc9c2('0x7')](_0xc9c2('0x8')),'closeReason':_0xc9c2('0x9'),'disposition':_0x4db342[0x0]};if(rpc[_0x5140a8[_0xc9c2('0xa')]+_0xc9c2('0xb')]){rpc[_0x5140a8['channel']+_0xc9c2('0xb')]['update'](_0x5140a8[_0xc9c2('0xc')]['id'],_0x18a815)[_0xc9c2('0xd')](function(_0x2a0d62){logger[_0xc9c2('0x5')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x5bf334,_0x5140a8['interaction']['id']);})[_0xc9c2('0xe')](function(_0x25aee6){logger['error'](_0xc9c2('0xf'),_0x5bf334,JSON[_0xc9c2('0x10')](_0x25aee6));})[_0xc9c2('0x11')](function(){_0x30f3d6[_0xc9c2('0x12')]();});}}catch(_0x81352e){logger[_0xc9c2('0x13')](_0xc9c2('0xf'),_0x5bf334,JSON[_0xc9c2('0x10')](_0x81352e));_0x30f3d6[_0xc9c2('0x12')]();}};};
\ No newline at end of file
+var _0x34b7=['[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','update','interaction','then'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x34b7,0x196));var _0x734b=function(_0x402dfe,_0x143d24){_0x402dfe=_0x402dfe-0x0;var _0x521b9a=_0x34b7[_0x402dfe];return _0x521b9a;};'use strict';var moment=require('moment');var logger=require('../../../../config/logger')(_0x734b('0x0'));var rpc={'chatInteraction':require(_0x734b('0x1')),'openchannelInteraction':require(_0x734b('0x2')),'smsInteraction':require(_0x734b('0x3')),'mailInteraction':require(_0x734b('0x4')),'faxInteraction':require(_0x734b('0x5'))};exports['consequence']=function(_0x547652,_0x303067,_0x2fde69,_0x2f3128){return function(_0x34fd70){try{logger[_0x734b('0x6')](_0x734b('0x7'),_0x547652,_0x303067[0x0]);var _0x58e2f1={'closed':0x1,'closedAt':moment()[_0x734b('0x8')](_0x734b('0x9')),'closeReason':'system','disposition':_0x303067[0x0]};if(rpc[_0x2f3128['channel']+'Interaction']){rpc[_0x2f3128[_0x734b('0xa')]+'Interaction'][_0x734b('0xb')](_0x2f3128[_0x734b('0xc')]['id'],_0x58e2f1)[_0x734b('0xd')](function(_0x222dc7){logger[_0x734b('0x6')](_0x734b('0xe'),_0x547652,_0x2f3128[_0x734b('0xc')]['id']);})[_0x734b('0xf')](function(_0x257657){logger[_0x734b('0x10')](_0x734b('0x11'),_0x547652,JSON[_0x734b('0x12')](_0x257657));})[_0x734b('0x13')](function(){_0x34fd70[_0x734b('0x14')]();});}}catch(_0x5a5613){logger[_0x734b('0x10')](_0x734b('0x11'),_0x547652,JSON[_0x734b('0x12')](_0x5a5613));_0x34fd70[_0x734b('0x14')]();}};};
\ No newline at end of file
index f959dc7..030005d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d34=['ChatWebsiteId','account','upperFirst','InteractionId','interaction','created','isEmpty','body','getMustacheRender','Message','then','[%s][DIALOGFLOW]\x20%s','catch','error','[%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','result','fulfillment','speech','create','stringify','lodash','apiai-promise','../../../../config/logger','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out'];(function(_0xb15db6,_0x388d94){var _0x1db34d=function(_0x309006){while(--_0x309006){_0xb15db6['push'](_0xb15db6['shift']());}};_0x1db34d(++_0x388d94);}(_0x8d34,0x6b));var _0x48d3=function(_0x57f04f,_0x54a970){_0x57f04f=_0x57f04f-0x0;var _0x4c2662=_0x8d34[_0x57f04f];return _0x4c2662;};'use strict';var _=require(_0x48d3('0x0'));var moment=require('moment');var apiai=require(_0x48d3('0x1'));var md5=require('md5');var utils=require('./utils');var logger=require(_0x48d3('0x2'))('routing');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x48d3('0x3')),'mailMessage':require(_0x48d3('0x4')),'smsMessage':require(_0x48d3('0x5')),'faxMessage':require(_0x48d3('0x6'))};exports[_0x48d3('0x7')]=function(_0x55e527,_0x419bb0){return function(_0x1c93ec){try{if(!_[_0x48d3('0x8')](this['interaction'][_0x48d3('0x9')])){logger[_0x48d3('0xa')]('[%s][DIALOGFLOW]\x20%s',_0x55e527,_0x48d3('0xb'));return _0x1c93ec[_0x48d3('0xc')]();}var _0x8dec63={'ContactId':this[_0x48d3('0xd')]['id'],'sentAt':moment()['format'](_0x48d3('0xe')),'direction':_0x48d3('0xf')};var _0x1b29e9=this['channel'];if(_0x1b29e9==='chat'){_0x8dec63[_0x48d3('0x10')]=this['account']['id'];}else{_0x8dec63[_['upperFirst'](_0x1b29e9)+'AccountId']=this[_0x48d3('0x11')]['id'];}_0x8dec63[_[_0x48d3('0x12')](_0x1b29e9)+_0x48d3('0x13')]=this[_0x48d3('0x14')]['id'];if(this[_0x48d3('0x14')][_0x48d3('0x15')]){var _0x504bff=_0x419bb0[0x2];if(!_[_0x48d3('0x16')](_0x504bff)){_0x8dec63[_0x48d3('0x17')]=utils[_0x48d3('0x18')](_0x504bff,this);return rpc[_0x1b29e9+_0x48d3('0x19')]['create'](_0x8dec63)[_0x48d3('0x1a')](function(_0x13cac8){logger[_0x48d3('0xa')](_0x48d3('0x1b'),_0x55e527,_0x8dec63[_0x48d3('0x17')]);})[_0x48d3('0x1c')](function(_0x50dca7){logger[_0x48d3('0x1d')](_0x48d3('0x1b'),_0x55e527,JSON['stringify'](_0x50dca7));})['finally'](function(){logger[_0x48d3('0xa')](_0x48d3('0x1e'),_0x55e527);_0x1c93ec[_0x48d3('0x1f')]();});}else{logger['info'](_0x48d3('0x20'),_0x55e527);_0x1c93ec['stop']();}}else{var _0x16a8b3=this;var _0x456594=apiai(_0x419bb0[0x0],{'language':_0x419bb0[0x1]||'en'});return _0x456594[_0x48d3('0x21')](this[_0x48d3('0x22')][_0x48d3('0x17')],{'sessionId':md5(this[_0x48d3('0x14')]['id'])})[_0x48d3('0x1a')](function(_0x56b22e){_0x16a8b3['body'][_0x48d3('0x23')]=_0x56b22e;_0x8dec63[_0x48d3('0x17')]=_0x56b22e[_0x48d3('0x24')][_0x48d3('0x25')][_0x48d3('0x26')];return rpc[_0x1b29e9+_0x48d3('0x19')][_0x48d3('0x27')](_0x8dec63)[_0x48d3('0x1a')](function(_0x1718f0){logger[_0x48d3('0xa')](_0x48d3('0x1b'),_0x55e527,_0x8dec63[_0x48d3('0x17')]);if(_0x56b22e[_0x48d3('0x24')]['metadata']['endConversation']){_0x1c93ec[_0x48d3('0xc')]();}else{_0x1c93ec[_0x48d3('0x1f')]();}})[_0x48d3('0x1c')](function(_0x59e9c2){logger['error']('[%s][DIALOGFLOW]\x20%s',_0x55e527,JSON[_0x48d3('0x28')](_0x59e9c2));_0x1c93ec['next']();});})[_0x48d3('0x1c')](function(_0xe1ddb8){logger[_0x48d3('0x1d')](_0x48d3('0x1b'),_0x55e527,_0xe1ddb8[_0x48d3('0x22')]);_0x1c93ec['next']();});}}catch(_0x4b55f4){logger['error'](_0x48d3('0x1b'),_0x55e527,JSON[_0x48d3('0x28')](_0x4b55f4));_0x1c93ec[_0x48d3('0x1f')]();}};};
\ No newline at end of file
+var _0x8827=['textRequest','message','dialogflow','result','fulfillment','speech','Message','endConversation','next','lodash','moment','apiai-promise','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','chat','account','AccountId','upperFirst','InteractionId','created','isEmpty','getMustacheRender','create','then','body','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x8827,0x1a7));var _0x7882=function(_0x1be04f,_0x57f528){_0x1be04f=_0x1be04f-0x0;var _0x516965=_0x8827[_0x1be04f];return _0x516965;};'use strict';var _=require(_0x7882('0x0'));var moment=require(_0x7882('0x1'));var apiai=require(_0x7882('0x2'));var md5=require('md5');var utils=require('./utils');var logger=require(_0x7882('0x3'))(_0x7882('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x7882('0x5')),'mailMessage':require(_0x7882('0x6')),'smsMessage':require(_0x7882('0x7')),'faxMessage':require(_0x7882('0x8'))};exports[_0x7882('0x9')]=function(_0x36caf3,_0x2d67e0){return function(_0x3245c3){try{if(!_[_0x7882('0xa')](this[_0x7882('0xb')][_0x7882('0xc')])){logger[_0x7882('0xd')](_0x7882('0xe'),_0x36caf3,_0x7882('0xf'));return _0x3245c3['next']();}var _0x746af8={'ContactId':this[_0x7882('0x10')]['id'],'sentAt':moment()[_0x7882('0x11')](_0x7882('0x12')),'direction':_0x7882('0x13')};var _0x10ff89=this[_0x7882('0x14')];if(_0x10ff89===_0x7882('0x15')){_0x746af8['ChatWebsiteId']=this[_0x7882('0x16')]['id'];}else{_0x746af8[_['upperFirst'](_0x10ff89)+_0x7882('0x17')]=this['account']['id'];}_0x746af8[_[_0x7882('0x18')](_0x10ff89)+_0x7882('0x19')]=this['interaction']['id'];if(this[_0x7882('0xb')][_0x7882('0x1a')]){var _0x3ede2a=_0x2d67e0[0x2];if(!_[_0x7882('0x1b')](_0x3ede2a)){_0x746af8['body']=utils[_0x7882('0x1c')](_0x3ede2a,this);return rpc[_0x10ff89+'Message'][_0x7882('0x1d')](_0x746af8)[_0x7882('0x1e')](function(_0x36bf83){logger[_0x7882('0xd')](_0x7882('0xe'),_0x36caf3,_0x746af8[_0x7882('0x1f')]);})['catch'](function(_0xef220c){logger[_0x7882('0x20')](_0x7882('0xe'),_0x36caf3,JSON[_0x7882('0x21')](_0xef220c));})['finally'](function(){logger[_0x7882('0xd')](_0x7882('0x22'),_0x36caf3);_0x3245c3[_0x7882('0x23')]();});}else{logger[_0x7882('0xd')](_0x7882('0x24'),_0x36caf3);_0x3245c3[_0x7882('0x23')]();}}else{var _0x1c9f5c=this;var _0x46cb7b=apiai(_0x2d67e0[0x0],{'language':_0x2d67e0[0x1]||'en'});return _0x46cb7b[_0x7882('0x25')](this[_0x7882('0x26')][_0x7882('0x1f')],{'sessionId':md5(this[_0x7882('0xb')]['id'])})[_0x7882('0x1e')](function(_0x550fcc){_0x1c9f5c[_0x7882('0x1f')][_0x7882('0x27')]=_0x550fcc;_0x746af8[_0x7882('0x1f')]=_0x550fcc[_0x7882('0x28')][_0x7882('0x29')][_0x7882('0x2a')];return rpc[_0x10ff89+_0x7882('0x2b')][_0x7882('0x1d')](_0x746af8)[_0x7882('0x1e')](function(_0x52ecbb){logger[_0x7882('0xd')](_0x7882('0xe'),_0x36caf3,_0x746af8['body']);if(_0x550fcc[_0x7882('0x28')]['metadata'][_0x7882('0x2c')]){_0x3245c3[_0x7882('0x2d')]();}else{_0x3245c3[_0x7882('0x23')]();}})['catch'](function(_0x4e6d63){logger['error'](_0x7882('0xe'),_0x36caf3,JSON[_0x7882('0x21')](_0x4e6d63));_0x3245c3['next']();});})['catch'](function(_0x23927f){logger[_0x7882('0x20')](_0x7882('0xe'),_0x36caf3,_0x23927f[_0x7882('0x26')]);_0x3245c3[_0x7882('0x2d')]();});}}catch(_0x2c4d71){logger['error'](_0x7882('0xe'),_0x36caf3,JSON[_0x7882('0x21')](_0x2c4d71));_0x3245c3[_0x7882('0x23')]();}};};
\ No newline at end of file
index 5fe3abb..580ff7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d51=['html-to-text','./utils','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','fromString','message','stop','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','[%s][GOTOIF]\x20%s','stringify','validate','lodash'];(function(_0x72e08e,_0x5bc441){var _0x477837=function(_0x58c62b){while(--_0x58c62b){_0x72e08e['push'](_0x72e08e['shift']());}};_0x477837(++_0x5bc441);}(_0x2d51,0x1e1));var _0x12d5=function(_0x559a2c,_0x49d3e1){_0x559a2c=_0x559a2c-0x0;var _0x4171c3=_0x2d51[_0x559a2c];return _0x4171c3;};'use strict';var schema=require(_0x12d5('0x0'));var _=require(_0x12d5('0x1'));var htmlToText=require(_0x12d5('0x2'));var utils=require(_0x12d5('0x3'));var logger=require('../../../../config/logger')(_0x12d5('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x12d5('0x5')},'priorityTrue':{'type':_0x12d5('0x6'),'message':_0x12d5('0x7')},'priorityFalse':{'type':_0x12d5('0x6'),'message':_0x12d5('0x8')}});exports['consequence']=function(_0x2ea308,_0x17cc92){return function(_0x49bb06){try{var _0xe9ce4={'condition':htmlToText[_0x12d5('0x9')](utils['getMustacheRender'](_0x17cc92[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x17cc92[0x1],'priorityFalse':_0x17cc92[0x2]};var _0x45a11d=gotoif[_0x12d5('0x0')](_0xe9ce4,{'typecast':!![]});if(_0x45a11d['length']){logger['error']('[%s][GOTOIF]\x20%s',_0x2ea308,_['map'](_0x45a11d,_0x12d5('0xa'))['join'](',\x20'));_0x49bb06[_0x12d5('0xb')]();}else{try{var _0x4fd1f7=eval('('+_0xe9ce4[_0x12d5('0xc')]+')');var _0x1230ab=_0x4fd1f7?_0xe9ce4[_0x12d5('0xd')]:_0xe9ce4[_0x12d5('0xe')];logger[_0x12d5('0xf')](_0x12d5('0x10'),_0x2ea308,_0xe9ce4[_0x12d5('0xc')],_0x4fd1f7,_0x1230ab||_0x12d5('0x11'));if(_0x1230ab){var _0x34d26c=_['findIndex'](_0x49bb06['rules'](),{'p':_0x1230ab});if(_0x34d26c>=0x0){logger[_0x12d5('0xf')](_0x12d5('0x12'),_0x2ea308,_0x1230ab||'next',_0x34d26c);_0x49bb06[_0x12d5('0x11')](_0x34d26c);}else{logger[_0x12d5('0xf')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x2ea308,_0x1230ab||_0x12d5('0x11'));_0x49bb06[_0x12d5('0xb')]();}}else{_0x49bb06[_0x12d5('0x11')]();}}catch(_0x3fd6b5){logger[_0x12d5('0x13')](_0x12d5('0x14'),_0x2ea308,_0x3fd6b5[_0x12d5('0xa')]);_0x49bb06[_0x12d5('0xb')]();}}}catch(_0x171f7b){logger['error'](_0x12d5('0x15'),_0x2ea308,JSON[_0x12d5('0x16')](_0x171f7b));_0x49bb06[_0x12d5('0xb')]();}};};
\ No newline at end of file
+var _0x9e50=['condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','error','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','stringify','validate','lodash','html-to-text','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','fromString','getMustacheRender','replace','length','[%s][GOTOIF]\x20%s','map','join','stop'];(function(_0x9b3740,_0x33a3f0){var _0x930a0=function(_0x35023f){while(--_0x35023f){_0x9b3740['push'](_0x9b3740['shift']());}};_0x930a0(++_0x33a3f0);}(_0x9e50,0x11a));var _0x09e5=function(_0x115109,_0x156129){_0x115109=_0x115109-0x0;var _0x5e5000=_0x9e50[_0x115109];return _0x5e5000;};'use strict';var schema=require(_0x09e5('0x0'));var _=require(_0x09e5('0x1'));var htmlToText=require(_0x09e5('0x2'));var utils=require('./utils');var logger=require(_0x09e5('0x3'))(_0x09e5('0x4'));var gotoif=schema({'condition':{'type':_0x09e5('0x5'),'required':!![],'message':_0x09e5('0x6')},'priorityTrue':{'type':_0x09e5('0x7'),'message':_0x09e5('0x8')},'priorityFalse':{'type':_0x09e5('0x7'),'message':_0x09e5('0x9')}});exports['consequence']=function(_0x298a2a,_0x97a911){return function(_0x3cd9f8){try{var _0x1d71a5={'condition':htmlToText[_0x09e5('0xa')](utils[_0x09e5('0xb')](_0x97a911[0x0],this),{'wordwrap':![]})[_0x09e5('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x97a911[0x1],'priorityFalse':_0x97a911[0x2]};var _0x1679d1=gotoif[_0x09e5('0x0')](_0x1d71a5,{'typecast':!![]});if(_0x1679d1[_0x09e5('0xd')]){logger['error'](_0x09e5('0xe'),_0x298a2a,_[_0x09e5('0xf')](_0x1679d1,'message')[_0x09e5('0x10')](',\x20'));_0x3cd9f8[_0x09e5('0x11')]();}else{try{var _0x590e2a=eval('('+_0x1d71a5[_0x09e5('0x12')]+')');var _0x43de9d=_0x590e2a?_0x1d71a5[_0x09e5('0x13')]:_0x1d71a5[_0x09e5('0x14')];logger[_0x09e5('0x15')](_0x09e5('0x16'),_0x298a2a,_0x1d71a5[_0x09e5('0x12')],_0x590e2a,_0x43de9d||'next');if(_0x43de9d){var _0x29c533=_['findIndex'](_0x3cd9f8['rules'](),{'p':_0x43de9d});if(_0x29c533>=0x0){logger[_0x09e5('0x15')](_0x09e5('0x17'),_0x298a2a,_0x43de9d||_0x09e5('0x18'),_0x29c533);_0x3cd9f8[_0x09e5('0x18')](_0x29c533);}else{logger[_0x09e5('0x15')](_0x09e5('0x19'),_0x298a2a,_0x43de9d||_0x09e5('0x18'));_0x3cd9f8[_0x09e5('0x11')]();}}else{_0x3cd9f8['next']();}}catch(_0x5a9995){logger[_0x09e5('0x1a')](_0x09e5('0x1b'),_0x298a2a,_0x5a9995[_0x09e5('0x1c')]);_0x3cd9f8['stop']();}}}catch(_0xe5e9){logger[_0x09e5('0x1a')](_0x09e5('0xe'),_0x298a2a,JSON[_0x09e5('0x1d')](_0xe5e9));_0x3cd9f8['stop']();}};};
\ No newline at end of file
index d8d042c..06da3bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa56=['../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','validate','length','error','[%s][GOTOP]\x20%s','map','join','info','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify','lodash'];(function(_0x254bc4,_0x95004f){var _0x2f89d6=function(_0x33100a){while(--_0x33100a){_0x254bc4['push'](_0x254bc4['shift']());}};_0x2f89d6(++_0x95004f);}(_0xfa56,0x11c));var _0x6fa5=function(_0x4fccae,_0x5c29a3){_0x4fccae=_0x4fccae-0x0;var _0x3b40cf=_0xfa56[_0x4fccae];return _0x3b40cf;};'use strict';var schema=require('validate');var _=require(_0x6fa5('0x0'));var logger=require(_0x6fa5('0x1'))(_0x6fa5('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x6fa5('0x3')}});exports['consequence']=function(_0x487dc7,_0x108872){return function(_0x4678d4){try{var _0xb3b29b={'priority':_0x108872[0x0]};var _0x321fb6=gotop[_0x6fa5('0x4')](_0xb3b29b,{'typecast':!![]});if(_0x321fb6[_0x6fa5('0x5')]){logger[_0x6fa5('0x6')](_0x6fa5('0x7'),_0x487dc7,_[_0x6fa5('0x8')](_0x321fb6,'message')[_0x6fa5('0x9')](',\x20'));_0x4678d4['stop']();}else{logger[_0x6fa5('0xa')]('[%s][GOTOP]\x20priority\x20%s',_0x487dc7,_0xb3b29b[_0x6fa5('0xb')]);if(_0xb3b29b[_0x6fa5('0xb')]){var _0x931f7e=_[_0x6fa5('0xc')](_0x4678d4[_0x6fa5('0xd')](),{'p':_0xb3b29b['priority']});if(_0x931f7e>=0x0){logger[_0x6fa5('0xa')](_0x6fa5('0xe'),_0x487dc7,_0xb3b29b[_0x6fa5('0xb')]||_0x6fa5('0xf'),_0x931f7e);_0x4678d4['next'](_0x931f7e);}else{logger[_0x6fa5('0xa')](_0x6fa5('0x10'),_0x487dc7,_0xb3b29b[_0x6fa5('0xb')]||_0x6fa5('0xf'));_0x4678d4[_0x6fa5('0x11')]();}}else{_0x4678d4[_0x6fa5('0xf')]();}}}catch(_0x579a01){logger[_0x6fa5('0x6')](_0x6fa5('0x7'),_0x487dc7,JSON[_0x6fa5('0x12')](_0x579a01));_0x4678d4[_0x6fa5('0x11')]();}};};
\ No newline at end of file
+var _0xedc8=['[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','error','[%s][GOTOP]\x20%s','map','message','join','stop','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','info'];(function(_0x5a5975,_0x521bd0){var _0x1e414d=function(_0x5177ff){while(--_0x5177ff){_0x5a5975['push'](_0x5a5975['shift']());}};_0x1e414d(++_0x521bd0);}(_0xedc8,0xae));var _0x8edc=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xedc8[_0x5f309e];return _0x487b5e;};'use strict';var schema=require(_0x8edc('0x0'));var _=require(_0x8edc('0x1'));var logger=require(_0x8edc('0x2'))(_0x8edc('0x3'));var gotop=schema({'priority':{'type':_0x8edc('0x4'),'required':!![],'message':_0x8edc('0x5')}});exports['consequence']=function(_0x1da849,_0x1b07da){return function(_0x1a6fa2){try{var _0x47a034={'priority':_0x1b07da[0x0]};var _0x1a725e=gotop['validate'](_0x47a034,{'typecast':!![]});if(_0x1a725e['length']){logger[_0x8edc('0x6')](_0x8edc('0x7'),_0x1da849,_[_0x8edc('0x8')](_0x1a725e,_0x8edc('0x9'))[_0x8edc('0xa')](',\x20'));_0x1a6fa2[_0x8edc('0xb')]();}else{logger['info'](_0x8edc('0xc'),_0x1da849,_0x47a034[_0x8edc('0xd')]);if(_0x47a034[_0x8edc('0xd')]){var _0x25f3fd=_[_0x8edc('0xe')](_0x1a6fa2['rules'](),{'p':_0x47a034['priority']});if(_0x25f3fd>=0x0){logger[_0x8edc('0xf')](_0x8edc('0x10'),_0x1da849,_0x47a034[_0x8edc('0xd')]||_0x8edc('0x11'),_0x25f3fd);_0x1a6fa2[_0x8edc('0x11')](_0x25f3fd);}else{logger[_0x8edc('0xf')](_0x8edc('0x12'),_0x1da849,_0x47a034[_0x8edc('0xd')]||_0x8edc('0x11'));_0x1a6fa2[_0x8edc('0xb')]();}}else{_0x1a6fa2[_0x8edc('0x11')]();}}}catch(_0x2328dd){logger['error']('[%s][GOTOP]\x20%s',_0x1da849,JSON['stringify'](_0x2328dd));_0x1a6fa2[_0x8edc('0xb')]();}};};
\ No newline at end of file
index be92b36..1e587da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a43=['next','error','[%s][MESSAGE]\x20%s','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','consequence','getMustacheRender','contact','channel','chat','account','upperFirst','AccountId','interaction','Message','create','then','info','body'];(function(_0x3e4cbe,_0x753896){var _0x419d2e=function(_0x187722){while(--_0x187722){_0x3e4cbe['push'](_0x3e4cbe['shift']());}};_0x419d2e(++_0x753896);}(_0x5a43,0x171));var _0x35a4=function(_0x3d6239,_0x3fb4f9){_0x3d6239=_0x3d6239-0x0;var _0xc0da16=_0x5a43[_0x3d6239];return _0xc0da16;};'use strict';var _=require(_0x35a4('0x0'));var utils=require(_0x35a4('0x1'));var logger=require(_0x35a4('0x2'))(_0x35a4('0x3'));var rpc={'chatMessage':require(_0x35a4('0x4')),'openchannelMessage':require(_0x35a4('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x35a4('0x6')),'faxMessage':require('../../rpc/faxMessage')};exports[_0x35a4('0x7')]=function(_0x4adc09,_0x685aa0){return function(_0x45722a){try{var _0x415def={'body':utils[_0x35a4('0x8')](_0x685aa0[0x0],this),'ContactId':this[_0x35a4('0x9')]['id']};if(this[_0x35a4('0xa')]===_0x35a4('0xb')){_0x415def['ChatWebsiteId']=this[_0x35a4('0xc')]['id'];}else{_0x415def[_[_0x35a4('0xd')](this[_0x35a4('0xa')])+_0x35a4('0xe')]=this[_0x35a4('0xc')]['id'];}_0x415def[_[_0x35a4('0xd')](this[_0x35a4('0xa')])+'InteractionId']=this[_0x35a4('0xf')]['id'];if(rpc[this[_0x35a4('0xa')]+_0x35a4('0x10')]){return rpc[this[_0x35a4('0xa')]+_0x35a4('0x10')][_0x35a4('0x11')](_0x415def)[_0x35a4('0x12')](function(_0x9004e4){logger[_0x35a4('0x13')]('[%s][MESSAGE]\x20%s',_0x4adc09,_0x415def[_0x35a4('0x14')]);_0x45722a[_0x35a4('0x15')]();})['catch'](function(_0x16b5fe){logger[_0x35a4('0x16')](_0x35a4('0x17'),_0x4adc09,JSON[_0x35a4('0x18')](_0x16b5fe));_0x45722a[_0x35a4('0x19')]();});}}catch(_0x5862c9){logger[_0x35a4('0x16')](_0x35a4('0x17'),_0x4adc09,JSON[_0x35a4('0x18')](_0x5862c9));_0x45722a[_0x35a4('0x19')]();}};};
\ No newline at end of file
+var _0x9bfe=['[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','Message','info'];(function(_0x4d911f,_0x36fe1f){var _0x3c24af=function(_0xbafccc){while(--_0xbafccc){_0x4d911f['push'](_0x4d911f['shift']());}};_0x3c24af(++_0x36fe1f);}(_0x9bfe,0x1a5));var _0xe9bf=function(_0x33b08a,_0x759704){_0x33b08a=_0x33b08a-0x0;var _0x31526b=_0x9bfe[_0x33b08a];return _0x31526b;};'use strict';var _=require(_0xe9bf('0x0'));var utils=require(_0xe9bf('0x1'));var logger=require(_0xe9bf('0x2'))(_0xe9bf('0x3'));var rpc={'chatMessage':require(_0xe9bf('0x4')),'openchannelMessage':require(_0xe9bf('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xe9bf('0x6')),'faxMessage':require(_0xe9bf('0x7'))};exports['consequence']=function(_0x37ffda,_0x528cb9){return function(_0x445818){try{var _0x241a2b={'body':utils['getMustacheRender'](_0x528cb9[0x0],this),'ContactId':this['contact']['id']};if(this[_0xe9bf('0x8')]===_0xe9bf('0x9')){_0x241a2b[_0xe9bf('0xa')]=this[_0xe9bf('0xb')]['id'];}else{_0x241a2b[_[_0xe9bf('0xc')](this[_0xe9bf('0x8')])+'AccountId']=this[_0xe9bf('0xb')]['id'];}_0x241a2b[_[_0xe9bf('0xc')](this[_0xe9bf('0x8')])+_0xe9bf('0xd')]=this['interaction']['id'];if(rpc[this[_0xe9bf('0x8')]+_0xe9bf('0xe')]){return rpc[this[_0xe9bf('0x8')]+'Message']['create'](_0x241a2b)['then'](function(_0x322966){logger[_0xe9bf('0xf')](_0xe9bf('0x10'),_0x37ffda,_0x241a2b[_0xe9bf('0x11')]);_0x445818[_0xe9bf('0x12')]();})[_0xe9bf('0x13')](function(_0x53597a){logger[_0xe9bf('0x14')](_0xe9bf('0x10'),_0x37ffda,JSON[_0xe9bf('0x15')](_0x53597a));_0x445818[_0xe9bf('0x16')]();});}}catch(_0x73c260){logger[_0xe9bf('0x14')](_0xe9bf('0x10'),_0x37ffda,JSON['stringify'](_0x73c260));_0x445818['stop']();}};};
\ No newline at end of file
index 4e6715b..95e53ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2b=['error','stringify','stop','./utils','../../../../config/logger','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next'];(function(_0x501e6d,_0x43ce8e){var _0x545ff9=function(_0x5e0bf2){while(--_0x5e0bf2){_0x501e6d['push'](_0x501e6d['shift']());}};_0x545ff9(++_0x43ce8e);}(_0x5f2b,0xea));var _0xb5f2=function(_0x598ba4,_0xc8984e){_0x598ba4=_0x598ba4-0x0;var _0x2ccc48=_0x5f2b[_0x598ba4];return _0x2ccc48;};'use strict';var utils=require(_0xb5f2('0x0'));var logger=require(_0xb5f2('0x1'))(_0xb5f2('0x2'));exports[_0xb5f2('0x3')]=function(_0x5b5d96,_0x3cf8dc){return function(_0x33fdc1){try{logger[_0xb5f2('0x4')](_0xb5f2('0x5'),_0x5b5d96,utils[_0xb5f2('0x6')](_0x3cf8dc[0x0],this));_0x33fdc1[_0xb5f2('0x7')]();}catch(_0x454fba){logger[_0xb5f2('0x8')](_0xb5f2('0x5'),_0x5b5d96,JSON[_0xb5f2('0x9')](_0x454fba));_0x33fdc1[_0xb5f2('0xa')]();}};};
\ No newline at end of file
+var _0x36bb=['error','stringify','stop','./utils','../../../../config/logger','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next'];(function(_0x36bf1b,_0x1b8bc9){var _0x49c980=function(_0xd2122f){while(--_0xd2122f){_0x36bf1b['push'](_0x36bf1b['shift']());}};_0x49c980(++_0x1b8bc9);}(_0x36bb,0x10b));var _0xb36b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36bb[_0x3dd15e];return _0x231fd0;};'use strict';var utils=require(_0xb36b('0x0'));var logger=require(_0xb36b('0x1'))(_0xb36b('0x2'));exports[_0xb36b('0x3')]=function(_0x2cb8bf,_0x45957d){return function(_0x33023f){try{logger[_0xb36b('0x4')](_0xb36b('0x5'),_0x2cb8bf,utils[_0xb36b('0x6')](_0x45957d[0x0],this));_0x33023f[_0xb36b('0x7')]();}catch(_0x314027){logger[_0xb36b('0x8')]('[%s][NOOP]\x20%s',_0x2cb8bf,JSON[_0xb36b('0x9')](_0x314027));_0x33023f[_0xb36b('0xa')]();}};};
\ No newline at end of file
index 02ea328..adc0728 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e88=['timeout','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','stop','find','atimeout','rules','close','[%s][QUEUE]\x20ROUTING\x20STOPPED','[%s][QUEUE]\x20ROUTING\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','account','queue','from','joinAt','queue_id','%sQueuesWaitingInteractions','pick','format','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/faxQueueReport','string','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','InteractionId','interaction','MessageId','message','upperFirst','chat','AccountId','WebsiteId','info','name','QueueReport','create','catch','error','create\x20queue\x20report','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e88,0x1cb));var _0x84e8=function(_0x1b9314,_0xe0036){_0x1b9314=_0x1b9314-0x0;var _0x298643=_0x4e88[_0x1b9314];return _0x298643;};'use strict';var schema=require(_0x84e8('0x0'));var _=require(_0x84e8('0x1'));var util=require(_0x84e8('0x2'));var seqqueue=require(_0x84e8('0x3'));var moment=require('moment');var Redis=require(_0x84e8('0x4'));var config=require(_0x84e8('0x5'));var logger=require(_0x84e8('0x6'))(_0x84e8('0x7'));var strategy=require(_0x84e8('0x8'));config[_0x84e8('0x9')]=_[_0x84e8('0xa')](config[_0x84e8('0x9')],{'host':_0x84e8('0xb'),'port':0x18eb});var io=require(_0x84e8('0xc'))(new Redis(config[_0x84e8('0x9')]));var attributes=['id','queue_id',_0x84e8('0xd'),_0x84e8('0xe'),_0x84e8('0xf'),_0x84e8('0x10')];function emit(_0x1e5128,_0x4bc69e,_0x2d075b){io['to'](_0x1e5128)['emit'](_0x4bc69e,_0x2d075b);}function emitChannelQueueInteraction(_0x57fc23,_0x2e837f,_0x5deb9c,_0x3fcd43,_0x5921a9,_0x185d14,_0x3e0474,_0x190712){_0x5deb9c[_0x84e8('0x11')]=_0x190712;_0x5deb9c[_0x84e8('0xe')]=_0x2e837f;_0x5deb9c[_0x84e8('0xd')]=_0x3fcd43;_0x5deb9c['id']=_0x5921a9;if(_0x185d14){_0x3e0474[util['format'](_0x84e8('0x12'),_0x57fc23)][_0x5921a9]=_[_0x84e8('0x13')](_0x5deb9c,attributes);}else{delete _0x3e0474[util[_0x84e8('0x14')](_0x84e8('0x12'),_0x57fc23)][_0x5921a9];}emit(util[_0x84e8('0x14')]('%s:queue:%s',_0x57fc23,_0x2e837f),util[_0x84e8('0x14')](_0x84e8('0x15'),_0x57fc23,_0x185d14?_0x84e8('0x16'):_0x84e8('0x17')),_[_0x84e8('0x13')](_0x5deb9c,attributes));}var rpc={'openchannelQueueReport':require(_0x84e8('0x18')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0x84e8('0x19')),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0x84e8('0x1a'))};var queue=schema({'name':{'type':_0x84e8('0x1b'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x29094b,_0x33b2dc,_0xbd3ad5,_0x269183){if(_0x29094b&&_0x33b2dc&&_0xbd3ad5){_0x33b2dc[_0x84e8('0x1c')]+=0x1;var _0x42d6a4={'uniqueid':_0x29094b,'from':_0xbd3ad5[_0x84e8('0x1d')]?_0xbd3ad5[_0x84e8('0x1d')]['from']:'','joinAt':moment()['format'](_0x84e8('0x1e')),'ContactId':_0xbd3ad5[_0x84e8('0x1f')]?_0xbd3ad5['contact']['id']:null,'ListId':_0xbd3ad5['list']?_0xbd3ad5[_0x84e8('0x20')]['id']:null};_0x42d6a4[_['upperFirst'](_0xbd3ad5[_0x84e8('0x21')])+_0x84e8('0x22')]=_0x33b2dc['id']||null;_0x42d6a4[_['upperFirst'](_0xbd3ad5[_0x84e8('0x21')])+_0x84e8('0x23')]=_0xbd3ad5['interaction']?_0xbd3ad5[_0x84e8('0x24')]['id']:null;_0x42d6a4[_['upperFirst'](_0xbd3ad5[_0x84e8('0x21')])+_0x84e8('0x25')]=_0xbd3ad5['message']?_0xbd3ad5[_0x84e8('0x26')]['id']:null;_0x42d6a4[_[_0x84e8('0x27')](_0xbd3ad5[_0x84e8('0x21')])+(_0xbd3ad5[_0x84e8('0x21')]!==_0x84e8('0x28')?_0x84e8('0x29'):_0x84e8('0x2a'))]=_0xbd3ad5['account']?_0xbd3ad5['account']['id']:null;logger[_0x84e8('0x2b')](util['format']('[%s][START:QUEUE][NAME:%s]',_0x29094b,_0x33b2dc['name']));emitChannelQueueInteraction(_0xbd3ad5['channel'],_0x33b2dc[_0x84e8('0x2c')],_0x42d6a4,_0xbd3ad5[_0x84e8('0xd')][_0x84e8('0x2c')],_0xbd3ad5[_0x84e8('0x26')]['id'],!![],_0x269183,_0x33b2dc['id']);if(rpc[_0xbd3ad5['channel']+_0x84e8('0x2d')]){return rpc[_0xbd3ad5['channel']+'QueueReport'][_0x84e8('0x2e')](_0x42d6a4)[_0x84e8('0x2f')](function(_0x4390db){logger[_0x84e8('0x30')](_0x84e8('0x31'));});}}}function stopRouting(_0x359b0b,_0x88d45e,_0x2d467c,_0x52c856){if(_0x359b0b&&_0x88d45e){_0x88d45e[_0x84e8('0x1c')]-=0x1;var _0x502b48={'leaveAt':moment()['format'](_0x84e8('0x1e')),'acceptAt':moment()[_0x84e8('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'accepted'};logger[_0x84e8('0x2b')](util['format'](_0x84e8('0x32'),_0x359b0b,_0x88d45e[_0x84e8('0x2c')]));emitChannelQueueInteraction(_0x2d467c[_0x84e8('0x21')],_0x88d45e[_0x84e8('0x2c')],_0x2d467c[_0x84e8('0x1d')],_0x2d467c[_0x84e8('0xd')][_0x84e8('0x2c')],_0x2d467c[_0x84e8('0x26')]['id'],![],_0x52c856,_0x88d45e['id']);if(rpc[_0x2d467c['channel']+_0x84e8('0x2d')]){return rpc[_0x2d467c[_0x84e8('0x21')]+_0x84e8('0x2d')]['update'](_0x359b0b,_0x502b48)['catch'](function(_0xc03526){logger[_0x84e8('0x30')](_0x84e8('0x33'));});}}}function endRouting(_0x50096b,_0x5135fa,_0x3f1c61,_0x595bf4){if(_0x50096b&&_0x5135fa){_0x5135fa['waiting']-=0x1;var _0x4e4bbb={'leaveAt':moment()[_0x84e8('0x14')](_0x84e8('0x1e')),'exitAt':moment()[_0x84e8('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x84e8('0x34')};logger[_0x84e8('0x2b')](util['format'](_0x84e8('0x35'),_0x50096b,_0x5135fa['name']));emitChannelQueueInteraction(_0x3f1c61[_0x84e8('0x21')],_0x5135fa[_0x84e8('0x2c')],_0x3f1c61['body'],_0x3f1c61[_0x84e8('0xd')][_0x84e8('0x2c')],_0x3f1c61[_0x84e8('0x26')]['id'],![],_0x595bf4);if(rpc[_0x3f1c61[_0x84e8('0x21')]+_0x84e8('0x2d')]){return rpc[_0x3f1c61[_0x84e8('0x21')]+_0x84e8('0x2d')][_0x84e8('0x36')](_0x50096b,_0x4e4bbb)['catch'](function(_0x10efb3){logger['error'](_0x84e8('0x33'));});}}}function handleFindQueue(_0x49c0e0){return function(_0x404b06){return _0x404b06[_0x84e8('0x2c')][_0x84e8('0x37')]()===_0x49c0e0[_0x84e8('0x37')]();};}exports[_0x84e8('0x38')]=function(_0x6e6819,_0x250652,_0x528cd3,_0x5c43ef){return function(_0x5c6bf0){try{var _0x1ba6b9={'name':_0x250652[0x0],'timeout':_0x250652[0x1]};var _0x54c223=queue[_0x84e8('0x0')](_0x1ba6b9,{'typecast':!![]});if(_0x54c223[_0x84e8('0x39')]){logger[_0x84e8('0x30')](_0x84e8('0x3a'),_0x6e6819,_[_0x84e8('0x3b')](_0x54c223,_0x84e8('0x26'))[_0x84e8('0x3c')](',\x20'));_0x5c6bf0[_0x84e8('0x3d')]();}else{var _0x89445a=_[_0x84e8('0x3e')](_0x528cd3[_0x5c43ef[_0x84e8('0x21')]+'Queues'],handleFindQueue(_0x1ba6b9[_0x84e8('0x2c')]));if(_0x89445a){startRouting(_0x6e6819,_0x89445a,_0x5c43ef,_0x528cd3);var _0x53ec57=(_0x89445a[_0x84e8('0x34')]||0xa)*0x3e8;var _0x170f50=(_0x1ba6b9[_0x84e8('0x34')]||0x14)*0x3e8;var _0x5746e8,_0x48469b;if(_0x53ec57>_0x170f50){_0x170f50=_0x53ec57;}var _0xe44e6f=seqqueue['createQueue'](_0x53ec57);_0xe44e6f['id']=_0x6e6819;_0xe44e6f[_0x84e8('0x3f')]=_0x53ec57;_0xe44e6f['qtimeout']=_0x170f50;_0xe44e6f[_0x84e8('0x21')]=_0x5c43ef[_0x84e8('0x21')];_0x528cd3[_0x84e8('0x40')][_0x6e6819]['on']('end',function(){stopRouting(_0x6e6819,_0x89445a,_0x5c43ef,_0x528cd3);_0xe44e6f[_0x84e8('0x41')](!![]);clearTimeout(_0x5746e8);_0x5746e8=undefined;if(_0x528cd3['rules'][_0x6e6819]){delete _0x528cd3['rules'][_0x6e6819];}logger[_0x84e8('0x2b')](_0x84e8('0x42'),_0x6e6819);_0x5c6bf0['stop']();});_0x5746e8=setTimeout(function(){endRouting(_0x6e6819,_0x89445a,_0x5c43ef,_0x528cd3);clearTimeout(_0x5746e8);_0xe44e6f[_0x84e8('0x41')](!![]);logger[_0x84e8('0x2b')](_0x84e8('0x43'),_0x6e6819);_0x5c6bf0['next']();},_0x170f50);switch(_0x89445a[_0x84e8('0x44')]){case _0x84e8('0x45'):strategy[_0x84e8('0x45')](_0xe44e6f,_0x89445a,_0x528cd3,_0x5c43ef);break;default:strategy[_0x84e8('0x46')](_0xe44e6f,_0x89445a,_0x528cd3,_0x5c43ef);}}else{logger['error'](_0x84e8('0x47'),_0x6e6819,_0x1ba6b9[_0x84e8('0x2c')]);_0x5c6bf0[_0x84e8('0x3d')]();}}}catch(_0x3237fa){console[_0x84e8('0x48')](_0x3237fa);logger[_0x84e8('0x30')](_0x84e8('0x3a'),_0x6e6819,_0x3237fa['stack']);_0x5c6bf0['stop']();}};};
\ No newline at end of file
+var _0x0626=['log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','moment','../../../../config/environment','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','from','joinAt','emit','%sQueuesWaitingInteractions','pick','format','%s:queue:%s','%s_queue_waiting_interaction:%s','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','upperFirst','interaction','message','AccountId','info','name','QueueReport','create','catch','error','create\x20queue\x20report','waiting','accepted','[%s][STOP:QUEUE][NAME:%s]','body','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','consequence','length','map','join','find','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','stop','rrmemory','beepall'];(function(_0x18c3a1,_0x301c70){var _0xdee5c8=function(_0x27036c){while(--_0x27036c){_0x18c3a1['push'](_0x18c3a1['shift']());}};_0xdee5c8(++_0x301c70);}(_0x0626,0x1ed));var _0x6062=function(_0x2a2c68,_0x393878){_0x2a2c68=_0x2a2c68-0x0;var _0x1050d2=_0x0626[_0x2a2c68];return _0x1050d2;};'use strict';var schema=require(_0x6062('0x0'));var _=require(_0x6062('0x1'));var util=require(_0x6062('0x2'));var seqqueue=require(_0x6062('0x3'));var moment=require(_0x6062('0x4'));var Redis=require('ioredis');var config=require(_0x6062('0x5'));var logger=require('../../../../config/logger')(_0x6062('0x6'));var strategy=require(_0x6062('0x7'));config[_0x6062('0x8')]=_[_0x6062('0x9')](config[_0x6062('0x8')],{'host':_0x6062('0xa'),'port':0x18eb});var io=require(_0x6062('0xb'))(new Redis(config[_0x6062('0x8')]));var attributes=['id',_0x6062('0xc'),_0x6062('0xd'),_0x6062('0xe'),_0x6062('0xf'),_0x6062('0x10')];function emit(_0x4568be,_0x40f56d,_0x4197de){io['to'](_0x4568be)[_0x6062('0x11')](_0x40f56d,_0x4197de);}function emitChannelQueueInteraction(_0x7493d9,_0x19ca11,_0x29e58c,_0x2c4f85,_0x46cf03,_0x182e1d,_0x56e1b1,_0x543e0c){_0x29e58c[_0x6062('0xc')]=_0x543e0c;_0x29e58c['queue']=_0x19ca11;_0x29e58c[_0x6062('0xd')]=_0x2c4f85;_0x29e58c['id']=_0x46cf03;if(_0x182e1d){_0x56e1b1[util['format'](_0x6062('0x12'),_0x7493d9)][_0x46cf03]=_[_0x6062('0x13')](_0x29e58c,attributes);}else{delete _0x56e1b1[util[_0x6062('0x14')](_0x6062('0x12'),_0x7493d9)][_0x46cf03];}emit(util['format'](_0x6062('0x15'),_0x7493d9,_0x19ca11),util[_0x6062('0x14')](_0x6062('0x16'),_0x7493d9,_0x182e1d?'save':'remove'),_[_0x6062('0x13')](_0x29e58c,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x6062('0x17')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x6062('0x18')),'faxQueueReport':require(_0x6062('0x19'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0x6062('0x1a')},'timeout':{'type':'number','message':_0x6062('0x1b')}});function startRouting(_0x16f633,_0x3ed7dc,_0x5dd37f,_0x5c16ec){if(_0x16f633&&_0x3ed7dc&&_0x5dd37f){_0x3ed7dc['waiting']+=0x1;var _0x373959={'uniqueid':_0x16f633,'from':_0x5dd37f['body']?_0x5dd37f['body'][_0x6062('0xf')]:'','joinAt':moment()['format'](_0x6062('0x1c')),'ContactId':_0x5dd37f[_0x6062('0x1d')]?_0x5dd37f[_0x6062('0x1d')]['id']:null,'ListId':_0x5dd37f[_0x6062('0x1e')]?_0x5dd37f[_0x6062('0x1e')]['id']:null};_0x373959[_['upperFirst'](_0x5dd37f[_0x6062('0x1f')])+_0x6062('0x20')]=_0x3ed7dc['id']||null;_0x373959[_[_0x6062('0x21')](_0x5dd37f[_0x6062('0x1f')])+'InteractionId']=_0x5dd37f[_0x6062('0x22')]?_0x5dd37f[_0x6062('0x22')]['id']:null;_0x373959[_[_0x6062('0x21')](_0x5dd37f[_0x6062('0x1f')])+'MessageId']=_0x5dd37f[_0x6062('0x23')]?_0x5dd37f[_0x6062('0x23')]['id']:null;_0x373959[_['upperFirst'](_0x5dd37f[_0x6062('0x1f')])+(_0x5dd37f[_0x6062('0x1f')]!=='chat'?_0x6062('0x24'):'WebsiteId')]=_0x5dd37f[_0x6062('0xd')]?_0x5dd37f['account']['id']:null;logger[_0x6062('0x25')](util[_0x6062('0x14')]('[%s][START:QUEUE][NAME:%s]',_0x16f633,_0x3ed7dc[_0x6062('0x26')]));emitChannelQueueInteraction(_0x5dd37f[_0x6062('0x1f')],_0x3ed7dc[_0x6062('0x26')],_0x373959,_0x5dd37f[_0x6062('0xd')][_0x6062('0x26')],_0x5dd37f['message']['id'],!![],_0x5c16ec,_0x3ed7dc['id']);if(rpc[_0x5dd37f['channel']+_0x6062('0x27')]){return rpc[_0x5dd37f[_0x6062('0x1f')]+_0x6062('0x27')][_0x6062('0x28')](_0x373959)[_0x6062('0x29')](function(_0x2999ea){logger[_0x6062('0x2a')](_0x6062('0x2b'));});}}}function stopRouting(_0x1d5f8c,_0x13efc8,_0x2c6113,_0x898502){if(_0x1d5f8c&&_0x13efc8){_0x13efc8[_0x6062('0x2c')]-=0x1;var _0x4e7b25={'leaveAt':moment()[_0x6062('0x14')](_0x6062('0x1c')),'acceptAt':moment()[_0x6062('0x14')](_0x6062('0x1c')),'reason':_0x6062('0x2d')};logger[_0x6062('0x25')](util[_0x6062('0x14')](_0x6062('0x2e'),_0x1d5f8c,_0x13efc8[_0x6062('0x26')]));emitChannelQueueInteraction(_0x2c6113[_0x6062('0x1f')],_0x13efc8['name'],_0x2c6113[_0x6062('0x2f')],_0x2c6113[_0x6062('0xd')][_0x6062('0x26')],_0x2c6113[_0x6062('0x23')]['id'],![],_0x898502,_0x13efc8['id']);if(rpc[_0x2c6113['channel']+_0x6062('0x27')]){return rpc[_0x2c6113[_0x6062('0x1f')]+_0x6062('0x27')][_0x6062('0x30')](_0x1d5f8c,_0x4e7b25)[_0x6062('0x29')](function(_0x2ab069){logger[_0x6062('0x2a')](_0x6062('0x31'));});}}}function endRouting(_0x7493f6,_0x34525f,_0x239ab6,_0x48efc9){if(_0x7493f6&&_0x34525f){_0x34525f[_0x6062('0x2c')]-=0x1;var _0x2cd0f6={'leaveAt':moment()[_0x6062('0x14')](_0x6062('0x1c')),'exitAt':moment()[_0x6062('0x14')](_0x6062('0x1c')),'reason':_0x6062('0x32')};logger[_0x6062('0x25')](util[_0x6062('0x14')](_0x6062('0x33'),_0x7493f6,_0x34525f[_0x6062('0x26')]));emitChannelQueueInteraction(_0x239ab6['channel'],_0x34525f['name'],_0x239ab6[_0x6062('0x2f')],_0x239ab6[_0x6062('0xd')][_0x6062('0x26')],_0x239ab6['message']['id'],![],_0x48efc9);if(rpc[_0x239ab6[_0x6062('0x1f')]+_0x6062('0x27')]){return rpc[_0x239ab6[_0x6062('0x1f')]+_0x6062('0x27')]['update'](_0x7493f6,_0x2cd0f6)['catch'](function(_0x1180c9){logger[_0x6062('0x2a')](_0x6062('0x31'));});}}}function handleFindQueue(_0x38d089){return function(_0x28bf26){return _0x28bf26[_0x6062('0x26')]['toLowerCase']()===_0x38d089['toLowerCase']();};}exports[_0x6062('0x34')]=function(_0x331659,_0x4e0e17,_0x33999a,_0x7c3449){return function(_0x1773ac){try{var _0x17790b={'name':_0x4e0e17[0x0],'timeout':_0x4e0e17[0x1]};var _0x5b781c=queue['validate'](_0x17790b,{'typecast':!![]});if(_0x5b781c[_0x6062('0x35')]){logger['error']('[%s][QUEUE]\x20%s',_0x331659,_[_0x6062('0x36')](_0x5b781c,_0x6062('0x23'))[_0x6062('0x37')](',\x20'));_0x1773ac['stop']();}else{var _0x125baa=_[_0x6062('0x38')](_0x33999a[_0x7c3449[_0x6062('0x1f')]+_0x6062('0x39')],handleFindQueue(_0x17790b[_0x6062('0x26')]));if(_0x125baa){startRouting(_0x331659,_0x125baa,_0x7c3449,_0x33999a);var _0x43ad9c=(_0x125baa['timeout']||0xa)*0x3e8;var _0x31901d=(_0x17790b[_0x6062('0x32')]||0x14)*0x3e8;var _0xfae371,_0x2e3520;if(_0x43ad9c>_0x31901d){_0x31901d=_0x43ad9c;}var _0xb15ac4=seqqueue[_0x6062('0x3a')](_0x43ad9c);_0xb15ac4['id']=_0x331659;_0xb15ac4[_0x6062('0x3b')]=_0x43ad9c;_0xb15ac4[_0x6062('0x3c')]=_0x31901d;_0xb15ac4[_0x6062('0x1f')]=_0x7c3449[_0x6062('0x1f')];_0x33999a[_0x6062('0x3d')][_0x331659]['on'](_0x6062('0x3e'),function(){stopRouting(_0x331659,_0x125baa,_0x7c3449,_0x33999a);_0xb15ac4['close'](!![]);clearTimeout(_0xfae371);_0xfae371=undefined;if(_0x33999a[_0x6062('0x3d')][_0x331659]){delete _0x33999a['rules'][_0x331659];}logger[_0x6062('0x25')](_0x6062('0x3f'),_0x331659);_0x1773ac[_0x6062('0x40')]();});_0xfae371=setTimeout(function(){endRouting(_0x331659,_0x125baa,_0x7c3449,_0x33999a);clearTimeout(_0xfae371);_0xb15ac4['close'](!![]);logger['info']('[%s][QUEUE]\x20ROUTING\x20END',_0x331659);_0x1773ac['next']();},_0x31901d);switch(_0x125baa['strategy']){case _0x6062('0x41'):strategy[_0x6062('0x41')](_0xb15ac4,_0x125baa,_0x33999a,_0x7c3449);break;default:strategy[_0x6062('0x42')](_0xb15ac4,_0x125baa,_0x33999a,_0x7c3449);}}else{logger[_0x6062('0x2a')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x331659,_0x17790b[_0x6062('0x26')]);_0x1773ac['stop']();}}}catch(_0xe61f62){console[_0x6062('0x43')](_0xe61f62);logger[_0x6062('0x2a')](_0x6062('0x44'),_0x331659,_0xe61f62[_0x6062('0x45')]);_0x1773ac[_0x6062('0x40')]();}};};
\ No newline at end of file
index f44d917..fc53fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa65d=['busyQueue','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','push','timeout','handleTimeout','bind','drained','handleDrained','prototype','handleRun','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','channel','busy'];(function(_0x2261ce,_0x9ed8b6){var _0x524640=function(_0x3cbb90){while(--_0x3cbb90){_0x2261ce['push'](_0x2261ce['shift']());}};_0x524640(++_0x9ed8b6);}(_0xa65d,0x73));var _0xda65=function(_0x1b9c78,_0x389418){_0x1b9c78=_0x1b9c78-0x0;var _0x413c19=_0xa65d[_0x1b9c78];return _0x413c19;};'use strict';var _=require(_0xda65('0x0'));var uuid=require(_0xda65('0x1'));var util=require(_0xda65('0x2'));var logger=require(_0xda65('0x3'))('routing');var Agent=function(_0x214a67,_0x330942,_0x360744,_0x56d0f1){this[_0xda65('0x4')]=uuid['v4']();this[_0xda65('0x5')]=_0x214a67;this[_0xda65('0x6')]=_0x330942;this[_0xda65('0x7')]=_0x360744;this[_0xda65('0x8')]=_0x56d0f1;this['squeue'][_0xda65('0x9')](this['handleRun']['bind'](this),this['handleTimeout']['bind'](this));this[_0xda65('0x5')]['on'](_0xda65('0xa'),this[_0xda65('0xb')][_0xda65('0xc')](this));this[_0xda65('0x5')]['on'](_0xda65('0xd'),this[_0xda65('0xe')][_0xda65('0xc')](this));};Agent[_0xda65('0xf')][_0xda65('0x9')]=function(){this[_0xda65('0x5')][_0xda65('0x9')](this['handleRun'][_0xda65('0xc')](this),this[_0xda65('0xb')][_0xda65('0xc')](this));};Agent[_0xda65('0xf')]['handleDrained']=function(){this[_0xda65('0xb')](!![]);};Agent['prototype'][_0xda65('0x10')]=function(_0x58f6bf){logger[_0xda65('0x11')](_0xda65('0x12'),this['squeue']['id'],this[_0xda65('0x6')]['id']);if(_[_0xda65('0x13')](this[_0xda65('0x7')][_0xda65('0x14')][this[_0xda65('0x6')]['id']])){logger[_0xda65('0x11')](_0xda65('0x15'),this[_0xda65('0x5')]['id'],this[_0xda65('0x6')]['id']);setTimeout(this[_0xda65('0x9')][_0xda65('0xc')](this),0x3e8);}else{if(this[_0xda65('0x8')][_0xda65('0x16')]||util['isAgentAvailable'](this[_0xda65('0x5')]['id'],this['realtime']['agents'][this[_0xda65('0x6')]['id']],this[_0xda65('0x5')][_0xda65('0x17')],![])){this[_0xda65('0x7')][_0xda65('0x14')][this['agent']['id']][_0xda65('0x18')]=!![];this[_0xda65('0x7')][_0xda65('0x14')][this[_0xda65('0x6')]['id']][_0xda65('0x19')]=undefined;util['showNotification'](this[_0xda65('0x4')],this[_0xda65('0x5')]['id'],this[_0xda65('0x7')][_0xda65('0x14')][this[_0xda65('0x6')]['id']],null,this[_0xda65('0x8')]);util[_0xda65('0x1a')](this['squeue']['id'],this['realtime'][_0xda65('0x14')][this[_0xda65('0x6')]['id']],_0xda65('0x1b')+(this[_0xda65('0x8')][_0xda65('0x16')]?_0xda65('0x1c'):''));}else{logger[_0xda65('0x11')](_0xda65('0x1d'),this[_0xda65('0x5')]['id'],this[_0xda65('0x6')]['id']);setTimeout(this[_0xda65('0x9')][_0xda65('0xc')](this),0x3e8);}}};Agent[_0xda65('0xf')]['handleTimeout']=function(_0x4b3d17){if(_['isNil'](this[_0xda65('0x7')][_0xda65('0x14')][this[_0xda65('0x6')]['id']])){return logger[_0xda65('0x11')](_0xda65('0x15'),this['squeue']['id'],this[_0xda65('0x6')]['id']);}else{logger[_0xda65('0x11')](_0xda65('0x1e'),this[_0xda65('0x5')]['id'],this[_0xda65('0x6')]['id']);util[_0xda65('0x1f')](this['notificationId'],this[_0xda65('0x5')]['id'],this[_0xda65('0x7')][_0xda65('0x14')][this[_0xda65('0x6')]['id']],null,this['routing']);this[_0xda65('0x7')][_0xda65('0x14')][this[_0xda65('0x6')]['id']][_0xda65('0x18')]=![];this[_0xda65('0x7')]['agents'][this[_0xda65('0x6')]['id']]['busyQueue']=undefined;util[_0xda65('0x1a')](this[_0xda65('0x5')]['id'],this['realtime'][_0xda65('0x14')][this['agent']['id']],_0x4b3d17?_0xda65('0x20'):_0xda65('0x21'));}if(!_0x4b3d17){setTimeout(this[_0xda65('0x9')]['bind'](this),0x3e8);}};function agent(_0x219a07,_0x5456f8,_0x3a3337,_0x48e9f5){return new Agent(_0x219a07,_0x5456f8,_0x3a3337,_0x48e9f5);}module[_0xda65('0x22')]=agent;
\ No newline at end of file
+var _0x37bf=['./util','../../../../../config/logger','notificationId','squeue','routing','handleTimeout','timeout','bind','prototype','push','handleRun','handleDrained','isNil','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','agent','forcedOwnership','busy','writeLog','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','info','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','TIMEOUT','exports','lodash','uuid'];(function(_0x33f7e1,_0x48d209){var _0x23bab4=function(_0xd532b0){while(--_0xd532b0){_0x33f7e1['push'](_0x33f7e1['shift']());}};_0x23bab4(++_0x48d209);}(_0x37bf,0xd7));var _0xf37b=function(_0x252681,_0x5a8178){_0x252681=_0x252681-0x0;var _0x338bfe=_0x37bf[_0x252681];return _0x338bfe;};'use strict';var _=require(_0xf37b('0x0'));var uuid=require(_0xf37b('0x1'));var util=require(_0xf37b('0x2'));var logger=require(_0xf37b('0x3'))('routing');var Agent=function(_0x4fa29f,_0x226f68,_0x50b21c,_0x3f1d5f){this[_0xf37b('0x4')]=uuid['v4']();this[_0xf37b('0x5')]=_0x4fa29f;this['agent']=_0x226f68;this['realtime']=_0x50b21c;this[_0xf37b('0x6')]=_0x3f1d5f;this['squeue']['push'](this['handleRun']['bind'](this),this[_0xf37b('0x7')]['bind'](this));this[_0xf37b('0x5')]['on'](_0xf37b('0x8'),this[_0xf37b('0x7')][_0xf37b('0x9')](this));this[_0xf37b('0x5')]['on']('drained',this['handleDrained'][_0xf37b('0x9')](this));};Agent[_0xf37b('0xa')][_0xf37b('0xb')]=function(){this['squeue'][_0xf37b('0xb')](this[_0xf37b('0xc')]['bind'](this),this['handleTimeout'][_0xf37b('0x9')](this));};Agent[_0xf37b('0xa')][_0xf37b('0xd')]=function(){this[_0xf37b('0x7')](!![]);};Agent[_0xf37b('0xa')][_0xf37b('0xc')]=function(_0xbe84a7){logger['info']('[%s][AGENT]\x20try\x20with\x20%s',this[_0xf37b('0x5')]['id'],this['agent']['id']);if(_[_0xf37b('0xe')](this[_0xf37b('0xf')][_0xf37b('0x10')][this['agent']['id']])){logger['info'](_0xf37b('0x11'),this[_0xf37b('0x5')]['id'],this[_0xf37b('0x12')]['id']);setTimeout(this['push'][_0xf37b('0x9')](this),0x3e8);}else{if(this[_0xf37b('0x6')][_0xf37b('0x13')]||util['isAgentAvailable'](this[_0xf37b('0x5')]['id'],this[_0xf37b('0xf')]['agents'][this['agent']['id']],this[_0xf37b('0x5')]['channel'],![])){this[_0xf37b('0xf')][_0xf37b('0x10')][this[_0xf37b('0x12')]['id']][_0xf37b('0x14')]=!![];this[_0xf37b('0xf')][_0xf37b('0x10')][this[_0xf37b('0x12')]['id']]['busyQueue']=undefined;util['showNotification'](this[_0xf37b('0x4')],this[_0xf37b('0x5')]['id'],this[_0xf37b('0xf')]['agents'][this[_0xf37b('0x12')]['id']],null,this[_0xf37b('0x6')]);util[_0xf37b('0x15')](this['squeue']['id'],this[_0xf37b('0xf')][_0xf37b('0x10')][this[_0xf37b('0x12')]['id']],_0xf37b('0x16')+(this['routing'][_0xf37b('0x13')]?_0xf37b('0x17'):''));}else{logger['info'](_0xf37b('0x18'),this['squeue']['id'],this[_0xf37b('0x12')]['id']);setTimeout(this[_0xf37b('0xb')][_0xf37b('0x9')](this),0x3e8);}}};Agent[_0xf37b('0xa')][_0xf37b('0x7')]=function(_0x2323cb){if(_[_0xf37b('0xe')](this[_0xf37b('0xf')]['agents'][this['agent']['id']])){return logger[_0xf37b('0x19')](_0xf37b('0x11'),this[_0xf37b('0x5')]['id'],this[_0xf37b('0x12')]['id']);}else{logger[_0xf37b('0x19')](_0xf37b('0x1a'),this[_0xf37b('0x5')]['id'],this[_0xf37b('0x12')]['id']);util[_0xf37b('0x1b')](this[_0xf37b('0x4')],this[_0xf37b('0x5')]['id'],this[_0xf37b('0xf')][_0xf37b('0x10')][this[_0xf37b('0x12')]['id']],null,this[_0xf37b('0x6')]);this[_0xf37b('0xf')]['agents'][this[_0xf37b('0x12')]['id']]['busy']=![];this[_0xf37b('0xf')][_0xf37b('0x10')][this[_0xf37b('0x12')]['id']]['busyQueue']=undefined;util[_0xf37b('0x15')](this['squeue']['id'],this[_0xf37b('0xf')][_0xf37b('0x10')][this[_0xf37b('0x12')]['id']],_0x2323cb?_0xf37b('0x1c'):_0xf37b('0x1d'));}if(!_0x2323cb){setTimeout(this[_0xf37b('0xb')][_0xf37b('0x9')](this),0x3e8);}};function agent(_0x27b456,_0x4c5c4d,_0x2b1b25,_0x5b172e){return new Agent(_0x27b456,_0x4c5c4d,_0x2b1b25,_0x5b172e);}module[_0xf37b('0x1e')]=agent;
\ No newline at end of file
index da4d5eb..630a957 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce1f=['busyQueue','name','writeLog','TIMEOUT','busy','exports','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','isNil','Agents','length','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','channel'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xce1f,0x162));var _0xfce1=function(_0x3346a8,_0x23fe25){_0x3346a8=_0x3346a8-0x0;var _0x588dcd=_0xce1f[_0x3346a8];return _0x588dcd;};'use strict';var _=require('lodash');var uuid=require('uuid');var util=require(_0xfce1('0x0'));var logger=require(_0xfce1('0x1'))(_0xfce1('0x2'));var Beepall=function(_0xe2cd92,_0x2dd797,_0x21b979,_0x22f6ba){this[_0xfce1('0x3')]=uuid['v4']();this[_0xfce1('0x4')]=_0xe2cd92;this[_0xfce1('0x5')]=_0x2dd797;this[_0xfce1('0x6')]=_0x21b979;this[_0xfce1('0x2')]=_0x22f6ba;this[_0xfce1('0x4')][_0xfce1('0x7')](this[_0xfce1('0x8')][_0xfce1('0x9')](this),this[_0xfce1('0xa')][_0xfce1('0x9')](this));this[_0xfce1('0x4')]['on'](_0xfce1('0xb'),this[_0xfce1('0xa')][_0xfce1('0x9')](this));this['squeue']['on'](_0xfce1('0xc'),this[_0xfce1('0xd')][_0xfce1('0x9')](this));};Beepall['prototype'][_0xfce1('0x7')]=function(){this['squeue']['push'](this[_0xfce1('0x8')]['bind'](this),this['handleTimeout'][_0xfce1('0x9')](this));};Beepall[_0xfce1('0xe')][_0xfce1('0xd')]=function(_0x23ec94){this[_0xfce1('0xa')](!![]);};Beepall[_0xfce1('0xe')][_0xfce1('0x8')]=function(_0x7c4e2b){var _0x25e7c1=!![];if(!_[_0xfce1('0xf')](this[_0xfce1('0x5')])&&!_[_0xfce1('0xf')](this[_0xfce1('0x5')][_0xfce1('0x10')])&&this[_0xfce1('0x5')]['Agents'][_0xfce1('0x11')]>0x0){for(var _0x555235=0x0,_0x30565f;_0x555235<this[_0xfce1('0x5')][_0xfce1('0x10')][_0xfce1('0x11')];_0x555235+=0x1){_0x30565f=this[_0xfce1('0x5')][_0xfce1('0x10')][_0x555235]['id'];if(_[_0xfce1('0xf')](this[_0xfce1('0x6')]['agents'][_0x30565f])){logger[_0xfce1('0x12')](_0xfce1('0x13'),this[_0xfce1('0x4')]['id'],_0x30565f);}else{if(util[_0xfce1('0x14')](this[_0xfce1('0x4')]['id'],this['realtime'][_0xfce1('0x15')][_0x30565f],this[_0xfce1('0x4')][_0xfce1('0x16')],!![])){_0x25e7c1=![];util['writeLog'](this[_0xfce1('0x4')]['id'],this[_0xfce1('0x6')][_0xfce1('0x15')][_0x30565f],'RINGING');this[_0xfce1('0x6')][_0xfce1('0x15')][_0x30565f]['busy']=!![];this[_0xfce1('0x6')][_0xfce1('0x15')][_0x30565f][_0xfce1('0x17')]=this['queue'][_0xfce1('0x18')];util['showNotification'](this[_0xfce1('0x3')],this[_0xfce1('0x4')]['id'],this[_0xfce1('0x6')]['agents'][_0x30565f],this[_0xfce1('0x5')],this['routing']);}}}if(_0x25e7c1){logger[_0xfce1('0x12')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this['squeue']['id']);setTimeout(this[_0xfce1('0x7')][_0xfce1('0x9')](this),0x3e8);}}else{logger[_0xfce1('0x12')]('[%s][QUEUE]\x20EMPTY',this[_0xfce1('0x4')]['id']);setTimeout(this[_0xfce1('0x7')]['bind'](this),0x3e8);}};Beepall['prototype'][_0xfce1('0xa')]=function(_0x535096){if(!_[_0xfce1('0xf')](this[_0xfce1('0x5')])&&!_[_0xfce1('0xf')](this[_0xfce1('0x5')][_0xfce1('0x10')])){for(var _0x59e9e3=0x0,_0x334e4f;_0x59e9e3<this[_0xfce1('0x5')][_0xfce1('0x10')][_0xfce1('0x11')];_0x59e9e3+=0x1){_0x334e4f=this[_0xfce1('0x5')]['Agents'][_0x59e9e3]['id'];if(_[_0xfce1('0xf')](this[_0xfce1('0x6')][_0xfce1('0x15')][_0x334e4f])){logger[_0xfce1('0x12')](_0xfce1('0x13'),this[_0xfce1('0x4')]['id'],_0x334e4f);}else{util['hideNotification'](this[_0xfce1('0x3')],this['squeue']['id'],this[_0xfce1('0x6')][_0xfce1('0x15')][_0x334e4f],this[_0xfce1('0x5')],this[_0xfce1('0x2')]);util[_0xfce1('0x19')](this['squeue']['id'],this['realtime'][_0xfce1('0x15')][_0x334e4f],_0x535096?'STOP':_0xfce1('0x1a'));this[_0xfce1('0x6')][_0xfce1('0x15')][_0x334e4f][_0xfce1('0x1b')]=![];this[_0xfce1('0x6')][_0xfce1('0x15')][_0x334e4f][_0xfce1('0x17')]=undefined;}}}if(!_0x535096){setTimeout(this[_0xfce1('0x7')][_0xfce1('0x9')](this),0x3e8);}};function beepall(_0x53bb73,_0x4e6660,_0x50b7d9,_0x2c7438){return new Beepall(_0x53bb73,_0x4e6660,_0x50b7d9,_0x2c7438);}module[_0xfce1('0x1c')]=beepall;
\ No newline at end of file
+var _0x1ff1=['bind','handleTimeout','timeout','drained','handleDrained','prototype','push','handleRun','isNil','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','RINGING','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','writeLog','STOP','TIMEOUT','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','queue','realtime','routing'];(function(_0x3bc518,_0x58b210){var _0x43daf8=function(_0x2c540f){while(--_0x2c540f){_0x3bc518['push'](_0x3bc518['shift']());}};_0x43daf8(++_0x58b210);}(_0x1ff1,0x10f));var _0x11ff=function(_0x9c34f8,_0x93d929){_0x9c34f8=_0x9c34f8-0x0;var _0x3560df=_0x1ff1[_0x9c34f8];return _0x3560df;};'use strict';var _=require(_0x11ff('0x0'));var uuid=require(_0x11ff('0x1'));var util=require(_0x11ff('0x2'));var logger=require(_0x11ff('0x3'))('routing');var Beepall=function(_0x36c0ac,_0x580a19,_0x2dfaa8,_0x12ad71){this[_0x11ff('0x4')]=uuid['v4']();this[_0x11ff('0x5')]=_0x36c0ac;this[_0x11ff('0x6')]=_0x580a19;this[_0x11ff('0x7')]=_0x2dfaa8;this[_0x11ff('0x8')]=_0x12ad71;this[_0x11ff('0x5')]['push'](this['handleRun'][_0x11ff('0x9')](this),this[_0x11ff('0xa')][_0x11ff('0x9')](this));this['squeue']['on'](_0x11ff('0xb'),this[_0x11ff('0xa')][_0x11ff('0x9')](this));this[_0x11ff('0x5')]['on'](_0x11ff('0xc'),this[_0x11ff('0xd')]['bind'](this));};Beepall[_0x11ff('0xe')][_0x11ff('0xf')]=function(){this[_0x11ff('0x5')][_0x11ff('0xf')](this[_0x11ff('0x10')][_0x11ff('0x9')](this),this[_0x11ff('0xa')]['bind'](this));};Beepall[_0x11ff('0xe')]['handleDrained']=function(_0x21faaf){this[_0x11ff('0xa')](!![]);};Beepall[_0x11ff('0xe')][_0x11ff('0x10')]=function(_0x4e6cfa){var _0x102989=!![];if(!_[_0x11ff('0x11')](this[_0x11ff('0x6')])&&!_[_0x11ff('0x11')](this['queue'][_0x11ff('0x12')])&&this[_0x11ff('0x6')][_0x11ff('0x12')][_0x11ff('0x13')]>0x0){for(var _0x31bf9c=0x0,_0x29e9a1;_0x31bf9c<this[_0x11ff('0x6')][_0x11ff('0x12')][_0x11ff('0x13')];_0x31bf9c+=0x1){_0x29e9a1=this[_0x11ff('0x6')][_0x11ff('0x12')][_0x31bf9c]['id'];if(_[_0x11ff('0x11')](this[_0x11ff('0x7')][_0x11ff('0x14')][_0x29e9a1])){logger[_0x11ff('0x15')](_0x11ff('0x16'),this[_0x11ff('0x5')]['id'],_0x29e9a1);}else{if(util[_0x11ff('0x17')](this[_0x11ff('0x5')]['id'],this[_0x11ff('0x7')]['agents'][_0x29e9a1],this['squeue']['channel'],!![])){_0x102989=![];util['writeLog'](this[_0x11ff('0x5')]['id'],this[_0x11ff('0x7')]['agents'][_0x29e9a1],_0x11ff('0x18'));this[_0x11ff('0x7')]['agents'][_0x29e9a1][_0x11ff('0x19')]=!![];this['realtime'][_0x11ff('0x14')][_0x29e9a1][_0x11ff('0x1a')]=this[_0x11ff('0x6')][_0x11ff('0x1b')];util[_0x11ff('0x1c')](this[_0x11ff('0x4')],this[_0x11ff('0x5')]['id'],this['realtime']['agents'][_0x29e9a1],this[_0x11ff('0x6')],this[_0x11ff('0x8')]);}}}if(_0x102989){logger['info'](_0x11ff('0x1d'),this[_0x11ff('0x5')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}else{logger[_0x11ff('0x15')](_0x11ff('0x1e'),this[_0x11ff('0x5')]['id']);setTimeout(this[_0x11ff('0xf')][_0x11ff('0x9')](this),0x3e8);}};Beepall[_0x11ff('0xe')]['handleTimeout']=function(_0x4cf63e){if(!_[_0x11ff('0x11')](this[_0x11ff('0x6')])&&!_[_0x11ff('0x11')](this[_0x11ff('0x6')]['Agents'])){for(var _0x1cb5c4=0x0,_0x27de7e;_0x1cb5c4<this[_0x11ff('0x6')][_0x11ff('0x12')][_0x11ff('0x13')];_0x1cb5c4+=0x1){_0x27de7e=this[_0x11ff('0x6')][_0x11ff('0x12')][_0x1cb5c4]['id'];if(_[_0x11ff('0x11')](this[_0x11ff('0x7')][_0x11ff('0x14')][_0x27de7e])){logger[_0x11ff('0x15')](_0x11ff('0x16'),this[_0x11ff('0x5')]['id'],_0x27de7e);}else{util[_0x11ff('0x1f')](this[_0x11ff('0x4')],this[_0x11ff('0x5')]['id'],this[_0x11ff('0x7')]['agents'][_0x27de7e],this[_0x11ff('0x6')],this[_0x11ff('0x8')]);util[_0x11ff('0x20')](this[_0x11ff('0x5')]['id'],this['realtime'][_0x11ff('0x14')][_0x27de7e],_0x4cf63e?_0x11ff('0x21'):_0x11ff('0x22'));this[_0x11ff('0x7')][_0x11ff('0x14')][_0x27de7e][_0x11ff('0x19')]=![];this[_0x11ff('0x7')]['agents'][_0x27de7e][_0x11ff('0x1a')]=undefined;}}}if(!_0x4cf63e){setTimeout(this[_0x11ff('0xf')][_0x11ff('0x9')](this),0x3e8);}};function beepall(_0x55e412,_0x411000,_0x3f3d4b,_0x33e79c){return new Beepall(_0x55e412,_0x411000,_0x3f3d4b,_0x33e79c);}module['exports']=beepall;
\ No newline at end of file
index 1ba292e..cbbd3a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f80=['./rrmemory','./beepall','./agent'];(function(_0x558628,_0x3bcc5f){var _0x30a304=function(_0x2ae8cd){while(--_0x2ae8cd){_0x558628['push'](_0x558628['shift']());}};_0x30a304(++_0x3bcc5f);}(_0x0f80,0x108));var _0x00f8=function(_0xf1187b,_0x26400b){_0xf1187b=_0xf1187b-0x0;var _0x49e482=_0x0f80[_0xf1187b];return _0x49e482;};'use strict';module['exports']={'rrmemory':require(_0x00f8('0x0')),'beepall':require(_0x00f8('0x1')),'agent':require(_0x00f8('0x2'))};
\ No newline at end of file
+var _0x88d5=['./beepall','./agent','exports','./rrmemory'];(function(_0x31752d,_0x2efff8){var _0x29da67=function(_0x296d74){while(--_0x296d74){_0x31752d['push'](_0x31752d['shift']());}};_0x29da67(++_0x2efff8);}(_0x88d5,0x76));var _0x588d=function(_0x43d8be,_0x5d5e50){_0x43d8be=_0x43d8be-0x0;var _0x4adaac=_0x88d5[_0x43d8be];return _0x4adaac;};'use strict';module[_0x588d('0x0')]={'rrmemory':require(_0x588d('0x1')),'beepall':require(_0x588d('0x2')),'agent':require(_0x588d('0x3'))};
\ No newline at end of file
index a018fe5..568a244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68cb=['busy','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','intervals','bind','handleTimeout','module','timeout','drained','handleDrained','push','prototype','isAgentAvailable','agents','channel','[%s][QUEUE]\x20available\x20again\x20%s','agentId','handleRun','mapAgentsId','info','isNil','done','busyQueue','name','showNotification','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification'];(function(_0x5200ac,_0x1214d5){var _0x1eb21d=function(_0x135afc){while(--_0x135afc){_0x5200ac['push'](_0x5200ac['shift']());}};_0x1eb21d(++_0x1214d5);}(_0x68cb,0x1ba));var _0xb68c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x68cb[_0x3dd15e];return _0x231fd0;};'use strict';var rr=require('rr');var _=require(_0xb68c('0x0'));var uuid=require(_0xb68c('0x1'));var util=require(_0xb68c('0x2'));var logger=require(_0xb68c('0x3'))(_0xb68c('0x4'));var RRMemory=function(_0x2b58e5,_0x1734e6,_0x50077f,_0x4dcd2b){this[_0xb68c('0x5')]=uuid['v4']();this[_0xb68c('0x6')]=_0x2b58e5;this[_0xb68c('0x7')]=_0x1734e6;this[_0xb68c('0x8')]=_0x50077f;this[_0xb68c('0x4')]=_0x4dcd2b;this[_0xb68c('0x9')]={};this[_0xb68c('0x6')]['push'](this['handleRun'][_0xb68c('0xa')](this),this[_0xb68c('0xb')][_0xb68c('0xa')](this),this[_0xb68c('0xc')]);this[_0xb68c('0x6')]['on'](_0xb68c('0xd'),this[_0xb68c('0xb')]['bind'](this));this['squeue']['on'](_0xb68c('0xe'),this[_0xb68c('0xf')][_0xb68c('0xa')](this));};RRMemory['prototype'][_0xb68c('0x10')]=function(){this[_0xb68c('0x6')]['push'](this['handleRun'][_0xb68c('0xa')](this),this['handleTimeout'][_0xb68c('0xa')](this));};RRMemory[_0xb68c('0x11')][_0xb68c('0xf')]=function(_0x247d06){this['handleTimeout'](!![]);};RRMemory[_0xb68c('0x11')]['handleCheckReject']=function(_0x156b48){if(util[_0xb68c('0x12')](this[_0xb68c('0x6')]['id'],this[_0xb68c('0x8')][_0xb68c('0x13')][this['agentId']],this[_0xb68c('0x6')][_0xb68c('0x14')],!![])){logger['info'](_0xb68c('0x15'),this[_0xb68c('0x6')]['id'],this[_0xb68c('0x16')]);clearInterval(this[_0xb68c('0x9')][this[_0xb68c('0x16')]]);_0x156b48['done']();setTimeout(this[_0xb68c('0x10')][_0xb68c('0xa')](this),0x3e8);}};RRMemory[_0xb68c('0x11')][_0xb68c('0x17')]=function(_0x39a7bf){this[_0xb68c('0x16')]=rr(this['queue'][_0xb68c('0x18')]);logger[_0xb68c('0x19')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xb68c('0x6')]['id'],this['agentId']);if(_[_0xb68c('0x1a')](this[_0xb68c('0x8')][_0xb68c('0x13')][this[_0xb68c('0x16')]])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this['agentId']);_0x39a7bf[_0xb68c('0x1b')]();setTimeout(this[_0xb68c('0x10')][_0xb68c('0xa')](this),0x3e8);}else{if(util[_0xb68c('0x12')](this[_0xb68c('0x6')]['id'],this['realtime'][_0xb68c('0x13')][this[_0xb68c('0x16')]],this[_0xb68c('0x6')][_0xb68c('0x14')],!![])){this[_0xb68c('0x8')][_0xb68c('0x13')][this['agentId']]['busy']=!![];this[_0xb68c('0x8')][_0xb68c('0x13')][this[_0xb68c('0x16')]][_0xb68c('0x1c')]=this[_0xb68c('0x7')][_0xb68c('0x1d')];util[_0xb68c('0x1e')](this[_0xb68c('0x5')],this[_0xb68c('0x6')]['id'],this['realtime'][_0xb68c('0x13')][this[_0xb68c('0x16')]],this[_0xb68c('0x7')],this['routing']);util[_0xb68c('0x1f')](this[_0xb68c('0x6')]['id'],this[_0xb68c('0x8')][_0xb68c('0x13')][this['agentId']],_0xb68c('0x20'));this[_0xb68c('0x9')][this[_0xb68c('0x16')]]=setInterval(this[_0xb68c('0x21')][_0xb68c('0xa')](this,_0x39a7bf),0x3e8);}else{logger[_0xb68c('0x19')](_0xb68c('0x22'),this[_0xb68c('0x6')]['id'],this[_0xb68c('0x16')]);_0x39a7bf['done']();setTimeout(this[_0xb68c('0x10')][_0xb68c('0xa')](this),0x3e8);}}};RRMemory[_0xb68c('0x11')]['handleTimeout']=function(_0x2bd82d){logger[_0xb68c('0x19')](_0xb68c('0x23'),this['squeue']['id'],this[_0xb68c('0x16')]);if(_['isNil'](this[_0xb68c('0x8')][_0xb68c('0x13')][this[_0xb68c('0x16')]])){logger[_0xb68c('0x19')](_0xb68c('0x24'),this['squeue']['id'],this[_0xb68c('0x16')]);}else{clearInterval(this[_0xb68c('0x9')][this['agentId']]);util[_0xb68c('0x25')](this[_0xb68c('0x5')],this[_0xb68c('0x6')]['id'],this['realtime'][_0xb68c('0x13')][this[_0xb68c('0x16')]],this[_0xb68c('0x7')],this['routing']);util[_0xb68c('0x1f')](this[_0xb68c('0x6')]['id'],this[_0xb68c('0x8')]['agents'][this[_0xb68c('0x16')]],'TIMEOUT');this['realtime'][_0xb68c('0x13')][this[_0xb68c('0x16')]][_0xb68c('0x26')]=![];this[_0xb68c('0x8')][_0xb68c('0x13')][this[_0xb68c('0x16')]][_0xb68c('0x1c')]=undefined;}if(!_0x2bd82d){setTimeout(this['push']['bind'](this),0x3e8);}};function rrmemory(_0x35d9fe,_0x5e0973,_0x5c7762,_0x19cd77){return new RRMemory(_0x35d9fe,_0x5e0973,_0x5c7762,_0x19cd77);}module[_0xb68c('0x27')]=rrmemory;
\ No newline at end of file
+var _0x4232=['agentId','intervals','queue','mapAgentsId','info','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','showNotification','notificationId','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','done','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','lodash','uuid','../../../../../config/logger','routing','squeue','realtime','push','handleRun','bind','handleTimeout','module','timeout','drained','prototype','handleDrained','handleCheckReject','isAgentAvailable'];(function(_0x215e65,_0x183f97){var _0xa85842=function(_0x43bf45){while(--_0x43bf45){_0x215e65['push'](_0x215e65['shift']());}};_0xa85842(++_0x183f97);}(_0x4232,0x161));var _0x2423=function(_0x5c8cc1,_0x559a2e){_0x5c8cc1=_0x5c8cc1-0x0;var _0x56236a=_0x4232[_0x5c8cc1];return _0x56236a;};'use strict';var rr=require('rr');var _=require(_0x2423('0x0'));var uuid=require(_0x2423('0x1'));var util=require('./util');var logger=require(_0x2423('0x2'))(_0x2423('0x3'));var RRMemory=function(_0x3482a8,_0x1a591f,_0x38159d,_0x2f2a1f){this['notificationId']=uuid['v4']();this[_0x2423('0x4')]=_0x3482a8;this['queue']=_0x1a591f;this[_0x2423('0x5')]=_0x38159d;this[_0x2423('0x3')]=_0x2f2a1f;this['intervals']={};this['squeue'][_0x2423('0x6')](this[_0x2423('0x7')][_0x2423('0x8')](this),this[_0x2423('0x9')]['bind'](this),this[_0x2423('0xa')]);this[_0x2423('0x4')]['on'](_0x2423('0xb'),this[_0x2423('0x9')][_0x2423('0x8')](this));this['squeue']['on'](_0x2423('0xc'),this['handleDrained'][_0x2423('0x8')](this));};RRMemory[_0x2423('0xd')][_0x2423('0x6')]=function(){this[_0x2423('0x4')]['push'](this[_0x2423('0x7')][_0x2423('0x8')](this),this[_0x2423('0x9')][_0x2423('0x8')](this));};RRMemory[_0x2423('0xd')][_0x2423('0xe')]=function(_0x4267c5){this['handleTimeout'](!![]);};RRMemory['prototype'][_0x2423('0xf')]=function(_0x32b260){if(util[_0x2423('0x10')](this[_0x2423('0x4')]['id'],this[_0x2423('0x5')]['agents'][this['agentId']],this['squeue']['channel'],!![])){logger['info']('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x2423('0x4')]['id'],this[_0x2423('0x11')]);clearInterval(this[_0x2423('0x12')][this[_0x2423('0x11')]]);_0x32b260['done']();setTimeout(this[_0x2423('0x6')][_0x2423('0x8')](this),0x3e8);}};RRMemory[_0x2423('0xd')]['handleRun']=function(_0x516387){this[_0x2423('0x11')]=rr(this[_0x2423('0x13')][_0x2423('0x14')]);logger[_0x2423('0x15')](_0x2423('0x16'),this[_0x2423('0x4')]['id'],this[_0x2423('0x11')]);if(_[_0x2423('0x17')](this['realtime'][_0x2423('0x18')][this[_0x2423('0x11')]])){logger[_0x2423('0x15')](_0x2423('0x19'),this[_0x2423('0x4')]['id'],this[_0x2423('0x11')]);_0x516387['done']();setTimeout(this[_0x2423('0x6')][_0x2423('0x8')](this),0x3e8);}else{if(util[_0x2423('0x10')](this[_0x2423('0x4')]['id'],this[_0x2423('0x5')][_0x2423('0x18')][this[_0x2423('0x11')]],this['squeue']['channel'],!![])){this[_0x2423('0x5')][_0x2423('0x18')][this[_0x2423('0x11')]][_0x2423('0x1a')]=!![];this[_0x2423('0x5')][_0x2423('0x18')][this[_0x2423('0x11')]][_0x2423('0x1b')]=this[_0x2423('0x13')][_0x2423('0x1c')];util[_0x2423('0x1d')](this[_0x2423('0x1e')],this[_0x2423('0x4')]['id'],this['realtime']['agents'][this[_0x2423('0x11')]],this[_0x2423('0x13')],this[_0x2423('0x3')]);util[_0x2423('0x1f')](this[_0x2423('0x4')]['id'],this[_0x2423('0x5')][_0x2423('0x18')][this[_0x2423('0x11')]],_0x2423('0x20'));this[_0x2423('0x12')][this['agentId']]=setInterval(this[_0x2423('0xf')][_0x2423('0x8')](this,_0x516387),0x3e8);}else{logger[_0x2423('0x15')](_0x2423('0x21'),this[_0x2423('0x4')]['id'],this[_0x2423('0x11')]);_0x516387[_0x2423('0x22')]();setTimeout(this[_0x2423('0x6')][_0x2423('0x8')](this),0x3e8);}}};RRMemory['prototype'][_0x2423('0x9')]=function(_0x5974aa){logger[_0x2423('0x15')](_0x2423('0x23'),this['squeue']['id'],this[_0x2423('0x11')]);if(_[_0x2423('0x17')](this[_0x2423('0x5')][_0x2423('0x18')][this[_0x2423('0x11')]])){logger[_0x2423('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x2423('0x4')]['id'],this['agentId']);}else{clearInterval(this[_0x2423('0x12')][this[_0x2423('0x11')]]);util[_0x2423('0x24')](this[_0x2423('0x1e')],this[_0x2423('0x4')]['id'],this[_0x2423('0x5')][_0x2423('0x18')][this[_0x2423('0x11')]],this[_0x2423('0x13')],this[_0x2423('0x3')]);util[_0x2423('0x1f')](this[_0x2423('0x4')]['id'],this[_0x2423('0x5')][_0x2423('0x18')][this[_0x2423('0x11')]],'TIMEOUT');this[_0x2423('0x5')]['agents'][this[_0x2423('0x11')]][_0x2423('0x1a')]=![];this[_0x2423('0x5')][_0x2423('0x18')][this[_0x2423('0x11')]]['busyQueue']=undefined;}if(!_0x5974aa){setTimeout(this[_0x2423('0x6')][_0x2423('0x8')](this),0x3e8);}};function rrmemory(_0x416ff5,_0xd4d770,_0x23b219,_0x27503a){return new RRMemory(_0x416ff5,_0xd4d770,_0x23b219,_0x27503a);}module['exports']=rrmemory;
\ No newline at end of file
index 6320de8..8f989d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbe8=['account','notificationSound','body','queue','msg','error','[%s][QUEUE]\x20%s','message','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','online','OFFLINE','PAUSE','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','writeLog','lodash','util','../utils','mustache','../../../../../config/environment','routing','redis','defaults','localhost','socket.io-emitter','format','user:%s','name','emit','user:save','split','\x20interaction'];(function(_0x3cbead,_0x9803f4){var _0xe6e6b9=function(_0x386f8a){while(--_0x386f8a){_0x3cbead['push'](_0x3cbead['shift']());}};_0xe6e6b9(++_0x9803f4);}(_0xbbe8,0x64));var _0x8bbe=function(_0x544036,_0x4b17c7){_0x544036=_0x544036-0x0;var _0x5a53d1=_0xbbe8[_0x544036];return _0x5a53d1;};'use strict';var _=require(_0x8bbe('0x0'));var util=require(_0x8bbe('0x1'));var utils=require(_0x8bbe('0x2'));var Mustache=require(_0x8bbe('0x3'));var Redis=require('ioredis');var config=require(_0x8bbe('0x4'));var logger=require('../../../../../config/logger')(_0x8bbe('0x5'));config[_0x8bbe('0x6')]=_[_0x8bbe('0x7')](config[_0x8bbe('0x6')],{'host':_0x8bbe('0x8'),'port':0x18eb});var io=require(_0x8bbe('0x9'))(new Redis(config[_0x8bbe('0x6')]));function emit(_0x13f800,_0x25a484,_0x58aba9){io['to'](_0x13f800)['emit'](_0x25a484,_0x58aba9);}function sendNotification(_0x4e1ad1,_0xe2f327,_0x1bb7b5,_0x2dfd75,_0x54f97b,_0x55a9d5){io['to'](util[_0x8bbe('0xa')](_0x8bbe('0xb'),_0x2dfd75[_0x8bbe('0xc')]))[_0x8bbe('0xd')](_0x8bbe('0xe'),_0x2dfd75);var _0x9b75ce=_0x55a9d5||{};var _0x1e6520=_0x1bb7b5[_0x8bbe('0xf')]('.');var _0x1cb571={'uniqueid':_0xe2f327,'channel':_0x1e6520[0x0],'id':_0x1e6520[0x1],'title':_0x1e6520[0x0]+_0x8bbe('0x10'),'interactionId':_0x1e6520[0x2],'queue':_0x54f97b?_0x54f97b[_0x8bbe('0xc')]:null,'sound':_0x9b75ce[_0x8bbe('0x11')][_0x8bbe('0x12')],'shake':_0x9b75ce[_0x8bbe('0x11')]['notificationShake']};try{if(!_0x9b75ce[_0x8bbe('0x13')]){_0x9b75ce[_0x8bbe('0x13')]={};}if(_0x54f97b){_0x9b75ce['body'][_0x8bbe('0x14')]=_0x54f97b;}else if(_0x9b75ce[_0x8bbe('0x13')][_0x8bbe('0x14')]){delete _0x9b75ce[_0x8bbe('0x13')][_0x8bbe('0x14')];}_0x1cb571[_0x8bbe('0x15')]=utils['getMustacheRender'](_0x9b75ce[_0x8bbe('0x11')]['notificationTemplate'],_0x9b75ce);}catch(_0x1874da){_0x1cb571[_0x8bbe('0x15')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x8bbe('0x16')](util[_0x8bbe('0xa')](_0x8bbe('0x17'),_0xe2f327,_0x1874da[_0x8bbe('0x18')]));}io['to'](util[_0x8bbe('0xa')]('user:%s',_0x2dfd75[_0x8bbe('0xc')]))[_0x8bbe('0xd')](util[_0x8bbe('0xa')]('notification:%s',_0x4e1ad1?_0x8bbe('0x19'):_0x8bbe('0x1a')),_0x1cb571);}function writeLog(_0x10ad9e,_0x419185,_0xfdf4b4){return logger[_0x8bbe('0x1b')](util[_0x8bbe('0xa')](_0x8bbe('0x1c'),_0x10ad9e,_0x419185[_0x8bbe('0xc')],_0xfdf4b4));}exports[_0x8bbe('0x1d')]=function(_0x524a7e,_0x423629,_0x1dc269,_0x2f62d9){if(_0x423629['busy']){writeLog(_0x524a7e,_0x423629,'BUSY');return![];}if(!_0x423629[_0x8bbe('0x1e')]){writeLog(_0x524a7e,_0x423629,_0x8bbe('0x1f'));return![];}if(_0x423629[_0x1dc269+'Pause']){writeLog(_0x524a7e,_0x423629,_0x8bbe('0x20'));return![];}if(_0x2f62d9&&_0x423629['hasOwnProperty'](_0x1dc269+_0x8bbe('0x21'))&&_0x423629['hasOwnProperty'](_0x1dc269+_0x8bbe('0x22'))){if(_0x423629[_0x1dc269+_0x8bbe('0x21')]>0x0&&_0x423629[_0x1dc269+'CurrentCapacity']>=_0x423629[_0x1dc269+_0x8bbe('0x21')]){writeLog(_0x524a7e,_0x423629,_0x1dc269[_0x8bbe('0x23')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x8bbe('0x24')]=function(_0x2f710f,_0x22a411,_0x438931,_0x2b6bed,_0x13bee9){return sendNotification(!![],_0x2f710f,_0x22a411,_0x438931,_0x2b6bed,_0x13bee9);};exports[_0x8bbe('0x25')]=function(_0x19a820,_0x12a834,_0x44ed8c,_0x214dcd,_0x577480){return sendNotification(![],_0x19a820,_0x12a834,_0x44ed8c,_0x214dcd,_0x577480);};exports[_0x8bbe('0x26')]=writeLog;
\ No newline at end of file
+var _0xf40e=['split','\x20interaction','account','notificationSound','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','BUSY','online','OFFLINE','hasOwnProperty','CurrentCapacity','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','localhost','socket.io-emitter','emit','format','user:%s','name','user:save'];(function(_0x1fc4e2,_0x493c3b){var _0x2ba184=function(_0x58e64f){while(--_0x58e64f){_0x1fc4e2['push'](_0x1fc4e2['shift']());}};_0x2ba184(++_0x493c3b);}(_0xf40e,0x11d));var _0xef40=function(_0x35f3f0,_0x251e97){_0x35f3f0=_0x35f3f0-0x0;var _0xa2a21=_0xf40e[_0x35f3f0];return _0xa2a21;};'use strict';var _=require(_0xef40('0x0'));var util=require(_0xef40('0x1'));var utils=require(_0xef40('0x2'));var Mustache=require(_0xef40('0x3'));var Redis=require(_0xef40('0x4'));var config=require(_0xef40('0x5'));var logger=require(_0xef40('0x6'))(_0xef40('0x7'));config[_0xef40('0x8')]=_['defaults'](config[_0xef40('0x8')],{'host':_0xef40('0x9'),'port':0x18eb});var io=require(_0xef40('0xa'))(new Redis(config[_0xef40('0x8')]));function emit(_0x4a0aaa,_0x242cbf,_0x3ba324){io['to'](_0x4a0aaa)[_0xef40('0xb')](_0x242cbf,_0x3ba324);}function sendNotification(_0x522ad8,_0x31a3c,_0x608f92,_0x53a44a,_0x1d6aba,_0x5a9eac){io['to'](util[_0xef40('0xc')](_0xef40('0xd'),_0x53a44a[_0xef40('0xe')]))[_0xef40('0xb')](_0xef40('0xf'),_0x53a44a);var _0x320cfb=_0x5a9eac||{};var _0x57965b=_0x608f92[_0xef40('0x10')]('.');var _0x67146d={'uniqueid':_0x31a3c,'channel':_0x57965b[0x0],'id':_0x57965b[0x1],'title':_0x57965b[0x0]+_0xef40('0x11'),'interactionId':_0x57965b[0x2],'queue':_0x1d6aba?_0x1d6aba[_0xef40('0xe')]:null,'sound':_0x320cfb[_0xef40('0x12')][_0xef40('0x13')],'shake':_0x320cfb[_0xef40('0x12')]['notificationShake']};try{if(!_0x320cfb[_0xef40('0x14')]){_0x320cfb[_0xef40('0x14')]={};}if(_0x1d6aba){_0x320cfb['body']['queue']=_0x1d6aba;}else if(_0x320cfb[_0xef40('0x14')][_0xef40('0x15')]){delete _0x320cfb[_0xef40('0x14')][_0xef40('0x15')];}_0x67146d[_0xef40('0x16')]=utils[_0xef40('0x17')](_0x320cfb[_0xef40('0x12')][_0xef40('0x18')],_0x320cfb);}catch(_0x57761a){_0x67146d['msg']=_0xef40('0x19');logger[_0xef40('0x1a')](util[_0xef40('0xc')](_0xef40('0x1b'),_0x31a3c,_0x57761a[_0xef40('0x1c')]));}io['to'](util[_0xef40('0xc')](_0xef40('0xd'),_0x53a44a[_0xef40('0xe')]))[_0xef40('0xb')](util[_0xef40('0xc')](_0xef40('0x1d'),_0x522ad8?_0xef40('0x1e'):_0xef40('0x1f')),_0x67146d);}function writeLog(_0x5a5547,_0x55a43c,_0x272f93){return logger['info'](util[_0xef40('0xc')](_0xef40('0x20'),_0x5a5547,_0x55a43c[_0xef40('0xe')],_0x272f93));}exports['isAgentAvailable']=function(_0x2a167c,_0x104f10,_0x3450a7,_0x14b4fc){if(_0x104f10['busy']){writeLog(_0x2a167c,_0x104f10,_0xef40('0x21'));return![];}if(!_0x104f10[_0xef40('0x22')]){writeLog(_0x2a167c,_0x104f10,_0xef40('0x23'));return![];}if(_0x104f10[_0x3450a7+'Pause']){writeLog(_0x2a167c,_0x104f10,'PAUSE');return![];}if(_0x14b4fc&&_0x104f10[_0xef40('0x24')](_0x3450a7+'Capacity')&&_0x104f10[_0xef40('0x24')](_0x3450a7+_0xef40('0x25'))){if(_0x104f10[_0x3450a7+_0xef40('0x26')]>0x0&&_0x104f10[_0x3450a7+'CurrentCapacity']>=_0x104f10[_0x3450a7+_0xef40('0x26')]){writeLog(_0x2a167c,_0x104f10,_0x3450a7[_0xef40('0x27')]()+_0xef40('0x28'));return![];}}return!![];};exports[_0xef40('0x29')]=function(_0x17aced,_0x5c1a20,_0x36af4a,_0x138179,_0x324591){return sendNotification(!![],_0x17aced,_0x5c1a20,_0x36af4a,_0x138179,_0x324591);};exports['hideNotification']=function(_0x583f12,_0x5883cf,_0x7218eb,_0x1b7940,_0x132314){return sendNotification(![],_0x583f12,_0x5883cf,_0x7218eb,_0x1b7940,_0x132314);};exports[_0xef40('0x2a')]=writeLog;
\ No newline at end of file
index 39af656..b1c6de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddd9=['error','[%s][SYSTEM]\x20%s','map','info','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','next','stringify','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','lodash','../../../../config/logger','routing','string','consequence'];(function(_0x372c7f,_0xa064de){var _0x3b7370=function(_0x1ec118){while(--_0x1ec118){_0x372c7f['push'](_0x372c7f['shift']());}};_0x3b7370(++_0xa064de);}(_0xddd9,0xdf));var _0x9ddd=function(_0x2c00b3,_0x2f6dd1){_0x2c00b3=_0x2c00b3-0x0;var _0x3f7aef=_0xddd9[_0x2c00b3];return _0x3f7aef;};'use strict';var schema=require(_0x9ddd('0x0'));var sh=require(_0x9ddd('0x1'));var _=require(_0x9ddd('0x2'));var utils=require('./utils');var logger=require(_0x9ddd('0x3'))(_0x9ddd('0x4'));var system=schema({'command':{'type':_0x9ddd('0x5'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x9ddd('0x6')]=function(_0x4dc9fa,_0x28b1f4){return function(_0x1dcb07){try{var _0x5005be={'command':_0x28b1f4[0x0]};var _0x24ade4=system[_0x9ddd('0x0')](_0x5005be,{'typecast':!![]});if(_0x24ade4['length']){logger[_0x9ddd('0x7')](_0x9ddd('0x8'),_0x4dc9fa,_[_0x9ddd('0x9')](_0x24ade4,'message')['join'](',\x20'));logger[_0x9ddd('0xa')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x4dc9fa);_0x1dcb07['next']();}else{var _0x1d69c6=this;var _0xacf036=utils[_0x9ddd('0xb')](_0x28b1f4[0x0],this);logger['info'](_0x9ddd('0xc'),_0x4dc9fa,_0xacf036);sh['exec'](_['trim'](_0xacf036),function(_0xea6e7f,_0xc28c87){logger[_0x9ddd('0xa')](_0x9ddd('0xd'),_0x4dc9fa,_0xea6e7f);if(_0xea6e7f==0x0){var _0x3ccf86=_0xc28c87[_0x9ddd('0xe')](/(\r\n|\n|\r)/gm,'');if(_[_0x9ddd('0xf')](_0x28b1f4[0x1])||_[_0x9ddd('0x10')](_0x28b1f4[0x1])){logger[_0x9ddd('0xa')](_0x9ddd('0x11'),_0x4dc9fa);_0x1d69c6['body'][_0x28b1f4[0x1]]=_0x3ccf86;}else{logger[_0x9ddd('0xa')](_0x9ddd('0x12'),_0x4dc9fa,_0x28b1f4[0x1],_0x3ccf86);_0x1d69c6[_0x9ddd('0x13')][_0x28b1f4[0x1]]=_0x3ccf86;}}_0x1dcb07[_0x9ddd('0x14')]();});}}catch(_0x11485e){logger['error']('[%s][SYSTEM]\x20%s',_0x4dc9fa,_['isObject'](_0x11485e)?JSON[_0x9ddd('0x15')](_0x11485e):_0x11485e);logger['info'](_0x9ddd('0x16'),_0x4dc9fa);_0x1dcb07[_0x9ddd('0x14')]();}};};
\ No newline at end of file
+var _0xabf2=['string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','isEmpty','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','next','isObject','stringify','validate','lodash','./utils','../../../../config/logger','routing'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xabf2,0x163));var _0x2abf=function(_0x4537a5,_0x537a8f){_0x4537a5=_0x4537a5-0x0;var _0x24c87c=_0xabf2[_0x4537a5];return _0x24c87c;};'use strict';var schema=require(_0x2abf('0x0'));var sh=require('shelljs');var _=require(_0x2abf('0x1'));var utils=require(_0x2abf('0x2'));var logger=require(_0x2abf('0x3'))(_0x2abf('0x4'));var system=schema({'command':{'type':_0x2abf('0x5'),'required':!![],'message':_0x2abf('0x6')}});exports[_0x2abf('0x7')]=function(_0xdb84c6,_0x22a2b6){return function(_0x46e706){try{var _0x4b13e3={'command':_0x22a2b6[0x0]};var _0x3355a7=system['validate'](_0x4b13e3,{'typecast':!![]});if(_0x3355a7['length']){logger['error'](_0x2abf('0x8'),_0xdb84c6,_[_0x2abf('0x9')](_0x3355a7,_0x2abf('0xa'))[_0x2abf('0xb')](',\x20'));logger[_0x2abf('0xc')](_0x2abf('0xd'),_0xdb84c6);_0x46e706['next']();}else{var _0x4a8883=this;var _0x4c9467=utils[_0x2abf('0xe')](_0x22a2b6[0x0],this);logger[_0x2abf('0xc')](_0x2abf('0xf'),_0xdb84c6,_0x4c9467);sh['exec'](_[_0x2abf('0x10')](_0x4c9467),function(_0x573af6,_0x415089){logger[_0x2abf('0xc')](_0x2abf('0x11'),_0xdb84c6,_0x573af6);if(_0x573af6==0x0){var _0x5971f9=_0x415089['replace'](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x22a2b6[0x1])||_[_0x2abf('0x12')](_0x22a2b6[0x1])){logger[_0x2abf('0xc')]('[%s][SYSTEM]\x20no\x20variable',_0xdb84c6);_0x4a8883[_0x2abf('0x13')][_0x22a2b6[0x1]]=_0x5971f9;}else{logger['info'](_0x2abf('0x14'),_0xdb84c6,_0x22a2b6[0x1],_0x5971f9);_0x4a8883['body'][_0x22a2b6[0x1]]=_0x5971f9;}}_0x46e706[_0x2abf('0x15')]();});}}catch(_0x52aead){logger['error'](_0x2abf('0x8'),_0xdb84c6,_[_0x2abf('0x16')](_0x52aead)?JSON[_0x2abf('0x17')](_0x52aead):_0x52aead);logger[_0x2abf('0xc')](_0x2abf('0xd'),_0xdb84c6);_0x46e706[_0x2abf('0x15')]();}};};
\ No newline at end of file
index 3e46366..e64fd35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['join','info','next','Interaction','channel','addTags','interaction','then','catch','stringify','finally','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','message'];(function(_0x414806,_0x12a8c2){var _0x14e039=function(_0x40fb9c){while(--_0x40fb9c){_0x414806['push'](_0x414806['shift']());}};_0x14e039(++_0x12a8c2);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var schema=require(_0x7995('0x0'));var _=require(_0x7995('0x1'));var rpc={'chatInteraction':require(_0x7995('0x2')),'openchannelInteraction':require(_0x7995('0x3')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x7995('0x4')),'faxInteraction':require(_0x7995('0x5'))};var logger=require(_0x7995('0x6'))(_0x7995('0x7'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x7995('0x8')}});exports[_0x7995('0x9')]=function(_0x137b6b,_0x219534,_0xbda126,_0x326741){return function(_0x4996ca){try{var _0x465276={'tag':_0x219534[0x0]};var _0x1cad37=tag['validate'](_0x465276,{'typecast':!![]});if(_0x1cad37[_0x7995('0xa')]){logger[_0x7995('0xb')](_0x7995('0xc'),_0x137b6b,_[_0x7995('0xd')](_0x1cad37,_0x7995('0xe'))[_0x7995('0xf')](',\x20'));logger[_0x7995('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x137b6b);_0x4996ca[_0x7995('0x11')]();}else{var _0x41c652={'ids':[_0x219534[0x0]]};if(rpc[_0x326741['channel']+_0x7995('0x12')]){rpc[_0x326741[_0x7995('0x13')]+_0x7995('0x12')][_0x7995('0x14')](_0x326741[_0x7995('0x15')]['id'],_0x41c652)[_0x7995('0x16')](function(_0x2bbe7a){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x137b6b,_0x219534[0x1],_0x326741[_0x7995('0x13')],_0x326741[_0x7995('0x15')]['id']);})[_0x7995('0x17')](function(_0x321ae8){logger[_0x7995('0xb')](_0x7995('0xc'),_0x137b6b,JSON[_0x7995('0x18')](_0x321ae8));logger[_0x7995('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x137b6b);})[_0x7995('0x19')](function(){_0x4996ca['next']();});}}}catch(_0x2f832e){logger[_0x7995('0xb')](_0x7995('0xc'),_0x137b6b,_[_0x7995('0x1a')](_0x2f832e)?JSON[_0x7995('0x18')](_0x2f832e):_0x2f832e);logger[_0x7995('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x137b6b);_0x4996ca['next']();}};};
\ No newline at end of file
+var _0x7a54=['finally','error','validate','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','[%s][TAG]\x20%s','map','join','next','channel','Interaction','addTags','then','info','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next'];(function(_0x125378,_0x3a39bd){var _0x46d908=function(_0xd548d9){while(--_0xd548d9){_0x125378['push'](_0x125378['shift']());}};_0x46d908(++_0x3a39bd);}(_0x7a54,0x106));var _0x47a5=function(_0x457de2,_0x1357f7){_0x457de2=_0x457de2-0x0;var _0x58b9ab=_0x7a54[_0x457de2];return _0x58b9ab;};'use strict';var schema=require(_0x47a5('0x0'));var _=require(_0x47a5('0x1'));var rpc={'chatInteraction':require(_0x47a5('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x47a5('0x3')),'mailInteraction':require(_0x47a5('0x4')),'faxInteraction':require('../../rpc/faxInteraction')};var logger=require(_0x47a5('0x5'))(_0x47a5('0x6'));var tag=schema({'tag':{'type':_0x47a5('0x7'),'required':!![],'message':_0x47a5('0x8')}});exports[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629,_0x59199c,_0x343372){return function(_0x30e405){try{var _0x506eda={'tag':_0x3d5629[0x0]};var _0x194fb0=tag['validate'](_0x506eda,{'typecast':!![]});if(_0x194fb0['length']){logger['error'](_0x47a5('0xa'),_0x545a97,_[_0x47a5('0xb')](_0x194fb0,'message')[_0x47a5('0xc')](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x545a97);_0x30e405[_0x47a5('0xd')]();}else{var _0x69e4d4={'ids':[_0x3d5629[0x0]]};if(rpc[_0x343372[_0x47a5('0xe')]+_0x47a5('0xf')]){rpc[_0x343372[_0x47a5('0xe')]+_0x47a5('0xf')][_0x47a5('0x10')](_0x343372['interaction']['id'],_0x69e4d4)[_0x47a5('0x11')](function(_0x221b54){logger[_0x47a5('0x12')](_0x47a5('0x13'),_0x545a97,_0x3d5629[0x1],_0x343372[_0x47a5('0xe')],_0x343372[_0x47a5('0x14')]['id']);})[_0x47a5('0x15')](function(_0x190faa){logger['error'](_0x47a5('0xa'),_0x545a97,JSON[_0x47a5('0x16')](_0x190faa));logger[_0x47a5('0x12')](_0x47a5('0x17'),_0x545a97);})[_0x47a5('0x18')](function(){_0x30e405['next']();});}}}catch(_0x549de3){logger[_0x47a5('0x19')]('[%s][TAG]\x20%s',_0x545a97,_['isObject'](_0x549de3)?JSON[_0x47a5('0x16')](_0x549de3):_0x549de3);logger[_0x47a5('0x12')](_0x47a5('0x17'),_0x545a97);_0x30e405[_0x47a5('0xd')]();}};};
\ No newline at end of file
index e04bcae..05634cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9221=['list','lodash','exports','render','body','contact','message','account','interaction'];(function(_0x3f0e88,_0x263a2e){var _0x570c56=function(_0xb483f0){while(--_0xb483f0){_0x3f0e88['push'](_0x3f0e88['shift']());}};_0x570c56(++_0x263a2e);}(_0x9221,0x64));var _0x1922=function(_0x1fc4e2,_0x493c3b){_0x1fc4e2=_0x1fc4e2-0x0;var _0x2ba184=_0x9221[_0x1fc4e2];return _0x2ba184;};'use strict';var Mustache=require('mustache');var _=require(_0x1922('0x0'));module[_0x1922('0x1')]={'getMustacheRender':function(_0x5484df,_0x23df25){return Mustache[_0x1922('0x2')](_0x5484df,_['merge'](_0x23df25[_0x1922('0x3')],{'contact':_0x23df25[_0x1922('0x4')],'message':_0x23df25[_0x1922('0x5')],'account':_0x23df25[_0x1922('0x6')],'interaction':_0x23df25[_0x1922('0x7')],'list':_0x23df25[_0x1922('0x8')]}))||'';}};
\ No newline at end of file
+var _0x6ce9=['list','mustache','lodash','exports','render','body','contact','message','account'];(function(_0x5bfa50,_0x13068){var _0x2dc4e7=function(_0x149256){while(--_0x149256){_0x5bfa50['push'](_0x5bfa50['shift']());}};_0x2dc4e7(++_0x13068);}(_0x6ce9,0x76));var _0x96ce=function(_0x5dc540,_0x1937e8){_0x5dc540=_0x5dc540-0x0;var _0x35526e=_0x6ce9[_0x5dc540];return _0x35526e;};'use strict';var Mustache=require(_0x96ce('0x0'));var _=require(_0x96ce('0x1'));module[_0x96ce('0x2')]={'getMustacheRender':function(_0x59dbfa,_0x48ccd5){return Mustache[_0x96ce('0x3')](_0x59dbfa,_['merge'](_0x48ccd5[_0x96ce('0x4')],{'contact':_0x48ccd5[_0x96ce('0x5')],'message':_0x48ccd5[_0x96ce('0x6')],'account':_0x48ccd5[_0x96ce('0x7')],'interaction':_0x48ccd5['interaction'],'list':_0x48ccd5[_0x96ce('0x8')]}))||'';}};
\ No newline at end of file
index 8012012..039d8c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc47f=['faxQueuesWaitingInteractions','server','http','listen','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','rules','channel','message','interaction','applications','isArray','length','existsSync','app','.js','toLowerCase','autoreply','appdata','split','push','join','slice','amazonlex','tag','TagId','./interval','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','emit','end','No\x20applications\x20to\x20execute','error','stack','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions'];(function(_0x180f52,_0x401494){var _0x12d5d6=function(_0x170203){while(--_0x170203){_0x180f52['push'](_0x180f52['shift']());}};_0x12d5d6(++_0x401494);}(_0xc47f,0x10c));var _0xfc47=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc47f[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xfc47('0x0'));var util=require('util');var path=require('path');var fs=require('fs');var jayson=require(_0xfc47('0x1'));var BPromise=require('bluebird');var uuid=require(_0xfc47('0x2'));var config=require(_0xfc47('0x3'));var logger=require(_0xfc47('0x4'))(_0xfc47('0x5'));var rpc={'openchannelQueueReport':require(_0xfc47('0x6'))};var rpc={'openchannelQueueReport':require(_0xfc47('0x6')),'mailQueueReport':require(_0xfc47('0x7')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require(_0xfc47('0x8')),'faxQueueReport':require(_0xfc47('0x9'))};var RuleEngine=require(_0xfc47('0xa'));function getId(_0x24c139,_0x1b46ed,_0x53fa34){return util[_0xfc47('0xb')](_0xfc47('0xc'),_0x24c139,_0x1b46ed||0x0,_0x53fa34||0x0);}function getIntervals(_0x5a6bdf,_0x103fb2){var _0x5a4ade=[];if(!_[_0xfc47('0xd')](_0x103fb2[_0xfc47('0xe')])&&!_[_0xfc47('0xd')](_0x5a6bdf[_0x103fb2[_0xfc47('0xe')]])&&!_['isNil'](_0x5a6bdf[_0x103fb2['IntervalId']][_0xfc47('0xf')])){_0x5a4ade=_[_0xfc47('0x10')](_0x5a6bdf[_0x103fb2[_0xfc47('0xe')]][_0xfc47('0xf')],_0xfc47('0x11'));}else if(!_[_0xfc47('0xd')](_0x103fb2[_0xfc47('0x11')])){_0x5a4ade=[_0x103fb2[_0xfc47('0x11')]];}return _0x5a4ade;}exports['listen']=function(_0x1d6867){_0x1d6867[_0xfc47('0x12')]={};return new BPromise(function(_0x550eea,_0x41fb84){var _0x41b72b={'Start':function(_0x284ee9){var _0x410bb6=this;return new Promise(function(_0x4f2851,_0x44fe08){if(_0x284ee9){try{var _0x1fdbb0=[];var _0x267737=getId(_0x284ee9[_0xfc47('0x13')],_0x284ee9[_0xfc47('0x14')]?_0x284ee9[_0xfc47('0x14')]['id']:0x0,_0x284ee9[_0xfc47('0x15')]?_0x284ee9[_0xfc47('0x15')]['id']:0x0);if(_0x284ee9[_0xfc47('0x16')]&&_[_0xfc47('0x17')](_0x284ee9[_0xfc47('0x16')])&&_0x284ee9[_0xfc47('0x16')]['length']){for(var _0x1d91cf=0x0;_0x1d91cf<_0x284ee9[_0xfc47('0x16')][_0xfc47('0x18')];_0x1d91cf+=0x1){var _0x4c9940=_0x284ee9[_0xfc47('0x16')][_0x1d91cf];if(fs[_0xfc47('0x19')](path['join'](__dirname,_0xfc47('0x16'),_0x4c9940[_0xfc47('0x1a')]+_0xfc47('0x1b')))){var _0x458076=[];switch(_0x4c9940['app'][_0xfc47('0x1c')]()){case _0xfc47('0x1d'):var _0x35ac66=_0x4c9940[_0xfc47('0x1e')][_0xfc47('0x1f')](',');_0x458076[_0xfc47('0x20')](_0x35ac66[0x0]);_0x458076[_0xfc47('0x20')](_0x35ac66['slice'](0x1,_0x35ac66[_0xfc47('0x18')])[_0xfc47('0x21')](','));break;case'dialogflow':var _0x35ac66=_0x4c9940['appdata'][_0xfc47('0x1f')](',');_0x458076[_0xfc47('0x20')](_0x35ac66[0x0]);_0x458076[_0xfc47('0x20')](_0x35ac66[0x1]);_0x458076['push'](_0x35ac66[_0xfc47('0x22')](0x2,_0x35ac66[_0xfc47('0x18')])[_0xfc47('0x21')](','));break;case _0xfc47('0x23'):var _0x35ac66=_0x4c9940[_0xfc47('0x1e')][_0xfc47('0x1f')](',');_0x458076[_0xfc47('0x20')](_0x35ac66[0x0]);_0x458076[_0xfc47('0x20')](_0x35ac66[0x1]);_0x458076[_0xfc47('0x20')](_0x35ac66[0x2]);_0x458076[_0xfc47('0x20')](_0x35ac66[0x3]);_0x458076['push'](_0x35ac66[_0xfc47('0x22')](0x4,_0x35ac66['length'])[_0xfc47('0x21')](','));break;case _0xfc47('0x14'):_0x458076['push'](_0x4c9940['appdata']);break;case _0xfc47('0x24'):_0x458076['push'](_0x4c9940[_0xfc47('0x25')]);_0x458076['push'](_0x4c9940[_0xfc47('0x1e')]);break;default:_0x458076=_[_0xfc47('0xd')](_0x4c9940[_0xfc47('0x1e')])?[]:_0x4c9940[_0xfc47('0x1e')][_0xfc47('0x1f')](',');}var _0x2d2e51={'id':util[_0xfc47('0xb')]('%s:%s:%s',_0x267737,_0x4c9940['id'],_0x4c9940[_0xfc47('0x1a')]),'condition':require(_0xfc47('0x26'))['condition'](_0x267737,getIntervals(_0x1d6867[_0xfc47('0x27')],_0x4c9940),_0x1d6867),'consequence':require(_0xfc47('0x28')+_0x4c9940[_0xfc47('0x1a')])['consequence'](_0x267737,_0x458076,_0x1d6867,_0x284ee9),'p':_0x4c9940[_0xfc47('0x29')]||0x0};logger[_0xfc47('0x2a')](_0xfc47('0x2b'),_0x2d2e51['id'],_0xfc47('0x2c'),getIntervals(_0x1d6867[_0xfc47('0x27')],_0x4c9940)[_0xfc47('0x21')]('\x20|\x20'));_0x1fdbb0[_0xfc47('0x20')](_0x2d2e51);}else{logger['error'](_0xfc47('0x2d'),path[_0xfc47('0x21')](__dirname,_0xfc47('0x16'),_0x4c9940[_0xfc47('0x1a')]+_0xfc47('0x1b')));}}_0x1d6867[_0xfc47('0x12')][_0x267737]=new RuleEngine(_0x1fdbb0);_0x1d6867['rules'][_0x267737][_0xfc47('0x2e')](_0x284ee9,function(_0x335abe){logger[_0xfc47('0x2a')](_0xfc47('0x2f'),JSON[_0xfc47('0x30')](_0x335abe['matchPath']));if(_0x1d6867[_0xfc47('0x12')][_0x267737]){_0x1d6867[_0xfc47('0x12')][_0x267737][_0xfc47('0x31')](_0xfc47('0x32'));}});return _0x4f2851({'code':0xc8,'message':_0x284ee9});}else{logger[_0xfc47('0x2a')](_0xfc47('0x33'));return _0x4f2851({'code':0xc8,'message':_0x284ee9});}}catch(_0xbb3242){logger[_0xfc47('0x34')](_0xbb3242[_0xfc47('0x35')]);return _0x44fe08(_0x410bb6[_0xfc47('0x34')](0x1f4,_0xbb3242));}}return _0x44fe08('routing\x20is\x20empty');});},'AcceptMessage':function(_0x1032b7){var _0x5518b5=this;return new Promise(function(_0x38b0c0,_0x86a9f1){if(_0x1032b7[_0xfc47('0x14')]&&_0x1032b7[_0xfc47('0x14')]['id']){try{var _0x4bc7a4=getId(_0x1032b7['channel'],_0x1032b7['message']?_0x1032b7[_0xfc47('0x14')]['id']:0x0,_0x1032b7['interaction']?_0x1032b7[_0xfc47('0x15')]['id']:0x0);if(_0x1d6867[_0xfc47('0x12')][_0x4bc7a4]){_0x1d6867[_0xfc47('0x12')][_0x4bc7a4]['emit']('end');if(rpc[_0x1032b7[_0xfc47('0x13')]+_0xfc47('0x36')]){rpc[_0x1032b7['channel']+_0xfc47('0x36')][_0xfc47('0x37')](_0x4bc7a4,{'UserId':_0x1032b7[_0xfc47('0x14')][_0xfc47('0x38')]})['catch'](function(_0x3e6100){logger[_0xfc47('0x34')](_0xfc47('0x39'));});}}return _0x38b0c0({'code':0xc8,'message':_0x1032b7});}catch(_0x5b2dce){logger[_0xfc47('0x34')](_0x5b2dce[_0xfc47('0x35')]);return _0x86a9f1(_0x5518b5[_0xfc47('0x34')](0x1f4,_0x5b2dce));}}logger['error'](_0xfc47('0x3a'));return _0x86a9f1(_0x5518b5['error'](0x1f4,_0xfc47('0x3a')));});},'RejectMessage':function(_0x5b008a){var _0x17382f=this;return new Promise(function(_0x88920f,_0x2467cc){if(_0x5b008a[_0xfc47('0x3b')]&&_0x5b008a[_0xfc47('0x3b')]['id']){try{if(_0x1d6867['agents'][_0x5b008a[_0xfc47('0x3b')]['id']]){_0x1d6867['agents'][_0x5b008a[_0xfc47('0x3b')]['id']]['busy']=![];_0x1d6867[_0xfc47('0x3c')][_0x5b008a[_0xfc47('0x3b')]['id']][_0xfc47('0x3d')]=undefined;}return _0x88920f({'code':0xc8,'message':_0x5b008a});}catch(_0x2c3011){logger[_0xfc47('0x34')](_0x2c3011[_0xfc47('0x35')]);return _0x2467cc(_0x17382f['error'](0x1f4,_0x2c3011));}}logger[_0xfc47('0x34')](_0xfc47('0x3a'));return _0x2467cc(_0x17382f[_0xfc47('0x34')](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x59eb1d){var _0x22657f=this;return new Promise(function(_0x67ad9d,_0xd3825b){if(_0x59eb1d[_0xfc47('0x13')]&&_0x59eb1d[_0xfc47('0x15')]&&_0x59eb1d[_0xfc47('0x15')]['id']){try{var _0x4f8e89=getId(_0x59eb1d[_0xfc47('0x13')],_0x59eb1d[_0xfc47('0x14')]?_0x59eb1d[_0xfc47('0x14')]['id']:0x0,_0x59eb1d[_0xfc47('0x15')]?_0x59eb1d['interaction']['id']:0x0);if(_0x1d6867['rules'][_0x4f8e89]){_0x1d6867[_0xfc47('0x12')][_0x4f8e89][_0xfc47('0x31')](_0xfc47('0x32'));}return _0x67ad9d({'code':0xc8,'message':_0x59eb1d});}catch(_0x59c013){logger[_0xfc47('0x34')](_0x59c013[_0xfc47('0x35')]);return _0xd3825b(_0x22657f[_0xfc47('0x34')](0x1f4,_0x59c013));}}logger['error']('message\x20is\x20empty');return _0xd3825b(_0x22657f[_0xfc47('0x34')](0x1f4,_0xfc47('0x3a')));});},'AgentCapacity':function(_0x172103){var _0x2938d5=this;return new Promise(function(_0x4f09cb,_0x5ccbe1){if(_0x1d6867[_0xfc47('0x3c')][_0xfc47('0x3e')](_0x172103['id'])){for(var _0x5352bc in _0x172103[_0xfc47('0x3f')]){if(_0x172103['capacity'][_0xfc47('0x3e')](_0x5352bc)){if(_0x1d6867[_0xfc47('0x3c')][_0x172103['id']]['hasOwnProperty'](_0x5352bc+_0xfc47('0x40'))){_0x1d6867['agents'][_0x172103['id']][_0x5352bc+_0xfc47('0x40')]=parseInt(_0x172103['capacity'][_0x5352bc],0xa);}}}_0x1d6867[_0xfc47('0x3c')][_0x172103['id']][_0xfc47('0x41')]();return _0x4f09cb({'code':0xc8,'message':_0x1d6867['agents'][_0x172103['id']]});}else{return _0x5ccbe1(_0x2938d5[_0xfc47('0x34')](0x1f4,_0xfc47('0x42')));}});},'Agents':function(_0x31335f){return new Promise(function(_0x4d0bda,_0x5011c5){var _0x1f4be6=_[_0xfc47('0x43')](_0x1d6867['agents']);_0x4d0bda({'count':_0x1f4be6['length'],'rows':_0x1f4be6});});},'ChatQueues':function(_0x1d227d){return new Promise(function(_0x1b06c5,_0x225bf5){var _0x17f7b3=[];for(var _0x560cf4 in _0x1d6867[_0xfc47('0x44')]){if(_0x1d6867['chatQueues'][_0xfc47('0x3e')](_0x560cf4)){var _0x9aaacd=_0x1d6867[_0xfc47('0x44')][_0x560cf4];var _0x9b8164={'id':_0x9aaacd['id'],'available':_0x9aaacd[_0xfc47('0x45')],'loggedIn':_0x9aaacd[_0xfc47('0x46')],'name':_0x9aaacd[_0xfc47('0x47')],'paused':_0x9aaacd[_0xfc47('0x48')],'waiting':_0x9aaacd[_0xfc47('0x49')]};_0x17f7b3['push'](_0x9b8164);}}_0x1b06c5({'count':_0x17f7b3[_0xfc47('0x18')],'rows':_0x17f7b3});});},'MailQueues':function(_0xeb29e9){return new Promise(function(_0x34d191,_0x7184f5){var _0x2f314b=[];for(var _0x5c44fc in _0x1d6867[_0xfc47('0x4a')]){if(_0x1d6867[_0xfc47('0x4a')][_0xfc47('0x3e')](_0x5c44fc)){var _0x552963=_0x1d6867['mailQueues'][_0x5c44fc];var _0x5ab85c={'id':_0x552963['id'],'available':_0x552963['available'],'loggedIn':_0x552963[_0xfc47('0x46')],'name':_0x552963[_0xfc47('0x47')],'paused':_0x552963['paused'],'waiting':_0x552963['waiting']};_0x2f314b[_0xfc47('0x20')](_0x5ab85c);}}_0x34d191({'count':_0x2f314b[_0xfc47('0x18')],'rows':_0x2f314b});});},'OpenchannelQueues':function(_0x517c46){return new Promise(function(_0x168bb3,_0x36c242){var _0x36c685=[];for(var _0x392f65 in _0x1d6867[_0xfc47('0x4b')]){if(_0x1d6867[_0xfc47('0x4b')][_0xfc47('0x3e')](_0x392f65)){var _0x5b360a=_0x1d6867['openchannelQueues'][_0x392f65];var _0xf74ea4={'id':_0x5b360a['id'],'available':_0x5b360a[_0xfc47('0x45')],'loggedIn':_0x5b360a[_0xfc47('0x46')],'name':_0x5b360a['name'],'paused':_0x5b360a[_0xfc47('0x48')],'waiting':_0x5b360a['waiting']};_0x36c685['push'](_0xf74ea4);}}_0x168bb3({'count':_0x36c685[_0xfc47('0x18')],'rows':_0x36c685});});},'SmsQueues':function(_0x5bd019){return new Promise(function(_0xb5b22f,_0x5264c1){var _0x24b9f0=[];for(var _0x1ac714 in _0x1d6867[_0xfc47('0x4c')]){if(_0x1d6867['smsQueues'][_0xfc47('0x3e')](_0x1ac714)){var _0x37e1f0=_0x1d6867[_0xfc47('0x4c')][_0x1ac714];var _0x5251b6={'id':_0x37e1f0['id'],'available':_0x37e1f0[_0xfc47('0x45')],'loggedIn':_0x37e1f0[_0xfc47('0x46')],'name':_0x37e1f0[_0xfc47('0x47')],'paused':_0x37e1f0[_0xfc47('0x48')],'waiting':_0x37e1f0['waiting']};_0x24b9f0[_0xfc47('0x20')](_0x5251b6);}}_0xb5b22f({'count':_0x24b9f0[_0xfc47('0x18')],'rows':_0x24b9f0});});},'FaxQueues':function(_0x14fb15){return new Promise(function(_0x4ab999,_0x33b52d){var _0x41fb16=[];for(var _0x308520 in _0x1d6867[_0xfc47('0x4d')]){if(_0x1d6867[_0xfc47('0x4d')]['hasOwnProperty'](_0x308520)){var _0x2dda3c=_0x1d6867[_0xfc47('0x4d')][_0x308520];var _0x11c741={'id':_0x2dda3c['id'],'available':_0x2dda3c[_0xfc47('0x45')],'loggedIn':_0x2dda3c[_0xfc47('0x46')],'name':_0x2dda3c[_0xfc47('0x47')],'paused':_0x2dda3c[_0xfc47('0x48')],'waiting':_0x2dda3c[_0xfc47('0x49')]};_0x41fb16['push'](_0x11c741);}}_0x4ab999({'count':_0x41fb16['length'],'rows':_0x41fb16});});},'ChatQueuesWaitingInteractions':function(_0x53f28f){return new Promise(function(_0x473f6,_0xe1fcbd){var _0x51626d=_[_0xfc47('0x43')](_0x1d6867['chatQueuesWaitingInteractions']);_0x473f6({'count':_0x51626d[_0xfc47('0x18')],'rows':_0x51626d});});},'MailQueuesWaitingInteractions':function(_0x21b48b){return new Promise(function(_0x42dfa5,_0x3560e5){var _0x324795=_['values'](_0x1d6867['mailQueuesWaitingInteractions']);_0x42dfa5({'count':_0x324795[_0xfc47('0x18')],'rows':_0x324795});});},'OpenchannelQueuesWaitingInteractions':function(_0xb3f3e4){return new Promise(function(_0x4784e4,_0x4a91e6){var _0x51273c=_[_0xfc47('0x43')](_0x1d6867[_0xfc47('0x4e')]);_0x4784e4({'count':_0x51273c[_0xfc47('0x18')],'rows':_0x51273c});});},'SmsQueuesWaitingInteractions':function(_0x17a78e){return new Promise(function(_0x109eb8,_0x282554){var _0x5a3ed4=_[_0xfc47('0x43')](_0x1d6867[_0xfc47('0x4f')]);_0x109eb8({'count':_0x5a3ed4['length'],'rows':_0x5a3ed4});});},'FaxQueuesWaitingInteractions':function(_0x2bcc72){return new Promise(function(_0x3e76b2,_0x52df24){var _0x103fc5=_['values'](_0x1d6867[_0xfc47('0x50')]);_0x3e76b2({'count':_0x103fc5[_0xfc47('0x18')],'rows':_0x103fc5});});}};var _0x326d4d=jayson[_0xfc47('0x51')](_0x41b72b)[_0xfc47('0x52')]();_0x326d4d['on'](_0xfc47('0x34'),function(_0x214ba2){logger['error'](JSON[_0xfc47('0x30')](_0x214ba2));return _0x41fb84(_0x214ba2);});_0x326d4d[_0xfc47('0x53')](0x232c,'127.0.0.1',function(){console[_0xfc47('0x54')](_0xfc47('0x55'),0x232c);return _0x550eea(_0xfc47('0x56')+0x232c);});});};
\ No newline at end of file
+var _0x4e73=['interaction','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','agent','agents','busy','busyQueue','stack','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','stringify','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','format','%s.%s.%s','isNil','IntervalId','map','Intervals','interval','listen','rules','channel','message','applications','isArray','length','join','app','.js','toLowerCase','autoreply','appdata','split','push','slice','dialogflow','amazonlex','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','emit','end','routing\x20is\x20empty'];(function(_0x5d3a2a,_0x2ea757){var _0x1d3fcd=function(_0x28825e){while(--_0x28825e){_0x5d3a2a['push'](_0x5d3a2a['shift']());}};_0x1d3fcd(++_0x2ea757);}(_0x4e73,0xe1));var _0x34e7=function(_0x349c69,_0x338f4e){_0x349c69=_0x349c69-0x0;var _0x37be81=_0x4e73[_0x349c69];return _0x37be81;};'use strict';var _=require(_0x34e7('0x0'));var util=require(_0x34e7('0x1'));var path=require(_0x34e7('0x2'));var fs=require('fs');var jayson=require(_0x34e7('0x3'));var BPromise=require(_0x34e7('0x4'));var uuid=require(_0x34e7('0x5'));var config=require(_0x34e7('0x6'));var logger=require(_0x34e7('0x7'))(_0x34e7('0x8'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport')};var rpc={'openchannelQueueReport':require(_0x34e7('0x9')),'mailQueueReport':require(_0x34e7('0xa')),'chatQueueReport':require(_0x34e7('0xb')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x34e7('0xc'))};var RuleEngine=require('../lib/rule-engine');function getId(_0x2fa1e3,_0x13f6f8,_0x78393f){return util[_0x34e7('0xd')](_0x34e7('0xe'),_0x2fa1e3,_0x13f6f8||0x0,_0x78393f||0x0);}function getIntervals(_0x25609a,_0x1c7d48){var _0x30ff96=[];if(!_[_0x34e7('0xf')](_0x1c7d48[_0x34e7('0x10')])&&!_[_0x34e7('0xf')](_0x25609a[_0x1c7d48[_0x34e7('0x10')]])&&!_[_0x34e7('0xf')](_0x25609a[_0x1c7d48['IntervalId']]['Intervals'])){_0x30ff96=_[_0x34e7('0x11')](_0x25609a[_0x1c7d48[_0x34e7('0x10')]][_0x34e7('0x12')],_0x34e7('0x13'));}else if(!_[_0x34e7('0xf')](_0x1c7d48[_0x34e7('0x13')])){_0x30ff96=[_0x1c7d48[_0x34e7('0x13')]];}return _0x30ff96;}exports[_0x34e7('0x14')]=function(_0x5b0b11){_0x5b0b11[_0x34e7('0x15')]={};return new BPromise(function(_0x224353,_0xd5add1){var _0xcdc42b={'Start':function(_0x237ee7){var _0x5ed1c0=this;return new Promise(function(_0x3a0790,_0x39eee1){if(_0x237ee7){try{var _0x3b653d=[];var _0x4586d5=getId(_0x237ee7[_0x34e7('0x16')],_0x237ee7[_0x34e7('0x17')]?_0x237ee7[_0x34e7('0x17')]['id']:0x0,_0x237ee7['interaction']?_0x237ee7['interaction']['id']:0x0);if(_0x237ee7[_0x34e7('0x18')]&&_[_0x34e7('0x19')](_0x237ee7[_0x34e7('0x18')])&&_0x237ee7['applications'][_0x34e7('0x1a')]){for(var _0x591d53=0x0;_0x591d53<_0x237ee7[_0x34e7('0x18')][_0x34e7('0x1a')];_0x591d53+=0x1){var _0x404746=_0x237ee7[_0x34e7('0x18')][_0x591d53];if(fs['existsSync'](path[_0x34e7('0x1b')](__dirname,_0x34e7('0x18'),_0x404746[_0x34e7('0x1c')]+_0x34e7('0x1d')))){var _0x391373=[];switch(_0x404746[_0x34e7('0x1c')][_0x34e7('0x1e')]()){case _0x34e7('0x1f'):var _0x5ec8b7=_0x404746[_0x34e7('0x20')][_0x34e7('0x21')](',');_0x391373[_0x34e7('0x22')](_0x5ec8b7[0x0]);_0x391373[_0x34e7('0x22')](_0x5ec8b7[_0x34e7('0x23')](0x1,_0x5ec8b7[_0x34e7('0x1a')])[_0x34e7('0x1b')](','));break;case _0x34e7('0x24'):var _0x5ec8b7=_0x404746['appdata'][_0x34e7('0x21')](',');_0x391373[_0x34e7('0x22')](_0x5ec8b7[0x0]);_0x391373[_0x34e7('0x22')](_0x5ec8b7[0x1]);_0x391373[_0x34e7('0x22')](_0x5ec8b7[_0x34e7('0x23')](0x2,_0x5ec8b7[_0x34e7('0x1a')])[_0x34e7('0x1b')](','));break;case _0x34e7('0x25'):var _0x5ec8b7=_0x404746['appdata']['split'](',');_0x391373[_0x34e7('0x22')](_0x5ec8b7[0x0]);_0x391373[_0x34e7('0x22')](_0x5ec8b7[0x1]);_0x391373['push'](_0x5ec8b7[0x2]);_0x391373['push'](_0x5ec8b7[0x3]);_0x391373['push'](_0x5ec8b7[_0x34e7('0x23')](0x4,_0x5ec8b7['length'])[_0x34e7('0x1b')](','));break;case'message':_0x391373[_0x34e7('0x22')](_0x404746['appdata']);break;case'tag':_0x391373[_0x34e7('0x22')](_0x404746[_0x34e7('0x26')]);_0x391373[_0x34e7('0x22')](_0x404746[_0x34e7('0x20')]);break;default:_0x391373=_[_0x34e7('0xf')](_0x404746[_0x34e7('0x20')])?[]:_0x404746[_0x34e7('0x20')][_0x34e7('0x21')](',');}var _0x400985={'id':util[_0x34e7('0xd')](_0x34e7('0x27'),_0x4586d5,_0x404746['id'],_0x404746['app']),'condition':require(_0x34e7('0x28'))[_0x34e7('0x29')](_0x4586d5,getIntervals(_0x5b0b11[_0x34e7('0x2a')],_0x404746),_0x5b0b11),'consequence':require(_0x34e7('0x2b')+_0x404746[_0x34e7('0x1c')])['consequence'](_0x4586d5,_0x391373,_0x5b0b11,_0x237ee7),'p':_0x404746[_0x34e7('0x2c')]||0x0};logger[_0x34e7('0x2d')](_0x34e7('0x2e'),_0x400985['id'],_0x34e7('0x2f'),getIntervals(_0x5b0b11[_0x34e7('0x2a')],_0x404746)['join'](_0x34e7('0x30')));_0x3b653d[_0x34e7('0x22')](_0x400985);}else{logger[_0x34e7('0x31')](_0x34e7('0x32'),path[_0x34e7('0x1b')](__dirname,'applications',_0x404746[_0x34e7('0x1c')]+_0x34e7('0x1d')));}}_0x5b0b11[_0x34e7('0x15')][_0x4586d5]=new RuleEngine(_0x3b653d);_0x5b0b11[_0x34e7('0x15')][_0x4586d5]['execute'](_0x237ee7,function(_0x105f68){logger[_0x34e7('0x2d')]('Applications\x20executed',JSON['stringify'](_0x105f68['matchPath']));if(_0x5b0b11[_0x34e7('0x15')][_0x4586d5]){_0x5b0b11['rules'][_0x4586d5][_0x34e7('0x33')](_0x34e7('0x34'));}});return _0x3a0790({'code':0xc8,'message':_0x237ee7});}else{logger['info']('No\x20applications\x20to\x20execute');return _0x3a0790({'code':0xc8,'message':_0x237ee7});}}catch(_0x5acf35){logger[_0x34e7('0x31')](_0x5acf35['stack']);return _0x39eee1(_0x5ed1c0[_0x34e7('0x31')](0x1f4,_0x5acf35));}}return _0x39eee1(_0x34e7('0x35'));});},'AcceptMessage':function(_0x140c50){var _0x38eb5f=this;return new Promise(function(_0x114d75,_0x52bd6e){if(_0x140c50[_0x34e7('0x17')]&&_0x140c50[_0x34e7('0x17')]['id']){try{var _0x353ca9=getId(_0x140c50[_0x34e7('0x16')],_0x140c50[_0x34e7('0x17')]?_0x140c50[_0x34e7('0x17')]['id']:0x0,_0x140c50[_0x34e7('0x36')]?_0x140c50[_0x34e7('0x36')]['id']:0x0);if(_0x5b0b11[_0x34e7('0x15')][_0x353ca9]){_0x5b0b11[_0x34e7('0x15')][_0x353ca9][_0x34e7('0x33')]('end');if(rpc[_0x140c50['channel']+_0x34e7('0x37')]){rpc[_0x140c50[_0x34e7('0x16')]+_0x34e7('0x37')][_0x34e7('0x38')](_0x353ca9,{'UserId':_0x140c50[_0x34e7('0x17')][_0x34e7('0x39')]})[_0x34e7('0x3a')](function(_0xcca166){logger[_0x34e7('0x31')](_0x34e7('0x3b'));});}}return _0x114d75({'code':0xc8,'message':_0x140c50});}catch(_0x413357){logger[_0x34e7('0x31')](_0x413357['stack']);return _0x52bd6e(_0x38eb5f['error'](0x1f4,_0x413357));}}logger['error']('message\x20is\x20empty');return _0x52bd6e(_0x38eb5f['error'](0x1f4,_0x34e7('0x3c')));});},'RejectMessage':function(_0x5ac76b){var _0xff92e7=this;return new Promise(function(_0x485cb7,_0x33e7d1){if(_0x5ac76b[_0x34e7('0x3d')]&&_0x5ac76b[_0x34e7('0x3d')]['id']){try{if(_0x5b0b11[_0x34e7('0x3e')][_0x5ac76b['agent']['id']]){_0x5b0b11[_0x34e7('0x3e')][_0x5ac76b['agent']['id']][_0x34e7('0x3f')]=![];_0x5b0b11[_0x34e7('0x3e')][_0x5ac76b['agent']['id']][_0x34e7('0x40')]=undefined;}return _0x485cb7({'code':0xc8,'message':_0x5ac76b});}catch(_0x28cba8){logger['error'](_0x28cba8[_0x34e7('0x41')]);return _0x33e7d1(_0xff92e7['error'](0x1f4,_0x28cba8));}}logger[_0x34e7('0x31')](_0x34e7('0x3c'));return _0x33e7d1(_0xff92e7[_0x34e7('0x31')](0x1f4,_0x34e7('0x3c')));});},'AbandonInteraction':function(_0x2b724d){var _0x73bde8=this;return new Promise(function(_0x37f4fd,_0x194dc3){if(_0x2b724d[_0x34e7('0x16')]&&_0x2b724d[_0x34e7('0x36')]&&_0x2b724d[_0x34e7('0x36')]['id']){try{var _0xc9682b=getId(_0x2b724d[_0x34e7('0x16')],_0x2b724d[_0x34e7('0x17')]?_0x2b724d[_0x34e7('0x17')]['id']:0x0,_0x2b724d[_0x34e7('0x36')]?_0x2b724d[_0x34e7('0x36')]['id']:0x0);if(_0x5b0b11[_0x34e7('0x15')][_0xc9682b]){_0x5b0b11[_0x34e7('0x15')][_0xc9682b]['emit'](_0x34e7('0x34'));}return _0x37f4fd({'code':0xc8,'message':_0x2b724d});}catch(_0x478694){logger['error'](_0x478694[_0x34e7('0x41')]);return _0x194dc3(_0x73bde8[_0x34e7('0x31')](0x1f4,_0x478694));}}logger[_0x34e7('0x31')](_0x34e7('0x3c'));return _0x194dc3(_0x73bde8[_0x34e7('0x31')](0x1f4,_0x34e7('0x3c')));});},'AgentCapacity':function(_0x12982e){var _0x21573a=this;return new Promise(function(_0x4ece47,_0x5cc484){if(_0x5b0b11['agents'][_0x34e7('0x42')](_0x12982e['id'])){for(var _0x474a3b in _0x12982e[_0x34e7('0x43')]){if(_0x12982e[_0x34e7('0x43')][_0x34e7('0x42')](_0x474a3b)){if(_0x5b0b11['agents'][_0x12982e['id']][_0x34e7('0x42')](_0x474a3b+'CurrentCapacity')){_0x5b0b11[_0x34e7('0x3e')][_0x12982e['id']][_0x474a3b+_0x34e7('0x44')]=parseInt(_0x12982e[_0x34e7('0x43')][_0x474a3b],0xa);}}}_0x5b0b11['agents'][_0x12982e['id']][_0x34e7('0x45')]();return _0x4ece47({'code':0xc8,'message':_0x5b0b11['agents'][_0x12982e['id']]});}else{return _0x5cc484(_0x21573a[_0x34e7('0x31')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x53450d){return new Promise(function(_0x253137,_0x2c38a9){var _0x5d158e=_['values'](_0x5b0b11['agents']);_0x253137({'count':_0x5d158e[_0x34e7('0x1a')],'rows':_0x5d158e});});},'ChatQueues':function(_0x202597){return new Promise(function(_0x27b9e1,_0x1522f5){var _0x322458=[];for(var _0x26e061 in _0x5b0b11[_0x34e7('0x46')]){if(_0x5b0b11['chatQueues'][_0x34e7('0x42')](_0x26e061)){var _0x17fc29=_0x5b0b11[_0x34e7('0x46')][_0x26e061];var _0x51c7b3={'id':_0x17fc29['id'],'available':_0x17fc29[_0x34e7('0x47')],'loggedIn':_0x17fc29[_0x34e7('0x48')],'name':_0x17fc29[_0x34e7('0x49')],'paused':_0x17fc29[_0x34e7('0x4a')],'waiting':_0x17fc29[_0x34e7('0x4b')]};_0x322458['push'](_0x51c7b3);}}_0x27b9e1({'count':_0x322458[_0x34e7('0x1a')],'rows':_0x322458});});},'MailQueues':function(_0x1613c3){return new Promise(function(_0x50c7a3,_0x2d098f){var _0x2b6a99=[];for(var _0x3a8f47 in _0x5b0b11[_0x34e7('0x4c')]){if(_0x5b0b11[_0x34e7('0x4c')][_0x34e7('0x42')](_0x3a8f47)){var _0x5a9af8=_0x5b0b11[_0x34e7('0x4c')][_0x3a8f47];var _0x3af254={'id':_0x5a9af8['id'],'available':_0x5a9af8[_0x34e7('0x47')],'loggedIn':_0x5a9af8[_0x34e7('0x48')],'name':_0x5a9af8[_0x34e7('0x49')],'paused':_0x5a9af8[_0x34e7('0x4a')],'waiting':_0x5a9af8['waiting']};_0x2b6a99[_0x34e7('0x22')](_0x3af254);}}_0x50c7a3({'count':_0x2b6a99['length'],'rows':_0x2b6a99});});},'OpenchannelQueues':function(_0xac9785){return new Promise(function(_0x54bb7a,_0x39c48c){var _0x3e1c3d=[];for(var _0x5aad48 in _0x5b0b11['openchannelQueues']){if(_0x5b0b11[_0x34e7('0x4d')][_0x34e7('0x42')](_0x5aad48)){var _0x4960d9=_0x5b0b11[_0x34e7('0x4d')][_0x5aad48];var _0x311646={'id':_0x4960d9['id'],'available':_0x4960d9[_0x34e7('0x47')],'loggedIn':_0x4960d9[_0x34e7('0x48')],'name':_0x4960d9[_0x34e7('0x49')],'paused':_0x4960d9[_0x34e7('0x4a')],'waiting':_0x4960d9['waiting']};_0x3e1c3d[_0x34e7('0x22')](_0x311646);}}_0x54bb7a({'count':_0x3e1c3d[_0x34e7('0x1a')],'rows':_0x3e1c3d});});},'SmsQueues':function(_0x57b850){return new Promise(function(_0x238fb9,_0x1b95d0){var _0x465971=[];for(var _0x1c65ea in _0x5b0b11[_0x34e7('0x4e')]){if(_0x5b0b11[_0x34e7('0x4e')]['hasOwnProperty'](_0x1c65ea)){var _0x1b6b39=_0x5b0b11['smsQueues'][_0x1c65ea];var _0xe42724={'id':_0x1b6b39['id'],'available':_0x1b6b39[_0x34e7('0x47')],'loggedIn':_0x1b6b39[_0x34e7('0x48')],'name':_0x1b6b39[_0x34e7('0x49')],'paused':_0x1b6b39[_0x34e7('0x4a')],'waiting':_0x1b6b39[_0x34e7('0x4b')]};_0x465971[_0x34e7('0x22')](_0xe42724);}}_0x238fb9({'count':_0x465971[_0x34e7('0x1a')],'rows':_0x465971});});},'FaxQueues':function(_0x2cdc1f){return new Promise(function(_0x1e0cf4,_0x25400f){var _0x4687d6=[];for(var _0x61e62e in _0x5b0b11[_0x34e7('0x4f')]){if(_0x5b0b11[_0x34e7('0x4f')]['hasOwnProperty'](_0x61e62e)){var _0x229985=_0x5b0b11[_0x34e7('0x4f')][_0x61e62e];var _0x3be1f7={'id':_0x229985['id'],'available':_0x229985[_0x34e7('0x47')],'loggedIn':_0x229985[_0x34e7('0x48')],'name':_0x229985[_0x34e7('0x49')],'paused':_0x229985[_0x34e7('0x4a')],'waiting':_0x229985[_0x34e7('0x4b')]};_0x4687d6[_0x34e7('0x22')](_0x3be1f7);}}_0x1e0cf4({'count':_0x4687d6[_0x34e7('0x1a')],'rows':_0x4687d6});});},'ChatQueuesWaitingInteractions':function(_0x4f16c9){return new Promise(function(_0x38b30b,_0x3942ee){var _0x411ba6=_[_0x34e7('0x50')](_0x5b0b11[_0x34e7('0x51')]);_0x38b30b({'count':_0x411ba6['length'],'rows':_0x411ba6});});},'MailQueuesWaitingInteractions':function(_0x58f6eb){return new Promise(function(_0x224715,_0x14486b){var _0x1cd93b=_['values'](_0x5b0b11[_0x34e7('0x52')]);_0x224715({'count':_0x1cd93b[_0x34e7('0x1a')],'rows':_0x1cd93b});});},'OpenchannelQueuesWaitingInteractions':function(_0x27d545){return new Promise(function(_0x401e7e,_0x96e6fe){var _0x31ff7d=_['values'](_0x5b0b11[_0x34e7('0x53')]);_0x401e7e({'count':_0x31ff7d[_0x34e7('0x1a')],'rows':_0x31ff7d});});},'SmsQueuesWaitingInteractions':function(_0x48c6bb){return new Promise(function(_0x234234,_0xe0a290){var _0x525e8e=_[_0x34e7('0x50')](_0x5b0b11[_0x34e7('0x54')]);_0x234234({'count':_0x525e8e[_0x34e7('0x1a')],'rows':_0x525e8e});});},'FaxQueuesWaitingInteractions':function(_0x5dec4b){return new Promise(function(_0x5f50cb,_0x2c3048){var _0x1484e0=_['values'](_0x5b0b11[_0x34e7('0x55')]);_0x5f50cb({'count':_0x1484e0[_0x34e7('0x1a')],'rows':_0x1484e0});});}};var _0x4c8a25=jayson[_0x34e7('0x56')](_0xcdc42b)[_0x34e7('0x57')]();_0x4c8a25['on'](_0x34e7('0x31'),function(_0x6da539){logger[_0x34e7('0x31')](JSON[_0x34e7('0x58')](_0x6da539));return _0xd5add1(_0x6da539);});_0x4c8a25[_0x34e7('0x14')](0x232c,_0x34e7('0x59'),function(){console[_0x34e7('0x5a')](_0x34e7('0x5b'),0x232c);return _0x224353(_0x34e7('0x5c')+0x232c);});});};
\ No newline at end of file
index 35fad01..669a2a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1da=['../../../config/logger','client','http','request','then','error','result','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','Command','iftime\x20%s','message','indexOf','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','catch','log','util','bluebird','jayson/promise','lodash'];(function(_0x1c3ad7,_0x2d8686){var _0x3dc313=function(_0x74ff15){while(--_0x74ff15){_0x1c3ad7['push'](_0x1c3ad7['shift']());}};_0x3dc313(++_0x2d8686);}(_0xa1da,0xf8));var _0xaa1d=function(_0x44abfc,_0x256165){_0x44abfc=_0x44abfc-0x0;var _0x2cf1b=_0xa1da[_0x44abfc];return _0x2cf1b;};'use strict';var util=require(_0xaa1d('0x0'));var BPromise=require(_0xaa1d('0x1'));var jayson=require(_0xaa1d('0x2'));var _=require(_0xaa1d('0x3'));var logger=require(_0xaa1d('0x4'))('routing');var client=jayson[_0xaa1d('0x5')][_0xaa1d('0x6')]({'port':0x232a});function request(_0xfd31be,_0x146c39){return new BPromise(function(_0x45293e,_0x181410){return client[_0xaa1d('0x7')](_0xfd31be,_0x146c39)[_0xaa1d('0x8')](function(_0x17b0a1){if(_0x17b0a1[_0xaa1d('0x9')]){return _0x181410(_0x17b0a1['error']['message']);}else{return _0x45293e(_0x17b0a1[_0xaa1d('0xa')]);}})['catch'](function(_0x44c28f){return _0x181410(_0x44c28f);});});}exports[_0xaa1d('0xb')]=function(_0x5c5513,_0xda3ecc,_0x3fd500){return function(_0x8c1ff6){if(_0x3fd500[_0xaa1d('0xc')]&&!_0x3fd500['rules'][_0x5c5513]){logger[_0xaa1d('0xd')](_0xaa1d('0xe'),_0x5c5513);return _0x8c1ff6[_0xaa1d('0xf')]();}var _0x4fcdf4=[];for(var _0x9305ae=0x0;_0x9305ae<_0xda3ecc['length'];_0x9305ae+=0x1){_0x4fcdf4['push'](request(_0xaa1d('0x10'),{'command':util['format'](_0xaa1d('0x11'),_0xda3ecc[_0x9305ae])})['then'](function(_0x158a5d){return _0x158a5d&&_0x158a5d[_0xaa1d('0x12')]&&_0x158a5d[_0xaa1d('0x12')][_0xaa1d('0x13')]('true')>=0x0?!![]:![];})['catch'](function(_0x3f7105){logger[_0xaa1d('0x9')](_0xaa1d('0x14'),_0x5c5513,_0xda3ecc[_0x9305ae]);}));}BPromise[_0xaa1d('0x15')](_0x4fcdf4)[_0xaa1d('0x8')](function(_0x39b2a4){var _0x5e2f1b=_[_0xaa1d('0x16')](_0x39b2a4);logger[_0xaa1d('0xd')](_0xaa1d('0x17'),_0x5c5513,_0xda3ecc[_0xaa1d('0x18')](_0xaa1d('0x19')),_0x5e2f1b);_0x8c1ff6['when'](_0x5e2f1b);})[_0xaa1d('0x1a')](function(_0x45ba2f){console[_0xaa1d('0x1b')](_0x45ba2f);logger[_0xaa1d('0x9')](_0xaa1d('0x17'),_0x5c5513,_0xda3ecc[_0xaa1d('0x18')]('\x20|\x20'),_0x45ba2f['stack']);_0x8c1ff6[_0xaa1d('0xf')]();});};};
\ No newline at end of file
+var _0xda63=['[%s][INTERVAL]\x20%s','all','some','when','join','\x20|\x20','util','bluebird','jayson/promise','lodash','client','http','then','message','result','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','iftime\x20%s','true','error'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xda63,0x92));var _0x3da6=function(_0x3994af,_0xce88ab){_0x3994af=_0x3994af-0x0;var _0x17f151=_0xda63[_0x3994af];return _0x17f151;};'use strict';var util=require(_0x3da6('0x0'));var BPromise=require(_0x3da6('0x1'));var jayson=require(_0x3da6('0x2'));var _=require(_0x3da6('0x3'));var logger=require('../../../config/logger')('routing');var client=jayson[_0x3da6('0x4')][_0x3da6('0x5')]({'port':0x232a});function request(_0x4dfa01,_0x4daf50){return new BPromise(function(_0x39fdd6,_0x33218e){return client['request'](_0x4dfa01,_0x4daf50)[_0x3da6('0x6')](function(_0x6f9aea){if(_0x6f9aea['error']){return _0x33218e(_0x6f9aea['error'][_0x3da6('0x7')]);}else{return _0x39fdd6(_0x6f9aea[_0x3da6('0x8')]);}})[_0x3da6('0x9')](function(_0x5ddbe3){return _0x33218e(_0x5ddbe3);});});}exports[_0x3da6('0xa')]=function(_0x33eeaa,_0x378da8,_0x2d3fc8){return function(_0x147afc){if(_0x2d3fc8['rules']&&!_0x2d3fc8[_0x3da6('0xb')][_0x33eeaa]){logger[_0x3da6('0xc')](_0x3da6('0xd'),_0x33eeaa);return _0x147afc[_0x3da6('0xe')]();}var _0x1712ee=[];for(var _0x337860=0x0;_0x337860<_0x378da8[_0x3da6('0xf')];_0x337860+=0x1){_0x1712ee[_0x3da6('0x10')](request(_0x3da6('0x11'),{'command':util[_0x3da6('0x12')](_0x3da6('0x13'),_0x378da8[_0x337860])})[_0x3da6('0x6')](function(_0x46b240){return _0x46b240&&_0x46b240[_0x3da6('0x7')]&&_0x46b240[_0x3da6('0x7')]['indexOf'](_0x3da6('0x14'))>=0x0?!![]:![];})[_0x3da6('0x9')](function(_0x2ad8f){logger[_0x3da6('0x15')](_0x3da6('0x16'),_0x33eeaa,_0x378da8[_0x337860]);}));}BPromise[_0x3da6('0x17')](_0x1712ee)['then'](function(_0x487231){var _0x543870=_[_0x3da6('0x18')](_0x487231);logger['info']('[%s][INTERVAL]\x20%s\x20%s',_0x33eeaa,_0x378da8['join']('\x20|\x20'),_0x543870);_0x147afc[_0x3da6('0x19')](_0x543870);})['catch'](function(_0x437361){console['log'](_0x437361);logger['error']('[%s][INTERVAL]\x20%s\x20%s',_0x33eeaa,_0x378da8[_0x3da6('0x1a')](_0x3da6('0x1b')),_0x437361['stack']);_0x147afc[_0x3da6('0xe')]();});};};
\ No newline at end of file
index 1d77c79..e317412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd26c=['util','./utils','format','uniqueid','channel','calleridnum','connectedlinenum','lastevent','queue','getVoiceQueueByName','then','type','agentcomplete','acw','acwtime','agentacw','request','destchannel','agentringnoanswer','agentconnect','agentcalled','assign','now','called','isNil','rejected','queuecallerabandon','connect','answered_elsewhere','destuniqueid','membername','cdr','transfererchannel','attendedtransfer','origtransfererchannel','clone','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfereechannel','transfereecalleridname','agentconnectAt','destinationchannel','agentcalledAt','endtime','complete','agentringnoanswerAt','answertime','starttime','unknown','transfer','lodash'];(function(_0x311fff,_0x5b4756){var _0x9bb4bd=function(_0x5afb0c){while(--_0x5afb0c){_0x311fff['push'](_0x311fff['shift']());}};_0x9bb4bd(++_0x5b4756);}(_0xd26c,0x103));var _0xcd26=function(_0x2f0ab9,_0x30a347){_0x2f0ab9=_0x2f0ab9-0x0;var _0x30346c=_0xd26c[_0x2f0ab9];return _0x30346c;};'use strict';var _=require(_0xcd26('0x0'));var util=require(_0xcd26('0x1'));var utils=require(_0xcd26('0x2'));var agents={};var transfers={};function writeDB(_0x248c59){utils['info'](util[_0xcd26('0x3')]('AGENT|%s|%s|%s|%s|%s|%s|%s|%s',_0x248c59[_0xcd26('0x4')],_0x248c59[_0xcd26('0x5')],_0x248c59['queue'],_0x248c59['membername'],_0x248c59['interface'],_0x248c59[_0xcd26('0x6')],_0x248c59[_0xcd26('0x7')],_0x248c59[_0xcd26('0x8')]));if(_0x248c59[_0xcd26('0x9')]){utils[_0xcd26('0xa')](_0x248c59[_0xcd26('0x9')])[_0xcd26('0xb')](function(_0x5bc46d){if(_0x5bc46d){_0x248c59[_0xcd26('0xc')]=_0x5bc46d['type'];_0x248c59['agentacw']=_0x248c59[_0xcd26('0xd')]?_0x5bc46d[_0xcd26('0xe')]:![];_0x248c59[_0xcd26('0xf')]=_0x248c59[_0xcd26('0x10')]?_0x5bc46d['acwTimeout']:null;}utils[_0xcd26('0x11')]('CreateVoiceAgentReport',_0x248c59);});}else{utils['request']('CreateVoiceAgentReport',_0x248c59);}delete agents[_0x248c59[_0xcd26('0x12')]];}function isClosed(_0x5ed95f){return _0x5ed95f[_0xcd26('0x13')]||_0x5ed95f[_0xcd26('0x14')]||_0x5ed95f['agentcomplete'];}exports[_0xcd26('0x15')]=function(_0x2f0a54){agents[_0x2f0a54['destchannel']]=_[_0xcd26('0x16')](_0x2f0a54,{'agentcalled':!![],'agentcalledAt':utils[_0xcd26('0x17')](),'lastevent':_0xcd26('0x18')});};exports[_0xcd26('0x13')]=function(_0x5bdb06){if(!_[_0xcd26('0x19')](agents[_0x5bdb06[_0xcd26('0x12')]])){agents[_0x5bdb06[_0xcd26('0x12')]]=_['assign'](agents[_0x5bdb06[_0xcd26('0x12')]],_0x5bdb06,{'agentringnoanswer':!![],'agentringnoanswerAt':utils['now'](),'lastevent':'rejected','reason':_0xcd26('0x1a')});}};exports[_0xcd26('0x1b')]=function(_0x5da562){_['forIn'](agents,function(_0x46a264,_0x318955){if(_0x46a264[_0xcd26('0x5')]==_0x5da562[_0xcd26('0x5')]){if(!isClosed(_0x46a264)){_0x46a264=_[_0xcd26('0x16')](_0x46a264,{'agentringnoanswer':!![],'agentringnoanswerAt':utils[_0xcd26('0x17')](),'lastevent':'abandon','reason':'abandon'});}}});};exports[_0xcd26('0x14')]=function(_0x90949c){if(!_[_0xcd26('0x19')](agents[_0x90949c['destchannel']])){agents[_0x90949c['destchannel']]=_[_0xcd26('0x16')](agents[_0x90949c['destchannel']],_0x90949c,{'agentconnect':!![],'agentconnectAt':utils['now'](),'lastevent':_0xcd26('0x1c')});_['forIn'](agents,function(_0x3cca04,_0x1907fa){if(_0x3cca04['channel']==_0x90949c[_0xcd26('0x5')]){if(!isClosed(_0x3cca04)){_0x3cca04=_[_0xcd26('0x16')](_0x3cca04,{'agentringnoanswer':!![],'agentringnoanswerAt':utils['now'](),'lastevent':_0xcd26('0x1d'),'reason':'answered_elsewhere','answeredelsewheredestinationuniqueid':_0x90949c[_0xcd26('0x1e')],'answeredelsewheremembername':_0x90949c[_0xcd26('0x1f')]});}}});}};exports[_0xcd26('0xd')]=function(_0x261cdf){if(!_[_0xcd26('0x19')](agents[_0x261cdf[_0xcd26('0x12')]])){agents[_0x261cdf['destchannel']]=_[_0xcd26('0x16')](agents[_0x261cdf['destchannel']],_0x261cdf,{'agentcomplete':!![],'agentcompleteAt':utils[_0xcd26('0x17')](),'lastevent':'complete'});}};exports['blindtransfer']=function(_0x3c202d){if(!_[_0xcd26('0x19')](agents[_0x3c202d['transfererchannel']])){this[_0xcd26('0x20')]({'destinationchannel':_0x3c202d[_0xcd26('0x21')]});}};exports[_0xcd26('0x22')]=function(_0x1e0121){_['forIn'](agents,function(_0x500271){if(_0x500271[_0xcd26('0x5')]==_0x1e0121[_0xcd26('0x23')]){transfers[_0x500271[_0xcd26('0x12')]]=_[_0xcd26('0x24')](_0x500271);transfers[_0x500271[_0xcd26('0x12')]]=_['assign'](transfers[_0x500271['destchannel']],{'channel':_0x1e0121[_0xcd26('0x25')],'calleridname':_0x1e0121[_0xcd26('0x26')],'calleridnum':_0x1e0121[_0xcd26('0x27')]});}else if(_0x500271[_0xcd26('0x5')]==_0x1e0121['secondtransfererchannel']){transfers[_0x500271[_0xcd26('0x12')]]=_[_0xcd26('0x24')](_0x500271);transfers[_0x500271['destchannel']]=_[_0xcd26('0x16')](transfers[_0x500271['destchannel']],{'channel':_0x1e0121[_0xcd26('0x28')],'calleridname':_0x1e0121[_0xcd26('0x29')],'calleridnum':_0x1e0121['transfereeconnectedlinenum']});}});};exports[_0xcd26('0x20')]=function(_0x354802){if(!_[_0xcd26('0x19')](agents[_0x354802['destinationchannel']])){if(!_[_0xcd26('0x19')](agents[_0x354802['destinationchannel']][_0xcd26('0x2a')])){agents[_0x354802[_0xcd26('0x2b')]]=_[_0xcd26('0x16')](agents[_0x354802[_0xcd26('0x2b')]],{'agentcomplete':!![],'agentcompleteAt':_0x354802['endtime'],'holdtime':utils['diffTime'](agents[_0x354802['destinationchannel']][_0xcd26('0x2a')],agents[_0x354802[_0xcd26('0x2b')]][_0xcd26('0x2c')]),'talktime':utils['diffTime'](_0x354802[_0xcd26('0x2d')],agents[_0x354802[_0xcd26('0x2b')]]['agentconnectAt']),'lastevent':_0xcd26('0x2e')});}else if(_['isNil'](agents[_0x354802['destinationchannel']][_0xcd26('0x2f')])){agents[_0x354802[_0xcd26('0x2b')]]=_[_0xcd26('0x16')](agents[_0x354802[_0xcd26('0x2b')]],{'agentringnoanswer':!![],'agentringnoanswerAt':_0x354802[_0xcd26('0x30')]||_0x354802[_0xcd26('0x31')],'reason':_0xcd26('0x32')});}writeDB(agents[_0x354802[_0xcd26('0x2b')]]);if(!_[_0xcd26('0x19')](transfers[_0x354802['destinationchannel']])){agents[_0x354802['destinationchannel']]=_['assign'](transfers[_0x354802[_0xcd26('0x2b')]],{'agentcalledAt':utils[_0xcd26('0x17')](),'agentconnectAt':transfers[_0x354802['destinationchannel']][_0xcd26('0x14')]?utils['now']():null,'lastevent':'connect','reason':_0xcd26('0x33')});delete transfers[_0x354802[_0xcd26('0x2b')]];}}};
\ No newline at end of file
+var _0x0e34=['transfer','lodash','util','./utils','info','AGENT|%s|%s|%s|%s|%s|%s|%s|%s','uniqueid','channel','queue','membername','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentcomplete','acw','agentacw','acwTimeout','request','CreateVoiceAgentReport','destchannel','agentringnoanswer','agentconnect','agentcalled','assign','now','called','isNil','rejected','queuecallerabandon','forIn','abandon','connect','destuniqueid','blindtransfer','transfererchannel','cdr','attendedtransfer','origtransfererchannel','clone','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfereecalleridname','transfereeconnectedlinenum','destinationchannel','agentconnectAt','endtime','diffTime','complete','agentringnoanswerAt','answertime','starttime'];(function(_0x4259cd,_0x32ffd6){var _0x4f5230=function(_0x24ca95){while(--_0x24ca95){_0x4259cd['push'](_0x4259cd['shift']());}};_0x4f5230(++_0x32ffd6);}(_0x0e34,0x1f0));var _0x40e3=function(_0x48aa18,_0x1de98d){_0x48aa18=_0x48aa18-0x0;var _0x4cc88a=_0x0e34[_0x48aa18];return _0x4cc88a;};'use strict';var _=require(_0x40e3('0x0'));var util=require(_0x40e3('0x1'));var utils=require(_0x40e3('0x2'));var agents={};var transfers={};function writeDB(_0x3154e0){utils[_0x40e3('0x3')](util['format'](_0x40e3('0x4'),_0x3154e0[_0x40e3('0x5')],_0x3154e0[_0x40e3('0x6')],_0x3154e0[_0x40e3('0x7')],_0x3154e0[_0x40e3('0x8')],_0x3154e0['interface'],_0x3154e0[_0x40e3('0x9')],_0x3154e0[_0x40e3('0xa')],_0x3154e0[_0x40e3('0xb')]));if(_0x3154e0['queue']){utils[_0x40e3('0xc')](_0x3154e0[_0x40e3('0x7')])[_0x40e3('0xd')](function(_0x471c53){if(_0x471c53){_0x3154e0[_0x40e3('0xe')]=_0x471c53[_0x40e3('0xe')];_0x3154e0['agentacw']=_0x3154e0[_0x40e3('0xf')]?_0x471c53[_0x40e3('0x10')]:![];_0x3154e0['acwtime']=_0x3154e0[_0x40e3('0x11')]?_0x471c53[_0x40e3('0x12')]:null;}utils[_0x40e3('0x13')](_0x40e3('0x14'),_0x3154e0);});}else{utils[_0x40e3('0x13')]('CreateVoiceAgentReport',_0x3154e0);}delete agents[_0x3154e0[_0x40e3('0x15')]];}function isClosed(_0x4eccaa){return _0x4eccaa[_0x40e3('0x16')]||_0x4eccaa[_0x40e3('0x17')]||_0x4eccaa[_0x40e3('0xf')];}exports[_0x40e3('0x18')]=function(_0x268825){agents[_0x268825[_0x40e3('0x15')]]=_[_0x40e3('0x19')](_0x268825,{'agentcalled':!![],'agentcalledAt':utils[_0x40e3('0x1a')](),'lastevent':_0x40e3('0x1b')});};exports['agentringnoanswer']=function(_0x500119){if(!_[_0x40e3('0x1c')](agents[_0x500119[_0x40e3('0x15')]])){agents[_0x500119['destchannel']]=_[_0x40e3('0x19')](agents[_0x500119['destchannel']],_0x500119,{'agentringnoanswer':!![],'agentringnoanswerAt':utils[_0x40e3('0x1a')](),'lastevent':_0x40e3('0x1d'),'reason':_0x40e3('0x1d')});}};exports[_0x40e3('0x1e')]=function(_0x26f505){_[_0x40e3('0x1f')](agents,function(_0x3f5cd8,_0x15c460){if(_0x3f5cd8[_0x40e3('0x6')]==_0x26f505[_0x40e3('0x6')]){if(!isClosed(_0x3f5cd8)){_0x3f5cd8=_[_0x40e3('0x19')](_0x3f5cd8,{'agentringnoanswer':!![],'agentringnoanswerAt':utils['now'](),'lastevent':_0x40e3('0x20'),'reason':_0x40e3('0x20')});}}});};exports['agentconnect']=function(_0x363262){if(!_[_0x40e3('0x1c')](agents[_0x363262[_0x40e3('0x15')]])){agents[_0x363262[_0x40e3('0x15')]]=_[_0x40e3('0x19')](agents[_0x363262['destchannel']],_0x363262,{'agentconnect':!![],'agentconnectAt':utils[_0x40e3('0x1a')](),'lastevent':_0x40e3('0x21')});_[_0x40e3('0x1f')](agents,function(_0x181da6,_0x16bc09){if(_0x181da6[_0x40e3('0x6')]==_0x363262[_0x40e3('0x6')]){if(!isClosed(_0x181da6)){_0x181da6=_[_0x40e3('0x19')](_0x181da6,{'agentringnoanswer':!![],'agentringnoanswerAt':utils['now'](),'lastevent':'answered_elsewhere','reason':'answered_elsewhere','answeredelsewheredestinationuniqueid':_0x363262[_0x40e3('0x22')],'answeredelsewheremembername':_0x363262[_0x40e3('0x8')]});}}});}};exports['agentcomplete']=function(_0x368016){if(!_[_0x40e3('0x1c')](agents[_0x368016['destchannel']])){agents[_0x368016[_0x40e3('0x15')]]=_[_0x40e3('0x19')](agents[_0x368016['destchannel']],_0x368016,{'agentcomplete':!![],'agentcompleteAt':utils['now'](),'lastevent':'complete'});}};exports[_0x40e3('0x23')]=function(_0x52ee21){if(!_[_0x40e3('0x1c')](agents[_0x52ee21[_0x40e3('0x24')]])){this[_0x40e3('0x25')]({'destinationchannel':_0x52ee21[_0x40e3('0x24')]});}};exports[_0x40e3('0x26')]=function(_0x189a25){_[_0x40e3('0x1f')](agents,function(_0x1f68c7){if(_0x1f68c7['channel']==_0x189a25[_0x40e3('0x27')]){transfers[_0x1f68c7[_0x40e3('0x15')]]=_[_0x40e3('0x28')](_0x1f68c7);transfers[_0x1f68c7[_0x40e3('0x15')]]=_[_0x40e3('0x19')](transfers[_0x1f68c7[_0x40e3('0x15')]],{'channel':_0x189a25[_0x40e3('0x29')],'calleridname':_0x189a25[_0x40e3('0x2a')],'calleridnum':_0x189a25[_0x40e3('0x2b')]});}else if(_0x1f68c7['channel']==_0x189a25['secondtransfererchannel']){transfers[_0x1f68c7[_0x40e3('0x15')]]=_['clone'](_0x1f68c7);transfers[_0x1f68c7[_0x40e3('0x15')]]=_[_0x40e3('0x19')](transfers[_0x1f68c7[_0x40e3('0x15')]],{'channel':_0x189a25['transfereechannel'],'calleridname':_0x189a25[_0x40e3('0x2c')],'calleridnum':_0x189a25[_0x40e3('0x2d')]});}});};exports['cdr']=function(_0x5258d1){if(!_[_0x40e3('0x1c')](agents[_0x5258d1[_0x40e3('0x2e')]])){if(!_[_0x40e3('0x1c')](agents[_0x5258d1[_0x40e3('0x2e')]][_0x40e3('0x2f')])){agents[_0x5258d1[_0x40e3('0x2e')]]=_[_0x40e3('0x19')](agents[_0x5258d1['destinationchannel']],{'agentcomplete':!![],'agentcompleteAt':_0x5258d1[_0x40e3('0x30')],'holdtime':utils[_0x40e3('0x31')](agents[_0x5258d1[_0x40e3('0x2e')]][_0x40e3('0x2f')],agents[_0x5258d1['destinationchannel']]['agentcalledAt']),'talktime':utils['diffTime'](_0x5258d1[_0x40e3('0x30')],agents[_0x5258d1[_0x40e3('0x2e')]][_0x40e3('0x2f')]),'lastevent':_0x40e3('0x32')});}else if(_[_0x40e3('0x1c')](agents[_0x5258d1['destinationchannel']][_0x40e3('0x33')])){agents[_0x5258d1[_0x40e3('0x2e')]]=_['assign'](agents[_0x5258d1[_0x40e3('0x2e')]],{'agentringnoanswer':!![],'agentringnoanswerAt':_0x5258d1[_0x40e3('0x34')]||_0x5258d1[_0x40e3('0x35')],'reason':'unknown'});}writeDB(agents[_0x5258d1[_0x40e3('0x2e')]]);if(!_[_0x40e3('0x1c')](transfers[_0x5258d1['destinationchannel']])){agents[_0x5258d1['destinationchannel']]=_[_0x40e3('0x19')](transfers[_0x5258d1[_0x40e3('0x2e')]],{'agentcalledAt':utils[_0x40e3('0x1a')](),'agentconnectAt':transfers[_0x5258d1[_0x40e3('0x2e')]][_0x40e3('0x17')]?utils[_0x40e3('0x1a')]():null,'lastevent':'connect','reason':_0x40e3('0x36')});delete transfers[_0x5258d1[_0x40e3('0x2e')]];}}};
\ No newline at end of file
index a00ae31..2c58af0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04e9=['substring','lastIndexOf','queue','connectedlinenum','assign','starttime','isBefore','isAfter','endtime','startsWith','destinationchannel','util','answertime','info','CALL|%s|%s|%s|%s|%s|%s|%s|%s','uniqueid','channel','type','source','destination','callerid','disposition','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','isNil','now','musiconholdstop','musiconholdstartAt','mohtime','diffTime','variable','xmd-originatecalleridnum','value','xmd-phone','xmd-callerid-preview','xmd-callerid','xmd-queue','lastapplication','Queue','lastdata','xmd-contactid','ContactId','outboundrouteid','routeid','newexten','application','toLowerCase','set','appdata','cdr','split'];(function(_0x113136,_0x13d215){var _0x9f8029=function(_0x26e37d){while(--_0x26e37d){_0x113136['push'](_0x113136['shift']());}};_0x9f8029(++_0x13d215);}(_0x04e9,0x7b));var _0x904e=function(_0x3c0707,_0x15e0aa){_0x3c0707=_0x3c0707-0x0;var _0x3fadea=_0x04e9[_0x3c0707];return _0x3fadea;};'use strict';var _=require('lodash');var util=require(_0x904e('0x0'));var utils=require('./utils');var channels={};var timeouts={};function writeDB(_0x5a3ae8){return function(){_0x5a3ae8[_0x904e('0x1')]=_0x5a3ae8[_0x904e('0x1')]||null;utils[_0x904e('0x2')](util['format'](_0x904e('0x3'),_0x5a3ae8[_0x904e('0x4')],_0x5a3ae8[_0x904e('0x5')],_0x5a3ae8[_0x904e('0x6')],_0x5a3ae8['accountcode'],_0x5a3ae8[_0x904e('0x7')],_0x5a3ae8[_0x904e('0x8')],_0x5a3ae8[_0x904e('0x9')],_0x5a3ae8[_0x904e('0xa')]));if(_0x5a3ae8[_0x904e('0xb')]){utils[_0x904e('0xc')](_0x5a3ae8[_0x904e('0xb')])[_0x904e('0xd')](function(_0x524643){if(_0x524643){_0x5a3ae8[_0x904e('0xe')]=_0x524643['id'];}utils[_0x904e('0xf')](_0x904e('0x10'),_0x5a3ae8);});}else{utils['request'](_0x904e('0x10'),_0x5a3ae8);}if(channels[_0x5a3ae8[_0x904e('0x5')]]){delete channels[_0x5a3ae8[_0x904e('0x5')]];}if(timeouts[_0x5a3ae8[_0x904e('0x5')]]){delete timeouts[_0x5a3ae8[_0x904e('0x5')]];}};}exports[_0x904e('0x11')]=function(_0x3fd757){if(_[_0x904e('0x12')](channels[_0x3fd757['channel']])){channels[_0x3fd757[_0x904e('0x5')]]={'mohtime':0x0};}};exports['musiconholdstart']=function(_0x24651d){if(!_[_0x904e('0x12')](channels[_0x24651d[_0x904e('0x5')]])){channels[_0x24651d[_0x904e('0x5')]]['musiconholdstartAt']=utils[_0x904e('0x13')]();}};exports[_0x904e('0x14')]=function(_0x59ed0b){if(!_[_0x904e('0x12')](channels[_0x59ed0b[_0x904e('0x5')]])){if(!_[_0x904e('0x12')](channels[_0x59ed0b[_0x904e('0x5')]][_0x904e('0x15')])){channels[_0x59ed0b[_0x904e('0x5')]][_0x904e('0x16')]+=utils[_0x904e('0x17')](utils[_0x904e('0x13')](),channels[_0x59ed0b['channel']][_0x904e('0x15')]);delete channels[_0x59ed0b[_0x904e('0x5')]][_0x904e('0x15')];}}};exports['varset']=function(_0x3de89f){if(!_[_0x904e('0x12')](channels[_0x3de89f[_0x904e('0x5')]])){if(!_[_0x904e('0x12')](_0x3de89f[_0x904e('0x18')][_0x904e('0x19')])){channels[_0x3de89f[_0x904e('0x5')]][_0x904e('0x7')]=_0x3de89f[_0x904e('0x1a')];}if(!_[_0x904e('0x12')](_0x3de89f[_0x904e('0x18')][_0x904e('0x1b')])){channels[_0x3de89f[_0x904e('0x5')]]['destination']=_0x3de89f['value'];}if(!_[_0x904e('0x12')](_0x3de89f[_0x904e('0x18')][_0x904e('0x1c')])||!_[_0x904e('0x12')](_0x3de89f[_0x904e('0x18')][_0x904e('0x1d')])){channels[_0x3de89f[_0x904e('0x5')]][_0x904e('0x9')]=_0x3de89f[_0x904e('0x1a')];}if(!_[_0x904e('0x12')](_0x3de89f[_0x904e('0x18')][_0x904e('0x1e')])){channels[_0x3de89f['channel']][_0x904e('0x1f')]=_0x904e('0x20');channels[_0x3de89f['channel']][_0x904e('0x21')]=_0x3de89f[_0x904e('0x1a')];channels[_0x3de89f[_0x904e('0x5')]]['queue']=!![];}if(!_[_0x904e('0x12')](_0x3de89f[_0x904e('0x18')][_0x904e('0x22')])){channels[_0x3de89f[_0x904e('0x5')]][_0x904e('0x23')]=_0x3de89f['value'];}if(!_['isNil'](_0x3de89f[_0x904e('0x18')][_0x904e('0x24')])){channels[_0x3de89f[_0x904e('0x5')]][_0x904e('0x25')]=_0x3de89f[_0x904e('0x1a')];}}};exports[_0x904e('0x26')]=function(_0x4fbd5a){if(!_[_0x904e('0x12')](channels[_0x4fbd5a[_0x904e('0x5')]])){if(_0x4fbd5a[_0x904e('0x27')][_0x904e('0x28')]()==_0x904e('0x29')&&_['startsWith'](_0x4fbd5a[_0x904e('0x2a')][_0x904e('0x28')](),_0x904e('0x2b'))){var _0x268e31=_0x4fbd5a[_0x904e('0x2a')][_0x904e('0x2c')]('=');var _0x2668a9=_0x268e31[0x0][_0x904e('0x2d')](_0x268e31[0x0]['lastIndexOf']('(')+0x1,_0x268e31[0x0][_0x904e('0x2e')](')'));var _0x769a47=_0x268e31[0x1];channels[_0x4fbd5a['channel']][_0x2668a9]=_0x769a47;}}};exports['agentcomplete']=function(_0x2b9e29){if(!_[_0x904e('0x12')](channels[_0x2b9e29[_0x904e('0x5')]])&&!_[_0x904e('0x12')](channels[_0x2b9e29[_0x904e('0x5')]][_0x904e('0x2f')])){channels[_0x2b9e29['channel']][_0x904e('0xb')]=_0x2b9e29[_0x904e('0x30')];}};exports[_0x904e('0x2b')]=function(_0x18f715){if(!_[_0x904e('0x12')](channels[_0x18f715[_0x904e('0x5')]])){if(_[_0x904e('0x12')](timeouts[_0x18f715[_0x904e('0x5')]])){channels[_0x18f715[_0x904e('0x5')]]=_[_0x904e('0x31')](_0x18f715,channels[_0x18f715[_0x904e('0x5')]]);}else{clearTimeout(timeouts[_0x18f715[_0x904e('0x5')]]);channels[_0x18f715[_0x904e('0x5')]]=_[_0x904e('0x31')](channels[_0x18f715[_0x904e('0x5')]],{'starttime':utils['isBefore'](_0x18f715[_0x904e('0x32')],channels[_0x18f715['channel']][_0x904e('0x32')])?_0x18f715[_0x904e('0x32')]:channels[_0x18f715['channel']]['starttime'],'answertime':utils[_0x904e('0x33')](_0x18f715[_0x904e('0x1')],channels[_0x18f715[_0x904e('0x5')]][_0x904e('0x1')])?_0x18f715[_0x904e('0x1')]:channels[_0x18f715[_0x904e('0x5')]][_0x904e('0x1')]});if(utils[_0x904e('0x34')](_0x18f715[_0x904e('0x35')],channels[_0x18f715[_0x904e('0x5')]][_0x904e('0x35')])){channels[_0x18f715[_0x904e('0x5')]]=_[_0x904e('0x31')](channels[_0x18f715[_0x904e('0x5')]],{'endtime':_0x18f715['endtime'],'destinationchannel':_[_0x904e('0x36')](_0x18f715[_0x904e('0x37')],'Local/_attended@transfer')?channels[_0x18f715[_0x904e('0x5')]][_0x904e('0x37')]:_0x18f715[_0x904e('0x37')]});}channels[_0x18f715[_0x904e('0x5')]]['duration']=utils['diffTime'](channels[_0x18f715['channel']][_0x904e('0x35')],channels[_0x18f715[_0x904e('0x5')]][_0x904e('0x32')]);channels[_0x18f715[_0x904e('0x5')]]['billableseconds']=utils[_0x904e('0x17')](channels[_0x18f715['channel']][_0x904e('0x35')],channels[_0x18f715[_0x904e('0x5')]][_0x904e('0x1')]);if(_0x18f715[_0x904e('0x1f')][_0x904e('0x28')]()!='hangup'){channels[_0x18f715[_0x904e('0x5')]]['lastdata']=_0x18f715['lastdata'];channels[_0x18f715['channel']][_0x904e('0x1f')]=_0x18f715['lastapplication'];}}timeouts[_0x18f715[_0x904e('0x5')]]=setTimeout(writeDB(channels[_0x18f715['channel']]),0x3e8);}};
\ No newline at end of file
+var _0x5643=['application','toLowerCase','set','startsWith','cdr','appdata','split','lastIndexOf','connectedlinenum','assign','isBefore','starttime','isAfter','endtime','destinationchannel','duration','billableseconds','hangup','answertime','info','format','CALL|%s|%s|%s|%s|%s|%s|%s|%s','channel','type','source','disposition','accountcode','then','UserId','request','CreateVoiceCallReport','newchannel','isNil','musiconholdstart','musiconholdstartAt','now','mohtime','diffTime','varset','variable','xmd-originatecalleridnum','value','xmd-phone','destination','xmd-callerid-preview','xmd-callerid','callerid','xmd-queue','lastapplication','Queue','lastdata','queue','xmd-contactid','ContactId','routeid','newexten'];(function(_0x487b25,_0x175dc0){var _0xd53878=function(_0x3b5b87){while(--_0x3b5b87){_0x487b25['push'](_0x487b25['shift']());}};_0xd53878(++_0x175dc0);}(_0x5643,0x162));var _0x3564=function(_0x2b92ec,_0x14598d){_0x2b92ec=_0x2b92ec-0x0;var _0xb73a48=_0x5643[_0x2b92ec];return _0xb73a48;};'use strict';var _=require('lodash');var util=require('util');var utils=require('./utils');var channels={};var timeouts={};function writeDB(_0x53e2ec){return function(){_0x53e2ec['answertime']=_0x53e2ec[_0x3564('0x0')]||null;utils[_0x3564('0x1')](util[_0x3564('0x2')](_0x3564('0x3'),_0x53e2ec['uniqueid'],_0x53e2ec[_0x3564('0x4')],_0x53e2ec[_0x3564('0x5')],_0x53e2ec['accountcode'],_0x53e2ec[_0x3564('0x6')],_0x53e2ec['destination'],_0x53e2ec['callerid'],_0x53e2ec[_0x3564('0x7')]));if(_0x53e2ec[_0x3564('0x8')]){utils['getUserByInternal'](_0x53e2ec['accountcode'])[_0x3564('0x9')](function(_0x5c8ed6){if(_0x5c8ed6){_0x53e2ec[_0x3564('0xa')]=_0x5c8ed6['id'];}utils[_0x3564('0xb')](_0x3564('0xc'),_0x53e2ec);});}else{utils[_0x3564('0xb')](_0x3564('0xc'),_0x53e2ec);}if(channels[_0x53e2ec[_0x3564('0x4')]]){delete channels[_0x53e2ec['channel']];}if(timeouts[_0x53e2ec['channel']]){delete timeouts[_0x53e2ec[_0x3564('0x4')]];}};}exports[_0x3564('0xd')]=function(_0x1b42bd){if(_[_0x3564('0xe')](channels[_0x1b42bd[_0x3564('0x4')]])){channels[_0x1b42bd[_0x3564('0x4')]]={'mohtime':0x0};}};exports[_0x3564('0xf')]=function(_0x85516d){if(!_['isNil'](channels[_0x85516d[_0x3564('0x4')]])){channels[_0x85516d[_0x3564('0x4')]][_0x3564('0x10')]=utils[_0x3564('0x11')]();}};exports['musiconholdstop']=function(_0x336686){if(!_['isNil'](channels[_0x336686[_0x3564('0x4')]])){if(!_[_0x3564('0xe')](channels[_0x336686[_0x3564('0x4')]][_0x3564('0x10')])){channels[_0x336686['channel']][_0x3564('0x12')]+=utils[_0x3564('0x13')](utils['now'](),channels[_0x336686[_0x3564('0x4')]][_0x3564('0x10')]);delete channels[_0x336686[_0x3564('0x4')]]['musiconholdstartAt'];}}};exports[_0x3564('0x14')]=function(_0x11a625){if(!_[_0x3564('0xe')](channels[_0x11a625[_0x3564('0x4')]])){if(!_[_0x3564('0xe')](_0x11a625[_0x3564('0x15')][_0x3564('0x16')])){channels[_0x11a625['channel']][_0x3564('0x6')]=_0x11a625[_0x3564('0x17')];}if(!_[_0x3564('0xe')](_0x11a625[_0x3564('0x15')][_0x3564('0x18')])){channels[_0x11a625[_0x3564('0x4')]][_0x3564('0x19')]=_0x11a625[_0x3564('0x17')];}if(!_['isNil'](_0x11a625[_0x3564('0x15')][_0x3564('0x1a')])||!_[_0x3564('0xe')](_0x11a625[_0x3564('0x15')][_0x3564('0x1b')])){channels[_0x11a625[_0x3564('0x4')]][_0x3564('0x1c')]=_0x11a625[_0x3564('0x17')];}if(!_[_0x3564('0xe')](_0x11a625[_0x3564('0x15')][_0x3564('0x1d')])){channels[_0x11a625[_0x3564('0x4')]][_0x3564('0x1e')]=_0x3564('0x1f');channels[_0x11a625[_0x3564('0x4')]][_0x3564('0x20')]=_0x11a625[_0x3564('0x17')];channels[_0x11a625['channel']][_0x3564('0x21')]=!![];}if(!_[_0x3564('0xe')](_0x11a625[_0x3564('0x15')][_0x3564('0x22')])){channels[_0x11a625[_0x3564('0x4')]][_0x3564('0x23')]=_0x11a625[_0x3564('0x17')];}if(!_[_0x3564('0xe')](_0x11a625[_0x3564('0x15')]['outboundrouteid'])){channels[_0x11a625[_0x3564('0x4')]][_0x3564('0x24')]=_0x11a625[_0x3564('0x17')];}}};exports[_0x3564('0x25')]=function(_0x456e80){if(!_['isNil'](channels[_0x456e80[_0x3564('0x4')]])){if(_0x456e80[_0x3564('0x26')][_0x3564('0x27')]()==_0x3564('0x28')&&_[_0x3564('0x29')](_0x456e80['appdata'][_0x3564('0x27')](),_0x3564('0x2a'))){var _0x36a44c=_0x456e80[_0x3564('0x2b')][_0x3564('0x2c')]('=');var _0x428c15=_0x36a44c[0x0]['substring'](_0x36a44c[0x0][_0x3564('0x2d')]('(')+0x1,_0x36a44c[0x0][_0x3564('0x2d')](')'));var _0x2d144a=_0x36a44c[0x1];channels[_0x456e80[_0x3564('0x4')]][_0x428c15]=_0x2d144a;}}};exports['agentcomplete']=function(_0x124735){if(!_[_0x3564('0xe')](channels[_0x124735[_0x3564('0x4')]])&&!_[_0x3564('0xe')](channels[_0x124735[_0x3564('0x4')]][_0x3564('0x21')])){channels[_0x124735[_0x3564('0x4')]]['accountcode']=_0x124735[_0x3564('0x2e')];}};exports[_0x3564('0x2a')]=function(_0x1af87b){if(!_['isNil'](channels[_0x1af87b[_0x3564('0x4')]])){if(_[_0x3564('0xe')](timeouts[_0x1af87b['channel']])){channels[_0x1af87b[_0x3564('0x4')]]=_[_0x3564('0x2f')](_0x1af87b,channels[_0x1af87b['channel']]);}else{clearTimeout(timeouts[_0x1af87b[_0x3564('0x4')]]);channels[_0x1af87b['channel']]=_['assign'](channels[_0x1af87b['channel']],{'starttime':utils[_0x3564('0x30')](_0x1af87b[_0x3564('0x31')],channels[_0x1af87b[_0x3564('0x4')]]['starttime'])?_0x1af87b[_0x3564('0x31')]:channels[_0x1af87b[_0x3564('0x4')]]['starttime'],'answertime':utils[_0x3564('0x30')](_0x1af87b[_0x3564('0x0')],channels[_0x1af87b[_0x3564('0x4')]][_0x3564('0x0')])?_0x1af87b[_0x3564('0x0')]:channels[_0x1af87b[_0x3564('0x4')]][_0x3564('0x0')]});if(utils[_0x3564('0x32')](_0x1af87b[_0x3564('0x33')],channels[_0x1af87b[_0x3564('0x4')]]['endtime'])){channels[_0x1af87b[_0x3564('0x4')]]=_[_0x3564('0x2f')](channels[_0x1af87b[_0x3564('0x4')]],{'endtime':_0x1af87b[_0x3564('0x33')],'destinationchannel':_[_0x3564('0x29')](_0x1af87b[_0x3564('0x34')],'Local/_attended@transfer')?channels[_0x1af87b[_0x3564('0x4')]]['destinationchannel']:_0x1af87b[_0x3564('0x34')]});}channels[_0x1af87b[_0x3564('0x4')]][_0x3564('0x35')]=utils['diffTime'](channels[_0x1af87b['channel']][_0x3564('0x33')],channels[_0x1af87b[_0x3564('0x4')]][_0x3564('0x31')]);channels[_0x1af87b['channel']][_0x3564('0x36')]=utils['diffTime'](channels[_0x1af87b[_0x3564('0x4')]]['endtime'],channels[_0x1af87b['channel']]['answertime']);if(_0x1af87b[_0x3564('0x1e')][_0x3564('0x27')]()!=_0x3564('0x37')){channels[_0x1af87b[_0x3564('0x4')]][_0x3564('0x20')]=_0x1af87b[_0x3564('0x20')];channels[_0x1af87b[_0x3564('0x4')]][_0x3564('0x1e')]=_0x1af87b['lastapplication'];}}timeouts[_0x1af87b['channel']]=setTimeout(writeDB(channels[_0x1af87b[_0x3564('0x4')]]),0x3e8);}};
\ No newline at end of file
index 47705a6..1c96019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3027=['close','managerevent','./utils','connect','info','SHUTDOWN','fullybooted','FULLYBOOTED','error'];(function(_0x55162c,_0x54d6bd){var _0x389240=function(_0x386529){while(--_0x386529){_0x55162c['push'](_0x55162c['shift']());}};_0x389240(++_0x54d6bd);}(_0x3027,0x92));var _0x7302=function(_0x53a4d8,_0x446a35){_0x53a4d8=_0x53a4d8-0x0;var _0xe97cbd=_0x3027[_0x53a4d8];return _0xe97cbd;};'use strict';var utils=require(_0x7302('0x0'));exports[_0x7302('0x1')]=function(){utils[_0x7302('0x2')]('CONNECTED');};exports['shutdown']=function(){utils[_0x7302('0x2')](_0x7302('0x3'));};exports[_0x7302('0x4')]=function(){utils[_0x7302('0x2')](_0x7302('0x5'));};exports[_0x7302('0x6')]=function(_0x4a846f){utils[_0x7302('0x6')](_0x4a846f);};exports[_0x7302('0x7')]=function(){utils[_0x7302('0x2')]('CLOSE');};exports[_0x7302('0x8')]=function(_0x5aa25d){};
\ No newline at end of file
+var _0x0d78=['./utils','connect','info','shutdown','fullybooted','FULLYBOOTED','error','close','CLOSE','managerevent'];(function(_0xcdbbfd,_0xeaebe){var _0x1a3d7e=function(_0x29be41){while(--_0x29be41){_0xcdbbfd['push'](_0xcdbbfd['shift']());}};_0x1a3d7e(++_0xeaebe);}(_0x0d78,0x104));var _0x80d7=function(_0x2665a3,_0x3bac99){_0x2665a3=_0x2665a3-0x0;var _0x586de6=_0x0d78[_0x2665a3];return _0x586de6;};'use strict';var utils=require(_0x80d7('0x0'));exports[_0x80d7('0x1')]=function(){utils[_0x80d7('0x2')]('CONNECTED');};exports[_0x80d7('0x3')]=function(){utils['info']('SHUTDOWN');};exports[_0x80d7('0x4')]=function(){utils[_0x80d7('0x2')](_0x80d7('0x5'));};exports[_0x80d7('0x6')]=function(_0x45bdda){utils[_0x80d7('0x6')](_0x45bdda);};exports[_0x80d7('0x7')]=function(){utils[_0x80d7('0x2')](_0x80d7('0x8'));};exports[_0x80d7('0x9')]=function(_0x2bae9c){};
\ No newline at end of file
index f6bdce7..da9f361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['application','toLowerCase','cdr(routeid)','appdata','split','routeid','variable','outboundrouteid','dialbegin','destcontext','from-voip-provider','assign','called','dialend','dialstatus','ANSWER','now','connect','complete','duration','diffTime','starttime','holdtime','billableseconds','answertime','lodash','util','./utils','format','uniqueid','channel','dialstring','calleridnum','connectedlinenum','request','CreateVoiceDialReport','isNil','newexten'];(function(_0x5229bb,_0x4b17f5){var _0x15db9b=function(_0x2fb343){while(--_0x2fb343){_0x5229bb['push'](_0x5229bb['shift']());}};_0x15db9b(++_0x4b17f5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var utils=require(_0x0a9e('0x2'));var dials={};var channels={};function writeDB(_0x5dd881){utils['info'](util[_0x0a9e('0x3')]('DIAL|%s|%s|%s|%s|%s|%s',_0x5dd881[_0x0a9e('0x4')],_0x5dd881[_0x0a9e('0x5')],_0x5dd881[_0x0a9e('0x6')],_0x5dd881[_0x0a9e('0x7')],_0x5dd881[_0x0a9e('0x8')],_0x5dd881['dialstatus']));utils[_0x0a9e('0x9')](_0x0a9e('0xa'),_0x5dd881);delete dials[_0x5dd881[_0x0a9e('0x5')]];}exports['newchannel']=function(_0x503809){if(_[_0x0a9e('0xb')](channels[_0x503809['channel']])){channels[_0x503809['channel']]={'routeid':null};}};exports[_0x0a9e('0xc')]=function(_0xf81284){if(!_[_0x0a9e('0xb')](channels[_0xf81284[_0x0a9e('0x5')]])){if(_0xf81284[_0x0a9e('0xd')][_0x0a9e('0xe')]()=='set'&&_['startsWith'](_0xf81284['appdata']['toLowerCase'](),_0x0a9e('0xf'))){var _0x36471c=_0xf81284[_0x0a9e('0x10')][_0x0a9e('0x11')]('=');channels[_0xf81284[_0x0a9e('0x5')]][_0x0a9e('0x12')]=_0x36471c[0x1];}}};exports['varset']=function(_0x4283ce){if(!_[_0x0a9e('0xb')](channels[_0x4283ce[_0x0a9e('0x5')]])){if(!_[_0x0a9e('0xb')](_0x4283ce[_0x0a9e('0x13')][_0x0a9e('0x14')])){channels[_0x4283ce['channel']][_0x0a9e('0x12')]=_0x4283ce['value'];}}};exports[_0x0a9e('0x15')]=function(_0x519dfd){if(_0x519dfd[_0x0a9e('0x16')]==_0x0a9e('0x17')){dials[_0x519dfd['channel']]=_[_0x0a9e('0x18')](_0x519dfd,{'starttime':utils['now'](),'lastevent':_0x0a9e('0x19')});}};exports[_0x0a9e('0x1a')]=function(_0x106033){if(!_[_0x0a9e('0xb')](dials[_0x106033[_0x0a9e('0x5')]])){dials[_0x106033[_0x0a9e('0x5')]]=_[_0x0a9e('0x18')](dials[_0x106033[_0x0a9e('0x5')]],_0x106033,{'answertime':_0x106033[_0x0a9e('0x1b')]==_0x0a9e('0x1c')?utils[_0x0a9e('0x1d')]():null,'lastevent':_0x106033[_0x0a9e('0x1b')]=='ANSWER'?_0x0a9e('0x1e'):_0x0a9e('0x19')});}};exports['cdr']=function(_0x20f109){if(!_['isNil'](channels[_0x20f109['channel']])){if(!_[_0x0a9e('0xb')](dials[_0x20f109[_0x0a9e('0x5')]])){dials[_0x20f109[_0x0a9e('0x5')]]=_[_0x0a9e('0x18')](dials[_0x20f109['channel']],{'endtime':utils[_0x0a9e('0x1d')](),'routeId':channels[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x12')],'lastevent':_0x0a9e('0x1f')});dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x20')]=utils[_0x0a9e('0x21')](dials[_0x20f109['channel']]['endtime'],dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x22')]);dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x23')]=utils['diffTime'](dials[_0x20f109[_0x0a9e('0x5')]]['answertime']||dials[_0x20f109[_0x0a9e('0x5')]]['endtime'],dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x22')]);dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x24')]=dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x25')]?utils[_0x0a9e('0x21')](dials[_0x20f109[_0x0a9e('0x5')]]['endtime'],dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x25')]):0x0;writeDB(dials[_0x20f109[_0x0a9e('0x5')]]);}delete channels[_0x20f109[_0x0a9e('0x5')]];}};
\ No newline at end of file
+var _0xa9e0=['application','toLowerCase','cdr(routeid)','appdata','split','routeid','variable','outboundrouteid','dialbegin','destcontext','from-voip-provider','assign','called','dialend','dialstatus','ANSWER','now','connect','complete','duration','diffTime','starttime','holdtime','billableseconds','answertime','lodash','util','./utils','format','uniqueid','channel','dialstring','calleridnum','connectedlinenum','request','CreateVoiceDialReport','isNil','newexten'];(function(_0x4a63fc,_0x167a02){var _0x30d4c3=function(_0x3eecb2){while(--_0x3eecb2){_0x4a63fc['push'](_0x4a63fc['shift']());}};_0x30d4c3(++_0x167a02);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var utils=require(_0x0a9e('0x2'));var dials={};var channels={};function writeDB(_0x5dd881){utils['info'](util[_0x0a9e('0x3')]('DIAL|%s|%s|%s|%s|%s|%s',_0x5dd881[_0x0a9e('0x4')],_0x5dd881[_0x0a9e('0x5')],_0x5dd881[_0x0a9e('0x6')],_0x5dd881[_0x0a9e('0x7')],_0x5dd881[_0x0a9e('0x8')],_0x5dd881['dialstatus']));utils[_0x0a9e('0x9')](_0x0a9e('0xa'),_0x5dd881);delete dials[_0x5dd881[_0x0a9e('0x5')]];}exports['newchannel']=function(_0x503809){if(_[_0x0a9e('0xb')](channels[_0x503809['channel']])){channels[_0x503809['channel']]={'routeid':null};}};exports[_0x0a9e('0xc')]=function(_0xf81284){if(!_[_0x0a9e('0xb')](channels[_0xf81284[_0x0a9e('0x5')]])){if(_0xf81284[_0x0a9e('0xd')][_0x0a9e('0xe')]()=='set'&&_['startsWith'](_0xf81284['appdata']['toLowerCase'](),_0x0a9e('0xf'))){var _0x36471c=_0xf81284[_0x0a9e('0x10')][_0x0a9e('0x11')]('=');channels[_0xf81284[_0x0a9e('0x5')]][_0x0a9e('0x12')]=_0x36471c[0x1];}}};exports['varset']=function(_0x4283ce){if(!_[_0x0a9e('0xb')](channels[_0x4283ce[_0x0a9e('0x5')]])){if(!_[_0x0a9e('0xb')](_0x4283ce[_0x0a9e('0x13')][_0x0a9e('0x14')])){channels[_0x4283ce['channel']][_0x0a9e('0x12')]=_0x4283ce['value'];}}};exports[_0x0a9e('0x15')]=function(_0x519dfd){if(_0x519dfd[_0x0a9e('0x16')]==_0x0a9e('0x17')){dials[_0x519dfd['channel']]=_[_0x0a9e('0x18')](_0x519dfd,{'starttime':utils['now'](),'lastevent':_0x0a9e('0x19')});}};exports[_0x0a9e('0x1a')]=function(_0x106033){if(!_[_0x0a9e('0xb')](dials[_0x106033[_0x0a9e('0x5')]])){dials[_0x106033[_0x0a9e('0x5')]]=_[_0x0a9e('0x18')](dials[_0x106033[_0x0a9e('0x5')]],_0x106033,{'answertime':_0x106033[_0x0a9e('0x1b')]==_0x0a9e('0x1c')?utils[_0x0a9e('0x1d')]():null,'lastevent':_0x106033[_0x0a9e('0x1b')]=='ANSWER'?_0x0a9e('0x1e'):_0x0a9e('0x19')});}};exports['cdr']=function(_0x20f109){if(!_['isNil'](channels[_0x20f109['channel']])){if(!_[_0x0a9e('0xb')](dials[_0x20f109[_0x0a9e('0x5')]])){dials[_0x20f109[_0x0a9e('0x5')]]=_[_0x0a9e('0x18')](dials[_0x20f109['channel']],{'endtime':utils[_0x0a9e('0x1d')](),'routeId':channels[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x12')],'lastevent':_0x0a9e('0x1f')});dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x20')]=utils[_0x0a9e('0x21')](dials[_0x20f109['channel']]['endtime'],dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x22')]);dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x23')]=utils['diffTime'](dials[_0x20f109[_0x0a9e('0x5')]]['answertime']||dials[_0x20f109[_0x0a9e('0x5')]]['endtime'],dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x22')]);dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x24')]=dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x25')]?utils[_0x0a9e('0x21')](dials[_0x20f109[_0x0a9e('0x5')]]['endtime'],dials[_0x20f109[_0x0a9e('0x5')]][_0x0a9e('0x25')]):0x0;writeDB(dials[_0x20f109[_0x0a9e('0x5')]]);}delete channels[_0x20f109[_0x0a9e('0x5')]];}};
\ No newline at end of file
index db7f5bb..790cd68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc73=['./dials.controller','./utils','asterisk','port','password','keepConnected','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','agentcalled','agentringnoanswer','agentconnect','agentcomplete','queuecallerabandon','queuecallerjoin','queuecallerleave','musiconholdstart','musiconholdstop','cdr','blindtransfer','attendedtransfer','varset','newexten','newchannel','dialbegin','dialend','../../config/environment','./agents.controller','./recordings.controller'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcc73,0x1cb));var _0x3cc7=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xcc73[_0x501510];return _0x1e6ee5;};var AsteriskManager=require('asterisk-manager');var config=require(_0x3cc7('0x0'));var agents=require(_0x3cc7('0x1'));var calls=require('./calls.controller');var queues=require('./queues.controller');var recordings=require(_0x3cc7('0x2'));var members=require('./members.controller');var dials=require(_0x3cc7('0x3'));var transfers=require('./transfers.controller');var core=require('./core.controller');var utils=require(_0x3cc7('0x4'));var ami=new AsteriskManager(config[_0x3cc7('0x5')][_0x3cc7('0x6')],config[_0x3cc7('0x5')]['ip'],config[_0x3cc7('0x5')]['username'],config[_0x3cc7('0x5')][_0x3cc7('0x7')],!![]);ami[_0x3cc7('0x8')]();ami['on'](_0x3cc7('0x9'),core['connect']);ami['on'](_0x3cc7('0xa'),core[_0x3cc7('0xa')]);ami['on'](_0x3cc7('0xb'),core[_0x3cc7('0xb')]);ami['on'](_0x3cc7('0xc'),core[_0x3cc7('0xc')]);ami['on'](_0x3cc7('0xd'),core['close']);ami['on']('managerevent',core[_0x3cc7('0xe')]);ami['on']('devicestatechange',function(_0x2ee990){try{members[_0x3cc7('0xf')](_0x2ee990);}catch(_0x2e0ad9){utils[_0x3cc7('0xc')](_0x2e0ad9);}});ami['on'](_0x3cc7('0x10'),function(_0xe39b99){try{agents[_0x3cc7('0x10')](_0xe39b99);}catch(_0x31fab3){utils[_0x3cc7('0xc')](_0x31fab3);}});ami['on'](_0x3cc7('0x11'),function(_0x4238d5){try{agents[_0x3cc7('0x11')](_0x4238d5);}catch(_0x33ec21){utils[_0x3cc7('0xc')](_0x33ec21);}});ami['on'](_0x3cc7('0x12'),function(_0x857775){try{agents[_0x3cc7('0x12')](_0x857775);recordings[_0x3cc7('0x12')](_0x857775);queues[_0x3cc7('0x12')](_0x857775);}catch(_0x3f1ef0){utils[_0x3cc7('0xc')](_0x3f1ef0);}});ami['on'](_0x3cc7('0x13'),function(_0x2a4ddf){try{agents[_0x3cc7('0x13')](_0x2a4ddf);queues[_0x3cc7('0x13')](_0x2a4ddf);members[_0x3cc7('0x13')](_0x2a4ddf);calls[_0x3cc7('0x13')](_0x2a4ddf);}catch(_0x2483c9){utils[_0x3cc7('0xc')](_0x2483c9);}});ami['on']('queuecallerabandon',function(_0x4d2396){try{agents[_0x3cc7('0x14')](_0x4d2396);queues['queuecallerabandon'](_0x4d2396);}catch(_0x41c9fb){utils[_0x3cc7('0xc')](_0x41c9fb);}});ami['on'](_0x3cc7('0x15'),function(_0x576bf5){try{queues['queuecallerjoin'](_0x576bf5);}catch(_0x2434f2){utils[_0x3cc7('0xc')](_0x2434f2);}});ami['on']('queuecallerleave',function(_0x40906b){try{queues[_0x3cc7('0x16')](_0x40906b);}catch(_0x4bc893){utils[_0x3cc7('0xc')](_0x4bc893);}});ami['on']('musiconholdstart',function(_0x338cd3){try{queues['musiconholdstart'](_0x338cd3);calls[_0x3cc7('0x17')](_0x338cd3);}catch(_0x3b1fe6){utils[_0x3cc7('0xc')](_0x3b1fe6);}});ami['on'](_0x3cc7('0x18'),function(_0x29d2c8){try{queues[_0x3cc7('0x18')](_0x29d2c8);calls['musiconholdstop'](_0x29d2c8);}catch(_0x2fa3d5){utils[_0x3cc7('0xc')](_0x2fa3d5);}});ami['on'](_0x3cc7('0x19'),function(_0x5f0a09){try{calls[_0x3cc7('0x19')](_0x5f0a09);agents['cdr'](_0x5f0a09);queues['cdr'](_0x5f0a09);recordings['cdr'](_0x5f0a09);dials[_0x3cc7('0x19')](_0x5f0a09);members[_0x3cc7('0x19')](_0x5f0a09);}catch(_0x4d20ed){utils[_0x3cc7('0xc')](_0x4d20ed);}});ami['on'](_0x3cc7('0x1a'),function(_0x2bc904){try{queues[_0x3cc7('0x1a')](_0x2bc904);agents[_0x3cc7('0x1a')](_0x2bc904);transfers[_0x3cc7('0x1a')](_0x2bc904);}catch(_0x3af533){utils[_0x3cc7('0xc')](_0x3af533);}});ami['on'](_0x3cc7('0x1b'),function(_0x30ccb6){try{queues[_0x3cc7('0x1b')](_0x30ccb6);transfers[_0x3cc7('0x1b')](_0x30ccb6);agents[_0x3cc7('0x1b')](_0x30ccb6);}catch(_0x65e2df){utils[_0x3cc7('0xc')](_0x65e2df);}});ami['on']('varset',function(_0xbd633e){try{queues['varset'](_0xbd633e);recordings['varset'](_0xbd633e);calls['varset'](_0xbd633e);dials[_0x3cc7('0x1c')](_0xbd633e);}catch(_0x71cfb7){utils[_0x3cc7('0xc')](_0x71cfb7);}});ami['on'](_0x3cc7('0x1d'),function(_0x713682){try{calls[_0x3cc7('0x1d')](_0x713682);dials[_0x3cc7('0x1d')](_0x713682);}catch(_0x1ffb57){utils[_0x3cc7('0xc')](_0x1ffb57);}});ami['on'](_0x3cc7('0x1e'),function(_0x3d0c75){try{calls['newchannel'](_0x3d0c75);dials[_0x3cc7('0x1e')](_0x3d0c75);}catch(_0x2c383b){utils[_0x3cc7('0xc')](_0x2c383b);}});ami['on']('dialbegin',function(_0x4b53e7){try{dials[_0x3cc7('0x1f')](_0x4b53e7);}catch(_0x2c7795){utils['error'](_0x2c7795);}});ami['on'](_0x3cc7('0x20'),function(_0x4b89af){try{dials[_0x3cc7('0x20')](_0x4b89af);}catch(_0x202cc8){utils['error'](_0x202cc8);}});
\ No newline at end of file
+var _0x6ce9=['queuecallerabandon','queuecallerjoin','queuecallerleave','musiconholdstart','musiconholdstop','cdr','blindtransfer','attendedtransfer','varset','newexten','newchannel','dialbegin','dialend','asterisk-manager','../../config/environment','./agents.controller','./recordings.controller','./dials.controller','./transfers.controller','./core.controller','./utils','port','asterisk','password','keepConnected','shutdown','fullybooted','error','close','managerevent','devicestatechange','agentcalled','agentringnoanswer','agentconnect','agentcomplete'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x6ce9,0x76));var _0x96ce=function(_0x27e70b,_0x943f84){_0x27e70b=_0x27e70b-0x0;var _0x3e34f4=_0x6ce9[_0x27e70b];return _0x3e34f4;};var AsteriskManager=require(_0x96ce('0x0'));var config=require(_0x96ce('0x1'));var agents=require(_0x96ce('0x2'));var calls=require('./calls.controller');var queues=require('./queues.controller');var recordings=require(_0x96ce('0x3'));var members=require('./members.controller');var dials=require(_0x96ce('0x4'));var transfers=require(_0x96ce('0x5'));var core=require(_0x96ce('0x6'));var utils=require(_0x96ce('0x7'));var ami=new AsteriskManager(config['asterisk'][_0x96ce('0x8')],config[_0x96ce('0x9')]['ip'],config[_0x96ce('0x9')]['username'],config[_0x96ce('0x9')][_0x96ce('0xa')],!![]);ami[_0x96ce('0xb')]();ami['on']('connect',core['connect']);ami['on'](_0x96ce('0xc'),core[_0x96ce('0xc')]);ami['on'](_0x96ce('0xd'),core[_0x96ce('0xd')]);ami['on'](_0x96ce('0xe'),core[_0x96ce('0xe')]);ami['on'](_0x96ce('0xf'),core[_0x96ce('0xf')]);ami['on'](_0x96ce('0x10'),core[_0x96ce('0x10')]);ami['on'](_0x96ce('0x11'),function(_0x5d5545){try{members[_0x96ce('0x11')](_0x5d5545);}catch(_0xb2a714){utils[_0x96ce('0xe')](_0xb2a714);}});ami['on']('agentcalled',function(_0x1743b3){try{agents[_0x96ce('0x12')](_0x1743b3);}catch(_0x167bf4){utils[_0x96ce('0xe')](_0x167bf4);}});ami['on'](_0x96ce('0x13'),function(_0x79e56d){try{agents[_0x96ce('0x13')](_0x79e56d);}catch(_0x3d46d1){utils[_0x96ce('0xe')](_0x3d46d1);}});ami['on'](_0x96ce('0x14'),function(_0x1515ea){try{agents[_0x96ce('0x14')](_0x1515ea);recordings[_0x96ce('0x14')](_0x1515ea);queues[_0x96ce('0x14')](_0x1515ea);}catch(_0x1e2c4b){utils['error'](_0x1e2c4b);}});ami['on']('agentcomplete',function(_0x15b4a1){try{agents[_0x96ce('0x15')](_0x15b4a1);queues[_0x96ce('0x15')](_0x15b4a1);members[_0x96ce('0x15')](_0x15b4a1);calls[_0x96ce('0x15')](_0x15b4a1);}catch(_0xd857dc){utils[_0x96ce('0xe')](_0xd857dc);}});ami['on'](_0x96ce('0x16'),function(_0x1b2cbf){try{agents[_0x96ce('0x16')](_0x1b2cbf);queues['queuecallerabandon'](_0x1b2cbf);}catch(_0x8ad008){utils[_0x96ce('0xe')](_0x8ad008);}});ami['on'](_0x96ce('0x17'),function(_0x30dcdf){try{queues[_0x96ce('0x17')](_0x30dcdf);}catch(_0x166ee6){utils[_0x96ce('0xe')](_0x166ee6);}});ami['on']('queuecallerleave',function(_0x5c39a2){try{queues[_0x96ce('0x18')](_0x5c39a2);}catch(_0x86a985){utils['error'](_0x86a985);}});ami['on']('musiconholdstart',function(_0x58196f){try{queues['musiconholdstart'](_0x58196f);calls[_0x96ce('0x19')](_0x58196f);}catch(_0x9dc88b){utils[_0x96ce('0xe')](_0x9dc88b);}});ami['on'](_0x96ce('0x1a'),function(_0x56f0dd){try{queues[_0x96ce('0x1a')](_0x56f0dd);calls[_0x96ce('0x1a')](_0x56f0dd);}catch(_0x2426fa){utils['error'](_0x2426fa);}});ami['on'](_0x96ce('0x1b'),function(_0x4670f1){try{calls[_0x96ce('0x1b')](_0x4670f1);agents[_0x96ce('0x1b')](_0x4670f1);queues[_0x96ce('0x1b')](_0x4670f1);recordings['cdr'](_0x4670f1);dials[_0x96ce('0x1b')](_0x4670f1);members[_0x96ce('0x1b')](_0x4670f1);}catch(_0x174c2e){utils[_0x96ce('0xe')](_0x174c2e);}});ami['on']('blindtransfer',function(_0x4164b1){try{queues[_0x96ce('0x1c')](_0x4164b1);agents[_0x96ce('0x1c')](_0x4164b1);transfers['blindtransfer'](_0x4164b1);}catch(_0x408bf5){utils[_0x96ce('0xe')](_0x408bf5);}});ami['on'](_0x96ce('0x1d'),function(_0x402ce0){try{queues[_0x96ce('0x1d')](_0x402ce0);transfers[_0x96ce('0x1d')](_0x402ce0);agents[_0x96ce('0x1d')](_0x402ce0);}catch(_0x272f89){utils[_0x96ce('0xe')](_0x272f89);}});ami['on']('varset',function(_0x2c6ea8){try{queues[_0x96ce('0x1e')](_0x2c6ea8);recordings[_0x96ce('0x1e')](_0x2c6ea8);calls[_0x96ce('0x1e')](_0x2c6ea8);dials[_0x96ce('0x1e')](_0x2c6ea8);}catch(_0x440970){utils[_0x96ce('0xe')](_0x440970);}});ami['on']('newexten',function(_0x2b4a1d){try{calls[_0x96ce('0x1f')](_0x2b4a1d);dials[_0x96ce('0x1f')](_0x2b4a1d);}catch(_0x39b6c5){utils[_0x96ce('0xe')](_0x39b6c5);}});ami['on'](_0x96ce('0x20'),function(_0x25a81c){try{calls[_0x96ce('0x20')](_0x25a81c);dials[_0x96ce('0x20')](_0x25a81c);}catch(_0x6c0cdc){utils[_0x96ce('0xe')](_0x6c0cdc);}});ami['on'](_0x96ce('0x21'),function(_0x4b09bb){try{dials[_0x96ce('0x21')](_0x4b09bb);}catch(_0x1710f1){utils[_0x96ce('0xe')](_0x1710f1);}});ami['on']('dialend',function(_0x49b629){try{dials[_0x96ce('0x22')](_0x49b629);}catch(_0xa7169a){utils[_0x96ce('0xe')](_0xa7169a);}});
\ No newline at end of file
index 878321f..0241eb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb839=['destination','destinationchannel','util','./utils','info','format','uniqueid','data2','membername','type','interface','getUserByInterface','internal','request','getUserByName','split','then','name','CreateMemberReport','catch','some','devicestatechange','state','device','TALKING','agent','isNil','exitAt','now','duration','enterAt','agentcomplete','assign','queue','cdr','channel','data1'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xb839,0x105));var _0x9b83=function(_0x5e6a57,_0x2f007f){_0x5e6a57=_0x5e6a57-0x0;var _0x27d82d=_0xb839[_0x5e6a57];return _0x27d82d;};'use strict';var _=require('lodash');var util=require(_0x9b83('0x0'));var utils=require(_0x9b83('0x1'));var members={};var exclude=['Local/_attended@transfer','Queue:'];function writeDB(_0x802262){utils[_0x9b83('0x2')](util[_0x9b83('0x3')]('MEMBER|%s|%s|%s|%s|%s|%s',_0x802262[_0x9b83('0x4')],_0x802262['interface'],_0x802262['channel'],_0x802262[_0x9b83('0x5')],_0x802262[_0x9b83('0x6')],_0x802262[_0x9b83('0x7')]));if(_0x802262[_0x9b83('0x8')]){utils[_0x9b83('0x9')](_0x802262['interface'])['then'](function(_0x743289){if(_0x743289){_0x802262[_0x9b83('0x6')]=_0x743289['name'];_0x802262[_0x9b83('0xa')]=_0x743289['internal'];utils[_0x9b83('0xb')]('CreateMemberReport',_0x802262);}else{utils[_0x9b83('0xc')](_0x802262[_0x9b83('0x8')][_0x9b83('0xd')]('/')[0x1])[_0x9b83('0xe')](function(_0x357411){if(_0x357411){_0x802262[_0x9b83('0x6')]=_0x357411[_0x9b83('0xf')];_0x802262[_0x9b83('0xa')]=_0x357411[_0x9b83('0xa')];utils[_0x9b83('0xb')](_0x9b83('0x10'),_0x802262);}});}})[_0x9b83('0x11')](function(_0x238a18){utils['error'](_0x238a18);});}delete members[_0x802262[_0x9b83('0x8')]];}function startsWith(_0x579287,_0x3ded03){return _[_0x9b83('0x12')](_0x579287,function(_0x114e00){return _['startsWith'](_0x3ded03,_0x114e00);});}exports[_0x9b83('0x13')]=function(_0x5b2d2f){switch(_0x5b2d2f[_0x9b83('0x14')]){case'INUSE':if(!startsWith(exclude,_0x5b2d2f[_0x9b83('0x15')])){members[_0x5b2d2f[_0x9b83('0x15')]]={'channel':'voice','interface':_0x5b2d2f[_0x9b83('0x15')],'type':_0x9b83('0x16'),'enterAt':utils['now'](),'role':_0x9b83('0x17'),'data1':'internal'};}break;case'NOT_INUSE':if(!_[_0x9b83('0x18')](members[_0x5b2d2f[_0x9b83('0x15')]])){members[_0x5b2d2f[_0x9b83('0x15')]][_0x9b83('0x19')]=utils[_0x9b83('0x1a')]();members[_0x5b2d2f[_0x9b83('0x15')]][_0x9b83('0x1b')]=utils['diffTime'](members[_0x5b2d2f['device']]['exitAt'],members[_0x5b2d2f[_0x9b83('0x15')]][_0x9b83('0x1c')]);}default:break;}};exports[_0x9b83('0x1d')]=function(_0x34e234){if(!_[_0x9b83('0x18')](members[_0x34e234[_0x9b83('0x8')]])){members[_0x34e234[_0x9b83('0x8')]]=_[_0x9b83('0x1e')](members[_0x34e234[_0x9b83('0x8')]],{'data4':_0x34e234[_0x9b83('0x1f')]});}};exports[_0x9b83('0x20')]=function(_0x3f9a07){if(_0x3f9a07[_0x9b83('0x21')]){var _0x3b1d45=_0x3f9a07['channel'][_0x9b83('0xd')]('-')[0x0];if(!_['isNil'](members[_0x3b1d45])){members[_0x3b1d45]=_['assign'](members[_0x3b1d45],{'data1':members[_0x3b1d45][_0x9b83('0x22')]||_0x3f9a07[_0x9b83('0x7')],'data2':members[_0x3b1d45][_0x9b83('0x5')]||_0x3f9a07['source'],'data3':members[_0x3b1d45]['data3']||_0x3f9a07[_0x9b83('0x23')],'uniqueid':members[_0x3b1d45][_0x9b83('0x4')]||_0x3f9a07[_0x9b83('0x4')]});if(members[_0x3b1d45][_0x9b83('0x19')]){writeDB(members[_0x3b1d45]);}}}if(_0x3f9a07[_0x9b83('0x24')]){var _0x4a5545=_0x3f9a07['destinationchannel'][_0x9b83('0xd')]('-')[0x0];if(!_[_0x9b83('0x18')](members[_0x4a5545])){members[_0x4a5545]=_[_0x9b83('0x1e')](members[_0x4a5545],{'data1':members[_0x4a5545]['data1']||_0x3f9a07[_0x9b83('0x7')],'data2':members[_0x4a5545][_0x9b83('0x5')]||_0x3f9a07['source'],'data3':members[_0x4a5545]['data3']||_0x3f9a07[_0x9b83('0x23')],'uniqueid':members[_0x4a5545][_0x9b83('0x4')]||_0x3f9a07[_0x9b83('0x4')]});if(members[_0x4a5545]['exitAt']){writeDB(members[_0x4a5545]);}}}};
\ No newline at end of file
+var _0x6323=['enterAt','agentcomplete','assign','cdr','split','data1','source','data3','destination','destinationchannel','util','./utils','Local/_attended@transfer','Queue:','MEMBER|%s|%s|%s|%s|%s|%s','uniqueid','channel','data2','type','interface','getUserByInterface','then','name','internal','request','CreateMemberReport','membername','catch','error','some','state','INUSE','device','voice','TALKING','now','NOT_INUSE','isNil','exitAt','duration'];(function(_0xc5a3aa,_0x825a72){var _0x5272fb=function(_0x52436c){while(--_0x52436c){_0xc5a3aa['push'](_0xc5a3aa['shift']());}};_0x5272fb(++_0x825a72);}(_0x6323,0xfa));var _0x3632=function(_0x5cfdc4,_0x3e32b5){_0x5cfdc4=_0x5cfdc4-0x0;var _0x54cc2a=_0x6323[_0x5cfdc4];return _0x54cc2a;};'use strict';var _=require('lodash');var util=require(_0x3632('0x0'));var utils=require(_0x3632('0x1'));var members={};var exclude=[_0x3632('0x2'),_0x3632('0x3')];function writeDB(_0x3f41bb){utils['info'](util['format'](_0x3632('0x4'),_0x3f41bb[_0x3632('0x5')],_0x3f41bb['interface'],_0x3f41bb[_0x3632('0x6')],_0x3f41bb[_0x3632('0x7')],_0x3f41bb['membername'],_0x3f41bb[_0x3632('0x8')]));if(_0x3f41bb[_0x3632('0x9')]){utils[_0x3632('0xa')](_0x3f41bb[_0x3632('0x9')])[_0x3632('0xb')](function(_0xd3049e){if(_0xd3049e){_0x3f41bb['membername']=_0xd3049e[_0x3632('0xc')];_0x3f41bb['internal']=_0xd3049e[_0x3632('0xd')];utils[_0x3632('0xe')](_0x3632('0xf'),_0x3f41bb);}else{utils['getUserByName'](_0x3f41bb[_0x3632('0x9')]['split']('/')[0x1])[_0x3632('0xb')](function(_0x38ddd3){if(_0x38ddd3){_0x3f41bb[_0x3632('0x10')]=_0x38ddd3['name'];_0x3f41bb[_0x3632('0xd')]=_0x38ddd3[_0x3632('0xd')];utils['request']('CreateMemberReport',_0x3f41bb);}});}})[_0x3632('0x11')](function(_0x3eadd2){utils[_0x3632('0x12')](_0x3eadd2);});}delete members[_0x3f41bb[_0x3632('0x9')]];}function startsWith(_0x11156b,_0x1bee9f){return _[_0x3632('0x13')](_0x11156b,function(_0x935705){return _['startsWith'](_0x1bee9f,_0x935705);});}exports['devicestatechange']=function(_0x166532){switch(_0x166532[_0x3632('0x14')]){case _0x3632('0x15'):if(!startsWith(exclude,_0x166532[_0x3632('0x16')])){members[_0x166532[_0x3632('0x16')]]={'channel':_0x3632('0x17'),'interface':_0x166532[_0x3632('0x16')],'type':_0x3632('0x18'),'enterAt':utils[_0x3632('0x19')](),'role':'agent','data1':_0x3632('0xd')};}break;case _0x3632('0x1a'):if(!_[_0x3632('0x1b')](members[_0x166532[_0x3632('0x16')]])){members[_0x166532['device']][_0x3632('0x1c')]=utils[_0x3632('0x19')]();members[_0x166532[_0x3632('0x16')]][_0x3632('0x1d')]=utils['diffTime'](members[_0x166532['device']]['exitAt'],members[_0x166532[_0x3632('0x16')]][_0x3632('0x1e')]);}default:break;}};exports[_0x3632('0x1f')]=function(_0x40b3e3){if(!_['isNil'](members[_0x40b3e3['interface']])){members[_0x40b3e3['interface']]=_[_0x3632('0x20')](members[_0x40b3e3[_0x3632('0x9')]],{'data4':_0x40b3e3['queue']});}};exports[_0x3632('0x21')]=function(_0x34d55e){if(_0x34d55e[_0x3632('0x6')]){var _0x518b04=_0x34d55e[_0x3632('0x6')][_0x3632('0x22')]('-')[0x0];if(!_['isNil'](members[_0x518b04])){members[_0x518b04]=_[_0x3632('0x20')](members[_0x518b04],{'data1':members[_0x518b04][_0x3632('0x23')]||_0x34d55e[_0x3632('0x8')],'data2':members[_0x518b04][_0x3632('0x7')]||_0x34d55e[_0x3632('0x24')],'data3':members[_0x518b04][_0x3632('0x25')]||_0x34d55e[_0x3632('0x26')],'uniqueid':members[_0x518b04][_0x3632('0x5')]||_0x34d55e[_0x3632('0x5')]});if(members[_0x518b04][_0x3632('0x1c')]){writeDB(members[_0x518b04]);}}}if(_0x34d55e[_0x3632('0x27')]){var _0x3ce073=_0x34d55e[_0x3632('0x27')][_0x3632('0x22')]('-')[0x0];if(!_[_0x3632('0x1b')](members[_0x3ce073])){members[_0x3ce073]=_[_0x3632('0x20')](members[_0x3ce073],{'data1':members[_0x3ce073]['data1']||_0x34d55e['type'],'data2':members[_0x3ce073][_0x3632('0x7')]||_0x34d55e[_0x3632('0x24')],'data3':members[_0x3ce073][_0x3632('0x25')]||_0x34d55e[_0x3632('0x26')],'uniqueid':members[_0x3ce073][_0x3632('0x5')]||_0x34d55e['uniqueid']});if(members[_0x3ce073][_0x3632('0x1c')]){writeDB(members[_0x3ce073]);}}}};
\ No newline at end of file
index 82a7554..be4c411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d25=['position','now','varset','variable','queuestatus','value','toUpperCase','queuecallerabandon','queuecallerleave','diffTime','queuecallerjoinAt','agentconnect','connectedlinenum','connectedlinename','membername','agentcomplete','reason','transfer','COMPLETEDBY','blindtransfer','transfereechannel','BLINDTRANSFER','forIn','origtransfererchannel','transfertargetchannel','transfertargetcalleridname','ATTENDEDTRANSFER','origtransfererexten','origtransfereruniqueid','ATTENDED','secondtransfererchannel','transfereecalleridnum','secondtransfereruniqueid','musiconholdstartAt','cdr','assigned','COMPLETED','./utils','info','format','QUEUE|%s|%s|%s|%s|%s|%s|%s','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','CreateVoiceQueueReport','channel','queuecallerjoin','isNil','clone','assign'];(function(_0x1e8d33,_0x277dc2){var _0x43a6c7=function(_0x5d9899){while(--_0x5d9899){_0x1e8d33['push'](_0x1e8d33['shift']());}};_0x43a6c7(++_0x277dc2);}(_0x8d25,0x93));var _0x58d2=function(_0xc26bfd,_0x3f6af4){_0xc26bfd=_0xc26bfd-0x0;var _0x5edc6c=_0x8d25[_0xc26bfd];return _0x5edc6c;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x58d2('0x0'));var queues={};var transfers={};function writeDB(_0x3a98af,_0x1d5f91){utils[_0x58d2('0x1')](util[_0x58d2('0x2')](_0x58d2('0x3'),_0x3a98af[_0x58d2('0x4')],_0x3a98af['channel'],_0x3a98af[_0x58d2('0x5')],_0x3a98af[_0x58d2('0x6')],_0x3a98af[_0x58d2('0x7')],_0x3a98af[_0x58d2('0x8')],_0x3a98af[_0x58d2('0x9')]));if(_0x3a98af['queue']){utils[_0x58d2('0xa')](_0x3a98af[_0x58d2('0x5')])[_0x58d2('0xb')](function(_0x2afcf9){if(_0x2afcf9){_0x3a98af['type']=_0x2afcf9['type'];}utils['request'](_0x58d2('0xc'),_0x3a98af);});}else{utils['request'](_0x58d2('0xc'),_0x3a98af);}if(_0x1d5f91){delete queues[_0x3a98af[_0x58d2('0xd')]];}}exports[_0x58d2('0xe')]=function(_0x49991e){if(!_[_0x58d2('0xf')](queues[_0x49991e[_0x58d2('0xd')]])){writeDB(_[_0x58d2('0x10')](queues[_0x49991e[_0x58d2('0xd')]]),![]);}queues[_0x49991e['channel']]=_[_0x58d2('0x11')](_0x49991e,{'originalposition':_0x49991e[_0x58d2('0x12')],'queuecallerjoinAt':utils[_0x58d2('0x13')](),'mohtime':0x0});};exports[_0x58d2('0x14')]=function(_0x4ba820){if(!_['isNil'](queues[_0x4ba820[_0x58d2('0xd')]])){if(!_[_0x58d2('0xf')](_0x4ba820[_0x58d2('0x15')][_0x58d2('0x16')])){if(_0x4ba820[_0x58d2('0x17')]!='CONTINUE'){queues[_0x4ba820[_0x58d2('0xd')]]=_['assign'](queues[_0x4ba820[_0x58d2('0xd')]],{'queuecallerabandon':![],'queuecallerabandonAt':null,'queuecallerexit':!![],'queuecallerexitAt':utils[_0x58d2('0x13')](),'queuecallerexitreason':_0x4ba820[_0x58d2('0x17')][_0x58d2('0x18')]()});}}}};exports[_0x58d2('0x19')]=function(_0x2f411b){var _0x1b0c36={'queuecallerabandon':!![],'queuecallerabandonAt':utils[_0x58d2('0x13')](),'queuecallerexitreason':'ABANDONED'};if(!_[_0x58d2('0xf')](queues[_0x2f411b['channel']])){queues[_0x2f411b['channel']]=_[_0x58d2('0x11')](queues[_0x2f411b['channel']],_0x1b0c36);}if(!_[_0x58d2('0xf')](transfers[_0x2f411b[_0x58d2('0xd')]])){transfers[_0x2f411b['channel']]=_[_0x58d2('0x11')](transfers[_0x2f411b[_0x58d2('0xd')]],_0x1b0c36);}};exports[_0x58d2('0x1a')]=function(_0x4dcf6c){if(!_['isNil'](queues[_0x4dcf6c[_0x58d2('0xd')]])){queues[_0x4dcf6c['channel']]=_['assign'](queues[_0x4dcf6c[_0x58d2('0xd')]],{'queuecallerleave':!![],'queuecallerleaveAt':utils['now'](),'holdtime':utils[_0x58d2('0x1b')](utils[_0x58d2('0x13')](),queues[_0x4dcf6c[_0x58d2('0xd')]][_0x58d2('0x1c')])});}if(!_['isNil'](transfers[_0x4dcf6c[_0x58d2('0xd')]])){transfers[_0x4dcf6c[_0x58d2('0xd')]]=_[_0x58d2('0x11')](transfers[_0x4dcf6c[_0x58d2('0xd')]],{'queuecallerleave':!![],'queuecallerleaveAt':utils['now'](),'holdtime':utils[_0x58d2('0x1b')](utils[_0x58d2('0x13')](),transfers[_0x4dcf6c[_0x58d2('0xd')]][_0x58d2('0x1c')])});}};exports[_0x58d2('0x1d')]=function(_0x674ec1){var _0x5d906d={'connectedlinenum':_0x674ec1[_0x58d2('0x1e')],'connectedlinename':_0x674ec1[_0x58d2('0x1f')],'assigned':!![],'lastAssignedTo':_0x674ec1[_0x58d2('0x20')]};if(!_[_0x58d2('0xf')](queues[_0x674ec1[_0x58d2('0xd')]])){queues[_0x674ec1[_0x58d2('0xd')]]=_[_0x58d2('0x11')](queues[_0x674ec1[_0x58d2('0xd')]],_0x5d906d);}if(!_[_0x58d2('0xf')](transfers[_0x674ec1[_0x58d2('0xd')]])){transfers[_0x674ec1['channel']]=_[_0x58d2('0x11')](transfers[_0x674ec1['channel']],_0x5d906d);}};exports[_0x58d2('0x21')]=function(_0x2e4283){var _0x2dd010={'queuecallercomplete':!![],'queuecallercompleteAt':utils[_0x58d2('0x13')]()};if(_0x2e4283[_0x58d2('0x22')]!=_0x58d2('0x23')){_0x2dd010[_0x58d2('0x9')]=_0x58d2('0x24')+_0x2e4283['reason'][_0x58d2('0x18')]();}if(!_[_0x58d2('0xf')](queues[_0x2e4283[_0x58d2('0xd')]])){queues[_0x2e4283[_0x58d2('0xd')]]=_[_0x58d2('0x11')](queues[_0x2e4283[_0x58d2('0xd')]],_0x2dd010);writeDB(queues[_0x2e4283[_0x58d2('0xd')]],!![]);}};exports[_0x58d2('0x25')]=function(_0x44de06){if(!_[_0x58d2('0xf')](queues[_0x44de06[_0x58d2('0x26')]])){queues[_0x44de06[_0x58d2('0x26')]]=_['assign'](queues[_0x44de06[_0x58d2('0x26')]],{'transfer':!![],'transfertype':'BLIND','transferexten':_0x44de06['extension'],'transferuniqueid':_0x44de06['transfereeuniqueid'],'queuecallerexitreason':_0x58d2('0x27')});}};exports['attendedtransfer']=function(_0x44bf9e){_[_0x58d2('0x28')](queues,function(_0x267d95){if(_0x267d95[_0x58d2('0xd')]==_0x44bf9e[_0x58d2('0x29')]){transfers[_0x44bf9e[_0x58d2('0x2a')]]=_[_0x58d2('0x10')](_0x267d95);transfers[_0x44bf9e['transfertargetchannel']]=_[_0x58d2('0x11')](transfers[_0x44bf9e[_0x58d2('0x2a')]],{'queuecallerjoinAt':utils[_0x58d2('0x13')](),'queuecallerleaveAt':utils['now'](),'channel':_0x44bf9e['transfertargetchannel'],'calleridname':_0x44bf9e[_0x58d2('0x2b')],'calleridnum':_0x44bf9e['transfertargetcalleridnum'],'queuecallerenterreason':0x2});queues[_0x44bf9e[_0x58d2('0x2a')]]=_[_0x58d2('0x11')](queues[_0x44bf9e[_0x58d2('0x2a')]],{'transfer':!![],'transfertype':'ATTENDED','queuecallerexitreason':_0x58d2('0x2c'),'transferexten':_0x44bf9e[_0x58d2('0x2d')],'transferuniqueid':_0x44bf9e[_0x58d2('0x2e')]});queues[_0x44bf9e[_0x58d2('0x29')]]=_[_0x58d2('0x11')](queues[_0x44bf9e[_0x58d2('0x29')]],{'queuecallerexitreason':_0x58d2('0x2f'),'queuecallerenterreason':0x1});}else if(_0x267d95[_0x58d2('0xd')]==_0x44bf9e[_0x58d2('0x30')]){transfers[_0x44bf9e[_0x58d2('0x26')]]=_[_0x58d2('0x10')](_0x267d95);transfers[_0x44bf9e[_0x58d2('0x26')]]=_[_0x58d2('0x11')](transfers[_0x44bf9e[_0x58d2('0x26')]],{'queuecallerjoinAt':utils['now'](),'queuecallerleaveAt':utils['now'](),'channel':_0x44bf9e[_0x58d2('0x26')],'calleridname':_0x44bf9e['transfereecalleridname'],'calleridnum':_0x44bf9e[_0x58d2('0x31')],'queuecallerenterreason':0x2});queues[_0x44bf9e[_0x58d2('0x26')]]=_['assign'](queues[_0x44bf9e[_0x58d2('0x26')]],{'transfer':!![],'transfertype':_0x58d2('0x2f'),'queuecallerexitreason':_0x58d2('0x2c'),'transferexten':_0x44bf9e['secondtransfererexten'],'transferuniqueid':_0x44bf9e[_0x58d2('0x32')]});queues[_0x44bf9e[_0x58d2('0x30')]]=_['assign'](queues[_0x44bf9e['secondtransfererchannel']],{'queuecallerexitreason':_0x58d2('0x2f'),'queuecallerenterreason':0x1});}});};exports['musiconholdstart']=function(_0x4d530d){if(!_[_0x58d2('0xf')](queues[_0x4d530d[_0x58d2('0xd')]])){queues[_0x4d530d['channel']][_0x58d2('0x33')]=utils[_0x58d2('0x13')]();}};exports['musiconholdstop']=function(_0x17b1c7){if(!_[_0x58d2('0xf')](queues[_0x17b1c7[_0x58d2('0xd')]])){if(!_[_0x58d2('0xf')](queues[_0x17b1c7[_0x58d2('0xd')]][_0x58d2('0x33')])){queues[_0x17b1c7[_0x58d2('0xd')]]['mohtime']+=utils[_0x58d2('0x1b')](utils[_0x58d2('0x13')](),queues[_0x17b1c7['channel']]['musiconholdstartAt']);delete queues[_0x17b1c7[_0x58d2('0xd')]][_0x58d2('0x33')];}}};exports[_0x58d2('0x34')]=function(_0x39dcd5){if(!_[_0x58d2('0xf')](queues[_0x39dcd5[_0x58d2('0xd')]])){writeDB(queues[_0x39dcd5['channel']],!![]);}if(!_[_0x58d2('0xf')](transfers[_0x39dcd5[_0x58d2('0xd')]])){if(transfers[_0x39dcd5[_0x58d2('0xd')]][_0x58d2('0x35')]){transfers[_0x39dcd5['channel']]=_['assign'](transfers[_0x39dcd5[_0x58d2('0xd')]],{'queuecallercomplete':!![],'queuecallercompleteAt':utils[_0x58d2('0x13')](),'queuecallerexitreason':_0x58d2('0x36')});}writeDB(transfers[_0x39dcd5[_0x58d2('0xd')]],![]);delete transfers[_0x39dcd5[_0x58d2('0xd')]];}};
\ No newline at end of file
+var _0x6759=['connectedlinenum','connectedlinename','membername','agentcomplete','reason','transfer','COMPLETEDBY','transfereechannel','BLIND','extension','transfereeuniqueid','BLINDTRANSFER','attendedtransfer','transfertargetchannel','clone','transfertargetcalleridname','transfertargetcalleridnum','ATTENDED','origtransfererchannel','secondtransfererchannel','transfereecalleridnum','secondtransfereruniqueid','musiconholdstart','musiconholdstartAt','musiconholdstop','mohtime','cdr','assigned','COMPLETED','./utils','info','uniqueid','channel','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','queue','then','type','request','CreateVoiceQueueReport','assign','position','now','varset','isNil','queuestatus','value','CONTINUE','diffTime','queuecallerjoinAt'];(function(_0x4c1edd,_0x30be6e){var _0x1bc2ec=function(_0x3c3ff7){while(--_0x3c3ff7){_0x4c1edd['push'](_0x4c1edd['shift']());}};_0x1bc2ec(++_0x30be6e);}(_0x6759,0x85));var _0x9675=function(_0x3763da,_0x58158b){_0x3763da=_0x3763da-0x0;var _0x5d192f=_0x6759[_0x3763da];return _0x5d192f;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x9675('0x0'));var queues={};var transfers={};function writeDB(_0x323fc2,_0x44e418){utils[_0x9675('0x1')](util['format']('QUEUE|%s|%s|%s|%s|%s|%s|%s',_0x323fc2[_0x9675('0x2')],_0x323fc2[_0x9675('0x3')],_0x323fc2['queue'],_0x323fc2[_0x9675('0x4')],_0x323fc2[_0x9675('0x5')],_0x323fc2[_0x9675('0x6')],_0x323fc2[_0x9675('0x7')]));if(_0x323fc2[_0x9675('0x8')]){utils['getVoiceQueueByName'](_0x323fc2[_0x9675('0x8')])[_0x9675('0x9')](function(_0x22f034){if(_0x22f034){_0x323fc2[_0x9675('0xa')]=_0x22f034['type'];}utils[_0x9675('0xb')](_0x9675('0xc'),_0x323fc2);});}else{utils[_0x9675('0xb')](_0x9675('0xc'),_0x323fc2);}if(_0x44e418){delete queues[_0x323fc2['channel']];}}exports['queuecallerjoin']=function(_0x2d1dee){if(!_['isNil'](queues[_0x2d1dee[_0x9675('0x3')]])){writeDB(_['clone'](queues[_0x2d1dee[_0x9675('0x3')]]),![]);}queues[_0x2d1dee['channel']]=_[_0x9675('0xd')](_0x2d1dee,{'originalposition':_0x2d1dee[_0x9675('0xe')],'queuecallerjoinAt':utils[_0x9675('0xf')](),'mohtime':0x0});};exports[_0x9675('0x10')]=function(_0x416478){if(!_['isNil'](queues[_0x416478[_0x9675('0x3')]])){if(!_[_0x9675('0x11')](_0x416478['variable'][_0x9675('0x12')])){if(_0x416478[_0x9675('0x13')]!=_0x9675('0x14')){queues[_0x416478['channel']]=_[_0x9675('0xd')](queues[_0x416478[_0x9675('0x3')]],{'queuecallerabandon':![],'queuecallerabandonAt':null,'queuecallerexit':!![],'queuecallerexitAt':utils[_0x9675('0xf')](),'queuecallerexitreason':_0x416478[_0x9675('0x13')]['toUpperCase']()});}}}};exports['queuecallerabandon']=function(_0x2692c0){var _0x178b0c={'queuecallerabandon':!![],'queuecallerabandonAt':utils[_0x9675('0xf')](),'queuecallerexitreason':'ABANDONED'};if(!_[_0x9675('0x11')](queues[_0x2692c0[_0x9675('0x3')]])){queues[_0x2692c0[_0x9675('0x3')]]=_['assign'](queues[_0x2692c0['channel']],_0x178b0c);}if(!_[_0x9675('0x11')](transfers[_0x2692c0[_0x9675('0x3')]])){transfers[_0x2692c0[_0x9675('0x3')]]=_[_0x9675('0xd')](transfers[_0x2692c0[_0x9675('0x3')]],_0x178b0c);}};exports['queuecallerleave']=function(_0x572ce6){if(!_[_0x9675('0x11')](queues[_0x572ce6['channel']])){queues[_0x572ce6['channel']]=_['assign'](queues[_0x572ce6[_0x9675('0x3')]],{'queuecallerleave':!![],'queuecallerleaveAt':utils[_0x9675('0xf')](),'holdtime':utils[_0x9675('0x15')](utils['now'](),queues[_0x572ce6[_0x9675('0x3')]][_0x9675('0x16')])});}if(!_['isNil'](transfers[_0x572ce6[_0x9675('0x3')]])){transfers[_0x572ce6[_0x9675('0x3')]]=_['assign'](transfers[_0x572ce6[_0x9675('0x3')]],{'queuecallerleave':!![],'queuecallerleaveAt':utils['now'](),'holdtime':utils[_0x9675('0x15')](utils['now'](),transfers[_0x572ce6[_0x9675('0x3')]][_0x9675('0x16')])});}};exports['agentconnect']=function(_0x5c643f){var _0x451736={'connectedlinenum':_0x5c643f[_0x9675('0x17')],'connectedlinename':_0x5c643f[_0x9675('0x18')],'assigned':!![],'lastAssignedTo':_0x5c643f[_0x9675('0x19')]};if(!_[_0x9675('0x11')](queues[_0x5c643f['channel']])){queues[_0x5c643f[_0x9675('0x3')]]=_[_0x9675('0xd')](queues[_0x5c643f[_0x9675('0x3')]],_0x451736);}if(!_[_0x9675('0x11')](transfers[_0x5c643f[_0x9675('0x3')]])){transfers[_0x5c643f[_0x9675('0x3')]]=_['assign'](transfers[_0x5c643f[_0x9675('0x3')]],_0x451736);}};exports[_0x9675('0x1a')]=function(_0x1bbb68){var _0x1223e0={'queuecallercomplete':!![],'queuecallercompleteAt':utils['now']()};if(_0x1bbb68[_0x9675('0x1b')]!=_0x9675('0x1c')){_0x1223e0[_0x9675('0x7')]=_0x9675('0x1d')+_0x1bbb68['reason']['toUpperCase']();}if(!_['isNil'](queues[_0x1bbb68[_0x9675('0x3')]])){queues[_0x1bbb68[_0x9675('0x3')]]=_[_0x9675('0xd')](queues[_0x1bbb68[_0x9675('0x3')]],_0x1223e0);writeDB(queues[_0x1bbb68[_0x9675('0x3')]],!![]);}};exports['blindtransfer']=function(_0x256907){if(!_['isNil'](queues[_0x256907[_0x9675('0x1e')]])){queues[_0x256907['transfereechannel']]=_[_0x9675('0xd')](queues[_0x256907[_0x9675('0x1e')]],{'transfer':!![],'transfertype':_0x9675('0x1f'),'transferexten':_0x256907[_0x9675('0x20')],'transferuniqueid':_0x256907[_0x9675('0x21')],'queuecallerexitreason':_0x9675('0x22')});}};exports[_0x9675('0x23')]=function(_0x654dca){_['forIn'](queues,function(_0xc672d7){if(_0xc672d7[_0x9675('0x3')]==_0x654dca['origtransfererchannel']){transfers[_0x654dca[_0x9675('0x24')]]=_[_0x9675('0x25')](_0xc672d7);transfers[_0x654dca[_0x9675('0x24')]]=_['assign'](transfers[_0x654dca[_0x9675('0x24')]],{'queuecallerjoinAt':utils[_0x9675('0xf')](),'queuecallerleaveAt':utils[_0x9675('0xf')](),'channel':_0x654dca[_0x9675('0x24')],'calleridname':_0x654dca[_0x9675('0x26')],'calleridnum':_0x654dca[_0x9675('0x27')],'queuecallerenterreason':0x2});queues[_0x654dca[_0x9675('0x24')]]=_[_0x9675('0xd')](queues[_0x654dca['transfertargetchannel']],{'transfer':!![],'transfertype':_0x9675('0x28'),'queuecallerexitreason':'ATTENDEDTRANSFER','transferexten':_0x654dca['origtransfererexten'],'transferuniqueid':_0x654dca['origtransfereruniqueid']});queues[_0x654dca['origtransfererchannel']]=_[_0x9675('0xd')](queues[_0x654dca[_0x9675('0x29')]],{'queuecallerexitreason':_0x9675('0x28'),'queuecallerenterreason':0x1});}else if(_0xc672d7[_0x9675('0x3')]==_0x654dca[_0x9675('0x2a')]){transfers[_0x654dca[_0x9675('0x1e')]]=_[_0x9675('0x25')](_0xc672d7);transfers[_0x654dca[_0x9675('0x1e')]]=_[_0x9675('0xd')](transfers[_0x654dca[_0x9675('0x1e')]],{'queuecallerjoinAt':utils[_0x9675('0xf')](),'queuecallerleaveAt':utils[_0x9675('0xf')](),'channel':_0x654dca[_0x9675('0x1e')],'calleridname':_0x654dca['transfereecalleridname'],'calleridnum':_0x654dca[_0x9675('0x2b')],'queuecallerenterreason':0x2});queues[_0x654dca[_0x9675('0x1e')]]=_[_0x9675('0xd')](queues[_0x654dca[_0x9675('0x1e')]],{'transfer':!![],'transfertype':_0x9675('0x28'),'queuecallerexitreason':'ATTENDEDTRANSFER','transferexten':_0x654dca['secondtransfererexten'],'transferuniqueid':_0x654dca[_0x9675('0x2c')]});queues[_0x654dca[_0x9675('0x2a')]]=_[_0x9675('0xd')](queues[_0x654dca[_0x9675('0x2a')]],{'queuecallerexitreason':_0x9675('0x28'),'queuecallerenterreason':0x1});}});};exports[_0x9675('0x2d')]=function(_0x2251f0){if(!_[_0x9675('0x11')](queues[_0x2251f0[_0x9675('0x3')]])){queues[_0x2251f0['channel']][_0x9675('0x2e')]=utils[_0x9675('0xf')]();}};exports[_0x9675('0x2f')]=function(_0x4cdda2){if(!_[_0x9675('0x11')](queues[_0x4cdda2[_0x9675('0x3')]])){if(!_['isNil'](queues[_0x4cdda2['channel']][_0x9675('0x2e')])){queues[_0x4cdda2[_0x9675('0x3')]][_0x9675('0x30')]+=utils[_0x9675('0x15')](utils['now'](),queues[_0x4cdda2[_0x9675('0x3')]]['musiconholdstartAt']);delete queues[_0x4cdda2[_0x9675('0x3')]][_0x9675('0x2e')];}}};exports[_0x9675('0x31')]=function(_0xcc6472){if(!_[_0x9675('0x11')](queues[_0xcc6472['channel']])){writeDB(queues[_0xcc6472['channel']],!![]);}if(!_['isNil'](transfers[_0xcc6472['channel']])){if(transfers[_0xcc6472['channel']][_0x9675('0x32')]){transfers[_0xcc6472[_0x9675('0x3')]]=_[_0x9675('0xd')](transfers[_0xcc6472[_0x9675('0x3')]],{'queuecallercomplete':!![],'queuecallercompleteAt':utils[_0x9675('0xf')](),'queuecallerexitreason':_0x9675('0x33')});}writeDB(transfers[_0xcc6472['channel']],![]);delete transfers[_0xcc6472[_0x9675('0x3')]];}};
\ No newline at end of file
index b70df2d..ca5c68f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bf5=['./utils','accountcode','getUserByInternal','then','name','UserId','request','CreateVoiceRecording','channel','varset','isNil','endsWith','value','replace','.wav49','.WAV','assign','membername','cdr','type','destinationchannel','uniqueid','connectedlinenum','calleridnum','calleridname','lodash'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x1bf5,0xe9));var _0x51bf=function(_0x3b6d12,_0x59a8b3){_0x3b6d12=_0x3b6d12-0x0;var _0x361b27=_0x1bf5[_0x3b6d12];return _0x361b27;};'use strict';var _=require(_0x51bf('0x0'));var utils=require(_0x51bf('0x1'));var recordings={};function writeDB(_0x28fc91){utils['debug'](_0x28fc91);if(_0x28fc91[_0x51bf('0x2')]){utils[_0x51bf('0x3')](_0x28fc91['accountcode'])[_0x51bf('0x4')](function(_0x2c5e15){if(_0x2c5e15){_0x28fc91['membername']=_0x2c5e15[_0x51bf('0x5')];_0x28fc91[_0x51bf('0x6')]=_0x2c5e15['id'];}utils[_0x51bf('0x7')](_0x51bf('0x8'),_0x28fc91);});}else{utils[_0x51bf('0x7')](_0x51bf('0x8'),_0x28fc91);}if(recordings[_0x28fc91['channel']]){delete recordings[_0x28fc91[_0x51bf('0x9')]];}}exports[_0x51bf('0xa')]=function(_0x49aa39){if(!_['isNil'](_0x49aa39['variable'])&&!_[_0x51bf('0xb')](_0x49aa39['variable']['mixmonitor_filename'])){if(!_[_0x51bf('0xb')](recordings[_0x49aa39[_0x51bf('0x9')]])){writeDB(recordings[_0x49aa39[_0x51bf('0x9')]]);}if(_[_0x51bf('0xc')](_0x49aa39[_0x51bf('0xd')],'.wav49')){_0x49aa39['value']=_0x49aa39[_0x51bf('0xd')][_0x51bf('0xe')](_0x51bf('0xf'),_0x51bf('0x10'));}recordings[_0x49aa39[_0x51bf('0x9')]]=_['assign'](_0x49aa39,{});}};exports['agentconnect']=function(_0x201616){if(!_[_0x51bf('0xb')](recordings[_0x201616['channel']])){recordings[_0x201616[_0x51bf('0x9')]]=_[_0x51bf('0x11')](recordings[_0x201616['channel']],{'membername':_0x201616[_0x51bf('0x12')],'queue':_0x201616['queue'],'accountcode':_0x201616['connectedlinenum']});}};exports[_0x51bf('0x13')]=function(_0x2814a3){if(!_['isNil'](recordings[_0x2814a3['channel']])){recordings[_0x2814a3[_0x51bf('0x9')]]=_[_0x51bf('0x11')](recordings[_0x2814a3[_0x51bf('0x9')]],{'type':_0x2814a3[_0x51bf('0x14')]});writeDB(recordings[_0x2814a3[_0x51bf('0x9')]]);}else if(!_[_0x51bf('0xb')](recordings[_0x2814a3[_0x51bf('0x15')]])){recordings[_0x2814a3[_0x51bf('0x9')]]=recordings[_0x2814a3[_0x51bf('0x15')]];delete recordings[_0x2814a3[_0x51bf('0x15')]];recordings[_0x2814a3[_0x51bf('0x9')]]=_[_0x51bf('0x11')](recordings[_0x2814a3[_0x51bf('0x9')]],{'type':_0x2814a3[_0x51bf('0x14')],'channel':_0x2814a3['channel'],'exten':_0x2814a3['destination'],'context':_0x2814a3['destinationcontext'],'uniqueid':_0x2814a3[_0x51bf('0x16')],'calleridnum':recordings[_0x2814a3[_0x51bf('0x9')]][_0x51bf('0x17')],'calleridname':recordings[_0x2814a3[_0x51bf('0x9')]]['connectedlinename'],'connectedlinenum':recordings[_0x2814a3[_0x51bf('0x9')]][_0x51bf('0x18')],'connectedlinename':recordings[_0x2814a3[_0x51bf('0x9')]][_0x51bf('0x19')]});writeDB(recordings[_0x2814a3[_0x51bf('0x9')]]);}};
\ No newline at end of file
+var _0xfec3=['calleridnum','lodash','./utils','accountcode','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','channel','varset','isNil','variable','endsWith','value','.wav49','.WAV','agentconnect','assign','queue','connectedlinenum','cdr','type','destinationchannel','destinationcontext','uniqueid','connectedlinename'];(function(_0x1435bf,_0x3ac12f){var _0x51db59=function(_0xeac958){while(--_0xeac958){_0x1435bf['push'](_0x1435bf['shift']());}};_0x51db59(++_0x3ac12f);}(_0xfec3,0x75));var _0x3fec=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xfec3[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x3fec('0x0'));var utils=require(_0x3fec('0x1'));var recordings={};function writeDB(_0x2ae1cb){utils['debug'](_0x2ae1cb);if(_0x2ae1cb[_0x3fec('0x2')]){utils[_0x3fec('0x3')](_0x2ae1cb[_0x3fec('0x2')])[_0x3fec('0x4')](function(_0x421e84){if(_0x421e84){_0x2ae1cb[_0x3fec('0x5')]=_0x421e84[_0x3fec('0x6')];_0x2ae1cb[_0x3fec('0x7')]=_0x421e84['id'];}utils[_0x3fec('0x8')](_0x3fec('0x9'),_0x2ae1cb);});}else{utils[_0x3fec('0x8')](_0x3fec('0x9'),_0x2ae1cb);}if(recordings[_0x2ae1cb[_0x3fec('0xa')]]){delete recordings[_0x2ae1cb[_0x3fec('0xa')]];}}exports[_0x3fec('0xb')]=function(_0x5ca0b3){if(!_[_0x3fec('0xc')](_0x5ca0b3[_0x3fec('0xd')])&&!_[_0x3fec('0xc')](_0x5ca0b3[_0x3fec('0xd')]['mixmonitor_filename'])){if(!_[_0x3fec('0xc')](recordings[_0x5ca0b3[_0x3fec('0xa')]])){writeDB(recordings[_0x5ca0b3[_0x3fec('0xa')]]);}if(_[_0x3fec('0xe')](_0x5ca0b3[_0x3fec('0xf')],'.wav49')){_0x5ca0b3[_0x3fec('0xf')]=_0x5ca0b3[_0x3fec('0xf')]['replace'](_0x3fec('0x10'),_0x3fec('0x11'));}recordings[_0x5ca0b3[_0x3fec('0xa')]]=_['assign'](_0x5ca0b3,{});}};exports[_0x3fec('0x12')]=function(_0x9850a){if(!_[_0x3fec('0xc')](recordings[_0x9850a[_0x3fec('0xa')]])){recordings[_0x9850a['channel']]=_[_0x3fec('0x13')](recordings[_0x9850a[_0x3fec('0xa')]],{'membername':_0x9850a['membername'],'queue':_0x9850a[_0x3fec('0x14')],'accountcode':_0x9850a[_0x3fec('0x15')]});}};exports[_0x3fec('0x16')]=function(_0x461d8c){if(!_[_0x3fec('0xc')](recordings[_0x461d8c[_0x3fec('0xa')]])){recordings[_0x461d8c[_0x3fec('0xa')]]=_[_0x3fec('0x13')](recordings[_0x461d8c[_0x3fec('0xa')]],{'type':_0x461d8c[_0x3fec('0x17')]});writeDB(recordings[_0x461d8c[_0x3fec('0xa')]]);}else if(!_[_0x3fec('0xc')](recordings[_0x461d8c[_0x3fec('0x18')]])){recordings[_0x461d8c[_0x3fec('0xa')]]=recordings[_0x461d8c['destinationchannel']];delete recordings[_0x461d8c[_0x3fec('0x18')]];recordings[_0x461d8c[_0x3fec('0xa')]]=_[_0x3fec('0x13')](recordings[_0x461d8c[_0x3fec('0xa')]],{'type':_0x461d8c[_0x3fec('0x17')],'channel':_0x461d8c[_0x3fec('0xa')],'exten':_0x461d8c['destination'],'context':_0x461d8c[_0x3fec('0x19')],'uniqueid':_0x461d8c[_0x3fec('0x1a')],'calleridnum':recordings[_0x461d8c[_0x3fec('0xa')]][_0x3fec('0x15')],'calleridname':recordings[_0x461d8c[_0x3fec('0xa')]][_0x3fec('0x1b')],'connectedlinenum':recordings[_0x461d8c['channel']][_0x3fec('0x1c')],'connectedlinename':recordings[_0x461d8c[_0x3fec('0xa')]]['calleridname']});writeDB(recordings[_0x461d8c['channel']]);}};
\ No newline at end of file
index 22027a8..ff6e55c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbe6=['transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetexten','util','./utils','format','TRANSFER|%s','type','request','CreateVoiceTransferReport','assign','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','attended','isNil','transfereechannel'];(function(_0x29c8c4,_0x2cdf25){var _0xf11b18=function(_0x2e7fea){while(--_0x2e7fea){_0x29c8c4['push'](_0x29c8c4['shift']());}};_0xf11b18(++_0x2cdf25);}(_0xbbe6,0x71));var _0x6bbe=function(_0x1cda12,_0x334409){_0x1cda12=_0x1cda12-0x0;var _0x19c2f5=_0xbbe6[_0x1cda12];return _0x19c2f5;};'use strict';var _=require('lodash');var util=require(_0x6bbe('0x0'));var utils=require(_0x6bbe('0x1'));function writeDB(_0x5515cd){utils['info'](util[_0x6bbe('0x2')](_0x6bbe('0x3'),_0x5515cd[_0x6bbe('0x4')]));utils[_0x6bbe('0x5')](_0x6bbe('0x6'),_0x5515cd);}exports['blindtransfer']=function(_0x11677d){_0x11677d[_0x6bbe('0x4')]='blind';writeDB(_0x11677d);};exports['attendedtransfer']=function(_0x2862a0){_0x2862a0=_[_0x6bbe('0x7')](_0x2862a0,{'transfererchannel':_0x2862a0[_0x6bbe('0x8')],'transferercalleridnum':_0x2862a0[_0x6bbe('0x9')],'transferercalleridname':_0x2862a0[_0x6bbe('0xa')],'transfererconnectedlinenum':_0x2862a0[_0x6bbe('0xb')],'transfererconnectedlinename':_0x2862a0[_0x6bbe('0xc')],'transfereraccountcode':_0x2862a0[_0x6bbe('0xd')],'transferercontext':_0x2862a0[_0x6bbe('0xe')],'transfererexten':_0x2862a0[_0x6bbe('0xf')],'transfererlinkedid':_0x2862a0[_0x6bbe('0x10')],'context':_0x2862a0[_0x6bbe('0x11')],'extension':_0x2862a0[_0x6bbe('0x12')],'type':_0x6bbe('0x13')});if(_[_0x6bbe('0x14')](_0x2862a0[_0x6bbe('0x15')])){_0x2862a0=_['assign'](_0x2862a0,{'transfereechannel':_0x2862a0[_0x6bbe('0x16')],'transfereecalleridnum':_0x2862a0[_0x6bbe('0x17')],'transfereecalleridname':_0x2862a0['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x2862a0[_0x6bbe('0x18')],'transfereeconnectedlinename':_0x2862a0['transfertargetconnectedlinename'],'transfereeaccountcode':_0x2862a0[_0x6bbe('0x19')],'transfereecontext':_0x2862a0['transfertargetcontext'],'transfereeexten':_0x2862a0[_0x6bbe('0x1a')],'transfereelinkedid':_0x2862a0['transfertargetlinkedid']});}writeDB(_0x2862a0);};
\ No newline at end of file
+var _0xbee1=['transfertargetlinkedid','util','./utils','format','TRANSFER|%s','type','request','CreateVoiceTransferReport','blindtransfer','blind','attendedtransfer','assign','origtransferercalleridnum','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransferercontext','origtransfererexten','attended','isNil','transfereechannel','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten'];(function(_0x7835a,_0x7ef740){var _0xd46e11=function(_0xe43fad){while(--_0xe43fad){_0x7835a['push'](_0x7835a['shift']());}};_0xd46e11(++_0x7ef740);}(_0xbee1,0x140));var _0x1bee=function(_0x43e414,_0xf54873){_0x43e414=_0x43e414-0x0;var _0x124363=_0xbee1[_0x43e414];return _0x124363;};'use strict';var _=require('lodash');var util=require(_0x1bee('0x0'));var utils=require(_0x1bee('0x1'));function writeDB(_0x233eaa){utils['info'](util[_0x1bee('0x2')](_0x1bee('0x3'),_0x233eaa[_0x1bee('0x4')]));utils[_0x1bee('0x5')](_0x1bee('0x6'),_0x233eaa);}exports[_0x1bee('0x7')]=function(_0x5adcca){_0x5adcca[_0x1bee('0x4')]=_0x1bee('0x8');writeDB(_0x5adcca);};exports[_0x1bee('0x9')]=function(_0x38eacd){_0x38eacd=_[_0x1bee('0xa')](_0x38eacd,{'transfererchannel':_0x38eacd['origtransfererchannel'],'transferercalleridnum':_0x38eacd[_0x1bee('0xb')],'transferercalleridname':_0x38eacd['origtransferercalleridname'],'transfererconnectedlinenum':_0x38eacd[_0x1bee('0xc')],'transfererconnectedlinename':_0x38eacd['secondtransfererconnectedlinename'],'transfereraccountcode':_0x38eacd[_0x1bee('0xd')],'transferercontext':_0x38eacd[_0x1bee('0xe')],'transfererexten':_0x38eacd[_0x1bee('0xf')],'transfererlinkedid':_0x38eacd['origtransfererlinkedid'],'context':_0x38eacd[_0x1bee('0x10')],'extension':_0x38eacd[_0x1bee('0x11')],'type':_0x1bee('0x12')});if(_[_0x1bee('0x13')](_0x38eacd[_0x1bee('0x14')])){_0x38eacd=_[_0x1bee('0xa')](_0x38eacd,{'transfereechannel':_0x38eacd[_0x1bee('0x15')],'transfereecalleridnum':_0x38eacd[_0x1bee('0x16')],'transfereecalleridname':_0x38eacd[_0x1bee('0x17')],'transfereeconnectedlinenum':_0x38eacd[_0x1bee('0x18')],'transfereeconnectedlinename':_0x38eacd[_0x1bee('0x19')],'transfereeaccountcode':_0x38eacd['transfertargetaccountcode'],'transfereecontext':_0x38eacd[_0x1bee('0x1a')],'transfereeexten':_0x38eacd[_0x1bee('0x1b')],'transfereelinkedid':_0x38eacd[_0x1bee('0x1c')]});}writeDB(_0x38eacd);};
\ No newline at end of file
index e89f967..3857c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x072f=['format','diff','sumTime','now','isAfter','isBefore','jayson/promise','moment','client','../../config/logger','xdr','info','debug','stringify','error','request','then','catch','GetUser','interface','GETUSER|','result','FOUND','NOTFOUND','length','stack','getUserByInterface','getUserByName','getVoiceQueueByName','GetVoiceQueue','name','acw','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','subtract'];(function(_0x44e8b7,_0x1907bf){var _0x2a4130=function(_0x123505){while(--_0x123505){_0x44e8b7['push'](_0x44e8b7['shift']());}};_0x2a4130(++_0x1907bf);}(_0x072f,0x9a));var _0xf072=function(_0x15c9a1,_0x41292e){_0x15c9a1=_0x15c9a1-0x0;var _0x344eaa=_0x072f[_0x15c9a1];return _0x344eaa;};'use strict';var jayson=require(_0xf072('0x0'));var moment=require(_0xf072('0x1'));var BPromise=require('bluebird');var client=jayson[_0xf072('0x2')]['http']({'port':0x2329});var logger=require(_0xf072('0x3'))(_0xf072('0x4'));exports['info']=function(_0x4ac76f){logger[_0xf072('0x5')](_0x4ac76f);};exports['debug']=function(_0x2eee63){logger[_0xf072('0x6')](JSON[_0xf072('0x7')](_0x2eee63));};exports['error']=function(_0x2e388d){logger[_0xf072('0x8')](_0x2e388d['stack']);};exports[_0xf072('0x9')]=function(_0x2b20b3,_0x225a07){return client[_0xf072('0x9')](_0x2b20b3,{'body':_0x225a07})[_0xf072('0xa')](function(_0xb0c8b8){logger[_0xf072('0x6')](JSON[_0xf072('0x7')](_0xb0c8b8));})[_0xf072('0xb')](function(_0x383b7c){logger[_0xf072('0x8')](_0x383b7c['stack']);});};function getUser(_0x2f14d3){return client[_0xf072('0x9')](_0xf072('0xc'),{'options':{'raw':!![],'attributes':['id','internal','name',_0xf072('0xd')],'where':_0x2f14d3,'limit':0x1}})[_0xf072('0xa')](function(_0xabf79b){logger['info'](_0xf072('0xe')+JSON[_0xf072('0x7')](_0x2f14d3)+'|'+(_0xabf79b[_0xf072('0xf')]['length']?_0xf072('0x10'):_0xf072('0x11')));return _0xabf79b[_0xf072('0xf')][_0xf072('0x12')]?_0xabf79b[_0xf072('0xf')][0x0]:null;});}exports['getUserByInternal']=function(_0x19fbde){return new BPromise(function(_0x19a5c6,_0x3471a0){if(_0x19fbde){return getUser({'internal':_0x19fbde})[_0xf072('0xa')](function(_0x2fd58f){return _0x19a5c6(_0x2fd58f);})[_0xf072('0xb')](function(_0x191d9b){logger[_0xf072('0x8')](_0x191d9b[_0xf072('0x13')]);return _0x19a5c6(null);});}else{return _0x19a5c6(null);}});};exports[_0xf072('0x14')]=function(_0x26aae0){return new BPromise(function(_0x504b6e,_0x46becf){if(_0x26aae0){return getUser({'interface':_0x26aae0})['then'](function(_0x4fceda){return _0x504b6e(_0x4fceda);})['catch'](function(_0x4b0139){logger['error'](_0x4b0139[_0xf072('0x13')]);return _0x504b6e(null);});}else{return _0x504b6e(null);}});};exports[_0xf072('0x15')]=function(_0x13884b){return new BPromise(function(_0x152bb8,_0x564279){if(_0x13884b){return getUser({'name':_0x13884b})[_0xf072('0xa')](function(_0x104eb9){return _0x152bb8(_0x104eb9);})[_0xf072('0xb')](function(_0x14a2fb){logger['error'](_0x14a2fb[_0xf072('0x13')]);return _0x152bb8(null);});}else{return _0x152bb8(null);}});};exports[_0xf072('0x16')]=function(_0x4301a8){return new BPromise(function(_0x3b9014,_0x58ba0d){if(_0x4301a8){return client[_0xf072('0x9')](_0xf072('0x17'),{'options':{'raw':!![],'attributes':['id',_0xf072('0x18'),'type',_0xf072('0x19'),'acwTimeout'],'where':{'name':_0x4301a8},'limit':0x1}})[_0xf072('0xa')](function(_0x11eadb){logger['info']('GETVOICEQUEUEBYNAME|'+_0x4301a8+'|'+(_0x11eadb['result'][_0xf072('0x12')]?_0xf072('0x10'):_0xf072('0x11')));return _0x3b9014(_0x11eadb[_0xf072('0xf')][_0xf072('0x12')]?_0x11eadb[_0xf072('0xf')][0x0]:null);})[_0xf072('0xb')](function(_0x419f7d){logger[_0xf072('0x8')](_0x419f7d[_0xf072('0x13')]);return _0x3b9014(null);});}else{return _0x3b9014(null);}});};exports[_0xf072('0x1a')]=function(_0x538951,_0x36a646){return moment(_0x538951)[_0xf072('0x1b')](_0x36a646,_0xf072('0x1c'))['format'](_0xf072('0x1d'));};exports['subtractTime']=function(_0x530bd1,_0x148d28){return moment(_0x530bd1)[_0xf072('0x1e')](_0x148d28,_0xf072('0x1c'))[_0xf072('0x1f')](_0xf072('0x1d'));};exports['diffTime']=function(_0xf9a605,_0x2a8f54){return moment(_0xf9a605)[_0xf072('0x20')](moment(_0x2a8f54),_0xf072('0x1c'));};exports[_0xf072('0x21')]=function(_0x7cc4c6,_0x4b2900){return parseInt(_0x7cc4c6,0xa)+parseInt(_0x4b2900,0xa);};exports[_0xf072('0x22')]=function(){return moment()[_0xf072('0x1f')](_0xf072('0x1d'));};exports['isAfter']=function(_0x96f3f,_0x5468e9){if(_0x5468e9){return moment(_0x96f3f)[_0xf072('0x23')](_0x5468e9);}else{return!![];}};exports[_0xf072('0x24')]=function(_0x38540c,_0x15118e){if(_0x15118e){return moment(_0x38540c)[_0xf072('0x24')](_0x15118e);}else if(_0x38540c){return!![];}else{return![];}};
\ No newline at end of file
+var _0x39f7=['../../config/logger','xdr','info','debug','error','stack','request','then','stringify','GetUser','internal','name','interface','GETUSER|','result','FOUND','NOTFOUND','length','getUserByInternal','catch','getUserByInterface','getVoiceQueueByName','GetVoiceQueue','type','acw','GETVOICEQUEUEBYNAME|','add','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','format','diffTime','seconds','sumTime','now','isAfter','jayson/promise','bluebird','client','http'];(function(_0x3c4d58,_0x44875a){var _0x5b4b38=function(_0x9cc34c){while(--_0x9cc34c){_0x3c4d58['push'](_0x3c4d58['shift']());}};_0x5b4b38(++_0x44875a);}(_0x39f7,0xc4));var _0x739f=function(_0xdeefbd,_0x9e1b3d){_0xdeefbd=_0xdeefbd-0x0;var _0x4ff63f=_0x39f7[_0xdeefbd];return _0x4ff63f;};'use strict';var jayson=require(_0x739f('0x0'));var moment=require('moment');var BPromise=require(_0x739f('0x1'));var client=jayson[_0x739f('0x2')][_0x739f('0x3')]({'port':0x2329});var logger=require(_0x739f('0x4'))(_0x739f('0x5'));exports[_0x739f('0x6')]=function(_0x5f17f2){logger[_0x739f('0x6')](_0x5f17f2);};exports[_0x739f('0x7')]=function(_0x438132){logger[_0x739f('0x7')](JSON['stringify'](_0x438132));};exports[_0x739f('0x8')]=function(_0x25673c){logger[_0x739f('0x8')](_0x25673c[_0x739f('0x9')]);};exports[_0x739f('0xa')]=function(_0x577fae,_0x4df2db){return client[_0x739f('0xa')](_0x577fae,{'body':_0x4df2db})[_0x739f('0xb')](function(_0x4b8232){logger[_0x739f('0x7')](JSON[_0x739f('0xc')](_0x4b8232));})['catch'](function(_0x5a3a65){logger['error'](_0x5a3a65[_0x739f('0x9')]);});};function getUser(_0x1b243d){return client[_0x739f('0xa')](_0x739f('0xd'),{'options':{'raw':!![],'attributes':['id',_0x739f('0xe'),_0x739f('0xf'),_0x739f('0x10')],'where':_0x1b243d,'limit':0x1}})['then'](function(_0x4706d1){logger[_0x739f('0x6')](_0x739f('0x11')+JSON[_0x739f('0xc')](_0x1b243d)+'|'+(_0x4706d1[_0x739f('0x12')]['length']?_0x739f('0x13'):_0x739f('0x14')));return _0x4706d1[_0x739f('0x12')][_0x739f('0x15')]?_0x4706d1[_0x739f('0x12')][0x0]:null;});}exports[_0x739f('0x16')]=function(_0x48dd6d){return new BPromise(function(_0x4e579e,_0x64716a){if(_0x48dd6d){return getUser({'internal':_0x48dd6d})[_0x739f('0xb')](function(_0x2de71e){return _0x4e579e(_0x2de71e);})[_0x739f('0x17')](function(_0x3130ba){logger[_0x739f('0x8')](_0x3130ba['stack']);return _0x4e579e(null);});}else{return _0x4e579e(null);}});};exports[_0x739f('0x18')]=function(_0x18c1db){return new BPromise(function(_0x258f8e,_0x107d84){if(_0x18c1db){return getUser({'interface':_0x18c1db})['then'](function(_0x7c8141){return _0x258f8e(_0x7c8141);})[_0x739f('0x17')](function(_0x4edc6e){logger['error'](_0x4edc6e['stack']);return _0x258f8e(null);});}else{return _0x258f8e(null);}});};exports['getUserByName']=function(_0x3d22b9){return new BPromise(function(_0x237b01,_0x4fafa4){if(_0x3d22b9){return getUser({'name':_0x3d22b9})[_0x739f('0xb')](function(_0x55da16){return _0x237b01(_0x55da16);})[_0x739f('0x17')](function(_0x3a2384){logger['error'](_0x3a2384['stack']);return _0x237b01(null);});}else{return _0x237b01(null);}});};exports[_0x739f('0x19')]=function(_0x3529ee){return new BPromise(function(_0x1a158c,_0x46173f){if(_0x3529ee){return client[_0x739f('0xa')](_0x739f('0x1a'),{'options':{'raw':!![],'attributes':['id','name',_0x739f('0x1b'),_0x739f('0x1c'),'acwTimeout'],'where':{'name':_0x3529ee},'limit':0x1}})[_0x739f('0xb')](function(_0x4db524){logger[_0x739f('0x6')](_0x739f('0x1d')+_0x3529ee+'|'+(_0x4db524['result'][_0x739f('0x15')]?'FOUND':_0x739f('0x14')));return _0x1a158c(_0x4db524[_0x739f('0x12')]['length']?_0x4db524[_0x739f('0x12')][0x0]:null);})[_0x739f('0x17')](function(_0x5ef931){logger[_0x739f('0x8')](_0x5ef931[_0x739f('0x9')]);return _0x1a158c(null);});}else{return _0x1a158c(null);}});};exports['addTime']=function(_0x482bd0,_0x1ab980){return moment(_0x482bd0)[_0x739f('0x1e')](_0x1ab980,'seconds')['format'](_0x739f('0x1f'));};exports[_0x739f('0x20')]=function(_0x3ac576,_0x597a2b){return moment(_0x3ac576)[_0x739f('0x21')](_0x597a2b,'seconds')[_0x739f('0x22')](_0x739f('0x1f'));};exports[_0x739f('0x23')]=function(_0x348f05,_0x2eb717){return moment(_0x348f05)['diff'](moment(_0x2eb717),_0x739f('0x24'));};exports[_0x739f('0x25')]=function(_0x126d38,_0x4fc3ec){return parseInt(_0x126d38,0xa)+parseInt(_0x4fc3ec,0xa);};exports[_0x739f('0x26')]=function(){return moment()[_0x739f('0x22')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x739f('0x27')]=function(_0xa004d,_0x5a75c7){if(_0x5a75c7){return moment(_0xa004d)['isAfter'](_0x5a75c7);}else{return!![];}};exports['isBefore']=function(_0x24afde,_0x367c5d){if(_0x367c5d){return moment(_0x24afde)['isBefore'](_0x367c5d);}else if(_0x24afde){return!![];}else{return![];}};
\ No newline at end of file